/* * Copyright (c) 2011-2016, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package boofcv.abst.feature.tracker; import boofcv.abst.feature.detdesc.DetectDescribePoint; import boofcv.struct.feature.TupleDesc; import boofcv.struct.image.ImageGray; import georegression.struct.point.Point2D_F64; import org.ddogleg.struct.FastQueue; /** * <p> * Implementation of {@link DdaFeatureManager} which uses the {@link DetectDescribePoint} interface for extracting * features from an image. * </p> * * @author Peter Abeles */ public class DdaManagerDetectDescribePoint<I extends ImageGray, Desc extends TupleDesc> implements DdaFeatureManager<I, Desc> { // Feature detector and describer protected DetectDescribePoint<I, Desc> detDesc; /** * Configures tracker * * @param detDesc Feature detector and descriptor */ public DdaManagerDetectDescribePoint(final DetectDescribePoint<I, Desc> detDesc) { this.detDesc = detDesc; } @Override public void detectFeatures(I input, FastQueue<Point2D_F64> locDst, FastQueue<Desc> featDst) { detDesc.detect(input); int N = detDesc.getNumberOfFeatures(); for( int i = 0; i < N; i++ ) { locDst.add( detDesc.getLocation(i) ); featDst.add( detDesc.getDescription(i) ); } } @Override public Desc createDescription() { return detDesc.createDescription(); } @Override public Class<Desc> getDescriptionType() { return detDesc.getDescriptionType(); } }