Une introspection de Street-View

Google s’imposant très souvent comme un standard dans les milieux où il intervient, il m’est paru intéressant de voir plus en détail comment l’application de visites virtuelles de Google, Street-View, se comporte sur certaines choses.

Il est facile de voir que le player est en flash (un clic droit dans l’image montre le sempiternel « À propos d’Adobe Flash Player 10″)

La première question qui me semble importante : sous quelle version de flash Street View tourne-t-il ?

En effet, la version 10 apporte des nouvelles fonctions de 3D qui sont très utiles pour réaliser des visites virtuelles. C’est avec ces nouvelles fonctions que CuTy a été développé. Ainsi, CuTy ne tourne pas sur Flash v9, contrairement à krPano au Flash Panorama Player utilisant des fonctions plus bas niveaux (nécessitant plus de lignes de code). Pour vérifier cela, c’est très simple : il suffit de désinstaller Flash v10 et d’installer la version 9.

ça fonctionne sur Flash 9 ! Cela veut donc dire que Google utilise un algo n’utilisant pas les fonctionnalités implémentées dans Flash 10.

Autre test intéressant : le player est-il compatible avec la version 8 de Flash ? réponse : non. Rien ne s’affiche lorsqu’on ouvre une fenêtre. Le code est donc probablement écrit en AS3, sans compatibilité avec l’AS2.

La deuxième question qui me turlupine est le choix de la projection. Le développeur de krPano dit qu’il est préférable d’utiliser une projection cubique à une projection sphérique car cela marche mieux avec flash. En cubique, il n’y a plus d’effets d’ondulations comme on peut le voir sur les cotés avec la version sphérique lorsqu’il y a des lignes droites dans l’image (dans l’hypothèse où la projection est linéaire ; dès qu’on passe en fisheye ou stéréographique, cela n’est plus vrai).

Il me paraissait donc évident que j’allais retrouver la même projection cubique sur Street View ! Mais il n’en est rien : la projection est toujours sphérique. Pour s’en convaincre, il suffit d’aller chercher les images dans le cache. Vous pouvez voir une image en cliquant ici.

Un aperçu de la vue correspondante dans le player ici :


Agrandir le plan

Je suis donc assez curieux de savoir pourquoi Google utilise la projection sphérique plus que cubique. J’imagine qu’il y a une raison mais elle m’échappe encore !

Autre point intéressant en allant regarder dans le cache du navigateur : les images sont carrées et font toujours 512px de coté.

Il semble y avoir aussi trois niveaux de tuiles. L’image de prévisualisation fait 256 par 512 px. Comme les images sont carrées, le reste est comblé par des pixels noirs. La définition des tuiles des niveaux supérieurs ne semble pas constante. J’imagine que les appareils équipant les Google Car ont évolué depuis le début, et dans certains quartiers, le niveau de zoom est plus ou moins important. Mais une résolution typique semble être 3072 px par 1536 pour le niveau 2 (en considérant le niveau comme l’image de prévisualisation), le double, soit 6144 px par 3072 pour les tuiles de niveau 3, et 12800 par 6400 pour les tuiles de niveau 4. Toujours un multiple de 128.

Pour la bande passante, le player fonctionne sur un mode économe : les tuiles ne sont chargées que lorsqu’elles doivent être affichées. Le fonctionnement de krPano est bien différent sur ce point, car par défaut, il va charger toutes les tuiles jusqu’à un certain niveau de définition (6000 px en projection sphérique de mémoire). Il est cependant possible de faire la même chose avec krPano en changeant quelques paramètres.

Un autre effet intéressant est l’effet de flou en naviguant entre les images. Le flou est dans la direction de l’endroit où l’on se déplace. En allant tout droit, le centre du flou radial est au centre de l’image. C’est l’équivalent dans Photoshop du Flou radial avec l’option zoom sélectionné. On peut avoir le même rendu à la prise de vue avec une pose longue en tournant le zoom pendant l’obturation.

Lorsque la vue est de coté le centre du flou radial est sur le coté, au niveau du point de fuite, comme le montre la (superbe ;-) ) croix que je viens de dessiner :

krPano actuellement ne gère pas ce flou, sauf lorsque le point de fuite est au centre de l’image avec la propriété zoomblend de la fonction loadpano, consistant grossièrement en une capture d’écran de la vue courante avec un effet de grossissement et de fondu avec le pano à charger.

Pour finir mes remarques : il n’y a pas d’inertie lorsqu’on se déplace dans l’image, que ce soit avec la souris ou le clavier. De la même façon pour le zoom, il y a juste 3 ou 4 niveaux de zoom, on ne peut pas être entre deux. Et lorsque l’on dézoome complètement, on revient sur Google Map.

Si vous voyez d’autres points intéressants, n’hésitez pas à les partager ici !

2 commentaires

  1. GlobalVision : site

    Excellent analyse! En effet le système de chargement de StreetView cherche à minimiser la bande passante requise… ce qui semble logique lorsqu’on s’attends à plusieurs millions de chargements chaque jour!

    Je pense qu’un point omis concerne le « floutage » de la voiture. Pour dire le moins, ceci est vraiment horriblement réalisé, et je pense que c’est là l’une des grosses faiblesses de ces images! Dans les rues étroites les voitures du côté se retrouvent partiellement reprises sur le dessous. Je pense qu’un version limitée en nadir ou avec un logo aurait eu un bien meilleur rendu!

    Aussi, toujours à propos du nadir, j’ai remarqué en surfant sur les images de seconde génération, que certaines images sont restées avec le « noir originel »… étrange! Comme si l’algorithme avait omis de traiter certaines images…

    25 avril 2010 à 8:56
  2. gerard jc : site

    bonjour,
    je pense que google street view utilise des panoramas sphériques pour une gestion simplifiée sur les serveurs et aussi éviter la lourdeur du fichier xml en cubique, cela permet de mettre plusieurs panoramas dans un même répertoire , alors qu en cubique les 6 images seraient plus lourdes a gérer dans les bases de données et dans les répertoires du serveur, sachant qu on est loin des panoramas gigapixels.
    ce n’est que mon avis et mon expérience de développement pour automatiser la mise en place de visites virtuelles sur des sites web, c est d’ailleurs pour ça que j ai abandonné l’idée de me servir de salado player basé maintenant que sur des panoramas cubiques , dommage car panosalado2 gérait le sphérique, et comme dit plus haut avec un fisheye ou un stéréoscopique comme le samyang 8mm, la différence entre le sphérique et le cubique est négligeable.
    jean christophe

    26 avril 2013 à 3:04