History of Changes
- New:
function imImageCreateFromOpenGLData.
-
Changed: the function
imConvertPacking now has one more parameter so src_depth can be
different from dst_depth.
-
Fixed:
imImageGetOpenGLData for some configurations.
-
Fixed: write support for alpha in TGA
format. (Thanks to Nicolas Noble)
- New:
function imVideoCaptureReleaseDevices.
-
Changed: ICON format now supports
writing up to 10 images.
-
Changed:
replaced old "arg" usage for "..." to improve better compatibility with
LuaJIT.
-
Changed:
control of LOHs inclusion moved from the source code to the makefile.
-
Changed:
removed compatibility with require"imlua51", now LuaBinaries must be used
or LUA_CPATH must be set.
-
Changed: added compatibility with Lua
5.2.
-
Fixed: image:HasAlpha() method in
Lua was returning a number instead of a boolean, so im.ImageCreateBased
was adding an alpha channel to all new images.
- Fixed: invalid memory access in
imProcessResize when one dimension is equal to the original.
- Fixed: imProcessCompose parameter
parsing in Lua.
- Fixed: invalid memory access when saving an image
with the JPEG 2000 format.
- New: function
imImageCopyPlane.
- New: function
imProcessCompose.
- New: function
imImageSetAlpha.
-
Changed: libTIFF downgraded to version
3.8.2 because of the JPEG support in TIFF not working on the newer
versions.
-
Changed:
included alpha support in
imProcessSplitComponents and imProcessMergeComponents.
Included alpha support in all geometric and size operations.
- Fixed: invalid memory access in
imAnalyzeFindRegions when more than 16k regions where found.
- Fixed: memory leak in imFileOpen.
- Fixed: alpha support in image:CopyPlane()
and in channel indexing in Lua.
- Fixed: incomplete initialization of the array in
imAnalyzeMeasureArea.
- Fixed: imProcessRemoveByArea
inside/outside logic.
- New: functions
imProcessUnsharp and imProcessSharp.
- New: function
imImageGetOpenGLData.
- New: functions
im.ConvertDataTypeNew, im.ConvertColorSpaceNew
and im.ConvertToBitmapNew in Lua.
- New: file attributes
"FileFormat", "FileCompression" and "FileImageCount" when reading from
file. Available for all formats.
- New: ASCII compression for RAW
format to access text data instead of binary.
- Changed: libPNG updated to version
1.2.39. Removed changes to the library that made it incompatible with other
libPNG distributions.
- Changed: libLZF updated to
version 3.5.
- Changed: libJPEG updated to
version 7.
- Changed: libEXIF updated to version 0.6.17.
- Changed: libTIFF updated to version
3.9.1.
- Changed: library im_fftw3 to use
an external library.
- Changed: imImageCreateBased and
imConvertColorSpace now also
consider the alpha plane.
- Changed: imProcessPrune
renamed to imProcessRemoveByArea, and added a new
parameter to select inside or outside the interval.
- Changed: removed IM_UN_INC operation from imProcessUnArithmeticOp.
It was not an unary operation. Can simply be done in place by
imProcessArithmeticOp and IM_BIN_ADD.
- Changed: now imProcessUnArithmeticOp,
imProcessArithmeticConstOp and
imProcessArithmeticOp willl crop the result to 0-255 if destiny
has data type byte.
- Fixed: PNG attribute TransparencyIndex. new PNG
attribute TransparencyMap. TransparentColor renamed to
TransparencyColor.
- Fixed: invalid convertion from MAP to GRAY when
loading imImages.
- Fixed: new image size computation of im.ProcessCropNew
in Lua.
- Fixed: loading of RAW data.
- Fixed: imImageClear to initialize
data just like imImageCreate does.
- Fixed: imImageReshape when the
image has an alpha plane. Image is not cleared anymore.
- Fixed: boolean parameters in
file:ReadImageData, im.ConvertDataType, im.ConvertToBitmap, im.ProcessSplitComplex,
im.ProcessQuantizeRGBUniform, im.ProcessBitPlane, im.ProcessRotateRef,
im.ProcessRotate90, im.ProcessBinMorphConvolve, im.ProcessMergeComplex,
im.CalcHistogram, im.CalcGrayHistogram and
im.AnalyzeFindRegions in Lua. Changed im.Capture*
functions to use boolean values in Lua.
- Fixed: RAW format initialization.
- Changed:
removed "lua5.1.so" dependency in UNIX.
- Fixed: AVI format when reading 32
and 16 bpp frames.
- Fixed: xmin and ymin check in
im.ProcessCrop and in im.ProcessInsert in Lua.
- Changed: function
imColorHSI_Smax removed from public, now it is used only
internally. HSI space now uses S already normalized between 0-Smax.
- Fixed: imColorHSI2RGB
conversion.
- Fixed: imConvertDataType
when converting a floating point to integer, there were rounding problems.
- Fixed: loading and saving two or more files of the same format at the same time.
- New: imlua_avi, imlua_wmv and imlua_jp2 libraries so the
respective formats can be dynamically loaded
using require.
- Changed:
IMPORTANT -
the "imlua_cd" library moved from IM to CD under the name "cdluaim".
- Changed:
IMPORTANT - the support services
(Downloads, Mailing List and CVS) moved from LuaForge to SourceForge.
- Changed: All dll8 and dll9 DLLs now
have a Manifest file that specifies the correct MSVCR*.DLL.
- Changed:
Makefiles for UNIX now uses a compact version of Tecmake that does not need
any installation, just type "make".
- Changed: premake files are used now
only internally and were removed from the distribution.
- Changed:
Copyright notice modified to reflect the registration at INPI (National
Institute of Intellectual Property in Brazil). License continues under the
same terms.
- Fixed: reviewed and fixed the parameter
checking of all IMLua processing functions. Also reviewed all IMLua
parameter checking. Thanks to Lucas Lorensi.
- Fixed: loading of TIFF format with
old JPEG compression.
- Fixed: loading and saving of PNM
format when data in textual format and gray values are greatter than 255.
- Fixed: Bicubic and Zero order
interpolation for all geometric operations for pixels near the image border
when increasing image size.
- Fixed: Lua samples.
- Fixed: ICON format in 64 bits Linux.
Version 3.3 (26/Nov/2007)
- New: read support for ECW using the
ERMapper ECW JPEG 2000 SDK.
- Changed: libTIFF updated to version
3.8.2.
- Changed: libPNG updated to version
1.2.22.
- Changed: libJasper updated to
libGeoJasper 1.4.0 (using Jasper version 1.900.1). Better support for
counter progress, Geo tags and several speed improvements. New GeoTIFFBox
and XMLPacket attributes.
- Changed: renamed macro imPutImage
to imcdCanvasPutImage, and added canvas as the first parameter.
- Changed: renamed
the imImage Lua
methods to image:cdCanvasPutImageRect,
image:wdCanvasPutImageRect
and image:cdCanvasGetImage, and added canvas as the first parameter. Now imlua_cd
depends on cdlua from CD version 5.0.
- Changed: metatable names in Lua are
now the same as the C struct names.
- Changed: new read EXIF tags support
in TIFF format (no write support yet). Renamed attributes "GeoTransMatrix"
and "IntergraphMatrix", to "GeoTransformationMatrix" and "Intergraph
TransformationMatrix" for libGeoTIFF compatibility. Better support for
known TIFF tags. New support for reading one band of a multiband gray image
in TIFF format. New support for DNG files.
- Fixed: imConvertDataType
gamma function when converting real to/from integer.
- Fixed: small error at
the image border when resampling, rotating or other geometric operations.
- Fixed:
imProcessCanny invalid division by zero when input image is all zero.
- Fixed:
imFileReadImageInfo when loading MAP images with a scrambled gray
palette. They were incorrectly converted to GREY.
- Fixed:
support for IM_ALPHA and 32 bpp in ICO format.
- Fixed:
number of lines returned in imProcessHoughLinesDraw.
Version 3.2 (24/Nov/2006)
- New: imProcessRotateRef to rotate relative to a reference point.
- New: geometric distortion imProcessSwirl.
- New: imProcessInterlaceSplit.
- New: function imGaussianKernelSize2StdDev.
- New: convolutions imProcessBarlettConvolve,
imProcessPrewittConvolve, imProcessSplineEdgeConvolve,
imProcessConvolveDual and imProcessConvolveSep.
- New: "im_kernel.h" module with simple functions to create know pre-defined kernels like sobel, laplacian, gaussian,
etc.
- New: imVideoCaptureSetInOut to control input and output in capture devices.
- New: function imBinMemoryRelease to release internal memory allocated
by the BinMemory file when saving.
- New: functions for capture device information:
imVideoCaptureDeviceExDesc, imVideoCaptureDevicePath and
imVideoCaptureDeviceVendorInfo.
- New: function imFileOpenAs
to open a file of a specific format.
- New: functions
imFormatRegisterInternal and imFormatRemoveAll to
control format registration.
- Changed: imProcessGaussianConvolve to used separable convolution and now is stddev is negative will use its
magnitude as the kernel size. Removed Rep functions imProcessGaussianConvolveRep,
imProcessDiffOfGaussianConvolveRep and
imGaussianStdDev2Repetitions.
- Changed: imProcessBlend
to use an image instead of a constant. Old function renamed to
imProcessBlendConst.
- Changed: imFileHandle prototype. Now the function has an index parameter to specify which handle it should return.
index=0 is always an imBinFile* handle. Use index=1 or greater to return other internal handles that are format
dependent.
- Changed: the Removed the include "im.h"
to not include "im_lib.h". "im_lib.h" must be included when necessary.
- Changed: imAnalyzeMeasureArea and
imAnalyzeMeasurePerimeter prototypes to include the number of regions as a
parameter. Fixed: these functions to internally initialize the results array to zero (this was necessary and not
documented).
- Changed: imProcessFlip
and imProcessMirror so they can be done in-place.
- Fixed: missing implementation of
imVideoCaptureOneFrame in Lua 5.
- Fixed: imAnalyzeFindRegions when pixel is at the width-1 column.
- Fixed: file format identification when
TIFF identification failed was not closing the file.
- Fixed: imAnalyzeMeasurePerimeter when perimeter line is at the first or last lines. Thanks to Takeshi Mitsunaga.
- Fixed: invalid return value in imVideoCaptureConnect in Lua 5.
- Fixed: imProcessRotate for IM_MAP images.
- Fixed: Lua binding of
imFileImageSave, wrong parameters order. New: image:Save(filename, format) alias for imImage
objects.
- Fixed: BMP format implementation when reading and writing RGBA 32 bits images.
- Fixed: imFileLoadImageFrame and
imFileLoadBitmapFrame index parameter in Lua.
- Fixed: alpha channel allocation in imImage.
Version 3.1 (12/Dez/2005)
- New: Download, Discussion List, Submission of Bugs, Support Requests and Feature Requests, are now available thanks
to the LuaForge site.
- New: Binding for Lua 5
- New: support for alpha in imImage.
- New: organization of the documentation.
- New: in ICON format the TransparencyIndex is used to for IM_MAP images without an alpha
channel.
- New: video capture functions: imVideoCaptureFormatCount,
imVideoCaptureGetFormat
and imVideoCaptureSetFormat, to access the available capture video formats.
- New: functions imFileLoadImageFrame and
imFileLoadBitmapFrame to reuse the
image data when loading.
- New: function imFileImageSave.
- New: function imImageCreateBased.
- New: imProcessInsert.
- New: compression functions imCompressDataLZF and
imCompressDataUnLZF, using
libLZF.
- New: module for imBinFile, IM_FILEHANDLE that allows to access an already opened file using the
system file handle as file name. Thanks to Frederico Abraham.
- Changed: in JPEG file format YcbCr are now automatically converted to RGB when loaded. RGB images were already
automatically converted to YCbCr when saved. Now this behavior can be controlled by the AutoYCbCr
attribute.
- Changed: the imAnalyzeFindRegions to include an additional parameter that control if regions
touching the border are computed or not. The function imProcessPrune now will only eliminate the
regions in the selected size range.
- Changed: third party libraries, updated to newest versions: libExif, libTIFF, libPNG and zlib. Added OLD JPEG
support in libTIFF.
-
Changed: optimization flags to ON when building the library in all platforms.
- Changed: imProcessPerimeterLine,
imAnalyzeMeasurePerimeter,
imAnalyzeMeasurePerimArea, imAnalyzeMeasureCentroid and
imAnalyzeMeasurePrincipalAxis to consider pixels that touch the borders.
- Changed: macro name cdPutBitmap to
imPutBitmap.
- Changed: function names imImageLoad and
imImageLoadBitmap, to
imFileImageLoad and imFileImageLoadBitmap.
- Fixed: overflow in imCalcImageStatistics fo IM_INT and IM_USHORT images.
- Fixed: error management in system file I/O in
UNIX.
- Fixed: some small defines for 64-bits compatibility in libExif, libPNG and libJPEG.
- Fixed: incorrect interpretation of 16 bit data from
PNG files.
- Fixed: imFileReadImageInfo can be called many times with the same index that will return the
correct result without accessing the file again.
- Fixed: small bug in sample iupglcap.
- Fixed: TIFF format read for images with multiple bands in ExtraSamples.
- Fixed: ICON format can_sequence was 0.
- Fixed: imProcessMergeHSI and
imProcessSplitHSI documentation, and
implementation for IM_BYTE images.
- Fixed: imProcessRangeContrastThreshold,
imProcessLocalMaxThreshold and
imProcessRankClosestConvolve when processing near the border.
- Fixed: invalid file permissions in UNIX when saving a new file.
- Fixed: name for imProcessLocalMaxThresEstimate.
- Fixed: imProcessReduceBy4 for images with odd width and/or height.
- Fixed: imAttribTableSet when replacing an attribute (thanks to Takeshi Mitsunaga).
- Fixed: memory leaks in imConvertToBitmap and
imConvertDataType (thanks to
Takeshi Mitsunaga).
- Fixed: imProcessZeroCrossing for the last pixel column (thanks to Takeshi Mitsunaga). Also
fixed for some crossings that were lost.
- Fixed: imProcessGrayMorphConvolve for
IM_FLOAT images with
IM_FLOAT kernel (thanks to Takeshi Mitsunaga).
Version 3.0.3 (14/Oct/2004)
- New: Image Transform imProcessDistanceTransform.
- New: group of functions Image Analysis:
imAnalyzeFindRegions, imAnalyzeMeasureArea,
imAnalyzeMeasurePerimArea, imAnalyzeMeasureCentroid,
imAnalyzeMeasurePrincipalAxis, imAnalyzeMeasureHoles, imProcessPerimeterLine,
imAnalyzeMeasurePerimeter, imProcessPrune,
imProcessFillHoles.
- New: imConvertMapToRGB to help loading data as RGB.
- New: sample iupglcap.
- New: imProcessRenderChessboard and
imProcessRenderGrid.
- Changed: imProcessThreshold,
imProcessRangeContrastThreshold and imProcessLocalMaxThreshold now also supports
IM_USHORT and IM_INT
data types.
- Changed: the default color conversion to binary
so it can be done for all color spaces.
- Changed: im_process.h to split into 4 files: im_process_pont.h,
im_process_loc.h, im_process_glo.h, im_process_ana.h. But it still
exists and includes the new files for compatibility.
- Changed: the border extensions in several types of convolution. Rank convolution do not extend the borders. Binary
morphology use zero extension. Gray morphology do not extend the borders.
- Fixed: file read with bitmap conversion when original data changes only data type.
- Fixed: rank convolution operations that did not accept even kernel sizes.
- Fixed: imProcessHoughLinesDraw that was ignoring some lines.
Version 3.0.2 (25/Aug/2004)
- New: utility functions imPaletteHighContrast,
imImageLoadImage and
imImageLoadBitmap.
- New: operation imProcessNormalizeComponents.
- Changed: name imProcessGaussianConvolve to
imProcessGaussianConvolveRep. New:
operation imProcessGaussianConvolve that uses a float kernel.
New: utility functions
imGaussianStdDev2Repetitions and imGaussianStdDev2KernelSize.
- Changed: name imProcessDiffOfGaussianConvolve to
imProcessDiffOfGaussianConvolveRep.
New: operation imProcessDiffOfGaussianConvolve that uses a float kernel.
- Changed: IM_GAMUT_BRIGHTCONT
parameters to the interval [-100,100]. Fixed:
IM_GAMUT_EXPAND and IM_GAMUT_BRIGHTCONT normalization.
- Changed: logical operations, flag IM_BIT_NOT
replaced by operation imProcessBitwiseNot.
- Changed: imImageSetAttribute count can be -1 for zero terminated data.
- Fixed: operations imProcessBitwiseNot and
imProcessNegative for IM_BINARY images.
- Fixed: the color_mode_flags parameter interpretation by
imFileReadImageData.
- Fixed: imProcessEqualizeHistogram and
imProcessExpandHistogram for
color images.
- Fixed: imProcessMultipleStdDev.
- Fixed: imProcessDifusionErrThreshold for
IM_GRAY images.
- Fixed: "KRN" format, internal format is topdown.
- Fixed: initialization of TGA image_count.
Version 3.0.1 (22/Apr/2004)
- Improved compatibility with the old version, it was missing the load of Map images with
imLoadRGB.
- The FFTW code was from version 2.1.3, not from 2.1.5 as suposed, it was updated. The FFT functions were condensed in
only one file with an "#ifdef" for FFTW version 2 and 3. The FFT functions also were renamed to remove the "W" that
belongs only to the FFTW library.
- The SetAttribute functions now accept NULL in data to remove the attribute.
- New: imProcessCrossCorrelation and imProcessAutoCorrelation functions.
- The imCalcGrayHistogram function now can calculate the histogram of
IM_MAP
and IM_BINARY images.
Version 3.0 (April 2004)
A major rewrite of the library. Everything changed, check the manual, but backward compatibility is kept for old
applications. A new API more flexible, new formats, support for attributes and video, image capture and image
processing. New: color spaces and data types. The library now got a professional look for scientific applications.
Version 2.6 (May 2002)
Correction of bug in resolution reading and writing for format JPEG.
Version 2.5 (August 2001)
Correction of bug in the default GIF compression. Two new callbacks: transparency color index for GIF files and
image description for TIFF files.
Version 2.4 (February 2000)
Change in the treatment of LZW compression in formats TIFF and GIF. Now compression is no longer the default.
Version 2.3 (June 1998)
Close function of the access driver for files in memory corrected. JPEG library updated to 6b. Correction of a
problem with the reading of some JPEG files.
Version 2.2 (November 1997)
The definition of the counter callback was changed to inform, in a parameter, the type of access being performed,
either reading or writing. Type imCallback defined to make type casting easier when using function
imRegisterCallback. Correction of a problem with the makefile in UNIX, which was generating link
errors in some platforms.
Version 2.1 (October 1997)
Correction of a problem with internal memory liberation when reading Map images in TIFF files. Conversion RGB to
Map is now made using the algorithm implemented by LibJPEG. The algorithm of imResize was
improved for cases in which the size is being reduced instead of increased. Correction of a problem with functions
imImageInfo and imFileFormat: when the provided file was not in a format recognized
by IM, there was an error in format TGA which caused these functions to access an invalid memory area.
Version 2.0 (September 1997)
The library was virtually rewritten to implement a new structure which allowed greater flexibility, simplifying the
addition of new formats. Formats TGA, PCL, JPEG and LED
were added to the list of supported formats, and new functions were added: imMap2RGB,
imRGB2Gray, imMap2Gray, imResize, imStretch.
Version 1.1 (June 1996)
Small corrections to increase portability. Changes in return codes. Identifiers were created to return codes and
predefined parameters. Online manual concluded.
Version 1.0 (October 1995)