(57)【要約】【課題】パノラマ撮影を行ったとしても、歪んだ画像の発生を抑止でき、高精細な画像を得ることが可能な撮像装置、撮像方法、およびプログラムを提供する。【解決手段】光学系を通して被写体像を撮像する撮像素子１２と、撮像装置を移動させながら撮影した複数枚の撮影画像を、与えられる初期値を用いて１枚に合成する機能を有する画像信号処理部１６１と、撮像装置の姿勢情報を得る姿勢センサ１４と、姿勢センサ１４の情報を処理し、処理結果と画像信号処理部１６１の処理結果との協調制御を行う制御部１６２と、を有し、画像信号処理部１６１は、画像認識処理により相互の画像の相対位置関係を求め、制御部１６２は、姿勢センサ１４の検出情報による画像の位置関係を求め、求めた位置関係と画像信号処理部１６１で求められた相対位置関係に基づいて各画像の絶対位置関係を特定し、絶対位置関係を初期値として画像信号処理部１６１に供給する。【選択図】図１
2010147635.tif 000002
【特許請求の範囲】
【請求項１】
光学系を通して被写体像を撮像する撮像素子と、
撮像装置を移動させながら撮影した複数枚の撮影画像を、与えられる初期値を用いて１枚に合成する機能を有する画像信号処理部と、
上記撮像装置の姿勢情報を得る姿勢センサと、
上記姿勢センサの情報を処理し、当該処理結果と上記画像信号処理部の処理結果との協調制御を行う制御部と、を有し、
上記画像信号処理部は、
画像認識処理により相互の画像の相対位置関係を求め、
上記制御部は、
上記姿勢センサの検出情報による画像の位置関係を求め、当該求めた位置関係と上記画像信号処理部で求められた相対位置関係に基づいて各画像の絶対位置関係を特定し、当該絶対位置関係を上記初期値として上記画像信号処理部に供給する
撮像装置。
【請求項２】
上記制御部は、
求めた位置関係と上記画像信号処理部で求められた相対位置関係の選択的協調によって相対位置関係を求めた後、各画像の中心が方向に関連する各画像の上記絶対位置関係を特定する
請求項１記載の撮像装置。
【請求項３】
上記姿勢センサは、
角速度センサを含み、
上記制御部は、
上記角速度センサの検出情報により移動量を積分して相対位置関係を求め、上記画像信号処理部で求められた相対位置関係の選択的協調補正を行って相対位置情報の積分を行い上記絶対位置関係を特定する相対位置関係を求める
請求項２記載の撮像装置。
【請求項４】
上記姿勢センサは、
角速度センサおよび加速度センサを含み、
上記制御部は、
上記角速度センサの検出情報により移動量を積分して相対位置関係を求め、上記画像信号処理部で求められた相対位置関係の選択的協調補正を行って相対位置情報の積分を行い上記絶対位置関係を特定する相対位置関係を求め、上記加速度センサの検出情報に応じて上記絶対位置の補正を行う
請求項２記載の撮像装置。
【請求項５】
上記画像信号処理部は、
上記画像認識を画像の重複領域を利用して行う
請求項１から４のいずれか一に記載の撮像装置。
【請求項６】
上記画像信号処理部は、
選択した複数の画像を境界が重なるようにして、各境界においてブロックマッチングを行って各境界について合成を行って所定のパラメータを抽出し、当該パラメータに基づいて合成対象の全ての境界についてブロックマッチングを行い、すべての境界について同時並列的にブロックマッチングの結果の評価を行い、すべての境界の誤差が小さくなるように光軸の方向を更新して誤差を小さくしていくようにして合成を行う
請求項１から５のいずれか一に記載の撮像装置。
【請求項７】
撮像装置を移動させながら、光軸を変化させる光軸可変素子を含む光学系を通して撮像素子で被写体像を撮像するステップと、
撮像した画像の認識処理により相互の画像の相対位置関係を求めるステップと、
姿勢センサの検出情報による画像の位置関係を求めるステップと、
上記求めた位置関係と上記画像認識処理で求められた相対位置関係に基づいて各画像の絶対位置関係を特定するステップと、
撮像装置を移動させながら撮影した複数枚の撮影画像を、上記絶対位置関係を初期値として１枚に合成するステップと
を有する撮像方法。
【請求項８】
求めた位置関係と上記画像認識処理で求められた相対位置関係の選択的協調によって相対位置関係を求めた後、各画像の中心が方向に関連する各画像の上記絶対位置関係を特定する
請求項７記載の撮像方法。
【請求項９】
上記姿勢センサとしての角速度センサの検出情報により移動量を積分して相対位置関係を求め、上記画像信号処理部で求められた相対位置関係の選択的協調補正を行って相対位置情報の積分を行い上記絶対位置関係を特定する相対位置関係を求める
請求項８記載の撮像方法。
【請求項１０】
上記姿勢センサとしての角速度センサの検出情報により移動量を積分して相対位置関係を求め、上記画像認識処理で求められた相対位置関係の選択的協調補正を行って相対位置情報の積分を行い上記絶対位置関係を特定する相対位置関係を求め、上記姿勢センサとしての加速度センサの検出情報に応じて上記絶対位置の補正を行う
請求項８記載の撮像方法。
【請求項１１】
撮像装置を移動させながら、光軸を変化させる光軸可変素子を含む光学系を通して撮像素子で被写体像を撮像する処理と、
撮像した画像の認識処理により相互の画像の相対位置関係を求める処理と、
姿勢センサの検出情報による画像の位置関係を求める処理と、
上記求めた位置関係と上記画像認識処理で求められた相対位置関係に基づいて各画像の絶対位置関係を特定する処理と、
撮像装置を移動させながら撮影した複数枚の撮影画像を、上記絶対位置関係を初期値として１枚に合成する処理と
を有する撮像処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像を合成する機能を有する撮像装置、撮像方法、およびプログラムに関するものである。
【背景技術】
【０００２】
カメラ一体型ＶＴＲまたはデジタルスチルカメラなどを用いてパノラマ撮影に関する場合、カメラをその都度静止させて撮影するか、もしくは、カメラを動かしながら撮影する場合には、画像のブレをなくすためにカメラを低速で動かす必要がある。
後者の場合、撮影は高速シャッタを用いる必要もある。
【０００３】
これに対して、画像解像度を維持しつつカメラを素早く動かしながら撮影する方法が特許文献１に提案されている。
そこで用いられる技術は、カメラの動作方向と動作角速度を検出するとともに、その動作と逆向きに同角速度で光軸を動作させることにより、画像変化を打ち消し、あたかも１点を注視するかのごとく撮影する技術である。
【０００４】
また、上記の制御方式を実現するために加速度センサや角速度センサを用いる必要が生じる場合があるが、両センサとその制御用のフィードバック回路を設けなくても光軸を適切に制御する方法が特許文献２に提案されている。
【０００５】
この場合にはモニタリングシステムとして用いられ、撮影方向の制御に使用されるステッピングモータのパルス数をカウントし、その係数値に応じて光軸制御を行うものである。
【特許文献１】特許第３９２８２２２号公報
【特許文献２】特許第３９２５２９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、目的とするパノラマ写真撮影においては、加速度センサや角速度センサの姿勢センサの精度よりも画像の精度の方が高くなっている。
したがって、姿勢センサの情報のみで位置情報としてしまうと、パノラマ写真として成り立たないほどの荒さとなってしまうおそれがある。
【０００７】
本発明は、パノラマ撮影を行ったとしても、歪んだ画像の発生を抑止でき、高精細な画像を得ることが可能な撮像装置、撮像方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の観点の撮像装置は、光学系を通して被写体像を撮像する撮像素子と、撮像装置を移動させながら撮影した複数枚の撮影画像を、与えられる初期値を用いて１枚に合成する機能を有する画像信号処理部と、上記撮像装置の姿勢情報を得る姿勢センサと、上記姿勢センサの情報を処理し、当該処理結果と上記画像信号処理部の処理結果との協調制御を行う制御部と、を有し、上記画像信号処理部は、画像認識処理により相互の画像の相対位置関係を求め、上記制御部は、上記姿勢センサの検出情報による画像の位置関係を求め、当該求めた位置関係と上記画像信号処理部で求められた相対位置関係に基づいて各画像の絶対位置関係を特定し、当該絶対位置関係を上記初期値として上記画像信号処理部に供給する。
【０００９】
好適には、上記制御部は、求めた位置関係と上記画像信号処理部で求められた相対位置関係の選択的協調によって相対位置関係を求めた後、各画像の中心が方向に関連する各画像の上記絶対位置関係を特定する。
【００１０】
好適には、上記姿勢センサは、角速度センサを含み、上記制御部は、上記角速度センサの検出情報により移動量を積分して相対位置関係を求め、上記画像信号処理部で求められた相対位置関係の選択的協調補正を行って相対位置情報の積分を行い上記絶対位置関係を特定する相対位置関係を求める。
【００１１】
好適には、上記姿勢センサは、角速度センサおよび加速度センサを含み、上記制御部は、上記角速度センサの検出情報により移動量を積分して相対位置関係を求め、上記画像信号処理部で求められた相対位置関係の選択的協調補正を行って相対位置情報の積分を行い上記絶対位置関係を特定する相対位置関係を求め、上記加速度センサの検出情報に応じて上記絶対位置の補正を行う。
【００１２】
好適には、上記画像信号処理部は、上記画像認識を画像の重複領域を利用して行う。
【００１３】
好適には、上記画像信号処理部は、選択した複数の画像を境界が重なるようにして、各境界においてブロックマッチングを行って各境界について合成を行って所定のパラメータを抽出し、当該パラメータに基づいて合成対象の全ての境界についてブロックマッチングを行い、すべての境界について同時並列的にブロックマッチングの結果の評価を行い、すべての境界の誤差が小さくなるように光軸の方向を更新して誤差を小さくしていくようにして合成を行う。
【００１４】
本発明の第２の観点の撮像方法は、撮像装置を移動させながら、光軸を変化させる光軸可変素子を含む光学系を通して撮像素子で被写体像を撮像するステップと、撮像した画像の認識処理により相互の画像の相対位置関係を求めるステップと、姿勢センサの検出情報による画像の位置関係を求めるステップと、上記求めた位置関係と上記画像認識処理で求められた相対位置関係に基づいて各画像の絶対位置関係を特定するステップと、撮像装置を移動させながら撮影した複数枚の撮影画像を、上記絶対位置関係を初期値として１枚に合成するステップとを有する。
【００１５】
本発明の第３の観点は、撮像装置を移動させながら、光軸を変化させる光軸可変素子を含む光学系を通して撮像素子で被写体像を撮像する処理と、撮像した画像の認識処理により相互の画像の相対位置関係を求める処理と、姿勢センサの検出情報による画像の位置関係を求める処理と、上記求めた位置関係と上記画像認識処理で求められた相対位置関係に基づいて各画像の絶対位置関係を特定する処理と、撮像装置を移動させながら撮影した複数枚の撮影画像を、上記絶対位置関係を初期値として１枚に合成する処理とを有する撮像処理をコンピュータに実行させるためのプログラムである。
【００１６】
本発明によれば、撮像装置を移動させながら撮影した複数枚の撮影画像が画像信号処理部に入力される。
また、姿勢センサで検出された撮像装置の姿勢情報が制御部に入力される。
画像信号処理部においては、画像認識処理により相互の画像の相対位置関係が求められ制御部に供給される。
制御部においては、姿勢センサの検出情報による画像の位置関係が求められる。そして、制御部では、求めた位置関係と画像信号処理部で求められた相対位置関係に基づいて各画像の絶対位置関係が特定され、絶対位置関係が初期値として画像信号処理部に供給される。
画像信号処理部では、絶対位置関係を初期値として１枚に合成する処理が行われる。
【発明の効果】
【００１７】
本発明によれば、パノラマ撮影を行ったとしても、歪んだ画像の発生を抑止でき、高精細な画像を得ることができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態を図面に関連付けて説明する。
【００１９】
図１は、本発明の実施形態に係る撮像装置としてのカメラ装置の構成例を示すブロック図である。
【００２０】
本カメラ装置１０は、たとえば図２に示すように、自動あるいは手動により、一点から方向を変えて複数回撮影した多数の画像（図２においては、１６×８＝１２８枚）を得ることが可能である。
カメラ装置１０は、これらの多数、たとえば数千枚の画像をしわ寄せなく正確に合成し、いわゆるパノラマ画像を形成することができるように構成されている。
すなわち、カメラ装置１０は、固定撮像素子、たとえばＣＭＯＳイメージセンサ（ＣＩＳ）を搭載したデジタルカメラを縦または横方向に高速に振り回して撮影した画像を用いてパノラマ画を作成する機能を有している。
【００２１】
そして、本実施形態に係るカメラ装置１０は、以下の第１〜第５の特徴的な構成および機能を有する。
【００２２】
第１の構成は以下の点である。
カメラ装置１０を移動させながら複数枚の撮像画像を行い、取得した画像を合成することによってパノラマ画像を生成するにあたって、画像を集光するレンズ（シフトレンズ）の光軸をカメラの移動方向と角速度を打ち消すよう制御する。
これにより、カメラが動いていてもあたかも１点を注視するがごとく画像を撮影する。  この構成においては、固体撮像素子としてはＣＩＳ(CMOS Image Sensor)を用い、中心方向の一部のラインに対して上記の制御を行い撮像する。
すなわち、一部のラインの露光時間と読み出し時間を加えた期間に上記の光軸制御が行われ、それ以外の時間においては、光軸を中心付近に戻すような制御が行われる。その際のカメラの撮影方向はＣＩＳのラインに対して垂直方向とする。
そして、カメラ装置１０は、ＣＩＳの一部を短冊状に切り出し、その部分に対応した光軸制御を行うことにより、カメラが高速に動いても高いフレームレートで解像度を低下させずにパノラマを生成する。
【００２３】
第２の構成は以下の点である。
カメラ装置１０は、連続した画像を、画像認識技術で得られたフレームの移動情報と、姿勢センサからの移動情報を用いて空間的に配置する技術を採用している。
この画像認識では、情報を得られない部分を姿勢センサ情報で補い、姿勢センサ情報は画像認識の成功確認や失敗時の補助座標として用いる。空間的に配置された画像は１つのパノラマ画像として完成する。
この場合、カメラ装置１０は、主として手持ちで略一点から方向を変えながら複数枚撮影するカメラとして構成される。
カメラ装置１０は、３軸（または２軸）加速度センサと３軸（または２軸）角速度センサまたはそのいずれかを含む姿勢センサを有する。
カメラ装置１０は、撮影された各画像にはどの方向を向いて撮影したかという姿勢の情報を同時に記録し、撮影された複数の画像をその場で１枚に合成する機能を有する。
カメラ装置１０は、画像の重複領域を利用してブロックマッチング等の画像認識機能を使って相互の画像の相対位置関係を算出し、各種の姿勢センサのデータによる画像の位置関係を算出する。
そして、カメラ装置１０は、算出した相対位置関係と画像の位置関係の双方の選択的協調によってより精度の高い画像の相対位置関係を算出する。
その後、カメラ装置１０は、各画像の中心が向く方向、パン角（経度）とチルト角（緯度）および、その光軸のまわりに回転するロール角（傾斜）といった各画像の絶対位置関係を特定し、これを初期値として精密自動合成を行う。
【００２４】
第３の構成は以下の点である。
カメラ装置１０は、連続した画像の記録において、画像認識技術で得られたフレームの移動情報と、姿勢センサからの移動情報を対応する技術を採用している。
カメラ装置１０は、片方だけでは不明な、画像のピクセル画角、姿勢センサの静止時の値、姿勢センサ値のピクセル画角対応といった情報を算出する。オフセット、ゲイン等のパラメータを有し、これを変更することによって実際の方向とほぼ一致させることができる。
カメラ装置１０は、静止時の姿勢のデータを３軸（または２軸）加速度センサが重力の方向となす角としてスタティックに検出し、それを姿勢情報の初期値とする。
カメラ装置１０は、カメラの縦方向、横方向の主に回転移動をたとえば３軸角速度センサを時間積分したもので計算し、各画像の撮影された時点の方向データとする。
カメラ装置１０は、画像の重複領域を利用してブロックマッチング等の画像認識手段を使って相互の画像の位置関係を算出する。カメラ装置１０は、相互の画像の位置関係を演算で求めると同時にその結果が正しいか正しくないかの判定も行う。
カメラ装置１０は、ここで判定された結果が正しい場合、この情報でパラメータを校正する。
そして、カメラ装置１０は、判定された結果が正しくない場合、既に校正されているパラメータによる姿勢センサの値を使って画像を配置していく。
【００２５】
第４の構成は以下の点である。
カメラ装置１０は、移動体による影響を検出した場合に警告を出して撮影のやり直しを促す機能を有する。
カメラ装置１０は、移動体の検出に関し、重複率を５０％以上として被写体のどの部分も少なくとも２枚の画像にまたがって写るようにし、隣接画像間の移動ベクトルの類似性で視差による影響や動被写体を検出する機能を有する。
すなわち、カメラ装置１０は、移動体または視差による影響を検出した場合に警告を出して撮影のやり直しを促す。
広い範囲の被写体をさっと一振りで複数の短冊状画像を撮影して一枚に合成するカメラ装置１０において、近距離の被写体がパララックスの影響をどの程度受けているかを検出し、カメラの視点を中心として撮影し直すことを促す。
【００２６】
第５の構成は以下の点である。
カメラ装置１０は、スイープ角速度（ユーザがカメラを振り回す速さ）の適正値を知らせる方法と、速すぎる場合に警告を出して撮影のやり直しを促す。
カメラ装置１０は、表示装置１８、たとえばＬＣＤの画面に横軸に時間、縦軸に姿勢センサ（ジャイロセンサ）の出力（スイープ角速度）をグラフにして表示する。水平画角、水平画素数、シャッタ速度が設定されると最大スイープ角速度が決まるので、その 60%〜80% を適正範囲としてグラフに表示する。
【００２７】
以下に、上述した特徴を有するカメラ装置１０のより具体的な構成および機能について説明する。
【００２８】
カメラ装置１０は、光学系１１、撮像素子１２、アナログフロントエンド（ＡＦＥ）回路１３、姿勢センサ部１４、ドライバ１５、システムコントローラ１６、メモリ１７、表示装置１８、操作部１９、発音部２０等を含んで構成されている。
【００２９】
光学系１１は、被写体像を撮像素子１２の撮像面に結像させる。
光学系１１は、通常のレンズ１１１、光軸可変素子としてのシフトレンズ１１２、およびメカニカルシャッタ１１３を含んで構成される。
シフトレンズ１１２は、画像を集光する機能に加えて、ドライバ１５の駆動により光軸の方向を変更可能な機能を有している。
【００３０】
撮像素子１２は、ＣＭＯＳ（Ｃｏｍｐｌｙｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）デバイスまたはＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）で構成される。
本実施形態では、ＣＭＯＳイメージセンサを例として説明する。また、上述した第１の構成では、固体撮像素子としてＣＭＯＳイメージセンサが適用される。
撮像素子１２は、半導体基板上にマトリクス状に配列した光センサにより光学系１１による被写体像を検出して信号電荷を生成し、同信号電荷を垂直信号線や水平信号線を介して読み出して被写体の画像信号を出力する。
撮像素子１２がＣＭＯＳイメージセンサにより形成される場合、電子シャッタとしてグローバルシャッタとローリングシャッタで露光制御が行われる。この露光制御は、システムコントローラ１６により行われる。
【００３１】
ＡＦＥ回路１３は、たとえば撮像素子１２からの画像信号に含まれる固定パターンノイズを除去し、自動利得制御の動作により信号レベルを安定化してシステムコントローラ１６に出力する。
【００３２】
姿勢センサ１４は、カメラ装置１０の姿勢を検出し、検出結果をシステムコントローラ１６に供給する。
姿勢センサ１４は、たとえば３軸加速度センサ１４１と３軸角速度センサ１４２により構成される。
加速度センサ１４１は重力の方向となす角をスタティックに知ることができ、チルト角とロール角を検出することが可能である。しかし、パン角を検出することはできない。
そこで、移動角を知るためには角速度センサ１４２を用いる。これはジャイロセンサとも言われ、回転中の角速度が電圧信号として検出が可能であり、この電圧信号を積分すると角度になる。そして、３軸であることからパン角、チルト角、ロール角が検出できる。
【００３３】
ドライバ１５は、システムコントローラ１６の制御の下、光学系１１のシフトレンズ１１２の光軸を変更する。
【００３４】
システムコントローラ１６は、ＡＦＥ回路１３の出力信号に対して色補正処理、複数画像の合成処理、自動露光制御、オートホワイトバランス制御等を行うための回路である。
【００３５】
システムコントローラ１６は、画像信号処理部１６１、および制御部としてのマイクロコンピュータ（μ−ＣＯＮ）１６２を含んで構成される。
【００３６】
画像信号処理部１６１は、一点から方向を変えて複数回撮影した多数の画像をしわ寄せなく正確に合成を行うことができるように構成した精密合成処理部を有している。
そして、図３に示すように、精密合成処理部１６１１は、第１色補正機能部１６１１１、合成機能部１６１１２、および第２色補正機能部１６１１３を含んで構成されている。
【００３７】
画像信号処理部１６１は、カメラ装置１０を移動させながら複数枚の撮像画像を行った場合に、取得した画像を合成することによってパノラマ画像を生成する。
マイクロコンピュータ１６２は、姿勢センサ１４の検出結果に応じて、画像を集光するレンズ（シフトレンズ）の光軸をカメラの移動方向と角速度を打ち消すよう制御する。
マイクロコンピュータ１６２は、固体撮像素子としてはＣＭＯＳイメージセンサを用いた場合に、中一部のラインの露光時間と読み出し時間を加えた期間に上記の光軸制御を行いそれ以外の時間においては、光軸を中心付近に戻すようにドライバ１５を制御する。その際のカメラの撮影方向はＣＭＯＳイメージセンサのラインに対して垂直方向とする。
そして、マイクロコンピュータ１６２は、ＣＭＯＳイメージセンサの一部を短冊状に切り出し、その部分に対応した光軸制御を行うことにより、カメラが高速に動いても高いフレームレートで解像度を低下させずにパノラマを生成するように制御する。
【００３８】
マイクロコンピュータ１６２は、角速度センサ１４２の検出信号を積分してカメラ装置１０の回転角度を算出し、算出された回転角度に応じて、シフトレンズ１１２の光軸の変化量を制御する。
あるいは、画像信号処理部１６１は、撮像された隣り合う画像の動き成分を検出し、マイクロコンピュータ１６２はこの検出された動き成分に応じて光軸の変化量を制御することも可能である。
あるいは、マイクロコンピュータ１６２は、算出された回転角度および動き成分を用いて光軸の変化量を制御することも可能である。
【００３９】
マイクロコンピュータ１６２は、撮影された各画像はどの方向を向いて撮影したかという姿勢の情報をメモリ１７に記録する。
画像信号処理部１６１およびマイクロコンピュータ１６２は、画像の重複領域を利用してブロックマッチング等の画像認識機能を使って相互の画像の相対位置関係を算出し、各種の姿勢センサのデータによる画像の位置関係を算出する。
マイクロコンピュータ１６２は、算出した相対位置関係と画像の位置関係の双方の選択的協調によってより精度の高い画像の相対位置関係を算出する。
その後、マイクロコンピュータ１６２は、各画像の中心が向く方向、パン角（経度）とチルト角（緯度）および、その光軸のまわりに回転するロール角（傾斜）といった各画像の絶対位置関係を特定する。
画像信号処理部１６１は、これを初期値として精密自動合成を行う。
【００４０】
マイクロコンピュータ１６２は、片方だけでは不明な、画像のピクセル画角、姿勢センサの静止時の値、姿勢センサ値のピクセル画角対応といった情報を算出する。マイクロコンピュータ１６２は、オフセット、ゲイン等のパラメータを有し、これを変更することによって実際の方向とほぼ一致させることができる。
マイクロコンピュータ１６２は、静止時の姿勢のデータを３軸（または２軸）加速度センサが重力の方向となす角としてスタティックに検出し、それを姿勢情報の初期値とする。
マイクロコンピュータ１６２は、カメラの縦方向、横方向の主に回転移動をたとえば３軸角速度センサ１４２を時間積分したもので計算し、各画像の撮影された時点の方向データとする。
マイクロコンピュータ１６２は、画像の重複領域を利用してブロックマッチング等の画像認識機能を使って相互の画像の位置関係を算出するが、相互の画像の位置関係を演算で求めると同時にその結果が正しいか正しくないかの判定も行う。
マイクロコンピュータ１６２は、ここで判定された結果が正しい場合、この情報でパラメータを校正する。
そして、マイクロコンピュータ１６２は、判定された結果が正しくない場合、既に校正されているパラメータによる姿勢センサの値を使って画像を配置していく。
【００４１】
マイクロコンピュータ１６２は、移動体による影響を検出した場合に、表示装置１８あるいは発音部２０により表示あるいは警告音、または両者により警告を出して撮影のやり直しを促す。
マイクロコンピュータ１６２は、移動体の検出に関し、重複率を５０％以上として被写体のどの部分も少なくとも２枚の画像にまたがって写るようにし、隣接画像間の移動ベクトルの類似性で視差による影響や動被写体を検出する。
すなわち、マイクロコンピュータ１６２は、移動体または視差による影響を検出した場合に警告を出して撮影のやり直しを促す。
マイクロコンピュータ１６２は、近距離の被写体がパララックスの影響をどの程度受けているかを検出し、カメラの視点を中心として撮影し直すことを促す。
【００４２】
マイクロコンピュータ１６２は、スイープ角速度（ユーザがカメラを振り回す速さ）の適正値を知らせ、速すぎる場合に表示装置１８あるいは発音部２０により表示あるいは警告音、または両者により警告を出して撮影のやり直しを促す。
マイクロコンピュータ１６２は、表示装置１８、たとえばＬＣＤの画面に横軸に時間、縦軸に姿勢センサ（ジャイロセンサ）の出力（スイープ角速度）をグラフにして表示する。水平画角、水平画素数、シャッタ速度が設定されると最大スイープ角速度が決まるので、その６０％〜８０％を適正範囲ＲＮＧとして、図４に示すようにグラフに表示する。
操作手順の概略は以下の通りである。
[1]操作部１９のスタートボタンを押してカメラを回し、その後スタートボタンを離す。
[2]スタートボタンが押されている間のスィープ角速度が、図４に示すように、表示装置１８の画面に表示される。
[3]適正範囲ＲＮＧより遅い場合には警告はないが、一瞬でも範囲を越えて速い場合には警告音が出る。
【００４３】
以下に、上述した第１〜第５の構成について具体的に説明する。
なお、第１〜第５の構成における主たる制御はシステムコントローラ１６により行われる。
【００４４】
［第１の構成］
第１の構成では、固体撮像素子としてＣＭＯＳイメージセンサを適用することからフレーム／フィールドと言った考え方は存在せず、全てのラインを順次読み出すプログレッシブ方式となる。
【００４５】
図５（Ａ）および（Ｂ）は、本実施形態の第１の構成における撮影形態を説明するための図である。
【００４６】
カメラ装置１０の動かし方としては、基本的に図５（Ａ）に示すような鉛直方向、もしくは図５（Ｂ）に示すような水平方向に回転動作することを前提としている。つまり、ＣＭＯＳイメージセンサの読み出しラインに対してカメラを垂直に動作させる。
また、図５の濃い短冊部３０で示されるように、本実施形態では、マイクロコンピュータ１６２は、ＣＭＯＳイメージセンサの撮像範囲のうち中心部から切り出される短冊に対して光軸制御を行っている。
【００４７】
このように短冊撮影を行うことにより以下の利点が得られる。
(a)パララックスの影響は短冊の幅が狭いほど有利になる。
(b)ＣＭＯＳイメージセンサの非同時読み出しの影響も短冊の幅が狭いほど有利になる。
(c)周辺減光の影響にも有利になる。
(d)レンズ歪の影響にも有利になる。
【００４８】
マイクロコンピュータ１６２は、たとえば姿勢センサ１４の検出結果に応じて、画像を集光するレンズ（シフトレンズ）の光軸をカメラの移動方向と角速度を打ち消すよう制御する。
マイクロコンピュータ１６２は、固体撮像素子としてはＣＭＯＳイメージセンサを用いた場合に、中一部のラインの露光時間と読み出し時間を加えた期間に上記の光軸制御を行いそれ以外の時間においては、光軸を中心付近に戻すようにドライバ１５を制御する。
【００４９】
すなわち、図５で示すような短冊部３０が露光されている間、光軸制御が行われる必要がある。
【００５０】
図６は、ＣＭＯＳイメージセンサの露光時間と蓄積電荷の読み出し時間、そして光軸制御時間の関係を示す図である。
ＣＭＯＳイメージセンサの各ラインにおいて露光に引き続き電荷の読み出しが行われるが、あるラインについて読み出しが終了した後、次のラインの露光と電荷の読み出しが行われる。この動作を繰り返して短冊部の全ての電荷処理が行われる間、光軸制御が行われる。
たとえば、１ラインあたりの読み出し時間が7.8μsec/ラインのＣＭＯＳイメージセンサを使用し、シャッタ速度が1/1000秒（つまり露光時間が1msec）、短冊幅が200ラインの場合、図６の総読み出し時間は1.56msec、光軸制御時間は2.56msecとなる。これは各種パラメータを与えた場合に決まるぶれの画素数やフレームレートなどを計算した図２２の条件[3]に相当する。ちなみに、撮影のフレームレートが60fps（1画像あたり約16.66msec）において、対応する特許文献１の図３における数値を当てはめてみると、Sonは2.56msecであり、Soff = 16.66-2.56 = 14.1(msec)となる。
また、光軸制御される限界角度については、特許文献１では±1.2(deg)であるが、本実施形態の場合、たとえば、±0.5°の範囲で可変であるところ、0度〜0.3度までの間を使用する。これは可変範囲の最大値の約60%である。
【００５１】
このように撮影して得られた短冊画像を用いて、図３の精密合成処理部１６１１で画像合成しパノラマ画を生成する。以下、この精密合成処理部１６１１の画像の合成処理について説明する。
【００５２】
このように、本実施形態に係るシステムコントローラ１６は、一点から方向を変えて複数回撮影した画像を、色ムラを補正して１枚に精密合成する機能（たとえばソフトウェア）を有している。
以下、本実施形態の精密合成の特徴的な機能部分を具体的に説明する。
【００５３】
第１色補正機能部１６１１１は、レンズ歪補正係数などのパラメータを抽出するときは、ひとつの境界に少なくとも３個のブロックマッチング（ＢＭ）を行い、最低４枚の境界について合成を行い、これが正確になるようにレンズ歪補正係数を決めていく。
換言すれば、第１色補正機能部１６１１１は、原画像からレンズ歪み補正係数などにパラメータを抽出する。
そして、第１色補正機能部１６１１１は、すべての部分画像に一様に周辺減光補正、コントラスト強調、彩度強調、ガンマ補正を行う。
【００５４】
合成機能部１６１１２は、第１色補正機能部１６１１１でレンズ歪補正係数などのパラメータが決まり、周辺減光補正、コントラスト強調、彩度強調、ガンマ補正を行った後、全ての境界に少なくとも１個（たとえば３個）のＢＭ（ブロックマッチング）を行う。
合成機能部１６１１２は、すべての境界について同時にＢＭ結果の評価を行い、すべての境界の誤差が小さくなるように光軸の方向を更新して誤差を小さくしていき複数の画像の合成を精密に行う。
【００５５】
第２色補正機能部１６１１３は、合成機能部１６１１２で精密合成された複数の画像のうち、隣接する画像間の色の違いを減少させるため、すべての部分画像に対して独立に行う色（ムラ）補正を行う。
また、第２色補正機能部１６１１３は、隣接する画像間の色の不連続を検知限界以下まで減少させるための色補正を行う。
【００５６】
ここで、精密合成処理部１６１１における精密合成処理の原理的な概念を説明する。
【００５７】
本実施形態においては、基本的に、フーリエ解析(Fourier analysis)に基づく位相相関技術(phase correlation technique)を採用している。
つまり、空間的関数のシフトがスペクトル領域における位相のみ変化するというフーリエシフト定理に基づいて技術を採用している。
つまり、２つの関数ｆ１およびｆ２が次の関係を満足しているとする。
【００５８】
［数１］
ｆ２（ｘ、ｙ）＝ｆ１（ｘ＋ｘｔ，ｙ＋ｙｔ）
【００５９】
また、次のようなスペクトル特性を有する。
【００６０】
［数２］
Ｆ２（ｕ，ｖ）＝Ｆ１（ｕ，ｖ）ｅｘｐ（−２πｉ（ｕｘｔ＋ｖｙｔ））
【００６１】
この式は、等価的に、相互電力スペクトル（Cross-Power Spectrum : CPS）を用いて次のように書き換えることができる。
【００６２】
【数３】
2010147635.tif 000003
【００６３】
ここで、Ｆ２＊は複素関数Ｆ２の共役関数である。
実際、画像は、図７に示すように、２つの画像の相互電力スペクトルのようなビット雑音である。
したがって、相互電力スペクトル(ＣＰＳ)のピークを探り出し、それからトランスレーション（平行移動）パラメータ（ｘｔ，ｙｔ）を引き出すことが望ましい。
【００６４】
図７は、相互電力スペクトル(ＣＰＳ)を用いたトランスレーションにおけるステッチング画像を示す図である。
図７（Ａ）は２つの画像のステッチングの結果を示している。２次元のトランスレーションは、図７（Ｂ）に示すように、相互電力スペクトル(ＣＰＳ)のピーク検出によって得られる。ここで、相互電力スペクトル（ＣＰＳ）が読み可能であれば画像は完全に整合する。
ノイズの多い画像は、最高のピークを検出することが困難であることから、いくつかのピークから選択するようにしても良い。
【００６５】
次に、ＢＭ（ブロックマッチング）を用いてパラメータを抽出する原理について、図８〜図１４に関連付けて説明する。
ここで、ＢＭは上述した相互電力スペクトル（ＣＰＳ）のピークを引き出す機能を含む。
【００６６】
まず、図８に示すように、条件のよい４枚の画像ＩＭ０，ＩＭ１，ＩＭ２，ＩＭ３を選択する。
たとえば左下が第０の画像ＩＭ０、その右が第１の画像ＩＭ１、左上が第２の画像ＩＭ２、その右が第３の画像ＩＭ３とする。これらの画像ＩＭ０〜ＩＭ３は、隣接する画像間の境界で重なり部分を含むように配置される。
図８において、境界部分に配置した矩形で示すものがブロックＢＬＫである。
このような配置条件で、ＢＭ（ブロックマッチング）を行う。
そして、上下左右の４つの境界ＢＤＲ０１，ＢＤＲ０２，ＢＤＲ１３，ＢＤＲ２３から、レンズ歪み、画角、チルト角などの情報を取り出す。
【００６７】
ＢＭ（ブロックマッチング）についてさらに説明する。
ＢＭは、たとえば図９に示すように、一つの境界で３箇所について行う。
レンズ歪みがあると、ＢＭの結果は図１０に示すように弓なりになる。
チルト角が正しくないと、ＢＭの結果は図１１に示すような、図中の左右方向に傾いたような誤差が生じる。
レンズ歪みの中心が縦にずれていると、図１２に示すように、上下の境界で左右の伸縮が起きる。左右の境界で上下の伸縮が起きているときは、レンズ歪みの中心が横にずれているときである。
上に向くにつれて画像が回転する場合、図１３に示すように、上下方向に傾いたような誤差が生じる。メカニカルなチルト軸に対してカメラが正面を向いていないときに、図１３のようになる。
これらの誤差が最小となるように各種パラメータを決める。
これにより、どこの４枚をつないでも、誤差を小さくすることができる。
【００６８】
たとえばファースト位相相関マッチング(fast phase correlation matching)を適用して画像における対応するＢＭを行う。ベクトル変位（ｘｉｊ，ｙｉｊ）を得、３個のブロックの変位の振舞いを解析することにより、各パラメータを定量化することができる。
【００６９】
以上の４枚のＢＭ（ブロックマッチング）を行った後、図１４（Ａ），（Ｂ）に示すように、多くの枚数に拡張し、すべての境界について同時にＢＭ結果の評価を行う。すべての境界の誤差が小さくなるように光軸の方向を更新して誤差を小さくしていき複数の画像の合成を精密に行う。
この場合、基準画像を１枚決め、それ以外の画像を平行移動して最も誤差が小さくなる位置に収束させる。
【００７０】
精密合成処理は、以下の基本的処理に従って行う。それを箇条書き的に示す。
平行移動で最適位置を求め、移動する。
この場合、ループを回す。
移動すべき量の総和を示すパラメータ fxy を 0.0 にする。
上下左右（縦横）のすべての画像について行う。
基準画像は動かさない。
ＢＭの結果、隣接画像との位置関係が得られているのでこれに基づいて動かすべき量を計算する。
その方法は、真上と右隣のものを加え、真下と左隣のものを引いて平均を作り、f[y][x].x, f[y][x].y とする。
その８０％を現在の画像の中心位置に加えて新しい画像の中心位置とする。
fxy に、すべての画像の移動すべき量の絶対値の総和を入れる。
この移動によって上下の位置関係、左右の位置関係がどう改善されるかを計算する。
fxy はこの移動を繰り返すことにより、だんだん小さくなる性質を持っている。
言い換えると、これ以上移動することができない状態に収束する。
fxy が十分小さくなったら終了する。
【００７１】
ここで、何千枚つないでもしわ寄せが起こらない画像合成の具体的な処理の一例を説明する。
ここでは、４枚の画像について考察する。
【００７２】
たとえば図８に示すように、左下が第０の画像ＩＭ０、その右が第１の画像ＩＭ１、左上が第２の画像ＩＭ２、その右が第３の画像ＩＭ３とする。
第０の画像ＩＭ０は動かさない。すなわち、第０の画像ＩＭ０を基準画像とする。
ＢＭ（ブロックマッチング）の結果の横の成分を bx1[0]、bx1[1]、bx2[0]、bx2[1]とする。
縦の成分も独立に行うが、ここでは横のみを扱うことにする。
bx1は左右、bx2は上下である。［］の中の数字は０が下または左である。
基準画像ＩＭ０に対して右または上の画像が右または上にあるとき、ＢＭ結果は正の値となる。
今、極端な例として、一か所だけ異常な値があったときを想定し、bx1[0]=10、bx1[1]=0、bx2[0]=0、bx2[1]=0とする。
【００７３】
ここで、１段目の左右が１０画素ずれていて、その他３箇所の境界では全くずれていないときを考える。
もし、第０の画像ＩＭ０と第１の画像ＩＭ１のＢＭ結果から第１の画像ＩＭ１の位置を決め、第１の画像ＩＭ１と第３の画像ＩＭ３のＢＭ結果から第３の画像ＩＭ３の位置を決める。そして、第２の画像ＩＭ２と第３の画像ＩＭ３のＢＭ結果から第２の画像ＩＭ２の位置を決めていくと、第０の画像ＩＭ０と第２の画像ＩＭ２の位置関係に１０画素という大きな値がしわ寄せとして生じてしまう。
【００７４】
本実施形態の方式では、このようなとき、１０という異常な値の影響が２．５ずつに分散されることを示す。なお、この処理は、一部を後述するプログラムに沿って処理される。
xypos2()で隣接画像との位置関係から平行に移動すべき量を求める。
最初、第１の画像ＩＭ１は−５画素移動するべきと計算される。
move() で平行に移動する。
実際に移動させる量はその８０％の４画素である。
第０の画像ＩＭ０以外の各画像ＩＭ１，ＩＭ２，ＩＭ３の移動量は pox[1]=4、pox[2]=0、pox[3]=0  となる。
このことにより、ＢＭ結果bx1[0]は１０から６に変化する。
それに伴い、bx2[1]は０から４に変化する。
２回目、第１の画像ＩＭ１は−１画素移動するべきと計算される。
第３の画像ＩＭ３は−２画素移動するべきと計算される。
その８０％、0.8を加算するとpox[1]=4.8となる。
以下、３回目、．．．と計算し、３２回目に、移動すべき量の総和が fxy が ０．００１画素を下回るため、終了となる。
このとき、平行に移動すべき画素数は７．５，２．５，５．０となり、各画像の位置関係も、
bx1[0]=10、bx1[1]=0、bx2[0]=0、bx2[1]=0であったものが、
bx1[0]=2.5、bx1[1]=-2.5、bx2[0]=-2.5、bx2[1]=2.5となって、誤差が分散されていることがわかる。
【００７５】
以下に、ii= 32,  fxy= 0.00083  fxy が 0.001 以下になったときの回数とその値を示す。
【００７６】
n     ix    fx[n]     fy[n] 
0   0  0.000000  0.000000  
1   2 -0.000244  0.000000  
2   2 -0.000244  0.000000  
3   2 -0.000344  0.000000  
n     pox[n]       poy[n]    fz[n]  平行に移動すべき画素数
0       0.00       0.00    
1       7.50       0.00    
2       2.50       0.00    
3       5.00       0.00    
【００７７】
以下には、プログラム例の一部を示す。
【００７８】
−−プログラムの一部（ここから）−−−−−−−−−−−−−−−−
clrpos();            // 平行に移動すべき量[pixel] pox[],fzx[],rolla[] に 0 を入れる。
for (ii=0;ii<1000;ii++){
xypos2();        // 隣接画像との位置関係から平行に移動すべき量を求める。
if (fxy<0.001){break;}
move();          // 平行に移動する。
}
fprintf(inf,"ii=%3d,  fxy=%8.5f  fxy が 0.001 以下になったときの回数とその値\n",ii,fxy);
xypos();        // 隣接画像との位置関係から平行に移動すべき量を求める。
move();        // 平行に移動する。
dsppos();      // 補正量を表示する。
angle();      // 補正量を角度にし、 qq[n],pp[n] を更新する。
dsppos();      // 補正量を表示する。
dsperr();      // 各小画像対の誤差が １ を超えるものを表示する。
step();        // qq[n],pp[n] からステップ角を作る。
−−プログラムの一部（ここまで）−−−−−−−−−−−−−−−−
【００７９】
また、主なサブルーチンを以下に示す。
【００８０】
−−主なサブルーチン−−−−−−−−−−−−−−−−
void xypos2(){    // 隣接画像との位置関係から平行に移動すべき量 fx[n],fy[n] を求め、
// 平行に移動できないフラグ fz[n] を求める。（fprintf 削除）
int m,n,m2,n2,h,v,ix;
double cx,cy;
//fprintf(inf," n     ix    fx[n]     fy[n]\n");
fxy=0;
for (v=0;v<ny;v++){          // すべての画像について
for (h=0;h<nx;h++){
m=(nx-1)*v+h;            // 左右の境界
n=nx*v+h;                // 上下の境界
ix=0;
if ((0<skip[h][v])||((v==(ny-1)/2)&&(h==(nx-1)/2))){ // 中央の画像と確定済みフラグの画像は動かさない。
fx[n]=0;fy[n]=0;fz[n]=4;        // fz[n] は平行に移動できないフラグ
if (skip[h][v]==2){fz[n]=2;}    // 確定済みフラグの画像は２とする。
}else{
cx=0;cy=0;
if (v!=0){                      // 最下段ではないとき
n2=n-nx;                    // 真下
if (0<fok2[n2]){
ix++;
cx-=bx2[n2];            // 真下のものを引く
cy-=by2[n2];
}
}
if (v!=ny-1){                    // 最上段ではないとき
if (0<fok2[n]){
ix++;
cx+=bx2[n];              // 自分のものをたす
cy+=by2[n];
}
}
if (h!=0){                        // 最左端でないとき
m2=m-1;                      // 左隣り
if (0<fok1[m2]){
ix++;
cx-=bx1[m2];              // 左隣りのものを引く
cy-=by1[m2];
}
}
if (h!=nx-1){                      // 最右端でないとき
if (0<fok1[m]){
ix++;
cx+=bx1[m];                // 自分のものをたす
cy+=by1[m];
}
}
if(ix==0){
fx[n]=0;fy[n]=0;fz[n]=1;
}else{
fx[n]=cx/ix;
fy[n]=cy/ix;
fz[n]=0;
}
fxy+=fabs(fx[n])+fabs(fy[n]);
}
}
}
}
//******************************************
void move(){          // 平行に移動する。
int m,n,h,v;
for (v=0;v<ny;v++){        // 画像の中心位置（画素）
for (h=0;h<nx;h++){
n=nx*v+h;
if (fz[n]==0){    // 周囲から隔絶されていないとき
pox[n]+=-fx[n]*0.8;
poy[n]+=-fy[n]*0.8;
}
}
}
for (v=0;v<ny;v++){        // 左右の位置関係
for (h=0;h<nx-1;h++){
m=nx*v+h;
n=(nx-1)*v+h;
bx1[n]+=-(fx[m]-fx[m+1])*0.8;
by1[n]+=-(fy[m]-fy[m+1])*0.8;
}
}
for (v=0;v<ny-1;v++){        // 上下の位置関係
for (h=0;h<nx;h++){
n=nx*v+h;
bx2[n]+=-(fx[n]-fx[n+nx])*0.8;
by2[n]+=-(fy[n]-fy[n+nx])*0.8;
}
}
}
//******************************************
【００８１】
以上説明したように、本実施形態の第１の構成によれば、ＣＭＯＳイメージセンサを搭載したデジタルカメラを用いても解像度を低下させずに高速フレームレートで撮影し、パララックスの影響、周辺減光の影響、レンズ歪の影響を軽減することができる。しかも、高品質のパノラマ画像を作成することができる。
合成する画像の数にかかわりなく、正確な合成を行うことが可能で、また、色ムラの発生を抑止することができる。
そして、レンズ歪補正係数を実写画像から抽出することができたため、厄介なキャリブレーションの作業が不要になり、精度も格段に向上する。
何千枚つないでもしわ寄せが出ない方法により、撮影枚数を気にすることなく、必要な範囲を必要な解像度で撮影することができるようになる。
【００８２】
次に、第２の構成について説明する。
【００８３】
［第２の構成］
連続撮影した画像の空間位置記録について説明する。
【００８４】
＜概要＞
連続写真によるパノラマ撮影は、空間を分割して１枚の写真に収める作業となる。その写真からパノラマを作成する際に、撮影時の空間情報を用いて逆の演算を行うことで高精度なパノラマ写真とすることができる。
本実施形態では、写真を撮影する際にセンサと画像から撮影した空間の情報を計算し、その情報を写真１枚１枚に付与しておく事でパノラマ写真生成に役立てる。
【００８５】
＜撮影した空間の情報を付与する＞
たとえば、パノラマ撮影をする場合、一点に固定してモータでレンズを駆動させ撮影方向を変化させる。
この条件で撮影した写真は、撮影方向が異なるだけでカメラ装置１０の位置つまり焦点位置は固定となる。よって、ここではとある一点から固定画角でその周囲を撮影した画像に限定する。
このような撮影方法の場合、撮影した空間の情報は以下の二つとなる。
すなわち、どこを狙って撮影したか(視線ベクトル)の情報と、視線ベクトルを軸とした回転角(ロール)の情報である。
【００８６】
＜投影球と空間の定義＞
空間を撮影した写真は１枚の面に投影される。
空間をパノラマ撮影すると考えたとき、全方位を扱うには撮影者の周辺に球が存在しそこに投影されると考えると画像処理が行い易い。この球を用いて視線ベクトルを定義することで座標空間も決定される。
カメラ装置１０が存在する焦点位置を原点(0,0,0)とし、投影球を半径１と定義する。
水平時の正面方向はＺ軸の１、f(0,0,1)とすると視線ベクトルは(0,0,0)からf(0,0,1)へ向かうベクトルとなる。
視線ベクトルは長さ１の単位ベクトルとなり、どこを向いても長さは１である。
視線ベクトルｖ１だけではフレームのロールが記録できないため、もう１つのロールベクトルｖ２を記録する。これは画像の上方向を示す情報で(v2-v1)が画像の上方向を示すベクトルとなる。
これにより、画像の撮影方向を2つのベクトル(投影球上の２点)で示すことができ、全方位で密度の差無く指し示すことができる。
【００８７】
＜相対移動と絶対座標＞
撮影時の空間情報には相対情報と絶対情報の二種類が存在する。
パノラマ画像を作る目的においては、どこを向いて撮影した画像かという絶対的位置情報があれば良いのだが、確実な絶対情報が得られないため相対情報から積算したり、大雑把な絶対情報を使って補正をしたりすることになる。
レンズ駆動型パノラマカメラにおいては、レンズを移動するシナリオは絶対情報だが、撮影時の揺れ、レンズ駆動時の誤差混入、姿勢感知センサの精度の荒さ等が相対情報として加算されるため精密な絶対値は計算で求めることになる。
【００８８】
＜相対移動の空間展開＞
今、画像認識と姿勢センサにより正確な相対情報が入手できたとする。
現在の画像フレームf１が１つ前の画像フレームf2より、位置的に(dx, dy)移動しており、フレームロールがｒｚだけロールしていた場合、画角からｘ軸ｙ軸の回転量がｒｘ,ｒｙと計算できる。このときｆ１の視線ベクトルｖ１はｆ２の視線ベクトルｖ２が(rx, ry, rz)回転したことになる。
この情報を元に投影球上の絶対位置を求めていくのであるが、ｖ２の位置から回転(rx, ry, rz)と求めていくのは少々計算が複雑となる。
そこで、最新の画像ｆ１を真正面v1(0,0,1)と固定してしまい、ｆ２以降投影球上に配置された画像を球ごと(-rx,-ry,-rz)だけ回転させてしまう。つまり、最新の画像ｆ１を基準に、他を相対的に移動させる。
これを繰り返していくと、最後の画像の位置が(0,0,1)となるがそれ以外の全ての画像の絶対座標が求まっている。
ロールの情報もベクトルとして、視線とロール二つのベクトルにしたのはこの相対的回転(球の方を回転させること)が容易になるからである。
【００８９】
＜相対移動値の積算と絶対情報とのズレ＞
画像の空間配置のために相対情報だけを用いたが、実際には姿勢センサ１４等により絶対的なロールや上下方向の傾き情報も入手できている。ただ、姿勢センサ１４により得られる絶対情報はパノラマ写真の生成に必要な精度と比べ荒く、その値をそのまま使うのは困難である。
一方、相対情報は画像認識から得るため高い精度を持つが、それでも誤差は含まれる。相対情報で繋いでいくと積算誤差で若干の誤差が大きなずれとなって現れる。
そこで、姿勢センサ１４による絶対情報をこの積算誤差が生じていないかの確認として用いる。
相対移動の空間展開処理の途中で、ある程度の間を空けつつ姿勢センサの絶対値と比較をしていく。あまりにも相対移動が姿勢センサの絶対値と離れてきていたら姿勢センサの絶対値を用いて補正を行う。そしてまたそこの位置から相対的に移動の積算を行っていく。
【００９０】
図１５は、連続撮影した画像とセンサ情報を基に空間配置する方法を示す機能ブロック図である。
【００９１】
図１５において、角速度センサ１４２の検出信号に対して機能ブロック４１でゼロ基準値を設定して、移動量積分部４２で移動量を積分する。
また、撮像素子１２を通して撮影したフレーム間の画像比較と移動量を検出部４３で検出する。
移動量積分部４２と検出部４３の出力から協調補正ロジック４４で協調補正し、相対位置積分部４５で相対位置を積分し、絶対位置情報を得る。
そして、その絶対位置情報を加速度センサ１４１の検出結果に基づいて絶対位置補正部４６で補正し、配置部４７でフレームの空間位置を決定し、配置する。
【００９２】
＜空間座標情報とパノラマ写真＞
以上のような計算を撮影しながら行っていき、画像とともに撮影方向といった空間座標情報をメタデータとして同時に記録する。
このメタデータだけでもパノラマ写真を生成することができるが、後処理より精密な調整とオーサリングを行う際の基本データとしても用いることができる。
【００９３】
これまでは空間における撮影方向というメタデータが存在しなかったためパノラマ写真を精密化することができなかったが、本実施形態では、それを解決するために撮影時に座標情報を付与する。
【００９４】
このように、第２の構成では、連続した画像を、画像認識技術で得られたフレームの移動情報と、姿勢センサからの移動情報を用いて空間的に配置する。画像認識では情報を得られない部分を姿勢センサ情報で補い、姿勢センサ情報は画像認識の成功確認や失敗時の補助座標として用いる。空間的に配置された画像は１つのパノラマ画像として完成する。
この方法を使うと正面付近のみならず、真上も真後ろも正しく表現でき、全方位、あるいは全天球撮影に対応させることができるようになる。
正面付近のみの場合でもより広角画面でも誤差なく仕上げることが可能になる。
無論、手持ち撮影に十分に対応することができ、高精細な画像を得ることができる。
【００９５】
次に、第３の構成について説明する。
【００９６】
［第３の構成］
連続撮影した画像による位置認識の補正について説明する。
【００９７】
＜概要＞
連続撮影した写真に高精度な撮影位置情報を付与するために、本構成では、姿勢センサと画像認識を合わせた手法、いわゆる「ダイナミックキャリブレーション」を用いる。
【００９８】
＜連続撮影と撮影位置の情報＞
連続撮影した写真を用いてパノラマ写真を合成する際、画に高周波成分が含まれず画から連続性を特定できない場合がある。
そのような場面では連続するフレームがどれくらい移動しているのかといった情報を得ることができず、パノラマ写真全体が生成できないことになる。
そういった場面においても位置情報を得られるよう、姿勢センサ１４を併用し撮影中に移動情報、位置情報を写真と同時に記録する。
【００９９】
＜姿勢センサの利用＞
姿勢センサ１４は３軸の角速度センサ１４２と同じく３軸の加速度センサ１４１を同時並列に用いる。
角速度センサ１４２で今どれくらいの速度でカメラを回転させているかをとらえ、加速度センサ１４１で水平方向の傾きを感知する。
できるだけ撮影した写真で移動情報を得ていくが、画の都合で画像認識ができないような場面では前フレームからの移動量を姿勢センサ１４から得る。
全体としての姿勢センサ１４の検出結果の変化量と、画像認識による移動量を比較し相互に影響することでより厳密な位置情報を得ることができる。
【０１００】
＜姿勢センサの問題点＞
目的とするパノラマ写真撮影においては、姿勢センサ１４の精度よりも画像の精度の方が高くなっている。姿勢センサ１４の情報のみで位置情報としてしまうと、パノラマ写真として成り立たないほどの荒さとなってしまう。
精度としては期待せずに、本当に情報が取れないときの補佐とする様な使い方となる。
一般的な物理センサと同じように、姿勢センサも安定した値を出さず常に揺れている。  また、制止時のゼロ位置が状況によって変化するため、撮影前に静止状態を作り出しゼロ位置の値を計測する必要がある。その値の計測後はゼロ値からの変位でどれくらい移動したかを計測する。
【０１０１】
＜画像認識とその補正＞
本構成では、連続したパノラマ写真を撮影しながら、姿勢センサの情報もメタデータとして記録していく。
この方法では姿勢センサ１４の揺れが大きすぎるため、後々パノラマ合成時にメタデータの情報が使いにくいという難点がある。
そこで、撮影時に画像認識によるメタデータを補正計算しながら記録していく。
【０１０２】
こうしたメタデータを記録するにはカメラが今どこを向いているのかといった空間情報を内部に保持し、それを更新していくのであるが、様々な要因でこの値の精度が落ちていく。
そこで、本実施形態では、画像認識と姿勢センサからこの内部保持している空間情報をリアルタイムに補正更新していこうというのが、ダイナミックキャリブレーションである。
【０１０３】
連続したパノラマ写真を撮影する際、モータ駆動により予め移動シナリオが存在する場合と、手でスイープ移動させるため移動シナリオが存在しない場合の二通りが存在する。
モータ駆動で移動シナリオが存在する場合は、予めおおよその撮影位置が分かっているが撮影中の揺れや移動までは考慮できない。そうした、撮影時の変化を検知するために姿勢センサ１４を用いる。
姿勢センサ１４で撮影時の変化を感知したら画像認識で実際の移動シナリオとどれだけずれたかを精査する。この際の精査基準に姿勢センサ１４の移動量を用いると画像認識も容易となる。
こうして、期待する移動シナリオとの誤差が算出できたら、移動シナリオの値に加算し実際に撮影した位置情報を撮影写真のメタデータとして記録していく。
手作業によるスイープ撮影の場合は移動シナリオが存在しないため、毎フレームの撮影毎に前フレームと今フレームを画像認識による比較で移動量を算出する。
このときどれだけ動いたかが分かりにくいので、姿勢センサ１４の情報からおおよその移動量を得てその値を元に画像認識を行うことで精度の良い移動量算出が行える。
もし画像認識が困難だった場合は姿勢センサから得た移動量を記録しておき後ほど前後のフレームの位置関係などと照らし合わせて座標を決定することになる。
【０１０４】
図１６は、連続撮影した画像とセンサ情報を対応させて高精度化する方法であって、静止時のセンサ値のゼロ補正を示す機能ブロック図である。
【０１０５】
図１６において、撮像素子１２を通して撮影したフレーム間の画像比較と移動量を検出部５１で検出する。
角速度センサ１４２の検出信号、加速度センサ１４１の検出信号、および検出部５１の検出信号を基に静止検出部５２で静止検出を行い、静止時の角速度センサの基準値を得る。
そして、記録部５３により基準値の決定を行い、その基準値をメモリ１７に記録する。う。
【０１０６】
図１７は、連続撮影した画像とセンサ情報を対応させて高精度化する方法であって、移動情報の協調により高精度化を示す機能ブロック図である。
【０１０７】
図１７において、角速度センサ１４２の検出信号に対して機能ブロック５４でゼロ基準値を設定して、移動量積分部５５で移動量を積分する。
また、撮像素子１２を通して撮影したフレーム間の画像比較と移動量を検出部５１で検出する。
移動量積分部５５と検出部５１の出力から協調補正ロジック５６で協調補正し、高精度の相対移動情報を得る。
【０１０８】
このように、第３の構成では、連続した画像の記録において、画像認識技術で得られたフレームの移動情報と、姿勢センサからの移動情報を対応させる。片方だけでは不明な、画像のピクセル画角、姿勢センサの静止時の値、姿勢センサ値のピクセル画角対応といった情報を算出する。
したがって、画像から認識する方法も姿勢センサで検出する方法も単独では満足な精度のものが得られなかったが、その両者を協調させるというこの技術により、精度と安定度を格段に向上させることが可能となる。
【０１０９】
ここで、上述した第２および第３の構成について、図１８〜図２１に関連付けてさらに詳述する。
【０１１０】
＜撮影写真と撮影者の回転移動＞
パノラマ写真を撮影する際、撮影位置が変動すると視差による非連続性が発生する。
視差による非連続性は撮影後の画像処理で補正することができない。
このため、パノラマ写真を撮影する場合、撮影者とカメラは特定の位置で静止しカメラの焦点が一箇所になるようその場で回転しながら写真を撮影する。
このとき、撮影後の異なる２枚の写真内で見た目の移動距離は撮影時の回転量に比例する。
写真がデジタル画像であり、そのサイズがピクセル数で表現できる場合、２枚の画像間で何ピクセルの移動であったかは撮影時どれくらいの回転移動距離があったか逆算することが可能であるが、このとき必要なパラメータとして画角がある。
画角とは、写真一枚に写っている左右幅もしくは上下幅が撮影空間で何度の範囲かを示す数値である。
画角は撮影前に計測し与えられるパラメータであり、撮影中は揺るがないものとする。
水平画角が３０度であり、撮影したデジタル写真の横方向のピクセル数が１０００ピクセルであった場合、１ピクセルあたりの撮影空間角は０．０３度となる。つまり、２枚の写真間で８００ピクセル移動していることが認識できたとき、実際の撮影は２４度回転して撮影されたもの計算される。
この１ピクセルあたりの画角が最も重要な初期値として適用される。
【０１１１】
１ピクセルあたりの画角＝フレーム画角／フレームピクセル数
写真２枚の撮影時回転量＝写真２枚のピクセル上での移動量＊１ピクセルあたりの画角
【０１１２】
実際の１ピクセルあたりの画角は初期値としてあらかじめ計測して保持しておく。
【０１１３】
＜角速度センサと回転量＞
角速度センサは現在の角速度を出力する。
時間経過によって出力値が変動するため、角速度の変化を知ることができるが、その値が直接回転量を表してはいない。角速度センサから回転角を得るためには、積分値の単位を規定することが必要となる。
角速度センサを一定時間ごとに計測を行い、この計測間隔を重要なパラメータとして固定する。
計測した角速度を時間で積分し、その間に実際に回転した量を外部からの計測で知る必要がある。積分された角速度を実際に回転した量で除算し、１度あたりの角速度積分値を求める。
以降は、角速度積分値を１度あたりの角速度積分値で除算することで、比例的に回転移動量を求めることができる。
実際の１度あたりの角速度積分値は初期値としてあらかじめ計測して保持しておく。
【０１１４】
＜ダイナミックキャリブレーション＞
角速度センサの出力は相対的な角速度であるが、すぐれた角速度センサでない限りその出力は環境によって変化する。その変化が実際の計測に影響を及ぼすので、計測の度に補正を行う必要がある。
パノラマ撮影に特化して、その補正を撮影したパノラマ写真からのフィードバックで自動的に行う処理を、ここではダイナミックキャリブレーションという。
角速度センサで、環境によって変動するには静止時零点位置と１度あたりの角速度積分値の二つである。それと相対移動により積分誤差の積み上げがあり、以上３項目の補正を行う。
【０１１５】
＜角速度センサの零点補正＞
図１８は、角速度センサの零点補正処理のフローチャートである。
角速度センサ１４２の零点補正においては、図１８のステップＳＴ１〜ＳＴ１６の処理が行われる。
角速度センサ１４２が静止しているときの出力値が正確にわからないと角速度を検出することができない。ところが、この静止時の零点が温度等の環境によって変化してしまうことがある。
この零点ドリフトを画像マッチングの結果から補正していき、撮影時の正確な零点を求める。
スタート時の角速度センサ１４２の零点出力値は初期値としてあらかじめ設定されている値を用いる。
２フレーム間の画像マッチングを行い（ＳＴ１〜ＳＴ３）、マッチングが高周波成分を含んだたしかなものであり、かつ、Ｘ，Ｙ，Ｚ軸方向に移動がなかった場合、Ｘ，Ｙ，Ｚ軸方向の角度センサは零点を指しているものとして数値をサンプリングする。
このとき零点としてサンプリングされた値を用いて補正を行う（ＳＴ４〜ＳＴ１５）。
なお、軸方向に移動が検出された場合は零点ではないためサンプリングを行わず、零点補正は行われない。
サンプルを行ったらサンプル数をインクリメントし、零点値を補正する。
補正は現在の零点値とサンプル値の差分をサンプル数で除算したものを加算し、平均値の算出とする。
【０１１６】
補正零点値＝零点値＋（サンプル値・零点値）・サンプル数
【０１１７】
＜角速度センサの移動量補正＞
図１９は、角速度センサの移動量補正のフローチャートである。
角速度センサの移動量補正においては、図１９のステップＳＴ２１〜ＳＴ２６の処理が行われる。
１度あたりの角速度積分値は、角速度センサの角速度積分値から回転角を求めるパラメータであるが温度等の環境によって変化してしまうことがある。
この１度あたりの角速度積分値を画像マッチングを行い（ＳＴ２１〜ＳＴ２３）、マッチングの結果から補正、更新していき、撮影中の正確な値を求める（ＳＴ２４〜ＳＴ２６）。
２フレーム間の画像マッチングを行い、マッチングが高周波成分を含んだ確かなものであった場合、画像マッチングによって得られたＸ軸、Ｙ軸、Ｚ軸それぞれの移動量とそのときの角速度積分値から１度あたりの角速度積分値を求める。
【０１１８】
１度あたりの角速度積分値＝角速度積分値／（１ピクセルあたりの画角＊Ｘ軸ピクセル移動量）
【０１１９】
補正１度あたりの角速度積分値＝１度あたりの角速度積分値＋（サンプル値・１度あたりの角速度積分値）／サンプル数
【０１２０】
＜加速度センサによる角速度センサの補助＞
角速度センサは相対的な角移動量を出力する。
現在どの位置にいるかという絶対位置情報はそれまでの相対値を積分することで算出される。
その相対値にわずかなずれやノイズが含まれていた場合、積分する時間が長引くほど大きなずれを生じる可能性がある。
角速度センサは重力加速度の検出でＹ軸方向の回転（チルト）とＺ軸方向の回転（ロール）の絶対値を得ることができるが、パノラマ撮影に対して大きな単位でしか検出できず有用度では角速度センサにおとる。
しかし、絶対値が出てくるというメリットから、定期的に相対移動距離の積分値と比較して積分値の補正、絶対値の補正を行うことができる。
加速度センサで十分検出できるくらいの絶対量を移動したら、そのタイミングで相対移動距離の積分値による絶対位置と比較して必要であれば補正を行う。
【０１２１】
＜画像から得る移動とセンサから移動＞
図２０は、移動量の取得方法のフローチャートである。
移動量の取得方法においては、図２０のステップＳＴ３１〜ＳＴ３５の処理が行われる。
角速度センサ１４２の解像度と、画像マッチングによる移動量の解像度では画像マッチングの方が遥かに精度の高い数値となる。このため、相対移動距離はできるだけ画像マッチングから算出できるものを用いる（ＳＴ３３，ＳＴ３４）。
一面が同色の空ならの高周波成分が含まれない画像間ではマッチングが取れないが、そのときは角速度センサ１４２の数値を用いて相対移動量を算出していく（ＳＴ３３，ＳＴ３５）。
【０１２２】
＜撮影した写真から空間座標を割り当てる方法＞
図２１は、撮影した写真から空間座標を割り当てる方法のフローチャートである。
撮影した写真から空間座標を割り当てる方法においては、図２１のステップＳＴ４１〜ＳＴ４７の処理が行われる。
上記のように撮影したパノラマ写真すべてに、画像マッチングと角度センサから得た前フレームからの相対的回転移動量を求めることができる（ＳＴ４１〜ＳＴ４３）。
パノラマ写真を構成するためには、これら相対的回転移動量から絶対空間座標への割り当てを行う必要がある。
撮影した写真はすべて同じ画角なので、撮影した中央の点、つまりカメラが向いていたベクトルのみに注視して割り当てを考慮することができる。
前フレームとの相対的回転移動量というのは、このカメラが向いていた方向、撮影視線ベクトルが前フレームのベクトルとどれだけの角をなしているかと表現することもできる。
配置にあたって視線ベクトルだけに簡略化するとフレームＺ軸方向の回転、つまりロールが取れなくなる。
そこで、フレームの真上Ｙ軸上にずらしたベクトルをもう一つ用意することでフレームのロールを表現することにする。
この２つのベクトルがカメラの撮影方向とＺ軸のロールを表し、回転処理を行ってもフレームの情報を保持し続ける。
空間に配置する際、新しいフレームは必ず空間正面位置ａ（０，０，１．０）には位置する。
相対的回転移動量が出ている場合は、その分だけ逆方向に前のフレームすべてを回転させてから空間正面位置ａ（０，０，１．０）を配置する（ＳＴ４４〜ＳＴ４６）。
前のフレームから移動ではなく、現在のフレームから過去のフレームがどれだけ移動したかということを基準にしてあつかう。
今回撮影したフレームをＡとし、前回撮影したフレームをＢとする。
フレームＡを基準にして、フレームＢがどれだけ相対的回転移動したかを算出する（ＳＴ４３）。
現在のＡのカメラ位置からみてＢのカメラ位置がＸ軸方向にｒｘ、Ｙ軸方向にｒｙ、Ｚ軸方向にｒｚだけ回転移動したものだと算出されたらＡ以外過去に撮影されたフレームの撮影方向ベクトルおよびロール指標ベクトルすべてに、ｒｘ，ｒｙ，ｒｚの回転をかける。
回転マトリクスは一般的な三次元空間のものでよい。
【０１２３】
Ｘ軸方向の回転
ｘ２＝ｘ＊ｃｏｓ（ｒｘ）-ｙ＊ｓｉｎ（ｒｘ）
ｙ２＝ｙ＊ｓｉｎ（ｒｘ）＋ｚ＊ｃｏｓ（ｒｘ）
ｚ２＝ｚ
【０１２４】
Ｙ軸方向の回転
ｘ２＝ｘ＊ｃｏｓ（ｒｙ）-ｚ＊ｓｉｎ（ｒｙ）
ｙ２＝ｙ
ｚ２＝ｘ＊ｓｉｎ（ｒｙ）＋ｚ＊ｃｏｓ（ｒｙ）
【０１２５】
Ｙ軸方向の回転
ｘ２＝ｘ
ｙ２＝ｙ＊ｃｏｓ（ｒｚ）-ｚ＊ｓｉｎ（ｒｚ）
ｚ２＝ｙ＊ｓｉｎ（ｒｚ）＋ｚ＊ｃｏｓ（ｒｚ）
【０１２６】
そのようにして全体を回転させつつ、正面という定位置に新しいフレームを張っていくことで相対的回転移動量から絶対空間座標への転写が行える。
最終的にすべてを適用し終えたとき、すべてのフレームは適した絶対座標を持ちうる。
だだし、最後のフレームが基準になっているので、任意のフレームを基準に相対移動する必要がある場合もある。
【０１２７】
次に、第４の構成について説明する。
【０１２８】
［第４の構成］
第４の構成では、視差による影響や移動体による影響を検出した場合に、表示装置１８や発音部２０により警告を出して撮影のやり直しを促す。
また、第４の構成では、移動体の検出に関し、重複率を５０％以上として被写体のどの部分も少なくとも２枚の画像にまたがって写るようにし、隣接画像間の移動ベクトルの類似性で視差による影響や動被写体を検出する。
【０１２９】
広い範囲の被写体をさっと一振りで複数の短冊状画像を撮影して１枚に合成するカメラ装置１０において、近距離の被写体がパララックスの影響をどの程度受けているかを検出し、カメラの視点を中心として撮影し直すことを促す。
一般に広角のカメラの視点はレンズの直後にあり、カメラを手に持って手首を中心に回すのが理想的である。
こうしてカメラの視点を中心として撮影したものは近距離の被写体が含まれていても正しく合成することができる。
本実施形態のカメラ装置１０は、複数の画像をすべて短冊状に撮影するのでカメラの視点から少々ずれた位置を中心として撮影してもその影響が出にくいという長所も持っている。
しかし、それでもカメラを手に持って肩を中心にして回して撮影した場合、カメラの視点よりかなり後方を中心として回すことになり、パララックスの影響を強く受ける。
すべてが遠方の景色なら殆ど問題ないが、近距離の被写体が含まれていると隣接画像との位置関係が遠距離の被写体と異なり、正しく合成することができない。
そこで、第４の構成では、パララックスの影響で正しい画像合成ができないことが検出された場合に、視点を中心にして回すように指示を出して撮り直しを促すことにしている。
【０１３０】
［視差検出の方法］
視差の検出方法について説明する。
時間的に隣接する２枚の画像の重複する領域内で複数のブロックマッチング（ＢＭ）を行い、その結果の移動ベクトルを求める。
通常、正しくスイープされているとＢＭ結果がほぼ同一のベクトルになる。
肩中心に回したとき、遠距離の景色の一部に近距離の被写体があると、異なるベクトルの値になる。
近距離の被写体と遠距離の被写体の境目では画像の変化が激しいため、ＢＭ結果は正しく得られない。この方法で視差を検出する。
【０１３１】
以下に、視差検出の具体的な処理例について示す。
以下の処理は、システムコントローラ１６の画像信号処理部１６１とマイクロコンピュータ１６２により協働して行われる。
【０１３２】
＜視差検出の方法＞
［ラフ合成］
カメラ装置１０を左から右に向かって回転移動させ、１２０度程度の範囲を数１０枚撮影する。
隣接する画像には同一の被写体が写っている領域（重複領域）が十分に存在する。
撮影時のカメラ装置１０の動きが姿勢センサ１４によって検出され、細かい時間間隔で記録されている。
このデータは撮影された画像と同期を取りながら記録されているので、精度はさほど高くないが、各画像がどの方向を向いて撮影されたのかを知ることができる。
この情報に基づいて各画像を経度緯度平面上に配置する。
この状態では隣接画像の重複領域は、１００画素程度の画素はあるものの、ほぼ正しい位置に置かれている。
ここから精密自動合成のルーチンに入る。
【０１３３】
［精密自動合成］
重複領域内で複数の場所で動き検出（ＭＥ；動き探索）を行う。
ＭＥ、すなわち動き検出では、ＦＦＴによる位相限定相関法を用いている。これは、特徴点抽出法やその他の方法であっても適用可能である。
平行移動のみの場合は、ＭＥは一つで良い。
ＭＥが２個あれば互いの傾斜がわかる。
３個あれば、レンズ歪みの係数がわかる。
重複領域内に動くものがなく、遠景で手持ちでもその影響が生じない場合はＭＥの数は少なくても良い。
しかし、動くものがあったり、近距離で視差の影響があったりすると、ＭＥの数が少ないと何が起こっているかを把握することができない。
そこで、重複領域内で可能な限り、多くのＭＥを行う。
多くのＭＥの結果の移動ベクトルがほぼ同じ値の場合、一方の画像を平行移動によって合わせこむことができる。
ほぼ同じ値でない場合でも、上部から下部にかけて一様に変化する場合、一方の画像を傾斜させることで合わせこむことができる。
しかし、異なるＭＥ結果が重複領域内に存在する場合、合成ができない。
その理由は、動く被写体が存在するか、近距離と遠距離の被写体が混在するときに視点を移動させながら撮影したかである。
【０１３４】
［ＭＥの方法］
最初はＭＥを行う画像を縮小して大まかに行う。
だんだん縮小率を下げ、最後は等倍の画像で行う。
ＭＥのブロックサイズを変えたり、ブロックの中心間距離を狭くして、より詳細な移動ベクトルを取得できるようにする。
【０１３５】
［ＭＥ結果の評価］
多くのＭＥの結果から正しいスイッチングが可能か否かを判断し、不可能の場合、その旨を表示して撮影のやり直しを促す。
可能な場合はそのままスイッチング処理を行い、合成結果を表示すると共に、記録媒体(メモリ)に記録する。
【０１３６】
［移動被写体の振る舞い］
次に、移動被写体の振る舞いについて説明する。
時間的に隣接する２枚の画像の重複する領域内で複数のブロックマッチング（ＢＭ）を行い、その結果の移動ベクトルを求める。
移動の方向に応じたベクトルになり、静止部分との分離が可能である。
移動物体と静止被写体の境目では画像の変化が激しいため、ＢＭ結果は正しく得られない横にスイープしている場合、近距離の静止被写体による視差なのか、横に移動する被写体なのかを識別することができない。
そこで、視差と動被写体を区別しないで警告を発するようにする。
これを検出した場合、現在の技術ではこれを違和感なくステッチングすることができない。
そこで、本実施形態においては、「単に撮りなおし」、または「撮り方を変えて撮りなおし」を促すように警告を発する。
たとえば、「視差または移動体の影響が出ています。回転の半径を小さくして撮りなおしてください。」との警告を発する。
【０１３７】
このように、第４の構成では、動被写体の存在が撮影直後にわかるため、撮りなおしができるようになる。
その結果、視差の影響が撮影直後にわかるため、撮りなおしができるようになる利点がある。
【０１３８】
次に、第５の構成について説明する。
【０１３９】
［第５の構成］
第５の構成では、スイープ角速度（ユーザがカメラを振り回す速さ）の適正値を知らせ、速すぎる場合に警告を出して撮影のやり直しを促す。
前述したように、マイクロコンピュータ１６２は、表示装置１８、たとえばＬＣＤの画面に横軸に時間、縦軸に姿勢センサ（ジャイロセンサ）の出力（スイープ角速度）をグラフにして表示する。
水平画角、水平画素数、シャッタ速度が設定されると最大スイープ角速度が決まるので、その６０％〜８０％を適正範囲ＲＮＧとして、図４に示すようにグラフに表示する。
操作手順の概略は以下の通りである。
[1]操作部１９のスタートボタンを押してカメラを回し、その後スタートボタンを離す。
[2]スタートボタンが押されている間のスィープ角速度が、図４に示すように、表示装置１８の画面に表示される。
[3]適正範囲ＲＮＧより遅い場合には警告はないが、一瞬でも範囲を越えて速い場合には警告音が出る。
【０１４０】
このように、第５の構成では、適正な速さを教えてくれるので、速すぎて重なりがなくなったり、遅すぎて狭い範囲しか撮れなかったりという不都合がなくなった。
【０１４１】
ここで、スイープ速度の計算処理例について、図２２に関連付けて説明する。
【０１４２】
＜スイープ速度の計算＞
露光時間、画素数、１ライン読み出し時間、画角、重複率、フレームレート等が決まったとき、ぶれの角度、ぶれの画素数、その他の問題が生じないためのスイープ速度を計算で求める方法について説明する。
３つの式で得られるスイープ速度の最も遅い値がその条件における最高角速度である。
【０１４３】
図２２に示す表は、画角やスイープ速度など、各種パラメータを与えたとき、ぶれの画素数やフレームレートがどんな値になるかを計算したものである。
［１］〜［６］は条件を変えた場合である。
以下に、図２２の条件［１］を例にとって説明する。
【０１４４】
ぶれの角度ａｂ２とぶれの画素数ｎｂ２とフレームレートｆは、スイープ速度ｖｐ、画角ｔｈ、水平画素数Ｈ、重複率ｋを用いて、図２２の表の右端の計算式から次のようになる。
【０１４５】
ａｂ２＝ｖｐ・（ｔｓ＋ｎ・ｒｓ）１０００
ｎｂ２＝ｖｐ・（ｔｓ＋ｎ・ｒｓ）・Ｈ／ｔｈ
ｆ＝１００／（１００−ｋ）・Ｈ・ｖｐ／ｎ／ｔｈ
【０１４６】
これらより、スイープ速度ｖｐは次にようになる。
【０１４７】
ｖｐ＝１０００・ａｂ２／（ｔｓ＋ｎ・ｒｓ）［ｄｅｇ］        ・・・（１）
ｖｐ＝ｎｂ２・ｔｈ／Ｈ／（ｔｓ＋ｎ・ｒｓ）［ｄｅｇ／ｓｅｃ］・・・（２）
ｖｐ＝（１００−ｋ）／１００・ｎ・ｔｈ・ｆ／Ｈ              ・・・（３）
【０１４８】
ここで、ぶれの角度ａｂ２＝０，２８度、露光時間１［ｍｓｅｃ］、短辺の画素数ｎ＝４００画素、１ライン読み出し時間ｒｓ＝７．８［μｓｅｃ］とすれば、スイープ速度はｖｐ＝６８［ｄｅｇ／ｓｅｃ］となる。
また、ぶれの画素数ｎｂ２＝１９．９画素、長辺の画角ｔｈ＝５０度、水平画素数Ｈ＝３５６０画素とすれば、スイープ速度はｖｐ＝６８［ｄｅｇ／ｓｅｃ］となる。
また、重複率ｋ＝２０％、フレームレートｆ＝１５．１３のときスイープ速度はｖｐ＝６８［ｄｅｇ／ｓｅｃ］となる。
【０１４９】
したがって、上記（１）、（２）、（３）式の右辺のパラメータが変換したときスイープ速度はこの式によって制限を受ける。
式（１）で得られたｖｐの値より速くスイープすると光学手振れ補正素子の動作限界を超える。
式（２）で得られたｖｐの値より速くスイープするとぶれの量が許容値を超える。
式（３）で得られたｖｐの値より速くスイープすると重複量が減り、場合によっては重複しなくなる。
【０１５０】
以上詳細に説明した第１〜第５の構成は、それぞれ単独であるいは全てをカメラ装置１０に採用することも可能であり、また、これらを適宜組み合わせ採用することも可能である。
【０１５１】
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【０１５２】
【図１】本発明の実施形態に係る画像処理装置を採用したカメラ装置の構成例を示すブロック図である。
【図２】本実施形態に係るカメラ装置において広角撮影を行った場合を概念的に示す図である。
【図３】精密合成処理部のブロック図である。
【図４】姿勢センサの出力（スイープ角速度）をグラフにして表示する場合を示す図である。
【図５】本実施形態の第１の構成における撮影形態を説明するための図である。
【図６】ＣＭＯＳイメージセンサの露光時間と蓄積電荷の読み出し時間、そして光軸制御時間の関係を示す図である。
【図７】相互電力スペクトル(ＣＰＳ)を用いたトランスレーションにおけるステッチング画像を示す図である。
【図８】ブロックマッチング（ＢＭ）でパラメータを抽出する処理を説明するための図であって、条件の４枚の画像を選択する処理を示す図である。
【図９】ブロックマッチング（ＢＭ）でパラメータを抽出する処理を説明するための図であって、一つの境界で３箇所のＢＭを行う例を示す図である。
【図１０】ブロックマッチング（ＢＭ）でパラメータを抽出する処理を説明するための図であって、レンズ歪があるとＢＭの結果が弓なりになることを示す図である。
【図１１】ブロックマッチング（ＢＭ）でパラメータを抽出する処理を説明するための図であって、チルト角が正しくないと左右方向の誤差が生じる例を示す図である。
【図１２】ブロックマッチング（ＢＭ）でパラメータを抽出する処理を説明するための図であって、左右の境界で上下の伸縮が起きているときに横にずれができる例を示す図である。
【図１３】ブロックマッチング（ＢＭ）でパラメータを抽出する処理を説明するための図であって、画像が回転する場合に生じる誤差の例を示す図である。
【図１４】ブロックマッチング（ＢＭ）でパラメータを抽出する処理後に多くの枚数に拡張して平行移動を行って最も誤差が小さくなるようにする処理を説明するための図である。
【図１５】連続撮影した画像とセンサ情報を基に空間配置する方法を示す機能ブロック図である。
【図１６】連続撮影した画像とセンサ情報を対応させて高精度化する方法であって、静止時のセンサ値のゼロ補正を示す機能ブロック図である。
【図１７】連続撮影した画像とセンサ情報を対応させて高精度化する方法であって、移動情報の協調により高精度化を示す機能ブロック図である。
【図１８】角度センサの零点補正処理のフローチャートである。
【図１９】角速度センサの移動量補正のフローチャートである。
【図２０】移動量の取得方法のフローチャートである。
【図２１】撮影した写真から空間座標を割り当てる方法のフローチャートである。
【図２２】スイープ速度の計算処理例について説明するための図である。
【符号の説明】
【０１５３】
１０・・・カメラ装置、１１・・・光学系、１１２・・・シフトレンズ、１２・・・撮像素子、１３・・・アナログフロントエンド回路（ＡＦＥ）、１４・・・姿勢センサ、１４１・・・加速度センサ、１４２・・・角速度センサ、１６・・・システムコントローラ、１６１・・・画像信号処理部、１６２・・・マイクロコンピュータ、１７・・・メモリ、１８・・・表示装置、２０・・・発音部。
【図１】
2010147635.tif 000004
【図２】
2010147635.tif 000005
【図３】
2010147635.tif 000006
【図４】
2010147635.tif 000007
【図５】
2010147635.tif 000008
【図６】
2010147635.tif 000009
【図７】
2010147635.tif 000010
【図８】
2010147635.tif 000011
【図９】
2010147635.tif 000012
【図１０】
2010147635.tif 000013
【図１１】
2010147635.tif 000014
【図１２】
2010147635.tif 000015
【図１３】
2010147635.tif 000016
【図１４】
2010147635.tif 000017
【図１５】
2010147635.tif 000018
【図１６】
2010147635.tif 000019
【図１７】
2010147635.tif 000020
【図１８】
2010147635.tif 000021
【図１９】
2010147635.tif 000022
【図２０】
2010147635.tif 000023
【図２１】
2010147635.tif 000024
【図２２】
2010147635.tif 000025