(57)【要約】【課題】光飛行時間型距離画像センサにおいて、傾斜を持つ構造物、もしくは傾斜をもつ動物体であっても、処理速度やフレームレートの低下を招くことなく、小型で安価な装置で、精度よく距離値を算出することを目的とする。【解決手段】対象物の反射面が傾斜を有することにより距離値を算出できない画素について、近傍の距離値を算出できた画素の距離値および輝度値を用いて、当該画素の距離値を推定する。推定は、対象物の反射面の傾斜方向を特定し、反射面の傾きを算出し、その傾きを用いて行う。【選択図】図９
2015121430.tif 000002
【特許請求の範囲】
【請求項１】
対象空間に変調した変調光を照射する光源部と、
前記光源部から照射され、前記対象空間内の対象物の表面で反射した反射光を含む入射光を受光して電荷に変換する、画素毎に設けられた光電変換素子と、
前記光電変換素子ごとに複数設けられた電荷蓄積部と、
前記変調光の変調に同期して、前記光電変換素子により変換された電荷を前記複数の電荷蓄積部に振り分ける電荷振分部と、を備える距離画像生成装置における距離画像生成方法であって、
前記電荷蓄積部に蓄積された電荷を用いて画素値が輝度値である輝度画像を生成するとともに、前記複数の電荷蓄積部に蓄積された電荷を用いて画素値が距離値である距離画像を生成する画像生成ステップと、
前記対象物の表面に傾斜があることにより前記距離値が得られない距離値未算出画素の距離値を、当該距離値未算出画素の近傍の画素の前記輝度値および前記距離値を用いて算出する距離値算出ステップと、を含むこと
を特徴とする距離画像生成方法。
【請求項２】
対象空間に変調した変調光を照射する光源部と、
前記光源部から照射され、前記対象空間内の対象物の表面で反射した反射光を含む入射光を受光して電荷に変換する、画素毎に設けられた光電変換素子と、
前記光電変換素子ごとに複数設けられた電荷蓄積部と、
前記変調光の変調に同期して、前記光電変換素子により変換された電荷を前記複数の電荷蓄積部に振り分ける電荷振分部と、を備える装置に接続されたコンピュータに
前記電荷蓄積部に蓄積された電荷を用いて画素値が輝度値である輝度画像を生成するとともに、前記複数の電荷蓄積部に蓄積された電荷を用いて画素値が距離値である距離画像を生成する手順、および
前記対象物の表面に傾斜があることにより前記距離値が得られない距離値未算出画素の距離値を、当該距離値未算出画素の近傍の画素の前記輝度値および前記距離値を用いて算出する手順を実行させるためのプログラム。
【請求項３】
対象空間に変調した変調光を照射する光源部と、
前記光源部から照射され、前記対象空間内の対象物の表面で反射した反射光を含む入射光を受光して電荷に変換する、画素毎に設けられた光電変換素子と、
前記光電変換素子ごとに複数設けられた電荷蓄積部と、
前記変調光の変調に同期して、前記光電変換素子により変換された電荷を前記複数の電荷蓄積部に振り分ける電荷振分部と、
前記電荷蓄積部に蓄積された電荷を用いて画素値が輝度値である輝度画像を生成する輝度画像生成部と、
前記複数の電荷蓄積部に蓄積された電荷を用いて画素値が距離値である距離画像を生成する距離画像生成部と、を備え、
前記距離画像生成部は、前記対象物の表面に傾斜があることにより前記距離値が得られない距離値未算出画素の距離値を、当該距離値未算出画素の近傍の画素の前記輝度値および前記距離値を用いて算出する距離値算出部を備えること
を特徴とする距離画像生成装置。
【請求項４】
請求項３記載の距離画像生成装置であって、
前記近傍の画素は、前記距離値未算出画素に所定方向に隣接して連なる画素であって、隣接する画素との輝度値比が所定範囲の画素であること
を特徴とする距離画像生成装置。
【請求項５】
請求項４記載の距離画像生成装置であって、
前記距離値算出部は、前記近傍画素内に前記距離値が算出された複数の画素がある場合、当該複数の画素を用いて、前記対象物の表面の傾きを算出し、当該傾きを用いて前記距離値未算出画素の距離値を算出すること
を特徴とする距離画像生成装置。
【請求項６】
請求項４または５記載の距離画像生成装置であって、
前記距離値算出部は、画素毎に、予め定めた順に、距離値未算出画素であるか否かを判別し、距離値未算出画素であると判別された場合、前記対象物の表面の傾斜方向を特定し、特定された傾斜方向の、前記順に画素を判別する方向とは逆方向に隣接して連なる画素であって、隣接する画素との輝度値比が所定範囲の画素を前記近傍の画素として、前記距離値未算出画素の距離値を算出すること
を特徴とする距離画像生成装置。
【請求項７】
請求項６記載の距離画像生成装置であって、
前記距離値算出部は、否と判別された場合、当該判別対象画素に前記順に画素を判別する方向と逆方向に隣接する画素が距離値未算出画素であるか否かを判別し、距離値未算出画素と判別された場合、前記傾斜方向の、前記順に画素を判別する方向に隣接して連なる画素であって、隣接する画素との輝度値比が所定範囲の画素を前記近傍の画素として、当該距離値未算出画素の距離値を算出すること
を特徴とする距離画像生成装置。
【請求項８】
請求項６記載の距離画像生成装置であって、
前記距離値算出部は、距離値未算出画素と判別された画素については、先に距離値未算出画素と判別された画素が前記近傍画素に含まれ、かつ、前記傾きが算出されている場合、当該傾きを用いて前記距離値を算出すること
を特徴とする距離画像生成装置。
【請求項９】
請求項６から８いずれか１項記載の距離画像生成装置であって、
前記距離値算出部は、前記近傍の画素の端部画素を特定し、前記傾きの算出に、当該端部画素の距離値を用いること
を特徴とする距離画像生成装置。
【請求項１０】
請求項３から９いずれか１項記載の距離画像生成装置であって、
前記前記電荷振分部を制御する制御部をさらに備え、
前記制御部は、前記輝度画像生成のための電荷を取得する際は、予め定めた１つの電荷蓄積部に全ての電荷を蓄積するよう前記電荷振分部を制御すること
を特徴とする距離画像生成装置。
【請求項１１】
請求項３から９いずれか１項記載の距離画像生成装置であって、
前記光源部を制御する制御部をさらに備え、
前記制御部は、前記輝度画像生成のための電荷を取得する際は、前記変調光を照射しないよう前記光源部を制御すること
を特徴とする距離画像生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光飛行時間型距離画像センサを用いた距離画像生成技術に関し、特に、フレア現象の影響を補正する技術に関する。
【背景技術】
【０００２】
光飛行型距離画像センサを用いて、撮影対象空間の対象物の、当該センサからの距離を画素値とする距離画像を生成する距離画像生成装置がある。その中で、光飛行時間型（ＴＯＦ方式：Ｔｉｍｅ  Ｏｆ  Ｆｌｉｇｈｔ方式）距離画像センサは、変調光を出射する光源とそれを受光する受光素子とからなり、変調光を出射し、画素毎に受光した反射光を元に距離値を算出する（例えば、特許文献１参照）。受光した変調光の反射光により生じる電荷を、変調光の変調周波数に同期させ、電荷を振り分ける振り分け型のＴＯＦ方式もある（例えば、特許文献２参照）。
【０００３】
物体の距離値を算出するためには、必ず物体からの反射光を受光する必要がある。しかしながら、物体が極度の傾斜を持つ場合、変調光の反射光が戻ってこず、傾斜部分の大部分に関して距離値を算出できないことがある。この問題は能動方式の距離画像センサすべてにおいて起こり得る。特に、表面が鏡面のように表面荒れによる乱反射や散乱のない物体の場合ほど顕著に起こる。
【０００４】
これを解決するため、レーザセンサにおいて、予め取得した背景データと、異なった位置の複数のレーザセンサから物体位置を検出する手法がある（例えば、特許文献３参照）。また、予め検出物体の距離情報・勾配情報を保存しておき、測定した距離情報から勾配情報を算出し、整合をとり、物体を検出する手法がある（例えば、特許文献４参照）。さらに、物体が傾斜している場合の低反射状態での検出精度を高めるため、低強度の反射光を受光した場合のノイズによる影響が小さくなるよう受光部を改良し、距離精度を高める手法がある（例えば、特許文献５参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２３５８９３号公報
【特許文献２】特開２０１１−１７９９２５号公報
【特許文献３】特開２００９−８５９２７号公報
【特許文献４】特開２００６−１４５３５２号公報
【特許文献５】特開２００６−０８４４２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献３に記載の手法では、予め背景データが必要となる。従って、車両に設置する場合など、頻繁に背景が変化する状況では用いることが出来ない。さらに、複数のセンサを使用するため、装置が大型になり価格も高くなる。また、複数のセンサを用いるため、処理が膨大なものとなりフレームレートの低下を招く。
【０００７】
特許文献４に記載の手法では、テンプレートとして、予め元画像情報をもつことが必須となる。そのため、特定の物体のみしか検出することができない。また、予めデータを保持する必要があるため、処理情報が増加する。
【０００８】
特許文献５に記載の手法では、受光部の改良が必要となり、センサの価格が向上する。また、構造が複雑となるため、作製も難しい。また、反射光自体を受光できない場合、距離値の算出もできない。
【０００９】
本発明は、上記事情に鑑みてなされたもので、光飛行時間型距離画像センサにおいて、傾斜を持つ構造物、もしくは傾斜をもつ動物体であっても、処理速度やフレームレートの低下を招くことなく、小型で安価な装置で、精度よく距離値を算出することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、対象物の反射面が傾斜を有することにより距離値を算出できない画素について、近傍の距離値を算出できた画素の距離値および輝度値を用いて、当該画素の距離値を推定する。推定は、対象物の反射面の傾斜方向を特定し、反射面の傾きを算出し、その傾きを用いて行う。
【００１１】
具体的には、対象空間に変調した変調光を照射する光源部と、前記光源部から照射され、前記対象空間内の対象物の表面で反射した反射光を含む入射光を受光して電荷に変換する、画素毎に設けられた光電変換素子と、前記光電変換素子ごとに複数設けられた電荷蓄積部と、前記変調光の変調に同期して、前記光電変換素子により変換された電荷を前記複数の電荷蓄積部に振り分ける電荷振分部と、を備える距離画像生成装置における距離画像生成方法であって、前記電荷蓄積部に蓄積された電荷を用いて画素値が輝度値である輝度画像を生成するとともに、前記複数の電荷蓄積部に蓄積された電荷を用いて画素値が距離値である距離画像を生成する画像生成ステップと、前記対象物の表面に傾斜があることにより前記距離値が得られない距離値未算出画素の距離値を、当該距離値未算出画素の近傍の画素の前記輝度値および前記距離値を用いて算出する距離値算出ステップと、を含むことを特徴とする距離画像生成方法を提供する。
【００１２】
また、対象空間に変調した変調光を照射する光源部と、前記光源部から照射され、前記対象空間内の対象物の表面で反射した反射光を含む入射光を受光して電荷に変換する、画素毎に設けられた光電変換素子と、前記光電変換素子ごとに複数設けられた電荷蓄積部と、
前記変調光の変調に同期して、前記光電変換素子により変換された電荷を前記複数の電荷蓄積部に振り分ける電荷振分部と、前記電荷蓄積部に蓄積された電荷を用いて画素値が輝度値である輝度画像を生成する輝度画像生成部と、前記複数の電荷蓄積部に蓄積された電荷を用いて画素値が距離値である距離画像を生成する距離画像生成部と、を備え、前記距離画像生成部は、前記対象物の表面に傾斜があることにより前記距離値が得られない距離値未算出画素の距離値を、当該距離値未算出画素の近傍の画素の前記輝度値および前記距離値を用いて算出する距離値算出部を備えることを特徴とする距離画像生成装置を提供する。
【発明の効果】
【００１３】
本発明によれば、光飛行時間型距離画像センサにおいて、傾斜を持つ構造物、もしくは傾斜をもつ動物体であっても、処理速度やフレームレートの低下を招くことなく、小型で安価な装置で、精度よく距離値を算出できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態の距離画像生成装置のブロック図である。
【図２】本発明の実施形態の変調信号とゲート信号との関係を説明するための説明図である。
【図３】光飛行時間型距離画像生成装置による距離画像生成の原理を説明するための説明図である。
【図４】（ａ）および（ｂ）は、光飛行時間型距離画像生成装置において、対象物の反射面に傾きがある場合、距離値が得られないことを説明するための説明図である。
【図５】光飛行時間型距離画像生成装置において、対象物の反射面に傾きがある場合、距離値が得られないことを説明するための説明図である。
【図６】光飛行時間型距離画像生成装置において、対象物の反射面に傾きがある場合、距離値が得られないことを説明するための説明図である。
【図７】（ａ）は、光飛行時間型距離画像生成装置と対象物との配置を説明するための説明図であり、（ｂ）および（ｃ）は、それぞれ、（ａ）に示す配置で撮像した際に得られる距離画像および輝度画像を説明するための説明図である。
【図８】本実施形態の距離画像生成装置で得られる距離画像および輝度画像の画素位置を説明するための説明図である。
【図９】本実施形態の、１つの画素に対する推定距離値算出処理のフローチャートである。
【図１０】本実施形態の傾斜方向判別処理のフローチャートである。
【図１１】（ａ）は、本実施形態のメモリＸの格納領域を、（ｂ）は、本実施形態のメモリＹの格納領域を、それぞれ説明するための説明図である。
【図１２】本実施形態の−Ｘ方向推定距離値算出処理のフローチャートである。
【図１３】本実施形態の−Ｙ方向推定距離値算出処理のフローチャートである。
【図１４】本実施形態の＋Ｘ方向推定距離値算出処理のフローチャートである。
【図１５】本実施形態の＋Ｙ方向推定距離値算出処理のフローチャートである。
【図１６】本実施形態の推定距離値算出処理の具体例１を説明するための説明図である。
【図１７】本実施形態の推定距離値算出処理の具体例２を説明するための説明図である。
【図１８】本実施形態の推定距離値算出処理の具体例３を説明するための説明図である。
【図１９】本実施形態の推定距離値算出処理の具体例４を説明するための説明図である。
【図２０】本実施形態の距離画像生成処理のフローチャートである。
【図２１】本実施形態の本発明の変形例の変調信号とゲート信号との関係を説明するための説明図である。
【図２２】本実施形態の本発明の変形例の変調信号とゲート信号との関係を説明するための説明図である。
【発明を実施するための形態】
【００１５】
以下、本発明を適用する実施形態について説明する。以下、本発明の実施形態を説明するための全図において、同一機能を有するものは同一符号を付し、その繰り返しの説明は省略する。
【００１６】
＜距離画像生成装置構成＞
まず、本実施形態の距離画像生成装置の構成を説明する。図１は、本実施形態の距離画像生成装置の機能ブロック図である。
【００１７】
本図に示すように、本実施形態の距離画像生成装置１００は、照射される変調光１１１と入射光１１２との位相差を用いて距離画像を生成するもので、光源部１１０と、光電変換部１２０と、電荷振分部１３０と、制御部１４０と、電荷蓄積部１５０と、輝度画像生成部１６０と、推定距離値算出部１７１を含む距離画像生成部１７０と、を備える。
【００１８】
なお、本実施形態の距離画像生成装置１００は、ＣＰＵと、メモリと、記憶装置とを備える。電荷振分部１３０、制御部１４０、輝度画像生成部１６０、および、距離画像生成部１７０は、ＣＰＵが、予め記憶装置に格納されたプログラムを、メモリにロードして実行することにより実現される。
【００１９】
光源部１１０は、後述する制御部１４０の制御に従って、対象空間に変調光（例えば、正弦波もしくは矩形波等で高速に変調させた赤外光もしくは可視光）１１１を照射する発光源である。光源１１０には、ＬＥＤ等の高速変調が可能なデバイスが用いられる。
【００２０】
光電変換部１２０は、光源部１１０から照射された変調光１１１が対象空間（距離画像生成装置１００の視野）内の対象物１１３で反射された反射光を含む入射光１１２を受光し、電荷に変換する。光電変換部１２０は、受光量に応じた電荷に変換する複数の光電変換素子を備える。この光電変換素子が画素を形成する。このため、各光電変換素子は、輝度画像および距離画像の各画素に対応づけて規則的に配列されるこの光電変換部１２０の前には、レンズが配置されてもよい。
【００２１】
電荷振分部１３０は、後述する制御部１４０の制御に従って、光電変換部１２０が変換した電荷を後述する電荷蓄積部１５０に振り分ける。振り分けは、光電変換素子毎に行う。
【００２２】
電荷蓄積部１５０は、電荷振分部１３０が振り分けた電荷を蓄積する。距離情報である変調光１１１と入射光１１２との位相差は、電荷蓄積部１５０に蓄積された電荷を用いて算出する。この位相差を算出するためには、少なくとも３つ以上の位相情報（電荷蓄積部に蓄積された電荷）が必要である。
【００２３】
３つ以上の位相情報の取得は、１つの電荷蓄積部１５０により実現してもよいし、複数の電荷蓄積部１５０により実現してもよい。以下、本実施形態では、具体例は、この電荷蓄積部１５０を４つとして説明する。これらの４つの電荷蓄積部１５０を区別する必要がある場合は、それぞれ、１５１、１５２、１５３、１５４とする。この４つ１組の電荷蓄積部１５０が、画素毎に設けられる。
【００２４】
位相情報を取得する１以上の電荷蓄積部１５０は、画素（光電変換素子）毎に設けられる。なお、電荷蓄積部１５０には、電荷そのものを蓄積してもよいし、この電荷量をＡＤ変換後のデータを蓄積してもよい。以下、本実施形態では、電荷そのものも、ＡＤ変換後のデータも、特に区別することなく電荷蓄積部１５０に蓄積されるものを電荷と呼ぶ。
【００２５】
制御部１４０は、光源部１１０と電荷振分部１３０とを同期制御する。制御は、変調信号とゲート信号とにより行う。
【００２６】
変調信号は、変調光の変調および出力タイミングを指示する信号であり、光源部１１０に向けて出力される。光源部１１０は、変調信号により変調された変調光１１１を生成し、対象空間に照射する。照射された変調光１１１は、対象物１１３により反射され、反射光となる。反射光は、入射光１１２として光電変換部１２０に入射し、電荷に変換されて電荷振分部１３０に送られる。
【００２７】
ゲート信号は、各電荷蓄積部１５０への電荷の振り分けを指示する信号で、電荷振分部１３０に向けて出力される。電荷振分部１３０は、ゲート信号に応じて各電荷蓄積部１５０（１５１、１５２、１５３、１５４）に電荷を振り分ける。
【００２８】
制御部１４０は、光源部１１０の変調周期に同期し、変調周期と電荷振分部１３０の個数応じた時間だけずらしたゲート信号を生成する。例えば、変調周期が１０ＭＨｚで電荷蓄積部が４つであれば、変調周期を４分割した時間（２５ｎｓ）ずつずらしたタイミングでゲート信号を生成する。これにより、電荷は、ゲート信号に応じて、それぞれの電荷蓄積部１５０に振り分けられる。
【００２９】
本実施形態の変調信号およびゲート信号の出力タイミングの一例を図２に示す。ここでは、変調信号の１周期Ｔｑを４当分した期間に、それぞれ、４つの電荷蓄積部１５０に順に電荷を振り分ける場合の、変調信号１１４およびゲート信号１１５を示す。
【００３０】
また、制御部１４０は、輝度画像生成部１６０および距離画像生成部１７０に読出信号を送信し、電荷蓄積部１５０に蓄積された電荷を、それぞれ読みださせる。なお、変調光１１１の変調周波数は数十ＭＨｚである。従って、変調の１周期は数十ｎｓ程度となる。距離画像を得るためには、数百〜数十万周期の電荷蓄積時間を要する。本実施形態の制御部１４０は、この電荷蓄積時間単位で、輝度画像生成部１６０および距離画像生成部１７０が、電荷蓄積部１５０から電荷を読み出すよう、読出信号を出力する。
【００３１】
なお、変調信号とゲート信号と読出信号とを合わせて制御信号と呼ぶ。
【００３２】
輝度画像生成部１６０は、各電荷蓄積部１５０に蓄積された電荷から、各画素の輝度値を算出し、算出した輝度値を画素値とする輝度画像を生成する。算出の詳細は、後述する。
【００３３】
距離画像生成部１７０は、各電荷蓄積部１５０に蓄積された電荷から、各画素の距離値を算出し、算出した距離値を画素値とする距離画像を生成する。距離値は、視野内の、対象物までの距離の値である。算出の詳細は、後述する。
【００３４】
＜ＴＯＦ方式の距離画像生成の原理＞
ここで、光飛行時間型（ＴＯＦ方式）の距離画像生成装置１００における距離画像生成の原理を説明する。図３は、距離画像生成の原理を説明するための図である。
【００３５】
光源部１１０から出射される変調光１１１の強度が本図のような正弦曲線を描くように変化する場合、光電変換部１２０への入射光１１２の強度も同様に正弦曲線を描くよう変化する。このとき、変調光１１１と入射光１１２とには、光が対象物まで往復する飛行時間による位相の遅延（位相差φ）が生じる。
【００３６】
光の速度ｃは既知であるため、この位相差φと変調周波数ｆとを用い、対象物までの距離値Ｄは、以下の式（１）で求めることができる。
【数１】
2015121430.tif 000003
【００３７】
従って、位相差φがわかれば、距離値Ｄは求めることができる。本実施形態では、変調光の１周期Ｔｐを４等分し、それぞれの期間に電荷量を、それぞれ、４つの電荷蓄積部１５０に蓄積する。
【００３８】
変調光１１１と入射光１１２との位相差φは、変調光１１１の１周期を４等分した各期間をＴｑ（Ｔ１、Ｔ２、Ｔ３、Ｔ４）とし、それぞれの期間に蓄積される電荷量をＣ１、Ｃ２、Ｃ３、Ｃ４とすると、以下の式（２）で表される。
【数２】
2015121430.tif 000004
なお、１周期Ｔｐを４等分した各期間Ｔｑ（Ｔ１、Ｔ２、Ｔ３、Ｔ４）は、例えば、０度から９０度の間、９０度から１８０度の間、１８０度から２７０度の間、２７０度から０度の間とする。
【００３９】
距離画像生成部１７０は、上述の電荷蓄積時間間隔で蓄積された各電荷量Ｃ１、Ｃ２、Ｃ３、Ｃ４を用い、画素毎に、式（２）に従って位相差φを求める。そして、求めた位相差φを用いて、式（１）に従って、対象物１１３までの距離値Ｄを求め、距離値を画素値とする距離画像を生成する。
【００４０】
また、本実施形態の輝度画像生成部１６０は、各電荷蓄積部１５０に蓄積された電荷（Ｃ１、Ｃ２、Ｃ３、Ｃ４）を用いて、画素毎に、輝度値を算出する。輝度値の算出方法は、電荷量を相対的な値に変換するものであれよく、特に規定しない。例えば、以下の式（３）に従って、輝度値Ｂを求め、輝度値を画素値とする輝度画像を生成する。
Ｂ＝Ｃ１＋Ｃ２＋Ｃ３＋Ｃ４  ・・・（３）
【００４１】
なお、電荷蓄積時間Ｔｆ間隔毎に得られる１枚の距離画像および輝度画像をフレームと呼ぶ。また、電荷蓄積時間Ｔｆを、１フレーム時間Ｔｆと呼ぶ。
【００４２】
＜傾斜面により距離値が算出できない理由＞
ＴＯＦ方式の距離画像生成装置１００では、上述のように、光源部１１０から照射された変調光１１１が、対象物１１３で反射され、光電変換部１２０で受光される。そして、距離画像生成部１７０が、その反射光（入射光１１２）の位相差より距離値を算出する。この様子を図４（ａ）に示す。このため、反射光を受光できない場合は、原理的に距離値を算出することは出来ない。
【００４３】
例えば、図４（ｂ）対象物１１３の、反射面が極度の傾斜を持つ場合、傾斜の一部分からの反射光しか受光できないことがある。この場合、実際には、対象物１１３があるにもかかわらず、距離値が算出できない。
【００４４】
具体的に説明すると、以下のとおりである。
【００４５】
仮に、本実施形態の距離画像生成装置１００の画素数をＮ×Ｎ（Ｎは１以上の整数）とし、画角をθとする。１画素あたりの水平および垂直方向の撮像範囲は、θ／Ｎの範囲である。よって、中央画素からｎ番目の画素（ｎは１以上Ｎ以下の整数）の撮像範囲は、（ｎ−１）×θ／Ｎからｎ×θ／Ｎである。なお、距離画像生成装置１００の受光面に鉛直方向を０度とする。
【００４６】
図５に示すように、距離画像生成装置１００の光源部１１０から照射された光が前方の対象物１１３に反射し、ｎ番目の画素（に対応して配置される光電変換素子）に入射されるためには、対象物１１３の反射面となる表面の傾きが、（９０−ｎ×θ／２）／２度未満である必要がある。なお、対象物１１３は鏡面平板とする。このため、対象物１１３の反射面が、（９０−ｎ×θ／２）／２度以上の傾斜を持つ場合、ｎ番目の画素において反射光を受光できず、距離値を算出できない。
【００４７】
また、図６に示すように、距離画像生成装置１００の受光面に対し、対象物１１３の反射面の傾きがθａであり、距離画像生成装置１００と対象物１１３との距離がＤである場合、光源部１１０の位置は、受光部である光電変換部１２０センサからＤ・ｃｏｓ（ｎ×θ／Ｎ）・｛１＋ｔａｎ（ｎ×θ／Ｎ＋２θａ）｝離れた位置に設置する必要がある。
【００４８】
従って、傾斜が（９０−ｎ×θ／２）／２度未満であったとしても、反射光を得るためには、光源部１１０を受光部である光電変換部１２０から十分な距離を離し設置する必要がある。このため、装置自体の大きさを非常に大きくする必要がある。光源部１１０と光電変換部１２０との間に、これらの距離を確保できない場合は、受光できず、距離値を算出できない。
【００４９】
一方、光源部１１０から照射された変調光１１１の反射光は受光できなくとも、実際に対象物１１３は存在するため、周囲の環境光による反射光は、光電変換部１２０で受光される。そして、それは輝度として出力することができる。
【００５０】
図７（ａ）〜図７（ｃ）を用いて、距離画像生成装置１００で、視野内に反射面に傾斜を持つ対象物１１３ａと傾斜無しの対象物（壁）１１３ｂとが含まれる範囲を撮影し、得られる距離画像２１０と輝度画像２２０を説明する。図７（ａ）は、距離画像生成装置１００と、対象物１１３ａおよび１１３ｂの配置を説明するための図であり、図７（ｂ）は、当該撮像空間の距離画像、図７（ｃ）は、同輝度画像である。
【００５１】
距離画像２１０は、対象物１１３ａの反射面の傾斜の一部と、後方の壁１１３ｂとの距離値を画素値とする画像である。輝度画像２２０は、対象物１１３ａの反射面の傾斜の全体と後方の壁１１３ｂとによる輝度値を画素値とする画像である。
【００５２】
このように、対象物１１３ａの反射面の傾斜に対応する画素の大部分では、輝度値が存在するにもかかわらず、距離値が０となる。距離画像２１０および輝度画像２２０の対応する画素値を比べることにより、傾斜により距離値が算出されていないことがわかるとともに、傾斜部分に対応する画素を判別できる。さらに、傾斜の一部では距離値を算出できている。従って、隣接する画素の距離値、あるいは、所定の間隔の画素間の距離値を用い、傾斜の傾きを算出することができる。そして、算出した傾斜の傾きを用い、傾斜部の、未算出の距離値を算出することができる。
【００５３】
本実施形態では、これを利用し、各画素の輝度値と、距離値を算出できた画素の距離値とを用い、傾斜によって算出できなかった距離値を推定する。すなわち、本実施形態の距離画像生成部１７０は、図１に示すように、対象物１１３の反射面に傾きがあることにより距離値が得られない距離値未算出画素の距離値を、推定距離値として算出する推定距離値算出部（距離値算出部）１７１を備える。推定距離値の算出には、距離値未算出画素の近傍の画素の輝度値と距離値とを用いる。
【００５４】
推定距離値算出部１７１は、輝度画像生成部１６０が生成した輝度画像および距離画像生成部１７０が生成した距離画像を用い、距離値未算出画素の推定距離値を算出し、距離画像の当該画素の画素値に置き換える。以下、推定距離値算出部１７１による、推定距離値算出処理について説明する。
【００５５】
推定距離値算出処理の説明に先立ち、図８に、本実施形態の距離画像生成装置１００で得られる距離画像および輝度画像の画素位置３００を示す。本図に示すように、本実施形態の距離画像および輝度画像は、Ｘ方向Ｎ画素、Ｙ方向Ｍ画素（Ｎ、Ｍは、ともに１以上の整数）の、Ｎ×Ｍ画素とする。Ｘ方向およびＹ方向は、直交する。また、それぞれ、図中、右側が＋方向、下側が＋方向とする。画素位置は１〜Ｎ、および、１〜Ｍの範囲であり、画像の左上を画素位置（１，１）とする。
【００５６】
推定距離値算出処理に先立ち、推定距離値算出部１７１は、距離画像生成部１７０および輝度画像生成部１６０が生成した距離値および輝度値を読み出し、画素位置をアドレスとして、それぞれ、内部のメモリ領域Ｄ（メモリＤ）およびメモリ領域Ｂ（メモリＢ）に保存する。メモリＤは、距離値格納領域として、メモリＢは輝度値格納領域として、それぞれ、予め確保される。
【００５７】
本実施形態の推定距離値算出部１７１は、予め定めた順に、各画素について、傾斜の有無を判別し、傾斜有と判別された場合は、その傾斜の方向を判別し、それぞれ、推定距離値を算出する推定距離値算出処理を実行する。本実施形態では、Ｘ方向にｎ＝１からＮの順に、Ｙ方向にｍ＝１からＭまで繰り返す。以下、１つの処理対象画素（ｎ，ｍ）に対する、上記推定距離値算出処理の流れを説明する。
【００５８】
＜推定距離値算出処理＞
図９に、本実施形態の推定距離値算出部１７１による処理対象画素（ｎ，ｍ）を対象とする推定距離値算出処理の処理フローを示す。
【００５９】
推定距離値算出部１７１は、まず、ステップＳ１００１およびステップＳ１００２で、処理対象画素（ｎ，ｍ）が、距離値未算出画素であるか否かを判別する。すなわち、距離値が０である処理対象画素（ｎ，ｍ）の視野内の対象物１１３の反射面の傾斜の有無を判別する。ここでは、輝度値が予め定めた輝度閾値Ｂｔｈ以上である場合、傾斜有と判別する。これは、距離値が０であっても、輝度値も小さい場合は、視野内の処理対象画素（ｎ，ｍ）に対応する領域に、対象物１１３がないため、距離値も算出できていないと判断されるためである。
【００６０】
具体的には、まず、処理対象画素（ｎ，ｍ）の距離値が、０であるか否かを判別する（ステップＳ１００１）。そして、距離値が０である場合、当該処理対象画素（ｎ，ｍ）の輝度値と、予め定めた輝度閾値Ｂｔｈとを比較し（ステップＳ１００２）、輝度値が輝度閾値Ｂｔｈ以上であれば、傾斜有、すなわち、処理対象画素（ｎ，ｍ）は、距離値未算出画素であると判別する。
【００６１】
なお、ここで用いる輝度閾値Ｂｔｈは、周囲の環境によって大きく異なるため、一概に値を決定できるものではなく、実際の使用環境化において設定する。
【００６２】
以下、説明を簡単にするために、画素（ｎ，ｍ）の視野にある対象物１１３の反射面を、単に画素（ｎ，ｍ）の面と略称する。
【００６３】
ステップＳ１００２において、距離値未算出画素、すなわち、傾斜有と判別された場合、その傾斜がＸ方向であるか、Ｙ方向であるか、判別する（ステップＳ１１０１、Ｓ１２０１）。傾斜方向判別処理の詳細は、後述する。
【００６４】
そして、Ｘ方向と判別された場合は、−Ｘ方向推定距離値算出処理を行い（ステップＳ１１０２）、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出し、処理を終了する。−Ｘ方向推定距離値算出処理では、処理対象画素（ｎ，ｍ）よりも−Ｘ方向の、既に距離値または推定距離値Ｄｃが算出されている画素の距離値を用いて、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出する。処理の詳細は、後述する。
【００６５】
また、Ｙ方向と判別された場合は、−Ｙ方向推定距離値算出処理を行い（ステップＳ１２０２）、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出し、処理を終了する。−Ｙ方向推定距離値算出処理も、処理対象画素（ｎ，ｍ）よりも−Ｙ方向の、既に距離値または推定距離値Ｄｃが算出されている画素の距離値を用いて、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出する、処理の詳細は、後述する。
【００６６】
一方、傾斜がいずれの方向とも判別できない場合、方向判別不可時処理を行い（ステップＳ１３０１）、処理を終了する。
【００６７】
また、ステップＳ１００１で、処理対象画素（ｎ，ｍ）の距離値が０でない場合、当該処理対象画素（ｎ，ｍ）については、推定距離値Ｄｃの算出は不要である。しかしながら、−Ｘ方向、または、−Ｙ方向に隣接する画素に、距離値未算出画素がある場合、処理対象画素（ｎ，ｍ）等を用いて未算出の画素の距離値を算出する。
【００６８】
従って、ここでは、まず、−Ｘ方向、または、−Ｙ方向に隣接する画素が、距離値未算出画素であるか否かを判別する（ステップＳ１４０１）。判別は、推定距離値算出部１７１が、推定距離値を算出する際に、ワークメモリとして用いる、メモリ領域Ｘ（以後、単にメモリＸと呼ぶ。）およびメモリ領域Ｙ（以後、単にメモリＹと呼ぶ。）を用いて行う。−Ｘ方向に隣接する画素（ｎ−１，ｍ）が未算出であるか否かは、メモリＸを用いて、−Ｙ方向に隣接する画素（ｎ，ｍ−１）が未算出であるか否かは、メモリＹを用いてそれぞれ行う。各メモリ領域の構成の詳細、判別の詳細は、後述する。
【００６９】
−Ｘ方向に隣接する画素（ｎ−１，ｍ）が距離値未算出画素である場合（ステップＳ１４０１）、当該画素（ｎ−１，ｍ）の面と、処理対象画素（ｎ，ｍ）の面とが連続しているか否かを判別する（ステップＳ１４０２）。判別の詳細は、後述する。
【００７０】
−Ｘ方向に隣接する距離値未算出画素（ｎ−１，ｍ）の面と連続している場合、＋Ｘ方向推定距離値算出処理を行う（ステップＳ１４０３）。＋Ｘ方向推定距離値算出処理では、推定距離値Ｄｃ算出対象である−Ｘ方向に隣接する距離値未算出画素（ｎ−１，ｍ）よりも、＋Ｘ方向の、距離値が算出されている画素の距離値を用いて、距離値未算出の画素の推定距離値Ｄｃを算出する。推定距離値Ｄｃ算出対象の画素は、当該画素（ｎ−１，ｍ）および当該画素（ｎ−１，ｍ）と連続した面に対応する距離値未算出画素である。処理の詳細は、後述する。
【００７１】
ステップＳ１４０２で連続面でないと判別された場合、および、＋Ｘ方向推定距離値算出処理を終えた場合、判別に用いたメモリＸをリセットする（ステップＳ１４０４）。そして、−Ｙ方向に隣接する画素（ｎ，ｍ−１）が距離値未算出画素であるか否かの判別（ステップＳ１４０５）にうつる。なお、ステップＳ１４０１で−Ｘ方向に隣接する画素（ｎ−１，ｍ）が距離値未算出画素でないと判別された場合も、ステップＳ１４０４へ移行する。
【００７２】
Ｙ方向に隣接する画素（ｎ，ｍ−１）が距離値未算出画素である場合（ステップＳ１４０５）、当該画素（ｎ，ｍ−１）の面と、処理対象画素（ｎ，ｍ）の面とが連続しているか否かを判別する（ステップＳ１４０６）。判別の詳細は、後述する。
【００７３】
−Ｙ方向に隣接する距離値未算出画素（ｎ，ｍ−１）の面と連続している場合、＋Ｙ方向推定距離値算出処理を行う（ステップＳ１４０７）。＋Ｙ方向推定距離値算出処理では、推定距離値Ｄｃ算出対象である−Ｙ方向に隣接する距離値未算出画素（ｎ，ｍ−１）よりも、＋Ｙ方向の、距離値が算出されている画素の距離値を用いて、距離値未算出画素の推定距離値Ｄｃを算出する。推定距離値Ｄｃ算出対象の画素は、当該画素（ｎ，ｍ−１）および当該画素（ｎ，ｍ−１）と連続した面に対応する距離値未算出画素である。処理の詳細は、後述する。
【００７４】
ステップＳ１４０６で連続面でないと判別された場合、および、＋Ｙ方向推定距離値算出処理を終えた場合、メモリＹのアドレスｎの領域をリセットし（ステップＳ１４０８）、処理を終了する。なお、ステップＳ１４０５で−Ｙ方向に隣接する画素（ｎ，ｍ−１）が距離値未算出でないと判別された場合も、ステップＳ１４０８へ移行する。
【００７５】
なお、本実施形態の推定距離値算出部１７１は、全画素について、上記処理を繰り返す。各画素の処理を終える毎に、Ｘ方向の終端画素であるか判別し、終端画素であれば、メモリＸをリセットする。さらに、Ｙ方向の終端画素であるかを判別し、終端画素であれば、メモリＹのアドレスｎの領域をリセットする。これにより、全画素の処理を終えると、メモリＸおよびメモリＹの全領域がリセットされる。
【００７６】
＜傾斜方向判別処理＞
次に、上記ステップＳ１１０１およびステップＳ１２０１における、推定距離値算出部１７１による傾斜方向判別処理の詳細を説明する。本実施形態では、隣接する画素との間で、輝度値比を計算し、輝度値比が、所定範囲であれば、上述のように、当該方向に連続面であり、傾斜も当該方向と判別する。図１０は、本実施形態の傾斜方向判別処理の処理フローである。
【００７７】
まず、傾斜がＸ方向であるか否かを調べるため、処理対象画素（ｎ，ｍ）に−Ｘ方向に隣接する画素（ｎ−１，ｍ）の輝度値Ｂ（ｎ−１，ｍ）を取得する（ステップＳ２１０１）。そして、処理対象画素（ｎ，ｍ）画素の輝度値Ｂ（ｎ，ｍ）との間で、輝度値比ＲＢ＝Ｂ（ｎ−１，ｍ）／Ｂ（ｎ，ｍ）を算出する（ステップＳ２１０２）。
【００７８】
そして、算出した輝度値比ＲＢが、輝度値比閾値ＲＢｔｈの範囲内であるか否かを判別し（ステップＳ２１０３）、範囲内であれば、Ｘ方向に連続面であり、傾斜もＸ方向であると判別する（ステップＳ２１０４）。
【００７９】
一方、ステップＳ２１０３において、範囲外である場合、今度は、Ｙ方向に連続面であるかどうかを判別する。判別は、−Ｙ方向に隣接する画素（ｎ，ｍ−１）の輝度値Ｂ（ｎ，ｍ−１）を用いて行う。
【００８０】
まず、−Ｙ方向に隣接する画素（ｎ，ｍ−１）の輝度値Ｂ（ｎ，ｍ−１）を取得する（ステップ２１０５）。そして、輝度値比ＲＢ＝Ｂ（ｎ，ｍ−１）／Ｂ（ｍ，ｍ）を算出し（ステップＳ２１０６）、輝度値比閾値ＲＢｔｈの範囲内であるか否かを判別する（ステップＳ２１０７）。
【００８１】
範囲内であれば、Ｙ方向に連続面であり、傾斜もＹ方向であると判別する（ステップＳ２１０８）。
【００８２】
最後にいずれの方向においても、輝度値比が、輝度値比閾値の範囲外である場合、判別不可と判別する（ステップＳ２１０９）。
【００８３】
なお、ここで用いる輝度値比閾値ＲＢｔｈも、周囲の環境によって大きく異なるため、一概に値を決定できるものではなく、実際の使用環境化において設定する。
【００８４】
また、本処理においては使用しないが、隣接する画素（ｎ−１，ｍ）および（ｎ，ｍ−１）の輝度値を取得する際、距離値も併せて取得しておく。
【００８５】
＜メモリＸ、メモリＹ＞
図９に示すように、本実施形態の推定距離値算出部１７１は、傾斜方向が定まると、当該方向の、マイナス方向に隣接する画素の距離値を用いて、処理対象画素の推定距離値Ｄｃを算出する。以下、ここで用いるメモリＸおよびメモリＹについて、図１１（ａ）および図１１（ｂ）を用いて説明する。
【００８６】
本実施形態のメモリＸ４１０は、−Ｘ方向推定距離値算出処理、＋Ｘ方向推定距離値算出処理および後述の方向判別不可時処理に用いるワーキングメモリである。図１１（ａ）に示すように、メモリＸ４１０は、処理対象画素（ｎ，ｍ）の画素位置を特定する情報（画素位置）を保存する画素位置１（４１１）と、処理対象画素（ｎ，ｍ）と連続する面の、−Ｘ方向の端部の画素位置を保存する画素位置２（４１２）と、処理対象画素（ｎ，ｍ）を含む面の、Ｘ方向の傾きを保存する傾き４１３とを備える。
【００８７】
同様に、本実施形態のメモリＹ４２０は、−Ｙ方向推定距離値算出処理、＋Ｙ方向推定距離値算出処理および後述の方向判別不可時処理に用いるワーキングメモリである。図１１（ｂ）に示すように、メモリＹ４２０は、距離画像および輝度画像のＸ方向の画素位置をアドレス４２４として、処理対象画素（ｎ，ｍ）の画素位置を保存する画素位置１（４２１）と、処理対象画素（ｎ，ｍ）と連続する面の、−Ｙ方向の端部の画素位置を保存する画素位置２（４２２）と、処理対象画素（ｎ，ｍ）を含む面の、Ｙ方向の傾きを保存する傾き４２３とを備える。
【００８８】
以下の各処理では、これらのメモリＸおよびメモリＹを用いて、距離値未算出の画素の推定距離値を算出する。
【００８９】
＜−Ｘ方向推定距離値算出処理＞
次に、ステップＳ１１０２の、傾斜がＸ方向と判別された際に、推定距離値算出部１７１が実行する−Ｘ方向推定距離値算出処理について説明する。−Ｘ方向推定距離値算出処理は、上述のように、処理対象画素（ｎ，ｍ）よりも−Ｘ方向の、既に距離値または推定距離値Ｄｃが算出されている画素の距離値を用いて、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出する処理である。図１２に、本実施形態の−Ｘ方向推定距離値算出処理の処理フローを示す。
【００９０】
まず、メモリＹのアドレスｎの内容をリセットする（ステップＳ３１０１）。これは、本処理では、傾斜がＸ方向であると判別されたため、Ｙ方向の傾斜の算出に用いるメモリＹの内容は不要となるためである。
【００９１】
次に、メモリＸに何等かの情報が保存されているか否かを判別する（ステップＳ３１０２）。処理対象画素（ｎ，ｍ）の−Ｘ方向に隣接する画素（ｎ−１，ｍ）の距離値が算出されている場合、メモリＸには何も情報が保存されていない。すなわち、現在の処理対象画素（ｎ，ｍ）は、Ｘ方向に画素の処理を進めてきた中で、距離値が算出されている画素の後で、初めて出現する距離値の算出されていない画素となる。
【００９２】
また、ここでは、−Ｘ方向に隣接する画素（ｎ−１，ｍ）の距離値および輝度値は、傾斜方向の判定時に既に取得し、また、この画素の面との連続性は、既に判定済みである。従って、ここでは、この連続面の端部の画素を判別する。
【００９３】
このため、−Ｘ方向に順に１画素ずつ距離値および輝度値を取得し、隣接する画素の距離値および輝度値を用いて、連続性を判別する（ステップＳ３１０３、３１０４、３１０５）。判別は、探索画素（ｎ−ｉ，ｍ）と、そのＸ方向に隣接する画素（ｎ−ｉ−１，ｍ）との距離値および輝度値を用いて行う。
【００９４】
探索画素（ｎ−ｉ，ｍ）の距離値をＤ（ｎ−１，ｍ）、輝度値をＢ（ｎ−ｉ，ｍ）とし、隣接画素（ｎ−ｉ−１，ｍ）の距離値をＤ（ｎ−ｉ−１，ｍ）、輝度値をＢ（ｎ−ｉ−１，ｍ）とすると、両者の距離差Ｄｄｉｆ＝Ｄ（ｎ−ｉ，ｍ）−Ｄ（ｎ−ｉ−１，ｍ）の絶対値が、予め定めた距離閾値Ｄｔｈ以下であり、かつ、両者の輝度値比ＲＢ＝Ｂ（ｎ−ｉ，ｍ）／Ｂ（ｎ−ｉ−１，ｍ）が、輝度値比閾値Ｂｔｈの範囲内である場合、連続面と判別する。
【００９５】
連続面と判別された場合、探索画素（ｎ−ｉ，ｍ）が、距離画像および輝度画像の、Ｘ方向の端部の画素であるか否かを判別する（ステップＳ３１０６）。端部の画素でなければ、さらに−Ｘ方向に１つ先の画素を探索画素とし（ｉ＝ｉ＋１；ステップＳ３１０７）、ステップＳ３１０４からの処理を繰り返す。
【００９６】
一方、端部の画素であれば、探索画素（ｎ−ｉ，ｍ）の距離値Ｄ（ｎ−ｉ，ｍ）と、処理対象画素（ｎ，ｍ）に−Ｘ方向に隣接する画素（ｎ−１，ｍ）の距離値Ｄ（ｎ−ｉ，ｍ）とを用いて、この連続面の傾きを算出する（ステップＳ３１０８）。傾きＫは、以下の式（４）で算出する。
Ｋ＝（Ｄ（ｎ−１，ｍ）−Ｄ（ｎ−ｉ，ｍ））／（ｉ−１）  ・・・（４）
なお、算出した傾きＫは、メモリＸに保存する。
【００９７】
そして、算出した傾きＫを用いて、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを、以下の式（５）に従って、算出する（ステップＳ３１０９）。
Ｄｃ（ｎ，ｍ）＝Ｄ（ｎ−１，ｍ）＋Ｋ  ・・・（５）
【００９８】
そして、メモリＸの画素位置１には、処理対象画素（ｎ，ｍ）の画素位置（ｎ，ｍ）を保存し（ステップＳ３１１０）、処理を終了する。
【００９９】
一方、ステップＳ３１０５で、探索画素（ｎ−ｉ，ｍ）の面は、当該画素にＸ方向に隣接する画素の面と連続ではないと判別された場合は、まず、このときのｉが２であるか否かを判別する（ステップＳ３１１１）。
【０１００】
ｉが２でない場合、すなわち、２より大きい場合、処理対象画素（ｎ，ｍ）の−Ｘ方向に、２以上の、連続する面であって距離値を有する画素がある。従って、これらの画素値を用いて、処理対象画素（ｎ，ｍ）が含まれる面の傾きは算出できる。従って、この場合は、ステップＳ３１０８へ移行し、以降の処理を行う。
【０１０１】
一方、ｉが２である場合、処理対象画素（ｎ，ｍ）の−Ｘ方向には、連続する面であって距離値を有する画素が１つしかない。すなわち、処理対象画素（ｎ，ｍ）に隣接する画素（ｎ−１，ｍ）のみである。よって、傾きは算出できない。従って、この場合、処理対象画素（ｎ，ｍ）の画素位置（ｎ，ｍ）をメモリＸの画素位置１に保存し、この隣接する画素（ｎ−１，ｍ）の画素位置（ｎ−１，ｍ）を、連続する面の端部の画素として、メモリＸの画素位置２に保存し（ステップＳ３１１２）、処理を終了する。これにより、傾きＫは算出されないものの、メモリＸには、処理対象画素（ｎ，ｍ）と、当該画素の面が含まれる連続面の−Ｘ方向の端部の画素とが保持される。
【０１０２】
一方、ステップＳ３１０２に、メモリＸに何等かの情報が保存されている場合、現在の処理対象画素（ｎ，ｍ）は、距離値が算出されている画素の後で、初めて出現する距離値未算出画素ではない。
【０１０３】
まず、傾きＫが保存されているか否かを判別する（ステップＳ３１１３）。ここでは、処理対象画素（ｎ，ｍ）の面は、−Ｘ方向に隣接する画素（ｎ−１，ｍ）の面とは連続している。従って、−Ｘ方向に隣接する画素（ｎ−１，ｍ）で用いた傾きをそのまま用いて、推定距離値Ｄｃを算出できる。従って、傾きが保存されている場合は、ステップＳ３１０９へ移行し、以降の処理を実行する。
【０１０４】
一方、傾きＫが保存されていない場合は、画素位置２が保存されている。この場合、距離値のない処理対象画素（ｎ，ｍ）が加わっても、傾きを算出することはできないため、ステップＳ３１１０へ移行し、メモリＸの画素位置１を、処理対象画素（ｎ，ｍ）に更新する（ステップＳ３１１０）。これにより、連続面の範囲と、距離値未算出画素の範囲とが保存される。
【０１０５】
＜−Ｙ方向推定距離値算出処理＞
次に、ステップＳ１２０２の、傾斜がＹ方向と判別された際に、推定距離値算出部１７１が実行する、−Ｙ方向推定距離値算出処理について説明する。図１３に、本実施形態の−Ｙ方向補正値算出処理の処理フローを示す。
【０１０６】
−Ｙ方向推定距離値算出処理は、基本的に、上述の−Ｘ方向推定距離値算出処理と同様である。ただし、探索の方向、メモリＹへの保存態様が異なる。以下、−Ｘ方向推定距離値算出処理と異なる点に主眼をおいて説明する。
【０１０７】
まず、メモリＸの内容をリセットする（ステップＳ３２０２）。これは、本処理では、傾斜がＹ方向であると判別されたためである。
【０１０８】
そして、メモリＹの、処理対象画素（ｎ，ｍ）のＸ方向の画素位置ｎをアドレスとする欄に、何等かの情報が保存されているか否かを判別する（ステップ３２０２）。保存されていない場合は、−Ｙ方向に順に１画素ずつ距離値および輝度値を取得し、連続性を判別する（ステップＳ３２０３、３２０４、３２０５）。判別は、−Ｘ方向推定距離値算出処理と同様に、探索画素（ｎ，ｍ−ｉ）と、そのＹ方向に隣接する画素（ｎ，ｍ−ｉ−１）との距離値および輝度値を用いて行う。
【０１０９】
端部と判定されるまで、上記処理を繰り返し、端部と判定されると（ステップＳ３２０６）、−Ｘ方向推定距離値算出処理と同様に、この連続面の傾きを算出する（ステップＳ３２０８）。そして、算出した傾きＫを、メモリＹのアドレスｎ欄に保存する。
【０１１０】
そして、この傾きＫを用いて、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出し（ステップＳ３２０９）、メモリＹのアドレスｎの画素位置１に、処理対象画素（ｎ，ｍ）画素の画素位置（ｎ，ｍ）を保存し（ステップＳ３２１０）、処理を終了する。
【０１１１】
一方、ステップＳ３２０５で、探索画素（ｎ，ｍ−ｉ）の面は、当該画素にＹ方向に隣接する画素の面と連続ではないと判別された場合は、まず、このときのｉが２であるか否かを判別する（ステップＳ３２１１）。
【０１１２】
ｉが２でない場合は、ステップＳ３２０８へ移行し、以降の処理を行う。一方、ｉが２である場合、処理対象画素（ｎ，ｍ）の−Ｙ方向には、連続する面であって距離値を有する画素が１つしかない。従って、この場合、処理対象画素（ｎ，ｍ）の画素位置（ｎ，ｍ）をメモリＹのアドレスｎの画素位置１に保存し、この隣接する画素（ｎ，ｍ−１）の画素位置（ｎ，ｍ−１）を、連続する面の端部の画素として、メモリＹのアドレスｎの画素位置２に保存し（ステップＳ３２１２）、処理を終了する。
【０１１３】
一方、ステップＳ３２０２に、メモリＹのアドレスｎに何等かの情報が保存されている場合、まず、傾きＫが保存されているか否かを判別する（ステップＳ３２１３）。傾きが保存されている場合は、ステップＳ３２０９へ移行し、以降の処理を実行する。
【０１１４】
一方、傾きＫが保存されていない場合は、ステップＳ３２１０へ移行し、メモリＹのアドレスｎの画素位置１を、処理対象画素（ｎ，ｍ）に更新する（ステップＳ３２１０）。これにより、連続面の範囲と、距離値未算出画素の範囲とが保存される。
【０１１５】
＜方向判別不可時処理＞
推定距離値算出処理のステップＳ１３０１の方向判別不可時処理について説明する。本処理は、傾斜はあるものの、その方向を判別できない場合に行われる。ここでは、メモリＸの画素位置１および画素位置２に、処理対象画素（ｎ，ｍ）を保存する。また、メモリＹのアドレスｎの画素位置１および画素位置２に、処理対象画素（ｎ，ｍ）を保存する。これは、後述の＋Ｘ方向推定距離値算出処理または＋Ｙ方向推定距離値算出処理に用いられる。
【０１１６】
＜距離値未算出画素有無判別処理＞
次に、ステップＳ１４０１およびステップＳ１４０５で行う、隣接する画素に距離値未算出画素があるか否かの判別手法を説明する。
【０１１７】
上述のように、−Ｘ方向推定距離値算出処理において、処理対象画素（ｎ，ｍ）の推定距離値Ｄｃを算出できない場合、メモリＸには、当該処理対象画素（ｎ，ｍ）と、処理対象画素（ｎ，ｍ）の面と連続する面の−Ｘ方向の端部の画素位置とが、それぞれ、画素位置１および画素位置２に保存される。そして、傾きＫには、何も保存されない。
【０１１８】
従って、本ステップでは、これを利用し、推定距離値算出部１７１は、メモリＸにアクセスし、画素位置２が保存されているか否か、あるいは、傾きＫが保存されているか否かによって、−Ｘ方向に隣接する画素（ｎ−１，ｍ）が距離値未算出画素であるか否かを判別する。すなわち、画素位置２に画素位置の情報が保存されている、あるいは、傾きＫが保存されていない場合、画素（ｎ−１，ｍ）を距離値未算出画素と判別する。
【０１１９】
なお、ステップＳ１４０５の判別も同様であり、推定距離値算出部１７１は、メモリＹのアドレスｎ欄にアクセスし、上記同様、画素位置２に画素位置の情報が保存されている、あるいは、傾きＫが保存されていない場合、画素（ｎ，ｍ−１）を距離値未算出画素と判別する。
【０１２０】
＜連続性判別処理＞
次に、ステップＳ１４０２およびステップＳ１４０６の、連続面であるか否かの判別手法について説明する。
【０１２１】
ここでは、上述のように、輝度値比ＲＢを用いて判別する。すなわち、処理対象画素（ｎ，ｍ）の輝度値と、−Ｘ方向に隣接する距離値未算出の画素（ｎ−１，ｍ）の輝度値との間で、輝度値比ＲＢを算出し、輝度値比閾値ＲＢｔｈの範囲内である場合、連続面と判別する。
【０１２２】
ステップＳ１４０６の判別手法も同様で、処理対象画素（ｎ，ｍ）の輝度値と、−Ｙ方向に隣接する距離値未算出の画素（ｎ，ｍ−１）の輝度値との間で輝度値比ＲＢを算出し、輝度値比閾値ＲＢｔｈの範囲内である場合、連続面と判別する。
【０１２３】
＜＋Ｘ方向推定距離値算出処理＞
次に、ステップＳ１４０３の、＋Ｘ方向推定距離値算出処理について説明する。上述のように、処理対象画素（ｎ，ｍ）よりも＋Ｘ方向の、既に距離値が算出されている画素の距離値を用いて、処理対象画素（ｎ，ｍ）よりも−Ｘ側の、距離値未算出画素の距離値を算出する処理である。図１４に、本実施形態の＋Ｘ方向推定距離値算出処理の処理フローを示す。
【０１２４】
この場合、メモリＸには、画素位置１に、処理対象画素（ｎ，ｍ）に−Ｘ方向に隣接する画素（ｎ−１，ｍ）が保存され、画素位置２に、処理対象画素（ｎ，ｍ）の面の−Ｘ方向の端部の画素位置が保存される。
【０１２５】
まず、画素位置２に保存される、−Ｘ方向の端部の画素が、距離値を有しているか否かを判別する（ステップＳ３３０１）。上述のように、−Ｘ方向推定距離値算出処理で、連続面の傾きが算出できず、距離値未算出となるのは、連続面の−Ｘ方向の全ての画素に距離値がない場合と、端部の画素１つだけに距離値がある場合とである。
【０１２６】
＋Ｘ方向推定距離値算出処理では、処理対象画素（ｎ，ｍ）には距離値があるため、連続面の−Ｘ方向の端部の画素１つだけに距離値がある場合であっても、処理対象画素（ｎ，ｍ）の距離値を用いて、傾きを算出することができる。
【０１２７】
従って、画素位置２に保存される画素が距離値を有している場合、処理対象画素（ｎ，ｍ）の距離値と、画素位置２に保存される画素の距離値とを用いて傾きＫを算出し（ステップＳ３３０７）、当該傾きＫを用いて、画素位置１から画素位置２までの距離値未算出の画素の推定距離値を算出する（ステップＳ３３０８）。ここでは、画素位置２に＋Ｘ方向に隣接する画素から、画素位置１の画素（処理対象画素（ｎ，ｍ）に−Ｘ方向に隣接する画素）までの推定距離値を算出する。
【０１２８】
さらに、メモリＸの画素位置２の画素から画素位置１の画素までの面は、Ｘ方向に傾斜していることとなるため、メモリＹの、これらをアドレスとする領域をリセットし（ステップＳ３３０９）、処理を終了する。
【０１２９】
一方、ステップＳ３３０１において、画素位置２の画素に距離値がない場合、−Ｘ方向の画素の距離値を用いて、未算出の画素の距離値を算出することはできない。従って、＋Ｘ方向に１画素ずつ、連続面の端部まで、距離値と輝度値とを取得し、これらを用いて、連続面の傾きを算出する（ステップＳ３３０２〜ステップＳ３３０７）。傾きを算出したら、ステップＳ３３０８において、画素位置２から画素位置１間の、距離値未算出画素の推定距離値を算出する（ステップＳ３３０８）。
【０１３０】
ステップＳ３３０４の、連続面の判断手法は、上述の各推定距離値算出処理と同様であり、距離値差Ｄｄｉｆの絶対値が距離閾値以下であり、かつ、輝度値比ＲＢが輝度値比閾値ＲＢｔｈ範囲内であれば、連続面と判別する。
【０１３１】
なお、処理対象画素（ｎ，ｍ）が＋Ｘ方向の連続面の端部である場合、すなわち、処理フローにおいて、ｉが１の場合（ステップＳ３３１０）、連続面において、距離値が得られるのが、この処理対象画素（ｎ，ｍ）のみとなる。従って、この場合は、＋Ｘ方向に探索しても、傾きを得ることはできず、距離値未算出画素の推定距離値を得ることはできない。この場合は、ステップＳ３３０９へ進む。
【０１３２】
＜＋Ｙ方向推定距離値算出処理＞
次に、ステップＳ１４０７の、＋Ｙ方向推定距離値算出処理について説明する。上述のように、処理対象画素（ｎ，ｍ）よりも＋Ｙ方向の、既に距離値が算出されている画素の距離値を用いて、処理対象画素（ｎ，ｍ）よりも−Ｙ側の、距離値未算出画素の距離値を算出する処理である。図１５に、本実施形態の＋Ｙ方向推定距離値算出処理の処理フローを示す。本処理は基本的に＋Ｘ方向推定距離値算出処理と同様である。以下、＋Ｘ方向推定距離値算出処理と異なる点に主眼をおいて説明する。
【０１３３】
この場合、メモリＹのアドレスｎには、画素位置１に、処理対象画素（ｎ，ｍ）に−Ｘ方向に隣接する画素（ｎ，ｍ−１）が保存され、画素位置２に、処理対象画素（ｎ，ｍ）の面の−Ｙ方向の端部の画素位置が保存される。
【０１３４】
まず、画素位置２に保存される、−Ｙ方向の端部の画素が、距離値を有しているか否かを判別する（ステップＳ３４０１）。画素位置２に保存される画素が距離値を有している場合、処理対象画素（ｎ，ｍ）の距離値と、画素位置２に保存される画素の距離値とを用いて傾きＫを算出し（ステップＳ３４０７）、当該傾きＫを用いて、画素位置１および画素位置２間の距離値未算出画素の推定距離値を算出する（ステップＳ３４０８）。ここでは、画素位置２に＋Ｙ方向に隣接する画素から、画素位置１の画素（処理対象画素（ｎ，ｍ）に−Ｙ方向に隣接する画素）までの推定距離値を算出し、処理を終了する。
【０１３５】
一方、ステップＳ３４０１において、画素位置２の画素に距離値がない場合、＋Ｙ方向に１画素ずつ、連続面の端部まで、距離値と輝度値とを取得し、これらを用いて、連続面の傾きを算出する（ステップＳ３４０２〜ステップＳ３４０７）。
【０１３６】
ステップＳ３４０４の、連続面の判断手法は、上述の各推定距離値算出処理と同様であり、距離値差Ｄｄｉｆの絶対値が距離閾値以下であり、かつ、輝度値比ＲＢが輝度値比閾値ＲＢｔｈ範囲内であれば、連続面と判別する。
【０１３７】
なお、処理対象画素（ｎ，ｍ）が＋Ｘ方向の連続面の端部である場合、すなわち、処理フローにおいて、ｉが１の場合（ステップＳ３４０９）、＋Ｙ方向に探索しても、傾きを得ることはできず、距離値未算出画素の推定距離値を得ることはできない。このため、このまま処理を終了する。
【０１３８】
＜具体例による推定距離値算出処理の説明＞
上記の推定距離値算出処理を具体例で説明する。以降の例では、物体は図示されている画素にのみ存在するものとし、図示されていない画素には物体は存在しないものとする。すなわち、図示されている画素の輝度値は、全て輝度閾値Ｂｔｈ以上とする。また、メモリＸ，Ｙには情報は一切保存されていないものとする。さらに、いずれの画素も、終端画素ではないものとする。
【０１３９】
＜具体例１＞
図１６に、対象物１１３の反射面の形状および対応画素の配置を示す。画素読み出し方向にそって距離値を算出する例を説明する。距離値が算出されていない画素の、推定距離値を、当該画素の−Ｘ方向の画素の距離値を用いて算出する例である。これは、上記図９のステップＳ１１０２、図１２で傾きを得て、推定距離値を算出可能なフローに相当する。
【０１４０】
画素（ｎ，ｍ）について、距離値が０でないため、ステップＳ１４０１以降の処理を行う。まず、未算出画素有無判別処理を行う。メモリＸより情報を読み出す。メモリＸには何も保存されていない。次に、メモリＹより情報を読み出す。メモリＹにも何も保存されていないため、隣接画素に距離値未算出画素はないと判別し、この画素の処理を終える。そして、次の画素（ｎ＋１，ｍ）についての処理へうつる。
【０１４１】
画素（ｎ＋１，ｍ）についても距離値が０でないため、画素（ｎ，ｍ）と同様の処理を繰り返し、画素（ｎ＋２，ｍ）の処理へうつる。その後、画素（ｎ＋２，ｍ）、画素（ｎ＋３，ｍ）についても、同様の処理が行われ、画素（ｎ＋４，ｍ）の処理へうつる。
【０１４２】
画素（ｎ＋４，ｍ）については、距離値が０であるため、ステップＳ１１０１に進み、傾斜方向を判別する。ここでは、Ｘ方向と判別されたものとする。従って、ステップＳ１１０２の−Ｘ方向補正距離値算出処理にうつる。
【０１４３】
まず、ｎ＋４をアドレスとしたメモリＹの領域をリセットする。そして、メモリＸを読み出し、傾きが保存されているか判別する。
【０１４４】
傾きは保存されていないため、Ｘ方向−２画素つまり画素（ｎ＋２，ｍ）の距離値および輝度値を読み出し、距離差・輝度値比を算出し、連続平面の端部探索処理（ステップＳ３１０４〜ステップＳ３１０７）を行う。画素（ｎ＋３，ｍ）と画素（ｎ＋２，ｍ）との間では、距離差は距離閾値範囲内であり、輝度値比も輝度比閾値範囲内とする。従って、連続平面と判別される。また、画素（ｎ＋２，ｍ）は、始端画素ではない。
【０１４５】
従って、Ｘ方向−３画素つまり画素（ｎ＋１，ｍ）の距離値・輝度値を読み出し、同様に探索処理を繰り返す。画素（ｎ＋２，ｍ）と画素（ｎ＋１，ｍ）との間では、距離差が距離閾値範囲外（範囲未満）とする。従って、不連続面と判別される。このとき、ｉは３であるため、ステップＳ３１０８の傾きの算出へうつる。
【０１４６】
画素（ｎ＋２，ｍ）と画素（ｎ＋３，ｍ）との距離値Ｑ，Ｒを用いて、傾きＫは、（Ｒ−Ｑ）／（ｎ＋３−ｎ−２）＝Ｒ−Ｑと算出される。そして、傾きＫ＝Ｒ−Ｑを用いて、画素（ｎ＋４，ｍ）の距離値が２Ｒ−Ｑと算出される。
【０１４７】
なお、画素（ｎ＋４，ｍ）は、メモリＸの画素位置１（４１１）に保存され、傾きＫは、メモリＸの傾き（４１３）に保存される。そして、次の画素（ｎ＋５，ｍ）についての処理へうつる。
【０１４８】
画素（ｎ＋５，ｍ）については、輝度値は輝度閾値以上であるため、物体は存在すると判別される。そして、距離値が０であるため、ステップＳ１１０１に進み、傾斜方向を判別する。ここでは、Ｘ方向と判別されたものとする。すなわち、画素（ｎ＋４，ｍ）の面と連続面である。よって、ステップＳ１１０２の−Ｘ方向補正距離値算出処理にうつる。
【０１４９】
まず、ｎ＋５をアドレスとしたメモリＹの領域をリセットする。そして、メモリＸを読み出し、−Ｘ方向隣接画素（ｎ＋４，ｍ）に対応づけて、傾きが保存されているか判別する。
【０１５０】
傾きは保存されているため、この傾きＲ−Ｑと、画素（ｎ＋４，ｍ）の距離値２Ｒ−Ｑとを用い、画素（ｎ＋５，ｍ）の距離値３Ｒ−２Ｑを算出する。そして、メモリＸの画素位置１を、画素（ｎ＋５，ｍ）に更新し、次の画素（ｎ＋６，ｍ）へうつる。
【０１５１】
画素（ｎ＋６，ｍ）については、距離値が０でないため、まず、距離値未算出画素有無判別処理を行う。メモリＸを読み出す。ここで、メモリＸには、傾きが保存されている。従って、−Ｘ方向に隣接する画素に距離値未算出画素はないと判別する。よって、メモリＸをリセットし、メモリＹの読み出しにうつる。
【０１５２】
メモリＹには何も保存されていないため、次の画素についての処理へうつり、処理を繰り返す。
【０１５３】
＜具体例２＞
次に、対象物１１３の形状、位置が、図１７に示す態様である場合の処理を説明する。距離値が算出されていない画素の推定距離値を、当該画素の＋Ｘ方向の画素を用いて算出する例である。図９において、Ｓ１１０２の−Ｘ方向推定距離値算出処理では距離値を得られず、＋Ｘ方向に隣接する画素の距離値を用いて、ステップＳ１４０３、図１４の＋Ｘ方向推定距離算出処理の、ステップＳ３３０２〜Ｓ３３０６の処理を行い、傾きを算出し、距離値を得る例である。
【０１５４】
処理対象画素（ｎ，ｍ）は距離値が０でないため、ステップＳ１４０１以降の処理を行う。メモリＸに画素位置が保存されているかを確認し、保存されていないためメモリＸをリセットし、メモリＹの確認にうつる。メモリＹにも画素位置は保存されていないため、次の画素（ｎ＋１，ｍ）の処理へうつる。画素（ｎ＋１，ｍ）は画素（ｎ，ｍ）と同様の処理をされ、画素（ｎ＋２，ｍ）の処理へうつる。
【０１５５】
画素（ｎ＋２，ｍ）は距離値が０である。ここでは、傾斜方向は判別できないものとする。この場合、メモリＸの画素位置１および画素位置２に画素（ｎ＋２，ｍ）を保存する。また、メモリＹのラインｎ＋２の画素位置１および画素位置２に、同じく画素位置（ｎ＋２，ｍ）を保存する。そして、次の画素（ｎ＋３，ｍ）の処理へうつる。
【０１５６】
次の処理対象画素（ｎ＋３，ｍ）も、距離値が０であるため、傾斜方向を判別する。ここでは、Ｘ方向と判別できたものとする。以後、−Ｘ方向推定距離値算出処理を行う。
【０１５７】
まず、メモリＹの、アドレスｎ＋３の領域をリセットし、メモリＸに、画素位置１と、画素位置２および傾きのいずれかが保存されているか判別する。ここでは、画素位置１と、画素位置２とが保存され、傾きは保存されていない。よって、ステップＳ３１１０へ移行し、画素位置１を、画素（ｎ＋３，ｍ）に更新し、次の画素（ｎ＋４，ｍ）へうつる。なお、画素位置２は、画素（ｎ＋２，ｍ）のままである。
【０１５８】
処理対象画素（ｎ＋４，ｍ）については、画素（ｎ＋３，ｍ）と同様の処理が行われ、同様に判別され、画素（ｎ＋５，ｍ）の処理へうつる。
【０１５９】
処理対象画素（ｎ＋５，ｍ）は、距離値が０でないため、ステップＳ１４０１以降の処理を行う。まず、距離値未算出画素有無判別処理を行う。
【０１６０】
まず、メモリＸを読み出し、画素位置２に位置情報が保存されているか判断する。画素位置２に位置情報が保存されているため、−Ｘ方向に隣接する画素の面と連続しているか否かを判別する。ここでは、連続しているものとする。よって、＋Ｘ方向推定距離値算出処理を行う。
【０１６１】
次に、Ｘ方向＋１画素つまり画素（ｎ＋６，ｍ）の距離値と輝度値とを取得し、処理対象画素（ｎ＋５，ｍ）との間で、連続面であるかを判別する。ここでは、連続面と判別されたものとする。さらに、Ｘ方向＋２画素つまり（ｎ＋７，ｍ）の距離値と輝度値とを取得し、連続性を判別する。ここでは、不連続と判別されたものとする。
【０１６２】
この場合、ステップＳ３３１０において、ｉは２であるため、同じ連続面で２つの距離値を得ることができ、傾きは算出可能である。すなわち、画素（ｎ＋５，ｍ）の距離値Ｑと画素（ｎ＋６，ｍ）の距離値Ｒとを用いて、傾きＫを算出する。算出される傾きはＲ−Ｑである。
【０１６３】
この傾きを用いて距離値を算出する。ここでは、メモリＸに保存されている画素位置１から画素位置２に向かって順に距離値を算出する。画素位置１に保存されている画素（ｎ＋４，ｍ）の距離値は、傾きがＲ−Ｑ、画素（ｎ＋５，ｍ）の距離値がＱであることから、２Ｑ−Ｒと算出される。同様に画素（ｎ＋３，ｍ）の距離値は、３Ｑ−２Ｒと算出され、画素（ｎ＋２，ｍ）の距離値は、４Ｑ−３Ｒと算出される。
【０１６４】
画素（ｎ＋２，ｍ）は画素位置２であるので、ここまで距離値を算出後、画素位置１から画素位置２までに対応する範囲（ｎ＋４〜ｎ＋２）をアドレスとするメモリＹの領域をリセットする。そして、メモリＸをリセットする。
【０１６５】
次に、メモリＹのアドレス（ｎ＋５）の情報を読み出す。ここでは、画素位置２に位置情報は保存されていない。よって、次の画素（ｎ＋６，ｍ）の処理へうつる。
【０１６６】
処理対象画素（ｎ＋６，ｍ）は、距離値が０でないため、ステップＳ１４０１以降の処理を行う。まず、メモリＸを読み出し、画素位置２に位置情報が保存されているか判別する。画素位置２に位置情報が保存されていない。従って、メモリＸをリセットし、メモリＹを読み出す。ここでは、メモリＹのアドレスｎ＋６の画素位置２にも位置情報は記録されていない。従って、隣接する画素に、距離値未算出画素はないと判別し、次の画素（ｎ＋７，ｍ）の処理へうつり、処理を繰り返す。
【０１６７】
＜具体例３＞
次に、対象物１１３の形状、位置が、図１８に示す態様である場合の処理を説明する、同一平面の両端部に対応する画素の画素値を用いて距離値を算出する例である。具体例２同様、図９において、Ｓ１１０２の−Ｘ方向推定距離値算出処理では距離値を得られず、＋Ｘ方向に隣接する画素の距離値を用いて、ステップＳ１４０３、図１４の＋Ｘ方向推定距離算出処理で距離値を得る例である。ただし、本例は、ステップＳ３３０１からステップＳ３３０７へ移行する例である。
【０１６８】
処理対象画素（ｎ，ｍ）は距離値が０でないため、ステップＳ１４０１以降の処理を行う。ここでは、メモリＸに画素位置が保存されているかを確認し、保存されていないためメモリＸをリセットし、メモリＹの確認にうつる。メモリＹにも画素位置は保存されていないため、次の画素（ｎ＋１，ｍ）の処理へうつる。
【０１６９】
処理対象画素（ｎ＋１，ｍ）は、距離値が０でないため、ステップＳ１４０１以降の処理を行う。ここでは、画素（ｎ，ｍ）と同様の処理が行われ、次の画素（ｎ＋２，ｍ）の処理へうつる。
【０１７０】
処理対象画素（ｎ＋２，ｍ）は、距離値は０である。従って、まず、傾斜方向を判別する。ここでは、Ｘ方向と判別できたものとする。よって、−Ｘ方向推定距離値算出処理を行う。
【０１７１】
アドレス（ｎ＋２）のメモリＹをリセットする。そして、メモリＸを読み出し、データが保存されているか否かを判別する。ここでは、何も保存されていないため、連続面の端部を探索するステップＳ３１０３以降の処理にうつる。ここでは、連続面の端部として、隣接する画素（ｎ＋１，ｍ）が特定される。すなわち、このときｉは２である。
【０１７２】
よって、処理対象画素（ｎ＋２，ｍ）の連続面の−Ｘ方向側には、画素（ｎ＋１，ｍ）しかなく、面の傾きを算出することはできない。従って、ステップＳ３１１２にうつり、処理対象画素（ｎ＋２，ｍ）を、メモリＸの画素位置１に、連続面の端部に対応する画素（ｎ＋１，ｍ）を、メモリＸの画素位置２に保存する。そして、次の画素（ｎ＋３，ｍ）の処理へうつる。
【０１７３】
処理対象画素（ｎ＋３，ｍ）は、距離値が０であるため、まず、傾斜の方向を判別する。Ｘ方向と判別されたものとし、−Ｘ方向推定距離値算出処理を行う。
【０１７４】
アドレス（ｎ＋３）のメモリＹをリセットする。そして、メモリＸを読出す。ここでは、画素位置１、画素位置２は保存されているが、傾きが保存されていないため、ステップＳ３１１０へ移行し、画素位置１を、処理対象画素（ｎ＋３，ｍ）に更新し、次の画素（ｎ＋４，ｍ）の処理へうつる。
【０１７５】
画素（ｎ＋４，ｍ）は画素（ｎ＋３，ｍ）と同様の処理が行われ、次の画素（ｎ＋５，ｍ）にうつる。その際にメモリＸの画素位置１は、画素位置（ｎ＋４，ｍ）に更新される。
【０１７６】
処理対象画素（ｎ＋５，ｍ）は、距離値が０でないため、ステップＳ１４０１以降の処理を行う。まず、距離値未算出画素有無判別処理を行う。ここでは、メモリＸを読み出し、画素位置２に、画素位置が保存されていることから、−Ｘ方向に隣接する画素に未算出画素があると判別する。
【０１７７】
そして、処理対象画素（ｎ＋５，ｍ）と、−Ｘ方向に隣接する画素（ｎ＋４，ｍ）との連続性を判別する。ここでは、連続と判別されたものとする。従って、＋Ｘ方向推定距離値算出処理を行う。
【０１７８】
メモリＸの画素位置２に格納されている画素、すなわち、連続面の端部の画素の距離値が算出されているか否かを判別する。ここでは、画素位置２には、（ｎ＋１，ｍ）が格納されている。また、この画素は、距離値がＱと算出されている。
【０１７９】
従って、ステップＳ３３０７へ移行し、処理対象画素（ｎ＋５，ｍ）の距離値Ｒと、画素（ｎ＋１，ｍ）の距離値Ｑとを用いて、この連続面の傾きを算出する。ここで算出される傾きＫは、（Ｒ−Ｑ）／４である。そして、この傾きを用いて、画素位置２から画素位置１までの間の、距離値未算出画素の推定距離値を算出する。
【０１８０】
最後に、メモリＸにおける画素位置１から画素位置２までに対応する範囲をアドレスとするメモリＹの領域をリセットする。そして、メモリＸをリセットする。
【０１８１】
次に、メモリＹのアドレス（ｎ＋５）の情報を読み出す。ここでは、画素位置２に位置情報は保存されていない。よって、次の画素（ｎ＋６，ｍ）の処理へうつる。
【０１８２】
処理対象画素（ｎ＋６，ｍ）は、距離値が０でないため、ステップＳ１４０１以降の処理を行う。まず、距離値未算出画素有無判別処理を行う。ここでは、メモリＸの画素位置２には、位置情報は保存されていない。また、メモリＹも同様である。従って、隣接画素に距離値未算出画素はないものと判別し、次の画素（ｎ＋７，ｍ）の処理へうつり、処理を繰り返す。
【０１８３】
＜具体例４＞
次に、対象物１１３の形状、位置が、図１９に示す態様である場合の処理を説明する。傾斜を有する面に対応する全画素の距離値が得られていないため、推定距離値も算出できない例である。
【０１８４】
処理対象画素（ｎ，ｍ）は、距離値が０でないため、ステップＳ１４０１以降の処理を行う。ここでは、メモリＸに画素位置が保存されているかを確認し、保存されていないためメモリＸをリセットし、メモリＹの確認にうつる。メモリＹにも画素位置は保存されていないため、次の画素（ｎ＋１，ｍ）の処理へうつる。
【０１８５】
処理対象画素（ｎ＋１，ｍ）は、距離値が０である。従って、まず、傾斜方向を判別する。ここでは、傾斜方向は判別できないものとする。この場合、メモリＸの画素位置１および画素位置２に画素（ｎ＋１，ｍ）を保存する。また、メモリＹのラインｎ＋１の画素位置１および画素位置２に、同じく画素位置（ｎ＋１，ｍ）を保存する。そして、次の画素（ｎ＋２，ｍ）の処理へうつる。
【０１８６】
次の処理対象画素（ｎ＋２，ｍ）も、距離値が０であるため、傾斜方向を判別する。ここでは、Ｘ方向と判別できたものとする。以後、−Ｘ方向推定距離値算出処理を行う。
【０１８７】
まず、メモリＹの、アドレスｎ＋２の領域をリセットし、メモリＸに、画素位置１と、画素位置２および傾きのいずれかが保存されているか判別する。ここでは、画素位置１と、画素位置２とが保存され、傾きは保存されていない。よって、ステップＳ３１１０へ移行し、画素位置１を、画素（ｎ＋２，ｍ）に更新し、次の画素（ｎ＋３，ｍ）へうつる。なお、画素位置２は、画素（ｎ＋１，ｍ）のままである。
【０１８８】
処理対象画素（ｎ＋３，ｍ）、処理対象画素（ｎ＋４，ｍ）および処理対象画素（ｎ＋５，ｍ）についても、それぞれ、画素（ｎ＋２，ｍ）と同様の処理が行われ、同様に判別され、画素（ｎ＋６，ｍ）の処理へうつる。なお、メモリＸにおいて、この時点では、画素位置１には、画素（ｎ＋５，ｍ）が保存され、画素位置２には、画素（ｎ＋１，ｍ）が保存され、傾きは保存されない。
【０１８９】
画素（ｎ＋６，ｍ）の距離値は０でないため、ステップＳ１４０１以降の処理を行う。まず、距離値未算出画素有無判別処理を行う。ここでは、メモリＸの画素位置２には、画素（ｎ＋１，ｍ）が保存されている。従って、Ｘ方向の隣接画素に、距離値未算出画素はあると判別される。
【０１９０】
まず、隣接画素の面とＸ方向に連続性があるか判別する。ここでは、連続性はないと判別され、メモリＸをリセットし、Ｙ方向の隣接画素に、距離値未算出画素があるか否かを判別する。ここでは、メモリＹの同アドレスには画素位置情報は保存されていないものとする。従って、Ｙ方向には、隣接画素に、距離値未算出画素はないと判別される。
【０１９１】
従って、この場合、距離値未算出のＸ方向隣接画素の距離値は算出できない状態で、メモリＸも、処理対象画素（ｎ＋６，ｍ）のＸ方向の画素位置ｎをアドレスとするメモリＹの領域もリセットされ、次の画素の処理へうつる。
【０１９２】
このように、本例では、画素（ｎ＋１，ｍ）から画素（ｎ＋５，ｍ）までの画素の傾きは算出されず、距離値は０のままとなる。
【０１９３】
＜距離画像生成処理の流れ＞
最後に、以上の各部による、本実施形態の距離画像生成処理の流れを説明する。図２０は、本実施形態の距離画像生成処理の処理フローである。
【０１９４】
まず、光源部１１０が変調光を照射し、その反射光を含む入射光を光電変換部１２０が受光し、電荷振分部１３０が各電荷蓄積部１５０に振り分ける。これを、距離画像を生成するに足る電荷が蓄積されるまで継続する。このとき、距離画像を生成するに足る電荷が蓄積されると（ステップＳ１９０１）、輝度画像生成部１６０は、輝度画像を生成し、距離画像生成部１７０は、距離画像を生成する（ステップＳ１９０２）。
【０１９５】
その後、推定距離値算出部１７１は、距離値未算出画素の推定距離値を上記手法で算出し（ステップＳ１９０３）、距離画像生成部１７０は、算出した推定距離値を、当該距離値未算出画素の距離値とし（ステップＳ１９０４）、処理を終了する。
【０１９６】
以上説明したように、本実施形態の距離画像生成装置は、対象空間に変調した変調光１１１を照射する光源部１１０と、前記光源部から照射され、前記対象空間内の対象物１１３の表面で反射した反射光を含む入射光１１２を受光して電荷に変換する、画素毎に設けられた光電変換素子（光電変換部１２０）と、前記光電変換素子ごとに複数設けられた電荷蓄積部１５０と、前記光源部１１０の変調に同期して、前記光電変換素子により変換された電荷を前記複数の電荷蓄積部１５０に振り分ける電荷振分部１３０と、前記電荷蓄積部１５０に蓄積された電荷を用いて画素値が輝度値である輝度画像２２０を生成する輝度画像生成部１６０と、前記複数の電荷蓄積部１５０に蓄積された電荷を用いて画素値が距離値である距離画像２１０を生成する距離画像生成部１７０と、を備え、前記距離画像生成部１７０は、前記対象物１１３の表面に傾斜があることにより前記距離値が得られない距離値未算出画素の距離値を、当該距離値未算出画素の近傍の画素の前記輝度値および前記距離値を用いて算出する距離値算出部（推定距離値算出部１７１）を備える。
ここで用いる近傍の画素は、上述の−Ｘ方向推定距離値算出処理などで、ｉを変更して探索しているように、前記距離値未算出画素に所定方向に隣接して連なる画素であって、隣接する画素との輝度値比が所定範囲の画素である。
【０１９７】
また、前記推定距離値算出部１７１は、−Ｘ方向推定距離値算出処理のステップＳ３１０３〜ステップＳ３１０６のループ、＋Ｘ方向推定距離値算出処理のステップＳ３３０２〜３３０５のループ、同Ｓ３３０１などに記載されているように、前記近傍画素内に前記距離値が算出された複数の画素がある場合、当該複数の画素を用いて、前記対象物の表面の傾きを算出し、当該傾きを用いて前記距離値未算出画素の距離値を算出する。
【０１９８】
本実施形態の推定距離値算出部１７１は、画素毎に、予め定めた順に、距離値が算出されていない画素（距離値未算出画素）であるか否かを判別し、距離値未算出画素であると判別された場合、上述のステップＳ１１０１、ステップＳ１２０１のように、前記対象物１１３の表面の傾斜方向を特定し、特定された傾斜方向の、前記順に画素を判別する方向とは逆方向に隣接して連なる画素であって、隣接する画素との輝度値の比（輝度値比）が所定範囲の画素を近傍の画素として、距離値未算出画素の距離値を推定する。
【０１９９】
本実施形態では、上述のように、特定される傾斜方向は、Ｘ方向およびＹ方向のいずれかである。従って、Ｘ方向と特定された場合、ステップＳ１１０２の−Ｘ方向推定距離値算出処理を行う。この−Ｘ方向推定距離値算出処理において、ステップＳ３１０３からステップＳ３１０７のように、−Ｘ方向に連なる画素であって、視野内の面が連続する画素範囲を特定し、これらの画素の距離値を用いて、距離値未算出画素の距離値を算出する。Ｙ方向と特定された場合も同様である。
【０２００】
一方、本実施形態の推定距離値算出部１７１は、否と判別された場合、判別対象画素に前記順に画素を判別する方向と逆方向に隣接する画素が距離値未算出画素であるか否かを判別し、距離値未算出画素と判別された場合、前記傾斜方向の、前記順に画素を判別する方向に隣接して連なる画素であって、隣接する画素との輝度値比が所定範囲の画素を前記近傍の画素として、当該距離値未算出画素の距離値を算出する。
【０２０１】
上述のように、本実施形態の推定距離値算出部１７１は、処理対象画素が、距離値未算出画素でない場合、ステップＳ１４０１へ移行する。そして、まず、−Ｘ方向に隣接する画素であって視野内の面が連続面である画素に距離値未算出画素がないかを判別し、ある場合は、ステップＳ１４０３の＋Ｘ方向推定距離値算出処理に進む。そして、ステップＳ３３０２からステップＳ３３０６のように、＋Ｘ方向に視野内の面が連続する画素範囲を特定し、これらの画素の距離値を用いて、距離値未算出画素の距離値を算出する。
【０２０２】
視野内の面が連続するか否かの判別は、上述のように、輝度値比を用いて行う。輝度値比が所定範囲であれば、両画素の視野内の対象物１１３の反射面は連続していると判断する。
【０２０３】
このように、本実施形態によれば、変調光による反射光が存在しない箇所があっても、当該箇所の輝度値と、近傍の輝度値および距離値とを用いて推定距離値を算出する。対象物１１３の反射面に傾斜があるため、距離値が得られない場合であっても、推定距離値を算出できる。従って、対象物の形状によらず、高精度な距離画像を得ることができる。
【０２０４】
このとき、本実施形態によれば、傾き値、画素位置のメモリ保存・読み出し処理を行うことにより、同一処理の繰り返しを防いでいる。例えば、−Ｘ方向推定距離値算出処理の、ステップＳ３１１３から、ステップＳ３１０９へ移行する処理のように、先の距離値未算出画素が、探索範囲に含まれ、かつ、反射面の傾きが算出されている場合は、この傾きを利用して推定距離値を算出する。
【０２０５】
このように、本実施形態では、一度算出した傾き、情報を保存し、後過程において活用することにより、同一算術処理の増加により処理速度の低下を防ぎ、フレームレートの大幅な低下を抑えることができる。
【０２０６】
また、本実施形態によれば、１つの距離画像生成装置１００で得られる情報を用いて推定距離値を算出しているため、複数の距離画像生成装置を用いる必要がない。従って、安価かつ小型にすることが可能である。
【０２０７】
さらに、推定距離値は、蓄積された電荷から算出される距離値および輝度値を用いて算出する。従って、基準となる背景データが不必要であるため、動物体であってもリアルタイムに推定距離値を得ることができる。
【０２０８】
＜変形例＞
なお、上記実施形態では、光源部１１０から常に変調光を照射し、その反射光を含む入射光により、蓄積された電荷から、距離値および輝度値を算出し、距離画像および輝度画像をそれぞれ得ている。しかしながら、距離画像、輝度画像の手法は、これに限定されない。例えば、独立したタイミングで取得するよう構成してもよい。
【０２０９】
すなわち、輝度値算出用電荷取得期間および距離値算出用電荷取得期間を設ける。これらの期間は、タイミングチャートとして予め定め、記憶装置等に保存しておく。
【０２１０】
この場合、制御部１４０は、輝度値算出用電荷取得期間は輝度画像生成部１６０に制御信号（読出信号）を送り、電荷を読み出させ、距離値算出用電荷の場合は距離画像生成部１７０に制御信号（読出信号）を送り電荷を読み出させる。
【０２１１】
輝度値を算出する場合、上述のように、最終的に合算するため、位相情報は必要ない。強度情報のみが得られればよい。従って、所定期間ごとに、複数の電荷蓄積部に振り分ける必要はない。従って、例えば、図２１に示すように、制御部１４０は、輝度値算出用電荷取得期間は、ゲート信号を、１つの電荷蓄積部１５０にのみ電荷が蓄積されるよう出力してもよい。このような制御により、変調光と環境光とから輝度値が算出される。
【０２１２】
また、輝度値の算出には、変調光は不要である。従って、光源部１１０への変調信号を制御してもよい。すなわち、制御部１４０は、距離値算出用電荷取得期間は、光源部１１０に変調信号を送り、輝度値算出用電荷取得期間は、光源部１１０に変調信号を送信しない。すなわち、制御部１４０は、輝度値算出用電荷取得期間は、光源部１１０を、変調光を照射しないよう制御する。これは、予め定めたタイミングチャートに従って行う。この場合、制御部１４０は、距離値算出用電荷取得期間のみ、変調信号に同期させて、ゲート信号を出力する。
【０２１３】
この場合の、輝度値算出用電荷取得期間の変調信号とゲート信号の一例を図２２に示す。このように、この期間は、変調信号は送信しない。一方、ゲート信号は、図２１同様、１つの電荷蓄積部１５０にのみ電荷が蓄積されるよう出力される。
【０２１４】
光源部１１０は、変調信号を受信したときのみ、当該変調信号に従って、発光する。光電変換部１２０は、変調光の反射光を含む入射光を受光する。また、光源部１１０が発光していない間は、光電変換部１２０は、環境光のみを受光する。
【０２１５】
なお、輝度値算出用電荷取得期間は、変調信号１周期に対し、それぞれ１：１の割合で設けてもよいし、１：１０であってもよく、自由に設定できる。
【０２１６】
このように構成することにより、各画素の輝度を受光する期間と、各画素の反射光を受光する期間とをそれぞれ設け、結果として出力される輝度値と距離値とを、上述の手法で相互利用し、傾斜部の距離値を算出する。
【０２１７】
これにより、変調光による反射光が存在しない場合であっても、確実に輝度値を得ることができ、より、高精度な推定距離値を算出できる。
【０２１８】
なお、上記実施形態では、推定距離値算出部１７１を、距離画像生成部１７０が備えるものとして記載しているが、この構成に限定されない。例えば、距離画像生成装置１００とデータの送受信可能な、距離画像生成装置１００とは独立して設けられた情報処理装置が推定距離値算出部１７１を実現するよう構成してもよい。
【０２１９】
また、輝度画像生成部１６０および距離画像生成部１７０も同様に、外部装置で実現されてもよい。この場合、所定量電荷が蓄積される毎に、制御部１４０が、輝度画像生成部１６０および距離画像生成部１７０を実現する外部装置に電荷を送信する。
【符号の説明】
【０２２０】
１００：距離画像生成装置、１１０：光源部、１１１：変調光、１１２：入射光、１１３：対象物、１１３ａ：対象物、１１３ｂ：壁、１１４：変調信号、１１５：ゲート信号、１２０：光電変換部、１３０：電荷振分部、１４０：制御部、１５０：電荷蓄積部、１６０：輝度画像生成部、１７０：距離画像生成部、１７１：推定距離値算出部、２１０：距離画像、２２０：輝度画像、３００：画素位置、４１０：メモリＸ、４１１：画素位置１、４１２：画素位置２、４１３：傾き、４２０：メモリＹ、４２１：画素位置１、４２２：画素位置２、４２３：傾き、４２４：アドレス
【図１】
2015121430.tif 000005
【図２】
2015121430.tif 000006
【図３】
2015121430.tif 000007
【図４】
2015121430.tif 000008
【図５】
2015121430.tif 000009
【図６】
2015121430.tif 000010
【図８】
2015121430.tif 000011
【図９】
2015121430.tif 000012
【図１０】
2015121430.tif 000013
【図１１】
2015121430.tif 000014
【図１２】
2015121430.tif 000015
【図１３】
2015121430.tif 000016
【図１４】
2015121430.tif 000017
【図１５】
2015121430.tif 000018
【図１６】
2015121430.tif 000019
【図１７】
2015121430.tif 000020
【図１８】
2015121430.tif 000021
【図１９】
2015121430.tif 000022
【図２０】
2015121430.tif 000023
【図２１】
2015121430.tif 000024
【図２２】
2015121430.tif 000025
【図７】
2015121430.tif 000026