動体の動きベクトル検出装置
【目的】この発明の動体の動きベクトル検出装置にあっては、動体の動きベクトルを検出するために、物体の検出範囲を小さく、且つサンプリング間隔を短くして、高速及び低速で移動する物体を検出することを特徴とする。
【構成】ビデオカメラ10、Y/C分離回路11、A/D変換回路12及びビデオRAM13aを介して、被写体の所定領域から第1及び第2の時刻に於ける第1及び第2の映像をCPU14が検出する。このCPU14は、ビデオRAM13a、13b、RAM15及びROM16と共に、上記第1の映像を基準に第2の映像を所定ピッチずつシフトさせて第1と第2の映像の最も一致するシフト量を求め、更に上記第1及び第2の映像の最良の一致点のシフト量から所望の映像の動きベクトルを検出し、上記所望の映像が動いていない場合に上記第2の映像のみ更新して再度上記相関演算を行って動きベクトルを演算する。
【構成】ビデオカメラ10、Y/C分離回路11、A/D変換回路12及びビデオRAM13aを介して、被写体の所定領域から第1及び第2の時刻に於ける第1及び第2の映像をCPU14が検出する。このCPU14は、ビデオRAM13a、13b、RAM15及びROM16と共に、上記第1の映像を基準に第2の映像を所定ピッチずつシフトさせて第1と第2の映像の最も一致するシフト量を求め、更に上記第1及び第2の映像の最良の一致点のシフト量から所望の映像の動きベクトルを検出し、上記所望の映像が動いていない場合に上記第2の映像のみ更新して再度上記相関演算を行って動きベクトルを演算する。
【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は動体の動きベクトル検出装置に関し、特に動体に追尾領域を合わせてその動きベクトルを検出する動体の動きベクトル検出装置に関するものである。
【0002】
【従来の技術】従来より、映像の比較的広い領域を複数に分割し、その中から動体の存在する領域を判別する動体検出を行う装置が、種々開発されている。そして、例えば特公昭59−32743号公報には、相関演算を使用して物体を追尾する相関追尾装置が開示されている。
【0003】
【発明が解決しようとする課題】ところで、このような装置に於いて、比較する2つの映像のサンプリング時間間隔をΔTとして一定とすると、動きベクトルの検出範囲、すなわち相関演算のシフト量は、τ=0,1,…,Nである。シフト量Nをあまり大きくすると、演算時間が長くなってしまうので、なるべく小さいものが望ましい。しかしながら、Nを小さくすると、シフト量の検出範囲が狭くなってしまう。ΔTを短くして高速の物体を検出可能にすると、低速の物体の検出ができなくなる。逆に、ΔTを長くして低速の物体を検出可能にすると、高速の物体の検出が不可能になってしまう。
【0004】この発明は上記課題に鑑みてなされたもので、高速の物体の検出を可能にして、且つ相関演算のシフト量を小さくし、サンプリング時間を短くしても、低速で移動する物体を検出することのできる動体の動きベクトル検出装置を提供することを目的とする。
【0005】
【課題を解決するための手段】すなわちこの発明は、第1の時刻に於いて被写体の所定領域から第1の映像を検出する第1の検出手段と、上記第1の時刻とは異なる第2の時刻で上記所定領域から第2の映像を検出する第2の検出手段と、上記第1の映像を基準として第2の映像を所定のピッチずつシフトさせながら上記第1の映像と第2の映像の最も一致するシフト量を求める相関演算を行う相関演算手段と、上記第1及び第2の映像の最良の一致点のシフト量から所望の映像の動きベクトルを検出する第3の検出手段とを具備し、上記相関演算手段は、上記所望の映像が動いていないと判断された場合に上記第2の映像のみ更新して再度上記相関演算を行い、上記動きベクトルを演算することを特徴とする。
【0006】
【作用】この発明の動体の動きベクトル検出装置にあっては、動きベクトルの検出範囲をなるべく小さくして、またサンプリング時間間隔をなるべく短くする。そして、最初は高速の物体の検出を可能にし、物体の動きが検出されない場合に、比較する2つの映像のうち、後の時点に参照像と称されるサンプリングした映像のみを更新する。そして、再び同様の相関を行い、シフト量を繰返し求める。これにより、広範囲の動きベクトルの検出を行うことができる。
【0007】
【実施例】以下、図面を参照してこの発明の実施例を説明する。図1は、この発明の一実施例で、動体の動きベクトル検出装置が適用されたカメラシステムの構成を示すブロック図である。
【0008】同図に於いて、ビデオカメラ10から出力されるNTSCコンポジット信号の一方は、Y/C分離回路11で輝度信号が分離され、輝度信号のみA/D変換回路12でAD変換されてビデオRAM13aに入力される。CPU14は、ビデオRAM13a、13b、14、RAM15及びROM16と結合しているもので、システム全体の制御、演算を行う。
【0009】上記ROM16には、予め制御の手順がプログラムされている。また、RAM15は、演算途中のデータの記憶、演算結果のデータの記憶に用いられる。更に、ビデオRAM13bは、CPU14で演算された注視点の位置を表示したり追尾マークの表示データを記憶するものである。
【0010】ビデオRAM13bに記憶された表示データは、CRTコントローラ17のタイミングに従ってゲート18を通り、スーパーインポーザ19の一方の入力となる。このスーパーインポーザ19は、ビデオカメラ10の映像信号に、ゲート18の出力である注視点の位置や追尾マーク等を重ねて表示するための装置である。スーパーインポーザ19の出力は、表示部20に表示される。
【0011】尚、CPU14に入力される信号s1は、カメラの操作者が注視点を移動させるための信号である。また、スイッチSWは、注視点を保持し、追尾を開始するためのスイッチである。
【0012】図2は、カメラの操作者が注視点を選択してから追尾するまでの表示例を示したものである。図2(a)は、操作者が物体OBJの近傍に注視点マークP“+”を移動させた状態を示した図である。ここで、スイッチSW(図1参照)がオンされると、同図(a)の“+”マークを中心に、図2(b)に示されるように広い領域の動体検出ゾーンがスーパーインポーズされる。次いで、後に詳述する演算により動体領域が特定されて追尾が開始される。尚、同図(b)の表示はなくともよいものである。更に、図2(c)は、後述する追尾ゾーンの表す領域に、追尾マークがスーパーインポーズされた状態を示したものである。
【0013】図3は、注視点のマーク(図2の“+”)を移動させるための部材の配置を示したものである。これは銀塩カメラへの応用例であり、その詳細は本出願人が先に出願した特願平2−235074号に詳しく述べてある。
【0014】図3に於いて、カメラ本体21のグリップ22上に、注視点移動部材23が配置されている。そして、この注視点移動部材23の中心に注視点選択部材24(図1のスーパーインポーザ19に相当する)が配置されている。注視点選択部材24はレリーズ釦を兼用している。
【0015】また、図4及び図5は、視線方向を検出し、それにより画面の任意の領域を指示するための原理図である。これらについて、例えば特開平2−5号公報や特開平2−65834号公報、或いは電子通信学会技術報告PRU88−73、PP.17−24に詳しく述べられている。これらは、眼の瞳孔と角膜反射像(第1プリキンエ像)、または虹彩と角膜反射像の組合わせから視線方向を検出するもので、注視点を指示する方法として注目されている。
【0016】図4に於いて、25は赤外LEDであり、この赤外LED25からレンズ26を介して平行光束が作られる。また、図中27、28はダイクロイックミラー、29は撮影者の眼、30はCCD、31はレンズである。
【0017】赤外LED25から発せられた赤外線は、レンズ26、ダイクロイックミラー27、28を介して眼29に入る。そして、眼29で反射された光は、ダイクロイックミラー28、27及びレンズ31を介してCCD30で撮像され、上述した原理で視線方向が計算される。これにより、撮影レンズ32、ミラー33、マット34、コンデンサーレンズ35、ペンタプリズム36及びダイクロイックミラー28を介して、撮影者が観測する注視点の位置を検出することが可能となる。図5は、眼の角膜反射像、瞳孔、虹彩の出力波形の一例を示したものである。図6は、動体検出ゾーンとカメラの動き検出領域の一例を示した図である。
【0018】画面37内の動体検出ゾーン38は、更にこのゾーンの中が、後述するように複数ブロックに分割され、この中から1つのブロックが選択され、追尾ゾーンに特定されるようになっている。選択されるブロックは動体が最優先されるが、その場合、カメラが動いているのか、物体が動いているのかの判別が課題となる。尚、図中S1〜S4で示される領域は、カメラの動きを判別するために設定した動きベクトル検出領域39〜42である。
【0019】図7は、図6の動体検出ゾーン38を複数のブロックに分割した例である。同図(a)〜(d)に示されるように、各々がオーバラップするように、9ブロックの追尾ゾーン(a11、a12、a13、a21、a22、a23、a31、a32、a33)に分割され、それぞれの領域の動きベクトルを検出することになる。
【0020】これら9ブロックの追尾ゾーンのうち、1つの追尾ゾーン内は図8に示されるように、16個の代表点画素(P( 1,1)、P( 1,2)、…、P( 4,4))で構成されている。
【0021】また、図9は図8の中の1つの画素(P11)が、5つの画素(P(0)、P(1)、P(2)、P(3)、P(4))の平均値で表されることを示す図である。この平均値は、数1の関係式のようにして求められる。
【0022】
【数1】
【0023】図10は、この発明で採用された動きベクトル(移動量と方向)の検出の原理を示す図である(参考文献:テレビジョン学会技術報告Vol.11,No.3,PP.43−48,PP0E’87−12(May,1987)。
【0024】動きベクトル検出法としては種々の方法があるが、精度スピードの点から、以下に述べる代表点マッチングがたいへんすぐれている。これは画面上のいくつかの画素(以下これを代表点と称する)に着目し、現在の位置と所定時間後の位置の変化から、動きベクトルを決定する方法である。
【0025】図10の模式図に於いて、現在の代表点Pが同図(a)に示される位置にあるものとする。所定時間後のこの代表点Pと最もレベルが一致する点を、同図(b)のp1〜p9と比較することにより求める。ここでは、その最もレベルが近い画素の位置へ代表点が移動したと判断し、該当するベクトルを動きベクトルと判断する。実際は精度を上げるため、代表点の数を増やしている。
【0026】図11は、代表点配置の一例を示したものである。同図に於いて、水平方向に15ドットおきに34ポイント、垂直方向に15ライン毎に34ポイントの代表点を配置している。尚、追尾ゾーンは、上述したように、4×4=16の代表点より構成される。また、ゾーンB(追尾ゾーンAの動きベクトル検出範囲)は、水平、垂直方向ともに±2ポイントに設定される。
【0027】すなわち、図11で代表点Pの検出範囲は、図示の如く計25ポイントとなる。また、図9で説明したように、各ポイントに相当する画素のレベルは、周囲4点の画素との加算平均を行うことにより、ローパスフィルタ効果をもたせている。これにより、エッジの鋭い画像を得て、細いラインへの検出能力を高めている。次に、図12乃至図21のフローチャートを参照して、同実施例の動作を説明する。
【0028】図12はこのカメラシステムの全体の制御動作を説明するフローチャートである。同図に於いて、先ず、注視点の設定が行われる(ステップS1)。ここで、CPU14は、注視点の座標を読取る。次に、設定された注視点を中心にして、現時点に於ける動体検出ゾーンと、カメラの動きベクトル検出ゾーン(図6及び図1111参照)の代表点のポイントのレベルが求められる(これを基準像のロード及び代表点フィルタリングと称するものとする)。次いで、所定時間(1/30sec)後、同様にして上記と同領域の代表点ポイントのレベルが求められる(これを参照像のロード及び代表点フィルタリングと称するものとする)(ステップS2)。
【0029】そして、iに0が初期設定される(ステップS3)。ここで、iは図7に示された9つの追尾ゾーン(i=0〜8)と、カメラの動きベクトル検出ゾーン(i=9〜12)の領域を表す変数である。次に、サブルーチンCNTCALにて、i=0〜12の各領域のコントラストが求められる(ステップS4)。各々の領域は、図8に示されるように、16個の代表点から成る。いま、それぞれの代表点を図8のようにP( 1,1)、P( 1,2)、…、P( 4,4)とし、記述を簡単にするために、各々代表点の出力レベルも同じ記号P(i,j)で表わすものとする。
【0030】図13は、基準像のコントラスト計算を実行するCNTCALのサブルーチンである。先ず、コントラストCNTの演算が、次のように行われる(ステップA1)。すなわち、X方向のコントラストをCNTX、Y方向のコントラストをCNTY、そしてコントラストをCNTとすると、それぞれ数2、数3及び数4の関係式のようになる。
【0031】
【数2】
【0032】
【数3】
【0033】
【数4】
【0034】次にCNTが所定レベルC1と比較され(ステップA2)、映像のコントラストが不足するとき、すなわちCNT<C1のときは信頼度なしとして、RLBTYにNGが代入される(ステップA3)。この後、コントラスト演算のサブルーチンCNTCALからリターンされる。
【0035】図12のフローチャートに戻り、信頼度変数RLBTYが判別され(ステップS5)、RLBTY=NGのときベクトルパターンVP(i)にNGが代入される(ステップS6)。ここでVP(i)は、動きベクトルの種類をパターン分類するための変数であり、VP(i)=NGとは動きベクトルを検出できないことを意味する。
【0036】そして、変数CNT(i)にCNTが代入され(ステップS7)、i=12が判別される(ステップS8)。ここで、i=12でなければiに1を加えた後(ステップS9)、ステップS4に戻る。一方、ステップS8に於いて、i=12であればコントラスト演算(ステップS4〜S9)を終了する。
【0037】次に、更新回数の変数LOOPに0が設定された後(ステップS10)、再び領域選択iに0が初期設定される(ステップS11)。CPU14は、先ずi=0に相当する領域の代表点の信号を選択すると、図1414に示されるサブルーチンVECTCALに於いて、上記基準像と参照像との間で相関演算を行う(ステップS12)。
【0038】図14に於いて、いま基準像のP(i,j)の位置(図8参照)に相当する信号レベルをPS(i.j)、参照像の信号レベルをPR(i,j)とすると、相関値出力CORR(S)は数5の関係式の如くなる(ステップB1)。
【0039】
【数5】
ここでH=0,1,2、V=0,1,2であり、H,VはX方向、Y方向へのずらし量に相当する。
【0040】次に、CORR(H,V)の極小値MIN(CORR(H,V))が求められる。このときのHが変数VECTHに、Vが変数VECTVに代入される。そして、上述したように求められた領域iのコントラスト信号CNT(i)により、上記MIN(CORR(H,V))が除算される(ステップB2)。2つの像が真に一致したことにより、極小値MIN(CORR(H,V))が求められるとき、MIN(CORR(H,V))/CNT(i)は、所定の値βより小さくなり、大きい程信頼度が悪くなることが実験的にも確認されている。
【0041】ここで、MIN(CORR(H,V))/CNT(i)<βが判別され(ステップB3)、MIN(CORR(H,V))/CNT(i)<βでないとき、信頼度なしとして変数RLBTYにNGが代入される(ステップB4)。
【0042】こうして、サブルーチンVECTCALからリターンされ、図12のステップ13へ進む。ここで、RLBTY=NGであれば、ベクトルパターンVP(i)にNGが代入される(ステップS14)。
【0043】次に、変数VH(i)に水平方向動きベクトルVECTHが、変数VV(i)に垂直方向の動きベクトルVECTVが代入される(ステップS15)。その後、全ての領域i=0〜12について、以上の動きベクトルの演算が終了したか否かが判別される(ステップS16)。終了していない場合は、i=12になるまでiに1が加えられ(ステップS17)、ステップS12に戻る。一方、上記ステップS16に於いてi=12であれば、次に各々の領域i=0〜12の動きベクトル(VH(i),VV(i))を分類するためのサブルーチンVECTPATが実行される(ステップS18)。
【0044】図15は、動きベクトルのパターン分類プログラムVECTPATのサブルーチンである。同図に於いて、先ず領域を選択するための変数iに0が代入され(ステップC1)、またベクトルパターンの番号を表す変数kに0が代入される(ステップC2)。次いで、ベクトルパターンVP(i)がNGであるか否かが判別され(ステップC3)、NGでなければVP(i)が本来パターン分類としてあり得ない定数INITであるかどうかが判別される(ステップC4)。
【0045】INITは、本プログラムには記されていないが、図12のフローチャートの開始直後に初期設定される値である。具体的には、INITは0〜12以外の値であればよい。もし、VP(i)=INITであるときは、VP(i)にkの値が代入される(ステップC5)。次いで、変数jにi+1が代入され(ステップC6)、VP(j)=NGでなく(ステップC7)、且つVP(j)=INIT(ステップC8)のとき、動きベクトルの差異|VH(i)−VH(j)|、|VV(i)−VV(j)|が求められて、それぞれ変数ΔVH、ΔVVに代入される(ステップC9)。
【0046】ここで、ΔVH<α、且つΔVV<αのとき(ステップC10)、ベクトル(VH(i),VV(i))とベクトル(VH(j),VV(j)は同一ベクトルと判断されて、VP(j)にkが代入される(ステップC11)。次に、j=12であるか否かが判別され(ステップC12)、j=12でないときは、j+1がjに代入され(ステップC13)、ステップC7に戻って同様の演算が実行される。
【0047】上記ステップC7でYES、ステップC8でNO、ステップC10でNOの場合も、j=12であるか否かが判別され、j=12でないならば、jにj+1が代入されて同様の演算が繰返される。
【0048】ステップC12に於いて、j=12であれば、次にベクトルパターンの種類を表す変数kにk+1が代入される(ステップC14)。そして、i=12であれば(ステップC15)、本サブルーチンからリターンする。上記ステップC15に於いて、i=12でなければ、変数iにi+1が代入されて(ステップC16)、再びステップC3に戻り、以上のループが繰返される。表1は、以上のループで実行される演算の具体例を示したものである。
【0049】
【表1】
【0050】この例に示されるように、ベクトル(VH(i),VV(i))が所定の誤差で一致していれば、ベクトルパターンVP(i)には同一の番号が与えられる。そして、ベクトルパターンが異なる毎に順に、0,1,2,…の数字が与えられる。また、VP(i)=NGはそのままである。
【0051】VECTPATのサブルーチンの処理が終了すると(ステップS18)、図16に示されるサブルーチンRECOGNGが実行される(ステップS19)。このサブルーチンでは、変数iに0が代入され(ステップD1)、VP(i)=NGであれば(ステップD2)、次にi=8であるか否かが判別される(ステップD3)。ここで、i=8でなければiにi+1が代入され(ステップD4)、その後ステップD2に戻る。
【0052】上記ステップD3でi=8であれば、変数RNGに1が代入される(ステップD5)。また、上記ステップD2に於いてVP(i)=NGでなければ、変数RNGに0が代入される(ステップD6)。
【0053】すなわち、このサブルーチンは、動体検出ゾーン(i=0〜8)の領域の全てのベクトルパターンがNGのときにのみ、変数RNGに1が代入されるプログラムである。
【0054】図12のフローチャートに戻り、ステップS20に於いて、RNG=1のとき、追尾不能の表示が行われる(ステップS21)。一方、上記ステップS20にてRNG=1でないときは、次にサブルーチンRECOGPATNUMが実行される(ステップS22)。
【0055】図17に示されるように、このプログラムは動体検出ゾーン(i=0〜8)の領域のベクトルパターン数(種類)を求めるサブルーチンである。ベクトルパターンVP(i)は、上述したサブルーチンVECTPATで0から順に分類されているので、VP(i)の最大値を求め、それに1を加えた値がベクトルパターン数に等しくなる。
【0056】先ず、動体検出ゾーンを表す変数iに0が代入される(ステップE1)。次いで、変数VPNUMに−1が代入される(ステップE2)。そして、VP(i)=NGが判別されて(ステップE3)、VP(i)=NGでなければ、続いてVP(i)とVPNUMが比較される(ステップE4)。ここで、VP(i)>VPNUMであればVPNUMにVP(i)が代入される(ステップE5)。
【0057】次に、変数iが判別されて(ステップE6)、i=8でなければiにi+1が代入された後(ステップE7)、ステップE3に戻り、以上の動作が繰返される。上記ステップE3に於いて、VP(i)=NGであればステップE6に進む。以上の結果、VP(i)(i=0〜8)の最大値がVPNUMに代入される。
【0058】そして、VPNUMの値が判別されて(ステップE8)、VPNUM=0であれば、ベクトルパターン数は1つということでベクトルパターン数を表す変数PNUMに1が代入される(ステップE9)。一方、上記ステップE8にて、VPNUM=0でなく、更にVPNUM≧2でない場合は(ステップE10)、PNUMに2が代入される。また、上記ステップE10にてPNVM≧2である場合は、PNUMに3が代入される。その後、このサブルーチンはリターンされる。
【0059】再度図12のフローチャートに戻って、ステップS23に於いて、ベクトルパターン数PNUM=1の場合は、動体検出ゾーンに存在する物体の動きベクトルは1種類ということである。この場合の動体検出ゾーンの物体の動きの可能性としては、(i)物体は動体検出ゾーンの中で一体となって一方向に動いている、(ii)物体は動いていない、(iii)物体は動いていないがカメラが動いている、(iv)動体検出ゾーン内の一部が動いているが動きが遅く検出できない等が考えられる。
【0060】同実施例の考え方としては、上記(i)〜(iii)の場合は図7の9領域の中で、最大コントラストの領域を追尾ゾーン、または測距ゾーンとする。また、上記(iv)の場合は、基準像はそのままにして参照像を更新することにより、再び動きベクトルを検出する。この更新回数は、変数LOOPで決定される。
【0061】次いで、LOOP=3が判別され(ステップS24)る。ここで、LOOP=3でない場合は、次に参照画像の更新がなされ(ステップS25)、変数LOOPにLOOP+1が代入された後(ステップS26)、ステップS11に戻る。一方、上記ステップS24に於いて、LOOP=3になってもベクトルパターン数PNUM=1である場合は、次に、図18に示されるように、サブルーチンRECOGTRKZNE1が実行される。
【0062】このサブルーチンは、動体検出ゾーンから最大コントラストの追尾ゾーンを検出するプログラムである。図18に於いて、先ず領域を表す変数iに0が代入される(ステップF1)。次いで、変数MAXCNTに−1が代入される(ステップF2)。そして、動体検出ゾーン(i=0〜8)の各領域のコントラスト値CNT(i)とMAXCNTが比較される(ステップF3)。
【0063】このステップF3に於いて、CNT(i)>MAXCNTの場合は、MAXCNTにCNT(i)が代入される(ステップF4)。そして、最終的に決定される追尾ゾーンiがTRKZNEに代入される(ステップF5)。こうして、i=8になってこのサブルーチンがリターンされるまで(ステップF6)、変数iにi+1が代入されて(ステップF7)、以上のステップF3〜F7の動作が繰返される。
【0064】次に、図12のフローチャートに於いて、上記TRKZNEの表す領域に追尾マークがスーパーインポーズされる(図2(c)の状態)。続いて、サブルーチンTRACKで追尾が行われる(ステップS33)。
【0065】また、上記ステップS23に於いて、ベクトルパターン数PNUMが1でない場合は、次にPNUM=3か否かが判別される(ステップS28)。ここで、PNUM=3の場合は、動きの異なる物体が混在するので、追尾不能の表示がなされる(ステップS29)。
【0066】いま、上記ステップS28にて、PNUM=3でないときは、自動的にPNUM=2となる。このときは、一方の動きベクトルは、カメラの動きである可能性が高い。このときは、動体検出ゾーンとは異なる画面の4隅に固定配置された4つの動きベクトル検出領域39〜42(図6参照)(i=9〜12)の動きベクトルと比較されることにより、動体検出ゾーンの2つの動きベクトルの中から真に物体の動いている領域が特定される。
【0067】サブルーチンCMPVECTPAT(ステップS30)は、(a)上記動体検出ゾーンとは異なる4つの領域(i=9〜12)の中に動体検出ゾーンとは異なる動きベクトルVP(i)が観測された場合は追尾不能とする、(b)VP(i)=NG(検出不能)の領域が2つ以上ある場合は追尾不能とする、(c)VP(i)(i=9〜12)の中で2種類の動きベクトルが存在し、両方のベクトルパターンの存在する領域の数が同じ場合(例えば2:2、1:1)は、追尾不能とする、ことを基本とする。
【0068】次に、図19のサブルーチンCMPVECTPATを説明する。同図に於いて、先ず、領域を表す変数iに9が、そして変数NNG、N0、N1、RNG2に、それぞれ0が代入される(ステップG1)。この場合、i=0〜8のベクトルパターンVP(i)の最大値は1であることに注意する。
【0069】次いで、VP(i)≧2が判別され(ステップG2)、VP(i)≧2の場合は上記(a)の理由で追尾不能表示のフラグRNG2に1が代入されて(ステップG3)リターンされる。一方、VP(i)≧2でなく、且つVP(i)=NGの場合は(ステップG4)、NGのカウンタ変数NNGがインクリメントされる(ステップG5)。
【0070】次に、VP(i)=0が判別されて(ステップG6)、VP(i)=0の場合はN0がインクリメントされる(ステップG7)。そして、VP(i)=1の場合は(ステップG8)、N1がインクリメントされる(ステップG9)。以上の動作が、i=12まで繰返される(ステップG10)。
【0071】こうして、NNGにはVP(i)=NGとなるベクトルパターン数が、N0にはVP(i)=0となるベクトルパターン数が、そしてN1にはVP(i)=1となるベクトルパターン数が代入されたことになる。
【0072】上記ステップG10でN=12の場合、次にNNG≧2であれば(ステップG11)、上記(b)の理由により、追尾不能表示フラグRNG2に1が代入される(ステップG13)。また、N0=N1の場合は(ステップG12)、上記(c)の理由で同様に追尾不能表示フラグRNG2に1が代入される。
【0073】そして、N0>N1が判別されて(ステップG14)、N0>N1の場合は変数VPに0が(ステップG15)、N0≦N1の場合はVPに1が代入されて(ステップG16)、リターンされる。
【0074】図12のフローチャートに戻って、ステップS30のサブルーチンCMPVECTPATが終了されると、続いてサブルーチンRECOGTRKZNE2が実行される(ステップS31)。これは、サブルーチンCMPVECTPATで求められたVPの値に基いて動体検出ゾーンの中から動体の存在する領域を検出するプログラムである。
【0075】ステップS30のサブルーチンCMPVECTPATで求められたVPは、領域i=9〜12のベクトルパターン2種(0〜1)のうち多い方のベクトルパターンであり、これをカメラの動きベクトルと判断する。したがって、動体検出ゾーンの2種の動きベクトルのうち、VPと等しくない方の動きベクトルをもった追尾ゾーンが、動体の存在する領域である。更に、動体の存在する領域が複数存在するときは、コントラストの高い領域が最終的に追尾ゾーンとされる。
【0076】図20はこの判断をするプログラムを示したものである。同図に於いて、先ずiに0が代入される(ステップH1)。そして、MAXCNTに−1が代入される(ステップH2)。次いで、VP(i)=VPであるか否かが判別される(ステップH3)
【0077】このステップH3にて、VP(i)=VPでない場合にコントラストCNT(i)とMAXCNTが比較され(ステップH4)、更にCNT(i)>MAXCNTであればMAXCNTにCNT(i)が代入される(ステップH5)。その後、iがTRKZNEに代入される(ステップH6)。
【0078】次に、i=8が否かが判別される(ステップH7)。ここで、i=8でない場合は、iがインクリメントされて(ステップH8)、以上の動作が繰返される。これにより、最終的に変数TRKZNEには、追尾ゾーンiが代入されることになる。
【0079】図12のフローチャートに戻り、ステップS32に於いて、RNG2=1のとき、追尾不能の表示が行われ、RNG2=1でない場合は、追尾マークが表示された後(ステップS33)、追尾演算TRACKのサブルーチンが実行される(ステップS34)。
【0080】図21は、サブルーチンTRACKを示したものである。同図に於いて、先ず、タイマtに0が設定される(ステップI1)。次いで、参照像のロードと代表点フィルタリング演算が行われる(ステップI2)。そして、サブルーチンVECTCALが行われる動きベクトルが求められる(ステップI3)。
【0081】ここで、信頼度変数RLBTY=NGか否かの判別がなされる(ステップI4)。このステップI4にて、RLBTY=NGの場合は追尾不能の表示が行われる(ステップI5)。一方、RLBTY=NGでない場合は、動きベクトルの値に応じて追尾マークの更新が行われる(ステップI6)。
【0082】次に、タイマがt>t0 (t0 は例えば1秒)であるか否かが判別され(ステップI7)、t>t0 のときは、次にtに0が設定されて(ステップI8)、基準像が更新される(ステップI9)。
【0083】次いで、コントラスト演算が行われ(ステップI10)、もしコントラスト不足でRLBTY=NGのときは(ステップI11)、追尾不能表示がなされる(ステップI12)。一方、上記ステップI11にて、RLBTY=NGでない場合は、再び基準像と参照像との相関演算が行われて追尾する。以上のように、所定時間毎に基準像が更新されることにより、移動中に少しずつ形状が変わるような物体にも追尾が可能となる。
【0084】図22は、同実施例の概略的な制御の流れを示すタイミングチャートである。同図(a)は画像を1/30sec毎に取込む様子を示したものである。同図(b)は動体検出ゾーンとカメラの動きベクトル検出ゾーンの代表点フィルタリングとコントラスト演算のタイミングを示したものである。また、同図(c)は動作ベクトルの演算のタイミングを示している。更に、同図(d)は、追尾演算のタイミングを示したものである。
【0085】初めに、図22(a)の第1画像を基準とし、第2画像と比較して動きベクトルが検出される。ここで、動きベクトルが検出されるときは、基準像はそのままに第1画像と第3画像から動きベクトルが求められる。同図は、最終的に第1画像と第4画像により動きベクトルが求まった場合を示している。このようにして、第5画像以降の追尾が開始される。尚、上述した実施例は、動体追尾システムへの適用例であるが、注視点を選択した後、直ちに撮影する銀塩カメラへの適用も可能である。また、追尾と同時に自動焦点を行う装置への適用も可能である。
【0086】
【発明の効果】以上のようにこの発明によれば、高速の物体の検出を可能にして、且つ相関演算のシフト量を小さくし、サンプリング時間を短くしても、低速で移動する物体を検出することのできる動体の動きベクトル検出装置を提供することができる。
【図面の簡単な説明】
【図1】この発明の一実施例で、動体の動きベクトル検出装置が適用されたカメラシステムの構成を示すブロック図である。
【図2】カメラの操作者が注視点を選択してから追尾するまでの表示例を示したもので、(a)は操作者が物体OBJの近傍に注視点マークP“+”を移動させた状態を示した図、(b)は同図(a)の“+”マークを中心に動体検出ゾーンがスーパーインポーズされた状態を示した図、(c)は追尾ゾーンの表わす領域に追尾マークがスーパーインポーズされた状態を示した図である。
【図3】図2の注視点のマークを移動させるための部材の配置を示した外観図である。
【図4】視線方向を検出し、それにより画面の任意の領域を指示するための原理図である。
【図5】眼の角膜反射像、瞳孔、虹彩の出力波形の一例を示した図である。
【図6】動体検出ゾーンとカメラの動き検出領域の一例を示した図である。
【図7】図6の動体検出ゾーンを複数のブロックに分割した例を示した図である。
【図8】図7の1つの追尾ゾーン内の16個の代表点画素配置を示した図である。
【図9】図8の中の1つの画素が、5つの画素の平均値で表されることを示した図である。
【図10】動きベクトル(移動量と方向)の検出の原理を示した図である。
【図11】代表点配置の一例を示した図である。
【図12】図12はこのカメラシステムの全体の制御動作を説明するフローチャートである。
【図13】基準像のコントラスト計算を実行するプログラムCNTCALのサブルーチンである。
【図14】基準像と参照像との間で相関演算を行うプログラムVECTCALのサブルーチンである。
【図15】動きベクトルのパターン分類プログラムVECTPATのサブルーチンである。
【図16】動体検出ゾーンの領域の全てのベクトルパターンがNGのときにのみ、変数RNGに1が代入されるプログラムRECOGNGのサブルーチンである。
【図17】動体検出ゾーンの領域のベクトルパターン数(種類)を求めるプログラムRECOGPATNUMのサブルーチンである。
【図18】動体検出ゾーンから最大コントラストの追尾ゾーンを検出するプログラムRECOGTRKZNE1のサブルーチンである。
【図19】ベクトルパターンVPを求めるプログラムCMPVECTPATのサブルーチンである。
【図20】サブルーチンCMPVECTPATで求められたVPの値に基いて動体検出ゾーンの中から動体の存在する領域を検出するプログラムRECOGTRKZNE2のサブルーチンである。
【図21】追尾演算のプログラムTRACKのサブルーチンである。
【図22】この発明の一実施例の概略的な制御の流れを示すタイミングチャートである。
【符号の説明】
10…ビデオカメラ、11…Y/C分離回路、12…A/D変換回路、13a、13b…ビデオRAM、14…CPU、15…RAM、16…ROM、17…CRTコントローラ、18…ゲート、19…スーパーインポーザ、20…表示部、23…注視点移動部材、24…注視点選択部材、38…動体検出ゾーン、39、40、41、42…動きベクトル検出領域。
【0001】
【産業上の利用分野】この発明は動体の動きベクトル検出装置に関し、特に動体に追尾領域を合わせてその動きベクトルを検出する動体の動きベクトル検出装置に関するものである。
【0002】
【従来の技術】従来より、映像の比較的広い領域を複数に分割し、その中から動体の存在する領域を判別する動体検出を行う装置が、種々開発されている。そして、例えば特公昭59−32743号公報には、相関演算を使用して物体を追尾する相関追尾装置が開示されている。
【0003】
【発明が解決しようとする課題】ところで、このような装置に於いて、比較する2つの映像のサンプリング時間間隔をΔTとして一定とすると、動きベクトルの検出範囲、すなわち相関演算のシフト量は、τ=0,1,…,Nである。シフト量Nをあまり大きくすると、演算時間が長くなってしまうので、なるべく小さいものが望ましい。しかしながら、Nを小さくすると、シフト量の検出範囲が狭くなってしまう。ΔTを短くして高速の物体を検出可能にすると、低速の物体の検出ができなくなる。逆に、ΔTを長くして低速の物体を検出可能にすると、高速の物体の検出が不可能になってしまう。
【0004】この発明は上記課題に鑑みてなされたもので、高速の物体の検出を可能にして、且つ相関演算のシフト量を小さくし、サンプリング時間を短くしても、低速で移動する物体を検出することのできる動体の動きベクトル検出装置を提供することを目的とする。
【0005】
【課題を解決するための手段】すなわちこの発明は、第1の時刻に於いて被写体の所定領域から第1の映像を検出する第1の検出手段と、上記第1の時刻とは異なる第2の時刻で上記所定領域から第2の映像を検出する第2の検出手段と、上記第1の映像を基準として第2の映像を所定のピッチずつシフトさせながら上記第1の映像と第2の映像の最も一致するシフト量を求める相関演算を行う相関演算手段と、上記第1及び第2の映像の最良の一致点のシフト量から所望の映像の動きベクトルを検出する第3の検出手段とを具備し、上記相関演算手段は、上記所望の映像が動いていないと判断された場合に上記第2の映像のみ更新して再度上記相関演算を行い、上記動きベクトルを演算することを特徴とする。
【0006】
【作用】この発明の動体の動きベクトル検出装置にあっては、動きベクトルの検出範囲をなるべく小さくして、またサンプリング時間間隔をなるべく短くする。そして、最初は高速の物体の検出を可能にし、物体の動きが検出されない場合に、比較する2つの映像のうち、後の時点に参照像と称されるサンプリングした映像のみを更新する。そして、再び同様の相関を行い、シフト量を繰返し求める。これにより、広範囲の動きベクトルの検出を行うことができる。
【0007】
【実施例】以下、図面を参照してこの発明の実施例を説明する。図1は、この発明の一実施例で、動体の動きベクトル検出装置が適用されたカメラシステムの構成を示すブロック図である。
【0008】同図に於いて、ビデオカメラ10から出力されるNTSCコンポジット信号の一方は、Y/C分離回路11で輝度信号が分離され、輝度信号のみA/D変換回路12でAD変換されてビデオRAM13aに入力される。CPU14は、ビデオRAM13a、13b、14、RAM15及びROM16と結合しているもので、システム全体の制御、演算を行う。
【0009】上記ROM16には、予め制御の手順がプログラムされている。また、RAM15は、演算途中のデータの記憶、演算結果のデータの記憶に用いられる。更に、ビデオRAM13bは、CPU14で演算された注視点の位置を表示したり追尾マークの表示データを記憶するものである。
【0010】ビデオRAM13bに記憶された表示データは、CRTコントローラ17のタイミングに従ってゲート18を通り、スーパーインポーザ19の一方の入力となる。このスーパーインポーザ19は、ビデオカメラ10の映像信号に、ゲート18の出力である注視点の位置や追尾マーク等を重ねて表示するための装置である。スーパーインポーザ19の出力は、表示部20に表示される。
【0011】尚、CPU14に入力される信号s1は、カメラの操作者が注視点を移動させるための信号である。また、スイッチSWは、注視点を保持し、追尾を開始するためのスイッチである。
【0012】図2は、カメラの操作者が注視点を選択してから追尾するまでの表示例を示したものである。図2(a)は、操作者が物体OBJの近傍に注視点マークP“+”を移動させた状態を示した図である。ここで、スイッチSW(図1参照)がオンされると、同図(a)の“+”マークを中心に、図2(b)に示されるように広い領域の動体検出ゾーンがスーパーインポーズされる。次いで、後に詳述する演算により動体領域が特定されて追尾が開始される。尚、同図(b)の表示はなくともよいものである。更に、図2(c)は、後述する追尾ゾーンの表す領域に、追尾マークがスーパーインポーズされた状態を示したものである。
【0013】図3は、注視点のマーク(図2の“+”)を移動させるための部材の配置を示したものである。これは銀塩カメラへの応用例であり、その詳細は本出願人が先に出願した特願平2−235074号に詳しく述べてある。
【0014】図3に於いて、カメラ本体21のグリップ22上に、注視点移動部材23が配置されている。そして、この注視点移動部材23の中心に注視点選択部材24(図1のスーパーインポーザ19に相当する)が配置されている。注視点選択部材24はレリーズ釦を兼用している。
【0015】また、図4及び図5は、視線方向を検出し、それにより画面の任意の領域を指示するための原理図である。これらについて、例えば特開平2−5号公報や特開平2−65834号公報、或いは電子通信学会技術報告PRU88−73、PP.17−24に詳しく述べられている。これらは、眼の瞳孔と角膜反射像(第1プリキンエ像)、または虹彩と角膜反射像の組合わせから視線方向を検出するもので、注視点を指示する方法として注目されている。
【0016】図4に於いて、25は赤外LEDであり、この赤外LED25からレンズ26を介して平行光束が作られる。また、図中27、28はダイクロイックミラー、29は撮影者の眼、30はCCD、31はレンズである。
【0017】赤外LED25から発せられた赤外線は、レンズ26、ダイクロイックミラー27、28を介して眼29に入る。そして、眼29で反射された光は、ダイクロイックミラー28、27及びレンズ31を介してCCD30で撮像され、上述した原理で視線方向が計算される。これにより、撮影レンズ32、ミラー33、マット34、コンデンサーレンズ35、ペンタプリズム36及びダイクロイックミラー28を介して、撮影者が観測する注視点の位置を検出することが可能となる。図5は、眼の角膜反射像、瞳孔、虹彩の出力波形の一例を示したものである。図6は、動体検出ゾーンとカメラの動き検出領域の一例を示した図である。
【0018】画面37内の動体検出ゾーン38は、更にこのゾーンの中が、後述するように複数ブロックに分割され、この中から1つのブロックが選択され、追尾ゾーンに特定されるようになっている。選択されるブロックは動体が最優先されるが、その場合、カメラが動いているのか、物体が動いているのかの判別が課題となる。尚、図中S1〜S4で示される領域は、カメラの動きを判別するために設定した動きベクトル検出領域39〜42である。
【0019】図7は、図6の動体検出ゾーン38を複数のブロックに分割した例である。同図(a)〜(d)に示されるように、各々がオーバラップするように、9ブロックの追尾ゾーン(a11、a12、a13、a21、a22、a23、a31、a32、a33)に分割され、それぞれの領域の動きベクトルを検出することになる。
【0020】これら9ブロックの追尾ゾーンのうち、1つの追尾ゾーン内は図8に示されるように、16個の代表点画素(P( 1,1)、P( 1,2)、…、P( 4,4))で構成されている。
【0021】また、図9は図8の中の1つの画素(P11)が、5つの画素(P(0)、P(1)、P(2)、P(3)、P(4))の平均値で表されることを示す図である。この平均値は、数1の関係式のようにして求められる。
【0022】
【数1】
【0023】図10は、この発明で採用された動きベクトル(移動量と方向)の検出の原理を示す図である(参考文献:テレビジョン学会技術報告Vol.11,No.3,PP.43−48,PP0E’87−12(May,1987)。
【0024】動きベクトル検出法としては種々の方法があるが、精度スピードの点から、以下に述べる代表点マッチングがたいへんすぐれている。これは画面上のいくつかの画素(以下これを代表点と称する)に着目し、現在の位置と所定時間後の位置の変化から、動きベクトルを決定する方法である。
【0025】図10の模式図に於いて、現在の代表点Pが同図(a)に示される位置にあるものとする。所定時間後のこの代表点Pと最もレベルが一致する点を、同図(b)のp1〜p9と比較することにより求める。ここでは、その最もレベルが近い画素の位置へ代表点が移動したと判断し、該当するベクトルを動きベクトルと判断する。実際は精度を上げるため、代表点の数を増やしている。
【0026】図11は、代表点配置の一例を示したものである。同図に於いて、水平方向に15ドットおきに34ポイント、垂直方向に15ライン毎に34ポイントの代表点を配置している。尚、追尾ゾーンは、上述したように、4×4=16の代表点より構成される。また、ゾーンB(追尾ゾーンAの動きベクトル検出範囲)は、水平、垂直方向ともに±2ポイントに設定される。
【0027】すなわち、図11で代表点Pの検出範囲は、図示の如く計25ポイントとなる。また、図9で説明したように、各ポイントに相当する画素のレベルは、周囲4点の画素との加算平均を行うことにより、ローパスフィルタ効果をもたせている。これにより、エッジの鋭い画像を得て、細いラインへの検出能力を高めている。次に、図12乃至図21のフローチャートを参照して、同実施例の動作を説明する。
【0028】図12はこのカメラシステムの全体の制御動作を説明するフローチャートである。同図に於いて、先ず、注視点の設定が行われる(ステップS1)。ここで、CPU14は、注視点の座標を読取る。次に、設定された注視点を中心にして、現時点に於ける動体検出ゾーンと、カメラの動きベクトル検出ゾーン(図6及び図1111参照)の代表点のポイントのレベルが求められる(これを基準像のロード及び代表点フィルタリングと称するものとする)。次いで、所定時間(1/30sec)後、同様にして上記と同領域の代表点ポイントのレベルが求められる(これを参照像のロード及び代表点フィルタリングと称するものとする)(ステップS2)。
【0029】そして、iに0が初期設定される(ステップS3)。ここで、iは図7に示された9つの追尾ゾーン(i=0〜8)と、カメラの動きベクトル検出ゾーン(i=9〜12)の領域を表す変数である。次に、サブルーチンCNTCALにて、i=0〜12の各領域のコントラストが求められる(ステップS4)。各々の領域は、図8に示されるように、16個の代表点から成る。いま、それぞれの代表点を図8のようにP( 1,1)、P( 1,2)、…、P( 4,4)とし、記述を簡単にするために、各々代表点の出力レベルも同じ記号P(i,j)で表わすものとする。
【0030】図13は、基準像のコントラスト計算を実行するCNTCALのサブルーチンである。先ず、コントラストCNTの演算が、次のように行われる(ステップA1)。すなわち、X方向のコントラストをCNTX、Y方向のコントラストをCNTY、そしてコントラストをCNTとすると、それぞれ数2、数3及び数4の関係式のようになる。
【0031】
【数2】
【0032】
【数3】
【0033】
【数4】
【0034】次にCNTが所定レベルC1と比較され(ステップA2)、映像のコントラストが不足するとき、すなわちCNT<C1のときは信頼度なしとして、RLBTYにNGが代入される(ステップA3)。この後、コントラスト演算のサブルーチンCNTCALからリターンされる。
【0035】図12のフローチャートに戻り、信頼度変数RLBTYが判別され(ステップS5)、RLBTY=NGのときベクトルパターンVP(i)にNGが代入される(ステップS6)。ここでVP(i)は、動きベクトルの種類をパターン分類するための変数であり、VP(i)=NGとは動きベクトルを検出できないことを意味する。
【0036】そして、変数CNT(i)にCNTが代入され(ステップS7)、i=12が判別される(ステップS8)。ここで、i=12でなければiに1を加えた後(ステップS9)、ステップS4に戻る。一方、ステップS8に於いて、i=12であればコントラスト演算(ステップS4〜S9)を終了する。
【0037】次に、更新回数の変数LOOPに0が設定された後(ステップS10)、再び領域選択iに0が初期設定される(ステップS11)。CPU14は、先ずi=0に相当する領域の代表点の信号を選択すると、図1414に示されるサブルーチンVECTCALに於いて、上記基準像と参照像との間で相関演算を行う(ステップS12)。
【0038】図14に於いて、いま基準像のP(i,j)の位置(図8参照)に相当する信号レベルをPS(i.j)、参照像の信号レベルをPR(i,j)とすると、相関値出力CORR(S)は数5の関係式の如くなる(ステップB1)。
【0039】
【数5】
ここでH=0,1,2、V=0,1,2であり、H,VはX方向、Y方向へのずらし量に相当する。
【0040】次に、CORR(H,V)の極小値MIN(CORR(H,V))が求められる。このときのHが変数VECTHに、Vが変数VECTVに代入される。そして、上述したように求められた領域iのコントラスト信号CNT(i)により、上記MIN(CORR(H,V))が除算される(ステップB2)。2つの像が真に一致したことにより、極小値MIN(CORR(H,V))が求められるとき、MIN(CORR(H,V))/CNT(i)は、所定の値βより小さくなり、大きい程信頼度が悪くなることが実験的にも確認されている。
【0041】ここで、MIN(CORR(H,V))/CNT(i)<βが判別され(ステップB3)、MIN(CORR(H,V))/CNT(i)<βでないとき、信頼度なしとして変数RLBTYにNGが代入される(ステップB4)。
【0042】こうして、サブルーチンVECTCALからリターンされ、図12のステップ13へ進む。ここで、RLBTY=NGであれば、ベクトルパターンVP(i)にNGが代入される(ステップS14)。
【0043】次に、変数VH(i)に水平方向動きベクトルVECTHが、変数VV(i)に垂直方向の動きベクトルVECTVが代入される(ステップS15)。その後、全ての領域i=0〜12について、以上の動きベクトルの演算が終了したか否かが判別される(ステップS16)。終了していない場合は、i=12になるまでiに1が加えられ(ステップS17)、ステップS12に戻る。一方、上記ステップS16に於いてi=12であれば、次に各々の領域i=0〜12の動きベクトル(VH(i),VV(i))を分類するためのサブルーチンVECTPATが実行される(ステップS18)。
【0044】図15は、動きベクトルのパターン分類プログラムVECTPATのサブルーチンである。同図に於いて、先ず領域を選択するための変数iに0が代入され(ステップC1)、またベクトルパターンの番号を表す変数kに0が代入される(ステップC2)。次いで、ベクトルパターンVP(i)がNGであるか否かが判別され(ステップC3)、NGでなければVP(i)が本来パターン分類としてあり得ない定数INITであるかどうかが判別される(ステップC4)。
【0045】INITは、本プログラムには記されていないが、図12のフローチャートの開始直後に初期設定される値である。具体的には、INITは0〜12以外の値であればよい。もし、VP(i)=INITであるときは、VP(i)にkの値が代入される(ステップC5)。次いで、変数jにi+1が代入され(ステップC6)、VP(j)=NGでなく(ステップC7)、且つVP(j)=INIT(ステップC8)のとき、動きベクトルの差異|VH(i)−VH(j)|、|VV(i)−VV(j)|が求められて、それぞれ変数ΔVH、ΔVVに代入される(ステップC9)。
【0046】ここで、ΔVH<α、且つΔVV<αのとき(ステップC10)、ベクトル(VH(i),VV(i))とベクトル(VH(j),VV(j)は同一ベクトルと判断されて、VP(j)にkが代入される(ステップC11)。次に、j=12であるか否かが判別され(ステップC12)、j=12でないときは、j+1がjに代入され(ステップC13)、ステップC7に戻って同様の演算が実行される。
【0047】上記ステップC7でYES、ステップC8でNO、ステップC10でNOの場合も、j=12であるか否かが判別され、j=12でないならば、jにj+1が代入されて同様の演算が繰返される。
【0048】ステップC12に於いて、j=12であれば、次にベクトルパターンの種類を表す変数kにk+1が代入される(ステップC14)。そして、i=12であれば(ステップC15)、本サブルーチンからリターンする。上記ステップC15に於いて、i=12でなければ、変数iにi+1が代入されて(ステップC16)、再びステップC3に戻り、以上のループが繰返される。表1は、以上のループで実行される演算の具体例を示したものである。
【0049】
【表1】
【0050】この例に示されるように、ベクトル(VH(i),VV(i))が所定の誤差で一致していれば、ベクトルパターンVP(i)には同一の番号が与えられる。そして、ベクトルパターンが異なる毎に順に、0,1,2,…の数字が与えられる。また、VP(i)=NGはそのままである。
【0051】VECTPATのサブルーチンの処理が終了すると(ステップS18)、図16に示されるサブルーチンRECOGNGが実行される(ステップS19)。このサブルーチンでは、変数iに0が代入され(ステップD1)、VP(i)=NGであれば(ステップD2)、次にi=8であるか否かが判別される(ステップD3)。ここで、i=8でなければiにi+1が代入され(ステップD4)、その後ステップD2に戻る。
【0052】上記ステップD3でi=8であれば、変数RNGに1が代入される(ステップD5)。また、上記ステップD2に於いてVP(i)=NGでなければ、変数RNGに0が代入される(ステップD6)。
【0053】すなわち、このサブルーチンは、動体検出ゾーン(i=0〜8)の領域の全てのベクトルパターンがNGのときにのみ、変数RNGに1が代入されるプログラムである。
【0054】図12のフローチャートに戻り、ステップS20に於いて、RNG=1のとき、追尾不能の表示が行われる(ステップS21)。一方、上記ステップS20にてRNG=1でないときは、次にサブルーチンRECOGPATNUMが実行される(ステップS22)。
【0055】図17に示されるように、このプログラムは動体検出ゾーン(i=0〜8)の領域のベクトルパターン数(種類)を求めるサブルーチンである。ベクトルパターンVP(i)は、上述したサブルーチンVECTPATで0から順に分類されているので、VP(i)の最大値を求め、それに1を加えた値がベクトルパターン数に等しくなる。
【0056】先ず、動体検出ゾーンを表す変数iに0が代入される(ステップE1)。次いで、変数VPNUMに−1が代入される(ステップE2)。そして、VP(i)=NGが判別されて(ステップE3)、VP(i)=NGでなければ、続いてVP(i)とVPNUMが比較される(ステップE4)。ここで、VP(i)>VPNUMであればVPNUMにVP(i)が代入される(ステップE5)。
【0057】次に、変数iが判別されて(ステップE6)、i=8でなければiにi+1が代入された後(ステップE7)、ステップE3に戻り、以上の動作が繰返される。上記ステップE3に於いて、VP(i)=NGであればステップE6に進む。以上の結果、VP(i)(i=0〜8)の最大値がVPNUMに代入される。
【0058】そして、VPNUMの値が判別されて(ステップE8)、VPNUM=0であれば、ベクトルパターン数は1つということでベクトルパターン数を表す変数PNUMに1が代入される(ステップE9)。一方、上記ステップE8にて、VPNUM=0でなく、更にVPNUM≧2でない場合は(ステップE10)、PNUMに2が代入される。また、上記ステップE10にてPNVM≧2である場合は、PNUMに3が代入される。その後、このサブルーチンはリターンされる。
【0059】再度図12のフローチャートに戻って、ステップS23に於いて、ベクトルパターン数PNUM=1の場合は、動体検出ゾーンに存在する物体の動きベクトルは1種類ということである。この場合の動体検出ゾーンの物体の動きの可能性としては、(i)物体は動体検出ゾーンの中で一体となって一方向に動いている、(ii)物体は動いていない、(iii)物体は動いていないがカメラが動いている、(iv)動体検出ゾーン内の一部が動いているが動きが遅く検出できない等が考えられる。
【0060】同実施例の考え方としては、上記(i)〜(iii)の場合は図7の9領域の中で、最大コントラストの領域を追尾ゾーン、または測距ゾーンとする。また、上記(iv)の場合は、基準像はそのままにして参照像を更新することにより、再び動きベクトルを検出する。この更新回数は、変数LOOPで決定される。
【0061】次いで、LOOP=3が判別され(ステップS24)る。ここで、LOOP=3でない場合は、次に参照画像の更新がなされ(ステップS25)、変数LOOPにLOOP+1が代入された後(ステップS26)、ステップS11に戻る。一方、上記ステップS24に於いて、LOOP=3になってもベクトルパターン数PNUM=1である場合は、次に、図18に示されるように、サブルーチンRECOGTRKZNE1が実行される。
【0062】このサブルーチンは、動体検出ゾーンから最大コントラストの追尾ゾーンを検出するプログラムである。図18に於いて、先ず領域を表す変数iに0が代入される(ステップF1)。次いで、変数MAXCNTに−1が代入される(ステップF2)。そして、動体検出ゾーン(i=0〜8)の各領域のコントラスト値CNT(i)とMAXCNTが比較される(ステップF3)。
【0063】このステップF3に於いて、CNT(i)>MAXCNTの場合は、MAXCNTにCNT(i)が代入される(ステップF4)。そして、最終的に決定される追尾ゾーンiがTRKZNEに代入される(ステップF5)。こうして、i=8になってこのサブルーチンがリターンされるまで(ステップF6)、変数iにi+1が代入されて(ステップF7)、以上のステップF3〜F7の動作が繰返される。
【0064】次に、図12のフローチャートに於いて、上記TRKZNEの表す領域に追尾マークがスーパーインポーズされる(図2(c)の状態)。続いて、サブルーチンTRACKで追尾が行われる(ステップS33)。
【0065】また、上記ステップS23に於いて、ベクトルパターン数PNUMが1でない場合は、次にPNUM=3か否かが判別される(ステップS28)。ここで、PNUM=3の場合は、動きの異なる物体が混在するので、追尾不能の表示がなされる(ステップS29)。
【0066】いま、上記ステップS28にて、PNUM=3でないときは、自動的にPNUM=2となる。このときは、一方の動きベクトルは、カメラの動きである可能性が高い。このときは、動体検出ゾーンとは異なる画面の4隅に固定配置された4つの動きベクトル検出領域39〜42(図6参照)(i=9〜12)の動きベクトルと比較されることにより、動体検出ゾーンの2つの動きベクトルの中から真に物体の動いている領域が特定される。
【0067】サブルーチンCMPVECTPAT(ステップS30)は、(a)上記動体検出ゾーンとは異なる4つの領域(i=9〜12)の中に動体検出ゾーンとは異なる動きベクトルVP(i)が観測された場合は追尾不能とする、(b)VP(i)=NG(検出不能)の領域が2つ以上ある場合は追尾不能とする、(c)VP(i)(i=9〜12)の中で2種類の動きベクトルが存在し、両方のベクトルパターンの存在する領域の数が同じ場合(例えば2:2、1:1)は、追尾不能とする、ことを基本とする。
【0068】次に、図19のサブルーチンCMPVECTPATを説明する。同図に於いて、先ず、領域を表す変数iに9が、そして変数NNG、N0、N1、RNG2に、それぞれ0が代入される(ステップG1)。この場合、i=0〜8のベクトルパターンVP(i)の最大値は1であることに注意する。
【0069】次いで、VP(i)≧2が判別され(ステップG2)、VP(i)≧2の場合は上記(a)の理由で追尾不能表示のフラグRNG2に1が代入されて(ステップG3)リターンされる。一方、VP(i)≧2でなく、且つVP(i)=NGの場合は(ステップG4)、NGのカウンタ変数NNGがインクリメントされる(ステップG5)。
【0070】次に、VP(i)=0が判別されて(ステップG6)、VP(i)=0の場合はN0がインクリメントされる(ステップG7)。そして、VP(i)=1の場合は(ステップG8)、N1がインクリメントされる(ステップG9)。以上の動作が、i=12まで繰返される(ステップG10)。
【0071】こうして、NNGにはVP(i)=NGとなるベクトルパターン数が、N0にはVP(i)=0となるベクトルパターン数が、そしてN1にはVP(i)=1となるベクトルパターン数が代入されたことになる。
【0072】上記ステップG10でN=12の場合、次にNNG≧2であれば(ステップG11)、上記(b)の理由により、追尾不能表示フラグRNG2に1が代入される(ステップG13)。また、N0=N1の場合は(ステップG12)、上記(c)の理由で同様に追尾不能表示フラグRNG2に1が代入される。
【0073】そして、N0>N1が判別されて(ステップG14)、N0>N1の場合は変数VPに0が(ステップG15)、N0≦N1の場合はVPに1が代入されて(ステップG16)、リターンされる。
【0074】図12のフローチャートに戻って、ステップS30のサブルーチンCMPVECTPATが終了されると、続いてサブルーチンRECOGTRKZNE2が実行される(ステップS31)。これは、サブルーチンCMPVECTPATで求められたVPの値に基いて動体検出ゾーンの中から動体の存在する領域を検出するプログラムである。
【0075】ステップS30のサブルーチンCMPVECTPATで求められたVPは、領域i=9〜12のベクトルパターン2種(0〜1)のうち多い方のベクトルパターンであり、これをカメラの動きベクトルと判断する。したがって、動体検出ゾーンの2種の動きベクトルのうち、VPと等しくない方の動きベクトルをもった追尾ゾーンが、動体の存在する領域である。更に、動体の存在する領域が複数存在するときは、コントラストの高い領域が最終的に追尾ゾーンとされる。
【0076】図20はこの判断をするプログラムを示したものである。同図に於いて、先ずiに0が代入される(ステップH1)。そして、MAXCNTに−1が代入される(ステップH2)。次いで、VP(i)=VPであるか否かが判別される(ステップH3)
【0077】このステップH3にて、VP(i)=VPでない場合にコントラストCNT(i)とMAXCNTが比較され(ステップH4)、更にCNT(i)>MAXCNTであればMAXCNTにCNT(i)が代入される(ステップH5)。その後、iがTRKZNEに代入される(ステップH6)。
【0078】次に、i=8が否かが判別される(ステップH7)。ここで、i=8でない場合は、iがインクリメントされて(ステップH8)、以上の動作が繰返される。これにより、最終的に変数TRKZNEには、追尾ゾーンiが代入されることになる。
【0079】図12のフローチャートに戻り、ステップS32に於いて、RNG2=1のとき、追尾不能の表示が行われ、RNG2=1でない場合は、追尾マークが表示された後(ステップS33)、追尾演算TRACKのサブルーチンが実行される(ステップS34)。
【0080】図21は、サブルーチンTRACKを示したものである。同図に於いて、先ず、タイマtに0が設定される(ステップI1)。次いで、参照像のロードと代表点フィルタリング演算が行われる(ステップI2)。そして、サブルーチンVECTCALが行われる動きベクトルが求められる(ステップI3)。
【0081】ここで、信頼度変数RLBTY=NGか否かの判別がなされる(ステップI4)。このステップI4にて、RLBTY=NGの場合は追尾不能の表示が行われる(ステップI5)。一方、RLBTY=NGでない場合は、動きベクトルの値に応じて追尾マークの更新が行われる(ステップI6)。
【0082】次に、タイマがt>t0 (t0 は例えば1秒)であるか否かが判別され(ステップI7)、t>t0 のときは、次にtに0が設定されて(ステップI8)、基準像が更新される(ステップI9)。
【0083】次いで、コントラスト演算が行われ(ステップI10)、もしコントラスト不足でRLBTY=NGのときは(ステップI11)、追尾不能表示がなされる(ステップI12)。一方、上記ステップI11にて、RLBTY=NGでない場合は、再び基準像と参照像との相関演算が行われて追尾する。以上のように、所定時間毎に基準像が更新されることにより、移動中に少しずつ形状が変わるような物体にも追尾が可能となる。
【0084】図22は、同実施例の概略的な制御の流れを示すタイミングチャートである。同図(a)は画像を1/30sec毎に取込む様子を示したものである。同図(b)は動体検出ゾーンとカメラの動きベクトル検出ゾーンの代表点フィルタリングとコントラスト演算のタイミングを示したものである。また、同図(c)は動作ベクトルの演算のタイミングを示している。更に、同図(d)は、追尾演算のタイミングを示したものである。
【0085】初めに、図22(a)の第1画像を基準とし、第2画像と比較して動きベクトルが検出される。ここで、動きベクトルが検出されるときは、基準像はそのままに第1画像と第3画像から動きベクトルが求められる。同図は、最終的に第1画像と第4画像により動きベクトルが求まった場合を示している。このようにして、第5画像以降の追尾が開始される。尚、上述した実施例は、動体追尾システムへの適用例であるが、注視点を選択した後、直ちに撮影する銀塩カメラへの適用も可能である。また、追尾と同時に自動焦点を行う装置への適用も可能である。
【0086】
【発明の効果】以上のようにこの発明によれば、高速の物体の検出を可能にして、且つ相関演算のシフト量を小さくし、サンプリング時間を短くしても、低速で移動する物体を検出することのできる動体の動きベクトル検出装置を提供することができる。
【図面の簡単な説明】
【図1】この発明の一実施例で、動体の動きベクトル検出装置が適用されたカメラシステムの構成を示すブロック図である。
【図2】カメラの操作者が注視点を選択してから追尾するまでの表示例を示したもので、(a)は操作者が物体OBJの近傍に注視点マークP“+”を移動させた状態を示した図、(b)は同図(a)の“+”マークを中心に動体検出ゾーンがスーパーインポーズされた状態を示した図、(c)は追尾ゾーンの表わす領域に追尾マークがスーパーインポーズされた状態を示した図である。
【図3】図2の注視点のマークを移動させるための部材の配置を示した外観図である。
【図4】視線方向を検出し、それにより画面の任意の領域を指示するための原理図である。
【図5】眼の角膜反射像、瞳孔、虹彩の出力波形の一例を示した図である。
【図6】動体検出ゾーンとカメラの動き検出領域の一例を示した図である。
【図7】図6の動体検出ゾーンを複数のブロックに分割した例を示した図である。
【図8】図7の1つの追尾ゾーン内の16個の代表点画素配置を示した図である。
【図9】図8の中の1つの画素が、5つの画素の平均値で表されることを示した図である。
【図10】動きベクトル(移動量と方向)の検出の原理を示した図である。
【図11】代表点配置の一例を示した図である。
【図12】図12はこのカメラシステムの全体の制御動作を説明するフローチャートである。
【図13】基準像のコントラスト計算を実行するプログラムCNTCALのサブルーチンである。
【図14】基準像と参照像との間で相関演算を行うプログラムVECTCALのサブルーチンである。
【図15】動きベクトルのパターン分類プログラムVECTPATのサブルーチンである。
【図16】動体検出ゾーンの領域の全てのベクトルパターンがNGのときにのみ、変数RNGに1が代入されるプログラムRECOGNGのサブルーチンである。
【図17】動体検出ゾーンの領域のベクトルパターン数(種類)を求めるプログラムRECOGPATNUMのサブルーチンである。
【図18】動体検出ゾーンから最大コントラストの追尾ゾーンを検出するプログラムRECOGTRKZNE1のサブルーチンである。
【図19】ベクトルパターンVPを求めるプログラムCMPVECTPATのサブルーチンである。
【図20】サブルーチンCMPVECTPATで求められたVPの値に基いて動体検出ゾーンの中から動体の存在する領域を検出するプログラムRECOGTRKZNE2のサブルーチンである。
【図21】追尾演算のプログラムTRACKのサブルーチンである。
【図22】この発明の一実施例の概略的な制御の流れを示すタイミングチャートである。
【符号の説明】
10…ビデオカメラ、11…Y/C分離回路、12…A/D変換回路、13a、13b…ビデオRAM、14…CPU、15…RAM、16…ROM、17…CRTコントローラ、18…ゲート、19…スーパーインポーザ、20…表示部、23…注視点移動部材、24…注視点選択部材、38…動体検出ゾーン、39、40、41、42…動きベクトル検出領域。
【特許請求の範囲】
【請求項1】 第1の時刻に於いて被写体の所定領域から第1の映像を検出する第1の検出手段と、上記第1の時刻とは異なる第2の時刻で上記所定領域から第2の映像を検出する第2の検出手段と、上記第1の映像を基準として第2の映像を所定のピッチずつシフトさせながら上記第1の映像と第2の映像の最も一致するシフト量を求める相関演算を行う相関演算手段と、上記第1及び第2の映像の最良の一致点のシフト量から所望の映像の動きベクトルを検出する第3の検出手段とを具備し、上記相関演算手段は、上記所望の映像が動いていないと判断された場合に上記第2の映像のみ更新して再度上記相関演算を行い、上記動きベクトルを演算することを特徴とする動体の動きベクトル検出装置。
【請求項1】 第1の時刻に於いて被写体の所定領域から第1の映像を検出する第1の検出手段と、上記第1の時刻とは異なる第2の時刻で上記所定領域から第2の映像を検出する第2の検出手段と、上記第1の映像を基準として第2の映像を所定のピッチずつシフトさせながら上記第1の映像と第2の映像の最も一致するシフト量を求める相関演算を行う相関演算手段と、上記第1及び第2の映像の最良の一致点のシフト量から所望の映像の動きベクトルを検出する第3の検出手段とを具備し、上記相関演算手段は、上記所望の映像が動いていないと判断された場合に上記第2の映像のみ更新して再度上記相関演算を行い、上記動きベクトルを演算することを特徴とする動体の動きベクトル検出装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図7】
【図9】
【図6】
【図8】
【図10】
【図11】
【図13】
【図16】
【図17】
【図12】
【図14】
【図18】
【図19】
【図15】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図7】
【図9】
【図6】
【図8】
【図10】
【図11】
【図13】
【図16】
【図17】
【図12】
【図14】
【図18】
【図19】
【図15】
【図20】
【図21】
【図22】
【公開番号】特開平5−292377
【公開日】平成5年(1993)11月5日
【国際特許分類】
【出願番号】特願平4−89091
【出願日】平成4年(1992)4月9日
【出願人】(000000376)オリンパス光学工業株式会社 (11,466)
【公開日】平成5年(1993)11月5日
【国際特許分類】
【出願日】平成4年(1992)4月9日
【出願人】(000000376)オリンパス光学工業株式会社 (11,466)
[ Back to top ]