Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 计算两个(二进制)图像之间的相关性_Math_Image Processing_Correlation - Fatal编程技术网

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

Math 计算两个(二进制)图像之间的相关性,math,image-processing,correlation,Math,Image Processing,Correlation,我试图计算模板图像(较大图像的一部分)与模板所属图像之间的(交叉?)相关性 假设模板图像为3x2,大图像为20x20。我首先做的是对两幅图像进行灰度处理。然后我得到了灰度值的平均值(两种情况都是这样)。之后,我逐像素检查当前像素是否低于或高于平均值。如果它低,那么我把像素涂成黑色,如果它高,那么像素就会变成白色。所以基本上这给我留下了一个二值图像。其中1==白色,0==黑色 我的模板图像二进制值是:101010 然后在大图中,我开始扫描每个像素,看它是否与模板匹配。因此,我从大图像中的x=0,y

我试图计算模板图像(较大图像的一部分)与模板所属图像之间的(交叉?)相关性

假设模板图像为3x2,大图像为20x20。我首先做的是对两幅图像进行灰度处理。然后我得到了灰度值的平均值(两种情况都是这样)。之后,我逐像素检查当前像素是否低于或高于平均值。如果它低,那么我把像素涂成黑色,如果它高,那么像素就会变成白色。所以基本上这给我留下了一个二值图像。其中1==白色,0==黑色

我的模板图像二进制值是:101010

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

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

101010(模板图像) 总和=3

平均值=0.5

标准偏差=4,2

111010(大图,第一部分) 总和=4

平均值=0,66

标准偏差=2,82

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

这让我得到了以下结果: r=-0,04

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

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


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

我又看了一眼你的问题。我想你把我和他搞混了

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

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

考虑到你对问题的措辞,听起来卷积确实是你想要的。在您的例子中,图像的大小不同,因此您无法真正有意义地计算互相关


最后,在您了解了它是如何工作的之后,您应该安慰自己,大多数图像处理库都包含此功能。每个做过像样的图像处理的人都至少做过一次卷积运算,只是为了好玩:)

你为什么要费心做阈值处理?你让自己的生活更加困难。只需处理灰度图像。最后,发布你的消息来源。“在这里,它值上千言万语。”米莎·阿赫特南克斯。你完全正确,我当然也可以这么做。你知道我在做什么吗?我这样做对吗?公式看起来是对的。不过,你总有可能把实现搞砸:)不看源代码就很难说。@misha我还没有源代码。我想确定我的数学是正确的。不过,我现在就要实施它。现在我对做正确的事情更有信心了:)