* Version 4.1.x  --  Stable Branch

Patchlevel 2

Released on October 7, 2013.

** Bug Fixes

- [Enblend and Enfuse] Fix a bug in the highlight-recovery that caused
  Enfuse to bail out with the uncaught exception
    "Minimizer1D::set_bracket: minimum not bracketed".
  This addresses LaunchPad Bug #1214004.

- [Enfuse] Clean up seemingly random, bright-colored pixels that
  sometimes show up when fusing images with high contrast and "large"
  color profiles.


Patchlevel 1

Released on February 15, 2013.

** Bug Fixes

- [Enblend only] Fix a race condition in the seam-line optimizer that
  can cause wrongly placed seams.

- [Enblend and Enfuse] Use a per-thread storage of all OpenMP
  Vigra-functors.  This avoids data races.

- [Enblend and Enfuse] The Boost implementation of the `Mersenne
  Twister' random number generator caused segmentation faults when
  used in the OpenMP-enabled versions of Enblend and Enfuse.  The new
  implementation is based on the GNU Scientific Library (GSL), which
  plays nicely with concurrent accesses.

- [Enblend only] Correct a mistake that causes overlapping images with
  multiple seams to be blended incorrectly.

- [Enblend only] Require the OpenGL extension
  `GL_ARB_texture_rectangle' for the `--gpu' option to work.  This
  does away with a pesky warning of OpenGL drivers that do support
  this extension and avoids crashes with drivers that don't.

  The GPU performance improvement of Enblend via `--gpu' now is only
  available with drivers that feature `GL_ARB_texture_rectangle'
  (among many other required OpenGL extensions).

  The OpenGL warning about odd texture sizes is unaffected by this
  change.

- [Enblend and Enfuse] Fix a longstanding quirk, which allowed to load
  masks that were unsuitable for processing.


* Version 4.1  "Trouble In Paradise"

Released on December 8, 2012.

** Improvements

- All deprecated options since version 4.0 have been removed.

- A new primary seam-line generator, based on a Graph-Cut algorithm,
  has been implemented during GSoC 2011 by Mikołaj Leszczyński.  The
  old Nearest-Feature Transform remains the default.  The new
  algorithm is activated with "--primary-seam-generator=graph-cut".

- The difference image on which Enblend's seam-line optimization
  relies for color images uses a perceptual model by default (option
  "--image-difference"), yielding a true CIE76 "Delta E" with the
  (default) luminance and chrominance weights of 1.

- Parallelize CIECAM02 color conversion (option "--ciecam").  Speedups
  of up to 40% have been reported on the amd64 architecture.  The
  computationally expensive color-space conversion still slows down
  blending and fusing by some 25%.

- Enblend and Enfuse integrate seamlessly in color-managed workflow.
  Input images with color profiles automatically enable CIECAM
  blending and the output image is assigned the input images' color
  profile.

- Enblend and Enfuse exploit a new feature in LittleCMS Version 2.x
  called "Unbounded CMM".  Thereby, the hue and saturation of extreme
  shadows and highlights can be preserved much longer before pure
  black or white are reached.  See:
  http://www.littlecms.com/CIC18_UnboundedCMM.pdf

- Assign different profiles to profile-free input images with option
  "--fallback-profile" instead of being tied to sRGB.

- A new gray-scale projector called "anti-value" helps when fusing
  with the intent of minimizing the noise in the output image.  When
  employing a lower exposure cutoff this even is the default
  projector.

- Both Enblend and Enfuse stop right after saving all generated masks
  to files, if option "--save-masks" is given, but option "--output"
  is not.  This allows to splice tools that manipulate the masks and
  feed the masks back into Enblend and Enfuse with option
  "--load-masks".  When combining option "--output" and "--save-masks"
  Enblend and Enfuse write all masks and the final output image as
  before.

- Both Enblend and Enfuse can write their output JPEG files with
  arithmetic JPEG compression and TIFF files with JPEG compression, if
  the underlying JPEG and TIFF libraries support these compression
  schemes.


** Bug Fixes

- Enblend and Enfuse consistently warn if they are passed input images
  that alternate between with color profile and without.

- Grant SourceForge feature request ID 2991909 (OSX only).  Previous
  to that, Enblend, when launched from a terminal window with
  GPU-acceleration (option "--gpu"), started a second, non-responsive
  terminal window and when this new Enblend window tried to "steal"
  the focus, it displayed the OSX rotating "beach ball".  With the fix
  that all goes away.  Also the responsiveness of the screen improves,
  which means that the non-functional window also hogged GUI resources.


** New Commandline Options

- Option "--primary-seam-generator" controls the primary seam-line
  generation algorithm.

- Option "--image-difference" selects the difference image calculation
  algorithm and optionally assigns weights to the luminance and the
  chrominance part of the difference image.

- Short option "-c" now has a sibling called "--ciecam".  The long
  option also has a negated form: "--no-ciecam"; the short one has
  not.

- The option "--fallback-profile=PROFILE" allows users to pass their
  own profiles for image sets that come without ICC color profiles.
  Before the hard-coded profile was sRGB.

- The option "--exposure-cutoff" facilitates tailoring the exposure
  weight curve specifically to exclude underexposed (and probably
  noisy) or overexposed pixels from fusion.

- In Enblend option "--load-masks" disables all mask computations and
  loads the blend masks directly from the specified files.  This is
  the dual of Enblend's long-known option "--save-masks".

- The option "--layer-selector" overrides the standard default
  layer selector.

- In addition to the usual integral values option "--levels" takes the
  keyword "auto", which restores the default.  (The default is to
  automatically choose the maximum number of pyramid levels for each
  separate overlapping region.)


** Deprecated Features

- The option "--smooth-difference" will be eliminated in the next
  version of Enblend; it has not helped and moreover only put lipstick
  on the seamline-optimizer's objective function.

- The user-(re)sizable image-cache will not be available in later
  versions of Enblend and Enfuse.  We are not sure yet whether it will
  be replaced by an mmap-based solution or just tossed out.


** Developer Stuff

- XHTML validation does not rely on network access anymore.  This
  means all necessary DTDs must be available locally and all catalogs
  must be set up correctly to build the XHTML documentation.

- The option "--parameter" allows developers to pass arbitrary
  key-value pairs to Enblend and Enfuse.  The keys must match the
  regular expression [A-Za-z][A-Za-z0-9_-]*; the values can be almost
  any string.  No further checking or validation is performed.

  For more explanations on how to use parameters in the source code,
  see the block-comment within "namespace parameter" in file
  "common.h".


** Package Maintainer Stuff

- Enblend and Enfuse now use LittleCMS version 2.x.

- Enblend and Enfuse no longer rely on their own versions of the Vigra
  imaging library.  Vigra version 1.8 or later is now required to
  build.

- Enblend no longer relies on libXMI.  (Enfuse never needed this
  library.)


* Version 4.0

Released on December 13, 2009.

** Improvements

- Huge new documentation in Info, PS, PDF, and XHTML formats.  Plain
  HTML format is not supported because it cannot portably render
  MathML.

- New manual pages.

- Automatic bit depth conversion between input and output images if
  necessary.

  For example: given 16-bit TIFF input images and a JPEG output image
  Enblend and Enfuse automatically convert from 16-bit to 8-bit before
  writing the JPEG file.

- Compilation without image cache works again
  ("--disable-image-cache").  Speedups of up to 30% have been reported
  on the amd64 architecture.

- Enblend and Enfuse accept repsonse files in addition to literal
  image files.  Response files contain lists of image filenames or
  names of other response files.

- Lots of new warnings if a command-line option has no effect, like,
  for example, combining a mask optimization option with
  "--no-optimize".

- Enblend shows the initial, unoptimized seam line in addition to the
  optimized one in all seam-line visualization images (option
  "--visualize").

- Enblend and Enfuse read multi-layer TIFF files ("multi directory" in
  TIFF jargon).  It is even possible to mix multi-layer with single
  layer images.  This partially fixes SourceForge bug ID 1170329.

- Save masks with (lossless) "Deflate" compression.

- An improved wrap-around option, formerly only "-w", now "-wMODE" and
  "--wrap=MODE", lets the user determine whether to create a 360
  degrees horizontal or vertical panorama.  It is possible to wrap
  around vertically and horizontally at the same time.

- Without any output filename given, i.e. no "-o" option, the output
  filename now defaults to "a.tif", making "-o" truly an option.

- The user has better control of the number of pyramid levels.
  Previously only the maximum number in any blend could be reduced
  by the "-l" option.  Now, the maximum number can be reduced by a
  fixed amount no matter what the actual maximum number of permissible
  pyramid levels is.

- Use OpenMP to make better use of multi-processor machines.  As the
  image cache is not reentrant, OpenMP can only be activated when the
  image cache is disabled.

- Enblend and Enfuse issue messages following the GNU standard.


** Bug Fixes

- Fix the calculation of the number of blending levels.  Previously,
  it was off by one in most cases.

- A longstanding bug (SourceForge ID 2160427) in the primary seam line
  generation that caused a sub-optimal seam line was fixed.  As a side
  effect the new seam line algorithm is at least 20% faster than the
  old one.

- Another longstanding bug (SourceForge ID 1891785) that caused wrong
  output for images with holes was also fixed.

- Fix a well hidden but serious bug in the seam line optimization.
  Both, the GPU and non-GPU versions of the optimizer were affected.

- Make Enblend and Enfuse aware of the input images' resolution.  Use
  the input resolution in the output file.

  With this change masks get the correct offsets.  This fixes the bug
  that masks do not end up at the correct position with respect to the
  input files.

- Fix MacOS problem of parsing floating-point parameters at the
  command line.


** New Commandline Options

- All Enfuse options have been converted to Enblend's option naming
  scheme.  This is, camel-casing has been replaced by lowercase plus
  dashes.  The new option name are more systematically constructed,
  too.  The old options will completely dissapear in the next release,
  4.1.

               Old Option                New Option
          ====================    ========================
          --ContrastWindowSize    --contrast-window-size
          --EdgeScale             --contrast-edge-scale
          --EntropyCutoff         --entropy-cutoff
          --EntropyWindowSize     --entropy-window-size
          --GrayProjector         --gray-projector
          --HardMask              --hard-mask
          --MinCurvature          --contrast-min-curvature
          --SaveMasks             --save-masks
          --SoftMask              --soft-mask
          --wContrast             --contrast-weight
          --wEntropy              --entropy-weight
          --wExposure             --exposure-weight
          --wExposureMu           --exposure-mu
          --wExposureSigma        --exposure-sigma
          --wSaturation           --saturation-weight

- New option to control the output bit depth ("--depth").

- Mask filenames can be specified with templates.

  * Enblend ("--save-masks", "--load-masks", "--visualize"): Save and
    load all masks of a project in a single run.  Same for seam line
    visualization files.

  * Enfuse ("--save-masks"): Save soft and hard masks according to
    path given in template.

- New option to control the mask vectorization, which is done before
  any mask optimizations ("--mask-vectorize").

- New option to control the Simulated Annealing optimizer called
  strategy 1 ("--anneal").

- New option to control the relative weights of the distance to the
  initial seam line and the total mismatch ("--optimizer-weights").

- New option to control the Dijkstra path minimizer called strategy 2
  ("--dijkstra").

- Option "--coarse-mask" takes an optional (linear) reduction factor.
  The default remains at 8.

- New option "--smooth-difference" to blur difference images prior to
  seam-line optimization.

- Long option "--levels" to control the number of levels; duplicates
  functionality of short option "-l".


** Removed Commandline Options

- After having been deprecated for a long time, Enfuse's option
  "--debug", which saved the masks used in fusing, was removed.
  Option "--save-masks" now provides a superset of the previous
  functionality.

- After having been deprecated for a long time, Enblend's and Enfuse's
  option "-z", which compressed TIFF-output files with the LZW
  algorithm, was removed.  Option "--compression" now provides a
  superset of the previous functionality and "--compression=LZW" is a
  substitute for "-z".


** Developer Stuff

- VPATH builds work.  This makes it easy to compile for differently
  configured versions, like for example with and without image cache.

- The target "make distcheck" works again.

- Introduce additional Make variables to control the Make process
  after the project was configured.  See "README" file.

- Debugging of dynamic memory allocation has been eased by the
  integration of the DMalloc package; "configure --with-dmalloc"

- Use only m4 files that clearly have a GPL license.  This fixes
  SourceForge feature request ID 2152850.

- Remove all files that are meant to be generated auto Autoconf.  This
  fixes SourceForge bug ID 2036031.

- Install m4 file to detect the M$ compiler.  This fixes SourceForge
  bug ID 2036034.

- Make "configure" report that extra features will get compiled and if
  they cannot tell the developer why not.

- Pull version of program and documentation into file "VERSION".  Both
  program and documentation automatically use this information on
  every build.

- The MSVC project files were removed.  They can be regenerated by the
  (still experimental) CMake environment.

- README hosts build instructions for GNU Autoconf/Automake based
  systems, for MacOSX, and for Win.


** What is known not to work?

- Documentation generation is not as reliable and smooth as it ought
  to be.  The culprit is Automake; see PR/486.



* Version 3.2

Released on September 8, 2008.

** Improvements

- Official release of Enfuse for automatic multi-level exposure
  blending and focus stack creation.

- Support for PNG and OpenEXR input files.

- Support for writing JPEG output files (8 bit only).


** Bug Fixes

- Bugfix to correctly interpret the alpha channel of float (HDR)
  images.


** New Commandline Options

- New --compression option for selecting the compression type of the
  output image.


** Developer Stuff

- This release includes a Windows binary that does not require a
  SSE2-capable processor.

- There will not be a 3.1 release in order to avoid confusion with
  numerous cvs builds that self-identify as version 3.1.



* Version 3.0

Released on January 27, 2007.

** Improvements

- New, faster image processing algorithms for computing Gaussian and
  Laplacian pyramids.


** New Commandline Options

- Optional optimization of seam line placement to try to avoid
  mismatches and parallax errors in the image overlap region.

- Masks can now be saved and loaded from files.  This makes it
  possible to manually edit the location of the seam before
  multiresolution spline blending is applied.

- Checkpointing of partial results is now optional.  This improves
  speed.

- Optional blending using the CIECAM02 color appearance model.  Your
  TIFF files should have embedded ICC profiles in order to use this
  option.  This replaces the CIE L*a*b* color blending in Enblend 2.X
  that never worked properly.

- Optional use of the graphics processor to speed up certain
  computations.  This feature is experimental and may not work on all
  systems.


** Developer Stuff

- Like other X.0 releases, please consider this a beta.



* Version 2.5

Released on December 11, 2005.

** Bug Fixes

- Fixed a bug where Enblend would crash when the -w parameter was
  used.

- Fixed a bug where Enblend would sometimes say "mask transition line
  bounding box undefined."



* Version 2.4

Released on December 3, 2005.

** Improvements

- Enblend will now create output files with embedded ICC profiles.
  The first ICC profile found amongst the input images will be copied
  to the output image.  Enblend does not use ICC profiles to do color
  calculations.

- Incorporated a patch from Fulvio Senore to make the mask generation
  faster.  Fulvio wrote a more efficient data structure for use in the
  nearest feature transform.


** New Commandline Options

- Added support for working with cropped and shifted input images.
  These types of files are created by Nona's "Multiple TIFF" stitching
  option.  A cropped and shifted TIFF saves space and time because it
  is just large enough for a single input image, instead of being the
  size of the entire output panorama with lots of empty space all
  around.  Nona embeds an (x, y) offset coordinate in the file so that
  Enblend can tell where this file belongs in the final panorama.

  By default, if you give Enblend cropped and shifted TIFFs, the
  output will also be a cropped and shifted TIFF.  Sometimes you may
  want to include the extra blank space anyway, for example if you are
  creating a 360-degree panorama and the image size must be exactly a
  2:1 ratio.  In this case, use the new -f parameter to manually set
  the size of the output image:

  -f WIDTHxHEIGHT

  Thanks to Pablo d'Angelo for providing this patch.



* Version 2.3

Released on April 17, 2005.

** Bug Fixes

- Fixed a bug in temporary file handling in the Windows version of
  enblend.  This should solve the "unable to open temporary file"
  error.

- Reduced the maximum number of levels you can specify with the -l
  parameter from 30 to 29.  While both of these are impractically
  large, at least 29 does not lead to arithmetic overflow and a
  subsequent crash.

- Fixed a bug in temporary file handling in the Windows version of
  enblend.  This should solve the "unable to open temporary file"
  error.



* Version 2.2

Released on February 5, 2004.

** Improvements

- The Windows binary of Enblend is now build with a version of libtiff
  that includes support for all of the TIFF compression standards,
  such as Deflate, LZW, JPEG, and Packbits.  Nona/Hugin produces TIFF
  files with the Deflate option.

- Replaced some system calls that are specific to Windows 2000 and XP
  with more generic functions.  This should get the Windows binary of
  Enblend to run on pre-Win2K machines.


** Bug Fixes

- This release fixes issues with the Windows version of Enblend.  If
  you are using Enblend on UN*X you do not need to upgrade.



* Version 2.1

Released on November 15, 2004.

** Improvements

- Compression is no longer the default option in the Windows
  executable.


** Bug Fixes

- Turned off TIFF library warning messages that required user
  interaction on Windows.

- Fixed a bug in Vigra that caused primary color spots to appear in
  overexposed areas of 16-bit images.

- Fixed a problem with Enblend crashing on large panoramas.  Modified
  tiff import to use a scanline-based interface instead of a strip-
  based interface.  PTStitcher generates TIFFs with the rows/strip tag
  set to an unreasonable value.


** Developer Stuff

- Ported the source to compile natively on Win32 using MSVC.



* Version 2.0

Released on October 17, 2004.

** Improvements

- Support for signed and unsigned 16-bit, 32-bit, single- and double-
  precision floating point pixel types.

- Sophisticated memory/disk balancing.  You can tell Enblend how much
  memory it is allowed to use, and it will swap to disk after that.

- Support for huge panoramas.  I have tested that Enblend can blend a
  1.2 gigapixel, 16-bit per channel color image.  You should be able
  to go right up to the 4 gigabyte limit of the TIFF format.


** Bug Fixes

- Fixed the banding artifacts that often appeared in skies.


** New Commandline Options

- Optional blending in CIE L*a*b* color space.

- Option to use LZW compression for the output image, if your libtiff
  supports it.  This option is selected by default in the prebuilt
  Windows executable.

- The -s option for sequential blending is now the default.  Enblend
  cannot accurately determine how many blending levels to use when
  there are multiple disjoint overlap regions in one blending
  iteration.  It is better to manually tell Enblend the order in which
  the images should be blended. If you still want Enblend to assemble
  non-overlapping images first, use the -a flag.

- The -l option now tells Enblend the exact number of blending levels
  that you want to use.  The geometry of your images may force Enblend
  to use a smaller number of levels.  In this case a message will be
  printed.

- Gimp (ver. < 2) and Cinepaint exhibit unusual behaviors when loading
  images with unassociated alpha channels.  Use the -g flag to work
  around this.  With this flag Enblend will create the output image
  with the associated alpha tag set, even though the image is really
  unassociated alpha.


** Developer Stuff

- Ported Enblend to the VIGRA Computer Vision Library.




* Version 1.3

Released May 18, 2004.

** Bug Fixes

- Added a configure test for the endian-ness of the machine.  I
  changed the way enblend reads and writes 8-bit color fields in
  32-bit pixel words to reflect the endian-ness of the machine.  This
  should get enblend working on powerpc machines.

This release adds no new features.



* Version 1.2

Released April 26, 2004.

** Bug Fixes

- Fixed a bug where 8-bit TIFFs would not be identified properly on
  big-endian machines.

- A second (better) fix for the boundary condition problem that lead
  to horizontal or vertical seams to appear in the output.



* Version 1.1

Released April 3, 2004.

** Bug Fixes

- Fixed a bug in reading from temporary files that appeared on
  machines with different versions of GCC.

- Fixed a boundary condition problem that lead to horizontal or
  vertical seams to appear in the output.

- Fixed a bug where segments of an input image would appear on the far
  side of a blending zone.  This would cause strange wedge-shaped
  artifacts in some output images.



* Version 1.0

Released March 27, 2004.

** New Commandline Options

- Added options to limit the number of blending levels used.  This can
  reduce memory usage and improve speed, at a loss of quality.

- Added an option to blend around the -180/+180 degree boundary.
  There is still an open issue as to how to handle the zenith and
  nadir.

- Added an option to blend the input images sequentially in the order
  given on the command line.  Sometimes the assembler can make poor
  choices and seams will still be visible in the output.

** Developer Stuff

- Replaced erosive thinning algorithm for mask creation with a much
  faster nearest feature transform.

- Reduced memory requirements.  Enblend now swaps most of its data to
  disk as temporary files.  Enblend also calculates the region of
  pixels that are involved in each blending step and only does math on
  those pixels, improving speed and memory usage.



* Version 0.9

Released on March 4, 2004.




Local Variables:
mode: outline
End:
