我正在尝试使用 1D DCT 运算对图像实施 2D 离散余弦变换。如果我将其与dct2MATLAB 函数进行比较,我的输出是不正确的。我不明白我的代码出了什么问题以及发生在哪里。
如果有人可以指出错误或任何其他建议,那将非常有帮助。
这是我用 MATLAB 编写的代码
% main function
signal=rand(100);
signal_dct=myDCT(signal);
figure; imshow((signal_dct));
% function to calculate 2D DCT of an image
function res=myDCT(signal)
signal=double(signal);
l=size(signal,1);
res=zeros(l); %initialize the final result matrix
for k=1:l %calculate 1D DCT of each row of image
res(k,:)=mdct(signal(k,:));
end
for k=1:l %calculate 1D DCT of each column of image
res(:,k)=mdct(res(:,k));
end
end
%% function to calculate 1D DFT of a 1D signal
function res=mdct(signal)
l=size(signal,1);
for i=1:l
if …Run Code Online (Sandbox Code Playgroud)