カメラ応答関数を使用した High Dynamic Range および Low Dynamic Range の例

概要

ファイル: \examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Bayer.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Color.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Gray.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_8192_4xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_8192_4xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_8192_4xCxp2L.vad

デフォルトプラットフォーム: mE5-MA-VCL、imaFlex CXP-12 Quad

簡単な説明

DebevecおよびMalikによるHDRアルゴリズム、ならびにReinhardらおよびFattalらによるLDRアルゴリズム。

High Dynamic Range(HDR)画像は、広い輝度範囲を再現します。これにより、非常に暗い詳細と非常に明るい詳細の両方が1つの画像に統合されます。 ほとんどの写真撮影技術では、1回のExposure Timeでこの広い輝度範囲を実現することは不可能です。そのため、HDR画像は異なるExposure Timeの画像から作成されます。 HDR画像は、ほとんどのディスプレイに直接表示することはできません。したがって、HDR画像を表示するには、Low Dynamic Range(LDR)画像への輝度コントラストのスケーリングされた削減が必要です。 この手順はトーンマッピングとも呼ばれます。このVisualAppletsの例では、DebevecおよびMalik [Deb97]によるHDRアルゴリズムが実装されています。 LDRアルゴリズムは、Reinhard [Rei02]およびFattal [Fat02]に基づいています。以下では、両方のアルゴリズムについて簡単に説明します。

High Dynamic Range Imaging

ピクセル値 (ピクセル座標が および の画像i内)は、放射照度値 およびExposure Time :

の関数として表すことができます。


式32。 次のように定義すると、

式33。


ここで、 をレスポンス曲線と呼びます。 これは、Exposure Time におけるピクセル値 とシーンの放射照度 . を関連付けるものであり、すべてのピクセルで一定であると仮定されます。 既知の値 および , は、特異値分解法 [Deb97] を使用して計算できます。 これで、次の式を使用してHDR画像を作成できます [Deb97]:

式34。


ここで、 は、結果のHDR画像のピクセルx,yにおける対数放射照度値(底 )です。カラー画像の場合、 は赤、緑、青の値です (, および )。 つまり、 式 34 は、赤、緑、青の各値について個別に計算する必要があります。 は露光回数です。 ここで 式 34 は重み付け関数です:

式 35。


Low Dynamic Range Imaging

Bayer画像およびカラー画像

HDR画像を表示するには、輝度コントラストの低減が必要です。Reinhard他 [Rei02] によれば、LDR輝度 は次のように計算できます:

式 36。


ここで、 はスケーリングされたHDR輝度です:

式 37。


パラメータ は、表示されるLDR画像の明るさを調整します。 一般的な値は 0.09 ~ 0.72 です [Rei02]。いわゆる相対的な「ワールド」輝度 は、HDRの色から計算されます: , および :

式 38。


平均値 はこの例では次のように計算されます

式 39。


Fattal他 [Fat02] によれば、LDRの色成分 , および は次のように再構築できるようになりました

式 40。


グレースケール画像

LDR画像の値 ディスプレイ出力用のグレースケール画像について、以下のように計算できます:

式 41.


ここで、 は、以下のHDR処理の結果です 式 34. は、出力画像の明るさを調整するために使用できるパラメータ定数です。

VisualAppletsデザイン

非常に暗いオブジェクトと非常に明るいオブジェクトを含む非常に広い輝度スケールのシーンを撮影するためのHDR/LDRアルゴリズムは、グレースケール(「HDR_CRC_Gray.vad」)、Bayer(「HDR_CRC_Bayer.vad」)、カラー(「HDR_CRC_Color.vad」)のカメラ画像用にVisualAppletsに実装されています。 シーン内のすべてのオブジェクトが適切に表示される画像がPCに転送されます。 デザイン「HDR_CRC_Bayer.vad」の基本構造を図 347に示します。すべての例は同じ原理に従います。 BayerパターンRAW画像の場合、各画像ピクセルの赤、緑、青の値は、Bayer5x5Linearオペレータを持つHierarchicalBoxのBayerで計算されます。このボックスは「HDR_CRC_Bayer.vad」のサンプルにのみ含まれています。 ボックスImageSequenceでは、3枚の画像のシーケンスがバッファリングされます。HDR-LDR処理のために、これら3枚の画像は異なる3つのExposure Timeを持つ必要があります。 露出シーケンス内の少なくとも1枚の画像において、すべての画像ピクセルが露光不足にも露光過度にもならないようにExposure Timeを選択する必要があります。 これらの時間は、HierarchicalBox Trigger(図 348を参照)内のオペレータSignalWidthのwidth1からwidth3で設定できます。 なお、時間スケールは8 nsのシステムクロックティックです。オペレータGenerate-Periodは、オペレータSignalWidthのwidth1からwidth3のうち最も長い時間よりも大きい値に設定する必要があります。さらに、カメラのマニュアルに記載されているオペレータGenerate-Periodの最小周期長を確認してください。 3枚の画像は、前述のDebevecおよびMalik [Deb97]によるHDRアルゴリズムを使用して結合されます。これはHierarchicalBox HDR(図 347)に実装されています。グレースケール、Bayer、カラー画像のいずれにおいても実装は同等です。 LDRアルゴリズムはLDRに実装されています。カラー/Bayer画像とグレースケール画像では実装が異なります(セクション およびを参照してください)。生成されたRGB画像のカラーは、HierarchicalBox OutputToPCでマージされます。このボックスは「HDR_CRC_Gray.vad」のサンプルには存在しません。 オペレータSourceSelectorを使用すると、処理されたHDR-LDR画像、または(Bayerデモザイクされた)カメラ画像のいずれかのDMA転送を選択できます。

基本設計構造

図 347. 基本設計構造


トリガーボックスの内容

図 348. Triggerボックスの内容


図 349 では、HierarchicalBoxの内容を確認できます HDR。バッファリングされた画像シーケンスの3枚の画像について、分子 および分母 のメンバー 式 34 の項が、画像1から3について(HierarchicalBox Image1 を Image3)赤、緑、青の各色について個別に計算されます。

HDRボックスの内容

図 349. HDRボックスの内容


図 350 では、画像1の赤色のこの計算例を確認できます(HierarchicalBox内、 赤 ボックス内、 Image1)。すべての画像の色は同様の方法で処理されます。カメラレスポンス曲線(CRC)の対数値は、HierarchicalBox内のルックアップテーブルを使用して(赤/緑/青の)ピクセル値に割り当てられます over127 ピクセル値が127より大きい場合、またはボックス内 underequal127 ピクセル値が127以下の場合は、これらのルックアップテーブルのコンテンツ gO127 および g_ueq_127 赤、緑、青の各色について、DebevecおよびMalik [ のコードに基づくMatlabプログラムモジュール「HDR_CRC.m」、「sample.m」、および「gsolve.m」(\examples\Processing\Advanced\HighDynamicRange\内)を使用して計算できます。Deb97]、および部分的にM. Eitzの例 [Eit07]。 コードの使用方法の詳細については、「HDR_CRC.m」の簡易マニュアルをお読みください。 CONST operator LNdt1 (およびアナログ LNdt2 および LNdt3 (画像2および3の場合))により、Exposure Timeの対数(底:e)値を設定できます。なお、この値には以下を乗算する必要があることに注意してください。 これは、16個の小数ビットが存在するためです。 対応するタイムベースはパラメータによって選択できます。 LNTimeBase。値 , または により、タイムスケールを秒、ミリ秒、またはマイクロ秒に設定します。ルックアップテーブル weight (図 350 )において、次の重み付け関数が実装されています。 Equation 35 Matlabプログラムモジュール「HDR_CRC.m」、「sample.m」、および「Weight.m」を使用して、重み付けテーブル「Weights.txt」を作成できます。詳細については、「HDR_CRC.m」(グレースケール画像の場合は「HDR_CRC_Gray.m」)の簡易マニュアルもお読みください。HierarchicalBoxの最終出力 赤 (およびアナログ 緑 および 青)のボックス Image1 (およびアナログ Image2 および Image3)は次になります。 および .

Image1のRedコンポーネントのコンテンツ

図 350.Image1 におけるコンポーネント Red のコンテンツ


図に戻る 349 ボックスのコンテンツとして HDR。 HDR カラーコンポーネントの対数値の計算は、 , および に従って、 式 34 のボックス内で実行されます 赤, 緑 および 青。 分子 および分母 のすべてのコンポーネントの合計と、最終的な除算がここで実装されます (例として図 351 の赤色を参照)。

HDR 下でのボックス Red のコンテンツ

図 351.HDR 下でのボックス Red のコンテンツ


ボックス Lw (図 349 には、対数値からの HDR カラー値の計算が含まれます , および 。 指数関数はルックアップテーブルで実装されます。 その後、相対的な「ワールド」輝度「Lw」が 式 38に従って HDR カラーコンポーネントから計算されます。 式 39 に従うその平均値は、モジュール LDR 内のボックス Lw_d (基本設計構造の図を参照 347)。すべてのコンテンツは、 Lw_d 図に示されています 352.

デザイン「HDR_CRC_Bayer.vad」および「HDR_CRC_Color.vad」におけるボックス LDR のコンテンツ

図 352. デザイン「HDR_CRC_Bayer.vad」および「HDR_CRC_Color.vad」におけるボックス LDR のコンテンツ


モジュール Ls には、次に基づくスケーリング済み輝度の計算が含まれています 式 37 これは、相対的な「ワールド」輝度とその平均値を「明るさパラメータ」で乗算した値で除算したものとして表されます a。このパラメータ値を変更することで、最終的な処理済み画像の明るさを調整できます。このパラメータの適切な値は、VAデザイン内のコメントボックス、または詳細については [Rei02]. LDR_Luminance は、次に基づいてLDR輝度を計算します 式 36。この値は最終的に、HierarchicalBox の出力と乗算されます HDRColor , および 赤、緑、青の色成分ごとに個別に処理されます。その結果得られるのが、処理された出力画像のLDRカラー成分(赤、緑、青)ですFat02]。 HierarchicalBox のコンテンツ Lw_d グレースケール画像用は図に示されています 353.

デザイン「HDR_CRC_Gray.vad」におけるボックス LDR のコンテンツ

図 353. デザイン「HDR_CRC_Gray.vad」におけるボックス LDR のコンテンツ


HierarchicalBox 内で Exp_Ln はその対数値から計算されます HDR処理の結果として(式 34). ボックス内では、 SQRT 平方根がセクションのアルゴリズムに従って抽出されます .結果はそれ自身で割られます プラス .の値 とその出力画像の明るさは、オペレータを使用して設定できます ShiftLeft_Brightness.