History

IM - An Imaging Tool

History of Changes

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)