以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の画像処理装置は、表面に複数の色が付された色物体が撮像された結果得られた入力カラー画像から、表面に複数の色が付された所定のモデルを認識する画像処理装置において、
前記入力カラー画像から、隣接する同じ色の画素からなる色領域を検出する検出手段(例えば、図2の色領域検出部13)と、
前記検出手段により検出された前記入力カラー画像上の色領域が、前記モデルを撮像した結果得られた基準カラー画像上の色領域が対応する前記モデルの部分に対応する領域であるか否かを判定し、その判定結果に基づいて、前記入力カラー画像の前記色物体が前記モデルであるか否かを判別する認識手段(例えば、図2の認識部15)と
を備える画像処理装置。
前記認識手段は、
前記モデルの同じ部分に対応している可能性がある前記基準カラー画像上の色領域と前記入力カラー画像上の色領域の組を検出し(例えば、図14に示す図2のマッチング部14のマッチング処理)、
同一の姿勢パラメータで姿勢変換可能な前記基準カラー画像上の色領域と前記入力カラー画像上の色領域からなる前記組が所定の数以上存在するか否かを判定し、その判定結果に基づいて、前記入力カラー画像の前記色物体がモデルであるか否かを判別することができる(例えば、図18に示す図2の認識部15の認識処理)。
前記姿勢パラメータは、回転行列(例えば、式(6))または並進(例えば、式(7))であるようにすることができる。
前記所定の数は、前記基準カラー画像上の色領域の数に対応する数(例えば、その数の60%以上の数)(図18のステップS82)であるようにすることができる。
前記認識手段は、前記入力カラー画像の前記色物体がモデルであると判別したとき、前記姿勢パラメータに基づいて前記入力カラー画像の前記色物体の位置を検出することができる(例えば、図2の認識部15の位置検出処理)。
前記認識手段は、同じ色、またはアスペクト比の差が一定以内の前記基準カラー画像上の色領域と前記入力カラー画像上の色領域を、前記モデルの同じ部分に対応している可能性がある前記組とすることができる(例えば、図14のステップS54)。
前記認識手段は、各前記組の前記基準カラー画像上の色領域と前記入力カラー画像上の色領域間の姿勢変換における変換パラメータの姿勢空間への投票を行い、最も多い投票に対応する変換パラメータで前記基準カラー画像上の色領域と前記入力カラー画像上の色領域との姿勢変換が可能な前記組の数が所定の数以上存在するか否かを判定し、その判定結果に基づいて、前記入力カラー画像の前記色物体がモデルであるか否かを判別することができる(例えば、図18のステップS75乃至ステップS82)。
本発明の一側面の画像処理方法またはプログラムは、
表面に複数の色が付された色物体が撮像された結果得られた入力カラー画像から、表面に複数の色が付された所定のモデルを認識する画像処理方法において、または表面に複数の色が付された色物体が撮像された結果得られた入力カラー画像から、表面に複数の色が付された所定のモデルを認識する画像処理をコンピュータに実行させるプログラムにおいて、
前記入力カラー画像から、隣接する同じ色の画素からなる色領域を検出する検出ステップ(例えば、図7のフローチャート)と、
前記検出ステップの処理で検出された前記入力カラー画像上の色領域が、前記モデルを撮像した結果得られた基準カラー画像上の色領域が対応する前記モデルの部分に対応する領域であるか否かを判定し、その判定結果に基づいて、前記入力カラー画像の前記色物体が前記モデルであるか否かを判別する認識ステップ(例えば、図18のフローチャート)とを含む。
図1は、本発明を適用した画像処理装置の構成例を示している。この画像処理装置は、表面に複数の色が付された色物体を被写体として撮像し、その結果得られた画像から、その被写体が予め登録された、表面に複数の色が付された所定の色物体(以下、モデルと称する)であるか否かを判定し、その判定結果に基づいて、モデル認識を行う。この画像処理装置は、例えば、ロボットの制御装置として利用される。
ズームレンズ1Aなどのレンズを含むレンズブロック1は、レンズドライバ2により駆動され、入射した光(被写体の像を含む映像)を、撮像センサ3に入力させる。
撮像センサ3は、撮像素子ドライバ4の制御に従って、入力された光像を光電変換して撮像信号を生成し、カメラ信号処理部5に供給する。
カメラ信号生成部5は、撮像センサ3から入力された撮像信号に対し、サンプリング処理やYC分離処理などを行い、その結果得られた輝度信号および色信号などをメモリ6に出力する。
メモリ6は、カメラ信号生成部5から供給された映像信号を一時的記憶するとともに、画像処理部7からの読み出しに応じて、逐次それをフレーム単位で画像処理部7に供給する。
画像処理部7は、メモリ6から読み出した映像信号に対応する画像(以下、入力画像と称する)に対して後述する画像処理を施し、入力画像の被写体が、予め登録されたモデルであるか否かを判別し、モデル認識を行う。画像処理部7は、そのモデル認識の結果を、制御部9に供給する。
カメラコントローラ8は、撮像に関する各部を制御する。
制御部9は、各部を制御する。
図2は、画像処理部7の構成例を示している。
画像入力部11は、メモリ6から読み出された映像信号を入力し、色抽出部12に供給する。
色抽出部12は、記憶部21に予め記憶されている色テーブル(後述)を元に、画像入力部11から供給された映像信号に対応する入力画像を構成する各画素の色の種類を判別するとともに、入力画像の各画素の位置に対応する位置に判別した色の色IDが設定された、入力画像と同じ画サイズの画像(以下、色ID画像と称する)を生成し、色領域検出部13に供給する。
色領域検出部13は、色抽出部12から供給された色ID画像について、同じ色の隣接する画素をひとまとまりにして1つの領域(以下、色領域と称する)を形成し、形成した各色領域の大きさ等の情報(以下、適宜、色領域情報と称する)を、マッチング部14に供給する。
マッチング部14は、色領域検出部13から供給された入力画像上の色領域の色領域情報と、記憶部22に予め記憶されているモデルを被写体とした撮像画像(以下、基準画像と称する)上に形成される色領域の色領域情報に基づいて、同じモデルの同じ部分に対応している可能性がある基準画像上の色領域と入力画像上の色領域の組(以下、候補ペアと称する)を検出する。
マッチング部14は、検出した候補ペアの色領域の色領域情報を認識部15に供給する。
認識部15は、マッチング部14から供給された候補ペアの色領域情報に基づいて、各候補ペアの基準画像上の色領域と入力画像上の色領域が、共通する姿勢パラメータで姿勢変換できる関係にあるか否かを判定し、その判定結果に基づいて、モデル認識を行う。
認識部15は、入力画像からモデルを認識することができたとき、すなわち入力画像の被写体がモデルであるとき、その際の姿勢パラメータから入力画像の被写体(すなわち、モデル)の位置を検出し、制御部9に出力する。
次に、画像処理部7の認識処理を構成する、色抽出部12における色抽出処理、色領域検出部13における色領域検出処理、マッチング部14におけるマッチング処理、認識部15における認識処理、および認識部15における位置検出処理の詳細を、順に説明する。
はじめに、色抽出部12における色抽出処理について説明する。
色抽出部12は、例えば入力画像がYUV方式のカラー画像である場合、入力画像の画素の画素値の輝度信号の信号レベルYを示す輝度レベルデータ(以下、入力輝度信号Yと称する)、青色の色信号の色信号レベルUを示す色レベルデータ(以下、入力色信号Uと称する)、および赤色の色信号の色信号レベルVを示す色レベルデータ(以下、入力色信号Vと称する)に基づいて、各画素の色の種類を判別する。
図3は、記憶部21に記憶されている色テーブルの例を示している。この色テーブルでは、各輝度階調(図3の例では、32階調)について、入力色信号Uの上限Umaxと下限Uminおよび入力色信号Vの上限Vmaxと下限Vmin毎に、色(図3の例では8種類の色)のID(以下、色IDと称する)が設定されている。
すなわちこの色テーブルでは、図4に示すように、各輝度諧調について(図4A)、各色の入力色信号Uの上限Umaxと下限Uminおよび入力色信号Vの上限Vmaxと下限Vminによる矩形領域(図4B)毎に、色の種類が指定されている。
次に、図3に示すような色テーブルに基づく色抽出処理について説明するが、ここでは、処理の高速化を図るために、図3に示す色テーブルから、入力色信号Uと入力色信号V用の、入力輝度信号Yの階調に応じた配列を有するルックアップテーブルを生成し、そのルックアップテーブルを参照して、画素値から直接色IDが検出されるようにする。
このルックアップテーブルの生成は、はじめに入力輝度信号Y、入力色信号U、および入力色信号Vがそれぞれ8ビットで表され、入力輝度信号Yが32階調であるとき、32個の項目と256個の項目からなる2次元配列のテーブルが、入力色信号Uと入力色信号V用の2個形成される。各テーブルの要素は、図3の例の場合、8種類の色が想定されているので、8個のビット列とされる。
次に図3の色テーブルから、色ID毎に、諧調i(i=1,2・・・,32)に対応する入力色信号Uの上限Umaxと下限Uminの値、入力色信号Vの上限Vmaxと下限Vminの値、並びに色IDが読み出され、入力色信号U用の2次元配列の要素u_table[i][Umin]乃至u_table[i][Umax]、および入力色信号V用の2次元配列の要素v_table[i][Vmin]乃至v_table[i][Vmax]の色IDに対応する第j番目のビットに1が設定され、それ以外のu_table[i]およびv_table[i]の配列の要素の第j番目のビットには0が設定される。
例えば入力輝度信号Yの階調が5で、(Umin, Umax)=(50, 64)、(Vmin, Vmax)=(129, 154)の範囲は、色ID=3であるので、要素u_table[5][50]乃至u_table[5][64]、および要素v_table[5][129]乃至v_table[5][154]の第3番目のビットには1が設定され、それ以外のu_table[5]およびv_table[5]の配列の要素の第3番目のビットには0が設定される。
このような処理が各色毎に行われる。
このようにして生成されたルックアップテーブルを利用する色抽出処理を、図5のフローチャートを参照して説明する。
ステップS1において、色抽出部12は、例えば入力画像から、左上からラスタに沿った順番で1個の画素を選択する。
ステップS2において、色抽出部12は、ステップS1で選択した画素の入力輝度信号Yの諧調を検出する。例えば入力輝度信号Yが8ビットデータである場合、4ビットを右方向にシフトすることによって、入力輝度信号Yの諧調を求めることができる。
次にステップS3において、色抽出部12は、ルックアップテーブルの、ステップS2で求めた諧調の配列を参照し、ステップS1で選択した画素の入力色信号Uおよび入力色信号Vに対応する色ID(u_table[Y][U]、v_table[Y][V])を読み取り、それらの論理積の結果得られたビット列を、色IDとする。
ステップS4において、色抽出部12は、別途設けた入力画像と同じ画サイズの色ID画像上の、ステップS1で選択した画素の位置に対応する位置に、ステップS3で検出した色IDを設定する。
ステップS5において、色抽出部12は、入力画像のすべての画素を選択したか否かを判定し、選択していない画素がまだ残っていると判定した場合、ステップS1に戻る。すなわち入力画像の次の画素が選択され、その画素についてステップS2乃至ステップS5の処理が同様に行われる。
ステップS5で、すべての画素が選択されたと判定された場合、ステップS6に進み、色抽出部12は、ステップS1乃至ステップS5の処理で生成された、入力画像の各画素に対応した位置に、各画素の色の種類の色IDが設定された色ID画像を、色領域検出部13に供給する。
以上のような色抽出処理が入力画像の各フレームについて行われる。
図6には、上述した色抽出処理の具体例が示されている。図6Aは、入力画像の入力輝度信号Y、入力色信号U、および入力色信号Vのそれぞれに対応するイメージである。図6Bは、入力画像のカラービットマップイメージである。すなわちこのような入力画像に対して色抽出処理が行われると、例えば色ID画像上の、図6Cに示す入力画像上の人形の顔の部分の画素に対応する位置に、赤色の色ID(10000000)が、図6Dに示す入力画像上の鼻の部分の画素に対応する位置にオレンジ色の色IDが、そして図6Eに示す入力画像上の文字が表示されている部分の画素に対応する位置に黄色の色IDがそれぞれ設定された色ID画像が生成される。
次に、色領域検出部13における色領域検出処理を、図7のフローチャートを参照して説明する。
色抽出部12から色ID画像が供給されると、ステップS11において、色領域検出部13は、色抽出部12から供給された色ID画像上の1の画素を、例えばラスタ順に選択し、ステップS12において、マージ処理を行う。
このマージ処理を、図8を参照して説明する。
ステップS21において、色領域検出部13は、ステップS11で選択した画素を、図9に示すように対象画素xとし、対象画素xの図中、真左に隣接する画素dの色IDと対象画素xの色IDに基づいて、対象画素xと画素dの色が同じであるか否かを判定し、同じ色であると判定した場合、ステップS22に進む。
なおここでは画素a,b,c,dには、それらが対象画素xとされたときに、後述する処理で所定の領域IDがすでに設定されているものとする。
ステップS22において、色領域検出部13は、対象画素xの右上に隣接する画素cの色IDと対象画素xの色IDに基づいて、対象画素xと画素cの色が同じであるか否かを判定し、同じ色であると判定した場合、ステップS23に進み、対象画素x、真左に隣接する画素d、および右上に隣接する画素cをマージする。
具体的には、色領域検出部13は、画素dおよび画素cのいずれか一方を選択し、選択しなかった方の画素の領域IDを、選択した方の画素の領域IDに書き換える。また色領域検出部13は、対象画素xの領域IDを、選択した画素の領域IDとする。
ステップS22で、対象画素xと画素cの色が同じ色ではない判定された場合、ステップS24に進み、色領域検出部13は、対象画素xと真左に隣接する画素dをマージする。
具体的には、色領域検出部13は、対象画素xの領域IDを、画素dの領域IDとする。
ステップS21で、対象画素xと画素dの色が同じ色ではない判定された場合、ステップS25に進み、色領域検出部13は、対象画素xの真上に隣接する画素bの色IDと対象画素xの色IDに基づいて、対象画素xと画素bの色が同じであるか否かを判定し、同じ色であると判定した場合、ステップS26に進む。
ステップS26において、色領域検出部13は、対象画素xと真上に隣接する画素bをマージする。具体的には、色領域検出部13は、対象画素xの領域IDを、画素bの領域IDとする。
ステップS25で、対象画素xと画素bの色が同じ色ではない判定された場合、ステップS27に進み、色領域検出部13は、対象画素xの左上に隣接する画素aの色IDと対象画素xの色IDに基づいて、対象画素xと画素aの色が同じであるか否かを判定し、同じ色であると判定した場合、ステップS28に進む。
ステップS28において、色領域検出部13は、対象画素xと左上に隣接する画素aをマージする。具体的には、色領域検出部13は、対象画素xの領域IDを、画素aの領域IDとする。
ステップS27で、対象画素xと画素aの色が同じ色ではない判定された場合、ステップS29に進み、色領域検出部13は、対象画素xの右上に隣接する画素cの色IDと対象画素xの色IDに基づいて、対象画素xと画素cの色が同じであるか否かを判定し、同じ色であると判定した場合、ステップS30に進む。
ステップS30において、色領域検出部13は、対象画素xと右上に隣接する画素cをマージする。具体的には、色領域検出部13は、対象画素xの領域IDを、画素cの領域IDとする。
ステップS29で、対象画素xと画素cの色が同じ色ではない判定された場合、すなわち対象画素xの色が、画素a,b,c,dの色のいずれでもない場合、ステップS31に進み、色領域検出部13は、対象画素xに新たな領域IDを設定する。具体的には、色領域検出部13は、内蔵するカウンタの値を1だけインクリメントし、その値を対象画素xの領域IDとする。なお色領域検出部13は、このカウンタを処理開始時において1に初期化している。
ステップS23、ステップS24、ステップS26、ステップS28、ステップS30、またはステップS31の処理が終了すると、図7のステップS13に進む。
ステップS13において、色領域検出部13は、ステップS12で新たな画素が追加された領域について、その領域の画素数、画素の位置の総和、および色領域内画素の最小位置および最大位置を更新する。
次にステップS14において、色領域検出部13は、ステップS11で色ID画像からすべての画素を選択したか否かを判定し、まだ選択していない画素が残っていると判定した場合、ステップS11に戻る。すなわち色ID画像から次の画素が選択され、その画素についてステップS12乃至ステップS14の処理が同様に行われる。
ステップS14で、すべての画素が選択されたと判定された場合、ステップS15に進み、色領域検出部13は、ステップS13で更新した画素数、領域内画素の最小位置および最大位置、画素の位置の総和を領域の画素数で除算した結果得られるその領域の重心、式(1)で求められるモーメント、および各色領域の色IDを、各画素の色領域情報としてマッチング部14に供給する。
なお式(1)中、xi(i=1,2,・・・N)とyiは、変数iで特定される画素の入力画像上の座標(x,y)であり、Nは、その領域の画素数である。
以上のようにして色領域が検出される。
すなわち図9に示したように、対象画素xを、図中矢印の方向に1画素ずつ移動しながら選択し、選択した対象画素xの色を、対象画素xの位置の左上、真上、右上、および真左に隣接する画素の色と比較して、その比較結果に基づいてそれらの領域IDを対象画素xに設定するようにしたので、同じ色の隣接する8個の画素には同じ領域IDが設定され、1つの色領域が形成される。
図10は、上述した色領域検出処理がなされた場合に形成される色領域を模式的に示したものである。図10の例では、隣接する赤色の色ID(図示せず。他の場合についても同様である)を有する画素により領域IDが1の色領域A、隣接する青色の色IDを有する画素により領域IDが2の色領域B、隣接する赤色の色IDを有する画素により領域IDが3の色領域C、および隣接する緑色の色IDを有する画素により領域IDが4の色領域Dがそれぞれ形成されている。
また入力画像と対比して色領域を具体的に示すと、図11Aに示す被写体Pの入力画像が入力された場合、図11Bに示す各色領域が検出される。なお図11Bの各色領域に付されたハッチの種類は、その色領域の色に対応している。すなわち同じハッチの色領域は、同じ色IDを有する画素から形成されている。
なお上述したように、色IDは、画素の色に対応するビットに1が立っているビット列であるが、画素値によっては、複数のビットに1が立つ場合がある。その場合、1が立っている複数のビットのうち最も低いビット以外のビットを0に変更し(すなわち最も低いビットに対応する色とし)、色IDが設定される。
次に、マッチング部14におけるマッチング処理について説明する。
このマッチング処理で参照される基準画像上の色領域は、図12Aに示されるようなモデルMa(図11Aの被写体PはモデルMaである)をある方向から撮像した結果得られた基準画像に対して、上述した色抽出処理および色領域検出処理を予め施すことによって検出された、図12Bに示す色領域であり、その色領域の色領域情報を含む情報(以下、モデル情報と称する)が記憶部22に記憶されている。なお図12Bの各色領域に付されたハッチの種類も、その色領域の色に対応している。
なお複数のモデルを登録することができ、その場合、複数のモデル情報が記憶部22に記憶される。
図13は、モデル情報の記述例を示している。
図13の例では、#で始まる行はコメント行であり、登録されているモデルの数「number of objects」は、11個とされている。すなわち図13の例の場合、11個のモデル情報が本来記述されているが、簡単のために、図13には、最初の1個のモデル情報が示されている。
この例では、モデル情報として、モデルのID「OBJECT[]」が0で、モデルの名称「alias」がanimal carで、基準画像の画サイズ「width height」が(240 180)で、モデル撮像時の画角「zoom factor」が100で、色の種類の数「number of color blobs」が8個であることが記述されている。
これらの記述に続いて各色領域の色領域情報が記述されている。この例の場合、色ID「ID」、画素数「num_pixel」、重心位置(x,y)「gx gy」、モーメント量「Ixx Iyy Ixy」、撮像時のモデルとレンズブロック1までの距離(mm)「distance」が、色領域毎に記述されている。図13の例の場合、9個の色領域の色領域情報が記述されている。
第2番目乃至第11番目のモデルのモデル情報も、同様にして記述されている。
次に、図13に示したようなモデル情報に基づくマッチング処理を、図14のフローチャートを参照して説明する。
色領域検出部13から、入力画像から検出された色領域の色領域情報が入力されると、ステップS51において、マッチング部14は、記憶部22から1つのモデル情報を選択する。
ステップS52において、マッチング部14は、ステップS51で選択したモデル情報の1つの色領域情報を選択する。
ステップS53において、マッチング部14は、色領域検出部13から供給された入力画像の色領域情報の中の1つの色領域情報を選択する。
ステップS54において、マッチング部14は、ステップS52およびステップS53で選択した色領域情報に基づいて、その色領域情報に対応する色領域の色が同じで、かつ両者のアスペクト比の差が一定以内であるか否かを判定し、両者が対応する領域、すなわち両者が共に同じモデルの同じ部分に対応している可能性がある領域であるか否かを判定する。
色が同じであるか否かは、色領域情報の中の色IDが一致するか否かによって判定される。また各色領域のアスペクト比は、色領域を、図15に示すように楕円形状と見た時の楕円の長径aと短径bの比(短径b÷長径a)で求められる。
なお長径aおよび短径bは、式(2)により求められ、式(2)中のBおよびDは、式(3)に示すように、色領域情報の各モーメントにより求められる。
なお長径aを特定するための角度θは、式(4)より求められる。
アスペクト比の比較を行うのは、同じ色であってもあまりに形状の違う領域は、対応する領域であるとは考えられないからである。
図14に戻りステップS54で、両者が対応する領域であると判定された場合、マッチング部41は、ステップS55において、ステップS52で選択した色領域情報とステップS53で選択した色領域情報を、候補ペアの色領域情報として保持して、候補ペアを登録する。
ステップS54で、両者が対応する領域ではないと判定されたとき、またはステップS55で、候補ペアが登録されたとき、ステップS56に進み、マッチング部14は、ステップS53で入力画像についての色領域情報をすべて選択したか否かを判定し、選択していない色領域情報がまだ残っていると判定した場合、ステップS53に戻る。すなわち入力画像についての次の色領域情報が選択され、その色領域情報についてステップS54乃至ステップS56の処理が同様に行われる。
ステップS56で、入力画像についての色領域情報がすべて選択されたと判定された場合、ステップS57に進み、マッチング部41は、ステップS52でモデル情報の色領域情報がすべて選択されたか否かを判定し、選択していない色領域情報がまだ残っていると判定した場合、ステップS52に戻る。すなわちステップS51で選択されたモデル情報の次の色領域情報が選択され、その色領域情報についてステップS53乃至ステップS57の処理が同様に行われる。
ステップS57で、モデル情報の色領域情報がすべて選択されたと判定された場合、ステップS58に進み、マッチング部41は、ステップS51ですべてのモデル情報が選択されたか否かを判定し、選択されていないモデル情報がまだ残っていると判定した場合、ステップS51に戻る。すなわち次のモデル情報が選択され、そのモデル情報についてステップS52乃至ステップS58の処理が同様に行われる。
ステップS58で、すべてのモデル情報が選択されたと判定された場合、ステップS59に進み、マッチング部14は、ステップS55で登録した候補ペアの色領域の色領域情報を、認識部15に出力する。その後、処理は終了する。
以上のようなマッチング処理が行われることにより、例えば基準画像上の色領域が図16Aに示すように形成され、入力画像上の色領域が図16Bに示すように形成されている場合、例えば、図中、破線で結ばれている色領域等が候補ペアとされる(なお、実際には、他の色領域も候補ペアとされる)。
次に、認識部15における認識処理を説明するが、はじめのその原理について説明する。
1つの物体をある方向から見たときのその物体上の任意の位置の3次元座標(X1, Y1, Z1)と、その物体を他の方向から見たときのその位置の3次元座標(X2, Y2, Z2)には、式(5)に示すように、式(6)に示す所定のロール角φ、ピッチ角θ、およびヨー角ψによる回転行列Rと、所定の並進ΔX、ΔY、ΔZによって姿勢変換できる関係がある。
すなわちモデルの同じ部分に対応する、基準画像の色領域の重心の3次元座標(X1, Y1, Z1)と入力画像の色領域の重心の3次元座標(X2, Y2, Z2)の組が、モデルの部分毎に複数個存在する場合、それらの色領域の組について、同一の回転行列Rおよび並進ΔX、ΔY、ΔZによって式(5)が成立する。
ここでは、この原理を利用して、一定数以上の候補ペアについて、共通の回転行列Rと並進ΔX、ΔY、ΔZで式(5)が成立するか否かを判定し、換言すれば、共通の回転行列Rと並進ΔX、ΔY、ΔZで式(5)が成立する候補ペアが一定数以上存在するか否かを判定し、その判定結果に基づいて入力画像からモデルを認識するようにする。
ところで基準画像の色領域の重心および入力画像の色領域の重心は、色領域情報においては2次元座標で示されているので、ここでは式(5)を2次元座標に対応させた式(7)を用いることとする。
式(7)中、x1,y1は、候補ペアを構成する基準画像の色領域の重心の2次元座標(色領域情報に含まれている重心の2次元座標)であり、x2,y2は、入力画像の色領域の重心の2次元座標(色領域情報に含まれている重心の2次元座標)である。
f1は、基準画像についての色領域情報に含まれる画角「zoom factor」に対応する距離であり、f2は、被写体を撮像したときの焦点距離であり、例えば制御部9を介して認識部15に通知される。なお遠くの物体から近くの物体まで認識するために、カメラのズームが適宜変更され、その結果焦点距離f2も変更されるので、基準画像についての焦点距離f1と入力画像についての焦点距離f2とが異なる場合がある。
ここで式(5)から式(7)への変換方法について説明する。
物体の任意の位置の3次元座標(X,Y,Z)とその物体を平面上に投射した場合の平面上のその任意の位置の2次元座標(x,y)との間、そして物体の表面積Sと平面上のその領域の面積sの間には式(8)の関係が存在する。
式(8)中、fは、図17に示すように、視点からの距離(すなわち、焦点距離に相当する距離)であり、HとLは、3次元物体の表面領域の縦および横方向の長さであり、hとlは、その表面領域が2次元上に投射されたときの領域の縦および横方向の長さである。
この式(8)は、式(9)に示すように展開することができる。
すなわち式(9)から、この例において既知である基準画像の色領域の重心の2次元座標(x1,y1)および面積s1に基づいて式(10)に示すように、その重心の3次元座標が得られ、また入力画像の色領域の重心の2次元座標(x2,y2)および面積s2から、式(11)に示すように、その重心の3次元座標が得られる。そして式(10)および式(11)を式(5)に代入すると、式(7)を得ることができる。
このようにして式(5)を式(7)に変換することができる。
なおこの例の場合、式(10)および式(11)中の物体の各領域の表面積S12は既知ではないので、基準画像上のどの色領域に関しても、式(12)の値は等しいと仮定し、式(7)をさらに式(13)のように変換し、並進ΔX、ΔY、ΔZの近似である並進ΔX'、ΔY'、ΔZ'を得るものとする。
式(12)の値が基準画像上のどの色領域に関しても等しいということは、式(12)の値は距離に比例するパラメータであることから、モデル中の色領域に対応する各部分が視点からほぼ同じ奥行きにあることを意味する。モデル全体のレンズブロック1からの距離(すなわち奥行き位置)に比べて、各色領域に対応する部分の前後が十分小さければ、基準画像上のどの色領域に関して、式(12)の値が等しくなる。
従ってモデルの色領域に対応する部分が撮像方向に対して水平になるようにモデルを撮像すれば、この近似が成立し、式(13)を利用することができる。
次に、認識処理を、図18のフローチャートを参照して説明する。
マッチング部14から、1フレーム分の入力画像から得られた候補ペアの色領域情報が供給されると、ステップS71において、認識部15は、予め決められた所定の大きさのロール角、ピッチ角、およびヨー角の組の中の1つの組を選択する。例えば10[deg]刻みのロール角、ピッチ角、およびヨー角(以下、個々に区別する必要がない場合、これらをまとめて姿勢角と称する)の組が複数用意されており、それらの中から1つの組が選択される。
ステップS72において、認識部15は、ステップS71で選択した組のロール角、ピッチ角、またはヨー角を用いて式(6)を演算し回転行列Rを求める。
ステップS73において、認識部15は、マッチング部14から供給された候補ペアの色領域情報の中の1つの候補ペアの色領域情報を選択する。
ステップS74において、認識部15は、ステップS73で選択した候補ペアの色領域情報の、基準画像上の色領域の重心の座標(x1,y1)と入力画像上の色領域の重心の座標(x2,y2)を用いて式(13)を演算し、並進Δ’x、Δ’y、Δ’z(以下、個々に区別する必要がない場合、並進ベクトルΔ’と称する)を求める。
ステップS75において、認識部15は、ステップS74で求めた並進ベクトルΔ’を、3次元空間上に投票する。なおこの投票は、3次元空間上に一定範囲のグリットが設けられ、そのグリット毎に投票が行われる。
ステップS76において、認識部15は、ステップS73ですべての候補ペアを選択したか否かを判定し、まだ選択していない候補ペアが残っていると判定した場合、ステップS73に戻る。すなわち次の候補ペアが選択され、その候補ペアについてステップS74乃至ステップS76の処理が同様に行われる。
ステップS76で、すべての候補ペアが選択されたと判定された場合、ステップS77に進む。
ステップS77において、認識部15は、1組のロール角、ピッチ角、およびヨー角による回転行列Rについて算出された各候補ペアについての並進ベクトルΔ’の投票から、最も多い投票がなされたグリットを選択し、そのグリットに投票された並進ベクトルΔ’の平均値を算出し、それを並進ベクトルΔ’のピーク値とする。
次にステップS78において、認識部15は、ステップS77で算出した並進ベクトルΔ’のピーク値から閾値T以内の距離に投票された並進ベクトルΔ’を検出する.
ステップS79において、認識部15は、ステップS78で検出した並進ベクトルΔ’を投票した候補ペアの中に、一方の色領域が他の候補ペアの色領域と共通する候補ペアが存在するか否かを判定し、そのような候補ペアが存在すると判定した場合、ステップS80に進む。
たとえば図19に示すように、図19Aの基準画像上の色領域M1と図19Bの入力画像上の色領域W1、および色領域M1と色領域W2が候補ペアとなった場合、色領域M1と色領域W1の候補ペアと、色領域M1と色領域W2の候補ペアでは、色領域M1について共通するので、ステップS80に進む。
なお色数が少ない場合は、色数の多い物体の中に同じ色領域の組み合わせが存在することがある。
ステップS80において、一方の色領域が他の候補ペアの色領域と共通する候補ペア(以下、このような候補ペアを重複候補ペアと称する)(図19の例では、色領域M1と色領域W1の候補ペアと、色領域M1と色領域W2の候補ペア)から、1つの候補ペアを選択する処理が行われる。すなわちモデルの同じ部分に対応する基準画像の色領域と入力画像の色領域は1対1の関係にあるので、重複候補ペアの中から、最も対応していると予測される基準画像の色領域と入力画像の色領域の候補ペアが選択される。この処理を、図20のフローチャートを参照して説明する。
ステップS101において、認識部15は、1つの重複候補ペアと、重複候補ペアではない候補ペアとの組を、重複候補ペア毎に想定する。図19の例では、色領域M1と色領域W1の候補ペアと、重複候補ペアではない候補ペア(色領域M1と色領域W2の候補ペアを除く候補ペア)の組、色領域M1と色領域W2の候補ペアと、重複候補ペアではない候補ペア(色領域M1と色領域W1の候補ペアを除く候補ペア)の組が想定される。
ステップS102において、認識部15は、ステップS101で想定した候補ペアの組を1つ選択し、ステップS103において、選択した組の候補ペアの数を求める。
次にステップS104において、ステップS102で選択した組の候補ペアのそれぞれについて、候補ペアの基準画像の色領域の重心の座標(x1,y1)と面積s1、入力画像の色領域の面積s2、図18のステップS72で求めた回転行列R、およびステップS77で求めた並進ベクトルΔ’のピーク値、距離f1、および距離f2を用いて式(13)を演算し、入力画像の色領域の重心の2次元座標を求め、求めた2次元座標と、その入力画像の色領域の色領域情報に含まれる2次元座標との2乗誤差(変換投射誤差)を求める。
ステップS105において、認識部15は、ステップS102で想定したすべての組を選択したか否かを判定し、まだ選択していない組が残っていると判定した場合、ステップS102に戻る。すなわちステップS102で次の組が選択され、ステップS103乃至ステップS105の処理が同様に行われる。
ステップS105で、すべての組が選択されたと判定された場合、ステップS106に進み、認識部15は、ステップS101で想定した組のうち、最も候補ペアの数が多い組の中で、最も変換投影誤差の小さな組を選択し、その組に属する重複候補ペアを、候補ペアとして残し、それ以外の重複候補ペア(残る候補ペアの一方の色領域と同じ色領域を含む候補ペア)は、候補ペアとして取り扱わないようにする。
このようにして重複候補ペアの中から1つの候補ペアが選択されると、図18のステップS81に進む。
ステップS81において、認識部15は、ステップS71で姿勢角のすべての組を選択したか否かを判定し、まだ選択していない組が残っていると判定した場合、ステップS71に戻る。すなわちステップS71で次の姿勢角の組が選択され、その姿勢角に基づいてステップS72乃至ステップS81の処理が同様に行われる。
ステップS81で、姿勢角のすべての組が選択されたと判定された場合、ステップS82に進み、認識部15は、ステップS78で抽出した候補ペアの数、またはステップS80の処理で1つの重複候補ペアが選択された場合の候補ペアの数が、例えば基準画像の色領域の数の60%以上の数であるか否かを判定し、そのような数であると判定した場合、すなわち共通の回転行列Rと並進ΔX、ΔY、ΔZ(以下、並進ベクトルΔと称する)で式(13)が成立する一定以上の色領域のペアが存在する場合、ステップS83に進み、入力画像の被写体はモデルであるとし、その認識結果を制御部9に通知する。
ステップS82で、その数分の候補ペアが抽出されなかったと判定された場合、入力画像の被写体はモデルではないとして、処理は終了する。
以上のようにして認識処理が行われる。
次に、認識部15の位置検出処理について説明する。
認識部15は、上述したようにモデルを認識することができた場合、式(10)のZ1の式に、モデル情報の中の画角「zoom factor」に対応する焦点距離f1、および例えば選択した1つの候補ペアを構成する基準画像の色領域情報の撮像時のモデルとカメラまでの距離(mm)「distance」z1を代入して、式(12)の値を求める。
そして認識部15は、式(13)に、求めた式(12)の値、およびモデルを認識した際の並進ベクトルΔ’を代入して並進ベクトルΔを求める。
次に認識部15は、式(10)に、選択した候補ペアの基準画像の色領域情報の重心の座標(x1,y1)、先に求めた式(12)の値、およびモデル情報としての画角「zoom factor」に対応する焦点距離f1を代入して、座標(x1,y1)に対応する3次元座標(X1、Y1,Z1)を求める。
そして認識部15は、式(5)に、求めた3次元座標(X1、Y1,Z1)と、並進ベクトルΔ、およびモデルを認識した際の回転行列Rを代入して、入力画像から認識したモデルの3次元座標(X2,Y2,Z2)を算出する。
以上のようにして認識したモデルの位置(ロボットからの相対的な位置)が検出される。
以上のように色抽出処理、色領域検出処理、マッチング処理、認識処理、および位置検出処理が実行されて、画像処理部7における認識処理が行われる。
すなわち複数の色に塗り分けられた物体(色物体)からの色領域の検出も高速で行え、また画像中の色領域の数はさほど多くはないのでマッチングも高速に行えるので、モデル認識をより迅速に行うことができる。また比較的簡単の形状の色領域同士の候補ペアについて、位置関係を検証するようにしたので、物体を見る方向が変わり、色領域の見る方向が変わっても、安定的にモデル認識を行うことができ、姿勢の変化に対してもロバストなモデル認識を行うことができる。
また同じ色で位置も同じ色領域の組が存在することが必要とされるので、単色物体の認識とは異なり、背景の色に影響させることなく、モデル認識を行うことができる。
なお以上においては、認識されるモデルが1である場合を例として説明したが、図21Aに示すように認識されるモデルが複数場合においても、図21Bに示すように、色領域が検出され、各モデルを認識することができる。
また以上においては1つのモデルについて、1つの基準画像が用意されていたが、1つのモデルを、異なる方向から撮像した複数の基準画像を設け、それらの基準画像のモデル情報をそれぞれ保持しておくようにすることもできる。
モデルを撮像した方向から60度以上も回転して認識対象の被写体が撮像されると、基準画像上見えている部分が入力画像上は隠れてしまい見えてない場合があり、そのとき、その入力画像からモデル認識を行うことが困難になる。そこでモデルについてこのような方向からの撮像を行っておきその結果得られた基準画像についても登録して置けば、ロボットがこのような方向から認識対象の被写体を見た場合でのモデル認識することができる。
なおこの場合、同じモデルの複数の基準画像についての各モデル情報に、同じモデルのIDを記述しておくことができる。またこの場合、重複候補ペアが存在し得るが、上述した選択処理(ステップS80)によりモデル認識が可能となる。
また以上においては、認識処理において式(7)または式(13)を演算する際、基準画像についての焦点距離f1と入力画像についての焦点距離f2をそれぞれ用いたが、投票時には基準画像についてのf1をf2としても用い、最終的に位置を算出するときに式(14)によってズームによる焦点距離の違いを補正することもできる。
また図1の画像処理装置は、例えばロボットに利用されるが、その場合、上述したようにしてモデルを認識した後、ロボットが移動し、認識対象の被写体の画像が入力画像上において大きくなりまたは小さくなって、入力画像からモデル認識を適切に行うことができなくなる場合も考えられる。そこで画像処理装置では、入力画像中の被写体の画像が一定以上大きくみえるようになったら、一段階ズームアウトし、また一定以上小さく見えるようになったら、一段階ズームインして、入力画像からモデル認識を適切に行うことができるようになされている。
ここでこのズームの変更処理について説明する。はじめにズームアウト処理について説明する。
上述したようにしてモデル認識がなされた場合、画像処理部7は、制御部9の制御に従って、認識したモデルのモデル情報の色領域情報を参照し、図22Aに示すように、基準画像上のモデルの像の全部が含まれる領域(図中、白枠内の領域)を決定する。なおこの例の場合、色領域情報の中には、色領域のx軸上最も大きなx座標とy軸上最も大きなy座標、およびx軸上と最も小さいx座標とy軸上最も小さいy座標が、最大位置および最小位置として含まれており、画像処理部7は、この各色領域の最大位置および最小位置から、モデルの像の全部が含まれるこの領域を決定する。
画像処理部7は、決定したモデルの像が全部含まれる領域を、図22Bに示すように、モデルを認識した際の回転行列Rおよび並進ベクトルΔを用いて変換し、その範囲を物体画像領域Woとする。
次に、画像処理部7は、図23に示すように、物体画像領域Woの中心(図中、+印)を中心とする、入力画像の画像サイズの0.6乃至0.7倍程度の大きさの領域を、サイズ上限領域(図中、実線の枠内の領域)Wout1として設定する。また画像処理部7は、入力画像の上下左右の両端から、入力画像の縦および横方向の長さの5%乃至20%程度の領域(図中、入力画像の上下左右の端から点線の枠までの領域)を、はみ出し禁止領域Wout2として設定する。さらに画像処理部7は、サイズ上限領域Wout1内ではみ出し禁止領域Wout2に属さない範囲を、ズームアウト領域(図中、太線の枠内の領域)Wout3とする。
画像処理部7は、物体画像領域Woが、このズームアウト領域Wout3からはみ出しているか否かを判定し、はみ出していると判定した場合、その旨を制御部9に通知する。制御部9はそのとき、カメラコントローラ8を介してレンズドライバ2を制御して、ズームレンズ1Aを駆動させ、ズームアウト領域Wout3から物体画像領域Woがはみ出さないようにズームアウトさせる。ズームの変更は、例えばズーム倍率が約0.57倍刻みで設定され、水平画角が、120度、90度、60度、または37度となる離散的なズーム変更が行われる。
次にズームイン処理を説明する。
画像処理部7は、図24に示すように、入力画像の中心を中心として、ズームインした場合に収まる領域をズームイン倍率領域(図中、実線の枠内の領域)Win1として設定する。これは現在の画像のズーム倍率倍の大きさの領域である。
画像処理部7は、物体画像領域Woがズームイン倍率領域Win1の中に収まるようにするために、ズームイン倍率領域Win1の0.5倍のズームイン領域(図中、太線の枠内の領域)Win2を、入力画像の中心を中心として設定する。
画像処理部7は、物体画像領域Woがこのズームイン領域Win2の中に入っているか否かを判定し、入っていると判定した場合(すなわち物体画像領域Woがズームイン領域Win2に入ってしまうまで小さくなったとき)、その旨を制御部9に通知する。制御部9はそのとき、カメラコントローラ8を介してレンズドライバ2を制御して、ズームレンズ1Aを駆動させ、ズームイン倍率領域Win1に物体画像領域Woがはいるようにズームインさせる。
なおズームアウト時のズームアウト領域Wout3とズームイン時のズームイン領域Win2の大きさが近い場合、ズームが切り替えた後にすぐまた戻ろうとしてチャタリングが発生することが考えられるので、ズームイン方向とアウト方向でヒステリシスを持たせるために、両者の大きさを一定以上異なる大きさとすることができる。
ところで上述したようにズーム変更が行われるが、ズーム変更コマンドがレンズドライバ2に送られる際に、情報の伝搬による時間遅れが発生するので、コマンドを送った直後のフレームは変更前のズーム条件で撮像されている可能性があり(これから画像処理部7において認識処理を行うメモリ6に記憶されている画像がズーム変更前の画角で撮像されている可能性があり)、そのとき、その入力画像に対して変更後のズーム条件で上述した認識処理を行うと(具体的には、そのズーム時の焦点距離f2を用いて認識処理を行うと)、適切にモデルが認識されない。
そこで制御部9が指定した水平画角等のズーム情報をカメラモジュール側で撮像した画像上に書き込むようにすることができる。具体的には、例えばズーム情報がカメラ信号処理部5にも入力され、カメラ信号処理部5において、入力画像の左下隅の画像に、その入力画像の撮像時のズーム情報が書き込まれる。
画像処理部7は、画像に書き込まれたズーム情報に対応する焦点距離f2を用いて、上述した認識処理を実行する。
このように撮像時のズーム情報を各入力画像に書き込み、その書き込まれたズーム情報に基づいてモデル認識を行うようにしたので、ズーム変更がされてもモデル認識を適切に行うことができる。
上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
そこで、図25は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク205やROM203に予め記録しておくことができる。
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体211に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体211は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体211からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部208で受信し、内蔵するハードディスク205にインストールすることができる。
コンピュータは、CPU(Central Processing Unit)202を内蔵している。CPU202には、バス201を介して、入出力インタフェース210が接続されており、CPU202は、入出力インタフェース210を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部207が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)203に格納されているプログラムを実行する。あるいは、また、CPU202は、ハードディスク205に格納されているプログラム、衛星若しくはネットワークから転送され、通信部208で受信されてハードディスク205にインストールされたプログラム、またはドライブ209に装着されたリムーバブル記録媒体211から読み出されてハードディスク205にインストールされたプログラムを、RAM(Random Access Memory)204にロードして実行する。これにより、CPU202は、上述したブロック図の構成により行われる処理を行う。そして、CPU202は、その処理結果を、必要に応じて、例えば、入出力インタフェース210を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部206から出力、あるいは、通信部208から送信、さらには、ハードディスク205に記録等させる。
ここで、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 レンズブロック, 1A ズームレンズ, 2 レンズドライバ, 3 撮像センサ, 4 撮像素子ドライバ, 5 カメラ信号処理部, 6 メモリ, 7 画像処理部, 8 カメラコントローラ, 9 制御部, 11 画像入力部, 12 色抽出部, 13 色領域検出部, 14 マッチング部, 15 認識部, 21 記憶部, 22 記憶部101 記録再生システム, 113 HSM, 114 ストレージマネージャ, 116 HDD, 118 ドライブ, 119 DVD, 141 アプリケーションプログラム, 162 システムマネージャ, 163 ファイルI/Oマネージャ, 164 マイグレーションファイルシステム, 165 ストレージサーバ, 167 メディアサーバ, 401 CPU, 402 ROM, 403 RAM, 408 記録部, 409 記録部