MATLAB去噪算法非局部均值(NLmeans)的实现

首先先附上原论文,百度学术可以搜到。

Buades A, Coll B, Morel J M. A Non-Local Algorithm for Image Denoising[J]. 2005, 2(7):60-65 vol. 2.

简单讲一下原理

非局部均值是利用自然图像的信息冗余带来的自相似性来进行去噪的。认真学习了的同学应该都清楚,NLM是在非局部寻找相似块的方法来求相似块中心像素点的加权平均,用来代替该像素点的值,来实现去噪。

实现

在实际实现过程中,可以先设定自适应的(根据找到的块的相似度而定,相似度高就多选点,相似度低就少选点)要找的相似块数目,全部找到后再来做加权平均。但是,比较简单一点的是,将搜索区域内的块都用来求加权平均,对于相似度低的,我们就给他一个低的权重,但是这样做有一个坏处就是,搜索区域大到一定程度的时候再增大,效果反而会有所降低,所以没办法一股脑的直接以整幅图来做搜索区域,要根据你实际选取的图,一点一点的去试出最好的参数,所以最好对一张图做,图多了的话,他们适合的参数不一定一样,下面这个代码就是这么做的,本文后面我会给出我实验的参数作为参考,然后解释一下高斯平滑参数。

函数NLmeans我是参考别人写的,所以这里我就不贴出来了,可以到下面的链接去看。
我也不知道哪个是原创的哈,下面两个都可以。
NLmeans
NLmeans

PSNRs = zeros(12,1);
SSIMs = zeros(12,1);
noise_sigma=51; %噪声强度
image=cell(1,12);  %预分配内存以提高速度
for i = 1:12
image{i}= im2double(imread(['D:\Matlab2018a\work\NLmeans\Set12\',num2str(i),'.png']));%读入图片
imgnoise=(imnoise(image{i},'gaussian',0,(noise_sigma/255)^2));%添加噪声

imgnoise=im2uint8(imgnoise);%做一下类型转换
imgout=NLmeans(imgnoise,2,7,25);%调用写好的NLmeans函数,括号里参数的意思见function
imgout=uint8(imgout);
imgout=im2double(imgout);
imgnoise=im2double(imgnoise);%这三步都是作类型转换,便于计算PSNR和SSIM
imshow([image{i},imgnoise,imgout]); %展示一下效果

PSNRs(i,1)=psnr(image{i},imgout);
SSIMs(i,1)=ssim(image{i},imgout);
end

我是对测试集Set12做的测试;
分别对不同强度的高斯噪声、椒盐噪声、乘性噪声做的测试
以下是多次试验后,去噪效果最好的输入参数

高斯噪声sigma=15sigma=25sigma=35
块邻域(patch)半径222
搜索窗口(search)半径577
高斯平滑参数(h)122027
椒盐噪声密度=0.01密度=0.02密度=0.05
块邻域(patch)半径222
搜索窗口(search)半径777
高斯平滑参数(h)242832
高斯噪声sigma=15sigma=35sigma=51
块邻域(patch)半径222
搜索窗口(search)半径777
高斯平滑参数(h)71625

对于高斯平滑参数我是这样理解的,这个参数越大,则相似度高的块和相似度低的块的权重差异就越小,也就是说h越大权重分布得越平均,h越小权重越集中在相似度大的块上;
体现在输出的结果上就是:h越大,对噪点的滤除效果越好,但是输出图像也越平滑;h越小,剩余的噪点数目越多,平滑效果越低。所以这个参数需要找到一个平衡点,这和均值滤波的窗口大小选择很像。

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB中的局部均值(Non-local Means Denoising)是一种图像去技术,它不仅能够消除图像中的声,还能够保持图像的纹理细节。局部均值的思想是利用图像中相似区域的信息进行声估计和去除。 该方法首先在图像中寻找与每个像素相似的区域,然后计算这些相似区域中像素的加权平均值来估计声。具体步骤如下: 1. 首先,选取一个窗口大小和搜索半径,用于定义相似区域的范围。窗口大小决定了要计算平均值的邻域大小,而搜索半径决定了要搜索相似区域的范围。 2. 对于图像中的每个像素,定义一个相似度权重,用于衡量其与相似区域中其他像素的相似程度。这可以通过比较像素值的差异来计算,相似度越高,权重就越大。 3. 根据相似度权重对相似区域中的像素进行加权平均值计算,以得到每个像素的声估计。加权平均值可以通过对相似区域中每个像素乘以其相应的权重,并求和后进行归一化得到。 4. 最后,将声估计值减去原始图像像素值,得到去后的图像。 局部均值方法相对简单,易于实现,并且在去除高斯声、椒盐声等声类型上效果良好。然而,该方法的缺点是计算复杂度较高,尤其是在大尺寸图像上处理时速度较慢。因此,在实际应用中,需要根据图像大小和声类型来选择适当的局部均值参数,以达到较好的去效果和计算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值