(57)【要約】  本開示は、仮想視点の高速移動に追従して高精度の画像を変更することができるようにする画像処理装置および画像処理方法に関する。位置補正部は、所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、複数の点のうちのオクルージョン領域の境界の点の３次元位置を補正する。本開示は、例えば、所定の視点のカラー画像データとデプス画像データから仮想視点のカラー画像データを生成する画像処理装置等に適用することができる。
2017094536.tif 000002
【特許請求の範囲】
【請求項１】
所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、前記複数の点のうちのオクルージョン領域の境界の点の前記３次元位置を補正する位置補正部
を備える画像処理装置。
【請求項２】
前記位置補正部は、前記オクルージョン領域の境界の点の２次元位置を、前記オクルージョン領域の境界の点の近傍かつ手前側の点である参照点の２次元位置に補正する
ように構成された
請求項１に記載の画像処理装置。
【請求項３】
前記位置補正部は、前記オクルージョン領域の境界の点の奥行き方向の位置を補正する
ように構成された
請求項２に記載の画像処理装置。
【請求項４】
前記位置補正部は、前記オクルージョン領域の境界の点の２次元位置の補正量が閾値より小さい場合、前記オクルージョン領域の境界の点の奥行き方向の位置を補正する
請求項３に記載の画像処理装置。
【請求項５】
前記位置補正部は、前記参照点の奥行き方向の位置を用いて、前記オクルージョン領域の境界の点の奥行き方向の位置を補正する
請求項４に記載の画像処理装置。
【請求項６】
前記位置補正部により前記オクルージョン領域の境界の点の３次元位置が補正された前記３次元データに基づいて、前記所定の視点とは異なる視点のカラー画像データを生成するカラー画像データ生成部
をさらに備える
請求項１に記載の画像処理装置。
【請求項７】
前記色情報を補正する色補正部
をさらに備える
請求項１に記載の画像処理装置。
【請求項８】
前記色補正部は、前記オクルージョン領域の境界の点に連続する、その点との奥行き方向の位置の差分が所定の範囲内である点の前記色情報を、その点のうちの、前記オクルージョン領域の境界の点から最も遠い点の前記色情報に補正する
ように構成された
請求項７に記載の画像処理装置。
【請求項９】
前記所定の視点のカラー画像データとデプス画像データから前記３次元データを生成する３次元データ生成部
をさらに備える
請求項１に記載の画像処理装置。
【請求項１０】
画像処理装置が、
所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、前記複数の点のうちのオクルージョン領域の境界の点の前記３次元位置を補正する位置補正ステップ
を含む画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および画像処理方法に関し、特に、仮想視点の高速移動に追従して高精度の画像を変更することができるようにした画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
所定の視点の撮影画像から任意の仮想視点の画像を生成する技術は、古くから研究されている。この技術では、オクルージョン領域（Occlusion area）への対策が必要となる。【０００３】
即ち、画像は、３次元空間を２次元空間に射影したものであるため、画像では、背景の物体が前景の物体によって隠蔽される。従って、仮想視点が撮影時の視点と異なる場合、撮影画像では前景の物体によって隠蔽されたが、仮想視点の画像においては隠蔽されない背景の物体の領域であるオクルージョン領域が発生する。オクルージョン領域の画像は、撮影画像には存在しないため、新たに生成する必要がある。【０００４】
オクルージョン領域の画像の生成方法としては、例えば、所定の仮想視点におけるオクルージョン領域の画像を、所定の視点とは異なる視点の撮影画像を用いて生成する方法がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2006-285415号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のオクルージョン領域の画像の生成方法では、仮想視点ごとにオクルージョン領域の画像を生成する必要があるため、仮想視点の決定後にオクルージョン領域の画像が生成される。従って、例えば、ヘッドマウントディスプレイを装着した頭の動きに連動させて、ヘッドマウントディスプレイに表示される画像に対応する仮想視点を高速移動させる場合、オクルージョン領域の画像の生成が間に合わず、変更後の仮想視点の画像を表示できないことがある。【０００７】
本開示は、このような状況に鑑みてなされたものであり、仮想視点の高速移動に追従して高精度の画像を変更することができるようにするものである。
【課題を解決するための手段】
【０００８】
本開示の一側面の画像処理装置は、所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、前記複数の点のうちのオクルージョン領域の境界の点の前記３次元位置を補正する位置補正部を備える画像処理装置である。【０００９】
本開示の一側面の画像処理方法は、本開示の一側面の画像処理装置に対応する。【００１０】
本開示の一側面においては、所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、前記複数の点のうちのオクルージョン領域の境界の点の前記３次元位置が補正される。【００１１】
なお、本開示の一側面の画像処理装置は、コンピュータにプログラムを実行させることにより実現することができる。【００１２】
また、本開示の一側面の画像処理装置を実現するために、コンピュータに実行させるプログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
【発明の効果】
【００１３】
本開示の一側面によれば、画像を処理することができる。また、本開示の一側面によれば、仮想視点の高速移動に追従して高精度の画像を変更することができる。【００１４】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１５】
【図１】本開示を適用した画像処理装置の一実施の形態の構成例を示すブロック図である。
【図２】入力画像データの例を示す図である。
【図３】図２の背景、部分円、長方形、および円筒の３次元位置を示す図である。
【図４】図１の画像処理装置のカラー画像データ生成処理を説明するフローチャートである。
【図５】図４のオクルージョン対策処理の詳細を説明するフローチャートである。
【図６】図５の初期位置算出処理の詳細を説明するフローチャートである。
【図７】図５のパッチ生成処理の詳細を説明するフローチャートである。
【図８】接続情報に対応する三角形パッチの例を示す図である。
【図９】図５の移動算出処理の詳細を説明するフローチャートである。
【図１０】図９の移動方向決定処理の詳細を説明するフローチャートである。
【図１１】図１０の移動方向決定コア処理の詳細を説明するフローチャートである。
【図１２】移動方向の例を示す図である。
【図１３】デプスに対応する２次元位置を説明する図である。
【図１４】図９の移動ベクトル決定処理の詳細を説明するフローチャートである。
【図１５】図１４の移動ベクトル決定コア処理の詳細を説明するフローチャートである。
【図１６】図１５のalpha決定処理を説明するフローチャートである。
【図１７】図１５のmvz算出処理の詳細を説明するフローチャートである。
【図１８】図５の色補正処理の詳細を説明するフローチャートである。
【図１９】図１８の色参照位置決定コア処理の詳細を説明するフローチャートである。
【図２０】図１９のbeta決定処理の詳細を説明するフローチャートである。
【図２１】図１８の色補正コア処理を説明するフローチャートである。
【図２２】図５の位置補正処理のフローチャートを説明する図である。
【図２３】図２２の位置補正コア処理の詳細を説明するフローチャートである。
【図２４】位置算出部により生成された各点の３次元位置のうちの、ｙ座標がｙ１である点のｘ座標とｚ座標を示したグラフである。
【図２５】図２４のグラフにおいて接続情報を表したグラフである。
【図２６】色情報および３次元位置が補正された３次元データのうちの、ｙ座標がｙ１である点のｘ座標およびｚ座標並びに接続情報を示したグラフである。
【図２７】位置算出部により生成された各点の３次元位置のうちの、ｘ座標がｘ１である点のｙ座標とｚ座標を示したグラフである。
【図２８】図２７のグラフにおいて接続情報を表したグラフである。
【図２９】色情報および３次元位置が補正された３次元データのうちの、ｘ座標がｘ１である点のｙ座標およびｚ座標並びに接続情報を示したグラフである。
【図３０】移動方向の他の例を示す図である。
【図３１】コンピュータのハードウエアの構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本開示を実施するための形態（以下、実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．第１実施の形態：画像処理装置（図１乃至図３０）
２．第２実施の形態：コンピュータ（図３１）
【００１７】
＜第１実施の形態＞
（画像処理装置の一実施の形態の構成例）
図１は、本開示を適用した画像処理装置の一実施の形態の構成例を示すブロック図である。
【００１８】
図１の画像処理装置１０は、３次元データ生成部１１、移動ベクトル算出部１２、色補正部１３、位置補正部１４、およびカラー画像データ生成部１５により構成される。画像処理装置１０は、所定の１視点の各画素の色情報からなるカラー画像データと、各画素の被写体の奥行き方向の位置を表すデプスからなるデプス画像データから、その１視点とは異なる所定の範囲内の任意の仮想視点のカラー画像データを生成する。
【００１９】
具体的には、画像処理装置１０の３次元データ生成部１１は、位置算出部３１とパッチ生成部３２により構成される。３次元データ生成部１１は、カラー画像データとデプス画像データとから、複数の点（Vertex）の３次元位置、色情報、および接続関係を示す接続情報からなる３次元データを生成する。
【００２０】
より詳細には、位置算出部３１には、図示せぬカメラ等から所定の１視点のカラー画像データとデプス画像データが入力画像データとして入力される。位置算出部３１は、カラー画像データの各画素を点とし、デプス画像データに基づいて各点の３次元位置を生成する。位置算出部３１は、カラー画像データに基づいて、各点の３次元位置と色情報を対応付け、パッチ生成部３２に供給する。
【００２１】
パッチ生成部３２は、位置算出部３１から供給される各点の３次元位置に基づいて、各点を頂点として１以上の三角形パッチが形成されるように、接続情報を生成する。パッチ生成部３２は、各点の３次元位置、色情報、および接続情報からなる３次元データを移動ベクトル算出部１２に供給する。
【００２２】
移動ベクトル算出部１２は、パッチ生成部３２から供給される３次元データに基づいて、ｚ方向（奥行き方向）の位置（デプス）が非連続となるオクルージョン領域の境界の点を検出する。移動ベクトル算出部１２は、各点の３次元位置に基づいて、オクルージョン領域の境界の点の画面上の２次元位置の移動方向と３次元位置の移動ベクトルを決定する。また、移動ベクトル算出部１２は、オクルージョン領域の境界以外の点の２次元位置の移動方向と３次元位置の移動ベクトルを、移動しないことを表すものに決定する。移動ベクトル算出部１２は、各点の移動方向および移動ベクトル、並びに３次元データを色補正部１３に供給する。
【００２３】
色補正部１３は、移動ベクトル算出部１２から供給される移動方向と移動ベクトルに基づいて、３次元データに含まれる色情報を補正する。色補正部１３は、補正後の色情報を含む３次元データと移動ベクトルを位置補正部１４に供給する。
【００２４】
位置補正部１４は、色補正部１３から供給される移動ベクトルに基づいて、３次元データに含まれる、複数の点のうちのオクルージョン領域の境界の点の３次元位置を補正する。位置補正部１４は、補正後の３次元データをカラー画像データ生成部１５に供給する。
【００２５】
カラー画像データ生成部１５は、位置補正部１４から供給される３次元データに基づいて、ユーザの操作などにより入力される仮想視点のカラー画像データを生成する。具体的には、カラー画像データ生成部１５は、３次元データに基づいて３次元空間に配置される被写体を、仮想視点から２次元平面に投影することにより仮想視点のカラー画像データを生成する。カラー画像データ生成部１５は、仮想視点のカラー画像データを出力する。
【００２６】
以上のように、移動ベクトル算出部１２は、仮想視点によらず、同一の３次元データを用いて仮想視点のカラー画像データを生成する。従って、事前に３次元データを生成しておくことにより、仮想視点の高速移動に追従して仮想視点のカラー画像データを変更することができる。
【００２７】
（入力画像データの例）
図２は、入力画像データの例を示す図である。
【００２８】
図２の入力画像データは、図２のＡのカラー画像データ５１と、図２のＢのデプス画像データ５２により構成される。図２のＡでは、カラー画像データの色情報が模様で表されている。図２のＡに示すように、カラー画像データには、背景７０、一部が欠けた円である部分円７１および部分円７２、長方形７３、並びに円筒７４、および円筒７５が含まれている。
【００２９】
また、図２のＢの例では、デプス画像データの画素値は、遠いほど大きくなっている。図２のＢの例では、背景７０が最も白く(明るく)、部分円７１、部分円７２と長方形７３、円筒７４、円筒７５の順に徐々に黒く(暗く)なっており、この順に、奥行き方向の位置が遠い。
【００３０】
（３次元位置の例）
図３は、図２の背景７０、部分円７１、部分円７２、長方形７３、円筒７４、および円筒７５の３次元位置を示す図である。
【００３１】
図３に示すように、背景７０、部分円７１、部分円７２、長方形７３、円筒７４、および円筒７５の３次元位置のx座標およびy座標は、カラー画像データ５１の画面上の水平方向および垂直方向の位置座標に対応する。また、背景７０、部分円７１、部分円７２、長方形７３、円筒７４、および円筒７５の３次元位置のｚ座標は、デプス画像データ５２の画素値に対応する。
【００３２】
円筒７５と部分円７２が重なる領域、円筒７４と部分円７２が重なる領域、円筒７４と部分円７１が重なる領域、および、背景７０と、部分円７１、部分円７２、長方形７３、円筒７４、および円筒７５とが重なる領域は、入力画像データの視点からは隠蔽されて見えないが、仮想視点においては隠蔽されないオクルージョン領域である。
【００３３】
オクルージョン領域は、入力画像データの視点から見えない領域であるため、入力画像データには、オクルージョン領域のカラー画像データは存在しない。従って、画像処理装置１０は、入力画像データから３次元データを生成し、その３次元データのうちのオクルージョン領域の境界の点の３次元位置を移動させることにより、オクルージョン領域のカラー画像データを高精度で生成可能にする。
【００３４】
（画像処理装置の処理の説明）
図４は、図１の画像処理装置１０のカラー画像データ生成処理を説明するフローチャートである。このカラー画像データ生成処理は、例えば、入力画像データが画像処理装置１０に入力されたとき開始される。なお、カラー画像データ生成処理における変数は全処理で共通の変数であり、各処理において参照および更新が可能である。
【００３５】
図４のステップＳ１１において、画像処理装置１０は、オクルージョン領域のカラー画像データを高精度で生成可能にするオクルージョン対策処理を行う。このオクルージョン対策処理の詳細は、後述する図５を参照して説明する。
【００３６】
ステップＳ１２において、画像処理装置１０のカラー画像データ生成部１５は、ユーザの操作などにより入力される仮想視点が変更されたかどうかを判定する。ステップＳ１２で仮想視点が変更されたと判定された場合、ステップＳ１３において、カラー画像データ生成部１５は、位置補正部１４から供給される３次元データに基づいて、仮想視点のカラー画像データを生成し、出力する。そして、処理はステップＳ１４に進む。
【００３７】
一方、ステップＳ１２で仮想視点が変更されていないと判定された場合、処理はステップＳ１４に進む。
【００３８】
ステップＳ１４において、画像処理装置１０は、カラー画像データ生成処理を終了するかどうかを判定する。ステップＳ１４でカラー画像データ生成処理を終了しないと判定された場合、処理はステップＳ１２に戻り、カラー画像データ生成処理を終了するまで、ステップＳ１２乃至Ｓ１４の処理が繰り返される。
【００３９】
一方、ステップＳ１４でカラー画像データ生成処理を終了すると判定された場合、処理は終了する。
【００４０】
図５は、図４のステップＳ１１のオクルージョン対策処理の詳細を説明するフローチャートである。
【００４１】
図５のステップＳ３１において、３次元データ生成部１１の位置算出部３１は、各点の３次元位置と色情報を対応付ける初期位置算出処理を行う。この初期位置算出処理の詳細は、後述する図６を参照して説明する。
【００４２】
ステップＳ３２において、パッチ生成部３２は、各点の接続情報を生成するパッチ生成処理を行う。このパッチ生成処理の詳細は、後述する図７を参照して説明する。
【００４３】
ステップＳ３３において、移動ベクトル算出部１２は、各点の移動方向と移動ベクトルを算出する移動算出処理を行う。この移動算出処理の詳細は、後述する図９を参照して説明する。
【００４４】
ステップＳ３４において、色補正部１３は、各点の色情報を補正する色補正処理を行う。この色補正処理の詳細は、後述する図１８を参照して説明する。
【００４５】
ステップＳ３５において、位置補正部１４は、移動ベクトルに基づいてオクルージョン領域の境界の点の３次元位置を補正する位置補正処理を行う。この位置補正処理の詳細は、後述する図２２を参照して説明する。ステップＳ３５の処理後、処理は図４のステップＳ１１に戻り、ステップＳ１２に進む。
【００４６】
図６は、図５のステップＳ３１の初期位置算出処理の詳細を説明するフローチャートである。
【００４７】
図６のステップＳ５１において、位置算出部３１は、処理対象の点（以下、対象点という）とする画素が左から何番目の画素であるかを表すｘを０に設定し、下から何番目の画素であるかを表すｙを０に設定する。
【００４８】
ステップＳ５２において、位置算出部３１は、ｙが、入力画像データのうちのカラー画像データの垂直方向の画素数heightより小さいかどうかを判定する。ステップＳ５２でｙが画素数heightより小さいと判定された場合、処理はステップＳ５３に進む。
【００４９】
ステップＳ５３において、位置算出部３１は、ｘが、入力画像データのうちのカラー画像データの水平方向の画素数widthより小さいかどうかを判定する。ステップＳ５３でｘが画素数widthより小さいと判定された場合、処理はステップＳ５４に進む。
【００５０】
ステップＳ５４において、位置算出部３１は、入力画像データのうちのカラー画像データから、左からｘ番目であり、下からｙ番目である画素の画面上の位置（x,y）の色情報を取得する。
【００５１】
ステップＳ５５において、位置算出部３１は、入力画像データのうちのデプス画像データから、位置（x,y）のデプスｚを取得する。
【００５２】
ステップＳ５６において、位置算出部３１は、３次元位置（x,y,z）に位置（x,y）の色情報を対応付けて、パッチ生成部３２に供給する。
【００５３】
ステップＳ５７において、位置算出部３１は、ｘを１だけインクリメントする。そして、処理はステップＳ５３に戻り、ｘが画素数widthになるまで、ステップＳ５３乃至Ｓ５７の処理が繰り返される。
【００５４】
一方、ステップＳ５３で、ｘが画素数width以上であると判定された場合、即ち下からｙ番目の行の全ての画素が対象点とされた場合、処理はステップＳ５８に進む。
【００５５】
ステップＳ５８において、位置算出部３１は、ｘを０に設定し、ｙを１だけインクリメントする。そして、処理はステップＳ５２に戻り、ｙが画素数heightになるまで、ステップＳ５２乃至Ｓ５８の処理が繰り返される。
【００５６】
一方、ステップＳ５２でｙが画素数height以上であると判定された場合、即ち全画素が対象点とされた場合、処理は図５のステップＳ３１に戻り、ステップＳ３２に進む。
【００５７】
図７は、図５のステップＳ３２のパッチ生成処理の詳細を説明するフローチャートである。
【００５８】
図７のステップＳ７１乃至Ｓ７３，Ｓ７５、およびＳ７６の処理は、位置算出部３１ではなくパッチ生成部３２により行われることを除いて、図６のステップＳ５１乃至Ｓ５３，Ｓ５７、およびＳ５８の処理と同様であるので、説明は適宜省略する。
【００５９】
ステップＳ７３でｘが画素数widthより小さいと判定された場合、処理はステップＳ７４に進む。
【００６０】
ステップＳ７４において、パッチ生成部３２は、位置算出部３１から供給される対象点の３次元位置（x,y,z）に基づいて、対象点を頂点とする三角形パッチが形成されるように、対象点の接続情報を生成する。そして、処理はステップＳ７５に進む。
【００６１】
また、ステップＳ７２でｙが画素数height以上であると判定された場合、即ち全画素が対象点とされた場合、パッチ生成部３２は、各点の３次元位置（x,y,z）、色情報、および接続情報からなる３次元データを移動ベクトル算出部１２に供給する。そして、処理は図５のステップＳ３２に戻り、ステップＳ３３に進む。
【００６２】
（三角形パッチの例）
図８は、図１のパッチ生成部３２により生成される接続情報に対応する三角形パッチの例を示す図である。
【００６３】
図８の横軸は、各点９１の３次元位置（x,y,z）のｘ座標を表し、縦軸はｙ座標を表す。また、図８では、３次元データに対応する点９１のうちの、７×７個の点９１のみを記載している。
【００６４】
図８に示すように、パッチ生成部３２は、例えば、近傍の３つの点９１を頂点とする三角形パッチ９２が形成されるように、各点９１の接続情報を生成する。具体的には、パッチ生成部３２は、各２×２個の点９１のうちの右下の点９１を除いた３つの点９１が互いに接続し、左上の点９１を除いた３つの点９１が互いに接続するように、各点９１の接続情報を生成する。
【００６５】
図９は、図５のステップＳ３３の移動算出処理の詳細を説明するフローチャートである。
【００６６】
図９のステップＳ９１において、移動ベクトル算出部１２は、全ての点９１の移動方向を決定する移動方向決定処理を行う。この移動方向決定処理の詳細は、後述する図１０を参照して説明する。
【００６７】
ステップＳ９２において、移動ベクトル算出部１２は、全ての点９１の移動ベクトルを決定する移動ベクトル決定処理を行う。この移動ベクトル決定処理の詳細は、後述する図１４を参照して説明する。
【００６８】
図１０は、図９のステップＳ９１の移動方向決定処理の詳細を説明するフローチャートである。
【００６９】
図１０のステップＳ１１１乃至Ｓ１１３，Ｓ１１５、およびＳ１１６の処理は、位置算出部３１ではなく移動ベクトル算出部１２により行われることを除いて、図６のステップＳ５１乃至Ｓ５３、Ｓ５７、およびＳ５８の処理と同様であるので、説明は適宜省略する。
【００７０】
ステップＳ１１３でｘが画素数widthより小さいと判定された場合、処理はステップＳ１１４に進む。
【００７１】
ステップＳ１１４において、移動ベクトル算出部１２は、対象点の移動方向を決定する移動方向決定コア処理を行う。この移動方向決定コア処理の詳細は、後述する図１１を参照して説明する。ステップＳ１１４の処理後、処理はステップＳ１１５に進む。
【００７２】
また、ステップＳ１１２でｙが画素数height以上であると判定された場合、即ち全画素が対象点とされた場合、移動ベクトル算出部１２は、全ての点９１の移動方向を色補正部１３に供給する。そして、処理は、図９のステップＳ９１に戻り、ステップＳ９２に進む。
【００７３】
図１１は、図１０のステップＳ１１４の移動方向決定コア処理の詳細を説明するフローチャートである。
【００７４】
図１１のステップＳ１３１において、移動ベクトル算出部１２は、対象点の画面上の２次元位置の移動方向dirを、移動しないことを表すNONEに設定する。移動方向dirとしては、図１２に示すように、NONEのほか、上方向を表すUU、右方向を表すRR、下方向を表すDD、左方向を表すLLを設定することができる。
【００７５】
ステップＳ１３２において、移動ベクトル算出部１２は、対象点の近傍の点９１のデプスz_LL,z_DL,z_UU,z_DD,z_UR,z_RRを取得する。デプスz_LL,z_DL,z_UU,z_DD,z_UR,z_RRは、それぞれ、対象点の左、左下、上、下、右上、右の点９１のデプスである。具体的には、図１３に示すように、対象点の画面上の２次元位置を（x,y）とすると、デプスz_LL,z_DL,z_UU,z_DD,z_UR,z_RRは、それぞれ、位置(x-1,y),(x-1,y-1),(x,y+1),(x,y-1),(x+1,y+1),(x+1,y)の点９１のデプスである。なお、図１３において、正方形は、各点９１に対応する画素を表している。
【００７６】
ステップＳ１３３において、移動ベクトル算出部１２は、対象点のデプスｚとデプスz_LL,z_DL,z_UU,z_DD,z_UR,z_RRそれぞれとの差分diffLL,diffDL,diffUU,diffDD,diffUR,diffRRを求める。
【００７７】
ステップＳ１３４において、移動ベクトル算出部１２は、条件式dir_UUを満たすかどうかを判定する。条件式dir_UUは、
(diffLL > ThDepth && diffUU > ThDepth && diffUR > ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU > ThDepth && diffUR > ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU > ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL > ThDepth && diffUU > ThDepth && diffUR > ThDepth && diffRR > ThDepth && diffDD <= ThDepth && diffDL <= ThDepth)
である。
【００７８】
即ち、差分diff_UUとdiff_URが閾値ThDepthより大きく、差分diff_RR,diff_DD、およびdiff_DLが閾値ThDepth以下である場合、差分diff_UUのみが閾値ThDepthより大きい場合、または、差分diff_DDとdiff_DLのみが閾値ThDepth以下である場合、移動ベクトル算出部１２は条件式dir_UUを満たすと判定する。
【００７９】
ステップＳ１３４で条件式dir_UUを満たすと判定された場合、移動ベクトル算出部１２は、対象点をオクルージョン領域の境界の点９１として検出し、処理をステップＳ１３５に進める。ステップＳ１３５において、移動ベクトル算出部１２は、移動方向dirを、上方向を表すUUに設定する。そして、処理はステップＳ１４２に進む。
【００８０】
一方、ステップＳ１３４で条件式dir_UUを満たしていないと判定された場合、ステップＳ１３６において、条件式dir_RRを満たすかどうかを判定する。条件式dir_RRは、
(diffLL <= ThDepth && diffUU > ThDepth && diffUR > ThDepth && diffRR > ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR > ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR > ThDepth && diffRR > ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR > ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR > ThDepth && diffRR > ThDepth && diffDD > ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU > ThDepth && diffUR > ThDepth && diffRR > ThDepth && diffDD > ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR > ThDepth && diffRR > ThDepth && diffDD > ThDepth && diffDL > ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR > ThDepth && diffDD > ThDepth && diffDL <= ThDepth) 
【００８１】
即ち、差分diff_URとdiff_RRが閾値ThDepthより大きく、差分diff_LLとdiff_DLが閾値ThDepth以下であり、差分diff_UUとdiff_DDの少なくとも一方が閾値ThDepthより大きい場合、差分diff_LL,diff_UU,diff_DD、およびdif_DLが閾値ThDepth以下であり、差分diff_URとdiff_RRの少なくとも一方が閾値ThDepthより大きい場合、差分diff_RRと差分diff_DDが閾値ThDepthより大きく、差分diff_LLとdiff_UUが閾値ThDepth以下であり、差分diff_URと差分diff_DLが両方とも閾値ThDepthより大きいか、または、閾値ThDepth以下である場合、移動ベクトル算出部１２は条件式dir_RRを満たすと判定する。
【００８２】
ステップＳ１３６で条件式dir_RRを満たすと判定された場合、移動ベクトル算出部１２は、対象点をオクルージョン領域の境界の点９１として検出し、処理をステップＳ１３７に進める。ステップＳ１３７において、移動ベクトル算出部１２は、移動方向dirを右方向を表すRRに設定する。そして、処理はステップＳ１４２に進む。
【００８３】
一方、ステップＳ１３６で条件式dir_RRを満たしていないと判定された場合、ステップＳ１３８において、移動ベクトル算出部１２は、条件式dir_DDを満たすかどうかを判定する。条件式dir_DDは、
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR > ThDepth && diffDD > ThDepth && diffDL > ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD > ThDepth && diffDL <= ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD > ThDepth && diffDL > ThDepth) ||
(diffLL > ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR > ThDepth && diffDD > ThDepth && diffDL > ThDepth)
である。
【００８４】
即ち、差分diff_DDとdiff_DLが閾値ThDepthより大きく、差分diff_LL,diff_UU、およびdiff_URが閾値ThDepth以下である場合、差分diff_DDのみが閾値ThDepthより大きい場合、または、差分diff_UUとdiff_URのみが閾値ThDepth以下である場合、移動ベクトル算出部１２は条件式dir_DDを満たすと判定する。
【００８５】
ステップＳ１３８で条件式dir_DDを満たすと判定された場合、移動ベクトル算出部１２は、対象点をオクルージョン領域の境界の点９１として検出し、処理をステップＳ１３９に進める。ステップＳ１３９において、移動ベクトル算出部１２は、移動方向dirを、下方向を表すDDに設定する。そして、処理はステップＳ１４２に進む。
【００８６】
一方、ステップＳ１３８で条件式dir_DDを満たしていないと判定された場合、ステップＳ１４０において、条件式dir_LLを満たすかどうかを判定する。条件式dir_LLは、
(diffLL > ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD > ThDepth && diffDL > ThDepth) ||
(diffLL <= ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL > ThDepth) ||
(diffLL > ThDepth && diffUU > ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL > ThDepth) ||
(diffLL > ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL <= ThDepth) ||
(diffLL > ThDepth && diffUU <= ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL > ThDepth) ||
(diffLL > ThDepth && diffUU > ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD > ThDepth && diffDL > ThDepth) || 
(diffLL > ThDepth && diffUU > ThDepth && diffUR > ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL > ThDepth) ||
(diffLL > ThDepth && diffUU > ThDepth && diffUR <= ThDepth && diffRR <= ThDepth && diffDD <= ThDepth && diffDL <= ThDepth)
【００８７】
即ち、差分diff_LLとdiff_DLが閾値ThDepthより大きく、差分diff_URとdiff_RRが閾値ThDepth以下であり、差分diff_UUとdiff_DDの少なくとも一方が閾値ThDepthより大きい場合、差分diff_UU,diff_UR,diff_RR、およびdif_DDが閾値ThDepth以下であり、差分diff_LLとdiff_DLの少なくとも一方が閾値ThDepthより大きい場合、差分diff_LLと差分diff_UUが閾値ThDepthより大きく、差分diff_RRとdiff_DDが閾値ThDepth以下であり、差分diff_URと差分diff_DLが両方とも閾値ThDepthより大きいか、または、閾値ThDepth以下である場合、移動ベクトル算出部１２は条件式dir_LLを満たすと判定する。
【００８８】
ステップＳ１４０で条件式dir_LLを満たすと判定された場合、移動ベクトル算出部１２は、対象点をオクルージョン領域の境界の点９１として検出し、処理をステップＳ１４１に進める。ステップＳ１４１において、移動ベクトル算出部１２は、移動方向dirを左方向を表すLLに設定する。そして、処理はステップＳ１４２に進む。
【００８９】
ステップＳ１４２において、移動ベクトル算出部１２は、対象点の移動方向dirを保存する。そして、処理は、図１０のステップＳ１１４に戻り、ステップＳ１１５に進む。
【００９０】
以上のように、移動ベクトル算出部１２は、対象点が、条件式dir_UU,dir_RR,dir_DD、またはdir_LLを満たす場合、対象点をオクルージョン領域の境界の点９１として検出し、対象点の移動方向dirをNONE以外に設定する。
【００９１】
図１４は、図９のステップＳ９２の移動ベクトル決定処理の詳細を説明するフローチャートである。
【００９２】
図１４のステップＳ１５１乃至Ｓ１５３，Ｓ１５５、およびＳ１５６の処理は、位置算出部３１ではなく移動ベクトル算出部１２により行われることを除いて、図６のステップＳ５１乃至Ｓ５３、Ｓ５７、およびＳ５８の処理と同様であるので、説明は適宜省略する。
【００９３】
ステップＳ１５３でｘが画素数widthより小さいと判定された場合、処理はステップＳ１５４に進む。
【００９４】
ステップＳ１５４において、移動ベクトル算出部１２は、対象点の移動ベクトルを決定する移動ベクトル決定コア処理を行う。この移動ベクトル決定コア処理の詳細は、後述する図１５を参照して説明する。ステップＳ１５４の処理後、処理はステップＳ１５５に進む。
【００９５】
また、ステップＳ１５２でｙが画素数height以上であると判定された場合、即ち全画素が対象点とされた場合、移動ベクトル算出部１２は、全ての点９１の移動ベクトルと３次元データを色補正部１３に供給する。そして、処理は、図９のステップＳ９２に戻り、図５のステップＳ３３に戻り、ステップＳ３４に進む。
【００９６】
図１５は、図１４のステップＳ１５４の移動ベクトル決定コア処理の詳細を説明するフローチャートである。
【００９７】
図１５のステップＳ１７１において、移動ベクトル算出部１２は、対象点の移動方向dirがNONEであるかどうかを判定する。ステップＳ１７１で対象点の移動方向がNONEではないと判定された場合、ステップＳ１７２において、移動ベクトル算出部１２は、depth_curを、対象点のデプスｚに設定する。
【００９８】
ステップＳ１７３において、移動ベクトル算出部１２は、移動方向dirが表す方向のx座標の正負を表すalphaXとｙ座標の正負を表すalphaYを決定するalpha決定処理を行う。このalpha決定処理の詳細は、後述する図１６を参照して説明する。
【００９９】
ステップＳ１７４において、移動ベクトル算出部１２は、対象点の移動量を画素数で表すmoveを１に設定する。また、移動ベクトル算出部１２は、behind_flagを０に設定する。
【０１００】
behind_flagは、画面上の２次元位置が、後述するステップＳ１７６で求められる位置（tar_x,tar_y）である点９１の奥行き方向の位置より対象点が奥側になったかどうかを表すフラグである。behind_flagは、画面上の２次元位置が位置（tar_x,tar_y）である点９１の奥行き方向の位置より対象点が奥側になったことを表す場合１であり、奥側にならなかったことを表す場合０である。
【０１０１】
ステップＳ１７５において、移動ベクトル算出部１２は、moveが最大移動量より小さいかどうかを判定する。最大移動量は、仮想視点がとり得る範囲に応じて決定される。ステップＳ１７５でmoveが最大移動量より小さいと判定された場合、処理はステップＳ１７６に進む。
【０１０２】
ステップＳ１７６において、移動ベクトル算出部１２は、対象点のｘ座標とmoveのalphaX倍とを加算してtar_xを求める。また、移動ベクトル算出部１２は、対象点のｙ座標とmoveのalphaY倍とを加算してtar_yを求める。
【０１０３】
ステップＳ１７７において、移動ベクトル算出部１２は、画面上の２次元位置が位置（tar_x,tar_y）である点９１のデプスtar_zをdepth_tarに設定する。ステップＳ１７８において、移動ベクトル算出部１２は、depth_tarが、depth_curから移動閾値を減算した値より小さいかどうかを判定する。移動閾値は、デプスの誤差を考慮して設定される。
【０１０４】
ステップＳ１７８で、depth_tarが、depth_curから移動閾値を減算した値以上であると判定された場合、移動ベクトル算出部１２は、対象点が、位置（tar_x,tar_y）の点９１より手前側にあると判断し、処理をステップＳ１８０に進める。
【０１０５】
一方、ステップＳ１７８で、depth_tarが、depth_curから移動閾値を減算した値より小さいと判定された場合、移動ベクトル算出部１２は、対象点が、位置（tar_x,tar_y）の点９１より奥側にあると判断し、処理をステップＳ１７９に進める。
【０１０６】
ステップＳ１７９において、移動ベクトル算出部１２は、behind_flagを１に設定し、処理をステップＳ１８０に進める。
【０１０７】
ステップＳ１８０において、behind_flagが１であり、かつ、depth_tarがdepth_curより大きいかどうかを判定する。
【０１０８】
ステップＳ１８０で、behind_flagが１であり、かつ、depth_tarがdepth_curより大きい場合、即ち、位置（tar_x,tar_y）の点９１が対象点より手前側にある状態から奥側にある状態に変化した場合、処理はステップＳ１８３に進む。
【０１０９】
一方、ステップＳ１８０で、behind_flagが１ではない、または、depth_tarがdepth_cur以下である場合、即ち、位置（tar_x,tar_y）の点９１が全て対象点より奥側にあるか、または、位置（tar_x,tar_y）の点９１が対象点より手前側にある状態から奥側にある状態に変化していない場合、処理はステップＳ１８１に進む。
【０１１０】
ステップＳ１８１において、移動ベクトル算出部１２は、moveを１だけインクリメントして、処理をステップＳ１７５に戻し、以降の処理を繰り返す。
【０１１１】
また、ステップＳ１７５で、moveが最大移動量以上であると判定された場合、処理はステップＳ１８２に進む。ステップＳ１８２において、移動ベクトル算出部１２は、behind_flagが１であるかどうかを判定する。
【０１１２】
ステップＳ１８２でbehind_flagが１であると判定された場合、即ち、位置（tar_x,tar_y）の点９１が対象点より手前側にある状態から奥側にある状態に変化しなかった場合、処理はステップＳ１８３に進む。
【０１１３】
ステップＳ１８３において、移動ベクトル算出部１２は、対象点の移動ベクトルのｘ成分mvxを、alphaXの(move-1)倍に決定し、ｙ成分mvyを、alphaYの(move-1)倍に決定する。
【０１１４】
即ち、位置（tar_x,tar_y）の点９１が対象点より手前側にある状態から奥側にある状態に変化した場合、または、位置（tar_x,tar_y）の点９１が対象点より手前側にある状態から奥側にある状態に変化せずに、moveが最大移動量になった場合、移動ベクトル算出部１２は、直前のmove、つまり現在のmoveから１を減算した値を最終的なmoveとし、ｘ成分mvxとｙ成分mvyを決定する。
【０１１５】
ステップＳ１８４において、移動ベクトル算出部１２は、対象点の移動ベクトルのｚ成分mvzを算出するmvz算出処理を行う。このmvz算出処理の詳細は、後述する図１７を参照して説明する。ステップＳ１８４の処理後、処理はステップＳ１８６に進む。
【０１１６】
一方、ステップＳ１７１で移動方向dirがNONEであると判定された場合、即ち、対象点がオクルージョン領域の境界の点ではない場合、処理はステップＳ１８５に進む。また、ステップＳ１８２でbehind_flagが１ではないと判定された場合、即ち、moveが０から最大移動量になるまでの間に一度も位置（tar_x,tar_y）の点９１が対象点より手前側にならない場合、処理はステップＳ１８５に進む。
【０１１７】
ステップＳ１８５において、移動ベクトル算出部１２は、ｘ成分mvx,ｙ成分mvy、およびｚ成分mvzを０に設定し、ステップＳ１８６に進める。
【０１１８】
ステップＳ１８６において、移動ベクトル算出部１２は、移動ベクトル(mvx,mvy,mvz)を保存し、処理を図１４のステップＳ１５４に戻り、処理をステップＳ１５５に進める。
【０１１９】
以上のように、移動ベクトル算出部１２は、対象点がオクルージョン領域の境界の点９１であり、かつ、対象点から移動方向dirが表す方向に、対象点より手前側にある対象点の近傍の点９１が存在する場合、その点９１（参照点）の２次元位置に対象点の２次元位置を移動させるｘ成分mvxとｙ成分mvyを決定する。
【０１２０】
図１６は、図１５のステップＳ１７３のalpha決定処理を説明するフローチャートである。
【０１２１】
図１６のステップＳ２０１において、移動ベクトル算出部１２は、alphaXとalphaYを０に設定する。
【０１２２】
ステップＳ２０２において、移動ベクトル算出部１２は、移動方向dirがLLであるかどうかを判定する。ステップＳ２０２で移動方向dirがLLであると判定された場合、ステップＳ２０３において、移動ベクトル算出部１２は、alphaXを−１に設定する。そして、処理は図１５のステップＳ１７３に戻り、ステップＳ１７４に進む。
【０１２３】
一方、ステップＳ２０２で移動方向dirがLLではないと判定された場合、ステップＳ２０４において、移動ベクトル算出部１２は、移動方向dirがRRであるかどうかを判定する。ステップＳ２０４で移動方向dirがRRであると判定された場合、ステップＳ２０５において、移動ベクトル算出部１２は、alphaXを１に設定する。そして、処理は図１５のステップＳ１７３に戻り、ステップＳ１７４に進む。
【０１２４】
また、ステップＳ２０４で移動方向dirがRRではないと判定された場合、ステップＳ２０６において、移動ベクトル算出部１２は、移動方向dirがUUであるかどうかを判定する。ステップＳ２０６で移動方向dirがUUであると判定された場合、ステップＳ２０７において、移動ベクトル算出部１２は、alphaYを１に設定する。そして、処理は図１５のステップＳ１７３に戻り、ステップＳ１７４に進む。
【０１２５】
一方、ステップＳ２０６で移動方向dirがUUではないと判定された場合、即ち、移動方向dirがDDである場合、ステップＳ２０８において、移動ベクトル算出部１２は、alphaYを−１に設定する。そして、処理は図１５のステップＳ１７３に戻り、ステップＳ１７４に進む。
【０１２６】
図１７は、図１５のステップＳ１８４のmvz算出処理の詳細を説明するフローチャートである。
【０１２７】
図１７のステップＳ２２１において、移動ベクトル算出部１２は、割合ratioを、対象点の移動ベクトルのｘ成分mvxとｙ成分mvyの絶対値の和を、最大移動量の半分で除算した値を１から減算した値に設定する。割合ratioは、対象点の移動後のデプスdepth_newにおける、位置（tar_x,tar_y）の点９１のデプスdepth_tarの割合である。
【０１２８】
ステップＳ２２２において、割合ratioが０より小さいかどうかを判定する。ステップＳ２２２で割合ratioが０以上であると判定された場合、ｘ成分mvxとｙ成分mvyの和が最大移動量の半分以下である場合、処理はステップＳ２２４に進む。
【０１２９】
一方、ステップＳ２２２で割合ratioが０より小さいと判定された場合、即ち、ｘ成分mvxとｙ成分mvyの和が最大移動量の半分より大きい場合、処理はステップＳ２２３に進む。ステップＳ２２３において、移動ベクトル算出部１２は、割合ratioを０に変更し、処理をステップＳ２２４に進める。
【０１３０】
ステップＳ２２４において、移動ベクトル算出部１２は、対象点の移動後のデプスdepth_newを、移動前のデプスdepth_curに(1-ratio)を乗算した値と位置（tar_x,tar_y）の点９１(参照点)のデプスdepth_tarにratioを乗算した値の和に決定する。
【０１３１】
ステップＳ２２５において、移動ベクトル算出部１２は、対象点の移動後のデプスdepth_newから対象点の移動前のデプスdepth_curを減算した値を、対象点の移動ベクトルのｚ成分mvzに決定する。そして、処理は図１５のステップＳ１８４に戻り、ステップＳ１８６に進む。
【０１３２】
以上のように、対象点の移動ベクトルのｘ成分mvxとｙ成分mvyの和が、閾値としての最大移動量の半分より小さい場合、移動ベクトル算出部１２は、対象点の移動ベクトルのｚ成分mvzを０以外に設定する。
【０１３３】
図１７の例では、最大移動量の半分を閾値として対象点の移動ベクトルのｚ成分mvzを０以外に設定するか、または、０に設定するかが決定されたが、閾値は、最大移動量の半分に限定されない。
【０１３４】
図１８は、図５のステップＳ３４の色補正処理の詳細を説明するフローチャートである。
【０１３５】
図１８のステップＳ２４１乃至Ｓ２４３，Ｓ２４６、およびＳ２４７の処理は、位置算出部３１ではなく色補正部１３により行われることを除いて、図６のステップＳ５１乃至Ｓ５３、Ｓ５７、およびＳ５８の処理と同様であるので、説明は適宜省略する。
【０１３６】
ステップＳ２４３でｘが画素数widthより小さいと判定された場合、処理はステップＳ２４４に進む。
【０１３７】
ステップＳ２４４において、色補正部１３は、対象点の色情報の補正時に参照する色情報に対応する点９１の位置を決定する色参照位置決定コア処理を行う。この色参照位置決定コア処理の詳細は、後述する図１９を参照して説明する。
【０１３８】
ステップＳ２４５において、色補正部１３は、対象点の色情報を補正する色補正コア処理を行う。この色補正コア処理の詳細は、後述する図２１を参照して説明する。ステップＳ２４５の処理後、処理はステップＳ２４６に進む。
【０１３９】
また、ステップＳ２４２でｙが画素数height以上であると判定された場合、即ち全画素が対象点とされた場合、色補正部１３は、色情報が補正された３次元データと、移動ベクトル算出部１２から供給される移動ベクトル(mvx,mvy,mvz)とを、位置補正部１４に供給する。そして、処理は、図５のステップＳ３４に戻り、ステップＳ３５に進む。
【０１４０】
図１９は、図１８のステップＳ２４４の色参照位置決定コア処理の詳細を説明するフローチャートである。
【０１４１】
図１９のステップＳ２６１において、色補正部１３は、offsetを０に設定する。ステップＳ２６２において、色補正部１３は、移動ベクトル算出部１２から供給される移動方向dirがNONEであるかどうかを判定する。ステップＳ２６２で移動方向dirがNONEではないと判定された場合、処理はステップＳ２６３に進む。
【０１４２】
ステップＳ２６３において、色補正部１３は、depth_curを対象点のデプスｚに設定する。ステップＳ２６４において、色補正部１３は、移動方向dirが表す方向とは逆の方向のx座標の正負を表すbetaXとｙ座標の正負を表すbetaYを決定するbeta決定処理を行う。このbeta決定処理の詳細は、後述する図２０を参照して説明する。
【０１４３】
ステップＳ２６５において、色補正部１３は、offsetが最大オフセット量以下であるかどうかを判定する。ステップＳ２６５でoffsetが最大オフセット量以下であると判定された場合、処理はステップＳ２６６に進む。
【０１４４】
ステップＳ２６６において、色補正部１３は、対象点の色情報の補正時に参照する色情報に対応する点９１の位置のｘ座標ref_xを、対象点のｘ座標とbetaX倍のoffsetとの和に決定する。また、色補正部１３は、対象点の色情報の補正時に参照する色情報に対応する点９１の位置のｙ座標ref_yを、対象点のｙ座標とbetaY倍のoffsetとの和に決定する。
【０１４５】
ステップＳ２６７において、色補正部１３は、depth_refを位置(ref_x,ref_y)の点９１のデプスref_zに設定する。ステップＳ２６８において、色補正部１３は、depth_refからdepth_curを減算した値の絶対値がオフセット閾値より大きいかどうかを判定する。
【０１４６】
ステップＳ２６８でdepth_refからdepth_curを減算した値の絶対値がオフセット閾値以下であると判定された場合、色補正部１３は、対象点と位置(ref_x,ref_y)の点９１の被写体が同一であると判断し、処理をステップＳ２６９に進める。ステップＳ２６９において、色補正部１３は、offsetを１だけインクリメントして、処理をステップＳ２６５に戻し、以降の処理を繰り返す。
【０１４７】
一方、ステップＳ２６８でdepth_refからdepth_curを減算した値の絶対値がオフセット閾値より大きいと判定された場合、色補正部１３は、対象点と位置(ref_x,ref_y)の点９１の被写体が異なると判断し、処理をステップＳ２７０に進める。
【０１４８】
また、ステップＳ２６５でoffsetが最大オフセット量より大きいと判定された場合、処理はステップＳ２７０に進む。
【０１４９】
ステップＳ２７０において、色補正部１３は、offsetを１だけデクリメントする。即ち、対象点と位置(ref_x,ref_y)の点９１の被写体が異なった場合、または、対象点と位置(ref_x,ref_y)の点９１の被写体が同一である状態から異なる状態に変化せずに、offsetが最大オフセット量を超えた場合、色補正部１３は、直前のoffsetを最終的なoffsetに設定する。そして、処理は図１８のステップＳ２４４に戻り、ステップＳ２４５に進む。
【０１５０】
一方、ステップＳ２６２で移動方向dirがNONEであると判定された場合、即ち対象点がオクルージョン領域の境界の点９１ではない場合、処理は図１８のステップＳ２４４に戻り、ステップＳ２４５に進む。
【０１５１】
以上により、最終的な位置(ref_x,ref_y)は、オクルージョン領域の境界の点９１が対象点である場合に、対象点に連続する対象点との奥行き方向の位置の差分がオフセット閾値以内である対象点から最も遠い点９１の２次元位置になる。
【０１５２】
図２０は、図１９のステップＳ２６４のbeta決定処理の詳細を説明するフローチャートである。
【０１５３】
図２０のステップＳ２９１において、色補正部１３は、betaXとbetaYを０に設定する。
【０１５４】
ステップＳ２９２において、色補正部１３は、移動方向dirがLLであるかどうかを判定する。ステップＳ２９２で移動方向dirがLLであると判定された場合、ステップＳ２９３において、色補正部１３は、betaXを１に設定する。そして、処理は図１９のステップＳ２６４に戻り、ステップＳ２６５に進む。
【０１５５】
一方、ステップＳ２９２で移動方向dirがLLではないと判定された場合、ステップＳ２９４において、色補正部１３は、移動方向dirがRRであるかどうかを判定する。ステップＳ２９４で移動方向dirがRRであると判定された場合、ステップＳ２９５において、色補正部１３は、betaXを−１に設定する。そして、処理は図１９のステップＳ２６４に戻り、ステップＳ２６５に進む。
【０１５６】
また、ステップＳ２９４で移動方向dirがRRではないと判定された場合、ステップＳ２９６において、色補正部１３は、移動方向dirがUUであるかどうかを判定する。ステップＳ２９６で移動方向dirがUUであると判定された場合、ステップＳ２９７において、色補正部１３は、betaYを−１に設定する。そして、処理は図１９のステップＳ２６４に戻り、ステップＳ２６５に進む。
【０１５７】
一方、ステップＳ２９６で移動方向dirがUUではないと判定された場合、即ち、移動方向dirがDDである場合、ステップＳ２９８において、色補正部１３は、betaYを１に設定する。そして、処理は図１９のステップＳ２６４に戻り、ステップＳ２６５に進む。
【０１５８】
図２１は、図１８のステップＳ２４５の色補正コア処理を説明するフローチャートである。
【０１５９】
図２１のステップＳ３１０において、色補正部１３は、offsetXとoffsetYをoffsetに設定する。ステップＳ３１１において、色補正部１３は、移動方向dirがLLまたはRRであるかどうかを判定する。ステップＳ３１１で移動方向dirがLLまたはRRではないと判定された場合、処理はステップＳ３１２に進む。
【０１６０】
ステップＳ３１２において、色補正部１３は、移動方向dirがUUまたはDDであるかどうかを判定する。ステップＳ３１２で移動方向dirがUUまたはDDであると判定された場合、ステップＳ３１３において、色補正部１３は、offsetXを１に変更し、処理をステップＳ３１５に進める。
【０１６１】
一方、ステップＳ３１２で移動方向dirがUUまたはDDではないと判定された場合、即ち移動方向dirがNONEである場合、処理はステップＳ３１５に進む。
【０１６２】
また、ステップＳ３１１で移動方向dirがLLまたはRRであると判定された場合、ステップＳ３１４において、色補正部１３は、offsetYを１に変更し、処理をステップＳ３１５に進める。
【０１６３】
ステップＳ３１５において、色補正部１３は、xxとyyを０に設定する。ステップＳ３１６において、色補正部１３は、yyがoffsetYより小さいかどうかを判定する。ステップＳ３１６でyyがoffsetYより小さいと判定された場合、ステップＳ３１７において、色補正部１３は、xxがoffsetXより小さいかどうかを判定する。
【０１６４】
ステップＳ３１７でxxがoffsetXより小さいと判定された場合、ステップＳ３１８において、色補正部１３は、対象点のｘ座標とxxのbetaX倍との和をdst_xに決定する。また、色補正部１３は、対象点のy座標とyyのbetaY倍との和をdst_yに決定する。
【０１６５】
ステップＳ３１９において、色補正部１３は、位置(dst_x,dst_y)の点９１の色情報を、移動ベクトル算出部１２から供給される３次元データのうちの位置(ref_x,ref_y)の点９１の色情報に置換する。ステップＳ３２０において、色補正部１３は、xxを１だけインクリメントして、処理をステップＳ３１７に戻し、xxがoffsetX以上になるまで、ステップＳ３１７乃至Ｓ３２０の処理を繰り返す。
【０１６６】
また、ステップＳ３１７でxxがoffsetX以上であると判定された場合、色補正部１３は、xxを０に設定し、yyを１だけインクリメントする。そして、処理はステップＳ３１６に戻り、yyがoffsetY以上になるまで、ステップＳ３１６乃至Ｓ３２１の処理が繰り返される。
【０１６７】
一方、ステップＳ３１６でyyがoffsetY以上であると判定された場合、処理は終了し、図１８のステップＳ２４５の処理に戻り、ステップＳ２４６の処理に進む。
【０１６８】
以上のように、色補正部１３は、位置(ref_x,ref_y)の点９１から対象点までの点９１の色情報を、位置(ref_x,ref_y)の点９１の色情報に置換する。
【０１６９】
図２２は、図５のステップＳ３５の位置補正処理のフローチャートを説明する図である。
【０１７０】
図２２のステップＳ３３１乃至Ｓ３３３，Ｓ３３５、およびＳ３３６の処理は、位置算出部３１ではなく位置補正部１４により行われることを除いて、図６のステップＳ５１乃至Ｓ５３、Ｓ５７、およびＳ５８の処理と同様であるので、説明は適宜省略する。
【０１７１】
ステップＳ３３３でｘが画素数widthより小さいと判定された場合、処理はステップＳ３３４に進む。ステップＳ３３４において、位置補正部１４は、対象点の３次元位置を補正する位置補正コア処理を行う。この位置補正コア処理の詳細は、後述する図２３を参照して説明する。ステップＳ３３４の処理後、処理はステップＳ３３５に進む。
【０１７２】
また、ステップＳ３３２でｙが画素数height以上であると判定された場合、即ち全画素が対象点とされた場合、位置補正部１４は、点９１の３次元位置が補正された３次元データをカラー画像データ生成部１５に供給する。そして、処理は、図５のステップＳ３５に戻り、図４のステップＳ１１に戻り、ステップＳ１２に進む。
【０１７３】
図２３は、図２２のステップＳ３３４の位置補正コア処理の詳細を説明するフローチャートである。
【０１７４】
図２３のステップＳ３５１において、位置補正部１４は、色補正部１３から移動ベクトル(mvx,mvy,mvz)を取得する。ステップＳ３５２において、位置補正部１４は、移動ベクトル(mvx,mvy,mvz)が(0,0,0)であるかどうかを判定する。
【０１７５】
ステップＳ３５２で移動ベクトル(mvx,mvy,mvz)が(0,0,0)ではないと判定された場合、ステップＳ３５３において、位置補正部１４は、対象点の位置(x,y,z)を位置(x+mvx,y+mvy,z+mvz)に補正する。そして、処理は、図２２のステップＳ３３４に戻り、ステップＳ３３５に進む。
【０１７６】
一方、ステップＳ３５２で移動ベクトル(mvx,mvy,mvz)が(0,0,0)であると判定された場合、位置補正部１４は、対象点の位置(x,y,z)を補正せず、処理を図２２のステップＳ３３４に戻し、ステップＳ３３５に進める。
【０１７７】
（効果の説明）
図２４は、位置算出部３１により生成された各点９１の３次元位置のうちの、ｙ座標が図２のｙ１である点９１のｘ座標とｚ座標を示したグラフである。
【０１７８】
図２４において、横軸は、各点９１のｘ座標を表し、縦軸は、ｚ座標を表している。また、図２４において、各点９１は丸で表され、丸に付された模様は、その点９１に対応する図２の背景７０、部分円７１、部分円７２、長方形７３、または円筒７５に付された模様である。これらのことは、後述する図２５および図２６においても同様である。
【０１７９】
図２５は、図２４のグラフにおいて、パッチ生成部３２により生成される点９１の接続情報を表したものである。
【０１８０】
図２５のグラフにおいて、オクルージョン領域は領域Ｓ１で表され、領域Ｓ１の色情報は入力画像データの３次元データには存在しない。従って、入力画像データの３次元データから仮想視点のカラー画像データが生成される場合、例えば、仮想視点のカラー画像データの画素に投影される領域Ｓ１の所定の位置の色情報は、その位置を含む三角形パッチ９２の頂点となる点９１の色情報を用いて補間される。
【０１８１】
例えば、図２５に示すように、仮想視点の方向が矢印Ｐの方向である場合、仮想視点のカラー画像データに投影される領域Ｓ１の位置ａの色情報は、背景７０の点１１１と円筒７５の点１１２の色情報から補間される。
【０１８２】
この場合、仮想視点のカラー画像データを生成することができる。しかしながら、位置ａに対応する仮想視点のカラー画像データの画素の色は、背景７０の色と円筒７５の色の混色となり、ユーザは違和感を覚える。
【０１８３】
図２６は、カラー画像データ生成部１５に供給される色情報および３次元位置が補正された３次元データのうちの、ｙ座標が図２のｙ１である点９１のｘ座標およびｚ座標並びに接続情報を示したグラフである。
【０１８４】
図２６に示すように、カラー画像データ生成部１５に供給される３次元データでは、オクルージョン領域の境界の点９１のうちの、奥側の点９１のｘ座標が、その点９１の近傍の手前側の点９１のｘ座標と同一になるように補正されている。
【０１８５】
例えば、オクルージョン領域の境界の点９１のうちの奥側の点１１１のｘ座標は、点１１１の２画素右側の、点１１１より手前側の点９１である点１１３のｘ座標と同一になるように補正されている。
【０１８６】
従って、図２６のグラフにおいて、オクルージョン領域は領域Ｓ２で表され、領域Ｓ２は、領域Ｓ１より小さい。従って、仮想視点のカラー画像データ内の領域Ｓ２が投影される画素数が少なくなる。その結果、ユーザの違和感を軽減することができる。
【０１８７】
例えば、仮想視点の方向が矢印Ｐの方向である場合、仮想視点のカラー画像データに投影される位置ａは、領域Ｓ２外の３次元位置補正後の点１１１の位置となる。従って、位置ａに対応する仮想視点のカラー画像データの画素の色は、背景７０の色と円筒７５の色の混色とはならず、違和感のない色となる。
【０１８８】
また、図２６の例では、最大移動量が２以上であるため、オクルージョン領域の境界の点９１のうちの、１画素左側の、より手前側の点９１である点１１４とｘ座標が同一になるように補正された点１１５のデプスｚは、点１１４のデプスｚに近づくように補正されている。
【０１８９】
図２７は、位置算出部３１により生成された各点９１の３次元位置のうちの、ｘ座標が図２のｘ１である点９１のｙ座標とｚ座標を示したグラフである。
【０１９０】
図２７において、横軸は、各点９１のｙ座標を表し、縦軸は、ｚ座標を表している。また、図２７において、各点９１は丸で表され、丸に付された模様は、その点９１に対応する図２の背景７０、部分円７２、または円筒７４に付された模様である。これらのことは、後述する図２８および図２９においても同様である。
【０１９１】
図２８は、図２７のグラフにおいて、パッチ生成部３２により生成される点９１の接続情報を表したものである。
【０１９２】
図２８のグラフにおいて、オクルージョン領域は領域Ｓ３で表され、領域Ｓ３の色情報は入力画像データの３次元データには存在しない。従って、入力画像データの３次元データから仮想視点のカラー画像データが生成される場合、例えば、仮想視点のカラー画像データの画素に投影される領域Ｓ３の所定の位置の色情報は、その位置を含む三角形パッチ９２の頂点となる点９１の色情報を用いて補間される。
【０１９３】
例えば、図２８に示すように、仮想視点の方向が矢印Ｑの方向である場合、仮想視点のカラー画像データに投影される領域Ｓ３の位置ｂの色情報は、部分円７２の点１３１と背景７０の点１３２の色情報から補間される。その結果、位置ｂに対応する仮想視点のカラー画像データの画素の色は、部分円７２の色と背景７０の色の混色となり、ユーザは違和感を覚える。
【０１９４】
図２９は、カラー画像データ生成部１５に供給される色情報および３次元位置が補正された３次元データのうちの、ｘ座標が図２のｘ１である点９１のｙ座標およびｚ座標並びに接続情報を示したグラフである。
【０１９５】
図２９に示すように、カラー画像データ生成部１５に供給される３次元データでは、オクルージョン領域の境界の点９１のうちの、奥側の点９１のｙ座標が、その点９１の近傍の手前側の点９１のｙ座標と同一になるように補正されている。
【０１９６】
例えば、オクルージョン領域の境界の点９１のうちの奥側の点１３１のｙ座標は、点１３１の２画素左側の、点１３１より手前側の点９１である点１１３のｙ座標と同一になるように補正されている。
【０１９７】
従って、図２９のグラフにおいて、オクルージョン領域は領域Ｓ４で表され、領域Ｓ４は、領域Ｓ３より小さい。従って、仮想視点のカラー画像データ内のオクルージョン領域Ｓ４が投影される画素が少なくなる。その結果、ユーザの違和感を軽減することができる。
【０１９８】
例えば、仮想視点の方向が矢印Ｑの方向である場合、仮想視点のカラー画像データに投影される位置ｂは、領域Ｓ４外の３次元位置補正後の点１３１の位置となる。従って、位置ｂに対応する仮想視点のカラー画像データの画素の色は、背景７０の色と円筒７５の色の混色とはならず、違和感のない色となる。
【０１９９】
なお、上述した説明では、移動方向dirは、UU,DD,LL、およびRRの４方向としたが、移動方向dirの種類は、これに限定されない。
【０２００】
（移動方向の他の例）
図３０は、移動方向dirの他の例を示す図である。
【０２０１】
図３０に示すように、移動方向dirは、UU,DD,LL、およびRRの４方向に、左上を表すUL、右上を表すUR、左下を表すDL、および右下を表すDRの４方向を加えた８方向にすることもできる。
【０２０２】
この場合、図１１の移動方向決定コア処理の条件式の数が８個になり、各条件式は図１１で説明した条件式とは異なる。
【０２０３】
以上のように、画像処理装置１０は、入力画像データの３次元データに含まれるオクルージョン領域の境界の点の３次元位置を補正するので、オクルージョン領域を縮小することができる。従って、仮想視点ごとにオクルージョン領域の色情報を生成することなく、違和感の少ない仮想視点のカラー画像データを生成することができる。その結果、仮想視点の高速移動に追従して高精度の仮想視点のカラー画像データを生成することができる。また、仮想視点のカラー画像データを生成する処理の負荷を軽減することができる。
【０２０４】
＜第２実施の形態＞
（本開示を適用したコンピュータの説明）
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０２０５】
図３１は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０２０６】
コンピュータ２００において、CPU（Central Processing Unit）２０１，ROM（Read Only Memory）２０２，RAM（Random Access Memory）２０３は、バス２０４により相互に接続されている。
【０２０７】
バス２０４には、さらに、入出力インタフェース２０５が接続されている。入出力インタフェース２０５には、入力部２０６、出力部２０７、記憶部２０８、通信部２０９、及びドライブ２１０が接続されている。
【０２０８】
入力部２０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部２０７は、ディスプレイ、スピーカなどよりなる。記憶部２０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部２０９は、ネットワークインタフェースなどよりなる。ドライブ２１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア２１１を駆動する。
【０２０９】
以上のように構成されるコンピュータ２００では、CPU２０１が、例えば、記憶部２０８に記憶されているプログラムを、入出力インタフェース２０５及びバス２０４を介して、RAM２０３にロードして実行することにより、上述した一連の処理が行われる。
【０２１０】
コンピュータ２００（CPU２０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア２１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０２１１】
コンピュータ２００では、プログラムは、リムーバブルメディア２１１をドライブ２１０に装着することにより、入出力インタフェース２０５を介して、記憶部２０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部２０９で受信し、記憶部２０８にインストールすることができる。その他、プログラムは、ROM２０２や記憶部２０８に、あらかじめインストールしておくことができる。
【０２１２】
なお、コンピュータ２００が実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０２１３】
本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
【０２１４】
また、本開示の実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【０２１５】
例えば、本開示は、１つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０２１６】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０２１７】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０２１８】
なお、本開示は、以下のような構成もとることができる。
【０２１９】
（１）
所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、前記複数の点のうちのオクルージョン領域の境界の点の前記３次元位置を補正する位置補正部
を備える画像処理装置。
（２）
前記位置補正部は、前記オクルージョン領域の境界の点の２次元位置を、前記オクルージョン領域の境界の点の近傍かつ手前側の点である参照点の２次元位置に補正する
ように構成された
前記（１）に記載の画像処理装置。
（３）
前記位置補正部は、前記オクルージョン領域の境界の点の奥行き方向の位置を補正する
ように構成された
前記（２）に記載の画像処理装置。
（４）
前記位置補正部は、前記オクルージョン領域の境界の点の２次元位置の補正量が閾値より小さい場合、前記オクルージョン領域の境界の点の奥行き方向の位置を補正する
前記（３）に記載の画像処理装置。
（５）
前記位置補正部は、前記参照点の奥行き方向の位置を用いて、前記オクルージョン領域の境界の点の奥行き方向の位置を補正する
前記（４）に記載の画像処理装置。
（６）
前記位置補正部により前記オクルージョン領域の境界の点の３次元位置が補正された前記３次元データに基づいて、前記所定の視点とは異なる視点のカラー画像データを生成するカラー画像データ生成部
をさらに備える
前記（１）乃至（５）のいずれかに記載の画像処理装置。
（７）
前記色情報を補正する色補正部
をさらに備える
前記（１）乃至（６）のいずれかに記載の画像処理装置。
（８）
前記色補正部は、前記オクルージョン領域の境界の点に連続する、その点との奥行き方向の位置の差分が所定の範囲内である点の前記色情報を、その点のうちの、前記オクルージョン領域の境界の点から最も遠い点の前記色情報に補正する
ように構成された
前記（７）に記載の画像処理装置。
（９）
前記所定の視点のカラー画像データとデプス画像データから前記３次元データを生成する３次元データ生成部
をさらに備える
前記（１）乃至（８）のいずれかに記載の画像処理装置。
（１０）
画像処理装置が、
所定の視点のカラー画像データとデプス画像データから生成された、複数の点の３次元位置と色情報とからなる３次元データに含まれる、前記複数の点のうちのオクルージョン領域の境界の点の前記３次元位置を補正する位置補正ステップ
を含む画像処理方法。
【符号の説明】
【０２２０】
１０  画像処理装置,  １４  位置補正部,  ５１  カラー画像データ,  ５２  デプス画像データ,  ９１，１１１，１１３，１１４，１１５  点
【図１】
2017094536.tif 000003
【図２】
2017094536.tif 000004
【図３】
2017094536.tif 000005
【図４】
2017094536.tif 000006
【図５】
2017094536.tif 000007
【図６】
2017094536.tif 000008
【図７】
2017094536.tif 000009
【図８】
2017094536.tif 000010
【図９】
2017094536.tif 000011
【図１０】
2017094536.tif 000012
【図１１】
2017094536.tif 000013
【図１２】
2017094536.tif 000014
【図１３】
2017094536.tif 000015
【図１４】
2017094536.tif 000016
【図１５】
2017094536.tif 000017
【図１６】
2017094536.tif 000018
【図１７】
2017094536.tif 000019
【図１８】
2017094536.tif 000020
【図１９】
2017094536.tif 000021
【図２０】
2017094536.tif 000022
【図２１】
2017094536.tif 000023
【図２２】
2017094536.tif 000024
【図２３】
2017094536.tif 000025
【図２４】
2017094536.tif 000026
【図２５】
2017094536.tif 000027
【図２６】
2017094536.tif 000028
【図２７】
2017094536.tif 000029
【図２８】
2017094536.tif 000030
【図２９】
2017094536.tif 000031
【図３０】
2017094536.tif 000032
【図３１】
2017094536.tif 000033
【国際調査報告】
2017094536.tif 000034
2017094536.tif 000035
2017094536.tif 000036