(58)【調査した分野】(Int.Cl.,DB名)
撮像部により異なる露光量で撮像された複数の画像について、前記複数の画像の各々に含まれる画素の画素値毎の画素数で表されるヒストグラムを画像毎に算出するヒストグラム算出部と、
前記複数の画像の内の第一の画像から算出された第一ヒストグラムの形状と、前記複数の画像の内の第二の画像から算出された第二ヒストグラムの形状との類似度に基づいて、前記第一の画像に対する露光量と前記第二の画像に対する露光量との比を露光量比として算出する露光量比算出部と、
前記露光量比算出部により算出された露光量比に基づいて、前記第一の画像及び前記第二の画像の内の一方に含まれる画素の画素値を調整する画素値調整部と、
前記画素値調整部による画素値の調整後の前記第一の画像及び前記第二の画像の内の一方と、前記第一の画像及び前記第二の画像の内の他方とを合成する合成部と、
を含む画像処理装置。
前記露光量比算出部は、前記類似度として、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との関係を示す画素値毎の関係値を全画素値分加算した値を算出する請求項1または請求項2記載の画像処理装置。
前記露光量比算出部は、前記関係値を、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との差分絶対値または差分の二乗に、ヒストグラムにおける画素値の中央値に近いほど大きい重み付け値を乗算した値とする請求項3記載の画像処理装置。
前記露光量比算出部は、前記類似度の最大値との差が所定範囲内となる類似度が複数存在する場合に、前記重み付け値を大きくし、前記類似度を再度求める請求項4記載の画像処理装置。
前記ヒストグラム算出部は、ヒストグラムを算出するための画素値として、前記撮像部から出力され、デジタル変換された信号が示す画素値を用いる請求項1〜請求項5のいずれか1項記載の画像処理装置。
【発明を実施するための形態】
【0016】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
【0017】
〔第1実施形態〕
図1に、第1実施形態に係る撮像装置10を示す。撮像装置10は、撮像部12、表示部14、及び画像処理部16を備えている。
【0018】
撮像部12は、例えばCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子と、例えば複数の光学レンズを含むレンズ群、絞り調整機構、ズーム機構、及び自動焦点調節機構等を含むレンズ部とを備えている。なお、ズーム機構を省略し、撮像倍率の変更を電子ズームによって実現してもよい。撮像部12は、画像の撮像が指示されると、設定された撮像条件に従って撮像素子により撮像された電気信号(アナログ信号)をデジタル信号に変換して出力する。ここで出力されるデジタル信号は、撮像部12に設定された各種情報に基づいて三原色の画像データに加工する前のいわゆるRAWデータである。
【0019】
表示部14は、例えば、液晶ディスプレイ等である。表示部14は、撮像部12で撮像され、画像処理部16で画像処理された画像が表示される。また、各種設定を行うためのメニュー画面を表示するようにしてもよい。
【0020】
画像処理部16は、
図1に示すように、CPU(Central Processing Unit)21、RAM(Random Access Memory)22、ヒストグラム算出回路23、YCbCr変換回路24、及び画像処理回路25を備えている。画像処理部16は、例えば、画像処理プロセッサである。画像処理部16は、撮像部12から出力されたRAWデータを入力として受け付け、後述する画像処理を行う。なお、画像処理部16は、開示の技術の画像処理装置の一例である。
【0021】
CPU21は、撮像部12に所定の撮像条件に従った撮像を指示する。本実施形態では、1度の撮像指示において、シャッター速度を速く設定した短時間露光の撮像条件による撮像と、シャッター速度を遅く設定した長時間露光の撮像条件による撮像とを指示する。また、CPU21は、短時間露光の撮像条件により撮像部12で撮像されて出力されたRAWデータ_S、及び長時間露光の撮像条件により撮像部12で撮像されて出力されたRAWデータ_Lを取得して、RAM22に記憶する。なお、RAWデータ_SとRAWデータ_Lとを区別なく説明する場合には、単に「RAWデータ」と記す。
【0022】
さらに、CPU21は、RAM22と、ヒストグラム算出回路23、YCbCr変換回路24、及び画像処理回路25の各々との間でのデータの入出力を制御する。
【0023】
ここで、画像処理部16の機能的構成の一例を
図2に示す。画像処理部16は、ヒストグラム算出部31、露光量比算出部32、YCbCr変換部33、画素値調整部34、手振れ検出部35、被写体ブレ検出部36、及び合成部37を備えている。ヒストグラム算出部31は、ヒストグラム算出回路23の機能を表すブロックである。また、YCbCr変換部33は、YCbCr変換回路24の機能を表すブロックである。また、露光量比算出部32は、CPU21により実行される機能を表すブロックである。また、画素値調整部34、手振れ検出部35、被写体ブレ検出部36、及び合成部37は、画像処理回路25の機能を表すブロックである。
【0024】
ヒストグラム算出部31は、RAWデータ_Sから短時間露光画像のヒストグラムを算出し、また、RAWデータ_Lから長時間露光画像のヒストグラムを算出する。例えば、撮像素子上に配置されたベイヤ配列カラーフィルタを介して得られたRAWデータのGr成分の画素値毎の画素数を求め、
図3に示すようなヒストグラムを算出する。なお、RAWデータのR成分やB成分の画素値を用いてヒストグラムを算出してもよい。ただし、Gr成分が最も輝度成分に近いため、Gr成分の画素値を用いることが好ましい。また、近接画素の画素値を用いて各画素のRGB値を算出した上で、各画素の輝度値を算出し、求めた輝度値のヒストグラムを算出するようにしてもよい。さらに、全画素(特定の成分を用いる場合には、用いる成分についての全画素)を用いてヒストグラムを算出する場合に限らず、ヒストグラムの算出精度及び処理速度を考慮して、ヒストグラムに用いる画素を適宜間引きしてもよい。
【0025】
露光量比算出部32は、ヒストグラム算出部31で算出された短時間露光画像のヒストグラムと長時間露光画像のヒストグラムに基づいて、短時間露光画像に対する露光量と長時間露光画像に対する露光量との露光量比を算出する。具体的には、露光量比算出部32は、短時間露光画像のヒストグラムに基づいて、短時間露光画像撮像時の露光量のK倍の露光量で撮像したと仮定した画像のヒストグラムを推定する。以下では、この推定するヒストグラムを「K倍ヒストグラム」という。そして、露光量比算出部32は、K倍ヒストグラムの形状と、長時間露光画像のヒストグラムの形状との類似度が最大のときのKを露光量比Nとして算出する。
【0026】
ここで、ヒストグラムの形状の類似度を用いることで、露光量比の算出精度が向上することの理由について説明する。なお、開示の技術におけるヒストグラムの形状とは、画素値毎の画素数で表されるヒストグラムにおける画素値の下限から上限までの全範囲における各画素値に対する画素数の分布である。
【0027】
露光量比を算出する従来手法として、単純に画像全体または画像を分割したブロック毎に含まれる画素の画素値の合計や平均値から露光量比を算出する手法が存在する。この手法では、短時間露光画像の黒潰れ領域の画素値や、長時間露光画像の白飛び領域の画素値が露光量比を算出するための画素に含まれてしまい、露光量比の算出精度が低下する。そこで、この対処策として、
図4に示すように、長時間露光画像から白飛び領域を除外した領域を露光量比算出領域に設定し、短時間露光画像及び長時間露光画像において、この露光量比算出領域に含まれる画素の画素値を用いて露光量比を求めることが考えられる。
【0028】
しかし、
図5に示すように、2画像間で被写体(人)が動いていた場合には、露光量比算出領域のうち、被写体(人)に対応する領域は、短時間露光画像においては、被写体(人)ではなく背景領域となってしまい、正確な露光量比を算出することができない。
【0029】
上記のように被写体が動いた場合でも、画像に映っている被写体の種類(
図5の例では、木、空、雲、及び人)は変わらないため、画像から算出したヒストグラムの形状も大きくは変わらない。そこで、本実施形態のように、ヒストグラムの形状の類似度を用いることで、被写体に動きがあった場合でも、露光量比を正確に算出することができる。
【0030】
また、露光量比を算出する従来手法として、画素値のピーク値を用いて露光量比を算出する手法が存在する。例えば、
図6に示すように、短時間露光画像及び長時間露光画像の各々のヒストグラムから画素数が最大となる画素値(ピーク値)を検出し、各ヒストグラムから検出されたピーク値の比から露光量比を算出する。
図6の例では、短時間露光画像のヒストグラムのピーク値5と、長時間露光画像のヒストグラムのピーク値11から5/11という露光量比を算出することができる。
【0031】
このような露光量比の算出手法では、以下のような問題がある。まず、短時間露光画像は、信号レベルに対してノイズレベルが大きいため、ノイズの影響を受け易く、画像内に極大値が複数存在する場合、ノイズの影響でピーク値が変動する可能性がある。また、同様に量子化誤差の影響によりピーク値が変動する可能性も考えられる。また、長時間露光画像では、最大値付近の画素値は飽和している可能性が高く、正確なピーク値を検出できない可能性がある。
【0032】
上記のような理由により、ピーク値が正確に検出されなかった場合には、露光量比の算出も正確に行うことができない。このような誤ったピーク値が検出されてしまうことを排除するために、最小値付近の画素値及び最大値付近の画素値を除外してピーク値を検出することも考えられる。
図6の例においても、最小値付近及び最大値付近に表れている極大値は除外してピーク値を検出している。
【0033】
しかし、この除外領域の正確な値は露光量比が分からないと求めることができないため、推定した除外領域に従ってピーク値を検出する必要がある。仮に、推定した除外領域が狭過ぎた場合には、長時間露光画像で飽和している画素値をピーク値として検出してしまう可能性がある。また、推定した除外領域が広過ぎた場合には、ピーク値が除外領域に含まれてしまい、正しいピーク値を検出できない可能性がある。
【0034】
上記のような理由により、ピーク値を用いる従来手法では、除外領域の推定精度によってピーク値の検出精度が落ち、露光量比の算出精度の低下を招く可能性がある。
【0035】
一方、本実施形態では、ヒストグラムの形状の類似度を用いて露光量比を算出する。ノイズや量子化誤差が発生した場合でも、ヒストグラムの形状は大きく変化しないと考えられるため、ノイズや量子化誤差の影響を排除して、露光量比を正確に算出することができる。また、ヒストグラム中の除外領域を推定する必要がないため、従来手法のような問題は起こらない。
【0036】
上記のような理由に従って、露光量比算出部32は、K倍ヒストグラムの形状と長時間露光画像のヒストグラムの形状との類似度から、露光量比Nを算出する。なお、本実施形態では、短時間露光画像及び長時間露光画像を示すデータとして、撮像素子への入射光量に対してリニアな特性を有するRAWデータを用いることにより、より正確に露光量比を算出することができる。
【0037】
具体的には、露光量比算出部32は、まず、
図7に示すように、短時間露光画像のヒストグラム及び長時間露光画像のヒストグラムの各々にローパスフィルタ(LPF)をかけて平滑化する。これにより、RAWデータに含まれるノイズ成分の影響を低減することができる。
【0038】
露光量比算出部32は、LPF後の短時間露光画像のヒストグラムからK倍ヒストグラムを推定する。具体的には、LPF後の短時間露光画像のヒストグラムの各画素値の画素数を、画素値をK倍したヒストグラムの対応する画素値の部分に分配して割り当てて、K倍ヒストグラムを推定する。
【0039】
なお、K倍ヒストグラムと長時間露光画像のヒストグラムとの形状の類似度を算出するため、K倍ヒストグラムと長時間露光画像のヒストグラムとで画素値の範囲を揃える必要がある。例えば、K倍ヒストグラムにおいて、K倍前の最大画素値より大きい画素値の画素数をK倍前の最大画素値の画素数へ加算することにより、画素値の範囲を揃えることができる。また、最大画素値だけでなく、最大画素値付近の複数の画素値や、最大画素値以下の全ての画素値に、K倍前の最大画素値より大きい画素値の画素数を分配して加算するようにしてもよい。
【0040】
例えば、K=2、最大画素値=4095、LPF後の短時間露光画像のヒストグラムにおいて、画素値4の画素数が100の場合を例に、K倍ヒストグラムの推定方法について説明する。
図8に示すように、2倍ヒストグラムでは、画素値4の2倍に対応する画素値8及び画素値9に100画素を分配して割り当てる。例えば、2倍ヒストグラムの画素値8に50画素、画素値9に50画素を割り当てることができる。同様に、短時間露光画像の他の画素値についても、K倍ヒストグラムの対応する画素値へ割り当てる。最後に、2倍ヒストグラムにおいて、画素値4096〜8190の画素数の合計を画素値4095の画素数に加算して、2倍ヒストグラムを推定することができる。
【0041】
また、露光量比算出部32は、K倍ヒストグラムとLPF後の長時間露光画像のヒストグラムとの形状の類似度を求め、この類似度が最大となるときのK倍を露光量比Nとして算出する。
【0042】
類似度の計算の一例として、差分絶対値和(Sum of Absolute Difference、SAD)を用いる場合について、
図9を参照して説明する。まず、K倍ヒストグラムの各画素値の画素数とLPF後の長時間露光画像のヒストグラムの対応する各画素値の画素数との差分絶対値を求める。この差分絶対値に、ヒストグラムにおける画素値の中央値に近いほど重くなるように設定した乗算値を乗算する。暗い画素値は、信号レベルに対してノイズレベルが大きく、ノイズの影響を受け易い。また、飽和領域に近い明るい画素値は、センサの特性上、入射光量に対して非線形な特性となる可能性があり、正しい露光量比が求められない可能性が高い。このため、暗い画素値及び飽和領域に近い明るい画素値よりも、中央値に近い画素値の影響を強くして類似度を算出した方が高精度に類似度を算出することができる。なお、ヒストグラム全体の形状の類似度をみるため、中央値から遠い画素値に対応する乗算値であっても0にはしないようにする。
【0043】
画素数の差分絶対値に上記のような乗算値が乗算された画素値毎の値を、ヒストグラムの全要素(全画素値)分加算することにより、ヒストグラムの形状の類似度として差分絶対値和を算出することができる。この場合、差分絶対値和が小さいほど2つのヒストグラムの形状の類似度が大きいことを表すため、差分絶対値和が最小となるときに類似度が最大となる。
【0044】
なお、類似度の算出方法は、ヒストグラムの形状の類似度を算出することができるものであれば、上記の例に限定されない。例えば、差分二乗和(Sum of Squared Differences、SSD)、相関係数等を類似度として求めてもよい。また、K倍ヒストグラムの各画素値の画素数と長時間露光画像のヒストグラムの対応する各画素値の画素数との関係を示す関係値として画素数の差分の二乗を求め、上記のような乗算値を乗算してヒストグラムの全画素値分加算した値を類似度として求めてもよい。
【0045】
YCbCr変換部33は、
図10に示すように、色補間部33A、色補正部33B、ガンマ補正部33C、及び色変換部33Dを備えており、RAWデータ_SをYCbCr画像_Sに、RAWデータ_LをYCbCr画像_Lに変換する。
【0046】
色補間部33Aは、ベイヤ配列のRAWデータを、色補間処理によりRGB画像に変換する。
【0047】
色補正部33Bは、ホワイトバランス補正や色強調処理などの色補正処理を行って、画像が正しい色で表示部14に表示されるように調整する。
【0048】
ガンマ補正部33Cは、撮像素子への入射光量に対してリニアな特性を有するRAWデータに対して、JPEGなどのコンテナの格納時に対応したデータとなるように、ガンマ補正処理を行う。
【0049】
色変換部33Dは、色変換を行って、RGB画像をYCbCr画像に変換する。
【0050】
画素値調整部34は、YCbCr変換部33で変換された短時間露光画像のYCbCr画像_Sの画素値Y、Cb、及びCrの各々を、露光量比算出部32で算出した露光量比Nを1/γ乗した値で乗算する。なお、γは、YCbCr変換部33のガンマ補正部33Cで用いるガンマ補正値であり、例えば2.2である。RAWデータをYCbCr画像に変換する際にガンマ補正処理が適用されるため、RAWデータを用いて算出した露光量比をそのままYCbCr画像に適用することができない。そこで、露光量比Nを1/γ乗することにより、RAWデータを用いて算出した露光量比を、ガンマ補正処理後のYCbCr画像に適用させた露光量比に変換することができる。
【0051】
また、YCbCr画像_Sの各画素の画素値をN^(1/γ)倍することにより、画素値調整部34から出力されるYCbCr画像_Sの各画素の画素値を表すビット数が増える。例えば、YCbCr変換部33から出力されたYCbCr画像_Sが8ビット階調の画像の場合、YCbCr画像_Sの各画素は0〜255の情報を持つ。この各画素の画素値を、例えば4倍にすると各画素が0〜1020の情報を持つ画像、つまり10ビット階調の画像に変換される。
【0052】
以下では、画素値調整部34で各画素の画素値がN^(1/γ)倍された画像を「N*YCbCr画像_S」と表記する。
【0053】
手振れ検出部35は、画素値調整部34で画素値調整されたN*YCbCr画像_Sと、YCbCr変換部33で変換されたYCbCr画像_Lとに基づいて、2画像間の手振れ量を算出して出力する。
【0054】
短時間露光画像の撮像時と長時間露光画像の撮像時との間に手振れが生じている場合には、
図11に示すように、被写体の位置が2画像間で異なってしまう。手振れが生じた画像を用いて画像を合成する場合、例えば、短時間露光画像上で黒潰れしている箇所に対して、長時間露光画像の画素の画素値を用いようとしても、同じ画素位置の画素が白飛びしている背景の画素になっている場合もある。そこで、2画像間の手振れ量を算出して、画像の合成時に2画像間の手振れを補正するものである。
【0055】
具体的には、
図12に示すように、入力画像1を矩形ブロックに分割し、分割したブロック毎に、そのブロックが入力画像2ではどの位置にあるか探索することで移動量を算出する。探索には、公知のブロックマッチング法などを用いることができる。入力画像1内の全てのブロックに対して算出した移動量の平均値を手振れ量として算出する。なお、手振れ検出部35では、入力画像1及び入力画像2は、N*YCbCr画像_S及びYCbCr画像_Lであり、いずれを入力画像1または入力画像2としてもよい。
【0056】
被写体ブレ検出部36は、画素値調整部34で画素値調整されたN*YCbCr画像_Sと、YCbCr変換部33で変換されたYCbCr画像_Lとに基づいて、2画像間の被写体ブレを検出する。
【0057】
短時間露光画像の撮像時と長時間露光画像の撮像時との間に、被写体の動きがあった場合には、
図13に示すように、被写体の位置が2画像間で異なってしまう。このため、上述の手振れが生じた場合と同様に、このまま2画像を合成すると、被写体が2重に映るなどの問題が生じる。そこで、2画像間の被写体ブレを検出して、画像の合成時に2画像間の被写体ブレを補正するものである。
【0058】
具体的には、まず、手振れ検出部35から出力された手振れ量を受け付けて、入力画像1に対して入力画像2を手振れ量分平行移動させて2画像間の位置合わせを行い、手振れを補正する。そして、
図14に示すように、入力画像のY成分(輝度成分)の画素値を用いて、2つの入力画像間の各画素における差分絶対値を求める。そして、差分絶対値が所定の閾値以上の画素を動体、差分絶対値が所定の閾値未満の画素を非動体とする被写体ブレマスクを生成して出力する。なお、手振れ検出部35では、入力画像1及び入力画像2は、N*YCbCr画像_S及びYCbCr画像_Lであり、いずれを入力画像1または入力画像2としてもよい。
【0059】
合成部37は、
図15に示すように、ブレンド比計算部37A、αブレンド部37B、及びトーンマッピング部37Cを備えており、短時間露光画像と長時間露光画像とに基づいて、高ダイナミックレンジ(HDR)画像を合成する。合成部37に入力される短時間露光画像はN*YCbCr画像_Sであり、長時間露光画像はYCbCr画像_Lである。
【0060】
ブレンド比計算部37Aは、YCbCr変換部33から出力されたYCbCr画像_Lと、被写体ブレ検出部36から出力された被写体ブレマスクとに基づいて、N*YCbCr画像_SとYCbCr画像_Lとを合成する際のブレンド比を算出する。ブレンド比は、例えば、
図16に示すようなYCbCr画像_LのY成分とブレンド比との関係を予め定めたテーブルを参照し、YCbCr画像_LのY成分に応じたブレンド比を取得する。また、被写体ブレマスクで動体と判定され、かつYCbCr画像_Lで白飛びしていない画素はN*YCbCr画像_Sを用い、YCbCr画像_Lが白飛びしている画素(Y成分値が255)はYCbCr画像_Lを用いるようなブレンド比を計算してもよい。
【0061】
αブレンド部37Bは、まず、手振れ検出部35から出力された手振れ量を受け付けて、N*YCbCr画像_SとYCbCr画像_Lとの位置合わせを行い、手振れを補正する。そして、ブレンド比計算部37aにより計算されたブレンド比に基づいて、N*YCbCr画像_SとYCbCr画像_Lとを合成する。ここで合成された画像は、N*YCbCr画像_Sのビット数と同じビット数(このビット数をnとする)を持った画像となる。
【0062】
トーンマッピング部37Cは、αブレンド部37Bで合成された画像に対して、トーンマッピング処理を行う。例えば、YCbCr画像_Lが8ビット階調の画像の場合、N*YCbCr画像_Sは8ビットより大きなnビット階調の画像となっている。表示部14が、通常のディスプレイと同様に8ビット階調の画像しか表示することができない場合、αブレンド部37Bで合成された画像をそのままディスプレイに表示することができない。そこで、トーンマッピング処理を行い、nビット階調の画像を8ビット階調の画像に階調圧縮する。階調圧縮は、例えば、
図17に示すように、予め定めた階調変換のテーブルに従って、nビット(
図17の例ではn=10)を8ビットに変換することにより行う。
図17に示したテーブルのカーブは、シーンに応じて変換してもよい。
【0063】
次に、第1実施形態に係る撮像装置10の作用について説明する。撮像装置10では、
図18に示す画像処理が実行される。
【0064】
図18に示す画像処理のステップ100で、CPU21が、撮像部12に撮像の指示をすることにより、撮像部12において、短時間露光画像及び長時間露光画像を撮像する。
【0065】
次に、ステップ102で、CPU21が、撮像部12で撮像された短時間露光画像を示すRAWデータ_S及び長時間露光画像を示すRAWデータ_Lを取得し、RAM22に記憶する。
【0066】
次に、ステップ104で、CPU21が、RAM22に記憶されたRAWデータ_Sを読み出して、ヒストグラム算出回路23に入力する。ヒストグラム算出回路23は、入力されたRAWデータ_SのGr成分の画素値毎の画素数を求め、短時間露光画像のヒストグラムを算出する。CPU21は、ヒストグラム算出回路23で算出された短時間露光画像のヒストグラムをRAM22に記憶する。
【0067】
次に、ステップ106で、CPU21が、RAM22に記憶されたRAWデータ_Lを読み出して、ヒストグラム算出回路23に入力する。ヒストグラム算出回路23は、上記ステップ104と同様に、入力されたRAWデータ_Lから長時間露光画像のヒストグラムを算出する。CPU21は、ヒストグラム算出回路23で算出された長時間露光画像のヒストグラムをRAM22に記憶する。
【0068】
次に、ステップ108で、CPU21が、露光量比算出処理を実行する。ここで、
図19を参照して、露光量比算出処理について説明する。
【0069】
図19に示す露光量比算出処理のステップ1080で、CPU21が、短時間露光画像のヒストグラムの画素値を何倍するかを示す変数K、及びKの1探索ステップを示す変数aを初期値に設定する。
【0070】
次に、ステップ1082で、CPU21が、上記ステップ104で算出された短時間露光画像のヒストグラム、及び上記ステップ106で算出された長時間露光画像のヒストグラムの各々にLPFをかけて平滑化する。
【0071】
次に、ステップ1084で、CPU21が、LPF後の短時間露光画像のヒストグラムの各画素値の画素数を、画素値をK倍したヒストグラムの対応する画素値の部分に割り当てたヒストグラムを、K倍ヒストグラムとして推定する。
【0072】
次に、ステップ1086で、CPU21が、上記ステップ1084で推定したK倍ヒストグラムの形状と、上記ステップ1082で平滑化した長時間露光画像のヒストグラムの形状との類似度を算出する。
【0073】
次に、ステップ1088で、CPU21が、上記ステップ1086で算出した類似度がこれまでに算出した類似度の中で最大か否かを判定する。類似度が最大の場合には、ステップ1090へ移行し、CPU21が、現在のKの値をKmaxに設定して、ステップ1092へ移行する。類似度が最大ではない場合には、ステップ1090をスキップして、ステップ1092へ移行する。
【0074】
ステップ1092では、CPU21が、現在の変数Kに変数aを加えて1探索ステップ分増加した値を新たなKとする。
【0075】
次に、ステップ1094で、CPU21が、変数Kが予め定めた探索範囲を超えたか否かを判定する。変数Kが探索範囲を超えていない場合には、ステップ1084へ戻って、上記ステップ1092で設定した新たなKについて、ステップ1084〜1092の処理を繰り返す。変数Kが探索範囲を超えた場合には、ステップ1096へ移行し、CPU21が、Kmaxに設定されている値から変数aを引いた値を新たなKとし、ステップ1098で、探索範囲が細かくなるように、変数aを1段階小さい値に設定する。
【0076】
次に、ステップ1100で、CPU21が、変数aが予め定めた最小探索ステップ以下になったか否かを判定する。変数aが最小探索ステップより大きい場合には、ステップ1084へ戻って、上記ステップ1096で設定した新たなKについて、ステップ1084〜1098の処理を繰り返す。変数aが最小探索ステップ以下となった場合には、ステップ1102へ移行し、CPU21が、Kmaxに設定されている値を露光量比Nとして出力し、
図18に示す画像処理へリターンする。
【0077】
次に、
図18に示す画像処理のステップ110では、CPU21が、RAM22に記憶されたRAWデータ_Sを読み出して、YCbCr変換回路24に入力する。YCbCr変換回路24は、入力されたRAWデータ_SをYCbCr画像_Sに変換する。CPU21は、YCbCr変換回路24で変換されたYCbCr画像_SをRAM22に記憶する。
【0078】
次に、ステップ112で、CPU21が、RAM22に記憶されたRAWデータ_Lを読み出して、YCbCr変換回路24に入力する。YCbCr変換回路24は、入力されたRAWデータ_LをYCbCr画像_Lに変換する。CPU21は、YCbCr変換回路24で変換されたYCbCr画像_LをRAM22に記憶する。
【0079】
次に、ステップ114で、CPU21が、RAM22に記憶されたYCbCr画像_Sを読み出して、画像処理回路25に入力する。画像処理回路25は、入力されたYCbCr画像_Sの画素値Y、Cb、及びCrの各々を、上記ステップ1102で算出された露光量比Nを1/γ乗した値(N^(1/γ))で乗算することにより、画素値を調整する。
【0080】
次にステップ116で、CPU21が、RAM22に記憶されたYCbCr画像_Lを読み出して、画像処理回路25に入力する。画像処理回路25は、上記ステップ114で画素値調整を行ったN*YCbCr画像_Sと、入力されたYCbCr画像_Lとに基づいて、2画像間の手振れを検出し、手振れ量を算出する。
【0081】
次に、ステップ118で、画像処理回路25が、N*YCbCr画像_SとYCbCr画像_Lとに基づいて、2画像間の被写体ブレを検出し、被写体ブレマスクを生成する。
【0082】
次に、ステップ120で、画像処理回路25が、YCbCr画像_Lと、上記ステップ118で生成した被写体ブレマスクとに基づいて、N*YCbCr画像_SとYCbCr画像_Lとを合成する際のブレンド比を算出する。そして、画像処理回路25は、上記ステップ116で算出した手振れ量に基づいて、N*YCbCr画像_SとYCbCr画像_L間の手振れを補正し、計算したブレンド比に基づいて、N*YCbCr画像_SとYCbCr画像_Lとを合成する。さらに、画像処理回路25は、合成した画像に対して、トーンマッピング処理を行って、HDR合成画像を生成する。
【0083】
次に、ステップ122で、CPU21が、上記ステップ120で、画像処理回路25で生成されたHDR合成画像をRAM22に記憶し、HDR合成画像が表示部14に表示されるように制御して、画像処理を終了する。
【0084】
以上説明したように、第1実施形態に係る撮像装置によれば、短時間露光画像のK倍の露光量で撮像したと仮定した画像のヒストグラムをK倍ヒストグラムとして推定する。そして、K倍ヒストグラムと長時間露光画像のヒストグラムとの形状の類似度に基づいて、短時間露光画像と長時間露光画像との露光量比を算出する。これにより、短時間露光画像と長時間露光画像とにおいて被写体の動きや、ノイズ及び量子化誤差が発生する場合でも、露光量比を正確に算出することができる。
【0085】
その結果、合成画像に不自然なつながりが発生することを低減することができ、また、手振れ検出や被写体ブレ検出の性能が向上することで、合成画像の画質が劣化することを抑制することができる。
【0086】
また、第1実施形態に係る撮像装置によれば、露光量比を算出する際に、YCbCr画像ではなく、撮像素子の出力そのものであり、撮像素子への入射光量に対してリニアな特性を有するRAWデータを用いる。これにより、ガンマ補正等の非線形な処理が施されたYCbCr画像を用いて露光量比を算出する場合に比べて、より正確に露光量比を算出することができる。
【0087】
さらに、通常の画像処理プロセッサは、ヒストグラム算出機能を有するものが多く、汎用のハードウェアを用いて開示の技術の画像処理装置を実現することができ、コスト削減につながる。
【0088】
〔第2実施形態〕
次に、第2実施形態について説明する。なお、第2実施形態に係る撮像装置10の構成は、第1実施形態に係る撮像装置10の構成と同様であるため、説明を省略する。
【0089】
第2実施形態に係る撮像装置10の作用は、CPU21により実行される露光量比算出処理が第1実施形態と異なるだけであるので、
図20を参照して、第2実施形態における露光量比算出処理について説明する。なお、第2実施形態における露光量比算出処理において、第1実施形態における露光量比算出処理と同様のステップについては、同一符号を付して詳細な説明を省略する。
【0090】
図20に示す露光量比算出処理のステップ1080〜1086を経て、CPU21が、K倍ヒストグラムと長時間露光画像のヒストグラムとの形状の類似度を算出する。類似度の算出には、例えば、ヒストグラムの画素値の中央値に近いほど重くなるように重み付けした差分絶対値和を用いることができる。
【0091】
次に、ステップ1110で、CPU21が、上記ステップ1086で算出した類似度と現在のKの値とを対応付けたテーブルをRAM22に保存する。
【0092】
次に、ステップ1092で、CPU21が、Kにaを加えて新たなKとし、次に、ステップ1094で、変数Kが予め定めた探索範囲を超えたか否かを判定する。変数Kが探索範囲を超えていない場合には、ステップ1084へ戻って、上記ステップ1092で設定した新たなKについて、ステップ1084〜1092の処理を繰り返す。変数Kが探索範囲を超えた場合には、ステップ1112へ移行し、上記ステップ1110で保存したテーブルを検査し、類似度の最大値を一意に決定可能か否かを判定する。
【0093】
例えば、類似度の最大値として同一の類似度が複数存在する場合や、最大の類似度との差が所定範囲内となる類似度が複数存在する場合がある。類似度の差が所定範囲内とは、例えば、類似度として差分絶対値和を用いた場合では、類似度の差が0〜1程度の微小な差となる範囲である。このような場合には、いずれの類似度に対応付けられたKをKmaxとして選択すればよいかを正確に判断することができず、誤ったKの選択により、露光量比を正確に算出できない場合がある。
【0094】
そこで、本ステップ1112では、上記のように、類似度の最大値として同一の類似度が複数存在する場合や、最大の類似度との差が所定範囲内となる類似度が複数存在する場合には、類似度の最大値を一意に決定できないと判定する。類似度の最大値を一意に決定できない場合には、ステップ1114へ移行し、CPU21が、ステップ1086で類似度を算出する際に用いる重み付けを変更する。具体的には、画素値の中央値付近により強い重みがかかるように、例えば、
図21に示すように変更する。
【0095】
上記ステップ1114で、重み付けを変更したら、上記ステップ1084へ戻って、上記ステップ1114で変更した重み付けを用いて、ステップ1084〜1092の処理を繰り返す。上記ステップ1114を経由して上記ステップ1084へ戻った場合には、上記ステップ1110で保存したテーブルにおいて、類似度の最大値を含む所定範囲内の類似度に対応付けられたKについてのみ、繰り返し処理をするようにしてもよい。
【0096】
上記ステップ1112で、CPU21が、類似度の最大値を一意に決定可能であると判定した場合には、ステップ1116へ移行し、類似度の最大値に対応するKの値をテーブルから抽出して、Kmaxとして設定する。
【0097】
以下、ステップ1096〜1102で、CPU21が、第1実施形態における露光量比算出処理と同様に処理して、露光量比Nを出力し、
図18に示す画像処理へリターンする。
【0098】
以上説明したように、第2実施形態に係る撮像装置によれば、ヒストグラムの形状の類似度の最大値を一意に決定できない場合には、類似度算出の重み付けを画素値の中央値付近により強い重みがかかるように変更して、再度類似度の算出を行う。これにより、露光量比をより正確に算出することができる。
【0099】
〔第3実施形態〕
次に、第3実施形態について説明する。第1及び第2実施形態では、画像処理部16を画像処理プロセッサとする場合について説明した。第3実施形態に係る撮像装置10における画像処理部16は、例えば
図22に示すコンピュータ40で実現することができる。コンピュータ40はCPU42、メモリ44、及び不揮発性の記憶部46を備えている。CPU42、メモリ44、及び記憶部46は、バス48を介して互いに接続されている。また、コンピュータ40には、撮像部12及び表示部14が接続されている。
【0100】
記憶部46はHDD(Hard Disk Drive)やフラッシュメモリ等によって実現できる。記録媒体としての記憶部46は、コンピュータ40を画像処理部16として機能させるための画像処理プログラム50が記憶されている。CPU42は、画像処理プログラム50を記憶部46から読み出してメモリ44に展開し、画像処理プログラム50が有するプロセスを順次実行する。
【0101】
画像処理プログラム50は、ヒストグラム算出プロセス51、露光量比算出プロセス52、YCbCr変換プロセス53、画素値調整プロセス54、手振れ検出プロセス55、被写体ブレ検出プロセス56、及び合成プロセス57を備えている。
【0102】
CPU42は、ヒストグラム算出プロセス51を実行することで、
図2に示すヒストグラム算出部31として動作する。また、CPU42は、露光量比算出プロセス52を実行することで、
図2に示す露光量比算出部32として動作する。また、CPU42は、YCbCr変換プロセス53を実行することで、
図2に示すYCbCr変換部33として動作する。また、CPU42は、画素値調整プロセス54を実行することで、
図2に示す画素値調整部34として動作する。また、CPU42は、手振れ検出プロセス55を実行することで、
図2に示す手振れ検出部35として動作する。また、CPU42は、被写体ブレ検出プロセス56を実行することで、
図2に示す被写体ブレ検出部36として動作する。また、CPU42は、合成プロセス57を実行することで、
図2に示す合成部37として動作する。これにより、画像処理プログラム50を実行したコンピュータ40が、画像処理部16として機能することになる。
【0103】
以上説明したように、第3実施形態に係る撮像装置によれば、第1及び第2実施形態に係る撮像装置と同様の効果を、プログラムにより実現することができる。
【0104】
なお、上記では開示の技術における画像処理プログラムの一例である画像処理プログラム50が記憶部46に予め記憶(インストール)されている態様を説明した。しかし、開示の技術における画像処理プログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
【0105】
また、第1及び第2実施形態では、画像処理プロセッサがヒストグラム算出回路、YCbCr変換回路、及び画像処理回路の専用回路を備え、露光量比算出処理以外の処理をこれらの専用回路で行う場合について説明したが、これに限定されない。例えば、露光量比算出処理についても、露光量比算出処理を実行するための専用回路を設けてもよい。また、第1及び第2実施形態において各専用回路で行うヒストグラムの算出処理、YCbCr画像への変換処理、画素値調整の処理、手振れ検出の処理、被写体ブレ検出の処理、及び合成処理のうちの1つまたは複数の処理をCPUで実行するようにしてもよい。
【0106】
また、上記各実施形態では、ヒストグラムの類似度算出の際の重み付けについて、
図9及ぶ
図21に、画素値に対して直線的に変化する重み付けをかける例を示したが、これに限定されない。画素値に対して曲線的に変化する重み付けをかけるようにしてもよい。
【0107】
また、上記各実施形態では、短時間露光画像からK倍ヒストグラムを推定する場合について説明したが、これに限定されない。長時間露光画像撮像時の露光量のK倍の露光量で撮像したと仮定した画像のヒストグラムをK倍ヒストグラムとして推定してもよい。この場合、Kは0から1の値とする。また、長時間露光画像のヒストグラムの各画素値の画素数を、画素値をK倍したヒストグラムの対応する画素値の部分に統合して割り当てるようにするとよい。例えば、K=0.5の場合、長時間露光画像の画素値2n(n=0,1,2,・・・)に対する画素数と画素値(2n+1)に対する画素値との和を、K倍ヒストグラムの画素値nの画素値とすることができる。
【0108】
また、上記各実施形態では、短時間露光画像及び長時間露光画像の2つの画像を合成する場合について説明したが、3つ以上の画像を合成する場合にも開示の技術を適用することができる。例えば、短時間露光画像と長時間露光画像との間の露光時間の中時間露光画像を加えた3つの画像を合成するようにしてもよい。この場合、上記実施形態と同様に、中時間露光画像のヒストグラムから露光時間K倍ヒストグラムを推定し、長時間露光画像のヒストグラムとの類似度が最大となるときのKを中時間露光画像と長時間露光画像との露光量比N’として算出することができる。そして、短時間露光画像を露光量比Nに基づいて画素値調整すると共に、中時間露光画像を露光量比N’に基づいて画素値調整する。このように画素値調整を行ったうえで、3つの画像の合成処理を行えばよい。
【0109】
また、上記各実施形態では、露光時間を異ならせて露光量の異なる複数の画像を撮像する場合について説明したが、絞りの調整や照明の有無などにより露光量を異ならせた複数の画像を撮像するようにしてもよい。
【0110】
以上の実施形態に関し、更に以下の付記を開示する。
【0111】
(付記1)
撮像部により異なる露光量で撮像された複数の画像について、前記複数の画像の各々に含まれる画素の画素値毎の画素数で表されるヒストグラムを画像毎に算出するヒストグラム算出部と、前記複数の画像の内の第一の画像から算出された第一ヒストグラムの形状と、前記複数の画像の内の第二の画像から算出された第二ヒストグラムの形状との類似度に基づいて、前記第一の画像に対する露光量と前記第二の画像に対する露光量との比を露光量比として算出する露光量比算出部と、前記露光量比算出部により算出された露光量比に基づいて、前記第一の画像及び前記第二の画像の内の一方に含まれる画素の画素値を調整する画素値調整部と、前記画素値調整部による画素値の調整後の前記第一の画像及び前記第二の画像の内の一方と、前記第一の画像及び前記第二の画像の内の他方とを合成する合成部と、を含む画像処理装置。
【0112】
(付記2)
前記露光量比算出部は、前記第一ヒストグラムの各画素値の画素数を所定倍し、前記第二ヒストグラムの形状との類似度を求める付記1記載の画像処理装置。
【0113】
(付記3)
前記露光量比算出部は、前記類似度として、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との関係を示す画素値毎の関係値を全画素値分加算した値を算出する付記1または付記2記載の画像処理装置。
【0114】
(付記4)
前記露光量比算出部は、前記関係値を、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との差分絶対値または差分の二乗に、ヒストグラムにおける画素値の中央値に近いほど大きい重み付け値を乗算した値とする付記3記載の画像処理装置。
【0115】
(付記5)
前記露光量比算出部は、前記類似度の最大値との差が所定範囲内となる類似度が複数存在する場合に、前記重み付け値を大きくし、前記類似度を再度求める付記4記載の画像処理装置。
【0116】
(付記6)
前記ヒストグラム算出部は、ヒストグラムを算出するための画素値として、前記撮像部から出力され、デジタル変換された信号が示す画素値を用いる付記1〜付記5のいずれか1つに記載の画像処理装置。
【0117】
(付記7)
前記撮像部と、付記1〜付記6のいずれか1つに記載の画像処理装置と、前記合成部で合成された画像を表示するための表示部と、を含む撮像装置。
【0118】
(付記8)
撮像部により異なる露光量で撮像された複数の画像について、前記複数の画像の各々に含まれる画素の画素値毎の画素数で表されるヒストグラムを画像毎に算出し、前記複数の画像の内の第一の画像から算出された第一ヒストグラムの形状と、前記複数の画像の内の第二の画像から算出された第二ヒストグラムの形状との類似度に基づいて、前記第一の画像に対する露光量と前記第二の画像に対する露光量との比を露光量比として算出し、算出された露光量比に基づいて、前記第一の画像及び前記第二の画像の内の一方に含まれる画素の画素値を調整し、画素値の調整後の前記第一の画像及び前記第二の画像の内の一方と、前記第一の画像及び前記第二の画像の内の他方とを合成することを含む画像処理方法。
【0119】
(付記9)
前記第一ヒストグラムの各画素値の画素数を所定倍し、前記第二ヒストグラムの形状との類似度を求める付記8記載の画像処理方法。
【0120】
(付記10)
前記類似度として、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との関係を示す画素値毎の関係値を全画素値分加算した値を算出する付記8または付記9記載の画像処理方法。
【0121】
(付記11)
前記関係値を、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との差分絶対値または差分の二乗に、ヒストグラムにおける画素値の中央値に近いほど大きい重み付け値を乗算した値とする付記10記載の画像処理方法。
【0122】
(付記12)
前記類似度の最大値との差が所定範囲内となる類似度が複数存在する場合に、前記重み付け値を大きくし、前記類似度を再度求める付記11記載の画像処理方法。
【0123】
(付記13)
ヒストグラムを算出するための画素値として、前記撮像部から出力され、デジタル変換された信号が示す画素値を用いる付記8〜付記12のいずれか1つに記載の画像処理方法。
【0124】
(付記14)
コンピュータに、撮像部により異なる露光量で撮像された複数の画像について、前記複数の画像の各々に含まれる画素の画素値毎の画素数で表されるヒストグラムを画像毎に算出し、前記複数の画像の内の第一の画像から算出された第一ヒストグラムの形状と、前記複数の画像の内の第二の画像から算出された第二ヒストグラムの形状との類似度に基づいて、前記第一の画像に対する露光量と前記第二の画像に対する露光量との比を露光量比として算出し、算出された露光量比に基づいて、前記第一の画像及び前記第二の画像の内の一方に含まれる画素の画素値を調整し、画素値の調整後の前記第一の画像及び前記第二の画像の内の一方と、前記第一の画像及び前記第二の画像の内の他方とを合成することを含む処理を実行させるための画像処理プログラム。
【0125】
(付記15)
コンピュータに、前記第一ヒストグラムの各画素値の画素数を所定倍し、前記第二ヒストグラムの形状との類似度を求めることを含む処理を実行させるための付記14記載の画像処理プログラム。
【0126】
(付記16)
コンピュータに、前記類似度として、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との関係を示す画素値毎の関係値を全画素値分加算した値を算出することを含む処理を実行させるための付記14または付記15記載の画像処理プログラム。
【0127】
(付記17)
前記関係値を、前記関係値を、前記第一ヒストグラムの各画素値の画素数と前記第二ヒストグラムの対応する各画素値の画素数との差分絶対値または差分の二乗に、ヒストグラムにおける画素値の中央値に近いほど大きい重み付け値を乗算した値とする付記16記載の画像処理プログラム。
【0128】
(付記18)
コンピュータに、前記類似度の最大値との差が所定範囲内となる類似度が複数存在する場合に、前記重み付け値を大きくし、前記類似度を再度求めることを含む処理を実行させるための付記17記載の画像処理プログラム。
【0129】
(付記19)
ヒストグラムを算出するための画素値として、前記撮像部から出力され、デジタル変換された信号が示す画素値を用いる付記8〜付記12のいずれか1つに記載の画像処理プログラム。