package de.lmu.ifi.dbs.jfeaturelib.features; import de.lmu.ifi.dbs.jfeaturelib.features.PHOG; import de.lmu.ifi.dbs.jfeaturelib.LibProperties; import ij.process.ColorProcessor; import ij.process.ImageProcessor; import java.awt.Color; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.List; import javax.imageio.ImageIO; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; /** * @author Franz */ public class PhogTest { @Test public void testSetProperties() throws Exception { PHOG phog = new PHOG(); LibProperties props = LibProperties.get(); props.setProperty(LibProperties.PHOG_CANNY, true); phog.setProperties(props); assertTrue(phog.useCanny); props.setProperty(LibProperties.PHOG_CANNY, false); phog.setProperties(props); assertFalse(phog.useCanny); } @Test public void testRun0() throws IOException, URISyntaxException { LibProperties props = LibProperties.get(); assertNotNull(props); props.setProperty(LibProperties.PHOG_CANNY, true); props.setProperty(LibProperties.PHOG_RECURSIONS, 0); props.setProperty(LibProperties.PHOG_BINS, 4); ImageProcessor ip = new ColorProcessor(100, 100); ip.setColor(Color.yellow); ip.drawLine(0, 0, 99, 99); PHOG phog = new PHOG(); phog.setProperties(props); phog.run(ip); List<double[]> features = phog.getFeatures(); assertEquals(1, features.size()); assertEquals(4, features.get(0).length); assertFalse(Double.isNaN(features.get(0)[0])); } @Test public void testRun1() throws IOException, URISyntaxException { File url = new File("src/test/resources/test.jpg"); LibProperties props = LibProperties.get(); assertNotNull(props); props.setProperty(LibProperties.PHOG_CANNY, true); PHOG phog = new PHOG(); phog.setProperties(props); ImageProcessor src = new ColorProcessor(ImageIO.read(url)); ImageProcessor ip = src.duplicate(); phog.applyCanny(ip); // just check first line int diff = 0; for (int i = 0; i < ip.getWidth(); i++) { diff += ip.get(i) != src.get(i) ? 1 : 0; } assertTrue("no more than 5 pixels different", diff > 5); assertFalse(0 == src.get(0)); assertFalse(ip.get(0) == src.get(0)); } }