Python 如何用撇渣法获得hough线峰的x,y坐标
我想要的是轮廓形状范围内的Python 如何用撇渣法获得hough线峰的x,y坐标,python,hough-transform,scikit-image,Python,Hough Transform,Scikit Image,我想要的是轮廓形状范围内的x0和x1值,即640(2D)。我想将y0和y1缩放到我的轮廓的大小。形状使用该公式计算的y0,y1坐标对应于直线与图像边缘相交的位置。这就是为什么它包括0和outlines.shape[1] y0对应于直线与列0相交的行,因此0*cos(角度) y1对应于线条与图像最后一列相交的行,即其宽度(即轮廓。形状[1]) 因此,您可以从(0,y0)到(宽度,y1)绘制一条线,以强调检测到的线。例如,使用outlines[line(0,y0,width-1,y1]=1。注意我使
x0
和x1
值,即640(2D)。我想将y0
和y1
缩放到我的轮廓的大小。形状使用该公式计算的y0,y1
坐标对应于直线与图像边缘相交的位置。这就是为什么它包括0
和outlines.shape[1]
y0
对应于直线与列0相交的行,因此0*cos(角度)
y1
对应于线条与图像最后一列相交的行,即其宽度(即轮廓。形状[1]
)
因此,您可以从(0,y0)
到(宽度,y1)
绘制一条线,以强调检测到的线。例如,使用outlines[line(0,y0,width-1,y1]=1
。注意我使用width-1
,因为索引从0开始,并且width
超出范围。在公式中不是这种情况,因为它是从dist
中减去的
很好地说明了它是如何工作的,以及如何将发现的线条添加到图像中(在第一部分中)。将没有灵感的X形图像替换为您选择的图像,您将看到线条。理想情况下,您的图像应该是二值化的,并且没有太多的点,因此尝试将其通过边缘检测器(Canny)或者骨骼化过程。你能详细描述一下你的情况吗?好的。想象一下如果你有一个正方形的边界图像。通过hough变换,你可以得到线条。现在通过我在web上找到的公式,我可以得到线条的y坐标。现在这些线条边界没有限制。没有限制,我的意思是点可以是less小于0,我想要的是,通过一些等式,我得到x坐标和y,在0到640的范围内。
h, theta, d = transform.hough_line(outlines)
for acum, angle, dist in zip(*transform.hough_line_peaks(h, theta, d)):
y0 = (dist - 0 * np.cos(angle)) / np.sin(angle)
y1 = (dist - outlines.shape[1] * np.cos(angle)) / np.sin(angle)
x0 = ...
x1 = ...
rr,cc,_ = draw.line_aa(x0,y0,x1,y1)