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.

Panos from Toulouse

I’ve just come back from an impromptu holiday in Toulouse and was able to take panoramas of a few of the historic and beautiful churches there. In particular, I was able to spend some time in Notre-Dame du Taur (panorama) and Notre-Dame de la Daurade. I did manage a pano in the Cathedral St Etienne in the Chapel of St Joseph as shown above. The full panorama can been seen at 360Cities.

A particular challenge taking panoramas in churches is capturing the beauty of the stained glass windows. In general, it is difficult to get a photo that shows the richness of their colours yet still allowing the interior of the church to be seen since the contrast range is tremendous. It is especially hard when they are part of a full panorama. This can be overcome with a lots of patience and work in post-processing, I have developed an exposure blending technique that avoids the heavily processed “HDR look” yet preserves the intensity of light stream through the stained glass windows. The example here shows the South Chapel of Notre-Dame du Taur. This is especially important in dark churches where the windows would otherwise be white if the photo was exposed for the rest of the church.

Editor’s Pick 360Cities

YorkMinsterScreen_lp2 I was pleased to see that my recent pano of York Minster was selected as an Editor’s Pick on 360Cities. The picture on the left is a stereographic projection of the equirectangular panorama taken underneath the Quire Screen.

I had the pleasure of visiting York for several days and was able to take a few panoramas of the Minster. Tourist entry is £10 (or £15 which includes a visit to the Tower), it costs a lot of money to maintain such a large and historic building so this entry charge is not so unreasonable. Rather progressively, there are no prohibitions on photography or tripods (as long it’s not for commercial use and your tripod won’t damage the floor). For a panographer, this was a great opportunity and well worth the visit.

The main challenge, as is common to churches, is the huge contrast between the darkest shadows and the brightly lit windows. Doing HDR capture is the surefooted, though laborious  default procedure. Often HDR and tonemapping gives impressionistic results, derogatively called the “HDR-look”. It isn’t the fault of HDR capture per se but rather the tonemapping settings that are usually to blame for garish results.

Alternatively with some judicious bracketing of just the relevant areas, one can produce decent results by exposure blending the shadow and highlights. This is what I have done here, using a moderate amount of exposure compensation on the brightly lit East and West ends of the Minster to retain some detail that would otherwise have been washed out.

Addendum

Two more panos from York were selected as Editor’s Picks at 360Cities. The first one was taken in the Chapter House of the Minster. The second was taken outside next to the Minster and the Roman Column.

Back Catalogue

I have been going through some old unstitched panoramas. I thought it would be a good opportunity to test other panorama presentation methods and came across Round.me. Here is a panorama taken in King’s College Chapel nearly 5 years ago. The quality isn’t as good as my current set-up but still produces a workable image.

It’s been good to revisit old panoramas, not only has the equipment changed but also my technique, continually improving my methods and workflow to obtain better results, or the ability to shoot in more challenging conditions.

Landscape and Panoramic Specialist in Glasgow