Boofcv研究:感兴趣区域检测技术
public class InterestPoint {
public static <T extends ImageGray>
void detect ( BufferedImage image , Class<T> imageType ) {
T input = ConvertBufferedImage.convertFromSingle(image, null , imageType);
InterestPointDetector<T> detector = FactoryInterestPoint.fastHessian(
new ConfigFastHessian(10 , 2 , 100 , 2 , 9 , 3 , 4 ));
detector.detect(input);
displayResults(image, detector);
}
private static <T extends ImageGray>
void displayResults (BufferedImage image, InterestPointDetector<T> detector)
{
Graphics2D g2 = image.createGraphics();
FancyInterestPointRender render = new FancyInterestPointRender();
for ( int i = 0 ; i < detector.getNumberOfFeatures(); i++ ) {
Point2D_F64 pt = detector.getLocation(i);
if ( detector.hasScale() ) {
int radius = (int )(detector.getRadius(i));
render.addCircle((int )pt.x,(int )pt.y,radius);
} else {
render.addPoint((int ) pt.x, (int ) pt.y);
}
}
g2.setStroke(new BasicStroke(3 ));
render.draw(g2);
ShowImages.showWindow(image, "Detected Features" , true );
}
public static void main ( String args[] ) {
BufferedImage image = UtilImageIO.loadImage(UtilIO.pathExample("D:\\JavaProject\\Boofcv\\example\\sunflowers.jpg" ));
detect(image, GrayF32.class);
}
}