History

IM - An Imaging Tool

History of Changes

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)