3

私は 256*256 の画像を持っています。画像をサイズ W * W のサブブロックに分割する必要があります。ここで、W=3,4,.....27 の場合、以下のオーバーラップ ルールに従います:
if W<8 thn 8<=W<=13 thn の場合、ブロックのオーバーラップなし W>13 thn の場合、ブロックの 50% オーバーラップ ブロックの 75% オーバーラップ matlab、特に 2 番目と 3 番目のルールでそれを実装する方法

4

1 に答える 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 に答える