IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29598


Ignore:
Timestamp:
Oct 28, 2010, 5:50:53 PM (16 years ago)
Author:
eugene
Message:

adjust the moments penalty scaling by a factor to make the recipe penalties in the vicinity of 1.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/imcombine/pmSubtractionEquation.c

    r29543 r29598  
    2525# define PENALTY false
    2626# define MOMENTS (!PENALTY)
     27# define MOMENTS_PENALTY_SCALE 2e-5 // XXX this value is not completely arbitrary, but I don't understand why it needs to be this value...
    2728
    2829//////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    325326                    // add in second moments
    326327                    if (MOMENTS) {
    327                         matrix->data.F64[iIndex][jIndex] += kernels->penalty * MxxAA;
    328                         matrix->data.F64[iIndex][jIndex] += kernels->penalty * MyyAA;
    329 
    330                         matrix->data.F64[jIndex][iIndex] += kernels->penalty * MxxAA;
    331                         matrix->data.F64[jIndex][iIndex] += kernels->penalty * MyyAA;
    332 
    333                         matrix->data.F64[iIndex + numParams][jIndex + numParams] += kernels->penalty * MxxBB;
    334                         matrix->data.F64[iIndex + numParams][jIndex + numParams] += kernels->penalty * MyyBB;
    335 
    336                         matrix->data.F64[jIndex + numParams][iIndex + numParams] += kernels->penalty * MxxBB;
    337                         matrix->data.F64[jIndex + numParams][iIndex + numParams] += kernels->penalty * MyyBB;
    338 
    339                         // XXX this uses the single moments, first try
    340                         // matrix->data.F64[iIndex][jIndex] += kernels->penalty * stamp->MxxI1->data.F32[i]*stamp->MxxI1->data.F32[j];
    341                         // matrix->data.F64[iIndex][jIndex] += kernels->penalty * stamp->MyyI1->data.F32[i]*stamp->MyyI1->data.F32[j];
    342                         //
    343                         // matrix->data.F64[jIndex][iIndex] += kernels->penalty * stamp->MxxI1->data.F32[i]*stamp->MxxI1->data.F32[j];
    344                         // matrix->data.F64[jIndex][iIndex] += kernels->penalty * stamp->MyyI1->data.F32[i]*stamp->MyyI1->data.F32[j];
    345                         //
    346                         // matrix->data.F64[iIndex + numParams][jIndex + numParams] += kernels->penalty * stamp->MxxI2->data.F32[i]*stamp->MxxI2->data.F32[j];
    347                         // matrix->data.F64[iIndex + numParams][jIndex + numParams] += kernels->penalty * stamp->MyyI2->data.F32[i]*stamp->MyyI2->data.F32[j];
    348                         //
    349                         // matrix->data.F64[jIndex + numParams][iIndex + numParams] += kernels->penalty * stamp->MxxI2->data.F32[i]*stamp->MxxI2->data.F32[j];
    350                         // matrix->data.F64[jIndex + numParams][iIndex + numParams] += kernels->penalty * stamp->MyyI2->data.F32[i]*stamp->MyyI2->data.F32[j];
     328                        matrix->data.F64[iIndex][jIndex] += kernels->penalty * MxxAA * MOMENTS_PENALTY_SCALE;
     329                        matrix->data.F64[iIndex][jIndex] += kernels->penalty * MyyAA * MOMENTS_PENALTY_SCALE;
     330
     331                        matrix->data.F64[jIndex][iIndex] += kernels->penalty * MxxAA * MOMENTS_PENALTY_SCALE;
     332                        matrix->data.F64[jIndex][iIndex] += kernels->penalty * MyyAA * MOMENTS_PENALTY_SCALE;
     333
     334                        matrix->data.F64[iIndex + numParams][jIndex + numParams] += kernels->penalty * MxxBB * MOMENTS_PENALTY_SCALE;
     335                        matrix->data.F64[iIndex + numParams][jIndex + numParams] += kernels->penalty * MyyBB * MOMENTS_PENALTY_SCALE;
     336
     337                        matrix->data.F64[jIndex + numParams][iIndex + numParams] += kernels->penalty * MxxBB * MOMENTS_PENALTY_SCALE;
     338                        matrix->data.F64[jIndex + numParams][iIndex + numParams] += kernels->penalty * MyyBB * MOMENTS_PENALTY_SCALE;
    351339                    }
    352340                    matrix->data.F64[iIndex][jIndex + numParams] = ab;
     
    465453            // add in second moments
    466454            if (MOMENTS) {
    467                 vector->data.F64[iIndex]             -= kernels->penalty * MxxAI1;
    468                 vector->data.F64[iIndex]             -= kernels->penalty * MyyAI1;
    469 
    470                 vector->data.F64[iIndex + numParams] -= kernels->penalty * MxxBI2;
    471                 vector->data.F64[iIndex + numParams] -= kernels->penalty * MyyBI2;
     455                vector->data.F64[iIndex]             -= kernels->penalty * MxxAI1 * MOMENTS_PENALTY_SCALE;
     456                vector->data.F64[iIndex]             -= kernels->penalty * MyyAI1 * MOMENTS_PENALTY_SCALE;
     457
     458                vector->data.F64[iIndex + numParams] -= kernels->penalty * MxxBI2 * MOMENTS_PENALTY_SCALE;
     459                vector->data.F64[iIndex + numParams] -= kernels->penalty * MyyBI2 * MOMENTS_PENALTY_SCALE;
    472460            }
    473461        }
     
    793781        }
    794782    }
     783
    795784    stamp->norm = normI2 / normI1;
    796785    stamp->normI1 = normI1;
Note: See TracChangeset for help on using the changeset viewer.