IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 26, 2009, 2:38:40 PM (17 years ago)
Author:
Paul Price
Message:

Magic bit was clobbering all other mask bits. Removed use of psImageSet and psImageGet after ensuring input is of the correct type. Turned off fuzzing when quantising, since it's already been done, and we're just propagating the values.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/magic/remove/src/streaksio.c

    r25082 r25209  
    654654            streaksExit("", PS_EXIT_DATA_ERROR);
    655655        }
     656
     657        // Ensure input is of the expected type
     658        psDataType expected = isMask ? PS_TYPE_IMAGE_MASK : PS_TYPE_F32; // Expected type for image
     659        for (int i = 0; i < in->imagecube->n; i++) {
     660            psImage *image = in->imagecube->data[i]; // Image of interest
     661            if (image->type.type != expected) {
     662                psImage *temp = psImageCopy(NULL, image, expected);
     663                psFree(image);
     664                in->imagecube->data[i] = temp;
     665            }
     666        }
    656667    }
    657668    setDataExtent(stage, in, (stage == IPP_STAGE_RAW) && !isMask);
     
    670681    sfile->fits->options = psFitsOptionsAlloc();
    671682    sfile->fits->options->scaling = PS_FITS_SCALE_MANUAL;
     683    sfile->fits->options->fuzz = false;
    672684    sfile->fits->options->bitpix = bitpix;
    673685    sfile->fits->options->bscale = bscale;
     
    11141126                // these gets are not necessary, we could just set the pixels to nan
    11151127                // but I want to get the counts
    1116                 double imageVal  = psImageGet(image, x, y);
     1128                double imageVal  = image->data.F32[y][x];
    11171129                psU32 maskVal;
    11181130                if (sfiles->stage == IPP_STAGE_RAW) {
    11191131                    unsigned int xChip, yChip;
    11201132                    cellToChipInt(&xChip, &yChip, sfiles->astrom, x, y);
    1121                     maskVal = psImageGet(mask, xChip, yChip);
     1133                    maskVal = mask->data.PS_TYPE_IMAGE_MASK_DATA[yChip][xChip];
    11221134                } else {
    1123                     maskVal = psImageGet(mask, x, y);
     1135                    maskVal = mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x];
    11241136                }
    11251137                if (maskVal & maskMask) {
     
    11271139                    if (!isExciseValue(imageVal, sfiles->inImage->exciseValue)) {
    11281140                        ++nandPixels;
    1129                         psImageSet(image, x, y, exciseValue);
     1141                        image->data.F32[y][x] = exciseValue;
    11301142                    }
    11311143                    if (weight) {
    1132                         double weightVal = weight ? psImageGet(weight, x, y) : 0;
     1144                        double weightVal = weight ? weight->data.F32[y][x] : 0;
    11331145                        if (!isnan(weightVal)) {
    11341146                            ++nandWeights;
    1135                             psImageSet(weight, x, y, NAN);
     1147                            weight->data.F32[y][x] = NAN;
    11361148                        }
    11371149                    }
Note: See TracChangeset for help on using the changeset viewer.