【发布时间】:2018-03-11 14:01:42
【问题描述】:
我在 Matlab 中实现 Hough-Radon 变换来检测一些模式(主要是直线)。我已经实现了它,但问题是它还将“框架”检测为一条线(见图)。
实现这个的代码基本上是:
[H,T,R] = hough(BW,'RhoResolution',0.6,'Theta',-90:0.5:89.5);
P = houghpeaks(H,20,'threshold', ceil(0.1*max(H(:))));
lines = houghlines(BW,T,R,P,'FillGap', 15,'MinLength',50);
其中lines是由字段组成的结构体:
- 起点。
- 结束点。
- 角特萨
- 距离罗
有什么办法可以去掉这四个框架线?
编辑:
进行霍夫变换前的原图为:
【问题讨论】:
-
以前从未见过。你确定那些不在
BW中吗?无论如何,你可以从P中删除它们,因为你知道这4行的参数。 -
我已经用 Hough Transofrm 之前的原始图片更新了问题。由于所需的线具有相同的角度,因此无法按角度移除它们。并且每次的点都是不同的,所以不能通过这种方式删除。还有其他想法吗?
-
那不是 BW 图像,因为它不是二进制的。你如何对其进行二值化?
-
P包含每条线的角度和距离。您可以找出这些线对应的角度和距离并将其删除。为什么每次都说分数不一样?有哪些要点?在霍夫空间?是随机的??? -
关于我所说的点(这是每条线的起点和终点),我有几张类似的图像(但不相等),所以每次我执行霍夫变换和我得到了线条,“框架”线条略有不同。例如,第一次从位置 (1,1) 开始,下一次从 (2,4) 开始。所以我不能通过删除特定位置来过滤它们,因为每次都是不同的(并且可能我想要检测的真实线非常靠近框架)。
标签: matlab transform hough-transform