matlab 基于小波变换的图像压缩,matlab 基于小波变换的图像压缩 | 学步园

原理书上都有,我就上代码了

clc;

clear all;

close all; % 清理工作空间

clear;

X=imread('fish.jpg');

X=rgb2gray(X);

subplot(221); imshow(X);

title('原始图像');

%对图像用小波进行层小波分解

[c,s]=wavedec2(X,2,'bior3.7');

%提取小波分解结构中的一层的低频系数和高频系数

cal=appcoef2(c,s,'bior3.7',1);

ch1=detcoef2('h',c,s,1); %水平方向

cv1=detcoef2('v',c,s,1); %垂直方向

cd1=detcoef2('d',c,s,1); %斜线方向

%各频率成份重构

a1=wrcoef2('a',c,s,'bior3.7',1);

h1=wrcoef2('h',c,s,'bior3.7',1);

v1=wrcoef2('v',c,s,'bior3.7',1);

d1=wrcoef2('d',c,s,'bior3.7',1);

c1=[a1,h1;v1,d1];

subplot(222),imshow(c1,[]);

title ('分解后低频和高频信息');

%进行图像压缩

%保留小波分解第一层低频信息

%首先对第一层信息进行量化编码

ca1=appcoef2(c,s,'bior3.7',1);

ca1=wcodemat(ca1,440,'mat',0);

%改变图像高度并显示

ca1=0.5*ca1;

subplot(223);imshow(cal,[]);

title('第一次压缩图像');

%保留小波分解第二层低频信息进行压缩

ca2=appcoef2(c,s,'bior3.7',2);

%首先对第二层信息进行量化编码

ca2=wcodemat(ca2,440,'mat',0);

%改变图像高度并显示

ca2=0.25*ca2;

subplot(224);imshow(ca2,[]);

title('第二次压缩图像');

效果图:

1350895186_1604.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值