(57)【要約】【課題】処理レートを向上させ、メモリの搭載量を低減することができる、画像処理装置、及び画像処理方法を提供する。【解決手段】L画像６ｌ、R画像６ｒのいずれか一方を基準画像、他方を参照画像と設定し、また、参照画像における画素の取得順序を第１の方向に設定する制御部２０と、設定順序で画素を取得しながら算出可能な経路を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部１６と、各画素の視差を決定するコスト最小視差抽出部１７と、L画像６ｌを基準画像とする視差と、R画像６ｒを基準画像する視差とを用いてクロスチェックを行い、算出された視差の妥当性を画素毎に判定し出力する視差出力部１９と、を備えており、制御部２０は、基準画像と参照画像との入れ替えを行うと同時に、入れ替え後の参照画像における画素の取得順序を、第１の方向と逆の方向に設定する。【選択図】図２
2019159708.tif 000002
【特許請求の範囲】
【請求項１】
第１の撮像手段が被写体を撮像することにより得られる第１画像、及び、前記第１の撮像手段とは異なる位置の第２の撮像手段が前記被写体を撮像することにより得られる第２画像に基づき、視差を算出する画像処理装置であって、
前記第１画像、または、前記第２画像のいずれか一方を基準画像、他方を参照画像と設定し、また、前記参照画像における画素の取得順序を第１の方向に設定する制御部と、
前記参照画像において、前記制御部により設定された取得順序で画素を取得しながら算出可能な経路を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部と、
前記コスト最適化演算によって得られたコスト値を用いて各画素の視差を決定する、コスト最小視差抽出部と、
前記第１画像を基準画像として算出される第１の視差と、前記第２画像を基準画像として算出される第２の視差とを用いてクロスチェックを行い、算出された視差の妥当性を画素毎に判定し出力する視差出力部と、
を備えており、前記制御部は、前記基準画像と前記参照画像との入れ替えを行うと同時に、入れ替え後の前記参照画像における画素の取得順序である第２の方向を、前記第１の方向と逆の方向に設定する、画像処理装置。
【請求項２】
前記コスト最適化演算は、ＳＧＭ法による合成コスト値の算出により行われることを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記画素の取得順序はラスタスキャンであり、前記第１の方向は、画像の右下から左上に向かう方向であり、前記第２の方向は、画像の左上から右下に向かう方向であることを特徴とする、請求項１又は請求項２に記載の画像処理装置。
【請求項４】
前記視差出力部は、前記第２の方向に沿った画素順に視差を並べ替えて出力することを特徴とする、請求項１〜３いずれか１つに記載の画像処理装置。
【請求項５】
前記第１画像がＲ画像であり、前記第２画像がＬ画像であり、前記第１の視差を前記第２の視差よりも先に算出することを特徴とする、請求項１〜４いずれか１つに記載の画像処理装置。
【請求項６】
第１の撮像手段が被写体を撮像することにより得られる第１画像を基準画像、第２の撮像手段が前記被写体を撮像することにより得られる第２画像を参照画素とし、
前記参照画像における画素の取得順序を第１の方向に設定し、
前記参照画像である前記第２画像において、前記第１の方向で画素を取得しながら算出可能な経路を用いて、グローバル最適化によるコスト最適化演算を行って各画素の視差を決定し、
前記基準画像と前記参照画像とを入れ替えて、前記第１画像を参照画像、前記第２画像を基準画像とし、同時に、前記参照画像における画素の取得順序を、前記第１の方向と逆の方向である第２の方向に設定し、
前記参照画像である前記第１画像において、前記第２の方向で画素を取得しながら算出可能な経路を用いて、グローバル最適化によるコスト最適化演算を行って各画素の視差を決定し、
前記第１画像を基準画像として算出される第１の視差と、前記第２画像を基準画像として算出される第２の視差とを用いてクロスチェックを行い、算出された視差の妥当性を画素毎に判定し出力する、画像処理方法。
【請求項７】
前記コスト最適化演算は、ＳＧＭ法による合成コスト値の算出により行われることを特徴とする、請求項６に記載の画像処理方法。
【請求項８】
前記画素の取得順序はラスタスキャンであり、前記第１の方向は、画像の右下から左上に向かう方向であり、前記第２の方向は、画像の左上から右下に向かう方向であることを特徴とする、請求項６又は請求項７に記載の画像処理方法。
【請求項９】
前記第１画像がＲ画像であり、前記第２画像がＬ画像であることを特徴とする、請求項６〜８のいずれか１つに記載の画像処理方法。
【請求項１０】
前記第２の方向に沿った画素順に視差を並べ替えて出力することを特徴とする、請求項６〜９のいずれか１つに記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、画像処理装置、及び、画像処理方法に関する。
【背景技術】
【０００２】
水平に二つ並べられたカメラで同じ被写体を撮影すると、カメラ位置の違いから、撮影された二つの画像における被写体の位置は、水平方向にズレが生じる。両画像における被写体の位置の差を「視差（Disparity）」と呼ぶ。カメラから被写体までの距離は、視差の逆数に比例する。すなわち、視差は、遠いものほど小さく、近いものほど大きくなる。
【０００３】
従来、視差を求める手法として、ブロックマッチングが広く用いられている。ブロックマッチングは、二つのカメラで撮影されたそれぞれの画像から小領域（ブロック）を切り出し、両画像間で小領域の類似度（相関値）が最も大きくなる箇所を探索することで視差を求める。具体的には、片方のカメラで撮影された画像（例えば、左側に配置されたカメラで撮影された左画像）を基準とした場合、他方のカメラで撮影された画像（例えば、右側に配置されたカメラで撮影された右画像）において類似度を探索する範囲は、左画像における基準ブロックの座標と同じ座標から、最大視差（例えば１２８画素）だけ水平方向左側に離れた座標までの範囲のブロックとなる。
【０００４】
このブロックマッチングは、処理がシンプルであり、基本的に各点独立に視差を求めることができるので、高速な計算が可能である。しかし、テクスチャのない領域や、繰り返しパターンが存在する領域では、視差を正確に求めるのが困難であるという問題がある。
【０００５】
一方、近年、画像中の全画素の視差に対するコスト関数を定義し、その関数が最小となる視差の組み合わせを求める方式（グローバルマッチング）が提案されている。このグローバルマッチングでは、大域的な視差推定を行うため、テクスチャのない領域や、繰り返しパターンが存在する領域でも、視差をより正確に求めることができる。
【０００６】
しかしながら、グローバルマッチングでは、各画素について、ブロックマッチングと同様の手法で相関値を求めた後、隣接画素の計算結果を用いて自身の計算結果を最適化する。そして、画面全体の画素について、最適化演算された計算結果を集約し、視差を算出する。すなわち、ブロックマッチングに比べ、精度が向上する一方で、演算量や、計算結果を一時的に保持するためのメモリ量が、膨大になってしまうという問題がある。
【０００７】
更に、左右の画像を入れ替えて、右画像を基準画像として視差を算出し、左画像を基準画像として算出した視差との差分をチェックし、正しく視差が求められているか否かを画素毎にチェックする場合（以下、クロスチェックと示す）、グローバルマッチングを２回行う必要があるため、演算量や、計算結果を一時的に保持するためのメモリ量が、更に膨大になってしまうという問題がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第６１４２６１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本実施形態は、処理レートを向上させ、メモリの搭載量を低減することができる、画像処理装置、及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本実施形態の画像処理装置は、第１の撮像手段が被写体を撮像することにより得られる第１画像、及び、前記第１の撮像手段とは異なる位置の第２の撮像手段が前記被写体を撮像することにより得られる第２画像に基づき、視差を算出する画像処理装置であって、前記第１画像、または、前記第２画像のいずれか一方を基準画像、他方を参照画像と設定し、また、前記参照画像における画素の取得順序を第１の方向に設定する制御部を備える。また、前記参照画像において、前記制御部により設定された取得順序で画素を取得しながら算出可能な経路を用いて、グローバル最適化によるコスト最適化演算を行うコスト最適化演算部と、前記コスト最適化演算によって得られたコスト値を用いて各画素の視差を決定するコスト最小視差抽出部と、前記第１画像を基準画像として算出される第１の視差と、前記第２画像を基準画像として算出される第２の視差とを用いてクロスチェックを行い、算出された視差の妥当性を画素毎に判定し出力する視差出力部とも備える。更に、前記制御部は、前記基準画像と前記参照画像との入れ替えを行うと同時に、入れ替え後の前記参照画像における画素の取得順序である第２の方向を、前記第１の方向と逆の方向に設定する。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係わる画像処理装置１を含む、画像処理システムの構成の一例を示す概略ブロック図。
【図２】距離情報演算部１１の構成の一例を示すブロック図。
【図３】視差毎コスト値算出部１５の詳細な構成の一例を示すブロック図。
【図４】視差毎コスト値算出部１５におけるコスト値算出手順の一例を説明するフローチャート。
【図５】ＳＧＭ法におけるコストを算出する経路とスキャン方向との関係を説明する図。
【図６】コスト最適化演算部１６の詳細な構成の一例を示すブロック図。
【図７】視差出力部１９における、視差のクロスチェックの方法を説明する図。
【図８】本実施形態に係わる画像処理手順の一例を説明するフローチャート。
【図９】比較例の画像処理手順の一例を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照して実施形態を説明する。
【００１３】
図１は、本実施形態に係わる画像処理装置１を含む、画像処理システムの構成の一例を示す概略ブロック図である。画像処理システムは、画像マッチング処理装置（以下、画像処理装置と示す）１と、キャリブレーション装置２と、画像入力装置３と、これらを接続するバス４とから構成されている。図１は、２台のカメラによる左右視差画像を用いてステレオマッチング処理を行う画像処理システムについて例示している。
【００１４】
画像入力装置３には、図示しないカメラで撮像された複数の画像（例えば、左目に対応するカメラで撮像されたL画像５ｌと、右目に対応するカメラで撮像されたR画像５ｒの２枚の画像）が入力される。L画像５ｌとR画像５ｒとは、バス４を介してキャリブレーション装置２に入力される。
【００１５】
キャリブレーション装置２は、設定条件やレンズの個体差などに起因するカメラ内外の静的なズレを補正する。具体的には、格子状のパターンなど、大きさが既知の特定図形パターンを撮像した画像を用い、内部パラメータと外部パラメータとを事前に算出しておく。そして、画像入力装置３から入力されたL画像５ｌとR画像５ｒとのそれぞれを、内部パラメータと外部パラメータとを用いて変換することで、静的なズレを補正し、補正済L画像６ｌと補正済R画像６ｒとを生成する。なお、内部パラメータとは、焦点距離や画像主点位置、レンズ歪みなど、カメラの内部特性を示すものである。また、外部パラメータとは、カメラの三次元空間における回転・平行移動のパラメータであり、ステレオ画像においては、一方の画像を基準とした場合の他方の画像の回転・平行移動の度合を表すものである。補正済L画像６ｌと補正済R画像６ｒとは、バス４を介して画像処理装置１に入力される。
【００１６】
画像処理装置１は、補正後の画像（補正済L画像６ｌ、補正済R画像６ｒ）を用いてステレオマッチングを行い、距離画像（カメラから被写体までの距離を示す画像）７を生成する。図１の画像処理装置１は、プロセッサ１ａと、L画像用ラインバッファ（以下、Lラインバッファと示す）１２と、R画像用ラインバッファ（以下、Rラインバッファと示す）１３とを有している。
【００１７】
Lラインバッファ１２は、補正済L画像６ｌにおいて、視差計算対象画素位置のラインを含む、複数ライン分の画素データを格納するバッファである。Rラインバッファ１３は、補正済R画像６ｒにおいて、視差計算対象画素位置のラインを含む、複数のライン分の画素データを格納するバッファである。
【００１８】
プロセッサ１ａは、距離情報演算部１１を含む。距離情報演算部１１は、グラフカット法などのグローバルマッチングや、ＳＧＭ法（Semi-Global Matching法）などを用い、基準画像の画素ごとに視差を算出して視差画像として出力する。また、基準画像を左右入れ替えて、クロスチェックも行う。すなわち、距離情報演算部１１における各処理は、プロセッサ１ａによって実行される。
【００１９】
図２は、距離情報演算部１１の構成の一例を示すブロック図である。距離情報演算部１１は、入力画像取得部１４と、視差毎コスト値算出部１５と、コスト最適化演算部１６と、コスト最小視差抽出部１７と、クロスチェックバッファ１８と、視差出力部１９と、制御部２０とを有する。
【００２０】
入力画像取得部１４は、制御部２０からの指示に従って、Lラインバッファ１２、及び、Rラインバッファ１３から、基準画像の各画素、及び、参照画像の各画素を取得する。各画素の取得に際し、L画像／R画像のどちらが基準画像か、また、各画像における画素の取得順序（ラスタスキャンの方向）が、制御部２０から指示される。
【００２１】
視差毎コスト値算出部１５は、参照画像において、視差計算対象画素におけるコスト値算出画素領域を設定し、当該領域におけるコスト値を算出する。コスト値算出画素領域は、水平方向の最大視差の大きさを有する。以下の説明において、入力画像における水平方向の画素位置を表す座標をX座標、垂直方向の画素位置を表す座標をY座標とする。例えば、基準画像がL画像、視差計算対象画素の位置が(X, Y)=(150, 25)、水平方向の最大視差が１２８画素である場合、コスト値算出画素領域は、(X, Y)= (150, 25)〜(23, 25)の範囲の画素となる。
【００２２】
図３は、視差毎コスト値算出部１５の詳細な構成の一例を示すブロック図である。視差毎コスト値算出部１５は、特徴量演算部１４１と、コスト演算部１４２と、コストバッファ１４３とを有する。
【００２３】
特徴量演算部１４１は、基準画像が格納されているラインバッファから取得する視差計算対象画素の画素データ、及び、参照画像が格納されているラインバッファから取得するコスト値算出画素領域内の画素データの特徴量を、それぞれ算出する。例えば、ＬＢＰ（Local Binary Pattern）など、既存の定量化した特徴量を算出する。特徴量としてＬＢＰを算出する場合、特徴量算出対象画素（中心画素）と、周辺画素との輝度値を比較する。当該周辺画素の中心画素の輝度値より周辺画素の輝度値のほうが大きければ“１”、中心画素の輝度値より周辺画素の輝度値のほうが小さければ“０”ビットを付与する。そして、周辺画素のビットを所定の順序で結合し、特徴量算出対象画素の特徴量（ＬＢＰ符号）とする。なお、周辺画素に付与するビットは、中心画素の輝度値より周辺画素の輝度値のほうが大きければ“０”、中心画素の輝度値より周辺画素の輝度値のほうが小さければ“１”としてもよい。
【００２４】
コスト演算部１４２は、基準画像における視差計算対象画素に関する特徴量と、参照画像におけるコスト値算出画素領域内の各画素に関する特徴量とを比較し、視差ごとのコスト値を算出する。例えば、特徴量としてＬＢＰ符号を算出した場合、基準画像と参照画像のＬＢＰ符号間のハミング距離を算出し、コスト値とする。
【００２５】
コストバッファ１４３は、コスト演算部１４２で算出されたコスト値を、参照画像における画素位置と対応付けて格納する。
【００２６】
図４は、視差毎コスト値算出部１５におけるコスト値算出手順の一例を説明するフローチャートである。なお、コスト値算出に先立ち、基準画像において視差計算対象画素がセットされており、コスト値算出に必要な特徴量が算出されているものとする。距離画像７を作成するためには、基準画像の全画素について視差を算出する必要がある。通常は、基準画像の左上に位置する画素から右下に位置する画素まで、ラスタスキャンの順に視差計算対象画素位置を順次セットし、各画素位置での視差を算出していく。
【００２７】
まず、コスト値算出対象領域を特定し、水平方向の最大視差数Dnumを設定する（Ｓ１）。例えば、上述の一例の場合、Dnum＝１２８と設定する。また、最初のコスト値算出対象画素位置（探索画素位置）を設定する。最初のコスト値算出対象画素位置は、コスト値算出対象領域の左端部に位置する画素である。例えば、上述の一例の場合、最初のコスト値算出対象画素位置は(X, Y)=(23, 25)と設定される。
【００２８】
次に、コスト算出対象の水平方向の画素位置を、初期状態(D＝０)にセットする（Ｓ２）。続いて、コスト演算部１４２において、探索画素位置におけるコスト値を算出し、コストバッファ１４３に格納する（Ｓ３）。続いて、探索画素位置の水平方向の画素位置（D）を１増加させ、探索画素位置を隣の画素に移動させる（Ｓ４）。
【００２９】
探索画素位置がコスト値算出対象領域に含まれる場合（Ｓ５、Ｎｏ）、Ｓ３に戻って当該画素位置におけるコスト値を算出する。一方、移動後の探索対象画素位置がコスト値算出対象領域に含まれない場合（Ｓ５、Ｙｅｓ）、コスト値算出対象領域内の全ての画素についてコスト値の算出が終了したと判定され、視差毎コスト値算出部１５における一連のコスト値算出手順を終了する。
【００３０】
なお、視差毎コスト値算出部１５におけるコスト値の算出方法は、上述した図４のフローチャートの手順に限定されず、コスト値算出対象領域内のすべての画素のコスト値を漏れなく算出できる手順であればよい。例えば、コスト値算出対象領域を複数のブロックに分割し、各ブロックにおけるコスト値の算出を並列処理してもよい。
【００３１】
なお、視差毎コスト値算出部１５におけるコスト値の算出方法は、上述したＬＢＰ符号のハミング距離に限定されず、SAD関数など、既存の定量化したコスト関数を用いてもよい。SAD関数など画素データから特徴量を算出せずに直接コストを算出することが可能な方法を用いる場合、基準画像が格納されているラインバッファから取得する視差計算対象画素の画素データ、及び、参照画像が格納されているラインバッファから取得するコスト値算出画素領域内の画素データをコスト演算部１４２に直接入力してコスト値を算出することができるため、特徴量演算部１４１は省略することができる。
【００３２】
コスト最適化演算部１６は、グラフカット法などのグローバルマッチングやＳＧＭ法（Semi-Global Matching法）などによって合成非類似度である合成コスト値Sを算出することで、基準画像の画素ごとに最適化された視差を導出する。
【００３３】
ここで、ＳＧＭ法による合成コスト値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)に、ｒ方向の所定経路上における１画素前のコストの値が選択されて加算される漸化式となっているので、最適化が行われる。
【００３６】
（１）式に示すコスト計算を、複数の方向（例えば、８方向）から行うことで、近似的に全体最適化を行う。すなわち、各方向のコストLr(p, d)の総和として、合成コスト値Sを算出する。
【００３７】
図５は、ＳＧＭ法におけるコストを算出する経路とスキャン方向との関係を説明する図である。図５において、網掛けで示す画素は、現在のコスト値算出対象画素を示している。また、図５において、矢印付き太線は、コストを算出する経路と方向とを示している。更に、図５において、矢印付き点線は、参照画像における画素のスキャン方向を示している。
【００３８】
水平左方向、垂直上方向、右上４５度方向、左上４５度方向から集約する４方向に沿った４つの経路のコストは、左、及び、上方向に位置する画素の結果を参照しながら算出する必要がある。従って、図５（ａ）に示すように、参照画像の左上に位置する画素から右下に位置する画素までラスタスキャンしながら算出する。
【００３９】
また、水平右方向、垂直下方向、右下４５度方向、左下４５度方向から集約する４方向のベクトルに沿った４つの経路のコストは、右、及び、下方向に位置する画素の結果を参照しながら算出する必要がある。従って、図５（ｂ）に示すように、参照画像の右下に位置する画素から左上に位置する画素までラスタスキャンしながら算出する。
【００４０】
すなわち、コスト計算を８方向から行う場合、方向を変えて２回ラスタスキャンする必要がある。ラスタスキャンを２回行うため、まず、１回目のラスタスキャンの間に算出した４方向のコストを記憶装置などに一時的に格納しておく。そして、２回目のラスタスキャン終了後に、記憶装置などから格納されている４方向のコストを読み出して、２回目のラスタスキャンによって算出した４方向のコストと合わせ、合成コスト値Sを得る。
【００４１】
図６は、コスト最適化演算部１６の詳細な構成の一例を示すブロック図である。コスト最適化演算部１６は、コスト更新値演算部１６１と、コストバッファ１６２とを有する。コスト更新値演算部１６１は、視差毎コスト値算出部１５から入力されたコスト値、図示しない記憶部などから入力される所定のペナルティ定数P1、P2、及び、コストバッファ１６２に格納されている隣接画素のコストを用い、上述した（１）式の演算を行ってコストを算出する。演算結果は、コストバッファ１６２に格納され、コスト更新値演算部１６１でのコスト算出に再帰的に使用される。
【００４２】
なお、コスト最適化演算部１６は、一般的に、特定の一つの経路におけるコスト算出に用いられる。従って、距離情報演算部１１には、合成コスト値Sを算出するために設定された経路の数と同数のコスト最適化演算部１６が設置される。
【００４３】
また、コスト最適化演算部１６における合成コスト値Sの算出方法は、上述したグラフカット法などのグローバルマッチングやＳＧＭ法に限定されず、既存の他の手法を用いてもよい。
【００４４】
コスト最小視差抽出部１７は、コスト最適化演算部１６で算出された合成コスト値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となる。算出した差分の絶対値と、予め設定した閾値とを比較し、閾値より小さい場合、正しく視差が求められていると判定する。
【００４７】
なお、視差出力部１９におけるクロスチェックの方法は、Ｌ画像を基準画像とした場合の視差と、Ｒ画像を基準画像とした場合の視差の比較を行い、視差が正しく求められているか否かを判定すればよく、上述した方法に限定されない。例えば、各座標から視差を引く方法（式）や、閾値との比較による正否判定は、他の方法を用いてもよい。
【００４８】
視差出力部１９は、視差、及び、チェック結果を出力する。なお、視差とチェック結果とは個別に出力してもよいし、正しく視差が求められていない画素については、算出された視差を特定の値（例えば、−1）で置き換えるなどして、視差にチェック結果を含めて出力してもよい。なお、クロスチェックを行わない場合には、コスト最小視差抽出部１７で抽出された視差をそのまま出力する。
【００４９】
更に、視差出力部１９は、画像の左上の画素から右下の画素に向かってラスタスキャン順に視差が出力されるよう、出力順序の制御やアドレスの計算も行う。
【００５０】
制御部２０は、入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７、の各部に対し、基準画像の設定と、各画像おける画素のスキャン方向の指示を行う。
【００５１】
次に、本実施形態の画像処理装置における、視差算出手順について説明する。図８は、本実施形態に係わる画像処理手順の一例を説明するフローチャートである。図８は、L画像を基準画像とする視差を出力する場合において、R画像を基準画像として算出した視差を用いてクロスチェックを１回行う際の手順を示している。
【００５２】
まず、制御部２０は、入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７の各部に対し、基準画像としてR画像をセットする（Ｓ１１）。通常は、まず、視差を出力する画像とは逆の画像を基準画像として視差を算出する。従って、上述の場合、まずはR画像を基準画像として視差を算出する。なお、R画像を基準画像とする視差を出力したい場合、S１においてはL画像を基準画像としてセットする。
【００５３】
次に、制御部２０は、入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７の各部に対し、右下から左上方向に向かって画素をスキャンするよう、スキャン方向をセットする（Ｓ１２）。
【００５４】
続いて、入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７は、R画像を基準画像とし、参照画像であるL画像を右下から左上方向に向かってスキャンしながら視差を算出する（Ｓ１３）。この時、コスト最適化演算部１６は、右下から左上方向に向かって画素をスキャンしながら算出可能な経路についてのみ、コストを算出する。すなわち、水平右方向、垂直下方向、右下４５度方向、左下４５度方向から集約する４方向のベクトルに沿った４つの経路のコストを算出し、これら４つの経路のコストを用いて合成コスト値Sを算出する。
【００５５】
基準画像の全画素について、合成コスト値Sが最小となる視差が抽出され、クロスチェックバッファ１８に格納されると、制御部２０は、基準画像の入れ替えと、画素のスキャン方向の入れ替えとを指示する。具体的には、まず、入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７の各部に対し、基準画像としてL画像をセットする（Ｓ１４）。同時に、入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７の各部に対し、左上から右下方向に向かって画素をスキャンするよう、スキャン方向をセットする（Ｓ１５）。
【００５６】
入力画像取得部１４、視差毎コスト値算出部１５、コスト最適化演算部１６、コスト最小視差抽出部１７は、L画像を基準画像とし、参照画像であるR画像を左上から右下方向に向かってスキャンしながら視差を算出する（Ｓ１６）。この時、コスト最適化演算部１６は、左上から右下方向に向かって画素をスキャンしながら算出可能な経路についてのみ、コストを算出する。すなわち、水平左方向、垂直上方向、右上４５度方向、左上４５度方向から集約する４方向のベクトルに沿った４つの経路のコストを算出し、これら４つの経路のコストを用いて合成コスト値Sを算出する。
【００５７】
続いて、視差出力部１９は、クロスチェックバッファ１８に格納されているR画像を基準画像とした各画素の視差と、L画像を基準画像とした各画素の視差との差分をチェックし、正しく視差が求められているか否かを画素毎にチェックする（Ｓ１７）。
【００５８】
最後に、視差出力部１９は、L画像を基準画像とした各画素の視差にチェック結果を反映させ、正しく視差が求められていないと判定された画素については、算出された視差を特定の値（例えば、−1）で置き換えて出力する。正しく視差が求められていると判定された画素については、算出された視差をそのまま出力する。なお、チェック結果に応じた視差の置き換えは行わず、視差とチェック結果とを個別に出力してもよい。
【００５９】
このように、本実施形態によれば、ＳＧＭ法（Semi-Global Matching法）などを用いて視差を算出し、かつ、クロスチェックする場合において、基準画像の入れ替えを行う際に、画像における画素の取得順序（スキャン方向）の入れ替えも行う。そして、各基準画像において、合成コスト値Sを算出するための経路は、スキャン方向に対応した経路についてのみコストを求める。
【００６０】
比較例では、図９に示すように、ひとつの基準画像につき方向を変えて２回のスキャンを行っていたため、合計で４回スキャンを行う必要があった。図９は、比較例の画像処理手順の一例を説明するフローチャートである。すなわち、基準画像としてR画像をセットした後（Ｓ２１）、参照画像であるL画像を左上から右下方向に向かって画素をスキャンしながら、算出可能な経路について、コストを算出する（Ｓ２２）。算出したコストは、記憶装置などに一時的に格納しておく。続いて、L画像を右下から左上方向に向かって画素をスキャンしながら、算出可能な経路について、コストを算出する（Ｓ２３）。そして、Ｓ２２で算出し格納しておいたコストとあわせて、各画像のコスト最小視差を算出する（Ｓ２４）。
【００６１】
次に、基準画像としてL画像をセットした後（Ｓ２５）、参照画像であるR画像を右下から左上方向に向かって画素をスキャンしながら、算出可能な経路について、コストを算出する（Ｓ２６）。算出したコストは、記憶装置などに一時的に格納しておく。続いて、R画像を左上から右下方向に向かって画素をスキャンしながら、算出可能な経路について、コストを算出する（Ｓ２７）。そして、Ｓ２６で算出し格納しておいたコストとあわせて、各画像のコスト最小視差を算出する（Ｓ２８）。最後に、Ｓ２４で算出した視差と、Ｓ２８で算出した視差とのクロスチェックを実施し（Ｓ２９）、チェック結果を出力する（Ｓ３０）。
【００６２】
これに対し、本実施形態においては、ひとつの基準画像につき１回のスキャンでよいため、スキャン回数を半減することができ、処理レートを向上させることができる。
【００６３】
また、比較例では、ひとつの基準画像につきスキャン方向を変えて２回のスキャンを行うため、１回目のラスタスキャンの間に算出した４方向のコストを記憶装置などに一時的に格納しておく必要があった。これに対し、本実施形態においては、ひとつの基準画像につきスキャン方向を１方向とすることで、コストを一時的に記憶装置に格納する必要がなくなるため、メモリの搭載量を低減することができる。
【００６４】
更に、本実施形態においては、一方を基準画像とした場合には上・右方向から集約する経路のコストを求め、他方を基準画像とした場合には下・左方向から集約する経路のコストを求めている。従って、クロスチェックには、上下左右全方向からの経路のコストが反映されているため、比較例と同等の正確性を維持することができる。
【００６５】
なお、上述では、クロスチェックを行う場合についてのみ示しているが、クロスチェックを行うモードと、クロスチェックを行わないモードとを、外部からの入力などにより選択可能にしてもよい。クロスチェックを行わないモードが選択された場合、合成コスト値Sを算出する経路について、方向の偏りをなくすことが望ましい。従って、制御部２０は、コスト最適化演算部１６に対し、スキャン方向を変えて２回スキャンを行い、例えば、水平右方向、水平左方向、垂直上方向、垂直下方向、右上４５度方向、右下４５度方向、左下４５度方向、左上４５度方向から集約する８方向のベクトルに沿った８つの経路についてコストを取得するよう指示することが望ましい。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、一例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１…画像処理装置、２…キャリブレーション装置、３…画像入力装置、４…バス、５ｌ…L画像、５ｒ…R画像、６ｌ…補正済L画像、６ｒ…補正済R画像、７…距離画像、１１…距離情報演算部、１２…Lラインバッファ、１３…Rラインバッファ、１４…入力画像取得部、１５…視差毎コスト値算出部、１６…コスト最適化演算部、１７…コスト最小視差抽出部、１８…クロスチェックバッファ、１９…視差出力部、１４１…特徴量演算部、１４２…コスト演算部、１４３、１６２…コストバッファ、１６１…コスト更新値演算部、
【図１】
2019159708.tif 000003
【図２】
2019159708.tif 000004
【図３】
2019159708.tif 000005
【図４】
2019159708.tif 000006
【図５】
2019159708.tif 000007
【図６】
2019159708.tif 000008
【図７】
2019159708.tif 000009
【図８】
2019159708.tif 000010
【図９】
2019159708.tif 000011