- Timestamp:
- Jul 30, 2009, 5:20:29 PM (17 years ago)
- Location:
- branches/czw_branch/cleanup
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
psModules/src/imcombine/pmReadoutCombine.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/cleanup
- Property svn:mergeinfo changed
/trunk (added) merged: 24714-24742,24744-24784,24786-24798,24801-24824,24827-24834,24836-24859,24861-24901,24903-24912,24914-24939
- Property svn:mergeinfo changed
-
branches/czw_branch/cleanup/psModules/src/imcombine/pmReadoutCombine.c
r23989 r24951 173 173 for (int i = 0; i < inputs->n; i++) { 174 174 pmReadout *readout = inputs->data[i]; // Readout of interest 175 psAssert(readout, "readout was not defined"); 176 if (!readout->process) continue; 175 177 if (!readout->image) { 176 178 psError(PS_ERR_UNEXPECTED_NULL, true, "Image data is missing for image %d.\n", i); … … 271 273 for (int r = 0; r < inputs->n; r++) { 272 274 pmReadout *readout = inputs->data[r]; // Input readout 275 if (!readout->process) continue; 273 276 psTrace("psModules.imcombine", 3, "Iterating input %d: %d --> %d, %d --> %d\n", r, 274 277 minInputCols - readout->col0, maxInputCols - readout->col0, … … 277 280 } 278 281 #endif 282 283 // set up windows for visualization (if selected) 284 pmReadoutCombineVisualInit(); 279 285 280 286 // Dereference output products … … 308 314 for (int r = 0; r < inputs->n; r++) { 309 315 pmReadout *readout = inputs->data[r]; // Input readout 316 if (!readout->process) { 317 maskData[r] = 1; 318 continue; 319 } 310 320 int yIn = i - readout->row0; // y position on input readout 311 321 int xIn = j - readout->col0; // x position on input readout … … 390 400 outputImage[yOut][xOut] = psStatsGetValue(stats, params->combine); 391 401 402 if (!isfinite(outputImage[yOut][xOut])) { 403 pmReadoutCombineVisualPixels(pixels, mask, outputImage[yOut][xOut]); 404 } 405 392 406 if (isnan(outputImage[yOut][xOut])) { 393 407 outputImage[yOut][xOut] = NAN; … … 427 441 } 428 442 443 #if (HAVE_KAPA) 444 #include <kapa.h> 445 #include "pmKapaPlots.h" 446 #include "pmVisual.h" 447 448 static int kapa = -1; 449 static bool plotFlag = true; 450 451 // this init function only gets the ordinates for the first readout... 452 bool pmReadoutCombineVisualInit(void) { 453 454 if (!pmVisualIsVisual()) return true; 455 456 // skip if we have already opened the windows (or if none are requested...) 457 if (kapa != -1) return true; 458 459 pmVisualInitWindow(&kapa, "ppmerge"); 460 return true; 461 } 462 463 bool pmReadoutCombineVisualPixels(psVector *pixels, psVector *mask, float mean) { 464 465 Graphdata graphdata; 466 float xline[2], yline[2]; 467 468 if (!pmVisualIsVisual()) return true; 469 470 if (!plotFlag) return true; 471 472 KapaInitGraph(&graphdata); 473 474 psVector *xAll = psVectorAlloc(pixels->n, PS_TYPE_F32); 475 psVector *xSub = psVectorAlloc(pixels->n, PS_TYPE_F32); 476 psVector *ySub = psVectorAlloc(pixels->n, PS_TYPE_F32); 477 478 // generate vectors of the unmasked values 479 int nSub = 0; 480 for (int j = 0; j < pixels->n; j++) { 481 xAll->data.F32[j] = j; 482 if (mask && mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) continue; 483 xSub->data.F32[nSub] = j; 484 ySub->data.F32[nSub] = pixels->data.F32[j]; 485 nSub ++; 486 } 487 xSub->n = ySub->n = nSub; 488 xAll->n = pixels->n; 489 490 xline[0] = 0; 491 xline[1] = pixels->n; 492 yline[0] = mean; 493 yline[1] = mean; 494 495 // plot the unmasked values 496 pmVisualScaleGraphdata (&graphdata, xAll, pixels, false); 497 KapaSetGraphData(kapa, &graphdata); 498 KapaSetLimits(kapa, &graphdata); 499 KapaClearPlots (kapa); 500 501 KapaSetFont (kapa, "courier", 14); 502 KapaBox (kapa, &graphdata); 503 KapaSendLabel (kapa, "ordinate", KAPA_LABEL_XM); 504 KapaSendLabel (kapa, "pixel values", KAPA_LABEL_YM); 505 506 graphdata.color = KapaColorByName("black"); 507 graphdata.style = 2; 508 graphdata.ptype = 2; 509 KapaPrepPlot (kapa, xSub->n, &graphdata); 510 KapaPlotVector(kapa, xSub->n, xSub->data.F32, "x"); 511 KapaPlotVector(kapa, xSub->n, ySub->data.F32, "y"); 512 513 graphdata.color = KapaColorByName("red"); 514 graphdata.style = 2; 515 graphdata.ptype = 7; 516 KapaPrepPlot (kapa, xAll->n, &graphdata); 517 KapaPlotVector(kapa, xAll->n, xAll->data.F32, "x"); 518 KapaPlotVector(kapa, xAll->n, pixels->data.F32, "y"); 519 520 graphdata.color = KapaColorByName("blue"); 521 graphdata.style = 0; 522 graphdata.ptype = 7; 523 KapaPrepPlot (kapa, 2, &graphdata); 524 KapaPlotVector(kapa, 2, xline, "x"); 525 KapaPlotVector(kapa, 2, yline, "y"); 526 527 pmVisualAskUser (&plotFlag); 528 return true; 529 } 530 531 bool pmReadoutCombineVisualCleanup(void) { 532 533 if (!pmVisualIsVisual()) return true; 534 if (kapa == -1) return true; 535 536 KapaClose(kapa); 537 return true; 538 } 539 540 # else 541 542 bool pmReadoutCombineVisualInit(void) { return true; } 543 bool pmReadoutCombineVisualPixels(psVector *pixels, psVector *mask, float mean) { return true; } 544 bool pmReadoutCombineVisualCleanup(void) { return true; } 545 546 # endif
Note:
See TracChangeset
for help on using the changeset viewer.
