Jas*_*son 6 transform image-processing
我正在做类似这个问题的事情: 将曲线图案匹配到图像的边缘
基本上,我在两个图像中有相同的曲线,但两者之间有一些仿射变换.这是两个图像的示例:
此搜索
镜像2
因此,为了进入Image2,您可以对Image1应用一些平移,旋转,缩放等.
有谁知道如何解决这个转变?
相位相关不起作用,因为它不仅仅是翻译.光流不起作用,因为没有足够的细节来解决平移,旋转,缩放(它几乎是二进制图像).我不确定Hough Transforms是否会给我很好的数据.
我认为某种关键点匹配算法(例如 sift 或 surf)也适用于此类数据。基本思想是在每个图像中找到有限数量的“有趣”关键点,然后将这些关键点配对。
以下是使用在线 ASIFT 演示对图像的快速测试: http://demo.ipol.im/demo/my_affine_sift/result ?key=BF9F4E4E006AB5168497709836C39C74#
它可能更适合正常的灰度图像,但它似乎适用于此数据。看起来这些线连接了两条曲线周围大致相同的点;将所有这些对插入OpenCv 中的FindHomography函数之类的东西中,小的差异应该会自行平衡,并且您会得到两个图像之间的仿射变换矩阵。
对于您的特定数据,您也许能够想出更好的关键点描述符;也许可以检测线端、线交叉和尖角。
或者这样怎么样:这需要更多的工作,但是如果您可以将路径矢量化为贝塞尔曲线或 B 样条曲线,则可以从样条曲线描述符中获取一些自然关键点。
我不知道任何矢量化库,但Inkscape有一个基本的实现,您可以用它来测试该方法。一旦您拥有一小组描述符而不是大型 2d 位图,您只需根据 FindHomography 在两个图像之间匹配这些描述符。
回复评论:
兴趣点只是具有某些属性的小区域。所以这些区域的中心可能是黑色或白色;该算法并不专门寻找白色像素或大尺寸形状(例如曲线)。重要的是,这些线连接了两条曲线上大致相同的点,至少乍一看是这样。