您的位置:首页 > 其它

直线目标检测技术

2016-04-01 13:15 344 查看

Boofcv研究:直线目标检测

public class LineDetection {

private static final float edgeThreshold = 25;
private static final int maxLines = 10;

private static ListDisplayPanel listPanel = new ListDisplayPanel();

public static<T extends ImageGray, D extends ImageGray>
void detectLines( BufferedImage image ,
Class<T> imageType ,
Class<D> derivType )
{
T input = ConvertBufferedImage.convertFromSingle(image, null, imageType );

DetectLineHoughPolar<T,D> detector = FactoryDetectLineAlgs.houghPolar(
new ConfigHoughPolar(3, 30, 2, Math.PI / 180,edgeThreshold, maxLines), imageType, derivType);

List<LineParametric2D_F32> found = detector.detect(input);

ImageLinePanel gui = new ImageLinePanel();
gui.setBackground(image);
gui.setLines(found);
gui.setPreferredSize(new Dimension(image.getWidth(),image.getHeight()));

listPanel.addItem(gui, "Found Lines");
}

public static<T extends ImageGray, D extends ImageGray>
void detectLineSegments( BufferedImage image ,
Class<T> imageType ,
Class<D> derivType )
{
T input = ConvertBufferedImage.convertFromSingle(image, null, imageType );

DetectLineSegmentsGridRansac<T,D> detector = FactoryDetectLineAlgs.lineRansac(40, 30, 2.36, true, imageType, derivType);

List<LineSegment2D_F32> found = detector.detect(input);

ImageLinePanel gui = new ImageLinePanel();
gui.setBackground(image);
gui.setLineSegments(found);
gui.setPreferredSize(new Dimension(image.getWidth(),image.getHeight()));

listPanel.addItem(gui, "Found Line Segments");
}

public static void main( String args[] ) {
BufferedImage input = UtilImageIO.loadImage(UtilIO.pathExample("D:\\JavaProject\\Boofcv\\example\\simple_objects.jpg"));

detectLines(input, GrayU8.class, GrayS16.class);

detectLineSegments(input, GrayF32.class, GrayF32.class);

ShowImages.showWindow(listPanel, "Detected Lines", true);
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: