• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-04-27
  • 语言: Matlab
  • 标签: 非局部  滤波  

资源简介

A.Buwades等人提出的非局部均值滤波的快速实现方法

资源截图

代码片段和文件信息

function  [u_Woutput]=fast_NL(uNPlemda)

u=double(imread(u));
[mn]=size(u);
u2 = padarray(u[N N]‘symmetric‘);
output=zeros(mn);
u_N=zeros(mn);
kernel = make_kernel(P);
kernel = kernel / sum(sum(kernel));
i=1;
for t=-N:N
    for s=-N:N
         %t=-N;
         %s=-N;
         if(t==0 && s==0) continue;end;
        
        u_N(1:m1:n)=u2(N+1:N+mN+1:N+n)-u2(N+1+t:N+t+mN+1+s:N+s+n);
        u_N=u_N.*u_N;
        v_N=exp(-(conv2(u_Nkernel‘same‘))/lemda^2);
        
        u_W(1:m1:ni)=v_N(1:m1:n);
        %i
        i=i+1;
        output(1:m1:n)=output(1:m1:n)+v_N(1:m1:n).*u2(N+1+t:N+t+mN+1+s:N+s+n);
    end
end
%i
for i=1:m
    for j=1:n
        u_Wmax(ij)=max(u_W(ij:));
        u_Wsum(ij)=sum(u_W(ij:));
    end
end
%u_Wma(1:m1:n)=max(u_w(1:m1:n:))
output(1:m1:n)=output(1:m1:m)+u2(N+1:N+mN+1:N+n).*u_Wmax;
output=uint8(output./(u_Wsum+u_Wmax));
figure;
imshow(output);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [kernel] = make_kernel(f)
        
        
 
    kernel=zeros(2*f+12*f+1);

    for d=1:f
    
        value= 1 / (2*d+1)^2 ;
    
        for i=-d:d
            for j=-d:d
                kernel(f+1-if+1-j)= kernel(f+1-if+1-j) + value ;
        end
    end
end


kernel = kernel ./ f;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1325  2011-03-21 22:23  fast_NL.m

----------- ---------  ---------- -----  ----

                 1325                    1


评论

共有 条评论