首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算两个(二进制)图像之间的相关性

计算两个(二进制)图像之间的相关性
EN

Stack Overflow用户
提问于 2011-11-05 20:06:11
回答 1查看 3.3K关注 0票数 0

我在试着计算(交叉?)模板图像(属于较大图像的图像)与模板所属图像之间的相关性。

假设模板图像为3x2,大图像为20x20。我首先做的是对两幅图像进行灰度处理。然后我得到了灰度值的平均值(也是两个值的平均值)。之后,我逐个像素地检查当前像素是否低于或高于平均值。如果它较低,则我将像素着色为黑色,如果它较高,则像素将为白色。所以基本上这给我留下了一个二进制图像。在那里1==white和0==black。

我的模板镜像二进制值为: 101010

然后,在大图中,我开始扫描每个像素,看看它是否与模板匹配。所以我从大图中的x=0,y=0开始,我将X轴上的前三个像素与模板图像的前两行进行了比较。其二进制值为: 111010

所以下一步是检查相关性,对吗?现在,对于我来说,这是棘手的部分,因为我不确定我做得是否正确。但这是我想出来的:

101010 (模板图像)

Sum =3

平均值= 0.5

标准差= 4,2

111010 (大图,第一部分)

Sum =4

平均值= 0,66

标准差= 2,82

然后我尝试这样计算相关性:

结果如下:R= -0,04

由于这个数字根本不接近1,这意味着没有密切的相关性,对吧?或者我必须将其与n-2 =临界值进行比较。所以在这种情况下,6-2 = 4,因为它也不接近4,这也意味着没有相关性,对吧?

当它接近-1时,这意味着什么,这是否意味着相关性更小?

最重要的是,我的计算是正确的吗?还是我还漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-05 23:56:36

我已经重新看过你的问题了。我想你把cross-correlationconvolution搞混了。

基本上,当你有两个相同大小的图像,并且你想要告诉你你们有多相似时,你就会使用互相关。例如,您可以在视频中的两个后续帧上使用它。互相关会产生一个单一的数字。

当您有一个小尺寸的模板图像,并且想要在一个较大尺寸的图像中找到它的位置时,您可以使用卷积(由于这个原因,它通常也称为template matching)。卷积产生一个新的图像。新图像中的每个像素(x,y)表示模板与原始图像位置(x,y)匹配的强度。通常,在执行卷积之后,您会在卷积结果中查找最大值(或多个值),并将其用作模板的检测位置。

考虑到你的问题的表达方式,听起来卷积确实是你想要的。在你的例子中,图像是不同大小的,所以你不能真正有意义地计算互相关性。

最后,在您了解了所有这些功能的工作原理之后,您应该想到大多数图像处理库都包含此功能,这会让您感到宽慰。每个做过像样的图像处理的人都至少实现过一次卷积,只是为了好玩:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8020066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档