Changeset 16841
- Timestamp:
- Mar 6, 2008, 10:47:50 AM (18 years ago)
- Location:
- trunk/psModules/src
- Files:
-
- 1 added
- 9 edited
-
camera/pmFPAfile.c (modified) (2 diffs)
-
camera/pmFPAfile.h (modified) (2 diffs)
-
camera/pmFPAfileFitsIO.c (modified) (3 diffs)
-
camera/pmFPAfileFitsIO.h (modified) (3 diffs)
-
camera/pmFPAfileIO.c (modified) (8 diffs)
-
detrend/Makefile.am (modified) (2 diffs)
-
detrend/pmBias.c (modified) (3 diffs)
-
detrend/pmDark.c (modified) (6 diffs)
-
detrend/pmDark.h (added)
-
psmodules.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/camera/pmFPAfile.c
r16711 r16841 435 435 if (!strcasecmp (type, "FRINGE")) { 436 436 return PM_FPA_FILE_FRINGE; 437 } 438 if (!strcasecmp (type, "DARK")) { 439 return PM_FPA_FILE_DARK; 437 440 } 438 441 if (!strcasecmp (type, "HEADER")) { … … 473 476 case PM_FPA_FILE_FRINGE: 474 477 return ("FRINGE"); 478 case PM_FPA_FILE_DARK: 479 return("DARK"); 475 480 case PM_FPA_FILE_HEADER: 476 481 return ("HEADER"); -
trunk/psModules/src/camera/pmFPAfile.h
r16355 r16841 4 4 * @author EAM, IfA 5 5 * 6 * @version $Revision: 1.2 8$ $Name: not supported by cvs2svn $7 * @date $Date: 2008-0 2-07 23:45:56$6 * @version $Revision: 1.29 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2008-03-06 20:47:50 $ 8 8 * Copyright 2004-2005 Institute for Astronomy, University of Hawaii 9 9 */ … … 28 28 PM_FPA_FILE_RAW, 29 29 PM_FPA_FILE_IMAGE, 30 PM_FPA_FILE_MASK, 31 PM_FPA_FILE_WEIGHT, 32 PM_FPA_FILE_FRINGE, 33 PM_FPA_FILE_DARK, 30 34 PM_FPA_FILE_PSF, 31 35 PM_FPA_FILE_JPEG, 32 36 PM_FPA_FILE_KAPA, 33 PM_FPA_FILE_MASK,34 PM_FPA_FILE_WEIGHT,35 PM_FPA_FILE_FRINGE,36 37 PM_FPA_FILE_HEADER, 37 38 PM_FPA_FILE_ASTROM, -
trunk/psModules/src/camera/pmFPAfileFitsIO.c
r15180 r16841 20 20 #include "pmFPACopy.h" 21 21 #include "pmFPAConstruct.h" 22 #include "pmDark.h" 22 23 23 24 pmFPA *pmFPAfileSuitableFPA(const pmFPAfile *file, const pmFPAview *view, const pmConfig *config) … … 243 244 } 244 245 246 bool pmFPAviewReadFitsDark(const pmFPAview *view, pmFPAfile *file) 247 { 248 PS_ASSERT_PTR_NON_NULL(view, false); 249 PS_ASSERT_PTR_NON_NULL(file, false); 250 return fpaViewReadFitsImage(view, file, pmFPAReadDark, pmChipReadDark, pmCellReadDark); 251 } 252 245 253 bool pmFPAviewReadFitsHeaderSet(const pmFPAview *view, pmFPAfile *file) 246 254 { … … 337 345 PS_ASSERT_PTR_NON_NULL(file, false); 338 346 return fpaViewWriteFitsImage(view, file, config, pmFPAWriteWeight, pmChipWriteWeight, pmCellWriteWeight); 347 } 348 349 bool pmFPAviewWriteFitsDark(const pmFPAview *view, pmFPAfile *file, const pmConfig *config) 350 { 351 PS_ASSERT_PTR_NON_NULL(view, false); 352 PS_ASSERT_PTR_NON_NULL(file, false); 353 return fpaViewWriteFitsImage(view, file, config, pmFPAWriteDark, pmChipWriteDark, pmCellWriteDark); 339 354 } 340 355 -
trunk/psModules/src/camera/pmFPAfileFitsIO.h
r14205 r16841 5 5 * @author PAP, IfA 6 6 * 7 * @version $Revision: 1. 9$ $Name: not supported by cvs2svn $8 * @date $Date: 200 7-07-14 03:19:01$7 * @version $Revision: 1.10 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2008-03-06 20:47:50 $ 9 9 * Copyright 2004-2005 Institute for Astronomy, University of Hawaii 10 10 */ … … 30 30 ); 31 31 32 /// Read a dark into the current view 33 bool pmFPAviewReadFitsDark(const pmFPAview *view, ///< View specifying level of interest 34 pmFPAfile *file ///< FPA file into which to read 35 ); 36 32 37 /// Read an image header into the current view 33 38 bool pmFPAviewReadFitsHeaderSet(const pmFPAview *view, ///< View specifying level of interest … … 52 57 const pmConfig *config ///< Configuration 53 58 ); 59 60 /// Write the dark for the specified view 61 bool pmFPAviewWriteFitsDark(const pmFPAview *view, ///< View specifying level of interest 62 pmFPAfile *file, ///< FPA file to write 63 const pmConfig *config ///< Configuration 64 ); 54 65 55 66 /// Write a PHU for a fits image if needed -
trunk/psModules/src/camera/pmFPAfileIO.c
r16818 r16841 174 174 status = pmFPAviewReadFitsHeaderSet(view, file); 175 175 break; 176 case PM_FPA_FILE_DARK: 177 status = pmFPAviewReadFitsDark(view, file); 178 break; 176 179 case PM_FPA_FILE_FRINGE: 177 status = pmFPAviewReadFitsImage (view, file);180 status = pmFPAviewReadFitsImage(view, file); 178 181 if (status) { 179 182 if (!pmFPAviewReadFitsTable(view, file, "FRINGE")) { … … 247 250 248 251 switch (file->type) { 249 case PM_FPA_FILE_IMAGE: 250 case PM_FPA_FILE_MASK: 251 case PM_FPA_FILE_WEIGHT: 252 case PM_FPA_FILE_FRINGE: { 252 case PM_FPA_FILE_IMAGE: 253 case PM_FPA_FILE_MASK: 254 case PM_FPA_FILE_WEIGHT: 255 case PM_FPA_FILE_FRINGE: 256 case PM_FPA_FILE_DARK: { 253 257 // create FPA structure component based on view 254 258 psMetadata *format = file->format; // Camera format configuration … … 397 401 fitsType |= (file->type == PM_FPA_FILE_HEADER); 398 402 fitsType |= (file->type == PM_FPA_FILE_FRINGE); 403 fitsType |= (file->type == PM_FPA_FILE_DARK); 399 404 fitsType |= (file->type == PM_FPA_FILE_CMP); 400 405 fitsType |= (file->type == PM_FPA_FILE_CMF); … … 451 456 case PM_FPA_FILE_HEADER: 452 457 psAbort ("no HEADER write functions defined"); 458 break; 459 case PM_FPA_FILE_DARK: 460 status = pmFPAviewWriteFitsDark(view, file, config); 453 461 break; 454 462 case PM_FPA_FILE_FRINGE: … … 532 540 case PM_FPA_FILE_HEADER: 533 541 case PM_FPA_FILE_FRINGE: 542 case PM_FPA_FILE_DARK: 534 543 case PM_FPA_FILE_CMF: 535 544 case PM_FPA_FILE_PSF: … … 593 602 case PM_FPA_FILE_HEADER: 594 603 case PM_FPA_FILE_FRINGE: 604 case PM_FPA_FILE_DARK: 595 605 status = pmFPAviewFreeData(view, file); 596 606 break; … … 736 746 case PM_FPA_FILE_HEADER: 737 747 case PM_FPA_FILE_FRINGE: 748 case PM_FPA_FILE_DARK: 738 749 case PM_FPA_FILE_CMF: 739 750 case PM_FPA_FILE_PSF: … … 882 893 case PM_FPA_FILE_MASK: 883 894 case PM_FPA_FILE_WEIGHT: 895 case PM_FPA_FILE_DARK: 884 896 case PM_FPA_FILE_FRINGE: 885 897 status = pmFPAviewFitsWritePHU (view, file, config); -
trunk/psModules/src/detrend/Makefile.am
r14505 r16841 13 13 pmDetrendDB.c \ 14 14 pmShutterCorrection.c \ 15 pmShifts.c 15 pmShifts.c \ 16 pmDark.c 16 17 17 18 # pmSkySubtract.c … … 27 28 pmDetrendDB.h \ 28 29 pmShutterCorrection.h \ 29 pmShifts.h 30 pmShifts.h \ 31 pmDark.h 30 32 31 33 # pmSkySubtract.h -
trunk/psModules/src/detrend/pmBias.c
r15162 r16841 113 113 } 114 114 if (dark) { 115 psWarning("Dark processing is now available using pmDark --- perhaps you should use that instead?"); 115 116 PS_ASSERT_PTR_NON_NULL(view, false); 116 117 PS_ASSERT_IMAGE_NON_NULL(dark->image, false); … … 121 122 122 123 if (!pmOverscanSubtract (in, overscanOpts)) { 123 return false;124 return false; 124 125 } 125 126 … … 148 149 } 149 150 150 float darkNorm = 1.0;151 float darkNorm = 1.0; 151 152 float inNorm = pmFPADarkNorm(in->parent->parent->parent, view, inTime); 152 153 153 // if we have a normalized dark exposure, we simply multiply the master by inNorm. if154 // we do not have a normalized exposure, we have to scale the master as well. XXX do155 // we need to explicitly identify the master as normalized?154 // if we have a normalized dark exposure, we simply multiply the master by inNorm. if 155 // we do not have a normalized exposure, we have to scale the master as well. XXX do 156 // we need to explicitly identify the master as normalized? 156 157 157 if (darkTime != 1.0) {158 darkNorm = pmFPADarkNorm(dark->parent->parent->parent, view, darkTime);159 }158 if (darkTime != 1.0) { 159 darkNorm = pmFPADarkNorm(dark->parent->parent->parent, view, darkTime); 160 } 160 161 161 if (isnan(inNorm) || isnan(darkNorm)) {162 if (isnan(inNorm) || isnan(darkNorm)) { 162 163 psError(PS_ERR_UNKNOWN, false, "Unable to determine dark normalisations."); 163 164 return false; -
trunk/psModules/src/detrend/pmDark.c
r16824 r16841 25 25 static bool ordinateLookup(float *value, // Value of ordinate, to return 26 26 const char *name, // Name of ordinate (concept name) 27 bool scale, // Scale the value? 28 float min, float max, // Minimum and maximum values for scaling 27 29 const pmReadout *ro // Readout of interest 28 30 ) … … 60 62 psWarning("Non-finite value (%f) of concept %s in readout", *value, name); 61 63 return false; 64 } 65 if (scale) { 66 if (*value < min || *value > max) { 67 psWarning("Value of concept %s (%f) outside range (%f:%f)", name, *value, min, max); 68 return false; 69 } 70 *value = 2.0 * (*value - min) / (max - min) - 1.0; 62 71 } 63 72 … … 130 139 131 140 float value = NAN; // Value of ordinate 132 if (!ordinateLookup(&value, ord->name, ro)) {141 if (!ordinateLookup(&value, ord->name, ord->scale, ord->min, ord->max, ro)) { 133 142 roMask->data.U8[j] = 0xff; 134 143 val->data.F32[i] = NAN; 135 144 numBadInputs++; 136 145 continue; 137 }138 if (ord->scale) {139 value = 2.0 * (value - ord->min) / (ord->max - ord->min) - 1.0;140 146 } 141 147 val->data.F32[i] = value; … … 280 286 return false; 281 287 } 282 PS_ASSERT_ARRAYS_SIZE_EQUAL(dark->readouts, ordinates, false);283 288 284 289 int numOrdinates = ordinates->n; // Number of ordinates … … 287 292 pmDarkOrdinate *ord = ordinates->data[i]; // Ordinate of interest 288 293 float value = NAN; // Value for ordinate 289 if (!ordinateLookup(&value, ord->name, readout)) {294 if (!ordinateLookup(&value, ord->name, ord->scale, ord->min, ord->max, readout)) { 290 295 psError(PS_ERR_UNKNOWN, true, "Unable to find value for %s", ord->name); 291 296 psFree(values); … … 317 322 } 318 323 float value = psPolynomialMDEval(poly, values); // Value of dark current 319 readout->image->data.F32[y][x] = value;324 readout->image->data.F32[y][x] -= value; 320 325 if (readout->mask && !isfinite(value)) { 321 326 readout->mask->data.PS_TYPE_MASK_DATA[y][x] = bad; -
trunk/psModules/src/psmodules.h
r15898 r16841 68 68 #include <pmShutterCorrection.h> 69 69 // #include <pmSkySubtract.h> 70 #include <pmDark.h> 70 71 71 72 // the following headers are from psModule:astrom
Note:
See TracChangeset
for help on using the changeset viewer.
