2013-04-19 3 views
1

Я написали код, приведенный ниже в MATLAB. После цикла dSumH всегда насыщается на 255, когда я знаю, что его значение должно превышать это. Однако, когда я заменяю d произвольным значением, он не насыщается. Любые подсказки, чтобы исправить это?MATLAB переменная насыщающая дополнительная операция

dTh = 127; 
dSumH = zeros(w,1); 

for(c = 1:w) 

    for(r = 2:h) 

     d = abs(img(r,c) - img(r-1,c)); 
     if(d >= dTh) 
      dSumH(c) = dSumH(c) + d; 
     end 

    end 

end 
dSumH 
figure, plot([1:w],dSumH); 

ответ

1

ОК, я понял. Переменная d имеет класс uint8, поэтому операция сложения неявно определяет dSumH как uint8. Изменяя d = abs(img(r,c) - img(r-1,c)); на d = double(abs(img(r,c) - img(r-1,c)));, он работает должным образом.

Смежные вопросы