IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19228


Ignore:
Timestamp:
Aug 26, 2008, 3:54:01 PM (18 years ago)
Author:
Paul Price
Message:

Variance factor wasn't being corrected for the sum of the (now
un-normalised) kernel.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/imageops/psImageInterpolate.c

    r19140 r19228  
    77 *  @author Paul Price, IfA
    88 *
    9  *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2008-08-21 01:12:44 $
     9 *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2008-08-27 01:54:01 $
    1111 *
    1212 *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
     
    891891                              x, y, options->mode, false);
    892892
     893    double sumKernel = 0.0;             // Sum of kernel
    893894    double sumKernel2 = 0.0;            // Sum of kernel squares
    894895    for (int j = 0; j < yNum; j++) {
    895896        for (int i = 0; i < xNum; i++) {
    896             sumKernel2 += PS_SQR(kernel[j][i]);
    897         }
    898     }
    899 
    900     return sumKernel2;
     897            float value = kernel[j][i]; // Value of kernel
     898            sumKernel += value;
     899            sumKernel2 += PS_SQR(value);
     900        }
     901    }
     902
     903    return sumKernel2 / PS_SQR(sumKernel);
    901904}
    902905
     
    925928                                xCentral, yCentral, x, y, options->mode, false);
    926929
     930    double ySumKernel = 0.0;            // Sum of kernel in y
    927931    double ySumKernel2 = 0.0;           // Sum of kernel squared in y
    928932    for (int j = 0; j < yNum; j++) {
     933        double xSumKernel = 0.0;        // Sum of kernel in x
    929934        double xSumKernel2 = 0.0;       // Sum of kernel squared in x
    930935        for (int i = 0; i < xNum; i++) {
    931             xSumKernel2 += PS_SQR(xKernel[i]);
    932         }
    933         ySumKernel2 += xSumKernel2 * PS_SQR(yKernel[j]);
    934     }
    935 
    936     return ySumKernel2;
     936            float value = xKernel[i];   // Value of kernel
     937            xSumKernel += value;
     938            xSumKernel2 += PS_SQR(value);
     939        }
     940        float value = yKernel[j];       // Value of kernel
     941        ySumKernel += xSumKernel * value;
     942        ySumKernel2 += xSumKernel2 * PS_SQR(value);
     943    }
     944
     945    return ySumKernel2 / PS_SQR(ySumKernel);
    937946}
    938947
Note: See TracChangeset for help on using the changeset viewer.