dct_2d.m

来自「用离散余弦变换实现JPEG编码」· M 代码 · 共 27 行

M
27
字号
%二维DCT变换
function y = dct_2D(x)
%获取图像矩阵大小
size_x = size(x);                      
height = size_x(1,1);                  
width = size_x(1,2);                   
%计算所需计算的2的次方的矩阵
h2 = ceil(log2(height));             
w2 = ceil(log2(width));              
%实际计算的矩阵大小(h,w)
h = 2^h2;                             
w = 2^w2;                             
%得到补0的矩阵
X = zeros(h,w);
X(1:height,1:width) = x;      
%可分离,一维一维计算
%中间结果Y
Y = zeros(h,w);                       
for i=1:h
    Y(i,:) = dct_1D(X(i,:));
end
%最终结果y
y = zeros(h,w);                       
for i=1:w
    y(:,i) = ( dct_1D(Y(:,i)') )';
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?