use of com.joliciel.jochre.utils.graphics.ImagePixelGrabber in project jochre by urieli.
the class ShapeImplTest method testGetBrightnessTotalsBySectorMidPixelBreaks.
@Test
public void testGetBrightnessTotalsBySectorMidPixelBreaks() throws Exception {
System.setProperty("config.file", "src/test/resources/test.conf");
ConfigFactory.invalidateCaches();
Config config = ConfigFactory.load();
JochreSession jochreSession = new JochreSession(config);
Shape shape = new Shape(jochreSession);
final int top = 0;
final int bottom = 7;
final int left = 0;
final int right = 5;
int[] pixels = new int[] { // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, 245, 245, 245, 245, 245, 245 };
ImagePixelGrabber pixelGrabber = new ImagePixelGrabberMock(pixels, right - left + 1, bottom - top + 1);
final GroupOfShapes group = mock(GroupOfShapes.class);
final RowOfShapes row = mock(RowOfShapes.class);
final Paragraph paragraph = mock(Paragraph.class);
final JochreImage image = mock(JochreImage.class);
final BufferedImage shapeImage = mock(BufferedImage.class);
when(group.getId()).thenReturn(1);
when(group.getRow()).thenReturn(row);
when(row.getParagraph()).thenReturn(paragraph);
when(paragraph.getImage()).thenReturn(image);
when(image.normalize(anyInt())).then(returnsFirstArg());
when(image.isLeftToRight()).thenReturn(true);
shape.setPixelGrabber(pixelGrabber);
shape.setGroup(group);
shape.setTop(0);
shape.setBottom(7);
shape.setLeft(0);
shape.setRight(5);
shape.setMeanLine(1);
shape.setBaseLine(6);
shape.setImage(shapeImage);
double[][] totals = shape.getBrightnessBySection(5, 5, 1, SectionBrightnessMeasurementMethod.RAW);
LOG.debug("Pixels:");
for (int y = 0; y < shape.getHeight(); y++) {
String pixelsStr = "";
for (int x = 0; x < shape.getWidth(); x++) {
pixelsStr += shape.getPixel(x, y) + ",";
}
LOG.debug(pixelsStr);
}
LOG.debug("Brightness totals by sector:");
for (int y = 0; y < totals[0].length; y++) {
String brightnessTotalsStr = "";
for (int x = 0; x < totals.length; x++) {
brightnessTotalsStr += totals[x][y] + ",";
}
LOG.debug(brightnessTotalsStr);
}
for (int y = 0; y < totals[0].length; y++) {
for (int x = 0; x < totals.length; x++) {
double expected = 360.0 / 25.0;
if (y == 0 || y == totals[0].length - 1)
expected = 60.0 / 5.0;
assertEquals("For x=" + x + ",y=" + y + " expected " + expected + " but was " + totals[x][y], expected, totals[x][y], 0.1);
}
}
}
use of com.joliciel.jochre.utils.graphics.ImagePixelGrabber in project jochre by urieli.
the class ShapeImplTest method testGetBrightnessTotalsBySectorWithSquare.
@Test
public void testGetBrightnessTotalsBySectorWithSquare() throws Exception {
System.setProperty("config.file", "src/test/resources/test.conf");
ConfigFactory.invalidateCaches();
Config config = ConfigFactory.load();
JochreSession jochreSession = new JochreSession(config);
Shape shape = new Shape(jochreSession);
final int top = 0;
final int bottom = 5;
final int left = 0;
final int right = 5;
int[] pixels = new int[] { // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245, // row
245 };
ImagePixelGrabber pixelGrabber = new ImagePixelGrabberMock(pixels, right - left + 1, bottom - top + 1);
final GroupOfShapes group = mock(GroupOfShapes.class);
final RowOfShapes row = mock(RowOfShapes.class);
final Paragraph paragraph = mock(Paragraph.class);
final JochreImage image = mock(JochreImage.class);
final BufferedImage shapeImage = mock(BufferedImage.class);
when(group.getId()).thenReturn(1);
when(group.getRow()).thenReturn(row);
when(row.getParagraph()).thenReturn(paragraph);
when(paragraph.getImage()).thenReturn(image);
when(image.normalize(anyInt())).then(returnsFirstArg());
when(image.isLeftToRight()).thenReturn(true);
shape.setPixelGrabber(pixelGrabber);
shape.setGroup(group);
shape.setTop(0);
shape.setBottom(5);
shape.setLeft(0);
shape.setRight(5);
shape.setMeanLine(1);
shape.setBaseLine(4);
shape.setImage(shapeImage);
double[][] totals = shape.getBrightnessBySection(6, 8, 0.5, 0.5, SectionBrightnessMeasurementMethod.RAW);
LOG.debug("Pixels:");
for (int y = 0; y < shape.getHeight(); y++) {
String pixelsStr = "";
for (int x = -1; x < shape.getWidth(); x++) {
pixelsStr += shape.getPixelInShape(x, y) + ",";
}
LOG.debug(pixelsStr);
}
LOG.debug("Brightness totals by sector:");
for (int y = 0; y < totals[0].length; y++) {
String brightnessTotalsStr = "";
for (int x = 0; x < totals.length; x++) {
brightnessTotalsStr += totals[x][y] + ",";
}
LOG.debug(brightnessTotalsStr);
}
for (int y = 0; y < totals[0].length; y++) {
for (int x = 0; x < totals.length; x++) {
double expected = 160.0 / 16.0;
if (y < 1)
expected = 0.0;
else if (y > 6)
expected = 0;
assertEquals("For x=" + x + ",y=" + y + " expected " + expected + " but was " + totals[x][y], expected, totals[x][y], 0.1);
}
}
}
Aggregations