views:

977

answers:

6

How do Google Maps do their panoramas in Street View?

Yeah, I know its Flash, but how do they skew bitmaps with Correct Texture Mapping?

Are they doing it on the pixel-level like most Flash 3D engines?, or just applying some tricky transformation to the Bitmaps in the Movieclips?

+2  A: 

Flash Panorama Player can help achieve a similar result!

It uses 6 equirectangular images (cube faces) stitched together seamlessly with some 'magic' ActionScript.

Also see these parts of flashpanos.com for plugins, and tutorials with (possibly) documentation.

A quick guide to shooting panoramas so you can view them with FPP (Flash Panorama Player).

Cubic projection cube faces are actually 90x90 degrees rectilinear images like the ones you get from a normal camera lens. ~ What is VR Photography?

Jenko
"Any sufficiently advanced technology is indistinguishable from magic." ~ Arthur C. Clarke
Jenko
Click the "open" button on the page to try it out for yourself. As you pan (left/right) or tilt (up/down), the stitching is perfect.
Jenko
+1  A: 

Check out http://www.panoguide.com/. They have howtos, links to software etc.

Basically there are 2 components in the process: the stitching software which creates a single panoramic photo from many separate image sources, then there is the panoramic viewer, which distorts the image as you change your POV to simulate what your eyes would see if you were actually there.

Bork Blatt
+1  A: 

My company uses the Papervision3D flash render engine, and maps a panoramic image (still image or video) onto a 3D sphere. We found that using a spherical object with about 25 divisions along both the axes gives a much better visual result than mapping the same image on the six faces of a cube. Check it for yourself at http://www.panocast.com.

Actually, you could of course distort your image in advance, so that when it is mapped on the faces of a cube, its perspective is just right, but this requires the complete rerendering of your imagery.

With some additional "magic", we can also load still images incrementally, as needed, depending on where the user is looking and at what zoom level (not unlike Google Street View does).

David Hanak
A: 

In terms of what Google actually does, Bork had this right. I'm not sure of the exact details (and not sure I could release the details even if I did), but Google stores individual 360 degree streetview scenes in an equirectangular representation for serving. The flash player then uses a series of affine transformations to display the image in perspective. The affine transformations are approximate, but good enough to aggregate to a decent image overall.

The calculation of the served images is very involved, since there are many stages of image processing that have to be done, to remove faces, account for bloom, etc. etc. In terms of actually stitching the panoramas, there are many algorithms for this (wikipedia article). Just one interesting thing I'd like to point out though, as food for thought, in the 360 degree panoramas on street view, you can see the road at the bottom of the image, where there was no camera on the cars. Now that's stitching.

Daniel Nadasi
+1  A: 

An expensive camera. makes A 360 degree video

It is pretty impressive to watch a video that allows panning in every direction... which is what street view is without the bandwidth to support the full video.

jle
A: 

For those wondering how the Google VR Photographers and editers add the ground to their Equirectangular panoramas, check out the feature called Viewpoint Correction, as seen in software like PTGui:

ptgui.com/excamples/vptutorial.html

(Note that this is NOT the software used by Google)

If you take a closer look at the ground in street view, you see that the stitching seems streched, and sometimes it even overlaps with information from the viewpoint next to the current one. (With that I mean that you can see something in one place, and suddenly that same feature is shown as the ground in the next place, revealing the technique used for the ground stitching).

Jørgen H