-2

我有一个家庭作业,其中我有 640x480 的图像,我想把它分成 16x16 块。有人可以告诉我该怎么做吗?如果可能的话,我想避免循环。我已经尝试了几个小时,但没有运气......

4

2 回答 2

3

我认为最适合您的是使用 Matlab 函数blockproc。如果您真的想获取块,请深入研究 matlab 代码,但我想您想对图像应用一些处理功能?假设您想做一些图像压缩,然后通过将压缩函数和块大小作为参数来调用 blockproc。

如果您想获取块或没有可用的图像处理工具箱,请参阅此处,您的问题实际上已被多次询问(您是否甚至费心搜索它??)。

于 2012-06-29T14:44:09.267 回答
1

这可能不是最佳实践,但您可以根据需要做一些事情。它将允许您从生成的 40 x 30 二维矩阵中调用每个 16x16 块。

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

如果你想把它解析成一个单元格数组,你可以这样做:

%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));
于 2012-06-29T14:49:55.143 回答