将图像分成不重叠和重叠的块

时间:2011-12-07 13:28:06

标签: matlab matlab-guide

我有256 * 256的图像。我必须将图像划分为大小为W * W的子块,其中W = 3,4,..... 27根据下面给出的重叠规则:
    如果W <8,则不重叠块     如果8 <= W <= 13,则50%的块重叠     如果W> 13%的块重叠75%     如何在matlab中实现它,特别是在第二和第三规则中

1 个答案:

答案 0 :(得分: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