Changeset 22738 for trunk/psLib/src/imageops/psImageCovariance.c
- Timestamp:
- Mar 2, 2009, 11:50:40 AM (17 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/imageops/psImageCovariance.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/imageops/psImageCovariance.c
r21467 r22738 43 43 } else { 44 44 covar = psImageCovarianceNone(); 45 } 46 47 // Check for non-finite elements 48 for (int y = kernel->yMin; y <= kernel->yMax; y++) { 49 for (int x = kernel->xMin; x <= kernel->xMax; x++) { 50 if (!isfinite(kernel->kernel[y][x])) { 51 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 52 "Non-finite covariance matrix element in kernel at %d,%d", x, y); 53 psFree(covar); 54 return NULL; 55 } 56 } 57 } 58 for (int y = covar->yMin; y <= covar->yMax; y++) { 59 for (int x = covar->xMin; x <= covar->xMax; x++) { 60 if (!isfinite(covar->kernel[y][x])) { 61 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 62 "Non-finite covariance matrix element in covariance matrix at %d,%d", x, y); 63 psFree(covar); 64 return NULL; 65 } 66 } 45 67 } 46 68 … … 110 132 float psImageCovarianceFactor(const psKernel *covariance) 111 133 { 112 return covariance ? covariance->kernel[0][0] : NAN;134 return covariance ? covariance->kernel[0][0] : 1.0; 113 135 } 114 136 … … 144 166 for (int y = covar->yMin; y <= covar->yMax; y++) { 145 167 for (int x = covar->xMin; x <= covar->xMax; x++) { 168 if (!isfinite(covar->kernel[y][x])) { 169 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 170 "Non-finite covariance matrix element at %d,%d for input %d", 171 x, y, i); 172 psFree(sum); 173 return NULL; 174 } 146 175 sum->kernel[y][x] += covar->kernel[y][x]; 147 176 } … … 192 221 int radius = PS_MAX(abs(x), abs(y)); // Squarish radius 193 222 psAssert(radius <= maxRadius, "Radius doesn't fit"); 223 if (!isfinite(covar->kernel[y][x])) { 224 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Non-finite covariance matrix element at %d,%d", 225 x, y); 226 return NULL; 227 } 194 228 radiusSum->data.F64[radius] += fabsf(covar->kernel[y][x]); 195 229 sum += fabsf(covar->kernel[y][x]);
Note:
See TracChangeset
for help on using the changeset viewer.
