Search in sources :

Example 6 with ImagePixelGrabber

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);
        }
    }
}
Also used : Config(com.typesafe.config.Config) BufferedImage(java.awt.image.BufferedImage) ImagePixelGrabber(com.joliciel.jochre.utils.graphics.ImagePixelGrabber) JochreSession(com.joliciel.jochre.JochreSession) Test(org.junit.Test)

Example 7 with ImagePixelGrabber

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);
        }
    }
}
Also used : Config(com.typesafe.config.Config) BufferedImage(java.awt.image.BufferedImage) ImagePixelGrabber(com.joliciel.jochre.utils.graphics.ImagePixelGrabber) JochreSession(com.joliciel.jochre.JochreSession) Test(org.junit.Test)

Aggregations

JochreSession (com.joliciel.jochre.JochreSession)7 ImagePixelGrabber (com.joliciel.jochre.utils.graphics.ImagePixelGrabber)7 Config (com.typesafe.config.Config)7 BufferedImage (java.awt.image.BufferedImage)7 Test (org.junit.Test)7