News‎ > ‎

Changelist 2.4

DIPimage version 2.4

Changes to DIPimage

  • New functions:
    • Linked displays now also synchronize when zooming and panning, and 2D displays can be linked.
    • The image display windows now have a new option 'Unit' under the 'Mappings' menu, which selects the range [0,1].
    • New DIPimage preference 'BinaryDisplayColor' changes the color used for foreground pixels when displaying a binary image.
    • readrawim reads in images from files in RAW format.
    • ssim computes a similarity measure between images.
    • newcolorim creates a new color image.
  • Changed functions:
    • Arithmetic, logical and comparison operators on dip_image objects now do their computation through DIPlib. One consequence is that operations on large images with different data types are faster now. Another consequence is that singleton expansion is performed automatically (that is, you can do things like img/mean(img,[],[1,2]); additionally, singleton dimensions are added to one image as needed to match the dimensionality of the other. Affected operators are +-*.*/./&|xor()>>===~=<= and <.
    • Many (most?) methods overloaded for dip_image objects now also take tensor images as input (e.g. rot90real). This is still not the case for toolbox functions (e.g. dilation or mirror).
    • measure has three new functions: ConvexAreaConvexPerimeter and ConvexityFeret is implemented differently now, and produces 5 output values.
    • correctshift has two new input arguments: to define how the image boundary should be handled, and to remove the frequencies at Nyquist.
    • extend now optionally pads by copying/mirroring image data.
    • dipshow now scales down an image if it doesn't fit on the screen; changing the slicing direction doesn't change the "truesize" setting; and it is possible to display 0D images as a uniformly coloured square.
    • The default function dipinit has been rewritten to provide a, hopefully, less confusing default for new users. Feel free to copy the function to your working directory and modifying it to your hearts content!
  • Bug fixes:
    • convolve now works properly with a horizontal 1D filter in a 2D image.
    • frc should now produce results consistent with the definition in the literature.
    • Fixed a bug that prevented the use of logical arrays to index into a dip_measurement object (by Petr Matula).
    • Assorted fixes to improve efficiency.
    • Assorted documentation fixes.

Changes to DIPlib

(Some of these changes propagate to DIPimage)

  • New functions:
    • dip_Arith() performs all the dyadic arithmetic and logic operations. dip_Add()dip_Sub()dip_Mul() and dip_Div() now are defined as macros that call dip_Arith(), and dip_And()dip_Or() and dip_Xor() are functions that call dip_Arith(). One difference is that these operations now add singleton dimensions to one input to match the dimensionality of the other input.
    • dip_Arith_ComplexSeparated() is similar to dip_Arith(), but receives complex images as two separate images, one with the real component and one with the imaginary component. Unlike dip_Arith(), it does not do any logic operations, and always produces two real-valued output images, one for the real component and one for the imaginary component.
    • dip_ChainCodeConvexHull()dip_ConvexHullGetArea()dip_ConvexHullGetPerimeter(), and dip_ConvexHullGetFeret() provide a new way to do measurements on 2D objects. New measurement features related to these functions are: dip_FeatureConvexAreaIDdip_FeatureConvexPerimeterIDand dip_FeatureConvexityID.
    • dip_IntegerArrayCompare and similar functions for other numeric array types.
    • dip_ImagesCheckDyadic() checks and compares the two input images, and expands dimensions of size one in either image to match the other image (singleton expansion).
  • Changed functions:
    • dip_ScanFrameWork() is parallelized now for all cases. Affected functions are: dip_Add*()dip_Sub*()dip_Mul*()dip_Div*()dip_And()dip_Or(),dip_Xor()dip_Compare() and dip_Select().
    • The functions listed in the point above also all do singleton expansion now (through dip_ImagesCheckDyadic()).
    • dip_Measure() has a new measurement type: DIP_MSR_FUNCTION_CONVHULL_BASED. The DIP_MSR_FUNCTION_COMPOSITE measurement type is much more efficient now.
    • The dip_FeatureFeretID measurement has changed. Now it is implemented through dip_ConvexHullGetFeret().
    • ImagesCheck() (and dependent functions) now checks all images for image type and data type. This seems to correspond better with the way that this function is commonly used.
    • dip_ChangeDimensions() now can also add singleton dimensions.
  • Bug fixes:
    • dip_ScanFrameWork() could produce incorrect results when image strides were different.
    • Separable filters could produce a segmentation violation when there were more compute cores than image lines.
    • dip_Resample() produced wrong output image size in specific cases, due to numerical rounding in the computations.
    • Assorted documentation fixes.