Changeset 26438 for trunk/magic/remove/src
- Timestamp:
- Dec 16, 2009, 12:22:44 PM (16 years ago)
- Location:
- trunk/magic/remove
- Files:
-
- 3 added
- 6 edited
- 1 moved
-
. (modified) (1 prop)
-
src (modified) (1 prop)
-
src/Makefile.am (added)
-
src/Makefile.simple (modified) (1 diff)
-
src/diffedpixels.c (moved) (moved from trunk/magic/remove/src/warpedpixels.c ) (8 diffs, 1 prop)
-
src/streaksVersion.c (added)
-
src/streaksVersionDefinitions.h.in (added)
-
src/streaksio.c (modified) (3 diffs)
-
src/streaksremove.c (modified) (27 diffs)
-
src/streaksremove.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/magic/remove
-
Property svn:ignore
set to
configure
Makefile.in
Doxyfile
config.log
depcomp
config.status
config.guess
ltmain.sh
config.sub
autom4te.cache
libtool
missing
Makefile
aclocal.m4
install-sh
-
Property svn:ignore
set to
-
trunk/magic/remove/src
- Property svn:ignore
-
old new 4 4 streakscompare 5 5 streaksrelease 6 makefile 6 Makefile 7 Makefile.in 8 config.h 9 .deps 10 streaksVersionDefinitions.h 11 config.h.in
-
- Property svn:ignore
-
trunk/magic/remove/src/Makefile.simple
r26256 r26438 12 12 streaksremove.o \ 13 13 streaksextern.o \ 14 warpedpixels.o \14 diffedpixels.o \ 15 15 Line.o 16 16 -
trunk/magic/remove/src/diffedpixels.c
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/eam_branches/20091113/magic/remove/src/warpedpixels.c 26119-26255
r26406 r26438 9 9 static int xRight(psPlane *pt, int y); 10 10 11 // Examine the set of diff skycells and compute the pixels that were 12 // included in difference processing 11 13 bool 12 compute WarpedPixels(streakFiles *sf)14 computeDiffedPixels(streakFiles *sf) 13 15 { 14 16 bool status; … … 29 31 psFree(bounds); 30 32 31 sf-> warpedPixels = psImageAlloc(width, height, PS_TYPE_U8);32 psImageInit(sf-> warpedPixels, 0);33 sf->diffedPixels = psImageAlloc(width, height, PS_TYPE_U8); 34 psImageInit(sf->diffedPixels, 0); 33 35 34 36 for (int i=0; i<n; i++) { … … 42 44 bool writeTouchedPixels = false; // XXX: make this an argument to the program 43 45 if (writeTouchedPixels) { 44 // write out the warped pixels46 // write out the diffed pixels 45 47 psMetadata * header = psMetadataAlloc(); 46 48 if (sf->inAstrom->fpa->toSky->type != PS_PROJ_DIS) { 47 49 pmAstromWriteWCS(header, sf->inAstrom->fpa, sf->chip, 0.001); 48 50 } 49 psFits *fits = psFitsOpen(" warpedpixels.fits", "w");50 51 psFitsWriteImage(fits, header, sf-> warpedPixels, 0, NULL);51 psFits *fits = psFitsOpen("diffedpixels.fits", "w"); 52 53 psFitsWriteImage(fits, header, sf->diffedPixels, 0, NULL); 52 54 psFitsClose(fits); 53 55 psFree(header); … … 84 86 /* now set up our wrapper to the chip astrometry to apply to the whole chip */ 85 87 sf->astrom = streakSetAstrometry(sf->astrom, sf->stage, sf->inAstrom->fpa, sf->chip, false, NULL, 86 sf-> warpedPixels->numCols, sf->warpedPixels->numRows);88 sf->diffedPixels->numCols, sf->diffedPixels->numRows); 87 89 88 90 // convert corners of skycell to sky coordinates … … 138 140 // Now set the touched pixels 139 141 int ymin = fmax(0, pt[1].y ); 140 int ymax = fmin(pt[3].y + 0.5, sf-> warpedPixels->numRows - 1);142 int ymax = fmin(pt[3].y + 0.5, sf->diffedPixels->numRows - 1); 141 143 #if (DEBUG_PRINT > 1) 142 144 printf("\nymin: %d ymax: %d\n", ymin, ymax); … … 149 151 xleft = 0; 150 152 } 151 if (xleft > sf-> warpedPixels->numCols) {153 if (xleft > sf->diffedPixels->numCols) { 152 154 continue; 153 155 } … … 155 157 continue; 156 158 } 157 if (xright >= sf-> warpedPixels->numCols) {158 xright = sf-> warpedPixels->numCols - 1;159 if (xright >= sf->diffedPixels->numCols) { 160 xright = sf->diffedPixels->numCols - 1; 159 161 } 160 162 #if (DEBUG_PRINT > 1) … … 162 164 #endif 163 165 164 psU8 *rowPixels = sf-> warpedPixels->data.U8[y];166 psU8 *rowPixels = sf->diffedPixels->data.U8[y]; 165 167 166 168 int n = xright - xleft + 1; -
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/magic/remove/src/streaksio.c
r26408 r26438 121 121 sf->transparentStreaks = psMetadataLookupF64(&status, config->arguments, "TRANSPARENT_STREAKS"); 122 122 123 sf->stats = psMetadataAlloc(); 124 psString statsFileName= psMetadataLookupStr(&status, config->arguments, "STATS"); 125 if (statsFileName) { 126 sf->statsFile = fopen(statsFileName, "w"); 127 if (!sf->statsFile) { 128 psError(PS_ERR_IO, true, "failed to open stats file %s", statsFileName); 129 streaksExit("", PS_EXIT_CONFIG_ERROR); 130 } 131 } 132 123 133 return sf; 124 134 } … … 128 138 { 129 139 freeImages(sf); 130 psFree(sf-> warpedPixels);140 psFree(sf->diffedPixels); 131 141 psFree(sf->tiles); 132 142 psFree(sf->view); … … 1181 1191 } 1182 1192 1193 // Get the mask values that we need. 1194 // If an input mask file is provided get them from there. 1195 // Otherwise get them from the recipe MASKS 1183 1196 void 1184 1197 strkGetMaskValues(streakFiles *sfiles) -
trunk/magic/remove/src/streaksremove.c
r26408 r26438 12 12 static pmConfig *parseArguments(int argc, char **argv); 13 13 static bool readAndCopyToOutput(streakFiles *sf, bool exciseAll); 14 static void exciseNon WarpedPixels(streakFiles *sfiles, psImageMaskType newMaskValue);15 static bool warpedPixel(streakFiles *sfiles, int x, int y);14 static void exciseNonDiffedPixels(streakFiles *sfiles, psImageMaskType newMaskValue); 15 static bool diffedPixel(streakFiles *sfiles, int x, int y); 16 16 static void excisePixel(streakFiles *sfiles, unsigned int x, unsigned int y, bool streak, psImageMaskType newMaskValue); 17 17 static void writeImages(streakFiles *sf, bool exciseImageCube); 18 18 static void updateAstrometry(streakFiles *sfiles); 19 19 static void censorSources(streakFiles *sfiles, psImageMaskType maskStreak); 20 static long censorPixels(streakFiles *sfiles, psImage * pixels, bool checkNonWarpedPixels, psU16 maskStreak); 21 20 static long censorPixels(streakFiles *sfiles, psImage * pixels, bool checkNonDiffedPixels, psU16 maskStreak); 21 22 // Note: For clarity the flow of this program is in main(). 23 // There is not a lot of error checking is done in main. 24 // Until the end, where we might be doing Nebulous operations, called functions exit when an error 25 // is encountered. 22 26 int 23 27 main(int argc, char *argv[]) … … 26 30 27 31 psLibInit(NULL); 28 psTimerStart(" STREAKSREMOVE");32 psTimerStart("TOTAL_TIME"); 29 33 30 34 pmConfig *config = parseArguments(argc, argv); … … 46 50 streakFiles *sfiles = openFiles(config, true, argv[0]); 47 51 setupAstrometry(sfiles); 52 sfiles->stats = psMetadataAlloc(); 48 53 49 54 // Optionally we can set pixels that are masked to NAN since they couldn't have been … … 57 62 58 63 bool exciseAll = false; 59 // --keepnon warped is a test and debug mode60 bool keepNon WarpedPixels = psMetadataLookupBool(&status, config->arguments, "KEEP_NON_WARPED");61 62 // we need to check for non warped pixels unless we've been asked not to or the stage is diff63 // (By definition pixels in diff images were included in a diff)64 bool checkNon WarpedPixels = ! (keepNonWarpedPixels || (sfiles->stage == IPP_STAGE_DIFF) );65 66 if (checkNon WarpedPixels ) {64 // --keepnondiffed is a test and debug mode 65 bool keepNonDiffedPixels = psMetadataLookupBool(&status, config->arguments, "KEEP_NON_DIFFED"); 66 67 // we need to check for non diffed pixels unless we've been asked not to or the stage is diff 68 // (By definition pixels in diff images were included in the difference images) 69 bool checkNonDiffedPixels = ! (keepNonDiffedPixels || (sfiles->stage == IPP_STAGE_DIFF) ); 70 71 if (checkNonDiffedPixels ) { 67 72 // From magic ICD: 68 73 // In the raw and detrended images, the pixels which were not … … 72 77 // if no skycells are provided sfiles->exciseAll is set to true 73 78 74 psTimerStart("COMPUTE_ WARPED_PIXELS");75 if (! compute WarpedPixels(sfiles) ) {79 psTimerStart("COMPUTE_DIFFED_PIXELS"); 80 if (! computeDiffedPixels(sfiles) ) { 76 81 // we have no choice to excise all pixels 77 82 exciseAll = true; 78 83 } 79 psF64 cwp_t = psTimerClear("COMPUTE_WARPED_PIXELS"); 80 psLogMsg("streaksremove", PS_LOG_INFO, "time to compute warped pixels: %f\n", cwp_t); 84 psF64 cdp_t = psTimerClear("COMPUTE_DIFFED_PIXELS"); 85 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "COMPUTE_UNDIFFED_PIXELS", PS_META_REPLACE, "time to compute non-diffedpixels", cdp_t); 86 psLogMsg("streaksremove", PS_LOG_INFO, "time to compute diffed pixels: %f\n", cdp_t); 81 87 } 82 88 … … 97 103 long totalStreakPixels = 0; 98 104 105 // accumulators for the various timers 106 psF64 gsp_t = 0; 107 psF64 enw_t = 0; 108 psF64 rms_t = 0; 109 psF64 cs_t = 0; 110 psF64 wi_t = 0; 99 111 // Iterate through each component of the input (except for raw images there is only one) 100 112 do { … … 126 138 StreakPixels *pixels = streak_on_component(streaks, sfiles->astrom, sfiles->inImage->numCols, 127 139 sfiles->inImage->numRows); 140 gsp_t += psTimerClear("GET_STREAK_PIXELS"); 141 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "GET_STREAK_PIXELS", PS_META_REPLACE, "", gsp_t); 128 142 psLogMsg("streaksremove", PS_LOG_INFO, "time to get streak pixels: %f\n", psTimerClear("GET_STREAK_PIXELS")); 129 143 … … 131 145 // otherwise it contained an image cube (video cell) which is handled in the if block 132 146 if (sfiles->inImage->image) { 133 if (checkNon WarpedPixels) {134 psTimerStart("EXCISE_NON_ WARPED");135 136 // set non- warped pixels and variance to NAN, mask to maskStreak (since the pixel147 if (checkNonDiffedPixels) { 148 psTimerStart("EXCISE_NON_DIFFED"); 149 150 // set non-diffed pixels and variance to NAN, mask to maskStreak (since the pixel 137 151 // is excised as part of the destreaking process) 138 exciseNonWarpedPixels(sfiles, sfiles->maskStreak); 139 140 psLogMsg("streaksremove", PS_LOG_INFO, "time to excise non warped pixels: %f\n", psTimerClear("EXCISE_NON_WARPED")); 152 exciseNonDiffedPixels(sfiles, sfiles->maskStreak); 153 154 enw_t += psTimerClear("EXCISE_NON_DIFFED"); 155 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "EXCISE_NON_DIFFED", PS_META_REPLACE, "", enw_t); 156 psLogMsg("streaksremove", PS_LOG_INFO, "time to excise non diffed pixels: %f\n", enw_t); 141 157 } 142 158 143 159 psTimerStart("REMOVE_STREAKS"); 144 160 145 totalStreakPixels += censorPixels(sfiles, pixels, checkNonWarpedPixels, sfiles->maskStreak); 146 147 psLogMsg("streaksremove", PS_LOG_INFO, "time to remove streak pixels: %f\n", psTimerClear("REMOVE_STREAKS")); 161 totalStreakPixels += censorPixels(sfiles, pixels, checkNonDiffedPixels, sfiles->maskStreak); 162 163 rms_t += psTimerClear("REMOVE_STREAKS"); 164 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "REMOVE_STREAKS", PS_META_REPLACE, "", enw_t); 165 psLogMsg("streaksremove", PS_LOG_INFO, "time to remove streak pixels: %f\n", rms_t); 148 166 149 167 if (nanForRelease) { … … 167 185 } 168 186 187 psTimerStart("CENSOR_SOURCES"); 169 188 censorSources(sfiles, sfiles->maskStreak); 189 cs_t += psTimerClear("CENSOR_SOURCES"); 190 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "CENSOR_SOURCES", PS_META_REPLACE, "", cs_t); 191 170 192 171 193 // write the destreaked "temporary" images and the recovery images 194 psTimerStart("WRITE_IMAGES"); 172 195 writeImages(sfiles, exciseImageCube); 173 196 wi_t += psTimerClear("WRITE_IMAGES"); 197 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "WRITE_IMAGES", PS_META_REPLACE, "", wi_t); 174 198 175 199 psLogMsg("streaksremove", PS_LOG_INFO, "time to process component %d: %f\n", sfiles->extnum, psTimerClear("PROCESS_COMPONENT")); … … 179 203 psFree(streaks); 180 204 181 psLogMsg("streaksremove", PS_LOG_INFO, "pixels: %ld streak pixels: %ld %4.2f%%\n", totalPixels, totalStreakPixels, 100. * totalStreakPixels / totalPixels); 205 if (exciseAll) { 206 totalStreakPixels = totalPixels; 207 } 208 209 psF64 maskedFraction = totalStreakPixels / totalPixels; 210 psLogMsg("streaksremove", PS_LOG_INFO, "pixels: %ld streak pixels: %ld %4.2f%%\n", totalPixels, totalStreakPixels, maskedFraction * 100); 211 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "MASKED_FRACTION", PS_META_REPLACE, "", maskedFraction); 182 212 183 213 // check the weight and mask files for extra extensions that might be in files … … 188 218 189 219 psTimerStart("CLOSE_IMAGES"); 190 191 220 closeImages(sfiles); 192 193 psLogMsg("streaksremove", PS_LOG_INFO, "time to close images: %f\n", psTimerClear("CLOSE_IMAGES")); 194 195 221 psF64 ci_t = psTimerClear("CLOSE_IMAGES"); 222 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "CLOSE_IMAGES", PS_META_REPLACE, "", ci_t); 223 224 psLogMsg("streaksremove", PS_LOG_INFO, "time to close images: %f\n", ci_t); 225 226 psTimerStart("REPLICATE_OUTPUTS"); 196 227 if (!replicateOutputs(sfiles)) { 197 228 psErrorStackPrint(stderr, "failed to replicate output files"); … … 199 230 exit(PS_EXIT_UNKNOWN_ERROR); 200 231 } 232 psF64 ro_t = psTimerClear("REPLICATE_OUTPUTS"); 233 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "REPLICATE_OUTPUTS", PS_META_REPLACE, "", ro_t); 201 234 202 235 // NOTE: from here on we can't just quit if something goes wrong. … … 208 241 // swap the instances for the input and output 209 242 // Note this is a nebulous database operation. No file I/O is performed 243 psTimerStart("SWAP_INSTANCES"); 210 244 if (!swapOutputsToInputs(sfiles)) { 211 // XXX: Now what?212 245 // It is up to the program that reverts failed destreak runs to insure that 213 // any input files that have been swapped are restored and that the de-streaked214 // versions are deleted 246 // any original non-destreaked input files that have been swapped are restored and that the de-streaked 247 // versions are deleted. 215 248 216 249 psErrorStackPrint(stderr, "failed to swap files"); … … 218 251 // XXX: pick a specific error code for this failure 219 252 exit(PS_EXIT_UNKNOWN_ERROR); 253 } 254 psF64 si_t = psTimerClear("SWAP_INSTANCES"); 255 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "SWAP_INSTANCES", PS_META_REPLACE, "", si_t); 256 } 257 258 psF64 total_time = psTimerClear("TOTAL_TIME"); 259 psMetadataAddF64(sfiles->stats, PS_LIST_TAIL, "TOTAL_TIME", PS_META_REPLACE, "", total_time); 260 psLogMsg("streaksremove", PS_LOG_INFO, "time to run streaksremove: %f\n", total_time); 261 262 if (sfiles->statsFile) { 263 const char *statsMDC = psMetadataConfigFormat(sfiles->stats); 264 if (!statsMDC || strlen(statsMDC) == 0) { 265 psError(PS_ERR_IO, false, "Unable to get statistics MDC file.\n"); 266 } else { 267 fprintf(sfiles->statsFile, "%s", statsMDC); 268 psFree((void *)statsMDC); 269 fclose(sfiles->statsFile); 270 sfiles->statsFile = NULL; 271 psFree(sfiles->stats); 272 sfiles->stats = NULL; 220 273 } 221 274 } … … 228 281 streaksNebulousCleanup(); 229 282 pmConfigDone(); 230 psLogMsg("streaksremove", PS_LOG_INFO, "time to run streaksremove: %f\n", psTimerClear("STREAKSREMOVE"));231 283 psLibFinalize(); 232 284 … … 237 289 238 290 static long 239 censorPixels(streakFiles *sfiles, psImage *pixels, bool checkNon WarpedPixels, psU16 maskStreak)291 censorPixels(streakFiles *sfiles, psImage *pixels, bool checkNonDiffedPixels, psU16 maskStreak) 240 292 { 241 293 long streakPixels = 0; … … 245 297 if (psImageGet(pixels, x, y)) { 246 298 ++streakPixels; 247 if (!checkNon WarpedPixels || warpedPixel(sfiles, x, y)) {299 if (!checkNonDiffedPixels || diffedPixel(sfiles, x, y)) { 248 300 249 301 excisePixel(sfiles, x, y, true, maskStreak); … … 251 303 } else { 252 304 // This pixel was not included in any warp and has thus already excised 253 // by exciseNon WarpedPixels305 // by exciseNonDiffedPixels 254 306 } 255 307 } … … 268 320 fprintf(stderr, "\t-weight WEIGHT.fits: weight file to de-streak\n"); 269 321 fprintf(stderr, "\t-replace: replace the input images with the output\n"); 270 fprintf(stderr, "\t-keepnon warped: do not exise pixels that were not part of difference processing\n");322 fprintf(stderr, "\t-keepnondiffed: do not exise pixels that were not part of difference processing\n"); 271 323 fprintf(stderr, "\t-transparent val: instead of setting excicsed pixel to NAN add val\n"); 272 324 fprintf(stderr, "\t-chip_mask MASK.fits: name of mask for chip stage (camera stage mask is passed tih -mask)\n"); … … 359 411 } 360 412 361 if ((argnum = psArgumentGet(argc, argv, "-keepnon warped"))) {362 psArgumentRemove(argnum, &argc, argv); 363 psMetadataAddBool(config->arguments, PS_LIST_TAIL, "KEEP_NON_ WARPED", 0,364 "skip excising of non warped pixels", true);413 if ((argnum = psArgumentGet(argc, argv, "-keepnondiffed"))) { 414 psArgumentRemove(argnum, &argc, argv); 415 psMetadataAddBool(config->arguments, PS_LIST_TAIL, "KEEP_NON_DIFFED", 0, 416 "skip excising of non diffed pixels", true); 365 417 } 366 418 … … 377 429 } 378 430 379 // if skycells are not provided then we have to execise all pixels unless -keepnon warped431 // if skycells are not provided then we have to execise all pixels unless -keepnondiffed 380 432 pmConfigFileSetsMD(config->arguments, &argc, argv, "SKYCELLS", "-skycell", "-skycelllist"); 381 433 … … 440 492 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "SOURCES", 0, 441 493 "name of input sources file", argv[argnum]); 494 psArgumentRemove(argnum, &argc, argv); 495 } 496 497 if ((argnum = psArgumentGet(argc, argv, "-stats"))) { 498 psArgumentRemove(argnum, &argc, argv); 499 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "STATS", 0, 500 "name of input stats file", argv[argnum]); 442 501 psArgumentRemove(argnum, &argc, argv); 443 502 } … … 589 648 strkGetMaskValues(sf); 590 649 650 // add the STREAK bit to the mask image pixels 591 651 setStreakBits(sf->inMask->image, sf->maskStreak); 592 652 } … … 721 781 sfiles->inMask->image->data.PS_TYPE_IMAGE_MASK_DATA[y][x]; 722 782 } 723 sfiles->outMask->image->data.PS_TYPE_IMAGE_MASK_DATA[y][x] = 724 sfiles->inMask->image->data.PS_TYPE_IMAGE_MASK_DATA[y][x] | newMaskValue; 783 sfiles->outMask->image->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= newMaskValue; 725 784 } 726 785 } 727 786 728 787 static void 729 exciseNon WarpedPixels(streakFiles *sfiles, psImageMaskType newMaskValue)788 exciseNonDiffedPixels(streakFiles *sfiles, psImageMaskType newMaskValue) 730 789 { 731 790 int cell_x0 = sfiles->astrom->cell_x0; … … 749 808 } 750 809 751 psU8 *pixels = sfiles-> warpedPixels->data.U8[yChip];810 psU8 *pixels = sfiles->diffedPixels->data.U8[yChip]; 752 811 753 812 if (xParity == 1) { … … 772 831 773 832 static bool 774 warpedPixel(streakFiles *sfiles, int x, int y)833 diffedPixel(streakFiles *sfiles, int x, int y) 775 834 { 776 835 PixelPos chipCoord; 777 836 778 837 if (!CHIP_LEVEL_INPUT(sfiles->stage)) { 779 // if we're here on a skycell image by definition this pixel was warped838 // if we're here on a skycell image by definition this pixel was diffed 780 839 return true; 781 840 } … … 790 849 cellToChipInt(&chipCoord.x, &chipCoord.y, sfiles->astrom, x, y); 791 850 792 if (chipCoord.x < 0 || chipCoord.x >= sfiles-> warpedPixels->numCols) {851 if (chipCoord.x < 0 || chipCoord.x >= sfiles->diffedPixels->numCols) { 793 852 return false; 794 853 } 795 if (chipCoord.y < 0 || chipCoord.y >= sfiles-> warpedPixels->numRows) {854 if (chipCoord.y < 0 || chipCoord.y >= sfiles->diffedPixels->numRows) { 796 855 return false; 797 856 } 798 857 799 return psImageGet(sfiles-> warpedPixels, chipCoord.x, chipCoord.y) ? true : false;858 return psImageGet(sfiles->diffedPixels, chipCoord.x, chipCoord.y) ? true : false; 800 859 } 801 860 -
trunk/magic/remove/src/streaksremove.h
r26408 r26438 64 64 sFile *inSources; 65 65 sFile *outSources; 66 psMetadata *stats; 67 FILE *statsFile; 66 68 psString class_id; 67 69 pmFPAfile *inAstrom; … … 71 73 pmChip *chip; // current chip 72 74 pmCell *cell; // current cell 73 psImage * warpedPixels;75 psImage *diffedPixels; 74 76 psVector *tiles; 75 77 double transparentStreaks; … … 88 90 extern void cellToChipInt(unsigned int *xChip, unsigned int *yChip, strkAstrom *astrom, int xCell, int yCell); 89 91 90 extern bool compute WarpedPixels(streakFiles *sf);92 extern bool computeDiffedPixels(streakFiles *sf); 91 93 extern void streaksExit(psString, int); 92 94 extern ippStage parseStage(psString);
Note:
See TracChangeset
for help on using the changeset viewer.
