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

标签 python hough-transform scikit-image

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) 或骨架化程序。

关于python - 如何使用 skimage 获取 hough 线峰的 extream x,y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435039/

相关文章:

python - 从串行端口解码 python 中的 USSD 非英语响应

python - 霍夫变换未检测到正确的圆

python - Python 中的半监督高斯混合模型聚类

python - 如何改进 Python C Extensions 文件行读取?

python - 在python中将概率向量转换为目标向量?

python opencv - 像素操作后的HoughCircles错误

python - 尝试使用 openCV 和 HoughCircles 分割 DICOM 图像中的圆圈时出错

python - 如何通过指定初始点和最终点通过 3d 矩阵 (ndarray 3-dim) 提取线轮廓(光线追踪线)

python-3.x - 找到两个二维数据点的最佳变换矩阵

python - 在 Python 中为 AWS Lambda 从字符串内容创建一个动态 zip 文件