IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19907


Ignore:
Timestamp:
Oct 6, 2008, 3:06:22 AM (18 years ago)
Author:
eugene
Message:

adding psphotImageQuality

Location:
trunk/psphot/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/Makefile.am

    r19869 r19907  
    1919libpsphot_la_SOURCES = \
    2020        psphotErrorCodes.c             \
     21        psphotImageQuality.c           \
     22        psphotVisual.c                 \
    2123        psphotCullPeaks.c              \
    2224        psphotVersion.c                \
     
    7476        psphotMakeFluxScale.c          \
    7577        psphotCheckStarDistribution.c  \
    76         psphotVisual.c                 \
    7778        psphotAddNoise.c
    7879
  • trunk/psphot/src/psphotImageQuality.c

    r19896 r19907  
    44bool psphotImageQuality (psMetadata *recipe, psArray *sources) {
    55
    6     psVector *M2 = psVectorAllocEmpty (100);
    7     psVector *M3 = psVectorAllocEmpty (100);
    8     psVector *M4 = psVectorAllocEmpty (100);
     6    psVector *M2 = psVectorAllocEmpty (100, PS_TYPE_F32);
     7    psVector *M3 = psVectorAllocEmpty (100, PS_TYPE_F32);
     8    psVector *M4 = psVectorAllocEmpty (100, PS_TYPE_F32);
    99
    1010    for (int i = 0; i < sources->n; i++) {
     
    3737
    3838        // the moments->Mnnn terms contain the straight sums: for example: moments->Mxxx contains \sum x^3 / r
    39         M_c2 = moments->Mxx - moments->Myy;
    40         M_s2 = 2*moments->Mxy;
    41         psVectorAppend (M2, sqrt (M_c2^2 + M_s2^2));
     39        float M_c2 = moments->Mxx - moments->Myy;
     40        float M_s2 = 2*moments->Mxy;
     41        psVectorAppend (M2, hypot(M_c2, M_s2));
    4242       
    43         M_c3 = moments->Mxxx - 3.0*moments->Mxyy;
    44         M_s3 = 3.0*moments->Mxxy - moments->Myyy;
    45         psVectorAppend (M3, sqrt (M_c3^2 + M_s3^2));
     43        float M_c3 = moments->Mxxx - 3.0*moments->Mxyy;
     44        float M_s3 = 3.0*moments->Mxxy - moments->Myyy;
     45        psVectorAppend (M3, hypot (M_c3, M_s3));
    4646       
    47         M_c4 = moments->Mxxxx - 6.0*moments->Mxxyy + moments->Myyyy;
    48         M_s4 = 4.0*moments->Mxxxy - 4.0*moments->Mxyyy;
    49         psVectorAppend (M4, sqrt (M_c2^2 + M_s2^2));
     47        float M_c4 = moments->Mxxxx - 6.0*moments->Mxxyy + moments->Myyyy;
     48        float M_s4 = 4.0*moments->Mxxxy - 4.0*moments->Mxyyy;
     49        psVectorAppend (M4, hypot (M_c4, M_s4));
    5050    }   
    5151
    52     psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN, PS_STAT_ROBUST_STDEV);
     52    psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
    5353
    5454    psVectorStats (stats, M2, NULL, NULL, 0);
    5555    float vM2 = stats->robustMedian;
    5656    float dM2 = stats->robustStdev;
    57     psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_M2",   PS_META_REPLACE, "M_2 = sqrt (M_c2^2 + M_s2^2)", vM2);
    58     psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_D_M2", PS_META_REPLACE, "Stdev of M_2", dM2);
     57    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_M2",   PS_META_REPLACE, "M_2 = sqrt (M_c2^2 + M_s2^2)", vM2);
     58    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_D_M2", PS_META_REPLACE, "Stdev of M_2", dM2);
    5959
    6060    psVectorStats (stats, M3, NULL, NULL, 0);
    6161    float vM3 = stats->robustMedian;
    6262    float dM3 = stats->robustStdev;
    63     psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_M3",   PS_META_REPLACE, "M_3 = sqrt (M_c3^2 + M_s3^2)", vM3);
    64     psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_D_M3", PS_META_REPLACE, "Stdev of M_3", dM3);
     63    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_M3",   PS_META_REPLACE, "M_3 = sqrt (M_c3^2 + M_s3^2)", vM3);
     64    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_D_M3", PS_META_REPLACE, "Stdev of M_3", dM3);
    6565
    66     psVectorStats (stats, M3, NULL, NULL, 0);
     66    psVectorStats (stats, M4, NULL, NULL, 0);
    6767    float vM4 = stats->robustMedian;
    6868    float dM4 = stats->robustStdev;
    69     psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_M4",   PS_META_REPLACE, "M_4 = sqrt (M_c4^2 + M_s4^2)", vM4);
    70     psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_D_M4", PS_META_REPLACE, "Stdev of M_4", dM4);
     69    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_M4",   PS_META_REPLACE, "M_4 = sqrt (M_c4^2 + M_s4^2)", vM4);
     70    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_D_M4", PS_META_REPLACE, "Stdev of M_4", dM4);
     71
     72    psFree (M2);
     73    psFree (M3);
     74    psFree (M4);
     75    psFree (stats);
    7176
    7277    psLogMsg ("psphot", PS_LOG_INFO, "Image Quality Stats : M_2 : %f +/- %f, M_3 : %f +/- %f, M_4 : %f +/- %f\n", vM2, dM2, vM3, dM3, vM4, dM4);
Note: See TracChangeset for help on using the changeset viewer.