Traveling panorama photographer
Processing panoramas to stripes

Of stripes and JPEG compression

April 4th, 2007

detail of the seam

The (rotated) stripe on the right is one of the popular formats used to represent a full spherical panorama (360°x180°). It is the most efficient format for modern panorama viewers such as SPi-V and Like every full spherical panorama it presents a challenge at the seams when JPEG compression is used. The original stripe is 9216x1536 pixels.

To the left is a 16x magnification of an area of the border between the zenith and nadir (indicated by the red box in the stripe) after traditional processing. Interference is clearly visible at the seam as the JPEG algorythm considers adjacent pixels in compressing the image. Hover over the image to see it processed correctly.

Note the pink line on the blue side of the seam. It does not stand out in the flat image, but when the cubefaces are re-assembled by the viewer, it shows up at the seam between the zenith (ceiling) cubeface and one of the side faces as a pink line in the sky.

To see the line, you will have to visualize the VR here. Select Flash in the drop down menu and zoom in on the line indicated by the two arrows, above the flag pole and the skyscraper. SPi-V is affected too but might not display the error because of video card downsampling. Other viewers are not affected because they use a different input image.

You will see it in the 13-old VR, but not in the 13new for which a newer process has been used.

The first solution was to compress each cubeface individually and merge them using lossless JPG manipulation.

This left a problem with mismatching seams as the compression of the edges did not consider what is on the other side of the seam. It was solved by optimizing the compression level at the edges. In real life, noise, artifacts and detail will make this almost unnoticeable. However, an experiment with a generated grid reveal the mismatches. You can see it on that same page. Look at the numbered grid, specifically at the green checkered pattern between the cubefaces 1 and 2. There are four versions of it:

  • grid-old is the old processing, simply resizing and joining the cubefaces with ImageMagick.
  • grid-sf1x1q100 shows that at the highest quality level, the problem disappears.
  • grid-sf1x1q60 shows that with compression, the problem reappears.
  • grid is the result of the optimization process between the two.

With this procedure it is possible to programmatically transform an equirectangular into a stripe while maintaining an acceptable level of quality.

As a bonus it is also possible to produce other projections almost automatically, like the little planet below.


About the Author

Yuval Levy is a passionate panorama photographer. He offers services to other panorama photographers, such as image processing and web integration. If you would like to efficiently transform your panoramas to multiple technologies; integrate them seamlessly in any website or content management system; or for other imaging services, contact 1.418.948.3374 for a quote. Example of work: Marsala Tour for Studio Argento.



rotated stripe


© 1999-2007 Yuval Levy. All rights reserved. Feedback. This page last modified Mon 30-May-2011 22:39:07 GMT. E0.92