資源簡介
這是一個用matlab編寫的TV去噪程序 附帶有圖片, 效果很好,共享一下

代碼片段和文件信息
function?Ig=gauss(Ikssigma2)
%%%?子函數(shù):?Ig?=?gauss(Ikssigma2)實現(xiàn)高斯平滑濾波
%%%?參數(shù)說明:
%%%?I???????-?待平滑圖像
%%%?ks??????-?高斯核大小?(奇數(shù))
%%%?sigma2??-?高斯函數(shù)的方差
%%%?Ig??????-?返回的高斯平滑后的圖像
[NyNx]=size(I);
hks=(ks-1)/2;??%?高斯核的一半
%%-?一維卷積
if?(Ny ????x=(-hks:hks);
????flt=exp(-(x.^2)/(2*sigma2));???????%?一維高斯函數(shù)
????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));??%?二維高斯函數(shù)
????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
評論
共有 條評論