IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 8, 2004, 3:12:31 PM (22 years ago)
Author:
Paul Price
Message:

More robust gradient measurement

File:
1 edited

Legend:

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

    r2661 r2670  
    1414#if 0
    1515    // Would like to use psVectorStats, but it doesn't have errors built in yet
    16     psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV);
     16    psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
    1717    (void)psVectorStats(stats, values, masks, 1);
    1818    float mean = stats->sampleMean;
     
    2525    int num = values->n;
    2626    for (int i = 0; i < num; i++) {
    27         if (masks->data.U8[i]) {
     27        if (! masks->data.U8[i]) {
    2828            sum += values->data.F32[i] / SQUARE(errors->data.F32[i]);
    2929            weights += 1.0 / SQUARE(errors->data.F32[i]);
     
    4646{
    4747    psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEDIAN);
    48     (void)psVectorStats(stats, values, masks, 0);
     48    (void)psVectorStats(stats, values, masks, 1);
    4949    float median = stats->sampleMedian;
    5050    psFree(stats);
     
    132132                deltas->data.F32[i] = delta;
    133133                if ((pixel >= saturated) || (pixel <= bad) || (! isfinite(pixel)) || (! isfinite(delta))) {
    134                     mask->data.U8[i] = (psU8)0; // Don't use!
     134                    mask->data.U8[i] = (psU8)1; // Don't use!
    135135                } else {
    136                     mask->data.U8[i] = (psU8)1; // Use.
     136                    mask->data.U8[i] = (psU8)0; // Use.
    137137                }
    138138            }
    139139           
    140             float average = stacCombineMedian(pixels, deltas, mask); // Combined value
     140            float average = stacCombineMean(pixels, deltas, mask); // Combined value
    141141
    142142#ifdef TESTING
     
    145145            int numGoodPix = 0;
    146146            for (int i = 0; i < nImages; i++) {
    147                 if (mask->data.U8[i]) {
     147                if (! mask->data.U8[i]) {
    148148                    chi2->data.F32[y][x] += SQUARE((pixels->data.F32[i] - average) / deltas->data.F32[i]);
    149149                    numGoodPix++;
     
    158158                int maxIndex = -1;
    159159                for (int i = 0; i < nImages; i++) {
    160                     if (mask->data.U8[i] && ((pixels->data.F32[i] - average) / deltas->data.F32[i] > max)) {
     160                    if (!mask->data.U8[i] && ((pixels->data.F32[i] - average) / deltas->data.F32[i] > max)) {
    161161                        max = (pixels->data.F32[i] - average) / deltas->data.F32[i];
    162162                        maxIndex = i;
     
    165165                // Reject the pixel with the maximum deviation
    166166                if (max > reject) {   
    167                     mask->data.U8[maxIndex] = 0;
     167                    mask->data.U8[maxIndex] = 1;
    168168                    ((psImage*)((*rejected)->data[maxIndex]))->data.F32[y][x] += 1.0;
    169169                    // Re-do combination following rejection
Note: See TracChangeset for help on using the changeset viewer.