MATLAB数字图像处理实验四

MATLAB数字图像处理实验四

实验一:选择一种有损压缩编码算法(K-L变换或DCT变换)对l图像进行压缩编码,计算出压缩率,并显示编码前图像

%%
%实验一(计算压缩率,显示编码前图片)
%%利用DCT变换进行图像压缩
K=imread('hei.png'); 
I1=rgb2gray(K);
I=im2double(I1);
T=dctmtx(8);
B=blkproc(I,[8 8],'P1*x*P2',T,T');
mask=[1 1 1 1 0 0 0 0;1 1 1 0 0 0 0 0;1 1 0 0 0 0 0 0;1 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
subplot(211),imshow(K),title('原图');
subplot(212),imshow(I2),title('DCT变换');
[m n]=size(B2);
J=[m n];
for i=1:m
    value=B2(i,1);
    num=1;
    for j=2:n
        if B2(i,j)==value
            num=num+1;
        else
            J=[J num value];
            num=1;
            value=B2(i,j);
        end
    end
    J=[J num value ];
end
disp('原图像大小')
whos('B2');
disp('压缩图像大小:')
whos('J');
disp('图像的压缩比:')
%disp(m*n/length(J))%解压缩
u1=m*n;
u2=length(J);
c=vpa((u2/u1)*100,4);
disp([char(c),'%'])
t1=J(1);
t2=J(2);
K(1:t1,1:t2)=0;
i1=1;
j1=1;
for i=3:2:length(J)
    c1=J(i);
    c2=J(i+1);
    for j=1:c1
        K(i1,j1)=c2;
        j1=j1+1;
        if j1>t2
            i1=i1+1;
            j1=1;
        end
    end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值