3

我有一个 256*256 的图像。我必须根据以下给定的重叠规则将图像分成大小为 W * W 的子块,其中 W=3,4,.....27:
如果 W<8 thn如果 8<=W<=13 则没有块重叠 如果 W>13 thn 75% 块重叠时块重叠 50% 如何在 matlab 中实现它,特别是在第 2 条和第 3 条规则中

4

1 回答 1

2

实现您感兴趣的东西的最快和最简单的方法如下:

function blocks = DivideImage(im, W)

if W <= 7
    step = W;
elseif W <= 13
    step = round(0.25 * W);
else
    step = round(0.125 * W);
end

startPos = 0:step:size(im,1)-W;

blocks = cell(numel(startPos), numel(startPos));
for i = 1:numel(startPos)
    for j = 1:numel(startPos)
        blocks{i,j} = im(startPos(i)+(1:W), startPos(j)+(1:W));
    end
end

请注意,当W不完全划分为时size(im,1),它会从右边缘和下边缘丢弃一些点,因此您将需要再次查看它是如何设置 的值的startPos

于 2011-12-07T14:14:16.550 回答