IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 2141


Ignore:
Timestamp:
Oct 14, 2004, 3:11:16 PM (22 years ago)
Author:
gusciora
Message:

Fixed overscan rows and columns.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/pmSubtractBias.c

    r2133 r2141  
    66 *  @author George Gusciora, MHPCC
    77 *
    8  *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2004-10-14 22:54:14 $
     8 *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2004-10-15 01:11:16 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4545
    4646    // XXX: Verify that this is the correct way to use offsets.
    47     // XXX: Instead of performing an if-statement to determine if the mask
    48     //      is non-zero, we instead always or the bias mask with the image
    49     //      mask.  Might want to verify this is faster.
    5047    for (i=0;i<(in->image)->numRows;i++) {
    5148        for (j=0;j<(in->image)->numCols;j++) {
     
    156153                              pmFit fit)
    157154{
     155    printf("ScaleOverscanVector(%d)\n", n);
    158156    if (NULL == overscanVector) {
    159157        return(overscanVector);
     
    191189        }
    192190    } else {
    193         // XXX: psErrorMsg()
     191        psError(__func__, "unknown fit type\n");
    194192    }
    195193
     
    251249    }
    252250
     251    //
     252    // We subtract each overscan region from the image data.
     253    //
    253254    if (overScanAxis == PM_OVERSCAN_ALL) {
    254255        tmpOverscan = (psListElem *) overscans->head;
     
    276277
    277278        if (overScanAxis == PM_OVERSCAN_ROWS) {
     279            // We create a row vector and subtract this vector from image.
    278280            overscanVector = psVectorAlloc(myOverscanImage->numCols, PS_TYPE_F32);
    279281            for (i=0;i<overscanVector->n;i++) {
    280282                overscanVector->data.F32[i] = 0.0;
    281283            }
    282             tmpRow = psVectorAlloc((in->image)->numCols, PS_TYPE_F32);
     284            tmpRow = psVectorAlloc((in->image)->numRows, PS_TYPE_F32);
    283285
    284286            tmpOverscan = (psListElem *) overscans->head;
    285287            while (tmpOverscan) {
    286                 myOverscanImage = (psImage *) tmpOverscan->data;
    287288                for (i=0;i<myOverscanImage->numCols;i++) {
    288289                    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];
    290291                    }
    291292                    stat = psVectorStats(stat, tmpRow, NULL, 0);
    292293                    p_psGetStatValue(stat, &statValue);
    293294                    overscanVector->data.F32[i] = statValue;
    294 
    295295                }
    296296                // tmpOverscan = tmpOverscan->next;
     
    298298            }
    299299            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            }
    301306        }
    302307        if (overScanAxis == PM_OVERSCAN_COLUMNS) {
     308            // We create a column vector and subtract this vector from image.
    303309            overscanVector = psVectorAlloc(myOverscanImage->numRows, PS_TYPE_F32);
    304310            for (i=0;i<overscanVector->n;i++) {
    305311                overscanVector->data.F32[i] = 0.0;
    306312            }
    307             tmpCol = psVectorAlloc((in->image)->numRows, PS_TYPE_F32);
     313            tmpCol = psVectorAlloc((in->image)->numCols, PS_TYPE_F32);
    308314
    309315            tmpOverscan = (psListElem *) overscans->head;
     
    311317                for (i=0;i<myOverscanImage->numRows;i++) {
    312318                    for (j=0;j<myOverscanImage->numCols;j++) {
    313                         tmpRow->data.F32[j] = myOverscanImage->data.F32[i][j];
     319                        tmpCol->data.F32[j] = myOverscanImage->data.F32[i][j];
    314320                    }
    315                     stat = psVectorStats(stat, tmpRow, NULL, 0);
     321                    stat = psVectorStats(stat, tmpCol, NULL, 0);
    316322                    p_psGetStatValue(stat, &statValue);
    317323                    overscanVector->data.F32[i] = statValue;
     
    321327            }
    322328            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            }
    324335        }
    325336
     
    383394            for (i=0;i<(in->image)->numCols;i++) {
    384395                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];
    386397                }
    387398            }
     
    394405            for (i=0;i<(in->image)->numRows;i++) {
    395406                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];
    397408                }
    398409            }
Note: See TracChangeset for help on using the changeset viewer.