Version 2.3 of DIPlib and DIPimage has been released. There is now only one version per platform.
For Linux the old libc is no longer supported (2.2 is the last version to support this).
Mac OS must be 10.6 or higher.
Changes to DIPimage
dipdrawpolygon works the same way as diproi, but returns the coordinates of the selected region instead of a binary image. Additionally, the user can now, using the space bar, switch to a mode for moving the set points. This new function is useful, among other things, to create an input to snakeminimize.findmaxima, findminima and subpixlocation can be used to determine the location of local extrema with sub-pixel accuracy.dpr and frc compute the differential phase residuals and Fourier ring correlation, respectively. Both are similarity measures between images.dip_image/eig.dip_image/hypot.dip_image/ismatrix, dip_image/isrow and dip_image/iscolumn, to match new functions in MATLAB 7.11.dip_image/ind2sub and dip_image/sub2ind.dip_image/circshift to shift an image by integer distances.dip_image/diag.dip_image/unique.slice_in, to complement slice_ex (nee ex_slice) and slice_op. slice_in inserts a slice into an image, in the same way that slice_ex extracts a slice.stretch now supports color and tensor images.diproi now uses dipdrawpolygon for the user interaction part.dip_image/inv now uses the 'LU' method by default.dip_image/svd will now not waste lots of memory when only one output argument is given.readtimeseries is now more efficient with multi-plane TIFF files.fillholes now has a 2nd input argument to specify connectivity.measure now has a default connectivity of Inf rather than 1. This matches the default in label.cut now has an additional, optional parameter, origin. cropim has been moved to the aliases directory, use cut instead.dip_image/find and dip_image/findcoord now accept two additional parameters, mirroring the built-in MATLAB function find: you can now choose to find only the first or last n pixels.ex_slice is now called slice_ex, the old name is still available in the aliases directory.noise can now also generate pink and Brownian noise.readim interface to loci_tools.jar is much more efficient. It only works with the latest version (5.0, currently labeled “Trunk build” at http://loci.wisc.edu/bio-formats/downloads).dip_measurement objects with very large ID values now works without running out of memory.dip_image/cat now preserves ending singleton dimensions.Changes to DIPlib
(Some of these changes propagate to DIPimage)
dip_Canny(), the famous Canny edge detector.dip_SubpixelMaxima(), dip_SubpixelMinima() and dip_SubpixelLocation(), functions to determine location of extrema with sub-pixel accuracy.dip_ChainCodeGetRadius() obtains some object parameters from its chain code: maximum and minimum radius, mean radius, and variance of radius. dip_Measure() uses this function by specifying the dip_FeatureRadiusID() measurement feature.dip_KuwaharaImproved() and dip_GeneralisedKuwaharaImproved() do the same as dip_Kuwahara() and dip_GeneralisedKuwahara(), but add a threshold parameter to avoid shifting the kernel in flat regions of the image. This avoids creating false edges in flat regions due to noise.dip_RandomSeedWithClock(), to initialise a dip_Random variable using the system clock.dip_GeneralConvolution() implements a convolution for non-separable kernels in the spatial domain. Complements dip_SeparableConvolution() and dip_ConvolveFT().dip_MapView() and dip_MirrorView() do the same thing as dip_Map() and dip_Mirror(), but instead return a ROI on the original image, making no copy of the data.dip_ImageDoEdge() (not documented).dip_SingularValueDecomposition() now can return only the singular values, saving lots of memory if you don’t need the full decomposition.dip_ChainCode object, now use less memory. Recompile any program that links with DIPlib and uses chain codes!dip_Kuwahara() and dip_GeneralisedKuwahara() are now biased towards the middle of the filtering kernel, rather than the top left. This avoids shifts of regions in the output image in certain situations.dip_SelectValue() and dip_NotZero().dip_BinaryPropagation().dip_ImageChainCode() no longer starts the chain with a useless 0 code.dip_HartleyTransform() that caused crashes or wrong output.Changes to dipIO
(This change propagates to DIPimage)
dipio_ImageReadTIFF() now can read all image planes into a single 3D image (or 4D if there is color channels). Simply choose image plane -1.