物理ベースレンダリングーーHDR Tone Mapping

ゲームエンジンのレンダリングパイプラインでは、通常、R、G、Bチャネルの色情報の値の範囲を[0、1]（または[0、255]）の間に設定します。このうち、0は輝度がないことを表し、1はディスプレイが表示できる最大輝度を表します。この表示法は単純で理解しやすいものですが、真実世界の光の輝度を反映していません。真実世界の照明環境では、光の強度がモニターが表示できる最大輝度を超える場合があります。さらに、人間の目は、実世界の物体を観察するときに、光の強度に応じて調整されます。したがって、より現実的なレンダリング方法は、カラー値を1より大きくすることです。この照明計算方法または環境ライトマップは、ゲームエンジンでよく見られるHDR（High Dynamic Range）照明またはHDR環境マップです。ただし、HDRでレンダリングされた輝度値は、モニターが表示できる最大値を超えます。この時点で、照明結果をHDRからモニターが正しく表示できるLDRに変換する必要があります。このプロセスは通常、Tone Mappingと呼ばれます。次の図は、HDRでレンダリングされた画像に対してTone Mappingを使用した場合と使用しない場合のUnityエンジンの比較結果です。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/6fdf752c-a61d-1241-e081-04b6ab5a3145.png)

その中で、上の写真はTone Mappingなしの結果であり、下の写真はTone Mappingありの結果です。トーンマッピングを使用しないレンダリング結果では、多数のピクセルの明るさがディスプレイに表示できる最大値を超えていることがわかります。視覚的には、これらの場所は露出オーバーになります。Tone Mappingを使用したレンダリング結果では、ピクセルの明るさが正常になり、視覚的にもよりリアルになります。

本日ご紹介する論文は、2002年のSiggraphカンファレンスで発表された論文「Photographic Tone Reproduction for Digital Images」です。この論文では、この方法で変換された結果を実際のオブジェクトに視覚的に近づける新しいTone Mapping方法を提案します。まず、次の図に示すように、この論文の結果グラフを見てみましょう。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/7da5e953-2847-4c20-9647-7784b9dda055.png)


その中で、左の画像は線形スケーリングの結果であり、右の画像は論文のアルゴリズムを使用した変換の結果です。単純な線形スケーリングの結果では、多くの詳細が失われていることがわかりますが、論文のアルゴリズム変換の結果は、画像の詳細を適切に保持しています。次に、論文のアルゴリズム部分を詳しく紹介します。

## 一、初期ライト輝度マッピング

まず、記事の著者は、カメラの露出を設定するのと同様に、画像全体の輝度マップを作成します。この操作は、実際には各ピクセルの固定スケーリングです。Tone Mappingに関する以前の研究の結論によると、著者は、輝度の対数平均値が画像のピクセルライト輝度の特性を反映できると考えています。したがって、この値を使用して各ピクセルをスケーリングします。

Lω（x、y）でピクセル（x、y）の輝度を表す場合、対数平均値は次のように表すことができます。
![GS1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/ff8c0895-7e10-8aed-7e26-011b4ed75112.png)


ここで、Nはピクセル数で、δは特異値を回避するために使用される定数です。スケーリングされた輝度L（x、y）は、次の式で表すことができます。

![GS2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/8c60c438-aa14-36cf-d1cb-a386e77b1d54.png)


その中で、αはKey Valueと呼ばれるスケーリングパラメータであり、次の図に示すように、さまざまなα値がさまざまなスケーリング度に対応します：
![GS3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/b5e728bd-e6bf-77a3-24be-1c1b06074f2b.png)



ただし、単純な線形スケーリングを行うだけでは不十分です。輝度の変化が明らかしてない画像の場合、この方法でピクセルの輝度を特定の範囲に十分に圧縮できますが、ほとんどの写真では、ほとんどのピクセルの輝度が特定の範囲内にあり、ハイライトのピクセルは平均数より高くなるため、光源、鏡面反射などの過度の露出になりがちです。したがって、通常、線形スケーリング後に画像を処理するには、非線形演算子を使用する必要があります。著者は、一般的に使用される演算子を取り上げました。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/5ba08e52-d194-5f78-a4ad-e2a4ed38a9dd.png)


その中で、Ld（x、y）は非線形演算子によって処理されたピクセルを表し、Lwhiteは画像の白の輝度にマッピングされたピクセルの最小値を表します。非線形であるため、明るいピクセルのスケーリングは大きくなります。したがって、この式は、線形スケーリングでは処理できない露出過度の状態を防ぎます。ただし、このような単純な演算子は、多くの場合、詳細が失われる傾向があります。著者は、従来の印刷技術では、印刷結果の品質を向上させるために、通常、dodying-and-burningのアプローチが採用されていることを観察しました。この方法の原理は、印刷内容の違いに応じて、異なる領域の明るさを下げる（ドディ）または上げる（燃える）ことです。この論文の著者は、次の図に示すように、単純な非線形マッピングとdodying-and-burning処理の結果を比較しました。


その中で、上の行の画像の太陽は木の枝で遮られているため、ハイライト領域は含まれていません。下の行の画像には鏡面反射が含まれています。左の列の写真も単純な非線形演算子（Simple Operator）によって拡大縮小されています。観察すると、本の文字が完全にハイライトで覆われていることがわかります。単純な非線形演算子のスケーリングでは、多くの詳細が失われることがわかります。

観察とテストの後、論文の著者は、dodging-and-burningの方法に基づいた適応的なdodging-and-burning方法を提案します。これについては、以下で詳しく説明します。

## 二、適応型のdodging-and-burning

適応型のdodging-and-burningの特徴は、高コントラストでエッジに囲まれた領域を見つけ、その領域を処理することです。したがって、著者はこれらの領域を見つけるためにガウスカーネル畳み込みを使用することを提案しています。さまざまなスケーリング係数sについて、さまざまなピクセルポイント（x、y）で、ガウスカーネル関数Ri（x、y、s）と画像L（x、y）の畳み込みを計算します。次に、畳み込み結果Vi（x、y、s）は次のように表すことができます。
![GS4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/701b7d00-2ec2-928c-e5a8-b9b2a9367c95.png)



その中で、Ri（x、y、s）は次のように表すことができます。

![GS5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/c6e3877a-25dd-0c25-e624-1c561e529617.png)


次に、論文の著者は、画像のローカルピクセルの輝度分布を測定するために、さまざまなαiパラメータの畳み込み結果間の差を計算するための誤差関数を定義します。次に、誤差関数Vは次のように表すことができます。
![GS6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/5179f85a-99e5-5250-78e0-08aec8e578b5.png)



さまざまなスケーリングパラメータsを計算して、次の式に準拠するパラメータを見つけます。

![GS7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/8ed65d70-36b3-2876-0033-1625d343fd7e.png)


ここで、ϵはしきい値であり、smは各ピクセルに対して計算されたスケーリングパラメーターです。各ピクセルのスケーリングパラメータを取得した後、ピクセルごとに異なるスケーリング計算を実行します。
![GS8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/19ab4f26-4dba-bfbf-8a70-48c54d56ac13.png)



これにより、最終的なTone Mappingの結果が得られます。次の図は、計算プロセスを示しています。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/0d41c201-0b45-1770-5b4c-064927b6b76d.png)


その中で、左の図はスケーリングパラメータの計算プロセスを示し、Centerは内側の円のガウス計算の範囲を表し、Surroundは外側の円のガウス計算の範囲を表します。右の画像は、さまざまなスケーリングパラメータでスケーリングした後の結果を示しています。観察によって、ズームが小さすぎると画像の細部を効果的に抽出できず、ズームが大きすぎると黒いArtifactsが表示されることがわかります。

## 三、対照実験

著者は、dodging-and-burningの計算結果を以前の結果と比較しました。以下に示すように：
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/5a87a6a5-9cde-4385-59a5-337258288727.png)
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/ef28e91c-7e5a-ebc5-8c3f-5f3972a308e7.png)
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/3535e551-c4f2-7c12-64e5-48cff3f6a484.png)



その中で、New operatorは論文の実現結果を表しています。

## 四、まとめ

論文の著者は、dodging-and-burning印刷技術の観察と分析を通じて、領域ごとに異なるスケーリング係数を採用する新しいTone Mappingアルゴリズムを提案し、適応的なdodging-and-burningの方法を提案します。ハイダイナミック画像をローダイナミック画像に変換する際のハイライトの過度の露出を防ぎ、明るい部分と暗い部分の両方でディテールを維持するという目的を達成できます。

## 五、論文情報

**著者情報：**
有名なコンピュータグラフィックス学者であるErikReinhardは、現在Technicolor ResearchandInnovationで研究を行っています。
ユタ大学で学んだコンピュータグラフィックス研究者のMichael Stark。
Peter Shirley、有名なコンピューターグラフィックスの専門家、フォトリアリスティックレンダリングの専門家、ユタ大学の客員教授、NVidiaの主任科学者。
James Ferwerda、有名なコンピュータグラフィックス学者で、ロチェスター工科大学の准教授です。

**リンク：**
http://www.cmap.polytechnique.fr/~peyre/cours/x2005signal/hdr_photography.pdf

---
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、**パフォーマンス分析**と**最適化ソリューション**及び**コンサルティングサービス**を提供している会社でございます。

今なら、UWA GOTローカルツールが**15日間に無償試用**できます！！
よければ、ぜひ！

UWA公式サイト：https://jp.uwa4d.com
UWA GOT OnlineレポートDemo：https://jp.uwa4d.com/u/got/demo.html
UWA公式ブログ：https://blog.jp.uwa4d.com