【发布时间】:2014-10-28 21:46:31
【问题描述】:
我一直在使用 Python 和 numpy 实现用于线检测的标准 Hough 变换。
我已成功实现该算法,但它的输出将生成的正弦曲线分成两半。一半在结果图像的一个极端,其余在图像的另一部分。
这是我得到的输出示例:
这是我的代码:
def houghTransf(img, r_ro, r_theta,thrs):
linhas, colunas =img.shape
theta = np.linspace(0.0,180.0,np.ceil(180.0/r_theta)+1)
max_rho = np.sqrt((linhas**2)+(colunas**2))
rho = np.linspace(0.0,max_rho,np.ceil(max_rho/r_ro)+1)
res = np.zeros((len(theta),len(rho)))
# Hough Transform
for i in range(linhas):
for j in range(colunas):
if(img[i,j]<>0):
for k in theta:
v_rho = i*np.sin(k*(np.pi/180)) + j*np.cos(k*(np.pi/180))
res[k,v_rho] += 1
return res
我怀疑问题出在霍夫空间的定义中(theta 和 rho 的定义),但更改每个 linspace 的最小限制似乎没有帮助。
有什么方法可以显示正弦曲线而不像图像中那样将它们分开?
调整rho 和theta 的范围有什么帮助吗?
编辑:
我也试过只用一行来运行算法。
这是我在只有一行的情况下实现算法的输出:
【问题讨论】:
标签: python-2.7 numpy hough-transform