Changeset 1636 for branches/3.0-Beta2/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java
- Timestamp:
- 06/13/07 10:20:37 (18 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/3.0-Beta2/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java
r1582 r1636 82 82 int[] totals = new int[NB_BIN]; 83 83 locationStats = new double[NB_BIN]; 84 /* 84 85 Segment[] segments = new Segment[NB_BIN]; 85 86 for (int i = 0; i < NB_BIN; i++) { … … 88 89 gMin + (i + 1) * sizeBin, 0); 89 90 } 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]++; 102 110 break; 103 }111 } 104 112 } // 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 107 138 108 139 double total = sizeX2 * sizeX1; … … 111 142 } 112 143 // 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; 115 146 total = total - totals[0] - totals[NB_BIN - 1]; 116 147 if (totals[0] >= totals[NB_BIN - 1]) { … … 144 175 * closed to the min. 145 176 */ 146 private double accumulateCloseToMin(int[] totals, Segment[] segments,177 private double accumulateCloseToMin(int[] totals, BasicSegment[] segments, 147 178 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; 149 180 for (int i = 1; i < totals.length - 1; i++) { 150 181 sum += totals[i]; 151 182 if (sum / total > THRESHOLD) { 152 e = segments[i]. getPoint(1).x1 + epsilon;183 e = segments[i].x1 + epsilon; 153 184 break; 154 185 } … … 161 192 * closed to the max. 162 193 */ 163 private double accumulateCloseToMax(int[] totals, Segment[] segments,194 private double accumulateCloseToMax(int[] totals, BasicSegment[] segments, 164 195 double total, double epsilon) { 165 double s = segments[0]. getPoint(1).x1, sum = 0;196 double s = segments[0].x2, sum = 0; 166 197 for (int i = totals.length - 2; i > 0; i--) { 167 198 sum += totals[i]; 168 199 if (sum / total > THRESHOLD) { 169 s = segments[i]. getPoint(1).x1- epsilon;200 s = segments[i].x2 - epsilon; 170 201 break; 171 202 } … … 216 247 return inputEnd; 217 248 } 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 219 275 }
