3
我有一个256 * 256的图像。我必须将图像划分为大小为W * W的子块,其中W = 3,4,..... 27到低于给定的重叠的规则:
当w < 8 THN没有重叠块 如果块 的8 < = W < = 13 THN 50%重叠如果W> 13块 的THN 75%重叠如何实现它在matlab,特别是在第二和第三规则将图像划分为不重叠和重叠的块
我有一个256 * 256的图像。我必须将图像划分为大小为W * W的子块,其中W = 3,4,..... 27到低于给定的重叠的规则:
当w < 8 THN没有重叠块 如果块 的8 < = W < = 13 THN 50%重叠如果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
值再看看。