画像処理方法、ステレオカメラシステム
【課題】より短い処理時間で距離情報が得られる画像処理方法を提供すること。
【解決手段】第1の画像と第2の画像を撮影するステップと、加算手段241が、第1の画像の第1の合計値、及び、第2の画像の第2の合計値を算出する合計値算出ステップと、シフト手段242が記第1の合計値を所定ビット数、右にシフトして第1の近似平均値を算出し、同様に第2の近似平均値を算出する近似平均値算出ステップと、整数倍手段243,244が、第1の画像と第2の画像の小領域内の各画素データの値を整数倍する整数倍ステップと、相関値算出手段249が、該画素データの値を整数倍した値から第1の近似平均値を引いた第1のデータと、画素データを整数倍した値から第2の近似平均値を引いた第2のデータをそれぞれ求め、画素データ毎に前記第1のデータと第2のデータとの差分の二乗和を算出する相関値算出ステップと、を有する画像処理方法を提供する。
【解決手段】第1の画像と第2の画像を撮影するステップと、加算手段241が、第1の画像の第1の合計値、及び、第2の画像の第2の合計値を算出する合計値算出ステップと、シフト手段242が記第1の合計値を所定ビット数、右にシフトして第1の近似平均値を算出し、同様に第2の近似平均値を算出する近似平均値算出ステップと、整数倍手段243,244が、第1の画像と第2の画像の小領域内の各画素データの値を整数倍する整数倍ステップと、相関値算出手段249が、該画素データの値を整数倍した値から第1の近似平均値を引いた第1のデータと、画素データを整数倍した値から第2の近似平均値を引いた第2のデータをそれぞれ求め、画素データ毎に前記第1のデータと第2のデータとの差分の二乗和を算出する相関値算出ステップと、を有する画像処理方法を提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ステレオカメラにより距離情報を検出する画像処理方法に関する。
【背景技術】
【0002】
ステレオカメラが撮影した画像を利用した車両の運転者支援システムが知られている。運転支援システムは、例えば、車の前方に設置したステレオカメラによって車両前方を監視し、歩行者、他車両、障害物等との距離を測定し、それらに衝突する可能性がある場合は、運転者に報知したり、車両のブレーキを作動させて減速させたり停止させたりすることができる。
【0003】
ステレオカメラは、異なる視点位置から同じ対象物体を撮影した時に、撮影画像上での結像位置が物体の距離によって変化することを利用して物体の距離や位置を計測する。
【0004】
図1はステレオカメラの測距原理を説明する図の一例である。基線長B(カメラ間の距離)、焦点距離f、及び、視差d(視点による物体の結像点の位置の差)から、物体までの距離Zは以下の式で表すことができる。
Z=B・f/d …(1)
視差dの算出には、左右のカメラから得られた一対の画像のある小領域の相関値を計算し、最も相関が高い画素位置が得られた際の画像間のシフト量を視差として算出するブロックマッチングがよく用いられる。
【0005】
相関の評価値としては、2つの小領域の各画素値の差の絶対値和SAD(sum of absolute difference)や差の二乗和SSD(sum of squared difference)が用いられることが多い。SADやSSDではカメラ特性に影響を受けやすいため、両画像の輝度差やノイズの影響を抑えることが可能な相関値の算出方法が提案されている(例えば、特許文献1参照。)。特許文献1には、2つの画像のそれぞれの各小領域の各画素値から各小領域の平均値を減算してからブロックマッチングを行う平均値差分マッチングが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、平均値差分マッチングでは演算装置が除算処理しなければならないという問題がある。というのは、ステレオカメラの距離演算を車載用途等で利用する場合には、高精度かつリアルタイムで処理可能であることが望ましく、専用に設計されたハードウェアが搭載されることが多い。ハードウェアによる処理はソフトウェアによる処理よりも高速であるが、除算回路の除算処理は処理時間が長くなる(クロック数が多く必要になる)ため、除算回路を用いないことが理想的である。
【0007】
ところが、平均値差分マッチングでは、小領域内の画素値の和を画素数で除算するため除算回路が必要である。例えば、7×7の小領域の画素平均値を求めるのであれば、除算回路は、小領域内の「画素値の和÷49」を行う。したがって、平均値差分マッチングでは除算回路が必要となるため、距離を得るための処理時間が長くなるという問題があった。
【0008】
また、特許文献1で提案されている平均値差分マッチングでは、高周波ノイズの影響でミスマッチを起こし、正確な視差値が得られないという問題があった。そこで、小領域の平均値から算出した判定値と小領域内の画素値を比較して有効か否かを判定し、有効な画素のみで相関計算を行う技術も提案されている(例えば、特許文献2参照。)。しかしながら、特許文献2のミスマッチの低減方法では、対象とする小領域の全画素において有効判定を行った上でマッチング処理を行うため、計算の処理コストが高いという問題がある。
【0009】
本発明は、上記課題に鑑み、より短い処理時間で距離情報が得られる画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、一対のステレオカメラが第1の画像と第2の画像を撮影するステップと、加算手段が、前記第1の画像の小領域内の画素データの第1の合計値、及び、前記第2の画像の小領域内の画素データの第2の合計値を算出する合計値算出ステップと、シフト手段が、前記第1の合計値を所定ビット数、右にシフトして第1の近似平均値を算出し、前記第2の合計値を前記所定ビット数、右にシフトして第2の近似平均値を算出する近似平均値算出ステップと、整数倍手段が、前記第1の画像の小領域内の各画素データの値を整数倍し、前記第2の画像の小領域内の各画素データの値を整数倍する整数倍ステップと、相関値算出手段が、前記第1の画像の小領域内の画素データ毎に、該画素データの値を整数倍した値から前記第1の近似平均値を引いた第1のデータと、前記第2の画像の小領域内の画素データ毎に、該画素データを整数倍した値から前記第2の近似平均値を引いた第2のデータをそれぞれ求め、画素データ毎に前記第1のデータと前記第2のデータとの差分の二乗和又は差の絶対値和を算出する相関値算出ステップと、を有する画像処理方法を提供する。
【発明の効果】
【0011】
より短い処理時間で距離情報が得られる画像処理方法を提供することができる。
【図面の簡単な説明】
【0012】
【図1】ステレオカメラの測距原理を説明する図の一例である。
【図2】相関値の算出方法を説明する図の一例である。
【図3】4つのステレオカメラの搭載位置を模式的に示す図の一例である。
【図4】ステレオカメラシステムの車両への搭載例を示す図の一例である。
【図5】画像処理ICの基本構成の一例を示す図である。
【図6】ステレオ演算処理部における視差値算出の流れを示すフローチャートである。
【図7】ブロックマッチングを説明する図の一例である。
【図8】等角直線フィッティングを説明する図の一例である。
【図9】ステップS12の処理の詳細な手順を示すフローチャート図の一例である。
【図10】ステレオ演算処理部の回路構成を模式的に示す図の一例である。
【図11】除算処理により求めたサブピクセルの視差値と本実施例の方法で求めたサブピクセルの視差値の比較例を示す図である。
【図12】並進量とサブピクセルの関係のグラフを示す図の一例である。
【図13】ステップS12の処理の詳細な手順を示すフローチャート図の一例である(実施例2)。
【図14】ステレオ演算処理部の回路構成を模式的に示す図の一例である(実施例2)。
【図15】ステップS12の処理の詳細な手順を示すフローチャート図の一例である(実施例2の変形例)。
【図16】ステレオ演算処理部の回路構成を模式的に示す図の一例である(実施例2の変形例)。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【実施例1】
【0014】
図2は、本実施例の相関値の算出方法を説明する図の一例である。ステレオカメラの一方の画像を基準画像、他方を比較画像と呼ぶ。ブロックマッチングでは、比較画像の注目画素を含む小領域(図では7×7)を、基準画像に対し1画素ずつシフトさせながら、相関値を計算する。
S1:ステレオカメラシステムはまず、比較画像と基準画像それぞれの48画素の画素値の和を算出する。48画素となるのは注目画素を除いたためである。
S2:ステレオカメラシステムは、48画素の画素値の和を4bit右シフトする。右シフトは除算と同等なので、16で除算したことと同等の除算結果が得られる。48画素あるのに対し16で除算することは、48個の画素の画素値の平均を3倍した値が得られることを意味する。以下、4bit右シフト結果を近似平均値と称す。
S3:次に、ステレオカメラシステムは比較画像と基準画像それぞれの画素の画素値を3倍する。
S4:次に、ステレオカメラシステムはZSSD(zero-mean sum of squared difference)値を相関値として算出する。すなわち、比較画像において、各画素毎に3倍の画素値から近似平均値を減じ、基準画像において3倍の画素値から近似平均値を減ずる。そして、48個の画素について、これら(「3×Sij−4bitシフト結果」と「3×Mij−4bitシフト結果」)の差の二乗和を求めることでZSSD値が得られる。
【0015】
したがって、本実施例のステレオカメラシステムは、近似平均値の算出にシフト演算を用い、除算処理を行っていないので、高速に演算することができる。また、近似平均値を画素値から減じるので、2つのカメラのカメラ特性を高精度に調整したり、わずかな経年変化が生じても再調整が必要になることなく、高精度に距離を計測することが可能である。
【0016】
〔ステレオカメラの搭載例〕
図3は、4つのステレオカメラ1〜4の搭載位置を模式的に示す図の一例である。ステレオカメラ1は前方に、ステレオカメラ2は右側方に、ステレオカメラ3は左側方に、ステレオカメラ4は後部に、それぞれ配置されている。ステレオカメラ1は、室内ルームミラーや車両前部バンパに、車両前方のやや水平下向きに光軸を向けて配置される。ステレオカメラ2は、例えば、右ドアミラー、車両右側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Aピラー、Bピラー又はCピラーなどに、車両右側方、車両右側方よりもやや後方又は車両右側方よりもやや前方に光軸を向けて配置される。ステレオカメラ3は、例えば、左ドアミラー、車両左側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Aピラー、Bピラー又はCピラーなどに、車両左側方、車両左側方よりもやや後方又は車両左側方よりもやや前方に光軸を向けて配置される。ステレオカメラ4は、後部ナンバープレートの周辺や、後部バンパなどに配置されている。
【0017】
ステレオカメラ1は、主に、車両前方の歩行者との距離、先行車両との距離、その他の地物(標識、信号機、電柱、ガードレール等)や障害物との距離を測定するために用いられる。障害物との距離に応じて、ステレオカメラシステムは運転者に警告したり、制動をかけることができる。
【0018】
ステレオカメラ2,3は、乗員がドアの開閉をする際に、周囲から近づいてくる人や物との距離を検出するために用いられる。駐車場などで、隣の他車両との距離を測定し、また、駐車中に後側方から接近する自転車、バイク、及び、歩行者との距離を測定する。ステレオカメラシステムは、距離に応じて、運転者に警告したり、ドアの開放を禁止することができる。
【0019】
ステレオカメラ4は、後方の障害物との距離を検出したり、乗員が後部ドアを開放する際に障害物との距離を測定する。障害物が所定の距離内にある場合、ドアの開放を禁止することができる。また、バック走行中、ステレオカメラは障害物との距離に応じて、運転者に警告したり、制動をかけることができる。
【0020】
この他、すでに車両に乗車している乗員を検知するステレオカメラを搭載してもよい。乗員検知カメラの設置位置は、車内を前方から後方に向けて撮像できる位置(例えば、ルームミラー、サンバイザ、Aピラー、天井部等)、又は、車内の側方から前方に向けて撮像できる位置(例えば、Cピラー、後部ドアフレーム、天井部等)等である。また、車両の側方から車内側を撮像できる位置(例えば、ドア、Aピラー、Bピラー、Cピラー)に設置して、搭乗者を横から撮像することも有効である。
【0021】
〔構成例〕
図4はステレオカメラシステム100の車両への搭載例を示す図の一例を示す。車両には多くのマイコンが搭載されており、1つ以上のマイコンが搭載された1つの装置をECU(Electronic Control Unit)と呼ぶことが多い。代表的なECUとしては、エンジンを制御するエンジンECU、ブレーキを制御するブレーキECU、ドアやシートを制御するボディECU、ナビやAV機器を制御する情報系ECU等が知られている。本実施例では、距離情報を取得するECUを画像処理ECU12と呼ぶこととする。
【0022】
画像処理ECU12は、CAN(Controller Area Network)やFrexRayなどの規格の車載LANを介して他の不図示のECUと通信可能に接続されている。車載LAN上のデータは、車載LANに接続された全てのECUが参照可能であり、画像処理ECU12を含め各ECUは、予め定められたデータを受信して処理に使用する。
【0023】
画像処理ECU12は、表示装置11、及び、ステレオカメラ13(図では1つのみだが複数個を搭載してもよい)と接続されている。画像処理ECU12には一台以上のマイコンが搭載されており、一般的なマイコンと同様にCPU,RAM、ROM、CANC(CAN Controller)、I/O等を有すると共に、画像処理のための画像処理IC20を有している。これらは、システムバスや外部バス及びバスコントローラを介して接続されている。
【0024】
ステレオカメラ13はI/Oに接続され、撮影された画像データは適宜、画像処理IC20がRAMを用いて画像処理する。CANCは、CANプロトコルに基づき他のECUと通信を行う。CPUは、ROMに記憶されたプログラムを、RAMを作業メモリに実行して、CANCを介して、画像処理結果を他のECUに送信するなどの各種の制御を行う。なお、表示装置11は、ステレオカメラ13が撮影した映像を表示する液晶や有機ELなどのディスプレイ、又は、HUD(Head Up Display)である。表示装置11は、画像処理により検出された例えば歩行者や障害物を強調して表示するために用いられるが、必ずしも必要ではない。また、表示装置11は、道路地図を表示するナビゲーション装置と兼用されることが多い。
【0025】
図5は、画像処理IC20の基本構成の一例を示す図である。画像処理IC20は、ステレオ画像入力部21、ステレオ画像校正部22、ステレオ画像記憶部23、ステレオ演算処理部24、及び、視差データ記憶部25を有している。
【0026】
ステレオカメラ13は、二台の単眼カメラがほぼ同時にそれぞれ撮影する画像データをステレオ画像校正部22に入力する。
【0027】
ステレオ画像校正部22は、ステレオカメラ13から入力された2つの画像データに対して、単眼カメラにおける光学的なずれ、単眼カメラ間における幾何的なずれを補正する。ステレオ画像記憶部23は、ステレオ画像校正部22が校正した2つの画像データをステレオ演算のための元画像として記憶する。ステレオ演算処理部24は、2つの画像データを処理して視差データを算出する。視差データ記憶部25は、距離情報の算出のための視差データを記憶する。
【0028】
ステレオカメラ13は、ある焦点距離fのレンズ光学系と撮像素子からなる単眼カメラ1L、単眼カメラ1Rを有している。これら二つの単眼カメラ1L、1Rは、露光時間やゲインが可変のCCDカメラであり、両者は互いに同期が取られ、同一タイミングで画像を撮影している。なお、撮像素子はCCDに限らず、CMOS等の撮像素子でもよい。ステレオカメラ13には、これら二つの単眼カメラ1L、1Rがある所定の基線長Bの距離を置いて、光軸が平行になるよう配置されている。
【0029】
ステレオ画像校正部22は、レンズ光学系と撮像素子の機械的なずれやレンズ光学系により生じる歪曲収差、また、単眼カメラの取り付け位置のずれを補正する。具体的には例えばLUT(Look Up Table)により画素位置が置き換えられる。ステレオ画像校正部22は、例えば、所定の画像処理機能を実現するFPGA等から構成される電気回路である。前述の補正項目における補正量は、事前に非特許文献1等のキャリブレーション手法により求めておくが、補正項目、キャリブレーション手法共に非特許文献1の内容に限定されない。
【0030】
ステレオ演算処理部24は、ステレオ画像記憶部23に記憶された左カメラの画像データ(比較画像とする)と右カメラの画像データ(基準画像とする)に対して、両画像の小領域ごとの相関値を求めることで対応点を検出するブロックマッチングを行い、両画像間の対応点の画素のずれ(視差)を算出する。この視差データは、式(1)の視差dに対応し、焦点距離f、基線長Bを用いて測定対象物までの3次元距離情報を取得することを可能にする。ステレオ演算処理部24もステレオ画像校正部22と同様に、FPGA等から構成される電気回路である。ステレオ演算処理部24の詳細は後述する。
【0031】
ステレオ演算処理部24により得られた視差データは、視差データ記憶部25に記憶され、車両制御や認識処理等に利用される。なお、視差データ記憶部25に記憶する際、式(1)を用いて視差データを距離情報に換算しておいてもよい。
【0032】
〔ステレオ演算処理部の処理の詳細〕
図6は、ステレオ演算処理部24における視差値算出の流れを示すフローチャートである。
【0033】
S11:ステレオカメラ13が2つの画像データを撮像し、入力画像をステレオ画像校正部22に入力する。ステレオ画像校正部22はLUT等により2つの画像データを校正し、ステレオ画像記憶部23に記憶する。
【0034】
S12:ステレオ演算処理部24は、左右の2つの画像データ(比較画像と基準画像)に対してブロックマッチングを行い、ピクセル単位での視差値dintを算出する。S12の処理手順は後に詳述する。
【0035】
図7は、ブロックマッチングを説明する図の一例である。ブロックマッチングでは、入力画像を小領域の探索ブロックに分割し、基準画像の探索ブロックに対して比較画像の探索ブロックの位置を、画像の水平方向に1画素ずつずらしながら(シフトしながら)相関値の計算を行う。本実施例では、
探索ブロックのサイズ : 7×7
基準画像の各画素の輝度値 : Mi,j(i=1〜7、j=1〜7)
比較画像の各画素の輝度値 : Si,j(i=1〜7、j=1〜7)
とする。ただし、探索ブロックのサイズは一例に過ぎない。
【0036】
予め探索範囲を制限するため、探索した(ずらした)画素数が閾値TH1を満たした時点で相関値が最も相関を示す(この場合は相関値が小さい)シフト量を決定する。この最も相関値が小さかった画素位置におけるシフト量が、ピクセル単位での視差値dintを表す。
【0037】
なお、上述したように、本実施例では、ZSSD値を相関値とするが、このZSSD値は一般のZSSD値を3倍したものになっている。
【0038】
S13:ステレオ演算処理部24は、ステップS12で算出された相関値を用いて、サブピクセル単位での視差値を算出する。
【0039】
サブピクセルの視差値の算出方法としては、等角直線フィッティングやパラボラフィッティングなどが知られている。本実施例では等角直線フィッティングを用いて、サブピクセルの視差値dsubを算出する。
【0040】
図8は、等角直線フィッティングを説明する図の一例である。等角直線フィッティングでは、最小の相関値R(0)、2番目に小さい相関値R(1)、及び、3番目に小さい相関値R(-1)を用いる。
(i)最小の相関値(図の黒丸)と3番目に小さな相関値(図のR(-1))を通る直線を引く
(ii)その直線の傾きの符号を逆にした直線で、2番目に小さな相関値(図の(R(1))を通る直線を引く
(iii)2直線の交点位置を求め、最小の相関値から交点までの距離をサブピクセル単位での視差値dsubの推定値とする
等角直線フィッティングを数式で表現すると式(2)により表される。もっとも相関が高い画素の相関値がR(0)、隣接画素の相関値がR(-1)、R(1)である。なお、本実施例では相関値の3倍を算出しているが、相関値が定数倍されてもサブピクセルでの視差値dsubは変化しない。
【0041】
【数1】
S14:ステレオ演算処理部24は、ピクセル単位での視差値dintとサブピクセル単位での視差値dsubを加算することで、視差データdを算出する。
【0042】
<S12の処理>
図9は、ステップS12の処理の詳細な手順を示すフローチャート図の一例を、図10はステレオ演算処理部24の回路構成を模式的に示す図の一例をそれぞれ示す。加算器241は比較画像の探索ブロックの48個の画素の画素値を加算し、シフト部242は加算結果を4bit右シフトする。シフト部243は比較画像の探索ブロックの48個の画素の画素値をそれぞれ1bit左シフトし、加算器244は1bit左シフトされた画素値と元の画素値とを加算する。基準画像側のブロックについても同様である。ZSSD演算器249はZSSD値を算出する。
S12−1:加算器241は比較画像の探索ブロックの注目画素以外の48画素の和を算出し、加算器245は基準画像の探索ブロックの注目画素以外の48画素の和を算出する。なお、注目画素とは探索ブロック内の中心画素を意味し、本実施例ではM4,4、S4,4である。
【0043】
加算器241,245は、1画素毎に加算を48回繰り返す回路でもよいが、48画素の加算を1回で行う回路、又は、m個の画素の加算を1度に行いそれを48/m回繰り返す回路など、さまざまな実装形態がある。一般に1度に加算可能な画素数が多いほど演算が速いが回路規模が大きくなる傾向にあるので、回路規模の制約と必要な演算速度から加算器241,245を設計する。
【0044】
S12−2:次に、シフト部242は加算器241が加算した48個の画素の加算結果を4bit右シフトし、シフト部246は加算器245が加算した48個の画素の加算結果を4bit右シフトする。これは算術シフトであり、上位4桁にはゼロ(正値を意味する)が補充され、下位4桁は捨てられる。4bitの右シフトは16で除算することと等価である。本来、48個の画素の画素値の平均値を求めるのであれば、48で除算すればよいが、シフト演算では2のべき乗の数でしか除算できない。そこで、本実施例では、4bit右シフトすることで16で除算し、注目画素以外の48画素の画素値の平均値×3を近似平均値としている。
近似平均値
=48画素の画素値の合計を4bit右シフトした値
=48画素の画素値の平均値×3
S12−3:シフト部243と加算器244が、比較画像の探索ブロック内の48個の画素の画素値を3倍した値を計算し、シフト部247と加算器248が、基準画像の探索ブロック内の48個の画素の画素値を3倍した値を計算する。すなわち、シフト部243は比較画像の各画素の画素値を1bit左シフトし、シフト部247は基準画像の各画素の画素値を1bit左シフトする。最上位ビットには正値を意味するゼロを保持したまま、最上位ビット以外の下位ビットをそれぞれ1ビット左にシフトし、最下位ビットにゼロを補充する。これにより、2倍した値が得られる。
【0045】
シフト部243は画素値を2倍した値を加算器244に入力し、加算器244は比較画像の各画素の画素値と2倍された画素値を加算する。同様に、シフト部247は画素値を2倍した値を加算器248に入力し、加算器248は比較画像の各画素の画素値と2倍された画素値を加算する。これにより、比較画像と基準画像それぞれの画素の画素値を3倍した値が得られる。
【0046】
S12−4:ZSSD演算器249が、式(3)を用いて、ZSSD値を3倍した値と同等の値を算出する。以下、この値を単にZSSD値という。
3×ZSSD=Σ{(3×Sij−近似平均値)−(3×Mij−近似平均値)}2 …(3)
すなわち、ZSSD演算器249は、比較画像について、各素毎に、画素値を3倍した値から近似平均値を減じ、基準画像について、各素毎に、画素値を3倍した値から近似平均値を減じる。そして、比較画像の減算値(3×Sij−近似平均値)から基準画像の減算値(3×Mij−近似平均値)を減じた値を二乗する。そして、48個得られる二乗値を全て加算する。
【0047】
このような演算により、除算処理することなく相関値としてZSSD値が得られる。
【0048】
S12−5:ステレオ演算処理部24は、探索画素数が閾値TH1以上か否かを判定する。
【0049】
S12−6:探索画素数が閾値TH1より大きくない場合、ステレオ演算処理部24は、探索画素数を1つ増やし(注目画素を水平方向に1画素ずつずらして)、S12−1〜12−4の処理を、探索画素数が閾値TH1より大きくなるまで演算する。したがって、閾値TH1個の相関値が得られ、このうち最も小さいZSSD値が得られたシフト量が、ピクセル単位での視差値dintである。
【0050】
なお、ステップS12−2において、4bit右シフトと3倍の処理は、探索ブロックのサイズを7×7画素とした場合の値であって、シフト量と3倍という値は上記に制限されない。例えば、探索ブロックのサイズを4×4とした場合、まず、注目画素を含めて16画素の画素値の合計を算出する。この場合シフト量は右4bitとすればよく、各画素の画素値を3倍する必要はない。
【0051】
また、例えば、探索ブロックのサイズを6×6とした場合、まず、注目画素を含めて36画素の画素値の合計を算出する。シフト量は右2bitとなり、この場合、各画素の画素値を9倍する。このように、探索ブロックのサイズ、着目画素の画素値を加算するか否か、シフト量、定倍数は適宜、定めることができる。
【0052】
〔従来法との比較〕
図11は、除算処理により求めたサブピクセルの視差値と本実施例の方法で求めたサブピクセルの視差値の比較例を示す図であり、図12は並進量とサブピクセルの関係のグラフを示す図の一例である。サブピクセル単位で視差値dsubを比較するのは、ピクセル単位では両者の算出結果が完全に一致してしまい、差異が確認できないためである。
【0053】
例えば、実験者は、測距ターゲットとステレオカメラ13との間の距離を一定に保ち、ステレオカメラ13を測距ターゲットと平行の方向に0.2ピクセルずつ5回並進させた。それぞれの並進量の際に、サブピクセルの視差値dsubを、ステレオ演算処理部24が従来法と本実施例の算出方法で算出した。図12では横軸がステレオカメラ13の並進量[pix]、縦軸がサブピクセルの視差値dsubである。
【0054】
図11、図12から明らかなように、本実施例の視差値dsubの算出結果と、除算処理による視差値dsubの算出結果とが同等の値(ほぼ同じ)になっている。
【0055】
したがって、本実施例のステレオカメラシステム100は、除算回路又は除算処理を用いて平均値差分マッチングを行ったときと同等の精度を、より高速な処理で実現できることが検証された。
【実施例2】
【0056】
本実施例では、ノイズの影響により相関性の低い小領域をミスマッチすることを防止するステレオカメラシステム100について説明する。本実施例では、基準画像及び比較画像の小領域の平均値を算出後に、両平均値の差の絶対値を算出し、差の絶対値が閾値より大きい場合は両領域が異なる領域であると判断してマッチング処理を行わない。こうすることで、相関性の低い小領域をミスマッチすることを防止することができる。また、従来技術用のように、小領域内の各画素単位で演算しないので演算コストも低減できる。
【0057】
本実施例では、図6の処理手順は実施例1と同様だが、ステップS12の処理内容が異なっている。
【0058】
<S12の処理>
図13は、図6のステップS12の処理の詳細な手順を示すフローチャート図の一例を示す。図14はステレオ演算処理部24の回路構成を模式的に示す図の一例をそれぞれ示す。本実施例のステレオ演算処理部24は減算器250を有する。減算器250は、シフト部242と246が出力する2つの近似平均値の差の絶対値を算出し、閾値以下か否かの判定結果をZSSD演算器249に出力する。
【0059】
S12−11:加算器241は比較画像の注目画素以外の48画素の和を算出し、加算器245は基準画像の注目画素以外の48画素の和を算出する。
【0060】
S12−12:次に、シフト部242は、加算器241が加算した48個の画素の加算結果を4bit右シフトする。これにより、近似平均値2が得られる。同様に、シフト部246は、加算器245が加算した48個の画素の加算結果を4bit右シフトする。これにより、近似平均値1が得られる。
【0061】
なお、必ずしもシフトする必要はなく、基準画像と比較画像の48画素又は49画素の画素値の合計値の差の絶対値を求めてもよい。
【0062】
S12−13:減算器250は2つの近似平均値1,2の差の絶対値を算出し、その差が類似判定閾値TH21より小さいか否かを判定する。
2つの探索ブロックが類似している、つまり両探索ブロック領域が2つの画像中で対応する領域の場合、それぞれの探索ブロックで算出した近似平均値はほぼ同等の値になる。これに対し、両探索ブロックが異なる領域の場合は、それぞれの探索ブロックで算出した近似平均値も異なる値となる。
【0063】
この考え方により、両探索ブロック内の近似平均値1,2の差の絶対値が類似判定閾値TH21より小さい場合、両探索ブロックが類似していると判断できる。両探索ブロック内の近似平均値1,2の差の絶対値が類似判定閾値TH21以上の場合、両探索ブロックが異なる領域であると判断される。
【0064】
S12−14:両探索ブロックが類似していると判断された場合、ZSSD演算部249はZSSD値を算出する。算出方法は実施例1と同様である。
【0065】
S12−15:両探索ブロックが類似していないと判断された場合、ステレオ演算処理部24は、探索した画素数が予め設定した閾値TH1以上か否かを判定する。探索した画素数が予め設定した閾値TH1以上の場合、算出されたいくつかのZSSD値のうち最も小さい相関値が得られたシフト量が、ピクセル単位での視差値dintである。
【0066】
S12−16:探索した画素数が予め設定した閾値TH1以上でない場合、ステレオ演算処理部24は、1画素隣りの画素位置に移り、S12-11〜S12−15の処理を継続する。
【0067】
本実施例では、単に基準画像と比較画像の探索ブロックの平均を求めるだけなので、探索ブロックの各画素の画素値から平均値を引くような処理が不要であり、演算コストを低減できる。
【0068】
<変形例>
本実施例のミスマッチの防止処理は、除算回路を用いたステレオ演算処理部24によっても実現できる。
【0069】
図15は、図6のステップS12の処理の詳細な手順を示すフローチャート図の一例を示す。図16はステレオ演算処理部24の回路構成を模式的に示す図の一例をそれぞれ示す。図16のステレオ演算処理部24は除算回路251、252を有する。除算回路251、252は、加算器241、245が加算した49画素の画素値の合計を、定数49で除算する。したがって、基準画像および比較画像の探索ブロックにおける画素値の平均値MAVE、SAVEがそれぞれ算出される。
【0070】
【数2】
減算器250は、平均値MAVE、SAVEの差の絶対値を算出し、閾値以下か否かの判定結果をZSSD演算器249に出力する。したがって、図13と同様に、両探索ブロックが2つの画像中で対応する領域の場合にだけ、ブロックマッチング処理を行うことができる。
【0071】
S12−11:加算器241は比較画像の49画素の和を算出し、加算器245は基準画像の49画素の和を算出する。
【0072】
S12−12´:次に、除算回路251が加算器241が加算した49個の画素の加算結果を49で除算し、除算回路252が加算器245が加算した49個の画素の加算結果を49で除算する。これにより、平均値MAVE、SAVEが得られる。
【0073】
S12−13´:減算器250は2つの平均値MAVE、SAVEの差の絶対値を算出し、その差が類似判定閾値TH22より小さいか否かを判定する。両探索ブロック内の近似平均値の差の絶対値が類似判定閾値TH22より小さい場合、両探索ブロックが類似していると判断できる。両探索ブロック内の近似平均値の差の絶対値が類似判定閾値TH22以上の大きい場合、両探索ブロックが異なる領域であると判断される。
【0074】
S12−14:両探索ブロックが類似していると判断された場合、ZSSD演算部249はZSSD値を算出する。算出方法は実施例1と同様でもよいが、除算回路251,252を有する場合は以下のようにして算出できる。
ZSSD=Σ{(Sij−SAVE)−(Mij−MAVE}2 …(4)
すなわち、ZSSD演算器249は、探索ブロックの比較画像の画素毎に、画素値Sijから平均値SAVEを減じ、基準画像の画素毎に画素値Mijから平均値MAVEを減じる。それらの差分の二乗和がZSSD値である。
【0075】
S12−15:両探索ブロックが類似していないと判断された場合、ステレオ演算処理部24は、探索した画素数が予め設定した閾値TH1以上か否かを判定する。探索した画素数が予め設定した閾値TH1以上の場合、算出されたいくつかのZSSD値のうち最も小さいZSSD値が得られたシフト量が、ピクセル単位での視差値dintである。
【0076】
S12−16:探索した画素数が予め設定した閾値TH1以上でない場合、ステレオ演算処理部24は、1画素隣りの画素位置に移り、S12-11〜S12−15の処理を継続する。
【0077】
このような演算方法でも、探索ブロックの各画素の画素値から平均値を引くような処理が不要であり、演算コストを低減できる。
【符号の説明】
【0078】
11 表示装置
12 画像処理ECU
13 ステレオカメラ
20 画像処理IC
21 ステレオ画像入力部
22 ステレオ画像校正部
23 ステレオ画像記憶部
24 ステレオ演算処理部
25 視差データ記憶部
100 ステレオカメラシステム
【先行技術文献】
【特許文献】
【0079】
【特許文献1】特開平11−234701号公報
【特許文献2】特開2003−288584号公報
【非特許文献】
【0080】
【非特許文献1】Z.Zhang, "A Flexible New Technique for Camera Calibration", Technical Report MSR-TR-98-71, Microsoft Research, 1998
【技術分野】
【0001】
本発明は、ステレオカメラにより距離情報を検出する画像処理方法に関する。
【背景技術】
【0002】
ステレオカメラが撮影した画像を利用した車両の運転者支援システムが知られている。運転支援システムは、例えば、車の前方に設置したステレオカメラによって車両前方を監視し、歩行者、他車両、障害物等との距離を測定し、それらに衝突する可能性がある場合は、運転者に報知したり、車両のブレーキを作動させて減速させたり停止させたりすることができる。
【0003】
ステレオカメラは、異なる視点位置から同じ対象物体を撮影した時に、撮影画像上での結像位置が物体の距離によって変化することを利用して物体の距離や位置を計測する。
【0004】
図1はステレオカメラの測距原理を説明する図の一例である。基線長B(カメラ間の距離)、焦点距離f、及び、視差d(視点による物体の結像点の位置の差)から、物体までの距離Zは以下の式で表すことができる。
Z=B・f/d …(1)
視差dの算出には、左右のカメラから得られた一対の画像のある小領域の相関値を計算し、最も相関が高い画素位置が得られた際の画像間のシフト量を視差として算出するブロックマッチングがよく用いられる。
【0005】
相関の評価値としては、2つの小領域の各画素値の差の絶対値和SAD(sum of absolute difference)や差の二乗和SSD(sum of squared difference)が用いられることが多い。SADやSSDではカメラ特性に影響を受けやすいため、両画像の輝度差やノイズの影響を抑えることが可能な相関値の算出方法が提案されている(例えば、特許文献1参照。)。特許文献1には、2つの画像のそれぞれの各小領域の各画素値から各小領域の平均値を減算してからブロックマッチングを行う平均値差分マッチングが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、平均値差分マッチングでは演算装置が除算処理しなければならないという問題がある。というのは、ステレオカメラの距離演算を車載用途等で利用する場合には、高精度かつリアルタイムで処理可能であることが望ましく、専用に設計されたハードウェアが搭載されることが多い。ハードウェアによる処理はソフトウェアによる処理よりも高速であるが、除算回路の除算処理は処理時間が長くなる(クロック数が多く必要になる)ため、除算回路を用いないことが理想的である。
【0007】
ところが、平均値差分マッチングでは、小領域内の画素値の和を画素数で除算するため除算回路が必要である。例えば、7×7の小領域の画素平均値を求めるのであれば、除算回路は、小領域内の「画素値の和÷49」を行う。したがって、平均値差分マッチングでは除算回路が必要となるため、距離を得るための処理時間が長くなるという問題があった。
【0008】
また、特許文献1で提案されている平均値差分マッチングでは、高周波ノイズの影響でミスマッチを起こし、正確な視差値が得られないという問題があった。そこで、小領域の平均値から算出した判定値と小領域内の画素値を比較して有効か否かを判定し、有効な画素のみで相関計算を行う技術も提案されている(例えば、特許文献2参照。)。しかしながら、特許文献2のミスマッチの低減方法では、対象とする小領域の全画素において有効判定を行った上でマッチング処理を行うため、計算の処理コストが高いという問題がある。
【0009】
本発明は、上記課題に鑑み、より短い処理時間で距離情報が得られる画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、一対のステレオカメラが第1の画像と第2の画像を撮影するステップと、加算手段が、前記第1の画像の小領域内の画素データの第1の合計値、及び、前記第2の画像の小領域内の画素データの第2の合計値を算出する合計値算出ステップと、シフト手段が、前記第1の合計値を所定ビット数、右にシフトして第1の近似平均値を算出し、前記第2の合計値を前記所定ビット数、右にシフトして第2の近似平均値を算出する近似平均値算出ステップと、整数倍手段が、前記第1の画像の小領域内の各画素データの値を整数倍し、前記第2の画像の小領域内の各画素データの値を整数倍する整数倍ステップと、相関値算出手段が、前記第1の画像の小領域内の画素データ毎に、該画素データの値を整数倍した値から前記第1の近似平均値を引いた第1のデータと、前記第2の画像の小領域内の画素データ毎に、該画素データを整数倍した値から前記第2の近似平均値を引いた第2のデータをそれぞれ求め、画素データ毎に前記第1のデータと前記第2のデータとの差分の二乗和又は差の絶対値和を算出する相関値算出ステップと、を有する画像処理方法を提供する。
【発明の効果】
【0011】
より短い処理時間で距離情報が得られる画像処理方法を提供することができる。
【図面の簡単な説明】
【0012】
【図1】ステレオカメラの測距原理を説明する図の一例である。
【図2】相関値の算出方法を説明する図の一例である。
【図3】4つのステレオカメラの搭載位置を模式的に示す図の一例である。
【図4】ステレオカメラシステムの車両への搭載例を示す図の一例である。
【図5】画像処理ICの基本構成の一例を示す図である。
【図6】ステレオ演算処理部における視差値算出の流れを示すフローチャートである。
【図7】ブロックマッチングを説明する図の一例である。
【図8】等角直線フィッティングを説明する図の一例である。
【図9】ステップS12の処理の詳細な手順を示すフローチャート図の一例である。
【図10】ステレオ演算処理部の回路構成を模式的に示す図の一例である。
【図11】除算処理により求めたサブピクセルの視差値と本実施例の方法で求めたサブピクセルの視差値の比較例を示す図である。
【図12】並進量とサブピクセルの関係のグラフを示す図の一例である。
【図13】ステップS12の処理の詳細な手順を示すフローチャート図の一例である(実施例2)。
【図14】ステレオ演算処理部の回路構成を模式的に示す図の一例である(実施例2)。
【図15】ステップS12の処理の詳細な手順を示すフローチャート図の一例である(実施例2の変形例)。
【図16】ステレオ演算処理部の回路構成を模式的に示す図の一例である(実施例2の変形例)。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【実施例1】
【0014】
図2は、本実施例の相関値の算出方法を説明する図の一例である。ステレオカメラの一方の画像を基準画像、他方を比較画像と呼ぶ。ブロックマッチングでは、比較画像の注目画素を含む小領域(図では7×7)を、基準画像に対し1画素ずつシフトさせながら、相関値を計算する。
S1:ステレオカメラシステムはまず、比較画像と基準画像それぞれの48画素の画素値の和を算出する。48画素となるのは注目画素を除いたためである。
S2:ステレオカメラシステムは、48画素の画素値の和を4bit右シフトする。右シフトは除算と同等なので、16で除算したことと同等の除算結果が得られる。48画素あるのに対し16で除算することは、48個の画素の画素値の平均を3倍した値が得られることを意味する。以下、4bit右シフト結果を近似平均値と称す。
S3:次に、ステレオカメラシステムは比較画像と基準画像それぞれの画素の画素値を3倍する。
S4:次に、ステレオカメラシステムはZSSD(zero-mean sum of squared difference)値を相関値として算出する。すなわち、比較画像において、各画素毎に3倍の画素値から近似平均値を減じ、基準画像において3倍の画素値から近似平均値を減ずる。そして、48個の画素について、これら(「3×Sij−4bitシフト結果」と「3×Mij−4bitシフト結果」)の差の二乗和を求めることでZSSD値が得られる。
【0015】
したがって、本実施例のステレオカメラシステムは、近似平均値の算出にシフト演算を用い、除算処理を行っていないので、高速に演算することができる。また、近似平均値を画素値から減じるので、2つのカメラのカメラ特性を高精度に調整したり、わずかな経年変化が生じても再調整が必要になることなく、高精度に距離を計測することが可能である。
【0016】
〔ステレオカメラの搭載例〕
図3は、4つのステレオカメラ1〜4の搭載位置を模式的に示す図の一例である。ステレオカメラ1は前方に、ステレオカメラ2は右側方に、ステレオカメラ3は左側方に、ステレオカメラ4は後部に、それぞれ配置されている。ステレオカメラ1は、室内ルームミラーや車両前部バンパに、車両前方のやや水平下向きに光軸を向けて配置される。ステレオカメラ2は、例えば、右ドアミラー、車両右側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Aピラー、Bピラー又はCピラーなどに、車両右側方、車両右側方よりもやや後方又は車両右側方よりもやや前方に光軸を向けて配置される。ステレオカメラ3は、例えば、左ドアミラー、車両左側面のドアノブ設置部分の窪み、ドアウィンドウのフレーム、Aピラー、Bピラー又はCピラーなどに、車両左側方、車両左側方よりもやや後方又は車両左側方よりもやや前方に光軸を向けて配置される。ステレオカメラ4は、後部ナンバープレートの周辺や、後部バンパなどに配置されている。
【0017】
ステレオカメラ1は、主に、車両前方の歩行者との距離、先行車両との距離、その他の地物(標識、信号機、電柱、ガードレール等)や障害物との距離を測定するために用いられる。障害物との距離に応じて、ステレオカメラシステムは運転者に警告したり、制動をかけることができる。
【0018】
ステレオカメラ2,3は、乗員がドアの開閉をする際に、周囲から近づいてくる人や物との距離を検出するために用いられる。駐車場などで、隣の他車両との距離を測定し、また、駐車中に後側方から接近する自転車、バイク、及び、歩行者との距離を測定する。ステレオカメラシステムは、距離に応じて、運転者に警告したり、ドアの開放を禁止することができる。
【0019】
ステレオカメラ4は、後方の障害物との距離を検出したり、乗員が後部ドアを開放する際に障害物との距離を測定する。障害物が所定の距離内にある場合、ドアの開放を禁止することができる。また、バック走行中、ステレオカメラは障害物との距離に応じて、運転者に警告したり、制動をかけることができる。
【0020】
この他、すでに車両に乗車している乗員を検知するステレオカメラを搭載してもよい。乗員検知カメラの設置位置は、車内を前方から後方に向けて撮像できる位置(例えば、ルームミラー、サンバイザ、Aピラー、天井部等)、又は、車内の側方から前方に向けて撮像できる位置(例えば、Cピラー、後部ドアフレーム、天井部等)等である。また、車両の側方から車内側を撮像できる位置(例えば、ドア、Aピラー、Bピラー、Cピラー)に設置して、搭乗者を横から撮像することも有効である。
【0021】
〔構成例〕
図4はステレオカメラシステム100の車両への搭載例を示す図の一例を示す。車両には多くのマイコンが搭載されており、1つ以上のマイコンが搭載された1つの装置をECU(Electronic Control Unit)と呼ぶことが多い。代表的なECUとしては、エンジンを制御するエンジンECU、ブレーキを制御するブレーキECU、ドアやシートを制御するボディECU、ナビやAV機器を制御する情報系ECU等が知られている。本実施例では、距離情報を取得するECUを画像処理ECU12と呼ぶこととする。
【0022】
画像処理ECU12は、CAN(Controller Area Network)やFrexRayなどの規格の車載LANを介して他の不図示のECUと通信可能に接続されている。車載LAN上のデータは、車載LANに接続された全てのECUが参照可能であり、画像処理ECU12を含め各ECUは、予め定められたデータを受信して処理に使用する。
【0023】
画像処理ECU12は、表示装置11、及び、ステレオカメラ13(図では1つのみだが複数個を搭載してもよい)と接続されている。画像処理ECU12には一台以上のマイコンが搭載されており、一般的なマイコンと同様にCPU,RAM、ROM、CANC(CAN Controller)、I/O等を有すると共に、画像処理のための画像処理IC20を有している。これらは、システムバスや外部バス及びバスコントローラを介して接続されている。
【0024】
ステレオカメラ13はI/Oに接続され、撮影された画像データは適宜、画像処理IC20がRAMを用いて画像処理する。CANCは、CANプロトコルに基づき他のECUと通信を行う。CPUは、ROMに記憶されたプログラムを、RAMを作業メモリに実行して、CANCを介して、画像処理結果を他のECUに送信するなどの各種の制御を行う。なお、表示装置11は、ステレオカメラ13が撮影した映像を表示する液晶や有機ELなどのディスプレイ、又は、HUD(Head Up Display)である。表示装置11は、画像処理により検出された例えば歩行者や障害物を強調して表示するために用いられるが、必ずしも必要ではない。また、表示装置11は、道路地図を表示するナビゲーション装置と兼用されることが多い。
【0025】
図5は、画像処理IC20の基本構成の一例を示す図である。画像処理IC20は、ステレオ画像入力部21、ステレオ画像校正部22、ステレオ画像記憶部23、ステレオ演算処理部24、及び、視差データ記憶部25を有している。
【0026】
ステレオカメラ13は、二台の単眼カメラがほぼ同時にそれぞれ撮影する画像データをステレオ画像校正部22に入力する。
【0027】
ステレオ画像校正部22は、ステレオカメラ13から入力された2つの画像データに対して、単眼カメラにおける光学的なずれ、単眼カメラ間における幾何的なずれを補正する。ステレオ画像記憶部23は、ステレオ画像校正部22が校正した2つの画像データをステレオ演算のための元画像として記憶する。ステレオ演算処理部24は、2つの画像データを処理して視差データを算出する。視差データ記憶部25は、距離情報の算出のための視差データを記憶する。
【0028】
ステレオカメラ13は、ある焦点距離fのレンズ光学系と撮像素子からなる単眼カメラ1L、単眼カメラ1Rを有している。これら二つの単眼カメラ1L、1Rは、露光時間やゲインが可変のCCDカメラであり、両者は互いに同期が取られ、同一タイミングで画像を撮影している。なお、撮像素子はCCDに限らず、CMOS等の撮像素子でもよい。ステレオカメラ13には、これら二つの単眼カメラ1L、1Rがある所定の基線長Bの距離を置いて、光軸が平行になるよう配置されている。
【0029】
ステレオ画像校正部22は、レンズ光学系と撮像素子の機械的なずれやレンズ光学系により生じる歪曲収差、また、単眼カメラの取り付け位置のずれを補正する。具体的には例えばLUT(Look Up Table)により画素位置が置き換えられる。ステレオ画像校正部22は、例えば、所定の画像処理機能を実現するFPGA等から構成される電気回路である。前述の補正項目における補正量は、事前に非特許文献1等のキャリブレーション手法により求めておくが、補正項目、キャリブレーション手法共に非特許文献1の内容に限定されない。
【0030】
ステレオ演算処理部24は、ステレオ画像記憶部23に記憶された左カメラの画像データ(比較画像とする)と右カメラの画像データ(基準画像とする)に対して、両画像の小領域ごとの相関値を求めることで対応点を検出するブロックマッチングを行い、両画像間の対応点の画素のずれ(視差)を算出する。この視差データは、式(1)の視差dに対応し、焦点距離f、基線長Bを用いて測定対象物までの3次元距離情報を取得することを可能にする。ステレオ演算処理部24もステレオ画像校正部22と同様に、FPGA等から構成される電気回路である。ステレオ演算処理部24の詳細は後述する。
【0031】
ステレオ演算処理部24により得られた視差データは、視差データ記憶部25に記憶され、車両制御や認識処理等に利用される。なお、視差データ記憶部25に記憶する際、式(1)を用いて視差データを距離情報に換算しておいてもよい。
【0032】
〔ステレオ演算処理部の処理の詳細〕
図6は、ステレオ演算処理部24における視差値算出の流れを示すフローチャートである。
【0033】
S11:ステレオカメラ13が2つの画像データを撮像し、入力画像をステレオ画像校正部22に入力する。ステレオ画像校正部22はLUT等により2つの画像データを校正し、ステレオ画像記憶部23に記憶する。
【0034】
S12:ステレオ演算処理部24は、左右の2つの画像データ(比較画像と基準画像)に対してブロックマッチングを行い、ピクセル単位での視差値dintを算出する。S12の処理手順は後に詳述する。
【0035】
図7は、ブロックマッチングを説明する図の一例である。ブロックマッチングでは、入力画像を小領域の探索ブロックに分割し、基準画像の探索ブロックに対して比較画像の探索ブロックの位置を、画像の水平方向に1画素ずつずらしながら(シフトしながら)相関値の計算を行う。本実施例では、
探索ブロックのサイズ : 7×7
基準画像の各画素の輝度値 : Mi,j(i=1〜7、j=1〜7)
比較画像の各画素の輝度値 : Si,j(i=1〜7、j=1〜7)
とする。ただし、探索ブロックのサイズは一例に過ぎない。
【0036】
予め探索範囲を制限するため、探索した(ずらした)画素数が閾値TH1を満たした時点で相関値が最も相関を示す(この場合は相関値が小さい)シフト量を決定する。この最も相関値が小さかった画素位置におけるシフト量が、ピクセル単位での視差値dintを表す。
【0037】
なお、上述したように、本実施例では、ZSSD値を相関値とするが、このZSSD値は一般のZSSD値を3倍したものになっている。
【0038】
S13:ステレオ演算処理部24は、ステップS12で算出された相関値を用いて、サブピクセル単位での視差値を算出する。
【0039】
サブピクセルの視差値の算出方法としては、等角直線フィッティングやパラボラフィッティングなどが知られている。本実施例では等角直線フィッティングを用いて、サブピクセルの視差値dsubを算出する。
【0040】
図8は、等角直線フィッティングを説明する図の一例である。等角直線フィッティングでは、最小の相関値R(0)、2番目に小さい相関値R(1)、及び、3番目に小さい相関値R(-1)を用いる。
(i)最小の相関値(図の黒丸)と3番目に小さな相関値(図のR(-1))を通る直線を引く
(ii)その直線の傾きの符号を逆にした直線で、2番目に小さな相関値(図の(R(1))を通る直線を引く
(iii)2直線の交点位置を求め、最小の相関値から交点までの距離をサブピクセル単位での視差値dsubの推定値とする
等角直線フィッティングを数式で表現すると式(2)により表される。もっとも相関が高い画素の相関値がR(0)、隣接画素の相関値がR(-1)、R(1)である。なお、本実施例では相関値の3倍を算出しているが、相関値が定数倍されてもサブピクセルでの視差値dsubは変化しない。
【0041】
【数1】
S14:ステレオ演算処理部24は、ピクセル単位での視差値dintとサブピクセル単位での視差値dsubを加算することで、視差データdを算出する。
【0042】
<S12の処理>
図9は、ステップS12の処理の詳細な手順を示すフローチャート図の一例を、図10はステレオ演算処理部24の回路構成を模式的に示す図の一例をそれぞれ示す。加算器241は比較画像の探索ブロックの48個の画素の画素値を加算し、シフト部242は加算結果を4bit右シフトする。シフト部243は比較画像の探索ブロックの48個の画素の画素値をそれぞれ1bit左シフトし、加算器244は1bit左シフトされた画素値と元の画素値とを加算する。基準画像側のブロックについても同様である。ZSSD演算器249はZSSD値を算出する。
S12−1:加算器241は比較画像の探索ブロックの注目画素以外の48画素の和を算出し、加算器245は基準画像の探索ブロックの注目画素以外の48画素の和を算出する。なお、注目画素とは探索ブロック内の中心画素を意味し、本実施例ではM4,4、S4,4である。
【0043】
加算器241,245は、1画素毎に加算を48回繰り返す回路でもよいが、48画素の加算を1回で行う回路、又は、m個の画素の加算を1度に行いそれを48/m回繰り返す回路など、さまざまな実装形態がある。一般に1度に加算可能な画素数が多いほど演算が速いが回路規模が大きくなる傾向にあるので、回路規模の制約と必要な演算速度から加算器241,245を設計する。
【0044】
S12−2:次に、シフト部242は加算器241が加算した48個の画素の加算結果を4bit右シフトし、シフト部246は加算器245が加算した48個の画素の加算結果を4bit右シフトする。これは算術シフトであり、上位4桁にはゼロ(正値を意味する)が補充され、下位4桁は捨てられる。4bitの右シフトは16で除算することと等価である。本来、48個の画素の画素値の平均値を求めるのであれば、48で除算すればよいが、シフト演算では2のべき乗の数でしか除算できない。そこで、本実施例では、4bit右シフトすることで16で除算し、注目画素以外の48画素の画素値の平均値×3を近似平均値としている。
近似平均値
=48画素の画素値の合計を4bit右シフトした値
=48画素の画素値の平均値×3
S12−3:シフト部243と加算器244が、比較画像の探索ブロック内の48個の画素の画素値を3倍した値を計算し、シフト部247と加算器248が、基準画像の探索ブロック内の48個の画素の画素値を3倍した値を計算する。すなわち、シフト部243は比較画像の各画素の画素値を1bit左シフトし、シフト部247は基準画像の各画素の画素値を1bit左シフトする。最上位ビットには正値を意味するゼロを保持したまま、最上位ビット以外の下位ビットをそれぞれ1ビット左にシフトし、最下位ビットにゼロを補充する。これにより、2倍した値が得られる。
【0045】
シフト部243は画素値を2倍した値を加算器244に入力し、加算器244は比較画像の各画素の画素値と2倍された画素値を加算する。同様に、シフト部247は画素値を2倍した値を加算器248に入力し、加算器248は比較画像の各画素の画素値と2倍された画素値を加算する。これにより、比較画像と基準画像それぞれの画素の画素値を3倍した値が得られる。
【0046】
S12−4:ZSSD演算器249が、式(3)を用いて、ZSSD値を3倍した値と同等の値を算出する。以下、この値を単にZSSD値という。
3×ZSSD=Σ{(3×Sij−近似平均値)−(3×Mij−近似平均値)}2 …(3)
すなわち、ZSSD演算器249は、比較画像について、各素毎に、画素値を3倍した値から近似平均値を減じ、基準画像について、各素毎に、画素値を3倍した値から近似平均値を減じる。そして、比較画像の減算値(3×Sij−近似平均値)から基準画像の減算値(3×Mij−近似平均値)を減じた値を二乗する。そして、48個得られる二乗値を全て加算する。
【0047】
このような演算により、除算処理することなく相関値としてZSSD値が得られる。
【0048】
S12−5:ステレオ演算処理部24は、探索画素数が閾値TH1以上か否かを判定する。
【0049】
S12−6:探索画素数が閾値TH1より大きくない場合、ステレオ演算処理部24は、探索画素数を1つ増やし(注目画素を水平方向に1画素ずつずらして)、S12−1〜12−4の処理を、探索画素数が閾値TH1より大きくなるまで演算する。したがって、閾値TH1個の相関値が得られ、このうち最も小さいZSSD値が得られたシフト量が、ピクセル単位での視差値dintである。
【0050】
なお、ステップS12−2において、4bit右シフトと3倍の処理は、探索ブロックのサイズを7×7画素とした場合の値であって、シフト量と3倍という値は上記に制限されない。例えば、探索ブロックのサイズを4×4とした場合、まず、注目画素を含めて16画素の画素値の合計を算出する。この場合シフト量は右4bitとすればよく、各画素の画素値を3倍する必要はない。
【0051】
また、例えば、探索ブロックのサイズを6×6とした場合、まず、注目画素を含めて36画素の画素値の合計を算出する。シフト量は右2bitとなり、この場合、各画素の画素値を9倍する。このように、探索ブロックのサイズ、着目画素の画素値を加算するか否か、シフト量、定倍数は適宜、定めることができる。
【0052】
〔従来法との比較〕
図11は、除算処理により求めたサブピクセルの視差値と本実施例の方法で求めたサブピクセルの視差値の比較例を示す図であり、図12は並進量とサブピクセルの関係のグラフを示す図の一例である。サブピクセル単位で視差値dsubを比較するのは、ピクセル単位では両者の算出結果が完全に一致してしまい、差異が確認できないためである。
【0053】
例えば、実験者は、測距ターゲットとステレオカメラ13との間の距離を一定に保ち、ステレオカメラ13を測距ターゲットと平行の方向に0.2ピクセルずつ5回並進させた。それぞれの並進量の際に、サブピクセルの視差値dsubを、ステレオ演算処理部24が従来法と本実施例の算出方法で算出した。図12では横軸がステレオカメラ13の並進量[pix]、縦軸がサブピクセルの視差値dsubである。
【0054】
図11、図12から明らかなように、本実施例の視差値dsubの算出結果と、除算処理による視差値dsubの算出結果とが同等の値(ほぼ同じ)になっている。
【0055】
したがって、本実施例のステレオカメラシステム100は、除算回路又は除算処理を用いて平均値差分マッチングを行ったときと同等の精度を、より高速な処理で実現できることが検証された。
【実施例2】
【0056】
本実施例では、ノイズの影響により相関性の低い小領域をミスマッチすることを防止するステレオカメラシステム100について説明する。本実施例では、基準画像及び比較画像の小領域の平均値を算出後に、両平均値の差の絶対値を算出し、差の絶対値が閾値より大きい場合は両領域が異なる領域であると判断してマッチング処理を行わない。こうすることで、相関性の低い小領域をミスマッチすることを防止することができる。また、従来技術用のように、小領域内の各画素単位で演算しないので演算コストも低減できる。
【0057】
本実施例では、図6の処理手順は実施例1と同様だが、ステップS12の処理内容が異なっている。
【0058】
<S12の処理>
図13は、図6のステップS12の処理の詳細な手順を示すフローチャート図の一例を示す。図14はステレオ演算処理部24の回路構成を模式的に示す図の一例をそれぞれ示す。本実施例のステレオ演算処理部24は減算器250を有する。減算器250は、シフト部242と246が出力する2つの近似平均値の差の絶対値を算出し、閾値以下か否かの判定結果をZSSD演算器249に出力する。
【0059】
S12−11:加算器241は比較画像の注目画素以外の48画素の和を算出し、加算器245は基準画像の注目画素以外の48画素の和を算出する。
【0060】
S12−12:次に、シフト部242は、加算器241が加算した48個の画素の加算結果を4bit右シフトする。これにより、近似平均値2が得られる。同様に、シフト部246は、加算器245が加算した48個の画素の加算結果を4bit右シフトする。これにより、近似平均値1が得られる。
【0061】
なお、必ずしもシフトする必要はなく、基準画像と比較画像の48画素又は49画素の画素値の合計値の差の絶対値を求めてもよい。
【0062】
S12−13:減算器250は2つの近似平均値1,2の差の絶対値を算出し、その差が類似判定閾値TH21より小さいか否かを判定する。
2つの探索ブロックが類似している、つまり両探索ブロック領域が2つの画像中で対応する領域の場合、それぞれの探索ブロックで算出した近似平均値はほぼ同等の値になる。これに対し、両探索ブロックが異なる領域の場合は、それぞれの探索ブロックで算出した近似平均値も異なる値となる。
【0063】
この考え方により、両探索ブロック内の近似平均値1,2の差の絶対値が類似判定閾値TH21より小さい場合、両探索ブロックが類似していると判断できる。両探索ブロック内の近似平均値1,2の差の絶対値が類似判定閾値TH21以上の場合、両探索ブロックが異なる領域であると判断される。
【0064】
S12−14:両探索ブロックが類似していると判断された場合、ZSSD演算部249はZSSD値を算出する。算出方法は実施例1と同様である。
【0065】
S12−15:両探索ブロックが類似していないと判断された場合、ステレオ演算処理部24は、探索した画素数が予め設定した閾値TH1以上か否かを判定する。探索した画素数が予め設定した閾値TH1以上の場合、算出されたいくつかのZSSD値のうち最も小さい相関値が得られたシフト量が、ピクセル単位での視差値dintである。
【0066】
S12−16:探索した画素数が予め設定した閾値TH1以上でない場合、ステレオ演算処理部24は、1画素隣りの画素位置に移り、S12-11〜S12−15の処理を継続する。
【0067】
本実施例では、単に基準画像と比較画像の探索ブロックの平均を求めるだけなので、探索ブロックの各画素の画素値から平均値を引くような処理が不要であり、演算コストを低減できる。
【0068】
<変形例>
本実施例のミスマッチの防止処理は、除算回路を用いたステレオ演算処理部24によっても実現できる。
【0069】
図15は、図6のステップS12の処理の詳細な手順を示すフローチャート図の一例を示す。図16はステレオ演算処理部24の回路構成を模式的に示す図の一例をそれぞれ示す。図16のステレオ演算処理部24は除算回路251、252を有する。除算回路251、252は、加算器241、245が加算した49画素の画素値の合計を、定数49で除算する。したがって、基準画像および比較画像の探索ブロックにおける画素値の平均値MAVE、SAVEがそれぞれ算出される。
【0070】
【数2】
減算器250は、平均値MAVE、SAVEの差の絶対値を算出し、閾値以下か否かの判定結果をZSSD演算器249に出力する。したがって、図13と同様に、両探索ブロックが2つの画像中で対応する領域の場合にだけ、ブロックマッチング処理を行うことができる。
【0071】
S12−11:加算器241は比較画像の49画素の和を算出し、加算器245は基準画像の49画素の和を算出する。
【0072】
S12−12´:次に、除算回路251が加算器241が加算した49個の画素の加算結果を49で除算し、除算回路252が加算器245が加算した49個の画素の加算結果を49で除算する。これにより、平均値MAVE、SAVEが得られる。
【0073】
S12−13´:減算器250は2つの平均値MAVE、SAVEの差の絶対値を算出し、その差が類似判定閾値TH22より小さいか否かを判定する。両探索ブロック内の近似平均値の差の絶対値が類似判定閾値TH22より小さい場合、両探索ブロックが類似していると判断できる。両探索ブロック内の近似平均値の差の絶対値が類似判定閾値TH22以上の大きい場合、両探索ブロックが異なる領域であると判断される。
【0074】
S12−14:両探索ブロックが類似していると判断された場合、ZSSD演算部249はZSSD値を算出する。算出方法は実施例1と同様でもよいが、除算回路251,252を有する場合は以下のようにして算出できる。
ZSSD=Σ{(Sij−SAVE)−(Mij−MAVE}2 …(4)
すなわち、ZSSD演算器249は、探索ブロックの比較画像の画素毎に、画素値Sijから平均値SAVEを減じ、基準画像の画素毎に画素値Mijから平均値MAVEを減じる。それらの差分の二乗和がZSSD値である。
【0075】
S12−15:両探索ブロックが類似していないと判断された場合、ステレオ演算処理部24は、探索した画素数が予め設定した閾値TH1以上か否かを判定する。探索した画素数が予め設定した閾値TH1以上の場合、算出されたいくつかのZSSD値のうち最も小さいZSSD値が得られたシフト量が、ピクセル単位での視差値dintである。
【0076】
S12−16:探索した画素数が予め設定した閾値TH1以上でない場合、ステレオ演算処理部24は、1画素隣りの画素位置に移り、S12-11〜S12−15の処理を継続する。
【0077】
このような演算方法でも、探索ブロックの各画素の画素値から平均値を引くような処理が不要であり、演算コストを低減できる。
【符号の説明】
【0078】
11 表示装置
12 画像処理ECU
13 ステレオカメラ
20 画像処理IC
21 ステレオ画像入力部
22 ステレオ画像校正部
23 ステレオ画像記憶部
24 ステレオ演算処理部
25 視差データ記憶部
100 ステレオカメラシステム
【先行技術文献】
【特許文献】
【0079】
【特許文献1】特開平11−234701号公報
【特許文献2】特開2003−288584号公報
【非特許文献】
【0080】
【非特許文献1】Z.Zhang, "A Flexible New Technique for Camera Calibration", Technical Report MSR-TR-98-71, Microsoft Research, 1998
【特許請求の範囲】
【請求項1】
一対のステレオカメラが第1の画像と第2の画像を撮影するステップと、
加算手段が、前記第1の画像の小領域内の画素データの第1の合計値、及び、前記第2の画像の小領域内の画素データの第2の合計値を算出する合計値算出ステップと、
シフト手段が、前記第1の合計値を所定ビット数、右にシフトして第1の近似平均値を算出し、前記第2の合計値を前記所定ビット数、右にシフトして第2の近似平均値を算出する近似平均値算出ステップと、
整数倍手段が、前記第1の画像の小領域内の各画素データの値を整数倍し、前記第2の画像の小領域内の各画素データの値を整数倍する整数倍ステップと、
相関値算出手段が、前記第1の画像の小領域内の画素データ毎に、該画素データの値を整数倍した値から前記第1の近似平均値を引いた第1のデータと、前記第2の画像の小領域内の画素データ毎に、該画素データを整数倍した値から前記第2の近似平均値を引いた第2のデータをそれぞれ求め、前記第1のデータと前記第2のデータとの差の二乗和又は差の絶対値和を算出する相関値算出ステップと、
を有する画像処理方法。
【請求項2】
前記整数倍手段は、前記第1の画像の小領域内の各画素データ毎に、該画素データの値を左に所定ビット数シフトした値に該画素データの値を加算することで、前記第1の画像の小領域内の各画素データの値を整数倍し、
前記第2の画像の小領域内の各画素データ毎に、該画素データの値を左に所定ビット数シフトした値に該画素データの値を加算することでし、前記第2の画像の小領域内の各画素データの値を整数倍する、
ことを特徴とする請求項1記載の画像処理方法。
【請求項3】
加算手段が加算した、前記第1の画像の小領域内の画素データの数又は前記第2の画像の小領域内の画素データの数を、前記シフト手段がシフトした所定ビット数の2のべき乗により除した数と、
整数倍手段による整数倍の倍数が等しい、
ことを特徴とする請求項1又は2記載の画像処理方法。
【請求項4】
減算手段が、前記第1の近似平均値と前記第2の近似平均値の差の絶対値が閾値より小さいか否かを判定するステップを有し、
前記絶対値が閾値より小さい場合にのみ、前記整数倍手段は整数倍ステップを行い、前記相関値算出手段は相関値算出ステップを行う、
ことを特徴とする請求項1〜3いずれか1項記載の画像処理方法。
【請求項5】
加算手段が加算して得た前記第1の合計値を、除算回路が、前記第1の画像の小領域内の画素データの数で除算した第1の除算結果と、
前記第2の合計値を前記第2の画像の小領域内の画素データの数で除算した第2の除算結果をそれぞれ求める除算ステップをさらに有し、
前記第1の除算結果と前記第2の除算結果の差の絶対値が閾値より小さいか否かを判定するステップを有し、
前記第1の除算結果と前記第2の除算結果の差の絶対値が閾値より小さい場合にのみ、前記整数倍手段は整数倍ステップを行い、前記相関値算出手段は相関値算出ステップを行う、
ことを特徴とする請求項1〜3いずれか1項記載の画像処理方法。
【請求項6】
演算手段が、前記第1の画像の小領域を1画素ずつずらして得られた複数の相関値から最も小さい相関値を選択し、該相関値が得られた際のずらし量により、前記第1の画像と前記第2の画像に共通に撮影された対象物との距離を算出するステップ、
をさらに有することを特徴とする請求項1〜4いずれか1項記載の画像処理方法。
【請求項7】
前記演算手段は、複数の前記相関値から小さい順に3つの相関値を抽出し、3つの相関値に等角直線フィッティングを施しサブピクセル単位の視差情報を算出する、
ことを特徴とする請求項6記載の画像処理方法。
【請求項8】
請求項1〜7いずれか1項記載の画像処理方法を搭載したステレオカメラシステム。
【請求項1】
一対のステレオカメラが第1の画像と第2の画像を撮影するステップと、
加算手段が、前記第1の画像の小領域内の画素データの第1の合計値、及び、前記第2の画像の小領域内の画素データの第2の合計値を算出する合計値算出ステップと、
シフト手段が、前記第1の合計値を所定ビット数、右にシフトして第1の近似平均値を算出し、前記第2の合計値を前記所定ビット数、右にシフトして第2の近似平均値を算出する近似平均値算出ステップと、
整数倍手段が、前記第1の画像の小領域内の各画素データの値を整数倍し、前記第2の画像の小領域内の各画素データの値を整数倍する整数倍ステップと、
相関値算出手段が、前記第1の画像の小領域内の画素データ毎に、該画素データの値を整数倍した値から前記第1の近似平均値を引いた第1のデータと、前記第2の画像の小領域内の画素データ毎に、該画素データを整数倍した値から前記第2の近似平均値を引いた第2のデータをそれぞれ求め、前記第1のデータと前記第2のデータとの差の二乗和又は差の絶対値和を算出する相関値算出ステップと、
を有する画像処理方法。
【請求項2】
前記整数倍手段は、前記第1の画像の小領域内の各画素データ毎に、該画素データの値を左に所定ビット数シフトした値に該画素データの値を加算することで、前記第1の画像の小領域内の各画素データの値を整数倍し、
前記第2の画像の小領域内の各画素データ毎に、該画素データの値を左に所定ビット数シフトした値に該画素データの値を加算することでし、前記第2の画像の小領域内の各画素データの値を整数倍する、
ことを特徴とする請求項1記載の画像処理方法。
【請求項3】
加算手段が加算した、前記第1の画像の小領域内の画素データの数又は前記第2の画像の小領域内の画素データの数を、前記シフト手段がシフトした所定ビット数の2のべき乗により除した数と、
整数倍手段による整数倍の倍数が等しい、
ことを特徴とする請求項1又は2記載の画像処理方法。
【請求項4】
減算手段が、前記第1の近似平均値と前記第2の近似平均値の差の絶対値が閾値より小さいか否かを判定するステップを有し、
前記絶対値が閾値より小さい場合にのみ、前記整数倍手段は整数倍ステップを行い、前記相関値算出手段は相関値算出ステップを行う、
ことを特徴とする請求項1〜3いずれか1項記載の画像処理方法。
【請求項5】
加算手段が加算して得た前記第1の合計値を、除算回路が、前記第1の画像の小領域内の画素データの数で除算した第1の除算結果と、
前記第2の合計値を前記第2の画像の小領域内の画素データの数で除算した第2の除算結果をそれぞれ求める除算ステップをさらに有し、
前記第1の除算結果と前記第2の除算結果の差の絶対値が閾値より小さいか否かを判定するステップを有し、
前記第1の除算結果と前記第2の除算結果の差の絶対値が閾値より小さい場合にのみ、前記整数倍手段は整数倍ステップを行い、前記相関値算出手段は相関値算出ステップを行う、
ことを特徴とする請求項1〜3いずれか1項記載の画像処理方法。
【請求項6】
演算手段が、前記第1の画像の小領域を1画素ずつずらして得られた複数の相関値から最も小さい相関値を選択し、該相関値が得られた際のずらし量により、前記第1の画像と前記第2の画像に共通に撮影された対象物との距離を算出するステップ、
をさらに有することを特徴とする請求項1〜4いずれか1項記載の画像処理方法。
【請求項7】
前記演算手段は、複数の前記相関値から小さい順に3つの相関値を抽出し、3つの相関値に等角直線フィッティングを施しサブピクセル単位の視差情報を算出する、
ことを特徴とする請求項6記載の画像処理方法。
【請求項8】
請求項1〜7いずれか1項記載の画像処理方法を搭載したステレオカメラシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2013−45276(P2013−45276A)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願番号】特願2011−182369(P2011−182369)
【出願日】平成23年8月24日(2011.8.24)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願日】平成23年8月24日(2011.8.24)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]