(57)【要約】【課題】任意形状の輪郭を持った平面の３次元データを生成し得る、三次元データ生成装置、三次元データ生成方法、及びプログラムを提供する。【解決手段】三次元データ生成装置１００は、ステレオペアの左右画像上の対応点ペアから取得した視差データに基づいて、仮想三次元空間内に三次元点を生成し、この三次元点によって構成される単一視差面のうち隣接する単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、共面点クラスター抽出部３０と、抽出された各共面クラスターから、実空間の平面を表現する三次元データを抽出する、三次元平面抽出部４０と、三次元データの抽出に用いられた共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、三次元データを修正する、三次元平面修正部５０と、を備えている。【選択図】図１
2014238714.tif 000002
【特許請求の範囲】
【請求項１】
異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成する装置であって、
前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、共面点クラスター抽出部と、
前記共面点クラスター抽出部によって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、三次元平面抽出部と、
前記三次元平面抽出部による前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、三次元平面修正部と、
を備えていることを特徴とする三次元データ生成装置。
【請求項２】
前記視差データが、前記２つの二次元画像上の対応点ペア毎に算出された視差値を含み、
前記共面点クラスター抽出部が、まず、隣り合う単一視差面を、それぞれにおける視差値及び面積を制限する条件下で結合して第１マージ面を生成し、続いて、隣り合う第１マージ面を、第１マージ面間の位置関係を制限する条件下で結合して第２マージ面を生成し、更に、第２マージ面に、いずれにも結合されていない前記単一視差面及び前記第１マージ面を、位置関係及び面積を制限する条件下で結合して拡張平面を生成し、そして、生成した前記拡張平面毎に、その生成に係わった三次元点の集合を、一つの共面点クラスターとして抽出する、
請求項１に記載の三次元データ生成装置。
【請求項３】
前記共面点クラスター抽出部が、前記第２マージ面の生成後に、いずれにも結合されていない単一視差面、及び他の第１マージ面に結合されていない第１マージ面を特定し、特定された前記単一視差面及び前記第１マージ面と、生成された前記第２マージ面とが、実空間の同じ平面に属していることを条件に、これらを結合することによって、前記拡張平面を生成する、
請求項２に記載の三次元データ生成装置。
【請求項４】
隣り合う前記単一視差面それぞれにおける前記視差値を制限する条件下として、両者の視差値の差が一定値であることが用いられ、そして、前記一定値が、予め定められた最大値まで段階的に設定されている場合において、
前記共面点クラスター抽出部が、段階的に設定された前記一定値毎に、前記第１マージ面の生成、前記第２マージ面の生成、及び前記拡張平面の生成を実行する、
請求項２または３に記載の三次元データ生成装置。
【請求項５】
前記三次元平面修正部が、
抽出された前記三次元データによって構築される平面を分割し、分割された部分毎に、当該部分に存在する前記三次元点をランダムに抽出し、抽出した前記三次元点を用いて、前記三次元データが表現する前記実空間の平面の向き及び位置を修正することによって、前記三次元平面を修正する、
請求項１〜４のいずれかに記載の三次元データ生成装置。
【請求項６】
異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成するための方法であって、
（ａ）前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、ステップと、
（ｂ）前記（ａ）のステップによって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、ステップと、
（ｃ）前記（ｂ）のステップによる前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、ステップと、
を有することを特徴とする三次元データ生成方法。
【請求項７】
コンピュータによって、異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成するためのプログラムであって、
前記コンピュータに、
（ａ）前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、ステップと、
（ｂ）前記（ａ）のステップによって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、ステップと、
（ｃ）前記（ｂ）のステップによる前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステレオ画像から得られた視差データに基づいて三次元データを生成するための、三次元データ生成装置、三次元データ生成方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
近年、様々な分野で、２次元の画像から３次元データを生成する試みがなされている。例えば、一定の重なり領域を持っている多数の航空写真から、多数のステレオペアを構成し、地面及び地上の建築物の高さを反映する三次元データを作成する技術が開発されている（例えば、非特許文献１参照。）。
【０００３】
具体的には、非特許文献１は、ステレオペアの左右の写真から、実際の世界に存在する平面の情報を取得する手法を開示している。非特許文献１に開示された手法では、まず、ステレオペアの左右写真それぞれから２次元直線が抽出される。そして、抽出された２次元の直線に対して直線マッチングが行なわれ、３次元直線が取得される。
【０００４】
続いて、取得された３次元直線の３次元データに基づいて、１本の３次元直線で定義される半平面が生成される。次に、同一の半平面に属する３次元直線がグルーピングされて面が形成される。更に、２つの面が交差している場合は、両者の境界に新しい３次元直線を作成する。そして、この新しく作成された３次元直線を用いて、最終的な平面が完成される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】C. Baillard and A. Zisserman., “Automatic reconstruction of piecewise planar models from multiple views”, In Computer Vision and Pattern Recognition (CVPR 1999), pages II: 559-565, 1999.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の非特許文献１に開示された手法では、３次元直線から平面が形成されるため、輪郭が直線で形成された平面の３次元データしか取得できず、輪郭が直線で形成されていない平面の３次元データを取得できないという問題がある。
【０００７】
また、上述の非特許文献１に開示された手法では、直線抽出時の誤差、及び直線マッチング時の誤差などの影響で、直線の三次元情報にも誤差が発生すると予測される。このため、上述の非特許文献１に開示された手法によって、直線同士だけで生成された平面には、精度が低いという問題も存在する。
【０００８】
本発明の目的の一例は、上記問題を解消し、任意形状の輪郭を持った平面の３次元データを生成し得る、三次元データ生成装置、三次元データ生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一側面における三次元データ生成装置は、異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成する装置であって、
前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、共面点クラスター抽出部と、
前記共面点クラスター抽出部によって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、三次元平面抽出部と、
前記三次元平面抽出部による前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、三次元平面修正部と、
を備えていることを特徴とする。
【００１０】
また、上記目的を達成するため、本発明の一側面における三次元データ生成方法は、異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成するための方法であって、
（ａ）前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、ステップと、
（ｂ）前記（ａ）のステップによって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、ステップと、
（ｃ）前記（ｂ）のステップによる前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、ステップと、
を有することを特徴とする。
【００１１】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成するためのプログラムであって、
前記コンピュータに、
（ａ）前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、ステップと、
（ｂ）前記（ａ）のステップによって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、ステップと、
（ｃ）前記（ｂ）のステップによる前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１２】
以上のように、本発明によれば、任意形状の輪郭を持った平面の三次元データを生成することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施の形態における三次元データ生成装置の概略構成を示すブロック図である。
【図２】図２は、本発明の実施形態における三次元データ生成装置のより具体的な構成を示すブロック図である。
【図３】図３は、本発明の実施の形態で抽出された隣接する２つの単一視差面の一例を示す図である。図３（ａ）は、２つの単一視差面それぞれに対応している連結領域の視差画像上での状態を示し、図３（ｂ）は、三次元空間に存在している２つの単一視差面の状態を示し、図３（ｃ）は、２つの単一視差面がＸＹ平面に投影された状態を示している。
【図４】図４は、実空間に存在する平面と単一視差面との比較を示す図である。図４（ａ）は、実空間に存在する平面を三次元座標に表示した状態を示し、図４（ｂ）は、段階的な多数の単一視差面を三次元座標に表示した状態を示している。
【図５】図５は、本発明の実施の形態で実行されるマージ処理であって、単一視差面間の面積の差がそれについての閾値より大きい場合を説明するための図である。図５（ａ）〜（ｃ）は、マージ処理における一連のステップを示している。
【図６】図６は、本実施の形態で実行される第１の処理〜第３の処理を説明する図であり、図６（ａ）〜（ｅ）は一連の各ステップを示している。
【図７】図７は、本発明の実施の形態で実行される三次元平面の修正処理において対象となる三次元平面の一例及びその分割領域を示す図であり、図７（ａ）及び（ｂ）それぞれは、輪郭が異なる三次元平面を示している。
【図８】図８は、本発明の実施の形態における三次元データ生成装置の動作全体を示すフロー図である。
【図９】図９は、図８に示した共面点クラスター抽出処理を具体的に示すフロー図である。
【図１０】図１０は、図９に示した第１マージ面生成処理をより具体的に示すフロー図である。
【図１１】図１１は、図９に示した第２マージ面生成処理をより具体的に示すフロー図である。
【図１２】図１２は、図９に示した拡張平面生成処理をより具体的に示すフロー図である。
【図１３】図１３は、図１２に示した未マージの単一視差面及び未マージの第１マージ面の処理をより具体的に示すフロー図である。
【図１４】図１４は、図８に示した三次元平面抽出処理を具体的に示すフロー図である。
【図１５】図１５は、図８に示した三次元平面修正処理を具体的に示すフロー図である。
【図１６】図１６は、図１５に示した三次元平面からのサンプル点の抽出処理をより具体的に示すフロー図である。
【図１７】図１７は、図１５に示した抽出サンプル点に基づいた三次元平面の修正処理をより具体的に示すフロー図である。
【図１８】図１８は、本発明の実施の形態における三次元データ生成装置を実現するコンピュータの一例を示すブロック図である。
【図１９】図１９（ａ）及び（ｂ）は、それぞれ、信用度の判定対象となる三次元点の視差画像上の対応ピクセルとその近隣領域とにおける視差分布の一例を示す図である。
【発明を実施するための形態】
【００１４】
（実施の形態）
以下、本発明の実施の形態における、三次元データ生成装置、三次元データ生成方法、及びプログラムについて、図１〜図１８を参照しながら説明する。
【００１５】
なお、以下の実施の形態は説明のためのものであり、本発明の範囲を制限するものではない。従って、当業者であればこれらの各要素または全要素を、これらと均等なものに置換した実施形態を採用することが可能であり、それらの実施形態も本発明の範囲に含まれる。
【００１６】
［三次元データ生成装置の概略構成］
最初に、図１〜図７を用いて本実施の形態における三次元データ生成装置の構成を説明する。図１は、本発明の実施の形態における三次元データ生成装置の概略構成を示すブロック図である。
【００１７】
図１に示す本実施の形態における三次元データ生成装置１００は、ステレオペアの左右画像から、視差データを算出し、算出した視差データを用いて、三次元オブジェクトのモデリングにおいて重要となる情報、即ち、実空間に存在する平面（以下「実在の平面」とも表記する。）の三次元データを生成する。ステレオペアの左右画像とは、異なる角度から同一対象を撮影して得られた２つの二次元画像をいう。
【００１８】
本実施の形態では、ステレオペアの左右画像は、例えば、一般的なデジタルカメラを用い、異なる視点から分析対象を撮影することによって取得される。
【００１９】
また、図１に示すように、本実施の形態における三次元データ生成装置１００は、共面点クラスター抽出部３０と、三次元平面抽出部４０と、三次元平面修正部５０と、を備え、これらによって、高精度の三次元データを生成する。
【００２０】
このうち、共面点クラスター抽出部３０は、まず、ステレオペアの左右画像上の対応点ペアから求められた視差データに基づいて、仮想三次元空間内に三次元点を生成する。このとき、視差データを算出する際の計算精度に制限があるため、本来実空間の一つの平面は、仮想三次元空間内に多数のＸＹ平面と平行な単一視差面になる。従って、共面点クラスター抽出部３０は、まず三次元点から単一視差面を抽出する。
【００２１】
更に、共面点クラスター抽出部３０は、一定の結合ルールに従い、多数の単一視差面に対して結合処理を行い、結合処理の結果から、実空間の一つの平面に属する三次元点の集合を特定し、そして、特定した三次元点の集合を共面点クラスターとして抽出する。
【００２２】
また、三次元平面抽出部４０は、共面点クラスター抽出部３０によって抽出された共面点クラスターを用いて、仮想三次元空間内に存在する平面の三次元データを抽出する。なお、この平面の三次元データ（以下「三次元平面」と表記する）は、実在の平面に対応している。即ち、この三次元データは、実在の平面を表現している。
【００２３】
そして、三次元平面修正部５０は、まず、三次元平面抽出部４０によって抽出された三次元平面それぞれ毎に、各三次元データの抽出に用いられた共面点クラスター、即ち、三次元点の集合に対して、一定のサンプリングルールでサンプリングを実行する。更に、三次元平面修正部５０は、このサンプリングによって取得した三次元点（以下「サンプル点」と表記する。）を用いて、先に抽出された三次元平面を修正する。
【００２４】
このように、本実施の形態では、ステレオ画像から抽出された直線ではなく、実在の平面に属する多数の三次元点が視差計算の精度の制限下で構成する特別な分布特徴（単一視差面）から、実在の平面に対応する三次元点の集合が抽出される。また、本実施の形態では、抽出された三次元点の集合から三次元平面が生成され、更に、生成された三次元平面は、高信頼度のサンプル点によって修正され、より高精度の三次元平面となる。
【００２５】
従って、本実施の形態によれば、任意形状の輪郭を持った平面の３次元データを生成することができる。
【００２６】
［三次元データ生成装置の具体的構成］
続いて、図２〜図７を用いて、本実施の形態における三次元データ生成装置の構成を更に具体的に説明する。図２は、本発明の実施形態における三次元データ生成装置のより具体的な構成を示すブロック図である。
【００２７】
図２に示すように、本実施の形態では、三次元データ生成装置１００は、上述した共面点クラスター抽出部３０、三次元平面抽出部４０、及び三次元平面修正部５０に加えて、視差データ生成部１０と、処理パラメータ入力部２０と、処理パラメータ記憶部２１とを備えている。以下各部について具体的に説明する。
【００２８】
［視差データ生成部］
視差データ生成部１０は、ステレオペアの左右画像の入力を受け付け、この入力を受け付けた左右画像に基づいて視差データを生成し、そして、生成した視差データを、共面点クラスター抽出部に入力する。
【００２９】
具体的には、視差データ生成部１０は、既存の処理方法を用いて、ステレオペアを構成する左画像と右画像との重なり部分上に対応点ペアを特定し、特定した対応点ペア毎に、左画像上の点と右画像上の点との位置ずれ、即ち、「視差」を計算する。この対応点ペア毎に計算された視差の値が視差データとなる。また、計算によって得られる「視差」の値（視差値）の単位はピクセル数となる。
【００３０】
また、本実施の形態では、ステレオペアの左右画像としては、市販のデジタルカメラによって異なる視点から撮影された２つの画像が挙げられるが、これに限定されるものではない。例えば、アナログカメラによって撮影されたアナログ写真をスキャニングなどのデジタル処理することによって得られるデジタル画像であってもよい。
【００３１】
更に、本実施の形態では、ステレオペアの左右画像から生成した視差データは、その全体がこの後の三次元平面（三次元データ）生成の処理対象とされても良いし、その一部のみが三次元平面生成の処理対象とされても良い。具体的には、ある領域内の視差データにノイズが存在する場合（例えば、左右画像に芝生が生えている領域が存在する場合、左右画像に水面となっている領域が存在する場合等）、ノイズが存在する領域の視差データは、三次元平面生成の処理対象から除外される。
【００３２】
また、三次元平面の生成の処理対象となる視差データであるか、処理対象とならない視差データであるかは、例えば、ユーザーが予め設定することができる。具体的には、ユーザーは、処理対象となる視差データが得られる領域にマスク値として「１」を設定し、処理対象とならない視差データが得られる領域にマスク値として「０」を設定することができる。この場合、視差データ生成部１０は、マスク値が「１」に設定された領域の視差データだけを次の処理ステップ（共面点クラスター抽出部３０）に送る。
【００３３】
また、視差データ生成部１０は、ステレオペアの左右画像の重なり領域における各対応点の視差値を、一定のルールで０〜２５５の範囲内の値に変換し、変換によって得られた値から視差画像を生成する。そして、視差データ生成部１０は、既存の画像分割方法を用いて、視差画像を、平滑領域と非平滑領域とに分割し、平滑領域から得られる視差データのみを次の処理ステップに送ることもできる。更に、視差データ生成部１０は、より多くの領域の視差データを処理対象とするため、視差データの生成前（ステレオマッチングの実行前）に、ステレオペアの左右画像に対して、画像の平滑化を目的としたフィルタリングを実行しても良い。
【００３４】
［処理パラメータ入力部、処理パラメータ記憶部］
処理パラメータ入力部２０は、ユーザーからの、三次元データの生成に必要となる全てのパラメータ、即ち、後述する共面点クラスター抽出処理と三次元平面修正処理とで必要となるパラメータの入力を受け付ける。
【００３５】
ユーザーから処理パラメータ入力部２０に入力されるパラメータとしては、カメラに関連するパラメータ、撮影時の基線長といった撮影時の状況に関するパラメータ、及び上記の処理に必要な他のパラメータ等が挙げられる。また、このうち、カメラに関連するパラメータには、ステレオペアの左右画像の撮影に使用されたカメラにおける、焦点距離、変形係数等が含まれる。
【００３６】
また、他のパラメータのうち、共通点クラスター抽出処理に用いられるパラメータとしては、単一視差面の結合処理に用いる面積の閾値、マージ面の結合処理に用いる角度及び距離の閾値、隣接する単一視差面の判定に用いる視差値の差の最大許容値等が挙げられる。また、三次元平面の修正処理に用いられるパラメータとしては、後述するサンプル点の数の算出に用いられる比例値等が挙げられる。
【００３７】
また、処理パラメータ入力部２０は、入力されたパラメータを、処理パラメータ記憶部２１に出力し、そこで保存させる。また、共面点クラスター抽出部３０、三次元平面抽出部４０、及び三次元平面修正部５０は、それぞれの処理に必要なパラメータを、適宜、処理パラメータ記憶部２１から取得する。
【００３８】
［共面点クラスター抽出部］
共面点クラスター抽出部３０は、本実施の形態では、まず、視差データ生成部１０によって生成された視差データから三次元点を生成し、更に、単一視差面を取得する。単一視差面は、視差画像上の視差値が同一の点で構成された連結領域に対応する三次元点の集合によって構成されている。続いて、共面点クラスター抽出部３０は、隣り合う単一視差面を、それぞれにおける視差値及び面積を制限する条件下で結合して第１マージ面を生成する。
【００３９】
そして、共面点クラスター抽出部３０は、隣り合う第１マージ面を、第１マージ面間の位置関係を制限する条件下で結合して第２マージ面を生成する。更に、第２マージ面を、第２マージ面間の位置関係及び面積を制限する条件下で結合して拡張平面を生成する。最後に、共面点クラスター抽出部３０は、拡張平面毎に、各拡張平面の生成に係わる三次元点の集合を、一つの共面点クラスターとして抽出する。
【００４０】
具体的には、共面点クラスター抽出部３０は、まず、視差データ生成部１０から入力された視差データに基づいて、三次元点の座標（Ｘ，Ｙ，Ｚ）を計算するため、計算に必要な情報を、処理パラメータ記憶部２１から取得する。三次元点の座標の計算に必要な情報として、撮影時に使用したカメラの焦点距離、変形係数などの特徴量、及び撮影時の基線長等である。なお、以降の説明において、座標（Ｘ，Ｙ，Ｚ）中のＺ軸は、奥行きを表わしている。
【００４１】
次に、共面点クラスター抽出部３０は、取得した情報を用いて、エピポーラ拘束に基づき、ステレオペアの対応関係から、左画像撮影時のカメラと右画像撮影時のカメラとの間の、相対的な向き及び距離を取得する。そして、共面点クラスター抽出部３０は、取得した数値を視差データとともに用いて、三次元点の座標（Ｘ，Ｙ，Ｚ）を計算する。
【００４２】
次に、共面点クラスター抽出部３０は、入力された視差データから視差画像を生成し、視差画像上において、輝度値が同一の点（つまり、視差値が同一の点）で構成された連結領域を特定する。そして、共面点クラスター抽出部３０は、先に計算で取得した多数の三次元点のうち、特定した連結領域に対応する三次元点群を「単一視差面」として抽出する。また、視差データから三次元点の座標を計算する際の計算過程から分かるように、このようにして抽出された単一視差面は、仮想三次元空間内では、座標系のＸＹ面と平行な平面となる（図３（ａ）〜（ｃ）参照）。
【００４３】
ところで、仮に、サブピクセルレベルの精度で視差値が取得されているのであれば、視差値から、スムーズに変化する三次元平面が生成されるので、「単一視差面」のような面が抽出されることはない。しかし、実際に取得可能な視差データは、ピクセルレベルの精度で取得される視差データであるので、上述のように、実空間に存在する本来の平面に対応する部分は、一つのスムーズな平面ではなく、段階的な多数の単一視差面になってしまうのである。
【００４４】
例えば、視差値の差が１ピクセルだけの２つの連結領域は、視差画像上で隣接する。そして、視差画像上で隣接する２つの連結領域は、三次元空間では、ともにＸＹ面と平行な平面（単一視差面）となり、この２つの単一視差面の間にはＺ軸方向において一定の距離が存在する。また、この一定の距離は、三次元変換計算に影響する様々な特徴に応じて決定される。この「様々な特徴」としては、上述したカメラ関連の係数及び撮影時の状況などが挙げられる。
【００４５】
また、以後の説明では、単一視差面に対応する連結領域がもつ視差値が、「単一視差面の視差値」であるとする。更に、以後の説明では、２つの単一視差面それぞれに対応する２次元の連結領域が隣接する場合は、「２つの単一視差面が隣接している」とみなす。加えて、このような、対応する連結領域が隣接している「２つの単一視差面」は、「隣接する２つの単一視差面」、または「隣り合う２つの単一視差面」と表記する。
【００４６】
図３は、本発明の実施の形態で抽出された隣接する２つの単一視差面の一例を示す図である。図３（ａ）は、２つの単一視差面それぞれに対応している連結領域の視差画像上での状態を示し、図３（ｂ）は、三次元空間に存在している２つの単一視差面の状態を示し、図３（ｃ）は、２つの単一視差面がＸＹ平面に投影された状態を示している。
【００４７】
図３（ａ）に示すように、隣り合う２つの単一視差面は、視差画像上では、連結領域Ｒ１と連結領域Ｒ２とで表わされる。なお、連結領域Ｒ１と連結領域Ｒ２との視差値の差は、１ピクセルだけとなっている。
【００４８】
そして、連結領域Ｒ１及び連結領域Ｒ２それぞれにおいて、同一の領域内にある点の視差値は全て同じである。また、視差データから三次元点の座標を計算する際の計算過程により、図３（ｂ）に示すように、仮想三次元空間において、連結領域Ｒ１からはＸＹ平面と平行な単一視差面Ｓ１が取得され、連結領域Ｒ２からはＸＹ平面と平行な単一視差面Ｓ２が取得される。
【００４９】
更に、図３（ｃ）に示すように、単一視差面Ｓ１及び単一視差面Ｓ２それぞれをＸＹ平面に投影すると、単一視差面Ｓ１は、ＸＹ平面上の領域Ｓ１ｘｙとなり、単一視差面Ｓ２は、ＸＹ平面上の領域Ｓ２ｘｙとなる。
【００５０】
ところで、実際の世界では、物体の表面はスムーズに変化していることから、このような表面を三次元データによって表現するためには、対応点ペアを細かく設定し、それに合せて視差を算出する必要がある。つまり、ピクセルレベルではなく、サブピクセルレベルで視差を算出して、三次元空間中に少しずつ変化している奥行きを細かく表現する必要がある。
【００５１】
しかしながら、上述したように、実際には、ピクセルレベル精度でしか視差データを取得できないので、ＸＹ平面と平行な面である単一視差面しか取得できない状況にある。そして、図３（ｂ）に示しているように、段階的な多数の単一視差面は、実在の平面に対応するが、実在の平面そのものを表現しているわけではない。一方、これらの単一視差面の互いの位置関係から、実在の平面の向きを表現することができる。この点について図４を用いて説明する。
【００５２】
図４は、実空間に存在する平面と単一視差面との比較を示す図である。図４（ａ）は、実空間に存在する平面を三次元座標に表示した状態を示し、図４（ｂ）は、段階的な多数の単一視差面を三次元座標に表示した状態を示している。
【００５３】
図４（ａ）に示すように、実空間においては、表面がスムーズに変化する平面Ｍが存在している。よって、この平面Ｍを撮影することによって得られた左右画像からピクセルレベル精度の視差データを計算し、得られた各視差データに基づいて単一視差面を生成すれば、実在の平面Ｍに近似した複数の単一視差面が得られる。例えば、図４（ｂ）に示すように、単一視差面Ｓ１、単一視差面Ｓ２、及び単一視差面Ｓ３の三つの単一視差面が得られる。
【００５４】
このような特性から、実在の平面に属している全ての単一視差面を取り出せば、各単一視差面から、実在の平面の向きを特定する情報と、実在の平面の位置を特定する情報とが取得でき、実在の平面を復元できる。
【００５５】
このため、本実施の形態では、共面点クラスター抽出部３０は、実在の平面に対応した三次元点の集合を取得するため、以下に示す、「第１の処理」、「第２の処理」、及び「第３の処理」を実行する。また、以下の説明においても、単一視差面は、上述したように、視差画像上の視差値（輝度値）が同一の点で構成された連結領域から、生成される。また、連結領域の取得は、視差画像に対して画像分割を行ない、分割された部分毎に、一つの連結領域として抽出する手法、例えばRegion Growing法によって行なうことができる。
【００５６】
第１の処理：
第１の処理として、共面点クラスター抽出部３０は、複数の単一視差面を一つの平面領域にマージする処理を実行する。具体的には、共面点クラスター抽出部３０は、まず、視差値が最大（最大視差値Ｎ）となる単一視差面Ｓ１を特定し、更に、その最大視差値より値が１小さい視差値（つまり、視差値が「Ｎ−１」）となる単一視差面を探す。
【００５７】
そして、共面点クラスター抽出部３０は、探し出された単一視差面の中に、単一視差面Ｓ１と空間的に隣り合う単一視差面が存在しているかどうかを判定し、存在している場合は、存在している単一視差面（以下「単一視差面Ｓ２」とする。）と単一視差面Ｓ１との面積が一定の基準を満たすかどうかを判定する。
【００５８】
続いて、共面点クラスター抽出部３０は、両者の面積が一定の基準を満たす場合は、単一視差面Ｓ１と単一視差面Ｓ２とをマージ（結合）して、これらを一つの平面とする。なお、このマージ処理によって生成された平面が、上述した「第１マージ面」である。
【００５９】
また、このようなマージ処理は、マージの対象となる単一視差面と第１マージ面との差（以下「マージ誤差」と表記する。）を小さくするため、一定の基準に従って実行される必要がある。例えば、マージの対象となる単一視差面上の点から第１マージ面までの距離の平方の総和を「マージ誤差」」とすると、マージ誤差を最小値とするために、マージ処理は、最小二乗法を用いて実行される。また、マージ処理がロバスト的となるようにするため、マージ処理においては、Ｍ推定法、ＲＡＮＳＡＣ方法（Random Sample Consensus）といったロバスト推定方法が用いられても良い。
【００６０】
ここで、マージ処理について更に具体的に説明する。まず、マージされる単一視差面Ｓ１と単一視差面Ｓ２との視差値の差が１ピクセルに設定されているとする。この場合、隣接する単一視差面Ｓ１及びＳ２が共に同じ実在の平面に属し、かつ単一視差面Ｓ１と単一視差面Ｓ２の視差値が１ピクセル異なる程度の変化が存在することになる。また、この隣接する二つの単一視差面間の変化を、以下においては「最小視差変化ペース」と表記する。
【００６１】
但し、実際には、撮影方向と実在の平面とがなす角度が小さい場合は、実空間の同じ平面において隣接する二つの単一視差面であるにも拘らず、両者における視差の差が２ピクセル以上となる場合もある。このような場合は、上述の設定では、単一視差面を探し出してマージすることは不可能となる。
【００６２】
一方、単一視差面のマージ処理の条件を変更し、マージされる単一視差面Ｓ１と単一視差面Ｓ２との視差値の差を２ピクセル以上に設定することも考えられるが、この場合は、同じ実在の平面に属していない隣接する複数の単一視差面をマージしてしまい、実在の平面を正確に抽出することができない可能性がある。
【００６３】
なお、上述したように、マージされる単一視差面Ｓ１と単一視差面Ｓ２との視差値の差を１ピクセルに固定して処理を行なう場合は、視差変化のペースが２ピクセル以上の実在の平面のケースにおいて、マージ処理を実行できなくなる。
【００６４】
以上の点から、本実施の形態では、共面点クラスター抽出部３０は、視差変化ペースが２ピクセル以上の実在の平面に対応するため、例えば、最初に、視差変化ペースが１ピクセルの実在の平面のケースを処理し、次に、視差変化ペースが２ピクセルの実在の平面のケースを処理する。つまり、共面点クラスター抽出部３０は、視差変化ペースの値毎にマージ操作を行なうことにより、全ての実在の平面について処理を実行することができる。
【００６５】
具体的には、まず、共面点クラスター抽出部３０は、視差値の差が１ピクセルの２つの単一視差面をマージ処理の対象に設定し、視差値の差が１ピクセルとなる単一視差面同士をマージして第１マージ面を生成する。続いて、共面点クラスター抽出部３０は、後述する第２の処理を実行し、一定のルール下で、第１マージ面同士を結合し第２マージ面を生成する。更に、共面点クラスター抽出部３０は、後述する第３の処理を実行して、一定のルール下で、第２マージ面に、未だマージされていない第１マージ面、及び未だマージされていない単一視差面を結合して、拡張平面を生成する。
【００６６】
次に、共面点クラスター抽出部３０は、以上の第２及び第３の処理の完了後、まだマージされていない単一視差面が存在している場合は、マージ処理の対象を、視差値の差が２ピクセルの２つの単一視差面に設定する。そして、共面点クラスター抽出部３０は、まだマージされていない、視差値の差が２ピクセルとなる単一視差面同士をマージして、第１マージ面を生成する。また、この場合も、共面点クラスター抽出部３０は、後述する第２の処理と第３の処理とを実行して、新しい拡張平面を生成する。
【００６７】
次に、共面点クラスター抽出部３０は、視差値の差を２ピクセルに設定した後の第２及び第３の処理が完了しても、まだマージされていない単一視差面が存在している場合は、更に、マージ処理の対象を、視差値の差が３ピクセルの２つの単一視差面に設定する。そして、共面点クラスター抽出部３０は、まだマージされていない、視差値の差が３ピクセルとなる単一視差面同士をマージして、第１マージ面を生成する。また、この場合も、共面点クラスター抽出部３０は、後述する第２の処理と第３の処理とを実行して、新しい拡張平面を生成する。
【００６８】
ところで、実空間では、視差変化ペースが激しい平面も存在するが、仮想三次元空間では、隣接する２つの単一視差面の間の視差値の差が大きくなるほど、この２つの単一視差面が実空間において同一の平面に属している可能性は低くなる。このため、本実施の形態では、上述したように、現在処理するデータの状況に応じ、「単一視差面間の視差値の差の最大許容値」が、パラメータとしてユーザーによって入力される。共面点クラスター抽出部３０は、この許容値以上の視差変化ペースの平面に対しては、共面点クラスターの抽出処理を行わない。以上のような処理で、細かく視差変化する平面（小さい視差変化ペースの実在の平面）も、激しく視差変化する平面（大きい視差変化ペースの実在の平面）も、抽出できるようになる。
【００６９】
また、本実施の形態では、単一視差面Ｓ１と単一視差面Ｓ２とが空間的に隣り合う関係かどうかの判定は、仮想三次元空間に展開された状態ではなく、二次元の視差画像上で、これらに対応している連結領域に基づいて行なわれる。そうする理由は、２つの単一視差面は、仮想三次元空間に展開されると、視差の段階的な変化のせいで、実空間では互いに隣り合う場合であっても、ＸＹ面と平行な平面になってしまいので、両者が隣り合うかどうかを判定することが困難となるからである。このため、仮想三次元空間に展開された状態より、二次元の視差画像に基づく方が、単一視差面が隣り合う関係かどうかを判定し易くなる。
【００７０】
従って、本実施の形態では、共面点クラスター抽出部３０は、例えば、視差画像上において、単一視差面Ｓ１に対応する二次元の連結領域と、単一視差面Ｓ２に対応する二次元の連結領域との間の境界線の存在の有無に基づいて、両者が隣り合う関係かどうかを判定する。
【００７１】
また、本実施の形態では、共面点クラスター抽出部３０は、単一視差面Ｓ２を単一視差面Ｓ１にマージした後、単一視差面Ｓ１の存在状態を単一視差面から第１マージ面に変更し、マージされた単一視差面Ｓ２を削除することができる。更に、共面点クラスター抽出部３０は、一つの単一視差面を、複数の単一視差面とマージすることもできる。この場合、共面点クラスター抽出部３０は、最初に処理対象となった単一視差面を、他の単一視差面と一つずつマージした後、その存在状態を単一視差面から第１マージ面に変更し、マージされた他の単一視差面を削除する。
【００７２】
また、マージされる単一視差面Ｓ１と単一視差面Ｓ２との面積に対しては、一定の基準、具体的には、両者の面積が共に一定の面積（面積についての閾値）以上であることが求められる。なお、マージされる２つの単一視差面の面積が共に一定の面積以上であることが求められるのは、視差ノイズによる単一視差面への影響を小さくするためである。また、この面積についての閾値は、上述したように、ユーザーによって処理のパラメータとして入力され、処理パラメータ記憶部２１に記憶されている。
【００７３】
また、本実施の形態では、三次元データ生成装置１００は、ユーザーが、面積についての適切な閾値を入力できるようにするために、推奨範囲をユーザーに提示することもできる。この場合、共面点クラスター抽出部３０は、推奨範囲における最小値と最大値とを、現在の処理対象となっているステレオペアの左右画像の重なり領域のサイズに基づいて、設定する。
【００７４】
具体的には、共面点クラスター抽出部３０は、まず、右側の画像と左側の画像とを対比して、両者において重なっている領域を特定し、特定された領域の面積（単位：ピクセル）に、予め設定された最小の推奨範囲の割合と最大の推奨範囲の割合とを乗算する。そして、共面点クラスター抽出部３０は、最小の推奨範囲の割合の乗算値を推奨範囲の最小値に設定し、最大の推奨範囲の割合の乗算値を推奨範囲の最大値に設定する。例えば、特定された領域の面積が１００ピクセル、最小の推奨範囲の割合が２０％、最大の推奨範囲の割合が１００％である場合は、共面点クラスター抽出部３０は、２０ピクセル〜１００ピクセルを推奨範囲として提示する。
【００７５】
また、上述の二つの単一視差面の面積の差についての条件は、例えば、実在の平面における変化の状態に基づいて設定される。理想的には、実在の平面がスムーズに変化している場合は、奥行きの値（Ｚ軸）は少しずつ変化するので、その実在の平面に属する各三次元点に対応する視差もサブピクセルレベルで少しずつ変化すべきである。例えば、このような場合は、視差値は、１、２、３、４といった整数ではなく、実際には、１．１６といった小数を含む値で細かく表現されるはずである。
【００７６】
しかしながら、視差データの計算精度には制限があるため、小数を含む細かい視差値の取得は困難である。このため、本実施の形態では、視差値は、１、２、３、４のように段階的に変化し、更に、この視差値の変化のペースは各平面において一定となってしまう。そして、各平面において視差値の変化のペースが一定である場合は、実在の同じ平面上に属しいている各単一視差面の面積は類似していると判断される（図４（ｂ）参照）。但し、この場合に、実在の同じ平面に対応する各単一視差面の面積を「単位面積」とすると、単位面積は、実在の平面毎に異なる値となるので、視差値として整数しか用いることができない場合であっても実在の平面を抽出することが可能となる。
【００７７】
また、本実施の形態では、共面点クラスター抽出部３０は、単一視差面Ｓ１及びＳ２が空間的に隣り合い、且つ両方の面積が共に一定の面積以上であった場合に、両者の面積の差に応じて、以下の（１）及び（２）に示すように、異なるマージ処理を実行する。
【００７８】
（１）単一視差面Ｓ１と単一視差面Ｓ２との面積の差が、一定値（面積差についての閾値）以下の場合は、共面点クラスター抽出部３０は、直接に単一視差面Ｓ１と単一視差面Ｓ２とをマージする。
【００７９】
（２）単一視差面Ｓ１と単一視差面Ｓ２との面積の差が、面積差についての閾値より大きい場合は、共面点クラスター抽出部３０は、単一視差面Ｓ１と単一視差面Ｓ２とのうち、面積が小さい方（後述の図５の例では、単一視差面Ｓ１）の面積を基準として、マージ処理を実行する。この場合のマージ処理について図５を用いて説明する。
【００８０】
図５は、本発明の実施の形態で実行されるマージ処理であって、単一視差面間の面積の差がそれについての閾値より大きい場合を説明するための図である。図５（ａ）〜（ｃ）は、マージ処理における一連のステップを示している。具体的には、まず、図５（ａ）に示すように、単一視差面Ｓ１と単一視差面Ｓ２とが隣接している状態で存在しているとする。
【００８１】
次に、図５（ｂ）に示すように、上記（２）では、共面点クラスター抽出部３０は、まず、単一視差面Ｓ２の中から、単一視差面Ｓ１と隣接し、且つ、面積が単一視差面Ｓ１の面積と同一となる領域Ｓ２ａを特定する。そして、共面点クラスター抽出部３０は、特定した領域Ｓ２ａと単一視差面Ｓ１とをマージする。
【００８２】
これにより、図５（ｃ）に示すように、第１マージ面Ｍが形成される。また、共面点クラスター抽出部３０は、単一視差面Ｓ２からＳ２ａを特定した後、単一視差面Ｓ２の残った領域Ｓ２ｂを、一つの独立の単一視差面として保持する。
【００８３】
なお、単一視差面Ｓ１に隣接する領域Ｓ２ａの特定は、２つの単一視差面が空間的に隣り合う関係かどうかを判定する場合と同様に、二次元の視差画像に基づいて行なうことができる。また、残った領域Ｓ２ｂは、新しい単一視差面として、別の単一視差面とマージされても良い。
【００８４】
以上で説明したように、第１の処理が完了すると、仮想三次元空間は、第１マージ面だけが存在している状態、または第１マージ面とマージされていない単一視差面とが共存している状態となる。
【００８５】
第２の処理：
第２の処理として、共面点クラスター抽出部３０は、同じ実在平面に属している第１マージ面同士を進行的に結合し、更に大きい範囲の実在平面を復元する処理を実行する。第２の処理によって生成される平面は、上述した第２マージ面である。
【００８６】
第２の処理では、共面点クラスター抽出部３０は、例えば、画像処理の分野で既存のRegion Growing処理といった進行的な処理を用いて、視差値が最大となる第１マージ面、つまり、奥行きの値（Ｚ値）が最大となる第１マージ面Ｍ１から、処理を実行する。
【００８７】
具体的には、共面点クラスター抽出部３０は、まず、第１マージ面Ｍ１と隣り合う第１マージ面のなかに、第１マージ面Ｍ１と平行であり、且つ、第１マージ面Ｍ１との距離が閾値以下となる第１マージ面が存在するかどうかを判定する。判定の結果、存在する場合は、共面点クラスター抽出部３０は、条件を満たす第１マージ面（以下「第１マージ面Ｍ２」と表記する。）は、同じ実在平面Ｒに属していると判定する。
【００８８】
次に、共面点クラスター抽出部３０は、第１マージ面Ｍ２と隣り合う第１マージ面の中に、上述の平行についての条件と距離についての条件とを満たし、且つ、第１マージ面Ｍ２より奥行きの値が小さい第１マージ面が存在しているかどうかを判定する。そして、存在する場合は、この場合も、共面点クラスター抽出部３０は、条件を満たす第１マージ面（以下「第１マージ面Ｍ３」と表記する。）は、同じ実在平面Ｒに属していると判定する。
【００８９】
その後、共面点クラスター抽出部３０は、第１マージ面Ｍ３に対しても、上述の第１マージ面Ｍ２と同様の処理を行ない、更に第１マージ面Ｍ４を特定する。共面点クラスター抽出部３０は、このような進行的な処理によって、同じ実在平面Ｒに属している全ての隣接し合う第１マージ面を見つけ出す。その後、共面点クラスター抽出部３０は、見つけ出した第１マージ面を結合して、更に大きな面積を持った平面、即ち、第２マージ面を生成する。
【００９０】
また、第２の処理でも、共面点クラスター抽出部３０は、第１マージ面同士が隣り合っているかどうかを、上述の第１の処理での単一視差面同士の場合と同じように、二次元の視差画像に基づいて判定することができる。更に、共面点クラスター抽出部３０は、第２の処理において、隣り合う第１マージ面Ｍ１と第１マージ面Ｍ２とのなす角度が、予め設定された閾値以下となる場合は、両者は平行であると判定することができる。
【００９１】
また、上述の隣り合う第１マージ面Ｍ１と第１マージ面Ｍ２との距離についての閾値は、カメラ関連の係数及び撮影方式の関連係数を参照した上で、ユーザーによって設定される。また、上述の角度についての閾値、及び距離についての閾値は、上述したように、共に、ユーザーによってパラメータとして入力され、処理パラメータ記憶部２１に格納されている。共面点クラスター抽出部３０は、処理の際に、処理パラメータ記憶部２１から、必要に応じて、これらの閾値を取得する。
【００９２】
また、共面点クラスター抽出部３０は、一つの第１マージ面を、複数の第１マージ面と結合することもできる。この場合、共面点クラスター抽出部３０は、最初に処理対象となった第１マージ面を、他の第１マージ面と一つずつマージした後、その存在状態を第１マージ面から第２マージ面に変更し、マージされた他の第１マージ面を削除する。
【００９３】
上述した第２の処理が完了すると、仮想三次元空間は、第２マージ面だけが存在している状態、第２マージ面と未だマージされていない第１マージ面とが共存している状態、または第２マージ面と、未だマージされていない第１マージ面と、未だマージされていない単一視差面とが共存している状態となる。
【００９４】
実際の場合、様々な複雑な状況があり、第２マージ面の生成が行なわれた後でも、同じ実在の平面に属している第１マージ面が全てマージされているわけではない。また、同じ実在の平面に属している単一視差面が、未だマージされずに存在している可能性もある。このような状況を対処するため、共面点クラスター抽出部３０は、第３の処理を実行する。
【００９５】
第３の処理：
第３の処理として、共面点クラスター抽出部３０は、まず、未だマージされていない第１マージ面、及び未だマージされていない単一視差面を特定する。次に、共面点クラスター抽出部３０は、特定した第１マージ面及び単一視差面の中から、第２の処理で生成した各第２マージ面と同じ実在の平面に属しているものを探索する。そして、共面点クラスター抽出部３０は、見つけ出した面を、この第２マージ面に結合する処理を実行する。このような面を拡張する処理（拡張操作）によって取得された面が、上述した「拡張平面」である。
【００９６】
具体的には、共面点クラスター抽出部３０は、一つの第２マージ面Ｐ１を対象として、まず、これに隣り合う第１マージ面及び単一視差面を特定する。そして、共面点クラスター抽出部３０は、特定した第１マージ面及び単一視差面が、この第２マージ面Ｐ１と同じ実在の平面に属しているかどうかを判定する。
【００９７】
このとき、第１マージ面及び単一視差面が第２マージ面Ｐ１と隣り合うかどうかの判定は、上述の第１の処理での単一視差面同士の場合、上述の第２の処理での第１マージ面同士の場合と同じように、二次元の視差画像に基づいて行なわれる。
【００９８】
また、例えば、隣り合うかどうかの判定の結果、第２マージ面Ｐ１に隣り合う第１マージ面Ｍ１と、同じく第２マージ面Ｐ１に隣り合う単一視差面Ｓ１とが、それぞれ存在すると判定されたとする。この場合、第２マージ面Ｐ１と第１マージ面Ｍ１とが同じ実在の平面に属しているかどうかの判定は、上述の第２の処理の説明で述べた、第１マージ面同士をマージすべきかどうかの判定に準じて行なわれる。また、第２マージ面Ｐ１と単一視差面Ｓ１とが同じ実在の平面に属しているかどうかの判定も、同様である。なお、第３の処理では、判定に用いられる角度についての閾値及び距離についての閾値は、必要に応じて、第２の処理とは異なる値であっても良い。
【００９９】
そして、判定の結果、第２マージ面Ｐ１と第１マージ面Ｍ１とが同じ実在の平面に属している場合は、共面点クラスター抽出部３０は、両者をマージする。このとき形成された面を「第２マージ面Ｐ１Ｍ１」とすると、共面点クラスター抽出部３０は、この後、更に、第２マージ面Ｐ１Ｍ１について、隣り合う第１マージ面及び単一視差面の特定、実在の同じ平面に属しているかどうかの判定を実行する。このような進行的な処理が実行され、第２マージ面Ｐ１に対して、本来これと同じ実在平面に属している、全ての第１マージ面と単一視差面とが結合されるので、最終的に、より実在平面に近づいた拡張平面Ｑ１が生成される。
【０１００】
また、共面点クラスター抽出部３０は、一つの第２マージ面に、未だマージされていない多数の単一視差面及び第１マージ面を結合することもできる。更に、この場合、共面点クラスター抽出部３０は、処理対象となる第２マージ面に、未だマージされていない単一視差面及び第１マージ面それぞれを、一つずつ結合し、処理対象となる第２マージ面の存在状態を第２マージ面から拡張平面に変更する。また、その後、共面点クラスター抽出部３０は、このとき結合された単一視差面及び第１マージ面を削除する。
【０１０１】
また、一つの第２マージ面に、１つずつ、第１マージ面又は単一視差面を結合することによって面を拡張している過程においては、第２のマージ面と結合される面の視差が第２のマージ面の視差より大きい場合と、第２のマージ面の視差より小さい場合とがある。但し、本実施の形態ではいずれの場合でも、共面点クラスター抽出部３０は、結合対象となる単一視差面及び第１マージ面と、第２のマージ面とを結合する。
【０１０２】
更に、本実施の形態では、周りに結合対象となる面が存在していなかった第２マージ面の存在状態は、そのまま、拡張平面に変更される。また、共面点クラスター抽出部３０は、全ての第２マージ面の拡張処理が完了した後、第２マージ面に結合されなかった第１マージ面及び単一視差面のうち、面積が閾値以下のものをノイズとして削除する。一方、共面点クラスター抽出部３０は、面積が閾値を超える第１マージ面については、そのまま拡張平面とする。また、共面点クラスター抽出部３０は、面積が閾値を超える単一視差面については、そのまま残し、これを、「視差変化ペース」の値を上げて実行される次の結合処理の入力データとして用いる。
【０１０３】
このような処理を行なうのは、例えば、第１マージ面が、ある第２マージ面と同じ実在の平面に属しているが、両者の間に他の物体が存在しているため、両者が隣り合う関係でないと判定された場合は、両者を直接に結合することができないためである。
【０１０４】
上述した第３の処理が完了すると、仮想三次元空間は、拡張平面だけが存在している状態、拡張平面と未だマージされていない単一視差面とが共存している状態となる。また、このようにして生成された各拡張平面は、面積及び輪郭が様々であり、輪郭が必ず直線で構成されることはない。
【０１０５】
ここで、図６を用いて、第１の処理から第３の処理の具体例について説明する。図６は、本実施の形態で実行される第１の処理〜第３の処理を説明する図であり、図６（ａ）〜（ｅ）は一連の各ステップを示している。なお、上述したように、各単一視差面は、ＸＹ面と平行な面となるため、ＺＸ面上では、Ｘ軸に平行な直線となる。よって、各面の位置関係と向きとをより分かり易くするため、図６（ａ）〜（ｅ）それぞれでは、各面のＺＸ面への投影像が示されている。
【０１０６】
図６（ａ）に示すように、まず、共面点クラスター抽出部３０は、仮想三次元空間内に、単一視差面Ｓ１〜Ｓ９を生成する。そして、共面点クラスター抽出部３０は、これらの単一視差面のうち、Ｓ１とＳ２、Ｓ３とＳ４、Ｓ６とＳ７、Ｓ８とＳ９が空間的に隣り合い、且つ、結合時に要求される面積についての条件と距離についての条件とを満たすと判定する。
【０１０７】
次に、図６（ｂ）に示すように、共面点クラスター抽出部３０は、第１の処理として、隣り合う単一視差面同士をマージして、第１マージ面Ｍ１〜Ｍ４を生成する。この場合において、単一視差面Ｓ５は、マージされずに残存している。
【０１０８】
次に、図６（ｃ）に示すように、共面点クラスター抽出部３０は、第２の処理として、第１マージ面同士を結合して、第２マージ面Ｐ１を生成する。この場合において、単一視差面Ｓ５、第１マージ面Ｍ３、及び第１マージ面Ｍ４は、マージされずに残存している。
【０１０９】
次に、図６（ｄ）に示すように、共面点クラスター抽出部３０は、第３の処理として、第２マージ面Ｐ１に、未だマージされていない単一視差面Ｓ５をマージして、拡張平面Ｑ１を生成する。また、共面点クラスター抽出部３０は、未だマージされていない第１マージ面Ｍ３及びＭ４については、それぞれの面積は閾値以上であるので、これらをそのまま拡張平面Ｑ２とＱ３とする。以上の処理により、図６（ｅ）に示すように、仮想三次元空間には、拡張平面Ｑ１〜Ｑ３が生成される。
【０１１０】
このように、本実施の形態では、多数の単一視差面が一度にマージされたり、多数の単一視差面が少しずつマージされたりせずに、まず、２つの単一視差面だけがマージされ、後に、第１マージ面同士がマージされる。このため、本実施の形態によれば、視差ノイズによる影響が低減される。
【０１１１】
つまり、一度に多数の単一視差面がマージされる場合は、視差ノイズが存在すると、結果として生成される平面の向きが、実空間の平面と異なってしまう可能性がある。また、多数の単一視差面が少しずつマージされる場合は、マージが行なわれる度に、マージによって得られた面の向きが少しずつ変化する。そして、マージの際に要求される一つの条件が、マージ対象となる面が互いに平行関係にあることであるので、マージによって得られた面の向きが少しずつ変化した場合は、次にマージ対象とすべき単一視差面を特定することが困難となる。
【０１１２】
これに対して、本実施の形態によれば、隣接する単一視差面だけをまずマージするため、マージによって得られた面の向きが少しずつ変化することがないので、最終的に得られる拡張平面の向きが、実空間の平面と異なってしまう可能性は大きく低減される。また、本実施の形態では、単一視差面から生成される第１マージ面の向き及び位置の精度が高くなるため、第１マージ面同士を進行的に結合する手法が採用され、そして、第２マージ面を生成した上で、最後の拡張平面が生成される。
【０１１３】
また、共面点クラスター抽出部３０は、上述の第１の処理〜第３の処理を実行して、拡張平面を生成すると、最後に、１つの拡張平面に属している全ての三次元点は、実空間の同じ平面に属していると判定する。そして、共面点クラスター抽出部３０は、拡張平面毎に、拡張平面に属している三次元点の集合を、一つの共面点クラスターとして抽出する。
【０１１４】
［三次元平面抽出部］
三次元平面抽出部４０は、上述したように、共面点クラスター抽出部３０によって抽出された共面点クラスターを用いて、仮想三次元空間内に存在する平面の三次元データを抽出する。
【０１１５】
言い換えると、三次元平面抽出部４０は、平面フィティングを行い、一つの共面点クラスター内にある全部の点の三次元座標から平面を表わす式の係数を計算する。具体的には、三次元空間において、一つの平面は、Ｚ＝ＡＸ＋ＢＹ＋Ｃと表現される。従って、三次元平面抽出部４０は、例えば、最小二乗法を用いて、全部の点から最終的に得られる平面までの距離の平方の和が、最小となるように、平面を表現する上記の等式中の係数Ａ、Ｂ、Ｃを計算する。
【０１１６】
また、第２の処理において、共面点クラスターを生成する際に、同じ平面に属している点について、平面の形状及びサイズに関する特別な条件は付与されていないため、上記の処理により、任意の形状を有し且つ任意サイズを持った平面を抽出することができる。
【０１１７】
［三次元平面修正部］
三次元平面修正部５０は、まず、三次元平面抽出部４０によって抽出された三次元平面の情報、即ち、三次元平面を表わす式の係数を、実在の各平面に対応した共面点クラスターに対するサンプリングによって得られた三次元点（サンプル点）を利用して修正する。
【０１１８】
具体的には、三次元平面修正部５０は、まず、三次元平面抽出部４０での三次元データの抽出に用いられた共面点クラスターから、一定数の三次元点（サンプル点）をランダムに抽出し、これらのサンプル点により三次元平面を修正する。また、このとき、抽出されるサンプル点は、信用度の高いものであるのが好ましい。「信用度」については後述する。
【０１１９】
ところで、上記のサンプル点の抽出は、三次元データの修正対象となる三次元平面において、出来るだけ分散されて行なわれるのが良い。これは、局部に集中しているサンプル点が抽出されていると、抽出されたサンプル点に、視差ノイズによる影響を受けたサンプル点が含まれる可能性が高くなり、後述する三次元平面の修正の精度が低下するからである。このため、本実施の形態では、三次元点の抽出は、図７に示すように、以下の手法によって行なわれる。
【０１２０】
図７は、本発明の実施の形態で実行される三次元平面の修正処理において対象となる三次元平面の一例及びその分割領域を示す図であり、図７（ａ）及び（ｂ）それぞれは、輪郭が異なる三次元平面を示している。
【０１２１】
例えば、予め、三次元平面上に垂直方向及び水平方向において一定のステップ値が設定されている場合は、図７（ａ）及び（ｂ）に示すように、三次元平面修正部５０は、ステップ値に応じて、三次元平面を格子状に分割する。
【０１２２】
次に、三次元平面修正部５０は、三次元平面の格子状への分割によって得られた各部分（以下「分割領域」と表記する。）から１点ずつランダムに、信用度の高い三次元点を抽出する。なお、この場合において、抽出される三次元点は、この三次元平面が対応する、共面点クラスターに含まれる三次元点の一つである。また、修正の対象となる三次元平面の範囲は必ず規則的な輪郭を有する必要はないので、図７（ｂ）に示すように、輪郭の近辺における分割領域は、他の分割領域に比べて小さくなる場合もある。
【０１２３】
また、三次元平面の生成に利用した共面点クラスターに含まれる三次元点が、三次元平面の各分割領域内に存在しているかどうかは、この三次元点を三次元平面に投影して得られた点が、この分割領域の範囲内に位置しているかどうかによって判定される。
【０１２４】
また、本実施の形態においては、抽出された各三次元点の信用度は、各三次元点の視差画像上の対応する点（ピクセル）の近隣領域における視差分布の平滑度合いに応じて定義される。つまり、三次元点の対応ピクセルの近隣領域における視差分布の平滑度合いが高い場合は、この三次元点の信用度は高いと定義される。一方、三次元点の対応ピクセルの近隣領域における視差分布の平滑度合いが低い場合、即ち、この近隣領域における視差の変動が大きく、視差ノイズが存在している場合は、三次元点の信用度は低いと定義される。
【０１２５】
ここで、信用度の具体例について図１９（ａ）及び（ｂ）を用いて説明する。図１９（ａ）及び（ｂ）は、それぞれ、信用度の判定対象となる三次元点の視差画像上の対応ピクセルとその近隣領域とにおける視差分布の一例を示す図である。また、図１９（ａ）及び（ｂ）は、視差分布の大きさが３×３ピクセルである場合を示している。
【０１２６】
図１９（ａ）の例では、判定対象となる三次元点の対応ピクセルの視差値（輝度値）は「５」であるのに対して、近隣領域の視差値も全て「５」となっており、判定対象となる三次元点の対応ピクセルの視差値と近隣領域の視差値との差は一定である。従って、図１９（ａ）の例では、視差分布の平滑度合いは高いので、判定対象となる三次元点の信用度も高いと判断される。
【０１２７】
一方、図１９（ｂ）の例では、判定対象となる三次元点の対応ピクセルの視差値（輝度値）は「７」であるのに対して、近隣領域の視差値は「５」〜「９」に変化しており、判定対象となる三次元点の対応ピクセルの視差値と近隣領域の視差値との差も変化している（−２〜＋２）。従って、図１９（ｂ）の例では、視差分布の平滑度合いは低いので、判定対象となる三次元点の信用度も低いと判断される。
【０１２８】
このように、本実施の形態では、判定対象となる三次元点の信用度は、判定対象となる三次元点の対応ピクセルの視差値と近隣領域の視差値との差の変化に基づいて判定される。なお、判定の基準となる閾値は、実験等に基づいて適宜設定される。
【０１２９】
従って、三次元平面修正部５０は、各分割領域から三次元点を抽出する際、信用度が高い点だけを抽出するように処理を行なうが、ある分割領域においては、いずれの点を抽出しても信用度が低い場合がある。このような場合、この分割領域は「信用度が低い分割領域」と認識され、三次元平面修正部５０は、信用度が低い分割領域からの三次元点の抽出を行なわずに、代わりに他の分割領域から、更に高信用度の１点をランダムに抽出することができる。
【０１３０】
具体的には、三次元平面修正部５０は、まず、いずれの点を抽出しても信用度が低い分割領域の数Ｍを特定する。次に、三次元平面修正部５０は、信用度が高い分割領域から１点ずつ三次元点を抽出し、更に、信用度が高い分割領域の中からランダムにＭ個の分割領域を選択する。そして、三次元平面修正部５０は、選択した分割領域それぞれから、未だ選択されておらず、且つ、信用度が高い三次元点を抽出する。
【０１３１】
また、本実施の形態において、修正の対象となる三次元平面から抽出すべき点の数は、各三次元平面の面積に応じて定義される。具体的には、三次元平面修正部５０は、修正の対象となる各三次元平面の面積を特定し、特定した面積に、予め設定された比例値を乗算することによって、抽出すべき点の数を算出することができる。この場合に用いられる比例値は、上述したように、ユーザーによって入力されるパラメータであり、処理パラメータ記憶部２１に記憶されている。また、ロバストな処理を実現するためには、出来るだけ、抽出される点の数は多い方が良いが、点の数が多すぎると処理効率が低下することから、比例値は、ユーザーによって、その経験に基づいて、効果と効率との両方のバランスを考慮して設定される。
【０１３２】
また、上述した、修正の対象となる三次元平面を分割する際に用いるステップ値は、各分割領域から抽出すべき点の数に応じて設定される。ここで、ステップ値の計算方法の一例について以下に説明する。
【０１３３】
例えば、修正の対象となる三次元平面Ｐから、三次元平面Ｐを構成する全ピクセル数の２０％に相当する数の点が最低でも抽出される場合を考える。この場合、各分割領域から１点が抽出されるので、ステップ値は２．２３６（＝（１／０．２）０．５）又はそれより小さい値に設定される必要がある。
【０１３４】
次に、三次元平面修正部５０は、抽出した各三次元点に基づき、各点の座標からその点が属している三次元平面までの距離を計算し、計算した距離に基づいて、三次元平面の向き及び位置を修正する。具体的には、三次元平面が、例えばＺ＝ＡＸ＋ＢＹ＋Ｃで表現されているとすると、三次元平面修正部５０は、係数Ａ、Ｂ、Ｃの値を修正する。
【０１３５】
また、この場合の修正処理には、修正処理の精度を高める点から、例えば、大量の点を用いるＲＡＮＳＡＣ法等のロバスト推定法が用いられるのが良い。また、修正処理は、一つの三次元平面を一つの処理単位として行なわれる。
【０１３６】
なお、このように、ランダムサンプリングによって抽出された三次元点を使用して三次元平面を修正する理由は、共面点クラスターの三次元点の集合に基づいて算出された三次元平面には、共面点クラスターの抽出により単一視差面などのマージによって発生した誤差が含まれている可能性があるからである。
【０１３７】
最後に、三次元平面修正部５０は、修正後の三次元平面上の点、例えば、その平面上の全ての点について、サブピクセルレベルの視差を計算する。これにより、三次元データが取得された領域について、サブピクセルレベルの視差を取得することができる。
【０１３８】
本実施の形態によれば、表面がスムーズに変化する三次元平面をより高い精度で取得することができる。
【０１３９】
［装置動作］
次に、本発明の実施の形態における三次元データ生成装置１００の動作について図８〜図１７を用いて説明する。また、本実施の形態では、三次元データ生成装置１００を動作させることによって、三次元データ生成方法が実施される。よって、本実施の形態における三次元データ生成方法の説明は、以下の三次元データ生成装置１００の動作説明に代える。なお、以下の説明では、適宜、図１〜図７を参酌する。
【０１４０】
［全体の処理］
最初に、三次元データ生成装置１００で実行される処理全体について、図８を参照して説明する。図８は、本発明の実施の形態における三次元データ生成装置の動作全体を示すフロー図である。
【０１４１】
まず、前提として、三次元データ生成装置１００において、外部からステレオペアの左右画像が入力され、視差データ生成部１０が、入力されたステレオペアの左右画像を用いて視差データを生成し、これを共面点クラスター抽出部３０に入力する。また、ユーザーが、処理に必要な各種パラメータを入力すると、処理パラメータ入力部２０は、入力されたパラメータを受け付け、入力を受け付けたパラメータを処理パラメータ記憶部２１に記憶させる。その後、図８に示す三次元データの生成処理が開始される。
【０１４２】
最初に、図８に示すように、三次元データ生成装置１００において、共面点クラスター抽出部３０が、入力された視差データを用いて、仮想三次元空間内に拡張平面を生成し、この平面から共面点クラスターを抽出する（ステップＳ１００）。つまり、共面点クラスター抽出部３０は、いくつかの異なるサイズの拡張平面を生成し、生成した拡張平面毎に、各拡張平面の生成に係わる三次元点の集合を共面点クラスターとして抽出する。
【０１４３】
次に、三次元データ生成装置１００において、三次元平面抽出部４０が、ステップＳ１００で抽出された共面点クラスターを用いて、仮想三次元空間内に存在する平面の三次元データを抽出する（ステップＳ２００）。つまり、平面抽出部４０は、共面点クラスターに基づき、任意形状を有し、且つ、サイズが異なる平面を生成する。
【０１４４】
そして、三次元データ生成装置１００においては、三次元平面修正部５０が、ステップＳ２００で抽出された平面の三次元データに対して修正を実行する（ステップＳ３００）。つまり、三次元平面修正部５０が、三次元平面抽出部４０によって抽出された平面の三次元データを修正する。
【０１４５】
［共面点クラスター抽出処理］
続いて、図８に示したステップＳ１００〜Ｓ３００の詳細を図９〜図１７を参照して説明する。まず、図９を参照して、図８に示した共面点クラスター抽出処理（ステップＳ１００）について説明する。図９は、図８に示した共面点クラスター抽出処理を具体的に示すフロー図である。
【０１４６】
図９に示すように、まず、共面点クラスター抽出部３０は、視差データ生成部１０からの視差データの入力を受け付ける（ステップＳ１０１）。
【０１４７】
次に、共面点クラスター抽出部３０は、処理パラメータ記憶部２１に記憶されているカメラ関連の係数及び撮影時の状況を示す係数を取得し、これらを利用して、視差データに基づいて、三次元空間における三次元点の座標を計算する。そして、共面点クラスター抽出部３０は、計算によって得られた三次元座標を用いて、単一視差面を生成する（ステップＳ１０２）。
【０１４８】
次に、共面点クラスター抽出部３０は、マージ対象となる単一視差面間の視差変化ペース、つまり、空間的に隣り合う２つの単一視差面間の視差値の差ｔを、初期値である「１」に設定する（ステップＳ１０３）。
【０１４９】
次に、共面点クラスター抽出部３０は、現在のｔの値が、予め設定された「単一視差面間の視差値の差の最大許容値」より小さいかどうかを判定する（ステップＳ１０４）。ステップＳ１０４の判定の結果、現在のｔの値が最大許容値より小さくない場合は（ステップＳ１０４；Ｎｏ）、共面点クラスター抽出部３０は、ステップＳ１１１を実行する。
【０１５０】
一方、ステップＳ１０４の判定の結果、現在のｔの値が最大許容値より小さい場合（ステップＳ１０４；Ｙｅｓ）は、共面点クラスター抽出部３０は、マージ対象となる単一視差面を抽出する（ステップＳ１０５）。
【０１５１】
次に、共面点クラスター抽出部３０は、ステップＳ１０５で抽出された、空間的に隣り合い、且つ、マージ条件を満たす、単一視差面をマージして第１マージ面を生成する（ステップＳ１０６）。続いて、共面点クラスター抽出部３０は、第１マージ面の結合条件を満たす第１マージ面同士をマージして第２マージ面を生成する（ステップＳ１０７）。
【０１５２】
次に、共面点クラスター抽出部３０は、未だマージされていない第１マージ面、及び未だマージされていない単一視差面を特定する。そして、共面点クラスター抽出部３０は、特定した第１マージ面及び第一視差面のうち、ステップＳ１０７で抽出した各第２マージ面と同じ実在の平面に属しているものを、この第２マージ面にマージして、拡張平面を生成する（ステップＳ１０８）。
【０１５３】
次に、共面点クラスター抽出部３０は、未だマージされていない単一視差面が存在しているかどうか判定する（ステップＳ１０９）。ステップＳ１０９の判定の結果、未だマージされていない単一視差面が存在している場合（ステップＳ１０９；Ｙｅｓ）は、共面点クラスター抽出部３０は、ｔの値を所定値分（例えば１ピクセル）増加させる（ステップＳ１１０）。その後、共面点クラスター抽出部３０は、再度ステップＳ１０４を実行する。
【０１５４】
一方、ステップＳ１０９の判定の結果、未だマージされていない単一視差面が存在していない場合（ステップＳ１０９；Ｎｏ）は、共面点クラスター抽出部３０は、ステップＳ１１１を実行する。
【０１５５】
ステップＳ１１１では、共面点クラスター抽出部３０は、生成した全ての拡張平面それぞれ毎に、拡張平面に係わっている全ての三次元点を共面点クラスターとして抽出する。これにより、共面点クラスターの抽出処理が終了し、その後、ステップＳ２００が実行される。
【０１５６】
第１マージ面生成処理：
ここで、図１０を参照して、上述したステップＳ１０６における第１マージ面の生成処理について説明する。図１０は、図９に示した第１マージ面生成処理をより具体的に示すフロー図である。
【０１５７】
図１０に示すように、共面点クラスター抽出部３０は、まず、ステップＳ１０５で抽出された全ての単一視差面に対して、その奥行きの値（Ｚ値）に基づいて、順位を設定する（ステップＳ１０６−１）。
【０１５８】
次に、共面点クラスター抽出部３０は、未処理面数Ｓの初期値を、現在の未処理の単一視差面の数に設定する（ステップＳ１０６−２）。次に、共面点クラスター抽出部３０は、未処理面数Ｓの値が１より小さいかどうかを判定する（ステップＳ１０６−３）。
【０１５９】
ステップＳ１０６−３の判定の結果、未処理面数Ｓの値が１より小さい場合（ステップＳ１０６−３；Ｙｅｓ）は、共面点クラスター抽出部３０は、ステップＳ１０６を終了し、続いて、ステップＳ１０７を実行する。
【０１６０】
一方、ステップＳ１０６−３の判定の結果、未処理面数Ｓの値が１より小さくない場合（ステップＳ１０６−３；Ｎｏ）は、共面点クラスター抽出部３０は、マージ対象となる単一視差面のうち最も奥行きの値が大きい単一視差面を選択する（ステップＳ１０６−４）。
【０１６１】
次に、共面点クラスター抽出部３０は、マージ対象となる単一視差面の中から、選択された単一視差面とマージできる（マージ条件を満たす）未処理の単一視差面が存在しているかどうかを判定する（ステップＳ１０６−５）。
【０１６２】
ステップＳ１０６−５の判定の結果、マージできる未処理の単一視差面が存在する場合（ステップＳ１０６−５；Ｙｅｓ）は、共面点クラスター抽出部３０は、選択された単一視差面とマージ条件を満たす単一視差面とを一つずつマージする（ステップＳ１０６−６）。
【０１６３】
次に、共面点クラスター抽出部３０は、マージ完了後に、選択された単一視差面の状態を第１マージ面に設定し、この単一視差面にマージされた単一視差面を削除する（ステップＳ１０６−８）。
【０１６４】
次に、共面点クラスター抽出部３０は、未処理面数Ｓの値から、１を減算すると共に、削除した単一視差面の数も減算し（ステップＳ１０６−９）、その後、再度ステップＳ１０６−３を実行する。
【０１６５】
また、ステップＳ１０６−５の判定の結果、マージできる未処理の単一視差面が存在しない場合（ステップＳ１０６−５；Ｎｏ）は、共面点クラスター抽出部３０は、選択された単一視差面の状態を、「未マージの単一視差面」に設定する（ステップＳ１０６−７）。次に、共面点クラスター抽出部３０は、未処理面数Ｓの値から１を減算し（ステップＳ１０６−１０）、その後、再度ステップＳ１０６−３を実行する。
【０１６６】
このように、ステップＳ１０６では、マージ対象となる単一視差面の数（未処理面数Ｓ）の値が、１より小さくなるまで、ステップＳ１０６−３からＳ１０６−１０までが繰り返し実行され、第１マージ面が生成される。また、ステップＳ１０６−４では、順に奥行きの値が小さい単一視差面が選択される。その後、Ｓ１０７において、共面点クラスター抽出部３０は、生成された第１マージ面を用いて第２マージ面を生成する。
【０１６７】
第２マージ面生成処理：
続いて、図１１を参照して、上述したステップＳ１０７における第２マージ面の生成処理について説明する。図１１は、図９に示した第２マージ面生成処理をより具体的に示すフロー図である。
【０１６８】
図１１に示すように、共面点クラスター抽出部３０は、まず、ステップＳ１０６で生成された全ての第１マージ面に対して、その対応する奥行きの値（Ｚ値）に基づいて、順位を設定する（ステップＳ１０７−１）。
【０１６９】
次に、共面点クラスター抽出部３０は、未処理面数Ｕの初期値を、現在の未処理の第１マージ面の数に設定する（ステップＳ１０７−２）。次に、共面点クラスター抽出部３０は、未処理面数Ｕの値が１より小さいかどうかを判定する（ステップＳ１０７−３）。
【０１７０】
ステップＳ１０７−３の判定の結果、未処理面数Ｕの値が１より小さくない場合（ステップＳ１０７−３；Ｎｏ）は、共面点クラスター抽出部３０は、マージ対象となる第１マージ面のうち最も奥行きの値が大きいマージ面を選択する（ステップＳ１０７−４）。なお、ステップＳ１０７で選択された第１マージ面を、以下においては「第１マージ面Ｐ」と表記する。
【０１７１】
次に、共面点クラスター抽出部３０は、第１マージ面Ｐとマージできる全ての第１マージ面を特定するため、マージ可能な全ての第１マージ面の集合を示す行列Ｒを作成する（ステップＳ１０７−５）。また、行列Ｒにおいて、エレメントＲ（ｍ）〜エレメントＲ（ｎ）は第１マージ面である。また、共面点クラスター抽出部３０は、初期設定では、行列の頭を示すｍの値を「０」に設定し、行列の尾を示すｎの値を「１」に設定し、更に、行列Ｒに含まれるエレメントＲ（０）を第１マージ面Ｐのみに設定する。
【０１７２】
次に、共面点クラスター抽出部３０は、行列内における未確認のエレメントの存在を特定するため、ｍの値がｎの値より小さいかどうかを判定する（ステップＳ１０７−６）。
【０１７３】
ステップＳ１０７−６の判定の結果、ｍの値がｎの値より小さい場合（ステップＳ１０７−６；Ｙｅｓ）は、行列内に未確認のエレメントが存在する。よって、共面点クラスター抽出部３０は、現在のエレメントＲ（ｍ）と結合できる未処理の第１マージ面が存在するかどうかを判定する（ステップＳ１０７−７）。
【０１７４】
ステップＳ１０７−７の判定の結果、エレメントＲ（ｍ）と結合できる第１マージ面が存在しない場合（ステップＳ１０７−７；Ｎｏ）は、共面点クラスター抽出部３０は、現在のエレメントＲ（ｍ）の処理を完了し、ｍの値をインクリメントする（ステップＳ１０７−８）。その後、共面点クラスター抽出部３０は、現在の行列内の状態を確認するため、再度ステップＳ１０７−６を実行する。
【０１７５】
一方、ステップＳ１０７−７の判定の結果、エレメントＲ（ｍ）と結合できる第１マージ面が存在する場合（ステップＳ１０７−７；Ｙｅｓ）は、エレメントＲ（ｍ）とその第１マージ面とをマージする（ステップＳ１０７−９）。なお、このときマージされる第１結合面を以下「第１マージ面Ｑ」と表記する。
【０１７６】
次に、共面点クラスター抽出部３０は、第１マージ面Ｑを行列Ｒに格納するため、これをエレメントＲ（ｎ）設定する（ステップＳ１０７−１０）。そして、共面点クラスター抽出部３０は、次のエレメントを格納するため、ｎの値をインクリメントする（ステップＳ１０７−１１）。次に、共面点クラスター抽出部３０は、エレメントＲ（ｍ）と結合できる他の第１マージ面が存在しているかどうかを判定するため、再度、ステップＳ１０７−７を実行する。
【０１７７】
また、上述のステップＳ１０７−６の判定の結果、ｍの値がｎの値より小さくない場合（ステップＳ１０７−６；Ｎｏ）は、共面点クラスター抽出部３０は、行列のエレメントの数を表わすｎの値が「１」であるかどうかを判定する（ステップＳ１０７−１２）。
【０１７８】
ステップＳ１０７−１２の判定の結果、ｎの値が「１」である場合（ステップＳ１０７−１２；Ｙｅｓ）は、行列Ｒのエレメントは第１マージ面Ｐのみとなる。よって、第１マージ面Ｐと結合できる第１マージ面は存在していないので、共面点クラスター抽出部３０は、第１マージ面Ｐ（エレメントＲ（０））の状態を、「未マージの第１マージ面」に設定する（ステップＳ１０７−１４）。
【０１７９】
一方、ステップＳ１０７−１２の判定の結果、ｎの値が「１」でない場合（ステップＳ１０７−１２；Ｎｏ）は、行列Ｒのエレメントは第１マージ面Ｐのみではなく、第１マージ面Ｐと結合できる、エレメントＲ（１）からＲ（ｎ−１）までの第１マージ面が存在する。従って、共面点クラスター抽出部３０は、行列Ｒを構成するエレメントＲ（０）〜Ｒ（Ｎ−１）をマージして、第２マージ面を生成し、マージ後の第１マージ面Ｐ（面Ｒ（０））の状態を第２マージ面に設定する（ステップＳ１０７−１３）。また、このとき、共面点クラスター抽出部３０は、結合されたエレメントＲ（１）からＲ（ｎ−１）までを削除する。
【０１８０】
ステップＳ１０７−１３又はＳ１０７−１４が実行されると、第１マージ面Ｐについての処理は完了するので、共面点クラスター抽出部３０は、次の未処理の第１マージ面の処理を実行するため、現在残る未処理の第１マージ面の数をＵ−ｎにアップデートする（ステップＳ１０７−１５）。その後、共面点クラスター抽出部３０は、再度、ステップＳ１０７−３を実行する。
【０１８１】
また、上述のステップＳ１０７−３の判定の結果、未処理面数Ｕの値が１より小さい場合（ステップＳ１０７−３；Ｙｅｓ）は、共面点クラスター抽出部３０は、ステップＳ１０７を終了する。その後、ステップＳ１０８において、共面点クラスター抽出部３０は、生成した第２マージ面を用いて拡張平面を生成する。
【０１８２】
拡張平面生成処理：
次に、図１２を参照して、上述したステップＳ１０８における拡張平面生成の処理について説明する。図１２は、図９に示した拡張平面生成処理をより具体的に示すフロー図である。
【０１８３】
図１２に示すように、共面点クラスター抽出部３０は、まず、ステップＳ１０７で生成された全ての第２マージ面に対して、その対応する奥行きの値（Ｚ値）に基づいて順位を設定する（ステップＳ１０８−１）。
【０１８４】
次に、共面点クラスター抽出部３０は、未処理面数Ｍの初期値を、全ての第２マージ面の数に設定する（ステップＳ１０８−２）。また、共面点クラスター抽出部３０は、第１マージ面の生成処理（ステップＳ１０６）で残った「未マージの単一視差面」の数Ｇと、第２マージ面の生成処理（ステップＳ１０７）で残った「未マージの第１マージ面」の数Ｈとを取得する（ステップＳ１０８−２）。
【０１８５】
次に、共面点クラスター抽出部３０は、未処理面数Ｍの値が１より小さいかどうかを判定する（ステップＳ１０８−３）。ステップｓ１０８−３の判定の結果、未処理面数Ｍの値が１より小さい場合（ステップＳ１０８−３；Ｙｅｓ）は、未処理の第２マージ面は一つも残っていない状況である。よって、共面点クラスター抽出部３０は、全ての第２マージ面の処理の後に、未マージの単一視差面と未マージの第１マージ面との処理を実行し（ステップＳ１０８−１２）、その後、拡張平面の生成処理を終了する。ステップＳ１０８−１２については後述する。
【０１８６】
一方、ステップＳ１０８−３の判定の結果、未処理面数Ｍの値が１より小さくない場合（ステップＳ１０８−３；Ｎｏ）は、共面点クラスター抽出部３０は、マージ対象となる第２マージ面のうち最も奥行きの値が大きい第２マージ面を選択する（ステップＳ１０８−４）。
【０１８７】
次に、共面点クラスター抽出部３０は、そして、現在の未マージの単一視差面の数Ｇと、未マージの第１マージ面の数Ｈとが、共に「０」であるかどうかを判定する（ステップＳ１０８−５）。
【０１８８】
ステップＳ１０８−５の判定の結果、Ｇ及びＨの両方が「０」となっている場合（ステップＳ１０８−５；Ｙｅｓ）は、第２マージ面への結合対象となる単一視差面及び第１マージ面は存在しない。よって、共面点クラスター抽出部３０は、ステップＳ１０８−４で選択された第２マージ面の状態を拡張平面に設定する（ステップＳ１０８−１０）。また共面点クラスター抽出部３０は、未処理面数Ｍの値を１減らし（ステップＳ１０８−１１）、その後、次の第２マージ面を対象として、再度ステップＳ１０８−３を実行する。
【０１８９】
一方、ステップＳ１０８−５の判定の結果、Ｇ及びＨの両方が「０」となっていない場合（ステップＳ１０８−５；Ｎｏ）は、共面点クラスター抽出部３０は、未マージの単一視差面及び第１マージ面の中に、選択された第２マージ面と結合の条件を満たす面が存在するかどうかを判定する（ステップＳ１０８−６）。
【０１９０】
ステップＳ１０８−６の判定の結果、結合の条件を満たす面が存在しない場合（ステップＳ１０９−６；Ｎｏ）は、共面点クラスター抽出部３０は、上述したステップＳ１０８−１０及びＳ１０８−１１を実行する。
【０１９１】
一方、ステップＳ１０８−６の判定の結果、結合の条件を満たす面が存在する場合（ステップＳ１０８−６；Ｙｅｓ）は、共面点クラスター抽出部３０は、選択された第２マージ面に、条件を満たす単一視差面又は第１マージ面を一つずつ結合する（ステップＳ１０８−７）。更に、共面点クラスター抽出部３０は、結合された未マージの単一視差面及び第１マージ面を削除する（ステップＳ１０８−８）。
【０１９２】
次に、共面点クラスター抽出部３０は、Ｇの値を、現在残っている未マージの単一視差面の数に更新し、更に、Ｈの値を、現在残っている未マージの第１マージ面の数に更新する（ステップＳ１０８−９）。その後、共面点クラスター抽出部３０は、上述したステップＳ１０８−１０及びＳ１０８−１１を実行する。
【０１９３】
ここで、図１３を参照して、上述したステップＳ１０８−１２における未マージの単一視差面及び未マージの第１マージ面の処理について説明する。図１３は、図１２に示した未マージの単一視差面及び第１マージ面の処理をより具体的に示すフロー図である。
【０１９４】
図１３に示すように、共面点クラスター抽出部３０は、判定条件「残っている未マージの単一視差面（処理対象となる単一視差面）の数Ｇが０である」に該当するかどうかを判定する（ステップＳ１０８−１２−１）。
【０１９５】
ステップＳ１０８−１２−１の判定の結果、判定条件に該当する場合（ステップＳ１０８−１２−１；Ｙｅｓ）は、共面点クラスター抽出部３０は、後述するステップＳ１０８−１２−７を実行する。これは、処理対象となる単一視差面の数Ｇが０である場合は、単一視差面についてマージ処理を行なう必要がないからである。
【０１９６】
一方、ステップＳ１０８−１２−１の判定の結果、判定条件に該当しない場合（ステップＳ１０８−１２−１；Ｎｏ）は、共面点クラスター抽出部３０は、処理対象となる単一視差面のいずれか一つを選択する。そして、共面点クラスター抽出部３０は、選択した単一視差面の面積が、処理パラメータ記憶部２１に予め記憶されている面積の閾値より大きいかどうかを判定する（ステップＳ１０８−１２−２）。
【０１９７】
ステップＳ１０８−１２−２の判定の結果、選択された単一視差面の面積が閾値より大きい場合（ステップＳ１０８−１２−２；Ｙｅｓ）は、共面点クラスター抽出部３０は、選択された単一視差面をそのまま残す。（ステップＳ１０８−１２−３）。
【０１９８】
一方、ステップＳ１０８−１２−２の判定の結果、選択された単一視差面の面積が閾値より大きくない場合（ステップＳ１０８−１２−２；Ｎｏ）は、共面点クラスター抽出部３０は、選択された単一視差面を削除する（ステップＳ１０８−１２−４）。
【０１９９】
そして、ステップＳ１０８−１２−３及びＳ１０８−１２−４のいずれかが実行されると、共面点クラスター抽出部３０は、処理対象となっている全ての単一視差面について処理が終了したかどうかを判定する（ステップＳ１０８−１２−５）。
【０２００】
ステップＳ１０８−１２−５の判定の結果、処理対象となっている全ての単一視差面について処理が終了していない場合（ステップＳ１０８−１２−５；Ｎｏ）は、共面点クラスター抽出部３０は、処理対象となる単一視差面の中から次の未処理の単一視差面を選択し（ステップＳ１０８−１２−６）、再度ステップＳ１０８−１２−６を実行する。
【０２０１】
一方、ステップＳ１０８−１２−５の判定の結果、処理対象となっている全ての単一視差面について処理が終了している場合（ステップＳ１０８−１２−５；Ｙｅｓ）は、共面点クラスター抽出部３０は、ステップＳ１０８−１２−７を実行する。
【０２０２】
ステップＳ１０８−１２−７では、ステップＳ１０８−１２−７は、未マージの第１マージ面を処理するため、まず、残っている未マージの第１マージ面（処理対象となる第１マージ面）の数Ｈが０（ゼロ）であるかどうかを判定する（ステップＳ１０８−１２−７）。
【０２０３】
ステップＳ１０８−１２−７の判定の結果、Ｈが０（ゼロ）である場合（ステップＳ１０８−１２−７；Ｙｅｓ）は、共面点クラスター抽出部３０は、ステップＳ１０８−１２における処理を終了する。
【０２０４】
一方、ステップＳ１０８−１２−７の判定の結果、Ｈが０（ゼロ）でない場合（ステップＳ１０８−１２−７；Ｎｏ）は、共面点クラスター抽出部３０は、処理対象となる第１マージ面のいずれか一つを選択する。そして、共面点クラスター抽出部３０は、選択した第１マージ面の面積が予め設定された閾値より大きいかどうかを判定する（ステップＳ１０８−１２−８）。
【０２０５】
ステップＳ１０８−１２−８の判定の結果、選択された第１マージ面の面積が予め設定された閾値より大きい場合（ステップＳ１０８−１２−８；Ｙｅｓ）は、共面点クラスター抽出部３０は、選択された第１マージ面の状態を拡張平面に設定する（ステップＳ１０８−１２−９）。
【０２０６】
一方、ステップＳ１０８−１２−８の判定の結果、選択された第１マージ面の面積が予め設定された閾値より大きくない場合（ステップＳ１０８−１２−８；Ｎｏ）は、共面点クラスター抽出部３０は、選択された第１マージ面を削除する（ステップＳ１０８−１２−１０）。
【０２０７】
そして、ステップＳ１０８−１２−９及びＳ１０８−１２−１０のいずれかが実行されると、共面点クラスター抽出部３０は、処理対象となっている全ての第１マージ面について処理が終了したかどうかを判定する（ステップＳ１０８−１２−１１）。
【０２０８】
ステップＳ１０８−１２−１１の判定の結果、処理対象となっている全ての第１マージ面について処理が終了していない場合（ステップＳ１０８−１２−１１；Ｎｏ）は、共面点クラスター抽出部３０は、処理対象となる第１マージ面の中から次の未処理の第１マージ面を選択し（ステップＳ１０８−１２−１２）、再度、ステップＳ１０８−１２−８を実行する。
【０２０９】
一方、ステップＳ１０８−１２−１１の判定の結果、処理対象となっている全ての第１マージ面について処理が終了している場合（ステップＳ１０８−１２−１１；Ｙｅｓ）は、共面点クラスター抽出部３０は、上述したステップＳ１０９を実行する。
【０２１０】
［三次元平面抽出処理］
続いて、図１４を参照して、図８に示した三次元平面抽出処理（ステップＳ２００）について説明する。図１４は、図８に示した三次元平面抽出処理を具体的に示すフロー図である。
【０２１１】
図１４に示すように、三次元平面抽出部４０は、まず、ステップＳ１００で抽出された共面点クラスター毎に、各共面点クラスターに属している全ての三次元点の三次元情報（三次元座標）を取得する（ステップＳ２０１）。
【０２１２】
次に、三次元平面抽出部４０は、一つの共面点クラスターを選択し、選択した共面点クラスターについて、取得された三次元情報を用いて、これらの点が属している三次元平面の式における係数を計算する（ステップＳ２０２）。そして、三次元平面抽出部４０は、全ての共面点クラスターについて処理が終了しているかどうかを判定する（ステップＳ２０３）。
【０２１３】
ステップＳ２０３の判定の結果、全ての共面点クラスターについて処理が終了していない場合（ステップＳ２０３；Ｎｏ）は、三次元平面抽出部４０は、次の未処理の共面点クラスターを選択し（ステップＳ２０４）、再度ステップＳ２０２を実行する。一方、ステップＳ２０３の判定の結果、全ての共面点クラスターについて処理が終了している場合（ステップＳ２０３；Ｙｅｓ）は、三次元平面抽出部４０は、ステップＳ２００の処理を終了する。
【０２１４】
［三次元平面修正処理］
続いて、図１５を参照して、図８に示した三次元平面修正処理（ステップＳ３００）について説明する。図１５は、図８に示した三次元平面修正処理を具体的に示すフロー図である。
【０２１５】
図１５に示すように、まず、三次元平面修正部５０は、ステップＳ２００で取得された仮想三次元空間における三次元平面の一つを選択し、選択した三次元平面に対してサンプリングを行なって、ランダムにサンプル点（三次元点）を抽出する（ステップＳ３０１）。
【０２１６】
次に、三次元平面修正部５０は、ステップＳ３０１で抽出したサンプル点に基づいて、三次元平面を表わす式の係数を修正する（ステップＳ３０２）。
【０２１７】
その後、三次元平面修正部５０は、全ての三次元平面について処理が終了しているかどうかを判定する（ステップＳ３０３）。ステップＳ３０３の判定の結果、全ての三次元平面について処理が終了していない場合（ステップＳ３０３；Ｎｏ）は、三次元平面修正部５０は、次の未処理の三次元平面を選択し（ステップＳ３０４）、再度ステップＳ３０１を実行する。一方、ステップＳ３０３の判定の結果、全ての三次元平面について処理が終了している場合（ステップＳ３０３；Ｙｅｓ）は、三次元平面修正部５０における処理は終了する。
【０２１８】
サンプル点の抽出処理：
ここで、図１６を参照して、上述したステップＳ３０２における三次元平面からのサンプル点の抽出処理について説明する。図１６は、図１５に示した三次元平面からのサンプル点の抽出処理をより具体的に示すフロー図である。
【０２１９】
図１６に示すように、まず、三次元平面修正部５０は、処理パラメータ記憶部２１に予め記憶されている比例値に基づいて、三次元平面を分割する際に用いるステップ値を計算する（ステップＳ３０１−１）。
【０２２０】
次に、三次元平面修正部５０は、分割によって得られる各分割領域のうちの信用度が低い分割領域の数Ｎについて、初期値を「０」に設定する（ステップＳ３０１−２）。
【０２２１】
次に、三次元平面修正部５０は、一つの分割領域を選択し、選択した分割領域の全範囲の信用度が低いかどうかを判定する（ステップＳ３０１−３）。ステップＳ３０１−３の判定の結果、全範囲の信用度が低い場合（ステップＳ３０１−３；Ｙｅｓ）は、三次元平面修正部５０は、Ｎの値を１増加し（ステップＳ３０１−４）、その後、ステップＳ３０１−８を実行する。
【０２２２】
一方、ステップＳ３０１−３の判定の結果、全範囲の信用度が低くない場合（ステップＳ３０１−３；Ｎｏ）は、三次元平面修正部５０は、選択した分割領域を信用度が高い分割領域に設定する（ステップＳ３０１−５）。そして、三次元平面修正部５０は、選択した分割領域から、ランダムに１点のサンプル点を抽出する（ステップＳ３０１−６）。
【０２２３】
次に、三次元平面修正部５０は、抽出したサンプル点が高信用度点かどうかを判定する（ステップＳ３０１−７）。ステップＳ３０１−７の判定の結果、抽出したサンプル点が高信用度点でない場合（ステップＳ３０１−７；Ｎｏ）は、三次元平面修正部５０は、再度、ステップＳ３０１−６を実行する。三次元平面修正部５０は、高信用度のサンプル点が抽出されるまで、ステップＳ３０１−６〜Ｓ３０１−７を繰り返し実行する。
【０２２４】
一方、ステップＳ３０１−７の判定の結果、抽出したサンプル点が高信用度点である場合（ステップＳ３０１−７；Ｙｅｓ）は、三次元平面修正部５０は、全ての分割領域について処理が終了したかどうかを判定する（ステップＳ３０１−８）。
【０２２５】
ステップＳ３０１−８の判定の結果、全ての分割領域について処理が終了していない場合（ステップＳ３０１−８；Ｎｏ）は、三次元平面修正部５０は、次の未処理の分割領域を選択する（ステップＳ３０１−９）。その後、三次元平面修正部５０は、再度ステップＳ３０１−３を実行する。
【０２２６】
一方、ステップＳ３０１−８の判定の結果、全ての分割領域について処理が終了している場合（ステップＳ３０１−８；Ｙｅｓ）は、三次元平面修正部５０は、全範囲の信用度が低い分割領域が存在していたかどうか、即ち、Ｎの値が０より大きいかどうかを判定する（ステップＳ３０１−１０）。
【０２２７】
ステップＳ３０１−１０の判定の結果、Ｎの値が０より大きい場合（ステップＳ３０１−１０；Ｙｅｓ）は、三次元平面修正部５０は、Ｎ個のサンプル点を新たに抽出する必要があるので、信用度が高いと設定された分割領域の中から、ランダムに一つの分割領域を選択し、そして、選択した分割領域からランダムに１点のサンプル点を抽出する（ステップＳ３０１−１１）。
【０２２８】
次に、三次元平面修正部５０は、判定条件「ステップＳ３０１−１１で抽出したサンプル点の信用度が低い」及び「ステップＳ３０１−１１で抽出したサンプル点が既に抽出されている高信用度点と同一」のいずれかに該当するかどうかを判定する（ステップＳ３０１−１２）。
【０２２９】
ステップＳ３０１−１２の判定の結果、いずれかの判定条件に該当する場合（ステップＳ３０１−１２；Ｙｅｓ）は、再度ステップＳ３０１−１１を実行する。三次元平面修正部５０は、ステップＳ３０１−１１で選択した分割領域から既に抽出した高信用度点と異なる高信用度点を取得できるまで、ステップＳ３０１−１１を繰り返し実行することになる。
【０２３０】
一方、ステップＳ３０１−１２の判定の結果、いずれかの条件に該当しない場合（ステップＳ３０１−１２；Ｎｏ）は、三次元平面修正部５０は、Ｎの値を１減算し（ステップＳ３０１−１３）、その後、再度ステップＳ３０１−１０を実行する。
【０２３１】
また、上述のステップＳ３０１−１０の判定の結果、Ｎの値が０より大きくない場合（ステップＳ３０１−１０；Ｎｏ）は、三次元平面修正部５０は、ステップＳ３０１の処理を終了する。
【０２３２】
三次元平面修正処理：
ここで、図１７を参照して、上述したステップＳ３０２における抽出サンプル点に基づいた三次元平面の修正処理について説明する。図１７は、図１５に示した抽出サンプル点に基づいた三次元平面の修正処理をより具体的に示すフロー図である。
【０２３３】
図１７に示すように、三次元平面修正部５０は、ステップＳ３０１で抽出された各サンプル点（三次元点）の三次元座標を用いて、各サンプル点から三次元平面までの距離を計算し（ステップＳ３０２−１）、各サンプル点について計算した距離に基づいて、三次元平面の向き及び位置を修正する（ステップＳ３０２−２）。以上の処理により、三次元平面修正部５０は、ステップＳ３０２の処理を終了する。
【０２３４】
以上のように、本実施の形態における、図８〜図１７に示した三次元データ生成処理を行なえば、ステレオ画像に対して、仮想三次元空間上の平面分析等を行なうことができる。そして、この分析結果に基づいて、実際の世界に存在する任意形状の境界線を有し、且つ、サイズが異なる平面を特定できる。
【０２３５】
［プログラム］
本発明の実施の形態におけるプログラムは、コンピュータに、図８〜図１７に示した各ステップを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における三次元データ生成装置１００と三次元データ生成方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、視差データ生成部１０、共面点クラスター抽出部３０、三次元平面抽出部４０及び三次元平面修正部５０として機能し、処理を行なう。
【０２３６】
ここで、本実施の形態におけるプログラムを実行することによって、三次元データ生成装置を実現するコンピュータについて図１８を用いて説明する。図１８は、本発明の実施の形態における三次元データ生成装置を実現するコンピュータの一例を示すブロック図である。
【０２３７】
図１８に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【０２３８】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【０２３９】
また、記憶装置１１３の具体例としては、ハードディスクの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【０２４０】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【０２４１】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【０２４２】
また、本実施の形態における三次元データ生成装置１００は、上述の視差データ生成部１０、共面点クラスター抽出部３０、三次元平面抽出部４０及び三次元平面修正部５０として機能する電子回路によって構成されていても良い。この場合、三次元データ生成装置１００は、この電子回路が組み込まれたＬＳＩ（Large Scale Integration）などのハードウェア部品として提供される。
【０２４３】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１５）によって表現することができるが、以下の記載に限定されるものではない。
【０２４４】
（付記１）
異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成する装置であって、
前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、共面点クラスター抽出部と、
前記共面点クラスター抽出部によって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、三次元平面抽出部と、
前記三次元平面抽出部による前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、三次元平面修正部と、
を備えていることを特徴とする三次元データ生成装置。
【０２４５】
（付記２）
前記視差データが、前記２つの二次元画像上の対応点ペア毎に算出された視差値を含み、
前記共面点クラスター抽出部が、まず、隣り合う単一視差面を、それぞれにおける視差値及び面積を制限する条件下で結合して第１マージ面を生成し、続いて、隣り合う第１マージ面を、第１マージ面間の位置関係を制限する条件下で結合して第２マージ面を生成し、更に、第２マージ面に、いずれにも結合されていない前記単一視差面及び前記第１マージ面を、位置関係及び面積を制限する条件下で結合して拡張平面を生成し、そして、生成した前記拡張平面毎に、その生成に係わった三次元点の集合を、一つの共面点クラスターとして抽出する、
付記１に記載の三次元データ生成装置。
【０２４６】
（付記３）
前記共面点クラスター抽出部が、前記第２マージ面の生成後に、いずれにも結合されていない単一視差面、及び他の第１マージ面に結合されていない第１マージ面を特定し、特定された前記単一視差面及び前記第１マージ面と、生成された前記第２マージ面とが、実空間の同じ平面に属していることを条件に、これらを結合することによって、前記拡張平面を生成する、
付記２記載の三次元データ生成装置。
【０２４７】
（付記４）
隣り合う前記単一視差面それぞれにおける前記視差値を制限する条件下として、両者の視差値の差が一定値であることが用いられ、そして、前記一定値が、予め定められた最大値まで段階的に設定されている場合において、
前記共面点クラスター抽出部が、段階的に設定された前記一定値毎に、前記第１マージ面の生成、前記第２マージ面の生成、及び前記拡張平面の生成を実行する、
付記２または３に記載の三次元データ生成装置。
【０２４８】
（付記５）
前記三次元平面修正部が、
抽出された前記三次元データによって構築される平面を分割し、分割された部分毎に、当該部分に存在する前記三次元点をランダムに抽出し、抽出した前記三次元点を用いて、前記三次元データが表現する前記実空間の平面の向き及び位置を修正することによって、前記三次元平面を修正する、
付記１〜４のいずれかに記載の三次元データ生成装置。
【０２４９】
（付記６）
異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成するための方法であって、
（ａ）前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、ステップと、
（ｂ）前記（ａ）のステップによって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、ステップと、
（ｃ）前記（ｂ）のステップによる前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、ステップと、
を有することを特徴とする三次元データ生成方法。
【０２５０】
（付記７）
前記視差データが、前記２つの二次元画像上の対応点ペア毎に算出された視差値を含み、
前記（ａ）のステップにおいて、まず、隣り合う単一視差面を、それぞれにおける視差値及び面積を制限する条件下で結合して第１マージ面を生成し、続いて、隣り合う第１マージ面を、第１マージ面間の位置関係を制限する条件下で結合して第２マージ面を生成し、更に、第２マージ面に、いずれにも結合されていない前記単一視差面及び前記第１マージ面を、位置関係及び面積を制限する条件下で結合して拡張平面を生成し、そして、生成した前記拡張平面毎に、その生成に係わった三次元点の集合を、一つの共面点クラスターとして抽出する、
付記６に記載の三次元データ生成方法。
【０２５１】
（付記８）
前記（ａ）のステップにおいて、前記第２マージ面の生成後に、いずれにも結合されていない単一視差面、及び他の第１マージ面に結合されていない第１マージ面を特定し、特定された前記単一視差面及び前記第１マージ面と、生成された前記第２マージ面とが、実空間の同じ平面に属していることを条件に、これらを結合することによって、前記拡張平面を生成する、
付記７記載の三次元データ生成方法。
【０２５２】
（付記９）
隣り合う前記単一視差面それぞれにおける前記視差値を制限する条件下として、両者の視差値の差が一定値であることが用いられ、そして、前記一定値が、予め定められた最大値まで段階的に設定されている場合に、
前記（ａ）のステップにおいて、段階的に設定された前記一定値毎に、前記第１マージ面の生成、前記第２マージ面の生成、及び前記拡張平面の生成を実行する、
付記７または８に記載の三次元データ生成方法。
【０２５３】
（付記１０）
前記（ｃ）のステップにおいて、
前記（ｂ）のステップで抽出された前記三次元データによって構築される平面を分割し、分割された部分毎に、当該部分に存在する前記三次元点をランダムに抽出し、抽出した前記三次元点を用いて、前記三次元データが表現する前記実空間の平面の向き及び位置を修正することによって、前記三次元平面を修正する、
付記６〜９のいずれかに記載の三次元データ生成方法。
【０２５４】
（付記１１）
コンピュータによって、異なる角度から同一対象を撮影して得られた２つの二次元画像を用いて三次元データを生成するためのプログラムであって、
前記コンピュータに、
（ａ）前記２つの二次元画像上の対応点ペアから取得された視差データに基づいて、仮想三次元空間内に三次元点を生成し、更に、生成された三次元点によって構成される単一視差面のうち、隣接する前記単一視差面同士を結合することによって、実空間の平面に属する三次元点の集合を特定し、これらを共面点クラスターとして抽出する、ステップと、
（ｂ）前記（ａ）のステップによって抽出された共面点クラスターを用いて、各共面クラスターから、前記実空間の平面を表現する三次元データを抽出する、ステップと、
（ｃ）前記（ｂ）のステップによる前記三次元データの抽出に用いられた前記共面点クラスターに対してサンプリングを実行し、サンプリングによって得られた三次元点を用いて、前記三次元データを修正する、ステップと、
を実行させるプログラム。
【０２５５】
（付記１２）
前記視差データが、前記２つの二次元画像上の対応点ペア毎に算出された視差値を含み、
前記（ａ）のステップにおいて、まず、隣り合う単一視差面を、それぞれにおける視差値及び面積を制限する条件下で結合して第１マージ面を生成し、続いて、隣り合う第１マージ面を、第１マージ面間の位置関係を制限する条件下で結合して第２マージ面を生成し、更に、第２マージ面に、いずれにも結合されていない前記単一視差面及び前記第１マージ面を、位置関係及び面積を制限する条件下で結合して拡張平面を生成し、そして、生成した前記拡張平面毎に、その生成に係わった三次元点の集合を、一つの共面点クラスターとして抽出する、
付記１１に記載のプログラム。
【０２５６】
（付記１３）
前記（ａ）のステップにおいて、前記第２マージ面の生成後に、いずれにも結合されていない単一視差面、及び他の第１マージ面に結合されていない第１マージ面を特定し、特定された前記単一視差面及び前記第１マージ面と、生成された前記第２マージ面とが、実空間の同じ平面に属していることを条件に、これらを結合することによって、前記拡張平面を生成する、
付記１２記載のプログラム。
【０２５７】
（付記１４）
隣り合う前記単一視差面それぞれにおける前記視差値を制限する条件下として、両者の視差値の差が一定値であることが用いられ、そして、前記一定値が、予め定められた最大値まで段階的に設定されている場合に、
前記（ａ）のステップにおいて、段階的に設定された前記一定値毎に、前記第１マージ面の生成、前記第２マージ面の生成、及び前記拡張平面の生成を実行する、
付記１２または１３に記載のプログラム。
【０２５８】
（付記１５）
前記（ｃ）のステップにおいて、
前記（ｂ）のステップで抽出された前記三次元データによって構築される平面を分割し、分割された部分毎に、当該部分に存在する前記三次元点をランダムに抽出し、抽出した前記三次元点を用いて、前記三次元データが表現する前記実空間の平面の向き及び位置を修正することによって、前記三次元平面を修正する、
付記１１〜１４のいずれかに記載のプログラム。
【産業上の利用可能性】
【０２５９】
以上のように、本発明によれば、任意形状の輪郭を持った平面の３次元データを生成することができる。本発明は、ステレオマッチング処理から三次元データが求められる分野に有用である。
【符号の説明】
【０２６０】
１０    視差データ生成部
２０    処理パラメータ入力部
２１    処理パラメータ記憶部
３０    共面点クラスター抽出部
４０    三次元平面抽出部
５０    三次元平面修正部  
１００  三次元データ生成装置
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2014238714.tif 000003
【図２】
2014238714.tif 000004
【図３】
2014238714.tif 000005
【図４】
2014238714.tif 000006
【図５】
2014238714.tif 000007
【図６】
2014238714.tif 000008
【図７】
2014238714.tif 000009
【図８】
2014238714.tif 000010
【図９】
2014238714.tif 000011
【図１０】
2014238714.tif 000012
【図１１】
2014238714.tif 000013
【図１２】
2014238714.tif 000014
【図１３】
2014238714.tif 000015
【図１４】
2014238714.tif 000016
【図１５】
2014238714.tif 000017
【図１６】
2014238714.tif 000018
【図１７】
2014238714.tif 000019
【図１８】
2014238714.tif 000020
【図１９】
2014238714.tif 000021