以下、本発明の画像処理装置に係る実施の形態について、図面を参照して説明する。なお、第1および第2の実施形態では、自動車車両に搭載され、車両前方の風景画像の中から対向車両を抽出する画像処理装置について述べるが、本発明はそれらに限定されない。
[第1の実施の形態]
図1は、第1の実施形態に係る画像処理装置の構成を示すブロック図である。本実施形態の画像処理装置1は、画像入力部2と、画像処理部3と、メモリ4と、処理プログラム形成部5と、表示部6と、入力部7とを備えている。本実施形態では、画像処理装置1としては、CPUやRAM、ROM、入出力インターフェース等から構成されたコンピュータを用いることができる。
画像入力部2は、撮像した画像を電気信号に変換可能な撮像装置21を備えており、撮像装置21としては、例えば、電荷結合素子等の固体撮像素子を用いたCCDカメラが用いられる。本実施形態では、画像入力部2の撮像装置21は、図示しない自動車車両のルームミラー付近のフロントガラス内側に前方を撮像可能な状態に取り付けられている。
撮像装置21は、例えば、通常のテレビ画像と同様に1/30秒ごとに車両前方を撮像して動画像を形成し、前記動画像を構成する画像が画像処理部3に1フレームずつ送信されるようになっている。すなわち、画像処理部3には、画像入力部2から1秒間に30フレームの画像が送信されるようになっている。
撮像装置21から出力された画像信号は、通常のコンピュータ画像処理と同様に、図示しないA/DコンバータにおけるA/D変換により例えば256階調のデジタルの階調値に変換され、輝度補正やノイズ除去、アフィン変換等の幾何学的な補正等の処理が施されるようになっている。
画像処理部3は、撮像装置21により撮像されて順次送信されてくる図2に示すような画像に画像処理を施して、特定の対象、例えば、本実施形態では図2中右側に撮像されているトラックのような対向車両が抽出された出力画像を形成するようになっている。
すなわち、画像処理部3は、画像処理部3に接続されているメモリ4から処理プログラム形成部5で形成されメモリ4に記憶されている各種画像フィルタを木構造状に組み合わせた処理プログラムを読み出してRAMに展開し、図2に示されたような現在の時刻の入力画像とそれ以前に撮像された入力画像からオプティカルフロー画像を生成し、それらの画像を処理プログラムに入力して画像処理を行い、対向車両が抽出された出力画像を形成するように構成されている。
また、画像処理部3は、前記画像処理を行うと同時に、画像入力部2から送信されてきた前記複数の画像をメモリ4に送信し順次記憶させるようになっている。さらに、本実施形態では、画像処理部3には、モニタ等を備えた表示部6やキーボードやマウス等を備えた入力部7が接続されている。
ここで、処理プログラムの構造について説明する。処理プログラムは、図3に例示されるように、各種画像フィルタを木構造状に組み合わせたプログラムであり、動画像を構成する複数のフレームの画像t、t−1、…、t−k(kは1以上の整数)およびこれらの画像から生成されたオプティカルフロー画像に対して順次各画像フィルタによる画像処理を施し、出力画像を形成するように構成されている。
画像フィルタは、本実施形態では、図4および図5に例示されている単数または2個の画像データを入力する画像フィルタの中から選択されて用いられるようになっている。なお、図4に示す単数の画像を入力する画像フィルタを1入力画像フィルタ、図5に示す2個の画像を入力する画像フィルタを2入力画像フィルタという。
本実施形態の処理プログラムにおいては、入力画像t、t−1、…、t−kとして、現在の時刻tの入力画像tおよびそれ以前のMフレームごとの入力画像t−1、…、t−kが処理プログラムに入力されるようになっており、kおよびMの値は、あらかじめ任意に指定されるようになっている。
本実施形態では、k=2、M=1に設定されており、処理プログラムには、図6(A)に示すように出力画像が要求された現在の時刻tの入力画像tと、その直前の連続する2フレーム分の入力画像t−1、t−2とを処理プログラムに順次入力するようになっている。なお、例えば、kおよびMの値をk=3、M=3と設定すれば、図6(B)に示すように、現在の時刻tの入力画像tおよびそれ以前の3フレームごとの入力画像t−1、t−2、t−3の計4枚の画像が処理プログラムに入力されるようになる。
なお、他の選択方法により相異なる複数の入力画像を選択して処理プログラムに入力するように構成することも可能である。また、本実施形態の処理プログラムには、計算速度を向上させるために、図4や図5に示したような一般的な画像フィルタが用いられるが、目的に応じて機能が特化された画像フィルタを追加することも可能である。
画像処理部3は、前述した複数の入力画像のほかに、これらの複数の画像からオプティカルフロー画像を生成してそのオプティカルフロー画像も処理プログラムに入力するようになっている。本実施形態では、画像処理部3は、入力画像tおよび入力画像t−1からブロックマッチング処理によりオプティカルフロー画像を生成するようになっている。
ブロックマッチング処理では、基準となる現在の時刻tの入力画像tを、例えば4×4画素の画素ブロックに分割し、各画素ブロックについて入力画像t−1とのマッチング処理が行われる。マッチング処理の方法としては、SAD法、SSD法、正規化相関法等の種々の方法が知られており、いずれの方法を採ることも可能である。
本実施形態で採用されているSAD法について簡単に説明すれば、図7に示すように、入力画像t上の画素ブロックにおける左上端の画素を原点とし、横方向にi軸、縦方向にj軸をとると、画素ブロック内の画素pi,jの座標はそれぞれ(0,0)、(1,0)、…、(3,3)と表される。ここで、この入力画像t上の画素pi,jの輝度値をAt i,jのように表す。
また、マッチング処理の対象とされる入力画像t−1上に座標(k,l)を原点とする4×4画素のブロックをとり、前記と同様にiおよびjをとると、そのブロック上の画素の座標は(k+i,l+j)と表される。
このように定義した場合、入力画像t上の画素ブロック内の画素の輝度値At i,jと、入力画像t−1上のブロック内の対応する画素の輝度値At-1 k+i,l+jとの差の絶対値の総和、すなわちシティブロック距離Ck,lは下記(1)式で表される。
SAD法では、1画素ずつずらしながら入力画像t−1上をラスタ走査し、シティブロック距離Ck,lが最小となるブロックを入力画像t上の画素ブロックに対応するブロックとする。そして、それらの画素ブロックおよびブロックを同一画像上に置いた場合の入力画像t−1上のブロックから入力画像t上の画素ブロックへのフローベクトルFを、その入力画像t上の画素ブロックにおけるオプティカルフローと定めるようになっている。以上の作業を入力画像tのすべての画素ブロックについて行うことで、画素ブロックごとにオプティカルフローが算出されたオプティカルフロー画像が生成される。
なお、本実施形態では、シティブロック距離Ck,lの演算時間を短縮するため、前記ラスタ走査を入力画像t−1の全域に亘って行う代わりに入力画像t−1上に投影された入力画像t上の画素ブロックを含む一定範囲の領域についてのみ行うように構成されている。
また、入力画像t上の画素ブロックが、建物の壁や道路表面等が撮像されていて16個の画素間に輝度値の差が少なく特徴に乏しい画素ブロックである場合には、入力画像t−1上に似たような輝度特性を有するブロックが多数存在するため、前記(1)式に従って対応するブロックが見出されたとしてもマッチングを誤っている可能性が残る。
そこで、本実施形態では、下記の2条件を満たす場合のみ前記マッチング処理で算出されたフローベクトルFに信頼性があり、そのフローベクトルFを入力画像t上の画素ブロックに対応するオプティカルフローとする。また、2条件のいずれかを満たさない場合はフローの信頼性が低いとしてその画素ブロックのオプティカルフローを0とするようになっている。
(条件1)その画素ブロックの前記シティブロック値Ck,lの最小値Cminがあらかじめ設定された閾値Ca以下である。
(条件2)その画素ブロックを構成する16個の画素の最大輝度値と最小輝度値との差があらかじめ設定された閾値At以上である。
従って、本実施形態では、画像処理部3は、まず、入力画像tを画素ブロックに分割した後、画素ブロックが条件2を満たすか否かを判断して、条件を満たさない場合にはその画素ブロックに関してはマッチング処理を行わず、その画素ブロックに大きさ0のオプティカルフローを割り当てる。また、画像処理部3は、条件2を満たす画素ブロックであっても、条件1を満たさない場合、すなわちシティブロック距離Ck,lが閾値Caより大きいである場合にはマッチングを誤っている可能性が高く信頼性が低いからその画素ブロックに大きさ0のオプティカルフローを割り当てるようになっている。
本実施形態では、オプティカルフロー画像は、このようにして画素ブロックごとに算出されたオプティカルフローの大きさ、すなわちフローベクトルFの長さを各画素ブロックの階調値に変換した画像として生成されるようになっている。前述した大きさ0のオプティカルフローが割り当てられている画素ブロックは階調値が0である。
図8は、図2に示した入力画像tおよび図示を省略した入力画像t−1に基づいて生成されたオプティカルフロー画像を示す図である。図8における斜線部分は階調値が0の画素ブロック部分であり、白抜き部分は0でない階調値を有する画素ブロック部分である。なお、白抜き部分は画素ブロックごとにオプティカルフローの大きさに対応する階調値を有しており、実際のオプティカルフロー画像では濃淡が色分けされている。
図8を図2と比較して分かるように、図中Aで示された部分は対向車両のトラックの先頭部分に対応し、図中Bで示された部分は樹木の葉の部分に対応している。また、図中Cで示される部分は、主に道路表面であり、画素ブロックの階調値が0とされている。
前述したように、画像処理部3は、このようにして生成したオプティカルフロー画像と入力画像t、t−1、t−2とを処理プログラムに入力して出力画像を形成するようになっている。なお、処理プログラムへの入力の際、入力画像とオプティカルフロー画像との解像度をあわせるために、オプティカルフロー画像の1つの画素ブロックを同一の階調値を有する16個の画素として処理するようにしてもよいが、本実施形態では、処理プログラムにおける演算速度を向上させるために入力画像t、t−1、t−2をそれぞれオプティカルフロー画像の解像度にあわせるように圧縮処理した画像を用いて処理を行うようになっている。
画像処理部3における処理プログラムによる画像処理の結果、図9に示すような出力画像が形成される。なお、図9の出力画像においては、白抜きで表示されている画素部分が対向車両として検出された部分であり、0でない階調値を有する画素として示されている。また、斜線部分は対向車両が検出されない部分として輝度値0で表示されている。
また、本実施形態では、図10に示すように、前記出力画像が表示部6のモニタに表示されている入力画像tに重ね合わせて表示されるようになっている。その際、図9の白抜きで示された検出部分が赤色(図中では斜線で示す)に着色されて表示されるようになっている。
なお、入力画像tと出力画像との重ね合わせ表示の際、処理プログラムの出力画像に対して、図11に示すようなマスクフィルタによる画像処理を行うように構成することも可能であり、例えば、図10の車両フロント部の着色部分や画像上方の木の着色部分は不必要な着色部分であるから、マスクフィルタを用いて画像処理を行い、それらの部分の着色を表示しないように構成することも可能である。
また、得られた出力画像の情報を、表示部6のモニタ等に表示するとともにあるいは表示する代わりに自車両を制御する制御装置等に送信して、危険回避のための自動制御等に用いるように構成することも可能である。
次に、本実施形態の画像処理装置1の処理プログラム形成部5について説明する。処理プログラムは、人為的に構築されて画像処理部3における画像処理に用いられることも可能である。図3に示したような木構造状の処理プログラムにおいて、例えば、図4や図5に示したような1入力或いは2入力の画像フィルタを最大40個の範囲で任意に組み合わせ、それに入力画像t、t−1、t−2およびオプティカルフロー画像を任意の位置で入力する木構造状の処理プログラムについて全探索により、すなわち人為的にすべての組み合わせを生成して最善の結果が得られる処理プログラムを構築することも可能である。
本実施形態では、画像処理部3に接続された処理プログラム形成部5において、遺伝的プログラミングの手法により処理プログラムが自動的に形成されるようになっている。なお、本実施形態では、処理プログラムは、撮像装置21による撮像と同時並行的に画像処理部3で行われる画像処理に先行して、あらかじめ処理プログラム形成部5で形成し、メモリ4に記憶させておくようになっている。
図12は、処理プログラム形成部の構成を示すブロック図であり、処理プログラム形成部5は、初期個体生成手段51と、適応度評価手段52、56と、親選択手段53と、交叉手段54と、突然変異手段55と、終了判定手段57とを備えている。
初期個体生成手段51は、入力部7からの処理プログラム形成指示に応じて、図3に示したような木構造状の処理プログラムを、設定された前記kおよびMの値の範囲内でランダムに一定数生成させるように構成されている。本実施形態では、初期個体として処理プログラムを100個体生成させるようになっている。
処理プログラムをランダムに生成する規則として、本実施形態では、初期個体のみならず最適化された処理プログラムが得られるまでの進化過程において木構造状の処理プログラムを構成するノードのうち画像フィルタ、すなわち非終端記号の数が最大でも40を超えないように設定されている。なお、画像フィルタは、図4や図5に示した画像フィルタの中からランダムに選択されるようになっている。また、選択される画像フィルタには、図4や図5に示した各種画像フィルタのほか、図11に示したようなマスクフィルタを含めることも可能である。
また、前述したように、本実施形態では、k=2、M=1と設定されており、一定の時刻tからさかのぼって1/30秒の時間間隔をおいて撮像された連続する3フレーム分の入力画像t、t−1、t−2の中から処理プログラムに入力すべき入力画像が任意に選択されるようになっている。すなわち、入力画像t、t−1、t−2の3種類を処理プログラムの入力画像としてすべて用いる必要はなく、初期個体の中には、例えば、入力画像tと入力画像t−2の2種類、或いは入力画像t−1だけしか用いないような処理プログラムが含まれることも許容される。
なお、本実施形態では、終端記号、すなわち木構造状の処理プログラムに入力される画像のうちの少なくとも1つはオプティカルフロー画像であるという制限が設けられている。
初期個体生成手段51には、適応度評価手段52が接続されており、初期個体生成手段51で生成された各処理プログラムの初期個体が適応度評価手段52に送信されるようになっている。
適応度評価手段52では、前述したようにランダムに生成された100個体の各処理プログラムに対して入力画像t、t−1、t−2及びオプティカルフロー画像を入力して出力画像を形成するシミュレーションがそれぞれ実行され、シミュレーションにより得られた出力画像と目標画像とが比較されて各処理プログラムの適応度Eが下記(2)式に基づいてそれぞれ算出されるようになっている。
ここで、入力画像t、t−1、t−2にはあらかじめシミュレーション用に撮像された図2に示したような入力画像が用いられ、オプティカルフロー画像には、前述した要領で入力画像tおよび入力画像t−1から形成されたオプティカルフロー画像が用いられる。
また、目標画像とは、最適化された処理プログラムが出力すべき画像をいい、入力画像tに基づいて人為的に形成される。本実施形態では、処理プログラムの目的が自車両前方の風景画像の中からの対向車両の抽出であるから、例えば、図2に示した入力画像tの中から対向車両であるトラックに相当する画素のみを輝度値255の白抜きにして抽出領域とし、それ以外の画素を輝度値0の非抽出領域とした図13に示すような画像が目標画像として形成され、シミュレーションに先立ってあらかじめ適応度評価手段52に入力される。
また、重み画像とは、出力画像(O)と目標画像(T)との距離|O−T|を画素ごとに重み付けするための重みが画素ごとに定義された画像をいい、画素ごとの重みは、構築すべき処理プログラムの目的により適宜決められる。通常、出力画像が目標画像と一致することが強く求められる画素領域では大きな値が設定され、出力画像と目標画像との一致が強く要求されない画素領域では小さな値が設定される。
本実施形態では、対向車両を抽出し、その他のものは抽出しないようにすることが目的であるため、出力画像は、目標画像の抽出領域においても非抽出領域においてもともに目標画像との一致が強く要求される。しかし、重みを全画像において同じ値に設定すると、出力画像における対向車両が占める画素領域、すなわち抽出領域の面積割合がその他の画素領域、すなわち非抽出領域の面積割合よりも小さいため、適応度評価における非抽出領域での一致度の寄与が大きくなりすぎる可能性がある。
そのため、本実施形態では、図14に示すように、重み画像を図13に示した目標画像と同様の画像とし、抽出領域の重みと非抽出領域の重みの比がそれぞれの面積比の逆数の比、すなわち、それぞれの面積比が32:256であるから重みの比が1/32:1/256になるように重みWが設定されている。重み画像は、通常、目標画像の形成にあわせて形成され、目標画像とともにシミュレーションに先立ってあらかじめ適応度評価手段52に入力される。
なお、抽出領域や非抽出領域においてさらに細かく重みをするなど、本実施形態の方法以外の方法で重み画像を形成することも可能である。
また、学習セットとは、入力画像、オプティカルフロー画像、目標画像および重み画像を組み合わせて構成されるセットのことであり、本実施形態では、この学習セットを1セットだけでなく複数セット用いて処理プログラムのシミュレーションを行うように構成されている。
すなわち、例えば、図15に示すように、時刻tにおける複数種類の入力画像t、t−1、t−2とそれに対応するオプティカルフロー画像、目標画像および重み画像よりなる第1学習セットとともに、時刻t以前の時刻taにおける入力画像ta等の同様の第2学習セット、および時刻t以降の時刻tbにおける入力画像tb等の同様の第3学習セットの計3セット(この場合は(2)式でN=3)が前記と同様にしてシミュレーションに先立ってあらかじめ形成され適応度評価手段52に入力される。そして、適応度評価手段52では、100個体生成された各処理プログラムごとに1セットずつ計3回のシミュレーションが行われ、それらの結果を(2)式に代入して適応度Eが算出されるようになっている。
適応度評価手段52には、親選択手段53が接続されており、適応度評価手段52で適応度Eが計算された各処理プログラムがそれぞれの適応度Eに対応付けられて親選択手段53に送信されるようになっている。
親選択手段53では、まず、送信されてきた100個体の処理プログラムのうち、適応度Eが最大の処理プログラムのエリート保存を行うようになっている。親選択手段53は、エリートとした処理プログラムのコピーを処理プログラムの集団に残すと同時に、処理プログラムをRAM等に保存して、以下の親選択や交叉、突然変異から隔離するようになっている。
親選択手段53は、エリートのコピーを含む100個体の各処理プログラムに対して適応度Eに基づいてルーレット選択や期待値選択、ランキング選択、トーナメント選択等の方法で次世代に残すべき100個体の処理プログラムの選択および増殖を行うように構成されている。また、本実施形態では、トーナメント選択により100個体を選択するようになっている。
親選択手段53で選択、増殖された100個体の処理プログラムは、次の交叉手段54に送信されるようになっている。
交叉手段54では、図16に示すように、親選択手段53から送られてきた処理プログラムを2個体ずつ対にして、対とされた親プログラム1、2ごとにランダムに選ばれた交叉部分を所定の頻度で互いに交叉させて、子プログラム1、2が生成されるように構成されている。
その際、2つの子プログラムの中に非終端記号の数が40を超えるものが生成される場合には、その交叉は取り消され、再度、元の親プログラム1、2で交叉部分がランダムに選ばれて交叉が所定の頻度で行われるようになっている。また、生成された子プログラム1、2の一方の終端記号にオプティカルフロー画像が含まれなくなる場合にもその交叉が取り消され、再度同じ親プログラム1、2で交叉が所定の頻度で行われるようになっている。
本実施形態では、交叉手段54においては、図16に示したような1点交叉が行われるように構成されているが、この他にも、例えば、多点交叉や一様交叉等の方法で交叉させるように構成することも可能である。
交叉手段54で生成された100個体の子プログラムである処理プログラムは、次の突然変異手段55に送られるようになっている。
突然変異手段55では、処理プログラムごとに所定の割合でノードの変異、挿入、欠失等を発生させるように構成されている。その際、ノードの挿入により処理プログラム中の非終端記号の数が40を超える場合には、その挿入は行われず、また、入力画像t等の終端記号と画像フィルタである非終端記号との変異は禁止されている。
さらに、終端記号の変異によりオプティカルフロー画像が入力画像等に変異して処理プトグラムの終端記号にオプティカルフロー画像が含まれなくなる場合にもその変異が禁止されるようになっている。この他にも、例えば、転座や重複等の突然変異を行うように構成することも可能であり、その際、適宜適切な制限が加えられる。
突然変異手段55には、適応度評価手段56が接続されており、突然変異手段55で生成された100個体の処理プログラムは適応度評価手段56に送られるようになっている。
適応度評価手段56では、突然変異手段55から送信されてきた100個体の処理プログラムに対して前述した適応度評価手段52と同様の処理が行われるようになっている。すなわち、適応度評価手段52で用いたものと同じ第1〜第3学習セットが用いられて各処理プログラムについてシミュレーションが行われ、前記(2)式に基づいてそれぞれ適応度Eが計算されるように構成されている。
適応度評価手段56には、終了判定手段57が接続されており、適応度評価手段56で適応度Eが計算された各処理プログラムと前記親選択手段53でエリート保存された前世代の適応度Eが最大の処理プログラムとの計101個の処理プログラムが終了判定手段57に送られて、処理プログラム形成部5における処理プログラム形成を終了するか否かの判定を受けるようになっている。
本実施形態では、終了判定手段57は、進化過程の世代数があらかじめ設定された終了世代数Geに達したかどうかを判定し、終了世代数Geに到達したと判定した場合にはその時点で適応度Eが最大の処理プログラムを解として画像処理部3に出力して、プログラム形成を終了させるように構成されている。
また、終了判定手段57は、世代数が終了世代数Geに到達していない場合には、各処理プログラムを前記親選択手段53に送り、前述した処理手順を繰り返すようになっている。なお、この場合、前記親選択手段53には、101個体の処理プログラムが送信されるが、親選択手段53では、エリート保存が行われた後、101個体の処理プログラムに対して選択、増殖を行い、100個体の処理プログラムを選択するようになっている。
終了判定手段57では、この他にも、例えば、あらかじめ一定の目標適応度Eqを設定しておき、各処理プログラムの中に適応度Eが目標適応度Eqに達した処理プログラムがあるか否かを判定し、目標適応度Eqに達した処理プログラムがあればその処理プログラムを解として画像処理部3に出力するように構成されてもよい。また、終了判定手段57が各処理プログラムの適応度の最大値を記憶するように構成し、適応度の最大値が所定の世代数経過してもその間変化しない場合、すなわち、適応度の最大値が停滞した場合にはその世代で前記手順を終了し、その最大の適応度を有する処理プログラムを解として画像処理部3に出力するように構成することも可能である。
また、前述した処理プログラム形成部5における最適化された処理プログラムの進化過程はごく一般的なものであり、この他の進化過程を採用することも可能である。近年、遺伝的プログラミングの基礎となる遺伝的アルゴリズムにおける世代交代モデルとして種々のモデルが提案されており、それらについては、例えば、佐藤浩、外2名、「遺伝的アルゴリズムにおける世代交代モデルの提案と評価」、人工知能学会誌、社団法人人工知能学会、1997年、第12巻、第5号、p.734〜744等にまとめられている。また、本論文で提案されているMGG(procedure Minimal Generation Gap)の手法を本発明に応用することも可能である。
処理プログラム形成部5では、以上の進化過程に基づいて最適化された処理プログラムが形成されるが、得られた処理プログラムには、いわゆる過学習と呼ばれる現象が見られることがある。つまり、本実施形態の場合で言えば、対向車両一般を抽出する代わりに、例えば、白色系統の車両は抽出せずに濃い色の車両のみを抽出してしまうようなより抽出対象が限定された処理プログラムが得られてしまう場合がある。
このような過学習の発生を避けるため、本実施形態では、前記適応度評価手段52、56での適応度評価において、前記(2)式で算出された適応度Eからさらに下記(3)式に基づいて過学習制限を考慮した適応度E´を算出するように構成されている。従って、本実施形態では、親選択手段53や終了判定手段57においては、この過学習制限を考慮した適応度E´が比較され、参照される。
ここで、係数a、bはともに正の値をとる。(3)式によれば、過学習制限を考慮した適応度E´は、処理プログラムにおけるノード数n(Node)が大きいほど小さい値をとるように算出され、また、2入力画像フィルタのノード数m(2input-node)が大きいほど大きな値をとるように算出される。
過学習制限を考慮した適応度E´が前記(3)式のように構成される理由は、処理プログラムの木構造のノード数が大きいほど抽出する対象がより限定されて過学習の状態になり易く、ノード数が小さいほどより一般的な対象(本実施形態では歩行者全般)を抽出できるようになり、汎用性が向上するためである。
また、このようにノード数が大きいほど適応度E´が小さくなるように構成されると、今度は、処理プログラムの木構造における2入力画像フィルタの割合が小さくなり、例えば、本実施形態のように入力画像として3種類の入力画像t、t−1、t−2およびオプティカルフロー画像の入力を許しても、実際にはより少ない種類の入力画像しか入力しない処理プログラムが得られる傾向が強くなるため、2入力画像フィルタのノード数が大きいほど適応度E´が大きな値をとるように構成されている。
なお、係数a、bはそれぞれノード数の適応度E´に対する割合および2入力画像フィルタのノード数の適応度E´に対する割合を表すが、この係数a、bを前記処理プログラム形成部5における遺伝的プログラミングの進化過程の世代数に応じて変化するように構成することも可能である。
例えば、世代数が小さい段階では係数a、bがともに大きな値をとり世代とともに小さな値をとるようにすれば、ノード数が大きな処理プログラムが淘汰され易くなり(aの効果)、2入力画像フィルタを多く含む処理プログラムが生き残る可能性が高くなる(bの効果)。また、逆に、係数a、bを世代とともに大きくするようにすれば、進化初期に得られた学習セットに特化した処理を進化の後半でよりシンプルな形にしていくことが可能となる。さらに、進化が進んで適応度の最大値の停滞が生じたときに、人為的に係数a、bの値を変化させることで、より最適化された処理プログラムが得られる可能性が高くなる。
処理プログラム形成部5で形成された最適化された処理プログラムは、画像処理部3に送信され、メモリ4に記憶されるようになっている。また、処理プログラム形成部5で形成された処理プログラムの一例を図17に示す。この場合、非終端記号、すなわち、画像フィルタの数は40、終端記号のうち入力画像の数は11、オプティカルフロー画像の数は3、出力画像の数は1になっている。なお、図中、OFはオプティカルフロー画像、t、t−1、t−2はそれぞれ入力画像t、t−1、t−2を表す。
次に、本実施形態の画像処理装置の作用について説明する。
画像処理装置1では、まず、処理プログラムの形成が行われる。処理プログラムの形成段階においては、処理プログラム形成の基礎となる自車両前方の風景画像を撮像装置21で動画像、すなわち、1/30秒ごとに撮像した複数のフレームとして撮像し、画像処理部3を介してメモリ4に記憶させる。本実施形態では、抽出対象が対向車両であるから、対向車両が撮像された動画像を記憶させておく。
続いて、処理プログラムに入力する入力画像の数とフレーム間隔、すなわち前記kおよびMを設定する。そして、本実施形態のようにk=2、M=1と設定した場合には、メモリ4に記憶された各フレームの中から図6(A)に示したように入力画像t、t−1、t−2となるべき対向車両が撮像されている適当な3つの連続するフレームを選択し、入力画像t、t−1、t−2として処理プログラム形成部5に入力する。
また、図2に示したような選択した入力画像tに基づいて、図13および図14に示したような目標画像および重み画像を作成して処理プログラム形成部5に入力する。本実施形態では、目標画像およぶ重み画像の作成は、表示部6のモニタ等に入力画像tを表示させ、入力部7のキーボードやマウス等を操作して手動で行う。また、画像処理部3に入力画像t、t−1を入力して図8に示したようなオプティカルフロー画像を生成させ、処理プログラム形成部5に入力する。オプティカルフロー画像を手動で生成してもよい。
また、本実施形態では、前述したように複数の学習セットを用いて最適化された処理プログラムを生成するようになっているから、図15に示したように前記入力画像tに対応する時刻t以前の時刻taにおける入力画像ta等の同様の第2学習セット、および時刻t以降の時刻tbにおける入力画像tb等の同様の第3学習セットを形成して処理プログラム形成部5に入力する。
そして、処理プログラム形成部5に初期個体生成手段51における初期個体数の設定値および終了判定手段57における終了世代数を入力する。処理プログラム形成部5は、図4や図5に示した各種画像フィルタを用いて処理プログラムの初期個体を生成し、前述した遺伝的プログラミングにおける進化過程で親選択や交叉、突然変異等を生じさせ、適応度評価を行う。このようにして図17に示したような最適化された処理プログラムが形成される。処理プログラム形成部5は、このようにして形成した最適化された処理プログラムを画像処理部3を介してメモリ4に記憶させる。
処理プログラムを用いた画像処理の実行段階では、画像処理部3は、まず、メモリ4から処理プログラムを読み出してRAMに展開する。画像処理部3は、撮像装置21からの入力画像tを受信すると、入力画像tと入力画像t−1とからオプティカルフロー画像を生成し、オプティカルフロー画像と入力画像t、t−1、t−2とを処理プログラムに入力する。
画像処理部3は、同時に、入力画像tを表示部6に送信してモニタ等に表示させるとともに、入力画像tをメモリ4に一時保存させる。処理プログラムが演算を終了し出力画像を出力すると、画像処理部3は、その結果を表示部6に送信し、図10に示したように、表示部6のモニタに白黒画像として表示されている入力画像tに赤色に着色した出力画像を重ね合わせて表示させる。
以上のように、本実施形態の画像処理装置によれば、画像フィルタを木構造状に組み合わせた処理プログラムに時間間隔をおいて撮像された動画像中の複数の入力画像t、t−1、…、t−kを入力することで、木構造状の処理プログラムを構成する差分フィルタ等の各種画像フィルタの機能が有効に発揮され、動画像中から特定の対象を効果的に抽出することができる。
このように、従来同一の静止画像を入力するように構成されてきた木構造状の処理プログラムを用いたACTITの手法が、動画像を用いた場合にも適用可能であることが本発明により判明され、ACTITの手法を動画像からの特定対象の抽出にも拡張することが可能となった。
また、入力画像として、撮像装置により撮像された複数の風景画像のほかに、それらの画像から生成したオプティカルフロー画像を入力するように構成することで、動画像中で特異なフローを示す移動対象に対応する画像上の領域をより明確化した状態で処理プログラムに与えることができる。そのため、動画像中から抽出する特定対象が移動物体である場合に特に的確に精度良く特定対象を抽出する処理プログラムを形成することが可能となる。
図18に、車両前方風景を撮像した未学習の動画像に本実施形態で学習した最適化された処理プログラムを適用した結果を示す。このように、本実施形態の画像処理装置によれば、処理プログラムの形成に用いられなかった未学習の動画像中からも移動物体を的確に抽出することが可能となる。
さらに、処理プログラム形成部において遺伝的プログラミングにより処理プログラムを自動形成させるように構成すれば、処理プログラムを容易に得ることができる。また、目標画像および重み画像を変更することにより、抽出すべき特定対象を容易に変更することができる。
すなわち、従来のように特定対象が変更されるごとにその抽出のための処理プログラムを手作業で構築する必要がなく、目標画像と重み画像とを変更して処理プログラム形成部に入力し、オプティカルフロー画像を生成して入力するだけで、前述した遺伝的プログラミングを用いた方法をそのまま使って同じ手順で処理プログラムを構築することができる。そのため、処理プログラムを容易に得ることができると同時に非常に汎用性が高い画像処理装置となる。
また、処理プログラムの入力画像としてオプティカルフロー画像を入力するように構築することで、図19に示すように、入力画像としてオプティカルフロー画像を用いない場合、すなわち入力画像t、t−1、…、t−kのみを入力する場合と比較して、遺伝的プログラミングにおける処理プログラムの適応度がより迅速に向上するという副次的な効果があることが確認された。これも、前述したように動画像中で特異なフローを示す移動対象に対応する領域をより明確化したオプティカルフロー画像を処理プログラムに入力することで、処理プログラムが抽出領域を有する目標画像に近似した出力画像を形成し易くなるためと考えられる。
なお、例えば、図20に示すように、本実施形態で得られた処理プログラムを複数組み合わせて大規模な処理プログラムとすることにより、本実施形態の効果をさらに効果的に発揮させることが可能となる。本実施形態では、実際には、同一の入力画像t、t−1、t−2、オプティカルフロー画像、目標画像および重み画像から別個に3つの最適化された処理プログラムを形成し、それらの出力画像をそれぞれ入力画像tに重ね合わせて表示することで抽出の確度を高めるように構成されている。
また、本実施形態のように動画像中から対向車両を抽出する処理プログラムと、例えば先行車両を抽出する処理プログラムや歩行者を抽出する処理プログラム等の他の目的を処理するために形成された処理プログラムとを組み合わせることで、より広範な目的を達成できる大規模な処理プログラムを得ることができる。
さらに、例えば、図11(A)および図11(B)に示したマスクフィルタと組み合わせて図21に示すような大規模な処理プログラムを構成することもできる。このように構成すれば、出力画像の下半分および上半分に処理プログラム1および処理プログラム2による画像処理の結果を表示して1つの出力画像とすることが可能となる。
また、例えば、本実施形態の画像処理装置と距離測定装置とを組み合わせることにより、本実施形態の画像処理装置で対向車両を特定し、距離測定装置で自車両と対向車両との距離を測定することにより、異常接近の際に自動警報を発したり、走行制御によって衝突を回避したりすることが可能となる。また、距離測定装置についても車両前方全域の対象物との距離を測定する必要がなくなり負担が軽減される。
本実施形態の画像処理装置は、車両に搭載するだけでなく、例えば、人工知能型ロボットや監視装置等に搭載することも可能であり、例えば、ロボットが搭載したカメラで環境を観察しながら他の移動物体を発見し、計測し、それに対するロボットの行動を決定したりするために用いることができる。また、監視装置が移動物体を発見して監視したり、警報を発したりするように構成することも可能となる。
[第2の実施の形態]
第2の実施形態では、処理プログラムに入力する入力画像t、t−1、…、t−kとして、前記第1の実施形態で述べたように撮像装置21で撮像した自車両の前方風景の撮像画像をそのままあるいは圧縮処理した画像を入力する代わりに、変換処理を行った後の画像を入力するように構成されている点で第1の実施形態と異なる。
そのため、本実施形態では、オプティカルフロー画像も変換処理後の入力画像t、t−1に基づいて生成され、処理プログラムに入力されるようになる。また、処理プログラム形成部5で遺伝的プログラミングの手法を用いて最適化された処理プログラムを形成する際に用いられる目標画像および重み画像も変換処理後の入力画像に対応した画像が用いられる。
なお、本実施形態では、変換処理後の入力画像を変換画像という。また、本実施形態に係る画像処理装置1や処理プログラム形成部5、木構造状の処理プログラムの構成は図1や図12、図3に示した第1の実施形態における構成と同様であり、画像処理装置1における処理内容および処理プログラム形成部5における遺伝的プログラミングの処理内容も同様であるので説明を省略し、記号や符号についても第1の実施形態と同一のものを用いて説明する。
また、本実施形態においても、主にk=2、M=1の場合、すなわち、図6(A)に示したように現在の時刻tの入力画像tとその直前の連続する2フレーム分の入力画像t−1、t−2とを変換画像t、t−1、t−2として処理プログラムに入力する場合について述べる。
本実施形態では、画像処理装置1の画像処理部3は、撮像装置21から送信されてきた入力画像t、t−1、t−2を擬似的に上空から見た状態の画像にそれぞれ変換するよう、すなわち、視点位置を上方に設定するよう画像変換を行うよう構成されている。以下、変換の原理について説明する。
図22は、撮像装置における画像の撮像原理について説明する図である。図2に示したような入力画像tは、図22に示す撮像原理に基づいて撮像される。すなわち、撮像装置21の焦点距離をf、撮像装置21の取付高さをHとし、水平な道路面上の点Rまでの距離をDとする。また、入力画像tにおける消失点のj座標をS、入力画像tに撮像された前記点Rのj座標をYとする。gは画素間の距離と実際の距離との換算比である。
このとき、下記(4)式が成り立つ。
H/D=g(Y−S)/f …(4)
また、(4)式を変形すると、
D=Hf/g(Y−S) …(5)
が得られる。
つまり、入力画像tを変換の基礎画像として、入力画像tにおける点Rのj座標Yから前記(5)式に基づいてDを求めることにより、実際の道路面上の点Rまでの距離Dを求めることができる。また、距離D方向、すなわち自車両から見た場合の前後方向の距離Dのみならず、自車両から見た場合の左右方向の距離(以下、距離dという。)についても同様に変換することができる。
そして、入力画像tにおける点Rを表す画素の階調値を、左上端を原点とし横軸を左右方向の距離d、縦軸を前後方向の距離Dとした変換後のd−D平面上に表すことにより、擬似的に上空から見た状態に各画素に階調値を有する変換画像tを得ることができる。
なお、この場合の変換は、道路面が水平であり、かつ、入力画像tに映っている画像は実際には高さを有するものであるがすべて道路面上にあると仮定して行われる。このように変換にはかなり粗い仮定が含まれており、本発明ではその意味で「擬似的」という表現を用いている。
しかし、このような擬似的に上空から見た状態の変換画像を処理した結果を、前記(5)式の逆変換である
Y=S+Hf/gD …(6)
の関係に従って変換し直すことで、図2に示した入力画像のように自車両の前方を撮像した状態に完全に復元することができる。
図23は、図2の入力画像tを擬似的に上空から見た状態に変換されて形成された変換画像tを示す図である。図2と比較して分かるように、変換画像tは、道路を上空から見たような画像になる。しかし、前述したように高さのある物体も道路面上に張り付いているものとして変換するため、図23右側の対向車両のトラックや同図左側の自転車や人物、家屋等が長く引き伸ばされたような画像になっている。なお、図23の右下隅および左下隅の部分は入力画像tから変換されない部分である。
このような変換画像tと図示しない変換画像t−1とから第1の実施形態と同様にしてオプティカルフロー画像を生成すると、オプティカルフロー画像は図24に示すような画像になる。なお、図8におけるオプティカルフロー画像と同様に、図24に示したオプティカルフロー画像においても白抜きで示された0でない階調値を有する画素ブロック部分は、実際にはオプティカルフローの大きさに対応する階調値で濃淡に色分けされている。
画像処理部3における処理プログラムの実行段階では、画像処理部3は、撮像装置21から送信されてきた入力画像tを変換画像tに変換し、変換画像tとすでに変換されている変換画像t−1とからオプティカルフロー画像を生成し、変換画像t、t−1、t−2およびオプティカルフロー画像を処理プログラムに入力する。
そして、処理プログラムからの出力画像に対して前記(5)式の逆変換、すなわち、前記(4)式を変形した
Y=S+Hf/gD …(6)
により変換することで、図2に示した元の入力画像tに対応した出力画像を形成するようになっている。図25は、このようにして得られた出力画像を示す図であり、図26は、この出力画像と元の入力画像とを重ね合わせて表示したモニタ上の画像を示す図である。
また、処理プログラムの形成段階においては、図23に示した変換画像tを基礎に図27のような目標画像および図28のような重み画像が作成され、処理プログラム形成部5に入力される。また同時に変換画像t、t−1、t−2およびオプティカルフロー画像が入力される。そして、第1の実施形態と同様に遺伝的プログラミングにより最適化された処理プログラムが形成される。
このようにして形成された最適化された処理プログラムによる処理の結果は図25および図26に示したとおりであり、車両前方風景を撮像した未学習の動画像に対して適用すると、図29に示すような結果が得られる。また、処理プログラム形成部5での処理プログラムの進化過程における適応度の変化は図30に示すような推移をたどる。
以上のように、本実施形態の画像処理装置1によれば、前記第1の実施形態と同様の効果を得ることができる。
また、図30に示したように、本実施形態に係る画像処理装置1の処理プログラム形成部5における遺伝的プログラミングでは、処理プログラムの適応度が第1の実施形態の場合やオプティカルフロー画像を用いない場合と比較して非常に速やかに向上する。そのため、本実施形態や第1の実施形態のように、処理プログラム形成部5での遺伝的プログラミングを、終了世代数を指定して行う代わりに目標適応度を設定して行うように構成した場合には、より迅速に目標適応度に達するようになり、最適化された処理プログラムの形成をより短時間で行うことが可能となる。
さらに、第1の実施形態で形成された最適化された処理プログラムを未学習の動画像に適用して得られた図18と、本実施形態の未学習の動画像への適用結果である図29とを比較して分かるように、本実施形態で形成された最適化された処理プログラムでは、対向車両以外を抽出するいわゆる誤抽出が減り、良好な抽出結果が得られている。
これは、処理プログラムにおける対向車両の抽出において、擬似的に上空から見た状態に変換された変換画像t、t−1、t−2および変換画像に基づくオプティカルフロー画像が用いられているため、オプティカルフロー画像におけるフローベクトルによる移動物体の動きの切り出しが非常に明確に行われているためであると考えられる。
すなわち、第1の実施形態のように前方の風景を撮像した入力画像t、t−1から生成されるオプティカルフロー画像と比較して、本実施形態のように擬似的に上空から見た状態の変換画像t、t−1から生成されるオプティカルフロー画像では、自車両の走行状態に起因するフローと撮像装置前方の空間内を移動する物体の動きに起因するフローとを明確に区別でき、オプティカルフロー画像における移動物体の切り出しが明確に行われるようになる。そのため、本実施形態は、特に動画像中から移動物体を抽出するという課題に対して有効かつ精度良く抽出を行うことが可能となる。
そこで、本実施形態の変形例として、オプティカルフロー画像における移動物体と静止物体とのフローの差をより明確にするために、オプティカルフロー画像生成において形成される各画素ブロックについて算出されたフローベクトルF(図7参照)を、さらに撮像装置21の移動平面、すなわち本実施形態では道路面に対するフローに換算してオプティカルフロー画像を生成することも可能である。
具体的に言えば、本実施形態では、入力画像を前述したように擬似的に上空から見た状態の変換画像に変換する。その際、変換画像から生成されたオプティカルフロー画像の各画素ブロックのフローベクトルFには、撮像装置21の移動状態、すなわち本実施形態では撮像装置21が搭載された自車両の走行状態に基づく道路面に対するフローが加算されている。
例えば、自車両が前進している状態で前方風景が撮像されれば、オプティカルフロー画像にはほぼ一様な大きさの下向きのフローが加算された状態でフローベクトルFが算出されている。また、例えば、自車両が左旋回している状態で撮像されれば、オプティカルフロー画像には右向きのフローが加算された状態でフローベクトルFが算出されている。
従って、車速センサやヨーレートセンサ等で自車両の速度やヨーレートを測定して、その測定値に基づいて自車両の走行状態に基づくフローを算出し、図31に示すように、すでに算出されたフローベクトルFから自車両の走行状態に基づくフローを減じることでオプティカルフロー画像の各画素ブロックのフローベクトルFを移動平面に対するフローベクトルFcに換算することができる。
このようにして各画素ブロックについてすでに算出されたフローベクトルFをフローベクトルFcに換算することで、移動物体と静止物体とを明確に区別することが可能となり、修正したオプティカルフロー画像が移動物体を的確に認識可能な画像となる。そのため、このようなオプティカルフロー画像を用いることで、動画像中からの移動物体の抽出をより精度良く行うことが可能となる。
また、本実施形態のさらなる変形例として、本実施形態のように算出したフローベクトルFあるいは換算したフローベクトルFcの大きさに対応する階調値で各画素ブロックを濃淡で色分けしてオプティカルフロー画像を生成する代わりに、算出したフローベクトルFあるいは換算したフローベクトルFcの向きの情報に対応してオプティカルフロー画像を生成することも可能である。
例えば、変換画像t、t−1から算出されたフローベクトルFまたは換算されたフローベクトルFcのj成分、すなわちオプティカルフロー画像における縦方向成分に着目し、j成分が0以下である場合、すなわち自車両から遠ざかる向きである場合にはその画素ブロックの階調値を0とし、j成分が正の値である場合、すなわち自車両に向かう向きである場合にはそのj成分に対応した階調値を画素ブロックに割り当てることにより、対向車両を抽出することに適したオプティカルフロー画像を得ることができる。
特に、前述した道路面に対するフローに換算したフローベクトルFcのj成分に着目すれば、より明確に対向車両を抽出できるようになる。
また、例えば、オプティカルフロー画像が、換算したフローベクトルFcのj成分が負の値である場合にのみ階調値を有するようにすれば、先行車両等の抽出に適したものとなる。また、フローベクトルF、Fcのi成分、すなわちオプティカルフロー画像における横方向成分に着目してオプティカルフロー画像を生成すれば、道路を横断する歩行者等の抽出に適したオプティカルフロー画像を得ることが可能となる。
なお、これらの変形例を第1の実施形態に係る画像処理装置1に適用することも可能である。