DCT用于图像压缩的matlab代码
时间: 2024-02-12 22:50:10 浏览: 62
图像压缩基于Bregman实现CT图像压缩附matlab代码
以下是DCT图像压缩的MATLAB代码:
% 读取图像
img = imread('lena.bmp');
% 转为灰度图像
gray_img = rgb2gray(img);
% 转为double类型
double_img = im2double(gray_img);
% 定义DCT矩阵
N = size(double_img, 1);
DCT = dctmtx(N);
% 进行DCT变换
dct_img = DCT * double_img * DCT';
% 选择压缩率
rate = 0.5;
% 计算需要保留的系数个数
coeff_num = round(N^2 * rate);
% 将系数按大小排序
sorted_coeff = sort(abs(dct_img(:)), 'descend');
% 保留前coeff_num个系数,其余系数置0
threshold = sorted_coeff(coeff_num + 1);
dct_img(abs(dct_img) < threshold) = 0;
% 进行IDCT变换,得到压缩后的图像
compressed_img = DCT' * dct_img * DCT;
% 显示原图和压缩后的图像
subplot(1, 2, 1);
imshow(gray_img);
title('Original Image');
subplot(1, 2, 2);
imshow(compressed_img);
title(['Compressed Image (', num2str(rate*100), '%)']);
阅读全文