Exposure Fusion Example + Files

Bishop Forbes Memorial, St Paul’s Episcopal Cathedral, Dundee 9th April 2022

Panorama at 360Cities.net

I recently was able to take a panorama of St Paul’s Cathedral, Dundee. I am releasing an example Hugin PTO file as well as JPG image files to stitch. This example demonstrates a few techniques that may be of benefit to other panographers.

The example files are made available under the Creative Commons licence without guarantee. They are not full size, and the final version on 360Cities has had some post-processing applied so will be slightly different to the version as produced by the example files.

Example files St Paul’s Cathedral, Dundee (ZIP archive)
Creative Commons Licence
St Pauls Cathedral, Dundee by Daniel K. L. Oi is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Some familiarity with the Hugin program is recommended. The Hugin manual and tutorials can be found at Sourceforge. The examples files included in the ZIP archive include the PTO project files and JPG source images (for reasons of file size) that can be stitched to obtain an exposure fused example panorama.

Shoot Details

The shot patten with a Samyang 12mm/2.8 fisheye lens on the Sony A7m3 is 4 shots taken at 90 deg horizontally, zenith, and nadir. The azimuthal shots were angled slightly down (~10 deg) so to reduce the size of the nadir patch. The tripod legs were also brought in to narrow the stance to help reduce the obstructed area. A nadir adapter on the Nodal Ninja 3 Mk III was used to allow the camera to be positioned directly over the shooting position without the tripod in the way for the nadir shot. An additional shot was also taken from a slightly different position in order to cover the shadow of the tripod and camera.

Note: Usually when taking panoramas, the lens should be rotated around the no-parallax point (NPP) that is located at the lens entrance pupil (EP). The NPP is often erroneously referred to as the “nodal point”. The nodal points of a lens are different to the NPP (see Wikipedia article “Panoramic photographers often incorrectly refer to the entrance pupil as a nodal point, which is a different concept”).

Exposure Bracketing

 

The camera was set to ISO100, image stabilisation off, and a remote shutter release used.  Due to the bright stained glass windows, I bracketed exposure -2,0,+2EV. However, I did not need the +2EV shots so only imported the -2EV and 0EV shots. I have placed the shots into stacks.  The last 2 shots are the ones to patch the camera and tripod shadow.

Autoexposure and raw processing

Capture One 22 Express (For Sony)

Received wisdom is that panoramas have to be taken using fixed manual exposure settings, else the panorama won’t blend properly. This may have been the case 10 years ago but modern software can easily cope with photometric optimisation and compensation of varying exposures throughout a panorama. Exposing each segment of the panosphere optimally will give better image quality overall, in fact. It can save time and effort using autoexposure in cases where the intra-scene contrast is smaller than the inter-scene contrast (in different directions/shots). This can be combined with bracketing if single-shot contrast is excessive.

When processing the raw files, it is recommended that the same white balance be applied to all shots, though there are some circumstances and specialised techniques where different white balances can be used. But normally, the same white balance for all shots will usually result in better blended output.

Shooting raw also has the benefit of extracting the most exposure latitude from each shot. For these shots, I have used the maximum amount of highlight recovery and this has allowed the detail in the windows to be retained in the -2EV shots. Correction of chromatic aberration, purple fringing, and lens fall-off has also been applied at the raw development stage.

Control Point Placement

The placement of control points is at the seams between overlapping images. There is no need to have control points outside of these, the blending process just needs that the features match along the seam lines.

Nadir Shot

Taking a separate nadir shot to add to the panorama takes only a few extra moments, but can lead to more professional looking and immersive results. A nadir adapter simplifies matters but even without, it is straightforward to cant the camera directly over the spot where the tripod was located for the other shots and take an image of the ground. It is best to try to match the height of the camera to the other shots but in many cases, slight differences in height won’t be a problem for flat ground. If there is the possibility of parallax, then it is crucial to try to maintain entrance pupil position.

The nadir is connected to the azimuthal shots by 2 control points each. Using a narrowed tripod leg spread, the area of the nadir that needs to be patched can be minimised.

The nadir shot is masked out to eliminate the legs and define a small region to be inserted into the rest of the pano. Here, tripod leg shadows had to be excluded. Due to the position of the spot lights, it was difficult to place the tripod in a way that avoided them entirely.

In Hugin, the nadir shot is given its own lens so that the geometry can be optimised separately.  , hence reducing the amount of geometric distortion that may be induced in the nadir shot to match the placement of the rest of the panorama.

Tripod Shadow Patch Shot

There was a particularly strong shadow  of the tripod and camera that would need to be edited out in post-processing. Masks were used to exclude the shadows from the panorama.

 

 

A separate shot was taken with the camera and tripod moved about half a metre so that a clear shot of the ground without shadow could be taken. This shot is inserted to cover the shadowed area. Only a small section of the image is required, hence can be mapped quite effectively despite the large displacement of the entrance pupil. For longer shadows, a patching image may need to be imported multiple times and parts of it mapped into the panorama separately.

Final Output

Hugin can produce an exposure fused panorama which combined highlight and shadow detail in a natural looking way. The nadir and shadow patches will reduce the amount of postprocessing required. There are a few residual faint shadows due to other lights in the scene but these are very easily dealt with in Photoshop or other image processing programmes.

There are alternate methods of handling high contrast scenes, such as High Dynamic Range imaging and Tone-Mapping. Exposure fusion (e.g. using enfuse) is often simpler. Here, the inbuilt exposure fusion method was used, but more control over the final result can be achieved by exporting each exposure plane separately and using the command line options in enfuse.

Recent Panoramas

I’ve just gotten back to taking and making panoramas after a break of several months. Some good weather lately inspired me to go out and try to capture the light.

Rock outcrop, sunset, ocean, castle
Rock outcrop, Castle Sands, St Andrews, Fife, Scotland 30th June 2021. The tidal range here is 4.32m, thus at low tide many rocky outcrops are exposed as the tide goes out. Full panorama can be viewed at 360Cities.
Ocean, castle, pool, waves, sky, clouds, sunset
Tidal pool, Castle Sands, St Andrews, Fife, Scotland 30th June 2021. “The surge in popularity of seaside resorts in the mid-19th century, and the fashionable practice of sea bathing, made St Andrews an attractive tourism destination. The Ladies Pool, today known as the ‘Castle Pool’, was situated on the east side of the Castle ruins with shelters and huts for dressing. The pool was largely abandoned in the 1930s when the larger outdoor Step Rock Pool started to allow both male and female swimmers.” From St Andrews Preservation Trust. Full panorama can be viewed at 360Cities.

The conditions were perfect for landscape photography with high altitude clouds providing texture to the sky, a moderately clear horizon for the setting sun for lovely colours, and not too windy. The waves add texture to the water but do pose a slight challenge to making sure that seams are not too obvious. A small amount of retouching during post-processing was needed to smooth over the most obvious joins.

The main challenge is dealing with the large range of contrast within the whole scene. The dark rocks and seaweed have to be balanced against the sunset and bright sky. Much of this is able to be handled by the dynamic range of the camera, a Sony A7m3 shooting raw, but some additional steps needed to be taken to comfortably cover the extremes in exposure. In addition to the usual shooting pattern of 4 around (spaced at 90 degrees) + Zenith + Nadir, additional shots were made directly at the brightest parts of the sky using autoexposure (as I use for all the shots). This additional shot will have detail in the brightest parts that can be combined with the rest of pano that has detail in the dark and mid tones. Enfuse is used to combine the various exposures into a single image without having to go through the steps of creating an HDR intermediate image and then tonemapping.

I have also delved into the back catalogue of panoramas that were taken but but assembled, in this case ones taken in 2019 and 2020.

Christmas Market, Big Wheel, Glasgow
Glasgow Christmas Market, 19th December 2019
Pollok House West Pavilion
Pollok House West Pavilion 27th September 2020. Full pano can be viewed at 360Cities.
Kelpies, sculpture
Kelpies, Grangemouth, 4th October 2020. Full panorama can be viewed at 360Cities.

These panoramas varied in difficulty. The Christmas Market pano had many extra shots added and masked in to deal with moving objects such as people and the Big Wheel. Exposure blending was also used to tame the contrast. The Pollok House pano did not have to worry to much about moving objects between frames but did have a very large contrast range. This require bracketing and exposure blending to arrive at a  decent image. The Kelpies pano was as staightforward as you could get, a simple 4+Z+N shooting pano, no need for bracketing as the dynamic range of the camera was sufficient, and not even exposure blending was required.

I’ll continue to dive into the back catalogue to see of there are any more unassembled panos waiting for their turn. Hopefully there are some undiscovered gems.

First rule of Pano Club…

Lens entrance pupil
The image of the aperture stop of a lens when looking from the object side is the entrance pupil. Light rays that can pass through the lens to form an image must pass through the entrance pupil, hence this defines the point of perspective. To avoid parallax when rotating the camera, it must be rotated around the entrance pupil

From Wikipedia:

“The geometric location of the entrance pupil is the vertex of the camera’s angle of view[1] and consequently its center of perspectiveperspective pointview pointprojection centre[2] or no-parallax point.[3] This point is important in panoramic photography, because the camera must be rotated around it in order to avoid parallax errors in the final, stitched panorama.[4][5] Panoramic photographers often incorrectly refer to the entrance pupil as a nodal point, which is a different concept.”

Repeat after me, “It’s not the nodal point, it’s not the nodal point, it’s not the nodal point!”

Simple Hugin Example with “Wrong Technique”

Sunset over St Andrews Harbour, Scotland. Equirectangular projection 360 deg x 180 deg. Sony A7m3 + Samyang 12mm/2.8 Fisheye, Nodal Ninja 3 Mk III, Capture One, Hugin, and Picture Windows Pro. This is the final stitch without adjustments. Further post-processing steps may include exposures curves, sharpening, saturation adjustment, and eliminating dust spots in the sky.

Source Images & Hugin project file (17MB zip)

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Here is an example of a simple 360 deg panorama in Hugin that shows that good results can be obtained using “wrong” techniques. Specifically, you can use autoexposure, even for highly contrasty scenes that normally would required bracketed exposures and HDR+Tonemapping.

For post-processing, you can crank up the highlight and shadow recovery and individually tweak each frame for exposure. It is not necessary to shoot with manual exposure with each frame with the same exposure settings, nor process them identically.

Additionally, you do not need very much overlap between frames in many cases, only a few control points can do, and they only need to be placed along the seam lines.  A few manually well placed control points can quickly give a good stitch.

This example also shows some other things that you may need to watch out for. You should clean your lens and sensor. I’ve not been able to do much photography lately so my equipment has not been maintained as well as they should have been. My lens also needs to be adjusted as the plane of focus is slightly skewed and it does not reach infinity focus. This is slightly masked by the depth of field at f/8 but can still be detected in the full sized source imagery.

I have provided downsized source images and a Hugin project file if you want to have a look at how it was assembled. I only spent a few minutes putting it together so I’m sure it could be further optimised. The final full sized and processed panorama can be seen at 360Cities. I adjusted the exposure curve, sharpened the image, tweaked saturation, and repaired the dust spots in the sky.

First Shot. I set up my tripod with a Nodal Ninja 3 Mk III. The rotation axes of the panohead is aligned with the no-parallax-point of the lens (it’s not called the “Nodal Point”!). I tilt down to minimise the Nadir hole, bringing in the tripod legs slightly also helps reduce the size of the Nadir patch. I oriented the first shot to capture some bystanders, making sure that they were towards the centre of the frame (don’t want to have anyone cut in half). I also made sure to centre the brightest spot in the sky as I will be patching it with a lower exposure shot. The camera was set to its lowest native sensitivity (ISO100 in this case) and I used autoexposure. The lens is manual focus and manual aperture so the camera controls the shutter speed automatically. I set the lens to be at f/8 and the focus was placed at an approximate “hyperfocal” distance. I used a remote shutter release to minimise vibration. I recorded full uncompressed raw files for later processing.
Second Shot. I rotates the camera by 90 deg using the click-stop rotator on the panohead. For simple scenes, where there are no moving objects, the amount of overlap between frames can be minimal. Here, there is only 10 to 15 deg overlap between the horizontally rotated shots. In more complex scenes, where the could be moving people, cars etc., it may be necessary to take shots in many more different directions in order to produce a stitch with not objects cut in half.
Third Shot. I had also set up the shot so that the main object in the scene (this rowboat) was captured in one frame. This minimises the possibility of any stitching errors occurring on this object. Though the panohead has been aligned to the no-parallax-point, slight shifts due to uneven ground, movement of the tripod as it is rotated, etc., could introduce parallax errors especially with close-up objects. Centering such potential problem areas reduces the possibility of parallax errors happening.
Fourth Shot. We see a small amount of overexposured sky on the right. Hopefully this area will be covered by the extra shot that is exposed for the sky highlights. A belt-and-braces approach would be to take extra shots on either side of the brightest sky areas. This was done but I have omitted this from the example as it is not strictly necessary to illustrate the points.
Extra Shot. This shot was taken by pointing the camera directly at the brightest part of the sky and allowing the autoexposure to control the shutter speed and capture the highlights. Alternatively, the other shots could have been bracketed, e.g. +/-3EV and a conventional HDR+Tonemapping process applied. Here, we show that a much faster and simpler process can produce acceptable results without the extra shots and processing. The wide latitude of modern cameras reduces the need for bracketing and raw processors are very good at extracting highlight and shadow detail.
Zenith Shot. This is taken pointed straight up. In order to position it in the final panorama, I have included a few features in the corners than can be used to locate it via control points. As there are no important features in the sky, it is not important to precisely align it with the other images, hence it could be manually positioned in a pinch.
Nadir Shot. I have a Nadir Adapter on the Nodal Ninja 3 Mk III panohead that allows the taking of the straight down shot very easily. It also provides extra vertical rail height to allow the A7m3+12mm/2.8 combo to rotate to Zenith easily.
Masking Source Images. The tripod and corners are masked off first. The corners often suffer darkening due to vignetting, masking them off can improve photometric optimisation and matching. The overexposed sunset sky is also masked off and will be replaced by a separate shot that is exposed for the sky. This was taken by just pointing the camera straight at the brightest point in the scene and allowing the autoexposure to set the shutter speed to capture the highlights. The Zenith and Nadir images are also given a circular crop.
Adding Control Points. Only a few control points (CPs) are required to get a good stitch if the rotation axis is well aligned with the entrance pupil aka no-parallax-point (NPP). Some of the images pairs have 4 CPs, some only 2, and a few have more. It is only necessary to place the CPs long the likely seam lines of the final stitch. Placing CPs away from the seams means that alignment is compromised in the regions where alignment errors are actually visible. A few well chosen CPs will give better results than heaps of widely spread CPs that may have mismatched features. NB: The NPP is often erroneously called the “Nodal Point” but the entrance pupil does not in fact correspond to any of the (several) nodal points of a lens (look them up on Wikipedia). It’s like calling the steering wheel a “tyre”, they are both round and are parts of a car, but they are not the same thing.
Preview Window. This is how the aligned images are placed, green crosses show the location of the control points. The small exposure differences will be eliminated during the stitching and blending process. The panorama is exported at a reduced exposure so that the highlights are not blown out. Exposure range compression can be used to bring back shadow detail. Curves adjustment in post-processing can then equalise the exposure to obtain a pleasing image.

Autoexposure Hugin Example Files

Ripon Cathedral Library. The contrast within the scene was quite large, varying from 0.63s exposure at ISO100 F8 looking down into the dark interior of the Cathedral, to 1/40th when pointed at the sunlit windows of the Library. But since these appeared on two different frames, I could simply expose separately. The traditional approach would have used a 1/5th base exposure together with a +/-3EV bracket to capture the darkest and brightest parts of the scene.

Traditionally, panoramas would be taken using a fixed manual exposure, bracketed if needed. But panoramic software has advanced to the point that they can handle the assembly and blending of source images taken with wildly different exposures. I am making available a set of files taken in Ripon Cathedral that shows the ease at which high contrast scenes can be tackled without having to take large amounts of bracketed photos.

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

In this example, the base exposure throughout the scene varied by 6 stops (1/40th to 0.63s) hence there was a large amount of inter-frame contrast. But the contrast in any one frame (intra-frame) was just within the capabilities of my camera, hence I was able to take a 5+1+1 shooting pattern, without bracketing, and capture the scene without excessively blown highlights. This is variation of the usual 4+1+1 shooting pattern but with an extra shot that was taken aimed at the bright highlights of the sunlit windows.

Hugin Fast Preview Window. The position of the control points are marked by green crosses. The frames have been exposure matched and photometrically optimised for better blending. Normally, I use a 4 shots taken at -10 deg pitch and at 90 degree yaw intervals, together with zenith and nadir shots (4+1+1 shoot pattern). Here, there is an extra shot taken in between the 3rd and 4th shot at approximately 225 deg yaw that has captured the highlights of the sunlilt windows.

This extra shot was masked into the rest of the pano and invoked for an “underexposed” export of the stitch in addition to the normally exposed export. Hugin has no problems in handling the differently exposed frames and after photometric optimisation, the frames blend seamlessly. The normal and underexposed versions were combined using Enfuse and minor edits performed.

Top: Assembled panorama before photometric optimisation. Bottom: Optimised and exposure blended result (before final adjustments).

Hopefully this example demonstrates that panoramic software tools have come a long way since the traditional advice of locking off exposure was formulated. With some practice, the use of autoexposure when taking panoramas can be quite effective in speeding up workflow and creating a more efficient workflow. Of course, judgement is still required to use where necessary bracketing in order to tame intra-frame (as opposed to inter-frame) contrast.

Example Files for Hugin

I am making available image files and the Hugin PTO file for the purposes of education and training. I presuppose some familiarity with Hugin. Tutorials on the basic functionality can be found here.

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Panorama Preview

Suggested steps:

  • Download Example Files (from above) and extract to folder
  • Open Hugin and import source files
  • Set the lens parameters (Focal Length 8.7mm, Crop 1.5), Full Frame Fisheye for images taken around at 90 degree yaw intervals, Circular Fisheye for the Zenith and Nadir images. Assign lenses so that the the first 4 images are Lens 0, Zenith is Lens 1, Nadir is Lens 2.
  • Mask each image. For the first 4 images, mask off the tripod/panohead and any other extraneous objects, also the corners. Set crop circles for the Zenith and Nadir.
  • Now add control points to each overlapping pair of images. Concentrate on placing a good spread of points along the centre of the overlapping regions. There is no need for placing points away from the likely seam lines.
  • Add vertical control points/lines so that the pano will be level
  • Start optimising the position, gradually including field of view, barrel, then everything except translation. Periodically check for control points with large errors, correct if necessary. Use the Custom Optimisation options to fine tune the process.
  • Check that the geometry of the assembly is satisfactory using the Preview Window.
  • Start on optimising exposure. Choose Low Dynamic Range, then Custom. Deselect optimisation of Vignetting and Camera Response. Optimise just the exposure values, the the Red and Blue Multipliers.
  • Finally, stitch and export the panorama in your preferred format.
Final Stitched Panorama – Projection: Equirectangular (2) FOV: 360 x 180 Ev: -0.42

You try stitching the image using the automatic mode in Hugin, or in any other panoramic programme of your choice.

A Note on the No-Parallax Point (Not Nodal Point)

Often, people will say that you need to rotate your camera around “the nodal point” of your lens to eliminate parallax when taking panoramas. Unfortunately, this is not correct for several reasons.

Firstly, there is not a single nodal point for a lens, in fact there are 2 (front and rear). Secondly, neither of these 2 nodal points is the point around which you need to rotate the lens to avoid parallax [1]. One should rotate the lens around the entrance pupil (the apparent position of the aperture stop) to avoid parallax. This position is also called the No-Parallax Point (NPP for short).

There are complications of course. The entrance pupil position can change depending on the angle at which the light rays enters the lens. This is especially noticeable in fisheye lenses where the entrance pupil can move significantly at extreme angles off-axis.

Peleng 8mm Fisheye Entrance Pupil Shift. (Left) The entrance pupil (the bright spot in the middle) when looking near the optical axis appears to be about a cm of two back from the front bezel of the lens. (Right) At nearly 90 degrees from the optical axis, the entrance pupil is at the same plane as the front bezel.

This shift in entrance pupil can occur in “normal” lenses as well but usually to a smaller degree. A more detailed examination of where the entrance pupil is located and can be shifted can be found here (pay attention to p.10 in particular). So the next time some says “nodal point”, gently guide them to use the term “entrance pupil” or “no-parallax point” instead.

Notes

[1] From Wikipedia: “The nodal points are widely misunderstood in photography, where it is commonly asserted that the light rays “intersect” at “the nodal point”, that the iris diaphragm of the lens is located there, and that this is the correct pivot point for panoramic photography, so as to avoid parallax error. These claims generally arise from confusion about the optics of camera lenses, as well as confusion between the nodal points and the other cardinal points of the system. (A better choice of the point about which to pivot a camera for panoramic photography can be shown to be the centre of the system’s entrance pupil.”

London Calling

I had the opportunity to visit London and managed to find some time to shoot some panoramas. The weather wasn’t ideal with scattered showers and cloudy skies but the rain managed to hold off for the time I had available. In the lead up to Christmas, festivities were in full swing so Christmas lights, trees, and markets would provide colourful subjects.

Piccadilly Circus

Piccadilly Circus at Dusk. This is a popular area for panoramas. The residual wet sheen gives some interesting reflections. It was very busy so I had to take many shots to try to get frames that would stitch together without too many mismatched seams. The high contrast in the scene means that bracketing is required to capture the highlights.

Irving Street

Irving St, off Leicester Square, Luckily the foot traffic wasn’t too heavy so I could set up my tripod without being in the way. The dynamic range of the A7m3 is sufficient to be able to cope with the contrast in this scene without bracketing.

Trafalgar Square

Trafalgar Square. It was a challenge to find a spot where there were no strong shadows to complicate the stitch. I chose a spot directly under one of the lamps. Some bracketing could have been useful to deal with the extreme contrast between the lit stalls and the rest of the night scene. Focus bracketing could also have been used to make the lamp post sharper.
Centre of Trafalgar Square. I’ve tried to balance the Christmas tree and Nelson’s Column. Luckily the plaque in the centre was at just the right position.

London Eye

London Eye. This is a retaken pano of a previous one taken many years ago. This was a straightforward shoot, 4+1+1 and no bracketing. The latitude of the A7m3 was impressive.

Waterloo Place

Waterloo Place off Pall Mall. Another straightforward pano shoot. Main issue was shadows cast by spotlights on the corner buildings. These were removed in Photoshop.

Covent Garden

St Paul’s Church, Covent Garden. St Paul’s is also known as the “Actor’s Church”. Some flare spots due to the bright lights were removed in Photoshop prior to stitching.

Shooting Details

I use a Sony A7m3 “fullframe mirrorless” camera. Previously I used a Sony A5100 with an APS-C sized sensor. They both have 24 megapixels but the A7m3 has considerably better dynamic range and high ISO performance.

I use the Samyang 12mm/2.8 Fisheye lens. This is a “fullframe fisheye” lens, “fullframe” refers to the fact that the image circles covers the entire sensor. Previously I used the Samyang 8mm/2.8 Fisheye lens that is a “fullframe fisheye” on the A5100 APS-C camera. The 12mm/2.8 has better flare resistance that is noticeable on night scenes.

I use the Nodal Ninja 3 Mk III panohead with Rotator Mini and Nadir Adapter. I upgraded from the Nodal Ninja 3 Mk I/II hybrid that had served me well shooting the Konica-Minolta 7D, Sony A700, A580, A77, NEX-7, and A5100 with a Peleng 8mm, Sigma 10mm, Samyang 8mm/3.5, and Samyang 8mm/2.8 over the years. The new panohead fits my upgraded rig a bit better and the Nadir Adapter is a time saver. I use a Benro C-169M8 Travel Tripod with a Manfrotto 496 ballhead.

Processing Details

The raw files were imported in Capture One 20 Express (for Sony). I selected the frames that would be assembled. There were many spare frames since I would shoot extra shots to capture moving objects (people, cars etc,), high contrast scenes (usually base exposure and -2EV), and to fill in shadows.

Capture One 20 Express for Sony

The selected frames were then adjusted in a batch. First thing is to apply the same white balance setting. Shots taken at night under a variety of mixed lighting can be challenging to get the white balance “right”. Usually, I try to balance the colour temperatures throughout the scene, taking care with the green-magenta shifts that can occur with fluorescent and LED lights. Other common settings include chromatic aberration correction, black level point, sharpness fall-off, and clarity.

Each frame is then adjusted for exposure, It is critical to preserve the highlights, this is done by a combination of highlight recovery and overall exposure. Some shadow recovery can be used to prevent the darker areas being crushed to black but there is no need to fully recover shadows at this stage.

I usually leave the saturation and contrast untouched. These can be adjusted after stitching. Occasionally, I may need to reduce the contrast of the nadir shot so that it blends in with the edges of the other shots.

The adjusted raw files are now exported as 16-bit TIFFs in Adobe RGB colour profile. These are then imported into Hugin for assembly and stitching. There are other good programs for creating panoramas including PTGUI but Hugin has the advantage of being free. Hugin is also quite powerful, allowing detailed control of the alignment and exposure optimisation process. For a more automated solution, PTGUI is probably a better choice.

Masking the source images to remove the tripod and panohead as well as deal with moving objects in the frame.

After the images have been imported into Hugin, the first step is to mask the images to remove the panoramic head and tripod that may intrude into the edges of the frame. The Zenith and Nadir are also cropped to circular regions. It is useful to define the focal length and projection type of the lens, 13.1mm and full-frame fisheye are used for the Samyang 12mm/2.8 Fisheye. I assign the same lens to the horizontal frames and separates ones to each of the Zenith and Nadir. The Nadir in particular will need to be optimised differently to the other frames in order to compensate for the likely shift in position.

Adding control points (CPs) between pairs of overlapping images. It is only necessary to place CPS along the middle of the region of overlap.

Next step is to add control points (CPs) between overlapping frames. There are automatic methods but I prefer to manually add points. I find that I spend more time fixing automatically generated CPs than if I had added them manually. I start off by connecting the horizontal frames. To get a good stitch, all that is needed is that the frames match along a seam line, generally placed along the middle of the overlap region. Hence, I only add CPs along a line that stretches from the top to the bottom of the overlap. For the Nadir, I add 2 to 3 CPs per overlap with the horizontal frames. Extreme distortion parameters will usually need to be used to get it to match up with the rest of the pano.

After the CPs have been added, then the position optimisation process than begin. I start with optimising just the position. Next I optimise position, angle of view, and barrel. Finally, I optimise all parameters except translation. Throughout, I check for any CPs that have large errors as this might indicate that they may be incorrectly placed. I either correct the placement or delete them if there are sufficiently many other CPs.

Images are optimised for position and lens geometry. Brightness differences remain but will be dealt with in the next stage.

Hopefully, after several rounds of optimisation and tweaking of the CPs, the errors will be small (maximum of a few pixels in a 14Kx7K pano) and visually the pano looks aligned with no obvious errors in the preview window. Additional masks may be added to remove moving objects or else control what elements from each frame end contribute to the final pano.

Brightness across frames has been optimised to reduce differences. The zenith does not quite match the other frames since the sky had become much darker over the course of shooting. It still blends in quite well.

The next stage is photometric optimisation. For many years now, panoramic software have been able to cope with source photos shot at difference exposure values and stitch them together in a seamless manner. This allows a more flexible and arguably optimum manner to capture the initial source photos [1]. I will use autoexposure to create a base layer together with bracketing of selected frames to capture blown highlights. In the exposure optimisation stage, Hugin can exposure match all the frames in a near seamless way. I can then export the full pano at various brightnesses which have shadow, mid, and highlight detail separately. These are then combined using Enfuse to produce a single pano that incorporates the detail in both shadows and highlights in a process called exposure fusion.

(Top-Bottom) Over, mid, under-exposed panorama, final exposure fused image.

The exported pano (exposure fused if necessary) from Hugin in equirectangular formal is then post-processed. I use Picture Windows Pro 7 as my main image editor [2], with Photoshop 6 for cases where I need to do spot removal or extensive cloning. First step is to adjust the contrast using curves. I’ll first bring up the shadows as these will be a bit dark as I try to protect the highlights in the previous steps. Then I’ll apply an S-curve to boost mid-range contrast and compress the highlights. The preserved highlights can look unnaturally dark so I’ll bring them up near the top of the histogram without blowing them out.

Curves Adjustment

Sharpening of the image is very important. I’ll perform a large radius unsharp mask, coarse sharpen, and a fine sharpen. The sharpening process utilises pixels in a region hence problems can occur at the +/-180 degree boundary of the equirectangular image. To avoid a visible seam arising from such non-global adjustments, I’ll create a pano 720 degrees (or 1080 degrees) wide before apply the filters. Then I’ll crop out a central 360 degree section to get back to a regular equirectangular projection.

Duplicating the image across the +/-180 degree boundary prevents any seams from being visible due to adjustments such as large radius sharpening (local contrast enhancement).

Final colour adjustment is applied, both selective and global saturation. Any touch up (spots, shadows, or minor stitching errors) are then performed in Photoshop. I produce both a final TIFF and a JPG that is in sRGB for export to the web.

Final image cropped back to 360×180 equirectangular. This is a different version from the panorama at the beginning of the post, I have brightened this one more.

Footnotes

[1] Instead of using the same exposure value for all source frames, you can expose each shot optimally. For example, a scene may have 20 stops of contrast between one direction and the opposite, e.g. sun and shadow. The traditional method would be to use manual exposure and bracket, e.g. -6, -3, 0, +3, +6EV and use the camera DR to capture the ends of the contrast range. The +6EV shot would cover the shadow and the +6EV shot would cover the highlight. But this method is wasteful since usually the contrast in a single shot is less than the full bracket range. Often only a single shot in that direction is required, or else a second bracketed shot will cover the remaining fraction of high contrast cases. Instead of 30 shots (4+1+1 shoot pattern times 5 bracketed shots), it is usually possible to only use 7 or 8 shots in total. The final result is as good as the fully bracketed version but with a considerable reduction in shooting time, this can be significant in low light conditions but can also be a major factor in situations where there are moving objects and/or changing lighting conditions.

[2] Picture Windows Pro 7 is now free. A newer version has been developed by version 7 is still a very useful image editing program. The paradigm is different to that of Photoshop so at first glance it may look to be fairly crude. But it is small, quick, and easy to use for many routine image adjustment tasks.

[3] I have no commercial relationship with any companies or their products mentioned in this post, other than being a satisfied customer of some of them.

Landscape and Panoramic Specialist in Glasgow