• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Changeset
  • Next Changeset →

Changeset 1587

Show
Ignore:
Timestamp:
06/04/07 11:23:33 (18 months ago)
Author:
callan
Message:

Updating to new StatsFactory? mechanisms that Jean-Marie has implemented. Helps #725 a little more. New Plane2D should help even further, Jean-Marie is going to synchronize the StatsFactory with the new Plane2D.

Location:
trunk/components/rendering/src/omeis/providers/re
Files:
2 modified

  • data/Plane2D.java (modified) (1 diff)
  • metadata/StatsFactory.java (modified) (7 diffs)

Legend:

Unmodified
Added
Removed
  • trunk/components/rendering/src/omeis/providers/re/data/Plane2D.java

    r1348 r1587  
    132132     */ 
    133133    public double getPixelValue(int x1, int x2) { 
    134         int offset = calculateOffset(x1, x2); 
    135  
     134        return getPixelValue(calculateOffset(x1, x2)); 
     135    } 
     136     
     137    /** 
     138     * Returns the pixel intensity value of the pixel at a given offset. 
     139     *  
     140     * @param offset The offset. 
     141     * @return The intensity value. 
     142     */ 
     143    public double getPixelValue(int offset) 
     144    { 
    136145        if (signed) { 
    137146            switch (javaType) { 
  • trunk/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java

    r1582 r1587  
    8282        int[] totals = new int[NB_BIN]; 
    8383        locationStats = new double[NB_BIN]; 
     84        /* 
    8485        Segment[] segments = new Segment[NB_BIN]; 
    8586        for (int i = 0; i < NB_BIN; i++) { 
    … …  
    8889                        gMin + (i + 1) * sizeBin, 0); 
    8990        } 
    90  
    91         // check segment [o,e] 
    92         double pointX1; 
    93         double pointX2 = 0; 
     91                */ 
     92        BasicSegment[] segments = new BasicSegment[NB_BIN]; 
     93        for (int i = 0; i < NB_BIN; i++) { 
     94            segments[i] = new BasicSegment( 
     95                        gMin + i * sizeBin, gMin + (i + 1) * sizeBin); 
     96        } 
     97        // check segment [o,e[ 
     98        double v; 
     99        BasicSegment segment; 
    94100        for (int x2 = 0; x2 < sizeX2; ++x2) { 
    95101            for (int x1 = 0; x1 < sizeX1; ++x1) { 
     102                v = p2D.getPixelValue(x1, x2); 
    96103                for (int i = 0; i < segments.length; i++) { 
    97                         pointX1 = p2D.getPixelValue(x1, x2); 
     104                        segment = segments[i]; 
     105                        if (v >= segment.x1 && v < segment.x2) { 
     106                                totals[i]++; 
     107                        break; 
     108                        } 
     109                        /* 
    98110                    if (!segments[i].equals(1, pointX1, pointX2) 
    99111                        && segments[i].lies(pointX1, pointX2)) 
    … …  
    102114                        break; 
    103115                    } 
     116                    */ 
    104117                } // end i 
    105118            } // end x1 
    … …  
    111124        } 
    112125        // Default, we assume that we have at least 3 sub-intervals. 
    113         inputStart = segments[0].getPoint(1).x1; 
    114         inputEnd = segments[NB_BIN - 1].getPoint(1).x1; 
     126        inputStart = segments[0].x1;//segments[0].getPoint(1).x1; 
     127        inputEnd = segments[NB_BIN - 1].x1;//segments[NB_BIN - 1].getPoint(1).x1; 
    115128        total = total - totals[0] - totals[NB_BIN - 1]; 
    116129        if (totals[0] >= totals[NB_BIN - 1]) { 
    … …  
    144157     * closed to the min. 
    145158     */ 
    146     private double accumulateCloseToMin(int[] totals, Segment[] segments, 
     159    private double accumulateCloseToMin(int[] totals, BasicSegment[] segments, 
    147160            double total, double epsilon) { 
    148         double e = segments[NB_BIN - 1].getPoint(1).x1, sum = 0; 
     161        double e = segments[NB_BIN - 1].x1, sum = 0; 
    149162        for (int i = 1; i < totals.length - 1; i++) { 
    150163            sum += totals[i]; 
    151164            if (sum / total > THRESHOLD) { 
    152                 e = segments[i].getPoint(1).x1 + epsilon; 
     165                e = segments[i].x1 + epsilon; 
    153166                break; 
    154167            } 
    … …  
    161174     * closed to the max. 
    162175     */ 
    163     private double accumulateCloseToMax(int[] totals, Segment[] segments, 
     176    private double accumulateCloseToMax(int[] totals, BasicSegment[] segments, 
    164177            double total, double epsilon) { 
    165         double s = segments[0].getPoint(1).x1, sum = 0; 
     178        double s = segments[0].x1, sum = 0; 
    166179        for (int i = totals.length - 2; i > 0; i--) { 
    167180            sum += totals[i]; 
    168181            if (sum / total > THRESHOLD) { 
    169                 s = segments[i].getPoint(1).x1 - epsilon; 
     182                s = segments[i].x1 - epsilon; 
    170183                break; 
    171184            } 
    … …  
    216229        return inputEnd; 
    217230    } 
    218  
     231     
     232    //inner class 
     233    class BasicSegment { 
     234         
     235        /** Left bound of the segment. */ 
     236        double x1; 
     237         
     238        /** Right bound of the segment. */ 
     239        double x2; 
     240         
     241        /** 
     242         * Creates a new instance. 
     243         *  
     244         * @param x1 The left bound of the segment. 
     245         * @param x2 The right bound of the segment. 
     246         */ 
     247        BasicSegment(double x1, double x2) 
     248        { 
     249                if (x2 < x1) 
     250                        throw new IllegalArgumentException("Segment not valid."); 
     251                this.x2 = x2; 
     252                this.x1 = x1; 
     253        } 
     254         
     255    } 
     256     
    219257} 

Download in other formats:

  • Unified Diff
  • Zip Archive

Trac Powered

Powered by Trac 0.11
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/