IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 21, 2005, 4:47:16 PM (21 years ago)
Author:
gusciora
Message:

The nX terms for the polynomials now refer to the order, not the number
of terms.

File:
1 edited

Legend:

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

    r5089 r5090  
    99 *  @author GLG, MHPCC
    1010 *
    11  *  @version $Revision: 1.78 $ $Name: not supported by cvs2svn $
    12  *  @date $Date: 2005-09-22 02:32:00 $
     11 *  @version $Revision: 1.79 $ $Name: not supported by cvs2svn $
     12 *  @date $Date: 2005-09-22 02:47:16 $
    1313 *
    1414 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    224224    chebPolys = (psPolynomial1D **) psAlloc(maxChebyPoly * sizeof(psPolynomial1D *));
    225225    for (i = 0; i < maxChebyPoly; i++) {
    226         chebPolys[i] = psPolynomial1DAlloc(i + 1, PS_POLYNOMIAL_ORD);
     226        // XXX: verify this, poly nOrder/nTerms change.
     227        chebPolys[i] = psPolynomial1DAlloc(i, PS_POLYNOMIAL_ORD);
    227228    }
    228229
     
    232233    chebPolys[1]->coeff[1] = 1;
    233234    for (i = 2; i < maxChebyPoly; i++) {
    234         for (j = 0; j < chebPolys[i - 1]->n; j++) {
     235        for (j = 0; j < (1 + chebPolys[i - 1]->COOL_1D_n); j++) {
    235236            chebPolys[i]->coeff[j + 1] = 2 * chebPolys[i - 1]->coeff[j];
    236237        }
    237         for (j = 0; j < chebPolys[i - 2]->n; j++) {
     238        for (j = 0; j < (1 + chebPolys[i - 2]->COOL_1D_n); j++) {
    238239            chebPolys[i]->coeff[j] -= chebPolys[i - 2]->coeff[j];
    239240        }
     
    290291    // 29 in the ADD: sums[k][l] = SUM {
    291292    // image(x,y) * Tk(x) * Tl(y) }
    292     sums = (double **)psAlloc(coeffs->nX * sizeof(double *));
    293     for (i = 0; i < coeffs->nX; i++) {
    294         sums[i] = (double *)psAlloc(coeffs->nY * sizeof(double));
     293    sums = (double **)psAlloc((1 + coeffs->COOL_2D_nX) * sizeof(double *));
     294    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     295        sums[i] = (double *)psAlloc((1 + coeffs->COOL_2D_nY) * sizeof(double));
    295296    }
    296297    // We scale the pixel positions to values
     
    301302    // Determine how many Chebyshev polynomials
    302303    // are needed, then create them.
    303     maxChebyPoly = coeffs->nX;
    304     if (coeffs->nY > coeffs->nX) {
    305         maxChebyPoly = coeffs->nY;
    306     }
    307     chebPolys = p_psCreateChebyshevPolys(maxChebyPoly);
     304    // XXX: recorde or verify the poly order/nterm change
     305    maxChebyPoly = coeffs->COOL_2D_nX;
     306    if (coeffs->COOL_2D_nY > coeffs->COOL_2D_nX) {
     307        maxChebyPoly = coeffs->COOL_2D_nY;
     308    }
     309    chebPolys = p_psCreateChebyshevPolys(maxChebyPoly + 1);
    308310
    309311    // Compute the sums[][] data structure.
    310     for (i = 0; i < coeffs->nX; i++) {
    311         for (j = 0; j < coeffs->nY; j++) {
     312    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     313        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
    312314            sums[i][j] = 0.0;
    313315            for (x = 0; x < input->numRows; x++) {
     
    330332    }
    331333
    332     for (i = 0; i < coeffs->nX; i++) {
    333         for (j = 0; j < coeffs->nY; j++) {
     334    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     335        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
    334336            coeffs->coeff[i][j] = sums[i][j];
    335337            coeffs->coeff[i][j] /= (double)(input->numRows * input->numCols);
     
    353355
    354356    // Free some data
    355     for (i = 0; i < coeffs->nX; i++) {
     357    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
    356358        psFree(sums[i]);
    357359    }
     
    436438    // 29 in the ADD: sums[k][l] = SUM {
    437439    // image(x,y) * Tk(x) * Tl(y) }
    438     sums = (double **)psAlloc(coeffs->nX * sizeof(double *));
    439     for (i = 0; i < coeffs->nX; i++) {
    440         sums[i] = (double *)psAlloc(coeffs->nY * sizeof(double));
     440    sums = (double **)psAlloc((1 + coeffs->COOL_2D_nX) * sizeof(double *));
     441    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     442        sums[i] = (double *)psAlloc((1 + coeffs->COOL_2D_nY) * sizeof(double));
    441443    }
    442444    // We scale the pixel positions to values
     
    447449    // Determine how many Chebyshev polynomials
    448450    // are needed, then create them.
    449     maxChebyPoly = coeffs->nX;
    450     if (coeffs->nY > coeffs->nX) {
    451         maxChebyPoly = coeffs->nY;
    452     }
    453     chebPolys = p_psCreateChebyshevPolys(maxChebyPoly);
     451    maxChebyPoly = coeffs->COOL_2D_nX;
     452    if (coeffs->COOL_2D_nY > coeffs->COOL_2D_nX) {
     453        maxChebyPoly = coeffs->COOL_2D_nY;
     454    }
     455    chebPolys = 1 + p_psCreateChebyshevPolys(maxChebyPoly);
    454456
    455457    // Compute the sums[][] data structure.
    456     for (i = 0; i < coeffs->nX; i++) {
    457         for (j = 0; j < coeffs->nY; j++) {
     458    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     459        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
    458460            sums[i][j] = 0.0;
    459461            for (x = 0; x < input->numRows; x++) {
     
    479481    }
    480482
    481     for (i = 0; i < coeffs->nX; i++) {
    482         for (j = 0; j < coeffs->nY; j++) {
     483    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     484        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
    483485            coeffs->coeff[i][j] = sums[i][j];
    484486            coeffs->coeff[i][j] /= (double)(input->numRows * input->numCols);
     
    502504
    503505    // Free some data
    504     for (i = 0; i < coeffs->nX; i++) {
     506    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
    505507        psFree(sums[i]);
    506508    }
     
    538540    // Determine how many Chebyshev polynomials
    539541    // are needed, then create them.
    540     maxChebyPoly = coeffs->nX;
    541     if (coeffs->nY > coeffs->nX) {
    542         maxChebyPoly = coeffs->nY;
    543     }
    544 
    545     chebPolys = p_psCreateChebyshevPolys(maxChebyPoly);
     542    maxChebyPoly = coeffs->COOL_2D_nX;
     543    if (coeffs->COOL_2D_nY > coeffs->COOL_2D_nX) {
     544        maxChebyPoly = coeffs->COOL_2D_nY;
     545    }
     546
     547    chebPolys = 1 + p_psCreateChebyshevPolys(maxChebyPoly);
    546548
    547549    for (x = 0; x < input->numRows; x++) {
    548550        for (y = 0; y < input->numCols; y++) {
    549551            polySum = 0.0;
    550             for (i = 0; i < coeffs->nX; i++) {
    551                 for (j = 0; j < coeffs->nY; j++) {
     552            for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
     553                for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
    552554                    polySum +=
    553555                        psPolynomial1DEval(chebPolys[i], rScalingFactors[x]) *
Note: See TracChangeset for help on using the changeset viewer.