我可以在 matlab 中使用 imfilter 计算两个图像之间的相关性吗?

Posted

技术标签:

【中文标题】我可以在 matlab 中使用 imfilter 计算两个图像之间的相关性吗?【英文标题】:Can I compute correlation between two images using imfilter in matlab? 【发布时间】:2021-11-17 13:04:01 【问题描述】:

假设我想在两个图像之间执行关联。我知道有一个函数 normxcorr2 可以用来像这样找到两个图像(img1,img2)之间的相关性

C = normxcorr2(img1, img2)

但是我可以使用 imfilter 找到相关性吗?此命令是否执行关联?

corr = imfilter(img1, img2, 'corr','replicate');

当我运行 imfilter 命令并使用 imshow() 命令输出结果图像时,我可以看到它与我使用 normxcorr2 命令输出结果图像时得到的不同。通过 normxcorr2 生成的图像看起来更多就像我对两张图像的相关性所期望的一样。这两种方法有什么区别?

【问题讨论】:

不,不要把它们混在一起。 imfilter 中的选项与如何应用内核进行过滤有关。另外,我不确定您在做什么,但在一般文献中,当您计算 2 个图像之间的相关性时,输出是 1 个标量,而不是图像。它的corrcoef() 你通常想要的 我正在处理一个家庭作业问题,要求我计算两个图像之间的相关性,然后显示一个显示相关性的图形。另外,我必须找到最大相关的坐标。所以,我想正确的方法是使用 normxcorr2,对吧? @AnderBiguri 我不知道,因为我不是你的老师,但是是的,可能是的,如果你的图像与文档中的图像相似(即你试图在另一个图像中查找图像)。但这在技术上是准确的:)。 它们是完全不同的图像(比如斑马和男人)。我对 imfilter 和 normxcorr2 感到困惑,但现在你消除了我对 imfilter 的疑问。这个问题甚至没有提到互相关。它只是要求计算两个图像之间的相关性。 @AnderBiguri 我不是你的老师,所以我无法回答,但如果它要求你显示一个数字,那一定是互相关。否则答案只是 1 值,你一般不会做出 1 值的数字 【参考方案1】:

MATLAB 中的命名函数之间存在差异。更具体地说,imfilter 函数执行单个卷积,normxcorr2 执行两个信号(图像)之间的相关。要详细了解卷积和相关之间的区别this link 可能会有所帮助。

MATLAB 中还有其他函数,即 xcorr2 用于计算互相关,filter2 用于 img2 对 img1 进行 FIR 滤波。

【讨论】:

以上是关于我可以在 matlab 中使用 imfilter 计算两个图像之间的相关性吗?的主要内容,如果未能解决你的问题,请参考以下文章

实际比较filter2D和imfilter之间的关系

位准确(或多或少)opencv/C++ 平滑函数(imfilter)到 Matlab

matlAB中gv=imfilter(I2,sv,'replicate')是啥意思

MATLAB中用imfilter()对图像进行相关或卷积运算前一定要用tofloat()或im2double()将数据类型转换为浮点型

在Matlab中过滤包含NaN的图像?

请教关于Matlab中ikine函数