package net.semanticmetadata.lire.imageanalysis.features;
import junit.framework.TestCase;
import net.semanticmetadata.lire.imageanalysis.features.global.ACCID;
import net.semanticmetadata.lire.imageanalysis.features.global.centrist.SimpleCentrist;
import net.semanticmetadata.lire.imageanalysis.features.global.centrist.SpatialPyramidCentrist;
import net.semanticmetadata.lire.utils.FileUtils;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
/**
* Test class for the Centrist implementation in LIRE.
*
* @author Mathias Lux, mathias@juggle.at, Date: 18.06.2015.
*/
public class TestACCID extends TestCase {
public void testExtraction() throws IOException {
ArrayList<File> imageFiles = FileUtils.getAllImageFiles(new File("src/test/resources/images"), true);
ACCID accid = new ACCID();
for (Iterator<File> iterator = imageFiles.iterator(); iterator.hasNext(); ) {
File nextImage = iterator.next();
accid.extract(ImageIO.read(nextImage));
System.out.println(nextImage.getName() + ": " + Arrays.toString(accid.getFeatureVector()));
}
}
public void testDistance() throws IOException {
ArrayList<File> imageFiles = FileUtils.getAllImageFiles(new File("src/test/resources/images"), true);
LinkedList<ACCID> features = new LinkedList<>();
for (Iterator<File> iterator = imageFiles.iterator(); iterator.hasNext(); ) {
File nextImage = iterator.next();
ACCID accid = new ACCID();
accid.extract(ImageIO.read(nextImage));
features.add(accid);
assertEquals(accid.getDistance(accid), 0d);
}
}
public void testSerialization() throws IOException {
ArrayList<File> imageFiles = FileUtils.getAllImageFiles(new File("src/test/resources/images"), true);
ACCID accid = new ACCID();
for (Iterator<File> iterator = imageFiles.iterator(); iterator.hasNext(); ) {
File nextImage = iterator.next();
accid.extract(ImageIO.read(nextImage));
ACCID a2 = new ACCID();
a2.setByteArrayRepresentation(accid.getByteArrayRepresentation());
assertEquals(a2.getDistance(accid), 0d);
}
}
public void testConversion() {
short s = 2435;
byte x = (byte) ((s >> 8) & 0xff);
System.out.println(x);
byte y = (byte) (s);
System.out.println((short) y);
System.out.println((x << 8) | y & 0xff);
}
}