【图像去噪】基于matlab高斯+均值+中值+双边滤波图像去噪【含Matlab源码 1872期】
一、高斯+均值+中值+双边滤波图像去噪简介
1 数字图像去噪技术简述
1.1 研究背景及目的
图像是人类认识世界的第一视角,我们可以通过图像获得比较真实的信息和直观的结果。但实际上,在产生和传输过程中的信号不可避免地会与一些噪声混合.因此,在接收图像信号时,消除或降低噪声成为获得高清图像的重要方法.在对图像进行去噪之前,我们需要对噪声图像进行建模,获得噪声的原始信息.由于噪声生成是不可避免的,因此,只能选择通过相应的方法进行消除,这也是图像噪声消除问题的研究意义.
随着计算机应用技术高速发展,人类接触的信息不再是单纯的语音信号.图像信号越多,数字信息就越多,也就会存在更多的干扰和噪声.随着社会发展,人们对于接收外部信息源的图像质量的要求不断增加,这对去除噪声的技术也提出了更高的要求.随着人们的研究不断深入,很多关于图像处理技术在不断提高,图像去噪技术也越来越完善.
当今的图像去噪已经是一个相对视觉化的研究主题,其范围非常广泛,对军事和医学领域有很大帮助.因此,进一步从计算机层面对图像的去噪进行研究具有重要的现实意义.
1.2 数字图像去噪技术研究现状
现实中的图像信号不可避免的都会有噪声信号.因此,消除噪音的唯一方法是对噪声信号进行过滤.根据图像和噪声的性质,科学家们提出了多种去除噪声的方法.随着现代科学技术的发展,这些方法逐渐被应用到实践之中,比较常用的有基于模糊指数概念的自适应中值滤波方法、基于模糊加权法的平均滤波方法等.尽管这两种方法应用的比较广泛,但也有一些缺点.例如,当多个噪声同时干扰图像信号时,上述两种方法的结果并不理想,因为在去除噪声的同时平滑了图像的细节,图像细节变模糊,图像质量也随之下降.
图像和视觉,是人类获取信息最为直接的手段和方法,人类的其他器官虽然也存在接收信息的能力,但是,一般情况而言,视觉永远是第一位的.人们借助视觉认识世界往往是直观的,我们需要对所见的事件进行相应的处理.在事件处理过程,主要包括图像基本的存储过程、原始图像的平滑和噪声滤除过程等,这样我们获得的图像信息就能更加的直观和高效.因为,图像噪声的存在,主要是对图像的识别产生影响.
图像的处理过程是一个综合学科的集合过程,包括信号学、数学、计算机学、统计学等多学科,对学科的综合化处理就是算法的复杂化过程.我们在复杂的情况下,往往会对所研究的噪声进行相应的规律总结.因此,从数字角度进行分析,图像噪声一般有高斯噪声、白噪声、泊松噪声等一些规律性比较强的噪声,对于一些不符合变化规律的噪声,可以通过滤波进行平滑处理,比较常见的滤波方法包括中值滤波、高斯滤波等.根据不同的噪声类型和图像类型,在进行图像分析之前,需要对噪声进行分析,并且对不同的分析要求采用不同的方法进行降噪处理.
高斯噪声的噪声信号分布主要是高斯分布,该类型的噪声是常见的系统噪声.对于图像而言,其主要是在图像形成过程中的图像介质传播所造成的噪声干扰,这样的噪声可以定义为是一种比较强的量化噪声,是在图像形成过程中不可避免的噪声干扰.
噪声的处理过程是由频域完成[11].将图像从空间转换到变换域的变换方法常用的有傅立叶变换、小波变换等.对于噪声处理而言,图像的信息均可转为数字,在进行信号处理的过程中,我们需要将图像数字信号转换到频率域中,在频率域中可剥离出高斯噪声,并通过相应的滤波器,对噪声进行处理,再将处理之后的信号通过反变换,应用到图像域之中,就得到了输出的图像.
2 高斯滤波算法及实现
总体来说,高斯滤波器是一种线性的平滑类型的滤波器,其对于处理系统性的高斯噪声效果非常好,主要是对图像对应的数字信号进行加权平均的处理.比如,任何一个噪声的位置结果,采用周边的加权平均,就能让噪声点消失在周围的加权平均结果中,在具体实施的过程中,主要是用加权平均函数将结果进行加权,之后,用平均值覆盖特殊值.
噪声去除过程,实际上都是滤波器的实现过程.高斯滤波器就是对高斯噪声进行滤波,从而得到一个信噪比较好的图像,信噪比越高,无失真的结果就越强.对于一个图像来说,如果噪声一直存在,就可能会造成不良的噪声传递.高斯滤波的过程首先是对信号进行高斯的平滑处理.随后,对噪声进行相应的剔除.高斯滤波器的存在目的是构建一个滤波器,进行二阶过滤,并且进行相应的能量转化过程,在频率域的范围内,能量是相对直接的体现.我们往往不能直接使用理想滤波器来进行处理信号,因为这样很可能会存在信号的振铃现象.高斯滤波器的优势在于其系统函数比较可靠,可以有效地对产生的系统噪声进行平滑处理,避免不良振铃现象.
滤波器即是建立一个模型,通过模型将图像数据进行能量转化,而噪声是属于高频率部分,通过高斯滤波器平滑处理后可降低噪声对图像的影响.
3 均值滤波
均值滤波也称为线性滤波, 其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值替代原图像中的各个像素值, 即对待处理的当前像素点 (x, y) , 选择一个模板, 该模板由其近邻的若干像素组成, 求模板中所有像素的均值, 再把该均值赋予当前像素点 (x, y) , 作为处理后图像在该点上的灰度g (x, y) , 即g(x,y)=1M∑f∈sf(x,y), 其中, s为模板, M为该模板中包含当前像素在内的像素总个数。
4 中值滤波
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。中值滤波器的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替, 让周围像素灰度值的差比较大的像素改取与周围的像素值接近的值, 从而可以消除孤立的噪声点。方法是取某种结构的二维滑动模板, 将模板内像素按照像素值的大小进行排序, 生成单调上升 (或下降) 的二维数据序列。二维中值滤波输出为g (x, y) =Med{f (x-k, y-l) , (k, l) ∈W}, 其中, f (x, y) , g (x, y) 分别为原图像和处理后图像。W为二维模板, 通常为3×3, 5×5区域, 也可以为不同的形状, 如线状, 圆形, 十字形, 圆环形等。
5 双边滤波
通过对双边的滤波进行分析和研究,笔者认为,双边滤波和高斯滤波的算法是有区别的.和高斯滤波不同,双边滤波方法是一种非线性的图像信号数字处理方法,双边滤波可以覆盖高斯滤波的算法,也就兼顾了灰度点值和毛边去掉的双重效果.但对于图像而言,选择高斯滤波和双边滤波的结合进行去噪处理相对来说更好一些.具体从算法而言,双边滤波是从高斯滤波转变而来,对高斯滤波的函数进行双卷积处理,将滤波权重系数进行优化,滤波权重的系数和图像的频率域卷积结果进行乘积处理,由此得到了在去除灰度基础上的去除毛边的效果,发挥了高斯滤波噪声的优势,同时也得到了双边平滑优化效果.
理论上来说,双边滤波得到的结果效果比较好,其图像的平滑程度较好,实用性强.再来说明一下双边滤波过程中的权重加强情况,双边滤波的加权系数总体上来说是高斯滤波和卷积后的结果系数的非线性组合,主要利用的是空间的图像近似函数和亮度近似函数的系数记性卷积计算.对于前者而言,随着计算步长的变化,图像得到的像素点与后面中心点之间的数学距离会变小,如果增加图像的清晰度,则这种距离就会变小.也就是说,像素越高的图像,在处理过程中,双边滤波器会转化为相应的低通滤波器,使得图像的边缘能够得到更好的保护.一般来说,双边滤波的结果受3个参数的影响,分别是滤波器半宽N、参数δs和δr.对于一般的双边滤波分析来说,滤波过程中的临近因子和亮度的变化因子都是比较剧烈的.我们在进行图像处理的过程中,不能仅仅保留高频或者低频的信号,因此,双边滤波的使用,可以对频率域比较宽的图像处理有很好的保护,其效果的实现主要是通过双边滤波的函数完成.在双边的滤波器中,会生成像素的输出结果.根据前人的研究来看,双边滤波拥有非线性处理能力强、局部处理效果好并且计算过程没有迭代的特性.但双边滤波的不足之处是容易将本身图像的信号处理掉,这一点就需要高斯滤波的配合.换言之,如果前期不用灰度处理或者其他的处理方式,将毛边进行覆盖,那么双边滤波的效果可能就不理想,下面给出双边滤波的数学模型.
双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,公式表示:
权重系数w(i,j,k,l)取决于定义域
利用Matlab软件的双边滤波方法对图1进行处理,得到图3、图4和图5的效果,在Matlab中构建 :function B = bfilter2(A,w,sigma)和function B =bfltGray(A,w,sigma_d,sigma_r)的函数.
二、部分源代码
function B = bfilter2(A,w,sigma)
%确认输入图形存在且有效
% Verify that the input image exists and is valid.
if ~exist('A','var') || isempty(A)
error('Input image A is undefined or invalid.');
end
if ~isfloat(A) || ~sum([1,3] == size(A,3)) || ...
min(A(:)) < 0 || max(A(:)) > 1
error(['Input image A must be a double precision ',...
'matrix of size NxMx1 or NxMx3 on the closed ',...
'interval [0,1].']);
end
%验证双边筛选器窗口大小
% Verify bilateral filter window size.
if ~exist('w','var') || isempty(w) || ...
numel(w) ~= 1 || w < 1
w = 5;
end
w = ceil(w);
%验证双边滤波器标准偏差
% Verify bilateral filter standard deviations.
if ~exist('sigma','var') || isempty(sigma) || ...
numel(sigma) ~= 2 || sigma(1) <= 0 || sigma(2) <= 0
sigma = [3 0.1];
end
%应用彩色或者灰度双边过滤
% Apply either grayscale or color bilateral filtering.
if size(A,3) == 1
B = bfltGray(A,w,sigma(1),sigma(2));
else
B = bfltColor(A,w,sigma(1),sigma(2));
end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]胡蕾,张伟,覃庆炎.几种图像去噪算法的应用分析[J].信息技术. 2007,(07)
[6]潘梁静.基于高斯滤波和双边滤波的数字图像去噪算法[J].商丘职业技术学院学报. 2020,19(01)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
- 点赞
- 收藏
- 关注作者
评论(0)