(第1の実施形態)
以下、本発明の第1の実施形態について図面を参照して説明する。図1は、本実施形態における車載画像認識システムの構成を示した概略図である。図示する例では、車載画像認識システムは、前方画像撮影用カメラ10と、画像処理制御ユニット20とを備える。
前方画像撮影用カメラ10は、車両の前方に設置されており、車両の前方領域11の画像を撮影する。本実施形態では、前方画像撮影用カメラ10は、1秒間に30フレームの画像を撮影する。すなわち、前方画像撮影用カメラ10は、約33ms周期で1枚の画像を撮影する。画像処理制御ユニット20は、前方画像撮影用カメラ10が撮影した画像の処理を行い、物体の認識処理を行う。
次に、車載画像認識システム1の機能構成について説明する。図2は、本実施形態における車載画像認識システム1の機能構成を示した機能ブロック図である。図示する例では、車載画像認識システム1は、前方画像撮影用カメラ10と画像処理制御ユニット20とを備えている。また、画像処理制御ユニット20は、前処理用FPGA(Field Programmable Gate Array、エフピージーエー)21(補正部)と、VRAM(Video Random Access Memory、ブイラム)22と、CPU(Central Processing Unit、中央演算処理装置)23(認識部)とを備えている。
前処理用FPGA21は、前方画像撮影用カメラ10が撮影した画像と、前方画像撮影用カメラ10が画像を撮影した際の露光条件を示す情報の入力を受け付ける。また、前処理用FPGA21は、入力を受け付けた画像と露光条件とを関連付けてVRAM22に記憶させる。また、前処理用FPGA21は、新たに入力を受け付けた画像の露光条件に合わせて、VRAM22に記憶させた画像の補正を行い、補正後の画像を再度VRAMに記憶させる。なお、前処理用FPGA21の動作の詳細については後述する。
VRAM22は、前処理用FPGA21から入力される画像を記憶する。CPU23は、画像処理制御ユニット20が備える各部の制御を行う。また、CPU23は、VRAM22が記憶する画像を読み出し、複数の画像の比較演算処理を行い、物体の認識を行う。なお、CPU23が比較演算処理に用いる画像の詳細については後述する。
次に、前方画像撮影用カメラ10が撮影した画像と、前処理用FPGA21がVRAM22に記憶させた画像を補正した画像との関連について説明する。図3は、本実施形態における、前方画像撮影用カメラ10が撮影した画像と、前処理用FPGA21がVRAM22に記憶させた画像を補正した画像との関連を示した説明図である。
図示する例では、図の左側から右側に進むにつれて時刻が経過している。領域301は、前方画像撮影用カメラ10が露光するタイミングと、露光条件とを示している。具体的には、前方画像撮影用カメラ10は、「露光0」、「露光1」、「露光2」、「露光3」、「露光4」の順に画像を撮影する。
また、前方画像撮影用カメラ10が「露光0」で画像を撮影した際の露光条件は「G0」である。また、前方画像撮影用カメラ10が「露光1」で画像を撮影した際の露光条件は「G1」である。また、前方画像撮影用カメラ10が「露光2」で画像を撮影した際の露光条件は「G3」である。また、前方画像撮影用カメラ10が「露光4」で画像を撮影した際の露光条件は「G4」である。本実施形態では、露光条件の値は、露光時間(シャッター速度)とゲインとの2種類の条件の値を乗算した値とする。具体的には、露光時間が「20ms」であり、ゲインが「2」である場合は、露光条件の値を「40」とする。
領域302は、前方画像撮影用カメラ10が撮影した画像(第1の画像、最新フレーム)を示している。図示する例では、前方画像撮影用カメラ10が「露光4」で撮影した画像は「F04」である。また、前方画像撮影用カメラ10が「露光4」で撮影した画像より1フレーム前に撮影した画像、すなわち前方画像撮影用カメラ10が「露光3」で撮影した画像は「F03」である。また、前方画像撮影用カメラ10が「露光4」で撮影した画像より2フレーム前に撮影した画像、すなわち前方画像撮影用カメラ10が「露光2」で撮影した画像は「F02」である。なお、前方画像撮影用カメラ10が撮影を行った画像「F01」、「F00」については図示するとおりである。
領域303は、前方画像撮影用カメラ10が最新フレームの画像より1フレーム前に撮影した画像(第2の画像)を、画像処理制御ユニット20の前処理用FPGA21が補正した画像(過去フレーム1)と、補正条件とを示している。図示する例では、前処理用FPGA21が、画像「F04」の露光条件「G4」に合わせて画像「F03」を補正した画像は「F13」である。
前処理用FPGA21は、画像「F03」の露光条件「G3」を画像「F04」の露光条件「G4」に合わせるため、画像「F04」の露光条件と画像「F03」の露光条件との変化分の値「G4/G3」を、画像「F03」に乗算して、補正後の画像「F13」を生成する。なお、変化分の値「G4/G3」を補正条件とする。
これにより、画像「F13」の露光条件は「G4」となる。なお、画像「F03」は、画像「F04」より1フレーム前に前方画像撮影用カメラ10が撮影した画像である。
また、前処理用FPGA21が、画像「F03」の露光条件「G3」に合わせて画像「F02」を補正した画像は「F12」である。前処理用FPGA21は、画像「F02」の露光条件「G2」を画像「F03」の露光条件「G3」に合わせるため、画像「F02」に補正条件「G3/G2」を乗算して、補正後の画像「F12」を生成する。これにより、画像「F12」の露光条件は「G3」となる。なお、画像「F02」は、画像「F03」より1フレーム前に前方画像撮影用カメラ10が撮影した画像である。
なお、画像処理制御ユニット20の前処理用FPGA21が補正を行った画像「F11」、「F10」の補正条件については図示するとおりである。
領域304は、前方画像撮影用カメラ10が最新フレームの画像より2フレーム前に撮影した画像(第2の画像)を、画像処理制御ユニット20の前処理用FPGA21が補正した画像(過去フレーム2)と、補正条件とを示している。図示する例では、前処理用FPGA21が、画像「F04」の露光条件「G4」に合わせて画像「F12」を補正した画像は「F22」である。
前処理用FPGA21は、画像「F12」の露光条件「G3」を画像「F04」の露光条件「G4」に合わせるため、画像「F12」に補正条件「G4/G3」を乗算して、補正後の画像「F22」を生成する。これにより、画像「F22」の露光条件は「G4」となる。
なお、画像「F12」は、画像「F04」より2フレーム前に前方画像撮影用カメラ10が撮影した画像「F02」を、画像「F03」の露光条件に合わせて前処理用FPGA21が補正した画像である。すなわち、画像「F22」は、画像「F04」より2フレーム前に前方画像撮影用カメラ10が撮影した画像「F02」を、画像「F04」の露光条件「G4」に合わせて前処理用FPGA21が補正した画像である。
また、前処理用FPGA21が、画像「F03」の露光条件「G3」に合わせて画像「F11」を補正した画像は「F21」である。前処理用FPGA21は、画像「F11」の露光条件「G2」を画像「F03」の露光条件「G3」に合わせるため、画像「F11」に補正条件「G3/G2」を乗算して、補正後の画像「F21」を生成する。これにより、画像「F21」の露光条件は「G3」となる。
なお、画像「F11」は、画像「F03」より2フレーム前に前方画像撮影用カメラ10が撮影した画像「F01」を、画像「F02」の露光条件に合わせて前処理用FPGA21が補正した画像である。すなわち、画像「F21」は、画像「F03」より2フレーム前に前方画像撮影用カメラ10が撮影した画像「F01」を、画像「F03」の露光条件「G3」に合わせて前処理用FPGA21が補正した画像である。
なお、画像処理制御ユニット20の前処理用FPGA21が補正を行った画像「F20」の補正条件については図示するとおりである。
このように、画像処理制御ユニット20の前処理用FPGA21は、最新フレームの画像の露光条件に合わせて、1フレーム前に前方画像撮影用カメラ10が撮影した画像および2フレーム前に前方画像撮影用カメラ10が撮影した画像を補正し、補正後の画像を生成する。そして、画像処理制御ユニット20のCPU23は、前方画像撮影用カメラ10が撮影した現在の画像である最新フレームの画像と、前処理用FPGA21が補正した過去の画像である過去フレーム1および過去フレーム2の画像との比較演算処理を行い、物体の認識処理を行う。
これにより、最新フレームの画像と、過去フレーム1の画像と、過去フレーム2の画像との露光条件が同一となるため、露光条件の違いによるノイズを抑えることができ、画像処理制御ユニット20のCPU23は、物体の認識処理の確度をより高めることができる。
具体的には、CPU23は、最新フレームの画像「F04」に含まれている物体の認識処理を行う際には、画像「F04」と、過去フレーム1の画像「F13」または過去フレーム2の画像「F22」との比較演算処理を行い、物体の認識処理を行う。また、CPU23は、最新フレームの画像「F03」に含まれている物体の認識処理を行う際には、画像「F03」と、過去フレーム1の画像「F12」または過去フレーム2の画像「F21」との比較演算処理を行い、物体の認識処理を行う。
なお、CPU23は、他の最新フレームの画像「F02」、「F01」、「F00」に含まれている物体の認識処理を行う際も、画像「F04」および「F03」と同様の処理を行う。
なお、過去フレーム1の画像を用いて物体の認識処理を行うのか、過去フレーム2の画像を用いて物体の認識処理を行うのかは、例えば、車両の速度に応じて決定する。具体的には、車両の速度が速い場合は、フレーム間の画像の変化が大きいため、最新フレームの画像と過去フレーム1の画像とを用いて物体の認識処理を行い、車両の速度が遅い場合は、最新フレームの画像と過去フレーム2の画像とを用いて物体の認識処理を行う。
また、図3に示す例では、過去フレームとして、過去フレーム1と過去フレーム2とを用いているが、これに限らない。例えば、車両の速度などの状態に応じて、過去フレーム3,4,5・・・を追加して処理を行うことも可能である。
次に、本実施形態における車載画像認識システム1の画像制御ユニット20が備える前処理用FPGA21の動作について説明する。図4は、前処理用FPGA21の更新処理によって、VRAM22に記憶されている画像の更新例を示した説明図である。
図示する例では、前処理用FPGA21が更新処理を行う前において、VRAM22に記憶されている最新フレームの画像は「F01」であり、最新フレームのステータスは「True」である。また、前処理用FPGA21が更新処理を行う前において、VRAM22に記憶されている過去フレーム1の画像は「F10」であり、過去フレーム1のステータスは「True」である。また、前処理用FPGA21が更新処理を行う前において、VRAM22に記憶されている過去フレーム2の画像は無く、過去フレーム2のステータスは「True」である。
また、前処理用FPGA21が、更新処理を行った後において、VRAM22に記憶されている最新フレームの画像は「F02」であり、最新フレームのステータスは「True」である。また、前処理用FPGA21が、更新処理を行った後において、VRAM22に記憶されている過去フレーム1の画像は「データF11」であり、過去フレーム1のステータスは「True」である。また、前処理用FPGA21が、更新処理を行った後において、VRAM22に記憶されている過去フレーム2の画像は「F20」であり、過去フレーム2のステータスは「False」である。なお、ステータス「True」は、VRAM22に画像が記憶されていることを示す。また、ステータス「False」は、VRAM22に画像が記憶されていないことを示す。
図5は、本実施形態における前処理用FPGA21の動作手順を示したフローチャートである。なお、図示するフローチャートは、具体例として、画像「F02」を取り込んだ場合の動作手順について示している。また、各画像の関連性は図3に示したとおりである。
(ステップS101)前処理用FPGA21は、前方画像撮影用カメラ10が撮影した画像を1フレーム取り込む。具体例としては、前処理用FPGA21は画像「F02」を取り込む。その後、ステップS102の処理に進む。なお、画像「F02」の露光条件は「G2」である。
(ステップS102)前処理用FPGA21は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されているか否かを判定する。前処理用FPGA21は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されていると判定した場合にはステップS103の処理に進み、それ以外の場合にはステップS106の処理に進む。なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の最新フレームバッファには最新フレームの画像として「F01」が記憶されているため、ステップS103の処理に進む。
(ステップS103)前処理用FPGA21は、VRAM22の過去フレーム1バッファに、過去フレーム1の画像が記憶されているか否かを判定する。前処理用FPGA21は、VRAM22の過去フレーム1バッファに過去フレーム1の画像が記憶されていると判定した場合にはステップS104の処理に進み、それ以外の場合にはステップS105の処理に進む。なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の過去フレーム1バッファには過去フレーム1の画像として「F10」が記憶されているため、ステップS104の処理に進む。
(ステップS104)前処理用FPGA21は、VRAM22の過去フレーム1バッファに記憶されている過去フレーム1の画像(第2の画像)の露光条件を、ステップS101で取り込んだ画像(第1の画像)の露光条件に合わせる補正を行い、補正後の画像を過去フレーム2の画像としてVRAM22の過去フレーム2バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム2のステータスを「True」にする。その後、ステップS105の処理に進む。
なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の過去フレーム1バッファには過去フレーム1の画像として「F10」が記憶されている。また、画像「F10」の露光条件は「G1」である。よって、前処理用FPGA21は、画像「F10」に補正条件「G2/G1」を掛けて、画像「F20」を生成し、画像「F20」を過去フレーム2の画像としてVRAM22の過去フレーム2バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム2のステータスを「True」にする。これにより、VRAM22の過去フレーム2バッファに記憶されている過去フレーム2の画像は、図示するように、画像「F20」となる。また、過去フレーム2のステータスは「True」となる。
(ステップS105)前処理用FPGA21は、VRAM22の最新フレームバッファに記憶されている最新フレームの画像(第2の画像)の露光条件を、ステップS101で取り込んだ画像(第1の画像)の露光条件に合わせる補正を行い、補正後の画像を過去フレーム1の画像としてVRAM22の過去フレーム1バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム1のステータスを「True」にする。その後、ステップS106の処理に進む。
なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の最新フレームバッファには最新フレームの画像として「F01」が記憶されている。また、画像「F01」の露光条件は「G1」である。よって、前処理用FPGA21は、画像「F01」に補正条件「G2/G1」を掛けて、画像「F11」を生成し、画像「F11」を過去フレーム1の画像としてVRAM22の過去フレーム1バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム1のステータスを「True」にする。これにより、VRAM22の過去フレーム1バッファに記憶されている過去フレーム1の画像は、図示するように、画像「F11」となる。また、過去フレーム1のステータスは「True」となる。
(ステップS106)前処理用FPGA21は、ステップS101で取り込んだ画像を最新フレームの画像としてVRAM22の最新フレームバッファに記憶させる。このとき、前処理用FPGA21は、最新フレームのステータスを「True」にする。その後、ステップS101の処理に戻る。
なお、前処理用FPGA21が画像「F02」を取り込んだ場合では、画像「F02」を最新フレームの画像としてVRAM22に最新フレームバッファに記憶させる。このとき、前処理用FPGA21は、最新フレームのステータスを「True」にする。これにより、VRAM22の最新フレームバッファに記憶されている最新フレームの画像は、図示するように、画像「F02」となる。また、最新フレームのステータスは「True」となる。
上述したとおり、前処理用FPGA21は、ステップS101からステップS106の処理を行い、VRAM22が記憶する最新フレームの画像と、過去フレーム1の画像と、過去フレーム2の画像とを更新して、再度VRAM22に記憶させる。なお、前処理用FPGA21が行う補正は、例えば、図3を用いて説明した補正である。
次に、本実施形態における車載画像認識システム1の画像制御ユニット20が備えるCPU23の動作について説明する。図6は、本実施形態におけるCPU23の動作手順を示したフローチャートである。
(ステップS201)CPU23は、前方画像撮影用カメラ10が画像を撮影することにより、新しいフレーム(垂直同期信号)が発生したか否かを判定する。CPU23は、新しいフレームが発生したと判定した場合にはステップS202の処理に進み、それ以外の場合にはステップS201の処理を再度実行する。
(ステップS202)CPU23は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されているか否かを判定する。CPU23は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されていると判定した場合にはステップS204の処理に進み、それ以外の場合にはステップS203の処理に進む。
(ステップS203)CPU23は、物体の認識処理を行うことができない(認識不能)と判定し、ステップS201の処理に戻る。
(ステップS204)CPU23は、車両の速度(車速)が高速であるか否かを判定する。CPU23は、車速は高速であると判定した場合にはステップS205の処理に進み、それ以外の場合にはステップS207の処理に進む。例えば、CPU23は、図示せぬ速度センサから車速を取得し、この車速が一定速度以上であれば車速は高速であると判定する。
(ステップS205)CPU23は、VRAM22の過去フレーム1バッファに過去フレーム1の画像が記憶されているか否かを判定する。CPU23は、VRAM22の過去フレーム1バッファに過去フレーム1の画像が記憶されていると判定した場合にはステップS206の処理に進み、それ以外の場合にはステップS203の処理に戻る。
(ステップS206)CPU23は、VRAM22の最新フレームバッファに記憶されている最新フレームの画像と、過去フレーム1バッファに記憶されている過去フレーム1の画像とを用いて物体の認識処理を行う。その後、ステップS201の処理に戻る。
物体の認識処理の方法としては、例えば、最新フレームの画像と、過去フレームの画像とを用いて予測運動補償によって生成した残差画像より物体を認識する方法や、最新フレームの画像と、過去フレームの画像とを用いてオプティカルフローを求め、物体を認識する方法がある。なお、物体の認識処理の方法はこれに限らず、どのような方法を用いてもよい。
(ステップS207)CPU23は、VRAM22の過去フレーム2バッファに過去フレーム2の画像が記憶されているか否かを判定する。CPU23は、VRAM22の過去フレーム2バッファに過去フレーム2の画像が記憶されていると判定した場合にはステップS208の処理に進み、それ以外の場合にはステップS203の処理に戻る。
(ステップS208)CPU23は、VRAM22の最新フレームバッファに記憶されている最新フレームの画像と、過去フレーム2バッファに記憶されている過去フレーム2の画像とを用いて物体の認識処理を行う。その後、ステップS201の処理に戻る。
上述したとおり、CPU23は、ステップS201からステップS208の処理を行い、VRAM22が記憶する最新フレームの画像と、最新フレームの画像の露光条件に合わせて補正した、過去フレーム1の画像または過去フレーム2の画像とを用いて物体の認識処理を行う。
次に、本実施形態における画像の補正による効果について説明する。図7は、車載カメラ1が撮影した現在の画像である最新フレームの画像と、前処理用FPGA21が最新フレームの画像の露光条件に合わせて補正した過去の画像である過去フレームの画像とを用いて、CPU23が予測運動補償によって生成した残差画像である。図示する例では、過去フレームの画像の露光条件を最新フレームの画像の露光条件に合わせて補正しているため、画像には車両の残差501〜505が表示されており、路面の残差が表示されていない。
図8は、車載カメラ1が撮影した現在の画像である最新フレームの画像と、前処理用FPGA21が最新フレームの画像の露光条件に合わせて補正を行っていない画像である過去フレームの画像とを用いて、CPU23が予測運動補償によって生成した残差画像である。図示する例では、過去フレームの画像の補正を行っておらず、最新フレームの画像と過去フレームの画像との露光条件が異なっているため、画像には車両の残差601だけではなく、路面の残差602,603も表示されている。
図7および図8に示したとおり、最新フレームの画像の露光条件にあわせて、過去フレームの画像の露光条件を補正した場合(図7)では、露光条件に合わせて補正を行わない場合(図8)と比較して、認識対象の物体である車両の残差をより確度良く認識することができる。
図9は、車載カメラ1が撮影した現在の画像である最新フレームの画像と、前処理用FPGA21が最新フレームの画像の露光条件に合わせて補正した過去の画像である過去フレームの画像とを用いて、CPU23が生成したオプティカルフローの画像である。図示する例では、過去フレームの画像の露光条件を最新フレームの画像の露光条件に合わせて補正しているため、画像には車線の動きが判別できるベクトル701,702が示されている。
図10は、車載カメラ1が撮影した現在の画像である最新フレームの画像と、前処理用FPGA21が最新フレームの画像の露光条件に合わせて補正を行っていない画像である過去フレームの画像とを用いて、CPU23が生成したオプティカルフローの画像である。図示する例では、過去フレームの画像の補正を行っておらず、最新フレームの画像と過去フレームの画像との露光条件が異なっているため、画像には車線の動きを示したベクトルだけではなく、露光条件の違いによるノイズの影響で画像全体に様々な方向を示したベクトル801〜803が表示されている。
図9および図10に示したとおり、最新フレームの画像の露光条件にあわせて、過去フレームの画像の露光条件を補正した場合(図9)では、露光条件に合わせて補正を行わない場合(図10)と比較して、認識対象の物体である車線の動きを示すベクトルをより確度良く認識することができる。
上述したとおり、本実施形態の車載画像認識システム1は、車両に搭載されている。車両は、直射日光が当たる場所などの光の強い場所や、日陰などの光の弱い場所など、明るさが異なる場所を走行する。そのため、前方画像撮影用カメラ1が撮影する画像の露光条件は、撮影したタイミングによって露光条件が異なる。すなわち、画像毎に露光条件が異なる。
本実施形態によれば、画像処理制御ユニット20の前処理用FPGA21は、最新フレームの画像の露光条件に合わせて、過去に前方画像撮影用カメラ10が撮影した画像を補正する。そして、画像処理制御ユニット20のCPU23は、車載カメラが撮影した現在の画像である最新フレームの画像と、過去の画像を最新フレームの画像の露光条件に合わせて補正した画像との比較演算処理を行い、物体の認識処理を行う。これにより、最新フレームの画像と、過去に前方画像撮影用カメラ10が撮影した画像との露光条件が同一となるため、露光条件の違いによるノイズを抑えることができ、画像処理制御ユニット20のCPU23は、物体の認識処理の確度をより高めることができる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。本実施形態と第1の実施形態とで異なる点は、前方画像撮影用カメラ10が撮影した画像を補正するタイミングである。また、本実施形態では、CPU23が、補正部および認識部として動作する。なお、車載画像認識システム1と、前方画像撮影用カメラ10と、画像処理制御ユニット20との構成は、第1の実施形態の各構成と同様の構成である。
次に、本実施形態における車載画像認識システム1の画像制御ユニット20が備える前処理用FPGA21の動作について説明する。図11は、前処理用FPGA21の更新処理によって、VRAM22に記憶されている画像の更新例を示した説明図である。
図示する例では、前処理用FPGA21が更新処理を行う前において、VRAM22に記憶されている最新フレームの画像は「F01」であり、露光条件は「G1」であり、最新フレームのステータスは「True」である。また、前処理用FPGA21が更新処理を行う前において、VRAM22に記憶されている過去フレーム1の画像は「F10」であり、露光条件は「G0」であり、過去フレーム1のステータスは「True」である。また、前処理用FPGA21が更新処理を行う前において、VRAM22に記憶されている過去フレーム2の画像は無く、露光条件は無く、過去フレーム2のステータスは「False」である。
また、前処理用FPGA21が、更新処理を行った後において、VRAM22に記憶されている最新フレームの画像は「F02」であり、露光条件は「G2」であり、最新フレームのステータスは「True」である。また、前処理用FPGA21が、更新処理を行った後において、VRAM22に記憶されている過去フレーム1の画像は「データF11」であり、露光条件は「G1」であり、過去フレーム1のステータスは「True」である。また、前処理用FPGA21が、更新処理を行った後において、VRAM22に記憶されている過去フレーム2の画像は「F20」であり、露光条件は「G0」であり、過去フレーム2のステータスは「True」である。
図12は、本実施形態における前処理用FPGA21の動作手順を示したフローチャートである。なお、図示するフローチャートは、具体例として、画像「F02」を取り込んだ場合の動作手順について示している。
(ステップS301)前処理用FPGA21は、前方画像撮影用カメラ10が撮影した画像を1フレーム取り込む。具体的には、前処理用FPGA21は画像「F02」を取り込む。その後、ステップS302の処理に進む。なお、画像「F02」の露光条件は「G2」である。
(ステップS302)前処理用FPGA21は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されているか否かを判定する。前処理用FPGA21は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されていると判定した場合にはステップS303の処理に進み、それ以外の場合にはステップS306の処理に進む。なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の最新フレームバッファには最新フレームの画像として「F01」が記憶されているため、ステップS303の処理に進む。
(ステップS303)前処理用FPGA21は、VRAM22の過去フレーム1バッファに、過去フレーム1の画像が記憶されているか否かを判定する。前処理用FPGA21は、VRAM22の過去フレーム1バッファに過去フレーム1の画像が記憶されていると判定した場合にはステップS304の処理に進み、それ以外の場合にはステップS305の処理に進む。なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の過去フレーム1バッファには過去フレーム1の画像として「F00」が記憶されているため、ステップS304の処理に進む。
(ステップS304)前処理用FPGA21は、VRAM22の過去フレーム1バッファに記憶されている過去フレーム1の画像と露光条件とを、VRAM22の過去フレーム2バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム2のステータスを「True」にする。その後、ステップS305の処理に進む。
なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の過去フレーム1バッファには過去フレーム1の画像「F00」と露光条件「G0」とが記憶されている。よって、前処理用FPGA21は、画像「F00」と露光条件「G0」とをVRAM22の過去フレーム2バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム2のステータスを「True」にする。これにより、VRAM22の過去フレーム2バッファに記憶されている過去フレーム2の画像は、図示するように、画像「F00」となり、露光条件は「G0」となる。また、過去フレーム2のステータスは「True」となる。
(ステップS305)前処理用FPGA21は、VRAM22の最新フレームバッファに記憶されている最新フレームの画像と露光条件とを、VRAM22の過去フレーム1バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム1のステータスを「True」にする。その後、ステップS306の処理に進む。
なお、前処理用FPGA21が画像「F02」を取り込んだ場合においては、VRAM22の最新フレームバッファには最新フレームの画像「F01」と露光条件「G1」とが記憶されている。よって、前処理用FPGA21は、画像「F01」と露光条件「G1」とをVRAM22の過去フレーム1バッファに記憶させる。このとき、前処理用FPGA21は、過去フレーム1のステータスを「True」にする。これにより、VRAM22の過去フレーム1バッファに記憶されている過去フレーム1の画像は、図示するように、画像「F01」となり、露光条件は「G1」となる。また、過去フレーム1のステータスは「True」となる。
(ステップS306)前処理用FPGA21は、ステップS301で取り込んだ画像と露光条件とを最新フレームの画像と露光条件としてVRAM22の最新フレームバッファに記憶させる。このとき、前処理用FPGA21は、最新フレームのステータスを「True」にする。その後、ステップS301の処理に戻る。
なお、前処理用FPGA21が画像「F02」を取り込んだ場合では、前処理用FPGA21は、最新フレームの画像として画像「F02」と、露光条件「G2」とをVRAM22の最新フレームバッファに記憶させる。このとき、前処理用FPGA21は、最新フレームのステータスを「True」にする。これにより、VRAM22の最新フレームバッファに記憶されている最新フレームの画像は、図示するように、画像「F02」となり、露光条件は「G2」となる。また、最新フレームのステータスは「True」となる。
上述したとおり、前処理用FPGA21は、ステップS301からステップS306の処理を行い、最新フレームの画像および露光条件と、過去フレーム1の画像および露光条件と、過去フレーム2の画像および露光条件とをVRAM22に記憶させる。
次に、本実施形態における車載画像認識システム1の画像制御ユニット20が備えるCPU23の動作について説明する。図13は、本実施形態におけるCPU23の動作手順を示したフローチャートである。なお、本実施形態では、CPU23は、物体の認識処理を行う際にのみ以下の処理を実行する。
(ステップS401)CPU23は、前方画像撮影用カメラ10が画像を撮影することにより、新しいフレーム(垂直同期信号)が発生したか否かを判定する。CPU23は、新しいフレームが発生したと判定した場合にはステップS402の処理に進み、それ以外の場合にはステップS401の処理を再度実行する。
(ステップS402)CPU23は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されているか否かを判定する。CPU23は、VRAM22の最新フレームバッファに最新フレームの画像が記憶されていると判定した場合にはステップS404の処理に進み、それ以外の場合にはステップS403の処理に進む。
(ステップS403)CPU23は、物体の認識処理を行うことができない(認識不能)と判定し、ステップS401の処理に戻る。
(ステップS404)CPU23は、車両の速度(車速)が高速であるか否かを判定する。CPU23は、車速は高速であると判定した場合にはステップS405の処理に進み、それ以外の場合にはステップS407の処理に進む。
(ステップS405)CPU23は、VRAM22の過去フレーム1バッファに過去フレーム1の画像が記憶されているか否かを判定する。CPU23は、VRAM22の過去フレーム1バッファに過去フレーム1の画像が記憶されていると判定した場合にはステップS406の処理に進み、それ以外の場合にはステップS403の処理に戻る。
(ステップS406)CPU23は、VRAM22の最新フレームバッファから最新フレームの画像(第1の画像)と露光条件を読み出す。また、CPU23は、VRAM22の過去フレーム1バッファから過去フレーム1の画像(第2の画像)と露光条件とを読み出す。続いて、CPU23は、読み出した過去フレーム1の画像を、最新フレームの画像の露光条件に合わせて補正を行う。続いて、CPU23は、最新フレームの画像と、補正した過去フレーム1の画像とを用いて物体の認識処理を行う。その後、ステップS401の処理に戻る。
(ステップS407)CPU23は、VRAM22の過去フレーム2バッファに過去フレーム2の画像が記憶されているか否かを判定する。CPU23は、VRAM22の過去フレーム2バッファに過去フレーム2の画像が記憶されていると判定した場合にはステップS408の処理に進み、それ以外の場合にはステップS403の処理に戻る。
(ステップS408)CPU23は、CPU23は、VRAM22の最新フレームバッファから最新フレームの画像(第1の画像)と露光条件を読み出す。また、CPU23は、VRAM22の過去フレーム2バッファから過去フレーム2の画像(第2の画像)と露光条件とを読み出す。続いて、CPU23は、読み出した過去フレーム2の画像を、最新フレームの画像の露光条件に合わせて補正を行う。続いて、CPU23は、最新フレームの画像と、補正した過去フレーム2の画像とを用いて物体の認識処理を行う。その後、ステップS401の処理に戻る。
上述したとおり、本実施形態の車載画像認識システム1は、車両に搭載されている。車両は、直射日光が当たる場所などの光の強い場所や、日陰などの光の弱い場所など、明るさが異なる場所を走行する。そのため、前方画像撮影用カメラ1が撮影する画像の露光条件は、撮影したタイミングによって露光条件が異なる。すなわち、画像毎に露光条件が異なる。
本実施形態によれば、画像処理制御ユニット20のCPU23は、物体の認識処理を行う際にのみ、ステップS401からステップS408の処理を行い、VRAM22が記憶する最新フレームの画像と、過去フレーム1の画像または過去フレーム2の画像とを読み出し、過去フレーム1の画像または過去フレーム2の画像の露光条件を最新フレームの画像の露光条件に合わせるように補正する。そして、CPU22は、最新フレームの画像と、補正した過去フレーム1の画像または補正した過去フレーム2の画像とを用いて物体の認識処理を行う。
これにより、物体の認識処理を行う画像と、過去のフレームの画像との露光条件が同一となるため、露光条件の違いによるノイズを抑えることができ、画像処理制御ユニット20のCPU23は、物体の認識処理の確度をより高めることができる。
さらに、本実施形態では、前方画像撮影用カメラ10は常に画像を撮影しているが、CPU23は、物体の認識処理を行う場合にのみ過去フレームの画像の補正を行うため、補正に関する処理の負荷を低減させることができる。
以上、この発明の第1の実施形態および第2の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
例えば、第1の実施形態および第2の実施形態では、最新フレームの画像と、過去フレーム1の画像または過去フレーム2の画像とを用いて物体の認識処理を行う例について説明したが、これに限らない。例えば、最新フレームの画像と、過去フレーム1の画像と、過去フレーム2の画像との3つの画像を用いて物体の認識処理を行っても良い。また、最新フレームの画像と、3つ以上の過去フレームの画像とを用いて物体の認識処理を行っても良い。これらの場合においても、過去フレームの画像の露光条件を、最新フレームの画像の露光条件に合わせて補正することで、露光条件の違いによるノイズを抑えることができ、物体の認識処理の確度をより高めることができる。