1 简介
BM3D算法借鉴了非局部均值(NL-Means)方法的非局部块匹配思想,在此基础上,将图像相似块堆叠成三维矩阵后进行协同滤波处理,再将处理结果聚合到原图像块的位置。BM3D算法由两个大的步骤组成,即初步估计和最终估计阶段,每一阶段又分别包含三个部分:块匹配、协同滤波和聚合。
2 部分代码
clear all;clc ;
pauseTime = 1;
filePaths = 'cameraman256.png';%%改文件名字就在这个,图片复制在这个目录就行
noise_leval = [10,15,20,25,30,35,40,45,50,55,60,65,70];
for i = 1:length(noise_leval)
PSNRs = [];
SSIMs = [];
sigma = noise_leval(i);
for j = 1:length(filePaths)
y = imread(filePaths);
if length(size(y)) > 2
y = rgb2gray(y);
end
y = im2double(y);
z = y + (sigma/255)*randn(size(y));
% 生成噪声图像
[PSNR,SSIM,y_est] = BM3D(y, z, sigma, 'np', 0);
PSNRs(j) = PSNR;
SSIMs(j) = SSIM;
imshow(cat(2,im2uint8(y),im2uint8(z),im2uint8(y_est)));
title([num2str(sigma),num2str(PSNR,'%2.2f'),'dB',' ',num2str(SSIMs(j),'%2.4f')])
drawnow;
pause(pauseTime)
end
disp(['sigma:', sigma,' psnr:', mean(PSNRs),' ssim:', mean(SSIMs)]);
end
3 仿真结果
4 参考文献
[1]郑建明, and 王志伟. "BM3D的声呐图像去噪算法参数分析.".
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页