(57)【特許請求の範囲】
【請求項１】
識別可能なパターンを有する複数のマーカが配された現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像中のマーカのパターンから、当該マーカのＩＤを識別し、当該識別されたＩＤを所定のファイルに登録する識別工程と、
前記識別工程で識別され前記所定のファイルに登録されたＩＤ同士を比較して、識別されたＩＤが同一である複数のマーカを重複して配置されたマーカとして検知する検知工程と、
前記識別工程で識別されたマーカのうち、前記検知工程で検知された重複して配置されたマーカ以外のマーカの現実空間中の位置及び／若しくは姿勢を計算する計算工程と
を有することを特徴とする画像処理方法。
【請求項２】
更に、
前記識別工程で識別されたマーカのうち、前記計算工程による計算対象とするマーカを選択する選択工程を有し、
前記計算工程では、前記選択工程で選択されたマーカの現実空間中の位置及び／若しくは姿勢を計算することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
更に、
前記識別工程では、識別したマーカについて、識別した旨を示す第１の情報、及び前記計算工程による計算対象とするか計算対象外とするかを示す第２の情報を記録し、
前記選択工程では、記録された前記第２の情報を変更することで、前記識別工程で識別したマーカを前記計算工程による計算対象とするか計算対象外とするかを選択することを特徴とする請求項２に記載の画像処理方法。
【請求項４】
更に、
前記識別工程で識別したマーカを前記計算工程による計算対象とする第１のモード、計算対象外とする第２のモードの何れかを設定する設定工程を有し、
前記計算工程では、前記計算工程による計算対象に設定されたマーカについて、その現実空間中の位置及び／若しくは姿勢を計算することを特徴とする請求項１に記載の画像処理方法。
【請求項５】
更に、
マーカの印刷データを作成し、印刷装置に送出する作成工程を有し、
前記計算工程では、前記識別工程で識別したマーカのうち、前記作成工程で印刷データを作成していないマーカを除く、前記作成工程で印刷データを作成したマーカの現実空間中の位置及び／若しくは姿勢を計算することを特徴とする請求項１又は２に記載の画像処理方法。
【請求項６】
更に、
前記識別工程で識別したマーカに対する信頼度を評価する評価工程を有し、
前記計算工程では、前記評価工程で低い信頼度として評価されたマーカを除く、前記評価工程で高い信頼度として評価されたマーカの現実空間中の位置及び／若しくは姿勢を計算することを特徴とする請求項１に記載の画像処理方法。
【請求項７】
前記評価工程では、前記取得工程で取得した画像におけるマーカの出現頻度、マーカと当該画像とのなす角度、マーカの当該画像における面積、マーカの当該画像における位置、当該画像におけるマーカとそれ以外の部分とのコントラスト、の何れかを用いて、マーカの信頼度を評価することを特徴とする請求項６に記載の画像処理方法。
【請求項８】
前記マーカには、自身が識別可能なようにパターンが記録されており、当該パターンは、前記マーカを基準とする座標系が定義可能なように構成されていることを特徴とする請求項１乃至７の何れか１項に記載の画像処理方法。
【請求項９】
前記識別工程では、検出されたマーカの位置に伴って、前記識別されたＩＤを登録することを特徴とする請求項１に記載の画像処理方法。
【請求項１０】
前記計算工程において計算されたマーカの現実空間中の位置及び／若しくは姿勢を用いて、前記現実空間の画像と仮想空間の画像とを位置合わせする工程をさらに有することを特徴とする、請求項１乃至９の何れか１項に記載の画像処理方法。
【請求項１１】
識別可能なパターンを有する複数のマーカが配された現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像中のマーカのパターンから、当該マーカのＩＤを識別し、当該識別されたＩＤを所定のファイルに登録する識別手段と、
前記識別手段が識別し前記所定のファイルに登録したＩＤ同士を比較して、識別されたＩＤが同一である複数のマーカを重複して配置されたマーカとして検知する検知手段と、
前記識別手段によって識別されたマーカのうち、前記検知手段によって検知された重複して配置されたマーカ以外のマーカの現実空間中の位置及び／若しくは姿勢を計算する計算手段と
を備えることを特徴とする画像処理装置。
【請求項１２】
コンピュータを、請求項１１に記載の画像処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項１３】
請求項１２に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間に存在する指標の位置姿勢を求める技術に関するものである。
【背景技術】
【０００２】
高品質な複合現実感を提供するための重要な技術の一つとして、現実空間と仮想空間との位置合わせ技術がある。位置合わせ技術としては従来から様々な手法が提案されているが、それらの中でも指標を撮影した画像（指標画像）からカメラの位置姿勢を計算（キャリブレーション）する方法がコストや使い勝手の点から広く利用されている。
【０００３】
これらの手法の多くは、空間におけるすべての指標の位置や姿勢が既知であることを前提としており、指標の位置や姿勢を予め測定し、入力する作業が必要となる。指標には、人為的マーカ（以後、マーカ）や自然特徴が一般的に用いられている。マーカを用いた場合には、配置するマーカの数が多くなればなるほど、人が手作業で測定を行うことは非現実的な作業となる。
【０００４】
位置合わせ処理を可能とする空間の範囲を広げるためには、多数のマーカを広範囲に設置することが必要となる。従ってこれら多数の広範囲に設置されたマーカの位置姿勢を効率よくかつ高精度に測定する手段が求められている。
【０００５】
近年、マーカを撮影した画像から、マーカ同士の相対位置姿勢をキャリブレーションする方法が提案されている（非特許文献１参照）。
【０００６】
この方法によって全てのマーカ同士の相対位置姿勢を求めた後、任意のマーカの世界座標系における位置姿勢を決定すれば、世界座標系におけるすべてのマーカの位置姿勢を求めることが可能となった。
【０００７】
この方法における位置合わせ処理に必要な作業およびキャリブレーション処理の概要は以下のとおりである。
【０００８】
（１．１）  マーカを作成し、位置合わせ処理を行う空間内に設置する。
【０００９】
（１．２）  世界座標系における位置姿勢が決定されているマーカ（基準マーカ）の位置姿勢を入力する。
【００１０】
（１．３）  マーカを撮影する。
【００１１】
（１．４）  キャリブレーションを行う。
【００１２】
（ア）  複数のマーカが含まれる画像から、ある１つのマーカとカメラとの相対位置姿勢を計算する。
【００１３】
（イ）  別のマーカとカメラとの相対位置姿勢を計算する。
【００１４】
（ウ）  ２つのマーカ間の相対位置姿勢を計算する。
【００１５】
（エ）  これをすべての複数のマーカが含まれる画像について行い、すべてのマーカ間の相対位置姿勢を計算する。
【００１６】
（オ）  基準マーカから、基準マーカ以外のすべてのマーカ（相対マーカ）の絶対位置姿勢を計算する。
【００１７】
（１．５）  キャリブレーションにより位置姿勢が求められたマーカを使用して位置合わせ処理を行う。
【００１８】
一般的な自然特徴を用いた位置合わせは、自然特徴データベースの作成、及び自然特徴データベースを用いたカメラの位置姿勢の推定、といった２つの工程から構成される（非特許文献２）。自然特徴データベースの作成は、マーカのキャリブレーションと同様に、現実空間を撮影することで得られる多数の画像を用いて行われる。自然特徴を用いた位置合わせ処理に必要な作業の概要は以下のとおりである。
【００１９】
（２．１）  現実空間の画像を複数撮影する。
【００２０】
（２．２）  画像から特徴を抽出する。
【００２１】
（２．３）  ある特徴の位置を、複数の画像から求める。
【００２２】
（ア）  複数の画像間で、特徴の対応を行う。
【００２３】
（イ）  複数の画像間の相対位置姿勢を、上記対応に基づいて求める。
【００２４】
（ウ）  上記相対位置姿勢に基づいて、特徴の三次元位置を求める。
【００２５】
（エ）  全ての抽出された特徴に対してこれを実施する。
【００２６】
（２．４）  上記で作成された自然特徴データベースを使用して、カメラの位置姿勢を推定し、位置合わせを行う。
【非特許文献１】小竹, 内山, 山本：マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法, 日本バーチャルリアリティ学会論文誌, vol.10, No.3, pp.401-410, 2005.
【非特許文献２】Iryna Gordon, David G. Lowe：“Scene Modelling, Recognition and Tracking with Invariant Image Features”, Proc. Third IEEE and ACM International Symposium on Mixed and Augmented Reality, pp.110 − 119, 2004
【発明の開示】
【発明が解決しようとする課題】
【００２７】
既存の手法では、マーカを利用した場合には、上記（１．３）の作業において撮影されたマーカ全てを上記（１．４）でキャリブレーションし、上記（１．５）の位置合わせ処理で使用していた。
【００２８】
使用するマーカの数が増えるほど、位置合わせの精度は向上するが、位置合わせ処理およびキャリブレーション処理の負荷が増大するため、使用するマーカの数は少ないほうが望ましい。操作者が、撮影時点で必要なマーカだけを撮影するように注意することで、ある程度マーカの数を少なくすることは可能である。しかし、これには操作者の経験と技術が必要となる。そのため実際には上記（１．１）〜（１．５）の作業を繰り返し行い、最適なマーカの配置と数を体験的に決定することが行われている。
【００２９】
この時、既存の手法では、任意のマーカをキャリブレーションや位置合わせ処理から除外する場合には、取得した画像の全てあるいは一部を破棄し、マーカが取得画像に含まれないようにしてから再度キャリブレーションを行っていた。もしくはマーカを空間から除去した後、再度画像を取得し、キャリブレーションを行っていた。
【００３０】
また、キャリブレーションおよび位置合わせ処理を行う複数の画像処理装置を隣接した空間で使用する場合、（１．１）の作業において自分の画像処理装置が使用するために設置したマーカ以外に、隣接した画像処理装置が使用するために設置したマーカを偶然撮影する可能性が高くなる。この場合、不要な位置合わせ処理およびキャリブレーション処理が発生してしまう。
【００３１】
さらに、自分の画像処理装置が使用するために配置したマーカのマーカIDと、隣接した画像処理装置が使用するために配置されているマーカのマーカIDが重複する可能性が存在する。この場合、キャリブレーションおよび位置合わせ処理が正しく動作しなくなってしまう。
【００３２】
マーカIDの重複は、例えば（１．１）の作業において予備用として作成したマーカを不注意にキャリブレーションおよび位置合わせ処理を行う空間に放置したのを偶然撮影してしまうことでも発生する。また、マーカIDの重複は画像処理によるマーカの誤認識によっても発生する。
【００３３】
マーカの誤認識はマーカに類似した被写体の撮影、マーカを撮影する装置の露出・絞り等のパラメータ、撮影環境における光の状況などの外乱により発生し、画像処理装置の操作者が十分注意しても発生しないようにすることは困難であった。
【００３４】
既存の手法では、重複したマーカをキャリブレーションや位置合わせ処理から除外するためには、取得した画像の全てあるいは一部を破棄した後、重複したマーカ以外の全てのマーカを再撮影していた。
【００３５】
一方、自然特徴を利用した場合には、上記（２．２）の作業において抽出された特徴の位置を、上記（２．３）の処理で算出し、自然特徴データベースを作成し、上記（２．４）の位置合わせ処理で使用していた。
【００３６】
既存の方法では、類似した特徴が数多く出現する可能性がある。この場合、自然特徴データベースの作成や、位置合わせ処理において、類似した特徴を同一の特徴として誤って対応付けることがあり、正しく動作しない危険性がある。
【００３７】
本発明は以上の問題に鑑みてなされたものであり、自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用する指標を選択する為の技術を提供することを目的とする。
【００３８】
また、本発明の別の目的は、マーカ定義情報に応じて、キャリブレーションの実行に必要な作業を操作者に通知することで、操作者が行う位置合わせのための設定作業の負荷を軽減することにある。
【課題を解決するための手段】
【００３９】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００４０】
即ち、識別可能なパターンを有する複数のマーカが配された現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像中のマーカのパターンから、当該マーカのＩＤを識別し、当該識別されたＩＤを所定のファイルに登録する識別工程と、
前記識別工程で識別され前記所定のファイルに登録されたＩＤ同士を比較して、識別されたＩＤが同一である複数のマーカを重複して配置されたマーカとして検知する検知工程と、
前記識別工程で識別されたマーカのうち、前記検知工程で検知された重複して配置されたマーカ以外のマーカの現実空間中の位置及び／若しくは姿勢を計算する計算工程と
を有することを特徴とする。
【００４１】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００４２】
即ち、識別可能なパターンを有する複数のマーカが配された現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像中のマーカのパターンから、当該マーカのＩＤを識別し、当該識別されたＩＤを所定のファイルに登録する識別手段と、
前記識別手段が識別し前記所定のファイルに登録したＩＤ同士を比較して、識別されたＩＤが同一である複数のマーカを重複して配置されたマーカとして検知する検知手段と、
前記識別手段によって識別されたマーカのうち、前記検知手段によって検知された重複して配置されたマーカ以外のマーカの現実空間中の位置及び／若しくは姿勢を計算する計算手段と
を備えることを特徴とする。
【発明の効果】
【００４３】
本発明の構成によれば、自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用するマーカを選択することができる。
【発明を実施するための最良の形態】
【００４４】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００４５】
［第１の実施形態］
本実施形態では、マーカを指標の一例として用いた場合について説明する。
【００４６】
図１は、本実施形態で用いるマーカの構成例（フォーマット例、パターン例）を示す図である。同図に示す如く、本実施形態で用いるマーカは、４×４の小正方形でもって構成されており、更に４×４の小正方形は、４隅（ｂｌｋ１〜ｂｌｋ３，ｗｈｔ）、ｃ１〜ｃ４、ｘ１〜ｘ８に分類される。また、各小正方形は白か黒の何れかで塗りつぶされており、塗りつぶされた色によってビット値「０」若しくはビット値「１」を表している。例えば白で塗りつぶされている小正方形はビット値「０」を表しているし、黒で塗りつぶされている小正方形はビット値「１」を表している。
【００４７】
先ず、４隅の小正方形（ｂｌｋ１〜ｂｌｋ３，ｗｈｔ）について説明する。４隅の小正方形は何れか１つが白（ｗｈｔ）で、残り３つが黒（ｂｌｋ１〜３）である。これらはマーカ座標系を定義するために使用されるものである。マーカ座標系とは、マーカ毎に定義される座標系であって、より具体的にはｂｌｋ１とｂｌｋ２とを結ぶ線分の方向をｘ座標軸の正方向、ｂｌｋ３とｂｌｋ２とを結ぶ線分の方向をｙ座標軸の正方向、マーカの法線方向をｚ座標軸の正方向、マーカの中心位置を原点とする座標系である。図３は、マーカ座標系を示す図である。マーカの世界座標系における位置は、世界座標系におけるマーカ座標系原点の位置で決定される。また、マーカの世界座標系における姿勢は、マーカ座標系が世界座標系を基準にどのように回転しているかによって決定される。
【００４８】
このことから、このようなマーカを撮像するカメラとマーカとの相対位置姿勢は、マーカ画像におけるマーカの形状、辺の長さ、中心位置を用いて、周知の技術により求めることができる。
【００４９】
次に、ｃ１〜ｃ４、ｘ１〜ｘ８について説明する。ｘ１〜ｘ８は、マーカ固有の識別子（マーカＩＤ）を表すためのものである。ｘ１〜ｘ８で８ビットを表現できるので、マーカＩＤは０〜２５５の値を取ることができる。ｃ１〜ｃ４は検査ビットであり、画像処理による情報ビットの誤認識が発生した場合の訂正に使用される。
【００５０】
検査ビットの値は以下の式から求められる。
【００５１】
ｃ１＝ｎｏｔ（ｘ１＋ｘ２＋ｘ３      ＋ｘ５＋ｘ６            ）
ｃ２＝ｎｏｔ（      ｘ２＋ｘ３＋ｘ４      ＋ｘ６＋ｘ７      ）
ｃ３＝ｎｏｔ（            ｘ３＋ｘ４＋ｘ５      ＋ｘ７＋ｘ８）
ｃ４＝ｎｏｔ（ｘ１            ＋ｘ４＋ｘ５＋ｘ６      ＋ｘ８）
図２は、図１に示したフォーマットに従って作成された実際のマーカの一例を示す図である。上述の通り、各小正方形は白若しくは黒でもって塗りつぶされており、それぞれの小正方形は割り当てられた情報を表している。なお、マーカのサイズについては特に限定するものではないが、本実施形態では、現実空間中に配する全てのマーカの一辺の長さについては全て同じであるとする。
【００５２】
次に、このようなマーカの位置姿勢を求める、本実施形態に係る画像処理装置について説明する。図４は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。
【００５３】
同図において１００は画像処理装置本体を示している。画像入力部１０１は、ディジタルカメラやハードディスク装置などの外部装置から供給される画像を取得する。ここで取得する画像は、図１〜３を用いて説明したマーカが複数配置された現実空間の画像である。画像入力部１０１は取得した画像を後段の画像取得部１０２に供給する。
【００５４】
画像取得部１０２は、画像入力部１０１から受けた画像を、本装置が扱うことのできるフォーマットに変更する等、様々な前処理をこの画像に対して行う。処理済みの画像は後段の画像管理部１０６に送出する。
【００５５】
画像管理部１０６は、画像取得部１０２から画像を受けると、これを記憶部１１０に格納する処理を行う。また、必要に応じて記憶部１１０に格納されている画像や、後述するマーカ定義情報を読み出し、指標管理部１０７や画像合成部１１１に送出する。
【００５６】
記憶部１１０は、画像管理部１０６から受けた画像や、後述するマーカ定義情報を記憶するためのものである。
【００５７】
ここで、マーカ定義情報とは、マーカに関する様々な情報の集まりで、マーカ毎に存在する。本実施形態では、マーカ定義情報は、マーカＩＤ、マーカ状態、マーカサイズ、マーカ位置姿勢により構成されている。マーカ定義情報は、例えば、図５に示すようなテーブル形式でもって記憶部１１０に格納されている。
【００５８】
図５は、それぞれのマーカに対するマーカ定義情報を登録したテーブル（マーカ定義情報テーブル）の構成例を示すブロック図である。同図に示す如く、テーブルには、それぞれのマーカについて、「マーカＩＤ」、「マーカ状態」、「マーカサイズ」、「マーカの位置、姿勢」が登録されている。
【００５９】
「マーカＩＤ」は上述の通り、マーカに記されたｘ１〜ｘ８に対応するものである。即ち、マーカＩＤにはビット列ｘ１〜ｘ８が示す値が登録されている。
【００６０】
「マーカ状態」は同図に示す如く、基準マーカフラグ、検出フラグ、対象フラグ、完了ステータスにより構成されている。
【００６１】
基準マーカフラグとは、マーカが基準マーカであるのか否かを示すフラグである。基準マーカフラグが「１」であれば基準マーカであることを示し、「０」であれば基準マーカではない（換言すれば相対マーカである）ことを示している。同図ではマーカＩＤ＝７のマーカのみが基準マーカフラグ＝１であり、このマーカのみが基準マーカであることを示している。
【００６２】
検出フラグとは、マーカが、画像取得部１０２から送出された画像から検出されたか否かを示すフラグである。検出フラグが「１」であれば検出されたことを示し、「０」であれば検出されなかったことを示す。同図では、マーカＩＤ＝１，７，４５，１２５のマーカが検出フラグ＝１であり、マーカＩＤ＝１，７，４５，１２５のマーカが画像から検出されたことを示している。
【００６３】
対象フラグとは、マーカが位置姿勢計算対象である（即ちキャリブレーション対象である）か否かを示すフラグである。対象フラグが「１」であれば、計算対象となることを示し、「０」であれば計算対象ではないことを示す。同図では、マーカＩＤ＝１，７，４５のマーカが対象フラグ＝１であり、マーカＩＤ＝１，７，４５のマーカはキャリブレーション対象であることを示している。一方、マーカＩＤ＝１２５のマーカは対象フラグ＝０であり、キャリブレーション対象ではないことを示している。
【００６４】
完了ステータスとは、マーカのキャリブレーションが実行されたか否かを示すフラグである。完了ステータスが「１」であれば、位置姿勢計算が実行されており、「０」であれば位置姿勢計算が実行されておらず、「２」であれば、位置姿勢計算を実行したが計算に失敗して正しく位置姿勢が求められていないことを示している。同図では、マーカＩＤ＝１のマーカは完了ステータス＝２であり、このマーカの位置姿勢は正しく求められていない。また、マーカＩＤ＝７，４５のマーカは完了ステータス＝１であり、これらのマーカにこれらのマーカについては正しく位置姿勢が求められている。マーカＩＤ＝１２５のマーカの完了ステータス＝０であり、このマーカについては未だ位置姿勢計算が実行されていない。
【００６５】
「マーカサイズ」は、マーカの一辺の長さを示している。上述の通り、本実施形態では、全てのマーカは一辺が同じ長さを有しているものとしている。同図では、マーカＩＤ＝１，７，４５，１２５のマーカは全て一辺が「４０」となっている。
【００６６】
「マーカの位置、姿勢」はそれぞれ、マーカの世界座標系における位置、姿勢を示している。ここでマーカの姿勢は回転軸ベクトルと回転角で表現されている。すなわち世界座標系とマーカ座標系の各軸を一致させた状態で、回転軸ベクトルを中心としてマーカ座標系を右に回転させた状態を表している。
【００６７】
以上説明したテーブルのデータが記憶部１１０に登録されている。
【００６８】
図４に戻って次に、指標管理部１０７は、記憶部１１０や画像管理部１０６から送出された情報を指標位置姿勢計算部１０８や指標抽出部１０９に送出する処理を行う。
【００６９】
指標位置姿勢計算部１０８は、後述する処理により位置姿勢計算対象として特定されたマーカの世界座標系における位置姿勢を計算する処理を行う。指標抽出部１０９は、記憶部１１０から指標管理部１０７を介して受けた画像からマーカを検出する処理を行う。指標位置姿勢計算部１０８、指標抽出部１０９のそれぞれが求めた結果は指標管理部１０７に送出される。即ち、指標管理部１０７は、指標に係る様々な情報を管理している。
【００７０】
画像合成部１１１は、画像取得部１０２から送出された画像上における各マーカのうち、後述する処理により位置姿勢計算対象として特定されたマーカについて、マーカＩＤなどのマーカ情報やマーカの輪郭形状を理解しやすくするコンピュータグラフィックス（ＣＧ）を生成する。そして、生成したＣＧを記憶部１１０から指標管理部１０７を介して受けた画像上に重畳する処理を行う。画像合成部１１１による処理後の画像は後段のユーザインターフェース管理部１０３に送出される。
【００７１】
ユーザインターフェース管理部１０３は、表示部１０５の表示画面上に表示する情報を管理するものであり、画像合成部１１１から受けた画像を表示部１０５に送出する。また、ユーザインターフェース管理部１０３は、制御部１０４から受けた各種の指示を受け、受けた指示に応じて上記各部を制御し、制御結果に応じた表示を表示部１０５の表示画面上に行う処理も行う。
【００７２】
表示部１０５は、ＣＲＴや液晶画面などにより構成されており、各種の処理結果を画像や文字などでもって表示することができる。制御部１０４は、本装置の操作者からの操作指示を受け、ユーザインターフェース管理部１０３に通知する。
【００７３】
図３０は、上記画像処理装置１００に適用可能なコンピュータのハードウェア構成を示すブロック図である。
【００７４】
３００１はＣＰＵで、ＲＡＭ３００２やＲＯＭ３００３に格納されているプログラム（コンピュータプログラム）やデータを用いて本コンピュータ全体の制御を行うと共に、本コンピュータが行う後述の各処理を実行する。例えば、図４に示した画像処理装置１００の構成において、画像入力部１０１、記憶部１１０、表示部１０５を除く各部が有する機能は、ＣＰＵ３００１が有する機能の一部として機能する。
【００７５】
３００２はＲＡＭで、外部記憶装置３００６からロードされたプログラムやデータ、Ｉ／Ｆ（インターフェース）３００７を介して外部（本実施形態の場合にはカメラなどの撮像装置）から取得したデータ（本実施形態の場合には撮像画像）を一時的に記憶するためのエリアを有する。更にＲＡＭ３００２は、ＣＰＵ３００１が各種の処理を実行する際に用いるワークエリアを有する。このように、ＲＡＭ３００２は、各種の用途に応じて適宜エリアを提供することができる。
【００７６】
３００３はＲＯＭで、本コンピュータの設定データやブートプログラムなどを格納する。
【００７７】
３００４は操作部で、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をＣＰＵ３００１に対して入力することができる。
【００７８】
３００５は表示部で、ＣＲＴや液晶画面等により構成されており、ＣＰＵ３００１による処理結果を画像や文字などでもって表示することができる。表示部３００５は、図４における表示部１０５に相当するものである。
【００７９】
３００６は外部記憶装置で、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはＯＳ（オペレーティングシステム）や、上記記憶部１１０が保持する各種の情報（データ）、本コンピュータが行う後述の各処理をＣＰＵ３００１に実行させるためのプログラムやデータが保存されている。これらのプログラムやデータはＣＰＵ３００１による制御に従って適宜ＲＡＭ３００２にロードされる。そしてＣＰＵ３００１はこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータが行う後述の各処理を実行することになる。
【００８０】
３００７はＩ／Ｆで、本実施形態の場合には、上記マーカが複数配された現実空間を撮像する撮像装置を本コンピュータに接続するためのインターフェースとして機能するものである。この撮像装置が撮像した画像は、このＩ／Ｆ３００７を介して本コンピュータのＲＡＭ３００２や外部記憶装置３００６に入力される。
【００８１】
３００８は上述の各部を繋ぐバスである。
【００８２】
なお、本実施形態に係る画像処理装置１００に適用可能なコンピュータのハードウェア構成については同図に示した構成に限定するものではなく、画像処理装置１００が行う後述の各処理を実行可能な構成であれば良い。
【００８３】
次に、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）について説明する。図６は、このＧＵＩの表示例を示す図である。なお、同図のＧＵＩに係るプログラムやデータは外部記憶装置３００６に保存されている。これをＲＡＭ３００２にロードし、ＣＰＵ３００１がこのロードされたプログラムやデータを用いて処理を実行することで、同図に示した構成を有するウィンドウが表示部３００５の表示画面上に表示される。これは、以下の説明で登場するその他のウィンドウについても同様である。
【００８４】
なお、以下の説明では特に触れない限りは、ＧＵＩに対する操作は本コンピュータの操作者が操作部３００４を用いて行うものとし、この操作によって実行される処理についてはＣＰＵ３００１が行うものとする。
【００８５】
図６に示したＧＵＩにおいて「ファイル」メニュー２１０を指示すると、表示部３００５の表示画面上には図７に示すようなファイルメニューが表示される。図７に示したファイルメニューにおいて「マーカ定義ファイルを開く」メニュー２１２を指示すると、図１０に示したウィンドウが表示部３００５の表示画面上に表示される。図１０に示したウィンドウにおいて３００は、外部記憶装置３００６に保存されているマーカ定義ファイルのファイル名を一覧表示するための領域であり、本コンピュータの操作者は操作部３００４を用いて、この領域３００内に表示されているファイル名のうち何れか１つを選択することができる。マーカ定義ファイルとは、図５に示したテーブルのデータを記録したファイルである。複数のマーカ定義ファイルを外部記憶装置３００６に保存させておくと、図１０に示したＧＵＩでこれらのファイルを選択することができる。
【００８６】
ここで、操作者がファイルを１つ選択して「ＯＫ」ボタン３１０を指示すると、画像処理装置は同図に示したウィンドウの表示を消去した後、選択したファイルの内容に従って、図６のＧＵＩにおける領域２３０内の表示を更新する。領域２３０内に表示されている情報の詳細については後述する。
【００８７】
図７のファイルメニューに戻って、「マーカ定義ファイルを新規作成」メニュー２１４を指示すると、表示部３００５の表示画面上には図１１に示すようなウィンドウが表示される。図１１に示したウィンドウにおいて４００は、新規作成するマーカ定義ファイルのファイル名を入力するための領域である。本コンピュータの操作者が操作部３００４を用いて領域４００に新規のマーカ定義ファイルのファイル名を入力後「ＯＫ」ボタン４１０を指示すると、画像処理装置は同図に示したウィンドウの表示を消去した後、領域４００内に入力したファイル名を有するマーカ定義ファイルを外部記憶装置３００６内に作成する。
【００８８】
図７のファイルメニューに戻って、「マーカ定義ファイルを保存」メニュー２１６を指示すると、現在開いているマーカ定義ファイルを外部記憶装置３００６に保存する処理を行う。
【００８９】
「終了」メニュー２１８を指示すると、ＣＰＵ３００１はＯＳが有する周知のシャットダウン機能を用いてシャットダウンに係る処理を行い、本コンピュータのシャットダウンを行う。
【００９０】
図６に示したＧＵＩに戻って、「編集」メニュー２２０を指示すると、表示部３００５の表示画面上には、図８に示した編集メニューが表示される。図８に示した編集メニューにおいて「マーカ定義情報の新規作成」メニュー２２２を指示すると、マーカ定義情報が新規に作成され、現在開いているマーカ定義ファイルに追加登録される。そして追加登録後、現在開いているマーカ定義ファイルの内容に従って、図６のＧＵＩにおける領域２３０内の表示を更新する。ここで、マーカＩＤの重複を避けるため、新規作成するマーカ定義情報のマーカＩＤは、マーカ定義情報テーブルにおいて未使用の値が使用される。新規作成されたマーカ定義情報は、後述するウィンドウ上で変更することができる。
【００９１】
図８の編集メニューに戻って、「マーカ定義情報の削除」メニュー２２４を指示すると、図６のＧＵＩにおける領域２３０内で現在選択しているマーカ定義情報が、現在開いているマーカ定義ファイルから削除される。そして削除後、現在開いているマーカ定義ファイルの内容に従って、図６のＧＵＩにおける領域２３０内の表示を更新する。この更新表示により、削除されたマーカ定義情報は表示されなくなる。
【００９２】
「マーカ定義情報の編集」メニュー２２６を指示すると、図９に示すようなウィンドウが表示される。同図に示したウィンドウは、領域２３０内で現在選択されているマーカ定義情報の編集に使用する。２５０はウィンドウ本体である。
【００９３】
２５２は、現在選択されているマーカ定義情報におけるマーカＩＤを入力するための領域である。この領域２５２に入力した値が、現在選択されているマーカ定義情報におけるマーカＩＤとなる。
【００９４】
２５４は、現在選択されているマーカ定義情報におけるマーカ位置を入力するための領域である。この領域２５４に入力した値が、現在選択されているマーカ定義情報におけるマーカ位置となる。
【００９５】
２５６は、現在選択されているマーカ定義情報におけるマーカ姿勢を入力するための領域である。この領域２５６に入力した値が、現在選択されているマーカ定義情報におけるマーカ姿勢となる。
【００９６】
２５８は、現在選択されているマーカ定義情報におけるマーカサイズを入力するための領域である。この領域２５８に入力した値が、現在選択されているマーカ定義情報におけるマーカサイズとなる。なお、本実施形態では、領域２５８に入力したマーカサイズは、全てのマーカのマーカ定義情報に反映されるものとする。
【００９７】
２５９は、現在選択されているマーカ定義情報におけるマーカ状態に含まれている基準マーカフラグを編集するためのプルダウンメニューである。このプルダウンメニュー２５９には「基準マーカ」、「相対マーカ」が表示され、何れかを選択することができる。操作者が「基準マーカ」を選択すれば基準マーカフラグは「１」に設定され、「相対マーカ」を選択すれば基準マーカフラグは「０」に設定される。
【００９８】
ただし、本実施形態では、マーカ定義ファイルにおいて基準マーカは１つのみ存在可能とする。従って、基準マーカフラグを「１」にしたマーカ定義情報が既に存在する場合、他のマーカ定義情報を操作しても「相対マーカ」しか選択することができない。
【００９９】
２５１は「ＯＫ」ボタンである。これを指示することで、選択中のマーカ定義情報を、各領域２５２〜２５９に入力された各情報で更新する処理を行う。即ち、現在選択されているマーカ定義情報におけるマーカＩＤ、マーカ位置、姿勢、マーカサイズ、基準マーカフラグをそれぞれ、領域２５２〜２５９に入力した情報に更新する処理を行う。但し、領域２５２に入力したマーカＩＤが同じファイル内で使用されていた場合には警告を表示部３００５の表示画面上に表示し、マーカ定義情報の更新処理は行わない。
【０１００】
次に、図６のＧＵＩにおける領域２３０について説明する。領域２３０内には、現在開いているマーカ定義ファイル内に記述されている各マーカのマーカ定義情報に応じた表示がなされている。より詳しくは、各行に１つのマーカに対するマーカ定義情報に応じた表示がなされている。
【０１０１】
２３１はスライダバーである。上部、若しくは下部を指示することで、領域２３０内に表示している情報を上方、若しくは下方にスクロールさせることができる。
【０１０２】
２３２はチェックボックスで、対応するマーカ定義情報中の対象フラグを設定するためのものである。チェックする（チェックマークがチェックボックス内に表示される）と対象フラグ＝１となり、チェックを外す（チェックマークがチェックボックス内から消去される）と対象フラグ＝０となる。例えば、マーカＩＤ＝２（マーカＩＤ＝２）の行にあるチェックボックスを指示するとチェックボックス内にチェックマークが表示される。加えてマーカＩＤ＝２のマーカの対象フラグは「１」となる。更に、再度ＩＤ＝２の行にあるチェックボックスを指示すると、チェックボックス内からチェックマークが消去される。加えてマーカＩＤ＝２のマーカの対象フラグは「０」となる。このように、各マーカについて任意に対象フラグを設定することができる。これは、本コンピュータの操作者が位置姿勢計算対象のマーカを任意に選択できることを示している。なお、チェックボックスに対する操作以外に、何らかの処理により対象フラグが操作された場合であっても、この操作結果はチェックボックス内のチェックマークに反映される。
【０１０３】
２３４は、対応するマーカ定義情報中の完了ステータスをアイコンとして表示する領域である。対応するマーカの位置姿勢計算が実行されている場合に、完了ステータス＝１となる。この場合領域２３４内にはアイコン「◎」が表示される。また、対応するマーカの位置姿勢計算が実行されているが失敗した場合には、完了ステータス＝２となる。この場合領域２３４内にはアイコン「×」が表示される。また、対応するマーカの位置姿勢計算が実行されていない場合には、完了ステータス＝０となる。この場合には領域２３４内には何も表示されない。同図の場合、ＩＤ＝２のマーカの行には領域２３４内にアイコン「◎」が表示されているので、位置姿勢計算が実行されていると判断することができる。一方、ＩＤ＝１のマーカの行には領域２３４内に何も表示されていないので、位置姿勢計算が未だ実行されていないと判断することができる。もちろん、完了ステータスの値に応じて表示するアイコンは如何なるものであっても良く、完了ステータスの値が視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【０１０４】
２３６は、対応するマーカ定義情報中の検出フラグをアイコンとして表示する領域である。対応するマーカが画像から検出された場合に検出フラグ＝１となる。この場合には領域２３６内にはカメラのアイコンが表示される。また、対応するマーカが画像から検出されなかった場合に検出フラグ＝０となる。この場合には領域２３６内には何も表示されない。同図の場合、ＩＤ＝２のマーカの行には領域２３６内にカメラのアイコンが表示されているので、画像から検出されていると判断することができる。一方、ＩＤ＝１のマーカの行には領域２３６内に何も表示されていないので、画像からは検出されていないと判断することができる。もちろん、検出フラグの値に応じて表示するアイコンは如何なるものであっても良く、検出フラグの値が視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【０１０５】
２３８は、対応するマーカ定義情報中のマーカＩＤを表示する領域である。基準マーカの場合は下線付きでマーカＩＤが表示される。同図の場合、ＩＤ＝２のマーカＩＤに下線が表示されているので、これが基準マーカであると判断することができる。もちろん、基準マーカフラグの値に応じて表示するものは下線に限定するものではなく、基準マーカがどれであるのかが視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【０１０６】
２６０は、現実空間画像を表示するための領域である。この領域２６０内に表示する現実空間画像は、Ｉ／Ｆ３００７を介してＲＡＭ３００２に取得したものであっても良いし、外部記憶装置３００６からＲＡＭ３００２に取得した画像であっても良い。また、後述する領域２７０内に表示している１以上のサムネイル画像のうち選択されたサムネイル画像を拡大したもの（サムネイルを拡大処理した画像であっても良いし、サムネイルの作成元を別途用意しておき、これを用いても良い）であっても良い。表示される画像は、複数のマーカが配された現実空間の画像である。また、領域２６０内には、現実空間の画像上に、各マーカのＩＤや輪郭を示すＣＧが重畳表示されている。
【０１０７】
２７０は、Ｉ／Ｆ３００７を介して取得した現実空間画像のサムネイルを一覧表示するための領域である。２７２はスライダバーで、左端、右端を指示することで、領域２７０内に表示されている情報を左方、右方にスクロールさせることができる。領域２７０内に表示されている画像のうち１つを指示すると、先ず、選択したサムネイルに枠が表示される。そして、指示した画像の拡大画像（サムネイルを拡大処理した画像であっても良いし、サムネイルの作成元を別途用意しておき、これを用いても良い）が上述の通り、領域２６０内に表示される。
【０１０８】
２８２は、Ｉ／Ｆ３００７を介して撮像装置から送出される各フレームの画像（即ち動画像）を順次外部記憶装置３００６に取得すると共に、領域２６０内に順次表示させる指示を入力する為に押下するボタンである。
【０１０９】
２８４は、押下すると、その時点でＩ／Ｆ３００７を介して取得した１フレームのサムネイルを作成し、領域２７０内に追加表示する指示を入力するために押下するボタンである。もちろん、取得したフレームの画像もまた、外部記憶装置３００６内に記憶する。なお、ボタン２８４は、動画像における１フレームを取得するために押下するものであるので、動画像を取得するためのボタン２８２が指示されている場合にのみ押下可能である。１フレームの画像を取得すると、この１フレームの画像からマーカの検出処理を行い、検出したマーカに係る情報を現在開いているマーカ定義ファイルに記述する。更に、この処理によって更新したマーカ定義ファイルに従って、上記領域２３０内の表示を更新する。
【０１１０】
２８６は、領域２７０内で現在選択しているサムネイルを削除する指示を入力するためのボタンである。なお、この削除対象のサムネイルが、オリジナルの画像を縮小することで作成したものであれば、このオリジナルの画像もまた削除する。また、削除した画像にマーカが含まれていれば、現在開いているマーカ定義ファイルにおいてこのマーカに関する情報も削除する。また、この処理により更新したマーカ定義ファイルに従って上記領域２３０内の表示を更新する。
【０１１１】
２８８は、現在開いているマーカ定義ファイルにおいて対象フラグ＝１のマーカの位置姿勢計算を計算する指示を入力するためのボタンである。
【０１１２】
図１２，１３は、上記ＧＵＩを用いて行う各種の処理のフローチャートである。なお、図１２，１３のフローチャートに従った処理をＣＰＵ３００１に実行させるためのプログラムやデータは外部記憶装置３００６に保存されている。これをＣＰＵ３００１による制御に従って適宜ＲＡＭ３００２にロードする。そして、ＣＰＵ３００１がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは以下説明する各処理を実行する。
【０１１３】
ここで、キャリブレーションの実行が行われるか否かは、操作者による選択のみだけではなく、マーカ定義情報のマーカ状態によって決定される。よって処理全体の中からマーカ定義情報を変更する処理に注目して説明する。
【０１１４】
また、以下の処理を解する前段では既に図６のＧＵＩに係るプログラムやデータがＲＡＭ３００２にロードされ、ＣＰＵ３００１がこれを用いて処理を実行しているので、表示部３００５の表示画面上には図６のＧＵＩが表示されている。
【０１１５】
図６のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー２１４の指示を検知すると、処理をステップＳ１００を介してステップＳ１０１に進める。ステップＳ１０１では、図１１に示すようなウィンドウを表示部３００５の表示画面上に表示する。本コンピュータの操作者はこのウィンドウの領域４００に新規作成するマーカ定義ファイルのファイル名を入力する。ステップＳ１０１では更に領域４００に入力されたファイル名を取得する。そして処理をステップＳ１０２に進め、ステップＳ１０１で取得したファイル名を有するマーカ定義ファイルを外部記憶装置３００６内に作成する。作成したファイル内のマーカ定義情報テーブルは空に設定される。そして処理をステップＳ１０８に進め、外部記憶装置３００６内に既に取得している現実空間画像を全て削除し、領域（取得画像表示領域）２７０内の表示を更新する。これにより、領域２７０内には何も表示されていない状態となる。そして処理をステップＳ１４６に進め、領域２３０内の表示を更新する。即ち、領域２３０内には何も表示されてない状態となる。そして処理を上記ステップＳ１００に戻す。
【０１１６】
一方、図６のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを開く」メニュー２１２の指示を検知すると、処理をステップＳ１００、ステップＳ１０５を介してステップＳ１０６に進める。ステップＳ１０６では、図１０に示すようなウィンドウを表示部３００５の表示画面上に表示する。本コンピュータの操作者はこのウィンドウにおいてマーカ定義ファイルを１つ選択する。ステップＳ１０６では更に、選択されたマーカ定義ファイルを外部記憶装置３００６からＲＡＭ３００２にロードする。そして処理をステップＳ１０７に進め、ロードされたマーカ定義情報テーブルの検出フラグ、対象フラグを共に０に初期化する。そしてステップＳ１０８，Ｓ１４６における処理を行い、処理をステップＳ１００に戻す。
【０１１７】
一方、図６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の新規作成」メニュー２２２の指示を検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０を介してステップＳ１１２に進める。ステップＳ１１２では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を１つ追加する。追加したマーカ定義情報のマーカＩＤは、同じファイル内に存在するマーカ定義情報が使用しているマーカＩＤと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、完了ステータスは全て０に初期化される。加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップＳ１４６における処理を行った後、処理をステップＳ１００に戻す。
【０１１８】
一方、図６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の削除」メニュー２２４の指示を検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０，Ｓ１１４を介してステップＳ１１６に進める。ステップＳ１１６では、領域２３０内で現在選択中のマーカ定義情報を、マーカ定義ファイルから削除する処理を行う。そしてステップＳ１４６における処理を行った後、処理をステップＳ１００に戻す。
【０１１９】
一方、図６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の編集」メニュー２２６の指示を検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０，Ｓ１１４、Ｓ１１８を介してステップＳ１２０に進める。ステップＳ１２０では、図９に示すようなウィンドウを表示部３００５の表示画面上に表示する。本コンピュータの操作者はこのウィンドウにおける各領域２５２〜２５９のうち１以上に対して、対応する情報を入力する。そして「ＯＫ」ボタン２５１が指示されると、ステップＳ１２０では更に、各領域２５２〜２５９に入力された情報を取得する。そして、領域２５２から取得したマーカＩＤが、現在開いているマーカ定義ファイル内に２以上存在するか否かをチェックする。
【０１２０】
このチェックの結果、２以上存在する場合には処理をステップＳ１４０に進め、表示部３００５の表示画面上に警告を表示する。そして処理をステップＳ１５０に進める。ステップＳ１５０以降の処理については後述する。一方、２以上存在しない場合には処理をステップＳ１２１に進め、領域２３０内で現在選択されているマーカ定義情報を、ステップＳ１２０で取得した情報に更新する処理を行う。そしてステップＳ１４６における処理を行う。ステップＳ１４６における領域２３０内の表示更新の際に、基準マーカフラグ＝１のマーカＩＤについては下線を表示する。そしてその後、処理をステップＳ１００に戻す。
【０１２１】
一方、図６のＧＵＩにおいて、ボタン２８２が既に指示されている状態、即ち、Ｉ／Ｆ３００７を介して外部記憶装置３００６に現実空間の動画像を取得している状態で、ボタン２８４の指示を検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０，Ｓ１１４，Ｓ１１８，Ｓ１２２を介してステップＳ１２４に進める。ステップＳ１２４では、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像から、この画像中に写っているマーカの検出およびマーカＩＤの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在かを調べ、存在する場合には、このマーカ定義情報の対象フラグ、検出フラグを共に１に設定する。即ち、画像から検出されたマーカについては検出した旨、及び位置姿勢の計算対象とする旨を、このマーカのマーカ定義情報に記録する。
【０１２２】
一方、ステップＳ１２４において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカＩＤは画像から識別したマーカＩＤを割り当て、対象フラグ、検出フラグを共に１に設定する。
【０１２３】
そして処理をステップＳ１２５に進め、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像のサムネイルを領域２７０内に追加表示する。そしてステップＳ１４６における処理を行った後に、処理をステップＳ１００に戻す。
【０１２４】
一方、図６のＧＵＩにおいて、ボタン２８６が指示されたことを検知すると、処理をステップＳ１００，Ｓ１０５、Ｓ１１０，Ｓ１１４，Ｓ１１８，Ｓ１２２，Ｓ１２６を介してステップＳ１２８に進める。
【０１２５】
ステップＳ１２８では、領域２７０内で選択されているサムネイルのオリジナル画像および外部記憶装置３００６に取得済みの画像から、マーカを検出し、検出したマーカのマーカＩＤを識別する。続いて領域２７０内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置３００６に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【０１２６】
そして処理をステップＳ１２９に進め、領域２７０から現在選択されているサムネイルとオリジナルを外部記憶装置３００６から削除する処理を行う。そしてステップＳ１４６における処理を行った後に、処理をステップＳ１００に戻す。
【０１２７】
これらの処理により、画像の削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。
【０１２８】
一方、図６のＧＵＩにおいてチェックボックス２３２に対する指示を検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０，Ｓ１１４，Ｓ１１８，Ｓ１２２，Ｓ１２６、Ｓ１３０を介してステップＳ１３２に進める。ステップＳ１３２では、指示されたチェックボックス２３２に対応するマーカ定義情報（指示されたチェックボックス２３２と同行に表示しているマーカＩＤを有するマーカ定義情報）内の対象フラグを反転させる。即ち、現在対象フラグが「１」であれば「０」にするし、現在対象フラグが「０」であれば「１」にする。そしてステップＳ１４６における処理を行った後、処理をステップＳ１００に戻す。
【０１２９】
一方、図６のＧＵＩにおいてボタン２８８が指示されたことを検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０，Ｓ１１４，Ｓ１１８，Ｓ１２２，Ｓ１２６、Ｓ１３０、Ｓ１３４を介してステップＳ１３６に進める。
【０１３０】
ステップＳ１３６では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ＝１のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ＝１であるマーカ定義情報が２以上存在するか否かをチェックする。２以上存在する場合には処理をステップＳ１４０に進める。
【０１３１】
ステップＳ１４０では、基準マーカが２以上存在するが故にキャリブレーションができない旨の警告を表示部３００５の表示画面上に表示する。そして処理をステップＳ１５０に進める。ステップＳ１５０以降の処理については後述する。
【０１３２】
一方、基準マーカフラグ＝１であるマーカ定義情報が１つのみである場合には処理をステップＳ１３８に進める。ステップＳ１３８では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり、且つ検出フラグ＝０となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップＳ１４０に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップＳ１５０に進める。ステップＳ１５０以降の処理については後述する。
【０１３３】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり、且つ検出フラグ＝０となるマーカ定義情報が存在しない場合には処理をステップＳ１４２に進める。
【０１３４】
ステップＳ１４２では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ＝１のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップＳ１４４に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「１」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「２」に設定する。そしてステップＳ１４６における処理を行い、その後、処理をステップＳ１００に戻す。
【０１３５】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図６のＧＵＩにおいて「ファイル」メニュー２１０を指示した後、「マーカ定義ファイルを保存」メニュー２１６を指示する。この指示を検知すると、処理をステップＳ１００，Ｓ１０５，Ｓ１１０，Ｓ１１４，Ｓ１１８，Ｓ１２２，Ｓ１２６、Ｓ１３０、Ｓ１３４、Ｓ１５０を介してステップＳ１５２に進める。なお、ステップＳ１４０からステップＳ１５０に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー２１６の指示を検知していれば処理をステップＳ１５２に進めるし、検知していなければ処理をステップＳ１５４に進める。
【０１３６】
ステップＳ１５２では、現在開いているマーカ定義ファイルを外部記憶装置３００６に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス＝１のマーカ定義情報を利用して位置合わせ処理を行えば、操作者が選択して位置姿勢を計算したマーカを利用した位置合わせ処理を行うことが可能になる。
【０１３７】
そして処理をステップＳ１５４に進める。ステップＳ１５４では、「終了」メニュー２１８が指示されたかをチェックし、指示されていない場合には処理をステップＳ１００に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【０１３８】
以上の説明により、本実施形態によれば、画像から検出されたマーカのうち、位置姿勢計算対象のマーカと基準マーカを、操作者が設定することができる。
【０１３９】
また、上記処理では、ステップＳ１２４による処理で、画像から検出したマーカを自動的に位置姿勢計算対象とすると共に、この位置姿勢計算対象のうち更に、本コンピュータの操作者が位置姿勢計算対象を選択することができ（半自動あるいは手動で選択することができ）、柔軟かつ使い易い手法を提供することが可能となった。
【０１４０】
さらには上記の選択方法に加えて、ステップＳ１１２、Ｓ１２１、Ｓ１３６、Ｓ１３８における処理のように、マーカ定義情報に応じてキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者が行う位置合わせための設定作業の負荷を軽くすることが可能になった。
【０１４１】
なお、マーカ定義情報新規作成時の処理であるステップＳ１１２において、追加されるマーカの対象フラグを０としたが、これを１としてもよい。この処理によって、システムは、操作者がマーカ定義情報を作成したマーカについて画像取得およびキャリブレーションを行って位置合わせ処理で使用するように誘導することができる。この処理は操作者が位置あわせに使用するマーカをマーカ定義情報の有無で管理したい場合に有効である。
【０１４２】
また、画像取得時の処理であるステップＳ１２４において、マーカ画像から検出されたマーカの対象フラグを１に変更していたが、変更しないようにしてもよい。この処理は、操作者がキャリブレーションするマーカを手動で選択することを重視する場合に有効である。
【０１４３】
また、画像削除時の処理であるステップＳ１２８において、画像中に存在しないマーカのマーカ定義情報を削除しているが、マーカ定義情報の検出フラグを０にするだけでもよい。この処理は、操作者が一度検出されたマーカのマーカ定義情報を残して管理したい場合に有効である。
【０１４４】
以上説明してきた変形を操作者の好みに応じてどちらにするかを予め設定できるようにしても構わない。
【０１４５】
［第２の実施形態］
第１の実施形態では、画像から検出された全てのマーカ、若しくは検出された全てのマーカのうち操作者が選択したマーカの位置姿勢を求めていた。本実施形態では、操作者が、位置姿勢の計算対象外とするマーカを撮像して、積極的に位置姿勢計算対象外のマーカを決定する。このような実施形態は、キャリブレーションおよび位置合わせ処理を行う装置を複数、隣接した空間で使用する状況で、他の装置が使用するマーカをキャリブレーションおよび位置合わせ処理で使用しない場合に有効である。
【０１４６】
なお、本実施形態は第１の実施形態に係る構成を前提としているが、本実施形態が第１の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第１の実施形態と同様のものであるとする。
【０１４７】
図１５は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第１の実施形態と同様、１つのマーカについて１つ存在するものであるが、本実施形態に係るマーカ定義情報は第１の実施形態に係るマーカ定義情報におけるマーカ状態に「除外フラグ」を加えた構成を有する。
【０１４８】
除外フラグとは、マーカが位置姿勢計算処理の対象外であるか否かを示すフラグで、「１」であれば対象外、「０」であれば対象外としないことを示す。本実施形態では除外フラグの規定値は「０」とする。
【０１４９】
図１６は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。図１６に示したＧＵＩは、上記図６のＧＵＩに「モード」メニュー２４０を加えたものである。更に、領域２３０内において、マーカＩＤ＝７，１０における領域２３６に示すように、アイコン上に除外フラグの値を反映した「×」のアイコンが重畳表示されている点が図６のＧＵＩとは異なる。
【０１５０】
図１６に示したＧＵＩにおいて「モード」メニュー２４０を指示すると、表示部３００５の表示画面上には、図１４に示すようなモードメニューが表示される。図４に示したモードメニューにおいて「取得モード」メニュー２４２を指示すると、取得モードが設定され、撮像装置が撮像した画像から検出したマーカは位置姿勢計算対象となる。即ち、「取得モード」メニュー２４２を指示した場合には、画像からマーカを識別すると、このマーカの除外フラグを「０」に設定し、以降、第１の実施形態と同様の動作を行う。
【０１５１】
一方、「除外」モード２４４を指示すると、除外モードが設定され、撮像装置が撮像した画像から検出したマーカは位置姿勢計算対象外となる。即ち、「除外」モード２４４を指示した場合には、画像からマーカを識別すると、このマーカの除外フラグを「１」に設定する。
【０１５２】
即ち、取得モードで画像から検出されたマーカについては、検出フラグは１に設定され、除外フラグは０に設定される。一方、除外モードで画像から検出されたマーカについては、検出フラグは１に設定され、除外フラグは１に設定される。
【０１５３】
そして、領域２３６には、第１の実施形態と同様に、検出フラグの値に応じたアイコンを表示するのである。これに加えて、本実施例では除外フラグの値に応じたアイコンを重畳表示する。同図では、マーカＩＤ＝７，１０に対応する領域２３６には「×」のアイコンが表示されているが、これはマーカＩＤ＝７，１０に対応する除外フラグが１であることを示している。なお、除外フラグ＝０である場合には領域２３６には「×」のアイコンは表示されない。もちろん、除外フラグの値に応じて表示するアイコンは如何なるものであっても良く、除外フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【０１５４】
図１７，１８は、図１６に示したＧＵＩを用いて行う各種の処理のフローチャートである。図１６のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー２１４の指示を検知した場合に行う処理（ステップＳ２００、Ｓ２０１、Ｓ２０２、Ｓ２０８、Ｓ２４６）はそれぞれ、図１２におけるステップＳ１００，Ｓ１０１，Ｓ１０２，Ｓ１０８，Ｓ１４６と同じであるので、説明は省略する。
【０１５５】
また、図１６のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを開く」メニュー２１２の指示を検知した場合における処理（ステップＳ２０５，Ｓ２０６，Ｓ２０７，Ｓ２０８，Ｓ２４６）はそれぞれ、図１２におけるステップＳ１０５，Ｓ１０６，Ｓ１０７，Ｓ１０８，Ｓ１４６と同様であるが、ステップＳ２０７では、検出フラグ、対象フラグに加え、除外フラグについても０に初期化する。
【０１５６】
また、図１６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の新規作成」メニュー２２２の指示を検知すると、処理をステップＳ２００，Ｓ２０５，Ｓ２１０を介してステップＳ２１２に進める。ステップＳ２１２では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を１つ追加する。追加したマーカ定義情報のマーカＩＤは、同じファイル内に存在するマーカ定義情報が使用しているマーカＩＤと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、除外フラグ、完了ステータスは全て０に初期化される加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップＳ２４６における処理を行った後、処理をステップＳ２００に戻す。
【０１５７】
また、図１６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の削除」メニュー２２４の指示を検知した場合に行う処理（ステップＳ２１４，Ｓ２１６，Ｓ２４６）はそれぞれ、図１２におけるステップＳ１１４，Ｓ１１６，Ｓ１４６と同じであるので、説明は省略する。
【０１５８】
また、図１６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の編集」メニュー２２６の指示を検知した場合に行う処理（ステップＳ２１８，Ｓ２２０，Ｓ２２１，Ｓ２４６、Ｓ２４０）はそれぞれ、図１２におけるステップＳ１１８，Ｓ１２０，Ｓ１２１，Ｓ１４６、図１３におけるステップＳ１４０と同じであるので、説明は省略する。
【０１５９】
また、図１６のＧＵＩにおいて、ボタン２８２が既に指示されている状態、即ち、Ｉ／Ｆ３００７を介して外部記憶装置３００６に現実空間の動画像を取得している状態で、ボタン２８４の指示を検知すると、処理をステップＳ２００，Ｓ２０５，Ｓ２１０，Ｓ２１４，Ｓ２１８，Ｓ２２２を介してステップＳ２５０に進める。ステップＳ２５０では、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像から、この画像中に写っているマーカの検出およびマーカＩＤの識別を行う。次に、ステップＳ２５２では、「モード」メニュー２４０で設定した現在のモードが除外モードであるのか取得モードであるのかをチェックする。チェックの結果、除外モードであれば処理をステップＳ２５８に進め、取得モードであれば処理をステップＳ２５４に進める。
【０１６０】
ステップＳ２５８では、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の除外フラグ、検出フラグを共に１に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては位置姿勢計算対象から除外する旨、及び画像から検出された旨を、このマーカのマーカ定義情報に記録する。
【０１６１】
一方、ステップＳ２５８において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカＩＤは画像から識別したマーカＩＤを割り当て、除外フラグ、検出フラグを共に１に設定する。そして処理をステップＳ２６０に進める。
【０１６２】
一方、ステップＳ２５４では、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の対象フラグ、検出フラグを共に１に設定し、除外フラグを０に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては位置姿勢計算対象とする旨、画像から検出された旨、位置姿勢計算対象から除外しない旨を、このマーカのマーカ定義情報に記録する。
【０１６３】
一方、ステップＳ２５４において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカＩＤは画像から識別したマーカＩＤを割り当て、対象フラグ、検出フラグは共に１に設定し、除外フラグを０に設定する。
【０１６４】
そして処理をステップＳ２６０に進め、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像のサムネイルを領域２７０内に追加表示する。そして処理をステップＳ２６２に進める。ステップＳ２６２では、領域２３０内の各マーカについての領域２３６の表示を更新するのであるが、上述の通り、除外フラグ＝１の領域２３６については「×」のアイコンを表示する。なお、除外フラグ＝０の場合には領域２３６には「×」のアイコンは表示しない。そしてステップＳ２４６の処理を行った後、処理をステップＳ２００に戻す。
【０１６５】
以上の処理により、取得モードで取得した画像から検出されたマーカを自動的にキャリブレーション対象にし、除外モードで取得した画像から検出されたマーカを自動的にキャリブレーションから除外することが可能になる。
【０１６６】
また、図１６のＧＵＩにおいて、ボタン２８６が指示されたことを検知すると、処理をステップＳ２００，Ｓ２０５、Ｓ２１０，Ｓ２１４，Ｓ２１８，Ｓ２２２，Ｓ２２６を介してステップＳ２７０に進める。ステップＳ２７０では、領域２７０内で選択されているサムネイルのオリジナル画像および外部記憶装置３００６に取得済みの画像からマーカを検出し、検出したマーカのマーカＩＤを識別する。続いて領域２７０内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置３００６に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【０１６７】
そして処理をステップＳ２７２に進め、領域２７０から現在選択されているサムネイルとオリジナルを外部記憶装置３００６から削除する処理を行う。そしてステップＳ２６２，Ｓ２４６における処理を行った後に、処理をステップＳ２００に戻す。
【０１６８】
これらの処理によって画像のを削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除し、キャリブレーション対象から除外することが可能になる。また除外モードで取得された画像から検出されたマーカには「×」のアイコンが表示され、除外されているマーカがどれであるか理解が容易になる。
【０１６９】
また、図１６のＧＵＩにおいてチェックボックス２３２に対する指示を検知した場合に行う処理（ステップＳ２３０，Ｓ２３２，Ｓ２４６）はそれぞれ、図１３におけるステップＳ１３０，Ｓ１３２，Ｓ１４６と同じであるので、説明は省略する。
【０１７０】
一方、図１６のＧＵＩにおいてボタン２８８が指示されたことを検知すると、処理をステップＳ２００，Ｓ２０５，Ｓ２１０，Ｓ２１４，Ｓ２１８，Ｓ２２２，Ｓ２２６、Ｓ２３０、Ｓ２３４を介してステップＳ２３６に進める。ステップＳ２３６では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ＝１のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ＝１であるマーカ定義情報が２以上存在するか否かをチェックする。２以上存在する場合には処理をステップＳ２４０に進める。ステップＳ２４０では、基準マーカが２以上存在するが故にキャリブレーションができない旨の警告を表示部３００５の表示画面上に表示する。そして処理をステップＳ２５０に進める。ステップＳ２５０以降の処理については後述する。
【０１７１】
一方、基準マーカフラグ＝１であるマーカ定義情報が１つのみである場合には処理をステップＳ２３８に進める。ステップＳ２３８では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり且つ検出フラグ＝０となるマーカ定義情報、若しくは対象フラグ＝１且つ除外フラグ＝１となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップＳ２４０に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップＳ２５０に進める。ステップＳ２５０以降の処理については後述する。
【０１７２】
これらの処理により、キャリブレーション処理に失敗することを事前に軽減することが可能になる。特に手動で対象フラグを変更した場合に発生する問題を事前に回避することが可能になる。
【０１７３】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり且つ検出フラグ＝０となるマーカ定義情報、対象フラグ＝１且つ除外フラグ＝１となるマーカ定義情報の何れも存在しない場合には処理をステップＳ２４２に進める。ステップＳ２４２では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ＝１のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップＳ２４４に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「１」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「２」に設定する。そしてステップＳ２４６における処理を行い、その後、処理をステップＳ２００に戻す。
【０１７４】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図１６のＧＵＩにおいて「ファイル」メニュー２１０を指示した後、「マーカ定義ファイルを保存」メニュー２１６を指示する。この指示を検知すると、処理をステップＳ２００，Ｓ２０５，Ｓ２１０，Ｓ２１４，Ｓ２１８，Ｓ２２２，Ｓ２２６、Ｓ２３０、Ｓ２３４、Ｓ２５０を介してステップＳ２５２に進める。なお、ステップＳ２４０からステップＳ２５０に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー２１６の指示を検知していれば処理をステップＳ２５２に進めるし、検知していなければ処理をステップＳ２５４に進める。
【０１７５】
ステップＳ２５２では、現在開いているマーカ定義ファイルを外部記憶装置３００６に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス＝１かつ除外フラグ＝０のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、除外モードで取得したマーカ画像から検出されたマーカを使用せずに位置合わせ処理を行うことが可能になる。
【０１７６】
そして処理をステップＳ２５４に進める。ステップＳ２５４では、「終了」メニュー２１８が指示されたかをチェックし、指示されていない場合には処理をステップＳ２００に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【０１７７】
本実施形態では、除外モードという特別なモードで撮影を行うことによってマーカをキャリブレーションから除外することを実現する例について説明した。除外モードで除外したいマーカを撮影することで、キャリブレーションおよび位置合わせ処理から除外するマーカを指定することが可能となった。モードの変更はいつでも行うことができるので、除外モードに切り替え、除外するマーカを撮影することでキャリブレーションから除外するマーカの追加を容易に行うことが可能である。
【０１７８】
また、第１の実施形態と同様に、各処理においてマーカ状態に設定される値を変更することで、より操作者の好みや方針に応じた調整を行ってもよい。例えば、Ｓ２５４で除外フラグを０に設定しないようにすることで、一度除外モードで撮影されたマーカを位置姿勢計算対象にしないようにするようにしても良い。これは、予め除外したいマーカを撮影しておき、その後に位置姿勢計算対象とするマーカを撮影する使い方をする場合に有利である。
【０１７９】
また、このような変更を操作者の好みに応じてどちらにするか予め設定できるようにしてもよい。
【０１８０】
［第３の実施形態］
本実施形態では、現実空間中に同じマーカＩＤを有するマーカが配置されている場合に、これを検知し、キャリブレーション処理の対象外とする。なお、本実施形態は第１の実施形態に係る構成を前提としているが、本実施形態が第１の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第１の実施形態と同様のものであるとする。
【０１８１】
先ず、本実施形態で用いるマーカについては第１の実施形態と同様のものを用いる。また、取得した画像からのマーカ重複検出は、画像管理部１０６、指標管理部１０７、指標抽出部１０９、記憶部１１０が連携して実現するものとする。
【０１８２】
図１９は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第１の実施形態と同様、１つのマーカについて１つ存在するものであるが、本実施形態に係るマーカ定義情報は第１の実施形態に係るマーカ定義情報におけるマーカ状態に「重複フラグ」を加えた構成を有する。
【０１８３】
重複フラグとは、そのマーカが現実空間中に複数存在すると判断された場合に「１」となるフラグで、重複して存在すると判断されないマーカについては「０」となる。本実施形態では重複フラグの規定値は「０」とする。
【０１８４】
図２０は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。図２０に示したＧＵＩは、上記図６のＧＵＩにおける領域２３０内に新たに領域２３７が追加されている。領域２３７は、対応するマーカが現実空間中に複数存在する旨を示すアイコンを表示するためのもので、同図では、マーカＩＤ＝２のマーカが現実空間中に複数存在することが検知されている。即ち、重複フラグ＝１であればアイコンを表示し、重複フラグ＝０であればアイコンは表示しない。もちろん、重複フラグの値に応じて表示するアイコンは如何なるものであっても良く、重複フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【０１８５】
図２１，２２は、図２０に示したＧＵＩを用いて行う各種の処理のフローチャートである。図２０のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー２１４の指示を検知した場合に行う処理（ステップＳ３００、Ｓ３０１、Ｓ３０２、Ｓ３０８、Ｓ３４６）はそれぞれ、図１２におけるステップＳ１００，Ｓ１０１，Ｓ１０２，Ｓ１０８，Ｓ１４６と同じであるので、説明は省略する。
【０１８６】
また、図２０のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを開く」メニュー２１２の指示を検知した場合における処理（ステップＳ３０５，Ｓ３０６，Ｓ３０７，Ｓ３０８，Ｓ３４６）はそれぞれ、図１２におけるステップＳ１０５，Ｓ１０６，Ｓ１０７，Ｓ１０８，Ｓ１４６と同様であるが、ステップＳ３０７では、検出フラグ、対象フラグに加え、重複フラグについても０に初期化する。
【０１８７】
また、図２０のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の新規作成」メニュー２２２の指示を検知すると、処理をステップＳ３００，Ｓ３０５，Ｓ３１０を介してステップＳ３１２に進める。ステップＳ３１２では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を１つ追加する。追加したマーカ定義情報においてマーカＩＤは、同じファイル内に存在するマーカ定義情報が使用しているマーカＩＤと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、重複フラグ、完了ステータスは全て０に初期化される加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップＳ３４６における処理を行った後、処理をステップＳ３００に戻す。
【０１８８】
また、図２０のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の削除」メニュー２２４の指示を検知した場合に行う処理（ステップＳ３１４，Ｓ３１６，Ｓ３４６）はそれぞれ、図１２におけるステップＳ１１４，Ｓ１１６，Ｓ１４６と同じであるので、説明は省略する。
【０１８９】
また、図１６のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の編集」メニュー２２６の指示を検知した場合に行う処理（ステップＳ３１８，Ｓ３２０，Ｓ３２１、Ｓ３４６、Ｓ３４０）はそれぞれ、図１２におけるステップＳ１１８，Ｓ１２０，Ｓ１２１，Ｓ１４６、図１３におけるステップＳ１４０と同じであるので、説明は省略する。
【０１９０】
また、図２０のＧＵＩにおいて、ボタン２８２が既に指示されている状態、即ち、Ｉ／Ｆ３００７を介して外部記憶装置３００６に現実空間の動画像を取得している状態で、ボタン２８４の指示を検知すると、処理をステップＳ３００，Ｓ３０５，Ｓ３１０，Ｓ３１４，Ｓ３１８，Ｓ３２２を介してステップＳ３２３に進める。ステップＳ３２３では、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像から、この画像中に写っているマーカの検出およびマーカＩＤの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の対象フラグ、検出フラグを共に１に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては検出した旨、及び位置姿勢の計算対象とする旨を、このマーカのマーカ定義情報に記録する。
【０１９１】
一方、ステップＳ３２３において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカＩＤは画像から識別したマーカＩＤを割り当て、対象フラグ、検出フラグは共に１に設定する。
【０１９２】
次に、ステップＳ３２４では、同じ画像から識別したマーカＩＤ同士を比較し、同じマーカＩＤが２以上存在する、即ち、１枚の画像中に同じマーカＩＤを有するマーカが２以上存在するか否かをチェックする。このチェックの結果、２以上存在する場合には場合には処理をステップＳ３２５に進め、重複しているマーカＩＤを有するマーカ定義情報中の重複フラグを１に設定する。そして処理をステップＳ３２６に進める。
【０１９３】
一方、このチェックの結果、２以上存在しない場合には処理をステップＳ３２６に進める。ステップＳ３２６では、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像のサムネイルを領域２７０内に追加表示する。そしてステップＳ３３０では、領域２３０内の各マーカについての領域２３７の表示を更新するのであるが、上述の通り、重複フラグ＝１の領域２３７についてはアイコンを表示する。なお、重複フラグ＝０の場合には領域２３７にはアイコンを表示しない。そしてステップＳ３４６の処理を行った後、処理をステップＳ３００に戻す。
【０１９４】
これらの処理により、自動的に検出されたマーカをキャリブレーション対象とすると同時に、重複したマーカをキャリブレーションから除外することが可能になる。
【０１９５】
また、図２０のＧＵＩにおいて、ボタン２８６が指示されたことを検知すると、処理をステップＳ３００，Ｓ３０５、Ｓ３１０，Ｓ３１４，Ｓ３１８，Ｓ３２２，Ｓ３２７を介してステップＳ３２８に進める。ステップＳ３２８では、領域２７０内で選択されているサムネイルのオリジナル画像および外部記憶装置３００６に取得済みの画像からマーカを検出し、検出したマーカのマーカＩＤを識別する。続いて領域２７０内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置３００６に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【０１９６】
そして処理をステップＳ３２９に進め、領域２７０から現在選択されているサムネイルとオリジナルを外部記憶装置３００６から削除する処理を行う。そしてステップＳ３３０，Ｓ３４６における処理を行った後に、処理をステップＳ３００に戻す。
【０１９７】
これらの処理によって画像の削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。また重複検出されたマーカにはアイコンが重畳され、重複しているマーカがどれであるか理解が容易になる。
【０１９８】
また、図２０のＧＵＩにおいてチェックボックス２３２に対する指示を検知した場合に行う処理（ステップＳ３３２，Ｓ３３３，Ｓ３４６）はそれぞれ、図１３におけるステップＳ１３０，Ｓ１３２，Ｓ１４６と同じであるので、説明は省略する。
【０１９９】
一方、図２０のＧＵＩにおいてボタン２８８が指示されたことを検知すると、処理をステップＳ３００，Ｓ３０５，Ｓ３１０，Ｓ３１４，Ｓ３１８，Ｓ３２２，Ｓ３２７、Ｓ３３２、Ｓ３３４を介してステップＳ３３６に進める。
【０２００】
ステップＳ３３６では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ＝１のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ＝１であるマーカ定義情報が２以上存在するか否かをチェックする。２以上存在する場合には処理をステップＳ３４０に進める。
【０２０１】
ステップＳ３４０では、基準マーカが２以上存在するが故にキャリブレーションができない旨の警告を表示部３００５の表示画面上に表示する。そして処理をステップＳ３５０に進める。ステップＳ３５０以降の処理については後述する。
【０２０２】
一方、基準マーカフラグ＝１であるマーカ定義情報が１つのみである場合には処理をステップＳ３３８に進める。ステップＳ３３８では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり且つ検出フラグ＝０となるマーカ定義情報、若しくは対象フラグ＝１且つ重複フラグ＝１となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップＳ３４０に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップＳ３５０に進める。ステップＳ３５０以降の処理については後述する。
【０２０３】
これらの処理により、キャリブレーション処理に失敗することを事前に軽減することが可能になる。特に手動で対象フラグを変更した場合に発生する問題を事前に回避することが可能になる。
【０２０４】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり且つ検出フラグ＝０となるマーカ定義情報、対象フラグ＝１且つ重複フラグ＝１となるマーカ定義情報の何れも存在しない場合には処理をステップＳ３４２に進める。ステップＳ３４２では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ＝１のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップＳ３４４に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「１」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「２」に設定する。そしてステップＳ３４６における処理を行い、その後、処理をステップＳ３００に戻す。
【０２０５】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図２０のＧＵＩにおいて「ファイル」メニュー２１０を指示した後、「マーカ定義ファイルを保存」メニュー２１６を指示する。この指示を検知すると、処理をステップＳ３００，Ｓ３０５，Ｓ３１０，Ｓ３１４，Ｓ３１８，Ｓ３２２，Ｓ３２７、Ｓ３３２、Ｓ３３４、Ｓ３５０を介してステップＳ３５２に進める。なお、ステップＳ３４０からステップＳ３５０に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー２１６の指示を検知していれば処理をステップＳ３５２に進めるし、検知していなければ処理をステップＳ３５４に進める。
【０２０６】
ステップＳ３５２では、現在開いているマーカ定義ファイルを外部記憶装置３００６に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス＝１のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、操作者が選択して位置姿勢を計算したマーカ利用して位置合わせ処理を行うことが可能になる。
【０２０７】
そして処理をステップＳ３５４に進める。ステップＳ３５４では、「終了」メニュー２１８が指示されたかをチェックし、指示されていない場合には処理をステップＳ３００に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【０２０８】
本実施形態では、同じマーカＩＤのマーカが２以上配置されていることを検知し、キャリブレーションから除外することを実現する例について説明した。重複と判断されたマーカは、マーカ定義情報を削除しない限り使用できるようにならないため、重複によるキャリブレーション失敗の可能性を軽減することが可能になる。
【０２０９】
第１の実施形態と同様に、各処理においてマーカ状態に設定される値を変更することで、より操作者の志向および方針に応じた調整を行ってもよい。また、このような変形を操作者の好みに応じてどちらにするか予め設定できるようにしてもよい。
【０２１０】
［第４の実施形態］
本実施形態は、第１の実施形態に係る構成に印刷機能を加え、マーカが印刷済みである、ということをキャリブレーション対象選択の要素とする例である。係る実施形態は、印刷する行為を、操作者がマーカを設置してキャリブレーションする意思がある、とみなす方針の時に有用である。
【０２１１】
なお、本実施形態は第１の実施形態に係る構成を前提としているが、本実施形態が第１の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第１の実施形態と同様のものであるとする。
【０２１２】
図２３は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。同図に示す如く、本実施形態に係る画像処理装置２３００は、図４に示した第１の実施形態に係る画像処理装置１００に指標生成部１２０を加えた構成を有すると共に、この指標生成部１２０には印刷部１２１が接続されている。
【０２１３】
指標生成部１２０は、指標管理部１０７が記憶部１１０から読み出したマーカ定義情報を受け、これを用いて図１に示したフォーマットに従って、マーカの画像を生成する。そして生成した画像に基づいて印刷データを生成する。生成した印刷データは印刷部１２１に送出される。印刷部１２１は、送出された印刷データを受け、これを紙などの記録媒体上に記録する処理を行う。従って印刷部１２１には、プリンタや複合機など、プリント機能を有する装置が適用される。
【０２１４】
なお、画像処理装置２３００において、指標生成部１２０以外の各部による動作については第１の実施形態と同様であるので、説明は省略する。
【０２１５】
図２４は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第１の実施形態と同様、１つのマーカについて１つ存在するものであるが、本実施形態に係るマーカ定義情報は第１の実施形態に係るマーカ定義情報におけるマーカ状態に「印刷フラグ」を加えた構成を有する。
【０２１６】
印刷フラグとは、マーカが印刷部１２１によって印刷されたか否かを示すフラグである。印刷されたマーカについては印刷フラグには「１」が設定され、未だ印刷されていないマーカについては印刷フラグには「０」が設定されている。印刷フラグの設定は指標生成部１２０が行うものとする。例えばマーカの印刷データを生成し、生成した印刷データを印刷部１２１に送出するのに伴い印刷フラグが１に設定されるようにしてもよい。本実施形態では、印刷フラグの規定値は「０」とする。
【０２１７】
図２５は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。図２５に示したＧＵＩは、上記図６のＧＵＩにおける領域２３０内に新たに領域２３９が追加されている。領域２３９は、対応するマーカが印刷済みのものである旨を示すアイコンを表示するためのもので、同図では、マーカＩＤ＝２のマーカが印刷済みであることを示している。即ち、印刷フラグ＝１であればアイコンを表示し、印刷フラグ＝０であればアイコンは表示しない。もちろん、印刷フラグの値に応じて表示するアイコンは如何なるものであっても良く、印刷フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【０２１８】
ここで、図２５に示したＧＵＩにおいて「編集」メニュー２２０を指示すると、表示部３００５の表示画面上には図２６に示す編集メニューが表示される。図２６に示した編集メニューは、図８に示した第１の実施形態に係る編集メニューに「マーカの印刷」メニュー２２８を加えたものである。この「マーカの印刷」メニュー２２８を指示すると、表示部３００５の表示画面上には図２７に示すようなウィンドウが表示される。
【０２１９】
同図のウィンドウにおいて５１０は、印刷するマーカのマーカＩＤを入力するための領域である。本画像処理装置２３００の操作者がこの領域５１０に印刷したいマーカのマーカＩＤを入力した後に、ＯＫボタン５２０を指示すると、指示されたマーカＩＤを有するマーカの印刷データが上記指標管理部１０７、指標生成部１２０により生成され、印刷部１２１により、この印刷データに従った印刷処理が行われる。これにより、指示されたマーカＩＤを有するマーカが紙などの記録媒体上に印刷される。
【０２２０】
なお、領域５１０内に予め表示される初期値は、領域２３０内に表示されているマーカＩＤの何れかであるとするが、使用可能なマーカIDの範囲で自由に変更してもよい。
【０２２１】
図２８，２９は、図２５に示したＧＵＩを用いて行う各種の処理のフローチャートである。図２５のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー２１４の指示を検知した場合に行う処理（ステップＳ４００、Ｓ４０１、Ｓ４０２、Ｓ４０８、Ｓ４４６）はそれぞれ、図１２におけるステップＳ１００，Ｓ１０１，Ｓ１０２，Ｓ１０８，Ｓ１４６と同じであるので、説明は省略する。
【０２２２】
また、図２５のＧＵＩにおいて「ファイル」メニュー２１０の指示を検知した後、「マーカ定義ファイルを開く」メニュー２１２の指示を検知した場合における処理（ステップＳ４０５，Ｓ４０６，Ｓ４０７，Ｓ４０８，Ｓ４４６）はそれぞれ、図１２におけるステップＳ１０５，Ｓ１０６，Ｓ１０７，Ｓ１０８，Ｓ１４６と同様であるが、ステップＳ４０７では、検出フラグ、対象フラグに加え、印刷フラグについても０に初期化する。
【０２２３】
また、図２５のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の新規作成」メニュー２２２の指示を検知すると、処理をステップＳ４００，Ｓ４０５，Ｓ４１０を介してステップＳ４１２に進める。ステップＳ４１２では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を１つ追加する。追加したマーカ定義情報においてマーカＩＤは、同じファイル内に存在するマーカ定義情報が使用しているマーカＩＤと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、印刷フラグ、完了ステータスは全て０に初期化される。加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップＳ４４６における処理を行った後、処理をステップＳ４００に戻す。
【０２２４】
また、図２５のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の削除」メニュー２２４の指示を検知した場合に行う処理（ステップＳ４１４，Ｓ４１６，Ｓ４４６）はそれぞれ、図１２におけるステップＳ１１４，Ｓ１１６，Ｓ１４６と同じであるので、説明は省略する。
【０２２５】
また、図２５のＧＵＩにおいて「編集」メニュー２２０の指示を検知した後、「マーカ定義情報の編集」メニュー２２６の指示を検知した場合に行う処理（ステップＳ４１８，Ｓ４２０，Ｓ４２１、Ｓ４４６、Ｓ４４０）はそれぞれ、図１２におけるステップＳ１１８，Ｓ１２０，Ｓ１２１，Ｓ１４６、図１３におけるステップＳ１４０と同じであるので、説明は省略する。
【０２２６】
また、図２５のＧＵＩにおいて、「編集」メニュー２２０の指示を検知した後、「マーカの印刷」メニュー２２８の指示を検知した場合には処理をステップＳ４００，Ｓ４０５，Ｓ４１０，Ｓ４１４，Ｓ４１８，Ｓ４６０を介してステップＳ４６２に進め、先ず、表示部３００５の表示画面上に図２７に示すウィンドウを表示する。本コンピュータの操作者はこのウィンドウにおける領域５１０に印刷対象のマーカのマーカＩＤを入力し、その後、ＯＫボタン５２０を指示する。従って、ステップＳ４６２ではＯＫボタン５２０の指示を検知すると、この入力されたマーカＩＤを取得する。そして、取得したマーカＩＤが、現在開いているマーカ定義ファイル内に登録されたものであるか（領域２３０内に表示されているものであるか）をチェックする。
【０２２７】
このチェックの結果、存在しない場合には処理をステップＳ４６４に進め、取得したマーカＩＤを有するマーカ定義情報を新規作成し、現在開いているマーカ定義ファイルに追加登録する。このステップＳ４６４における処理は、上記ステップＳ４１２における処理と同様にして行う。そして処理をステップＳ４６６に進める。
【０２２８】
一方、ステップＳ４６２におけるチェックの結果、存在する場合には処理をステップＳ４６６に進め、領域５１０に入力されたマーカＩＤを有するマーカ定義情報に基づいて、このマーカの画像の印刷データを作成する。即ち、図１に示したフォーマットに従って、このマーカ定義情報中のマーカＩＤを表現したマーカの画像を作成し、その後、画像の印刷データを作成する。そして、作成した印刷データを印刷部１２１に送出する。この本実施形態の場合、印刷部１２１は、本コンピュータにおけるＩ／Ｆ３００７に接続されているので、印刷データはこのＩ／Ｆ３００７を介して印刷部１２１に送出される。これにより、領域５１０に入力したマーカＩＤを有するマーカが印刷部１２１により、紙などの記録媒体上に印刷されることになる。
【０２２９】
なお、ステップＳ４６４からステップＳ４６６に処理を移行した場合には、ステップＳ４６６では、新規作成したマーカ定義情報に基づいて、このマーカの画像の印刷データを作成する。そして、作成した印刷データを印刷部１２１に送出する。
【０２３０】
そして処理をステップＳ４６８に進め、印刷したマーカのマーカ定義情報中の対象フラグ、印刷フラグを共に１に設定する。そしてステップＳ４４６における処理を行った後、処理をステップＳ４００に戻す。
【０２３１】
これら印刷したマーカを自動的にキャリブレーション対象に含める処理により、キャリブレーションするマーカを選択するための要素として、マーカの印刷履歴を使用することが可能になる。
【０２３２】
また、印刷したマーカのマーカ定義情報を自動的にマーカ定義情報テーブルに追加することで、操作者の作業を軽減することが可能になる。
【０２３３】
また、図２５のＧＵＩにおいて、ボタン２８２が既に指示されている状態、即ち、Ｉ／Ｆ３００７を介して外部記憶装置３００６に現実空間の動画像を取得している状態で、ボタン２８４の指示を検知すると、処理をステップＳ４００，Ｓ４０５，Ｓ４１０，Ｓ４１４，Ｓ４１８，Ｓ４６０，Ｓ４２２を介してステップＳ４２４に進める。
【０２３４】
ステップＳ４２４では、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像から、この画像中に写っているマーカの検出およびマーカＩＤの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の検出フラグを１に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては検出した旨を、このマーカのマーカ定義情報に記録する。
【０２３５】
一方、ステップＳ４２４において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカＩＤと同じマーカＩＤを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカＩＤは画像から識別したマーカＩＤを割り当て、検出フラグは１に設定する。
【０２３６】
そして処理をステップＳ４２５に進め、ボタン２８４を指示したタイミング近傍で外部記憶装置３００６に取得した画像のサムネイルを領域２７０内に追加表示する。そしてステップＳ４４６における処理を行った後に、処理をステップＳ４００に戻す。
【０２３７】
一方、図２５のＧＵＩにおいて、ボタン２８６が指示されたことを検知すると、処理をステップＳ４００，Ｓ４０５、Ｓ４１０，Ｓ４１４，Ｓ４１８，Ｓ４６０，Ｓ４２２，Ｓ４２７を介してステップＳ４２８に進める。
【０２３８】
ステップＳ４２８では、領域２７０内で選択されているサムネイルのオリジナル画像および外部記憶装置３００６に取得済みの画像からマーカを検出し、検出したマーカのマーカＩＤを識別する。続いて領域２７０内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置３００６に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【０２３９】
そして処理をステップＳ４２９に進め、領域２７０から現在選択されているサムネイルとオリジナルを外部記憶装置３００６から削除を行う。そしてステップＳ４４６における処理を行った後に、処理をステップＳ４００に戻す。
【０２４０】
これらの処理によって画像の削除に伴って取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。
【０２４１】
また、図２５のＧＵＩにおいてチェックボックス２３２に対する指示を検知した場合に行う処理（ステップＳ４３２，Ｓ４３３，Ｓ４４６）はそれぞれ、図１３におけるステップＳ１３０，Ｓ１３２，Ｓ１４６と同じであるので、説明は省略する。
【０２４２】
一方、図２５のＧＵＩにおいてボタン２８８が指示されたことを検知すると、処理をステップＳ４００，Ｓ４０５、Ｓ４１０，Ｓ４１４，Ｓ４１８，Ｓ４６０，Ｓ４２２，Ｓ４２７、Ｓ４３２，Ｓ４３４を介してステップＳ４３６に進める。
【０２４３】
ステップＳ４３６では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ＝１のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ＝１であるマーカ定義情報が２以上存在するか否かをチェックする。２以上存在する場合には処理をステップＳ４４０に進める。
【０２４４】
ステップＳ４４０では、基準マーカが２以上存在するが故にキャリブレーションができない旨の警告を表示部３００５の表示画面上に表示する。そして処理をステップＳ４５０に進める。ステップＳ４５０以降の処理については後述する。
【０２４５】
一方、基準マーカフラグ＝１であるマーカ定義情報が１つのみである場合には処理をステップＳ４３８に進める。ステップＳ４３８では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり且つ検出フラグ＝０となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップＳ４４０に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップＳ４５０に進める。ステップＳ４５０以降の処理については後述する。
【０２４６】
この処理により、検出されてないマーカがキャリブレーション対象となっている間違いを回避し、検出するために画像を取得するよう操作者に促すことが可能になる。
【０２４７】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝１であり且つ検出フラグ＝０となるマーカ定義情報が存在しない場合には処理をステップＳ４３９に進める。
【０２４８】
ステップＳ４３９では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝０且つ印刷フラグ＝１となるマーカ定義情報が存在するか否かをチェックする。このチェックの結果、存在する場合には処理をステップＳ４４１に進める。
【０２４９】
ステップＳ４４１では、印刷したのにもかかわらずキャリブレーション対象にしないのは不自然と判断し、表示部３００５の表示画面上に警告表示を行うと共に、再度キャリブレーション処理を中止するか否かを促すためのＧＵＩを表示部３００５の表示画面上に表示する。この処理により、印刷し、配置したにもかかわらず、操作者が手動でキャリブレーション対象から除外した間違いを回避し、印刷したマーカをキャリブレーションするよう操作者に促すことが可能になる。
【０２５０】
このＧＵＩに対する操作の結果、計算を中断する旨の指示が入力された場合には処理をステップＳ４５０に進める。一方、計算を続行する旨の指示が入力された場合には処理をステップＳ４４２に進める。
【０２５１】
一方、上記ステップＳ４３９におけるチェックの結果、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ＝０且つ印刷フラグ＝１となるマーカ定義情報が存在しない場合には処理をステップＳ４４２に進める。
【０２５２】
ステップＳ４４２では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ＝１のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップＳ４４４に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「１」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「２」に設定する。そしてステップＳ４４６における処理を行い、その後、処理をステップＳ４００に戻す。
【０２５３】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図２５のＧＵＩにおいて「ファイル」メニュー２１０を指示した後、「マーカ定義ファイルを保存」メニュー２１６を指示する。この指示を検知すると、処理をステップＳ４００，Ｓ４０５，Ｓ４１０，Ｓ４１４，Ｓ４１８，Ｓ４６０，Ｓ４２２、Ｓ４２７、Ｓ４３２，Ｓ４３４、Ｓ４５０を介してステップＳ４５２に進める。なお、ステップＳ４４０やステップＳ４４１からステップＳ４５０に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー２１６の指示を検知していれば処理をステップＳ４５２に進めるし、検知していなければ処理をステップＳ４５４に進める。
【０２５４】
ステップＳ４５２では、現在開いているマーカ定義ファイルを外部記憶装置３００６に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス＝１のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、操作者が選択して位置姿勢を計算したマーカ利用して位置合わせ処理を行うことが可能になる。
【０２５５】
そして処理をステップＳ４５４に進める。ステップＳ４５４では、「終了」メニュー２１８が指示されたかをチェックし、指示されていない場合には処理をステップＳ４００に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【０２５６】
本実施形態では、第１の実施形態にマーカ印刷機能を加え、マーカが印刷済みであることをキャリブレーション対象選択の要素とする例について説明した。係る構成によれば、印刷したマーカのうち画像から検出されてないマーカが存在した場合、警告し、印刷したマーカをキャリブレーション可能なように操作者を誘導することが可能になる。
【０２５７】
また、印刷したマーカをキャリブレーション対象から除外したいときには、キャリブレーション対象チェックボックス２３２への簡単な操作でそれを実現することができる。
【０２５８】
このような操作者の手動による選択方法と、マーカ印刷時点で、印刷されたマーカをキャリブレーション対象に自動的に加える（ステップＳ４６８における処理）ことを併用することで、柔軟かつ使い易い手法を提供することが可能となった。
【０２５９】
さらには上記の選択方法に加えて、ステップＳ４３６、Ｓ４３８、Ｓ４３９の処理のようにマーカ定義情報に応じてキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者が行う位置合わせのための設定作業の負荷を軽くすることが可能になった。
【０２６０】
なお、マーカ定義ファイルを開く処理であるステップＳ４０７において、読み込むマーカ定義情報の印刷フラグを０にしていたが、これを１にして印刷履歴を保存するようにしてもよい。これによって、操作者が印刷履歴をマーカ定義ファイルで管理することが可能になる。
【０２６１】
また、マーカ印刷処理であるステップＳ４６８において、印刷したマーカの対象フラグを１としたがこれを０とし、かつステップＳ４３９、Ｓ４４１を処理フローから削除してもよい。これは、操作者が印刷フラグを確認し、手動でキャリブレーション対象を選択する方針で運用する場合に有効である。
【０２６２】
また、画像取得処理であるステップＳ４２４において、検出したマーカの対象フラグを１としてもよい。これは検出したマーカもキャリブレーション対象にする方針の場合に有効である。
【０２６３】
また、画像取得処理であるステップＳ４２４において、検出したマーカの印刷フラグを１にしてもよい。これは検出したマーカは全て空間に設置された印刷済みのマーカと判断する方針の場合に有効である。
【０２６４】
また、画像取得処理であるステップＳ４２４において、検出したマーカの対象フラグを１、印刷フラグを１にしてもよい。これは検出したマーカは全て空間に設置された印刷済みのマーカと判断し、かつ印刷済みマーカをキャリブレーション対象にする方針の場合に有効である。
【０２６５】
また、図２７に示したウィンドウにおける領域５１０に入力するマーカＩＤは１つのみに限定するものではなく、例えば、カンマで区切った複数のマーカＩＤや、ハイフンでつなげた範囲のマーカＩＤを入力するようにしても良い。これにより操作者の操作を軽減することが可能になる。
【０２６６】
また、操作者が指定した数だけ、自動的にマーカ定義情報の新規作成とマーカの印刷を行う処理を追加してもよい。このような処理によって、多数のマーカを新規に印刷して使用する場合、操作者の作業を軽減することが可能になる。
【０２６７】
また、本実施形態では、印刷済み／未印刷の２通りでしか管理していないが、印刷した回数や時間をマーカ定義情報に加え、印刷履歴によって処理を変更してもよい。例えば、複数回印刷されたマーカは重複する可能性が高いと判断し、マーカキャリブレーション対象から除外するようにしてもよい。
【０２６８】
また、以上説明した変形例を組み合わせてもよいことは言うまでもない。
【０２６９】
例えば、画像取得時に検出したマーカの印刷フラグを１にすることと、指定した数だけ自動的にマーカ定義情報テーブルに存在しないマーカＩＤのマーカの印刷をするような処理を組み合わせてもよい。
【０２７０】
このように処理する場合、使用するマーカＩＤを決定し、印刷する前に、予め現実空間に設置されているすべてのマーカの画像を取得し、印刷から除外する。そして除外したマーカ以外の指定した数のマーカを新規に自動生成するという運用も可能になる。
【０２７１】
これはキャリブレーションおよび位置合わせ処理を行う複数のシステムを隣接した空間で使用する場合、重複したマーカを使用しないように（マーカを排他的に使用するように）する場合に有効である。
【０２７２】
以上説明してきた変形を操作者の好みに応じてどちらにするかを予め設定できるようにしても構わない。
【０２７３】
［第５の実施形態］
上記第１乃至４の実施形態では、画像中に存在するマーカはすべて同等に扱っていた。しかし、これに限定されず、画像中のマーカがどれだけキャリブレーションのためのデータとして信頼できるかを、信頼度として求め、信頼度に応じて（評価して）キャリブレーション対象や処理を変更してもよい。
マーカの信頼度の例としては、
（１）  取得した画像群における指標の出現頻度
（２）  取得した画像における指標と画像取得装置とのなす角度
（３）  取得した画像における指標の画像上の面積
（４）  取得した画像のコントラスト
（５）  取得した画像における指標の画像上の位置
及び、これらの組み合わせを使用すればよい。
【０２７４】
（１）は、出現頻度が極端に少ないものはマーカ以外のものを誤認識したノイズと考え信頼度を低いとする方針の時に使用する。
【０２７５】
（２）は、角度が小さくなると画像認識によるマーカの位置姿勢計算精度が落ちるため、角度が小さいものを信頼度が低いとする方針の時に使用する。
【０２７６】
（３）は、指標の画像上の面積が小さいほど、マーカの位置姿勢計算精度が落ちるため、面積が小さいものを信頼度が低いとする方針の時に使用する。
【０２７７】
（４）は、コントラストが低いほど、画像からのマーカ検出誤差が大きくなるため、コントラストが低い画像から検出したマーカを信頼度が低いとする方針の時に使用する。
【０２７８】
（５）は、画像上の位置が画像の端によるほど、画像取得装置の光学的な歪の影響を受けやすいため、画像の端に位置している指標を信頼度が低いとする方針の時に使用する。
【０２７９】
なお言うまでもなく、以上の例を組み合わせて信頼度を決定してもよい。また、キャリブレーション対象および位置合わせ処理対象となるマーカを選択する条件は、以上説明したことに限定されず、マーカに関するすべての付帯情報を利用してよい。
【０２８０】
そして以上の各実施形態によれば、以下のような効果を奏することができる。即ち、任意のマーカや、重複したマーカをキャリブレーションや位置合わせ処理から除外すること、また再度処理に加えるための一連の作業が容易になる。また、除外するマーカ以外を全て再撮影したり、除外するマーカを空間から除去する必要はなくなり、キャリブレーションおよび位置合わせ処理のための設定作業の工数を削減したりすることが可能となる。
【０２８１】
選択の方法も操作者の手動による方法と、画像処理装置が保持しているマーカ定義情報から半自動的に行う方法を併用することで、柔軟かつ使い易い手法を提供することができる。
【０２８２】
さらには上記の選択方法に加えて、マーカ定義情報に応じて画像処理装置がキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者の設定作業の負荷を軽くすることができる。
【０２８３】
［第６の実施形態］
上記各実施形態では指標の一例としてマーカを用いた。しかし、位置合わせに利用する指標は、マーカに限定するものではなく、他にも例えば、自然特徴であっても良い。
【０２８４】
図３１は、現実物体としての家を撮影した場合に得られる画像の一例を示す図である。例えば、図３１に示すような現実空間の画像を撮影した場合に、その画像中のコーナー（図３１において「×」で示した３カ所のコーナー）等を自然特徴（特徴点）として用いることができる。また、これ以外にも画像中のSIFT特徴を特徴点として用いても良い。
【０２８５】
自然特徴を利用した場合、第２，３の実施形態の応用として、類似した自然特徴が現実空間中に数多く存在すると判断された場合（予め定められた数よりも多い場合）、その自然特徴に対する重複フラグを「１」とする。そして、係る特徴点を、キャリブレーションや位置合わせ処理から除外する。
【０２８６】
図３２（ａ）〜（ｃ）は、類似した自然特徴が現実空間中に数多く存在する場合に、この現実空間を撮影することで得られる画像の一例を示す図である。図３２（ａ）〜（ｃ）に示した画像中では、×で表される自然特徴が頻発しており、例えばこの自然特徴に対して重複フラグを「１」と設定し、取り除く。
【０２８７】
図３３（ａ）〜（ｃ）はそれぞれ、図３２（ａ）〜（ｃ）に示した自然特徴から、重複フラグを「１」と設定した自然特徴を取り除いた場合における画像を示している図である。
【０２８８】
これにより、類似した自然特徴を除いたものを対象としたキャリブレーションや位置合わせ処理を行うことができる。
【０２８９】
また、第５の実施形態の応用として、類似した特徴の数を信頼度として用いてもよい。例えば、１枚の画像中に存在する全特徴、あるいは全画像中に存在する全特徴に関して、１／（類似した特徴の数）を求め、これを信頼度として用いてもよい。この場合、値が「１」となるときは、信頼度が最も高く、値が０に近づけば近づくほど信頼度が低いと判断される。そして、信頼度の閾値を設定し、設定された閾値よりも信頼度が低い特徴は、キャリブレーションや位置合わせ処理から除外する。
【０２９０】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０２９１】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２９２】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２９３】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０２９４】
【図１】本発明の第１の実施形態で用いるマーカの構成例（フォーマット例）を示す図である。
【図２】図１に示したフォーマットに従って作成された実際のマーカの一例を示す図である。
【図３】マーカ座標系を示す図である。
【図４】本発明の第１の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図５】それぞれのマーカに対するマーカ定義情報を登録したテーブル（マーカ定義情報テーブル）の構成例を示すブロック図である。
【図６】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。
【図７】ファイルメニューの表示例を示す図である。
【図８】編集メニューの表示例を示す図である。
【図９】ウィンドウの表示例を示す図である。
【図１０】ウィンドウの表示例を示す図である。
【図１１】ウィンドウの表示例を示す図である。
【図１２】図６に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図１３】図６に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図１４】モードメニューの表示例を示す図である。
【図１５】本発明の第２の実施形態に係るマーカ定義情報の構成例を示す図である。
【図１６】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。
【図１７】図１６に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図１８】図１６に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図１９】本発明の第３の実施形態に係るマーカ定義情報の構成例を示す図である。
【図２０】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。
【図２１】図２０に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図２２】図２０に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図２３】本発明の第４の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図２４】本発明の第４の実施形態に係るマーカ定義情報の構成例を示す図である。
【図２５】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるＧＵＩ（グラフィカルユーザインターフェース）の表示例を示す図である。
【図２６】編集メニューの表示例を示す図である。
【図２７】ウィンドウの表示例を示す図である。
【図２８】図２５に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図２９】図２５に示したＧＵＩを用いて行う各種の処理のフローチャートである。
【図３０】画像処理装置１００に適用可能なコンピュータのハードウェア構成を示すブロック図である。
【図３１】現実物体としての家を撮影した場合に得られる画像の一例を示す図である。
【図３２】（ａ）〜（ｃ）は、類似した自然特徴が現実空間中に数多く存在する場合に、この現実空間を撮影することで得られる画像の一例を示す図である。
【図３３】（ａ）〜（ｃ）はそれぞれ、図３２（ａ）〜（ｃ）に示した自然特徴から、重複フラグを「１」と設定した自然特徴を取り除いた場合における画像を示している図である。
【図１】
0005517397.tif 000002
【図２】
0005517397.tif 000003
【図３】
0005517397.tif 000004
【図４】
0005517397.tif 000005
【図５】
0005517397.tif 000006
【図６】
0005517397.tif 000007
【図７】
0005517397.tif 000008
【図８】
0005517397.tif 000009
【図９】
0005517397.tif 000010
【図１０】
0005517397.tif 000011
【図１１】
0005517397.tif 000012
【図１２】
0005517397.tif 000013
【図１３】
0005517397.tif 000014
【図１４】
0005517397.tif 000015
【図１５】
0005517397.tif 000016
【図１６】
0005517397.tif 000017
【図１７】
0005517397.tif 000018
【図１８】
0005517397.tif 000019
【図１９】
0005517397.tif 000020
【図２０】
0005517397.tif 000021
【図２１】
0005517397.tif 000022
【図２２】
0005517397.tif 000023
【図２３】
0005517397.tif 000024
【図２４】
0005517397.tif 000025
【図２５】
0005517397.tif 000026
【図２６】
0005517397.tif 000027
【図２７】
0005517397.tif 000028
【図２８】
0005517397.tif 000029
【図２９】
0005517397.tif 000030
【図３０】
0005517397.tif 000031
【図３１】
0005517397.tif 000032
【図３２】
0005517397.tif 000033
【図３３】
0005517397.tif 000034