如何找到两条线交叉点旁边的4个点

lau*_*ent 10 algorithm math graphics geometry image-processing

假设我有一些位图数据(黑色),其中某些线条以矢量格式(绿色)手绘.这些线大致遵循位图数据的形状.在某些地方,线条相交.

所以我要做的是,知道绿线交叉点的位置,我怎么能找到A,B,C和D的位置?

请参阅下面的一些示例:

在此输入图像描述

我不知道如何处理这个问题,因为线条的随机定位有时它们甚至不在黑色的形状内.但是,我想必须有一些方法.有什么建议吗?

Han*_*rén 3

我能想到的最简单的方法是:

  1. 过滤图像以删除绿线。一种简单的方法是使用某种细化来填充相邻像素的背景颜色。

  2. 现在您应该拥有一个仅由黑色(粗)线和白色背景组成的图像。

  3. 使用角点检测算法(例如Harris 检测器)再次过滤图像。这会给你四个角。

笔记:

  1. 根据输入数据,您可能会得到四个以上的角。无论如何,最好验证您提取的四个角确实是交叉点的可能角。

  2. 同样,这是一个相当粗糙的方法,但如果输入数据像示例图片中一样干净,并且绿线和黑线之间的距离不太大,我认为它可能会起作用。