使用Hough Transform中的投票找到最合适的线条

时间:2018-04-09 02:28:33

标签: python opencv computer-vision

我试图在图像中找到对象的轮廓。应用Canny边缘检测后,我使用Hough变换来查找线条(假设对象只有直线)。我故意使用一个小门槛,所以我可以得到很多候选人,并选择最合适的。例如:

enter image description here

显然,这已经足够了。目前,我使用以下代码,该代码保留了每个行集群中检测到的第一行。

n2 = 0
strong_lines = np.zeros([10000,1,2])
for n1 in range(0,len(lines)):
    for rho,theta in lines[n1]:
        if n1 == 0:
            strong_lines[n2] = lines[n1]
            n2 = n2 + 1
        else:
            closeness_rho = np.isclose(rho,strong_lines[0:n2,0,0], atol = 50)
            closeness_theta = np.isclose(theta,strong_lines[0:n2,0,1], atol = np.pi/18)
            closeness = np.all([closeness_rho,closeness_theta], axis=0)
            if not any(closeness):
                strong_lines[n2] = lines[n1]
                n2 = n2 + 1

enter image description here

如您所见,保留的线条不是最合适的线条,因为它只保留检测到的第一条线并抛弃附近的线条。

我在想的是,我不想保留检测到的第一行,而是比较此群集中每一行的Hough Transform 的投票,而保留该行的行大多数选票

可悲的是,OpenCV中的Hough Transform功能并不能提供每行的精确投票。有什么方法可以解决这个问题,或者你对此有什么更好的认识?非常感谢你:))

0 个答案:

没有答案