Changeset 7970


Ignore:
Timestamp:
04/13/12 18:25:10 (8 years ago)
Author:
aivar
Message:

SLIM Plugin: Added option for colorized grayscale images. Trac #702. (Also some work towards masking/filtering #689 / #690.)

Location:
trunk/projects/slim-plugin/src/main/java/loci/slim
Files:
1 added
15 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/projects/slim-plugin/src/main/java/loci/slim/IGrayScaleImage.java

    r7922 r7970  
    4646 * @author Aivar Grislis 
    4747 */ 
    48 public interface IGrayScaleImage { 
     48public interface IGrayScaleImage extends IGrayScalePixelValue { 
    4949 
    5050    /** 
     
    6868     */ 
    6969    public void enable(boolean enable); 
    70  
    71     /** 
    72      * Gets a grayscale pixel value, to test against a threshold. 
    73      * 
    74      * @param channel 
    75      * @param x 
    76      * @param y 
    77      * @return unsigned byte expressed as an integer, 0...255 
    78      */ 
    79     public int getPixel(int channel, int x, int y); 
    8070 
    8171    /** 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/SLIMProcessor.java

    r7937 r7970  
    379379                        m_excitationPanel.quit(); 
    380380                        m_excitationPanel = null; 
     381                        updateExcitation(null, null); 
    381382                        //TODO redo stop/start cursors on decay curve? 
    382383                    } 
     
    450451                            x *= zoomFactor; 
    451452                            y *= zoomFactor; 
     453                             
     454                            m_x = x; 
     455                            m_y = y; //TODO ARG 4/6/12 trying to fix my flakey bug 
     456                             
    452457                            uiPanel.setX(x); 
    453458                            uiPanel.setY(y); 
     
    602607 
    603608            success = true; 
     609        } 
     610        else { 
     611            _fittingCursor.setHasPrompt(false); 
    604612        } 
    605613        return success; 
     
    794802        fitInfo.setNoiseModel(uiPanel.getNoiseModel()); 
    795803        fitInfo.setFittedImages(uiPanel.getFittedImages()); 
     804        fitInfo.setColorizeGrayScale(uiPanel.getColorizeGrayScale()); 
    796805        fitInfo.setAnalysisList(uiPanel.getAnalysisList()); 
    797806        fitInfo.setFitAllChannels(uiPanel.getFitAllChannels()); 
     
    907916            ColorizedImageType[] outputImages = parser.getColorizedImages(); 
    908917            imageColorizer = new ColorizedImageFitter(); 
    909             imageColorizer.setUpFit(outputImages, dimension, 
    910                     fitInfo.getIndexColorModel(), components); 
     918            imageColorizer.setUpFit( 
     919                    outputImages, 
     920                    dimension, 
     921                    fitInfo.getIndexColorModel(), 
     922                    components, 
     923                    fitInfo.getColorizeGrayScale(), 
     924                    m_grayScaleImage); 
    911925            imageColorizer.beginFit(); 
    912926        } 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/FitInfo.java

    r7889 r7970  
    2525    private String _fittedImages; 
    2626    private IndexColorModel _indexColorModel; 
     27    private boolean _colorizeGrayScale; 
    2728    private String[] _analysisList; 
    2829    private boolean _fitAllChannels; 
     
    199200    public void setIndexColorModel(IndexColorModel indexColorModel) { 
    200201        _indexColorModel = indexColorModel; 
     202    } 
     203     
     204    /** 
     205     * Returns whether to create colorized grayscale images. 
     206     *  
     207     * @return  
     208     */ 
     209    public boolean getColorizeGrayScale() { 
     210        return _colorizeGrayScale; 
     211    } 
     212 
     213    /** 
     214     * Sets whether to create colorized grayscale images. 
     215     *  
     216     * @param colorizeGrayScale  
     217     */ 
     218    public void setColorizeGrayScale(boolean colorizeGrayScale) { 
     219        _colorizeGrayScale = colorizeGrayScale; 
    201220    } 
    202221 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/cursor/FitterEstimator.java

    r7936 r7970  
    2323    @Override 
    2424    public int getEstimateStartIndex(double[] yCount, int start, int stop) { 
     25        System.out.println("FitterEstimator.getEstimateStartIndex " + yCount.length + " " + start + " " + stop); 
    2526        // start index changes for RLD estimate fit 
    2627        int transEstimateStartIndex = findMax(yCount, start, stop); 
     
    2930 
    3031    @Override 
    31     public double getEstimateA(double A, double[] yCount, int start, int stop) { 
     32    public double getEstimateAValue(double A, double[] yCount, int start, int stop) { 
     33        System.out.println("FitterEstimator.getEstimateA " + yCount.length + " " + start + " " + stop); 
    3234        // A parameter estimate changes for RLD estimate fit 
    3335        int transEstimateStartIndex = findMax(yCount, start, stop); 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/AbstractBaseColorizedImage.java

    r7963 r7970  
    1818import ij.process.FloatProcessor; 
    1919 
     20import loci.slim.IGrayScalePixelValue; 
    2021import loci.slim.histogram.HistogramData; 
    2122import loci.slim.histogram.HistogramDataChannel; 
     
    3637    private int _channels; 
    3738    private int _channel; 
     39    private boolean _colorizeGrayScale; 
    3840    private ImageStack _imageStack; 
    3941    private ImagePlus _imagePlus; 
     
    4547    private IColorizedFittedImage _fittedImage; 
    4648     
    47     public AbstractBaseColorizedImage(String title, int[] dimension, 
    48             IndexColorModel indexColorModel) { 
     49    public AbstractBaseColorizedImage( 
     50            String title, 
     51            int[] dimension, 
     52            IndexColorModel indexColorModel, 
     53            boolean colorizeGrayScale, 
     54            IGrayScalePixelValue grayScalePixelValue) { 
    4955        _title = title; 
    5056        _width = dimension[0]; 
     
    5258        _channels = dimension[2]; 
    5359        _channel = UNKNOWN_CHANNEL; 
     60        _colorizeGrayScale = colorizeGrayScale; 
    5461         
    5562        // building an image stack 
     
    6471                = new ArrayList<HistogramDataChannel>(); 
    6572         
    66         for (int c = 0; c < _channels; ++c) { 
    67             // build the actual displayed image 
    68             IColorizedFittedImage fittedImage = null; 
    69             if (true) { 
    70                 fittedImage = new FloatFittedImage(); 
    71             } 
    72             else { 
    73                 fittedImage = new ColorFittedImage(); 
    74             } 
    75              
    76             fittedImage.init(_width, _height, indexColorModel); 
    77  
    78             // add to stack 
    79             _imageStack.addSlice("" + c, fittedImage.getImageProcessor()); 
    80              
     73        for (int c = 0; c < _channels; ++c) {        
    8174            // build the histogram data 
    8275            _values = new double[_width][_height]; 
    8376            clear(_values); 
    84             HistogramDataChannel histogramDataChannel = new HistogramDataChannel(_values); 
     77            HistogramDataChannel histogramDataChannel 
     78                    = new HistogramDataChannel(_values); 
     79            dataChannelList.add(histogramDataChannel); 
    8580             
     81            // build the actual displayed image 
     82            IColorizedFittedImage fittedImage = null; 
     83            if (colorizeGrayScale) { 
     84                fittedImage 
     85                        = new ColorizedFittedImage(grayScalePixelValue, _values);  
     86            } 
     87            else { 
     88                fittedImage = new FloatFittedImage(); 
     89            } 
     90            fittedImage.init(_width, _height, c, indexColorModel); 
    8691            fittedImageList.add(fittedImage); 
    87             dataChannelList.add(histogramDataChannel);            
     92 
     93            // add to stack 
     94            _imageStack.addSlice("" + c, fittedImage.getImageProcessor()); 
    8895        } 
    8996         
     
    191198        minMaxLUT = PaletteFix.adjustMinMax(minMaxLUT[0], minMaxLUT[1]); 
    192199        if (null != _fittedImage) { 
    193             _fittedImage.setMinAndMax(minMaxLUT[0], minMaxLUT[1]); 
     200            if (_colorizeGrayScale) { 
     201                // redraw all images with new LUT 
     202                for (IColorizedFittedImage fittedImage : _fittedImages) { 
     203                    fittedImage.setMinAndMax(minMaxLUT[0], minMaxLUT[1]); 
     204                } 
     205            } 
     206            else { 
     207                // when using a FloatProcessor the LUT belongs to entire stack 
     208                _fittedImage.setMinAndMax(minMaxLUT[0], minMaxLUT[1]); 
     209            } 
    194210             
    195211            //TODO ARG KLUDGE 
    196212            //  This is a workaround to redisplay after the LUT range changes. 
    197213            //  Hopefully it will go away in IJ2. 
    198             //  Maybe update(ImageProcessor ip) 
     214            //  Maybe update(ImageProcessor ip) would work. 
    199215            //  "Updates this stack so its attributes such as min max calibration table and color model, are the same as 'ip'" 
    200             if (_fittedImage instanceof FloatFittedImage) { 
    201                 _imagePlus.setProcessor(_fittedImage.getImageProcessor().duplicate()); 
    202             }      
     216            _imagePlus.setProcessor(_fittedImage.getImageProcessor().duplicate());    
    203217        } 
    204218    } 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/ColorizedFittedImage.java

    r7963 r7970  
    55package loci.slim.fitting.images; 
    66 
     7import java.awt.Color; 
     8import java.awt.color.ColorSpace; 
    79import java.awt.image.IndexColorModel; 
    810 
     11import ij.process.ColorProcessor; 
    912import ij.process.ImageProcessor; 
     13 
     14import loci.slim.IGrayScalePixelValue; 
    1015 
    1116/** 
     
    1520 * @author Aivar Grislis 
    1621 */ 
    17 public class ColorFittedImage implements IColorizedFittedImage { 
     22public class ColorizedFittedImage implements IColorizedFittedImage { 
     23    private static final float SATURATION = 0.75f; 
     24    IGrayScalePixelValue _grayScalePixelValue; 
     25    double[][] _values; 
     26    int _width; 
     27    int _height; 
     28    int _channel; 
     29    IndexColorModel _indexColorModel; 
     30    ColorProcessor _colorProcessor; 
     31    double _min; 
     32    double _max; 
     33     
     34    public ColorizedFittedImage(IGrayScalePixelValue grayScalePixelValue, 
     35            double[][] values) { 
     36        _grayScalePixelValue = grayScalePixelValue; 
     37        _values = values; 
     38    } 
    1839 
    19     public void init(int width, int height, IndexColorModel indexColorModel) { 
     40    @Override 
     41    public void init(int width, int height, int channel, 
     42            IndexColorModel indexColorModel) { 
     43        _width = width; 
     44        _height = height; 
     45        _channel = channel; 
     46        _indexColorModel = indexColorModel; 
     47        _colorProcessor = new ColorProcessor(width, height); 
     48        for (int y = 0; y < height; ++y) { 
     49            for (int x = 0; x < width; ++x) { 
     50                int grayValue = _grayScalePixelValue.getPixel(channel, x, y); 
     51                Color gray = getGrayColor(grayValue); 
     52                _colorProcessor.setColor(gray); 
     53                _colorProcessor.drawPixel(x, y);    
     54            } 
     55        } 
     56    } 
     57 
     58    @Override 
     59    public void setColorModel(IndexColorModel indexColorModel) { 
     60        _indexColorModel = indexColorModel; 
     61    } 
     62 
     63    @Override 
     64    public ImageProcessor getImageProcessor() { 
     65        return _colorProcessor; 
     66    } 
     67 
     68    @Override 
     69    public void setMinAndMax(double min, double max) { 
     70        if (min != _min || max != max) { 
     71            _min = min; 
     72            _max = max; 
     73 
     74            // redraw the entire image 
     75            for (int y = 0; y < _height; ++y) { 
     76                for (int x = 0; x < _width; ++x) { 
     77                    Color color = null; 
     78                    int grayValue = _grayScalePixelValue.getPixel(_channel, x, y); 
     79                    double value = _values[x][y]; 
     80                    if (min <= value && value <= max) { 
     81                        color = getColorizedGrayColor(grayValue, value); 
     82                    } 
     83                    else { 
     84                        color = getGrayColor(grayValue); 
     85                    } 
     86                    _colorProcessor.setColor(color); 
     87                    _colorProcessor.drawPixel(x, y); 
     88                } 
     89            } 
     90        } 
     91    } 
     92 
     93    @Override 
     94    public void draw(int x, int y, double value) { 
     95        int grayValue = _grayScalePixelValue.getPixel(_channel, x, y); 
     96        Color colorizedGray = getColorizedGrayColor(grayValue, value); 
     97        _colorProcessor.setColor(colorizedGray); 
     98        _colorProcessor.drawPixel(x, y); 
    2099    } 
    21100     
    22     public void setColorModel(IndexColorModel indexColorModel) { 
    23          
     101    private Color getGrayColor(int grayValue) { 
     102        return new Color(grayValue, grayValue, grayValue); 
    24103    } 
    25104     
    26     public ImageProcessor getImageProcessor() { 
    27         return null; 
    28     } 
    29      
    30     public void setMinAndMax(double min, double max) { 
    31     } 
    32      
    33     public void draw(int x, int y, double value) { 
     105    private Color getColorizedGrayColor(int grayValue, double value) { 
     106        if (_max == _min) { 
     107            return getGrayColor(grayValue); 
     108        } 
    34109         
     110        // convert value to 0.0..1.0 
     111        value = (value - _min) / (_max - _min); 
     112         
     113        // convert 0.0..1.0 to 1..254 (colors 0 and 255 have a special use) 
     114        int index = 1 + (int) (value * 253); 
     115         
     116        // get color 
     117        Color color = new Color(_indexColorModel.getRGB(index)); 
     118 
     119        // decompose color 
     120        float[] hsv = new float[3]; 
     121        Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), hsv); 
     122 
     123        // synthesize new color, using grayValue brightness 
     124        float hue        = hsv[0]; 
     125        float saturation = SATURATION; 
     126        float brightness = (float) grayValue / 255.0f; // 0..255 -> 0.0..1.0 
     127        return Color.getHSBColor(hue, saturation, brightness); 
    35128    } 
    36129} 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/ColorizedImage.java

    r7889 r7970  
    77import java.awt.image.IndexColorModel; 
    88 
    9 import loci.slim.fitting.images.AbstractBaseColorizedImage; 
     9import loci.slim.IGrayScalePixelValue; 
    1010 
    1111/** 
     
    2525     */ 
    2626    public ColorizedImage(String title, int[] dimension, 
    27             IndexColorModel indexColorModel, int parameterIndex) { 
    28         super(title, dimension, indexColorModel); 
     27            IndexColorModel indexColorModel, int parameterIndex, 
     28            boolean colorizeGrayScale, IGrayScalePixelValue grayScalePixelValue) { 
     29        super(title, dimension, indexColorModel, colorizeGrayScale, grayScalePixelValue); 
    2930        _parameterIndex = parameterIndex; 
    3031    } 
     
    4041        return parameters[_parameterIndex]; 
    4142    } 
    42      
    4343} 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/ColorizedImageFactory.java

    r7889 r7970  
    77import java.awt.image.IndexColorModel; 
    88 
     9import loci.slim.IGrayScalePixelValue; 
    910import loci.slim.fitting.images.IColorizedImage; 
    1011import loci.slim.fitting.images.ColorizedImage; 
     
    3031    } 
    3132     
    32     public IColorizedImage createImage(ColorizedImageType outputImage, 
    33             int[] dimension, IndexColorModel indexColorModel, int components) { 
     33    public IColorizedImage createImage( 
     34            ColorizedImageType outputImageType, 
     35            int[] dimension, 
     36            IndexColorModel indexColorModel, 
     37            int components, 
     38            boolean colorizeGrayScale, 
     39            IGrayScalePixelValue grayScalePixelValue) 
     40    { 
    3441        IColorizedImage fittedImage = null; 
    3542        String title; 
    36         switch (outputImage) { 
     43        switch (outputImageType) { 
    3744            case A1: 
    3845                title = (1 == components) ? "A" : "A1"; 
    3946                fittedImage = new ColorizedImage(title, dimension, 
    40                         indexColorModel, ColorizedImageFitter.A1_INDEX); 
     47                        indexColorModel, ColorizedImageFitter.A1_INDEX, 
     48                        colorizeGrayScale, 
     49                        grayScalePixelValue); 
    4150                break; 
    4251            case T1: 
    4352                title = (1 == components) ? "T" : "T1"; 
    4453                fittedImage = new ColorizedImage(title, dimension, 
    45                         indexColorModel, ColorizedImageFitter.T1_INDEX); 
     54                        indexColorModel, ColorizedImageFitter.T1_INDEX, 
     55                        colorizeGrayScale, 
     56                        grayScalePixelValue); 
    4657                break; 
    4758            case A2: 
    4859                fittedImage = new ColorizedImage("A2", dimension, 
    49                         indexColorModel, ColorizedImageFitter.A2_INDEX); 
     60                        indexColorModel, ColorizedImageFitter.A2_INDEX, 
     61                        colorizeGrayScale, 
     62                        grayScalePixelValue); 
    5063                break; 
    5164            case T2: 
    5265                fittedImage = new ColorizedImage("T2", dimension, 
    53                         indexColorModel, ColorizedImageFitter.T2_INDEX); 
     66                        indexColorModel, ColorizedImageFitter.T2_INDEX, 
     67                        colorizeGrayScale, 
     68                        grayScalePixelValue); 
    5469                break; 
    5570            case A3: 
    5671                fittedImage = new ColorizedImage("A3", dimension, 
    57                         indexColorModel, ColorizedImageFitter.A2_INDEX); 
     72                        indexColorModel, ColorizedImageFitter.A2_INDEX, 
     73                        colorizeGrayScale, 
     74                        grayScalePixelValue); 
    5875                break; 
    5976            case T3: 
    6077                fittedImage = new ColorizedImage("T3", dimension, 
    61                         indexColorModel, ColorizedImageFitter.T2_INDEX); 
     78                        indexColorModel, ColorizedImageFitter.T2_INDEX, 
     79                        colorizeGrayScale,  
     80                        grayScalePixelValue); 
    6281                break; 
    6382            case H: 
    6483                fittedImage = new ColorizedImage("H", dimension, 
    65                         indexColorModel, ColorizedImageFitter.H_INDEX); 
     84                        indexColorModel, ColorizedImageFitter.H_INDEX, 
     85                        colorizeGrayScale, 
     86                        grayScalePixelValue); 
    6687                break; 
    6788            case Z: 
    6889                fittedImage = new ColorizedImage("Z", dimension, 
    69                         indexColorModel, ColorizedImageFitter.Z_INDEX); 
     90                        indexColorModel, ColorizedImageFitter.Z_INDEX, 
     91                        colorizeGrayScale, 
     92                        grayScalePixelValue); 
    7093                break; 
    7194            case CHISQ: 
    7295                fittedImage = new ColorizedImage("X2", dimension, 
    73                         indexColorModel, ColorizedImageFitter.CHISQ_INDEX); 
     96                        indexColorModel, ColorizedImageFitter.CHISQ_INDEX, 
     97                        colorizeGrayScale, 
     98                        grayScalePixelValue); 
    7499                break; 
    75100            case F1: 
    76101                fittedImage = new FractionalIntensityImage("F1", dimension, 
    77                         indexColorModel, 0, components); 
     102                        indexColorModel, 0, components, colorizeGrayScale, 
     103                        grayScalePixelValue); 
    78104                break; 
    79105            case F2: 
    80106                fittedImage = new FractionalIntensityImage("F2", dimension, 
    81                         indexColorModel, 1, components); 
     107                        indexColorModel, 1, components, colorizeGrayScale, 
     108                        grayScalePixelValue); 
    82109                break; 
    83110            case F3: 
    84111                fittedImage = new FractionalIntensityImage("F3", dimension, 
    85                         indexColorModel, 2, components); 
     112                        indexColorModel, 2, components, colorizeGrayScale, 
     113                        grayScalePixelValue); 
    86114                break; 
    87115            case f1: 
    88116                fittedImage = new FractionalContributionImage("f1", dimension, 
    89                         indexColorModel, 0, components); 
     117                        indexColorModel, 0, components, colorizeGrayScale, 
     118                        grayScalePixelValue); 
    90119                break; 
    91120            case f2: 
    92121                fittedImage = new FractionalContributionImage("f2", dimension, 
    93                         indexColorModel, 1, components); 
     122                        indexColorModel, 1, components, colorizeGrayScale, 
     123                        grayScalePixelValue); 
    94124                break; 
    95125            case f3: 
    96126                fittedImage = new FractionalContributionImage("f3", dimension, 
    97                         indexColorModel, 2, components); 
     127                        indexColorModel, 2, components, colorizeGrayScale, 
     128                        grayScalePixelValue); 
    98129                break; 
    99130        } 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/ColorizedImageFitter.java

    r7963 r7970  
    99import java.util.List; 
    1010 
     11import loci.slim.IGrayScalePixelValue; 
    1112import loci.slim.histogram.HistogramTool; 
    1213 
     
    3536    } 
    3637     
    37     public void setUpFit(ColorizedImageType[] images, int[] dimension, 
    38             IndexColorModel indexColorModel, int components) { 
     38    public void setUpFit( 
     39            ColorizedImageType[] images, 
     40            int[] dimension, 
     41            IndexColorModel indexColorModel, 
     42            int components, 
     43            boolean colorizeGrayScale, 
     44            IGrayScalePixelValue grayScalePixelValue) 
     45    { 
    3946        _fittedImages.clear(); 
    4047        for (ColorizedImageType image : images) { 
    4148            IColorizedImage fittedImage = 
    4249                    ColorizedImageFactory.getInstance().createImage 
    43                             (image, dimension, indexColorModel, components); 
     50                            (image, 
     51                            dimension, 
     52                            indexColorModel, 
     53                            components, 
     54                            colorizeGrayScale, 
     55                            grayScalePixelValue); 
    4456            _fittedImages.add(fittedImage); 
    4557        } 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/FloatFittedImage.java

    r7963 r7970  
    1717    int _width; 
    1818    int _height; 
     19    int _channel; 
    1920    FloatProcessor _imageProcessor; 
    2021     
    21     public void init(int width, int height, IndexColorModel indexColorModel) { 
     22    public void init(int width, int height, int channel, 
     23            IndexColorModel indexColorModel) { 
    2224        _width = width; 
    2325        _height = height; 
     26        _channel = channel; 
    2427         
    2528        _imageProcessor = new FloatProcessor(width, height); 
     
    3336     
    3437    public void setColorModel(IndexColorModel indexColorModel) { 
    35          
     38        _imageProcessor.setColorModel(indexColorModel); 
    3639    } 
    3740     
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/FractionalContributionImage.java

    r7889 r7970  
    77import java.awt.image.IndexColorModel; 
    88 
     9import loci.slim.IGrayScalePixelValue; 
    910import loci.slim.fitting.images.AbstractBaseColorizedImage; 
    1011 
     
    3132     */ 
    3233    public FractionalContributionImage(String title, int[] dimension, 
    33             IndexColorModel indexColorModel, int component, int components) { 
    34         super(title, dimension, indexColorModel); 
     34            IndexColorModel indexColorModel, int component, int components, 
     35            boolean colorizeGrayScale, IGrayScalePixelValue grayScalePixelValue) { 
     36        super(title, dimension, indexColorModel, colorizeGrayScale, grayScalePixelValue); 
    3537        _component = component; 
    3638        _components = components; 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/FractionalIntensityImage.java

    r7889 r7970  
    77import java.awt.image.IndexColorModel; 
    88 
     9import loci.slim.IGrayScalePixelValue; 
    910import loci.slim.fitting.images.AbstractBaseColorizedImage; 
    1011 
     
    3132     */ 
    3233    public FractionalIntensityImage(String title, int[] dimension, 
    33             IndexColorModel indexColorModel, int component, int components) { 
    34         super(title, dimension, indexColorModel); 
     34            IndexColorModel indexColorModel, int component, int components, 
     35            boolean colorizeGrayScale, IGrayScalePixelValue grayScalePixelValue) { 
     36        super(title, dimension, indexColorModel, colorizeGrayScale, grayScalePixelValue); 
    3537        _component = component; 
    3638        _components = components; 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/fitting/images/IColorizedFittedImage.java

    r7963 r7970  
    1515public interface IColorizedFittedImage { 
    1616     
    17     public void init(int width, int height, IndexColorModel indexColorModel); 
     17    public void init(int width, int height, int channel, 
     18            IndexColorModel indexColorModel); 
    1819     
    1920    public void setColorModel(IndexColorModel indexColorModel); 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/heuristics/CursorEstimator.java

    r7936 r7970  
    5050 * <a href="http://dev.loci.wisc.edu/svn/software/trunk/projects/slim-plugin/src/main/java/loci/slim/CursorHelper.java">SVN</a></dd></dl> 
    5151 * 
    52  * @author aivar 
     52 * @author Aivar Grislis 
    5353 */ 
    5454public class CursorEstimator { 
     
    282282        transEndIndex = 9 * decay.length / 10; // "90% of transient" 
    283283        if (transEndIndex <= transStartIndex + 2 * ATTEMPTS) { // "oops" 
     284            //TODO ARG transStartIndex etc. are unitialized 
     285            //  do_estimate_resets restores values to previous, not this! 
    284286            returnValue[PROMPT_START]    = startp; 
    285287            returnValue[PROMPT_STOP]     = endp; 
     
    369371            returnValue[DATA_START]      = startt; 
    370372            returnValue[TRANSIENT_STOP]  = transEndIndex; 
     373            System.out.print("1 "); 
     374            dump(returnValue); 
    371375            return returnValue; //TODO do estimate resets/frees??? 
    372376        } 
     
    379383        transStartIndex += index; 
    380384        transFitStartIndex = transStartIndex + (transEndIndex - transStartIndex) / 20; 
     385         
     386        System.out.println("made it all the way to the end of estimateCursors"); 
    381387         
    382388        returnValue[PROMPT_START]    = startp; 
     
    386392        returnValue[DATA_START]      = transFitStartIndex; 
    387393        returnValue[TRANSIENT_STOP]  = transEndIndex; 
     394        System.out.print("2 "); 
     395        dump(returnValue); 
    388396        return returnValue; 
     397    } 
     398     
     399    private static void dump(double[] value) { 
     400        System.out.print("prompt "); 
     401        System.out.print("start " + value[PROMPT_START]); 
     402        System.out.print("end " + value[PROMPT_STOP]); 
     403        System.out.print("transient "); 
     404        System.out.print("start " + value[TRANSIENT_START]); 
     405        System.out.print("data start " + value[DATA_START]); 
     406        System.out.println("end " + value[TRANSIENT_STOP]); 
    389407    } 
    390408 
     
    551569 
    552570    private static int findMax(double[] values, int startIndex, int endIndex) { 
     571        if (endIndex > values.length) { 
     572            System.out.println("CursorEstimator.findMax endIndex is " + endIndex + " values.length is " + values.length); 
     573            endIndex = values.length; 
     574        } 
     575        if (startIndex > values.length) { 
     576            System.out.println("CursorEstimator.findMax startIndex is " + startIndex + " values.length is " + values.length); 
     577            startIndex = values.length; 
     578        } 
     579        if (values.length == 0) { 
     580            System.out.println("CursorEstimator.findMax but values is length zero"); 
     581            return startIndex; 
     582        } 
    553583        int index = startIndex; 
    554584        double max = values[startIndex]; 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/ui/IUserInterfacePanel.java

    r7915 r7970  
    107107 
    108108    /** 
     109     * Returns whether to create colorized grayscale fitted images. 
     110     *  
     111     * @return  
     112     */ 
     113    public boolean getColorizeGrayScale(); 
     114 
     115    /** 
    109116     * Gets analysis plugin names. 
    110117     * 
  • trunk/projects/slim-plugin/src/main/java/loci/slim/ui/UserInterfacePanel.java

    r7960 r7970  
    172172    JComboBox m_noiseModelComboBox; 
    173173    JComboBox m_fittedImagesComboBox; 
     174    JCheckBox m_colorizeGrayScale; 
    174175    JCheckBox[] m_analysisCheckBoxList; 
    175176    JCheckBox m_fitAllChannels; 
     
    476477        fitPanel.add(m_fittedImagesComboBox); 
    477478 
     479        JLabel dummyLabel = new JLabel(""); 
     480        dummyLabel.setHorizontalAlignment(SwingConstants.RIGHT); 
     481        fitPanel.add(dummyLabel); 
     482        m_colorizeGrayScale = new JCheckBox("Colorize grayscale"); 
     483        fitPanel.add(m_colorizeGrayScale); 
     484 
    478485        int choices = analysisChoices.length; 
    479486        if (choices > 0) { 
     
    494501         
    495502        // rows, cols, initX, initY, xPad, yPad 
    496         SpringUtilities.makeCompactGrid(fitPanel, 5 + choices, 2, 4, 4, 4, 4); 
     503        SpringUtilities.makeCompactGrid(fitPanel, 6 + choices, 2, 4, 4, 4, 4); 
    497504 
    498505        JPanel panel = new JPanel(new BorderLayout()); 
     
    12301237        m_noiseModelComboBox.setEnabled(enable); 
    12311238        m_fittedImagesComboBox.setEnabled(enable); 
     1239        m_colorizeGrayScale.setEnabled(enable); 
    12321240        for (JCheckBox checkBox : m_analysisCheckBoxList) { 
    12331241            checkBox.setEnabled(enable); 
     
    14191427        System.out.println("changes to " + returnValue); 
    14201428        return returnValue.toString(); 
     1429    } 
     1430 
     1431    /** 
     1432     * Returns whether to create colorized grayscale fitted images. 
     1433     *  
     1434     * @return  
     1435     */ 
     1436    public boolean getColorizeGrayScale() { 
     1437        return m_colorizeGrayScale.isSelected(); 
    14211438    } 
    14221439 
Note: See TracChangeset for help on using the changeset viewer.