PTdecode/CImg-1.3.0/CHANGES.txt

Wed, 05 Aug 2009 15:02:31 +0100

author
Philip Pemberton <philpem@philpem.me.uk>
date
Wed, 05 Aug 2009 15:02:31 +0100
changeset 13
a933b13e087f
parent 5
1204ebf9340d
permissions
-rwxr-xr-x

PTdecode: add support for uncompressed data (NOTE: *NOT* supported by the PT-2450DX)

philpem@5 1 ----------------------------------------------------------------------------------------
philpem@5 2
philpem@5 3
philpem@5 4 CHANGES.txt : List the changes made between consecutive versions of The CImg Library
philpem@5 5
philpem@5 6
philpem@5 7 -----------------------------------------------------------------------------------------
philpem@5 8
philpem@5 9 *-----------------------------
philpem@5 10 *-----------------------------
philpem@5 11 * Changes from 1.2.9 to 1.3.0
philpem@5 12 *-----------------------------
philpem@5 13 *-----------------------------
philpem@5 14
philpem@5 15 The 1.3.0 version of the CImg Library is a major release, and will probably break the
philpem@5 16 compatibility with your existing code. Anyway, the overall philosophy is the same so
philpem@5 17 converting your code should not require lot of work fortunately.
philpem@5 18
philpem@5 19 * New features :
philpem@5 20 - Added function 'CImg<T>::[get_]distance()' that compute the Euler unsigned distance map
philpem@5 21 from a shape of specified isovalue in an image, using a fast linear algorithm.
philpem@5 22 - Added functions 'CImg<>::set_linear_at{X,Y,Z}()' allowing to set pixel values using
philpem@5 23 float-valued coordinates, with linear interpolation.
philpem@5 24 - Added z-buffering capabilities in some drawing functions, so that displaying a
philpem@5 25 3D object with 'CImg<T>::draw_object3d()' now takes care of eventual crossing primitives.
philpem@5 26 (added shortcut CTRL+Z to enable/disable zbuffering in 'CImg<T>::display_object3d()'.
philpem@5 27 - Added functions 'CImgList<T>::is_same*()' to check dimensions of image lists.
philpem@5 28 - Added plugin 'plugins/skeleton.h', as well as example of use 'examples/skeletonize.cpp' that
philpem@5 29 computes the skeleton of a shape (binary image). Thanks to F-X Dupé for this nice contrib !
philpem@5 30 - Added function 'CImg<T>::get_elevation3d()' that constructs a 3D object by 'elevating'
philpem@5 31 an instance image.
philpem@5 32 - In function 'CImg<T>::sharpen()', two sharpening methods are now implemented : shock filters
philpem@5 33 and inverse diffusion.
philpem@5 34 - Added function 'CImg[List]<T>::save_ffmpeg()', allowing to save an image sequence, directly
philpem@5 35 as a movie file, using the FFMPEG library. Thanks to David. G. Starweather for this very nice
philpem@5 36 contribution !
philpem@5 37 - Added function 'CImg<T>::[get_]warp()' that can warp an image using a deformation field.
philpem@5 38 - Added function 'CImg<T>::[get_]solve_tridiagonal()' that can quickly solve a tridiagonal linear
philpem@5 39 system of equations (use the Thomas Algorithm).
philpem@5 40 - Added function 'CImg<T>::[get_]load_dcraw_external()' that allows to read RAW digital camera files,
philpem@5 41 using the open-source external tool 'dcraw'.
philpem@5 42 - Added file 'examples/CMakeLists.txt' to generate makefile using the 'cmake' tool (thanks to
philpem@5 43 Baptiste Mougel for this nice contribution).
philpem@5 44 - Added functions 'CImg<T>::display_graph()' and 'CImg<T>::select_graph()' that can be used
philpem@5 45 to display a graph plot or crop a sub-graph.
philpem@5 46 - Added function 'CImg<T>::[get_]autocrop()' that can autocrop an image regarding to a background
philpem@5 47 value or color.
philpem@5 48 - Added new demo 'Word Puzzle' in file 'examples/CImg_demo.cpp'.
philpem@5 49 - Added new plugin 'plugins/cimgIPL.h', as well as example file 'examples/use_cimgIPL.h' that shows
philpem@5 50 how to convert between CImg and IplImage structures (used in OpenCV). Thanks to Haibo Zheng for
philpem@5 51 this nice contribution !
philpem@5 52 - Function 'CImg<T>::load_ffmpeg()' is now able to return information on the main video stream, without
philpem@5 53 having to load frames.
philpem@5 54 - New function 'CImg[List]<T>::valuestring()' returns a C-string containing values of the image pixels.
philpem@5 55 - Added file 'examples/gmic4gimp.cpp' which implements a G'MIC plug-in for GIMP.
philpem@5 56 - Added file 'resources/cimg_buildpackage' which is a bash script that generates package files for CImg.
philpem@5 57 - Added function 'cimg::prand()' which returns a random variable following a Poisson distribution.
philpem@5 58
philpem@5 59 * Optimizations / Modifications :
philpem@5 60 - The API of the library has been quite largely modified. It means that the 1.3.0 release is
philpem@5 61 not meant to be fully compatible with previous versions. This is the beginning of a new
philpem@5 62 important branch.
philpem@5 63 - Functions 'CImg[List]<T>::load()' can now check for magick numbers for determining file format
philpem@5 64 (instead of using only their filename extension).
philpem@5 65 - Cleaned lot of code in 'CImg<T>::draw_*()' functions. Few of them have now different signatures,
philpem@5 66 particularly 'CImg<T>::draw_text()', 'CImg<T>::draw_spline()' and 'CImg<T>::draw_image()'.
philpem@5 67 - Improved warning removal when compiling on Microsoft Visual C++ compiler. It is now very rare
philpem@5 68 to get warnings when compiling CImg-based files !
philpem@5 69 - Plugin 'plugins/distance_saito.h' has been removed, since a new and clean implementation of
philpem@5 70 the distance function is now available in the 'CImg.h' file.
philpem@5 71 - Function 'CImg<T>::equalize_histogram()' has been renamed to 'CImg<T>::equalize()'.
philpem@5 72 - Functions 'CImg<T>::get_gradient()', 'CImg<T>::get_structure_tensor()' and 'CImg<T>::get_hessian()'
philpem@5 73 now replaces the old versions.
philpem@5 74 - Provided example file 'examples/inrcast.cpp' has been renamed and recoded as 'examples/gmic.cpp'.
philpem@5 75 G'MIC is now an independant project, having its own web page : http://gmic.sourceforge.net/.
philpem@5 76 - Plugin 'plugins/cimgmatlab.h' has been updated.
philpem@5 77 - Added pipe support (for POSIX systems) in load/save functions using external tools, so that
philpem@5 78 a temporary file is not necessary to read/write.
philpem@5 79 - Function 'CImg<T>::load_analyze()' can now read niftii files directly using a FILE* argument.
philpem@5 80 - Improved global structure of the CImg package.
philpem@5 81 - Silent output for 'CImg<T>::{load_save}_ffmpeg_external()' on Windows.
philpem@5 82 - Better zoom-in procedure in 'CImg<T>::display()'.
philpem@5 83 - Function 'CImg<T>::get_hessian()' now allows to specify the set of desired axes.
philpem@5 84 - Macros 'cimg_*_path' do not exist anymore. Instead, the user can dynamically change these paths used
philpem@5 85 by CImg, by using functions' cimg::*_path()'.
philpem@5 86 - Code corrections in order to compile without warnings on g++ 4.3 version.
philpem@5 87 - Added 'windows' targets in the 'examples/Makefile', so compiling examples under MinGW is straightforward.
philpem@5 88 - Added soft thresholding capability to 'CImg<T>::threshold()'.
philpem@5 89
philpem@5 90 * Bug corrections :
philpem@5 91 - Corrected bug related to X11 events on some Windows Managers, thanks to Rainer Steffens
philpem@5 92 for his nice patch !
philpem@5 93 - Corrected normalization bug that occured when doing inverse FFT of images, using libfftw3.
philpem@5 94 - Corrected endianness problem when reading 16 bits PNM files.
philpem@5 95 - Corrected small bug in 'CImg<T>::display()' : drawn coordinates were wrong when
philpem@5 96 user had selected a region to zoom in.
philpem@5 97 - Extension 'tiff' is now recognized in 'CImg<T>::load()'.
philpem@5 98 - Corrected computation of variance (=0) when image has only one element.
philpem@5 99 - Corrected y-range bug in 'CImg<T>::draw_ellipse()'.
philpem@5 100 - Corrected bug in 'CImg<T>::save_pandore()' when saving int images on 64bits systems.
philpem@5 101 - And many small bug corrections...
philpem@5 102
philpem@5 103 *-----------------------------
philpem@5 104 *-----------------------------
philpem@5 105 * Changes from 1.2.8 to 1.2.9
philpem@5 106 *-----------------------------
philpem@5 107 *-----------------------------
philpem@5 108
philpem@5 109 * New features :
philpem@5 110 - Added new example file 'examples/captcha.cpp', which can be used to draw captcha images. This is a very
philpem@5 111 short and simple code, so it can be interesting for a first approach of CImg.
philpem@5 112 - Added functions 'CImg<T>::scale_2x()' and 'CImg<T>::scale_3x()' allowing to upscale an image
philpem@5 113 with a edge-directed algorithm (see 'http://scale2x.sourceforge.net/')
philpem@5 114 - Added function 'CImg<T>::save_cpp()' allowing to save an image directly as a
philpem@5 115 C/C++ source code.
philpem@5 116 - Added function 'CImg<T>::draw_mandelbrot()' allowing to draw quadratic mandelbrot fractal set on images.
philpem@5 117 - Added a new demo effect 'Fish-Eye Magnification' in file 'examples/CImg_demo.cpp'.
philpem@5 118 - Added new fields in CImgDisplay for an easy test of keys pressing. Very useful for testing complicated combinations.
philpem@5 119 - Added functions to read/save gzipped files.
philpem@5 120 - Added compression option for .cimg files (requires the use of the 'zlib' library).
philpem@5 121 - Added color conversions for CMY and CMYK color bases.
philpem@5 122
philpem@5 123 * Optimizations / Modifications :
philpem@5 124 - Big code cleaning and re-organization in file 'CImg.h', making the things more clear.
philpem@5 125 - Function 'CImg<T>::load_ascii()' has been modified to allow comments before specifying image
philpem@5 126 dimensions.
philpem@5 127 - Functions 'CImg[List]::print()' have been slightly modified to be more precise and clear. Also used
philpem@5 128 in functions 'CImg[List]::display()'.
philpem@5 129 - Improved functionalities of the image processing tool 'inrcast.cpp'.
philpem@5 130 - Improved 'CImg[List]<T>::display()' function allowing easy navigation and zooming in images.
philpem@5 131 - Add native use of ffmpeg libraries to load video sequences (Thanks to David Starkweather for his nice contribution !)
philpem@5 132 - Optimized function 'CImg<T>::permute_axes' for common used cases (planar to interleaved RGB and RGBA).
philpem@5 133 - Added parameter 'step_frame' in functions that can load video sequences,
philpem@5 134 i.e. CImg[List]<T>::load_yuv(), CImg[List]<T>::load_tiff(), CImg[List]<T>::load_ffmpeg(), so that frames
philpem@5 135 can be skipped when loading the video files.
philpem@5 136 - Removed parameter 'events_type' in CImgDisplay functions. By default, a display is always catching all user
philpem@5 137 events. Having different choices made slight problems between different architectures (and was not really
philpem@5 138 useful).
philpem@5 139 - Removed plugin 'plugins/toolbox3d.h'. Functions of the plug-ins are now natively integrated into the CImg.h file,
philpem@5 140 as well as the LibBoard library support.
philpem@5 141 - Renamed functions 'CImg<>::*pix?d()' to 'CImg<>::*at?()'.
philpem@5 142
philpem@5 143 * Bug corrections :
philpem@5 144 - Small bug in functions 'CImg[List]::contains()' were corrected.
philpem@5 145 - Bug correction in function 'CImg<T>::[get_]stats()' : offset of min and max values were sometimes incorrect.
philpem@5 146 - Bug correction in CImgDisplay events for Windows-based OS. When mouse leaved a window, coordinates
philpem@5 147 didn't reset to -1 sometimes.
philpem@5 148 - Small non-computational bug correction in 'CImg<T>::symmetric_eigen()'.
philpem@5 149 - Removed g++ warning that occured when using 'libpng' ('warning: argument 'xxx' might be clobbered by 'longjmp' or 'vfork').
philpem@5 150 - Corrected small illumination bug with double sided 3D objects in CImg<T>::draw_object3d().
philpem@5 151 - And a lot of other small improvements and bug corrections...
philpem@5 152
philpem@5 153 *-----------------------------
philpem@5 154 *-----------------------------
philpem@5 155 * Changes from 1.2.7 to 1.2.8
philpem@5 156 *-----------------------------
philpem@5 157 *-----------------------------
philpem@5 158
philpem@5 159 * New features :
philpem@5 160 - Added native Carbon support in CImgDisplay. Allows to run CImg on MacOSX without installing X11.
philpem@5 161 This is a beta support, so not activated by default. Define 'cimg_use_carbon' to enable it.
philpem@5 162 Many Thanks to Adrien Reboisson, Romain Blei and Jean-Marie Favreau for this nice contribution.
philpem@5 163 Any comments and contributions are welcome.
philpem@5 164 - Added variant of 'CImgList<T>::remove()' that can remove several images from a CImgList<T> list
philpem@5 165 at the same time.
philpem@5 166 - Added new numbered macros 'cimg_plugin1...8', for easy inclusion of multiple CImg plug-ins.
philpem@5 167 - Added plugin 'plugins/distance_saito.h' that implements the Saito's distance transform.
philpem@5 168 - Added function 'CImg<T>::blur_patch()' that performs a patch-based Tikhonov flow on the image.
philpem@5 169 Allows to denoise and regularize image quite well (is time-consuming anyway).
philpem@5 170 - Functions 'CImg<T>::load_tiff()', 'CImgList<T>::load_tiff()', 'CImg<T>::save_tiff()' and
philpem@5 171 'CImgList<T>::save_tiff()' has been (re)-coded. It is now possible to read/save multi-pages tif
philpem@5 172 image files worriless.
philpem@5 173 - Native support for 'icc' compiler (Intel C++ compiler) added in the Makefile.
philpem@5 174 Just type 'make CC=icc olinux' to compile using icc (offers nice performances in code optimization).
philpem@5 175 - Started support of OpenMP directives, to allow parallelization of CImg functions in order to
philpem@5 176 improve performances. Not few used, by this could change in the future.
philpem@5 177 - Added functions to load/save video sequences using the external tool FFMPEG (http://http://ffmpeg.mplayerhq.hu/).
philpem@5 178 'inrcast' is now able to read video sequences using FFMPEG.
philpem@5 179 - Added new color basis conversions : RGBtoHSI(), HSItoRGB(), HSLtoRGB() (Thanks to Cesar Martinez for his
philpem@5 180 contribution).
philpem@5 181 - Added example file 'examples/radon_transform.cpp', provided by David G. Starkweather (Thanks guy!).
philpem@5 182
philpem@5 183 * Optimizations / Modifications :
philpem@5 184 - The main library file 'CImg.h' is now distributed under dual license CeCILL or CeCILL-C.
philpem@5 185 - Patched function 'CImg<T>::load_tiff()' for a better support of float-valued tiff images.
philpem@5 186 - Renamed 'CImg<T>::inverse()' as 'CImg<T>::invert()' and 'CImg<>::pseudoinverse()' as 'CImg<T>::pseudoinvert()'.
philpem@5 187 - Function 'CImg<T>::displacement_field()' has been modified to consider a multi-valued geometry
philpem@5 188 for motion detection (so color images are naturally taken into account now).
philpem@5 189 - Optimized functions 'CImg<T>::dilate()' and 'CImg<T>::erode()'
philpem@5 190 - Slightly optimized pixel access and display rendering functions.
philpem@5 191 - Used native mutex mechanism of X11 instead of the pthread library.
philpem@5 192 - Removed deprecated example file 'examples/pslider.cpp'.
philpem@5 193 - Renamed 'cimg::PI' to 'cimg::valuePI' to avoid compilation problems with some C++ compilers that define
philpem@5 194 the PI macro.
philpem@5 195 - Added specular type lightning in routines that draw 3D objects. Parameters 'specular_light' and
philpem@5 196 'specular_shine' replace the old 'ambient_light' parameter.
philpem@5 197
philpem@5 198 * Bug corrections :
philpem@5 199 - Bug corrected in 'CImg<T>::draw_polygon()' : wrong scanlines were drawn with some complex polygons.
philpem@5 200 - Bug corrected in 'CImg<T>::convolve()' and 'CImg<T>::correlate()'. Happened when dealing with non square
philpem@5 201 masks with even dimensions.
philpem@5 202 - Bug corrected in 'CImg<T>::save_png()' and 'CImg<T>::load_png()' when dealing with 16 bits
philpem@5 203 images in little-endian proc.
philpem@5 204 - Bug corrected in 'CImg<T>::get_coordinates()' when dealing with 2-channels images.
philpem@5 205 - Bug corrected, 2-channels images were not correctly displayed (blue channel was used instead of being 0).
philpem@5 206 - And a lot of other small bug corrections...
philpem@5 207
philpem@5 208 *-----------------------------
philpem@5 209 *-----------------------------
philpem@5 210 * Changes from 1.2.6 to 1.2.7
philpem@5 211 *-----------------------------
philpem@5 212 *-----------------------------
philpem@5 213
philpem@5 214 * New features :
philpem@5 215 - Added functions 'CImg<T>::get_haar()', 'CImg<T>::haar()' allowing to compute the direct and
philpem@5 216 inverse Haar multiscale transform on 2D or 3D images.
philpem@5 217 - Added function 'CImg<T>::get_hessianXY()' and 'CImg<T>::get_hessianXYZ()' that compute
philpem@5 218 the components of the hessian matrix of a 2D or 3D image.
philpem@5 219 - Added function 'CImg<T>::variancemean()' able to compute the variance and mean value of
philpem@5 220 an image at the same time.
philpem@5 221 - Added new macros for 'cimg_for_out*' and 'cimg_for_in*' families, all combinations are
philpem@5 222 now fully handled.
philpem@5 223
philpem@5 224 * Optimizations / Modifications :
philpem@5 225 - Modified 'CImg<T>::get_resize()'. Moving average is now defined to be interp=2. Additional
philpem@5 226 parameter 'center' has been added so that centering image is possible when upsizing with interp=0.
philpem@5 227
philpem@5 228 * Bug corrections :
philpem@5 229 - Critical bug correction has been made for non-const functions taking a const T& or const t& argument.
philpem@5 230 'const T&' arguments have mainly been replaced by 'const T' arguments, in order to avoid wrong references
philpem@5 231 problems. Thanks to Jinwei Gu who pointed this out to me.
philpem@5 232
philpem@5 233 *-----------------------------
philpem@5 234 *-----------------------------
philpem@5 235 * Changes from 1.2.5 to 1.2.6
philpem@5 236 *-----------------------------
philpem@5 237 *-----------------------------
philpem@5 238
philpem@5 239 * New features :
philpem@5 240 - Added functions 'CImg<T>::fillV(), CImg<T>::fillZV() and CImg<T>::fillYZV()' allowing to set image values
philpem@5 241 at a specified pixel and along specified axes.
philpem@5 242 - Added variant of 'CImg<T>::get_dijkstra()' allowing to use any function/class for definition of weights.
philpem@5 243 - Added new interpolation technique (moving average) in 'CImg<T>::resize()' allows very precise image downsizing.
philpem@5 244 (Thanks to François Lauze who provided me with some of its code).
philpem@5 245 - Added lot of new and useful neighborhood loop macros.
philpem@5 246 A new executable 'examples/generate_loop_macros.cpp' allows to generate
philpem@5 247 2D loops for arbitrary neighborhood size. A new plugin 'plugins/loop_macros.h' has been created, containing
philpem@5 248 all loops NxN (until N=32) and NxNxN (until N=8).
philpem@5 249 - Added separate component and YCbCr color base processing in options of 'examples/greycstoration.cpp'
philpem@5 250 - Added macros 'cimg_argument?()' allowing to retrieve command lines that are not options (not beginning with a '-').
philpem@5 251 - Added shortcut 'CTRL+O' in 'CImg<T>::get_coordinates()' allowing to save visualized instance image into a .cimg file.
philpem@5 252
philpem@5 253 * Optimizations / Modifications :
philpem@5 254 - Macros with neighborhood loops have been extended and simplified. Some of the previous ones have been deleted,
philpem@5 255 others have appeared. Basically, no functionnalities have been removed.
philpem@5 256 - Macro 'cimg_version' is now 126 instead of 1.26, allowing easy comparison with integer values.
philpem@5 257 - Changed traits name in cimg:: for more coherence.
philpem@5 258 - New design of the website and new sexy flyer available (Thanks to Sebastien Hanel).
philpem@5 259
philpem@5 260 * Bug corrections :
philpem@5 261 - Corrected function 'CImg<T>::cubic_pix[1,2]d()'.
philpem@5 262 - Corrected bug in 'CImg<T>::blur_median()'.
philpem@5 263 - Corrected bug with temporary random filenames when using multi-threading.
philpem@5 264 - Corrected small bug in 'CImg<T>::draw_point()'.
philpem@5 265 - Corrected name 'CImg<T>::dijkstra()' instead of 'CImg<T>::djikstra()'.
philpem@5 266 - Corrected compilation bug in some plug-ins.
philpem@5 267 - And other small bug corrections...
philpem@5 268
philpem@5 269 *-----------------------------
philpem@5 270 *-----------------------------
philpem@5 271 * Changes from 1.2.4 to 1.2.5
philpem@5 272 *-----------------------------
philpem@5 273 *-----------------------------
philpem@5 274
philpem@5 275 * New features :
philpem@5 276 - Added function 'CImg<T>::label_regions()' that can label deconnected regions.
philpem@5 277 - Added overload of function 'CImg<T>::draw_point()' that is able to draw point clouds.
philpem@5 278 - Added function 'CImg<T>::get_blur_bilateral()' that implements bilateral filtering.
philpem@5 279 - Added functions 'CImg<T>::get_RGBtoBayer()' and 'CImg<T>::get_BayertoRGB()' that converts between
philpem@5 280 RGB and Bayer-coded representation of an image.
philpem@5 281 - Added functions CImg[List]<T>::min(), max(), mean(), variance(), get_stats(), and contains()
philpem@5 282 to deal easily with image statistics (class CImgStats is now obsolete and has been moved to
philpem@5 283 plugin 'plugins/deprecated.h').
philpem@5 284 - Added versions of 'CImg[List]<T>::get_*()' as external functions,
philpem@5 285 so writting 'res=cos(img)*5;' is valid.
philpem@5 286 - Added postfix versions 'CImg[List]<T>::operator++(int)' and 'CImg[List]<T>::operator--(int)'.
philpem@5 287 - Added function 'CImg<T>::djikstra()' that can compute a minimal path in a graph.
philpem@5 288 - Added new constructor able to construct a new image from the dimensions of another one.
philpem@5 289
philpem@5 290 * Optimizations / Modifications :
philpem@5 291 - Recoded 'CImg<T>::save_magick()' to improve performances when saving images using Magick++ API.
philpem@5 292 - Recoded 'CImg<T>::draw_fill()' to avoid crashes on large (volumetric) images due to stack overflow.
philpem@5 293 Also added parameters to choose between 4 or 8 connexity for 2D images.
philpem@5 294 - Added simple point representation in 'CImg<T>::draw_graph()'.
philpem@5 295 -> Note that the gtype variable values have been redefined as well !!! <-
philpem@5 296 - Added parameter 'CImg<T>::quantize()' that allows possible value renormalization.
philpem@5 297 - Improved documentation.
philpem@5 298 - Drawing functions accept now templated color pointer, as well as templated image containing color data.
philpem@5 299 - Recoded Deriche filter. More fast and precise, some cases were buggy.
philpem@5 300 - Removed class CImgStats (moved to plugin 'plugins/deprecated.h').
philpem@5 301 - Removed unuseful image copies in some functions.
philpem@5 302 - Cleaning the code.
philpem@5 303
philpem@5 304 * Bug corrections :
philpem@5 305 - Corrected bug in 'CImg<T>::pseudoinverse()' concerning pseudo-inversion of non-inversible matrices.
philpem@5 306 - Corrected return value in 'CImg<T>::get_RGBtoHSV()'.
philpem@5 307 - Corrected value range bug in 'CImg<T>::quantize()'.
philpem@5 308 - And other small bug corrections...
philpem@5 309
philpem@5 310 *-----------------------------
philpem@5 311 *-----------------------------
philpem@5 312 * Changes from 1.2.3 to 1.2.4
philpem@5 313 *-----------------------------
philpem@5 314 *-----------------------------
philpem@5 315
philpem@5 316 * New features :
philpem@5 317 - Added macro 'cimg_for_lineXY(x,y,x0,y0,x1,y1)' that loops over an image segment (x0,y0)-(x1,y1).
philpem@5 318 - Added function 'CImg<T>::draw_polygon()' that draws a filled polygon of any shape in the instance image.
philpem@5 319 - Added macros 'cimg_load_plugin', 'cimg_save_plugin', 'cimglist_load_plugin' and 'cimglist_save_plugin'
philpem@5 320 allowing to easily add file support for your own data format.
philpem@5 321 - Added plugin 'plugins/add_fileformat.h' to show how to use these new macros to register a new
philpem@5 322 image format in CImg.
philpem@5 323 - Added version of 'CImg[List]<T>::{load,save}_cimg()' that is able to read/write only sub-images of
philpem@5 324 data stored in a (big) .cimg file.
philpem@5 325 - Added an online chat on the CImg website, so that users can interact freely.
philpem@5 326
philpem@5 327 * Optimizations / Modifications :
philpem@5 328 - Added functions 'CImg[List]<T>::save_empty_cimg()' that can be used to work with very large images.
philpem@5 329 You can now create first an empty (big) image, then load/save sub-images into this big .cimg file,
philpem@5 330 without needing much memory.
philpem@5 331 - Slightly modified the header of .cimg files, so little/big endian info is stored.
philpem@5 332 - Reorganized some 'CImg[List]<T>::load_*()' functions, trying to avoid unnecessary memory usage.
philpem@5 333 - Recoded versions of CImg<T>::draw_triangle() that now use the Bresenham's algorithm for interpolation
philpem@5 334 (more precise, while using only integer calculus).
philpem@5 335 - Added versions of 'CImg<T>::draw_triangle()' and 'CImg<T>::draw_line()' that are able to map textures
philpem@5 336 while correctly handling the perspective correction, so that 3D mapped triangles look correct now.
philpem@5 337
philpem@5 338 * Bug corrections :
philpem@5 339 - Corrected a small bug in get_coordinates() : channels of hyperspectral images with (dim>3) where
philpem@5 340 subsampled instead of cropped for image visualization.
philpem@5 341 - And many small bug corrections...
philpem@5 342
philpem@5 343 *-----------------------------
philpem@5 344 *-----------------------------
philpem@5 345 * Changes from 1.2.2 to 1.2.3
philpem@5 346 *-----------------------------
philpem@5 347 *-----------------------------
philpem@5 348
philpem@5 349 * New features :
philpem@5 350 - Added file 'example/tron.cpp', implementing a very simple version of the
philpem@5 351 famous 'Tron' game (2 players).
philpem@5 352 - Added constructor that create a CImg<T> from the content of a CImgDisplay window.
philpem@5 353 - Added support of the 'Board' library in plugin 'plugins/toolbox3d.h', allowing
philpem@5 354 the saving of 3D objects snapshots in SVG, EPS or FIG vector-graphics formats.
philpem@5 355 - Added function 'CImgList<T>::[get]_split()' that can split all image of an
philpem@5 356 an image list into a specified axis.
philpem@5 357 - Added sphere primitive in 'CImg<T>::draw_object3d()'.
philpem@5 358 - Added function 'CImg<T>::ellipsoid()' in 'plugins/toolbox3d.h'.
philpem@5 359 - Added useful new constructors 'CImg<T>()' and 'CImgList<T>()' with variable
philpem@5 360 numbers of parameters that can define images or image lists initialized with
philpem@5 361 user-specified values. Example :
philpem@5 362 CImg<float> img(3,2,1,1, 1,2,3, 4,5,6); defines image [ 1,2,3; 4,5,6 ].
philpem@5 363 CImgList<unsigned char> list(3,1,3,1,1, 1,0,0, 0,1,0, 0,0,1); defines
philpem@5 364 list of three vectors { [1;0;0], [0;1;0], [0;0;1] }.
philpem@5 365 - Added poly-bezier curve drawing, with 'CImg<T>::draw_spline()' overload.
philpem@5 366 - Added file 'examples/jawbreaker.cpp', implementing a very funny games featuring
philpem@5 367 small colored balls.
philpem@5 368 - Added demo '3D Reflection' in 'examples/CImg_test.cpp' showing some tricky uses
philpem@5 369 with the 3D capabilities of CImg.
philpem@5 370 - Added 'CImg<T>::draw_spline()' for drawing 2D cubic Bezier curves.
philpem@5 371 - Added plugin 'plugins/jpeg_buffer.h', allowing to read/write directly image data
philpem@5 372 from/to jpeg-coded memory buffers (Many thanks to Paolo Prete who made it possible !).
philpem@5 373 - Added optional support of the LAPACK library for matrix computation.
philpem@5 374 Define macro 'cimg_use_lapack' and link your code with LAPACK to enable it
philpem@5 375 (LAPACK routines are slightly faster routines than native CImg ones).
philpem@5 376 - Added function 'CImg<T>::get_constrast_LUT8()' function which returns a 256 colors
philpem@5 377 palette that has nice properties of being well contrasted when color indices are
philpem@5 378 close to eachothers.
philpem@5 379 - Added function 'CImg<T>::get_rainbow_LUT8()' that returns a rainbow-type palette.
philpem@5 380 - Added shortcuts CTRL+PAGE[UP,DOWN] in 'CImg<T>::display_object3d()' to brighten or
philpem@5 381 darken the 3D object.
philpem@5 382
philpem@5 383 * Optimizations / Modifications :
philpem@5 384 - In 'CImg<T>::HSVtoRGB()' and 'CImg<T>::RGBtoHSV()', the H components is now expressed in degree.
philpem@5 385 - Improved multi-key testing with CImgDisplay.
philpem@5 386 - Added and modified some 'operator<<()' and 'operator>>()' in 'CImg<T>' and 'CImgList<T>'.
philpem@5 387 - Renamed 'plugins/primitives3d.h' to 'plugins/toolbox3d.h', and added a new example
philpem@5 388 'examples/toolbox3d.cpp' that shows how to use it.
philpem@5 389 - Renamed 'plugins/alias.h' to 'plugins/deprecated.h'.
philpem@5 390 - Moved function 'CImg<T>::resize_object3d()' to 'plugins/toolbox3d.h'.
philpem@5 391 - Simplified 'CImgList<T>::insert()' procedures, and removed functions 'CImgList<T>::insert_shared()'.
philpem@5 392 - Added functions parameters for almost all drawing functions, allowing the correct use of
philpem@5 393 patterns in line drawing (beware, some functions signatures have been slightly modified).
philpem@5 394 - Renamed 'CImg<T>::feature_selection()' as 'CImg<T>::get_coordinates()'
philpem@5 395 (for better coherence with overall function names). Include 'plugins/deprecated.h' for backward
philpem@5 396 compatibility.
philpem@5 397 - Optimized function 'CImg<T>::draw_line()'.
philpem@5 398 - Recoded function 'CImg<T>::draw_circle()', uses now the more precise Bresenham's circle
philpem@5 399 algorithm.
philpem@5 400 - Improved function 'CImg<T>::sphere()', in plugin 'toolbox3d.h', reducing drastically
philpem@5 401 the number of created points in the 3D mesh.
philpem@5 402
philpem@5 403 * Bug corrections :
philpem@5 404 - Corrected some small bugs in CImg.h to allow the compilation with the Intel C++ Compiler (icc & icl).
philpem@5 405 - Corrected bug in copy constructor of CImgList<> that didn't make shared copy of images.
philpem@5 406 - Fixed bug in 'CImg<T>::symmetric_eigen()' : some negative eigenvalues where miscalculated when
philpem@5 407 their absolute values was also an eigenvalue of the considered matrix.
philpem@5 408 - And many small bug corrections...
philpem@5 409
philpem@5 410 *-----------------------------
philpem@5 411 *-----------------------------
philpem@5 412 * Changes from 1.2.1 to 1.2.2
philpem@5 413 *-----------------------------
philpem@5 414 *-----------------------------
philpem@5 415
philpem@5 416 * New features :
philpem@5 417 - Added 'CImg<T>::distance_function()' that can compute distance function to the 0-isophote.
philpem@5 418 - Added curve editor example in 'examples/curve_editor.cpp'.
philpem@5 419
philpem@5 420 * Bug corrections :
philpem@5 421 - Corrected small bug when trying to found pathname under Windows.
philpem@5 422 - Corrected bug when using XSHM extension on Mac OS X.
philpem@5 423 - Corrected/Improved platforms detection by testing the right predefined BSD macros + extra architectures
philpem@5 424 (Thanks to Marc Espie).
philpem@5 425 - And many small bug corrections...
philpem@5 426
philpem@5 427 *-----------------------------
philpem@5 428 *-----------------------------
philpem@5 429 * Changes from 1.2.0 to 1.2.1
philpem@5 430 *-----------------------------
philpem@5 431 *-----------------------------
philpem@5 432
philpem@5 433 * New features :
philpem@5 434 - Added macro 'cimg_for_spiralXY', allowing to loop over an image using a spiral-shaped trajectory.
philpem@5 435 - Added shortcut 'CTRL+O' to save object as .off file in 'CImg<T>::display_object3d()'.
philpem@5 436 - Added operator bool() in CImg, CImgList, CImgStats, CImgDisplay to get
philpem@5 437 more concise code when testing if an object is empty or not.
philpem@5 438 - Added empty state for CImgDisplay, can be tested with 'CImgDisplay::is_empty()'.
philpem@5 439 - Added '.off' file support in 'inrcast'.
philpem@5 440
philpem@5 441 * Optimizations / Modifications :
philpem@5 442 - Removed all the obsolete #define to ensure compatibility with really older versions of CImg.
philpem@5 443 You can now include the file 'plugins/alias.h' to get these #define back.
philpem@5 444 - Added functionalities and debugged 'CImg<T>::save_off()' and 'CImg<T>::load_off()'.
philpem@5 445
philpem@5 446 * Bug corrections :
philpem@5 447 - Corrected illumination bug in 'CImg<T>::draw_object3d()'.
philpem@5 448 - Corrected bug in 'CImg<T>::crop()' family functions.
philpem@5 449 - Corrected small bugs in 'CImgList<T>' (insertion functions)
philpem@5 450 - Corrected 'CImg<T>::load_tiff()' function.
philpem@5 451 - And many small bug corrections...
philpem@5 452
philpem@5 453 *-----------------------------
philpem@5 454 *-----------------------------
philpem@5 455 * Changes from 1.1.9 to 1.2.0
philpem@5 456 *-----------------------------
philpem@5 457 *-----------------------------
philpem@5 458
philpem@5 459 * New features :
philpem@5 460 - Added function 'CImg<T>::draw_grid()' that draws a grid on the instance image
philpem@5 461 (useful when combined with CImg<T>::draw_axis and CImg<T>::draw_graph).
philpem@5 462 - Added multi-threading support in GREYCstoration plugin and command line version.
philpem@5 463 - Added support for GraphicsMagick conversion tools (http://www.graphicsmagick.org).
philpem@5 464 - Added plugin 'integral_line.h' that define functions to track integral lines in images.
philpem@5 465 - Added CTRL+key combinations in 'CImg<T>::display_object3d' and 'CImg<T>::feature_selection()' :
philpem@5 466 - CTRL+S : Save snapshot.
philpem@5 467 - CTRL+D : Double window resolution.
philpem@5 468 - CTRL+C : Divide window resolution.
philpem@5 469 - CTRL+F : Fullscreen mode.
philpem@5 470 - Added new normalization mode=3, now set by default when using CImgDisplay. Try to adapt
philpem@5 471 the display normalization to the image type.
philpem@5 472 - Added new example 'edge_explorer.cpp' (thanks to Orges Leka).
philpem@5 473 - Added new example 'greycstoration4gimp.cpp' (which is a GREYCstoration plugin for the Gimp, thanks
philpem@5 474 to Grzegorz Szwoch)
philpem@5 475 - Added functions 'CImg<T>::[get]_round()' that round values of an image.
philpem@5 476 - Added function 'CImg<T>::draw_line()' able to draw joined set of segments.
philpem@5 477 - Added interpolation_type=-1 for 'CImg<T>::resize()' corresponding to raw memory resizing, without
philpem@5 478 interpolation.
philpem@5 479 - Added function 'CImg<T>::permute_axes()' that can be used to swap order of image axes
philpem@5 480 (useful for converting ...RRRRRRGGGGGBBBBB... to ...RGBRGBRGBRGB....)
philpem@5 481 - Added support for NIFTI files (extension '.nii') added in 'CImg<T>::load_analyze()'.
philpem@5 482 - Added function 'CImg<T>::[get_]displacement_field()' that can estimate displacement field between two images.
philpem@5 483 - Added default constructor for the 'CImgDisplay' class, which creates a window initially in the 'closed' state.
philpem@5 484 - Added directory 'compilation/unix_debian_package' for easy construction of .deb package for CImg.
philpem@5 485 - Added new search parth to find 'medcon' on Windows.
philpem@5 486 - Added Debian package configuration files to generate .deb file from the CImg directory
philpem@5 487 (a .deb file is now available from the CImg website).
philpem@5 488
philpem@5 489 * Optimizations / Modifications :
philpem@5 490 - Renamed all '*_convert' functions to '*_imagemagick'.
philpem@5 491 - Fonction CImg<T>::draw_object3d() has been slightly optimized (light computation for
philpem@5 492 outside primitives is not done anymore).
philpem@5 493 - Small changes in cimg:: traits.
philpem@5 494 - Removed 'precision' arguments in 'CImg<T>::draw_axis()'.
philpem@5 495 - The use of non in-place arithmetical operators is now possible in plug-ins.
philpem@5 496 - Optimized the search of different pathes on Windows, thanks to Martin Petricek.
philpem@5 497 - Cleaned some portions of the code.
philpem@5 498
philpem@5 499 * Bug corrections :
philpem@5 500 - CImg<T>::save_off() has been debugged.
philpem@5 501 - Versions of 'CImg<T>::load_tiff()' and 'CImg<T>::save_tiff()' that use libtiff has been
philpem@5 502 debugged and improved.
philpem@5 503 - fread() and fwrite() has been recoded to handle the Windows file size limit of 64Mb over network
philpem@5 504 (this is a Windows bug !).
philpem@5 505 - GREYCstoration plugin has been modified to better deal with 16 and 32bits images.
philpem@5 506 - And many other small bug corrections....
philpem@5 507
philpem@5 508 *-----------------------------
philpem@5 509 *-----------------------------
philpem@5 510 * Changes from 1.1.8 to 1.1.9
philpem@5 511 *-----------------------------
philpem@5 512 *-----------------------------
philpem@5 513
philpem@5 514 * New features :
philpem@5 515 - Added Rice noise distribution in 'CImg<T>::noise()' (thanks to H.E Assemlal).
philpem@5 516 - Added functions 'CImg<T>::sharpen()' and 'CImg<T>::get_sharpen()' that can enhance contrast in images,
philpem@5 517 using nonlinear 2D/3D multi-valued shock filters.
philpem@5 518 - Added function 'CImgStats::is_empty()' to check is a stat object has been initialized or not.
philpem@5 519 - Added function 'CImg<T>::contains()' and 'CImgList<T>::contains()' that can test if a pixel is
philpem@5 520 present in an image.
philpem@5 521 - Added new demo 'CImg-breakout' in 'examples/CImg_demo.cpp' (Arkanoid-style game in 64 lines of code!).
philpem@5 522 - Functions 'CImgDisplay::hide_mouse()' and 'CImgDisplay::show_mouse()' have been added, allowing to
philpem@5 523 hide/show the cursor when it is over a display window.
philpem@5 524 - Functions 'CImg<T>::[get_]structure_tensorXY[Z]()' have been added, allowing to compute the 2D or
philpem@5 525 3D structure tensor field from an image.
philpem@5 526 - Function 'CImgDisplay::set_mouse()' is now working on Windows.
philpem@5 527 - Added load/save functions to deal directly with std::FILE structures.
philpem@5 528 - Added members 'CImgDisplay::keys[256]' and 'CImgDisplay::buttons[256]' allowing to get the latest 256 keys
philpem@5 529 or mouse buttons modifications done on the display window.
philpem@5 530 - Added function 'CImgDisplay::is_typed()' to test if a certain combination of key has been typed
philpem@5 531 on the display window.
philpem@5 532 - Added keyboard shortcut 'CTRL+S' in 'CImg<T>::display_object3d()' to be able to save snapshot of current 3d view.
philpem@5 533
philpem@5 534 * Optimizations / Modifications :
philpem@5 535 - Recoded the greycstoration plug-in as the file 'plugins/greycstoration.h'. The command line version
philpem@5 536 'examples/greycstoration.cpp' has been greatly improved, including tiled-mode and less memory consumption.
philpem@5 537 The use of GREYCstoration is now more easy, the code is more factorized.
philpem@5 538 - File extension '.txt' is now considered as '.dlm' (ascii file).
philpem@5 539
philpem@5 540 * Bug corrections :
philpem@5 541 - Plugin 'plugins/cimgmatlab.h' has been corrected.
philpem@5 542
philpem@5 543 *-----------------------------
philpem@5 544 *-----------------------------
philpem@5 545 * Changes from 1.1.7 to 1.1.8
philpem@5 546 *-----------------------------
philpem@5 547 *-----------------------------
philpem@5 548
philpem@5 549 * New features :
philpem@5 550 - Added conditional use of the FFTW3 library (http://www.fftw.org) allowing more flexibility and speed
philpem@5 551 on DFT computation, when used.
philpem@5 552 - Added new macro 'cimg_help()', displays arbitrary user-defined messages when program is invoked
philpem@5 553 with the option '-h' or '--help'.
philpem@5 554 - Added new macro 'cimglist_apply()' allowing to apply a single function to all members of a list :
philpem@5 555 Ex: cimglist_apply(list,blur)(3.0f);
philpem@5 556 - Added functions 'CImg<T>::resize_object3d()', 'CImgList<T>::resize_object3d()',
philpem@5 557 'CImg<T>::get_resize_object3d()' and 'CImgList<T>::get_resize_object3d()' to ease resizing and
philpem@5 558 centering 3d objects.
philpem@5 559 - Added function 'CImgDisplay::set_mouse()' to set the mouse pointer coordinates (X11 only).
philpem@5 560 - Added functions 'CImg<T>::atan()', 'CImg<T>::acos()', 'CImg<T>::asin()' and their get_* counterparts.
philpem@5 561
philpem@5 562 * Optimizations / Modifications :
philpem@5 563 - 'cimg_debug' has new value signification. Can now choose between displaying error message on the console
philpem@5 564 or on modal windows, even when 'cimg_display_type' is not 0.
philpem@5 565 - Updated CImg presentation slides in 'documentation/slides_cimg.pdf', more complete now.
philpem@5 566 - Added new directories in path search for 'convert' and 'medcon' and 'temporary path'.
philpem@5 567 'convert' or 'medcon' found in the current directory './' now override the default ones.
philpem@5 568 - Added safer support for Windows 64bits.
philpem@5 569 - Improved version of 'cimg::info()' for debugging facilities. Now displays almost every
philpem@5 570 important library variables and parameters.
philpem@5 571 - Static version of CImg<T>::sequence() now return a column vector instead of a line.
philpem@5 572 - Slightly changed the tracking algorithm and few other things in 'examples/dtmri_view.cpp',
philpem@5 573 allowing more precision in the fiber computation.
philpem@5 574 - Modified the 'CImg<T>::feature_selection()' function : replaced the moving hatch by a static
philpem@5 575 one, less fun but also less time consuming. One small selection bug for 3D volumes has been
philpem@5 576 also corrected.
philpem@5 577 - Corrected line routine for 64bits architectures.
philpem@5 578 - Replaced 'CImg<T>::scroll()' by 'CImg<T>::translate()'.
philpem@5 579 - Replaced all 'cimg_map' by more coherent names based on 'cimg_for_*'. Same for 'cimglist_map'.
philpem@5 580 Compatibility with previous versions of CImg is ensured if 'cimg_strict' is not defined.
philpem@5 581 - Recoded functions to retrieve parts of the images : get_channel(), get_slice(), ...
philpem@5 582 - Improved the cimg::system() function.
philpem@5 583 - Added some tests and display extra warnings when saving images with wrong formats.
philpem@5 584
philpem@5 585 * Bug corrections :
philpem@5 586 - Corrected small bug in 'CImg<>::blur_anisotropic()', 'examples/greycstoration.cpp' and 'plugins/greycstoration4integration.h'.
philpem@5 587 - And lot of minor bug corrections and optimizations .....
philpem@5 588
philpem@5 589 *-----------------------------
philpem@5 590 *-----------------------------
philpem@5 591 * Changes from 1.1.6 to 1.1.7
philpem@5 592 *-----------------------------
philpem@5 593 *-----------------------------
philpem@5 594
philpem@5 595 * New features :
philpem@5 596 - Added 'operator<<()' and 'operator>>()' for bit shift operations on all images pixels.
philpem@5 597 - Added most of mathematical operators in the 'CImgList' class.
philpem@5 598 - Added new demo 'Image Waves' in 'examples/CImg_demo.cpp'.
philpem@5 599 - Added mouse wheel support on Windows (incomplete!)
philpem@5 600
philpem@5 601 * Optimizations / Modifications :
philpem@5 602 - Renamed class 'CImgl' into 'CImgList', also renamed macro 'cimgl_map' to 'cimglist_map'.
philpem@5 603 Backward compatibility is assured in 1.1.7 version, but think about replacing the old names
philpem@5 604 by the new ones for future CImg versions.
philpem@5 605 - Removed 'operator<<()' which appended an image to another one
philpem@5 606 - Recoded lot of non in-place mathematical operators to avoid numerical truncations.
philpem@5 607 It may have a great influence on your code. For instance writting '0.5+img' will result in a CImg<double>
philpem@5 608 image, even if 'img' was a CImg<float>.
philpem@5 609 - Recoded most of 'CImg<T>::get_resize()' function : linear interpolation performs now really faster, and
philpem@5 610 an additional parameter allows to select between different conditions for border values.
philpem@5 611 - Recoded 'CImg<T>::draw_line()' so that it now uses a classical Bresenham algorithm, avoiding rounding errors.
philpem@5 612 - Renamed 'CImg<T>::draw_axe' as 'CImg<T>::draw_axis'.
philpem@5 613
philpem@5 614 * Bug corrections :
philpem@5 615 - Corrected some functions that did not performed correctly on shared images.
philpem@5 616 - Corrected small bug in 'plugins/primitives3d.h' in function 'CImg<T>::sphere()'.
philpem@5 617 - Corrected 'CImg<T>::feature_selection()' when displaying 'CImg<bool>' images.
philpem@5 618 - Corrected 'CImg<T>::load_cimg()' : is now able to load bool images.
philpem@5 619 - And lot of minor bug corrections and optimizations .....
philpem@5 620
philpem@5 621 *-----------------------------
philpem@5 622 *-----------------------------
philpem@5 623 * Changes from 1.1.5 to 1.1.6
philpem@5 624 *-----------------------------
philpem@5 625 *-----------------------------
philpem@5 626
philpem@5 627 * New features :
philpem@5 628 - Added DTMRI volumetric file viewer, in 'examples/dtmri_view.cpp'.
philpem@5 629 - Added 3D sprite display support in 'CImg<T>::draw_object3d()'.
philpem@5 630
philpem@5 631 * Optimizations / Modifications :
philpem@5 632 - Rewritten a lot of constructor/assignments functions for CImg<T> and CImgl<T>.
philpem@5 633 Removed shared capabilities of CImgl<T>, but improved these ones for CImg<T>.
philpem@5 634
philpem@5 635 * Bug corrections :
philpem@5 636 - And lot of minor bug corrections and optimizations .....
philpem@5 637
philpem@5 638 *-----------------------------
philpem@5 639 *-----------------------------
philpem@5 640 * Changes from 1.1.4 to 1.1.5
philpem@5 641 *-----------------------------
philpem@5 642 *-----------------------------
philpem@5 643
philpem@5 644 * New features :
philpem@5 645 - Added plugin 'CImg/primitives3d.h', adding functions that can generate
philpem@5 646 basic 3D triangulated primitives.
philpem@5 647 - Added Poisson noise capability in CImg<T>::noise() (This patch has been proposed by Jerome Boulanger)
philpem@5 648 - Added wheel mouse support in 'CImgDisplay', now used in 'CImg<>::feature_selection()' to go through slices of
philpem@5 649 3D volumes (unfortunately for X11 systems only).
philpem@5 650 - Added function 'CImgDisplay::toggle_fullscreen()' to allow easy and dynamic fullscreen switching of a display.
philpem@5 651 - Added screen resolution switching capabilities when using the Xrandr extension, under X11 (#define cimg_use_xrandr).
philpem@5 652 - Added support for ImageMagick++ built-in library (parts of the patch proposed by Christoph Hormann).
philpem@5 653 - And lot of small functions to ease the life...
philpem@5 654
philpem@5 655 * Optimizations / Modifications :
philpem@5 656 - CeCiLL-C license now applies for the file 'CImg.h'. This license (close to the LGPL one) is more adapted
philpem@5 657 for library components as CImg. The examples stay in previous CeCiLL license (close to the GPL one).
philpem@5 658 - Recoded 'CImg<T>::draw_axe?()' (where ? can be 'X','Y' or 'XY') so that it can now be used to draw non-linear values along axes
philpem@5 659 (for instance logarithmic-varying labels).
philpem@5 660 - Attribute 'force' have been removed in 'CImgDisplay::resize()'.
philpem@5 661 - Recoded most constructors and assign functions in CImg<T> and CImgl<T>.
philpem@5 662 - Recoded most of the CImgDisplay class to allow more flexibility and refreshing speed.
philpem@5 663 - Renamed 'CImgDisplay::title()' to 'CImgDisplay::set_title()'. 'CImgDisplay::title' is now a class variable
philpem@5 664 that stores the current title of the display window.
philpem@5 665 - 'CImgDisplay::closed', 'CImgDisplay::resized', 'CImgDisplay::fullscreen' and 'CImgDisplay::moved' have been
philpem@5 666 renamed to 'CImgDisplay::is_closed', 'CImgDisplay::is_resized', 'CImgDisplay::is_fullscreen' and
philpem@5 667 'CImgDisplay::is_moved', for more coherent variable names.
philpem@5 668 - 'CImg<T>::display_object3d()' : can now specify an input pose matrix, as well as get the output pose matrix,
philpem@5 669 after the user rotated the object. Also, this function has been optimized.
philpem@5 670
philpem@5 671 * Bug corrections :
philpem@5 672 - Corrected sorting bug in 'CImg<T>::symmetric_eigen()' and 'CImg<T>::SVD()'
philpem@5 673 - When using shared memory images, some 'CImg<T>::get_*()' methods returned a shared memory image too.
philpem@5 674 - And lot of minor bug corrections and optimizations .....
philpem@5 675
philpem@5 676 *-----------------------------
philpem@5 677 *-----------------------------
philpem@5 678 * Changes from 1.1.3 to 1.1.4
philpem@5 679 *-----------------------------
philpem@5 680 *-----------------------------
philpem@5 681
philpem@5 682 * New features :
philpem@5 683 - Added fullscreen mode support on X11-based systems.
philpem@5 684 - Added CImg<>::save_dicom(), allowing to save DICOM files, via XMedcon.
philpem@5 685 - Added phong-like rendering capabilities in 'CImg<T>::draw_triangle()' and 'CImg<T>::draw_object3d()'.
philpem@5 686 - Added a directory 'plugins/' that contains some useful CImg plugins, developed by third parties.
philpem@5 687 - Added bicubic interpolation option in functions 'CImg<T>::get_rotate()'
philpem@5 688 - Added new example 'Fireworks' in 'examples/CImg_demo.cpp'.
philpem@5 689 - Added new fonts with increasing sizes that can be used in 'CImg<T>::draw_text()'.
philpem@5 690 Also simplified function 'CImg<T>::get_font()', and added size parameter in 'CImg<T>::draw_text()'.
philpem@5 691
philpem@5 692 * Optimizations / Modifications :
philpem@5 693 - Optimized 'CImg<T>::get_resize()'.
philpem@5 694 - Allows the use of the MIT-XSHM extension for X11-based display, allowing to speed up CImgDisplay rendering
philpem@5 695 (roughly a factor of 3 when using this extension).
philpem@5 696 - Optimized CImgDisplay::render() for X11-based systems. Image display is now faster (roughly a factor of 2.5).
philpem@5 697 - Modified CImg<>::display_object3d() : keyboard is now not handled, added translation using 3rd mouse button.
philpem@5 698 Added small axes at the bottom left to see object orientation.
philpem@5 699 - Removed some unuseful 'const' keywords in some function return values, removing warnings
philpem@5 700 when compiling with icc or icl.
philpem@5 701 - Renamed 'CImg<T>::RGBtoYCbCr8()' to 'CImg<T>::RGBtoYCbCr()' (and derived functions).
philpem@5 702 - Gathered 'CImg<T>::dirichlet_pix?d()' and 'CImg<T>::neumann_pix?d()' in a single function 'CImg<T>::pix?d()'.
philpem@5 703 - Renamed 'CImg_test.cpp' to 'CImg_demo.cpp'
philpem@5 704
philpem@5 705 * Bug corrections :
philpem@5 706 - Corrected bug with X11 displays : sometimes, black images were displayed, needing an explicit refresh.
philpem@5 707 - Corrected bug with X11 displays related to ClientMessage. Windows are not closed when other applications are opened.
philpem@5 708 - Corrected 'CImgl<T>::remove()' : Wrong memory deallocation could happen sometimes.
philpem@5 709 - And lot of minor bug corrections and optimizations .....
philpem@5 710
philpem@5 711 *-----------------------------
philpem@5 712 *-----------------------------
philpem@5 713 * Changes from 1.1.2 to 1.1.3
philpem@5 714 *-----------------------------
philpem@5 715 *-----------------------------
philpem@5 716
philpem@5 717 * New features :
philpem@5 718 - Added a new example source file 'examples/image_surface.cpp', that renders an image as a surface in a 3D space.
philpem@5 719 - Added a new example source file 'examples/mcf_levelsets3D.cpp', that performs Mean Curvature Flow of a 2D surface, using level sets.
philpem@5 720 - Added a version of 'CImg<T>::draw_triangle()' that can draw Gouraud-shaded triangles (flat and textured versions).
philpem@5 721 - Added 'CImg<T>::get_rotation_matrix()' that returns a 3x3 rotation matrix from a quaternion or a rotation vector.
philpem@5 722 - Added 'CImg<T>::draw_object3d()' that can draw a colored/textured 3d object on images.
philpem@5 723 - Added 'CImgDisplay::display_object3d()' and 'CImg<T>::display_object3d()' which run a high-level interface that
philpem@5 724 can view a user-defined 3d object.
philpem@5 725 - Added two 3D rendering examples in 'examples/CImg_test.cpp', that shows how to use 3D rendering capabilities of CImg in few lines.
philpem@5 726 - Added 'CImg<T>::marching_cubes()' and 'CImg<T>::marching_squares' that can be used to triangularize an implicit 2D or 3D
philpem@5 727 curve or surface from an image or a function.
philpem@5 728 - Added 'CImg<T>::get_load_off()' and 'CImg<T>::save_off()' that manages OFF files
philpem@5 729 (files describing 3D object, GeomView format, see 'http://www.geomview.org/').
philpem@5 730
philpem@5 731 * Optimizations / Modifications :
philpem@5 732 - Removed the 'multiplexed' variable in one of the CImg constructor. This feature as not generic enough to be integrated
philpem@5 733 in a constructor, and is so simple to code (one line).. This has been replaced by the new 'shared' capabilities of CImg.
philpem@5 734 - Added a 'shared' variable in CImg<T> and CImgl<T>. This allows to completely remove CImgSubset<T> and CImglSubset<T>, and
philpem@5 735 allows more flexibility for using shared memory. A lot of functions relative to shared-memory images have been added also.
philpem@5 736 Please look closely to the online reference.
philpem@5 737 - Added a fast approximation method in 'examples/greycstoration.cpp' (set by default) allowing to speed up the
philpem@5 738 restoration process almost by a factor x3.
philpem@5 739 - Recoded 'CImg<T>::get_dilate()' and 'CImg<T>::get_erode()' : it is now possible to specify a structuring element.
philpem@5 740 - Due to high difficulty in maintaing all project files in the 'compilation/' directory, I removed most of them except one
philpem@5 741 template file for each different C++ IDE. Just replace the default source file 'CImg_test.cpp' in the project file by the one
philpem@5 742 you want, to compile you desired example.
philpem@5 743 - Renamed 'CImg<T>::get_2dprojections()' to 'CImg<T>::get_projections2d()'.
philpem@5 744 - Removed 'examples/render3d.cpp'. As CImg has now built-in functions for 3D rendering, this example was obsolete.
philpem@5 745 Look at the new example appearing in 'examples/CImg_test.cpp' to see how to do easy 3D rendering with CImg.
philpem@5 746
philpem@5 747 * Bug corrections :
philpem@5 748 - Corrected 'CImg<T>::cubic_pix1d()' and 'CImg<T>::cubic_pix2d()', used for cubic and bicubic interpolations.
philpem@5 749 - Corrected 'cimg_map2x2()' and 'cimg_map4x4()' to avoid warning when compiling with g++.
philpem@5 750 - Added a simple trick to ease the use of libjpeg and libpng on Windows (thanks to bugzhao).
philpem@5 751 - Corrected 'CImg<T>::load_jpeg()' and 'CImg<T>::save_jpeg()' to handle all possible color spaces used in JPEG files.
philpem@5 752 - Corrected 'CImg<T>::get_split()' to avoid bug with very large images.
philpem@5 753 - Corrected 'CImg<T>::load_dicom()' and 'cimg::medcon_path()' to ease the loading of medcon files on Windows.
philpem@5 754 - And lot of minor bug corrections....
philpem@5 755
philpem@5 756 *-----------------------------
philpem@5 757 *-----------------------------
philpem@5 758 * Changes from 1.1.1 to 1.1.2
philpem@5 759 *-----------------------------
philpem@5 760 *-----------------------------
philpem@5 761
philpem@5 762 * Bug corrections :
philpem@5 763 - Bug corrected in 'CImg<T>::load_ppm()' and 'CImg<T>::save_ppm()' : 16 bits PPM images were not correctly stored.
philpem@5 764 - (Stupid) bug corrected in 'CImg<T>::get_sort()' : Return value was a reference to a temporary object.
philpem@5 765 - Bug corrected in 'CImg<T>::resize_halfXY()' that caused a possible segmentation fault.
philpem@5 766 - Bug corrected in 'CImg<T>::move()' : Moving an hidden window (on X11) is now working.
philpem@5 767 - Handling pixel access to const images : writing pixel values in const images is now forbidden.
philpem@5 768 - 'CImg<T>::det()' : Determinant of general matrices can now be computed.
philpem@5 769 - 'CImgDisplay' : Added some changes in Microsoft-specific function call to be able to compile with Visual Studio 2005. This compiler seems to be 'buggy', I had very strange behaviors at run-time with it (changing an 'int' to 'const int' declaration solves a 'problem' in CImg<>::draw_ellipse() that was present only with this compiler...)
philpem@5 770 - 'CImg<>::load_dlm()' : small bug corrected. Can now read DLM files with no CR at the last line.
philpem@5 771 - And other small corrections....
philpem@5 772
philpem@5 773 * Optimizations / Modifications :
philpem@5 774 - In 'CImg<T>::save_convert()', the temporary file is now saved in PNM format, instead of RGBA as before. This has been done
philpem@5 775 because of a strange bug in ImageMagick's convert, refusing to read some RGBA files.
philpem@5 776 - CImgDisplay::move() now shows automatically the display when it is in a closed state.
philpem@5 777 - Moved the trait cimg_library::largest<T,t> in cimg_library::cimg::largest<T,t>.
philpem@5 778 - Renamed 'CImg<T>::quicksort()' to 'CImg<T>::sort()'.
philpem@5 779 - Renamed 'CImg<T>::create()' and 'CImg<T>::copy()' to 'CImg<T>::assign()'.
philpem@5 780 - 'CImg<T>::inverse()' can now uses the LU matrix decomposition (or the SVD one as before).
philpem@5 781 - Optimized memory handling when playing with lists of images CImgl<>.
philpem@5 782 - Optimized some CImg<T> constructors.
philpem@5 783
philpem@5 784 * New features :
philpem@5 785 - Added a new demo : 'Blobs Editor' in CImg_test.cpp.
philpem@5 786 - Added types 'CImg<T>::iterator', 'CImg<T>::const_iterator', 'CImgl<T>::iterator' and 'CImgl<T>::const_iterator' to allow
philpem@5 787 the easy use of STL algorithms on CImg and CImgl structures.
philpem@5 788 - Added several functions that acts like in STL vectors and lists in CImg<T> and CImgl<T> :
philpem@5 789 CImg<T>::assign(), CImg<T>::clear(), CImg<T>::at(), CImg<T>::back(), CImg<T>::front(), CImg<T>::begin(), CImg<T>::end(),
philpem@5 790 CImgl<T>::assign(), CImgl<T>::clear(), CImgl<T>::at(), CImgl<T>::back(), CImgl<T>::front(),
philpem@5 791 CImgl<T>::begin(), CImgl<T>::end(), CImgl<T>::push_back(), CImgl<T>::push_front(), CImgl<T>::pop_back(), CImgl<T>::pop_front().
philpem@5 792 - Added 'CImg<T>::MSE()' and 'CImg<T>::PSNR()' that compute the MSE (Mean Squared Error) and PSNR
philpem@5 793 (Peak Signal to Noise Ratio) between two images.
philpem@5 794 - Added 'CImg<T>::solve()' and 'CImg<T>::get_solve()', allowing to solve linear systems.
philpem@5 795 - Added 'CImg<T>::pseudoinverse()' and 'CImg<T>::get_pseudoinverse()' allowing to compute the Moore-Penrose
philpem@5 796 matrix inverse (useful for computing solutions to the least-square problem).
philpem@5 797
philpem@5 798 *-----------------------------
philpem@5 799 *-----------------------------
philpem@5 800 * Changes from 1.1.0 to 1.1.1
philpem@5 801 *-----------------------------
philpem@5 802 *-----------------------------
philpem@5 803
philpem@5 804 * Bug corrections :
philpem@5 805 - in 'CImgl<T>::insert()' : Insertion at non-last position was bugged.
philpem@5 806 - in 'greycstoration.cpp' : Corrected some bugs in the algorithm and improved user interface.
philpem@5 807 - in 'CImg<T>::blur_anisotropic()' : Abusive vector normalization was done before. Now it is corrected.
philpem@5 808 - And many other bugs...
philpem@5 809
philpem@5 810 * Optimizations / Modifications :
philpem@5 811 - Removed macros 'cimg_test*()' and modified argument checking in most of the functions, so that trying to act
philpem@5 812 on an empty image does nothing instead of an error.
philpem@5 813 - Renamed all static methods CImg<T>::load*() into CImg<T>::get_load*(). This has been done to be coherent with
philpem@5 814 the naming convention of other CImg methods. Also, added new functions CImg<T>::load*() (non static) that corresponds
philpem@5 815 to in-place image loading.
philpem@5 816 - Renamed CImg RAW extension from .raw to .cimg. .raw files are not considered as real raw data without
philpem@5 817 header. New functions 'CImg<T>::load_get_raw()' and 'CImg<T>::save_raw()' have been added to load and save .raw files.
philpem@5 818 - In 'greycstoration.cpp' : improved algorithm and parameters. Also add improved visualization tool at the end
philpem@5 819 of the image regularization.
philpem@5 820 - Replaced some cimg:: static functions to inlined one, to prevent compiler bug on VS7.1, when trying
philpem@5 821 to link multiple CImg-based modules.
philpem@5 822 - Replaced parameter 'linear' to 'scheme' in 'CImg<T>::blur_anisotropic()', allowing the use of 2nd order
philpem@5 823 Runge-Kutta integration, instead of just nearest-neighbor or linear ones.
philpem@5 824
philpem@5 825 * New features :
philpem@5 826 - Introduced a trait 'cimg::largest' that allows to find the largest data type between two types. CImg functions
philpem@5 827 use it for instance to return a CImg<float>, when trying to compute the gradient of an CImg<unsigned char>.
philpem@5 828 It was not the case before, needing an explicit case, as in 'CImg<float>(img).get_gradientXY()'.
philpem@5 829 - Added 'CImg<T>::operator<<', 'CImgl<T>::operator<<' and 'CImgl<T>::operator>>' that allows to
philpem@5 830 insert images in list or append an image to another one.
philpem@5 831 - New project file for using with X-Code (on Mac OS X) has been added to the 'compilation/' directory.
philpem@5 832 Thanks to Werner Jainek who made it possible.
philpem@5 833
philpem@5 834 *-----------------------------
philpem@5 835 *-----------------------------
philpem@5 836 * Changes from 1.0.9 to 1.1.0
philpem@5 837 *-----------------------------
philpem@5 838 *-----------------------------
philpem@5 839
philpem@5 840 * Bug corrections :
philpem@5 841 - in 'CImg<T>::load_raw()' : possible buffer overflow corrected.
philpem@5 842 - in 'CImg<T>::load_dlm()' : the use of std::rewind() didn't work when reading the standart input. Function has been
philpem@5 843 recoded so it reads the file in one pass.
philpem@5 844 - Corrected 'CImg<T>::anisotropic_blur()'.
philpem@5 845 - Corrected 'CImg<T>::symeigen()' : corrected computation bugs.
philpem@5 846 - Corrected 'CImg<T>::get_resize()' : linear and bicubic interpolations were not correctly handled (minor).
philpem@5 847 - Corrected 'CImgDisplay' to avoid malloc/dealloc problem with newer versions of X11.
philpem@5 848 - Corrected 'CImgDisplay' to handle better thread termination under X11 (Unix and MacOSX).
philpem@5 849 - Corrected 'greycstoration.cpp' (small bug in inpainting and non-curvature scheme).
philpem@5 850
philpem@5 851 * Optimizations / Modifications :
philpem@5 852 - Updated documentation.
philpem@5 853 - Modified Makefile for direct compilation of executables under Linux (ex : make CImg_test).
philpem@5 854 - Modified Exceptions error messages for more simplicity and clarity.
philpem@5 855 - Removed parameter 'alpha' in 'CImg<T>::get_gradientXY()' and 'CImg<T>::get_gradientXYZ()'.
philpem@5 856 - Renamed 'CImg<T>::flip()' to 'CImg<T>::mirror()'.
philpem@5 857 - Renamed 'CImg<T>::get_3dplanes()' to 'CImg<T>::get_2dprojections()'.
philpem@5 858 - Renamed 'CImgROI<T>' to 'CImgSubset<T>'. Also removed functions 'CImg<T>::ref_*' and replaced it by
philpem@5 859 'CImg<T>::pointset()', 'CImg<T>::lineset', 'CImg<T>::planeset' and 'CImg<T>::channelset'.
philpem@5 860
philpem@5 861 * New features :
philpem@5 862 - Added 'CImg<T>::RGBtoLUT()' and 'CImg<T>::LUTtoRGB()' that convert an RGB image to an indexed image (using a palette).
philpem@5 863 - Added 8 bits display mode support in CImgDisplay.
philpem@5 864 - Added 'CImg<T>::RGBtoHSV()' and 'CImg<T>::HSVtoRGB()' that handle the conversion from and to HSV color space.
philpem@5 865 - Added 'CImg<T>::kth_smallest()' and 'CImg<T>::median()' that find respectively the kth smallest
philpem@5 866 element and the median of values in a CImg<T> instance.
philpem@5 867 - Added 'CImg<T>::blur_median()' and 'CImg<T>::get_blur_median()' that apply a median filter on an image.
philpem@5 868 - Added 'CImg<T>::load_parrec()' able to read PAR-REC (Philips) image file formats.
philpem@5 869 - Added 'CImgDisplay::title()' that can be used to change the display window title.
philpem@5 870 - Added 'CImg<T>::RGBtoYUV()' and 'CImg<T>::YUVtoRGB()' that convert between RGB and YUV color spaces.
philpem@5 871 - Added 'CImg<T>::RGBtoYCbCr8()' and 'CImg<T>::YCbCr8toRGB()' that convert between RGB and YCbCr color spaces (for unsigned char
philpem@5 872 pixels).
philpem@5 873 - Added 'CImg<T>::has_same*()' where * can be 'X','Y','Z','XY','XYZ','XYZV' to compare image dimensions.
philpem@5 874 - Added 'CImg<T>::is_empty()' that returns 'true' is the image is empty.
philpem@5 875 - Added 'CImg<T>::load_dicom()' that loads an image in Dicom file format. This function uses the tool 'medcon' that
philpem@5 876 has to be installed (http://xmedcon.sourceforge.net/).
philpem@5 877 - Added 'CImg<T>::load_yuv()', 'CImgl<T>::load_yuv()' and 'CImg<T>::save_yuv()', 'CImgk<T>::save_yuv()'
philpem@5 878 that load and save respectively one frame or the entire movie from a .yuv file.
philpem@5 879 - Added 'CImglSubset<T>' which is a class that sub-references an image list 'CImgl<T>'.
philpem@5 880
philpem@5 881 *-----------------------------
philpem@5 882 *-----------------------------
philpem@5 883 * Changes from 1.0.8 to 1.0.9
philpem@5 884 *-----------------------------
philpem@5 885 *-----------------------------
philpem@5 886
philpem@5 887 * Bug corrections :
philpem@5 888 - Memory leak corrected in 'CImg<T>::load_bmp()'.
philpem@5 889 - CImg now supports the MIPS compiler on SGI (Thanks to Matt Hanson who made it possible).
philpem@5 890 - Corrected non-global X11 variables in multi-module projects using CImg.h (thanks also to Matt Hanson for
philpem@5 891 his precise bug report).
philpem@5 892 - In CImg<T>::load_convert() and save_convert(), random filenames are now tested before read/write.
philpem@5 893 - Removed unuseful template in 1D CImg<T>::draw_gaussian() function.
philpem@5 894 - Recoded CImgDisplay::render() with XPutPixel() again for maximum compability between X11-based architectures.
philpem@5 895 - In CImgStats, the variance field was computed actually as the standart deviation. This is now corrected, and the variance
philpem@5 896 is really the variance !
philpem@5 897
philpem@5 898 * Optimizations / Modifications :
philpem@5 899 - CImgDisplay fields mousex and mousey changed to fields mouse_x and mouse_y. This is done to be more coherent
philpem@5 900 with other CImgDisplay fields. The inconvenience should be minor, just replace the fields by the right names.
philpem@5 901 - CImgDisplay functions window_posx() and window_posy() changed to fields window_x and window_y.
philpem@5 902 - Eigenvalue computation with CImg<T>::eigen() and symeigen() sorts the eigenvalues in inverse order from now on.
philpem@5 903 The eigenvector matrix is also transposed, to be more close to the standart functions in eigenvalue computation.
philpem@5 904 - Renamed macro variable 'cimg_lapack' in 'cimg_use_lapack'.
philpem@5 905 - CImg<T>::save() can now handle alpha channel in PNG images (with 4-channels images).
philpem@5 906 - Recoded CImg<T>::noise() to handle numerical limits in template types (esp. for unsigned char and char).
philpem@5 907 - Recoded CImg<T>::pow() to be faster with usual int powers (0,1,2,3,4).
philpem@5 908 - Added conversions functions for all color spaces (R,G,B), (X,Y,Z), (x,y,Y) and (L,a,b).
philpem@5 909 - Added a 'pattern' parameter in 'CImg<T>::draw_ellipse()' and 'CImg<T>::draw_circle()', so that
philpem@5 910 only the outline of the ellipse/circle can be drawn.
philpem@5 911 - Added an ellipse-based selection in CImg<T>::feature_selection(), when parameter 'feature_type' is set to 3.
philpem@5 912
philpem@5 913 * New features/functions :
philpem@5 914 - Added an 'Image Zoomer' demo in 'CImg_test.cpp'.
philpem@5 915 - Added 'CImg<T>::load_jpeg()' and 'CImg<T>::save_jpeg()' to deal natively with JPEG files, through
philpem@5 916 the libjpeg library. You don't need ImageMagick's convert anymore to read and save JPEG files.
philpem@5 917 Just define the macro 'cimg_use_jpeg before including 'CImg.h', and link your code with the 'jpeg' lib,
philpem@5 918 and it should work fine.
philpem@5 919 - Added 'CImg<T>::quicksort()' allowing to sort values inside vectors, and getting corresponding permutations.
philpem@5 920 - CImgDisplay::move() is now working well on Windows and Unix.
philpem@5 921 - Added 'CImg<T>::SVD()' to compute the SVD of general matrices. The inverse function as well
philpem@5 922 as the eigenvalue computation (of symmetric matrices) now uses the SVD. It means that LAPACK is
philpem@5 923 not necessary anymore in CImg !
philpem@5 924 - Added 'CImgDisplay::screen_dimx()' and 'CImgDisplay::screen_dimy()' to get the resolution of the
philpem@5 925 current (full) screen.
philpem@5 926 - Added a new 10x13 font, and recoded the functions 'CImgl<T>::get_font();'
philpem@5 927 - Added 'cimg::dialog()' that allows to open a simple dialog box with a maximum of 6 choices.
philpem@5 928 - Added CImgROI<T>::operator=(), so that one can now affect a channel or plane to an image :
philpem@5 929 img.ref_plane(2) = img_plane; Very useful !
philpem@5 930 - Added CImg<T>::load_png() and save_png() to deal natively with PNG files, through
philpem@5 931 the zlib and libpng libraries. You don't need ImageMagick's convert anymore
philpem@5 932 to read and save PNG files. Just define the macro 'cimg_use_png' before including
philpem@5 933 'CImg.h', and link your code with the 'zlib' and the 'png' lib, and it should work fine.
philpem@5 934 Many thanks to Eric Fausett, for this nice piece of code.
philpem@5 935 - Added CImg<T>::load_rgb(), load_rgba(), save_rgb() and save_rgba() that can load and save
philpem@5 936 Raw color image data (w/ or wo/ alpha channel).
philpem@5 937 - Added CImg<T>::blur_anisotropic() that allows to denoise image by anisotropic filtering.
philpem@5 938 Smoothing behavior can be even user-defined.
philpem@5 939 Look at " http://www.greyc.ensicaen.fr/~dtschump/greycstoration/ "
philpem@5 940 to learn more about the image regularization technique implemented by this function.
philpem@5 941
philpem@5 942 - ... an tons of minor corrections !
philpem@5 943
philpem@5 944 *-----------------------------
philpem@5 945 *-----------------------------
philpem@5 946 * Changes from 1.0.7 to 1.0.8
philpem@5 947 *-----------------------------
philpem@5 948 *-----------------------------
philpem@5 949
philpem@5 950 * Bug corrections :
philpem@5 951 - Removed useless button/keyboard reinitialization in CImgDisplay events
philpem@5 952 - Corrected bug in CImg<T>::load_dlm() and load_ascii() functions.
philpem@5 953 - Corrected compile bug in CImg<T>::resize_halfXY() and CImg<T>::get_resize_halfXY().
philpem@5 954 - Corrected and optimized CImg<T>::get_resize().
philpem@5 955
philpem@5 956 * Optimizations / Modifications :
philpem@5 957 - Recoded CImg<T>::fill() for faster value filling.
philpem@5 958 - Recoded CImg<T>::draw_graph(). IMPORTANT NOTE : ymin and ymax are now directed up to down, instead
philpem@5 959 of down to up, in order to be more coherent with the draw_axeXY() function. This means you will
philpem@5 960 probably have to swap the values of these two parameters in the function call, to get similar results
philpem@5 961 to CImg 1.0.7 !!
philpem@5 962 - Recoded CImg<T>::draw_gaussian() using tensors (parameters changed).
philpem@5 963 - CImg is now successfully compiled using the option '-pedantic' with g++. Makefile has been modified.
philpem@5 964 - CImg compiles with the DJGPP compiler (tested without display capabilities).
philpem@5 965 - Added load/save support for 16bits PNM binary images.
philpem@5 966 - Added interleaved mode support and template in constructor :
philpem@5 967 template<typename t> CImg(const t *const data_buffer,dx,dy,dz,dv,bool interlaced)
philpem@5 968 - Recoded parts of CImg<T>::eigen().
philpem@5 969 - Optimized buffer copy in XImage, for faster image display under X11 (minor improvements).
philpem@5 970 - Added fields in CImgStats, allowing to get the coordinates of the min/max pixels.
philpem@5 971
philpem@5 972 * New features/functions :
philpem@5 973 - Added CImg<T>::load_bmp() and save_bmp() to deal with uncompressed BMP formats, without using ImageMagick.
philpem@5 974 - Added CImg<T>::vector(), CImg<T>::matrix() and CImg<T>::tensor().
philpem@5 975 - Added CImg<T>::scroll() and CImg<T>::get_scroll to be able to scroll images.
philpem@5 976 - Added functions CImg<T>::get_FFT() and CImgl<T>::FFT() for Fast Fourier Transform.
philpem@5 977 - Added CImgDisplay::move() to be able to move display windows at specific locations.
philpem@5 978 - Added several region split in CImg<T>::get_split().
philpem@5 979 - Added 'examples/mcf_levelsets.cpp' : Mean curvature flow of a 2D curve, using level sets.
philpem@5 980 - Added 'examples/greycstoration.cpp' : New algorithm for image denoising, inpainting and resizing.
philpem@5 981 (see http://www.greyc.ensicaen.fr/~dtschump/greycstoration)
philpem@5 982 - Added 'examples/wavelet_atrous.cpp' (by R. Peteri) : Wavelet decomposition of a image.
philpem@5 983 - Added a Fourier-based filtering demo in 'CImg_test.cpp', allowing interactive frequency filter creation.
philpem@5 984 - Added an Image to ASCII converter, based on simple correlation measure. File : 'examples/image2ascii.cpp'.
philpem@5 985
philpem@5 986 * Abandonned features :
philpem@5 987 - Removed bump mapped version of the CImg<T>::draw_triangle() function.
philpem@5 988 - Removed 'examples/inpainter.cpp' which is a little bit buggy (problem with multiscale).
philpem@5 989 - Removed 'CImg<T>::new_display()' and 'CImgl<T>::new_display', which are confusing and useless. Use
philpem@5 990 'new CImgDisplay(img)' and 'new CImgDisplay(list)' instead.
philpem@5 991 - Removed 'CImg<T>::get_stats()' and 'CImgl<T>::get_stats', which are useless. Use 'CImgStats(img)'
philpem@5 992 and 'CImgStats(list)'.
philpem@5 993
philpem@5 994 *-----------------------------
philpem@5 995 *-----------------------------
philpem@5 996 * Changes from 1.0.6 to 1.0.7
philpem@5 997 *-----------------------------
philpem@5 998 *-----------------------------
philpem@5 999
philpem@5 1000 - New License : CImg is now distributed under the CeCiLL License, a free software GPL-like, more adapted
philpem@5 1001 to French laws. Don't be disturbed by this new License, CImg is still an open source free software !
philpem@5 1002 - Encapsulation of all CImg classes and functions in the 'cimg_library::' namespace. It avoids eventual
philpem@5 1003 class names collisions with other libraries. For compatility with your old code, you should
philpem@5 1004 insert 'using namespace cimg_library;', just after the '#include "CImg.h"' line, in your source code.
philpem@5 1005 - Removed global typedefs for uchar,uint,ushort,ulong. If you used them before, you'll have to redefine them :
philpem@5 1006 typedef unsigned char uchar;
philpem@5 1007 typedef unsigned short ushort;
philpem@5 1008 typedef unsigned int uint;
philpem@5 1009 typedef unsigned long ulong;
philpem@5 1010 - Corrected window resize bug on X11 displays.
philpem@5 1011 - Added PANDORE-4 file format support, with functions 'CImg::load_pandore()' and 'CImg::save_pandore()' (file extension : .pan)
philpem@5 1012 (PANDORE is a C++ toolkit for image processing, see http://www.greyc.ensicaen.fr/~regis/Pandore (in French))
philpem@5 1013 - Added macros CImg_3x3_ref(), CImg_5x5_ref(), .. allowing to use special loops cimg_map3x3,.. with references to C arrays and images.
philpem@5 1014 - Removed 'normalize' parameter in 'CImg::save()'. Saving normalized images can be still performed
philpem@5 1015 with 'img.normalize(0,255).save("normalized_image.jpg");'. This clarifies the code and doesn't add so much work at all.
philpem@5 1016 - Renamed 'CImg::get_sprite()' and 'CImg::sprite()' to 'CImg::get_crop()' and 'CImg::crop()'.
philpem@5 1017 - Changed 'draw_triangle' function with two textures, so that it corresponds to displacement mapping
philpem@5 1018 (aka 'bump mapping'), instead of two textures drawn with transparencies
philpem@5 1019 (which can be still made by two successive calls to single-textured 'draw_triangle' functions,
philpem@5 1020 with correct opacities).
philpem@5 1021 - Negative opacity parameter in drawing functions is now supported. It allows to ADD shapes colors to the current
philpem@5 1022 image pixels (see the new 'ShadeBobs demo in the CImg_test.cpp file to see the concept).
philpem@5 1023 - Added functions 'CImg::draw_axeX', 'CImg::draw_axeY' and 'CImg::draw_axeXY', allowing to trace labelled axes on images.
philpem@5 1024 - Slightly changes in CImgDisplay : field 'attributes' has been removed, and replaced by more
philpem@5 1025 comprehensive field names : events, normalize, fullscreen. Resizing capabilities is now removed
philpem@5 1026 since all windows can be resized by default.
philpem@5 1027 - 'CImg<>::load_convert()' and 'CImg<>::save_convert()' do not popup a console window anymore on Windows-based OS,
philpem@5 1028 when creating code with a WinMain() entry.
philpem@5 1029 - RGB<->BGR Color inversion problem on some old Unix displays has been corrected.
philpem@5 1030 - Makefile for compilation on Solaris has been updated.
philpem@5 1031 - Package structure has been slightly modified for more clarity. Renamed also the CVS module to 'CImg' instead of 'CImg_'
philpem@5 1032 - Added different compilers projects to ease the compilation of the CImg examples, including
philpem@5 1033 Visual C++ 6.0, Visual.NET2003, Borland Bcc 5.6, Digital Mars Compiler, Dev-Cpp, Intel ICL.
philpem@5 1034 - Removed the use of TrackMouseEvent mechanism on Windows, removing compilation bugs with VC++6.0 when trying to create an MDI application.
philpem@5 1035 - Improved keycode detection under X11. Keycodes should now work for any X11-based system.
philpem@5 1036 - Support for FreeBSD added (thanks to Thierry Thomas).
philpem@5 1037 - Corrected bug in matrix multiplication.
philpem@5 1038 - Corrected bugs in CImg<T>::erode() and CImg<T>::dilate() functions (name inversion).
philpem@5 1039 - Corrected bug in 'CImg<T>::load_convert()' and 'CImg<T>::save_convert()' when trying to load/save images with pathnames containing spaces.
philpem@5 1040 - Recoded 'inrcast.cpp', and suppressed 'inrcrop.cpp' in the 'examples/' directory (functionnalities of 'inrcrop' are now included in 'inrcast').
philpem@5 1041 - And some corrections of minor bugs to improve library stability...
philpem@5 1042 - Improved error messages to ease program debug.
philpem@5 1043 - Documentation of the API is much more complete and detailled (still in progress...)
philpem@5 1044
philpem@5 1045 *------------------------------
philpem@5 1046 *------------------------------
philpem@5 1047 * Changes from 1.0.5 to 1.0.6 :
philpem@5 1048 *------------------------------
philpem@5 1049 *------------------------------
philpem@5 1050
philpem@5 1051 - Drawing functions improved and optimized : Added transparency level to all drawing functions.
philpem@5 1052 - Added function 'draw_arrow()'
philpem@5 1053 - Added missing boolean operators.
philpem@5 1054 - Added CImgDisplay resize event, allowing to create flexible resizing windows.
philpem@5 1055 - Added 'CImg::draw_gaussian()' functions allowing to draw 1d,2d or 3d gaussians on images.
philpem@5 1056 - Added 'Oriented convolutions' demos in CImg_test.cpp
philpem@5 1057 - Recoded pde_TschumperleDeriche2D and 3D.
philpem@5 1058 - Bugs corrected in arithmetics operators.
philpem@5 1059 - Optimized image display.
philpem@5 1060 - Recoded 'CImg::feature_selection()'.
philpem@5 1061 - Recoded 'CImg::get_rotate()'
philpem@5 1062 - Renamed 'draw_plot()' to 'draw_graph()', and added cubic drawing style.
philpem@5 1063 - Renamed 'wait_sync()' to 'wait()'.
philpem@5 1064 - Renamed 'get_correl' to 'get_correlate' (idem for 'convolve')
philpem@5 1065 - Removed 'get_correl3x3,5x5,...'. Optimization is now a part of the 'get_correlate' function. (idem for 'convolve').
philpem@5 1066 - Removed 'get_rotate90,180,270'. Optimization is now a part of the 'get_rotate' function.
philpem@5 1067 - Compilation supported by gcc.3.4.1 (released july 2004).