我在 MATLAB 中编写了以下代码。在循环之后,当我知道它的值应该超过这个时,dSumH
总是在255处饱和。但是,当我用任意值替换d时,它不会饱和。有什么线索可以解决它吗?
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);
答案 0 :(得分:1)
好的,我明白了。变量d的类别为uint8,因此加法运算也隐式将dSumH定义为uint8。通过将d = abs(img(r,c) - img(r-1,c));
更改为d = double(abs(img(r,c) - img(r-1,c)));
,它可以按预期工作。