Erik Reinhard らの論文を読んでいます。「デジタル画像の写真トーン再現」と呼ばれ、こちらにもあります。
http://www.cs.utah.edu/~reinhard/cdrom/
この式 #4 があります。
Ld(x,y) = L(x,y)(1 + L(x,y)/L_white^2) / (1 + L(x,y))
「[If] L_white 値がシーン内の最大輝度 L_max に設定されている...」
作成者によるソース コードとさまざまな実装もオンラインにあります。
私の質問は、上記の式には、それがどのように、何から派生したのか理解できない変形が 1 つあります。たとえば、Luxrender のソース コードを見てみましょう。
http://src.luxrender.net/lux/rev/f48943145d29#l3.77
scale[i] = ( post_scale * (1.0f + lum*recip_Y_white2) / (1.0f + lum) ); //* maxDisplayY;
この論文では言及されていない新しい変数「pre_scale」、「post_scale」、「burn」があります。また、L_white (= Y_white) の計算方法も大きく異なります。
const float Y_white = pre_scale * alpha * burn;
そのようなアルゴリズムを導出する方法を誰かに説明してもらえますか? 論文に基づいていると思いますが、方法がわかりません...