当前位置: 首页 > article >正文

基于基本滤波器的图像滤波理论与实验分析-附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} 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代码问题、商业合作、课题选题与指导等均可私信交流



http://www.kler.cn/a/465385.html

相关文章:

  • 数学建模入门——建模流程
  • Elasticsearch:Lucene 2024 年回顾
  • 如何安装适配pytorch版本的torchvision
  • 域上的多项式环,整除,相通,互质
  • HTML——66.单选框
  • 049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值
  • Lambda 表达式学习
  • springboot3+vue项目实践-黑马
  • 力扣-数据结构-7【算法学习day.78】
  • 周末总结(2024/12/28)
  • 解決當前IP地址僅適用於本地網路
  • 在 Blazor 和 ASP.NET Core 中使用依赖注入和Scoped 服务实现数据共享方法详解
  • Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)
  • 【SpringBoot教程】IDEA快速搭建正确的SpringBoot版本和Java版本的项目
  • PCA降维算法详细推导
  • UE5材质节点Camera Vector/Reflection Vector
  • 2024-12-29-sklearn学习(26)模型选择与评估-交叉验证:评估估算器的表现 今夜偏知春气暖,虫声新透绿窗纱。
  • 【MySQL】通过 Binlog 恢复MySQL数据
  • 解决Docker国内网络问题
  • Yeelight易来与Control4达成战略合作,开启智能家居全球战略新篇
  • Servlet中配置和使用过滤器
  • 《Vue3实战教程》40:Vue3安全
  • k8s启动报错
  • 华为仓颉编程语言与医疗领域的深度融合:技术与实践
  • android studio android sdk下载地址
  • matlab 实现了一个基于阵列信号处理的空间角和极化参数估计系统