(58)【調査した分野】(Int.Cl.,DB名)
画像信号における動物体の領域を検出する対象となっている対象フレームと、前記対象フレームより前の前フレームと、前記対象フレームより後の後フレームとのそれぞれを、前記画像信号の最低輝度から最高輝度までのそれぞれの輝度値を基準値とし、基準値である輝度値を有する領域をラベル1、基準値以外の輝度値を有する領域をラベル0として2値データに変換する2値化部と、
前記対象フレームと前記前フレームと前記後フレームとのそれぞれで、ラベル1の領域内の画素を、ラベル0の領域までの最短距離を示す距離値に変換する距離変換部と、
前記対象フレームと前記前フレームと前記後フレームとのそれぞれで、距離値に変換した領域内で、距離値の極大値を有する画素をスケルトン点として検出するスケルトン検出部と、
前記対象フレームにおけるスケルトン点の集合よりなるスケルトンと、前記前フレームにおけるスケルトン点の集合よりなるスケルトンとの差分を演算して第1の差分画像を生成する第1の差分演算部と、
前記対象フレームにおけるスケルトンと、前記後フレームにおけるスケルトン点の集合よりなるスケルトンとの差分を演算して第2の差分画像を生成する第2の差分演算部と、
前記第1の差分画像と前記第2の差分画像との論理積を演算して論理積画像を生成する論理積演算部と、
前記論理積画像の個々のスケルトン点に対して前記距離変換部で変換された距離値を半径とする円を配置することにより、前記対象フレームにおける動物体の領域を復元する動領域復元部と、
を備えることを特徴とする動領域検出装置。
前記動領域復元部は、前記距離変換部で変換された距離値を半径とする円の輝度値を、前記2値化部における基準値である輝度値として前記動物体の領域を復元することを特徴とする請求項1または2に記載の動領域検出装置。
前記対象フレームにおけるスケルトンと前記前フレームにおけるスケルトン、または、前記対象フレームにおけるスケルトンと前記後フレームにおけるスケルトンとが部分的に重なって、前記第1または第2の差分画像が分断した状態となるとき、分断した状態の前記第1または第2の差分画像を連結させる連結部をさらに備えることを特徴とする請求項1〜3のいずれか1項に記載の動領域検出装置。
【発明を実施するための形態】
【0013】
以下、一実施形態の動領域検出装置について、添付図面を参照して説明する。
図1において、記憶部10には、動画像信号である画像信号Sinが入力される。画像信号Sinは、例えば8ビットのデジタルデータである。記憶部10は、少なくとも3フレーム分の画像を記憶する。
【0014】
図2は、記憶部10に記憶された画像信号Sinにおける所定の1フレームFの画像を示している。フレームFの画像は物体OBを含む。便宜上、物体OBと物体OB以外の背景BGはそれぞれ一様な輝度値を有するものとする。物体OBの輝度値をLob、背景BGの輝度値をLbgとする。
【0015】
2値化部20は、記憶部10に記憶されたそれぞれのフレームの画像を次のように2値化する。2値化部20における2値化の動作を
図2に示す画像の場合を例にして説明する。
【0016】
2値化部20は、輝度値0(最低輝度)から輝度値255(最高輝度)までのそれぞれの輝度値を基準値としてフレームFの画像を2値データに変換する。基準値とする輝度値をLとすると、2値化部20は、輝度値Lの画素をラベル1、輝度値L以外の画素をラベル0とする。
【0017】
物体OBの輝度値Lobを例えば100、背景BGの輝度値Lbgを例えば200とする。基準値としての輝度値Lが0〜99,101〜199,201〜255のとき、フレームFの全体がラベル0の2値データに変換される。
【0018】
輝度値Lが100のとき、
図3の(a)に示すように、フレームFは、物体OBの部分がラベル1の領域R1、背景BGの部分がラベル0の領域R0の2値データに変換される。輝度値Lが200のとき、
図3の(b)に示すように、フレームFは、物体OBの部分がラベル0の領域R0、背景BGの部分がラベル1の領域R1の2値データに変換される。
図3の(a),(b)では、便宜上、ラベル1を黒、ラベル0を白で示している。
【0019】
2値化部20は、輝度値0から輝度値255までの256の輝度値Lをそれぞれ基準値としてフレームFの画像を2値データに変換するから、2値化部20からは256個の2値データが出力される。256個の2値データは、距離変換部30に入力される。
【0020】
距離変換部30は、256個の2値データそれぞれにおけるラベル1の領域R1を距離変換する。距離変換部30で用いる距離とは、ユークリッド距離ではなく、例えば4近傍距離である。上記のように、
図3の(a),(b)に示す2値データ以外はラベル1の領域R1を有さないので、
図2の画像の場合には、
図3の(a),(b)のそれぞれの領域R1のみが距離変換される。
【0021】
距離変換部30は、
図3の(a),(b)におけるラベル1の領域R1を、4近傍距離を用いて距離変換する。
図4の(a),(b)を用いて、距離変換の概略について説明する。
図4の(a)に示すように、ラベル0の領域R0を背景として、図示のような形状のラベル1の領域R1が存在している。距離変換とは、領域R1の各画素に対して領域R0の背景までの最短距離を与える変換処理である。
【0022】
図4の(a)の領域R1の各画素に対して背景までの最短距離を与えると、
図2の(b)に示す距離値となる。ここでは、背景と隣接する画素の距離値を0としている。なお、背景と隣接する画素の距離値を1とする距離変換の方法もある。
【0023】
距離変換部30は、
図4の(a),(b)で説明した方法で
図3の(a),(b)における領域R1を距離変換する。
図5は、
図3の(a)の領域R1を距離変換した距離変換画像を示している。
図5においては、距離値をグレーの濃淡にて表している。距離値0は白で表されている。
【0024】
図3の(b)の領域R1を距離変換した距離変換画像については図示を省略するが、
図3の(a)と同様に、背景BGの部分がグレーの濃淡で表される。
【0025】
図1に戻り、距離変換画像は、スケルトン検出部40に入力される。スケルトン検出部40は、距離変換画像において、距離値の極大値を有する画素をスケルトン点とする。距離変換部30において4近傍距離を用いて距離変換したので、スケルトン検出部40は、注目画素と、注目画素の上下及び左右に隣接する4近傍画素との5画素の中で、注目画素が最大値を有すれば、注目画素をスケルトン点とする。
【0026】
なお、距離変換部30において、4近傍画素の代わりに8近傍画素を用いてもよい。8近傍画素を用いる場合、スケルトン検出部40は、注目画素と、注目画素の周囲の8近傍画素との9画素の中で、注目画素が最大値を有すれば、注目画素をスケルトン点とする。
【0027】
スケルトン検出部40によって検出されるスケルトン点の集合をスケルトンと称する。
図6の(a)は、物体OBの領域に対応して生成されたスケルトンSKLobを示している。
図6の(b)は、背景BGの領域に対応して生成されたスケルトンSKLbgを示している。スケルトンSKLob,SKLbgは、1画素の幅を有する線よりなる細線化画像である。
【0028】
図2に示すフレームFの画像は、以上説明した2値化部20による2値化、距離変換部30による距離変換、スケルトン検出部40によるスケルトン点の検出によって、スケルトンSKLob,SKLbgを有するフレームFとなる。スケルトン検出部40からは、
図6の(a)と(b)とを加算した(c)に示すスケルトンSKLob,SKLbgを有するフレームFが出力される。
【0029】
スケルトン検出部40は、距離変換画像のそれぞれの画素に対して、スケルトンフラグとして、スケルトン点であればラベル1を、スケルトン点でなければラベル0を設定する。フレームF内のそれぞれの画素は、輝度値と、スケルトンフラグと、距離値とよりなる固有値を有する。
【0030】
ここでの固有値としての輝度値は、2値化部20でフレームFの画像を2値データに変換したときの基準値である。
【0031】
2値化部20〜スケルトン検出部40は、画像信号Sinにおけるそれぞれのフレームの画像に対して以上の各処理を実行する。記憶部50は、フレーム内のそれぞれの領域がスケルトンに変換された3フレーム分のフレームを記憶する。
【0032】
図7A,
図7Bを参照しながら、
図1における記憶部50以降の処理について説明する。
図7A,
図7Bでは、説明を簡略化するため、物体OBに対する処理のみを説明し、背景BGに対する処理の説明を省略することとする。
【0033】
図7Aにおいて、フレームF0,F1,F2は、画像信号Sinにおける連続した3フレームである。フレームF0,F1,F2内の物体OBは左側から右側へと移動している。フレームF1が動物体の領域を検出する対象のフレーム(対象フレーム)である。フレームF1内の物体OBを検出するために、フレームF1の前後のフレームF0(前フレーム)とフレームF2(後フレーム)が用いられる。
【0034】
図7Aに示すように、フレームF0,F1,F2それぞれに対して、前述のような2値化、距離変換、スケルトン点の検出の各処理が施されると、スケルトンSKLob0,SKLob1,SKLob2が生成される。スケルトンSKLob0,SKLob1,SKLob2を有するフレームF0,F1,F2は、記憶部50に記憶される。
【0035】
演算部60内の差分演算部(第1の差分演算部)601は、スケルトンSKLob1を有するフレームF1とスケルトンSKLob0を有するフレームF0との差分を演算する。フレームF1とフレームF0との差分を演算することにより、差分画像Diff_10_skl(第1の差分画像)を有するフレームF10となる。
【0036】
演算部60内の差分演算部(第2の差分演算部)602は、スケルトンSKLob1を有するフレームF1とスケルトンSKLob2を有するフレームF2との差分を演算する。フレームF1とフレームF2との差分を演算することにより、差分画像Diff_12_skl(第2の差分画像)を有するフレームF12となる。
【0037】
図7Aに示す例では、物体OBが水平移動しているため、スケルトンSKLob0,SKLob1,SKLob2は、同じ水平ライン上で水平方向の位置が少しずつずれている。スケルトンSKLob0の右端部とスケルトンSKLob1の左端部は重なっている。スケルトンSKLob1の右端部とスケルトンSKLob2の左端部は重なっている。従って、差分画像Diff_10_skl,Diff_12_sklは、水平方向の中央部で差分が0となることにより、左右に分断した状態となる。
【0038】
同一の物体に基づいて生成したスケルトンは連結する性質を有する。差分画像Diff_10_skl,Diff_12_sklのように同じ水平ライン上で左右に分断している場合には、連結部604,605は、左右の画像を連結させ、差分画像Diff_10c_skl,Diff_12c_sklとする。
【0039】
本例では物体OBのスケルトンが一本の水平線として抽出されたため、物体OBが斜め方向に移動した場合には、スケルトンSKLob0,SKLob1は互いに重ならず、スケルトンSKLob1,SKLob2も互いに重ならない。
図7Aに示す例のように、スケルトンが同じ水平位置で位置がずれる場合には、スケルトンの差分画像が分断する。このような場合には、スケルトンの連結性に基づき、分断した差分画像を連結させればよい。
【0040】
差分画像Diff_10c_sklを有するフレームF10と、差分画像Diff_12c_sklを有するフレームF12は、演算部60内の論理積演算部603に入力される。
図7Bに示すように、論理積演算部603は、差分画像Diff_10c_sklを有するフレームF10と、差分画像Diff_12c_sklを有するフレームF12との論理積を演算する。
【0041】
フレームF10とフレームF12との論理積を演算したフレームをフレームF1012とする。差分画像Diff_10c_skl,Diff_12c_sklの論理積をとると、論理積画像A1012_sklとなる。フレームF1012内の論理積画像A1012_sklの位置は、スケルトンSKLob1の位置と一致する。フレームF1012は、フレームF1に相当する。
【0042】
動領域復元部70は、論理積画像A1012_sklに基づいて、フレームF1内の動物体の領域である物体OBを復元する。論理積画像A1012_sklを構成する個々のスケルトン点は、輝度値と距離値とを有する。動領域復元部70は、論理積画像A1012_sklのそれぞれのスケルトン点に対して距離値を半径とする円Cdを配置する。
図7Bでは、簡略化のため、円Cdを5つのみ示している。
【0043】
動領域復元部70が全てのスケルトン点に対して距離値を半径とする円Cdを配置すれば、フレームF1内の物体OBの位置及び形状を復元することができる。
【0044】
動領域復元部70は、全てのスケルトン点に配置した円Cdを、スケルトン点が有する輝度値で塗りつぶす。これにより、物体OBの輝度も復元することができる。
【0045】
背景BGに対しても同様の処理が行われるので、動領域復元部70は、画像F1の背景BGも復元することができる。
【0046】
図8A〜
図8Cに示すフローチャートを用いて、
図1に示す動領域検出装置の動作を改めて説明する。
図8Aにおいて、2値化部20は、ステップS1にて、フレームFnにおけるnを0とする。フレームFnは、
図7AのフレームF0〜F2のいずれかであり、nを0とすることによりフレームF0が選択される。
【0047】
2値化部20は、ステップS2にて、2値化の基準値である輝度値Lを0とする。2値化部20は、ステップS3にて、フレームF0を輝度値L(輝度値0)で2値化する。
【0048】
距離変換部30は、ステップS4にて、ステップS3で2値化した2値データのラベル1の領域R1を距離変換する。スケルトン検出部40は、ステップS4で距離変換した距離変換画像のスケルトンを検出する。
【0049】
2値化部20は、ステップS6にて、輝度値Lが255であるか否かを判定する。2値化部20は、輝度値Lが255でなければ(NO)、処理をステップS7に移行させる。2値化部20は、ステップS7にて輝度値Lを1インクリメントして、処理をステップS3に戻す。
【0050】
2値化部20がステップS3〜S7の処理を繰り返し、ステップS6にて輝度値Lが255であれば(YES)、フレームF0を0〜255の全ての輝度値Lで2値化したことになる。
【0051】
2値化部20は、ステップS8にて、nが2であるか否かを判定する。2値化部20は、nが2でなければ(NO)、処理をステップS9に移行させる。
【0052】
2値化部20は、ステップS9にて、nを1インクリメントして、処理をステップS2に戻す。nを1インクリメントすることにより、次にフレームF1が選択される。2値化部20〜スケルトン検出部40がフレームF1に対してもステップS2〜S7の処理を繰り返すと、フレームF1の2値化、距離変換、スケルトン検出が完了する。
【0053】
2値化部20は、ステップS8にてnが2でないと判定して、ステップS9にて、nを1インクリメントして、処理をステップS2に戻す。nを1インクリメントすることにより、さらに次にフレームF2が選択される。2値化部20〜スケルトン検出部40がフレームF2に対してもステップS2〜S7の処理を繰り返すと、フレームF2の2値化、距離変換、スケルトン検出が完了する。
【0054】
ステップS8にてnが2であれば(YES)、2値化部20は、フレームF0〜F2の全ての2値化、距離変換、スケルトン検出を完了したことになる。
【0055】
図8Bにおいて、演算部60は、ステップS10にてフレームFnにおけるnを0とし、ステップS11にて画素位置pを0とする。これにより、まずフレームF0の最初の画素である例えば左上端部の画素が選択される。
【0056】
演算部60は、ステップS12にて、フレームF1の画素位置p(左上端部の画素)のスケルトンフラグがラベル1かラベル0であるかを確認して、フレームF1の画素位置pがスケルトン点であるか否かを判定する。
【0057】
スケルトン点であれば(YES)、演算部60は、ステップS13にて、フレームFnの画素位置pがスケルトン点であるか否かを判定する。スケルトン点でなければ(NO)、演算部60は、ステップS14にて、フレームFnの画素位置pがスケルトン点であるか否かを判定する。
【0058】
ステップS13にてスケルトン点であれば(YES)、演算部60は、ステップS15にて、フレームF1の画素位置pとフレームFnの画素位置pとの輝度の差分が所定の閾値より大きいかを判定する。輝度の差分が所定の閾値より大きければ(YES)、演算部60は、処理をステップS18に移行させ、大きくなければ(NO)、演算部60は、処理をステップS19に移行させる。
【0059】
ステップS13にてスケルトン点なければ(NO)、演算部60は、処理をステップS18に移行させる。
【0060】
ステップS14にてスケルトン点であれば(YES)、演算部60は、処理をステップS17に移行させ、スケルトン点でなければ(NO)、演算部60は、処理をステップS16に移行させる。
【0061】
演算部60は、ステップS16にて、フレームF1nの画素位置pの差分点フラグをラベル0とする。ここでのフレームF1nは、フレームF10である。演算部60は、ステップS17にて、フレームF1nの画素位置pの差分点フラグをラベル1とし、フレームFnの画素位置pの距離値を設定する。
【0062】
演算部60は、ステップS18にて、フレームF1nの画素位置pの差分点フラグをラベル1とし、フレームF1の画素位置pの距離値を設定する。演算部60は、ステップS19にて、フレームF1nの画素位置pの差分点フラグをラベル0とする。
【0063】
ステップS16〜S19の後、演算部60は、ステップS20にて、画素位置pは最終画素であるか否かを判定する。例えば右下端部の画素を最終画素とする。最終画素でなければ(NO)、演算部60は、ステップS21にて、画素位置pを1インクリメントして、処理をステップS12に戻し、ステップS12〜S21を繰り返す。
【0064】
ステップS20にて最終画素であれば(YES)、画像F1と画像F0との差分演算が終了したということである。演算部60は、処理をステップS22に移行させる。演算部60は、ステップS22にて、nが2でない(NO)と判定して、ステップS23にて、nを1インクリメントして、処理をステップS11に戻す。nを1インクリメントすることにより、次にフレームF1とフレームF2との差分演算が実行される。
【0065】
n=2として、ステップS12〜S21の処理を繰り返すと、フレームF1とフレームF2との差分演算が完了する。
【0066】
ステップS22にてnが2であれば(YES)、演算部60は、フレームF1とフレームF0との差分演算とフレームF1とフレームF2との差分演算とを完了したことになる。
【0067】
図8Bに示す処理によって、
図7Aに示すフレームF10の差分画像Diff_10_skl,Diff_12_sklが得られる。差分点フラグがラベル1の画素の集合が差分画像Diff_10_skl,Diff_12_sklとなる。
図8Bでは特に図示していないが、前述のように、必要に応じて差分画像Diff_10_skl,Diff_12_sklは連結されて差分画像Diff_10c_skl,Diff_12c_sklとされる。
【0068】
次に、
図8Cにおいて、動領域復元部70は、ステップS24にて、フレームの全体をラベル0で初期化する。動領域復元部70は、ステップS25にて、画素位置pを0とする。動領域復元部70は、ステップS26にて、フレームF10,F12の画素位置pの差分点フラグがどちらも1であるか否かを判定する。
【0069】
フレームF10,F12の画素位置pの差分点フラグがどちらも1であれば(YES)、動領域復元部70は、ステップS27にて、画素位置pを中心としてフレームF10の画素位置pにおける距離値の円の範囲をラベル1として、処理をステップS28に移行させる。フレームF10の画素位置pにおける距離値の代わりに、フレームF12の画素位置pにおける距離値を用いてもよい。
【0070】
フレームF10,F12の画素位置pの差分点フラグのいずれかが1でなければ(NO)、動領域復元部70は、処理をステップS28に移行させる。
【0071】
動領域復元部70は、ステップS28にて、画素位置pは最終画素であるか否かを判定する。最終画素でなければ(NO)、動領域復元部70は、ステップS29にて、画素位置pを1インクリメントして、処理をステップS26に戻し、ステップS26〜S29を繰り返す。
【0072】
ステップS28にて最終画素であれば(YES)、
図7Bに示すように物体OBが復元され、処理を終了する。
【0073】
比較のため、
図9を用いて、2値化、距離変換、スケルトン変換を行わず、演算部60がフレームF0〜F2をそのまま演算した場合について説明する。
図9において、フレームF0〜F2における物体OBは移動量が少なく、フレームF1,F0の物体OBは重なり合う位置関係にあり、フレームF1,F2の物体OBは重なり合う位置関係にあるとする。
【0074】
差分演算部601が、フレームF1とフレームF0との差分を演算すると、差分画像Diff_10を有するフレームF10となる。差分演算部602がフレームF1とフレームF2との差分を演算すると、差分画像Diff_12を有するフレームF12となる。
【0075】
論理積演算部603が、差分画像Diff_10を有するフレームF10と、差分画像Diff_12を有するフレームF12との論理積を演算すると、論理積画像A1012は、
図9に示すように、物体OBの左右の部分が欠落した画像となる。フレームF1,F0で物体OBの重なった部分と、フレームF1,F2で物体OBの重なった部分は検出できない領域となる。
【0076】
以上のように、本実施形態の動領域検出装置によれば、隣接するフレーム間で物体OBが重なり合う位置関係であっても、物体OBを細線化画像であるスケルトンに変換することにより、重なり合う可能性を大幅に低減させることができる。よって、物体OBを検出しやすくすることができる。
【0077】
図7Aで説明したように、スケルトンが重なってしまう場合が稀に発生する。しかしながら、スケルトンの連結性に基づいて分断した差分画像を連結することによって、物体OBを的確に検出することが可能である。
【0078】
本実施形態の動領域検出装置によれば、動物体の領域が一様な画素値を有する場合でも、動物体の移動量にかかわらず、動物体の領域を的確に検出することができる。
【0079】
本実施形態の動領域検出装置による動領域検出方法を例えば複数枚超解像処理に用いれば、ランダムなノイズ成分を低減させることができ、ダイナミックレンジを拡大することができる。本実施形態の動領域検出装置による動領域検出方法は、複数枚超解像処理以外のノイズリダクションにも用いることができ、ノイズリダクションの性能を向上させることが可能である。
【0080】
本発明は以上説明した本実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変更可能である。本実施形態の動領域検出装置をハードウェアで構成してもよいし、ソフトウェア(コンピュータプログラム)で構成してもよい。動領域検出プログラムは、コンピュータに、
図8A〜
図8Cに示す各ステップを実行させればよい。