Changeset 24907 for trunk/psModules/src/imcombine/pmReadoutCombine.c
- Timestamp:
- Jul 22, 2009, 10:50:27 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/imcombine/pmReadoutCombine.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmReadoutCombine.c
r24791 r24907 281 281 #endif 282 282 283 // set up windows for visualization (if selected) 284 pmReadoutCombineVisualInit(); 285 283 286 // Dereference output products 284 287 psF32 **outputImage = output->image->data.F32; // Output image … … 397 400 outputImage[yOut][xOut] = psStatsGetValue(stats, params->combine); 398 401 402 if (!isfinite(outputImage[yOut][xOut])) { 403 pmReadoutCombineVisualPixels(pixels, mask, outputImage[yOut][xOut]); 404 } 405 399 406 if (isnan(outputImage[yOut][xOut])) { 400 407 outputImage[yOut][xOut] = NAN; … … 434 441 } 435 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.
