(57)【要約】【課題】  現実空間の画像において、仮想空間の画像を重畳させない領域を適切に特定するための技術を提供すること。【解決手段】  画像内における被写体の領域のサイズをメモリに格納しておき、現実空間の画像を取得し（Ｓ１１０１）、取得した画像内で被写体の色と略同じ色を有する領域を抽出し、抽出された領域のうち何れの領域が被写体の領域であるのかを、メモリに格納されたデータが示すサイズに基づいて判断し（Ｓ１１０５）、現実空間の画像上に仮想空間の画像を重畳する際、現実空間の画像上において被写体の領域上には仮想空間の画像の重畳を禁止する（Ｓ１１０６）。【選択図】  図１１
2006343953.tif 000002
【特許請求の範囲】
【請求項１】
現実空間の画像上に仮想空間の画像を重畳させることで合成画像を生成する生成工程と、当該合成画像を外部に出力する出力工程と、を備える画像処理方法であって、
現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像内で、所定の被写体の色と略同じ色を有する領域を抽出する抽出工程と、
前記抽出工程で抽出された領域のうち何れの領域が前記所定の被写体の領域であるのかを判断する判断工程と、
前記取得工程で取得した現実空間の画像上に仮想空間の画像を重畳する際には、当該現実空間の画像上において前記判断工程で判断したことにより特定した領域上には当該仮想空間の画像の重畳を禁止するよう前記生成工程における処理を制御する制御工程と
を備えることを特徴とする画像処理方法。
【請求項２】
更に、
撮像装置でもって前記所定の被写体を撮像することで得られる画像を取得する工程と、
前記取得した画像内における前記所定の被写体の領域のサイズを求める工程と、
前記計算したサイズを示すデータをメモリに格納する格納制御工程と
を備え、
前記抽出工程では、前記取得工程で取得した画像内で前記所定の被写体の色と略同じ色を有する第１の領域、前記所定の被写体の色と略同じ色を有していない第２の領域を区別する為のマスク画像を生成し、
前記判断工程では、前記マスク画像内で前記第１の領域に相当する領域のうち前記メモリに格納されたデータが示すサイズ以上のサイズを有する領域のみを前記第１の領域に相当する領域、当該領域以外を前記第２の領域に相当する領域とすべく、前記マスク画像を更新し、当該更新後のマスク画像において前記第１の領域に相当する領域、及び前記第２に相当する領域のうち最も大きい面積を有する領域以外の領域を前記所定の被写体の領域、前記マスク画像内で前記所定の被写体の領域以外の領域を前記第２の領域に相当する領域とすべく、前記マスク画像を更新し、
前記制御工程では、前記更新されたマスク画像上における前記所定の被写体の領域に対応する前記取得工程で取得した現実空間の画像の領域上には仮想空間の画像の重畳を禁止するよう前記生成工程における処理を制御する
ことを特徴とする請求項１に記載の画像処理方法。
【請求項３】
現実空間の画像上に仮想空間の画像を重畳させることで合成画像を生成する生成手段と、当該合成画像を外部に出力する出力手段と、を備える画像処理装置であって、
現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像内で、所定の被写体の色と略同じ色を有する領域を抽出する抽出手段と、
前記抽出手段によって抽出された領域のうち何れの領域が前記所定の被写体の領域であるのかを判断する判断手段と、
前記取得手段が取得した現実空間の画像上に仮想空間の画像を重畳する際には、当該現実空間の画像上において前記判断手段が判断したことにより特定した領域上には当該仮想空間の画像の重畳を禁止するよう前記生成手段による処理を制御する制御手段と
を備えることを特徴とする画像処理装置。
【請求項４】
コンピュータに請求項１又は２に記載の画像処理方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間の画像上に、仮想空間の画像を重畳させた合成画像を生成する為の技術に関するものである。
【背景技術】
【０００２】
実写風景を背景として、その上にコンピュータグラフィックス（以下、ＣＧと記述）を重畳して体験者に対して提示し、この体験者にあたかもその場に仮想の物体が存在するかのような体験を行わせる複合現実感(Mixed Reality:MR)の技術がある。
【０００３】
このＭＲ技術を用いて臨場感豊かな体験を実現するためには、背景となる実写風景の上にただ単純にＣＧを重畳して表示するだけではなく、体験者が実際にＣＧで描画される仮想物体（以下、単に仮想物体と言うことがある）に触ったり操作する（しているように体感させる）といったインタラクションが重要になってくる。そして、このようなインタラクションを実現するめには、仮想物体よりも手前（前景）に仮想物体を操作する体験者の手など（以下、被写体という）を表示することが必要である。なぜなら、仮想物体よりも手前にあるべき被写体が仮想物体によって隠されてしまうと、仮想物体との距離感や現実感が破綻し、臨場感を損ねてしまうからである。
【０００４】
このような課題を解決するために、出願人は特許文献１において、最前景とすべき被写体の画像をＣＧ画像によって隠さないようにする技術を提案した。この技術は、背景と被写体とを実写画像として取得し、この実写画像から、予め手作業でシステムに登録した、ＣＧ画像より手前に表示すべき被写体（被写体検出情報としての色情報を有する領域）を被写体領域として抽出し、被写体領域にはＣＧ画像の描画を禁止するものである。この技術により、最前景となるべき被写体がＣＧ画像で隠されることなく、仮想物体よりも手前にあるように表示され、臨場感の高い複合現実感体験を行うことが可能となる。
【０００５】
また、実写画像とコンピュータグラフィックス画像とを合成する従来技術として、背景領域を特定の色によって着色し、クロマキー合成によってこの背景領域をコンピュータグラフィックス画像と置き換えるものがある。このような従来技術では実写画像は背景以外の被写体に限定されていた。
【特許文献１】特開２００３−２９６７５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１における複合現実感体験システムでは、体験者の見ている現実の風景に被写体と類似した色情報を持つ領域がほとんど存在しない場合に良好に動作する。しかしながら、体験者の見ている現実の風景に、他の体験者が存在する風景では、本来ＣＧ画像の奥にいるべき他の体験者の被写体領域（手や顔）までもＣＧ画像の描画を禁止してしまい、他の体験者の被写体領域がＣＧ画像よりも手前にあるかのように表示され、体験者の現実感を損なうことがあった。
【０００７】
このような技術的背景から、体験者の手や指定した被写体領域のみ抽出するために被写体領域を実写画像より抽出した後、抽出した領域から目的とする領域（体験者の手など）を選択し、選択した領域のみに対してＣＧ画像を描画しない処理を施し、複合現実感画像を生成することが望まれている。
【０００８】
本発明は以上の問題に鑑みてなされたものであり、現実空間の画像において、仮想空間の画像を重畳させない領域を適切に特定するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００１０】
即ち、現実空間の画像上に仮想空間の画像を重畳させることで合成画像を生成する生成工程と、当該合成画像を外部に出力する出力工程と、を備える画像処理方法であって、
現実空間の画像を取得する取得工程と、
前記取得工程で取得した画像内で、所定の被写体の色と略同じ色を有する領域を抽出する抽出工程と、
前記抽出工程で抽出された領域のうち何れの領域が前記所定の被写体の領域であるのかを判断する判断工程と、
前記取得工程で取得した現実空間の画像上に仮想空間の画像を重畳する際には、当該現実空間の画像上において前記判断工程で判断したことにより特定した領域上には当該仮想空間の画像の重畳を禁止するよう前記生成工程における処理を制御する制御工程と
を備えることを特徴とする。
【００１１】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００１２】
即ち、現実空間の画像上に仮想空間の画像を重畳させることで合成画像を生成する生成手段と、当該合成画像を外部に出力する出力手段と、を備える画像処理装置であって、
現実空間の画像を取得する取得手段と、
前記取得手段が取得した画像内で、所定の被写体の色と略同じ色を有する領域を抽出する抽出手段と、
前記抽出手段によって抽出された領域のうち何れの領域が前記所定の被写体の領域であるのかを判断する判断手段と、
前記取得手段が取得した現実空間の画像上に仮想空間の画像を重畳する際には、当該現実空間の画像上において前記判断手段が判断したことにより特定した領域上には当該仮想空間の画像の重畳を禁止するよう前記生成手段による処理を制御する制御手段と
を備えることを特徴とする。
【発明の効果】
【００１３】
本発明の構成により、現実空間の画像において、仮想空間の画像を重畳させない領域を適切に特定することができる。
【発明を実施するための最良の形態】
【００１４】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１５】
図１は、ユーザ（体験者）に現実空間と仮想空間とが融合した複合現実空間を体験させるための、本実施形態に係るシステムの機能構成を示すブロック図である。また、本実施形態に係るシステムでは、現実空間の画像上に仮想空間の画像を重畳させる際に、現実空間の画像中に所定の被写体が含まれている場合には、この被写体の領域に関しては常に仮想空間の画像よりも手前に表示するよう、重畳処理を制御する。なお、本実施形態ではこの所定の被写体の一例として「手」を用いる。
【００１６】
図１に示す如く、本実施形態に係るシステムは、ビデオカメラ１０１、画像入力部１０２、被写体領域抽出部１０３、カメラ位置姿勢センサ１０４、カメラ位置姿勢計測部１０５、画像生成部１０６、仮想空間データベース１０７、画像合成部１０８、頭部搭載型画像表示装置（以下、ＨＭＤと呼称）１０９、被写体色情報登録部１１０、被写体領域選択部１１１により構成されている。
【００１７】
また、図２は、本実施形態に係るシステムを使用している様子を示す図である。以下、図１，２を用いて、本実施形態に係るシステムの構成について説明する。
【００１８】
なお、本システムにおける体験者は一人、または複数人を想定している。つまり、図２の体験者２０１が椅子２０２に着座している状況で、他の体験者２０８が体験者２０１から見える状態で、体験者２０１は複合現実感空間体験を行うなどの状況が考えられる。
【００１９】
ビデオカメラ１０１は現実空間の動画像を撮像するものであり、図２に示す如く、ＨＭＤ１０９に取り付けられている。ビデオカメラ１０１の取り付け位置は、体験者２０１が自身の頭部２０３にＨＭＤ１０９を装着した場合に、体験者２０１の目の位置に近い位置である。また、ビデオカメラ１０１の取り付け方向は、体験者２０１が自身の頭部２０３にＨＭＤ１０９を装着した場合に、体験者２０１の視線方向に略一致するような方向である。従ってこのビデオカメラ１０１は、体験者２０１の目の位置姿勢に応じて見える現実空間の画像を撮像するためのものとすることができる。以下の説明では、このビデオカメラ１０１を「視点」と呼称する場合がある。このビデオカメラ１０１により撮像された各フレームの画像（現実空間の画像）は順次、図１に示す画像入力部１０２に入力される。画像入力部１０２は、受けた画像のデータを画像合成部１０８に出力すると共に、被写体領域抽出部１０３にも出力する。
【００２０】
カメラ位置姿勢センサ１０４は、ビデオカメラ１０１の位置姿勢を計測するものであり、図２に示す如く、ビデオカメラ１０１に取り付けられている。このカメラ位置姿勢センサ１０４には例えば磁気センサや光学式センサ、超音波式センサなどが適用可能である。これらのセンサによる位置姿勢の計測技術に関しては周知のものであるので、これに関する説明は省略する。
【００２１】
カメラ位置姿勢センサ１０４により計測されたビデオカメラ１０１の位置姿勢を示す信号は図１に示すカメラ位置姿勢計測部１０５に入力され、カメラ位置姿勢計測部１０５により、この信号に基づいて、ビデオカメラ１０１の位置姿勢を示すデータが得られる。このデータは画像生成部１０６に出力すると共に、被写体領域選択部１１１にも出力する。
【００２２】
このように、ＨＭＤ１０９にはビデオカメラ１０１、カメラ位置姿勢センサ１０４が備わっており、体験者２０１の頭部２０３には、このようなＨＭＤ１０９が装着されている。また図２に示す如く、この体験者２０１は、椅子２０２に座っている。なお、同図では体験者２０１は椅子２０２に座っているものとしているが、体験者２０１が任意の姿勢をとっていたとしても、以下の説明の本質は特に変わらない。
【００２３】
図１に戻って、画像生成部１０６は、カメラ位置姿勢計測部１０５から受けたデータ、及び仮想空間データベース１０７に格納されているデータ（仮想空間データ）を用いて、ビデオカメラ１０１から見える仮想空間の画像を生成する。仮想空間データベース１０７には、仮想空間を構成する各仮想物体の画像を生成するために必要なデータが格納されており、例えば、仮想物体がポリゴンでもって構成されている場合には、各ポリゴンの法線ベクトルデータやポリゴンの色データ、ポリゴンを構成している各頂点の座標データ、また、仮想物体に対してテクスチャマッピングする場合には、テクスチャデータなどがこの仮想空間データベース１０７に格納されていることになる。
【００２４】
図２の場合には、２０７が仮想物体であるので、この仮想物体２０７の画像を生成するためのデータが仮想空間データベース１０７に格納されていることになる。この場合、画像生成部１０６は、ビデオカメラ１０１から見える仮想物体２０７の画像を生成することになる。なお、所定の位置姿勢を有する視点から見える仮想空間の画像を生成する為の技術については周知のものであるので、これに関する説明は省略する。
【００２５】
画像生成部１０６が生成した仮想空間の画像データは画像合成部１０８に出力する。画像合成部１０８は、画像入力部１０２から受けた現実空間の画像上に、画像生成部１０６から受けた仮想空間の画像を重畳させた合成画像、即ち、複合現実空間の画像を生成し、ＨＭＤ１０９に出力する。これにより、体験者２０１の眼前には視点の位置姿勢に応じて見える複合現実空間の画像が表示されることになる。
【００２６】
ここで、体験者２０１がＨＭＤ１０９を介して複合現実空間の画像を観察している最中に、自身の手２０５や他の体験者２０８の手２１０がビデオカメラ１０１の視界に入った場合、当然、手２０５、２１０はビデオカメラ１０１によって撮像されるし、ＨＭＤ１０９に表示される複合現実空間の画像上には手２０５、２１０が表示されることになる。
【００２７】
このような場合、観察者１０１にとっては、自身の手２０５のみが前景となることが好ましいため、現実空間の画像上の手２０５の領域上には仮想空間の画像は重畳させないようにするが必要である。図２の場合、体験者２０１がＨＭＤ１０９を介して複合現実空間の画像を観察する際、現実物体において自身の手２０５のみを前景、それ以外の現実物体２０６ａ、２０６ｂ、他の体験者２０８の手２１０を背景とする。
【００２８】
そのための構成として本実施形態に係るシステムは、被写体領域抽出部１０３、被写体色情報登録部１１０、被写体領域選択部１１１を備える。以下では、被写体領域抽出部１０３、被写体色情報登録部１１０、被写体領域選択部１１１の各部について説明する。
【００２９】
被写体色情報登録部１１０には、手２０５の色を示す色データ（色情報）が予め登録されている。ここで、この色データについて説明する。被写体色情報登録部１１０に登録されている色データは、多次元色空間における座標値として記述することができる。一般によく知られている表色系の種類には、RGB、YIQ、YCbCr、YUV、HSV、Lu*v*、La*b*など様々なものがある（日本規格協会  JIS色彩ハンドブック）。
【００３０】
対象とする被写体の色彩特性に合わせて、適当なものを任意に用いてよいが、照明条件の相違による被写体の色彩特性の変化を相殺するために、輝度情報と色相情報とに分離する形式の表色系を用い、色相情報だけを用いることが望ましい。このような表色系の代表的なものとしてはYIQやYCbCrが一般的である。本実施形態では、YCbCr表色系を用いる。
【００３１】
図４は、YCbCr表色系のCbCr平面における色彩分布の概要を示す図である。横軸４０１がCr、縦軸４０２がCbである。中央４０３は白色の領域であり、中央から周辺に向かって彩度が高くなっている。
【００３２】
図５は、被写体の色情報をYcbCr表色系のCbCr平面における色空間座標分布５０１として表現した例を示す図である。
【００３３】
被写体の色情報は背景の色情報に含まれないものであることが望ましいが、条件によっては被写体と背景とを色によって識別しにくい場合も考えられる。このような場合には、例えば手に着色した手袋を装着するなど、被写体に対して都合の良い色を割り当てると良い。
【００３４】
被写体色情報登録部１１０における色情報の登録方法としては、被写体をカメラなどで撮像することで、この被写体の画像を取得し、取得した画像を構成する各画素の画素値をCbCr平面での分布として記述した上で、色空間の各軸の座標範囲を指定する方法や、色空間を各軸について標本化し、その各点について被写体であるか否かの値を登録する方法、いわゆるルックアプテーブルを用いる等、様々な方法が考え得る。
【００３５】
図１に戻って、被写体領域抽出部１０３は、画像入力部１０２から受けた画像を構成する各画素値を参照し、被写体色情報登録部１１０に登録されたデータが示す『手２０５の色』と略同じ色を示す画素値を有する画素を「手２０５の領域を構成する画素」であると判断する。より詳しくは、画像入力部１０２から受けた画像を構成する各画素が手２０５の領域を構成する画素であるか否かを判断し、各画素について判断結果を割り当てる。例えば手２０５の領域を構成する画素については「１」を割り当て、手２０５の領域を構成しない画素については「０」を割り当てる。
【００３６】
図３は、手２０５の色に略同じ色を有する現実物体が手２０５のみであるような現実空間の画像３０１が画像入力部１０２から得られた場合に、この画像３０１から手２０５の領域を抽出する処理を説明する図である。
【００３７】
画像３０１を構成する各画素について手２０５の領域を構成するものであるのか否かをチェックする処理を行うと、各画素について「１」若しくは「０」の値が割り当てられるので、結果として３０２で示す画像を生成することができる。画像３０２において「白」で示した領域は「１」が割り当てられた画素群で構成された領域で、手２０５の領域を構成する画素群である。一方、画像３０２において「黒」で示した領域は「０」が割り当てられた画素群で構成された領域で、手２０５の領域を構成していない画素群である。このような画像３０２は所謂マスク画像である。このように、このマスク画像を生成することで、現実空間の画像中における手２０５の領域を抽出することができる。
【００３８】
図６は、被写体領域抽出部１０３が行う処理のフローチャートである。図６のフローチャートは、画像入力部１０２から受けた画像において、画像座標が（ｉ，ｊ）の位置にある画素に対する処理のフローチャートであるので、実際には被写体領域抽出部１０３は、図６のフローチャートに従った処理を、画像入力部１０２から受けた画像を構成する各画素について行うことになる。
【００３９】
先ず、画像入力部１０２から受けた画像内で画像座標が（ｉ，ｊ）の位置にある画素のＲＧＢ値をＹＣｒＣｂ値に変換する（ステップＳ６０１）。画像座標が（ｉ，ｊ）の位置にある画素のＲ値をＲ（ｉ、ｊ）、Ｇ値をＧ（ｉ、ｊ）、Ｂ値をＢ（ｉ、ｊ）とすると、ＲＧＢ値をＹＣｒＣｂ値に変換する為の関数color_conversion()でもってＲ（ｉ、ｊ）、Ｇ（ｉ、ｊ）、Ｂ（ｉ、ｊ）を変換し、Ｙ値、Ｃｒ値、Ｃｂ値を得る。
【００４０】
次に、ステップＳ６０１で得たＹ、Ｃｒ、Ｃｂのそれぞれの値が表現する色が、被写体色情報登録部１１０に登録されている色データが示す色に略同じであるのか否かを判断する。例えば同図の場合には、ステップＳ６０１で得たＹ、Ｃｒ、Ｃｂのそれぞれの値が表現する色が、被写体色情報登録部１１０に登録されている色データが示す色に略同じであるのか否かを、関数mask_func()でもって判断する。そして判断結果は、配列mask(ｉ、ｊ)に代入される。この配列mask(ｉ、ｊ)は、画像座標が（ｉ，ｊ）の位置にある画素が被写体の領域を構成するものであるのか否かを示す値を格納する為のものであり、上記マスク画像において画像座標が（ｉ，ｊ）の位置にある画素の画素値（１もしくは０）を格納する為のものである。
【００４１】
関数mask_func()による判断方法としては、例えば、Ｃｂ、Ｃｒで規定されるCbCr平面上における座標値（Ｃｒ、Ｃｂ）が、被写体色情報登録部１１０に登録されている被写体の色分布５０１の領域に属するか否かを判定する。判定結果は、例えば、被写体色分布５０１に属するのであれば１、属さないのであれば０と二値で表してもよいが、属する度合いを０から１までの連続値でもって表現するようにしても良い。
【００４２】
なお、本実施形態では、画像入力部１０２から受けた画像を構成する各画素の画素値がＲＧＢで表されているものとしているが、YIQやYUVで表されていても良く、その場合には、ステップＳ６０１における処理を省略し、ステップＳ６０２において（ｃｂ、ｃｒ）の代わりにそれぞれIQ空間やUV空間における座標値を用いればよい。
【００４３】
以上説明したように、被写体領域抽出部１０３は、画像入力部１０２から受けた画像を構成する各画素が、「手」の領域を構成するものであるのか否かを示すマスク画像を生成する。
【００４４】
しかしここで、被写体領域抽出部１０３は、現実空間の画像において『手２０５の色』と略同じ色を有する画素については、マスク画像上では画素値が「１」となるので、この現実空間の画像内に手２０５の色と略同じ色を有する現実物体が手２０５以外にも含まれている場合には、この現実物体の領域を構成する画素もまた、マスク画像上では画素値が「１」となることに注意されたい。このような場合、マスク画像内には複数の白の領域が点在する事になる。
【００４５】
従って、被写体領域選択部１１１は、被写体色情報登録部１１０が生成したマスク画像中の白領域のうち何れの領域が手２０５の領域であるのかを特定する処理を行う。この判断処理の詳細については後述する。
【００４６】
そして被写体領域選択部１１１は、マスク画像内で手２０５の領域を特定すると、この領域を白の領域にする。即ち、手２０５の領域を構成する画素の画素値を「１」にする。また、手２０５の領域以外の領域を黒の領域にする。即ち、手２０５の領域以外の領域を構成する画素の画素値を「０」にする。これにより、マスク画像において、手２０５の領域を構成する各画素の画素値は「１」となり、手２０５の領域以外の領域を構成する各画素の画素値は「０」となる。即ち、このマスク画像により、手２０５の領域と手２０５以外の領域とをマスク画像を構成する各画素の画素値でもって区別することができる。このようにして生成したマスク画像は画像合成部１０８に出力する。
【００４７】
図７は、現実空間の画像上に仮想空間の画像を重畳させる際に、被写体領域選択部１１１が生成したマスク画像を用いて、手２０５の領域上に仮想空間の画像は重畳させないようにする為の処理を説明する図である。このような処理は画像合成部１０８によって行われる。
【００４８】
同図において、３０１は、画像入力部１０２から受けた画像である。画像３０１には、体験者２０１の手２０５が写っている。一方、７０１は、画像生成部１０６が生成した仮想空間の画像である。ここで画像合成部１０８によって画像３０１上に画像７０１を重畳させる際に、画像合成部１０８は、マスク画像３０２を参照する。即ち、画像３０１上に画像７０１を重畳させる際に、画像７０１において画像３０２中の手の領域（白で示した領域）に相当する部分は画像３０１上には描画しないようにする。これにより、画像７０２に示す如く、手２０５の領域上には常に仮想空間の画像は描画されないので、手２０５の領域は常に前景とすることができる。
【００４９】
このような画像合成部１０８による処理を、同処理のフローチャートを示す図１０を用いて説明する。図１０のフローチャートは、画像入力部１０２から受けた画像、画像生成部１０６から受けた画像、において、画像座標が（ｉ，ｊ）の位置にある画素に対する処理のフローチャートであるので、実際には画像合成部１０８は、図１０のフローチャートに従った処理を、i,jが取りうる範囲全てについて行うことになる。
【００５０】
ステップＳ１００では、画像入力部１０２から受けた現実空間の画像で画像座標が（ｉ，ｊ）の位置にある画素の画素データreal(i,j)をフレームメモリbuffer(i,j)に転送する。次に、ステップＳ２００では、被写体領域選択部１１１によって生成されたマスク画像で画像座標が（ｉ，ｊ）の位置にある画素の画素データmask(i,j)をマスク処理のための画像メモリであるステンシルバッファに転送する。
【００５１】
ステップＳ３００では、画像生成部１０６から受けた仮想空間の画像で画像座標が（ｉ，ｊ）の位置にある画素の画素データCGI(i,j)を上記フレームメモリbuffer(i,j)に転送するのであるが、その際にはステンシルバッファ内の画素データmask(i,j)を参照する。
【００５２】
そして、mask(i,j)＝０であれば、real(i,j)は手２０５の領域外の領域を構成する画素データであるので、仮想空間の画像の画素データCGI(i,j)を上記フレームメモリbuffer(i,j)に転送する。これにより、フレームメモリbuffer(i,j）には、現実空間の画像の画素データreal(i,j)上に仮想空間の画像の画素データCGI(i,j)が重畳された状態で格納されていることになる。
【００５３】
一方、mask(i,j)＝１であれば、real(i,j)は手２０５の領域内を構成する画素データであるので、仮想空間の画像の画素データCGI(i,j)は上記フレームメモリbuffer(i,j)には転送しない。これにより、フレームメモリbuffer(i,j）には、現実空間の画像の画素データreal(i,j)のみが格納されていることになり、仮想空間の画像の画素データCGI(i,j)は重畳されない。
【００５４】
そして画像合成部１０８は、このようにしてフレームメモリ内に格納された画像を複合現実空間画像としてＨＭＤ１０９に出力する。
【００５５】
次に、被写体領域選択部１１１が、被写体領域抽出部１０３が生成したマスク画像を参照し、マスク画像内における白の領域のうち、何れの領域が手２０５の領域であるのかを判断する処理について説明する。
【００５６】
上述の通り、被写体領域抽出部１０３は、現実空間の画像内に手２０５の色と略同じ色を有する現実物体が含まれている場合には、この現実物体の領域を構成する画素もまた、手２０５の領域を構成する画素であると判断するので、マスク画像内には複数の白の領域が点在する事になる。このようなマスク画像を用いて複合現実空間画像を生成すると、仮想空間の画像においてマスク画像中の白の領域に対応するいくつかの箇所が現実空間の画像上に描画されないことになる。しかし、目的は被写体としての手２０５の領域のみが前景となればよいので、マスク画像内で手２０５の領域以外は黒の領域とする処理が必要となる。
【００５７】
図８は、このような目的のために、マスク画像において手２０５の領域以外の領域を黒の領域とする為の処理を説明する図である。同図の場合、マスク画像８０１には、被写体領域（手２０５の領域）８５０の外側と内側にノイズが生じている。外側のノイズは現実空間中で手２０５と誤認識した領域であり、内側のノイズは被写体領域８５０であるにも関わらず被写体領域８５０ではないと認識した領域である。
【００５８】
ステップＳ１において、まず外側のノイズを除去（被写体領域８５０外の白領域を黒領域に修正する）して、第１ノイズ除去画像８０２を得る。例えば、画像内の連結した領域の面積を算出する際によく用いられるラベリングの手法を用いて、白領域の面積（白領域を構成する画素数）を求め、求めた面積が所定の閾値以下であれば、この白領域は被写体領域８５０ではないと判断し、この白領域を構成する各画素の画素値を「０」にする。
【００５９】
ここで、この「所定の閾値」は体験者２０１に複合現実空間画像を提示する事前に求めておくものであり、例えば以下のようにして求める。
【００６０】
先ず、体験者２０１は上記ＨＭＤ１０９を自身の頭部２０３に装着した状態で、自身の手２０５でもって握り拳を作り、手を伸ばした状態で前に出す。そして、その状態をビデオカメラ１０１で撮影する。ビデオカメラ１０１によって撮像された画像は、体験者２０１の手２０５でもって作った握り拳を、ビデオカメラ１０１から見た場合に見える画像である。
【００６１】
オペレータはビデオカメラ１０１が撮像した現実空間の画像をコンピュータに入力すると共に、このコンピュータの表示装置の表示画面上に表示させる。そして表示されている画像上における握り拳の領域をマウスでなぞることによって手動でこの領域を指定する。そして指定した領域を構成している画素の数をこのコンピュータのＣＰＵによって計数し、計数した数を、上記「所定の閾値」とする。そして求めた「所定の閾値」はメモリ内に格納する。
【００６２】
このとき、オペレータが選択した領域を構成する各画素の画素値の平均値（Cb,Crの値）も同時に取得し、被写体色情報登録部１１０に登録する。これにより、より質の高い被写体色情報を登録することができる。
【００６３】
なお、以上の説明ではオペレータが手動で握り拳の領域を指定しているが、視点の位置姿勢を固定して背景差分によって握り拳の領域の面積および色情報を抽出してもよい。
【００６４】
以上のようにして、所定の閾値を求めることができる。よって、ステップＳ１では、握り拳のサイズよりも小さい白領域に関しては、手２０５の領域ではないと見なし、このような白領域を除去する。
【００６５】
これにより、第１のノイズ除去画像８０２に示す如く、被写体領域８５０の外側に点在していた白領域を除去することができる。なお、マスク画像内において被写体領域８５０内に黒領域が存在していない場合には、ステップＳ２以降の処理は不要となる。
【００６６】
次に、ステップＳ２ではステップＳ１で得られた第１ノイズ除去画像８０２を構成する各画素の画素値を反転する（画素値が「０」のものは「１」に反転し、画素値が「１」のものは「０」に反転する）処理を行う。これにより、ビット反転画像８０３が得られる。
【００６７】
次に、ステップＳ３では、ステップＳ２で得られたビット反転画像８０３に対し、再度ラベリングを行う。その結果、ビット反転画像８０３は最も大きな面積を持つ領域（ビット反転画像８０３において被写体領域８５０外の領域（被写体領域８５０内に点在している白領域は除く））と、それ以外の領域とに分類される。従って、最も大きな面積を持つ領域以外の領域を被写体領域８５０であると見なし、最も大きな面積を持つ領域以外の領域を構成する各画素の画素値を「０」にする。これにより、第２ノイズ除去画像８０４を得ることができる。この第２ノイズ除去画像８０４に示す如く、被写体領域８５０内に点在していた白領域を除去することができる。
【００６８】
そして、ステップＳ４では、ステップＳ３得られた第２ノイズ除去画像８０４を構成する各画素の画素値を反転する（画素値が「０」のものは「１」に反転し、画素値が「１」のものは「０」に反転する）処理を行う。これにより、ノイズ除去画像８０５が得られる。
【００６９】
従ってこのようなノイズ除去画像８０５をマスク画像として用いることで、画像合成部１０８において現実空間の画像上に仮想空間の画像を重畳させる際に、手２０５の領域上に仮想空間の画像を重畳させないようにすることができる。
【００７０】
なお、図８に示した処理例では、面積に対して閾値を設定することで手２０５の領域を特定する処理を行っているが、被写体の数が予め決まった個数Ｎである場合には、マスク画像内における白領域を面積の大きい順にみた場合に、上位Ｎ個を被写体領域であると判定し、他の被写体領域は削除するようにしてもよい。
【００７１】
また、肌色領域内部に生じる領域に対しても、別途閾値を設定して、その閾値以下になる領域は手の領域内に生じたノイズであると見なし、削除するようにしてもよい。ただし、その際に閾値は手の領域に対し、十分小さな値を設定する必要がある。
【００７２】
また、本実施形態では、一般的なラベリングのアルゴリズムを採用することで、マスク画像内における手２０５の領域以外の白領域を除去していたが、ラベリング以外のメジアンフィルタや、縮小・膨張処理といったアルゴリズムや、被写体領域の候補に対して凸閉方処理などを用いて被写体領域以外の白領域を除去するようにしても良く、好適な手段を任意に選択すればよい。
【００７３】
また、以上の処理では、マスク画像内における手２０５の領域を特定する処理を白領域の面積に基づいて行っているが、２眼ステレオの原理を利用し、左右の被写体領域の重心位置でマッチングをとることにより奥行き情報を算出し、カメラ位置姿勢計測部１０５で得られる情報と比較して被写体領域の選択を行っても良い。２眼ステレオによる奥行き推定の手法は公知な技術であるため詳細は省略する。
【００７４】
通常は上記手段のように一定の閾値を与えてノイズ除去を行うことで、提示画像の品質を向上することができる。
【００７５】
また、本実施形態では上述の通り、被写体として「手」を用いたが、これ以外のものを被写体としても良いことはいうまでもない。
【００７６】
図１２は、画像入力部１０２、被写体領域抽出部１０３、画像生成部１０６、仮想空間データベース１０７、画像合成部１０８、被写体色情報登録部１１０、被写体領域選択部１１１の各部の機能を有する画像処理装置のハードウェア構成を示すブロック図である。なお、この画像処理装置としては、例えば、一般のＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）等が適用可能である。
【００７７】
１２０１はＣＰＵで、ＲＡＭ１２０２やＲＯＭ１２０３に格納されているプログラムやデータを用いて本装置全体の制御を行うと共に、図１１に示すフローチャートに従った処理を実行する。
【００７８】
１２０２はＲＡＭで、外部記憶装置１２０６からロードされたプログラムやデータを一時的に記憶するためのエリア、Ｉ／Ｆ（インターフェース）１２０７を介して外部から受信したデータを一時的に記憶するためのエリア、ＣＰＵ１２０１が各種の処理を実行する際に用いるワークエリア、そして上記フレームバッファやステンシルバッファなど、各種のエリアを適宜提供することができる。
【００７９】
１２０３はＲＯＭで、本装置の設定データや、ブートプログラムなどを格納する。
【００８０】
１２０４は操作部で、キーボードやマウスなどにより構成されており、本装置の操作者が操作することで、各種の指示をＣＰＵ１２０１に対して入力することができる。
【００８１】
１２０５は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１２０１による処理結果を画像や文字などでもって表示することができる。
【００８２】
１２０６は外部記憶装置で、ハードディスクドライブ装置に代表される大容量情報記憶装置であって、ここにＯＳ（オペレーティングシステム）や、図１１に示すフローチャートに従った処理をＣＰＵ１２０１に実行させるためのプログラムやデータ等が保存されている。なお、上記仮想空間データベース１０７、被写体色情報登録部１１０、もまた、この外部記憶装置１２０６内に設けられている。そして、これらは必要に応じて適宜ＣＰＵ１２０１による制御に従ってＲＡＭ１２０２にロードされる。
【００８３】
１２０７はＩ／Ｆで、ここに上記ＨＭＤ１０９やビデオカメラ１０１、カメラ位置姿勢計測部１０５等が接続され、このＩ／Ｆ１２０７を介して本装置はＨＭＤ１０９やビデオカメラ１０１、カメラ位置姿勢計測部１０５等とデータ通信を行うことができる。なお、同図ではＩ／Ｆは１つとしているが、ＨＭＤ１０９、ビデオカメラ１０１、カメラ位置姿勢計測部１０５のそれぞれに対して別個にＩ／Ｆを設けるようにしても良い。
【００８４】
１２０８は上述の各部を繋ぐバスである。
【００８５】
図１１は、以上説明した、複合現実空間画像を生成してＨＭＤ１０９に出力する処理のフローチャートである。各ステップにおける処理は上述の通りであるので、ここでは簡単に説明する。
【００８６】
先ず、ビデオカメラ１０１により撮像された現実空間の画像がフレーム毎に順次Ｉ／Ｆ１２０７を介して本装置内に入力されるので、ＣＰＵ１２０１は入力された画像のデータをＲＡＭ１２０２若しくは外部記憶装置１２０６に格納する（ステップＳ１１０１）。
【００８７】
一方、カメラ位置姿勢センサ１０４が計測したビデオカメラ１０１の位置姿勢を示すデータがＩ／Ｆ１２０７を介して本装置内に入力されるので、ＣＰＵ１２０１は入力された位置姿勢を示すデータをＲＡＭ１２０２若しくは外部記憶装置１２０６に格納する（ステップＳ１１０２）。
【００８８】
次に、ＣＰＵ１２０１は、外部記憶装置１２０６内に設けられている仮想空間データベース１０７内に格納されている上記仮想空間データを用いて、仮想空間を構成している各仮想物体を生成して配置し、そしてこのような仮想空間を、ステップＳ１１０２で取得した位置姿勢を有する視点から見た場合に見える画像を生成する（ステップＳ１１０３）。
【００８９】
次に、ＣＰＵ１２０１は、上記被写体領域抽出部１０３として機能し、現実空間画像内において、手２０５の色と略同じ色を有する領域を示すマスク画像を生成する（ステップＳ１１０４）。
【００９０】
次に、ＣＰＵ１２０１は、生成したマスク画像内で手２０５の色と同じ色を有する領域として抽出された各領域のうち、手２０５の領域、手２０５の領域外を特定する処理を行う（ステップＳ１１０５）。より具体的には、例えば、マスク画像において、手２０５の領域内を構成する各画素の画素値を「１」とし、手２０５の領域外を構成する各画素の画素値を「０」とする。
【００９１】
そして、ステップＳ１１０５で生成したマスク画像を用いて、ステップＳ１１０１で取得した現実空間の画像上に、ステップＳ１１０３で生成した仮想空間の画像を重畳させることで、手２０５の領域を前景とした複合現実空間画像を生成する（ステップＳ１１０６）。
【００９２】
そして生成した複合現実空間画像のデータをＩ／Ｆ１２０７を介してＨＭＤ１０９に対して出力する（ステップＳ１１０７）。
【００９３】
＜変形例＞
上記閾値決定方法は、体験者の手が視界から消えかかる段階において面積が閾値以下になった途端、視界から消えてしまい、体験者のリアリティを損ねてしまうことがあった。そこで、固定閾値により生じる現象を軽減するために、体験者２０１および他の体験者２０８の位置情報を利用し、動的に閾値を決定する。
【００９４】
まず、カメラ位置姿勢計測部１０５より体験者２０１および、他の体験者２０８の頭部の位置を計測する。そして、計測した位置情報より２者間の距離を算出し、算出した距離に応じて面積の閾値を動的に変更する。閾値は、体験者２０１の手を伸ばした状態の拳の大きさ（画像上の面積）を最大値とし、最小値はシステムが動作する環境（背景が被写体領域と同様の色情報をどの程度有しているか）に依存してオペレータが決定する。
【００９５】
ここで、閾値の最大値、最小値を求める以上の処理は以下の仮定を前提としている。
【００９６】
即ち、他の体験者２０８の肌色領域を、体験者２０１と他の体験者２０８との位置が十分に離れた状態で、体験者２０１から見た場合、体験者２０１の拳の大きさよりも肌色領域の面積は大きくなることはない。つまり、体験者２０１と他の体験者２０８との距離が十分に離れている場合は、体験者２０１の拳の大きさをノイズの閾値（最大値）として、それよりも小さい肌色領域はノイズと見なすことができる。
【００９７】
また、閾値の制御方法に関しては、体験者２０１とその他の体験者２０８との距離が近づいた場合には閾値を徐々に増加させる。このとき距離と閾値との関係式に関しては、例えば、距離に係数をかけて線形に閾値を変更させる式や、距離の二乗に比例して閾値を非線形的に変更させる式などが考えられる。
【００９８】
また、カメラ位置姿勢計測部１０５の位置情報を利用することによって、体験者の視野内に他の体験者が存在するかどうかを判定し、存在しない場合は特定の面積を持つ領域は体験者の被写体領域であるという仮定を設け、オペレータの設定した閾値を採用するなどしてもよい。
【００９９】
画像情報より閾値以下の面積を持つ被写体領域をノイズと見なすことができるが、閾値以上の面積を持つ被写体領域をノイズ、または体験者の被写体領域かを判断するのは困難である。
【０１００】
例えば、被写体を体験者の手としているときに、他の体験者の顔が体験者の手よりも大きくビデオカメラ１０１に映ってしまう場合などである。
【０１０１】
図９は、体験者の視界から他の体験者を見た場合の色情報のみから被写体として判断される領域の分布、および表示領域と非表示領域を説明する図である。図９の右側の手９０１は体験者自身の手であり、体験者の手は表示したい領域である。そして、図９の左側に表示されている他の体験者の頭部９０２、および、他の体験者の手や靴９０３（女性の場合は足の色）などが表示しない領域である。
【０１０２】
ビデオカメラ１０１で獲得した画像から被写体領域を抽出し、非表示領域を選択除去するためには画像情報のみでは容易に除去することができない。そこで、画像情報に加え、位置姿勢情報も利用する。
【０１０３】
カメラ位置姿勢計測部１０５より他の体験者の頭部の位置姿勢情報を獲得し、他の体験者の頭部を覆うように球、または卵型形状のマスクオブジェクトを３次元空間中に配置する。このとき配置するマスクオブジェクトの形状はシステムの構築環境に応じて好適な任意の形状を選択すると良い。体験者のマスクオブジェクトによって他の体験者の頭部は、被写体領域中のこの領域をマスクキングすることができる。したがって、他の体験者の顔部分に配置したマスクオブジェクトによって、他の体験者の頭部に生じる被写体領域を除去することができる。
【０１０４】
本変形例では、他の体験者の頭部のみにマスクオブジェクトを配置したが、他の体験者の手などに位置姿勢センサを取り付けられるシステム環境であれば、他の体験者の手などを覆うような形でマスクオブジェクトを配置する。これにより、他の体験者の手などをロバストに検出し非表示領域にすることができる。
【０１０５】
＜変形例２＞
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１０６】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０７】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０８】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１０９】
【図１】ユーザ（体験者）に現実空間と仮想空間とが融合した複合現実空間を体験させるための、本実施形態に係るシステムの機能構成を示すブロック図である。
【図２】本発明の実施形態に係るシステムを使用している様子を示す図である。
【図３】手２０５の色に略同じ色を有する現実物体が手２０５のみであるような現実空間の画像３０１が画像入力部１０２から得られた場合に、この画像３０１から手２０５の領域を抽出する処理を説明する図である。
【図４】YCbCr表色系のCbCr平面における色彩分布の概要を示す図である。
【図５】被写体の色情報をYcbCr表色系のCbCr平面における色空間座標分布５０１として表現した例を示す図である。
【図６】被写体領域抽出部１０３が行う処理のフローチャートである。
【図７】現実空間の画像上に仮想空間の画像を重畳させる際に、被写体領域選択部１１１が生成したマスク画像を用いて、手２０５の領域上に仮想空間の画像は重畳させないようにする為の処理を説明する図である。
【図８】マスク画像において手２０５の領域以外の領域を黒の領域とする為の処理を説明する図である。
【図９】体験者の視界から他の体験者を見た場合の色情報のみから被写体として判断される領域の分布、および表示領域と非表示領域を説明する図である。
【図１０】画像合成部１０８による処理のフローチャートである。
【図１１】複合現実空間画像を生成してＨＭＤ１０９に出力する処理のフローチャートである。
【図１２】画像入力部１０２、被写体領域抽出部１０３、画像生成部１０６、仮想空間データベース１０７、画像合成部１０８、被写体色情報登録部１１０、被写体領域選択部１１１の各部の機能を有する画像処理装置のハードウェア構成を示すブロック図である。
【図１】
2006343953.tif 000003
【図２】
2006343953.tif 000004
【図３】
2006343953.tif 000005
【図４】
2006343953.tif 000006
【図５】
2006343953.tif 000007
【図６】
2006343953.tif 000008
【図７】
2006343953.tif 000009
【図８】
2006343953.tif 000010
【図９】
2006343953.tif 000011
【図１０】
2006343953.tif 000012
【図１１】
2006343953.tif 000013
【図１２】
2006343953.tif 000014