基于基本滤波器的图像滤波理论与实验分析-附Matlab源程序

摘要

本博文对图像进行了均值滤波、Sobel滤波、Prewitt算子转置滤波、Haar小波滤波实验,同时给出了相对应的理论与免费获取Matlab代码。

一、理论分析

工程中常用的滤波器有 Sobel 算子、Prewitt 算子、Laplace 算子等,小波滤波器有很多,这里以 Haar 小波为例,对比该 4 种算子对图像卷积操作的效果图,分析各种算子的不同特色。这些算子都为二维的滤波器。
4 种算子的矩阵形式如下:
Sobel 算子:

( 1 2 1 0 0 0 − 1 − 2 − 1 ) \begin{pmatrix}1&2&1\\0&0&0\\-1&-2&-1\end{pmatrix} 101202101

Prewitt 算子:
( 1 1 1 0 0 0 − 1 − 1 − 1 ) \\ \begin{pmatrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ -1 & -1 & -1 \end{pmatrix} 101101101

Laplace 算子:

( 1 4 1 4 − 20 4 1 4 1 ) \\ \begin{pmatrix} 1 & 4 & 1 \\ 4 & -20 & 4 \\ 1 & 4 & 1 \end{pmatrix} 1414204141

Haar 小波对应的二维算子:

尺度函数对应的低通滤波器和小波函数对应的高通滤波器分别为 F 1 = [ 0.70710.7071 ] , F 2 = [ − 0.7071 F_{1}=[0.7071 0. 7071] , F_2= [ - 0. 7071 F1=[0.70710.7071],F2=[0.7071 0.7071]。

对应的二维 4 个滤波器分别是

F 1 ′ ∗ F 1 = ( 0.5 0.5 0.5 0.5 ) F_1'*F_1=\begin{pmatrix}0.5&0.5\\0.5&0.5\end{pmatrix} F1F1=(0.50.50.50.5)

F 2 ′ ⋆ F 1 = ( − 0.5 − 0.5 0.5 0.5 ) F'_2\star F_1=\begin{pmatrix}-0.5&-0.5\\0.5&0.5\end{pmatrix} F2F1=(0.50.50.50.5)

F 1 ′   ⋆   F 2   =   ( − 0.5 0.5 − 0.5 0.5 ) F_1'\:\star\:F_2\:=\:\begin{pmatrix}-0.5&0.5\\-0.5&0.5\end{pmatrix} F1F2=(0.50.50.50.5)

F 2 ′ ⋆ F 2 = ( 0.5 − 0.5 − 0.5 0.5 ) F_2'\star F_2=\begin{pmatrix}0.5&-0.5\\-0.5&0.5\end{pmatrix} F2F2=(0.50.50.50.5)

图像滤波的实现,本质上是用各种滤波器(算子)进行与原始图像的离散卷积。

在 MATLAB 中实现图像滤波可以用下面三种方式:

二维卷积:C=conv2(A,B)。其中,A 为原始图像;B 为算子;C 为卷积后的图像。如果[ma,na]=size(A),[mb,nb]=size(B),则 size©=[ma+mb-1,na+nb-1]。如果要得到不同大小的结果图像,可以用更进一步的命令 C=conv2(A,B,‘shape’)。

'shape’形式可以是以下 3种:

‘full’:(默认)实现普通的二维卷积。

‘same’:卷积后的中心部分,使得结果图像与原始图像大小一致。

‘valid’:只保留没有进行零边界补充部分的卷积图像,即 size©=[ma-mb+1,na-nb+1],当 A 比 B 的大时,否则 C 为空。

二维滤波:C=filter2(A,B)。其中,A 为原始图像;B 为算子;C 为卷积后的图像。不同之处在于所用方法是要将滤波器旋转 180°。

图像滤波:C=imfilter(A,H)。其中,A为原始图像;H 为算子;C 为滤波后的图像。C的大小与原始图像 A 一致。

图像滤波还有更多的参数可以选择,如 C=imfilter( A,H,OPTION1,OPTION2,…)。其中,OPTION包括边界延拓选择(Boundary Options)、输出图像大小(Output Size Options)、滤波方法选择——相关性和卷积(Correlation and Convolution)。

边界延拓选择(Boundary Options):'X’为零延拓;'symmetric’为沿边界镜面反射对称;'replicate’为边界常数延拓,与最邻近的真实边界元素相同;'circular’为按边界周期性延拓。

输出图像大小选择(Output Size Options):与 conv2 一致。其中,'same’为默认选择,与原始图像大小一致;‘full’ 的选择与 conv2 一致,结果图像的大小比原始图像大。

滤波方法( Correlation and Convolution): 'corr’表示用 filter2 的相关性方法进行滤波;'conv’表示用卷积操作进行滤波。

二维特殊算子获得:H=fspecial(TYPE);

可能的 TYPE 有:

‘average’:均值滤波器。

‘disk’:圆盘均值滤波器。

‘gaussian’:Gaussian 低通滤波器。

‘laplacian’:二维 laplacian 算子的逼近滤波器。

‘log’:laplacian 的 Gaussian 滤波器。

‘motion’:运动滤波器。

‘prewitt’:Prewitt 横向边缘凸显滤波器。

‘sobel’:Sobel 横向边缘凸显滤波器。

‘unsharp’:unsharp 反向增强滤波器。

二、基于基本滤波器的图像滤波实验

本博文使用4种基本滤波器对原始图像进行滤波,原始图像如图1所示:

在这里插入图片描述

图1 原始图像

均值滤波器滤波的结果如图2所示:

在这里插入图片描述

图2 均值滤波

Sobel 算子滤波结果如图3所示:

在这里插入图片描述

图3 Sobel算子滤波结果

Prewitt 算子滤波结果如图4所示:

在这里插入图片描述

图4 Prewitt算子转置滤波结果

Haar小波F2*F2滤波器滤波结果如图5所示。

在这里插入图片描述

图5 Haar小波滤波结果

可以看出,均值滤波器有光滑原始图像效果,Sobel 和 Prewitt 算子为边缘算子,Haar 小波F2’*F2滤波器提取的是对角线细节。

三、Matlab程序获取与验证

Matlab程序免费下载地址

本博文演示结果均由Matlab代码实现,可私信博主获取,博主联系方式在文章最底部。


博主简介:擅长智能优化算法信号处理图像处理机器视觉深度学习神经网络等领域Matlab仿真以及实验数据分析等,matlab代码问题、商业合作、课题选题与指导等均可私信交流


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值