(57)【要約】      （修正有）【課題】視差の算出精度を向上させることができる、画像処理装置及び画像処理プログラム並びに運転支援システムを提供する。【解決手段】画像マッチング処理装置の距離演算回路は、L画像、R画像のいずれか一方を基準画像、他方を参照画像と設定する制御回路２０と、参照画像の解像度を高めて補間画像を生成する入力画像補間回路２１と、参照画像または補間画像を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部１６と、各画素の視差を決定するコスト最小視差抽出回路１７と、参照画像を用いて算出される第１の視差に基づき、コスト最適化演算を行う際の補間画像における視差探索の刻みを動的に変更する、集中視差範囲決定回路２３と、第２の視差を基準画像における解像度に変換して出力する視差出力回路１９とを備える。【選択図】図２
2020042661.tif 000002
【特許請求の範囲】
【請求項１】
第１の撮像手段により得られる第１画像、及び、前記第１の撮像手段とは異なる位置の第２の撮像手段により得られる第２画像に基づき、視差を算出する画像処理装置であって、
前記第１画像、または、前記第２画像のいずれか一方を基準画像、他方を参照画像と設定する制御回路と、
前記参照画像の解像度を高めて補間画像を生成する入力画像補間回路と、
前記参照画像または前記補間画像を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部と、
前記コスト最適化演算によって得られたコスト値を用いて各画素の視差を決定する、コスト最小視差抽出部と、
前記参照画像を用いて算出される第１の視差に基づき、前記参照画像と同一フレームで取得された前記第１画像、または前記第２画像により生成された前記補間画像における視差探索の刻みを動的に変更する、集中視差範囲決定回路と、
前記補間画像を用いて算出される第２の視差を、前記基準画像における解像度に変換して出力する視差出力回路と、
を備える画像処理装置。
【請求項２】
前記コスト最適化演算は、SGM法による合成コスト値の算出により行われることを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記視差出力部は、前記第１画像を基準画像として算出される前記第１の視差と、前記第２画像を基準画像として算出される前記第２の視差とを用いてクロスチェックを行い、算出された視差の妥当性を画素毎に判定することを特徴とする、請求項１又は請求項２に記載の画像処理装置。
【請求項４】
前記制御部は、前記参照画像における画素の取得順序及び演算順序を第１の方向に設定し、また、前記補間画像における画素の取得順序及び演算順序である第２の方向を、前記第１の方向と逆の方向に設定し、前記コスト最適化演算部は、前記制御部により設定された取得順序で画素を取得及び演算しながら算出可能な経路を用いてコスト最適化演算を行うことを特徴とする、請求項１又は請求項２に記載の画像処理装置。
【請求項５】
前記画素の取得順序及び演算順序はラスタスキャンであり、前記第１の方向は、画像の右下から左上に向かう方向であり、前記第２の方向は、画像の左上から右下に向かう方向であることを特徴とする、請求項４に記載の画像処理装置。
【請求項６】
前記集中視差範囲決定回路は、１つ以上の画素で構成されるブロック単位で前記第１の視差の分布統計量を算出し、前記分布統計量に基づき前記視差探索の刻みを決定することを特徴とする、請求項１乃至請求項５のいずれか一項に記載の画像処理装置。
【請求項７】
前記集中視差範囲決定回路は、前記分布統計量近傍の画素は探索の刻みを大きく、前記分布統計量から離れた画素は探索の刻みを小さく設定することを特徴とする、請求項６に記載の画像処理装置。
【請求項８】
前記分布統計量は、平均値、ピーク値、最尤値、中央値のいずれかであることを特徴とする、請求項７に記載の画像処理装置。
【請求項９】
第１の撮像手段により得られる第１画像を基準画像、第２の撮像手段により得られる第２画像を参照画素とするステップと、
前記参照画像を用い、グローバル最適化によるコスト最適化演算を行い得られたコスト値を用いて各画素の第１の視差を決定するステップと、
前記参照画像の解像度を高めて補間画像を生成するステップと、
前記第１の視差に基づき、前記参照画像と同一フレームで取得された前記第１画像、または前記第２画像により生成された前記補間画像における前記コスト最適化演算の視差探索の刻みを動的に変更するステップと、
前記補間画像を用い、前記コスト最適化演算を行い得られたコスト値を用いて各画素の第２の視差を決定するステップと、
前記第２の視差を、前記基準画像における解像度に変換して出力するステップと、
をコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項１０】
第１の撮像手段により得られる第１画像、及び、前記第１の撮像手段とは異なる位置の第２の撮像手段により得られる第２画像に基づき、視差を算出する画像処理装置を有する運転支援システムであって、
前記画像処理装置は、
前記第１画像、または、前記第２画像のいずれか一方を基準画像、他方を参照画像と設定する制御回路と、
前記参照画像の解像度を高めて補間画像を生成する入力画像補間回路と、
前記参照画像または補間画像を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部と、
前記コスト最適化演算によって得られたコスト値を用いて各画素の視差を決定する、コスト最小視差抽出部と、
前記参照画像を用いて算出される第１の視差に基づき、前記参照画像と同一フレームで取得された前記第１画像、または前記第２画像により生成された前記補間画像における視差探索の刻みを動的に変更する、集中視差範囲決定回路と、
前記補間画像を用いて算出される第２の視差を、前記基準画像における解像度に変換して出力する視差出力回路と、
を備えることを特徴とする、運転支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、画像処理装置、及び、画像処理プログラム、並びに、運転支援システムに関する。
【背景技術】
【０００２】
水平に二つ並べられたカメラで同じ被写体を撮影すると、カメラ位置の違いから、撮影された二つの画像における被写体の位置は、水平方向にズレが生じる。両画像における被写体の位置の差を「視差（Disparity）」と呼ぶ。カメラから被写体までの距離は、視差の逆数に比例する。すなわち、視差は、遠いものほど小さく、近いものほど大きくなり、遠方での距離分解能は近傍よりも低下する。
【０００３】
遠方での距離の分解能を上げる手法として、視差計算のサブピクセル演算が提案されている。しかし、遠方での距離分解能を上げるために、画面全体にサブピクセル演算を施すと、本来距離分解能を向上させる必要がない近距離の対象物に対しても分解能向上の処理が追加されるために、計算量が膨大になってしまうという問題があった。また、整数単位で視差を算出した後に、視差前後の画素に対してサブピクセル演算を施すことも考えられるが、この場合にも計算量がかなり増加してしまう。
【０００４】
また、分解能を上げる他の手法として、画素単位で離散的に算出したコスト値に折れ線フィッティングや放物線フィッティングなどを施すことにより、整数未満の値を推定する手法も提案されている。しかし、小数点以下の推定結果が整数位置付近に偏るピクセルロッキング現象を抑制する必要があり、計算が複雑化してしまう。また、フィッティング関数の改善によってピクセルロッキング現象を抑制しても偏りは残ってしまうという問題もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２９３９００号公報
【非特許文献１】Michael, M., Salmen, J., Stallkamp, J., Schlipsing, M.: Real-time stereo vision: Optimizing semi-global matching. In :2013 IEEE Intelligent Vehicles Symposium(IV), pp.1197-1202. IEEE(2013)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、視差の算出精度を向上させることができる、画像処理装置、及び画像処理プログラム、並びに、運転支援システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本実施形態の画像処理装置は、第１の撮像手段により得られる第１画像、及び、前記第１の撮像手段とは異なる位置の第２の撮像手段により得られる第２画像に基づき、視差を算出する画像処理装置であって、前記第１画像、または、前記第２画像のいずれか一方を基準画像、他方を参照画像と設定する制御回路と、前記参照画像の解像度を高めて補間画像を生成する入力画像補間回路を備える。また、前記参照画像または前記補間画像を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部と、前記コスト最適化演算によって得られたコスト値を用いて各画素の視差を決定するコスト最小視差抽出部とも備える。更に、前記参照画像を用いて算出される第１の視差に基づき、前記参照画像と同一フレームで取得された前記第１画像、または前記第２画像により生成された前記補間画像における視差探索の刻みを動的に変更する、集中視差範囲決定回路と、前記補間画像を用いて算出される第２の視差を、前記参照画像における解像度に変換して出力する視差出力回路とも備える。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係わる画像処理装置１を含む、画像処理システムの構成の一例を示す概略ブロック図。
【図２】距離情報演算回路１１の構成の一例を示すブロック図。
【図３】視差毎コスト値算出回路１５の詳細な構成の一例を示すブロック図。
【図４】視差毎コスト値算出回路１５におけるコスト値算出手順の一例を説明するフローチャート。
【図５】SGM法におけるコストを算出する経路とスキャン方向との関係を説明する図。
【図６】コスト最適化演算回路１６の詳細な構成の一例を示すブロック図。
【図７】視差出力回路１９における、視差のクロスチェックの方法を説明する図。
【図８】集中視差範囲決定回路２３における、コスト値算出対象画素の決定方法を説明する図。
【図９】コスト値補間回路２２においてコスト値補間が必要な画素の一例を説明する図。
【図１０】第１の実施形態に係わる画像処理手順の一例を説明するフローチャート。
【図１１】本実施形態に係わる移動体１００の一例を示す図。
【図１２】移動体１００の構成の一例を示すブロック図。
【図１３】移動体１００に搭載された画像処理装置１の一例を示すブロック図。
【図１４】第２の実施形態に係わる画像処理手順の一例を説明するフローチャート。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施形態を説明する。
（第１の実施形態）
図１は、本実施形態に係わる画像処理装置１を含む、画像処理システムの構成の一例を示す概略ブロック図である。画像処理システムは、画像マッチング処理装置（以下、画像処理装置と示す）１と、キャリブレーション装置２と、画像入力装置３と、これらを接続するバス４とから構成されている。図１は、２台のカメラによる左右視差画像を用いてステレオマッチング処理を行う画像処理システムについて例示している。
【００１０】
画像入力装置３には、図示しないカメラで撮像された複数の画像（例えば、左目に対応するカメラで撮像されたL画像５ｌと、右目に対応するカメラで撮像されたR画像５ｒの２枚の画像）が入力される。L画像５ｌとR画像５ｒとは、バス４を介してキャリブレーション装置２に入力される。
【００１１】
キャリブレーション装置２は、設定条件やレンズの個体差などに起因するカメラ内外の静的なズレを補正する。具体的には、格子状のパターンなど、大きさが既知の特定図形パターンを撮像した画像を用い、内部パラメータと外部パラメータとを事前に算出しておく。そして、画像入力装置３から入力されたL画像５ｌとR画像５ｒとのそれぞれを、内部パラメータと外部パラメータとを用いて変換することで、静的なズレを補正し、補正済L画像６ｌと補正済R画像６ｒとを生成する。なお、内部パラメータとは、焦点距離や画像主点位置、レンズ歪みなど、カメラの内部特性を示すものである。また、外部パラメータとは、カメラの三次元空間における回転・平行移動のパラメータであり、ステレオ画像においては、一方の画像を基準とした場合の他方の画像の回転・平行移動の度合を表すものである。補正済L画像６ｌと補正済R画像６ｒとは、バス４を介して画像処理装置１に入力される。
【００１２】
画像処理装置１は、補正後の画像（補正済L画像６ｌ、補正済R画像６ｒ）を用いてステレオマッチングを行い、距離画像（カメラから被写体までの距離を示す画像）７を生成する。図１の画像処理装置１は、プロセッサ１ａと、L画像用ラインバッファ（以下、Lラインバッファと示す）１２と、R画像用ラインバッファ（以下、Rラインバッファと示す）１３とを有している。
【００１３】
Lラインバッファ１２は、補正済L画像６ｌにおいて、視差計算対象画素位置のラインを含む、複数ライン分の画素データを格納するバッファである。Rラインバッファ１３は、補正済R画像６ｒにおいて、視差計算対象画素位置のラインを含む、複数のライン分の画素データを格納するバッファである。
【００１４】
プロセッサ１ａは、距離情報演算回路１１を含む。距離情報演算回路１１は、グラフカット法などのグローバルマッチングや、SGM法（Semi-Global Matching法）などを用い、基準画像の画素ごとに視差を算出して視差画像として出力する。また、基準画像を左右入れ替えて、クロスチェックも行う。すなわち、距離情報演算回路１１における各処理は、プロセッサ１ａによって実行される。
【００１５】
なお、本実施形態において用いる「プロセッサ」との文言は、例えば、CPU（Central Processing Unit）、GPU（Graphical Processing Unit）、特定用途向け集積回路（Application Specific Integrated Circuit：ASIC）、プログラマブル論理デバイス（例えば、単純プログラマブル論理デバイス（Simple Programmable Logic Device：SPLD）、複合プログラマブル論理デバイス（Complex Programmable Logic Device：CPLD）、および、フィールドプログラマブルゲートアレイ（Field Programmable Gate Array：FPGA））の回路を意味する。
【００１６】
図２は、距離情報演算回路１１の構成の一例を示すブロック図である。距離情報演算回路１１は、入力画像取得回路１４と、入力画像補間回路２１と、視差毎コスト値算出回路１５と、コスト最適化演算回路１６と、コスト最小視差抽出回路１７と、クロスチェックバッファ１８と、視差出力回路１９と、集中視差範囲決定回路２３と、コスト値補間回路２２と、視差刻み情報メモリ２４と、制御回路２０とを有する。
【００１７】
入力画像取得回路１４は、制御回路２０からの指示に従って、Lラインバッファ１２、及び、Rラインバッファ１３から、基準画像の各画素、及び、参照画像の各画素を取得する。各画素の取得に際し、L画像／R画像のどちらが基準画像か、また、各画像における画素の取得順序（ラスタスキャンの方向）が、制御回路２０から指示される。
【００１８】
入力画像補間回路２１は、集中視差範囲決定回路２３から入力される指示に従って、入力画像取得回路１４から入力される入力画像のうち、参照画像を補間して補間画像を生成する。具体的には、まず、入力画像の指定された領域を水平方向にのみ拡張し、整数精度のまま解像度をあげる。画像の拡張には、例えば、バイリニア法やバイキュービック法などの超解像手法が用いられる。入力画像全体を２倍に拡張した場合、水平方向の画素数は約２倍になる。例えば、水平方向の画素数が１２８０画素の入力画像について、全ての画素を水平方向に２倍に拡張する場合、補間画像の水平方向の画素数は２５５９画素となる。
【００１９】
次に、集中視差範囲決定回路２３から入力される指示に従って、コスト値算出画素を抽出する。なお、コスト値算出画素の数は、入力画像において拡張対象となる領域の画素数と同数に設定される。例えば、拡張対象となる領域の画素数が１２８画素の場合、コスト値算出画素数も１２８画素に設定される。最後に、指定された領域を拡張して生成した画素領域から、コスト値算出対象画素以外の画素を削除し、補間画像を生成する。なお、集中視差範囲決定回路２３の指示がない場合は、入力画像をそのまま補間画像として出力する。
【００２０】
視差毎コスト値算出回路１５は、補間画像において、視差計算対象画素におけるコスト値算出画素領域を設定し、当該領域におけるコスト値を算出する。コスト値算出画素領域は、水平方向の最大視差の大きさを有する。以下の説明において、補間画像における水平方向の画素位置を表す座標をX座標、垂直方向の画素位置を表す座標をY座標とする。例えば、基準画像がL画像、視差計算対象画素の位置が(X, Y)=(150, 25)、水平方向の最大視差が１２８画素である場合、コスト値算出画素領域は、補間画像における(X, Y)= (150, 25)〜(23, 25)の範囲の画素となる。
【００２１】
図３は、視差毎コスト値算出回路１５の詳細な構成の一例を示すブロック図である。視差毎コスト値算出回路１５は、特徴量演算回路１４１と、コスト演算回路１４２と、コストバッファ１４３とを有する。
【００２２】
特徴量演算回路１４１は、基準画像が格納されているラインバッファから取得する視差計算対象画素の画素データ、及び、入力画像補間回路２１から取得する補間画像のコスト値算出画素領域内の画素データの特徴量を、それぞれ算出する。例えば、LBP（Local Binary Pattern）など、既存の定量化した特徴量を算出する。特徴量としてLBPを算出する場合、特徴量算出対象画素（中心画素）と、周辺画素との輝度値を比較する。当該周辺画素の中心画素の輝度値より周辺画素の輝度値のほうが大きければ“１”、中心画素の輝度値より周辺画素の輝度値のほうが小さければ“０”ビットを付与する。そして、周辺画素のビットを所定の順序で結合し、特徴量算出対象画素の特徴量（LBP符号）とする。なお、周辺画素に付与するビットは、中心画素の輝度値より周辺画素の輝度値のほうが大きければ“０”、中心画素の輝度値より周辺画素の輝度値のほうが小さければ“１”としてもよい。
【００２３】
コスト演算回路１４２は、基準画像における視差計算対象画素に関する特徴量と、補間画像におけるコスト値算出画素に関する特徴量とを比較し、視差ごとのコスト値を算出する。例えば、特徴量としてLBP符号を算出した場合、基準画像と参照画像のLBP符号間のハミング距離を算出し、コスト値とする。
【００２４】
コストバッファ１４３は、コスト演算回路１４２で算出されたコスト値を、補間画像における画素位置と対応付けて格納する。
【００２５】
図４は、視差毎コスト値算出回路１５におけるコスト値算出手順の一例を説明するフローチャートである。なお、コスト値算出に先立ち、基準画像において視差計算対象画素がセットされており、コスト値算出に必要な特徴量が算出されているものとする。距離画像７を作成するためには、基準画像の全画素について視差を算出する必要がある。通常は、基準画像の左上に位置する画素から右下に位置する画素まで、ラスタスキャンの順に視差計算対象画素位置を順次セットし、各画素位置での視差を算出していく。
【００２６】
まず、コスト値算出対象領域を特定し、水平方向の最大視差数Dnumを設定する（Ｓ１）。例えば、上述の一例の場合、Dnum＝１２８と設定する。また、最初のコスト値算出対象画素位置（探索画素位置）を設定する。最初のコスト値算出対象画素位置は、コスト値算出対象領域の左端部に位置する画素である。例えば、上述の一例の場合、最初のコスト値算出対象画素位置は(X, Y)=(23, 25)と設定される。
【００２７】
次に、コスト算出対象の水平方向の画素位置を、初期状態(D＝０)にセットする（Ｓ２）。続いて、コスト演算回路１４２において、探索画素位置におけるコスト値を算出し、コストバッファ１４３に格納する（Ｓ３）。続いて、探索画素位置の水平方向の画素位置（D）を１増加させ、探索画素位置を隣の画素に移動させる（Ｓ４）。
【００２８】
探索画素位置がコスト値算出対象領域に含まれる場合（Ｓ５、Ｎｏ）、Ｓ３に戻って当該画素位置におけるコスト値を算出する。一方、移動後の探索対象画素位置がコスト値算出対象領域に含まれない場合（Ｓ５、Ｙｅｓ）、コスト値算出対象領域内の全ての画素についてコスト値の算出が終了したと判定され、視差毎コスト値算出回路１５における一連のコスト値算出手順を終了する。
【００２９】
なお、視差毎コスト値算出回路１５におけるコスト値の算出方法は、上述した図４のフローチャートの手順に限定されず、コスト値算出対象領域内のすべての画素のコスト値を漏れなく算出できる手順であればよい。例えば、コスト値算出対象領域を複数のブロックに分割し、各ブロックにおけるコスト値の算出を並列処理してもよい。
【００３０】
なお、視差毎コスト値算出回路１５におけるコスト値の算出方法は、上述したLBP符号のハミング距離に限定されず、SAD関数など、既存の定量化したコスト関数を用いてもよい。SAD関数など画素データから特徴量を算出せずに直接コストを算出することが可能な方法を用いる場合、基準画像が格納されているラインバッファから取得する視差計算対象画素の画素データ、及び、補間画像から取得するコスト値算出画素領域内の画素データをコスト演算回路１４２に直接入力してコスト値を算出することができるため、特徴量演算回路１４１は省略することができる。
【００３１】
コスト最適化演算回路１６は、グラフカット法などのグローバルマッチングやSGM法（Semi-Global Matching法）などによって合成非類似度である合成コスト値Sを算出することで、基準画像の画素ごとに最適化された視差を導出する。
【００３２】
ここで、SGM法による合成コスト値Sの算出方法について説明する。合成コスト値Sは、補間画像の端部から視差計算対象画素に向かって集約する方向に沿った、複数の経路を定義し、それぞれの経路におけるコストの総和として算出される。コストを算出する経路は、通常、視差計算対象画素に向かい、水平右方向、水平左方向、垂直上方向、垂直下方向から集約する４方向に沿った４つの経路が設定される。そして通常は、これらの４方向に加え、視差計算対象画素に向かい、右上４５度方向、右下４５度方向、左下４５度方向、左上４５度方向から集約する４方向に沿った４つの経路を加えた８つの経路が設定される。なお、８方向を更に分割して１６方向、３つに分割して２４方向とするなど、経路の数は特定の数に限定されない。
【００３３】
それぞれの経路ｒにおけるコストLr(p, d)は、以下の（１）式を用いて算出される。
【００３４】
Lr(p, d) = C(p, d) + min{Lr(p-r, d), Lr(p-r, d-1) + P1, Lr(p-r, d+1)+P1, Lrmin(p-r) + P2}
…（１）式
（１）式において、C(p, d)は、視差計算対象画素位置から視差dの位置にある画素のコスト値、min{ }は最小値を求める関数、Lrmin(p-r)は、視差計算対象画素位置からr方向に１画素シフトした座標において、シフト量dを変化させた際の、Lr(p-r, d)の最小値を示す。また、P1、P2は予め設定されたペナルティ定数である。このように、コストLr(p, d)は、コスト値C(p, d)に、r方向の所定経路上における１画素前のコストの値が選択されて加算される漸化式となっているので、最適化が行われる。
【００３５】
（１）式に示すコスト計算を、複数の方向（例えば、８方向）から行うことで、近似的に全体最適化を行う。すなわち、各方向のコストLr(p, d)の総和として、合成コスト値Sを算出する。
【００３６】
図５は、SGM法におけるコストを算出する経路とスキャン方向との関係を説明する図である。図５において、網掛けで示す画素は、現在のコスト値算出対象画素を示している。また、図５において、矢印付き太線は、コストを算出する経路と方向とを示している。更に、図５において、矢印付き点線は、補間画像における画素のスキャン方向を示している。
【００３７】
水平左方向、垂直上方向、右上４５度方向、左上４５度方向から集約する４方向に沿った４つの経路のコストは、左、及び、上方向に位置する画素の結果を参照しながら算出する必要がある。従って、図５（ａ）に示すように、補間画像の左上に位置する画素から右下に位置する画素までラスタスキャンしながら算出する。
【００３８】
また、水平右方向、垂直下方向、右下４５度方向、左下４５度方向から集約する４方向のベクトルに沿った４つの経路のコストは、右、及び、下方向に位置する画素の結果を参照しながら算出する必要がある。従って、図５（ｂ）に示すように、補間画像の右下に位置する画素から左上に位置する画素までラスタスキャンしながら算出する。
【００３９】
すなわち、コスト計算を８方向から行う場合、方向を変えて２回ラスタスキャンする必要がある。ラスタスキャンを２回行うため、まず、１回目のラスタスキャンの間に算出した４方向のコストを記憶装置などに一時的に格納しておく。そして、２回目のラスタスキャン終了後に、記憶装置などから格納されている４方向のコストを読み出して、２回目のラスタスキャンによって算出した４方向のコストと合わせ、合成コスト値Sを得る。
【００４０】
図６は、コスト最適化演算回路１６の詳細な構成の一例を示すブロック図である。コスト最適化演算回路１６は、コスト更新値演算部１６１と、コストバッファ１６２とを有する。コスト更新値演算部１６１は、視差毎コスト値算出回路１５から入力されたコスト値、図示しない記憶部などから入力される所定のペナルティ定数P1、P2、及び、コストバッファ１６２に格納されている隣接画素のコストを用い、上述した（１）式の演算を行ってコストを算出する。演算結果は、コストバッファ１６２に格納され、コスト更新値演算部１６１でのコスト算出に再帰的に使用される。
【００４１】
なお、コスト最適化演算回路１６は、一般的に、特定の一つの経路におけるコスト算出に用いられる。従って、距離情報演算回路１１には、合成コスト値Sを算出するために設定された経路の数と同数のコスト最適化演算回路１６が設置される。
【００４２】
また、コスト最適化演算回路１６における合成コスト値Sの算出方法は、上述したグラフカット法などのグローバルマッチングやSGM法に限定されず、既存の他の手法を用いてもよい。
【００４３】
コスト最小視差抽出回路１７は、コスト最適化演算回路１６で算出された合成コスト値Sが最小となる視差（補間画像における画素位置）を抽出する。基準画像の全画素について、視差の抽出が行われる。
【００４４】
クロスチェックバッファ１８は、基準画像を左右入れ替えてクロスチェックを行う場合に、先に基準画像と設定された画像における各画素について、コスト最小視差抽出回路１７で抽出された視差を格納する。
【００４５】
視差出力回路１９は、先に基準画像と設定された画像における各画素について抽出された視差を、視差目安として集中視差範囲決定回路２３に出力する。また、クロスチェックバッファ１８に格納されている各画素の視差と、後に基準画像と設定された画像における各画素の視差との差分をチェックし、正しく視差が求められているか否かを画素毎にその妥当性をチェックする。
【００４６】
なお、視差出力回路１９に入力される視差は、補間画像における画素位置に基づく視差である。従って、基準画像における視差に換算する必要がある。参照画像における画素位置と補間画像における画素位置との対応関係は、後述する視差刻み情報メモリ２４に格納されている。また、参照画像と基準画像の解像度は等しい。従って、後に基準画像と設定された画像における各画素の視差を、視差刻み情報メモリ２４に格納されている情報を用いて、参照画像における視差に変換することにより、視差出力回路１９に入力される視差を、基準画像における視差に変換する。
【００４７】
なお、視差刻み情報メモリ２４に参照画像おける画素位置と補間画像における画素位置との対応関係が登録されていない場合には、入力される各画素の視差を、基準画像における視差とする。以下に説明する視差のクロスチェックは、変換後の視差を用いて行う。
【００４８】
図７は、視差出力回路１９における、視差のクロスチェックの方法を説明する図である。具体的には、L画像の各画素について、算出された視差（換算後視差）を、自身のX座標から差し引き、対応するR画像の画素位置を求める。例えば、L画像の画素(X, Y)=(100, 25)の換算後視差が15と算出された場合、100から15を引き、対応するR画像の画素(X, Y)=( 85, 25)を得る。次に、算出されたR画像の画素位置における視差をクロスチェックバッファ１８から読み出し、先のL画像の画素における視差との差分を算出する。例えば、R画像の画素(X, Y)=( 85, 25)の換算後視差が16である場合、差分は15‐16=−1となる。算出した差分の絶対値と、予め設定した閾値とを比較し、閾値より小さい場合、正しく視差が求められていると判定する。
【００４９】
なお、視差出力回路１９におけるクロスチェックの方法は、L画像を基準画像とした場合の視差と、R画像を基準画像とした場合の視差の比較を行い、視差が正しく求められているか否かを判定すればよく、上述した方法に限定されない。例えば、各座標から視差を引く方法（式）や、閾値との比較による正否判定は、他の方法を用いてもよい。
【００５０】
視差出力回路１９は、視差、及び、チェック結果を出力する。なお、視差とチェック結果とは個別に出力してもよいし、正しく視差が求められていない画素については、算出された視差を特定の値（例えば、−1）で置き換えるなどして、視差にチェック結果を含めて出力してもよい。なお、クロスチェックを行わない場合には、コスト最小視差抽出回路１７で抽出された視差を基準画像における視差に換算し、出力する。
【００５１】
更に、視差出力回路１９は、画像の左上の画素から右下の画素に向かってラスタスキャン順に視差が出力されるよう、出力順序の制御やアドレスの計算も行う。
【００５２】
集中視差範囲決定回路２３は、視差出力回路１９から入力される視差目安、すなわち、先に基準画像と設定された画像における各画素について抽出された視差に基づき、左右入れ替え後の基準画像について、参照画像において視差を集中的に探索する範囲を決定する。
【００５３】
視差を集中的に探索する範囲は、１画素単位で決定してもよいし、基準画像を所定の小領域に分割し、当該小領域ごとに決定してもよい。１画素単位で決定する場合は、当該画素について抽出された視差目安に近い画素ほど集中的に探索するよう、視差探索範囲を決定する。例えば、先の基準画像をR画像とし、画素(X, Y)=( 85, 25)の視差目安が１である場合、左右入れ替え後の基準画像であるL画像について、画素(X, Y)=( 86, 25)の視差を探索する際には、参照画像（R画像）の画素(X, Y)=( 85, 25)を視差集中探索画素位置とし、この近傍の画素を集中的に探索するよう、視差探索範囲を決定する。
【００５４】
小領域ごとに視差を集中的に探索する範囲を決定する場合は、まず、小領域ごとに視差目安の分布統計を取得する。そして、視差計算対象画素から視差目安の平均値だけ離れた画素位置を、左右入れ替え後の基準画像の対応する小領域における視差集中探索画素位置とする。例えば、先の基準画像をR画像とし、画像を水平方向に４分割、垂直方向に４分割して１６ブロックの小領域に分割し、右上端の小領域に含まれる画素の視差目安の平均値が４０であるとする。この場合、まず、左右入れ替え後の基準画像であるL画像も、水平方向に４分割、垂直方向に４分割して１６ブロックの小領域に分割する。視差計算対象画素が右上端の小領域に含まれる場合、参照画像であるR画像における視差計算対象画素位置から４０画素右側に位置する画素を視差集中探索画素位置とし、この近傍を集中的に探索するよう視差探索範囲を決定する。
【００５５】
なお、視差集中探索画素位置は、分布統計の平均値に限定されず、ピーク値や、最尤推定値、中央値（ｍｅｄｉａｎ）を用いてもよい。また、小領域内に含まれる画素の視差目安のばらつきが大きい場合、例えば、分散が所定の値を超える場合には、当該小領域については視差を集中的に探索する範囲を設けず、通常の視差探索同様に均一に探索を行うようにしてもよい。
【００５６】
また、小領域の分割方法は、画像を垂直方向、及び、水平方向に等分割する方法に限定されず、例えば、基準画像のオブジェクト認識を行い、認識結果を用いて分割するなど他の手法を用いてもよい。また、シーンに応じて分割方法や分割数を切り替えてもよい。
【００５７】
図８は、集中視差範囲決定回路２３における、コスト値算出対象画素の決定方法を説明する図である。図８では、具体的な一例として、後の基準画像（L画像）における視差計算対象画素の位置が(X, Y)=( 150, 25)、水平方向の最大視差が１２８画素である場合のコスト値算出対象画素の決定方法を示している。なお、先の基準画像（R画像）において、画素(X, Y)=( 150, 25)が含まれる小領域の視差目安平均は１であるとする。
【００５８】
図８に示す画素列は、Y= 25行目の画素の一部を抽出したものである。（ａ）に示す画素列は、参照画像におけるコスト値算出画素領域に含まれる画素列を示している。すなわち（ａ）は、参照画像における(X, Y)=( 150, 25)〜( 23, 25)の範囲の画素を示している。（ｂ）と（ｃ）に示す画素列は、（ａ）に含まれる画素の解像度２倍に拡張した画素列である。また、（ｄ）に示す画素列は、補間画像におけるコスト値算出画素領域に含まれる画素列を示している。
【００５９】
また、各画素の上部に記載した数字は、該画素の水平方向の座標位置である。かっこ付きの数字は、参照画像におけるX方向の座標位置を示している。例えば、（２３）は、参照画像におけるX方向の座標位置が２３であることを示している。また、数字のみのものは、解像度を２倍に拡張した画像におけるX方向の座標位置を示している。例えば、２７は、２倍に拡張画像における座標位置が２７であることを示している。更に、下線付きの数字は、補間画像におけるX方向の座標位置を示している。例えば、２４は、補間画像におけるX方向の座標位置が２４であることを示している。
【００６０】
以下、コスト値算出対象画素の決定方法を説明する。まず、集中視差範囲決定回路２３は、視差計算対象画素を設定し、コスト値算出画素領域を抽出する。図８に示す一例の場合、コスト値算出画素領域は、(X, Y)=( 150, 25)〜( 23, 25)の範囲の画素となる（画素列（ａ）参照）。そして、当該画素の視差集中探索画素位置を算出する。図８では、視差計算対象画素を(X, Y)=( 150, 25)とし、当該画素の含まれる小領域の視差目安平均が１であるので、X方向の視差集中探索画素位置はX= 150-1= 149となる。
【００６１】
次に、コスト値算出画素領域に含まれる画素を水平方向に２倍に拡張し、解像度を上げる。すなわち、(X, Y)=( 150, 25)〜( 23, 25)の範囲の１２８個の画素を拡張して、２５５個の画素を生成する（画素列（ｂ）参照）。
【００６２】
続いて、解像度を上げた２５５個の画素から、コスト値算出対象画素を抽出する。コスト値算出対象画素は、水平方向の最大視差の数だけ抽出する。（この場合、１２８画素を抽出する。）このとき、視差集中探索画素位置の近傍の画素は細かい刻みで抽出し、視差集中探索画素位置から遠い画素は荒い刻みで抽出する。なお、「刻み」とは、解像度を上げた画素からコスト値算出対象画素として抽出される画素の間隔を表現している。「細かい刻みで抽出する」とは、画素の抽出間隔を狭くとり、連続的にコスト値算出対象画素を抽出することを示している。「荒い刻みで抽出する」とは、画素の抽出間隔を広くとり、離散的にコスト値算出対象画素を抽出することを示している。
【００６３】
図８に示す画素列（ｃ）は、このようにして抽出したコスト値算出対象画素の一例を示している。図８において、コスト値算出対象画素には網掛けを施している。すなわち、視差探索集中画素位置である（１４９）が付与された画素（２倍に拡張した画像において、X= 275の画素）の近傍は、細かい刻みで抽出する。すなわち、網掛けの画素が連続しており、全てコスト値算出対象画素として選択されている。また、視差探索集中画素位置から少し離れた位置では、少し刻みを荒くして抽出する。すなわち、１画素おきに網掛け画素が配置されている。一方、視差探索集中画素位置から遠くでは、更に荒い刻みで抽出する。すなわち、網掛けの画素は４画素に１画素となっており、離散的に配置されている。
【００６４】
このように、視差目安近傍の画素を細かく抽出することで視差の算出精度を向上させることができるとともに、視差目安から遠くの画素を離散的に抽出することで、視差計算量の増加を抑制することができる。
【００６５】
集中視差範囲決定回路２３は、入力画像補間回路２１に対し、上述のようにして抽出したコスト値算出対象画素位置を入力する。また、視差刻み情報メモリ２４にも、抽出したコスト値算出対象画素位置を格納する。入力画像補間回路２１は、２倍に拡張した画素において、入力されたコスト値算出対象画素の位置以外に配置されている画素を削除し、残りの画素を右から詰めて配置する。これにより、図８の画素列（ｄ）に示すように、補間画像の(X, Y)=( 150, 25)〜( 23, 25)の位置に、コスト値算出対象画素を配置することができる。例えば、補間画像の画素(X, Y)= ( 23, 25)には、参照画像の画素(X, Y)= ( 23, 25)が配置される。補間画像の画素(X, Y)= ( 24, 25)には、参照画像の画素(X, Y)= ( 25, 25)が配置される。更に、補間画像の画素(X, Y)= ( 145, 25)には、参照画像を補間して生成した、参照画像の画素(X, Y)= ( 147.5, 25)に相当する画素が配置される。
【００６６】
なお、集中視差範囲決定回路２３から入力画像補間回路２１に対して入力したり、視差刻み情報メモリ２４に格納したりするデータは、コスト値算出対象画素位置に限定されず、視差計算対象画素に対する相対位置（インデックス）や、コスト値算出対象画素の抽出ルールなど、入力画像補間回路２１がコスト値算出対象画素位置を算出できるデータを入力してもよい。
【００６７】
コスト値補間回路２２は、コスト最適化演算回路１６において画素間での探索結果（コスト値）を参照しながら合成コスト値Sを算出する際に、参照すべき画素の探索結果が算出されていない場合、周辺の画素の探索結果を用いて当該画素のコスト値を補間する回路である。例えば、視差が小さい領域では刻みを細かく、視差が大きい領域では刻みを荒くしてコスト値算出対象画素を抽出する第一の小領域と、コスト値算出対象画素領域内で均等にコスト値算出対象画素を抽出する第二の小領域とが隣接して配置されている場合、コスト値補間回路２２によるコスト値の補間が必要となる。
【００６８】
以下、具体的な一例を用いて説明する。図９は、コスト値補間回路２２においてコスト値補間が必要な画素の一例を説明する図である。図９（ａ）は、視差計算対象画素(X, Y)=( 150, 25)におけるコスト値算出対象画素の一例を示しており、図９（ｂ）は、視差計算対象画素(X, Y)=( 151, 25)におけるコスト値算出対象画素の一例を示している。なお、図９は、水平方向に２倍に拡張した参照画像であり、コスト値算出対象画素として抽出された画素には網掛けを施している。
【００６９】
また、図中にかっこ付き数字で示す座標は、拡張前の参照画像における座標を示している。更に、図９では、基準画像（L画像）における水平方向の最大視差が１２８画素であり、X座標が０〜１５０の領域を第一の小領域、X座標が１５１〜の領域を第二の小領域とする。すなわち、画素(X, Y)= ( 150, 25)は第一の小領域に含まれ、 隣の画素(X, Y)= ( 151, 25)は第二の小領域に含まれているとする。また、図９（ａ）（ｂ）に示すｄ座標軸は、視差計算対象画素を基準とする視差方向を示している。
【００７０】
図９（ａ）に示すように、視差計算対象画素が(X, Y)= ( 150, 25)の場合、視差が小さい領域では細かい刻みで画素を抽出する。例えば、視差が小さい領域で抽出される画素は、(X, Y)= …( 149, 25)、( 149.5, 25)、( 150, 25)となる。一方、視差が大きい領域では荒い刻みで画素を抽出する。例えば(X, Y)=( 23, 25)、( 25, 25)、( 27, 25)…となる。続いて、図９（ｂ）に示すように、視差計算対象画素を水平方向に１シフトし、(X, Y)=( 151, 25)に設定してコスト値を算出する場合、全ての領域において均等の刻みで画素を抽出する。すなわち、抽出される画素は、 (X, Y)= ( 24, 25)、( 25, 25)、( 26, 25)…( 150, 25)、( 151, 25)となる。
【００７１】
すなわち、視差計算対象画素(X, Y)=( 151, 25)の合成コスト値Sを算出する際に必要となる画素(X, Y)=( 24, 25)、( 26, 25)のコスト値は、視差計算対象画素(X, Y)=( 150, 25)の合成コスト値S算出の際には不要であるので、算出されていない。従って、視差計算対象画素(X, Y)=( 151, 25)の合成コスト値Sを算出する際に、画素(X, Y)= ( 24, 25)、( 26, 25)のコスト値を周囲の画素のコスト値などを用いて補間生成する。なお、コスト値の補間には、例えば、バイリニア法やバイキュービック法などの補間手法が用いられる。
【００７２】
制御回路２０は、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７、の各部に対し、基準画像の設定と、各画像おける画素のスキャン方向の指示を行う。
【００７３】
次に、本実施形態の画像処理装置における、視差算出手順について説明する。図１０は、本実施形態に係わる画像処理手順の一例を説明するフローチャートである。図１０は、L画像を基準画像とする視差を出力する場合において、R画像を基準画像として算出した視差を用いてクロスチェックを１回行う際の手順を示している。
【００７４】
まず、制御回路２０は、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７の各部に対し、基準画像としてR画像をセットする（Ｓ１１）。通常は、まず、視差を出力する画像とは逆の画像を基準画像として視差を算出する。従って、上述の場合、まずはR画像を基準画像として視差を算出する。なお、R画像を基準画像とする視差を出力したい場合、Ｓ１１においてはL画像を基準画像としてセットする。
【００７５】
次に、入力画像取得回路１４、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７は、R画像を基準画像とし、参照画像であるL画像の補間画像をスキャンしながら各画素の視差を算出し、所定の小領域ごとに視差の分布統計を取得する（Ｓ１２）。Ｓ１２は、具体的には以下のように実行される。
【００７６】
まず、入力画像取得回路１４、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７は、R画像を基準画像とし、参照画像であるL画像の補間画像をスキャンしながら、各画素の視差を算出する。この時、入力画像補間回路２１は、画像の拡張処理を行わず、入力画像である参照画像をそのまま補間画像として出力する。すなわち、補間画像＝L画像となる。そして、基準画像の全画素について、合成コスト値Sが最小となる視差が抽出され、クロスチェックバッファ１８に格納されるとともに、視差出力回路１９に出力される。視差出力回路１９は、基準画像の全画素についての視差を、視差目安として集中視差範囲決定回路２３に出力する。集中視差範囲決定回路２３は、基準画像を所定のロジックに基づき小領域に分割する。そして、小領域ごとに、当該領域に含まれる画素の視差目安の分布統計を取得する。
【００７７】
続いて、集中視差範囲決定回路２３は、Ｓ１２で取得した視差目安の分布統計に基づき、小領域ごとに、集中的に探索を行う視差集中探索画素位置（中央視差値）を決定する（Ｓ１３）。
【００７８】
そして、制御回路２０は、基準画像の入れ替えを行い、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７の各部に対し、基準画像としてL画像をセットする（Ｓ１４）。
【００７９】
入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７は、L画像を基準画像とし、参照画像であるR画像の補間画像をスキャンしながら、各画素の視差を算出する（Ｓ１５）。Ｓ１５は、具体的には以下のように実行される。
【００８０】
まず、入力画像補間回路２１は、入力画像取得回路１４から入力される参照画像（R画像）に対し、集中視差範囲決定回路２３からの指示に従い補間画像を生成する。視差集中探索画素位置は視差計算対象画素によって異なるため、視差計算対象画素が次の画素にセットされる都度、当該視差計算対象画素に応じた指示を集中視差範囲決定回路２３から受けて、補間画像を生成する。
【００８１】
次に、視差毎コスト値算出回路１５は、補間画像において、視差計算対象画素におけるコスト値算出画素領域を設定し、当該領域におけるコスト値を算出する。続いて、コスト最適化演算回路１６において合成コスト値Sを算出し、コスト最小視差抽出回路１７において、合成コスト値Sが最小となる視差が抽出される。
【００８２】
続いて、視差出力回路１９は、クロスチェックバッファ１８に格納されているR画像を基準画像とした各画素の視差と、L画像を基準画像とした各画素の視差との差分をチェックし、正しく視差が求められているか否かを画素毎にチェックする（Ｓ１６）。
【００８３】
最後に、視差出力回路１９は、L画像を基準画像とした各画素の視差にチェック結果を反映させ、正しく視差が求められていないと判定された画素については、算出された視差を特定の値（例えば、−1）で置き換える（Ｓ１７）。正しく視差が求められていると判定された画素については、算出された視差をそのまま用いる。なお、チェック結果に応じた視差の置き換えは行わず、視差とチェック結果とを個別に出力してもよい。
【００８４】
最後に、算出された視差を、Ｓ１５において視差刻み情報メモリ２４に格納されているデータ（補正画像における画素位置と、参照画像における画素位置との対応関係のデータ）を用いて補正し、基準画像における視差に変換して出力し（Ｓ１８）、視差算出処理を終了する。
【００８５】
このように、本実施形態によれば、基準画像を左右入れ替えて視差を算出し、クロスチェックを行う場合において、後の基準画像において視差を算出する際に、先の基準画像を用いて算出した視差（視差目安）に基づき、視差を集中的に探索する範囲を決定する。従って、処理回路や演算を追加することなく視差目安を取得することができる。後の基準画像において視差を算出する際に、視差目安近傍の画素を細かく抽出し、視差目安から遠くの画素を離散的に抽出してコスト演算を行うことで、計算量の増加を抑制しつつ、視差の算出精度を向上させることができる。
【００８６】
本実施の形態の画像処理装置１は、移動体１００などにおける運転支援システムとして用いることができる。次に、本実施形態の画像処理装置１を搭載した移動体１００について説明する。
【００８７】
図１１は、本実施形態の移動体１００の一例を示す図である。
【００８８】
移動体１００は、画像処理装置１と、出力部１００Ａと、センサ１００Ｂと、入力装置１００Ｃと、動力制御部１００Ｇと、動力部１００Ｈと、を備える。
【００８９】
移動体１００は、移動可能な物体である。移動体１００は、例えば、車両（自動二輪車、自動四輪車、自転車）、台車、ロボット、船舶、飛翔体（飛行機、無人航空機（UAV：Unmanned Aerial Vehicle）など）である。移動体１００は、例えば、人による運転操作を介して走行する移動体や、人による運転操作を介さずに自動的に走行（自律走行）可能な移動体である。自動走行可能な移動体は、例えば、自動運転車両である。本実施形態の移動体１００は、自律走行可能な車両である場合を一例として説明する。
【００９０】
なお、運転支援システムとしての画像処理装置１は、移動体１００に搭載された形態に限定されない。画像処理装置１は、静止物に搭載されていてもよい。静止物は、移動不可能な物や、地面に対して静止した状態の物である。静止物は、例えば、ガードレール、ポール、駐車車両、道路標識、などである。また、画像処理装置１は、クラウド上で処理を実行するクラウドサーバに搭載されていてもよい。
【００９１】
出力部１００Ａは、各種情報を出力する。例えば出力部１００Ａは、各種処理による出力情報を出力する。
【００９２】
出力部１００Ａは、例えば、出力情報を送信する通信機能、出力情報を表示する表示機能、出力情報を示す音を出力する音出力機能、などを備える。例えば、出力部１００Ａは、通信部１００Ｄと、ディスプレイ１００Ｅと、スピーカ１００Ｆと、を含む。
【００９３】
通信部１００Ｄは、外部装置と通信する。通信部１００Ｄは、VICS（登録商標）通信回路やダイナミックマップ通信回路である。通信部１００Ｄは、出力情報を外部装置へ送信する。また、通信部１００Ｄは、道路情報などを外部装置から受信する。道路情報は、信号、標識、周囲の建物、各車線の道幅、レーン中心線などである。道路情報は、画像処理装置内に設けたRAM、ROMといったメモリ１ｂ内に記憶されても、移動体内に別に設けたメモリ内に記憶してもよい。
【００９４】
ディスプレイ１００Ｅは、出力情報を表示する。ディスプレイ１００Ｅは、例えば、公知のLCD（Liquid Crystal Display）や投影装置やライトなどである。スピーカ１００Ｆは、出力情報を示す音を出力する。
【００９５】
センサ１００Ｂは、移動体１００の走行環境を取得するセンサである。走行環境は、例えば、移動体１００の観測情報や、移動体１００の周辺情報である。センサ１００Ｂは、例えば、外界センサや内界センサである。
【００９６】
内界センサは、観測情報を観測するセンサである。観測情報は、例えば、移動体１００の加速度、移動体１００の速度、移動体１００の角速度を含む。
【００９７】
内界センサは、例えば、慣性計測装置（IMU：Inertial Measurement Unit）、加速度センサ、速度センサ、ロータリエンコーダ、などである。IMUは、移動体１００の三軸加速度および三軸角速度を含む観測情報を観測する。
【００９８】
外界センサは、移動体１００の周辺情報を観測する。外界センサは、移動体１００に搭載されていてもよいし、該移動体１００の外部（例えば、他の移動体や外部装置など）に搭載されていてもよい。
【００９９】
周辺情報は、移動体１００の周辺の状況を示す情報である。移動体１００の周辺とは、該移動体１００から予め定めた範囲内の領域である。この範囲は、外界センサの観測可能な範囲である。この範囲は、予め設定すればよい。
【０１００】
周辺情報は、例えば、移動体１００の周辺の撮影画像および距離情報などである。なお、周辺情報は、移動体１００の位置情報を含んでいてもよい。撮影画像は、撮影によって得られる撮影画像データである（以下、単に、撮影画像と称する場合がある）。距離情報は、移動体１００から対象までの距離を示す情報である。対象は、外界における、外界センサによって観測可能な箇所である。位置情報は、相対位置であってもよいし、絶対位置であってもよい。
【０１０１】
外界センサは、例えば、撮影によって撮影画像を得る撮影装置、距離センサ（ミリ波レーダ、レーザセンサ、距離画像センサ）、位置センサ（GNSS（Global Navigation Satellite System）、GPS（Global Positioning System）、無線通信装置）などである。
【０１０２】
撮影画像は、画素ごとに画素値を規定したデジタル画像データや、画素毎にセンサ１００Ｂからの距離を規定したデプスマップなどである。レーザセンサは、例えば、水平面に対して平行に設置された二次元LIDAR（Laser Imaging Detection and Ranging）センサや、三次元LIDARセンサである。
【０１０３】
入力装置１００Ｃは、ユーザからの各種指示や情報入力を受け付ける。入力装置１００Ｃは、例えば、マウスやトラックボール等のポインティングデバイス、または、キーボード等の入力デバイスである。また、入力装置１００Ｃは、ディスプレイ１００Ｅと一体的に設けられたタッチパネルにおける入力機能であってもよい。
【０１０４】
動力制御部１００Ｇは、動力部１００Ｈを制御する。動力部１００Ｈは、移動体１００に搭載された、駆動するデバイスである。動力部１００Ｈは、例えば、エンジン、モータ、車輪、などである。
【０１０５】
動力部１００Ｈは、動力制御部１００Ｇの制御によって駆動する。例えば、動力制御部１００Ｇは、画像処理装置１で生成された出力情報や、センサ１００Ｂから得られた情報などに基づいて、周辺の状況を判断し、アクセル量、ブレーキ量、操舵角などの制御を行う。
【０１０６】
次に、移動体１００の電気的構成について詳細に説明する。図１２は、移動体１００の構成の一例を示すブロック図である。
【０１０７】
移動体１００は、画像処理装置１と、出力部１００Ａと、センサ１００Ｂと、入力装置１００Ｃと、動力制御部１００Ｇと、動力部１００Ｈと、を備える。出力部１００Ａは、上述したように、通信部１００Ｄと、ディスプレイ１００Ｅと、スピーカ１００Ｆと、を含む。
【０１０８】
画像処理装置１、出力部１００Ａ、センサ１００Ｂ、入力装置１００Ｃ、および動力制御部１００Ｇは、バス１００Ｉを介して接続されている。動力部１００Ｈは、動力制御部１００Ｇに接続されている。
【０１０９】
図１３は、移動体１００に搭載された画像処理装置１の一例を示すブロック図である。画像処理装置１は、Ｉ／Ｆ１ｃ、メモリ１ｂ、プロセッサ１ａを含む。すなわち、出力部１００Ａ、センサ１００Ｂ、入力装置１００Ｃ、動力制御部１００Ｇ、画像処理装置１は、バス１００Ｉを介して接続されている。
【０１１０】
なお、出力部１００Ａ（通信部１００Ｄ、ディスプレイ１００Ｅ、スピーカ１００Ｆ）、センサ１００Ｂ、入力装置１００Ｃ、および動力制御部１００Ｇ、の少なくとも１つは、有線または無線で画像処理装置１に接続すればよい。また、出力部１００Ａ（通信部１００Ｄ、ディスプレイ１００Ｅ、スピーカ１００Ｆ）、センサ１００Ｂ、入力装置１００Ｃ、および動力制御部１００Ｇの少なくとも１つと、画像処理装置１と、をネットワークを介して接続してもよい。
【０１１１】
Ｉ／Ｆ１ｃは、他のシステムとのネットワーク（N／W）等に接続されている。また、Ｉ／Ｆ１ｃは、通信部１００Ｄとの間の情報の送受信を司る。Ｉ／Ｆ１ｃを介して、人などの認識された対象の情報、認識された対象までの距離の情報が出力される。
【０１１２】
メモリ１ｂは、各種データを記憶する。メモリ１ｂは、例えば、RAM（Random Access Memory）、フラッシュメモリ等の半導体メモリ素子、ハードディスク、光ディスク等である。なお、メモリ１ｂは、画像処理装置１の外部に設けてもよい。ROMは、プロセッサ１ａによって実行されるプログラムや必要なデータを保持する。RAMは、プロセッサ１ａの作業領域として機能する。また、メモリ１ｂは、移動体１００の外部に設けてもよい。例えば、メモリ１ｂを、クラウド上に設置されたサーバ装置に配置してもよい。
【０１１３】
また、メモリ１ｂは、記憶媒体であってもよい。具体的には、記憶媒体は、プログラムや各種情報を、LAN（Local Area Network）やインターネットなどを介してダウンロードして記憶または一時記憶したものであってもよい。また、メモリ１ｂを、複数の記憶媒体から構成してもよい。
【０１１４】
プロセッサ１ａにおける各処理機能は、コンピュータによって実行可能なプログラムの形態でメモリ１ｂへ記憶されている。プロセッサ１ａは、プログラムをメモリ１ｂから読出、実行することで、各プログラムに対応する機能部を実現するプロセッサである。
【０１１５】
なお、各機能の各々を実現するための独立した複数のプロセッサを組み合わせて処理回路１ｅを構成してもよい。この場合、各プロセッサがプログラムを実行することにより各機能を実現する。また、各処理機能がプログラムとして構成され、１つの処理回路１ｅが各プログラムを実行する場合であってもよいし、専用回路として画像処理アクセラレータ１ｄを設け、特定の機能が独立したプログラム実行回路に実装される場合であってもよい。
【０１１６】
プロセッサ１ａは、メモリ１ｂに保存されたプログラムを読み出し実行することで機能を実現する。なお、メモリ１ｂにプログラムを保存する代わりに、プロセッサの回路内にプログラムを直接組み込むよう構成しても構わない。この場合、プロセッサは回路内に組み込まれたプログラムを読み出し実行することで機能を実現する。
【０１１７】
このように構成された移動体１００において、センサ１００Ｂで観測された周辺情報である撮影画像を用いて視差を算出する場合においても、上述した画像処理方法を用いることで、計算量の増加を抑制しつつ、視差の算出精度を向上させることができる。
（第２の実施形態）
上述の第１の実施形態では、視差のクロスチェックを行う場合において、先の基準画像を用いて算出した視差（視差目安）に基づき、後の基準画像において視差を集中的に探索する範囲を決定していた。これに対し、本実施形態においては、SGM法など画像を複数回スキャンして合成コストSを求めて視差を算出する場合において、先のスキャンによって算出した視差（視差目安）に基づき、後のスキャンにおいて視差を集中的に探索する範囲を決定する点が異なっている。なお、本実施形態における画像処理装置の構成は、図２に示す第１の実施形態の画像処理装置と同様であるので、説明を省略する。
【０１１８】
図１４は、第２の実施形態に係わる画像処理手順の一例を説明するフローチャートである。図１４は、SGM法により画像を２回スキャンしながら視差を出力する際の手順を示している。
【０１１９】
まず、制御回路２０は、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７の各部に対し、基準画像としてL画像をセットする（Ｓ２１）。なお、R画像を基準画像とする視差を出力したい場合、Ｓ２１においてはR画像を基準画像としてセットする。
【０１２０】
次に、制御回路２０は、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７の各部に対し、右下から左上方向に向かって画素をスキャンするよう、スキャン方向をセットする（Ｓ２２）。
【０１２１】
続いて、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７は、L画像を基準画像とし、参照画像であるR画像の補間画像を右下から左上方向に向かってスキャンしながら視差を算出し、所定の小領域ごとに視差の分布統計を取得する（Ｓ２３）。なお、入力画像補間回路２１は、画像の拡張処理を行わず、入力画像である参照画像をそのまま補間画像として出力するので、コスト算出対象となる補間画像はR画像そのものとなる。
【０１２２】
この時、コスト最適化演算回路１６は、右下から左上方向に向かって画素をスキャンしながら算出可能な経路についてのみ、コストを算出する。すなわち、水平右方向、垂直下方向、右下４５度方向、左下４５度方向から集約する４方向のベクトルに沿った４つの経路のコストを算出し、これら４つの経路のコストを用いて合成コスト値Sを算出する。
【０１２３】
そして、基準画像の全画素について、合成コスト値Sが最小となる視差が抽出され、クロスチェックバッファ１８に格納されるとともに、視差出力回路１９に出力される。視差出力回路１９は、基準画像の全画素についての視差を、視差目安として集中視差範囲決定回路２３に出力する。集中視差範囲決定回路２３は、基準画像を所定のロジックに基づき小領域に分割する。そして、小領域ごとに、当該領域に含まれる画素の視差目安の分布統計を取得する。
【０１２４】
続いて、集中視差範囲決定回路２３は、Ｓ２３で取得した視差目安の分布統計に基づき、小領域ごとに、集中的に探索を行う視差集中探索画素位置（中央視差値）を決定する（Ｓ２４）。そして、制御回路２０は、入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７の各部に対し、左上から右下方向に向かって画素をスキャンするよう、スキャン方向をセットする（Ｓ２５）。
【０１２５】
入力画像取得回路１４、入力画像補間回路２１、視差毎コスト値算出回路１５、コスト最適化演算回路１６、コスト最小視差抽出回路１７は、補間画像を左上から右下方向に向かってスキャンしながら、各画素の視差を算出する（Ｓ２６）。Ｓ２６は、具体的には以下のように実行される。
【０１２６】
まず、入力画像補間回路２１は、入力画像取得回路１４から入力される参照画像（R画像）に対し、集中視差範囲決定回路２３からの指示に従い補間画像を生成する。視差集中探索画素位置は視差計算対象画素によって異なるため、視差計算対象画素が次の画素にセットされる都度、当該視差計算対象画素に応じた指示を集中視差範囲決定回路２３から受けて、補間画像を生成する。
【０１２７】
次に、視差毎コスト値算出回路１５は、補間画像において、視差計算対象画素におけるコスト値算出画素領域を設定し、当該領域におけるコスト値を算出する。続いて、コスト最適化演算回路１６において合成コスト値Sを算出する。この時、コスト最適化演算回路１６は、左上から右下方向に向かって画素をスキャンしながら算出可能な経路についてのみ、コストを算出する。すなわち、水平左方向、垂直上方向、右上４５度方向、左上４５度方向から集約する４方向のベクトルに沿った４つの経路のコストを算出し、これら４つの経路のコストを用いて合成コスト値Sを算出する。そして、コスト最小視差抽出回路１７において、合成コスト値Sが最小となる視差が抽出される。
【０１２８】
最後に、Ｓ２６において算出された視差を、Ｓ２４において視差刻み情報メモリ２４に格納されているデータ（補正画像における画素位置と、参照画像における画素位置との対応関係のデータ）を用いて補正し、基準画像における視差に変換して出力し（Ｓ２７）、視差算出処理を終了する。
【０１２９】
このように、本実施形態によれば、SGM法など画像を複数回スキャンして合成コストSを求めて視差を算出する場合において、先のスキャンにより算出した視差（視差目安）に基づき、後のスキャンにおいて視差を算出する際に、視差を集中的に探索する範囲を決定する。従って、処理回路や演算を追加することなく視差目安を取得することができる。後のスキャンにおいて視差を算出する際に、視差目安近傍の画素を細かく抽出し、視差目安から遠くの画素を離散的に抽出してコスト演算を行うことで、計算量の増加を抑制しつつ、視差の算出精度を向上させることができる。
【０１３０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、一例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３１】
１…画像処理装置、１ａ…プロセッサ、１ｂ…メモリ、１ｄ…画像処理アクセラレータ、１ｅ…処理回路、２…キャリブレーション装置、３…画像入力装置、４…バス、５ｌ…L画像、５ｒ…R画像、６ｌ…補正済L画像、６ｒ…補正済R画像、７…距離画像、１１…距離情報演算回路、１２…Lラインバッファ、１３…Rラインバッファ、１４…入力画像取得部、１５…視差毎コスト値算出部、１６…コスト最適化演算部、１７…コスト最小視差抽出部、１８…クロスチェックバッファ、１９…視差出力部、２０…制御回路、２１…入力画像補間回路、２２…コスト値補間回路、２３…集中視差範囲決定回路、２４…視差刻み情報メモリ、１００…移動体、１００Ａ…出力部、１００Ｂ…センサ、１００Ｃ…入力装置、１００Ｄ…通信部、１００Ｅ…ディスプレイ、１００Ｆ…スピーカ、１００Ｇ…動力制御部、１００Ｈ…動力部、１００Ｉ…バス、１４１…特徴量演算部、１４２…コスト演算部、１４３、１６２…コストバッファ、１６１…コスト更新値演算部、
【図１】
2020042661.tif 000003
【図２】
2020042661.tif 000004
【図３】
2020042661.tif 000005
【図４】
2020042661.tif 000006
【図５】
2020042661.tif 000007
【図６】
2020042661.tif 000008
【図７】
2020042661.tif 000009
【図８】
2020042661.tif 000010
【図９】
2020042661.tif 000011
【図１０】
2020042661.tif 000012
【図１１】
2020042661.tif 000013
【図１２】
2020042661.tif 000014
【図１３】
2020042661.tif 000015
【図１４】
2020042661.tif 000016