use of net.imglib2.roi.geom.real.Polygon2D in project imagej-ops by imagej.
the class PolygonFeatureTests method labelRegionToPolygonConverter.
@Test
public void labelRegionToPolygonConverter() {
// ground truth computed with matlab
final LabelRegionToPolygonConverter c = new LabelRegionToPolygonConverter();
c.setContext(ops.context());
final Polygon2D test = c.convert(ROI, Polygon2D.class);
final List<? extends RealLocalizable> expected = GeomUtils.vertices(contour);
final List<? extends RealLocalizable> received = GeomUtils.vertices(test);
assertEquals("Number of polygon points differs.", expected.size(), received.size());
for (int i = 0; i < contour.numVertices(); i++) {
assertEquals("Polygon point " + i + " differs in x-coordinate.", expected.get(i).getDoublePosition(0), received.get(i).getDoublePosition(0), EPSILON);
assertEquals("Polygon point " + i + " differs in y-coordinate.", expected.get(i).getDoublePosition(1), received.get(i).getDoublePosition(1), EPSILON);
}
}
use of net.imglib2.roi.geom.real.Polygon2D in project imagej-ops by imagej.
the class PolygonFeatureTests method smallesEnclosingRectangle.
@Test
public void smallesEnclosingRectangle() {
// ground truth verified with matlab
final List<? extends RealLocalizable> received = GeomUtils.vertices(((Polygon2D) ops.run(DefaultSmallestEnclosingRectangle.class, contour)));
final RealPoint[] expected = new RealPoint[] { new RealPoint(37.229184188393, -0.006307821699), new RealPoint(-14.757779646762, 27.800672834315), new RealPoint(31.725820016821, 114.704793944491), new RealPoint(83.712783851976, 86.897813288478) };
assertEquals("Number of polygon points differs.", expected.length, received.size());
for (int i = 0; i < expected.length; i++) {
assertEquals("Polygon point " + i + " differs in x-coordinate.", expected[i].getDoublePosition(0), received.get(i).getDoublePosition(0), EPSILON);
assertEquals("Polygon point " + i + " differs in y-coordinate.", expected[i].getDoublePosition(1), received.get(i).getDoublePosition(1), EPSILON);
}
}
use of net.imglib2.roi.geom.real.Polygon2D in project imagej-ops by imagej.
the class PolygonFeatureTests method convexHull2D.
@Test
public void convexHull2D() {
// ground truth computed with matlab
final Polygon2D test = (Polygon2D) ops.run(DefaultConvexHull2D.class, contour);
final List<? extends RealLocalizable> received = GeomUtils.vertices(test);
final RealPoint[] expected = new RealPoint[] { new RealPoint(1, 30), new RealPoint(2, 29), new RealPoint(26, 6), new RealPoint(31, 6), new RealPoint(42, 9), new RealPoint(49, 22), new RealPoint(72, 65), new RealPoint(78, 77), new RealPoint(48, 106), new RealPoint(42, 109), new RealPoint(34, 109), new RealPoint(28, 106), new RealPoint(26, 104), new RealPoint(23, 98) };
assertEquals("Number of polygon points differs.", expected.length, received.size());
for (int i = 0; i < expected.length; i++) {
assertEquals("Polygon point " + i + " differs in x-coordinate.", expected[i].getDoublePosition(0), received.get(i).getDoublePosition(0), EPSILON);
assertEquals("Polygon point " + i + " differs in y-coordinate.", expected[i].getDoublePosition(1), received.get(i).getDoublePosition(1), EPSILON);
}
}
use of net.imglib2.roi.geom.real.Polygon2D in project imagej-ops by imagej.
the class PolygonFeatureTests method contour.
@Test
public void contour() {
// ground truth computed with matlab
final Polygon2D test = (Polygon2D) ops.run(DefaultContour.class, ROI, true);
final List<? extends RealLocalizable> expected = GeomUtils.vertices(contour);
final List<? extends RealLocalizable> received = GeomUtils.vertices(test);
assertEquals("Number of polygon points differs.", expected.size(), received.size());
for (int i = 0; i < contour.numVertices(); i++) {
assertEquals("Polygon point " + i + " differs in x-coordinate.", expected.get(i).getDoublePosition(0), received.get(i).getDoublePosition(0), EPSILON);
assertEquals("Polygon point " + i + " differs in y-coordinate.", expected.get(i).getDoublePosition(1), received.get(i).getDoublePosition(1), EPSILON);
}
}
use of net.imglib2.roi.geom.real.Polygon2D in project imagej-ops by imagej.
the class DefaultSizePolygon method compute.
@Override
public void compute(Polygon2D input, DoubleType output) {
double sum = 0;
final int numVertices = input.numVertices();
for (int i = 0; i < numVertices; i++) {
final RealLocalizable p0 = input.vertex(i);
final RealLocalizable p1 = input.vertex((i + 1) % numVertices);
final double p0_x = p0.getDoublePosition(0);
final double p0_y = p0.getDoublePosition(1);
final double p1_x = p1.getDoublePosition(0);
final double p1_y = p1.getDoublePosition(1);
sum += p0_x * p1_y - p0_y * p1_x;
}
output.set(Math.abs(sum) / 2d);
}
Aggregations