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