(57)【要約】【課題】  撮像画像中の自然特徴の画像がぶれ得る場合であっても、より高い精度でもってこの自然特徴を検出すること。【解決手段】  カメラにより撮像され、２フィールドでもって描画される撮像画像中の特徴点をこの撮像画像から検出する場合に、カメラの位置、及び／又は姿勢の変化量が所定値を越えている場合には、２フィールドのうち一方のフィールドでもって描画されるラインを、他方のフィールドでもって描画されるべきラインに複写した画像を生成し（Ｓ１００３）、上記変化量が所定値を越えていない場合には撮像画像から特徴点の検出を行い、上記変化量が所定値を越えている場合には上記画像から特徴点の検出を行う（Ｓ１００４，１００５，１００６）。【選択図】  図１０
2005165974.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置により撮像され、２フィールドでもって描画される撮像画像中の特徴点を、当該撮像画像から検出する画像処理方法であって、
前記撮像装置の位置、及び／又は姿勢を計測する計測工程を備え、
前記計測工程により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えていない場合には前記撮像画像から特徴点の検出を行い、前記計測工程により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えている場合には前記撮像画像の２フィールドのうち一方のフィールドのみの画像から特徴点の検出を行うことを特徴とする画像処理方法。
【請求項２】
更に、前記検出された特徴点の前記撮像画像上の位置、及び前記計測工程で計測された前記撮像装置の位置姿勢に基づいて前記特徴点が前記撮像画像上に表示されるべき位置に基づいて、前記撮像装置の位置姿勢の補正量を求める工程を備えることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記撮像画像は、ＮＴＳＣのインタレースビデオ信号による画像であることを特徴とする請求項１又は２に記載の画像処理方法。
【請求項４】
撮影部によって撮影された撮影画像から特徴点を抽出する画像処理方法であって、
前記撮像部の位置及び／又は姿勢を検出し、該撮像部の位置及び／又は姿勢の変化量を検出工程と、
前記撮影画像から特徴点を抽出する抽出工程とを備え、
前記撮像部はインタレースビデオ信号を出力し、
前記抽出工程は、前記変化量に応じて、インタレースビデオ信号の偶数フィールドおよび奇数フィールドの両方によって得られる撮影画像を使用するのか、片方のフィールドによって得られる撮影画像を使用するのかを切り替えることを特徴とする画像処理方法。
【請求項５】
撮像装置により撮像され、２フィールドでもって描画される撮像画像中の特徴点を、当該撮像画像から検出する画像処理装置であって、
前記撮像装置の位置、及び／又は姿勢を計測する計測手段を備え、
前記計測手段により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えていない場合には前記撮像画像から特徴点の検出を行い、前記計測手段により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えている場合には前記撮像画像の２フィールドのうち一方のフィールドのみの画像から特徴点の検出を行うことを特徴とする画像処理装置。
【請求項６】
コンピュータに請求項１乃至４の何れか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを格納することを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置により撮像される撮像画像から特徴点を検出する技術に関するものである。
【背景技術】
【０００２】
近年、ＨＭＤ（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）に小型カメラを装着し、この小型カメラにより撮像された現実空間の画像とＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）画像とを合成し、この合成した画像をＨＭＤが有する表示部に表示することにより、この表示部が眼前に位置するようにこのＨＭＤを頭部に装着した観察者に現実空間と仮想空間とが融合された空間を提供するＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）技術がある。
【０００３】
このＭＲ技術を実現するためには、現実空間の画像上の所望の位置にＣＧ画像を描画する必要がある。そこで現実空間の画像上にＣＧ画像を描画する際に、現実空間の画像に含まれるマーカーを用いてＣＧ画像の描画位置を微調整することで、現実空間の画像上の所望の位置にＣＧ画像を描画していた。
【０００４】
通常、ＨＭＤに備えられている小型カメラ（小型ビデオカメラ）はＮＴＳＣのインタレースビデオ信号を出力する。図１（Ａ）は、マーカをこの小型カメラにより撮像した場合の画像を示す図である。すなわち同図に示す画像はインタレースビデオ信号による画像である。同図に示すように、インタレースビデオ信号による画像は、偶数行内の各画素、奇数行内の各画素を用いて１つの画像を形成する。
【０００５】
ここで、このインタレースビデオ信号に基づいた画像は、この画像内に動きがあると、図１（Ｂ）に示す如く、画像が各ライン毎に左右にぶれてしまう。よって、小型カメラにより撮像した画像中のマーカを用いてＣＧ画像の描画位置を微調整する場合に、図１（Ｂ）に示すように画像が各ライン毎に左右にぶれてしまっては、撮像画像からマーカを検出する事が困難となる。しかもＭＲ技術において、ＨＭＤを装着した観察者は頭部を動かし得るのであるから、上記問題の発生は避けられない。
【０００６】
そこで上記問題を回避するために、図１（Ｃ）に示す如く、偶数行、もしくは奇数行のラインのみを用いていた。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし図１（Ｃ）に示すように、偶数行、もしくは奇数行のラインを用いてマーカの画像を構成すると、縦方向（ライン方向と垂直の方向）のマーカの検出精度が１／２に落ちてしまうという問題が生じる。
【０００８】
本発明は以上の問題に鑑みてなされたものであり、撮像画像中の特徴がぶれ得る場合であっても、より高い精度でもってこの特徴を検出する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００１０】
即ち、撮像装置により撮像され、２フィールドでもって描画される撮像画像中の特徴点を、当該撮像画像から検出する画像処理方法であって、
前記撮像装置の位置、及び／又は姿勢を計測する計測工程を備え、
前記計測工程により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えていない場合には前記撮像画像から特徴点の検出を行い、前記計測工程により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えている場合には前記撮像画像の２フィールドのうち一方のフィールドのみの画像から特徴点の検出を行うことを特徴とする。
【００１１】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００１２】
即ち、撮影部によって撮影された撮影画像から特徴点を抽出する画像処理方法であって、
前記撮像部の位置及び／又は姿勢を検出し、該撮像部の位置及び／又は姿勢の変化量を検出工程と、
前記撮影画像から特徴点を抽出する抽出工程とを備え、
前記撮像部はインタレースビデオ信号を出力し、
前記抽出工程は、前記変化量に応じて、インタレースビデオ信号の偶数フィールドおよび奇数フィールドの両方によって得られる撮影画像を使用するのか、片方のフィールドによって得られる撮影画像を使用するのかを切り替えることを特徴とする。
【００１３】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【００１４】
即ち、撮像装置により撮像され、２フィールドでもって描画される撮像画像中の特徴点を、当該撮像画像から検出する画像処理装置であって、
前記撮像装置の位置、及び／又は姿勢を計測する計測手段を備え、
前記計測手段により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えていない場合には前記撮像画像から特徴点の検出を行い、前記計測手段により計測された前記撮像装置の位置、及び／又は姿勢の変化量が所定値を越えている場合には前記撮像画像の２フィールドのうち一方のフィールドのみの画像から特徴点の検出を行うことを特徴とする。
【００１５】
ただし２フィールドのうちの一方のフィールドを複写した画像を生成することは本発明を限定するものではなく、前期計測手段により計測された前記撮像装置の位置、及び／または姿勢の変化量が所定値を超えている場合には、一方のフィールドだけからなる縦方向に１／２の大きさの画像から特徴点の検出を行い、その後特徴点の座標の補正を行う(例えばY軸方向の座標を２倍にするなど)ことも可能である。
【発明の効果】
【００１６】
本発明の構成により、撮像画像がぶれ得る場合であっても、より高い精度でもって撮像画像中の特徴を検出することができる。また、撮影画像がぶれていない場合は、より高い精度でもって撮影画像中の特徴を検出することができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付の図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１８】
図４は、本実施形態に係る画像処理システムの基本構成を示す図である。同図に示すように、本実施形態に係るシステムは大まかには、ＨＭＤ１００、計算機３００、３次元センサ固定局２１０、３次元センサ本体２００により構成されている。また、本実施形態に係る画像処理システムの模式図を図２に示す。
【００１９】
ＨＭＤ１００には、３次元センサ移動局１２０、右目用カメラ１１０、左目用カメラ１１１、右目用ＬＣＤ（液晶画面）１３０、左目用ＬＣＤ１３１が備わっている。本実施形態では、３次元センサ移動局１２０、３次元センサ本体２００、３次元センサ固定局２１０は夫々磁気センサであるとする。この場合、３次元センサ移動局１２０は、磁界の発生源である３次元センサ固定局２１０から発せられる磁界を検知し、３次元センサ固定局２１０の位置を原点とし、夫々直交する３軸をｘ、ｙ、ｚ軸とした座標系（センサ座標系）における自身の位置姿勢（ｘ、ｙ、ｚ、ヨー、ピッチ、ロールの６自由度）を計測する。より具体的には、実際に３次元センサ移動局１２０が検知するのは自身の位置姿勢に応じた磁気であるので、検知した磁気を示す信号を３次元センサ本体２００に出力する。３次元センサ本体２００はこの信号に基づいて、３次元センサ移動局１２０のセンサ座標系における位置姿勢を求め、求めた位置姿勢のデータを後段の計算機３００に出力する。
【００２０】
なお、磁気センサによる位置姿勢の計測方法については周知の技術であるのでここでの詳細な説明は省略する。また、以上のセンサ群は磁気センサに限定するものではなく、例えば超音波センサを用いても良いが、いずれにせよ３次元センサ移動局１２０、３次元センサ本体２００、３次元センサ固定局２１０により、３次元センサ移動局１２０のセンサ座標系における位置姿勢を計測する。
【００２１】
右目用カメラ１１０、左目用カメラ１１１は夫々ＨＭＤ１００を頭部に装着する観察者の右目に対応する現実空間の画像、左目に対応する現実空間の動画像を撮像するものであり、撮像された各フレームの画像は夫々後段の計算機３００に出力する。なお、本実施形態では右目用カメラ１１０、左目用カメラ１１１は夫々ＮＴＳＣのインタレースビデオ信号を出力するものであるとする。又、１フレーム分の画像は２フィールドで描画される画像であって、サイズは６４０画素×４８０画素であるとする。
【００２２】
ここで「２フィールドでもって描画される画像」とはすなわち、第１フィールドでもって奇数行目のラインを描画し、全ての奇数行目のラインの描画が完了したら、次に第２フィールドでもって偶数行目のラインを描画する画像である。このような画像の描画方法については周知の技術であるので、これ以上の説明は省略する。
【００２３】
右目用ＬＣＤ１３０、左目用ＬＣＤ１３１は夫々画像を表示するための液晶画面であり、夫々に表示した画像は、ＨＭＤ１００を頭部に装着する観察者の右目、左目に対して提示されることになる。この右目用ＬＣＤ１３０、左目用ＬＣＤ１３１に表示される画像は後述する計算機３００により生成された画像である。図５は、ＨＭＤ１００の外観例を示す図である。
【００２４】
計算機３００は、シリアルＩ／Ｏ３１０、ビデオキャプチャカード３２０，３２１、ビデオカード３３０，３３１、ＰＣＩブリッジ３０３、ＣＰＵ３０１、メモリ３０２，外部記憶装置３０４により構成されている。
【００２５】
シリアルＩ／Ｏ３１０は３次元センサ本体２００と繋がっており、３次元センサ本体２００から出力される「３次元センサ移動局１２０のセンサ座標系における位置姿勢を示すデータ」はこのシリアルＩ／Ｏ３１０を介して後段のメモリ３０２に出力される。
【００２６】
ビデオキャプチャカード３２０、３２１は夫々右目用カメラ１１０、左目用カメラ１１１と繋がっており、右目用カメラ１１０、左目用カメラ１１１から出力される右目用の現実空間の画像、左目用の現実空間の画像（共にＮＴＳＣのインタレースビデオ信号に従った各フレームの画像）は夫々ビデオキャプチャカード３２０、３２１を介して後段のメモリ３０２にデータとして出力される。
【００２７】
ビデオカード３３０、３３１は夫々右目用ＬＣＤ１３０、左目用ＬＣＤ１３１と繋がっており、計算機３００が生成した右目用の合成画像（現実空間の画像と仮想空間の画像とが合成された画像）、左目用の合成画像は夫々ビデオカード３３０、３３１を介して右目用ＬＣＤ１３０、左目用ＬＣＤ１３１に出力される。
【００２８】
ＰＣＩブリッジ３０３は、同図に示すようにＰＣＩに接続されている各部とメモリ３０２、ＣＰＵ３０１、外部記憶装置３０４とのデータ通信を可能にするためのものであり、このＰＣＩブリッジ３０３を介して互いにデータ通信が可能となる。
【００２９】
ＣＰＵ３０１は、外部記憶装置３０４からメモリ３０２に読み出されたプログラムやデータを用いて計算機３００全体の制御を行うと共に、後述する各処理を実行する。
【００３０】
メモリ３０２は外部記憶装置３０４からロードされたプログラムやデータを一時的に記憶するためのエリアや、ビデオキャプチャカード３２０、３２１を介して入力される現実空間の画像のデータ、シリアルＩ／Ｏ３１０を介して入力される３次元センサ移動局１２０のセンサ座標系における位置姿勢を示すデータ等を一時的に格納する為のエリア、ＣＰＵ３０１が各種の処理を行うために用いるワークエリアを備える。
【００３１】
３０４はハードディスクドライブ装置に代表される大容量情報記憶装置として機能する外部記憶装置であって、ここにＯＳ（オペレーティングシステム）や、仮想空間における各オブジェクト（仮想物体）を描画するために必要なデータ、３次元センサ固定局２１０の世界座標系（現実空間中の１点を原点とし、この原点から互いに直交する３軸をｘ、ｙ、ｚ軸とする空間）における位置を示すデータ、ＣＰＵ３０１に後述する各処理を実行させるためのプログラムやデータ等を保存しており、これらは必要に応じてＣＰＵ３０１による制御により、メモリ３０２に読み出される。
【００３２】
また、以下の説明において「既知の情報」もまた、外部記憶装置３０４にデータとして保存されており、必要に応じてメモリ３０２にロードされるものである。
【００３３】
図３は、以上のシステムの外観例を示す図である。同図において図４と同じ部分については同じ番号を付けており、その説明は省略する。
【００３４】
観察者２８０は頭部にＨＭＤ１００を装着しており、このＨＭＤ１００の左目用ＬＣＤ１３１、右目用ＬＣＤ１３０には夫々、計算機３００が生成した左目用、右目用の合成画像が表示されている。従って、この観察者２８０は、自身の頭部の位置姿勢に応じた現実空間と共に、自身の頭部の位置姿勢に応じた仮想空間の画像を見ることができる。
【００３５】
また４００は現実物体であり、図７に示す如く、台４００、ブロック４１０，４１１，４１２，４３により構成されており、各ブロック４１０，４１１，４１２，４１３の表面には夫々マーカ４５０，４５１，４５２，４５３が貼り付けられている。これらマーカの世界座標系における位置については予め測定されており、データとして外部記憶装置３０４に保存されているものとする。なお、これらマーカの詳細について後述する。本実施形態では観察者が常に現実物体４００を見ている場合について説明する。すなわち、常に視界にはマーカが見えるようにしている。
【００３６】
先ず、現実空間の画像に仮想物体の画像を合成した合成画像を観察者に提示する処理について説明する。すなわち、図６に示すように、ＨＭＤ１００に備わっているカメラ（右目用カメラ１１０、左目用カメラ１１１）が撮像した現実空間の画像６９０上に、計算機３００が生成した仮想物体としての魚６９２の画像、仮想物体としてのロケット６９３の画像を含む画像６９１を重畳させて、現実空間中にあたかも仮想の魚やロケットが存在するかのような画像である合成画像６９５をＨＭＤ１００のＬＣＤ（右目用ＬＣＤ１３０、左目用ＬＣＤ１３１）に表示する。これにより、観察者に現実空間と仮想空間とが融合した空間（ＭＲ空間）を提供することができる。
【００３７】
ＨＭＤ１００を頭部に装着した観察者は現実空間中において所望の位置姿勢をとることができる。当然、この観察者の頭部の位置姿勢も所望の位置姿勢をとることができる。ＨＭＤ１００に備わっている右目用カメラ１１０、左目用カメラ１１１は夫々、観察者の右目、左目に対応した現実空間の画像（観察者の頭部の向いている方向、頭部の位置から見える現実空間の画像）を撮像しており、撮像された夫々の画像はビデオキャプチャカード３２０、３２１を介してメモリ３０２中の所定のエリアに入力される。
【００３８】
一方、ＨＭＤ１００のセンサ座標系における位置姿勢（厳密には３次元センサ移動局１２０の位置姿勢）は逐次計測されている。この計測は上述の通り、３次元センサ固定局２１０が発生する磁界を３次元センサ移動局１２０が検知し、この検知した信号に基づいて３次元センサ本体２００が求める事により成される。３次元センサ本体２００が求めた３次元センサ移動局１２０のセンサ座標系における位置姿勢を示すデータはシリアルＩ／Ｏ３１０を介してメモリ３０２中の所定のエリアに入力される。
【００３９】
ＣＰＵ３０１はメモリ３０２に入力されたこのデータ、及び外部記憶装置３０４からメモリ３０２に読み出した「３次元センサ固定局２１０の世界座標系における位置を示すデータ」を参照し、３次元センサ固定局２１０と、３次元センサ移動局１２０との相対的な位置姿勢関係を求める。これにより、３次元センサ移動局１２０の世界座標系における位置姿勢を求めることができる。
【００４０】
このように、所定の座標系における原点の世界座標系における位置が既知である場合に、所定の座標系における位置姿勢から世界座標系における位置姿勢を求める処理については周知の技術であるので、これ以上の説明は省略する。
【００４１】
また、予め観察者の右目、左目と３次元センサ移動局１２０との位置姿勢関係（バイアス）を求めておき、それをメモリ３０２に保持させておけば、求めた３次元センサ移動局１２０の世界座標系における位置姿勢に夫々のバイアスを加算することにより、世界座標系における観察者の右目、左目の位置姿勢を求めることができる。
【００４２】
なお、観察者の右目、左目の世界座標系における位置姿勢を計測する方法としてはこれに限定されるものではなく、他の方法を用いても良い。
【００４３】
以上の処理により観察者の右目、左目の世界座標系における位置姿勢が得られるので、ＣＰＵ３０１は、外部記憶装置３０４からメモリ３０２に読み出された「仮想空間における各仮想物体を描画するために必要なデータ」と、仮想空間の画像を生成するためのプログラムを用いて、仮想空間中に仮想物体を配置した場合に、右目、左目によって見える仮想物体の画像を生成することができる。このように、世界座標系における視点の位置姿勢が得られた場合に、この視点から見える仮想物体の画像を生成する処理については周知の技術であるので、ここでの説明は省略する。
【００４４】
以上の処理によって、観察者の右目、左目から見える仮想空間の画像（仮想空間中に配置した仮想物体の画像）が生成される。なお、生成した右目用の仮想空間の画像、左目用の仮想空間の画像は夫々、先にメモリ３０２に入力された右目用の現実空間の画像、左目用の仮想空間の画像上に重畳されるので、結果として、右目用の合成画像、左目用の合成画像をメモリ３０２上に生成することができる。
【００４５】
そして右目用の合成画像はビデオカード３３０を介して右目用ＬＣＤ１３０に出力し、左目用の合成画像はビデオカード３３１を介して右目用ＬＣＤ１３１に出力する。
【００４６】
従って、ＨＭＤ１００を頭部に装着した観察者の右目には右目用ＬＣＤ１３０に表示された合成画像が見え、左目には左目用ＬＣＤ１３１に表示された合成画像が見えるので、この観察者に仮想空間中に仮想物体が存在するかのような画像を提供することができる。
【００４７】
図８は、計算機３００が行う、現実空間の画像に仮想空間の画像を重畳して観察者が頭部に装着しているＨＭＤ１００の右目用ＬＣＤ１３０、左目用ＬＣＤ１３１に出力するまでの一連の処理のフローチャートである。なお、同図のフローチャートに従ったプログラムは外部記憶装置３０４からメモリ３０２にロードし、ＣＰＵ３０１がこれを実行することにより、計算機３００は、以下説明する各処理を実行することになる。
【００４８】
先ず、右目用カメラ１１０，左目用カメラ１１１が撮像した現実空間の画像は夫々、ＮＴＳＣのインタレースビデオ信号としてビデオキャプチャカード３２０，３２１を介してメモリ３０２に入力され（ステップＳ８０１）、メモリ３０２内に設けられているビデオバッファに格納される（ステップＳ８０２）。
【００４９】
次に、センサ本体２００から得られる「センサ座標系におけるＨＭＤ１００の位置姿勢を示すデータ」と、外部記憶装置３０４からメモリ３０２にロードされた「センサ本体２００の世界座標系における位置姿勢を示すデータ」、及び上記バイアスを用いて、観察者の右目、左目の世界座標系における位置姿勢を求める（ステップＳ８０３）。
【００５０】
そして、求めた観察者の右目、左目の世界座標系における位置姿勢を用いて、観察者の右目から見える仮想物体のモデルを描画する為のモデリング変換行列、左目から見える仮想物体のモデルを描画する為のモデリング変換行列を求め、また、予め測定しておいた右目用カメラ１１０，左目用カメラ１１１の焦点距離などのパラメータ（外部記憶装置３０４からメモリ３０２にロードされたもの）から、右目用の射影変換行列、左目用の射影変換行列を求める（ステップＳ８０４）。
【００５１】
なお、視点の世界座標系における位置姿勢から、モデリング変換行列を求める技術、カメラの焦点距離などのパラメータから射影変換行列を求める技術については周知の技術であるので、詳細な説明は省略する。
【００５２】
また、射影変換行列に関しては、カメラのパラメータが変化しない限りは固定であるので、予め求めて外部記憶装置３０４に保存しておき、必要に応じてメモリ３０２に読み出して用いるようにしても良い。
【００５３】
そして次に、モデリング変換行列を補正する為の補正行列を求め、求めた補正行列を求めたモデリング変換行列に乗じることで、ステップＳ８０４で求めたモデリング変換行列を補正する（ステップＳ８０５）。この処理は、右目用のモデリング変換行列、左目用のモデリング変換行列について行う。ステップＳ８０５における処理の詳細については後述する。
【００５４】
そして右目用に求めたモデリング変換行列（ステップＳ８０５で補正されている）と射影変換行列を用いて、右目から見える仮想物体の画像をメモリ３０２内のビデオバッファに生成すると共に、左目用に求めたモデリング変換行列（ステップＳ８０５で補正されている）と射影変換行列を用いて、左目から見える仮想物体の画像をメモリ３０２内のビデオバッファに生成する（ステップＳ８０６）。
【００５５】
すなわち、ビデオバッファにはステップＳ８０２で先に右目用の現実空間の画像、左目用の現実空間の画像が格納されているので、ステップＳ８０６では、右目用の仮想物体の画像を右目用の現実空間の画像上に描画し、左目用の仮想物体の画像を左目用の現実空間の画像上に描画する。これにより、現実空間と仮想空間とが融合された右目用、左目用の合成画像をビデオバッファ上に生成することができる。
【００５６】
なお、仮想物体の位置姿勢が時間経過と共に変化する場合、この位置姿勢を制御するプログラムは別のスレッドとしてＣＰＵ３０１により実行されており、ステップＳ８０６では、この別スレッドでもって制御された位置姿勢の仮想物体の画像を生成する。
【００５７】
そしてビデオバッファ上に生成された右目用の合成画像、左目用の合成画像を夫々、ビデオカード３３０，３３１を介して、右目用ＬＣＤ１３０、左目用ＬＣＤ１３１に出力する（ステップＳ８０７）。
【００５８】
次に、上記ステップＳ８０５における、補正行列を求め、モデリング変換行列に乗じることで、モデリング変換行列を補正する処理について詳細に説明する。尚、以下の説明において特に明記しない限り、以下説明する処理は、右目用、左目用共に同じである。
【００５９】
図９は、モデリング変換行列を補正するための処理を説明する図である。図１０は、ステップＳ８０５のより詳細な処理フローを示すフローチャートである。以下、図９，１０を用いて、ステップＳ８０５における処理の詳細について説明する。
【００６０】
図９において９０１は右目用カメラ１１０、左目用カメラ１１１により撮像された現実空間の画像であって、図７に示す現実物体４００が撮像されている。上述の通り、現実物体４００にはマーカ４５０，４５１，４５２，４５３が貼り付けられているので、当然この画像９０１にもこれらのマーカが写っている。また上述の通り、これらのマーカの世界座標系における位置が既知であって、外部記憶装置３０４内にデータとして保存されているので、ステップＳ８０５では先ず、ステップＳ８０４で求めたモデリング変換行列、射影変換行列を用いてこれらマーカ４５０〜４５３を画像９０１上に投影した場合の座標位置（予測位置）を求める（ステップＳ１００１）。
【００６１】
図９において９０３は、ステップＳ１００１で求めた各マーカの投影座標位置を示す画像で、４８０〜４８３が夫々、マーカ４５０〜４５３の投影座標位置を示す。
【００６２】
なお、世界座標系における位置が既知であって、モデリング変換行列、射影変換行列が既知である場合に、撮像画像上における座標位置を求める技術については周知であるので、ここでの説明は省略する。
【００６３】
次に、上述の通り、メモリ３０２には逐次シリアルＩ／Ｏ３１０を介して３次元センサ本体２００から「センサ座標系における３次元センサ移動局１２０の位置姿勢」が入力されるので、メモリ３０２には今回入力された位置姿勢のデータ、前回入力された位置姿勢のデータを記憶させておき、前回と今回とで位置の変化（差分）、及び／又は前回と今回とで姿勢の変化（差分）を求め、その変化が閾値以上であるか否かを判断する（ステップＳ１００２）。すなわち、ＨＭＤ１００の位置、及び／又は姿勢に動きがあるか否かを判断する。
【００６４】
本実施形態では、位置（ｘ、ｙ、ｚ）の変化量が５以上であるか、姿勢（ロール、ピッチ、ヨー）の変化量が１度以上である場合に、「ＨＭＤ１００の位置、及び／又は姿勢に動き有り」と判断するものとする。
【００６５】
ここで、３次元センサ移動局１２０はＨＭＤ１００に固定して装着されており、且つ夫々の位置関係は既知であることから、「センサ座標系における３次元センサ移動局１２０の位置姿勢」から「センサ座標系におけるＨＭＤ１００の位置姿勢」を得ることは容易である。従ってステップＳ１００２では、ＨＭＤ１００の位置、及び／又は姿勢の変化量が閾値であるか否かを判断しているとしても良い。以下の説明では、ＨＭＤ１００の位置、及び／又は姿勢の変化量が閾値以上であるか否かを判断しているものとする。
【００６６】
「背景技術」でも説明したとおり、位置、及び／又は姿勢の変化量がある値以上である場合、画像中のマーカが各ライン毎に左右にずれてしまうという問題が生じる。
【００６７】
従って本実施形態では、位置、及び／又は姿勢の変化量がある値以上である場合にこのような問題が生じることに鑑み、位置、及び／又は姿勢の変化量がある値以上である場合には、第１フィールド、もしくは第２フィールドで描画されたラインで構成される画像をマーカ検出処理の対象として用い、位置、及び／又は姿勢の変化量がある値以上ではない場合には、上記問題は生じないので、第１フィールド、第２フィールドの２フィールドで描画された画像をマーカ検出処理の対象として用いる。
【００６８】
ＨＭＤ１００の位置、及び／又は姿勢の変化量が閾値以上である場合、「ＨＭＤ１００の位置、及び／又は姿勢に動き有り」と判断して処理をステップＳ１００３に進める。
【００６９】
ここで、第１フィールドでは画像の奇数行目のラインを描画し、第２フィールドでは画像の偶数行目のラインを描画しており、第１フィールドで描画されたラインで構成される画像をマーカ検出処理の対象として用いるとすると、第１フィールド（奇数フィールド）で描画されるべきラインを直後のラインにコピーした画像を生成する（ステップＳ１００３）。
【００７０】
より具体的には、（２ｎ−１）行目（０≦ｎ≦２４０）のラインを２ｎ行目のラインにコピーする。図１１は、ステップＳ１００３における処理を説明する図である。同図（Ａ）は、ステップＳ１００２において「ＨＭＤ１００の位置、及び／又は姿勢に動き有り」と判断された画像を示す図である。同図（Ｂ）は第１フィールドでもって描画された画像を示す図である。上述の通り、奇数行目のラインのみしか描画されていない。同図（Ｃ）は、以上説明したステップＳ１００３における処理を実行した後に生成された画像で、２行ずつ同じラインが存在することになる。これにより、同図（Ａ）と比べても、ライン毎に左右にずれるといったことが無くなる。
【００７１】
ＨＭＤ１００の位置、及び／又は姿勢の変化量が閾値以上である場合、以降用いる画像は、ステップＳ１００３で生成した画像である。
【００７２】
なお、ステップＳ１００３で、第２フィールド（偶数フィールド）で描画されるべきラインを直後のラインにコピーした画像を生成するようにしても良い。すなわち、２ｎ行目（０≦ｎ≦２４０）のラインを（２ｎ−１）行目にコピーする。
【００７３】
一方、ステップＳ１００２において、ＨＭＤ１００の位置、及び／又は姿勢の変化量が閾値以上ではない場合、「ＨＭＤ１００の位置、及び／又は姿勢には動き無し」と判断して処理を直接ステップＳ１００４に進める。すなわち、以降用いる画像は、第１フィールド、第２フィールドでもって描画される画像、すなわちステップＳ８０１で取り込み、ステップＳ８０２でビデオバッファに格納した画像である。
【００７４】
次に、ステップＳ１００３で生成された画像、もしくはステップＳ８０１で取り込んだ画像（以下、何れの画像も総称して「処理対象画像」と呼称する）中のマーカを検出する処理を行う。処理対象画像からマーカを検出する処理については様々な方法が考え得るが、本実施形態では先ず、処理対象画像を、マーカの色を有する画素とマーカの色を有さない画素とで二値化する（ステップＳ１００４）。例えばマーカの色がオレンジ色である場合、処理対象画像を構成する各画素の値をＹ、Ｃｒ、Ｃｂで表現した場合に、Ｃｂ、Ｃｒの値が所定の条件（例えばＣｂ＞５０，且つＣｒ＞１７０）を満たす画素はオレンジ色を示す画素値を有する画素であると判断し、この画素に「１」を割り当てる。一方、処理対象画像を構成する各画素の値をＹ、Ｃｒ、Ｃｂｃで表現した場合に、Ｃｂ、Ｃｒの値が上記条件を満たさない画素はオレンジ色を示す画素値を有する画素ではないと判断し、この画素に「０」を割り当てる。
【００７５】
このようにして処理対象画像を構成する各画素に「１」もしくは「０」を割り当てることで、処理対象画像を二値化した画像を生成する。図９において９０２は、この二値化された画像であって、４７０〜４７３は夫々「１」が割り当てられた画素群を示す。
【００７６】
次に、ステップＳ１００４で二値化された画像に対してラベリング処理を行う（ステップＳ１００５）。ラベリング処理については周知の技術のであるので、詳細な説明は省略するが、「１」が割り当てられた画素のうち隣接するものに対して同じ番号を付けていく処理を行う。これにより、「１」が割り当てられた画素の集合を複数得ることができる。二値画像９０２に対してラベリング処理を施した結果、例えば領域（ブロック）４７０内の各画素には同じ番号が付けられているし、領域４７１内の各画素には同じ番号が付けられている。領域４７２，４７３についても同様である。
【００７７】
次に、ラベリングにより得られた各領域内の画素の数を参照し、所定個数以上（例えば１０個以上）の領域について、領域の重心座標位置を求める（ステップＳ１００６）。これは例えば、処理対象画像においてノイズなどの影響により、たまたま画像内にマーカと同じ色を有する画素が含まれている場合があるからである。従って、マーカを構成するであろう画素の集合のみについて以降の処理で用いるべく、ラベリングにより得られた各領域内の画素の数が所定個数以上の領域のみを特定する必要がある。
【００７８】
なお、領域の重心位置を求める方法としては、領域内の各画素の座標位置の平均を求めることで成される。このようにして求めた各領域の重心座標位置が、画像上のマーカの検出位置である。図９では二値画像９０２において領域４７０〜４７３の位置がこれに相当する。
【００７９】
次に、画像９０２と画像９０３とを重ね合わせ（図９の９０４）、ステップＳ１００１で求めた投影座標位置と、ステップＳ１００６で求めた検出位置とを参照して、投影座標位置から最も近い検出位置を特定し、その対応関係をメモリ３０２に記録する（ステップＳ１００７）。このような処理を全ての投影座標位置について行う。これにより、各投影座標位置に最も近い検出位置を求めることができる。しかし、投影座標位置に最も近い検出位置とこの投影座標位置との距離が所定値以上である場合には、この投影座標位置に対応する検出位置は存在しない旨をメモリ３０２に記録する。
【００８０】
そして次に、対応のとれた全ての投影座標位置の重心位置（第１の重心位置）、対応のとれた全ての検出位置の重心位置（第２の重心位置）を求める（ステップＳ１００８）。ここで、上記磁気センサによる計測に誤差がない場合には、これら２つの重心位置は一致する。しかし、磁気センサによる計測誤差は発生しているので、これら２つの重心位置は一致していない。そこで、３次元センサ本体２００から出力される信号に基づいて求めた世界座標系における観察者の視点（右目、左目）の位置姿勢を補正する必要がある。
【００８１】
そこで、ステップＳ１００８で求めたこれら２つの重心位置を用いて、世界座標系における観察者の視点（右目、左目）の位置姿勢のうち、姿勢を補正するための回転方向と角度を求める（ステップＳ１００９）。
【００８２】
より具体的には、図１２に示す如く、第１の重心位置を（ｍ＿ｘ、ｍ＿ｙ）、第２の重心位置を（ｌ＿ｘ、ｌ＿ｙ）とした場合に、カメラ（右目用カメラ１１０、左目用カメラ１１１）の焦点距離（正確には焦点距離［ｍｍ］を１画素のサイズ［ｍｍ／ｐｉｘｅｌ］で割った値）をｄとしてベクトルＭ＝（ｍ＿ｘ，ｍ＿ｙ，ｄ）とベクトルＬ＝（ｌ＿ｘ，ｌ＿ｙ，ｄ）とが成す角度θを求める。このθが、姿勢を補正するための回転角度となる。
【００８３】
θはベクトルＭとベクトルＬとの内積
｜Ｍ｜・｜Ｌ｜・ｃｏｓθ＝Ｍ・Ｌ
を解くことで求めることができる。
【００８４】
また回転軸は、回転軸と平行するベクトルをベクトルＭとベクトルＬとの外積により求めることができる。
【００８５】
そして、求めた回転軸周りに、上記θだけ回転させる行列を求め、これを補正行列として上記モデリング変換行列に乗じる（ステップＳ１０１０）。
【００８６】
以上の処理により、モデリング変換行列を補正し、上記磁気センサによる計測誤差を軽減したＭＲ空間を観察者に提供することができる。また、観察者の頭部が動き、現実空間の撮像画像の各ラインが左右にずれてしまった場合でも、その動く量に応じて、一方のフィールドでもって描画される画像に基づく画像からマーカを抽出するか、両方のフィールドでもって描画される画像からマーカを抽出するかが適宜選択される。これにより、観察者の頭部が動き、現実空間の撮像画像の各ラインが左右にずれてしまった場合でも、マーカの検出精度を落とすことなく、より正確な仮想空間と現実空間との位置合わせを実現することができる。
【００８７】
尚、本実施形態では、現実物体４００には人工的なマーカを貼り付けたが、例えば各ブロックの角の部分など、自然特徴をマーカとして用いることもできる。すなわち、本実施形態で適用可能なマーカとは、意図的に設けたもの以外であっても良く、それが自然特徴によるものであっても良い。
【００８８】
また、本実施形態では、現実空間を撮像するカメラとして２つ設けたが、これに限定されるものではなく、１つであっても良い。この場合、この１つのカメラにより撮像した現実空間の画像は仮想空間の画像を重畳させて右目、左目の両方に提示されることになる。また重畳させる仮想空間の画像は、この１つのカメラの視点位置から見えるものである。  本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００８９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９０】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００９２】
【図１】（Ａ）は、マーカをこの小型カメラにより撮像した場合の画像を示す図、（Ｂ）は各ライン毎にぶれてしまった画像を示す図、（Ｃ）は偶数行、もしくは奇数行のラインのみを用いる場合を説明する図である。
【図２】本発明の第１の実施形態に係る画像処理システムの模式図である。
【図３】本発明の実施形態に係る画像処理システムの外観例を示す図である。
【図４】本発明の実施形態に係る画像処理システムの基本構成を示す図である。
【図５】ＨＭＤ１００の外観例を示す図である。
【図６】現実空間の画像と仮想空間の画像とを用いて合成画像を生成する処理を示す図である。
【図７】現実物体４００を示す図である。
【図８】計算機３００が行う、現実空間の画像に仮想空間の画像を重畳して観察者が頭部に装着しているＨＭＤ１００の右目用ＬＣＤ１３０、左目用ＬＣＤ１３１に出力するまでの一連の処理のフローチャートである。
【図９】モデリング変換行列を補正するための処理を説明する図である。
【図１０】ステップＳ８０５のより詳細な処理フローを示すフローチャートである。
【図１１】ステップＳ１００３における処理を説明する図である。
【図１２】回転角度、回転方向を求める処理を説明する図である。
【図１】
2005165974.tif 000003
【図２】
2005165974.tif 000004
【図３】
2005165974.tif 000005
【図４】
2005165974.tif 000006
【図５】
2005165974.tif 000007
【図６】
2005165974.tif 000008
【図７】
2005165974.tif 000009
【図８】
2005165974.tif 000010
【図９】
2005165974.tif 000011
【図１０】
2005165974.tif 000012
【図１１】
2005165974.tif 000013
【図１２】
2005165974.tif 000014