查找图像相似区域的好算法?

7

我想要在两张图片中寻找相似的区域,但是我不知道什么方法最好。

这些区域没有被缩放或者转换,但可能出现在两张图片的任何位置(我想知道它们在哪里)。周围还有其他的东西。

以下是我想要的一个例子:

two images with overlap showing

我该如何实现?


1
我不是这方面的专家,但我认为这种算法非常依赖于图像的格式。你打算使用特定的格式进行工作,还是需要通用的格式? - Desaroll
嗯 - 你的例子移除了右下角的浅蓝色部分。那还算是“相同”吗?也就是说,矩形空间是否相关? - Jongware
@Jongware:我只关心坐标。考虑使用图像2中的坐标将其裁剪出来 :) 是的,我只在寻找矩形。 - Vogel Vogel
是的,这会捕捉到一点蓝色。所以确切的矩形不同。 - Jongware
1
我修改了您的示例图像,以更好地反映您所述的内容。但是,问题仍然太笼统。(1)这个图像中的白色背景非常重要--颜色采样应该可以很好地工作,但仅适用于这些图像。(2)两个图像中的红色圆圈并不完全相同。图像2中的圆比图像1高2个像素。矩形需要多“相似”? - Jongware
显示剩余6条评论
1个回答

3
  1. 图像分割

    获取找到的区域的边界矩形/多边形/掩码。

  2. 对于每个区域计算

    • 直方图
    • FFTDCT并过滤掉非重要数据(大部分为高频数据...与JPEG压缩类似)
    • 大小(宽度,高度,面积,周长长度等)
  3. 查找匹配项

    因此,在图像之间比较每个区域。将#2中的数据处理为单个数据集,并根据以下之一计算所比较区域之间的相似性:

    • 相关系数
    • 距离+阈值化
    • 大小系数(长宽比,周长/面积等)
  4. 对于特定的图像,您可以创建自己的自定义比较

    • 例如,这里是我的OCR
    • 如果要求相同大小,则可以轻松添加大小的比较 +/- 一些阈值
  5. 为了提高精度

    您可以将每个区域划分为几个子区域,并计算其中的#2,以获得更强的数据集,但要注意旋转。

    还可以将分割基于颜色均匀性系数,然后将其包含在数据集中

  6. 旋转图像

    为此,您需要使用与旋转无关的特征,例如:

    • 直方图
    • 颜色均匀性
    • 使用对旋转不变的子区域进行形状,例如共同的圆...

    或者找到基础特征/边缘并将一个图像旋转以匹配另一个图像的位置...

  7. 多边形

    对于多边形图像,您可以将图像矢量化回矢量形式,然后使用任何多边形比较算法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接