IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 15597


Ignore:
Timestamp:
Nov 12, 2007, 6:08:48 PM (18 years ago)
Author:
Paul Price
Message:

Bit better support for mask operations.

Location:
trunk/ppArith/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppArith/src/ppArithArguments.c

    r15574 r15597  
    7272
    7373    bool isMask = psMetadataLookupBool(NULL, arguments, "-mask"); // Are we dealing with masks?
     74    psMetadataAddBool(config->arguments, PS_LIST_TAIL, "MASK", 0, "Produce a mask image?", true);
    7475    const char *inFilerule = isMask ? "PPARITH.INPUT.MASK" : "PPARITH.INPUT.IMAGE"; // Input file rule
    7576    const char *outFilerule = isMask ? "PPARITH.OUTPUT.MASK" : "PPARITH.OUTPUT.IMAGE"; // Output file rule
  • trunk/ppArith/src/ppArithReadout.c

    r15571 r15597  
    1717    PS_ASSERT_PTR_NON_NULL(view, false);
    1818
    19     psImage *inImage1 = input1->image;  // Input image 1
    20     psImage *outImage = output->image;  // Output image
    21     if (!inImage1) {
     19    bool mdok;                          // Status of MD lookup
     20    bool isMask = psMetadataLookupBool(&mdok, config->arguments, "MASK");
     21
     22    psImage *inImage1;  // Input image 1
     23    psImage *outImage;  // Output image
     24    if (isMask) {
    2225        inImage1 = input1->mask;
    2326        outImage = output->mask;
    2427        if (!outImage) {
    25             output->image = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_MASK);
     28            output->mask = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_MASK);
    2629        }
    27     } else if (!outImage) {
    28         output->image = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_F32);
     30        if (!output->image) {
     31            // Generate an image to serve as a backdrop for the mask when doing statistics
     32            output->image = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_F32);
     33            psImageInit(output->image, 1.0);
     34        }
     35    } else {
     36        inImage1 = input1->image;
     37        outImage = output->image;
     38        if (!outImage) {
     39            output->mask = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_MASK);
     40        }
    2941    }
    3042    PS_ASSERT_IMAGE_NON_NULL(inImage1, false);
     
    3244    psImage *inImage2 = NULL;           // Input image 2
    3345    if (input2) {
    34         inImage2 = input2->image;
    35         if (!inImage2) {
    36             inImage2 = input2->mask;
    37         }
     46        inImage2 = isMask ? input2->mask : input2->image;
    3847        PS_ASSERT_IMAGE_NON_NULL(inImage2, false);
    3948        PS_ASSERT_IMAGES_SIZE_EQUAL(inImage2, inImage1, false);
Note: See TracChangeset for help on using the changeset viewer.