(57)【要約】【課題】  クロマキー色を有する領域を含む画像にノイズが生じても、この画像を他の画像を用いて補正することで、このノイズを除去し、正確なクロマキー合成を実現する為の技術を提供すること。【解決手段】  左目色判定部１１０１、右目色判定部１１０２は、仮想空間画像からマスク画像を生成する。マスク画像中のクロマキー領域と非クロマキー領域との境界部分にエラー箇所が存在する場合、左目マスク補正部１１０８、右目マスク補正部１１１０は、仮想空間画像の他に他の仮想空間画像に基づいて生成した他のマスク画像を用いてエラー箇所を補正する。【選択図】  図４
2008276318.tif 000002
【特許請求の範囲】
【請求項１】
現実空間画像を取得する現実空間画像の取得手段と、
予め設定されたクロマキー色を有する画素群で構成されているクロマキー領域を含む仮想空間画像を取得する仮想空間画像の取得手段と、
前記仮想空間画像に含まれるクロマキー色に基づいて、前記現実空間画像に対する前記仮想空間画像のクロマキー合成を行う合成手段と、
前記合成手段によるクロマキー合成処理で生成した合成画像を、表示装置に対して出力する出力手段と
を備える画像処理装置であって、
前記クロマキー領域と非クロマキー領域との境界部分にエラー箇所が存在するか否かを、前記仮想空間画像の取得手段が前記仮想空間画像の他に取得した他の仮想空間画像に基づいて判断する判断手段と、
前記エラー箇所が存在すると前記判断手段が判断したエラー箇所を、他の仮想空間画像のクロマキー領域に基づいて補正する補正手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記仮想空間画像に含まれるクロマキー色に基づいて、クロマキー領域と非クロマキー領域とを示すビットの集合で構成されるマスク画像を生成する生成手段を更に有し、
前記判断手段は、前記マスク画像と、前記他の仮想空間画像のマスク画像である他のマスク画像とに基づいて、判断することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記判断手段は、
前記マスク画像の中のクロマキー領域と非クロマキー領域との境界部分における注目位置における境界部分の傾きと、前記他のマスク画像の中のクロマキー領域と非クロマキー領域との境界部分において前記注目位置に対応する対応位置における境界部分の傾きとの差を求める手段と、
前記差が予め設定された閾値以上である場合、前記マスク画像、前記他のマスクの何れかにエラー箇所が存在すると判断し、前記差が予め設定された閾値よりも小さい場合、エラー箇所は存在しないと判断する手段と、
前記エラー箇所が存在すると判断した場合、前記注目位置の近傍における境界部分の傾きの変化、前記対応位置の近傍における境界部分の傾きの変化を求める手段と、
前記注目位置の近傍における境界部分の傾きの変化が、前記対応位置の近傍における境界部分の傾きの変化よりも小さい場合、前記対応位置がエラー箇所であると判断し、
前記注目位置の近傍における境界部分の傾きの変化が、前記対応位置の近傍における境界部分の傾きの変化よりも大きい場合、前記注目位置がエラー箇所であると判断する手段と
を備えることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記補正手段は、
前記対応位置がエラー箇所である場合、前記対応位置における境界部分の傾きが、前記注目位置の近傍における境界部分の傾きとなるように、前記他のマスク画像を補正し、
前記注目位置がエラー箇所である場合、前記注目位置における境界部分の傾きが、前記対応位置の近傍における境界部分の傾きとなるように、前記マスク画像を補正する
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記判断手段は、
前記マスク画像の中のクロマキー領域と非クロマキー領域との境界部分の当該マスク画像の中における位置と、前記他のマスク画像の中のクロマキー領域と非クロマキー領域との境界部分の当該他のマスク画像の中における位置との位置差を、ライン毎に求め、求めたライン毎の位置差の変化量を求める手段と、
前記変化量が予め設定された閾値以上である場合、前記マスク画像、前記他のマスクの何れかにエラー箇所が存在すると判断し、前記差が予め設定された閾値よりも小さい場合、エラー箇所は存在しないと判断する手段と、
前記エラー箇所が存在すると判断した場合、前記マスク画像の中のクロマキー領域と非クロマキー領域との境界部分における注目位置の近傍における境界部分の傾きの変化、前記他のマスク画像の中のクロマキー領域と非クロマキー領域との境界部分において前記注目位置に対応する対応位置の近傍における境界部分の傾きの変化を求める手段と、
前記注目位置の近傍における境界部分の傾きの変化が、前記対応位置の近傍における境界部分の傾きの変化よりも小さい場合、前記対応位置がエラー箇所であると判断し、
前記注目位置の近傍における境界部分の傾きの変化が、前記対応位置の近傍における境界部分の傾きの変化よりも大きい場合、前記注目位置がエラー箇所であると判断する手段と
を備えることを特徴とする請求項２に記載の画像処理装置。
【請求項６】
前記補正手段は、
前記対応位置がエラー箇所である場合、前記対応位置のラインにおける前記境界部分の位置が、当該ラインよりも前のラインについて求めた位置差に応じた位置差だけ、前記注目位置からずれた位置となるように、前記他のマスク画像を補正し、
前記注目位置がエラー箇所である場合、前記注目位置のラインにおける前記境界部分の位置が、当該ラインよりも前のラインについて求めた位置差に応じた位置差だけ、前記対応位置からずれた位置となるように、前記マスク画像を補正する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記マスク画像は、前記仮想空間画像の取得手段が取得したユーザの一方の目に対する仮想空間画像から前記生成手段が生成したものであり、
前記他のマスク画像は、前記仮想空間画像の取得手段が取得したユーザの他方の目に対する仮想空間画像から前記生成手段が生成したものである
ことを特徴とする請求項２乃至６の何れか１項に記載の画像処理装置。
【請求項８】
前記マスク画像は、前記仮想空間画像の取得手段が取得した注目フレームの仮想空間画像から前記生成手段が生成したものであり、
前記他のマスク画像は、前記仮想空間画像の取得手段が取得した、前記注目フレームよりも前の仮想空間画像から前記生成手段が生成したものである
ことを特徴とする請求項２乃至６の何れか１項に記載の画像処理装置。
【請求項９】
前記画像処理装置は、頭部装着型表示装置であり、
前記仮想空間画像の取得手段は、
外部装置から無線で送信された仮想空間画像を、圧縮された状態で受信する受信手段と、
前記受信手段が受信した、圧縮された仮想空間画像を伸張する伸張手段と
を備えることを特徴とする請求項１乃至８の何れか１項に記載の画像処理装置。
【請求項１０】
更に、
前記受信手段による受信のための通信にエラーが生じたか否かを判断する手段と、
前記通信にエラーが生じていない場合には、前記補正手段による補正を禁止する手段と
を備えることを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
更に、
前記注目位置と、前記対応位置との位置差に応じて前記閾値の増減を制御する手段を備えることを特徴とする請求項３又は５に記載の画像処理装置。
【請求項１２】
現実空間画像を取得する現実空間画像の取得工程と、
予め設定されたクロマキー色を有する画素群で構成されているクロマキー領域を含む仮想空間画像を取得する仮想空間画像の取得工程と、
前記仮想空間画像に含まれるクロマキー色に基づいて、前記現実空間画像に対する前記仮想空間画像のクロマキー合成を行う合成工程と、
前記合成工程によるクロマキー合成処理で生成した合成画像を、表示装置に対して出力する出力工程と
を備える画像処理方法であって、
前記クロマキー領域と非クロマキー領域との境界部分にエラーが存在するか否かを、前記仮想空間画像の取得工程で前記仮想空間画像の他に取得した他の仮想空間画像に基づいて判断する判断工程と、
前記エラー箇所が存在すると前記判断工程で判断したエラー箇所を、他の仮想空間画像のクロマキー領域に基づいて補正する補正工程と
を備えることを特徴とする画像処理方法。
【請求項１３】
コンピュータに請求項１２に記載の画像処理方法を実行させるためのコンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロマキー合成技術に関するものである。
【背景技術】
【０００２】
クロマキー合成とは、特定色を有する領域以外の領域を抜き出した画像を、もう一つの画像上に上書きすることにより、画像同士を合成する技術である。
【０００３】
クロマキー合成を正確に行うためには、特定色を有する領域を正確に検出することが必要である。特に特定色を有する領域の輪郭線は、合成した画像を美しく見せるためには正確に検出することが求められる。
【０００４】
従来、クロマキー合成の為に、輪郭線を正確に検出するための技術として、特許文献１に開示されているように、特定色を有する領域の大体の位置を色情報から求め、その輪郭を輝度情報から求めるような手法が提案されていた。
【特許文献１】特開平4-35279号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のクロマキー合成では、特定色を有する領域を含む画像にノイズが無いことを仮定しており、ノイズのある場合には適用が難しかった。
【０００６】
画像にノイズが生じる例としては、画像を無線で転送する場合が挙げられる。画像を無線で伝送した場合、伝送中に空電ノイズを拾ってしまうと、画像に欠損（ノイズ）が生じてしまう。
【０００７】
しかも、画像中にノイズがあると、画像の色が本来の色と異なってしまい、クロマキー合成時に特定色を有する領域を検出する際、この検出に失敗してしまうことがある。そのため、正常にクロマキー合成を行うことができないことがあった。
【０００８】
本発明は以上の問題に鑑みてなされたものであり、クロマキー色を有する領域を含む画像にノイズ等が生じても、この画像を他の画像を用いて補正することで、このノイズ等を除去し、正確なクロマキー合成を実現する為の技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００１０】
即ち、現実空間画像を取得する現実空間画像の取得手段と、
予め設定されたクロマキー色を有する画素群で構成されているクロマキー領域を含む仮想空間画像を取得する仮想空間画像の取得手段と、
前記仮想空間画像に含まれるクロマキー色に基づいて、前記現実空間画像に対する前記仮想空間画像のクロマキー合成を行う合成手段と、
前記合成手段によるクロマキー合成処理で生成した合成画像を、表示装置に対して出力する出力手段と
を備える画像処理装置であって、
前記クロマキー領域と非クロマキー領域との境界部分にエラー箇所が存在するか否かを、前記仮想空間画像の取得手段が前記仮想空間画像の他に取得した他の仮想空間画像に基づいて判断する判断手段と、
前記エラー箇所が存在すると前記判断手段が判断したエラー箇所を、他の仮想空間画像のクロマキー領域に基づいて補正する補正手段と
を備えることを特徴とする。
【００１１】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００１２】
即ち、現実空間画像を取得する現実空間画像の取得工程と、
予め設定されたクロマキー色を有する画素群で構成されているクロマキー領域を含む仮想空間画像を取得する仮想空間画像の取得工程と、
前記仮想空間画像に含まれるクロマキー色に基づいて、前記現実空間画像に対する前記仮想空間画像のクロマキー合成を行う合成工程と、
前記合成工程によるクロマキー合成処理で生成した合成画像を、表示装置に対して出力する出力工程と
を備える画像処理方法であって、
前記クロマキー領域と非クロマキー領域との境界部分にエラーが存在するか否かを、前記仮想空間画像の取得工程で前記仮想空間画像の他に取得した他の仮想空間画像に基づいて判断する判断工程と、
前記エラー箇所が存在すると前記判断工程で判断したエラー箇所を、他の仮想空間画像のクロマキー領域に基づいて補正する補正工程と
を備えることを特徴とする。
【発明の効果】
【００１３】
本発明の構成によれば、クロマキー色を有する領域を含む画像にノイズ等が生じても、この画像を他の画像を用いて補正することで、このノイズ等を除去したクロマキー合成を実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下、添付図面を参照し、本発明の好適な実施形態について詳細に説明する。
【００１５】
［第１の実施形態］
本実施形態で用いるＣＧ（コンピュータグラフィックス）画像（仮想空間画像）には、予め設定されたクロマキー色を有する画素群で構成されている領域（クロマキー領域）が存在している。そして本実施形態では、ユーザの右目に提示するために生成したＣＧ画像（仮想空間画像）と現実空間画像とをクロマキー合成したものを、このユーザの右目に対して提示する。更に、左目に提示するために生成したＣＧ画像（仮想空間画像）と現実空間画像とをクロマキー合成したものを、このユーザの左目に対して提示する。
【００１６】
そして本実施形態では、係る構成を前提として、次のような構成を有していることを特徴とする。即ち、一方の目に提示する為に生成したＣＧ画像中のクロマキー領域と非クロマキー領域との境界部分に、クロマキー処理時にエラー箇所が生じても、それぞれの目に提示するＣＧ画像は類似しているという性質を利用し、それぞれの目に対して良好なクロマキー合成結果を提示する。
【００１７】
図１は、本実施形態に係るシステムを、ユーザが使用している様子を示す図である。係るシステムの構成自体は、周知のMR(Mixed Reality)システムである。
【００１８】
図１において１０００は、画像処理装置としてのビデオシースルー型のＨＭＤ（ヘッドマウントディスプレイ）であり、周知の頭部装着型表示装置で構成することができる。２０００は、係るＨＭＤ１０００を頭部に装着しているユーザである。ＨＭＤ１０００の詳細な構成については後述するが、ＨＭＤ１０００には、ユーザ２０００の右目に画像を提示するための画面、左目に画像を提示するための画面が設けられている。従ってユーザ２０００は、右目、左目でそれぞれの画面を見ることで、それぞれの目に対応した画像を眼前に見ることができる。
【００１９】
３０００はコンピュータ（計算機）であり、ユーザ２０００の右目に提示する為のＣＧ画像（右目用ＣＧ画像）、左目に提示する為のＣＧ画像（左目用ＣＧ画像）を生成する。そして生成したそれぞれのＣＧ画像を無線でＨＭＤ１０００に送信する。なお、ＣＧ画像を送信する際、無線帯域を小さくするために、送信するそれぞれのＣＧ画像を圧縮してから送信する。圧縮されたＣＧ画像はＨＭＤ１０００側で伸張してから用いる。
【００２０】
ここで、計算機３０００によって圧縮された状態で右目用ＣＧ画像、左目用ＣＧ画像を、無線でＨＭＤ１０００に送信し、ＨＭＤ１０００側でこれらのＣＧ画像を受信して取り扱う場合、取り扱うＣＧ画像にノイズが重畳されている（画像情報の欠損も含む）ケースが生じうる。これは上述の通り、無線でＣＧ画像を送信したり、圧縮されたＣＧ画像を伸張したりすることに起因する。特に、ＣＧ画像中には上述の通り、クロマキー領域が存在している。従って、係るクロマキー領域と非クロマキー領域との境界部分にノイズが生じる（境界部分にエラー箇所が生じる）と、このＣＧ画像を現実空間画像とクロマキー合成しても、係る境界部分における合成結果にもノイズが生じてしまう。
【００２１】
本実施形態では、右目用ＣＧ画像と左目用ＣＧ画像とが類似した画像であるという性質を利用し、例え一方側のＣＧ画像におけるクロマキー領域と非クロマキー領域との境界部分にエラー箇所が生じても、他方のＣＧ画像を用いて係るエラー箇所を補正する。これにより、良好なクロマキー合成結果を得ることにある。
【００２２】
図３は、一般的なクロマキー合成処理を説明する図である。図３において３００は現実空間画像である。３０１はＣＧ画像で、斜線部分はクロマキー領域である。３０２は、ＣＧ画像３０１と現実空間画像３００とをクロマキー合成したことで得られる画像（合成画像）である。即ち、ＣＧ画像３０１を現実空間画像３００上に重ね合わせる場合に、クロマキー領域については透過させて合成させたものが、合成画像３０２となる。
【００２３】
図４は、ＨＭＤ１０００の機能構成を示すブロック図である。図４に示す如く、ＨＭＤ１０００は大まかにはＣＧ画像受信部１０１０、左目カメラ１００１、右目カメラ１００２、クロマキー合成部１１００、左目ＬＣＤ（液晶画面）１００３、右目ＬＣＤ１００４により構成されている。
【００２４】
図２は、ＨＭＤ１０００の外観例を示す図である。図２に示す如く、左目ＬＣＤ１００３、右目ＬＣＤ１００４のそれぞれの近傍位置にはそれぞれ、左目カメラ１００１、右目カメラ１００２が装着されている。左目カメラ１００１、右目カメラ１００２はそれぞれ、現実空間の動画像を撮像するものであり、撮像した各フレームの画像は、図４に示すクロマキー合成部１１００に入力される。
【００２５】
先ず、図４に示したＨＭＤ１０００の構成のうち、ＣＧ画像受信部１０１０について説明する。
【００２６】
図４に示す如く、ＣＧ画像受信部１０１０は、無線画像受信部１０１１、左目伸張部１０１２、右目伸張部１０１３により構成されている。
【００２７】
計算機３０００（外部装置）から無線で送信された、右目用ＣＧ画像（圧縮済み）、左目用ＣＧ画像（圧縮済み）は、無線画像受信部１０１１で受信される。無線画像受信部１０１１は受信した右目用ＣＧ画像、左目用ＣＧ画像をそれぞれ、右目伸張部１０１３、左目伸張部１０１２に転送する。
【００２８】
ここで、上述の通り、無線画像受信部１０１１が受信した右目用ＣＧ画像、左目用ＣＧ画像には、無線通信に起因したノイズが重畳されている可能性がある。また、無線画像受信部１０１１は、無線通信によって受信した情報に欠損が生じた場合には、周知の技術で係る欠損を補間したりするので、計算機３０００から送信したＣＧ画像と、無線画像受信部１０１１から送出されるＣＧ画像とには差が生じうる。
【００２９】
左目伸張部１０１２は、圧縮済みの左目用ＣＧ画像を伸張し、伸張後の左目用ＣＧ画像を、後段の左目色判定部１１０１、左目画像切り替え部１１０９に送出する。右目伸張部１０１３も同様に、圧縮済みの右目用ＣＧ画像を伸張し、伸張後の右目用ＣＧ画像を、後段の右目色判定部１１０２、右目画像切り替え部１１１１に送出する。
【００３０】
ここで、上述の通り、左目伸張部１０１２、右目伸張部１０１３のそれぞれが伸張したＣＧ画像には、画像伸張に起因するノイズが重畳されている可能性がある。
【００３１】
次に、クロマキー合成部１１００について説明する。図４に示す如く、クロマキー合成部１１００は、左目色判定部１１０１、右目色判定部１１０２、対応点検出部１１０３、左目傾き検出部１１０４、右目傾き検出部１１０５、誤り判定部１１０６、補正箇所判定部１１０７を有している。更に、クロマキー合成部１１００は、左目マスク補正部１１０８、左目画像切り替え部１１０９、右目マスク補正部１１１０、右目画像切り替え部１１１１を有する。
【００３２】
最初に、クロマキー合成部１１００の基本的な動作、即ち、ＣＧ画像に対するノイズを考慮せずに、従来通りのクロマキー合成処理を行う場合の、クロマキー合成部１１００の動作について、図４，５を用いて説明する。図５は、クロマキー合成部１１００が行うクロマキー合成処理を示す図である。
【００３３】
左目伸張部１０１２から送出された伸張済みの左目用ＣＧ画像は上述の通り、左目色判定部１１０１、左目画像切り替え部１１０９に対して送出される。
【００３４】
左目色判定部１１０１は、伸張済みの左目用ＣＧ画像を構成する各画素の画素値を参照し、参照した画素値が、予め設定されたクロマキー色を示すか否かをチェックする。そして、クロマキー色を示す画素値を有する画素に対してはビット「１」を割り当て、クロマキー色を示さない画素値を有する画素に対してはビット「０」を割り当てる。
【００３５】
例えば、画素値が８ビットで構成されている場合、クロマキー色をＲ＝０，Ｇ＝０，Ｂ＞２５０と規定しても良い。この場合、左目色判定部１１０１は、左目用ＣＧ画像を構成する各画素のうち、Ｒ＝０、Ｇ＝０、Ｂ＞２５０を満たす画素値を有する画素に対してはビット「１」を割り当て、満たさない画素値を有する画素に対してはビット「０」を割り当てる。即ち、左目色判定部１１０１は、左目用ＣＧ画像においてクロマキー領域内の画素の画素値を「１」、クロマキー領域外の画素の画素値を「０」に置き換えた２値画像を生成することになる。以下ではこの２値画像を「マスク画像」と呼称する。尚、このマスク画像は、必ずしも１画面分持つ必要は無く、処理に必要な数ライン分のバッファに選択用画像として記憶することでも充分である。
【００３６】
図５において５００はＣＧ画像であり、斜線部分がクロマキー領域である。従ってこの場合、斜線部分を構成する各画素に対してはビット「１」を割り当て、斜線部分以外を構成する各画素に対してはビット「０」を割り当てる。５０３は、係るビットの集合で構成されているマスク画像である。
【００３７】
一方、右目色判定部１１０２には、右目伸張部１０１３から送出された、伸張済みの右目用ＣＧ画像が入力されるので、右目色判定部１１０２は左目色判定部１１０１と同様の処理を行い、右目用ＣＧ画像に対応するマスク画像を生成する。
【００３８】
左目色判定部１１０１が生成したマスク画像は対応点検出部１１０３、左目マスク補正部１１０８に入力され、右目色判定部１１０２が生成したマスク画像（マスク画像）は対応点検出部１１０３、右目マスク補正部１１１０に入力される。ここではクロマキー合成処理の基本的な説明を行っているので、左目マスク補正部１１０８、右目マスク補正部１１１０による補正処理は行わないものとする。従って、左目マスク補正部１１０８は、受けたマスク画像をそのまま左目画像切り替え部１１０９に送出するし、右目マスク補正部１１１０は、受けたマスク画像をそのまま右目画像切り替え部１１１１に送出する。
【００３９】
一方、左目カメラ１００１は上述の通り、ユーザ２０００の左目に対して提示する現実空間の動画像を撮像するためのものであり、撮像した各フレームの画像（現実空間画像）は順次、左目画像切り替え部１１０９に入力される。また、右目カメラ１００２は上述の通り、ユーザ２０００の右目に対して提示する現実空間の動画像を撮像するためのものであり、撮像した各フレームの画像（現実空間画像）は順次、右目画像切り替え部１１１１に入力される。図５において、５０１は、カメラによって撮像された現実空間画像である。
【００４０】
左目画像切り替え部１１０９は、左目色判定部１１０１から受けたマスク画像を用いて、左目伸張部１０１２から受けた左目用ＣＧ画像と、左目カメラ１００１から受けた現実空間画像とのクロマキー合成を行う。即ち、クロマキー合成によって生成する合成画像のｘ（１≦ｘ≦Ｘ）番目の画素として、左目用ＣＧ画像のｘ番目の画素を用いるのか、現実空間画像のｘ番目の画素を用いるのかを、マスク画像のｘ番目の画素に対するビット値に基づいて決定する。ここでＸは左目用ＣＧ画像（右目用ＣＧ画像、合成画像についても同じ）の全画素数を示す。
【００４１】
マスク画像におけるｘ番目の画素のビット値が「１」である場合には、合成画像におけるｘ番目の画素として、現実空間画像におけるｘ番目の画素を用いる。一方、マスク画像におけるｘ番目の画素のビット値が「０」である場合には、合成画像におけるｘ番目の画素として、左目用ＣＧ画像におけるｘ番目の画素を用いる。このようにして、マスク画像を構成する各ビット値に応じて、左目用ＣＧ画像、現実空間画像から選択的に画素を選択し、合成画像における画素とすることで、合成画像を生成することができる。なお、係るクロマキー合成処理については周知のものであるので、これ以上の説明は省略する。
【００４２】
図５において５０４はクロマキー合成による合成画像である。
【００４３】
一方、右目画像切り替え部１１１１は左目画像切り替え部１１０９と同様の処理を行う。即ち、右目色判定部１１０２から受けたマスク画像を用いて、右目伸張部１０１３から受けた右目用ＣＧ画像と、右目カメラ１００２から受けた現実空間画像とのクロマキー合成を行う。
【００４４】
そして、左目画像切り替え部１１０９によって生成した合成画像は左目ＬＣＤ１００３に送出し、右目画像切り替え部１１１１によって生成した合成画像は右目ＬＣＤ１００４に送出する。これによりユーザ２０００の左目、右目の眼前に、それぞれの目に対応する合成画像が表示されることになる。そして係る合成画像は、右目用、左目用の何れであっても、ＣＧ画像におけるクロマキー領域が、現実空間画像において対応する領域に置き換わったものとなる。
【００４５】
次に、クロマキー領域と非クロマキー領域との境界部分にエラー箇所が発生しても、右目用ＣＧ画像と左目用ＣＧ画像とは類似した画像であるという性質を利用し、良好なクロマキー合成結果を得る為のクロマキー合成部１１００の動作について説明する。
【００４６】
図６は、ＣＧ画像（左目用ＣＧ画像、右目用ＣＧ画像の何れでも良い）中の画像情報が欠損したことにより、このＣＧ画像上にノイズが重畳された例を示す図である。図６に示す如く、ＣＧ画像中のポット６００の取っ手の一部分近傍を拡大すると、クロマキー領域の一部（黒塗り部分）における画像情報が欠損しており、欠損した部分を構成する各画素の画素値は、Ｒ＝０、Ｇ＝０、Ｂ＞２５０とはなっていない。即ち、係る部分は、クロマキー領域ではなくなっている。
【００４７】
従って、係るＣＧ画像と現実空間画像とのクロマキー合成を行うと、この黒塗り部分の部分は、ＣＧ画像の画素値がそのまま残り、合成画像上でノイズ（エラー箇所）として残ることになる。本実施形態では、係るエラー箇所を補正し、良好なクロマキー合成結果を得ることを目的とする。より具体的には、左目用ＣＧ画像と右目用ＣＧ画像とを比較し、一方側にエラー箇所があれば、他方のＣＧ画像を用いてこのエラー箇所を補正する。
【００４８】
ここで、本実施形態に係るエラー箇所の補正方法について簡単に説明する。図７は、エラー箇所の補正について説明する図である。図７において７９０は左目用ＣＧ画像から生成したマスク画像（左目用マスク画像）において、クロマキー領域と隣接する非クロマキー領域の一部分（画素群）である。また、７８０は右目用ＣＧ画像から生成したマスク画像（右目用マスク画像）において、クロマキー領域と隣接する非クロマキー領域の一部分（画素群）である。画素群７８０中において斜線部分で示している画素群は、エラー箇所である。
【００４９】
先ず、画素群７９０のうちクロマキー領域と接する画素７２０における、境界部分の傾き（７００で示す直線の傾き）を求める。そして、画素群７８０において、画素７２０と位置的に対応する画素（対応画素）における、境界部分の傾き（７０１で示す直線の傾き）を求める。ここで、左目用ＣＧ画像と右目用ＣＧ画像とは類似している画像であるので、それぞれの傾きはほぼ同じであると考えるのが自然である。従って、それぞれの傾きに大きな差がある場合、左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所があると考えるのが自然である。
【００５０】
更に、左目用ＣＧ画像、右目用ＣＧ画像の何れにエラー箇所があるのかを判定するためには、画素７２０よりも前に、画素群７９０のうちクロマキー領域と接する画素として選択された１以上の画素のそれぞれについて求めた傾きを参照する。そして、画素７２０について求めた傾きと、画素７２０より１つ前に選択された画素について求めた傾きとの差、画素７２０について求めた傾きと、画素７２０より２つ前に選択された画素について求めた傾きとの差、というように、幾つかの差を求める。そして、差の変化が予め定めた変化以上であるのかをチェックする。
【００５１】
同様に、対応画素よりも前に、画素群７８０のうちクロマキー領域と接する画素として選択された１以上の画素のそれぞれについて求めた傾きを参照する。そして、対応画素について求めた傾きと、対応画素より１つ前に選択された画素について求めた傾きとの差、対応画素について求めた傾きと、対応画素より２つ前に選択された画素について求めた傾きとの差、というように、幾つかの差を求める。そして、差の変化が予め定めた変化以上であるのかをチェックする。
【００５２】
そして、画素群７９０側でのチェックと、画素群７８０側でのチェックとを行った結果、差の変化が予め定めた変化以上であると判定した方に、エラー箇所があると判断する。図７では、画素群７８０側にエラー箇所がある。従ってこの場合、対応画素における傾きが、直線７００の傾きとなるように、エラー箇所を補正する。
【００５３】
以下では、係る処理をより具体的に説明する。なお、以下説明する動作は、上記基本的な動作に加えて行うものである。
【００５４】
対応点検出部１１０３は、左目色判定部１１０１、右目色判定部１１０２からそれぞれ送出された左目用マスク画像、右目用マスク画像を受ける。そして、一方のマスク画像上の非クロマキー領域（ビット値が「０」の領域）において、クロマキー領域（ビット値が「１」の領域）と隣接する部分を構成している各画素と位置的に対応する、他方のマスク画像上の画素位置（対応位置）を特定する。対応点検出部１１０３が行う画素位置特定処理については従来から様々な手法が提案されており、本実施形態では何れの手法を用いても良いのであるが、例えば、以下説明するような手法を用いても良い。
【００５５】
先ず、以下の点を仮定する。
【００５６】
・  左目カメラ１００１、右目カメラ１００２は理想的に並行に配置されており、エピポーラ線は左右の画像の同じライン上にある。
【００５７】
・  ＣＧ画像においてクロマキー領域以外の領域（即ち仮想物体の画像）は画面の端にかからない。
【００５８】
このような仮定を前提とすることで、左目用マスク画像、右目用マスク画像をライン毎に比較するだけで、対応する画素の検出を行うことができる。
【００５９】
対応点検出部１１０３は、右目用マスク画像、左目用マスク画像を受けると先ず、それぞれのマスク画像で同じラインを参照し、ライン上における非クロマキー領域を特定する。
【００６０】
図８は、右目用マスク画像、左目用マスク画像のそれぞれで同じラインを参照した場合に、ライン上における非クロマキー領域を特定する処理を説明する図である。なお、図８を用いて後述する処理は右目用マスク画像、左目用マスク画像の何れに対しても同じであるので、係る説明では右目用マスク画像を例に取り説明する。
【００６１】
図８（ａ）は、右目用マスク画像８００の一例を示す図である。図８（ａ）では、右目用マスク画像８００は横サイズを６４０画素としている。右目用マスク画像８００において８１０，８２０はそれぞれ非クロマキー領域（ビット値が「０」の領域）であり、それ以外の領域はクロマキー領域（ビット値が「１」の領域）である。
【００６２】
対応点検出部１１０３は、右目用マスク画像８００中のライン８３０を処理する場合、先ず、ライン８３０を構成する各画素を一方から順に参照する。そして、非クロマキー領域の開始位置、終了位置（画素値が「０」である画素が連続して配されている画素列の開始位置、終了位置）を検出する。
【００６３】
図８（ｂ）は、ライン８３０を構成する各画素の分布を示す図である。図８（ｂ）に示す如く、非クロマキー領域を構成する画素群は、ｘ＝６０〜１８０、３４０〜５００に分布している。従って、図８（ｃ）に示す如く、ライン８３０上では、ｘ＝６０〜１８０に非クロマキー領域が存在していることを示すために、開始位置の欄には「６０」を登録し、対応する終了位置の欄には「１８０」を登録する。同様に、もう１つの非クロマキー領域がｘ＝３４０〜５００に存在していることを示すために、開始位置の欄には「３４０」を登録し、対応する終了位置の欄には「５００」を登録する。
【００６４】
このように、非クロマキー領域毎に、その開始位置と終了位置とをセットにして登録する。係るテーブルは、ライン毎に生成されるものであるので、例えば、右目用マスク画像８００のライン数が４８０であったとすると、係るテーブルは４８０個生成されることになる。しかし、非クロマキー領域が存在しないラインについては係るテーブルは作成されないので、この場合には、作成されるテーブルの数は４８０よりも少なくなる。
【００６５】
なお、図８（ｃ）では、テーブル形式で開始位置と終了位置とを登録しているが、データの管理形態についてはこれに限定するものではない。
【００６６】
上述の通り、対応点検出部１１０３は、係る処理を左目用マスク画像についても行うので、結果として、図８（ｃ）に例示したテーブルが、左目用マスク画像に対しても生成されることになる。ここで、右目用マスク画像について生成したテーブルを右目用テーブル、左目用マスク画像について生成したテーブルを左目用テーブルと呼称する。
【００６７】
この場合、右目用テーブルにおいてｍ（ｍ≧１）行目に登録されている開始位置、終了位置で特定される非クロマキー領域と、左目用テーブルにおいてｍ行目に登録されている開始位置、終了位置で特定される非クロマキー領域とは対応しているものとして扱う。そして、対応点検出部１１０３は、左目用テーブルのｍ行目に登録されている開始位置、終了位置を左目傾き検出部１１０４に送出すると共に、右目用テーブルのｍ行目に登録されている開始位置、終了位置を右目傾き検出部１１０５に送出する。
【００６８】
以下の説明ではｍ＝ｎの場合について説明する。
【００６９】
左目傾き検出部１１０４は、左目用テーブルのｎ行目に登録されている開始位置、終了位置を受けると、開始位置、終了位置における、クロマキー領域と非クロマキー領域との境界部分の傾きを求める。ここで、左目傾き検出部１１０４が行う処理の詳細について、図９を用いて説明する。
【００７０】
図９は、非クロマキー領域（斜線で示した部分）を構成する各画素と、クロマキー領域を構成する各画素と、を示す図である。同図において９００は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置であるとする。９０１は、画素９００とｘ座標値が同じ１ライン上の位置からｘ座標値が小さい方向に画素値を参照した場合に、参照した画素値が「１」となる１つ手前の位置における画素である。９０２は、画素９００とｘ座標値が同じ２ライン上の位置からｘ座標値が小さい方向に画素値を参照した場合に、参照した画素値が「１」となる１つ手前の位置における画素である。
【００７１】
ここで、画素９００の位置における傾きを求めるためには、先ず、画素９００の位置と画素９０１の位置とを通る直線の傾きを求めると共に、画素９００の位置と画素９０２の位置とを通る直線の傾きを求める。そしてそれぞれの傾きの平均値を求め、求めた平均値を、画素９００の位置における傾きとしている。このようにして、左目傾き検出部１１０４は、開始位置における傾きを求めることができる。
【００７２】
次に、終了位置における傾きを求める処理について説明する。先ず、左目用テーブルのｎ行目に登録されている終了位置で特定される画素（画素Ｐ）とｘ座標値が同じ１ライン上の位置からｘ座標値が大きい方向に画素値を参照した場合に、参照した画素値が「１」となる１つ手前の位置における画素（画素Ｑ）を特定する。次に、画素Ｐとｘ座標値が同じ２ライン上の位置からｘ座標値が大きい方向に画素値を参照した場合に、参照した画素値が「１」となる１つ手前の位置における画素（画素Ｒ）を特定する。そして、画素Ｐの位置と画素Ｑの位置とを通る直線の傾きを求めると共に、画素Ｐの位置と画素Ｒの位置とを通る直線の傾きを求める。そしてそれぞれの傾きの平均値を求め、求めた平均値を、画素Ｐの位置における傾きとする。
【００７３】
ここで、図９における画素９０１，９０２や、上記画素Ｑ、画素Ｒといった、開始位置から求める２画素、終了位置から求める２画素の特定方法について、図１０を用いて説明する。
【００７４】
図１０（ａ）は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置、終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置が共に、クロマキー領域内の画素である場合を示す図である。図１０（ａ）において１０９１は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置、１０９３は、左目用テーブルのｎ行目に登録されている終了位置で特定される画素位置を示す。
【００７５】
図１０（ｂ）は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置、終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置が共に、非クロマキー領域内の画素である場合を示す図である。図１０（ｂ）において１０８１は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置、１０８３は、左目用テーブルのｎ行目に登録されている終了位置で特定される画素位置を示す。
【００７６】
左目傾き検出部１１０４は先ず、左目用マスク画像において、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置の画素の画素値が「１」であるか「０」であるのかをチェックする。係るチェックの結果、「１」である場合、即ち、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置の画素がクロマキー領域に含まれている場合には、次の処理を行う。即ち、図１０（ａ）に示す如く、先ず、画素位置１０９１とｘ座標値が同じ１ライン上の位置からｘ座標値が大きい方向に画素値を参照する。そして、参照した画素値が「０」となった最初の位置１０９２における画素を、「画素Ｓ１」として特定する。一方、係るチェックの結果、「０」である場合、即ち、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置の画素が非クロマキー領域に含まれている場合には、次の処理を行う。即ち、図１０（ｂ）に示す如く、先ず、画素位置１０８１とｘ座標値が同じ１ライン上の位置からｘ座標値が小さい方向に画素値を参照する。そして、参照した画素値が「１」となる１つ手前の位置１０８２における画素を、「画素Ｓ１」として特定する。
【００７７】
次に左目傾き検出部１１０４は先ず、左目用マスク画像において、左目用テーブルのｎ行目に登録されている終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置の画素の画素値が「１」であるか「０」であるのかをチェックする。係るチェックの結果、「１」である場合、即ち、左目用テーブルのｎ行目に登録されている終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置の画素がクロマキー領域に含まれている場合には、次の処理を行う。即ち、図１０（ａ）に示す如く、画素位置１０９３とｘ座標値が同じ１ライン上の位置からｘ座標値が小さい方向に画素値を参照した場合に、参照した画素値が「０」となった最初の位置１０９４における画素を、「画素Ｅ１」として特定する。一方、係るチェックの結果、「０」である場合、即ち、左目用テーブルのｎ行目に登録されている終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置の画素が非クロマキー領域に含まれている場合には、次の処理を行う。即ち、図１０（ｂ）に示す如く、画素位置１０８３とｘ座標値が同じ１ライン上の位置からｘ座標値が大きい方向に画素値を参照した場合に、参照した画素値が「１」となる１つ手前の位置１０８４における画素を、「画素Ｅ１」として特定する。
【００７８】
同様にして、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ２ライン上の位置の画素の画素値が「１」であるか「０」であるのかに応じて、ｘ座標値が小さい方向、大きい方向の何れかの方向に画素値を参照する。そして同様にして画素Ｓ２を特定する。また、左目用テーブルのｎ行目に登録されている終了位置で特定される画素位置とｘ座標値が同じ２ライン上の位置の画素の画素値が「１」であるか「０」であるのかに応じて、ｘ座標値が小さい方向、大きい方向の何れかの方向に画素値を参照する。そして同様にして画素Ｅ２を特定する。
【００７９】
そして、左目傾き検出部１１０４は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素と画素Ｓ１とを通る直線の傾きＶＳＬ１を求める。更に左目傾き検出部１１０４は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素と画素Ｓ２とを通る直線の傾きＶＳＬ２を求める。そして、傾きＶＳＬ１と傾きＶＳＬ２との平均値ＶＳＬ３を、左目用テーブルのｎ行目に登録されている開始位置（注目位置）におけるクロマキー領域と非クロマキー領域との境界部分の傾きとして求める。
【００８０】
同様に、左目傾き検出部１１０４は、左目用テーブルのｎ行目に登録されている終了位置で特定される画素と画素Ｅ１とを通る直線の傾きＶＥＬ１を求める。更に左目傾き検出部１１０４は、左目用テーブルのｎ行目に登録されている終了位置で特定される画素と画素Ｅ２とを通る直線の傾きＶＥＬ２を求める。そして、傾きＶＥＬ１と傾きＶＥＬ２との平均値ＶＥＬ３を、左目用テーブルのｎ行目に登録されている終了位置におけるクロマキー領域と非クロマキー領域との境界部分の傾きとして求める。
【００８１】
そして、ＶＳＬ１〜ＶＳＬ３、ＶＥＬ１〜ＶＥＬ３を誤り判定部１１０６に対して出力する。
【００８２】
一方、右目傾き検出部１１０５は、左目傾き検出部１１０４と同様の処理を行い、右目用マスク画像から、それぞれ傾きＶＳＬ１〜ＶＳＬ３に対応する傾きＶＳＲ１〜ＶＳＲ３、傾きＶＥＬ１〜ＶＥＬ３に対応する傾きＶＥＲ１〜ＶＥＲ３を求める。そして求めた傾きＶＳＲ１〜ＶＳＲ３、傾きＶＥＲ１〜ＶＥＲ３を、誤り判定部１１０６に送出する。
【００８３】
誤り判定部１１０６は、傾きＶＳＬ３と傾きＶＳＲ３との差が閾値（ここでは例として１０度）以上であるか否かをチェックする。係るチェックの結果、差が１０度以上であれば、左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在するものと判断する。一方、傾きＶＳＬ３と傾きＶＳＲ３との差が閾値よりも小さければ、左目用ＣＧ画像、右目用ＣＧ画像の何れにもエラー箇所は存在しないものと判断する。
【００８４】
もちろん、右目用ＣＧ画像、左目用ＣＧ画像の何れかにエラー箇所が存在するか否かをチェックするための基準については係るものに限定するものではなく、様々なものが考え得る。また、他の基準を用いる場合、そのために求めるべき情報についてはもちろん、適宜求める必要がある。
【００８５】
誤り判定部１１０６は、右目用ＣＧ画像、左目用ＣＧ画像の何れかにエラー箇所が存在したか否かを示すフラグ情報と共に、ＶＳＬ１〜ＶＳＬ３，ＶＳＲ１〜ＶＳＲ３を補正箇所判定部１１０７に送出する。
【００８６】
補正箇所判定部１１０７は、係るフラグ情報を参照し、右目用ＣＧ画像、左目用ＣＧ画像の何れにエラー箇所が存在しているのかをチェックする。本実施形態では、クロマキー領域と非クロマキー領域との境界部分を曲線（直線を含む）と見なした場合に、曲線の形状が滑らかな方が、エラー箇所のない画像であると判断する。もちろん、係る判断基準は一例であり、他の判断基準を用いても良い。
【００８７】
本実施形態に係る補正箇所判定部１１０７は、誤り判定部１１０６から受けたフラグ値を参照し、係るフラグ値が「エラー箇所は存在しない」旨を示している場合には、何も処理は行わない。
【００８８】
一方、補正箇所判定部１１０７は、誤り判定部１１０６から受けたフラグ値が「エラー箇所は存在する」旨を示している場合には、傾きＶＳＬ１と傾きＶＳＬ２とがなす角度を求めると共に、傾きＶＳＲ１と傾きＶＳＲ２とがなす角度を求める。そして求めたそれぞれの角度のうち、角度が大きい方のマスク画像にエラー箇所が存在すると判断する。係る判断の結果、左目用マスク画像にエラー箇所が存在すると判断した場合には、傾きＶＳＲ１（ＶＳＲ２でも良い）を、左目マスク補正部１１０８に送出する。一方、右目用マスク画像にエラー箇所が存在すると判断した場合には、傾きＶＳＬ１（ＶＳＬ２でも良い）を、右目マスク補正部１１１０に送出する。
【００８９】
左目マスク補正部１１０８は、補正箇所判定部１１０７から傾きＶＳＲ１を受けると、左目用マスク画像において、画素Ｓ１のラインの１つ下のライン上における画素群のうち画素Ｓ１を通り、傾きＶＳＲ１を有する直線が通る画素（補正開始画素）を特定する。そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも小さい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている開始位置の画素との間の各画素、の画素値を「０」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも大きい場合には、左目用テーブルのｎ行目に登録されている開始位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。
【００９０】
図１１は、左目用テーブルのｎ行目に登録されている開始位置のラインを補正する処理を説明する図である。同図において１１９２は画素Ｓ１、１１９９は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素である。１１９８は補正開始画素である。上述の通り、左目用テーブルのｎ行目に登録されている開始位置のラインを構成する各画素のうち、画素１１９２を通り、傾きＶＳＲ１を有する直線が通る画素が、補正開始画素１１９８となっている。従ってこの場合、補正開始画素１１９８から画素１１９９までの間（補正開始画素１１９８を含む）の画素値を「０」とする。
【００９１】
一方、右目マスク補正部１１１０は、用いる傾きが異なるのみで、基本的には左目マスク補正部１１０８と同様の処理を行う。
【００９２】
また、誤り判定部１１０６は、傾きＶＥＬ３と傾きＶＥＲ３との差が１０度以上であるか否かをチェックする。係るチェックの結果、差が１０度以上であれば、左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在するものと判断する。もちろん、右目用ＣＧ画像、左目用ＣＧ画像の何れかにエラー箇所が存在するか否かをチェックするための基準については係るものに限定するものではなく、様々なものが考え得る。また、他の基準を用いる場合、そのために求めるべき情報についてはもちろん、適宜求める必要がある。
【００９３】
誤り判定部１１０６は、右目用ＣＧ画像、左目用ＣＧ画像の何れかにエラー箇所が存在したか否かを示すフラグ情報と共に、ＶＥＬ１〜ＶＥＬ３，ＶＥＲ１〜ＶＥＲ３を補正箇所判定部１１０７に送出する。
【００９４】
補正箇所判定部１１０７は、右目用ＣＧ画像、左目用ＣＧ画像の何れにエラー箇所が存在しているのかをチェックする。本実施形態では、クロマキー領域と非クロマキー領域との境界部分を曲線（直線を含む）と見なした場合に、曲線の形状が滑らかな方が、エラー箇所のない画像であると判断する。もちろん、係る判断基準は一例であり、他の判断基準を用いても良い。
【００９５】
本実施形態に係る補正箇所判定部１１０７は、誤り判定部１１０６から受けたフラグ値を参照し、係るフラグ値が「エラー箇所は存在しない」旨を示している場合には、何も処理は行わない。
【００９６】
一方、補正箇所判定部１１０７は、誤り判定部１１０６から受けたフラグ値が「エラー箇所は存在する」旨を示している場合には、傾きＶＥＬ１と傾きＶＥＬ２とがなす角度を求めると共に、傾きＶＥＲ１と傾きＶＥＲ２とがなす角度を求める。そして求めたそれぞれの角度のうち、角度が大きい方のマスク画像にエラー箇所が存在すると判断する。係る判断の結果、左目用マスク画像にエラー箇所が存在すると判断した場合には、傾きＶＥＲ１（ＶＥＲ２でも良い）を、左目マスク補正部１１０８に送出する。一方、右目用マスク画像にエラー箇所が存在すると判断した場合には、傾きＶＥＬ１（ＶＥＬ２でも良い）を、右目マスク補正部１１１０に送出する。
【００９７】
また左目マスク補正部１１０８は、補正箇所判定部１１０７から傾きＶＥＲ１を受けると、左目用マスク画像において、画素Ｅ１のラインの１つ下のライン上の画素群のうち画素Ｅ１を通り、傾きＶＥＲ１を有する直線が通る画素（補正開始画素）を特定する。
【００９８】
そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも小さい場合には、左目用テーブルのｎ行目に登録されている終了位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも大きい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている終了位置の画素との間の各画素の画素値を「０」にする。
【００９９】
一方、右目マスク補正部１１１０は、用いる傾きが異なるのみで、基本的には左目マスク補正部１１０８と同様の処理を行う。
【０１００】
以上の処理によりマスク画像におけるエラー箇所を補正することができるので、後は上述したように、このマスク画像を用いてクロマキー合成処理を行っても、合成結果にエラー箇所が生じることはない。
【０１０１】
そして以上説明した処理を、左目用テーブル、右目用テーブルの全ての行について行うと、次のラインについて、同様の処理を繰り返す。
【０１０２】
なお、本実施形態では、マスク画像についてのみ補正したが、係る補正の段階で、ＣＧ画像についても補正すると、より好ましい。例えば、左目用マスク画像に対して画素値を補正した画素が、係る補正の結果、非クロマキー領域に含まれた場合には、係る画素に対応する左目用ＣＧ画像中の画素（左画素）に対応する右目用ＣＧ画像中の画素の画素値を、左画素の画素値にコピーする。
【０１０３】
図２１は、ＨＭＤ１０００が、現実空間画像とＣＧ画像とをクロマキー合成したものを、ユーザ２０００の右目、左目に対して提示する為に行うメインの処理のフローチャートである。
【０１０４】
先ず、ステップＳ２１０１では、左目画像切り替え部１１０９、右目画像切り替え部１１１１はそれそれ、左目カメラ１００１、右目カメラ１００２から送出された、左目用の現実空間画像、右目用の現実空間画像を取得する。
【０１０５】
次にステップＳ２１０２では、無線画像受信部１０１１が、圧縮された右目用ＣＧ画像、左目用ＣＧ画像を受信（取得）する。
【０１０６】
ステップＳ２１０３では、右目伸張部１０１３は、圧縮された右目用ＣＧ画像を伸張し、左目伸張部１０１２は、圧縮された左目用ＣＧ画像を伸張する。
【０１０７】
ステップＳ２１０４では、左目色判定部１１０１は、左目用マスク画像を生成し、右目色判定部１１０２は、右目用マスク画像を生成する。
【０１０８】
ステップＳ２１０５では、マスク画像の補正に係る一連の処理を行う。ステップＳ２１０５における処理の詳細については後述する。
【０１０９】
ステップＳ２１０６では、右目画像切り替え部１１１１は、右目用マスク画像を用いて、ステップＳ２１０１で取得した右目用の現実空間画像と、ステップＳ２１０３で伸張した右目用ＣＧ画像とのクロマキー合成を行う。係る右目用マスク画像は、右目マスク補正部１１１０により補正されたマスク画像、若しくは補正されていないマスク画像である。更にステップＳ２１０６では、左目画像切り替え部１１０９は、左目用マスク画像を用いて、ステップＳ２１０１で取得した左目用の現実空間画像と、ステップＳ２１０３で伸張した左目用ＣＧ画像とのクロマキー合成を行う。係る左目用マスク画像は、左目マスク補正部１１０８により補正されたマスク画像、若しくは補正されていないマスク画像である。
【０１１０】
次にステップＳ２１０７では、左目画像切り替え部１１０９は、クロマキー合成後の合成画像を左目ＬＣＤ１００３に送出することで、左目ＬＣＤ１００３にこの合成画像を表示させる。更にステップＳ２１０７では、右目画像切り替え部１１１１は、クロマキー合成後の合成画像を右目ＬＣＤ１００４に送出することで、右目ＬＣＤ１００４にこの合成画像を表示させる。
【０１１１】
そして、本処理の終了条件が満たされない限りは処理はステップＳ２１０８を介してステップＳ２１０１に戻り、次のフレームについて以降の処理を行う。
【０１１２】
図２２は、上記ステップＳ２１０５における処理の詳細を示すフローチャートである。なお、図２２のフローチャートに従った処理の詳細については上述したとおりであるので、以下では簡単に説明する。
【０１１３】
先ず、ステップＳ２２０１では、以下の処理で用いる変数ｎを１にセットする。係る変数ｎは、右目用テーブル、左目用テーブルにおいて処理対象とする行を指し示す為のものであるので、ステップＳ２２０１における処理は、対応点検出部１１０３が行うのが好ましい。しかし本ステップにおける処理の主体は、対応点検出部１１０３に限定するものではない。
【０１１４】
次に、ステップＳ２２０２では、以下の処理で用いる変数ｌを１にセットする。係る変数ｌは、右目用マスク画像、左目用マスク画像を構成する各ラインのうち、処理対象とするラインを指し示すためのものであるので、ステップＳ２２０２における処理は、対応点検出部１１０３が行うのが好ましい。しかし、本ステップにおける処理の主体は、対応点検出部１１０３に限定するものではない。
【０１１５】
次にステップＳ２２０３では、対応点検出部１１０３は、左目用マスク画像のｌライン目について、左目用テーブルを作成すると共に、右目用マスク画像のｌライン目について、右目用テーブルを作成する。
【０１１６】
次にステップＳ２２０４では、対応点検出部１１０３は、右目用テーブル、左目用テーブルにおいてｎ行目に登録している開始位置、終了位置を取得する。そして、右目用テーブルから取得した開始位置、終了位置を右目傾き検出部１１０５に送出すると共に、左目用テーブルから取得した開始位置、終了位置を左目傾き検出部１１０４に送出する。
【０１１７】
次にステップＳ２２０５では、左目傾き検出部１１０４は上述した処理を行い、傾きＶＳＬ１〜ＶＳＬ３、ＶＥＬ１〜ＶＥＬ３を求める。そして求めた傾きＶＳＬ１〜ＶＳＬ３、ＶＥＬ１〜ＶＥＬ３を誤り判定部１１０６に対して出力する。また、本ステップでは更に、右目傾き検出部１１０５は上述した処理を行い、傾きＶＳＲ１〜ＶＳＲ３、ＶＥＲ１〜ＶＥＲ３を求める。そして求めた傾きＶＳＲ１〜ＶＳＲ３、ＶＥＲ１〜ＶＥＲ３を誤り判定部１１０６に対して出力する。
【０１１８】
次にステップＳ２２０６では、誤り判定部１１０６は、傾きＶＳＬ３と傾きＶＳＲ３との差が１０度以上であるか否かをチェックする。係るチェックの結果、差が１０度以上であれば、誤り判定部１１０６は、右目用ＣＧ画像、左目用ＣＧ画像の何れかにエラー箇所が存在したか否かを示すフラグ情報と共に、ＶＳＬ１〜ＶＳＬ３，ＶＳＲ１〜ＶＳＲ３を補正箇所判定部１１０７に送出する。そして、処理をステップ２２０７に進める。一方、差が１０度未満であれば、処理をステップＳ２２１０に進める。
【０１１９】
ステップＳ２２０７では、補正箇所判定部１１０７は、傾きＶＳＬ１と傾きＶＳＬ２とがなす角度θ１を求めると共に、傾きＶＳＲ１と傾きＶＳＲ２とがなす角度θ２を求める。
【０１２０】
次にステップＳ２２０８では、補正箇所判定部１１０７は、θ１とθ２との大小比較を行い、θ１＞θ２である場合には、傾きＶＳＲ１（ＶＳＲ２でも良い）を、左目マスク補正部１１０８に送出し、処理をステップＳ２２０８に進める。一方、θ１≦θ２である場合には、補正箇所判定部１１０７は傾きＶＳＬ１（ＶＳＬ２でも良い）を、右目マスク補正部１１１０に送出し、処理をステップＳ２２０９に進める。
【０１２１】
ステップＳ２２０８では、左目マスク補正部１１０８は、左目用マスク画像において、画素Ｓ１のラインの１つ下のライン上における画素群のうち、画素Ｓ１を通り、傾きＶＳＲ１を有する直線が通る画素（補正開始画素）を特定する。そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも小さい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている開始位置の画素との間の各画素の画素値を「０」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも大きい場合には、左目用テーブルのｎ行目に登録されている開始位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。このようにして、ステップＳ２２０８では、左目用マスク画像を補正する。
【０１２２】
一方、ステップＳ２２０９では、右目マスク補正部１１１０は、用いる傾きが異なるのみで、基本的には左目マスク補正部１１０８と同様の処理を行う。これにより、右目用マスク画像を補正する。
【０１２３】
次にステップＳ２２１０では、誤り判定部１１０６は、傾きＶＥＬ３と傾きＶＥＲ３との差が１０度以上であるか否かをチェックする。係るチェックの結果、差が１０度以上であれば、誤り判定部１１０６は、右目用ＣＧ画像、左目用ＣＧ画像の何れかにエラー箇所が存在したか否かを示すフラグ情報と共に、ＶＥＬ１〜ＶＥＬ３，ＶＥＲ１〜ＶＥＲ３を補正箇所判定部１１０７に送出する。そして、処理をステップＳ２２１１に進める。一方、差が１０度未満である場合には、処理をステップＳ２２１５に進める。
【０１２４】
ステップＳ２２１１では、補正箇所判定部１１０７は、傾きＶＥＬ１と傾きＶＥＬ２とがなす角度θ３を求めると共に、傾きＶＥＲ１と傾きＶＥＲ２とがなす角度θ４を求める。
【０１２５】
次にステップＳ２２１２では、補正箇所判定部１１０７は、θ３とθ４との大小比較を行い、θ３＞θ４である場合には、傾きＶＥＲ１（ＶＥＲ２でも良い）を、左目マスク補正部１１０８に送出し、処理をステップＳ２２１３に進める。一方、θ３≦θ４である場合には、補正箇所判定部１１０７は傾きＶＥＬ１（ＶＥＬ２でも良い）を、右目マスク補正部１１１０に送出し、処理をステップＳ２２１４に進める。
【０１２６】
ステップＳ２２１３では、左目マスク補正部１１０８は、左目用マスク画像において、画素Ｅ１のラインの１つ下のライン上における画素群のうち、画素Ｅ１を通り、傾きＶＥＲ１を有する直線が通る画素（補正開始画素）を特定する。そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも小さい場合には、左目用テーブルのｎ行目に登録されている終了位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも大きい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている終了位置の画素との間の各画素の画素値を「０」にする。このようにして、ステップＳ２２１３では、左目用マスク画像を補正する。
【０１２７】
一方、ステップＳ２２１４では、右目マスク補正部１１１０は、用いる傾きが異なるのみで、基本的には左目マスク補正部１１０８と同様の処理を行う。これにより、右目用マスク画像を補正する。
【０１２８】
次にステップＳ２２１５では、対応点検出部１１０３は、ｎ＝Ｎ（Ｎは右目用テーブル、左目用テーブルにおける全行数）である、即ち、右目用テーブル、左目用テーブルの全ての行についてステップＳ２２０４以降の処理を行ったか否かをチェックする。係るチェックの結果、ｎ＝Ｎである場合には、処理をステップＳ２２１７に進める。一方、ｎ＜Ｎである場合には、処理をステップＳ２２１６に進める。
【０１２９】
ステップＳ２２１６では、対応点検出部１１０３は、変数ｎの値を１つインクリメントする。そして、ステップＳ２２０４以降の処理を行う。
【０１３０】
一方、ステップＳ２２１７では、対応点検出部１１０３は、ｌ＝Ｌ（Ｌは右目用マスク画像、左目用マスク画像の総ライン数）である。即ち、右目用マスク画像、左目用マスク画像の全てのラインについてステップＳ２２０３以降の処理を行ったか否かをチェックする。係るチェックの結果、ｌ＝Ｌである場合には、図２２に示したフローチャートに従った処理を終了し、上記ステップＳ２１０６にリターンする。一方、ｌ＜Ｌである場合には、処理をステップＳ２２１８に進める。
【０１３１】
ステップＳ２２１８では、対応点検出部１１０３は、変数ｌの値を１つインクリメントする。そして、ステップＳ２２０３以降の処理を行う。
【０１３２】
以上の説明により、本実施形態によれば、左右のＣＧ画像の類似性を利用し、一方のＣＧ画像にエラー箇所があっても、クロマキー領域と非クロマキー領域との境界線を正しく検出し、クロマキー合成に必要なクロマキー色の検出を良好に行うことが出来る。
【０１３３】
なお、本実施形態では、マスク画像を補正することで、クロマキー合成の補正を実現した。だがクロマキー合成の補正は、必ずしもマスク画像を補正して行う必要はない。即ち、エラー箇所が存在するＣＧ画像を補正することや、クロマキー合成の結果得られる画像を補正することでも、エラー箇所が存在するＣＧ画像から、欠損を補正したクロマキー合成を行うことが出来る。
【０１３４】
なお、ＣＧ画像を直接補正する手法や、クロマキー合成の結果得られる画像を補正する手法においても、本実施形態は同じように適用可能であり、同様にエラー箇所を補正したクロマキー合成を行うことが出来る。
【０１３５】
［第２の実施形態］
本実施形態では、右目用ＣＧ画像、左目用ＣＧ画像の視差を用いて、エラー箇所を補正する。なお、本実施形態以下で説明する様々な判断基準については一例であり、当業者であれば、適宜変形しうるものである。
【０１３６】
図１２は、右目用ＣＧ画像と左目用マスク画像との間の視差について説明する図である。図１２において１２０１０は左目用マスク画像、１２０２０は右目用マスク画像である。それぞれのマスク画像には非クロマキー領域１２９８，１２９９が含まれており、それぞれマスク画像中における位置は若干ずれている。係るずれが視差である。１２０３０は、左目用マスク画像１２０１０と右目用マスク画像１２０２０とを重ね合わせた場合に得られる画像である。係る画像１２０３０に示す如く、左目用マスク画像１２０１０中における非クロマキー領域１２９８、右目用マスク画像１２０２０中における非クロマキー領域１２９９のそれぞれの位置は若干ずれてる。
【０１３７】
本実施形態では、右目用マスク画像におけるクロマキー領域と非クロマキー領域との境界部分と、左目用マスク画像においてこの境界部分に対応する対応境界部分と、の位置的な差をライン毎に検出することで、エラー箇所が存在するか否かをチェックする。
【０１３８】
図１４は、本実施形態に係るＨＭＤ１０００の機能構成を示すブロック図である。なお、図１４において、図４と同じ部分については同じ番号を付けており、その説明は省略する。
【０１３９】
視差計算部１２０１は、対応点検出部１１０３から左目用テーブルのｎ行目に登録されている開始位置、終了位置、右目用テーブルのｎ行目に登録されている開始位置、終了位置、を受ける。
【０１４０】
そして、左目用テーブルのｎ行目に登録されている開始位置から、右目用テーブルのｎ行目に登録されている開始位置を引いた値（位置差）を「視差ＤＳｉ」として求める。また、第１の実施形態で説明したような処理を行うことで、左目用マスク画像、右目用マスク画像における画素Ｓ１，Ｓ２を求める。そして、左目用マスク画像における画素Ｓ１の位置から、右目用マスク画像における画素Ｓ１の位置を引いた値を「視差ＤＳ（ｉ−１）」として求める。更に、左目用マスク画像における画素Ｓ２の位置から、右目用マスク画像における画素Ｓ２の位置を引いた値を「視差ＤＳ（ｉ−２）」として求める。
【０１４１】
また、視差計算部１２０１は、左目用テーブルのｎ行目に登録されている終了位置から、右目用テーブルのｎ行目に登録されている終了位置を引いた値を「視差ＤＥｉ」として求める。また、第１の実施形態で説明したような処理を行うことで、左目用マスク画像、右目用マスク画像における画素Ｅ１，Ｅ２を求める。そして、左目用マスク画像における画素Ｅ１の位置から、右目用マスク画像における画素Ｅ１の位置を引いた値を「視差ＤＥ（ｉ−１）」として求める。更に、左目用マスク画像における画素Ｅ２の位置から、右目用マスク画像における画素Ｅ２の位置を引いた値を「視差ＤＥ（ｉ−２）」として求める。
【０１４２】
そして視差計算部１２０１は、求めたＤＳｉ、ＤＳ（ｉ−１）、ＤＳ（ｉ−２）、ＤＥｉ、ＤＥ（ｉ−１）、ＤＥ（ｉ−２）のデータを、後段の誤り判定部１２０２に送出する。
【０１４３】
また、視差計算部１２０１は、上記左目傾き検出部１１０４，右目傾き検出部１１０５が行うものとして第１の実施形態で説明した処理を行う。即ち、視差計算部１２０１は、ＶＳＬ１〜ＶＳＬ３、ＶＥＬ１〜ＶＥＬ３、ＶＳＲ１〜ＶＳＲ３、ＶＥＲ１〜ＶＥＲ３、を求める。そして、求めたこれらを補正箇所判定部１２０３に対して出力する。
【０１４４】
誤り判定部１２０２は、受けた視差のデータに基づいて、左目用ＣＧ画像と右目用ＣＧ画像の何れかにエラー箇所があるのか否かをチェックする。
【０１４５】
本実施形態では、図１３に示す如く、右目用ＣＧ画像と左目用ＣＧ画像とにおいて、ライン毎の視差は滑らかに変化するものであるという前提に基づき、もしあるラインで急激に視差が変化している場合には、係るラインにエラー箇所があるものと判断する。図１３は、視差に基づいてマスク画像を補正する処理を説明する図である。
【０１４６】
より詳しくは、誤り判定部１２０２は、ＤＳｉとＤＳ（ｉ−１）との差の値ｘ、ＤＳ（ｉ−１）とＤＳ（ｉ−２）との差の値ｙ、を求め、値ｘと値ｙとの差の値（変化量）の絶対値が１０以上であるのか否かをチェックする。そして、この絶対値が１０以上であれば、左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在するものと判断する。
【０１４７】
そしてエラー箇所が存在したか否かの判断結果を示すフラグ情報を作成し、補正箇所判定部１２０３に送出する。
【０１４８】
補正箇所判定部１２０３は、誤り判定部１２０２からのフラグ情報を参照し、係るフラグ情報が「左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在する」という旨を示している場合には、何れのＣＧ画像にエラー箇所があるのかをチェックする。係るチェック処理は、第１の実施形態と同様にして行う。従って補正箇所判定部１２０３は、視差計算部１２０１から受けたＶＳＬ１〜ＶＳＬ３、ＶＳＲ１〜ＶＳＲ３、のデータを用いて、補正箇所判定部１１０７が行った処理と同様の処理を行う。
【０１４９】
そして、補正箇所判定部１２０３は、左目用マスク画像にエラー箇所があると判断した場合には、ＤＳ（ｉ−１）、ＤＳ（ｉ−２）のデータを視差計算部１２０１から取得する。そして取得したデータを用いて、２×ＤＳ（ｉ−１）−ＤＳ（ｉ−２）を求め、求めた値を補正視差のデータとして左目マスク補正部１２０８に送出する。一方、右目用マスク画像にエラー箇所があると判断した場合には、２×ＤＳ（ｉ−１）−ＤＳ（ｉ−２）の値を補正視差のデータとして右目マスク補正部１２１０に送出する。
【０１５０】
左目マスク補正部１２０８は、対応点検出部１１０３から右目用テーブルのｎ行目に登録されている開始位置（ｐ）を取得し、左目用マスク画像上のｐ＋２×ＤＳ（ｉ−１）−ＤＳ（ｉ−２）の位置における補正開始画素として求める。そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも小さい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている開始位置の画素との間の各画素の画素値を「０」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも大きい場合には、左目用テーブルのｎ行目に登録されている開始位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。
【０１５１】
一方、右目マスク補正部１２１０は、対応点検出部１１０３から左目用テーブルのｎ行目に登録されている開始位置（ｐ）を取得し、右目用マスク画像上のｐ−２×ＤＳ（ｉ−１）＋ＤＳ（ｉ−２）の位置における補正開始画素として求める。そして補正開始画素のｘ座標値が、右目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも小さい場合には、補正開始画素、補正開始画素と右目用テーブルのｎ行目に登録されている開始位置の画素との間の各画素の画素値を「０」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている開始位置のｘ座標値よりも大きい場合には、右目用テーブルのｎ行目に登録されている開始位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。
【０１５２】
また、誤り判定部１２０２は、ＤＥｉとＤＥ（ｉ−１）との差の値ｘ、ＤＥ（ｉ−１）とＤＥ（ｉ−２）との差の値ｙ、を求め、値ｘと値ｙとの差の値の絶対値が１０以上であるのか否かをチェックする。そして、この絶対値が１０以上であれば、左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在するものと判断する。
【０１５３】
そしてエラー箇所が存在したか否かの判断結果を示すフラグ情報を作成し、補正箇所判定部１２０３に送出する。
【０１５４】
補正箇所判定部１２０３は、誤り判定部１２０２からのフラグ情報を参照し、係るフラグ情報が「左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在する」という旨を示している場合には、何れのＣＧ画像にエラー箇所があるのかをチェックする。係るチェック処理は、第１の実施形態と同様にして行う。従って補正箇所判定部１２０３は、視差計算部１２０１から受けたＶＳＬ１〜ＶＳＬ３、ＶＳＲ１〜ＶＳＲ３、のデータを用いて、補正箇所判定部１１０７が行った処理と同様の処理を行う。
【０１５５】
そして、補正箇所判定部１２０３は、左目用マスク画像にエラー箇所があると判断した場合には、ＤＥ（ｉ−１）、ＤＥ（ｉ−２）のデータを視差計算部１２０１から取得する。そして取得したデータを用いて、２×ＤＥ（ｉ−１）−ＤＥ（ｉ−２）を求め、求めた値を補正視差のデータとして左目マスク補正部１２０８に送出する。一方、右目用マスク画像にエラー箇所があると判断した場合には、２×ＤＥ（ｉ−１）−ＤＥ（ｉ−２）の値を補正視差のデータとして右目マスク補正部１２１０に送出する。
【０１５６】
左目マスク補正部１２０８は、図１５に示す如く、対応点検出部１１０３から右目用テーブルのｎ行目に登録されている終了位置（ｑ）を取得し、左目用マスク画像上のｑ＋２×ＤＥ（ｉ−１）−ＤＥ（ｉ−２）の位置における補正開始画素として求める。そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも小さい場合には、左目用テーブルのｎ行目に登録されている終了位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも大きい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている終了位置の画素との間の各画素の画素値を「０」にする。
【０１５７】
一方、右目マスク補正部１２１０は、対応点検出部１１０３から左目用テーブルのｎ行目に登録されている開始位置（ｐ）を取得し、右目用マスク画像上のｐ−２×ＤＳ（ｉ−１）＋ＤＳ（ｉ−２）の位置における補正開始画素として求める。そして補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも小さい場合には、左目用テーブルのｎ行目に登録されている終了位置における画素、及びこの画素と補正開始画素との間の各画素の画素値を「１」にする。一方、補正開始画素のｘ座標値が、左目用テーブルのｎ行目に登録されている終了位置のｘ座標値よりも大きい場合には、補正開始画素、補正開始画素と左目用テーブルのｎ行目に登録されている終了位置の画素との間の各画素の画素値を「０」にする。
【０１５８】
以上のようにして、左目用マスク画像、右目用マスク画像を補正する。
【０１５９】
そして以降の処理については第１の実施形態と同様である。
【０１６０】
第１の実施形態では、左右の画像の輪郭線の傾きを比較し、欠損を発見してクロマキー合成時に補正を行っていた。視差の少ない左右の画像が似通ったものである時には、良好に動作する。しかし視差の比較的大きい左右の画像が比較的異なったものであるときには、必ずしも正常に動作しない。
【０１６１】
本実施形態では、視差の連続性を利用しているため、左右の輪郭線が異なって見えるようなときも(例えば片目の正面に物体があるようなときも)ある程度までは補正を行える。その点で、第１の実施形態よりも優れた特性を発揮する。
【０１６２】
しかし物体が重なり合っているような場合には視差の不連続が生じており、必ずしも正常に動作しない。そのような画像を扱う場合には、本実施形態は不適である。
【０１６３】
本実施形態では、マスク画像を補正することで、クロマキー合成の補正を実現した。だがクロマキー合成の補正は、必ずしもマスク画像を補正して行う必要はない。
【０１６４】
欠損のあるCG画像を補正することや、クロマキー合成の結果得られる画像を補正することでも、欠損のある入力画像から、欠損を補正したクロマキー合成を行うことが出来る。
【０１６５】
CG画像を直接補正する手法や、クロマキー合成の結果得られる画像を補正する手法においても、本実施形態は同じように適用可能であり、同様に欠損を補正したクロマキー合成を行うことが出来る。
【０１６６】
［第３の実施形態］
本実施形態では、各フレームの左目用ＣＧ画像を用いて、注目フレームにおける左目用ＣＧ画像におけるエラー箇所を補正する。同様に、各フレームの右目用ＣＧ画像を用いて、注目フレームにおける右目用ＣＧ画像におけるエラー箇所を補正する。
【０１６７】
本実施形態では、図１６に示す如く、隣接（連続）するフレームの画像同士は比較的類似しているという前提の元に、前フレームの画像と大きく異なる箇所が生じた注目フレームの画像にはエラー箇所が存在すると判断する。そして、係る注目フレームの画像に対するマスク画像を補正する。
【０１６８】
第１，２の実施形態では、ステレオ画像の類似性を利用してエラー箇所の有無を判断していたので、近くの物体を撮影している場合には、右目に対する画像と左目に対する画像とでは大きく異なる箇所が発生することが考えられる。従ってこのような場合には、良好な補正を行えないことがあった。
【０１６９】
本実施形態では、隣接する各フレームの画像を用いてエラー箇所の有無を判断するために、そのような制約は無く、近くの物体を撮影している場合にも、問題なく入力画像の欠損を補正したクロマキー合成を行うことが出来る。
【０１７０】
ただし、隣接する各フレームの画像に類似性が期待できるのはカメラが大きな移動をしない場合であり、カメラの位置姿勢が変化している場合には、必ずしもステレオ画像の類似性を利用した補正よりよい結果が得られるとは限らない。
【０１７１】
図１７は、観察者の左目の目に対してクロマキー合成結果の画像を提示するためのＨＭＤ１０００の機能構成例を示すブロック図である。なお、以下の説明では、観察者の左目に対してクロマキー合成結果の画像を提示するための一連の処理について説明するので、右目に対してクロマキー合成結果の画像を提示するための構成は図１７では省略している。しかし本実施形態でも観察者の右目、左目に対して同じ一連の処理によりクロマキー合成結果の画像を提示するので、以下の説明より、観察者の右目に対してクロマキー合成結果の画像を提示するための構成、及び処理については当業者であれば容易に相当し得る。
【０１７２】
ＣＧ画像受信部１０１０は、図４に示したものと同じである。しかし、上述の通り、以下では左目に対してクロマキー合成結果の画像を提示するための処理について説明するので、図１７では、ＣＧ画像受信部１０１０の構成のうち、左目に対する構成しか図示していない。
【０１７３】
次に、クロマキー合成部１３００について説明する。上述の通り、クロマキー合成部１３００についても、図１７では、左目に対してクロマキー合成結果の画像を提示するための構成しか図示していない。右目に対してもクロマキー合成結果の画像を提示するためには、図１７に示したクロマキー合成部１３００の構成と同じものを右目用として更にクロマキー合成部１３００に追加する必要がある。その場合、もちろん、カメラ、ＬＣＤについても第１の実施形態と同様に、右目用に用意し、クロマキー合成部１３００に接続する必要がある。
【０１７４】
クロマキー合成部１３００には、伸張された左目用ＣＧ画像が入力され、入力された左目用ＣＧ画像は、色判定部１３０１、画像切り替え部１３０９に入力される。
【０１７５】
色判定部１３０１は、図４に示した左目色判定部１１０１や右目色判定部１１０２が行う処理と同様の処理を行い、マスク画像を生成する。生成したマスク画像は、後段の画像ＦＩＦＯ１３１２、対応点検出部１３０３、マスク補正部１３０８に入力される。画像ＦＩＦＯ１３１２は、１フレーム分のマスク画像を保持するものであり、周知の通り、先に保持したものから順に出力する。従って、画像ＦＩＦＯ１３１２からは、１フレーム前のマスク画像が出力されることになる。画像ＦＩＦＯ１３１２から出力された１フレーム前のマスク画像は、対応点検出部１３０３に入力される。
【０１７６】
対応点検出部１３０３は、色判定部１３０１から出力されたマスク画像（現在フレームマスク画像）と、画像ＦＩＦＯ１３１２から出力されたマスク画像（前フレームマスク画像）を受ける。そして、図４に示した対応点検出部１１０３が行うものとして第１の実施形態で説明した処理において、左目用マスク画像、右目用マスク画像を、現在フレームマスク画像、前フレームマスク画像に置き換えた処理を行う。もちろん、一方のマスク画像上の非クロマキー領域において、クロマキー領域と隣接する部分を構成している各画素と位置的に対応する、他方のマスク画像上の画素位置を特定する為の処理についてはこれに限定するものではない。
【０１７７】
前フレーム傾き検出部１３０４、現在フレーム傾き検出部１３０５は何れも、図４に示した左目傾き検出部１１０４、右目傾き検出部１１０５と同様の処理を行う。即ち、前フレーム傾き検出部１３０４は、対応点検出部１３０３が前フレームマスク画像について生成したテーブル（前フレームマスク画像テーブル）を用いて、左目傾き検出部１１０４や右目傾き検出部１１０５と同様の処理を行う。これにより、クロマキー領域と非クロマキー領域との境界部分の傾きを求める。一方、現在フレーム傾き検出部１３０５は、対応点検出部１３０３が現在フレームマスク画像について生成したテーブル（現在フレームマスク画像テーブル）を用いて、左目傾き検出部１１０４や右目傾き検出部１１０５と同様の処理を行う。これにより、クロマキー領域と非クロマキー領域との境界部分の傾きを求める。
【０１７８】
誤り判定部１３０６は、前フレーム傾き検出部１３０４、現在フレーム傾き検出部１３０５から受けた傾きのデータを用いて、図４に示した誤り判定部１１０６と同様の処理を行う。即ち、前フレームマスク画像、現在フレームマスク画像の何れかにエラー箇所が存在するか否かをチェックする。
【０１７９】
また、誤り判定部１３０６は、現在フレームマスク画像についてエラー箇所の数をカウントする。そして、現在フレームマスク画像の全てのラインについてエラー箇所の数をカウントした結果、あるカウント値以上（例えば１０以上）である場合は、現在フレームマスク画像に対する最終的な判断結果として「エラー無し」と判断する。そして、その旨を示すフラグ情報を後段のマスク補正部１３０８に送出する。これは、シーンチェンジ等、１フレーム前の画像から現在のフレームが大きく変化した場合に対応するためである。
【０１８０】
マスク補正部１３０８は、図４に示した左目マスク補正部１１０８や右目マスク補正部１１１０と同様の処理で、色判定部１３０１から受けた現在フレームマスク画像に対するエラー箇所の補正処理を行う。
【０１８１】
画像切り替え部１３０９は、用いるマスク画像が現在フレームマスク画像である以外は、図４に示した左目画像切り替え部１１０９や右目画像切り替え部１１１１と同様の処理を行う。
【０１８２】
以上の処理により、各フレームの画像の類似性を利用し、欠損のある入力画像においても、クロマキー色とCGオブジェクトの境界線を正しく検出し、クロマキー合成に必要なクロマキー色の検出を良好に行うことが出来る。
【０１８３】
第１，２の実施形態では、ステレオ画像の類似性を利用して、欠損のある入力画像におけるクロマキー合成時に補正を行っていた。そのため近くの物体を撮影しているような場合には、ステレオ画像に類似性が乏しくなるため良好な結果を得られない。本実施形態では、近くの物体を撮影しているような場合にも、各フレームの画像の類似性を利用しているため、良好な補正を行うことができる。
【０１８４】
但し、本実施形態は、カメラの位置姿勢が変化している場合など、各フレームの画像に類似性が乏しい場合には良好な結果を得ることはできない。
【０１８５】
［第４の実施形態］
本実施形態では、上記実施形態のように必ずマスク画像の補正を行うものではなく、無線による圧縮済みのＣＧ画像の受信時にエラーが検出されたか否か、視差の量はいかほどか等の情報を用いて、マスク画像の補正を行うか否かを判断する。なお、本実施形態ではマスク画像の補正は、第１の実施形態で説明した方法により行うものとする。
【０１８６】
本実施形態の特徴の１つに、無線で圧縮済みのＣＧ画像を受信した場合に、係る受信のための通信時にエラーが生じたか否かにより、マスク画像の補正を行うか否かを判断することにある。
【０１８７】
上記実施形態のように、必ずマスク画像の補正を行うようにすると、副作用が生じて悪影響が出ることがある。従って、通信にエラーが生じた場合にマスク画像の補正を行うことにより、不要な補正を避けることができ、副作用の少ない補正を実現することが出来る。
【０１８８】
本実施形態のもう１つの特徴は、視差の量を考慮して、マスク画像の補正を行うか否かを判断する。補正の際には、左右の画像の類似性を利用している。しかし左右の画像は視差があるため、少しずつ異なっている。一般的には、遠くに見えるものほど左右の画像は同じように見え、近くのものほど異なって見えることが多い。そこで、輪郭線の傾きを比較して補正するか判断する際、遠くの物体については傾きが少し異なっていても補正が必要と判断し、近くの物体については傾きが大きく異なっていなければ補正しないと判断した方が適切な補正ができる。近くの物体か遠くの物体かは、視差が大きいか小さいかで判断できる。そこで視差の量を考慮して補正を行うかどうか判断することで、不要な補正を避けることができ、副作用の少ない補正を実現することが出来る。
【０１８９】
図１８は、本実施形態に係るＨＭＤ１０００の機能構成を示すブロック図である。図１８において、図４と同じ部分については同じ番号を付けており、その説明は省略する。
【０１９０】
無線画像受信部１９１１は、無線画像受信部１０１１と同様に、計算機３０００から無線で送信された圧縮済みの左目用ＣＧ画像と圧縮済みの右目用ＣＧ画像を受信し、それぞれを左目伸張部１０１２、右目伸張部１０１３に送出する。そして更に無線画像受信部１９１１は、係る受信の為の通信にエラーが生じたか否かをチェックする。係るチェックについては周知の技術であるので、これについての説明は省略する。無線画像受信部１９１１によるチェック結果を示すフラグ情報（通信エラーが生じているか否かを示すフラグ情報）は左目マスク補正部１４０８、右目マスク補正部１４１０に送出される。
【０１９１】
左目マスク補正部１４０８、右目マスク補正部１４１０は、係るフラグ情報を受け、受けたフラグ情報が、通信にエラーが生じている旨を示している場合にはそれぞれ、左目マスク補正部１１０８、右目マスク補正部１１１０が行う上述の処理を行う。一方、係るフラグ情報が、通信にエラーは生じていない旨を示している場合には、左目マスク補正部１４０８、右目マスク補正部１４１０の動作を禁止する。
【０１９２】
これにより、通信エラーがないにもかかわらず、不要なマスク画像の補正を行うことを避けることが出来る。
【０１９３】
更に、視差計算部１４０１は、上記視差計算部１２０１と同様の処理を行い、現在処理対象としているラインに対する視差を求める。そして、「求めた視差の値の絶対値＋３」を誤り判定部１４０６に送出する。
【０１９４】
誤り判定部１１０６は、傾きＶＳＬ３と傾きＶＳＲ３との差が係る閾値（求めた視差の値の絶対値＋３）以上であるか否かをチェックする。そして係るチェックの結果、差が閾値以上であれば、左目用ＣＧ画像、右目用ＣＧ画像の何れかにエラー箇所が存在するものと判断する。もちろん、視差を用いた閾値の算出方法については係る式に限定するものではないが、視差が大きいほど閾値を大きくし、視差が小さいほど閾値が小さくなるように、閾値の増減を制御することが好ましい。
【０１９５】
これにより、視差の少ない遠距離の物体に関しては輪郭線の傾きが少しでも異なっていたら欠損があると判定し、視差の大きい近距離の物体に関しては輪郭線の傾きがある程度あっても欠損がないと判定する。
【０１９６】
以上の処理を行うことにより、通信時にエラーが検出されたかどうか、視差の量がどのくらいあるかの情報を使って、クロマキー合成の際に補正を行うかどうか判断することができる。そのため不要な補正を避けることができ、副作用の少ない補正を実現することが出来る。
【０１９７】
なお、本実施形態では、補正にステレオ画像の類似性を利用したが、補正に各フレームの画像の類似性を利用しても良い。
【０１９８】
［第５の実施形態］
本実施形態では、ＨＭＤ１０００の動きを検出する。そして係る検出の結果、動きがあると判断される場合には第１の実施形態に係る構成でマスク画像を補正する処理を行い、動きがないと判断される場合には第３の実施形態に係る構成でマスク画像を補正する処理を行う。
【０１９９】
ＨＭＤ１０００の動きを検出する方法には様々なものがあるが、本実施形態では、ＨＭＤ１０００には加速度センサを取り付ける。そして、係る加速度センサによる計測結果が示す加速度がある閾値以上であれば、「動いている」と判断し、閾値よりも小さければ、「動いていない」と判断する。
【０２００】
第１の実施形態で説明したステレオ画像の類似性を利用した補正は、左右の画像を同時に撮影しているため、ＨＭＤが速い動きをしても問題なく補正を行うことが出来る。しかし、左右の画像は同一ではないため、場合によっては正しく補正できない問題がある。
【０２０１】
第３の実施形態において説明した、各フレームの画像の類似性を利用した補正は、ＨＭＤが動いていない場合には隣接する各フレームの画像の類似性が高く、正しく補正できることが期待できる。しかしＨＭＤが動いている場合には、前のフレームと現在のフレームに類似性が低くなり、正しく補正できない問題がある。
【０２０２】
そこでＨＭＤに動きがあるかどうかで上記２つの補正方法を切り換えることで、よりよい精度で補正を行う。
【０２０３】
図１９は、本実施形態に係るＨＭＤ１０００の外観例を示す図である。同図に示す如く、本実施形態に係るＨＭＤ１０００には、加速度センサ１９０５が取り付けられている。
【０２０４】
図２０は、本実施形態に係るＨＭＤ１０００の機能構成を示すブロック図である。図２０において、図４と同じ部分については同じ番号を付けており、その説明は省略する。
【０２０５】
クロマキー合成部１５０１は、図４に示したクロマキー合成部１１００に相当する。クロマキー合成部１５０２、１５０３はそれぞれ、図１７に示したクロマキー合成部１３００の構成を有する左目用のもの、右目用のものに相当する。
【０２０６】
画像切り替え部１５０４は、加速度センサ１９０５による計測結果（加速度）を受けると、係る加速度と、予め設定されている閾値との大小比較処理を行う。そして係る大小比較処理の結果、加速度が閾値以上であれば、「動いている」と判断し、クロマキー合成部１５０１から出力される画像を後段の左目ＬＣＤ１００３，右目ＬＣＤ１００４に送出する。一方、加速度が閾値よりも小さければ、「動いていない」と判断し、クロマキー合成部１５０２，１５０３から出力される画像を後段の左目ＬＣＤ１００３、右目ＬＣＤ１００４に送出する。
【０２０７】
以上の処理を行うことにより、ＨＭＤに動きがある時にはステレオ画像の類似性を用いて欠損のある画像を補正したクロマキー合成を行い、ＨＭＤの動きがない場合には各フレームの画像の類似性を用いて補正を行うことが出来る。
【０２０８】
このような構成をとることで、近くの物体を撮影しているときにも適用可能な各フレームの画像を利用した補正と、撮像系に動きがある場合にも適用可能なステレオ画像を利用した補正の両方の利点を活かした補正を行うことが出来る。
【０２０９】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのコンピュータプログラムを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０２１０】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２１１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２１２】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０２１３】
【図１】本発明の第１の実施形態に係るシステムをユーザが使用している様子を示す図である。
【図２】ＨＭＤ１０００の外観例を示す図である。
【図３】一般的なクロマキー合成処理を説明する図である。
【図４】ＨＭＤ１０００の機能構成を示すブロック図である。
【図５】クロマキー合成部１１００が行うクロマキー合成処理を示す図である。
【図６】ＣＧ画像（左目用ＣＧ画像、右目用ＣＧ画像の何れでも良い）中の画像情報が欠損したことにより、このＣＧ画像上にノイズが重畳された例を示す図である。
【図７】エラー箇所の補正について説明する図である。
【図８】右目用マスク画像、左目用マスク画像のそれぞれで同じラインを参照した場合に、ライン上における非クロマキー領域を特定する処理を説明する図である。
【図９】非クロマキー領域（斜線で示した部分）を構成する各画素と、クロマキー領域を構成する各画素と、を示す図である。
【図１０】（ａ）は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置、終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置が共に、クロマキー領域内の画素である場合を示す図である。（ｂ）は、左目用テーブルのｎ行目に登録されている開始位置で特定される画素位置とｘ座標値が同じ１ライン上の位置、終了位置で特定される画素位置とｘ座標値が同じ１ライン上の位置が共に、非クロマキー領域内の画素である場合を示す図である。
【図１１】左目用テーブルのｎ行目に登録されている開始位置のラインを補正する処理を説明する図である。
【図１２】右目用ＣＧ画像と左目用マスク画像との間の視差について説明する図である。
【図１３】視差に基づいてマスク画像を補正する処理を説明する図である。
【図１４】本実施形態に係るＨＭＤ１０００の機能構成を示すブロック図である。
【図１５】マスク画像の補正処理を説明する図である。
【図１６】隣接する各フレームの画像の類似性を説明する図である。
【図１７】観察者の左目の目に対してクロマキー合成結果の画像を提示するためのＨＭＤ１０００の機能構成例を示すブロック図である。
【図１８】本発明の第４の実施形態に係るＨＭＤ１０００の機能構成を示すブロック図である。
【図１９】本発明の第５の実施形態に係るＨＭＤ１０００の外観例を示す図である。
【図２０】本発明の第５の実施形態に係るＨＭＤ１０００の機能構成を示すブロック図である。
【図２１】ＨＭＤ１０００が、現実空間画像とＣＧ画像とをクロマキー合成したものを、ユーザ２０００の右目、左目に対して提示する為に行うメインの処理のフローチャートである。
【図２２】ステップＳ２１０５における処理の詳細を示すフローチャートである。
【図１】
2008276318.tif 000003
【図２】
2008276318.tif 000004
【図３】
2008276318.tif 000005
【図４】
2008276318.tif 000006
【図５】
2008276318.tif 000007
【図６】
2008276318.tif 000008
【図７】
2008276318.tif 000009
【図８】
2008276318.tif 000010
【図９】
2008276318.tif 000011
【図１０】
2008276318.tif 000012
【図１１】
2008276318.tif 000013
【図１２】
2008276318.tif 000014
【図１３】
2008276318.tif 000015
【図１４】
2008276318.tif 000016
【図１５】
2008276318.tif 000017
【図１６】
2008276318.tif 000018
【図１７】
2008276318.tif 000019
【図１８】
2008276318.tif 000020
【図１９】
2008276318.tif 000021
【図２０】
2008276318.tif 000022
【図２１】
2008276318.tif 000023
【図２２】
2008276318.tif 000024