An approach to flattening 360 panoramasWritten by Paul BourkeMay 2025
Panorama images that typically extend 360 degrees in longitude capture a scene in ways that a single perspective view cannot. When viewed on a 2D screen there are effects that we don't witness with our human visual system and are not present in perspective views. Namely, straight lines in the scene exhibit curvature. In the case of an equirectangular panorama this curvature occurs for both horizontal and vertical structures. For a cylindrical panorama verticals are straight (same as a perspective projection) but horizontals are curved. This curvature is obvious in the cylindrical panorama below. ![]()
One might ask how can a panorama be presented so as to avoid this curvature? Obviously one can extract a perspective projection, but as that extends past about 120 degrees of horizontal field of view, other undesirable effects start to occur. Other projections have been proposed for representing extremely wide fields of view such as the Pannini projection but that is still limited to 180 degrees. The solution chosen was to (simply) extract the 4 horizontal cube faces (front, right, back, and left) and append them together. The retains the entire horizontal field of view and 0-360 wrapping across the left and right edge. On the face of it this may sound like an unlikely solution. It turns out that the fold transitions between the faces are in general not overly distracting. The result looks very much like a full 360 perspective. The transformation of the above image is shown below. ![]()
If a fold passes through a part of the scene so as to give a more noticeable defect, the panorama can be rotated to place the folds in other places. ![]()
Another examples are presented below. Note the curvature in the walls has been removed, the kinks are readily accepted as part of the actual built structure. Before![]()
After ![]()
Before ![]()
After ![]()
A variation that removes one of the folds is to create only three sections by using 120 degree perspective views rather than four 90 degree perspective views. ![]()
![]()
|