2011-12-07 68 views
3

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

回答

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值再看看。