MATLAB二维逆离散余弦变换:从频域复原图像
二维逆离散余弦变换(2-D IDCT/ICT)将余弦系数矩阵(频域表示)转回空域,还原原始信号或图像。是余弦变换的逆运算,在信号/图像处理中用于从频域重建信号图像。
MATLAB用idct2执行二维逆余弦变换,输入余弦系数矩阵,返回空域图像。常用于图像压缩(如JPEG)、图像重建、频域操作后还原。
二维逆离散余弦变换
语法
B = idct2(A) B = idct2(A,m,n) B = idct2(A,[m n])
语法说明
- B = idct2(A) —— 计算矩阵A的二维IDCT,结果存B,从频域重建空域图像
- B = idct2(A,m,n) —— 计算IDCT并指定输出矩阵B尺寸为m×n
- B = idct2(A,[m n]) —— 计算IDCT并重设输出矩阵为m行n列
示例1:idct2()移除高频滤波图像
img = imread('autumn.tif');
if size(img, 3) == 3; img = rgb2gray(img); end
% 计算二维DCT
dct_img = dct2(double(img));
% 阈值保留前50系数,高频置零
threshold = 50;
dct_img_thresh = dct_img;
dct_img_thresh(threshold+1:end, :) = 0;
dct_img_thresh(:, threshold+1:end) = 0;
% 逆变换重建滤波图像
filtered_img = uint8(idct2(dct_img_thresh));
% 显示对比
figure; subplot(1,2,1); imshow(img); title('原始图像');
subplot(1,2,2); imshow(filtered_img); title('滤波图像');
流程:读图→灰度→dct2得频域系数→阈值截断高频→idct2重建→对比显示。保留低频系数可平滑图像、去噪。
示例2:B = idct2(A,m,n)调整图像尺寸
img = imread('autumn.tif');
if size(img, 3) == 3; img = rgb2gray(img); end
dct_img = dct2(double(img));
% 频域系数矩阵缩小一半
new_size = size(img) / 2;
dct_resized = imresize(dct_img, new_size);
% 逆变换并指定输出原图尺寸
resized_img = uint8(idct2(dct_resized, size(img,1), size(img,2)));
subplot(1,2,1); imshow(img); title('原始图像');
subplot(1,2,2); imshow(resized_img); title('IDCT重建缩放图像');
在频域缩放系数矩阵再逆变换,可实现图像缩放。输出尺寸参数确保重建到原始分辨率。
示例3:矩阵尺寸变换 4×4 → 3×2
A = [10,20,30,40; 50,60,70,80; 90,100,110,120; 130,140,150,160];
disp('原始矩阵 A:'); disp(A);
B = idct2(A, [3, 2]);
disp('重设矩阵 B (3x2):'); disp(B);
输出:
原始矩阵 A: 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 重设矩阵 B (3x2): 122.0957 -11.9692 -97.4491 1.6910 12.0957 -1.9692
MATLAB
- MATLAB 向量完全指南:行/列向量创建、索引引用、切片、核心运算操作
- MATLAB 函数详解:定义、工作区、输入输出与多种函数类型
- MATLAB M 文件编程:脚本与函数的创建、运行与最佳实践
- MATLAB特征值与特征向量实战指南:eig函数全解析
- MATLAB 微积分入门:极限计算、性质验证与单侧极限
- MATLAB 多维数组与特殊数组完全指南
- MATLAB 绘图入门:函数绘图步骤、标注、多曲线与子图
- MATLAB 矩阵核心操作:创建、索引引用、子矩阵提取、行列删除、拼接与基本运算
- MATLAB 高级绘图:柱状图、等高线与三维曲面图
- MATLAB高斯拉普拉斯滤波器:图像边缘检测实战
- MATLAB 数据类型完全指南:15 种基本类型、转换函数与类型判断函数速查表
- MATLAB面向对象编程:构建健壮可复用代码的类与对象实战