/* * Copyright 2010, 2011 Institut Pasteur. * * This file is part of NHerve Main Toolbox, which is an ICY plugin. * * NHerve Main Toolbox is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NHerve Main Toolbox is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NHerve Main Toolbox. If not, see <http://www.gnu.org/licenses/>. */ package plugins.nherve.toolbox.image.feature.descriptor; import plugins.nherve.toolbox.image.feature.IcySupportRegion; import plugins.nherve.toolbox.image.feature.Segmentable; import plugins.nherve.toolbox.image.feature.Signature; import plugins.nherve.toolbox.image.feature.SignatureExtractor; import plugins.nherve.toolbox.image.feature.region.IcyPixel; import plugins.nherve.toolbox.image.feature.signature.SignatureException; /** * The Class StandardSignatureExtractor. * * @param <T> * the generic type * @author Nicolas HERVE - nicolas.herve@pasteur.fr */ public class StandardSignatureExtractor<T extends Segmentable> extends SignatureExtractor<T> { /** * Instantiates a new standard signature extractor. * * @param descriptor * the descriptor */ public StandardSignatureExtractor(DefaultDescriptorImpl<T, ? extends Signature> descriptor) { super(descriptor); } /* (non-Javadoc) * @see plugins.nherve.toolbox.image.feature.SignatureExtractor#extractSignatures(plugins.nherve.toolbox.image.feature.Segmentable, plugins.nherve.toolbox.image.feature.SupportRegion[], boolean) */ @SuppressWarnings("unchecked") public Signature[] extractSignatures(T img, IcySupportRegion[] regions, boolean doPreprocess) throws SignatureException { if (!(getDescriptor() instanceof LocalDescriptor)) { throw new SignatureException("Unable to extract a local signatures with this descriptor"); } LocalDescriptor<T, ? extends Signature, IcyPixel> ld = (LocalDescriptor<T, ? extends Signature, IcyPixel>) getDescriptor(); log("StandardSignatureExtractor - Launching " + regions.length + " signatures extraction ..."); Signature[] result = new Signature[regions.length]; if (doPreprocess) { getDescriptor().preProcess(img); } for (int i = 0; i < regions.length; i++) { result[i] = ld.extractLocalSignature(img, regions[i]); } if (doPreprocess) { getDescriptor().postProcess(img); } return result; } }