1 简介

图像在获取和传输过程中,不可避免地受到外部和内部的干扰,常常因为各种因素的影响而被加入很多噪声,这十分严重的影响了人们对传输后图像信息的读取。因此通过一定方法将被噪声污染的图像进行去噪处理一直是现代图像研究中重要的问题,受到越来越多研究者的关注与重视。A.Buades等基于各经典去噪算法,如领域滤波、全差分滤波、异性扩散等提出非局部均值滤波(Non-Local means,NLM)算法的模型,同时该算法引入图像去噪。实践证实该模型去噪效果佳。NLM的原理是运用图像内部冗余信息,结合权重系数加权平均计算各相似邻域像素灰度值,估计噪声图像像素点灰度值。本文通过研究非局部均值滤波的算法,改进了算法的两个关键问题:加权核函数的选定和相似度的衡量。非局部均值滤波算法中的相似度衡量是由像素邻域之间的高斯加权欧氏距离决定的,同时在加权核函数的选择上使用的是指数型函数。这使得该算法仅能够有效的去除平滑区域的噪声,而未能有效去除纹理、边缘区域噪声。因此高斯加权距离确定权重系数和指数型加权核函数具有一定的局限性。

2 部分代码

function nX = noise(varargin)
% 图像加入噪声
% 传入参数依次为:
% X - 待处理的图像
% type - 噪声类型
% variance/density - 高斯噪声的方差/椒盐噪声的密度(optional)
% M - 控制噪声区域的模板(optional)
% 参数默认值
variance = 0.01; %高斯噪声的方差 默认值为0.01
density = 0.05; %椒盐噪声的密度 默认值为0.05
M = ones(size(varargin{1})); %控制噪声区域的模板 默认对整个图像加噪声
X = varargin{1}; %待处理的图像
type = varargin{2}; %噪声类型
% 可选参数
if nargin>=3
variance = varargin{3};
density = varargin{3};
if nargin == 4
M = varargin{4};
end
end
switch type
case 'gaussian' %高斯噪声
n = randn(size(X)) * sqrt(variance);
n = n .* M;
nX = X + n;
case 'salt & pepper' %椒盐噪声
nX = X;
n = rand(size(X));
n = n .* M;
ind = find( n>0 & n<density/2);
nX(ind) = 0;
ind = find( n>=density/2 & n<density);
nX(ind) = 1;
end

3 仿真结果

【图像去噪】基于非局部均值(NLM)滤波图像去噪含Matlab源码_核函数

【图像去噪】基于非局部均值(NLM)滤波图像去噪含Matlab源码_去噪_02


4 参考文献

[1]王银杰. 基于非局部均值滤波的图像去噪算法[D]. 哈尔滨理工大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【图像去噪】基于非局部均值(NLM)滤波图像去噪含Matlab源码_去噪_03