1

式を使用してパラメーターを計算しています。式には、ゼロになる場合がある値の対数を取ることが含まれます。このような場合を処理するために、次のようにデルタ値を設定する手法を文献で読みました。

ln(delta + A)

ここで、パラメータAは から の範囲の実数[0, 1]です。

どの値に割り当てる必要がありdeltaますか? がいつでも戻るようdelta = 1にを割り当てましょうか。ln(delta + A)0A0

さらに、自然対数または底 10 または底 2 の対数を使用するための選択規則はありますか?

以下は私が使用している式です:

Lw = exp[ 1 / N( sum[ log( delta + Lw( x, y ) ) ] ) ]

説明については、このリンクを参照してください:ログ平均輝度

4

1 に答える 1

1

A の範囲がわからないので、答えるのは難しいです。

A が一般に整数であるが、たまたま 0 である場合、返すlog(A + 1)と目的は実行されますが、A が 0 の場合は 0 が返されlog(A + 1)ますlog(A)。数学的に違うからです。

- 編集 -

範囲 [0,1] の実数値としての A の場合、log(A) の値はとにかく負になります。その状況での log(0) の賢明な答えは -Infinity です。ほとんどのプログラミング言語は、浮動小数点値を表すためにIEEE 754 標準を使用します。この標準には、特別な値の 1 つとして -Infinity の値が含まれています。ここで -Infinity を使用すると単調性が維持されます。つまり、a < b の場合、a == 0 の場合でも、log(a) < log(b) になります。

コードは、使用中のログインの実装に依存します。log(0) が -Infinity を返すことが確実でない限り、次のことを確認するだけです。

if(A == 0)
   result = -INFINITY; // macro in math.h
else
   result = log(A); 

(GNU) C の例として。

于 2015-06-04T11:19:39.250 に答える