(57)【特許請求の範囲】
【請求項１】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理装置であって、
前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出する視差検出手段、を有し、
前記視差検出手段は、
前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するシフトレジスタと、
前記第１の画像の画素又は画素ブロックが前記シフトレジスタに出力される第１の経路と、
前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするシフト手段を経由して、前記第１の画像の画素又は画素ブロックを前記シフトレジスタに出力させる第２の経路と、
前記第１の経路と前記第２の経路のいずれかを前記シフトレジスタに接続する切替手段と、を有し、
前記切替手段は、前記第２の経路を前記シフトレジスタに接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする画像処理装置。
【請求項２】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理装置であって、
前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出する視差検出手段、を有し、
前記視差検出手段は
前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するシフトレジスタと、
前記探索幅の前記第１の画像の画素又は画素ブロックを記憶する第３のシフトレジスタと、
前記シフトレジスタの手前に設けられ、前記第１の画像の画素又は画素ブロックを記憶することで、前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするシフト手段と、
前記シフトレジスタの各記憶素子又は前記第３のシフトレジスタの各記憶素子のどちらかを、視差演算器と接続する第２の切替手段と、を有し、
前記第２の切替手段は、前記シフトレジスタの記憶素子を前記視差演算器に接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする画像処理装置。
【請求項３】
前記シフト手段は、前記探索幅の前記第１の画像の画素又は画素ブロックが、視差の検出対象となるまでの時間を遅延させることで、前記探索幅の前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトする、
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする画像領域を設定する画像領域設定手段を有し、
前記切替手段は、視差情報が求められる画素が前記画像領域に含まれる場合、前記第２の経路を前記シフトレジスタに接続することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする画像領域を設定する画像領域設定手段を有し、
前記第２の切替手段は、視差情報が求められる画素が前記画像領域に含まれる場合、前記シフトレジスタの記憶素子を前記視差演算器に接続することを特徴とする請求項２に記載の画像処理装置。
【請求項６】
前記視差検出手段が、前記画像領域で、閾値未満の距離の対象を検出した場合、
前記切替手段は、次のサイクルで入力された前記第１の画像と前記第２の画像に対し、視差情報が求められる画素が前記画像領域でない領域に含まれる場合でも、前記第２の経路を前記シフトレジスタに接続する、ことを特徴とする請求項４に記載の画像処理装置。
【請求項７】
前記視差検出手段が、前記画像領域で、閾値未満の距離の対象を検出した場合、
前記第２の切替手段は、次のサイクルで入力された前記第１の画像と前記第２の画像に対し、視差情報が求められる画素が前記画像領域でない領域に含まれる場合でも、前記シフトレジスタの記憶素子を前記視差演算器に接続する、ことを特徴とする請求項５に記載の画像処理装置。
【請求項８】
前記第１の画像の画素及び前記第２の画像の画素が入力されるごとに、
前記視差検出手段は、前記探索幅の前記第１の画像の画素又は画素ブロックと、前記第２の画像の画素又は画素ブロックとの相関値を並列に演算し、
前記探索幅の数の相関値のうち最も相関がよい前記第１の画像の画素又は画素ブロックの位置に基づき視差情報を演算する、
ことを特徴とする請求項１〜７のいずれか１項に記載の画像処理装置。
【請求項９】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理方法であって、
視差検出手段が、前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出するステップ、を有し、
前記視差検出手段が前記視差情報を検出するステップでは、
シフトレジスタが、前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するステップと、
前記第１の画像の画素又は画素ブロックが前記シフトレジスタに出力される第１の経路と、前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするシフト手段を経由して前記第１の画像の画素又は画素ブロックを前記シフトレジスタに出力させる第２の経路、のいずれかを、切替手段が前記シフトレジスタに接続するステップと、を有し
前記切替手段は、前記第２の経路を前記シフトレジスタに接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする画像処理方法。
【請求項１０】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理方法であって、
視差検出手段が、前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出するステップ、を有し、
前記視差検出手段が前記視差情報を検出するステップでは、
シフトレジスタが、前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するステップと、
第３のシフトレジスタが、前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するステップと、
シフト手段が、前記シフトレジスタの手前に設けられ、前記第１の画像の画素又は画素ブロックを記憶することで、前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするステップと、
第２の切替手段が、前記シフトレジスタの各記憶素子又は前記第３のシフトレジスタの各記憶素子のどちらかを、視差演算器と接続するステップと、を有し、
前記第２の切替手段は、前記シフトレジスタの記憶素子を前記視差演算器に接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする画像処理方法。
【請求項１１】
撮像手段により撮像した画像を処理して機器の制御を行う機器制御システムであって、
第１の画像を撮像する第１の撮像手段及び第２の画像を撮像する第２の撮像手段と、
前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出する視差検出手段と、を有し、
前記視差検出手段は、
前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するシフトレジスタと、
前記第１の画像の画素又は画素ブロックが前記シフトレジスタに出力される第１の経路と、
前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするシフト手段を経由して、前記第１の画像の画素又は画素ブロックを前記シフトレジスタに出力させる第２の経路と、
前記第１の経路と前記第２の経路のいずれかを前記シフトレジスタに接続する切替手段と、を有し、
前記切替手段は、前記第２の経路を前記シフトレジスタに接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする機器制御システム。
【請求項１２】
撮像手段により撮像した画像を処理して機器の制御を行う機器制御システムであって、
第１の画像を撮像する第１の撮像手段及び第２の画像を撮像する第２の撮像手段と、
前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出する視差検出手段と、を有し、
前記視差検出手段は、
前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するシフトレジスタと、
前記探索幅の前記第１の画像の画素又は画素ブロックを記憶する第３のシフトレジスタと、
前記シフトレジスタの手前に設けられ、前記第１の画像の画素又は画素ブロックを記憶することで、前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするシフト手段と、
前記シフトレジスタの各記憶素子又は前記第３のシフトレジスタの各記憶素子のどちらかを、視差演算器と接続する第２の切替手段と、を有し、
前記第２の切替手段は、前記シフトレジスタの記憶素子を前記視差演算器に接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする機器制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の画像と第２の画像から視差情報を生成する画像処理装置等に関する。
【背景技術】
【０００２】
ステレオカメラが撮影した画像データから視差情報を取得することで対象までの距離を計測することが可能である。距離を計測できることを利用して、車両の運転者の運転を支援する運転支援システムなどが知られている。
【０００３】
運転支援システムは、例えば、車の前方に設置したステレオカメラによって車両前方を撮像し、２つの画像の視差（視点による物体の結像点の位置の差）を検出することで、歩行者、他車両、障害物等との距離を測定する。そして、それらに衝突する可能性がある場合は、運転者に報知したり、車両のブレーキを作動させて減速させたり停止させたりすることで運転を支援する。なお、視差は、２つのカメラから得られた２つの画像をそれぞれ小領域に分割して、ある探索範囲で小領域の類似性を求めるブロックマッチングで求められる場合が多い。
【０００４】
このような運転支援システムでは、高い空間分解能や高精度化が求められており、処理負荷が増大する一方、衝突回避などのために演算時間の短縮も求められている。例えば、
ステレオカメラの距離レンジを近距離側に拡大することが望まれる場合がある。
【０００５】
しかし、視差は同一の物体を２地点から見たときの結象位置の差であるため、物体が近距離にある場合ほど大きくなる。すなわち、ステレオカメラを用いて近距離側の測定レンジを広くするには、ブロックマッチングの探索範囲を広く（視差の方向に長く）しなければならない。
【０００６】
従来から、ステレオカメラの距離レンジを拡大する技術が考案されている（例えば、特許文献１、２参照。）。特許文献１には、処理速度と距離精度の両立を図る目的で、縮小画像で対応箇所探索を行い、近距離側の大きな視差を探索できるようにしたステレオ画像処理装置が開示されている。
【０００７】
また、特許文献２には、画像の上側の視差を求める際に、下側の視差結果を参照し、近距離の物体が存在しない場合に探索範囲を狭める画像処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１のステレオ画像処理装置では、縮小画像を生成する必要があるためステレオ画像処理装置の回路規模が大きくなるという問題点があった。
【０００９】
また、特許文献２の画像処理装置では、探索範囲を狭める具体的な仕組みについて記載がない。
【００１０】
本発明は上記課題に鑑み、回路規模を増大させることなく、測定可能な距離レンジを変更可能な視差演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理装置であって、前記第２の画像の画素又は画素ブロックを、探索幅の前記第１の画像の画素又は画素ブロックで探索して視差情報を検出する視差検出手段、を有し、前記視差検出手段は、前記探索幅の前記第１の画像の画素又は画素ブロックを記憶するシフトレジスタと、前記第１の画像の画素又は画素ブロックが前記シフトレジスタに出力される第１の経路と、前記第１の画像の画素又は画素ブロックを前記第２の画像の画素又は画素ブロックに対しシフトするシフト手段を経由して、前記第１の画像の画素又は画素ブロックを前記シフトレジスタに出力させる第２の経路と、前記第１の経路と前記第２の経路のいずれかを前記シフトレジスタに接続する切替手段と、を有し、前記切替手段は、前記第２の経路を前記シフトレジスタに接続することで、前記探索幅の前記第１の画像の画素又は画素ブロックを、前記第２の画像の画素又は画素ブロックに対しシフトする、ことを特徴とする。
【発明の効果】
【００１２】
回路規模を増大させることなく、測定可能な距離レンジを変更可能な視差演算処理装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】回路規模の増大について説明する図の一例である。
【図２】本実施形態の視差演算処理部の概略的な構成図の一例である。
【図３】４つのステレオカメラの搭載位置を模式的に示す図の一例である。
【図４】車載システムの構成図の一例である。
【図５】画像処理ＥＣＵの構成図の一例である。
【図６】画像処理ＩＣの基本構成の一例を示す図である。
【図７】ステレオカメラによる測距原理について説明する図の一例である。
【図８】視差演算処理部の探索範囲のシフトを説明する図の一例である。
【図９】視差演算処理部の探索範囲のシフトを説明する別の図の一例である。
【図１０】画像領域を縦に分割した際に図８の視差演算処理部により生じる不都合について説明する図の一例である。
【図１１】探索範囲の設定の一例を説明する図の一例である。
【図１２】画像処理ＩＣが視差を検出する手順を示すフローチャート図の一例である。
【図１３】画像処理ＩＣが視差を検出する手順を示すフローチャート図の一例である。
【図１４】図８の視差演算処理部においてシフト量が切り替えられる視差演算処理部の構成図の一例である。
【図１５】図９の視差演算処理部においてシフト量が切り替えられる視差演算処理部の構成図の一例である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【００１５】
＜回路規模の増大＞
まず、図１を用いて、回路規模の増大について説明する。図１（ａ）は８画素を探索幅とした場合の視差演算処理部３０の構成例を示す図の一例である。図１は、入力される画素に対して順次視差を求める構成例を示している。
【００１６】
比較画像と基準画像の「０〜７」の数字は入力される画素を示しており、基準画像、比較画像の各々の画素が左側から順番に視差演算処理部３０に入力される。比較画像の画素「０〜７」は画素０から順にシフトレジスタ１２に遅延されながら格納されていく。したがって、基準画像の画素７が入力された時点で、それ以前に入力された比較画像の画素０〜６がシフトレジスタ１２に蓄えられている。
【００１７】
基準画像と比較画像の画素の差分は、視差演算器１５（視差演算器１５の各演算素子を区別する場合、視差演算器Ｃ０〜Ｃ７という）により算出される。視差演算器Ｃ０〜Ｃ７は並列に視差を演算し、演算結果は最小値出力回路１６に出力される。すなわち、視差演算器Ｃ０は基準画像の画素７と比較画像の画素０を比較し、視差演算器Ｃ１は基準画像の画素７と比較画像の画素１を比較し、…、視差演算器Ｃ７は基準画像の画素７と比較画像の画素７を比較する。
【００１８】
これにより探索幅を８として、並列に、画素の差を演算したことになる。視差演算器Ｃ０〜Ｃ７が算出する画素同士の差を相関値と呼ぶ場合がある。最小値出力回路１６は得られた８個の差の最小値を決定する。決定された画素位置が視差値となる。例えばＣ２で演算された差が最小であれば、視差は"５"である。この視差が大きいほど対象までの距離が近い。
【００１９】
このような構成では、入力された基準画像と比較画像に対し、リアルタイムに順次視差を求めることができるが、比較される画素毎に視差演算器Ｃ０〜Ｃ７を設ける必要がある。このため、距離レンジを広げるには探索幅を拡大する必要があり、以下に示すように、視差演算器１５の回路規模が増大してしまう。
【００２０】
なお、図１は、順次処理を簡便に説明するために画素毎にマッチング（差分の演算）を行う例を示したが、複数画素で構成される画素ブロック毎にマッチングを行う場合もある。
【００２１】
図１（ｂ）は１０画素を探索幅とした場合の視差演算処理部３０の構成例を示す図の一例である。探索幅が１０となることで、検出されうる最大の視差を７から９に拡大することができる。これにより、より近距離の対象までの距離を計測することができる。
【００２２】
しかし、探索幅を拡大すると、遅延用のシフトレジスタ１２及び視差演算器１５をそれぞれ２つの画素分、増設する必要が生じてしまう。特に視差演算器１５は、基準画像との比較を並列に行う必要があるため、回路規模の面積が増大する。
【００２３】
そこで、本実施形態では、回路規模を増大することなく探索幅を拡大し、リアルタイムに順次視差を求めることができる視差演算処理部３０について説明する。
【００２４】
＜本実施形態の視差演算処理部の概略＞
図２は、本実施形態の視差演算処理部３０の概略的な構成図の一例である。本実施形態の視差演算処理部３０は、探索幅は変更することなく、走査する画像領域などの条件に応じて、比較画像の探索範囲をシフトすることが特徴の１つとなっている。
【００２５】
なお、探索幅とは基準画像の１画素に対し比較される比較画像の画素数であり、固定値である。探索範囲は、基準画像の１画素に対し比較対象となる水平方向に連続した比較画像の画素である。シフトとは、視差演算の対象となる基準画像の画素から見て、より離れた位置の比較画像の画素（探索幅分）をシフトレジスタ１２に読み出すこと（基準画像との比較対象にすること）である。
【００２６】
図２（ａ）は、一例として、画像領域の上方を走査する場合であって、遠距離を計測する場合の視差演算処理部３０を示している。この場合、セレクタ１７は、遠距離側端子１６１とシフトレジスタ１２を接続する。これにより、基準画像の画素９が読み取られたタイミングでは、シフトレジスタ１２に画素２〜９が格納されている。よって、画素２〜９が探索範囲である。基準画像の画素９から見て比較画像の画素２〜９は、０〜７番目の画素なので遠距離を計測できる。
【００２７】
図２（ｂ）は、例えば画像領域の下方を走査する場合であって、近距離を計測する場合の視差演算処理部３０を示している。この場合、セレクタ１７は、近距離側端子１６２とシフトレジスタ１２を接続する。これにより、基準画像の画素９が読み取られたタイミングでは、比較画像から順番に読み出された画素０〜９のうち、画素０〜７はシフトレジスタ１２に格納され、画素８，９は第２シフトレジスタ１３に格納される。したがって、画素８，９は比較対象とならず、画素０〜７が基準画像の画素９との比較対象（探索範囲）となる。基準画像の画素９から見て画素０〜７は、２〜９番目の画素なので近距離を計測できる。すなわち、セレクタ１７が近距離側端子１６２と接続されることで、探索範囲をシフトすることができる。
【００２８】
したがって、本実施形態の視差演算処理部３０は、視差演算器１５の回路規模を増大することなく、遠距離と近距離の両方を探索範囲として距離を計測することができる。また、リアルタイムに順次視差を求めることができ、基準画像の全体と視差画像の全体を記憶する必要がなく、画像メモリの容量を抑制できる。
【００２９】
＜構成例＞
図３は、４つのステレオカメラ１０の搭載位置を模式的に示す図の一例である。複数のステレオカメラ１０を区別するため、ステレオカメラの符号を１〜４とした。ステレオカメラ１は前方に、ステレオカメラ２は右側方に、ステレオカメラ３は左側方に、ステレオカメラ４は後部に、それぞれ配置されている。ステレオカメラ１は、室内ルームミラーや車両前部バンパに、車両前方のやや水平下向きに光軸を向けて配置される。ステレオカメラ２は、例えば、右ドアミラー、車両右側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Ａピラー、Ｂピラー又はＣピラーなどに、車両右側方、車両右側方よりもやや後方又は車両右側方よりもやや前方に光軸を向けて配置される。ステレオカメラ３は、例えば、左ドアミラー、車両左側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Ａピラー、Ｂピラー又はＣピラーなどに、車両左側方、車両左側方よりもやや後方又は車両左側方よりもやや前方に光軸を向けて配置される。ステレオカメラ４は、後部ナンバープレートの周辺や、後部バンパなどに配置されている。
【００３０】
ステレオカメラ１は、主に、車両前方の歩行者との距離、先行車両との距離、その他の地物（標識、信号機、電柱、ガードレール等）や障害物との距離を測定するために用いられる。障害物との距離に応じて、車載システムは運転者に警告したり、制動をかけることができる。
【００３１】
ステレオカメラ２，３は、乗員がドアの開閉をする際に、周囲から近づいてくる人や物との距離を検出するために用いられる。駐車場などで、隣の他車両との距離を測定し、また、駐車中に後側方から接近する自転車、バイク、及び、歩行者との距離を測定する。車載システムは、距離に応じて、運転者に警告したり、ドアの開放を禁止することができる。
【００３２】
ステレオカメラ４は、後方の障害物との距離を検出したり、乗員が後部ドアを開放する際に障害物との距離を測定する。障害物が所定の距離内にある場合、ドアの開放を禁止することができる。また、バック走行中、ステレオカメラは障害物との距離に応じて、運転者に警告したり、制動をかけることができる。
【００３３】
図４は、車載システム１０００の構成図の一例である。車載システム１０００は機器制御システムの一例である。一台の車両には多くのマイコンが搭載されており、１つ以上のマイコンが搭載された情報処理装置をＥＣＵ（Electronic Control Unit）又は電子制御ユニットと呼ぶことが多い。多様なＥＣＵが車載されているが、例えばエンジンを制御するエンジンＥＣＵ２００、ブレーキを制御するブレーキＥＣＵ３００、ドアやシートを制御するボディＥＣＵ４００、ナビやＡＶ機器を制御する情報系ＥＣＵ５００等が知られている。
【００３４】
本実施形態では、ステレオカメラ１０により距離情報を取得するＥＣＵを画像処理ＥＣＵ６００と呼ぶこととする。画像処理ＥＣＵ６００とステレオカメラ１０はステレオカメラシステム７００の要素となる。
【００３５】
各ＥＣＵは、ＣＡＮ（Controller Area Network）やＦｒｅｘＲａｙ、Ｍｏｓｔ（Media Oriented Systems Transport）、ＬＩＮ（Local Interconnect Network）、Ethernet（登録商標）などの規格の車載ＬＡＮ９９を介して他のＥＣＵと通信可能に接続されている。車載ＬＡＮ上のデータは、車載ＬＡＮ９９に接続された全てのＥＣＵが参照可能である。これにより、各ＥＣＵが協調制御することが可能になる。
【００３６】
例えば、画像処理ＥＣＵ６００が障害物との距離と相対速度からＴＴＣ（Time To Collision）を算出して車載ＬＡＮ９９に送信すると、ＴＴＣに応じてブレーキＥＣＵ３００が減速したり、ボディＥＣＵがシートベルトを巻き上げるなどの制御を行う。この他、車載システム１０００は、先行車両に追従走行したり、車線からの逸脱を抑制したり、障害物を回避するように操舵する制御を行うことができる。
【００３７】
図５は、画像処理ＥＣＵ６００の構成図の一例を示す。画像処理ＥＣＵ６００は、ステレオカメラ１０（図では１つのみだが複数個を搭載してもよい）と接続されている。ステレオカメラ１０については図７にて説明する。
【００３８】
画像処理ＥＣＵ６００には一台以上のマイコンが搭載されており、一般的なマイコンと同様にＣＰＵ６０６，ＲＡＭ６０２、ＲＯＭ６０５、ＣＡＮＣ（ＣＡＮ  Controller）６０４、Ｉ／Ｏ６０３等を有すると共に、画像処理のための画像処理ＩＣ１００を有している。これらは、バスコントローラにより制御されるシステムバスや外部バスなどのバス６０１を介して接続されている。
【００３９】
ステレオカメラ１０はＩ／Ｏ６０３に接続され、撮像された画像データは、画像処理ＩＣ１００が画像処理して視差を演算する。画像処理ＩＣ１００は、所定の画像処理機能を実現する例えばＦＰＧＡやＡＳＩＣ等の電気回路である。ＦＰＧＡで構成する場合、画像処理ＩＣ１００にはＦＰＧＡを設定するためのプログラム６１０（又はコンフィグレーションデータ）を記憶している。
【００４０】
ＣＡＮＣ６０４は、ＣＡＮプロトコルに基づき他のＥＣＵと通信を行う。ＣＰＵ６０６は、ＲＯＭ６０５に記憶されたプログラム６１０を、ＲＡＭ６０２を作業メモリに実行して、ＣＡＮＣ６０４を介して、画像処理結果を他のＥＣＵに送信するなどの各種の制御を行う。
【００４１】
図６は、画像処理ＩＣ１００の基本構成の一例を示す図である。画像処理ＩＣ１００は視差情報を生成する画像処理装置の一例である。画像処理ＩＣ１００にはステレオカメラ１０が接続されている。ステレオカメラ１０は、二台の単眼カメラがほぼ同時にそれぞれ撮像する画像データを画像処理ＩＣ１００に入力する。ステレオカメラ１０は、車両の正面に対し左側に配置された左カメラ１０Ｌと右側に配置された右カメラ１０Ｒを有している。左カメラ１０Ｌと右カメラ１０Ｒは光軸が互いに平行になるように、基線長Ｂの距離を置いて配置されている。基準画像を左カメラ１０Ｌが撮像した画像データ、比較画像を右カメラ１０Ｒが撮像した画像データとして説明する。左カメラ１０Ｌと右カメラ１０Ｒを逆の関係にしてもよい。
【００４２】
左カメラ１０Ｌと右カメラ１０Ｒは、露光時間やゲインが可変のＣＣＤカメラであり、両者は互いに同期が取られ、同一タイミングで画像を撮像している。なお、撮像素子はＣＣＤに限らず、ＣＭＯＳ等の撮像素子でもよい。
【００４３】
画像処理ＩＣ１００は、ステレオ画像校正部２０、視差演算処理部３０、視差データ記憶部４０、及び、探索範囲設定部５０を有している。従来と比べ、ステレオ画像校正部２０の後段に基準画像と比較画像の全体を記憶する記憶部がないことが特徴の１つとなっている。
【００４４】
ステレオ画像校正部２０は、ステレオカメラ１０から入力された基準画像と比較画像の画像データを校正する。左カメラ１０Ｌと右カメラ１０Ｒは、レンズ光学系と撮像素子の機械的なずれやレンズ光学系に生じる歪曲収差などにより、同じカメラであっても異なるカメラ特性を有している。また、取り付けられた左カメラ１０Ｌと右カメラ１０Ｒに取り付け位置のずれが生じる場合もある。ステレオ画像校正部２０は、これらを校正する。具体的には、事前に格子模様などの画像を撮像し、基準画像と比較画像の画素値の対応を求めておくキャリブレーションを行っておく。詳細は、非特許文献１等に記載されているが、キャリブレーション手法は非特許文献１の内容に限定されない。キャリブレーション結果は例えばＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）に登録され、ステレオ画像校正部２０はＬＵＴを参照して、例えば比較画像の画素位置を置き換える。これにより、視差以外の差異が生じない基準画像と比較画像が得られる。
【００４５】
視差演算処理部３０は、基準画像と比較画像を画像処理して、基準画像と比較画像の視差ｄを検出する。視差ｄが視差情報である。具体的には、順次入力される基準画像と比較画像の画素に対して、両画像の小領域（ブロック）ごとの相関値を求めることで対応点を検出するブロックマッチングを行い、両画像間の対応点の画素のずれ（視差ｄ）を検出する。小領域でなく画素毎の相関値を求めてもよい。
【００４６】
この視差ｄに、後述する式（１）を適用することで距離情報を算出することが可能になる。視差演算処理部３０の詳細は後述する。
【００４７】
探索範囲設定部５０は、視差演算処理部３０に対し、基準画像の画像領域に対し、探索範囲をシフトするか否かを設定する。視差演算処理部３０は、探索範囲をシフトすると設定された画像領域の視差を検出する際、探索範囲をシフトする。詳細は後述する。
【００４８】
視差データ記憶部４０は、画素毎に視差データを記憶する。視差データ記憶部４０は、画像処理ＩＣ１００の外部の例えばＲＡＭ６０２に設けられてもよい。また、画像処理ＩＣ１００及びＲＡＭ６０２以外の記憶手段に設けられてもよい。認識処理などのアプリケーションは視差データ記憶部４０から視差データを読み出し、必要に応じて距離情報を算出するなど必要な処理を実行する。
【００４９】
図７は、ステレオカメラ１０による測距原理について説明する図の一例である。ステレオカメラ１０は、異なる視点位置から同じ対象物体を撮影した時に、撮影画像上での結像位置が物体の距離によって変化することを利用して物体の距離や位置を計測する。
【００５０】
ここで、単眼カメラ１０ａ、１０ｂ間の距離を基線長Ｂ、焦点距離ｆ、及び、視差ｄから、物体までの距離Ｚは以下の式で表すことができる。
【００５１】
Ｚ＝Ｂ・ｆ／ｄ        …（１）
＜探索範囲の変更＞
次に、図８を用いて探索範囲のシフトについて説明する。図８は、視差演算処理部３０の探索範囲のシフトを説明する図の一例である。
【００５２】
図８（ａ）は、視差演算処理部３０が遠距離を計測する際にシフトレジスタ１２に格納される画素を、図８（ｂ）は視差演算処理部３０が近距離を計測する際にシフトレジスタ１２に格納される画素をそれぞれ示す。
【００５３】
本実施形態の視差演算処理部３０は、従来のシフトレジスタ１２の前段に、更に、比較画像を２画素シフトするための第２シフトレジスタ１３と、比較画像の画素が第２シフトレジスタ１３を経由するか否かを切り替えるためのセレクタ１７を有している。
【００５４】
図８（ａ）では、セレクタ１７は遠距離側端子１６１と接続されており、比較画像の画素は第２シフトレジスタ１３を経由しないでシフトレジスタ１２に格納される。よって、比較画像の画素０〜９は順番にシフトレジスタ１２に格納されていく。基準画像の画素も順番に画素０〜９から１画素ずつ読み出される。このため、基準画像の画素９が読み出された時には、シフトレジスタ１２には画素２〜９が順番に格納されている。したがって、探索範囲は画素２〜９であり、視差演算処理部３０は無限遠を含んだ測距を行うことができる。
【００５５】
この後、基準画像から読み出される画素１０以降についても、探索範囲は着目画素を含む８画素なので、無限遠を含んだ測距を行うことができる。
【００５６】
図８（ｂ）では、セレクタ１７は近距離側端子１６２を接続されており、比較画像の画素０〜９は順番に、第２シフトレジスタ１３を経由してシフトレジスタ１２に格納されていく。このため、基準画像の画素９が読み出された時には、シフトレジスタ１２には画素０〜７が順番に格納されている。したがって、探索範囲は画素０〜７であり、視差演算処理部３０は、遠距離側の検出が制限されるが近距離の検知が可能となる。この後の、基準画像の画素１０以降についても、探索範囲は着目画素から２画素離れた８画素分なので、近距離を測定することができる。
【００５７】
図８の視差演算処理部３０では比較器はＣ０〜Ｃ７の８個のままである。したがって、本実施形態では、従来のシフトレジスタ１２の前段に回路（シフトレジスタ）を追加し、セレクタ１７で比較画像の画素の読み出し経路を切り替えればよい。すなわち、既存の視差演算器１５を流用して、広い距離レンジの視差演算を行うことができる。
【００５８】
＜＜左右の画像領域で探索範囲のシフトに適した視差演算処理部＞＞
図９は、視差演算処理部３０の探索範囲のシフトを説明する別の図の一例である。図９では、視差演算処理部３０は、図８に対し８画素分の第３シフトレジスタ１９を有している。また、第２シフトレジスタ１３とシフトレジスタ１２の間のセレクタは不要になり、シフトレジスタ１２と第３シフトレジスタ１９の画素を切り替える第２セレクタ１８が設けられている。第２セレクタ１８は、シフトレジスタ１２と第３シフトレジスタ１９の対応する記憶素子ごとに、シフトレジスタ１２と第３シフトレジスタ１９のいずれかを視差演算器１５と接続する。
【００５９】
図９の視差演算処理部３０によれば、比較画像の画素０〜９は順番に、第２シフトレジスタ１３を経由してシフトレジスタ１２に格納される。このため、基準画像の画素９が読み出されたタイミングでは、シフトレジスタ１２には画素０〜７が格納される。
【００６０】
また、基準画像の画素９が読み出されたタイミングでは、第３シフトレジスタ１９に、比較画像の画素２〜９が順番に格納される。これにより、シフトレジスタ１２に画素０〜７が格納された状態で、第３シフトレジスタ１９には画素２〜９が格納される。
【００６１】
したがって、第２セレクタ１８が基準画像の画素と比較される画素を、第３シフトレジスタ１９からシフトレジスタ１２に切り替えることで、探索範囲をシフトすることができる。すなわち、第２セレクタ１８がシフトレジスタ１２に切り替えられれば、探索範囲は画素０〜７となり近距離を計測することができる。第２セレクタ１８が第３シフトレジスタ１９側に切り替えられれば、探索範囲は画素２〜９となり、遠距離を計測することができる。
【００６２】
視差演算器１５は既存のものと同じ構成のままでよいので、図８と同様に回路規模を増大することなく、探索範囲をシフトすることができる。
【００６３】
また、図９のような構成は画像領域を縦に分割して探索範囲を切り替える場合に好適である。これに対し、図８の構成のように、シフトレジスタ１２に格納される画素を０〜７又は２〜９に切り替える場合、図１０にて説明するように、画像領域を縦に分割した際の分割位置で正しい視差が得られない。
【００６４】
図１０は、画像領域を縦に分割した際に図８の視差演算処理部３０により生じる不都合について説明する図の一例である。図１０では画像の左半分で遠距離を、右半分で近距離を計測するものとする。
【００６５】
図１０（ａ）に示すように、左側の領域の右端の画素の視差を検出する場合、シフトレジスタ１２には、上記のように比較画像の２〜９番目の画素が格納されている。次に、図１０（ｂ）に示すように、視差の検出対象が右側の領域の左端の画素に移動するので、測距範囲は近距離になる。したがって、シフトレジスタ１２に格納されるべき画素は０〜７番目の画素となる。
【００６６】
しかし、セレクタ１７が近距離側に切り替わってもシフトレジスタ１２にはすでに画素２〜９が格納されているので、画素０〜７を格納することができない。このため、図８の視差演算処理部３０では、画像領域を縦に分割した際の分割位置で正しい視差が得られない。
【００６７】
これに対し、図９の視差演算処理部３０では、第３シフトレジスタ１９よりも視差演算器１５側に第２セレクタ１８が配置されているため、画像領域を縦に分割した際の分割位置で正しい視差を得ることができる。すなわち、視差の検出対象の画素が遠距離の左領域から近距離の右領域に移動した場合、第２セレクタ１８がシフトレジスタ１２側に切り替わることで、近距離を正しく計測できる。
【００６８】
なお、図１０の説明で画像の左半分で近距離を、右半分で遠距離を計測する場合も不都合が生じるが、この場合、シフトレジスタ１２に記憶されている画素を２画素分進めることで、分割位置で正しい視差を得ることができる。
【００６９】
＜探索範囲の設定＞
次に、探索範囲設定部５０の探索範囲の設定動作について説明する。距離情報を利用したアプリケーションによっては、視差を求める画像領域に応じて遠距離側又は近距離側のみの情報が得られれば良い場合が多い。よって、画像領域などの条件に応じて探索範囲を切り替えることで、回路を増大させずに画像全体としての測距レンジを拡大できる。
【００７０】
図１１（ａ）は探索範囲の設定の一例を説明する図の一例である。ステレオカメラ１０が車載された場合、距離情報を取得すべき領域は、歩行者が進入しやすい左右の領域１０１，１０２と、先行車両などの障害物が存在する前方の領域１０３である。よって、探索範囲設定部５０は、例えば、画像データの左右から所定範囲の領域１０１，１０２を近距離の計測領域、残りの中央部分の領域１０３を遠距離の計測領域に設定する。
【００７１】
また、図１１（ｂ）に示すように、画像データを上下に分割して、近距離と遠距離の計測領域を設定してもよい。探索範囲設定部５０は、画像データの下方領域１１２を近距離の計測領域に設定する。一方、上方領域１１３を遠距離の計測領域に設定する。例えば水平線１１１よりも下方には障害物が存在することが多いため、近距離の計測領域を設定することで正しい視差を得られやすい。水平線１１１よりも上方には無限遠の領域が存在することが多いため、遠距離の計測領域を設定することで正しい視差を得られやすい。
【００７２】
なお、図１１（ｂ）のような設定は、例えば、監視カメラなど、上方から水平面を見下ろす様に取り付けられるカメラにおいても同様に有効である。例えば、画像の下側は近距離の計測領域とする。
【００７３】
また、図１１のように探索領域を固定するのでなく、探索範囲設定部５０は、過去の画像データの距離の計測結果を利用して、近距離と遠距離の設定範囲を切り替えてもよい。例えば、図１１（ａ）のような探索範囲の設定において、直前の画像データで左の領域１０１又は右の領域１０２に路面よりも近距離の対象が検知された場合、中央の領域１０３を近距離の計測領域に変更する。これにより、歩行者などが車両の前方に移動した場合も、近距離の歩行者の距離を計測することができる。
【００７４】
なお、探索範囲設定部５０は、近距離と遠距離の少なくとも一方の画像領域を視差演算処理部３０に設定する。視差演算処理部３０は、視差の計測対象の画素が近距離と遠距離のどちらに属するかを判断し、セレクタ１７又は第２セレクタ１８の接続先を切り替える。
【００７５】
＜動作手順＞
図１２は、画像処理ＩＣが視差を検出する手順を示すフローチャート図の一例である。図１２のフローチャート図では画像データの下方の画像領域で近距離の探索範囲が設定されている場合を例にしている。
S1：ステレオカメラ１０は基準画像と比較画像を撮像し画像処理ＩＣ１００に入力する。なお、探索範囲設定部５０は画像の入力前に、近距離又は遠距離の少なくとも一方の探索範囲を設定している。
S2：視差演算処理部３０は、視差の計測対象の画素が画像データの下方領域１１２に含まれるか否かを判定する。
S3：ステップＳ２の判定がＮｏの場合、視差演算処理部３０は探索範囲を遠距離側に切り替える（又は遠距離側のままとする）。
S4：ステップＳ２の判定がＹｅｓの場合、視差演算処理部３０は探索範囲を近距離側に切り替える（又は近距離側のままとする）。
S5：視差演算処理部３０は視差を演算する。なお、視差演算処理部３０は、整数単位の視差とサブピクセル単位の視差を求め、両者の合計を視差ｄとする。整数単位の視差は、探索範囲で相関が最も良くなる（相関値が最も小さい）演算結果を出力した視差演算器Ｃ０〜Ｃ７により求められる。サブピクセル単位の視差は、最も小さい相関値とその前後のいくつかの相関値を取得して、等角直線フィッティング、パラボラフィッティング、高次多項式推定（４次）、又は、高次多項式推定（６次）などの演算方法で算出する。
【００７６】
図１３は、画像処理ＩＣが視差を検出する手順を示すフローチャート図の一例である。図１３のフローチャート図では画像データの右端と左橋の画像領域で近距離の探索範囲が設定されている場合を例にしている。
S1：ステレオカメラ１０は基準画像と比較画像を撮像し画像処理ＩＣに入力する。なお、探索範囲設定部５０は画像の入力前に、近距離又は遠距離の少なくとも一方の探索範囲を設定している。
S2：視差演算処理部３０は、視差の検出対象の画素が画像の右領域又は左領域に含まれるか否かを判定する。ステップＳ２の判定がＹｅｓの場合、処理はステップＳ５に進む。
S3：ステップＳ２の判定がＮｏの場合、視差演算処理部３０は、前のサイクルの画像の右領域又は左領域に路面よりも近距離の対象が検出されたか否かを判定する。
S4：ステップＳ３の判定がＮｏの場合、中央領域には遠方の対象しか存在しないと判断して、視差演算処理部３０は、探索範囲を遠距離側に切り替える（又は遠距離側のままとする）。
S5：ステップＳ２、３の判定がＹｅｓの場合、視差演算処理部３０は、探索範囲を近距離側に切り替える（又は近距離側のままとする）。これにより、ステップＳ２のＮｏ，Ｓ３のＹｅｓの場合に、直前のサイクルの画像により次のサイクルの画像において近距離と遠距離の探索範囲を切り替えることができる。
【００７７】
以上説明したように、本実施形態の視差演算処理部３０は、視差演算器１５の回路規模を増大することなく、遠距離と近距離の両方を探索範囲として距離を計測することができる。また、リアルタイムに順次視差を求めることができ、基準画像の全体と視差画像の全体を記憶する必要がなく、画像メモリの容量を抑制できる。
【００７８】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００７９】
例えば、本実施形態では第２シフトレジスタ１３を画素又は画素ブロックをシフトさせる記憶素子として採用したが、第２シフトレジスタ１３は画素又は画素ブロックをサイクル時間ごとに移動させる記憶素子であればよい。
【００８０】
また、例えば、図８で説明した第２シフトレジスタ１３の容量を２画素としたのは説明の便宜上に過ぎず、第２シフトレジスタ１３の容量は任意に設計できる。同様に、視差演算器１５の探索幅も回路規模を考慮して１６，３２、６４又は１２８のように設計できる。
【００８１】
また、図１４に示すように、第２シフトレジスタ１３の数は２つ以上あってもよい。図１４では第２シフトレジスタ１３とは別に第２シフトレジスタ１３−１が設けられている。セレクタ１７がシフトレジスタ１２と第２シフトレジスタ１３−１を接続したとする。この場合、基準画像の画素１１が読み出された時には、シフトレジスタ１２に画素０〜７が格納されている。視差の検出対象である画素１１から見て画素０〜７は、探索範囲が４〜１１番目の画素なので、第２シフトレジスタ１３を経由する場合よりもさらに近距離を計測できる。このように、２つ以上の第２シフトレジスタ１３、１３−１を配置することで、距離レンジを多段に切り替えることができる。
【００８２】
なお、図１５に示すように、図９の視差演算処理部３０の場合も、第３シフトレジスタ１９、１９−１を複数配置することで、距離レンジを多段に切り替えることができる。
【符号の説明】
【００８３】
１０    ステレオカメラ
２０    ステレオ画像校正部
３０    視差演算処理部
４０    視差データ記憶部
５０    探索範囲設定部
１００  画像処理ＩＣ
７００  ステレオカメラシステム
１０００  車載システム
【先行技術文献】
【特許文献】
【００８４】
【特許文献１】特開２００８−０３９４９１号公報
【特許文献２】特開２０１３−１７４４９４号公報
【図１】
0006435660.tif 000002
【図２】
0006435660.tif 000003
【図３】
0006435660.tif 000004
【図４】
0006435660.tif 000005
【図５】
0006435660.tif 000006
【図６】
0006435660.tif 000007
【図７】
0006435660.tif 000008
【図８】
0006435660.tif 000009
【図９】
0006435660.tif 000010
【図１０】
0006435660.tif 000011
【図１１】
0006435660.tif 000012
【図１２】
0006435660.tif 000013
【図１３】
0006435660.tif 000014
【図１４】
0006435660.tif 000015
【図１５】
0006435660.tif 000016