简单的实现JPEG图像压缩编码方法一
clear all;
RGB=imread('C:\Users\Administrator\Desktop\123.bmp');%读取内存中bmp格式的彩色图像
I=rgb2gray(RGB);%将彩色图像转换为灰度图像
I1=im2double(I);%将图像变换为双精度格式
T=dctmtx(8);%处理后返回一个8*8阶的DCT矩阵
B1=blkproc(I1,[8 8],'P1*x*P2',T,T');%对图像的每个8*8子块应用矩阵式‘P1*x*P2(像素块的处理函数,x是形式参数)进行处理,P1=T,P2=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 ];%选取10个DCT系数重构图像(DCT具有能量集中的性质,数据集中在左上角,故进行图像压缩时离散余弦变换矩阵可以舍弃右下角的高频数据)
B2=blkproc(B1,[8 8],'P1.*x',mask);%舍弃每个块中的高频系数,达到压缩的目的
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);%余弦反变换,重构图像
subplot(2,2,1);imshow(RGB);%原彩色图像
subplot(2,2,2);imshow(I);%灰度图像
subplot(2,2,3);imshow(I1);%双精度灰度图像
subplot(2,2,4);imshow(I2);%重构图像