6

我正在做类似于这个问题的事情: 将曲线图案匹配到图像的边缘

基本上,我在两幅图像中有相同的曲线,但两者之间有一些仿射变换。这是两个图像的示例:

在此处输入图像描述 图片1

在此处输入图像描述 图片2

所以为了得到Image2,你可以对Image1应用一些平移、旋转、缩放等。

有谁知道如何解决这个转换?

相位相关不起作用,因为它不仅仅是平移。光流不起作用,因为没有足够的细节来解决平移、旋转、缩放(它几乎是一个二进制图像)。我不确定霍夫变换是否会给我很好的数据。

4

1 回答 1

2

我认为某种关键点匹配算法,如 sift 或 surf 也适用于这类数据。基本思想是在每个图像中找到有限数量的“有趣”关键点,然后成对匹配这些关键点。

这是使用在线 ASIFT 演示对您的图像进行快速测试: http ://demo.ipol.im/demo/my_affine_sift/result?key=BF9F4E4E006AB5168497709836C39C74#

在此处输入图像描述

它可能更适合普通灰度图像,但它似乎适用于这些数据。看起来这些线连接了两条曲线周围大致相同的点;将所有这些对插入 OpenCv 中的FindHomography函数之类的东西中,小的差异应该会自行消除,并且您会得到两个图像之间的仿射变换矩阵。

对于您的特定数据,您可能会想出更好的关键点描述符;也许可以检测线端、线交叉点和尖角。

或者这个怎​​么样:这是一个多一点的工作,但如果你可以将你的路径矢量化为贝塞尔或 b 样条,你可以从样条描述符中获得一些自然的关键点。
我不知道任何矢量化库,但Inkscape有一个基本实现,您可以使用它来测试该方法。根据 FindHomography,一旦您拥有一小组描述符而不是大型 2d 位图,您只需在两个图像之间匹配这些描述符。


回复评论:

兴趣点只是具有某些属性的小区域。所以这些区域的中心可能是黑色或白色;该算法并不专门寻找白色像素或曲线等大尺寸形状。重要的是这些线连接了两条曲线上大致相同的点,至少乍一看是这样。

于 2013-01-25T22:12:38.383 回答