• 【老生谈算法】matlab实现图像平滑算法——图像平滑算法


    基于MATLAB的图像平滑算法实现及应用

    第一章、概述
    1.1 图像平滑概述
    在图像的获取和传输过程中原始图像会受到各种噪声的干扰,使图像质量下降。为了抑制噪声、改善图像质量,要对图像进行平滑处理。抑制或消除这些噪声而改善图像质量的过程称为图像的平滑。

    图像平滑的目的是为了消除噪声。噪声消除的方法又可以分为空间域或频率域,亦可以分为全局处理或局部处理,亦可以按线性平滑、非线性平滑和自适应平滑来区别。图像的平滑是一种实用的数字图像处理技术,一个较好的平滑处理方法应该既能消除图像噪声,又不使图像边缘轮廓和线条变模糊,这就是研究数字图像平滑处理要追求的目标。一般情况下,减少噪声的方法可以在空间域或频率域进行处理,主要有邻域平均法、中值滤波法、低通滤波法等,邻域平均法即通过提高信噪比,取得较好的平滑效果;空间域低通滤波采用低通滤波的方法去除噪声;以及频域低通滤波法通过除去其高频分量就能去掉噪声,从而使图像得到平滑。

    本设计将对图像平滑处理的两大方面即空间域和频率域,以及两种处理方向里的几种处理方法进行介绍,并对一些常用的简单平滑算法进行分析。

    1.2图像平滑应用
    图像平滑主要是为了消除被污染图像中的噪声,这是遥感图像处理研究的最基本内容之一,被广泛应用于图像显示、传输、分析、动画制作、媒体合成等多个方面。该技术是出于人类视觉系统的生理接受特点而设计的一种改善图像质量的方法。处理对象是在图像生成、传输、处理、显示等过程中受到多种因素扰动形成的加噪图像。在图像处理体系中,图像平滑是图像复原技术针对“一幅图像中唯一存在的退化是噪声”时的特例。

    1.3 图像噪声
    一幅图像在获取和传输等过程中,会受到各种各样噪声的干扰,其主要来源有三:一为在光电、电磁转换过程中引入的人为噪声;二为大气层电(磁)暴、闪电、电压、浪涌等引起的强脉冲性冲激噪声的干扰;三为自然起伏性噪声,由物理量的不连续性或粒子性所引起,这类噪声又可分成热噪声、散粒噪声等。一般在图像处理技术中常见的噪声有:加性噪声、乘性噪声、量化噪声、“盐和胡椒”噪声等。下面介绍两种主要的噪声。

    1、高斯噪声
    这种噪声主要来源于电子电路噪声和低照明度或高温带来的传感器噪声,也称为正态噪声,是在实践中经常用到的噪声模型。高斯随机变量z 的概率密度函数(PDF)由下式给出:
    在这里插入图片描述

    其中, z 表示图像像元的灰度值;μ表示z 的期望;σ表示z 的标准差。

    2、椒盐噪声
    主要来源于成像过程中的短暂停留和数据传输中产生的错误。其PDF 为:
    在这里插入图片描述

    如果b > a, 灰度值b 在图像中显示为一亮点,a 值显示为一暗点。如果Pa 和图像 均不为零,在图像上的表现类似于随机分布图像上的胡椒和盐粉微粒,因此称为椒盐噪声。当Pa 为零时,表现为“盐”噪声;当Pb 为零时,表现为“胡椒”噪声。

    图像中的噪声往往是和信号交织在一起的尤其是乘性噪声,如果平滑不当,就会使图像本身的细节如边缘轮廓‘线条等模糊不清,从而使图像质量降低。

    第2章、图像平滑方法
    2.1 空域低通滤波
    将空间域模板用于图像处理,通常称为空间滤波,而空间域模板称为空间滤波器。空间域滤波按线性和非线性特点有:线性、非线性平滑波器。

    线性平滑滤波器包括领域平均法(均值滤波器),非线性平滑滤波器有中值滤波器。

    2.1.1 均值滤波器
    对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。邻域平均法是空间域平滑技术。这种方法的基本思想是,在图像空间,假定有一副N×N个像素的原始图像f(x,y),用领域内几个像素的平均值去代替图像中的每一个像素点值的操作。经过平滑处理后得到一副图像 g(x,y), 其表达式如下:
    在这里插入图片描述

    式中: x,y=0,1,2,…,N-1;s为(x,y)点领域中点的坐标的集合,但不包括(x,y)点;M为集合内坐标点的总数。

    领域平均法有力地抑制了噪声,但随着领域的增大,图像的模糊程度也愈加严重。为了尽可能地减少模糊失真,也可采用阈值法减少由于领域平均而产生的模糊效应。其公式如下:
    在这里插入图片描述

    式中:T为规定的非负阈值。

    上述方法也可称为算术均值滤波器,除此之外还可以采用几何均值滤波器、谐波均值滤波器和逆谐波均值滤波器。几何均值滤波器所达到的平滑度可以与算术均值滤波器相比,但在滤波过程中会丢失更少的图像细节。谐波均值滤波器对“盐”噪声效果更好,但是不适用于“胡椒”噪声。它善于处理像高斯噪声那样的其他噪声。逆谐波均值滤波器更适合于处理脉冲噪声,但它有个缺点,就是必须要知道噪声是暗噪声还是亮噪声,以便于选择合适的滤波器阶数符号,如果阶数的符号选择错了可能会引起灾难性的后果。

    2.1.2 中值滤波器
    中值滤波是一种常用的去除噪声的非线性平滑滤波处理方法,其基本思想用图像像素点的领域灰度值的中值来代替该像素点的灰度值。二维中值滤波可以用下式表示:
    在这里插入图片描述

    式中:A为滤波窗口;
    在这里插入图片描述
    为二维数据序列。其主要功能是让周围象素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点,所以中值滤波对于滤除图像的椒盐噪声非常有效。中值滤波器可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,而且,在实际运算过程中不需要图像的统计特性,这也带来不少方便,但对一些细节多,特别是点、线、尖顶细节较多的图像不宜采用中值滤波的方法。如果希望强调中间点或距中间点最近的几个点的作用,则可采用加权中值滤波。其基本原理是改变窗口中变量的个数,可以使一个以上的变量等于同一点的值,然后对扩张后的数字集求中值。这种方法比简单中值滤波性能更好地从受噪声污染的图像中恢复出阶跃边缘以及其他细节。另有一种可以处理具有更大概率的冲激噪声的是自适应中值滤波器,在进行滤波处理时,能依赖一定条件而改变领域的大小。其优点是在平滑非冲激噪声时可以保存细节,所以既能除去“椒盐”噪声,平滑其他非冲激噪声,还能减少诸如物体边界细化或粗化等失真。

    2.2频域低通滤波
    在分析图像信号的频率特性时,对于一副图像,直流分量表示了图像的平均灰度,大面积的背景区域和缓变部分是低频分量,其边缘、细节、跳跃部分以及颗粒噪声都代表图像的高频分量。频域低通滤波就是除去其高频分量就能去掉噪声,从而使图像得到平滑。利用卷积定理,可以写成以下形式:
    G(u,v)=H(u,v)F(u,v)
    式中,F(u,v)是含噪图像的傅立叶变换,G(u,v)是平滑后图像的傅立叶变换,H (u,v)是传递函数。利用H(u,v)使F(u,v)的高频分量得到衰减,得到G(u,v)后再经过反变换就得到所希望的图像g(u,v)了。低通滤波平滑图像的系统框图如下所示:
    在这里插入图片描述

    图3-1图像频域低通滤波流程框图

    低通滤波法又分为以下几种:
    (1)理想低通滤波器(ILPF)
    一个理想的低通滤波器的传递函数由下式表示:
    在这里插入图片描述

    式中D0是一个规定的非负的量,它叫做理想低通滤波
    器的截止频率。D(u,v)代表从频率平面的原点到(u ,v)点的距离,即:
    在这里插入图片描述

    理想低通滤波器在处理过程中会产生较严重的模糊和振铃现象。

    (2)巴特沃思低通滤波器(BLPF)
    n阶巴待沃思滤波器的传递系数为
    在这里插入图片描述

    DLPF与ILPF不同,它的通带与阻带之间没有明显的不连续性,因此它没有“振铃”现象发生,模糊程度减少,但从它的传递函数特性曲线H(u,v)可以看出,在它的尾部保留有较多的高频,所以对噪声的平滑效果还不如ILPF(理想低通滤波器)。

    (3)指数滤波器(ELPF)
    其传递函数表示为:
    在这里插入图片描述

    由于ELPF具有比较平滑的过渡形,为此平滑后的图像没有“振铃”现象,而ELPF与BLPF相比.它具有更快的衰减特性,所以经ELPF滤波的图像比BLPF处理的图像稍微模糊一些。

    (4)梯形滤波器(TLPF)
    梯形滤波器的传递函数介于理想低通滤波器和具有平
    滑过渡带的低通滤波器之间,它的传递函数为:
    在这里插入图片描述

    式中:D0为梯形低通滤波器截止频率,D0、D1须满足D0<D1,它的性能介于ILPF和BLPF之间,对图像有一定的模糊和振铃效应。

    第三章、图像平滑处理与调试
    本课程设计中程序运行的环境是windows平台,并选用MATLAB作为编程开发工具,MATLAB是一种向量语言,它非常适合于进行图像处理。

    3.1模拟噪声图像
    图像增强操作主要是针对图像的各种噪声而言的,为了说明图像处理中的滤波方法和用途,需要模拟数字图像的各种噪声来分析滤波效果。
    MATLAB图像处理工具箱提供的噪声添加函数imnoise,它可以对图像添加一些典型的噪声。其语法:
    J=imnoise(I,type)
    J=imnoise(I,type,parameters)

    其功能是:返回对原图像I添加典型噪声的图像J,参数type和parameters用于确定噪声的类型和相应的参数。

    三种典型的噪声:
    type=’gaussian’时,为高斯噪声;
    type=’salt&pepper’时为椒盐噪声;
    type=’speckle’时为乘法噪声;

    图像数据读取函数imread从图像文件中读取图像数据。其基本调用格式如下:
    I=imread(文件名,’图像文件格式’)
    其功能是:将文件名指定的图像文件读入I中。

    I=imshow(A)
    其功能是显示图像A。

    如下程序就实现了3种噪声污染了的图像:

    I=imread('lena.bmp'); %读取图像
    I1=imnoise(I,'gaussian'); %加高斯噪声
    I2=imnoise(I,'salt & pepper',0.02); %加椒盐噪声
    I3=imnoise(I,'speckle'); %加乘性噪声
    subplot(221),imshow(I); %显示图像I
    subplot(222),imshow(I1);
    subplot(223),imshow(I2);
    subplot(224),imshow(I3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行结果如下:
    在这里插入图片描述
    在这里插入图片描述

    图3-1噪声污染的图像

    3.2均值滤波法
    在MATLAB图像处理工具箱中,提供了imfilter函数用于实现均值滤波,imfilter的语法格式为:
    B=imfilter(A,H)
    其功能是,用H模板对图像A进行均值滤波,
    取平均值滤波模版为
    H1=1/9[1 1 1;1 1 1;1 1 1];
    H2=1/25[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1];
    分别以这两个平均值滤波算子对图3-1中的四幅图像进行滤波操作。

    取H1,程序如下:

    I=imread('lena.bmp');
    I1=imnoise(I,'gaussian');
    I2=imnoise(I,'salt & pepper',0.02);
    I3=imnoise(I,'speckle');
    H1=ones(3,3)/9;%3×3领域模板
    J=imfilter(I,H1);%领域平均
    J1=imfilter(I1,H1);
    J2=imfilter(I2,H1);
    J3=imfilter(I3,H1);
    subplot(221),imshow(J);
    subplot(222),imshow(J1);
    subplot(223),imshow(J2);
    subplot(224),imshow(J3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果如图3-2

    取H2,程序如下:

    I=imread('lena.bmp');
    I1=imnoise(I,'gaussian');
    I2=imnoise(I,'salt & pepper',0.02);
    I3=imnoise(I,'speckle');
    H2=ones(5,5)/25;
    J=imfilter(I,H2);
    J1=imfilter(I1,H2);
    J2=imfilter(I2,H2);
    J3=imfilter(I3,H2);
    subplot(221),imshow(J);
    subplot(222),imshow(J1);
    subplot(223),imshow(J2);
    subplot(224),imshow(J3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果如图3-3:

    在这里插入图片描述
    在这里插入图片描述

    图3-2图3-1中图像经过平均值算子H1滤波后图像
    在这里插入图片描述
    在这里插入图片描述

    图3-3图3-1中图像经过平均值算子H2滤波后图像

    比较处理后的图像结果可知,领域平均处理后,图像的噪声得到了抑制,但图像变得相对模糊,对高斯噪声的平滑效果比较好。领域平均法的平滑效果与所选用的模板大小有关,模板尺寸越大,则图像的模糊程度越大。此时,消除噪声的效果将增强,但同时所得到的图像将变得更模糊,图像细节的锐化程度逐步减弱。

    3.3中值滤波法
    MATLAB图像处理工具箱提供了medfilt2函数用于中值滤波。其语法格式为:
    B=medfilt2(A)
    其功能为:用3×3的滤波窗口对图像A进行中值滤波;
    B=medfilt2(A,[m,n])
    其功能是:用大小为m×n的窗口对图像A进行中值滤波;
    B=medfilt2(A,‘indexed’,…)
    其功能为:对索引图像A进行中值滤波;
    可运行以下程序实现:
    I=imread(‘lena.bmp’);
    I1=imnoise(I,‘gaussian’);
    I2=imnoise(I,‘salt & pepper’,0.02);
    I3=imnoise(I,‘speckle’);
    J1=medfilt2(I1,[3,3]); %3×3中值滤波模板
    J2=medfilt2(I2,[3,3]);
    J3=medfilt2(I3,[3,3]);
    J4=medfilt2(I1,[5,5]); %5×5中值滤波模板
    J5=medfilt2(I2,[5,5]);
    J6=medfilt2(I3,[5,5]);
    figure,subplot(121),imshow(J1);
    subplot(122),imshow(J2);
    figure,subplot(121),imshow(J3);
    subplot(122),imshow(J4);
    figure,subplot(121),imshow(J5);
    subplot(122),imshow(J6);
    运行结果如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    图3-4受到高斯、椒盐及乘法噪

    声污染的图像经不同模版的中值滤波后的图像
    由图3-4可知,此方法能够非常好地将椒盐噪声去除掉,可见中值滤波方法对于椒盐噪声或脉冲式干扰具有很强的滤除作用,但对于高斯和乘性噪声效果不佳。与图3-2、图3-3相比,当噪声为椒盐噪声时,中值滤波器的效果比均值滤波好。因为这些干扰值与其邻近像素的灰度值有很大的差异,经过排序后取中值的结果就将此干扰强制变成与其邻近的某些像素值一样,从而达到去除干扰的效果。但是由于中值滤波方法在处理过程中会带来图像模糊,所以对于细节丰富,特别是点、线和尖顶细节较多的图像不适用。

    3.4频域低通滤波法
    频域低通滤波处理噪声图像的方法如下:
    首先构建二维滤波器d;
    [f1,f2]=freqspace(25,‘meshgrid’);
    Hd=zeros(25,25);
    d=sqrt(f1.2+f2.2)<0.5; %0.5为截止半径大小
    Hd(d)=1;
    h=fsamp2(Hd);
    figure,freqz2(h,[64,64]);
    在这里插入图片描述

    图3-5用频率采样法构建的二维滤波器
    然后用所构建的二维滤波器对以上图像进行滤波
    I=imread(‘lena.bmp’);
    I1=imnoise(I,‘gaussian’);
    I2=imnoise(I,‘salt & pepper’,0.02);
    I3=imnoise(I,‘speckle’);
    J=imfilter(I,h,‘replicate’);
    J1=imfilter(I1,h,‘replicate’);
    J2=imfilter(I2,h,‘replicate’);
    J3=imfilter(I3,h,‘replicate’);
    subplot(221),imshow(J);
    subplot(222),imshow(J1);
    subplot(223),imshow(J2);
    subplot(224),imshow(J3);
    其运行结果如下图:
    在这里插入图片描述

    在这里插入图片描述

    图3-6图3-1中图像经过二维滤波器h滤波后图像

    频域低通滤波具有更好的选择性,对噪声在一定范围内也可以起到抑制作用,同时也对图像的边缘细节和高频信息分量有更好的保持作用。使得图像在轮廓上显得更清晰。

    第四章、总结与体会
    图像平滑即消除噪声是图像处理中一个重要的方面,由于图像受到干扰而产生噪声的原因是多方面的,在对一幅图像进行平滑处理前,必须仔细分析其产生噪声的原因。选择合适的平滑方法,才能既消除图像噪声,又不使图像边缘轮廓或线条变模糊,经过这样的处理后,图像更符合人的视觉特性。随着数字图像处理的广泛应用,一些在人工智能、控制领域中成熟或前沿的数学模型如神经网络、模糊数学、自适应控制等相关技术在数字图像处理中逐渐采用,从而使建立的图像处理数学模型效率更高、性能更好。这些方法在不同程度上增强了去噪效果,但也带来了运算复杂、适用面窄等缺点。因而我们在选择消除噪声方法时,必须综合考虑各种因素,选择最适合的平滑方法。

  • 相关阅读:
    【MySQL】MySQL复制与高可用水平扩展架构实战(MySQL专栏启动)
    抽象类和接口
    静态时序分析简明教程(六)]时钟组与其他时钟特性
    golang pprof
    Matlab时间序列趋势分析与预测技术
    ​MPV,汽车产品里一个特殊品类的进化过程
    Java版ORM最初雏形
    经纬度相关计算
    视频汇聚/视频云存储/视频监控管理平台EasyCVR部署后无法正常启用是什么问题?该如何解决?
    研发过程中的文档管理与工具
  • 原文地址:https://blog.csdn.net/m0_53407570/article/details/125453679