在OpenCV中匹配相似的图像

时间:2011-06-02 18:50:10

标签: image-processing opencv

我有两组图像{H}和{L}。 {H}由512x512图像组成。 {L}由{H}中的所有图像组成,但缩小为32x32-128x128,并且具有来自有损压缩的压缩工件。

使用OpenCV将{H}中的图像与{L}中最接近的匹配进行匹配的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

在某种程度上它是一个悬而未决的问题。如果你需要根据事实匹配图像,那么就没有仿射,透视变换,旋转变换,那么你所做的就是简单地为两个集合制作一致的比例并通过做一对一的匹配,比如相关匹配。如果您对图像处理或计算机视觉有所了解,可以尝试使用SURF,SIFT或Gist等高级内容来匹配图像。真的取决于你的需求。顺便说一下,这将成为一项更艰巨的任务。

答案 1 :(得分:1)

我有15年的图像处理经验,通常当我必须在Photoshop中精确对齐两个几乎相同(但可能稍微不同)的图像层时,我将顶层的混合模式设置为排除(即XOR) 。当所有像素的值完全相同时,这会使图像全黑。

你可以用OpenCV做类似的事情。

确保您对较大的图像进行缩减采样,以使缩小比例缩小时使用相同的插值匹配较小图像的尺寸。这可能是最近邻,即。选取网格中的每个第n个像素(舍入到整个像素或像素边界)或Bicubic(在4 * n像素之间插值计算一个像素)类型。最近邻显然更快......

然后制作直方图并计算一些统计数据甚至是差值的FFT。

答案 2 :(得分:1)

另一种方法,虽然可能慢得多的方法是做Clustering by Compression (Arxviv.org, PDF)并且可能use the JPEG coefficients作为要比较的模型数据而不是通过某种其他压缩方法压缩的未压缩图像数据。另请参阅articles related to Google学术搜索的第一篇论文。

通过压缩进行聚类基本上意味着使用文件Y中的(统计)模型压缩文件X,并将其与仅使用自己模型的数据压缩X的大小进行比较。

以下是关于using different statistical models for compression的想法的一些背景知识。 JPEG压缩uses Huffman coding or Arithmetic coding来压缩DC系数表。

另一种选择,如果较小的图像不仅仅是下采样和/或裁剪版本,可能要快得多,就是使用Wajih建议的SIFT或SURF算法。