【发布时间】:2011-12-04 15:36:24
【问题描述】:
在我的项目中,我需要与图像进行比较。一张图片显示渲染模型,另一张图片是照片,其中显示了模型中表示的真实对象。我到底想要什么:
- 算法必须比较两个图像并返回一个描述相似度的数字。假设数字越小,图像组合得越好。
- 两个图像都表示为二进制图像,仅包含真实渲染图像/照片的轮廓/边缘。
- 照片中的对象比渲染图像多得多。所以我只想检查渲染对象的视点是否与照片中真实对象的视点几乎相同。 (示例:对汽车进行建模,使其近似于真实汽车。我从特殊位置和方向拍摄了真实汽车的照片。现在我想检查我的虚拟相机的位置和方向是否正在查看渲染汽车与我的真实相机的位置和方向几乎相同)。解决方案只是将渲染图像的白色像素与照片的像素(作为边缘图像)进行比较。其他像素不感兴趣。
- 图像比较的返回值应减小,虚拟相机的方向和位置越适合真实相机的方向和位置。
我试图计算两幅图像的欧几里德距离,但只有当像素完全吻合时,结果才好。现在我正在寻找替代品。
直到现在我考虑使用归一化互相关,但我真的不知道它是否适合我的任务。
问题是,标准化互相关是否值得一试,或者是否有更好的方法来解决我的问题!
算法应该尽可能快,因为我比较了很多图像。
非常感谢
感谢您的建议。我有点困惑,因为归一化互相关和豪斯多夫距离似乎有利于在大图中找到小模式。
问题是:这两种算法是否也适用于比较 2 张相同大小的图片?
这是一个必须比较的 2 个图像的示例。目前我每秒比较大约 120 对图片。
太糟糕了,我不能以新用户的身份发布图片。所以这里是直接链接: http://s14.directupload.net/file/d/2674/t8qzbq9i_png.htm
【问题讨论】:
-
示例链接已发布。
-
+1 有趣的问题。您也可以在边缘检测之前发布图像吗?这将有助于为您的问题添加一些上下文。
-
一般来说,上图只显示了第二张图中显示的建筑物的渲染模型。两幅图像都是 8 位灰度图像。现在的任务是将虚拟相机设置在与现实相机相同的位置和方向。这必须通过将大量渲染(具有不同相机姿势)与真实照片进行比较来实现。
标签: image image-processing opencv compare