Math 计算两个(二进制)图像之间的相关性
我试图计算模板图像(较大图像的一部分)与模板所属图像之间的(交叉?)相关性 假设模板图像为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时意味着什么,这是否意味着相关性更小Math 计算两个(二进制)图像之间的相关性,math,image-processing,correlation,Math,Image Processing,Correlation,我试图计算模板图像(较大图像的一部分)与模板所属图像之间的(交叉?)相关性 假设模板图像为3x2,大图像为20x20。我首先做的是对两幅图像进行灰度处理。然后我得到了灰度值的平均值(两种情况都是这样)。之后,我逐像素检查当前像素是否低于或高于平均值。如果它低,那么我把像素涂成黑色,如果它高,那么像素就会变成白色。所以基本上这给我留下了一个二值图像。其中1==白色,0==黑色 我的模板图像二进制值是:101010 然后在大图中,我开始扫描每个像素,看它是否与模板匹配。因此,我从大图像中的x=0,y
最重要的是,我的计算正确吗。。?还是我还遗漏了什么…?我又看了一眼你的问题。我想你把我和他搞混了 基本上,当你有两个大小相同的图像,并且你想知道你有多相似时,你会使用互相关。例如,您可以在视频中的两个后续帧上使用它。互相关产生一个数字 当你有一个小尺寸的模板图像,并且你想在一个大尺寸的图像中找到它的位置时,你可以使用卷积(因为这个原因,它也被称为卷积)。卷积产生一个新的图像。此新图像中的每个像素(x,y)表示模板与原始图像位置(x,y)的匹配强度。通常,在执行卷积后,在卷积结果中查找最大值,并将其用作模板的检测位置 考虑到你对问题的措辞,听起来卷积确实是你想要的。在您的例子中,图像的大小不同,因此您无法真正有意义地计算互相关
最后,在您了解了它是如何工作的之后,您应该安慰自己,大多数图像处理库都包含此功能。每个做过像样的图像处理的人都至少做过一次卷积运算,只是为了好玩:)你为什么要费心做阈值处理?你让自己的生活更加困难。只需处理灰度图像。最后,发布你的消息来源。“在这里,它值上千言万语。”米莎·阿赫特南克斯。你完全正确,我当然也可以这么做。你知道我在做什么吗?我这样做对吗?公式看起来是对的。不过,你总有可能把实现搞砸:)不看源代码就很难说。@misha我还没有源代码。我想确定我的数学是正确的。不过,我现在就要实施它。现在我对做正确的事情更有信心了:)