Changeset 105 in Sophya for trunk/SophyaPI
- Timestamp:
- May 6, 1998, 11:54:17 AM (27 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/parradapter.cc
r104 r105 6 6 #include <math.h> 7 7 8 #include "ctimer.h" 8 9 #include "parradapter.h" 9 10 … … 28 29 if ( (sx > 0) && (sy > 0) ) { sX = sx; sY = sy; } 29 30 if (invX) { sgnX = -1; offX = sX; } 31 else { sgnX = 1; offX = 0; } 30 32 if (invY) { sgnY = -1; offY = sY; } 33 else { sgnY = 1; offY = 0; } 31 34 } 32 35 … … 41 44 int P2DArrayAdapter::CheckDyn(float& min, float& max, float& moy, float& sig, int& nbnul, int& nbsat, int vit) 42 45 { 46 TIMEF ; 43 47 double m = 0.; 44 48 double s = 0.; … … 49 53 50 54 if (min >= max) { min = -9.e19; max = 9.e19; } 51 float minpix = 9.e19;52 float maxpix = -9.e19;55 float minpix = max; 56 float maxpix = min; 53 57 float pixv; 58 printf("DEBUG_CHECKDYN-IN %d - %g %g ", vit, min, max); 54 59 55 60 int n = 0; … … 60 65 } 61 66 67 printf(" -> vit=%d \n", vit); 62 68 for(int j=0; j<sY; j++) 63 69 for(int i=0; i<sX; i++) { 64 if (n%vit != 0) continue; 65 n++; 70 if (++n % vit != 0) continue; 66 71 pixv = Value(i,j); 67 72 if (pixv <= max && pixv >= min) { 68 73 if (pixv < minpix) minpix = pixv; 69 elseif (pixv > maxpix) maxpix = pixv;74 if (pixv > maxpix) maxpix = pixv; 70 75 dv = (double)pixv; 71 76 m += dv; s += (dv*dv); … … 77 82 } 78 83 79 nbnul = n0; nbsat = n9; 80 81 n = sX*sY-(n0+n9); 84 nbnul = n0*vit; nbsat = n9*vit; 85 min = minpix; max = maxpix; 86 87 n -= (n0+n9); 82 88 if (n > 0) 83 89 { dv = (double)n; m /= dv; s = s/dv - m*m; … … 86 92 else { moy = 0.; sig = -1.; } 87 93 94 printf("DEBUG_CHECKDYN: %d %g %g - %g %g \n", n, min, max, moy, sig); 88 95 return(n); 89 96 } … … 93 100 void P2DArrayAdapter::ComputeLut_PicHisto(float& min, float& max, int nbsig, float fracmax) 94 101 { 102 TIMEF ; 95 103 int MINNBIN = 64; 96 104 int MAXNBIN = 1024; … … 136 144 for(int j=0; j<sY; j++) 137 145 for(int i=0; i<sX; i++) { 138 if ( (kk%vitesse) != 0) continue; 139 kk++; 146 if ( (++kk % vitesse) != 0) continue; 140 147 /* remplissage de l'histogramme */ 141 148 bin = (int)((Value(i, j) - minhis) / binwidth) ; … … 212 219 /* --Methode-- */ 213 220 unsigned char * P2DArrayAdapter::ComputePixmap(LUT* lut, int ofx, int ofy, int zm, 214 int xwsz, int ywsz, unsigned char * opix, int * oxsp, int * oysp){ 221 int xwsz, int ywsz, unsigned char * opix, int * oxsp, int * oysp) 222 { 223 TIMEF ; 215 224 unsigned char *pix, *pp, ucp; 216 225 int zmm=1; … … 260 269 261 270 pp = pix; 262 if (zm == 1) // Pas de zoom 263 { 264 for(j=ofy; j<ofy+npy; j++) 265 for(i=ofx; i<ofx+npx; i++) 266 { *pp = (unsigned char) lut->Apply((*this)(i,j)); pp++; } 267 } 268 else if (zm < -1) // Compression 269 { 270 float fv = (float)(zmm*zmm); 271 for(j=ofy; j<ofy+npy; j+=zmm) 272 for(i=ofx; i<ofx+npx; i+=zmm) 273 { 274 vpx = 0; 275 for(l=0; l<zmm; l++) 276 for(k=0; k<zmm; k++) 277 vpx += (*this)(i+k, j+l); 278 *pp = (unsigned char) lut->Apply(vpx/fv); 279 pp++; 280 } 281 } 282 else // Agrandissement 283 { 284 for(j=ofy; j<ofy+npy; j++) 285 for(i=ofx; i<ofx+npx; i++) 286 { 287 ucp = (unsigned char) lut->Apply((*this)(i,j)); 288 for(l=0; l<zm; l++) 289 { 290 pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm); 291 for(k=0; k<zm; k++) { *pp = ucp; pp++; } 292 } 293 } 294 } 295 271 if (eXY) { // Echange Axe X,Y 272 if (zm == 1) { // Pas de zoom 273 for(j=ofy; j<ofy+npy; j++) 274 for(i=ofx; i<ofx+npx; i++) 275 { *pp = (unsigned char) lut->Apply( 276 this->Value(j*sgnX+offX, i*sgnY+offY)); 277 pp++; } 278 } 279 else if (zm < -1) { // Compression 280 float fv = (float)(zmm*zmm); 281 for(j=ofy; j<ofy+npy; j+=zmm) 282 for(i=ofx; i<ofx+npx; i+=zmm) { 283 vpx = 0; 284 for(l=0; l<zmm; l++) 285 for(k=0; k<zmm; k++) 286 vpx += this->Value( (j+l)*sgnX+offX, (i+k)*sgnY+offY); 287 *pp = (unsigned char) lut->Apply(vpx/fv); 288 pp++; 289 } 290 } 291 else { // Agrandissement 292 for(j=ofy; j<ofy+npy; j++) 293 for(i=ofx; i<ofx+npx; i++) { 294 ucp = (unsigned char) lut->Apply(this->Value(j*sgnX+offX, i*sgnY+offY)); 295 for(l=0; l<zm; l++) { 296 pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm); 297 for(k=0; k<zm; k++) { *pp = ucp; pp++; } 298 } 299 } 300 } 301 } // Fin du cas avec echange d'axe X/Y 302 else { 303 if (zm == 1) { // Pas de zoom 304 for(j=ofy; j<ofy+npy; j++) 305 for(i=ofx; i<ofx+npx; i++) 306 { *pp = (unsigned char) lut->Apply( 307 this->Value(i*sgnX+offX, j*sgnY+offY)); 308 pp++; } 309 } 310 else if (zm < -1) { // Compression 311 float fv = (float)(zmm*zmm); 312 for(j=ofy; j<ofy+npy; j+=zmm) 313 for(i=ofx; i<ofx+npx; i+=zmm) { 314 vpx = 0; 315 for(l=0; l<zmm; l++) 316 for(k=0; k<zmm; k++) 317 vpx += this->Value( (i+k)*sgnX+offX, (j+l)*sgnY+offY); 318 *pp = (unsigned char) lut->Apply(vpx/fv); 319 pp++; 320 } 321 } 322 else { // Agrandissement 323 for(j=ofy; j<ofy+npy; j++) 324 for(i=ofx; i<ofx+npx; i++) { 325 ucp = (unsigned char) lut->Apply(this->Value(i*sgnX+offX, j*sgnY+offY)); 326 for(l=0; l<zm; l++) { 327 pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm); 328 for(k=0; k<zm; k++) { *pp = ucp; pp++; } 329 } 330 } 331 } 332 } 296 333 return(pix); 297 334 } -
trunk/SophyaPI/PI/pitestapp.cc
r60 r105 206 206 static ScSample *scs1, *scs2, *scs3; 207 207 static PIScrollBar *scb, *scb2; 208 static ExBWdg *exb1 ;208 static ExBWdg *exb1, *exb2; 209 209 210 210 static PIWindow * wp3, *wp2, *wp4, *wp5, *wp6; … … 338 338 app = new PITestApp(350, 350); 339 339 340 wp2 = new PIWindow(app, "Window-2", PIWK_normal, 200, 200, 250, 250);340 wp2 = new PIWindow(app, "Window-2", PIWK_normal, 400, 200, 250, 250); 341 341 ExBWdg bw(wp2, "BWdg", 150, 150, 10, 40); 342 342 bw.SetBinding(PIBK_fixed,PIBK_elastic,PIBK_elastic,PIBK_fixed); 343 ExBWdg bw2(wp2, "BWdg2", 180, 180, 200, 10); 344 bw.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); 343 345 344 346 wp4 = new PIWindow(app, "Window-4", PIWK_dialog, 200, 200, 350, 350);
Note:
See TracChangeset
for help on using the changeset viewer.