Changeset 25903
- Timestamp:
- Oct 20, 2009, 5:47:50 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/pap/psModules/src/imcombine/pmSubtraction.c
r25898 r25903 29 29 #define PIXEL_LIST_BUFFER 100 // Number of entries to add to pixel list at a time 30 30 #define MIN_SAMPLE_STATS 7 // Minimum number to use sample statistics; otherwise use quartiles 31 //#define USE_SYS_ERR // Use systematic error image? 31 32 32 33 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// … … 36 37 // Generate the kernel to apply to the variance from the normal kernel 37 38 static psKernel *varianceKernel(psKernel *out, // Output kernel 38 psKernel *normalKernel // Normal kernel39 const psKernel *normalKernel // Normal kernel 39 40 ) 40 41 { … … 48 49 49 50 // Take the square of the normal kernel 50 double sum Normal = 0.0, sumVariance = 0.0; // Sum of the normal andvariance kernels51 double sumVariance = 0.0; // Sum of the variance kernels 51 52 for (int v = yMin; v <= yMax; v++) { 52 53 for (int u = xMin; u <= xMax; u++) { 53 float value = normalKernel->kernel[v][u]; // Value of interest 54 float value2 = PS_SQR(value); // Value squared 55 sumNormal += value; 56 sumVariance += value2; 57 out->kernel[v][u] = value2; 54 sumVariance += out->kernel[v][u] = PS_SQR(normalKernel->kernel[v][u]); 58 55 } 59 56 } … … 432 429 } 433 430 431 #ifdef USE_SYS_ERR 434 432 // Generate an image that can be used to track systematic errors 435 433 static psImage *subtractionSysErrImage(const psImage *image, // Image from which to make sys err image … … 453 451 return sys; 454 452 } 453 #endif 455 454 456 455 // Convolve a stamp using an ISIS kernel basis function … … 1190 1189 if (!out1->image) { 1191 1190 out1->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 1192 // XXX if (threaded) {1193 // XXX psMutexInit(out1->image);1194 // XXX }1195 1191 } 1196 1192 if (ro1->variance) { 1197 1193 if (!out1->variance) { 1198 1194 out1->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 1199 // XXX if (threaded) {1200 // XXX psMutexInit(out1->variance);1201 // XXX }1202 1195 } 1203 1196 psImageInit(out1->variance, 0.0); … … 1207 1200 if (!out2->image) { 1208 1201 out2->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 1209 // XXX if (threaded) {1210 // XXX psMutexInit(out2->image);1211 // XXX }1212 1202 } 1213 1203 if (ro2->variance) { 1214 1204 if (!out2->variance) { 1215 1205 out2->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 1216 // XXX if (threaded) {1217 // XXX psMutexInit(out2->variance);1218 // XXX }1219 1206 } 1220 1207 psImageInit(out2->variance, 0.0); … … 1223 1210 psImage *convMask = NULL; // Convolved mask image (common to inputs 1 and 2) 1224 1211 if (subMask) { 1225 // XXX if (threaded) {1226 // XXX psMutexInit(subMask);1227 // XXX }1228 1212 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1229 1213 if (!out1->mask) { … … 1249 1233 1250 1234 psImage *sys1 = NULL, *sys2 = NULL; // Systematic error images 1235 #ifdef USE_SYS_ERR 1251 1236 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1252 1237 sys1 = subtractionSysErrImage(ro1->image, sysError); 1253 // XXX if (threaded && sys1) {1254 // XXX psMutexInit(sys1);1255 // XXX }1256 1238 } 1257 1239 if (kernels->mode == PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1258 1240 sys2 = subtractionSysErrImage(ro2->image, sysError); 1259 // XXX if (threaded && sys2) { 1260 // XXX psMutexInit(sys2); 1261 // XXX } 1262 } 1241 } 1242 #endif 1263 1243 1264 1244 int size = kernels->size; // Half-size of kernel … … 1309 1289 psArrayAdd(args, 1, (pmReadout*)ro1); // Casting away const 1310 1290 psArrayAdd(args, 1, (pmReadout*)ro2); // Casting away const 1311 // Since adding to the array can impact the reference count, we need to lock1312 // XXX if (sys1) {1313 // XXX psMutexLock(sys1);1314 // XXX }1315 1291 psArrayAdd(args, 1, sys1); 1316 // XXX if (sys1) {1317 // XXX psMutexUnlock(sys1);1318 // XXX }1319 // XXX if (sys2) {1320 // XXX psMutexLock(sys2);1321 // XXX }1322 1292 psArrayAdd(args, 1, sys2); 1323 // XXX if (sys2) {1324 // XXX psMutexUnlock(sys2);1325 // XXX }1326 // XXX if (subMask) {1327 // XXX psMutexLock(subMask);1328 // XXX }1329 1293 psArrayAdd(args, 1, subMask); 1330 // XXX if (subMask) {1331 // XXX psMutexUnlock(subMask);1332 // XXX }1333 1294 PS_ARRAY_ADD_SCALAR(args, maskBad, PS_TYPE_IMAGE_MASK); 1334 1295 PS_ARRAY_ADD_SCALAR(args, maskPoor, PS_TYPE_IMAGE_MASK); … … 1369 1330 psFree(job); 1370 1331 } 1371 1372 // XXX if (subMask) {1373 // XXX psMutexDestroy(subMask);1374 // XXX }1375 // XXX if (sys1) {1376 // XXX psMutexDestroy(sys1);1377 // XXX }1378 // XXX if (sys2) {1379 // XXX psMutexDestroy(sys2);1380 // XXX }1381 1332 } 1382 1333 psImageConvolveSetThreads(oldThreads);
Note:
See TracChangeset
for help on using the changeset viewer.
