画像処理方法および装置
【課題】 指標を撮影した画像で撮像装置の位置あわせを行う時、操作者が、指標が正しく設置されていることを容易に確認できるようにする。
【解決手段】 撮影された画像から指標を検出する指標検出工程と、前記検出された指標の位置姿勢を計算する位置姿勢計算工程と、前記計算された指標の位置姿勢を保持する保持工程とを有し、前記取得された画像に対して、前記検出工程と、前記位置姿勢計算工程とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理方法であり、前記画像に投影画像を重畳すべき指標を判定する判定工程と、前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成工程と、前記生成された投影画像を前記画像に重畳する重畳工程とを有する。
【解決手段】 撮影された画像から指標を検出する指標検出工程と、前記検出された指標の位置姿勢を計算する位置姿勢計算工程と、前記計算された指標の位置姿勢を保持する保持工程とを有し、前記取得された画像に対して、前記検出工程と、前記位置姿勢計算工程とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理方法であり、前記画像に投影画像を重畳すべき指標を判定する判定工程と、前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成工程と、前記生成された投影画像を前記画像に重畳する重畳工程とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮影された画像から指標の位置姿勢を計算するものに関する。
【背景技術】
【0002】
高品質な複合現実感を提供するための重要な技術の一つとして、現実空間と仮想空間の位置あわせ処理がある。位置あわせ処理として様々な手法が提案されているが、それらの中でも指標(マーカ)を撮影した画像(指標画像またはマーカ画像)から、指標と撮像装置(カメラ)の相対位置姿勢を計算する方法がコストや使い勝手の点から広く利用されている(非特許文献1参照)。本明細書では、マーカが撮影された画像をマーカ画像と表現する。
【0003】
撮影したマーカ画像中のマーカとカメラとの相対位置姿勢から、マーカ画像中のマーカとの相対位置姿勢が既知である別のマーカがどのように見えるかを三次元グラフィックス(3DCG)技術を用いて計算、描画することができる。本明細書では、この描画されたマーカの画像を投影マーカと表現する。また、実際のマーカを現実マーカ、マーカ画像中の現実マーカの画像領域を画像マーカと表現する。
【0004】
投影マーカをマーカ画像に重畳し、表示することにより、画像マーカと投影マーカとの位置姿勢のズレを視覚化することができる。操作者は投影マーカが重畳された画像から、位置あわせ処理の動作確認、精度、マーカの設置位置姿勢の間違い、マーカの設置忘れ等を把握することができる。
【0005】
一方、位置あわせ処理はすべての現実マーカの位置姿勢が既知であることを前提としており、マーカの位置姿勢を予め測定し入力する作業が必要である。マーカの数や設置位置姿勢によっては人が手作業で測定を行うことは非現実的であり、マーカの位置姿勢を効率よくかつ高精度に測定する手段が求められている。
【0006】
近年、マーカ画像からマーカ間の相対位置姿勢を計算するマーカキャリブレーションに関する方法が提案されている(非特許文献2参照)。マーカキャリブレーションにより全てのマーカ間の相対位置姿勢を求めた後、任意のマーカの世界座標系における位置姿勢を決定することにより、世界座標系におけるすべてのマーカの位置姿勢を求めることができる。
【非特許文献1】S.Uchiyama,K.Takemoto,K.Satoh,H.Yamamoto,and H.Tamura:”MR Platform:A basic body on which mixed reality applications are built,”Proc.IEEE/ACM Int’l Symp.on Mixed and Augmented Reality(ISMAR 2002),pp.246−253,2002.
【非特許文献2】小竹,内山,山本:マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法,日本バーチャルリアリティ学会論文誌,vol.10,No.3,pp.401−410,2005.
【発明の開示】
【発明が解決しようとする課題】
【0007】
投影マーカをマーカ画像に重畳し、投影マーカと画像マーカとを比較することにより、位置あわせ処理の動作、精度、マーカの設置位置姿勢の間違い、マーカの設置忘れ等を、操作者が把握することができる。
【0008】
このとき、位置姿勢が既知であるすべてのマーカの投影マーカを描画すると、投影マーカが重畳された画像を見た操作者を混乱させる可能性がある。例えば、操作者から見て衝立や柱の裏側に設置されたマーカの投影マーカを重畳すると、操作者から見た衝立や柱の表側にマーカを設置し忘れているのか、裏側のマーカの位置姿勢が既知となっているのかを容易に判別することができない。
【0009】
また、6自由度を持つ可動物体の位置あわせを画像から行う場合には、カメラとの相対姿勢がいかなる値であってもカメラから見た物体表面にマーカが設置されてなくてはならない。この条件を満たすように物体表面にマーカを設置してマーカキャリブレーションを行うと、マーカキャリブレーション中においてカメラから見て物体の表側のマーカに対応する投影マーカと、裏側のマーカに対応する投影マーカが重なって表示される。このため、より一層操作者が混乱に陥る可能性が高い。
【0010】
本発明は上記課題を鑑みてなされたものであり、画像に、画像に存在する指標の投影画像を重畳することにより、操作者が混乱することを防ぐことを目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するために本発明は、撮影された画像から指標を検出する指標検出工程と、前記検出された指標の位置姿勢を計算する位置姿勢計算工程と、前記計算された指標の位置姿勢を保持する保持工程とを有し、前記取得された画像に対して、前記検出工程と、前記位置姿勢計算工程とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理方法であり、前記画像に投影画像を重畳すべき指標を判定する判定工程と、前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成工程と、前記生成された投影画像を前記画像に重畳する重畳工程とを有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、投影マーカが重畳された画像を見た操作者の混乱を軽減させることができる。よって、例えば、操作者の位置あわせ処理の確認やマーカキャリブレーションにおける処理を効率化することができる。
【発明を実施するための最良の形態】
【0013】
(実施例1)
実施例1は、マーカキャリブレーションにおいて、マーカ画像からカメラとマーカとの相対位置姿勢を計算し、投影マーカをマーカ画像に重畳する例である。
【0014】
図1は本実施例におけるマーカのフォーマット、図2は実際のマーカの1例である。マーカは16個の小正方形からなる1つの大正方形である。小正方形は白か黒で塗りつぶされており、1ビットの情報を表す。白で塗りつぶされていれば0、黒なら1を表している。小正方形の白黒の組み合わせによってマーカIDが表現される。
【0015】
なお、本実施例においては、マーカの一辺の長さ(大正方形の一辺の長さ)は、全てのマーカで同じであり、予め決められた所定の値である。
【0016】
マーカの姿勢は、マーカ上に定義されたマーカ座標系が世界座標系を基準にどのように回転しているかによって決定される。図3はマーカ座標系がどのように定義されているかを示している。
【0017】
マーカ座標系の各軸の方向は大正方形の角にある4つの小正方形で決定される。4つの小正方形のうち3つは必ず黒(blk1,2,3)、1つは必ず白(wht)であり、blk1,2を結ぶ線分の方向がx座標軸の正方向、blk3,2を結ぶ線分の方向がy座標軸の正方向である。また、マーカ表側の法線方向(マーカの向き)はz座標軸の正方向と一致する。マーカの位置は、世界座標系におけるマーカ座標系原点の位置で決定される。マーカ座標系の原点は図3に示すように大正方形の中心である。
【0018】
マーカIDは情報ビット(x1〜x8)の8個の小正方形で決定される。マーカIDの範囲は8ビットすなわち0〜255となる。その他の4個の小正方形は検査ビット(c1〜c4)であり、画像処理による情報ビットの誤認識が発生した場合の訂正に使用される。
【0019】
検査ビットの値は以下の式から求められる。
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)
カメラとマーカとの相対位置姿勢は、マーカ画像中の四辺形の形状、四辺形の辺の長さ、マーカ画像中の四辺形の中心位置から求めることができる。
【0020】
以上、本実施例で使用するマーカについて説明した。
【0021】
図4は、本実施例における画像処理装置100のハードウェア構成を示すブロック図である。
【0022】
入力部110は、ビデオカメラ等の撮像装置(カメラ)であり、キャリブレーション対象であるマーカの撮影を行う。
【0023】
取得部120は、入力部110で撮影された映像の静止画(スナップショット)を取得してマーカ検出部130に送信したり、入力部110で撮影された映像をマーカ検出部130および合成部170に送信したりする。スナップショットの取得は操作者からの指示に応じて任意の時間に行われるものとする。また、スナップショットを取得する以外は常に映像を撮影し続けるものとする。
【0024】
マーカ検出部130は、入力部110で撮影された映像およびスナップショットからマーカの検出を行う。
【0025】
取得部120からスナップショットが送られてきた場合は、スナップショットからマーカ検出を行う。一方、映像が送られてきた場合は、映像を構成する各フレームに対してマーカの検出処理を行い、その結果を位置姿勢計算部140に送信する。
【0026】
位置姿勢計算部140は、マーカ検出部130から送られてきたマーカの検出結果から、検出されたマーカとビデオカメラの相対位置姿勢およびマーカ同士の相対位置姿勢を計算する。
【0027】
マーカ検出部130から、スナップショットから検出されたマーカの情報が送られてきた場合は、検出したマーカとカメラの相対位置姿勢を計算する。続いて同じスナップショット内に存在するマーカ同士の相対位置姿勢を計算する。マーカ同士の相対位置姿勢は記憶部150に保存される。そして記憶部150に保存されているマーカ同士の相対位置姿勢の組み合わせをすべて読み出して、全部のマーカ同士の相対位置姿勢を計算して、記憶部150に保存する。
【0028】
マーカ検出部130から、映像の各フレームから検出されたマーカ情報が送られてきた場合は、各フレームから検出されたマーカとフレーム撮影時のビデオカメラの相対位置姿勢を計算する。続いて記憶部150から読み出したマーカの相対位置姿勢情報と、計算されたマーカとカメラの相対位置姿勢とから、すべてのマーカとカメラとの相対位置姿勢を計算し、記憶部150に保存する。
【0029】
記憶部150には、図5で示されるように、マーカのID、相対位置姿勢、検出マーカフラグ、基準マーカフラグが関連付けるマーカ定義情報テーブルが記憶される。
【0030】
基準マーカとは相対位置姿勢の基準となるマーカのことである。本実施例では、スナップショットから検出された1つめのマーカが基準マーカと設定する。位置、姿勢は基準マーカとの相対位置姿勢である。ここでは姿勢は軸と回転角による表現が使用されているものとするが、これに限られることは無くオイラー角による表現を使用してもよい。
【0031】
検出マーカフラグは、対象マーカが、マーカ検出部130から送られてきたスナップショットやフレームに存在するかどうかを示すフラグである。検出マーカフラグは後述する生成部160における描画に利用される。
【0032】
マーカ定義情報テーブルは、マーカ検出部130からスナップショットやフレームにおけるマーカ検出処理結果が送られてくるごとにマーカの追加、全マーカの位置姿勢の再計算、検出フラグの更新がなされ、最新の状態が保持される。
【0033】
また、マーカ定義情報テーブルに格納されるマーカは、マーカ検出部130で検出されたマーカに限定されず、手動で追加されたマーカでも構わない。例えば、スナップショットを1枚も取得せず、すべてのマーカを手動で定義して本実施例の画像処理装置を運用することも可能である。
【0034】
生成部160は、位置姿勢計算部140の計算結果である、カメラとマーカとの相対位置姿勢から、マーカ検出が行われたフレームにおける投影マーカの画像を生成する。この時、マーカ定義情報テーブルの検出フラグが立っているマーカとそうでないマーカについて描画処理を変更する。
【0035】
合成部170では、取得部120から受信した映像のフレームに、生成部160で生成された投影マーカの画像を重畳する。なお、取得部120から送信されるフレームは、マーカ検出部130でマーカ検出処理を行ったフレームと同じになるよう同期が取られている。表示部180は、合成部170で合成された映像のフレームを表示する。
【0036】
以上、本実施例のハードウェア構成とその動作概要について説明した。
【0037】
物体の表面に貼り付けられたマーカの相対位置姿勢をマーカキャリブレーションする手順および処理の流れを図6のフローチャートを利用して説明する。
【0038】
なお、ここでは図7〜図8のような各面にサイコロの目と同じマーカIDのマーカが貼り付けられた直方体を物体の例として説明する。図7は物体を表から見た様子を、図8は裏から見た様子を、図9は右から見た様子を示している。また201〜206は直方体に貼り付けられたマーカであり、それぞれ、マーカID1〜6に対応している。
【0039】
また、撮影を行うカメラの座標系は図10のように定義されているものとする。カメラの撮影方向はz座標軸の負の方向と、右手方向がx座標軸の正方向、上方向がy座標軸の正方向となる。
【0040】
操作者のスナップショット取得指示に応じて、画像処理装置はスナップショットを取得し(S100)、スナップショット中のマーカを検出する(S102)。続いて検出されたすべてのマーカとカメラの相対位置姿勢を計算する(S104)。そして、検出されたマーカがマーカ定義情報テーブルに記載されてない場合はそれを追加し、マーカ定義情報テーブルに記載されているマーカ同士の相対位置姿勢すべての再計算を行い、更新する。そして、検出されたマーカのマーカ定義情報テーブル中の検出フラグを更新する(S106)。この時、基準マーカが決定されて無ければそれを決定し、マーカ定義情報テーブルの基準マーカとなったマーカの基準マーカフラグを立てる。計算結果はマーカ定義情報テーブルとして保持されS100に戻る。
【0041】
例えば、マーカが貼り付けられた直方体200を図7ように見える方向からスナップショットを撮影すると、ID1(201)、ID2(202)、ID4(204)のマーカが検出され、相対位置姿勢が計算される。このとき、自動的に初めに検出されたID1のマーカが基準マーカとして決定される。マーカ定義情報テーブルにはID1、ID2、ID4のマーカが登録され、ID1の基準マーカフラグが立てられる。そして、ID2、ID4の位置姿勢は、ID1のマーカとの相対位置姿勢で更新される。ID1、ID2、ID4のマーカの検出フラグも立てられる。
【0042】
続いて、マーカが貼り付けられた直方体200を図9のように見える方向からスナップショットを撮影するとID2(202)、ID4(204)、ID6(206)のマーカが検出される。ID2、ID6のマーカがマーカ定義情報テーブルに追加される。ID2、ID6の基準マーカからの相対位置姿勢がID4のマーカの相対位置姿勢を介して計算され、マーカ定義情報テーブルに記述される。同時にすべてのマーカの検出フラグが一旦下げられ、ID2、ID4、ID6のマーカの検出フラグのみが立てられる。
【0043】
このようにして、ID1、ID2、ID4、ID6の相対位置姿勢が計算される。
【0044】
スナップショット取得指示が無いと、画像処理装置は映像を撮影し続ける。そして撮影した映像のフレームからマーカ検出を行う(S110)。フレームから検出されたすべてのマーカとカメラの相対位置姿勢を計算する(S112)。そして、検出されたマーカがマーカ定義情報テーブルに記載されてない場合はそれを追加し、マーカ定義情報テーブルに記載されているマーカ同士の相対位置姿勢すべての再計算、更新を行う。そして検出されたマーカのマーカ定義情報テーブル中の検出フラグを更新する(S114)。
【0045】
マーカ定義情報テーブルに記載されているマーカのうち検出フラグが立っているマーカについては、投影マーカを描画する(S116、S118)。検出フラグが立ってないマーカについては投影マーカを描画しない。映像のフレームに、このフレームから計算された投影マーカの描画結果を重畳し(S120)、表示する(S122)。
【0046】
例えば、マーカが貼り付けられた直方体を図7、図9ように見える方向からスナップショットを撮影済みの場合、ID1、ID2、ID4、ID6の相対位置姿勢は既知である。この時、再度、図7のように見える方向から長方形200を撮影し、登録されているすべての投影マーカを描画すると、図11のようになる。映像フレーム内のID1、ID2、ID4の画像マーカ201、202、204に加えて、ID1、ID2、ID4、ID6の投影マーカ301、302、304、306が表示される。つまり、図11のように映像フレーム内に存在しないID6の投影マーカ306が表示されてしまう。そこで本実施例では、検出フラグを用いて、マーカ定義情報テーブル記載のマーカの中から、映像から検出されたマーカのみ描画する。これにより、図12のように、検出されていないマーカの投影マーカを描画しないようにしている。
【0047】
以上、物体の表面に貼り付けられたマーカの相対位置姿勢をマーカキャリブレーションする手順および処理において、投影マーカがどのように表示されるのかを説明した。
【0048】
本実施例によれば、6自由度の可動物体の表面に貼り付けられたマーカの相対位置姿勢をマーカキャリブレーションする際に、カメラから見えないマーカの投影マーカを描画しないようにした。本発明によれば、カメラから見えないマーカの投影マーカを描画しないようにすることができるため、投影マーカと画像マーカの一致を画面上で見る時に混乱しないようにすることができる。
【0049】
特に手に持って位置姿勢を自由に動かすことができる比較的小さな6自由度の可動物体の場合は、すべての投影マーカを描画すると、投影マーカで物体が覆いつくされてしまう。本実施例によれば、投影マーカで物体が覆いつくされてしまうことを防ぐことができる。
【0050】
また本実施例ではカメラから見えないマーカの投影マーカを描画しないようにしたが、まったく描画しないのではなく別の色や明度の低いくすんだ薄い色で描いて混乱を誘わない程度に目立たないようにしてもよい。さらには、描画する/しない/別の色で描くといった方法を操作者が選択できるようにしても構わない。また、本実施例ではマーカを設置した物体は可動であったが、固定設置されていても構わない。さらにはマーカキャリブレーションではなく、位置あわせ処理において同様の処理を行っても構わない。
【0051】
(実施例2)
実施例2は、マーカ画像に画像マーカが存在するかどうかを判定する手段として、撮像装置の撮影方向と指標の法線方向との内積を利用する例である。基本的な構成、動作は実施例1に準ずる。
【0052】
図13のフローチャートは、物体の表面に貼り付けられたマーカの相対位置姿勢をキャリブレーションする手順および処理の流れを説明するものである。S215、S216以外は実施例1と同様の処理である。実施例1と同一の処理については、ステップの下2桁を図6と同一にした。
【0053】
スナップショット取得指示が無い場合、画像処理装置は映像を撮影し続ける。そして撮影した映像のフレームからマーカ検出を行う(S210)。続いて検出されたすべてのマーカとカメラの相対位置姿勢を計算する(S212)。
【0054】
そして検出されたマーカがマーカ定義情報テーブルに記載されてない場合はそれを追加して、マーカ定義情報テーブルに記載されているマーカ同士の相対位置姿勢すべての再計算、更新を行う。(S214)。
【0055】
最後に、すべてのマーカ定義情報テーブルに記載されているマーカの法線と、カメラの撮像方向の内積を計算し(S215)、内積が0より小さいマーカは投影マーカを描画し、0以上であるマーカは投影マーカを描画しない(S216)。
【0056】
以上の処理をマーカ定義情報テーブルに記載されているマーカについて行った後、映像のフレームにこのフレームから計算された投影マーカの描画結果を重畳し(S220)、表示する(S222)。
【0057】
本実施例では、マーカ画像に画像マーカが存在するかどうかを判定する手段として、撮像装置の撮影方向と指標の法線方向との内積を利用した。
【0058】
人間はマーカが映っていると認識できるが、画像処理ではマーカが認識できない場合、例えば図14のように画像の端に半分だけマーカが映っているような場合、実施例1の処理方法では、マーカ212の投影マーカ312を描画しない。
【0059】
これに対し、実施例2の処理方法では、マーカ212の投影マーカ312を描画することが可能となる。
【0060】
さらには、観測不可マーカの投影マーカ描画方法を予め用意した方法から選択可能とすることで、マーカが設置された物体の色、マーカの設置密度に応じた柔軟な使用が可能となる。
【0061】
(その他の実施の形態)
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0062】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0063】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0064】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0065】
【図1】マーカのフォーマットを示す図である。
【図2】実際のマーカの例を示す図である。
【図3】マーカの座標系を示す図である。
【図4】実施例1における画像処理装置100の構成図である。
【図5】実施例1におけるマーカ定義情報テーブルの例である。
【図6】実施例1におけるマーカキャリブレーションの一連の操作および処理である。
【図7】マーカが貼り付けられた直方体200の観察の1例である。
【図8】マーカが貼り付けられた直方体200の観察の1例である。
【図9】マーカが貼り付けられた直方体200の観察の1例である。
【図10】カメラの座標系を示す図である。
【図11】すべての投影マーカを描画した場合の例である。
【図12】実施例1における投影マーカが重畳された画像の例である。
【図13】実施例2におけるマーカキャリブレーションの一連の操作および処理である。
【図14】実施例2における投影マーカが重畳された画像の例である。
【技術分野】
【0001】
本発明は、撮影された画像から指標の位置姿勢を計算するものに関する。
【背景技術】
【0002】
高品質な複合現実感を提供するための重要な技術の一つとして、現実空間と仮想空間の位置あわせ処理がある。位置あわせ処理として様々な手法が提案されているが、それらの中でも指標(マーカ)を撮影した画像(指標画像またはマーカ画像)から、指標と撮像装置(カメラ)の相対位置姿勢を計算する方法がコストや使い勝手の点から広く利用されている(非特許文献1参照)。本明細書では、マーカが撮影された画像をマーカ画像と表現する。
【0003】
撮影したマーカ画像中のマーカとカメラとの相対位置姿勢から、マーカ画像中のマーカとの相対位置姿勢が既知である別のマーカがどのように見えるかを三次元グラフィックス(3DCG)技術を用いて計算、描画することができる。本明細書では、この描画されたマーカの画像を投影マーカと表現する。また、実際のマーカを現実マーカ、マーカ画像中の現実マーカの画像領域を画像マーカと表現する。
【0004】
投影マーカをマーカ画像に重畳し、表示することにより、画像マーカと投影マーカとの位置姿勢のズレを視覚化することができる。操作者は投影マーカが重畳された画像から、位置あわせ処理の動作確認、精度、マーカの設置位置姿勢の間違い、マーカの設置忘れ等を把握することができる。
【0005】
一方、位置あわせ処理はすべての現実マーカの位置姿勢が既知であることを前提としており、マーカの位置姿勢を予め測定し入力する作業が必要である。マーカの数や設置位置姿勢によっては人が手作業で測定を行うことは非現実的であり、マーカの位置姿勢を効率よくかつ高精度に測定する手段が求められている。
【0006】
近年、マーカ画像からマーカ間の相対位置姿勢を計算するマーカキャリブレーションに関する方法が提案されている(非特許文献2参照)。マーカキャリブレーションにより全てのマーカ間の相対位置姿勢を求めた後、任意のマーカの世界座標系における位置姿勢を決定することにより、世界座標系におけるすべてのマーカの位置姿勢を求めることができる。
【非特許文献1】S.Uchiyama,K.Takemoto,K.Satoh,H.Yamamoto,and H.Tamura:”MR Platform:A basic body on which mixed reality applications are built,”Proc.IEEE/ACM Int’l Symp.on Mixed and Augmented Reality(ISMAR 2002),pp.246−253,2002.
【非特許文献2】小竹,内山,山本:マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法,日本バーチャルリアリティ学会論文誌,vol.10,No.3,pp.401−410,2005.
【発明の開示】
【発明が解決しようとする課題】
【0007】
投影マーカをマーカ画像に重畳し、投影マーカと画像マーカとを比較することにより、位置あわせ処理の動作、精度、マーカの設置位置姿勢の間違い、マーカの設置忘れ等を、操作者が把握することができる。
【0008】
このとき、位置姿勢が既知であるすべてのマーカの投影マーカを描画すると、投影マーカが重畳された画像を見た操作者を混乱させる可能性がある。例えば、操作者から見て衝立や柱の裏側に設置されたマーカの投影マーカを重畳すると、操作者から見た衝立や柱の表側にマーカを設置し忘れているのか、裏側のマーカの位置姿勢が既知となっているのかを容易に判別することができない。
【0009】
また、6自由度を持つ可動物体の位置あわせを画像から行う場合には、カメラとの相対姿勢がいかなる値であってもカメラから見た物体表面にマーカが設置されてなくてはならない。この条件を満たすように物体表面にマーカを設置してマーカキャリブレーションを行うと、マーカキャリブレーション中においてカメラから見て物体の表側のマーカに対応する投影マーカと、裏側のマーカに対応する投影マーカが重なって表示される。このため、より一層操作者が混乱に陥る可能性が高い。
【0010】
本発明は上記課題を鑑みてなされたものであり、画像に、画像に存在する指標の投影画像を重畳することにより、操作者が混乱することを防ぐことを目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するために本発明は、撮影された画像から指標を検出する指標検出工程と、前記検出された指標の位置姿勢を計算する位置姿勢計算工程と、前記計算された指標の位置姿勢を保持する保持工程とを有し、前記取得された画像に対して、前記検出工程と、前記位置姿勢計算工程とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理方法であり、前記画像に投影画像を重畳すべき指標を判定する判定工程と、前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成工程と、前記生成された投影画像を前記画像に重畳する重畳工程とを有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、投影マーカが重畳された画像を見た操作者の混乱を軽減させることができる。よって、例えば、操作者の位置あわせ処理の確認やマーカキャリブレーションにおける処理を効率化することができる。
【発明を実施するための最良の形態】
【0013】
(実施例1)
実施例1は、マーカキャリブレーションにおいて、マーカ画像からカメラとマーカとの相対位置姿勢を計算し、投影マーカをマーカ画像に重畳する例である。
【0014】
図1は本実施例におけるマーカのフォーマット、図2は実際のマーカの1例である。マーカは16個の小正方形からなる1つの大正方形である。小正方形は白か黒で塗りつぶされており、1ビットの情報を表す。白で塗りつぶされていれば0、黒なら1を表している。小正方形の白黒の組み合わせによってマーカIDが表現される。
【0015】
なお、本実施例においては、マーカの一辺の長さ(大正方形の一辺の長さ)は、全てのマーカで同じであり、予め決められた所定の値である。
【0016】
マーカの姿勢は、マーカ上に定義されたマーカ座標系が世界座標系を基準にどのように回転しているかによって決定される。図3はマーカ座標系がどのように定義されているかを示している。
【0017】
マーカ座標系の各軸の方向は大正方形の角にある4つの小正方形で決定される。4つの小正方形のうち3つは必ず黒(blk1,2,3)、1つは必ず白(wht)であり、blk1,2を結ぶ線分の方向がx座標軸の正方向、blk3,2を結ぶ線分の方向がy座標軸の正方向である。また、マーカ表側の法線方向(マーカの向き)はz座標軸の正方向と一致する。マーカの位置は、世界座標系におけるマーカ座標系原点の位置で決定される。マーカ座標系の原点は図3に示すように大正方形の中心である。
【0018】
マーカIDは情報ビット(x1〜x8)の8個の小正方形で決定される。マーカIDの範囲は8ビットすなわち0〜255となる。その他の4個の小正方形は検査ビット(c1〜c4)であり、画像処理による情報ビットの誤認識が発生した場合の訂正に使用される。
【0019】
検査ビットの値は以下の式から求められる。
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)
カメラとマーカとの相対位置姿勢は、マーカ画像中の四辺形の形状、四辺形の辺の長さ、マーカ画像中の四辺形の中心位置から求めることができる。
【0020】
以上、本実施例で使用するマーカについて説明した。
【0021】
図4は、本実施例における画像処理装置100のハードウェア構成を示すブロック図である。
【0022】
入力部110は、ビデオカメラ等の撮像装置(カメラ)であり、キャリブレーション対象であるマーカの撮影を行う。
【0023】
取得部120は、入力部110で撮影された映像の静止画(スナップショット)を取得してマーカ検出部130に送信したり、入力部110で撮影された映像をマーカ検出部130および合成部170に送信したりする。スナップショットの取得は操作者からの指示に応じて任意の時間に行われるものとする。また、スナップショットを取得する以外は常に映像を撮影し続けるものとする。
【0024】
マーカ検出部130は、入力部110で撮影された映像およびスナップショットからマーカの検出を行う。
【0025】
取得部120からスナップショットが送られてきた場合は、スナップショットからマーカ検出を行う。一方、映像が送られてきた場合は、映像を構成する各フレームに対してマーカの検出処理を行い、その結果を位置姿勢計算部140に送信する。
【0026】
位置姿勢計算部140は、マーカ検出部130から送られてきたマーカの検出結果から、検出されたマーカとビデオカメラの相対位置姿勢およびマーカ同士の相対位置姿勢を計算する。
【0027】
マーカ検出部130から、スナップショットから検出されたマーカの情報が送られてきた場合は、検出したマーカとカメラの相対位置姿勢を計算する。続いて同じスナップショット内に存在するマーカ同士の相対位置姿勢を計算する。マーカ同士の相対位置姿勢は記憶部150に保存される。そして記憶部150に保存されているマーカ同士の相対位置姿勢の組み合わせをすべて読み出して、全部のマーカ同士の相対位置姿勢を計算して、記憶部150に保存する。
【0028】
マーカ検出部130から、映像の各フレームから検出されたマーカ情報が送られてきた場合は、各フレームから検出されたマーカとフレーム撮影時のビデオカメラの相対位置姿勢を計算する。続いて記憶部150から読み出したマーカの相対位置姿勢情報と、計算されたマーカとカメラの相対位置姿勢とから、すべてのマーカとカメラとの相対位置姿勢を計算し、記憶部150に保存する。
【0029】
記憶部150には、図5で示されるように、マーカのID、相対位置姿勢、検出マーカフラグ、基準マーカフラグが関連付けるマーカ定義情報テーブルが記憶される。
【0030】
基準マーカとは相対位置姿勢の基準となるマーカのことである。本実施例では、スナップショットから検出された1つめのマーカが基準マーカと設定する。位置、姿勢は基準マーカとの相対位置姿勢である。ここでは姿勢は軸と回転角による表現が使用されているものとするが、これに限られることは無くオイラー角による表現を使用してもよい。
【0031】
検出マーカフラグは、対象マーカが、マーカ検出部130から送られてきたスナップショットやフレームに存在するかどうかを示すフラグである。検出マーカフラグは後述する生成部160における描画に利用される。
【0032】
マーカ定義情報テーブルは、マーカ検出部130からスナップショットやフレームにおけるマーカ検出処理結果が送られてくるごとにマーカの追加、全マーカの位置姿勢の再計算、検出フラグの更新がなされ、最新の状態が保持される。
【0033】
また、マーカ定義情報テーブルに格納されるマーカは、マーカ検出部130で検出されたマーカに限定されず、手動で追加されたマーカでも構わない。例えば、スナップショットを1枚も取得せず、すべてのマーカを手動で定義して本実施例の画像処理装置を運用することも可能である。
【0034】
生成部160は、位置姿勢計算部140の計算結果である、カメラとマーカとの相対位置姿勢から、マーカ検出が行われたフレームにおける投影マーカの画像を生成する。この時、マーカ定義情報テーブルの検出フラグが立っているマーカとそうでないマーカについて描画処理を変更する。
【0035】
合成部170では、取得部120から受信した映像のフレームに、生成部160で生成された投影マーカの画像を重畳する。なお、取得部120から送信されるフレームは、マーカ検出部130でマーカ検出処理を行ったフレームと同じになるよう同期が取られている。表示部180は、合成部170で合成された映像のフレームを表示する。
【0036】
以上、本実施例のハードウェア構成とその動作概要について説明した。
【0037】
物体の表面に貼り付けられたマーカの相対位置姿勢をマーカキャリブレーションする手順および処理の流れを図6のフローチャートを利用して説明する。
【0038】
なお、ここでは図7〜図8のような各面にサイコロの目と同じマーカIDのマーカが貼り付けられた直方体を物体の例として説明する。図7は物体を表から見た様子を、図8は裏から見た様子を、図9は右から見た様子を示している。また201〜206は直方体に貼り付けられたマーカであり、それぞれ、マーカID1〜6に対応している。
【0039】
また、撮影を行うカメラの座標系は図10のように定義されているものとする。カメラの撮影方向はz座標軸の負の方向と、右手方向がx座標軸の正方向、上方向がy座標軸の正方向となる。
【0040】
操作者のスナップショット取得指示に応じて、画像処理装置はスナップショットを取得し(S100)、スナップショット中のマーカを検出する(S102)。続いて検出されたすべてのマーカとカメラの相対位置姿勢を計算する(S104)。そして、検出されたマーカがマーカ定義情報テーブルに記載されてない場合はそれを追加し、マーカ定義情報テーブルに記載されているマーカ同士の相対位置姿勢すべての再計算を行い、更新する。そして、検出されたマーカのマーカ定義情報テーブル中の検出フラグを更新する(S106)。この時、基準マーカが決定されて無ければそれを決定し、マーカ定義情報テーブルの基準マーカとなったマーカの基準マーカフラグを立てる。計算結果はマーカ定義情報テーブルとして保持されS100に戻る。
【0041】
例えば、マーカが貼り付けられた直方体200を図7ように見える方向からスナップショットを撮影すると、ID1(201)、ID2(202)、ID4(204)のマーカが検出され、相対位置姿勢が計算される。このとき、自動的に初めに検出されたID1のマーカが基準マーカとして決定される。マーカ定義情報テーブルにはID1、ID2、ID4のマーカが登録され、ID1の基準マーカフラグが立てられる。そして、ID2、ID4の位置姿勢は、ID1のマーカとの相対位置姿勢で更新される。ID1、ID2、ID4のマーカの検出フラグも立てられる。
【0042】
続いて、マーカが貼り付けられた直方体200を図9のように見える方向からスナップショットを撮影するとID2(202)、ID4(204)、ID6(206)のマーカが検出される。ID2、ID6のマーカがマーカ定義情報テーブルに追加される。ID2、ID6の基準マーカからの相対位置姿勢がID4のマーカの相対位置姿勢を介して計算され、マーカ定義情報テーブルに記述される。同時にすべてのマーカの検出フラグが一旦下げられ、ID2、ID4、ID6のマーカの検出フラグのみが立てられる。
【0043】
このようにして、ID1、ID2、ID4、ID6の相対位置姿勢が計算される。
【0044】
スナップショット取得指示が無いと、画像処理装置は映像を撮影し続ける。そして撮影した映像のフレームからマーカ検出を行う(S110)。フレームから検出されたすべてのマーカとカメラの相対位置姿勢を計算する(S112)。そして、検出されたマーカがマーカ定義情報テーブルに記載されてない場合はそれを追加し、マーカ定義情報テーブルに記載されているマーカ同士の相対位置姿勢すべての再計算、更新を行う。そして検出されたマーカのマーカ定義情報テーブル中の検出フラグを更新する(S114)。
【0045】
マーカ定義情報テーブルに記載されているマーカのうち検出フラグが立っているマーカについては、投影マーカを描画する(S116、S118)。検出フラグが立ってないマーカについては投影マーカを描画しない。映像のフレームに、このフレームから計算された投影マーカの描画結果を重畳し(S120)、表示する(S122)。
【0046】
例えば、マーカが貼り付けられた直方体を図7、図9ように見える方向からスナップショットを撮影済みの場合、ID1、ID2、ID4、ID6の相対位置姿勢は既知である。この時、再度、図7のように見える方向から長方形200を撮影し、登録されているすべての投影マーカを描画すると、図11のようになる。映像フレーム内のID1、ID2、ID4の画像マーカ201、202、204に加えて、ID1、ID2、ID4、ID6の投影マーカ301、302、304、306が表示される。つまり、図11のように映像フレーム内に存在しないID6の投影マーカ306が表示されてしまう。そこで本実施例では、検出フラグを用いて、マーカ定義情報テーブル記載のマーカの中から、映像から検出されたマーカのみ描画する。これにより、図12のように、検出されていないマーカの投影マーカを描画しないようにしている。
【0047】
以上、物体の表面に貼り付けられたマーカの相対位置姿勢をマーカキャリブレーションする手順および処理において、投影マーカがどのように表示されるのかを説明した。
【0048】
本実施例によれば、6自由度の可動物体の表面に貼り付けられたマーカの相対位置姿勢をマーカキャリブレーションする際に、カメラから見えないマーカの投影マーカを描画しないようにした。本発明によれば、カメラから見えないマーカの投影マーカを描画しないようにすることができるため、投影マーカと画像マーカの一致を画面上で見る時に混乱しないようにすることができる。
【0049】
特に手に持って位置姿勢を自由に動かすことができる比較的小さな6自由度の可動物体の場合は、すべての投影マーカを描画すると、投影マーカで物体が覆いつくされてしまう。本実施例によれば、投影マーカで物体が覆いつくされてしまうことを防ぐことができる。
【0050】
また本実施例ではカメラから見えないマーカの投影マーカを描画しないようにしたが、まったく描画しないのではなく別の色や明度の低いくすんだ薄い色で描いて混乱を誘わない程度に目立たないようにしてもよい。さらには、描画する/しない/別の色で描くといった方法を操作者が選択できるようにしても構わない。また、本実施例ではマーカを設置した物体は可動であったが、固定設置されていても構わない。さらにはマーカキャリブレーションではなく、位置あわせ処理において同様の処理を行っても構わない。
【0051】
(実施例2)
実施例2は、マーカ画像に画像マーカが存在するかどうかを判定する手段として、撮像装置の撮影方向と指標の法線方向との内積を利用する例である。基本的な構成、動作は実施例1に準ずる。
【0052】
図13のフローチャートは、物体の表面に貼り付けられたマーカの相対位置姿勢をキャリブレーションする手順および処理の流れを説明するものである。S215、S216以外は実施例1と同様の処理である。実施例1と同一の処理については、ステップの下2桁を図6と同一にした。
【0053】
スナップショット取得指示が無い場合、画像処理装置は映像を撮影し続ける。そして撮影した映像のフレームからマーカ検出を行う(S210)。続いて検出されたすべてのマーカとカメラの相対位置姿勢を計算する(S212)。
【0054】
そして検出されたマーカがマーカ定義情報テーブルに記載されてない場合はそれを追加して、マーカ定義情報テーブルに記載されているマーカ同士の相対位置姿勢すべての再計算、更新を行う。(S214)。
【0055】
最後に、すべてのマーカ定義情報テーブルに記載されているマーカの法線と、カメラの撮像方向の内積を計算し(S215)、内積が0より小さいマーカは投影マーカを描画し、0以上であるマーカは投影マーカを描画しない(S216)。
【0056】
以上の処理をマーカ定義情報テーブルに記載されているマーカについて行った後、映像のフレームにこのフレームから計算された投影マーカの描画結果を重畳し(S220)、表示する(S222)。
【0057】
本実施例では、マーカ画像に画像マーカが存在するかどうかを判定する手段として、撮像装置の撮影方向と指標の法線方向との内積を利用した。
【0058】
人間はマーカが映っていると認識できるが、画像処理ではマーカが認識できない場合、例えば図14のように画像の端に半分だけマーカが映っているような場合、実施例1の処理方法では、マーカ212の投影マーカ312を描画しない。
【0059】
これに対し、実施例2の処理方法では、マーカ212の投影マーカ312を描画することが可能となる。
【0060】
さらには、観測不可マーカの投影マーカ描画方法を予め用意した方法から選択可能とすることで、マーカが設置された物体の色、マーカの設置密度に応じた柔軟な使用が可能となる。
【0061】
(その他の実施の形態)
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0062】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0063】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0064】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0065】
【図1】マーカのフォーマットを示す図である。
【図2】実際のマーカの例を示す図である。
【図3】マーカの座標系を示す図である。
【図4】実施例1における画像処理装置100の構成図である。
【図5】実施例1におけるマーカ定義情報テーブルの例である。
【図6】実施例1におけるマーカキャリブレーションの一連の操作および処理である。
【図7】マーカが貼り付けられた直方体200の観察の1例である。
【図8】マーカが貼り付けられた直方体200の観察の1例である。
【図9】マーカが貼り付けられた直方体200の観察の1例である。
【図10】カメラの座標系を示す図である。
【図11】すべての投影マーカを描画した場合の例である。
【図12】実施例1における投影マーカが重畳された画像の例である。
【図13】実施例2におけるマーカキャリブレーションの一連の操作および処理である。
【図14】実施例2における投影マーカが重畳された画像の例である。
【特許請求の範囲】
【請求項1】
撮影された画像から指標を検出する指標検出工程と、
前記検出された指標の位置姿勢を計算する位置姿勢計算工程と、
前記計算された指標の位置姿勢を保持する保持工程とを有し、
前記取得された画像に対して、前記検出工程と、前記位置姿勢計算工程とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理方法であり、
前記画像に投影画像を重畳すべき指標を判定する判定工程と、
前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成工程と、
前記生成された投影画像を前記画像に重畳する重畳工程とを有することを特徴とする画像処理方法。
【請求項2】
前記判定工程は、前記指標検出工程の検出結果から、前記画像に投影画像を重畳すべき指標を判定することを特徴とする請求項1の画像処理方法。
【請求項3】
前記判定工程は、前記画像を撮影した撮像装置の撮影方向と前記指標の法線方向とに基づき、前記画像に投影画像を重畳すべき指標を判定することを特徴とする請求項1の画像処理方法。
【請求項4】
請求項1乃至3のいずれかに記載の画像処理方法をコンピュータに実現するために、コンピュータが読み取り可能に記録されたプログラム。
【請求項5】
撮影された画像から指標を検出する指標検出手段と、
前記検出された指標の位置姿勢を計算する位置姿勢計算手段と、
前記計算された指標の位置姿勢を保持する保持手段とを有し、
前記取得された画像に対して、前記検出手段による検出と、前記位置姿勢計算手段による位置姿勢の計算とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理装置であり、
前記画像に投影画像を重畳すべき指標を判定する判定手段と、
前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成手段と、
前記生成された投影画像を前記画像に重畳する重畳手段とを有することを特徴とする画像処理装置。
【請求項1】
撮影された画像から指標を検出する指標検出工程と、
前記検出された指標の位置姿勢を計算する位置姿勢計算工程と、
前記計算された指標の位置姿勢を保持する保持工程とを有し、
前記取得された画像に対して、前記検出工程と、前記位置姿勢計算工程とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理方法であり、
前記画像に投影画像を重畳すべき指標を判定する判定工程と、
前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成工程と、
前記生成された投影画像を前記画像に重畳する重畳工程とを有することを特徴とする画像処理方法。
【請求項2】
前記判定工程は、前記指標検出工程の検出結果から、前記画像に投影画像を重畳すべき指標を判定することを特徴とする請求項1の画像処理方法。
【請求項3】
前記判定工程は、前記画像を撮影した撮像装置の撮影方向と前記指標の法線方向とに基づき、前記画像に投影画像を重畳すべき指標を判定することを特徴とする請求項1の画像処理方法。
【請求項4】
請求項1乃至3のいずれかに記載の画像処理方法をコンピュータに実現するために、コンピュータが読み取り可能に記録されたプログラム。
【請求項5】
撮影された画像から指標を検出する指標検出手段と、
前記検出された指標の位置姿勢を計算する位置姿勢計算手段と、
前記計算された指標の位置姿勢を保持する保持手段とを有し、
前記取得された画像に対して、前記検出手段による検出と、前記位置姿勢計算手段による位置姿勢の計算とを行うことにより、前記保持されている指標の位置姿勢を更新する画像処理装置であり、
前記画像に投影画像を重畳すべき指標を判定する判定手段と、
前記保持された指標の位置姿勢に基づき、前記画像に投影画像を重畳すべきであると判定された指標の投影画像を生成する生成手段と、
前記生成された投影画像を前記画像に重畳する重畳手段とを有することを特徴とする画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2008−46749(P2008−46749A)
【公開日】平成20年2月28日(2008.2.28)
【国際特許分類】
【出願番号】特願2006−219844(P2006−219844)
【出願日】平成18年8月11日(2006.8.11)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成20年2月28日(2008.2.28)
【国際特許分類】
【出願日】平成18年8月11日(2006.8.11)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]