我想将PGM图像分割成重叠的块,并对每个块进行DCT转换。然后我想取每个DCT矩阵的第一列并将它们全部放到一个新的矩阵中。
我已阅读帖子的回答: How to partition an image to 64 block in matlab ,但我不确定它是否正常运行。我可以使用blockproc
函数来制作重叠块吗?如果可以,我该如何使用它呢?
我更喜欢for循环的答案。
答案 0 :(得分:2)
I=im2double(rgb2gray(imread('yourimage.png'))); %select channels separation
%%%for non-overlapping blocks
fun = @(block_struct) dct2(block_struct.data);
imageY =(blockproc(I,[8 8],fun));
BY=im2col(imageY,[8 8],'distinct');
FinalOP=BY(1:8,:);
%dct-8x8 ,if you want u can choose [64 64].
%you need the first column of dct?.so ,i.e 8 values of dct in this case.
重叠块:使用'sliding'
但是你遇到内存问题。
然后你必须使用自己的for循环。