Changeset 7999
- Timestamp:
- Jul 27, 2006, 2:44:05 PM (20 years ago)
- Location:
- trunk/psLib
- Files:
-
- 15 edited
-
src/imageops/psImageGeomManip.c (modified) (5 diffs)
-
src/imageops/psImagePixelExtract.c (modified) (8 diffs)
-
src/math/psStats.c (modified) (4 diffs)
-
src/math/psStats.h (modified) (3 diffs)
-
test/math/tst_psHist00.c (modified) (1 diff)
-
test/math/tst_psHist01.c (modified) (1 diff)
-
test/math/tst_psHist03.c (modified) (1 diff)
-
test/math/tst_psStats00.c (modified) (2 diffs)
-
test/math/tst_psStats01.c (modified) (3 diffs)
-
test/math/tst_psStats02.c (modified) (3 diffs)
-
test/math/tst_psStats03.c (modified) (1 diff)
-
test/math/tst_psStats06.c (modified) (1 diff)
-
test/math/tst_psStats07.c (modified) (1 diff)
-
test/math/tst_psStats08.c (modified) (1 diff)
-
test/math/tst_psStats09.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/imageops/psImageGeomManip.c
r7766 r7999 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1.2 6$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-0 6-30 02:20:06$12 * @version $Revision: 1.27 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-07-28 00:44:05 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 48 48 psMaskType* maskData = NULL; 49 49 psStats* myStats; 50 double statVal;51 50 52 51 if (in == NULL) { … … 72 71 } 73 72 74 if (p_psGetStatValue(stats, &statVal) == false) { 73 psStatsOptions statistic = psStatsSingleOption(stats->options); // Statistics option to use 74 if (statistic == 0) { 75 75 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 76 76 PS_ERRORTEXT_psImage_BAD_STAT, … … 108 108 out = psImageRecycle(out, outCols, outRows, in->type.type); 109 109 110 #define PS_IMAGE_REBIN_CASE( type) \111 case PS_TYPE_## type: { \112 ps## type*outRowData; \113 ps## type* vecData = vec->data.type; \114 psMaskType *inRowMask = NULL; \110 #define PS_IMAGE_REBIN_CASE(TYPE) \ 111 case PS_TYPE_##TYPE: { \ 112 ps##TYPE *outRowData; \ 113 ps##TYPE *vecData = vec->data.TYPE; \ 114 psMaskType *inRowMask = NULL; \ 115 115 for (psS32 row = 0; row < outRows; row++) { \ 116 outRowData = out->data. type[row]; \117 psS32 inCurrentRow = row *scale; \118 psS32 inNextRow = (row +1)*scale; \116 outRowData = out->data.TYPE[row]; \ 117 psS32 inCurrentRow = row * scale; \ 118 psS32 inNextRow = (row + 1) * scale; \ 119 119 for (psS32 col = 0; col < outCols; col++) { \ 120 psS32 inCurrentCol = col *scale; \121 psS32 inNextCol = (col +1)*scale; \120 psS32 inCurrentCol = col * scale; \ 121 psS32 inNextCol = (col + 1) * scale; \ 122 122 psS32 n = 0; \ 123 123 for (psS32 inRow = inCurrentRow; inRow < inNextRow && inRow < inRows; inRow++) { \ 124 ps## type* inRowData = in->data.type[inRow]; \124 ps##TYPE* inRowData = in->data.TYPE[inRow]; \ 125 125 if (mask != NULL) { \ 126 126 inRowMask = mask->data.PS_TYPE_MASK_DATA[inRow]; \ … … 134 134 } \ 135 135 vec->n = n; \ 136 myStats = psVectorStats(myStats,vec,NULL,maskVec,maskVal); \ 137 p_psGetStatValue(myStats,&statVal); \ 138 outRowData[col] = (ps##type)statVal; \ 136 myStats = psVectorStats(myStats, vec, NULL, maskVec, maskVal); \ 137 outRowData[col] = (ps##TYPE)psStatsGetValue(myStats, statistic); \ 139 138 } \ 140 139 } \ -
trunk/psLib/src/imageops/psImagePixelExtract.c
r7125 r7999 8 8 * @author Robert DeSonia, MHPCC 9 9 * 10 * @version $Revision: 1.2 4$ $Name: not supported by cvs2svn $11 * @date $Date: 2006-0 5-16 23:12:20$10 * @version $Revision: 1.25 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2006-07-28 00:44:05 $ 12 12 * 13 13 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 210 210 const psStats* stats) 211 211 { 212 double statVal;213 212 psStats* myStats; 214 213 psElemType type; … … 375 374 } 376 375 377 // verify that the stats struct specifies a 378 // single stats operation379 if ( p_psGetStatValue(stats, &statVal) == false) {376 // verify that the stats struct specifies a single stats operation 377 psStatsOptions statistic = psStatsSingleOption(stats->options); 378 if (statistic == 0) { 380 379 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 381 380 PS_ERRORTEXT_psImage_BAD_STAT,stats->options); … … 439 438 } \ 440 439 myStats = psVectorStats(myStats,imgVec,NULL,maskVec,maskVal); \ 441 (void)p_psGetStatValue(myStats,&statVal); \ 442 *outData = statVal; \ 440 *outData = psStatsGetValue(myStats, statistic); \ 443 441 if (outPosition != NULL) { \ 444 442 outPosition->x = c; \ … … 520 518 } 521 519 myStats = psVectorStats(myStats, imgVec, NULL, maskVec, maskVal); 522 (void)p_psGetStatValue(myStats, &statVal); // we know it works cause we tested it above 523 *outData = statVal; 520 *outData = psStatsGetValue(myStats, statistic); 524 521 if (outPosition != NULL) { 525 522 outPosition->y = r; … … 741 738 const psStats* stats) 742 739 { 743 double statVal;744 745 740 /* check the parameters */ 746 741 … … 808 803 } 809 804 810 // verify that the stats struct specifies a 811 // single stats operation812 if ( p_psGetStatValue(stats, &statVal) == false) {805 // verify that the stats struct specifies a single stats operation 806 psStatsOptions statistic = psStatsSingleOption(stats->options); 807 if (statistic == 0) { 813 808 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 814 809 PS_ERRORTEXT_psImage_BAD_STAT, … … 914 909 for (psS32 r = 0; r < numOut; r++) { 915 910 myStats = psVectorStats(myStats,buffer[r], NULL, bufferMask[r],maskVal); 916 (void)p_psGetStatValue(myStats,&statVal); 917 outData[r] = statVal; 911 outData[r] = psStatsGetValue(myStats, statistic); 918 912 } 919 913 -
trunk/psLib/src/math/psStats.c
r7991 r7999 16 16 * use ->min and ->max (PS_STAT_USE_RANGE) 17 17 * 18 * @version $Revision: 1.18 1$ $Name: not supported by cvs2svn $19 * @date $Date: 2006-07-2 7 03:51:13$18 * @version $Revision: 1.182 $ $Name: not supported by cvs2svn $ 19 * @date $Date: 2006-07-28 00:44:05 $ 20 20 * 21 21 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 34 34 /*****************************************************************************/ 35 35 #include "psMemory.h" 36 #include "psAbort.h" 36 37 #include "psImage.h" 37 38 #include "psVector.h" … … 80 81 81 82 // None 82 83 /*****************************************************************************/84 /* FUNCTION IMPLEMENTATION - LOCAL */85 /*****************************************************************************/86 87 psBool p_psGetStatValue(const psStats* stats, psF64 *value)88 {89 psTrace(__func__, 4, "---- %s() begin ----\n", __func__);90 // switch (stats->options & ~(PS_STAT_USE_RANGE | PS_STAT_USE_BINSIZE | PS_STAT_ROBUST_FOR_SAMPLE)) {91 switch (stats->options & ~(PS_STAT_USE_RANGE | PS_STAT_USE_BINSIZE)) {92 case PS_STAT_SAMPLE_MEAN:93 *value = stats->sampleMean;94 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);95 return true;96 97 case PS_STAT_SAMPLE_MEDIAN:98 *value = stats->sampleMedian;99 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);100 return true;101 102 case PS_STAT_SAMPLE_STDEV:103 *value = stats->sampleStdev;104 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);105 return true;106 107 case PS_STAT_ROBUST_MEDIAN:108 *value = stats->robustMedian;109 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);110 return true;111 112 case PS_STAT_ROBUST_STDEV:113 *value = stats->robustStdev;114 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);115 return true;116 117 case PS_STAT_CLIPPED_MEAN:118 *value = stats->clippedMean;119 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);120 return true;121 122 case PS_STAT_CLIPPED_STDEV:123 *value = stats->clippedStdev;124 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);125 return true;126 127 case PS_STAT_MAX:128 *value = stats->max;129 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);130 return true;131 132 case PS_STAT_MIN:133 *value = stats->min;134 psTrace(__func__, 4, "---- %s(true) end ----\n", __func__);135 return true;136 137 default:138 psTrace(__func__, 4, "---- %s(false) end ----\n", __func__);139 return false;140 }141 }142 83 143 84 /****************************************************************************** … … 2211 2152 return psStatsOptionToString(stats->options); 2212 2153 } 2154 2155 inline psStatsOptions psStatsSingleOption(psStatsOptions option) 2156 { 2157 switch (option & ~(PS_STAT_USE_RANGE | PS_STAT_USE_BINSIZE)) { 2158 case PS_STAT_SAMPLE_MEAN: 2159 case PS_STAT_SAMPLE_MEDIAN: 2160 case PS_STAT_SAMPLE_STDEV: 2161 case PS_STAT_SAMPLE_QUARTILE: 2162 case PS_STAT_ROBUST_MEDIAN: 2163 case PS_STAT_ROBUST_STDEV: 2164 case PS_STAT_ROBUST_QUARTILE: 2165 case PS_STAT_FITTED_MEAN: 2166 case PS_STAT_FITTED_STDEV: 2167 case PS_STAT_CLIPPED_MEAN: 2168 case PS_STAT_CLIPPED_STDEV: 2169 case PS_STAT_MAX: 2170 case PS_STAT_MIN: 2171 return option & ~(PS_STAT_USE_RANGE | PS_STAT_USE_BINSIZE); 2172 default: 2173 return 0; 2174 } 2175 psAbort(__func__, "Should never get here.\n"); 2176 return 0; 2177 } 2178 2179 inline double psStatsGetValue(const psStats *stats, psStatsOptions option) 2180 { 2181 // We could call psStatsSingle to check, but it would be a waste since we effectively do it anyway 2182 switch (option & ~(PS_STAT_USE_RANGE | PS_STAT_USE_BINSIZE)) { 2183 case PS_STAT_SAMPLE_MEAN: 2184 return stats->sampleMean; 2185 case PS_STAT_SAMPLE_MEDIAN: 2186 return stats->sampleMedian; 2187 case PS_STAT_SAMPLE_STDEV: 2188 return stats->sampleStdev; 2189 case PS_STAT_ROBUST_MEDIAN: 2190 return stats->robustMedian; 2191 case PS_STAT_ROBUST_STDEV: 2192 return stats->robustStdev; 2193 case PS_STAT_FITTED_MEAN: 2194 return stats->fittedMean; 2195 case PS_STAT_FITTED_STDEV: 2196 return stats->fittedStdev; 2197 case PS_STAT_CLIPPED_MEAN: 2198 return stats->clippedMean; 2199 case PS_STAT_CLIPPED_STDEV: 2200 return stats->clippedStdev; 2201 case PS_STAT_MAX: 2202 return stats->max; 2203 case PS_STAT_MIN: 2204 return stats->min; 2205 case PS_STAT_SAMPLE_QUARTILE: 2206 case PS_STAT_ROBUST_QUARTILE: 2207 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Cannot return a single quartile value; " 2208 "get them yourself.\n"); 2209 return NAN; 2210 default: 2211 return NAN; 2212 } 2213 psAbort(__func__, "Should never get here.\n"); 2214 return NAN; 2215 } -
trunk/psLib/src/math/psStats.h
r7991 r7999 14 14 * @author GLG, MHPCC 15 15 * 16 * @version $Revision: 1.5 4$ $Name: not supported by cvs2svn $17 * @date $Date: 2006-07-2 7 03:51:13$16 * @version $Revision: 1.55 $ $Name: not supported by cvs2svn $ 17 * @date $Date: 2006-07-28 00:44:05 $ 18 18 * 19 19 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 190 190 ); 191 191 192 /** Extracts the statistic value specified by stats->options.193 *194 * @return psBool If more than one statistic result is set in stats->options,195 * false is returned and the value parameter is not set,196 * otherwise true is returned.197 */198 psBool p_psGetStatValue(199 const psStats* stats, ///< the statistic struct to operate on200 201 psF64 *value ///< if return is true, this is set to the specified statistic value by stats->options202 );203 204 192 205 193 // Get the statistics option from a string … … 211 199 // Generate a string of statistics options from a psStats 212 200 psString psStatsToString(const psStats *stats); 213 201 // Is only a single statistics option set? 202 inline psStatsOptions psStatsSingleOption(psStatsOptions option); 203 // Return a particular stats value 204 inline double psStatsGetValue(const psStats *stats, psStatsOptions option); 214 205 215 206 /// @} -
trunk/psLib/test/math/tst_psHist00.c
r5117 r7999 18 18 psTraceSetLevel(".", 0); 19 19 psTraceSetLevel("p_psVectorBinDisect", 0); 20 psTraceSetLevel("p_psGetStatValue", 0);21 20 psTraceSetLevel("psHistogramAlloc", 0); 22 21 psTraceSetLevel("psHistogramAllocGeneric", 0); -
trunk/psLib/test/math/tst_psHist01.c
r5117 r7999 18 18 psTraceSetLevel(".", 0); 19 19 psTraceSetLevel("p_psVectorBinDisect", 0); 20 psTraceSetLevel("p_psGetStatValue", 0);21 20 psTraceSetLevel("psHistogramAlloc", 0); 22 21 psTraceSetLevel("psHistogramAllocGeneric", 0); -
trunk/psLib/test/math/tst_psHist03.c
r5117 r7999 20 20 psTraceSetLevel(".", 0); 21 21 psTraceSetLevel("p_psVectorBinDisect", 0); 22 psTraceSetLevel("p_psGetStatValue", 0);23 22 psTraceSetLevel("psHistogramAlloc", 0); 24 23 psTraceSetLevel("psHistogramAllocGeneric", 0); -
trunk/psLib/test/math/tst_psStats00.c
r7131 r7999 11 11 * @author GLG, MHPCC 12 12 * 13 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $14 * @date $Date: 2006-0 5-18 01:20:10$13 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-07-28 00:44:05 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 70 70 // 71 71 psTraceSetLevel(".", 0); 72 psTraceSetLevel("p_psGetStatValue", 0);73 72 psTraceSetLevel("p_psVectorSampleMean", 10); 74 73 psTraceSetLevel("p_psVectorMax", 0); -
trunk/psLib/test/math/tst_psStats01.c
r5117 r7999 3 3 * @brief Contains tests for psVectorStats with max calculations. 4 4 * 5 * We extensively test the code with data type PS_TYPE_F32. If these pass, we 5 * We extensively test the code with data type PS_TYPE_F32. If these pass, we 6 6 * do a much simpler test with data types PS_TYPE_U8, PS_TYPE_U16, PS_TYPE_F64. 7 7 * … … 11 11 * @author GLG, MHPCC 12 12 * 13 * @version $Revision: 1. 3$ $Name: not supported by cvs2svn $14 * @date $Date: 200 5-09-24 01:10:00$13 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-07-28 00:44:05 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 60 60 // 61 61 psTraceSetLevel(".", 0); 62 psTraceSetLevel("p_psGetStatValue", 0);63 62 psTraceSetLevel("p_psVectorMax", 0); 64 63 psTraceSetLevel("p_psVectorMin", 0); -
trunk/psLib/test/math/tst_psStats02.c
r5117 r7999 3 3 * @brief Contains tests for psVectorStats with min calculations 4 4 * 5 * We extensively test the code with data type PS_TYPE_F32. If these pass, we 5 * We extensively test the code with data type PS_TYPE_F32. If these pass, we 6 6 * do a much simpler test with data types PS_TYPE_U8, PS_TYPE_U16, PS_TYPE_F64. 7 7 * … … 11 11 * @author GLG, MHPCC 12 12 * 13 * @version $Revision: 1. 3$ $Name: not supported by cvs2svn $14 * @date $Date: 200 5-09-24 01:10:00$13 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-07-28 00:44:05 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 60 60 // 61 61 psTraceSetLevel(".", 0); 62 psTraceSetLevel("p_psGetStatValue", 0);63 62 psTraceSetLevel("p_psVectorMax", 0); 64 63 psTraceSetLevel("p_psVectorMin", 0); -
trunk/psLib/test/math/tst_psStats03.c
r6226 r7999 19 19 // 20 20 psTraceSetLevel(".", 0); 21 psTraceSetLevel("p_psGetStatValue", 0);22 21 psTraceSetLevel("p_psVectorSampleMean", 0); 23 22 psTraceSetLevel("p_psVectorCheckNonEmpty", 0); -
trunk/psLib/test/math/tst_psStats06.c
r5117 r7999 22 22 // 23 23 psTraceSetLevel(".", 0); 24 psTraceSetLevel("p_psGetStatValue", 0);25 24 psTraceSetLevel("p_psVectorSampleMean", 0); 26 25 psTraceSetLevel("p_psVectorMax", 0); -
trunk/psLib/test/math/tst_psStats07.c
r7131 r7999 462 462 psTraceSetLevel(".", TRACE_LEVEL); 463 463 psTraceSetLevel("psGaussian", TRACE_LEVEL); 464 psTraceSetLevel("p_psGetStatValue", TRACE_LEVEL);465 464 psTraceSetLevel("p_psVectorMax", TRACE_LEVEL); 466 465 psTraceSetLevel("p_psVectorMin", TRACE_LEVEL); -
trunk/psLib/test/math/tst_psStats08.c
r5117 r7999 23 23 // 24 24 psTraceSetLevel(".", 0); 25 psTraceSetLevel("p_psGetStatValue", 0);26 25 psTraceSetLevel("p_psVectorMax", 0); 27 26 psTraceSetLevel("p_psVectorMin", 0); -
trunk/psLib/test/math/tst_psStats09.c
r7166 r7999 335 335 // 336 336 psTraceSetLevel(".", TRACE_LEVEL); 337 psTraceSetLevel("p_psGetStatValue", TRACE_LEVEL);338 337 psTraceSetLevel("p_psVectorSampleMean", TRACE_LEVEL); 339 338 psTraceSetLevel("p_psVectorMax", TRACE_LEVEL);
Note:
See TracChangeset
for help on using the changeset viewer.
