2011-12-07 104 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值再看看。