IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 2143


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

Added overscan col/rows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/test/tst_pmSubtractBias.c

    r2138 r2143  
    33 *  @brief Contains the tests for pmSubtractBias.c:
    44 *
    5  * test00: This code will ...
     5 * test00: This code will subtract full bias frames from the input image.
     6 * test01: Multiple overscan regions, calculate a scalar statistic for
     7 *  each, then subtract from the input image.
     8 * test02: Calculate a column overscan vector and subtract it from each
     9 *  column in the input image.
     10 * test03: Calculate a row overscan vector and subtract it from each
     11 *  row in the input image.
     12 *
    613 *
    714 *  @author GLG, MHPCC
    815 *
    9  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-10-14 23:52:09 $
     16 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     17 *  @date $Date: 2004-10-15 01:14:59 $
    1118 *
    1219 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    1825static int test00(void);
    1926static int test01(void);
     27static int test02(void);
     28static int test03(void);
    2029testDescription tests[] = {
    21                               {test00, 000, "pmSubtractBias - Full Bias Frame", 0, false},
    22                               {test01, 000, "pmSubtractBias - Multiple Overscan Frames", 0, false},
     30                              {test00, 000, "pmSubtractBias", 0, false},
     31                              {test01, 000, "pmSubtractBias", 0, false},
     32                              {test02, 000, "pmSubtractBias", 0, false},
     33                              {test03, 000, "pmSubtractBias", 0, false},
    2334                              {NULL}
    2435                          };
     
    147158    return(testStatus);
    148159}
     160
     161int doSubtractFullOverscanColumns(int numCols, int numRows)
     162{
     163    int i;
     164    int j;
     165    float actual;
     166    float expect;
     167    int testStatus = 0;
     168    psImage *tmpImage1 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     169    psImage *tmpImage2 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     170    psImage *tmpImage3 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     171    psImage *tmpImage4 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     172    psReadout *myReadout = psReadoutAlloc(numCols, numRows, tmpImage1);
     173    psList *list;
     174    psStats *stat = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
     175
     176    for (i=0;i<numRows;i++) {
     177        for (j=0;j<numCols;j++) {
     178            myReadout->image->data.F32[i][j] = (float) (i + j);
     179            tmpImage2->data.F32[i][j] = 3.0;
     180            tmpImage3->data.F32[i][j] = 4.0;
     181            tmpImage4->data.F32[i][j] = 5.0;
     182        }
     183    }
     184    list = psListAlloc(tmpImage2);
     185    psListAdd(list, PS_LIST_HEAD, tmpImage3);
     186    psListAdd(list, PS_LIST_HEAD, tmpImage4);
     187
     188    printPositiveTestHeader(stdout, "pmSubtractBias", "Column Overscans");
     189
     190    myReadout = pmSubtractBias(myReadout, NULL, list, PM_OVERSCAN_COLUMNS, stat,
     191                               0, PM_FIT_NONE, NULL);
     192
     193    for (i=0;i<numRows;i++) {
     194        for (j=0;j<numCols;j++) {
     195            expect = ((float) (i + j)) - 5.0;
     196            actual = myReadout->image->data.F32[i][j];
     197            if (FLT_EPSILON < fabs(expect - actual)) {
     198                printf("ERROR: image[%d][%d] is %f, should be %f\n", i, j, actual, expect);
     199                testStatus = 1;
     200            }
     201        }
     202    }
     203
     204
     205    psFree(myReadout);
     206    psFree(tmpImage2);
     207    psFree(tmpImage3);
     208    psFree(tmpImage4);
     209    psFree(stat);
     210    psFree(list);
     211
     212    printFooter(stdout, "pmSubtractBias", "Column Overscans", true);
     213    return(testStatus);
     214}
     215
     216int test02( void )
     217{
     218    int testStatus = 0;
     219
     220    testStatus |= doSubtractFullOverscanColumns(1, 1);
     221    testStatus |= doSubtractFullOverscanColumns(1, NUM_ROWS);
     222    testStatus |= doSubtractFullOverscanColumns(NUM_COLS, 1);
     223    testStatus |= doSubtractFullOverscanColumns(NUM_COLS, NUM_ROWS);
     224
     225    return(testStatus);
     226}
     227
     228int doSubtractFullOverscanRows(int numCols, int numRows)
     229{
     230    int i;
     231    int j;
     232    float actual;
     233    float expect;
     234    int testStatus = 0;
     235    psImage *tmpImage1 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     236    psImage *tmpImage2 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     237    psImage *tmpImage3 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     238    psImage *tmpImage4 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     239    psReadout *myReadout = psReadoutAlloc(numCols, numRows, tmpImage1);
     240    psList *list;
     241    psStats *stat = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
     242
     243    for (i=0;i<numRows;i++) {
     244        for (j=0;j<numCols;j++) {
     245            myReadout->image->data.F32[i][j] = (float) (i + j);
     246            tmpImage2->data.F32[i][j] = 3.0;
     247            tmpImage3->data.F32[i][j] = 4.0;
     248            tmpImage4->data.F32[i][j] = 5.0;
     249        }
     250    }
     251    list = psListAlloc(tmpImage2);
     252    psListAdd(list, PS_LIST_HEAD, tmpImage3);
     253    psListAdd(list, PS_LIST_HEAD, tmpImage4);
     254
     255    printPositiveTestHeader(stdout, "pmSubtractBias", "Row Overscans");
     256
     257    myReadout = pmSubtractBias(myReadout, NULL, list, PM_OVERSCAN_ROWS, stat,
     258                               0, PM_FIT_NONE, NULL);
     259
     260    for (i=0;i<numRows;i++) {
     261        for (j=0;j<numCols;j++) {
     262            expect = ((float) (i + j)) - 5.0;
     263            actual = myReadout->image->data.F32[i][j];
     264            if (FLT_EPSILON < fabs(expect - actual)) {
     265                printf("ERROR: image[%d][%d] is %f, should be %f\n", i, j, actual, expect);
     266                testStatus = 1;
     267            }
     268        }
     269    }
     270
     271
     272    psFree(myReadout);
     273    psFree(tmpImage2);
     274    psFree(tmpImage3);
     275    psFree(tmpImage4);
     276    psFree(stat);
     277    psFree(list);
     278
     279    printFooter(stdout, "pmSubtractBias", "Row Overscans", true);
     280    return(testStatus);
     281}
     282
     283int test03( void )
     284{
     285    int testStatus = 0;
     286
     287    testStatus |= doSubtractFullOverscanRows(1, 1);
     288    testStatus |= doSubtractFullOverscanRows(1, NUM_ROWS);
     289    testStatus |= doSubtractFullOverscanRows(NUM_COLS, 1);
     290    testStatus |= doSubtractFullOverscanRows(NUM_COLS, NUM_ROWS);
     291
     292    return(testStatus);
     293}
Note: See TracChangeset for help on using the changeset viewer.