以下、実施の形態に従って本発明を詳細に説明する。
〔1〕本発明の物体領域検出装置の装置構成
図1に、本発明を具備する物体領域検出装置1の装置構成の一例を図示する。
この図に示すように、本発明の物体領域検出装置1は、映像入力部10と、映像記憶部11と、セグメント分割部12と、分割結果記憶部13と、クラスタリング部14と、分類結果記憶部15と、物体領域クラスタ選定部16と、選定結果記憶部17と、物体領域検出部18とを備える。
映像入力部10は、処理対象の映像(フレーム画像列で構成される)を入力して映像記憶部11に格納する。以下では、説明の便宜上、処理対象の映像がN枚のフレーム画像で構成されることを想定する。
セグメント分割部12は、映像記憶部11から処理対象の映像を読み込み、その読み込んだフレーム画像列の個々のフレーム画像に対して、例えば、下記の参考文献1に記載される画像セグメント分割手法を用いてセグメント分割を行って、その分割結果を分割結果記憶部13に格納する。
〔参考文献1〕Yongqing Sun, Shinji Ozawa, "HIRBIR: A Hierarchical Approach for Region-based Image Retrieval," ACM Multimedia Systems Journal, 1 0(6): 559-569 (2005)
ここで、参考文献1に記載される画像セグメント分割手法は、画像のウェーブレット変換により求めた画像の低周波成分だけを用いて、より効率の良い画像セグメント分割を実現する手法である。
分割結果記憶部13は、セグメント分割部12の得た分割結果を格納する記憶部であり、例えば、図2に示すようなデータ構造を有して、処理対象の映像を構成する各フレーム画像ごとに、そのフレーム画像にいくつのセグメントが存在するのかということと、それらのセグンメントのそれぞれについて、そのセグメントの属性情報(セグメント分割に用いられた情報)と、そのセグメントの領域情報(位置・大きさ・形状についての情報)とを管理する。
クラスタリング部14は、分割結果記憶部13から映像の持つ全てのセグメントの属性情報を読み込み、Fuzzy K-means などのクラスタリング手法を用い、それらの属性情報に基づいて、それらのセグメントをクラスタリングして、そのクラスタリング結果であるセグメントクラスタについての情報を分類結果記憶部15に格納する。
分類結果記憶部15は、クラスタリング部14の得た分類結果を格納する記憶部であり、例えば、図3に示すようなデータ構造を有して、処理対象の映像の持つセグメントがいくつのセグメントクラスタに分類されたのかということと、それらのセグメントクラスタのそれぞれについて、そのセグメントクラスタに属するセグメントの識別情報(そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号)を管理する。なお、以下では、説明の便宜上、セグメントクラスタの数がK個であることを想定する。
物体領域クラスタ選定部16は、分類結果記憶部15に格納される各セグメントクラスタがターゲット物体の領域から切り出されたセグメントのクラスタであるのか否かを判断することで、分類結果記憶部15に格納されるセグメントクラスタの中から、ターゲット物体の領域から切り出されたセグメントのクラスタ(前述した物体領域クラスタ)を選定して、その選定結果を選定結果記憶部17に格納する。
選定結果記憶部17は、物体領域クラスタ選定部16の得た選定結果を格納する記憶部であり、例えば、図4に示すようなデータ構造を有して、いくつの物体領域クラスタが選定されたのかということと、それらの物体領域クラスタのそれぞれについて、その物体領域クラスタに属するセグメントの識別情報(そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号)を管理する。なお、以下では、説明の便宜上、物体領域クラスタの数がL個であることを想定する。
物体領域検出部18は、選定結果記憶部17に格納される物体領域クラスタの情報と、映像記憶部11に格納されるフレーム画像列と、分類結果記憶部13に格納されるセグメントの情報とに基づいて、物体領域クラスタにあるセグメントをフレーム画像に対応付けることで各フレーム画像におけるターゲット物体の領域を検出して、その結果結果を出力する。
〔2〕本発明の物体領域検出装置1の実行する基本処理
図5に、このように構成される本発明の物体領域検出装置1の実行する基本処理についてのフローチャートの一例を図示する。
次に、このフローチャートに従って、本発明の物体領域検出装置1の実行する基本処理について説明する。
本発明の物体領域検出装置1は、処理対象の映像を指定してターゲット物体領域の検出要求があると、図5のフローチャートに示すように、まず最初に、ステップS100で、処理対象の映像(N枚のフレーム画像列で構成されるものとする)を読み込んで、映像記憶部11に格納する。
続いて、ステップS101で、処理対象の映像の全フレーム画像についてセグメント分割処理を終了したのか否かを判断して、全フレーム画像についてセグメント分割処理を終了していないことを判断するときには、ステップS102に進んで、映像記憶部11から、先頭からの順番に従って未処理のフレーム画像を1枚読み込む。
続いて、ステップS103で、読み込んだフレーム画像に対して、公知の画像セグメント分割手法を用いてセグメント分割を行い、その分割結果を分割結果記憶部13に格納してから、ステップS101の処理に戻る。例えば、前述の参考文献1に記載される画像セグメント分割手法を用いてセグメント分割を行い、その分割結果を分割結果記憶部13に格納して、ステップS101の処理に戻るのである。
このようにして、ステップS101〜ステップS103の処理を繰り返すことで、ステップS101で、全フレーム画像についてセグメント分割の処理を終了したことを判断すると、ステップS104に進んで、分割結果記憶部13から、映像の持つ全てのセグメントの属性情報を読み込む。
続いて、ステップS105で、Fuzzy K-means などのクラスタリング手法を用い、読み込んだセグメントの属性情報に基づいて、それらのセグメントをクラスタリングして、そのクラスタリング結果であるセグメントクラスタの情報を分類結果記憶部15に格納する。
続いて、ステップS106で、分類結果記憶部15に格納されるセグメントクラスタの情報に基づいて、それらのセグメントクラスタの中から物体領域クラスタ(ターゲット物体の領域から切り出されたセグメントが属するセグメントクラスタ)を選定して、その選定結果を選定結果記憶部17に格納する。なお、この物体領域クラスタの選定処理については後述する。
続いて、ステップS107で、フレーム画像の番号を示す変数nに初期値“1”をセットする。
続いて、ステップS108で、n番目のフレーム画像のセグメントと物体領域クラスタとを対応付けることで、n番目のフレーム画像におけるターゲット物体の領域を検出する。
すなわち、図4に示すように、選定結果記憶部17には、物体領域クラスタに属するセグメントの識別情報(そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号)が管理されており、一方、図2に示すように、分割結果記憶部13には、そのセグメント識別情報に対応付けて、そのセグメントの領域情報が管理されているので、これらの情報を結び付けることで、n番目のフレーム画像におけるターゲット物体の領域を検出するのである。
続いて、ステップS109で、変数nの値が最大値であるN(フレーム画像の枚数)に到達したのか否かを判断して、変数nの値がNに到達していないことを判断するときには、ステップS110に進んで、変数nの値を1つインクリメントしてから、ステップS108の処理に戻る。
このようにして、ステップS108〜ステップS110の処理を繰り返すことで、映像の各フレーム画像についてターゲット物体領域を検出する処理を行う。
そして、ステップS109で、変数nの値がNに到達したことを判断することで、映像の全フレーム画像についてターゲット物体領域の検出処理を終了したことを判断すると、処理を終了する。
このようにして、本発明の物体領域検出装置1は、従来技術の必要とするターゲット物体に関しての設定処理や照合処理や追跡処理や背景差分処理を用いることなく、映像のフレーム画像列からターゲット物体の領域を検出するように処理するのである。
〔3〕物体領域クラスタの選定処理
次に、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理について説明する。
〔3−1〕物体領域クラスタの選定処理の一例
図6に、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理についてのフローチャートの一例を示す。
ここで、図6のフローチャートでは、ユーザとの対話処理に従って、分類結果記憶部15に格納されるセグメントクラスタの中から物体領域クラスタを選定するようにしている。
次に、図6のフローチャートに従って、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理の一例について説明する。
本発明の物体領域検出装置1は、図6のフローチャートに従って物体領域クラスタを選定する場合には、図5のフローチャートのステップS106の処理に入ると、図6のフローチャートに示すように、まず最初に、ステップS200で、セグメントクラスタの番号を示す変数iに初期値“1”をセットする。
続いて、ステップS201で、図3に示すようなデータ構造を持つ分類結果記憶部15を参照することで、i番目のセグメントクラスタに属する各セグメントについて、セグメント識別情報(そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号)を取得する。
続いて、ステップS202で、ステップS201で取得したセグメント識別情報をキーにして図2に示すようなデータ構造を持つ分割結果記憶部13を参照することで、i番目のセグメントクラスタに属する各セグメントについて、そのセグメントの領域情報(セグメントの位置・大きさ・形状についての情報)を取得する。
ステップS201で取得したセグメント識別情報の持つフレーム画像番号と、ステップS202で取得したセグメント領域情報とで、処理対象の映像からセグメントの画像部分を抽出することができる。
これから、続いて、ステップS203で、映像記憶部11を参照することで、i番目のセグメントクラスタに属する各セグメントについて、ステップS201で取得したセグメント識別情報の持つフレーム画像番号およびステップS202で取得したセグメント領域情報の指す画像部分を抽出する。
続いて、ステップS204で、変数iの値が最大値であるK(セグメントクラスタの数)に到達したのか否かを判断して、変数iの値がKに到達していないことを判断するときには、ステップS205に進んで、変数iの値を1つインクリメントしてから、ステップS201の処理に戻る。
このようにして、ステップS201〜ステップS205の処理を繰り返すことで、セグメントクラスタごとに、そのセグメントクラスタに属するセグメントについての画像部分(以下、セグメント画像と称する)を抽出する処理を行う。
そして、ステップS204で、変数iの値がKに到達したことを判断することで、全てのセグメントについてセグメント画像の抽出処理を終了したことを判断すると、ステップS206に進んで、抽出したセグメント画像をセグメントクラスタ別に一覧表示する。
このセグメント画像の一覧表示を受けて、ユーザは、どのセグメントクラスタを物体領域クラスタとして選定するのかを入力してくる。
これから、続いて、ステップS207で、その一覧表示に応答してユーザから入力されてくる、どのセグメントクラスタを物体領域クラスタとするのかについての選定情報を受け取る。
続いて、ステップS208で、ユーザからの選定情報に従って、セグメントクラスタの中から物体領域クラスタを選定して、その選定結果を図4に示すようなデータ構造を持つ選定結果記憶部17に格納して、処理を終了する。
このようにして、本発明の物体領域検出装置1は、図6のフローチャートに従ってセグメントクラスタの中から物体領域クラスタを選定する場合には、ユーザとの対話処理に従って、物体領域クラスタを選定するように処理するのである。
例えば、図7(a)に示すようなターゲット物体を検出対象とする場合にあって、図7(b)に示すような映像を入力する場合には、図7(c)に示すように、そのセグメントクラスタに属するセグメントについての画像部分をセグメントクラスタ別に一覧を表示するようにして、その一覧表示に応答してユーザから入力されてくる選定情報に従って、物体領域クラスタを選定するように処理する。
ここで、図7では、N枚のフレーム画像において3種類のセグメントの出現頻度が高いことで、3つのセグメントクラスタ1〜3がクラスタリングされたことを想定しており、それらのセグメントクラスタ1〜3の中から、ユーザの指示に従って、セグメントクラスタ1とセグメントクラスタ2という2つのセグメントクラスタを物体領域クラスタとして選定するということを想定している。
〔3−2〕物体領域クラスタ選定処理の他の一例
図8に、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理についてのフローチャートの他の一例を示す。
ここで、図8のフローチャートでは、ユーザとの対話に依らない自動処理に従って、分類結果記憶部15に格納されるセグメントクラスタの中から物体領域クラスタを選定するようにしている。
次に、図8のフローチャートに従って、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理の一例について説明する。
本発明の物体領域検出装置1は、図8のフローチャートに従って物体領域クラスタを選定する場合には、図5のフローチャートのステップS106の処理に入ると、図8のフローチャートに示すように、まず最初に、ステップS300で、セグメントクラスタの番号を示す変数iに初期値“1”をセットする。
続いて、ステップS301で、図3に示すようなデータ構造を持つ分類結果記憶部15を参照することで、i番目のセグメントクラスタについて、そのセグメントクラスタに属するセグメントの数を取得する。
続いて、ステップS302で、i番目のセグメントクラスタについて、取得したセグメントの数が所定の閾値よりも大きいのか否かを判断する。
続いて、ステップS303で、ステップS302の判断処理に従って、i番目のセグメントクラスタについて、取得したセグメントの数が所定の閾値よりも大きいという判断結果が得られたのかを判断して、所定の閾値よりも大きいという判断結果が得られた場合には、ステップS304に進んで、i番目のセグメントクラスタを物体領域クラスタとして選定して、その選定結果を選定結果記憶部17に格納し、一方、所定の閾値よりも大きいという判断結果が得られない場合には、この処理を省略する。
続いて、ステップS305で、変数iの値が最大値であるK(セグメントクラスタの数)に到達したのか否かを判断して、変数iの値がKに到達していないことを判断するときには、ステップS306に進んで、変数iの値を1つインクリメントしてから、ステップS301の処理に戻る。
そして、ステップS305で、変数iの値がKに到達したことを判断することで、物体領域クラスタの選定処理を終了したことを判断すると、処理を終了する。
このようにして、本発明の物体領域検出装置1は、図8のフローチャートに従ってセグメントクラスタの中から物体領域クラスタを選定する場合には、セグメントクラスタのサイズ(セグメントの数)に従って、物体領域クラスタを自動選定するように処理するのである。
例えば、図9(a)示すような映像を入力する場合にあって、図9(b)に示すように、N枚のフレーム画像において3種類のセグメントの出現頻度が高いことで、3つのセグメントクラスタ1〜3がクラスタリングされた場合には、それらのセグメントクラスタ1〜3のサイズに従って、それらのセグメントクラスタ1〜3の中から、セグメントクラスタ1とセグメントクラスタ2という2つのセグメントクラスタを物体領域クラスタとして選定するように処理する。
この図8のフローチャートに基づいて物体領域クラスタを自動選定するという方法は、フレーム画像列の全体においてターゲット物体がほぼ登場するような場合に特に有効な方法となる。
〔3−3〕物体領域クラスタの選定処理の他の一例
図10に、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理についてのフローチャートの他の一例を示す。
ここで、図10のフローチャートもまた、ユーザとの対話に依らない自動処理に従って、分類結果記憶部15に格納されるセグメントクラスタの中から物体領域クラスタを選定するようにしている。
次に、図10のフローチャートに従って、図5のフローチャートのステップS106で実行する物体領域クラスタの選定処理の一例について説明する。
本発明の物体領域検出装置1は、図10のフローチャートに従って物体領域クラスタを選定する場合には、図5のフローチャートのステップS106の処理に入ると、図10のフローチャートに示すように、まず最初に、ステップS400で、図3に示すようなデータ構造を持つ分類結果記憶部15から、セグメントクラスタ番号とセグメント識別情報との対応関係データを読み込む。
ここで、セグメントクラスタ番号とは、どのセグメントクラスタに属するのか表示する番号であり、セグメント識別情報とは、前述したように、そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号とで構成されるものである。
続いて、ステップS401で、読み込んだ対応関係データに従って、図11に示すようなデータ構造を持つインデクシング表を作成する。
このインデクシング表は、セグメントの識別情報をキーとして、そのセグメントがどのセグメントクラスタに属するのかということについて記載するものであり、フラグ(図中に示す丸印のもの)を使い、例えば、フレーム画像番号が“1”で、フレーム画像内におけるセグメントの番号が“1”であるR11というセグメントについては、K個存在するセグメントクラスタC1〜CKの内のセグメントクラスタC1に属するということについて記載する。
続いて、ステップS402で、セグメントクラスタの番号を示す変数iに初期値“1”をセットし、続くステップS403で、セグメントクラスタの番号を示すもう1つの変数jに初期値“2”をセットする。
続いて、ステップS404で、インデクシング表を参照して、セグメントクラスタiとセグメントクラスタjとの共起確率Pcij を算出する。
このとき算出する共起確率Pcij は、例えば、
Pcij =(1/N)×Σpn ci・pn cj
ただし、Nは映像を構成するフレーム画像の枚数
Σはn=1〜Nについての総和
で定義される。
ここで、pn ciは、図11に示すインデクシング表において、セグメントクラスタCi の列とn番目のフレーム画像のセグメントRnxの行にフラグがある場合には“1”という値をとり、そのフラグがない場合には“0”という値をとる変数である。ここで、xは、1≦x≦r(rはn番目のフレーム画像のセグメント数)を表している。
要するに、pn ciは、フレーム画像nにおいて、セグメントクラスタCi に属するセグメントがある場合には“1”という値をとり、セグメントクラスタCi に属するセグメントがない場合には“0”という値をとる変数である。
したがって、上記の共起確率Pcij は、セグメントクラスタiに属するセグメントとセグメントクラスタjに属するセグメントとが共に存在するフレーム画像の数を求めて、それをフレーム画像の総数Nで割り算した値を意味するものであり、その値が大きいほど、セグメントクラスタiに属するセグメントとセグメントクラスタjに属するセグメントとが同時に存在することが多いことを意味する。
このようにして、ステップS404で、セグメントクラスタiとセグメントクラスタjとの共起確率Pcij を算出すると、続いて、ステップS405で、算出した共起確率Pcij が所定の閾値よりも大きいのか否かを判断する。
続いて、ステップS406で、ステップS405の判断処理に従って、算出した共起確率Pcij が所定の閾値よりも大きいという判断結果が得られたのかを判断して、所定の閾値よりも大きいという判断結果が得られた場合には、ステップS407に進んで、セグメントクラスタiとセグメントクラスタjとを物体領域クラスタとして選定して、その選定結果を選定結果記憶部17に格納し、一方、所定の閾値よりも大きいという判断結果が得られない場合には、この処理を省略する。
続いて、ステップS408で、変数jの値が最大値であるK(セグメントクラスタの数)に到達したのか否かを判断して、変数jの値がKに到達していないことを判断するときには、ステップS409に進んで、変数jの値を1つインクリメントしてから、ステップS404の処理に戻る。
一方、ステップS408の判断処理に従って、変数jの値がKに到達したことを判断するときには、ステップS410に進んで、変数iの値が最大値であるK−1(セグメントクラスタの数から1を引いた値)に到達したのか否かを判断して、変数iの値がK−1に到達していないことを判断するときには、ステップS411に進んで、変数iの値を1つインクリメントしてから、ステップS404の処理に戻る。
そして、ステップS410で、変数iの値がK−1に到達したことを判断することで、物体領域クラスタの選定処理を終了したことを判断すると、処理を終了する。
このようにして、例えば、セグメントクラスタa、セグメントクラスタb、セグメントクラスタc、セグメントクラスタdという4つのセグメントクラスタが得られた場合にあって、セグメントクラスタa、セグメントクラスタb、セグメントクラスタcが物体領域クラスタである場合には、
(1)セグメントクラスタaとセグメントクラスタbとの共起確率に従って、この2つ のセグメントクラスタが物体領域クラスタとして選定され、
(2)セグメントクラスタaとセグメントクラスタcとの共起確率に従って、この2つ のセグメントクラスタが物体領域クラスタとして選定され、
(3)セグメントクラスタaとセグメントクラスタdとの共起確率に従って、この2つ のセグメントクラスタが物体領域クラスタとして選定されず、
(4)セグメントクラスタbとセグメントクラスタcとの共起確率に従って、この2つ のセグメントクラスタが物体領域クラスタとして選定され、
(5)セグメントクラスタbとセグメントクラスタdとの共起確率に従って、この2つ のセグメントクラスタが物体領域クラスタとして選定されず、
(6)セグメントクラスタcとセグメントクラスタdとの共起確率に従って、この2つ のセグメントクラスタが物体領域クラスタとして選定されない
ことにより、セグメントクラスタa、セグメントクラスタb、セグメントクラスタcという3つのセグメントクラスタが物体領域クラスタとして選定されることになる。
このように、本発明の物体領域検出装置1は、図10のフローチャートに従ってセグメントクラスタの中から物体領域クラスタを選定する場合には、2つのセグメントクラスタの共起確率に従って、物体領域クラスタを自動選定するように処理するのである。
例えば、図12(a)示すような映像を入力する場合にあって、図12(b)に示すように、N枚のフレーム画像において3種類のセグメントの出現頻度が高いことで、3つのセグメントクラスタ1〜3がクラスタリングされた場合には、それらのセグメントクラスタ1〜3の共起確率に従って、それらのセグメントクラスタ1〜3の中から、セグメントクラスタ1とセグメントクラスタ2という2つのセグメントクラスタを物体領域クラスタとして選定するように処理する。
ここで、図10のフローチャートでは、2つのセグメントクラスタの共起確率に従って、物体領域クラスタを自動選定するように処理しているが、それ以上の数のセグメントクラスタの共起確率に従って、物体領域クラスタを自動選定するように処理してもよい。
上記の具体例で説明するならば、例えば、3つのセグメントクラスタの共起確率(3つのセグメントクラスタに属するセグメントが共に存在するフレーム画像の数を求めて、それをフレーム画像の総数Nで割り算することなどにより求める)を使う場合には、
(1)セグメントクラスタaとセグメントクラスタbとセグメントクラスタcとの共起 確率に従って、この3つのセグメントクラスタが物体領域クラスタとして選定さ れ、
(2)セグメントクラスタbとセグメントクラスタcとセグメントクラスタdとの共起 確率に従って、この3つのセグメントクラスタが物体領域クラスタとして選定さ れず、
(3)セグメントクラスタaとセグメントクラスタcとセグメントクラスタdとの共起 確率に従って、この3つのセグメントクラスタが物体領域クラスタとして選定さ れず、
(4)セグメントクラスタaとセグメントクラスタbとセグメントクラスタdとの共起 確率に従って、この3つのセグメントクラスタが物体領域クラスタとして選定さ れない
ことにより、2つのセグメントクラスタの共起確率に従って物体領域クラスタを選定する場合と同様に、セグメントクラスタa、セグメントクラスタb、セグメントクラスタcという3つのセグメントクラスタが物体領域クラスタとして選定されることになる。
この図10のフローチャートに基づいて物体領域クラスタを自動選定するという方法は、フレーム画像列の全体においてターゲット物体が時々登場するような場合に特に有効な方法となる。
〔4〕物体領域セグメント(物体領域に属するセグメント)の補正処理
ターゲット物体のセグメントではないのにそのセグメントが検出されてしまうことで、物体領域クラスタにターゲット物体には関係のないセグメントが入ったり、また、ターゲット物体のセグメントであるのにそのセグメントが検出されないことで、物体領域クラスタに入るべきセグメントが欠如するということが起こる。
例えば、丸のセグメントと三角形のセグメントとで構成されるターゲット物体を含む図13(a)に示すような映像を入力する場合にあって、図13(b)に示すように、丸のセグメントについての物体領域クラスタ1と、三角形のセグメントについての物体領域クラスタ2とが物体領域クラスタとして選定される場合に、j番目のフレーム画像におけるセグメントの検出結果により、丸という同一の特徴を持つ2つのセグメント(内部にjを記述するセグメントと内部にj* を記述するセグメント)が検出されるようなことが起こることで、物体領域クラスタにターゲット物体には関係のないセグメントが入ることが起こる。
また、丸のセグメントと三角形のセグメントとで構成されるターゲット物体を含む図14(a)に示すような映像を入力する場合にあって、図14(b)に示すように、丸のセグメントについての物体領域クラスタ1と、三角形のセグメントについての物体領域クラスタ2とが物体領域クラスタとして選定される場合に、j+1番目のフレーム画像におけるセグメントの検出漏れに従って、三角形という特徴を持つセグメント(内部にj+1を記述するセグメント)が検出されないようなことが起こることで、物体領域クラスタに入るべきセグメントが欠如するということが起こる。
そこで、本発明の物体領域検出装置1は、図5のフローチャートのステップS106で、物体領域クラスタを選定してその選定結果を選定結果記憶部17に格納すると、直ちにステップS107に進むのではなくて、図15および図16のフローチャートを実行することで、物体領域に属するセグメント(物体領域セグメント)についての補正処理を行うようにしている。
次に、図15および図16のフローチャートに従って、この物体領域セグメントについての補正処理について説明する。
本発明の物体領域検出装置1は、図5のフローチャートのステップS106の処理を終えると、図15および図16のフローチャートに示すように、まず最初に、ステップS500で、フレーム画像の番号を示す変数nに初期値“1”をセットする。
続いて、ステップS501で、図2に示すようなデータ構造を持つ分割結果記憶部13を参照することで、n番目のフレーム画像の各セグメント(物体領域に属さないセグメントもある)について、そのセグメントの識別情報(そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号)を取得する。
続いて、ステップS502で、取得したセグメント識別情報をキーにして図4に示すようなデータ構造を持つ選定結果記憶部17を参照することで、取得したセグメント識別情報の指す物体領域クラスタ番号を特定する。
続いて、ステップS503で、特定した物体領域クラスタ番号に従って、n番目のフレーム画像において、同一の物体領域クラスタに複数の物体領域セグメントが存在するという物体領域クラスタがあるのか否かを判断する。
すなわち、図13(b)に示す例で説明するならば、j番目のフレーム画像では、物体領域クラスタ1に2つのセグメント(内部にjを記述するセグメントと内部にj* を記述するセグメント)が存在するので、このj番目のフレーム画像を処理する場合には、同一の物体領域クラスタに複数の物体領域セグメントが存在するという物体領域クラスタがあることを判断することになる。
この判断処理に従って、複数の物体領域セグメントが存在する物体領域クラスタがあることを判断するときには、n番目のフレーム画像に過剰な物体領域セグメントが存在することを判断して、ステップS504に進んで、図2に示すようなデータ構造を持つ分割結果記憶部13を参照することで、n番目のフレーム画像に存在する各物体領域セグメント(物体領域に属さないセグメントについては除く)のセグメント領域情報を取得する。
続いて、ステップS505で、取得したセグメント領域情報に従って、n番目のフレーム画像に存在する各物体領域セグメントの位置関係を評価することで、同一の物体領域クラスタに属する複数の物体領域セグメントの中に含まれる過剰な物体領域セグメントを特定する。
過剰な物体領域セグメントについては、図13(a)から分かるように、ターゲット物体とは関係がないことでその位置が孤立したものになるので、n番目のフレーム画像に存在する各物体領域セグメントの位置関係を評価することで、同一の物体領域クラスタに属する複数の物体領域セグメントの中に含まれる過剰な物体領域セグメントを特定することができることになるので、その評価を行うことで過剰な物体領域セグメントを特定するのである。
続いて、ステップS506で、選定結果記憶部17に格納されている過剰な物体領域セグメントについての情報を削除するとともに、それに合わせて、分割結果記憶部13および分類結果記憶部15に格納されているその過剰な物体領域セグメントについての情報を削除する。
続いて、ステップS507で、変数nの値が最大値であるN(フレーム画像の枚数)に到達したのか否かを判断して、変数nの値がNに到達していないことを判断するときには、ステップS508に進んで、変数nの値を1つインクリメントしてから、ステップS501の処理に戻り、変数nの値がNに到達したことを判断するときには、このステップS508の処理を省略する。
このようにして、ステップS501〜ステップS508の処理を繰り返すことで、ターゲット物体には関係のないセグメントが検出されて、それがターゲット物体の領域として判断されてしまう場合には、図13(b)に示すように、そのセグメントを削除するように処理するのである。
ステップS507で、変数nの値が最大値であるNに到達したことを判断すると、続いて、ステップS509で、図4に示すようなデータ構造を持つ選定結果記憶部17を参照することで、各物体領域クラスタに属する物体領域セグメントの個数を検出し、その検出結果に従って、他の物体領域クラスタよりも物体領域セグメントの個数が少ない物体領域クラスタを特定する。
物体領域セグメントに検出漏れがある物体領域クラスタについては、図14(b)から分かるように、物体領域セグメントの個数が他の物体領域クラスタよりも少なくなるので、各物体領域クラスタに属する物体領域セグメントの個数を検出することで、検出漏れが起きた物体領域クラスタを特定するのである。
この物体領域クラスタの特定処理については、例えば、物体領域セグメントの個数が同一となる物体領域クラスタが多数ある場合に、その個数よりも僅かに少ない個数の物体領域セグメントを持つ物体領域クラスタを特定することにより行うことになる。
続いて、ステップS510で、フレーム画像の番号を示す変数nに初期値“1”をセットする。
続いて、ステップS511で、図2に示すようなデータ構造を持つ分割結果記憶部13を参照することで、n番目のフレーム画像の各セグメント(物体領域に属さないセグメントもある)について、そのセグメントの識別情報(そのセグメントの存在するフレーム画像の番号と、そのフレーム画像内におけるセグメントの番号)を取得する。
続いて、ステップS512で、取得したセグメント識別情報をキーにして図4に示すようなデータ構造を持つ選定結果記憶部17を参照することで、取得したセグメント識別情報の指す物体領域クラスタ番号(物体領域クラスタ)を特定する。
続いて、ステップS513で、特定した物体領域クラスタの中に、物体領域セグメントの個数が少ない物体領域クラスタが含まれているのか否かを判断することで、n番目のフレーム画像で物体領域セグメントの検出漏れがあったのか否かを判断する。
すなわち、特定した物体領域クラスタの中に、物体領域セグメントの個数が少ない物体領域クラスタが含まれている場合には、n番目のフレーム画像で物体領域セグメントの検出漏れがなかったことを判断し、一方、物体領域セグメントの個数が少ない物体領域クラスタが含まれていない場合には、n番目のフレーム画像で物体領域セグメントの検出漏れがあったことを判断するのである。
例えば、図14(b)に示す例で説明するならば、j番目のフレーム画像を処理する場合には、ステップS512で物体領域クラスタ1と物体領域クラスタ2(検出漏れが起きた物体領域クラスタ)とを特定することになることで、j番目のフレーム画像では検出漏れがなかったことを判断し、一方、j+1番目のフレーム画像を処理する場合には、ステップS512で物体領域クラスタ1のみを特定することになるので、j+1番目のフレーム画像では検出漏れがあったことを判断することになる。
続いて、ステップS514で、ステップS513の判断処理に従って、n番目のフレーム画像で物体領域セグメントの検出漏れがあったという判断結果が得られたのか否かを判断して、物体領域セグメントの検出漏れがあったという判断結果が得られたことを判断するときには、ステップS515に進んで、映像記憶部11から、n番目のフレーム画像の前後に位置するフレーム画像を読み込み、それらのフレーム画像では検出が漏れなかった物体領域セグメント(n番目のフレーム画像では検出が漏れた物体領域セグメント)の画像部分を抽出する。
ここで、この画像部分については、図2の示すようなデータ構造を持つ分割結果記憶部13から取得するセグメント領域情報に従って抽出することができる。
続いて、ステップS516で、抽出した画像部分と、物体領域セグメントの検出漏れが起きたn番目のフレーム画像とを使って、n番目のフレーム画像では検出が漏れた物体領域セグメントを内挿により生成する。
続いて、ステップS517で、選定結果記憶部17に対して、生成した検出漏れの物体領域セグメントについての情報を追加するとともに、それに合わせて、分割結果記憶部13および分類結果記憶部15に対して、生成した検出漏れの物体領域セグメントについての情報を追加する。
一方、ステップS514で、n番目のフレーム画像で物体領域セグメントの検出漏れがなかったことを判断するときには、このステップS515〜ステップS517の処理を省略する。
続いて、ステップS518で、変数nの値が最大値であるN(フレーム画像の枚数)に到達したのか否かを判断して、変数nの値がNに到達していないことを判断するときには、ステップS519に進んで、変数nの値を1つインクリメントしてから、ステップS511の処理に戻る。
一方、ステップS518で、変数nの値がNに到達したことを判断するときには、物体領域セグメントについての補正処理を終了する。
このようにして、ステップS511〜ステップS519の処理を繰り返すことで、ターゲット物体のセグメントであるのに、そのセグメントが検出されない場合には、図14(a)に示すように、そのセグメントを生成するように処理するのである。
このようにして本発明の物体領域検出装置1は、図15および図16のフローチャートを実行することで、ターゲット物体には関係のないセグメントが検出されて、それがターゲット物体の領域として判断されてしまう場合には、そのセグメントを削除し、また、ターゲット物体のセグメントであるのに、そのセグメントが検出されない場合には、そのセグメントを生成するように処理することになる。
次に、図13および図14について説明する。
図13では、物体領域クラスタにターゲット物体に関係ない画像のセグメントが入ったことを想定している。この場合、フレーム画像において、セグメントの間の位置関係を用いて物体領域を検出するように処理する。
図13では、N枚のフレーム画像から、2つのセグメントクラスタを物体領域クラスタ1,2として求めたことを想定している。
このとき、クラスタリングをした際に、物体領域と関係ない画像のセグメント(j番目のフレーム画像のj* という丸のセグメント)の特徴量がクラスタリングの行われた特徴量空間で物体領域に関するセグメントに類似すると判断されるので、物体領域クラスタ1に入ったとする。このようなことは過剰検出と呼ばれる。
このことに対して、まずは、物体領域クラスタと個々のフレーム画像とを対応付けることで、j番目のフレーム画像に、jという丸のセグメント、jという三角のセグメント、j* という丸のセグメントが検出された場合には、次に、この3つのセグメントの間の位置距離を計算し、一定以上になるセグメント(この例では、j* という丸のセグメント)を過剰なセグメントと判断して物体領域から削除する。
図14では、ターゲット物体に関する画像のセグメントが物体領域クラスタに入らなかったことを想定している。この場合、検出される前後フレーム画像から内挿により物体領域を検出するように処理する。
図14では、N枚のフレーム画像から、2つのセグメントクラスタを物体領域クラスタ1,2として求めたことを想定している。
しかし、このとき、j+1番目のフレーム画像にある、物体領域に関するj+1という三角形のセグメントが物体領域クラスタ2に入らなかったとする。このようなことは検出漏れと呼ばれる。
このことに対して、まずは、物体領域クラスタと個々のフレーム画像とを対応付けることで、j+1番目のフレーム画像に、j+1という丸のセグメントだけが検出されたことを検出すると、次に、j+1番目のフレーム画像の前後のフレーム画像(j番目のフレーム画像とj+2番目のフレーム画像)から、動き特徴ベクトルなどを用いて三角形の領域を内挿することで、j+1番目のフレーム画像で検出されるべき三角形の物体領域を検出する。