数字图像去噪典型算法及MATLAB实现

图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(只要是图像切割引起的黑图像上的白点噪声或者光电转换过程中产生的泊松噪声)等;

目前比较经典的图像去噪算法主要有以下三种:

均值滤波算法:也称线性滤波,只要思想为领域平均法,急用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,只要避开对景物边缘的平滑处理。

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。

Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。

实验一:均值滤波对高斯噪声的效果

fspecial用法

功能:fspecial函数用于创建预定义的滤波算子,其格式为:

h=fspecial(type);     h=fspecial(type,parameters)

参数type制定算子类型,parameters指定相应的参数,具体格式为:

type=‘average’,为均值滤波,参数为n,代表模板尺寸,用向量,默认值为【3,3】。

type=‘gaussian’,为高斯低通滤波器,参数有两个,n表示模板尺寸,默认值为【3,3】,sigma表示滤波器的标准差,默认值为0.5。

type=‘laplacian’,为拉普拉斯算子,参数alpha,用于控制拉普拉斯算子的形状,取值范围【0,1】,默认值为0.2。

type=‘log’,为拉普拉斯高斯算子,参数有两个,n表示模板尺寸,默认值为【3,3】,sigma表示滤波器的标准差,默认值为0.5。

type=‘prewitt’,为prewitt算子,用于边缘增强,无参数。

type=‘sobel’,为著名的sobel算子,用于边缘提取,无参数。

type=‘unsharp’,为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为【0,1】,默认值为0.2。

实验二:二维自适应维纳滤波对高斯噪声的滤除效果

维纳滤波的两个函数wiener2deconvwnr都能够完成维纳滤波的功能, deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,[m,n])返回有噪声图像I经过wierner(维纳)滤波后的图像,[m,n]指定滤波器窗口大小为m*n,默认值为3*3J=wiener2(I,[m,n],noise)指定噪声的功率,[J,noise]=wiener2(I,[m,n])在图像滤波的同时,返回噪声功率的估计值noise
imnoise的语法格式为
    J = imnoise(I,type)
    J = imnoise(I,type,parameters)
其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J
参数typeparameters用于确定噪声的类型和相应的参数。

实验三:对加入椒盐噪声的图像分别作均值、中值和维纳滤波

MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:
    C = conv2(A,B)
C = conv2(A,B)
返回矩阵AB的二维卷积C。若Ama×na的矩阵,Bmb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)
MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2filter2的语法格式为:
    Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:
其实filter2conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。
Fspecial函数用于创建预定义的滤波算子,其语法格式为:
    h = fspecial(type)
    h = fspecial(type,parameters)
参数type制定算子类型,parameters指定相应的参数,具体格式看上面。

运行效果:通过运行可以得出结论,即中值滤波对于去除椒盐噪声效果最好,而维纳滤波去除效果则较差。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。对点、线和尖顶较多的图像不宜采用中值滤波,因为一些细节点可能被当成噪声点。

实验四:分别使用二维统计滤波对椒盐噪声和高斯噪声进行滤波

MATLAB小波分析工具箱提供的用于图像去噪的函数有wrcoef2wpdencmp,其语法格式分别为:
    X=wrcoef2(type,C,S,’wname’)
    [xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)
其中,X=wrcoef2(type,C,S,’wname’)返回基于小波分解结构[C,S]的小波重构图像X。参数“type”等于a表示重构近似系数;等于h表示重构水平细节系数;等于v表示重构垂直细节系数,等于d表示重构对角细节系数。
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)是通过小波包定限(阈值化),返回输入信号或图像X的除噪结果xd。输入参数中,[treed,datad]为xd的最佳小波包分解结构;perfl2perf0表示L^2复原和压缩百分数;perf12=100*(xd的小波包系数向量范数/X的小波包系数向量范数) ^2Keepapp=1表示近似系数不能阈值化,否则可以阈值化;sorh=’s’为软阈值化,h为硬阈值化。

猜你喜欢

转载自blog.csdn.net/weixin_41774727/article/details/79567872