IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 11, 2008, 6:47:44 PM (18 years ago)
Author:
Paul Price
Message:

Need to extract the subtraction kernels and regions before freeing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/pap_branch_080207/ppStack/src/ppStackReadout.c

    r16404 r16407  
    1111
    1212
    13 #define ARRAY_BUFFER 16                 // Number to add to array at a time
    1413#define WCS_TOLERANCE 0.001             // Tolerance for WCS
    1514
     
    1716//#define INSPECTION_FILES                // Write inspection mask?
    1817
    19 bool ppStackReadout(const pmConfig *config, pmReadout *outRO, const psArray *readouts)
     18bool ppStackReadout(const pmConfig *config, pmReadout *outRO, const psArray *readouts,
     19                    const psArray *regions, const psArray *kernels)
    2020{
    2121    assert(config);
    2222    assert(outRO);
    2323    assert(readouts);
     24    assert(regions);
     25    assert(kernels);
     26    assert(readouts->n == regions->n);
     27    assert(regions->n == kernels->n);
    2428
    2529    // Get the recipe values
     
    6367        totExposure += exposure;        // Total exposure time
    6468
     69#if 0
    6570        if (i == 0) {
    6671            // Copy astrometry over
     
    8489            }
    8590        }
     91#endif
    8692
    8793        // Ensure there is a mask, or pmStackCombine will complain
     
    128134#endif
    129135
     136    // Reject pixels
    130137    for (int i = 0; i < num; i++) {
    131138        pmStackData *data = stack->data[i]; // Data for this image
    132         pmReadout *readout = data->readout; // Readout for this image
    133 
    134         // Extract the regions and solutions used in the image matching
    135         psArray *regions = psArrayAllocEmpty(ARRAY_BUFFER); // Array of regions
    136         {
    137             psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD,
    138                                                                PM_SUBTRACTION_ANALYSIS_REGION); // Iterator
    139             psMetadataItem *item = NULL;// Item from iteration
    140             while ((item = psMetadataGetAndIncrement(iter))) {
    141                 assert(item->type == PS_DATA_REGION);
    142                 regions = psArrayAdd(regions, ARRAY_BUFFER, item->data.V);
    143             }
    144             psFree(iter);
    145         }
    146         psArray *kernels = psArrayAllocEmpty(ARRAY_BUFFER); // Array of kernels
    147         {
    148             psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD,
    149                                                                PM_SUBTRACTION_ANALYSIS_KERNEL); // Iterator
    150             psMetadataItem *item = NULL;// Item from iteration
    151             while ((item = psMetadataGetAndIncrement(iter))) {
    152                 assert(item->type == PS_DATA_VECTOR);
    153                 kernels = psArrayAdd(kernels, ARRAY_BUFFER, item->data.V);
    154             }
    155             psFree(iter);
    156         }
    157         assert(regions->n == kernels->n);
    158 
    159         psPixels *reject = pmStackReject(data->pixels, threshold, regions, kernels); // Pixels to reject
     139        psPixels *reject = pmStackReject(data->pixels, threshold, regions->data[i],
     140                                         kernels->data[i]); // Pixels to reject
    160141        psFree(data->pixels);
    161142        data->pixels = reject;
    162 
    163         psFree(kernels);
    164         psFree(regions);
    165143    }
    166144
Note: See TracChangeset for help on using the changeset viewer.