16bit workflow with hugin

From PanoTools.org Wiki
(Difference between revisions)
Jump to: navigation, search
m (note 16bit vs. floating point)
(vignetting is handled in hugin)
 
(24 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
This tutorial doesn't cover reasons why you might want to shoot with [[RAW]] and
 
This tutorial doesn't cover reasons why you might want to shoot with [[RAW]] and
stitch in [[HDR]] format.  It is a simple HOWTO listing the tools available and how
+
stitch in 16bit format.  It is a simple HOWTO listing the tools available and how
 
to use them with hugin.
 
to use them with hugin.
  
== Preparing the HDR images ==
+
== Preparing the 16bit images ==
  
 
Start by using [[dcraw]] to read the [[RAW]] files and batch convert them into portable 16bit per
 
Start by using [[dcraw]] to read the [[RAW]] files and batch convert them into portable 16bit per
channel [[PPM]] files.  [[RAW]] pictures from my Nikon 8700 have a ''.nef'' extension, so the
+
channel [[PPM]] files.  RAW pictures from my Nikon 8700 have a ''.nef'' extension, so the
 
command looks something like this:
 
command looks something like this:
  
   dcraw -v -4 dscn*.nef
+
   dcraw -v -w -4 dscn*.nef
 +
 
 +
Note that although [[hugin]], [[nona]] and [[enblend]] support [[HDR]] floating-point data, there is no real loss
 +
converting [[RAW]] data to 16bit colour depth as RAW images are typically only 12bit in the
 +
first place.  If you need a greater [[dynamic range]] than found in RAW images, it is possible
 +
to combine [[Bracketing|bracketed]] exposures in a [[HDR workflow with hugin]].
  
 
These [[PPM]] files are not readable by [[hugin]] or [[nona]], so the next step is to use
 
These [[PPM]] files are not readable by [[hugin]] or [[nona]], so the next step is to use
 
[[ImageMagick]] to create 16bit per channel [[TIFF]] files:
 
[[ImageMagick]] to create 16bit per channel [[TIFF]] files:
  
   convert -rotate 270 dscn3088.ppm dscn3088.tif
+
   convert -rotate 270 -gamma 2.2 dscn3088.ppm dscn3088.tif
   convert -rotate 270 dscn3089.ppm dscn3089.tif
+
   convert -rotate 270 -gamma 2.2 dscn3089.ppm dscn3089.tif
 
   ...
 
   ...
  
Note that I rotated them at the same time since these are [[portrait]] shots. Also, note that
+
Note that I rotated them at the same time since these are [[portrait]] shots.
although [[hugin]], [[nona]] and [[enblend]] support floating-point data, there is no real loss
+
[[Gamma]] correction is also applied at this stage since [[RAW]] data is generally linear
converting [[RAW]] data to 16bit colour depth as [[RAW]] images are typically only 12bit in the
+
and difficult to view without [[colour profile]] management (not yet supported by [[hugin]]).
first place.
+
 
 +
You can now delete the intermediate [[PPM]] files.
 +
 
 +
Alternatively [[UFRaw]] can be used for the entire conversion from [[RAW]].
 +
 
 +
If necessary, correct [[chromatic aberration]] with [[fulla]] at this stage.
  
 
== Stitching with hugin ==
 
== Stitching with hugin ==
  
The [[TIFF]] images can be loaded into [[hugin]] as per usual with a couple of caveats:
+
The [[TIFF]] images can be loaded into [[hugin]] as per usual except:
  
* Everything will appear very dark since our images represent linear sensor data.
+
[[EXIF]] information about the [[Field of View]] was lost during the [[PPM]] stage, so the field of view will need to be re-entered manually, re-optimised with [[PTOptimizer]] or transferred from the RAW file using [[exiftool]]:
  
* Information about the [[field of view]] was lost during the [[PPM]] stage, so this will need to be re-entered manually or re-optimised with [[PTOptimizer]].
+
  exiftool -tagsfromfile DSCN3088.nef -overwrite_original_in_place -exif:all DSCN3088.tif
  
 
Stitch the images as per usual into a [[TIFF]] file, you can use [[enblend]] as the
 
Stitch the images as per usual into a [[TIFF]] file, you can use [[enblend]] as the
 
final step.
 
final step.
  
== Post processing ==
+
If you are working with linear ([[gamma]] = 1) data, then you should apply a gamma of 2.2 on the
 +
remapped images after stitching with nona but before running [[enblend]]:
  
This [[TIFF]] file is in 16bit per channel RGBA format.  Again this will appear
+
  mogrify -gamma 2.2 myproject_*.tif
very dark in most image viewers (if they manage to open it), so you need an extra
+
step to create the final 8bit per channel human-readable images.
+
  
=== Gamma adjustment ===
+
== Post processing ==
 
+
Sometimes all that is needed is to adjust the [[gamma]] and save, this [[ImageMagick]] command
+
will output a usable [[JPEG]] image:
+
 
+
  convert -gamma 2.2 -depth 8 stitch.tif stitch.jpg
+
 
+
=== Adjusting by eye ===
+
 
+
Open the [[TIFF]] file in a [[HDR]] aware image editor such as [[cinepaint]], tweak the
+
levels by eye, retouch and save in an 8bit per channel format such as [[JPEG]].  For more details
+
read a thorough [http://www.behrmann.name/cms/cinepaint/bildbearbeitung/cinepaint_ccorrection.html cinepaint tutorial on manipulating 16bit photos].
+
 
+
Alternatively, use [[pfstools]] to manipulate the image.
+
 
+
[[pfstools]] has the facility to read [[HDR]] [[TIFF]] files, unfortunately it chokes on
+
the [[alpha channel]] created by [[nona]] and [[enblend]], so you have to strip this out
+
first.  You can do this by converting to [[PPM]] format using [[ImageMagick]]:
+
 
+
  convert stitch.tif stitch.ppm
+
 
+
This can be viewed with the [[pfsview]] GUI tool:
+
  
  pfsinppm stitch.ppm | pfsview
+
This [[TIFF]] file is in 16bit per channel RGBA format, which is not viewable in most image
 +
viewers or web-browsers, so there is an extra step needed to create portable images:
  
A quick way to create a usable 8bit per channel image is to select a [[gamma]] of
+
Open the file in a 16bit aware image editor such as [[cinepaint]] or [[krita]], tweak the
2.2, fit to [[dynamic range]], zoom 1:1 and save as [[PNG]].
+
colours, retouch or apply a [http://www.luminous-landscape.com/tutorials/contrast_masking.shtml contrast mask]
 +
and finally save in an 8bit per channel format such as [[JPEG]].
  
=== Tone mapping ===
+
Alternatively you can get very good results by simply applying the ICC [[colour profile]]
 +
for your camera and converting to sRGB colour-space, [[lcms]] provides the tifficc tool
 +
for doing just this:
  
A related package to [[pfstools]] called [[pfstmo]] can do automatic [[tone mapping]]
+
  tifficc -i mycamera.icm myproject.tif output.tif
of a [[HDR]] image and compress it into a low [[dynamic range]] output. There are many
+
options and techniques available, commands look like this:
+
  
  pfsinppm stitch.ppm | pfstmo_drago03 | pfsgamma -g 2.2 | pfsout stitch.png
+
[[Category:Tutorial:Specialised]]
 +
[[Category:Software:Hugin]]

Latest revision as of 22:51, 19 June 2007

This tutorial doesn't cover reasons why you might want to shoot with RAW and stitch in 16bit format. It is a simple HOWTO listing the tools available and how to use them with hugin.

[edit] Preparing the 16bit images

Start by using dcraw to read the RAW files and batch convert them into portable 16bit per channel PPM files. RAW pictures from my Nikon 8700 have a .nef extension, so the command looks something like this:

 dcraw -v -w -4 dscn*.nef

Note that although hugin, nona and enblend support HDR floating-point data, there is no real loss converting RAW data to 16bit colour depth as RAW images are typically only 12bit in the first place. If you need a greater dynamic range than found in RAW images, it is possible to combine bracketed exposures in a HDR workflow with hugin.

These PPM files are not readable by hugin or nona, so the next step is to use ImageMagick to create 16bit per channel TIFF files:

 convert -rotate 270 -gamma 2.2 dscn3088.ppm dscn3088.tif
 convert -rotate 270 -gamma 2.2 dscn3089.ppm dscn3089.tif
 ...

Note that I rotated them at the same time since these are portrait shots. Gamma correction is also applied at this stage since RAW data is generally linear and difficult to view without colour profile management (not yet supported by hugin).

You can now delete the intermediate PPM files.

Alternatively UFRaw can be used for the entire conversion from RAW.

If necessary, correct chromatic aberration with fulla at this stage.

[edit] Stitching with hugin

The TIFF images can be loaded into hugin as per usual except:

EXIF information about the Field of View was lost during the PPM stage, so the field of view will need to be re-entered manually, re-optimised with PTOptimizer or transferred from the RAW file using exiftool:

 exiftool -tagsfromfile DSCN3088.nef -overwrite_original_in_place -exif:all DSCN3088.tif

Stitch the images as per usual into a TIFF file, you can use enblend as the final step.

If you are working with linear (gamma = 1) data, then you should apply a gamma of 2.2 on the remapped images after stitching with nona but before running enblend:

 mogrify -gamma 2.2 myproject_*.tif

[edit] Post processing

This TIFF file is in 16bit per channel RGBA format, which is not viewable in most image viewers or web-browsers, so there is an extra step needed to create portable images:

Open the file in a 16bit aware image editor such as cinepaint or krita, tweak the colours, retouch or apply a contrast mask and finally save in an 8bit per channel format such as JPEG.

Alternatively you can get very good results by simply applying the ICC colour profile for your camera and converting to sRGB colour-space, lcms provides the tifficc tool for doing just this:

 tifficc -i mycamera.icm myproject.tif output.tif
Personal tools
Namespaces

Variants
Actions
Navigation
tools
Tools