The smart alignment algorithm has been enhanced to take into account both the overlapped areas and different areas for each potential offset. Previously, it only considered overlapped areas. This should lead to better alignment results, especially in cases where the overlap alone may not provide a sufficient basis for alignment.
Increased Default Sample CountThe default value for "sample count" has been increased from 3 to 4. This change results in a higher number of sampled windows, going from 9 to 25. A greater number of samples can help improve alignment accuracy, particularly in complex scenarios.
Additional LoggingMore detailed logging has been added to provide information about the sample windows that have been found and used during the alignment process.
Bug Fixes
A bug where smart alignment was not being triggered, even when the "-smartalign" flag was present in the command line, has been fixed.
Another bug was fixed where a search for a valid window would not occur if the first window of each sample was invalid.
A bug related to sample windows extending beyond the extents of the image data has been addressed.
The comparison of sample windows has been fixed to address cases where one window could be "off-center" relative to the specified "sample depth."
Added more error messages and logging related to various failures.
Fixed an incorrect error message.
Fixed some minor memory leaks related to the faster performance introduced in version 1.16.
Improved the speed of generating list output by preventing some unneeded buffer allocations.
There was a problem with the default scaling which led to overflow when processing rows or columns exceeding ~21 million pixels.
Improved the unionization process. The new flow reduces the number of times the data needs to be unionized. This will significantly increase the performance when multiple threads have imbalanced workloads. For example, two TIFF files with quite a lot of differences and are 5 GB when uncompressed, went from taking just over 3 minutes to 30 seconds.
Added the ability to control how polygons are unionized with the "-union:[mode]" option.
The supported modes are: "cutlines", "butting", "leonov", and "cutlines-ptins" (short for cutlines point insertion).
By default "-list" output uses "leonov" mode and all other outputs use "cutlines". The supported outputs are: "-list", "-gds", "-gbr", "-bmp", "-tiff", "-raw", and "-lgraw".
Updated the usage information regarding "-list", "-union", and "-nopost".
Fixed a bug where GDS output was not supported.
Added the ability to XOR greyscale images when bit depth and DPI values are the same.
When comparing two greyscale images the resulting bitmap will have a bit depth of 8, where each output pixel is the absolute difference between the input pixels (range from 0 to 255).
When generating a list of coordinates for the differences, all of the adjacent differences that are non-zero are unionized together and listed as a single difference. This is the same behaviour used for monochrome comparisons.
If you enabled logging then you can find an "Absolute Difference Population Report" in the log file. This report tracks the occurrences of each difference found in the image.
Bug Fix - Sliver CalculationsFixed a bug where large offsets could cause incorrect sliver calculations. The final unionization process now uses Leonov output instead of cutlines to manage voids, which makes the sliver calculations much more accurate.