* Version 4.2

Released March 29, 2016.

** Improvements

- All deprecated options and features of version 4.1 have been
  removed.

- Enblend and Enfuse support layer (aka "page", aka "frame") selection
  in of multi-layer image-files.  This includes processing any layers
  in user-defined order.

- Both Enblend and Enfuse can now perform all their pyramidal blending
  operations in CIELAB (aka L*a*b*, aka L-star) and CIELUV (aka
  L*u*v*) color spaces, too.  See section "New Commandline Options",
  option `--blend-colorspace'.

  The previous default, CIECAM for input images with ICC-profile has
  been changed to CIELUV.  The default for RGB images without
  ICC-profile remains.  However, the new default for floating-point
  image data is to use the RGB-cube, no matter whether the images come
  with profiles or not.

- The new Graph-Cut algorithm is the default primary seam-line
  generator.

- Avoid a division-by-zero in the Annealing Optimizer.

- Fix a bug (#1356551) in the seam-line vectorization code that was
  there since 2004.  The fix changes the position of almost any
  coarse-mask seam line vertex by one pixel.

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

- Fix a bug in the highlight-recovery that caused Enfuse to bail out
  with the uncaught exception
      "Minimizer1D::set_bracket: minimum not bracketed".

- The OpenMP enabled versions of Enblend and Enfuse benefit from
  Google's TCMalloc library.

- Several exposure weight functions were added to Enfuse.  The choice
  is now up to the user.  The default still is the Gauss function as
  in all Enfuse versions before.


** New Commandline Options

- The introduction of additional blend color spaces requires a new
  option to select them.  The new option `--blend-colorspace' takes
  over the functionality of `--ciecam' and `--no-ciecam' (which both
  will be withdrawn in a future version) and is flexible enough for
  the new CIELAB and CIELUV blend color spaces.

      --ciecam     =>  --blend-colorspace=CIECAM
      --no-ciecam  =>  --blend-colorspace=RGBCUBE
      new:             --blend-colorspace=CIELAB
      new:             --blend-colorspace=CIELUV

- Calling Enblend or Enfuse with `--show-software-components' will
  show the compiler name and version along will the versions of all
  important libraries against which the binaries were compiled.

- The new options `--show-globbing-algorithms',
  `--show-image-formats', and `--show-signature' now display the
  information that previously was requested with `--version
  --verbose'.  The output of `--help' has been regrouped to account
  for the new diversity of information options.

- Option `--exposure-weight-function' makes Enfuse's exposure weight
  function user selectable.  Previously weight function "gauss" was
  the only one (and hard-coded).

  Some examples of user-defined weight functions and a rudimentary
  GNUmakefile to build them get installed in
          DOCDIR/examples/enfuse.

- The old Enfuse options `--exposure-mu' and `--exposure-sigma' got
  siblings called `--exposure-optimum' and `--exposure-width'
  respectively.  With exposure weight functions other than Gauss the
  restricted naming does not make sense anymore.

  Options `--exposure-mu' and `--exposure-sigma' are scheduled for
  withdrawal in a later version of Enfuse.

- Long-time option `-a' got a long-form sibling called
  `--pre-assemble'.  The long form can be negated as
  `--no-pre-assemble', which is the default.


** Idle Commandline Options

- The Stable Branch of Enblend/Enfuse does not support any
  acceleration with GPUs as the current Development Branch does.  For
  commandline compatibility and easy script migration the options
  `--gpu', `--prefer-gpu', and `--show-gpu-info' are accepted, but do
  not have any functionality behind them.


** Developer Stuff

- During configuration the name of Vigra's import-export library can
  be set with the environment variable VIGRAIMPEX_LIB.  This is to
  splice in a library compiled with e.g. instrumentation or
  sanitizers.  If the variable is undefined or empty the default is
  `-lvigraimpex', which lets most linkers prefer the dynamic library
  in the standard location if there is any choice.

- The Automake system can be configured to print only terse messages
  (configure option `--enable-silent-rules'), or when working at
  command line level, pass `V=0' to make(1).

- A C++11-compatible compiler is required to compile Enblend and
  Enfuse.

- Support of the Boost filesystem library has been dropped.  There is
  no Boost library dependence anymore.

- Empty `--parameter' options default to "1".  This behavior in
  conjunction with boolean parameter expansion taking "0" and "1" as
  aliases for "false" and "true" allows to shorten setting boolean
  parameters.

- The new configuration option "--enable-on-demand-dynlink" controls
  lazy loading of all shared libraries.


** Package Maintainer Stuff

- Boost version 1.55 or later is now required to build.

- Vigra version 1.9 or later is now required to build.

- Little CMS version 2.5 or later is now required to build.

- Support for OpenGL acceleration has been dropped.  So, the
  dependencies on the libraries GL, GLU, and Glut do not exist any
  longer.

- Support for images with 8-bit signed channels has been dropped.

- The documentation no longer uses Texinfo, but LaTeX for PostScript
  generation and Hevea for HTML.

- fig2dev(1) of the XFig suite is no longer needed to build the
  documentation.  All relevant images were converted to dot(1) or SVG
  format.


* 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:
