/* * Load two input files and use adapters to obtain corresponding ImageObject objects. * These objects are the basis of the metric calculations. * * Thus, we could say that these metrics operate upon "pixel features". * * There does not yet seem to be a "pixel adapter" (which would amount to a kind of * "pixel 'pass-through'). To conform to the adapter/descriptor/measure pattern, we * will implement such a minimal adapter and also relocate relevant parts of this code into * those respective components. */ public Vector load(File f1, File f2) { Vector<ImageObject> v = new Vector(); ImageObjectAdapter a1 = new ImageObjectAdapter(); ImageObjectAdapter a2 = new ImageObjectAdapter(); try { a1.load(f1); a2.load(f2); } catch (IOException e) { e.printStackTrace(); return null; } v.addElement(a1.getImageObject()); v.addElement(a2.getImageObject()); return v; }
public static SimilarityNumber unlabeled(String fileName1, String fileName2) throws Exception { // unlabeled case: whole image (no labels) ImageObjectAdapter a1 = new ImageObjectAdapter(); if (a1 == null) throw new SWIndependenceException("failed to create ImageObjectAdapter adapter for file1"); ImageObjectAdapter a2 = new ImageObjectAdapter(); if (a2 == null) throw new SWIndependenceException("failed to create ImageObjectAdapter adapter for file2"); SimilarityNumber result = null; try { File f1 = new File(fileName1); if (f1 == null) throw new ImageCompatibilityException("failed to create file object for file1"); File f2 = new File(fileName2); if (f2 == null) throw new ImageCompatibilityException("failed to create file object for file2"); a1.load(f1); if (a1 == null) throw new SWIndependenceException("failed to load file1 into adapter1"); a2.load(f2); if (a2 == null) throw new SWIndependenceException("failed to load file2 into adapter2"); ArrayFeatureExtractor x1 = new ArrayFeatureExtractor(); if (x1 == null) throw new SWIndependenceException( "failed to create ArrayFeatureExtractor object for extractor1"); ArrayFeatureExtractor x2 = new ArrayFeatureExtractor(); if (x2 == null) throw new SWIndependenceException( "failed to create ArrayFeatureExtractor object for extractor2"); ThreeDimensionalDoubleArrayFeature desc1 = (ThreeDimensionalDoubleArrayFeature) x1.extract(a1); if (desc1 == null) throw new SWIndependenceException( "failed to extract ThreeDimensionalDoubleArrayFeature feature1 via extractor1"); ThreeDimensionalDoubleArrayFeature desc2 = (ThreeDimensionalDoubleArrayFeature) x2.extract(a2); if (desc2 == null) throw new SWIndependenceException( "failed to extract ThreeDimensionalDoubleArrayFeature feature2 via extractor2"); AdjustedRandIndexMeasure m = new AdjustedRandIndexMeasure(); if (m == null) throw new SWIndependenceException( "failed to create AdjustedRandIndexMeasure object for measure"); result = m.compare(desc1, desc2); if (result == null) throw new SingularityTreatmentException("received null comparison result"); String SEP = ","; String rString = fileName1 + SEP + fileName2 + SEP + "ImageObjectAdapter" + SEP + "ThreeDimensionalDoubleArrayFeature" + SEP + "AdjustedRandIndexMeasure" + SEP + result.getValue(); System.out.println(rString); } catch (IOException e) { throw new SWIndependenceException("failed to load file via adapter into memory"); } return result; }