Беда с простой петлей в Matlab - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть логическая маска пикселей e1, которую нужно «смешать». Независимо от того, какое значение я задаю для k, цикл выполняется k раз, но на изображение влияет только один раз. Код:

for k=1:5 %I want to do it 5 times but it does the action only once.
    for i=2:rows-1
        for j=2:cols-1
            if e1(i, j) == 1 %if mask == 1, I take "marked" pixel, 8 pixel surrounding it, and avg them.
                I2(i, j, 1) = (I2(i, j-1, 1) + I2(i, j+1, 1) + I2(i-1, j, 1) + I2(i-1, j-1, 1) + I2(i-1, j+1, 1) + I2(i+1, j, 1) + I2(i+1, j+1, 1) + I2(i+1, j-1, 1))/8;
                I2(i, j, 2) = (I2(i, j-1, 2) + I2(i, j+1, 2) + I2(i-1, j, 2) + I2(i-1, j-1, 2) + I2(i-1, j+1, 2) + I2(i+1, j, 2) + I2(i+1, j+1, 2) + I2(i+1, j-1, 2))/8;
                I2(i, j, 3) = (I2(i, j-1, 3) + I2(i, j+1, 3) + I2(i-1, j, 3) + I2(i-1, j-1, 3) + I2(i-1, j+1, 3) + I2(i+1, j, 3) + I2(i+1, j+1, 3) + I2(i+1, j-1, 3))/8;
            end
        end
    end
end

1 Ответ

0 голосов
/ 03 декабря 2011

Я думаю, вы должны попробовать:

for k=1:5
  I2=convn(I2,[1 1 1;1 0 1;1 1 1]/8);
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...