• 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 Change
  • Next Change →

Changeset 1636 for branches/3.0-Beta2/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java

Show
Ignore:
Timestamp:
06/13/07 10:20:37 (18 months ago)
Author:
callan
Message:

Merging trunk I/O fixes into the milestone:3.0-Beta2 branch:

  • r1586:1587
  • r1591:1592
  • r1593:1594
  • Manual merge of GreyScaleStrategy
Files:
1 modified

  • branches/3.0-Beta2/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java (modified) (6 diffs)

Legend:

Unmodified
Added
Removed
  • branches/3.0-Beta2/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java

    r1582 r1636  
    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; 
    94         for (int x2 = 0; x2 < sizeX2; ++x2) { 
    95             for (int x1 = 0; x1 < sizeX1; ++x1) { 
    96                 for (int i = 0; i < segments.length; i++) { 
    97                         pointX1 = p2D.getPixelValue(x1, x2); 
    98                     if (!segments[i].equals(1, pointX1, pointX2) 
    99                         && segments[i].lies(pointX1, pointX2)) 
    100                     { 
    101                         totals[i]++; 
     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         
     98        // check segment [o,e[ 
     99        double v; 
     100        BasicSegment segment; 
     101        if (p2D.isXYPlanar()) { 
     102                //modified code 
     103                int size = sizeX1*sizeX2; 
     104                for (int j = 0; j < size; j++) { 
     105                                v = p2D.getPixelValue(j); 
     106                                for (int i = 0; i < segments.length; i++) { 
     107                        segment = segments[i]; 
     108                        if (v >= segment.x1 && v < segment.x2) { 
     109                                totals[i]++; 
    102110                        break; 
    103                     } 
     111                        } 
    104112                } // end i 
    105             } // end x1 
    106         }// end x2 
     113                        } 
     114        } else { 
     115                for (int x2 = 0; x2 < sizeX2; ++x2) { 
     116                for (int x1 = 0; x1 < sizeX1; ++x1) { 
     117                        v = p2D.getPixelValue(x1, x2); 
     118                    for (int i = 0; i < segments.length; i++) { 
     119                        segment = segments[i]; 
     120                        if (v >= segment.x1 && v < segment.x2) { 
     121                                totals[i]++; 
     122                            break; 
     123                        } 
     124                        /* 
     125                        if (!segments[i].equals(1, pointX1, pointX2) 
     126                                && segments[i].lies(pointX1, pointX2)) 
     127                        { 
     128                            totals[i]++; 
     129                            break; 
     130                        } 
     131                        */ 
     132                    } // end i 
     133                } // end x1 
     134            }// end x2 
     135        } 
     136        
     137         
    107138 
    108139        double total = sizeX2 * sizeX1; 
    … …  
    111142        } 
    112143        // 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; 
     144        inputStart = segments[0].x2;//segments[0].getPoint(1).x1; 
     145        inputEnd = segments[NB_BIN - 1].x2;//segments[NB_BIN - 1].getPoint(1).x1; 
    115146        total = total - totals[0] - totals[NB_BIN - 1]; 
    116147        if (totals[0] >= totals[NB_BIN - 1]) { 
    … …  
    144175     * closed to the min. 
    145176     */ 
    146     private double accumulateCloseToMin(int[] totals, Segment[] segments, 
     177    private double accumulateCloseToMin(int[] totals, BasicSegment[] segments, 
    147178            double total, double epsilon) { 
    148         double e = segments[NB_BIN - 1].getPoint(1).x1, sum = 0; 
     179        double e = segments[NB_BIN - 1].x2, sum = 0; 
    149180        for (int i = 1; i < totals.length - 1; i++) { 
    150181            sum += totals[i]; 
    151182            if (sum / total > THRESHOLD) { 
    152                 e = segments[i].getPoint(1).x1 + epsilon; 
     183                e = segments[i].x1 + epsilon; 
    153184                break; 
    154185            } 
    … …  
    161192     * closed to the max. 
    162193     */ 
    163     private double accumulateCloseToMax(int[] totals, Segment[] segments, 
     194    private double accumulateCloseToMax(int[] totals, BasicSegment[] segments, 
    164195            double total, double epsilon) { 
    165         double s = segments[0].getPoint(1).x1, sum = 0; 
     196        double s = segments[0].x2, sum = 0; 
    166197        for (int i = totals.length - 2; i > 0; i--) { 
    167198            sum += totals[i]; 
    168199            if (sum / total > THRESHOLD) { 
    169                 s = segments[i].getPoint(1).x1 - epsilon; 
     200                s = segments[i].x2 - epsilon; 
    170201                break; 
    171202            } 
    … …  
    216247        return inputEnd; 
    217248    } 
    218  
     249     
     250    //inner class 
     251    class BasicSegment { 
     252         
     253        /** Left bound of the segment. */ 
     254        double x1; 
     255         
     256        /** Right bound of the segment. */ 
     257        double x2; 
     258         
     259        /** 
     260         * Creates a new instance. 
     261         *  
     262         * @param x1 The left bound of the segment. 
     263         * @param x2 The right bound of the segment. 
     264         */ 
     265        BasicSegment(double x1, double x2) 
     266        { 
     267                if (x2 < x1) 
     268                        throw new IllegalArgumentException("Segment not valid."); 
     269                this.x2 = x2; 
     270                this.x1 = x1; 
     271        } 
     272         
     273    } 
     274     
    219275} 

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/