Changeset 7833 for trunk/projects


Ignore:
Timestamp:
12/13/11 19:17:07 (8 years ago)
Author:
aivar
Message:

Still working on fitted images.

Location:
trunk/projects/slim-plugin/src/main/java/imagej/slim
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/fitting/AbstractBaseFittedImage.java

    r7832 r7833  
    66package imagej.slim.fitting; 
    77 
     8import java.awt.event.FocusEvent; 
     9import java.awt.event.FocusListener; 
     10import java.awt.image.IndexColorModel; 
     11 
    812//import ij.process.MyFloatProcessor; //TODO IJ hack; update to IJ2 ImgLib 
    913import ij.ImagePlus; 
     
    1216import imagej.slim.histogram.HistogramData; 
    1317import imagej.slim.histogram.HistogramDataChannel; 
     18import imagej.slim.histogram.HistogramTool; 
    1419 
    1520/** 
     
    3540        _histogramData = new HistogramData(title, histogramDataChannels); 
    3641        _image = new FloatProcessor(x, y); 
     42        _image.setColorModel(imagej.slim.histogram.HistogramTool.getIndexColorModel()); 
    3743        _imagePlus = new ImagePlus(title, _image); 
    3844        _imagePlus.show(); 
     45        _imagePlus.getWindow().addFocusListener(new FocusListener() { 
     46            public void focusGained(FocusEvent e) { 
     47                HistogramTool.getInstance().setHistogramData(_histogramData); 
     48            } 
     49             
     50            public void focusLost(FocusEvent e) { 
     51                 
     52            } 
     53        });   
    3954    } 
    4055 
     
    4762        return _title; 
    4863    } 
     64     
     65     /** 
     66     * Sets the color model used to display float values. 
     67     *  
     68     * @param colorModel  
     69     */    
     70    public void setColorModel(IndexColorModel colorModel) { 
     71        _image.setColorModel(colorModel); 
     72    }     
    4973     
    5074    /** 
     
    89113            // update palette bounds 
    90114            _image.setMinAndMax(minMax[0], minMax[1]); 
     115            System.out.println("min max " + minMax[0] + " " +  minMax[1]); 
    91116        } 
     117        else System.out.println("min max null"); 
    92118//        System.out.println("min max " + minMax[0] + " " + minMax[1]); 
    93119        // etc. 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/fitting/FLIMImageFitter.java

    r7830 r7833  
    1010import imagej.slim.fitting.engine.IFittingEngine; 
    1111import imagej.slim.fitting.engine.ThreadedFittingEngine; 
     12import imagej.slim.histogram.HistogramTool; 
    1213 
    1314/** 
     
    4041            IFittedImage fittedImage = FLIMFittedImageFactory.getInstance().createImage(image, dimension, components); 
    4142            _fittedImages.add(fittedImage); 
    42         }  
     43        } 
     44         
     45        // Show histogram tool for the last image created 
     46        int lastIndex = images.length - 1; 
     47        HistogramTool.getInstance().setHistogramData(_fittedImages.get(lastIndex).getHistogramData()); 
    4348    } 
    4449     
     
    4853    public void beginFit() { 
    4954        for (IFittedImage fittedImage : _fittedImages) { 
     55            //fittedImage.setColorModel(HistogramTool.getLUT()); //TODO getIndexColorModel()); //TODO all the same really as far as I can tell, i.e. broken 
    5056            fittedImage.beginFit(); 
    5157        } 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/fitting/IFittedImage.java

    r7830 r7833  
    55 
    66package imagej.slim.fitting; 
     7 
     8import java.awt.image.IndexColorModel; 
    79 
    810import imagej.slim.histogram.HistogramData; 
     
    1315 */ 
    1416public interface IFittedImage { 
     17     
     18    /** 
     19     * Gets the title of this image. 
     20     *  
     21     * @return title 
     22     */ 
     23    public String getTitle(); 
     24     
     25    /** 
     26     * Sets the color model used to display float values. 
     27     *  
     28     * @param colorModel  
     29     */ 
     30    public void setColorModel(IndexColorModel colorModel); 
    1531 
    1632    /** 
    1733     * Gets the associated histogram data object. 
     34     *  
    1835     * @return 
    1936     */ 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/histogram/HistogramData.java

    r7829 r7833  
    123123     * @return min and max 
    124124     */ 
    125     //TODO s/b setting both view and lut min/max if automatic, o'wise no change 
    126     //TODO who is calling this???? 
    127125    public double[] getMinMax() { 
    128126        double[] minMax = null; 
     
    135133                // calculate actual minimum and maximum for all channels 
    136134                for (int i = 0; i < _channel.length; ++i) { 
    137                     minMax = _channel[i].getActualMinMax(); 
     135                    minMax = _channel[i].resetActualMinMax(); 
    138136                    if (minMax[0] < min) { 
    139137                        min = minMax[0]; 
     
    147145            else { 
    148146                // calculate actual minimum and maximum for current channel 
    149                 minMax = _channel[_channelIndex].getActualMinMax(); 
     147                minMax = _channel[_channelIndex].resetActualMinMax(); 
    150148            } 
     149            _minView = _minLUT = minMax[0]; 
     150            _maxView = _maxLUT = minMax[1]; //TODO kludgy 
    151151        } 
    152152        return minMax; //TODO returns null if not automatically ranging 
     
    156156        // start new histogram bins            
    157157        int[] bin = new int[bins]; 
     158        System.out.println("bin[3] is " + bin[3] + " bin[33] " + bin[33]); 
     159        System.out.println("_minView is " + _minView + " max " + _maxView); 
     160        System.out.println("_minLUT is " + _minLUT + " maxLUT " + _maxLUT); 
    158161         
    159162        if (_showAll) { 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/histogram/HistogramDataChannel.java

    r7829 r7833  
    4747            } 
    4848        } 
    49         return getActualMinMax(); 
    50     } 
    51      
    52     public double[] getActualMinMax() { 
    5349        return new double[] { _actualMin, _actualMax }; 
    5450    } 
     
    7571                    // assign each value to a bin 
    7672                    int bin = (int)((value - nominalMin) * binWidth); 
    77                     if (bin > bins) { 
     73                    if (bin >= bins) { 
    7874                        --bin; 
    7975                    } 
  • trunk/projects/slim-plugin/src/main/java/imagej/slim/histogram/HistogramTool.java

    r7832 r7833  
    3434 */ 
    3535public class HistogramTool { 
     36    private final static int WIDTH = 320; 
     37    private final static int HISTOGRAM_HEIGHT = 160; 
     38    private final static int COLORBAR_HEIGHT = 20; 
     39    private final static int EXTRA = 2; 
    3640    private final static String HARDCODED_LUT =  "/Applications/ImageJ/luts/aivar6.lut"; // aivar6 is my five color blue/cyan/green/yellow/red spectral palette 
    37     JFrame _frame; 
    38     HistogramPanel _histogram; 
    39     ColorBarPanel _colorBar; 
     41    private static HistogramTool INSTANCE = null; 
     42    private HistogramData _histogramData; 
     43    private JFrame _frame; 
     44    private HistogramPanel _histogram; 
     45    private ColorBarPanel _colorBar; 
    4046     
    41     public HistogramTool() { 
    42         //TODO fakes up a LUT 
    43         LUT lut = null; 
     47    private HistogramTool() { 
     48        // create the histogram and color bar display panels 
     49        _histogram = new HistogramPanel(WIDTH, HISTOGRAM_HEIGHT, EXTRA); 
     50        _colorBar = new ColorBarPanel(WIDTH, COLORBAR_HEIGHT, EXTRA); 
     51        _colorBar.setLUT(getLUT()); 
     52 
     53        _frame = new JFrame("Histogram"); 
     54        //TODO closes the entire plugin: 
     55        //m_frame.setDefaultCloseOperation(m_frame.EXIT_ON_CLOSE); 
     56        _frame.setResizable(false); 
     57        _frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //TODO kind of lame, for now 
     58        _frame.getContentPane().add(_histogram, BorderLayout.NORTH); 
     59        _frame.getContentPane().add(_colorBar, BorderLayout.CENTER); 
     60        //TODO_frame.getContentPane().add(_inputPanel, BorderLayout.SOUTH); 
     61        _frame.pack(); 
     62        _frame.setVisible(true); 
     63    } 
     64     
     65    public static synchronized HistogramTool getInstance() { 
     66        if (null == INSTANCE) { 
     67            INSTANCE = new HistogramTool(); 
     68        } 
     69        return INSTANCE; 
     70    } 
     71     
     72    public static IndexColorModel getIndexColorModel() { 
    4473        IndexColorModel colorModel = null; 
    4574        try { 
     
    4978            System.out.println("Error opening LUT " + e.getMessage()); 
    5079        } 
    51         ByteProcessor bp = LutLoader.createImage(colorModel); 
    52         ImagePlus ip = new ImagePlus(HARDCODED_LUT, bp); 
    53         System.out.println("BOUT TO DRAW"); 
    54         ip.draw(); 
    55         lut = new LUT(colorModel, Double.MIN_VALUE, Double.MAX_VALUE); //TODO not sure what min/max values do here 
    56         //TODO some LUTs, such as unionjack, do not load correctly using this technique 
    57          
    58         // create the histogram and color bar display panels 
    59         _histogram = new HistogramPanel(320, 160, 2); 
    60         _colorBar = new ColorBarPanel(320, 20, 2); 
    61         _colorBar.setLUT(lut); 
    62  
    63         _frame = new JFrame("Histogram"); 
    64         //TODO closes the entire plugin: 
    65         //m_frame.setDefaultCloseOperation(m_frame.EXIT_ON_CLOSE); 
    66         _frame.setResizable(false); 
    67         _frame.getContentPane().add(_histogram, BorderLayout.NORTH); 
    68         _frame.getContentPane().add(_colorBar, BorderLayout.CENTER); 
    69         //TODO_frame.getContentPane().add(_inputPanel, BorderLayout.SOUTH); 
    70         _frame.pack(); 
    71         _frame.setVisible(true); 
    72         _frame.setTitle("WOOHOO"); 
     80        return colorModel; 
     81    } 
     82     
     83    public static LUT getLUT() { 
     84        IndexColorModel colorModel = getIndexColorModel(); 
     85        LUT lut = new LUT(colorModel, Double.MIN_VALUE, Double.MAX_VALUE); 
     86        return lut; 
     87    } 
     88     
     89    public void setHistogramData(HistogramData histogramData) { 
     90        _histogramData = histogramData; 
     91        if (_frame.isVisible()) { 
     92            _frame.setVisible(true); 
     93        } 
     94        _frame.setTitle(histogramData.getTitle()); 
     95        _histogram.setBins(histogramData.binValues(WIDTH)); 
    7396    } 
    7497} 
Note: See TracChangeset for help on using the changeset viewer.