3.Matlab图像小波变换

Matlab图像做图像小波变换,还有不同阈值滤波器的使用。

题目示例

1.对一幅给定的灰度图像(有条件的可考虑彩色图像)进行一次小波变换并显示;
2.进行小波逆变换并通过显示与原图比较;
3.观察变换前后图像数据的差异;
4.设置不同的阈值观察其对图像的影响。(选作内容)

这里的灰度图像和彩色图像,我们以下图为例演示。
在这里插入图片描述
在这里插入图片描述

示例代码

灰度图像的变换

x1=imread('lena256.bmp');
n1=20;
n2=50;
n3=100;
subplot(2,3,1)
imshow(x1)
title('原图')
N=256;
for i=1:N
    if(mod(i,2)==0)
        w1(i,fix(i/2))=0.5;
        w1(i,fix(i/2)+N/2)=-0.5;
    else
        w1(i,fix(i/2)+1)=0.5;
        w1(i,fix(i/2)+N/2+1)=0.5;
    end
end
x2=double(x1);
y3=w1'*x2*w1;
 
subplot(2,3,2)
imshow(uint8(abs(y3)))
title('小波变换后')
 
subplot(2,3,3)
w11=inv(w1);
x3=w11'*y3*w11;
imshow(uint8(x3))
title('小波逆变换后')
 
 
for m=1:256
    for n=1:256
        if(abs(y3(m,n))<n1)
            y4(m,n)=0;
        else
            y4(m,n)=y3(m,n);
        end
    end
end
x4=w11'*y4*w11;
    
subplot(2,3,4)
imshow(uint8(x4))
title('阈值为20')
 
for m=1:256
    for n=1:256
        if(abs(y3(m,n))<n2)
            y5(m,n)=0;
        else
            y5(m,n)=y3(m,n);
        end
    end
end
x5=w11'*y5*w11;
    
subplot(2,3,5)
imshow(uint8(x5))
title('阈值为50')
 
for m=1:256
    for n=1:256
        if(abs(y3(m,n))<n3)
            y6(m,n)=0;
        else
            y6(m,n)=y3(m,n);
        end
    end
end
x6=w11'*y6*w11;
    
subplot(2,3,6)
imshow(uint8(x6))
title('阈值为100')

运行结果为
在这里插入图片描述

彩色图片变换

x1=imread('tiger.bmp');
n1=20;
n2=50;
n3=100;
subplot(2,3,1)
imshow(x1)
title('原图')
N=256;
for i=1:N
    if(mod(i,2)==0)
        w1(i,fix(i/2))=0.5;
        w1(i,fix(i/2)+N/2)=-0.5;
    else
        w1(i,fix(i/2)+1)=0.5;
        w1(i,fix(i/2)+N/2+1)=0.5;
    end
end
x2=double(x1);
y3(:,:,1)=w1'*x2(:,:,1)*w1;
y3(:,:,2)=w1'*x2(:,:,2)*w1;
y3(:,:,3)=w1'*x2(:,:,3)*w1;
 
subplot(2,3,2)
imshow(uint8(abs(y3)))
title('小波变换后')
 
subplot(2,3,3)
w11=inv(w1);
x3(:,:,1)=w11'*y3(:,:,1)*w11;
x3(:,:,2)=w11'*y3(:,:,2)*w11;
x3(:,:,3)=w11'*y3(:,:,3)*w11;
imshow(uint8(x3))
title('小波逆变换后')
 
 
for m=1:256
    for n=1:256
        for p=1:3
            if(abs(y3(m,n,p))<n1)
            y4(m,n,p)=0;
            else
            y4(m,n,p)=y3(m,n,p);
            end
        end
        
    end
end
x4(:,:,1)=w11'*y4(:,:,1)*w11;
x4(:,:,2)=w11'*y4(:,:,2)*w11;
x4(:,:,3)=w11'*y4(:,:,3)*w11;
    
subplot(2,3,4)
imshow(uint8(x4))
title('阈值为20')
 
for m=1:256
    for n=1:256
        for p=1:3
            if(abs(y3(m,n,p))<n2)
            y5(m,n,p)=0;
            else
            y5(m,n,p)=y3(m,n,p);
            end
        end
        
    end
end
x5(:,:,1)=w11'*y5(:,:,1)*w11;
x5(:,:,2)=w11'*y5(:,:,2)*w11;
x5(:,:,3)=w11'*y5(:,:,3)*w11;
    
subplot(2,3,5)
imshow(uint8(x5))
title('阈值为50')
 
for m=1:256
    for n=1:256
        for p=1:3
            if(abs(y3(m,n,p))<n3)
            y6(m,n,p)=0;
            else
            y6(m,n,p)=y3(m,n,p);
            end
        end
        
    end
end
x6(:,:,1)=w11'*y6(:,:,1)*w11;
x6(:,:,2)=w11'*y6(:,:,2)*w11;
x6(:,:,3)=w11'*y6(:,:,3)*w11;
    
subplot(2,3,6)
imshow(uint8(x6))
title('阈值为100')

运行结果为
在这里插入图片描述

  • 3
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值