Changeset 19432 for trunk/psModules/src/detrend/pmFlatField.c
- Timestamp:
- Sep 8, 2008, 6:10:14 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/detrend/pmFlatField.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmFlatField.c
r19299 r19432 17 17 PS_ASSERT_THREAD_JOB_NON_NULL(job, false); 18 18 19 psImage *inImage = job->args->data[0]; 20 psImage *inMask = job->args->data[1]; 21 psImage *flatImage = job->args->data[2];22 psImage *flatMask = job->args->data[3];19 psImage *inImage = job->args->data[0]; // Input image 20 psImage *inMask = job->args->data[1]; // Input mask 21 const psImage *flatImage = job->args->data[2]; // Flat-field image 22 const psImage *flatMask = job->args->data[3]; // Flat-field mask 23 23 24 24 psMaskType badFlat = PS_SCALAR_VALUE(job->args->data[4],U8); … … 27 27 int rowStart = PS_SCALAR_VALUE(job->args->data[7],S32); 28 28 int rowStop = PS_SCALAR_VALUE(job->args->data[8],S32); 29 bool status = pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop);30 return status;29 return pmFlatFieldScan(inImage, inMask, flatImage, flatMask, badFlat, 30 xOffset, yOffset, rowStart, rowStop); 31 31 } 32 32 … … 50 50 break; 51 51 52 bool pmFlatFieldScan (psImage *inImage, psImage *inMask, psImage *flatImage, psImage *flatMask, psMaskType badFlat, int xOffset, int yOffset, int rowStart, int rowStop) { 53 52 bool pmFlatFieldScan(psImage *inImage, psImage *inMask, const psImage *flatImage, const psImage *flatMask, 53 psMaskType badFlat, int xOffset, int yOffset, int rowStart, int rowStop) 54 { 54 55 switch (inImage->type.type) { 55 56 FLAT_DIVISION_CASE(U8, 0); … … 138 139 139 140 for (int rowStart = 0; rowStart < inImage->numRows; rowStart += scanRows) { 140 int rowStop = PS_MIN (rowStart + scanRows, inImage->numRows);141 int rowStop = PS_MIN(rowStart + scanRows, inImage->numRows); 141 142 142 143 if (threaded) { 143 144 // allocate a job, construct the arguments for this job 144 psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_FLAT");145 psArrayAdd (job->args, 1, inImage);146 psArrayAdd (job->args, 1, inMask);147 psArrayAdd (job->args, 1, flatImage);148 psArrayAdd (job->args, 1, flatMask);149 PS_ARRAY_ADD_SCALAR (job->args, badFlat, PS_TYPE_U8);150 PS_ARRAY_ADD_SCALAR (job->args, xOffset, PS_TYPE_S32);151 PS_ARRAY_ADD_SCALAR (job->args, yOffset, PS_TYPE_S32);152 PS_ARRAY_ADD_SCALAR (job->args, rowStart, PS_TYPE_S32);153 PS_ARRAY_ADD_SCALAR (job->args, rowStop, PS_TYPE_S32);145 psThreadJob *job = psThreadJobAlloc("PSMODULES_DETREND_FLAT"); 146 psArrayAdd(job->args, 1, inImage); 147 psArrayAdd(job->args, 1, inMask); 148 psArrayAdd(job->args, 1, flatImage); 149 psArrayAdd(job->args, 1, flatMask); 150 PS_ARRAY_ADD_SCALAR(job->args, badFlat, PS_TYPE_U8); 151 PS_ARRAY_ADD_SCALAR(job->args, xOffset, PS_TYPE_S32); 152 PS_ARRAY_ADD_SCALAR(job->args, yOffset, PS_TYPE_S32); 153 PS_ARRAY_ADD_SCALAR(job->args, rowStart, PS_TYPE_S32); 154 PS_ARRAY_ADD_SCALAR(job->args, rowStop, PS_TYPE_S32); 154 155 155 // ppImageDetrendReadout(config, options, view) 156 if (!psThreadJobAddPending (job)) { 156 if (!psThreadJobAddPending(job)) { 157 157 psFree(job); 158 158 return false; 159 159 } 160 160 psFree(job); 161 } else { 162 pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop); 161 } else if (!pmFlatFieldScan(inImage, inMask, flatImage, flatMask, badFlat, 162 xOffset, yOffset, rowStart, rowStop)) { 163 psError(PS_ERR_UNKNOWN, false, "Unable to flat-field image."); 164 return false; 163 165 } 164 166 } … … 166 168 if (threaded) { 167 169 // wait here for the threaded jobs to finish 168 if (!psThreadPoolWait( false)) {169 psError(PS_ERR_UNKNOWN, false, "Unable to interpolateimage.");170 if (!psThreadPoolWait(true)) { 171 psError(PS_ERR_UNKNOWN, false, "Unable to flat-field image."); 170 172 return false; 171 }172 fprintf (stderr, "success for threaded jobs\n");173 174 // free done jobs175 psThreadJob *job = NULL;176 while ((job = psThreadJobGetDone()) != NULL) {177 psFree (job);178 173 } 179 174 } … … 187 182 psFree(timeString); 188 183 189 190 184 return true; 191 185 }
Note:
See TracChangeset
for help on using the changeset viewer.
