非局域均值去噪

转载 2016年05月30日 17:13:28

http://www.cnblogs.com/luo-peng/p/4785922.html

非局部均值(NL-means)是近年来提出的一项新型的去噪技术。该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持图像的细节特征。基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的像素加权平均得到。

 理论上,该算法需要在整个图像范围内判断像素间的相似度,也就是说,每处理一个像素点时,都要计算它与图像中所有像素点间的相似度。但是考虑到效率问题,实现的时候,会设定两个固定大小的窗口:搜索窗口和邻域窗口。邻域窗口在搜索窗口中滑动,根据邻域间的相似性确定像素的权值。

下图是NL-means算法执行过程,大窗口是以目标像素为中心的搜索窗口,两个灰色小窗口分别是以为中心的邻域窗口。其中以为中心的邻域窗口在搜索窗口中滑动,通过计算两个邻域窗口间的相似程度为赋以权值 。

NL-means执行过程

设含噪声图像为,去噪后的图像为中像素点处的灰度值通过如下方式得到:

其中权值表示像素点间的相似度,它的值由以为中心的矩形邻域间的距离决定:

其中

为归一化系数,为平滑参数,控制高斯函数的衰减程度。越大高斯函数变化越平缓,去噪水平越高,但同时也会导致图像越模糊。越小,边缘细节成分保持得越多,但会残留过多的噪声点。的具体取值应当以图像中的噪声水平为依据。

程序:

复制代码
close all;
clear all;
clc
I=double(imread('lena.tif'));
I=I+10*randn(size(I));
tic
O1=NLmeans(I,2,5,10);
toc
imshow([I,O1],[]);
复制代码
复制代码
function DenoisedImg=NLmeans(I,ds,Ds,h)
%I:含噪声图像
%ds:邻域窗口半径
%Ds:搜索窗口半径
%h:高斯函数平滑参数
%DenoisedImg:去噪图像
I=double(I);
[m,n]=size(I);
DenoisedImg=zeros(m,n);
PaddedImg = padarray(I,[ds,ds],'symmetric','both');
kernel=ones(2*ds+1,2*ds+1);
kernel=kernel./((2*ds+1)*(2*ds+1));
h2=h*h;
for i=1:m
    for j=1:n
        i1=i+ds;
        j1=j+ds;
        W1=PaddedImg(i1-ds:i1+ds,j1-ds:j1+ds);%邻域窗口1
        wmax=0;
        average=0;
        sweight=0;
        %%搜索窗口
        rmin = max(i1-Ds,ds+1);
        rmax = min(i1+Ds,m+ds);
        smin = max(j1-Ds,ds+1);
        smax = min(j1+Ds,n+ds);
        for r=rmin:rmax
            for s=smin:smax
                if(r==i1&&s==j1)
                continue;
                end
                W2=PaddedImg(r-ds:r+ds,s-ds:s+ds);%邻域窗口2
                Dist2=sum(sum(kernel.*(W1-W2).*(W1-W2)));%邻域间距离
                w=exp(-Dist2/h2);
                if(w>wmax)
                    wmax=w;
                end
                sweight=sweight+w;
                average=average+w*PaddedImg(r,s);
            end
        end
        average=average+wmax*PaddedImg(i1,j1);%自身取最大权值
        sweight=sweight+wmax;
        DenoisedImg(i,j)=average/sweight;
    end
end
复制代码

结果:

可以看出,NL-means去噪效果的确很好。但是该算法的最大缺陷就是计算复杂度太高,程序非常耗时,导致该算法不够实用。上例中256*256的lena图耗时高达33.913968s!!


非局部均值去噪(NL-means)

非局部均值(NL-means)是近年来提出的一项新型的去噪技术。该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持图像的细节特征。基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的...
  • u010839382
  • u010839382
  • 2015年09月06日 15:17
  • 5643

非局部均值滤波算法

2016.09.09更新,修改了SSIM中值太大的问题首先谈一下什么是非局部均值滤波。在此之前,我们先来看一下均值滤波的原理。均值滤波均值滤波的计算非常简单,将图像像素点灰度记录在数组中,然后设置方框...
  • Frankgoogle
  • Frankgoogle
  • 2016年08月15日 11:53
  • 10403

非局部均值滤波原理 Non-local means filter 【从零起步完全教程】

一,NLM滤波原理简介 图像中的像素点之间不是孤立存在的,某一点的像素与别处的像素点一定存在某种关联,可以概括为灰度相关性和几何结构相似性。这是均值滤波考虑的地方,但是我们还发现,相似像素并不局限于...
  • sac761
  • sac761
  • 2017年08月01日 16:47
  • 1910

图像处理之Non-Local Means(NM) 非局部均值

非局部均值去噪是空域滤波的一个重大突破,它利用自然图像的冗余,基本思想是:当前像素点的灰度值与图像中所有与其结构相似的像素点加权平均得到。如何衡量结构相似的像素点,也即如何确定权值系数?其做法是:对于...
  • qq_26460507
  • qq_26460507
  • 2017年04月21日 16:26
  • 2476

非局部均值滤波matlab代码理解

以下代码转载自:http://blog.csdn.net/frankgoogle/article/details/52209901 本文在以上博主的分析下进一步理解,主要是对高斯加权距离的理解。非局...
  • baidu_29760405
  • baidu_29760405
  • 2017年05月21日 15:32
  • 1537

非局部均值图像去噪算法

  • 2014年03月26日 14:11
  • 289KB
  • 下载

非局域均值去噪

http://www.cnblogs.com/luo-peng/p/4785922.html 非局部均值(NL-means)是近年来提出的一项新型的去噪技术。该方法充分利用了图像中的冗余信息,在去...
  • yangpan011
  • yangpan011
  • 2016年05月30日 17:13
  • 663

谈谈快速非局部去噪算法

图像去噪是一个经典的课题。然而,对于真实数码照片,要想达到良好的去噪效果,且非易事。尤其是对于手机拍摄的照片,更是如此。如果你在光线不好的环境下,用手机前置摄像头拍照,往往会有很多的噪声。      ...
  • celerychen2009
  • celerychen2009
  • 2013年06月11日 16:23
  • 8401

[数字图像处理]图像去噪初步(1)--均值滤波器

1.图像去噪的前言     上一篇博文中,我对噪声的类型进行了介绍,也使用的Matlab对各种噪声进行了实现。旧话重提,一幅图像,甚至是一个信号的老化,可以使用以下模型来表示。 可以使用以下算式来...
  • thnh169
  • thnh169
  • 2014年07月11日 20:27
  • 10444

非局部均值 图像去噪(matlab)

  • 2014年03月02日 10:11
  • 352KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:非局域均值去噪
举报原因:
原因补充:

(最多只允许输入30个字)