特許第6240143号(P6240143)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 上海兆芯集成電路有限公司の特許一覧

特許6240143ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置
<>
  • 特許6240143-ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置 図000002
  • 特許6240143-ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置 図000003
  • 特許6240143-ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置 図000004
  • 特許6240143-ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置 図000005
  • 特許6240143-ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置 図000006
  • 特許6240143-ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6240143
(24)【登録日】2017年11月10日
(45)【発行日】2017年11月29日
(54)【発明の名称】ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置
(51)【国際特許分類】
   H04N 5/232 20060101AFI20171120BHJP
   H04N 5/235 20060101ALI20171120BHJP
   G06T 5/00 20060101ALI20171120BHJP
【FI】
   H04N5/232 290
   H04N5/235 500
   G06T5/00 740
【請求項の数】28
【全頁数】20
(21)【出願番号】特願2015-233300(P2015-233300)
(22)【出願日】2015年11月30日
(65)【公開番号】特開2016-174350(P2016-174350A)
(43)【公開日】2016年9月29日
【審査請求日】2015年11月30日
(31)【優先権主張番号】201510116190.8
(32)【優先日】2015年3月17日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】514288853
【氏名又は名称】上海兆芯集成電路有限公司
(74)【代理人】
【識別番号】100077838
【弁理士】
【氏名又は名称】池田 憲保
(74)【代理人】
【識別番号】100129023
【弁理士】
【氏名又は名称】佐々木 敬
(72)【発明者】
【氏名】齊 南
【審査官】 赤穂 州一郎
(56)【参考文献】
【文献】 特開2011−259375(JP,A)
【文献】 特開2012−010105(JP,A)
【文献】 特開2010−068386(JP,A)
【文献】 特開2010−178164(JP,A)
【文献】 特開2001−339633(JP,A)
【文献】 国際公開第2012/049845(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 5/222 − 5/257
G06T 5/00
(57)【特許請求の範囲】
【請求項1】
処理ユニットにより実行されるハイダイナミックレンジ画像生成方法であって、
フレーム0を取得する工程と、
暗領域の第1の画素数および飽和領域の第2の画素数を含むフレーム統計情報を得る工程と、
前記第1の画素数および前記第2の画素数に基づいて比を計算する工程と、
前記計算された比および前記フレーム0の露光設定に関する式の第1の組み合わせに基づいて第1の拡張因子を計算する工程と、
前記計算された比および前記フレーム0の露光設定に関する式の第2の組み合わせに基づいて第2の拡張因子を計算する工程と、
前記第1の拡張因子を用いて前記フレーム0をHDR空間に拡張する工程と、
前記第2の拡張因子を用いてフレーム1を前記HDR空間に拡張する工程と、
前記拡張されたフレーム0を前記拡張されたフレーム1と合成する工程と、
を含むハイダイナミックレンジ画像生成方法。
【請求項2】
前記比が次の式によって計算される請求項1に記載のハイダイナミックレンジ画像生成
方法。
[数1]
shiftRatio=pixelNumBin0/pixelNumBin3
(式中、shiftRatioは前記比を表し、pixelNumBin0は前記第1の
画素数を表し、pixelNumBin3は前記第2の画素数を表す。)
【請求項3】
前記計算された比および前記フレーム0の露光設定に基づいて第1の拡張因子および第
2の拡張因子を計算する工程が、
前記計算された比および前記露光設定に基づいて第1の露光パラメータおよび第2の露
光パラメータを計算する工程と、
前記第2の露光パラメータおよび前記露光設定を用いて前記第1の拡張因子を計算する
工程と、
前記第1の露光パラメータおよび前記第2の露光パラメータを用いて前記第2の拡張因
子を計算する工程と、
を含み、
前記第2の露光パラメータの前記第1の露光パラメータに対する前記比が固定拡張値で
ある請求項1または2に記載のハイダイナミックレンジ画像生成方法。
【請求項4】
前記第1の露光パラメータが次の式により計算される請求項3に記載のハイダイナミッ
クレンジ画像生成方法。
[数2]
exp_times=a×shiftRatio×shiftRatio+b×shi
ftRatio+c
[数3]
Para1=sht×ag×dg×exp_times/expValue
(式中、Para1は前記第1の露光パラメータを表し、shiftRatioは前記比
を表し、a、bおよびcは浮動小数点数であり、sht×ag×dgは前記フレーム0の
前記露光設定を表し、expValueは前記固定拡張値を表す。)
【請求項5】
前記第2の露光パラメータが次の式により計算される請求項3または4に記載のハイダ
イナミックレンジ画像生成方法。
[数4]
exp_times=a×shiftRatio×shiftRatio+b×shi
ftRatio+c
[数5]
Para2=sht×ag×dg×exp_times
(式中、Para2は前記第2の露光パラメータを表し、shiftRatioは前記比
を表し、a、bおよびcは浮動小数点数であり、sht×ag×dgは前記フレーム0の
前記露光設定を表す。)
【請求項6】
前記第1の拡張因子が次の式により計算される請求項3から5のいずれか1項に記載の
ハイダイナミックレンジ画像生成方法。
[数6]
curveMapValNormal=curveTable_AVR[0]× sh
t×ag×d+curveTable_AVR[1]
[数7]
curveMapValHigh=curveTable_AVR[0]×Para2
+curveTable_AVR[1]
[数8]
slope_Normal=curveMapValHigh/curveMapVa
lNormal
(式中、slope_Normalは前記第1の拡張因子を表し、curveTable
_AVR[0]はイメージセンサに関連する校正された傾きであり、curveTabl
e_AVR[1]は前記イメージセンサに関連する校正されたy切片であり、sht×a
g×dgは前記フレーム0の前記露光設定を表し、Para2は前記第2の露光パラメー
タを表す。)
【請求項7】
前記第2の拡張因子が次の式により計算される請求項3から6のいずれか1項に記載の
ハイダイナミックレンジ画像生成方法。
[数9]
curveMapValLow=curveTable_AVR[0]×Para1+
curveTable_AVR[1]
[数10]
curveMapValHigh=curveTable_AVR[0]×Para2
+curveTable_AVR[1]
[数11]
slope_Low=curveMapValHigh/curveMapValLo

(式中、slope_Lowは前記第2の拡張因子を表し、curveTable_AV
R[0]はイメージセンサに関連する校正された傾き(calibrated slop
e)であり、curveTable_AVR[1]は前記イメージセンサに関連する校正
されたy切片であり、Para1は前記第1の露光パラメータを表し、Para2は前記
第2の露光パラメータを表す。)
【請求項8】
前記第1の拡張因子を用いて前記フレーム0をHDR空間に拡張する前記工程が、前記
フレーム0の各画素値に前記第1の拡張因子を乗じる工程を含み、
前記第2の拡張因子を用いてフレーム1を前記HDR空間に拡張する前記工程が、前記
フレーム1の各画素値に前記第2の拡張因子を乗じる工程を含む請求項1から7のいずれ
か1項に記載のハイダイナミックレンジ画像生成方法。
【請求項9】
前記フレーム0露光設定がノーマル露光設定であり、前記フレーム1が低露光フレームである請求項1から8のいずれか1項に記載のハイダイナミックレンジ画像生成方法。
【請求項10】
高露光フレームであるフレーム2を取得する工程、および
前記フレーム2と前記拡張されたフレーム0および前記拡張されたフレーム1の合成結
果とを合成する工程、
をさらに含む請求項1から9のいずれか1項に記載のハイダイナミックレンジ画像生成方
法。
【請求項11】
第1の露光補償法を用いて前記拡張されたフレーム0の飽和画素および暗画素を補償す
る工程と、
第2の露光補償法を用いて前記拡張されたフレーム1の暗画素を補償する工程と、
第3の露光補償法を用いて前記フレーム2の飽和画素を補償する工程と、
をさらに含む請求項10に記載のハイダイナミックレンジ画像生成方法。
【請求項12】
前記第1の露光補償法は、前記拡張されたフレーム0の前記暗画素の輝度値を、同じ位置における前記フレーム2の輝度画素値に置き換え、かつ前記拡張されたフレーム0の前記飽和画素の輝度値を、同じ位置における前記フレーム1の輝度画素値に置き換えるものであり、前記第2の露光補償法は、前記拡張されたフレーム1の前記暗画素の輝度値を、同じ位置における前記拡張されたフレーム0の輝度画素値に置き換えるものであり、前記第3の露光補償法は、前記フレーム2の前記飽和画素の輝度値を、同じ位置における前記拡張されたフレーム0の前記輝度画素値に置き換えるものである請求項11に記載のハイダイナミックレンジ画像生成方法。
【請求項13】
前記フレーム0を複数のブロックに分割する工程と、
前記フレーム0の各ブロックのブロック統計情報を得る工程と、
前記ブロック統計情報に基づいて前記フレーム0の各ブロックのタイプを識別する工程
と、
各ブロックの前記タイプに基づいてブロックの重みを設定する工程と、
前記ブロックの重みに基づいて前記フレーム0の各画素に対応する画素の重みを計算す
る工程と、
前記画素の重みに基づいて前記拡張されたフレーム0を前記拡張されたフレーム1と合
成する工程と、
をさらに含む請求項1から12のいずれか1項に記載のハイダイナミックレンジ画像生成
方法。
【請求項14】
前記画素の重みが次の式によって計算される請求項13に記載のハイダイナミックレンジ画像生成方法。
[数12]
Wp=D1×D2×WUL+D1×D4×WUR+D3×D2×WLL+D3×D4×WLR
(式中、Wpは前記フレーム0の画素の前記画素の重みを表し、WULは上左側のブロックに関するブロックの重みを表し、WURは上右側のブロックに関するブロックの重みを表し、WLLは下左側のブロックに関するブロックの重みを表し、WLRは下右側のブロックに関するブロックの重みを表し、D1は前記画素から下縁辺までの距離を表し、D2は前記画素から右縁辺までの距離を表し、D3は前記画素から上縁辺までの距離を表し、D4は前記画素から左縁辺までの距離を表す。)
【請求項15】
ハイダイナミックレンジ画像を生成するハイダイナミックレンジ画像生成装置であって、
カメラモジュールに接続されたカメラモジュールコントローラと、
前記カメラモジュールコントローラを介してフレーム0を取得し、暗領域の第1の画素数および飽和領域の第2の画素数を含むフレーム統計情報を得、前記第1の画素数および前記第2の画素数に基づいて比を計算し、前記計算された比および前記フレーム0の露光設定に関する式の第1の組み合わせに基づいて第1の拡張因子(expansion factor)を計算し、前記計算された比および前記フレーム0の露光設定に関する式の第1の組み合わせに基づいて第2の拡張因子を計算し、前記第1の拡張因子を用いて前記フレーム0をHDR空間に拡張し、前記第2の拡張因子を用いてフレーム1を前記HDR空間に拡張し、前記拡張されたフレーム0を前記拡張されたフレーム1と合成する処理ユニットと、
を含むハイダイナミックレンジ画像生成装置。
【請求項16】
前記比が次の式によって計算される請求項15に記載のハイダイナミックレンジ画像生
成装置。
[数13]
shiftRatio pixelNumBin0/pixelNumBin3
(式中、shiftRatioは前記比を表し、pixelNumBin0は前記第1の
画素数を表し、pixelNumBin3は前記第2の画素数を表す。)
【請求項17】
前記処理ユニットがさらに、前記比および前記露光設定に基づいて第1の露光パラメー
タおよび第2の露光パラメータを計算し、前記第2の露光パラメータおよび前記露光設定
を用いて前記第1の拡張因子を計算し、前記第1の露光パラメータおよび前記第2の露光
パラメータを用いて前記第2の拡張因子を計算し、このうち前記第2の露光パラメータの
前記第1の露光パラメータに対する前記比が固定拡張値である請求項15または16に記
載のハイダイナミックレンジ画像生成装置。
【請求項18】
前記第1の露光パラメータが次の式により計算される請求項17に記載のハイダイナミ
ックレンジ画像生成装置。
[数14]
exp_times=a×shiftRatio×shiftRatio+b×shi
ftRatio+c
[数15]
Para1=sht×ag×dg×exp_times/expValue
(式中、Para1は前記第1の露光パラメータを表し、shiftRatioは前記比
を表し、a、bおよびcは浮動小数点数であり、sht×ag×dgは前記フレーム0の
前記露光設定を表し、expValueは前記固定拡張値を表す。)
【請求項19】
前記第2の露光パラメータが次の式により計算される請求項17または18に記載のハ
イダイナミックレンジ画像生成装置。
[数16]
exp_times=a×shiftRatio×shiftRatio+b×shi
ftRatio+c
[数17]
Para2=sht×ag×dg×exp_times
(式中、Para2は前記第2の露光パラメータを表し、shiftRatioは前記比
を表し、a、bおよびcは浮動小数点数であり、sht×ag×dgは前記フレーム0の
前記露光設定を表す。)
【請求項20】
前記第1の拡張因子が次の式により計算される請求項17から19のいずれか1項に記
載のハイダイナミックレンジ画像生成装置。
[数18]
curveMapValNormal=curveTable_AVR[0]×sht
×ag×dg+curveTable_AVR[1]
[数19]
curveMapValHigh=curveTable_AVR[0]×Para2
+curveTable_AVR[1]
[数20]
slope_Normal=curveMapValHigh/curveMapVa
lNormal
(式中、slope_Normalは前記第1の拡張因子を表し、curveTable
_AVR[0]はイメージセンサに関連する校正された傾き(calibrated s
lope)であり、curveTable_AVR[1]は前記イメージセンサに関連す
る校正されたy切片であり、sht×ag×dgは前記フレーム0の前記露光設定を表し
、Para2は前記第2の露光パラメータを表す。)
【請求項21】
前記第2の拡張因子が次の式により計算される請求項17から20のいずれか1項に記
載のハイダイナミックレンジ画像生成装置。
[数21]
curveMapValLow=curveTable_AVR[0]×Para1+
curveTable_AVR[1]
[数22]
curveMapValHigh=curveTable_AVR[0]×Para2
+curveTable_AVR[1]
[数23]
slope_Low=curveMapValHigh/curveMapValLo

(式中、slope_Lowは前記第2の拡張因子を表し、curveTable_AV
R[0]はイメージセンサに関連する校正された傾き(calibrated slop
e)であり、curveTable_AVR[1]は前記イメージセンサに関連する校正
されたy切片であり、Para1は前記第1の露光パラメータを表し、Para2は前記
第2の露光パラメータを表す。)
【請求項22】
前記処理ユニットが、前記フレーム0の各画素値に前記第1の拡張因子を乗じて前記フ
レーム0を前記HDR空間に拡張し、かつ前記フレーム1の各画素値に前記第2の拡張因
子を乗じて前記フレーム1を前記HDR空間に拡張する請求項15から21のいずれか1
項に記載のハイダイナミックレンジ画像生成装置。
【請求項23】
前記フレーム0の前記露光設定がノーマル露光設定であり、前記フレーム1が低露光フレームである請求項15から22のいずれか1項に記載のハイダイナミックレンジ画像生成装置。
【請求項24】
前記処理ユニットがさらに、高露光フレームであるフレーム2を取得し、前記フレーム
2と前記拡張されたフレーム0および前記拡張されたフレーム1の合成結果とを合成する
請求項23に記載のハイダイナミックレンジ画像生成装置。
【請求項25】
前記処理ユニットがさらに、第1の露光補償法を用いて前記拡張されたフレーム0の飽
和画素および暗画素を補償し、第2の露光補償法を用いて前記拡張されたフレーム1の暗
画素を補償し、第3の露光補償法を用いて前記フレーム2の飽和画素を補償する請求項24に記載のハイダイナミックレンジ画像生成装置。
【請求項26】
前記第1の露光補償法は、前記拡張されたフレーム0の前記暗画素の輝度値を、同じ位
置における前記フレーム2の輝度画素値に置き換え、かつ前記拡張されたフレーム0の前
記飽和画素の輝度値を、同じ位置における前記フレーム1の輝度画素値に置き換えるもの
であり、前記第2の露光補償法は、前記拡張されたフレーム1の前記暗画素の輝度値を、
同じ位置における前記拡張されたフレーム0の輝度画素値に置き換えるものであり、前記
第3の露光補償法は、前記フレーム2の前記飽和画素の輝度値を、同じ位置における前記
拡張されたフレーム0の前記輝度画素値に置き換えるものである請求項25に記載のハイ
ダイナミックレンジ画像生成装置。
【請求項27】
前記処理ユニットがさらに、前記フレーム0を複数のブロックに分割し、前記フレーム
0の各ブロックのブロック統計情報を得、前記ブロック統計情報に基づいて前記フレーム
0の各ブロックのタイプを識別し、各ブロックの前記タイプに基づいてブロックの重みを
設定し、前記ブロックの重みに基づいて前記フレーム0の各画素に関する画素の重みを計
算し、前記画素の重みに基づいて前記拡張されたフレーム0を前記拡張されたフレーム1
と合成する請求項15から26のいずれか1項に記載のハイダイナミックレンジ画像生成
装置。
【請求項28】
前記画素の重みが次の式によって計算される請求項27に記載のハイダイナミックレン
ジ画像生成装置。
[数24]
Wp=D1×D2×WUL+D1×D4×WUR+D3×D2×WLL+D3×D4×
WLR
(式中、Wpは前記フレーム0の画素の前記画素の重みを表し、WULは上左側のブロッ
クに関するブロックの重みを表し、WURは上右側のブロックに関するブロックの重みを
表し、WLLは下左側のブロックに関するブロックの重みを表し、WLRは下右側のブロ
ックに関するブロックの重みを表し、D1は前記画素から下縁辺までの距離を表し、D2
は前記画素から右縁辺までの距離を表し、D3は前記画素から上縁辺までの距離を表し、
D4は前記画素から左縁辺までの距離を表す。)
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像処理に関し、より詳細には、ハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置に関する。
【背景技術】
【0002】
HDR(ハイダイナミックレンジ)画像は、直射日光から仄かな星雲まで、実世界のシーンにおいてキャプチャした広いレンジの輝度レベルを表示することができる。HDR画像は通常、同一の対象物に対し露光の異なる画像をキャプチャすると共にそれらを組み合わせることによって得られる。非HDRカメラでは、限られた露光レンジで写真を撮るため、飽和領域または暗領域において細部が失われてしまう。HDRM(ハイダイナミックレンジマージング)は、異なる露光レベルで複数の写真を撮影しそれらを合成することによりこの細部の損失を補償して、より広い階調範囲の写真表現を作り出す。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、HDR画像の生成にはかなりの時間がかかる。本発明は、HDR画像の生成にかかる時間を短縮することが可能なハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置を提供する。
【課題を解決するための手段】
【0004】
本発明に係るハイダイナミックレンジ画像生成方法は、処理ユニットにより実行されるハイダイナミックレンジ画像生成方法であって、フレーム0を取得する工程と、少なくとも暗領域の第1の画素数および飽和領域の第2の画素数を含むフレーム統計情報を得る工程と、第1の画素数および第2の画素数に基づいて比を計算する工程と、当該計算された比およびフレーム0の露光設定に関する式の第1の組み合わせに基づいて第1の拡張因子を計算する工程と、前記計算された比および前記フレーム0の露光設定に関する式の第2の組み合わせに基づいて第2の拡張因子を計算する工程と、第1の拡張因子を用いてフレーム0をHDR空間に拡張する工程と、第2の拡張因子を用いてフレーム1をHDR空間に拡張する工程と、拡張されたフレーム0を拡張されたフレーム1と合成する工程と、を含む。
【0005】
本発明に係るハイダイナミックレンジ画像生成装置は、ハイダイナミックレンジ画像を生成するハイダイナミックレンジ画像生成装置であって、カメラモジュールに接続されたカメラモジュールコントローラと、処理ユニットとを含む、該処理ユニットは、カメラモジュールコントローラを介してフレーム0を取得し、少なくとも暗領域の第1の画素数および飽和領域の第2の画素数を含むフレーム統計情報を得、第1の画素数および前記第2の画素数に基づいて比を計算し、当該計算された比およびフレーム0の露光設定に関する式の第1の組み合わせに基づいて第1の拡張因子を計算し、前記計算された比および前記フレーム0の露光設定に関する式の第1の組み合わせに基づいて第2の拡張因子を計算し、第1の拡張因子を用いてフレーム0をHDR空間に拡張し、第2の拡張因子を用いてフレーム1をHDR空間に拡張し、拡張されたフレーム0を拡張されたフレーム1と合成する。
【発明の効果】
【0006】
本発明に係るハイダイナミックレンジ画像生成方法およびハイダイナミックレンジ画像生成装置は、フレーム0における暗領域および飽和領域の画素数の比と、ノーマル露光フレームの露光設定とを用いて拡張因子を計算してから、算出された拡張因子に基づいて、直接、異なる露光設定の下で撮影されたLDRフレームの画素値をHDR空間にマッピングすることができる。そのため、多数のLCRフレームを有するカメラレスポンス関数のオンライン計算に多大なハードウェアリソースを費やす必要が無い。よって、HDR画像の生成にかかる時間を短縮することが可能になる。
【図面の簡単な説明】
【0007】
図1】本発明の一実施形態に係るコンピュータ装置の構成を示す概略図である。
図2】本発明の一実施形態に係る、処理ユニットによって実行されるHDR画像生成の方法を説明するフローチャートである。
図3】本発明の一実施形態に係る、処理ユニットによって実行されるHDR画像生成の方法を説明するフローチャートである。
図4】本発明の一実施形態に係るブロックの輝度ヒストグラムの概略図である。
図5】本発明の一実施形態に係るフレーム0の輝度ヒストグラムの概略図である。
図6】本発明の一実施形態に係る4個の隣接するブロックを示す概略図である。
【発明を実施するための形態】
【0008】
以下の記載は、本発明を実施するのに最良であると考えられる形態である。この記載は本発明の基本的な原理を説明する目的でなされたものであって、限定の意味で解されてはならない。本発明の範囲は、添付の特許請求の範囲を参照することにより決定されるべきである。
【0009】
本発明の実施形態について、図面を参照しつつ説明するが、本発明は、以下の実施形態に限定されるものではなく、その範囲は、特許請求の範囲の記載に基づいて定められる。さらに、“含む(comprises)”、“含んでいる(comprising)”、“含む(includes)”および/または“含んでいる(including)”といった用語は、本明細書で用いられるときに、記述した特徴(features)、整数、工程、動作、要素、および/またはコンポーネントの存在を明示するが、1つまたはそれ以上のその他の特徴、整数、工程、動作、要素、コンポーネント、および/またはこれらの群の存在または追加を排除するものではないということが理解されるであろう。
【0010】
図1は、本発明の一実施形態に係るコンピュータ装置の構成を示す概略図である。本実施形態に係るコンピュータ装置は、デスクトップ型コンピュータ、ノートブック型コンピュータ、タブレットPC(パーソナルコンピュータ)、携帯電話、デジタルカメラ、デジタルレコーダー、またはその他のデバイスよって実現可能であり、これらは少なくとも処理ユニット110を含む。処理ユニット110は、多種の方式、例えばマイクロコードまたはソフトウェア命令によりプログラムされて本明細書に記載の機能を実行する専用ハードウェアまたは汎用ハードウェア(例えば単一の処理機、並列計算が可能な複数の処理機もしくはグラフィック処理ユニット、またはその他)として実現され得る。処理ユニット110は、カメラモジュールコントローラ170を介し、複数のLDR(ローダイナミックレンジ)フレームをキャプチャすると共にフレームバッファー130にLDRフレームを保存するようカメラモジュール190を制御することができる。カメラモジュール190は、赤、緑および青色の形式で画像を検出するためのイメージセンサ、例えばCMOS(相補型金属酸化物半導体)またはCCD(電荷結合素子)センサと、イメージセンサから感知データ(sensed data)を収集する読み出し電子回路と、を含み得る。処理ユニット110は、フレームバッファー130から少なくとも3つのLDRフレームを得ることができる。本実施形態において、3つのLDRフレームは12ビットのフレームである。1つのLDRフレームは、ノーマル露光でキャプチャされたフレームであって、例えば最適化された露光設定の下でAE(自動露光)アルゴリズムによりキャプチャされたものであり、以下これをフレーム0と称する。フレーム0をキャプチャするのに用いる露光設定には、シャッタースピード、アナログゲインおよびデジタルゲインが含まれ、これらはフレームバッファー130または揮発性メモリ140に保存されるという点に留意すべきである。揮発性メモリ140、例えばDRAM(ダイナミックランダムアクセスメモリ)は、ランタイム変数、データテーブルなどのような、実行において必要なデータを保存するために用いられる。別のLDRフレームは、ノーマル露光よりも露光量が小さい低露光フレームであり、以下これをフレーム1と称する。また別のLDRフレームは、ノーマル露光よりも露光量が大きい高露光フレームであり、以下これをフレーム2と称する。処理ユニット110は、HDRM(ハイダイナミックレンジマージング)アルゴリズムを用いてHDR(ハイダイナミックレンジ)フレームを生成することによりフレーム0から2を合成する(merges)と共に、生成されたHDRフレームをフレームバッファー150に保存する。本実施形態では、出力HDRフレームは18ビットのフレームである。
【0011】
図2は、本発明の一実施形態に係る、処理ユニットによって実行されるHDR画像生成の方法を説明するフローチャートである。プロセスはフレーム0の取得から始まる(ステップS200)。次いで、処理ユニット110がフレーム0のフレーム統計情報を得る(ステップS201)。ステップS201にて得られるフレーム統計情報は、フレーム0の暗領域における第1の画素の総数と、フレーム0の飽和領域における第2の画素の総数とを含む。処理ユニット110は、第1の画素の総数および第2の画素の総数に基づいて比を計算する(ステップS202)。次いで、処理ユニット110は、ステップS202にて計算された比およびフレーム0の露光設定に基づいて第1の拡張因子(expansion factor)および第2の拡張因子を計算する(ステップS203)。ステップS201からS203の詳細については後述する。処理ユニット110は、第1の拡張因子を用いてフレーム0をHDRに拡張する(ステップS204)。次いで、処理ユニット110は、フレームバッファー130からフレーム1を取得し(ステップS205)、第2の拡張因子を用いてフレーム1をHDRに拡張する(ステップS206)。本実施形態において、拡張ステップは、フレーム0/1の各画素値に、第1の拡張因子/第2の拡張因子を乗じるものである。最後に、処理ユニット110は、拡張されたフレーム0を拡張されたフレーム1と合成する(ステップS207)。本実施形態において、このときまでに、本発明の処理ユニット110は、ノーマル露光設定のフレーム0および低露光設定のフレーム1をHDRに拡張し、かつ2つのフレームを合成する。
【0012】
図3は、本発明の一実施形態に係る、処理ユニットによって実行されるHDR画像生成方法を説明するフローチャートである。プロセスは、フレームバッファー130からフレーム0を取得することから始まる(ステップS211)。次に、処理ユニット110は、フレーム0の各ブロックの統計情報を得る(ステップS213)。詳細には、フレーム0がm×nのブロックに分割され得る。各ブロックは、例えば32×32画素を含む。そして各画素の輝度値が計算される。各画素の輝度値は次の式(1)を用いて計算することができる。
【0013】
[数1]
V=0.3×R+0.6×G+0.1×B (1)
式(1)において、Rは赤色値を表し、Gは緑色値を表し、Bは青色値を表し、Vは輝度値を表す。処理ユニット110は、各ブロックの平均輝度AveLumおよび輝度ヒストグラムを計算する。図4は、本発明の一実施形態に係るブロックの輝度ヒストグラムの概略図である。本実施形態では、例として0から4095までの範囲の12ビットの輝度値を挙げているが、本発明はこれに限定されることはない。ヒストグラムは、例えば16個のビンに分割され、ビン8の最小輝度値V8は2047.5(=4095/2)に設定される。ビン7の最小輝度値V7およびビン9のV9は次の式(2)および(3)を用いて計算することができる。
【0014】
[数2]
V7=4095×r (2)
[数3]
V9=4095×(1−r) (3)
式(2)および(3)において、rは0から0.5の間の任意の値であり得る。rが0.25に設定されていると仮定すると、V7は1023.75、V9は3071.25である。0からV7までの輝度値は、7個のビン(Bin0〜Bin6)に均等に分割され、V9から4095までの輝度値は7個のビン(Bin9〜Bin15)に分割される。8個目のビン(Bin7)の輝度値はV7からV8までであり、9個目のビン(Bin8)の輝度値はV8からV9までである。各ブロックについて、処理ユニット110は、その輝度値に基づいて各画素を対応するビンに分配すると共に、各ビンに画素がいくつ存在するかをカウントする。ヒストグラムを生成するための例示的な疑似コードは次の通りである。
【0015】
LowThr = 4096 >> 2; // LowThr = maximum_12bits * 0.25
HighThr = 4096 - LowThr;
valuePerBin = (LowThr / (blockBinNum/ 2 - 1)); // blockBinNum = 16
//for each block
for(byIdx = 0; byIdx < block_cnt_y; byIdx ++) {
for(bxIdx = 0; bxIdx < block_cnt_x; bxIdx ++) {
lum = image->y[pxlIdx];
sum += lum;
if (lum < LowThr) { // (Bin 0~6)
bin = ((unsigned short)(lum * (((blockBinNum >> 1) - 1) << 2)) >> 12); }
else if (lum < (maximum_12bits + 1) / 2) { // (Bin 7)
Bin = ( blockEntryNum / 2 - 1); }
else if (lum < HighThr) { // (Bin 8)
Bin = ( blockEntryNum / 2); }
else { // (Bin 9~15)
tmpLum = lum - HighThr;
tmpBin = ((unsigned short)(tmpLum * (((blockBinNum >> 1) - 1) << 2)) >> 12);
if (tmpBin >= ((blockBinNum >> 1) -1)){
bin = blockBinNum - 1;}
else {
bin = (blockBinNum >> 1) + 1 + tmpBin;} }
bestExpblockInfor[curLumSumIdx].block_hist[Bin]++; }
bestExpblockInfor[curLumSumIdx].block_averVal = sum / block_size; }
ここで、bestExpBlockInforは構造体アレイであり、各構造体は、輝度平均値block_averValと、Bin0からBin15の画素数block_hist[Bin]とを含む1つのブロックの統計情報を保存する。
【0016】
続いて、処理ユニット110は、ブロックの輝度平均値およびヒストグラムを分析することにより得られた統計情報に基づいて、各ブロックが低露光タイプ、ノーマル露光タイプ、または高露光タイプであると識別する(ステップS215)。詳細には、1つのブロックのヒストグラム内の低ビンしきい値および高ビンしきい値が計算される。低ビンしきい値および高ビンしきい値は次の式(4)および(5)を用いて計算することができる。
【0017】
[数4]
threBinLow≒(BinNum/2−1)/r×0.18 (4)
[数5]
threBinHigh≒BinNum−(BinNum/2−1)/r×0.18 (5)
式(4)および(5)において、threBinLowは低ビンしきい値を表し、threBinHighは高ビンしきい値を表し、BinNumはブロックのヒストグラム内のビンの総数を表し、例えばBinNum=16であり、かつrは0から0.5までの任意の値であり得る。rが0.25に設定されていると仮定すると、低ビンしきい値は5であり、高ビンしきい値は11である。各ブロックについて、Bin0からBin5までにある画素は暗領域に属し、一方、Bin11からBin15までにある画素は飽和領域に属する。各ブロックについて、暗領域の画素数を表すpixNumLowはBin0からBin5まで累積され、飽和領域の画素数を表すpixNumLowはBin11からBin15まで累積される。処理ユニット110は、下記の判断によって、ブロックのタイプが低露光、ノーマル露光、または高露光のいずれであるかを識別する。ブロックは、暗領域の画素数pixNumLowがブロック輝度しきい値blocklumthresよりも大きい場合に、低露光タイプとしてラベリングされる。ブロックは、飽和領域の画素数pixNumHighがブロック輝度しきい値blocklumthresよりも大きい場合に、高露光タイプとしてラベリングされる。本実施形態において、ブロック輝度しきい値はブロック内の画素の総数に関連し、例えばblocklumthres=blocksize*ratioである。別の実施形態では、処理ユニット110は、低輝度平均しきい値AveLumLow(例えば256)および高輝度平均しきい値AveLumHigh(例えば3840)をさらに提供する。ブロックは、そのブロックの輝度平均値AveLumが低輝度平均しきい値AveLumLow以下である場合に、低露光タイプとしてラベリングされる。ブロックは、そのブロックの輝度平均値AveLumが高輝度平均しきい値AveLumHigh以上である場合に、高露光タイプとしてラベリングされる。ブロックは、低露光タイプまたは高露光タイプとしてラベリングされなかった場合に、ノーマル露光タイプとしてラベリングされる。各ブロックのタイプを識別するための例示的な疑似コードは次のとおりである。
【0018】
ThrgridL = 5; // lowlight bin threshold, thrblockBinL = ((binNum >> 1) - 1) * 0.18 / ratio;
for (x = 0; x < block _cnt_x; x++) {
for (y = 0; y < block_cnt_y; y++) {
curblockIdx = y * block _cnt_x + x;//block index
while (i <= ThrblockL) {
j = binNum - i;
blockcntltmp += bestExpblockInfor[curgIdx].block_hist[i];
//accumulate from low to high
blockcnthtmp += bestExpblockInfor[curgIdx].block_hist[j];// accumulate from high to low
i++; }
curblockAve = m_pBestExpblockInfor[curgIdx].block_averVal;
b_AveLumMin = (maximum_12bits + 1) >> 4; //average low threshold
b_AveLumMax = (maximum_12bits + 1) - g_KAveLumMin; //average high threshold
ThrblockCnt = blockSize * 0.18;//histogram threshold
//block label is defined by average and histogram of the block
isUnder = ((Gridcntltmp > thrBlockCnt) && (g_KAveLumMin
>= curblockAve));
isOver = ((Gridcnthtmp > thrBlockCnt) && (g_KAveLumMax <= curblockAve)
);
if (isUnder && isOver) { // is over and is under
blockLabel[curblockIdx] = NORMAL; }// NORMAL = 1
else if (isUnder) { // is under
blockLabel[curblockIdx] = LOW; } // LOW = 0
else if (isOver) { //is over
blockLabel[curblockIdx] = HIGH; } // HIGH = 2
else { // is not over and not under
blockLabel[curblockIdx] = NORMAL;}}}
ここで、blockLabelはアレイであり、このアレイにおいて、各セルは例えば低露光“LOW”、ノーマル露光“NORMAL”および高露光“HIGH”のようなブロックの1のタイプを保存している。なお、暗領域または飽和領域の画素数およびブロックの輝度平均値AveLumの両方を考慮に入れるような設計にすることもできる。例えば、ブロックは、暗領域の画素数pixNumLowがブロック輝度しきい値blocklumthresよりも大きく、かつ輝度平均値AveLumが低輝度平均しきい値AveLumLow以下である場合に、低露光タイプとしてラベリングされる。ブロックは、飽和領域の画素数pixNumHighがブロック輝度しきい値blocklumthresよりも大きく、かつ輝度平均値AveLumが高輝度平均しきい値AveLumHigh以上である場合に、高露光タイプとしてラベリングされる。ブロックは、低露光タイプまたは高露光タイプとしてラベリングされなかった場合に、ノーマル露光タイプとしてラベリングされる。
【0019】
続いて、処理ユニット110は、各ブロックの重み(ブロックの重みともいう)を、そのブロックのタイプに基づいて設定し(ステップS217)、フレーム0の各画素の重み(画素の重みともいう)を計算する(ステップS219)。ステップS217において、詳細には、ブロックが低露光タイプとしてラベリングされている場合、ブロックの重みは0に設定され、ブロックがノーマル露光タイプとしてラベリングされている場合、ブロックの重みは1に設定され、ブロックが高露光タイプとしてラベリングされている場合、ブロックの重みは2に設定される。ステップS219において、詳細には、ブロックの境界およびコーナー部分に位置する画素を除き、処理ユニット110は、4個の隣接するブロックの重みと、画素から4個の隣接するブロックの中心までの距離とに基づいて、フレーム0の各画素の重みを計算する。図6は、本発明の一実施形態に係る4個の隣接するブロックを示す概略図である。隣接するブロックWUL、WUR、WLLおよびWLRの4個の中心点により矩形が形成され、この矩形は4個の縁辺E1からE4を含む。各画素の重みWは次の式(6)を用いて計算することができる。
【0020】
[数6]
=D1×D2×WUL+D1×D4×WUR+D3×D2×WLL+D3×D4×WLR (6)
ここで、WULは上左側のブロックに関するブロックの重みを表し、WURは上右側のブロックに関するブロックの重みを表し、WLLは下左側のブロックに関するブロックの重みを表し、WLRは下右側のブロックに関するブロックの重みを表し、D1は画素pから下縁辺E1までの距離を表し、D2は画素pから右縁辺E2までの距離を表し、D3は画素pから上縁辺E3までの距離を表し、D4は画素pから左縁辺E4までの距離を表す。ステップS219で計算されたフレーム0の各画素の重みは、フレーム0とフレーム1との合成プロセスにおいて用いられることとなる。詳細は後述する。
【0021】
再度図3の最初のステップS211を参照する。フレーム0を取得した(ステップS211)後、処理ユニット110はフレーム0の統計情報を得る(ステップS251およびS231)。ステップS211において、処理ユニット110はRGBの色空間をHSVのそれに変換することができる。詳細には、S251およびS231において、処理ユニット110はフレーム0のヒストグラムを計算する。図5は、本発明の一実施形態に係るフレーム0の輝度ヒストグラムの概略図である。暗領域の輝度値(Bin0)は0からC1までであり、一方、飽和領域の輝度値(Bin3)はC3からC4までである。本実施形態では、0から4095までの12ビットの輝度値を例とし、C1=511、C3=3583およびC4=4095としているが、本発明はこれに限定されることはない。フレーム0全体について、処理ユニット110は、各領域にいくつの画素が存在するかをカウントし、かつ暗領域に含まれる第1の画素数(暗画素数とも称する)の、飽和領域に含まれる第2の画素数(飽和画素数とも称する)に対する、shiftRatioと示される比を計算する。この比は次の式を用いて計算することができる。
【0022】
[数7]
shiftRatio=pixelNumBin0/pixelNumBin3
(7)
上式中、pixelNumBin0は暗領域の第1の画素数を表し、pixelNumBin3は飽和領域の第2の画素数を表す。次に、処理ユニット110は、第1の画素数の第2の画素数に対する比に基づいて、拡張倍数(expansion multiplier)exp_timesを計算する。暗画素数の飽和画素数に対する比が8未満である場合、拡張倍数exp_timesを計算するのに式(8)を用いることができる。暗画素数の飽和画素数に対する比が8以上である場合、拡張倍数exp_timesを計算するのに式(9)を用いることができる。
【0023】
[数8]
exp_times=a×shiftRatio×shiftRatio+b×
shiftRatio+c (8)
[数9]
exp_times=d×shiftRatio×shiftRatio+e×
shiftRatio+f (9)
上記式中、a、b、c、d、eおよびfは浮動小数点数である。続いて、処理ユニット110は、フレーム0の統計情報から導き出された比shiftRatioおよびフレーム0の露光設定に基づいて、フレーム1を処理するのに必要な第1の露光パラメータを計算し(ステップS253)、かつフレーム2を処理するのに必要な第2の露光パラメータを計算する(ステップS235)。露光設定には、シャッタースピード(shtと示される)、アナログゲイン(agと示される)およびデジタルゲイン(dgと示される)が含まれる。露光設定は、例えば、sht、agおよびdgの乗積である。第1の露光パラメータPara1および第2の露光パラメータPara2は次の式(10)および(11)を用いて計算することができる。
【0024】
[数10]
Para1=sht×ag×dg×exp_times/expValue (10)
[数11]
Para2=sht×ag×dg×exp_times (11)
式(10)および(11)において、expValueは、第2の露光パラメータの第1の露光パラメータに対する比である固定拡張値(fixed expansion value)を表す。12ビットのLDRフレームを拡張および合成して18ビットのHDRフレームを生成する本実施形態において、expValueは、64である。
【0025】
第2の露光パラメータPara2を計算した(ステップS233)後、処理ユニット110はフレーム0をHDR空間に拡張する(ステップS221)。ステップS221において、フレーム0の第1の拡張因子を計算するのに用いられる例示的な疑似コードは次のとおりである。
【0026】
curveMapValNormal = curveTable_AVR[0] x sht x ag x dg + curveTable_AVR[1];
curveMapValHigh = curveTable_AVR[0] x Para2 + curveTable_AVR[1];
slope_Normal = curveMapValHigh / curveMapValNormal;
ここで、slope_Normalはフレーム0の第1の拡張因子を表す。curveTable_AVR[0]は、カメラモジュール190のイメージセンサに関連する校正された傾き(calibrated slope)である。curveTable_AVR[1]は、カメラモジュール190のイメージセンサに関連する校正されたy切片である。sht×ag×dgは、フレーム0の露光設定を表す(ただし、shtはフレーム0のシャッタースピードを表し、agはフレーム0のアナログゲインを表し、dgはフレーム0のデジタルゲインを表す)。Para2は、式(11)を用いて算出された第2の露光パラメータを表す。処理ユニット110は、フレーム0における各画素のHSV値に第1の拡張因子slope_Normalを乗じて、フレーム0をHDR空間に拡張する。
【0027】
第1の露光パラメータPara1を計算した(ステップS253)後、処理ユニット110は、算出された第1の露光パラメータPara1によって表される露光設定に基づき、低露光フレーム(フレーム1と称する)を撮影して、フレームバッファー130に保存するようカメラモジュールコントローラ170に指示する。さらに、第2の露光パラメータPara2を計算した(ステップS233)後、処理ユニット110は、算出された第2の露光パラメータPara2により表される露光設定に基づき高露光フレーム(フレーム2と称する)を撮影して、フレームバッファー130に保存するようカメラモジュールコントローラ170に指示する。第1の露光パラメータPara1の計算(ステップS253)および第2の露光パラメータPara2の計算(ステップS233)の後、処理ユニット110はフレーム1をHDR空間に拡張する(ステップS257)。ステップS257において、フレーム1の第2の拡張因子を計算するのに用いられる例示的な疑似コードは次のとおりである。
【0028】
curveMapValLow = curveTable_AVR[0] x Para1 + curveTable_AVR[1];
curveMapValHigh = curveTable_AVR[0] x Para2 + curveTable_AVR[1];
slope_Low = curveMapValHigh / curveMapValLow;
ここで、slope_Lowはフレーム1の第2の拡張因子を表し、curveTable_AVR[0]はカメラモジュール190のイメージセンサに関連する校正された傾きであり、curveTable_AVR[1]はカメラモジュール190のイメージセンサに関連する校正されたy切片であり、Para1は式(10)によりステップS253で算出された第1の露光パラメータを表し、Para2は式(11)によりステップS233で算出された第2の露光パラメータを表す。処理ユニット110は、フレーム1における各画素のHSV値に第2の拡張因子slope_Lowを乗じて、フレーム1をHDR空間に拡張する。
【0029】
ステップS259において、拡張されたフレーム0、拡張されたフレーム1、および得られたフレーム2が補償される。詳細には、処理ユニット110は、第1の露光補償法を用いて、拡張されたフレーム0の飽和画素および暗画素を補償する。詳細には、第1の露光補償法は、拡張されたフレーム0の暗画素(例えば輝度値が0から128 x slope_Normalのもの)を検出し、拡張されたフレーム0の検出された暗画素の輝度値を、同じ位置におけるフレーム2の輝度画素値に置き換えるものである。第1の露光補償法ではさらに、拡張されたフレーム0の飽和画素(例えば輝度値が3967 x slope_Normalから4095までのもの)を検出し、拡張されたフレーム0の検出された飽和画素の輝度値を、同じ位置におけるフレーム1の輝度画素値に置き換える。また、処理ユニット110は、第2の露光補償法を用い、拡張されたフレーム1の暗画素を補償する。詳細には、第2の露光補償法は、拡張されたフレーム1の暗画素(例えば輝度値が0から128 x slope_Lowのもの)を検出し、拡張されたフレーム1の検出された暗画素の輝度値を、同じ位置におけるフレーム0の輝度画素値に置き換えるものである。さらにまた、処理ユニット110は、第3の露光補償法を用い、フレーム2の飽和画素を補償する。詳細には、第3の露光補償法は、フレーム2の飽和画素(例えば輝度値が3967から4095までのもの)を検出し、フレーム2の検出された飽和画素の輝度値を、同じ位置におけるフレーム0の輝度画素値に置き換えるものである。
【0030】
処理ユニット110は、ステップS219で計算されたフレーム0の各画素に対応する画素の重みに基づき、補償されたフレーム0を補償されたフレーム1と合成させることによって、フレーム3を生成し、フレームバッファー150にフレーム3を保存する(ステップS271)。詳細には、ステップS271において、フレーム0の任意の画素に対応する画素の重みがしきい値(例えば64)以下である場合、処理ユニット110は、フレーム0のこの画素のHSV値を、同じ位置における補償されたフレーム1のHSV値と合成させて、同じ位置におけるフレーム3のHSV値を生成する。フレーム0の任意の画素に対応する画素の重みがしきい値よりも大きい場合、処理ユニット110は直接、フレーム0のこの画素のHSV値を、同じ位置におけるフレーム3のHSV値として扱う。補償されたフレーム0と補償されたフレーム1との画像合成に用いられる例示的な疑似コードは次のとおりである。
【0031】
if ((1 == frameNum) && (pixelweight[index1] <= 64)) { // when input frame is frame 1, reference frame is frame 0
weightRef = pixelweight[index1];
weightIn = 1.0 - weightRef;
outPixH = inputImg->HDRdata[index + 0] * weightIn + refImg->HDRdata[index + 0] * weightRef; // H channel fusion
dst->HDRdata[index] = outPixH;
outPixS = inputImg->HDRdata[index + 1] * weightIn + refImg->HDRdata[index + 1] * weightRef; // S channel fusion
dst ->HDRdata[index + 1] = outPixS;
outPixV = inputImg->HDRdata[index + 2] * weightIn + refImg->HDRdata[index + 2] * weightRef; // V channel fusion
dst ->HDRdata[index + 2] = outPixV; }
else if ((1 == frameNum) && (pixelweight[index1] > 64)) {
outPixH = refImg->HDRdata[index + 0]; // H channel from reference frame(frame 0)
dst ->HDRdata[index] = outPixH;
outPixS = refImg->HDRdata[index + 1]; // S channel from reference frame(frame 0)
dst ->HDRdata[index + 1] = outPixS;
outPixV = refImg->HDRdata[index + 2]; // V channel from reference frame(frame 0)
dst ->HDRdata[index + 2] = outPixV; }
ここで、pixelweight[index1]は、(index1)個目の画素の重みを表す。inputImgは、補償されたフレーム1を表す。refImgは、補償されたフレーム0を表す。dstは、フレーム3を表す。
【0032】
処理ユニット110は、ステップS219で算出されたフレーム0の各画素に対応する画素の重みに基づいて、フレーム3を補償されたフレーム2と合成させることにより、フレーム4を生成し、フレームバッファー150にフレーム4を保存する(ステップS273)。フレーム4は最終的なHDRフレームである。ステップS273において、詳細には、フレーム0の任意の画素に対応する画素の重みがしきい値よりも大きい場合、処理ユニット110は、同じ位置におけるフレーム3のHSV値を、同じ位置における補償されたフレーム2のHSV値と合成して、同じ位置におけるフレーム4のHSV値を生成する。フレーム0の任意の画素に対応する画素の重みがしきい値よりも大きくない場合、処理ユニット110は、同じ位置におけるフレーム3のHSV値を直接、同じ位置におけるフレーム4のHSV値として扱う。フレーム3と補償されたフレーム2との画像合成のための例示的な疑似コードは次の通りである。
【0033】
if ((2 == frameNum) && (pixelweight[index1] > 1.0)) { //input frame is frame 2,ref frame is fusion result of frame 0, 1
weightIn = pixelweight[index1] - 1;
weightRef = 1.0 - weightIn;
outPixH = inputImg->HDRdata[index + 0] * weightIn + refImg->HDRdata[index + 0] * weightRef;
dst ->HDRdata[index] = outPixH;
outPixS = inputImg->HDRdata[index + 1] * weightIn + refImg->HDRdata[index + 1] * weightRef;
dst ->HDRdata[index + 1] = outPixS;
outPixV = inputImg->HDRdata[index + 2] * weightIn + refImg->HDRdata[index + 2] * weightRef;
dst ->HDRdata[index + 2] = outPixV; }
else {
outPixH = refImg->HDRdata[index + 0];
dst ->HDRdata[index] = outPixH;
outPixS = refImg->HDRdata[index + 1];
dst ->HDRdata[index + 1] = outPixS;
outPixV = refImg->HDRdata[index + 2];
dst ->HDRdata[index + 2] = outPixV; }
ここで、pixelweight[index1]は、(index1)個目の画素の重みを表す。inputImgは、補償されたフレーム2を表す。refImgは、フレーム3を表す。dstは、フレーム4を表す。
【0034】
本発明に係るHDR画像の生成方法およびそれを用いる装置では、ノーマル露光フレーム(例えばフレーム0)における暗領域および飽和領域の画素数の比、ならびにノーマル露光フレームの露光設定を用い、拡張因子を計算してから、算出された拡張因子に基づいて、異なる露光設定の下で撮影されているLDRフレームの画素値を直接、HDR空間にマッピングする(map)ことができ、多数のLCRフレームを有するカメラレスポンス関数をリアルタイムで計算するのに多大なハードウェアリソースを費やす必要が無い。よって、HDR画像の生成にかかる時間を短縮することが可能になる。また、コストおよび電力消費を低減することが可能になる。
【0035】
図1には特定の構成要素を備えるように実施形態が示されているが、本発明の精神を逸脱することなく、より優れたパフォーマンスを達成するために追加の構成要素が含まれていてもよいという点に留意すべきである。また、図2および図3に示された処理の流れでは、特定の順序で実行されると理解される複数の工程を含んでいるが、これらのプロセスは、対応する各図に示す工程よりも多いまたは少ない工程を含んでいてもよく、それらは連続的に(serially)、または例えば並列プロセッサもしくはマルチスレッディング環境を利用し並行して(in parallel)、実行可能なものである。
【0036】
本発明を例により、好ましい実施形態の観点から説明したが、本発明はこれら開示された実施形態に限定されることはないと理解されるべきである。むしろ、本発明は、当業者がなし得る種々の変更および類似の構成を含む。従って、添付の特許請求の範囲に記載の発明の範囲は、そのような全ての変更や類似の構成を包含するように最も広義に解釈されるべきである。
【0037】
関連出願の相互参照
本出願は、2015年3月17日に出願された中華人民共和国特許出願第201510116190.8号の利益を主張し、その全体が本明細書において援用される。
【符号の説明】
【0038】
110…処理ユニット
130、150…フレームバッファー
140…揮発性メモリ
170…カメラモジュールコントローラ
190…カメラモジュール
410…ベイヤーパターン
ビン0〜ビン15…ビン
V7〜V9、C1〜C4…輝度値
…画素の重み
UL…上左側のブロックに対応するブロックの重み
UR…上右側のブロックに対応するブロックの重み
LL…下左側のブロックに対応するブロックの重み
LR…下右側のブロックに対応するブロックの重み
E1、E2、E3、E4…縁辺
D1…画素Wから下縁辺までの距離
D2…画素Wから右縁辺までの距離
D3…画素Wから上縁辺までの距離
D4…画素Wから左縁辺までの距離
図1
図2
図3
図4
図5
図6