基于基本滤波器的图像滤波理论与实验分析-附Matlab源程序
⭕⭕ 目 录 ⭕⭕
- 摘要
- 一、理论分析
- 二、基于基本滤波器的图像滤波实验
- 三、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} 10−120−210−1
Prewitt 算子:
(
1
1
1
0
0
0
−
1
−
1
−
1
)
\\ \begin{pmatrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ -1 & -1 & -1 \end{pmatrix}
10−110−110−1
Laplace 算子:
( 1 4 1 4 − 20 4 1 4 1 ) \\ \begin{pmatrix} 1 & 4 & 1 \\ 4 & -20 & 4 \\ 1 & 4 & 1 \end{pmatrix} 1414−204141
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} F1′∗F1=(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} F2′⋆F1=(−0.50.5−0.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} F1′⋆F2=(−0.5−0.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} F2′⋆F2=(0.5−0.5−0.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所示:
均值滤波器滤波的结果如图2所示:
Sobel 算子滤波结果如图3所示:
Prewitt 算子滤波结果如图4所示:
Haar小波F2*F2滤波器滤波结果如图5所示。
可以看出,均值滤波器有光滑原始图像效果,Sobel 和 Prewitt 算子为边缘算子,Haar 小波F2’*F2滤波器提取的是对角线细节。
三、Matlab程序获取与验证
Matlab程序免费下载地址
本博文演示结果均由Matlab代码实现,可私信博主获取,博主联系方式在文章最底部。
博主简介:擅长智能优化算法、信号处理、图像处理、机器视觉、深度学习、神经网络等领域Matlab仿真以及实验数据分析等,matlab代码问题、商业合作、课题选题与指导等均可私信交流。