деление изображения на неперекрывающиеся и перекрывающиеся блоки - PullRequest
3 голосов
/ 07 декабря 2011

У меня есть изображение 256 * 256. Мне нужно разделить изображение на подблоки размером W * W, где W = 3,4, ..... 27 в соответствии с приведенными ниже правилами перекрытия:
если W <8, то нет перекрытия блоков если 8 <= W <= 13 и 50% перекрытия блоков если W> 13 th 75% перекрытия блоков как реализовать это в Matlab, особенно во 2-м и в 3-м правиле

1 Ответ

2 голосов
/ 07 декабря 2011

Самый быстрый и простой способ достижения чего-то похожего на то, что вас интересует, это:

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 .

...