Here are some ImageJ
macros and plugins that I have written.
Please make sure that you
have the latest version
of the ImageJ ij.jar
file
Disclaimer::
The software in these pages is experimental. Use these plugins at your
own risk. Although I have made every effort to make sure that they run
as intended, there may be bugs and unexpected behaviour in instances
that I have not envisaged.
Please send any comments, problems or improvements to
.
Copyright notice: Please check the copyright
notices in the source code of each plugin. Some of the plugins are
modifications of earlier versions written by other authors and
therefore their original copyright notices apply. Please respect the
original authors authorship notices.
If no specific copyright notice is included, then consider the plugin
as free software: you can redistribute it and/or modify it under the
terms of the GNU General Public license as published by the Free
Software Foundation; either version 2 of the license, or (at your
option) any later version.
These programs are distributed in the hope that they will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details. You should have received a
copy of the GNU General Public License along with the programs; if not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111-1307, USA.
IsoPhotContour (java & class files) and IsoPhotContour2 (java & class files) These plugins take a greyscale image and creates a new image [called IsoPhot] with up to 8 contour lines in the grey scale range. Isophotcontour2 can be drawn in different selected colours and depth levels. There is an option to draw the contour lines on a white or on a black background. There is also an option to convert the image to 8 bit colour image, otherwise the result is an RGB image
New in 1.2 Can deal with stacks.
Blend (java & class files) Blends (linearly) two greyscale or RGB images with a chosen mix ratio.
List_LUTs and LUTs plugins. Files and examples can be found here.
Align_4 (java & class files) This plugin allows manual alignment (movements in the x and y directions) up to 4 images. Supports transparency of the active image and selection of fiducial points (an origin and a target) for easy alignment. The plugin may be useful to build mosaics of smaller images.
Align_RGB_planes (java & class files) This plugin allows to shift (move in the x and y directions) stretch and rotate the red green and blue planes in an RGB image. Includes a macro to resize images so they are not affected by the cropping due to the rotation. Thanks to Leon Espinosa for suggesting the modification to log the net movement of the planes.
New
in 1.7
Supports stacks of RGB images. A set of buttons to move across the
stack will appear when dealing with stacks. To align 48bit RGB stacks
use the Align_Slice plugin.
New
in 1.9
Does All Slices.
Align_Slice (java & class files) This plugin allows to manually shift (move in the x and y directions) stretch and rotate a particular slice in an image stack.
Auto_Threshold and Auto_Local_Threshold (link to jar file, source included) These plugins binarise 8-bit images using various global (histogram-derived) and local (adaptive) thresholding methods.
Requires v1.42m or newer. Copy the jar file into the ImageJ/Plugins folder and either restart ImageJ or run the Help>Update Menus command. After this 2 new commands should appear: Image>Adjust>Auto Threshold andImage>Adjust>Auto Local Threshold. Details and examples can be found here (local link) or at the Auto_Threshold and Aulto_Local_Threshold at the Fiji website wiki (external links).
Threshold_Colour
( jar file includes source )
(requires
ImageJ 1.43h
This plugin (a modification
of Bob Dougherty's BandPass2 filter)
allows to threshold a colour RGB images in the HSB, RGB, CIE Lab and
YUV spaces. It suports extracting the range of HSB, RGB, CIE Lab or
YUV values from a sample ROI (any type). Use:
Extract the files from the zip archive and put them somewhere in the
plugins directory (or subdirectory). The Threshold_Colour entry will
appear in the Plugins hierarchy, depending on where theof the
subdirectory which the plugin is copied to (I suggest the name
"Segmentation" to keep all thresholding plugins).
Version
1.7 has a [Macro] button that generates a macro and sends it to the
Recorder window (if active) based on the current plugin settings. The
zip file also includes RGB2YUV and RGB2Lab plugins which are
necessary for that macro (note that these plugins convert an RGB
image to YUV and CIE Lab colour spaces but with values mapped into an
8-bit space).
Version 1.8 added a warning and commented lines
for back/foreground colours.
Version 1.9 solved the problem of not
applying the threshold if the original was being displayed.
Version
1.10 added Select button. Fixed bug related to the name of files
created with the image calculator command, solved bug in macro
generated code for IJ v1.43h onwards.
Version 1.11 background
according to Binary>Options, thanks to Michael Schmid for several
tips.
New!
Version 1.12 fixed the Selection button to return the proper ROI
rather than the inverse of it, launch recorder if not active when
pressing [Macro], added batch mode to the macro code.
Anaglyph (java & class
files) Creates colour or greyscale, red-cyan or red-green
anaglyphs, stereo pairs (crossed view stereo pairs) and depth-map
images from the depth data and focused image generated with the
extended depth of
focus plugin. The Anaglyph plugin expects both the "Height-Map"
and "Output" images to be open (they hold the
"topographical map" data and the "on focus"
data). For Height-Map images created using other programmes, they can
be 8 or 32 bits, but they should not be re-scaled (i.e. depth plane
pixel values should be contiguous in the grey scale and start a 0).
Because it cannot be known in advance the acquisition direction of
the Z sequence, it may be necessary to invert the view sides when
checking the red-cyan anaglyph. The plugin has been tested with only
a small number of slices (6~20), so please report any problems.
New
in 1.6:
A recent update of the Extended Depth of Focus plugin changed the name
of the "Topology" image to "Height Map". Version 1.6 of the Anaglyph
plugin
also expects the new file name.
Colour_Deconvolution (java & class files) This plugin implements stain separation using Ruifrok & Johnston's colour deconvolution method described in [1]. Details and examples can be found here.
Dichromacy (java & class files) This plugin simulates the three main types dichromatic vision due to lack of function or absence of retinal photosensitive pigments: protanopia (red), deuteranopia (green) and tritanopia (blue cones deficiency). More details and examples can be found here.
ThreePointCircularROI (java & class files) This plugin creates a circular ROI based on 3 user selected points on an image. The log window reports the coordinates of the centre of the circle and its radius. Co-linear points (that define an impossible circle) return a radius of -1.
Colour_Correct (java & class files) This plugin corrects the colours of an image by first subtracting the mean RGB values of a number of selected points considered to be 'black' and then subtracts the background by performing the ratio of the image and the mean RGB values of a number of points considered to be 'white' minus the 'black'. It does not correct for uneven illumination. The procedure is:
image = [(original-black)/(white-black)]*255.
This is a simple and quick
(although not the best) method to
compensate the filament temperature colour of light transmitted
images such as bright field microscopy when there is no original
illumination source available to perform the correction.
New
in 1.3 Bug fix, popup menu disabled during right
click.
Convex_Hull_Plus (java
& class files) This plugin calculates the convex hull and the
minimum bounding circle of a binary set (formed by white or black
particles).
The Convex Hull is the smallest convex polygon that
contains the set. The plugin uses the 'wrapping around' (Graham scan)
algorithm.
The Minimum Bounding Circle is the smallest circle that
contains the set. An algorithm was modified from Xavier Draye's
posting to the ImageJ mailing list. I implemented so it does the
calculations based on the convex hull points rather than the whole
set (as the points that define the Minimum Bounding Circle must be in
the Convex Hull). This should be speed up the computation. Please see
the source code for details.
The plugin can display any of the
above as a selection or draw them on the image. The plugin also
displays in the Log window: the number of points in the Convex Hull,
the length of the Convex Hull, the centre coordinates and radius of
the Minimal Bounding Circle (in pixel units).
Version 1.1 returns these values in
floating point format.
Version 1.2 fixes a bug in the Minimal
Bounding Circle routine.
Results_Histogram (java & class files) This plugin creates a histogram from a selected column of the Results Table data. Note that not everything that is shown in the Results window is necessarily in the Results Table. Incorporated into ImageJ 1.35g as the Analyze>Distribution... command.
Retinex (java & class files) This plugin is an implementation of the Retinex filter from the GIMP package. Retinex filtering is based on Land's theory of image perception. Several algorithms exist and among these the multiscale retinex with colour restoration algorithm (MSRCR) combines colour constancy with local contrast enhancement so images are rendered in a similar way to the colour perception of the human vision. There appears to be a bug in the GMP filter, which was avoided here by using the built-in Gaussian filter of ImageJ. The Retinex plugin and examples are here.
The ImageJ plugin was written by Francisco Jiménez Hernández (UAEMex) jimenezf at fi.uaemex.mx during a research visit to Birmingham University School of Dentistry.
IJ_Robot
(java & class files) This plugin calls
the Robot Java class. The purpose of the plugin is to allow the macro
language to control other programs via programmed clicking and key
presses.
When
running the plugin one must specify an 'order' to the robot and some
parameters (not all orders require all the parameters).
CaptureScreen: this is similar to the IJ function Plugins>Utilities>Capture Screen.
A handy way to find
the target coordinates is to first grab the screen (which opens as an
image in ImageJ) and check the coordinates with the mouse (reported
in the status bar).
Important!
It may be also necessary to slow down the macro calls to this plugin between orders by using the macro command: wait(time_in_milliseconds). For instance when grabbing an image with an external programme, this might take some time to complete, and so calling further commands, these might not be executed while the image is being grabbed.
Below
is my collection of ImageJ plugins to perform various morphological
operations.
All plugins are recordable. Some macros that make use
of those plugins are also included.
Download
the full set as a single zip file from here.
The
zip file contains a Morphology folder with all the plugins and
macros. Unzip the files in the plugins folder and finally restart
ImageJ.
Be aware that while most macros were written to deal with
white particles, the plugins, deal with both, black or white
particles (this means that the macros can be easily modified to deal
with black particles too).
Fiji users: All the
plugins and macros can be used in Fiji, but you should remove the
*.java files from the /plugins/Morphology folder.
Add_Borders.class
This
plugin set the pixels at the border of the image to black (0) or white
(255) in the case of 8, 16 and 32 bits and to values (0,0,0) or
(255,255,255) in 24bit images.
This is used to set the image boundary values for special cases of
binary and greyscale reconstruction, watershed transform and so on.
Some of the macros in this collection use this plugin.
BinaryConditionalDilate_.class
This
plugin dilates (3x3 neighbourhood, 8-connected) particlesin an image
(called seed) inside another image (called mask). The procedure can
be applied n of times, or until idempotence if n = -1. In that case
the procedure becomes is the same as BinaryReconstruction.
BinaryConditionalErode_.class
This
plugin erodes (3x3 neighbourhood, 8-connected) particles in an image
(called seed) except what is masked in another image (called mask)
(i.e. the mask "protects" what should not be eroded). it
can be applied n times, or, until idempotence if n = -1.
BinaryConnectivity_.class
Returns
the number of connected pixels (+1) to each foreground pixel (8
neighbours): background = 0, single pixel = 1, end of a line = 2,
bifurcations = 3, triple points = 4, etc. To see the resut, you will
need to adjust the Brightness/Contrast, or use an appropriate LUT
such as glasbey.lut
(included in this collection).
BinaryDilate_.class
This
plugin performs a 3x3 8-neighbour Binary Dilation of a binary image.
The differences with the built in Dilation in ImageJ are:
BinaryDilateTest.txt is a macro that shows the effect of the different coefficients.
BinaryDilateNoMerge4_.class
BinaryDilateNoMerge8_.class
These
plugins perform a conditional binary dilation of a binary image
(without merging particles together). The results are similar to a
binary watershed transform of the background, partitioning it into
areas of influence of the particles. Dilations are done with 4 or 8
pixel structuring elements respectively. The number of iterations can
be set. Use -1 for dilation until idempotence.
Very slow, maybe
there are better algorithms, but slow seems better than nothing...
To dilate without merging until
idempotence, the macro Influence_Zones.txt
described below is faster, although the principle undelying the
algorithm is a different one.
BinaryGeodesicDilateNoMerge8_.class
This
plugin performs a conditional binary dilation of a binary image (seed)
inside another binary image (mask), without merging the seeds when they
meet.
The results are similar to a the BinaryDilateNoMerge8, but the
operation is done inside a mask and so it restricts the dilation to the
mask.
The number of iterations can be set. Use -1 for dilation until
idempotence.
Very slow, maybe there are better algorithms, but slow seems better than nothing...
BinaryErode_.class
This
plugin performs a 3x3 8-neighbour Binary Erosion of a binary
image.
The differences with the built in erosion in ImageJ are:
BinaryPrune.txt is a macro that prunes all the branches of a binary skeleton, leaving only the closed loops. See also PruneAll.txt for another pruning method.
BinaryFill_.class
BinaryFill_2.class
These
plugins fill holes in 8-connected particles (and also in
child-particles) of a binary image. This function was incorporated in
ImageJ v.1.31o (Process->Binary->Fill holes).
BinaryFill_2
is a much faster version, that uses ImageJ's flood fill.
BinaryFilterReconstruct_.class
This
plugin filters 8-connected particles in a binary image that otherwise
would disappear after n erosions. This technique is also called
"opening
by reconstruction",
The difference with morphological Opening is that
BinaryFilterReconstruct preserves the original shape or the particles
(while opening tends to smooth the boundaries of particles). The
algorithm is n erosions, followed by a Binary Reconstruction of the
original image based on the eroded image as the seed.
The macro
BinaryFilterReconstruct.txt
shows how to implement this as a macro using the BinaryReconstruct
plugin.
New
in 1.3
Changed 'dilations in a mask' for 'floodfill8 in the mask from the
seed' to speed up.
New
in 1.4
Fixed bug with black particles and inverted LUTs.
New
in 1.5
Slight speed improvement.
New
in 1.6
Speed up by using 1D arrays.
BinaryHitOrMiss_.class
This
plugin returns the locations of the image that match the kernel
pattern.
The pattern is defined by a 3x3 square neighbourhood
where 0=empty, 1=set, 2=don't care.
BinaryLabel8_.class
and BinaryLabel_.class
ImageJ
plugin for labelling particles (8 neighbours) in a binary image.
BinaryLabel8_ can
label up to 65530 particles in a unique greyscale value (from 1 to
65531), after that, the colours are recycled.
The output is a new
16 bit greyscale image with re-scaled brightness.
BinaryLabel_ can label more particles thant the
above, as it stores the result in a 32bit image.
The BinaryLabelMacro.txt
macro does a similar job.
The ideal look up table (LUT) to
maximise the contrast between labelled particles is glasbey.lut
(included in the zip file). Please read about it in Chris
Glasbey's website (the link to the paper is
http://www.bioss.ac.uk/staff/chris/colorpaper.pdf
).
BinaryReconstruct_.class
This
is a very powerful morphological operation that reconstructs
(retains) 8-connected particles in an image (called mask) based on
markers present in another image (called seed).
Morphological
Reconstruction consists of dilating the seeds inside the mask (so
particles that do not have seeds are not reconstructed).
New
in 1.5
Changed 'dilations in a mask' for 'floodfill8 in the mask from the
seed' to speed up.
New
in 2.0
Rewrite following the guidelines at
http://pacific.mpi-cbg.de/wiki/index.php/PlugIn_Design_Guidelines.
Apart from being about 4 times faster, it can be called from another
plugin without having to show the images. The plugin does not process
stacks anymore, but that was not commonly used anyway.
To call the
binary reconstruction plugin from another without displaying the
images use, for example:
BinaryReconstruct_ br = new BinaryReconstruct_();
Object[] result = br.exec(img1, img2, null, false, true);
//parameters above are: mask ImagePlus, seed ImagePlus, name, create new image, white particle
if (null != result) {
String name = (String) result[0];
ImagePlus recons = (ImagePlus) result[1];
}
This procedure is called
"Feature-AND" in reference [2].
New
in 2.1
Supports 4-neighbour connectivity.
New
in 2.2
Speed up by using 1D arrays.
Hysteresis.txt: This macro uses Binary
Reconstruction to aid thresholding an image.
Hysteresis thresholding (sometimes called double threshold)
is useful to segment, for example, edge gradients. The macro assumes
that the object is bright (usually the gradient after applying some
edge detector).
First set the threshold of the "safe zone" (that surely belongs to the
"object") then set the threshold for the "unsafe zone" (which for sure
is outside the "object"). The zone in-between is the "fuzzy zone".
Hysteresis thresholding adds parts of the fuzzy zone that are connected
to the safe zone.
The macro creates 2 images: "Reconstructed" is the
hysteresis-thresholded image, while "Result of Result" shows the safe
zone (white), the pixels added to the safe zone (yellow), the pixels of
the fuzzy zone not added (purple) and the unsafe zone (black).
The "Reconstructed" image corresponds to the white+yellow components of
the "Result of Result" image.
A similar alternative to hysteresis thresholding is to perform n
geodesic dilations of the safe zone masked by the fuzzy zone. This
way one can control how far from the safe zone the fuzzy pixels that
connected to it are to be added.
BinaryThick_.class
BinaryThick2_.class
These
two plugins dilate the locations of the image that match one
(BinaryThick_.class) or two (BinaryThick2_.class) kernel
patterns.
First dilates then rotates the kernel, if set to do so.
The pattern is a 3x3 neighbourhood where 0=empty, 1=set, 2=don't
care.
BinaryThin_.class
BinaryThin2_.class
These
two plugins erode the locations of the image that match one
(BinaryThick_.class) or two (BinaryThick2_.class) kernel
patterns.
First erodes then rotates the kernel, if set to do so.
The pattern is a 3x3 neighbourhood where 0=empty, 1=set, 2=don't
care.
Catalogue_Particles.txt
This
macro creates a catalogue of particles (all in one image) and a stack
(1 particle per slice) sorted by the values of any of the
morphological parameters in the Results Table.
Classify_Particles.class
This
plugin allows to classify the particles based on the data produced by
other plugins. Here are all the
details.
Correlate_Results.txt
This
plugin computes the correlation between any 2 parameters from the
Results Table.
Plot_BivariateGraphs.txt bivariate plots
between all morphological parameters in the Results Table.
This can take considerable time to finish and produce graph images
exceedingly large.
Domes_.class
This
plugin extracts "domes" in a greyscale image. Domes are
also called h-convex transform in [6] and they are
obtained by subtraction of the h-maxima from the original image
They are bright 8-connected regions of up to given height h (measured
from
their top downwards) in the greyscale function such that all the
pixels around the dome have strictly lower greyscale values.
This plugin
can also return "basins" (regionally dark regions) or h-concave
transform in [6]
instead
of domes. They are obtained by subtraction of the original from
h-minima transform
Domes and basins are good candidates to extract
reconstruction markers in images with uneven backgrounds. See
reference [3].
New in 2.0 Rewritten
following the guidelines at
http://pacific.mpi-cbg.de/wiki/index.php/PlugIn_Design_Guidelines.
This version uses the new GreyscaleReconstruct plugin.
New in 2.1 The basins are
returned with the correct polarity.
Domes_stack.txt This macro extracts the domes (or basins) in a whole stack.
EDM_16bits.txt
This
macro produces an Euclidean Distance Map on a binary image [the
object over which the EDM is calculated is assumed to be 255 and the
background 0]. The macro extends the built in ImageJ command to
distances of up to 65535 pixels. The result is a 16 bit image. Note
that the distance transform implemented in ImageJ (and used in this
plugin) is approximate. If you need an exact distance transform, see
Bob Dougherty's
Local Thickness. plugin.
GreyscaleDilate_.class
GreyscaleErode_.class
These
plugins perform a 3x3 Binary Dilation/Erosion of a greyscale image.
Same as the Min and Max filters of radius=1 (8 neighbours) in ImageJ,
but:
Greyscale "Proper" Morphological Filters (macros)
GreyscaleReconstruct_.class
This
plugin reconstructs a greyscale image (the "mask" image)
based on geodesic dilations of a "seed" image. This is an
implementation of the
parallel algorithm from [3]
(there are faster algorithms, though).
It
is very important to read Vincent's paper [3]
and Soille's book [6]
to understand greyscale
reconstruction and its applications.
The reconstruction algorithm
is: iterated 8-neighbour geodesic dilations of the seed UNDER the
mask image until stability is reached (the idempotent limit).
The 'reconstruction by erosion' corresponds to the complement of the
reconstruction
by dilation of the complement of the mask with the complement of the
seed (i.e. invert both images,
reconstruct by dilation and invert the result).
New in 2.0
Rewrite following the guidelines at
http://pacific.mpi-cbg.de/wiki/index.php/PlugIn_Design_Guidelines.
Apart from being immensely faster, it can be called from another
plugin without having to show the images. See the example for
BinaryReconstruct. This version computes the result image
differently, which seems much faster for large images. It visits all
grey levels where it binary-reconstructs the thresholded mask with
the thresholded seed and retains the maximum greylevel at which the
reconstruction was done. The plugin does not process stacks anymore,
but that was not commonly used anyway.
New
in 2.1
Supports 4-neighbour connectivity.
Morphological Gradients and 2nd Derivative macros
Morphological_Clustering.txt labels particles in k different classes based on the raw data in the Results Table, their computed Z-scores (data transformed to have mean=0 and standard deviation=1, so all descriptors have comparable weightings) or the principal components extracted. It requires Jarek Sacha's k-means clustering plugin (http://ij-plugins.sourceforge.net/plugins/clustering/index.html)
Morphological_PCA.txt uses Michael Abràmoff's PCA plugin (http://bij.isi.uu.nl/pca.htm) to reduce large data sets by combining existing variables into a smaller set of 'components' based on their contribution to the observed data variance. The new components are appended to the Results Table. You can then use the principal components to -for example- do k-means clustering with the Morphological_Clustering macro.
Parameter_Matrix.txt creates a graphic representation of the object parameters in the Results Table (normalised to the table values) as coloured spots in a matrix. The data values per particle (in a row) use a diverging look up table which facilitates identifying extreme values as well as objects with similar morphological properties.
Particle_Data_Map.txt labels particles with up to 3 raw or rescaled shape parameters as RGB, HSB or HS values. Mapping values to object positions may help revealing spatial associations. This is a form of spatial encoding that can be used to disclose where in a sample the different morphological features appear. Alternatively it can be used for performing interactive parameter thresholding (e.g. mapping the values as RGB and using the Threshold_Colour plugin in RGB mode so the 3 available sliders filter a different parameter each).
Particles4_.class
Particles8_.class
Lines8_.class
These
are plugins for estimating various statistics of binary 4- and
8-connected particles or lines (Lines8_).
Important:
1) These plugins assume square pixels
to extract the various geometrical measures. If your image capture
device has an aspect ration different to
1:1, you should not use these plugins.
2) These plugins do not
return exactly the same values as the built-in ImageJ Analyze
Particles command because they use an alternative concept to
extract area and
perimeter. Here, Perimeter and Area are measured
from the centres of the boundary pixels of a particle,
i.e. the length of the 8-neighbours chain code (Freeman algorithm).
Area
disregards "holes" in the particles (i.e. it returns the
area bounded by the perimeter), but Pixels returns the number
of pixels forming the particle (a particle with
holes will therefore have more Area
than Pixels.
Also
note that as Area is calculated from the polygon formed by
the boundary pixels (the
chain code), if the particle has no holes, then Area is
likely to be smaller than Pixels
(since the polygon is positioned in the centres of boundary pixels).
Using this logic, the Area of 1 pixel particles is 0, for a
2x2 square it is 1, etc. while the
value of Pixels in each particle is what you see.
Likewise, a single pixel
particle has a Perimeter of 0, for a 2x2 square it is 4, and
so on.
Why
to write such a plugin?
This was created to return exactly the number of
pixels in particles when dealing with synthetic images
(such as percolation clusters).
TheAnalyze Particles command in ImageJ performs a different
measurement of the perimeter
of particles.
These plugins can label the particles in
different colours. Some colours are reserved for the particle
detection and some temporary calculations, so there are only 250
labelling
colours available (1 to 251). It is therefore possible when using
Particles4_ that two 4-connected particles which are corner-neighbours
may end up labelled with the same colour and consequently
look like a single 8-connected particle (this may happen when a very
large particle is surrounded by many small ones). Although the
labelling may appear confusing, the results generated are correct. (If
one only needs to label the particles unequivocally, then it is
better to use the BinaryLabel8_.class
plugin because it can label up to 65530 particles in unique greyscale
values --after that, it also recycles the labelling colour.). BinaryLabel_.classcan
label more particles as it uses a 32bit image to store the labels, but
remember that .
The
plugins can draw the centre of mass (rounded to the nearest pixel,
labelled or not) of each particle or the start coordinates of each
particle (the only pixel with 100% certainty that it belongs to the
particle). These may be useful for reconstruction purposes (see the KeepParticlesInRange.txt
macro below and BinaryReconstruct_
plugin above).
Filtered particles (smaller than the minimum and
larger than the maximum sizes) are deleted from the image.
Lines8_
is an experimental modification of the
Particles8 plugin to analyse lines and skeletons.
The main differences from the other 2 plugins are as follows. (i) The
option to skeletonise the image guarantees that the analysis is
performed on lines/skeletons. (ii) Provides two estimates of skeleton
lengths: PLength is measured from the boundary pixels (each counted
once regardless the number times they are visited) while SkelLen is
the length based on connectivity. SkelLen also measures the length of
branches that are not part of the boundary (such as branches inside
loops, which PLength will otherwise miss). (iii) Skeletons can be
characterised by their pixel connectivity using the Redirect
to>Connectivity option. This creates a new image where each
particle pixel in the original is labelled with the number of
particle pixels (including itself) that exist in its 3x3
neighbourhood. The frequency of 1- to 8-point neighbour pixels is
also reported to the Results table and can be utilised to infer the
number of free ends (given by 1Point counts), inside-line points
(2Point), the number of bifurcations (3Point) and so on.
Interestingly, the skeleton can reveal additional geometrical
properties of the objects. For example, polygons usually have
skeletons with the same number of branches as number of sides (unless
the borders are very noisy) which can be inferred from the 1Point
counts.
New
in Version 1.6
The
labels of the options have been modified so they are consistent with
those of the built in Analyzer in ImageJ.
A new option "Overwrite
Results" was added to prevent the macro asking to save or delete
the current Results when executing from a macro.
The results of
the particle analysis are now sent to the ResultsTable, so the data
generated can be retrieved from a macro for further processing. The
macros below show how to do it.
ParticleHoleNumber.txt The number of holes per particle is obtained by redirection of the original image with all its holes filled, to a copy of the original image where the holes' starting pixels are set to 1. These pixels (one per hole) are accumulated in the Greyscale Integrated Density column (GrIntDen).
Note: Although these plugins can analyse stacks, the results from all the slices are stored in the same ResultsTable. The data has an extra column named 'Stack' that indicates where the measurements belong to. Therefore, the macro examples above need to be modified to work properly with stacks.
New
in Version 1.7
The
plugin analysis has been extended to include the following new
parameters:
Particles8_Plus adds more parameters (complete list below).
New
in Version 1.8
Fixed
bug that did not delete single border pixels when "exclude edge
particles" was selected. Added CountCorrect parameter for
unbiased counting of particles. This parameter should be used with
"exclude edge particles" checked.
Here is the complete
list of parameters:
Example macros that show
some of the new parameters: DrawBoundingBox.txt,
DrawFeret&Breadth.txt, DrawMinR&MaxR.txt.
The
macroUnbiasedCounting.txt
counts particles that touch the top and right image frames but not
the bottom and left frames.
The macro UnbiasedParticleArea.txt
estimates the corrected average particle area and number using the
CountCorrect parameter.
New
in Version 1.8a of Particles8_Plus
Fixed
a bug in the Minimal Bounding Circle routine.
Added an example
macro: DrawBoundingCircle.txt.
New
in Version 1.9
When
the image is a stack, the stack label is written to the Results
window ("null" otherwise).
Changed some parameter names
that caused problems when importing the data into
SPSS.
DrawFeret&Breadth.txt
was updated to use the new parameter names.
New
in Version 2.0
More
parameters are calculated by the plugin (the value -1 indicates that
the parameter is no possible to calculate):
The measurements can be redirected to another image. "Redirection" means that the plugin will use the current binary image to extract the particle profiles and morphometrical parameters, and a further 8bit greyscale image (typically the original image from which the binary image was created) to extract the greyscale statistics corresponding to the particles. This second greyscale image must be open and its name specified in the Redirect to box. When redirection is selected, the following greyscale statistics are produced:
Plot_Histograms.txt estimates histograms of all the morphological parameters in the Results Table with a single command, automatically excluding columns with coordinates values. The result is a multiple graph montage.
Summarize_Results.txt produces statistics of the Results table in tab-delimited format so they can be loaded in other programs. The summaries include the average, minimum, maximum, standard deviation, variance, average deviation, skweness and kurtosis.
Thin_Results_Table.txt based on J. Mutterer's Import Results Table macro, shows how to keep certain values in the Results Table. Note: You should always keep the 'label' column.
Viscous_Geodesic_Reconstruction.txt reconstructs areas of objects larger than a disc of radius R. This consists of reconstruction followed by an opening at every step. Mask and Seed must be binary [0..255]. Foreground must be white and Background black. see reference [5].
Last updated on 8/Dec/2011.