image-processing - 图像处理 - 匹配从一个图像到另一个图像的曲线

标签 image-processing transform

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

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

enter image description here
图片1

enter image description here
图片2

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

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

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

最佳答案

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

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

enter image description here

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

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

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

回复评论:

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

关于image-processing - 图像处理 - 匹配从一个图像到另一个图像的曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530790/

相关文章:

python - 使用函数作为卷积核

拉斐尔,变换后获取元素角度

html - CSS 转换不会应用于页面加载和动态更新 <g> inside svg

在父 div 上进行 css3 缩放变换,但在一些关联的 div 中保持不变的大小

安卓 : Camera view comparison with stored image

python - 如何提取支票/支票图像中的帐号

java - 为什么我的程序在视频第一帧后终止?

geometry - 放大/缩放/膨胀/放大三角形的算法

CSS:转换一次转换,然后在没有转换的情况下重置它

python - 复选框检测opencv