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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlAB中gv=imfilter(I2,sv,'replicate')是啥意思相关的知识,希望对你有一定的参考价值。

功能:对任意类型数组或多维图像进行滤波。
I2为:输入图像
sv为:滤波掩模
gv为:滤波后图像
'replicate'边界选项,这里表示:图像大小通过复制外边界的值来扩展
参考技术A imfilter实现的是线性空间滤波;
conv2是计算两个矩阵的二维卷积
1、MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:
C = conv2(A,B)
C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)。
2、MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:
Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:
其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。
Fspecial函数用于创建预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,parameters)
参数type制定算子类型,parameters指定相应的参数,具体格式为:
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。
type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5

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

【中文标题】我可以在 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中gv=imfilter(I2,sv,'replicate')是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

学习Matlab中fspecial的用法!

学习Matlab中fspecial的用法!