----------------------------------------------------------------------------------------
CHANGES.txt : List the changes made between consecutive versions of The CImg Library
-----------------------------------------------------------------------------------------
*-----------------------------
*-----------------------------
* Changes from 1.3.0 to 1.3.1
*-----------------------------
*-----------------------------
* New features :
- Added configuration macro 'cimg_file_separator' that takes value "/" or "\"
depending on which OS is running. This macro is used in load/save functions
for better portability.
- New example file 'examples/gaussian_fit.cpp' which demonstrates how to apply the
Levenberg-Marquardt algorithm to fit a 3-parameter gaussian on a set of sample points.
- Added function 'CImg[{Display,List}]::empty()' that returns a reference to an empty object
(can be used to pass empty images as default values of function parameters).
- Added variant of the function 'CImg<T>::draw_triangle()' to draw triangle with linearly
interpolated colors defined at each triangle vertex.
- Added a formula parser in CImg<T>, so that many arithmetic operators can use it to
evaluate expressions (given as a C-string).
- Added example file 'examples/plotter.cpp' that plots a mathematical function on an interactive window.
- Added functions 'CImg<T>::index()' and 'CImg<T>::map()' that can index an image with a multi-spectral
palette, or map a multi-spectral palette on an image.
* Optimizations / Modifications :
- Added parameter 'bytes_per_pixel' to force the use of 8 or 16 bits modes in functions
'CImg<T>::save_magick()', 'CImg<T>::save_pnm()' and 'CImg<T>::save_png()'. Thanks to Julien Morat
for pointing this out to me.
- Added parameter 'backward' to 'CImg<T>::displacement_field()', allowing to select between
forward of backward estimation procedure.
- Parameters 'ru,rv' in 'CImg<T>::draw_ellipses()' have been replaced by parameter 'angle'.
- Function 'CImg[List<T>]::get_split()' is now able to split an image into bloc of given pixel size.
- Changed 'zbuffer' parameter type to 'CImg<float>' in 'CImg<T>::draw_*' functions.
- Remove 'GREYCstoration' specific code. The GREYCstoration algorithm is now a part of the G'MIC framework.
Note that the two functions 'CImg<T>::blur_anisotropic()' and 'CImg<T>::blur_patch()' are still here to
smooth an image anisotropically (are the core algorithm of the former GREYCstoration).
* Bug corrections :
- Corrected 'CImg<T>::translate()' : function parameters were the opposite of the real translation done.
- Modifications on CImg.h to be more compatible with the old VC++6 compiler.
- Corrected 'CImg<T>::get_histogram()'.
- Corrected 'CImg<T>::load_ascii()'.
- And lot of small bugs corrections.
*-----------------------------
*-----------------------------
* Changes from 1.2.9 to 1.3.0
*-----------------------------
*-----------------------------
The 1.3.0 version of the CImg Library is a major release, and will probably break the
compatibility with your existing code. Anyway, the overall philosophy is the same so
converting your code should not require lot of work fortunately.
* New features :
- Added function 'CImg<T>::[get_]distance()' that compute the Euler unsigned distance map
from a shape of specified isovalue in an image, using a fast linear algorithm.
- Added functions 'CImg<>::set_linear_at{X,Y,Z}()' allowing to set pixel values using
float-valued coordinates, with linear interpolation.
- Added z-buffering capabilities in some drawing functions, so that displaying a
3D object with 'CImg<T>::draw_object3d()' now takes care of eventual crossing primitives.
(added shortcut CTRL+Z to enable/disable zbuffering in 'CImg<T>::display_object3d()'.
- Added functions 'CImgList<T>::is_same*()' to check dimensions of image lists.
- Added plugin 'plugins/skeleton.h', as well as example of use 'examples/skeletonize.cpp' that
computes the skeleton of a shape (binary image). Thanks to F-X Dup� for this nice contrib !
- Added function 'CImg<T>::get_elevation3d()' that constructs a 3D object by 'elevating'
an instance image.
- In function 'CImg<T>::sharpen()', two sharpening methods are now implemented : shock filters
and inverse diffusion.
- Added function 'CImg[List]<T>::save_ffmpeg()', allowing to save an image sequence, directly
as a movie file, using the FFMPEG library. Thanks to David. G. Starweather for this very nice
contribution !
- Added function 'CImg<T>::[get_]warp()' that can warp an image using a deformation field.
- Added function 'CImg<T>::[get_]solve_tridiagonal()' that can quickly solve a tridiagonal linear
system of equations (use the Thomas Algorithm).
- Added function 'CImg<T>::[get_]load_dcraw_external()' that allows to read RAW digital camera files,
using the open-source external tool 'dcraw'.
- Added file 'examples/CMakeLists.txt' to generate makefile using the 'cmake' tool (thanks to
Baptiste Mougel for this nice contribution).
- Added functions 'CImg<T>::display_graph()' and 'CImg<T>::select_graph()' that can be used
to display a graph plot or crop a sub-graph.
- Added function 'CImg<T>::[get_]autocrop()' that can autocrop an image regarding to a background
value or color.
- Added new demo 'Word Puzzle' in file 'examples/CImg_demo.cpp'.
- Added new plugin 'plugins/cimgIPL.h', as well as example file 'examples/use_cimgIPL.h' that shows
how to convert between CImg and IplImage structures (used in OpenCV). Thanks to Haibo Zheng for
this nice contribution !
- Function 'CImg<T>::load_ffmpeg()' is now able to return information on the main video stream, without
having to load frames.
- New function 'CImg[List]<T>::valuestring()' returns a C-string containing values of the image pixels.
- Added file 'examples/gmic4gimp.cpp' which implements a G'MIC plug-in for GIMP.
- Added file 'resources/cimg_buildpackage' which is a bash script that generates package files for CImg.
- Added function 'cimg::prand()' which returns a random variable following a Poisson distribution.
* Optimizations / Modifications :
- The API of the library has been quite largely modified. It means that the 1.3.0 release is
not meant to be fully compatible with previous versions. This is the beginning of a new
important branch.
- Functions 'CImg[List]<T>::load()' can now check for magick numbers for determining file format
(instead of using only their filename extension).
- Cleaned lot of code in 'CImg<T>::draw_*()' functions. Few of them have now different signatures,
particularly 'CImg<T>::draw_text()', 'CImg<T>::draw_spline()' and 'CImg<T>::draw_image()'.
- Improved warning removal when compiling on Microsoft Visual C++ compiler. It is now very rare
to get warnings when compiling CImg-based files !
- Plugin 'plugins/distance_saito.h' has been removed, since a new and clean implementation of
the distance function is now available in the 'CImg.h' file.
- Function 'CImg<T>::equalize_histogram()' has been renamed to 'CImg<T>::equalize()'.
- Functions 'CImg<T>::get_gradient()', 'CImg<T>::get_structure_tensor()' and 'CImg<T>::get_hessian()'
now replaces the old versions.
- Provided example file 'examples/inrcast.cpp' has been renamed and recoded as 'examples/gmic.cpp'.
G'MIC is now an independant project, having its own web page : http://gmic.sourceforge.net/.
- Plugin 'plugins/cimgmatlab.h' has been updated.
- Added pipe support (for POSIX systems) in load/sa