void JImageMask::CalcMask ( const JImage& image, const JColorIndex color ) { const unsigned long sysColor = image.GetSystemColor(color); const JCoordinate w = image.GetWidth(); const JCoordinate h = image.GetHeight(); for (JCoordinate y=0; y<h; y++) { for (JCoordinate x=0; x<w; x++) { if (image.GetSystemColor(x,y) == sysColor) { RemovePixel(x,y); } } } }
int Lee (StisInfo6 *sts, RowContents *row_cont) { /* arguments: StisInfo6 *sts i: calibration switches and info RowContents *row_cont i: output row arrays */ short mask; int ipix, npix, lfilt; double sum, sum2, *hold; mask = sts->sdqflags & DETECTORPROB; lfilt = sts->lfilter / 2; /* Alloc holding buffer. */ if ((hold = (double *) calloc (row_cont->npts, sizeof (double))) == NULL) return (OUT_OF_MEMORY); /* Initialize sums. */ sum = 0.0; sum2 = 0.0; npix = 0; for (ipix = 0; ipix <= lfilt; ipix++) AddPixel (ipix, row_cont, mask, &sum, &sum2, &npix); /* Compute first filtered value. */ hold[0] = LSF (sum, sum2, row_cont->back[0], row_cont->error[ipix], npix); /* Compute filtered values at first edge. */ for (ipix = 1; ipix <= lfilt; ipix++) { AddPixel (ipix + lfilt, row_cont, mask, &sum, &sum2, &npix); hold[ipix] = LSF (sum, sum2, row_cont->back[ipix], row_cont->error[ipix], npix); } /* Compute filtered values at "internal" region. */ for (ipix = lfilt+1; ipix <= row_cont->npts-1-lfilt; ipix++) { AddPixel (ipix + lfilt, row_cont, mask, &sum, &sum2, &npix); RemovePixel (ipix - lfilt - 1, row_cont, mask, &sum, &sum2, &npix); hold[ipix] = LSF (sum, sum2, row_cont->back[ipix], row_cont->error[ipix], npix); } /* Compute filtered values at second edge. */ for (ipix = row_cont->npts-lfilt; ipix <row_cont->npts; ipix++) { RemovePixel (ipix - lfilt - 1, row_cont, mask, &sum, &sum2, &npix); hold[ipix] = LSF (sum, sum2, row_cont->back[ipix], row_cont->error[ipix], npix); } /* Recompute background and net arrays. */ for (ipix = 0; ipix < row_cont->npts; ipix++) { row_cont->back[ipix] = hold[ipix]; row_cont->net[ipix] = row_cont->gross[ipix] - row_cont->back[ipix]; } free (hold); return (0); }