This version (@value{VERSION}) of Enblend supports two main algorithms
to generate seam lines.  Use
option@tie{}@option{--primary-seam-generator} to select one of the
generators.

@table @asis
@item Nearest Feature Transform (@acronym{NFT})
@cindex nearest feature transform (@acronym{NFT})
The @acronym{NFT}, also known as
@uref{http://en.wikipedia.org/@/wiki/@/Distance_transform, Distance
Transform}, is a fast and efficient technique to produce a seam line
route given the geometries of multiple overlapping images.

@acronym{NFT} as implemented in this version of Enblend only takes
into account the @emph{shape of the overlap area.}  It completely
ignore the images' contents.

@item Graph-Cut (@acronym{GC})
@cindex graphcut (@acronym{GC})
@uref{http://en.wikipedia.org/@/wiki/@/Graph_@/cuts_@/in_@/computer_@/vision,
@acronym{GC}} is a region-oriented way of segmenting images.

The generator is based on the idea of finding a minimum cost ``cut''
of a graph created from a given image pair.  A ``cut'' is where the
seam line appears.  @acronym{GC} determines the cost from the
overlapping images' contents.
@end table

@cindex graphcut, details
@cindex seam generation, details
The most significant difference between the two algorithms is the
output mask gradation.  @acronym{NFT} produces a coarse approximation
of the seam, running as far away from the overlap-region borders as
possible.  The resulting mask could then be blended as-is, however,
Enblend by default runs image-content dependent optimizers to increase
the mask gradation and for example omits the regions where the images
differ.  The result is a finer seam line, which only loosely follows
the shape of @acronym{NFT}'s primary seam.

Graph-Cut, on the other hand, is capable of producing the final mask
in one pass without the need of further optimizers.  It looks for a
seam line that is @emph{globally} optimal, taking into account

@itemize
@item
feature frequency, as well as
@item
image dissimilarity.
@end itemize

@noindent
This means, the seam is less likely to cross lines like for example
fences, lampposts, or road markings, where they would be visible.

The optimizers which run after @acronym{NFT} can also be run after
@acronym{GC}.  Nevertheless, @acronym{GC} works best just with a fine
mask (option@tie{}@option{--fine-mask}); optimizers are then
automatically @emph{turned off} to take full advantage of the detailed
seam @acronym{GC} produces.

@acronym{GC} requires more memory and computation time to complete
than @acronym{NFT}.  Thus, it is best to prefer @acronym{NFT} where
the images used are large and execution time is crucial.  If quality
is the priority, using @acronym{GC} and fine mask usually produces
visually more pleasing results.

@cindex graphcut, limitations
@acronym{GC} is currently limited to seams that begin and end on the
images' borders.  This means that the algorithm cannot run in cases
where, for example, one image is contained in another, resulting in a
loop-like seam.  In such cases, though, Enblend automatically falls
back to a @acronym{NFT}-generated seam, making its application
transparent to the user.
