Colour Deconvolution2

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Colour Deconvolution2

Gabriel Landini

The Colour Deconvolution plugin has been updated.
Instructions and files are available at:

There is also a publication that can be used as a citation:

What is new in v2.0
* Added option for determining the 3rd undefined colour via the Moore-Penrose
pseudo inverse method (cross product of the two other vectors). This is the
correct way to determine it, yet the old method remains available (just untick
the 'Cross product' option) for back-compatibility and historical reasons.
Using the cross product for determining the 3rd colour can result in matrices
with negative coeficients (i.e. 'impossible' colours), and therefore the LUT
of the 3rd component determined this way will not represent a given colour in
the image. Thanks to communications by Gloria Diaz, Mitko Veta and Peter Haub.

* Added options to output LUTs images, 32bit images (transmittance,
absorbance) and RGB (i.e. intensity) images. RGB output includes operations to
remove or keep a particular colour. The same warning above remains for
automatically determined 3rd vectors. Thanks to Filippo Piccinini for his help
and testing.

* Added an "RGB Retain all" option which is useful to understand how image
colour data are processed by the colour deconvolution (e.g. dyes lacking
"ideal" behaviour in terms of Beer-Lambert law).

* Speeded up code > 3.2 times (Java 14) (thanks to Pete Bankhead and Peter
Haub for their useful comments on precomputing some formulae).

* The code now checks whether the matrix can be inverted (non-zero
determinant). If not, the program will attempt to make it invertible by adding
a small value (0.001) to the rows, columns or diagonals that add to 0.  A
warning is shown if "Show matrices" is checked. This is a bit less drastic
than the original code which added those small value to all 0 matrix
coefficients. Be aware of any warnings when determining new vectors to be sure
that the LUTs represent intended colours.

* The option to show matrix values is overridden and set to true when the
input is via ROIs or User Values (you want to know what the results were).

* The plugin now has a public exec() method that can be called directly
without showing any images. The exec() method expects the *Input Vector
Matrix* values.

* An autogenerated macro is printed to the log window when one determines
vectors from ROIs (it saves typing lots of numbers).

* Added warning about determining your own vectors. * The Legend now shows the
Computed Vector Matrix which defines the colours shown (instead of the Input
Vector Matrix which needs to be normalised, etc.).
- - -

Let me know of any issues.


ImageJ mailing list: