IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 7, 2008, 5:03:19 PM (18 years ago)
Author:
Paul Price
Message:

More flexibility for inputs to be NULL.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/imcombine/pmSubtraction.c

    r17370 r17383  
    44 *  @author GLG, MHPCC
    55 *
    6  *  @version $Revision: 1.85 $ $Name: not supported by cvs2svn $
    7  *  @date $Date: 2008-04-07 22:46:39 $
     6 *  @version $Revision: 1.86 $ $Name: not supported by cvs2svn $
     7 *  @date $Date: 2008-04-08 03:03:19 $
    88 *
    99 *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
     
    637637                           const pmSubtractionKernels *kernels, bool doBG, bool useFFT)
    638638{
    639     if (kernels->mode != PM_SUBTRACTION_MODE_2) {
     639    int numCols = 0, numRows = 0;       // Image dimensions
     640    int x0 = 0, y0 = 0;                 // Image offset
     641    if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) {
    640642        PM_ASSERT_READOUT_NON_NULL(out1, false);
    641     }
    642     if (kernels->mode != PM_SUBTRACTION_MODE_1) {
     643        PM_ASSERT_READOUT_NON_NULL(ro1, false);
     644        PM_ASSERT_READOUT_IMAGE(ro1, false);
     645        numCols = ro1->image->numCols;
     646        numRows = ro1->image->numRows;
     647        x0 = ro1->col0;
     648        y0 = ro1->row0;
     649    }
     650    if (kernels->mode != PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) {
    643651        PM_ASSERT_READOUT_NON_NULL(out2, false);
    644     }
    645     PM_ASSERT_READOUT_NON_NULL(ro1, false);
    646     PM_ASSERT_READOUT_NON_NULL(ro2, false);
    647     PM_ASSERT_READOUT_IMAGE(ro1, false);
    648     PM_ASSERT_READOUT_IMAGE(ro2, false);
    649     PS_ASSERT_IMAGES_SIZE_EQUAL(ro1->image, ro2->image, false);
     652        PM_ASSERT_READOUT_NON_NULL(ro2, false);
     653        PM_ASSERT_READOUT_IMAGE(ro2, false);
     654        if (numCols != 0 && numRows != 0) {
     655            numCols = ro1->image->numCols;
     656            numRows = ro1->image->numRows;
     657            x0 = ro1->col0;
     658            y0 = ro1->row0;
     659        }
     660    }
     661    if (kernels->mode == PM_SUBTRACTION_MODE_DUAL) {
     662        PS_ASSERT_IMAGES_SIZE_EQUAL(ro1->image, ro2->image, false);
     663    }
    650664    PM_ASSERT_SUBTRACTION_KERNELS_NON_NULL(kernels, false);
    651665    PM_ASSERT_SUBTRACTION_KERNELS_SOLUTION(kernels, false);
     
    653667        PS_ASSERT_IMAGE_NON_NULL(subMask, false);
    654668        PS_ASSERT_IMAGE_TYPE(subMask, PS_TYPE_MASK, false);
    655         PS_ASSERT_IMAGES_SIZE_EQUAL(subMask, ro1->image, false);
     669        PS_ASSERT_IMAGE_SIZE(subMask, numCols, numRows, false);
    656670    }
    657671    if (region && psRegionIsNaN(*region)) {
     
    663677
    664678    // Inputs
    665     psImage *image1 = ro1->image, *weight1 = ro1->weight; // Image and weight map from input 1
    666     psImage *image2 = ro2->image, *weight2 = ro2->weight; // Image and weight map from input 2
    667     int numCols = image1->numCols, numRows = image1->numRows; // Image dimensions
    668     int x0 = image1->col0, y0 = image1->row0; // Image offset
     679    psImage *image1 = NULL, *weight1 = NULL; // Image and weight map from input 1
     680    if (ro1) {
     681        image1 = ro1->image;
     682        weight1 = ro1->weight;
     683    }
     684    psImage *image2 = NULL, *weight2 = NULL; // Image and weight map from input 2
     685    if (ro2) {
     686        image2 = ro2->image;
     687        weight2 = ro2->weight;
     688    }
    669689
    670690    // Outputs
Note: See TracChangeset for help on using the changeset viewer.