Changeset 2141
- Timestamp:
- Oct 14, 2004, 3:11:16 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/pmSubtractBias.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/pmSubtractBias.c
r2133 r2141 6 6 * @author George Gusciora, MHPCC 7 7 * 8 * @version $Revision: 1.1 3$ $Name: not supported by cvs2svn $9 * @date $Date: 2004-10-1 4 22:54:14$8 * @version $Revision: 1.14 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2004-10-15 01:11:16 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 45 45 46 46 // XXX: Verify that this is the correct way to use offsets. 47 // XXX: Instead of performing an if-statement to determine if the mask48 // is non-zero, we instead always or the bias mask with the image49 // mask. Might want to verify this is faster.50 47 for (i=0;i<(in->image)->numRows;i++) { 51 48 for (j=0;j<(in->image)->numCols;j++) { … … 156 153 pmFit fit) 157 154 { 155 printf("ScaleOverscanVector(%d)\n", n); 158 156 if (NULL == overscanVector) { 159 157 return(overscanVector); … … 191 189 } 192 190 } else { 193 // XXX: psErrorMsg()191 psError(__func__, "unknown fit type\n"); 194 192 } 195 193 … … 251 249 } 252 250 251 // 252 // We subtract each overscan region from the image data. 253 // 253 254 if (overScanAxis == PM_OVERSCAN_ALL) { 254 255 tmpOverscan = (psListElem *) overscans->head; … … 276 277 277 278 if (overScanAxis == PM_OVERSCAN_ROWS) { 279 // We create a row vector and subtract this vector from image. 278 280 overscanVector = psVectorAlloc(myOverscanImage->numCols, PS_TYPE_F32); 279 281 for (i=0;i<overscanVector->n;i++) { 280 282 overscanVector->data.F32[i] = 0.0; 281 283 } 282 tmpRow = psVectorAlloc((in->image)->num Cols, PS_TYPE_F32);284 tmpRow = psVectorAlloc((in->image)->numRows, PS_TYPE_F32); 283 285 284 286 tmpOverscan = (psListElem *) overscans->head; 285 287 while (tmpOverscan) { 286 myOverscanImage = (psImage *) tmpOverscan->data;287 288 for (i=0;i<myOverscanImage->numCols;i++) { 288 289 for (j=0;j<myOverscanImage->numRows;j++) { 289 tmpRow->data.F32[j] = myOverscanImage->data.F32[ i][j];290 tmpRow->data.F32[j] = myOverscanImage->data.F32[j][i]; 290 291 } 291 292 stat = psVectorStats(stat, tmpRow, NULL, 0); 292 293 p_psGetStatValue(stat, &statValue); 293 294 overscanVector->data.F32[i] = statValue; 294 295 295 } 296 296 // tmpOverscan = tmpOverscan->next; … … 298 298 } 299 299 psFree(tmpRow); 300 ScaleOverscanVector(overscanVector, (in->image)->numCols, fitSpec, fit); 300 if ((fit == PM_FIT_POLYNOMIAL) || 301 (fit == PM_FIT_SPLINE)) { 302 psVector *newVec = ScaleOverscanVector(overscanVector, (in->image)->numCols, fitSpec, fit); 303 psFree(overscanVector); 304 overscanVector = newVec; 305 } 301 306 } 302 307 if (overScanAxis == PM_OVERSCAN_COLUMNS) { 308 // We create a column vector and subtract this vector from image. 303 309 overscanVector = psVectorAlloc(myOverscanImage->numRows, PS_TYPE_F32); 304 310 for (i=0;i<overscanVector->n;i++) { 305 311 overscanVector->data.F32[i] = 0.0; 306 312 } 307 tmpCol = psVectorAlloc((in->image)->num Rows, PS_TYPE_F32);313 tmpCol = psVectorAlloc((in->image)->numCols, PS_TYPE_F32); 308 314 309 315 tmpOverscan = (psListElem *) overscans->head; … … 311 317 for (i=0;i<myOverscanImage->numRows;i++) { 312 318 for (j=0;j<myOverscanImage->numCols;j++) { 313 tmp Row->data.F32[j] = myOverscanImage->data.F32[i][j];319 tmpCol->data.F32[j] = myOverscanImage->data.F32[i][j]; 314 320 } 315 stat = psVectorStats(stat, tmp Row, NULL, 0);321 stat = psVectorStats(stat, tmpCol, NULL, 0); 316 322 p_psGetStatValue(stat, &statValue); 317 323 overscanVector->data.F32[i] = statValue; … … 321 327 } 322 328 psFree(tmpCol); 323 ScaleOverscanVector(overscanVector, (in->image)->numRows, fitSpec, fit); 329 if ((fit == PM_FIT_POLYNOMIAL) || 330 (fit == PM_FIT_SPLINE)) { 331 psVector *newVec = ScaleOverscanVector(overscanVector, (in->image)->numRows, fitSpec, fit); 332 psFree(overscanVector); 333 overscanVector = newVec; 334 } 324 335 } 325 336 … … 383 394 for (i=0;i<(in->image)->numCols;i++) { 384 395 for (j=0;j<(in->image)->numRows;j++) { 385 (in->image)->data.F32[ i][j]-= overscanVector->data.F32[j/nBin];396 (in->image)->data.F32[j][i]-= overscanVector->data.F32[i/nBin]; 386 397 } 387 398 } … … 394 405 for (i=0;i<(in->image)->numRows;i++) { 395 406 for (j=0;j<(in->image)->numCols;j++) { 396 (in->image)->data.F32[i][j]-= overscanVector->data.F32[ j/nBin];407 (in->image)->data.F32[i][j]-= overscanVector->data.F32[i/nBin]; 397 408 } 398 409 }
Note:
See TracChangeset
for help on using the changeset viewer.
