(57)【要約】【課題】視差演算の精度を維持しつつ処理負荷を削減する。【解決手段】Ｓ２１０では、撮像画像対（以下、第３画像対）から、より低解像度の第１画像対、第２画像対を生成する。Ｓ２２０では、第１〜第３画像対の一つを選択画像対として選択する。Ｓ２３０では、第１最適化処理として、視差演算に必要な節点コストの生成および節点コストに対する右方向、左方向、下方向の補正処理を実行する。Ｓ２４０では、選択画像対が指定画像対であるか否かを判断し、指定画像対である場合だけ、Ｓ２５０にて、第２最適化処理として、節点コストに対する上方向の補正処理を実行する。【選択図】図８
2018159590.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる視点から同一撮影領域を含むように撮像された一対の画像を基本画像対とし、前記基本画像対から生成された前記基本画像対とは解像度が異なる一対以上の画像対を、前記基本画像対とともに画像対群として記憶するように構成された記憶部（４２２）と、
前記記憶部に記憶された画像対群に基づいて視差画像を生成するように構成された処理部（４１，４２１）と、
を備え、
前記処理部は、
前記画像対群から、解像度が低い順にいずれか一つの画像対を選択するように構成された選択部（Ｓ２２０）と、
前記選択部にて選択された画像対である選択画像対を構成する二つの画像のうち、一方を基準画像、他方を比較画像とし、前記基準画像内での画素の２次元位置と、前記選択画像対の画素サイズ単位で表現された視差とで表現される３次元点を節点とし、前記節点を一意に表現し、且つ、前記基準画像の画像サイズおよび検出対象となる前記視差の最大値で制限された３次元空間を節点空間として、前記節点空間に属する節点の一つを注目節点として、前記注目節点に対応する前記基準画像上の画素と前記注目節点に対応する視差だけ離れた前記比較画像上の画素との類似度が高いほど値が小さくなるように算出される節点コストを、前記節点空間に属する全ての節点について生成するように構成されたコスト生成部（Ｓ３２０）と、
予め設定された補正ベクトルが示す方向に沿って並んだ前記節点空間内の画素列を対象画素列とし、前記コスト生成部にて生成され前記対象画素列に関わる前記複数の節点の節点コストを、ビタビアルゴリズム利用した補正処理により補正するように構成されたコスト補正部（Ｓ３３０〜Ｓ３９０、Ｓ５２０〜Ｓ５５０）と、
前記選択部にて最後に選択される前記選択画像対を最終画像対、前記最終画像対以外の前記選択画像対を非最終画像対として、前記選択画像対が前記非最終画像対である場合に前記コスト補正部での補正結果から、前記選択部にて次に選択される選択画像対に対して前記コスト補正部が実施する前記補正処理での探査範囲を制限するように構成された制限部（Ｓ４１０）と、
前記選択画像対が前記最終画像対である場合に、前記コスト生成部および前記コスト補正部での処理結果から、前記画素毎に前記節点コストが最小となる前記節点に対応した視差を算出するように構成された視差演算部（Ｓ２７０）と、
を備え、
前記コスト補正部は、前記選択画像対を構成する画素の位置をＸ−Ｙ座標で表した場合に、前記補正処理として、前記Ｘ−Ｙ座標のＸ軸の正方向を前記補正ベクトル示す方向とする右向処理（Ｓ３３０）と、前記Ｘ軸の負方向を前記補正ベクトルが示す方向とする左向処理（Ｓ３４０）と、前記Ｘ−Ｙ座標のＹ軸の正方向を前記補正ベクトルが示す方向とする下向処理（Ｓ３６０）とを実行し、前記画像対群のうち予め指定されたいずれか一つの画像対である指定画像対が前記選択画像対である場合には、前記Ｙ軸の負方向を前記補正ベクトルが示す方向とする上向処理（Ｓ５２０）を更に実行する、
視差演算装置。
【請求項２】
請求項１に記載の視差演算装置であって、
前記コスト生成部は、前記記憶部から前記選択画像対の画像を、前記Ｘ軸の正方向に並んだ１又は複数行分の画像を取得し、取得した前記画像の処理を終了する毎に、前記Ｙ軸の正方向に順次移動して未処理の画像を順次取得する、視差演算装置。
【請求項３】
請求項１または請求項２に記載の視差演算装置であって、
前記指定画像対が前記最終画像対である、
視差演算装置。
【請求項４】
請求項１から請求項３のいずれか１項に記載の視差演算装置であって、
前記コスト処理部が実行する前記補正処理は、前記対象画素列中で前記補正ベクトルの始端側に位置する画素に関する複数の節点のいずれかを開始節点とし、前記対象画素列に含まれる全ての画素に関する複数の節点のいずれかを終了節点として、前記開始節点から前記終了節点に至る全ての経路の中で、前記経路上に位置する全ての前記節点の節点コストと、前記経路上で隣接する前記節点間の視差の差が大きいほど大きな値となる視差コストとの総和である経路コストが最小となる経路である最小コスト経路を前記ビタビアルゴリズムにより求め、前記最小コスト経路の経路コストを前記終了節点の節点コストの補正値として求める、
視差演算装置。
【請求項５】
請求項１から請求項４のいずれか１項に記載の視差演算装置であって、
前記コスト補正部は、前記補正処理として、更に、前記Ｘ軸の正方向かつ前記Ｙ軸の正方向へ向かう斜め方向を前記補正ベクトルが示す方向とする右下向処理（Ｓ３７０）と、前記Ｘ軸の負方向かつ前記Ｙ軸の正方向へ向かう斜め方向を前記補正ベクトルが示す方向とする左下向処理（Ｓ３８０）とを実行する、
視差演算装置。
【請求項６】
請求項１から請求項５のいずれか１項に記載の視差演算装置であって、
前記コスト補正部は、前記指定画像対が前記選択画像対である場合、前記補正処理として、更に、前記Ｘ軸の正方向かつ前記Ｙ軸の負方向へ向かう斜め方向を前記補正ベクトルが示す方向とする右上向処理（Ｓ５４０）と、前記Ｘ軸の負方向かつ前記Ｙ軸の負方向へ向かう斜め方向を前記補正ベクトルが示す方向とする左上向処理（Ｓ５３０）とを実行する、
視差演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、視点の異なる二つの画像から視差を演算する技術に関する。
【背景技術】
【０００２】
特許文献１には、視点の異なる二つの画像を用い、画像上の各画素における視差を求める技術が開示されている。視差を求めるには、各画像からそれぞれ選択された二つの画素同士がどの程度類似しているかを表す類似コストを求める。更に、ある方向に並んだ画素列に着目し、隣接する画素の情報を利用して類似コストを補正する。この補正には、いわゆるビタビアルゴリズムが用いられる。ビタビアルゴリズムを用いた補正の結果は、適用する方向によって異なったものとなるため、少なくとも左方向、右方向、上方向、下方向の４方向について実施する。これらの補正結果を用いて画素毎に視差を特定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１１４２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、取得した画像から解像度の異なる複数の画像からなる階層画像を生成し、この階層画像に対して解像度の低い画像から順番に同様の処理を施し、低解像度の画像で得られた情報を順次利用することで、処理を効率化する技術も知られている。ここでは、低解像度での処理結果を用いて、ビタビアルゴリズムにおける視差の探査範囲を限定することが考えられる。
【０００５】
しかしながら、本発明者の詳細な検討の結果、階層画像を利用した場合、解像度の異なる各画像毎に類似コストの生成、補正を実施することになるため、膨大な処理量が必要となるという課題を見出した。
【０００６】
また、一般に、処理を実行するプロセッサが高速アクセスすることのできる内部メモリの容量は限られており、処理の対象となる画像は、アクセス速度に劣る外部メモリに格納される。そして、内部メモリに格納できる分だけ外部メモリから画像の一部を読み込みんで、その処理が終了すると、処理結果を外部メモリに格納し、次の画像の一部に対する処理を繰り返すことになる。そして、画像の上方の行から順にデータ読み込んで処理を実行する場合、下方向の補正処理は、順次読み込まれるデータに基づいて、右方向および左方向の補正処理と共に、並列に処理を実行することができる。しかし、上方向の補正処理は、画像の下方の行から順にデータを読み込む必要があり、右方向、左方向、下方向の補正処理が終了してから、別途、あらためて実行する必要がある。その結果、外部メモリに対するアクセス量が増大するため、より処理負荷が増大するという課題もあった。
【０００７】
本開示は、視差演算の精度を維持しつつ処理負荷を削減する技術を提供する。
【課題を解決するための手段】
【０００８】
本開示の一態様による視差演算装置は、記憶部（４２２）と、処理部（４１，４２１）と、を備える。
記憶部は、互いに異なる視点から同一撮影領域を含むように撮像された一対の画像を基本画像対とし、基本画像対から生成された基本画像対とは解像度が異なる一対以上の画像対を、基本画像対とともに画像対群として記憶する。
【０００９】
処理部は、記憶部に記憶された画像対群に基づいて視差画像を生成する。なお、処理部は、選択部（Ｓ２２０）と、コスト生成部（Ｓ３２０）と、コスト補正部（Ｓ３３０〜Ｓ３９０，Ｓ５２０〜Ｓ５５０）と、制限部（Ｓ４１０）と、視差生成部（Ｓ２７０）と、を備える。
【００１０】
選択部は、画像対群から、解像度が低い順にいずれか一つの画像対を選択する。
コスト生成部は、選択部にて選択された画像対である選択画像対を構成する二つの画像のうち、一方を基準画像、他方を比較画像とし、節点空間に属する節点の一つを注目節点として、注目節点に対応する基準画像上の画素と前記注目節点に対応する視差だけ離れた比較画像上の画素との類似度が高いほど値が小さくなるように算出される節点コストを、節点空間に属する全ての節点について生成する。但し、節点は、基準画像内での画素の２次元位置と、選択画像対の画素サイズ単位で表現された視差とで表現される３次元点である。節点空間は、節点を一意に表現し、且つ、基準画像の画像サイズおよび検出対象となる視差の最大値で制限された３次元空間である。
【００１１】
コスト補正部は、予め設定された補正ベクトルが示す方向に沿って並んだ節点空間内の画素列を対象画素列とし、コスト生成部にて生成され対象画素列に関わる複数の節点の節点コストを、ビタビアルゴリズム利用した補正処理により補正する。
【００１２】
制限部は、選択部にて最後に選択される選択画像対を最終画像対、最終画像対以外の選択画像対を非最終画像対として、選択画像対が非最終画像対である場合にコスト補正部での補正結果から、選択部にて次に選択される選択画像対に対してコスト補正部が実施する補正処理での探査範囲を制限する。
【００１３】
視差生成部は、選択画像対が最終画像対である場合に、コスト生成部およびコスト補正部での処理結果から、画素毎に節点コストが最小となる節点に対応した視差を算出する。
ただし、コスト補正部は、選択画像対を構成する画素の位置をＸ−Ｙ座標で表した場合、補正処理として、Ｘ−Ｙ座標のＸ軸の正方向を補正ベクトル示す方向とする右向処理（Ｓ３３０）と、Ｘ軸の負方向を補正ベクトルが示す方向とする左向処理（Ｓ３４０）と、Ｘ−Ｙ座標のＹ軸の正方向を補正ベクトルが示す方向とする下向処理（Ｓ３６０）とを実行し、画像対群のうち予め指定されたいずれか一つの画像対である指定画像対が選択画像対である場合には、Ｙ軸の負方向を補正ベクトルが示す方向とする上向処理（Ｓ５２０）を更に実行する。
【００１４】
上述の構成によれば、他の補正処理とは並列に実行することができず、処理時間を大きく増大させる要因である上向処理を、全ての画像対に施すのではなく、一つの画像対にだけ施している。このため、視差画像の精度を低下させることなく、処理負荷を削減することができる。
【００１５】
なお、本開示の構成は、発明者らが鋭意実験を重ねた結果として得られた以下の知見に基づくものである。即ち、発明者らは、全ての画像対に対する補正処理において上向処理を省略した場合、視差画像の精度が大きく低下するが、少なくとも一つの画像対に対して上向処理を施した場合、全ての画像対に対して上向処理を施した場合と比較して、大きな精度低下が見られないことを見出した。
【００１６】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１７】
【図１】測距装置の構成を示すブロック図である。
【図２】節点の配置に経路コストの計算に関する説明図である。
【図３】節点空間ＮＰＳと補正ベクトルＶ+X，Ｖ-Xと節点平面ＰＸとの関係を示す説明図である。
【図４】節点空間ＮＰＳと補正ベクトルＶ+Y，Ｖ-Yと節点平面ＰＹとの関係を示す説明図である。
【図５】節点空間ＮＰＳと補正ベクトルＶ+X+Y，Ｖ-X-Yと節点平面ＰXYとの関係を示す説明図である。
【図６】節点空間ＮＰＳと補正ベクトルＶ+X-Y，Ｖ-X+Yと節点平面Ｐ-XYとの関係を示す説明図である。
【図７】距離演算処理のフローチャートである。
【図８】視差演算処理のフローチャートである。
【図９】解像度が互いに異なる複数の画像を示す図である。
【図１０】第１最適化処理のフローチャートである。
【図１１】第１最適化処理での処理概要を示す説明図である。
【図１２】第２最適化処理のフローチャートである。
【図１３】下向処理の有無による効果の違いを示す距離画像である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら、本開示の実施形態を説明する。
［１．構成］
本実施形態の測距装置１は、同じ場所を同時に撮影した複数の撮像画像の視差を検出することによって撮像画像中の各点までの距離を検出する装置である。特に、測距装置１では、一対の撮像画像の各画素間の類似度を表すコストを求め、求めたコストに対して動的計画法であるビタビアルゴリズムを適用することでコストを補正する。そして補正されたコストが最小となる視差を画素間の視差として求める。
【００１９】
測距装置１は、車両に搭載され、図１に示すように、一対の撮像部２，３と、画像処理部４とを備える。以下、測距装置１が搭載された車両を自車両という。
一対の撮像部２，３は、いずれも、自車両の進行方向の風景が撮像範囲内となる周知のカメラとして構成されている。一対の撮像部２，３は、互いの光軸が水平方向に所定の距離だけ離れ且つ平行となるように配置され、いわゆるステレオカメラを構成する。一対の撮像部２，３は、予め決まった時間で周期的に同時に撮像を行い、その撮像画像を画像処理部４へ出力する。
【００２０】
画像処理部４は、ＣＰＵ４１と、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリ（以下、メモリ４２）と、を有する周知のマイクロコンピュータを中心に構成される。画像処理部４の各種機能は、ＣＰＵ４１が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、メモリ４２が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムが実行されることで、プログラムに対応する方法が実行される。なお、画像処理部４を構成するマイクロコンピュータの数は１つでも複数でもよい。
【００２１】
画像処理部４は、ＣＰＵ４１がプログラムを実行することで距離演算処理を少なくとも実現する。画像処理部４が有する機能を実現する手法はソフトウェアに限るものではなく、その一部又は全部の要素について、一つあるいは複数のハードウェアを用いて実現してもよい。例えば、上記機能がハードウェアである電子回路によって実現される場合、その電子回路は多数の論理回路を含むデジタル回路、又はアナログ回路、あるいはこれらの組合せによって実現してもよい。
【００２２】
メモリ４２は、内部メモリ４２１と、外部メモリ４２２とを含む。内部メモリ４２１は、ＣＰＵ４１からの高速にアクセスすることができる比較的小容量のメモリである。内部メモリ４２１には、実行中のプログラムの処理対象となるデータ等が格納される。外部メモリ４２２は、内部メモリ４２１と比較して大容量のメモリであり、ＣＰＵ４１からのアクセスが内部メモリ４２１と比較して低速となる。外部メモリ４２２には、一対の撮像部２，３から取得される撮像画像のほか、後述する距離演算処理にて距離画像を生成する過程で生成される各種データが格納される。
【００２３】
［２．原理］
画像処理部４が実行する処理を説明する前に、距離画像の生成に必要な視差の算出に関わる節点ＮＰ、節点空間ＮＰＳ、節点コストＤ（ｐ，ｕｐ）、節点コストＤ（ｐ，ｕｐ）の補正について説明する。以下では、処理対象となる一対の画像（以下、画像対）のうち、一方の画像を基準画像、他方の画像を比較画像とよぶ。
【００２４】
［２−１．節点および節点空間］
節点空間ＮＰＳとは、図２〜６に示すように、基準画像の画素（即ち、ピクセル）の位置を表すＸ軸およびＹ軸と、基準画像上の画素と比較画像上の画素との視差を表すＺ軸とで表現される３次元空間である。節点空間ＮＰＳは、画素の大きさを単位とする離散的な値をとる。この節点空間ＮＰＳ内の各点（ｘ，ｙ，ｚ）が節点ＮＰである。各節点ＮＰは、基準画像上の画素（ｘ，ｙ）と、画素（ｘ，ｙ）に対して視差ｚを有する比較画像上の画素との対応関係を示す。
【００２５】
節点空間ＮＰＳを表現する座標において、Ｘ軸、Ｙ軸は、図２に示すように、基準画像および比較画像の画像面の左上隅を原点として、Ｘ軸の正方向が右向きとなり、Ｙ軸の正方向が下向きとなるように設定される。以下では、Ｘ軸の正方向を右方向、Ｘ軸の負方向を左方向、Ｙ軸の正方向を下方向、Ｙ軸の負方向を上方向という。
【００２６】
節点空間ＮＰＳのＸ軸およびＹ軸のサイズは、基準画像や比較画像を構成する画素数によって決まる。節点空間ＮＰＳのＺ軸のサイズは、検知対象とする視差の範囲によって決まる。
【００２７】
［２−２．節点コスト］
節点コストＤ（ｐ，ｕｐ）は、節点ＮＰ毎に求められ、ｐで特定される基本画像上の画素と、ｐから視差ｕｐだけ離れた比較画像上の画素との類似度を表す。節点コストＤ（ｐ，ｕｐ）は、両画素の類似度が高いほど小さな値をとるように設定される。ｐは、節点ＮＰが属する画素の位置を表すＸ−Ｙ座標（ｘ，ｙ）に対応し、ｕｐは視差、すなわち節点ＮＰのＺ座標（ｚ）に対応する。節点コストＤ（ｐ，ｕｐ）は、例えば、ＳＳＩＭを用いて求める。ＳＳＩＭは、Structual Similarityの略である。ＳＳＩＭは公知の手法であるため、ここでの説明は省略する。
【００２８】
［２−３．節点コストの補正］
節点コストＤ（ｐ，ｕｐ）に対する補正（以下、補正処理）は、予め決められた複数種類の補正ベクトルＶが示す方向に沿って複数回実施する。補正ベクトルＶには、図３に示すように、右方向を示すＶ+X、左方向を示すＶ-Xが含まれる。補正ベクトルＶには、図４に示すように、下方向を示すＶ+Y、上方向を示すＶ-Yが含まれる。補正ベクトルＶには、図５に示すように、右上方向を示すＶ+X-Y、左下方向を示すＶ-X+Yが含まれる。補正ベクトルＶには、図６に示すように、右下方向を示すＶ+X+Y、左下方向を示すＶ-X-Yが含まれる。
【００２９】
補正処理では、補正ベクトルＶが示す方向に沿って、節点空間ＮＰＳから切り出した複数の節点平面Ｐのそれぞれに対して以下の処理を実行する。ここでは、説明のため、視差を表す軸を行方向、補正ベクトルＶが示す方向、即ち切り出した画素列が並ぶ方向を行方向、視差を表すＺ軸に沿った方向を列方向として、図２に示すように、マトリクス上の各節点をＮＰ（ｉ、ｊ）で表現するものとする。ｉが切り出した画素列上での画素の位置を表し、ｊが視差を表す。つまり、節点平面Ｐ上には、節点ＮＰ（ｉ，ｊ）がマトリクス状に配置される。
【００３０】
ここで、節点平面Ｐ上の任意の節点ＮＰ（ｉ，ｊ）を終了節点、節点平面Ｐにおける補正ベクトルＶの始端側に位置する画素に対応する複数の節点ＮＰ（１，ｊ）を開始節点とする。各開始節点ＮＰ（１，ｊ）から終了節点ＮＰ（ｉ，ｊ）に至る全ての経路の中で、経路コストが最小となる経路である最小コスト経路を、ビタビアルゴリズムによって探査する。具体的には、経路コストは、着目する経路に属する全ての節点の節点コストＤ（ｐ，ｕｐ）と、着目する経路上で隣接する節点間の視差コストＳ（ｕｐ，ｕｐ）との総和である。視差コストＳ（ｕｐ，ｕｑ）は、視差がｕｐである節点から、視差がｕｑである節点へ移動する場合のコストである。視差コストＳ（ｕｐ，ｕｑ）は、視差ｕｐと視差ｕｑとの差が大きいほど値が大きくなるように設定される。視差コストＳ（ｕｐ，ｕｑ）は、例えば、視差ｕｐと視差ｕｑとの差分の絶対値を用いることができる。
【００３１】
例えば、図２のマトリクス上では、節点ＮＰ（１，３）を開始節点、節点ＮＰ（４，２）を終了節点とする経路が示されており、その経路中には四つの節点ＮＰ（１，３）、ＮＰ（２，２）、ＮＰ（３，２）、ＮＰ（４，２）が含まれている。この場合、経路コストはＤ（１，３）＋｛Ｄ（２，２）＋Ｓ（２，３）｝＋｛Ｄ（３，２）＋Ｓ（２，２）｝＋｛Ｄ（４，２）＋Ｓ（２，２）｝で求められることになる。
【００３２】
つまり、補正処理では、ビタビアルゴリズムを用いて、最小コスト経路となる節点コストおよび視差コストの組み合わせを探査する。但し、この探査において、節点間の移動の際に許容される視差の上限が予め設定されており、設定された上限の範囲内で経路が設定される。なお、視差の上限を絞ることは、経路の探査範囲を絞ること、ひいては補正処理の処理量を削減することに繋がる。
【００３３】
そして、最小コスト経路の経路コストが、終了節点における節点コストの補正値Ｅとなる。以下では、補正ベクトルＶＸを用いた補正処理によって得られる補正値を、補正値ＥＸと表記する。他の補正ベクトルの場合も同様である。
【００３４】
なお、ｐで特定される画素に関する節点コストＤ（ｐ，ｕｐ）の補正値は、全ての経路についての経路コストを毎回計算する必要はなく、ｐ−１で特定される画素に関する節点コストの補正値と、視差コストＳ（ｕｐ，ｕｑ）とから簡単に求めることができる。これは、例えば、特許文献１として示した特開２０１５−１１４２６９号公報などに記載された公知の技術であるため、その詳細についての説明は省略する。
【００３５】
［３．処理］
［３−１．距離演算処理］
次に、画像処理部４が実行する距離演算処理について、図７のフローチャートを用いて説明する。距離演算処理は、画像処理部４の動作中において繰り返し実行される。
【００３６】
この距離測定処理が実行されると、画像処理部４は、まずＳ１１０にて、外部メモリ４２２から基本画像対を取得する。基本画像対は、一対の撮像部２，３において同時に撮像され、外部メモリ４２２に格納された一対の撮像画像である。
【００３７】
Ｓ１２０では、基本画像対間で垂直方向のずれを補正することで、両画像を互いに平行化する。具体的には、両画像の間で互いに対応関係にある画像領域の高さが一致するように、予め設定された補正パラメータに従って画素全体の垂直方向の座標を変換する。平行化は、一対の撮像部２，３間での相対的な姿勢のずれやレンズによる画像の歪みを補正する処理である。
【００３８】
Ｓ１３０では、Ｓ１２０で平行化された基本画像対を用いて、視差画像を生成する視差演算処理を実行する。視差演算処理の詳細については後述する。視差画像は、基準画像を構成する各画素と比較画像を構成する各画素との対応関係、すなわち、同じものが写っている場所を関連付ける情報である視差を、各画素の画素値とする画像である。
【００３９】
Ｓ１４０では、視差画像が示す情報である視差に基づき、各画素に写っている物標までの距離を画素毎に算出することで、その算出された距離を画素値とする距離画像を生成して、本処理を終了する。なお、視差から距離を求める手法は周知であるため、ここでの説明は省略する。
【００４０】
距離画像は、物標の検出や、検出された物標に関する情報の抽出に用いられ、抽出された情報は、例えば、自動運転や危険回避等のための各種車両制御に利用される。
［３−２．視差演算処理］
画像処理部４が、先のＳ１４０で実行する視差演算処理の詳細を、図８のフローチャートを用いて説明する。
【００４１】
視差演算処理が開始されると、画像処理部４は、Ｓ２１０にて、Ｓ１２０で平行化され基本画像対を用いて、階層画像対を生成する。具体的には、基本画像対の解像度（以下、第３解像度）よりも低い第１解像度を有する一対の画像からなる第１画像対と、第３解像度より低く、第１解像度より高い第２解像度を有する一対の画像からなる第２画像対を作成する。ここでは、図９に示すように、第１解像度を有する画像Ｇ１は、第３解像度を有する画像（即ち、撮像画像）Ｇ３の横方向および縦方向の解像度をそれぞれ１／４にしたものである。第２解像度を有する画像Ｇ２は、画像Ｇ３の横方向および縦方向の解像度をそれぞれ１／２にしたものである。以下、これら第１〜第３画像対を総称して階層画像対という。階層画像対は外部メモリ４２２に格納される。
【００４２】
Ｓ２２０では、外部メモリ４２２に格納されている階層画像対から、一つの画像対を選択画像対として選択する。但し、選択画像対は、本ステップが繰り返される毎に、解像度が低いものから順番に選択される。従って、最初は第１画像対が選択され、次に第２画像対が選択され、最後に第３画像対が選択される。
【００４３】
Ｓ２３０では、Ｓ２２０にて選択された選択画像対に対して第１最適化処理を実行する。第１最適化処理では、節点コストの算出および補正を行うと共に、その補正結果に基づいて、Ｓ２２０にて次に選択される選択画像対に対する処理で使用する視差の探査範囲を設定する。その詳細については後述する。
【００４４】
Ｓ２４０では、選択画像対が予め指定された指定画像対であるか否かを判断する。指定画像は、第１〜第３画像対の中のいずれか一つである。選択画像が指定画像対であればＳ２５０に移行し、選択画像が指定画像対でなければＳ２６０に移行する。
【００４５】
Ｓ２５０では、Ｓ２３０での第１最適化処理での処理結果を用いて、第２最適化処理を実行する。第２最適化処理では、節点コストの補正を行う。その詳細については後述する。
【００４６】
Ｓ２６０では、選択画像対が最終画像対、つまり第３画像対であるか否かを判断する。選択画像対が最終画像対であればＳ２７０に移行し、選択画像対が最終画像対でなければ、つまり、非最終画像対であればＳ２２０に戻る。
【００４７】
Ｓ２７０では、最終画像対について求められた補正された節点コストに基づき、視差画像を生成して、本処理を終了する。具体的には、注目する画素（以下、注目画素）についの節点コストが最小となる節点を抽出し、その節点に対応する視差を、注目画素の画素値とすることで視差画像を生成する。
【００４８】
［３−３．第１最適化処理］
画像処理部４が、先のＳ２３０で実行する第１最適化処理の詳細を、図１０のフローチャート、および図１１の説明図に沿って説明する。
【００４９】
この第１最適化処理が実行されると、画像処理部４は、まずＳ３１０にて、外部メモリ４２２に格納されている選択画像対の両画像について、予め設定されたｍライン分だけ内部メモリ４２１に読み込む。１ラインとは、画像上でＸ軸に沿って並ぶ画素列のことをいう。ｍは２以上の整数である。
【００５０】
Ｓ３２０では、Ｓ３１０にて読み込んだ画像について、各画素について節点コストＤ（ｐ，ｕｐ）を算出する。これにより、図３に示すように、Ｘ軸に沿って１列に配置された画素列に関する節点平面ＰＸがｍ個作成されることになる。
【００５１】
Ｓ３３０では、Ｓ３２０での節点コストＤ（ｐ，ｕｐ）の算出結果を用い、ｍ個の節点平面ＰＸのそれぞれについて、補正ベクトルＶ+Xが示す右方向にビタビアルゴリズムを適用する補正処理を実行する。これにより、ｍ個の節点平面ＰＸに存在する全ての節点コストＤ（ｐ，ｕｐ）について、その補正値Ｅ+Xが求められる。
【００５２】
Ｓ３４０では、Ｓ３２０での節点コストＤ（ｐ，ｕｐ）の算出結果を用い、ｍ個の節点平面ＰＸのそれぞれについて、補正ベクトルＶ-Xが示す左方向にビタビアルゴリズムを適用する補正処理を実行することで、これにより、ｍ個の節点平面ＰＸに存在する全ての節点コストＤ（ｐ，ｕｐ）について、その補正値Ｅ-Xが求められる。
【００５３】
Ｓ３５０では、ｎ個の節点平面ＰＸに存在する全ての節点について、注目節点の節点コストＤ（ｐ，ｕｐ）を、Ｓ３３０およびＳ３４０で求められた注目節点の補正値の合計値Ｅ+X＋Ｅ-Xで置換することにより、節点コストＤ（ｐ，ｕｐ）を更新する。
【００５４】
Ｓ３６０では、Ｓ３５０での節点コストＤ（ｐ，ｕｐ）の更新結果を用い、補正ベクトルＶ+Yが示す下方向にビタビアルゴリズムを適用する補正処理を実行する。この補正処理は、図４に示すように、Ｙ軸に沿って１列に配置された画素列に関する節点平面Ｐ+Y上の節点に対する処理である。但し、ここでは、画像はｍライン分、すなわち、Ｙ軸に沿ってｍ画素分しか読み込まれていないため、節点平面Ｐ+Yの一部に対して補正処理を実行することになる。但し、上述したように、ｐで特定される画素に関する節点の補正値は、一つ前のｐ−１で特定される画素に関する節点の補正値から求めることができる。つまり、ｍライン読み込んでいれば、補正ベクトルＶ+Yの始端側からｍ番目までの画素に関する節点の補正値Ｅ+Yが求められる。
【００５５】
Ｓ３７０では、Ｓ３５０での節点コストＤ（ｐ，ｕｐ）の更新結果を用い、補正ベクトルＶ+X+Yが示す右下方向にビタビアルゴリズムを適用する補正処理を実行する。この補正処理は、図５に示すように、Ｘ軸の正方向かつＹ軸の正方向に向かう斜め右下方向に沿って１列に配置された画素列に関する節点平面ＰXY上の節点に対する処理である。その詳細は、使用する節点平面が異なる以外は、Ｓ３６０での処理と同様である。この補正処理により、節点の補正値Ｅ+X+Yが求められる。
【００５６】
Ｓ３８０では、Ｓ３５０での節点コストＤ（ｐ，ｕｐ）の更新結果を用い、補正ベクトルＶ-X+Yが示す左下方向にビタビアルゴリズムを適用する補正処理を実行する。この補正処理は、図６に示すように、Ｘ軸の正方向かつＹ軸の正方向に向かう斜め左下方向沿って１列に配置された画素列に関する節点平面Ｐ-XY上の節点に対する処理である。その詳細は、使用する節点平面が異なる以外は、Ｓ３６０での処理と同様である。この補正処理により、節点の補正値Ｅ-X+Yが求められる。
【００５７】
Ｓ３９０では、Ｓ３６０〜Ｓ３８０にて補正値が求められた全ての節点について、注目節点の節点コストＤ（ｐ，ｕｐ）を、Ｓ３６０〜Ｓ３８０で求められた注目節点の補正値の合計値Ｅ+Y＋Ｅ+X+Y＋Ｅ-X+Yで置換することにより、節点コストＤ（ｐ，ｕｐ）を更新する。また、更新された節点コストＤ（ｐ，ｕｐ）のうち、当該第１最適化処理での以降の処理で参照されることのない部分の節点コストＤ（ｐ，ｕｐ）については、外部メモリ４２２に格納する。
【００５８】
Ｓ４００では、選択画像対の読み込みを終了したか否かを判断する。読み込みが終了していなければ、Ｓ２１０に戻って、次のｎライン分の画像を読み込んで同様の処理を繰り返す。読み込みが終了していればＳ４１０に移行する。
【００５９】
Ｓ４１０では、節点空間ＮＰＳを構成する全ての節点ＮＰの節点コストＤ（ｐ，ｕｐ）が、補正ベクトルＶ+X，Ｖ-X，Ｖ+Y,Ｖ+X+Y，Ｖ-X+Yが示す５方向についての補正値が反映されたされたものとなっている。この補正された節点コストＤ（ｐ，ｕｐ）を参照して、画素毎の視差を求め、その視差の分布等から、次に選択される選択画像対に対してビタビアルゴリズムを適用する際に用いる視差の探査範囲を設定して、本処理を終了する。なお、次に選択される選択画像対から検出される視差は、今回検出された視差から大きく外れることはないため、探査範囲は、その範囲が限定される方向に設定されることになる。
【００６０】
［３−４．第２最適化処理］
画像処理部４が、先のＳ２５０で実行する第２最適化処理の詳細を、図１２のフローチャートに沿って説明する。
【００６１】
この第２最適化処理が実行されると、画像処理部４は、まずＳ５１０にて、外部メモリ４２２に格納されている第１最適化処理での処理結果、即ち、５方向の補正値が反映された節点コストＤ（ｐ，ｕｐ）を、画像の下方から順に予め設定されたｎライン分だけ内部メモリ４２１に読み込む。つまり、Ｘ軸に沿って１列に配置された画素列に関する節点平面ＰＸがｎ個読み込まれることになる。節点平面ＰＸについては、図３を参照のこと。
【００６２】
Ｓ５２０では、Ｓ５１０で取得した節点コストＤ（ｐ，ｕｐ）を用い、補正ベクトルＶ-Yが示す上方向にビタビアルゴリズムを適用する補正処理を実行する。この補正処理は、Ｓ３５０での処理と比較して、補正を行う方向が反対方向となる以外は同様であるため、その詳細については説明を省略する。この補正処理により、補正ベクトルＶ-Yの始端側からｎ番目までの画素に関する節点の補正値Ｅ-Yが求められる。
【００６３】
Ｓ５３０では、Ｓ５１０で取得した節点コストＤ（ｐ，ｕｐ）を用い、補正ベクトルＶ-X-Yが示す左上方向にビタビアルゴリズムを適用する補正処理を実行する。この補正処理は、Ｓ３７０での処理と比較して、補正を行う方向が反対方向となる以外は同様であるため、その詳細については説明を省略する。この補正処理により、節点の補正値Ｅ-X-Yが求められる。
【００６４】
Ｓ５４０では、Ｓ５１０で取得した節点コストＤ（ｐ，ｕｐ）を用い、補正ベクトルＶ+X-Yが示す右上方向にビタビアルゴリズムを適用する補正処理を実行する。この補正処理は、Ｓ３８０での処理と比較して、補正を行う方向が反対となる以外は同様であるため、その詳細については説明を省略する。この補正処理により、節点の補正値Ｅ+X-Yが求められる。
【００６５】
Ｓ５５０では、Ｓ５２０〜Ｓ５４０にて補正値が求められた全ての節点について、注目節点の節点コストＤ（ｐ，ｕｐ）を、Ｓ５２０〜Ｓ５４０で求められた注目節点の補正値の合計値Ｅ-Y＋Ｅ-X-Y＋Ｅ+X-Yで置換することにより、節点コストＤ（ｐ，ｕｐ）を更新する。
【００６６】
Ｓ５６０では、選択画像対から生成された節点空間の全ての節点コストＤ（ｐ，ｕｐ）の読み込みを終了したか否かを判断する。読み込みが終了していなければ、Ｓ５１０に戻って、次のｎライン分の画像に関する節点コストＤ（ｐ，ｕｐ）を読み込んで同様の処理を繰り返す。読み込みが終了していれば本処理を終了する。
【００６７】
本実施形態において、視差演算処理を実行する画像処理部４が視差演算装置に相当する。外部メモリ４２２が記憶部、ＣＰＵ４１，内部メモリ４２１が処理部に相当する。Ｓ２２０が選択部、Ｓ３２０がコスト生成部、Ｓ３３０〜Ｓ３９０及びＳ５２０〜Ｓ５５０がコスト補正部、Ｓ４１０が制限部、Ｓ２７０が視差演算部に相当する。Ｓ３３０が右向処理、Ｓ３４０が左向処理、Ｓ３６０が下向処理、Ｓ３７０が右下向処理、Ｓ３８０が左下向処理、Ｓ５２０が上向処理、Ｓ５３０が左上向処理、Ｓ５４０が右上向処理に相当する。
【００６８】
［４．効果］
以上詳述した実施形態によれば、以下の効果を奏する。
（１）測距装置１では、視差演算処理において、選択画像対が指定画像対でない場合、第１最適化処理だけを実施し、選択画像が指定画像対である場合だけ、第１最適化処理に加えて第２最適化処理を実施している。つまり、８方向の補正処理のうち、第１最適化処理で行う５方向の補正処理とは並列に実行することができない３方向の補正処理を、３つある選択画像対のうち、一つの画像対にだけ適用している。従って、視差の演算結果、ひいては距離画像の精度を低下させることなく、処理負荷を削減することができる。
【００６９】
図１３は、左上図が撮像画像である。左下図が上述の測距装置１によって得られた実施例の距離画像である。但し、第３画像対を指定画像対としている。右上図が第１〜第３画像対の全てについて第１最適化処理および第２最適化処理をいずれも実施して得られた比較例１の距離画像である。右下図が第１〜第３画像対の全てについて第１最適化処理のみを実施して得られた比較例２の距離画像である。比較例２は、比較例１と比較して、破線で囲んだ車両部分の距離画像に劣化が現れている。これに対して、実施例では、比較例１と比較して顕著な劣化が現れていないことがわかる。
【００７０】
（２）測距装置１では、視差演算処理において、解像度が異なる複数の画像対を、解像度の低いものから順番に処理し、解像度の低い画像対の処理結果から、次に解像度の高い画像対に対して補正処理を実施する際の探査範囲を制限している。従って、測距装置１では、画素数の多い解像度の高い画像対に対する処理を効率よく実施することができ、処理負荷を更に削減することができる。
【００７１】
［５．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００７２】
（ａ）上記実施形態では、一対の撮像部２，３から得られる撮像画像を用いて視差を検出するものを示したが、３台以上の撮像部を用いてもよい。
（ｂ）上記実施形態では、撮像画像対から、互いに異なる２種類の低解像度の画像対を生成しているが、これに限定されるものではない。生成される低解像度の画像対は、一つであってもよいし、三つ以上であってもよい。
【００７３】
（ｃ）上記実施形態では、第１最適化処理では５方向、第２最適化処理では３方向の補正処理を行っているが、これに限定されるものではない。例えば、第１最適化処理では、右方向、左方向、下方向の補正処理による補正値Ｅ+X，Ｅ-X，Ｅ+Yだけを求めてもよい。また、第２最適化処理では上方向の補正処理による補正値Ｅ-Yだけを求めてもよい。
【００７４】
（ｄ）上記実施形態では、第１最適化処理において、補正値Ｅ+X，Ｅ-Xによって更新された節点コストＤ（ｐ，ｕｐ）を用いて補正値Ｅ+Y，Ｅ+X+Y，Ｅ-X+Yを求め、その求めた補正値Ｅ+Y，Ｅ+X+Y，Ｅ-X+Yによって、節点コストＤ（ｐ，ｕｐ）を再度更新しているが、これに限定されるものではない。例えば、Ｓ３２０で求めた節点コストＤ（ｐ，ｕｐ）により全ての補正値を求め、その求めた補正値によって、節点コストＤ（ｐ，ｕｐ）を１回だけ更新してもよい。
【００７５】
（ｅ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【００７６】
（ｆ）上述した視差演算装置（即ち、視差演算処理を実行する画像処理部４）の他、当該視差演算装置を構成要素とするシステム、当該視差演算装置としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、視差演算方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【００７７】
１…測距装置、２，３…撮像部、４…画像処理部、４１…ＣＰＵ、４２…メモリ、４２１…内部メモリ、４２２…外部メモリ。
【図１】
2018159590.tif 000003
【図２】
2018159590.tif 000004
【図３】
2018159590.tif 000005
【図４】
2018159590.tif 000006
【図５】
2018159590.tif 000007
【図６】
2018159590.tif 000008
【図７】
2018159590.tif 000009
【図８】
2018159590.tif 000010
【図９】
2018159590.tif 000011
【図１０】
2018159590.tif 000012
【図１１】
2018159590.tif 000013
【図１２】
2018159590.tif 000014
【図１３】
2018159590.tif 000015