图像卷积、相关以及在MATLAB中的操作

转载 2017年01月03日 10:29:43


图像卷积、相关以及在MATLAB中的操作

2016年7月11日 20:34:35, By ChrisZZ

区分卷积和相关

图像处理中常常需要用一个滤波器空间滤波操作。空间滤波操作有时候也被叫做卷积滤波,或者干脆叫卷积(离散的卷积,不是微积分里连续的卷积);滤波器也有很多名字:卷积模版、卷积核、掩模、窗口等。

空间滤波可以分为线性滤波和非线性滤波。非线性滤波常见的有中值滤波、最大值滤波等,相当于自定义一个函数,在数学上由于不满足线性变换因此叫做非线性滤波。这里不细研究它。

线性滤波则通常是:将模版覆盖区域内的元素,以模版中对应位置元素为权值,进行累加。看起来挺简单的,但是要区分相关(cross-correlation)卷积(convolution)两种模式。为什么呢?因为在MATLAB里是有所区分的,而且不少中文书里面把它们混淆了。

我们最容易的理解是:将模版中元素从左到右、从上到下,作为使用顺序,那么卷积操作的结果,就是模版第一个元素乘以它覆盖的元素,加上模版第二个元素乘以它覆盖的元素,再加上模版第三个元素乘以它覆盖的元素,...,一直加到模版最后一个元素乘以它覆盖的元素。好吧,其实就是:模版覆盖区域内,元素逐一相乘然后累加,此时的对应位置就是上下投影后被覆盖的位置。

上面这个理解确实是看起来最容易理解的,因而很多中文书把它叫做"卷积"。然而这个概念其实叫做相关,而卷积则相当于:将同样的模版旋转180°后,再做"相关"操作。当然,如果模版是180°对称的那么卷积和相关是相同的。但是并不是所有的模版都对称。因此,我建议,在滑窗操作、计算图像梯度等场合,不要使用“卷积”,而要使用“滤波”或者“相关”。因为,我们通常讲的卷积,其实是相关,那就不要用卷积这个词以免引起混淆。

MATLAB下的操作

在MATLAB中用imfilter来实现线性空间滤波:

imfilter(f, w, filtering_mode, boundary_options, size_options)
f:图像
w:滤波模版
filtering_mode:滤波模式
    'corr':相关滤波。[默认值]
    'conv':卷积滤波。
boundary_options:边界选项
    P:(没有引号)边界外围补充0。[默认值]
    'replicate':边界外围复制边界值
    'symmetric':边界外围使用边界镜像
    'circular':图像的大小通过讲图像处理为二维周期函数的一个周期来扩展(这是什么?)
size_options:大小选项
    'same':输出大小与输入图像f大小相同。[默认值]
    'full':输出与扩展(填充)后的图像大小相同。

最常用的是这句:

imfilter(f, w, 'replicate') %相关滤波,边界外围填充0,输出大小与输入图像f相同

当然,如果硬要做真正的卷积滤波,除了指定imfilter中的的conv参数,也可以先将模版旋转180°:

rotated_filter=flipud(fliplr(filter))

总结

说了这么多废话,总结起来就是3句话:

  1. 很多中文书里(数字图象处理一类)讲的卷积过滤其实应当叫做相关过滤
  2. 平时滤波最常用的是相关滤波,也就是“覆盖位相乘,然后累加”
  3. MATLAB中的写法为imfilter(f, w, 'replicate')

ref

https://www.zhihu.com/question/29121110

相关文章推荐

《实用MATLAB图像和视频处理》第十章邻域处理-卷积和相关

《实用MATLAB图像和视频处理》卷积和相关

利用fft2计算二维卷积 (Matlab常用图像操作)

3 利用fft2计算二维卷积    利用fft2函数可以计算二维卷积,如:    a=[8,1,6;3,5,7;4,9,2];    b=[1,1,1;1,1,1;1,1,1];    a(8,8)=...
  • cwqcgx
  • cwqcgx
  • 2011年03月31日 14:11
  • 15425

二维图像卷积matlab程序

  • 2013年05月07日 15:54
  • 853B
  • 下载

使用 matlab 数字图像处理(九)—— 去卷积(deconvolution,逆滤波复原)

在没有噪声的情况下,频域退化模型可由下式给出:G(u,v)=H(u,v)F(u,v) G(u,v)=H(u,v)F(u,v)G(u,v)G(u,v) :退化图像; H(u,v)H(u,v) :退化函数...

Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)

Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)

灰度图像--空域滤波 基础:卷积和相关

卷积,相关。空域处理

图像处理-线性滤波-1 基础(相关算子、卷积算子、边缘效应)

这里讨论利用输入图像中像素的小邻域来产生输出图像的方法,在信号处理中这种方法称为滤波(filtering)。其中,最常用的是线性滤波:输出像素是输入邻域像素的加权和。   1.相关算子(Cor...
  • llw01
  • llw01
  • 2013年07月12日 23:33
  • 659

Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)

我是做Tracking 的,对于速度要求很高。发现傅里叶变换可以使用。于是学习之! 核心: 最根本的一点就是将时域内的信号转移到频域里面。这样时域里的卷积可以转换为频域内的乘积!       在分析图...

数字图像处理:基本算法-卷积和相关

在执行线性空间滤波时,经常会遇到两个概念相关和卷积二者基本相似,在进行图像匹配是一个非常重要的方法。 相关是滤波器模板移过图像并计算计算每个位置乘积之和的处理卷积的机理相似,但滤波器首先要旋转180...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像卷积、相关以及在MATLAB中的操作
举报原因:
原因补充:

(最多只允许输入30个字)