matlab:DCT图像压缩试验。
代码:
clc;clear;
img = rgb2gray(imread('E:\matlabCX\图片\7.jpg'));
figure, imshow(img);
% 1,使图像行列为 8的倍数
[row,col] = size(img);
row = round(row/8) * 8;
col = round(col/8) * 8;
img = imresize(img, [row, col]);
% 2,对图像块进行dct变换
img_dct = zeros(row, col); % 存放转换后的dct系数
for i=1:8:row-7
for j=1:8:col-7
img_block = img(i:i+7, j:j+7);
dct_block = dct2(img_block); % 也可用刚才实现的(定义成一个函数即可)
% imshow(dct_block); % 显示dct块
img_dct(i:i+7, j:j+7) = dct_block;
end
end
figure, imshow(img_dct); % 显示生成的dct系数
% 3,dct反变换
new_img = zeros(row,col);
for i=1:8:row-7
for j=1:8:col-7
dct_block = img_dct(i:i+7, j:j+7);
img_block = idct2(dct_block); % 也可用刚才实现的(定义成一个函数即可)
new_img(i:i+7, j:j+7) = img_block;
end
end
figure, imshow(mat2gray(new_img)); % 显示反变换回来的图像
结果:
少年不被楼层误,余生不羁尽自由。
加油,加油!