Changeset 36169
- Timestamp:
- Oct 1, 2013, 10:25:29 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
ippconfig/gpc1/ppImage.config (modified) (3 diffs)
-
ippconfig/recipes/filerules-split.mdc (modified) (1 diff)
-
ippconfig/recipes/ppImage.config (modified) (1 diff)
-
ippconfig/recipes/reductionClasses.mdc (modified) (2 diffs)
-
ppImage/src/ppImageAuxiliaryMask.c (modified) (8 diffs)
-
ppImage/src/ppImageParseCamera.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippconfig/gpc1/ppImage.config
r36111 r36169 34 34 # aditional auxiliary mask applied to corners of all chips in video cells. 35 35 # Is only applied if MASK.AUXMASK and USE.VIDEO.MASK are both true 36 AUX.VIDEO.MASK STR neb://any/gpc1/auxmask/mpg.20130 506/mask_video_cell_corners.fits36 AUX.VIDEO.MASK STR neb://any/gpc1/auxmask/mpg.20130930/mask_video_cell_corners.fits 37 37 38 38 … … 1292 1292 CROSSTALK.MEASURE BOOL FALSE # Subtract model background? 1293 1293 NO.COMPRESS BOOL TRUE # turn off image compression 1294 DETREND.CONSTRAINTS METADATA 1295 BIAS METADATA 1296 END 1297 DARK METADATA 1298 EXPTIME STR FPA.EXPOSURE 1299 END 1300 FLAT METADATA 1301 FILTER STR FPA.FILTERID 1302 END 1303 FLATCORR METADATA 1304 FILTER STR FPA.FILTERID 1305 END 1306 FRINGE METADATA 1307 FILTER STR FPA.FILTERID 1308 END 1309 SHUTTER METADATA 1310 END 1311 MASK METADATA 1312 END 1313 AUXMASK METADATA 1314 DETTYPE STR AUXMASK_STS 1315 END 1316 ASTROM METADATA 1317 END 1318 NOISEMAP METADATA 1319 END 1320 LINEARITY METADATA 1321 END 1322 END 1323 END 1324 1325 # Standard chip processing + auxiliary mask with heavy masking 1326 CHIP_AUXMASK_HEAVY METADATA 1327 BASE.FITS BOOL FALSE # Save base detrended image? 1328 BASE.MASK.FITS BOOL FALSE # Save base detrended image? 1329 BASE.VARIANCE.FITS BOOL FALSE # Save base detrended image? 1330 CHIP.FITS BOOL TRUE # Save chip-mosaic-ed image? 1331 CHIP.MASK.FITS BOOL TRUE # Save chip-mosaic-ed image? 1332 CHIP.VARIANCE.FITS BOOL TRUE # Save chip-mosaic-ed image? 1333 OVERSCAN BOOL TRUE # Overscan subtraction 1334 NONLIN BOOL TRUE # apply non-linearity correction 1335 BIAS BOOL FALSE # Bias subtraction 1336 DARK BOOL TRUE # Dark subtraction 1337 NOISEMAP BOOL TRUE 1338 REMNANCE BOOL FALSE # Remnance masking 1339 SHUTTER BOOL FALSE # Shutter correction 1340 FLAT BOOL TRUE # Flat-field normalisation 1341 MASK BOOL TRUE # Mask bad pixels 1342 MASK.BUILD BOOL TRUE # Build internal mask? 1343 MASK.BURNTOOL BOOL TRUE # Mask potential burntool trails 1344 MASK.AUXMASK BOOL TRUE # augment mask with more restrictive auxiliary mask 1345 PATTERN.ROW BOOL TRUE # Row pattern correction 1346 PATTERN.CELL BOOL FALSE # Cell pattern correction 1347 PATTERN.CONTINUITY BOOL TRUE # Cell pattern correction using edge continuity 1348 FRINGE BOOL TRUE # Fringe subtraction 1349 BIN1.FITS BOOL TRUE # Save 1st binned chip image? 1350 BIN2.FITS BOOL TRUE # Save 2nd binned chip image? 1351 PHOTOM BOOL TRUE # Source identification and photometry 1352 ASTROM.CHIP BOOL FALSE # Astrometry per chip? 1353 ASTROM.MOSAIC BOOL FALSE # Astrometry for mosaic? 1354 BACKGROUND BOOL TRUE # Subtract background? 1355 CROSSTALK.MEASURE BOOL FALSE # Subtract model background? 1356 NO.COMPRESS BOOL TRUE # turn off image compression 1357 DETREND.CONSTRAINTS METADATA 1358 BIAS METADATA 1359 END 1360 DARK METADATA 1361 EXPTIME STR FPA.EXPOSURE 1362 END 1363 FLAT METADATA 1364 FILTER STR FPA.FILTERID 1365 END 1366 FLATCORR METADATA 1367 FILTER STR FPA.FILTERID 1368 END 1369 FRINGE METADATA 1370 FILTER STR FPA.FILTERID 1371 END 1372 SHUTTER METADATA 1373 END 1374 MASK METADATA 1375 END 1376 AUXMASK METADATA 1377 DETTYPE STR AUXMASK_HEAVY 1378 END 1379 ASTROM METADATA 1380 END 1381 NOISEMAP METADATA 1382 END 1383 LINEARITY METADATA 1384 END 1385 END 1294 1386 END 1295 1387 … … 1392 1484 CROSSTALK.MEASURE BOOL FALSE # Subtract model background? 1393 1485 NO.COMPRESS BOOL TRUE # turn off image compression 1486 DETREND.CONSTRAINTS METADATA 1487 BIAS METADATA 1488 END 1489 DARK METADATA 1490 EXPTIME STR FPA.EXPOSURE 1491 END 1492 FLAT METADATA 1493 FILTER STR FPA.FILTERID 1494 END 1495 FLATCORR METADATA 1496 FILTER STR FPA.FILTERID 1497 END 1498 FRINGE METADATA 1499 FILTER STR FPA.FILTERID 1500 END 1501 SHUTTER METADATA 1502 END 1503 MASK METADATA 1504 END 1505 AUXMASK METADATA 1506 DETTYPE STR AUXMASK_HEAVY 1507 END 1508 ASTROM METADATA 1509 END 1510 NOISEMAP METADATA 1511 END 1512 LINEARITY METADATA 1513 END 1514 END 1394 1515 END 1395 1516 -
trunk/ippconfig/recipes/filerules-split.mdc
r36087 r36169 38 38 PPIMAGE.INPUT.MASK INPUT @FILES CHIP MASK 39 39 PPIMAGE.VIDEOMASK INPUT @DETDB CHIP MASK 40 PPIMAGE.AUXMASK INPUT @DETDB CHIP MASK 40 41 PPIMAGE.INPUT.VARIANCE INPUT @FILES CHIP VARIANCE 41 42 PPIMAGE.INPUT.PSF INPUT @FILES CHIP PSF -
trunk/ippconfig/recipes/ppImage.config
r36111 r36169 220 220 END 221 221 222 # Standard chip processing 222 # Standard chip processing with auxillary masking 223 223 CHIP_AUXMASK METADATA 224 BASE.FITS BOOL FALSE # Save base detrended image? 225 BASE.MASK.FITS BOOL FALSE # Save base detrended image? 226 BASE.VARIANCE.FITS BOOL FALSE # Save base detrended image? 227 CHIP.FITS BOOL TRUE # Save chip-mosaic-ed image? 228 CHIP.MASK.FITS BOOL TRUE # Save chip-mosaic-ed image? 229 CHIP.VARIANCE.FITS BOOL TRUE # Save chip-mosaic-ed image? 230 OVERSCAN BOOL TRUE # Overscan subtraction 231 NONLIN BOOL FALSE # Non-linearity correction; not implemented 232 BIAS BOOL TRUE # Bias subtraction 233 DARK BOOL TRUE # Dark subtraction 234 SHUTTER BOOL FALSE # Shutter correction 235 FLAT BOOL TRUE # Flat-field normalisation 236 MASK BOOL TRUE # Mask bad pixels 237 FRINGE BOOL TRUE # Fringe subtraction 238 BIN1.FITS BOOL TRUE # Save 1st binned chip image? 239 BIN2.FITS BOOL TRUE # Save 2nd binned chip image? 240 PHOTOM BOOL TRUE # Source identification and photometry 241 ASTROM.CHIP BOOL FALSE # Astrometry per chip? 242 ASTROM.MOSAIC BOOL FALSE # Astrometry for mosaic? 243 BACKGROUND BOOL TRUE # Subtract background? 244 MASK.STATS BOOL TRUE # Calculate Mask statistics. 245 END 246 247 # Standard chip processing with heavy auxillary masking (same as CHIP_AUXMASK here, but different in gpc1) 248 CHIP_AUXMASK_HEAVY METADATA 224 249 BASE.FITS BOOL FALSE # Save base detrended image? 225 250 BASE.MASK.FITS BOOL FALSE # Save base detrended image? -
trunk/ippconfig/recipes/reductionClasses.mdc
r36111 r36169 1126 1126 1127 1127 STS_DATASET METADATA 1128 # CHIP_PPIMAGE STR CHIP_AUXMASK 1129 # MPG wants auxiliary masking off for now 1130 CHIP_PPIMAGE STR CHIP 1128 CHIP_PPIMAGE STR CHIP_AUXMASK 1131 1129 CHIP_PSPHOT STR CHIP 1132 1130 WARP_PSWARP STR WARP 1133 STACK_PPSTACK STR STACK1131 STACK_PPSTACK STR STACK 1134 1132 STACK_PPSUB STR STACK 1135 STACK_PSPHOT STR STACK1133 STACK_PSPHOT STR STACK 1136 1134 DIFF_PPSUB STR DIFF 1137 1135 DIFF_PSPHOT STR DIFF … … 1140 1138 FAKEPHOT STR FAKEPHOT 1141 1139 ADDSTAR STR ADDSTAR 1142 PSASTRO STR STS_DATASET1143 STACKPHOT STRSTACKPHOT1140 PSASTRO STR STS_DATASET 1141 STACKPHOT STR STACKPHOT 1144 1142 END 1145 1143 -
trunk/ppImage/src/ppImageAuxiliaryMask.c
r35722 r36169 35 35 return NULL; 36 36 } 37 if (image->type.type != PS_TYPE_IMAGE_MASK) { 38 psWarning("auxiliary mask image %s has unexpected type %d\n", realName, image->type.type); 39 return false; 40 } 37 41 psFree(realName); 38 42 … … 72 76 } 73 77 74 // Find a suitable detRun with type AUXMASK 75 76 psTime *time = psMetadataLookupPtr(NULL, input->fpa->concepts, "FPA.TIME"); 77 if (time->sec == 0 && time->nsec == 0) { 78 psLogMsg ("psModules.camera", PS_LOG_WARN, "FPA.TIME has not been set.\n"); 79 } 80 81 char *cameraName = psMetadataLookupStr(NULL, input->fpa->concepts, "FPA.CAMERA"); 82 pmDetrendSelectOptions *detrendOptions = pmDetrendSelectOptionsAlloc(cameraName, *time, PM_DETREND_TYPE_AUXMASK); 83 84 pmDetrendSelectResults *results = pmDetrendSelect(detrendOptions, config); 85 psFree(detrendOptions); 86 if (!results) { 87 psError (psErrorCodeLast(), false, "no matching auxiliary mask found"); 88 return false; 89 } 90 91 pmFPALevel fileLevel = pmFPALevelFromName(results->level); 92 if (fileLevel != PM_FPA_LEVEL_CHIP) { 93 psError (PM_ERR_CONFIG, false, "invalid file level %d for selected auxiliary mask", fileLevel); 94 return false; 95 } 96 78 pmFPAfile *auxmask = psMetadataLookupPtr(&status, config->files, "PPIMAGE.AUXMASK"); 79 if (!status) { 80 psError(PS_ERR_UNEXPECTED_NULL, true, "PPIMAGE.CHIP file is not defined"); 81 return false; 82 } 83 97 84 // Go find the readout 98 85 // code to find the readouts was adapted from ppImageSubtractBackground … … 129 116 return true; 130 117 } 131 // not needed psImage *image = ro->image; 118 132 119 psImage *mask = ro->mask; 133 120 134 // now read the auxiliary mask file 135 psString class_id = psMetadataLookupStr(NULL, chip->concepts, "CHIP.NAME"); 136 137 char *auxMaskFileName = pmDetrendFile(results->detID, class_id, config); 138 if (!auxMaskFileName) { 139 psError (PM_ERR_CONFIG, false, "unable to find auxiliary mask file name for %s %s", results->detID, class_id); 140 return false; 141 } 142 psLogMsg ("ppImage", PS_LOG_INFO, "Auxiliary mask file: %s", auxMaskFileName); 143 144 psFree(results); 145 // record that we read this file in the config dump file. 146 // Note: this value isn't used during updates though. 147 pmConfigRunFilenameAddRead(config, "PPIMAGE.AUXMASK", auxMaskFileName); 148 recordFileInHeader(chip, "DETREND.AUXMASK", "auxiliary mask", auxMaskFileName); 149 150 psImage *auxMask = readAuxiliaryMask(config, auxMaskFileName); 151 psFree(auxMaskFileName); 152 if (!auxMask) { 153 psError(PS_ERR_UNKNOWN, false, "failed to read auxiliary mask file"); 154 return false; 155 } 156 157 // if the cell has video and the recipe value 121 if (mask->type.type != PS_TYPE_IMAGE_MASK) { 122 psWarning("mask image has unexpected type %d\n", mask->type.type); 123 return false; 124 } 125 126 pmChip *auxMaskChip = pmFPAviewThisChip(view, auxmask->fpa); 127 if (!auxMaskChip) { 128 psWarning("failed to find pmChip for auxiliary mask"); 129 return false; 130 } 131 pmCell *auxMaskCell = auxMaskChip->cells->data[0]; 132 if (!auxMaskCell) { 133 psWarning("failed to find pmCell for auxiliary mask"); 134 return false; 135 } 136 pmReadout *auxMaskReadout = auxMaskCell->readouts->data[0]; 137 if (!auxMaskReadout) { 138 psWarning("failed to find pmReadout for auxiliary mask"); 139 return false; 140 } 141 psImage *auxMaskImage = auxMaskReadout->mask; 142 if (!auxMaskImage) { 143 psWarning("failed to find psImage for auxiliary mask"); 144 return false; 145 } 146 if (auxMaskImage->type.type != PS_TYPE_IMAGE_MASK) { 147 psWarning("auxiliary mask image has unexpected type %d\n", auxMaskImage->type.type); 148 return false; 149 } 150 151 // if the cell has video and the recipe value is set or in the video mask 158 152 if (options->hasVideo && options->auxVideoMask && strcmp(options->auxVideoMask, "NULL")) { 159 153 psImage *videoMask = readAuxiliaryMask(config, options->auxVideoMask); … … 166 160 recordFileInHeader(chip, "DETREND.AUXVIDEOMASK", "auxiliary video mask", options->auxVideoMask); 167 161 168 // compute auxMask *= videoMask169 if (!psBinaryOp(auxMask , auxMask, "*", videoMask)) {170 psError(PS_ERR_UNKNOWN, false, " mulitplication of auxiliary mask and auxiliary video mask failed");162 // compute auxMask |= videoMask 163 if (!psBinaryOp(auxMaskImage, auxMaskImage, "|", videoMask)) { 164 psError(PS_ERR_UNKNOWN, false, "combination of auxiliary mask and auxiliary video mask failed"); 171 165 return false; 172 166 } … … 174 168 } 175 169 176 if ((mask->numRows != auxMask ->numRows) || (mask->numCols != auxMask->numCols) ||177 (mask->row0 != auxMask ->row0) || (mask->col0 != auxMask->col0)) {170 if ((mask->numRows != auxMaskImage->numRows) || (mask->numCols != auxMaskImage->numCols) || 171 (mask->row0 != auxMaskImage->row0) || (mask->col0 != auxMaskImage->col0)) { 178 172 psError(PS_ERR_IO, false, "structure of auxiliary mask does not match this chip"); 179 173 return false; … … 187 181 psAssert(staticMaskVal, "Need staticMaskVal!"); 188 182 183 // XXX: now that we are using an auxilary mask that matches the format of ps masks, we could just 184 // do psBinaryOp(mask, mask, "|", auxMaskImage) but run an explicit loop so that we can measure 185 // and log the number of additional pixels masked 189 186 int numCols = mask->numCols, numRows = mask->numRows; // Size of image 190 187 unsigned long numMasked = 0; 191 188 for (int y = 0; y < numRows; y++) { 192 189 for (int x = 0; x < numCols; x++) { 193 // auxMask is floating point type image with pixel value 0 meaning mask it 194 // XXX: support other types and get the mask value from the header 195 if (auxMask->data.F32[y][x] == 0) { 190 if (auxMaskImage->data.U16[y][x] != 0) { 196 191 if ((mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & staticMaskVal) == 0) { 197 192 // pixel was not previously included in the static mask so mask it … … 200 195 } 201 196 // I don't need to do this. 197 // image->data.F32[y][x] = 0.0; 202 198 // The background subtraction code runs after us and will do it there 203 // image->data.F32[y][x] = 0.0;204 199 } 205 200 } … … 213 208 } 214 209 215 psFree(auxMask);216 217 210 return true; 218 211 } -
trunk/ppImage/src/ppImageParseCamera.c
r35685 r36169 72 72 PM_FPA_FILE_MASK, PM_DETREND_TYPE_VIDEOMASK)) { 73 73 psError(PS_ERR_IO, false, "Can't find a mask image source"); 74 psFree(options); 75 return NULL; 76 } 77 } 78 if (options->doAuxMask) { 79 if (!ppImageDefineFile(config, input->fpa, "PPIMAGE.AUXMASK", "MASK", 80 PM_FPA_FILE_MASK, PM_DETREND_TYPE_AUXMASK)) { 81 psError(PS_ERR_IO, false, "Can't find a auxillary mask image source"); 74 82 psFree(options); 75 83 return NULL;
Note:
See TracChangeset
for help on using the changeset viewer.
