Changeset 10412
- Timestamp:
- Dec 1, 2006, 4:27:44 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/detrend/pmBias.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmBias.c
r10326 r10412 263 263 psFree(pixels); 264 264 double reduced = psStatsGetValue(stats, statistic); // Result of statistics 265 266 psString comment = NULL; // Comment to add 267 psStringAppend(&comment, "Overscan value: %f", reduced); 268 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, comment, ""); 269 psFree(comment); 270 265 271 (void)psBinaryOp(image, image, "-", psScalarAlloc((float)reduced, PS_TYPE_F32)); 266 272 } else { … … 272 278 psArray *pixels = psArrayAlloc(image->numRows); // Array of vectors containing pixels 273 279 for (int i = 0; i < pixels->n; i++) { 274 psVector *values = psVectorAlloc(0, PS_TYPE_F32); 275 pixels->data[i] = values; 280 pixels->data[i] = psVectorAlloc(0, PS_TYPE_F32); 276 281 } 277 282 … … 283 288 for (int i = PS_MAX(0,diff); i < PS_MIN(image->numRows, overscan->numRows + diff); i++) { 284 289 // i is row on overscan 285 // XXX Reimplement with memcpy286 290 psVector *values = pixels->data[i]; 287 291 int index = values->n; // Index in the vector 288 292 values = psVectorRealloc(values, values->n + overscan->numCols); 289 for (int j = 0; j < overscan->numCols; j++) {290 values->data.F32[index++] = overscan->data.F32[i][j];291 }292 293 values->n += overscan->numCols; 294 memcpy(&values->data.F32[index], overscan->data.F32[i], 295 overscan->numCols * PSELEMTYPE_SIZEOF(PS_TYPE_F32)); 296 index += overscan->numCols; 293 297 pixels->data[i] = values; // Update the pointer in case it's moved 294 298 } … … 300 304 psFree(pixels); 301 305 if (! reduced) { 306 psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to generate overscan vector.\n"); 302 307 return false; 303 308 } … … 326 331 for (int i = PS_MAX(0,diff); i < PS_MIN(image->numCols, overscan->numCols + diff); i++) { 327 332 // i is column on overscan 328 // XXX Reimplement with memcpy329 333 psVector *values = pixels->data[i]; 330 334 int index = values->n; // Index in the vector 331 335 values = psVectorRealloc(values, values->n + overscan->numRows); 332 336 for (int j = 0; j < overscan->numRows; j++) { 333 values->data.F32[index++] = overscan->data.F32[ i][j];337 values->data.F32[index++] = overscan->data.F32[j][i]; 334 338 } 335 339 values->n += overscan->numRows; … … 343 347 psFree(pixels); 344 348 if (! reduced) { 349 psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to generate overscan vector.\n"); 345 350 return false; 346 351 } … … 354 359 psFree(reduced); 355 360 } 361 362 switch (overscanOpts->fitType) { 363 case PM_FIT_POLY_ORD: 364 case PM_FIT_POLY_CHEBY: { 365 psString comment = NULL; // Comment to add 366 psStringAppend(&comment, "Overscan fit: "); 367 psPolynomial1D *poly = overscanOpts->poly; // The polynomial 368 for (int i = 0; i < poly->nX; i++) { 369 psStringAppend(&comment, "%.1f ", poly->coeff[i]); 370 } 371 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, comment, ""); 372 psFree(comment); 373 break; 374 } 375 case PM_FIT_SPLINE: { 376 psSpline1D *spline = overscanOpts->spline; // The spline 377 for (int i = 0; i < spline->n; i++) { 378 psStringAppend(&comment, "Overscan fit %d: ", i); 379 psPolynomial1D *poly = spline->spline[i]; // i-th polynomial 380 for (int j = 0; j < poly->nX; j++) { 381 psStringAppend(&comment, "%.1f ", poly->coeff[i]); 382 } 383 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, 384 comment, ""); 385 psFree(comment); 386 } 387 break; 388 } 389 case PM_FIT_NONE: 390 default: 391 psAbort(__func__, "Should never get here!!!\n"); 392 } 393 394 356 395 } 357 396 psFree(stats); … … 394 433 psString timeString = psTimeToISO(time); // String with time 395 434 psFree(time); 396 psStringPrepend(&timeString, " Biasprocessing completed at ");435 psStringPrepend(&timeString, "Overscan/bias/dark processing completed at "); 397 436 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, 398 437 timeString, "");
Note:
See TracChangeset
for help on using the changeset viewer.
