画像処理方法、画像処理装置
【課題】 自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用する指標を選択する為の技術を提供すること。
【解決手段】 複数の指標が配された現実空間の画像中の指標を識別し、識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する(S142)。
【解決手段】 複数の指標が配された現実空間の画像中の指標を識別し、識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する(S142)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、現実空間に存在する指標の位置姿勢を求める技術に関するものである。
【背景技術】
【0002】
高品質な複合現実感を提供するための重要な技術の一つとして、現実空間と仮想空間との位置合わせ技術がある。位置合わせ技術としては従来から様々な手法が提案されているが、それらの中でも指標を撮影した画像(指標画像)からカメラの位置姿勢を計算(キャリブレーション)する方法がコストや使い勝手の点から広く利用されている。
【0003】
これらの手法の多くは、空間におけるすべての指標の位置や姿勢が既知であることを前提としており、指標の位置や姿勢を予め測定し、入力する作業が必要となる。指標には、人為的マーカ(以後、マーカ)や自然特徴が一般的に用いられている。マーカを用いた場合には、配置するマーカの数が多くなればなるほど、人が手作業で測定を行うことは非現実的な作業となる。
【0004】
位置合わせ処理を可能とする空間の範囲を広げるためには、多数のマーカを広範囲に設置することが必要となる。従ってこれら多数の広範囲に設置されたマーカの位置姿勢を効率よくかつ高精度に測定する手段が求められている。
【0005】
近年、マーカを撮影した画像から、マーカ同士の相対位置姿勢をキャリブレーションする方法が提案されている(非特許文献1参照)。
【0006】
この方法によって全てのマーカ同士の相対位置姿勢を求めた後、任意のマーカの世界座標系における位置姿勢を決定すれば、世界座標系におけるすべてのマーカの位置姿勢を求めることが可能となった。
【0007】
この方法における位置合わせ処理に必要な作業およびキャリブレーション処理の概要は以下のとおりである。
【0008】
(1.1) マーカを作成し、位置合わせ処理を行う空間内に設置する。
【0009】
(1.2) 世界座標系における位置姿勢が決定されているマーカ(基準マーカ)の位置姿勢を入力する。
【0010】
(1.3) マーカを撮影する。
【0011】
(1.4) キャリブレーションを行う。
【0012】
(ア) 複数のマーカが含まれる画像から、ある1つのマーカとカメラとの相対位置姿勢を計算する。
【0013】
(イ) 別のマーカとカメラとの相対位置姿勢を計算する。
【0014】
(ウ) 2つのマーカ間の相対位置姿勢を計算する。
【0015】
(エ) これをすべての複数のマーカが含まれる画像について行い、すべてのマーカ間の相対位置姿勢を計算する。
【0016】
(オ) 基準マーカから、基準マーカ以外のすべてのマーカ(相対マーカ)の絶対位置姿勢を計算する。
【0017】
(1.5) キャリブレーションにより位置姿勢が求められたマーカを使用して位置合わせ処理を行う。
【0018】
一般的な自然特徴を用いた位置合わせは、自然特徴データベースの作成、及び自然特徴データベースを用いたカメラの位置姿勢の推定、といった2つの工程から構成される(非特許文献2)。自然特徴データベースの作成は、マーカのキャリブレーションと同様に、現実空間を撮影することで得られる多数の画像を用いて行われる。自然特徴を用いた位置合わせ処理に必要な作業の概要は以下のとおりである。
【0019】
(2.1) 現実空間の画像を複数撮影する。
【0020】
(2.2) 画像から特徴を抽出する。
【0021】
(2.3) ある特徴の位置を、複数の画像から求める。
【0022】
(ア) 複数の画像間で、特徴の対応を行う。
【0023】
(イ) 複数の画像間の相対位置姿勢を、上記対応に基づいて求める。
【0024】
(ウ) 上記相対位置姿勢に基づいて、特徴の三次元位置を求める。
【0025】
(エ) 全ての抽出された特徴に対してこれを実施する。
【0026】
(2.4) 上記で作成された自然特徴データベースを使用して、カメラの位置姿勢を推定し、位置合わせを行う。
【非特許文献1】小竹, 内山, 山本:マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法, 日本バーチャルリアリティ学会論文誌, vol.10, No.3, pp.401-410, 2005.
【非特許文献2】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
【発明の開示】
【発明が解決しようとする課題】
【0027】
既存の手法では、マーカを利用した場合には、上記(1.3)の作業において撮影されたマーカ全てを上記(1.4)でキャリブレーションし、上記(1.5)の位置合わせ処理で使用していた。
【0028】
使用するマーカの数が増えるほど、位置合わせの精度は向上するが、位置合わせ処理およびキャリブレーション処理の負荷が増大するため、使用するマーカの数は少ないほうが望ましい。操作者が、撮影時点で必要なマーカだけを撮影するように注意することで、ある程度マーカの数を少なくすることは可能である。しかし、これには操作者の経験と技術が必要となる。そのため実際には上記(1.1)〜(1.5)の作業を繰り返し行い、最適なマーカの配置と数を体験的に決定することが行われている。
【0029】
この時、既存の手法では、任意のマーカをキャリブレーションや位置合わせ処理から除外する場合には、取得した画像の全てあるいは一部を破棄し、マーカが取得画像に含まれないようにしてから再度キャリブレーションを行っていた。もしくはマーカを空間から除去した後、再度画像を取得し、キャリブレーションを行っていた。
【0030】
また、キャリブレーションおよび位置合わせ処理を行う複数の画像処理装置を隣接した空間で使用する場合、(1.1)の作業において自分の画像処理装置が使用するために設置したマーカ以外に、隣接した画像処理装置が使用するために設置したマーカを偶然撮影する可能性が高くなる。この場合、不要な位置合わせ処理およびキャリブレーション処理が発生してしまう。
【0031】
さらに、自分の画像処理装置が使用するために配置したマーカのマーカIDと、隣接した画像処理装置が使用するために配置されているマーカのマーカIDが重複する可能性が存在する。この場合、キャリブレーションおよび位置合わせ処理が正しく動作しなくなってしまう。
【0032】
マーカIDの重複は、例えば(1.1)の作業において予備用として作成したマーカを不注意にキャリブレーションおよび位置合わせ処理を行う空間に放置したのを偶然撮影してしまうことでも発生する。また、マーカIDの重複は画像処理によるマーカの誤認識によっても発生する。
【0033】
マーカの誤認識はマーカに類似した被写体の撮影、マーカを撮影する装置の露出・絞り等のパラメータ、撮影環境における光の状況などの外乱により発生し、画像処理装置の操作者が十分注意しても発生しないようにすることは困難であった。
【0034】
既存の手法では、重複したマーカをキャリブレーションや位置合わせ処理から除外するためには、取得した画像の全てあるいは一部を破棄した後、重複したマーカ以外の全てのマーカを再撮影していた。
【0035】
一方、自然特徴を利用した場合には、上記(2.2)の作業において抽出された特徴の位置を、上記(2.3)の処理で算出し、自然特徴データベースを作成し、上記(2.4)の位置合わせ処理で使用していた。
【0036】
既存の方法では、類似した特徴が数多く出現する可能性がある。この場合、自然特徴データベースの作成や、位置合わせ処理において、類似した特徴を同一の特徴として誤って対応付けることがあり、正しく動作しない危険性がある。
【0037】
本発明は以上の問題に鑑みてなされたものであり、自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用する指標を選択する為の技術を提供することを目的とする。
【0038】
また、本発明の別の目的は、マーカ定義情報に応じて、キャリブレーションの実行に必要な作業を操作者に通知することで、操作者が行う位置合わせのための設定作業の負荷を軽減することにある。
【課題を解決するための手段】
【0039】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【0040】
即ち、複数の指標が配された現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像中の指標を識別する識別工程と、
前記識別工程で識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算工程と
を備えることを特徴とする。
【0041】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【0042】
即ち、複数の指標が配された現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像中の指標を識別する識別手段と、
前記識別手段によって識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算手段と
を備えることを特徴とする。
【発明の効果】
【0043】
本発明の構成によれば、自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用するマーカを選択することができる。
【発明を実施するための最良の形態】
【0044】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【0045】
[第1の実施形態]
本実施形態では、マーカを指標の一例として用いた場合について説明する。
【0046】
図1は、本実施形態で用いるマーカの構成例(フォーマット例、パターン例)を示す図である。同図に示す如く、本実施形態で用いるマーカは、4×4の小正方形でもって構成されており、更に4×4の小正方形は、4隅(blk1〜blk3,wht)、c1〜c4、x1〜x8に分類される。また、各小正方形は白か黒の何れかで塗りつぶされており、塗りつぶされた色によってビット値「0」若しくはビット値「1」を表している。例えば白で塗りつぶされている小正方形はビット値「0」を表しているし、黒で塗りつぶされている小正方形はビット値「1」を表している。
【0047】
先ず、4隅の小正方形(blk1〜blk3,wht)について説明する。4隅の小正方形は何れか1つが白(wht)で、残り3つが黒(blk1〜3)である。これらはマーカ座標系を定義するために使用されるものである。マーカ座標系とは、マーカ毎に定義される座標系であって、より具体的にはblk1とblk2とを結ぶ線分の方向をx座標軸の正方向、blk3とblk2とを結ぶ線分の方向をy座標軸の正方向、マーカの法線方向をz座標軸の正方向、マーカの中心位置を原点とする座標系である。図3は、マーカ座標系を示す図である。マーカの世界座標系における位置は、世界座標系におけるマーカ座標系原点の位置で決定される。また、マーカの世界座標系における姿勢は、マーカ座標系が世界座標系を基準にどのように回転しているかによって決定される。
【0048】
このことから、このようなマーカを撮像するカメラとマーカとの相対位置姿勢は、マーカ画像におけるマーカの形状、辺の長さ、中心位置を用いて、周知の技術により求めることができる。
【0049】
次に、c1〜c4、x1〜x8について説明する。x1〜x8は、マーカ固有の識別子(マーカID)を表すためのものである。x1〜x8で8ビットを表現できるので、マーカIDは0〜255の値を取ることができる。c1〜c4は検査ビットであり、画像処理による情報ビットの誤認識が発生した場合の訂正に使用される。
【0050】
検査ビットの値は以下の式から求められる。
【0051】
c1=not(x1+x2+x3 +x5+x6 )
c2=not( x2+x3+x4 +x6+x7 )
c3=not( x3+x4+x5 +x7+x8)
c4=not(x1 +x4+x5+x6 +x8)
図2は、図1に示したフォーマットに従って作成された実際のマーカの一例を示す図である。上述の通り、各小正方形は白若しくは黒でもって塗りつぶされており、それぞれの小正方形は割り当てられた情報を表している。なお、マーカのサイズについては特に限定するものではないが、本実施形態では、現実空間中に配する全てのマーカの一辺の長さについては全て同じであるとする。
【0052】
次に、このようなマーカの位置姿勢を求める、本実施形態に係る画像処理装置について説明する。図4は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。
【0053】
同図において100は画像処理装置本体を示している。画像入力部101は、ディジタルカメラやハードディスク装置などの外部装置から供給される画像を取得する。ここで取得する画像は、図1〜3を用いて説明したマーカが複数配置された現実空間の画像である。画像入力部101は取得した画像を後段の画像取得部102に供給する。
【0054】
画像取得部102は、画像入力部101から受けた画像を、本装置が扱うことのできるフォーマットに変更する等、様々な前処理をこの画像に対して行う。処理済みの画像は後段の画像管理部106に送出する。
【0055】
画像管理部106は、画像取得部102から画像を受けると、これを記憶部110に格納する処理を行う。また、必要に応じて記憶部110に格納されている画像や、後述するマーカ定義情報を読み出し、指標管理部107や画像合成部111に送出する。
【0056】
記憶部110は、画像管理部106から受けた画像や、後述するマーカ定義情報を記憶するためのものである。
【0057】
ここで、マーカ定義情報とは、マーカに関する様々な情報の集まりで、マーカ毎に存在する。本実施形態では、マーカ定義情報は、マーカID、マーカ状態、マーカサイズ、マーカ位置姿勢により構成されている。マーカ定義情報は、例えば、図5に示すようなテーブル形式でもって記憶部110に格納されている。
【0058】
図5は、それぞれのマーカに対するマーカ定義情報を登録したテーブル(マーカ定義情報テーブル)の構成例を示すブロック図である。同図に示す如く、テーブルには、それぞれのマーカについて、「マーカID」、「マーカ状態」、「マーカサイズ」、「マーカの位置、姿勢」が登録されている。
【0059】
「マーカID」は上述の通り、マーカに記されたx1〜x8に対応するものである。即ち、マーカIDにはビット列x1〜x8が示す値が登録されている。
【0060】
「マーカ状態」は同図に示す如く、基準マーカフラグ、検出フラグ、対象フラグ、完了ステータスにより構成されている。
【0061】
基準マーカフラグとは、マーカが基準マーカであるのか否かを示すフラグである。基準マーカフラグが「1」であれば基準マーカであることを示し、「0」であれば基準マーカではない(換言すれば相対マーカである)ことを示している。同図ではマーカID=7のマーカのみが基準マーカフラグ=1であり、このマーカのみが基準マーカであることを示している。
【0062】
検出フラグとは、マーカが、画像取得部102から送出された画像から検出されたか否かを示すフラグである。検出フラグが「1」であれば検出されたことを示し、「0」であれば検出されなかったことを示す。同図では、マーカID=1,7,45,125のマーカが検出フラグ=1であり、マーカID=1,7,45,125のマーカが画像から検出されたことを示している。
【0063】
対象フラグとは、マーカが位置姿勢計算対象である(即ちキャリブレーション対象である)か否かを示すフラグである。対象フラグが「1」であれば、計算対象となることを示し、「0」であれば計算対象ではないことを示す。同図では、マーカID=1,7,45のマーカが対象フラグ=1であり、マーカID=1,7,45のマーカはキャリブレーション対象であることを示している。一方、マーカID=125のマーカは対象フラグ=0であり、キャリブレーション対象ではないことを示している。
【0064】
完了ステータスとは、マーカのキャリブレーションが実行されたか否かを示すフラグである。完了ステータスが「1」であれば、位置姿勢計算が実行されており、「0」であれば位置姿勢計算が実行されておらず、「2」であれば、位置姿勢計算を実行したが計算に失敗して正しく位置姿勢が求められていないことを示している。同図では、マーカID=1のマーカは完了ステータス=2であり、このマーカの位置姿勢は正しく求められていない。また、マーカID=7,45のマーカは完了ステータス=1であり、これらのマーカにこれらのマーカについては正しく位置姿勢が求められている。マーカID=125のマーカの完了ステータス=0であり、このマーカについては未だ位置姿勢計算が実行されていない。
【0065】
「マーカサイズ」は、マーカの一辺の長さを示している。上述の通り、本実施形態では、全てのマーカは一辺が同じ長さを有しているものとしている。同図では、マーカID=1,7,45,125のマーカは全て一辺が「40」となっている。
【0066】
「マーカの位置、姿勢」はそれぞれ、マーカの世界座標系における位置、姿勢を示している。ここでマーカの姿勢は回転軸ベクトルと回転角で表現されている。すなわち世界座標系とマーカ座標系の各軸を一致させた状態で、回転軸ベクトルを中心としてマーカ座標系を右に回転させた状態を表している。
【0067】
以上説明したテーブルのデータが記憶部110に登録されている。
【0068】
図4に戻って次に、指標管理部107は、記憶部110や画像管理部106から送出された情報を指標位置姿勢計算部108や指標抽出部109に送出する処理を行う。
【0069】
指標位置姿勢計算部108は、後述する処理により位置姿勢計算対象として特定されたマーカの世界座標系における位置姿勢を計算する処理を行う。指標抽出部109は、記憶部110から指標管理部107を介して受けた画像からマーカを検出する処理を行う。指標位置姿勢計算部108、指標抽出部109のそれぞれが求めた結果は指標管理部107に送出される。即ち、指標管理部107は、指標に係る様々な情報を管理している。
【0070】
画像合成部111は、画像取得部102から送出された画像上における各マーカのうち、後述する処理により位置姿勢計算対象として特定されたマーカについて、マーカIDなどのマーカ情報やマーカの輪郭形状を理解しやすくするコンピュータグラフィックス(CG)を生成する。そして、生成したCGを記憶部110から指標管理部107を介して受けた画像上に重畳する処理を行う。画像合成部111による処理後の画像は後段のユーザインターフェース管理部103に送出される。
【0071】
ユーザインターフェース管理部103は、表示部105の表示画面上に表示する情報を管理するものであり、画像合成部111から受けた画像を表示部105に送出する。また、ユーザインターフェース管理部103は、制御部104から受けた各種の指示を受け、受けた指示に応じて上記各部を制御し、制御結果に応じた表示を表示部105の表示画面上に行う処理も行う。
【0072】
表示部105は、CRTや液晶画面などにより構成されており、各種の処理結果を画像や文字などでもって表示することができる。制御部104は、本装置の操作者からの操作指示を受け、ユーザインターフェース管理部103に通知する。
【0073】
図30は、上記画像処理装置100に適用可能なコンピュータのハードウェア構成を示すブロック図である。
【0074】
3001はCPUで、RAM3002やROM3003に格納されているプログラム(コンピュータプログラム)やデータを用いて本コンピュータ全体の制御を行うと共に、本コンピュータが行う後述の各処理を実行する。例えば、図4に示した画像処理装置100の構成において、画像入力部101、記憶部110、表示部105を除く各部が有する機能は、CPU3001が有する機能の一部として機能する。
【0075】
3002はRAMで、外部記憶装置3006からロードされたプログラムやデータ、I/F(インターフェース)3007を介して外部(本実施形態の場合にはカメラなどの撮像装置)から取得したデータ(本実施形態の場合には撮像画像)を一時的に記憶するためのエリアを有する。更にRAM3002は、CPU3001が各種の処理を実行する際に用いるワークエリアを有する。このように、RAM3002は、各種の用途に応じて適宜エリアを提供することができる。
【0076】
3003はROMで、本コンピュータの設定データやブートプログラムなどを格納する。
【0077】
3004は操作部で、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をCPU3001に対して入力することができる。
【0078】
3005は表示部で、CRTや液晶画面等により構成されており、CPU3001による処理結果を画像や文字などでもって表示することができる。表示部3005は、図4における表示部105に相当するものである。
【0079】
3006は外部記憶装置で、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはOS(オペレーティングシステム)や、上記記憶部110が保持する各種の情報(データ)、本コンピュータが行う後述の各処理をCPU3001に実行させるためのプログラムやデータが保存されている。これらのプログラムやデータはCPU3001による制御に従って適宜RAM3002にロードされる。そしてCPU3001はこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータが行う後述の各処理を実行することになる。
【0080】
3007はI/Fで、本実施形態の場合には、上記マーカが複数配された現実空間を撮像する撮像装置を本コンピュータに接続するためのインターフェースとして機能するものである。この撮像装置が撮像した画像は、このI/F3007を介して本コンピュータのRAM3002や外部記憶装置3006に入力される。
【0081】
3008は上述の各部を繋ぐバスである。
【0082】
なお、本実施形態に係る画像処理装置100に適用可能なコンピュータのハードウェア構成については同図に示した構成に限定するものではなく、画像処理装置100が行う後述の各処理を実行可能な構成であれば良い。
【0083】
次に、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)について説明する。図6は、このGUIの表示例を示す図である。なお、同図のGUIに係るプログラムやデータは外部記憶装置3006に保存されている。これをRAM3002にロードし、CPU3001がこのロードされたプログラムやデータを用いて処理を実行することで、同図に示した構成を有するウィンドウが表示部3005の表示画面上に表示される。これは、以下の説明で登場するその他のウィンドウについても同様である。
【0084】
なお、以下の説明では特に触れない限りは、GUIに対する操作は本コンピュータの操作者が操作部3004を用いて行うものとし、この操作によって実行される処理についてはCPU3001が行うものとする。
【0085】
図6に示したGUIにおいて「ファイル」メニュー210を指示すると、表示部3005の表示画面上には図7に示すようなファイルメニューが表示される。図7に示したファイルメニューにおいて「マーカ定義ファイルを開く」メニュー212を指示すると、図10に示したウィンドウが表示部3005の表示画面上に表示される。図10に示したウィンドウにおいて300は、外部記憶装置3006に保存されているマーカ定義ファイルのファイル名を一覧表示するための領域であり、本コンピュータの操作者は操作部3004を用いて、この領域300内に表示されているファイル名のうち何れか1つを選択することができる。マーカ定義ファイルとは、図5に示したテーブルのデータを記録したファイルである。複数のマーカ定義ファイルを外部記憶装置3006に保存させておくと、図10に示したGUIでこれらのファイルを選択することができる。
【0086】
ここで、操作者がファイルを1つ選択して「OK」ボタン310を指示すると、画像処理装置は同図に示したウィンドウの表示を消去した後、選択したファイルの内容に従って、図6のGUIにおける領域230内の表示を更新する。領域230内に表示されている情報の詳細については後述する。
【0087】
図7のファイルメニューに戻って、「マーカ定義ファイルを新規作成」メニュー214を指示すると、表示部3005の表示画面上には図11に示すようなウィンドウが表示される。図11に示したウィンドウにおいて400は、新規作成するマーカ定義ファイルのファイル名を入力するための領域である。本コンピュータの操作者が操作部3004を用いて領域400に新規のマーカ定義ファイルのファイル名を入力後「OK」ボタン410を指示すると、画像処理装置は同図に示したウィンドウの表示を消去した後、領域400内に入力したファイル名を有するマーカ定義ファイルを外部記憶装置3006内に作成する。
【0088】
図7のファイルメニューに戻って、「マーカ定義ファイルを保存」メニュー216を指示すると、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。
【0089】
「終了」メニュー218を指示すると、CPU3001はOSが有する周知のシャットダウン機能を用いてシャットダウンに係る処理を行い、本コンピュータのシャットダウンを行う。
【0090】
図6に示したGUIに戻って、「編集」メニュー220を指示すると、表示部3005の表示画面上には、図8に示した編集メニューが表示される。図8に示した編集メニューにおいて「マーカ定義情報の新規作成」メニュー222を指示すると、マーカ定義情報が新規に作成され、現在開いているマーカ定義ファイルに追加登録される。そして追加登録後、現在開いているマーカ定義ファイルの内容に従って、図6のGUIにおける領域230内の表示を更新する。ここで、マーカIDの重複を避けるため、新規作成するマーカ定義情報のマーカIDは、マーカ定義情報テーブルにおいて未使用の値が使用される。新規作成されたマーカ定義情報は、後述するウィンドウ上で変更することができる。
【0091】
図8の編集メニューに戻って、「マーカ定義情報の削除」メニュー224を指示すると、図6のGUIにおける領域230内で現在選択しているマーカ定義情報が、現在開いているマーカ定義ファイルから削除される。そして削除後、現在開いているマーカ定義ファイルの内容に従って、図6のGUIにおける領域230内の表示を更新する。この更新表示により、削除されたマーカ定義情報は表示されなくなる。
【0092】
「マーカ定義情報の編集」メニュー226を指示すると、図9に示すようなウィンドウが表示される。同図に示したウィンドウは、領域230内で現在選択されているマーカ定義情報の編集に使用する。250はウィンドウ本体である。
【0093】
252は、現在選択されているマーカ定義情報におけるマーカIDを入力するための領域である。この領域252に入力した値が、現在選択されているマーカ定義情報におけるマーカIDとなる。
【0094】
254は、現在選択されているマーカ定義情報におけるマーカ位置を入力するための領域である。この領域254に入力した値が、現在選択されているマーカ定義情報におけるマーカ位置となる。
【0095】
256は、現在選択されているマーカ定義情報におけるマーカ姿勢を入力するための領域である。この領域256に入力した値が、現在選択されているマーカ定義情報におけるマーカ姿勢となる。
【0096】
258は、現在選択されているマーカ定義情報におけるマーカサイズを入力するための領域である。この領域258に入力した値が、現在選択されているマーカ定義情報におけるマーカサイズとなる。なお、本実施形態では、領域258に入力したマーカサイズは、全てのマーカのマーカ定義情報に反映されるものとする。
【0097】
259は、現在選択されているマーカ定義情報におけるマーカ状態に含まれている基準マーカフラグを編集するためのプルダウンメニューである。このプルダウンメニュー259には「基準マーカ」、「相対マーカ」が表示され、何れかを選択することができる。操作者が「基準マーカ」を選択すれば基準マーカフラグは「1」に設定され、「相対マーカ」を選択すれば基準マーカフラグは「0」に設定される。
【0098】
ただし、本実施形態では、マーカ定義ファイルにおいて基準マーカは1つのみ存在可能とする。従って、基準マーカフラグを「1」にしたマーカ定義情報が既に存在する場合、他のマーカ定義情報を操作しても「相対マーカ」しか選択することができない。
【0099】
251は「OK」ボタンである。これを指示することで、選択中のマーカ定義情報を、各領域252〜259に入力された各情報で更新する処理を行う。即ち、現在選択されているマーカ定義情報におけるマーカID、マーカ位置、姿勢、マーカサイズ、基準マーカフラグをそれぞれ、領域252〜259に入力した情報に更新する処理を行う。但し、領域252に入力したマーカIDが同じファイル内で使用されていた場合には警告を表示部3005の表示画面上に表示し、マーカ定義情報の更新処理は行わない。
【0100】
次に、図6のGUIにおける領域230について説明する。領域230内には、現在開いているマーカ定義ファイル内に記述されている各マーカのマーカ定義情報に応じた表示がなされている。より詳しくは、各行に1つのマーカに対するマーカ定義情報に応じた表示がなされている。
【0101】
231はスライダバーである。上部、若しくは下部を指示することで、領域230内に表示している情報を上方、若しくは下方にスクロールさせることができる。
【0102】
232はチェックボックスで、対応するマーカ定義情報中の対象フラグを設定するためのものである。チェックする(チェックマークがチェックボックス内に表示される)と対象フラグ=1となり、チェックを外す(チェックマークがチェックボックス内から消去される)と対象フラグ=0となる。例えば、マーカID=2(マーカID=2)の行にあるチェックボックスを指示するとチェックボックス内にチェックマークが表示される。加えてマーカID=2のマーカの対象フラグは「1」となる。更に、再度ID=2の行にあるチェックボックスを指示すると、チェックボックス内からチェックマークが消去される。加えてマーカID=2のマーカの対象フラグは「0」となる。このように、各マーカについて任意に対象フラグを設定することができる。これは、本コンピュータの操作者が位置姿勢計算対象のマーカを任意に選択できることを示している。なお、チェックボックスに対する操作以外に、何らかの処理により対象フラグが操作された場合であっても、この操作結果はチェックボックス内のチェックマークに反映される。
【0103】
234は、対応するマーカ定義情報中の完了ステータスをアイコンとして表示する領域である。対応するマーカの位置姿勢計算が実行されている場合に、完了ステータス=1となる。この場合領域234内にはアイコン「◎」が表示される。また、対応するマーカの位置姿勢計算が実行されているが失敗した場合には、完了ステータス=2となる。この場合領域234内にはアイコン「×」が表示される。また、対応するマーカの位置姿勢計算が実行されていない場合には、完了ステータス=0となる。この場合には領域234内には何も表示されない。同図の場合、ID=2のマーカの行には領域234内にアイコン「◎」が表示されているので、位置姿勢計算が実行されていると判断することができる。一方、ID=1のマーカの行には領域234内に何も表示されていないので、位置姿勢計算が未だ実行されていないと判断することができる。もちろん、完了ステータスの値に応じて表示するアイコンは如何なるものであっても良く、完了ステータスの値が視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【0104】
236は、対応するマーカ定義情報中の検出フラグをアイコンとして表示する領域である。対応するマーカが画像から検出された場合に検出フラグ=1となる。この場合には領域236内にはカメラのアイコンが表示される。また、対応するマーカが画像から検出されなかった場合に検出フラグ=0となる。この場合には領域236内には何も表示されない。同図の場合、ID=2のマーカの行には領域236内にカメラのアイコンが表示されているので、画像から検出されていると判断することができる。一方、ID=1のマーカの行には領域236内に何も表示されていないので、画像からは検出されていないと判断することができる。もちろん、検出フラグの値に応じて表示するアイコンは如何なるものであっても良く、検出フラグの値が視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【0105】
238は、対応するマーカ定義情報中のマーカIDを表示する領域である。基準マーカの場合は下線付きでマーカIDが表示される。同図の場合、ID=2のマーカIDに下線が表示されているので、これが基準マーカであると判断することができる。もちろん、基準マーカフラグの値に応じて表示するものは下線に限定するものではなく、基準マーカがどれであるのかが視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【0106】
260は、現実空間画像を表示するための領域である。この領域260内に表示する現実空間画像は、I/F3007を介してRAM3002に取得したものであっても良いし、外部記憶装置3006からRAM3002に取得した画像であっても良い。また、後述する領域270内に表示している1以上のサムネイル画像のうち選択されたサムネイル画像を拡大したもの(サムネイルを拡大処理した画像であっても良いし、サムネイルの作成元を別途用意しておき、これを用いても良い)であっても良い。表示される画像は、複数のマーカが配された現実空間の画像である。また、領域260内には、現実空間の画像上に、各マーカのIDや輪郭を示すCGが重畳表示されている。
【0107】
270は、I/F3007を介して取得した現実空間画像のサムネイルを一覧表示するための領域である。272はスライダバーで、左端、右端を指示することで、領域270内に表示されている情報を左方、右方にスクロールさせることができる。領域270内に表示されている画像のうち1つを指示すると、先ず、選択したサムネイルに枠が表示される。そして、指示した画像の拡大画像(サムネイルを拡大処理した画像であっても良いし、サムネイルの作成元を別途用意しておき、これを用いても良い)が上述の通り、領域260内に表示される。
【0108】
282は、I/F3007を介して撮像装置から送出される各フレームの画像(即ち動画像)を順次外部記憶装置3006に取得すると共に、領域260内に順次表示させる指示を入力する為に押下するボタンである。
【0109】
284は、押下すると、その時点でI/F3007を介して取得した1フレームのサムネイルを作成し、領域270内に追加表示する指示を入力するために押下するボタンである。もちろん、取得したフレームの画像もまた、外部記憶装置3006内に記憶する。なお、ボタン284は、動画像における1フレームを取得するために押下するものであるので、動画像を取得するためのボタン282が指示されている場合にのみ押下可能である。1フレームの画像を取得すると、この1フレームの画像からマーカの検出処理を行い、検出したマーカに係る情報を現在開いているマーカ定義ファイルに記述する。更に、この処理によって更新したマーカ定義ファイルに従って、上記領域230内の表示を更新する。
【0110】
286は、領域270内で現在選択しているサムネイルを削除する指示を入力するためのボタンである。なお、この削除対象のサムネイルが、オリジナルの画像を縮小することで作成したものであれば、このオリジナルの画像もまた削除する。また、削除した画像にマーカが含まれていれば、現在開いているマーカ定義ファイルにおいてこのマーカに関する情報も削除する。また、この処理により更新したマーカ定義ファイルに従って上記領域230内の表示を更新する。
【0111】
288は、現在開いているマーカ定義ファイルにおいて対象フラグ=1のマーカの位置姿勢計算を計算する指示を入力するためのボタンである。
【0112】
図12,13は、上記GUIを用いて行う各種の処理のフローチャートである。なお、図12,13のフローチャートに従った処理をCPU3001に実行させるためのプログラムやデータは外部記憶装置3006に保存されている。これをCPU3001による制御に従って適宜RAM3002にロードする。そして、CPU3001がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは以下説明する各処理を実行する。
【0113】
ここで、キャリブレーションの実行が行われるか否かは、操作者による選択のみだけではなく、マーカ定義情報のマーカ状態によって決定される。よって処理全体の中からマーカ定義情報を変更する処理に注目して説明する。
【0114】
また、以下の処理を解する前段では既に図6のGUIに係るプログラムやデータがRAM3002にロードされ、CPU3001がこれを用いて処理を実行しているので、表示部3005の表示画面上には図6のGUIが表示されている。
【0115】
図6のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知すると、処理をステップS100を介してステップS101に進める。ステップS101では、図11に示すようなウィンドウを表示部3005の表示画面上に表示する。本コンピュータの操作者はこのウィンドウの領域400に新規作成するマーカ定義ファイルのファイル名を入力する。ステップS101では更に領域400に入力されたファイル名を取得する。そして処理をステップS102に進め、ステップS101で取得したファイル名を有するマーカ定義ファイルを外部記憶装置3006内に作成する。作成したファイル内のマーカ定義情報テーブルは空に設定される。そして処理をステップS108に進め、外部記憶装置3006内に既に取得している現実空間画像を全て削除し、領域(取得画像表示領域)270内の表示を更新する。これにより、領域270内には何も表示されていない状態となる。そして処理をステップS146に進め、領域230内の表示を更新する。即ち、領域230内には何も表示されてない状態となる。そして処理を上記ステップS100に戻す。
【0116】
一方、図6のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知すると、処理をステップS100、ステップS105を介してステップS106に進める。ステップS106では、図10に示すようなウィンドウを表示部3005の表示画面上に表示する。本コンピュータの操作者はこのウィンドウにおいてマーカ定義ファイルを1つ選択する。ステップS106では更に、選択されたマーカ定義ファイルを外部記憶装置3006からRAM3002にロードする。そして処理をステップS107に進め、ロードされたマーカ定義情報テーブルの検出フラグ、対象フラグを共に0に初期化する。そしてステップS108,S146における処理を行い、処理をステップS100に戻す。
【0117】
一方、図6のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS100,S105,S110を介してステップS112に進める。ステップS112では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報のマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、完了ステータスは全て0に初期化される。加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS146における処理を行った後、処理をステップS100に戻す。
【0118】
一方、図6のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知すると、処理をステップS100,S105,S110,S114を介してステップS116に進める。ステップS116では、領域230内で現在選択中のマーカ定義情報を、マーカ定義ファイルから削除する処理を行う。そしてステップS146における処理を行った後、処理をステップS100に戻す。
【0119】
一方、図6のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知すると、処理をステップS100,S105,S110,S114、S118を介してステップS120に進める。ステップS120では、図9に示すようなウィンドウを表示部3005の表示画面上に表示する。本コンピュータの操作者はこのウィンドウにおける各領域252〜259のうち1以上に対して、対応する情報を入力する。そして「OK」ボタン251が指示されると、ステップS120では更に、各領域252〜259に入力された情報を取得する。そして、領域252から取得したマーカIDが、現在開いているマーカ定義ファイル内に2以上存在するか否かをチェックする。
【0120】
このチェックの結果、2以上存在する場合には処理をステップS140に進め、表示部3005の表示画面上に警告を表示する。そして処理をステップS150に進める。ステップS150以降の処理については後述する。一方、2以上存在しない場合には処理をステップS121に進め、領域230内で現在選択されているマーカ定義情報を、ステップS120で取得した情報に更新する処理を行う。そしてステップS146における処理を行う。ステップS146における領域230内の表示更新の際に、基準マーカフラグ=1のマーカIDについては下線を表示する。そしてその後、処理をステップS100に戻す。
【0121】
一方、図6のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS100,S105,S110,S114,S118,S122を介してステップS124に進める。ステップS124では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在かを調べ、存在する場合には、このマーカ定義情報の対象フラグ、検出フラグを共に1に設定する。即ち、画像から検出されたマーカについては検出した旨、及び位置姿勢の計算対象とする旨を、このマーカのマーカ定義情報に記録する。
【0122】
一方、ステップS124において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、対象フラグ、検出フラグを共に1に設定する。
【0123】
そして処理をステップS125に進め、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そしてステップS146における処理を行った後に、処理をステップS100に戻す。
【0124】
一方、図6のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS100,S105、S110,S114,S118,S122,S126を介してステップS128に進める。
【0125】
ステップS128では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像から、マーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0126】
そして処理をステップS129に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除する処理を行う。そしてステップS146における処理を行った後に、処理をステップS100に戻す。
【0127】
これらの処理により、画像の削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。
【0128】
一方、図6のGUIにおいてチェックボックス232に対する指示を検知すると、処理をステップS100,S105,S110,S114,S118,S122,S126、S130を介してステップS132に進める。ステップS132では、指示されたチェックボックス232に対応するマーカ定義情報(指示されたチェックボックス232と同行に表示しているマーカIDを有するマーカ定義情報)内の対象フラグを反転させる。即ち、現在対象フラグが「1」であれば「0」にするし、現在対象フラグが「0」であれば「1」にする。そしてステップS146における処理を行った後、処理をステップS100に戻す。
【0129】
一方、図6のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS100,S105,S110,S114,S118,S122,S126、S130、S134を介してステップS136に進める。
【0130】
ステップS136では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS140に進める。
【0131】
ステップS140では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS150に進める。ステップS150以降の処理については後述する。
【0132】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS138に進める。ステップS138では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり、且つ検出フラグ=0となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS140に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS150に進める。ステップS150以降の処理については後述する。
【0133】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり、且つ検出フラグ=0となるマーカ定義情報が存在しない場合には処理をステップS142に進める。
【0134】
ステップS142では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS144に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS146における処理を行い、その後、処理をステップS100に戻す。
【0135】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図6のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS100,S105,S110,S114,S118,S122,S126、S130、S134、S150を介してステップS152に進める。なお、ステップS140からステップS150に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS152に進めるし、検知していなければ処理をステップS154に進める。
【0136】
ステップS152では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1のマーカ定義情報を利用して位置合わせ処理を行えば、操作者が選択して位置姿勢を計算したマーカを利用した位置合わせ処理を行うことが可能になる。
【0137】
そして処理をステップS154に進める。ステップS154では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS100に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0138】
以上の説明により、本実施形態によれば、画像から検出されたマーカのうち、位置姿勢計算対象のマーカと基準マーカを、操作者が設定することができる。
【0139】
また、上記処理では、ステップS124による処理で、画像から検出したマーカを自動的に位置姿勢計算対象とすると共に、この位置姿勢計算対象のうち更に、本コンピュータの操作者が位置姿勢計算対象を選択することができ(半自動あるいは手動で選択することができ)、柔軟かつ使い易い手法を提供することが可能となった。
【0140】
さらには上記の選択方法に加えて、ステップS112、S121、S136、S138における処理のように、マーカ定義情報に応じてキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者が行う位置合わせための設定作業の負荷を軽くすることが可能になった。
【0141】
なお、マーカ定義情報新規作成時の処理であるステップS112において、追加されるマーカの対象フラグを0としたが、これを1としてもよい。この処理によって、システムは、操作者がマーカ定義情報を作成したマーカについて画像取得およびキャリブレーションを行って位置合わせ処理で使用するように誘導することができる。この処理は操作者が位置あわせに使用するマーカをマーカ定義情報の有無で管理したい場合に有効である。
【0142】
また、画像取得時の処理であるステップS124において、マーカ画像から検出されたマーカの対象フラグを1に変更していたが、変更しないようにしてもよい。この処理は、操作者がキャリブレーションするマーカを手動で選択することを重視する場合に有効である。
【0143】
また、画像削除時の処理であるステップS128において、画像中に存在しないマーカのマーカ定義情報を削除しているが、マーカ定義情報の検出フラグを0にするだけでもよい。この処理は、操作者が一度検出されたマーカのマーカ定義情報を残して管理したい場合に有効である。
【0144】
以上説明してきた変形を操作者の好みに応じてどちらにするかを予め設定できるようにしても構わない。
【0145】
[第2の実施形態]
第1の実施形態では、画像から検出された全てのマーカ、若しくは検出された全てのマーカのうち操作者が選択したマーカの位置姿勢を求めていた。本実施形態では、操作者が、位置姿勢の計算対象外とするマーカを撮像して、積極的に位置姿勢計算対象外のマーカを決定する。このような実施形態は、キャリブレーションおよび位置合わせ処理を行う装置を複数、隣接した空間で使用する状況で、他の装置が使用するマーカをキャリブレーションおよび位置合わせ処理で使用しない場合に有効である。
【0146】
なお、本実施形態は第1の実施形態に係る構成を前提としているが、本実施形態が第1の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第1の実施形態と同様のものであるとする。
【0147】
図15は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第1の実施形態と同様、1つのマーカについて1つ存在するものであるが、本実施形態に係るマーカ定義情報は第1の実施形態に係るマーカ定義情報におけるマーカ状態に「除外フラグ」を加えた構成を有する。
【0148】
除外フラグとは、マーカが位置姿勢計算処理の対象外であるか否かを示すフラグで、「1」であれば対象外、「0」であれば対象外としないことを示す。本実施形態では除外フラグの規定値は「0」とする。
【0149】
図16は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。図16に示したGUIは、上記図6のGUIに「モード」メニュー240を加えたものである。更に、領域230内において、マーカID=7,10における領域236に示すように、アイコン上に除外フラグの値を反映した「×」のアイコンが重畳表示されている点が図6のGUIとは異なる。
【0150】
図16に示したGUIにおいて「モード」メニュー240を指示すると、表示部3005の表示画面上には、図14に示すようなモードメニューが表示される。図4に示したモードメニューにおいて「取得モード」メニュー242を指示すると、取得モードが設定され、撮像装置が撮像した画像から検出したマーカは位置姿勢計算対象となる。即ち、「取得モード」メニュー242を指示した場合には、画像からマーカを識別すると、このマーカの除外フラグを「0」に設定し、以降、第1の実施形態と同様の動作を行う。
【0151】
一方、「除外」モード244を指示すると、除外モードが設定され、撮像装置が撮像した画像から検出したマーカは位置姿勢計算対象外となる。即ち、「除外」モード244を指示した場合には、画像からマーカを識別すると、このマーカの除外フラグを「1」に設定する。
【0152】
即ち、取得モードで画像から検出されたマーカについては、検出フラグは1に設定され、除外フラグは0に設定される。一方、除外モードで画像から検出されたマーカについては、検出フラグは1に設定され、除外フラグは1に設定される。
【0153】
そして、領域236には、第1の実施形態と同様に、検出フラグの値に応じたアイコンを表示するのである。これに加えて、本実施例では除外フラグの値に応じたアイコンを重畳表示する。同図では、マーカID=7,10に対応する領域236には「×」のアイコンが表示されているが、これはマーカID=7,10に対応する除外フラグが1であることを示している。なお、除外フラグ=0である場合には領域236には「×」のアイコンは表示されない。もちろん、除外フラグの値に応じて表示するアイコンは如何なるものであっても良く、除外フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【0154】
図17,18は、図16に示したGUIを用いて行う各種の処理のフローチャートである。図16のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知した場合に行う処理(ステップS200、S201、S202、S208、S246)はそれぞれ、図12におけるステップS100,S101,S102,S108,S146と同じであるので、説明は省略する。
【0155】
また、図16のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知した場合における処理(ステップS205,S206,S207,S208,S246)はそれぞれ、図12におけるステップS105,S106,S107,S108,S146と同様であるが、ステップS207では、検出フラグ、対象フラグに加え、除外フラグについても0に初期化する。
【0156】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS200,S205,S210を介してステップS212に進める。ステップS212では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報のマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、除外フラグ、完了ステータスは全て0に初期化される加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS246における処理を行った後、処理をステップS200に戻す。
【0157】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知した場合に行う処理(ステップS214,S216,S246)はそれぞれ、図12におけるステップS114,S116,S146と同じであるので、説明は省略する。
【0158】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知した場合に行う処理(ステップS218,S220,S221,S246、S240)はそれぞれ、図12におけるステップS118,S120,S121,S146、図13におけるステップS140と同じであるので、説明は省略する。
【0159】
また、図16のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS200,S205,S210,S214,S218,S222を介してステップS250に進める。ステップS250では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。次に、ステップS252では、「モード」メニュー240で設定した現在のモードが除外モードであるのか取得モードであるのかをチェックする。チェックの結果、除外モードであれば処理をステップS258に進め、取得モードであれば処理をステップS254に進める。
【0160】
ステップS258では、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の除外フラグ、検出フラグを共に1に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては位置姿勢計算対象から除外する旨、及び画像から検出された旨を、このマーカのマーカ定義情報に記録する。
【0161】
一方、ステップS258において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、除外フラグ、検出フラグを共に1に設定する。そして処理をステップS260に進める。
【0162】
一方、ステップS254では、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の対象フラグ、検出フラグを共に1に設定し、除外フラグを0に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては位置姿勢計算対象とする旨、画像から検出された旨、位置姿勢計算対象から除外しない旨を、このマーカのマーカ定義情報に記録する。
【0163】
一方、ステップS254において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、対象フラグ、検出フラグは共に1に設定し、除外フラグを0に設定する。
【0164】
そして処理をステップS260に進め、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そして処理をステップS262に進める。ステップS262では、領域230内の各マーカについての領域236の表示を更新するのであるが、上述の通り、除外フラグ=1の領域236については「×」のアイコンを表示する。なお、除外フラグ=0の場合には領域236には「×」のアイコンは表示しない。そしてステップS246の処理を行った後、処理をステップS200に戻す。
【0165】
以上の処理により、取得モードで取得した画像から検出されたマーカを自動的にキャリブレーション対象にし、除外モードで取得した画像から検出されたマーカを自動的にキャリブレーションから除外することが可能になる。
【0166】
また、図16のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS200,S205、S210,S214,S218,S222,S226を介してステップS270に進める。ステップS270では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像からマーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0167】
そして処理をステップS272に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除する処理を行う。そしてステップS262,S246における処理を行った後に、処理をステップS200に戻す。
【0168】
これらの処理によって画像のを削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除し、キャリブレーション対象から除外することが可能になる。また除外モードで取得された画像から検出されたマーカには「×」のアイコンが表示され、除外されているマーカがどれであるか理解が容易になる。
【0169】
また、図16のGUIにおいてチェックボックス232に対する指示を検知した場合に行う処理(ステップS230,S232,S246)はそれぞれ、図13におけるステップS130,S132,S146と同じであるので、説明は省略する。
【0170】
一方、図16のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS200,S205,S210,S214,S218,S222,S226、S230、S234を介してステップS236に進める。ステップS236では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS240に進める。ステップS240では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS250に進める。ステップS250以降の処理については後述する。
【0171】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS238に進める。ステップS238では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、若しくは対象フラグ=1且つ除外フラグ=1となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS240に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS250に進める。ステップS250以降の処理については後述する。
【0172】
これらの処理により、キャリブレーション処理に失敗することを事前に軽減することが可能になる。特に手動で対象フラグを変更した場合に発生する問題を事前に回避することが可能になる。
【0173】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、対象フラグ=1且つ除外フラグ=1となるマーカ定義情報の何れも存在しない場合には処理をステップS242に進める。ステップS242では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS244に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS246における処理を行い、その後、処理をステップS200に戻す。
【0174】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図16のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS200,S205,S210,S214,S218,S222,S226、S230、S234、S250を介してステップS252に進める。なお、ステップS240からステップS250に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS252に進めるし、検知していなければ処理をステップS254に進める。
【0175】
ステップS252では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1かつ除外フラグ=0のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、除外モードで取得したマーカ画像から検出されたマーカを使用せずに位置合わせ処理を行うことが可能になる。
【0176】
そして処理をステップS254に進める。ステップS254では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS200に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0177】
本実施形態では、除外モードという特別なモードで撮影を行うことによってマーカをキャリブレーションから除外することを実現する例について説明した。除外モードで除外したいマーカを撮影することで、キャリブレーションおよび位置合わせ処理から除外するマーカを指定することが可能となった。モードの変更はいつでも行うことができるので、除外モードに切り替え、除外するマーカを撮影することでキャリブレーションから除外するマーカの追加を容易に行うことが可能である。
【0178】
また、第1の実施形態と同様に、各処理においてマーカ状態に設定される値を変更することで、より操作者の好みや方針に応じた調整を行ってもよい。例えば、S254で除外フラグを0に設定しないようにすることで、一度除外モードで撮影されたマーカを位置姿勢計算対象にしないようにするようにしても良い。これは、予め除外したいマーカを撮影しておき、その後に位置姿勢計算対象とするマーカを撮影する使い方をする場合に有利である。
【0179】
また、このような変更を操作者の好みに応じてどちらにするか予め設定できるようにしてもよい。
【0180】
[第3の実施形態]
本実施形態では、現実空間中に同じマーカIDを有するマーカが配置されている場合に、これを検知し、キャリブレーション処理の対象外とする。なお、本実施形態は第1の実施形態に係る構成を前提としているが、本実施形態が第1の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第1の実施形態と同様のものであるとする。
【0181】
先ず、本実施形態で用いるマーカについては第1の実施形態と同様のものを用いる。また、取得した画像からのマーカ重複検出は、画像管理部106、指標管理部107、指標抽出部109、記憶部110が連携して実現するものとする。
【0182】
図19は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第1の実施形態と同様、1つのマーカについて1つ存在するものであるが、本実施形態に係るマーカ定義情報は第1の実施形態に係るマーカ定義情報におけるマーカ状態に「重複フラグ」を加えた構成を有する。
【0183】
重複フラグとは、そのマーカが現実空間中に複数存在すると判断された場合に「1」となるフラグで、重複して存在すると判断されないマーカについては「0」となる。本実施形態では重複フラグの規定値は「0」とする。
【0184】
図20は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。図20に示したGUIは、上記図6のGUIにおける領域230内に新たに領域237が追加されている。領域237は、対応するマーカが現実空間中に複数存在する旨を示すアイコンを表示するためのもので、同図では、マーカID=2のマーカが現実空間中に複数存在することが検知されている。即ち、重複フラグ=1であればアイコンを表示し、重複フラグ=0であればアイコンは表示しない。もちろん、重複フラグの値に応じて表示するアイコンは如何なるものであっても良く、重複フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【0185】
図21,22は、図20に示したGUIを用いて行う各種の処理のフローチャートである。図20のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知した場合に行う処理(ステップS300、S301、S302、S308、S346)はそれぞれ、図12におけるステップS100,S101,S102,S108,S146と同じであるので、説明は省略する。
【0186】
また、図20のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知した場合における処理(ステップS305,S306,S307,S308,S346)はそれぞれ、図12におけるステップS105,S106,S107,S108,S146と同様であるが、ステップS307では、検出フラグ、対象フラグに加え、重複フラグについても0に初期化する。
【0187】
また、図20のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS300,S305,S310を介してステップS312に進める。ステップS312では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報においてマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、重複フラグ、完了ステータスは全て0に初期化される加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS346における処理を行った後、処理をステップS300に戻す。
【0188】
また、図20のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知した場合に行う処理(ステップS314,S316,S346)はそれぞれ、図12におけるステップS114,S116,S146と同じであるので、説明は省略する。
【0189】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知した場合に行う処理(ステップS318,S320,S321、S346、S340)はそれぞれ、図12におけるステップS118,S120,S121,S146、図13におけるステップS140と同じであるので、説明は省略する。
【0190】
また、図20のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS300,S305,S310,S314,S318,S322を介してステップS323に進める。ステップS323では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の対象フラグ、検出フラグを共に1に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては検出した旨、及び位置姿勢の計算対象とする旨を、このマーカのマーカ定義情報に記録する。
【0191】
一方、ステップS323において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、対象フラグ、検出フラグは共に1に設定する。
【0192】
次に、ステップS324では、同じ画像から識別したマーカID同士を比較し、同じマーカIDが2以上存在する、即ち、1枚の画像中に同じマーカIDを有するマーカが2以上存在するか否かをチェックする。このチェックの結果、2以上存在する場合には場合には処理をステップS325に進め、重複しているマーカIDを有するマーカ定義情報中の重複フラグを1に設定する。そして処理をステップS326に進める。
【0193】
一方、このチェックの結果、2以上存在しない場合には処理をステップS326に進める。ステップS326では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そしてステップS330では、領域230内の各マーカについての領域237の表示を更新するのであるが、上述の通り、重複フラグ=1の領域237についてはアイコンを表示する。なお、重複フラグ=0の場合には領域237にはアイコンを表示しない。そしてステップS346の処理を行った後、処理をステップS300に戻す。
【0194】
これらの処理により、自動的に検出されたマーカをキャリブレーション対象とすると同時に、重複したマーカをキャリブレーションから除外することが可能になる。
【0195】
また、図20のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS300,S305、S310,S314,S318,S322,S327を介してステップS328に進める。ステップS328では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像からマーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0196】
そして処理をステップS329に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除する処理を行う。そしてステップS330,S346における処理を行った後に、処理をステップS300に戻す。
【0197】
これらの処理によって画像の削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。また重複検出されたマーカにはアイコンが重畳され、重複しているマーカがどれであるか理解が容易になる。
【0198】
また、図20のGUIにおいてチェックボックス232に対する指示を検知した場合に行う処理(ステップS332,S333,S346)はそれぞれ、図13におけるステップS130,S132,S146と同じであるので、説明は省略する。
【0199】
一方、図20のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS300,S305,S310,S314,S318,S322,S327、S332、S334を介してステップS336に進める。
【0200】
ステップS336では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS340に進める。
【0201】
ステップS340では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS350に進める。ステップS350以降の処理については後述する。
【0202】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS338に進める。ステップS338では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、若しくは対象フラグ=1且つ重複フラグ=1となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS340に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS350に進める。ステップS350以降の処理については後述する。
【0203】
これらの処理により、キャリブレーション処理に失敗することを事前に軽減することが可能になる。特に手動で対象フラグを変更した場合に発生する問題を事前に回避することが可能になる。
【0204】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、対象フラグ=1且つ重複フラグ=1となるマーカ定義情報の何れも存在しない場合には処理をステップS342に進める。ステップS342では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS344に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS346における処理を行い、その後、処理をステップS300に戻す。
【0205】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図20のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS300,S305,S310,S314,S318,S322,S327、S332、S334、S350を介してステップS352に進める。なお、ステップS340からステップS350に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS352に進めるし、検知していなければ処理をステップS354に進める。
【0206】
ステップS352では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、操作者が選択して位置姿勢を計算したマーカ利用して位置合わせ処理を行うことが可能になる。
【0207】
そして処理をステップS354に進める。ステップS354では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS300に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0208】
本実施形態では、同じマーカIDのマーカが2以上配置されていることを検知し、キャリブレーションから除外することを実現する例について説明した。重複と判断されたマーカは、マーカ定義情報を削除しない限り使用できるようにならないため、重複によるキャリブレーション失敗の可能性を軽減することが可能になる。
【0209】
第1の実施形態と同様に、各処理においてマーカ状態に設定される値を変更することで、より操作者の志向および方針に応じた調整を行ってもよい。また、このような変形を操作者の好みに応じてどちらにするか予め設定できるようにしてもよい。
【0210】
[第4の実施形態]
本実施形態は、第1の実施形態に係る構成に印刷機能を加え、マーカが印刷済みである、ということをキャリブレーション対象選択の要素とする例である。係る実施形態は、印刷する行為を、操作者がマーカを設置してキャリブレーションする意思がある、とみなす方針の時に有用である。
【0211】
なお、本実施形態は第1の実施形態に係る構成を前提としているが、本実施形態が第1の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第1の実施形態と同様のものであるとする。
【0212】
図23は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。同図に示す如く、本実施形態に係る画像処理装置2300は、図4に示した第1の実施形態に係る画像処理装置100に指標生成部120を加えた構成を有すると共に、この指標生成部120には印刷部121が接続されている。
【0213】
指標生成部120は、指標管理部107が記憶部110から読み出したマーカ定義情報を受け、これを用いて図1に示したフォーマットに従って、マーカの画像を生成する。そして生成した画像に基づいて印刷データを生成する。生成した印刷データは印刷部121に送出される。印刷部121は、送出された印刷データを受け、これを紙などの記録媒体上に記録する処理を行う。従って印刷部121には、プリンタや複合機など、プリント機能を有する装置が適用される。
【0214】
なお、画像処理装置2300において、指標生成部120以外の各部による動作については第1の実施形態と同様であるので、説明は省略する。
【0215】
図24は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第1の実施形態と同様、1つのマーカについて1つ存在するものであるが、本実施形態に係るマーカ定義情報は第1の実施形態に係るマーカ定義情報におけるマーカ状態に「印刷フラグ」を加えた構成を有する。
【0216】
印刷フラグとは、マーカが印刷部121によって印刷されたか否かを示すフラグである。印刷されたマーカについては印刷フラグには「1」が設定され、未だ印刷されていないマーカについては印刷フラグには「0」が設定されている。印刷フラグの設定は指標生成部120が行うものとする。例えばマーカの印刷データを生成し、生成した印刷データを印刷部121に送出するのに伴い印刷フラグが1に設定されるようにしてもよい。本実施形態では、印刷フラグの規定値は「0」とする。
【0217】
図25は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。図25に示したGUIは、上記図6のGUIにおける領域230内に新たに領域239が追加されている。領域239は、対応するマーカが印刷済みのものである旨を示すアイコンを表示するためのもので、同図では、マーカID=2のマーカが印刷済みであることを示している。即ち、印刷フラグ=1であればアイコンを表示し、印刷フラグ=0であればアイコンは表示しない。もちろん、印刷フラグの値に応じて表示するアイコンは如何なるものであっても良く、印刷フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【0218】
ここで、図25に示したGUIにおいて「編集」メニュー220を指示すると、表示部3005の表示画面上には図26に示す編集メニューが表示される。図26に示した編集メニューは、図8に示した第1の実施形態に係る編集メニューに「マーカの印刷」メニュー228を加えたものである。この「マーカの印刷」メニュー228を指示すると、表示部3005の表示画面上には図27に示すようなウィンドウが表示される。
【0219】
同図のウィンドウにおいて510は、印刷するマーカのマーカIDを入力するための領域である。本画像処理装置2300の操作者がこの領域510に印刷したいマーカのマーカIDを入力した後に、OKボタン520を指示すると、指示されたマーカIDを有するマーカの印刷データが上記指標管理部107、指標生成部120により生成され、印刷部121により、この印刷データに従った印刷処理が行われる。これにより、指示されたマーカIDを有するマーカが紙などの記録媒体上に印刷される。
【0220】
なお、領域510内に予め表示される初期値は、領域230内に表示されているマーカIDの何れかであるとするが、使用可能なマーカIDの範囲で自由に変更してもよい。
【0221】
図28,29は、図25に示したGUIを用いて行う各種の処理のフローチャートである。図25のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知した場合に行う処理(ステップS400、S401、S402、S408、S446)はそれぞれ、図12におけるステップS100,S101,S102,S108,S146と同じであるので、説明は省略する。
【0222】
また、図25のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知した場合における処理(ステップS405,S406,S407,S408,S446)はそれぞれ、図12におけるステップS105,S106,S107,S108,S146と同様であるが、ステップS407では、検出フラグ、対象フラグに加え、印刷フラグについても0に初期化する。
【0223】
また、図25のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS400,S405,S410を介してステップS412に進める。ステップS412では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報においてマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、印刷フラグ、完了ステータスは全て0に初期化される。加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS446における処理を行った後、処理をステップS400に戻す。
【0224】
また、図25のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知した場合に行う処理(ステップS414,S416,S446)はそれぞれ、図12におけるステップS114,S116,S146と同じであるので、説明は省略する。
【0225】
また、図25のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知した場合に行う処理(ステップS418,S420,S421、S446、S440)はそれぞれ、図12におけるステップS118,S120,S121,S146、図13におけるステップS140と同じであるので、説明は省略する。
【0226】
また、図25のGUIにおいて、「編集」メニュー220の指示を検知した後、「マーカの印刷」メニュー228の指示を検知した場合には処理をステップS400,S405,S410,S414,S418,S460を介してステップS462に進め、先ず、表示部3005の表示画面上に図27に示すウィンドウを表示する。本コンピュータの操作者はこのウィンドウにおける領域510に印刷対象のマーカのマーカIDを入力し、その後、OKボタン520を指示する。従って、ステップS462ではOKボタン520の指示を検知すると、この入力されたマーカIDを取得する。そして、取得したマーカIDが、現在開いているマーカ定義ファイル内に登録されたものであるか(領域230内に表示されているものであるか)をチェックする。
【0227】
このチェックの結果、存在しない場合には処理をステップS464に進め、取得したマーカIDを有するマーカ定義情報を新規作成し、現在開いているマーカ定義ファイルに追加登録する。このステップS464における処理は、上記ステップS412における処理と同様にして行う。そして処理をステップS466に進める。
【0228】
一方、ステップS462におけるチェックの結果、存在する場合には処理をステップS466に進め、領域510に入力されたマーカIDを有するマーカ定義情報に基づいて、このマーカの画像の印刷データを作成する。即ち、図1に示したフォーマットに従って、このマーカ定義情報中のマーカIDを表現したマーカの画像を作成し、その後、画像の印刷データを作成する。そして、作成した印刷データを印刷部121に送出する。この本実施形態の場合、印刷部121は、本コンピュータにおけるI/F3007に接続されているので、印刷データはこのI/F3007を介して印刷部121に送出される。これにより、領域510に入力したマーカIDを有するマーカが印刷部121により、紙などの記録媒体上に印刷されることになる。
【0229】
なお、ステップS464からステップS466に処理を移行した場合には、ステップS466では、新規作成したマーカ定義情報に基づいて、このマーカの画像の印刷データを作成する。そして、作成した印刷データを印刷部121に送出する。
【0230】
そして処理をステップS468に進め、印刷したマーカのマーカ定義情報中の対象フラグ、印刷フラグを共に1に設定する。そしてステップS446における処理を行った後、処理をステップS400に戻す。
【0231】
これら印刷したマーカを自動的にキャリブレーション対象に含める処理により、キャリブレーションするマーカを選択するための要素として、マーカの印刷履歴を使用することが可能になる。
【0232】
また、印刷したマーカのマーカ定義情報を自動的にマーカ定義情報テーブルに追加することで、操作者の作業を軽減することが可能になる。
【0233】
また、図25のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS400,S405,S410,S414,S418,S460,S422を介してステップS424に進める。
【0234】
ステップS424では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の検出フラグを1に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては検出した旨を、このマーカのマーカ定義情報に記録する。
【0235】
一方、ステップS424において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、検出フラグは1に設定する。
【0236】
そして処理をステップS425に進め、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そしてステップS446における処理を行った後に、処理をステップS400に戻す。
【0237】
一方、図25のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS400,S405、S410,S414,S418,S460,S422,S427を介してステップS428に進める。
【0238】
ステップS428では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像からマーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0239】
そして処理をステップS429に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除を行う。そしてステップS446における処理を行った後に、処理をステップS400に戻す。
【0240】
これらの処理によって画像の削除に伴って取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。
【0241】
また、図25のGUIにおいてチェックボックス232に対する指示を検知した場合に行う処理(ステップS432,S433,S446)はそれぞれ、図13におけるステップS130,S132,S146と同じであるので、説明は省略する。
【0242】
一方、図25のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS400,S405、S410,S414,S418,S460,S422,S427、S432,S434を介してステップS436に進める。
【0243】
ステップS436では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS440に進める。
【0244】
ステップS440では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS450に進める。ステップS450以降の処理については後述する。
【0245】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS438に進める。ステップS438では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS440に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS450に進める。ステップS450以降の処理については後述する。
【0246】
この処理により、検出されてないマーカがキャリブレーション対象となっている間違いを回避し、検出するために画像を取得するよう操作者に促すことが可能になる。
【0247】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報が存在しない場合には処理をステップS439に進める。
【0248】
ステップS439では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=0且つ印刷フラグ=1となるマーカ定義情報が存在するか否かをチェックする。このチェックの結果、存在する場合には処理をステップS441に進める。
【0249】
ステップS441では、印刷したのにもかかわらずキャリブレーション対象にしないのは不自然と判断し、表示部3005の表示画面上に警告表示を行うと共に、再度キャリブレーション処理を中止するか否かを促すためのGUIを表示部3005の表示画面上に表示する。この処理により、印刷し、配置したにもかかわらず、操作者が手動でキャリブレーション対象から除外した間違いを回避し、印刷したマーカをキャリブレーションするよう操作者に促すことが可能になる。
【0250】
このGUIに対する操作の結果、計算を中断する旨の指示が入力された場合には処理をステップS450に進める。一方、計算を続行する旨の指示が入力された場合には処理をステップS442に進める。
【0251】
一方、上記ステップS439におけるチェックの結果、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=0且つ印刷フラグ=1となるマーカ定義情報が存在しない場合には処理をステップS442に進める。
【0252】
ステップS442では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS444に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS446における処理を行い、その後、処理をステップS400に戻す。
【0253】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図25のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS400,S405,S410,S414,S418,S460,S422、S427、S432,S434、S450を介してステップS452に進める。なお、ステップS440やステップS441からステップS450に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS452に進めるし、検知していなければ処理をステップS454に進める。
【0254】
ステップS452では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、操作者が選択して位置姿勢を計算したマーカ利用して位置合わせ処理を行うことが可能になる。
【0255】
そして処理をステップS454に進める。ステップS454では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS400に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0256】
本実施形態では、第1の実施形態にマーカ印刷機能を加え、マーカが印刷済みであることをキャリブレーション対象選択の要素とする例について説明した。係る構成によれば、印刷したマーカのうち画像から検出されてないマーカが存在した場合、警告し、印刷したマーカをキャリブレーション可能なように操作者を誘導することが可能になる。
【0257】
また、印刷したマーカをキャリブレーション対象から除外したいときには、キャリブレーション対象チェックボックス232への簡単な操作でそれを実現することができる。
【0258】
このような操作者の手動による選択方法と、マーカ印刷時点で、印刷されたマーカをキャリブレーション対象に自動的に加える(ステップS468における処理)ことを併用することで、柔軟かつ使い易い手法を提供することが可能となった。
【0259】
さらには上記の選択方法に加えて、ステップS436、S438、S439の処理のようにマーカ定義情報に応じてキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者が行う位置合わせのための設定作業の負荷を軽くすることが可能になった。
【0260】
なお、マーカ定義ファイルを開く処理であるステップS407において、読み込むマーカ定義情報の印刷フラグを0にしていたが、これを1にして印刷履歴を保存するようにしてもよい。これによって、操作者が印刷履歴をマーカ定義ファイルで管理することが可能になる。
【0261】
また、マーカ印刷処理であるステップS468において、印刷したマーカの対象フラグを1としたがこれを0とし、かつステップS439、S441を処理フローから削除してもよい。これは、操作者が印刷フラグを確認し、手動でキャリブレーション対象を選択する方針で運用する場合に有効である。
【0262】
また、画像取得処理であるステップS424において、検出したマーカの対象フラグを1としてもよい。これは検出したマーカもキャリブレーション対象にする方針の場合に有効である。
【0263】
また、画像取得処理であるステップS424において、検出したマーカの印刷フラグを1にしてもよい。これは検出したマーカは全て空間に設置された印刷済みのマーカと判断する方針の場合に有効である。
【0264】
また、画像取得処理であるステップS424において、検出したマーカの対象フラグを1、印刷フラグを1にしてもよい。これは検出したマーカは全て空間に設置された印刷済みのマーカと判断し、かつ印刷済みマーカをキャリブレーション対象にする方針の場合に有効である。
【0265】
また、図27に示したウィンドウにおける領域510に入力するマーカIDは1つのみに限定するものではなく、例えば、カンマで区切った複数のマーカIDや、ハイフンでつなげた範囲のマーカIDを入力するようにしても良い。これにより操作者の操作を軽減することが可能になる。
【0266】
また、操作者が指定した数だけ、自動的にマーカ定義情報の新規作成とマーカの印刷を行う処理を追加してもよい。このような処理によって、多数のマーカを新規に印刷して使用する場合、操作者の作業を軽減することが可能になる。
【0267】
また、本実施形態では、印刷済み/未印刷の2通りでしか管理していないが、印刷した回数や時間をマーカ定義情報に加え、印刷履歴によって処理を変更してもよい。例えば、複数回印刷されたマーカは重複する可能性が高いと判断し、マーカキャリブレーション対象から除外するようにしてもよい。
【0268】
また、以上説明した変形例を組み合わせてもよいことは言うまでもない。
【0269】
例えば、画像取得時に検出したマーカの印刷フラグを1にすることと、指定した数だけ自動的にマーカ定義情報テーブルに存在しないマーカIDのマーカの印刷をするような処理を組み合わせてもよい。
【0270】
このように処理する場合、使用するマーカIDを決定し、印刷する前に、予め現実空間に設置されているすべてのマーカの画像を取得し、印刷から除外する。そして除外したマーカ以外の指定した数のマーカを新規に自動生成するという運用も可能になる。
【0271】
これはキャリブレーションおよび位置合わせ処理を行う複数のシステムを隣接した空間で使用する場合、重複したマーカを使用しないように(マーカを排他的に使用するように)する場合に有効である。
【0272】
以上説明してきた変形を操作者の好みに応じてどちらにするかを予め設定できるようにしても構わない。
【0273】
[第5の実施形態]
上記第1乃至4の実施形態では、画像中に存在するマーカはすべて同等に扱っていた。しかし、これに限定されず、画像中のマーカがどれだけキャリブレーションのためのデータとして信頼できるかを、信頼度として求め、信頼度に応じて(評価して)キャリブレーション対象や処理を変更してもよい。
マーカの信頼度の例としては、
(1) 取得した画像群における指標の出現頻度
(2) 取得した画像における指標と画像取得装置とのなす角度
(3) 取得した画像における指標の画像上の面積
(4) 取得した画像のコントラスト
(5) 取得した画像における指標の画像上の位置
及び、これらの組み合わせを使用すればよい。
【0274】
(1)は、出現頻度が極端に少ないものはマーカ以外のものを誤認識したノイズと考え信頼度を低いとする方針の時に使用する。
【0275】
(2)は、角度が小さくなると画像認識によるマーカの位置姿勢計算精度が落ちるため、角度が小さいものを信頼度が低いとする方針の時に使用する。
【0276】
(3)は、指標の画像上の面積が小さいほど、マーカの位置姿勢計算精度が落ちるため、面積が小さいものを信頼度が低いとする方針の時に使用する。
【0277】
(4)は、コントラストが低いほど、画像からのマーカ検出誤差が大きくなるため、コントラストが低い画像から検出したマーカを信頼度が低いとする方針の時に使用する。
【0278】
(5)は、画像上の位置が画像の端によるほど、画像取得装置の光学的な歪の影響を受けやすいため、画像の端に位置している指標を信頼度が低いとする方針の時に使用する。
【0279】
なお言うまでもなく、以上の例を組み合わせて信頼度を決定してもよい。また、キャリブレーション対象および位置合わせ処理対象となるマーカを選択する条件は、以上説明したことに限定されず、マーカに関するすべての付帯情報を利用してよい。
【0280】
そして以上の各実施形態によれば、以下のような効果を奏することができる。即ち、任意のマーカや、重複したマーカをキャリブレーションや位置合わせ処理から除外すること、また再度処理に加えるための一連の作業が容易になる。また、除外するマーカ以外を全て再撮影したり、除外するマーカを空間から除去する必要はなくなり、キャリブレーションおよび位置合わせ処理のための設定作業の工数を削減したりすることが可能となる。
【0281】
選択の方法も操作者の手動による方法と、画像処理装置が保持しているマーカ定義情報から半自動的に行う方法を併用することで、柔軟かつ使い易い手法を提供することができる。
【0282】
さらには上記の選択方法に加えて、マーカ定義情報に応じて画像処理装置がキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者の設定作業の負荷を軽くすることができる。
【0283】
[第6の実施形態]
上記各実施形態では指標の一例としてマーカを用いた。しかし、位置合わせに利用する指標は、マーカに限定するものではなく、他にも例えば、自然特徴であっても良い。
【0284】
図31は、現実物体としての家を撮影した場合に得られる画像の一例を示す図である。例えば、図31に示すような現実空間の画像を撮影した場合に、その画像中のコーナー(図31において「×」で示した3カ所のコーナー)等を自然特徴(特徴点)として用いることができる。また、これ以外にも画像中のSIFT特徴を特徴点として用いても良い。
【0285】
自然特徴を利用した場合、第2,3の実施形態の応用として、類似した自然特徴が現実空間中に数多く存在すると判断された場合(予め定められた数よりも多い場合)、その自然特徴に対する重複フラグを「1」とする。そして、係る特徴点を、キャリブレーションや位置合わせ処理から除外する。
【0286】
図32(a)〜(c)は、類似した自然特徴が現実空間中に数多く存在する場合に、この現実空間を撮影することで得られる画像の一例を示す図である。図32(a)〜(c)に示した画像中では、×で表される自然特徴が頻発しており、例えばこの自然特徴に対して重複フラグを「1」と設定し、取り除く。
【0287】
図33(a)〜(c)はそれぞれ、図32(a)〜(c)に示した自然特徴から、重複フラグを「1」と設定した自然特徴を取り除いた場合における画像を示している図である。
【0288】
これにより、類似した自然特徴を除いたものを対象としたキャリブレーションや位置合わせ処理を行うことができる。
【0289】
また、第5の実施形態の応用として、類似した特徴の数を信頼度として用いてもよい。例えば、1枚の画像中に存在する全特徴、あるいは全画像中に存在する全特徴に関して、1/(類似した特徴の数)を求め、これを信頼度として用いてもよい。この場合、値が「1」となるときは、信頼度が最も高く、値が0に近づけば近づくほど信頼度が低いと判断される。そして、信頼度の閾値を設定し、設定された閾値よりも信頼度が低い特徴は、キャリブレーションや位置合わせ処理から除外する。
【0290】
[その他の実施形態]
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0291】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0292】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0293】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0294】
【図1】本発明の第1の実施形態で用いるマーカの構成例(フォーマット例)を示す図である。
【図2】図1に示したフォーマットに従って作成された実際のマーカの一例を示す図である。
【図3】マーカ座標系を示す図である。
【図4】本発明の第1の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図5】それぞれのマーカに対するマーカ定義情報を登録したテーブル(マーカ定義情報テーブル)の構成例を示すブロック図である。
【図6】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図7】ファイルメニューの表示例を示す図である。
【図8】編集メニューの表示例を示す図である。
【図9】ウィンドウの表示例を示す図である。
【図10】ウィンドウの表示例を示す図である。
【図11】ウィンドウの表示例を示す図である。
【図12】図6に示したGUIを用いて行う各種の処理のフローチャートである。
【図13】図6に示したGUIを用いて行う各種の処理のフローチャートである。
【図14】モードメニューの表示例を示す図である。
【図15】本発明の第2の実施形態に係るマーカ定義情報の構成例を示す図である。
【図16】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図17】図16に示したGUIを用いて行う各種の処理のフローチャートである。
【図18】図16に示したGUIを用いて行う各種の処理のフローチャートである。
【図19】本発明の第3の実施形態に係るマーカ定義情報の構成例を示す図である。
【図20】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図21】図20に示したGUIを用いて行う各種の処理のフローチャートである。
【図22】図20に示したGUIを用いて行う各種の処理のフローチャートである。
【図23】本発明の第4の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図24】本発明の第4の実施形態に係るマーカ定義情報の構成例を示す図である。
【図25】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図26】編集メニューの表示例を示す図である。
【図27】ウィンドウの表示例を示す図である。
【図28】図25に示したGUIを用いて行う各種の処理のフローチャートである。
【図29】図25に示したGUIを用いて行う各種の処理のフローチャートである。
【図30】画像処理装置100に適用可能なコンピュータのハードウェア構成を示すブロック図である。
【図31】現実物体としての家を撮影した場合に得られる画像の一例を示す図である。
【図32】(a)〜(c)は、類似した自然特徴が現実空間中に数多く存在する場合に、この現実空間を撮影することで得られる画像の一例を示す図である。
【図33】(a)〜(c)はそれぞれ、図32(a)〜(c)に示した自然特徴から、重複フラグを「1」と設定した自然特徴を取り除いた場合における画像を示している図である。
【技術分野】
【0001】
本発明は、現実空間に存在する指標の位置姿勢を求める技術に関するものである。
【背景技術】
【0002】
高品質な複合現実感を提供するための重要な技術の一つとして、現実空間と仮想空間との位置合わせ技術がある。位置合わせ技術としては従来から様々な手法が提案されているが、それらの中でも指標を撮影した画像(指標画像)からカメラの位置姿勢を計算(キャリブレーション)する方法がコストや使い勝手の点から広く利用されている。
【0003】
これらの手法の多くは、空間におけるすべての指標の位置や姿勢が既知であることを前提としており、指標の位置や姿勢を予め測定し、入力する作業が必要となる。指標には、人為的マーカ(以後、マーカ)や自然特徴が一般的に用いられている。マーカを用いた場合には、配置するマーカの数が多くなればなるほど、人が手作業で測定を行うことは非現実的な作業となる。
【0004】
位置合わせ処理を可能とする空間の範囲を広げるためには、多数のマーカを広範囲に設置することが必要となる。従ってこれら多数の広範囲に設置されたマーカの位置姿勢を効率よくかつ高精度に測定する手段が求められている。
【0005】
近年、マーカを撮影した画像から、マーカ同士の相対位置姿勢をキャリブレーションする方法が提案されている(非特許文献1参照)。
【0006】
この方法によって全てのマーカ同士の相対位置姿勢を求めた後、任意のマーカの世界座標系における位置姿勢を決定すれば、世界座標系におけるすべてのマーカの位置姿勢を求めることが可能となった。
【0007】
この方法における位置合わせ処理に必要な作業およびキャリブレーション処理の概要は以下のとおりである。
【0008】
(1.1) マーカを作成し、位置合わせ処理を行う空間内に設置する。
【0009】
(1.2) 世界座標系における位置姿勢が決定されているマーカ(基準マーカ)の位置姿勢を入力する。
【0010】
(1.3) マーカを撮影する。
【0011】
(1.4) キャリブレーションを行う。
【0012】
(ア) 複数のマーカが含まれる画像から、ある1つのマーカとカメラとの相対位置姿勢を計算する。
【0013】
(イ) 別のマーカとカメラとの相対位置姿勢を計算する。
【0014】
(ウ) 2つのマーカ間の相対位置姿勢を計算する。
【0015】
(エ) これをすべての複数のマーカが含まれる画像について行い、すべてのマーカ間の相対位置姿勢を計算する。
【0016】
(オ) 基準マーカから、基準マーカ以外のすべてのマーカ(相対マーカ)の絶対位置姿勢を計算する。
【0017】
(1.5) キャリブレーションにより位置姿勢が求められたマーカを使用して位置合わせ処理を行う。
【0018】
一般的な自然特徴を用いた位置合わせは、自然特徴データベースの作成、及び自然特徴データベースを用いたカメラの位置姿勢の推定、といった2つの工程から構成される(非特許文献2)。自然特徴データベースの作成は、マーカのキャリブレーションと同様に、現実空間を撮影することで得られる多数の画像を用いて行われる。自然特徴を用いた位置合わせ処理に必要な作業の概要は以下のとおりである。
【0019】
(2.1) 現実空間の画像を複数撮影する。
【0020】
(2.2) 画像から特徴を抽出する。
【0021】
(2.3) ある特徴の位置を、複数の画像から求める。
【0022】
(ア) 複数の画像間で、特徴の対応を行う。
【0023】
(イ) 複数の画像間の相対位置姿勢を、上記対応に基づいて求める。
【0024】
(ウ) 上記相対位置姿勢に基づいて、特徴の三次元位置を求める。
【0025】
(エ) 全ての抽出された特徴に対してこれを実施する。
【0026】
(2.4) 上記で作成された自然特徴データベースを使用して、カメラの位置姿勢を推定し、位置合わせを行う。
【非特許文献1】小竹, 内山, 山本:マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法, 日本バーチャルリアリティ学会論文誌, vol.10, No.3, pp.401-410, 2005.
【非特許文献2】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
【発明の開示】
【発明が解決しようとする課題】
【0027】
既存の手法では、マーカを利用した場合には、上記(1.3)の作業において撮影されたマーカ全てを上記(1.4)でキャリブレーションし、上記(1.5)の位置合わせ処理で使用していた。
【0028】
使用するマーカの数が増えるほど、位置合わせの精度は向上するが、位置合わせ処理およびキャリブレーション処理の負荷が増大するため、使用するマーカの数は少ないほうが望ましい。操作者が、撮影時点で必要なマーカだけを撮影するように注意することで、ある程度マーカの数を少なくすることは可能である。しかし、これには操作者の経験と技術が必要となる。そのため実際には上記(1.1)〜(1.5)の作業を繰り返し行い、最適なマーカの配置と数を体験的に決定することが行われている。
【0029】
この時、既存の手法では、任意のマーカをキャリブレーションや位置合わせ処理から除外する場合には、取得した画像の全てあるいは一部を破棄し、マーカが取得画像に含まれないようにしてから再度キャリブレーションを行っていた。もしくはマーカを空間から除去した後、再度画像を取得し、キャリブレーションを行っていた。
【0030】
また、キャリブレーションおよび位置合わせ処理を行う複数の画像処理装置を隣接した空間で使用する場合、(1.1)の作業において自分の画像処理装置が使用するために設置したマーカ以外に、隣接した画像処理装置が使用するために設置したマーカを偶然撮影する可能性が高くなる。この場合、不要な位置合わせ処理およびキャリブレーション処理が発生してしまう。
【0031】
さらに、自分の画像処理装置が使用するために配置したマーカのマーカIDと、隣接した画像処理装置が使用するために配置されているマーカのマーカIDが重複する可能性が存在する。この場合、キャリブレーションおよび位置合わせ処理が正しく動作しなくなってしまう。
【0032】
マーカIDの重複は、例えば(1.1)の作業において予備用として作成したマーカを不注意にキャリブレーションおよび位置合わせ処理を行う空間に放置したのを偶然撮影してしまうことでも発生する。また、マーカIDの重複は画像処理によるマーカの誤認識によっても発生する。
【0033】
マーカの誤認識はマーカに類似した被写体の撮影、マーカを撮影する装置の露出・絞り等のパラメータ、撮影環境における光の状況などの外乱により発生し、画像処理装置の操作者が十分注意しても発生しないようにすることは困難であった。
【0034】
既存の手法では、重複したマーカをキャリブレーションや位置合わせ処理から除外するためには、取得した画像の全てあるいは一部を破棄した後、重複したマーカ以外の全てのマーカを再撮影していた。
【0035】
一方、自然特徴を利用した場合には、上記(2.2)の作業において抽出された特徴の位置を、上記(2.3)の処理で算出し、自然特徴データベースを作成し、上記(2.4)の位置合わせ処理で使用していた。
【0036】
既存の方法では、類似した特徴が数多く出現する可能性がある。この場合、自然特徴データベースの作成や、位置合わせ処理において、類似した特徴を同一の特徴として誤って対応付けることがあり、正しく動作しない危険性がある。
【0037】
本発明は以上の問題に鑑みてなされたものであり、自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用する指標を選択する為の技術を提供することを目的とする。
【0038】
また、本発明の別の目的は、マーカ定義情報に応じて、キャリブレーションの実行に必要な作業を操作者に通知することで、操作者が行う位置合わせのための設定作業の負荷を軽減することにある。
【課題を解決するための手段】
【0039】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【0040】
即ち、複数の指標が配された現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像中の指標を識別する識別工程と、
前記識別工程で識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算工程と
を備えることを特徴とする。
【0041】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【0042】
即ち、複数の指標が配された現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像中の指標を識別する識別手段と、
前記識別手段によって識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算手段と
を備えることを特徴とする。
【発明の効果】
【0043】
本発明の構成によれば、自動的もしくは半自動的にキャリブレーションおよび位置合わせ処理に使用するマーカを選択することができる。
【発明を実施するための最良の形態】
【0044】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【0045】
[第1の実施形態]
本実施形態では、マーカを指標の一例として用いた場合について説明する。
【0046】
図1は、本実施形態で用いるマーカの構成例(フォーマット例、パターン例)を示す図である。同図に示す如く、本実施形態で用いるマーカは、4×4の小正方形でもって構成されており、更に4×4の小正方形は、4隅(blk1〜blk3,wht)、c1〜c4、x1〜x8に分類される。また、各小正方形は白か黒の何れかで塗りつぶされており、塗りつぶされた色によってビット値「0」若しくはビット値「1」を表している。例えば白で塗りつぶされている小正方形はビット値「0」を表しているし、黒で塗りつぶされている小正方形はビット値「1」を表している。
【0047】
先ず、4隅の小正方形(blk1〜blk3,wht)について説明する。4隅の小正方形は何れか1つが白(wht)で、残り3つが黒(blk1〜3)である。これらはマーカ座標系を定義するために使用されるものである。マーカ座標系とは、マーカ毎に定義される座標系であって、より具体的にはblk1とblk2とを結ぶ線分の方向をx座標軸の正方向、blk3とblk2とを結ぶ線分の方向をy座標軸の正方向、マーカの法線方向をz座標軸の正方向、マーカの中心位置を原点とする座標系である。図3は、マーカ座標系を示す図である。マーカの世界座標系における位置は、世界座標系におけるマーカ座標系原点の位置で決定される。また、マーカの世界座標系における姿勢は、マーカ座標系が世界座標系を基準にどのように回転しているかによって決定される。
【0048】
このことから、このようなマーカを撮像するカメラとマーカとの相対位置姿勢は、マーカ画像におけるマーカの形状、辺の長さ、中心位置を用いて、周知の技術により求めることができる。
【0049】
次に、c1〜c4、x1〜x8について説明する。x1〜x8は、マーカ固有の識別子(マーカID)を表すためのものである。x1〜x8で8ビットを表現できるので、マーカIDは0〜255の値を取ることができる。c1〜c4は検査ビットであり、画像処理による情報ビットの誤認識が発生した場合の訂正に使用される。
【0050】
検査ビットの値は以下の式から求められる。
【0051】
c1=not(x1+x2+x3 +x5+x6 )
c2=not( x2+x3+x4 +x6+x7 )
c3=not( x3+x4+x5 +x7+x8)
c4=not(x1 +x4+x5+x6 +x8)
図2は、図1に示したフォーマットに従って作成された実際のマーカの一例を示す図である。上述の通り、各小正方形は白若しくは黒でもって塗りつぶされており、それぞれの小正方形は割り当てられた情報を表している。なお、マーカのサイズについては特に限定するものではないが、本実施形態では、現実空間中に配する全てのマーカの一辺の長さについては全て同じであるとする。
【0052】
次に、このようなマーカの位置姿勢を求める、本実施形態に係る画像処理装置について説明する。図4は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。
【0053】
同図において100は画像処理装置本体を示している。画像入力部101は、ディジタルカメラやハードディスク装置などの外部装置から供給される画像を取得する。ここで取得する画像は、図1〜3を用いて説明したマーカが複数配置された現実空間の画像である。画像入力部101は取得した画像を後段の画像取得部102に供給する。
【0054】
画像取得部102は、画像入力部101から受けた画像を、本装置が扱うことのできるフォーマットに変更する等、様々な前処理をこの画像に対して行う。処理済みの画像は後段の画像管理部106に送出する。
【0055】
画像管理部106は、画像取得部102から画像を受けると、これを記憶部110に格納する処理を行う。また、必要に応じて記憶部110に格納されている画像や、後述するマーカ定義情報を読み出し、指標管理部107や画像合成部111に送出する。
【0056】
記憶部110は、画像管理部106から受けた画像や、後述するマーカ定義情報を記憶するためのものである。
【0057】
ここで、マーカ定義情報とは、マーカに関する様々な情報の集まりで、マーカ毎に存在する。本実施形態では、マーカ定義情報は、マーカID、マーカ状態、マーカサイズ、マーカ位置姿勢により構成されている。マーカ定義情報は、例えば、図5に示すようなテーブル形式でもって記憶部110に格納されている。
【0058】
図5は、それぞれのマーカに対するマーカ定義情報を登録したテーブル(マーカ定義情報テーブル)の構成例を示すブロック図である。同図に示す如く、テーブルには、それぞれのマーカについて、「マーカID」、「マーカ状態」、「マーカサイズ」、「マーカの位置、姿勢」が登録されている。
【0059】
「マーカID」は上述の通り、マーカに記されたx1〜x8に対応するものである。即ち、マーカIDにはビット列x1〜x8が示す値が登録されている。
【0060】
「マーカ状態」は同図に示す如く、基準マーカフラグ、検出フラグ、対象フラグ、完了ステータスにより構成されている。
【0061】
基準マーカフラグとは、マーカが基準マーカであるのか否かを示すフラグである。基準マーカフラグが「1」であれば基準マーカであることを示し、「0」であれば基準マーカではない(換言すれば相対マーカである)ことを示している。同図ではマーカID=7のマーカのみが基準マーカフラグ=1であり、このマーカのみが基準マーカであることを示している。
【0062】
検出フラグとは、マーカが、画像取得部102から送出された画像から検出されたか否かを示すフラグである。検出フラグが「1」であれば検出されたことを示し、「0」であれば検出されなかったことを示す。同図では、マーカID=1,7,45,125のマーカが検出フラグ=1であり、マーカID=1,7,45,125のマーカが画像から検出されたことを示している。
【0063】
対象フラグとは、マーカが位置姿勢計算対象である(即ちキャリブレーション対象である)か否かを示すフラグである。対象フラグが「1」であれば、計算対象となることを示し、「0」であれば計算対象ではないことを示す。同図では、マーカID=1,7,45のマーカが対象フラグ=1であり、マーカID=1,7,45のマーカはキャリブレーション対象であることを示している。一方、マーカID=125のマーカは対象フラグ=0であり、キャリブレーション対象ではないことを示している。
【0064】
完了ステータスとは、マーカのキャリブレーションが実行されたか否かを示すフラグである。完了ステータスが「1」であれば、位置姿勢計算が実行されており、「0」であれば位置姿勢計算が実行されておらず、「2」であれば、位置姿勢計算を実行したが計算に失敗して正しく位置姿勢が求められていないことを示している。同図では、マーカID=1のマーカは完了ステータス=2であり、このマーカの位置姿勢は正しく求められていない。また、マーカID=7,45のマーカは完了ステータス=1であり、これらのマーカにこれらのマーカについては正しく位置姿勢が求められている。マーカID=125のマーカの完了ステータス=0であり、このマーカについては未だ位置姿勢計算が実行されていない。
【0065】
「マーカサイズ」は、マーカの一辺の長さを示している。上述の通り、本実施形態では、全てのマーカは一辺が同じ長さを有しているものとしている。同図では、マーカID=1,7,45,125のマーカは全て一辺が「40」となっている。
【0066】
「マーカの位置、姿勢」はそれぞれ、マーカの世界座標系における位置、姿勢を示している。ここでマーカの姿勢は回転軸ベクトルと回転角で表現されている。すなわち世界座標系とマーカ座標系の各軸を一致させた状態で、回転軸ベクトルを中心としてマーカ座標系を右に回転させた状態を表している。
【0067】
以上説明したテーブルのデータが記憶部110に登録されている。
【0068】
図4に戻って次に、指標管理部107は、記憶部110や画像管理部106から送出された情報を指標位置姿勢計算部108や指標抽出部109に送出する処理を行う。
【0069】
指標位置姿勢計算部108は、後述する処理により位置姿勢計算対象として特定されたマーカの世界座標系における位置姿勢を計算する処理を行う。指標抽出部109は、記憶部110から指標管理部107を介して受けた画像からマーカを検出する処理を行う。指標位置姿勢計算部108、指標抽出部109のそれぞれが求めた結果は指標管理部107に送出される。即ち、指標管理部107は、指標に係る様々な情報を管理している。
【0070】
画像合成部111は、画像取得部102から送出された画像上における各マーカのうち、後述する処理により位置姿勢計算対象として特定されたマーカについて、マーカIDなどのマーカ情報やマーカの輪郭形状を理解しやすくするコンピュータグラフィックス(CG)を生成する。そして、生成したCGを記憶部110から指標管理部107を介して受けた画像上に重畳する処理を行う。画像合成部111による処理後の画像は後段のユーザインターフェース管理部103に送出される。
【0071】
ユーザインターフェース管理部103は、表示部105の表示画面上に表示する情報を管理するものであり、画像合成部111から受けた画像を表示部105に送出する。また、ユーザインターフェース管理部103は、制御部104から受けた各種の指示を受け、受けた指示に応じて上記各部を制御し、制御結果に応じた表示を表示部105の表示画面上に行う処理も行う。
【0072】
表示部105は、CRTや液晶画面などにより構成されており、各種の処理結果を画像や文字などでもって表示することができる。制御部104は、本装置の操作者からの操作指示を受け、ユーザインターフェース管理部103に通知する。
【0073】
図30は、上記画像処理装置100に適用可能なコンピュータのハードウェア構成を示すブロック図である。
【0074】
3001はCPUで、RAM3002やROM3003に格納されているプログラム(コンピュータプログラム)やデータを用いて本コンピュータ全体の制御を行うと共に、本コンピュータが行う後述の各処理を実行する。例えば、図4に示した画像処理装置100の構成において、画像入力部101、記憶部110、表示部105を除く各部が有する機能は、CPU3001が有する機能の一部として機能する。
【0075】
3002はRAMで、外部記憶装置3006からロードされたプログラムやデータ、I/F(インターフェース)3007を介して外部(本実施形態の場合にはカメラなどの撮像装置)から取得したデータ(本実施形態の場合には撮像画像)を一時的に記憶するためのエリアを有する。更にRAM3002は、CPU3001が各種の処理を実行する際に用いるワークエリアを有する。このように、RAM3002は、各種の用途に応じて適宜エリアを提供することができる。
【0076】
3003はROMで、本コンピュータの設定データやブートプログラムなどを格納する。
【0077】
3004は操作部で、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をCPU3001に対して入力することができる。
【0078】
3005は表示部で、CRTや液晶画面等により構成されており、CPU3001による処理結果を画像や文字などでもって表示することができる。表示部3005は、図4における表示部105に相当するものである。
【0079】
3006は外部記憶装置で、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはOS(オペレーティングシステム)や、上記記憶部110が保持する各種の情報(データ)、本コンピュータが行う後述の各処理をCPU3001に実行させるためのプログラムやデータが保存されている。これらのプログラムやデータはCPU3001による制御に従って適宜RAM3002にロードされる。そしてCPU3001はこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータが行う後述の各処理を実行することになる。
【0080】
3007はI/Fで、本実施形態の場合には、上記マーカが複数配された現実空間を撮像する撮像装置を本コンピュータに接続するためのインターフェースとして機能するものである。この撮像装置が撮像した画像は、このI/F3007を介して本コンピュータのRAM3002や外部記憶装置3006に入力される。
【0081】
3008は上述の各部を繋ぐバスである。
【0082】
なお、本実施形態に係る画像処理装置100に適用可能なコンピュータのハードウェア構成については同図に示した構成に限定するものではなく、画像処理装置100が行う後述の各処理を実行可能な構成であれば良い。
【0083】
次に、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)について説明する。図6は、このGUIの表示例を示す図である。なお、同図のGUIに係るプログラムやデータは外部記憶装置3006に保存されている。これをRAM3002にロードし、CPU3001がこのロードされたプログラムやデータを用いて処理を実行することで、同図に示した構成を有するウィンドウが表示部3005の表示画面上に表示される。これは、以下の説明で登場するその他のウィンドウについても同様である。
【0084】
なお、以下の説明では特に触れない限りは、GUIに対する操作は本コンピュータの操作者が操作部3004を用いて行うものとし、この操作によって実行される処理についてはCPU3001が行うものとする。
【0085】
図6に示したGUIにおいて「ファイル」メニュー210を指示すると、表示部3005の表示画面上には図7に示すようなファイルメニューが表示される。図7に示したファイルメニューにおいて「マーカ定義ファイルを開く」メニュー212を指示すると、図10に示したウィンドウが表示部3005の表示画面上に表示される。図10に示したウィンドウにおいて300は、外部記憶装置3006に保存されているマーカ定義ファイルのファイル名を一覧表示するための領域であり、本コンピュータの操作者は操作部3004を用いて、この領域300内に表示されているファイル名のうち何れか1つを選択することができる。マーカ定義ファイルとは、図5に示したテーブルのデータを記録したファイルである。複数のマーカ定義ファイルを外部記憶装置3006に保存させておくと、図10に示したGUIでこれらのファイルを選択することができる。
【0086】
ここで、操作者がファイルを1つ選択して「OK」ボタン310を指示すると、画像処理装置は同図に示したウィンドウの表示を消去した後、選択したファイルの内容に従って、図6のGUIにおける領域230内の表示を更新する。領域230内に表示されている情報の詳細については後述する。
【0087】
図7のファイルメニューに戻って、「マーカ定義ファイルを新規作成」メニュー214を指示すると、表示部3005の表示画面上には図11に示すようなウィンドウが表示される。図11に示したウィンドウにおいて400は、新規作成するマーカ定義ファイルのファイル名を入力するための領域である。本コンピュータの操作者が操作部3004を用いて領域400に新規のマーカ定義ファイルのファイル名を入力後「OK」ボタン410を指示すると、画像処理装置は同図に示したウィンドウの表示を消去した後、領域400内に入力したファイル名を有するマーカ定義ファイルを外部記憶装置3006内に作成する。
【0088】
図7のファイルメニューに戻って、「マーカ定義ファイルを保存」メニュー216を指示すると、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。
【0089】
「終了」メニュー218を指示すると、CPU3001はOSが有する周知のシャットダウン機能を用いてシャットダウンに係る処理を行い、本コンピュータのシャットダウンを行う。
【0090】
図6に示したGUIに戻って、「編集」メニュー220を指示すると、表示部3005の表示画面上には、図8に示した編集メニューが表示される。図8に示した編集メニューにおいて「マーカ定義情報の新規作成」メニュー222を指示すると、マーカ定義情報が新規に作成され、現在開いているマーカ定義ファイルに追加登録される。そして追加登録後、現在開いているマーカ定義ファイルの内容に従って、図6のGUIにおける領域230内の表示を更新する。ここで、マーカIDの重複を避けるため、新規作成するマーカ定義情報のマーカIDは、マーカ定義情報テーブルにおいて未使用の値が使用される。新規作成されたマーカ定義情報は、後述するウィンドウ上で変更することができる。
【0091】
図8の編集メニューに戻って、「マーカ定義情報の削除」メニュー224を指示すると、図6のGUIにおける領域230内で現在選択しているマーカ定義情報が、現在開いているマーカ定義ファイルから削除される。そして削除後、現在開いているマーカ定義ファイルの内容に従って、図6のGUIにおける領域230内の表示を更新する。この更新表示により、削除されたマーカ定義情報は表示されなくなる。
【0092】
「マーカ定義情報の編集」メニュー226を指示すると、図9に示すようなウィンドウが表示される。同図に示したウィンドウは、領域230内で現在選択されているマーカ定義情報の編集に使用する。250はウィンドウ本体である。
【0093】
252は、現在選択されているマーカ定義情報におけるマーカIDを入力するための領域である。この領域252に入力した値が、現在選択されているマーカ定義情報におけるマーカIDとなる。
【0094】
254は、現在選択されているマーカ定義情報におけるマーカ位置を入力するための領域である。この領域254に入力した値が、現在選択されているマーカ定義情報におけるマーカ位置となる。
【0095】
256は、現在選択されているマーカ定義情報におけるマーカ姿勢を入力するための領域である。この領域256に入力した値が、現在選択されているマーカ定義情報におけるマーカ姿勢となる。
【0096】
258は、現在選択されているマーカ定義情報におけるマーカサイズを入力するための領域である。この領域258に入力した値が、現在選択されているマーカ定義情報におけるマーカサイズとなる。なお、本実施形態では、領域258に入力したマーカサイズは、全てのマーカのマーカ定義情報に反映されるものとする。
【0097】
259は、現在選択されているマーカ定義情報におけるマーカ状態に含まれている基準マーカフラグを編集するためのプルダウンメニューである。このプルダウンメニュー259には「基準マーカ」、「相対マーカ」が表示され、何れかを選択することができる。操作者が「基準マーカ」を選択すれば基準マーカフラグは「1」に設定され、「相対マーカ」を選択すれば基準マーカフラグは「0」に設定される。
【0098】
ただし、本実施形態では、マーカ定義ファイルにおいて基準マーカは1つのみ存在可能とする。従って、基準マーカフラグを「1」にしたマーカ定義情報が既に存在する場合、他のマーカ定義情報を操作しても「相対マーカ」しか選択することができない。
【0099】
251は「OK」ボタンである。これを指示することで、選択中のマーカ定義情報を、各領域252〜259に入力された各情報で更新する処理を行う。即ち、現在選択されているマーカ定義情報におけるマーカID、マーカ位置、姿勢、マーカサイズ、基準マーカフラグをそれぞれ、領域252〜259に入力した情報に更新する処理を行う。但し、領域252に入力したマーカIDが同じファイル内で使用されていた場合には警告を表示部3005の表示画面上に表示し、マーカ定義情報の更新処理は行わない。
【0100】
次に、図6のGUIにおける領域230について説明する。領域230内には、現在開いているマーカ定義ファイル内に記述されている各マーカのマーカ定義情報に応じた表示がなされている。より詳しくは、各行に1つのマーカに対するマーカ定義情報に応じた表示がなされている。
【0101】
231はスライダバーである。上部、若しくは下部を指示することで、領域230内に表示している情報を上方、若しくは下方にスクロールさせることができる。
【0102】
232はチェックボックスで、対応するマーカ定義情報中の対象フラグを設定するためのものである。チェックする(チェックマークがチェックボックス内に表示される)と対象フラグ=1となり、チェックを外す(チェックマークがチェックボックス内から消去される)と対象フラグ=0となる。例えば、マーカID=2(マーカID=2)の行にあるチェックボックスを指示するとチェックボックス内にチェックマークが表示される。加えてマーカID=2のマーカの対象フラグは「1」となる。更に、再度ID=2の行にあるチェックボックスを指示すると、チェックボックス内からチェックマークが消去される。加えてマーカID=2のマーカの対象フラグは「0」となる。このように、各マーカについて任意に対象フラグを設定することができる。これは、本コンピュータの操作者が位置姿勢計算対象のマーカを任意に選択できることを示している。なお、チェックボックスに対する操作以外に、何らかの処理により対象フラグが操作された場合であっても、この操作結果はチェックボックス内のチェックマークに反映される。
【0103】
234は、対応するマーカ定義情報中の完了ステータスをアイコンとして表示する領域である。対応するマーカの位置姿勢計算が実行されている場合に、完了ステータス=1となる。この場合領域234内にはアイコン「◎」が表示される。また、対応するマーカの位置姿勢計算が実行されているが失敗した場合には、完了ステータス=2となる。この場合領域234内にはアイコン「×」が表示される。また、対応するマーカの位置姿勢計算が実行されていない場合には、完了ステータス=0となる。この場合には領域234内には何も表示されない。同図の場合、ID=2のマーカの行には領域234内にアイコン「◎」が表示されているので、位置姿勢計算が実行されていると判断することができる。一方、ID=1のマーカの行には領域234内に何も表示されていないので、位置姿勢計算が未だ実行されていないと判断することができる。もちろん、完了ステータスの値に応じて表示するアイコンは如何なるものであっても良く、完了ステータスの値が視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【0104】
236は、対応するマーカ定義情報中の検出フラグをアイコンとして表示する領域である。対応するマーカが画像から検出された場合に検出フラグ=1となる。この場合には領域236内にはカメラのアイコンが表示される。また、対応するマーカが画像から検出されなかった場合に検出フラグ=0となる。この場合には領域236内には何も表示されない。同図の場合、ID=2のマーカの行には領域236内にカメラのアイコンが表示されているので、画像から検出されていると判断することができる。一方、ID=1のマーカの行には領域236内に何も表示されていないので、画像からは検出されていないと判断することができる。もちろん、検出フラグの値に応じて表示するアイコンは如何なるものであっても良く、検出フラグの値が視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【0105】
238は、対応するマーカ定義情報中のマーカIDを表示する領域である。基準マーカの場合は下線付きでマーカIDが表示される。同図の場合、ID=2のマーカIDに下線が表示されているので、これが基準マーカであると判断することができる。もちろん、基準マーカフラグの値に応じて表示するものは下線に限定するものではなく、基準マーカがどれであるのかが視覚的に理解できれば、表示する情報は如何なるものであっても良い。
【0106】
260は、現実空間画像を表示するための領域である。この領域260内に表示する現実空間画像は、I/F3007を介してRAM3002に取得したものであっても良いし、外部記憶装置3006からRAM3002に取得した画像であっても良い。また、後述する領域270内に表示している1以上のサムネイル画像のうち選択されたサムネイル画像を拡大したもの(サムネイルを拡大処理した画像であっても良いし、サムネイルの作成元を別途用意しておき、これを用いても良い)であっても良い。表示される画像は、複数のマーカが配された現実空間の画像である。また、領域260内には、現実空間の画像上に、各マーカのIDや輪郭を示すCGが重畳表示されている。
【0107】
270は、I/F3007を介して取得した現実空間画像のサムネイルを一覧表示するための領域である。272はスライダバーで、左端、右端を指示することで、領域270内に表示されている情報を左方、右方にスクロールさせることができる。領域270内に表示されている画像のうち1つを指示すると、先ず、選択したサムネイルに枠が表示される。そして、指示した画像の拡大画像(サムネイルを拡大処理した画像であっても良いし、サムネイルの作成元を別途用意しておき、これを用いても良い)が上述の通り、領域260内に表示される。
【0108】
282は、I/F3007を介して撮像装置から送出される各フレームの画像(即ち動画像)を順次外部記憶装置3006に取得すると共に、領域260内に順次表示させる指示を入力する為に押下するボタンである。
【0109】
284は、押下すると、その時点でI/F3007を介して取得した1フレームのサムネイルを作成し、領域270内に追加表示する指示を入力するために押下するボタンである。もちろん、取得したフレームの画像もまた、外部記憶装置3006内に記憶する。なお、ボタン284は、動画像における1フレームを取得するために押下するものであるので、動画像を取得するためのボタン282が指示されている場合にのみ押下可能である。1フレームの画像を取得すると、この1フレームの画像からマーカの検出処理を行い、検出したマーカに係る情報を現在開いているマーカ定義ファイルに記述する。更に、この処理によって更新したマーカ定義ファイルに従って、上記領域230内の表示を更新する。
【0110】
286は、領域270内で現在選択しているサムネイルを削除する指示を入力するためのボタンである。なお、この削除対象のサムネイルが、オリジナルの画像を縮小することで作成したものであれば、このオリジナルの画像もまた削除する。また、削除した画像にマーカが含まれていれば、現在開いているマーカ定義ファイルにおいてこのマーカに関する情報も削除する。また、この処理により更新したマーカ定義ファイルに従って上記領域230内の表示を更新する。
【0111】
288は、現在開いているマーカ定義ファイルにおいて対象フラグ=1のマーカの位置姿勢計算を計算する指示を入力するためのボタンである。
【0112】
図12,13は、上記GUIを用いて行う各種の処理のフローチャートである。なお、図12,13のフローチャートに従った処理をCPU3001に実行させるためのプログラムやデータは外部記憶装置3006に保存されている。これをCPU3001による制御に従って適宜RAM3002にロードする。そして、CPU3001がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは以下説明する各処理を実行する。
【0113】
ここで、キャリブレーションの実行が行われるか否かは、操作者による選択のみだけではなく、マーカ定義情報のマーカ状態によって決定される。よって処理全体の中からマーカ定義情報を変更する処理に注目して説明する。
【0114】
また、以下の処理を解する前段では既に図6のGUIに係るプログラムやデータがRAM3002にロードされ、CPU3001がこれを用いて処理を実行しているので、表示部3005の表示画面上には図6のGUIが表示されている。
【0115】
図6のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知すると、処理をステップS100を介してステップS101に進める。ステップS101では、図11に示すようなウィンドウを表示部3005の表示画面上に表示する。本コンピュータの操作者はこのウィンドウの領域400に新規作成するマーカ定義ファイルのファイル名を入力する。ステップS101では更に領域400に入力されたファイル名を取得する。そして処理をステップS102に進め、ステップS101で取得したファイル名を有するマーカ定義ファイルを外部記憶装置3006内に作成する。作成したファイル内のマーカ定義情報テーブルは空に設定される。そして処理をステップS108に進め、外部記憶装置3006内に既に取得している現実空間画像を全て削除し、領域(取得画像表示領域)270内の表示を更新する。これにより、領域270内には何も表示されていない状態となる。そして処理をステップS146に進め、領域230内の表示を更新する。即ち、領域230内には何も表示されてない状態となる。そして処理を上記ステップS100に戻す。
【0116】
一方、図6のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知すると、処理をステップS100、ステップS105を介してステップS106に進める。ステップS106では、図10に示すようなウィンドウを表示部3005の表示画面上に表示する。本コンピュータの操作者はこのウィンドウにおいてマーカ定義ファイルを1つ選択する。ステップS106では更に、選択されたマーカ定義ファイルを外部記憶装置3006からRAM3002にロードする。そして処理をステップS107に進め、ロードされたマーカ定義情報テーブルの検出フラグ、対象フラグを共に0に初期化する。そしてステップS108,S146における処理を行い、処理をステップS100に戻す。
【0117】
一方、図6のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS100,S105,S110を介してステップS112に進める。ステップS112では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報のマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、完了ステータスは全て0に初期化される。加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS146における処理を行った後、処理をステップS100に戻す。
【0118】
一方、図6のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知すると、処理をステップS100,S105,S110,S114を介してステップS116に進める。ステップS116では、領域230内で現在選択中のマーカ定義情報を、マーカ定義ファイルから削除する処理を行う。そしてステップS146における処理を行った後、処理をステップS100に戻す。
【0119】
一方、図6のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知すると、処理をステップS100,S105,S110,S114、S118を介してステップS120に進める。ステップS120では、図9に示すようなウィンドウを表示部3005の表示画面上に表示する。本コンピュータの操作者はこのウィンドウにおける各領域252〜259のうち1以上に対して、対応する情報を入力する。そして「OK」ボタン251が指示されると、ステップS120では更に、各領域252〜259に入力された情報を取得する。そして、領域252から取得したマーカIDが、現在開いているマーカ定義ファイル内に2以上存在するか否かをチェックする。
【0120】
このチェックの結果、2以上存在する場合には処理をステップS140に進め、表示部3005の表示画面上に警告を表示する。そして処理をステップS150に進める。ステップS150以降の処理については後述する。一方、2以上存在しない場合には処理をステップS121に進め、領域230内で現在選択されているマーカ定義情報を、ステップS120で取得した情報に更新する処理を行う。そしてステップS146における処理を行う。ステップS146における領域230内の表示更新の際に、基準マーカフラグ=1のマーカIDについては下線を表示する。そしてその後、処理をステップS100に戻す。
【0121】
一方、図6のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS100,S105,S110,S114,S118,S122を介してステップS124に進める。ステップS124では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在かを調べ、存在する場合には、このマーカ定義情報の対象フラグ、検出フラグを共に1に設定する。即ち、画像から検出されたマーカについては検出した旨、及び位置姿勢の計算対象とする旨を、このマーカのマーカ定義情報に記録する。
【0122】
一方、ステップS124において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、対象フラグ、検出フラグを共に1に設定する。
【0123】
そして処理をステップS125に進め、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そしてステップS146における処理を行った後に、処理をステップS100に戻す。
【0124】
一方、図6のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS100,S105、S110,S114,S118,S122,S126を介してステップS128に進める。
【0125】
ステップS128では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像から、マーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0126】
そして処理をステップS129に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除する処理を行う。そしてステップS146における処理を行った後に、処理をステップS100に戻す。
【0127】
これらの処理により、画像の削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。
【0128】
一方、図6のGUIにおいてチェックボックス232に対する指示を検知すると、処理をステップS100,S105,S110,S114,S118,S122,S126、S130を介してステップS132に進める。ステップS132では、指示されたチェックボックス232に対応するマーカ定義情報(指示されたチェックボックス232と同行に表示しているマーカIDを有するマーカ定義情報)内の対象フラグを反転させる。即ち、現在対象フラグが「1」であれば「0」にするし、現在対象フラグが「0」であれば「1」にする。そしてステップS146における処理を行った後、処理をステップS100に戻す。
【0129】
一方、図6のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS100,S105,S110,S114,S118,S122,S126、S130、S134を介してステップS136に進める。
【0130】
ステップS136では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS140に進める。
【0131】
ステップS140では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS150に進める。ステップS150以降の処理については後述する。
【0132】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS138に進める。ステップS138では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり、且つ検出フラグ=0となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS140に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS150に進める。ステップS150以降の処理については後述する。
【0133】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり、且つ検出フラグ=0となるマーカ定義情報が存在しない場合には処理をステップS142に進める。
【0134】
ステップS142では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS144に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS146における処理を行い、その後、処理をステップS100に戻す。
【0135】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図6のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS100,S105,S110,S114,S118,S122,S126、S130、S134、S150を介してステップS152に進める。なお、ステップS140からステップS150に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS152に進めるし、検知していなければ処理をステップS154に進める。
【0136】
ステップS152では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1のマーカ定義情報を利用して位置合わせ処理を行えば、操作者が選択して位置姿勢を計算したマーカを利用した位置合わせ処理を行うことが可能になる。
【0137】
そして処理をステップS154に進める。ステップS154では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS100に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0138】
以上の説明により、本実施形態によれば、画像から検出されたマーカのうち、位置姿勢計算対象のマーカと基準マーカを、操作者が設定することができる。
【0139】
また、上記処理では、ステップS124による処理で、画像から検出したマーカを自動的に位置姿勢計算対象とすると共に、この位置姿勢計算対象のうち更に、本コンピュータの操作者が位置姿勢計算対象を選択することができ(半自動あるいは手動で選択することができ)、柔軟かつ使い易い手法を提供することが可能となった。
【0140】
さらには上記の選択方法に加えて、ステップS112、S121、S136、S138における処理のように、マーカ定義情報に応じてキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者が行う位置合わせための設定作業の負荷を軽くすることが可能になった。
【0141】
なお、マーカ定義情報新規作成時の処理であるステップS112において、追加されるマーカの対象フラグを0としたが、これを1としてもよい。この処理によって、システムは、操作者がマーカ定義情報を作成したマーカについて画像取得およびキャリブレーションを行って位置合わせ処理で使用するように誘導することができる。この処理は操作者が位置あわせに使用するマーカをマーカ定義情報の有無で管理したい場合に有効である。
【0142】
また、画像取得時の処理であるステップS124において、マーカ画像から検出されたマーカの対象フラグを1に変更していたが、変更しないようにしてもよい。この処理は、操作者がキャリブレーションするマーカを手動で選択することを重視する場合に有効である。
【0143】
また、画像削除時の処理であるステップS128において、画像中に存在しないマーカのマーカ定義情報を削除しているが、マーカ定義情報の検出フラグを0にするだけでもよい。この処理は、操作者が一度検出されたマーカのマーカ定義情報を残して管理したい場合に有効である。
【0144】
以上説明してきた変形を操作者の好みに応じてどちらにするかを予め設定できるようにしても構わない。
【0145】
[第2の実施形態]
第1の実施形態では、画像から検出された全てのマーカ、若しくは検出された全てのマーカのうち操作者が選択したマーカの位置姿勢を求めていた。本実施形態では、操作者が、位置姿勢の計算対象外とするマーカを撮像して、積極的に位置姿勢計算対象外のマーカを決定する。このような実施形態は、キャリブレーションおよび位置合わせ処理を行う装置を複数、隣接した空間で使用する状況で、他の装置が使用するマーカをキャリブレーションおよび位置合わせ処理で使用しない場合に有効である。
【0146】
なお、本実施形態は第1の実施形態に係る構成を前提としているが、本実施形態が第1の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第1の実施形態と同様のものであるとする。
【0147】
図15は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第1の実施形態と同様、1つのマーカについて1つ存在するものであるが、本実施形態に係るマーカ定義情報は第1の実施形態に係るマーカ定義情報におけるマーカ状態に「除外フラグ」を加えた構成を有する。
【0148】
除外フラグとは、マーカが位置姿勢計算処理の対象外であるか否かを示すフラグで、「1」であれば対象外、「0」であれば対象外としないことを示す。本実施形態では除外フラグの規定値は「0」とする。
【0149】
図16は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。図16に示したGUIは、上記図6のGUIに「モード」メニュー240を加えたものである。更に、領域230内において、マーカID=7,10における領域236に示すように、アイコン上に除外フラグの値を反映した「×」のアイコンが重畳表示されている点が図6のGUIとは異なる。
【0150】
図16に示したGUIにおいて「モード」メニュー240を指示すると、表示部3005の表示画面上には、図14に示すようなモードメニューが表示される。図4に示したモードメニューにおいて「取得モード」メニュー242を指示すると、取得モードが設定され、撮像装置が撮像した画像から検出したマーカは位置姿勢計算対象となる。即ち、「取得モード」メニュー242を指示した場合には、画像からマーカを識別すると、このマーカの除外フラグを「0」に設定し、以降、第1の実施形態と同様の動作を行う。
【0151】
一方、「除外」モード244を指示すると、除外モードが設定され、撮像装置が撮像した画像から検出したマーカは位置姿勢計算対象外となる。即ち、「除外」モード244を指示した場合には、画像からマーカを識別すると、このマーカの除外フラグを「1」に設定する。
【0152】
即ち、取得モードで画像から検出されたマーカについては、検出フラグは1に設定され、除外フラグは0に設定される。一方、除外モードで画像から検出されたマーカについては、検出フラグは1に設定され、除外フラグは1に設定される。
【0153】
そして、領域236には、第1の実施形態と同様に、検出フラグの値に応じたアイコンを表示するのである。これに加えて、本実施例では除外フラグの値に応じたアイコンを重畳表示する。同図では、マーカID=7,10に対応する領域236には「×」のアイコンが表示されているが、これはマーカID=7,10に対応する除外フラグが1であることを示している。なお、除外フラグ=0である場合には領域236には「×」のアイコンは表示されない。もちろん、除外フラグの値に応じて表示するアイコンは如何なるものであっても良く、除外フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【0154】
図17,18は、図16に示したGUIを用いて行う各種の処理のフローチャートである。図16のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知した場合に行う処理(ステップS200、S201、S202、S208、S246)はそれぞれ、図12におけるステップS100,S101,S102,S108,S146と同じであるので、説明は省略する。
【0155】
また、図16のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知した場合における処理(ステップS205,S206,S207,S208,S246)はそれぞれ、図12におけるステップS105,S106,S107,S108,S146と同様であるが、ステップS207では、検出フラグ、対象フラグに加え、除外フラグについても0に初期化する。
【0156】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS200,S205,S210を介してステップS212に進める。ステップS212では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報のマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、除外フラグ、完了ステータスは全て0に初期化される加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS246における処理を行った後、処理をステップS200に戻す。
【0157】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知した場合に行う処理(ステップS214,S216,S246)はそれぞれ、図12におけるステップS114,S116,S146と同じであるので、説明は省略する。
【0158】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知した場合に行う処理(ステップS218,S220,S221,S246、S240)はそれぞれ、図12におけるステップS118,S120,S121,S146、図13におけるステップS140と同じであるので、説明は省略する。
【0159】
また、図16のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS200,S205,S210,S214,S218,S222を介してステップS250に進める。ステップS250では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。次に、ステップS252では、「モード」メニュー240で設定した現在のモードが除外モードであるのか取得モードであるのかをチェックする。チェックの結果、除外モードであれば処理をステップS258に進め、取得モードであれば処理をステップS254に進める。
【0160】
ステップS258では、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の除外フラグ、検出フラグを共に1に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては位置姿勢計算対象から除外する旨、及び画像から検出された旨を、このマーカのマーカ定義情報に記録する。
【0161】
一方、ステップS258において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、除外フラグ、検出フラグを共に1に設定する。そして処理をステップS260に進める。
【0162】
一方、ステップS254では、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の対象フラグ、検出フラグを共に1に設定し、除外フラグを0に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては位置姿勢計算対象とする旨、画像から検出された旨、位置姿勢計算対象から除外しない旨を、このマーカのマーカ定義情報に記録する。
【0163】
一方、ステップS254において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、対象フラグ、検出フラグは共に1に設定し、除外フラグを0に設定する。
【0164】
そして処理をステップS260に進め、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そして処理をステップS262に進める。ステップS262では、領域230内の各マーカについての領域236の表示を更新するのであるが、上述の通り、除外フラグ=1の領域236については「×」のアイコンを表示する。なお、除外フラグ=0の場合には領域236には「×」のアイコンは表示しない。そしてステップS246の処理を行った後、処理をステップS200に戻す。
【0165】
以上の処理により、取得モードで取得した画像から検出されたマーカを自動的にキャリブレーション対象にし、除外モードで取得した画像から検出されたマーカを自動的にキャリブレーションから除外することが可能になる。
【0166】
また、図16のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS200,S205、S210,S214,S218,S222,S226を介してステップS270に進める。ステップS270では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像からマーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0167】
そして処理をステップS272に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除する処理を行う。そしてステップS262,S246における処理を行った後に、処理をステップS200に戻す。
【0168】
これらの処理によって画像のを削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除し、キャリブレーション対象から除外することが可能になる。また除外モードで取得された画像から検出されたマーカには「×」のアイコンが表示され、除外されているマーカがどれであるか理解が容易になる。
【0169】
また、図16のGUIにおいてチェックボックス232に対する指示を検知した場合に行う処理(ステップS230,S232,S246)はそれぞれ、図13におけるステップS130,S132,S146と同じであるので、説明は省略する。
【0170】
一方、図16のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS200,S205,S210,S214,S218,S222,S226、S230、S234を介してステップS236に進める。ステップS236では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS240に進める。ステップS240では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS250に進める。ステップS250以降の処理については後述する。
【0171】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS238に進める。ステップS238では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、若しくは対象フラグ=1且つ除外フラグ=1となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS240に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS250に進める。ステップS250以降の処理については後述する。
【0172】
これらの処理により、キャリブレーション処理に失敗することを事前に軽減することが可能になる。特に手動で対象フラグを変更した場合に発生する問題を事前に回避することが可能になる。
【0173】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、対象フラグ=1且つ除外フラグ=1となるマーカ定義情報の何れも存在しない場合には処理をステップS242に進める。ステップS242では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS244に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS246における処理を行い、その後、処理をステップS200に戻す。
【0174】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図16のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS200,S205,S210,S214,S218,S222,S226、S230、S234、S250を介してステップS252に進める。なお、ステップS240からステップS250に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS252に進めるし、検知していなければ処理をステップS254に進める。
【0175】
ステップS252では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1かつ除外フラグ=0のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、除外モードで取得したマーカ画像から検出されたマーカを使用せずに位置合わせ処理を行うことが可能になる。
【0176】
そして処理をステップS254に進める。ステップS254では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS200に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0177】
本実施形態では、除外モードという特別なモードで撮影を行うことによってマーカをキャリブレーションから除外することを実現する例について説明した。除外モードで除外したいマーカを撮影することで、キャリブレーションおよび位置合わせ処理から除外するマーカを指定することが可能となった。モードの変更はいつでも行うことができるので、除外モードに切り替え、除外するマーカを撮影することでキャリブレーションから除外するマーカの追加を容易に行うことが可能である。
【0178】
また、第1の実施形態と同様に、各処理においてマーカ状態に設定される値を変更することで、より操作者の好みや方針に応じた調整を行ってもよい。例えば、S254で除外フラグを0に設定しないようにすることで、一度除外モードで撮影されたマーカを位置姿勢計算対象にしないようにするようにしても良い。これは、予め除外したいマーカを撮影しておき、その後に位置姿勢計算対象とするマーカを撮影する使い方をする場合に有利である。
【0179】
また、このような変更を操作者の好みに応じてどちらにするか予め設定できるようにしてもよい。
【0180】
[第3の実施形態]
本実施形態では、現実空間中に同じマーカIDを有するマーカが配置されている場合に、これを検知し、キャリブレーション処理の対象外とする。なお、本実施形態は第1の実施形態に係る構成を前提としているが、本実施形態が第1の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第1の実施形態と同様のものであるとする。
【0181】
先ず、本実施形態で用いるマーカについては第1の実施形態と同様のものを用いる。また、取得した画像からのマーカ重複検出は、画像管理部106、指標管理部107、指標抽出部109、記憶部110が連携して実現するものとする。
【0182】
図19は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第1の実施形態と同様、1つのマーカについて1つ存在するものであるが、本実施形態に係るマーカ定義情報は第1の実施形態に係るマーカ定義情報におけるマーカ状態に「重複フラグ」を加えた構成を有する。
【0183】
重複フラグとは、そのマーカが現実空間中に複数存在すると判断された場合に「1」となるフラグで、重複して存在すると判断されないマーカについては「0」となる。本実施形態では重複フラグの規定値は「0」とする。
【0184】
図20は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。図20に示したGUIは、上記図6のGUIにおける領域230内に新たに領域237が追加されている。領域237は、対応するマーカが現実空間中に複数存在する旨を示すアイコンを表示するためのもので、同図では、マーカID=2のマーカが現実空間中に複数存在することが検知されている。即ち、重複フラグ=1であればアイコンを表示し、重複フラグ=0であればアイコンは表示しない。もちろん、重複フラグの値に応じて表示するアイコンは如何なるものであっても良く、重複フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【0185】
図21,22は、図20に示したGUIを用いて行う各種の処理のフローチャートである。図20のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知した場合に行う処理(ステップS300、S301、S302、S308、S346)はそれぞれ、図12におけるステップS100,S101,S102,S108,S146と同じであるので、説明は省略する。
【0186】
また、図20のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知した場合における処理(ステップS305,S306,S307,S308,S346)はそれぞれ、図12におけるステップS105,S106,S107,S108,S146と同様であるが、ステップS307では、検出フラグ、対象フラグに加え、重複フラグについても0に初期化する。
【0187】
また、図20のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS300,S305,S310を介してステップS312に進める。ステップS312では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報においてマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、重複フラグ、完了ステータスは全て0に初期化される加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS346における処理を行った後、処理をステップS300に戻す。
【0188】
また、図20のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知した場合に行う処理(ステップS314,S316,S346)はそれぞれ、図12におけるステップS114,S116,S146と同じであるので、説明は省略する。
【0189】
また、図16のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知した場合に行う処理(ステップS318,S320,S321、S346、S340)はそれぞれ、図12におけるステップS118,S120,S121,S146、図13におけるステップS140と同じであるので、説明は省略する。
【0190】
また、図20のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS300,S305,S310,S314,S318,S322を介してステップS323に進める。ステップS323では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の対象フラグ、検出フラグを共に1に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては検出した旨、及び位置姿勢の計算対象とする旨を、このマーカのマーカ定義情報に記録する。
【0191】
一方、ステップS323において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、対象フラグ、検出フラグは共に1に設定する。
【0192】
次に、ステップS324では、同じ画像から識別したマーカID同士を比較し、同じマーカIDが2以上存在する、即ち、1枚の画像中に同じマーカIDを有するマーカが2以上存在するか否かをチェックする。このチェックの結果、2以上存在する場合には場合には処理をステップS325に進め、重複しているマーカIDを有するマーカ定義情報中の重複フラグを1に設定する。そして処理をステップS326に進める。
【0193】
一方、このチェックの結果、2以上存在しない場合には処理をステップS326に進める。ステップS326では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そしてステップS330では、領域230内の各マーカについての領域237の表示を更新するのであるが、上述の通り、重複フラグ=1の領域237についてはアイコンを表示する。なお、重複フラグ=0の場合には領域237にはアイコンを表示しない。そしてステップS346の処理を行った後、処理をステップS300に戻す。
【0194】
これらの処理により、自動的に検出されたマーカをキャリブレーション対象とすると同時に、重複したマーカをキャリブレーションから除外することが可能になる。
【0195】
また、図20のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS300,S305、S310,S314,S318,S322,S327を介してステップS328に進める。ステップS328では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像からマーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0196】
そして処理をステップS329に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除する処理を行う。そしてステップS330,S346における処理を行った後に、処理をステップS300に戻す。
【0197】
これらの処理によって画像の削除に伴って、取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。また重複検出されたマーカにはアイコンが重畳され、重複しているマーカがどれであるか理解が容易になる。
【0198】
また、図20のGUIにおいてチェックボックス232に対する指示を検知した場合に行う処理(ステップS332,S333,S346)はそれぞれ、図13におけるステップS130,S132,S146と同じであるので、説明は省略する。
【0199】
一方、図20のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS300,S305,S310,S314,S318,S322,S327、S332、S334を介してステップS336に進める。
【0200】
ステップS336では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS340に進める。
【0201】
ステップS340では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS350に進める。ステップS350以降の処理については後述する。
【0202】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS338に進める。ステップS338では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、若しくは対象フラグ=1且つ重複フラグ=1となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS340に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS350に進める。ステップS350以降の処理については後述する。
【0203】
これらの処理により、キャリブレーション処理に失敗することを事前に軽減することが可能になる。特に手動で対象フラグを変更した場合に発生する問題を事前に回避することが可能になる。
【0204】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報、対象フラグ=1且つ重複フラグ=1となるマーカ定義情報の何れも存在しない場合には処理をステップS342に進める。ステップS342では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS344に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS346における処理を行い、その後、処理をステップS300に戻す。
【0205】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図20のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS300,S305,S310,S314,S318,S322,S327、S332、S334、S350を介してステップS352に進める。なお、ステップS340からステップS350に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS352に進めるし、検知していなければ処理をステップS354に進める。
【0206】
ステップS352では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、操作者が選択して位置姿勢を計算したマーカ利用して位置合わせ処理を行うことが可能になる。
【0207】
そして処理をステップS354に進める。ステップS354では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS300に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0208】
本実施形態では、同じマーカIDのマーカが2以上配置されていることを検知し、キャリブレーションから除外することを実現する例について説明した。重複と判断されたマーカは、マーカ定義情報を削除しない限り使用できるようにならないため、重複によるキャリブレーション失敗の可能性を軽減することが可能になる。
【0209】
第1の実施形態と同様に、各処理においてマーカ状態に設定される値を変更することで、より操作者の志向および方針に応じた調整を行ってもよい。また、このような変形を操作者の好みに応じてどちらにするか予め設定できるようにしてもよい。
【0210】
[第4の実施形態]
本実施形態は、第1の実施形態に係る構成に印刷機能を加え、マーカが印刷済みである、ということをキャリブレーション対象選択の要素とする例である。係る実施形態は、印刷する行為を、操作者がマーカを設置してキャリブレーションする意思がある、とみなす方針の時に有用である。
【0211】
なお、本実施形態は第1の実施形態に係る構成を前提としているが、本実施形態が第1の実施形態と異なる点については以下に詳細に説明する。従って、以下の説明において特に触れない点については、第1の実施形態と同様のものであるとする。
【0212】
図23は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。同図に示す如く、本実施形態に係る画像処理装置2300は、図4に示した第1の実施形態に係る画像処理装置100に指標生成部120を加えた構成を有すると共に、この指標生成部120には印刷部121が接続されている。
【0213】
指標生成部120は、指標管理部107が記憶部110から読み出したマーカ定義情報を受け、これを用いて図1に示したフォーマットに従って、マーカの画像を生成する。そして生成した画像に基づいて印刷データを生成する。生成した印刷データは印刷部121に送出される。印刷部121は、送出された印刷データを受け、これを紙などの記録媒体上に記録する処理を行う。従って印刷部121には、プリンタや複合機など、プリント機能を有する装置が適用される。
【0214】
なお、画像処理装置2300において、指標生成部120以外の各部による動作については第1の実施形態と同様であるので、説明は省略する。
【0215】
図24は、本実施形態に係るマーカ定義情報の構成例を示す図である。本実施形態においてもマーカ定義情報は第1の実施形態と同様、1つのマーカについて1つ存在するものであるが、本実施形態に係るマーカ定義情報は第1の実施形態に係るマーカ定義情報におけるマーカ状態に「印刷フラグ」を加えた構成を有する。
【0216】
印刷フラグとは、マーカが印刷部121によって印刷されたか否かを示すフラグである。印刷されたマーカについては印刷フラグには「1」が設定され、未だ印刷されていないマーカについては印刷フラグには「0」が設定されている。印刷フラグの設定は指標生成部120が行うものとする。例えばマーカの印刷データを生成し、生成した印刷データを印刷部121に送出するのに伴い印刷フラグが1に設定されるようにしてもよい。本実施形態では、印刷フラグの規定値は「0」とする。
【0217】
図25は、上記コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。図25に示したGUIは、上記図6のGUIにおける領域230内に新たに領域239が追加されている。領域239は、対応するマーカが印刷済みのものである旨を示すアイコンを表示するためのもので、同図では、マーカID=2のマーカが印刷済みであることを示している。即ち、印刷フラグ=1であればアイコンを表示し、印刷フラグ=0であればアイコンは表示しない。もちろん、印刷フラグの値に応じて表示するアイコンは如何なるものであっても良く、印刷フラグの値が視覚的に分かれば、表示する情報は如何なるものであっても良い。
【0218】
ここで、図25に示したGUIにおいて「編集」メニュー220を指示すると、表示部3005の表示画面上には図26に示す編集メニューが表示される。図26に示した編集メニューは、図8に示した第1の実施形態に係る編集メニューに「マーカの印刷」メニュー228を加えたものである。この「マーカの印刷」メニュー228を指示すると、表示部3005の表示画面上には図27に示すようなウィンドウが表示される。
【0219】
同図のウィンドウにおいて510は、印刷するマーカのマーカIDを入力するための領域である。本画像処理装置2300の操作者がこの領域510に印刷したいマーカのマーカIDを入力した後に、OKボタン520を指示すると、指示されたマーカIDを有するマーカの印刷データが上記指標管理部107、指標生成部120により生成され、印刷部121により、この印刷データに従った印刷処理が行われる。これにより、指示されたマーカIDを有するマーカが紙などの記録媒体上に印刷される。
【0220】
なお、領域510内に予め表示される初期値は、領域230内に表示されているマーカIDの何れかであるとするが、使用可能なマーカIDの範囲で自由に変更してもよい。
【0221】
図28,29は、図25に示したGUIを用いて行う各種の処理のフローチャートである。図25のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを新規作成」メニュー214の指示を検知した場合に行う処理(ステップS400、S401、S402、S408、S446)はそれぞれ、図12におけるステップS100,S101,S102,S108,S146と同じであるので、説明は省略する。
【0222】
また、図25のGUIにおいて「ファイル」メニュー210の指示を検知した後、「マーカ定義ファイルを開く」メニュー212の指示を検知した場合における処理(ステップS405,S406,S407,S408,S446)はそれぞれ、図12におけるステップS105,S106,S107,S108,S146と同様であるが、ステップS407では、検出フラグ、対象フラグに加え、印刷フラグについても0に初期化する。
【0223】
また、図25のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の新規作成」メニュー222の指示を検知すると、処理をステップS400,S405,S410を介してステップS412に進める。ステップS412では、現在開いているマーカ定義ファイルに、新たなマーカ定義情報を1つ追加する。追加したマーカ定義情報においてマーカIDは、同じファイル内に存在するマーカ定義情報が使用しているマーカIDと異なるものが割り当てられる。また、追加したマーカ定義情報の基準マーカフラグ、検出フラグ、対象フラグ、印刷フラグ、完了ステータスは全て0に初期化される。加えてマーカサイズは同じファイル内に存在するマーカ定義情報のマーカサイズが設定される。なお、マーカ定義情報が存在しない場合には、既定の値が設定される。そして上記ステップS446における処理を行った後、処理をステップS400に戻す。
【0224】
また、図25のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の削除」メニュー224の指示を検知した場合に行う処理(ステップS414,S416,S446)はそれぞれ、図12におけるステップS114,S116,S146と同じであるので、説明は省略する。
【0225】
また、図25のGUIにおいて「編集」メニュー220の指示を検知した後、「マーカ定義情報の編集」メニュー226の指示を検知した場合に行う処理(ステップS418,S420,S421、S446、S440)はそれぞれ、図12におけるステップS118,S120,S121,S146、図13におけるステップS140と同じであるので、説明は省略する。
【0226】
また、図25のGUIにおいて、「編集」メニュー220の指示を検知した後、「マーカの印刷」メニュー228の指示を検知した場合には処理をステップS400,S405,S410,S414,S418,S460を介してステップS462に進め、先ず、表示部3005の表示画面上に図27に示すウィンドウを表示する。本コンピュータの操作者はこのウィンドウにおける領域510に印刷対象のマーカのマーカIDを入力し、その後、OKボタン520を指示する。従って、ステップS462ではOKボタン520の指示を検知すると、この入力されたマーカIDを取得する。そして、取得したマーカIDが、現在開いているマーカ定義ファイル内に登録されたものであるか(領域230内に表示されているものであるか)をチェックする。
【0227】
このチェックの結果、存在しない場合には処理をステップS464に進め、取得したマーカIDを有するマーカ定義情報を新規作成し、現在開いているマーカ定義ファイルに追加登録する。このステップS464における処理は、上記ステップS412における処理と同様にして行う。そして処理をステップS466に進める。
【0228】
一方、ステップS462におけるチェックの結果、存在する場合には処理をステップS466に進め、領域510に入力されたマーカIDを有するマーカ定義情報に基づいて、このマーカの画像の印刷データを作成する。即ち、図1に示したフォーマットに従って、このマーカ定義情報中のマーカIDを表現したマーカの画像を作成し、その後、画像の印刷データを作成する。そして、作成した印刷データを印刷部121に送出する。この本実施形態の場合、印刷部121は、本コンピュータにおけるI/F3007に接続されているので、印刷データはこのI/F3007を介して印刷部121に送出される。これにより、領域510に入力したマーカIDを有するマーカが印刷部121により、紙などの記録媒体上に印刷されることになる。
【0229】
なお、ステップS464からステップS466に処理を移行した場合には、ステップS466では、新規作成したマーカ定義情報に基づいて、このマーカの画像の印刷データを作成する。そして、作成した印刷データを印刷部121に送出する。
【0230】
そして処理をステップS468に進め、印刷したマーカのマーカ定義情報中の対象フラグ、印刷フラグを共に1に設定する。そしてステップS446における処理を行った後、処理をステップS400に戻す。
【0231】
これら印刷したマーカを自動的にキャリブレーション対象に含める処理により、キャリブレーションするマーカを選択するための要素として、マーカの印刷履歴を使用することが可能になる。
【0232】
また、印刷したマーカのマーカ定義情報を自動的にマーカ定義情報テーブルに追加することで、操作者の作業を軽減することが可能になる。
【0233】
また、図25のGUIにおいて、ボタン282が既に指示されている状態、即ち、I/F3007を介して外部記憶装置3006に現実空間の動画像を取得している状態で、ボタン284の指示を検知すると、処理をステップS400,S405,S410,S414,S418,S460,S422を介してステップS424に進める。
【0234】
ステップS424では、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像から、この画像中に写っているマーカの検出およびマーカIDの識別を行う。そして、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在する場合には、このマーカ定義情報内の検出フラグを1に設定する。即ち、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、画像から検出されたマーカについては検出した旨を、このマーカのマーカ定義情報に記録する。
【0235】
一方、ステップS424において、現在開いているマーカ定義ファイルに登録されている各マーカのマーカ定義情報のうち、画像から識別したマーカIDと同じマーカIDを有するマーカ定義情報が存在しない場合には、この検出マーカのマーカ定義情報を作成し、現在開いているマーカ定義ファイルに追加登録する。この場合、マーカIDは画像から識別したマーカIDを割り当て、検出フラグは1に設定する。
【0236】
そして処理をステップS425に進め、ボタン284を指示したタイミング近傍で外部記憶装置3006に取得した画像のサムネイルを領域270内に追加表示する。そしてステップS446における処理を行った後に、処理をステップS400に戻す。
【0237】
一方、図25のGUIにおいて、ボタン286が指示されたことを検知すると、処理をステップS400,S405、S410,S414,S418,S460,S422,S427を介してステップS428に進める。
【0238】
ステップS428では、領域270内で選択されているサムネイルのオリジナル画像および外部記憶装置3006に取得済みの画像からマーカを検出し、検出したマーカのマーカIDを識別する。続いて領域270内で選択されているサムネイルのオリジナル画像から検出されたマーカが、そして外部記憶装置3006に取得済みの画像に存在しないか調べる。存在する場合は何もせず、存在しない場合はそのマーカのマーカ定義情報を削除する。
【0239】
そして処理をステップS429に進め、領域270から現在選択されているサムネイルとオリジナルを外部記憶装置3006から削除を行う。そしてステップS446における処理を行った後に、処理をステップS400に戻す。
【0240】
これらの処理によって画像の削除に伴って取得した画像から検出されなくなったマーカのマーカ定義情報を、自動的にマーカ定義情報テーブルから削除してキャリブレーション対象から除外することが可能になる。
【0241】
また、図25のGUIにおいてチェックボックス232に対する指示を検知した場合に行う処理(ステップS432,S433,S446)はそれぞれ、図13におけるステップS130,S132,S146と同じであるので、説明は省略する。
【0242】
一方、図25のGUIにおいてボタン288が指示されたことを検知すると、処理をステップS400,S405、S410,S414,S418,S460,S422,S427、S432,S434を介してステップS436に進める。
【0243】
ステップS436では先ず、現在開いているマーカ定義ファイルに登録されている全てのマーカ定義情報において対象フラグ=1のマーカ定義情報中の基準マーカフラグを参照し、基準マーカフラグ=1であるマーカ定義情報が2以上存在するか否かをチェックする。2以上存在する場合には処理をステップS440に進める。
【0244】
ステップS440では、基準マーカが2以上存在するが故にキャリブレーションができない旨の警告を表示部3005の表示画面上に表示する。そして処理をステップS450に進める。ステップS450以降の処理については後述する。
【0245】
一方、基準マーカフラグ=1であるマーカ定義情報が1つのみである場合には処理をステップS438に進める。ステップS438では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報が存在するかをチェックする。存在する場合にはステップS440に進め、このようなマーカについてその位置姿勢を計算することはできないので、その旨を示す警告を表示し、処理をステップS450に進める。ステップS450以降の処理については後述する。
【0246】
この処理により、検出されてないマーカがキャリブレーション対象となっている間違いを回避し、検出するために画像を取得するよう操作者に促すことが可能になる。
【0247】
一方、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=1であり且つ検出フラグ=0となるマーカ定義情報が存在しない場合には処理をステップS439に進める。
【0248】
ステップS439では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=0且つ印刷フラグ=1となるマーカ定義情報が存在するか否かをチェックする。このチェックの結果、存在する場合には処理をステップS441に進める。
【0249】
ステップS441では、印刷したのにもかかわらずキャリブレーション対象にしないのは不自然と判断し、表示部3005の表示画面上に警告表示を行うと共に、再度キャリブレーション処理を中止するか否かを促すためのGUIを表示部3005の表示画面上に表示する。この処理により、印刷し、配置したにもかかわらず、操作者が手動でキャリブレーション対象から除外した間違いを回避し、印刷したマーカをキャリブレーションするよう操作者に促すことが可能になる。
【0250】
このGUIに対する操作の結果、計算を中断する旨の指示が入力された場合には処理をステップS450に進める。一方、計算を続行する旨の指示が入力された場合には処理をステップS442に進める。
【0251】
一方、上記ステップS439におけるチェックの結果、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち、対象フラグ=0且つ印刷フラグ=1となるマーカ定義情報が存在しない場合には処理をステップS442に進める。
【0252】
ステップS442では、現在開いているマーカ定義ファイルに登録されているマーカ定義情報のうち対象フラグ=1のマーカ定義情報に対応するマーカの位置姿勢計算処理を行う。そして処理をステップS444に進め、この計算処理の結果、正しく位置姿勢が求まった場合にはこのマーカ定義情報中の完了ステータスの値を「1」に設定する。なお、正しく求めることができなかった場合には完了ステータスの値を「2」に設定する。そしてステップS446における処理を行い、その後、処理をステップS400に戻す。
【0253】
以上のような処理を操作者の任意の回数だけ実行し、操作者が位置姿勢を求めたいすべてのマーカについてその位置姿勢を求めることができれば、操作者は図25のGUIにおいて「ファイル」メニュー210を指示した後、「マーカ定義ファイルを保存」メニュー216を指示する。この指示を検知すると、処理をステップS400,S405,S410,S414,S418,S460,S422、S427、S432,S434、S450を介してステップS452に進める。なお、ステップS440やステップS441からステップS450に処理を進めた場合であっても、「マーカ定義ファイルを保存」メニュー216の指示を検知していれば処理をステップS452に進めるし、検知していなければ処理をステップS454に進める。
【0254】
ステップS452では、現在開いているマーカ定義ファイルを外部記憶装置3006に保存する処理を行う。本実施形態では詳細な説明は省略するが、このマーカ定義ファイルを読み込み、完了ステータス=1のマーカ定義情報を利用して位置合わせ処理を行うよう処理すれば、操作者が選択して位置姿勢を計算したマーカ利用して位置合わせ処理を行うことが可能になる。
【0255】
そして処理をステップS454に進める。ステップS454では、「終了」メニュー218が指示されたかをチェックし、指示されていない場合には処理をステップS400に戻すのであるが、指示された場合には本処理を終了し、上述の通り、本コンピュータのシャットダウン処理を行う。
【0256】
本実施形態では、第1の実施形態にマーカ印刷機能を加え、マーカが印刷済みであることをキャリブレーション対象選択の要素とする例について説明した。係る構成によれば、印刷したマーカのうち画像から検出されてないマーカが存在した場合、警告し、印刷したマーカをキャリブレーション可能なように操作者を誘導することが可能になる。
【0257】
また、印刷したマーカをキャリブレーション対象から除外したいときには、キャリブレーション対象チェックボックス232への簡単な操作でそれを実現することができる。
【0258】
このような操作者の手動による選択方法と、マーカ印刷時点で、印刷されたマーカをキャリブレーション対象に自動的に加える(ステップS468における処理)ことを併用することで、柔軟かつ使い易い手法を提供することが可能となった。
【0259】
さらには上記の選択方法に加えて、ステップS436、S438、S439の処理のようにマーカ定義情報に応じてキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者が行う位置合わせのための設定作業の負荷を軽くすることが可能になった。
【0260】
なお、マーカ定義ファイルを開く処理であるステップS407において、読み込むマーカ定義情報の印刷フラグを0にしていたが、これを1にして印刷履歴を保存するようにしてもよい。これによって、操作者が印刷履歴をマーカ定義ファイルで管理することが可能になる。
【0261】
また、マーカ印刷処理であるステップS468において、印刷したマーカの対象フラグを1としたがこれを0とし、かつステップS439、S441を処理フローから削除してもよい。これは、操作者が印刷フラグを確認し、手動でキャリブレーション対象を選択する方針で運用する場合に有効である。
【0262】
また、画像取得処理であるステップS424において、検出したマーカの対象フラグを1としてもよい。これは検出したマーカもキャリブレーション対象にする方針の場合に有効である。
【0263】
また、画像取得処理であるステップS424において、検出したマーカの印刷フラグを1にしてもよい。これは検出したマーカは全て空間に設置された印刷済みのマーカと判断する方針の場合に有効である。
【0264】
また、画像取得処理であるステップS424において、検出したマーカの対象フラグを1、印刷フラグを1にしてもよい。これは検出したマーカは全て空間に設置された印刷済みのマーカと判断し、かつ印刷済みマーカをキャリブレーション対象にする方針の場合に有効である。
【0265】
また、図27に示したウィンドウにおける領域510に入力するマーカIDは1つのみに限定するものではなく、例えば、カンマで区切った複数のマーカIDや、ハイフンでつなげた範囲のマーカIDを入力するようにしても良い。これにより操作者の操作を軽減することが可能になる。
【0266】
また、操作者が指定した数だけ、自動的にマーカ定義情報の新規作成とマーカの印刷を行う処理を追加してもよい。このような処理によって、多数のマーカを新規に印刷して使用する場合、操作者の作業を軽減することが可能になる。
【0267】
また、本実施形態では、印刷済み/未印刷の2通りでしか管理していないが、印刷した回数や時間をマーカ定義情報に加え、印刷履歴によって処理を変更してもよい。例えば、複数回印刷されたマーカは重複する可能性が高いと判断し、マーカキャリブレーション対象から除外するようにしてもよい。
【0268】
また、以上説明した変形例を組み合わせてもよいことは言うまでもない。
【0269】
例えば、画像取得時に検出したマーカの印刷フラグを1にすることと、指定した数だけ自動的にマーカ定義情報テーブルに存在しないマーカIDのマーカの印刷をするような処理を組み合わせてもよい。
【0270】
このように処理する場合、使用するマーカIDを決定し、印刷する前に、予め現実空間に設置されているすべてのマーカの画像を取得し、印刷から除外する。そして除外したマーカ以外の指定した数のマーカを新規に自動生成するという運用も可能になる。
【0271】
これはキャリブレーションおよび位置合わせ処理を行う複数のシステムを隣接した空間で使用する場合、重複したマーカを使用しないように(マーカを排他的に使用するように)する場合に有効である。
【0272】
以上説明してきた変形を操作者の好みに応じてどちらにするかを予め設定できるようにしても構わない。
【0273】
[第5の実施形態]
上記第1乃至4の実施形態では、画像中に存在するマーカはすべて同等に扱っていた。しかし、これに限定されず、画像中のマーカがどれだけキャリブレーションのためのデータとして信頼できるかを、信頼度として求め、信頼度に応じて(評価して)キャリブレーション対象や処理を変更してもよい。
マーカの信頼度の例としては、
(1) 取得した画像群における指標の出現頻度
(2) 取得した画像における指標と画像取得装置とのなす角度
(3) 取得した画像における指標の画像上の面積
(4) 取得した画像のコントラスト
(5) 取得した画像における指標の画像上の位置
及び、これらの組み合わせを使用すればよい。
【0274】
(1)は、出現頻度が極端に少ないものはマーカ以外のものを誤認識したノイズと考え信頼度を低いとする方針の時に使用する。
【0275】
(2)は、角度が小さくなると画像認識によるマーカの位置姿勢計算精度が落ちるため、角度が小さいものを信頼度が低いとする方針の時に使用する。
【0276】
(3)は、指標の画像上の面積が小さいほど、マーカの位置姿勢計算精度が落ちるため、面積が小さいものを信頼度が低いとする方針の時に使用する。
【0277】
(4)は、コントラストが低いほど、画像からのマーカ検出誤差が大きくなるため、コントラストが低い画像から検出したマーカを信頼度が低いとする方針の時に使用する。
【0278】
(5)は、画像上の位置が画像の端によるほど、画像取得装置の光学的な歪の影響を受けやすいため、画像の端に位置している指標を信頼度が低いとする方針の時に使用する。
【0279】
なお言うまでもなく、以上の例を組み合わせて信頼度を決定してもよい。また、キャリブレーション対象および位置合わせ処理対象となるマーカを選択する条件は、以上説明したことに限定されず、マーカに関するすべての付帯情報を利用してよい。
【0280】
そして以上の各実施形態によれば、以下のような効果を奏することができる。即ち、任意のマーカや、重複したマーカをキャリブレーションや位置合わせ処理から除外すること、また再度処理に加えるための一連の作業が容易になる。また、除外するマーカ以外を全て再撮影したり、除外するマーカを空間から除去する必要はなくなり、キャリブレーションおよび位置合わせ処理のための設定作業の工数を削減したりすることが可能となる。
【0281】
選択の方法も操作者の手動による方法と、画像処理装置が保持しているマーカ定義情報から半自動的に行う方法を併用することで、柔軟かつ使い易い手法を提供することができる。
【0282】
さらには上記の選択方法に加えて、マーカ定義情報に応じて画像処理装置がキャリブレーションを実行するために必要な作業を作業者に通知することで、操作者の設定作業の負荷を軽くすることができる。
【0283】
[第6の実施形態]
上記各実施形態では指標の一例としてマーカを用いた。しかし、位置合わせに利用する指標は、マーカに限定するものではなく、他にも例えば、自然特徴であっても良い。
【0284】
図31は、現実物体としての家を撮影した場合に得られる画像の一例を示す図である。例えば、図31に示すような現実空間の画像を撮影した場合に、その画像中のコーナー(図31において「×」で示した3カ所のコーナー)等を自然特徴(特徴点)として用いることができる。また、これ以外にも画像中のSIFT特徴を特徴点として用いても良い。
【0285】
自然特徴を利用した場合、第2,3の実施形態の応用として、類似した自然特徴が現実空間中に数多く存在すると判断された場合(予め定められた数よりも多い場合)、その自然特徴に対する重複フラグを「1」とする。そして、係る特徴点を、キャリブレーションや位置合わせ処理から除外する。
【0286】
図32(a)〜(c)は、類似した自然特徴が現実空間中に数多く存在する場合に、この現実空間を撮影することで得られる画像の一例を示す図である。図32(a)〜(c)に示した画像中では、×で表される自然特徴が頻発しており、例えばこの自然特徴に対して重複フラグを「1」と設定し、取り除く。
【0287】
図33(a)〜(c)はそれぞれ、図32(a)〜(c)に示した自然特徴から、重複フラグを「1」と設定した自然特徴を取り除いた場合における画像を示している図である。
【0288】
これにより、類似した自然特徴を除いたものを対象としたキャリブレーションや位置合わせ処理を行うことができる。
【0289】
また、第5の実施形態の応用として、類似した特徴の数を信頼度として用いてもよい。例えば、1枚の画像中に存在する全特徴、あるいは全画像中に存在する全特徴に関して、1/(類似した特徴の数)を求め、これを信頼度として用いてもよい。この場合、値が「1」となるときは、信頼度が最も高く、値が0に近づけば近づくほど信頼度が低いと判断される。そして、信頼度の閾値を設定し、設定された閾値よりも信頼度が低い特徴は、キャリブレーションや位置合わせ処理から除外する。
【0290】
[その他の実施形態]
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0291】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0292】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0293】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0294】
【図1】本発明の第1の実施形態で用いるマーカの構成例(フォーマット例)を示す図である。
【図2】図1に示したフォーマットに従って作成された実際のマーカの一例を示す図である。
【図3】マーカ座標系を示す図である。
【図4】本発明の第1の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図5】それぞれのマーカに対するマーカ定義情報を登録したテーブル(マーカ定義情報テーブル)の構成例を示すブロック図である。
【図6】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図7】ファイルメニューの表示例を示す図である。
【図8】編集メニューの表示例を示す図である。
【図9】ウィンドウの表示例を示す図である。
【図10】ウィンドウの表示例を示す図である。
【図11】ウィンドウの表示例を示す図である。
【図12】図6に示したGUIを用いて行う各種の処理のフローチャートである。
【図13】図6に示したGUIを用いて行う各種の処理のフローチャートである。
【図14】モードメニューの表示例を示す図である。
【図15】本発明の第2の実施形態に係るマーカ定義情報の構成例を示す図である。
【図16】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図17】図16に示したGUIを用いて行う各種の処理のフローチャートである。
【図18】図16に示したGUIを用いて行う各種の処理のフローチャートである。
【図19】本発明の第3の実施形態に係るマーカ定義情報の構成例を示す図である。
【図20】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図21】図20に示したGUIを用いて行う各種の処理のフローチャートである。
【図22】図20に示したGUIを用いて行う各種の処理のフローチャートである。
【図23】本発明の第4の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図24】本発明の第4の実施形態に係るマーカ定義情報の構成例を示す図である。
【図25】コンピュータ上で動作し、現実空間中に配された指標の位置姿勢を求めるために用いるGUI(グラフィカルユーザインターフェース)の表示例を示す図である。
【図26】編集メニューの表示例を示す図である。
【図27】ウィンドウの表示例を示す図である。
【図28】図25に示したGUIを用いて行う各種の処理のフローチャートである。
【図29】図25に示したGUIを用いて行う各種の処理のフローチャートである。
【図30】画像処理装置100に適用可能なコンピュータのハードウェア構成を示すブロック図である。
【図31】現実物体としての家を撮影した場合に得られる画像の一例を示す図である。
【図32】(a)〜(c)は、類似した自然特徴が現実空間中に数多く存在する場合に、この現実空間を撮影することで得られる画像の一例を示す図である。
【図33】(a)〜(c)はそれぞれ、図32(a)〜(c)に示した自然特徴から、重複フラグを「1」と設定した自然特徴を取り除いた場合における画像を示している図である。
【特許請求の範囲】
【請求項1】
複数の指標が配された現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像中の指標を識別する識別工程と、
前記識別工程で識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算工程と
を備えることを特徴とする画像処理方法。
【請求項2】
更に、
前記識別工程で識別された指標のうち、前記計算工程による計算対象とする指標を選択する選択工程を備え、
前記計算工程では、前記選択工程で選択された指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1に記載の画像処理方法。
【請求項3】
更に、
前記識別工程では、識別した指標について、識別した旨を示す第1の情報、及び前記計算工程による計算対象とするか計算対象外とするかを示す第2の情報を記録し、
前記選択工程では、記録された前記第2の情報を変更することで、前記識別工程で識別した指標を前記計算工程による計算対象とするか計算対象外とするかを選択することを特徴とする請求項2に記載の画像処理方法。
【請求項4】
更に、
前記識別工程で識別した指標を前記計算工程による計算対象とする第1のモード、計算対象外とする第2のモードの何れかを設定する設定工程を備え、
前記計算工程では、前記計算工程による計算対象に設定された指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項5】
更に、
前記識別工程で識別した指標のうち、重複して配置された指標を検知する検知工程を備え、
前記計算工程では、前記識別工程で記録した指標のうち、重複して配置されていない指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項6】
更に、
指標の印刷データを作成し、印刷装置に送出する作成工程を備え、
前記計算工程では、前記識別工程で識別した指標のうち、前記作成工程で印刷データを作成した指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項7】
更に、
前記識別工程で識別した指標に対する信頼度を評価する評価工程を備え、
前記計算工程では、前記評価工程による評価結果から決定される指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項8】
前記評価工程では、前記取得工程で取得した画像における指標の出現頻度、指標と当該画像とのなす角度、指標の当該画像における面積、指標の当該画像における位置、当該画像における指標とそれ以外の部分とのコントラスト、の何れかを用いて、指標の信頼度を評価することを特徴とする請求項7に記載の画像処理方法。
【請求項9】
前記指標には、自身が識別可能なようにパターンが記録されており、当該パターンは、前記指標を基準とする座標系が定義可能なように構成されていることを特徴とする請求項1乃至8の何れか1項に記載の画像処理方法。
【請求項10】
前記指標は、予め現実空間中に存在する自然特徴であることを特徴とする請求項1,2,3,5,7及び8の何れか1項に記載の画像処理方法。
【請求項11】
複数の指標が配された現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像中の指標を識別する識別手段と、
前記識別手段によって識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算手段と
を備えることを特徴とする画像処理装置。
【請求項12】
コンピュータに請求項1乃至10の何れか1項に記載の画像処理方法を実行させるためのコンピュータプログラム。
【請求項13】
請求項12に記載のコンピュータプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項1】
複数の指標が配された現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像中の指標を識別する識別工程と、
前記識別工程で識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算工程と
を備えることを特徴とする画像処理方法。
【請求項2】
更に、
前記識別工程で識別された指標のうち、前記計算工程による計算対象とする指標を選択する選択工程を備え、
前記計算工程では、前記選択工程で選択された指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1に記載の画像処理方法。
【請求項3】
更に、
前記識別工程では、識別した指標について、識別した旨を示す第1の情報、及び前記計算工程による計算対象とするか計算対象外とするかを示す第2の情報を記録し、
前記選択工程では、記録された前記第2の情報を変更することで、前記識別工程で識別した指標を前記計算工程による計算対象とするか計算対象外とするかを選択することを特徴とする請求項2に記載の画像処理方法。
【請求項4】
更に、
前記識別工程で識別した指標を前記計算工程による計算対象とする第1のモード、計算対象外とする第2のモードの何れかを設定する設定工程を備え、
前記計算工程では、前記計算工程による計算対象に設定された指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項5】
更に、
前記識別工程で識別した指標のうち、重複して配置された指標を検知する検知工程を備え、
前記計算工程では、前記識別工程で記録した指標のうち、重複して配置されていない指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項6】
更に、
指標の印刷データを作成し、印刷装置に送出する作成工程を備え、
前記計算工程では、前記識別工程で識別した指標のうち、前記作成工程で印刷データを作成した指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項7】
更に、
前記識別工程で識別した指標に対する信頼度を評価する評価工程を備え、
前記計算工程では、前記評価工程による評価結果から決定される指標について、その現実空間中の位置姿勢を計算することを特徴とする請求項1又は2に記載の画像処理方法。
【請求項8】
前記評価工程では、前記取得工程で取得した画像における指標の出現頻度、指標と当該画像とのなす角度、指標の当該画像における面積、指標の当該画像における位置、当該画像における指標とそれ以外の部分とのコントラスト、の何れかを用いて、指標の信頼度を評価することを特徴とする請求項7に記載の画像処理方法。
【請求項9】
前記指標には、自身が識別可能なようにパターンが記録されており、当該パターンは、前記指標を基準とする座標系が定義可能なように構成されていることを特徴とする請求項1乃至8の何れか1項に記載の画像処理方法。
【請求項10】
前記指標は、予め現実空間中に存在する自然特徴であることを特徴とする請求項1,2,3,5,7及び8の何れか1項に記載の画像処理方法。
【請求項11】
複数の指標が配された現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像中の指標を識別する識別手段と、
前記識別手段によって識別された全て若しくは一部の指標について、その現実空間中の位置姿勢を計算する計算手段と
を備えることを特徴とする画像処理装置。
【請求項12】
コンピュータに請求項1乃至10の何れか1項に記載の画像処理方法を実行させるためのコンピュータプログラム。
【請求項13】
請求項12に記載のコンピュータプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【公開番号】特開2008−64735(P2008−64735A)
【公開日】平成20年3月21日(2008.3.21)
【国際特許分類】
【出願番号】特願2007−38430(P2007−38430)
【出願日】平成19年2月19日(2007.2.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成20年3月21日(2008.3.21)
【国際特許分類】
【出願日】平成19年2月19日(2007.2.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]