我有一个256 * 256的图像。我必须根据以下给定的重叠规则将图像划分为W * W大小的子块,其中W = 3,4,.... 27
如果W 如果8 如果W> 13 thn 75%的块重叠
如何在Matlab中实现它,尤其是在第二和第三规则中

最佳答案

实现您感兴趣的事物的最快,最简单的方法如下:

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的值。

10-04 14:38