【Matlab 图像处理】图像平滑系统GUI

图像平滑系统(源码+项目文档+ppt)
(1)系统展示
【Matlab 图像处理】图像平滑系统GUI_第1张图片

(2)算法描述
1.预处理
首先对图像进行预处理——添加噪声,如:高斯噪声,椒盐噪声,随机噪声
高斯噪声:使用matlab内部提供函数imnoise实现,产生满足高斯分布的随机数即可实现加噪,高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。
【Matlab 图像处理】图像平滑系统GUI_第2张图片

指服从高斯分布(正态分布)的一类噪声,通常是因为不良照明和高温引起的传感器噪声。通常在RGB图像中,显现比较明显
【Matlab 图像处理】图像平滑系统GUI_第3张图片【Matlab 图像处理】图像平滑系统GUI_第4张图片
                1原图                                   2 高斯噪声
椒盐噪声:椒盐噪声又称为脉冲噪声,它是一种随机出现的白点(盐噪声)或者黑点(椒噪声),类似把椒盐撒在图像上,因此得名,如电视里的雪花噪声等。
椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果
在这里插入图片描述

如下图所示
【Matlab 图像处理】图像平滑系统GUI_第5张图片
随机噪声:随机噪声是一种前后独立的平衡随机过程,在任何时刻它的幅度 、波形及相位都是随机的 。但每一种噪声还 是服从于一定的统计分布规律。
【Matlab 图像处理】图像平滑系统GUI_第6张图片
【Matlab 图像处理】图像平滑系统GUI_第7张图片
噪声分类:
(1)泊松噪声:一般出现在照度非常小及用高倍电子线路放大的情况下,是由光的统计本质和图像传感器中光电转换过程引起的。在弱光情况下,影响更为严重,常用具有泊松密度分布的随机变量作为这类噪声的模型。泊松噪声可以认为是“椒盐”噪声。
(2)颗粒噪声:在显微镜下检查可发现,照片上光滑细致的影调在微观上其实呈现一种随机的颗粒性质。此外颗粒本身大小的不同及颗粒曝光所需光子数目的不同都会引入随机性。这些因素的外观表现称为颗粒性。对于多数应用,颗粒噪声可用高斯过程(白噪声)作为有效模型。
根据噪声和图像信号的关系又可以将其分为以下两种形式:

  • 加性噪声:与图像信号不相关
  • 乘性噪声:与图像信号相关
    2.图像平滑处理算法
    空间域平滑滤波:
    空域滤波的操作对象为图像的像素灰度值。空域滤波主要指的是基于图像空间的邻域
    模板运算,也就是说滤波处理要考虑到图像中处理像素点与其周边邻域像素之间的联系。
    空间域平滑滤波分为线性和非线性平滑滤波。线性平滑滤波主要有均值滤波和高斯滤
    波。非线性平滑滤波有中值滤波、双边滤波等。
    (1)线性平滑滤波
    均值滤波:又称邻域平均法,是图像空间域平滑处理中最基本的方法之一,其基本思想是以某一像素为中心,在它的周围选择一邻域,将邻域内所有点的均值(灰度值相加求平均)来代替原来像素值,通过降低噪声点与周围像素点的差值以去除噪声点。
    【Matlab 图像处理】图像平滑系统GUI_第8张图片
    优点:若邻域内有噪声存在,经过均值滤波后噪声的幅度会大为降低。
    缺点:点与点之间的灰度差值会变小,不能很好的保护细节,边缘变得模糊。邻域越大,模糊越厉害。对高斯噪声表现较好,对椒盐噪声表现较差。
    高斯滤波:图像的高斯滤波是图像与高斯正态分布函数的卷积运算,适用于抑制服从正态
    分布的高斯噪声。零均值、标准差为1的一维、二维高斯函数的正态分布曲线如图所示。
    可以看出,正态分布曲线为钟形形状,表明离中心原点越近,高斯函数取值越大;离
    中心原点越远,高斯函数取值越小。这一特性使得正态分布常被用来进行权值分配。
    【Matlab 图像处理】图像平滑系统GUI_第9张图片
    高斯滤波的基本原理是以某一像素为中心,在它的周围选择一个局部邻域,把邻域内像
    素的灰度按照高斯正态分布曲线进行统计,分配相应的权值系数,然后将邻域内所有点的
    加权平均值来代替原来的像素值,通过降低噪声点与周围像素点的差值以去除噪声点。
    【Matlab 图像处理】图像平滑系统GUI_第10张图片
    图中参数sigma2为高斯滤波中的重要参数标准差。
    标准差σ是影响高斯模板生成的关键参数。σ代表着数据的离散程度。σ值越小,分布愈
    集中,生成的高斯模板的中心系数值远远大于周围的系数值,则对图像的平滑效果就越不
    明显;反之,σ值越大,分布愈分散,生成的高斯模板中不同系数值差别不大,类似均值
    模板,对图像的平滑效果较明显。
    (2)非线性平滑滤波
    线性平滑滤波器虽然对噪声有抑制作用,但同时会使图像变得模糊,并且当图像中出现非
    线性或非高斯统计特性的噪声时,线性滤波难以胜任,尤其不能有效去除冲激噪声。
    中值滤波:图像中噪声的出现使该点像素比周围像素暗(亮)许多,若把其周围像素
    值排序,噪声点的值必然位于序列的前(后)端。序列的中值一般未受到噪声污染,所以
    可以用中值取代原像素点的值来滤除噪声。
    【Matlab 图像处理】图像平滑系统GUI_第11张图片
    优点:中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像
    尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,
    对高斯噪声表现较差。
    缺点:对于高斯噪声,均值滤波比中值滤波效果好。因为受高斯噪声污染的图像中每点都
    是污染点,没有干净点。若噪声正态分布的均值为0,则均值滤波可以消除噪声。中值滤
    波不适于直接处理点线细节多的图像。因为中值滤波在滤除噪声的同时,可能把有用的细
    节信息滤掉。
    双边滤波:高斯滤波平滑由于仅考虑了位置对中心像素的影响,会较明显地模糊边缘。为
    了能够在消除噪声的同时很好地保留边缘,双边滤波(Bilateral filter)是一种有效的方法。
    双边滤波是由Tomasi和Manduchi提出的一种非线性平滑滤波方法,具有非迭代、局部
    和简单等特性。“双边”则意味着平滑滤波时不仅考虑邻域内像素的空间邻近性,而且要考
    虑邻域内像素的灰度相似性。
    简单地说,双边滤波就是一种局部加权平均。由于双边滤波比高斯滤波多了一个高斯方差,
    所以在边缘附近,距离较远的像素不会太多影响到边缘上的像素值,这样就保证边缘像素
    不会发生较大改变。
    【Matlab 图像处理】图像平滑系统GUI_第12张图片
    双边滤波具有两个重要关键参数:σs和σr,。σs用来控制空间邻近度,其大小决定滤波窗口中包含的像素个数。当σs变大时,窗口中包含的像素变多,距离远的像素点也能影响到中心像素点,平滑程度也越高。σr用来控制灰度邻近度,当σr变大时,则灰度差值较大的点也能影响中心点的像素值,但灰度差值大于σr,的像素将不参与运算,使得能够保留图像高频边缘的灰度信息。而当σs,、σr,取值很小时,图像几乎不会产生平滑的效果。可看出,σs,和σr的参数选择直接影响双边滤波的输出结果,也就是图像的平滑程度。
    优点:1)双边滤波表述简单,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。2)双边滤波效果完全取决于两个参数,这两个参数可控制滤波核的大小以及边缘保持的强弱。3)双边滤波是一种非迭代算法。4)基于数值化策略,双边滤波计算代价可大大降低。

频域平滑滤波:
在傅里叶变换域,变换系数反映了某些图像特征。如频谱的直流分量比例于图像的平均亮
度,噪声对应于频率较高的区域,图像大部分实体位于频率较低的区域等。变换域具有的
这些内在特性常被用于图像的频域滤波。
【Matlab 图像处理】图像平滑系统GUI_第13张图片
频率平滑滤波的目的是为了实现在频率域去除噪声。由于噪声表现为高频成分,因此可以
通过构造一个低通滤波器H(u,v),使得低频分量顺利通过而有效地阻止或减弱高频分量,即
可滤除频域噪声,再经反变换来取得平滑图像。频率平滑滤波的关键为设计合适的频域低
通滤波器H(u,v)。常用的低通滤波器有:理想低通滤波器、巴特沃斯低通滤波器、指数低
通滤波器以及梯形低通滤波器等,均能在图像有噪声干扰时起到改善的作用。
理想低通滤波
理想低通滤波器(LPF)是在傅里叶平面上半径为D。的圆形滤波器,其传递函数为
在这里插入图片描述
D0>0,为理想低通滤波器的截止频率
【Matlab 图像处理】图像平滑系统GUI_第14张图片
                        理想低通滤波器透视图
“理想”是指小于D0的频率可以完全不受影响地通过滤波器,而大于D0的频率则完全通不过。也就是说,D0半径内的频率分量无损通过,而半径外的频率分量会被滤除。在D0适当的情况下,理想低通滤波器不失为简单易行的平滑工具。但由于滤除的高频分量中含有大量的边缘信息,因此采用该滤波器在去噪声的同时将会导致边缘信息损失而发生图像边缘模糊现象,并且会产生“振铃”效应。
巴特沃斯低通滤波:
理想低通滤波器的截止频率是直上直下的,在物理上不可实现。而巴特沃斯(Butterworth) 低通滤波器的通带和阻带之间没有明显的不连续性,因此不会出现“振铃”效应,模糊程度也 相对要小。因此,巴特沃斯低通滤波器(BLPF)又称为最大平坦滤波器。一个阶为n,
截止频率为 D0的巴特沃斯低通滤波器的转移函数H(u,w)由下式决定:
在这里插入图片描述

其中,n为阶数,取正整数,用来控制曲线的衰减速度。在n=1,D(u,v)=D。时,对上面两 式来说,其H(u,v)将分别为1/2和1/√2。
【Matlab 图像处理】图像平滑系统GUI_第15张图片
D0=10的巴特沃斯低通滤波器的转移函数透视图、显示图像以及=1,2,3,4时的不同阶数剖面图,其特性是连续衰减,而不像理想滤波器那样陡峭和明显的不 连续。因此采用该滤波器在抑制噪声的同时,图像边缘的模糊程度大大减小且振铃效应减弱。
【Matlab 图像处理】图像平滑系统GUI_第16张图片
采用D0=30、n=1,2,3,4的巴特沃斯低通滤波器 的去噪效果,可以看出,噪声点被有效地去除,但图像也变得模糊,并且随着阶数的增加, 图像的振铃效应越来越明显。
指数低通滤波:
指数低通滤波器(ELPF)的转移函数H(u,v)定义为
在这里插入图片描述

其中,D0是截止频率。当D(u,v)=D0时,指数低通滤波器下降到其最大值的0.607倍处。
梯形低通滤波:
梯形低通滤波器(TLPF)的传递函数介于理想低通滤波器和具有平滑过渡带的低通滤波器之间,其表达式为:
【Matlab 图像处理】图像平滑系统GUI_第17张图片

其中,D0为截止频率,D0、D1需满足D0

图像处理精度比较:
将处理后图像与原图作减法,可求得处理过程所过滤的图像,进而得到图像平滑处理的精确度,并计算MSE(均方根误差),SNR(信噪比),PSNR(峰值信噪比),SSIM(结构相似性)
MSE:参数估计中均方误差是指参数估计值与参数真值之差平方的期望值,记为MSE。
SNR:图像的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法可以近似估计图像信噪比,即信号与噪声的方差之比。首先计算图像所有象素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数
在这里插入图片描述
PSNR:用于衡量两张图像之间差异,例如压缩图像与原始图像,评估压缩图像质量;复原图像,评估复原算法性能等。PSNR 最小值为 0,PSNR 越大,两张图像差异越小;
PSNR 计算简单,物理意义清晰,但是,这种基于 MSE 的评价指标并不能很好的按人眼的感受来衡量两张图像的相似度,
在这里插入图片描述

SSIM:结构相似性基于人眼会提取图像中结构化信息的假设,比传统方式更符合人眼视觉感知。
在这里插入图片描述
【Matlab 图像处理】图像平滑系统GUI_第18张图片
拓展:
k-means聚类:
K-means属于无监督学习方法K表示类别数,Means表示均值,K一般由人工来指定,或通过层次聚类(Hierarchical Clustering)的方法获得数据的类别数量作为选择K值的参考选择较大的K可以降低数据的误差,但会增加过拟合的风险。
算法:
(1)随机选取K个初始质心
(2)分别计算所有样本到这K个质心的距离
(3)如果样本离质心Si最近,那么这个样本属于Si点群;如果到多个质心的距离相等,则可划分到任意组中
(4)按距离对所有样本分完组之后,计算每个组的均值(最简单的方法就是求样本每个维度的平均值),作为新的质心
(5)重复(2)(3)(4)直到新的质心和原质心相等,算法结束
加载图像,选择需要聚类个数
【Matlab 图像处理】图像平滑系统GUI_第19张图片
聚类结果展示:
【Matlab 图像处理】图像平滑系统GUI_第20张图片

总结

在很多时候图像会受很多因素的影响,在图像的获取传输和存储过程中,常常会受到各种噪声的干扰和影响,而导致图像质量下降。因此产生了很多关于图像平滑处理的算法。平滑从信号处理的角度看就是去除其中的高频信息,保留低频信息。因此我们可以对图像实施低通滤波。低通滤波可以去除图像中的噪声,对图像进行平滑。对于不同的噪声,不同的图像,以及对于图像不同的处理要求,我们有很多方法去实现图像平滑。在本系统中,集成了大部分常用的平滑算法,如高斯滤波,均值滤波,双边滤波,中值滤波,理性低通滤波,高斯低通滤波,以及巴特沃斯低通滤波等。关于频域低通滤波的平滑滤波还有指数低通滤波,梯形低通滤波。除此之外还有很多图像平滑算法,如基于偏微分方程的平滑滤波。通过此次实验我对于图像平滑方面有了更深的理解,对于已有的平滑算法做了更深入的学习。

问题与解决方法:
(1) 在使用滤波进行平滑处理时,先对图像进行了灰度化,但是这样处理后的图像为灰度图像,而不能很好的观察平滑滤波效果
解决方法:对RGB图像三通道进行分量,对每一个分量进行平滑滤波,然后将三通道使用cat函数合并,即可得到彩色图像。
(2) 在将一个脚本改为函数时,需注意输出变量与输入变量,在函数中指定变量赋值给输出变量,在调用函数时,一定要注意函数的参数个数与函数使用时赋予的参数要一致。
(3) 在图像处理中会出现图像像素点值改变为其他数值,而我们需要图像像素点范围为0-255时,可以使用uint8函数,函数的做法是把大于255的数全部强制置为255,而小于255的部分则保持原样不变。若希望将0-65535的灰度值映射到0-255,则可以采用以下方法:

uint8(double(number)/65535*255)

你可能感兴趣的:(图像处理matlab,matlab,图像处理,开发语言)