Changeset 19907
- Timestamp:
- Oct 6, 2008, 3:06:22 AM (18 years ago)
- Location:
- trunk/psphot/src
- Files:
-
- 2 edited
-
Makefile.am (modified) (2 diffs)
-
psphotImageQuality.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/Makefile.am
r19869 r19907 19 19 libpsphot_la_SOURCES = \ 20 20 psphotErrorCodes.c \ 21 psphotImageQuality.c \ 22 psphotVisual.c \ 21 23 psphotCullPeaks.c \ 22 24 psphotVersion.c \ … … 74 76 psphotMakeFluxScale.c \ 75 77 psphotCheckStarDistribution.c \ 76 psphotVisual.c \77 78 psphotAddNoise.c 78 79 -
trunk/psphot/src/psphotImageQuality.c
r19896 r19907 4 4 bool psphotImageQuality (psMetadata *recipe, psArray *sources) { 5 5 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); 9 9 10 10 for (int i = 0; i < sources->n; i++) { … … 37 37 38 38 // 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)); 42 42 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)); 46 46 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)); 50 50 } 51 51 52 psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN ,PS_STAT_ROBUST_STDEV);52 psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 53 53 54 54 psVectorStats (stats, M2, NULL, NULL, 0); 55 55 float vM2 = stats->robustMedian; 56 56 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); 59 59 60 60 psVectorStats (stats, M3, NULL, NULL, 0); 61 61 float vM3 = stats->robustMedian; 62 62 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); 65 65 66 psVectorStats (stats, M 3, NULL, NULL, 0);66 psVectorStats (stats, M4, NULL, NULL, 0); 67 67 float vM4 = stats->robustMedian; 68 68 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); 71 76 72 77 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.
