📄 changes.txt
字号:
- And lot of small functions to ease the life...* Optimizations / Modifications : - CeCiLL-C license now applies for the file 'CImg.h'. This license (close to the LGPL one) is more adapted for library components as CImg. The examples stay in previous CeCiLL license (close to the GPL one). - 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 (for instance logarithmic-varying labels). - Attribute 'force' have been removed in 'CImgDisplay::resize()'. - Recoded most constructors and assign functions in CImg<T> and CImgl<T>. - Recoded most of the CImgDisplay class to allow more flexibility and refreshing speed. - Renamed 'CImgDisplay::title()' to 'CImgDisplay::set_title()'. 'CImgDisplay::title' is now a class variable that stores the current title of the display window. - 'CImgDisplay::closed', 'CImgDisplay::resized', 'CImgDisplay::fullscreen' and 'CImgDisplay::moved' have been renamed to 'CImgDisplay::is_closed', 'CImgDisplay::is_resized', 'CImgDisplay::is_fullscreen' and 'CImgDisplay::is_moved', for more coherent variable names. - 'CImg<T>::display_object3d()' : can now specify an input pose matrix, as well as get the output pose matrix, after the user rotated the object. Also, this function has been optimized.* Bug corrections : - Corrected sorting bug in 'CImg<T>::symmetric_eigen()' and 'CImg<T>::SVD()' - When using shared memory images, some 'CImg<T>::get_*()' methods returned a shared memory image too. - And lot of minor bug corrections and optimizations .....*-----------------------------*-----------------------------* Changes from 1.1.3 to 1.1.4*-----------------------------*-----------------------------* New features : - Added fullscreen mode support on X11-based systems. - Added CImg<>::save_dicom(), allowing to save DICOM files, via XMedcon. - Added phong-like rendering capabilities in 'CImg<T>::draw_triangle()' and 'CImg<T>::draw_object3d()'. - Added a directory 'plugins/' that contains some useful CImg plugins, developed by third parties. - Added bicubic interpolation option in functions 'CImg<T>::get_rotate()' - Added new example 'Fireworks' in 'examples/CImg_demo.cpp'. - Added new fonts with increasing sizes that can be used in 'CImg<T>::draw_text()'. Also simplified function 'CImg<T>::get_font()', and added size parameter in 'CImg<T>::draw_text()'.* Optimizations / Modifications : - Optimized 'CImg<T>::get_resize()'. - Allows the use of the MIT-XSHM extension for X11-based display, allowing to speed up CImgDisplay rendering (roughly a factor of 3 when using this extension). - Optimized CImgDisplay::render() for X11-based systems. Image display is now faster (roughly a factor of 2.5). - Modified CImg<>::display_object3d() : keyboard is now not handled, added translation using 3rd mouse button. Added small axes at the bottom left to see object orientation. - Removed some unuseful 'const' keywords in some function return values, removing warnings when compiling with icc or icl. - Renamed 'CImg<T>::RGBtoYCbCr8()' to 'CImg<T>::RGBtoYCbCr()' (and derived functions). - Gathered 'CImg<T>::dirichlet_pix?d()' and 'CImg<T>::neumann_pix?d()' in a single function 'CImg<T>::pix?d()'. - Renamed 'CImg_test.cpp' to 'CImg_demo.cpp'* Bug corrections : - Corrected bug with X11 displays : sometimes, black images were displayed, needing an explicit refresh. - Corrected bug with X11 displays related to ClientMessage. Windows are not closed when other applications are opened. - Corrected 'CImgl<T>::remove()' : Wrong memory deallocation could happen sometimes. - And lot of minor bug corrections and optimizations .....*-----------------------------*-----------------------------* Changes from 1.1.2 to 1.1.3*-----------------------------*-----------------------------* New features : - Added a new example source file 'examples/image_surface.cpp', that renders an image as a surface in a 3D space. - Added a new example source file 'examples/mcf_levelsets3D.cpp', that performs Mean Curvature Flow of a 2D surface, using level sets. - Added a version of 'CImg<T>::draw_triangle()' that can draw Gouraud-shaded triangles (flat and textured versions). - Added 'CImg<T>::get_rotation_matrix()' that returns a 3x3 rotation matrix from a quaternion or a rotation vector. - Added 'CImg<T>::draw_object3d()' that can draw a colored/textured 3d object on images. - Added 'CImgDisplay::display_object3d()' and 'CImg<T>::display_object3d()' which run a high-level interface that can view a user-defined 3d object. - Added two 3D rendering examples in 'examples/CImg_test.cpp', that shows how to use 3D rendering capabilities of CImg in few lines. - Added 'CImg<T>::marching_cubes()' and 'CImg<T>::marching_squares' that can be used to triangularize an implicit 2D or 3D curve or surface from an image or a function. - Added 'CImg<T>::get_load_off()' and 'CImg<T>::save_off()' that manages OFF files (files describing 3D object, GeomView format, see 'http://www.geomview.org/').* Optimizations / Modifications : - Removed the 'multiplexed' variable in one of the CImg constructor. This feature as not generic enough to be integrated in a constructor, and is so simple to code (one line).. This has been replaced by the new 'shared' capabilities of CImg. - Added a 'shared' variable in CImg<T> and CImgl<T>. This allows to completely remove CImgSubset<T> and CImglSubset<T>, and allows more flexibility for using shared memory. A lot of functions relative to shared-memory images have been added also. Please look closely to the online reference. - Added a fast approximation method in 'examples/greycstoration.cpp' (set by default) allowing to speed up the restoration process almost by a factor x3. - Recoded 'CImg<T>::get_dilate()' and 'CImg<T>::get_erode()' : it is now possible to specify a structuring element. - Due to high difficulty in maintaing all project files in the 'compilation/' directory, I removed most of them except one template file for each different C++ IDE. Just replace the default source file 'CImg_test.cpp' in the project file by the one you want, to compile you desired example. - Renamed 'CImg<T>::get_2dprojections()' to 'CImg<T>::get_projections2d()'. - Removed 'examples/render3d.cpp'. As CImg has now built-in functions for 3D rendering, this example was obsolete. Look at the new example appearing in 'examples/CImg_test.cpp' to see how to do easy 3D rendering with CImg.* Bug corrections : - Corrected 'CImg<T>::cubic_pix1d()' and 'CImg<T>::cubic_pix2d()', used for cubic and bicubic interpolations. - Corrected 'cimg_map2x2()' and 'cimg_map4x4()' to avoid warning when compiling with g++. - Added a simple trick to ease the use of libjpeg and libpng on Windows (thanks to bugzhao). - Corrected 'CImg<T>::load_jpeg()' and 'CImg<T>::save_jpeg()' to handle all possible color spaces used in JPEG files. - Corrected 'CImg<T>::get_split()' to avoid bug with very large images. - Corrected 'CImg<T>::load_dicom()' and 'cimg::medcon_path()' to ease the loading of medcon files on Windows. - And lot of minor bug corrections....*-----------------------------*-----------------------------* Changes from 1.1.1 to 1.1.2*-----------------------------*-----------------------------* Bug corrections : - Bug corrected in 'CImg<T>::load_ppm()' and 'CImg<T>::save_ppm()' : 16 bits PPM images were not correctly stored. - (Stupid) bug corrected in 'CImg<T>::get_sort()' : Return value was a reference to a temporary object. - Bug corrected in 'CImg<T>::resize_halfXY()' that caused a possible segmentation fault. - Bug corrected in 'CImg<T>::move()' : Moving an hidden window (on X11) is now working. - Handling pixel access to const images : writing pixel values in const images is now forbidden. - 'CImg<T>::det()' : Determinant of general matrices can now be computed. - '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...) - 'CImg<>::load_dlm()' : small bug corrected. Can now read DLM files with no CR at the last line. - And other small corrections....* Optimizations / Modifications : - In 'CImg<T>::save_convert()', the temporary file is now saved in PNM format, instead of RGBA as before. This has been done because of a strange bug in ImageMagick's convert, refusing to read some RGBA files. - CImgDisplay::move() now shows automatically the display when it is in a closed state. - Moved the trait cimg_library::largest<T,t> in cimg_library::cimg::largest<T,t>. - Renamed 'CImg<T>::quicksort()' to 'CImg<T>::sort()'. - Renamed 'CImg<T>::create()' and 'CImg<T>::copy()' to 'CImg<T>::assign()'. - 'CImg<T>::inverse()' can now uses the LU matrix decomposition (or the SVD one as before). - Optimized memory handling when playing with lists of images CImgl<>. - Optimized some CImg<T> constructors.* New features : - Added a new demo : 'Blobs Editor' in CImg_test.cpp. - Added types 'CImg<T>::iterator', 'CImg<T>::const_iterator', 'CImgl<T>::iterator' and 'CImgl<T>::const_iterator' to allow the easy use of STL algorithms on CImg and CImgl structures. - Added several functions that acts like in STL vectors and lists in CImg<T> and CImgl<T> : CImg<T>::assign(), CImg<T>::clear(), CImg<T>::at(), CImg<T>::back(), CImg<T>::front(), CImg<T>::begin(), CImg<T>::end(), CImgl<T>::assign(), CImgl<T>::clear(), CImgl<T>::at(), CImgl<T>::back(), CImgl<T>::front(), CImgl<T>::begin(), CImgl<T>::end(), CImgl<T>::push_back(), CImgl<T>::push_front(), CImgl<T>::pop_back(), CImgl<T>::pop_front(). - Added 'CImg<T>::MSE()' and 'CImg<T>::PSNR()' that compute the MSE (Mean Squared Error) and PSNR (Peak Signal to Noise Ratio) between two images. - Added 'CImg<T>::solve()' and 'CImg<T>::get_solve()', allowing to solve linear systems. - Added 'CImg<T>::pseudoinverse()' and 'CImg<T>::get_pseudoinverse()' allowing to compute the Moore-Penrose matrix inverse (useful for computing solutions to the least-square problem).*-----------------------------*-----------------------------* Changes from 1.1.0 to 1.1.1*-----------------------------*-----------------------------* Bug corrections : - in 'CImgl<T>::insert()' : Insertion at non-last position was bugged. - in 'greycstoration.cpp' : Corrected some bugs in the algorithm and improved user interface. - in 'CImg<T>::blur_anisotropic()' : Abusive vector normalization was done before. Now it is corrected. - And many other bugs...* Optimizations / Modifications : - Removed macros 'cimg_test*()' and modified argument checking in most of the functions, so that trying to act on an empty image does nothing instead of an error. - Renamed all static methods CImg<T>::load*() into CImg<T>::get_load*(). This has been done to be coherent with the naming convention of other CImg methods. Also, added new functions CImg<T>::load*() (non static) that corresponds to in-place image loading. - Renamed CImg RAW extension from .raw to .cimg. .raw files are not considered as real raw data without header. New functions 'CImg<T>::load_get_raw()' and 'CImg<T>::save_raw()' have been added to load and save .raw files. - In 'greycstoration.cpp' : improved algorithm and parameters. Also add improved visualization tool at the end of the image regularization. - Replaced some cimg:: static functions to inlined one, to prevent compiler bug on VS7.1, when trying to link multiple CImg-based modules. - Replaced parameter 'linear' to 'scheme' in 'CImg<T>::blur_anisotropic()', allowing the use of 2nd order Runge-Kutta integration, instead of just nearest-neighbor or linear ones.* New features : - Introduced a trait 'cimg::largest' that allows to find the largest data type between two types. CImg functions use it for instance to return a CImg<float>, when trying to compute the gradient of an CImg<unsigned char>. It was not the case before, needing an explicit case, as in 'CImg<float>(img).get_gradientXY()'. - Added 'CImg<T>::operator<<', 'CImgl<T>::operator<<' and 'CImgl<T>::operator>>' that allows to insert images in list or append an image to another one. - New project file for using with X-Code (on Mac OS X) has been added to the 'compilation/' directory. Thanks to Werner Jainek who made it possible.*-----------------------------*-----------------------------* Changes from 1.0.9 to 1.1.0*-----------------------------*-----------------------------* Bug corrections : - in 'CImg<T>::load_raw()' : possible buffer overflow corrected. - in 'CImg<T>::load_dlm()' : the use of std::rewind() didn't work when reading the standart input. Function has been recoded so it reads the file in one pass. - Corrected 'CImg<T>::anisotropic_blur()'. - Corrected 'CImg<T>::symeigen()' : corrected computation bugs. - Corrected 'CImg<T>::get_resize()' : linear and bicubic interpolations were not correctly handled (minor). - Corrected 'CImgDisplay' to avoid malloc/dealloc problem with newer versions of X11. - Corrected 'CImgDisplay' to handle better thread termination under X11 (Unix and MacOSX). - Corrected 'greycstoration.cpp' (small bug in inpainting and non-curvature scheme).* Optimizations / Modifications : - Updated documentation. - Modified Makefile for direct compilation of executables under Linux (ex : make CImg_test). - Modified Exceptions error messages for more simplicity and clarity. - Removed parameter 'alpha' in 'CImg<T>::get_gradientXY()' and 'CImg<T>::get_gradientXYZ()'. - Renamed 'CImg<T>::flip()' to 'CImg<T>::mirror()'. - Renamed 'CImg<T>::get_3dplanes()' to 'CImg<T>::get_2dprojections()'. - Renamed 'CImgROI<T>' to 'CImgSubset<T>'. Also removed functions 'CImg<T>::ref_*' and replaced it by 'CImg<T>::pointset()', 'CImg<T>::lineset', 'CImg<T>::planeset' and 'CImg<T>::channelset'.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -