数字图像处理 图像压缩

直接上代码

clc
clear
I = imread('Lena.tiff'); %输入灰度图像
I_D = im2double(I);
D = blkproc(I_D,[8,8],'dct2'); %分块DCT,blkproc相当于matlab中的Map
cover=[1 1 1 1 1 0 0 0       %直接用与计算丢掉低频
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];
X = blkproc(D,[8,8],'P1.*x',cover);       %保留15个系数
IX = blkproc(X,[8,8],'idct2');           %DCT反变换得到压缩图像

subplot(1,2,1);imshow(I);title('原始图像');
subplot(1,2,2);imshow(IX);title('与计算压缩');

RGB = imread('Test.png');
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
DR = blkproc(R,[8,8],'dct2');  
DG = blkproc(G,[8,8],'dct2');  
DB = blkproc(B,[8,8],'dct2');  

colortable= [17 18 24 47 99 99 99 99 ;
    18 21 26 66 99 99 99 99 ;
    24 26 56 99 99 99 99 99 ;
    47 66 99 99 99 99 99 99 ;
    99 99 99 99 99 99 99 99 ;
    99 99 99 99 99 99 99 99 ;
    99 99 99 99 99 99 99 99 ;
    99 99 99 99 99 99 99 99];

X1 = blkproc(DR,[8,8],'fix(x./P1)',colortable);  %用JPEG标准量化表进行量化
I1 = blkproc(X1,[8,8],'idct2');
I1 = (I1 - min(reshape(I1,512*512,1)))./(max(reshape(I1,512*512,1))- min(reshape(I1,512*512,1)));
X2 = blkproc(DG,[8,8],'fix(x./P1)',colortable);  %用JPEG标准量化表进行量化
I2 = blkproc(X2,[8,8],'idct2');
I2 = (I2 - min(reshape(I2,512*512,1)))./(max(reshape(I2,512*512,1))- min(reshape(I2,512*512,1)));
X3 = blkproc(DB,[8,8],'fix(x./P1)',colortable);  %用JPEG标准量化表进行量化
I3 = blkproc(X3,[8,8],'idct2');
I3 = (I3 - min(reshape(I3,512*512,1)))./(max(reshape(I3,512*512,1))- min(reshape(I3,512*512,1)));

figure
subplot(1,2,1);imshow(RGB);title('原始图像');
subplot(1,2,2);imshow(cat(3,I1,I2,I3),[]);title('仿JPEG标准量化表压缩')



在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值