⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wspm.m

📁 信号处理波处理的小程序
💻 M
字号:
%基于小波收缩与非线性扩散的混合图像去噪算法
%低频用TV扩散,,高频用软阈值收缩

function A=WSTV(lena)

noised=lena;
H=fspecial('gaussian',3,0.4);
filter=imfilter(noised,H);

[row,col]=size(noised);
nimage=zeros(row,col);


k=100;
t=0.01;

    
    %小波分解
    [c,s]=wavedec2(noised,1,'haar');
    CA=appcoef2(c,s,'haar',1);  %提取低频
    
    %估计噪声方差以计算阈值  Dohono的估计方法    
    
    th=(median(abs(c((row/2)*(row/2):row*row)))/0.6745)*sqrt(2*log(65536))/2;    
    
    
    CA=PMdiff(CA,2);        %对低频信号进行扩散
    %figure,imshow(uint8(CA))
    
    %对高频进行收缩  
    for i=1:row/2
        for j=1:row/2
            c(j+(i-1)*row/2)=CA(j,i);
            ch=c((row/2)*(row/2)+j+(i-1)*row/2);
            if abs(ch)>th
                c((row/2)*(row/2)+j+(i-1)*row/2)=ch-th*sign(ch);
            else
                c((row/2)*(row/2)+j+(i-1)*row/2)=0;
            end
            cv=c(2*(row/2)*(row/2)+j+(i-1)*row/2);
            if abs(cv)>th                
                c(2*(row/2)*(row/2)+j+(i-1)*row/2)=cv-th*sign(cv);
            else
                c(2*(row/2)*(row/2)+j+(i-1)*row/2)=0;
            end
            cd=c(3*(row/2)*(row/2)+j+(i-1)*row/2);
            if abs(cd)>th     
                c(3*(row/2)*(row/2)+j+(i-1)*row/2)=cd-th*sign(cd);
            else
                c(3*(row/2)*(row/2)+j+(i-1)*row/2)=0;
            end
        end
    end     
    
   
    noised=waverec2(c,s,'haar');  

A=uint8(noised);


    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -