如何使用 skimage 获取 hough 线峰的 extream x,y 坐标

How to get extream x,y coordinates for hough line peaks with skimage

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)

我想要的是轮廓形状范围之间的x0x1值,即640,640(2D)。我想将 y0y1 缩放到我的 outline.shape.

的大小

您使用该公式计算的 y0, y1 坐标对应于直线与图像边缘相交的位置。这就是为什么它包含 0outlines.shape[1].

y0 对应于直线与第 0 列相交的行,因此 0 * cos(angle).

y1 对应于直线与图像最后一列相交的行,即它的宽度(即 outlines.shape[1]

因此您可以从 (0, y0)(width, y1) 画一条线来强调检测到的线。使用,例如 outlines[line(0, y0, width-1, y1] = 1。请注意,我输入 width - 1 是因为索引从 0 开始并且 width 超出范围。在您的公式中不是这种情况,因为它是从 dist

中减去的

This tutorial 很好地说明了它是如何工作的以及如何将发现的线条添加到图像中(在第一部分)。用您选择的图像替换没有灵感的 X 形图像,您将看到线条。理想情况下,您的图像应该是二值化的并且没有太多点,因此请尝试通过边缘检测器 (Canny) 或骨架化程序。