MCPcopy Create free account
hub / github.com/AstroImageJ/astroimagej / getIrregularProfile

Method getIrregularProfile

ij/src/main/java/ij/plugin/Slicer.java:535–574  ·  view source on GitHub ↗
(Roi roi, ImageProcessor ip)

Source from the content-addressed store, hash-verified

533 }
534
535 float[] getIrregularProfile(Roi roi, ImageProcessor ip) {
536 if (x==null)
537 doIrregularSetup(roi);
538 float[] values = new float[(int)length];
539 double leftOver = 1.0;
540 double distance = 0.0;
541 int index;
542 double oldx=xbase, oldy=ybase;
543 for (int i=0; i<n; i++) {
544 double len = segmentLengths[i];
545 if (len==0.0)
546 continue;
547 double xinc = dx[i]/len;
548 double yinc = dy[i]/len;
549 double start = 1.0-leftOver;
550 double rx = xbase+x[i]+start*xinc;
551 double ry = ybase+y[i]+start*yinc;
552 double len2 = len - start;
553 int n2 = (int)len2;
554 for (int j=0; j<=n2; j++) {
555 index = (int)distance+j;
556 if (index<values.length) {
557 if (notFloat)
558 values[index] = (float)ip.getInterpolatedPixel(rx, ry);
559 else if (rgb) {
560 int rgbPixel = ((ColorProcessor)ip).getInterpolatedRGBPixel(rx, ry);
561 values[index] = Float.intBitsToFloat(rgbPixel&0xffffff);
562 } else
563 values[index] = (float)ip.getInterpolatedValue(rx, ry);
564 }
565 rx += xinc;
566 ry += yinc;
567 }
568 distance += len;
569 leftOver = len2 - n2;
570 }
571
572 return values;
573
574 }
575
576 void doIrregularSetup(Roi roi) {
577 n = ((PolygonRoi)roi).getNCoordinates();

Callers 1

getSliceMethod · 0.95

Calls 4

doIrregularSetupMethod · 0.95
getInterpolatedValueMethod · 0.80
getInterpolatedPixelMethod · 0.45

Tested by

no test coverage detected