【文献】
Zhencheng Hu et al.,Moving Objects Detection from Time-varied Background: An Apprication of Camera 3D Motion Analysis,Proceedings of Second International Conference on 3-D Digital Imaging and Modeling 1999,IEEE,1999年10月 4日,pp. 59-67
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
本発明に係る車載カメラ自動キャリブレーション装置の実施の形態について、添付図面を参照して説明する。
【0009】
(第1の実施形態)
図1は、本発明の第1実施形態に係る車載カメラ自動キャリブレーション装置10の一例を示す全体構成図である。
【0010】
車載カメラ自動キャリブレーション装置10は、カメラ11、車載カメラ自動校正ECU(Electronic Control Unit)12および記憶部13を有する。
【0011】
カメラ11は、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサにより構成され、自家用自動車等の車両周囲の画像を取り込んで画像信号を生成して車載カメラ自動校正ECU(以下、自動校正ECUという)12に与える。
【0012】
たとえば後方を監視する場合、カメラ11は車両後部のナンバープレート付近やリアウインドウの上部などに設けられる。このとき、カメラ11は、光軸が路面と平行となるように、または光軸を路面と平行な線からやや下向きとなるように設けられるとよい。また、カメラ11には、より広範な車両外画像が取得可能なように広角レンズや魚眼レンズが取り付けられてもよい。また、車両の側方を監視する場合、カメラ11はサイドミラー付近に配設される。もちろん、複数のカメラ11を用いることにより広範な車外周囲画像を取り込むようにしてもよい。
【0013】
本実施形態においては、カメラ11が、車両後部のナンバープレート付近やリアウインドウの上部などに、光軸が路面と平行となるように設けられる場合の例について説明する。
【0014】
自動校正ECU12は、CPU、RAMおよびROMなどの記憶媒体などにより構成される。自動校正ECU12のCPUは、ROMなどの記憶媒体に記憶された自動校正プログラムおよびこのプログラムの実行のために必要なデータをRAMへロードする。そして、CPUは、自動校正プログラムに従って、カメラ11により取得された画像にもとづいて走行中に路面に対するカメラ11の取り付け角度の情報を取得し、この情報にもとづいて画像を回転補正する。
【0015】
自動校正ECU12のRAMは、CPUが実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。自動校正ECU12のROMなどの記憶媒体は、自動校正プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【0016】
なお、ROMをはじめとする記憶媒体は、磁気的もしくは光学的記録媒体または半導体メモリなどの、CPUにより読み取り可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は図示しないネットワーク接続部を介して電子ネットワークを介してダウンロードされるように構成してもよい。
【0017】
なお、この場合、ネットワーク接続部は、ネットワークの形態に応じた種々の情報通信用プロトコルを実装し、この各種プロトコルに従って自動校正ECU12と他の車両のECUなどの電気機器とを電子ネットワークを介して接続する。この接続には、電子ネットワークを介した電気的な接続などを適用することができる。ここで電子ネットワークとは、電気通信技術を利用した情報通信網全般を意味し、無線/有線LAN(Local Area Network)やインターネット網のほか、電話通信回線網、光ファイバ通信ネットワーク、ケーブル通信ネットワークおよび衛星通信ネットワークなどを含む。
【0018】
記憶部13は、自動校正ECU12によるデータの読み書きが可能な不揮発性のメモリであり、本実施形態に係る目標消失点の座標の情報である目標FOE
1(x1、y1)、FOE距離閾値th1、2点間距離閾値th2およびルックアップテーブルなどを記憶する。これらの情報は、電子ネットワークを介してまたは光ディスクなどの可搬型記憶媒体を介して更新されてもよい。
【0019】
本実施形態に係る目標FOE
1(x1、y1)は、原点(0、0)に設定される(目標FOE
1=(0、0))。この目標FOE
1は、自動校正ECU12によりXY軸周りの回転補正に用いられる。FOE距離閾値th1および2点間距離閾値th2は、自動校正ECU12により路面点を抽出する際の閾値として用いられる。ルックアップテーブルは、自動校正ECU12により画像を回転補正する際に必要に応じて参照される。なお、自動校正ECU12が画像を回転補正する際に行列演算を行う場合には、ルックアップテーブルは利用されなくてもよく、記憶部13に記憶されずともよい。
【0020】
図1に示すように、自動校正ECU12のCPUは、自動校正プログラムによって、少なくとも座標回転補正部21、動きベクトル算出部22、FOE算出部23、直進判定部24、XY軸回転量算出部25、路面判定部26、路面点抽出部27およびZ軸回転量算出部28として機能する。この各部21〜28は、RAMの所要のワークエリアを、データの一時的な格納場所として利用する。なお、これらの機能実現部は、CPUを用いることなく回路などのハードウエアロジックによって構成してもよい。
【0021】
ここで、本実施形態で用いるカメラ座標系について簡単に説明する。
【0022】
図2は、第1実施形態に係るカメラ座標系とカメラ投影面31上の画面座標系との関係を示す説明図である。なお、本実施形態では、カメラ座標系を(X、Y、Z)、画面座標系を(x、y)(または(x、y、z))と表記するものとする。また、カメラ座標系(X、Y、Z)は、カメラ11の中心を原点とする直交座標系であるものとする。
【0023】
本実施形態においては、カメラ座標系のZ軸が路面と一致し、X軸が車両の左右方向と一致し、Y軸が車両の上下方向と一致するよう定義される。また、画面座標系の原点(0、0)(または(0、0、f))は、光軸とカメラ投影面31との交点とする。ここで、路面は車両の前後方向(直進方向)および車両の左右方向に平行な面であるものとする。
【0024】
本実施形態においては、カメラ11が、光軸と路面(Z軸)とが平行となるようにカメラ11により撮像された画像を回転補正する。
【0025】
カメラ投影面31は、カメラ座標系においてZ=fの面である。fはカメラ11の焦点距離である。カメラ11は、このカメラ投影面31に投影される車両周囲を撮像する。ここで、ある点Pのカメラ座標系の3次元座標がP(X、Y、Z)であるとき、この点Pのカメラ投影面31に投影された点pの座標をp(x、y、f)と表すものとする。
【0026】
カメラ11は、車両の移動にともない路面に平行に移動する。このため、カメラ座標系の原点および画面座標系の原点は、車両の移動にともない路面に平行に移動する。
【0027】
一方、カメラ11が直進運動する場合、カメラ投影面31上における静止被写体の点(x、y)に対応する動きベクトル(u、v)の延長線交点から消失点(FOE:Focus of Expansion)の座標を求めることができることが知られている。
【0028】
カメラ11の進行方向は、カメラ座標系の原点(0、0、0)とカメラ投影面31上の消失点とを結ぶ線で表せる。したがって、本実施形態において、カメラ11が理想的な取り付け角度で取り付けられているとき、すなわち光軸方向がZ軸方向に一致しているとき、消失点の座標は原点(目標消失点FOE
1(0、0))に一致する。
【0029】
ところが、カメラ11の路面に対する取り付け角度が理想的な取り付け角度からずれてしまっている場合には、カメラ投影面31上における静止被写体の点(x、y)に対応する動きベクトル(u、v)の延長線交点から求められる消失点の座標(以下、現在の消失点FOE
0(x0、y0)という)が、目標FOE
1からずれてしまう。カメラ11の路面に対する取り付け角度が理想的な取り付け角度からずれてしまう原因としては、たとえば車両に乗車する人や積載物などによる車両の傾きや、経年変化などが挙げられる。
【0030】
そこで、本実施形態に係る車載カメラ自動キャリブレーション装置10は、カメラ11により取得された画像にもとづいて走行中に路面に対するカメラ11の取り付け角度の情報を取得し、この情報にもとづいて画像を回転補正する。
【0031】
具体的には、座標回転補正部21は、XY軸回転量算出部25により求められたX軸周りの回転量θxおよびY軸周りの回転量θyにもとづいて、カメラ11の撮像画像をX軸周りおよびY軸周りにそれぞれ回転補正する。また、座標回転補正部21は、Z軸回転量算出部28により求められたZ軸周りの回転量θzにもとづいて、カメラ11の撮像画像をZ軸周りに回転補正する。
【0032】
まず、X軸周りの回転量θxおよびY軸周りの回転量θyの取得方法について説明する。X軸周りの回転量θxおよびY軸周りの回転量θyは、現在の消失点FOE
0を目標消失点FOE
1に変換するための回転量として求めることができる。
【0033】
動きベクトル算出部22は、ブロックマッチング法や勾配法などを用いて、カメラ11により撮像された複数の画像から画素ごとに動きベクトル(u、v)を算出する。以下の説明では、動きベクトル算出部22が現在の画像と現在の画像の1フレーム前の画像との間の動きベクトル(u、v)を算出し、この動きベクトルにもとづいて現在の画像の消失点FOE
0の座標(x0、y0)を求める場合の例について示す。
【0034】
カメラ11が直進運動する(車両が前進または後進する)場合、カメラ投影面31上における静止被写体の点(x、y)に対応する動きベクトル(u、v)と現在の消失点FOE
0(x0、y0)との間には次の関係がある。
u/v = (x-x0)/(y-y0) (1)
【0035】
このため、2点以上の(x、y)で動きベクトル(u、v)が得られれば、現在の消失点FOE
0(x0、y0)が求められる。いま、画像点(xi、yi)(i=1、2、・・・、N、Nは自然数)に対応する動きベクトル(ui、vi)が観測されたとすると、次のN個の方程式が得られる。
x0vi‐y0ui = xivi-uiyi ただしi=1,・・・,N (2)
【0036】
そこで、FOE算出部23は、動きベクトル算出部22から複数の動きベクトルを取得し、式(2)における未知数をx0、y0として最小2乗の意味で最適解x0、y0を求めることにより、現在の消失点FOE
0(x0、y0)を求める。
【0037】
ここで、直進判定部24による直進判定方法の一例について説明する。
【0038】
対象点P(X、Y、Z)のカメラ投影面31上の対応点p(x、y、f)に対応する動きベクトル(u、v)は、次のように書けることが知られている。
u = xy(1/f)R
x−(x
2+f
2)(1/f)R
y+yR
z−f(T
x/z)+x(T
z/z) (3)
v = (y
2+f
2)(1/f) R
x−xy(1/f)R
y−xR
z−f(T
y/z)+y(T
z/z) (4)
【0039】
ここで、zは対象点PのZ座標値をあらわす。また、Rx、Ry、Rz、Tx、Ty、Tzはカメラ移動パラメータであり、Rx、Ry、Rzはカメラ11(自車)の回転成分をあらわし、Tx、Ty、Tzはカメラ11(自車)と対象点Pとの相対並進成分をあらわす。
【0040】
直進時は、Rx=Ry=Rz=0となる。また、式(3)の式(4)に対する比は、点p(x、y)からFOE(x0、y0)に向かう傾きと等しくなることが知られている。このため、次の式(5)が導かれる。
u/v = {-f(T
x/z)+x(T
z/z)}/{ -f(T
y/z)+y(T
z/z)} = (x-x0)/(y-y0) (5)
【0041】
いま、カメラ11の原点はZ軸と平行に移動するため、Tx=Ty=0となる。このとき、次の式(6)が導かれる。
u/v = x/y (6)
【0042】
式(5)から明らかなように、直進時には、動きベクトルの傾きu/vは、対象点P(X、Y、Z)のカメラ投影面31上の点p(x、y)から現在のFOE
0に向かう傾きに等しい。また、式(6)から明らかなように、カメラ11が理想的な取り付け角度で取り付けられていれば、またはカメラ11の撮像画像が座標回転補正部21により現在の消失点FOE
0を目標消失点FOE
1に変換するよう回転補正されていれば、現在の消失点FOE
0は目標消失点FOE
1に一致している。この場合は、直進時には、動きベクトルの傾きu/vは、対象点P(X、Y、Z)のカメラ投影面31上の点p(x、y)から原点(目標FOE
1)に向かう傾きに等しい。
【0043】
このため、直進判定部24は、カメラ投影面31上の点p(x、y)から現在の消失点FOE
0に向かう傾きと、点p(x、y)に対応する動きベクトル(u、v)の傾きと、を比較し、傾きの差が所定の差以内であれば自車が直進中であると判定する。
【0044】
FOE算出部23は、直進判定部24により自車が直進中であると判定された場合に、動きベクトル算出部22から受けた動きベクトルを用いて現在の消失点FOE
0(x0、y0)を求めるとよい。
【0045】
XY軸回転量算出部25は、記憶部13から目標FOE
1の座標(0、0)の情報を取得し、現在の消失点FOE
0を目標消失点FOE
1に変換するために必要なX軸周りの回転量θxおよびY軸周りの回転量θyを求める。
【0046】
図3(a)は現在の消失点FOE
0を第1実施形態に係る目標消失点FOE
1に変換するためのY軸周りの回転量θyについて説明するための図であり、(b)は現在の消失点FOE
0を第1実施形態に係る目標消失点FOE
1に変換するためのX軸周りの回転量θxについて説明するための図である。
図3(a)は
図2におけるXZ平面を、(b)は
図2におけるYZ平面を、それぞれ示した。
【0047】
カメラ11の進行方向(車両の進行方向)は、カメラ座標系の原点(0、0、0)とカメラ投影面31上の現在の消失点FOE
0とを結ぶ線で表せる。この線とZ軸との傾きは、X軸周りの回転量θxとY軸周りの回転量θyとを用いて表すことができる。
図3(a)および(b)から明らかなように、X軸周りの回転量θxおよびY軸周りの回転量θyは、現在のFOE0の座標(x0、y0)と次の関係にある。
tanθx = y0/f (7)
tanθy = x0/f (8)
【0048】
そこで、XY軸回転量算出部25は、現在の消失点FOE
0の座標(x0、y0)にもとづいて式(7)および式(8)からX軸周りの回転量θxおよびY軸周りの回転量θyを求め、座標回転補正部21に与える。
【0049】
そして、座標回転補正部21は、XY軸回転量算出部25により求められたX軸周りの回転量θxおよびY軸周りの回転量θyにもとづいて、θx=θy=0となるように、カメラ11の撮像画像をX軸周りおよびY軸周りにそれぞれ回転補正する。この結果、現在の消失点FOE
0は目標消失点FOE
1(0、0)に一致し、カメラ11の光軸はZ軸に一致し、Z軸は路面と平行となる。
【0050】
続いて、Z軸周りの回転量θzの取得方法について説明する。Z軸周りの回転量θzは、路面とX軸とを平行にするためのZ軸周りの回転量として求めることができる。
【0051】
図4は、路面とX軸とを平行にするためのZ軸周りの回転量θzについて説明するための図である。以下の説明では、現在の消失点FOE
0が目標消失点FOE
1(0、0)に一致し、カメラ11の光軸がZ軸に一致し、Z軸が路面と平行であるものとする。
【0052】
ある点Pのカメラ座標系の3次元座標P(X、Y、Z)と、点Pのカメラ投影面31に投影された点pの画面座標系の座標p(x、y、f)との関係は、Z=zとすると次のように書ける。
X = zx/f (9)
Y = zy/f (10)
Z = z (11)
【0053】
いま、路面上の点Pj(Xj、Yj、Zj)について考える。
図4に示すように、Z=Zj平面において路面とX軸とがZ軸周りになす角をθzとし、カメラ座標系の原点と路面とのY軸に沿った距離をHとすると、路面上の点Pj(Xj、Yj、Zj)について次の式(12)が成り立つ(
図4参照)。
Yj = H-Xjtanθz (12)
【0054】
同様に、路面上の点Pk(Xk、Yk、Zk)についても次式(13)が成り立つ。
Yk = H-Xktanθz (13)
式(12)、(13)より次式(14)が導ける。
H = Yj+Xjtanθz= Yk+Xktanθz
tanθz = −(Yk-Yj)/(Xk-Xj) (14)
【0055】
式(14)は、式(9)−(11)を用いて次のように変形できる。
tanθz = −(ykzk-yjzj/(xkzk-xjzj)
= −(yk-yjzj/zk)/(xk-xjzj/zk) (15)
【0056】
ここで、式(3)および式(4)に対してTx=Ty=0、Rx=Ry=Rz=0を代入することにより、それぞれ次の式(16)および式(17)が得られる。
u = x(Tz/z) (16)
v = y(Tz/z) (17)
【0057】
式(16)および式(17)をまとめて次式(18)を得る。
Tz/z = (ux+vy)/(x
2+y
2) (18)
【0058】
この式(18)にもとづいて、路面上の点Pjのカメラ投影面31上の点pj(xj、yj)の動きベクトル(uj、vj)から、点Pjの距離規格化並進成分(Tz/z)jが求められる。なお、点Pjの距離規格化並進成分Tz/zjを(Tz/z)jと表すものとする。同様に、路面上の点Pkについての(Tz/z)kも求めることができる。
【0059】
一方、(Tz/z)jおよび(Tz/z)kは、同一のTzを用いていることから、次式(19)の関係を満たす。
zj/zk = (Tz/z)k /(Tz/z)j (19)
【0060】
この式(19)を用いて、式(15)は次のように変形できる。
tanθz = −{yk (Tz/z)j - yj (Tz/z)k}/{xk (Tz/z)j - xj (Tz/z)k} (20)
【0061】
式(18)を式(20)に代入して変形することにより、次式(21)を得る。
{xk(ujxj + vjyj) (xk
2 + yk
2) - xj(ukxk + vkyk)(xj
2 + yj
2)} tanθz
= −{yk(ujxj + vjyj)(xk
2 + yk
2) - yj (ukxk + vkyk)(xj
2 + yj
2)} (21)
【0062】
いま、路面上の2点PjとPkの組み合わせを示す指数をm=m(j,k)と表すものとする。たとえば路面上の点としてN個の点が得られた場合、これらの路面上の点から抽出される2点PjとPkの組み合わせの数MはM=
2C
N=N(N−1)/2通りある。この場合、指数mはm=1、2、・・・、Mと定義される。
【0063】
ここで、式(21)の左辺をa
mtanθz、右辺をb
mと置くと、式(21)は次のように変形できる。
a
mtanθz = b
m (22)
a
m = {xk(uj xj + vj yj) (xk
2 + yk
2) - xj(uk xk + vk yk)(xj
2 + yj
2)} (23)
b
m = −{yk(uj xj +vj yj)(xk
2 + yk
2) - yj(uk xk + vk yk)(xj
2 + yj
2)} (24)
【0064】
式(22)から、tanθzの最小2乗解は次式(25)で与えられる。
tanθz = (Σa
mb
m)/(Σa
m2 ) (ただしm = 1、2、・・・M) (25)
【0065】
この式(25)は、路面上の2点Pj、Pkに対応するカメラ投影面31上の点pj、pkの座標pj(xj、yj)、pk(xk、yk)と、この2点pj、pkに対応する動きベクトル(uj、vj)、(uk、vk)と、路面とX軸とがZ軸周りになす角θzと、を関係付ける式である。
【0066】
したがって、式(21)から明らかなように、路面上の2点Pj、Pkの画面座標とこの2点に対応する動きベクトルとにもとづいて、tanθzを求めることができる。また、同一の撮像画像内から路面上の3点以上の複数点を抽出し、2点の組み合わせを複数M個得る場合は、式(25)を用いることで、より精度の高いtanθzを求めることができる。
【0067】
このように、Z軸周りの回転量θzを求める際には、カメラ投影面31上の路面上の点を用いる。
【0068】
そこでまず、路面判定部26は、カメラ11の撮像画面内の路面領域を判定する。路面領域の判定方法としては、たとえば動きベクトルが消失点FOE
0に収束するとともに、アスファルト主体のコントラストを持つと判定される領域を路面領域と判定する方法などがある。路面領域内の点(路面上の点)は静止物体(路面)に係る点であるため、対応する動きベクトルは消失点FOE
0(現在の消失点FOE
0が目標消失点FOE
1に一致していればFOE
1)に収束する。
【0069】
なお、路面領域判定の対象とする撮像画像は、動きベクトル算出部22により用いられた複数の画像のうちの所定の画像とする。たとえば動きベクトル算出部22が現在の画像と過去の画像(たとえば現在の画像の1フレーム前の画像)との間の動きベクトルを算出する場合は、現在の画像を対象とするとよい。以下、路面領域判定の対象とする撮像画像が現在の画像である場合の例について説明する。
【0070】
路面点抽出部27は、現在の画像のうち、路面判定部26により路面領域と判定された画像領域内の点から、3点以上の複数点を抽出する。
【0071】
このとき、路面点抽出部27は、式(25)等の演算誤差を低減するために、所定の条件を満たす点のみを抽出するようにするとよい。
【0072】
所定の条件としては、たとえば路面上の点Pjに対応する画像領域内の点pjのうち、FOE
0(x0、y0)から(現在の消失点FOE
0が目標消失点FOE
1に一致していればFOE
1から)所定の距離(FOE距離閾値)th1以上離れている点であるという条件が考えられる。この条件は次の式(26a)または(26b)で表せる。
FOE距離閾値th1≦√{(xj−x0)
2 + (yj−y0)
2 } (26a)
FOE距離閾値th1≦|x−x0|+|y−y0| (26b)
【0073】
消失点に近い領域に属する点に対応する動きベクトルは、絶対値が小さいため、検出誤差率が高くなりやすい。式(26a)または(26b)で表される条件を満たす点pjを抽出することにより、この誤差による弊害を未然に防ぐことができる。
【0074】
また、所定の条件としては、他にも、抽出された2点pj、pkの互いの距離が所定の2点間距離閾値th2以上離れている組み合わせのみを式(25)の演算に用いる組み合わせとする条件が考えられる。この条件はたとえば次の式(27)で表せる。
2点間距離閾値th2≦|xk - xj| (27)
【0075】
通常、(Tz/z)jと(Tz/z)kの差は微量であるため、誤差の観点からは|xk−xj|の大きな2点pj、pkの組み合わせを用いることが望ましい。
【0076】
そして、Z軸回転量算出部28は、式(25)を用いて、路面点抽出部27により抽出された複数の2点の組み合わせと、各組み合わせの2点に対応する動きベクトルと、にもとづいて、tanθzの最小2乗解を求める。θzは微小値であるため、tanθz≒θzとして扱うことができる。したがって、Z軸回転量算出部28は、tanθzの最小2乗解を、路面とX軸とを平行にするためのZ軸周りの回転量θzとして座標回転補正部21に与える。
【0077】
また、Z軸回転量算出部28は、カメラ11の撮像画像ごとにZ軸周りの回転量θzを求めてRAMの所要のワークエリアに格納しておき、この撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均してZ軸周りの平均回転量θz_aveを求めてもよい。この場合、Z軸回転量算出部28は、Z軸周りの平均回転量θz_aveを座標回転補正部21に与える。θz_aveを用いる場合、1枚のフレームにもとづくθzが内包しうる自車の振動などによる誤差を低減することができるため、θzよりも信頼性の高い補正を行うことができる。
【0078】
そして、座標回転補正部21は、Z軸回転量算出部28により求められたZ軸周りの回転量θzまたはZ軸周りの平均回転量θz_aveにもとづいて、θz_ave=0となるように、カメラ11の撮像画像をZ軸周りに回転補正する。この結果、路面とX軸とは平行となる。
【0079】
次に、本実施形態に係る車載カメラ自動キャリブレーション装置10の動作の一例について説明する。
【0080】
図5は、
図1に示す自動校正ECU12により、カメラ11により取得された画像にもとづいて走行中に路面に対するカメラ11の取り付け角度の情報を取得し、この情報にもとづいて画像を回転補正する際の手順を示すフローチャートである。
図5において、Sに数字を付した符号は、フローチャートの各ステップを示す。
【0081】
まず、ステップS1において、動きベクトル算出部22は、カメラ11の撮像画像の画像データを取得する。ステップS8からステップS1に戻ってきた場合は、動きベクトル算出部22は、座標回転補正部21によりステップS5でX軸周りおよびY軸周りにそれぞれ回転補正されるとともにステップS7でZ軸周りに回転補正されたカメラ11の撮像画像の画像データを取得する。
【0082】
次に、ステップS2において、動きベクトル算出部22は、取得した画像データにもとづき、複数の画像間の動きベクトル(u、v)を画素ごとに求める。
【0083】
次に、ステップS3において、直進判定部24は、動きベクトルにもとづいて自車が直進中であるか否かを判定する。直進中である場合はステップS4に進む。一方、直進中でない場合はステップS1に戻る。
【0084】
次に、ステップS4において、自動校正ECU12は、現在の消失点FOE
0を目標消失点FOE
1に変換するために必要なX軸周りの回転量θxおよびY軸周りの回転量θyを求める。
【0085】
次に、ステップS5において、座標回転補正部21は、XY軸回転量算出部25により求められたX軸周りの回転量θxおよびY軸周りの回転量θyにもとづいて、θx=θy=0となるように、カメラ11の撮像画像をX軸周りおよびY軸周りにそれぞれ回転補正する。この結果、現在の消失点FOE
0は目標消失点FOE
1(0、0)に一致し、カメラ11の光軸はZ軸に一致し、Z軸は路面と平行となる。
【0086】
次に、ステップS6において、自動校正ECU12は、路面上の複数点から得られる複数の2点の組み合わせと、各組み合わせの2点に対応する動きベクトルと、にもとづいて、路面とX軸とを平行にするためのZ軸周りの回転量θz、または撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均したZ軸周りの平均回転量θz_aveを求める。
【0087】
次に、ステップS7において、座標回転補正部21は、Z軸回転量算出部28により求められたZ軸周りの回転量θzまたはZ軸周りの平均回転量θz_aveにもとづいて、θz(またはθz_ave)=0となるようにカメラ11の撮像画像をZ軸周りに回転補正する。この結果、路面とX軸とは平行となる。
【0088】
次に、ステップS8において、自動校正ECU12は、画像の回転補正を終了するか否かを判定する。たとえば自動校正ECU12は、車両が停止した場合やステップS1−S7を所定回数繰り返した場合などに終了すると判定するとよい。終了すると判定された場合は一連の手順は終了となる。一方、終了しない場合はステップS1に戻る。
【0089】
以上の手順により、カメラ11により取得された画像にもとづいて走行中に路面に対するカメラ11の取り付け角度の情報を取得し、この情報にもとづいて画像を回転補正することができる。
【0090】
続いて、現在の消失点FOE
0を目標消失点FOE
1に変換するために必要なX軸周りの回転量θxおよびY軸周りの回転量θyを求める際の手順を説明する。
【0091】
図6は、
図5のステップS4で実行されるθxθy算出処理の手順を示すサブルーチンフローチャートである。
【0092】
ステップS41において、FOE算出部23は、動きベクトル算出部22から2点以上の画像点の動きベクトルを取得する。
【0093】
次に、ステップS42において、FOE算出部23は、取得した2点以上の画像点の動きベクトルにもとづいて、式(2)を用いて現在の消失点FOE
0(x0、y0)を求める。
【0094】
次に、ステップS43において、XY軸回転量算出部25は、記憶部13から目標FOE
1の座標(0、0)の情報を取得する。そして、現在の消失点FOE
0(x0、y0)にもとづいて式(7)および式(8)からX軸周りの回転量θxおよびY軸周りの回転量θyを求め、座標回転補正部21に与える。
【0095】
以上の手順により、現在の消失点FOE
0を目標消失点FOE
1に変換するために必要なX軸周りの回転量θxおよびY軸周りの回転量θyを求めることができる。
【0096】
続いて、路面上の複数点から得られる複数の2点の組み合わせと、各組み合わせの2点に対応する動きベクトルと、にもとづいて、撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均したZ軸周りの平均回転量θz_aveを求める際の手順を説明する。
【0097】
図7は、
図5のステップS6で実行されるθz算出処理の第1実施形態に係る手順を示すサブルーチンフローチャートである。
図7には、撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均したZ軸周りの平均回転量θz_aveを求める場合の手順について示した。1枚の撮像画像に対応するZ軸周りの回転量θzを求める場合は、ステップS69を省略するとよい。
【0098】
ステップS61において、路面判定部26は、カメラ11の撮像画面内の路面領域を判定する。
【0099】
次に、ステップS62において、路面点抽出部27は、式(26a)または(26b)を用いて、路面上の点に対応する画像領域内の点のうち、現在の消失点FOE
0(x0、y0)から(現在の消失点FOE
0が目標消失点FOE
1に一致していればFOE
1から)FOE距離閾値th1以上離れている点を複数抽出する。
【0100】
次に、ステップS63において、路面点抽出部27は、指数mを1にセットしRAMの所要のワークエリアに格納する。この指数mは2点の組み合わせの数を示す指数である。
【0101】
次に、ステップS64において、路面点抽出部27は、式(27)を用いて、ステップS62で抽出された複数の路面点から得られる2点の組み合わせの1つについて、互いの距離が2点間距離閾値th2以上離れているか否かを判定する。この組み合わせが2点間距離閾値th2以上離れている場合はステップS65に進む。一方、2点間距離閾値th2より近い場合は、この組み合わせを破棄し、他の組み合わせについて再度この判定を行う。
【0102】
次に、ステップS65において、路面点抽出部27は、ステップS64で2点間距離閾値th2以上離れていると判定された2点の情報と、現在の指数mの値とを関連付けてRAMの所要のワークエリアに格納する。
【0103】
次に、ステップS66において、路面点抽出部27は、指数mがあらかじめ設定された所定の数M以上か否かを判定する。指数mが所定の数M以上である場合は、ステップS68に進む。一方、指数mが所定の数Mより少ない場合は、ステップS67で指数mを1増加させて再び他の組み合わせについて2点間距離閾値th2以上離れているか否かを判定すべくステップS64に戻る。
【0104】
次に、ステップS68において、Z軸回転量算出部28は、2点の路面点Pj,Pkの組み合わせをM個用いて、式(25)(FOE
1用のtanθz算出式)にもとづいて、路面をX軸と平行にするための回転量θzを算出してRAMの所要のワークエリアに格納する。
【0105】
次に、ステップS69において、Z軸回転量算出部28は、撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均してZ軸周りの平均回転量θz_aveを求め、座標回転補正部21に与える。
【0106】
以上の手順により、路面上の複数点から得られる複数の2点の組み合わせと、各組み合わせの2点に対応する動きベクトルと、にもとづいて、撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均したZ軸周りの平均回転量θz_aveを求めることができる。
【0107】
なお、
図7にはあらかじめ定めた数Mだけ2点の組を抽出する場合の例について示したが、抽出可能な2点の組を全て抽出し、抽出された数をMとしてステップS68で式(25)を用いてもよい。
【0108】
本実施形態に係る車載カメラ自動キャリブレーション装置10は、カメラ11により取得された画像にもとづいて、走行中に、路面に対するカメラ11の取り付け角度の情報(θx、θy、θz_ave(またはθz))を取得し、この情報にもとづいて画像を回転補正することができる。したがって、車載カメラ自動キャリブレーション装置10によれば、自車の走行中にカメラ11の取り付け角度を自動的に校正することができる。
【0109】
このため、たとえば、カメラ11が車両の後方を監視するための撮像装置である場合には、この後方監視用のカメラ11が利用されることが少ない前方直進時に上記回転補正を行っておくことにより、ユーザに対してストレスを感じさせることなく自動的にカメラ11の校正を行うことができる。
【0110】
また、θx、θyおよびθzは、自車が路面走行中であって直進時に、すなわちキャリブレーションに適した画像が得られるときに、フレームごとに算出される。また、1枚のフレームにもとづいて算出されるθzをフレーム間平均することによって、より信頼性の高いθz_aveを算出することができる。
【0111】
また、本実施形態に係る車載カメラ自動キャリブレーション装置10は、複数の路面点から2点を抽出する際に、単に路面点の抽出順などによって路面点数の半分の2点の組みを得るのではなく、複数の路面点から2点を抽出する組み合わせの数だけ2点の組を得ることができる。このため、得られた動きベクトルの数よりも多く、つまり動きベクトルの数の組み合わせの数だけ、式(22)であらわされる関数のプロットを得ることができるため、式(25)により得られるθzをより正確な値とすることができる。また、θzの算出に用いられる路面上の点を抽出する際に、FOE距離閾値th1や2点間距離閾値th2を適用することにより、θzを算出する際に生じる誤差を未然に低減することができる。
【0112】
(第2の実施形態)
次に、本発明に係る車載カメラ自動キャリブレーション装置の第2実施形態について説明する。
【0113】
図8は、本発明の第2実施形態に係る車載カメラ自動キャリブレーション装置10Aの一例を示す全体構成図である。
【0114】
この第2実施形態に示す車載カメラ自動キャリブレーション装置10Aは、カメラ11の光軸が路面平行線からθ0だけ傾いた位置を校正目標位置とする点で第1実施形態に示す車載カメラ自動キャリブレーション装置10と異なる。他の構成および作用については
図1に示す車載カメラ自動キャリブレーション装置10Aと実質的に異ならないため、同じ構成には同一符号を付して説明を省略する。
【0115】
角度θ0としては、カメラ11の撮像画像のうち上側0.1〜0.4割程度が空となる角度を採用するとよい。たとえば上側1/3程度が空となるようにする場合、地平線が上側1/3程度に位置し、そこから下に路面が写りこむことになる。
【0116】
記憶部13Aは、本実施形態に係る目標消失点の座標の情報である目標FOE
2(x2、y2)、FOE距離閾値th1、2点間距離閾値th2およびルックアップテーブルなどを記憶する。これらの情報は、電子ネットワークを介してまたは光ディスクなどの可搬型記憶媒体を介して更新されてもよい。
【0117】
第2実施形態に係る目標FOE
2(x2、y2)は、カメラ11の光軸が路面平行線からθ0だけ傾くよう、(0、y2)に設定される(目標FOE
2=(0、y2))。この目標FOE
2は、自動校正ECU12AによりXY軸周りの回転補正に用いられる。
【0118】
図9は、第2実施形態に係るカメラ座標系とカメラ投影面31上の画面座標系との関係を示す説明図である。なお、第2実施形態に係るカメラ座標系を(X’、Y’、Z’)、画面座標系は(x’、y’(、z’))と表記するものとする。また、(X、Y、Z)は第1実施形態に係るカメラ座標系と同一である。また、第1実施形態に係るカメラ座標系と特に区別する必要がない場合は、本実施形態に係るカメラ座標系を便宜上(X、Y、Z)と表記する。
【0119】
第2実施形態に係るカメラ座標系は、
図9に示すように、第1実施形態に係るカメラ座標系と原点が共通でX軸周りにθ0だけ回転した座標系であり、カメラ座標系のZ’軸およびY’軸が第1実施形態に係るカメラ座標系のZ軸およびY軸に対してそれぞれθ0だけ傾くよう定義される。また、カメラ座標系のX’軸は、第1実施形態に係るカメラ座標系のX軸(車両の左右方向)と一致する。また、画面座標系の原点(0、0)(または(0、0、f))は、カメラ座標系のZ’軸とカメラ投影面31との交点とする。
【0120】
第2実施形態においては、カメラ11の光軸が路面平行線からθ0だけ傾くように、カメラ11により撮像された画像を回転補正する。
【0121】
上述の通り、カメラ11の進行方向は、カメラ座標系の原点(X’、Y’、Z’)=(0、0、0)とカメラ投影面31上の消失点とを結ぶ線で表せる。このため、本実施形態において、カメラ11が理想的な取り付け角度で取り付けられているとき、すなわち光軸方向がZ’軸方向に一致しているとき、消失点の座標は目標消失点FOE
2(0、y2)に一致する。
【0122】
そこで、XY軸回転量算出部25は、第1実施形態と同様に、現在の消失点FOE
0の座標(x0、y0)にもとづいて式(7)および式(8)からX’軸周りの回転量θx’(以下、便宜上X軸周りの回転量θxという)およびY’軸周りの回転量θy’(以下、便宜上Y軸周りの回転量θyという)を求め、座標回転補正部21Aに与える。
【0123】
そして、本実施形態に係る自動校正ECU12Aの座標回転補正部21Aは、XY軸回転量算出部25により求められたX軸周りの回転量θxおよびY軸周りの回転量θyにもとづいて、θx=θ0(=tan
−1(y2/f))、θy=0となるように、カメラ11の撮像画像をX’軸周りおよびY’軸周りにそれぞれ回転補正する。この結果、現在の消失点FOE
0は目標消失点FOE
2(0、y2)に一致し、カメラ11の光軸(Z’軸)は路面平行線に対して角度θ0だけ傾く。
【0124】
続いて、第2実施形態に係るZ’軸周りの回転量θz’(以下、煩雑さを避けるため「’」を省略してZ軸周りの回転量θzという)の取得方法について説明する。Z軸周りの回転量θzは、路面とX’軸(=X軸)とを平行にするためのZ’軸周りの回転量として求めることができる。
【0125】
図10は、第1実施形態に係るカメラ座標系と第2実施形態に係るカメラ座標系との関係を示す説明図である。
図10は、
図9におけるYZ(Y’Z’)平面に相当する。
【0126】
まず、本実施形態に係るカメラ座標系(X’、Y’、Z’)を、第1実施形態に係るカメラ座標系(X、Y、Z)に変換する。
X = X’ (28)
Y = Y’cosθ0 + Z’sinθ0 (29)
Z = −Y’sinθ0 + Z’cosθ0 (30)
【0127】
本実施形態に係るカメラ座標系(X’、Y’、Z’)と画面座標系(x’、y’、z’)の間には、式(9)−(11)と同一の関係が成り立つ。このため、式(14)は、式(28)−(30)を代入して式(9)−(11)を用いることにより、次の式(31)のように変形できる。
tanθz= −(Yk-Yj)/(Xk-Xj)
= −(Yk'cosθ0+Zk'sinθ0−Yj'cosθ0−Zj'sinθ0)/(Xk'-Xj')
= −(yk'zk'cosθ0+zk'fsinθ0−yj'zj'cosθ0−zj'fsinθ0)/(xk'zk'-xj'zj')
= −{(yk'cosθ0+fsinθ0)zk'−(yj'cosθ0+fsinθ0)zj'}/(xk'zk'-xj'zj')
= −{yk'cosθ0+fsinθ0−(zj'/zk')(yj'cosθ0+fsinθ0)}
/{xk'−(zj'/zk')xj'} (31)
【0128】
式(31)に式(19)を代入し、tanθ0=y2/fを用いて(ただし、y2は目標消失点FOE
2のy座標)、次式(32)を得る。
tanθz= −[yk'cosθ0+fsinθ0−{(Tz/z)k'/(Tz/z)j'}(yj'cosθ0+fsinθ0)]
/[xk'−{(Tz/z)k'/(Tz/z)j'}xj']
= −[(Tz/z)j'(yk'cosθ0+fsinθ0)−(Tz/z)k'(yj'cosθ0+fsinθ0)]
/[(Tz/z)j'xk'−(Tz/z)k'xj']
= −{f/√(f
2+y2
2)}[(Tz/z)j'(yk'+y2)−(Tz/z)k'(yj'+y2)]
/{(Tz/z)j'xk’−(Tz/z)k'xj'} (32)
【0129】
式(32)に式(18)を代入することにより次式(33)を得る。なお、以下の説明では煩雑さを避けるため表記「’」を省略する。
{xk(ujxj+vjyj)(xk
2+yk
2)−xj(ukxk+vkyk)(xj
2+yj
2)}tanθz
=−{f/√(f
2+y2
2)}[(yk+y2)(ujxj+vjyj)(xk
2+yk
2)−(yj+y2)(ukxk+vkyk)(xj
2+yj
2)]
(33)
【0130】
この式(33)は、式(21)に相当する。路面上の2点PjとPkの組み合わせを示す指数をm=m(j,k)と表すとき、式(21)と同様に、式(33)の左辺をa
mtanθz、右辺をb
mと置くと式(33)は次のように変形できる。
a
mtanθz = b
m (34)
a
m = {xk(uj xj + vj yj) (xk
2 + yk
2) - xj(uk xk + vk yk)(xj
2 + yj
2)} (35)
b
m = −{f/√(f
2+y2
2)}[(yk+y2)(ujxj+vjyj)(xk
2+yk
2)
−(yj+y2)(ukxk+vkyk)(xj
2+yj
2)] (36)
【0131】
式(34)から、tanθzの最小2乗解は次式(37)で与えられる。
tanθz = (Σa
mb
m)/(Σa
m2 ) (ただしm = 1、2、・・・M) (37)
【0132】
したがって、第1実施形態と同様に、Z軸回転量算出部28Aは、フレーム内の複数M個の2点pj、pkの組み合わせにもとづいて、式(37)からtanθzを求めることができる。
【0133】
図11は、
図5のステップS6で実行されるθz算出処理の第2実施形態に係る手順を示すサブルーチンフローチャートである。
図7と同等のステップには同一符号を付し、重複する説明を省略する。
【0134】
ステップS81において、路面点抽出部27Aは、式(26a)または(26b)を用いて、路面上の点に対応する画像領域内の点のうち、現在の消失点FOE
0(x0、y0)から(現在の消失点FOE
0が目標消失点FOE
2に一致していればFOE
2から)FOE距離閾値th1以上離れている点を複数抽出する。
【0135】
ステップS82において、Z軸回転量算出部28Aは、2点の路面点Pj,Pkの組み合わせをM個用いて、式(34)(FOE
2用のtanθz算出式)にもとづいて、路面をX軸と平行にするための回転量θzを算出してRAMの所要のワークエリアに格納する。そして、ステップS69において、Z軸回転量算出部28Aは、撮像画像ごとに求めた所定数のZ軸周りの回転量θzを平均してZ軸周りの平均回転量θz_aveを求め、座標回転補正部21Aに与える。
【0136】
第2実施形態に係る車載カメラ自動キャリブレーション装置10Aによっても、カメラ11により取得された画像にもとづいて、走行中に、路面に対するカメラ11の取り付け角度の情報(θx、θy、θz_ave(またはθz))を取得することができるため、自車の走行中にカメラ11の取り付け角度を自動的に校正することができる。
【0137】
また、本実施形態に係る車載カメラ自動キャリブレーション装置10Aによれば、カメラ11の光軸が路面平行線からθ0だけ傾いた位置を校正目標位置とすることができるため、カメラ11の撮像画像中の地平線位置をθ0に応じた任意の位置に設定することができる。
【0138】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0139】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。