(57)【要約】      （修正有）【課題】ステレオカメラの垂直ずれ調整の処理高速化のためにハードウェア化してもハード量の増加と消費電力の増加を防止する。【解決手段】ステレオカメラ装置１０は、基準画像と参照画像の視差を算出するステレオマッチング回路３０３１を備え、ステレオマッチング回路３０３１は、２次元画像をブロックライン単位で読み出す１次元変換部３０５を有し、参照画像を複数のブロックラインそれぞれで探索し、基準画像に対する参照画像の垂直ずれを検知する。【選択図】図１
2019002787.tif 000002
【特許請求の範囲】
【請求項１】
基準画像と参照画像の視差を算出するステレオマッチング回路を備え、
該ステレオマッチング回路は、２次元画像をブロックライン単位で読み出す１次元変換部を有し、
前記参照画像を複数の前記ブロックラインそれぞれで探索し、
前記基準画像に対する前記参照画像の垂直ずれを検知することを特徴とするステレオカメラ装置。
【請求項２】
前記１次元変換部は、参照画像の垂直位置をずらしながら抽出された１ライン分のブロックラインデータを保持するブロックラインバッファを有することを特徴とする、請求項１に記載のステレオカメラ装置。
【請求項３】
前記ステレオマッチング回路は、複数の前記探索した前記ブロックラインの結果を保持するメモリを有し、
該メモリから前記基準画像との一致度が最も大きい前記参照画像の位置をマッチング位置とし、
前記マッチング位置のマッチング結果と、前記マッチング位置の上下の前記ブロックラインに位置するマッチング結果とを用いて、垂直方向にサブピクセルを算出することを特徴とする、請求項１又は２に記載のステレオカメラ装置。
【請求項４】
垂直ずれ検知に使用した画像の垂直ずれを調整し、前記調整された画像で視差を算出する、請求項１乃至３のいずれかに記載のステレオカメラ装置。
【請求項５】
前記視差を算出する処理の消費電力と、前記垂直ずれの検知する処理の消費電力との差が所定値以下であることを特徴とする、請求項１乃至４のいずれかに記載のステレオカメラ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステレオカメラ装置に関する。
【背景技術】
【０００２】
車両の走行安全性を向上させるために、車両に搭載したカメラで前方の障害物を検知して、その障害物に衝突する可能性がある場合は、ドライバへの警報や自動ブレーキを行うシステムが研究されている。
【０００３】
車両の前方を監視するセンサとして、ミリ波レーダー、レーザレーダ、カメラなどがある。カメラの種類としては、単眼カメラと、複数のカメラを使用したステレオカメラがある。ステレオカメラは、所定の間隔の２つのカメラで撮影された重複領域の視差を利用して、撮影された物体までの距離を計測することができる。このため、前方の物体までの衝突危険度を的確に把握することができる。
【０００４】
ステレオカメラは、２つのカメラで撮影された画像の視差を求めて、その視差を距離に変換する。視差を求めるためには、２つのカメラ間の画像の一致度判定を行う必要がある。視差を正確に算出するためには、この２つの画像のレンズの歪みやカメラの位置ずれを正しく補正する必要がある。レンズの歪みは、ステレオカメラ装置を製造した時に補正パラメータを使用して、画像の歪みを補正することができる。一方、カメラの位置ずれは経年変化や温度変化、または振動によって発生するため、製品が出荷された後に補正パラメータを調整する必要がある。この位置ずれを補正する方式として、特許文献１が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２５６８７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１では、ステレオカメラ装置が稼働中に、所定の時間間隔で垂直ずれをリアルタイムに補正するとしている。しかし、位置ずれ調整の処理はマイクロコンピュータのソフトウェアで処理されるため、視差演算の周期に比べて、非常に遅い周期になる。高速化のためにこのソフトウェアによる位置ずれ調整処理をハード化した場合、その分のハード量が増加することになり、コストや消費電力の増加する課題がある。
【０００７】
本発明は、ステレオカメラ装置において、位置ずれ調整のハード化に伴うハード量の増加と消費電力の増加を防止することを目的としている。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明の特徴は、例えば以下の通りである。基準画像と参照画像の視差を算出するステレオマッチング回路を備え、該ステレオマッチング回路は、２次元画像をブロックライン単位で読み出す１次元変換部を有し、前記参照画像を複数の前記ブロックラインそれぞれで探索し、前記基準画像に対する前記参照画像の垂直ずれを検知する。
【発明の効果】
【０００９】
本発明によれば、位置ずれ検知のブロックマッチングと視差演算のブロックマッチングを共通のハードウェアで処理することができるため、ハード量の増加と消費電力の増加を防止できる効果がある。上記した以外の課題、構成及び効果は以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】ステレオカメラ装置の機能ブロック図
【図２】視差演算の説明図
【図３】垂直ずれ検知を行うための基準画像と参照画像を示す図
【図４】視差演算部の構成を示す図
【図５】視差演算のサブピクセルの算出方法を示す図
【図６】垂直ずれ検知のサブピクセルの算出方法を示す図
【図７】垂直ずれ調整値設定処理のフローチャート
【図８】垂直ずれ検知の結果から垂直ずれ調整値を算出する方法を示す図
【図９】視差演算の後で垂直ずれ検知を処理するタイムチャート
【図１０】垂直ずれ検知の後で視差演算を処理するタイムチャート
【発明を実施するための形態】
【００１１】
以下、図面等を用いて、本発明の実施形態について説明する。以下の説明は本発明の内容の具体例を示すものであり、本発明がこれらの説明に限定されるものではなく、本明細書に開示される技術的思想の範囲内において当業者による様々な変更および修正が可能である。また、本発明を説明するための全図において、同一の機能を有するものは、同一の符号を付け、その繰り返しの説明は省略する場合がある。
【実施例１】
【００１２】
図１は、ステレオカメラ装置10のブロック図を示したものである。該ステレオカメラ装置10は、CPU60、撮影部20、アフィン変換部302、視差演算部303、内部バス70が同一のSoC(System on a Chip)90に搭載される。
【００１３】
撮影部20は、右カメラ22と左カメラ21の２つのカメラに接続される。撮影部20は、左右カメラ21、22が撮影した画像を輝度補正やノイズ除去を行った後、内部バス70を経由して、画像メモリ50の中のソース画像右220とソース画像左210の領域に書き込む。
【００１４】
このようにして書き込まれたソース画像右220とソース画像左210は、アフィンへ変換部302によって、レンズの歪みや左右カメラ21、22の位置ずれが補正される。この補正された画像は、画像メモリ50に、アフィン後右画像2210とアフィン後左画像2110として書き込まれる。またこれらの画像は視差演算部303のステレオマッチング部3031によって、距離情報の算出のため視差が演算される。
【００１５】
更に、垂直ずれ検知部304によって、左右カメラ21、22の垂直ずれのずれ量を検知することができる。これらの結果は画像メモリ50の視差画像502と垂直ずれ検知結果503に格納される。その後、CPU60で動作する垂直ずれ調整値設定処理601が、前記垂直ずれ検知結果503を用いて垂直ずれ量を算出し、アフィン変換部302の中の垂直ずれ調整値レジスタ3020にその値を設定する。前記レジスタ3020の値に従って、アフィン変換部302は、左右カメラ21、22の垂直ずれを調整することが可能となる。前記レジスタ3020による画像の補正処理は以下の演算に従う。
【００１６】
【数１】
2019002787.tif 000003
【００１７】
但し、x,yはアフィン変換部302に入力される画像の座標値、θは回転補正角度、ShiftXは水平ずれ量、ShiftYは垂直ずれ量である。
【００１８】
図２は、視差演算部303の視差演算処理を示したものである。右カメラ22が撮影した画像を基準画像とし、例えば8画素x 8画素のような基準ブロック画像221を定義する。ブロック画像のサイズはこの例に限るものではない。一方、左カメラ21が撮影した画像の中で、前記基準ブロック画像221と同じ縦位置（Y座標）と横位置（X座標）を基準として、探索幅（例えば128画素）の参照画像212を選択する。その後、前記基準ブロック画像221と前記参照画像との差分を計算する。この差分計算はSADと呼ばれ、次の計算を行う。
【００１９】
【数２】
2019002787.tif 000004
【００２０】
但し、Iは前記参照画像の中の8x8画像ブロック、Tは前記基準ブロック画像221の画像データであり、i,jは画像ブロック内の座標である。１つの視差を算出するために、前記参照画像の参照位置を１画素ずつずらしながら前記探索幅の分だけ演算を行い、最もSAD値が小さくなる位置を探索する。
【００２１】
図２に示す、車両の前方窓から見た実際の風景230には、前方車両200がある。右カメラ22で撮影した右画像2210と、左カメラ21で撮影した左画像2110がある時、前方車両200の一部201は、右画像2210では位置221の位置に撮影され、左画像2110では位置211の位置に撮影される。この結果、基準ブロック画像221の位置と参照ブロック画像211には視差dが生じる。この視差dは、前方車両200がステレオカメラ装置10に近い場合は大きい値となり、遠いものは小さい値となる。このように求めた視差を、画像全体で求める。この視差dを用いて、三角測量の原理でステレオカメラ装置10までの距離を測定することが出来る。視差dから距離Zは次の式で求められる。
【００２２】
【数３】
2019002787.tif 000005
【００２３】
但し、fは右及び左カメラの焦点距離、Bは右カメラ22と左カメラ21の距離（基線長）である。
【００２４】
図３は、垂直ずれ検知部304の処理の概要を示す。アフィン変換後右画像2210の横一列に揃った複数個所に16画素ｘ16画素の基準画像A2211、基準画像B2212、基準画像C2213を決める。アフィン変換後左画像2110には、それらの中心と同じ位置に24ｘ24画素の参照画像A2111、参照画像B2112、参照画像C2113を決める。その後、参照画像A2111に対して基準画像A2211を１画素ずつ横方向及び縦方向にずらしながら２次元ブロックマッチングを行い、最も一致するY座標を求める。垂直ずれがなければ、参照画像A2111の中心で基準画像A2211がマッチングするため、Y座標はゼロになる。
【００２５】
ブロックマッチングの評価関数は、視差演算を行う[数２]と同じ演算を行う。以降同様に、基準画像B2212は参照画像B2112で垂直ずれを検知し、基準画像C2213は参照画像C2113で垂直ずれを検知する。前記基準画像と参照画像の数が多いほど、縦ずれ調整の精度が向上する。この縦ずれ検知処理をハードウェア化して高速処理を可能とすることで、前記基準画像と参照画像の数を増やすことができる。
【００２６】
図４は、視差演算部303の構成を示したものである。視差演算部303は、視差を算出するためのステレオマッチング処理と、垂直ずれ検知処理を行う。ステレオマッチング処理は、アフィン変換後右画像2210の中から、８ｘ８画素サイズの画像を基準画像バッファA3032に入れる。この画像は、図２における基準ブロック画像221である。
【００２７】
参照画像ラインバッファ3030には、アフィン変換後左画像2110の中から前記右画像2210と同じ座標位置から８ｘ128画素サイズの画像を入れる。この画像は、図２における参照画像212である。これらの２つのバッファをステレオマッチング回路3031に接続し、参照画像ラインバッファ3030から８ｘ８画素サイズの画像を抽出して、一致度評価部3034で前記[数２]の計算を行い、その結果を評価結果メモリAに入れる。
【００２８】
この処理を参照画像ラインバッファ3030の横方向のサイズである128画素まで１画素ずつずらしながら一致度評価を行う。評価結果メモリ3033は128個の評価結果が入っており、この中から最小値を抽出する。その最小値の位置が視差となる。しかし、このままでは、視差の精度は座標の整数値の精度である。更に精度を上げるため、サブピクセル処理部3035でサブピクセルの算出を行う。
【００２９】
また、ステレオマッチング処理の前記評価結果メモリ3033の中で、最小値が複数存在する場合、または最小値から所定の範囲内に評価値が複数存在した場合は、その時の視差値は精度が低下しているため、視差データは無いものとする。縦ずれ検知処理の場合は、参照画像ブロックメモリ3050にアフィン変換後左画像2110から参照画像の１つを格納する。次にそのメモリ3050から縦16画素、横24画素のデータをブロックラインバッファ3051に読み出す。また、基準画像バッファＢ307には、アフィン変換後右画像2210から、前記参照画像に対応した基準画像を入れる。
【００３０】
ステレオマッチング回路3031の一致度評価部3034で、ブロックマッチングを行いながらその結果を評価結果メモリＢ306の中の１つのラインに入れていく。１つのラインの処理が終了したら、参照画像ブロックメモリ3050の縦方向に１画素ずらした位置からデータを読み出してブロックラインバッファ3051に格納する。以下同様にブロックマッチングを行う。これを参照画像ブロックメモリ3050の全てについて処理する。
【００３１】
その結果、評価結果メモリＢ306には、９ワードｘ９ライン分の評価結果が入る。評価結果メモリＢ306の中の最小値の位置がマッチング位置となり、そのマッチング位置の評価値と、そのマッチング位置とX座標は同じでY座標が+1、-1の評価値をサブピクセル処理部3035に送り、Ｙ方向のサブピクセルを算出する。前記評価値の最小値が複数存在した場合、または、最小値から所定の範囲内の評価値が複数存在した場合、縦ずれが無いものとする。
【００３２】
図５は、視差のサブピクセルを算出する方法を示したものである。図５の横軸は参照画像ラインバッファ3030をスキャンしたX座標で、縦軸は一致度評価値である。座標値Xの評価値4011が最小であった時にそのXはマッチング位置となる。その前後の座標の一致度評価値4010と4012を用いて、直線4013と直線4014の傾きを計算し、これらの傾きが大きい方を選択する。この例では直線4013の傾きが大きいので、直線4013の傾きの符号を反転した傾きで評価値4010を通る直線4015を計算する。その直線4015と直線4013の交点をスキャン座標軸に投影した点4016がサブピクセルとなり、正確なマッチング位置を算出することができる。
【００３３】
図６は、垂直ずれ検知処理のサブピクセル処理を行う場合について示したものである。横軸に一致度評価値、縦軸にはY座標を示す。評価結果メモリB306の９ワードｘ９ラインの中の最小値4021の部分のY座標がマッチング位置となる。その上下の座標の評価値4020、4022を用いて直線4024と直線4023の傾きを計算し、これらの傾きの絶対値が小さい方を選択する。この例では直線4023の傾きが小さいので、直線4023の傾きの符号を反転した傾きで評価値4020を通る直線4025を計算する。その直線4025と直線4023の交点をY座標に投影した点4026がサブピクセルとなり、正確なマッチング位置を算出することができる。
以上のように、図５と図６では基本的な処理は同じであるため、サブピクセル処理部3035でどちらも処理が可能である。
【００３４】
図７は、縦ずれ調整値設定処理601のフローチャートを示したものである。
【００３５】
まず、アフィン変換後左画像2110から参照画像の１つを参照画像ブロックメモリ3050に格納する。更にアフィン変換後右画像2210から、前記参照画像に対応した基準画像を基準画像バッファB307に格納する（S100）。
【００３６】
次に、参照画像ブロックメモリ3050を読み出すための参照ポインタYpをゼロに初期化する（S110）。
【００３７】
前記参照ポインタYpの位置から縦16画素、横24画素のデータをブロックラインバッファ3051に転送する（S120）。
【００３８】
このデータを用いて、ステレオマッチング回路3031で1ライン分のブロックマッチングを処理する。評価結果は評価結果メモリB306の１ラインに格納する（S130）。
【００３９】
１ライン分のブロックマッチングが終了すると前記参照ポインタYpを更新する（S140）。
【００４０】
参照画像ブロックメモリ3050の最後までブロックマッチングを行ったか判定し、終了するまでS120から処理を繰り返す（S150）。
【００４１】
１つの参照画像のブロックマッチングが終了した場合は、評価結果メモリB306の結果から最小値のY座標とその評価値を抽出する（S160）。
【００４２】
その抽出されたデータを用いてサブピクセル処理部3035でサブピクセルを算出する（S170）。
【００４３】
参照画像A2111、B2112、C2113の全てが終了するまでS100から処理を繰り返す（S180）。
【００４４】
次に、参照画像A2111、B2112、C2113のマッチング位置のサブピクセルを含めたY座標から縦すれ量を算出する（S190）。
【００４５】
垂直ずれ量の算出方法は図８で説明する。次に、算出された垂直ずれ量をアフィン変換部302の垂直ずれ調整値レジスタ3020に設定する（S200）。
【００４６】
このようにして設定されたデータは、式（１）のθとShiftYとしてアフィン変換部302で演算される。
【００４７】
図８は、垂直ずれ量を算出する方法を示したものである。横軸にアフィン変換後左のX座標、縦軸には図３に示す２次元ブロックマッチング処理のY座標とする。図７のフローチャートで算出された、参照画像Aのマッチング位置501、参照画像Bのマッチング位置502、参照画像Cのマッチング位置503をこの図に配置する。最小二乗法等の近似手法によって、これらの３点を近似直線500で近似する。その結果、この直線503のY軸との交点506が左画像垂直オフセットShiftYとなる。また、交点506から水平に伸ばした水平線505と近似直線500の角度504が回転角θとなる。
【００４８】
図９は、視差演算と垂直ずれ検知のタイムチャートを示したものである。視差演算と垂直ずれ検知はステレオマッチング回路3031を共用するため、交互に処理を行う。撮影部20が画像（１）を取り込んでいる途中から、画像（１）の視差演算を開始する。その後、視差演算が終了した後に、同じ画像（１）で垂直ずれ検知を行う。その結果を用いて画像（２）の視差演算のときのアフィン変換処理で垂直ずれ調整が可能となる。このようにすると、画像（１）が撮影されてから視差演算が終了するまでの時間遅れを少なくすることができる。但し、垂直ずれ検知を行う画像と視差演算を行う画像がずれて処理される。この方法は、垂直ずれが緩やかに発生する場合に適している。また、消費電力では、視差演算と垂直ずれ検知では同じステレオマッチング回路3031を使用しているので、視差演算部303の消費電力は変化量が少ない。一方、垂直ずれ検知と視差演算でマッチング回路を共用せず個別に持つ場合は、処理を並列化できる代わりに、垂直ずれ検知の時は消費電力が増える。
【００４９】
図１０は、図９の垂直ずれ検知と視差演算の処理順序を逆にしたものである。このようにすると、視差演算を行う画像は、常に垂直ずれ検知が終わって垂直ずれが調整された後で視差演算が行われるので、視差の精度が高くなる。この方法は、カメラのブレ等で垂直ずれが高速に発生する場合に適している。
【００５０】
以上の実施例によれば、垂直ずれ検知のブロックマッチングと視差演算のブロックマッチングを共通のハードウェアで処理することができるため、ハード量の増加と消費電力の増加を防止できる効果がある。また、垂直ずれ検知処理を高速処理できるため、視差演算を行う前にその画像の垂直ずれを調整できるため、フレーム単位で垂直ずれが発生するような環境でも高精度な視差演算が可能となる効果がある。
【符号の説明】
【００５１】
10  ステレオカメラ装置
20  撮影部        
21  左カメラ
22  右カメラ
50  画像メモリ
60  CPU
70  内部リバス
90  SoC
210  ソース画像左
220  ソース画像右
302  アフィン変換部
303  視差演算部
304  垂直ずれ検知部
305  1次元変換部
306  評価結果メモリB
307  基準画像バッファB
502  視差画像
503  垂直ずれ検知結果
601  垂直ずれ調整値設定処理
2110  アフィン変換後左画像
2210  アフィン変換後右画像
3020  垂直ずれ調整値レジスタ
3030  参照画像ラインバッファ
3031  ステレオマッチング回路
3032  基準画像バッファA
3033  評価結果メモリA
3034  一致度評価部
3035  サブピクセル処理部
3050  参照画像ブロックメモリ
3051  ブロックラインバッファ
【図１】
2019002787.tif 000006
【図２】
2019002787.tif 000007
【図３】
2019002787.tif 000008
【図４】
2019002787.tif 000009
【図５】
2019002787.tif 000010
【図６】
2019002787.tif 000011
【図７】
2019002787.tif 000012
【図８】
2019002787.tif 000013
【図９】
2019002787.tif 000014
【図１０】
2019002787.tif 000015