IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 2783 for trunk/stac/src/stac.c


Ignore:
Timestamp:
Dec 21, 2004, 4:07:04 PM (22 years ago)
Author:
Paul Price
Message:

Running fast now. Only optimisation tweaks to be made now.

File:
1 edited

Legend:

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

    r2764 r2783  
    3636    psTraceSetLevel("stac.rejection",10);
    3737    psTraceSetLevel("stac.time",10);
    38    
     38    psTraceSetLevel("stac.area",10);
    3939
    4040    // Set logging level
     
    5050    psArray *maps = stacReadMaps(config);
    5151
     52    psTrace("stac.time", 1, "I/O completed at %f seconds\n", getTime() - startTime);
     53
    5254    // Invert maps
    5355    psArray *inverseMaps = stacInvertMaps(maps);
     
    5759
    5860    // Transform inputs and errors
     61    psArray *transformed = NULL;
    5962    psArray *transformedErrors = NULL;
    60     psArray *transformed = stacTransform(inputs, inverseMaps, errors, &transformedErrors, NULL, config);
     63    (void)stacTransform(&transformed, &transformedErrors, inputs, inverseMaps, errors, NULL, NULL, config);
    6164
    6265    psTrace("stac.time",1,"Transformation completed at %f seconds\n", getTime() - startTime);
     
    6467    // Combine with rejection
    6568    psArray *rejected = NULL;
    66     psImage *combined = stacCombine(transformed, transformedErrors, 2,  &rejected, config);
     69    psImage *combined = NULL;
     70    (void)stacCombine(&combined, &rejected, transformed, transformedErrors, config->nReject, NULL, config);
     71
     72    psTrace("stac.time",1,"First combination completed at %f seconds\n", getTime() - startTime);
    6773
    6874#ifdef TESTING
     
    7581    psArray *regions = psArrayAlloc(inputs->n); // Array of images denoting regions of interest
    7682    for (int i = 0; i < inputs->n; i++) {
    77         fprintf(stderr, "Finding area of interest for image %d\n", i);
    7883        regions->data[i] = stacAreaOfInterest(rejected->data[i], inverseMaps->data[i],
    7984                                              ((psImage*)(inputs->data[i]))->numCols,
     
    8994    psArray *rejectedSource = stacRejection(inputs, rejected, regions, maps, inverseMaps, config);
    9095
    91     // Redo transformation with the mask
    92     psFree(transformed);
    93     psFree(transformedErrors);
    94     psArray *transformedErrorsNew = NULL;
    95     psArray *transformedNew = stacTransform(inputs, inverseMaps, errors, &transformedErrorsNew,
    96                                             rejectedSource, config);
     96    // Get regions of interest in the output frame
     97    psImage *combineRegion = psImageAlloc(config->outnx, config->outny, PS_TYPE_U8);
     98    for (int y = 0; y < config->outny; y++) {
     99        for (int x = 0; x < config->outnx; x++) {
     100            combineRegion->data.U8[y][x] = 0;
     101        }
     102    }
     103    for (int i = 0; i < inputs->n; i++) {
     104        psImage *region = stacAreaOfInterest(rejectedSource->data[i], maps->data[i], config->outnx,
     105                                             config->outny);
     106        psBinaryOp(combineRegion, combineRegion, "+", region);
     107        psFree(region);
     108    }
     109
     110    // Redo transformation with the masks
     111    (void)stacTransform(&transformed, &transformedErrors, inputs, inverseMaps, errors, rejectedSource,
     112                        combineRegion, config);
    97113
    98114    // Combine the newly-transformed CR-free images, no rejection
    99     psFree(combined);
    100115    psFree(rejected);
    101116    rejected = NULL;
    102     combined = stacCombine(transformedNew, transformedErrorsNew, 0,  &rejected, config);
     117    (void)stacCombine(&combined, &rejected, transformed, transformedErrors, 0, combineRegion, config);
    103118
    104119    // Write output image
     
    107122    // Free everything I've used
    108123    stacConfigFree(config);
     124    psFree(combineRegion);
    109125    psFree(regions);
    110126    psFree(inputs);
     
    113129    psFree(errors);
    114130    psFree(transformedErrors);
    115     psFree(transformedNew);
     131    psFree(transformed);
    116132    psFree(rejectedSource);
    117133    psFree(combined);
    118134
    119     psTrace("stac.time",1,"Combination completed at %f seconds\n", getTime() - startTime);
     135    psTrace("stac.time",1,"Final combination completed at %f seconds\n", getTime() - startTime);
    120136
    121137   // Check memory for leaks, corruption
Note: See TracChangeset for help on using the changeset viewer.