将图像分割成块

时间:2013-11-20 23:29:28

标签: image-processing matlab image-segmentation

让我们考虑尺寸为512x512的图像Y.

下面的代码用于将图像Y分割成块,其中每个块的大小为8x8。

Matlab Code:

for m = 1:64
    for n = 1:64
        subX = Y(8*(m-1)+1:8*m,8*(n-1)+1:8*n);
    end
end

我在这个问题上需要的是解决下面的两个问题:

1)将图像X分割成8 x 8个块(不是大小为8x8,但块数必须是8x8)。在这种情况下,图像将被分割成64个块,其中每个块包含512/64像素= 8个像素。

2)它与1)的概念相同,但在这种情况下,我想将图像分割成10x10个块。因此图像将被分割成100个块。但我们现在可以注意到每个块包含512/100 = 5.12像素!!所以它漂浮了!

请帮我写一个独特的代码,可以同时解决我的两个问题。

最诚挚的问候,

克里斯蒂娜。

1 个答案:

答案 0 :(得分:4)

尝试使用mat2cell将图像分成块:

bsX = 10; bsY = 10;
[m,n] = size(Y);
numFullBlocksX = floor(n/bsX); numFullBlocksY = floor(m/bsY);
xBlocks = [repmat(bsX,numFullBlocksX,1); mod(n,bsX)*ones(mod(n,bsX)>0)];
yBlocks = [repmat(bsY,numFullBlocksY,1); mod(m,bsY)*ones(mod(m,bsY)>0)];
blockCell = mat2cell(Y,yBlocks,xBlocks)

要改为从块数到块大小,请使用这两行代替 bsX = 10; bsY = 10;

numBlocksX = 10; numBlocksY = 10;
bsX = ceil(n/numBlocksX); bsY = ceil(m/numBlocksY);