- Timestamp:
- Apr 20, 2014, 5:52:37 PM (12 years ago)
- Location:
- branches/eam_branches/ipp-20140402
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ppBackground/src/ppBackgroundStackMath.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140402
- Property svn:mergeinfo changed
/trunk (added) merged: 36642-36643,36645,36647,36649-36651,36653,36655,36657-36666,36668-36671
- Property svn:mergeinfo changed
-
branches/eam_branches/ipp-20140402/ppBackground/src/ppBackgroundStackMath.c
r36635 r36677 55 55 } 56 56 psMetadata *chipData = psMetadataLookupPtr(NULL, expItem->data.md, workingChip); 57 if (!chipData) { continue; } 57 58 psImage *image = psMetadataLookupPtr(NULL, chipData, "bkg image"); 59 if (!image) { continue; } 58 60 psVectorAppend(tmp,image->data.F32[v][u]); 59 61 } // End loop over exposures … … 63 65 64 66 psFree(expIter); 67 psFree(tmp); 65 68 } // End u 66 69 } // End v 70 // Remove the median value from this data. We just want the tilts, not the offsets 71 psStatsInit(stats); 72 psImageStats(stats,solution,NULL,0); 73 for (v = 0; v < solution->numRows; v++) { 74 for (u = 0; u < solution->numCols; u++) { 75 solution->data.F32[v][u] -= stats->robustMedian; 76 } 77 } 78 79 67 80 } // End working chip scan 68 81 … … 90 103 psMetadataItem *chipItem; 91 104 while ((chipItem = psMetadataGetAndIncrement(chipIter))) { 105 // const char *chipName = chipItem->name; 106 92 107 psImage *image = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg image"); 93 108 psImage *ra = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg ra"); 94 109 psImage *dec = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg dec"); 95 110 // psImage *camera= psMetadataLookupPtr(NULL, data->OTA_solutions, chipName); 96 111 psVector *obs = psVectorAllocEmpty(image->numRows, PS_TYPE_F32); 97 112 psVector *model= psVectorAllocEmpty(image->numRows, PS_TYPE_F32); 98 113 114 int j = 0; 115 int used = 0; 99 116 for (v = 0; v < image->numRows; v++) { 100 117 for (u = 0; u < image->numCols; u++) { 101 118 if ((ra->data.F32[v][u] < data->x_min)||(ra->data.F32[v][u] > data->x_max)|| 102 (dec->data.F32[v][u] < data->y_min)||(dec->data.F32[v][u] > data->y_max)) { continue; }103 psVectorAppend(obs,image->data.F32[v][u]); 119 (dec->data.F32[v][u] < data->y_min)||(dec->data.F32[v][u] > data->y_max)) { j++; continue; } 120 psVectorAppend(obs,image->data.F32[v][u]);// - camera->data.F32[v][u]); 104 121 psVectorAppend(model, psImageMapEval(data->modelMap,ra->data.F32[v][u],dec->data.F32[v][u])); 105 // obs->data.F32[v * image->numCols + u] = image->data.F32[v][u]; 106 // model->data.F32[v * image->numCols + u] = psImageMapEval(data->modelMap,ra->data.F32[v][u],dec->data.F32[v][u]); 107 } 108 } 109 110 psPolynomial1D *poly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD,1); 111 int status = psVectorFitPolynomial1D(poly,NULL,0,model,NULL,obs); 112 if (!status) { 113 psMetadataAddF32(chipItem->data.md,PS_LIST_TAIL,"bkg offset", PS_META_REPLACE, "background offset for this exposure/ota pair", poly->coeff[0]); 114 psMetadataAddF32(chipItem->data.md,PS_LIST_TAIL,"bkg scale", PS_META_REPLACE, "background scale for this exposure/ota pair", poly->coeff[1]); 115 } 116 psFree(poly); 122 j++; 123 used++; 124 } 125 } 126 127 if (used > 0) { 128 129 psPolynomial1D *poly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD,1); 130 int status = psVectorFitPolynomial1D(poly,NULL,0,model,NULL,obs); 131 printf("in model fit loop: %d %d %d %f %f\n",status,j,used,poly->coeff[0],poly->coeff[1]); 132 if (status && (poly->coeff[1] != 0.0)) { 133 psMetadataAddF32(chipItem->data.md,PS_LIST_TAIL,"bkg offset", PS_META_REPLACE, "background offset for this exposure/ota pair", poly->coeff[0]); 134 psMetadataAddF32(chipItem->data.md,PS_LIST_TAIL,"bkg scale", PS_META_REPLACE, "background scale for this exposure/ota pair", poly->coeff[1]); 135 } 136 psFree(poly); 137 } 117 138 } // End OTA loop 118 139 psFree(chipIter); … … 155 176 (dec->data.F32[v][u] < data->y_min)||(dec->data.F32[v][u] > data->y_max)) { continue; } 156 177 157 model->data.F32[v][u] = scale * image->data.F32[v][u] -offset - camera->data.F32[v][u];178 model->data.F32[v][u] = scale * image->data.F32[v][u] + offset - camera->data.F32[v][u]; 158 179 } 159 180 } … … 170 191 // This "averaging" is done using the psImageMapClipFit. 171 192 bool ppBackgroundStackModelFit(ppBackgroundStackData *data) { 172 long j ;173 int u,v; 174 175 long used ;193 long j = 0; 194 int u,v; 195 196 long used = 0; 176 197 psS16 N = psMetadataLookupS16(NULL, data->models, "N"); 177 198 psVector *X = psVectorAllocEmpty(N * 13 * 13,PS_TYPE_F32); … … 197 218 psImage *ra = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg ra"); 198 219 psImage *dec = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg dec"); 199 // psImage *model = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg image"); 220 #define DUMP_DATA 0 221 #if DUMP_DATA 222 psImage *model = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg image"); 223 224 psF32 offset = psMetadataLookupF32(NULL,chipItem->data.md,"bkg offset"); 225 psF32 scale = psMetadataLookupF32(NULL,chipItem->data.md,"bkg scale"); 226 227 #endif 200 228 for (v = 0; v < calib->numRows; v++) { 201 229 for (u = 0; u < calib->numCols; u++) { … … 216 244 used++; 217 245 j++; 218 219 /* printf("DATA %ld %ld %f %f %f %f\n", */ 220 /* j,used, */ 221 /* ra->data.F32[v][u], */ 222 /* dec->data.F32[v][u], */ 223 /* calib->data.F32[v][u], */ 224 /* model->data.F32[v][u]); */ 225 246 #if DUMP_DATA 247 printf("DATA %d %ld %ld %f %f %f %f %f %f\n", 248 data->model_iteration,j,used, 249 offset,scale, 250 ra->data.F32[v][u], 251 dec->data.F32[v][u], 252 calib->data.F32[v][u], 253 model->data.F32[v][u]); 254 #endif 226 255 } 227 256 } … … 232 261 bool fitStatus; 233 262 bool status = psImageMapClipFit(&fitStatus,data->modelMap,stats, mask, 1, X, Y, Z, E); 234 263 data->model_iteration++; 235 264 psFree(expIter); 236 265 psFree(X);
Note:
See TracChangeset
for help on using the changeset viewer.
