(57)【要約】【課題】  パノラマ画像の合成において動きベクトルの正確性が合成画像の品質に影響を与える。【解決手段】  画像処理装置は、複数の画像から動きベクトルを検出する検出手段と、前記複数の画像の少なくとも一部を用いて合成を行い、パノラマ画像を生成する合成手段と、を有し、前記検出手段は、処理対象の画像の第１の領域、および、前記第１の領域よりも狭い第２の領域から動きベクトルを検出し、前記合成手段は、前記第１の領域から検出した動きベクトルと前記第２の領域から検出した動きベクトルとの差が所定範囲内であれば、前記処理対象の画像を前記合成に用いる。【選択図】  図５
2019041188.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像から動きベクトルを検出する検出手段と、
前記複数の画像の少なくとも一部を用いて合成を行い、パノラマ画像を生成する合成手段と、を有し、
前記検出手段は、処理対象の画像の第１の領域、および、前記第１の領域よりも狭い第２の領域から動きベクトルを検出し、
前記合成手段は、前記第１の領域から検出した動きベクトルと前記第２の領域から検出した動きベクトルとの差が所定範囲内であれば、前記処理対象の画像を前記合成に用いることを特徴とする画像処理装置。
【請求項２】
前記合成手段は、前記処理対象の画像の前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの差が前記所定範囲内でなければ、前記処理対象の画像を前記合成に用いないことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記合成手段は、前記処理対象の画像の前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの差が前記所定範囲内でなければ、前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの差が前記所定範囲内である画像と重ならない画角において、前記処理対象の画像を前記合成に用いることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記合成手段は、前記処理対象の画像の前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの差が前記所定範囲内でなく、前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの差が前記所定範囲内である画像と重ならない画角において、前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの差が前記所定範囲内でない他の画像が存在する場合には、前記処理対象の画像において検出された動きベクトルのほうが、前記他の画像において検出された動きベクトルよりも精度が高ければ、前記処理対象の画像を前記合成に用いることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記合成手段は、前記処理対象の画像のほうが前記他の画像よりも、前記第１の領域から検出された動きベクトルと前記第２の領域から検出した動きベクトルとの間で、大きさおよび方向が同じと判断された動きベクトルの数が多い場合に、前記処理対象の画像において検出された動きベクトルのほうが、前記他の画像において検出された動きベクトルよりも精度が高いと判断することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記検出手段は、前記処理対象の画像の前記第１の領域に繰り返しパターンが存在しない場合に、前記第２の領域から動きベクトルを検出することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記合成手段は、前記処理対象の画像の前記第１の領域から検出された複数の動きベクトルが所定の条件を満たす場合には、前記処理対象の画像を前記合成に用いることを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記所定の条件とは、前記処理対象の画像の前記第１の領域から均一に前記複数の動きベクトルが検出されることであることを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記合成手段は、前記処理対象の画像の前記第１の領域からの検出に成功したと判定された動きベクトルの数が所定数に満たない場合には、前記処理対象の画像を前記合成に用いないことを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
複数の画像を撮像する撮像手段と
前記複数の画像から動きベクトルを検出する検出手段と、
前記複数の画像の少なくとも一部を用いて合成を行い、パノラマ画像を生成する合成手段と、を有し、
前記検出手段は、処理対象の画像の第１の領域、および、前記第１の領域よりも狭い第２の領域から動きベクトルを検出し、
前記合成手段は、前記第１の領域から検出した動きベクトルと前記第２の領域から検出した動きベクトルとの差が所定範囲内であれば、前記処理対象の画像を前記合成に用いることを特徴とする撮像装置。
【請求項１１】
複数の画像から動きベクトルを検出する検出ステップと、
前記複数の画像の少なくとも一部を用いて合成を行い、パノラマ画像を生成する合成ステップと、を有し、
前記検出ステップにおいては、処理対象の画像の第１の領域、および、前記第１の領域よりも狭い第２の領域から動きベクトルを検出し、
前記合成ステップにおいては、前記第１の領域から検出した動きベクトルと前記第２の領域から検出した動きベクトルとの差が所定範囲内であれば、前記処理対象の画像を前記合成に用いることを特徴とする画像処理装置の制御方法。
【請求項１２】
画像処理装置のコンピュータに動作させるコンピュータのプログラムであって、
複数の画像から動きベクトルを検出する検出ステップと、
前記複数の画像の少なくとも一部を用いて合成を行い、パノラマ画像を生成する合成ステップと、を行わせ、
前記検出ステップにおいては、処理対象の画像の第１の領域、および、前記第１の領域よりも狭い第２の領域から動きベクトルを検出し、
前記合成ステップにおいては、前記第１の領域から検出した動きベクトルと前記第２の領域から検出した動きベクトルとの差が所定範囲内であれば、前記処理対象の画像を前記合成に用いることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関するものであり、特に複数の画像に対して位置合わせを行う画像処理装置に関するものである。
【背景技術】
【０００２】
デジタルカメラやカメラ機能付きの携帯電話などを移動させながら複数の画像を撮像し、撮像した複数の画像を繋ぎ合わせることによるパノラマ合成の技術が知られている。
【０００３】
特許文献１では、画像から動きベクトルを検出し、検出した動きベクトルに基づいて位置合わせを行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１８８０３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、被写体によっては動きベクトルの検出が困難な場合があり、動きベクトルを検出できたとしても、その動きベクトルが必ずしも正しい情報であるとは限らない。誤って検出された動きベクトルを用いて位置合わせを行ってしまうと、被写体の位置にズレが生じたパノラマ合成が行われてしまう。
【０００６】
本発明は、上記の課題を鑑みてなされたものであり、複数の画像間の位置合わせ精度の高いパノラマ画像を作成することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、複数の画像から動きベクトルを検出する検出手段と、前記複数の画像の少なくとも一部を用いて合成を行い、パノラマ画像を生成する合成手段と、を有し、前記検出手段は、処理対象の画像の第１の領域、および、前記第１の領域よりも狭い第２の領域から動きベクトルを検出し、前記合成手段は、前記第１の領域から検出した動きベクトルと前記第２の領域から検出した動きベクトルとの差が所定範囲内であれば、前記処理対象の画像を前記合成に用いることを特徴とする画像処理装置を提供する。
【発明の効果】
【０００８】
本発明によれば、複数の画像間の位置合わせ精度の高いパノラマ画像を作成できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係るデジタルカメラのハードウェア構成を示すブロック図である。
【図２】本発明の実施形態に係るパノラマ画像の合成処理の流れを説明する図である。
【図３】第１の実施形態におけるパノラマ画像の撮像処理を説明するためのフローチャートである。
【図４】第１の実施形態における移動量の算出を説明するための図である。
【図５】第１の実施形態における動きベクトルの評価処理を説明するためのフローチャートである。
【図６】繰り返しパターンが存在する場合を説明するための図である。
【図７】デジタルカメラの移動方向に沿った領域のみで動きベクトルの検出に成功した場合を説明するための図である。
【図８】第１の実施形態における動きベクトルの検出領域の再設定を説明するための図である。
【図９】第１の実施形態における線状に分布した小領域の一部に特徴的な図案が入っている画像を説明するための図である。
【図１０】第１の実施形態における線状に分布した小領域のすべてに複雑な図案が入っている画像を説明するための図である。
【図１１】第１実施形態における画像の合成を説明するためのフローチャートである。
【図１２】第２の実施形態における動きベクトルの評価を説明するためのフローチャートである。
【図１３】第２実施形態における画像の合成を説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
以下では、添付の図面を参照しながら、本発明の好適な実施形態について詳細に説明する。
【００１１】
（第１の実施形態）
図１は本実施形態に係るデジタルカメラの構造を示すブロック図である。デジタルカメラ１００は、静止画を撮像することができ、かつ、合焦位置の情報を記録し、コントラスト値の算出および画像の合成が可能なものである。さらに、デジタルカメラ１００は、撮像して保存した画像、または、外部から入力した画像に対して、拡大処理または縮小処理を行うことができる。
【００１２】
制御部１０１は、例えばＣＰＵやＭＰＵなどのシグナルプロセッサであり、予め後述するＲＯＭ１０５に内蔵されたプログラムを読み出しながら、デジタルカメラ１００の各部分を制御する。たとえば、後述するように、制御部１０１が、後述する撮像部１０４に対して撮像の開始と終了について指令を出す。または、後述する画像処理部１０７に対して、ＲＯＭ１０５に内蔵されたプログラムに基づいて、画像処理の指令を出す。ユーザによる指令は、後述する操作部１１０によってデジタルカメラ１００に入力され、制御部１０１を通して、デジタルカメラ１００の各部分に達する。
【００１３】
駆動部１０２は、モーターなどによって構成され、制御部１０１の指令の下で、後述する光学系１０３を機械的に動作させる。たとえば、制御部１０１の指令に基づいて、駆動部１０２が光学系１０３に含まれるフォーカスレンズの位置を移動させ、光学系１０３の焦点距離を調整する。
【００１４】
光学系１０３は、ズームレンズ、フォーカスレンズ、および絞りなどにより構成される。絞りは、透過する光量を調整する機構である。レンズの位置を変えることによって、合焦位置を変えることができる。
【００１５】
撮像部１０４は、光電変換素子であり、入射された光信号を電気信号に変換する光電変換を行うものである。たとえば、撮像部１０４に、ＣＣＤセンサやＣＭＯＳセンサなどを適用することができる。撮像部１０４は、動画撮像モードを設け、時間的に連続する複数の画像を動画の各々のフレームとして、撮像することができる。
【００１６】
ＲＯＭ１０５は、記録媒体としての読み出し専用の不揮発性メモリであり、デジタルカメラ１００が備える各ブロックの動作プログラムに加え、各ブロックの動作に必要なパラメータ等を記憶している。ＲＡＭ１０６は、書き換え可能な揮発性メモリであり、デジタルカメラ１００が備える各ブロックの動作において出力されたデータの一時的な記憶領域として用いられる。
【００１７】
画像処理部１０７は、撮像部１０４から出力された画像、あるいは後述する内蔵メモリ１０９に記録されている画像信号のデータに対して、ホワイトバランス調整、色補間、フィルタリングなど、様々な画像処理を行う。また、撮像部１０４が撮像した画像信号のデータに対して、ＪＰＥＧなどの規格で、圧縮処理を行う。
【００１８】
画像処理部１０７は、特定の処理を行う回路を集めた集積回路（ＡＳＩＣ）で構成される。あるいは、制御部１０１がＲＯＭ１０５から読み出したプログラムに従って処理することで、制御部１０１が画像処理部１０７の機能の一部または全部を兼用するようにしてもよい。制御部１０１が画像処理部１０７の全ての機能を兼用する場合には、画像処理部１０７をハードウェアとして有する必要はなくなる。
【００１９】
表示部１０８は、ＲＡＭ１０６に一時保存されている画像、または、後述する内蔵メモリ１０９に保存されている画像、あるいは、デジタルカメラ１００の設定画面などを表示するための液晶ディスプレイや有機ＥＬディスプレイなどである。
【００２０】
内蔵メモリ１０９は、撮像部１０４が撮像した画像や画像処理部１０７の処理を得た画像、および、画像撮像時の合焦位置の情報などを記録する場所である。内蔵メモリの代わりに、メモリカードなどを用いてもよい。
【００２１】
操作部１１０は、たとえば、デジタルカメラ１００につけるボタンやスイッチ、キー、モードダイアルなど、あるいは、表示部１０８に兼用されるタッチパネルなどである。ユーザによる指令は、操作部１１０を経由して、制御部１０１に達する。
【００２２】
装置動き検出部１１１はジャイロセンサによって構成され、デジタルカメラ１００の動きを検出するデバイスであり、デジタルカメラ１００の単位時間当たりの角度変化、すなわち角速度に基づいてヨー方向とピッチ方向の動きを検出する。
【００２３】
図２は、本発明の実施形態に係るパノラマ画像の合成処理の流れを説明する図である。図２では、ドットハッチングされた領域は、被写界にある並木を模式的に表した領域であり、斜線ハッチングされた領域は、画像データの切り出し領域を表している。図２（ａ）は、ユーザが操作部１１０に設けたボタンを押下し、ユーザは、主被写体に対してピント合わせを行うことを示している。図４（ｂ）は、ユーザが合成しようとしているパノラマ画像の一方の端に合わせて画角を設定している。図４（ｂ）では、撮像部１０４は画像２１０を撮像する。図２（ｃ）乃至図２（ｅ）では、ユーザが合成しようとしているパノラマ画像の他方の端に向けてデジタルカメラ１００を移動させながら、パノラマ撮像を行っている状態を模式的に示している。図２（ｅ）は、ユーザがボタンの押下をやめ、パノラマ撮像が終了した状態を示している。図２（ｂ）乃至図２（ｅ）では、撮像部１０４が画像２１０乃至２７０計７枚の画像を撮像したが、画像２３０、２５０および２６０は不図示である。画像処理部１０７は、撮像部１０４が撮像した画像２１０乃至２７０に対して切り出し処理を行い、切り出し領域２１１乃至２７１を生成する。制御部１０１において、切り出し領域の幅は、予め定めてもよいが、パノラマ撮像中のデジタルカメラ１００の移動速度などに応じて変化させてもよい。
【００２４】
図２（ｆ）は、画像処理部１０７が、撮像部１０４が撮像した複数の画像を合成してできたパノラマ画像を示している。ここで、制御部１０１は、合成を行う前に、画像に対して位置合わせを行う。また、手振れなどのため、切り出し領域２１１乃至２７１の上辺と下辺とは合っていないため、画像処理部１０７は、縦方向に対しても切り出し処理を行う。その結果、画像処理部１０７は、領域２００が示したようなパノラマ画像を生成する。
【００２５】
制御部１０１は、画像処理部１０７が検出した複数の動きベクトルに基づいて、位置合わせを行う。一例としては、画像処理部１０７は、切り出し領域を任意のサイズの小ブロックに分割し、小ブロック毎に輝度の差分絶対値和（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ、以下、ＳＡＤという）が最小となる対応点を算出する。制御部１０１は、算出したＳＡＤが最小となる対応点より、動きベクトルを算出することができる。制御部１０１は、ＳＡＤの他に、差分二乗和（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ、以下ＳＳＤという）や正規化相互相関（Ｎｏｒｍａｌｉｚｅｄ  Ｃｒｏｓｓ  Ｃｏｒｒｅｌａｔｉｏｎ、以下ＮＣＣという）などを用いてもよい。
【００２６】
図２では、説明を容易にするため、切り出し領域２１１乃至２７１の互いに重畳する領域がなく、かつ、互いに隣接している例を示している。もし、重畳する領域が存在していれば、重畳する領域の中央を境目として、画像処理部１０７は、その左側に片方の切り出し領域、右側にもう片方の切り出し領域の画素情報を合成画像に出力する。もしくは、画像処理部１０７は、境目上に両方の切り出し領域の画素情報を５０％ずつ合成した値を出力し、境目からの距離が離れるに従って境目の左側では片方の切り出し領域を、境目の右側ではもう片方の切り出し領域の割合を大きくしながら合成を行う。
【００２７】
なお、図２では、各々の画像において切り出し領域は画像の異なる位置に設定され、切り出し領域のサイズも異なるが、一般的に、歪などを考慮し、画像処理部１０７は、各々の画像の中央に、等しいサイズを持つ領域を切り出す。
【００２８】
図３は、本実施形態におけるパノラマ画像の撮像処理を説明するためのフローチャートである。
【００２９】
ステップＳ３０１で、撮像部１０４が１枚目の画像の撮像を行う。また、このステップにおいて、画像処理部１０７が現像処理も行うが、簡略化のためフローチャートに記載していない。
【００３０】
ステップＳ３０２で、撮像部１０４が２枚目以降の画像の撮像を行う。
【００３１】
ステップＳ３０３では、制御部１０１はステップＳ３０２で撮像部３０２が撮像した処理対象の画像に対して動きベクトルの評価を行い、「高」「低」どちらかのフラグを設定する。詳細は後述する。
【００３２】
ステップＳ３０４では、制御部１０１は、ステップＳ３０３の動きベクトルの評価の結果に基づいて画像の合成を行う。詳細は後述する。
【００３３】
ステップＳ３０５では、制御部１０１が、ステップＳ３０４で制御部１０１が合成に用いると判断した隣り合う２枚の画像の間の移動量の算出を行う。ここでの移動量の算出は、パノラマ撮像の継続が可能であるかどうかの判断のためのものである。算出された移動量が画像の画角よりも広いのであれば、こうした画像を合成に用いると、被写体が映らない隙間が生じる可能性があるので、パノラマ撮像を中断することが好ましい。
【００３４】
図４は、本実施形態における移動量の算出を説明するための図である。たとえば、パノラマ画像を作成するときに、円筒上に張り付ける円筒変換を行う場合、図４を参照し、回転角の最大値は下記の（式１）で算出できる。
【００３５】
【数１】
2019041188.tif 000003
【００３６】
ただし、（式１）では、γは最大回転角で、ｆが焦点距離で、μがセンサの画素ピッチである。ここで、焦点距離ｆは一般的に、ｍｍを単位とするが、センサの画素ピッチμはμｍを単位とするので、計算するときは、単位を統一にする必要がある。そして、ａは検出領域のブロックのサイズであり、ｂはデジタルカメラ１００の移動方向でのブロックの数である。検出領域とブロックとの詳細については後述の動きベクトルの評価の説明のところで説明する。
【００３７】
なお、上記回転角度計算は、円筒変換の手法を用いた場合の例であるが、パノラマ画像の作成方法を限定するものではない。
【００３８】
ステップＳ３０６で、制御部１０１が、撮像が終了するかどうかについて判断し、撮像が終了する場合はステップＳ３０７に進み、撮像が終了していない場合はステップＳ３０２に戻る。撮像の終了の判断基準は、たとえば、ユーザの手動での終了指示や、予め設定した画角に到達するなどが挙げられる。
【００３９】
ステップＳ３０７で、制御部１０１は、撮像の終了時の処理を行う。ここでいう終了時の処理とは、主に表示部１０８を通じてユーザに撮像の結果の提示や、後述するような合成が失敗したときのエラー表示などを指す。
【００４０】
以上では、本実施形態における撮像の流れを説明した。次に、ステップＳ３０３での動きベクトルの評価、およびステップＳ３０４での画像の合成の詳細について説明する。
【００４１】
図５は、本実施形態における動きベクトルの評価処理を説明するためのフローチャートである。ステップＳ５０１で、制御部１０１は、直前に撮像した２枚の画像のうち先に撮像されたものの一部の領域を、検出領域と設定する。歪などを考慮し、制御部１０１が、検出領域を画像の中央に設定することが好ましい。ステップＳ５０２で、制御部１０１は、動きベクトルの検出を行う。制御部１０１は、まず、ステップＳ５０１で設定した検出領域に、複数の小ブロックを設定する。各々の小ブロックを同じサイズに設定することが好ましい。そこで、制御部１０１は、一方の画像に設定された複数の小ブロックのいずれかを選択し、他方の画像において、この選択した小ブロックと同じ位置であって、かつ、この小ブロックより広い検出領域を設定する。制御部１０１は、他方の画像の検出領域の中で、一方の画像の選択した小ブロックと最も相関が高くなる（ＳＡＤの値が最小となる）領域を抽出する。ここでいう相関の計算では、たとえば、ＳＡＤ、ＳＳＤやＮＣＣなどを用いてもよい。
【００４２】
ステップＳ５０３では、ステップＳ５０２で、動きベクトルの検出が成功したかどうかについて判断する。制御部１０１は、動きベクトルの検出に成功したかどうかについては、以下の条件で判断する。たとえば、動きベクトルの検出領域が低コントラストであると、制御部１０１はＳＡＤ、ＳＳＤやＮＣＣのいずれかを使っても正確性の高い動きベクトルを得にくい。したがって、ここで制御部１０１は、予め定められたコントラストの閾値より低いコントラストを持つ領域から検出した動きベクトルは、検出に成功していないと判断する。または、ステップＳ３０２での画像の撮像と同時に、装置動き検出部１１１は、デジタルカメラ１００の角速度などの動き情報を検出する。制御部１０１は、装置動き検出部１１１が検出した動き情報とステップＳ５０２で検出した動きベクトルとを比較し、動き情報と動きベクトルとの差分が所定値を超えると、動きベクトルの検出に成功していないと判断する。
【００４３】
ステップＳ５０３で、制御部１０１は、検出に成功したと判断された動きベクトルが所定数以上である場合はステップＳ５０４に進み、そうでない場合はステップＳ５１０に進む。ステップＳ５１０で、制御部１０１は、動きベクトルの評価のフラグを「低」に設定する。
【００４４】
ステップＳ５０４で、制御部１０１は、ステップＳ５０１で設定した検出領域に、繰り返しパターンが存在するかどうかについて判断する。繰り返しパターンが存在する場合、ステップＳ５１０に進み、制御部１０１は、動きベクトルの評価のフラグを「低」に設定する。繰り返しパターンが存在しない場合、ステップＳ５０５に進む。
【００４５】
繰り返しパターンのある画像では、デジタルカメラを動かしても似たような画像が映るため、制御部１０１がＳＡＤ、ＳＳＤ、ＮＣＣのいずれの方法用いたとしても、検出した動きベクトルの誤差が大きくなる可能性が高い。図６は、画像に繰り返しパターンが存在する場合を説明するための図である。制御部１０１が、図６（ａ）と図６（ｂ）に示した２枚の画像に対して動きベクトルの検出を行ったものとして説明する。図６（ａ）と図６（ｂ）とに示した２枚の画像では、ビルの窓にあたるところが繰り返しパターンに相当する。たとえば、制御部１０１は、小領域６０１から動きベクトルを検出しようとする。制御部１０１は、小領域６０１のうちの中央にある領域をテンプレート６０２とし、図６（ｂ）に示した画像の小領域６０３を検出範囲とし、小領域６０３からテンプレート６０２との相関が最も大きい所を検出する。前述したように、制御部１０１は、輝度のＳＡＤ、ＳＳＤやＮＣＣのいずれかの方法を使ってもよく、以下では輝度のＳＡＤを例として説明する。制御部１０１は、検出範囲の小領域６０３に、テンプレート６０２のサイズに相当する範囲を設定し、その位置を少しずつずらしながら、テンプレート７０２とその範囲のＳＡＤを計算する。水平方向において、水平座標とＳＡＤとの関係は、図６（ｄ）に示したようであり、その最小値が２つあるとわかる。これは、図６（ｃ）に示したように、領域６０４と領域６０５とともに、テンプレート６０２と同様な図案が現れたためである。したがって、検出領域に繰り返しパターンが存在する場合、たとえ制御部１０１は成功に動きベクトルを検出できたとしても、位置合わせの精度が低くなる可能性が高い。
【００４６】
ステップＳ５０５で、制御部１０１は、ステップＳ５０３で検出に成功したと判断された動きベクトルの分布が不均一であるかどうかについて判断する。一般的に、動きベクトルは、検出領域の全体において均一に分布した方が、位置合わせの精度が高いとされている。逆に、成功に検出した動きベクトルは検出領域の一部にしか存在しないときは、位置合わせの精度が低い。そこで、制御部１０１は、動きベクトルの分布が不均一でない（均一である）と判断した場合にはステップＳ５０９に進み、不均一であると判断した場合には検出した動きベクトルの精度の判定を行うためステップＳ５０６に進む。
【００４７】
上述した繰り返しパターンの判断では、一例として制御部１０１がＳＡＤを通じて行う。画像に繰り返しパターンが存在すると、制御部１０１がＳＡＤの微分を求めることによって、ＳＡＤが極小となる点を検出できる。ＳＡＤが極小となる点が複数検出されると、制御部１０１は、繰り返しパターンが存在すると判断する。
【００４８】
図７は、動きベクトルの検出に成功したと判断された領域の分布が均一でない例として、デジタルカメラ１００の移動方向に沿った領域のみで動きベクトルの検出に成功した場合を説明するための図である。制御部１０１は、図７（ａ）と図７（ｂ）に示した２枚の画像に対して動きベクトルの検出を行った結果、山にあたる小領域のみで動きベクトルの検出に成功し、それ以外の小領域では、低コントラストなどのため動きベクトルの検出に成功しなかったものとする。検出に成功した動きベクトルを図７（ｄ）に示す。たとえば、制御部１０１は、小領域７０１から動きベクトルを検出する場合、小領域７０１のうちの中央にある領域をテンプレート７０２とし、図７（ｂ）に示した画像の小領域７０３を検出範囲とする。そして、制御部１０１は小領域７０３からテンプレート７０２との相関が最も大きい所を検出する。前述したように、制御部１０１は、輝度のＳＡＤ、ＳＳＤやＮＣＣのいずれかの方法を使ってもよく、以下では輝度のＳＡＤを例とし、また、便宜のために水平方向についてのみ説明する。制御部１０１は、検出範囲の小領域７０３に、テンプレート７０２のサイズに相当する範囲７０４を設定し、範囲７０４の水平座標を少しずつずらしながら、テンプレート７０２と範囲７０４のＳＡＤを計算する。水平座標とＳＡＤとの関係は、図７（ｅ）に示したようであり、その最小値が判断しにくいことがわかる。したがって、図７に示した場合では、たとえ制御部１０１が動きベクトルの検出に成功したとしても、位置合わせの精度が低い可能性が高い。
【００４９】
ステップＳ５０６で、制御部１０１は、動きベクトルの検出領域の再設定を行う。図８は、本実施形態における動きベクトルの検出領域の再設定を説明するための図である。図８の画像８１１と画像８１２の間、画像８２１と画像８２２の間、および、画像８３１と画像８３２の間で、動きベクトルを検出するものとする。図８の左側の画像８１１乃至８３１には、ステップＳ５０１で設定した検出領域が設定され、右側の画像８１２乃至８３２には、ステップＳ５０６で検出領域が再設定された様子を示す。画像８１２乃至８３２のそれぞれに示した再設定された検出領域は、制御部１０１が画像８１１乃至８３１に示した検出領域を絞り込んで狭めたものである。具体的に、制御部１０１がテンプレートにあたる領域のサイズを変えずに、それらの間隔を縮める。また、制御部１０１は、小領域のサイズと、小領域とテンプレートとの相対位置関係とを変えずに、小領域を設定する。この再設定された検出領域は、ステップＳ５０３で動きベクトルの検出に成功したと判断された小領域の位置に重畳している必要がある。そのため、ステップＳ５０３で動きベクトルの検出に成功したと判断された小領域の位置を基準として、再設定する検出領域の位置を調整するようにしてもよい。もし、ステップＳ５０３で動きベクトルの検出に成功したと判断された小領域が離れて分布しているならば、その離れた位置のそれぞれを基準として、複数の検出領域を再設定しても良い。
【００５０】
ステップＳ５０７で、制御部１０１は、ステップＳ５０６で再設定した動きベクトルの検出領域から動きベクトルの検出を行う。検出方法は、ステップＳ５０２と同様である。
【００５１】
ステップＳ５０８で、制御部１０１は、ステップＳ５０８で検出した動きベクトルが、ステップＳ５０２で検出した動きベクトルと同様であるかどうかについて判断する。ステップＳ５０８で検出した動きベクトルとステップＳ５０２で検出した動きベクトルの大きさと方向の差が所定範囲内である場合に、同様であると判断する。検出した動きベクトルが同様であると判断した場合、ステップＳ５０９に進み、動きベクトルの評価のフラグを「高」に設定し、同様でないと判断した場合、ステップＳ５１０に進み、動きベクトルの評価のフラグを「低」に設定する。
【００５２】
なお、制御部１０１が動きベクトルの検出に成功した領域が移動方向に沿って画像の一部にのみ分布するケースとしては、大きく３種類がある。１つ目は前述した図７に示したような、デジタルカメラの移動方向に対して図案の変化が少ない場合である。２つ目は、図９に示すように、移動方向に沿って分布した小領域の一部に特徴的な図案も含まれているような場合である。図９（ａ）には、山の前に橋が渡っている画像を示し、図９（ｂ）は制御部１０１が検出領域を設定する様子を示している。制御部１０１が検出領域９０１を設定した場合では、テンプレートとなる領域において図案の変化が少なく、図７と同様に、動きベクトルを検出できても、正確性が低い。この場合、制御部１０１が検出領域を再設定したとしても、ステップＳ５０８で異なる動きベクトルであると判断する可能性が高い。一方で、制御部１０１が検出領域９０２を設定した場合では、テンプレートとなる領域が特徴的なる図案である橋脚に被っているため、検出領域９０１と比べて、検出した動きベクトルの正確性が高い。この場合、制御部１０１が検出領域を再設定すると、ステップＳ５０８で同様な動きベクトルであると判断される可能性が高い。３つ目は、図１０に示すように、移動方向に沿って分布した小領域のすべてに特徴的な図案が含まれているような場合である。図１０（ａ）には、海岸沿いに異なる形状の建物が並んでいる画像を示し、図１０（ｂ）は制御部１０１が検出領域を設定する様子を示している。制御部は、検出領域１００１と１００２のどちらを設定しても、あるいは移動方向に沿った他の場所で検出領域を設定しても、斜線部分と被っている小領域では、正確性の高い動きベクトルを検出できる。図１０（ａ）に示した画像において、制御部１０１はどこに検出領域を設定しても、検出した動きベクトルと検出領域を再設定して検出した動きベクトルとが同様と判断される可能性が高い。
【００５３】
次に、ステップＳ３０４での画像の合成について説明する。
【００５４】
図１１は、本実施形態における画像の合成を説明するためのフローチャートである。ステップＳ１１０１で、制御部１０１は、ステップＳ３０２で撮像した画像から検出した動きベクトルの評価のフラグが「高」であるかどうかについて判断する。動きベクトルの評価のフラグが「高」であれば、ステップＳ１１０２に進み、この画像を合成に用いて、検出した動きベクトルで位置合わせを行って、合成を行う。位置合わせの方法としては、公知の射影変換、アフィン変換係数や水平垂直シフトのみの簡略化した位置合わせを用いてよい。一方で、動きベクトルの評価のフラグが「高」でなければ、この画像を合成に用いない。かくして、動きベクトルの評価のフラグが「低」の画像を、パノラマ画像の合成から排除し、代わりに、欠けた画角を、動きベクトルの評価のフラグが「高」の画像を使って補う。
【００５５】
第１の実施形態によれば、動きベクトルの正確性を判断し、パノラマ画像の合成に用いる画像を選択し、より精度の高い位置合わせを行うことができる。
【００５６】
（第２の実施形態）
第２の実施形態では、第１の実施形態と異なり、画像の歪などを考慮し、なるべく画像の中央から切り出した領域をパノラマ画像の合成に使うようにする。第１の実施形態の場合では、動きベクトルの評価のフラグが「低」の画像を、パノラマ画像の合成から除外する。除外した画像に相当する画角は、他の画像から補う。しかしながら、前述したように、画像の歪などを考慮し、一般的に画像の中央から切り出した領域を合成に用いる方が好ましい。他の画像から切り出した領域を代替的に用いると、中央から離れた領域しか使えなく、画像の歪による影響で合成したパノラマ画像に違和感が出る可能性がある。また、動きベクトルの評価のフラグが「低」の画像が連続的に撮像すると、合成に使える画像領域が途中で切れてしまう可能性もあり、パノラマ画像の一部の画角が欠けることになる。以上の課題を解決するために、本実施形態では、動きベクトルの評価のフラグを「高」「中」「低」と分け、動きベクトルの評価のフラグが「高」の検出領域を用いるとともに、動きベクトルの評価のフラグが「中」の検出領域の一部を合成に用いる。以下では、本実施形態について詳細に説明する。なお、第１の実施形態と同様な所は省略する。
【００５７】
本実施形態のフローチャートは第１の実施形態の図２と同様であるが、ステップＳ３０３での動きベクトルの評価とステップＳ３０４での画像の合成が第１の実施形態と異なる。
【００５８】
図１２は、本実施形態における動きベクトルの評価を説明するためのフローチャートである。図１２に示したフローチャートは、以下のところで第１の実施形態の図５に示したフローチャートと異なる。動きベクトルの評価のフラグの種類に「中」を加え、特定の場合に制御部１０１がステップＳ１２０２で検出した動きベクトルの評価のフラグを「中」に設定する。この特定の場合には、ステップＳ１２０４で繰り返しパターンが存在しないとき、ステップＳ１２０５で、検出した動きベクトルの分布が均一でないとき、およびステップＳ１２０８で検出した動きベクトルが同様でないときが含まれる。
【００５９】
図１３は、本実施形態における画像の合成を説明するためのフローチャートである。図１３に示したフローチャートでは、仮合成という処理があることで、第１の実施形態の図１１に示したフローチャートと異なる。
【００６０】
前述したように、第１の実施形態では、動きベクトルの評価のフラグが「低」の画像をすべて画像の合成から除外することで、パノラマ画像に違和感が出る可能性がある。それを解決するために、本実施形態では、動きベクトルの評価のフラグに「中」を設け、動きベクトルの評価のフラグが「中」の画像に対しては仮合成を行う。制御部１０１は、仮合成の処理で仮合成画像を生成し、仮合成画像は、最終的なパノラマ画像の生成の予備用のためのものであり、動きベクトルの評価のフラグが「高」である画像が存在しない画角に用いられる。
【００６１】
ステップＳ１３０１で、ステップＳ１２０２で制御部１０１が検出した動きベクトルの評価のフラグが「高」であるかどうかについて判断する。動きベクトルの評価のフラグが「高」であれば、ステップＳ１３０２に進み、動きベクトルの評価のフラグが「高」でなければ、ステップＳ１３０５に進む。ステップＳ１３０５で、制御部１０１が検出した動きベクトルの評価のフラグが「低」であるかどうかについて判断する。動きベクトルの評価のフラグが「低」であれば、その画像についての合成処理のフローが終了し、動きベクトルの評価のフラグが「低」でなければ、ステップＳ１３０６に進む。つまり、ステップＳ１３０１とステップＳ１３０５との処理で、動きベクトルの評価のフラグが「低」ならフローが終了、「中」ならステップＳ１３０６に進み、「高」ならステップＳ１３０２に進む。
【００６２】
ステップＳ１３０２で、第１の実施形態のステップＳ１１０２と同様に、制御部１０１が位置合わせおよび画像の合成を行う。次に、ステップＳ１３０３に進む、ステップＳ１３０２の合成に用いる領域の画角を有する仮合成画像が存在するかどうかについて判断する。ここでいう仮合成画像とは、後述するステップＳ１３０８またはステップＳ１３０９で制御部１０１が生成したものである。本実施形態では、動きベクトルの評価のフラグが「高」の領域を優先的に合成に用いるため、同じ画角を有する仮合成画像は使えなくなるので、ステップＳ１３０４で制御部１０１に消去される。一方、こうした仮合成画像が存在していなければ、フローを終了する。
【００６３】
ステップＳ１３０６で、制御部１０１は、ステップＳ１３０５で動きベクトルの評価のフラグが「中」と判断した領域の画角と同じ画角を持つ仮合成画像が存在するかどうかについて判断する。こうした仮合成画像がすでに存在する場合、ステップＳ１３０７に進み、既存の仮合成画像と仮合成を行おうとする画像との動きベクトルの精度の比較を行う。詳細は後述する。もしステップＳ１３０６で仮合成画像が存在していないと判断した場合、ステップＳ１３０９に進み、仮合成を行う。図１３に明記されていないが、仮合成の前に、ステップＳ１３０２での合成と同様に位置合わせなどの前処理が必要である。既存の仮合成画像の精度がよければ、その画像についての合成のフローを終了し、既存の仮合成画像の方の精度がよくなければ、ステップＳ１３０８に進み、制御部１０１は、新たな仮合成画像を生成する。
【００６４】
次に、ステップＳ１３０７での精度の比較について説明する。制御部１０１は、既存の仮合成画像と仮合成を行おうとする画像とのそれぞれに対して、検索領域に検出した動きベクトルと、検索領域を再設定して検出した動きベクトルとを比較する。２組の動きベクトルの中で、同じ大きさと方向のものが多いほど、精度が高いとする。検索領域の再設定の方法は、ステップＳ１２０６での再設定の方法と同じでよく、先に設定した検索領域を絞り込んで検索領域を再設定する。
【００６５】
第２の実施形態によれば、仮合成を行い、仮合成画像の中で精度高いものを合成に用いることによって、合成画像の歪や画角の欠陥などを避けることができる。
【００６６】
（その他の実施形態）
なお、上記実施形態においては、個人向けのデジタルカメラをもとに説明を行ったが、パノラマ撮像および合成機能を搭載していれば、携帯機器やスマートフォン、あるいは、サーバーに接続されたネットワークカメラなどに適用することも可能である。
【００６７】
なお、本発明は、上述の実施形態の１つ以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し作動させる処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６８】
１００  デジタルカメラ
１０１  制御部
１０２  駆動部
１０３  光学系
１０４  撮像部
１０５  ＲＯＭ
１０６  ＲＡＭ
１０７  画像処理部
１０８  表示部
１０９  内蔵メモリ
１１０  操作部
１１１  装置動き検出部
【図１】
2019041188.tif 000004
【図２】
2019041188.tif 000005
【図３】
2019041188.tif 000006
【図４】
2019041188.tif 000007
【図５】
2019041188.tif 000008
【図６】
2019041188.tif 000009
【図７】
2019041188.tif 000010
【図８】
2019041188.tif 000011
【図９】
2019041188.tif 000012
【図１０】
2019041188.tif 000013
【図１１】
2019041188.tif 000014
【図１２】
2019041188.tif 000015
【図１３】
2019041188.tif 000016