The basic ideas for LUTs:

1) Use common formulas to look up color bin in LUTs and to look up histogram bin. (See my Histogram e-mail).

2) Migrate IJ2 color classes into ImgLib2 as Curtis mentioned. /*Or should we just use net.imglib2.type.numeric.ARGBType?*/

3) Support ColorTable16 and hide details of ColorTable8 & 16 by having ColorTable be a base class or interface that has the following methods:

// get number of colors (typically 256; 64K for ColorTable16)
int getSize();

// gets colors for displaying the LUT (typically bins is 256)
ColorRGBA[] getColors(int bins);

// given the mininum value that maps to the first color and maximum that maps to the last color, what does current value map to?
ColorRGBA lookUpColor(double value, double minimum, double maximum);

Thanks!
Aivar

On 8/10/12 2:39 PM, Curtis Rueden wrote:
Hi all,

Aivar and I chatted, and we have a plan for improving the LUT API.

We are going to migrate ImageJ2's color classes into ImgLib2, into net.imglib2.display along side ColorTable / ColorTable8 / ColorTable16, so that those color tables classes can make use of them. Specifically, the following classes from ImageJ2 will migrate:
  * imagej.util.ColorRGB
  * imagej.util.ColorRGBA
  * imagej.util.Colors
  * imagej.data.display.ColorTables

These four classes are useful general-purpose color classes that fit in well with ImgLib2's ColorTable API, and will allow us to provide better LUT functionality in general. Aivar can elaborate further on technical details if anyone else is interested.

Regards,
Curtis


On Tue, Aug 7, 2012 at 1:58 PM, Aivar Grislis <[email protected] <mailto:[email protected]>> wrote:

    I meant to send this to the imagej-devel list...


    -------- Original Message --------
    Subject:    IJ2 work/LUTs
    Date:       Tue, 07 Aug 2012 13:45:04 -0500
    From:       Aivar Grislis <[email protected]> <mailto:[email protected]>
    To:         [email protected]
    <mailto:[email protected]>, Curtis Rueden
    <[email protected]> <mailto:[email protected]>



    I've been looking at IJ2 trying to figure out how SLIM Plugin fits in.
    I was looking at the LUT code & am interested in refactoring it.

    I found some non-linearity bugs in the way LUTs are applied in the
    AutoContrast and DefaultImageDisplay plugins that I could fix.

    The LUT API could be improved.  There are two kinds of LUTs, ColorTable8
    and ColorTable16, the former is what's being used as a LUT, the latter
    is in the codebase but not really used or displayed AFAIK.

    This could be a Service or other Plugin.  I would consolidate the
    RealLUTConverter class into LUTs, LUTs would contain a ColorTable, the
    API might be something like this:

    // constructor
    LUT(ColorTable colorTable);

    // given a min/max range for the LUT, what is the color for current value?
    ARGBType lookup(double min, double max, double value);

    // get a swath of colors to use to display the LUT
    ARGBType[] getColors(int bins);

    Refactoring this isn't essential to SLIM Plugin, but it might be a good
    way to get up to speed with IJ2 work.

    Aivar





    _______________________________________________
    ImageJ-devel mailing list
    [email protected] <mailto:[email protected]>
    http://imagej.net/mailman/listinfo/imagej-devel



_______________________________________________
ImageJ-devel mailing list
[email protected]
http://imagej.net/mailman/listinfo/imagej-devel

Reply via email to