説明

車載カメラ用画像補正方法および車載カメラ用画像補正プログラム

【課題】形状や寸法が既知の図形を用いることなく車載カメラの現在の取り付け角度を求めることができる車載カメラ用画像補正方法および車載カメラ用画像補正プログラムを提供する。
【解決手段】車載カメラ用画像補正方法は、車両に取り付けられたカメラが車両の周囲を撮像するステップS1と、カメラにより撮像された画像内の路面画像にもとづいて動きベクトルを検出するステップS5と、検出された動きベクトルを、真上視点の動きベクトルとなるように車両の進行方向軸、路面法線方向軸ならびに進行方向軸および路面法線方向軸に直交する路面平行方向軸の3軸の各軸周りに独立に回転補正させるための式である真上視点の動きベクトルへの変換式を作成するステップS6と、真上視点の動きベクトルへの変換式からカメラの車両に対する取り付け角度を求めるステップS7と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、車載カメラ用画像補正方法および車載カメラ用画像補正プログラムに関する。
【背景技術】
【0002】
自動車などの車両の運転を支援するための技術には、車載カメラにより取得された画像を利用するものがある。この画像を利用する際には、画像を生成する車載カメラの光軸方向の情報が非常に重要である。しかし、車載カメラの光軸方向は、最初の取り付け方向が不明の場合や、取り付け部材の劣化等により経年変化する場合があるほか、荷物の重量による車両の傾きによっても変化する。
【0003】
このため、車載カメラの現在の光軸方向の情報を取得し、取得した光軸方向の情報に応じて画像の補正を行うための種々の技術が開発されている。この種の技術としては、たとえば路面標示(横断歩道または自転車横断帯があることを示す標示など)を画像から検出することにより光軸補正を行うものがある。路面標示の種類と形式は道路交通法に定められているため、寸法が全国統一またはエリア別に規定されている路面標示を検出対象として用いれば、誤検出を低減し正確に光軸方向の情報を取得することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−11174号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、路面標示のように形状や寸法が既知の図形を用いる場合、あらかじめこれらの形状や寸法の情報を取得しておかなければならず煩雑である。また、路面標示などの図形に対する車載カメラの光軸方向に応じて車載カメラ画像に含まれる図形画像の向きが異なるため、このあらかじめ取得した情報を利用するためには、車両を所定の向きから路面表示などの図形に対峙させなければならないとともに、路面表示などの図形の形状のばらつきに対応することが難しい。また、車載カメラ画像における路面画像が斜め視点の画像である場合、真上視点の画像を用いる場合に比べて動きベクトルの検出精度が悪くなってしまう。
【課題を解決するための手段】
【0006】
本発明の一実施形態に係る車載カメラ用画像補正方法は、上述した課題を解決するために、車両に取り付けられたカメラが車両の周囲を撮像するステップと、カメラにより撮像された画像内の路面画像にもとづいて動きベクトルを検出するステップと、検出された動きベクトルを、真上視点の動きベクトルとなるように車両の進行方向軸、路面法線方向軸ならびに進行方向軸および路面法線方向軸に直交する路面平行方向軸の3軸の各軸周りに独立に回転補正させるための式である真上視点の動きベクトルへの変換式を作成するステップと、真上視点の動きベクトルへの変換式からカメラの車両に対する取り付け角度を求めるステップとを有する方法である。
【図面の簡単な説明】
【0007】
【図1】本発明の第1実施形態に係る車載カメラ用画像補正方法を実施するための車載カメラ用画像補正装置の一例を示すブロック図。
【図2】座標系と回転方向の関係の一例を示す説明図。
【図3】図1に示す車載カメラ用画像補正装置により、形状や寸法が既知の図形を用いることなく真上視点の動きベクトルへの変換式を求めることにより車載カメラの現在の取り付け角度を求める際の手順を示すフローチャート。
【図4】(a)は理想的な真上視点の平面画像から検出される動きベクトルの一例を示す説明図、(b)は理想的な真上視点からx軸周りにのみ回転した平面画像から検出される動きベクトルの一例を示す説明図、4(c)は理想的な真上視点からy軸周りにのみ回転した平面画像から検出される動きベクトルの一例を示す説明図、(d)は理想的な真上視点からz軸周りにのみ回転した平面画像から検出される動きベクトルの一例を示す説明図。
【図5】(a)はx軸回転角度ずれとy軸回転角度ずれが同時に生じている場合の動きベクトルの一例を示す説明図、(b)は(a)の場合における動きベクトルのu/wのx方向分布の一例を示す説明図。
【図6】(a)はz軸回転角度ずれが生じている場合の動きベクトルの一例を示す説明図、(b)は(a)の場合における動きベクトルのz方向成分wの大きさのx方向分布の一例を示す説明図。
【図7】図3のステップS6でカメラ角度算出部により実行される、第1の方法による真上視点の動きベクトルへの変換式生成処理の手順を示すサブルーチンフローチャート。
【図8】図3のステップS6でカメラ角度算出部により実行される、第2の方法による真上視点の動きベクトルへの変換式生成処理の手順を示すサブルーチンフローチャート。
【図9】本発明の第2実施形態に係る車載カメラ用画像補正方法を実施するための車載カメラ用画像補正装置の一例を示すブロック図。
【発明を実施するための形態】
【0008】
本発明に係る車載カメラ用画像補正方法および車載カメラ用画像補正プログラムの実施の形態について、添付図面を参照して説明する。
【0009】
本発明の一実施形態に係る車載カメラ用画像補正方法は、車載カメラの取得画像から動きベクトルを検出し、この動きベクトルを真上視点の動きベクトルに変換する変換式を求めることによって車載カメラの現在の取り付け角度(光軸方向の情報)を取得する方法である。
【0010】
(1.第1の実施形態)
(1−1.構成)
図1は、本発明の第1実施形態に係る車載カメラ用画像補正方法を実施するための車載カメラ用画像補正装置10の一例を示すブロック図である。
【0011】
車載カメラ用画像補正装置10は、車載カメラ11、制御部12、特徴路面検出部13、画像メモリ14、平面画像生成部15、ルックアップテーブル16、動きベクトル検出部17およびカメラ角度算出部18を有する。
【0012】
車載カメラ11は、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサにより構成され、自家用自動車等の車両周囲の画像を取り込んで画像信号を生成して画像メモリ13および特徴路面検出部14に与える。
【0013】
たとえば後方を監視する場合、車載カメラ11は車両後部のナンバープレート付近に路面と平行な線からやや下向きに配設される。車載カメラ11には、より広範な車両外画像が取得可能なように広角レンズや魚眼レンズが取り付けられてもよい。また、車両の側方を監視する場合、カメラ11はサイドミラー付近に配設される。また、複数のカメラ11を用いることにより広範な車外周囲画像を取り込むようにしてもよい。
【0014】
制御部12は、たとえばCPU、RAM、ROMを備えたマイクロコントローラにより構成され、各部13−18の動作を統括して管理する。
【0015】
特徴路面検出部13は、車載カメラ11により撮像された画像のうち、路面画像が特徴点を含む路面画像(以下、特徴路面画像という)である画像を検出し、検出した旨の情報を制御部12に与える。
【0016】
特徴路面検出部13は、路面画像が動きベクトルを検出する足がかりとなる特徴点を含む路面画像(特徴路面画像)を検出すればよく、形状や寸法が既知の図形を検出する必要はない。換言すれば、特徴路面検出部13は、特徴点を含まない平坦な路面画像であると特徴路面画像ではないと判定する。特徴路面検出部13が特徴路面画像を検出する場合としては、たとえば路面上に描かれた路面標示や模様が検出された場合や、路面画像のうち車両の進行方向に対して横方向の部分に所定数以上の明暗エッジが検出された場合などが挙げられる。
【0017】
また、特徴路面検出部13は、車両を前進または後進させつつ車載カメラ11から複数の画像を取得し、ルックアップテーブル16を用いてこれらの画像を平面画像とし、動きベクトル検出部17が所定の大きさ以上の動きベクトルを所定の数以上検出したことをもって特徴路面画像を検出してもよい。
【0018】
画像メモリ14は、車載カメラ11により撮像された画像を複数フレーム分記憶する。この記憶するフレームの数は、あらかじめユーザにより設定されてもよいし、初期設定されてもよい。また、画像メモリ14は、特徴路面画像が検出されると、制御部12によって、特徴路面画像の検出時点から過去に所定数のフレーム分さかのぼって画像を読み出されてもよい。また、画像メモリ14は、特徴路面画像が検出されると、制御部12によって、この検出された時点から車載カメラ11により撮像された画像の記憶を開始するよう制御されてもよい。
【0019】
平面画像生成部15は、特徴路面画像が検出されると、画像メモリ14から画像を複数読み出し、ルックアップテーブル16を用いてそれぞれの画像について平面画像を生成する。
【0020】
ルックアップテーブル16は、車載カメラ11により撮像された画像を、車両に対する車載カメラ11の初期の取り付け角度にもとづいて仮の真上視点の平面画像(理想的な真上視点の平面画像を目指した平面画像)を生成するために平面画像生成部15により用いられるテーブルである。また、たとえば車載カメラ11に広角レンズが取り付けられている場合は、ルックアップテーブル16は、車載カメラ11により撮像された広角画像を通常の2次元画像に正規化するとともに、この正規化画像を、車両に対する車載カメラ11の初期の取り付け角度にもとづいて仮の真上視点の平面画像を生成するために用いられる。
【0021】
動きベクトル検出部17は、ブロックマッチング法や勾配法などを用いて、平面画像生成部15により生成された複数の平面画像から画素ごとに動きベクトルを算出する。
【0022】
車両に対する車載カメラ11の最初の取り付け角度が初期設定値に対してずれていない場合や、現在の取り付け角度が初期の角度から変化していない場合は、このルックアップテーブル16を用いて生成された仮の真上視点の平面画像は正確な(理想的な)真上視点の平面画像となり、この理想的な平面画像から検出される動きベクトル(以下、真上視点の動きベクトルという)は全てz成分のみを有し大きさが同一のベクトルとなる。
【0023】
しかし、車載カメラ11の取り付け角度(光軸方向)は、最初の取り付け方向が不明の場合や、取り付け部材の劣化等により経年変化する場合があるほか、荷物の重量による車両の傾きによっても変化する。
【0024】
図2は、座標系と回転方向の関係の一例を示す説明図である。以下の説明では、図2に示すように、進行方向をz軸、路面法線方向をy軸、進行方向および路面法線方向に互いに直交する方向をx軸とする座標系を用いる場合の例について示す。また、動きベクトルのx、y、z成分をそれぞれu、v、wとあらわすものとする。また、図2においては、x軸、y軸、z軸周りの回転をそれぞれRx、Ry、Rzとして示した。
【0025】
車載カメラ11により撮像された画像は、平面画像生成部15により、理想的にはy=fで表されるカメラ投影面21に展開されることになる。ここで、fは車載カメラ11の焦点距離であるものとする。しかし、最初の取り付け角度が初期設定値に対してずれていない場合や、車両に対する車載カメラ11の現在の取り付け角度が初期の角度から変化している場合は、カメラ投影面21はy=fの面からx軸、y軸、z軸周りに回転している。回転した平面画像から検出される動きベクトルは、理想的な真上視点の平面画像から検出される真上視点の動きベクトルを、x軸、y軸、z軸周りに回転したものとなってしまう。
【0026】
そこで、カメラ角度算出部18は、動きベクトル検出部17により検出された動きベクトルを、変換式を用いて回転補正することにより、真上視点の動きベクトルへのを得た変換式から、車両に対する車載カメラ11の現在の取り付け角度を算出する。
【0027】
(1−2.動作)
次に、本実施形態に係る車載カメラ用画像補正装置10の動作の一例について説明する。
【0028】
(1−2−1.概要)
図3は、図1に示す車載カメラ用画像補正装置10により、形状や寸法が既知の図形を用いることなく真上視点の動きベクトルへの変換式を求めることにより車載カメラ11の現在の取り付け角度を求める際の手順を示すフローチャートである。図3において、Sに数字を付した符号はフローチャートの各ステップを示す。
【0029】
なお、加速度がある状態では、加速度や舵角により車両全体が傾くなどして検出する動きベクトルがずれるおそれがある。このため、この手順は加速度なしかつ舵角なしに等速で車両が直進している状態でスタートすることが好ましい。
【0030】
まず、ステップS1において、車載カメラ11は、少なくとも路面を含む車両周囲の画像を取り込んで画像信号を生成して画像メモリ13および特徴路面検出部14に与える。
【0031】
次に、ステップS2において、特徴路面検出部13は、車載カメラ11により撮像された画像に含まれる路面画像が特徴的な路面の画像か否か、すなわち、車載カメラ11により撮像された画像が特徴路面画像を含む画像であるか否かを判定する。特徴路面画像を含む画像である場合は、特徴路面画像を含む画像を検出した旨の情報を制御部12に与えてステップS3に進む。一方、特徴路面画像を含む画像でない場合は、引き続き特徴路面画像を含む画像を検出すべく車載カメラ11により撮像された画像を監視する。
【0032】
次に、ステップS3において、平面画像生成部15は、画像メモリ14から複数フレームの画像(たとえば連続する2フレームの画像)を読み出す。
【0033】
次に、ステップS4において、平面画像生成部15は、画像メモリ14から読み出した複数フレームの画像のそれぞれについて、ルックアップテーブル16を用いて平面画像を生成する。
【0034】
次に、ステップS5において、動きベクトル検出部17は、ブロックマッチング法や勾配法などを用いて、平面画像生成部15により生成された複数の平面画像から画素ごとに動きベクトル(u、v、w)を検出する。
【0035】
次に、ステップS6において、カメラ角度算出部18は、動きベクトル検出部17により検出された動きベクトルを、真上視点の動きベクトルになるように回転補正をする変換式を作成する。
【0036】
次に、ステップS7において、カメラ角度算出部18は、真上視点の動きベクトルへの変換式から、車両に対する車載カメラ11の現在の取り付け角度を算出する。なお、ステップS6においてすでに取り付け角度が算出されている場合は、ステップS7を省略してもよい。
【0037】
以上の手順によって、形状や寸法が既知の図形を用いることなく、真上視点の動きベクトルへの変換式を求めることにより車載カメラ11の現在の取り付け角度を求めることができる。
【0038】
なお、動きベクトルにもとづいて舵角が無いと判断する場合は、補正後に真上視点のベクトルを検出し、z軸方向に離れるほどu(x方向成分)の大きさが大きくならなかった場合とするとよい。
【0039】
また、動きベクトルにもとづいて加速度がないと判断するためには、補正後に真上視点のベクトルを検出し、複数フレーム間でw(z方向成分)の大きさが変わらなかった場合とするとよい。
【0040】
続いて、真上視点の動きベクトルへの変換式生成処理についてより詳細に説明する。
【0041】
図4(a)は理想的な真上視点の平面画像から検出される動きベクトルの一例を示す説明図であり、(b)は理想的な真上視点からx軸周りにのみ回転した平面画像から検出される動きベクトルの一例を示す説明図である。また、図4(c)は理想的な真上視点からy軸周りにのみ回転した平面画像から検出される動きベクトルの一例を示す説明図であり、(d)は理想的な真上視点からz軸周りにのみ回転した平面画像から検出される動きベクトルの一例を示す説明図である。
【0042】
図4(a)に示すように、理想的な真上視点の平面画像から検出される動きベクトルは、どのベクトルもx成分およびy成分を持たず、z成分のみを持つとともに、大きさが同一となる。
【0043】
図4(b)に示すように、x軸回転角度のみがずれている場合は、各動きベクトルはz軸上の収束点を向き、収束点に近づくほど大きさが小さくなる。
【0044】
図4(c)に示すように、y軸回転角度のみがずれている場合は、各動きベクトルはz軸に対して所定の角度の同じ向きを有するとともに、大きさが同一となる。
【0045】
図4(d)に示すように、z軸回転角度のみがずれている場合は、各動きベクトルは理想的な場合と同様にz成分のみを持つが、その大きさはx座標に応じて単調に変化する。
【0046】
一般に、動きベクトルの検出精度は、真横や真縦のベクトル(図4(a)参照)であると高精度となり、拡大方向(図4(b)および(d)参照)や斜め方向(図4(c)参照)のベクトルでは精度が落ちることが知られている。このため、真上視点の動きベクトルを生成することが好ましい。
【0047】
真上視点の動きベクトル生成方法としては、次の2通りの方法が適用できる。
【0048】
第1の方法は、ルックアップテーブル16を更新しつつ動きベクトルを真上視点に近づけていく方法である。第1の方法では、ルックアップテーブル16が真上視点の平面画像の生成に適した内容となるように調整していく。
【0049】
第2の方法は、動きベクトルを射影変換することにより真上視点に近づけていく方法である。第2の方法では、図3のステップS4で用いられるルックアップテーブル16をそのまま変更することなく、図3のステップS5で得られた動きベクトルを射影変換することにより真上視点に近づける。
【0050】
いずれの方法を用いる場合であっても、x軸回転角度ずれによる動きベクトルの大きさや向きの変化によるy軸回転角度やz軸回転角度への影響を無視した場合、x軸回転、y軸回転およびz軸回転は、次のように、大まかには独立とみなしてあつかうことができる。
【0051】
x軸回転角度ずれ量は、動きベクトルの収束点の位置により決定することができる。
【0052】
y軸回転角度ずれ量は、x=0付近での動きベクトルの向きにより決定することができる。なお、x=0からx軸方向に遠ざかると、x軸回転角度ずれの影響を受けやすい。
【0053】
z軸回転角度ずれ量は、z方向の動きベクトルの大きさwのx方向の分布より決定することができる。
【0054】
x軸回転角度ずれによる動きベクトルの大きさや向きの変化によるy軸回転角度やz軸回転角度への影響を無視することができる場合としては、そもそもx軸回転角度ずれがほとんど無い場合や、z方向の動きベクトルの取得位置制限を入れる場合が挙げられる。
【0055】
第1の方法および第2の方法のいずれの方法であっても、真上視点の動きベクトルに近づけるように回転角度補正を繰り返すことで、x軸回転角度ずれは小さくなっていく。このため、回転角度補正の初期段階ではx軸回転角度ずれによるy軸回転角度やz軸回転角度への影響があってもかまわない。また、図4(b)−(d)から明らかなように、動きベクトルのz方向依存性はx軸回転角度ずれによってのみ生じる。このため、回転角度補正の最終段階でx軸回転角度ずれが小さくなれば、z方向の動きベクトルの取得位置制限を入れる必要もない。
【0056】
したがって、x軸回転角度ずれとy軸回転角度ずれは、動きベクトル(u、v、w)のu/wのx方向の分布から求めることができ、z軸回転角度ずれは、z方向の動きベクトルの大きさwのx方向の分布から求めることができる。
【0057】
(1−2−2.変換式の作成)
そこで、それぞれの角度補正を独立して行うために、焦点方向ベクトルと画面の上方向ベクトルを指定することによる一般的な変換行列(変換式)の作成方法を使用する。
【0058】
行列Aから行列Bへの変換行列Rが次のように定義されているとする。
【数1】

【0059】
焦点方向ベクトルF(Fx、Fy、Fz)と、上方向ベクトルU(Ux、Uy、Uz)が用意されていた場合、変換行列Rの各成分は次のように表せる。
R[2][0] = -Fx
R[2][1] = -Fy
R[2][2] = Fz
d2 = √(R[2][0]・R[2][0] + R[2][1]・R[2][1] + R[2][2]・R[2][2])
R[2][0] = R[2][0] / d2
R[2][1] = R[2][1] / d2
R[2][2] = R[2][2] / d2
R[0][0] = -Uy・R[2][2] - Uz・R[2][1]
R[0][1] = -Uz・R[2][0] - Ux・R[2][2]
R[0][2] = Ux・R[2][1] + Uy・R[2][0]
d0 = √(R[0][0]・R[0][0] + R[0][1]・R[0][1] + R[0][2]・R[0][2])
R[0][0] = R[0][0] / d0
R[0][1] = R[0][1] / d0
R[0][2] = R[0][2] / d0
R[1][0] = R[2][1]・R[0][2] - R[2][2]・R[0][1]
R[1][1] = R[2][2]・R[0][0] - R[2][0]・R[0][2]
R[1][2] = R[2][0]・R[0][1] - R[2][1]・R[0][0]
d1 = √(R[1][0]・R[1][0] + R[1][1]・R[1][1] + R[1][2]・R[1][2])
R[1][0] = R[1][0] / d1
R[1][1] = R[1][1] / d1
R[1][2] = R[1][2] / d1
【0060】
上記により得られた回転行列Rは、焦点方向を(0、0、1)、上方向を(0、−1、0)とした場合、単位行列となり、変換が行われない。つまり焦点方向(0、0、1)および上方向(0、−1、0)に対しての進行方向に対するそれぞれの軸の補正したい回転角度(φx、φy、φz)をそれぞれ独立で指定した場合、焦点方向は(−tan(φy)、tan(φx)、1)で、上方向は(−tan(φz)、−1、0)と指定して回転行列を作成すればよい。
【0061】
そこで、進行方向に対して真下方向とする回転行列Rgndを、焦点方向を(0、1、0)、上方向を(0、0、1)として作成し、進行方向に対する補正したい回転行列をRgoとして作成した場合、ルックアップテーブル16を作成する際に使用する回転行列はRgo Rgndの行列計算での結果となる。また、Rgoに対して、Rs分だけずれていた場合、進行方向の回転行列はRs Rgoの行列計算での結果となる。
【0062】
補正したい回転行列Rgoから補正したい各軸の回転角度(φx、φy、φz)を導き出したい場合は下記のようにすれば良い。
φx = arctan(-R[2][1] / R[2][2]) (2)
φy = arctan(R[2][0] / R[2][2]) (3)
φz = arctan(R[0][1] / R[0][0]) (4)
したがって、変換行列を用いれば、それぞれの軸の回転角度を独立してまとめて補正することができる。
【0063】
(1−2−3.x軸回転補正とy軸回転補正)
上述の通り、x軸回転角度ずれとy軸回転角度ずれは、動きベクトル(u、v、w)のu/wのx方向の分布から求めることができる。以下、より詳細に説明する。
【0064】
図5(a)はx軸回転角度ずれとy軸回転角度ずれが同時に生じている場合の動きベクトルの一例を示す説明図であり、(b)は(a)の場合における動きベクトルのu/wのx方向分布の一例を示す説明図である。
【0065】
図5(a)に示すように、x軸回転角度ずれとy軸回転角度ずれが同時に生じているために動きベクトルがばらついている場合を考える。この場合、u/wのx方向の分布はほぼ線形となる。このため、動きベクトルの検出精度が悪いことを考慮し、図5(b)に示すように、u/wのx方向の分布を最小2乗法により次のように直線近似する。
u/w = a・x + b (5)
このときx=0での傾きbをy軸回転補正量として使用する場合、
φy = arctan(b) (6)
となる。
【0066】
また、仮にx軸回転角度ずれが生じているとし、収束点(FOEx、f、FOEz)が存在するとした場合、収束点への傾きと式(5)で得られるu/wは同じになるので、
(FOEx - x) / FOEz = u / w = a・x + b
FOEx = (a・x + b)・FOEz + x
が得られる。この式にxに2点x1およびx2を代入してFOEzを求めると、
(a・x1 + b)・FOEz + x1 = (a・x2 + b)・FOEz + x2
FOEz = -1/a
となる。したがって、補正したいx軸回転角度φxは次のように書ける。
φx = -arctan(f / FOEz) = arctan(f・a) (7)
【0067】
(1−2−4.z軸回転補正)
上述の通り、z軸回転角度ずれは、z方向の動きベクトルの大きさwのx方向の分布から求めることができる。以下、より詳細に説明する。
【0068】
図6(a)はz軸回転角度ずれが生じている場合の動きベクトルの一例を示す説明図であり、(b)は(a)の場合における動きベクトルのz方向成分wの大きさのx方向分布の一例を示す説明図である。
【0069】
図6(a)に示すように、z軸回転角度ずれが生じているために動きベクトルがばらついている場合を考える。この場合、wの大きさのx方向の分布はほぼ線形となる。このため、動きベクトルの検出精度が悪いことを考慮し、図6(b)に示すように、wの大きさのx方向の分布を最小2乗法により次のように直線近似する。
【0070】
|w| = a・x + b (8)
xに対し、x=0で線対称な2点であるx=fとx=−fを代入し、z軸回転したときの|w|が同じ長さに見えればよい。まず2点をそれぞれ計算すると下記のような座標になる。
(f, f, a・f + b)
(-f, f, -a・f + b)
この各点を次のようにz軸周りに回転させる。
【0071】
x2 = x1・cos(φz) - y1・sin(φz)
y2 = y1・cos(φz) + x1・sin(φz)
z2 = z1
【0072】
得られた座標が同じ長さに見えるためには、z2/y2が同じになればよいので、次の式(9)が得られる。
(a・f + b)/(f・cos(φz) + f・sin(φz))=(-a・f + b)/(f・cos(φz) - f・sin(φz))
(a・f + b)・(cos(φz) - sin(φz)) = (-a・f + b)・(cos(φz) + sin(φz))
-2・b・ sin(φz) = -2・a・f・cos(φz)
φz = arctan(a・f / b) (9)
【0073】
(1−2−5.x軸回転補正の他の方法)
動きベクトルの分布がx方向ではなくz方向に散らばっているとする場合、x軸回転補正は、z軸回転補正と同様に、長さを考慮した計算方法を用いてz方向のベクトルwの大きさのz方向の分布から求めることができる。この場合、x軸回転補正は式(9)に準じた計算処理で行い、y軸回転補正は上述した式(6)にもとづいて行ってもよい。
【0074】
(1−2−6.ばらつきの軽減)
式(1)−(9)を用いることにより各軸の回転補正結果を得ることができるが、動きベクトルのばらつきを軽減するためには、次の条件の1つまたは複数を満たすように補正処理を行うことが好ましい。
【0075】
条件1:式(5)および(8)の近似1次式より正確なものとなるように、特徴路面画像の検出において、広くx方向に動きベクトルが分布する画像、すなわち路面画像上の特徴点がx方向に分散している画像を検出するとよい。
【0076】
条件2:動きベクトルのz方向成分の大きさが所定の大きさ以上となるように、動きベクトルを検出するための2枚の画像の取得時間を所定の時間以上ずらすとよい。また、このとき、大きさが所定の大きさ以上の動きベクトルのみを用いて補正処理を行うとするとよい。大きさが所定の大きさ以上の動きベクトルのみを用いる場合、自車両による影を分離することができる。また、広角レンズを用いると自車両が画像に映りこんでしまう場合があるが、大きさが所定の大きさ以上の動きベクトルのみを用いることで、画像に映りこんだ自車両を分離することができる。
【0077】
条件3:検出した動きベクトルのz方向成分wの平均値を算出し、z方向成分wが平均値から所定の範囲外に属する動きベクトルについては動きベクトル検出部17の検出対象外とするか、カメラ角度算出部18の補正処理には用いないようにするとよい。
【0078】
条件4:検出した動きベクトルのu/wが所定の値より大きい場合は、検出エラーである可能性があるため、動きベクトル検出部17の検出対象外とするか、カメラ角度算出部18の補正処理には用いないようにするとよい。
【0079】
以上の条件1−4を適用することにより、補正処理に用いられる動きベクトルのばらつきを軽減することができる。
【0080】
また補正量が所定の補正量以下になるまで補正処理を繰り返すにあたり、条件1−4をより厳しくしていくことで、より精度の高い真上視点の動きベクトルへの変換式を得ることができる。真上視点に近づくほど、取得できる動きベクトルの精度は上がるため、検出条件をより厳しいものにしても十分な数の動きベクトルを検出可能である。
【0081】
また、補正処理を繰り返すことにより各軸の回転補正量が所定の補正量以下となった場合、さらに所定の回数補正処理を繰り返し、直近の所定回数の補正処理結果の動きベクトルの平均値を最終的な動きベクトルとして一連の処理を終了とすることで、さらに精度の高い真上視点の動きベクトルへの変換式を得ることができる。
【0082】
(1−2−7.第1の方法)
次に、第1の方法(ルックアップテーブル16を更新しつつ動きベクトルを真上視点に近づけていく方法)について説明する。
【0083】
図7は、図3のステップS6でカメラ角度算出部18により実行される、第1の方法による真上視点の動きベクトルへの変換式生成処理の手順を示すサブルーチンフローチャートである。図7において、Sに数字を付した符号はフローチャートの各ステップを示す。
【0084】
まず、ステップS611において、カメラ角度算出部18は、各軸の回転補正量が所定の補正量以下となったか否か、すなわち動きベクトルが収束したか否かを判定する。収束した場合は、図3のステップS7に進む。一方、収束していない場合はステップS612に進む。
【0085】
次に、ステップS612において、カメラ角度算出部18は、初めてこのステップを実行する場合には図3のステップS5で検出された動きベクトルを用いてルックアップテーブル16を更新する。また、2度目以降にこのステップを実行する場合には、ステップS615で計算された変換式を用いてルックアップテーブル16を更新する。
【0086】
次に、ステップS613において、平面画像生成部15は、更新されたルックアップテーブル16を用いて平面画像を生成する。
【0087】
次に、ステップS614において、動きベクトル検出部17は、ブロックマッチング法や勾配法などを用いて、平面画像生成部15により更新されたルックアップテーブル16を用いて生成された複数の平面画像から画素ごとに動きベクトル(u、v、w)をあらためて検出する。
【0088】
次に、ステップS615において、カメラ角度算出部18は、ステップS614で得た動きベクトルが真上視点の動きベクトルとなるような、xyz軸を独立に回転補正する変換式から、車両に対する車載カメラ11の取り付け角度を算出して、ステップS611に戻る。
【0089】
なお、収束直前に算出された取り付け角度は、現在の取り付け角度とみなしてもよいため、図3のステップS7を省略してもよい。また、ステップS615でカメラ角度算出部18により行われる回転補正は、上述した条件1−4の1つまたは複数を用いつつ行ってもよい。また、ステップS611で収束したと判定された後、ステップS612−615を所定の回数繰り返し、直近の所定回数の回転補正結果の動きベクトルの平均値を最終的な動きベクトルとして現在の取り付け角度を求めてもよい。この場合も、図3のステップS7を省略してもよい。
【0090】
(1−2−8.第2の方法)
次に、第2の方法(動きベクトルを射影変換することにより真上視点に近づけていく方法)について説明する。
【0091】
図8は、図3のステップS6でカメラ角度算出部18により実行される、第2の方法による真上視点の動きベクトルへの変換式生成処理の手順を示すサブルーチンフローチャートである。図8において、Sに数字を付した符号はフローチャートの各ステップを示す。
【0092】
第2の方法は、図3のステップS4で用いられるルックアップテーブル16をそのまま変更することなく図3のステップS5で得られた動きベクトルを射影変換することにより真上視点に近づける点で第1の方法と異なる。
【0093】
なお、第2の方法では、ルックアップテーブル16を用いて平面画像生成部15により生成される平面は真上視点を目指したものでなくてもよく、車載カメラ11により撮像された画像を所定の視点の平面画像に変換するものであればよい。この場合、車載カメラ11が初期の取り付け角度にある場合にルックアップテーブル16を用いて得られる平面の方程式は既知であるから、この平面上の動きベクトルから真上視点の動きベクトルを目指して仮に射影変換した後、どのベクトルもx成分およびy成分を持たずz成分のみを持つとともに大きさが同一となるように射影変換を繰り返せばよい。
【0094】
まず、ステップS621において、カメラ角度算出部18は、各軸の回転補正量が所定の補正量以下となったか否か、すなわち動きベクトルが収束したか否かを判定する。収束した場合は、図3のステップS7に進む。一方、収束していない場合はステップS622に進む。
【0095】
次に、ステップS622において、カメラ角度算出部18は、動きベクトルが真上視点の動きベクトルとなるように射影変換する。また、2度目以降にこのステップを実行する場合には、ステップS623で計算された変換式を用いて射影変換式を更新する。
【0096】
次に、ステップS623において、カメラ角度算出部18は、ステップS622で得た射影変換された動きベクトルが真上視点の動きベクトルとなるような、xyz軸を独立に回転補正する変換式と射影変換で得た変換式から、車両に対する車載カメラ11の取り付け角度を算出して、ステップS621に戻る。
【0097】
第2の方法を用いる場合、ルックアップテーブル16を一度しか用いず更新も行わないため、第1の方法に比べて計算量が少なくてすみ、処理を高速化することができる。一方、第1の方法は、第2の方法に比べ、ルックアップテーブル16を毎回更新するため、より正確な真上視点の平面画像を生成することができる。
【0098】
第2の方法においても、収束直前に算出された取り付け角度は現在の取り付け角度とみなしてもよいため、図3のステップS7を省略してもよい。また、ステップS622でカメラ角度算出部18により行われる射影変換は、上述した条件1−4の1つまたは複数を用いつつ行ってもよい。また、ステップS621で収束したと判定された後、ステップS622−623を所定の回数繰り返し、直近の所定回数の射影変換結果の動きベクトルの平均値を最終的な動きベクトルとして現在の取り付け角度を求めてもよい。この場合も、図3のステップS7を省略してもよい。
【0099】
なお、制御部12、特徴路面検出部13、平面画像生成部15、動きベクトル検出部17およびカメラ角度算出部18は、CPU、RAM、ROMを備えたワンチップマイクロコントローラにより構成してもよい。この場合、CPUは、ROMに記憶された車載カメラ用画像補正プログラムおよびこのプログラムの実行のために必要なデータをRAMへロードし、このプログラムに従って、形状や寸法が既知の図形を用いることなく真上視点の動きベクトルへの変換式を求めることにより車載カメラ11の現在の取り付け角度を求める処理を実行する(図3参照)。このとき、CPUは、車載カメラ用画像補正プログラムによって、少なくとも制御部12、特徴路面検出部13、平面画像生成部15、動きベクトル検出部17およびカメラ角度算出部18として機能する。また、RAMは、CPUが実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。
【0100】
本実施形態に係る車載カメラ用画像補正方法によれば、形状や寸法が既知の図形を用いずとも、特徴路面画像から動きベクトルを検出し、この検出した動きベクトルから真上視点の動きベクトルへの変換式を求めることにより車載カメラ11の現在の取り付け角度を求めることができる。このため、形状や寸法が既知の図形を用いる場合に比べ、非常に容易かつ正確に車載カメラ11の現在の取り付け角度を求めることができる。車載カメラ11の現在の取り付け角度の情報は、車載カメラ11により撮像された画像を真上視点に変換する際に用いられるほか、他の視点に変換する際などの各種画像補正に利用することができる。
【0101】
また、本実施形態に係る車載カメラ用画像補正方法によれば、動きベクトルを回転補正した状態で真上からの視点になるようにルックアップテーブル16を更新することを繰り返して、または、射影変換により動きベクトルを真上視点に変換して、回転補正を再計算させることを繰り返して、最終結果を得る。最終結果として得られる真上視点の動きベクトルは、真縦(z成分のみ)であるため、非常に正確に検出することが可能である。このため、最初にカメラ画像から検出された動きベクトルの精度が悪い場合であっても、安定して回転補正結果を得ることができる。
【0102】
(2.第2の実施形態)
図9は、本発明の第2実施形態に係る車載カメラ用画像補正方法を実施するための車載カメラ用画像補正装置10Aの一例を示すブロック図である。
【0103】
この第2実施形態に示すカメラ用画像補正装置10Aは、少なくとも自車の加速度の情報を出力する車両情報取得部31を備えた点で第1実施形態に示すカメラ用画像補正装置10と異なる。他の構成および作用については図1に示すカメラ用画像補正装置10と実質的に異ならないため、同じ構成には同一符号を付して説明を省略する。
【0104】
車両情報取得部31は、少なくとも自車の加速度の情報を取得し、制御部12に出力する。車両情報取得部31は、たとえば加速度センサにより構成してもよいし、CAN(Controller Area Network)において一般的に用いられる車両情報取得機能を有するものであってもよい。
【0105】
制御部12は、車両情報取得部31から車両の加速度の情報を取得し、加速度なしかつ舵角なしに等速で車両が直進している状態にあると判定すると、各部13−18に対し図3に示した手順の実行を開始するよう制御する。
【0106】
加速度がある状態では、加速度や舵角により車両全体が傾くなどして検出する動きベクトルがずれるおそれがある。このため、動きベクトルの検出等の図3に示す手順は、加速度および舵角がない状態で行うことが好ましい。この点、第2実施形態に係る車載カメラ用画像補正方法によれば、車両の加速度情報を容易かつ正確に取得することができるため、車載カメラ11の画像に対する加速度および舵角の影響を容易に取り除くことができる。
【0107】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0108】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【0109】
10、10A 車載カメラ用画像補正装置
11 車載カメラ
12 制御部
13 特徴路面検出部
14 画像メモリ
15 平面画像生成部
16 ルックアップテーブル
17 動きベクトル検出部
18 カメラ角度算出部
21 カメラ投影面
31 車両情報取得部

【特許請求の範囲】
【請求項1】
車両に取り付けられたカメラが前記車両の周囲を撮像するステップと、
前記カメラにより撮像された画像内の路面画像にもとづいて動きベクトルを検出するステップと、
前記検出された動きベクトルを、真上視点の動きベクトルとなるように前記車両の進行方向軸、路面法線方向軸ならびに前記進行方向軸および路面法線方向軸に直交する路面平行方向軸の3軸の各軸周りに独立に回転補正させるための式である前記真上視点の動きベクトルへの変換式を作成するステップと、
前記真上視点の動きベクトルへの変換式から前記カメラの前記車両に対する取り付け角度を求めるステップと、
を有する車載カメラ用画像補正方法。
【請求項2】
前記動きベクトルを検出するステップは、
前記カメラにより撮像された画像に対してルックアップテーブルを用いて平面画像を生成し、複数の前記平面画像内の路面画像にもとづいて動きベクトルを検出するステップであり、
前記真上視点の動きベクトルへの変換式を作成するステップは、
前記3軸の各軸周りに独立に回転補正するための変換式を用いて前記検出された動きベクトルを変換し、変換後の動きベクトルにもとづいて前記ルックアップテーブルを更新し、更新後のルックアップテーブルを用いて平面画像を生成し、動きベクトルを検出することを繰り返すステップと、
前記繰り返すステップの繰り返しごとに、回転補正量が所定の補正量以下になったか否かを判定するステップと、
を有し、
前記取り付け角度を求めるステップは、
前記回転補正量が所定の補正量以下になったか否かを判定するステップにおいて前記変換後の回転補正量が所定の補正量以下になったと判定されると、この判定された真上視点の動きベクトルの変換に用いられた変換式から前記カメラの前記車両に対する取り付け角度を求めるステップである、
請求項1記載の車載カメラ用画像補正方法。
【請求項3】
前記動きベクトルを検出するステップは、
前記カメラにより撮像された画像に対してルックアップテーブルを用いて平面画像を生成し、複数の前記平面画像内の路面画像にもとづいて動きベクトルを検出するステップであり、
前記真上視点の動きベクトルへの変換式を作成するステップは、
前記検出された動きベクトルが真上視点の動きベクトルに近づくように変換式を用いて射影変換することを繰り返すステップと、
前記繰り返すステップの繰り返しごとに、射影変換された動きベクトルの回転補正量が所定の補正量以下になったか否かを判定するステップと、
を有し、
前記取り付け角度を求めるステップは、
前記回転補正量が所定の補正量以下になったか否かを判定するステップにおいて前記射影変換された動きベクトルの回転補正量が前記所定の補正量以下になったと判定されると、この判定された真上視点の動きベクトルの変換に用いられた変換式から前記カメラの前記車両に対する取り付け角度を求めるステップである、
請求項1記載の車載カメラ用画像補正方法。
【請求項4】
前記動きベクトルを検出するステップは、
前記カメラにより撮像された画像内の路面画像が特徴点を含む路面画像であるか否かを判定するステップと、
前記路面画像が前記特徴点を含む路面画像であると判定されると、この特徴点を含む路面画像にもとづいて動きベクトルを検出するステップと、
を有する、
請求項1ないし3のいずれか1項に記載の車載カメラ用画像補正方法。
【請求項5】
前記カメラにより撮像された画像を記憶部に複数フレーム格納するステップ、
をさらに有し、
前記特徴点を含む路面画像にもとづいて動きベクトルを検出するステップは、
前記路面画像が前記特徴点を含む路面画像であると判定されると、この判定から複数フレーム過去の画像を前記記憶部から取り出して、これらの過去の画像を用いて前記特徴点を含む路面画像にもとづいて動きベクトルを検出するステップである、
請求項4記載の車載カメラ用画像補正方法。
【請求項6】
前記カメラの前記車両に対する取り付け角度を求めるステップは、
前記動きベクトルの検出位置の前記車両の進行方向の分布を無視した動きベクトルの分布から、路面法線方向軸周りの回転角度と、前記進行方向および前記路面法線方向に垂直な方向軸周りの回転角度と、を求めるステップを有する、
請求項1ないし5のいずれか1項に記載の車載カメラ用画像補正方法。
【請求項7】
前記カメラの前記車両に対する取り付け角度を求めるステップは、
前記動きベクトルの検出位置の前記車両の進行方向の分布を無視した動きベクトルの前記進行方向成分の大きさの分布から、進行方向軸周りの回転角度を求めるステップを有する、
請求項1ないし6のいずれか1項に記載の車載カメラ用画像補正方法。
【請求項8】
前記カメラの前記車両に対する取り付け角度を求めるステップは、
前記動きベクトルの検出位置の前記車両の進行方向および路面法線方向に互いに直交する方向の分布を無視した動きベクトルの前記進行方向成分の大きさの分布から、路面法線方向軸周りの回転角度と、進行方向および前記路面法線方向に垂直な方向軸周りの回転角度を求めるステップを有する、
請求項1ないし7のいずれか1項に記載の車載カメラ用画像補正方法。
【請求項9】
前記真上視点の動きベクトルへの変換式を作成するステップは、
前記繰り返すステップの繰り返しごとに、前記検出された動きベクトルのうち前記車両の進行方向成分の大きさが平均値から所定の範囲外に属するものを除いて変換を行うとともに、繰り返しごとに前記所定の範囲を狭める、
請求項2ないし8のいずれか1項に記載の車載カメラ用画像補正方法。
【請求項10】
前記検出された動きベクトルにもとづいて前記車両の加速度が所定の加速度以下であるか否かを判定するステップと、
前記検出された動きベクトルにもとづいて前記車両の舵角が所定の舵角以下であるか否かを判定するステップと、
の少なくとも一方のステップをさらに有し、
前記真上視点の動きベクトルへの変換式を作成するステップは、
前記所定の加速度以下であると判定された後または前記所定の舵角以下であると判定された後に前記カメラにより撮像された画像内の路面画像にもとづいて検出された動きベクトルに対して、前記変換式を用いて真上視点の動きベクトルに変換するステップである、
請求項1ないし9のいずれか1項に記載の車載カメラ用画像補正方法。
【請求項11】
コンピュータに、
車両に取り付けられたカメラが撮像した前記車両の周囲の画像を取得するステップと、
前記カメラにより撮像された画像内の路面画像にもとづいて動きベクトルを検出するステップと、
前記検出された動きベクトルを真上視点の動きベクトルに変換するための変換式を求めるステップと、
前記真上視点の動きベクトルの変換に用いられた前記変換式から前記カメラの前記車両に対する取り付け角度を求めるステップと、
を実行させるための車載カメラ用画像補正プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−74325(P2013−74325A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−209695(P2011−209695)
【出願日】平成23年9月26日(2011.9.26)
【出願人】(504113008)東芝アルパイン・オートモティブテクノロジー株式会社 (110)
【Fターム(参考)】