package net.semanticmetadata.lire.imageanalysis.features;
import junit.framework.TestCase;
import net.semanticmetadata.lire.imageanalysis.features.global.COMO;
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 COMO .. or actually any global feature .. implementation in LIRE.
*
* @author Mathias Lux, mathias@juggle.at, Date: 27.02. 2017.
*/
public class TestGlobalFeature extends TestCase {
GlobalFeature gFeat = new COMO();
public void testExtraction() throws IOException, IllegalAccessException, InstantiationException {
ArrayList<File> imageFiles = FileUtils.getAllImageFiles(new File("src/test/resources/images"), true);
GlobalFeature accid = gFeat.getClass().newInstance();
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, IllegalAccessException, InstantiationException {
ArrayList<File> imageFiles = FileUtils.getAllImageFiles(new File("src/test/resources/images"), true);
LinkedList<GlobalFeature> features = new LinkedList<>();
for (Iterator<File> iterator = imageFiles.iterator(); iterator.hasNext(); ) {
File nextImage = iterator.next();
GlobalFeature accid = gFeat.getClass().newInstance();
accid.extract(ImageIO.read(nextImage));
features.add(accid);
assertEquals(accid.getDistance(accid), 0d);
}
}
public void testSerialization() throws IOException, IllegalAccessException, InstantiationException {
ArrayList<File> imageFiles = FileUtils.getAllImageFiles(new File("src/test/resources/images"), true);
GlobalFeature accid = gFeat.getClass().newInstance();
for (Iterator<File> iterator = imageFiles.iterator(); iterator.hasNext(); ) {
File nextImage = iterator.next();
accid.extract(ImageIO.read(nextImage));
GlobalFeature a2 = gFeat.getClass().newInstance();
a2.setByteArrayRepresentation(accid.getByteArrayRepresentation());
assertEquals(a2.getDistance(accid), 0d);
}
}
}