画像合成装置、画像合成方法、画像合成プログラム及び記録媒体
【課題】被写体が移動した場合であっても適切な合成画像を生成することができる画像合成装置、画像合成方法及び画像合成プログラム並びに当該画像合成プログラムを格納した記録媒体を提供する。
【解決手段】露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する装置である。この装置は、画像入力部10、尤度算出部13、露出推定部14及び合成部16を備える。画像入力部10は、第1画像及び第2画像を入力する。尤度算出部13は、第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出する。露出推定部14は、動被写体尤度に基づいて第1画像と第2画像との露出条件を合わせる露出変換関数を推定する。合成部16は、露出変換関数を用いて第1画像及び第2画像を合成する。
【解決手段】露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する装置である。この装置は、画像入力部10、尤度算出部13、露出推定部14及び合成部16を備える。画像入力部10は、第1画像及び第2画像を入力する。尤度算出部13は、第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出する。露出推定部14は、動被写体尤度に基づいて第1画像と第2画像との露出条件を合わせる露出変換関数を推定する。合成部16は、露出変換関数を用いて第1画像及び第2画像を合成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像合成装置、画像合成方法、画像合成プログラム及び記録媒体に関するものである。
【背景技術】
【0002】
従来、画像合成装置として、ハイダイナミックレンジ合成(HDR(High Dynamic Range)合成)を行うものが知られている(特許文献1参照)。この装置は、異なる露出条件にて順次撮像された複数の画面を合成することによって、映像信号のダイナミックレンジを見かけ上拡大させている。これにより、逆光時などにおいて発生していた「白とび」又は「黒つぶれ」(輝度レベルが著しく高い又は低い部分)を解消する。また、この装置では、手ぶれによって生じる複数の画面間の撮像時の経時的な位置ずれに対応して、複数の画面の各々の座標変換を行った後にHDR合成を行う。具体的には、画像の動き情報を用いて、2つの画面の共通エリア部分を用いてHDR合成を行う。これにより、被写体に対する画面(撮像素子)の位置ずれ(画面ぶれ)を解消する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3110797号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、被写体が動体である場合には、順次撮像された複数の画像において被写体位置が異なる位置となる。このため、特許文献1記載の画像合成装置にあっては、被写体が移動して色が変化している場合であっても露出が異なることで色が変化しているものとして合成する。よって、適切な合成画像を生成できないおそれがある。当技術分野においては、被写体が移動した場合であっても適切な合成画像を生成することができる画像合成装置、画像合成方法及び画像合成プログラム並びに当該画像合成プログラムを格納した記録媒体が望まれている。
【課題を解決するための手段】
【0005】
すなわち、本発明の一側面に係る画像合成装置は、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する装置である。この装置は、入力部、尤度算出部及び合成部を備える。入力部は、第1画像及び第2画像を入力する。尤度算出部は、第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出する。合成部は、動被写体尤度を用いて第1画像及び第2画像を合成する。尤度算出部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。
【0006】
この画像構成装置では、第1画像と第2画像との露出を合わせる前に、第1画像と第2画像との差分に基づいて各画素における動被写体尤度を算出する。そして、動被写体尤度に基づいて第1画像及び第2画像を合成する。このように、動被写体尤度が考慮されるため、例えば被写体の動きで色が変化している可能性がある領域を考慮して合成することができる。さらに、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出することで、各画素の動被写体尤度を精度良く算出することができる。よって、適切な合成画像を生成することが可能となる。
【0007】
一実施形態においては、画像処理装置は、第1画像及び第2画像の画素値を正規化する正規化部をさらに備え、尤度算出部は、正規化された第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出してもよい。このように構成することで、各画素における動被写体尤度を適切に算出することができる。
【0008】
一実施形態においては、尤度算出部は、第1画像と第2画像との差分の信頼度、及び第1処理画像又は第2処理画像の画像サイズもしくは解像度に基づいて、解像度ごとに得られた差分を重み付けしてもよい。このように構成することで、各画素の動被写体尤度をさらに精度良く算出することができる。
【0009】
一実施形態においては、合成部は、第1画像又は第2画像の元の輝度値の大きさに基づいて、第1画像及び第2画像の画素値の合成比を示す輝度ベースマスクを生成してもよい。そして、合成部は、第1画像及び第2画像の差分に基づいて、第1画像及び第2画像の画素値の合成比を示す被写体ぶれマスクを生成してもよい。さらに、合成部は、輝度ベースマスク及び被写体ぶれマスクを結合させて、第1画像及び第2画像の画素値を合成する合成マスクを生成してもよい。
【0010】
このように構成することで、露出をあわせた状態で、第1画像及び第2画像の差分に基づいて、輝度値を基準に合成する輝度ベースマスクとは異なる被写体ぶれマスクを生成することができる。このため、被写体ぶれが発生する領域のみを異なる処理で合成させることが可能となる。よって、被写体ぶれを抑制させた合成画像を生成することができる。
【0011】
一実施形態においては、合成部は、第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出し、該動被写体尤度に基づいて被写体ぶれマスクを生成してもよい。このように構成することで、動被写体尤度に基づいて被写体ぶれが発生する領域を特定して被写体ぶれマスクを生成することができる。
【0012】
一実施形態においては、合成部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出し、該動被写体尤度に基づいて被写体ぶれマスクを生成してもよい。このように構成することで、各画素の動被写体尤度を精度良く算出することができる。
【0013】
一実施形態においては、合成部は、動被写体尤度が所定の閾値以下となる画素が隣接する領域を検出し、各領域に対して識別ラベルを付与し、領域ごとに被写体ぶれマスクを生成してもよい。このように構成することで、画像内で異なる動きをする動体が存在した場合であっても適切に合成することができる。
【0014】
一実施形態においては、合成部は、被写体ぶれマスクとして、第1画像及び第2画像のうち強制的に輝度値の低い画素値を選択させる第1マスク、又は、第1画像及び第2画像のうち強制的に輝度値の高い画素値を選択させる第2マスクを生成してもよい。このように構成することで、被写体が動いている可能性のある領域については、第1画像及び第2画像の何れか一方の画像を強制的に選択させることができる。よって、被写体が動くことで合成後の画像において被写体が2重や3重にずれて表示されることを回避することが可能となる。
【0015】
一実施形態においては、合成部は、輝度ベースマスクに対して、第1マスクを反転させたマスクを乗算し、又は、第2マスクを加算することで、合成マスクを生成してもよい。このように構成することで、被写体のぶれを適切に補正する合成マスクを生成することができる。
【0016】
一実施形態においては、画像処理装置は、第1画像と第2画像との間の画素の動き情報を取得する動き情報取得部をさらに備えてもよい。そして、尤度算出部は、動き情報に基づいて第1画像及び第2画像を補正し、補正後の第1画像及び第2画像を用いて各画素の動被写体尤度を算出してもよい。このように構成することで、撮像素子が被写体に対して相対的に動く場合であっても、撮像素子の動きを補正して各画素の動被写体尤度を算出することができる。
【0017】
一実施形態においては、第1画像は、露出条件の異なる画像同士が合成された画像であってもよい。このように構成することで、露出条件の異なる複数の画像を順次合成して最終的な合成画像を生成することができる。
【0018】
また、本発明の他の側面に係る画像処理方法は、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する方法である。この方法では、第1画像及び第2画像を入力する。そして、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。そして、動被写体尤度に基づいて第1画像及び第2画像を合成する。
【0019】
また、本発明のさらに他の側面に係る画像合成プログラムは、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させるプログラムである。このプログラムは、コンピュータを、入力部、尤度算出部及び合成部として動作させる。入力部は、第1画像及び第2画像を入力する。尤度算出部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。合成部は、動被写体尤度に基づいて第1画像及び第2画像を合成する。
【0020】
また、本発明のさらに他の側面に係る記録媒体は、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させる画像合成プログラムを記録した記録媒体である。このプログラムは、コンピュータを、入力部、尤度算出部及び合成部として動作させる。入力部は、第1画像及び第2画像を入力する。尤度算出部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。合成部は、動被写体尤度に基づいて第1画像及び第2画像を合成する。
【0021】
本発明の他の側面に係る画像合成方法、画像合成プログラム及び記録媒体によれば、上述した画像合成装置と同様の効果を奏する。
【発明の効果】
【0022】
本発明の種々の側面及び実施形態によれば、被写体が移動した場合であっても適切な合成画像を生成することができる画像合成装置、画像合成方法及び画像合成プログラム並びに当該画像合成プログラムを格納した記録媒体が提供される。
【図面の簡単な説明】
【0023】
【図1】一実施形態に係る画像合成装置を搭載した携帯端末の機能ブロック図である。
【図2】図1の画像合成装置が搭載される携帯端末のハードウェア構成図である。
【図3】図1に示す画像合成装置の前処理動作を示すフローチャートである。
【図4】動き検出を説明する概要図である。
【図5】差分画像を説明する概要図である。
【図6】多重解像度を用いて差分画像を導出する例を説明する概要図である。
【図7】露出変換関数の一例を示すグラフである。
【図8】輝度変換関数を説明する概要図である。
【図9】図1に示す画像合成装置の合成動作を示すフローチャートである。
【図10】合成処理の流れを説明する概要図である。
【図11】合成マスクを説明する概要図である。(A)は、露出変換関数の一例を示すグラフである。(B)は、露出変換関数同士を繋ぎ合わせる際の重みの一例を示すグラフである。
【図12】輝度ベースマスクを説明する概要図である。(A)は、入力画像の一例である。(B)は、輝度ベースマスクの一例である。
【図13】差分画像の被写体ぶれ領域のラベリングを説明する概要図である。(A)は、差分画像の一例である。(B)は、ラベリングした差分画像の一例である。
【図14】被写体ぶれマスクの生成処理の流れを説明する概要図である。
【図15】合成マスクの生成処理の流れを説明する概要図である。
【発明を実施するための形態】
【0024】
以下、添付図面を参照して本発明の実施形態について説明する。なお、各図において同一又は相当部分には同一の符号を付し、重複する説明を省略する。
【0025】
本実施形態に係る画像合成装置は、露出条件の異なる複数の画像を合成して一つの合成画像を生成する装置である。この画像合成装置は、例えば、異なる露出条件で順次撮像された複数の画像を合成して、映像信号のダイナミックレンジを見かけ上拡大させるHDR合成を行う場合に採用される。本実施形態に係る画像合成装置は、例えば、携帯電話、デジタルカメラ、PDA(Personal Digital Assistant)等、リソースに制限のあるモバイル端末に好適に搭載されるものであるが、これらに限られるものではなく、例えば通常のコンピュータシステムに搭載されてもよい。なお、以下では、説明理解の容易性を考慮し、本発明に係る画像合成装置の一例として、カメラ機能を備えた携帯端末に搭載される画像合成装置を説明する。
【0026】
図1は、本実施形態に係る画像合成装置1を備える携帯端末2の機能ブロック図である。図1に示す携帯端末2は、例えばユーザにより携帯される移動端末であり、図2に示すハードウェア構成を有する。図2は、携帯端末2のハードウェア構成図である。図2に示すように、携帯端末2は、物理的には、CPU(Central Processing Unit)100、ROM(Read Only Memory)101及びRAM(Random Access Memory)102等の主記憶装置、カメラ又はキーボード等の入力デバイス103、ディスプレイ等の出力デバイス104、ハードディスク等の補助記憶装置105などを含む通常のコンピュータシステムとして構成される。後述する携帯端末2及び画像合成装置1の各機能は、CPU100、ROM101、RAM102等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU100の制御の元で入力デバイス103及び出力デバイス104を動作させるとともに、主記憶装置や補助記憶装置105におけるデータの読み出し及び書き込みを行うことで実現される。なお、上記の説明は携帯端末2のハードウェア構成として説明したが、画像合成装置1がCPU100、ROM101及びRAM102等の主記憶装置、入力デバイス103、出力デバイス104、補助記憶装置105などを含む通常のコンピュータシステムとして構成されてもよい。また、携帯端末2は、通信モジュール等を備えてもよい。
【0027】
図1に示すように、携帯端末2は、カメラ20、画像合成装置1及び表示部21を備えている。カメラ20は、画像を撮像する機能を有している。カメラ20として、例えばCMOSの画素センサ等が用いられる。カメラ20は、例えばユーザ操作等により指定されたタイミングから所定の間隔で繰り返し撮像する連続撮像機能を有している。すなわち、カメラ20は、一枚の静止画像だけでなく複数毎の静止画像(連続するフレーム画像)を取得する機能を有している。さらに、カメラ20は、連続する各フレーム画像の露出条件を変更して撮像する機能を有している。すなわち、カメラ20によって連続撮像された各画像は、それぞれ露出条件の異なる画像となる。カメラ20は、例えば撮像されたフレーム画像を撮像の度に画像合成装置1へ出力する機能を有している。
【0028】
画像合成装置1は、画像入力部10、前処理部11、動き補正部15及び合成部16を備えている。
【0029】
画像入力部10は、カメラ20により撮像されたフレーム画像を入力する機能を有している。画像入力部10は、例えばカメラ20により撮像されたフレーム画像を撮像の度に入力する機能を有している。また、画像入力部10は、入力フレーム画像を、携帯端末2に備わる記憶装置に保存する機能を有している。
【0030】
前処理部11は、HDR合成前の前処理を行う。前処理部11は、動き情報取得部12、尤度算出部13及び露出推定部14を備えている。
【0031】
動き情報取得部12は、画像間の画素の動き情報を取得する機能を有している。例えば、入力フレーム画像を第1画像及び第2画像とすると、第1画像及び第2画像間の画素の動き情報を取得する。動き情報としては、例えば動きベクトルが用いられる。また、動き情報取得部12は、3以上の入力画像が画像入力部10により入力された場合には、入力画像を露出順にソートし、露出条件の近い入力画像間で動き情報を取得してもよい。露出条件の近い画像同士を比較して動きを検出することにより、画像間の露出の差によって動きの検出精度が低下することを回避することができる。そして、動き情報取得部12は、複数の入力画像の中から、動き情報を合わせる基準画像を選択してもよい。基準画像としては、例えば複数の入力画像の中で最も有効画素が多い画像を採用する。ここで、有効画素とは、黒つぶれ又は白飛びしていない画素である。黒つぶれ又は白飛びは、輝度値を基準として判定される。また、動き情報取得部12は、2つの入力画像を用いて動き情報を取得する場合には、2つの入力画像のうち露出の高い入力画像から特徴点を抽出し、それに対する対応点を露出の低い画像から求めてもよい。このように動作することで、露出の低い画像においては特徴点として抽出された点が露出の高い画像においては白飛びしていることにより、動き情報が取得できないことを回避することができる。なお、ジャイロセンサ等から動き情報を取得してもよい。動き情報取得部12は、動き情報を尤度算出部13へ出力する機能を有している。
【0032】
尤度算出部13は、各画素における被写体の動きの尤度(動被写体尤度)を算出する機能を有している。動被写体尤度が大きいほど、被写体に動きがある可能性が高く、合成画像がぶれる領域となる可能性が高いことを意味する。尤度算出部13は、動き情報を用いて入力画像間の画面の動きを補正する。その後、尤度算出部13は、2つの入力画像において対応する画素の画素値を正規化する。例えば、尤度算出部13は、近傍画素の画素値に基づいてLocal Ternary Patterns(LTP)を求める。画素値としては、RGB3色が用いられ、近傍画素としては24近傍が用いられる。そして、尤度算出部13は、正規化された画像間の差分を用いて動被写体尤度を算出する。例えば、正規化された画素値の差分、すなわち注目画素のLTPにおける符号の不一致割合を、注目画素の動被写体尤度として算出する。
【0033】
また、尤度算出部13は、2つの入力画像を多重解像度化して動被写体尤度を算出してもよい。例えば、尤度算出部13は、各入力画像(第1画像及び第2画像)の解像度をそれぞれ段階的に変更することで、解像度の異なる複数の画像(第1処理画像及び第2処理画像)を作成する。そして、尤度算出部13は、同一の解像度において、第1処理画像及び第2処理画像の差分画像を作成する。この差分画像とは、第1処理画像と第2処理画像との差分であり、具体的には画素値の差分である。そして、尤度算出部13は、解像度ごとに得られた差分画像を重み付けすることによって各画素の動被写体尤度を算出する。重み(信頼度)としては、各画素のLTPにおける符号の不一致割合が用いられる。例えば、LTPにおいて、有意に差があるペアの数が用いられる。また、重みは、第1処理画像又は第2処理画像の画像サイズ又は解像度によってさらに重み付けされてもよい。すなわち、画像サイズが大きいほど又は解像度が大きいほど、重みを大きくしてもよい。尤度算出部13は、各画素の動被写体尤度を露出推定部14へ出力する機能を有している。
【0034】
露出推定部14は、入力画像間の露出条件を合わせる露出変換関数を推定する機能を有している。露出変換関数とは、各入力画像の露出を基準画像相当に露出変換するための関数である。露出推定部14は、3以上の入力画像が入力された場合には、露出条件の近い入力画像間で露出条件をあわせてもよい。露出条件の近い画像同士を比較して露出を合わせることにより、画像間の露出の差によって推定の精度が低下することを回避することができる。
【0035】
露出推定部14は、例えば、動き情報を用いて入力画面間の動きを補正する。そして、動き補正後の2つの入力画像において、同一の箇所から輝度値を組としてサンプリングし、その関係をプロットする。入力画像の座標としては例えばHalton数列が用いられる。なお、露出推定部14は、所定の値以上の輝度値や所定の値以下の輝度値をサンプリング点として採用しなくてもよい。例えば、10〜245の範囲に含まれる輝度値をサンプリング点として採用する。露出推定部14は、例えば、プロットの結果をフィッティングすることにより、露出変換関数を推定する。例えば、第1画像のサンプリング点iにおける元の輝度値をKi、露出変換関数をf(Ki)、第2画像のサンプリング点iにおける元の輝度値をUiとした場合、以下の誤差関数eを用いて、Gauss−Newton法によりフィッティングしてもよい。
【数1】
【0036】
なお、露出推定部14は、各画素の動被写体尤度に基づいて、露出変換関数を導出するためのサンプリングを行う。露出推定部14は、例えば、各画素の動被写体尤度に基づいてサンプリング点を選択する。例えば、露出推定部14は、段階的に閾値を設けて、動被写体尤度の小さい画素から輝度値をサンプリングする。また、露出推定部14は、動被写体尤度に基づいて、サンプリング点に重みを付けてもよい。例えば、以下の誤差関数eを最小化させてフィッティングしてもよい。
【数2】
式2において、wiは重みである。ここで、動被写体尤度が高い画素ほど、重みwiを小さく設定する。このように、露出推定部14が各画素の動被写体尤度に基づいて露出変換関数を算出することで、信頼度の低いサンプリング点のデータほど露出変換関数の導出に影響を与えないようにすることができる。なお、露出変換関数は、変換後の入力画像が表現可能な範囲に収まるように変更されてもよい。
【0037】
動き補正部15は、動き情報を用いて入力画面間の動きを補正する機能を有している。合成部16は、合成マスクを用いて入力画像同士あるいは、既に合成された画像と入力画像とを合成する。合成マスクは、画像同士を合成(αブレンド)する際の合成比(重み)を画像化したものである。合成部16は、3以上の入力画像がある場合には、まず合成マスクに従って2つの入力画像を合成し、合成画像と残りの入力画像との合成マスクを生成して合成を行う。合成部16は、輝度ベースマスク及び被写体ぶれマスクを結合して合成マスクを生成する。輝度ベースマスクは、画像同士を合成する際の重みを輝度値に基づいて決定することで、白飛びや黒つぶれの領域を合成に用いることを回避するためのマスクである。被写体ぶれマスクは、被写体が移動する画像を合成した際に、被写体が2重3重に重なって表示される現象(ゴースト現象)を回避するためのマスクである。
【0038】
合成部16は、入力画像の元の輝度値に基づいて重みを算出し、輝度ベースマスクを生成する。重みは、例えば以下の算出式で求める。
【数3】
上記算出式により、重みが適切に決定されるとともに、輝度的な不連続性が軽減される。なお、空間的な不連続性を軽減するために、合成マスクに対してぼかし処理を施してもよい。
【0039】
合成部16は、入力画像間の差分に基づいて重みを算出し、被写体ぶれマスクを生成する。合成部16は、入力画像間の画素値の差分から、動被写体尤度を算出する。入力画像間の画素値の差分及び動被写体尤度については、上述した尤度算出部13と同様に動作することで得ることができる。そして、尤度算出部13は、動被写体尤度が所定の閾値以下となる画素が隣接する被写体ぶれ領域を検出し、各被写体ぶれ領域に対して識別ラベルを付与し、被写体ぶれ領域ごとに被写体ぶれマスクを生成する。なお、所定の閾値は、要求仕様に応じて適宜変更可能である。閾値を大きく設定すると、連続領域を抽出しやすくすることができる。被写体ぶれ領域ごとにマスクを生成することにより、被写体ぶれ領域ごとに白飛び領域あるいは黒つぶれ領域を回避するように情報量の多い画像から画素を選択することができる。すなわち、この被写体ぶれマスクとしては、合成する画像同士のうち強制的に輝度値の低い画素値を選択させるlo_mask(第1マスク)、又は、合成する画像同士のうち強制的に輝度値の高い画素値を選択させるhi_mask(第2マスク)が存在する。合成部16は、基本的には、情報量の多い高露出の画像から画素値を選択させる第2マスクを生成する。しかしながら、合成部16は、高露出の画像において被写体ぶれ領域が白飛び領域に影響される場合には、第1マスクを生成する。具体的には、以下の何れかの条件を満たす場合には第1マスクを生成する。第1の条件としては、合成する2つの画像のうち、高露出の画像の白飛びの面積が低露出の画像の黒つぶれ領域の面積よりも大きい場合である。第2の条件としては、合成する2つの画像のうち高露出の画像において、被写体ぶれ領域内の白飛び領域の面積が10%以上の場合である。なお、合成する2つの画像のうち高露出の画像において、被写体ぶれ領域と隣接する領域が白飛び領域である場合を条件としてもよい。
【0040】
合成部16は、輝度ベースマスク及び被写体ぶれマスクを結合させて合成マスクを生成する。例えば、合成部16は、輝度ベースマスクに対して、第1マスクを反転させたマスクを乗算する。また、合成部16は、輝度ベースマスクに対して、第2マスクを加算する。合成部16は、全ての入力画像を合成し、最終的な合成画像を表示部21へ出力する。表示部21は、合成画像を表示する。表示部21として例えばディスプレイ装置が用いられる。
【0041】
次に、画像合成装置1の動作を説明する。図3は、HDR合成の前処理を説明するフローチャートである。図3に示す制御処理は、例えばユーザによってHDR合成モードが選択され、カメラ20が複数の画像を連続撮像した場合に開始する。
【0042】
まず、画像入力部10が画像フレームを入力する(S10)。以下では、説明理解の容易性を考慮して、5つの入力画像I0〜I4を入力したものとして説明する。S10の処理が終了すると、露出順ソート処理へ移行する(S12)。
【0043】
S12の処理では、動き情報取得部12が入力画像I0〜I4を露出順にソートする。動き情報取得部12は、例えば輝度値の平均値を用いてソートする。ここでは、入力画像I0〜I4の数字が小さくなるほど輝度値が小さいものとする。この場合、入力画像I0〜I4は、数字の順にソートされる。S12の処理が終了すると、動き情報取得処理へ移行する(S14)。
【0044】
S14の処理では、動き情報取得部12が、入力画像I0〜I4のそれぞれの画像間の動き情報を取得する。図4は、動き情報の取得処理を説明する概要図である。図4に示すように、入力画像I0〜I4が左から右に向けて順に平均輝度値が大きくなるように並べられているとする。まず、動き情報取得部12は、入力画像I0〜I4の中から基準画像を設定する。ここでは、入力画像I2を基準画像とする。次に、露出条件の近い入力画像同士の動き情報を取得する(例えば、入力画像I0と入力画像I1、入力画像I1と入力画像I2等)。動き情報取得部12は、2つの入力画像のうち、露出の高い入力画像で特徴点を抽出して、抽出された特徴点に対する対応点を露出の低い入力画像から抽出する。この動き情報によって、露出条件の近い入力画像同士を同一次元の座標に変換する変換行列を求めることができる。なお、図4では、露出条件の近い入力画像同士のうち、露出の低い画像を露出の高い画像へあわせるための変換行列m10,m21,m32,m43を示している。次に、変換行列m10,m21,m32,m43を用いて、基準画像I2以外の他の入力画像I0,I1,I3,I4の座標を基準画像I2相当の座標へ変形させる変換行列を算出する。図4に示すように、入力画像I0を基準画像I2へ変換させる変換行列は、m10*m21である。入力画像I1を基準画像I2へ変換させる変換行列は、m10である。入力画像I3を基準画像I2へ変換させる変換行列は、(m32)−1である。入力画像I4を基準画像I2へ変換させる変換行列は、(m32*m43)−1である。以下では変換後の入力画像をI0’〜I4’として説明する。S14の処理が終了すると、動被写体尤度算出処理へ移行する(S16)。
【0045】
S16の処理では、尤度算出部13が、入力画像I0’〜I4’のそれぞれの画像間の動被写体尤度を算出する。図5は、入力画像I0’と入力画像I1’との画像間における動被写体尤度を算出する例である。なお、図5では、画素値としてR値を用いる場合を示している。図5に示すように、尤度算出部13は、入力画像I0’の注目画素(R値=42)の8近傍の画素値(R値)を取得する。そして、注目画素の画素値と8近傍の画素値を用いて正規化する。例えば、LTPを用いる。注目画素の画素値と8近傍の画素値との差が±5の範囲であれば0、+5より大きい場合には1、−5より小さい場合には−1とする。尤度算出部13は、入力画像I1’についても、同様に正規化する。図中では、入力画像I0’の注目画素に対応する入力画像I1’の画素において正規化している。次に、正規化された画素の画素値を比較すると、差分が生じていることがわかる。差分の大きさ(符号の不一致度合い)に応じて当該画素の色を黒から白へ変化させた画像として表したものが差分画像Xである。この差分画像は、各画素の動被写体尤度が画像化されたものである。なお、8近傍に限定されることはなく、24近傍であってもよい。また、R値のみに限られずG値及びB値についても同様に処理してもよい。
【0046】
差分画像Xの領域C1に示す平滑領域の動被写体尤度の精度を向上させるために、尤度算出部13は、多重解像度を用いて動被写体尤度を求めてもよい。図6は、多重解像度を用いて動被写体尤度を求める一例である。まず、尤度算出部13は、入力画像I0’と入力画像I1’との解像度を段階的に変更させた複数の画像を生成する。そして、同一の解像度同士で差分画像を生成する。この差分画像は、単純に画素値を差し引いたものである。図6では、入力画像I0’と入力画像I1’とを6段階に多重化した場合を示している。それぞれの差分画像がX1〜X6であり、数字が大きくなるほど低い解像度の差分画像となる。また、解像度が低いほど画像サイズが小さくなる。この差分画像を信頼度で重み付けして最終的な差分画像を算出する。信頼度は、例えば、上述したLTPの差分において有意な差のあるペアの数に画像サイズ(又は解像度)を乗算したものを用いる。例えば、図5に示すLTPの場合には有意な差のあるペアの数は1となる。このように、画素ごとにペアの数と画像サイズとを掛けあわせて、差分画像X1〜X6に対応する重み画像(重みを画像化したもの)を算出する。そして、差分画像X1〜X6と重み画像とを用いて最終的な差分画像を算出する。尤度算出部13は、上述した手法と同様の手法で、入力画像I1’〜I4’までの差分画像を算出する。S16の処理が終了すると、露出変換関数推定処理へ移行する(S18)。
【0047】
S18の処理では、露出推定部14が露出変換関数を推定する。露出推定部14は、変換前の輝度値をx、変換後の輝度値をyとすると露出変換関数を以下の数式で表すことができる。
【数4】
ここで、(a,b)は露出変換パラメータである。露出変換パラメータ(a,b)を導出することで露出変換関数を求めることができる。以下では、動き補正後の入力画像I0’と入力画像I1’との露出変換関数を求める場合を説明する。露出推定部14は、入力画像の点(x,y)において、露出の低い入力画像I0’の輝度値と露出の低い入力画像I1’の輝度値の組みをいくつかサンプリングして、その関係をプロットする。ここで、S16の処理で取得した差分画像に基づいて、サンプリングする点を選択する。例えば、動被写体尤度の高い領域からはサンプリングしないように設定する。すなわち動被写体尤度の低いものからサンプリングするように設定する。そして、例えば動被写体尤度が高いほど低い重みを割り当てて、式2を用いて露出変換関数を推定する。これにより、例えば図7に示すようなフィッティングが行われる。尤度算出部13は、上述した手法と同様の手法で、入力画像I1’〜I4’間の露出変換関数を推定する。なお、輝度値が0に近いデータ又は255に近いデータを除いてもよい。
【0048】
図8は、上記の露出変換関数の推定処理を説明する概要図である。なお、図8では、露出条件の近い入力画像同士のうち、露出の低い画像を露出の高い画像へあわせるための露出変換パラメータ(a10,b10)、(a21,b21)、(a32,b32)、(a43,b43)を示している。最終的な合成画像が表現可能な範囲に収まるように、最も露出の低い入力画像I0’の露出変換パラメータ(A0,B0)のA0を1.0に設定することで、変換結果が1.0を超えないようにしてもよい。ここでは、入力画像I0’の露出変換後の画像を、入力画像I0’’として表示している。また、最も露出の低い入力画像I0’に対する基準画像I2’の露出変換パラメータを(A2,B2)とすると、A0を1.0に設定すると同時にB2を1.0とすることで、ゲインが1/A2のときに色味が入力画像と等しくなるように設定してもよい。尤度算出部13は、上述した処理をRGBチャネルごとに別々に行う。S18の処理が終了すると図3に示す前処理を終了する。
【0049】
以上で図3に示す制御処理を終了する。図3に示す制御処理を実行することで、露出変換関数を推定する前に、被写体ぶれを検出することで、被写体ぶれ領域からサンプリングすることを回避したり、被写体ぶれ領域からサンプリングされたデータの影響を重み付けにより小さくすることができる。このため、露出変換関数を精度良く推定することができる。また、従来のHDR技術であれば、被写体ぶれの補正は、露出合わせが行われていないと正確に行うことができず、また逆に露出合わせは被写体ぶれの修正が行われていないと正確にできない。しかし、露出変換関数を推定する前に簡易的に被写体ぶれ(被写体の動き)を検出することで、上記デットロック関係を解消することができる。
【0050】
次に、画像合成装置1の合成動作を説明する。図9は、HDR合成を説明するフローチャートである。図9に示す制御処理は例えば図3に示す制御処理が終了すると開始する。
【0051】
図9に示すように、動き補正部15が実際に動きを補正する(S20)。この処理では、図3のS14の処理と同様に、動き補正部15が、変換行列を用いて、露出変換後の入力画像I0’’〜I4’’の動きを補正する。なお、要求される精度に応じてサブピクセル補間アルゴリズム等を用いることができるようにしてもよい。S20の処理が終了すると、輝度ベースマスク生成処理及び被写体ぶれ領域抽出処理へ移行する(S22及びS24)。
【0052】
S22の処理では、合成部16が輝度ベースマスクを生成する。図10は、合成処理の流れを説明する概要図である。図10に示すように、露出の低い入力画像I0’’から順に、入力画像I1’’〜I4’’を置き換えていくことで合成する。すなわち、最初は、入力画像I0’’に対して入力画像I1’’をどの程度合成させるかを定める輝度ベースマスクを生成する。この輝度ベースマスクは、入力画像I1’’の元の輝度値から重みを算出する。例えば、白飛び領域の付近の重みを0とする。このように重みを設定して、露出の低い画像へ露出の高い画像を重ねるように合成させることで、対象のピクセルに対して情報量の多い入力画像を必ず選択させることができる。図11の(A)は、入力輝度に対するピクセル値の関係を示すグラフである。図11の(A)に示すように、関数f0〜f3は、輝度値に基づいてどちらの画像の画素値を採用するかを示すグラフである。関数f0〜f3は、数字が大きくなるほど露出が大きい画像に適用されるものである。例えば、最も露出の低い入力画像I0’’が入力されると、関数f0が適用されて全ての画素値が採用される。次に、入力画像I1’’が入力されると、関数f0と関数f1とが適用される。このため、S0〜S5の輝度値の範囲では、入力画像I1’’が採用され、S6以上の輝度値の範囲では、入力画像I0’’が採用される。S5〜S6の輝度値の範囲は、(B)に示す重みでブレンドされた合成値で採用される。なお、便宜上γ補正は省略している。次に入力画像I2’’が入力されると、関数f0〜f2が適用される。このため、S0〜S3の輝度値の範囲では、入力画像I2’’が採用され、S4〜S5の輝度値の範囲では、入力画像I1’’が採用され、S6以上の輝度値の範囲では、入力画像I0’’が採用される。S3〜S4及びS5〜S6の輝度値の範囲は、(B)に示す重みでブレンドされた合成値で採用される。次に入力画像I3’’が入力されると、関数f0〜f3が適用される。このため、S0〜S1の輝度値の範囲では、入力画像I3’’が採用され、S2〜S3の輝度値の範囲では、入力画像I2’’が採用され、S4〜S5の輝度値の範囲では、入力画像I1’’が採用され、S6以上の輝度値の範囲では、入力画像I0’’が採用される。S1〜S2、S3〜S4及びS5〜S6の輝度値の範囲は、(B)に示す重みでブレンドされた合成値で採用される。このように、露出の高い画像が優先的に採用される。また、白とび領域部分については露出の低い画像が採用されるとともに、境界部分を滑らかにブレンドする。上記図11の(A)に示すグラフを画像化した輝度ベースマスクの一例を図12に示す。図12の(A)は入力画像を示し、(B)は当該入力画像の輝度ベースマスクである。図12の(B)では、100%入力画像の画素値を利用する場合には白とし、100%入力画像の画素値を利用しない場合には黒として表現している。S22の処理が終了すると、合成マスク生成処理へ移行する(S32)。
【0053】
一方、S24の処理では、合成部16が被写体ぶれ領域を抽出する。例えば、合成部16が、図3のS16の処理と同様に差分画像を算出し、動被写体尤度が所定値以上の領域を被写体ぶれ領域として抽出する。図13の(A)は、被写体ぶれ領域を含む差分画像の一例である。S24の処理が終了すると、ラベリング処理へ移行する(S26)。
【0054】
S26の処理では、合成部16が被写体ぶれ領域をラベリングする。合成部16は、連続する被写体ぶれ領域に対して一つのラベルRnを設定する。図13の(B)は、連続領域をラベリングした例である。S26の処理が終了すると、各領域の基準画像の選択処理へ移行する(S28)。
【0055】
S28の処理では、合成部16が被写体ぶれ領域ごとに基準画像を設定する。合成部16は、基準画像として基本的に高露出の画像を優先させる。例えば、入力画像I0’’と入力画像I1’’とを合成する場合には、基準画像として入力画像I1’’が選択される。ただし、入力画像I1’’において被写体ぶれ領域が白飛び領域に影響される場合には、基準画像として入力画像I0’’が選択される。S28の処理が終了すると、被写体ぶれマスク生成処理へ移行する(S30)。
【0056】
S30の処理では、合成部16が被写体ぶれ領域ごとに被写体ぶれマスクを生成する。合成部16は、基準画像として高露出の画像を優先させる場合には第2マスクを生成する。一方、基準画像として低露出の画像を優先させる場合には第1マスクを生成する。図14は、S24〜S30の一連の処理を説明する概要図である。図14に示すように、入力画像I0’’と入力画像I1’’とを合成する際に、差分画像Xを求め、差分画像の領域ごとに、第1マスク(lo_mask)又は第2マスク(hi_mask)が生成される。すなわち、被写体が動く領域については、被写体ぶれマスクを用いることで一枚の画像のみから画素値を入力させることで、上述したゴースト現象を回避することができる。S30の処理が終了すると、合成マスク生成処理へ移行する(S32)。
【0057】
S32の処理では、合成部16が輝度ベースマスク及び被写体ぶれマスクに基づいて合成マスクを生成する。図15は、合成マスクの生成処理を説明する概要図である。図15に示すように、lo_maskを反転させた画像を輝度ベースマスクに乗算する。また、hi_maskを輝度ベースマスクに加算する。このように結合させることで、合成マスクが生成される。S32の処理が終了すると、合成処理へ移行する(S34)。
【0058】
S34の処理では、合成部16がS32の処理で作成された合成マスクに従って合成処理を行う。なお、合成済み画像の輝度値P0と露出変換関数を適用させた入力画像の輝度値P1を重みaで合成する場合、合成後の輝度値P2は以下の数式で求めることができる。
【数5】
このとき、露出の最も低い画像については全領域をそのまま合成する。S34の処理が終了すると、入力画像確認処理へ移行する(S36)。
【0059】
S36の処理では、合成部16が全ての入力画像を合成したか否かを判定する。全ての入力画像を合成していない場合には、S22及びS24の処理へ移行する。そして、例えば、図10に示すように、入力画像I0’’と入力画像I1’’との合成画像O0と、新たな入力画像I0’’との合成処理が行われる。一方、全ての入力画像を合成した場合には、図9に示す制御処理を終了する。
【0060】
図9に示す制御処理を実行することで、被写体ぶれの補正されたHDR合成画像が生成される。
【0061】
次に、携帯端末(コンピュータ)2を上記画像合成装置1として機能させるための画像合成プログラムを説明する。
【0062】
画像合成プログラムは、メインモジュール、入力モジュール及び演算処理モジュールを備えている。メインモジュールは、画像処理を統括的に制御する部分である。入力モジュールは、入力画像を取得するように携帯端末2を動作させる。演算処理モジュールは、動き情報取得モジュール、尤度算出モジュール、露出推定モジュール、動き補正モジュール及び合成モジュールを備えている。メインモジュール、入力モジュール及び演算処理モジュールを実行させることにより実現される機能は、上述した画像合成装置1の画像入力部10、動き情報取得部12、尤度算出部13、露出推定部14、動き補正部15及び合成部16の機能とそれぞれ同様である。
【0063】
画像合成プログラムは、例えば、ROM等の記録媒体または半導体メモリによって提供される。また、画像合成プログラムは、データ信号としてネットワークを介して提供されてもよい。
【0064】
以上、本実施形態に係る画像合成装置1、画像合成方法及び画像合成プログラムによれば、第1画像と第2画像との露出を合わせる前に、第1画像と第2画像との差分に基づいて各画素における被写体の動きの尤度を算出する。そして、被写体の動きの尤度に基づいて第1画像と第2画像との露出条件を合わせる露出変換関数を推定する。このように、露出を合わせる際に被写体の動きの尤度が考慮されるため、例えば被写体の動きで色が変化している可能性がある領域を除いて露出を合わせることができる。よって、適切な合成画像を生成することが可能となる。さらに、被写体ぶれマスクを用いて被写体ぶれ(ゴースト的な表示)の発生を回避し、クリアな画像とすることができる。
【0065】
なお、上述した実施形態は本発明に係る画像合成装置の一例を示すものである。本発明に係る画像合成装置は、実施形態に係る画像合成装置1に限られるものではなく、各請求項に記載した要旨を変更しない範囲で、実施形態に係る画像合成装置を変形し、又は他のものに適用したものであってもよい。
【0066】
例えば、上述した各実施形態では、カメラ20がフレーム画像を取得する例を説明したが、別の機器からネットワークを介して送信された画像であってもよい。また、合成画像を表示せずに記録のみする場合には、表示部21を備えなくてもよい。
【0067】
また、上述した各実施形態に係る画像合成装置1を、手ぶれ補正装置とともに動作させてもよい。
【符号の説明】
【0068】
1…画像合成装置、10…画像入力部(入力部)、12…動き情報取得部、13…尤度算出部、14…露出推定部、15…動き補正部、16…合成部。
【技術分野】
【0001】
本発明は、画像合成装置、画像合成方法、画像合成プログラム及び記録媒体に関するものである。
【背景技術】
【0002】
従来、画像合成装置として、ハイダイナミックレンジ合成(HDR(High Dynamic Range)合成)を行うものが知られている(特許文献1参照)。この装置は、異なる露出条件にて順次撮像された複数の画面を合成することによって、映像信号のダイナミックレンジを見かけ上拡大させている。これにより、逆光時などにおいて発生していた「白とび」又は「黒つぶれ」(輝度レベルが著しく高い又は低い部分)を解消する。また、この装置では、手ぶれによって生じる複数の画面間の撮像時の経時的な位置ずれに対応して、複数の画面の各々の座標変換を行った後にHDR合成を行う。具体的には、画像の動き情報を用いて、2つの画面の共通エリア部分を用いてHDR合成を行う。これにより、被写体に対する画面(撮像素子)の位置ずれ(画面ぶれ)を解消する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3110797号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、被写体が動体である場合には、順次撮像された複数の画像において被写体位置が異なる位置となる。このため、特許文献1記載の画像合成装置にあっては、被写体が移動して色が変化している場合であっても露出が異なることで色が変化しているものとして合成する。よって、適切な合成画像を生成できないおそれがある。当技術分野においては、被写体が移動した場合であっても適切な合成画像を生成することができる画像合成装置、画像合成方法及び画像合成プログラム並びに当該画像合成プログラムを格納した記録媒体が望まれている。
【課題を解決するための手段】
【0005】
すなわち、本発明の一側面に係る画像合成装置は、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する装置である。この装置は、入力部、尤度算出部及び合成部を備える。入力部は、第1画像及び第2画像を入力する。尤度算出部は、第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出する。合成部は、動被写体尤度を用いて第1画像及び第2画像を合成する。尤度算出部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。
【0006】
この画像構成装置では、第1画像と第2画像との露出を合わせる前に、第1画像と第2画像との差分に基づいて各画素における動被写体尤度を算出する。そして、動被写体尤度に基づいて第1画像及び第2画像を合成する。このように、動被写体尤度が考慮されるため、例えば被写体の動きで色が変化している可能性がある領域を考慮して合成することができる。さらに、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出することで、各画素の動被写体尤度を精度良く算出することができる。よって、適切な合成画像を生成することが可能となる。
【0007】
一実施形態においては、画像処理装置は、第1画像及び第2画像の画素値を正規化する正規化部をさらに備え、尤度算出部は、正規化された第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出してもよい。このように構成することで、各画素における動被写体尤度を適切に算出することができる。
【0008】
一実施形態においては、尤度算出部は、第1画像と第2画像との差分の信頼度、及び第1処理画像又は第2処理画像の画像サイズもしくは解像度に基づいて、解像度ごとに得られた差分を重み付けしてもよい。このように構成することで、各画素の動被写体尤度をさらに精度良く算出することができる。
【0009】
一実施形態においては、合成部は、第1画像又は第2画像の元の輝度値の大きさに基づいて、第1画像及び第2画像の画素値の合成比を示す輝度ベースマスクを生成してもよい。そして、合成部は、第1画像及び第2画像の差分に基づいて、第1画像及び第2画像の画素値の合成比を示す被写体ぶれマスクを生成してもよい。さらに、合成部は、輝度ベースマスク及び被写体ぶれマスクを結合させて、第1画像及び第2画像の画素値を合成する合成マスクを生成してもよい。
【0010】
このように構成することで、露出をあわせた状態で、第1画像及び第2画像の差分に基づいて、輝度値を基準に合成する輝度ベースマスクとは異なる被写体ぶれマスクを生成することができる。このため、被写体ぶれが発生する領域のみを異なる処理で合成させることが可能となる。よって、被写体ぶれを抑制させた合成画像を生成することができる。
【0011】
一実施形態においては、合成部は、第1画像及び第2画像の差分に基づいて、各画素における動被写体尤度を算出し、該動被写体尤度に基づいて被写体ぶれマスクを生成してもよい。このように構成することで、動被写体尤度に基づいて被写体ぶれが発生する領域を特定して被写体ぶれマスクを生成することができる。
【0012】
一実施形態においては、合成部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出し、該動被写体尤度に基づいて被写体ぶれマスクを生成してもよい。このように構成することで、各画素の動被写体尤度を精度良く算出することができる。
【0013】
一実施形態においては、合成部は、動被写体尤度が所定の閾値以下となる画素が隣接する領域を検出し、各領域に対して識別ラベルを付与し、領域ごとに被写体ぶれマスクを生成してもよい。このように構成することで、画像内で異なる動きをする動体が存在した場合であっても適切に合成することができる。
【0014】
一実施形態においては、合成部は、被写体ぶれマスクとして、第1画像及び第2画像のうち強制的に輝度値の低い画素値を選択させる第1マスク、又は、第1画像及び第2画像のうち強制的に輝度値の高い画素値を選択させる第2マスクを生成してもよい。このように構成することで、被写体が動いている可能性のある領域については、第1画像及び第2画像の何れか一方の画像を強制的に選択させることができる。よって、被写体が動くことで合成後の画像において被写体が2重や3重にずれて表示されることを回避することが可能となる。
【0015】
一実施形態においては、合成部は、輝度ベースマスクに対して、第1マスクを反転させたマスクを乗算し、又は、第2マスクを加算することで、合成マスクを生成してもよい。このように構成することで、被写体のぶれを適切に補正する合成マスクを生成することができる。
【0016】
一実施形態においては、画像処理装置は、第1画像と第2画像との間の画素の動き情報を取得する動き情報取得部をさらに備えてもよい。そして、尤度算出部は、動き情報に基づいて第1画像及び第2画像を補正し、補正後の第1画像及び第2画像を用いて各画素の動被写体尤度を算出してもよい。このように構成することで、撮像素子が被写体に対して相対的に動く場合であっても、撮像素子の動きを補正して各画素の動被写体尤度を算出することができる。
【0017】
一実施形態においては、第1画像は、露出条件の異なる画像同士が合成された画像であってもよい。このように構成することで、露出条件の異なる複数の画像を順次合成して最終的な合成画像を生成することができる。
【0018】
また、本発明の他の側面に係る画像処理方法は、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する方法である。この方法では、第1画像及び第2画像を入力する。そして、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。そして、動被写体尤度に基づいて第1画像及び第2画像を合成する。
【0019】
また、本発明のさらに他の側面に係る画像合成プログラムは、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させるプログラムである。このプログラムは、コンピュータを、入力部、尤度算出部及び合成部として動作させる。入力部は、第1画像及び第2画像を入力する。尤度算出部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。合成部は、動被写体尤度に基づいて第1画像及び第2画像を合成する。
【0020】
また、本発明のさらに他の側面に係る記録媒体は、露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させる画像合成プログラムを記録した記録媒体である。このプログラムは、コンピュータを、入力部、尤度算出部及び合成部として動作させる。入力部は、第1画像及び第2画像を入力する。尤度算出部は、第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する。合成部は、動被写体尤度に基づいて第1画像及び第2画像を合成する。
【0021】
本発明の他の側面に係る画像合成方法、画像合成プログラム及び記録媒体によれば、上述した画像合成装置と同様の効果を奏する。
【発明の効果】
【0022】
本発明の種々の側面及び実施形態によれば、被写体が移動した場合であっても適切な合成画像を生成することができる画像合成装置、画像合成方法及び画像合成プログラム並びに当該画像合成プログラムを格納した記録媒体が提供される。
【図面の簡単な説明】
【0023】
【図1】一実施形態に係る画像合成装置を搭載した携帯端末の機能ブロック図である。
【図2】図1の画像合成装置が搭載される携帯端末のハードウェア構成図である。
【図3】図1に示す画像合成装置の前処理動作を示すフローチャートである。
【図4】動き検出を説明する概要図である。
【図5】差分画像を説明する概要図である。
【図6】多重解像度を用いて差分画像を導出する例を説明する概要図である。
【図7】露出変換関数の一例を示すグラフである。
【図8】輝度変換関数を説明する概要図である。
【図9】図1に示す画像合成装置の合成動作を示すフローチャートである。
【図10】合成処理の流れを説明する概要図である。
【図11】合成マスクを説明する概要図である。(A)は、露出変換関数の一例を示すグラフである。(B)は、露出変換関数同士を繋ぎ合わせる際の重みの一例を示すグラフである。
【図12】輝度ベースマスクを説明する概要図である。(A)は、入力画像の一例である。(B)は、輝度ベースマスクの一例である。
【図13】差分画像の被写体ぶれ領域のラベリングを説明する概要図である。(A)は、差分画像の一例である。(B)は、ラベリングした差分画像の一例である。
【図14】被写体ぶれマスクの生成処理の流れを説明する概要図である。
【図15】合成マスクの生成処理の流れを説明する概要図である。
【発明を実施するための形態】
【0024】
以下、添付図面を参照して本発明の実施形態について説明する。なお、各図において同一又は相当部分には同一の符号を付し、重複する説明を省略する。
【0025】
本実施形態に係る画像合成装置は、露出条件の異なる複数の画像を合成して一つの合成画像を生成する装置である。この画像合成装置は、例えば、異なる露出条件で順次撮像された複数の画像を合成して、映像信号のダイナミックレンジを見かけ上拡大させるHDR合成を行う場合に採用される。本実施形態に係る画像合成装置は、例えば、携帯電話、デジタルカメラ、PDA(Personal Digital Assistant)等、リソースに制限のあるモバイル端末に好適に搭載されるものであるが、これらに限られるものではなく、例えば通常のコンピュータシステムに搭載されてもよい。なお、以下では、説明理解の容易性を考慮し、本発明に係る画像合成装置の一例として、カメラ機能を備えた携帯端末に搭載される画像合成装置を説明する。
【0026】
図1は、本実施形態に係る画像合成装置1を備える携帯端末2の機能ブロック図である。図1に示す携帯端末2は、例えばユーザにより携帯される移動端末であり、図2に示すハードウェア構成を有する。図2は、携帯端末2のハードウェア構成図である。図2に示すように、携帯端末2は、物理的には、CPU(Central Processing Unit)100、ROM(Read Only Memory)101及びRAM(Random Access Memory)102等の主記憶装置、カメラ又はキーボード等の入力デバイス103、ディスプレイ等の出力デバイス104、ハードディスク等の補助記憶装置105などを含む通常のコンピュータシステムとして構成される。後述する携帯端末2及び画像合成装置1の各機能は、CPU100、ROM101、RAM102等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU100の制御の元で入力デバイス103及び出力デバイス104を動作させるとともに、主記憶装置や補助記憶装置105におけるデータの読み出し及び書き込みを行うことで実現される。なお、上記の説明は携帯端末2のハードウェア構成として説明したが、画像合成装置1がCPU100、ROM101及びRAM102等の主記憶装置、入力デバイス103、出力デバイス104、補助記憶装置105などを含む通常のコンピュータシステムとして構成されてもよい。また、携帯端末2は、通信モジュール等を備えてもよい。
【0027】
図1に示すように、携帯端末2は、カメラ20、画像合成装置1及び表示部21を備えている。カメラ20は、画像を撮像する機能を有している。カメラ20として、例えばCMOSの画素センサ等が用いられる。カメラ20は、例えばユーザ操作等により指定されたタイミングから所定の間隔で繰り返し撮像する連続撮像機能を有している。すなわち、カメラ20は、一枚の静止画像だけでなく複数毎の静止画像(連続するフレーム画像)を取得する機能を有している。さらに、カメラ20は、連続する各フレーム画像の露出条件を変更して撮像する機能を有している。すなわち、カメラ20によって連続撮像された各画像は、それぞれ露出条件の異なる画像となる。カメラ20は、例えば撮像されたフレーム画像を撮像の度に画像合成装置1へ出力する機能を有している。
【0028】
画像合成装置1は、画像入力部10、前処理部11、動き補正部15及び合成部16を備えている。
【0029】
画像入力部10は、カメラ20により撮像されたフレーム画像を入力する機能を有している。画像入力部10は、例えばカメラ20により撮像されたフレーム画像を撮像の度に入力する機能を有している。また、画像入力部10は、入力フレーム画像を、携帯端末2に備わる記憶装置に保存する機能を有している。
【0030】
前処理部11は、HDR合成前の前処理を行う。前処理部11は、動き情報取得部12、尤度算出部13及び露出推定部14を備えている。
【0031】
動き情報取得部12は、画像間の画素の動き情報を取得する機能を有している。例えば、入力フレーム画像を第1画像及び第2画像とすると、第1画像及び第2画像間の画素の動き情報を取得する。動き情報としては、例えば動きベクトルが用いられる。また、動き情報取得部12は、3以上の入力画像が画像入力部10により入力された場合には、入力画像を露出順にソートし、露出条件の近い入力画像間で動き情報を取得してもよい。露出条件の近い画像同士を比較して動きを検出することにより、画像間の露出の差によって動きの検出精度が低下することを回避することができる。そして、動き情報取得部12は、複数の入力画像の中から、動き情報を合わせる基準画像を選択してもよい。基準画像としては、例えば複数の入力画像の中で最も有効画素が多い画像を採用する。ここで、有効画素とは、黒つぶれ又は白飛びしていない画素である。黒つぶれ又は白飛びは、輝度値を基準として判定される。また、動き情報取得部12は、2つの入力画像を用いて動き情報を取得する場合には、2つの入力画像のうち露出の高い入力画像から特徴点を抽出し、それに対する対応点を露出の低い画像から求めてもよい。このように動作することで、露出の低い画像においては特徴点として抽出された点が露出の高い画像においては白飛びしていることにより、動き情報が取得できないことを回避することができる。なお、ジャイロセンサ等から動き情報を取得してもよい。動き情報取得部12は、動き情報を尤度算出部13へ出力する機能を有している。
【0032】
尤度算出部13は、各画素における被写体の動きの尤度(動被写体尤度)を算出する機能を有している。動被写体尤度が大きいほど、被写体に動きがある可能性が高く、合成画像がぶれる領域となる可能性が高いことを意味する。尤度算出部13は、動き情報を用いて入力画像間の画面の動きを補正する。その後、尤度算出部13は、2つの入力画像において対応する画素の画素値を正規化する。例えば、尤度算出部13は、近傍画素の画素値に基づいてLocal Ternary Patterns(LTP)を求める。画素値としては、RGB3色が用いられ、近傍画素としては24近傍が用いられる。そして、尤度算出部13は、正規化された画像間の差分を用いて動被写体尤度を算出する。例えば、正規化された画素値の差分、すなわち注目画素のLTPにおける符号の不一致割合を、注目画素の動被写体尤度として算出する。
【0033】
また、尤度算出部13は、2つの入力画像を多重解像度化して動被写体尤度を算出してもよい。例えば、尤度算出部13は、各入力画像(第1画像及び第2画像)の解像度をそれぞれ段階的に変更することで、解像度の異なる複数の画像(第1処理画像及び第2処理画像)を作成する。そして、尤度算出部13は、同一の解像度において、第1処理画像及び第2処理画像の差分画像を作成する。この差分画像とは、第1処理画像と第2処理画像との差分であり、具体的には画素値の差分である。そして、尤度算出部13は、解像度ごとに得られた差分画像を重み付けすることによって各画素の動被写体尤度を算出する。重み(信頼度)としては、各画素のLTPにおける符号の不一致割合が用いられる。例えば、LTPにおいて、有意に差があるペアの数が用いられる。また、重みは、第1処理画像又は第2処理画像の画像サイズ又は解像度によってさらに重み付けされてもよい。すなわち、画像サイズが大きいほど又は解像度が大きいほど、重みを大きくしてもよい。尤度算出部13は、各画素の動被写体尤度を露出推定部14へ出力する機能を有している。
【0034】
露出推定部14は、入力画像間の露出条件を合わせる露出変換関数を推定する機能を有している。露出変換関数とは、各入力画像の露出を基準画像相当に露出変換するための関数である。露出推定部14は、3以上の入力画像が入力された場合には、露出条件の近い入力画像間で露出条件をあわせてもよい。露出条件の近い画像同士を比較して露出を合わせることにより、画像間の露出の差によって推定の精度が低下することを回避することができる。
【0035】
露出推定部14は、例えば、動き情報を用いて入力画面間の動きを補正する。そして、動き補正後の2つの入力画像において、同一の箇所から輝度値を組としてサンプリングし、その関係をプロットする。入力画像の座標としては例えばHalton数列が用いられる。なお、露出推定部14は、所定の値以上の輝度値や所定の値以下の輝度値をサンプリング点として採用しなくてもよい。例えば、10〜245の範囲に含まれる輝度値をサンプリング点として採用する。露出推定部14は、例えば、プロットの結果をフィッティングすることにより、露出変換関数を推定する。例えば、第1画像のサンプリング点iにおける元の輝度値をKi、露出変換関数をf(Ki)、第2画像のサンプリング点iにおける元の輝度値をUiとした場合、以下の誤差関数eを用いて、Gauss−Newton法によりフィッティングしてもよい。
【数1】
【0036】
なお、露出推定部14は、各画素の動被写体尤度に基づいて、露出変換関数を導出するためのサンプリングを行う。露出推定部14は、例えば、各画素の動被写体尤度に基づいてサンプリング点を選択する。例えば、露出推定部14は、段階的に閾値を設けて、動被写体尤度の小さい画素から輝度値をサンプリングする。また、露出推定部14は、動被写体尤度に基づいて、サンプリング点に重みを付けてもよい。例えば、以下の誤差関数eを最小化させてフィッティングしてもよい。
【数2】
式2において、wiは重みである。ここで、動被写体尤度が高い画素ほど、重みwiを小さく設定する。このように、露出推定部14が各画素の動被写体尤度に基づいて露出変換関数を算出することで、信頼度の低いサンプリング点のデータほど露出変換関数の導出に影響を与えないようにすることができる。なお、露出変換関数は、変換後の入力画像が表現可能な範囲に収まるように変更されてもよい。
【0037】
動き補正部15は、動き情報を用いて入力画面間の動きを補正する機能を有している。合成部16は、合成マスクを用いて入力画像同士あるいは、既に合成された画像と入力画像とを合成する。合成マスクは、画像同士を合成(αブレンド)する際の合成比(重み)を画像化したものである。合成部16は、3以上の入力画像がある場合には、まず合成マスクに従って2つの入力画像を合成し、合成画像と残りの入力画像との合成マスクを生成して合成を行う。合成部16は、輝度ベースマスク及び被写体ぶれマスクを結合して合成マスクを生成する。輝度ベースマスクは、画像同士を合成する際の重みを輝度値に基づいて決定することで、白飛びや黒つぶれの領域を合成に用いることを回避するためのマスクである。被写体ぶれマスクは、被写体が移動する画像を合成した際に、被写体が2重3重に重なって表示される現象(ゴースト現象)を回避するためのマスクである。
【0038】
合成部16は、入力画像の元の輝度値に基づいて重みを算出し、輝度ベースマスクを生成する。重みは、例えば以下の算出式で求める。
【数3】
上記算出式により、重みが適切に決定されるとともに、輝度的な不連続性が軽減される。なお、空間的な不連続性を軽減するために、合成マスクに対してぼかし処理を施してもよい。
【0039】
合成部16は、入力画像間の差分に基づいて重みを算出し、被写体ぶれマスクを生成する。合成部16は、入力画像間の画素値の差分から、動被写体尤度を算出する。入力画像間の画素値の差分及び動被写体尤度については、上述した尤度算出部13と同様に動作することで得ることができる。そして、尤度算出部13は、動被写体尤度が所定の閾値以下となる画素が隣接する被写体ぶれ領域を検出し、各被写体ぶれ領域に対して識別ラベルを付与し、被写体ぶれ領域ごとに被写体ぶれマスクを生成する。なお、所定の閾値は、要求仕様に応じて適宜変更可能である。閾値を大きく設定すると、連続領域を抽出しやすくすることができる。被写体ぶれ領域ごとにマスクを生成することにより、被写体ぶれ領域ごとに白飛び領域あるいは黒つぶれ領域を回避するように情報量の多い画像から画素を選択することができる。すなわち、この被写体ぶれマスクとしては、合成する画像同士のうち強制的に輝度値の低い画素値を選択させるlo_mask(第1マスク)、又は、合成する画像同士のうち強制的に輝度値の高い画素値を選択させるhi_mask(第2マスク)が存在する。合成部16は、基本的には、情報量の多い高露出の画像から画素値を選択させる第2マスクを生成する。しかしながら、合成部16は、高露出の画像において被写体ぶれ領域が白飛び領域に影響される場合には、第1マスクを生成する。具体的には、以下の何れかの条件を満たす場合には第1マスクを生成する。第1の条件としては、合成する2つの画像のうち、高露出の画像の白飛びの面積が低露出の画像の黒つぶれ領域の面積よりも大きい場合である。第2の条件としては、合成する2つの画像のうち高露出の画像において、被写体ぶれ領域内の白飛び領域の面積が10%以上の場合である。なお、合成する2つの画像のうち高露出の画像において、被写体ぶれ領域と隣接する領域が白飛び領域である場合を条件としてもよい。
【0040】
合成部16は、輝度ベースマスク及び被写体ぶれマスクを結合させて合成マスクを生成する。例えば、合成部16は、輝度ベースマスクに対して、第1マスクを反転させたマスクを乗算する。また、合成部16は、輝度ベースマスクに対して、第2マスクを加算する。合成部16は、全ての入力画像を合成し、最終的な合成画像を表示部21へ出力する。表示部21は、合成画像を表示する。表示部21として例えばディスプレイ装置が用いられる。
【0041】
次に、画像合成装置1の動作を説明する。図3は、HDR合成の前処理を説明するフローチャートである。図3に示す制御処理は、例えばユーザによってHDR合成モードが選択され、カメラ20が複数の画像を連続撮像した場合に開始する。
【0042】
まず、画像入力部10が画像フレームを入力する(S10)。以下では、説明理解の容易性を考慮して、5つの入力画像I0〜I4を入力したものとして説明する。S10の処理が終了すると、露出順ソート処理へ移行する(S12)。
【0043】
S12の処理では、動き情報取得部12が入力画像I0〜I4を露出順にソートする。動き情報取得部12は、例えば輝度値の平均値を用いてソートする。ここでは、入力画像I0〜I4の数字が小さくなるほど輝度値が小さいものとする。この場合、入力画像I0〜I4は、数字の順にソートされる。S12の処理が終了すると、動き情報取得処理へ移行する(S14)。
【0044】
S14の処理では、動き情報取得部12が、入力画像I0〜I4のそれぞれの画像間の動き情報を取得する。図4は、動き情報の取得処理を説明する概要図である。図4に示すように、入力画像I0〜I4が左から右に向けて順に平均輝度値が大きくなるように並べられているとする。まず、動き情報取得部12は、入力画像I0〜I4の中から基準画像を設定する。ここでは、入力画像I2を基準画像とする。次に、露出条件の近い入力画像同士の動き情報を取得する(例えば、入力画像I0と入力画像I1、入力画像I1と入力画像I2等)。動き情報取得部12は、2つの入力画像のうち、露出の高い入力画像で特徴点を抽出して、抽出された特徴点に対する対応点を露出の低い入力画像から抽出する。この動き情報によって、露出条件の近い入力画像同士を同一次元の座標に変換する変換行列を求めることができる。なお、図4では、露出条件の近い入力画像同士のうち、露出の低い画像を露出の高い画像へあわせるための変換行列m10,m21,m32,m43を示している。次に、変換行列m10,m21,m32,m43を用いて、基準画像I2以外の他の入力画像I0,I1,I3,I4の座標を基準画像I2相当の座標へ変形させる変換行列を算出する。図4に示すように、入力画像I0を基準画像I2へ変換させる変換行列は、m10*m21である。入力画像I1を基準画像I2へ変換させる変換行列は、m10である。入力画像I3を基準画像I2へ変換させる変換行列は、(m32)−1である。入力画像I4を基準画像I2へ変換させる変換行列は、(m32*m43)−1である。以下では変換後の入力画像をI0’〜I4’として説明する。S14の処理が終了すると、動被写体尤度算出処理へ移行する(S16)。
【0045】
S16の処理では、尤度算出部13が、入力画像I0’〜I4’のそれぞれの画像間の動被写体尤度を算出する。図5は、入力画像I0’と入力画像I1’との画像間における動被写体尤度を算出する例である。なお、図5では、画素値としてR値を用いる場合を示している。図5に示すように、尤度算出部13は、入力画像I0’の注目画素(R値=42)の8近傍の画素値(R値)を取得する。そして、注目画素の画素値と8近傍の画素値を用いて正規化する。例えば、LTPを用いる。注目画素の画素値と8近傍の画素値との差が±5の範囲であれば0、+5より大きい場合には1、−5より小さい場合には−1とする。尤度算出部13は、入力画像I1’についても、同様に正規化する。図中では、入力画像I0’の注目画素に対応する入力画像I1’の画素において正規化している。次に、正規化された画素の画素値を比較すると、差分が生じていることがわかる。差分の大きさ(符号の不一致度合い)に応じて当該画素の色を黒から白へ変化させた画像として表したものが差分画像Xである。この差分画像は、各画素の動被写体尤度が画像化されたものである。なお、8近傍に限定されることはなく、24近傍であってもよい。また、R値のみに限られずG値及びB値についても同様に処理してもよい。
【0046】
差分画像Xの領域C1に示す平滑領域の動被写体尤度の精度を向上させるために、尤度算出部13は、多重解像度を用いて動被写体尤度を求めてもよい。図6は、多重解像度を用いて動被写体尤度を求める一例である。まず、尤度算出部13は、入力画像I0’と入力画像I1’との解像度を段階的に変更させた複数の画像を生成する。そして、同一の解像度同士で差分画像を生成する。この差分画像は、単純に画素値を差し引いたものである。図6では、入力画像I0’と入力画像I1’とを6段階に多重化した場合を示している。それぞれの差分画像がX1〜X6であり、数字が大きくなるほど低い解像度の差分画像となる。また、解像度が低いほど画像サイズが小さくなる。この差分画像を信頼度で重み付けして最終的な差分画像を算出する。信頼度は、例えば、上述したLTPの差分において有意な差のあるペアの数に画像サイズ(又は解像度)を乗算したものを用いる。例えば、図5に示すLTPの場合には有意な差のあるペアの数は1となる。このように、画素ごとにペアの数と画像サイズとを掛けあわせて、差分画像X1〜X6に対応する重み画像(重みを画像化したもの)を算出する。そして、差分画像X1〜X6と重み画像とを用いて最終的な差分画像を算出する。尤度算出部13は、上述した手法と同様の手法で、入力画像I1’〜I4’までの差分画像を算出する。S16の処理が終了すると、露出変換関数推定処理へ移行する(S18)。
【0047】
S18の処理では、露出推定部14が露出変換関数を推定する。露出推定部14は、変換前の輝度値をx、変換後の輝度値をyとすると露出変換関数を以下の数式で表すことができる。
【数4】
ここで、(a,b)は露出変換パラメータである。露出変換パラメータ(a,b)を導出することで露出変換関数を求めることができる。以下では、動き補正後の入力画像I0’と入力画像I1’との露出変換関数を求める場合を説明する。露出推定部14は、入力画像の点(x,y)において、露出の低い入力画像I0’の輝度値と露出の低い入力画像I1’の輝度値の組みをいくつかサンプリングして、その関係をプロットする。ここで、S16の処理で取得した差分画像に基づいて、サンプリングする点を選択する。例えば、動被写体尤度の高い領域からはサンプリングしないように設定する。すなわち動被写体尤度の低いものからサンプリングするように設定する。そして、例えば動被写体尤度が高いほど低い重みを割り当てて、式2を用いて露出変換関数を推定する。これにより、例えば図7に示すようなフィッティングが行われる。尤度算出部13は、上述した手法と同様の手法で、入力画像I1’〜I4’間の露出変換関数を推定する。なお、輝度値が0に近いデータ又は255に近いデータを除いてもよい。
【0048】
図8は、上記の露出変換関数の推定処理を説明する概要図である。なお、図8では、露出条件の近い入力画像同士のうち、露出の低い画像を露出の高い画像へあわせるための露出変換パラメータ(a10,b10)、(a21,b21)、(a32,b32)、(a43,b43)を示している。最終的な合成画像が表現可能な範囲に収まるように、最も露出の低い入力画像I0’の露出変換パラメータ(A0,B0)のA0を1.0に設定することで、変換結果が1.0を超えないようにしてもよい。ここでは、入力画像I0’の露出変換後の画像を、入力画像I0’’として表示している。また、最も露出の低い入力画像I0’に対する基準画像I2’の露出変換パラメータを(A2,B2)とすると、A0を1.0に設定すると同時にB2を1.0とすることで、ゲインが1/A2のときに色味が入力画像と等しくなるように設定してもよい。尤度算出部13は、上述した処理をRGBチャネルごとに別々に行う。S18の処理が終了すると図3に示す前処理を終了する。
【0049】
以上で図3に示す制御処理を終了する。図3に示す制御処理を実行することで、露出変換関数を推定する前に、被写体ぶれを検出することで、被写体ぶれ領域からサンプリングすることを回避したり、被写体ぶれ領域からサンプリングされたデータの影響を重み付けにより小さくすることができる。このため、露出変換関数を精度良く推定することができる。また、従来のHDR技術であれば、被写体ぶれの補正は、露出合わせが行われていないと正確に行うことができず、また逆に露出合わせは被写体ぶれの修正が行われていないと正確にできない。しかし、露出変換関数を推定する前に簡易的に被写体ぶれ(被写体の動き)を検出することで、上記デットロック関係を解消することができる。
【0050】
次に、画像合成装置1の合成動作を説明する。図9は、HDR合成を説明するフローチャートである。図9に示す制御処理は例えば図3に示す制御処理が終了すると開始する。
【0051】
図9に示すように、動き補正部15が実際に動きを補正する(S20)。この処理では、図3のS14の処理と同様に、動き補正部15が、変換行列を用いて、露出変換後の入力画像I0’’〜I4’’の動きを補正する。なお、要求される精度に応じてサブピクセル補間アルゴリズム等を用いることができるようにしてもよい。S20の処理が終了すると、輝度ベースマスク生成処理及び被写体ぶれ領域抽出処理へ移行する(S22及びS24)。
【0052】
S22の処理では、合成部16が輝度ベースマスクを生成する。図10は、合成処理の流れを説明する概要図である。図10に示すように、露出の低い入力画像I0’’から順に、入力画像I1’’〜I4’’を置き換えていくことで合成する。すなわち、最初は、入力画像I0’’に対して入力画像I1’’をどの程度合成させるかを定める輝度ベースマスクを生成する。この輝度ベースマスクは、入力画像I1’’の元の輝度値から重みを算出する。例えば、白飛び領域の付近の重みを0とする。このように重みを設定して、露出の低い画像へ露出の高い画像を重ねるように合成させることで、対象のピクセルに対して情報量の多い入力画像を必ず選択させることができる。図11の(A)は、入力輝度に対するピクセル値の関係を示すグラフである。図11の(A)に示すように、関数f0〜f3は、輝度値に基づいてどちらの画像の画素値を採用するかを示すグラフである。関数f0〜f3は、数字が大きくなるほど露出が大きい画像に適用されるものである。例えば、最も露出の低い入力画像I0’’が入力されると、関数f0が適用されて全ての画素値が採用される。次に、入力画像I1’’が入力されると、関数f0と関数f1とが適用される。このため、S0〜S5の輝度値の範囲では、入力画像I1’’が採用され、S6以上の輝度値の範囲では、入力画像I0’’が採用される。S5〜S6の輝度値の範囲は、(B)に示す重みでブレンドされた合成値で採用される。なお、便宜上γ補正は省略している。次に入力画像I2’’が入力されると、関数f0〜f2が適用される。このため、S0〜S3の輝度値の範囲では、入力画像I2’’が採用され、S4〜S5の輝度値の範囲では、入力画像I1’’が採用され、S6以上の輝度値の範囲では、入力画像I0’’が採用される。S3〜S4及びS5〜S6の輝度値の範囲は、(B)に示す重みでブレンドされた合成値で採用される。次に入力画像I3’’が入力されると、関数f0〜f3が適用される。このため、S0〜S1の輝度値の範囲では、入力画像I3’’が採用され、S2〜S3の輝度値の範囲では、入力画像I2’’が採用され、S4〜S5の輝度値の範囲では、入力画像I1’’が採用され、S6以上の輝度値の範囲では、入力画像I0’’が採用される。S1〜S2、S3〜S4及びS5〜S6の輝度値の範囲は、(B)に示す重みでブレンドされた合成値で採用される。このように、露出の高い画像が優先的に採用される。また、白とび領域部分については露出の低い画像が採用されるとともに、境界部分を滑らかにブレンドする。上記図11の(A)に示すグラフを画像化した輝度ベースマスクの一例を図12に示す。図12の(A)は入力画像を示し、(B)は当該入力画像の輝度ベースマスクである。図12の(B)では、100%入力画像の画素値を利用する場合には白とし、100%入力画像の画素値を利用しない場合には黒として表現している。S22の処理が終了すると、合成マスク生成処理へ移行する(S32)。
【0053】
一方、S24の処理では、合成部16が被写体ぶれ領域を抽出する。例えば、合成部16が、図3のS16の処理と同様に差分画像を算出し、動被写体尤度が所定値以上の領域を被写体ぶれ領域として抽出する。図13の(A)は、被写体ぶれ領域を含む差分画像の一例である。S24の処理が終了すると、ラベリング処理へ移行する(S26)。
【0054】
S26の処理では、合成部16が被写体ぶれ領域をラベリングする。合成部16は、連続する被写体ぶれ領域に対して一つのラベルRnを設定する。図13の(B)は、連続領域をラベリングした例である。S26の処理が終了すると、各領域の基準画像の選択処理へ移行する(S28)。
【0055】
S28の処理では、合成部16が被写体ぶれ領域ごとに基準画像を設定する。合成部16は、基準画像として基本的に高露出の画像を優先させる。例えば、入力画像I0’’と入力画像I1’’とを合成する場合には、基準画像として入力画像I1’’が選択される。ただし、入力画像I1’’において被写体ぶれ領域が白飛び領域に影響される場合には、基準画像として入力画像I0’’が選択される。S28の処理が終了すると、被写体ぶれマスク生成処理へ移行する(S30)。
【0056】
S30の処理では、合成部16が被写体ぶれ領域ごとに被写体ぶれマスクを生成する。合成部16は、基準画像として高露出の画像を優先させる場合には第2マスクを生成する。一方、基準画像として低露出の画像を優先させる場合には第1マスクを生成する。図14は、S24〜S30の一連の処理を説明する概要図である。図14に示すように、入力画像I0’’と入力画像I1’’とを合成する際に、差分画像Xを求め、差分画像の領域ごとに、第1マスク(lo_mask)又は第2マスク(hi_mask)が生成される。すなわち、被写体が動く領域については、被写体ぶれマスクを用いることで一枚の画像のみから画素値を入力させることで、上述したゴースト現象を回避することができる。S30の処理が終了すると、合成マスク生成処理へ移行する(S32)。
【0057】
S32の処理では、合成部16が輝度ベースマスク及び被写体ぶれマスクに基づいて合成マスクを生成する。図15は、合成マスクの生成処理を説明する概要図である。図15に示すように、lo_maskを反転させた画像を輝度ベースマスクに乗算する。また、hi_maskを輝度ベースマスクに加算する。このように結合させることで、合成マスクが生成される。S32の処理が終了すると、合成処理へ移行する(S34)。
【0058】
S34の処理では、合成部16がS32の処理で作成された合成マスクに従って合成処理を行う。なお、合成済み画像の輝度値P0と露出変換関数を適用させた入力画像の輝度値P1を重みaで合成する場合、合成後の輝度値P2は以下の数式で求めることができる。
【数5】
このとき、露出の最も低い画像については全領域をそのまま合成する。S34の処理が終了すると、入力画像確認処理へ移行する(S36)。
【0059】
S36の処理では、合成部16が全ての入力画像を合成したか否かを判定する。全ての入力画像を合成していない場合には、S22及びS24の処理へ移行する。そして、例えば、図10に示すように、入力画像I0’’と入力画像I1’’との合成画像O0と、新たな入力画像I0’’との合成処理が行われる。一方、全ての入力画像を合成した場合には、図9に示す制御処理を終了する。
【0060】
図9に示す制御処理を実行することで、被写体ぶれの補正されたHDR合成画像が生成される。
【0061】
次に、携帯端末(コンピュータ)2を上記画像合成装置1として機能させるための画像合成プログラムを説明する。
【0062】
画像合成プログラムは、メインモジュール、入力モジュール及び演算処理モジュールを備えている。メインモジュールは、画像処理を統括的に制御する部分である。入力モジュールは、入力画像を取得するように携帯端末2を動作させる。演算処理モジュールは、動き情報取得モジュール、尤度算出モジュール、露出推定モジュール、動き補正モジュール及び合成モジュールを備えている。メインモジュール、入力モジュール及び演算処理モジュールを実行させることにより実現される機能は、上述した画像合成装置1の画像入力部10、動き情報取得部12、尤度算出部13、露出推定部14、動き補正部15及び合成部16の機能とそれぞれ同様である。
【0063】
画像合成プログラムは、例えば、ROM等の記録媒体または半導体メモリによって提供される。また、画像合成プログラムは、データ信号としてネットワークを介して提供されてもよい。
【0064】
以上、本実施形態に係る画像合成装置1、画像合成方法及び画像合成プログラムによれば、第1画像と第2画像との露出を合わせる前に、第1画像と第2画像との差分に基づいて各画素における被写体の動きの尤度を算出する。そして、被写体の動きの尤度に基づいて第1画像と第2画像との露出条件を合わせる露出変換関数を推定する。このように、露出を合わせる際に被写体の動きの尤度が考慮されるため、例えば被写体の動きで色が変化している可能性がある領域を除いて露出を合わせることができる。よって、適切な合成画像を生成することが可能となる。さらに、被写体ぶれマスクを用いて被写体ぶれ(ゴースト的な表示)の発生を回避し、クリアな画像とすることができる。
【0065】
なお、上述した実施形態は本発明に係る画像合成装置の一例を示すものである。本発明に係る画像合成装置は、実施形態に係る画像合成装置1に限られるものではなく、各請求項に記載した要旨を変更しない範囲で、実施形態に係る画像合成装置を変形し、又は他のものに適用したものであってもよい。
【0066】
例えば、上述した各実施形態では、カメラ20がフレーム画像を取得する例を説明したが、別の機器からネットワークを介して送信された画像であってもよい。また、合成画像を表示せずに記録のみする場合には、表示部21を備えなくてもよい。
【0067】
また、上述した各実施形態に係る画像合成装置1を、手ぶれ補正装置とともに動作させてもよい。
【符号の説明】
【0068】
1…画像合成装置、10…画像入力部(入力部)、12…動き情報取得部、13…尤度算出部、14…露出推定部、15…動き補正部、16…合成部。
【特許請求の範囲】
【請求項1】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する画像合成装置であって、
前記第1画像及び前記第2画像を入力する入力部と、
前記第1画像及び前記第2画像の差分に基づいて、各画素における動被写体尤度を算出する尤度算出部と、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する合成部と、
を備え、
前記尤度算出部は、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の前記動被写体尤度を算出する画像合成装置。
【請求項2】
前記尤度算出部は、前記第1画像及び前記第2画像の画素値を正規化し、正規化された前記第1画像及び前記第2画像の差分に基づいて、各画素における前記動被写体尤度を算出する請求項1に記載の画像合成装置。
【請求項3】
前記尤度算出部は、前記第1画像と前記第2画像との差分の信頼度、及び前記第1処理画像又は前記第2処理画像の画像サイズもしくは解像度に基づいて、解像度ごとに得られた差分を重み付けする請求項1に記載の画像合成装置。
【請求項4】
前記合成部は、
前記第1画像又は前記第2画像の元の輝度値の大きさに基づいて、前記第1画像及び前記第2画像の画素値の合成比を示す輝度ベースマスクを生成し、
前記第1画像及び前記第2画像の差分に基づいて、前記第1画像及び前記第2画像の画素値の合成比を示す被写体ぶれマスクを生成し、
前記輝度ベースマスク及び前記被写体ぶれマスクを結合させて、前記第1画像及び前記第2画像の画素値を合成する合成マスクを生成する請求項1〜3の何れか一項に記載の画像合成装置。
【請求項5】
前記合成部は、
前記第1画像及び前記第2画像の差分に基づいて、各画素における動被写体尤度を算出し、
該動被写体尤度に基づいて前記被写体ぶれマスクを生成する請求項4に記載の画像合成装置。
【請求項6】
前記合成部は、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の前記動被写体尤度を算出し、該動被写体尤度に基づいて前記被写体ぶれマスクを生成する請求項5に記載の画像合成装置。
【請求項7】
前記合成部は、
前記動被写体尤度が所定の閾値以下となる画素が隣接する領域を検出し、各領域に対して識別ラベルを付与し、領域ごとに前記被写体ぶれマスクを生成する請求項6に記載の画像合成装置。
【請求項8】
前記合成部は、
前記被写体ぶれマスクとして、前記第1画像及び前記第2画像のうち強制的に輝度値の低い画素値を選択させる第1マスク、又は、前記第1画像及び前記第2画像のうち強制的に輝度値の高い画素値を選択させる第2マスクを生成する請求項5〜7の何れか一項に記載の画像合成装置。
【請求項9】
前記合成部は、
前記輝度ベースマスクに対して、前記第1マスクを反転させたマスクを乗算し、又は、前記第2マスクを加算することで、前記合成マスクを生成する請求項8に記載の画像合成装置。
【請求項10】
前記第1画像と前記第2画像との間の画素の動き情報を取得する動き情報取得部をさらに備え、
前記尤度算出部は、前記動き情報に基づいて前記第1画像及び前記第2画像を補正し、補正後の前記第1画像及び前記第2画像を用いて各画素の前記動被写体尤度を算出する請求項1〜9の何れか一項に記載の画像合成装置。
【請求項11】
前記第1画像は、露出条件の異なる画像同士が合成された画像からなる請求項1〜10の何れか一項に記載の画像合成装置。
【請求項12】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する画像合成方法であって、
前記第1画像及び前記第2画像を入力し、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出し、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する、
画像合成方法。
【請求項13】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させる画像合成プログラムであって、
前記第1画像及び前記第2画像を入力する入力部、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する尤度算出部、及び、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する合成部として前記コンピュータを動作させる画像合成プログラム。
【請求項14】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させる画像合成プログラムを記録した記録媒体であって、
前記第1画像及び前記第2画像を入力する入力部、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する尤度算出部、及び、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する合成部として前記コンピュータを動作させる画像合成プログラムを記録した記録媒体。
【請求項1】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する画像合成装置であって、
前記第1画像及び前記第2画像を入力する入力部と、
前記第1画像及び前記第2画像の差分に基づいて、各画素における動被写体尤度を算出する尤度算出部と、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する合成部と、
を備え、
前記尤度算出部は、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の前記動被写体尤度を算出する画像合成装置。
【請求項2】
前記尤度算出部は、前記第1画像及び前記第2画像の画素値を正規化し、正規化された前記第1画像及び前記第2画像の差分に基づいて、各画素における前記動被写体尤度を算出する請求項1に記載の画像合成装置。
【請求項3】
前記尤度算出部は、前記第1画像と前記第2画像との差分の信頼度、及び前記第1処理画像又は前記第2処理画像の画像サイズもしくは解像度に基づいて、解像度ごとに得られた差分を重み付けする請求項1に記載の画像合成装置。
【請求項4】
前記合成部は、
前記第1画像又は前記第2画像の元の輝度値の大きさに基づいて、前記第1画像及び前記第2画像の画素値の合成比を示す輝度ベースマスクを生成し、
前記第1画像及び前記第2画像の差分に基づいて、前記第1画像及び前記第2画像の画素値の合成比を示す被写体ぶれマスクを生成し、
前記輝度ベースマスク及び前記被写体ぶれマスクを結合させて、前記第1画像及び前記第2画像の画素値を合成する合成マスクを生成する請求項1〜3の何れか一項に記載の画像合成装置。
【請求項5】
前記合成部は、
前記第1画像及び前記第2画像の差分に基づいて、各画素における動被写体尤度を算出し、
該動被写体尤度に基づいて前記被写体ぶれマスクを生成する請求項4に記載の画像合成装置。
【請求項6】
前記合成部は、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の前記動被写体尤度を算出し、該動被写体尤度に基づいて前記被写体ぶれマスクを生成する請求項5に記載の画像合成装置。
【請求項7】
前記合成部は、
前記動被写体尤度が所定の閾値以下となる画素が隣接する領域を検出し、各領域に対して識別ラベルを付与し、領域ごとに前記被写体ぶれマスクを生成する請求項6に記載の画像合成装置。
【請求項8】
前記合成部は、
前記被写体ぶれマスクとして、前記第1画像及び前記第2画像のうち強制的に輝度値の低い画素値を選択させる第1マスク、又は、前記第1画像及び前記第2画像のうち強制的に輝度値の高い画素値を選択させる第2マスクを生成する請求項5〜7の何れか一項に記載の画像合成装置。
【請求項9】
前記合成部は、
前記輝度ベースマスクに対して、前記第1マスクを反転させたマスクを乗算し、又は、前記第2マスクを加算することで、前記合成マスクを生成する請求項8に記載の画像合成装置。
【請求項10】
前記第1画像と前記第2画像との間の画素の動き情報を取得する動き情報取得部をさらに備え、
前記尤度算出部は、前記動き情報に基づいて前記第1画像及び前記第2画像を補正し、補正後の前記第1画像及び前記第2画像を用いて各画素の前記動被写体尤度を算出する請求項1〜9の何れか一項に記載の画像合成装置。
【請求項11】
前記第1画像は、露出条件の異なる画像同士が合成された画像からなる請求項1〜10の何れか一項に記載の画像合成装置。
【請求項12】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成する画像合成方法であって、
前記第1画像及び前記第2画像を入力し、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出し、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する、
画像合成方法。
【請求項13】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させる画像合成プログラムであって、
前記第1画像及び前記第2画像を入力する入力部、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する尤度算出部、及び、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する合成部として前記コンピュータを動作させる画像合成プログラム。
【請求項14】
露出条件の異なる第1画像及び第2画像を用いて合成画像を生成するようにコンピュータを動作させる画像合成プログラムを記録した記録媒体であって、
前記第1画像及び前記第2画像を入力する入力部、
前記第1画像の解像度をそれぞれ段階的に変更することで得られる複数の第1処理画像、及び、前記第2画像の解像度をそれぞれ段階的に変更することで得られる複数の第2処理画像を用いて、各画素の差分を解像度ごとに算出し、解像度ごとに得られた差分を重み付けすることによって各画素の動被写体尤度を算出する尤度算出部、及び、
前記動被写体尤度に基づいて前記第1画像及び前記第2画像を合成する合成部として前記コンピュータを動作させる画像合成プログラムを記録した記録媒体。
【図1】
【図2】
【図3】
【図7】
【図9】
【図11】
【図4】
【図5】
【図6】
【図8】
【図10】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図7】
【図9】
【図11】
【図4】
【図5】
【図6】
【図8】
【図10】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2013−102554(P2013−102554A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2013−42040(P2013−42040)
【出願日】平成25年3月4日(2013.3.4)
【分割の表示】特願2012−558101(P2012−558101)の分割
【原出願日】平成23年10月14日(2011.10.14)
【出願人】(505277358)株式会社モルフォ (18)
【Fターム(参考)】
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願日】平成25年3月4日(2013.3.4)
【分割の表示】特願2012−558101(P2012−558101)の分割
【原出願日】平成23年10月14日(2011.10.14)
【出願人】(505277358)株式会社モルフォ (18)
【Fターム(参考)】
[ Back to top ]