1

我在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);
4

1 回答 1

1

好,我知道了。变量 d 属于 uint8 类,因此加法运算也将 dSumH 隐式定义为 uint8。通过更改d = abs(img(r,c) - img(r-1,c));d = double(abs(img(r,c) - img(r-1,c)));它按预期工作。

于 2013-04-19T04:32:04.130 回答