(57)【要約】【課題】  現実空間画像において、仮想空間画像を重畳させない領域を適切に設定するための技術を提供すること。【解決手段】  キー領域抽出部３０３は、現実空間画像において予め定められた画素値を有する画素で構成される第１の領域を抽出する。動きベクトル検出部３０４は、現実空間画像上の複数箇所における動きベクトルを求める。被写体領域抽出部３０５は、動きベクトルを用いて、第１の領域にマージする第２の領域を特定する。画像合成部３０８は、仮想空間画像を現実空間画像上に重畳させる際に、第１の領域と第２の領域とをマージした合成領域は、仮想空間画像の重畳対象外とすることを特徴とする。【選択図】  図３
2013077307.tif 000002
【特許請求の範囲】
【請求項１】
複数のフレームからなる現実空間画像を取得する手段と、
前記現実空間画像の注目フレームにおいて、予め定められた画素値を有する画素で構成される第１の領域を抽出する抽出手段と、
前記注目フレーム内において、物体の動きベクトルを求める計算手段と、
前記動きベクトルが所定の条件を満たす場合に、前記動きベクトルを用いて、前記注目フレーム内の第１の領域に関連した第２の領域を特定する特定手段と、
仮想空間画像を生成する生成手段と、
前記仮想空間画像を前記第１の領域と前記第２の領域以外の領域に、前記現実空間画像上に重畳させる重畳手段とを備え、
前記特定手段は、前記動きベクトルが、前記所定の条件を満たさない場合には、以前のフレームで第２の領域として特定された領域を前記注目フレームの第２の領域として特定することを特徴とする画像処理装置。
【請求項２】
前記特定手段は、
前記動きベクトルが、前記所定の条件を満たさない場合には、以前のフレームで第２の領域として特定された領域を前記注目フレームの第２の領域として特定し、前記注目フレームにおいて抽出された第１の領域を、前記注目フレームの第１の領域として特定すること特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記特定手段は、
前記第１の領域以外の他領域について前記計算手段が求めたそれぞれの動きベクトルのうち、前記第１の領域について前記計算手段が求めた動きベクトルの特徴と類似している動きベクトルに対応する領域を、前記第２の領域として特定する第１の手段を有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記特定手段は、
前記第１の領域以外の他領域について前記計算手段が求めたそれぞれの動きベクトルのうち、前記第１の領域について前記計算手段が求めた動きベクトルの特徴と類似している動きベクトルに対応する領域を、前記現実空間画像中における位置および前記第１の領域との連結関係に基づいて、前記第２の領域として特定する第１の手段を有することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記特定手段は、前記他領域について前記計算手段が求めたそれぞれの動きベクトルに基づいて決まる代表動きベクトルの大きさが予め定められた大きさ以上であるか否かを判断し、前記代表動きベクトルの大きさが予め定められた大きさ以上である領域に対して前記第１の手段を適用することを特徴とする請求項３又は４に記載の画像処理装置。
【請求項６】
前記計算手段は、
撮像装置の姿勢変化量を算出する手段と、
前記姿勢変化量に基づき、前記撮像装置の姿勢変化によって生じる動きベクトルを姿勢
変化分動きベクトルとして計算する手段と、
前記姿勢変化分動きベクトルに基づいて、前記動きベクトルを補正する手段と
を備えることを特徴とする請求項１乃至５の何れか１項に記載の画像処理装置。
【請求項７】
前記計算手段は、
現実空間の奥行き情報を算出する手段と、
撮像装置の位置変化量を算出する手段と、
前記奥行き情報と前記位置変化量に基づいて、前記撮像装置の位置変化によって生じる動きベクトルを、位置変化分動きベクトルとして計算する手段と、
前記位置変化分動きベクトルに基づいて、前記動きベクトルを補正する手段と
を備えることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
前記生成手段は、
前記現実空間画像を撮像した撮像装置の位置姿勢を示す位置姿勢情報に基づいて仮想空間画像を生成することを特徴とする請求項１乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記抽出手段は、前記現実空間画像において手の色を示す画素値を有する画素で構成される領域を前記第１の領域として抽出することを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記計算手段は、前記現実空間画像を構成する各画素について動きベクトルを求めることを特徴とする請求項１乃至９のいずれか１項に記載の画像処理装置。
【請求項１１】
更に、前記重畳手段による重畳処理によって得られる合成画像を出力する手段を備えることを特徴とする請求項１乃至１０の何れか１項に記載の画像処理装置。
【請求項１２】
複数のフレームからなる現実空間画像を取得する工程と、
前記現実空間画像の注目フレームにおいて、予め定められた画素値を有する画素で構成される第１の領域を抽出する抽出工程と、
前記注目フレーム内において、物体の動きベクトルを求める計算工程と、
前記動きベクトルが所定の条件を満たす場合に、前記動きベクトルを用いて、前記注目フレーム内の第１の領域に関連した第２の領域を特定する特定工程と、
仮想空間画像を生成する生成工程と、
前記仮想空間画像を、前記第１の領域と前記第２の領域以外の領域に、前記現実空間画像上に重畳させる重畳工程とを備え、
前記特定工程において、前記動きベクトルが、前記所定の条件を満たさない場合には、以前のフレームで第２の領域として特定された領域を前記注目フレームの第２の領域として特定することを特徴とする画像処理方法。
【請求項１３】
コンピュータに請求項１２に記載の画像処理方法を実行させるためのプログラム。
【請求項１４】
請求項１３に記載のプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間画像と仮想空間画像との合成技術に関するものである。
【背景技術】
【０００２】
実写風景の上に、コンピュータグラフィックス（ＣＧ）を重畳して体験者に提示することで、この体験者にあたかもその場に仮想の物体が存在するかのような体験を行わせる複合現実感(Mixed Reality:MR)技術が従来から提案されている。
【０００３】
ＭＲ技術を用いて体験者に臨場感豊かな体験をさせる為には、実写風景の上に単純にＣＧを重畳して表示するだけでなく、体験者が実際にＣＧで描画される仮想物体に触ったり操作する（しているように体感させる）といったインタラクションが重要になる。そして、このようなインタラクションを実現するめには、仮想物体よりも手前（前景）に仮想物体を操作する体験者の手など（被写体）を表示することが必要である。なぜなら、仮想物体よりも手前にあるべき被写体が仮想物体によって隠されてしまうと、仮想物体との距離感や現実感が破綻し、臨場感を損ねてしまうからである。
【０００４】
このような課題を解決するために、本願出願人は特許文献１において、最前景とすべき被写体の画像を仮想物体によって隠さないようにする技術を提案した。係る技術では、背景と被写体とを実写画像として取得し、この実写画像から、予め手作業でシステムに登録した「仮想物体より手前に表示すべき被写体（被写体検出情報としての色情報を有する領域）」を被写体領域として抽出する。そして、被写体領域には仮想物体の描画を禁止する。係る技術により、最前景となるべき被写体が仮想物体で隠されることなく、仮想物体よりも手前にあるように表示され、臨場感の高い複合現実感体験を行うことが可能となる。
【０００５】
図１は、現実空間画像、仮想空間画像、現実空間画像上に仮想空間画像を重畳させた合成画像の一例を示す図である。
【０００６】
図１において１０１は現実空間画像で、係る現実空間画像１０１内には、被写体としての手の領域１５０が含まれている。１０２は、現実空間画像１０１上に重畳させる仮想空間画像である。１０３は、現実空間画像１０１上に仮想空間画像１０２を重畳させた合成画像である。合成画像１０３を生成する際には、現実空間画像１０１上において手の領域１５０に対しては仮想空間画像１０２は重畳させていないので、結果として合成画像１０３上には、手の領域１５０がそのまま描画されている。
【特許文献１】特開２００３−２９６７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示されている複合現実感体験システムは、体験者の見ている被写体が単色である場合には良好に動作する。しかしながら、被写体が異なる複数の色を有する場合、ある色を有する領域のみしかＣＧの描画を禁止できないため、被写体の一部分だけがＣＧ内に浮いているように表示されてしまい、体験者の現実感を損なうことがあった。
【０００８】
図２は、複数の色を有する被写体を含む現実空間画像、仮想空間画像、そして係る現実空間画像上に仮想空間画像を重畳させた合成画像の一例を示す図である。
【０００９】
図２において２０１は現実空間画像で、係る現実空間画像２０１内には、被写体としての手の領域１５０ａ、腕の領域１５０ｂが含まれている。それぞれの領域１５０ａ、１５０ｂは異なる色を有する領域である。２０２は、現実空間画像２０１上に重畳させる仮想空間画像である。２０３は、現実空間画像２０１上に仮想空間画像２０２を重畳させた合成画像である。ここでは、手の領域１５０ａの色を有する領域のみを、仮想空間画像２０２の重畳対象外としているので、図２に示す如く、本来は仮想空間画像２０２を重畳させない腕の領域１５０ｂには仮想空間画像２０２が描画されてしまっている。
【００１０】
このような技術的背景から、次のようなことな望まれている。即ち、体験者の手や指定した領域を実写画像より抽出した後、抽出した領域に付属する領域（体験者の腕等）を更に抽出する。そして、抽出したそれぞれの領域をマージした被写体領域（手と腕）については仮想空間画像を重畳させないように、現実空間画像上に仮想空間画像を重畳させる。
【００１１】
本発明は以上の問題に鑑みてなされたものであり、現実空間画像において、仮想空間画像を重畳させない領域を適切に設定するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００１３】
即ち、複数のフレームからなる現実空間画像を取得する手段と、
前記現実空間画像の注目フレームにおいて、予め定められた画素値を有する画素で構成される第１の領域を抽出する抽出手段と、
前記注目フレーム内において、物体の動きベクトルを求める計算手段と、
前記動きベクトルが所定の条件を満たす場合に、前記動きベクトルを用いて、前記注目フレーム内の第１の領域に関連した第２の領域を特定する特定手段と、
仮想空間画像を生成する生成手段と、
前記仮想空間画像を前記第１の領域と前記第２の領域以外の領域に、前記現実空間画像上に重畳させる重畳手段とを備え、
前記特定手段は、前記動きベクトルが、前記所定の条件を満たさない場合には、以前のフレームで第２の領域として特定された領域を前記注目フレームの第２の領域として特定することを特徴とする。
【発明の効果】
【００１４】
本発明の構成によれば、現実空間画像において、仮想空間画像を重畳させない領域を適切に設定することができる。
【図面の簡単な説明】
【００１５】
【図１】現実空間画像、仮想空間画像、現実空間画像上に仮想空間画像を重畳させた合成画像の一例を示す図である。
【図２】複数の色を有する被写体を含む現実空間画像、仮想空間画像、そして係る現実空間画像上に仮想空間画像を重畳させた合成画像の一例を示す図である。
【図３】本発明の第１の実施形態に係るシステムの機能構成例を示すブロック図である。
【図４】現実空間の画像上に仮想空間の画像が重畳された合成画像を、ユーザがＨＭＤを介して観察している様子を示す図である。
【図５】画像処理装置３００が複合現実空間の画像を生成し、生成した複合現実空間の画像をＨＭＤ３９０が有する表示部３０９に送出する為の一連の処理のフローチャートである。
【図６】ステップＳ５０２における処理の詳細を示すフローチャートである。
【図７】ステップＳ６０１における処理の詳細を示すフローチャートである。
【図８】ステップＳ６０４における処理の詳細を示すフローチャートである。
【図９】キー領域の特徴のみを特徴空間上でクラスタリングした結果の例を示す図である。
【図１０】キー領域のクラスとその他のクラスに属する特徴とを示す図である。
【図１１】ステップＳ６０５における処理の詳細を示すフローチャートである。
【図１２】ステップＳ５０５における、複合現実空間の画像の生成処理の詳細を示すフローチャートである。
【図１３】本発明の第１の実施形態によって生成される複合現実空間の画像の一例を示す図である。
【図１４】本発明の第３の実施形態で行う、ステップＳ５０２における処理のフローチャートである。
【図１５】画像処理装置３００に適用可能なコンピュータのハードウェア構成例を示す図である。
【図１６】ステップＳ６０２において本発明の第４の実施形態で行う処理のフローチャートである。
【図１７】画像平面上に射影された位置変化分動きベクトルTvを算出する原理を示す図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１７】
［第１の実施形態］
本実施形態では、現実空間画像上に仮想空間画像を重畳させる場合に、現実空間画像内に「手」の領域と「腕」の領域とが含まれている場合には、それぞれの領域をマージして１つの被写体の領域（合成領域）を生成する。そして、係る被写体の領域を常に仮想空間の画像よりも手前に表示するよう、係る重畳の処理を制御する。詳しくは後述するが、被写体の領域は、「手」の領域と「腕」の領域とをマージしたものに限定するものではなく、どのような領域をマージして被写体の領域を形成しても良い。即ち、以下の説明は、被写体の領域が異なる複数の画素値で表示されるようなものであれば、どのような被写体の領域でも良い。
【００１８】
図４は、現実空間の画像上に仮想空間の画像が重畳された合成画像を、ユーザがＨＭＤを介して観察している様子を示す図である。
【００１９】
図４に示すように、ユーザ４０１はＨＭＤ３９０を介して、撮像部３０１が撮像した現実空間の画像上に、センサ４０４による計測結果に基づいて生成した仮想空間の画像、を重畳させた合成画像（複合現実空間の画像）を観察している。係る観察中に自身の手４０５や自身の腕４０６が撮像部３０１の視野範囲４０９に入った場合、ＨＭＤ３９０に表示される複合現実空間の画像中には手４０５、腕４０６が表示される。即ち、前景となる現実空間の画像上の手４０５、腕４０６の領域には仮想空間の画像（仮想物体４０８の一部）は重畳させないようにする。これを実現するために、前景とすべき現実の被写体は「ユーザ４０１の手４０５の領域、腕４０６の領域」、背景とすべき現実の対象物は「壁や鉢植え等の背景現実物体４０７」、等の領域の区別を行う。
【００２０】
図３は、本実施形態に係るシステムの機能構成例を示すブロック図である。
【００２１】
図３に示す如く、本実施形態に係るシステムは、ＨＭＤ３９０、位置姿勢計測部３０６、画像処理装置３００により構成されている。そして、ＨＭＤ３９０、位置姿勢計測部３０６はそれぞれ、画像処理装置３００に接続されている。
【００２２】
先ず、ＨＭＤ３９０について説明する。
【００２３】
ＨＭＤ３９０は、頭部装着型表示装置の一例としてのものであり、撮像部３０１と表示部３０９とで構成されている。
【００２４】
撮像部３０１は、現実空間の動画像を撮像するビデオカメラであり、撮像した各フレームの画像（現実空間画像）は、画像信号として後段の画像処理装置３００に入力される。撮像部３０１は、ユーザがＨＭＤ３９０を自身の頭部に装着した場合に、このユーザの目の近くに位置するように、ＨＭＤ３９０に取り付けられる。更に、取り付ける（撮像部３０１の）姿勢は、ＨＭＤ３９０を頭部に装着したユーザの正面方向（視線方向）に略一致するような姿勢である。これにより、撮像部３０１は、ユーザの頭部の位置姿勢に応じて見える現実空間の動画像を撮像することができる。従って、以下の説明では、撮像部３０１を「ユーザの視点」と呼称する場合もある。
【００２５】
表示部３０９は、例えば、液晶画面であり、ＨＭＤ３９０を頭部に装着したユーザの眼前に位置するようにＨＭＤ３９０に取り付けられたものである。画像処理装置３００からＨＭＤ３９０に対して送出される映像信号に基づいた画像は、係る表示部３０９に表示される。これにより、ＨＭＤ３９０を頭部に装着したユーザの眼前には、画像処理装置３００から送信された映像信号に基づいた画像が提示されることになる。
【００２６】
本実施形態では、撮像部３０１と表示部３０９とはＨＭＤ３９０に内蔵されており、且つ撮像部３０１と表示部３０９とは、表示部３０９の光学系と撮像部３０１の撮像系とが一致するようにＨＭＤ３９０に内蔵されている。
【００２７】
次に、位置姿勢計測部３０６について説明する。
【００２８】
位置姿勢計測部３０６は、撮像部３０１の位置姿勢を計測するためのものであり、例えば、位置姿勢計測部３０６には、磁気センサや光学式センサ等のセンサシステムを適用することができる。例えば、位置姿勢計測部３０６に磁気センサを適用する場合、位置姿勢計測部３０６は次のような動作を行うことになる。
【００２９】
先ず、位置姿勢計測部３０６に磁気センサを適用する場合、位置姿勢計測部３０６は、次のような各部によって構成されることになる。
【００３０】
・  周囲に磁界を発生させるトランスミッタ
・  トランスミッタが発生する磁界中で、自身の位置姿勢に応じた磁界の変化を検知するレシーバ
・  トランスミッタの動作制御を行うと共に、レシーバによる計測結果に基づいて、レシーバのセンサ座標系における位置姿勢情報を生成するセンサコントローラ
トランスミッタは現実空間中の所定の位置に配置する。そしてレシーバは、撮像部３０１に取り付ける。トランスミッタが磁界を発生させると、レシーバは、自身の位置姿勢（撮像部３０１の位置姿勢）に応じた磁界の変化を検知し、検知した結果を示す信号をセンサコントローラに送出する。センサコントローラは、係る信号に基づいて、レシーバのセンサ座標系における位置姿勢を示す位置姿勢情報を生成する。ここで、センサ座標系とは、トランスミッタの位置を原点とし、係る原点で互いに直交する３軸をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系のことである。そして、センサコントローラは、求めた位置姿勢情報を、後段の画像処理装置３００に対して送出する。
【００３１】
しかし、位置姿勢計測部３０６にはどのようなセンサシステムを適用しても良く、位置姿勢計測部３０６に何れのセンサシステムを適用しても、その動作については周知であるので、これについての説明は省略する。また、センサシステムの代わりに、撮像部３０１が撮像した画像を用いて撮像部３０１の位置姿勢を求める方法を用いても良く、その場合には、位置姿勢計測部３０６は省略し、係る方法を実行する演算部を後段の画像処理装置３００内に設ければよい。
【００３２】
次に、画像処理装置３００について説明する。図３に示す如く、画像処理装置３００は、撮影画像取込部３０２、キー領域抽出部３０３、動きベクトル検出部３０４、被写体領域抽出部３０５、画像合成部３０８、画像生成部３０７、記憶装置３１０、により構成されている。以下、画像処理装置３００を構成する各部について説明する。
【００３３】
撮影画像取込部３０２は、撮像部３０１から送出された各フレームの画像の画像信号を受けると、これを順次ディジタルデータに変換し、動きベクトル検出部３０４、キー領域抽出部３０３、画像合成部３０８に送出する。
【００３４】
キー領域抽出部３０３は、撮影画像取込部３０２から受けたディジタルデータが示す現実空間画像から、キー領域（第１の領域）を抽出する。ここで、キー領域とは、予め定められた画素値を有する画素で構成される領域である。本実施形態では、ユーザの手の色を示す画素値を有する画素で構成される領域をキー領域とする。そして、キー領域抽出部３０３は、現実空間画像においてキー領域を特定する為のデータであるキー領域データを生成し、生成したキー領域データを、被写体領域抽出部３０５に送出する。
【００３５】
動きベクトル検出部３０４は、撮影画像取込部３０２から受けた現実空間画像（現フレーム）と、この現実空間画像よりも１つ前のフレームの現実空間画像とを用いて、現フレームにおける現実空間画像を構成する画素毎に、フレーム間の動きベクトルを求める。そして画素毎に求めた動きベクトルのデータを、被写体領域抽出部３０５に送出する。
【００３６】
動きベクトル検出部３０４が行う動きベクトルの検出は、既存のブロックマッチング法によるオプティカルフローを算出することで実行することができる。本実施形態では、動きベクトルの検出（計算）をブロックマッチング法で行うものとするが、以下の説明は係る方法を用いることに限定するものではなく、フレーム間の動きベクトルを検出することができる方法であれば如何なる方法を用いても良い。例えば、動きベクトルの検出を勾配法によるオプティカルフローを用いることで行っても良い。
【００３７】
被写体領域抽出部３０５は、キー領域抽出部３０３から入力されたキー領域データと、動きベクトル検出部３０４から入力された動きベクトルのデータと、を用いて、現実空間画像中における被写体の領域（被写体領域）を抽出する。係る被写体領域とは上述の通り、ユーザの手の領域と腕の領域とをマージした領域である。そして、抽出した被写体領域を特定するためのデータである被写体領域データを画像合成部３０８に送出する。
【００３８】
画像生成部３０７は先ず、記憶装置３１０が保持している仮想空間のデータを用いて、仮想空間を構築する。仮想空間のデータには、仮想空間中に配置する仮想物体についてのデータ、仮想空間中に配置する光源のデータなどが含まれている。仮想物体のデータには、例えば、仮想物体がポリゴンで構成されている場合には、ポリゴンの法線ベクトルデータ、ポリゴンの色データ、ポリゴンを構成する各頂点の座標位置データ等が含まれている。また、仮想物体に対してテクスチャマッピングを施す場合には、テクスチャマップデータも、仮想物体のデータに含まれる。また、光源のデータには、例えば、光源の種類を示すデータ、光源の配置位置姿勢を示すデータ、等が含まれていることになる。
【００３９】
そして画像生成部３０７は、仮想空間の構築後、係る仮想空間中に、位置姿勢計測部３０６から受けた位置姿勢情報が示す位置姿勢で視点を設定する。そして画像生成部３０７は、係る視点から見える仮想空間の画像（仮想空間画像）を生成する。なお、所定の位置姿勢を有する視点から見える仮想空間の画像を生成する為の技術については周知であるので、これについての説明は省略する。そして、生成した仮想空間画像のデータを、画像合成部３０８に送出する。
【００４０】
画像合成部３０８は、撮影画像取込部３０２から受けたディジタルデータが示す現実空間画像上に、画像生成部３０７から受けたデータが示す仮想空間画像を重畳させる処理を行う。係る重畳処理では、被写体領域抽出部３０５から受けた被写体領域データが示す被写体領域には仮想空間画像が重畳されないようにする。そして画像合成部３０８はこのような重畳処理によって生成された複合現実空間の画像を映像信号に変換してからＨＭＤ３９０が有する表示部３０９に送出する。これにより、ＨＭＤ３９０を頭部に装着したユーザの眼前には、自身の視点の位置姿勢に応じた複合現実空間の画像が提示されることになる。更に係る複合現実空間の画像において被写体領域（自身の手と腕の領域）には仮想空間画像は重畳されていない。
【００４１】
なお、本実施形態では、複合現実空間の画像は、ＨＭＤ３９０が有する表示部３０９に送出するものとしているが、複合現実空間の画像の送出先は特に限定するものではない。例えば、画像処理装置３００にＣＲＴや液晶画面等により構成されている表示装置を接続し、この表示装置に複合現実空間の画像を出力するようにしても良い。
【００４２】
記憶装置３１０は、上述のように、仮想空間のデータを保持しており、画像生成部３０７は係るデータを適宜読み出して用いる。更に記憶装置３１０には、ユーザの手の色を示す画素値のデータ（キーカラーデータ）も記憶保持されている。
【００４３】
ここで、キーカラーデータについて説明する。キーカラーデータは、多次元色空間における座標値として記述することができる。一般によく知られている表色系の種類には、RGB、YIQ、YCbCr、YUV、HSV、Lu*v*、La*b*など様々なものがある（日本規格協会  JIS色彩ハンドブック）。
【００４４】
キーカラーデータには、被写体の色彩特性に合わせて適当なものを任意に用いてよいが、照明条件の相違による被写体の色彩特性の変化を相殺するために、輝度情報と色相情報とに分離する形式の表色系を用い、色相情報だけを用いることが望ましい。このような表色系の代表的なものとしてはYIQやYCbCrが一般的である。本実施形態では、YCbCr表色系を用いる。従って、記憶装置３１０に記憶保持されているキーカラーデータとは、ユーザの手の色を予め取得しておき、取得した色をYcbCr表色系のデータとして変換したものである。
【００４５】
次に、画像処理装置３００が複合現実空間の画像を生成し、生成した複合現実空間の画像をＨＭＤ３９０が有する表示部３０９に送出する為の一連の処理について、同処理のフローチャートを示す図５を用いて、以下説明する。
【００４６】
先ずステップＳ５０１では、撮影画像取込部３０２は、撮像部３０１から送出された現実空間画像をディジタルデータとして取得する。
【００４７】
次に、ステップＳ５０２では、キー領域抽出部３０３は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像から、キー領域（第１の領域）を抽出する。そして、キー領域抽出部３０３は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像においてキー領域を特定する為のデータであるキー領域データを生成し、生成したキー領域データを、被写体領域抽出部３０５に送出する。
【００４８】
また動きベクトル検出部３０４は、ステップＳ５０１で撮影画像取込部３０２が取得した現フレームの現実空間画像と、現フレームより１フレーム前の現実空間画像とを用いて、現フレームの現実空間画像を構成する画素毎にフレーム間の動きベクトルを求める。そして動きベクトル検出部３０４は、画素毎に求めた動きベクトルのデータを、被写体領域抽出部３０５に送出する。
【００４９】
そして被写体領域抽出部３０５は、キー領域抽出部３０３が生成したキー領域データと、動きベクトル検出部３０４が生成した動きベクトルのデータと、を用いて、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像中の被写体領域を抽出する。そして、被写体領域抽出部３０５は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像中の被写体領域をマスクしたマスク画像のデータを、上記被写体領域データとして生成する。本実施形態では上述の通り、被写体とはユーザの手と腕であるので、現実空間画像から手と腕が存在する領域を抽出し、その領域からマスク画像を生成する。ステップＳ５０２における処理の詳細については後述する。
【００５０】
次にステップＳ５０３では、画像生成部３０７は、位置姿勢計測部３０６から位置姿勢情報を取得する。係る位置姿勢情報は上述の通り、ＨＭＤ３９０を頭部に装着するユーザの視点の位置姿勢であり、撮像部３０１の位置姿勢である。
【００５１】
次にステップＳ５０４では、画像生成部３０７は、記憶装置３１０から仮想空間のデータを読み出し、読み出したデータに基づいて仮想空間を構築する。そして画像生成部３０７は、仮想空間の構築後、係る仮想空間中に、ステップＳ５０３において位置姿勢計測部３０６から取得した位置姿勢情報が示す位置姿勢で視点を設定する。そして画像生成部３０７は、係る視点から見える仮想空間の画像（仮想空間画像）を生成する。
【００５２】
次にステップＳ５０５では、画像合成部３０８は、ステップＳ５０１で撮影画像取込部３０２が取得したディジタルデータが示す現実空間画像上に、ステップＳ５０４で画像生成部３０７が生成した仮想空間画像を重畳させる処理を行う。係る重畳処理では、ステップＳ５０２で被写体領域抽出部３０５が生成した被写体領域データが示す被写体領域には仮想空間画像が重畳されないようにする。ステップＳ５０５における処理の詳細については後述する。
【００５３】
次にステップＳ５０６では、画像合成部３０８は、ステップＳ５０５における重畳処理によって生成した複合現実空間の画像を映像信号に変換してからＨＭＤ３９０が有する表示部３０９に送出する。
【００５４】
次に、画像処理装置３００が有する不図示の操作部を介して本処理の終了指示がユーザから入力された、若しくは本処理の終了条件が満たされた場合にはステップＳ５０７を介して本処理が終了する。一方、画像処理装置３００が有する不図示の操作部を介して本処理の終了指示がユーザから入力されていないし、本処理の終了条件も満たされていない場合には、処理はステップＳ５０７を介してステップＳ５０１に戻す。そして、次のフレームの複合現実空間の画像を表示部３０９に送出すべく、ステップＳ５０１以降の処理を行う。
【００５５】
次に、上記ステップＳ５０２における処理の詳細について説明する。図６は、上記ステップＳ５０２における処理の詳細を示すフローチャートである。
【００５６】
先ずステップＳ６０１では、キー領域抽出部３０３は、記憶装置３１０からキーカラーデータを読み出す。そして、キー領域抽出部３０３は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像を構成する各画素のうち、記憶装置３１０から読み出したキーカラーデータが示す画素値を有する画素の集合をキー領域として抽出する。
【００５７】
具体的には、キー領域抽出部３０３は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像を構成する各画素のうち、記憶装置３１０から読み出したキーカラーデータが示す画素値を有する画素については「１」を割り当てる。一方、キー領域抽出部３０３は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像を構成する各画素のうち、記憶装置３１０から読み出したキーカラーデータが示す画素値を有していない画素については「０」を割り当てる。即ち、現実空間画像において、手の領域を構成する各画素については「１」を割り当て、それ以外の領域を構成する各画素については「０」を割り当てる。
【００５８】
ここで、ステップＳ６０１における処理をより詳細に説明する。図７は、上記ステップＳ６０１における処理の詳細を示すフローチャートである。なお、図７のフローチャートは、現実空間画像中の画像座標（ｉ，ｊ）における画素について行う処理のフローチャートである。従って、実際にステップＳ６０１では、図７のフローチャートに従った処理を、現実空間画像を構成する各画素について行うことになる。
【００５９】
先ずステップＳ７０１では、キー領域抽出部３０３は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像において画像座標（ｉ、ｊ）における画素の画素値（本実施形態ではＲＧＢ値で表されているものとする）をＹＣｒＣｂ値に変換する。画像座標（ｉ、ｊ）における画素のＲ値をＲ（ｉ、ｊ）、Ｇ値をＧ（ｉ、ｊ）、Ｂ値をＢ（ｉ、ｊ）とする。この場合、ステップＳ７０１では、ＲＧＢ値をＹＣｒＣｂ値に変換する為の関数color_conversion()を用いて、Ｒ（ｉ、ｊ）、Ｇ（ｉ、ｊ）、Ｂ（ｉ、ｊ）を変換し、Ｙ値、Ｃｒ値、Ｃｂ値を得る。
【００６０】
次にステップＳ７０２では、ステップＳ７０１で求めたＹ、Ｃｒ、Ｃｂのそれぞれの値が表現する色が、記憶装置３１０から読み出したキーカラーデータが示す色に略同じであるのか否かを判断する。例えば、ステップＳ７０１で求めたＹ、Ｃｒ、Ｃｂのそれぞれの値が表現する色が、記憶装置３１０から読み出したキーカラーデータが示す色に略同じであるのか否かを、関数Key_area_func()を用いて判断する。係る関数Key_area_func()は、略同じであれば１を返し、略同じでなければ０を返す関数である。
【００６１】
ここで、関数Key_area_func()による判断方法としては、例えば、Ｃｂ、Ｃｒで規定されるCbCr平面上における座標値（Ｃｒ、Ｃｂ）が、キーカラーデータの色分布の領域に属するか否かを判定する。判定結果は、例えば、キーカラーデータの色分布に属するのであれば１、属さないのであれば０と二値で表してもよいが、属する度合いを０から１までの連続値でもって表現するようにしても良い。
【００６２】
そして係る関数Key_area_func()が返す値は、配列Key_area(ｉ、ｊ)に代入される。この配列key_area(ｉ、ｊ)は、画像座標（ｉ、ｊ）における画素がキー領域を構成する画素であるか否かを示す値を格納する為のものである。
【００６３】
そして、全てのｉ、ｊについて図７のフローチャートに従った処理を行うことで、配列Key_areaには、現実空間画像を構成する各画素について「１」若しくは「０」が保持されることになる。係る配列Key_areaが、上記キー領域データとなる。
【００６４】
なお、本実施形態では、撮影画像取込部３０２が取得した現実空間画像を構成する各画素の画素値はＲＧＢで表されているものとしているが、YIQやYUVで表されていても良い。その場合には、ステップＳ７０１における処理を省略し、ステップＳ７０２において（Ｃｂ、Ｃｒ）の代わりにそれぞれIQ空間やUV空間における座標値を用いればよい。
【００６５】
以上説明したように、キー領域抽出部３０３は、撮影画像取込部３０２が取得した現実空間画像を構成する各画素が、キー領域（手）を構成するものであるのか否かを示すキー領域データを生成する。
【００６６】
図６に戻って、次にステップＳ６０２では、動きベクトル検出部３０４は、ステップＳ５０１で撮影画像取込部３０２が取得した現フレームの現実空間画像を構成する画素毎にフレーム間の動きベクトルを求める。なお、本実施形態では、動きベクトルは現実空間画像を構成する各画素について求めるものとしたが、これに限定するものではなく、現実空間画像上の複数箇所における動きベクトルを求めれば良い。例えば、キー領域の近辺のみの画素について動きベクトルを求めるようにしても良い。これにより動きベクトルを求める為に要する時間コストを削減することができる。
【００６７】
次にステップＳ６０３では、被写体領域抽出部３０５は、ステップＳ６０２で求めた各画素についての動きベクトルのうち、キー領域以外（第１の領域以外）の領域（非キー領域、他領域）を構成する各画素について求めた動きベクトルの大きさの平均を求める。そして求めた平均（代表動きベクトルの大きさ）が、予め定めた閾値以上であるか否かを判断する。係る判断の結果、求めた平均が閾値以上であれば処理をステップＳ６０４に進め、閾値未満である場合には処理をステップＳ６０６に進める。
【００６８】
なお、ここで述べている「動きベクトルの大きさ」とは、動きベクトル距離成分を示している。もちろん、動きベクトルの角度成分から「大きさ」を求めても良い。このように、動きベクトルの大きさを求めるための方法については特に限定するものではない。ここで、ステップＳ６０３で行う判断処理の意義について説明する。
【００６９】
手の領域の動きベクトルと類似度の高い領域は、腕の領域として抽出する。これは手と腕はほとんどの場合において一緒に動作しているので、それぞれの動きベクトルには類似性があるということから実現している。ただし手だけが動いて腕はほとんど動かないという場合も考えられる。例えば、手首のみを回した場合がこれに相当する。この場合、そのまま被写体領域を抽出しようとしても腕は抽出されない。また、手も腕も全く動かずさらには撮像部３０１も動かない場合は、動きベクトルは算出されないので正常に被写体領域を抽出することができない。
【００７０】
そこで本実施形態では、ステップＳ６０３において、手が動いていない場合と、手と腕と撮像部３０１の全部が動いていない場合とを判断する処理を行う。つまり、非キー領域の動きベクトルの大きさがほとんど０の場合は、腕の領域が動いていないか、手と腕と撮像部３０１の全部が動いていないと判断し、その場合はステップＳ６０６の処理を行うことで問題を回避する。ステップＳ６０６における処理については後述する。
【００７１】
次にステップＳ６０４では、被写体領域抽出部３０５は、ステップＳ６０１で抽出したキー領域と、ステップＳ６０２で求めた動きベクトルと、に基づいて、キー領域にマージすべき第２の領域を特定する。そして特定した第２の領域とキー領域とをマージした領域を被写体領域として得る。本実施形態では、腕の領域を第２の領域として特定する。そして、特定した腕の領域を、キー領域としての手の領域にマージすることで被写体領域を得る。
【００７２】
ここで、ステップＳ６０４における処理の詳細について説明する。図８は、上記ステップＳ６０４における処理の詳細を示すフローチャートである。
【００７３】
先ず、ステップＳ８０１では、被写体領域抽出部３０５は、各動きベクトルを、距離成分と角度成分を特徴としてそれぞれの特徴軸で正規化する。これにより各特徴の単位の違いにより値の重み付けがなされてしまうことを回避する（一般的な正規化）。例えば、特徴のパターン相互の距離を最小にすることで正規化を行う。
【００７４】
次に、ステップＳ８０２では、被写体領域抽出部３０５は、ステップＳ８０１で正規化された動きベクトルのうち、キー領域の特徴のみを特徴空間上でクラスタリングする。つまり、図９に示すようにベクトル距離成分軸（縦軸）と角度成分軸（横軸）とで規定される特徴空間上で、キー領域の特徴をクラスタリングする（特徴パターンの学習）。図９は、キー領域の特徴のみを特徴空間上でクラスタリングした結果の例を示す図である。
【００７５】
ここで必要に応じてクラスタリングされたキー領域の特徴のうちノイズ成分を除外してもよい。具体的には、特徴の数の少ないクラスや距離成分の小さいクラスなどはノイズとして除外する。
【００７６】
また、キー領域の特徴をクラスタリングするとしたが、クラスリングする特徴をキー領域のエッジ領域のみの特徴とすることでノイズを除外していもよい。エッジ領域の抽出は既存のラベリングアルゴリズムで実現できる。
【００７７】
次に、ステップＳ８０３では、被写体領域抽出部３０５は、正規化した全ての動きベクトルの特徴のうち、ステップＳ８０２でクラスタリングされたキー領域のクラスに含まれるものとして判断された特徴を、このクラスに含める処理を行う。即ち、図１０に示すように、動きベクトルの特徴空間においてキー領域のクラスに属する特徴は被写体領域クラスであるとみなすことで、被写体領域クラスとそれ以外を識別する。これから、被写体領域は、キーカラーデータを有する領域に加え、キー領域と類似した動きベクトル成分を有する領域も含むこととなる。図１０は、キー領域のクラスとその他のクラスに属する特徴とを示す図である。
【００７８】
係る処理は、例えば以下の式に基づいて行われる。
【００７９】
target_area( i, j ) = discriminant_func( whole_vec( i, j ) )
ここで(i,j)は現実空間画像における画素座標、target_areaは被写体領域である。また、discriminant_func（）はキー領域のクラスの動きベクトルの特徴によって学習されている被写体領域識別関数、whole_vecは現実空間画像の全体の動きベクトルである。なお、上述したように、動きベクトルは現実空間画像を構成する全ての画素について求めることに限定するものではないので、ステップＳ８０３では、全ての画素について行うのではなく、動きベクトルを求めた全ての画素について行うものである。
【００８０】
次に、ステップＳ８０４では、被写体領域抽出部３０５は、キー領域と類似した動きベクトル成分を有する画素としてステップＳ８０３で特定されたそれぞれの画素についてラベリング処理を行う。以下ではラベリングされた画素で構成される領域を追加領域と呼称する。例えば、腕の領域を構成する画素のみをラベリングする。またここでラベリングされる画素にはユーザの手、腕以外の領域を構成する画素が含まれている可能性がある。本来それらの画素は、背景となる領域を構成する画素である。例えばそれはユーザ以外の人間の手や腕かもしれない。
【００８１】
次に、ステップＳ８０５では、被写体領域抽出部３０５は、ステップＳ８０４でラベリングされた追加領域が被写体領域として適切か否かを判定する。ステップＳ８０５における判定で用いる判定基準は２つある。
【００８２】
１つ目の基準は、追加領域がキー領域と連結しているかどうか（連結関係）である。つまり、被写体となるべき腕はもちろん手とつながっているので、追加領域がキー領域と連結しているかを判定し、連結していればこの追加領域は被写体領域であるとする。そしてそうでないものは被写体領域から除外する。
【００８３】
２つ目の基準は、追加領域が現実空間画像の端の領域に属しているかどうかである。つまり、被写体領域となるべきである腕はもちろんユーザとつながっているので、ユーザは自身の手を見ている際は必ず手につながった腕がユーザの視界の端までつながっているはずである。従って、ユーザが見る画像の端の領域に腕の領域が存在するはずである。これらの理由から、追加領域が現実空間画像の端の領域に属しているか否かを判定し、属していればこの追加領域は被写体領域であるとする。そしてそうでないものは被写体領域から除外する。
【００８４】
これらの処理によって、背景領域を被写体領域と誤認識することが軽減される。
【００８５】
ここで２つ目の基準をより厳しくするために、追加領域が現実空間画像の左右か下の端の領域に属しているかを判断するようにしても良い。
【００８６】
ステップＳ８０６では、ステップＳ８０５で被写体領域として認識された追加領域を、キー領域にマージすることで、被写体領域を形成する。
【００８７】
被写体領域はつまり下記のようになる。
【００８８】
被写体領域  ＝  キー領域  ＋  追加領域
ただし、追加領域は、ステップＳ８０５で被写体領域として適切であると判定された領域である。
【００８９】
そして、図６のステップＳ６０５にリターンする。
【００９０】
ここで、以上の説明では、動きベクトルの距離成分と角度成分とを特徴として用いたが、距離成分のみを特徴として用いても良い。即ち、動きベクトルの特徴として用いるものは特に限定するものではなく、動きベクトル間の類似性を求めることができるのであれば、何れの特徴を用いても良い。
【００９１】
図６に戻ってステップＳ６０５では、被写体領域抽出部３０５は、ステップＳ５０１で撮影画像取込部３０２が取得した現実空間画像からステップＳ６０４で抽出した被写体領域の領域をマスクしたマスク画像のデータを、上記被写体領域データとして生成する。
【００９２】
ここで、ステップＳ６０５における処理の詳細について説明する。図１１は、上記ステップＳ６０５における処理の詳細を示すフローチャートである。なお、図１１のフローチャートは、現実空間画像中の画像座標（ｉ，ｊ）における画素について行う処理のフローチャートである。従って、実際にステップＳ６０５では、図１１のフローチャートに従った処理を、現実空間画像を構成する各画素について行うことになる。
【００９３】
ステップＳ１１０１では、被写体領域抽出部３０５は、画像座標（ｉ、ｊ）における画素が被写体領域として上記ステップＳ８０５で認識されたのであれば、配列Key_area(ｉ、ｊ)に「１」を書き込む。係る動作は、関数mask_func()を実行することでなされる。これにより、配列Key_area(ｉ、ｊ)は、画像座標（ｉ、ｊ）における画素が被写体領域を構成する画素であるか否かを示す値を格納する為の２次元配列となる。
【００９４】
そして、全てのｉ、ｊについて図１１のフローチャートに従った処理を行うことで、配列Key_areaには、現実空間画像を構成する各画素について「１」若しくは「０」が保持されることになる。係る配列Key_areaが、上記被写体領域データとなる。
【００９５】
なお、本実施形態では生成された被写体領域データが示すマスク画像はマスク領域内にノイズを含む場合がある。この場合は既存の凸閉方処理を行う。
【００９６】
一方、図６に戻って、ステップＳ６０６では、被写体領域抽出部３０５は、１フレーム前に生成した被写体領域データを、現フレームでも使用するものとして設定する。これは前述したように、動きベクトルから被写体領域を正常に抽出できない場合は前回生成したマスク画像で代用する処理である。しかし、ステップＳ６０６では、キー領域部分は常に更新し、追加領域のみ更新されていないマスク画像を示す被写体領域データを出力してもよい。キー領域部分を常に更新するということはキーカラーデータに基づいて領域を抽出するということである。従って係る処理を行えば、キー領域の形状（手の形状）は必ずキーカラーデータによって正確に抽出されることが保障される。
【００９７】
そして、ステップＳ６０５，Ｓ６０６の何れの処理の後も、図５のステップＳ５０３にリターンする。
【００９８】
次に、図５のステップＳ５０５における、複合現実空間の画像の生成処理の詳細について説明する。図１２は、上記ステップＳ５０５における、複合現実空間の画像の生成処理の詳細を示すフローチャートである。なお、図１２のフローチャートは、複合現実空間の画像中の画像座標（ｉ，ｊ）における画素について行う処理のフローチャートである。従って、実際にステップＳ５０５では、図１２のフローチャートに従った処理を、複合現実空間の画像を構成する各画素について行うことになる。
【００９９】
先ずステップＳ１２０１では、画像合成部３０８は、次のような処理を行う。即ち、ステップＳ５０１で撮影画像取込部３０２が取得したディジタルデータが示す現実空間画像において画像座標（ｉ，ｊ）の画素real（ｉ，ｊ）を、画像処理装置３００内のフレームメモリbuffer(i,j)に転送する。
【０１００】
次にステップＳ１２０２では、上記ステップＳ５０２で生成した被写体領域データが示すマスク画像のうち画像座標（ｉ、ｊ）に対応するデータＫｅｙ＿ａｒｅａ（ｉ，ｊ）を画像処理装置３００内のステンシルバッファstencil(i,j)に転送する。
【０１０１】
次にステップＳ１２０３では、画像合成部３０８は、stencil(i,j)＝０である場合には、上記ステップＳ５０４で生成した仮想空間画像において画像座標（ｉ，ｊ）の画素CGI(i,j)を、フレームメモリbuffer(i,j)に上書きする。一方、画像合成部３０８は、stencil(i,j)＝１である場合には、フレームメモリbuffer(i,j)に対しては何も処理しない。即ち、被写体領域については、仮想空間画像の重畳対象外とする。
【０１０２】
そして、全てのｉ、ｊについて図１２のフローチャートに従った処理を行うことで、フレームメモリbufferには、複合現実空間の画像が生成されることになる。そして、ステップＳ５０６では、この複合現実空間の画像を映像信号としてＨＭＤ３９０が有する表示部３０９に送出する。
【０１０３】
以上の説明により本実施形態によれば、現実空間画像上に仮想空間画像を重畳させる際、現実空間画像中に「手」と「腕」とが被写体として含まれている場合は、この被写体は常に仮想空間画像よりも手前に表示されるように、重畳処理を制御することができる。
【０１０４】
図１３は、本実施形態によって生成される複合現実空間の画像の一例を示す図である。図１３に示した複合現実空間の画像１３０１は、現実空間画像、仮想空間画像がそれぞれ図２に示した現実空間画像２０１、仮想空間画像２０２である場合に生成されるものである。図１３に示す如く、手の領域１５０ａはもちろんのこと、手の領域１５０ａとは異なる画素値を有する腕の領域１５０ｂさえも、仮想空間画像２０２の手前に表示することができる。
【０１０５】
［第２の実施形態］
第１の実施形態の冒頭でも述べたように、被写体の領域は、「手」の領域と「腕」の領域とをマージしたものに限定するものではなく、どのような領域をマージして被写体の領域を形成しても良い。即ち、以下の説明は、被写体の領域が異なる複数の画素値で表示されるようなものであれば、どのような被写体の領域でも良い。
【０１０６】
例えば、ユーザが手で把持している現実物体を追加領域として判断して被写体領域を決定しても良い。これにより、ユーザの手、腕に加えて、手で把持している現実物体をも、仮想空間画像の手前に表示することができる。
【０１０７】
この場合、第１の実施形態において、ステップＳ８０５における処理を以下のように変更すれば良い。
【０１０８】
第１の実施形態では、ステップＳ８０５において２つの判断基準を設けていた。本実施形態ではそのうちの１つの判断基準を次のような判断基準に変更する。
【０１０９】
具体的には、追加領域が現実空間画像の端の領域に属しているかどうかの判定をなくす。これは、手で把持される現実物体が必ずしも現実空間画像の端にかかっているわけではないためである。
【０１１０】
本実施形態ではその代わりの判定処理として、キー領域と追加領域（ステップＳ８０５の判定済みの領域）とをマージすることで得られる被写体領域が現実空間画像の端にかかっているかどうかを基準として判定を行う。
【０１１１】
これより手に把持されていない領域の誤認識を回避する。
【０１１２】
［第３の実施形態］
第１，２の実施形態では、キー領域と追加領域とを毎フレーム毎に算出し、それらに基づいて被写体領域を決定した。即ち、キー領域と追加領域とに基づいて被写体領域を求める処理をフレーム毎に行っていた。本実施形態では、初期領域を指定するためのみキー領域と追加領域とを算出し、その後の被写体領域の更新は自動輪郭抽出処理によって行う。
【０１１３】
本実施形態では、初期登録された被写体領域を安定して毎回更新することが可能となる。ここでいう安定とは、例えば新しくキー領域に含まれる現実物体が現れても変わらない領域を抽出可能ということである。ここで、本実施形態では、第１、２の実施形態とステップＳ５０２における処理のみが異なる。
【０１１４】
図１４は、本実施形態で行う、ステップＳ５０２における処理のフローチャートである。図１４に示すフローチャートは、図６に示したフローチャートからステップＳ６０３における処理と、ステップＳ６０６における処理とが削除されている。そして代わりに、ステップＳ６０４とステップＳ６０５との間に、ステップＳ１４０１の動的輪郭対象登録の処理と、ステップＳ１４０２の動的輪郭抽出の処理が追加されている。
【０１１５】
ステップＳ１４０１では、被写体領域抽出部３０５は、ステップＳ６０４で抽出された被写体領域を動的輪郭抽出の対象として登録する。
【０１１６】
次にステップＳ１４０２では、被写体領域抽出部３０５は、ステップＳ１４０１で登録された被写体領域の動的輪郭抽出を行う。動的輪郭抽出はスネークなどの既存のアルゴリズムを用いればよい。動的輪郭抽出は既存の技術であるので説明は省略する。
【０１１７】
ステップＳ６０５では、被写体領域抽出部３０５は、ステップＳ１４０１で抽出された被写体領域に基づきマスク画像（被写体領域データ）を生成して出力する。
【０１１８】
［第４の実施形態］
上記実施形態では、撮像部３０１が撮像した現実空間画像から算出される動きベクトルのみから被写体領域を特定した。しかし、被写体領域の特定は係る方法に限定するものではない。例えば、現実空間画像から算出される動きベクトルを、撮像部３０１の位置および姿勢の変化から生じる動きベクトルを用いて補正することで得られる動きベクトルから被写体領域を特定してもよい。
【０１１９】
撮像部３０１が移動または回転する場合、現実空間画像のみから算出される動きベクトルでは、被写体領域を抽出する際に誤差が生じやすい。なぜならば、現実空間画像のみから算出される動きベクトルは、被写体の動きベクトルだけではなく撮像部３０１の動きベクトルをも含んでいるからである。例えば、被写体の動きとは逆の方向に撮像部３０１が動いた場合、被写体の動きベクトルのいくつかを打ち消してしまう可能性がある。
【０１２０】
そこで本実施形態では、現実空間画像から算出される動きベクトルから、撮像部３０１の位置および姿勢変化から生じる動きベクトルの影響を差し引くことで、被写体の動きベクトルを算出する。そして、その算出結果としての動きベクトルから被写体領域を特定する。この場合、第１の実施形態においてステップＳ５０２における処理を以下のように変更すればよい。
【０１２１】
第１の実施形態では、ステップＳ５０２内の、更にステップＳ６０２では、現実空間画像からのみ動きベクトルを算出するとした。本実施形態では、動きベクトルの算出方法を下記のように変更する。
【０１２２】
図１６は、ステップＳ６０２において本実施形態で行う処理のフローチャートである。本実施形態ではステップＳ６０２では、撮像部３０１（撮像装置）の位置および姿勢の変化に基づいて、現実空間画像からのみ動きベクトルを補正する。
【０１２３】
ステップＳ１５０１では、動きベクトル検出部３０４は、現実空間画像から動きベクトルを算出する。ステップＳ１５０１における処理は、第１の実施形態で説明したステップＳ６０２における処理と同じである。
【０１２４】
次に、ステップＳ１５０２では、動きベクトル検出部３０４は、撮像部３０１の姿勢変化による動きベクトル（姿勢変化分動きベクトル）の情報を用いて、ステップＳ１５０１で算出された動きベクトルを補正する。
【０１２５】
より詳しくは、先ず、動きベクトル検出部３０４は、位置姿勢計測部３０６から撮像部３０１の姿勢情報を得る。ここで、動きベクトル検出部３０４は、予め前フレームにおける撮像部３０１の位置および姿勢情報を保持しているとする。動きベクトル検出部３０４は、前フレームにおける撮像部３０１の姿勢情報と現フレームにおける撮像部３０１に姿勢情報とから、姿勢の変化量を算出する。この姿勢変化量から、姿勢変化によって生じる動きベクトル（姿勢変化分動きベクトル）を求める。なお、動きベクトルの算出技術は周知の技術であるので、これについての詳細な説明は省略する。なお、ここで姿勢変化とは、撮像部３０１のレンズ中心を軸として光軸が回転することをいう。
【０１２６】
次に、算出された姿勢変化分動きベクトルを、撮像部３０１の画像平面に射影することで、画像上での動きベクトルとして変換する。
【０１２７】
そして動きベクトル検出部３０４は、画像平面に射影された姿勢変化分動きベクトルを用いて、ステップＳ１５０１で算出された動きベクトルを補正する。係る補正は以下の式に基づいて行う。
【０１２８】
M’=M−Rv・I    （式１）
ここで、M’は姿勢変化分動きベクトルを現実空間画像内の動きベクトルから差し引いた動きベクトルを表す行列、Mは現実空間画像から算出された動きベクトルを表す行列である。また、Rvは画像平面上に射影された姿勢変化ベクトル、Iは単位行列（行列Mと大きさが同じ行列）である。
【０１２９】
このように、現実空間画像から算出された動きベクトルから姿勢変化による動きベクトルを減じる。
【０１３０】
図１６に戻って、次に、ステップＳ１５０３では、動きベクトル検出部３０４は、撮像部３０１の位置変化による動きベクトル（位置変化分動きベクトル）の情報を用いて、ステップＳ１５０１で算出された動きベクトルを補正する。
【０１３１】
より詳しくは、先ず、動きベクトル検出部３０４は、位置姿勢計測部３０６から撮像部３０１の位置情報を得る。動きベクトル検出部３０４は、前フレームにおける撮像部３０１の位置情報と現フレームにおける撮像部３０１の位置情報とから、位置の変化量を算出する。この位置変化量から、位置変化によって生じる動きベクトルを求める。なお位置変化とは、撮像部３０１のレンズ中心を軸として並進移動した場合の位置変化のことをいう。
【０１３２】
次に、位置変化分動きベクトルを、撮像部３０１の画像平面に射影することで、画像上での動きベクトルとして変換する。ここで、位置変化分動きベクトルを画像平面に射影する際は、位置変化分動きベクトルの画像平面射影とは異なり、被写体までの奥行き情報を考慮する必要がある。なぜならば、画像平面上に射影される位置変化分動きベクトルは、被写体までの奥行き距離に応じて異なるからである。具体的には、被写体までの距離が大きくなるにつれて、位置変化分動きベクトルの大きさは大きくなる。
【０１３３】
従って、動きベクトル検出部３０４は、画像平面上に射影される位置変化分動きベクトルを算出するために被写体までの奥行き距離を測定する。
【０１３４】
本実施形態では、被写体はステレオビデオカメラから成るＨＭＤ３９０によって撮像されているので、ステレオマッチング法により奥行き距離を測定する。ステレオマッチング法は周知の技術であるので、これについての説明は省略する。
【０１３５】
本実施形態では、奥行き距離の測定をステレオマッチング法によって行うとしているが、係る方法に限定するものではない。例えば、奥行き距離の測定を赤外式距離測定カメラを用いて行っても良い。即ち、距離を測定できる方法であればどのような方法を用いても良い。また、位置変化分動きベクトルを算出するために、ユーザが奥行き距離を設定するようにしても良い。
【０１３６】
奥行き距離が測定されると、動きベクトル検出部３０４は、画像平面上に射影される位置変化分動きベクトルの算出を以下の式に基づいて行う。
【０１３７】
Tv＝f・t／z    （式２）
ここで、Tvは画像平面上に射影された位置変化分動きベクトル、fは撮像部３０１のレンズから結像面までの距離である。また、tは撮像部３０１の位置変化によって生じた動きベクトル、zは被写体までの奥行き距離である。
【０１３８】
図１７は、画像平面上に射影された位置変化分動きベクトルTvを算出する原理を示す図である。図１７では、現在よりも一つ前のフレームから現在のフレームに変わった際に撮像部３０１が並進移動した（tだけ並進移動した）例を示している（被写体は固定とする）。また、図１７では、画像面を規定するＸＹ座標軸のうち、Ｘ軸方向に撮像部３０１が並進した場合を示している。ここでは説明を簡単にするため、Ｘ軸方向のみの移動を想定しているが、ここで説明する方法の原理は、移動方向がＹ軸成分を有する場合にも適用可能であることは言うまでもない。
【０１３９】
図１７において、O1は現在よりも一つ前のフレーム（前フレーム）おける撮像部３０１のレンズ中心を示す。O2は現在のフレーム（現フレーム）における撮像部３０１のレンズ中心を示す。P(ｘ、ｚ)は、撮像部３０１で撮像された被写体の一点（計測点）を示す。xはx座標の値、zはz座標の値を示す。ここで表現されている座標系は、前フレームにおける撮像部３０１のレンズ中心を原点とした現実空間の座標系である。つまり、zは撮像部３０１からの奥行き値である。
【０１４０】
X1は、前フレームにおいて計測点を画像平面上に投影したときのx座標である。X2は現フレームおいて計測点を画像平面上に投影したときのx座標である。つまり、X2-X1が、画像平面上での撮像部３０１の動きベクトルといえる。その他は（式２）と同じである。
【０１４１】
図１７から分かるように、位置変化分動きベクトルtが与えられると、撮像部３０１のレンズから結像面までの距離fと被写体までの距離zとの相似関係から、画像平面上の位置変化分動きベクトルTvを算出することが可能である。
【０１４２】
そして動きベクトル検出部３０４は、画像平面に射影された位置変化分動きベクトルを用いて、ステップＳ１５０１で算出された動きベクトルを補正する。係る補正は下記の式に基づいて行う。
【０１４３】
M”＝M’−Tv・I
M”は、位置変化分動きベクトルを動きベクトルM’から差し引いた動きベクトルを表す行列、M’はステップＳ１５０２の処理において補正された動きベクトルを表す行列である。また、Tvは、画像平面上に射影された位置変化ベクトル、Iは単位行列（行列Mと大きさが同じ行列）である。このように、現実空間画像から算出された動きベクトルから、撮像部３０１の位置変化による動きベクトルを減じる。
【０１４４】
最終的に、撮像部３０１が撮像した現実空間画像から算出された動きベクトルから、撮像部３０１の位置及び姿勢によって生じた動きベクトルを減ずることとなる。従って、結果的に撮像部３０１による動きベクトルを排除した被写体の動きベクトルを算出することとなる。
【０１４５】
本実施形態では、このようにして撮像部３０１の動きの影響を補正した動きベクトルに基づいて、被写体領域の特定を行う。ここで、本実施形態では、位置及び姿勢の両方の変化によって生じる動きベクトル分を補正するとした。しかし、動きベクトルの補正を、撮像部３０１の姿勢変化のみを考慮して行ってもよいし、移動変化のみを考慮して行っても良い。
【０１４６】
また、本実施形態では、撮像部３０１の動きによって生じる動きベクトルを、位置姿勢計測部３０６から得られる位置及び姿勢情報を用いて求めた。しかし、係る動きベクトルは他の方法でもって求めても良い。即ち、必ずしも、磁気センサや光学式センサなどのセンサシステムから得られる位置及び姿勢情報に基づいて動きベクトルを求める必要はない。例えば、撮像部３０１が撮像した画像を用いて、撮像部３０１の動きによって生じる動きベクトルを求めるようにしても良い。
【０１４７】
例えば、撮像部３０１が撮像した画面全体の動きベクトルの平均を、撮像部３０１の動きにより生じた動きベクトルと仮定するようにしても良い。また、撮像した画像を領域分割することで背景領域が分かっている場合には、背景領域に生じている動きベクトルを、撮像部３０１の動きにより生じた動きベクトルと仮定するようにしても良い。
【０１４８】
［第５の実施形態］
上記各実施形態では、図３に示した画像処理装置３００を構成する各部はハードウェアで構成されているものとして説明したが、記憶装置３１０、撮影画像取込部３０２を除く他の各部はソフトウェアプログラムの形態で実現させても良い。その場合、記憶装置３１０、撮影画像取込部３０２を有するコンピュータに、係るソフトウェアプログラムをインストールし、係るソフトウェアプログラムを、このコンピュータが有するＣＰＵが実行することで、各部の動作を実現させることになる。即ち、画像処理装置３００には、一般のＰＣ（パーソナルコンピュータ）などのコンピュータを適用させることができる。
【０１４９】
図１５は、画像処理装置３００に適用可能なコンピュータのハードウェア構成例を示す図である。
【０１５０】
ＣＰＵ１５０１は、ＲＡＭ１５０２やＲＯＭ１５０３に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行うと共に、画像処理装置３００が行うものとして上述した各処理を実行する。
【０１５１】
ＲＡＭ１５０２は、外部記憶装置１５０６からロードされたプログラムやデータ、Ｉ／Ｆ（インターフェース）１５０７を介して外部から受信した各種のデータ等を一時的に記憶するためのエリアを有する。更にＲＡＭ１５０２は、ＣＰＵ１５０１が各種の処理を実行する際に用いるワークエリアも有する。更に、ＲＡＭ１５０２は、上記フレームメモリ、ステンシルバッファとしても機能する。即ち、ＲＡＭ１５０２は、各種のエリアを適宜提供することができる。
【０１５２】
ＲＯＭ１５０３は、本コンピュータの設定データや、ブートプログラムなどを格納する。
【０１５３】
操作部１５０４は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をＣＰＵ１５０１に対して入力することができる。例えば、処理の終了指示等はこの操作部１５０４を用いて入力することができる。
【０１５４】
表示部１５０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１５０１による処理結果を画像や文字で表示することができる。例えば、画像処理装置３００が行うものとして上述した各処理を本コンピュータ（ＣＰＵ１５０１）が実行することで生成された複合現実空間の画像を表示することができる。
【０１５５】
外部記憶装置１５０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１５０６には、ＯＳ（オペレーティングシステム）や、画像処理装置３００が行うものとして上述した各処理をＣＰＵ１５０１に実行させるためのプログラムやデータなどが保存されている。係るプログラムには、動きベクトル検出部３０４、キー領域抽出部３０３、被写体領域抽出部３０５、画像合成部３０８、画像生成部３０７のそれぞれの機能をＣＰＵ１５０１に実行させるためのプログラムが含まれている。また、外部記憶装置１５０６は記憶装置３１０も兼ねている。外部記憶装置１５０６に保存されているプログラムやデータは、ＣＰＵ１５０１による制御に従って適宜ＲＡＭ１５０２にロードされる。そしてＣＰＵ１５０１はこのロードされたプログラムやデータを用いて処理を実行するので、本コンピュータは、画像処理装置３００が行うものとして上述した各処理（上述の各フローチャートに従った処理）を実行することになる。
【０１５６】
Ｉ／Ｆ１５０７は、上述のＨＭＤ３９０や位置姿勢計測部３０６を本コンピュータに接続する為のもので、ＨＭＤ３９０、位置姿勢計測部３０６とはこのＩ／Ｆ１５０７を介して信号の送受信を行う。Ｉ／Ｆ１５０７は、撮影画像取込部３０２も兼ねている。
【０１５７】
１５０８は上述の各部を繋ぐバスである。
【０１５８】
なお、画像処理装置３００に適用可能なコンピュータのハードウェア構成については図１５に示した構成に限定しない。例えば、本コンピュータにグラフィックスカード（ボード）を取り付け、係るグラフィックスカードが仮想空間画像の生成や、複合現実空間の画像の生成を行うようにしても良い。
【０１５９】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１６０】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６２】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図１】
2013077307.tif 000003
【図２】
2013077307.tif 000004
【図３】
2013077307.tif 000005
【図４】
2013077307.tif 000006
【図５】
2013077307.tif 000007
【図６】
2013077307.tif 000008
【図７】
2013077307.tif 000009
【図８】
2013077307.tif 000010
【図９】
2013077307.tif 000011
【図１０】
2013077307.tif 000012
【図１１】
2013077307.tif 000013
【図１２】
2013077307.tif 000014
【図１３】
2013077307.tif 000015
【図１４】
2013077307.tif 000016
【図１５】
2013077307.tif 000017
【図１６】
2013077307.tif 000018
【図１７】
2013077307.tif 000019