画像処理装置、撮像装置、制御方法、及びプログラム
【課題】複数の画像データを加重加算する領域で発生する位置ズレを低減することを可能とした画像処理装置、撮像装置、制御方法、及びプログラムを提供する。
【解決手段】撮像装置の画像処理部103の位置ズレ検出部106は、入力画像データ間の位置ズレ量を検出する。合成比率設定部107は、入力画像データを合成する際の合成比率を設定する。位置ズレ補正部108は、位置ズレ検出部106により検出された位置ズレ量と合成比率設定部107により設定された合成比率から座標変換係数を算出し、入力画像データに座標変換係数を用いて座標変換を施すことで、入力画像データ間の位置ズレを補正する。更に、入力画像データを加重加算する領域を優先させて位置ズレの補正を行う。画像合成部109は、位置ズレが補正された入力画像データを合成比率で合成する。
【解決手段】撮像装置の画像処理部103の位置ズレ検出部106は、入力画像データ間の位置ズレ量を検出する。合成比率設定部107は、入力画像データを合成する際の合成比率を設定する。位置ズレ補正部108は、位置ズレ検出部106により検出された位置ズレ量と合成比率設定部107により設定された合成比率から座標変換係数を算出し、入力画像データに座標変換係数を用いて座標変換を施すことで、入力画像データ間の位置ズレを補正する。更に、入力画像データを加重加算する領域を優先させて位置ズレの補正を行う。画像合成部109は、位置ズレが補正された入力画像データを合成比率で合成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の画像データを合成する機能を有する画像処理装置、撮像装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
従来、異なる露出で撮影した複数枚の画像データを合成することにより、ダイナミックレンジを拡大した合成画像データを得る画像処理に関わる技術が提案されている。この種の画像処理は、低輝度領域に対しては高露出画像データを主に使用し、高輝度領域に対しては低露出画像データを主に使用することで、「白飛び」や「黒潰れ」の影響を低減し、画像のダイナミックレンジを拡大するものである。
【0003】
上記画像処理において、複数枚撮影されたそれぞれの画像データは、撮影者の手ぶれ等により相対的な位置ズレが発生している。画像データを合成する際に、画像データ間に位置ズレが発生している場合、合成画像において像が多重に写り、合成画像の画質が低下する。従って、複数枚撮影された画像データの位置合わせは重要な技術となる。
【0004】
上記画像データの位置合わせ技術に関しては、多くの技術が開示されている(例えば、特許文献1参照)。
【0005】
特許文献1記載の技術では、画像データ間の対応点を複数求め、信頼度の高い一部の対応点から仮の移動パラメータを算出し、移動パラメータから算出した対応点と、予め求まっている各々の対応点との誤差を求めて合格判定を行う。この画像処理を、仮の移動パラメータを求める対応点の組み合わせを変えながら繰り返した後、合格判定された対応点の数が最大となる組み合わせを用いて、最終的な移動パラメータを確定し、位置合わせを行う。
【0006】
更に、上記画像データの位置合わせ技術に関しては、次の技術が開示されている(例えば、特許文献2参照)。
【0007】
特許文献2記載の技術では、画像データを複数の位置ズレ検出ブロックに分割し、各々の位置ズレ検出ブロックに対して白飛び判定、黒潰れ判定、及び低コントラスト判定を行う。その後、好適と判断された位置ズレ検出ブロックにおける動きベクトルの発生頻度から、画像データの位置合わせに用いる動きベクトルを選択する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−229868号公報
【特許文献2】特開2008−118555号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述した特許文献1及び特許文献2に記載の技術においては、被写体の微小な動きや、被写体の距離差による動きの違いにより、画像データの位置合わせで補正しきれず、画像データの位置ズレが残留することが予想される。
【0010】
本発明の目的は、複数の画像データを合成する際に発生する位置ズレの影響を低減することを可能とした画像処理装置、撮像装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明は、少なくとも2枚の入力画像データに対して画像処理を行う画像処理装置であって、前記入力画像データ間の位置ズレ量を検出する検出手段と、少なくとも2枚の前記入力画像データを合成する際の合成比率を設定する設定手段と、前記検出手段により検出された位置ズレ量と前記設定手段により設定された合成比率から補正量を算出し、前記入力画像データに前記補正量を用いて前記入力画像データ間の位置ズレを補正する補正手段と、位置ズレが補正された前記入力画像データを前記合成比率で合成する合成手段と、を備え、前記補正手段は、少なくとも2枚の前記入力画像データを加重加算する領域を優先させて前記位置ズレの補正を行うことを特徴とする。
【発明の効果】
【0012】
本発明によれば、検出された位置ズレ量と設定された合成比率に基づいて入力画像データ間の位置ズレを補正する。これにより、複数枚の画像データを合成する場合において、複数枚の画像データを合成する際に発生する位置ズレの影響を低減することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。
【図2】アンダー画像の階調変換特性とオーバー画像の階調変換特性を示す図である。
【図3】画像処理部の位置ズレ検出部の処理の流れを示すフローチャートである。
【図4】画像データを水平方向にN分割及び垂直方向にM分割の複数ブロックに分割した例を示す図である。
【図5】画像処理部の合成比率設定部の処理の流れを示すフローチャートである。
【図6】アンダー画像の合成比率テーブルとオーバー画像の合成比率テーブルを示す図である。
【図7】画像処理部の位置ズレ補正部の処理の流れを示すフローチャートである。
【図8】図7における加重加算領域判定の処理の流れを示すフローチャートである。
【図9a】図7における画像変換係数算出の処理の流れを示すフローチャートである。
【図9b】図7における画像変換係数算出の処理の流れを示すフローチャートである。
【図10】加重加算領域が存在しない場合について動きベクトルの優先度を設定する方法を示す図である。
【図11】加重加算領域が1個存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【図12】加重加算領域が複数存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【図13】加重加算領域が2個存在する場合における画像変換係数の補間の例を示す図である。
【図14】本発明の第2の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。
【図15】主要被写体領域が存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を参照しながら説明する。
【0015】
〔第1の実施の形態〕
本実施の形態では、複数枚の画像を合成してダイナミックレンジの拡張を行う。
【0016】
ダイナミックレンジの拡大を目的とした画像合成では、低輝度領域においては高露出画像データの合成比率を高く設定し、高輝度領域においては低露出画像データの合成比率を高く設定する。更に、合成画像に生じる急な切り替わりを防止するために、中間輝度領域では高露出画像データと低露出画像データを加重加算するように合成比率を設定する。
【0017】
従って、高露出画像データと低露出画像データを加重加算する領域において位置ズレが残留している場合には、画像データの合成の際に前記位置ズレが目立って見えてしまい、合成画像の画質が劣化するという課題がある。
【0018】
本実施の形態は上記の課題を解決するものである。しかし、実施形態としてはこれに限らず、画像全体の領域の中で加重加算領域が存在する合成処理であれば、特に合成に伴う処理は限定されない。
【0019】
図1は、本発明の第1の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。図2は、アンダー画像の階調変換特性とオーバー画像の階調変換特性を示す図である。
【0020】
図1において、本実施の形態の撮像装置は、画像データのダイナミックレンジを拡大する機能を有する。撮像装置は、撮像部101、A/D変換部102、画像処理部103、画像表示部110、画像記録部111を備えている。
【0021】
撮像部101は、撮像レンズ群と半導体撮像素子(CMOSセンサあるいはCCDセンサ等)から構成されている。撮像部101は、同一被写体に対して露光量を変化させながら複数回の撮影を行うことが可能であり、複数回の撮影で撮像された映像信号をA/D変換部102に出力する。A/D変換部102は、撮像部101から入力された映像信号をデジタルの画像データに変換し、画像処理部103に出力する。
【0022】
画像処理部103は、撮像部101により互いに異なる露光条件で撮像されA/D変換部102から入力された少なくとも2枚の画像データ(入力画像データ)の位置ズレを補正し、位置ズレが補正された画像データを合成する処理を行う。
【0023】
画像表示部110は、画像処理部103で生成された画像データを撮像装置本体に装備されている液晶モニタ(不図示)に表示する。更に、画像記録部111は、画像処理部103で生成された画像データを記録媒体(不図示)に記録する。
【0024】
次に、画像処理部103の詳細について説明する。画像処理部103は、階調補正部104、メモリ部105、位置ズレ検出部106、合成比率設定部107、位置ズレ補正部108、画像合成部109から構成されている。
【0025】
階調補正部104は、A/D変換部102から入力された複数の画像データ(入力画像データ)に対して、輝度レベルを合わせる処理を行う。本実施の形態では、入力画像データの枚数を例えば2枚と仮定し、露光量の異なる入力画像データにおいて、相対的に露光量の大きい画像をオーバー画像とし、オーバー画像に対して露光量の小さい画像をアンダー画像とする。
【0026】
階調補正部104は、オーバー画像とアンダー画像のそれぞれに対し、図2に示すような異なる階調変換特性を持った階調変換を施すことで、オーバー画像とアンダー画像の輝度レベルを合わせる処理を行う。ただし、本実施の形態では、アンダー画像の輝度レベルをオーバー画像の輝度レベルに合わせている。階調補正部104で処理された画像データは、メモリ部105に蓄えられる。
【0027】
ここで、図2の横軸は入力信号値、縦軸は出力信号値であり、上側の曲線がアンダー画像の階調変換特性、下側の曲線がオーバー画像の階調変換特性を示している。アンダー画像の階調変換特性における入力信号値をSu、オーバー画像の階調変換特性における入力信号値をSo、アンダー画像とオーバー画像の露出量の差をNeV(N:整数)とした時、Su=2−NSoが成立する。
【0028】
メモリ部105に蓄えられた入力画像データは、撮影者の手ぶれ等に起因する相対的な位置のずれを伴っている。そのため、位置ズレ検出部106、合成比率設定部107、及び位置ズレ補正部108によって、入力画像データ間の位置ズレを補正する。位置ズレ検出部106、合成比率設定部107、位置ズレ補正部108の詳細な処理については、以下の動作説明において後述する。
【0029】
次に、上記の構成を備える本実施の形態の撮像装置の動作について図3乃至図13を参照しながら説明する。
【0030】
<位置ズレ検出部106の処理>
図3は、画像処理部103の位置ズレ検出部106の処理の流れを示すフローチャートである。
【0031】
図3において、位置ズレ検出部106は、メモリ部105から画像データが入力されると(ステップS301)、入力画像データに対し、位置ズレを求める基準となる基準画像を設定する(ステップS302)。ここでは、アンダー画像を基準画像に設定する。即ち、本実施の形態における位置ズレとは、アンダー画像に対するオーバー画像の位置ズレを意味する。
【0032】
次に、位置ズレ検出部106は、図4に示すように、入力画像データを水平方向にN分割すると共に垂直方向にM分割することで複数のブロックに分割する(ステップS302)。ここで、今後の処理の説明のために、各分割ブロックをblk[0]〜blk[M*N−1]と呼ぶ(図4参照)。
【0033】
次に、位置ズレ検出部106は、動きベクトルを検出する分割ブロックの順番をカウントするカウンタiの値にi=0を設定する(ステップS304)。更に、位置ズレ検出部106は、i番目の分割ブロックblk[i]について、アンダー画像とオーバー画像の間の相対的な位置ズレ量を表す動きベクトルを検出する(ステップS305)。動きベクトルの検出方法としては、例えば、差分絶対値和を評価値としたパターンマッチング処理が挙げられる。
【0034】
次に、位置ズレ検出部106は、分割ブロックblk[M*N−1]まで動きベクトルの検出を行ったか否かを判定する(ステップS306)。分割ブロックblk[M*N−1]まで動きベクトルの検出を行っていない場合は、位置ズレ検出部106は、カウンタiの値iをインクリメントしながら(ステップS307)、全ての分割ブロックにおける動きベクトルを検出する。分割ブロックblk[M*N−1]まで動きベクトルの検出を行った場合は、本処理を終了する。
【0035】
<合成比率設定部107の処理>
図5は、画像処理部103の合成比率設定部107の処理の流れを示すフローチャートである。
【0036】
図5において、合成比率設定部107は、基準輝度画像の設定を行う(ステップS501)。基準輝度画像とは、入力画像データの合成比率を設定するために参照する、露光量の最も低い輝度画像である。ここでは、基準輝度画像としてアンダー画像の輝度成分を使用する。
【0037】
アンダー画像を使用する理由としては、オーバー画像では白飛びによって階調性が失われている領域が存在すると考えられるため、合成比率を設定するために参照する情報としてはアンダー画像の方が好ましいからである。なお、基準輝度画像としては、アンダー画像に既定の画像処理を施した画像を使用してもよい。
【0038】
次に、合成比率設定部107は、基準輝度画像の画素値から、合成比率テーブルに基づいて各画素におけるアンダー画像とオーバー画像の合成比率を設定する(ステップS502)。合成比率テーブルとは、基準となる輝度値に対して、アンダー画像とオーバー画像を合成する比率である合成比率を設定するテーブルである。
【0039】
図6に本実施の形態の合成比率テーブルを示す。図6の横軸は基準輝度値、縦軸は合成比率(%)であり、合成比率テーブルを次のように設定している。基準輝度値をYとした時、Y≦Y1の領域では、オーバー画像を100%使用する。Y2≦Yの領域では、アンダー画像を100%使用する。Y1<Y<Y2の領域では、アンダー画像とオーバー画像を加重加算する。ここで、Y1、Y2は、予め設定された輝度値である。
【0040】
即ち、入力された画像データの中で露光量の最も低い画像から生成される基準輝度画像の輝度値を参照し、合成比率を次のように設定する。輝度値が低い領域には、入力された画像データの中から露光量の大きい画像データの合成比率が高くなるよう設定し、輝度値が大きい領域には、入力された画像データの中から露光量の小さい画像データの合成比率が高くなるように設定する。
【0041】
<位置ズレ補正部108の処理>
位置ズレ補正部108は、位置ズレ検出部106で求めた各分割ブロックにおける動きベクトル、及び合成比率設定部107で設定した画素単位の合成比率を入力とする。
【0042】
図7は、画像処理部103の位置ズレ補正部108の処理の流れを示すフローチャートである。
【0043】
図7において、位置ズレ補正部108は、加重加算領域を判定する(ステップS701)。加重加算領域とは、アンダー画像とオーバー画像の合成比率が1:1に近い(本実施の形態では、k:1−k,0.4≦k≦0.6を満たす合成比率)画素を多数持つ分割ブロックの集合である。なお、加重加算領域の定義となる合成比率k:1−kは上記に限らず、k=0,1以外であれば本発明を適用可能である。
【0044】
次に、位置ズレ補正部108は、位置ズレ検出部106により検出された位置ズレ量と合成比率設定部107により設定された合成比率から、画像変換係数(補正量)を算出する(ステップS702)。画像変換係数については後述するが、画像データ間の位置ズレを補正するために一方の画像データをもう一方の画像データに合わせて変形するための座標変換係数のことである。画像変換係数は、上記加重加算領域に属する動きベクトルを優先的に使用して算出する。
【0045】
更に、位置ズレ補正部108は、算出した画像変換係数に基づいてオーバー画像の変形を行う(ステップS703)。ステップS701及びS702の詳細は後述する。
【0046】
図8は、図7における加重加算領域判定の処理の流れを示すフローチャートである。
【0047】
図8において、位置ズレ補正部108は、評価値の算出を行う分割ブロックの順番をカウントするカウンタiの値にi=0を設定する(ステップS801)。次に、位置ズレ補正部108は、i番目の分割ブロックblk[i]における評価値V[i]を算出する(ステップS802)。
【0048】
評価値V[i]とは、分割ブロックblk[i]に含まれる各画素に対する、アンダー画像とオーバー画像の合成比率が1:1に近い度合い、つまり加重加算によって位置ズレが見えやすい度合いを表すものである。評価値V[i]の計算式は下記の通りである。
【0049】
【数1】
【0050】
ここで、r[i][k]は、分割ブロックblk[i]の第k画素におけるアンダー画像の合成比率、B[i]は、分割ブロックblk[i]に含まれる画素の総数、nは合成枚数であり、本実施形態では2枚合成なので、n=2である。また、和の記号は、分割ブロックblk[i]の全画素にわたって和をとることを示している。上記計算式によれば、評価値V[i]の値が小さいほど合成比率が1:1に近い画素の多い(加重加算される度合いが強い)ブロックとなる。以下、評価値V[i]が設定値以下となるブロックのことを加重加算ブロックと呼ぶ。
【0051】
次に、位置ズレ補正部108は、分割ブロックblk[M*N−1]まで評価値の算出を行ったか否かを判定する(ステップS803)。分割ブロックblk[M*N−1]まで評価値の算出を行っていない場合は、位置ズレ補正部108は、カウンタiの値iをインクリメントしながら(ステップS804)、全ての分割ブロックにおける評価値を算出する。
【0052】
分割ブロックblk[M*N−1]まで評価値の算出を行った場合は、位置ズレ補正部108は、上記評価値を使用して加重加算領域の判定を行う(ステップS805)。ここでは、加重加算ブロックの集合を加重加算領域とし、加重加算ブロックが所定の個数(設定個数)以上隣接している場合、隣接している加重加算ブロックの集合を加重加算領域とみなす。これにより、本処理を終了する。
【0053】
図9a及び図9bは、図7における画像変換係数算出の処理の流れを示すフローチャートである。
【0054】
図9a及び図9bにおいて、位置ズレ補正部108は、以下のように加重加算領域の個数を数える。まず、位置ズレ補正部108は、加重加算領域の個数が0個であるか1個以上であるかを判定する(ステップS901)。加重加算領域の個数が0個でない場合は、位置ズレ補正部108は、加重加算領域の個数が1個であるか2個以上であるかを判定する(ステップS905)。
【0055】
即ち、位置ズレ補正部108は、加重加算領域が0個の場合、加重加算領域が1個存在する場合、加重加算領域が2個以上存在する場合に分けて、それぞれの場合で画像データの分割ブロック、つまり動きベクトルの優先度を設定する。更に、設定した動きベクトルの優先度から、画像データ間の位置ズレを補正するための画像変換係数を求める。
【0056】
以下、加重加算領域が0個の場合、加重加算領域が1個存在する場合、加重加算領域が2個以上存在する場合のそれぞれの処理を図10〜図12を用いて説明する。
【0057】
なお、本実施の形態では、加重加算領域の判定において隣接する加重加算ブロックの設定個数を4としている。つまり、評価値V[i]が設定値以下の加重加算ブロックが4個以上隣接(設定個数以上隣接)していると、これら加重加算ブロックの集合は加重加算領域とみなされる。この加重加算領域の判定条件は、図10〜図12において同様に適用される。
【0058】
・加重加算領域が存在しない場合
図10は、加重加算領域が存在しない場合について動きベクトルの優先度を設定する方法を示す図である。
【0059】
加重加算領域が存在しない場合には、図10に示すように、基準点を画像中心とし基準点からの距離が近い順に動きベクトルに優先度を設定する(図9aのステップS902)。
【0060】
なお、図10の(1)〜(10)で示す区画は加重加算ブロック、カッコ付き数字はブロック(動きベクトル)の優先度=基準点からの距離順である。また、上述した通り加重加算領域の判定において隣接ブロックの閾値(設定値)を4としており(ex.A=4)、後述の図11及び図12においても同様である。
【0061】
次に、設定した優先度に基づいて画像変換係数を算出する。画像変換係数とは、画像データ間の位置ズレを補正するために一方の画像データをもう一方の画像データに合わせて変形するための座標変換係数のことであり、例えばアフィン係数などが挙げられる。画像変換係数を算出する手法としては、複数の動きベクトルを入力し、入力された動きベクトルから最小二乗法により画像変換係数の推定を行うという手法が提案されている。
【0062】
本実施の形態では前記の手法を採用するため、画像変換係数の推定を行うために入力する動きベクトルを前もって選択する処理を行う(ステップS903)。動きベクトルを選択する理由としては、誤検出や局所的な移動体の存在等が原因で、画像データ間の位置ズレを表す動きベクトルとして信頼性に乏しい動きベクトルが存在するためである。
【0063】
動きベクトルを選択する手法としては、まず設定した優先度の高い順に複数個の動きベクトルを選択し、選択した動きベクトルから仮の画像変換係数を推定する。
【0064】
次に、推定した仮の画像変換係数を使用して、各ブロックの代表点を移動させ、当該ブロックで求まっている動きベクトルとの誤差を算出する。この時、誤差が小さい動きベクトルは、先に求めた仮の画像変換係数と相関が強い動きベクトルと考えられる。
【0065】
従って、誤差が所定の値以下となる動きベクトルが所定の個数以上存在する場合に、それらの動きベクトルは画像データ間の相対的な位置ズレを表すものとして信頼性が高いと考え、最終的に選択する動きベクトルとする。誤差が所定の値以下となる動きベクトルが所定の個数以上存在しない場合には、仮の画像変換係数を求める動きベクトルの組み合わせを変えて、同様の処理を繰り返す。
【0066】
次に、上記ステップS903の処理で選択した動きベクトルから、最終的な画像変換係数を推定する(ステップS904)。
【0067】
・加重加算領域が1個存在する場合
図11は、加重加算領域が1個存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【0068】
加重加算領域が1個存在する場合には、図11に示すように、加重加算領域の重心を基準点とし、基準点からの距離が近い順に動きベクトルに優先度を設定する。この際、加重加算領域に属する動きベクトルの優先度を高く設定する(図9aのステップS906)。
【0069】
以降、画像変換係数を推定するまでの処理は、上述した加重加算領域が存在しない場合と同様の処理となる(ステップS907、ステップS908)。
【0070】
なお、図11の(1)〜(12)で示す区画は加重加算領域に属するブロック、(13)〜(14)で示す区画は加重加算ブロックだが加重加算領域ではないブロック、カッコ付き数字はブロック(動きベクトル)の優先度=基準点からの距離順である。
【0071】
・加重加算領域が複数存在する場合
図12は、加重加算領域が複数存在する場合について動きベクトルの優先度を設定する方法を示す図である。ただし、図12では、加重加算領域の個数を2としている。
【0072】
加重加算領域が複数存在する場合には、ある加重加算領域に着目し、着目した加重加算領域の重心を基準点とし、基準点からの距離が近い順に動きベクトルに優先度を設定する。この際、着目している加重加算領域に属する動きベクトルの優先度を高く設定する(図9bのステップS909、ステップS910、ステップS911)。
【0073】
次に、着目している加重加算領域に対する動きベクトルの優先度を基に、画像変換係数を推定する。画像変換係数の推定の手法は、上述した加重加算領域が存在しない場合と同様である。上記の処理を、加重加算領域が存在する個数の分だけ繰り返し、加重加算領域が存在する個数と同数の画像変換係数を得る(ステップS912)。
【0074】
即ち、全ての加重加算領域に着目して、画像変換係数を算出したか否かを判定し(ステップS913)、画像変換係数を算出していない場合は、着目する加重加算領域を更新する(ステップS914)。更に、着目する加重加算領域の重心からの距離及び評価値に基づき、動きベクトルの優先度を設定し(ステップS910)、動きベクトルの優先度に基づいて、画像変換係数の算出に使用する動きベクトルを選択する(ステップS911)。そして、画像変換係数を算出する(ステップS912)。
【0075】
画像変換係数を算出した場合は、画像変換係数の補間を行い(ステップS915)、各画素ごとの画像変換係数を算出する。本実施の形態では、補間方法として、各画像変換係数に対する重みづけ係数を、各画像変換係数に対応する加重加算領域の重心からの距離によって算出し、各画像変換係数の重みづけ加算を行う。
【0076】
なお、図12の(1)〜(12)で示す区画は加重加算領域1に属するブロック、1〜6で示す区画は加重加算領域2に属するブロックである。カッコ付き数字は加重加算領域1におけるブロック(動きベクトル)の優先度=基準点からの距離順、カッコ付きでない数字は加重加算領域2におけるブロック(動きベクトル)の優先度=基準点からの距離順である。
【0077】
図13は、加重加算領域が2個存在する場合における画像変換係数の補間の例を示す図である。
【0078】
図13において、間隔の狭い斜線で示す区画は加重加算領域1に属するブロック、間隔の広い斜線で示す区画は加重加算領域2に属するブロックである。基準点1は加重加算領域1の重心、基準点2は加重加算領域2の重心である。
【0079】
Akを加重加算領域kにおける画像変換係数とし、Wkを加重加算領域kにおける画像変換係数Akの重みとすると、点(x,y)における画像変換係数Ax,yは下記の式で表すことができる。
【0080】
Ax,y=w1A1+w2A2
(w1=αx(x)αy(y),w2=1−w1)
なお、αは、上記のw1を算出する際に使用する重みづけ係数である(0≦α≦1)。なお、図13の水平方向の細長いバーと垂直方向の細長いバーを構成する白地部分と斜線部分の斜めの境界は、αが0から1まで変化していくことを示している。
【0081】
また、加重加算領域がnか所存在する場合の点(x,y)における画像変換係数Ax,yは、図13の下段に示す計算式で表すことができる。
【0082】
上記の補間処理を行って算出された画素ごとの画像変換係数を、最終的な画像変換係数とする。
【0083】
上記の図7乃至図13で説明した内容が、画像処理部103の位置ズレ補正部108の処理となる。位置ズレ補正部108から画像合成部109には、位置合わせが完了したアンダー画像とオーバー画像が出力される。画像合成部109では、位置合わせが完了したアンダー画像とオーバー画像を、予め算出した合成比率に従って画素ごとに合成を行う。
【0084】
以上の処理により、画像処理部103の位置ズレ補正部108においてアンダー画像とオーバー画像間の位置ズレを補正し、画像合成部109において位置ズレが補正されたアンダー画像とオーバー画像を合成する。これにより、ダイナミックレンジが拡大された合成画像データが生成される。
【0085】
以上説明したように、本実施の形態によれば、合成比率が1:1に近い領域、つまり位置ズレが見えやすい領域を判定し、判定した領域を優先して位置ズレ補正を行う。そのため、合成画像においてアンダー画像とオーバー画像を加重加算する領域で目立つ位置ズレを低減することができる。
【0086】
これにより、従来のように高露出画像データと低露出画像データを加重加算する領域で位置ズレが残留している場合に、画像データ合成の際に位置ズレが目立って見え、合成画像の画質が劣化するという問題を解消することができる。
【0087】
即ち、本実施の形態では、複数枚の画像データを合成して画像データのダイナミックレンジを拡大する場合において、複数枚の画像データを加重加算する領域で発生する位置ズレを低減することができる。
【0088】
〔第2の実施の形態〕
本発明の第2の実施の形態は、上記第1の実施の形態に対して、図14、図15で説明する点において相違する。
【0089】
上記第1の実施の形態においては、位置ズレ補正を行うために使用する動きベクトルの優先度を、各分割ブロックにおけるアンダー画像とオーバー画像の合成比率から決定していた。これに対し、第2の実施の形態では、撮像装置の画像処理部の構成において、更に、主要被写体領域を検出する主要被写体領域検出部を追加した場合の処理について説明する。
【0090】
図14は、本発明の第2の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。
【0091】
図14において、撮像装置は、撮像部1401、A/D変換部1402、画像処理部1403、画像表示部1411、画像記録部1412を備えている。画像処理部1403は、階調補正部1404、主要被写体領域検出部1405、メモリ部1406、位置ズレ検出部1407、合成比率設定部1408、位置ズレ補正部1409、画像合成部1410から構成されている。
【0092】
図14に示す構成が図1に示す構成と相違する点は、画像処理部1403に主要被写体領域検出部1405を追加した点と、位置ズレ補正部1409の処理が異なる点である。これ以外は共通であるため共通部分については説明を省略する。
【0093】
以下、主要被写体検出部1405の機能と、主要被写体検出部1405を追加した場合における位置ズレ補正部1409の処理について説明する。
【0094】
主要被写体検出部1405は、階調補正部1404からの入力画像データ及び撮影時のAF(Auto Focus)情報等から、入力画像データ内において主要と思われる被写体領域を抽出する。被写体領域は、図4に示した分割ブロックを単位として抽出されるものとする。また、主要被写体領域の検出方法に関しては、本実施の形態では特に限定しないものとする。
【0095】
位置ズレ補正部1409の処理においては、上記第1の実施の形態と比較して、図9aのステップS902、図9aのステップS906、図9bのステップS910における、動きベクトルの優先度を決定する処理が異なる。撮影者にとっては画像データ間の位置ズレが最も良好に補正されてほしい領域は主要被写体領域であると考えられるため、主要被写体領域に属する動きベクトルの優先度を最も高く設定する。
【0096】
図15は、主要被写体領域が存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【0097】
図15において、主要被写体領域かつ加重加算領域に属する(含まれる)動きベクトルを第一優先とし、主要被写体領域以外の加重加算領域に属する(含まれる)動きベクトルを第二優先としている。そして、基準点(加重加算領域の重心)からの距離順に優先度を設定している。
【0098】
なお、図15の太い実線で囲んだ区画は主要被写体領域である。また、(1)〜(12)で示す区画は加重加算領域に属するブロック、(13)〜(14)で示す区画は加重加算ブロックだが加重加算領域ではないブロック、カッコ付き数字はブロック(動きベクトル)の優先度である。
【0099】
以上説明したように、本実施の形態によれば、主要被写体領域かつ合成比率が1:1に近い領域、つまり位置ズレが見えやすい領域を最優先として位置ズレの補正を行う。そのため、特に主要被写体領域において、アンダー画像とオーバー画像を加重加算する領域で目立つ位置ズレを低減することができる。
【0100】
〔他の実施の形態〕
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。前記プログラムは、画像処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムコードを有する。
【符号の説明】
【0101】
103、1403 画像処理部
106、1407 位置ズレ検出部
107、1408 合成比率設定部
108、1409 位置ズレ補正部
109、1410 画像合成部
【技術分野】
【0001】
本発明は、複数の画像データを合成する機能を有する画像処理装置、撮像装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
従来、異なる露出で撮影した複数枚の画像データを合成することにより、ダイナミックレンジを拡大した合成画像データを得る画像処理に関わる技術が提案されている。この種の画像処理は、低輝度領域に対しては高露出画像データを主に使用し、高輝度領域に対しては低露出画像データを主に使用することで、「白飛び」や「黒潰れ」の影響を低減し、画像のダイナミックレンジを拡大するものである。
【0003】
上記画像処理において、複数枚撮影されたそれぞれの画像データは、撮影者の手ぶれ等により相対的な位置ズレが発生している。画像データを合成する際に、画像データ間に位置ズレが発生している場合、合成画像において像が多重に写り、合成画像の画質が低下する。従って、複数枚撮影された画像データの位置合わせは重要な技術となる。
【0004】
上記画像データの位置合わせ技術に関しては、多くの技術が開示されている(例えば、特許文献1参照)。
【0005】
特許文献1記載の技術では、画像データ間の対応点を複数求め、信頼度の高い一部の対応点から仮の移動パラメータを算出し、移動パラメータから算出した対応点と、予め求まっている各々の対応点との誤差を求めて合格判定を行う。この画像処理を、仮の移動パラメータを求める対応点の組み合わせを変えながら繰り返した後、合格判定された対応点の数が最大となる組み合わせを用いて、最終的な移動パラメータを確定し、位置合わせを行う。
【0006】
更に、上記画像データの位置合わせ技術に関しては、次の技術が開示されている(例えば、特許文献2参照)。
【0007】
特許文献2記載の技術では、画像データを複数の位置ズレ検出ブロックに分割し、各々の位置ズレ検出ブロックに対して白飛び判定、黒潰れ判定、及び低コントラスト判定を行う。その後、好適と判断された位置ズレ検出ブロックにおける動きベクトルの発生頻度から、画像データの位置合わせに用いる動きベクトルを選択する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−229868号公報
【特許文献2】特開2008−118555号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述した特許文献1及び特許文献2に記載の技術においては、被写体の微小な動きや、被写体の距離差による動きの違いにより、画像データの位置合わせで補正しきれず、画像データの位置ズレが残留することが予想される。
【0010】
本発明の目的は、複数の画像データを合成する際に発生する位置ズレの影響を低減することを可能とした画像処理装置、撮像装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明は、少なくとも2枚の入力画像データに対して画像処理を行う画像処理装置であって、前記入力画像データ間の位置ズレ量を検出する検出手段と、少なくとも2枚の前記入力画像データを合成する際の合成比率を設定する設定手段と、前記検出手段により検出された位置ズレ量と前記設定手段により設定された合成比率から補正量を算出し、前記入力画像データに前記補正量を用いて前記入力画像データ間の位置ズレを補正する補正手段と、位置ズレが補正された前記入力画像データを前記合成比率で合成する合成手段と、を備え、前記補正手段は、少なくとも2枚の前記入力画像データを加重加算する領域を優先させて前記位置ズレの補正を行うことを特徴とする。
【発明の効果】
【0012】
本発明によれば、検出された位置ズレ量と設定された合成比率に基づいて入力画像データ間の位置ズレを補正する。これにより、複数枚の画像データを合成する場合において、複数枚の画像データを合成する際に発生する位置ズレの影響を低減することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。
【図2】アンダー画像の階調変換特性とオーバー画像の階調変換特性を示す図である。
【図3】画像処理部の位置ズレ検出部の処理の流れを示すフローチャートである。
【図4】画像データを水平方向にN分割及び垂直方向にM分割の複数ブロックに分割した例を示す図である。
【図5】画像処理部の合成比率設定部の処理の流れを示すフローチャートである。
【図6】アンダー画像の合成比率テーブルとオーバー画像の合成比率テーブルを示す図である。
【図7】画像処理部の位置ズレ補正部の処理の流れを示すフローチャートである。
【図8】図7における加重加算領域判定の処理の流れを示すフローチャートである。
【図9a】図7における画像変換係数算出の処理の流れを示すフローチャートである。
【図9b】図7における画像変換係数算出の処理の流れを示すフローチャートである。
【図10】加重加算領域が存在しない場合について動きベクトルの優先度を設定する方法を示す図である。
【図11】加重加算領域が1個存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【図12】加重加算領域が複数存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【図13】加重加算領域が2個存在する場合における画像変換係数の補間の例を示す図である。
【図14】本発明の第2の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。
【図15】主要被写体領域が存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を参照しながら説明する。
【0015】
〔第1の実施の形態〕
本実施の形態では、複数枚の画像を合成してダイナミックレンジの拡張を行う。
【0016】
ダイナミックレンジの拡大を目的とした画像合成では、低輝度領域においては高露出画像データの合成比率を高く設定し、高輝度領域においては低露出画像データの合成比率を高く設定する。更に、合成画像に生じる急な切り替わりを防止するために、中間輝度領域では高露出画像データと低露出画像データを加重加算するように合成比率を設定する。
【0017】
従って、高露出画像データと低露出画像データを加重加算する領域において位置ズレが残留している場合には、画像データの合成の際に前記位置ズレが目立って見えてしまい、合成画像の画質が劣化するという課題がある。
【0018】
本実施の形態は上記の課題を解決するものである。しかし、実施形態としてはこれに限らず、画像全体の領域の中で加重加算領域が存在する合成処理であれば、特に合成に伴う処理は限定されない。
【0019】
図1は、本発明の第1の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。図2は、アンダー画像の階調変換特性とオーバー画像の階調変換特性を示す図である。
【0020】
図1において、本実施の形態の撮像装置は、画像データのダイナミックレンジを拡大する機能を有する。撮像装置は、撮像部101、A/D変換部102、画像処理部103、画像表示部110、画像記録部111を備えている。
【0021】
撮像部101は、撮像レンズ群と半導体撮像素子(CMOSセンサあるいはCCDセンサ等)から構成されている。撮像部101は、同一被写体に対して露光量を変化させながら複数回の撮影を行うことが可能であり、複数回の撮影で撮像された映像信号をA/D変換部102に出力する。A/D変換部102は、撮像部101から入力された映像信号をデジタルの画像データに変換し、画像処理部103に出力する。
【0022】
画像処理部103は、撮像部101により互いに異なる露光条件で撮像されA/D変換部102から入力された少なくとも2枚の画像データ(入力画像データ)の位置ズレを補正し、位置ズレが補正された画像データを合成する処理を行う。
【0023】
画像表示部110は、画像処理部103で生成された画像データを撮像装置本体に装備されている液晶モニタ(不図示)に表示する。更に、画像記録部111は、画像処理部103で生成された画像データを記録媒体(不図示)に記録する。
【0024】
次に、画像処理部103の詳細について説明する。画像処理部103は、階調補正部104、メモリ部105、位置ズレ検出部106、合成比率設定部107、位置ズレ補正部108、画像合成部109から構成されている。
【0025】
階調補正部104は、A/D変換部102から入力された複数の画像データ(入力画像データ)に対して、輝度レベルを合わせる処理を行う。本実施の形態では、入力画像データの枚数を例えば2枚と仮定し、露光量の異なる入力画像データにおいて、相対的に露光量の大きい画像をオーバー画像とし、オーバー画像に対して露光量の小さい画像をアンダー画像とする。
【0026】
階調補正部104は、オーバー画像とアンダー画像のそれぞれに対し、図2に示すような異なる階調変換特性を持った階調変換を施すことで、オーバー画像とアンダー画像の輝度レベルを合わせる処理を行う。ただし、本実施の形態では、アンダー画像の輝度レベルをオーバー画像の輝度レベルに合わせている。階調補正部104で処理された画像データは、メモリ部105に蓄えられる。
【0027】
ここで、図2の横軸は入力信号値、縦軸は出力信号値であり、上側の曲線がアンダー画像の階調変換特性、下側の曲線がオーバー画像の階調変換特性を示している。アンダー画像の階調変換特性における入力信号値をSu、オーバー画像の階調変換特性における入力信号値をSo、アンダー画像とオーバー画像の露出量の差をNeV(N:整数)とした時、Su=2−NSoが成立する。
【0028】
メモリ部105に蓄えられた入力画像データは、撮影者の手ぶれ等に起因する相対的な位置のずれを伴っている。そのため、位置ズレ検出部106、合成比率設定部107、及び位置ズレ補正部108によって、入力画像データ間の位置ズレを補正する。位置ズレ検出部106、合成比率設定部107、位置ズレ補正部108の詳細な処理については、以下の動作説明において後述する。
【0029】
次に、上記の構成を備える本実施の形態の撮像装置の動作について図3乃至図13を参照しながら説明する。
【0030】
<位置ズレ検出部106の処理>
図3は、画像処理部103の位置ズレ検出部106の処理の流れを示すフローチャートである。
【0031】
図3において、位置ズレ検出部106は、メモリ部105から画像データが入力されると(ステップS301)、入力画像データに対し、位置ズレを求める基準となる基準画像を設定する(ステップS302)。ここでは、アンダー画像を基準画像に設定する。即ち、本実施の形態における位置ズレとは、アンダー画像に対するオーバー画像の位置ズレを意味する。
【0032】
次に、位置ズレ検出部106は、図4に示すように、入力画像データを水平方向にN分割すると共に垂直方向にM分割することで複数のブロックに分割する(ステップS302)。ここで、今後の処理の説明のために、各分割ブロックをblk[0]〜blk[M*N−1]と呼ぶ(図4参照)。
【0033】
次に、位置ズレ検出部106は、動きベクトルを検出する分割ブロックの順番をカウントするカウンタiの値にi=0を設定する(ステップS304)。更に、位置ズレ検出部106は、i番目の分割ブロックblk[i]について、アンダー画像とオーバー画像の間の相対的な位置ズレ量を表す動きベクトルを検出する(ステップS305)。動きベクトルの検出方法としては、例えば、差分絶対値和を評価値としたパターンマッチング処理が挙げられる。
【0034】
次に、位置ズレ検出部106は、分割ブロックblk[M*N−1]まで動きベクトルの検出を行ったか否かを判定する(ステップS306)。分割ブロックblk[M*N−1]まで動きベクトルの検出を行っていない場合は、位置ズレ検出部106は、カウンタiの値iをインクリメントしながら(ステップS307)、全ての分割ブロックにおける動きベクトルを検出する。分割ブロックblk[M*N−1]まで動きベクトルの検出を行った場合は、本処理を終了する。
【0035】
<合成比率設定部107の処理>
図5は、画像処理部103の合成比率設定部107の処理の流れを示すフローチャートである。
【0036】
図5において、合成比率設定部107は、基準輝度画像の設定を行う(ステップS501)。基準輝度画像とは、入力画像データの合成比率を設定するために参照する、露光量の最も低い輝度画像である。ここでは、基準輝度画像としてアンダー画像の輝度成分を使用する。
【0037】
アンダー画像を使用する理由としては、オーバー画像では白飛びによって階調性が失われている領域が存在すると考えられるため、合成比率を設定するために参照する情報としてはアンダー画像の方が好ましいからである。なお、基準輝度画像としては、アンダー画像に既定の画像処理を施した画像を使用してもよい。
【0038】
次に、合成比率設定部107は、基準輝度画像の画素値から、合成比率テーブルに基づいて各画素におけるアンダー画像とオーバー画像の合成比率を設定する(ステップS502)。合成比率テーブルとは、基準となる輝度値に対して、アンダー画像とオーバー画像を合成する比率である合成比率を設定するテーブルである。
【0039】
図6に本実施の形態の合成比率テーブルを示す。図6の横軸は基準輝度値、縦軸は合成比率(%)であり、合成比率テーブルを次のように設定している。基準輝度値をYとした時、Y≦Y1の領域では、オーバー画像を100%使用する。Y2≦Yの領域では、アンダー画像を100%使用する。Y1<Y<Y2の領域では、アンダー画像とオーバー画像を加重加算する。ここで、Y1、Y2は、予め設定された輝度値である。
【0040】
即ち、入力された画像データの中で露光量の最も低い画像から生成される基準輝度画像の輝度値を参照し、合成比率を次のように設定する。輝度値が低い領域には、入力された画像データの中から露光量の大きい画像データの合成比率が高くなるよう設定し、輝度値が大きい領域には、入力された画像データの中から露光量の小さい画像データの合成比率が高くなるように設定する。
【0041】
<位置ズレ補正部108の処理>
位置ズレ補正部108は、位置ズレ検出部106で求めた各分割ブロックにおける動きベクトル、及び合成比率設定部107で設定した画素単位の合成比率を入力とする。
【0042】
図7は、画像処理部103の位置ズレ補正部108の処理の流れを示すフローチャートである。
【0043】
図7において、位置ズレ補正部108は、加重加算領域を判定する(ステップS701)。加重加算領域とは、アンダー画像とオーバー画像の合成比率が1:1に近い(本実施の形態では、k:1−k,0.4≦k≦0.6を満たす合成比率)画素を多数持つ分割ブロックの集合である。なお、加重加算領域の定義となる合成比率k:1−kは上記に限らず、k=0,1以外であれば本発明を適用可能である。
【0044】
次に、位置ズレ補正部108は、位置ズレ検出部106により検出された位置ズレ量と合成比率設定部107により設定された合成比率から、画像変換係数(補正量)を算出する(ステップS702)。画像変換係数については後述するが、画像データ間の位置ズレを補正するために一方の画像データをもう一方の画像データに合わせて変形するための座標変換係数のことである。画像変換係数は、上記加重加算領域に属する動きベクトルを優先的に使用して算出する。
【0045】
更に、位置ズレ補正部108は、算出した画像変換係数に基づいてオーバー画像の変形を行う(ステップS703)。ステップS701及びS702の詳細は後述する。
【0046】
図8は、図7における加重加算領域判定の処理の流れを示すフローチャートである。
【0047】
図8において、位置ズレ補正部108は、評価値の算出を行う分割ブロックの順番をカウントするカウンタiの値にi=0を設定する(ステップS801)。次に、位置ズレ補正部108は、i番目の分割ブロックblk[i]における評価値V[i]を算出する(ステップS802)。
【0048】
評価値V[i]とは、分割ブロックblk[i]に含まれる各画素に対する、アンダー画像とオーバー画像の合成比率が1:1に近い度合い、つまり加重加算によって位置ズレが見えやすい度合いを表すものである。評価値V[i]の計算式は下記の通りである。
【0049】
【数1】
【0050】
ここで、r[i][k]は、分割ブロックblk[i]の第k画素におけるアンダー画像の合成比率、B[i]は、分割ブロックblk[i]に含まれる画素の総数、nは合成枚数であり、本実施形態では2枚合成なので、n=2である。また、和の記号は、分割ブロックblk[i]の全画素にわたって和をとることを示している。上記計算式によれば、評価値V[i]の値が小さいほど合成比率が1:1に近い画素の多い(加重加算される度合いが強い)ブロックとなる。以下、評価値V[i]が設定値以下となるブロックのことを加重加算ブロックと呼ぶ。
【0051】
次に、位置ズレ補正部108は、分割ブロックblk[M*N−1]まで評価値の算出を行ったか否かを判定する(ステップS803)。分割ブロックblk[M*N−1]まで評価値の算出を行っていない場合は、位置ズレ補正部108は、カウンタiの値iをインクリメントしながら(ステップS804)、全ての分割ブロックにおける評価値を算出する。
【0052】
分割ブロックblk[M*N−1]まで評価値の算出を行った場合は、位置ズレ補正部108は、上記評価値を使用して加重加算領域の判定を行う(ステップS805)。ここでは、加重加算ブロックの集合を加重加算領域とし、加重加算ブロックが所定の個数(設定個数)以上隣接している場合、隣接している加重加算ブロックの集合を加重加算領域とみなす。これにより、本処理を終了する。
【0053】
図9a及び図9bは、図7における画像変換係数算出の処理の流れを示すフローチャートである。
【0054】
図9a及び図9bにおいて、位置ズレ補正部108は、以下のように加重加算領域の個数を数える。まず、位置ズレ補正部108は、加重加算領域の個数が0個であるか1個以上であるかを判定する(ステップS901)。加重加算領域の個数が0個でない場合は、位置ズレ補正部108は、加重加算領域の個数が1個であるか2個以上であるかを判定する(ステップS905)。
【0055】
即ち、位置ズレ補正部108は、加重加算領域が0個の場合、加重加算領域が1個存在する場合、加重加算領域が2個以上存在する場合に分けて、それぞれの場合で画像データの分割ブロック、つまり動きベクトルの優先度を設定する。更に、設定した動きベクトルの優先度から、画像データ間の位置ズレを補正するための画像変換係数を求める。
【0056】
以下、加重加算領域が0個の場合、加重加算領域が1個存在する場合、加重加算領域が2個以上存在する場合のそれぞれの処理を図10〜図12を用いて説明する。
【0057】
なお、本実施の形態では、加重加算領域の判定において隣接する加重加算ブロックの設定個数を4としている。つまり、評価値V[i]が設定値以下の加重加算ブロックが4個以上隣接(設定個数以上隣接)していると、これら加重加算ブロックの集合は加重加算領域とみなされる。この加重加算領域の判定条件は、図10〜図12において同様に適用される。
【0058】
・加重加算領域が存在しない場合
図10は、加重加算領域が存在しない場合について動きベクトルの優先度を設定する方法を示す図である。
【0059】
加重加算領域が存在しない場合には、図10に示すように、基準点を画像中心とし基準点からの距離が近い順に動きベクトルに優先度を設定する(図9aのステップS902)。
【0060】
なお、図10の(1)〜(10)で示す区画は加重加算ブロック、カッコ付き数字はブロック(動きベクトル)の優先度=基準点からの距離順である。また、上述した通り加重加算領域の判定において隣接ブロックの閾値(設定値)を4としており(ex.A=4)、後述の図11及び図12においても同様である。
【0061】
次に、設定した優先度に基づいて画像変換係数を算出する。画像変換係数とは、画像データ間の位置ズレを補正するために一方の画像データをもう一方の画像データに合わせて変形するための座標変換係数のことであり、例えばアフィン係数などが挙げられる。画像変換係数を算出する手法としては、複数の動きベクトルを入力し、入力された動きベクトルから最小二乗法により画像変換係数の推定を行うという手法が提案されている。
【0062】
本実施の形態では前記の手法を採用するため、画像変換係数の推定を行うために入力する動きベクトルを前もって選択する処理を行う(ステップS903)。動きベクトルを選択する理由としては、誤検出や局所的な移動体の存在等が原因で、画像データ間の位置ズレを表す動きベクトルとして信頼性に乏しい動きベクトルが存在するためである。
【0063】
動きベクトルを選択する手法としては、まず設定した優先度の高い順に複数個の動きベクトルを選択し、選択した動きベクトルから仮の画像変換係数を推定する。
【0064】
次に、推定した仮の画像変換係数を使用して、各ブロックの代表点を移動させ、当該ブロックで求まっている動きベクトルとの誤差を算出する。この時、誤差が小さい動きベクトルは、先に求めた仮の画像変換係数と相関が強い動きベクトルと考えられる。
【0065】
従って、誤差が所定の値以下となる動きベクトルが所定の個数以上存在する場合に、それらの動きベクトルは画像データ間の相対的な位置ズレを表すものとして信頼性が高いと考え、最終的に選択する動きベクトルとする。誤差が所定の値以下となる動きベクトルが所定の個数以上存在しない場合には、仮の画像変換係数を求める動きベクトルの組み合わせを変えて、同様の処理を繰り返す。
【0066】
次に、上記ステップS903の処理で選択した動きベクトルから、最終的な画像変換係数を推定する(ステップS904)。
【0067】
・加重加算領域が1個存在する場合
図11は、加重加算領域が1個存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【0068】
加重加算領域が1個存在する場合には、図11に示すように、加重加算領域の重心を基準点とし、基準点からの距離が近い順に動きベクトルに優先度を設定する。この際、加重加算領域に属する動きベクトルの優先度を高く設定する(図9aのステップS906)。
【0069】
以降、画像変換係数を推定するまでの処理は、上述した加重加算領域が存在しない場合と同様の処理となる(ステップS907、ステップS908)。
【0070】
なお、図11の(1)〜(12)で示す区画は加重加算領域に属するブロック、(13)〜(14)で示す区画は加重加算ブロックだが加重加算領域ではないブロック、カッコ付き数字はブロック(動きベクトル)の優先度=基準点からの距離順である。
【0071】
・加重加算領域が複数存在する場合
図12は、加重加算領域が複数存在する場合について動きベクトルの優先度を設定する方法を示す図である。ただし、図12では、加重加算領域の個数を2としている。
【0072】
加重加算領域が複数存在する場合には、ある加重加算領域に着目し、着目した加重加算領域の重心を基準点とし、基準点からの距離が近い順に動きベクトルに優先度を設定する。この際、着目している加重加算領域に属する動きベクトルの優先度を高く設定する(図9bのステップS909、ステップS910、ステップS911)。
【0073】
次に、着目している加重加算領域に対する動きベクトルの優先度を基に、画像変換係数を推定する。画像変換係数の推定の手法は、上述した加重加算領域が存在しない場合と同様である。上記の処理を、加重加算領域が存在する個数の分だけ繰り返し、加重加算領域が存在する個数と同数の画像変換係数を得る(ステップS912)。
【0074】
即ち、全ての加重加算領域に着目して、画像変換係数を算出したか否かを判定し(ステップS913)、画像変換係数を算出していない場合は、着目する加重加算領域を更新する(ステップS914)。更に、着目する加重加算領域の重心からの距離及び評価値に基づき、動きベクトルの優先度を設定し(ステップS910)、動きベクトルの優先度に基づいて、画像変換係数の算出に使用する動きベクトルを選択する(ステップS911)。そして、画像変換係数を算出する(ステップS912)。
【0075】
画像変換係数を算出した場合は、画像変換係数の補間を行い(ステップS915)、各画素ごとの画像変換係数を算出する。本実施の形態では、補間方法として、各画像変換係数に対する重みづけ係数を、各画像変換係数に対応する加重加算領域の重心からの距離によって算出し、各画像変換係数の重みづけ加算を行う。
【0076】
なお、図12の(1)〜(12)で示す区画は加重加算領域1に属するブロック、1〜6で示す区画は加重加算領域2に属するブロックである。カッコ付き数字は加重加算領域1におけるブロック(動きベクトル)の優先度=基準点からの距離順、カッコ付きでない数字は加重加算領域2におけるブロック(動きベクトル)の優先度=基準点からの距離順である。
【0077】
図13は、加重加算領域が2個存在する場合における画像変換係数の補間の例を示す図である。
【0078】
図13において、間隔の狭い斜線で示す区画は加重加算領域1に属するブロック、間隔の広い斜線で示す区画は加重加算領域2に属するブロックである。基準点1は加重加算領域1の重心、基準点2は加重加算領域2の重心である。
【0079】
Akを加重加算領域kにおける画像変換係数とし、Wkを加重加算領域kにおける画像変換係数Akの重みとすると、点(x,y)における画像変換係数Ax,yは下記の式で表すことができる。
【0080】
Ax,y=w1A1+w2A2
(w1=αx(x)αy(y),w2=1−w1)
なお、αは、上記のw1を算出する際に使用する重みづけ係数である(0≦α≦1)。なお、図13の水平方向の細長いバーと垂直方向の細長いバーを構成する白地部分と斜線部分の斜めの境界は、αが0から1まで変化していくことを示している。
【0081】
また、加重加算領域がnか所存在する場合の点(x,y)における画像変換係数Ax,yは、図13の下段に示す計算式で表すことができる。
【0082】
上記の補間処理を行って算出された画素ごとの画像変換係数を、最終的な画像変換係数とする。
【0083】
上記の図7乃至図13で説明した内容が、画像処理部103の位置ズレ補正部108の処理となる。位置ズレ補正部108から画像合成部109には、位置合わせが完了したアンダー画像とオーバー画像が出力される。画像合成部109では、位置合わせが完了したアンダー画像とオーバー画像を、予め算出した合成比率に従って画素ごとに合成を行う。
【0084】
以上の処理により、画像処理部103の位置ズレ補正部108においてアンダー画像とオーバー画像間の位置ズレを補正し、画像合成部109において位置ズレが補正されたアンダー画像とオーバー画像を合成する。これにより、ダイナミックレンジが拡大された合成画像データが生成される。
【0085】
以上説明したように、本実施の形態によれば、合成比率が1:1に近い領域、つまり位置ズレが見えやすい領域を判定し、判定した領域を優先して位置ズレ補正を行う。そのため、合成画像においてアンダー画像とオーバー画像を加重加算する領域で目立つ位置ズレを低減することができる。
【0086】
これにより、従来のように高露出画像データと低露出画像データを加重加算する領域で位置ズレが残留している場合に、画像データ合成の際に位置ズレが目立って見え、合成画像の画質が劣化するという問題を解消することができる。
【0087】
即ち、本実施の形態では、複数枚の画像データを合成して画像データのダイナミックレンジを拡大する場合において、複数枚の画像データを加重加算する領域で発生する位置ズレを低減することができる。
【0088】
〔第2の実施の形態〕
本発明の第2の実施の形態は、上記第1の実施の形態に対して、図14、図15で説明する点において相違する。
【0089】
上記第1の実施の形態においては、位置ズレ補正を行うために使用する動きベクトルの優先度を、各分割ブロックにおけるアンダー画像とオーバー画像の合成比率から決定していた。これに対し、第2の実施の形態では、撮像装置の画像処理部の構成において、更に、主要被写体領域を検出する主要被写体領域検出部を追加した場合の処理について説明する。
【0090】
図14は、本発明の第2の実施の形態に係る撮像装置の画像処理部を中心とした構成を示すブロック図である。
【0091】
図14において、撮像装置は、撮像部1401、A/D変換部1402、画像処理部1403、画像表示部1411、画像記録部1412を備えている。画像処理部1403は、階調補正部1404、主要被写体領域検出部1405、メモリ部1406、位置ズレ検出部1407、合成比率設定部1408、位置ズレ補正部1409、画像合成部1410から構成されている。
【0092】
図14に示す構成が図1に示す構成と相違する点は、画像処理部1403に主要被写体領域検出部1405を追加した点と、位置ズレ補正部1409の処理が異なる点である。これ以外は共通であるため共通部分については説明を省略する。
【0093】
以下、主要被写体検出部1405の機能と、主要被写体検出部1405を追加した場合における位置ズレ補正部1409の処理について説明する。
【0094】
主要被写体検出部1405は、階調補正部1404からの入力画像データ及び撮影時のAF(Auto Focus)情報等から、入力画像データ内において主要と思われる被写体領域を抽出する。被写体領域は、図4に示した分割ブロックを単位として抽出されるものとする。また、主要被写体領域の検出方法に関しては、本実施の形態では特に限定しないものとする。
【0095】
位置ズレ補正部1409の処理においては、上記第1の実施の形態と比較して、図9aのステップS902、図9aのステップS906、図9bのステップS910における、動きベクトルの優先度を決定する処理が異なる。撮影者にとっては画像データ間の位置ズレが最も良好に補正されてほしい領域は主要被写体領域であると考えられるため、主要被写体領域に属する動きベクトルの優先度を最も高く設定する。
【0096】
図15は、主要被写体領域が存在する場合について動きベクトルの優先度を設定する方法を示す図である。
【0097】
図15において、主要被写体領域かつ加重加算領域に属する(含まれる)動きベクトルを第一優先とし、主要被写体領域以外の加重加算領域に属する(含まれる)動きベクトルを第二優先としている。そして、基準点(加重加算領域の重心)からの距離順に優先度を設定している。
【0098】
なお、図15の太い実線で囲んだ区画は主要被写体領域である。また、(1)〜(12)で示す区画は加重加算領域に属するブロック、(13)〜(14)で示す区画は加重加算ブロックだが加重加算領域ではないブロック、カッコ付き数字はブロック(動きベクトル)の優先度である。
【0099】
以上説明したように、本実施の形態によれば、主要被写体領域かつ合成比率が1:1に近い領域、つまり位置ズレが見えやすい領域を最優先として位置ズレの補正を行う。そのため、特に主要被写体領域において、アンダー画像とオーバー画像を加重加算する領域で目立つ位置ズレを低減することができる。
【0100】
〔他の実施の形態〕
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。前記プログラムは、画像処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムコードを有する。
【符号の説明】
【0101】
103、1403 画像処理部
106、1407 位置ズレ検出部
107、1408 合成比率設定部
108、1409 位置ズレ補正部
109、1410 画像合成部
【特許請求の範囲】
【請求項1】
少なくとも2枚の入力画像データに対して画像処理を行う画像処理装置であって、
前記入力画像データ間の位置ズレ量を検出する検出手段と、
少なくとも2枚の前記入力画像データを合成する際の合成比率を設定する設定手段と、
前記検出手段により検出された位置ズレ量と前記設定手段により設定された合成比率から補正量を算出し、前記入力画像データに前記補正量を用いて前記入力画像データ間の位置ズレを補正する補正手段と、
位置ズレが補正された前記入力画像データを前記合成比率で合成する合成手段と、を備え、
前記補正手段は、少なくとも2枚の前記入力画像データを加重加算する領域を優先させて前記位置ズレの補正を行うことを特徴とする画像処理装置。
【請求項2】
前記入力画像データは、互いに異なる露光条件で撮像された画像データであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記検出手段は、入力画像データを複数の領域に分割し、分割された領域ごとに入力画像データ間の相対的な位置ズレ量を表す動きベクトルを求めることを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記補正手段は、前記検出手段により分割された領域に対して合成比率が1:1に近い度合いを表す評価値を求め、前記評価値が設定値以下で設定個数以上隣接している分割された領域を加重加算ブロックと判定し、前記加重加算ブロックの集合を加重加算領域とみなし、前記加重加算領域に属する動きベクトルを優先的に使用して、前記補正量を算出することを特徴とする請求項1又は請求項3に記載の画像処理装置。
【請求項5】
入力画像データにおける主要被写体領域を検出する領域検出手段を備え、
前記補正手段は、前記領域検出手段により検出された主要被写体領域かつ前記加重加算領域に属する動きベクトルを優先的に使用して、前記補正量を算出することを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記補正手段は、前記加重加算領域が複数存在する場合、前記補正量の算出を前記複数の前記加重加算領域に対して行い、前記複数の前記加重加算領域に対して算出された補正量を補間することで、各画素ごとの補正量を算出することを特徴とする請求項4に記載の画像処理装置。
【請求項7】
前記設定手段は、入力画像データの中で露光量の最も低い画像から生成される基準輝度画像の輝度値を参照し、前記輝度値が低い領域には、入力画像データの中から露光量の大きい画像データの合成比率が高くなるよう設定し、前記輝度値が大きい領域には、入力画像データの中から露光量の小さい画像データの合成比率が高くなるように設定することを特徴とする請求項1に記載の画像処理装置。
【請求項8】
請求項1乃至7のいずれか1項に記載の画像処理装置を備えることを特徴とする撮像装置。
【請求項9】
少なくとも2枚の入力画像データに対して画像処理を行う画像処理装置の制御方法であって、
前記入力画像データ間の位置ズレ量を検出する検出工程と、
少なくとも2枚の前記入力画像データを合成する際の合成比率を設定する設定工程と、
前記検出工程により検出された位置ズレ量と前記設定工程により設定された合成比率から補正量を算出し、前記入力画像データに前記補正量を用いて前記入力画像データ間の位置ズレを補正する補正工程と、
位置ズレが補正された前記入力画像データを前記合成比率で合成する合成工程と、を備え、
前記補正工程では、少なくとも2枚の前記入力画像データを加重加算する領域を優先させて前記位置ズレの補正を行うことを特徴とする制御方法。
【請求項10】
請求項9に記載の画像処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムコードを有するプログラム。
【請求項1】
少なくとも2枚の入力画像データに対して画像処理を行う画像処理装置であって、
前記入力画像データ間の位置ズレ量を検出する検出手段と、
少なくとも2枚の前記入力画像データを合成する際の合成比率を設定する設定手段と、
前記検出手段により検出された位置ズレ量と前記設定手段により設定された合成比率から補正量を算出し、前記入力画像データに前記補正量を用いて前記入力画像データ間の位置ズレを補正する補正手段と、
位置ズレが補正された前記入力画像データを前記合成比率で合成する合成手段と、を備え、
前記補正手段は、少なくとも2枚の前記入力画像データを加重加算する領域を優先させて前記位置ズレの補正を行うことを特徴とする画像処理装置。
【請求項2】
前記入力画像データは、互いに異なる露光条件で撮像された画像データであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記検出手段は、入力画像データを複数の領域に分割し、分割された領域ごとに入力画像データ間の相対的な位置ズレ量を表す動きベクトルを求めることを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記補正手段は、前記検出手段により分割された領域に対して合成比率が1:1に近い度合いを表す評価値を求め、前記評価値が設定値以下で設定個数以上隣接している分割された領域を加重加算ブロックと判定し、前記加重加算ブロックの集合を加重加算領域とみなし、前記加重加算領域に属する動きベクトルを優先的に使用して、前記補正量を算出することを特徴とする請求項1又は請求項3に記載の画像処理装置。
【請求項5】
入力画像データにおける主要被写体領域を検出する領域検出手段を備え、
前記補正手段は、前記領域検出手段により検出された主要被写体領域かつ前記加重加算領域に属する動きベクトルを優先的に使用して、前記補正量を算出することを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記補正手段は、前記加重加算領域が複数存在する場合、前記補正量の算出を前記複数の前記加重加算領域に対して行い、前記複数の前記加重加算領域に対して算出された補正量を補間することで、各画素ごとの補正量を算出することを特徴とする請求項4に記載の画像処理装置。
【請求項7】
前記設定手段は、入力画像データの中で露光量の最も低い画像から生成される基準輝度画像の輝度値を参照し、前記輝度値が低い領域には、入力画像データの中から露光量の大きい画像データの合成比率が高くなるよう設定し、前記輝度値が大きい領域には、入力画像データの中から露光量の小さい画像データの合成比率が高くなるように設定することを特徴とする請求項1に記載の画像処理装置。
【請求項8】
請求項1乃至7のいずれか1項に記載の画像処理装置を備えることを特徴とする撮像装置。
【請求項9】
少なくとも2枚の入力画像データに対して画像処理を行う画像処理装置の制御方法であって、
前記入力画像データ間の位置ズレ量を検出する検出工程と、
少なくとも2枚の前記入力画像データを合成する際の合成比率を設定する設定工程と、
前記検出工程により検出された位置ズレ量と前記設定工程により設定された合成比率から補正量を算出し、前記入力画像データに前記補正量を用いて前記入力画像データ間の位置ズレを補正する補正工程と、
位置ズレが補正された前記入力画像データを前記合成比率で合成する合成工程と、を備え、
前記補正工程では、少なくとも2枚の前記入力画像データを加重加算する領域を優先させて前記位置ズレの補正を行うことを特徴とする制御方法。
【請求項10】
請求項9に記載の画像処理装置の制御方法をコンピュータに実行させるためのコンピュータで読み取り可能なプログラムコードを有するプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9a】
【図9b】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9a】
【図9b】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2013−12999(P2013−12999A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2011−145592(P2011−145592)
【出願日】平成23年6月30日(2011.6.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願日】平成23年6月30日(2011.6.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]