Matlab - 矩阵分离成子矩阵

时间:2012-06-29 14:33:32

标签: matlab matrix split

我有一个功课,其中我有640x480图像,我想将其分为16x16块。 谁能告诉我怎么做?如果可能的话我想避免循环。 我一直在努力做几个小时,但没有运气......

2 个答案:

答案 0 :(得分:3)

我认为最好的方法是使用Matlab函数blockproc。 如果你真的想要获得块,请深入研究matlab代码,但我想你想对你的图像应用一些处理函数?假设您想要进行一些图像压缩,然后通过将其作为压缩函数和块大小的参数来调用blockproc。

如果您想获取这些块或者没有可用的图像处理工具箱,请参阅here,您的问题实际上已被多次询问(您是否懒得去搜索它?)。

答案 1 :(得分:1)

这可能不是最佳做法,但如果你愿意,你可以做些什么。它允许您从生成的2-D矩阵中调用每个16x16块,该矩阵将为40 x 30。

注意:这只是一些打字代码,我自己没有测试过。

如果要将其解析为单元格数组,可以执行以下操作:

%Original Image
Image = imread(somefilename);

%Block size desired (16x16)
bsize = 16;

% 40 and 30 come from dividing the 640 and 480 by 16 since you want 16x16 blocks.
% result = mat2cell(Y, bsize*ones(1,40), bsize*ones(1,30))
result = mat2cell(Y, bsize*ones(1,size(Image,1)/bsize), bsize*ones(1,size(Image,1)/bsize));