Changeset 15591
- Timestamp:
- Nov 12, 2007, 11:58:17 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/astrom/pmAstrometryDistortion.c
r15254 r15591 7 7 * @author EAM, IfA 8 8 * 9 * @version $Revision: 1.2 0$ $Name: not supported by cvs2svn $10 * @date $Date: 2007-1 0-09 19:27:04$9 * @version $Revision: 1.21 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2007-11-12 21:58:17 $ 11 11 * 12 12 * Copyright 2006 Institute for Astronomy, University of Hawaii … … 112 112 Npts++; 113 113 } 114 114 115 115 psTrace ("psModules.astrom", 4, "Npts: %d (%d,%d) : (%d - %d),(%d - %d)\n", Npts, nx, ny, Xmin, Xmax, Ymin, Ymax); 116 116 … … 171 171 bool pmAstromFitDistortion(pmFPA *fpa, psArray *gradients, double pixelScale) 172 172 { 173 PS_ASSERT_PTR_NON_NULL(fpa, false); 174 PS_ASSERT_ARRAY_NON_NULL(gradients, false); 173 175 174 176 psPolynomial2D *localX = NULL; … … 211 213 for (int i = 0; i <= fpa->toTPA->x->nX; i++) { 212 214 for (int j = 0; j <= fpa->toTPA->x->nY; j++) { 213 if ((i > 0) && (i <= fpa->toTPA->x->nX)) {214 localX->coeffMask[i-1][j] = fpa->toTPA->x->coeffMask[i][j];215 }216 if ((j > 0) && (j <= fpa->toTPA->x->nY)) {217 localY->coeffMask[i][j-1] = fpa->toTPA->x->coeffMask[i][j];218 }215 if ((i > 0) && (i <= fpa->toTPA->x->nX)) { 216 localX->coeffMask[i-1][j] = fpa->toTPA->x->coeffMask[i][j]; 217 } 218 if ((j > 0) && (j <= fpa->toTPA->x->nY)) { 219 localY->coeffMask[i][j-1] = fpa->toTPA->x->coeffMask[i][j]; 220 } 219 221 } 220 222 } … … 223 225 if (!psVectorClipFitPolynomial2D (localX, stats, mask, 0xff, dPdL, NULL, L, M)) { 224 226 psLogMsg ("psastro", 3, "failed to fit x-dir gradient\n"); 225 psFree (localX);226 psFree (localY);227 psFree (localX); 228 psFree (localY); 227 229 goto escape; 228 230 } … … 230 232 if (!psVectorClipFitPolynomial2D (localY, stats, mask, 0xff, dPdM, NULL, L, M)) { 231 233 psLogMsg ("psastro", 3, "failed to fit y-dir gradient\n"); 232 psFree (localX);233 psFree (localY);234 psFree (localX); 235 psFree (localY); 234 236 goto escape; 235 237 } … … 239 241 for (int i = 1; i <= fpa->toTPA->x->nX; i++) { 240 242 if (fpa->toTPA->x->coeffMask[i][0] & PS_POLY_MASK_SET) { 241 continue;242 }243 fpa->toTPA->x->coeff[i][0] = localX->coeff[i-1][0] / i;243 continue; 244 } 245 fpa->toTPA->x->coeff[i][0] = localX->coeff[i-1][0] / i; 244 246 } 245 247 for (int j = 1; j <= fpa->toTPA->x->nY; j++) { 246 248 if (fpa->toTPA->x->coeffMask[0][j] & PS_POLY_MASK_SET) { 247 continue;248 }249 fpa->toTPA->x->coeff[0][j] = localY->coeff[0][j-1] / j;249 continue; 250 } 251 fpa->toTPA->x->coeff[0][j] = localY->coeff[0][j-1] / j; 250 252 } 251 253 for (int i = 1; i <= fpa->toTPA->x->nX; i++) { 252 254 for (int j = 1; j <= fpa->toTPA->x->nY; j++) { 253 255 if (fpa->toTPA->x->coeffMask[i][j] & PS_POLY_MASK_SET) { 254 continue;255 }256 fpa->toTPA->x->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);256 continue; 257 } 258 fpa->toTPA->x->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j); 257 259 } 258 260 } … … 269 271 for (int i = 0; i < fpa->toTPA->y->nX; i++) { 270 272 for (int j = 0; j < fpa->toTPA->y->nY; j++) { 271 if ((i > 0) && (i <= fpa->toTPA->y->nX)) {272 localX->coeffMask[i-1][j] = fpa->toTPA->y->coeffMask[i][j];273 }274 if ((j > 0) && (j <= fpa->toTPA->y->nY)) {275 localY->coeffMask[i][j-1] = fpa->toTPA->y->coeffMask[i][j];276 }273 if ((i > 0) && (i <= fpa->toTPA->y->nX)) { 274 localX->coeffMask[i-1][j] = fpa->toTPA->y->coeffMask[i][j]; 275 } 276 if ((j > 0) && (j <= fpa->toTPA->y->nY)) { 277 localY->coeffMask[i][j-1] = fpa->toTPA->y->coeffMask[i][j]; 278 } 277 279 } 278 280 } … … 286 288 for (int i = 1; i <= fpa->toTPA->y->nX; i++) { 287 289 if (fpa->toTPA->y->coeffMask[i][0] & PS_POLY_MASK_SET) { 288 continue;289 } 290 fpa->toTPA->y->coeff[i][0] = localX->coeff[i-1][0] / i;290 continue; 291 } 292 fpa->toTPA->y->coeff[i][0] = localX->coeff[i-1][0] / i; 291 293 } 292 294 for (int j = 1; j <= fpa->toTPA->y->nY; j++) { 293 295 if (fpa->toTPA->y->coeffMask[0][j] & PS_POLY_MASK_SET) { 294 continue;295 } 296 fpa->toTPA->y->coeff[0][j] = localY->coeff[0][j-1] / j;296 continue; 297 } 298 fpa->toTPA->y->coeff[0][j] = localY->coeff[0][j-1] / j; 297 299 } 298 300 for (int i = 1; i <= fpa->toTPA->y->nX; i++) { 299 301 for (int j = 1; j <= fpa->toTPA->y->nY; j++) { 300 302 if (fpa->toTPA->y->coeffMask[i][j] & PS_POLY_MASK_SET) { 301 continue;302 } 303 fpa->toTPA->y->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);303 continue; 304 } 305 fpa->toTPA->y->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j); 304 306 } 305 307 } … … 328 330 if (fpa->fromTPA == NULL) { 329 331 psError (PS_ERR_UNKNOWN, false, "failed to invert fpa->toTPA\n"); 330 return false;332 return false; 331 333 } 332 334
Note:
See TracChangeset
for help on using the changeset viewer.
