(57)【要約】【課題】ハードウェアの増大を抑制しながら精度よく距離を測定する画像処理装置を提供すること。【解決手段】第１の撮像手段１３Ｌにより撮像された第１の画像と第２の撮像手段１３Ｒにより撮像された第２の画像から視差情報を生成する画像処理装置２０であって、前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する視差検出手段２４、を有し、前記視差検出手段は、前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して複数回、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する、ことを特徴とする。【選択図】図３
2015232455.tif 000002
【特許請求の範囲】
【請求項１】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理装置であって、
前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する視差検出手段、を有し、
前記視差検出手段は、前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して複数回、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する、ことを特徴とする画像処理装置。
【請求項２】
前記視差検出手段は、前記探索幅の最端の画素又は画素ブロックに隣接した画素又は画素ブロックを、次回の前記探索幅の画素又は画素ブロックの起点とする、ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記第１の撮像手段が前記第１の画像を撮像する時間間隔又は前記第２の撮像手段が前記第２の画像を撮像する時間間隔が許容する最大の回数、
前記視差検出手段は、前記起点を変更して、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する、ことを特徴とする請求項１又は２記載の画像処理装置。
【請求項４】
前記視差検出手段が検出する視差情報の信頼度を決定する信頼度決定手段と、
前記第２の画像の同じ画素又は画素ブロックの複数の視差情報のうち、前記信頼度が最も高い視差情報を前記第２の画像の画素又は画素ブロックの視差情報に決定する視差情報決定手段と、を有することを特徴とする請求項１〜３いずれか１項記載の画像処理装置。
【請求項５】
視差情報の演算回数を保持する演算回数保持手段を有し、
前記視差検出手段は、前記演算回数保持手段に保持された演算回数となるまで、前記起点を変更して、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する、
ことを特徴とする請求項１〜４いずれか１項記載の画像処理装置。
【請求項６】
前記起点となる画素位置を保持する起点画素位置保持手段を有し、
前記視差検出手段は、前記起点画素位置保持手段に保持された前記画素位置を前記第１の画像の前記探索幅の画素又は画素ブロックの起点にして、前記第２の画像の画素又は画素ブロックとの視差情報を検出する、
ことを特徴とする請求項１〜４いずれか１項記載の画像処理装置。
【請求項７】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理方法であって、
視差検出手段が、前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する第１の視差情報検出ステップと、
前記視差検出手段が、前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する第２の視差情報検出ステップと、を有することを特徴とする画像処理方法。
【請求項８】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する情報処理装置に、
前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する第１の視差情報検出ステップと、
前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する第２の視差情報検出ステップと、を実行させるプログラム。
【請求項９】
第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する視差データ生産方法であって、
視差検出手段が、前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する第１の視差情報検出ステップと、
前記視差検出手段が、前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する第２の視差情報検出ステップと、
を有することを特徴とする視差データ生産方法。
【請求項１０】
撮像手段により撮像した画像を処理して機器の制御を行う機器制御システムであって、
第１の画像を撮像する第１の撮像手段及び第２の画像を撮像する第２の撮像手段と、
前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する視差検出手段と、
前記視差検出手段が検出した視差情報に基づき機器を制御する機器制御手段と、を有し、
前記視差検出手段は、前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して複数回、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する、ことを特徴とする機器制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の画像と第２の画像から視差情報を生成する画像処理装置等に関する。
【背景技術】
【０００２】
運転者が車両を運転する際に運転を支援する車両の運転者支援システムが知られている。 運転支援システムは、対象（歩行者、他車両、障害物等）との距離を測定し、対象と衝突する可能性がある場合は、警報を出力して運転者に回避を促したり、ブレーキを作動させて減速させたり停止させたりする。
【０００３】
運転支援システムでは、この距離の測定に例えば車の前方に設置したステレオカメラが用いられる場合がある。ステレオカメラは、異なる位置から同じ対象を撮像した時、撮像された画像上の結像位置が対象までの距離によって変化することを利用して、対象までの距離を測定する。 
図１はステレオカメラの測距原理を説明する図の一例である。基線長Ｂ（左右のカメラ間の距離）、焦点距離ｆ、及び、視差ｄ（視点による対象の結像点の位置の差）を用いて、撮像面から物体までの距離Ｚは以下の式で表すことができる。
Ｚ＝Ｂ・ｆ／ｄ …（式１）
よって、視差ｄを求めることができれば、距離Ｚを算出できる。視差dの決定には、左右のカメラから得られた一対の画像の小領域を水平方向にシフトしながら相関値を計算し、最も高い相関が得られた際のシフト量を視差ｄとして算出するブロックマッチングがよく用いられる。また、相関の評価値としては、２つの小領域の各画素値の差の絶対値和ＳＡＤ（sum of absolute difference）や差の二乗和ＳＳＤ（sum of squared difference）が用いられることが多い。 
相関値の算出は１画素ずつシフトして行うが、シフト量の最大値（以下、探索幅という）は予め定められている。探索幅の最大値が大きいほど、大きな視差ｄが決定され得るため、探索幅は測距精度に影響を与える。
【０００４】
例えば  Ｂ＝1000〔mm〕、ｆ＝10〔mm〕の場合に、視差ｄ＝5〔mm〕と視差ｄ＝10〔mm〕とを比較すると距離Ｚは以下のようになる。
d=5  の場合  Z=1000×10/5=2000〔mm〕
d=10の場合  Z=1000×10/10=1000〔mm〕
したがって、視差d=5〔mm〕では車両から２〔ｍ〕以上遠方の距離しか測定できないが、視差d=10〔mm〕では車両から１〔ｍ〕以上遠方であれば対象までの距離を測定可能になる。
【０００５】
しかし、探索幅が大きいほどブロックマッチングの回数が増え演算量が増えるため大きなハードウェア回路が必要になってしまう。図２は、視差ｄを演算するハードウェア回路の増大を説明する図の一例である。図２（ａ）では、画像処理ＩＣ２０がハードウェア回路に相当する。画像処理ＩＣ２０は基準画像と比較画像を取得して視差ｄを演算し、視差データ記憶部２５に記憶させる。視差データ記憶部２５は、視差を求めることが可能な基準画像と比較画像の重複部分と同じサイズの記憶容量を有している。
【０００６】
従来、画像処理ＩＣ２０が探索幅Ｗで視差ｄを算出していた場合、画像処理ＩＣ２０は探索幅Ｗの相関値を算出するための加算器、算術演算を行うシフト回路、比較回路、及び、これらを接続するための結線を有していればよかった。
【０００７】
これに対し、従来の測定可能な最も短い距離の半分の距離まで測定可能となるように探索幅Ｗを広げる場合、上記の算出例のように、必要な探索幅はＷ×２となる。探索幅Ｗが２倍になれば、図２（ｂ）に示すように、画像処理ＩＣ２０が必要とするハードウェア回路も２倍程度、大きくなってしまう。このため、探索幅には制限が設けられ、測定可能な距離や精度の制約になる場合があった。
【０００８】
そこで、演算量の増加を抑制しながら精度よく近傍の距離を測定する技術が考案されている（例えば、特許文献１参照。）。特許文献１には、近距離の対象物が映っている画像を縦横１／２のサイズに縮小し、この縮小画像における視差探索幅を通常画像と同じ探索幅Ｗとすることにより、等価的に探索幅を２倍とするステレオ画像処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載された演算方法では、画像を縮小しない状態でも探索幅Ｗで探索するので、縮小後の探索を含めるとハードウェア回路が増大するという問題が残ってしまう。また、特許文献１に記載された演算方法では画像を縮小するため、近距離の視差の精度が低下するという問題がある。
【００１０】
本発明は、上記課題に鑑み、ハードウェアの増大を抑制しながら精度よく距離を測定する画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題に鑑み、本発明は、第１の撮像手段により撮像された第１の画像と第２の撮像手段により撮像された第２の画像から視差情報を生成する画像処理装置であって、前記第２の画像の画素又は画素ブロックを、前記第１の画像の探索幅の画素又は画素ブロックで探索して視差情報を検出する視差検出手段、を有し、前記視差検出手段は、前記第１の画像における前記探索幅の画素又は画素ブロックの起点を変更して複数回、前記第２の画像の同じ画素又は画素ブロックの視差情報を検出する、ことを特徴とする。
【発明の効果】
【００１２】
ハードウェアの増大を抑制しながら精度よく距離を測定する画像処理装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】ステレオカメラの測距原理を説明する図の一例である。
【図２】視差ｄを演算するハードウェア回路の増大を説明する図の一例である。
【図３】本実施形態のステレオカメラシステムの概略的な動作を説明する図の一例である。
【図４】４つのステレオカメラ１〜４の搭載位置を模式的に示す図の一例である。
【図５】車載システムの構成図の一例である。
【図６】画像処理ＥＣＵの構成図の一例である。
【図７】画像処理ＩＣの基本構成の一例を示す図である。
【図８】画像処理ＩＣの動作手順を示すフローチャート図の一例である。
【図９】図８のステップＳ１５の処理を説明するフローチャート図の一例である。
【図１０】１回目の視差ｄの演算におけるブロックマッチングを説明する図の一例である。
【図１１】図８のステップＳ15-1の処理の詳細な手順を示すフローチャート図の一例である。
【図１２】ステレオ演算処理部の回路構成を模式的に示す図の一例である。
【図１３】２回目の視差ｄの演算におけるブロックマッチングを説明する図の一例である。
【図１４】視差ｄの信頼度を説明するための図である。
【図１５】視差ｄの演算のタイミングチャート図の一例である。
【図１６】演算回数設定部が車速に応じて演算回数を設定する手順を示すフローチャート図の一例である。
【図１７】探索範囲設定部が探索範囲を設定する手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図３は、本実施形態のステレオカメラシステムの概略的な動作を説明する図の一例である。本実施形態のステレオカメラシステムは、画像処理ＩＣ２０が１組の画像データ（すなわち、１つの着目画素）について複数回、視差ｄの演算を行うことが特徴の１つとなっている。
【００１５】
ここで、従来の探索範囲を第１探索範囲ＴＨ１とし、本実施形態で拡張された探索範囲を第２探索範囲ＴＨ２とする。第１探索範囲ＴＨ１は着目画素から探索幅Ｗの範囲である。第２探索範囲ＴＨ２は、着目画素＋Ｗの次の画素から探索幅Ｗの範囲である。なお、探索幅はどちらもＷで同じである。
【００１６】
１．画像処理ＩＣ２０は、基準画像と比較画像とが撮像されると、着目画素毎に、比較画像の探索ブロックを第１探索範囲ＴＨ１の範囲で走査し、基準画像のブロックとの相関値を算出し、視差ｄを視差データ記憶部１に記憶する。よって、視差データ記憶部１には、視差を求めることが可能な基準画像と比較画像の重複部分（以下、単に基準画像の画素数分と称する）の全画素について視差ｄが記憶され得る。
【００１７】
２．次に、画像処理ＩＣ２０は、次の基準画像と比較画像とが撮像されるまでに、着目画素毎に、比較画像の探索ブロックを第２探索範囲ＴＨ２で走査し、基準画像のブロックとの相関値を算出し、視差ｄを視差データ記憶部２に記憶する。よって、視差データ記憶部２には、基準画像の画素数分の全画素について、第１探索範囲ＴＨ１よりも近距離側の視差ｄが記憶され得る。
【００１８】
３．１つの着目画素に対し２つの視差ｄが演算されているため、例えば、後段の処理部（後述するＣＰＵなど）は視差ｄの統合処理を行う。後段の処理部は、例えば、画素毎に信頼度の高い方の視差ｄを最終的な視差ｄとして決定する。
【００１９】
したがって、本実施形態のステレオカメラシステムによれば、同じ基準画像と比較画像に対し複数回（図では２回）、画像処理ＩＣ２０が視差ｄを算出することで、ハードウェア回路を大きくすることなく、探索範囲を近距離側に広げることができる。
【００２０】
＜構成例＞
図４は、４つのステレオカメラ１〜４の搭載位置を模式的に示す図の一例である。ステレオカメラ１は前方に、ステレオカメラ２は右側方に、ステレオカメラ３は左側方に、ステレオカメラ４は後部に、それぞれ配置されている。ステレオカメラ１は、室内ルームミラーや車両前部バンパに、車両前方のやや水平下向きに光軸を向けて配置される。ステレオカメラ２は、例えば、右ドアミラー、車両右側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Ａピラー、Ｂピラー又はＣピラーなどに、車両右側方、車両右側方よりもやや後方又は車両右側方よりもやや前方に光軸を向けて配置される。ステレオカメラ３は、例えば、左ドアミラー、車両左側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Ａピラー、Ｂピラー又はＣピラーなどに、車両左側方、車両左側方よりもやや後方又は車両左側方よりもやや前方に光軸を向けて配置される。ステレオカメラ４は、後部ナンバープレートの周辺や、後部バンパなどに配置されている。
【００２１】
ステレオカメラ１は、主に、車両前方の歩行者との距離、先行車両との距離、その他の地物（標識、信号機、電柱、ガードレール等）や障害物との距離を測定するために用いられる。障害物との距離に応じて、ステレオカメラシステムは運転者に警告したり、制動をかけることができる。
【００２２】
ステレオカメラ２，３は、乗員がドアの開閉をする際に、周囲から近づいてくる人や物との距離を検出するために用いられる。駐車場などで、隣の他車両との距離を測定し、また、駐車中に後側方から接近する自転車、バイク、及び、歩行者との距離を測定する。ステレオカメラシステムは、距離に応じて、運転者に警告したり、ドアの開放を禁止することができる。
【００２３】
ステレオカメラ４は、後方の障害物との距離を検出したり、乗員が後部ドアを開放する際に障害物との距離を測定する。障害物が所定の距離内にある場合、ドアの開放を禁止することができる。また、バック走行中、ステレオカメラは障害物との距離に応じて、運転者に警告したり、制動をかけることができる。
【００２４】
図５は、車載システム６００の構成図の一例である。車載システム６００は機器制御システムの一例である。一台の車両には多くのマイコンが搭載されており、１つ以上のマイコンが搭載された情報処理装置をＥＣＵ（Electronic Control Unit）又は電子制御ユニットと呼ぶことが多い。多様なＥＣＵが車載されているが、例えばエンジンを制御するエンジンＥＣＵ２００、ブレーキを制御するブレーキＥＣＵ３００、ドアやシートを制御するボディＥＣＵ４００、ナビやＡＶ機器を制御する情報系ＥＣＵ５００等が知られている。
【００２５】
本実施形態では、ステレオカメラ１３により距離情報を取得するＥＣＵを画像処理ＥＣＵ１２と呼ぶこととする。画像処理ＥＣＵ１２とステレオカメラ１３はステレオカメラシステム１００の要素となる。
【００２６】
各ＥＣＵは、ＣＡＮ（Controller Area Network）やＦｒｅｘＲａｙ、Ｍｏｓｔ（Media Oriented Systems Transport）、ＬＩＮ（Local Interconnect Network）、Ethernet（登録商標）などの規格の車載ＬＡＮ６０１を介して他のＥＣＵと通信可能に接続されている。車載ＬＡＮ上のデータは、車載ＬＡＮ６０１に接続された全てのＥＣＵが参照可能である。これにより、各ＥＣＵが協調制御することが可能になる。
【００２７】
例えば、画像処理ＥＣＵ１２が障害物との距離と相対速度からＴＴＣ（Time To Collision）を算出して車載ＬＡＮ６０１に送信すると、ＴＴＣに応じてブレーキＥＣＵ３００が減速したり、ボディＥＣＵがシートベルトを巻き上げるなどの制御を行う。この他、先行車両に追従走行したり、車線からの逸脱を抑制したり、障害物を回避するように操舵する制御を行うことができる。
【００２８】
図６は、画像処理ＥＣＵ１２の構成図の一例を示す。画像処理ＥＣＵ１２は、ステレオカメラ１３（図では１つのみだが複数個を搭載してもよい）と接続されている。ステレオカメラ１３については図７にて説明する。
【００２９】
画像処理ＥＣＵ１２には一台以上のマイコンが搭載されており、一般的なマイコンと同様にＣＰＵ１２６，ＲＡＭ１２２、ＲＯＭ１２５、ＣＡＮＣ（ＣＡＮ  Controller）１２４、Ｉ／Ｏ１２１、１２３等を有すると共に、画像処理のための画像処理ＩＣ２０を有している。これらは、システムバスや外部バス及びバスコントローラを介して接続されている。
【００３０】
ステレオカメラ１３はＩ／Ｏ１２３に接続され、撮像された画像データは、画像処理ＩＣ２０が画像処理して視差ｄを演算する。画像処理ＩＣ２０は、所定の画像処理機能を実現する例えばＦＰＧＡやＡＳＩＣ等の電気回路である。よって、画像処理ＩＣ２０はプログラム４１（又はファームウェアと呼んでもよい）を記憶している。
【００３１】
ＣＡＮＣ１２４は、ＣＡＮプロトコルに基づき他のＥＣＵと通信を行う。ＣＰＵ１２６は、ＲＯＭ１２５に記憶されたプログラム４２を、ＲＡＭ１２２を作業メモリに実行して、ＣＡＮＣ１２４を介して、画像処理結果を他のＥＣＵに送信するなどの各種の制御を行う。
【００３２】
図７は、画像処理ＩＣ２０の基本構成の一例を示す図である。画像処理ＩＣ２０にはステレオカメラ１３が接続されている。ステレオカメラ１３は、二台の単眼カメラがほぼ同時にそれぞれ撮像する画像データを画像処理ＩＣ１００に入力する。ステレオカメラ１３は、車両の正面に対し左側に配置された左カメラ１３Ｌと右側に配置された右カメラ１３Ｒを有している。左カメラ１３Ｌと右カメラ１３Ｒは光軸が互いに平行になるように、基線長Ｂの距離を置いて配置されている。基準画像を左カメラ１０Ｌが撮像した画像データ、比較画像を右カメラ１０Ｒが撮像した画像データとして説明する。左カメラ１０Ｌと右カメラ１０Ｒを逆の関係にしてもよい。
【００３３】
左カメラ１３Ｌと右カメラ１３Ｒは、露光時間やゲインが可変のＣＣＤカメラであり、両者は互いに同期が取られ、同一タイミングで画像を撮像している。なお、撮像素子はＣＣＤに限らず、ＣＭＯＳ等の撮像素子でもよい。
【００３４】
画像処理ＩＣ２０は、ステレオ画像入力部２１、ステレオ画像校正部２２、ステレオ画像記憶部２３、ステレオ演算処理部２４及び視差データ記憶部２５を有している。
【００３５】
ステレオ画像入力部２１は左カメラ１３Ｌと右カメラ１３Ｒがそれぞれ撮像した画像データを取得する。具体的にはフレーム同期信号ＦＶのＯＮからＯＦＦまでの画像データを１つの画像データとして、左カメラ１３Ｌと右カメラ１３Ｒから画像データを取得する。
【００３６】
ステレオ画像校正部２２は、ステレオカメラ１３から入力された基準画像と比較画像の画像データを校正する。左カメラ１３Ｌと右カメラ１３Ｒは、レンズ光学系と撮像素子の機械的なずれやレンズ光学系に生じる歪曲収差などにより、同じカメラであっても異なるカメラ特性を有している。また、取り付けられた左カメラ１３Ｌと右カメラ１３Ｒに取り付け位置のずれが生じる場合もある。ステレオ画像校正部２２は、これらを校正する。具体的には、事前に格子模様などの画像を撮像し、基準画像と比較画像の画素値の対応を求めておくキャリブレーションを行っておく。詳細は、非特許文献１等に記載されているが、キャリブレーション手法は非特許文献１の内容に限定されない。キャリブレーション結果は例えばＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）に登録され、ステレオ画像校正部２２はＬＵＴを参照して、例えば比較画像の画素位置を置き換える。これにより、視差以外の差異が生じない基準画像と比較画像が得られる。
【００３７】
ステレオ画像記憶部２３は、ステレオ画像校正部２２が校正した基準画像と比較画像を視差演算のための元画像として記憶する。ステレオ画像記憶部２３に記憶された１対の基準画像と比較画像は複数回、視差ｄの演算に使用される。
【００３８】
ステレオ演算処理部２４は、基準画像と比較画像を画像処理して、基準画像と比較画像の視差ｄを算出する。視差ｄが視差情報である。具体的には、ステレオ演算処理部２４は、ステレオ画像記憶部２３に記憶された基準画像と比較画像に対して、両画像の小領域（ブロック）ごとの相関値を求めることで対応点を検出するブロックマッチングを行い、両画像間の対応点の画素のずれ（視差ｄ）を算出する。この視差ｄは、式（１）の視差ｄに対応し、焦点距離f、基線長Ｂを用いて着目画素の距離情報を取得することが可能になる。ステレオ演算処理部２４の詳細は後述する。
【００３９】
ステレオ演算処理部２４の信頼度算出部２４０１は、それぞれの視差ｄの信頼度を算出する。したがって、視差ｄには信頼度が添付されている。
【００４０】
ステレオ演算処理部２４は、演算回数レジスタ２４０２及びパラメータレジスタ２４０３を有している。演算回数レジスタ２４０２にはＣＰＵ１２６の演算回数設定部３２が視差ｄの演算回数を設定する。本実施形態では少なくとも１であるが、ハードウェア回路の大きさを同じにしたまま従来よりも近距離の視差ｄを取得する場合には２以上が設定される。原則的に、常に決まった固定値（例えば２や３）が設定されるが、図１６で説明するように演算回数を車両状況に応じて動的に変更してもよい。
【００４１】
パラメータレジスタ２４０３には、ステレオ演算処理部２４が視差ｄの演算を開始する探索幅Ｗの起点が設定される。例えば、探索幅Ｗが３２画素であるとする。この場合、視差ｄの１回目の演算では、パラメータレジスタ２４０３に"０"と設定され、２回目（次回）の演算では、パラメータレジスタ２４０３に"３２"と設定される。これにより、ステレオ演算処理部２４は、視差ｄの１回目の演算では、着目画素を起点に０〜３１番の３２画素を探索幅として視差ｄを演算し、視差ｄの２回目の演算では、着目画素から３２画素の次の画素を起点に３２〜６３番の３２画素を探索幅として視差ｄを演算する。
【００４２】
パラメータレジスタ２４０３の起点は、ステレオ演算処理部２４が視差ｄを演算する毎に更新する。ＣＰＵ１２６が設定してもよい。
【００４３】
視差データ記憶部２５は、視差データ記憶部１〜Ｎを有している。ステレオ演算処理部２４は、視差ｄの１回目の演算結果を視差データ記憶部１に記憶し、視差ｄの２回目の演算結果を視差データ記憶部２に記憶し、視差ｄのＮ回目の演算結果を視差データ記憶部Ｎに記憶する。なお、視差データ記憶部２５は、画像処理ＩＣ２０の外部の例えばＲＡＭ１２２に設けられてもよい。また、画像処理ＩＣ２０及びＲＡＭ１２２以外の記憶手段に設けられてもよい。
【００４４】
そして、ＲＡＭ１２２には統合視差データ記憶部２６が設けられている。統合視差データ記憶部２６には視差データ記憶部１〜Ｎに記憶された視差ｄが１つの視差ｄに統合されて記憶される。統合視差データ記憶部２６を視差データ記憶部２５に設けてもよい。
【００４５】
一方、ステレオカメラシステム１００は、ＣＰＵ１２６がプログラム４２を実行し図６のハードウェアと協働することで実現される演算回数設定部３２、探索範囲設定部３１、及び、視差統合部３３を有している。視差統合部３３は、視差データ記憶部１〜Ｎに記憶されている視差ｄを統合する。すなわち、視差データ記憶部２５には、おなじ着目画素に対し、演算回数だけ視差ｄが記憶されているので、これを１つに統合する。具体的には、信頼度算出部２４０１が算出する信頼度を利用する。視差統合部３３は、視差データ記憶部１〜Ｎに記憶されている視差ｄのうち、信頼度が最も高いものを各画素の最終的な視差ｄに決定する。
【００４６】
統合された視差ｄは統合視差データ記憶部２６に記憶される。この視差ｄは車両制御や認識処理等に利用される。なお、視差データ記憶部２５に記憶する際、視差ｄを距離情報に換算しておいてもよい。
【００４７】
演算回数設定部３２は、演算回数レジスタ２４０２に演算回数を設定する。演算回数設定部３２は、ステレオカメラシステム１００の起動時の固定の演算回数を、又は、車両状況に応じて動的に演算回数を設定する。探索範囲設定部３１は上記のように、視差ｄの演算を開始する探索幅Ｗの起点をパラメータレジスタ２４０３に設定する。
【００４８】
＜ステレオ演算処理部の処理の詳細＞
図８は、画像処理ＩＣ２０の動作手順を示すフローチャート図の一例である。
Ｓ１１：ステレオ演算処理部２４は変数ｋをゼロに初期化する処理を行う。
Ｓ１２：ステレオカメラ１３が基準画像と比較画像を撮像し、ステレオ画像入力部２１が基準画像と比較画像を取得する。ステレオ画像校正部２２はＬＵＴ等により基準画像と比較画像を校正し、ステレオ画像記憶部２３に記憶する。
Ｓ１３：ステレオ演算処理部２４は、変数ｋが演算回数Ｎと一致したか否かを判定する。
Ｓ１４：ステップＳ１３の判定がＮｏの場合、視差ｄの演算回数が足りないので、ステレオ演算処理部２４はパラメータレジスタ２４０３にパラメータを設定する。具体的には変数ｋに応じて以下のように設定する。
ｋ＝０の場合、パラメータ＝０
ｋ＝１の場合、パラメータ＝３２
ｋ＝２の場合、パラメータ＝６４
：
ｋ＝Ｎ−１の場合、パラメータ＝探索幅Ｗ×ｋ
Ｓ１５：ステレオ演算処理部２４は、左右の２つの画像データ（比較画像と基準画像）に対してブロックマッチングを行い、視差ｄを演算する。
【００４９】
Ｓ１６：ステレオ演算処理部２４は、何回目の演算かに応じて、演算した視差ｄを視差データ記憶部１〜Ｎに記憶させる。
【００５０】
Ｓ１７：ステレオ演算処理部２４は、変数ｋに１を加える。
【００５１】
Ｓ１８：ステップＳ１３の判定がＹｅｓの場合、演算回数レジスタ２４０２に設定された演算回数だけ視差ｄを演算したので、ステレオ演算処理部２４は視差統合部３３に視差ｄの統合を要求する。これにより、視差統合部３３がＮ個の視差ｄを統合する。
【００５２】
以上で、１組の基準画像と比較画像について、視差ｄを求める処理が終わったので、画像処理ＩＣ２０は繰り返し、入力される基準画像と比較画像について視差ｄを求める。
【００５３】
＜＜視差ｄの演算＞＞
図９は、図８のステップＳ１５の処理を説明するフローチャート図の一例である。
Ｓ15-1：ステレオ演算処理部２４は、左右の２つの画像データ（比較画像と基準画像）に対してブロックマッチングを行い、ピクセル単位での視差dintを算出する。
【００５４】
図１０は、１回目の視差ｄの演算におけるブロックマッチングを説明する図の一例である。ブロックマッチングでは、入力画像を小領域の探索ブロックに分割し、基準画像の探索ブロックに対して比較画像の探索ブロックの位置を、画像の水平方向に１画素ずつずらしながら（シフトしながら）相関値の計算を行う。本実施形態では、
探索ブロックのサイズ      ：  ７×７
基準画像の各画素の輝度値  ：  Ｍi,j（i=1〜7、j=1〜7）
比較画像の各画素の輝度値  ：  Ｓi,j（i=1〜7、j=1〜7）
とする。ただし、探索ブロックのサイズは一例に過ぎない。
【００５５】
１回目の探索では、着目画素を起点に０〜３１画素まで探索する（第１探索範囲ＴＨ１の範囲で探索する）。第１探索範囲ＴＨ１は着目画素を起点として探索幅Ｗまでの範囲である。第１探索範囲ＴＨ１で相関値が最もよい（この場合は相関値が最も小さい）シフト量を決定する。この最も相関値が小さかったシフト量が、ピクセル単位での視差dintを表す。
【００５６】
なお、本実施形態では、ＺＳＳＤ値を相関値とするが、このＺＳＳＤ値は一般のＺＳＳＤ値を３倍したものになっている。この詳細な手順について図１１，１２で説明する。
【００５７】
S15-2：図９に戻り、ステレオ演算処理部２４は、ステップＳ１５−１で算出された相関値を用いて、サブピクセル単位での視差ｄsubを算出する。
【００５８】
サブピクセル単位の視差の算出方法としては、等角直線フィッティング、パラボラフィッティング、高次多項式推定（４次）、又は、高次多項式推定（６次）などが知られている。本実施形態では演算時間などを考慮して予め定められた算出方法又は動的に切り替えられた算出方法でサブピクセルの視差dsubを算出するものとする。
【００５９】
S15-3：ステレオ演算処理部２４は、ピクセル単位の視差dintとサブピクセル単位の視差dsubを加算することで、視差dを算出する。
【００６０】
＜＜S15-1の処理＞＞
続いて、ステップS15-1のピクセル単位の視差ｄの求め方について処理について詳細に説明する。図１１は、図８のステップＳ15-1の処理の詳細な手順を示すフローチャート図の一例を、図１２はステレオ演算処理部２４の回路構成を模式的に示す図の一例をそれぞれ示す。加算器２４１は比較画像の探索ブロックの４８個の画素の画素値を加算し、シフト部２４２は加算結果を４bit右シフトする。シフト部２４３は比較画像の探索ブロックの４８個の画素の画素値をそれぞれ１bit左シフトし、加算器２４４は１bit左シフトされた画素値と元の画素値とを加算する。基準画像側のブロックについても同様である。ＺＳＳＤ演算器２４９はＺＳＳＤ値を算出する。
【００６１】
S15-11：加算器２４１は比較画像の探索ブロックの注目画素以外の４８画素の和を算出し、加算器２４５は基準画像の探索ブロックの注目画素以外の４８画素の和を算出する。なお、注目画素とは探索ブロック内の中心画素を意味し、本実施形態ではＭ4,4、Ｓ4,4である。
【００６２】
加算器２４１，２４５は、１画素毎に加算を４８回繰り返す回路でもよいが、４８画素の加算を１回で行う回路、又は、ｍ個の画素の加算を１度に行いそれを４８／ｍ回繰り返す回路など、さまざまな実装形態がある。一般に１度に加算可能な画素数が多いほど演算が速いが回路規模が大きくなる傾向にあるので、回路規模の制約と必要な演算速度から加算器２４１，２４５を設計する。
【００６３】
Ｓ15-12：次に、シフト部２４２は加算器２４１が加算した４８個の画素の加算結果を４bit右シフトし、シフト部２４６は加算器２４５が加算した４８個の画素の加算結果を４bit右シフトする。これは算術シフトであり、上位４桁にはゼロ（正値を意味する）が補充され、下位４桁は捨てられる。４bitの右シフトは１６で除算することと等価である。本来、４８個の画素の画素値の平均値を求めるのであれば、４８で除算すればよいが、シフト演算では２のべき乗の数でしか除算できない。そこで、本実施形態では、４bit右シフトすることで１６で除算し、注目画素以外の４８画素の画素値の平均値×３を近似平均値としている。
近似平均値
＝４８画素の画素値の合計を４bit右シフトした値
＝４８画素の画素値の平均値×３
S15-13：シフト部２４３と加算器２４４が、比較画像の探索ブロック内の４８個の画素の画素値を３倍した値を計算し、シフト部２４７と加算器２４８が、基準画像の探索ブロック内の４８個の画素の画素値を３倍した値を計算する。すなわち、シフト部２４３は比較画像の各画素の画素値を１bit左シフトし、シフト部２４７は基準画像の各画素の画素値を１bit左シフトする。最上位ビットには正値を意味するゼロを保持したまま、最上位ビット以外の下位ビットをそれぞれ１ビット左にシフトし、最下位ビットにゼロを補充する。これにより、２倍した値が得られる。
【００６４】
シフト部２４３は画素値を２倍した値を加算器２４４に入力し、加算器２４４は比較画像の各画素の画素値と２倍された画素値を加算する。同様に、シフト部２４７は画素値を２倍した値を加算器２４８に入力し、加算器２４８は比較画像の各画素の画素値と２倍された画素値を加算する。これにより、比較画像と基準画像それぞれの画素の画素値を３倍した値が得られる。
【００６５】
Ｓ15-14：ＺＳＳＤ演算器２４９が、下式を用いて、ＺＳＳＤ値を３倍した値と同等の値を算出する。以下、この値を単にＺＳＳＤ値という。
３×ＺＳＳＤ＝Σ｛（３×Ｓij−近似平均値）−（３×Ｍij−近似平均値）｝２
すなわち、ＺＳＳＤ演算器２４９は、比較画像について、各素毎に、画素値を３倍した値から近似平均値を減じ、基準画像について、各素毎に、画素値を３倍した値から近似平均値を減じる。そして、比較画像の減算値（３×Ｓij−近似平均値）から基準画像の減算値（３×Ｍij−近似平均値）を減じた値を二乗する。そして、４８個得られる二乗値を全て加算する。このような演算により、除算処理することなく相関値としてＺＳＳＤ値が得られる。
【００６６】
S15-15：ステレオ演算処理部２４は、探索画素数が探索幅Ｗ以上か否かを判定する。
【００６７】
S15-16：探索画素数が探索幅Ｗより大きくない場合、ステレオ演算処理部２４は、探索画素数を１つ増やし（注目画素を水平方向に１画素ずつずらして）、S15-11〜15-14の処理を、探索画素数が探索幅Ｗより大きくなるまで演算する。したがって、探索幅Ｗ個の相関値が得られ、このうち最も小さいＺＳＳＤ値が得られたシフト量が、ピクセル単位での視差dintである。
【００６８】
＜＜２回目の視差ｄの演算＞＞
図１３は、２回目の視差ｄの演算におけるブロックマッチングを説明する図の一例である。探索ブロックのサイズやシフト量は１回目と同じだが、２回目のブロックマッチングでは、第２探索範囲ＴＨ２が探索範囲となる。第２探索範囲ＴＨ２は、着目画素に探索幅Ｗを加えた位置の画素に隣接した次の画素（第１探索範囲ＴＨ１に隣接した画素）を起点として探索幅Ｗまでの範囲である。
【００６９】
なお、基準画像と比較画像はすでにステレオ画像記憶部２３に記憶されており、２回目の視差ｄの演算にはステレオ画像記憶部２３から再度読み出したものを使用する。
【００７０】
２回目の視差ｄの演算時は、パラメータレジスタ２４０３に第２探索範囲ＴＨ２の起点（例えば３２）が設定されているので、ステレオ演算処理部２４は３２画素目から相関値を演算する。相関値の演算方法は１回目と同様である。
【００７１】
ステレオ演算処理部２４はシフト量を１つずつずらしながら、第２探索範囲ＴＨ２の範囲で視差ｄを演算する。ステレオ演算処理部２４は最も相関がよい視差ｄをピクセル単位の視差ｄintに決定し、サブピクセル単位の視差ｄsubを演算した後、視差ｄを算出する。そして、算出した視差ｄを視差データ記憶部２に記憶させる。
【００７２】
＜ステップＳ１８の統合処理＞
続いて、２つの視差ｄの統合について説明する。視差ｄの統合は、相関値の算出に伴って得られる信頼度を用いて行う。
【００７３】
信頼度算出部２４０１は、視差ｄの決定に用いた相関置が信頼できるか否かを判定するための信頼度を算出する。
【００７４】
図１４は、視差ｄの信頼度を説明するための図である。図１４では、横軸が探索位置（シフト量）、縦軸が相関計算値（例えばＳＳＤ値、ＳＡＤ値、ＺＳＳＤ値であるが、図ではＳＡＤ値である）を示す。視差ｄが正しく求められていた場合、相関値は視差ｄに近づくとなだらかに減少し、視差ｄで最小値を取るものと推定される。
【００７５】
逆に、例えば、探索幅の相関値がすべて似ていた場合、決定された視差ｄは正しくない可能性がある。このようなことは、基準画像と比較画像のブロックが平坦な領域の場合、シフト量を変えても相関値に大きな変化が見られないために生じる場合がある。したがって、例えば、相関値（Min）と相関値（Max）の差分（以下、相関差分という）に基づき信頼度を決定できる。
【００７６】
図１４（ａ）（ｂ）では、シフト量＝Ｃの時に相関値が最小になっているが、相関差分に大きな違いがある。この違いを、信頼度算出部２４０１は、相関差分閾値により判断して、それぞれの視差ｄに信頼度を付与する。図１４（ａ）では相関差分＜相関差分閾値であるが、図１４（ｂ）では相関差分＞相関差分閾値である。
【００７７】
よって、信頼度算出部２４０１は、図１４（ａ）の視差ｄに高い信頼度（例えば１）、図１４（ｂ）の視差ｄに低い信頼度（例えば０）を付与する。
【００７８】
なお、信頼度を１又は０の二値でなく、多段階で決定してもよい。例えば、信頼度に２bitを用いれば信頼度を４段階に決定できる。多段階に決定するため、例えば、最も相関がよいシフト量の前後の数点の相関値を取り出し、それらがシフト量に応じて減少又は増大してるかを判断する。この判断結果と相関差分閾値による判断結果を組み合わせることで、信頼度を４段階に決定できる。
相関差分が大、シフト量に応じて相関値が減少及び増大  →  信頼度３
相関差分が大、シフト量に応じて相関値が減少又は増大  →  信頼度２
相関差分が小、シフト量に応じて相関値が減少及び増大  →  信頼度１
相関差分が小、シフト量に応じて相関値が減少又は増大  →  信頼度０
視差統合部３３は、視差データ記憶部１と２に記憶されている視差ｄの信頼度に応じて以下のように、最終的な視差ｄを決定する。
(i)視差データ記憶部１と２の視差ｄのうち信頼度が高い方を選択する（最も信頼度が高い視差ｄを選択する）。
(ii)視差データ記憶部１と２の視差ｄの信頼度が共に高い（１）の場合、視差データ記憶部２の視差ｄを採用する。これにより、視差ｄが大きくなるのでより近い距離情報が得られる。
(iii)視差データ記憶部１と２の視差ｄの信頼度が共に低い（０）の場合、視差ｄが算出されなかったものとする。
【００７９】
以上の処理で、統合視差データ記憶部２６には、各画素ごとに１つの視差ｄが記憶された状態になる。
【００８０】
＜演算回数とフレーム間隔＞
図１５は視差ｄの演算のタイミングチャート図の一例を示す。図１５（ａ）は比較のために示した従来のタイミングチャート図であり、図１５（ｂ）は演算回数が２回の場合のタイミングチャート図である。
【００８１】
図１５（ａ）に示すように、フレーム同期信号ＦＶに同期して、左カメラ１３Ｌと右カメラ１３Ｒから基準画像と比較画像が画像処理ＩＣ２０に入力される。ステレオ演算処理部２４は第１探索範囲ＴＨ１で探索して視差ｄを演算し、視差データ記憶部１に記憶させる。従来は、この処理を、基準画像と比較画像が入力されるごとに繰り返している。
【００８２】
本実施形態では、図１５（ｂ）に示すように、第１探索範囲ＴＨ１における探索は従来と同様であるが、第１探索範囲ＴＨ１における探索の後、次の基準画像と比較画像が入力されるまでに、ステレオ演算処理部２４は第２探索範囲ＴＨ２で探索して、視差ｄを演算し、視差データ記憶部２に記憶させる。
【００８３】
したがって、フレーム同期信号の時間間隔が許容する範囲で、複数回、視差ｄを演算することが可能である。例えば、フレーム同期信号の時間間隔をＴ秒、１回の視差ｄの演算に必要な時間をｔ秒とすると、Ｎ＝Ｔ／ｔ＋Ｑ（Ｑは余り）で求められるＮ回、画像処理ＩＣ２０は視差ｄを求めることができる。
【００８４】
演算回数設定部３２は、このようにして求められたＮ回の演算回数を演算回数レジスタ２４０２に設定する。演算回数Ｎが固定値の場合、演算回数Ｎは演算回数設定部３２に予め設定されている。
【００８５】
＜＜演算回数の動的な変更＞＞
また、最大の演算回数Ｎの範囲で演算回数を動的に変更してもよい。例えば車両の走行中、動的に視差ｄの演算回数を変更する。高速走行中は、遠方の障害物とのＴＴＣが短くなるので、遠方の障害物の距離を算出することが望まれる場合が多い。これに対し、停止中や低速走行中は近くの歩行者などが飛び出してくるおそれがあるので、近くの障害物の距離を算出することが望まれる場合が多い。
【００８６】
図１６は、演算回数設定部３２が車速に応じて演算回数を設定する手順を示すフローチャート図の一例である。
【００８７】
演算回数設定部３２は定期的に車速を取得する（S15-1-1）。
【００８８】
車速と閾値１を比較して（S15-1-2）、ステップS15-1-2の判定がＹｅｓの場合、演算回数設定部３２は演算回数１を設定する（S15-1-3）。
【００８９】
ステップS15-1-2の判定がＮｏの場合、演算回数設定部３２は車速と閾値２を比較する（S15-1-4）。閾値１＞閾値２である。
【００９０】
ステップS15-1-4の判定がＹｅｓの場合、演算回数設定部３２は演算回数２を設定する（S15-1-5）。
【００９１】
ステップS15-1-5の判定がＮｏの場合、演算回数設定部３２は演算回数３を設定する（S15-1-6）。
【００９２】
このように車速が低いほど演算回数を大きくすることで、車速が速い場合は第１探索範囲ＴＨだけで探索するので消費電力を低減でき、車速が低い場合は近くの障害物の距離情報をより高精度に算出できる。演算回数の設定は、例えば図８のステップＳ１１で変数ｋの初期化と共に行う。
【００９３】
なお、フレーム同期信号ＦＶの時間間隔は、ステレオカメラ１３にとって固定とされることが多いが、フレーム同期信号ＦＶの時間間隔が変更可能なステレオカメラ１３であれば、演算回数に応じて時間間隔を変更してもよい。これにより、演算回数が少ないほどフレーム同期信号の時間間隔が短くなるので、視差ｄの演算間隔を短くできる。
【００９４】
＜＜第２探索範囲ＴＨ２でのみ探索する＞＞
また、ステレオ演算処理部２４は、探索幅に第１探索範囲ＴＨ１を含めずに、第２探索範囲ＴＨ２のみを探索してもよい。例えば、車両が壁に接近して駐停車する場合がある。そして、車両によっては、運転者がシフトレバーの操作を誤った場合に生じ得る急発進の防止制御を行うものがある。
【００９５】
この場合、遠方の距離情報は検出されないので、第１探索範囲ＴＨ１で探索する必要性は低くなる。そこで、車両が停止しており、視差ｄが第２探索範囲ＴＨ２でのみ算出可能な場合、探索範囲を第２探索範囲ＴＨ２にのみ限定する。
【００９６】
図１７は、探索範囲設定部３１が探索範囲を設定する手順を示すフローチャート図の一例である。
【００９７】
探索範囲設定部３１は定期的に車速を取得して、車両が停止中か否かを判定する（S15-1-11）。停止中に限定するのは、車両状況が変更する可能性が低いため、探索範囲を近距離側に制限しても不都合が生じにくいためである。
【００９８】
ステップS15-1-11の判定がＹｅｓの場合、探索範囲設定部３１は全ての画素の視差ｄが閾値Ａより大きいか否かを判定する（S15-1-12）。全ての画素とは視差ｄが検出された画素の全てでよい。
【００９９】
ステップS15-1-12の判定がＹｅｓの場合、探索範囲設定部３１は第２探索範囲ＴＨ２のみを探索範囲に設定する（S15-1-13）。具体的には、探索範囲設定部３１はパラメータレジスタ２４０３にステレオ演算処理部２４が更新できない固定値としてＷ（例えば３２）を設定する。
【０１００】
ステップS15-1-11又はステップS15-1-12の判定がＮｏの場合、探索範囲設定部３１は探索範囲設定部３１は第１探索範囲ＴＨ１及び第２探索範囲ＴＨ２を探索範囲に設定する（S15-1-14）。
【０１０１】
このような制御により、例えば、運転者がシフトレバーの操作を誤った場合に生じ得る急発進の防止制御において、画像処理ＩＣ２０は適切な探索範囲のみを探索できる。
【０１０２】
＜適用例＞
以上、本発明を実施するための最良の形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０１０３】
例えば、本実施形態では画像処理ＩＣ２０の車両への搭載例を説明したが、ロボットなどにも搭載できる。例えば、ロボットが歩行中は遠方の障害物との距離を取得することで移動が容易になる。一方、ロボットが例えば手に取った物を解析する際には、近傍の距離情報を取得することで物の形状を解析しやすくなる。
【符号の説明】
【０１０４】
１２    画像処理ＥＣＵ
１３    ステレオカメラ
２０    画像処理ＩＣ
２１    ステレオ画像入力部
２２    ステレオ画像校正部
２３    ステレオ画像記憶部
２４    ステレオ演算処理部
２５    視差データ記憶部
２６    統合視差データ記憶部
３１    演算回数設定部
３２    探索範囲設定部
３３    視差統合部
１００  ステレオカメラシステム
２４１  信頼度算出部
２４２  演算回数レジスタ
２４３  パラメータレジスタ
６００  車載システム
【先行技術文献】
【特許文献】
【０１０５】
【特許文献１】特開2008-039491号公報
【非特許文献１】Z.Zhang, "A Flexible New Technique for Camera Calibration", Technical Report MSR-TR-98-71, Microsoft Research, 1998
【図１】
2015232455.tif 000003
【図２】
2015232455.tif 000004
【図３】
2015232455.tif 000005
【図４】
2015232455.tif 000006
【図５】
2015232455.tif 000007
【図６】
2015232455.tif 000008
【図７】
2015232455.tif 000009
【図８】
2015232455.tif 000010
【図９】
2015232455.tif 000011
【図１０】
2015232455.tif 000012
【図１１】
2015232455.tif 000013
【図１２】
2015232455.tif 000014
【図１３】
2015232455.tif 000015
【図１４】
2015232455.tif 000016
【図１５】
2015232455.tif 000017
【図１６】
2015232455.tif 000018
【図１７】
2015232455.tif 000019