以下に本発明の実施の形態を説明するが、本明細書に記載した発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が明細書に記載されていることを確認するためのものである。従って、明細書には記載されているが、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、明細書に記載されている発明が、全て請求されていることを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出願、または追加される発明の存在を否定するものではない。
請求項1の画像処理装置は、移動するオブジェクトを明確に表示する画像処理装置(例えば、図1の監視カメラシステム1)であって、画像の中の移動するオブジェクト(例えば、図3のオブジェクト51)の特徴点(例えば、図3の追尾点51A)を検出する特徴点検出手段(例えば、図1の追尾対象検出部24)と、前記特徴点検出手段により検出された前記特徴点に基づいて、前記画像の中の前記オブジェクトの移動を追尾する追尾手段(例えば、図1の追尾対象検出部24)と、前記追尾手段による追尾結果に基づいて、前記画像の中の前記オブジェクトの周囲に予め設定された大きさの補正領域(例えば、図3の補正対象エリア52)を設定する補正領域設定手段(例えば、図1のエリア設定部25)と、前記画像の中の前記補正領域内の画像を補正する補正手段(例えば、図1の画像補正部22)と、前記補正領域内が前記補正手段により補正された画像の表示を制御する表示制御手段(例えば、図1の画像ディスプレイ23)とを備える。
請求項2の画像処理装置は、前記補正手段が、前記画像のぼけ(例えば、フォーカスぼけ)を補正するようにすることができる。
請求項3の画像処理装置は、前記補正手段が、前記補正領域内の画像を特定する制御信号と、画像のぼけの度合い表すパラメータ(例えば、パラメータσ)を供給する供給手段(例えば、図56の制御信号生成部741)と、前記制御信号に基づいて特定された前記補正領域内の画像の特徴を検出し、検出された特徴を表す特徴コードを出力する特徴検出手段(例えば、図56の画像特徴検出部742)と、前記画像のぼけの度合いを表すパラメータと、前記特徴検出手段により出力された特徴コードに対応する係数を記憶する記憶手段(例えば、図56の係数ROM744)と、前記記憶手段から、前記パラメータと前記特徴検出手段により出力された前記特徴コードに対応する係数を読み出す読み出し手段(例えば、図56のアドレス演算部743)と、前記読み出し手段により読み出された係数に基づいて、入力画像の画素の値に対して積和演算を行う積和演算手段(例えば、図56の積和演算部746)と、前記積和演算手段による演算結果と前記入力画像の画素の値を選択して出力する選択出力手段(例えば、図56の画像合成部747)とを備え、前記補正領域内の画像のぼけを除去するように補正することができる。
請求項4の画像処理装置は、前記特徴検出手段が、入力画像の中から、積和演算を行う画素の周囲の、予め設定された第1の領域に含まれる複数の画素を抽出する第1の抽出手段(例えば、図67のブロック切り出し部841−5)と、前記第1の領域と、垂直または水平の複数の方向に連続した、複数の第2の領域に含まれる複数の画素を抽出する第2の抽出手段(例えば、図67のブロック切り出し部841−1乃至841−4)と、前記第1の抽出手段により抽出された画素と、前記第2の抽出手段により抽出された画素において、対応する画素の値の差分の絶対値の総和を求めて、複数のブロック差分を演算するブロック差分演算手段(例えば、図67のブロック差分演算部842−1乃至842−4)と、前記ブロック差分が、予め設定された閾値より大きいか否かを判定する差分判定手段(例えば、図67の閾値判定部843−1乃至843−2)とを備えるようにすることができる。
請求項5の画像処理装置は、前記パラメータが、ぼけた画像の画素とぼけていない画像の画素の関係を表すモデル式(例えば、式(6))におけるガウス関数(例えば、式(7))のパラメータであるようにすることができる。
請求項7の画像処理装置は、前記選択出力手段が、前記積和演算手段により積和演算が行われた複数の画素を抽出する第1の抽出手段(例えば、図70のブロック切り出し部901)と、前記第1の抽出手段により抽出された複数の画素の分散の度合いを表す分散度を演算する分散演算手段(例えば、図70の分散演算部902)と、前記分散演算手段により演算された分散度が予め設定された閾値より大きいか否かを判定する分散判定手段(例えば、図70の閾値判定部903)とを備えるようにすることができる。
請求項8の画像処理装置は、前記選択出力手段が、前記分散判定手段の判定結果に基づいて、出力する画素の値を、前記積和演算手段による演算結果、または前記入力画像の画素の値のいずれかから選択する画素選択手段(例えば、図70の選択部904)をさらに備えるようにすることができる。
請求項9の画像処理方法は、画像の中で、移動するオブジェクトを明確に表示する画像処理装置(例えば、図1の監視カメラシステム1)の画像処理方法であって、画像の中の移動するオブジェクト(例えば、図3のオブジェクト51)の特徴点(例えば、図3の追尾点51A)を検出する特徴点検出ステップ(例えば、図2のステップS1)と、前記特徴点検出ステップの処理により検出された前記特徴点に基づいて、画像の前記オブジェクトの移動を追尾する追尾ステップ(例えば、図2のステップS2)と、前記追尾ステップの処理による追尾結果に基づいて、前記画像の中に前記オブジェクトの周囲に予め設定された大きさの補正領域(例えば、図3の補正対象エリア52)を設定する補正領域設定ステップ(例えば、図2のステップS3)と、前記画像の中の前記補正領域内の画像を補正する補正ステップ(例えば、図2のステップS4)と、前記補正領域内が前記補正ステップの処理により補正された画像の表示を制御する表示制御ステップ(例えば、図2のステップS5)とを含む。
請求項10のプログラムは、画像の中で、移動するオブジェクトを明確に表示する画像処理装置(例えば、図1の監視カメラシステム1)のプログラムであって、画像の中の移動するオブジェクト(例えば、図3のオブジェクト51)の特徴点(例えば、図3の追尾点51A)の検出を制御する特徴点検出制御ステップ(例えば、図2のステップS1)と、前記特徴点検出制御ステップの処理により検出された前記特徴点に基づいて、画像の前記オブジェクトの移動を追尾するように制御する追尾制御ステップ(例えば、図2のステップS2)と、前記追尾制御ステップの処理による追尾結果に基づいて、前記画像の中に前記オブジェクトの周囲に予め設定された大きさの補正領域(例えば、図3の補正対象エリア52)を設定するように制御する補正領域設定制御ステップ(例えば、図2のステップS3)と、前記画像の中の前記補正領域内の画像の補正を制御する補正制御ステップ(例えば、図2のステップS4)と、前記補正領域内が前記補正制御ステップの処理により補正された画像の表示を制御する表示制御ステップ(例えば、図2のステップS5)とをコンピュータに実行させる。
請求項11の記録媒体は、画像の中で、移動するオブジェクトを明確に表示する画像処理装置(例えば、図1の監視カメラシステム1)のプログラムが記録される記録媒体であって、画像の中の移動するオブジェクト(例えば、図3のオブジェクト51)の特徴点(例えば、図3の追尾点51A)の検出を制御する特徴点検出制御ステップ(例えば、図2のステップS1)と、前記特徴点検出制御ステップの処理により検出された前記特徴点に基づいて、画像の前記オブジェクトの移動を追尾するように制御する追尾制御ステップ(例えば、図2のステップS2)と、前記追尾制御ステップの処理による追尾結果に基づいて、前記画像の中に前記オブジェクトの周囲に予め設定された大きさの補正領域(例えば、図3の補正対象エリア52)を設定するように制御する補正領域設定制御ステップ(例えば、図2のステップS3)と、前記画像の中の前記補正領域内の画像の補正を制御する補正制御ステップ(例えば、図2のステップS4)と、前記補正領域内が前記補正制御ステップの処理により補正された画像の表示を制御する表示制御ステップ(例えば、図2のステップS5)とをコンピュータに実行させるプログラムが記録される。
請求項12の画像処理装置(例えば、図5のオブジェクト追尾装置26、図72のテレビジョン受像機1000)は、時間的に前の処理単位の画像上の追尾点としての第1の点の時間的に後の処理単位における追尾点としての第2の点の位置を推定する位置推定手段(例えば、図48のステップS601の処理を実行する図47の動き推定部52の動きベクトル検出部606)と、前記第2の点の位置が推定可能でない場合における前記第1の点の候補としての推定点(例えば、乗り換え候補)を生成する生成手段(例えば、図14のステップS162,S163の処理を実行する図13の乗り換え候補抽出部162)と、前記後の処理単位における前記第2の点の位置が推定可能である場合(例えば、図10のステップS124で推定可能であると判定された場合)、前記位置推定手段による前記推定結果(例えば、動きベクトル)に基づいて、前記後の処理単位における前記第2の点を決定する決定手段(例えば、図10のステップS125の処理を実行する図5の追尾決定部57)と、前記後の処理単位における前記第2の点の位置が推定可能でない場合(例えば、図10のステップS124で推定可能ではないと判定された場合)、前記推定点の中から前記第1の点を選択する選択手段(例えば、図10のステップS129の処理を実行する図5の追尾点決定部57)とを備えることを特徴とする。
請求項32の情報処理方法は、時間的に前の処理単位の画像上の追尾点としての第1の点の時間的に後の処理単位における追尾点としての第2の点の位置を推定する推定ステップ(例えば、図48のステップS601)と、前記第2の点の位置が推定可能でない場合における前記第1の点の候補としての推定点を生成する生成ステップ(例えば、図14のステップS162)と、前記後の処理単位における前記第2の点の位置が推定可能である場合、前記位置推定ステップの処理による前記推定結果に基づいて、前記後の処理単位における前記第2の点を決定する決定ステップ(例えば、図10のステップS125)と、前記後の処理単位における前記第2の点の位置が推定可能でない場合、前記推定点の中から前記第1の点を選択する選択ステップ(例えば、図10のステップS129)とを含むことを特徴とする画像処理方法。
請求項33の記録媒体のプログラムは、時間的に前の処理単位の画像上の追尾点としての第1の点の時間的に後の処理単位における追尾点としての第2の点の位置を推定する推定ステップ(例えば、図48のステップS601)と、前記第2の点の位置が推定可能でない場合における前記第1の点の候補としての推定点を生成する生成ステップ(例えば、図14のステップS162)と、前記後の処理単位における前記第2の点の位置が推定可能である場合、前記位置推定ステップの処理による前記推定結果に基づいて、前記後の処理単位における前記第2の点を決定する決定ステップ(例えば、図10のステップS125)と、前記後の処理単位における前記第2の点の位置が推定可能でない場合、前記推定点の中から前記第1の点を選択する選択ステップ(例えば、図10のステップS129)とを含むことを特徴とする。
請求項34のプログラムは、時間的に前の処理単位の画像上の追尾点としての第1の点の時間的に後の処理単位における追尾点としての第2の点の位置を推定する推定ステップ(例えば、図48のステップS601)と、前記第2の点の位置が推定可能でない場合における前記第1の点の候補としての推定点を生成する生成ステップ(例えば、図14のステップS162)と、前記後の処理単位における前記第2の点の位置が推定可能である場合、前記位置推定ステップの処理による前記推定結果に基づいて、前記後の処理単位における前記第2の点を決定する決定ステップ(例えば、図10のステップS125)と、前記後の処理単位における前記第2の点の位置が推定可能でない場合、前記推定点の中から前記第1の点を選択する選択ステップ(例えば、図10のステップS129)とをコンピュータに実行させることを特徴とする。
以下、図面を参照して、本発明の実施の形態について説明する。図1は、本発明を監視カメラシステムに適用した場合の構成例を表している。この監視カメラシステム1においては、CCDビデオカメラ等よりなる撮像部21により撮像された画像が画像ディスプレイ23に表示される。追尾対象検出部24は、撮像部21より入力された画像から追尾対象を検出し、検出結果をオブジェクト追尾部26に出力する。
オブジェクト追尾部26は、撮像部21より供給された画像中の、追尾対象検出部24により指定された追尾点を追尾するように動作する。エリア設定部25は、オブジェクト追尾部26からの出力結果に基づいて、撮像部21により撮像された画像の中から、追尾点を含むオブジェクトの周辺の所定の領域(エリア)を設定し、その領域を指定する位置情報を画像補正部22に出力する。画像補正部22は、撮像部21により撮像された画像の中のエリア設定部25により設定された領域について、画像のぼけ(フォーカスぼけ)を除去する補正を行い、画像ディスプレイ23に出力する。カメラ駆動部27は、オブジェクト追尾部26からの制御に基づいて、撮像部21が追尾点を中心とする画像を撮影するように撮像部21を駆動する。
制御部27は、例えば、マイクロコンピュータなどにより構成され、各部を制御する。制御部27には、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどにより構成されるリムーバブルメディア28が必要に応じて接続され、プログラム、その他各種のデータが必要に応じて供給される。制御部27は、また、図示せぬ入出力インタフェースを介して、ユーザからの指示(コマンドなど)の入力を受け付ける。
次に、図2のフローチャートを参照して、監視処理の動作について説明する。監視システム1の電源がオンされているとき、撮像部21は監視する領域を撮像し、その撮像して得られた画像を追尾対象検出部24、オブジェクト追尾部26、および画像補正部22を介して画像ディスプレイ23に出力する。追尾対象検出部24は、ステップS1において、撮像部21から入力された画像から追尾対象を検出する処理を実行する。追尾対象検出部24は、例えば、動く物体が検出された場合、その動く物体を追尾対象として検出する。追尾対象検出部24は、追尾対象の中から、例えば、最も輝度の高い点、あるいは追尾対象の中心の点などを追尾点として検出し、オブジェクト追尾部26に出力する。
ステップS2において、オブジェクト追尾部26は、ステップS1で検出された追尾点を追尾する追尾処理を実行する。追尾処理の詳細については、図6を参照して後述するが、この処理により、撮像部21により撮像された画像の中の追尾対象となるオブジェクト(例えば、人、動物など)の中の追尾点(例えば、目、頭の中心)が追尾され、その追尾位置を表す位置情報がエリア設定部25に出力される。
ステップS3において、エリア設定部25は、オブジェクト追尾部26からの出力に基づいて、追尾対象のオブジェクトの周辺の所定の領域(例えば、追尾点を中心として、所定の大きさの四角形で表される領域)を補正対象エリアとして設定する。
ステップS4において、画像補正部22は、撮像部21により撮像された画像の中で、エリア設定部25により設定された補正対象エリア内の画像を補正する画像補正処理を実行する。画像補正処理の詳細については、図65を参照して後述するが、この処理により、補正対象エリア内の画像について、画像のぼけが除去された鮮明な映像が提供される。
ステップS5において、画像ディスプレイ23は、ステップS4で補正された画像、すなわち、撮像部21により撮像された画像であって、特に、補正対象エリア内のみが鮮明になるように補正された画像を出力する。
ステップS6において、オブジェクト追尾部26は、ステップS2の処理による追尾結果に基づいて、オブジェクトの移動を検出し、移動したオブジェクトを撮像できるようにカメラを駆動させるカメラ駆動信号を生成し、カメラ駆動部27に出力する。ステップS7において、カメラ駆動部27はカメラ駆動信号に基づいて撮像部21を駆動する。これにより撮像部21は、追尾点が画面のから外れてしまうことがないようにカメラをパンまたはチルトする。
ステップS8において、制御部27は、ユーザからの指示に基づいて監視処理を終了するか否かを判定し、ユーザから終了が指示されていない場合には、ステップS1に戻り、それ以降の処理を繰り返し実行する。ユーザから監視処理の終了が指示された場合、ステップS8において終了すると判定され、制御部27は監視処理を終了する。
図3A乃至図3Cは、このとき画像ディスプレイ23に表示される画像の例を、時系列に示した図である。図3Aは、撮像部21により、追尾対象となるオブジェクト51が撮像された画像の例であり、この例では、図中左方向に走って移動する人が、オブジェクト51として撮像されている。図3Bでは、オブジェクト51が、図3Aの位置から図中左に移動しており、図3Cでは、オブジェクト51が、図3Bの位置からさらに左に移動している。
追尾対象検出部24は、図2のステップS1で、オブジェクト51を検出し、このオブジェクト51(人)の目を、追尾点51Aとしてオブジェクト追尾部26に出力する。ステップS2ではオブジェクト追尾部26により追尾処理が行われ、エリア設定部25により、ステップS3で追尾対象のオブジェクト51(追尾点51A)の周辺の所定領域が補正対象エリア52として設定される。
上述したように、オブジェクト追尾部26は、追尾点51Aに基づいて、オブジェクト51を追尾するので、オブジェクト51が移動すると、追尾点51Aも移動し、その追尾結果(位置)がエリア設定部25に出力される。このため、図3A乃至図3Cに示されるように、オブジェクト51が図中左に移動していくと、補正対象エリア52も図中左に移動していく。
移動するオブジェクト51(追尾点51A)に対応する補正対象エリア52の設定は、例えば、次のようにして行われる。図4は、補正対象エリアとして、追尾点の周辺に所定の大きさの四角形の領域が設定される例を示す。同図において、最初に補正対象エリア71Aが設定されたものとする。最初の補正対象エリア71Aとしては、例えば、追尾点51Aを基準として、それを中心とする一定の範囲が設定される。勿論、ユーザにより指定された場合には、その指定された範囲が補正対象エリア71Aとして設定される。このときエリア設定部25は、補正対象エリア71Aの左上の角の座標(X,Y)を、内蔵するメモリに記憶する。オブジェクト51の追尾点51Aが移動すると、オブジェクト追尾部26による追尾が行われ、追尾点51Aの、画面上におけるX軸方向(図中左右の方向)、Y軸方向(図中上下方向)の位置(または移動距離)の情報が、追尾結果としてエリア設定部25に供給される。
そして、上述した左上の角の座標に基づいて、補正対象エリアが設定される。例えば、追尾点51Aが画面上で、X軸方向にx、Y軸方向にyだけそれぞれ移動すると、エリア設定部25は、補正対象エリア71Aの左上の座標(X,Y)に、xとyを加算し、座標(X+x,Y+y)を計算し、その座標を新たな補正対象エリア71Bの左上の角の座標として記憶するとともに、補正対象エリア71Bを設定する。追尾点51AがX軸方向にa、Y軸方向にbだけさらに移動すると、エリア設定部25は、補正対象エリア71Aの左上の座標(X+x,Y+y)に、aとbを加算し、座標(X+x+a,Y+y+b)を計算し、その座標を新たな補正対象エリア71Cの左上の角の座標として記憶するとともに、補正対象エリア71Cを設定する。
このように、オブジェクト(追尾点)の移動に伴って、補正対象エリアも移動していく。
また、上述したように、補正対象エリア52内の画像については、画像補正部22による画像補正処理(図2のステップS4)が行われ、画像のぼけが除去されて、画像ディスプレイ23に表示される。従って、図3A乃至Cに示される画像は、補正対象エリア52内が鮮明に表示され、補正対象エリア52の外の領域(背景)である背景53の画像は、補正対象エリア52内の画像と比較すると、相対的に不鮮明に表示される。
このようにすることで、画像ディスプレイ23に表示される画像の中で、補正対象エリア52内のオブジェクト51が、常に鮮明に表示されるので、画像ディスプレイ23を観察するユーザは、自然にオブジェクト51を注目するようになり、その結果、例えば不審者の侵入、物体の移動などをより迅速に発見することができる。また、オブジェクト51は、鮮明に表示されるので、移動するオブジェクト(例えば、人物)が何(誰)であるのか、ユーザに、正確に認識させることができる。
次に、図1のオブジェクト追尾部26の詳細な構成例と、その動作について説明する。図5はオブジェクト追尾部26の機能的構成例を示すブロック図である。この例では、オブジェクト追尾部26は、テンプレートマッチング部51、動き推定部52、シーンチェンジ検出部53、背景動き推定部54、領域推定関連処理部55、乗り換え候補保持部56、追尾点決定部57、テンプレート保持部58、および制御部59により構成されている。
テンプレートマッチング部51は、入力画像と、テンプレート保持部58に保持されているテンプレート画像のマッチング処理を行う。動き推定部52は、入力画像の動きを推定し、推定の結果得られた動きベクトルと、その動きベクトルの確度を、シーンチェンジ検出部53、背景動き推定部54、領域推定関連処理部55、および追尾点決定部57に出力する。シーンチェンジ検出部53は、動き推定部52より供給された確度に基づいて、シーンチェンジを検出する。
背景動き推定部54は、動き推定部52より供給された動きベクトルと確度に基づいて背景動きを推定する処理を実行し、推定結果を領域推定関連処理部55に供給する。領域推定関連処理部55は、動き推定部52より供給された動きベクトルと確度、背景動き推定部54より供給された背景動き、並びに追尾点決定部57より供給された追尾点情報に基づいて、領域推定処理を行う。また、領域推定関連処理部55は、入力された情報に基づいて乗り換え候補を生成し、乗り換え候補保持部56へ供給し、保持させる。さらに、領域推定関連処理部55は、入力画像に基づいてテンプレートを作成し、テンプレート保持部58に供給し、保持させる。
追尾点決定部57は、動き推定部52より供給された動きベクトルと確度、並びに乗り換え候補保持部56より供給された乗り換え候補に基づいて、追尾点を決定し、決定された追尾点に関する情報を領域推定関連処理部55に出力する。
制御部59は、追尾対象検出部から24から出力された追尾点の情報に基づいて、テンプレートマッチング部51乃至テンプレート保持部58の各部を制御して、検出された追尾対象を追尾させるとともに、画像ディスプレイ23に表示される画面の中に、追尾点が表示されるように(追尾点が画面の外にでないように)、カメラ駆動部27に制御信号を出力し、カメラ(撮像部21)の駆動を制御する。また、制御部59は、追尾点の画面上での位置の情報などの追尾結果を、エリア設定部25、制御部27などに出力する。
次に、オブジェクト追尾部26の動作について説明する。図6は、図2のステップS2において、オブジェクト追尾部26が実行する追尾処理の詳細を説明するフローチャートである。
図7に示されるように、オブジェクト追尾部26は、基本的に通常処理と例外処理を実行する。すなわち、ステップS51で通常処理が行われる。この通常処理の詳細は、図10を参照して後述するが、この処理により追尾対象検出部24により指定された追尾点を追尾する処理が実行される。ステップS51の通常処理において追尾点の乗り換えができなくなったとき、ステップS52において、例外処理が実行される。この例外処理の詳細は、図37のフローチャートを参照して後述するが、この例外処理により、追尾点が画像から見えなくなったとき、テンプレートマッチングにより通常処理への復帰処理が実行される。例外処理によって追尾処理を継続することができなくなった(通常処理へ復帰することができなくなった)と判定された場合には処理が終了されるが、テンプレートによる復帰処理の結果、通常処理への復帰が可能と判定された場合には、処理は再びステップS51に戻る。このようにして、ステップS51の通常処理とステップS52の例外処理が、各フレーム毎に順次繰り返し実行される。
本発明においては、この通常処理と例外処理により、図7乃至図9に示されるように、追尾対象が回転したり、オクルージョンが発生したり、シーンチェンジが発生する等、追尾点が一時的に見えなくなった場合においても、追尾が可能となる。
すなわち、例えば、図7に示されるように、フレームn−1には追尾対象(オブジェクト)としての人の顔104が表示されており、この人の顔104は、右目102と左目103を有している。ユーザが、このうちの、例えば右目102(正確には、その中の1つの画素)を追尾点101として指定したとする。図7の例においては、次のフレームnにおいて、人が図中左方向に移動しており、さらに次のフレームn+1においては、人の顔104が時計方向に回動している。その結果、今まで見えていた右目102が表示されなくなり、いままでの方法では、追尾ができなくなる。そこで、上述したステップS51の通常処理においては、右目102と同一の対象物としての顔104上の左目103が選択され、追尾点が左目103に乗り換えられる(設定される)。これにより追尾が可能となる。
図8の表示例では、フレームn−1において、顔104の図中左側からボール121が移動してきて、次のフレームnにおいては、ボール121がちょうど顔104を覆う状態となっている。この状態において、追尾点101として指定されていた右目102を含む顔104が表示されていない。このようなオクルージョンが起きると、対象物としての顔504が表示されていないので、追尾点101に代えて追尾する乗り換え点もなくなり、以後、追尾点を追尾することが困難になる。しかし、本発明においては、追尾点101としての右目102をフレームn−1(実際には時間的にもっと前のフレーム)の画像がテンプレートとして予め保存されており、ボール121がさらに右側に移動し、フレームn+1において、追尾点101として指定された右目102が再び現れると、上述したステップS52の例外処理により、追尾点101としての右目102が再び表示されたことが確認され、右目102が再び追尾点101として追尾されることになる。
図9の例では、フレームn−1においては、顔104が表示されているが、次のフレームnにおいては、自動車111が人の顔を含む全体を覆い隠している。すなわち、この場合、シーンチェンジが起きたことになる。本発明では、このようにシーンチェンジが起きて追尾点101が画像から存在しなくなっても、自動車111が移動して、フレームn+1において再び右目102が表示されると、ステップS52の例外処理で、追尾点101としての右目102が再び出現したことがテンプレートに基づいて確認され、この右目102を再び追尾点101として追尾することが可能となる。
次に、図10のフローチャートを参照して、図6のステップS51の通常処理の詳細について説明する。ステップS121において、追尾点決定部57により通常処理の初期化処理が実行される。その詳細は、図11のフローチャートを参照して後述するが、この処理によりユーザから追尾するように指定された追尾点を基準とする領域推定範囲が指定される。この領域推定範囲は、ユーザにより指定された追尾点と同一の対象物(例えば、追尾点が人の目である場合、目と同様の動きをする剛体としての人の顔、または人の体など)に属する点の範囲を推定する際に参照する範囲である。乗り換え点は、この領域推定範囲の中の点から選択される。
次に、ステップS122において、制御部59は、次のフレームの画像の入力を待機するように各部を制御する。ステップS123において、動き推定部52は、追尾点の動きを推定する。すなわち、ユーザにより指定された追尾点を含むフレーム(前フレーム)より時間的に後のフレーム(後フレーム)をステップS122の処理で取り込むことで、結局連続する2フレームの画像が得られたことになるので、ステップS123において、前フレームの追尾点に対応する後フレームの追尾点の位置を推定することで、追尾点の動きが推定される。
なお、時間的に前とは、処理の順番(入力の順番)をいう。通常、撮像の順番に各フレームの画像が入力されるので、その場合、より時間的に前に撮像されたフレームが前フレームとなるが、時間的に後に撮像されたフレームが先に処理(入力)される場合には、時間的に後に撮像されたフレームが前フレームとなる。
ステップS124において、動き推定部52は、ステップS123の処理の結果、追尾点が推定可能であったか否かを判定する。追尾点が推定可能であったか否かは、例えば、動き推定部52が生成、出力する動きベクトル(後述)の確度の値を、予め設定されている閾値と比較することで判定される。具体的には、動きベクトルの確度が閾値以上であれば推定が可能であり、閾値より小さければ推定が不可能であると判定される。すなわち、ここにおける可能性は比較的厳格に判定され、実際には推定が不可能ではなくても確度が低い場合には、不可能と判定される。これにより、より確実な追尾処理が可能となる。
なお、ステップS124では、追尾点での動き推定結果と追尾点の近傍の点での動き推定結果が、多数を占める動きと一致する場合には推定可能、一致しない場合には推定不可能と判定するようにすることも可能である。
追尾点の動きが推定可能であると判定された場合(追尾点が同一対象物上の対応する点上に正しく設定されている確率(右目102が追尾点101として指定された場合、右目102が正しく追尾されている確率)が比較的高い場合)、ステップS125に進み、追尾点決定部57は、ステップS123の処理で得られた推定動き(動きベクトル)の分だけ追尾点をシフトする。すなわち、これにより、前フレームの追尾点の追尾後の後フレームにおける追尾の位置が決定されることになる。
ステップS125の処理の後、ステップS126において、領域推定関連処理が実行される。この領域推定関連処理の詳細は、図14を参照して後述するが、この処理により、ステップS121の通常処理の初期化処理で指定された領域推定範囲が更新される。さらに、対象物体が回転するなどして、追尾点が表示されない状態になった場合に、追尾点を乗り換えるべき点としての乗り換え点としての候補(乗り換え候補)が、この状態(まだ追尾が可能な状態)において、予め抽出(作成)される。また、乗り換え候補への乗り換えもできなくなった場合、追尾は一旦中断されるが、再び追尾が可能になった(追尾点が再び出現した)ことを確認するために、テンプレートが予め作成される。
ステップS126の領域推定関連処理が終了した後、処理は再びステップS122に戻り、それ以降の処理が繰り返し実行される。
すなわち、ユーザから指定された追尾点の動きが推定可能である限り、ステップS122乃至ステップS126の処理がフレーム毎に繰り返し実行され、追尾が行われることになる。
これに対して、ステップS124において、追尾点の動きが推定可能ではない(不可能である)と判定された場合、すなわち、上述したように、例えば動きベクトルの確度が閾値以下であるような場合、処理はステップS127に進む。ステップS127において、追尾点決定部57は、ステップS126の領域推定関連処理で生成された乗り換え候補が乗り換え候補保持部116に保持されているので、その中から、元の追尾点に最も近い乗り換え候補を1つ選択する。追尾点決定部57は、ステップS128で乗り換え候補が選択できたか否かを判定し、乗り換え候補が選択できた場合には、ステップS129に進み、追尾点をステップS127の処理で選択した乗り換え候補に乗り換える(変更する)。すなわち、乗り換え候補の点が新たな追尾点として設定される。その後、処理はステップS123に戻り、乗り換え候補の中から選ばれた追尾点の動きを推定する処理が実行される。
ステップS124において新たに設定された追尾点の動きが推定可能であるか否かが再び判定され、推定可能であれば、ステップS125において追尾点を推定動き分だけシフトする処理が行われ、ステップS126において、領域推定関連処理が実行される。その後、処理は再びステップS122に戻り、それ以降の処理が繰り返し実行される。
ステップS124において、新たに設定された追尾点も推定不可能であると判定された場合には、再びステップS127に戻り、乗り換え候補の中から、元の追尾点に次に最も近い乗り換え候補が選択され、ステップS129において、その乗り換え候補が新たな追尾点とされる。その新たな追尾点について、再びステップS123以降の処理が繰り返される。
用意されているすべての乗り換え候補を新たな追尾点としても、追尾点の動きを推定することができなかった場合には、ステップS128において、乗り換え候補が選択できなかったと判定され、この通常処理は終了される。そして、図6のステップS52の例外処理に処理が進むことになる。
次に、図11のフローチャートを参照して、図10のステップS121の通常処理の初期化処理の詳細について説明する。
ステップS141において、制御部59は、今の処理は例外処理からの復帰の処理であるのか否かを判定する。すなわち、ステップS52の例外処理を終了した後、再びステップS51の通常処理に戻ってきたのか否かが判定される。最初のフレームの処理においては、まだステップS52の例外処理は実行されていないので、例外処理からの復帰ではないと判定され、処理はステップS142に進む。ステップS142において、追尾点決定部57は、追尾点を追尾点指示の位置に設定する処理を実行する。すなわち、入力画像の中で、例えば、最も輝度の高い点が追尾点として設定される。
なお、追尾点は、ユーザによる指定など、他の方法により設定されるようにしてもよい。ユーザによる指定とは、例えば、図示せぬマウス、その他の入力部を操作することで、制御部59に、入力画像の中の所定の点を追尾点として指定することにより行われることである。追尾点決定部57は、設定した追尾点の情報を領域推定関連処理部55に供給する。
ステップS143において、領域推定関連処理部55は、ステップS142の処理で設定された追尾点の位置に基づき、領域推定範囲を設定する。この領域推定範囲は、追尾点と同じ剛体上の点を推定する際の参照範囲であり、予め追尾点と同じ剛体部分が領域推定範囲の大部分を占めるように、より具体的には、追尾点と同じ剛体部分に推定領域範囲の位置や大きさが追随するように設定することで、領域推定範囲の中で最も多数を占める動きを示す部分を追尾点と同じ剛体部分であると推定できるようにするためのものである。ステップS143では初期値として、例えば、追尾点を中心とする予め設定された一定の範囲が領域推定範囲とされる。
その後処理は、図10のステップS122に進むことになる。
一方、ステップS141において、現在の処理が、ステップS52の例外処理からの復帰の処理であると判定された場合、ステップS144に進み、追尾点決定部57は、後述する図37を参照して後述する処理により、テンプレートにマッチした位置に基づき追尾点と領域推定範囲を設定する。例えば、テンプレート上の追尾点とマッチした現フレーム上の点が追尾点とされ、その点から予め設定されている一定の範囲が領域推定範囲とされる。その後、処理は図10のステップS122に進む。
以上の処理を図12を参照して説明すると次のようになる。すなわち、図11のステップS142において、例えば、図12に示されるように、フレームn−1の人の目102が追尾点101として指定されると、ステップS143において、追尾点101を含む所定の領域が領域推定範囲133として指定される。ステップS124において、領域推定範囲133の範囲内のサンプル点が次のフレームにおいて推定可能であるか否かが判定される。図12の例の場合、フレームnの次のフレームn+1においては、領域推定範囲133のうち、左目102を含む図中左側半分の領域134がボール121で隠されているため、フレームnの追尾点101の動きを、次のフレームn+1において推定することができない。そこで、このような場合においては、時間的に前のフレームn−1で乗り換え候補として予め用意されていた領域指定範囲133内(右目102を含む剛体としての顔104内)の点の中から1つの点(例えば、顔104に含まれる左目103(正確には、その中の1つの画素))が選択され、その点がフレームn+1における、追尾点とされる。
領域推定関連処理部55は、図10のステップS126における領域推定関連処理を実行するために、図13に示されるような構成を有している。すなわち、領域推定関連処理部55の領域推定部161には、動き推定部52より動きベクトルと確度が入力され、背景動き推定部54より背景動きが入力され、そして追尾点決定部57より追尾点の位置情報が入力される。乗り換え候補抽出部162には、動き推定部52より動きベクトルと確度が供給される他、領域推定部161の出力が供給される。テンプレート作成部163には、入力画像が入力される他、領域推定部161の出力が入力される。
領域推定部161は、入力に基づいて、追尾点を含む剛体の領域を推定し、推定結果を乗り換え候補抽出部162とテンプレート作成部163に出力する。乗り換え候補抽出部162は入力に基づき乗り換え候補を抽出し、抽出した乗り換え候補を乗り換え候補保持部56へ供給する。テンプレート作成部163は入力に基づきテンプレートを作成し、作成したテンプレートをテンプレート保持部58へ供給する。
図14は、領域推定関連処理部55により実行される領域推定関連処理(図10のステップS126の処理)の詳細を表している。最初にステップS161において、領域推定部161により領域推定処理が実行される。その詳細は、図15のフローチャートを参照して後述するが、この処理により、追尾点が属する対象と同一の対象(追尾点と同期した動きをする剛体)に属すると推定される画像上の領域の点が領域推定範囲の点として抽出される。
ステップS162において、乗り換え候補抽出部162により乗り換え候補抽出処理が実行される。その処理の詳細は、図27のフローチャート参照して後述するが、領域推定部161により領域推定範囲として推定された範囲の点から乗り換え候補の点が抽出され、乗り換え候補保持部56に保持される。
ステップS163においてテンプレート作成部163によりテンプレート作成処理が実行される。その詳細は、図28のフローチャートを参照して後述するが、この処理によりテンプレートが作成される。
次に、図15のフローチャートを参照して、図14のステップS161の領域推定処理の詳細について説明する。
最初に、ステップS181において、領域推定部161は、追尾点と同一の対象に属すると推定される点の候補の点としてのサンプル点を決定する。
このサンプル点は、例えば図16に示されるように、図中、白い四角形で示されるフレームの全画面における画素のうち、固定された基準点201を基準として、水平方向および垂直方向に、所定の画素数ずつ離れた位置の画素をサンプル点(図中、黒い四角形で表されている)とすることができる。図16の例においては、各フレームの左上の画素が基準点201とされ(図中基準点201は×印で示されている)、水平方向に5個、並びに垂直方向に5個ずつ離れた位置の画素がサンプル点とされる。すなわち、この例の場合、全画面中に分散した位置の画素がサンプル点とされる。また、この例の場合、基準点は、各フレームn,n+1において固定された同一の位置の点とされる。
基準点201は、例えば図17に示されるように、各フレームn,n+1毎に異なる位置の点となるように、動的に変化させることもできる。
図16と図17の例においては、サンプル点の間隔が各フレームにおいて固定された値とされているが、例えば図18に示されるように、フレーム毎にサンプル点の間隔を可変とすることもできる。図18の例においては、フレームnにおいては、サンプル点の間隔は5画素とされているのに対し、フレームn+1においては8画素とされている。このときの間隔の基準としては、追尾点と同一の対象に属すると推定される領域の面積を用いることができる。具体的には、領域推定範囲の面積が狭くなれば間隔も短くなる。
あるいはまた、図19に示されるように、1つのフレーム内においてサンプル点の間隔を可変とすることもできる。このときの間隔の基準としては、追尾点からの距離を用いることができる。すなわち、追尾点に近いサンプル点ほど間隔が小さく、追尾点から遠くなるほど間隔が大きくなる。
以上のようにしてサンプル点が決定されると、次にステップS182において、領域推定部161は、領域推定範囲(図11のステップS143,S144の処理、または、後述する図20のステップS206,S208の処理で決定されている)内のサンプル点の動きを推定する処理を実行する。すなわち、領域推定部161は、動き推定部52より供給された動きベクトルに基づいて、領域推定範囲内のサンプル点に対応する次のフレームの対応する点を抽出する。
ステップS183において、領域推定部161は、ステップS182の処理で推定したサンプル点のうち、確度が予め設定されている閾値より低い動きベクトルに基づく点を対象外とする処理を実行する。この処理に必要な動きベクトルの確度は、動き推定部52より供給される。これにより、領域推定範囲内のサンプル点のうち、確度が高い動きベクトルに基づいて推定された点だけが抽出される。
ステップS184において、領域推定部161は、領域推定範囲内の動き推定結果での全画面動きを抽出する。全画面動きとは、同一の動きに対応する領域を考え、その面積が最大となる動きのことを意味する。具体的には、各サンプル点の動きに、そのサンプル点におけるサンプル点間隔に比例する重みを付けて動きのヒストグラムを生成し、この重み付け頻度が最大となる1つの動き(1つの動きベクトル)が全画面動きとして抽出される。なお、ヒストグラムを生成する場合、例えば、動きの代表値を画素精度で準備し、画素精度で1個となる値を持つ動きについてもヒストグラムへの加算を行うようにすることもできる。
ステップS185において、領域推定部161は、全画面動きを持つ領域推定範囲内のサンプル点を領域推定の結果として抽出する。この場合における全画面動きを持つサンプル点としては、全画面動きと同一の動きを持つサンプル点はもちろんのこと、全画面動きとの動きの差が予め設定されている所定の閾値以下である場合には、そのサンプル点もここにおける全画面動きを持つサンプル点とすることも可能である。
このようにして、ステップS143,S144,S206,S208の処理で決定された領域推定範囲内のサンプル点のうち、全画面動きを有するサンプル点が、追尾点と同一対象に属すると推定される点として最終的に抽出(生成)される。
次に、ステップS186において、領域推定部161は、領域推定範囲の更新処理を実行する。その後、処理は、図10のステップS122に進む。
図20は、図15のステップS186の領域推定範囲の更新処理の詳細を表している。ステップS201において、領域推定部161は、領域の重心を算出する。この領域とは、図15のステップS185の処理で抽出されたサンプル点で構成される領域(追尾点と同一対象に属すると推定される点で構成される領域)を意味する。すなわち、この領域には1つの動きベクトル(全画面動き)が対応している。例えば、図21Aに示されるように、図中白い四角形で示されるサンプル点のうち、領域推定範囲221内のサンプル点の中から、図15のステップS185の処理で全画面動きを持つサンプル点として、図21Aにおいて黒い四角形で示されるサンプル点が抽出され、そのサンプル点で構成される領域が、領域222として抽出(推定)される。そして、領域222の重心224がさらに算出される。具体的には、各サンプル点にサンプル点間隔の重みを付けたサンプル点重心が領域の重心として求められる。この処理は、現フレームにおける領域の位置を求めるという意味を有する。
次にステップS202において、領域推定部161は、領域の重心を全画面動きによりシフトする処理を実行する。この処理は、領域推定範囲221を領域の位置の動きに追従させ、次フレームにおける推定位置に移動させるという意味を有する。図21Bに示されるように、現フレームにおける追尾点223が、その動きベクトル238に基づいて次フレームにおいて追尾点233として出現する場合、全画面動きベクトル230が、追尾点の動きベクトル238にほぼ対応しているので、現フレームにおける重心224を動きベクトル230(全画面動き)に基づいてシフトすることで、追尾点233と同一のフレーム(次フレーム)上の点234が求められる。この点234を中心として領域推定範囲231を設定すれば、領域推定範囲221を領域222の位置の動きに追従させて、次のフレームにおける推定位置に移動させることになる。
ステップS203において、領域推定部161は、領域推定結果に基づき、次の領域推定範囲の大きさを決定する。具体的には、領域と推定された全てのサンプル点に関するサンプル点の間隔(図21Aにおける領域222の中の黒い四角形で示される点の間隔)の2乗和を領域222の面積と見なし、この面積よりも少し大きめの大きさとなるように、次フレームにおける領域推定範囲231の大きさが決定される。すなわち、領域推定範囲231の大きさは、領域222の中のサンプル点の数が多ければ広くなり、少なければ狭くなる。このようにすることで、領域222の拡大縮小に追従することができるばかりでなく、領域推定範囲221内の全画面領域が追尾対象の周辺領域となるのを防ぐことができる。
図15のステップS184で抽出された全画面動きが、背景動きと一致する場合には、動きにより背景と追尾対象を区別することができない。そこで、背景動き推定部54は背景動き推定処理を常に行っており、ステップS204において、領域推定部161は、背景動き推定部54より供給される背景動きと、図15のステップS184の処理で抽出された全画面動きとが一致するか否かを判定する。全画面動きと背景動きが一致する場合には、ステップS205において、領域推定部161は、次の領域推定範囲の大きさを、今の領域推定範囲の大きさが最大となるように制限する。これにより、背景が追尾対象として誤認識され、領域推定範囲の大きさが拡大してしまうようなことが抑制される。
ステップS204において、全画面動きと背景動きが一致しないと判定された場合には、ステップS205の処理は必要がないのでスキップされる。
次に、ステップS206において、領域推定部161は、シフト後の領域重心を中心として次の領域推定範囲の大きさを決定する。これにより、領域推定範囲が、その重心が既に求めたシフト後の領域重心と一致し、かつ、その大きさが領域の広さに比例するように決定される。
図21Bの例では、領域推定範囲231が、動きベクトル(全画面動き)230に基づくシフト後の重心234を中心として、領域222の面積に応じた広さに決定されている。
領域推定範囲231内での全画面動きを有する領域が追尾対象(例えば、図12の顔104)の領域であることを担保する(確実にする)必要がある。そこで、ステップS207において、領域推定部161は、追尾点が次の領域推定範囲に含まれるか否かを判定し、含まれていない場合には、ステップS208において、追尾点を含むように次の領域推定範囲をシフトする処理を実行する。追尾点が次の領域推定範囲に含まれている場合には、ステップS208の処理は必要がないのでスキップされる。
この場合における具体的なシフトの方法としては、移動距離が最小となるようにする方法、シフト前の領域推定範囲の重心から追尾点に向かうベクトルに沿って追尾点が含まれるようになる最小距離だけ移動する方法などが考えられる。
なお、追尾のロバスト性を重視するために、領域に追尾点を含むようにするためのシフトを行わない方法も考えられる。
図21Cの例においては、領域推定範囲231が追尾点233を含んでいないので、領域推定範囲241として示される位置(追尾点233をその左上に含む位置)に領域推定範囲241がシフトされる。
図21A乃至図21Cは、ステップS208のシフト処理が必要な場合を示しているが、図22A乃至図22Cは、ステップS208のシフト処理が必要でない場合(ステップS207において追尾点が次の領域推定範囲に含まれると判定された場合)の例を表している。
図22A乃至図22Cに示されるように、領域推定範囲221内のすべてのサンプル点が領域の点である場合には、図20のステップS208のシフト処理が必要なくなることになる。
図21A乃至図21Cと図22A乃至図22Cは、領域推定範囲が矩形である例を示したが、図25A乃至図25Cと図26A乃至図26Cに示されるように、領域推定範囲は円形とすることも可能である。図25A乃至図25Cは、図21A乃至図21Cに対応する図であり、ステップS208(図20)のシフト処理が必要である場合を表し、図26A乃至図26Cは図22A乃至図22Cに対応する図であり、ステップS108のシフト処理が必要でない場合を表している。
以上のようにして、図20(図15のステップS186)の領域推定範囲の更新処理により、次フレームのための領域推定範囲の位置と大きさが追尾点を含むように決定される。
図20の領域推定範囲の更新処理においては、領域推定範囲を矩形(または円形)の固定形状としたが、可変形状とすることも可能である。この場合における図15のステップS186における領域推定範囲の更新処理の例について、図25を参照して説明する。
ステップS231において、領域推定部161は、図15のステップS184の処理で抽出された全画面動きと背景動き推定部164により推定された背景動きとが一致するか否かを判定する。両者の動きが一致しない場合には、ステップS233に進み、領域推定部161は、領域(全画面動きと一致する画素で構成される領域)と推定されたすべての点につき、それぞれに対応する小領域を決定する(1個の点に対して1個の小領域を決定する)。図26Aと図26Bの例においては、領域推定範囲261のうち、図中黒い四角形で示される領域の点に対応する小領域271,272が決定される。図中小領域271は、4つの点に対応する小領域が重なりあった例を示している。小領域の大きさは、例えば、サンプル点の間隔に比例するように決定してもよい。
次に、ステップS234において、領域推定部161は、ステップS233の処理で決定した各小領域の和の領域を暫定領域推定範囲とする。図26Cの例においては、小領域271と小領域272の和の領域281が暫定領域推定範囲とされる。小領域の和をとった結果、不連続な複数の領域が形成される場合には、その中の最大面積を持つ領域のみを暫定領域推定範囲とすることもできる。
ステップS231において、全画面動きと背景動きとが一致すると判定された場合には、ステップS232において、領域推定部161は、現在の領域推定範囲を暫定領域推定範囲とする。現在の領域推定範囲を暫定推定領域範囲とするのは、背景動き推定の結果と全画面動きが一致する場合には、動きにより背景と追尾対象を区別することができないので、現在の領域推定範囲を変更しないようにするためである。
ステップS234またはステップS232の処理の後、ステップS235において領域推定部161は、ステップS234またはステップS232で決定された暫定領域推定範囲の全画面動きによるシフトで、次の領域推定範囲を決定する。図26Dの例においては、暫定領域推定範囲281が全画面動きによる動きベクトル283に基づいてシフトされ、暫定領域推定範囲282とされている。
ステップS236において、領域推定部161は、追尾点がステップS235の処理で決定された次の領域推定範囲に含まれるか否かを判定し、含まれない場合には、ステップS237に進み、追尾点を含むように次の領域推定範囲をシフトする。図26Cと図26Dの例においては、領域推定範囲282が追尾点284を含んでいないので、追尾点284を左上に含むようにシフトされ、領域推定範囲291とされている。
ステップS236において、追尾点が次の領域推定範囲に含まれると判定された場合には、ステップS237のシフト処理は必要ないのでスキップされる。
次に図14のステップS162における乗り換え候補抽出処理について、図27のフローチャートを参照して説明する。
ステップS261において、乗り換え候補抽出部162は、全画面動きの領域と推定されたすべての点につき、それぞれに対応する推定動きでの点のシフト結果を乗り換え候補として保持する。すなわち、領域推定結果として得られた点をそのまま用いるのではなく、それらを次のフレームでの使用のために、それぞれの動き推定結果に基づきシフトされた結果を抽出する処理が行われ、その抽出された乗り換え候補が、乗り換え候保持部56に供給され、保持される。
この処理を図12を参照して説明すると、次のようになる。すなわち、図12の例において、フレームn−1,nでは追尾点101が存在するが、フレームn+1においては、図中左側から飛んできたボール121により隠されてしまい、追尾点101が存在しない。そこでフレームn+1において、追尾点を追尾対象としての顔104上の他の点(例えば、左目103(実際には右目102にもっと近接した点))に乗り換える必要が生じる。そこで、乗り換えが実際に必要になる前のフレームで、乗り換え候補を予め用意しておくのである。
具体的には、図12の例の場合、フレームnからフレームn+1への領域推定範囲133内での動き推定結果は、領域推定範囲133において乗り換えが必要なことから、正しく推定できない確率が高いことが予想される。すなわち、図12の例では、乗り換えが追尾点と、それと同一の対象物の一部が隠れることに起因して起きる。その結果、フレームnでの領域推定範囲133のうち、フレームn+1で対象が隠れる部分(図12において影を付した部分)134については、動きが正しく推定されず、動きの確度が低いことが推定されるか、または確度が低くないと推定され、かつ、動き推定結果としては意味のないものが得られることになる。
このような場合には、領域推定の際に用いることが可能な動き推定結果が減少する、あるいは誤った動き推定結果が混入するなどの理由で、領域推定が誤る可能性が高まる。一方、このような可能性は、一般的に、より時間的に前のフレームn−1からフレームnの間での領域推定においては、フレームnからフレームn+1での間での推定に比較して低くなることが予想される。
そこで、リスク低減のため、領域推定結果をそのまま用いるのではなく、前のフレームn−1(あるいは、時間的にもっと前のフレーム)で求めた領域推定結果を、その次のフレームでの移動先の乗り換え候補として用いるのが性能向上の上で望ましい。
ただし、領域推定結果をそのまま用いることも可能である。この場合の処理については、図42を参照して説明する。
図28は、図14のステップS163におけるテンプレート作成処理の詳細を表している。ステップS281においてテンプレート作成部163は、領域(全画面動きの領域)と推定されたすべての点につき、それぞれに対応する小領域を決定する。図29の例においては、領域の点321に対応して小領域322が決定されている。
ステップS282において、テンプレート作成部163は、ステップS281の処理で決定された小領域の和の領域をテンプレート範囲に設定する。図29の例においては、小領域322の和の領域がテンプレート範囲331とされている。
次にステップS283において、テンプレート作成部163は、ステップS282において設定したテンプレート範囲の情報と画像情報からテンプレートを作成し、テンプレート保持部58に供給し、保持させる。具体的には、テンプレート範囲331内の画素データがテンプレートとされる。
図30は、領域の点321に対応する小領域341が、図29における小領域322に較べてより大きな面積とされている。その結果、小領域341の和の領域のテンプレート範囲351も、図29のテンプレート範囲331に較べてより広くなっている。
小領域の大きさは、サンプル点の間隔に比例させることが考えられるが、その際の比例定数は、面積がサンプル点間隔の自乗になるように決めることもできるし、それより大きくまたは小さく決めることも可能である。
なお、領域推定結果を用いず、例えば追尾点を中心とする固定の大きさや形状の範囲をテンプレート範囲として用いることも可能である。
図31は、テンプレートと領域推定範囲の位置関係を表している。テンプレート範囲403には、追尾点405が含まれている。テンプレート範囲403に外接する外接矩形401の図中左上の点がテンプレート基準点404とされている。テンプレート基準点404から追尾点405に向かうベクトル406、並びにテンプレート基準点404から領域推定範囲402の図中左上の基準点408に向かうベクトル407が、テンプレート範囲403の情報とされる。テンプレートは、テンプレート範囲403に含まれる画素で構成される。ベクトル406,407は、テンプレートと同じ画像が検出された際の通常処理への復帰に用いられる。
以上の処理においては、乗り換え候補の場合と異なり、範囲、画素ともに、現フレームに対応するものをテンプレートとする例を説明したが、乗り換え候補の場合と同様に、次フレームでの移動先をテンプレートとして用いることも可能である。
以上のようにして、追尾点を含む画素データからなるテンプレートが乗り換え候補と同様に、通常処理中に、予め作成される。
図10のステップS126における領域推定関連処理は、領域推定関連処理部55を、例えば図32に示されるように構成することで処理することも可能である。
この場合においても、領域推定関連処理部55は、図13における場合と同様に、領域推定部161、乗り換え候補抽出部162、およびテンプレート作成部163により構成されるが、この実施の形態の場合、領域推定部161には、追尾点決定部57より追尾点の情報と入力画像が入力される。乗り換え候補抽出部162には、領域推定部161の出力のみが供給されている。テンプレート作成部163には、領域推定部161の出力と入力画像とが供給されている。
この場合においても、基本的な処理は、図14に示される場合と同様に、ステップS161において、領域推定処理が行われ、ステップS162において、乗り換え候補抽出処理が行われ、ステップS163において、テンプレート作成処理が行われる。このうちのステップS163のテンプレート作成処理は、図28に示した場合と同様であるので、ステップS161の領域推定処理と、ステップS162の乗り換え候補抽出処理についてのみ以下に説明する。
最初に、図33のフローチャートを参照して、ステップS161における領域推定処理の詳細について説明する。ステップS301において、図32の領域推定部161は、追尾点と同一対象に属する画像上の領域を推定するためにサンプル点を決定する。この処理は、図15のステップS181の処理と同様の処理である。
ただし、このステップS301の処理において対象とされるフレームは、追尾点を求め終わったフレーム(追尾後の追尾点を含むフレーム)であり、この点、図15のステップS181においてサンプル点を求めるフレームが前フレームであるのと異なる。
次に、このステップS302において、領域推定部161は、次フレーム(ステップS301でサンプル点を決定したフレーム)の画像に空間方向のローパスフィルタを施す処理を実行する。すなわちローパスフィルタを施すことにより、高周波成分が除去され、画像が平滑化される。これにより、次のステップS303における同色領域の成長処理が容易になる。
次に、ステップS303において、領域推定部161は、追尾点を出発点として、画素値の差分が閾値THimg未満であるという条件で、追尾点の同色領域を成長させ、同色領域に含まれるサンプル点を領域の推定結果とする処理を実行する。領域の推定結果としては、成長させた結果の同色領域に含まれるサンプル点が利用される。
具体的には、例えば図34Aに示されるように、追尾点421に隣接する8個の方向の画素の画素値が読み取られる。すなわち、上方向、右上方向、右方向、右下方向、下方向、左下方向、左方向、および左上方向の8つの方向に隣接する画素の画素値が読み取られる。読み取られた画素値と追尾点421の画素値との差分が演算される。そして、演算された差分値が閾値THimg以上であるか否かが判定される。図34Aの場合、矢印を付して示される方向の画素値、すなわち上方向、右上方向、下方向、左方向、および左上方向の画素値と追尾点321の差分が閾値THimg未満であり、図中矢印を付さずに示されている方向、すなわち右方向、右下方向、および左下方向の画素値と追尾点421の差分が閾値THimg以上であったとされる。
この場合、図34Bに示されるように、差分が閾値THimg未満である画素(図34Aにおいて、追尾点421に対して矢印で示される方向の画素)が追尾点421と同色領域の画素422として登録される。同様の処理が同色領域に登録された各画素422において行われる。図34Bに示される例では、図中左上の白い円で示される画素422とそれに隣接する画素(既に同色領域であるとの判定が行われた画素を除く)の画素値の差分が演算され、その差分が閾値THimg以上であるか否かが判定される。図34Bの例においては、右方向、右下方向、および下方向の画素は、既に同色領域の判定処理が終了している方向なので、上方向、右上方向、左下方向、左方向、および左上方向においての差分が演算される。そして、この例では、上方向、右上方向、および左上方向の3つの方向の差分が閾値THimg未満とされ、図34Cに示されるように、その方向の画素が追尾点421と同色領域の画素として登録される。
以上のような処理が順次繰り返されることで、図35に示されるように、サンプル点のうち、同色領域431に含まれる点が追尾点421と同一対象物上の点として推定される。
図33に示される領域推定処理(図14のステップS161)に続いて、図32の乗り換え候補抽出部162において実行される図14のステップS162の乗り換え候補抽出処理は、図36のフローチャートに示されるようになる。
すなわち、ステップS331において、乗り換え候補抽出部162は、領域(同色領域)と推定されたすべての点をそのまま乗り換え候補とし、それを乗り換え候補保持部56に供給し、保持させる。
図32の領域推定関連処理部55において、図33の領域推定処理(図14のステップS161)、図36の乗り換え候補抽出処理(図14のステップS162)に引き続き、図32のテンプレート作成部163で実行される図14のステップS163のテンプレート作成処理は、図28に示される場合と同様であるので、その説明は省略する。
ただし、この場合においては、追尾点の同色領域をそのままテンプレートの範囲とすることも可能である。
以上に説明した図6のステップS51の通常処理に続いて行われるステップS52の例外処理の詳細について、図37のフローチャートを参照して説明する。この処理は、上述したように、図10のステップS124において追尾点の動きを推定することが不可能と判定され、さらにステップS128において追尾点を乗り換える乗り換え候補が選択できなかったと判定された場合に実行されることになる。
ステップS401において、制御部59は、例外処理の初期化処理を実行する。この処理の詳細は図38のフローチャートに示されている。
ステップS321において、制御部59は、追尾点の追尾ができなくなった際(追尾点の動きを推定することが不可能かつ、追尾点を乗り換える乗り換え候補が選択できなかった際)にシーンチェンジが起きていたか否かを判定する。シーンチェンジ検出部53は、動き推定部52の推定結果に基づいてシーンチェンがあったか否かを常に監視しており、制御部59は、そのシーンチェンジ検出部53の検出結果に基づいて、ステップS421の判定を実行する。シーンチェンジ検出部53の具体的処理については、図54と図55を参照して後述する。
シーンチェンジが起きている場合、追尾ができなくなった理由がシーンチェンジが発生したことによるものと推定して、ステップS422において制御部19は、モードをシーンチェンジに設定する。これに対して、ステップS421においてシーンチェンジが発生していないと判定された場合には、制御部59は、ステップS423においてモードをその他のモードに設定する。
ステップS422またはステップS423の処理の後、ステップS424においてテンプレートマッチング部51は、時間的に最も古いテンプレートを選択する処理を実行する。具体的には、図39に示されるように、例えばフレームnからフレームn+1に移行するとき、例外処理が実行されるものとすると、フレームn−m+1からフレームnに関して生成され、テンプレート保持部58に保持されているm個のフレームのテンプレートの中から、時間的に最も古いテンプレートであるフレームn−m+1に関して生成されたテンプレートが選択される。
このように例外処理への移行直前のテンプレート(図39の例の場合フレームnに関して生成されたテンプレート)を用いずに、時間的に少し前のテンプレートを選択するのは、追尾対象のオクルージョンなどで例外処理への移行が発生した場合には、移行の直前には追尾対象が既にかなり隠れており、その時点のテンプレートでは、追尾対象を充分に大きく捉えることができない可能性が高いからである。従って、このように時間的に若干前のフレームにおけるテンプレートを選択することで、確実な追尾が可能となる。
次に、ステップS425において、テンプレートマッチング部51は、テンプレート探索範囲を設定する処理を実行する。テンプレート探索範囲は、例えば、例外処理に移行する直前の追尾点の位置がテンプレート探索範囲の中心となるように設定される。
すなわち、図40に示されるように、フレームnにおいて被写体の顔104の右目102が追尾点101として指定されている場合において、図中左方向からボール121が飛んできて、フレームn+1において追尾点101を含む顔104が隠れ、フレームn+2において、再び追尾点101が現れる場合を想定する。この場合において、追尾点101(テンプレート範囲411に含まれる)を中心とする領域がテンプレート探索範囲412として設定される。
ステップS426において、テンプレートマッチング部51は、例外処理への移行後の経過フレーム数およびシーンチェンジ数を0にリセットする。このフレーム数とシーンチェンジ数は、後述する図37のステップS405における継続判定処理(図41のステップS461,S463,S465,S467)において使用される。
以上のようにして、例外処理の初期化処理が終了した後、図37のステップS402において、制御部59は次のフレームを待つ処理を実行する。ステップS403において、テンプレートマッチング部51は、テンプレート探索範囲内においてテンプレートマッチング処理を行う。ステップS404においてテンプレートマッチング部51は、通常処理への復帰が可能であるか否かを判定する。
具体的には、テンプレートマッチング処理により、数フレーム前のテンプレート(図40のテンプレート範囲411内の画素)と、テンプレート探索範囲内のマッチング対象の画素の差分の絶対値和が演算される。より詳細には、テンプレート範囲411内の所定のブロックと、テンプレート探索範囲内の所定のブロックにおけるそれぞれの画素の差分の絶対値和が演算される。ブロックの位置がテンプレート範囲411内で順次移動され、各ブロックの差分の絶対値和が加算され、そのテンプレートの位置における値とされる。そして、テンプレートをテンプレート探索範囲内で順次移動させた場合における差分の絶対値和が最も小さくなる位置とその値が検索される。ステップS404において、最小の差分の絶対値和が、予め設定されている所定の閾値と比較される。差分の絶対値和が閾値以下である場合には、追尾点(テンプレートに含まれている)を含む画像が再び出現したことになるので、通常処理への復帰が可能であると判定され、処理は図6のステップS51の通常処理に戻る。
そして上述したように、図11のステップS141において、例外処理からの復帰であると判定され、ステップS144において、差分絶対値和が最小となる位置をテンプレートのマッチした位置として、このマッチした位置とテンプレートに対応して保持してあったテンプレート位置と追尾点領域推定範囲の位置関係から、追尾点と領域推定範囲の設定が行われる。すなわち、図31を参照して説明したように、追尾点405を基準とするベクトル406,407に基づいて、領域推定範囲402が設定される。
ただし、図14のステップS161の領域推定処理において、領域推定範囲を用いない手法を用いる場合(例えば、図33に示される領域推定処理が用いられる場合)には、領域推定範囲の設定は行われない。
図37のステップS404における通常処理への復帰が可能であるか否かの判定は、最小の差分絶対値和をテンプレートのアクティビティで除算して得られる値を閾値と比較することで行うようにしてもよい。この場合におけるアクティビティは、後述する図47のアクティビティ算出部602により、図48のステップS603において算出された値を用いることができる。
あるいはまた、今回の最小の差分絶対値和を1フレーム前における最小の差分絶対値和で除算することで得られた値を所定の閾値と比較することで、通常処理への復帰が可能であるか否かを判定するようにしてもよい。この場合、アクティビティの計算が不要となる。すなわち、ステップS404では、テンプレートとテンプレート探索範囲の相関が演算され、相関値と閾値の比較に基づいて判定が行われる。
ステップS404において、通常処理への復帰が可能ではないと判定された場合、ステップS405に進み、継続判定処理が実行される。継続判定処理の詳細は、図41のフローチャートを参照して後述するが、これにより、追尾処理が継続可能であるか否かの判定が行われる。
ステップS406において、制御部59は、追尾点の追尾が継続可能であるか否かを継続判定処理の結果に基づいて(後述する図41のステップS466,S468で設定されたフラグに基づいて)判定する。追尾点の追尾処理が継続可能である場合には、処理はステップS302に戻り、それ以降の処理が繰り返し実行される。すなわち、追尾点が再び出現するまで待機する処理が繰り返し実行される。
これに対して、ステップS406において、追尾点の追尾処理が継続可能ではないと判定された場合(後述する図41のステップS465で、追尾点が消失した後の経過フレーム数が閾値THfr以上と判定されるか、または、ステップS467でシーンチェンジ数が閾値THsc以上と判定された場合)、最早、追尾処理は不可能として、追尾処理は終了される。
図41は、図37のステップS405における継続判定処理の詳細を表している。ステップS461において、制御部59は、変数としての経過フレーム数に1を加算する処理を実行する。経過フレーム数は、図37のステップS401の例外処理の初期化処理(図38のステップS426)において、予め0にリセットされている。
次にステップS462において、制御部59は、シーンチェンジがあるか否かを判定する。シーンチェンジがあるか否かは、シーンチェンジ検出部53が、常にその検出処理を実行しており、その検出結果に基づいて判定が可能である。シーンチェンジがある場合には、ステップS463に進み、制御部59は変数としてのシーンチェンジ数に1を加算する。このシーンチェンジ数も、図38のステップS426の初期化処理において0にリセットされている。通常処理から例外処理への移行時にシーンチェンジが発生していない場合には、ステップS463の処理はスキップされる。
次に、ステップS464において、制御部59は、現在設定されているモードがシーンチェンジであるか否かを判定する。このモードは、図38のステップS422,S423において設定されたものである。現在設定されているモードがシーンチェンジである場合には、ステップS467に進み、制御部59は、シーンチェンジ数が予め設定されている閾値THscより小さいか否かを判定する。シーンチェンジ数が閾値THscより小さい場合には、ステップS466に進み、制御部59は継続可のフラグを設定し、シーンチェンジ数が閾値THsc以上である場合には、ステップS468に進み、継続不可のフラグを設定する。
一方、ステップS464において、モードがシーンチェンジではないと判定された場合(モードがその他であると判定された場合)、ステップS465に進み、制御部59は、経過フレーム数が閾値THfrより小さいか否かを判定する。この経過フレーム数も、図38の例外処理の初期化処理のステップS426において、予め0にリセットされている。経過フレーム数が閾値THfrより小さいと判定された場合には、ステップS466において、継続可のフラグが設定され、経過フレーム数が閾値THfr以上であると判定された場合には、ステップS468において、継続不可のフラグが設定される。
このように、テンプレートマッチング処理時におけるシーンチェンジ数が閾値THsc以上になるか、または経過フレーム数が閾値THfr以上になった場合には、それ以上の追尾処理は不可能とされる。
なお、モードがその他である場合には、シーンチェンジ数が0であるという条件も加えて、継続が可能であるか否かを判定するようにしてもよい。
以上においては、画像のフレームを処理単位とし、すべてのフレームを用いることを前提としたが、フィールド単位で処理したり、すべてのフレームまたはフィールドを利用するのではなく、所定の間隔で間引いて抽出されたフレームまたはフィールドを用いるようにすることも可能である。
また、以上においては、乗り換え候補として、推定した領域内の点の移動先を用いるようにしたが、領域内の点をそのまま用いるようにすることも可能である。この場合、図6のステップS51の通常処理は、図10の処理に代えて、図42の処理に変更される。
図42のステップS501乃至ステップS510の処理は、基本的に図10のステップS21乃至ステップS29の処理と同様の処理であるが、図10のステップS122に対応する図42のステップS502の次のフレームを待つ処理の次に、ステップS503の領域推定関連処理が挿入されている点と、図10におけるステップS126における領域推定関連処理に代えて、ステップS507の領域推定範囲の更新処理が実行される点が異なっている。その他の処理は、図10における場合と同様であるので、その説明は省略する。
図42のステップS503の領域推定関連処理の詳細は、図10を参照して説明した場合と同様となり、ステップS507の領域推定範囲の更新処理は、図16を参照して説明した場合と同様の処理となる。
通常処理を、図42のフローチャートに示されるように実行した場合における、ステップS503の領域推定関連処理(図10の領域推定関連処理)の領域推定処理(図10のステップS161における領域推定処理)は、図43のフローチャートに示されるようになる。
そのステップS531乃至ステップS535の処理は、基本的に図15のステップS181乃至ステップS186の処理と同様の処理となる。ただし、図15のステップS186における領域推定範囲の更新処理が図43においては省略されている。その他の処理は、図15における場合と同様である。すなわち、領域推定範囲の更新処理は、図42のステップS507において実行されるため、図43の領域推定処理では不要とされるのである。
さらに、図42の通常処理を行う場合におけるステップS503の領域推定関連処理(図16の領域推定関連処理)の乗り換え候補抽出処理(図14のステップS162における乗り換え候補抽出処理)は、図44に示されるようになる。このステップS551の処理は、図27におけるステップS261の乗り換え候補抽出処理と同様の処理となる。
以上のように、通常処理を図42のフローチャートに示されるように行った場合と、図10に示されるように行った場合とにおける処理の違いを説明すると、図45と図46に示されるようになる。
図10のフローチャートに示される通常処理を行った場合には、図45に示されるように、フレームnにおいて、領域推定範囲221内の図中黒い四角形で示される点451により領域222が構成されているとすると、次のフレームn+1において、前のフレームnにおける領域222の各点451をそれぞれの動きベクトル453に基づいてシフトした位置におけるフレームn+1上の点452が乗り換え候補とされる(図23のステップS161の処理)。
各点451の動きベクトル453は、全画面動きの動きベクトルと同じになることもあるが、全画面動きと同じ動きとみなす精度によっては各点の推定動きに多少のばらつきがでる。例えば、水平方向、垂直方向とも、±1画素の違いは同じとみなすとすると、(0,0)の動きには、(−1,1)や(1,0)の動きも含まれる。この場合、全画面動きが(0,0)であったとしても、各点451が、(−1,1)、(1,0)等の動きを持っているときは、それぞれの動きの分だけシフトされる。移動先の点をそのまま乗り換え候補として用いるのではなく、予め求められたサンプル点のうち、最も近い点を乗り換え候補とすることも可能である。勿論、処理負荷軽減のため、各点451を、全画面動きの分だけシフトしてもよい。
これに対して、通常処理を図42のフローチャートに示されるように実行した場合においては、図46に示されるように、フレームnにおける領域推定範囲221内の点461が乗り換え候補とされる。
次に、図47を参照して、図5の動き推定部52の構成例について説明する。この実施の形態においては、入力画像が、評価値算出部601、アクティビティ算出部602、および動きベクトル検出部606に供給されている。評価値算出部601は、動きベクトルにより対応付けられる両対象の一致度に関する評価値を算出し、正規化処理部604に供給する。アクティビティ算出部602は、入力画像のアクティビティを算出し、閾値判定部603と正規化処理部604に供給する。動きベクトル検出部606は、入力画像から動きベクトルを検出し、評価値算出部601と統合処理部605に供給する。
正規化処理部604は、評価値算出部601より供給された評価値を、アクティビティ算出部602より供給されたアクティビティに基づいて正規化し、得られた値を統合処理部605に供給する。閾値判定部603は、アクティビティ算出部602より供給されたアクティビティを所定の閾値と比較し、その判定結果を統合処理部605に供給する。統合処理部605は、正規化処理部604から供給された正規化情報と、閾値判定部603より供給された判定結果に基づいて、動きベクトルの確度を演算し、得られた確度を動きベクトル検出部606より供給された動きベクトルとともに出力する。
次に、図48のフローチャートを参照して、動き推定部52の動き推定処理について説明する。動きベクトルは、点に対するものとして求められているが、その確度は、動きベクトルにより対応付けられる2つの点の近傍の、例えば点を中心とする、小ブロックの画像データを用いて計算される。ステップS601において、動きベクトル検出部606は、入力画像から動きベクトルを検出する。この検出には、例えばブロックマッチング方式や勾配法が用いられる。検出された動きベクトルは、評価値算出部601と統合処理部605に供給される。
ステップS602において、評価値算出部601は評価値を算出する。具体的には、例えば、動きベクトルで対応付けられる2つの点を中心とする2つのブロックの画素値の差分絶対値和が算出される。すなわち、ステップS601で動きベクトル検出部606により検出された動きベクトルV(vx,vy)と、それに基づく時間的に前のフレームの画像Fi上の点P(Xp,Yp)、並びに時間的に後のフレームの画像Fj上の点Q(Xq,Yq)の関係は次式で表される。
Q(Xq,Yq)=P(Xp,Yp)+V(vx,vy) ・・・(1)
評価値算出部601は点Pを中心とするブロックと、点Qを中心とするブロックについて、次式に基づいて評価値Eval(P,Q,i,j)を演算する。
各ブロックは、1辺が2L+1画素の正方形とされている。上記式における総和ΣΣは、xが−LからLについて、yが−LからLについて、対応する画素同士で行われる。従って、例えば、L=2である場合、9個の差分が得られ、その絶対値の総和が演算される。評価値は、その値が0に近づくほど、2つのブロックがよく一致していることを表している。
評価値算出部601は、生成した評価値を正規化処理部604に供給する。
ステップS603において、アクティビティ算出部602は、入力画像からアクティビティを算出する。アクティビティは、画像の複雑さを表す特徴量であり、図49に示されるように、各画素毎に注目画素Y(x,y)と、それに隣接する8画素Y(x+i,y+j)との差分絶対値和の平均値が、注目画素位置のアクティビティActivity(x,y)として次式に基づいて演算される。
図49の例の場合、3×3画素のうち、中央に位置する注目画素Y(x,y)の値は110であり、それに隣接する8個の画素の値は、それぞれ80,70,75,100,100,100,80,80であるから、アクティビティActivity(x,y)は次式で表される。
Activity(x,y) ={|80−110|+|70−110|+|75−110|+|100−110|+|100−110|+|100−110|+|80−110|+|80−110|}/8 =24.375となる。
同様の処理が、そのフレームのすべての画素について実行される。
ブロック単位で動きベクトル確度を算出するため、次式で表されるブロック内の全画素のアクティビティの総和が、そのブロックのアクティビティ(ブロックアクティビティ)Blockactivity(i,j)と定義される。
なお、アクティビティとしては、この他、分散値、ダイナミックレンジなどとすることも可能である。
閾値判定部603は、ステップS604において、アクティビティ算出部602により算出されたブロックアクティビティを予め設定されている所定の閾値と比較する。そして、入力されたブロックアクティビティが閾値より大きいか否かを表すフラグを統合処理部605に出力する。
具体的には、実験の結果、ブロックアクティビティと評価値は、動きベクトルをパラメータとして、図50に示される関係を有する。図50において、横軸はブロックアクティビティBlockactivity(i,j)を表し、縦軸は評価値Evalを表している。動きが正しく検出されている場合(正しい動きベクトルが与えられている場合)、そのブロックアクティビティと評価値の値は、曲線621より図中下側の領域R1に分布する。これに対して誤った動き(不正解の動きベクトル)が与えられた場合、そのブロックアクティビティと評価値の値は、曲線622より、図中左側の領域R2に分布する(曲線622より上側の領域R2以外の領域と曲線621より下側の領域R1以外の領域には殆ど分布がない)。曲線621と曲線622は、点Pにおいて交差する。この点Pにおけるブロックアクティビティの値が閾値THaとされる。閾値THaは、ブロックアクティビティの値がそれより小さい場合には、対応する動きベクトルが正しくない可能性があることを意味する(この点については後に詳述する)。閾値判定部603は、アクティビティ算出部602より入力されたブロックアクティビティの値が、この閾値THaより大きいか否かを表すフラグを統合処理ブロック605に出力する。
ステップS605において、正規化処理部604は、正規化処理を実行する。具体的には、正規化処理部604は、次式に従って動きベクトル確度VCを演算する。
VC=1−評価値/ブロックアクティビティ ・・・(5)
但し、動きベクトル確度VCの値が0未満となる場合にはその値を0に置き換える。動きベクトル確度VCのうち、評価値をブロックアクティビティで割り算して得られた値は、その値によって規定される図50のグラフ上の位置が、原点Oと点Pを結ぶ傾きが1の直線623より、図中下側の領域内であるのか、図中上側の領域内であるのかを表す。すなわち、直線623の傾きは1であり、評価値をブロックアクティビティで割り算して得られた値が1より大きければ、その値に対応する点は、直線623の上側の領域に分布する点であることを意味する。そしてこの値を1から減算して得られる動きベクトル確度VCは、その値が小さい程、対応する点が領域R2に分布する可能性が高いことを意味する。
これに対して、評価値をブロックアクティビティで割り算して得られた値が1より小さければ、その値に対応する点は、直線623の図中下側の領域に分布することを意味する。そして、そのときの動きベクトル確度VCは、その値が大きい程(0に近い程)、対応する点が領域R1に分布することを意味する。正規化処理部604は、このようにして演算して得られた動きベクトル確度VCを統合処理部605に出力する。
ステップS606において、統合処理部605は、統合処理を実行する。この統合処理の詳細は、図51のフローチャートに示されている。
統合処理部605は、ステップS631において、ブロックアクティビティが閾値THa以下か否かを判定する。この判定は、閾値判定部603より供給されたフラグに基づいて行われる。ブロックアクティビティが閾値THa以下である場合には、ステップS632において統合処理部605は、正規化処理部604が算出した動きベクトル確度VCの値を0に設定する。ステップS631において、アクティビティの値が閾値THaより大きいと判定された場合には、ステップS632の処理はスキップされ、正規化処理部604で生成された動きベクトル確度VCの値が、そのまま動きベクトルとともに出力される。
これは、正規化処理部604において演算された動きベクトルの確度VCの値が正であったとしても、ブロックアクティビティの値が閾値THaより小さい場合には、正しい動きベクトルが得られていない可能性があるからである。すなわち、図50に示されるように、原点Oと点Pの間においては、曲線622が、曲線621より図中下側に(直線623より下側に)突出することになる。ブロックアクティビティの値が閾値Thaより小さい区間であって、曲線621と曲線622において囲まれる領域R3においては、評価値をブロックアクティビティで割り算して得られる値は、領域R1とR2の両方に分布し、正しい動きベクトルが得られていない可能性が高い。そこで、このような分布状態である場合には、動きベクトルの確度は低いものとして処理するようにする。このため、ステップS632において、動きベクトル確度VCは、その値が正であったとしても、閾値Thaより小さい場合には、0に設定される。このようにすることで、動きベクトル確度VCの値が正である場合には、正しい動きベクトルが得られている場合であることを確実に表すことが可能となる。しかも、動きベクトル確度VCの値が大きい程、正しい動きベクトルが得られている確率が高くなる(分布が領域R1に含まれる確率が高くなる)。
このことは、一般的に、輝度変化が少ない領域(アクティビティが小さい領域)では信頼性が高い動きベクトルを検出することが困難であるとの経験上の法則とも一致する。
図52は,図5の背景動き推定部54の構成例を表している。この構成例においては、背景動き推定部54は、頻度分布算出部651と背景動き決定部652により構成されている。
頻度分布算出部651は、動きベクトルの頻度分布を算出する。ただし、この頻度には、動き推定部12より供給される動きベクトル確度VCを用いることで、確からしい動きに重みが与えられるように、重み付けが行われる。背景動き決定部652は、頻度分布算出部651により算出された頻度分布に基づいて、頻度が最大となる動きを背景動きとして決定する処理を行い、領域推定関連処理部55へ出力する。
図53を参照して、背景動き推定部54の背景動き推定処理について説明する。
ステップS651において、頻度分布算出部651は、動き頻度分布を算出する。具体的には、頻度分布算出部651は、背景動きの候補としての動きベクトルのx座標とy座標がそれぞれ基準点から±16画素分の範囲で表されるとすると、1089個(=16×2+1)×(16×2+1))の箱、すなわち動きベクトルがとり得る値に対応する座標分の箱を用意し、動きベクトルが発生した場合、その動きベクトルに対応する座標に1を加算する。このようにすることで、動きベクトルの頻度分布を算出することができる。
ただし、1個の動きベクトルが発生した場合、1を加算していくと、確度が低い動きベクトルの発生頻度が多い場合、その確実性が低い動きベクトルが背景動きとして決定されてしまう恐れがある。そこで、頻度分布算出部651は、動きベクトルが発生した場合、その動きベクトルに対応する箱(座標)に、値1を加算するのではなく、値1に動きベクトル確度VCを乗算した値(=動きベクトル確度VCの値)を加算する。動きベクトル確度VCの値は、0から1の間の値として正規化されており、その値が1に近いほど確度が高い値である。従って、このようにして得られた頻度分布は、動きベクトルをその確度に基づいて重み付けした頻度分布となる。これにより、確度の低い動きが背景動きとして決定される恐れが少なくなる。
次に、ステップS652において、頻度分布算出部651は、動き頻度分布を算出する処理を全ブロックについて終了したか否かを判定する。まだ処理していないブロックが存在する場合には、ステップS651に戻り、次のブロックについてステップS651の処理が実行される。
以上のようにして、全画面に対して動き頻度分布算出処理が行われ、ステップS652において、全ブロックの処理が終了したと判定された場合、ステップS653に進み、背景動き決定部652は、頻度分布の最大値を検索する処理を実行する。すなわち、背景動き決定部652は、頻度分布算出部651により算出された頻度の中から最大の頻度のものを選択し、その頻度に対応する動きベクトルを背景動きの動きベクトルとして決定する。この背景動きの動きベクトルは、領域推定関連処理部55に供給され、例えば、図20のステップS204や図25のステップS231の全画面動きと背景動きが一致するか否かの判定処理に用いられる。
図54は、図5のシーンチェンジ検出部53の詳細な構成例を表している。この例においては、動きベクトル確度平均算出部671と閾値判定部672によりシーンチェンジ検出部53が構成されている。
動きベクトル確度平均算出部671は、動き推定部52より供給された動きベクトル確度VCの全画面の平均値を算出し、閾値判定部672に出力する。閾値判定部672は、動きベクトル確度平均算出部671より供給された平均値を、予め定められている閾値と比較し、その比較結果に基づいて、シーンチェンジであるか否かを判定し、判定結果を制御部59に出力する。
次に、図55のフローチャートを参照して、シーンチェンジ検出部53の動作について説明する。ステップS681において、動きベクトル確度平均算出部671は、ベクトル確度の総和を算出する。具体的には、動きベクトル確度平均算出部671は、動き推定部52の統合処理部605より出力された各ブロック毎に算出された動きベクトル確度VCの値を加算する処理を実行する。ステップS682において、動きベクトル確度平均算出部671は、ベクトル確度VCの総和を算出する処理が全ブロックについて終了したか否かを判定し、まだ終了していない場合には、ステップS681の処理を繰り返す。この処理を繰り返すことで、1画面分の各ブロックの動きベクトル確度VCの総和が算出される。ステップS682において1画面全部についての動きベクトル確度VCの総和の算出処理が終了したと判定された場合、ステップS683に進み、動きベクトル確度平均算出部671は、ベクトル確度VCの平均値を算出する処理を実行する。具体的には、ステップS681の処理で算出された1画面分のベクトル確度VCの総和を、足し込まれたブロック数で除算して得られた値が平均値として算出される。
ステップS684において、閾値判定部672は、ステップS683の処理で動きベクトル確度平均算出部671により算出された動きベクトル確度VCの平均値を、予め設定されている閾値と比較し、閾値より小さいか否かを判定する。一般的に、動画中の時刻が異なる2フレーム間でシーンチェンジが発生すると、対応する画像が存在しないため、動きベクトルを算出しても、その動きベクトルは確からしくないことになる。そこで、ベクトル確度VCの平均値が閾値より小さい場合には、ステップS685において、閾値判定部672はシーンチェンジフラグをオンし、閾値より小さくない場合(閾値以上である場合)、ステップS586において、シーンチェンジフラグをオフにする。シーンチェンジフラグのオンは、シーンチェンジがあったことを表し、そのオフは、シーンチェンジが無いことを表す。
このシーンチェンジフラグは、制御部59へ供給され、図38のステップS421におけるシーンチェンジの有無の判定、並びに図41のステップS462のシーンチェンジの有無の判定に利用される。
以上のように、図1のオブジェクト追尾部26を構成することにより、追尾すべきオブジェクト51(図3)が回転したり、オクルージョンが発生したり、あるいはシーンチェンジにより、オブジェクト51の追尾点51Aが一時的に表示されなくなるような場合でも、画像の中で移動するオブジェクト51(追尾点51A)を正確に追尾することができる。
このようにして追尾されるオブジェクト51の追尾点51Aの位置情報が、図1のオブジェクト追尾部26による追尾結果としてエリア設定部25に出力されることにより、エリア設定部25によって、上述したように補正対象エリア52が設定される。そして、画像補正部22が補正対象エリア52の中の画像のぼけ(フォーカスぼけ)を除去する。
次に、図1の画像補正部22の詳細な構成例と、その動作について説明する。図56は、画像補正部22の詳細な構成例を示すブロック図である。この例では画像補正部22に、エリア設定部25の出力信号に基づいて制御信号を生成し、その制御信号を各部に供給する制御信号生成部741、入力画像の特徴を検出する画像特徴検出部742、制御信号に基づいて、アドレスの演算を行うアドレス演算部743、アドレス演算部743により演算されたアドレスに基づいて、予め記憶された所定の係数を出力する係数ROM744、および入力画像の中の所定の領域に対応する複数の画素を抽出する領域抽出部745が設けられている。
また、領域抽出部745から出力された画素のレベルに対して、係数ROM744から出力された係数に基づく積和演算を行い、新たに修正された画素レベルを出力する積和演算部746、および積和演算部746の出力結果と制御信号に基づいて、補正対象エリア52内の画像と、背景53を合成し、出力する画像合成部747が設けられている。
図57は、制御信号生成部741が生成する制御信号の例を示す図である。制御信号Aは、入力画像の中の修正すべき部分(補正対象エリア52)を特定する信号であり、エリア設定部25の出力に基づいて生成され、領域抽出部745と画像合成部747に供給される。制御信号Bは、後述するぼけの度合いを表すパラメータσを特定する信号であり、アドレス演算部743に供給される。パラメータσの値は、例えば、制御部27を介して行われる、ユーザの指定に基づいて特定されるようにしてもよいし、予め設定されるようにしてもよい。
制御信号Cは、後述するぼけのモデル式を解くために用いられる関係式の重みWaの切り替えを指定する信号であり、アドレス演算部743に供給される。制御信号Dは、画像の特徴を検出するとき用いられる閾値の切り替えを指定する信号であり、画像特徴検出部742に供給される。制御信号CとDについては、監視カメラシステム1の特性などを考慮して予め設定されるようにしてもよいし、制御部27を介して行われる、ユーザの指定に基づいて生成されるようにしてもよい。
次に、画像のぼけの原理について説明する。いま、カメラのピントが適正に設定され被写体がフォーカスぼけしていない画像の画素のレベルXを真値とし、カメラのピントが外れて被写体がフォーカスぼけした画像の画素のレベルYを観測値とする。画像を構成する複数の画素を表現するために、画像の水平方向の座標をxであらわし、垂直方向の座標をyで表すと、真値は、X(x,y)で表され、観測値は、Y(x,y)で表すことができる。
本発明では、ぼけのモデル式として、式(6)を適用する。式(6)においては、式(7)に示されるガウス関数を用い、真値X(x,y)にガウス関数を畳み込むことにより観測値Y(x,y)が得られる。
式(6)において、パラメータσは、ぼけの度合いを表すパラメータである。
式(6)によれば、1つの観測値Y(x,y)は、変数iとj(−r<i<r,−r<j<r)により変化する複数の真値X(x+i,y+j)を係数Wで重みづけすることにより求められる。従って、ぼけのない画像の1つの画素のレベルは、ぼけた画像の複数の画素のレベルに基づいて得られたものとされる。
また、上述したパラメータσの値により画像のぼけの度合いが変化する。パラメータσの値が比較的小さい場合、真値の情報が観測値において広範囲に拡散されておらず、比較的ぼけの小さい画像となる。これに対して、パラメータσの値が比較的大きい場合、真値の情報が観測値において広範囲に拡散され、比較的ぼけの大きい画像となる。
このように、パラメータσの値の変化により、画像のぼけの度合いは変化する。このため、画像のぼけを正確に修正するためには、パラメータσの値を適切に求める必要がある。本発明においては、パラメータσの値をユーザが指定する。あるいは、監視カメラシステム1の特性などが考慮され、最適な値が予め設定されるようにしてもよい。
図58乃至図61を参照して、画像のぼけの原理についてさらに詳しく説明する。図58Aは、簡単のため、画素が水平方向に一次元に配列されたものとして、ある画像における、真値X0乃至X8を表す図である。図58Cは、図58Aに対応する観測値を表す図である。図58Bは、係数W(i)の大きさを棒グラフ状に表した図である。この例では、変数iが、−2<i<2とされ、中央の棒グラフが、係数W(0)とされ、左端の棒グラフから順番に係数W(-2),W(-1),W(0),W(1),W(2)とされる。
ここで、式(6)に基づいて、図58Cの観測値Y2を求めると、次のようになる。
Y2=W(-2)X2+W(-1)X3+W(0)X4+W(1)X5+W(2)X6
同様にして、図58Cの観測値Y0を求める場合、真値の中で、図59の枠790−1で示される部分に基づいて、演算を行うことにより、次のように観測値Y0が求められる。
Y0=W(-2)X0+W(-1)X1+W(0)X2+W(1)X3+W(2)X4
さらに、観測値Y1を求める場合、図59の枠790−2で示される部分に基づいて、演算を行うことにより、次のように観測値Y1が求められる。
Y1=W(-2)X1+W(-1)X2+W(0)X3+W(1)X4+W(2)X5
Y3、Y4についても、同様にして求めることができる。
図60と図61は、図58Aと図58Cの関係を2次元で表したものである。すなわち、図60を構成する各画素のレベルは、観測値であり、図61を構成する各画素のレベルを真値として、得られたものである。この場合、図60における画素Aに対応する観測値Y(x,y)は次のようにして求められる。
(Y (x, y) = W(-2,-2)X(x-2, y-2) +W(-1,-2)X(x-1, y-2) +W(0,.2)X(x, y-2). . . +W(2, 2)X(x+2, y+ 2)
すなわち、図60の画素Aに対応する観測値は、図61において画素A'(画素Aに対応する)を中心として枠aで示される25(=5×5)個の画素に対応する真値に基づいて求められる。同様に、図60の画素B(画素Aの図中右隣の画素)に対応する観測値は、図61において、画素B'(画素Bに対応する)を中心とした25個の画素に対応する真値に基づいて求められ、図60の画素Cに対応する観測値は、図61において、画素C'(画素Cに対応する)を中心とした25個の画素に対応する真値に基づいて求められる。図60の画素BとCに対応する観測値Y(x+1,y)とY(x+2,y)を求める式を次に示す。
Y(x+1, y) = W(-2,-2)X(x-1, y-2) +W(-1,-2)X(x,y-2) +W(0,-2)X(x-1,y-2). . . +W(2,2)X(x+3,y+2)
Y(x+2,y) = W(-2,-2)X(x,y-2) +W(-1,-2)X(x+1,y-2) +W(0,-2)X(x+2,y-2). . . +W(2,2)X(x+4,y+2)
このようにして、図60の各画素に対応する観測値をもとめていくと、式(8)乃至(11)に示されるような行列式が得られる。
ここで、式(11)に示した行列式において、行列Wfの逆行列を求めることができれば、観測値Yfに基づいて真値Xfを求めることができる。すなわち、ぼけた画像の画素に基づいて、ぼけのない画像の画素を得ることができ、ぼけた画像を修正することができる。
しかし、式(8)乃至式(11)に示した行列式は、図58乃至図61を参照して上述したように、観測値の画素に対して、真値の画素が多く、このままでは逆行列を求めることができない(例えば、図59の例では、観測値の画素1個に対して真値の画素5個が必要となる。)。
そこで、式(8)乃至式(11)に加えて、式(12)乃至式(15)に示される関係式を導入する。
式(12)乃至式(15)は、隣接する画素のレベルの差分について限定を加えるものであり、求めるべき真値が、画像の平坦な(隣接する画素のレベルと大きな差がない)部分である場合には矛盾がない。しかし、求めるべき真値がエッジ部分である(隣接する画素のレベルと大きな差がある)場合には矛盾が生じ、修正した画像に劣化が生じる恐れがある。このため、ぼけた画像を適正に修正するためには、式(12)乃至式(15)の4つの関係式を、真値のエッジ部分をまたがないように画素ごとに使い分ける必要がある。
そこで、画像特徴検出部742において、入力画像の中のエッジ部分と平坦部分の判定を行い、どの方向(例えば、上下左右)に平坦になっているかを表すコードp2を生成する。なお、画像特徴検出部742の詳細な動作については、図66を参照して後述する。また、本発明では、入力画像(観測値)の中のエッジ部分と平坦部分の判定結果が、真値の中でのエッジ部分と平坦部分の判定結果に等しいと仮定する。
式(12)乃至式(15)において、コードp2の関数である関数W1乃至W4は、重み関数とされる。本発明においては、コードp2に応じてこの重み関数W1乃至W4が制御されることで,画素ごとの関係式の使い分けが行われるようにする。図62にコードp2に対応する重み関数W1乃至W4の値を示す。この重み関数の値が大きい場合、式(12)乃至式(15)において平坦であるという意味合いが強くなり、重み関数の値が小さい場合、その意味合いが弱くなる(エッジである意味合いが強くなる)。
コードp2は、4ビットにより構成されており、それぞれのビットは、左から順番に、上、右、下または左方向に平坦か否かを示しており、その方向に平坦である場合には、対応するビットが「1」に設定される。例えば、コードp2が「0001」の場合、注目画素の左方向に平坦であり、それ以外の方向は平坦ではない(エッジが存在する)ことを表す。このため、コードp2が「0001」の場合、重み関数W4の値が大きくなり、式(12)乃至式(15)の4つの関係式の中で式(15)の重みが大きくなる。このようにすることで、コードp2により、4つの関係式の重みを変化させることができ、4つの関係式を、エッジをまたがないように画素ごとに使い分けることができる。
例えば、図63に示されるように、注目画素Xaの上方向と左方向が平坦であり、右方向と下方向がエッジである場合、コードp2により、式(12)乃至式(15)の4つの関係式の重みを変化させることにより、隣接する画素のレベルの差分について、「Xa−Xb=0」、「Xa―Xc=0」という限定が加えられるが、「Xa−Xd=0」、「Xa―Xe=0」という限定は加えられない。なお、Xb,Xc,Xd,Xeは、それぞれ注目画素Xaの右、下、上、または左に隣接する画素を表す。
また、式(12)乃至式(15)において、関数Waは、別の重み関数であり、やはりコードp1により重み関数Waの値が変化する。重み関数Waの値を変化させることで、修正された画像の全体のノイズ、ディテールを制御することができる。重み関数Waの値が大きいと、修正された画像においてノイズの影響が小さく感じられ、ノイズ感が減少する。また、重み関数Waの値が小さいと、修正された画像においてディテールが強調されたように感じられ、ディテール感が向上する。なお、重み関数Waの値を変化させるコードp1は、図57の制御信号Cに対応している。
このように、式(8)乃至式(11)に加えて、式(12)乃至式(15)に示される関係式を導入する。これにより、式(16)に示されるような逆行列を演算することが可能になり、その結果、観測値に基づいて真値を求めることができる。
本発明では、観測値Ysにかかる係数Ws-1が係数ROM744に予め保持され、領域抽出部745により抽出された入力画像に対して、式(16)の行列式の演算(積和演算)が積和演算部746により行われる。このようにすることで、画像の修正を行う都度、逆行列演算を行う必要がなく、積和演算だけでぼけを修正することが可能になる。ただし、入力画像に応じて、パラメータσや、上述した4つの関係式が異なるため、想定しうるそれらの全ての組み合わせでの逆行列演算を予め行っておき、パラメータσ、コードp2などに対応するアドレスを定めて、そのアドレス毎に異なる係数が係数ROM744に格納される。
しかし、例えば、図61に示される枠(t)内の25(=5×5)個のすべてに画素において、重み関数W1乃至W4の組み合わせを変化させ、4つの関係式を切り替えた場合、15(=図62に示した関数W1乃至W4の組み合わせ)の25(枠(t)内の画素数)乗の組み合わせが存在し、それぞれの組み合わせごとに逆行列演算を行うと、係数の数が膨大になり、係数ROM744の容量には制限があるため、全ての係数を格納しきれなくなるおそれがある。このような場合、枠(t)内の中心画素であるXtのみ、その特徴に基づいて、コードp2を変化させて関係式を切り替え、枠(t)内の画素Xt以外画素の関係式については、例えばコードp2が擬似的に、「1111」に固定されるようにしてもよい。このようにすることで、係数の組み合わせを15通りに限定することができる。
なお以上においては、ぼけの原理(モデル式)を説明するために、ガウス関数の定義域を、-2≦(x,y)≦2 としたが、実際には、パラメータσの値が十分大きくても対応できるような範囲が設定される。また、式(12)乃至式(15)に示した関係式についても,画像の特徴を記述する式であれば,これに限定されるものではない。さらに、係数ROM744の容量に制限がある場合の例として、ぼけの中心位相(Xt)のみに限定して関係式を切り替える例を説明したが、それに限定されるものではなく、係数ROM744の容量に応じて、関係式の切り替え方法を変えてもよい。
次に図64を参照して、画像補正部22によるぼけ修正処理について説明する。ステップS801において、画像補正部22は、処理対象領域を検出する。この処理対象領域は、ぼけの修正を行うべき領域、すなわち補正対象エリア52であり、エリア設定部25から出力される信号に基づいて検出される。
ステップS802において、画像補正部22は、パラメータσの値を取得する。パラメータσは、ユーザにより指定されるようにしてもよいし、予め設定された値が取得されるようにしてもよい。ステップS803において、画像補正部22は、図65を参照して後述する画像補正処理を実行する。これにより、ぼけた画像が修正され、出力される。
このようにして、補正対象エリア52内の画像については、画像のぼけが除去されて鮮明な画像となる。
次に、図65を参照して、図64のステップS803の画像補正処理の詳細について説明する。
ステップS821において、画像特徴検出部742は、図66を参照して後述する画像特徴検出処理を実行する。これにより、注目画素に対して、どの方向に平坦なのかが判定され、図62を参照して上述したコードp2が生成され、アドレス演算部743に出力される。
ステップS822において、アドレス演算部743は、係数ROM744のアドレスを演算する。係数ROM744のアドレスは、例えば、コードp2に対応する4ビット(画像特徴検出部742の出力)、パラメータσの値を表す4ビット(図57の制御信号B)、および、上述した4つの関係式の重み関数Waを切り替えるコードp1に対応する2ビット(図57の制御信号C)により構成され、0乃至1023の1024(2の10乗)個アドレスが存在する。アドレス演算部743は、画像特徴検出部742の出力、制御信号B、および制御信号Cに基づいて、対応するアドレスを演算する。
ステップS823において、アドレス演算部743は、ステップS822で演算したアドレスに基づいて、係数ROM744から係数を読み出し、積和演算部746に供給する。
ステップS824において、積和演算部746は、ステップS823で読み出された係数に基づいて、画素毎に積和演算を行い、その結果を後処理部747に出力する。これにより、上述したように、観測値から真値が求められ、ぼけた画像が修正される。
ステップS825において、画像合成部747は、図69を参照して後述する画像合成処理を実行する。これにより、画素毎に、積和演算部746の処理結果を出力するか、入力画像をそのまま出力するかが判定される。ステップS826において、後処理部747は、補正後処理され、選択された画像を出力する。
次に図66を参照して、図65のステップS821の画像特徴検出処理について説明する。ステップS841において、画像特徴検出部742は、ブロックを抽出し、ステップS842において、ステップS841で抽出されたブロック間の差分を演算する(その詳細は、図68を参照して後述する)。ステップS843において、画像特徴検出部742は、ステップS842で演算されたブロック差分を予め設定されている閾値と比較し、その比較結果に基づいて、ステップS844において、注目画素に対して平坦な方向を表すコードであるコードp2を出力する。
図67と図68を参照して、画像特徴検出処理について、さらに詳しく説明する。図67は、画像特徴検出部742の詳細な構成例を示すブロック図である。同図の左側には、入力された画像の中から所定のブロックを抽出するブロック切り出し部841−1乃至841−5が設けられている。ブロック切り出し部841−1乃至841−5は、例えば、図68A乃至図68Eに示されるように、図中黒い丸で示される注目画素(いま修正すべき画素)の周辺の、注目画素を含む9(=3×3)個の画素で構成される5つのブロックを抽出する。
図68Aに示されるブロック881は、その中心に注目画素を有する中心ブロックであり、ブロック切り出し部841−5により抽出される。図68Bに示されるブロック882は、ブロック881を画素1個分図中上に移動した上側ブロックであり、ブロック切り出し部841−3により抽出される。図68Cに示されるブロック883は、ブロック881を画素1個分図中左に移動した左側ブロックであり、ブロック切り出し部841−4により抽出される。
図68Dに示されるブロック884は、ブロック881を画素1個分図中下に移動した下側ブロックであり、ブロック切り出し部841−1により抽出される。図68Eに示されるブロック885は、ブロック881を画素1個分図中右に移動した右側ブロックであり、ブロック切り出し部841−2により抽出される。ステップS841においては、注目画素毎に、ブロック881乃至885の5つのブロックが抽出される。
ブロック切り出し部841−1乃至841−5により抽出された各ブロックを構成する画素の情報は、ブロック差分演算部842−1乃至842−4に出力される。ブロック差分演算部842−1乃至842−4は、各ブロックの画素の差分を、例えば、次のようにして演算する。
いま、ブロック881の9個の画素のうち一番上の行の3個の画素(のレベル)を左からa(881),b(881),c(881)とする。中央の行の3個の画素を左からd(881),e(881),f(881)とする。一番下の行の3個の画素を左からg(881),h(881),i(881)とする。同様に、ブロック884の9個の画素についても、一番上の行の3個の画素(のレベル)を左からa(884),b(884),c(884)とし、中央の行の3個の画素を左からd(884),e(884),f(884)とし、一番上の行の3個の画素を左からg(884),h(884),i(884)とする。ブロック差分演算部842−1は、ブロック差分B(1)を次のように演算する。
B(1)=│a(881)-a(884)│+│b(881)-b(884)│+│c(881)-c(884)│+・・・ +│i(881)-i(884)│
すなわち、ブロック差分B(1)は、ブロック881(中心)とブロック884(下)において対応する各画素のレベルの差分の絶対値の総和である。同様にして、ブロック差分演算部842−2は、ブロック881(中心)とブロック885(右)において対応する各画素のレベルの差分の絶対値の総和を求め、ブロック差分B(2)を演算する。さらに、ブロック差分演算部842−3は、ブロック881(中心)とブロック882(上)について、ブロック差分演算部842−3は、ブロック881(中心)とブロック883(左)について、それぞれ対応する各画素のレベルの差分の絶対値の総和を求め、ブロック差分B(3)とB(4)を演算する。
ステップS842においては、このように中心ブロックと上下左右の4方向のブロックとの差分であるブロック差分B(1)乃至B(4)が演算され、その結果は、対応する閾値判定部843−1乃至843−4にそれぞれ出力されると同時に、最小方向判定部844にも供給される。
閾値判定部843−1乃至843−4は、それぞれブロック差分B(1)乃至B(4)を予め設定された閾値と比較し、その大小を判定する。なお、この閾値は制御信号Dに基づいて切り替えられる。閾値判定部843−1乃至843−4は、それぞれブロック差分B(1)乃至B(4)が予め設定された閾値より大きい場合、その方向はエッジ部分であると判定し、「0」を出力し、閾値より小さい場合、その方向は平坦な部分であると判定し、「1」を出力する。
ステップS843おいては、このようにしてブロック差分と閾値の比較が行われる。閾値判定部843−1乃至843−4の出力結果は、4ビットのコードとしてセレクタ845に出力される。例えば、ブロック差分B(1)、B(3)およびB(4)が閾値より小さく、ブロック差分B(2)が閾値より大きい場合、コードとして「1011」が出力される。
ところで、ブロック差分B(1)乃至B(4)が、全て閾値より大きくなってしまう場合(平坦な部分がない場合)も考えられる。この場合、閾値判定部843−1乃至843−4から、コードとして「0000」が出力される。しかし、図62に示されるように、コードp2が「0000」の場合、対応する重み関数W1乃至W4が特定できない。そこで、セレクタ845は、閾値判定部843−1乃至843−4からの出力結果が「0000」か否かを判定し、閾値判定部843−1乃至843−4からの出力結果が「0000」であると判定された場合、最小方向判定部844からの出力をコードp2として出力する。
最小方向判定部844は、ブロック差分B(1)乃至B(4)の中で、最小の値を判定し、判定結果に対応した4ビットのコードを、閾値判定部843−1乃至843−4がコードを出力するのと同じタイミングで、セレクタ845に出力する。例えば、ブロック差分B(1)乃至B(4)の中で、B(1)が最小であると判定された場合、最小方向判定部844は、コードとして「1000」をセレクタ845に出力する。
このようにすることで、閾値判定部843−1乃至843−4からコード「0000」が出力されても、最小方向判定部844から出力されたコード「1000」がコードp2として出力されるようにすることができる。勿論、閾値判定部843−1乃至843−4からの出力結果が「0000」ではない場合は、閾値判定部843−1乃至843−4からの出力結果がコードp2として出力される。ステップS844においては、このようにしてコードp2が生成され、アドレス演算部743に出力される。
次に、図69を参照して、図65のステップS825の画像合成処理について説明する。ステップS861において、画像合成部747は、積和演算部746からの出力結果に基づいて、画素の分散度を演算する。これにより、注目画素の周囲の画素の分散度合いが演算される。ステップS862において、画像合成部747は、ステップS862で演算された分散度は予め設定された閾値より大きいか否かを判定する。
ステップS862において、分散度が閾値より大きいと判定された場合、画像合成部747は、ステップS863において、注目画素に対応する入力画像入れ替えフラグをONに設定する。一方、分散度が閾値より大きくないと判定された場合、画像合成部747は、ステップS64において、注目画素に対応する入力画像入れ替えフラグをOFFに設定する。
入力画像において、もともとぼけていない部分の画素に対して、積和演算部746により積和演算を行うと、その画素の周囲の画像のアクティビティが大きくなり、かえって画像が劣化してしまう場合がある。ここで、分散度が閾値より大きい場合、その画素は劣化した画素であると判定され、入力画像入れ替えフラグがONに設定される。入力画像入れ替えフラグがONに設定された画素は、出力されるとき、入力画像の画素と入れ替えられて(元の状態に戻されて)出力される。
ステップS865において、画像合成部747は、全ての画素についてチェックしたか否かを判定し、まだ全画素をチェックしていないと判定された場合、ステップS861に戻り、それ以降の処理が繰り返し実行される。ステップS865において、全ての画素についてチェックしたと判定された場合、ステップS866において、画像合成部747は、画像が補正され、ぼけが除去された補正対象エリア52内の画像と、背景53の画像を合成し、画像ディスプレイ23に出力する。
このようにして、画素毎に、積和演算結果を出力するか、または入力画像の画素をそのまま出力するかが判定される。このようにすることで、入力画像の中で、もともとぼけていない部分に対して、画像の修正を行うことにより、かえって画像が劣化してしまうことを防止することができる。
この点について、図70と図71を参照して、さらに詳しく説明する。図70は、画像合成部747の構成例を示すブロック図である。積和演算部746からの出力結果が、ブロック切り出し部901に入力され、ブロック切り出し部901は、図71に示されるように、注目画素a5を中心とした9(=3×3)個の画素a1乃至a9を切り出し、分散演算部802に出力する。分散演算部802は、分散度を次のようにして演算する。
ここで、mは、ブロック内の9個の画素(のレベル)の平均値を表し、vは、それぞれの画素の平均値との差の2乗の総和であり、ブロック内の画素の分散度を表す。ステップS861においては、このようにして分散度が演算され、演算結果が閾値判定部903に出力される。
閾値判定部903は、分散演算部902からの出力結果(分散度)と予め設定された閾値を比較し、分散度が閾値より大きいと判定された場合、画像合成部747は、注目画素に対応する入力画像入れ替えフラグをONに設定するように選択部904を制御する。分散度が閾値より大きくないと判定された場合、画像合成部747は、注目画素に対応する入力画像入れ替えフラグをOFFに設定するように選択部804を制御する。ステップS862乃至S864においては、このように、分散度が閾値より大きいか否かが判定され、判定結果に基づいて、入力画像入れ替えフラグが設定される。
そして、切り替え部905により、選択部904による最終処理結果と、入力画像の画素が切り替えられ、出力される。すなわち補正対象エリア52内の画像の画素は、選択部904による最終処理結果とされ、背景53の画像の画素は、入力画像の画素となるように切り替えられる。
このようにして、オブジェクト51(図3)が追尾され、オブジェクト51が含まれる補正対象エリア52内の画像のみが、画像のぼけが除去されるように修正(補正)され鮮明に表示される。一方、背景53の画像は、画像のぼけが除去されずに表示されるので、自然に、ユーザを、移動するオブジェクト51に注目させることができる。
以上においては、画像補正部22により、撮像部21により撮像された画像の中の補正対象エリア52内の画像について、画像のぼけが除去されるように、補正される例について説明したが、画像補正部22により、画像のぼけが除去されることなく、補正対象エリア52内の画像について、例えば、画像を構成する各画素の輝度や色などの設定が変更され、単純にハイライト表示されるように、画像が補正されるようにしてもよい。このようにすることで、ユーザがオブジェクト51を正確に視認することができなくなるおそれはあるものの、やはり、自然に、ユーザを、移動するオブジェクト51に注目させることができ、また、画像のぼけが除去されるように補正される場合と比較して、画像補正部22を、より簡単な構成とすることができ、その結果、監視カメラシステム1を、より低コストで実現することができる。
次に、上述したオブジェクト追尾装置を応用した画像処理装置についてさらに説明を加える。図72は、オブジェクト追尾装置をテレビジョン受像機1000に応用した場合の例を表している。チューナ1001は、RF信号を入力し、復調して画像信号と音声信号とに分離し、画像信号を画像処理部1002に出力し、音声信号を音声処理部1007に出力する。
画像処理部1002は、チューナ1001より入力された画像信号を復調し、オブジェクト追尾部1003、ズーム画像作成部1004、および選択部1005に出力する。オブジェクト追尾部1003は、上述した図5のオブジェクト追尾装置26と実質的に同様の構成とされている。オブジェクト追尾部1003は、入力画像からユーザにより指定されたオブジェクトの追尾点を追尾する処理を実行し、その追尾点に関する座標情報をズーム画像作成部1004に出力する。ズーム画像作成部1004は、追尾点を中心とするズーム画像を作成し、選択部1005に出力する。選択部1005は、画像処理部1002より供給された画像またはズーム画像作成部1004より供給された画像の一方をユーザからの指示に基づいて選択し、画像ディスプレイ1006に出力し、表示させる。
音声処理部1007は、チューナ1001より入力された音声信号を復調し、スピーカ1008に出力する。
リモートコントローラ1010は、ユーザにより操作され、その操作に対応する信号を制御部1009に出力する。制御部1009は、例えばマイクロコンピュータなどにより構成され、ユーザの指示に基づいて各部を制御する。リムーバブルメディア1011は、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどにより構成され、必要に応じて装着され、制御部1009に、プログラム、その他各種のデータを提供する。
次に、テレビジョン受像機1000の処理について、図73のフローチャートを参照して説明する。
ステップS901において、チューナ1001は、図示せぬアンテナを介して受信したRF信号から、ユーザにより指示されたチャンネルの信号を復調して、画像信号を画像処理部1002に出力し、音声信号を音声処理部1007に出力する。音声信号は、音声処理部1007で復調された後、スピーカ1008から出力される。
画像処理部1002は、入力された画像信号を復調し、オブジェクト追尾部1003、ズーム画像作成部1004、および選択部1005に出力する。
ステップS902において、オブジェクト追尾部1003は、追尾が指示されたか否かを判定し、追尾が指示されていないと判定された場合、ステップS903,S904の処理をスキップする。ステップS905において、選択部1005は、画像処理部1002より供給される画像信号と、ズーム画像作成部1004より入力される画像信号のいずれか一方を制御部1009からの制御に基づいて選択する。いまの場合、ユーザから特に指示がなされていないので、制御部1009は、選択部1005に画像処理部1002からの画像信号を選択させる。ステップS906において画像ディスプレイ1006は、選択部1005により選択された画像を表示する。
ステップS907において、制御部1009は、ユーザの指示に基づいて画像表示処理を終了するか否かを判定する。すなわちユーザは、画像表示処理を終了するとき、リモートコントローラ1010を操作して、制御部1009にそれを指示する。ユーザから終了が指示されていない場合、処理はステップS901に戻り、それ以降の処理が繰り返し実行される。
以上のようにして、チューナ1001により受信された信号に対応する画像をそのまま表示する通常の処理が実行される。
ユーザは、画像ディスプレイ1006に表示されている画像を見て追尾したいと思う画像が表示されたとき、リモートコントローラ1010を操作することで、その画像を指定する。この操作がなされたとき、ステップS902において制御部1009は、追尾が指示されたと判定し、オブジェクト追尾部1003を制御する。オブジェクト追尾部1003は、この制御に基づいて、ユーザにより指定された追尾点の追尾処理を開始する。この処理は、上述したオブジェクト追尾装置26の処理と同様の処理である。
ステップS904において、ズーム画像作成部1004は、オブジェクト追尾部1003により追尾されている追尾点を中心とするズーム画像を生成し、選択部1005に出力する。
このズーム画像作成処理は、本出願人が先に提案しているクラス分類適応処理を利用して行うことができる。例えば、特開2002−196737公報には、予め学習して得た係数を用いて、525i信号を1080i信号に変換する処理が開示されている。この処理は、垂直方向と水平方向の両方に9/4倍に画像を拡大する処理と実質的に同様の処理である。ただし、画像ディスプレイ1006は、画素数が一定であるため、ズーム画像作成部1004は、例えば9/4倍の画像を作成する場合、525i信号を1080i信号に変換した後、追尾点を中心とする所定の数の画素(画像ディスプレイ1006に対応する数の画素)を選択することでズーム画像を作成することができる。縮小する処理は、その逆の処理となる。
この原理に基づいて、任意の倍率のズーム画像を生成することができる。
追尾が指示されている場合、ステップS905において選択部1005は、ズーム画像作成部1004により作成されたズーム画像を選択する。その結果、ステップS906において、画像ディスプレイ1006は、ズーム画像作成部1004により作成されたズーム画像を表示することになる。
以上のようにして、画像ディスプレイ1006には、ユーザが指定した追尾点を中心とするズーム画像が表示される。倍率が1に設定された場合には、追尾だけが行われる。
図74は、本発明を監視カメラシステムに適用した場合の例を表している。この監視カメラシステム1100においては、CCDビデオカメラ等よりなる撮像部1101により撮像された画像が画像ディスプレイ1102に表示される。追尾対象検出部1103は、撮像部1101より入力された画像から追尾対象を検出し、検出結果をオブジェクト追尾部1105に出力する。オブジェクト追尾部1105は、撮像部1101より供給された画像中の、追尾対象検出部1103により指定された追尾対象を追尾するように動作する。オブジェクト追尾部1105は、上述した図1のオブジェクト追尾装置26と基本的に同様の構成を有している。カメラ駆動部1104は、オブジェクト追尾部1105からの制御に基づいて、撮像部1101が追尾対象の追尾点を中心とする画像を撮影するように撮像部1101を駆動する。
制御部1106は、例えば、マイクロコンピュータなどにより構成され、各部を制御する。制御部1106には、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどにより構成されるリムーバブルメディア1107が必要に応じて接続され、プログラム、その他各種のデータが必要に応じて供給される。
次に、図75のフローチャートを参照して、監視処理の動作について説明する。監視システム1100の電源がオンされているとき、撮像部1101は監視領域を撮像し、その撮像して得られた画像を追尾対象検出部1103、オブジェクト追尾部1105、および画像ディスプレイ1102に出力している。追尾対象検出部1103は、ステップS931において、撮像部1101から入力された画像から追尾対象を検出する処理を実行する。追尾対象検出部1103は、例えば、動く物体が検出された場合、その動く物体を追尾対象として検出する。追尾対象検出部1103は、追尾対象の中から、例えば、最も輝度の高い点、あるいは追尾対象の中心の点などを追尾点として検出し、オブジェクト追尾部1105に出力する。
ステップS932において、オブジェクト追尾部1105は、ステップS931で検出された追尾点を追尾する追尾処理を実行する。この追尾処理は、上述した図5のオブジェクト追尾装置26の処理と同様の処理である。
ステップS933において、オブジェクト追尾部1105は、追尾点の画面上の位置を検出する。そして、ステップS934においてオブジェクト追尾部1105は、ステップS933の処理により検出された追尾点の位置と画像の中央との差を検出する。ステップS935において、オブジェクト追尾部1105は、ステップS934の処理で検出した差に対応するカメラ駆動信号を生成し、カメラ駆動部1104に出力する。ステップS936において、カメラ駆動部1104はカメラ駆動信号に基づいて撮像部1101を駆動する。これにより撮像部1101は、追尾点が画面の中央に位置するようにパンまたはチルトする。
ステップS937において、制御部1106は、ユーザからの指示に基づいて監視処理を終了するか否かを判定し、ユーザから終了が指示されていない場合には、ステップS931に戻り、それ以降の処理を繰り返し実行する。ユーザから監視処理の終了が指示された場合、ステップS937において終了すると判定され、制御部1106は監視処理を終了する。
以上のようにして、この監視カメラシステム1100においては、動く物体が自動的に追尾点として検出され、その追尾点を中心とする画像が画像ディスプレイ1102に表示される。これにより、より簡単かつ確実に、監視処理を行うことが可能となる。
図76は、本発明を適用した他の監視カメラシステムの構成例を表している。この監視カメラシステム1200は、撮像部1201、画像ディスプレイ1202、オブジェクト追尾部1203、カメラ駆動部1204、制御部1205、指示入力部1206、およびリムーバブルメディア1207により構成されている。
撮像部1201は、撮像部1101と同様に、CCDビデオカメラなどにより構成され、撮像した画像を画像ディスプレイ1202とオブジェクト追尾部1203に出力する。画像ディスプレイ1202は、入力された画像を表示する。オブジェクト追尾部1203は、上述した図5のオブジェクト追尾装置26と基本的に同様の構成とされている。カメラ駆動部1204は、オブジェクト追尾部1203からの制御に基づいて、撮像部1201を所定の方向にパン、チルト駆動する。
制御部1205は、例えばマイクロコンピュータなどにより構成され、各部を制御する。指示入力部1206は、各種のボタン、スイッチ、あるいはリモートコントローラなどにより構成され、ユーザからの指示に対応する信号を制御部1205に出力する。リムーバブルメディア1207は、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどにより構成され、必要に応じて接続され、制御部1205に必要なプログラムやデータなどを適宜供給する。
次に、図77のフローチャートを参照して、その動作について説明する。
ステップS961において、制御部1205は、ユーザより追尾点が指定されたか否かを判定する。追尾点が指定されていなければ、ステップS969に進み、制御部1205は、ユーザより処理の終了が指示されたか否かを判定し、終了が指示されていなければ、ステップS961に戻り、それ以降の処理を繰り返し実行する。
すなわち、この間、撮像部1201が撮像エリアを撮像して得られた画像が画像ディスプレイ1202に出力され、表示されている。この画像を見て、監視エリアを監視する処理を終了させる場合、ユーザ(監視者)は指示入力部1206を操作して終了を指令する。終了が指令されたとき、制御部1205は、監視処理を終了する。
一方、ユーザは、画像ディスプレイ1202に表示されている画像を見て、例えば不審者などが表示されたとき、その不審者の所定の点を追尾点として指定する。この指定は、指示入力部1206を操作することで行われる。ユーザが追尾点を指定したとき、ステップS961において、追尾点が指定されたと判定され、ステップS962に進み、追尾処理が実行される。以下、ステップS962乃至ステップS967において実行される処理は、図75のステップS932乃至ステップS937において行われる処理と同様の処理である。すなわち、これにより、撮像部1201が指定された追尾点が画面の中央に来るように駆動される。
ステップS967において、制御部1205は、監視の終了が指示されたか否かを判定し、指示された場合処理を終了するが、指示されていない場合には、ステップS968に進み、ユーザより追尾の解除が指示されたか否かを判定する。ユーザは、例えば、一旦追尾を指定したものが不審者でないとわかったとき、指示入力部1206を操作して、追尾の解除を指示することができる。制御部1205は、ステップS968で、追尾の解除が指示されていないと判定された場合、ステップS962に戻り、それ以降の処理を実行する。すなわち、この場合には、指定された追尾点を追尾する処理が継続される。
ステップS968において追尾の解除が指示されたと判定された場合、追尾処理は解除され、処理はステップS961に戻り、それ以降の処理が繰り返し実行される。
以上のようにして、この監視カメラシステム1200においては、ユーザが指示した追尾点の画像が画像ディスプレイ1202の中央に表示される。従って、ユーザは、所望の画像を任意に選択して、きめ細やかに監視を行うことが可能となる。
本発明は、テレビジョン受像機や監視カメラシステムに限らず、各種の画像処理装置に適応することが可能である。
なお、以上においては、画像の処理単位をフレームとしたが、フィールドを処理単位とする場合にも本発明は適用が可能である。
なお、上述した一連の処理をハードウェアで実現するか、ソフトウェアで実現するかは問わない。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、汎用のパーソナルコンピュータなどに、ネットワークやリムーバブルメディアなどの記録媒体からインストールされる。
また、本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
1 監視カメラシステム, 21 撮像部, 22 画像補正部, 24 追尾対象検出部, 25 エリア設定部, 26 オブジェクト追尾部, 51 テンプレートマッチング部, 52 動き推定部, 53 シーンチェンジ検出部, 54 背景動き推定部, 55 領域推定関連処理部, 56 乗り換え候補保持部, 57 追尾点決定部, 58 テンプレート保持部, 741 制御信号生成部, 742 画像特徴検出部, 743 アドレス演算部, 744 係数ROM, 745 領域抽出部, 746 積和演算部, 747 画像合成部