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 に答える