在图像中找出每条线的斜率(角度)。

3
我需要计算图像中每条可检测线的斜率(或角度),甚至需要检测线斜率的变化,如果可能的话。 我已经进行了2D傅里叶变换,并且在每个区域(64x64像素集)知道邻域平均角度。我甚至尝试了霍夫变换,但是Sobel和Prewitt边缘检测似乎都不能适当地检测这些线。

请注意,有些线互相交叉,有些则不是直线。

是否有一种方法可以检测每条线的斜率?或者检测这些线以便执行有用的霍夫变换?

如果您需要完整的图像,我可以上传到某个地方。

Image

1个回答

1

你好,Adamek:

希望不算太晚。以下是一些快速的想法:

1)使用霍夫变换来检测线条是第一步很好的想法。 2)第二步是某种标记,以确切知道有哪些线条。最难解决的问题可能是如何确定线条的起点和终点,并分离潜在连接的线条。在这个上下文中搜索标记关键字,应该会得到一些结果。 3)之后,有了起点和终点,我会 a)为每条线计算回归线,如果您需要更精确的数据进行进一步分析 b)只需通过f(x)= mx + n计算斜率和截距,其中m是斜率,n是截距。给定2D中的两个点,可以轻松完成此操作:

slope = (yRight - yLeft)/(xRight - xLeft);
m_oIntercept = ((yLeft - slope*xLeft) + (yRight - slope*xRight))*0.5;

不要忘记在除以之前测试 (xRight-xLeft) < eps,以避免零除。

希望能帮到你, G.


谢谢你的回答。现在还不算太晚。 - Adamek
我之前对这些检测到的线条的输入图片进行了标记和可视化处理。因此,我知道并不是每条线都被检测到了,而且我也知道这不是霍夫变换失败的原因。这一切都与预处理操作(直方图均衡化、Sobel或Prewitt边缘检测等)有关。尽管如此,还是感谢您尝试解决我的问题。 - Adamek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接