DoGColourSIFTEngine implements Engine<Keypoint, MBFImage> { @Override public LocalFeatureList<Keypoint> findFeatures(MBFImage image) { FImage luminance = ColourSpace.convert(image, ColourSpace.LUMINANCE_NTSC).bands.get(0); return findFeatures(image, luminance); } DoGColourSIFTEngine();  DoGColourSIFTEngine(DoGSIFTEngineOptions<MBFImage> options); @Override LocalFeatureList<Keypoint> findFeatures(MBFImage image); LocalFeatureList<Keypoint> findFeatures(MBFImage image, FImage luminance); DoGSIFTEngineOptions<MBFImage> getOptions();  }
@Test public void testMatching() { DoGColourSIFTEngine engine = new DoGColourSIFTEngine(); LocalFeatureList<Keypoint> kpts1 = engine.findFeatures(im1); LocalFeatureList<Keypoint> kpts2 = engine.findFeatures(im2); LocalFeatureList<Keypoint> kpts3 = engine.findFeatures(im3); BasicMatcher<Keypoint> bm = new BasicMatcher<Keypoint>(8); bm.setModelFeatures(kpts1); bm.findMatches(kpts1); assertEquals(kpts1.size(), bm.getMatches().size()); bm.findMatches(kpts2); assertEquals(0, bm.getMatches().size()); bm.findMatches(kpts3); assertEquals(0, bm.getMatches().size()); }