(57)【特許請求の範囲】
【請求項１】
第１の画像から抽出した特徴点を第２の画像で追跡し、その特徴点の座標位置から前記第１の画像と前記第２の画像を位置合わせして合成する画像合成装置であって、
元画像の所定縮小サイズを最上位のレイヤとして、前記第１および第２の画像を段階的に縮小してピラミッド階層を構成するピラミッド化手段と、
このピラミッド化手段による最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する特徴点追跡手段と、
この特徴点追跡手段によって得られる前記特徴点の動きを示すベクトルに、前記特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じて前記特徴点の動きを収束させる収束手段と
を具備したことを特徴とする画像合成装置。
【請求項２】
前記ピラミッド化手段は、元画像の１／４サイズを最上位のレイヤとして前記第１および第２の画像を段階的に縮小してピラミッド階層を構成することを特徴とする請求項１記載の画像合成装置。
【請求項３】
第１の画像から抽出した特徴点を第２の画像で追跡し、その特徴点の座標位置から前記第１の画像と前記第２の画像を位置合わせして合成する画像合成方法であって、
元画像の所定縮小サイズを最上位のレイヤとして、前記第１および第２の画像を段階的に縮小してピラミッド階層を構成する第１のステップと、
この第１のステップによる最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する第２のステップと、
この第２のステップによって得られる前記特徴点の動きを示すベクトルに、前記特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じて前記特徴点の動きを収束させる第３のステップと
を備えたことを特徴とする画像合成方法。
【請求項４】
第１の画像から抽出した特徴点を第２の画像で追跡し、その特徴点の座標位置から前記第１の画像と前記第２の画像を位置合わせして合成するプログラムであって、
コンピュータに、
元画像の所定縮小サイズを最上位のレイヤとして、前記第１および第２の画像を段階的に縮小してピラミッド階層を構成する第１の機能と、
この第１の機能による最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する第２の機能と、
この第２の機能によって得られる前記特徴点の動きを示すベクトルに、前記特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じて前記特徴点の動きを収束させる第３の機能と
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばデジタルカメラ等の撮像装置に用いられる画像合成装置と、画像合成方法及びプログラムに関する。
【背景技術】
【０００２】
近年、デジタルカメラでは、手ぶれを起こさない短い露光時間で連続撮影を行い、その連続撮影によって得られた複数枚の画像を重ね合わせることで、ブレのないノイズを抑えた鮮明な画像を得る方法が考えられている。
【０００３】
ここで、連続撮影における各フレームの間隔は短時間であっても、その間にカメラと被写体との間に位置ずれが生じる可能性がある。このため、連続撮影によって得られた各画像を重ね合わせて合成する場合には、このような位置ずれを補正して重ね合わせることが必要となる。
【０００４】
例えば、特許文献１では、２枚の画像からオプティカルフローを計算し、そのオプティカルフローに基づいて２枚の画像間での位置合わせを行う技術について開示されている。オプティカルフロー（optical flow）とは、カメラから見た物体の見かけ上の動きのことである。
【０００５】
このオプティカルフローの推定方法の１つに勾配法と呼ばれるものがある。勾配法は、動きを画素値（明るさ）の勾配（一次微分）から計算する方法である。つまり、勾配法によるオプティカルフロー推定とは、「物体上の点の明るさは移動後も変化しない」という仮定から時空間微分とオプティカルフローとの関係式を導出し、それを利用して対象の動きを推定するものである。
【０００６】
画像合成技術では、このような勾配法を用いて画像上で特徴点を追跡することにより、両画像間における射影変換の行列式Ｈを決定し、その行列式Ｈを用いて画像間の位置ずれを補正して重ね合わせを行う。
【０００７】
具体的に説明すると、例えば図８に示すように、画像１と画像２を合成対象とした場合に、まず、基準となる画像１の中から所定数分の特徴点をランダムに抽出し、これらの特徴点を画像１に重ね合わせる画像２上で勾配法を用いて追跡する。今、図中のＰ１，Ｐ２，Ｐ３を画像１から抽出した特徴点とすれば、この３つの特徴点Ｐ１，Ｐ２，Ｐ３の場所を画像２の中で追跡することになる。
【０００８】
特徴点Ｐ１，Ｐ２，Ｐ３を追跡できたら、この特徴点Ｐ１，Ｐ２，Ｐ３の画像２上の座標位置と画像１上の座標位置との関係から射影変換における行列式Ｈを算出する。そして、この行列式Ｈに基づいて画像１上のすべての特徴点をずらしてみて（画像１′）、ある程度の精度で画像２上の各特徴点と一致すれば（画像１′＋画像２）、当該行列式Ｈを用いて画像１と画像２との位置ずれを補正して重ね合わせる。
【０００９】
なお、実際には、このような特徴点の抽出と追跡を何回か繰り返し行うことで、最終的に最も評価値の高い行列式Ｈを選出するといった処理を行う。
【００１０】
ところで、画像間の特徴点を追跡する場合に、画像上のすべての画素を対象として特徴点を１つ１つ追跡していたのでは計算量が多くなり、非常に時間がかかる。そこで、予め段階的に解像度を低くした画像を作り、最も解像度が少ないレイヤから順番に最も解像度が高いレイヤに向かって特徴点を追跡していく方法が用いられる。これをピラミッド化と呼ぶ。
【００１１】
図９は従来のピラミッド化による特徴点の追跡方法を説明するための図である。図中のｋは階層のパラメータであり、ｋ＝０〜ｍの値を取る。ｆは元画像サイズ、∂ｆ／∂ｘと∂ｆ／∂ｙは点（ｘ，ｙ）の一次微分を表している。
【００１２】
まず、元画像に対してノイズ除去フィルタをかけ、その画像をレイヤ０とする。また、レイヤ０に対してサブサンプリング（間引きによる縮小処理）したものをレイヤ１、そのレイヤ１に対してサブサンプリングしたものをレイヤ２とし、順にレイヤｍまでのピラミッド階層を構成する。
【００１３】
ここで、特徴点の追跡は、最下位のレイヤｍから始め、レイヤｍから最上位のレイヤ０の画像に微分フィルタをかけて、上述した勾配法により特徴点の動きベクトルＶを求める。
【００１４】
すなわち、例えば画像１（基準画像）の特徴点を、その画像１に連続する画像２で追跡する場合に、まず、最下位のレイヤにて画像２の追跡開始点ＹをＹ＝Ｘにして、勾配法により特徴点の動きベクトルＶを求める。そして、次のポイントをＹ＝Ｙ＋Ｖに更新し、そのポイントから再度勾配法により動きベクトルＶを求める。同様にして、次のポイントをＹ＝Ｙ＋Ｖに更新する。これを繰り返し、Ｖが十分小さくなったか、予定された回数を繰り返した時点で計算を終了する。
【００１５】
続いて、１つ上の階層にて同様の追跡を行う。この場合、階層が１つ上がる毎に画像サイズが大きくなる。１階層毎に画像の１辺が倍になるものと仮定した場合に、下の階層で得られたＸとＹを２倍にして、これを初期値として特徴点追跡（動きベクトルの計算）を繰り返す。
【００１６】
最終的に最上位のレイヤまで動きベクトルを順に引き継ぎながら特徴点を追跡していく。そして、最終的に得られた画像２上の特徴点の位置と画像１上の特徴点の位置との相対関係から上述した射影変換の行列式Ｈを算出する。
【００１７】
具体的な処理動作を図１０乃至図１２に示す。図１０は従来の画像合成処理の全体の流れを示すフローチャートである。図１１はその画像合成処理に含まれる特徴点抽出処理を示すフローチャート、図１２はその特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【００１８】
今、連続撮影により複数枚の連続した画像が図示せぬメモリに記憶されており、そのメモリから各画像を順次読み出して重ね合わせることで１枚の合成画像を作成するものとして説明する。
【００１９】
図１０のフローチャートにおいて、ステップＤ１１〜Ｄ１９は基準画像に対するピラミッド化の処理、ステップＤ２０〜Ｄ２７はその基準画像に重ね合わせる画像に対するピラミッド化の処理を示している。
【００２０】
すなわち、まず、前記メモリから画像合成の基準となる画像を読み込む（ステップＤ１１）。その際に、図９に示すように、階層数ｋ＝０として（ステップＤ１２）、前記基準画像にノイズ除去フィルタをかけてレイヤ０の画像を生成する（ステップＤ１３）。このレイヤ０の画像の中で特徴点を抽出した後（ステップＤ１４）、当該画像に微分フィルタをかけて画素値の勾配を求める（ステップＤ１５）。
【００２１】
続いて、ｋを＋１更新し（ステップＤ１６）、サブサンプリングフィルタによりレイヤ０の画像を縦横１／２サイズに間引き処理することでレイヤ１の画像を作成する（ステップＤ１７）。そして、このレイヤ１の画像に微分フィルタをかけて画素値の勾配を求める（ステップＤ１８）。
【００２２】
以後、ｋを更新しながら、ｋ＝ｍになるまで前記同様の処理を繰り返す（ステップＤ１９）。これにより、図９に示したように、レイヤ０を最上位、レイヤｍを最下位とした階層画像が作成されることになる。
【００２３】
続いて、前記メモリから基準画像に重ね合わせる画像を読み出し（ステップＤ２０）、ｋ＝０にセットした後（ステップＤ２１）、その画像に対して前記同様のピラミッド化の処理を行うことで（ステップＤ２２〜Ｄ２７）、レイヤ０〜ｍの画像を作成する。
【００２４】
このようにして、基準画像とそれに重ね合わせる画像をピラミッド化すると、次に、それぞれのレイヤ画像間で特徴点の追跡処理を行い（ステップＤ２８）、その追跡処理で得られた特徴点の座標位置に基づいて両画像を位置合わせして合成する（ステップＤ２９）。これを所定枚数分繰り返して行うことで（ステップＤ３０）、１枚の合成画像を作成する。
【００２５】
次に、前記ステップＤ２８で実行される特徴点追跡処理について説明する。
【００２６】
図１１のフローチャートに示すように、まず、ｉ＝０とおく（ステップＥ１１）。ｉは処理対象となる特徴点の番号であり、０〜ｎの値を取るものとする。
【００２７】
今、基準画像の特徴点の位置をＸｉ、その基準画像に重ね合わせる画像（以下、被追跡画像と称す）の特徴点の位置（検索位置）をＹｉとすると、レイヤｍにおける特徴点位置は以下のように表せる（ステップＥ１２）。
【００２８】
Ｘｉ＝Ｘｉ／２ｍ
Ｙｉ＝Ｘｉ
ここで、特徴点の追跡は最下位のレイヤから始めるため、ｋ＝ｍとする（ステップＥ１３）。また、繰り返し回数（つまり階層毎の特徴点の追跡回数）ｊを初期値０にセットして（ステップＥ１４）、被追跡画像上における特徴点ｉの動きベクトルＶｊを計算する（ステップＥ１５）。
【００２９】
図１２のフローチャートに示すように、動きベクトルＶｊはＸｉとＹｉから計算する（ステップＦ１１）。この場合、追跡開始時点ではＹｉ＝Ｘｉであり、Ｖｊ＝０である。この点を追跡の開始ポイントにして、勾配法により動きベクトルＶｊを求め、次のポイントをＹｉ＝Ｙｉ＋Ｖｊに更新する（ステップＦ１２）。
【００３０】
このとき得られたＶｊの動き量が所定値以下に収束していれば（ステップＦ１３のＹｅｓ）、終了とする。また、所定値より大きければ（ステップＦ１３のＮｏ）、ステップＦ１１に戻って同様の計算を繰り返す。その際、繰り返し回数ｊを＋１ずつ更新し（ステップＦ１５）、その値が予め設定された最大反復数に達した時点で（ステップＦ１４のＹｅｓ）、終了とする。
【００３１】
図１１に戻って、レイヤｍでの特徴点の動きベクトルＶｊが得られると、次に、１つの上の階層で特徴点の追跡処理を行うべく、ＸｉとＹｉを以下のように２倍にする（ステップＥ１６）。
【００３２】
Ｘｉ＝Ｘｉ×２
Ｙｉ＝Ｙｉ×２
そして、階層パラメータｋの値を−１して（ステップＥ１８）、ステップＥ１４に戻り、１つ上の階層で同様の追跡処理を行う。このとき、下の階層で得られた動きベクトルＶｊの値を引き継いで追跡処理を行うことになる。最上位のレイヤ１まで追跡すると（ステップＥ１７のＹｅｓ）、別の特徴点について同様の処理を繰り返す。そして、ｉ＝ｎに達したとき（ステップＥ１９のＹｅｓ）、つまり、ｎ個分の特徴点に対する追跡処理を終えた時点で完了とする。
【００３３】
前記ステップＤ２９の画像合成処理では、これらの特徴点の座標位置に基づいて射影変換の行列式Ｈを求め、その行列式Ｈに従って２つの画像（基準画像と被追跡画像）の位置合わせを行って合成することになる。
【特許文献１】特開２００１−１６７２４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００３４】
上述したように、画像間で特徴点を追跡する際に、各画像をピラミッド化して最も解像度が少ないレイヤから順番に最も解像度が高いレイヤに向かって追跡していく方法が用いられる。
【００３５】
しかしながら、この方法をソフトウエアで実装した場合に、高解像度の画像にかけるフィルタ演算が多くなり、その処理量が膨大なるといった問題がある。
【００３６】
本発明は前記のような点に鑑みなされたもので、画像処理に必要な演算量を削減し、十分な追跡精度を保ちながら合成画像を作成することのできる画像合成装置、画像合成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３７】
本発明の請求項１に係る画像合成装置は、第１の画像から抽出した特徴点を第２の画像で追跡し、その特徴点の座標位置から前記第１の画像と前記第２の画像を位置合わせして合成する画像合成装置であって、元画像の所定縮小サイズを最上位のレイヤとして、前記第１および第２の画像を段階的に縮小してピラミッド階層を構成するピラミッド化手段と、このピラミッド化手段による最下位のレイヤから順番に最上位のレイヤに向けて前記特徴点を追跡する特徴点追跡手段と、この特徴点追跡手段によって得られる前記特徴点の動きを示すベクトルに、前記特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じて前記特徴点の動きを収束させる収束手段とを具備して構成される。
【００３８】
このような構成によれば、特徴点を追跡する際に元画像サイズでの画像処理が不要となるので、その分、演算量が大幅に削減される。また、特徴点の動きベクトルに特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じることで収束性を高め、十分な追跡精度を保ちながら合成画像を作成することができる。
【００３９】
また、本発明の請求項２は、前記請求項１記載の画像合成装置において、前記ピラミッド化手段は、元画像の１／４サイズを最上位のレイヤとして前記第１および第２の画像を段階的に縮小してピラミッド階層を構成することを特徴とする。
【００４０】
このような構成によれば、最下位のレイヤから順に特徴点を追跡していき、最終的に元画像の１／４サイズでその追跡を完了することができるので、特徴点の追跡処理を高速化できる。
【００４３】
本発明の請求項３に係る画像合成方法は、第１の画像から抽出した特徴点を第２の画像で追跡し、その特徴点の座標位置から前記第１の画像と前記第２の画像を位置合わせして合成する画像合成方法であって、元画像の所定縮小サイズを最上位のレイヤとして、前記第１および第２の画像を段階的に縮小してピラミッド階層を構成する第１のステップと、この第１のステップによる最下位のレイヤから順番に最上位のレイヤに向けて特徴点を追跡する第２のステップと、この第２のステップによって得られる前記特徴点の動きを示すベクトルに、前記特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じて前記特徴点の動きを収束させる第３のステップとを備えたことを特徴とする。
【００４４】
このような画像合成方法によれば、前記各ステップに従った処理を実行することにより、前記請求項１記載の発明と同様の作用効果が奏せられる。
【００４５】
本発明の請求項４に係るプログラムは、第１の画像から抽出した特徴点を第２の画像で追跡し、その特徴点の座標位置から前記第１の画像と前記第２の画像を位置合わせして合成するプログラムであって、コンピュータに、元画像の所定縮小サイズを最上位のレイヤとして、前記第１および第２の画像を段階的に縮小してピラミッド階層を構成する第１の機能と、この第１の機能による最下位のレイヤから順番に最上位のレイヤに向けて特徴点を追跡する第２の機能と、この第２の機能によって得られる前記特徴点の動きを示すベクトルに、、前記特徴点の追跡の繰り返し回数に応じて段階的に変更する係数を乗じて前記特徴点の動きを収束させる第３の機能とを実行させることを特徴とする。
【００４６】
したがって、コンピュータが前記各機能を実現するためのプログラムを実行することにより、前記請求項１記載の発明と同様の作用効果が奏せられる。
【発明の効果】
【００４７】
本発明によれば、ピラミッド化による特徴点の追跡を行う場合に、画像処理に必要な演算量を削減し、十分な追跡精度を保ちながら合成画像を作成することができる。
【発明を実施するための最良の形態】
【００４８】
以下、図面を参照して本発明の実施形態を説明する。
【００４９】
図１は本発明の一実施形態に係る画像合成装置としてデジタルカメラを例にした場合の外観構成を示す図であり、図１（ａ）は主に前面の構成、同図（ｂ）は主に背面の構成を示す斜視図である。
【００５０】
このデジタルカメラ１は、略矩形の薄板状ボディ２の前面に、撮影レンズ３、セルフタイマランプ４、光学ファインダ窓５、ストロボ発光部６、マイクロホン部７などを有し、上面の（ユーザにとって）右端側には電源キー８及びシャッタキー９などが設けられている。
【００５１】
電源キー８は、電源のオン／オフ毎に操作するキーであり、シャッタキー９は、撮影時に撮影タイミングを指示するキーである。
【００５２】
また、デジタルカメラ１の背面には、撮影モード（Ｒ）キー１０、再生モード（Ｐ）キー１１、光学ファインダ１２、スピーカ部１３、マクロキー１４、ストロボキー１５、メニュー（ＭＥＮＵ）キー１６、リングキー１７、セット（ＳＥＴ）キー１８、表示部１９などが設けられている。
【００５３】
撮影モードキー１０は、電源オフの状態から操作することで自動的に電源オンとして静止画の撮影モードに移行する一方で、電源オンの状態から繰返し操作することで、静止画モード、動画モードを循環的に設定する。静止画モードは、静止画を撮影するためのモードである。また、動画モードは、動画を撮影するためのモードである。
【００５４】
前記シャッタキー９は、これらの撮影モードに共通に使用される。すなわち、静止画モードでは、シャッタキー９が押下されたときのタイミングで静止画の撮影が行われる。動画モードでは、シャッタキー９が押下されたときのタイミングで動画の撮影が開始され、シャッタキー９が再度押下されたときにその動画の撮影が終了する。
【００５５】
再生モードキー１１は、電源オフの状態から操作することで自動的に電源オンとして再生モードに移行する。
【００５６】
マクロキー１４は、静止画の撮影モードで通常撮影とマクロ撮影とを切換える際に操作する。ストロボキー１５は、ストロボ発光部６の発光モードを切換える際に操作する。メニューキー１６は、連続撮影モードを含む各種メニュー項目等を選択する際に操作する。リングキー１７は、上下左右各方向への項目選択用のキーが一体に形成されたものであり、このリングキー１７の中央に位置するセットキー１８は、その時点で選択されている項目を設定する際に操作する。
【００５７】
表示部１９は、バックライト付きのカラー液晶パネルで構成されるもので、撮影モード時には電子ファインダとしてスルー画像のモニタ表示を行う一方で、再生モード時には選択した画像等を再生表示する。
【００５８】
なお、図示はしないがデジタルカメラ１の底面には、記録媒体として用いられるメモリカードを着脱するためのメモリカードスロットや、外部のパーソナルコンピュータ等と接続するためのシリアルインタフェースコネクタとして、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コネクタ等が設けられている。
【００５９】
図２はデジタルカメラ１の電子回路構成を示すブロック図である。
【００６０】
このデジタルカメラ１には、光学レンズ装置２１、イメージセンサ２２、メモリ２３、表示装置２４、画像処理装置２５、操作部２６、コンピュータインタフェース部２７、外部記憶ＩＯ装置２８、プログラムコード記憶装置２９、ＣＰＵ３０、メモリカード３１が備えられている。
【００６１】
光学レンズ装置２１は、撮影レンズ３を構成する図示せぬフォーカスレンズおよびズームレンズを含むレンズ光学系とその駆動部とを備えたものであり、イメージセンサ２２上に、撮影対象からの光を集光させて像を結像させる。
【００６２】
イメージセンサ２２は、結像した画像を、デジタル化した画像データとして取り込むためのものであり、例えば、ＣＣＤ（Charge Coupled Device：電荷結合素子）等によって構成される。イメージセンサ２２は、ＣＰＵ３０によって制御され、シャッタキー９が押下されなければ、プレビュー用の解像度の低いデジタルの画像データを生成し、この画像データを秒間３０枚程度の間隔で、定期的にメモリ２３に送出する。また、イメージセンサ２２は、シャッタキー９が押下されると、解像度の高い画像データを生成し、生成した画像データをメモリ２３に送出する。また、イメージセンサ２２は、ＣＰＵ３０によって撮像感度（ＩＳＯ感度）の設定可能である。
【００６３】
メモリ２３は、イメージセンサ２２からの低解像度のプレビュー画像、高解像度の画像データまたは画像処理装置２５が画像処理する元画像のデータ、処理後の画像データを一時記憶するものである。メモリ２３は、一時記憶した画像データを表示装置２４または画像処理装置２５に送り出す。
【００６４】
表示装置２４は、液晶モニタである表示部１９に画像を表示させるためのものである。表示装置２４は、メモリ２３が一時記憶した低解像度のプレビュー画像または解像度の高い画像を表示部１９に表示する。
【００６５】
画像処理装置２５は、メモリ２３に一時記憶された画像データに対して、画像データの圧縮等の画像処理を行うためのものである。
【００６６】
操作部２６は、シャッタキー９の他に、電源キー８、撮影モードキー１０、再生モードキー１１、マクロキー１４、ストロボキー１５、メニューキー１６、リングキー１７、セットキー１８などから構成され、それらのキー操作に伴う信号は直接ＣＰＵ３０へ送出される。
【００６７】
コンピュータインタフェース部２７は、デジタルカメラ１がコンピュータ（図示せず）に接続されたときに、ＵＳＢのストレジクラスドライバとして動作するものである。これにより、コンピュータは、デジタルカメラ１に接続されると、メモリカード３１をコンピュータの外部記憶装置として取り扱う。
【００６８】
外部記憶ＩＯ装置２８は、メモリカード３１との間で、画像データ等の入出力を行うものである。メモリカード３１は、外部記憶ＩＯ装置２８から供給された画像データ等を記憶するものである。
【００６９】
プログラムコード記憶装置２９は、ＣＰＵ３０が実行するプログラムを記憶するためのものであり、ＲＯＭやフラッシュメモリなどによって構成される。
【００７０】
ＣＰＵ３０は、プログラムコード記憶装置２９に格納されているプログラムに従って、システム全体を制御するものである。なお、メモリ２３は、ＣＰＵ３０の作業メモリとしても用いられる。
【００７１】
操作部２６のスイッチ・キーが押下されることにより、操作部２６から操作情報が送信されると、ＣＰＵ３０は、この操作情報に基づいて、イメージセンサ２２、メモリ２３、表示装置２４、画像処理装置２５等を制御する。
【００７２】
具体的には、操作部２６から撮影モードキー１０が押下された旨の操作情報が送信されると、ＣＰＵ３０は各部を撮影モードに設定する。この状態で、シャッタキー９が押下されなければ、イメージセンサ２２をプレビューモードに設定し、シャッタキー９が押下されれば、解像度の高い撮影対象画像を読み込む高解像度モードに設定する。その際、メニューキー１６の操作により連続撮影モードが設定されていれば、シャッタキー９の押下に伴い、所定枚数分の画像の読み込み処理が所定時間間隔で実行される。
【００７３】
また、再生モードキー１１が押下された旨の操作情報が送信されると、ＣＰＵ３０は、各部を再生モードに設定する。
【００７４】
また、ＣＰＵ３０は、外部記憶ＩＯ装置２８を介してメモリカード３１に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード３１から、記録された画像データを読み出したりする。ＣＰＵ３０は、メモリカード３１には、例えば、ＪＰＥＧフォーマットで圧縮した画像データを記録する。
【００７５】
ＣＰＵ３０は、メモリ２３に画像データを一時記憶する際、プレビュー画像、高解像度の画像データを異なる記憶領域に記録する。また、ＣＰＵ３０は、メモリカード３１には、画像データを画像ファイルに分けて記録する。
【００７６】
また、ＣＰＵ３０は、外部記憶ＩＯ装置２８を介してメモリカード３１に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード３１から、記録された画像データを読み出したりする。ＣＰＵ３０は、メモリカード３１に画像データを格納する画像ファイルを作成する。
【００７７】
次に、前記構成のデジタルカメラ１による画像合成処理について説明する。
【００７８】
図９で説明したように、一般的なピラミッド化による方法では、元画像に対してノイズ除去フィルタをかけた画像をレイヤ０として、そのレイヤ０に対してサブサンプリングしたものをレイヤ１、レイヤ１に対してサブサンプリングしたものをレイヤ２…として順にレイヤｍまで求める。そして、画像間の特徴点を追跡する場合に、最下位のレイヤｍから順番に最も解像度が高い最上位のレイヤ０に向かって追跡を行う。
【００７９】
ここで、当然のことながら、全てのフィルタ処理は解像度が高いほど多くなる。よって、図９のような方法では、元画像サイズであるレイヤ０に対してのフィルタ処理が最も多くなり、ソフトウエアで実装する場合にその処理量が膨大となり、また、追跡処理に時間がかかるなどの問題がある。
【００８０】
そこで、本実施形態では、図３に示すように、元画像の１／４サイズ（縦横１／２サイズ）を最上位のレイヤ（ｋ＝１）としてピラミッド階層を構成し、特徴点の抽出処理および追跡処理をこのピラミッド階層で行う。これにより、図３から明らかなように、各レイヤの画像を作るのに必要なフィルタ処理の演算量が大幅に削減され、追跡処理時間も短縮化されることになる。
【００８１】
ただし、その代償として、オプティカルフローの精度が低下する問題がある。これは、図１２で説明した特徴点の動きベクトルの計算（Ｙｉ＝Ｘｉ＋Ｖ０＋Ｖ１＋…＋Ｖｊ）で各Ｖｊが振動することが原因である。この問題点を解決するため、各ＶｊをＹｉに単純に加算していくのではなく、ｊ（繰り返し回数）によって異なる係数をＶｊにかけ、加算値を徐々に小さくしていくという方法を用いる。
【００８２】
以下に、図４乃至図６のフローチャートを用いて具体的な処理について説明する。なお、以下の各フローチャートで示される処理は、マイクロコンピュータであるＣＰＵ３０がプログラムコード記憶装置２９に記憶されたプログラムを読み込むことにより、そのプログラムに記述された手順に従って実行される。
【００８３】
図４はデジタルカメラ１の画像合成処理の全体の流れを示すフローチャートである。図５はその画像合成処理に含まれる特徴点抽出処理を示すフローチャート、図６はその特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【００８４】
今、連続撮影により複数枚の連続した画像が図２に示したメモリ２３に記憶されており、そのメモリ２３から各画像を順次読み出して重ね合わせることで１枚の合成画像を作成するものとして説明する。
【００８５】
図４のフローチャートにおいて、ステップＡ１１〜Ａ１９は基準画像に対するピラミッド化の処理、ステップＡ２０〜Ａ２７はその基準画像に重ね合わせる画像に対するピラミッド化の処理を示している。
【００８６】
すなわち、まず、ＣＰＵ３０は、メモリ２３から画像合成の基準となる画像を読み込む（ステップＡ１１）。その際、図３に示すように、ＣＰＵ３０は、階層数ｋ＝１として（ステップＡ１２）、前記基準画像にノイズ除去とサブサンプリングの合成フィルタをかけて、元画像の１／４（縦横１／２）サイズに縮小したレイヤ１の画像を生成する（ステップＡ１３）。本実施形態では、このレイヤ１の画像サイズがピラミッド階層の最上位となる。
【００８７】
ＣＰＵ３０は、このレイヤ１の画像の中で特徴点を抽出した後（ステップＡ１４）、当該画像に微分フィルタをかけて画素値の勾配を求める（ステップＡ１５）。
【００８８】
続いて、ＣＰＵ３０は、ｋを＋１更新し（ステップＡ１６）、サブサンプリングフィルタによりレイヤ１の画像を縦横１／２サイズに間引き処理することでレイヤ２の画像を作成する（ステップＡ１７）。そして、このレイヤ２の画像に微分フィルタをかけて画素値の勾配を求める（ステップＡ１８）。
【００８９】
以後、ｋを更新しながら、ｋ＝ｍになるまで前記同様の処理を繰り返す（ステップＡ１９）。これにより、図３に示したように、レイヤ１を最上位、レイヤｍを最下位とした階層画像が作成されることになる。
【００９０】
続いて、ＣＰＵ３０は、前記メモリ２３から基準画像に重ね合わせる画像を読み出し（ステップＡ２０）、ｋ＝１にセットした後（ステップＡ２１）、その画像に対して前記同様のピラミッド化の処理を行うことで（ステップＡ２２〜Ａ２７）、レイヤ１〜ｍの画像を作成する。この場合、前記基準画像のときと同様に、レイヤ１では、当該画像に対してノイズ除去とサブサンプリングの合成フィルタをかけて、元画像の１／４（縦横１／２）サイズに縮小した画像を作成する。
【００９１】
このようにして、基準画像とそれに重ね合わせる画像をピラミッド化すると、次に、それぞれのレイヤ画像間で特徴点の追跡処理を行い（ステップＡ２８）、その追跡処理で得られた特徴点の座標位置に基づいて両画像を位置合わせして合成する（ステップＡ２９）。これを所定枚数分繰り返して行うことで（ステップＡ３０）、１枚の合成画像を作成する。
【００９２】
次に、前記ステップＡ２８で実行される特徴点追跡処理について説明する。
【００９３】
図５のフローチャートに示すように、まず、ｉ＝０とおく（ステップＢ１１）。ｉは処理対象となる特徴点の番号であり、０〜ｎの値を取るものとする。
【００９４】
今、基準画像の特徴点の位置をＸｉ、その基準画像に重ね合わせる画像（以下、被追跡画像と称す）の特徴点の位置（検索位置）をＹｉとすると、レイヤｍにおける特徴点位置は以下のように表せる（ステップＢ１２）。
【００９５】
Ｘｉ＝Ｘｉ／２ｍ
Ｙｉ＝Ｘｉ
ここで、特徴点の追跡は最下位のレイヤから始めるため、ｋ＝ｍとする（ステップＢ１３）。また、ｊ（繰り返し回数）を初期値０にセットして（ステップＢ１４）、被追跡画像上における特徴点ｉの動きベクトルＶｊを計算する（ステップＢ１５）。
【００９６】
図６のフローチャートに示すように、ＣＰＵ３０は、ＸｉとＹｉから動きベクトルＶｊを計算する（ステップＣ１１）。この場合、追跡開始時点ではＹｉ＝Ｘｉであり、Ｖｊ＝０である。この点を追跡の開始ポイントにして、勾配法により動きベクトルＶｊを求める。
【００９７】
ここで、動きベクトルＶｊの振動を抑えるため、ＣＰＵ３０は、ｊ（繰り返し回数）によって異なる係数をＶｊに乗じる（ステップＣ１２〜Ｃ１５）。具体的には、最大反復数をＴ、係数をαとすると、下記のような条件でαが設定される。
【００９８】
０≦ｊ＜Ｔ×１／３のとき、α＝１
Ｔ×１／３≦ｊ＜Ｔ×２／３のとき、α＝１／２
Ｔ×２／３≦ｊのとき、α＝１／４
すなわち、例えば最大反復数Ｔが１２回とすると、ｊが４回未満であれば、係数α＝１である。よって、Ｖｊはそのままの値となる。一方、ｊが４回〜７回の間では、係数α＝１／２に設定される。よって、Ｖｊ＝Ｖｊ／２となる。また、ｊが８回以上であれば、係数α＝１／４に設定され、Ｖｊ＝Ｖｊ／４となる。
【００９９】
このようにして、ｊに応じた係数を特徴点の動きベクトルＶｊに乗じた後、次のポイントをＹｉ＝Ｙｉ＋Ｖｊに更新する（ステップＣ１６）。そして、このとき得られたＶｊの動き量と所定値とを比較し、Ｖｊの動き量が所定値以下に収束していれば（ステップＣ１７のＹｅｓ）、終了とする。また、所定値より大きければ（ステップＣ１７のＮｏ）、ステップＣ１１に戻って同様の計算を繰り返す。その際、繰り返し回数ｊを＋１ずつ更新し（ステップＣ１９）、その値が予め設定された最大反復数に達した時点で（ステップＣ１８のＹｅｓ）、終了とする。
【０１００】
図５に戻って、レイヤｍでの特徴点の動きベクトルＶｊが得られると、次に、ＣＰＵ３０は、１つの上の階層で特徴点の追跡処理を行うべく、ＸｉとＹｉを以下のように２倍にする（ステップＢ１６）。
【０１０１】
Ｘｉ＝Ｘｉ×２
Ｙｉ＝Ｙｉ×２
そして、ＣＰＵ３０は、階層パラメータｋの値を−１して（ステップＢ１８）、ステップＢ１４に戻り、１つ上の階層で同様の追跡処理を行う。このとき、下の階層で得られた動きベクトルＶｊの値を引き継いで追跡処理を行うことになる。最上位のレイヤ１まで追跡すると（ステップＢ１７のＹｅｓ）、別の特徴点について同様の処理を繰り返す。そして、ｉ＝ｎに達したとき（ステップＢ１９のＹｅｓ）、つまり、ｎ個分の特徴点に対する追跡処理を終えた時点で完了とする。
【０１０２】
前記ステップＡ２９の画像合成処理では、これらの特徴点の座標位置に基づいて射影変換の行列式Ｈを求め、その行列式Ｈに従って２つの画像（基準画像と被追跡画像）の位置合わせを行って合成することになる。
【０１０３】
図７は動きベクトルの収束の概念を説明するための図であり、図７（ａ）は発散状態、同図（ｂ）は収束状態を示す。
【０１０４】
ある１つの特徴点を２枚の画像間で勾配法を繰り返して追跡した場合に、図７（ａ）に示すように、動きベクトルＶｊは徐々に収束していくが、最終段階で動きベクトルＶｊが振動して発散状態になることがある。この例では、動きベクトルＶｊがＶ１〜Ｖ７まで徐々に収束した後、発散状態となったことを示している。この場合、特徴点の位置を正確に特定できないため、射影変換の行列式Ｈの精度に影響がでる。
【０１０５】
そこで、図７（ｂ）の点線で示すように、動きベクトルＶｊに所定の係数を乗じることで振動を抑え込み、最終段階で収束させる。この例では、Ｖ６〜Ｖ９までのベクトル成分が係数によって減衰し、最終的に収束状態となったことを示している。この場合、係数の値は一定ではなく、そのときの繰り返し回数に応じて減衰量を多くする方向（つまり、収束性の高める方向）に段階的に変更される。具体的には、図６で説明したように、１→１／２→１／４といったように変更される。
【０１０６】
以上のように、元画像の１／４サイズを最上位レイヤとしたピラミッド階層により特徴点を追跡する構成としたことで、従来のように元画像サイズを含めたピラミッド階層に比べ、元画像サイズでの画像処理が不要となるので、その分、演算量が大幅に削減される。また、特徴点の動きベクトルに所定の係数を乗じることで収束性を高め、十分な追跡精度を保ちながら合成画像を作成することができる。
【０１０７】
なお、前記実施形態では、元画像の１／４サイズを最上位レイヤとしたが、１／４サイズ以外の縮小サイズを最上位レイヤとしてピラミッド階層を構成することでも良い。ただし、追跡の最終段階となる最上位レイヤでの画像サイズが小さくなるほど、動きベクトルが振動して収束しづらくなるため、そのことを考慮して動きベクトルに乗じる係数を設定することが好ましい。
【０１０８】
また、前記実施形態では、動きベクトルに乗じる係数を図６のように２段階に変更したが、さらに細かく段階的に変更することでも良く、また、その係数を乗じるタイミングも特徴点の追跡回数に応じて適宜変更可能である。要は、各階層で動きベクトルが発散することを防いで、安定して収束させることのできる減衰係数を適切なタイミングで乗じれば良い。
【０１０９】
なお、前記実施形態では、デジタルカメラを例にして説明したが、本発明はこれに限られるものではなく、例えばカメラ付きの携帯電話など、撮像機能を備えた電子機器であれば同様に適用可能である。
【０１１０】
さらに、予めカメラで連続撮影した複数枚の画像をＰＣ（パーソナルコンピュータ）等の情報処理装置に与えて、その情報処理装置内で前記のような処理を行うことで良い。画像の提供方法としては、着脱可能なメモリに画像を保存する方法の他に、通信ネットワークを介して提供することでも良い。
【０１１１】
要するに、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１１２】
さらに、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク（フレキシブルディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、そのプログラム自体をネットワーク等の伝送媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムあるいは伝送媒体を介して提供されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【図面の簡単な説明】
【０１１３】
【図１】図１は本発明の一実施形態に係る画像合成装置としてデジタルカメラを例にした場合の外観構成を示す図であり、図１（ａ）は主に前面の構成、同図（ｂ）は主に背面の構成を示す斜視図である。
【図２】図２は同実施形態におけるデジタルカメラの電子回路構成を示すブロック図である。
【図３】図３は同実施形態におけるデジタルカメラによるピラミッド化の処理を説明するための図である。
【図４】図４は同実施形態におけるデジタルカメラの画像合成処理の全体の流れを示すフローチャートである。
【図５】図５は前記画像合成処理に含まれる特徴点抽出処理を示すフローチャートである。
【図６】図６は前記特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【図７】図７は動きベクトルの収束の概念を説明するための図であり、図７（ａ）は発散状態、同図（ｂ）は収束状態を示す図である。
【図８】図８はオプティカルフロー推定を用いた画像合成技術を説明するための図である。
【図９】図９は従来のピラミッド化による特徴点の追跡方法を説明するための図である。
【図１０】図１０は従来の画像合成処理の全体の流れを示すフローチャートである。
【図１１】図１１は前記画像合成処理に含まれる特徴点抽出処理を示すフローチャートである。
【図１２】図１２は前記特徴点抽出処理に含まれる動きベクトルの計算処理を示すフローチャートである。
【符号の説明】
【０１１４】
１…デジタルカメラ、２…ボディ、３…撮影レンズ、４…セルフタイマランプ、５…光学ファインダ窓、６…ストロボ発光部、７…マイクロホン部、８…電源キー、９…シャッタキー、１０…撮影モードキー、１１…再生モードキー、１２…光学ファインダ、１３…スピーカ部、１４…マクロキー、１５…ストロボキー、１６…メニュー（ＭＥＮＵ）キー、１７…リングキー、１８…セット（ＳＥＴ）キー、１９…表示部、２１…光学レンズ装置、２２…イメージセンサ、２３…メモリ、２４…表示装置、２５…画像処理装置、２６…操作部、２７…コンピュータインタフェース部、２８…外部記憶ＩＯ装置、２９…プログラムコード記憶装置、３０…ＣＰＵ、３１…メモリカード。
【図１】
0004640032.tif 000002
【図２】
0004640032.tif 000003
【図３】
0004640032.tif 000004
【図４】
0004640032.tif 000005
【図５】
0004640032.tif 000006
【図６】
0004640032.tif 000007
【図７】
0004640032.tif 000008
【図８】
0004640032.tif 000009
【図９】
0004640032.tif 000010
【図１０】
0004640032.tif 000011
【図１１】
0004640032.tif 000012
【図１２】
0004640032.tif 000013