以下、添付図面を参照しながら、本発明に係る情報処理装置、情報処理方法およびプログラムの実施形態を詳細に説明する。
図1は、本実施の形態の情報処理装置10の一例の説明図である。情報処理装置10は、例えば、移動体に搭載されている。移動体は、自立走行または牽引などにより、実空間において位置移動の可能な物体である。移動体は、例えば、車両、飛行機、電車、台車、などである。本実施の形態では、移動体が車両20である場合を一例として説明する。すなわち、本実施の形態では、情報処理装置10を車両20に搭載した形態を一例として説明する。
車両20には、撮影装置12が搭載されている。撮影装置12は、車両20の周辺を撮影した撮影画像を得る。撮影装置12は、例えば、公知のビデオカメラや、デジタルカメラなどである。本実施の形態では、撮影装置12は、車両20の周辺を連続して撮影することで、複数の撮影画像(すなわち、複数のフレーム)を撮影する。なお、撮影装置12は、情報処理装置10と一体的に構成してもよいし、情報処理装置10と別体として構成してもよい。
また、撮影装置12は、車両20に搭載した形態に限定されない。撮影装置12は、信号機30を撮影可能な位置に設置されていればよく、地面に対して固定されていてもよい。なお、本実施の形態の情報処理装置10で検知した検知結果を、車両20の運転者の運転支援などに用いる場合には、撮影装置12は、車両20に搭載した形態であることが好ましい。
本実施形態では、撮影装置12は、オートゲインコントロール(AGC)機能を搭載している。このため、撮影装置12は、感度を自動調整し、撮影画像の全画面の明るさが最適となるように自動調整した撮影画像を得る。
情報処理装置10は、撮影画像を解析する。そして、情報処理装置10は、撮影画像に含まれる信号機30を検出する。
次に、情報処理装置10が有する機能の一例を説明する。図2は、情報処理装置10が有する機能の一例を示すブロック図である。説明の便宜上、ここでは、本実施形態に関する機能を主に例示しているが、情報処理装置10が有する機能はこれらに限られるものではない。
情報処理装置10は、インタフェース部14と、認識処理部16と、記憶部18と、を備える。インタフェース部14および記憶部18は、認識処理部16に電気的に接続されている。
インタフェース部14は、撮影装置12から撮影画像を受付ける。撮影装置12は、車両20の周辺を経時的に連続して撮影し、撮影によって得られた撮影画像(この例ではカラー画像)の各々を、撮影順に順次、インタフェース部14へ出力する。インタフェース部14は、撮影装置12から撮影画像を順次受け付け、受け付けた順に、認識処理部16へ順次出力する。
記憶部18は、各種データを記憶する。本実施の形態では、記憶部18は、時間帯認識辞書DB18Aと、周囲領域識別辞書DB18Bを有し、時間帯認識辞書DB18Aは時間帯認識辞書を保持し、周囲領域識別辞書DB18Bは周囲領域識別辞書を保持する。これらの詳細については後述する。
認識処理部16は、撮影画像を解析し、撮影画像に映り込んだ信号機の信号を認識(検出)する。図2に示すように、認識処理部16は、画像取得部101と、候補領域認識部102と、周囲特徴量データ算出部103と、判断部104と、削除処理部105と、時間帯判別部106と、位置情報取得部107と、選択部108と、出力部109と、を含む。
画像取得部101、候補領域認識部102、周囲特徴量データ算出部103、判断部104、削除処理部105、時間帯判別部106、位置情報取得部107、選択部108、出力部109の一部またはすべては、例えば、CPU(Central Processing Unit)などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、IC(Integrated Circuit)などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
画像取得部101は、「取得部」の一例であり、撮影画像を取得する。この例では、画像取得部101は、インタフェース部14から順次に入力される撮影画像(動画像)を取得する。つまり、画像取得部101は、車両20に搭載された撮影装置12によって撮影された撮影画像を取得する。
候補領域認識部102は、画像取得部101により取得された撮影画像のうち、信号機の信号の色と形状に対応する領域を示す候補領域を認識する。候補領域認識部102は、点灯する信号(赤信号または青信号)の色と形状に対応する領域(この例では矩形の領域)を候補領域として認識する。
図3は、横方向に配置する信号機の青信号が点灯していて、青信号に対応する領域301が候補領域として認識される場合の例を示す図である。図4は、横方向に配置する信号機の赤信号が点灯していて、赤信号に対応する領域401が候補領域として認識される場合の例を示す図である。日本などにおいては、信号機は、図3および図4に示すように横方向に配置されるのが一般的である。
図5は、縦方向に配置する信号機の赤信号が点灯していて、赤信号に対応する領域501が候補領域として認識される場合の例を示す図である。図6は、縦方向に配置する信号機の青信号が点灯していて、青信号に対応する領域601が候補領域として認識される場合の例を示す図である。アメリカや日本の東北地方などにおいては、信号機は、図5および図6に示すように縦方向に配置されるのが一般的である。候補領域の具体的な認識方法については後述する。
図2に戻って説明を続ける。周囲特徴量データ算出部103は、画像取得部101により取得された撮影画像のうち、候補領域認識部102により認識された候補領域の周囲の特徴量を示す周囲特徴量データを算出する。図7〜図10を用いて、周囲特徴量データの算出方法を説明する。領域801(a)〜801(f)の矩形領域は、候補領域の周囲の領域を表している。互いに区別しない場合は、単に「領域801」と称する場合がある。ここでは、図7〜図10の何れにおいても、候補領域は、信号機の信号を示す領域と一致し、領域801(a)〜801(f)は信号機の信号の周囲の領域を示す周囲領域と一致しているが、これに限らず、候補領域と、信号機の信号を示す領域とが一致しない場合は、候補領域の周囲の領域と、周囲領域とは一致しないことになる。
領域801の矩形のサイズは、候補領域の矩形サイズと同じである。周囲特徴量データ算出部103は、各領域801内の画素の平均値Iiを求める。より具体的には、領域801内の画素の輝度値(画素値)を合計し、矩形内の画素数(M×N)で除算することで、該領域801の画素の平均値I(以下の説明では「画素平均値I」と称する場合がある)を求めることができる。この例では、Mは矩形の横方向の画素数、Nは矩形の縦方向の画素数である。周囲特徴量データ算出部103は、各領域801(a)〜801(f)の画素平均値Iを求めて、周囲特徴量データを求める。ここで、周囲特徴量データはK(Kは領域801の数に対応)次元のベクトルデータとなり、P(Ia,Ib,Ic,…,Ik)のように表される。Ikは各領域801内の画素平均値Iであり、Iaは、領域801(a)の画素平均値Iを表し、Ibは、領域801(b)の画素平均値Iを表す。他も同様である。図7〜図10の例では、周囲特徴量データPは6次元のベクトルデータとなる(P(Ia,Ib,Ic,…,If))。また、周囲特徴量データPを表すベクトルデータの次元数は任意である。例えば図11のように、801(a)〜801(n)の14個の領域801を設け、各領域801の画素平均値Iを求め、14次元のベクトルデータで周囲特徴量データPを表す形態であってもよい。
図2の説明を続ける。判断部104は、撮影画像のうち信号機の信号の周囲(一定範囲内の周囲)の領域を示す周囲領域を識別するために予め定められた周囲領域識別情報と、周囲特徴量データ算出部103により算出された周囲特徴量データと、に基づいて、周囲特徴量データに対応する候補領域が信号機の信号を示す領域であるか否かを判断する。この例では、周囲領域識別情報は、複数の時間帯ごとに予め定められる。また、周囲領域識別情報は、国または地域ごとに予め定められる。より具体的には、周囲領域識別情報は、時間帯と、国または地域との組み合わせごとに予め定められている。周囲領域識別情報は、SVM(Support Vector Machine)を用いた機械学習方法を利用して予め作成される。さらに言えば、周囲領域識別情報は、撮影画像のうち周囲領域と周囲領域以外の領域を示す誤認識領域との分離面を示す評価関数である。
例えば図8に示すように信号機が横方向に配置される国または地域(以下の説明では「対象地域(国も含む概念)」と称する)において、2次元の周囲特徴量データPを用いて、対応する候補領域の判断を行う場合を想定する。つまり、この場合の周囲領域識別情報は、2次元の周囲特徴量データPが正解であるか否か(撮影画像における信号機の信号の一定範囲内の周囲の領域を示すか否か)を識別するための情報である。なお、ここでは説明の便宜上、2次元の周囲特徴量データPを例に挙げて説明するが、これに限らず、正解であるか否かを判断する対象となる周囲特徴量データPの次元数は任意である。
ここでは、周囲特徴量データ算出部103により算出された2次元のベクトルデータが、図8に示す信号機の赤信号を示す領域(この例では領域401)の右隣の領域(この例では領域801(a))および左隣の領域(この例では領域801(d))の各々を示すか否かを識別するための周囲領域識別情報を例に挙げて説明する。
このような周囲領域識別情報を作成する場合、赤信号を示す領域の検出に用いられる撮影画像とは別に、この検出処理より前に、対象地域の複数の時間帯ごとに、予め撮影装置12によって赤信号の信号機を撮影した画像(赤信号画像と称する)を集める。そして、複数の時間帯ごとに、赤信号画像のうち、複数の赤色画素からなる矩形サイズ(候補領域の矩形サイズと同じ)の領域(赤色画素領域)の右隣の矩形サイズの領域の画素平均値Iaおよび左隣の矩形サイズの領域の画素平均値Idを求める。図12は、任意の1つの時間帯における画素平均値(Ia,Id)の分布の例を示す図である。赤色画素領域が、信号機の赤信号を示す領域である場合、該赤色画素領域の右隣の領域(例えば図8の領域801(a))は、比較的に高い画素平均値Iaが得られる。一方、該赤色画素領域の左隣の領域(例えば図8の領域801(d))は点灯しない黄色領域であるので、比較的に低い画素平均値Idが得られる。つまり、この場合、正解データとなる、周囲領域(赤信号の周囲の領域)の特徴量データP(Ia,Id)の集合は、図12の右下の黒丸の集合のように表され、周囲領域以外の誤認識領域の特徴量データP(Ia,Id)の集合は、図12の左上の白丸の集合のように表される。
ここでは、判断部104は、周囲領域の特徴量データ(正解データ)の集合と、誤認識領域の特徴量データの集合とを分離する分離面を、マージンdが最大となるように配置する。そして、判断部104は、この分離面(図12の例では直線L)を示す評価関数を、周囲領域識別辞書DB18Bとして予め算出(学習により算出)しておくことができる。なお、この例では、評価関数を算出する主体は判断部104であるとして説明したが、これに限らず、評価関数を予め算出する主体は判断部104以外の他の機能であってもよい。
上記評価関数は、例えば以下の式(1)のような線形識別関数で表される。以下の式(1)におけるA,B,Cは評価関数の係数である。ここでは、この評価関数が「周囲領域識別情報」に対応する。同様にして、黄信号の周囲の領域を示す周囲領域を識別するための評価関数や青信号の周囲の領域を示す周囲領域を識別するための評価関数を予め作成しておくことができる。
判断部104は、周囲特徴量データ算出部103により算出された周囲特徴量データP(Ia,Id)を上記評価関数に代入して、評価関数f(Ia,Id)の値を算出する。そして、算出した評価関数f(Ia,Id)の値が予め定めた閾値以上(例えば0)であれば、判断部104は、該周囲特徴量データP(Ia,Id)に対応する候補領域は、赤信号を示す領域であると判断する。該周囲特徴量データP(Ia,Id)は、撮影画像のうち赤信号の周囲の領域(周囲領域)の特徴量を示すデータであると判断できるためである。一方、算出した評価関数f(Ia,Id)の値が閾値未満であれば、判断部104は、該周囲特徴量データP(Ia,Id)に対応する候補領域は、赤信号を示す領域ではないと判断する。該周囲特徴量データP(Ia,Id)は、撮影画像のうち誤認識領域の特徴量を示すデータであると判断できるためである。
以上においては、正解であるか否かを判断する対象となる周囲特徴量データPは2次元のベクトルデータである場合を例に挙げて説明したが、次元数は任意に変更可能である。次元数をKとした場合、正解データの集合と、誤認識領域の特徴量データの集合とを分離する分離面を示す評価関数f(I
a,I
b,…,I
k)は、以下の式(2)で表される。以下の式(2)における(w
a,w
b,…,w
k)は評価関数の係数である。
この場合、周囲特徴量データ算出部103により算出される周囲特徴量データP(Ia,Ib,・・・,Ik)はK次元のベクトルデータであり、判断部104は、周囲特徴量データ算出部103により算出された周囲特徴量データP(Ia,Ib,・・・,Ik)を上記評価関数に代入して、評価関数f(Ia,Ib,・・・,Ik)の値を算出する。そして、算出した評価関数f(Ia,Ib,・・・,Ik)の値が予め定めた閾値以上であれば、判断部104は、該周囲特徴量データに対応する候補領域は、信号機の信号を示す領域であると判断する。一方、算出した評価関数(Ia,Ib,・・・,Ik)の値が閾値未満であれば、判断部104は、該周囲特徴量データに対応する候補領域は、信号機の信号を示す領域ではないと判断する。
ここでは、時間帯と、国または地域との組み合わせごとに、事前学習により評価関数を作成しておき、周囲領域識別辞書DB18Bに格納しておく。なお、赤信号、黄信号および青信号ごとに、個別の評価関数を格納しておいてもよいし、検出対象の信号用の評価関数のみを格納しておいてもよい。例えば赤信号、黄信号および青信号の全てが検出対象であれば、国または地域との組み合わせごとに、赤信号用の評価関数、黄信号用の評価関数、および、青信号用の評価関数を予め作成しておき、周囲領域識別辞書DB18Bに格納しておく形態であってもよい。また、例えば赤信号のみが検出対象であれば、国または地域との組み合わせごとに赤信号用の評価関数を作成しておき、周囲領域識別辞書DB18Bに格納しておく形態であってもよい。要するに、信号機の信号の周囲の領域を示す周囲領域を識別するために予め定められた周囲領域識別情報は、時間帯と、国または地域との組み合わせごとに予め定められている形態であればよい。
判断部104は、後述の選択部108により選択された評価関数と、周囲特徴量データ算出部103により算出された周囲特徴量データPと、に基づいて、周囲特徴量データPに対応する候補領域が信号機の信号を示す領域であるか否かを判断する。
削除処理部105は、判断部104によって、周囲特徴量データ算出部103により算出された周囲特徴量データPに対応する候補領域は、信号機の信号を示す領域ではないと判断された場合、その候補領域を削除する(出力対象外とする)処理を行う。
出力部109は、信号機の信号を示す領域であると判断された候補領域を、認識結果として出力する。
時間帯判別部106は、画像取得部101により取得された撮影画像が撮影された時間帯を判別する。時間帯判別部16Bは、撮影画像を解析することによって、該撮影画像の撮影時間帯を判別する。
撮影時間帯とは、1日(24時間)を撮影環境の互いに異なる複数の時間帯に分割したものである。撮影環境が異なる、とは、光強度が異なることを意味する。例えば、撮影時間帯は、昼、または、夜、である。なお、撮影時間帯は、昼、夜、夕方、であってもよい。また、撮影時間帯は、1日を撮影環境の異なる複数の時間帯に分割した、各時間帯であればよく、昼、夜、夕方、などに限定されない。また撮影時間帯は、2種類や3種類に限定されず、4種類以上であってもよい。また、撮影時間帯は、撮影画像の撮影環境(例えば、季節、国、地域、北半球・南半球)に応じて、適宜、設定すればよい。
本実施形態では、一例として、撮影時間帯が、昼または夜を示す場合を説明する。撮影時間帯が昼を示す、とは、撮影環境の光強度が閾値以上の時間帯である。撮影時間帯が夜である、とは、撮影環境の光強度が該閾値未満の時間帯である。この光強度の閾値には、予め任意の値を定めればよい。例えば、この光強度の閾値には、処理対象の撮影画像を撮影した撮影装置12のオートゲインコントロール機能によって、撮影画像に含まれる信号機30の信号30Aを示す領域の光量が飽和し始める(または飽和が解除される)光強度を定めればよい。
時間帯判別部106は、画像取得部101により取得された撮影画像の輝度を用いて、撮影画像の撮影時間帯を判別する。詳細には、図13に示すように、時間帯判別部106は、第1の算出部116Hと、第2の算出部116Iと、第3の算出部116Jと、を含む。
第1の算出部116Hは、撮影画像の平均輝度を算出する。第1の算出部116Hは、撮影画像に含まれる画素の各々の輝度値の平均値を算出する。これにより、第1の算出部116Hは、撮影画像の平均輝度を算出する。撮影時間帯が昼の場合、撮影画像の平均輝度は高い。一方、撮影時間帯が夜の場合、撮影画像の平均輝度は、昼より低い。
第2の算出部116Iは、撮影画像を複数のブロックに分割する。例えば、第2の算出部116Iは、撮影画像をm×n個のブロックに分割する。なお、mおよびnは、1以上の整数であり、且つ、mおよびnの少なくとも一方は、2以上の整数である。
そして、第2の算出部116Iは、ブロックの各々ごとに、平均輝度を算出する。例えば、第2の算出部116Iは、ブロックの各々ごとに、ブロックに含まれる画素の輝度値の平均値を算出する。これにより、第2の算出部116Iは、撮影画像に含まれるブロックの各々ごとに、平均輝度を算出する。
さらに、第2の算出部116Iは、撮影画像における平均輝度が閾値以下のブロックの数を、該撮影画像における低輝度ブロック数として算出する。低輝度ブロック数の算出に用いる平均輝度の閾値には、任意の値を予め定めればよい。
そして、時間帯判別部106は、撮影画像の平均輝度と、該撮影画像の低輝度ブロック数と、を含む特徴量に基づいて、撮影時間帯を判別する。
具体的には、時間帯判別部106は、例えば、撮影画像の平均輝度と撮影画像の低輝度ブロック数を、時間帯判別時の特徴量として用いる。
本実施形態では、時間帯判別部106は、予め、撮影時間帯の判別に用いる時間帯認識辞書DB18Aを作成する。すなわち、時間帯判別部106は、撮影画像の時間帯判別処理より以前に、予め、時間帯認識辞書DB18Aを作成する。
本実施形態では、時間帯判別部106は、SVM(Support Vector Machine)を用いた機械学習方法を用いて、時間帯認識辞書18Aを予め作成する。
詳細には、時間帯判別部106は、撮影時間帯ごとに予め撮影された複数の撮影画像を基準撮影画像として用いる。
基準撮影画像とは、信号機の信号を示す領域の検出に用いられる撮影画像とは別に、この検出処理より前に、撮影装置12によって予め撮影された撮影画像である。まず、時間帯判別部106は、基準撮影画像における、平均輝度と低輝度ブロック数によって示されるサンプル点の群を、平均輝度と低輝度ブロック数によって定まる二次元空間に登録する。図14は、基準撮影画像における、平均輝度(Iav)と低輝度ブロック数(Nblk)によって示されるサンプル点の一例を示す図である。
図14中、サンプル点群40Bは、夜を示す撮影時間帯に撮影された基準撮影画像における、平均輝度と低輝度ブロック数によって示されるサンプル点の群である。また、サンプル点群40Aは、昼を示す撮影時間帯に撮影された基準撮影画像における、平均輝度と低輝度ブロック数によって示されるサンプル点の群である。
時間帯判別部106は、昼のサンプル点群40Aと夜のサンプル点群40Bとを分離する分離面(ここでは、直線La)を、昼のサンプル点群40Aと夜のサンプル点群40Bの各々の境界線(直線La1および直線La2)間の距離d(マージンと称される場合がある)が最大となるように配置する。そして、時間帯判別部106は、この分離面(図14では、直線La)を示す評価関数を算出する。下記式(3)は、この直線Laを示す評価関数を示す式である。
上記式(3)中、f(Iav,Nblk)は、撮影画像の平均輝度と撮影画像の低輝度ブロック数を時間帯判別時の特徴量として用いた場合の、評価関数である。式(3)中、A、B、およびCは、該評価関数の係数である。ここでは、評価関数f(Iav,Nblk)または係数A、B、およびCが時間帯認識辞書18Aに対応している。
時間帯判別部106は、式(3)に示す評価関数を予め作成し、時間帯認識辞書18Aとして予め記憶部18に記憶する。
時間帯判別部106は、撮影画像の撮影時間帯の判別時には、記憶部18に記憶されている時間帯認識辞書18A(式(3)に示す評価関数)を用いて、該撮影画像の撮影時間帯を判別する。
詳細には、時間帯判別部106は、第1の算出部116Hおよび第2の算出部116Iによって算出した、撮影画像の平均輝度(Iav)と低輝度ブロック数(Nblk)を、式(3)に代入することで、評価関数f(Iav,Nblk)の値を算出する。
そして、時間帯判別部106は、算出した評価関数f(Iav,Nblk)の値が、予め定めた閾値以上である場合、該撮影画像の撮影時間帯が昼を示すと判別する。一方、時間帯判別部106は、算出した評価関数f(Iav,Nblk)の値が、該閾値未満である場合、該撮影画像の撮影時間帯が夜を示すと判別する。この閾値は、判別対象の撮影時間帯の撮影環境の光強度に応じて、予め定めればよい。
なお、時間帯判別部106は、撮影画像の平均輝度と、該撮影画像の低輝度ブロック数と、該撮影画像におけるブロック毎の平均輝度の分散値と、を含む特徴量に基づいて、撮影時間帯を判別してもよい。
この場合、時間帯判別部106の第3の算出部116Jが、撮影画像におけるブロック毎の平均輝度の分散値を算出する。第3の算出部116Jは、第2の算出部116Iが分割したブロック毎の、平均輝度の分散値を算出する。例えば、時間帯判別部106は、下記式(4)を用いて、分散値(σ)を算出する。
式(4)中、σは、撮影画像におけるブロック毎の平均輝度の分散値を示す。式(4)中、Nは、撮影画像に含まれるブロック数(すなわち、m×nの値)を示す。Iiは、i番目のブロックの平均輝度を示す。Iavは、撮影画像の全体の平均輝度を示す。
この場合、時間帯判別部106は、撮影画像の平均輝度と、該撮影画像の低輝度ブロック数と、該撮影画像におけるブロック毎の平均輝度の分散値と、を特徴量として用いる時間帯認識辞書18Aを、予め作成すればよい。
すなわち、時間帯判別部106は、撮影画像の平均輝度と、該撮影画像の低輝度ブロック数と、を特徴量として用いる場合と同様に、SVM(Support Vector Machine)を用いた機械学習方法を用いて、時間帯認識辞書18Aを予め作成すればよい。この場合、時間帯判別部106は、基準撮影画像における、平均輝度と低輝度ブロック数と分散値とによって示されるサンプル点の群を、平均輝度と低輝度ブロック数と分散値によって定まる三次元空間に登録すればよい。
そして、時間帯判別部106は、上記と同様にして、昼のサンプル点群と夜のサンプル点群とを分離する分離面を、マージンが最大となるように配置する。そして、時間帯判別部106は、この分離面を示す評価関数を、時間帯認識辞書18Aとして算出すればよい。下記式(5)は、撮影画像Pの平均輝度、撮影画像Pの低輝度ブロック数、および分散値を、時間帯判別時の特徴量として用いる場合の、評価関数(時間帯認識辞書18A)である。
式(5)中、f(Iav,Nblk,σ)は、撮影画像の平均輝度と撮影画像の低輝度ブロック数と分散値とを時間帯判別時の特徴量として用いる場合の、評価関数(時間帯認識辞書18A)である。式(5)中、A、B、C、およびDは、該評価関数の係数である。
このように、時間帯判別部106は、例えば、式(5)に示す評価関数を予め作成し、時間帯認識辞書18Aとして予め記憶部18に記憶してもよい。
この場合、時間帯判別部106は、撮影画像の撮影時間帯の判別時には、記憶部18に記憶されている時間帯認識辞書18A(式(5)に示す評価関数)を用いて、該撮影画像の撮影時間帯を判別する。
詳細には、時間帯判別部106は、第1の算出部116H、第2の算出部116I、および第3の算出部116Jの各々によって算出された、撮影画像の平均輝度(Iav)、低輝度ブロック数(Nblk)、および分散値(σ)を得る。そして、時間帯判別部106は、これらの平均輝度(Iav)、低輝度ブロック数(Nblk)、および分散値(σ)を、式(5)に代入することで、評価関数f(Iav,Nblk,σ)の値を算出する。
そして、時間帯判別部106は、算出した評価関数f(Iav,Nblk,σ)の値が、予め定めた閾値以上である場合、該撮影画像の撮影時間帯が昼を示すと判別する。一方、時間帯判別部106は、算出した評価関数f(Iav,Nblk,σ)の値が、該閾値未満である場合、該撮影画像の撮影時間帯が夜を示すと判別する。この閾値は、予め定めればよい。
以上のようにして、時間帯判別部106は、画像取得部101により取得された撮影画像が撮影された時間帯を判別し、判別した撮影時間帯を選択部108へ出力する。
図2に戻り、認識処理部16が有する機能の説明を続ける。位置情報取得部107は、自装置の位置情報を取得する。例えば位置情報取得部107は、GPS装置などの外部装置から位置情報を取得することができる。位置情報取得部107は、取得した位置情報を選択部108へ出力する。
選択部108は、時間帯判別部106により判別された時間帯に対応する周囲領域識別情報を選択する。また、選択部108は、位置情報取得部107により取得された位置情報(国または地域を特定可能)に対応する周囲領域識別情報を選択する。より具体的には、選択部108は、時間帯判別部106により判別された時間帯と、位置情報取得部107により取得された位置情報(国または地域を特定可能)との組み合わせに対応する周囲領域識別情報(この例では式(2)の評価関数)を選択する。
次に、候補領域認識部102による候補領域の認識方法について説明する。候補領域認識部102は、画像取得部101により取得された撮影画像のうち、信号機の信号色を示す信号画素を含む信号画素領域を抽出し、その抽出した信号画素領域を膨張した膨張領域に予め定めた形状の定型領域が含まれる場合、該定型領域を含む領域を信号領域として認識する。より具体的には、候補領域認識部102は、膨張領域に円形の定型領域が含まれる場合、該定型領域を含む領域を候補領域として認識する。以下、具体的な内容を説明する。
画像取得部101により取得された撮影画像が(R,G,B)色空間の画像データである場合、候補領域認識部102は、画像取得部101により取得されたRGB色空間の撮影画像(入力画像)を、(Y,U,V)色空間の画像データに変更し、信号画素を抽出する。ここで、(R,G,B)の色空間と(Y,U,V)の色空間との変換は以下の式(6)により行われる。
この例では、撮影装置12によって予め信号機の信号を撮影して得られる撮影画像(「信号画像サンプル」と称する)を集めた学習により、信号機の信号の色値の範囲を示す信号認識辞書を予め作成しておく。例えば赤信号を示す(U,V)値分布と、赤信号以外の(U,V)値分布とを分離する分離面を、両者の間のマージン(距離)が最大になるように配置する。そして、その分離面を示す評価関数を、赤信号を認識するための赤信号認識辞書として算出することができる。以下の式(7)は、評価関数を表す式である。式(7)において、f(U,V)は、赤信号認識辞書を示す評価関数であり、a,b,cは、この評価関数の係数である。青信号認識辞書および黄信号認識辞書も同様の方法で作成することができる。
候補領域認識部102は、(Y,U,V)色空間の撮影画像を構成する画素ごとに、該画素の(U,V)値を、各信号色(赤、黄および青の何れか)に対応する評価関数f(U,V)に代入して、該評価関数f(U,V)の値を求める。算出した評価関数f(U,V)の値が、予め定めた閾値以上であれば、その画素は、対応する信号色の信号画素であると判断する。例えば最小値の閾値と最大値の閾値とを設けて信号画素を抽出してもよい。赤、青、黄色のそれぞれのUの最小値および最大値、Vの最小値および最大値の閾値を設定してもよい。また、信号画素以外の画素の(U,V)値と重ならないように閾値を設定する。
図15は、画素値の(U、V)空間での閾値処理で抽出した青信号の画素例を示す図である。図15の画像中の信号画素(青信号を示す画素)を含む信号画素領域では、飽和した画素、ノイズ画素が含まれるので、抽出した信号画素領域は、青信号を示す実際の領域の一部しかない。そこで、候補領域認識部102は、抽出した信号画素に対して、膨張処理を行う。膨張処理は、1画素に対して、オリジナルの信号画像からN×Nの画素ブロックを加える。例えばN=7のとき、膨張対象の1画素に対して、オリジナルの信号画像から、7×7の画素ブロックを加える。図16は、図15の信号画素領域を膨張処理した後の画素例を示す図である。以下では、膨張処理した後の信号画素領域を「膨張領域」と称する。
候補領域認識部102は、膨張領域に対して、信号形状認識処理を行う。赤、青、黄信号に対して、円形抽出により、形状認識を行う。ここで、膨張領域に対して、円抽出により、形状認識を行う。円が検知された場合、信号が存在すると判断することができる。円抽出処理はHough変換により円抽出を行うことができる。そして、候補領域認識部102は、抽出した円領域に外接する矩形を求める。この矩形領域を候補領域(候補領域認識部102による認識結果)とする。図17に示す太線で描かれた円は、Hough変換により抽出した青信号の円領域を示す。図18に示す矩形領域は、候補領域認識部102によって認識された候補領域を示す。図19に示す矩形領域は、図3の撮影画像から認識された候補領域(青信号の候補を示す領域)を示す図である。
上記図19の認識結果は、撮影画像のうち信号機の信号(この例では青信号)を示す領域を認識した結果である。信号機以外の対象物でも、同じ色、同じ形状のものであれば、誤認識になってしまう問題がある。例えば、木の後方に赤色の看板がある場合、看板の一部は木に隠される。見える看板の一部は赤色で、丸い形になる。信号機の赤信号と同じ色および形状(円形状)であれば、信号機の赤信号として誤認識されてしまう。他の色の信号色についても同様の問題が起こる。
以上に説明した本実施形態では、信号機の信号の周囲の領域を示す周囲領域を識別するために予め定められた周囲領域識別情報(この例では評価関数)と、候補領域の周囲の特徴量を示す周囲特徴量データと、に基づいて、周囲特徴量データに対応する候補領域が信号機の信号を示す領域であるか否かを判断するので、周囲特徴量データが正解データに該当しない限り、該周囲特徴量データに対応する候補領域は信号機の信号を示す領域であるとは判定されない。すなわち、本実施形態によれば、撮影画像に映り込んだ信号機の信号を高精度に認識することができる。
図20は、本実施形態の認識処理部16の動作例を示すフローチャートである。各ステップの具体的な内容は上述したとおりであるので、詳細な説明は適宜に省略する。図20に示すように、まず画像取得部101は、撮影画像を取得する(ステップS1)。次に、候補領域認識部102は、ステップS1で取得された撮影画像のうち、信号機の信号の色と形状に対応する領域を示す候補領域を認識する(ステップS2)。次に、周囲特徴量データ算出部103は、ステップS1で取得された撮影画像のうち、ステップS2で認識された候補領域の周囲の特徴量を示す周囲特徴量データを算出する(ステップS3)。また、以上の処理と並行して、時間帯判別部106は、ステップS1により取得された撮影画像が撮影された時間帯を判別する(ステップS4)。
次に、選択部108は、ステップS4で判別された時間帯と、位置情報取得部107により取得された位置情報により特定される国または地域との組み合わせに対応する評価関数を選択する(ステップS5)。次に、判断部104は、ステップS3で算出された周囲特徴量データと、ステップS5で選択された評価関数と、に基づいて、該周囲特徴量データPに対応する候補領域(ステップS2で認識された候補領域)が信号機の信号を示す領域であるか否かを判断する判断処理を行う(ステップS6)。そして、削除処理部105は、ステップS6の判断処理により、信号機の信号を示す領域ではないと判断された候補領域を削除する処理を行う(ステップS7)。出力部109は、ステップS6の判断処理により、信号機の信号を示す領域であると判断された候補領域を、認識結果として出力する(ステップS8)。
次に、撮影装置12のハードウェア構成の一例を説明する。図21は、撮影装置12のハードウェア構成の一例を示す図である。
撮影装置12は、撮影光学系2010、メカシャッタ2020、モータドライバ2030、CCD(Charge Coupled Device)2040、CDS(Correlated Double Sampling:相関二重サンプリング)回路2050、A/D変換器2060、タイミング信号発生器2070、画像処理回路2080、LCD(Liquid Crystal Display)2090、CPU(Central Processing Unit)2100、RAM(Random Access Memory)2110、ROM(Read Only Memory)2120、SDRAM(Synchronous Dynamic Random Access Memory)2130、圧縮伸張回路2140、メモリ2150、操作部2160、および、出力I/F2170を備える。
画像処理回路2080、CPU2100、RAM2110、ROM2120、SDRAM2130、圧縮伸張回路2140、メモリ2150、操作部2160、および、出力I/F2170は、バス2200を介して接続されている。
撮影光学系2010は、被写体の反射光を集光する。メカシャッタ2020は、所定の時間、開くことにより、撮影光学系2010により集光された光をCCD2040に入射させる。モータドライバ2030は、撮影光学系2010およびメカシャッタ2020を駆動する。
CCD2040は、メカシャッタ2020を介して入射した光を被写体の像として結像し、当該被写体の像を示すアナログの画像データをCDS回路2050に入力する。
CDS回路2050は、CCD2040からアナログの画像データを受け付けると、当該画像データのノイズ成分を除去する。また、CDS回路2050は、相関二重サンプリングやゲインコントロールなどのアナログ処理を行う。そして、CDS回路2050は、処理後のアナログの画像データを、A/D変換器2060へ出力する。
A/D変換器2060は、CDS回路2050からアナログの画像データを受け付けると、当該アナログの画像データをデジタルの画像データに変換する。A/D変換器2060はデジタルの画像データを画像処理回路2080に入力する。タイミング信号発生器2070はCPU2100からの制御信号に応じて、CCD2040、CDS回路2050、およびA/D変換器2060にタイミング信号を送信することにより、CCD2040、CDS回路2050、およびA/D変換器2060の動作タイミングを制御する。
画像処理回路2080は、A/D変換器2060からデジタルの画像データを受け付けると、SDRAM2130を使用して、当該デジタルの画像データの画像処理を行う。画像処理は、例えばCrCb変換処理、ホワイトバランス制御処理、コントラスト補正処理、エッジ強調処理、および、色変換処理等である。
画像処理回路2080は上述の画像処理が行われた画像データをLCD2090、または、圧縮伸張回路2140に出力する。LCD2090は画像処理回路2080から受け付けた画像データを表示する液晶ディスプレイである。
圧縮伸張回路2140は、画像処理回路2080から画像データを受け付けると、当該画像データを圧縮する。圧縮伸張回路2140は圧縮された画像データを、メモリ2150に記憶する。また、圧縮伸張回路2140はメモリ2150から画像データを受け付けると、当該画像データを伸張する。圧縮伸張回路2140は伸張された画像データをSDRAM2130に一時的に記憶する。メモリ2150は圧縮された画像データを記憶する。
出力I/F2170は、画像処理回路2080で処理された画像データを、撮影画像として、情報処理装置10へ出力する。
なお上述の図2で説明したインタフェース部14、および認識処理部16に含まれる機能部の少なくとも一部を、信号処理ボード(信号処理回路)として撮影装置12に実装してもよい。
次に、上記実施の形態および変形例の、情報処理装置10のハードウェア構成を説明する。図22は、上記実施形態の情報処理装置10のハードウェア構成例を示すブロック図である。
上記実施形態の情報処理装置10は、出力部80、I/F部82、入力部94、CPU86、ROM(Read Only Memory)88、RAM(Random Access Memory)90、およびHDD92等がバス96により相互に接続されており、通常のコンピュータを利用したハードウェア構成となっている。
CPU86は、上記実施形態の情報処理装置10で実行する処理を制御する演算装置である。RAM90は、CPU86による各種処理に必要なデータを記憶する。ROM88は、CPU86による各種処理を実現するプログラム等を記憶する。HDD92は、上述した記憶部18に格納されるデータを記憶する。I/F部82は、他の装置との間でデータを送受信するためのインタフェースである。
上記実施形態の情報処理装置10で実行される上記各種処理を実行するためのプログラムは、ROM88等に予め組み込んで提供される。
なお、上記実施形態の情報処理装置10で実行されるプログラムは、これらの装置にインストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供するように構成してもよい。
また、上記実施形態の情報処理装置10で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上記実施形態の情報処理装置10における上記各処理を実行するためのプログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。
上記実施形態の情報処理装置10で実行される上記各種処理を実行するためのプログラムは、上述した各部が主記憶装置上に生成されるようになっている。
なお、上記HDD92に格納されている各種情報は、外部装置に格納してもよい。この場合には、該外部装置とCPU86と、を、ネットワーク等を介して接続した構成とすればよい。