• 大小: 58KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Matlab
  • 标签: matlab  代码  

资源简介

这是一个用matlab编写的TV去噪程序 附带有图片, 效果很好,共享一下

资源截图

代码片段和文件信息

function Ig=gauss(Ikssigma2)
%%% 子函数: Ig = gauss(Ikssigma2)实现高斯平滑滤波
%%% 参数说明:
%%% I       - 待平滑图像
%%% ks      - 高斯核大小 (奇数)
%%% sigma2  - 高斯函数的方差
%%% Ig      - 返回的高斯平滑后的图像

[NyNx]=size(I);
hks=(ks-1)/2;  % 高斯核的一半
%%- 一维卷积
if (Ny    x=(-hks:hks);
    flt=exp(-(x.^2)/(2*sigma2));       % 一维高斯函数
    flt=flt/sum(sum(flt));             % 归一化
    %%- 扩展
    x0=mean(I(:1:hks)); xn=mean(I(:Nx-hks+1:Nx));
    eI=[x0*ones(Nyks) I xn*ones(Nyks)];
    Ig=conv(eIflt);
    Ig=Ig(:ks+hks+1:Nx+ks+hks);       % 截尾
else
    %%- 二维卷积
    x=ones(ks1)*(-hks:hks); y=x‘;
    flt=exp(-(x.^2+y.^2)/(2*sigma2));  % 二维高斯函数
    flt=flt/sum(sum(flt));             % 归一化
    %%- 扩展
    if (hks>1)
        xL=mean(I(:1:hks)‘)‘; xR=mean(I(:Nx-hks+1:Nx)‘)‘;
    else
        xL=I(:1); xR=I(:Nx);
    end
    eI=[xL*ones(1hks) I xR*ones(1hks)];
    if (hks>1)
        xU=mean(eI(1:hks:)); xD=mean(eI(Ny-hks+1:Ny:));
    else
        xU=eI(1:); xD=eI(Ny:);
    end
    eI=[ones(hks1)*xU; eI; ones(hks1)*xD];
    Ig=conv2(eIflt‘valid‘);
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-12-08 22:30  TV去噪\
     文件        1168  2009-06-03 22:55  TV去噪\gauss.m
     文件       66614  2003-05-05 23:22  TV去噪\lenna.bmp
     文件          38  2009-06-17 12:56  TV去噪\Readme.txt
     文件        1599  2012-11-22 16:20  TV去噪\TV_upwind_gray.m

评论

共有 条评论