説明

画像合成装置、画像合成方法及びプログラム

【課題】画像処理に必要な演算量を削減し、十分な追跡精度を保ちながら合成画像を作成する。
【解決手段】元画像の所定縮小サイズを最上位のレイヤとして、合成対象となる各画像を段階的に縮小してピラミッド階層を構成する。そして、最下位のレイヤから順番に最上位のレイヤに向けて特徴点を追跡する。その際、特徴点の動きを示すベクトルに所定の係数を乗じてその特徴点の動きを収束させる。これにより、特徴点を追跡する際に元画像サイズでの画像処理を不要として演算量の削減化を図れる。また、特徴点の動きベクトルに所定の係数を乗じることで収束性を高め、十分な追跡精度を保ちながら合成画像を作成することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばデジタルカメラ等の撮像装置に用いられる画像合成装置と、画像合成方法及びプログラムに関する。
【背景技術】
【0002】
近年、デジタルカメラでは、手ぶれを起こさない短い露光時間で連続撮影を行い、その連続撮影によって得られた複数枚の画像を重ね合わせることで、ブレのないノイズを抑えた鮮明な画像を得る方法が考えられている。
【0003】
ここで、連続撮影における各フレームの間隔は短時間であっても、その間にカメラと被写体との間に位置ずれが生じる可能性がある。このため、連続撮影によって得られた各画像を重ね合わせて合成する場合には、このような位置ずれを補正して重ね合わせることが必要となる。
【0004】
例えば、特許文献1では、2枚の画像からオプティカルフローを計算し、そのオプティカルフローに基づいて2枚の画像間での位置合わせを行う技術について開示されている。オプティカルフロー(optical flow)とは、カメラから見た物体の見かけ上の動きのことである。
【0005】
このオプティカルフローの推定方法の1つに勾配法と呼ばれるものがある。勾配法は、動きを画素値(明るさ)の勾配(一次微分)から計算する方法である。つまり、勾配法によるオプティカルフロー推定とは、「物体上の点の明るさは移動後も変化しない」という仮定から時空間微分とオプティカルフローとの関係式を導出し、それを利用して対象の動きを推定するものである。
【0006】
画像合成技術では、このような勾配法を用いて画像上で特徴点を追跡することにより、両画像間における射影変換の行列式Hを決定し、その行列式Hを用いて画像間の位置ずれを補正して重ね合わせを行う。
【0007】
具体的に説明すると、例えば図8に示すように、画像1と画像2を合成対象とした場合に、まず、基準となる画像1の中から所定数分の特徴点をランダムに抽出し、これらの特徴点を画像1に重ね合わせる画像2上で勾配法を用いて追跡する。今、図中のP1,P2,P3を画像1から抽出した特徴点とすれば、この3つの特徴点P1,P2,P3の場所を画像2の中で追跡することになる。
【0008】
特徴点P1,P2,P3を追跡できたら、この特徴点P1,P2,P3の画像2上の座標位置と画像1上の座標位置との関係から射影変換における行列式Hを算出する。そして、この行列式Hに基づいて画像1上のすべての特徴点をずらしてみて(画像1′)、ある程度の精度で画像2上の各特徴点と一致すれば(画像1′+画像2)、当該行列式Hを用いて画像1と画像2との位置ずれを補正して重ね合わせる。
【0009】
なお、実際には、このような特徴点の抽出と追跡を何回か繰り返し行うことで、最終的に最も評価値の高い行列式Hを選出するといった処理を行う。
【0010】
ところで、画像間の特徴点を追跡する場合に、画像上のすべての画素を対象として特徴点を1つ1つ追跡していたのでは計算量が多くなり、非常に時間がかかる。そこで、予め段階的に解像度を低くした画像を作り、最も解像度が少ないレイヤから順番に最も解像度が高いレイヤに向かって特徴点を追跡していく方法が用いられる。これをピラミッド化と呼ぶ。
【0011】
図9は従来のピラミッド化による特徴点の追跡方法を説明するための図である。図中のkは階層のパラメータであり、k=0〜mの値を取る。fは元画像サイズ、∂f/∂xと∂f/∂yは点(x,y)の一次微分を表している。
【0012】
まず、元画像に対してノイズ除去フィルタをかけ、その画像をレイヤ0とする。また、レイヤ0に対してサブサンプリング(間引きによる縮小処理)したものをレイヤ1、そのレイヤ1に対してサブサンプリングしたものをレイヤ2とし、順にレイヤmまでのピラミッド階層を構成する。
【0013】
ここで、特徴点の追跡は、最下位のレイヤmから始め、レイヤmから最上位のレイヤ0の画像に微分フィルタをかけて、上述した勾配法により特徴点の動きベクトルVを求める。
【0014】
すなわち、例えば画像1(基準画像)の特徴点を、その画像1に連続する画像2で追跡する場合に、まず、最下位のレイヤにて画像2の追跡開始点YをY=Xにして、勾配法により特徴点の動きベクトルVを求める。そして、次のポイントをY=Y+Vに更新し、そのポイントから再度勾配法により動きベクトルVを求める。同様にして、次のポイントをY=Y+Vに更新する。これを繰り返し、Vが十分小さくなったか、予定された回数を繰り返した時点で計算を終了する。
【0015】
続いて、1つ上の階層にて同様の追跡を行う。この場合、階層が1つ上がる毎に画像サイズが大きくなる。1階層毎に画像の1辺が倍になるものと仮定した場合に、下の階層で得られたXとYを2倍にして、これを初期値として特徴点追跡(動きベクトルの計算)を繰り返す。
【0016】
最終的に最上位のレイヤまで動きベクトルを順に引き継ぎながら特徴点を追跡していく。そして、最終的に得られた画像2上の特徴点の位置と画像1上の特徴点の位置との相対関係から上述した射影変換の行列式Hを算出する。
【0017】
具体的な処理動作を図10乃至図12に示す。図10は従来の画像合成処理の全体の流れを示すフローチャートである。図11はその画像合成処理に含まれる特徴点抽出処理を示すフローチャート、図12はその特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【0018】
今、連続撮影により複数枚の連続した画像が図示せぬメモリに記憶されており、そのメモリから各画像を順次読み出して重ね合わせることで1枚の合成画像を作成するものとして説明する。
【0019】
図10のフローチャートにおいて、ステップD11〜D19は基準画像に対するピラミッド化の処理、ステップD20〜D27はその基準画像に重ね合わせる画像に対するピラミッド化の処理を示している。
【0020】
すなわち、まず、前記メモリから画像合成の基準となる画像を読み込む(ステップD11)。その際に、図9に示すように、階層数k=0として(ステップD12)、前記基準画像にノイズ除去フィルタをかけてレイヤ0の画像を生成する(ステップD13)。このレイヤ0の画像の中で特徴点を抽出した後(ステップD14)、当該画像に微分フィルタをかけて画素値の勾配を求める(ステップD15)。
【0021】
続いて、kを+1更新し(ステップD16)、サブサンプリングフィルタによりレイヤ0の画像を縦横1/2サイズに間引き処理することでレイヤ1の画像を作成する(ステップD17)。そして、このレイヤ1の画像に微分フィルタをかけて画素値の勾配を求める(ステップD18)。
【0022】
以後、kを更新しながら、k=mになるまで前記同様の処理を繰り返す(ステップD19)。これにより、図9に示したように、レイヤ0を最上位、レイヤmを最下位とした階層画像が作成されることになる。
【0023】
続いて、前記メモリから基準画像に重ね合わせる画像を読み出し(ステップD20)、k=0にセットした後(ステップD21)、その画像に対して前記同様のピラミッド化の処理を行うことで(ステップD22〜D27)、レイヤ0〜mの画像を作成する。
【0024】
このようにして、基準画像とそれに重ね合わせる画像をピラミッド化すると、次に、それぞれのレイヤ画像間で特徴点の追跡処理を行い(ステップD28)、その追跡処理で得られた特徴点の座標位置に基づいて両画像を位置合わせして合成する(ステップD29)。これを所定枚数分繰り返して行うことで(ステップD30)、1枚の合成画像を作成する。
【0025】
次に、前記ステップD28で実行される特徴点追跡処理について説明する。
【0026】
図11のフローチャートに示すように、まず、i=0とおく(ステップE11)。iは処理対象となる特徴点の番号であり、0〜nの値を取るものとする。
【0027】
今、基準画像の特徴点の位置をXi、その基準画像に重ね合わせる画像(以下、被追跡画像と称す)の特徴点の位置(検索位置)をYiとすると、レイヤmにおける特徴点位置は以下のように表せる(ステップE12)。
【0028】
Xi=Xi/2
Yi=Xi
ここで、特徴点の追跡は最下位のレイヤから始めるため、k=mとする(ステップE13)。また、繰り返し回数(つまり階層毎の特徴点の追跡回数)jを初期値0にセットして(ステップE14)、被追跡画像上における特徴点iの動きベクトルVjを計算する(ステップE15)。
【0029】
図12のフローチャートに示すように、動きベクトルVjはXiとYiから計算する(ステップF11)。この場合、追跡開始時点ではYi=Xiであり、Vj=0である。この点を追跡の開始ポイントにして、勾配法により動きベクトルVjを求め、次のポイントをYi=Yi+Vjに更新する(ステップF12)。
【0030】
このとき得られたVjの動き量が所定値以下に収束していれば(ステップF13のYes)、終了とする。また、所定値より大きければ(ステップF13のNo)、ステップF11に戻って同様の計算を繰り返す。その際、繰り返し回数jを+1ずつ更新し(ステップF15)、その値が予め設定された最大反復数に達した時点で(ステップF14のYes)、終了とする。
【0031】
図11に戻って、レイヤmでの特徴点の動きベクトルVjが得られると、次に、1つの上の階層で特徴点の追跡処理を行うべく、XiとYiを以下のように2倍にする(ステップE16)。
【0032】
Xi=Xi×2
Yi=Yi×2
そして、階層パラメータkの値を−1して(ステップE18)、ステップE14に戻り、1つ上の階層で同様の追跡処理を行う。このとき、下の階層で得られた動きベクトルVjの値を引き継いで追跡処理を行うことになる。最上位のレイヤ1まで追跡すると(ステップE17のYes)、別の特徴点について同様の処理を繰り返す。そして、i=nに達したとき(ステップE19のYes)、つまり、n個分の特徴点に対する追跡処理を終えた時点で完了とする。
【0033】
前記ステップD29の画像合成処理では、これらの特徴点の座標位置に基づいて射影変換の行列式Hを求め、その行列式Hに従って2つの画像(基準画像と被追跡画像)の位置合わせを行って合成することになる。
【特許文献1】特開2001−167249号公報
【発明の開示】
【発明が解決しようとする課題】
【0034】
上述したように、画像間で特徴点を追跡する際に、各画像をピラミッド化して最も解像度が少ないレイヤから順番に最も解像度が高いレイヤに向かって追跡していく方法が用いられる。
【0035】
しかしながら、この方法をソフトウエアで実装した場合に、高解像度の画像にかけるフィルタ演算が多くなり、その処理量が膨大なるといった問題がある。
【0036】
本発明は前記のような点に鑑みなされたもので、画像処理に必要な演算量を削減し、十分な追跡精度を保ちながら合成画像を作成することのできる画像合成装置、画像合成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0037】
本発明の請求項1に係る画像合成装置は、第1の画像から抽出した特徴点を第2の画像で追跡し、その特徴点の座標位置から前記第1の画像と前記第2の画像を位置合わせして合成する画像合成装置であって、元画像の所定縮小サイズを最上位のレイヤとして、前記第1および第2の画像を段階的に縮小してピラミッド階層を構成するピラミッド化手段と、このピラミッド化手段による最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する特徴点追跡手段と、この特徴点追跡手段によって得られる前記特徴点の動きを示すベクトルに所定の係数を乗じて前記特徴点の動きを収束させる収束手段とを具備して構成される。
【0038】
このような構成によれば、特徴点を追跡する際に元画像サイズでの画像処理が不要となるので、その分、演算量が大幅に削減される。また、特徴点の動きベクトルに所定の係数を乗じることで収束性を高め、十分な追跡精度を保ちながら合成画像を作成することができる。
【0039】
また、本発明の請求項2は、前記請求項1記載の画像合成装置において、前記ピラミッド化手段は、元画像の1/4サイズを最上位のレイヤとして前記第1および第2の画像を段階的に縮小してピラミッド階層を構成することを特徴とする。
【0040】
このような構成によれば、最下位のレイヤから順に特徴点を追跡していき、最終的に元画像の1/4サイズでその追跡を完了することができるので、特徴点の追跡処理を高速化できる。
【0041】
本発明の請求項3は、前記請求項1記載の画像合成装置において、前記収束手段は、前記所定の係数を各階層での特徴点の追跡回数に応じて段階的に収束性を高める方向に変更することを特徴とする。
【0042】
このような構成によれば、特徴点の動きベクトルが発散することを防いで、所定の追跡回数内で安定して収束させることができる。
【0043】
本発明の請求項4に係る画像合成方法は、第1の画像から抽出した特徴点を第2の画像で追跡し、その特徴点の座標位置から前記第1の画像と前記第2の画像を位置合わせして合成する画像合成方法であって、元画像の所定縮小サイズを最上位のレイヤとして、前記第1および第2の画像を段階的に縮小してピラミッド階層を構成する第1のステップと、この第1のステップによる最下位のレイヤから順番に最上位のレイヤに向けて特徴点を追跡する第2のステップと、この第2のステップによって得られる前記特徴点の動きを示すベクトルに所定の係数を乗じて前記特徴点の動きを収束させる第3のステップとを備えたことを特徴とする。
【0044】
このような画像合成方法によれば、前記各ステップに従った処理を実行することにより、前記請求項1記載の発明と同様の作用効果が奏せられる。
【0045】
本発明の請求項5に係るプログラムは、第1の画像から抽出した特徴点を第2の画像で追跡し、その特徴点の座標位置から前記第1の画像と前記第2の画像を位置合わせして合成するプログラムであって、コンピュータに、元画像の所定縮小サイズを最上位のレイヤとして、前記第1および第2の画像を段階的に縮小してピラミッド階層を構成する第1の機能と、この第1の機能による最下位のレイヤから順番に最上位のレイヤに向けて特徴点を追跡する第2の機能と、この第2の機能によって得られる前記特徴点の動きを示すベクトルに所定の係数を乗じて前記特徴点の動きを収束させる第3の機能とを実行させることを特徴とする。
【0046】
したがって、コンピュータが前記各機能を実現するためのプログラムを実行することにより、前記請求項1記載の発明と同様の作用効果が奏せられる。
【発明の効果】
【0047】
本発明によれば、ピラミッド化による特徴点の追跡を行う場合に、画像処理に必要な演算量を削減し、十分な追跡精度を保ちながら合成画像を作成することができる。
【発明を実施するための最良の形態】
【0048】
以下、図面を参照して本発明の実施形態を説明する。
【0049】
図1は本発明の一実施形態に係る画像合成装置としてデジタルカメラを例にした場合の外観構成を示す図であり、図1(a)は主に前面の構成、同図(b)は主に背面の構成を示す斜視図である。
【0050】
このデジタルカメラ1は、略矩形の薄板状ボディ2の前面に、撮影レンズ3、セルフタイマランプ4、光学ファインダ窓5、ストロボ発光部6、マイクロホン部7などを有し、上面の(ユーザにとって)右端側には電源キー8及びシャッタキー9などが設けられている。
【0051】
電源キー8は、電源のオン/オフ毎に操作するキーであり、シャッタキー9は、撮影時に撮影タイミングを指示するキーである。
【0052】
また、デジタルカメラ1の背面には、撮影モード(R)キー10、再生モード(P)キー11、光学ファインダ12、スピーカ部13、マクロキー14、ストロボキー15、メニュー(MENU)キー16、リングキー17、セット(SET)キー18、表示部19などが設けられている。
【0053】
撮影モードキー10は、電源オフの状態から操作することで自動的に電源オンとして静止画の撮影モードに移行する一方で、電源オンの状態から繰返し操作することで、静止画モード、動画モードを循環的に設定する。静止画モードは、静止画を撮影するためのモードである。また、動画モードは、動画を撮影するためのモードである。
【0054】
前記シャッタキー9は、これらの撮影モードに共通に使用される。すなわち、静止画モードでは、シャッタキー9が押下されたときのタイミングで静止画の撮影が行われる。動画モードでは、シャッタキー9が押下されたときのタイミングで動画の撮影が開始され、シャッタキー9が再度押下されたときにその動画の撮影が終了する。
【0055】
再生モードキー11は、電源オフの状態から操作することで自動的に電源オンとして再生モードに移行する。
【0056】
マクロキー14は、静止画の撮影モードで通常撮影とマクロ撮影とを切換える際に操作する。ストロボキー15は、ストロボ発光部6の発光モードを切換える際に操作する。メニューキー16は、連続撮影モードを含む各種メニュー項目等を選択する際に操作する。リングキー17は、上下左右各方向への項目選択用のキーが一体に形成されたものであり、このリングキー17の中央に位置するセットキー18は、その時点で選択されている項目を設定する際に操作する。
【0057】
表示部19は、バックライト付きのカラー液晶パネルで構成されるもので、撮影モード時には電子ファインダとしてスルー画像のモニタ表示を行う一方で、再生モード時には選択した画像等を再生表示する。
【0058】
なお、図示はしないがデジタルカメラ1の底面には、記録媒体として用いられるメモリカードを着脱するためのメモリカードスロットや、外部のパーソナルコンピュータ等と接続するためのシリアルインタフェースコネクタとして、例えばUSB(Universal Serial Bus)コネクタ等が設けられている。
【0059】
図2はデジタルカメラ1の電子回路構成を示すブロック図である。
【0060】
このデジタルカメラ1には、光学レンズ装置21、イメージセンサ22、メモリ23、表示装置24、画像処理装置25、操作部26、コンピュータインタフェース部27、外部記憶IO装置28、プログラムコード記憶装置29、CPU30、メモリカード31が備えられている。
【0061】
光学レンズ装置21は、撮影レンズ3を構成する図示せぬフォーカスレンズおよびズームレンズを含むレンズ光学系とその駆動部とを備えたものであり、イメージセンサ22上に、撮影対象からの光を集光させて像を結像させる。
【0062】
イメージセンサ22は、結像した画像を、デジタル化した画像データとして取り込むためのものであり、例えば、CCD(Charge Coupled Device:電荷結合素子)等によって構成される。イメージセンサ22は、CPU30によって制御され、シャッタキー9が押下されなければ、プレビュー用の解像度の低いデジタルの画像データを生成し、この画像データを秒間30枚程度の間隔で、定期的にメモリ23に送出する。また、イメージセンサ22は、シャッタキー9が押下されると、解像度の高い画像データを生成し、生成した画像データをメモリ23に送出する。また、イメージセンサ22は、CPU30によって撮像感度(ISO感度)の設定可能である。
【0063】
メモリ23は、イメージセンサ22からの低解像度のプレビュー画像、高解像度の画像データまたは画像処理装置25が画像処理する元画像のデータ、処理後の画像データを一時記憶するものである。メモリ23は、一時記憶した画像データを表示装置24または画像処理装置25に送り出す。
【0064】
表示装置24は、液晶モニタである表示部19に画像を表示させるためのものである。表示装置24は、メモリ23が一時記憶した低解像度のプレビュー画像または解像度の高い画像を表示部19に表示する。
【0065】
画像処理装置25は、メモリ23に一時記憶された画像データに対して、画像データの圧縮等の画像処理を行うためのものである。
【0066】
操作部26は、シャッタキー9の他に、電源キー8、撮影モードキー10、再生モードキー11、マクロキー14、ストロボキー15、メニューキー16、リングキー17、セットキー18などから構成され、それらのキー操作に伴う信号は直接CPU30へ送出される。
【0067】
コンピュータインタフェース部27は、デジタルカメラ1がコンピュータ(図示せず)に接続されたときに、USBのストレジクラスドライバとして動作するものである。これにより、コンピュータは、デジタルカメラ1に接続されると、メモリカード31をコンピュータの外部記憶装置として取り扱う。
【0068】
外部記憶IO装置28は、メモリカード31との間で、画像データ等の入出力を行うものである。メモリカード31は、外部記憶IO装置28から供給された画像データ等を記憶するものである。
【0069】
プログラムコード記憶装置29は、CPU30が実行するプログラムを記憶するためのものであり、ROMやフラッシュメモリなどによって構成される。
【0070】
CPU30は、プログラムコード記憶装置29に格納されているプログラムに従って、システム全体を制御するものである。なお、メモリ23は、CPU30の作業メモリとしても用いられる。
【0071】
操作部26のスイッチ・キーが押下されることにより、操作部26から操作情報が送信されると、CPU30は、この操作情報に基づいて、イメージセンサ22、メモリ23、表示装置24、画像処理装置25等を制御する。
【0072】
具体的には、操作部26から撮影モードキー10が押下された旨の操作情報が送信されると、CPU30は各部を撮影モードに設定する。この状態で、シャッタキー9が押下されなければ、イメージセンサ22をプレビューモードに設定し、シャッタキー9が押下されれば、解像度の高い撮影対象画像を読み込む高解像度モードに設定する。その際、メニューキー16の操作により連続撮影モードが設定されていれば、シャッタキー9の押下に伴い、所定枚数分の画像の読み込み処理が所定時間間隔で実行される。
【0073】
また、再生モードキー11が押下された旨の操作情報が送信されると、CPU30は、各部を再生モードに設定する。
【0074】
また、CPU30は、外部記憶IO装置28を介してメモリカード31に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード31から、記録された画像データを読み出したりする。CPU30は、メモリカード31には、例えば、JPEGフォーマットで圧縮した画像データを記録する。
【0075】
CPU30は、メモリ23に画像データを一時記憶する際、プレビュー画像、高解像度の画像データを異なる記憶領域に記録する。また、CPU30は、メモリカード31には、画像データを画像ファイルに分けて記録する。
【0076】
また、CPU30は、外部記憶IO装置28を介してメモリカード31に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード31から、記録された画像データを読み出したりする。CPU30は、メモリカード31に画像データを格納する画像ファイルを作成する。
【0077】
次に、前記構成のデジタルカメラ1による画像合成処理について説明する。
【0078】
図9で説明したように、一般的なピラミッド化による方法では、元画像に対してノイズ除去フィルタをかけた画像をレイヤ0として、そのレイヤ0に対してサブサンプリングしたものをレイヤ1、レイヤ1に対してサブサンプリングしたものをレイヤ2…として順にレイヤmまで求める。そして、画像間の特徴点を追跡する場合に、最下位のレイヤmから順番に最も解像度が高い最上位のレイヤ0に向かって追跡を行う。
【0079】
ここで、当然のことながら、全てのフィルタ処理は解像度が高いほど多くなる。よって、図9のような方法では、元画像サイズであるレイヤ0に対してのフィルタ処理が最も多くなり、ソフトウエアで実装する場合にその処理量が膨大となり、また、追跡処理に時間がかかるなどの問題がある。
【0080】
そこで、本実施形態では、図3に示すように、元画像の1/4サイズ(縦横1/2サイズ)を最上位のレイヤ(k=1)としてピラミッド階層を構成し、特徴点の抽出処理および追跡処理をこのピラミッド階層で行う。これにより、図3から明らかなように、各レイヤの画像を作るのに必要なフィルタ処理の演算量が大幅に削減され、追跡処理時間も短縮化されることになる。
【0081】
ただし、その代償として、オプティカルフローの精度が低下する問題がある。これは、図12で説明した特徴点の動きベクトルの計算(Yi=Xi+V0+V1+…+Vj)で各Vjが振動することが原因である。この問題点を解決するため、各VjをYiに単純に加算していくのではなく、j(繰り返し回数)によって異なる係数をVjにかけ、加算値を徐々に小さくしていくという方法を用いる。
【0082】
以下に、図4乃至図6のフローチャートを用いて具体的な処理について説明する。なお、以下の各フローチャートで示される処理は、マイクロコンピュータであるCPU30がプログラムコード記憶装置29に記憶されたプログラムを読み込むことにより、そのプログラムに記述された手順に従って実行される。
【0083】
図4はデジタルカメラ1の画像合成処理の全体の流れを示すフローチャートである。図5はその画像合成処理に含まれる特徴点抽出処理を示すフローチャート、図6はその特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【0084】
今、連続撮影により複数枚の連続した画像が図2に示したメモリ23に記憶されており、そのメモリ23から各画像を順次読み出して重ね合わせることで1枚の合成画像を作成するものとして説明する。
【0085】
図4のフローチャートにおいて、ステップA11〜A19は基準画像に対するピラミッド化の処理、ステップA20〜A27はその基準画像に重ね合わせる画像に対するピラミッド化の処理を示している。
【0086】
すなわち、まず、CPU30は、メモリ23から画像合成の基準となる画像を読み込む(ステップA11)。その際、図3に示すように、CPU30は、階層数k=1として(ステップA12)、前記基準画像にノイズ除去とサブサンプリングの合成フィルタをかけて、元画像の1/4(縦横1/2)サイズに縮小したレイヤ1の画像を生成する(ステップA13)。本実施形態では、このレイヤ1の画像サイズがピラミッド階層の最上位となる。
【0087】
CPU30は、このレイヤ1の画像の中で特徴点を抽出した後(ステップA14)、当該画像に微分フィルタをかけて画素値の勾配を求める(ステップA15)。
【0088】
続いて、CPU30は、kを+1更新し(ステップA16)、サブサンプリングフィルタによりレイヤ1の画像を縦横1/2サイズに間引き処理することでレイヤ2の画像を作成する(ステップA17)。そして、このレイヤ2の画像に微分フィルタをかけて画素値の勾配を求める(ステップA18)。
【0089】
以後、kを更新しながら、k=mになるまで前記同様の処理を繰り返す(ステップA19)。これにより、図3に示したように、レイヤ1を最上位、レイヤmを最下位とした階層画像が作成されることになる。
【0090】
続いて、CPU30は、前記メモリ23から基準画像に重ね合わせる画像を読み出し(ステップA20)、k=1にセットした後(ステップA21)、その画像に対して前記同様のピラミッド化の処理を行うことで(ステップA22〜A27)、レイヤ1〜mの画像を作成する。この場合、前記基準画像のときと同様に、レイヤ1では、当該画像に対してノイズ除去とサブサンプリングの合成フィルタをかけて、元画像の1/4(縦横1/2)サイズに縮小した画像を作成する。
【0091】
このようにして、基準画像とそれに重ね合わせる画像をピラミッド化すると、次に、それぞれのレイヤ画像間で特徴点の追跡処理を行い(ステップA28)、その追跡処理で得られた特徴点の座標位置に基づいて両画像を位置合わせして合成する(ステップA29)。これを所定枚数分繰り返して行うことで(ステップA30)、1枚の合成画像を作成する。
【0092】
次に、前記ステップA28で実行される特徴点追跡処理について説明する。
【0093】
図5のフローチャートに示すように、まず、i=0とおく(ステップB11)。iは処理対象となる特徴点の番号であり、0〜nの値を取るものとする。
【0094】
今、基準画像の特徴点の位置をXi、その基準画像に重ね合わせる画像(以下、被追跡画像と称す)の特徴点の位置(検索位置)をYiとすると、レイヤmにおける特徴点位置は以下のように表せる(ステップB12)。
【0095】
Xi=Xi/2
Yi=Xi
ここで、特徴点の追跡は最下位のレイヤから始めるため、k=mとする(ステップB13)。また、j(繰り返し回数)を初期値0にセットして(ステップB14)、被追跡画像上における特徴点iの動きベクトルVjを計算する(ステップB15)。
【0096】
図6のフローチャートに示すように、CPU30は、XiとYiから動きベクトルVjを計算する(ステップC11)。この場合、追跡開始時点ではYi=Xiであり、Vj=0である。この点を追跡の開始ポイントにして、勾配法により動きベクトルVjを求める。
【0097】
ここで、動きベクトルVjの振動を抑えるため、CPU30は、j(繰り返し回数)によって異なる係数をVjに乗じる(ステップC12〜C15)。具体的には、最大反復数をT、係数をαとすると、下記のような条件でαが設定される。
【0098】
0≦j<T×1/3のとき、α=1
T×1/3≦j<T×2/3のとき、α=1/2
T×2/3≦jのとき、α=1/4
すなわち、例えば最大反復数Tが12回とすると、jが4回未満であれば、係数α=1である。よって、Vjはそのままの値となる。一方、jが4回〜7回の間では、係数α=1/2に設定される。よって、Vj=Vj/2となる。また、jが8回以上であれば、係数α=1/3に設定され、Vj=Vj/4となる。
【0099】
このようにして、jに応じた係数を特徴点の動きベクトルVjに乗じた後、次のポイントをYi=Yi+Vjに更新する(ステップC16)。そして、このとき得られたVjの動き量と所定値とを比較し、Vjの動き量が所定値以下に収束していれば(ステップC17のYes)、終了とする。また、所定値より大きければ(ステップC17のNo)、ステップC11に戻って同様の計算を繰り返す。その際、繰り返し回数jを+1ずつ更新し(ステップC19)、その値が予め設定された最大反復数に達した時点で(ステップC18のYes)、終了とする。
【0100】
図5に戻って、レイヤmでの特徴点の動きベクトルVjが得られると、次に、CPU30は、1つの上の階層で特徴点の追跡処理を行うべく、XiとYiを以下のように2倍にする(ステップB16)。
【0101】
Xi=Xi×2
Yi=Yi×2
そして、CPU30は、階層パラメータkの値を−1して(ステップB18)、ステップB14に戻り、1つ上の階層で同様の追跡処理を行う。このとき、下の階層で得られた動きベクトルVjの値を引き継いで追跡処理を行うことになる。最上位のレイヤ1まで追跡すると(ステップB17のYes)、別の特徴点について同様の処理を繰り返す。そして、i=nに達したとき(ステップB19のYes)、つまり、n個分の特徴点に対する追跡処理を終えた時点で完了とする。
【0102】
前記ステップA29の画像合成処理では、これらの特徴点の座標位置に基づいて射影変換の行列式Hを求め、その行列式Hに従って2つの画像(基準画像と被追跡画像)の位置合わせを行って合成することになる。
【0103】
図7は動きベクトルの収束の概念を説明するための図であり、図7(a)は発散状態、同図(b)は収束状態を示す。
【0104】
ある1つの特徴点を2枚の画像間で勾配法を繰り返して追跡した場合に、図7(a)に示すように、動きベクトルVjは徐々に収束していくが、最終段階で動きベクトルVjが振動して発散状態になることがある。この例では、動きベクトルVjがV1〜V7まで徐々に収束した後、発散状態となったことを示している。この場合、特徴点の位置を正確に特定できないため、射影変換の行列式Hの精度に影響がでる。
【0105】
そこで、図7(b)の点線で示すように、動きベクトルVjに所定の係数を乗じることで振動を抑え込み、最終段階で収束させる。この例では、V6〜V9までのベクトル成分が係数によって減衰し、最終的に収束状態となったことを示している。この場合、係数の値は一定ではなく、そのときの繰り返し回数に応じて減衰量を多くする方向(つまり、収束性の高める方向)に段階的に変更される。具体的には、図6で説明したように、1→1/2→1/4といったように変更される。
【0106】
以上のように、元画像の1/4サイズを最上位レイヤとしたピラミッド階層により特徴点を追跡する構成としたことで、従来のように元画像サイズを含めたピラミッド階層に比べ、元画像サイズでの画像処理が不要となるので、その分、演算量が大幅に削減される。また、特徴点の動きベクトルに所定の係数を乗じることで収束性を高め、十分な追跡精度を保ちながら合成画像を作成することができる。
【0107】
なお、前記実施形態では、元画像の1/4サイズを最上位レイヤとしたが、1/4サイズ以外の縮小サイズを最上位レイヤとしてピラミッド階層を構成することでも良い。ただし、追跡の最終段階となる最上位レイヤでの画像サイズが小さくなるほど、動きベクトルが振動して収束しづらくなるため、そのことを考慮して動きベクトルに乗じる係数を設定することが好ましい。
【0108】
また、前記実施形態では、動きベクトルに乗じる係数を図6のように2段階に変更したが、さらに細かく段階的に変更することでも良く、また、その係数を乗じるタイミングも特徴点の追跡回数に応じて適宜変更可能である。要は、各階層で動きベクトルが発散することを防いで、安定して収束させることのできる減衰係数を適切なタイミングで乗じれば良い。
【0109】
なお、前記実施形態では、デジタルカメラを例にして説明したが、本発明はこれに限られるものではなく、例えばカメラ付きの携帯電話など、撮像機能を備えた電子機器であれば同様に適用可能である。
【0110】
さらに、予めカメラで連続撮影した複数枚の画像をPC(パーソナルコンピュータ)等の情報処理装置に与えて、その情報処理装置内で前記のような処理を行うことで良い。画像の提供方法としては、着脱可能なメモリに画像を保存する方法の他に、通信ネットワークを介して提供することでも良い。
【0111】
要するに、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0112】
さらに、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD−ROM等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、そのプログラム自体をネットワーク等の伝送媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムあるいは伝送媒体を介して提供されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【図面の簡単な説明】
【0113】
【図1】図1は本発明の一実施形態に係る画像合成装置としてデジタルカメラを例にした場合の外観構成を示す図であり、図1(a)は主に前面の構成、同図(b)は主に背面の構成を示す斜視図である。
【図2】図2は同実施形態におけるデジタルカメラの電子回路構成を示すブロック図である。
【図3】図3は同実施形態におけるデジタルカメラによるピラミッド化の処理を説明するための図である。
【図4】図4は同実施形態におけるデジタルカメラの画像合成処理の全体の流れを示すフローチャートである。
【図5】図5は前記画像合成処理に含まれる特徴点抽出処理を示すフローチャートである。
【図6】図6は前記特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【図7】図7は動きベクトルの収束の概念を説明するための図であり、図7(a)は発散状態、同図(b)は収束状態を示す図である。
【図8】図8はオプティカルフロー推定を用いた画像合成技術を説明するための図である。
【図9】図9は従来のピラミッド化による特徴点の追跡方法を説明するための図である。
【図10】図10は従来の画像合成処理の全体の流れを示すフローチャートである。
【図11】図11は前記画像合成処理に含まれる特徴点抽出処理を示すフローチャートである。
【図12】図12は前記特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【符号の説明】
【0114】
1…デジタルカメラ、2…ボディ、3…撮影レンズ、4…セルフタイマランプ、5…光学ファインダ窓、6…ストロボ発光部、7…マイクロホン部、8…電源キー、9…シャッタキー、10…撮影モードキー、11…再生モードキー、12…光学ファインダ、13…スピーカ部、14…マクロキー、15…ストロボキー、16…メニュー(MENU)キー、17…リングキー、18…セット(SET)キー、19…表示部、21…光学レンズ装置、22…イメージセンサ、23…メモリ、24…表示装置、25…画像処理装置、26…操作部、27…コンピュータインタフェース部、28…外部記憶IO装置、29…プログラムコード記憶装置、30…CPU、31…メモリカード。

【特許請求の範囲】
【請求項1】
第1の画像から抽出した特徴点を第2の画像で追跡し、その特徴点の座標位置から前記第1の画像と前記第2の画像を位置合わせして合成する画像合成装置であって、
元画像の所定縮小サイズを最上位のレイヤとして、前記第1および第2の画像を段階的に縮小してピラミッド階層を構成するピラミッド化手段と、
このピラミッド化手段による最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する特徴点追跡手段と、
この特徴点追跡手段によって得られる前記特徴点の動きを示すベクトルに所定の係数を乗じて前記特徴点の動きを収束させる収束手段と
を具備したことを特徴とする画像合成装置。
【請求項2】
前記ピラミッド化手段は、元画像の1/4サイズを最上位のレイヤとして前記第1および第2の画像を段階的に縮小してピラミッド階層を構成することを特徴とする請求項1記載の画像合成装置。
【請求項3】
前記収束手段は、前記所定の係数を各階層での特徴点の追跡回数に応じて段階的に収束性を高める方向に変更することを特徴とする請求項1記載の画像合成装置。
【請求項4】
第1の画像から抽出した特徴点を第2の画像で追跡し、その特徴点の座標位置から前記第1の画像と前記第2の画像を位置合わせして合成する画像合成方法であって、
元画像の所定縮小サイズを最上位のレイヤとして、前記第1および第2の画像を段階的に縮小してピラミッド階層を構成する第1のステップと、
この第1のステップによる最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する第2のステップと、
この第2のステップによって得られる前記特徴点の動きを示すベクトルに所定の係数を乗じて前記特徴点の動きを収束させる第3のステップと
を備えたことを特徴とする画像合成方法。
【請求項5】
第1の画像から抽出した特徴点を第2の画像で追跡し、その特徴点の座標位置から前記第1の画像と前記第2の画像を位置合わせして合成するプログラムであって、
コンピュータに、
元画像の所定縮小サイズを最上位のレイヤとして、前記第1および第2の画像を段階的に縮小してピラミッド階層を構成する第1の機能と、
この第1の機能による最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する第2の機能と、
この第2の機能によって得られる前記特徴点の動きを示すベクトルに所定の係数を乗じて前記特徴点の動きを収束させる第3の機能と
を実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2007−49545(P2007−49545A)
【公開日】平成19年2月22日(2007.2.22)
【国際特許分類】
【出願番号】特願2005−233373(P2005−233373)
【出願日】平成17年8月11日(2005.8.11)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】