Quantitative Image Analysis in C++, MATLAB and Python
Version 2.4 of DIPlib and DIPimage has been released.
Changes to DIPimage
'BinaryDisplayColor'changes the color used for foreground pixels when displaying a binary image.
readrawimreads in images from files in RAW format.
ssimcomputes a similarity measure between images.
newcolorimcreates a new color image.
dip_imageobjects 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
dip_imageobjects now also take tensor images as input (e.g.
real). This is still not the case for toolbox functions (e.g.
measurehas three new functions:
Feretis implemented differently now, and produces 5 output values.
correctshifthas two new input arguments: to define how the image boundary should be handled, and to remove the frequencies at Nyquist.
extendnow optionally pads by copying/mirroring image data.
dipshownow 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.
dipinithas 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!
convolvenow works properly with a horizontal 1D filter in a 2D image.
frcshould now produce results consistent with the definition in the literature.
dip_measurementobject (by Petr Matula).
Changes to DIPlib
(Some of these changes propagate to DIPimage)
dip_Arith()performs all the dyadic arithmetic and logic operations.
dip_Div()now are defined as macros that call
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_ConvexHullGetFeret()provide a new way to do measurements on 2D objects. New measurement features related to these functions are:
dip_IntegerArrayCompareand 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).
dip_ScanFrameWork()is parallelized now for all cases. Affected functions are:
dip_Measure()has a new measurement type:
DIP_MSR_FUNCTION_COMPOSITEmeasurement type is much more efficient now.
dip_FeatureFeretIDmeasurement has changed. Now it is implemented through
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.
dip_ScanFrameWork()could produce incorrect results when image strides were different.
dip_Resample()produced wrong output image size in specific cases, due to numerical rounding in the computations.