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