Changeset 42392 for trunk/extsrc/gpcsw/gpcsrc/fits/burntool/burnfix.c
- Timestamp:
- Feb 14, 2023, 12:48:54 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/extsrc/gpcsw/gpcsrc/fits/burntool/burnfix.c
r26766 r42392 23 23 /* Find all the burned patches and bright stars */ 24 24 err = star_detect(nx, ny, NX, NY, imbuf, mbuf, msbuf, cell, cellnum); 25 25 26 err = burn_check(nx, ny, NX, NY, imbuf, mbuf, cell); 26 27 … … 34 35 // fprintf(stderr, "Got through grow mask for burns\n"); 35 36 err = grow_mask(nx, ny, NX, mbuf, BMASK_GROW, RMASK_GROW, 36 MASK_STAR_HALO, cell->nstar, cell->star);37 MASK_STAR_HALO, cell->nstar, cell->star); 37 38 // fprintf(stderr, "Got through grow mask for stars\n"); 38 39 … … 70 71 printf(" # cx cy max sx sy ex ey midy diff S/B/E slope zero\n"); 71 72 for(k=0; k<cell->nburn; k++) { 72 ymid = (cell->burn[k].y0m + cell->burn[k].y1m + 73 cell->burn[k].y0p + cell->burn[k].y1p + 2) / 4; 73 /*ymid = (cell->burn[k].y0m + cell->burn[k].y1m + 74 cell->burn[k].y0p + cell->burn[k].y1p + 2) / 4;*/ 75 ymid = (cell->burn[k].sy + cell->burn[k].ey + 1) / 2; 74 76 i = cell->burn[k].nfit / 2; 75 77 printf("%3d %5d %3d %5d %5d %3d %5d %3d %5d %5d %2d %1d %1d %6.3f %8d\n", … … 88 90 printf(" # cx cy max sx sy ex ey midy S/P\n"); 89 91 for(k=0; k<cell->nstar; k++) { 90 ymid = (cell->star[k].y0m + cell->star[k].y1m + 91 cell->star[k].y0p + cell->star[k].y1p + 2) / 4; 92 /*ymid = (cell->star[k].y0m + cell->star[k].y1m + 93 cell->star[k].y0p + cell->star[k].y1p + 2) / 4;*/ 94 ymid = (cell->star[k].sy + cell->star[k].ey + 1) / 2; 92 95 93 96 printf("%3d %5d %3d %5d %5d %3d %5d %3d %5d %2d %1d\n", … … 142 145 MTYPE *mask, CELL *cell) 143 146 { 144 int err, k;147 int err,k; 145 148 146 149 /* Given these big stars, identify which ones really have a burn */ … … 160 163 k, cell->burn[k].sx, cell->burn[k].sy, 161 164 cell->burn[k].ex, cell->burn[k].ey, 162 cell->burn[k].y0m, cell->burn[k].y1m, cell->burn[k].y0p, cell->burn[k].y 0p,165 cell->burn[k].y0m, cell->burn[k].y1m, cell->burn[k].y0p, cell->burn[k].y1p, 163 166 cell->burn[k].diff, cell->burn[k].burned); 164 167 } … … 242 245 int y0, y1, ymid, xburn, xref, dx=0, dy=0; 243 246 247 /*introduce a maximum to the burn contrast check, to avoid a very large number in crowded regions*/ 248 int burn_contrast = MIN(0.3*rms,5); 249 /*introduce a maximum size for the burn contrast check box, instead of a random large 100 pixels */ 250 /*for small stars you will lose signal after 10 pixels, so use the fitted box size as a good guide*/ 251 int test_box = MAX(box->ey-box->sy,10); 252 253 if(VERBOSE & VERB_BOXGROW) { 254 printf("burn contrast test using box of max size: %8d\n", test_box); 255 } 256 244 257 /* FIXME: needs a test for flat-toppedness as well as trail... */ 245 258 /* FIXME: needs a test for pure, massive saturation */ 246 259 247 260 /* Center line */ 248 ymid = (box->y0m + box->y0p + box->y1m + box->y1p + 2) / 4; 261 //ymid = (box->y0m + box->y0p + box->y1m + box->y1p + 2) / 4; 262 ymid = (box->sy+box->ey)/2; 249 263 250 264 /* Irrelevant, too near the top to detect a burn anyway */ … … 283 297 y0 = ymid + dy; 284 298 y1 = y0 + MIN(ny-1-y0, 2*ymid-y0-1); 285 if(y1-y0 > 100) y1 = y0 + 100;299 if(y1-y0 > test_box) y1 = y0 + test_box; 286 300 } 287 301 … … 292 306 nburn = nref = 0; 293 307 for(i=box->sx; i<=box->ex; i++) { 294 if(mask[i+j*NX] == MASK_NONE) {295 xburn += data[i+j*NX];296 nburn++;297 }298 if(dx != 0) { /* Side to side */299 if(mask[i+dx+j*NX] == MASK_NONE) {300 xref += data[i+dx+j*NX];301 nref++;302 }303 } else { /* top-bottom */304 if(mask[i+(2*ymid-j)*NX] == MASK_NONE) {305 xref += data[i+(2*ymid-j)*NX];306 nref++;307 }308 }308 if(mask[i+j*NX] == MASK_NONE) { 309 xburn += data[i+j*NX]; 310 nburn++; 311 } 312 if(dx != 0) { /* Side to side */ 313 if(mask[i+dx+j*NX] == MASK_NONE) { 314 xref += data[i+dx+j*NX]; 315 nref++; 316 } 317 } else { /* top-bottom */ 318 if(mask[i+(2*ymid-j)*NX] == MASK_NONE) { 319 xref += data[i+(2*ymid-j)*NX]; 320 nref++; 321 } 322 } 309 323 } 310 324 if(nburn > 0) xburn /= nburn; 311 325 if(nref > 0) xref /= nref; 312 326 if(nref > 0 && nburn > 0) median_buf[nmed++] = xburn - xref; 327 if(VERBOSE & VERB_BOXGROW) { 328 printf("contrast: %8d %8d %8d %8d %8d\n", j, xburn, (2*ymid-j), xref, xburn - xref); 329 } 330 313 331 } 314 332 box->diff = int_median(nmed, median_buf); 315 box->burned = (box->diff > 0.3*rms);333 box->burned = (box->diff > burn_contrast); 316 334 return(0); 317 335 } … … 335 353 336 354 /* Center line */ 337 ymid = (box->y0m + box->y0p + box->y1m + box->y1p + 2) / 4; 355 //ymid = (box->y0m + box->y0p + box->y1m + box->y1p + 2) / 4; 356 ymid = (box->sy + box->ey + 1) / 2; 338 357 339 358 /* Starting point offset */
Note:
See TracChangeset
for help on using the changeset viewer.
