在opencv中找到轮廓的长寿

时间:2014-03-24 09:29:18

标签: opencv contour ellipse

我想检测嘈杂图像中的小直线。为此我

- find contours in an image, 
- fit an ellipse on it 
- and get the height by width ratio. 
- If this ratio exceeds a certain threshold, I declare it as line segment. 

这种方法大部分时间都可以正常工作。但在某些情况下(根据一些文档,当轮廓自相交时),fitEllipse会给出错误的结果。还有其他方法,我可以确定轮廓的寿命吗?我不打算使用Hough Lines。

1 个答案:

答案 0 :(得分:0)

从轮廓点生长线的一种方法是在检查线直线度的同时跟踪轮廓上的像素。在每个新像素处,您可以估算到覆盖轮廓的最长距离以及连接轮廓开始和当前轮廓点的直线。当此距离超过阈值时,您将停止生长线。在下图中,线条为红色,轮廓为黑色,距离为绿色。

在您的情况下(因为您没有生长线),您需要做的就是连接两个轮廓终端,然后扫描轮廓以获得到线的所有距离并选择最大的一个。将其与您的阈值进行比较,以确定细分的线性度。

enter image description here

以下是如何找到从点x,y到线轴+ + + c = 0的距离,或者如下所示的两点定义的线:link