(57)【要約】【課題】  校正用パターンを撮像するユーザへの負担を軽減させるための技術を提供すること。【解決手段】  列方向、及び行方向を特定すると共にそれぞれの方向の一端を特定する為の情報が記されたカメラパラメータ計算用の平面媒体が現実空間中に配されている場合に、平面媒体を含む現実空間の撮像画像を取得する（Ｓ１０１）。撮像画像からこの情報を検出して解析することで、撮像画像中における平面媒体の行方向、及び列方向を検出する（Ｓ１０２）。撮像画像を表示する表示画面の行方向に撮像画像から検出した平面媒体の行方向を一致させるべく撮像画像を回転させ（Ｓ１０４）、表示する（Ｓ１０５）。【選択図】  図５
2008135996.tif 000002
【特許請求の範囲】
【請求項１】
現実空間に配置された校正用パターンを、複数の異なる位置姿勢から撮像装置により撮像することにより得られた複数の撮影画像データから該撮像装置のカメラパラメータを算出する情報処理方法であって、
方向を特定するためのパターンを有する現実空間に配置された校正用パターンを、ユーザによって操作された撮像装置により撮像された撮影画像データを取得する取得工程と、
前記撮影画像データにおける前記校正用パターンの方向を検出する検出工程と、
前記検出された方向が予め定められた方向になるように、前記撮影画像データを回転する回転工程と、
前記回転された撮影画像データを表示する表示工程と、
ユーザ指示に応じて前記表示された撮影画像データを登録する登録工程と、
前記登録された撮影画像データを用いて前記撮像装置のカメラパラメータを算出する算出工程と
を有することを特徴とする情報処理方法。
【請求項２】
前記校正用パターンは方向を特定するためのパターンを有し、
前記検出工程では、前記撮影画像データから前記方向を特定するためのパターンを検出することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記撮像装置は、傾斜角センサもしくは姿勢センサを有し、
前記検出工程では、前記傾斜角センサもしくは前記姿勢センサの出力値から前記校正用パターンの方向を検出することを特徴とする請求項１に記載の情報処理方法。
【請求項４】
コンピュータに請求項１乃至３のいずれか１項に記載の画像処理方法を実現させるためのプログラム。
【請求項５】
現実空間に配置された校正用パターンを、複数の異なる位置姿勢から撮像装置により撮像することにより得られた複数の撮影画像データから該撮像装置のカメラパラメータを算出する情報処理装置であって、
方向を特定するためのパターンを有する現実空間に配置された校正用パターンを、ユーザによって操作された撮像装置により撮像された撮影画像データを取得する取得手段と、
前記撮影画像データにおける前記校正用パターンの方向を検出する検出手段と、
前記検出された方向が予め定められた方向になるように、前記撮影画像データを回転する回転手段と、
前記回転された撮影画像データを表示する表示手段と、
ユーザ指示に応じて前記表示された撮影画像データを登録する登録手段と、
前記登録された撮影画像データを用いて前記撮像装置のカメラパラメータを算出する算出手段と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラパラメータを求めるための技術に関するものである。
【背景技術】
【０００２】
カメラにより撮像された撮像画像の歪み量、被写体深度、画像中心等のカメラパラメータの測定は、あらかじめ決められたパターンを撮影することで行うことが一般的である。そのようなシステムの例としては非特許文献１に開示されているカメラキャリブレーションツールが挙げられる。
【０００３】
このツールでは、図１に示すような点列が並んだ校正用パターンを構図を変えて複数枚撮影し、対応する点がどのように見えるかに基づいてカメラパラメータを測定する。図１は、校正用パターンの一例を示す図である。
【０００４】
精度のよいカメラパラメータ測定を行うためには、異なった構図で、画面全体に校正用パターンが写った画像を撮影する必要がある。そのためには校正用パターンを様々な角度から撮影し、カメラを傾けたり上下逆さまにしたりする必要がある。
【０００５】
このツールを用いて画像を取得する場合について図２を用いて説明する。図２は、上記ツールを用いて校正用パターンの画像を取得する為の様子を示す模式図である。ユーザ２０１の手には、現実空間の動画像を撮像するカメラ２０２が保持されている。カメラ２０２により撮像された各フレームの画像はコンピュータのプレビュー画面２０４上に表示される。従ってユーザ２０１はプレビュー画面２０４いっぱいに校正用パターン２０３が写るように、同図矢印に示す如く、カメラ２０２を動かす。カメラ２０２を動かす際には、カメラ２０２を傾けたり、回転させたりする。
【０００６】
このようにプレビュー画面を見ながらカメラを様々な角度に傾けて撮像し、画像を取得することで、様々な構図から校正用パターンの画像を、プレビュー画面に対していっぱいの状態で取得することができる。
【０００７】
そしてこのような校正用パターンの画像を用いてカメラパラメータを求める処理を行うことで、精度の高いカメラパラメータ測定を行うことができる。
【非特許文献１】Ｓ．Ｕｃｈｉｙａｍａ，  Ｋ．Ｔａｋｅｍｏｔｏ，  Ｋ．Ｓａｔｏｈ，  Ｈ．Ｙａｍａｍｏｔｏ，  ａｎｄ  Ｈ．Ｔａｍｕｒａ：”ＭＲ  Ｐｌａｔｆｏｒｍ：  Ａ  ｂａｓｉｃ  ｂｏｄｙ  ｏｎ  ｗｈｉｃｈ  ｍｉｘｅｄ  ｒｅａｌｉｔｙ  ａｐｐｌｉｃａｔｉｏｎｓ  ａｒｅ  ｂｕｉｌｔ，”  Ｐｒｏｃ．  ＩＥＥＥ／ＡＣＭ  Ｉｎｔ’ｌ  Ｓｙｍｐ．  ｏｎ  Ｍｉｘｅｄ  ａｎｄ  Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ  （ＩＳＭＡＲ  ２００２），  ｐｐ．２４６−２５３，  ２００２．
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、カメラを傾けた状態でプレビュー画面を見ていると、手を動かした方向と画面内に写っている画像の動く方向とが一致しなくなる。極端な例としては、カメラを視軸周りに９０度回転させている場合、カメラを右に動かすとプレビュー画面に映った画像が下（もしくは上）に移動する。また、カメラを上に動かすとプレビュー画面に映った画像が右（もしくは左）に移動する。
【０００９】
このような状況で画面全体に校正用パターンが写るように手に持ったカメラを調整することは、手の動きと画面の動きが一致せず直感的な操作ということはできなかった。
【００１０】
本発明は以上の問題に鑑みてなされたものであり、校正用パターンを撮像するユーザへの負担を軽減させるための技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００１２】
即ち、現実空間に配置された校正用パターンを、複数の異なる位置姿勢から撮像装置により撮像することにより得られた複数の撮影画像データから該撮像装置のカメラパラメータを算出する情報処理方法であって、
方向を特定するためのパターンを有する現実空間に配置された校正用パターンを、ユーザによって操作された撮像装置により撮像された撮影画像データを取得する取得工程と、
前記撮影画像データにおける前記校正用パターンの方向を検出する検出工程と、
前記検出された方向が予め定められた方向になるように、前記撮影画像データを回転する回転工程と、
前記回転された撮影画像データを表示する表示工程と、
ユーザ指示に応じて前記表示された撮影画像データを登録する登録工程と、
前記登録された撮影画像データを用いて前記撮像装置のカメラパラメータを算出する算出工程と
を有することを特徴とする。
【００１３】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００１４】
即ち、現実空間に配置された校正用パターンを、複数の異なる位置姿勢から撮像装置により撮像することにより得られた複数の撮影画像データから該撮像装置のカメラパラメータを算出する情報処理装置であって、
方向を特定するためのパターンを有する現実空間に配置された校正用パターンを、ユーザによって操作された撮像装置により撮像された撮影画像データを取得する取得手段と、
前記撮影画像データにおける前記校正用パターンの方向を検出する検出手段と、
前記検出された方向が予め定められた方向になるように、前記撮影画像データを回転する回転手段と、
前記回転された撮影画像データを表示する表示手段と、
ユーザ指示に応じて前記表示された撮影画像データを登録する登録手段と、
前記登録された撮影画像データを用いて前記撮像装置のカメラパラメータを算出する算出手段と
を有することを特徴とする。
【発明の効果】
【００１５】
本発明の構成により、校正用パターンを撮像するユーザへの負担を軽減させることができる。
【発明を実施するための最良の形態】
【００１６】
以下添付図面を参照して、本発明をその好適な実施形態に従って詳細に説明する。
【００１７】
［第１の実施形態］
図３は、本実施形態に係るシステムの外観を示す概略図である。本実施形態に係るシステムは、コンピュータシステム３０３と、ビデオカメラ３０２とで構成されており、現実空間中には、校正用パターン３０１が配置されている。
【００１８】
校正用パターン３０１は、後述するマーカが記された紙やプラスティックボードなどの平面媒体であり、ビデオカメラ３０２のレンズ中心、焦点距離等のカメラパラメータを求めるために現実空間中に配されるものである。
【００１９】
本実施形態では校正用パターン３０１として図１に示したようなものを用いる。即ち、図１に示す如く、白地に黒のマーカが３センチ間隔で方形に並んでおり、幾つかのマーカはドーナツ型になっている。ドーナツ型のマーカは、枠部が黒で記されており、枠部で囲まれている内部は白で記されている。また、このドーナツ型のマーカは、Ｌ字型に並んでおり、Ｌ字を構成する長い腕（長軸）は校正用パターン３０１の列方向に平行であり、Ｌ字を構成する短い腕（短軸）は校正用パターン３０１の行方向に平行である。Ｌ字の短軸は長さ１、長軸は長さ２以上となっている。もちろん、Ｌ字のサイズ、Ｌ字を構成する各マーカの間隔などについては特に限定するものではない。このように、校正用パターンにおけるドーナツ型のマーカ群は、校正用パターンの方向を特定するためのマーカ群である。
【００２０】
ビデオカメラ３０２は、係る校正用パターン３０１が配置されている現実空間の動画像を撮像するものであり、撮像した各フレームの画像データ（現実空間画像）はコンピュータシステム３０３に入力される。
【００２１】
コンピュータシステム３０３は、ビデオカメラ３０２から受信した画像中の校正用パターンを用いて、ビデオカメラ３０２のカメラパラメータを求める処理（カメラキャリブレーション処理）を行う。カメラキャリブレーション処理は、非特許文献１に開示されているような周知技術であるので、係る処理についての説明は省略する。
【００２２】
図１４は、コンピュータシステム３０３のハードウェア構成を示すブロック図である。
【００２３】
ＣＰＵ１４０１は、ＲＡＭ１４０２やＲＯＭ１４０３に格納されているプログラムやデータを用いてコンピュータシステム３０３全体の制御を行うと共に、コンピュータシステム３０３が行う後述の各処理を実行する。
【００２４】
ＲＡＭ１４０２は、外部記憶装置１４０６やＲＯＭ１４０３からロードされたプログラムやデータ、Ｉ／Ｆ（インターフェース）１４０７を介してビデオカメラ３０２から受信した現実空間画像のデータ等を一時的に記憶する為のエリアを有する。更に、ＲＡＭ１４０２は、ＣＰＵ１４０１が各種の処理を実行する際に用いるワークエリアも有する。即ち、ＲＡＭ１４０２は、各種のエリアを適宜提供することができる。
【００２５】
ＲＯＭ１４０３は、コンピュータシステム３０３の設定データや、ブートプログラムなどを格納する。
【００２６】
操作部１４０４は、キーボードやマウス等により構成されており、コンピュータシステム３０３のユーザが操作することで、各種の指示をＣＰＵ１４０１に対して入力することができる。
【００２７】
表示部１４０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１４０１による処理結果（例えば、後述するＧＵＩ（グラフィカルユーザインターフェース））を画像や文字などでもって表示することができる。
【００２８】
外部記憶装置１４０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１４０６には、ＯＳ（オペレーティングシステム）や、コンピュータシステム３０３が行う後述の各処理をＣＰＵ１４０１に実行させるためのプログラムやデータ（例えば、後述のＧＵＩに係るプログラムやデータ）等が保存されている。更に、外部記憶装置１４０６には、後述の説明で既知のものとして説明する情報も保存されている。外部記憶装置１４０６に保存されているプログラムやデータは、ＣＰＵ１４０１による制御に従って適宜ＲＡＭ１４０２にロードされ、ＣＰＵ１４０１による処理対象となる。
【００２９】
Ｉ／Ｆ１４０７は、ビデオカメラ３０２をコンピュータシステム３０３に接続するためのインターフェースとして機能するものである。ビデオカメラ３０２から送出される各フレームの画像のデータは、このＩ／Ｆ１４０７を介してＲＡＭ１４０２や外部記憶装置１４０６に送出される。
【００３０】
１４０８は上述の各部を繋ぐバスである。
【００３１】
次に、上記校正用パターン３０１を含む現実空間をビデオカメラ３０２により撮像することで得られる撮像画像に基づいてビデオカメラ３０２に対するカメラキャリブレーション処理を行う為のソフトウェアについて説明する。係るソフトウェアに係るプログラムやデータは外部記憶装置１４０６に保存されており、このソフトウェアを実行する場合には事前にＲＡＭ１４０２にロードしておく。
【００３２】
図４は、このソフトウェアをＣＰＵ１４０１が実行することで表示部１４０５の表示画面上に表示されるＧＵＩの表示例を示す図である。なお、以下の説明において特に断らない限り、ＧＵＩに対する操作はユーザが操作部１４０４を用いて行う。また、係る操作を行うことで行われるものとして説明する処理は、ＣＰＵ１４０１によって実行される。
【００３３】
４０００はＧＵＩのウィンドウである。
【００３４】
４１００はプレビュー画像表示領域である。プレビュー画像表示領域４１００には、ビデオカメラ３０２からコンピュータシステム３０３に入力された撮像画像中の校正用パターン３０１中のＬ字の長軸が、プレビュー画像表示領域４１００の縦軸（ｙ軸）に一致するように撮像画像を回転させて表示する。ここで、ｙ軸とは、同じｘ座標値で構成されている軸であり、列方向とも呼称する。
【００３５】
４３０１はキャプチャボタンである。ユーザが操作部１４０４を用いてキャプチャボタン４３０１を指示すると、ＣＰＵ１４０１はこの指示時にプレビュー画像表示領域４１００に表示されている画像の生成元である撮像画像を外部記憶装置１４０６に登録する。更にＣＰＵ１４０１は、この登録した撮像画像のサムネイルを作成し、領域４２００に追加表示する。図４では４つのサムネイルが追加表示されている。
【００３６】
ユーザはプレビュー画像表示領域４１００を観察し、校正用パターン３０１全体が大きく表示されるようにビデオカメラ３０２の位置姿勢を修正する。そして、ユーザは、校正用パターン３０１全体が大きく表示されたことを確認すると、操作部１４０４を操作してキャプチャボタン４３０１を指示する。これにより、カメラキャリブレーション処理に用いる為に好適な撮像画像を外部記憶装置１４０６に登録することができる。また、領域４２００内に表示されたサムネイルを確認することにより、ユーザはカメラキャリブレーション処理に用いる撮像画像を確認することができる。
【００３７】
４３０２はキャリブレーションボタンである。キャリブレーションボタン４３０２は、領域４２００内に４枚以上のサムネイルが表示されている場合に限り、指示可能に表示される。キャリブレーションボタン４３０２が指示可能に表示されている場合にユーザが操作部１４０４を用いてキャリブレーションボタン４３０２を指示したとする。すると、ＣＰＵ１４０１は、この４枚のサムネイルに対応する４枚の撮像画像を用いてカメラキャリブレーション処理を行う。
【００３８】
カメラキャリブレーション処理による結果は領域４３０３内に表示される。図４の例では、領域４３０３内に、カメラキャリブレーション処理結果として、ビデオカメラ３０２のレンズ中心（３２０，２４０）、焦点距離（４２，５４）が表示されている。もちろん、カメラキャリブレーション処理結果としてこれ以外のものを求め、領域４３０３内に表示しても良い。
【００３９】
図５は、上記ＧＵＩのプログラムをＣＰＵ１４０１が実行することで行われる処理のフローチャートである。係るプログラムはイベント駆動型のプログラムとなっており、通常はステップＳ１００で待機状態となっている。
【００４０】
そして、毎秒３０回発生するビデオキャプチャデバイスドライバ（外部記憶装置１４０６にインストール済み）からのキャプチャイベントを検知すると、処理をステップＳ１０１に移行する。また、キャプチャボタン４３０１の指示検知により発生するキャプチャボタンダウンイベントを検知すると、処理をステップＳ１０６に移行する。また、キャリブレーションボタン４３０２の指示検知により発生するキャリブレーションボタンダウンイベントを検知すると、処理をステップＳ１０８に移行する。
【００４１】
ステップＳ１００においてイベントを待機している状態で、キャプチャイベントの発生を検知すると、上述の通り処理をステップＳ１０１に進める。そしてステップＳ１０１において、ビデオカメラ３０２から送出された撮像画像のデータをＩ／Ｆ１４０７を介してＲＡＭ１４０２に格納する。格納した撮像画像のデータは、ビデオカメラ３０２が校正用パターン３０１を含む現実空間を撮像することで得られた画像データである。
【００４２】
なお上述の通り、ビデオカメラ３０２からは各フレームの撮像画像データが順次Ｉ／Ｆ１４０７を介してＲＡＭ１４０２に送出されるので、以下説明するステップＳ１０２〜Ｓ１０５の処理は、この各フレームに対して順次行われることになる。
【００４３】
次にステップＳ１０２では、ステップＳ１０１で取得した撮像画像のデータを参照し、撮像画像から校正用パターン３０１の像を認識する処理を行う。つまり、校正用パターンの方向を認識する処理を行う。本ステップにおける処理の詳細については後述する。そして係る認識処理が成功した場合（撮影画像から校正用パターンが認識された場合）には処理をステップＳ１０３を介してステップＳ１０４に進める。
【００４４】
ステップＳ１０４では、撮像画像中で認識した校正用パターン３０１中のドーナツ型のマーカが構成しているＬ字の長軸が、プレビュー画像表示領域４１００のｙ軸に一致するように撮影画像を回転させる。つまり、校正用パターンの方向が所定の方向になるように撮影画像データを回転する。
【００４５】
そしてステップＳ１０５では、この回転された撮像画像を、プレビュー画像表示領域４１００に表示する。図６は、撮像画像を回転させ、回転された撮影画像をプレビュー画像表示領域４１００に表示する様子を示す図である。６０１は校正用パターン３０１を含む撮像画像である。６９９は、撮像画像中で認識した校正用パターン３０１中のドーナツ型のマーカによって構されたＬ字の長軸を示す。６０４は、ステップＳ１０４において撮像画像６０１を回転した画像である。画像６０４中における長軸６９９は、プレビュー画像表示領域４１００のｙ軸と方向が一致している。即ち、表示部１４０５の表示画面におけるｙ軸と方向が一致している。
【００４６】
、一方、ステップＳ１０２における認識処理が失敗した場合（撮影画像から校正用パターンが認識されなかった場合）には処理をステップＳ１０３を介してステップＳ１０５に進める。そして、ステップＳ１０５においてステップ１０１で取得した撮像画像をそのままプレビュー画像表示領域４１００内に表示する。
【００４７】
一方、ステップＳ１００においてイベントを待機している状態で、キャプチャボタンダウンイベントの発生を検知すると、処理をステップＳ１０６に進める。そしてステップＳ１０６では、ステップＳ１０１で最後に取得した（換言すれば最新の）撮像画像データを登録撮像画像データとして外部記憶装置１４０６内に登録する。そしてステップＳ１０７ではこの登録した撮像画像データを用いてサムネイル画像を作成し、領域４２００に追加表示する。
【００４８】
一方、ステップＳ１００においてイベントを待機している状態で、キャリブレーションボタンダウンイベントの発生を検知すると、ステップＳ１０８に進める。ステップＳ１０８では、領域４２００内に表示されている４枚のサムネイルに対応する４枚の撮像画像を用いてカメラキャリブレーション処理を行う。そしてステップＳ１０９では、このカメラキャリブレーション処理の結果を領域４３０３内に表示する。
【００４９】
次に、上記ステップＳ１０２における、校正用パターン３０１の認識処理について説明する。図７，８は、ステップＳ１０２における処理の詳細を示すフローチャートである。
【００５０】
図７においてステップＳ２００では、ステップＳ１０１で取得した撮像画像の二値画像（白黒画像）を作成する。ここで、撮像画像中に校正用パターン３０１が含まれている場合、校正用パターン３０１を構成するドーナツ型のマーカの枠部は黒で記されているので、二値画像上におけるドーナツ型のマーカの枠部は黒領域として存在することになる。
【００５１】
そしてステップＳ２０１ではこの二値画像に対してラベリング処理を行い、白領域と黒領域とを区別する。ステップＳ２０１の処理により、ドーナツ型のマーカの枠部の領域には、その他の領域とは別のラベルが付けられる。
【００５２】
次にステップＳ２０２では、この二値画像を構成する各画素値を反転させた反転二値画像を作成する。即ち、元の二値画像において白領域が黒領域となり、元の二値画像において黒領域が白領域となる。ここで、撮像画像中に校正用パターン３０１が含まれている場合、校正用パターン３０１を構成するドーナツ型のマーカの枠部で囲まれている内部は白で記されている。従って、反転二値画像上におけるドーナツ型のマーカの枠部で囲まれている内部の領域は黒領域として存在することになる。
【００５３】
そしてステップＳ２０３ではこの反転二値画像に対してラベリング処理を行い、白領域と黒領域とを区別する。ステップＳ２０３の処理により、ドーナツ型のマーカの枠部で囲まれている内部の領域には、その他の領域とは別のラベルが付けられることになる。
【００５４】
次にステップＳ２０４では先ず、二値画像において黒領域としてラベリングされた領域の重心位置を求める。そして更に、反転二値画像において黒領域としてラベリングされた領域の重心位置を求める。そして、二値画像において黒領域としてラベリングされた領域の重心位置に最も近い、反転二値画像において黒領域としてラベリングされた領域を探す。そして、それぞれの重心位置の差が十分に小さい閾値以下であれば、例えばそれぞれの重心位置の平均を「ドーナツ型のマーカの位置」として、ＲＡＭ１４０２内で管理しているリストに登録する。
【００５５】
即ち、ステップＳ２０４では、撮像画像上における「ドーナツ型のマーカの位置」とおぼしき位置を求め、求めたそれぞれの位置のデータをリストに登録する処理を行う。なお、「ドーナツ型のマーカの位置」とおぼしき位置として求めたものをどのようにして管理するのかについては特に限定するものではない。
【００５６】
次に図８においてステップＳ２０５では、上記リストから、未だ選択していない「ドーナツ型のマーカの位置」のデータを「選択位置データ」として選択し、読み出す。係る処理は、例えば、リストの先頭から順次選択すれば良い。更にステップＳ２０５では、選択位置データが示す位置から最も遠い位置を示すデータを上記リストを検索することで取得し、読み出す。尚、以下の説明では、選択位置データが示す位置から最も遠い位置にあるドーナツ型のマーカを「マーカＡ」と呼称する。
【００５７】
次にステップＳ２０６では、マーカＡの位置から最も遠い位置を示すデータを上記リストを検索することで取得し、読み出す。なお、以下の説明では、マーカＡの位置から最も遠い位置にあるドーナツ型のマーカを「マーカＢ」と呼称する。
【００５８】
以上のステップＳ２０５，Ｓ２０６による処理により、図９に示す如く、ドーナツ型のマーカが構成するＬ字の長軸の一端（長軸と短軸との交点ではない方の一端）としてのマーカＡと、短軸の一端としてのマーカＢとを見つけることができる。なお、場合によっては、ドーナツ型のマーカが構成するＬ字の長軸の一端がマーカＢとなり、短軸の一端がマーカＡとなる場合もある。
【００５９】
次にステップＳ２０７では、マーカＡの位置に最も近い位置を示すデータを上記リストから検索し取得する。また、マーカＡに最も近い位置にあるドーナツ型のマーカを「マーカＣ（延長点）」と呼称する（図１０）。そしてマーカＡの位置からマーカＣの位置に向かうベクトルＤを求める。
【００６０】
次にステップＳ２０８では、マーカＣの位置にベクトルＤを加算した結果としての位置を求める。そして上記リストを検索し、この求めた位置との差が、十分に小さい閾値以下であるような位置を示すデータが上記リストに登録されているかをチェックする。
【００６１】
リスト内に条件を満たすデータが登録されている場合には処理をステップＳ２０９に進める。ステップＳ２０９では、マーカＣの位置にベクトルＤを加算した結果としての位置との差が、十分に小さい閾値以下であるような位置にあるマーカを新たに「マーカＣ」とし、この新たなマーカＣの位置データを上記リストから読み出す。そして処理をステップＳ２０８に戻し、以降の処理を繰り返す。
【００６２】
ステップＳ２０８，Ｓ２０９の処理を繰り返すことにより、例えばマーカＡがＬ字の長軸の端点である場合、この長軸を構成する各マーカを検索することができる。
【００６３】
一方、ステップＳ２０８におけるチェック処理の結果、リストに条件を満たすデータが登録されていないと判断した場合は処理をステップＳ２１０に進める。そしてステップＳ２１０では、マーカＢについてもステップＳ２０７〜ステップＳ２０９と同様の処理を行う。即ち、マーカＢがＬ字の短軸の端点である場合、この短軸を構成する各マーカを検索することになる。
【００６４】
図１０は、ステップＳ２０７〜ステップＳ２１０における処理を説明する図である。同図に示すように、マーカＡの位置にベクトルＤを加算してマーカＣを決定し、その後はマーカＣにベクトルＤを加算した位置に最も近い位置にあるマーカを再度マーカＣとして決定する処理を繰り返すことで、Ｌ字の長軸の他端を決定することができる。同様に、マーカＢの位置にベクトルＤを加算してマーカＣを決定し、その後はマーカＣにベクトルＤを加算した位置に最も近い位置にあるマーカを再度マーカＣとして決定する処理を繰り返すことで、Ｌ字の短軸の他端を決定することができる。
【００６５】
次にステップＳ２１１では、ステップＳ２０７〜ステップＳ２０９の処理で最後にマーカＣとして特定したマーカの位置と、ステップＳ２１０の処理で最後にマーカＣとして特定したマーカの位置とが同じであるのかのチェックを行う。
【００６６】
係る処理は、例えばマーカＡがＬ字の長軸の一端、マーカＢが短軸の一端である場合、長軸の他端と短軸の他端とが同じであるかのチェック処理である。したがって、Ｌ字を構成する全てのマーカの抽出ができたのかをチェックするこおｔができる。
【００６７】
次に、係るチェック処理の結果、同じではないと判断した場合には処理をステップＳ２１３に進めて認識失敗と判断し、処理をステップＳ１０３にリターンさせる。一方、係るチェック処理の結果、同じであると判断した場合には処理をステップＳ２１４に進めて認識成功と判断し、処理をステップＳ１０３にすすめる。
【００６８】
図１１は、ステップＳ２０７〜ステップＳ２０９の処理で最後にマーカＣとして特定したマーカの位置と、ステップＳ２１０の処理で最後にマーカＣとして特定したマーカの位置とが、Ｅで示すマーカの位置である場合について示した図である。図１１では、マーカＡがＬ字の長軸の一端、マーカＢが短軸の一端である。そして、長軸の他端と短軸の他端とがＥで示すマーカで一致している。従って、図１１の場合は、Ｌ字を構成する全てのマーカの抽出ができたと判断され、認識成功となる。
【００６９】
次に、上記ステップＳ１０４における撮像画像の回転処理について説明する。係る説明では例として、画像から検出したドーナツ型のマーカ群が図１１に示したような配置構成となっているとする。
【００７０】
この場合、ステップＳ１０４では、撮像画像中のＬ字の長軸が、プレビュー画像表示領域４１００のｙ軸に一致するように回転させる。先ず、マーカＡのｘ座標値とマーカＢのｘ座標値との大小比較を行う。同図の場合はマーカＡのｘ座標値＞マーカＢのｘ座標値である。この場合、ｄｘ＝｜マーカＡのｘ座標値−マーカＥのｘ座標値｜、ｄｙ＝｜マーカＡのｙ座標値−マーカＥのｙ座標値｜を計算した後、θ＝９０°−ａｒｃｔａｎ（ｄｙ／ｄｘ）を求める。そしてマーカＥの位置を中心としてθだけ反時計回りに撮像画像を回転させる。図１２は、画像から検出したドーナツ型のマーカ群が図１１に示したような配置構成となっている場合における画像の回転角を求める処理を説明する図である。
【００７１】
なお、マーカＡのｘ座標値≦マーカＢのｘ座標値の場合、θ＝２７０°−ａｒｃｔａｎ（ｄｙ／ｄｘ）を求める。そしてマーカＥの位置を中心としてθだけ反時計回りに撮像画像を回転させる。
【００７２】
なお本実施形態では、校正用パターン３０１として、ドーナツ型のマーカ群がＬ字を構成して配されているものを用いた。これは、校正用パターン３０１の列方向、及び行方向を特定すると共にそれぞれの方向の一端を特定する為の情報として、Ｌ字を構成する複数のドーナツ型のマーカが１つの好適な例であるからである。しかし、係る情報と同等の目的を達成できるのであれば、どのような情報を校正用パターン３０１に記しても良い。もちろん、校正用パターン３０１に記す情報は、この校正用パターン３０１を撮像した画像からその画像上の位置が検出可能なものに限る。
【００７３】
また、本実施形態では、撮像画像中のＬ字の長軸が、プレビュー画像表示領域４１００のｙ軸に一致するように回転させているが、逆に、撮像画像中のＬ字の短軸が、プレビュー画像表示領域４１００のｘ軸に一致するように回転させても良い。ここで、ｘ軸とは、同じｙ座標値で構成されている軸であり、行方向とも呼称する。
【００７４】
即ち、プレビュー画像表示領域４１００の行方向に、撮像画像から検出した校正用パターン３０１の行方向（図１の場合、Ｌ字の短軸）を一致させるべく撮像画像を回転させても良い。若しくは、プレビュー画像表示領域４１００の列方向に、撮像画像から検出した校正用パターン３０１の列方向（図１の場合、Ｌ字の長軸）を一致させるべく撮像画像を回転させても良い。
【００７５】
以上の説明により、本実施形態によれば、撮像画像中の校正用パターンを常に一定の姿勢でプレビュー画像表示することができる。これにより、ビデオカメラを動かす手の動きとプレビュー画像表示による校正用パターンとの動きが一致し、カメラキャリブレーション作業を容易に行うことができる。
【００７６】
［第２の実施形態］
本実施形態では、ビデオカメラ３０２に傾斜角センサを設ける。そして、コンピュータシステム３０３にはこの傾斜角センサからの出力を入力するための新たなＩ／Ｆを設け、このＩ／Ｆに傾斜角センサを接続する。
【００７７】
そして、コンピュータシステム３０３は、ビデオカメラ３０２により撮像した画像の向きを、この傾斜角センサによる計測値に基づいて求め、撮像した画像を、この求めた計測値に応じて回転させる。即ち、本実施形態は、画像の回転に係る構成が異なるのみで、その他の構成については第１の実施形態と同じである。
【００７８】
図１３は、傾斜角センサ１３０１が取り付けられたビデオカメラ３０２の外観図である。傾斜角センサ１３０１は、直交する２つの加速度センサにより重力加速度を捕らえると共に、地磁気センサにより方位を取得することでビデオカメラ３０２の姿勢を測定する。
【００７９】
従って本実施形態において、上記ＧＵＩのプログラムをＣＰＵ１４０１が実行することで行われる処理のフローチャートは、図５のステップＳ１０２〜Ｓ１０４における処理を以下の処理に置き換えたものとなる。即ち、傾斜角センサ１３０１による計測値に基づいてビデオカメラ３０２の姿勢を求め、求めた姿勢に基づいて撮像画像を回転させたものを、プレビュー画像表示領域４１００に表示する。
【００８０】
傾斜角センサ１３０１からの出力は、オイラー角(yaw, pitch, roll)を示すデータである。このときのオイラー角は、ビデオカメラ３０２が視軸ベクトル（０，０，−１）の方向に向いた姿勢からの回転角を示すものとする。
【００８１】
ビデオカメラ３０２が鉛直方向に対して傾いている角度はrollとなるので、本実施形態では撮像画像を回転させる際、−rollだけ、撮像画像を回転させればよい。
【００８２】
なお、本実施形態では、ビデオカメラ３０２による撮像画像の向きを得るために、傾斜角センサ１３０１をビデオカメラ３０２に取り付けたが、ビデオカメラ３０２の姿勢を得るためのものであれば、如何なる装置を用いても良い。
【００８３】
例えば、親機から発した磁場を子機で検知し、子機の位置姿勢を測定するような位置姿勢センサを用いても良い。即ち、子機をビデオカメラ３０２に取り付け、子機の位置姿勢情報を元にビデオカメラ３０２の鉛直方向との角度を求めても良い。
【００８４】
［第３の実施形態］
「プレビュー画像表示領域４１００に表示した撮像画像は元の撮像画像をどれだけ回転させたのか」を示す表示を更に行うようにしても良い。ここでは、回転方向は反時計回りとして固定した場合について説明するが、逆回りを可としても良い、
図１５は、プレビュー画像表示領域４１００に表示した撮像画像が、元の撮像画像をどれだけ回転させたのかを示す為のアイコンの幾つかの表示例を示す図である。図１５（ａ）は、撮像画像を反時計回りに９０°回転させた場合に表示するアイコンで、６字方向から回転角度だけのびた矢印を示すアイコンである。図１５（ｂ）は、撮像画像を反時計回りに１８０°回転させた場合に表示するアイコンで、６字方向から回転角度だけのびた矢印を示すアイコンである。図１５（ｃ）は、撮像画像を反時計回りに２７０°回転させた場合に表示するアイコンで、６字方向から回転角度だけのびた矢印を示すアイコンである。このように、回転角度に応じたアイコンを表示することで、ユーザは、現在プレビュー画像表示領域４１００内に表示されている撮像画像がどれだけ回転しているのかが容易に確認することができる。更に、係るアイコンを用いることには、現在ビデオカメラ３０２がどのような角度で撮像を行っているのかについてもユーザに知らしめる効果がある。
【００８５】
なお、このようなアイコンの表示位置は特に限定するものではない。なお、元の撮像画像をどれだけ回転させたものをプレビュー画像表示領域４１００に表示しているのかを示す表示については様々なものが考えられる。
【００８６】
また、上記各実施形態は適宜組み合わせても良い。
【００８７】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００８８】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８９】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９０】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００９１】
【図１】校正用パターンの一例を示す図である。
【図２】ツールを用いて校正用パターンの画像を取得する為の様子を示す模式図である。
【図３】本発明の第１の実施形態に係るシステムの外観を示す概略図である。
【図４】ソフトウェアをＣＰＵ１４０１が実行することで表示部１４０５の表示画面上に表示されるＧＵＩの表示例を示す図である。
【図５】ＧＵＩのプログラムをＣＰＵ１４０１が実行することで行われる処理のフローチャートである。
【図６】撮像画像を回転させてからプレビュー画像表示領域４１００に表示する様子を示す図である。
【図７】ステップＳ１０２における処理の詳細を示すフローチャートである。
【図８】ステップＳ１０２における処理の詳細を示すフローチャートである。
【図９】マーカＡ、Ｂの検索を説明する図である。
【図１０】ステップＳ２０７〜ステップＳ２１０における処理を説明する図である。
【図１１】ステップＳ２０７〜ステップＳ２０９の処理で最後にマーカＣとして特定したマーカの位置と、ステップＳ２１０の処理で最後にマーカＣとして特定したマーカの位置とが、Ｅで示すマーカの位置である場合について示した図である。
【図１２】画像から検出したドーナツ型のマーカ群が図１１に示したような配置構成となっている場合における画像の回転角を求める処理を説明する図である。
【図１３】傾斜角センサ１３０１が取り付けられたビデオカメラ３０２の外観図である。
【図１４】コンピュータシステム３０３のハードウェア構成を示すブロック図である。
【図１５】プレビュー画像表示領域４１００に表示した撮像画像が、元の撮像画像をどれだけ回転させたのかを示す為のアイコンの幾つかの表示例を示す図である。
【図１】
2008135996.tif 000003
【図２】
2008135996.tif 000004
【図３】
2008135996.tif 000005
【図４】
2008135996.tif 000006
【図５】
2008135996.tif 000007
【図６】
2008135996.tif 000008
【図７】
2008135996.tif 000009
【図８】
2008135996.tif 000010
【図９】
2008135996.tif 000011
【図１０】
2008135996.tif 000012
【図１１】
2008135996.tif 000013
【図１２】
2008135996.tif 000014
【図１３】
2008135996.tif 000015
【図１４】
2008135996.tif 000016
【図１５】
2008135996.tif 000017