如何在matlab中仅使用for循环将任何大小的图像划分为相等大小的块?

时间:2014-03-16 05:57:25

标签: image matlab block

如何使用简单的matlab for loop将图像划分为相等大小的块? 作为一个初学者,我尝试了但它显示错误。我使用mat2cell并使用简单的计算做了同样的事情。

这是我的代码:

[rows, columns, numberOfColorChannels] = size(p); 
r4 = int32(rows/4); 
c4 = int32(columns/4); 
% Extract images. 
image1 = p(1:r4, 1:c4); 
image2 = p(1:r4, c4+1:2*c4); 
image3 = p(1:r4, 2*c4+1:3*c4); 
image4 = p(1:r4, 3*c4+1:4*c4); 

我只需要使用for循环。

1 个答案:

答案 0 :(得分:1)

首先,如果您将x和y分成4个大小相等的部分,您将得到16个较小的图像。你需要理解这第一部分。

[rows, columns, numberOfColorChannels] = size(p); 
r4 = int32(rows/4); 
c4 = int32(columns/4); 
output = zeros(16,r4,c4,numberOfColorChannels);
cnt = 1;
for i=1:4,
   for j=1:4,
      output(cnt,:,:,:) = p((i-1)*r4+1:i*r4, (j-1)*c4+1:j*c4); 
      cnt = cnt + 1;
   end
end

代码基本上完成了你已经完成的工作,但是在两个方面。