Changeset 1587
- Timestamp:
- 06/04/07 11:23:33 (18 months ago)
- 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 132 132 */ 133 133 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 { 136 145 if (signed) { 137 146 switch (javaType) { -
trunk/components/rendering/src/omeis/providers/re/metadata/StatsFactory.java
r1582 r1587 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; 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; 94 100 for (int x2 = 0; x2 < sizeX2; ++x2) { 95 101 for (int x1 = 0; x1 < sizeX1; ++x1) { 102 v = p2D.getPixelValue(x1, x2); 96 103 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 /* 98 110 if (!segments[i].equals(1, pointX1, pointX2) 99 111 && segments[i].lies(pointX1, pointX2)) … … 102 114 break; 103 115 } 116 */ 104 117 } // end i 105 118 } // end x1 … … 111 124 } 112 125 // 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; 115 128 total = total - totals[0] - totals[NB_BIN - 1]; 116 129 if (totals[0] >= totals[NB_BIN - 1]) { … … 144 157 * closed to the min. 145 158 */ 146 private double accumulateCloseToMin(int[] totals, Segment[] segments,159 private double accumulateCloseToMin(int[] totals, BasicSegment[] segments, 147 160 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; 149 162 for (int i = 1; i < totals.length - 1; i++) { 150 163 sum += totals[i]; 151 164 if (sum / total > THRESHOLD) { 152 e = segments[i]. getPoint(1).x1 + epsilon;165 e = segments[i].x1 + epsilon; 153 166 break; 154 167 } … … 161 174 * closed to the max. 162 175 */ 163 private double accumulateCloseToMax(int[] totals, Segment[] segments,176 private double accumulateCloseToMax(int[] totals, BasicSegment[] segments, 164 177 double total, double epsilon) { 165 double s = segments[0]. getPoint(1).x1, sum = 0;178 double s = segments[0].x1, sum = 0; 166 179 for (int i = totals.length - 2; i > 0; i--) { 167 180 sum += totals[i]; 168 181 if (sum / total > THRESHOLD) { 169 s = segments[i]. getPoint(1).x1 - epsilon;182 s = segments[i].x1 - epsilon; 170 183 break; 171 184 } … … 216 229 return inputEnd; 217 230 } 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 219 257 }
