【数字图像】数字图像滤波处理的奇妙之旅

举报
SarPro 发表于 2024/02/06 12:14:20 2024/02/06
【摘要】 《探秘数字世界的视觉魔法:数字图像滤波处理的奇妙之旅》博文深度剖析数字图像处理领域中的滤波技术,探讨其在图像增强和噪声抑制方面的重要性。文章首先介绍了数字图像滤波的基本概念,从时域和频域两个维度详细解释了滤波的原理和应用。随后,深入研究了不同类型的滤波器,包括均值滤波、中值滤波、高斯滤波等,分析它们在不同场景中的适用性和效果。着重强调了数字图像滤波在去除噪声、平滑图像和边缘检测等方面的广泛应用。文

1.gif

7dd2b7f171704327b7d8987c49da4628.gif

🌈个人主页:SarPro
🔥 系列专栏:《数字图像处理 | 奇遇记》
⏰诗赋清音:星河耀眼情何限,壮志豁达励人魂。 临风高歌激长夜,心向征程任风留。


⛳️1. 初识数字图像

数字图像处理是一门涉及获取、处理、分析和解释数字图像的科学与工程领域。这一领域的发展源于数字计算机技术的进步,使得对图像进行复杂的数学和计算处理变得可能。以下是数字图像处理技术的主要特征和关键概念:

  1. 图像获取:

    • 数字图像处理的起点是通过传感器或其他设备获取的图像。这些图像可以来自各种源,包括摄像头、卫星、医学仪器等。
    • 数字图像通常由像素组成,每个像素代表图像中的一个小区域,具有特定的亮度值或颜色值。
  2. 数字图像的表示:

    • 图像在计算机中以数字形式表示,其中每个像素的亮度值或颜色值通过数字进行编码。灰度图像使用单一通道表示,而彩色图像则包含多个通道,如红、绿、蓝(RGB)。
    • 图像表示的质量和分辨率对后续处理步骤至关重要。
  3. 基本图像处理操作:

    • 滤波与增强: 应用各种滤波器来平滑图像、去除噪声或突出图像中的特定特征。
    • 直方图均衡化: 调整图像的对比度,以使图像中的不同亮度级别更均匀分布。
    • 缩放与旋转: 调整图像的大小和方向,以适应特定的需求或算法。
  4. 图像分析与特征提取:

    • 边缘检测: 识别图像中物体之间的边界。
    • 目标识别: 识别并定位图像中的特定对象。
    • 特征提取: 提取图像中的关键特征,如纹理、形状和颜色信息。
  5. 图像处理应用领域:

    • 医学影像处理: 用于诊断、治疗规划和手术导航。
    • 计算机视觉: 用于实现机器视觉系统,如人脸识别、目标跟踪等。
    • 遥感图像处理: 用于分析地球观测卫星传感器获取的图像。
  6. 数字图像处理的挑战与发展趋势:

    • 实时处理: 处理大规模高分辨率图像的实时需求。
    • 深度学习: 使用深度学习方法进行更复杂的图像分析任务。
    • 图像安全性: 开发用于图像水印、加密和隐私保护的技术。

数字图像处理是图像的魔法,将普通像素变成可视艺术品。它像时尚设计师一样修饰图像,又像医生审查每个细节。边缘检测是“时尚边界”大赛,目标识别是“明星捕捉”节目,每个像素都有机会成为“明日之星”。深度学习是超级英雄,为图像未来保驾护航。数字图像处理是在像素海洋中冒险,发现宝藏,成为图像掌控者,用数学魔法创造奇迹。跟随这位图像魔法师,用笑容和好奇心开启图像之旅! 


⛳️2. 数字图像滤波处理

🌍一、 研究目的

  • 算法原理全面掌握: 通过系统学习,达到全面掌握数字图像滤波处理算法原理的目标。

  • 算法原理深入理解: 在学习过程中,追求对数字图像滤波处理算法原理的深刻理解,以实现对其精通程度的提高。

  • 实际算法应用与详细描述: 将所学算法原理付诸实践,通过实施数字图像滤波算法,详细描述其实际应用过程以及核心原理。

  • 深入实验结果分析: 进行数字图像滤波实验,并对实验结果进行深入分析,以获取对该处理方法效果的深刻理解。


🌍二、研究环境

  1. MATLAB R2022a的安装:

    • 背景: MATLAB是一种高级的数值计算软件,广泛应用于工程、科学和其他领域。
    • 目的: 在研究中使用MATLAB进行数值计算、图像处理等操作,以支持实验和数据分析。
    • 操作: 详细描述安装MATLAB R2022a的步骤,包括获取安装文件、系统要求和安装过程中可能的注意事项。
  2. 环境配置用于数字图像实验:

    • 背景: 数字图像处理是现代科学研究中的重要组成部分,需要特定的环境配置以确保实验的成功运行。
    • 目的: 为了支持数字图像实验,需要配置MATLAB环境,包括添加必要的工具箱、设置路径等。
    • 操作: 详细描述配置环境的步骤,包括添加图像处理工具箱、检查依赖项,并确保MATLAB环境能够正确识别和处理数字图像文件。

🌍三、实验原理与方法

🌕3.1 均值滤波

平滑线形空间滤波的输出(响应)是包含在滤波掩模邻域内像素的简单平均值。因此,这些滤波器也称均值滤波器,指的是低通滤波器。它是用滤波掩模确定的邻域内像素的平均灰度值代替图像中每个像素点的值,这种处理减小了图像灰度的“尖锐”变化。

图1显示了两个 3×3 的平滑滤波器。第一个滤波器产生掩模下的标准像素平均值,把掩模系数代入式

(w 为掩模系数,z 为与该系数对应的灰度值)即可得​

R是由掩模定义的 3×3 邻域像素灰度的平均值。一个 m×n 掩模应有 1/mn 的归一化常数。图1第二种掩模更重要,也称加权平均,处于掩模中心位置的像素比其他任何像素就显得不太重要。由于对角项离中心比离正交方向相邻的像素更远,所以它的重要性比与中心直接相邻的四个像素低。把中心点加强的最高,而随着距中心加强为最高,而随着距中心点距离的增加减小系数值,是为了减小平滑处理中的模糊。所有系数的和是16,2的整数次幂,便于计算机的实现。

一幅 M×N 的图像经过一个 m×n (m 和 n 是奇数)的加权均值滤波器滤波的过程可由下式给出:

可理解为一幅完全滤波的图像是由对 x=0,1,2,L  M-1和 y=0​,1,2,L N-1 执行式公式得到的。


🌕3.2 中值滤波

统计滤波器是一种非线性的空间滤波器,它的响应基于图像滤波器包围的图像区域中像素的排列,然后用统计排序结果决定的值代替中心像素的值。统计滤波器中最常见的例子是中值滤波器,是将邻域内像素灰度的中值代替该像素的值。对处理椒盐噪声非常有效。


🌕3.3 频率域低通滤波

在频域中,基本的滤波“模型”由下式给出


​其中,F(u,v) 是被平滑的图像傅立叶变换。目标是选择一个滤波器变换函数 H (u,v),以通过衰减F(u,v)的高频成分产生 G(u,v)。

1、理想低通滤波器

理想低通滤波器(ILPE)是“截断”傅立叶变换中的所有高频成分,这些成分处在距变换原点的距离比指定距离D0远得多的位置。其变换函数为

​D0是指定的非负数值,D(u,v) 是 (u,v) 点距频率矩形中心的距离。“理想滤波器”的名称表明在半径为D0 的圆内,所有频率无衰减地通过滤波器,而在此半径的圆之外的所有频率完全被衰减掉。

2、巴特沃思低通滤波器

n 阶巴特沃思低通滤波器(BLPE)的传递函数(且截止滤波距原点的距离为D0)定义如下:


 其中

​不同于ILPE,BLPE变换函数在通带与被滤除的频率之间没有明显的截断。对于有平滑传递函数的滤波器,定义一个截止频率的位置并使​ H (u,v) 幅度降到其最大值的一部分。在公式中,当 D(u,v) = D0 时,H(u,v) = 0.5(从最大值1降到它的50%)。

3、高斯低通滤波器

    二维高斯低通滤波器形式如下:


其中 D(u,v) ​是距傅立叶变换原点的距离,假定将变换移至频域中心。σ 表示高斯曲线扩展的程度。使σ = D0 ,可以使滤波器表示如下:


其中 D0 是截止频率。当 D(u,v) = D0 时,滤波器下降到它最大值的0.607倍处。


🌕3.4 逆滤波与维纳滤波比较

1、逆滤波

逆滤波是用退化函数除退化图像的傅立叶变换 G(u,v) 来计算原始图像的傅立叶变换估计F(u,v),如下所示:


该式是在函数的独立元素间相除。对公式中的 G(u,v),用下式替换:


因为 N(u,v)是随机函数,它的傅立叶变换未知,所以即使知道退化函数,也不能准确的复原未退化的函数。

2、维纳滤波

维纳滤波也称为最小均方误差滤波器,或最小二乘方误差滤波器。它是建立在人为图像和噪声是随机过程的基础上,而目标是找一个未污染图像 f 的估计值 f,使它们之间的均方误差最小。误差度量由下式给出:


E{·}是宗量的期望值。这里假定噪声和图像不相关,其中一个有零均值且估计的灰度级是退化图像灰度级的线性函数。在这些条件下公式中误差函数的最小值在频域用下列表达式计算:

即一个复数量与它的共轭的乘积等于复数量幅度的平方。 H(u,v) 为退化函数, H*(u,v) 为 H(u,v) 的复共轭,


为噪声的功率谱,

为未退化图像的功率谱。

当处理白噪声时,谱 | N(u,v) |的平方 是一个常数,大大简化了处理过程。然而,未退化图像的功率谱很少是已知的。当这些值未知或不能估计时,经常使用的方法是用下面的表达式近似:


K 是一个特殊常数。如果噪声是零,则噪声功率谱消失,并且维纳滤波退化为逆滤波。


🌍四、实验结果与分析

🌕4.1 利用均值滤波器对含有椒盐噪声的图像进行处理

实验结果如图2所示:

​图2 

分析:

本实验使用了均值滤波器来处理一幅含有椒盐噪声的图像。实验的第一步是选择了一张摄影师的原始图像作为处理对象,并在该图像上人为添加了椒盐噪声,模拟了实际图像中可能存在的噪声情况。添加噪声后的图像显示了随机分布的黑色和白色噪点,严重影响了图像的视觉质量。

为了降低椒盐噪声对图像的影响,我选择了均值滤波器作为一种常见的图像滤波技术。均值滤波器采用一个滑动窗口,在每个像素位置上计算窗口内像素的平均值,并用该平均值来代替原始像素值。通过这种方式,均值滤波器能够在一定程度上平滑图像,减少噪声的影响。

在本实验中,我尝试了不同尺寸的方形均值滤波器,包括尺寸为 n=3、n=5和n=9。这些尺寸的选择是为了观察不同尺寸滤波器对图像平滑效果的影响。对于每个滤波器尺寸,我们分别对含有椒盐噪声的图像进行处理,并观察处理后的结果。

结果分析显示,当使用较小尺寸的均值滤波器(如n=3)时,整幅图像表现出轻微的模糊效果。这是因为较小尺寸的滤波器只能覆盖到图像的局部区域,因此只能捕捉到部分细节信息,同时可能将与滤波器掩模近似的图像细节进行更强烈的平滑处理,导致细节模糊化。

当增大滤波器尺寸至n=5时,观察结果显示模糊程度有所增加。这是因为较大尺寸的滤波器能够捕捉更多的图像信息,但同时也会对图像的细节进行更多的平滑处理,导致图像整体模糊。增大滤波器的尺寸意味着它涉及更多的邻域像素,从而更广泛地平均灰度值。这样做会导致图像的高频细节被平滑化,从而降低图像的清晰度。

进一步增大滤波器尺寸至n=9时,观察结果发现图像更加模糊了。这是由于更大尺寸的滤波器具有更广泛的感受野,能够捕捉更多的图像细节,但也会导致更强烈的平滑效果,进而使图像失去更多的细节信息。随着滤波器尺寸的增加,图像的整体清晰度进一步降低,边缘和细节部分变得更加模糊和模糊。

综上所述,均值滤波器在本实验中成功地降低了椒盐噪声对图像的影响,起到了一定的降噪效果。然而,滤波器的应用也带来了图像的模糊效果,因为它们对图像细节进行了平滑处理。这表明在实际应用中需要在噪声抑制和图像细节保留之间进行权衡。对于不同的应用场景,需要根据具体情况选择合适的滤波器尺寸和参数,以达到理想的结果。

此外,本实验还可以进一步扩展。例如,可以比较不同类型的滤波器(如中值滤波器、高斯滤波器)在降噪效果和图像细节保留方面的差异,以便选择最适合的滤波器。还可以考虑在不同噪声强度下评估滤波器的性能,以确定其在不同情况下的适用性。这样的研究扩展将有助于更全面地理解和应用滤波器技术在数字图像处理中的效果。


🌕4.2 利用中值滤波器对含有椒盐噪声的图像进行处理

实验结果如图3所示:

​图3

分析:

上图展示了经过加噪声处理后的图像,并通过应用中值滤波器对其进行了降噪处理。经过对比观察发现,通过中值滤波器处理后的图像相较于加噪声图像更加清晰。

椒盐噪声是一种常见的噪声类型,它在图像中随机出现亮或暗的像素点,给图像带来了视觉上的不连续性。均值滤波器通常用于降噪处理,但在处理椒盐噪声时可能表现不佳。与均值滤波器不同,中值滤波器采用了一种不同的策略来降低噪声。

中值滤波器的工作原理是在图像中滑动一个固定大小的窗口,并将窗口中的像素值按照大小排序。然后,用窗口中的中间值来替代窗口中心像素的值。这种方法能够有效地去除椒盐噪声,因为椒盐噪声的特点是极端亮或暗的像素点,而中值滤波器可以选择窗口中较为接近图像背景的像素值,从而实现去噪效果。

通过对比实验结果,可以明显地观察到,经过中值滤波器处理后的图像与加噪声图像相比具有更高的清晰度。中值滤波器能够保留图像的细节信息,并且能够有效地去除椒盐噪声引起的视觉不连续性,使图像更加自然和易于观察。相较于均值滤波器,中值滤波器在去除椒盐噪声方面表现更好。

在实际应用中,根据噪声类型和处理需求,选择适当的滤波器方法非常重要。针对椒盐噪声问题,中值滤波器是一种可靠且有效的选择。然而,对于其他类型的噪声或图像特征,不同的滤波器方法可能会产生更好的结果。因此,根据具体情况和需求,可以选择适用于特定噪声类型和图像特征的滤波器方法。


🌕4.3 利用频率域低通滤波器对加入噪声图像进行处理

实验结果如图4所示:

​图4

分析:

上图展示了一幅包含十枚硬币的图像,并对其应用了低通滤波器进行处理。通过不同种类的低通滤波器,观察到了它们对图像的影响。虽然这些滤波器能够实现图像的平滑效果,但同时也导致了图像的模糊。

低通滤波器的目标是通过抑制图像的高频成分,达到对图像进行平滑处理的效果。在频域上,这些滤波器通过衰减图像的傅里叶变换中的高频成分来实现。

1.尝试理想低通滤波器。这种滤波器在频域上产生了一个理想的截止频率,高于该截止频率的部分被完全抑制。然而,理想低通滤波器在时域上引入了严重的模糊效果,并出现了振铃现象。振铃是指在滤波器截止频率附近出现的周期性波动,导致图像边缘出现明显的伪影。

2.尝试巴特沃思低通滤波器。这种滤波器通过增加滤波器的阶数来实现平滑过渡的模糊效果。随着阶数的增加,图像的模糊效果逐渐明显,并且振铃现象也变得更加明显。

3.尝试高斯低通滤波器。与前两种滤波器不同,高斯滤波器在频域上具有平滑的频率响应曲线,没有明显的截止频率。通过高斯滤波器进行处理后的图像显示出平滑效果,而且没有观察到振铃现象。

通过低通滤波器对图像进行处理时,不同类型的滤波器产生了不同的效果。理想低通滤波器引入了严重的模糊效果和振铃现象,巴特沃思低通滤波器的模糊程度随着阶数的增加而增加,并伴随着更明显的振铃现象,而高斯低通滤波器产生了平滑效果,并且没有观察到振铃现象。这些结果表明,在选择低通滤波器时,需要根据具体需求和图像特点权衡平滑效果和振铃的影响,选择最适合的滤波器类型和参数。

在实际应用中,选择合适的滤波器类型要考虑多个因素,包括图像的特点、噪声类型以及平滑和细节保留之间的权衡。在本实验中,我观察到了不同低通滤波器的效果差异,其中高斯滤波器表现出较好的平滑效果且没有振铃现象。这可能是因为高斯滤波器在频域上具有平滑的响应特性,能够有效地抑制高频成分,同时保留图像的整体结构。然而,需要注意的是,平滑效果的提高往往会导致图像的模糊化。因此,在实际应用中,我们需要根据具体需求来选择滤波器类型和参数。如果注重细节保留,可以考虑选择其他类型的滤波器,如边缘保留滤波器或非线性滤波器。这些滤波器能够在一定程度上平滑图像,同时保留边缘和细节信息。

通过对比不同低通滤波器的实验结果,可以观察到它们在图像平滑方面的不同表现。选择合适的滤波器类型和参数是一个权衡平滑效果和细节保留的过程,需要根据具体应用场景和需求进行选择。进一步的研究可以探索其他滤波器类型和优化算法,以提高图像平滑的效果和细节保留的能力。


🌕4.4 利用逆滤波和维纳滤波对图像进行处理

实验结果如图5所示:

图5

分析:

上图展示了原始图像、加入高斯噪声后的图像,以及通过逆滤波和维纳滤波处理后的图像。

逆滤波是一种常见的图像恢复技术,它试图通过对退化图像的退化函数进行精确取反,以恢复原始图像。在逆滤波过程中,我使用了方向滤波来改善结果的质量。然而,逆滤波的关键问题是对退化过程的准确建模。如果退化函数的估计不准确或存在噪声干扰,逆滤波的效果可能会受到噪声的影响。在本实验中,我们观察到逆滤波后的图像中噪声非常明显,这是因为退化值变得非常小,以至于噪声对结果产生了较大的影响。逆滤波可以被归类为去模糊滤波,但在本实验中其结果的结构属于较强的噪声。

维纳滤波是一种常用的图像恢复方法,它尝试通过最小化均方误差的方法来平衡信号的恢复和噪声的抑制。在维纳滤波中需要选择适当的参数值,如维纳滤波器的截止频率。通过交互式选择适当的参数,能够获得视觉效果最佳的维纳滤波结果,使其接近原始图像。相比于逆滤波,可以观察到维纳滤波的效果更好,更接近原始图像。维纳滤波在平衡去模糊和噪声抑制方面表现出色。

在本实验中,我发现逆滤波的结果中噪声较强,其结构属于去模糊滤波。虽然逆滤波和维纳滤波是两种常用的图像恢复技术,但在本次实验的结果对比下,维纳滤波在参数选择的交互作用下,能够获得更好的效果,使恢复图像更接近原始图像。这说明维纳滤波在高斯噪声的去除和图像恢复中具有较好的表现。然而对于不同的退化模型和噪声类型,需要仔细选择合适的滤波方法和参数来达到最佳的图像恢复效果。


🌍五、实验代码与思考

🌕5.1 实验代码

利用Matlab语言编写的数字图像处理的例程如下:

🌟5.1.1 Lab_1.m函数

%均值滤波
I=imread('cameraman.tif');%读入数据
J=imnoise(I,'salt & pepper',0.02);
subplot(2,3,1);imshow(I);title('原图像');
subplot(2,3,2);imshow(J);title('加噪声后的图像');
k1=filter2(fspecial('average',3),J);
k2=filter2(fspecial('average',5),J);
k3=filter2(fspecial('average',7),J);
k4=filter2(fspecial('average',9),J);
subplot(2,3,3),imshow(uint8(k1));
title('3*3模版平滑滤波');
subplot(2,3,4),imshow(uint8(k2));
title('5*5模版平滑滤波');
subplot(2,3,5),imshow(uint8(k3));
title('7*7模版平滑滤波');
subplot(2,3,6),imshow(uint8(k4));
title('9*9模版平滑滤波');

源码分析:

该代码用于进行均值滤波处理的,详细解释分析如下:

  1. 第一行代码I=imread('cameraman.tif');用于读取名为"cameraman.tif"的图像数据,并将其存储在变量I中。
  2. 第二行代码J=imnoise(I,'salt & pepper',0.02);用于在原始图像I上添加椒盐噪声,噪声密度为0.02,并将添加噪声后的图像存储在变量J中。
  3. 接下来的几行代码用于进行不同尺寸的均值滤波处理,并将处理后的图像分别显示在不同的子图中。
  4. 第4行代码subplot(2,3,1);imshow(I);title('原图像');用于创建一个2x3的图像子区域,并在第1个子区域中显示原始图像I,并设置子区域标题为"原图像"。
  5. 第5行代码subplot(2,3,2);imshow(J);title('加噪声后的图像');用于在第2个子区域中显示添加噪声后的图像J,并设置子区域标题为"加噪声后的图像"。
  6. 第6-9行代码分别对应不同尺寸的均值滤波处理。filter2函数用于对图像J应用指定尺寸的均值滤波器,fspecial函数用于创建指定尺寸的均值滤波器模板。k1到k4分别存储了3x3、5x5、7x7和9x9模板均值滤波后的图像。
  7. 最后的几行代码用于在不同子区域中显示各个滤波器处理后的图像,并设置相应的子区域标题。

该代码通过读取了一幅图像,并对其添加了椒盐噪声。然后,通过应用不同尺寸的均值滤波器,生成了多个平滑滤波后的图像,并将它们显示在不同的子区域中,以便进行对比分析。这样可以观察和比较不同尺寸的均值滤波对图像的平滑效果。


🌟5.1.2 Lab_2.m函数

%中值滤波
I=imread('eight.tif');
J=imnoise(I,'salt & pepper',0.02);
K=medfilt2(J);
subplot(1,2,1);imshow(J);
title('加噪声后的图像');
subplot(1,2,2);imshow(K);
title('中值滤波处理后的图像');

源码分析:

该代码实现了中值滤波对图像进行降噪的过程,并对处理前后的图像进行显示和比较,详细解释分析如下:

  1. 第一行代码加载了名为'eight.tif'的图像,并将其存储在变量I中。该图像被假设为原始图像,我们将对其应用中值滤波进行降噪处理。
  2. 第二行代码使用'imnoise'函数给原始图像I添加椒盐噪声。具体而言,'salt & pepper'参数指定了噪声类型为椒盐噪声,而0.02表示噪声的密度为2%,即在图像中随机添加2%的椒盐噪声。添加噪声后的图像存储在变量J中。
  3. 第三行代码应用了中值滤波器(medfilt2)对噪声图像J进行降噪处理,并将结果存储在变量K中。中值滤波器使用一个滑动窗口在图像上进行遍历,将窗口中像素的中值作为中心像素的新值。
  4. 接下来的两行代码用于显示处理前后的图像。subplot函数用于创建一个显示窗口,并将其划分为1行2列的子图区域。第一个subplot(subplot(1,2,1))用于显示加噪声后的图像J,imshow函数显示图像,title函数设置图像的标题。
  5. 第二个subplot(subplot(1,2,2))用于显示经过中值滤波处理后的图像K,同样使用imshow函数显示图像,并使用title函数设置标题。

通过对比这两个子图,可以直观地观察到加噪声前后的图像差异以及中值滤波对图像的降噪效果。代码展示了使用中值滤波器对含有椒盐噪声的图像进行降噪处理的过程。它演示了如何加载图像、添加噪声、应用中值滤波器并显示处理前后的图像结果,提供了对中值滤波器在图像降噪中的实际应用的示例。


🌟5.1.3 Lab_3.m函数

%频率域低通滤波
[I,map]=imread('coins.png');
noisy=imnoise(I,'gaussian',0.01);
imshow(noisy,map);
title('加入高斯噪声后的图像');
[M N]=size(I);
noisy=double(noisy());
F=fft2(noisy);
fftshift(F);
Dcut=100;
D0=150;
D1=250;
for u=1:M
    for v=1:N
    D(u,v)=sqrt(u^2+v^2);
    BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)^2);
    EXPOTH(u,v)=exp(log(1/sqrt(2))*(D(u,v)/Dcut)^2);
        if D(u,v)<=200
            IDEALH(u,v)=1;
        else
            IDEALH(u,v)=0;
        end
        if D(u,v)<=D0
            TRAPEH(u,v)=1;
        else if D(u,v)<=D1
                TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1);
            else
                TRAPEH(u,v)=0;
            end
        end
    end
end
IDEALG=IDEALH .*F;
IDEALfiltered=ifft2(IDEALG);
BUTTERG=BUTTERH .*F;
BUTTERfiltered=ifft2(BUTTERG);
EXPOTG=EXPOTH .*F;
EXPOTfiltered=ifft2(EXPOTG);
TRAPEG=TRAPEH .*F;
TRAPEfiltered=ifft2(TRAPEG);
IDEALfiltered=abs(IDEALfiltered);
BUTTERfiltered=abs(BUTTERfiltered);
EXPOTfiltered=abs(EXPOTfiltered);
TRAPEfiltered=abs(TRAPEfiltered);
figure,imshow(IDEALfiltered,map);
title('理想低通滤波');
figure,imshow(BUTTERfiltered,map); 
title('巴特沃思低通滤波');
figure,imshow(EXPOTfiltered,map);
title('指数低通滤波');
figure,imshow(TRAPEfiltered,map);
title('梯形低通滤波');
%逆滤波与维纳滤波比较
F=checkerboard(8);
figure(1);
imshow(F,[]);
title('原图像');
PSF=fspecial('motion',7,45);
MF=imfilter(F,PSF,'circular');
noise=imnoise(zeros(size(F)),'gaussian',0,0.001);
MFN=MF+noise;
figure(2);
imshow(MFN,[]);
title('加高斯噪声后的图像');
NSR=sum(noise(:).^2)/sum(MFN(:).^2);
figure(3);
imshow(deconvwnr(MFN,PSF),[]);
title('逆滤波');
figure(4);
imshow(deconvwnr(MFN,PSF,NSR),[]);
title('维纳滤波');

源码分析:

 这段代码实现了频率域低通滤波以及逆滤波与维纳滤波的比较,详细解释分析如下:

  • 第一行代码使用imread函数加载名为'coins.png'的图像,并将其存储在变量I中。同时,imread函数也返回了图像的调色板map(如果存在)。
  • 第二行代码使用imnoise函数对原始图像I添加高斯噪声。'gaussian'参数指定噪声类型为高斯噪声,而0.01表示噪声的方差为0.01。添加噪声后的图像存储在变量noisy中。
  • 第三行代码使用imshow函数显示添加噪声后的图像noisy,并使用title函数设置图像的标题为'加入高斯噪声后的图像'。
  • 接下来的几行代码获取原始图像I的尺寸,并将噪声图像noisy转换为双精度型数据,并存储在变量noisy中。
  • 第九行代码使用fft2函数对噪声图像noisy进行二维傅里叶变换,并将结果存储在变量F中。
  • 第十行代码使用fftshift函数对频域中心进行移动,以使低频分量位于图像的中心。
  • 接下来的几行代码定义了一系列滤波器,并通过循环计算滤波器在频域的响应。
  • 第二十三行代码通过逐个遍历频域的每个点,根据阈值判断将哪些频率成分保留下来,将经过滤波器处理后的频域结果存储在相应的变量中。
  • 第二十九行代码使用ifft2函数对经过理想低通滤波器处理后的频域结果进行反傅里叶变换,得到图像域中的结果,并将其绝对值存储在变量IDEALfiltered中。
  • 同样地,通过ifft2函数对经过巴特沃斯、指数和梯形低通滤波器处理后的频域结果进行反傅里叶变换,并将绝对值存储在相应的变量中。
  • 紧接着的四个figure函数分别用于显示经过不同低通滤波器处理后的图像结果,并使用title函数设置各自的标题。
  • 从第36行开始,代码展示了逆滤波和维纳滤波的比较。
  • 第38行代码生成了一个棋盘格图像F。
  • 第40行代码使用fspecial函数创建了一个运动模糊点扩散函数PSF,该模糊函数具有7个像素的长度和45度的角度。
  • 第42行代码使用imfilter函数将原始图像F与点扩散函数PSF进行卷积操作,得到模糊图像MF。
  • 第44行代码使用imnoise函数生成与原始图像F大小相同的高斯噪声图像,并将其存储在变量noise中。
  • 第45行代码将噪声图像添加到模糊图像MF中,得到加噪声后的图像MFN。
  • 第47行代码计算了噪声信号与模糊图像的能量比值,用于后续维纳滤波的参数。
  • 第49行代码使用imshow函数显示加噪声后的图像MFN,并使用title函数设置图像的标题为'加高斯噪声后的图像'。
  • 第51行代码使用deconvwnr函数对加噪声图像MFN进行逆滤波处理,使用先验知识来估计退化系统的逆过程,并恢复原始图像。
  • 第53行代码使用imshow函数显示经过逆滤波处理后的图像,并使用title函数设置图像的标题为'逆滤波'。
  • 第55行代码使用deconvwnr函数对加噪声图像MFN进行维纳滤波处理,使用先验知识和噪声能量比值来调整滤波器的参数,并恢复原始图像。
  • 第57行代码使用imshow函数显示经过维纳滤波处理后的图像,并使用title函数设置图像的标题为'维纳滤波'。

这段代码展示了频率域低通滤波和逆滤波与维纳滤波的过程,涵盖了图像加载、噪声添加、频域滤波、逆滤波和维纳滤波等多个步骤,并通过显示和比较处理后的图像结果,展示了不同滤波方法对图像恢复的效果。


🌕5.2 实验思考

数字图像滤波处理的目的是什么?试写出相应的程序设计步骤。

1.数字图像滤波处理的目的

数字图像滤波处理的目的是通过应用不同的滤波器来改变图像的特征,以达到特定的处理目标。这些目标可以包括去噪、平滑处理、增强细节、边缘检测和图像恢复等。

  • 去噪:在数字图像中,噪声是由于图像采集、传输或存储过程中引入的随机扰动。这些噪声信号可以降低图像的质量、清晰度和视觉效果。通过应用适当的滤波器,可以抑制或减小噪声信号,使图像恢复到更清晰、更准确的状态。
  • 平滑处理:平滑处理是通过滤波器对图像进行模糊化,减少图像中的细节和噪声。平滑处理可以消除图像中的不连续性和噪声,使图像更加均匀和连续。这在一些应用中非常有用,例如在图像压缩之前,对图像进行平滑处理可以减少压缩后的码率。
  • 增强细节:有时候需要突出或增强图像中的细节和特定的特征。通过选择适当的滤波器,可以突出或增强图像中的细节和结构,使其更加清晰和鲜明。例如,锐化滤波器可以增强边缘和细节,使图像更加锐利。
  • 边缘检测:边缘是图像中灰度级变化较大的区域,通常表示物体的边界或轮廓。边缘检测滤波器可以帮助我们识别和提取图像中的边缘信息。通过应用边缘检测滤波器,我们可以在图像中找到明显的边缘,用于目标检测、图像分割和计算机视觉等应用。
  • 图像恢复:当图像受到退化或损坏时,图像恢复滤波器可以用来尽可能地恢复原始图像的信息。逆滤波和维纳滤波是常用的图像恢复滤波器。逆滤波尝试通过估计退化过程的逆过程来恢复原始图像,而维纳滤波则结合了先验知识和噪声估计来进行图像恢复。

2.数字图像滤波处理的一般程序设计步骤

以下是数字图像滤波处理的一般步骤:

  1. 读取图像:首先,从文件中读取原始图像。这可以通过使用图像处理库或编程语言提供的函数来完成。原始图像将作为滤波处理的输入。
  2. 噪声处理(可选):如果原始图像受到噪声的影响,可以在滤波处理之前对其进行噪声处理。常见的噪声类型包括椒盐噪声、高斯噪声等。使用适当的函数或技术来降低或去除噪声,以净化图像。
  3. 选择滤波器类型:根据处理目标,选择适当的滤波器类型。常见的滤波器包括均值滤波器、中值滤波器、高斯滤波器、锐化滤波器等。每种滤波器具有不同的特性和应用领域。
  4. 滤波器参数选择:根据滤波器类型,选择合适的参数。例如,对于均值滤波器,需要选择滤波器的大小(即邻域大小),以决定平均化的范围。参数选择的好坏将直接影响滤波效果。
  5. 应用滤波器:将选择好的滤波器应用于原始图像或经过噪声处理的图像。根据滤波器类型和参数,对图像进行滤波操作。这可以通过使用滤波器函数或编程语言提供的相应函数来完成。
  6. 结果分析与评估:显示滤波处理后的图像结果。通过可视化结果图像,评估滤波处理的效果是否符合预期。可以比较原始图像和处理后的图像,观察细节的改变、噪声的减少、边缘的增强等。
  7. 调整和优化(可选):根据结果分析,如果滤波处理的效果不理想,可以调整滤波器类型、参数或尝试其他滤波器来优化结果。这可能需要多次尝试和调整,以达到最佳的图像处理效果。
  8. 输出和保存:将滤波处理后的图像保存到文件中,以便进一步使用或分享。根据具体需求,可以选择不同的图像格式和压缩参数进行保存。

在数字图像滤波处理中,常见的滤波器类型包括高通滤波器、带通滤波器和锐化滤波器。高通滤波器用于增强图像的边缘和细节,可用于图像增强和边缘检测。带通滤波器用于去除特定频率范围内的噪声或信号,常用于图像恢复和频域处理。锐化滤波器用于增强图像的边缘和细节,使图像更加清晰和鲜明。

具体应用方面,高斯滤波器常用于平滑图像和去除高频噪声,通过降低图像的频率成分实现平滑效果。拉普拉斯滤波器用于增强图像的边缘,通过突出图像中的高频信息来提高边缘的清晰度。Sobel滤波器和Prewitt滤波器常用于边缘检测,通过计算像素周围区域的梯度来提取边缘。

此外,小波变换也是一种常见的图像滤波方法,它可以在时域和频域同时提供信息,并用于图像压缩、去噪和特征提取。小波滤波器可以通过选择不同的小波函数和尺度来实现不同的滤波效果,适用于不同类型的图像处理任务。补充说明一些常见的滤波器类型和其应用:

  1. 均值滤波器:均值滤波器是一种平滑图像和降低噪声的滤波器。它通过计算像素周围邻域的灰度值的平均值,并将该平均值作为中心像素的新灰度值。具体而言,均值滤波器将一个固定大小的滑动窗口应用于图像的每个像素,然后计算窗口内像素的平均灰度值,并将该平均值赋给中心像素。均值滤波器可以有效地平滑图像中的噪声,但也可能导致图像的细节损失。
  2. 中值滤波器:中值滤波器主要用于去除椒盐噪声等突发噪声。它通过将像素周围邻域的灰度值进行排序,并选择排序后的中间值作为中心像素的新灰度值。与均值滤波器不同,中值滤波器不使用平均值,而是使用中间值来替代可能受噪声影响的像素值。这使得中值滤波器在去除突发噪声方面表现出色,同时保留了图像的边缘和细节。
  3. 锐化滤波器:锐化滤波器主要用于增强图像的边缘和细节。它通过增加像素周围邻域的灰度差异来提高图像的锐度和对比度。具体而言,锐化滤波器将一个包含负权重的平滑滤波器与原始图像进行卷积操作,以凸显图像中的边缘和细节。
  4. Sobel滤波器:Sobel滤波器是一种常用于边缘检测的滤波器。它基于像素的灰度值梯度来检测图像中的水平和垂直边缘。Sobel滤波器通过应用两个3x3的卷积核(一个用于检测水平边缘,另一个用于检测垂直边缘)来计算图像的梯度。具体而言,滤波器通过对像素周围的邻域像素进行加权求和,然后计算该加权和的梯度大小。这样可以识别出图像中的边缘位置和方向。
  5. Laplacian滤波器:Laplacian滤波器用于边缘检测和图像增强。它通过计算像素周围邻域的二阶导数来检测图像中的边缘。Laplacian滤波器在图像中寻找灰度值的变化率最大的区域,并将其识别为边缘。通过对图像应用Laplacian滤波器,可以增强图像的边缘和细节,使其更加清晰和突出。

这些滤波器只是众多可用的滤波器中的一部分,根据具体的图像处理需求和特征,可以选择适当的滤波器类型和参数。数字图像滤波处理的步骤和滤波器选择应根据具体的应用场景和需求进行调整和优化,以获得最佳的图像处理结果。


🌍六、研究感悟

  1. 滤波器选择的重要性:

    • 考虑不同滤波器的特点和效果,根据实际需求和图像特点进行合理选择。
    • 例如,均值滤波器适用于平滑处理和轻度噪声去除,中值滤波器适用于突发噪声去除,频率域低通滤波器可以精细调控滤波效果。
  2. 参数调整的重要性:

    • 滤波器的参数(如模板大小、截止频率等)直接影响滤波效果。
    • 需要根据具体情况进行参数调整,通过观察不同参数设置下的图像变化,更好地理解参数对滤波效果的影响,并找到最佳的参数组合。
  3. 平衡噪声抑制和细节保留:

    • 滤波处理需要平衡噪声抑制和细节保留之间的关系。
    • 过度平滑可能导致细节丢失,而过度细节保留可能保留噪声,因此选择适当的滤波器和参数,以实现噪声抑制和细节保留的平衡。
  4. 定量评估的重要性:

    • 除了主观观察滤波结果外,使用定量评估指标(如均方误差和峰值信噪比)来衡量滤波效果。
    • 定量评估帮助客观地评估滤波器的性能,做出准确的选择。

 📝总结

数字图像处理领域如同一片未被探索的数码大陆,引领你勇敢涉足视觉科技的神秘领域。学习之旅同样是一场不同寻常的冒险,从基础概念到环境配置,逐步揭示更深层次的图像分析、算法实现和视觉智能的奥秘。

渴望挑战数字图像处理的学习路径和征服图像领域的技术?不妨点击下方链接,加入我们的社群,一同探讨更多视觉奇迹吧。我们推出了引领趋势的📸 系列专栏:《图像魔法 | 数字奇迹编织》,旨在深度探索数字图像处理技术的实际应用和创新。🌟🖼️

7dd2b7f171704327b7d8987c49da4628.gif

end.gif

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。