以下添付図面を参照して、本発明をその好適な実施形態に従って詳細に説明する。
[第1の実施形態]
図2は、本実施形態に係るシステムの機能構成を示すブロック図である。同図に示す如く、本実施形態に係るシステムは、撮像部210と指標位置姿勢推定装置2とで構成されている。
先ず、撮像部210について説明する。撮像部210は現実空間の動画像/静止画像を撮像するカメラであり、指標が配置された現実空間であるシーンを撮影する。撮影した1以上の画像は、指標位置姿勢推定装置2が有する画像取り込み部220に入力される。
次に、指標位置姿勢推定装置2について説明する。同図に示す如く、指標位置姿勢推定装置2は、画像取り込み部220、指標検出同定部230、指標位置姿勢サイズ算出部235、指標配置条件設定部240、指標位置姿勢算出部250、により構成されている。
画像取り込み部220は、撮像部210から入力された画像を受け取り、後段の指標検出同定部230に送出する。指標検出同定部230はこの画像から指標を検出し、検出したそれぞれの指標の同定を行う。指標位置姿勢サイズ算出部235は、指標検出同定部230による指標検出同定結果に基づいて、指標の位置及び姿勢及びサイズを求める。指標配置条件設定部240は、指標の配置に関する拘束条件を設定する。本実施形態では、指標位置姿勢サイズ算出部235が求めた指標のサイズを、実際にユーザが作成した指標のサイズに修正する。指標位置姿勢算出部250は、指標検出同定部230による指標検出同定結果に基づいて、指標配置条件設定部240が設定した指標の配置に関する拘束条件を満たすように指標の位置及び姿勢を算出する。
図3は、指標位置姿勢推定装置2に適用可能なコンピュータ300のハードウェア構成を示すブロック図である。301はCPUで、ROM306やRAM307に格納されているプログラムやデータを用いて本コンピュータ300全体の制御を行うと共に、指標位置姿勢推定装置2が行う後述の処理を実行する。即ち、図2に示した画像取り込み部220、指標検出同定部230、指標位置姿勢サイズ算出部235、指標配置条件設定部240、指標位置姿勢算出部250として機能する。従って以下の説明において、これら各部を動作の主体として説明した場合には、何れも、CPU301がこれらの各部として機能しているものと解釈すべきである。
302はグラフィックアクセラレータで、仮想空間の画像を生成するなど、画像処理に係る部分的な処理を行う。処理後の画像は、HMD(ヘッドマウントディスプレイ)304が有する不図示の表示部に対して出力する。
310は画像取り込み器で、撮像部210として機能するカメラ311から入力された画像をハードディスク305やRAM307に対して送出するものである。なお、ここでの説明の趣旨ではないので、余り詳しくは触れないが、画像取り込み器310は、カメラ311から入力された画像信号に対してA/D変換や、適切な信号処理等を行う。これにより、カメラ311により撮像された画像を、適切なフォーマットを有する画像データとしてハードディスク305やRAM307に対して送出する。
ハードディスク305には、OS(オペレーティングシステム)や、指標位置姿勢推定装置2が行うものとして説明する後述の各処理をCPU301に実行させるためのプログラムやデータが保存されている。係るプログラムには、画像取り込み部220、指標検出同定部230、指標位置姿勢サイズ算出部235、指標配置条件設定部240、指標位置姿勢算出部250の各部の機能をCPU301に実行させるためのプログラムも含まれている。また、ハードディスク305には、既知の情報として後述するものについても保存されている。このように、ハードディスク305に保存されているプログラムやデータは、CPU301による制御に従って適宜RAM307にロードされる。CPU301はこのロードされたプログラムやデータを用いて処理を実行するので、本コンピュータ300は、指標位置姿勢推定装置2が行うものとして後述する各処理を実行することになる。
ROM306には、本コンピュータ300の設定データやブートプログラムなどが格納されている。
RAM307は、ハードディスク305からロードされたプログラムやデータ、画像取り込み器310から入力された画像データなどを一時的に記憶する為のエリアを有する。更にRAM307は、CPU301が各種の処理を実行する際に用いるワークエリアも有する。即ち、RAM307は、各種のエリアを適宜提供することができる。
308,309はそれぞれマウス、キーボードで、何れも本コンピュータ300の操作者が操作することで、各種の指示をCPU301に対して入力することができる。
380はI/F(インターフェース)で、プリンタ312を本コンピュータ300に接続するためのもので、プリンタ312への印刷データは、このI/F380を介して本コンピュータ300からプリンタ312に対して送出される。
399は、CPU301、グラフィックアクセラレータ302、画像取り込み器310、ハードディスク305、ROM306、RAM307、マウス308、キーボード309、I/F380の各部を繋ぐバスである。
プリンタ312は、周知の通り、本コンピュータ300から送出された印刷データに従って、紙等の記録媒体上に画像や文字などを形成するものである。なお、プリンタ312は、印刷機能を有するものであれば、如何なる装置で構成されていても良い。
次に、以上の構成を備えた指標位置姿勢推定装置2の動作の概要について説明する。
先ず、本実施形態で用いる指標について説明する。図4は、本実施形態で用いる指標を説明する図である。図4に示す指標は、配置情報が3次元空間中における位置と姿勢によって表現される平面指標である。本実施形態では、平面指標として正方形指標を用いるが、平面指標は正方形指標に限るものではなく、平面図形の指標であれば何れの形態であってもよい。正方形指標の3次元空間における位置は、正方形の中心、すなわち正方形の2本の対角線の交点であるとする。また、図4に示すように、指標の法線方向をz軸とし、x軸、y軸を指標の隣接する二つの辺に平行になるように正方形指標の座標系をとり、基準座標系から見た正方形指標の座標系の姿勢を正方形指標の姿勢とする。本実施形態における正方形指標は画像上で容易に検出可能なように黒枠で囲まれており、黒枠内部の正方形を正方形指標として用いる。
また、正方形指標のサイズは、図4に示すx軸、もしくはy軸方向の長さであるとする。すなわち、正方形の一辺の長さを指標のサイズとする。指標のサイズとしては、図4では1種類しか示していないが、実際には異なる複数サイズの指標を用いる。なおユーザは、本実施形態の方法を実施する前に、指標をあらかじめ1つ以上印刷し、シーン中の壁や床や天井、シーン中の物体等に貼り付けておくものとする。
<1. 指標の撮影>
撮像部210は、指標が配置されたシーンの画像を多数撮影し、撮像した画像はそれぞれ、画像取り込み部220に対して出力する。画像取り込み部220は、受けたそれぞれの画像を後段の指標検出同定部230に送出する。
<2. 指標の検出同定>
指標検出同定部230は、画像取り込み部220から受けた画像から指標を検出し、同定を行う。ここで、指標の検出とは、2次元画像上での指標の画像座標を求めることであり、正方形指標の場合、各頂点の画像座標を求めることである。指標の画像座標は、自動で求めてもよいし、ユーザが画像上をマウスでクリックするなどして手動で指定してもよい。正方形指標の各頂点の画像座標を自動で求める場合、例えば画像を二値化し、正方形指標の黒枠領域を検出する。そして、黒枠領域に内接する四角形を求め、求めた四角形の各頂点の画像座標を、正方形指標の各頂点の画像座標として求める。一方、手動で求める場合、ユーザにより指示された画像座標を、指標の画像座標として求める。
指標の同定とは、画像内で検出される指標を一意に特定することである。指標の同定は、自動で行ってもよいし、ユーザが手動で行ってもよい。正方形指標の同定を自動的に行う場合には、例えば指標毎に固有のパターンを持たせ、指標を撮影した画像から各指標が持つパターンを認識することで同定を行う。後者の場合には、ユーザ入力に対応して同定を行う。
なお、指標検出同定部230による指標の画像座標の検出処理、及び指標の同定処理については周知の技術であるので、これ以上の詳細な説明は省略する。
<3. 指標位置姿勢サイズ算出>
指標位置姿勢サイズ算出部235は、シーン中に存在する指標の位置及び姿勢及びサイズを求める。
より詳しくは、指標位置姿勢サイズ算出部235は、指標検出同定部230による指標の検出同定結果に基づいて、基準座標系における指標の位置及び姿勢及びサイズの算出を行う。以下では、係る処理の詳細について説明する。
先ず始めに透視投影変換について説明する。図6は、カメラ(撮像部210)座標系及び画面座標系を説明する図である。画面座標系の原点oiは視軸と画像面との交点にとり、画像面の水平方向をxi軸、垂直方向をyi軸にとる。また、カメラ座標系の原点ocと画像面との距離(焦点距離)をfとする。カメラ座標系のzc軸は撮像部210の視軸に沿った視線方向とは反対の方向、xc軸は画像の水平方向と平行に、yc軸は画像の垂直方向と平行にとる。
透視投影変換により、カメラ座標系上の点
は下記の式(1)に示す如く、画面座標が
である点に投影される。
本実施形態では撮像部210におけるレンズ歪みは存在しないか、もしくは補正されているものと仮定し、撮像部210はピンホールカメラであると想定している。式(1)は図7に示すように、空間中の点701と、この点701の画像上の投影点702と、撮像部210(カメラ)位置(視点)703と、は同一直線(共線)上に存在することを示しており、共線条件式とも呼ばれる。図7は、共線条件式を説明する図である。
基準座標系における撮像部210の位置を
、撮像部210の姿勢(実際には、カメラ座標系に対する基準座標系の姿勢)を
であるとする。
は3自由度の姿勢表現方法であり、姿勢を回転軸ベクトル及び回転角で表現している。回転角をraとすると、raは
によって下記の式(2)のように表される。
また、回転軸ベクトルを
とすると、
と
の関係は式(3)のように表される。
(回転角ra、回転軸ベクトル
)と3×3回転変換行列
との関係は下記の式(4)のように表される。
基準座標系上の点
のカメラ座標
は
、及び
によって下記の式(5)のように表される。
式(1)、(5)から、透視投影変換によって、基準座標上の点
は下記の式(6)のように画像上の点
に投影される。
理想的には、
、
、
をもとに式(6)から計算される投影位置(計算位置)と実際に画像上で観察される位置(観察位置)は一致する。そのため、計算位置と観察位置の画像の水平方向のずれをF、垂直方向のずれをG、観察位置を
とすると、下記の式(7)に示すようにF、Gは0となる。
F、Gは撮像部210位置
、撮像部210姿勢
、観察対象点の基準座標上での位置
に関する関数である。正方形指標は、基準座標系における位置
及び基準座標系に対する姿勢
(
に対応した3×3回転変換行列を
とする)及び基準座標系におけるスケール
(スケールは、図4に示す指標の中心を基準とした大きさであるため、指標サイズは指標スケールの2倍となる)で表現される。正方形指標の頂点の正方形指標座標系における位置を
とする。正方形指標の頂点の基準座標系における位置
は下記の式(8)のように、
と
と
に関する関数となる。
そのため、下記の式(9)に示すように、F、Gは、撮像部210位置
、撮像部210姿勢
、正方形指標の位置
及び正方形指標の姿勢
及び正方形指標のスケール
の関数となる。
式(9)は撮像部210の位置及び姿勢、指標の位置及び姿勢及びスケールについて非線形な方程式となっている。そこで、1次の項までのテイラー展開を用いて撮像部210の位置及び姿勢、指標の位置及び姿勢及びスケールの近似値の近傍で線形化し、繰返し計算によって撮像部210の位置及び姿勢、指標の位置及び姿勢及びスケールを求める。
式(10)は、それぞれ式(9)を線形化したものである。Δtx、Δty、Δtzは撮像部210の位置、Δωx、Δωy、Δωzは撮像部210の姿勢である。また、Δtsx、Δtsy、Δtszは正方形指標の位置、Δωsx、Δωsy、Δωszは正方形指標の姿勢、ΔLは正方形指標のスケールの近似値に対する補正量を表す。
ここで式(10)のF0、G0は定数であり、撮像部210位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値から求まる指標の投影位置(計算位置)と観察位置
との差である。
式(10)は、ある画像上で観察される正方形指標の一個の頂点についての観測方程式である。実際には複数の画像上で正方形指標の各頂点が観察されるため、式(10)は複数得られる。そこで複数の式(10)を、撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値に対する補正値についての連立方程式として解き、近似値を補正することを繰り返す。これにより、撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールを求める。
図8は、指標位置姿勢サイズ算出部235によって正方形指標の位置及び姿勢及びサイズ(指標スケールの2倍)を求める処理のフローチャートである。尚、詳しくは後述するが、指標位置姿勢算出部250が正方形指標の位置及び姿勢を求める場合にも、図8のフローチャートに従った処理とほぼ同じ処理を行う。
なお、同図のフローチャートに従った処理を行う前段で、指標を含むシーンの撮影及び撮影画像からの指標抽出及び同定処理については完了しているものとする。
先ずステップS100では、指標位置姿勢サイズ算出部235は、各画像を撮影した撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値の設定を行う。
そしてステップS110以降では、ステップS100で設定された近似値を補正するための補正値を求める。
ステップS110では、指標位置姿勢サイズ算出部235は、撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値から、投影誤差を最小化するような各近似値の補正値を同時に求めるための連立方程式を確定させる処理を行う。
次にステップS120では、ステップS110で確定させた連立方程式を解く数値計算処理を行い、各近似値に対する補正値を求める。
次にステップS130では、ステップS120で求めた補正値を用いて近似値を補正し、新たな近似値とする。
次にステップS140では、ステップS130で補正された撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールが最適値に収束しているか否かの判定を行う。係る判定の結果、収束していない場合には処理をステップS110に戻し、以降の処理を繰り返す。一方、収束している場合には、同図のフローチャートに従った指標位置姿勢サイズ算出部235による処理は終了する。
次に、図8に示した各ステップにおける処理について、より詳細に説明する。
先ず、ステップS100について説明する。
ステップS100において、各画像を撮影した撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値を設定する。ここで、撮影された画像の枚数をN枚とし、それぞれの画像を撮影した撮像部210の位置を
、姿勢を
とする。
また、位置及び姿勢及びスケールを求める正方形指標の数をKs1個とし、正方形指標の位置を
とし、姿勢を
とし、スケールをLi(i=1,・・・, Ks1)とする。
撮像部210の位置及び姿勢の近似値は、撮像部210に磁気センサのような6自由度位置姿勢センサを装着し、このセンサの出力値から得てもよいし、基準座標系における位置が既知の点と、この点の画像上での投影位置の対応関係から求めてもよい。また、モーションコントロールカメラのように機械的に撮像部210の位置姿勢を係る近似値として得てもよいし、予め位置姿勢がキャリブレーション済みの撮像部210を用いて撮影し、そのキャリブレーション結果を係る近似値として用いてもよい。即ち、撮像部210の位置及び姿勢の近似値の取得、及び設定については特定の手法に限定するものではない。
一方、指標の位置及び姿勢及びスケールの近似値は、磁気センサのような6自由度位置姿勢センサを装着した撮像部210を用いて複数の位置から撮影し、それら複数枚の画像を元にステレオ計測を行い、概略的に求めた値を用いてもよい。またモーションコントロールカメラのように機械的に位置姿勢を測定可能な撮像部210や、予め位置姿勢がキャリブレーション済みの撮像部210を用いて複数の位置から撮影し、それら複数枚の画像を元にステレオ計測を行い、概略に求めた値を用いてもよい。また、本実施形態の方法等で一度推定された値を用いてもよい。
このように、何れの近似値についても、その取得形態については特に限定するものではない。
なお、ステップS100では、シーン中に貼られたサイズが既知の指標を1つ以上撮影し、基準座標系における指標スケールの基準になるようにしておく。こうすることで、ステップS110〜ステップS140で求める指標スケールと、基準座標系のスケールとの関係(即ち、ステップS110〜ステップS140で求める指標スケールと、シーン中に存在する指標のサイズとの関係)を対応付けることができる。
次にステップS110では、画像上で観察される指標の数だけ式(10)の観測方程式を確立する。式(10)は、一台の撮像部210の位置及び姿勢の補正値と、一個の正方形指標の位置及び姿勢及びスケールの補正値を未知パラメータとして含む観測方程式である。ここでは、下記の式(11)に示すように、N台のカメラの位置及び姿勢、Ks1個の正方形指標の位置及び姿勢及びスケールについての観測方程式を確立する。この場合、未知数となる補正値の数は、(6×N+7×Ks1)個である。
画像i(i=1,・・・,N)から検出される正方形指標の数をdsi個とすると、N枚の画像から検出される正方形指標の数Dsは、下記の式(12)のようになる。
N枚の画像から検出される正方形指標の数がDs個である場合、観測方程式(11)が(4×Ds)組、つまり(2×4×Ds)本の観測方程式が立つ。式(11)の観測方程式の左辺の定数項F0、G0を右辺に移項し、連立方程式を立てると、この連立方程式は下記の式(13)に示す如く、行列形式で書くことができる。
はヤコビ行列と呼ばれ、F、Gの撮像部210位置及び姿勢、正方形指標の位置及び姿勢及びスケールについての偏微分係数を並べたものである。ヤコビ行列
の行数は、観測方程式の数(2×4×Ds)個であり、列数は未知数の数(6×N+7×Ks1)個である。
は補正値ベクトルである。補正値ベクトルの要素数は未知数の数(6×N+7×Ks1)個である。
は誤差ベクトルであり、近似値による投影位置の計算位置と観察位置
の差−F0、−G0を要素として持つ。
の要素数は、観測方程式の数(2×4×Ds)個である。
なお、基準座標系における位置が既知である点指標、又は位置及び姿勢及びスケールが既知の正方形指標を同時に撮影することによって、基準座標系の原点、スケール、姿勢を明示的に指定することができる。これらの指標についての式(11)の方程式では、指標の位置及び姿勢及びスケールについての偏微分係数の値はすべて0となる。基準座標系の原点、スケール、姿勢を明示的に指定するためには、点指標であれば位置が既知の同一直線状にない点指標を3個用いればよく、正方形指標であれば位置及び姿勢及びスケールが既知の正方形指標を1個用いればよい。
次に、ステップS120では、撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値に対する補正値を求める。補正値は上記式(13)に基づいて求める。ヤコビ行列
が正方行列である場合には、式(13)の両辺に
の逆行列をかけることで補正値ベクトル
を求める。
が正方行列でない場合には、下記の式(14)に示すように最小二乗法によって補正値ベクトル
を求める。
ここで、ヤコビ行列
の各要素の求め方について説明する。
まず
とおく。上記式(6)、(7)よりF、Gは下記の式(15)のように書ける。F、Gはxc、yc、zcの関数となる。
F、Gのxc、yc、zcによる偏微分係数を各要素に持つヤコビ行列
は、下記の式(16)のように書ける。
ここで、xc、yc、zcが変数s1、s2、・・・、smの関数であるならば、F、Gもまたs1、s2、・・・、smの関数である。F、Gのs1、s2、・・・、smによる偏微分係数を各要素に持つヤコビ行列
は、下記の式(17)のように分解することができる。
をそれぞれカメラ位置、カメラ姿勢、指標位置、指標姿勢、指標スケールに置き換えて
を求めることにより、F、Gのカメラ位置、カメラ姿勢、指標位置、指標姿勢、指標スケールについての偏微分係数を求めることができる。
F、Gのカメラ位置tx、ty、tzによる偏微分係数を各要素に持つヤコビ行列
は、式(5)より、下記の式(18)のように書ける。
ただし、姿勢
と3×3回転変換行列
の関係は式(4)で表される。
F、Gのカメラ姿勢ωx、ωy、ωzによる偏微分係数を各要素に持つヤコビ行列
は、下記の式(19)のように分解して書ける。
ここで、
は下記の式(20)に示すようなヤコビ行列である。
また、
は下記の式(21)に示すようなヤコビ行列である。
また、
として、
は下記の式(22)に示すようなヤコビ行列である。
さらに、
は下記の式(23)に示すようなヤコビ行列である。
F、Gの正方形指標の位置tsx、tsy、tszによる偏微分係数を各要素に持つヤコビ行列
は、式(5)、式(8)より、下記の式(24)のように書ける。
F、Gの正方形指標の姿勢
による偏微分係数を各要素に持つヤコビ行列
は、下記の式(25)のように分解することができる。
は、式(21)〜(23)と同様にして求めることができる。
F、Gの正方形指標のスケールLによる偏微分係数を各要素に持つヤコビ行列
は、下記の式(26)のように分解することができる。
そしてこのようにして求めた補正値を用いて、ステップS130では、近似値の更新を行う。
次にステップS140では、上述の収束判定を行う。収束判定は、補正値の絶対値が指定した閾値を下回る、投影位置の計算位置と観察位置の差が指定した閾値を下回るなどの条件を判定することにより行う。この例の場合、「下回った」場合には、「収束した」と判定する。
係る収束判定処理の結果、収束していると判定された場合、指標の位置及び姿勢及びスケール推定を終了し、指標のスケールの値を2倍にした指標サイズを出力する。収束していない場合は、処理をステップS110に戻し、補正された撮像部210の位置及び姿勢、正方形指標の位置及び姿勢及びスケールの近似値をを用いて再度、再度連立方程式を確立し、補正値を求める処理を繰り返し行う。
<4. 指標配置条件設定>
指標配置条件設定部240は、指標の配置に関する拘束条件を設定する。本実施形態では、指標の配置に関する拘束条件として、最終的に指標の位置及び姿勢を求める際の指標のサイズを、実際にユーザが作成した指標のサイズと同じにするという拘束条件を与える。
上記ステップS100〜ステップS140で求めた正方形指標のサイズ(スケールの2倍)は、あくまで計算上求めたサイズであり、実際にユーザが作成した指標のサイズとは一致せずに誤差が生じている場合がある。そこで、ステップS100〜ステップS140で求めた少なくとも1つ以上の正方形指標のサイズの各々を、実際にユーザが作成した指標のサイズに修正する。
実際にユーザが作成した指標のサイズとしては、以下の2つのケースが考えられる。
・ (ケース1) 本実施形態の方法を実行する前に、プリンタ312を利用して指標を印刷する。この印刷することになっている指標のサイズは予め定められた幾つかのサイズのうち、ユーザが指示したものであるとする。
例えば、予め幾つかの指標サイズを決めておき、決めた幾つかのサイズを登録したテーブルを作成する。そして作成したテーブルのデータをハードディスク305に登録しておく。図5(a)は、複数種の指標サイズが登録されているテーブルの構成例を示す図である。
同図に示す如く、テーブルには、10mm毎に指標サイズが登録されている。即ち、ここで用いられる指標のサイズとは、既定の離散値(10mm刻み)のうち何れかである。そしてユーザは、係るテーブルに登録されている何れか1つのサイズを選択する。選択方法については、例えば、本コンピュータ300に不図示の表示装置を接続し、この表示装置の表示画面上にこのテーブルに登録されている全てのサイズを表示し、何れか1つをマウス308やキーボード309を用いて指示するようにする。即ち、選択方法は特に限定するものではない。そして選択したサイズの指標をプリンタ312にて印刷する。
・ (ケース2) ケース1と同様、本実施形態の方法を実行する前に、プリンタ312を利用して指標を印刷する。ただ、ケース1と異なる点は、予め各指標のサイズは定められておらず、ユーザが任意の大きさを指定して印刷したサイズを、ハードディスク305等に新たなテーブル値として保存する。
図5(b)は、ユーザが指定した任意のサイズが登録されているテーブルの構成例を示す図である。同図に示す如く、ユーザが実際に印刷した23mm、12mm、45mm、73mmといった(任意の)大きさの指標サイズがテーブルに登録されている。
指標配置条件設定部240は、ステップS100〜ステップS140で求めた1つ以上の正方形指標のサイズ(スケールの2倍)の各々を元に、図5(a)、若しくは図5(b)に示すテーブルに登録されているサイズのうち最も近いサイズに修正する。
例えば、ステップS100〜ステップS140で求めた正方形指標の一辺のサイズが32mmである場合、図5(a)の例では、最も近いサイズである30mmに修正する。また、図5(b)の例では、最も近いサイズである23mmに修正する。
<5. 指標の位置姿勢算出
指標位置姿勢算出部250は、シーン中に存在する1つ以上の指標各々の位置及び姿勢を求める。このとき、本実施形態では、指標配置条件設定部240でサイズを修正した後の正方形指標のスケールを利用する。即ち、上記説明において図5(a)のテーブルを用いた場合には、ステップS100〜S140で求めた正方形指標のサイズ32mmではなく、図5(a)のテーブル中の最も近いサイズである30mmを「修正した指標スケール」として利用する。また、図5(b)のテーブルを用いた場合には、図5(b)のテーブル中の最も近いサイズである23mmを「修正した指標スケール」として利用する。
指標位置姿勢算出部250は、シーン中に存在する指標の位置及び姿勢を求めるのであるが、基本的には指標位置姿勢サイズ算出部235で指標の位置及び姿勢及びサイズを求める方法(式(1)〜(26)を用いた方法)とほぼ同じ方法によって行う。唯一異なる点は、指標配置条件設定部240で修正した指標のサイズを元に換算した指標スケールを定数として、撮像部210の位置姿勢と指標の位置及び姿勢を求めるようにすることである。
以上の説明により、本実施形態によれば、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、先ず、指標の位置及び姿勢及びサイズを求める。そして、求めた指標のサイズを、ユーザがプリンタで指標を印刷する際に実際に指定した指標のサイズに修正し、修正したサイズを用いて指標の位置及び姿勢を求め直す。
このようにすることで、画像を利用して指標のサイズを求めることができる。また、実際にユーザが作成する指標のサイズを、最終的に指標の位置及び姿勢を求める際の指標のサイズにすることにより、指標の位置及び姿勢を、より高精度に求めることが可能となる。
[第2の実施形態]
第1の実施形態では、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、まず指標の位置及び姿勢及びサイズを求めた。そして、求めた指標のサイズを、ユーザがプリンタで指標を印刷する際に実際に指定した指標のサイズに修正し、修正したサイズを用いて指標の位置及び姿勢を求め直した。
本実施形態では、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、まず指標の位置及び姿勢及びサイズを求めるところまでは第1の実施形態と同じであり、以降の処理が異なる。本実施形態では次に、求めた指標の位置を、ユーザが実際に指標を配置した位置に修正し、修正した位置を用いて指標の姿勢及びサイズを求めなおす。ここで、「ユーザが実際に指標を配置した位置」とは、例えば指標の配置対象としてグリッドが付されている現実の机を想定し、「机のグリッドに合わせてユーザが指標を配置する場合の位置」である。
図9は、本実施形態に係るシステムの機能構成を示すブロック図である。なお、同図において図2と同じ部分については同じ番号を付けており、その説明は省略する。
同図に示す如く、本実施形態に係るシステムは、撮像部210と、指標姿勢サイズ推定装置900とで構成されている。指標姿勢サイズ推定装置900は、画像取り込み部220、指標検出同定部230、指標位置姿勢サイズ算出部235、指標配置条件設定部241、指標姿勢サイズ算出部251により構成されている。
なお、図3に示したコンピュータ300は、指標姿勢サイズ推定装置900についても同様に適用することができる。その場合には、指標配置条件設定部241、指標姿勢サイズ算出部251の機能をCPU301に実行させるためのプログラムやデータをハードディスク305に保存しておく。そしてこのプログラムやデータをRAM307にロードし、CPU301がこのロードされたプログラムやデータを用いて処理を実行すれば、CPU301は、指標姿勢サイズ推定装置900が行うものとして後述する各処理を実行することになる。
以下では、図9における指標配置条件設定部241、指標姿勢サイズ算出部251についての説明を行う。
<4. 指標配置条件設定>
指標配置条件設定部241は、指標の配置に関する拘束条件を設定する。本実施形態では、指標の配置に関する拘束条件として、最終的に指標の姿勢及びサイズを求める際の指標の位置を、ユーザが実際に指標を配置した位置と同じにするという拘束条件を与える。
指標位置姿勢サイズ算出部235が求めた正方形指標の位置(換言すれば、上記ステップS100〜S140で求めた正方形指標の位置)は、あくまで計算上求めた位置であり、ユーザが実際に指標を配置した位置とは一致せずに誤差が生じている場合がある。そこで、ステップS100〜S140で求めた1つ以上の正方形指標の位置の各々を、ユーザが実際に指標を配置した位置に修正する。
指標配置条件設定部241は、ステップS100〜S140で求めた1つ以上の正方形指標の位置の各々を、図10に示す現実の机上のグリッドのうちの最も近い位置に修正する。例えば、図10に示す現実の机の上には50mm刻みに離散的なグリッドが書かれているとする。
図10は、現実物体としての机の上に設けられたグリッドについて説明する図である。そして、ステップS100〜S140で求めた正方形指標の位置が、机座標の原点を基準として(X,Y)=(141mm、203mm)である場合、最も近いグリッド位置である(X,Y)=(150mm、200mm)に修正する。なお、机座標は、机の法線方向をZ軸とし、X軸、Y軸を机の二つの辺に平行になるようにとっている。そして各グリッド位置に関する情報は予め作成され、ハードディスク305に登録されているものとする。
<5. 指標の姿勢サイズ算出>
指標姿勢サイズ算出部251は、シーン中に存在する1つ以上の指標各々の姿勢及びサイズを求める。このとき、本実施形態においては、指標配置条件設定部241で修正した後の正方形指標の位置を利用する。すなわち上記説明においては、ステップS100〜S140で求めた正方形指標の位置(X,Y)=(141mm、203mm)ではなく、図10の机上のグリッドで最も近い位置である(X,Y)=(150mm、200mm)を、修正した位置として利用する。
指標姿勢サイズ算出部251は、シーン中に存在する指標の姿勢及びサイズを求めるのであるが、基本的には指標位置姿勢サイズ算出部235で指標の位置及び姿勢及びサイズを求める方法(式(1)〜(26)を用いた方法)とほぼ同じ方法によって行う。唯一異なる点は、指標配置条件設定部241で修正した指標の位置を定数として、撮像部210の位置姿勢と指標の姿勢及びサイズを求めるようにすることである。
以上の説明により、本実施形態によれば、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、まず指標の位置及び姿勢及びサイズを求める。そして、求めた指標の位置を、ユーザが実際に指標を配置した位置に修正し、修正した位置を用いて指標の姿勢及びサイズを求め直す。
このようにすることで、画像を利用して指標のサイズを求めることができる。また、ユーザが実際に指標を配置した位置を、最終的に指標の姿勢及びサイズを求める際の指標の位置にすることにより、指標の姿勢及びサイズを、より高精度に求めることが可能となる。
[第3の実施形態]
第1の実施形態では、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、まず指標の位置及び姿勢及びサイズを求めた。そして、求めた指標のサイズを、ユーザがプリンタで指標を印刷する際に実際に指定した指標のサイズに修正し、修正したサイズを用いて指標の位置及び姿勢を求め直した。
本実施形態では、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、まず指標の位置及び姿勢及びサイズを求めるところまでは第1の実施形態と同じであり、以降の処理が異なる。本実施形態では次に、求めた指標の姿勢を、ユーザが実際に指標を配置した姿勢に修正し、修正した姿勢を用いて指標の位置及びサイズを求めなおす。ここで、「ユーザが実際に指標を配置した姿勢」とは、例えば指標の配置対象として現実の床や壁や天井を想定し、「床や壁や天井に対してユーザが指標を配置する場合の姿勢」である。
図11は、本実施形態に係るシステムの機能構成を示すブロック図である。なお、同図において図2と同じ部分については同じ番号を付けており、その説明は省略する。
同図に示す如く、本実施形態に係るシステムは、撮像部210と、指標位置サイズ推定装置1100とで構成されている。指標位置サイズ推定装置1100は、画像取り込み部220、指標検出同定部230、指標位置姿勢サイズ算出部235、指標配置条件設定部242、指標位置サイズ算出部252により構成されている。
なお、図3に示したコンピュータ300は、指標姿勢サイズ推定装置1100についても同様に適用することができる。その場合には、指標配置条件設定部242、指標位置サイズ算出部252の機能をCPU301に実行させるためのプログラムやデータをハードディスク305に保存しておく。そしてこのプログラムやデータをRAM307にロードし、CPU301がこのロードされたプログラムやデータを用いて処理を実行すれば、CPU301は、指標位置サイズ推定装置1100が行うものとして後述する各処理を実行することになる。
以下では、図11における指標配置条件設定部242、指標位置サイズ算出部252についての説明を行う。
<4. 指標配置条件設定>
指標配置条件設定部242は、指標の配置に関する拘束条件を設定する。本実施形態では、指標の配置に関する拘束条件として、最終的に指標の位置及びサイズを求める際の指標の姿勢を、ユーザが実際に指標を配置した姿勢と同じにするという拘束条件を与える。
指標位置姿勢サイズ算出部235が求めた正方形指標の姿勢(換言すれば、上記ステップS100〜S140で求めた正方形指標の姿勢)は、あくまで計算上求めた姿勢であり、ユーザが実際に指標を配置した姿勢とは一致せずに誤差が生じている場合がある。そこで、ステップS100〜S140で求めた1つ以上の正方形指標の姿勢の各々を、ユーザが実際に指標を配置した姿勢に修正する。
指標配置条件設定部242は、ステップS100〜S140で求めた1つ以上の正方形指標の姿勢の各々を、図12に示す現実の床や壁のうちの最も近い姿勢に修正する。例えば、図12に示す床や壁は、基準座標系の各軸に対して水平もしくは垂直といった離散的な姿勢となっている。そしてステップS100〜S140で求めた正方形指標の姿勢が、基準座標系に対して水平或いは垂直からずれている場合は、基準座標系に対して最も近い水平姿勢或いは垂直姿勢になるように、即ち最も近い床や壁の姿勢と同じになるように修正する。指標のz軸を中心とした回転誤差が生じている場合は、図4に示す指標のx軸、y軸が、基準座標系に対して最も近い水平もしくは垂直方向になるように修正すればよい。図12は、指標を配置する壁や床を示す図である。なお、指標の姿勢を修正するための基準としては、床や壁に加え、天井を用いても良い。
<5. 指標の位置サイズ算出>
指標位置サイズ算出部252は、シーン中に存在する1つ以上の指標各々の位置及びサイズを求める。このとき、本実施形態においては、指標配置条件設定部242で修正した後の正方形指標の姿勢を利用する。すなわち上記説明においては、ステップS100〜S140で求めた正方形指標の姿勢ではなく、図12の床や壁で最も近い姿勢を、修正した姿勢として利用する。
指標位置サイズ算出部252は、シーン中に存在する指標の位置及びサイズを求めるのであるが、基本的には指標位置姿勢サイズ算出部235で指標の位置及び姿勢及びサイズを求める方法(式(1)〜(26)を用いた方法)とほぼ同じ方法によって行う。唯一異なる点は、指標配置条件設定部242で修正した指標の姿勢を定数として、撮像部210の位置姿勢と、指標の位置及びサイズを求めることである。
以上の説明により、本実施形態によれば、指標が配置されたシーンの画像を多数撮影し、撮影された画像から指標を検出・同定し、まず指標の位置及び姿勢及びサイズを求める。そして、求めた指標の姿勢を、ユーザが実際に指標を配置した姿勢に修正し、修正した姿勢を用いて指標の位置及びサイズを求め直す。
このようにすることで、画像を利用して指標のサイズを求めることができる。また、ユーザが実際に指標を配置した姿勢を、最終的に指標の位置及びサイズを求める際の指標の姿勢にすることにより、指標の位置及びサイズを、より高精度に求めることが可能となる。
<変形例1>
第1乃至3の実施形態では、指標の位置、姿勢、サイズのうち1つのパラメータを固定し、残りの2つのパラメータを求めなおしていた。しかし、指標の位置、姿勢、サイズのうち2つのパラメータを固定し、残りの1つのパラメータを求めなおしてもよいことは言うまでもない。
<変形例2>
第1乃至3の実施形態では、指標の位置、姿勢、サイズのうち1つのパラメータを固定する際、ユーザによって物理的に設定したパラメータに最も近いパラメータに修正していた。
しかし、指標を撮影するシーンの光源環境が劣悪な場合など、特殊なケースにおいては、最も近いパラメータが正しい値とは限らない場合がある。そのようなケースに対処するために、最終的に求めた撮像部210の位置姿勢に仮想空間を観察する視点を設定し、設定した視点から見える仮想空間の画像を生成し、現実空間画像に合成する。そして、適切に合成されていないとユーザが判断した場合は、その旨をマウス308やキーボード309を用いて入力する。この入力がなされた場合には、固定するパラメータの値を、最も近い3個(2以上の整数で表される個数)のパラメータの中から選択可能にし、CGが適切に合成されるまで選択したパラメータを元に計算し直してもよい。
<変形例4>
第2の実施形態では、指標の位置をグリッドのうちの最も近い位置に修正していた。しかしその代わりに、推定した指標の位置を元に、複数の指標間の距離が一定であるという拘束条件を導入し、指標の配置情報を、より高精度に求めてもよい。すなわち、複数の指標間の距離が一定であるという拘束条件を用いることで複数の指標位置を定数とし、指標の姿勢及びサイズを求め直してもよい。
<変形例5>
第1乃至3の実施形態では、指標の配置情報の補正方法として、観測方程式をテイラー展開し、その1次の項までを利用して繰り返し補正していく方法を用いた。これは、ある繰り返しの一過程において、局所的に観測方程式を線形近似し、誤差0となると仮定した場合の未知パラメータの補正量を推定する方法であり、一般にニュートン法と呼ばれている方法と等価な方法である。ニュートン法は非線形方程式を数値演算により求解する代表的な方法であるが、上記実施形態に利用する繰り返し演算方法はこの方法に限ったものではない。
例えば、ニュートン法と同様に周知の技術として知られているLevenberg-Marquardt法のように、一過程において推定される未知パラメータの補正量のばらつきに基づいて、補正量を動的に変更してもよい。また、テイラー展開した結果をより高次の項まで考慮して、繰り返し演算を行うような方法であっても良い。
即ち、上記各実施形態の本質は、配置情報量の異なる複数種類の指標が混在して存在している場合であっても、それぞれの種類の指標を有効に利用して最適な解を求めることにある。従って、数値解法としての繰り返し演算の具体的な方法によって本質が失われるものではない。
[その他の実施形態]
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。