图像处理 - 将曲线从一个图像匹配到另一个图像

时间:2013-01-25 21:37:34

标签: image-processing transform

我正在做类似这个问题的事情: Matching a curve pattern to the edges of an image

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

enter image description here image1的

enter image description here 图像2

因此,为了进入Image2,您可以对Image1应用一些平移,旋转,缩放等。

有谁知道如何解决这种转变?

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

1 个答案:

答案 0 :(得分:2)

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

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

enter image description here

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

对于您的特定数据,您可能能够提供更好的关键点描述符;也许是检测线端,线交叉和尖角的东西。

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


回答评论:

兴趣点仅仅是具有某些特性的小区域。所以这些区域的中心可能是黑色或白色;该算法不专门寻找白色像素或大规模形状,例如曲线。重要的是,线条在两条曲线上连接大致相同的点,至少乍看之下。