✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
1. 图像去噪概述
图像去噪是一项重要的图像处理技术,其目的是去除图像中的噪声,提高图像质量。图像噪声通常是由图像采集、传输或处理过程中引入的。噪声的存在会降低图像的视觉质量,并影响后续的图像处理任务,如图像分割、目标检测和图像识别等。
2. 非局部均值NLM滤波算法
非局部均值NLM滤波算法是一种有效的图像去噪算法,它利用图像中的相似块之间的相关性来去除噪声。NLM滤波算法的基本思想是:对于图像中的每个像素,找到与该像素相似的其他像素,然后利用这些相似像素的平均值来估计该像素的去噪值。
NLM滤波算法的具体步骤如下:
-
计算图像中每个像素的相似性权重。相似性权重通常使用高斯核函数来计算,高斯核函数的带宽参数σ控制着相似性权重的衰减速度。
-
利用相似性权重对图像中的每个像素进行加权平均,得到该像素的去噪值。
3. SIGMA、PNSR、SSIM指标
为了评价图像去噪算法的性能,通常使用以下三个指标:
-
SIGMA (Structural Similarity Index Measure):结构相似性指数,用于衡量去噪后的图像与原始图像之间的结构相似性。
-
PNSR (Peak Signal-to-Noise Ratio):峰值信噪比,用于衡量去噪后的图像与原始图像之间的信噪比。
-
SSIM (Similarity Index):相似性指数,用于衡量去噪后的图像与原始图像之间的相似性。
📣 部分代码
clear,clc;
pauseTime = 1;
data_path = "..\Set12";
ext = ["*.jpg", "*.png", "*.jpeg"];
filePaths = [];
for i = 1 : length(ext)
filePaths = cat(1,filePaths, dir(fullfile(data_path,ext(i))));
end
noise_leval = [10,15,20,25,30,35,40,45,50,55,60,65,70];
for ii = 1:length(noise_leval)
PSNRs = zeros(1, length(filePaths));
SSIMs = zeros(1, length(filePaths));
sigma = noise_leval(ii);
for jj = 1:length(filePaths)
disp(['正在处理图片:', filePaths(jj).name]);
% 原图像
originImage = im2double(imread(filePaths(jj).name));
% 添加高斯噪声
imageWithNoise = single(originImage + sigma/255*randn(size(originImage)));
% imageWithNoise = imnoise(originImage,'gaussian',0,(sigma/255)^2);
% NL-Means滤波
% y = NLmeans(imageWithNoise,2,7,sigma/100);
y = imnlmfilt(imageWithNoise);
⛳️ 运行结果
🔗 参考文献
[1] 王金凤.基于小波变换和SSIM的非局部均值图像去噪方法研究[D].山东师范大学[2024-01-12].DOI:CNKI:CDMD:2.1015.601297.
[2] 王金凤,侯德文,刘明明.一种基于SSIM的非局部均值图像去噪算法[J].山东师范大学学报:自然科学版, 2014, 29(3):4.DOI:10.3969/j.issn.1001-4748.2014.03.006.
[3] 吴振静.基于小波和非局部均值的图像去噪算法研究[D].吉林大学,2011.DOI:CNKI:CDMD:2.1011.100738.