IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 4, 2005, 11:37:01 AM (21 years ago)
Author:
Paul Price
Message:

Updated to psLib rel5alpha1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/stac/src/stacRejection.c

    r2765 r3375  
    11#include <stdio.h>
     2#include <assert.h>
    23#include "pslib.h"
    34#include "stac.h"
     
    3435    // Get the median
    3536    psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEDIAN);
    36     (void)psVectorStats(stats, pixels, mask, 1);
     37    (void)psVectorStats(stats, pixels, NULL, mask, 1);
    3738    float median = stats->sampleMedian;
    3839    psFree(stats);
     
    5354
    5455    // Check inputs
    55     if (inputs->n != rejected->n) {
    56         psError("stac.rejection", "Number of input images (%d) and rejection masks (%d) does not match.\n",
    57                 inputs->n, rejected->n);
    58         return NULL;
    59     }
    60     if (inputs->n != regions->n) {
    61         psError("stac.rejection", "Number of input images (%d) and region masks (%d) does not match.\n",
    62                 inputs->n, regions->n);
    63         return NULL;
    64     }
    65     if (inputs->n != maps->n) {
    66         psError("stac.rejection", "Number of input images (%d) and transformation maps (%d) does "
    67                 "not match.\n", inputs->n, maps->n);
    68         return NULL;
    69     }
    70     if (inputs->n != inverseMaps->n) {
    71         psError("stac.rejection", "Number of input images (%d) and inverse transformation maps (%d) does "
    72                 "not match.\n", inputs->n, inverseMaps->n);
    73         return NULL;
    74     }
     56    assert(inputs->n == rejected->n);
     57    assert(inputs->n == regions->n);
     58    assert(inputs->n == maps->n);
     59    assert(inputs->n == inverseMaps->n);
     60
    7561    for (int i = 0; i < nImages; i++) {
    76         if ((((psImage*)(inputs->data[i]))->numRows != ((psImage*)(regions->data[i]))->numRows) ||
    77             (((psImage*)(inputs->data[i]))->numCols != ((psImage*)(regions->data[i]))->numCols)) {
    78             psError("stac.rejection",
    79                     "Sizes of input image (%dx%d) and region mask (%dx%d) for input %d do not match.\n",
    80                     ((psImage*)(inputs->data[i]))->numCols, ((psImage*)(inputs->data[i]))->numRows,
    81                     ((psImage*)(regions->data[i]))->numCols, ((psImage*)(regions->data[i]))->numRows, i);
    82             return NULL;
    83         }
     62        psImage *input = inputs->data[i];
     63        psImage *region = regions->data[i];
     64        assert(input->numRows == region->numRows && input->numCols == region->numCols);
    8465    }
    8566
     
    11495        sprintf(crfile,"%s.cr",config->inputs->data[i]);
    11596        if ((crs = fopen(crfile, "w")) == NULL) {
    116             psError("stac.rejection","Unable to open file for detailed output, %s\n");
     97            fprintf(stderr, "Unable to open file for detailed output, %s\n");
    11798            return NULL;
    11899        }
     
    198179#ifdef TESTING
    199180        // Write error image out to check
    200         char maskfile[MAXCHAR];         // Filename of mask image
    201         char rejmapfile[MAXCHAR];       // Filename of rejection image
    202         char gradfile[MAXCHAR];         // Filename of gradient image
    203         sprintf(maskfile,"%s.mask",config->inputs->data[i]);
    204         sprintf(rejmapfile,"%s.rejmap",config->inputs->data[i]);
    205         sprintf(gradfile,"%s.grad",config->inputs->data[i]);
    206         psImageWriteSection(mask,0,0,0,NULL,0,maskfile);
    207         psImageWriteSection(rejmap,0,0,0,NULL,0,rejmapfile);
    208         psImageWriteSection(grad,0,0,0,NULL,0,gradfile);
     181        char maskName[MAXCHAR];         // Filename of mask image
     182        char rejmapName[MAXCHAR];       // Filename of rejection image
     183        char gradName[MAXCHAR];         // Filename of gradient image
     184        sprintf(maskName,"%s.mask",config->inputs->data[i]);
     185        sprintf(rejmapName,"%s.rejmap",config->inputs->data[i]);
     186        sprintf(gradName,"%s.grad",config->inputs->data[i]);
     187
     188        psFits *maskFile = psFitsAlloc(maskName);
     189        psFits *rejmapFile = psFitsAlloc(rejmapName);
     190        psFits *gradFile = psFitsAlloc(gradName);
     191        if (!psFitsWriteImage(maskFile, NULL, mask, 0, NULL)) {
     192            psErrorStackPrint(stderr, "Unable to write image: %s\n", maskName);
     193        }
     194        psTrace("stac", 1, "Mask image written to %s\n", maskName);
     195        if (!psFitsWriteImage(rejmapFile, NULL, rejmap, 0, NULL)) {
     196            psErrorStackPrint(stderr, "Unable to write image: %s\n", rejmapName);
     197        }
     198        psTrace("stac", 1, "Rejection map written to %s\n", rejmapName);
     199        if (!psFitsWriteImage(gradFile, NULL, grad, 0, NULL)) {
     200            psErrorStackPrint(stderr, "Unable to write image: %s\n", gradName);
     201        }
     202        psTrace("stac", 1, "Gradient image written to %s\n", gradName);
     203        psFree(maskFile);
     204        psFree(rejmapFile);
     205        psFree(gradFile);
    209206        psFree(rejmap);
    210207        psFree(grad);
Note: See TracChangeset for help on using the changeset viewer.