如何将图像分区为重叠块

时间:2011-06-23 14:05:32

标签: matlab image-processing

我想将PGM图像分割成重叠的块,并对每个块进行DCT转换。然后我想取每个DCT矩阵的第一列并将它们全部放到一个新的矩阵中。

我已阅读帖子的回答: How to partition an image to 64 block in matlab ,但我不确定它是否正常运行。我可以使用blockproc函数来制作重叠块吗?如果可以,我该如何使用它呢?

我更喜欢for循环的答案。

1 个答案:

答案 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循环。