[英]Convert X,Y floating point coordinates to binary matrix and then perform a Hough line transform
[英]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)
我想要的是我的輪廓形狀范圍之間的x0
和x1
值,即640,640(2D)。 我想將y0
和y1
縮放到outline.shape
的大小。
使用該公式計算的y0, y1
坐標對應於線與圖像邊緣相交的位置。 這就是它包含0
和outlines.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
減去
本教程很好地說明了它的工作原理以及如何將已發現的行添加到圖像中(在第一部分中)。 用您選擇的圖像替換未出現的X形圖像,您將看到線條。 理想情況下,您的圖像應該被二值化並且沒有太多點,因此請嘗試將其傳遞給邊緣檢測器(Canny)或骨架化過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.