(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0029】
以下、本発明における実施形態について、図面を参照して説明する。
【0030】
(1.1 機能ブロック)
図1に、本発明の1実施形態にかかる矩形動き画像領域決定装置1の機能ブロック図を示す。矩形動き画像領域決定装置1は、行方向および列方向に画素が行列配置された表示領域のうち、その一部に表示される矩形動き画像領域を決定する装置であって、動き単位ブロック判断手段5、動き列ブロック決定手段7、動き行ブロック決定手段9、第1矩形動き画像領域決定手段11、繰り返し手段13、第2矩形動き画像領域決定手段14を備えている。
【0031】
動き単位ブロック判断手段5は、前記表示領域を、所定数の画素で構成される単位ブロックに分割するとともに、各単位ブロックが動きが存在する動き単位ブロックと判断する。動き列ブロック決定手段7は、前記単位ブロックのうち、最上段に位置する各単位ブロックと同じ列に属する単位ブロックの集合を列ブロックとして定義し、各列ブロックに少なくとも1以上の動き単位ブロックが存在する場合には当該列ブロックを動き列ブロックとして決定する。動き行ブロック決定手段9は、前記単位ブロックのうち、最左端段に位置する各単位ブロックと同じ行に属する単位ブロックの集合を行ブロックとして定義し、各行ブロックに少なくとも1以上の動き単位ブロックが存在する場合には、当該行ブロックを動き行ブロックとして決定する。第1矩形動き画像領域決定手段11は、前記動き行ブロックおよび前記動き列ブロックの双方に属する単位ブロックで特定される矩形領域を矩形動き画像領域として決定する。繰り返し手段13は、第1矩形動き画像領域決定手段11が決定した矩形動き画像領域について、動き列ブロック決定手段7、動き行ブロック決定手段9、および矩形動き画像領域決定手段11による処理を繰り返し実行させる。第2矩形動き画像領域決定手段14は、前記矩形動き画像領域を構成する単位ブロックの内、外周の四辺を構成する単位ブロックについて、これらの単位ブロック内の各画素に基づき、前記矩形動き画像領域内のエッジで定義される領域を前記矩形動き画像領域とする。
【0032】
(1.2 ハードウェア構成)
図2に矩形動き画像領域決定装置1のハードウェア構成を示す。矩形動き画像領域決定装置1は、CPU23、RAM25、フラッシュメモリ26を備えている。フラッシュメモリ26には、プログラム26pが記憶されている。プログラム26pには、後述するように、矩形動き画像領域決定処理を行う。RAM25は演算結果等を記憶する。フレームメモリ27は1画面の画像データを保持する。
【0033】
CPU23は、プログラム26Pに従い、メモリ27に記憶された表示領域を構成する画素値に基づき、動きの存在する画素で構成された動き画像領域か否かの判断を行い、結果をRAM25に記憶する。
【0034】
(1.3 フローチャートの説明)
図2に示すプログラム26Pによる処理について
図3を用いて説明する。以下では、
図4に示すように、モニタの1フレームである画像領域100に、3つの矩形動き画像領域100〜112が存在する場合を例として説明する。
【0035】
画像領域100は、行方向αと列方向βにマトリックス状に画素が配置されている。
【0036】
CPU23は、ブロック分割を行う(
図3ステップS1)。本実施形態においては、32*32画素を1ブロックとして、
図4に示す表示領域100を複数のブロックにマトリックス状に分割した。以下では、α方向にはn+1個、β方向にはm+1個のブロックに分割されたものとする。
【0037】
CPU23は全ブロックについて代表値を決定する(
図3ステップS3)。代表値としては、1ブロック内の画素値の平均値、先頭の画素値、さらには当該値をそのまま用いるのではなく、CRCなどのハッシュ値を代表値としてもよい。また、平均値は、32*32*8bit画像では、18ビット長で表現可能であるが、上下の10ビットを切り捨てて、真ん中の8ビットのみ使用するというようにしてもよい。これにより、(n+1)*(m+1)個のブロック代表値がRAM25に記憶される。
【0038】
CPU23は、(n+1)*(m+1)個のブロックのうち、動きブロックを決定する(ステップS5)。動きブロック決定処理について
図5を用いて説明する。
【0039】
CPU23は処理ブロック番号i,jを初期化する(
図5ステップS11、S13)。ブロック(0,0)について前フレームの代表値と比較する(ステップS15)。本実施形態においては、時刻tと時刻t-1の代表値を比較した。CPU23は代表値の差分が閾値thbを超えるか否か判断し(ステップS17)、代表値の差分が閾値thbを越える場合は動きブロックと判断する(ステップS19)。一方、代表値の差分が閾値thbを越えない場合は非動きブロックと判断する(ステップS21)。
【0040】
CPU23は処理ブロック番号jが最終か否か判断する(ステップS23)。この場合、j=0で、最終でないので、処理ブロック番号jをインクリメントし(ステップS25)、ステップS15以下を繰り返す。ステップS23にて、処理ブロック番号jが最終であれば、ステップS27に進み、CPU23は、処理ブロック番号iが最終か否か判断する。この場合、最終でないので、処理ブロック番号iをインクリメントし(ステップS29)、ステップS13以下を繰り返す。ステップS27にて、処理ブロック番号iが最終であれば、処理を終了する。
【0041】
これにより、
図6に示すように(n+1)*(m+1)個のブロックについて、動きブロックが決定される。この例では、ブロック(4,2)、(4,3)、(4,4)・・・が動きブロックとして決定されている。
【0042】
CPU23は、動き画像領域決定処理を行う(
図3ステップS7)。動き画像領域決定処理の詳細について、
図7,
図9を用いて説明する。
【0043】
CPU23は、処理ブロック番号jを初期化する(
図7ステップS31)。CPU23は、ブロック(0,0)が属する列のブロックに動きブロックが少なくとも1つ存在するか否か判断する(ステップS33)。この場合、
図6に示すように、ブロック(0,0)およびその縦方向のブロック(1,0)〜(m,0)には、動きブロックが存在しないので、かかる列は、非動き列と判断する(
図7ステップS37)。CPU23は、加算記憶された仮動き列があるかどうか判断する(ステップS39)。この場合、存在しないので、ステップS46に進み、処理ブロック番号jが最終か否か判断する。この場合、j=0で最終ではないので、処理ブロック番号jをインクリメントし(ステップS47)、ステップS33以下を繰り返す。
【0044】
処理ブロック番号j=2では、ブロック(0,2)の縦方向のブロックには、動きブロックが存在する。したがって、CPU23は、この列は仮動き列として加算記憶する(ステップS35)。
【0045】
CPU23は、処理ブロック番号jが最終か否か判断する(ステップS46)。この場合、j=2で最終ではないので、処理ブロック番号jをインクリメントし(ステップS47)、ステップS33以下を繰り返す。
【0046】
処理ブロック番号j=8まで、ステップS35の処理が繰り返される。処理ブロック番号j=9では、ブロック(0,9)の列には、動きブロックが存在しない。したがって、CPU23は、当該列を非動き列であると判断する(ステップS37)。CPU23は、加算記憶された仮動き列が存在するか否か判断し(ステップS39)、存在する場合には、隣接するそれらの集合が、閾値thwを超える幅を有するか否か判断する(ステップS41)。本実施形態においては、閾値thwを2ブロック以上とした。この場合、加算記憶された仮動き列がブロック(0,2)〜(0,8)まで存在するので、前記閾値thwを超えているので、仮動き列を動き列とする(ステップS45)。
【0047】
CPU23は、処理ブロック番号jが最終か否か判断する(ステップS46)。
【0048】
処理ブロック番号j=10では、ブロック(0,10)の列には、動きブロックが存在しない。したがって、CPU23は、当該列を非動き列であると判断する(ステップS37)。CPU23は、検出済みの仮動き列が存在するか否か判断し(ステップS39)、この場合、存在しないので、CPU23は、処理ブロック番号jが最終か否か判断する(ステップS46)。
【0049】
以下、j=n-7まで、非動き列と判断がなされる。処理ブロック番号j=n-6には、動きブロック(m-3,n-6)が存在する。したがって、CPU23は、仮動き列として加算記憶する(ステップS35)。
【0050】
処理ブロック番号j=n-5では、ブロック(0,n-5)の列には、動きブロックが存在しない。したがって、CPU23は、当該列を非動き列であると判断する(ステップS37)。CPU23は、検出済みの仮動き列が存在するか否か判断し(ステップS39)、存在する場合には、隣接するそれらの集合が、閾値thwを超える幅を有するか否か判断する(ステップS41)。本実施形態においては、閾値thwを2ブロック以上としたので、仮動き列の幅が前記閾値thwを超えていないので、仮動き列を非動き列とする(ステップS43)。これにより、マウスなどの画像領域を誤って動き画像領域として認定することを防止することができる。
【0051】
以下同様にして、行方向αについて、順次動きブロックが存在する列か否かを1列ずつ判断している。
【0052】
なお、最終列であるブロック(0,n)の列が仮動き列である場合もある。この場合、ステップS49にて、加算記憶された仮動き列が存在するか否か判断し、存在する場合には、ステップS41以下の処理を実行する。
【0053】
図8に、検出後の動き列を示す。この場合、領域121が動き列として決定される。これに対して、動きブロック(6,n-3),(m-3,n-6)が属する領域122,123は矢印α方向に、閾値thw以上の幅を有していないので、動き列としては決定されない。
【0054】
つぎに、CPU23は、処理ブロック番号iを初期化する(
図9ステップS51)。CPU23は、ブロック(0,0)の行に動きブロックが少なくとも1つ存在するか否か判断する(ステップS53)。この場合、
図6に示すように、ブロック(0,0)およびその横方向のブロック(0,1)〜(0,n)には、動きブロックが存在しないので、かかる行は、非動き行と判断する(ステップS57)。CPU23は、加算記憶された動き行があるかどうか判断する(ステップS59)。この場合、検出済みの動き行が存在しないので、ステップS66に進み、処理ブロック番号iが最終か否か判断する。この場合、i=0で、最終ではないので、処理ブロック番号iをインクリメントし(ステップS68)、ステップS53以下を繰り返す。
【0055】
処理ブロック番号i=4では、ブロック(4,0)の行には、動きブロックが存在する。したがって、CPU23は、この行を仮動き行として加算記憶する(ステップS55)。
【0056】
以下同様にして、i=8まで、ブロック(i,0)の行には動きブロックが存在する動き行であるとの判断がなされる。i=9にて、ブロック(i,0)の行には動きブロックが存在しないので、当該行は非動き行であると判断される(ステップS57)。CPU23は、加算記憶された動き行があるか否か判断する(ステップS59)。この場合、加算記憶された動き行があるので、それらの集合が、閾値thwを超える幅を有するか否か判断する(ステップS61)。本実施形態においては、閾値thwを2ブロック以上とした。この場合、検出済みの動き行がブロック(4,0)〜(8,0)まで存在するので、前記閾値thwを超えているので、仮動き行を動き行とする(ステップS65)。
【0057】
以下同様にして、列方向βについて、順次動きブロックが存在する列か否かを1行ずつ判断する。ステップS69の意義については、ステップS49と同じであるので説明は省略する。
【0058】
図10に検出後の動き行を示す。この場合、領域131が動き行として決定される。動きブロック(6,n-3)は、領域131に属している。これに対して、動きブロック(m-3,n-6)が属する領域132は、矢印β方向に閾値thw以上の幅を有していないので、動き行としては決定されない。
【0059】
CPU23は、動き列と動き行の双方に属するブロックを動き画像領域として決定する(
図9ステップS70)。この場合、
図11に示す領域121と領域131の重複する領域140に属するブロックが動き画像領域として決定される。
図6の動きブロックと比較すると、動きブロック(6,n-3),(m-3,n-6)が排除される一方、ブロック(4,5)などが動き画像領域として決定されている。このようにして取りこぼしを周辺ブロックとの関係で防ぐことができる。
【0060】
CPU23は、境界決定処理を行う(
図3ステップS9)。
図11に示す領域140については、32*32画素で構成されたブロックにおける動き画像領域の境界が得られている。ステップS9の処理により、
図13に示すように、1画素単位での動き画像領域の境界150を得ることができる。ステップS9の詳細について
図12を用いて説明する。
【0061】
CPU23は、上側ブロックを抽出する(
図12ステップS80)。この場合、
図13に示すブロック(4,2)〜(4,8)の計7つのブロックが抽出される。CPU23は、処理行番号Pを初期化し(ステップS81)、抽出したブロックのP行目の画素を全て抽出するとともに、その代表値を演算する(ステップS83)。この場合、ブロック(4,2)の0行目の32画素、ブロック(4,3)の0行目の32画素・・・と7*32画素が抽出され、その代表値が演算される。本実施形態においては、代表値は抽出した画素の平均値とした。
【0062】
つぎにCPU23は、抽出したブロックの処理行番号P+1行目の画素を全て抽出するとともに、その代表値を演算する(ステップS85)。この場合、ブロック(4,2)の1行目の32画素、ブロック(4,3)の1行目の32画素・・・と7*32画素が抽出され、その代表値が演算される。
【0063】
CPU23は、ステップS83で求めた代表値とステップS85で求めた代表値が異なるか否か判断する(ステップS87)。ステップS87にて両者が異なる場合には、画素(P,0)の行が境界であると判断する(ステップS93)。ステップS87にて両者が異ならない場合には、処理行番号Pをインクリメントし(ステップS89)、抽出ブロックの最終画素(この場合、32画素)となるまでステップS83以下を繰り返す(ステップS91)。最終画素でもステップS87にて両者が異ならない場合は、抽出したブロックの端部が境界であると判断する(ステップS95)。
【0064】
図12においては、上部のブロックにおける1画素単位の境界を抽出する場合について説明したが、下部のブロックについても同様である。
【0065】
このように、外周のブロックについて、上部、下部であれば横方向に1行分画素を抽出して、その代表値を隣接する行と比較することにより、ブロック内における1画素単位の境界を取得することができる。
【0066】
なお、左右の境界については、縦方向に1列分画素を抽出して、その代表値を隣接する列と比較すればよい。
【0067】
本装置においては、動き画像領域を自動的に検出することができる。また、その判断も数フレームで検出可能である。したがって、モニタ上で動画領域自体が動的に変動する場合であっても、ほぼリアルタイムで動画領域を検出できる。
【0068】
(2.第2の実施形態)
上記実施形態では、検出対象が1つの場合を例として説明した。第2実施形態では、決定した動き画像領域についてさらに、
図3ステップS7の処理を繰り返すことにより、
図14に示すような動き画像領域201〜207が複数存在する場合でも、動き画像領域を検出することができる。
【0069】
図3ステップS7の処理を一度行うと、
図15に示すような、動き画像領域301〜304が決定される。領域207については閾値thw以上の幅を有しないとして動き画像領域としては検出されない。
【0070】
この状態では、動き領域301には、本来、動き画像領域でない領域も含まれている。かかる場合があるので、CPU23は、領域301〜304をそれぞれ全体の画像領域とみなして、再度、動き画像領域の検出を行う。これにより、例えば、領域301の場合、ブロック座標(y1,x1)(y3,x11)で定義される領域311と、ブロック座標(y1,x12)(y3,x13)で定義される領域312が検出される。他の領域302〜304についても同様である。
【0071】
領域311については、同様にして領域311を全体の画像領域とみなして再度、動き画像領域の検出を行う。これにより、ブロック座標(y1,x1)(y11,x11)で定義される領域が検出される。領域312についても同様である。
【0072】
かかる繰り返し検出は、それ以上分割できなくなるまで行ってもよいし、予め繰り返し検出の上限回数を決めておいてもよい。
【0073】
(3.第3の実施形態)
第1,第2の実施形態においては、ブロック単位で検出した後、外周の四辺を構成する単位ブロックについて、行方向であれば各行について代表値を求めて、隣接する行と異なる場合に、境界であると判断している。列方向についても同様である。かかる検出については、以下のように境界判断をすることもできる。
図17を用いて説明する。
【0074】
CPU23は、上側ブロックのうち端部を除いたブロックを抽出する(
図17ステップS100)。この場合、
図13に示すブロック(4,3)〜(4,7)の計5つのブロックが抽出される。このように端部を除くのは、両端部のブロックには一部エッジがない可能性があるからである。ただし、かかる端部ブロックについても採用するようにしてもよい。
【0075】
CPU23は、処理行番号r、処理画素番号gを初期化し(
図17ステップS101、S102)、行番号”0”の抽出したブロックのg番目の画素が横エッジ画素(行方向エッジ)であるか否か判断する(ステップS103)。横エッジ画素か否かについては隣接する画素との輝度差に基づいて決定すればよい。本実施形態においては、
図18Aに示すようなフィルタおよび演算式を採用した。
【0076】
CPU23は、P番目の画素が横エッジ画素であると判断すると、総数Etをインクリメントする(
図17ステップS105)。CPU23は1ライン全て終了したか否か判断し(ステップS107)、終了していなければ、処理画素番号gをインクリメントし(ステップS109)、ステップS103?ステップS107を繰り返す。
【0077】
CPU23は、1ラインの全画素について、横エッジか否か判断すると、そのラインにおける横エッジの総数Etがあらかじめ設定した閾値thsより大きいか否か判断する(ステップS111)。これは、動画領域内にも、輪郭として横エッジの画素は存在するので、それを排除するためである。CPU23は横エッジの総数Etが閾値thsより大きい場合には、それを境界とする(ステップS113)。これにより、横エッジの集合が閾値thsを超える境界を得ることができる。
【0078】
なお、閾値thsは固定閾値でもよいし、また、あらかじめ比率を設定しておき、検出した領域の大きさ(ブロック数)に応じて、計算するようにしてもよい。
【0079】
CPU23は、ステップS111にて、”NO"の場合は、全行終了したか否か判断する(ステップS113)。全行終了していなければ、CPU23は処理行番号rをインクリメントと、ステップS102〜ステップS111を繰り返す。
【0080】
このようにして、1画素単位で、境界を判断することができる。下部のブロックにおける1画素単位の境界についても同様である。
【0081】
左右の境界については、最右段および最左段に位置する単位ブロックについて、同様に、
図18Bに示すフィルタおよび演算式を用いて、縦エッジ(列方向エッジ)を検出すればよい。
【0082】
本実施形態においては、縦エッジおよび横エッジの総数で境界判断を行っている。したがって、乱雑な背景上の動画領域であっても検出が可能である。また、検出精度向上、動画領域の揺れが低減する。
【0083】
本実施形態においては、境界を求める場合に、
図11で求めたブロックのうち、端部を除いた全ブロックの画素を採用したが、さらにその一部で判断するようにしてもよい。
【0084】
本実施形態においては、閾値thsとの比較は1ラインの総計としたが、エッジ画素が所定数以上連続する場合に、境界であると判断するようにしてもよい。さらに、自然画においてもエッジ画像が存在する場合もある。したがって、一定数以上連続していないエッジについては、総数の計算から除去するようにしてもよい。
【0085】
本実施形態においては、前記矩形領域を決定し、その外周にあたるブロックについての1画素単位の境界を求める場合について適用したが、動き推定一般、さらに他の分野にも適用可能である。また、1画素単位でなく複数画素単位(例えば2*2画素単位)の境界を求めるようにしてもよい。
【0086】
本実施形態においては、エッジ画素を抽出して境界を決定するようにしたが、対象のブロック内の各画素について、異なるフレーム間で動きベクトルがある画素か否か判断し、動きベクトルが検出できる画素と、検出できない画素の境目が境界であると判断するようにしてもよい。
【0087】
なお、特定のフレームでは、動画領域と背景との間に輝度差がほとんどない場合もある。たとえば、
図19Aに示すフレームtでは、背景と動画領域との境界部分に輝度差がほとんどない。このようなフレームで1のフレームだけでは境界検出ができないおそれがある。そこで、各フレームの境界を順次記憶しておき、あるフレームでは境界を検出できない場合、蓄積してる境界を採用するようにしてもよい。本実施形態においては、蓄積するフレーム数としては、十数フレーム分とした。
【0088】
本実施形態においては、あらかじめ、複数画素で構成されたブロック単位での検出(以下、荒処理という)を行う場合について説明したが、かかる処理なしに矩形の境界を判定することもできる。
【0089】
さらに、複数のフレームではなく、静止画における矩形の境界決定装置として適用可能である。
【0090】
(4.第4の実施形態)
上記で説明したフレーム間の画素情報に基づいて動画領域か否か判断すると、特定の矩形領域でテキストデータをスクロールする場合にも、誤って動画領域と判断するおそれがある。以下に示すように、スクロール判定を行い、スクロール処理である場合には、境界判断をしないようにしてもよい。
【0091】
テキストデータについては、横書きの場合、文字と文字の間に行間が存在する。すなわち、1ラインごとに見ていくと、文字が記載される領域にはエッジ画素が多数存在し、行間になると全くエッジ画素が存在しないという特質を有する。したがって、かかる特質が存在するかで、動画領域か否かを区別することができる。
【0092】
CPU23は、対象行番号Qおよび合致行数kを初期化し(
図20ステップS121)、抽出したブロックのQ行目の総エッジ画素数Enqを計測する(ステップS123)。エッジ画素か否かについては周りの画素との輝度差に基づいて決定すればよい。
【0093】
CPU23は、総エッジ画素数Enqが閾値thmよりも大きいとともに、直前の総エッジ画素数En(q-1)が、閾値thnよりも小さいか否か判断する(ステップS125)。CPU23はステップS125での判断が”yes”である場合には、合致行数kをインクリメントする(ステップS127)。
【0094】
CPU23は、すべての行について判断済みか否かを判断する(ステップS131)。すべての行について判断済みでない場合には、CPU23は処理行番号Qをインクリメントし(ステップS133)、ステップS123?ステップS127を繰り返す。
【0095】
CPU23は、ステップS131にてすべての行について判断済みと判断すると、前記合致行数kが閾値thgよりも大きいか判断する(ステップS135)。合致行数kが閾値thgよりも大きい場合には、スクロールによる動きであると判断する(ステップS137)。
【0096】
かかるスクロール判定は、
図3ステップS7とステップS9の間で行い、スクロール判定であると判断した場合には、ステップS9の処理を行わないようにすればよい。
【0097】
これにより、ブラウザ内の文字をスクロールして動かす場合に、その領域が動画と判定されることを防ぐことができる。
【0098】
なお、前記スクロール判定は、当該領域における全行でなく、一部の行で判断してもよい。
【0099】
本実施形態においては、テキストデータが横書きの場合について説明したが、縦書きであっても同様に判定可能である。なお、スクロール判定はこのやり方に限定されず、周知のスクロール判定であってもよい。
【0100】
また、動画領域判断におけるスクロール判定に適用した場合について説明したが、スクロール判定一般に適用可能である。
【0101】
また、スクロールでなくとも、特定領域がテキスト領域であるか否かが判定できる。この特定領域は動画領域検出による動画領域に限らず静止画・動画を問わず画像内の特定の領域であってもよい。
【0102】
この実施形態における矩形動き画像領域決定方法は、行方向および列方向に画素が行列配置された表示領域のうち、その一部に表示される矩形動き画像領域を決定する矩形動き画像領域決定方法であって、前記表示領域を、所定数の画素で構成される単位ブロックに分割するとともに、各単位ブロックが、動きが存在する動き単位ブロックであるか否か判断する動き単位ブロック判断ステップ、 前記単位ブロックのうち、最上段に位置する各単位ブロックと同じ列に属する単位ブロックの集合を列ブロックとして定義し、各列ブロックに少なくとも1以上の動き単位ブロックが存在する場合には当該列ブロックを動き列ブロックとして決定する動き列ブロック決定ステップ、前記単位ブロックのうち、最左端段に位置する各単位ブロックと同じ行に属する単位ブロックの集合を行ブロックとして定義し、各行ブロックに少なくとも1以上の動き単位ブロックが存在する場合には、当該行ブロックを動き行ブロックとして決定する動き行ブロック決定ステップ、前記動き行ブロックおよび前記動き列ブロックの双方に属する単位ブロックで特定される矩形領域を矩形動き画像領域として決定する第1矩形動き画像領域決定ステップ、前記矩形動き画像領域を構成する単位ブロックの内、外周の四辺を構成する単位ブロックについて、これらの単位ブロック内の各画素に基づき、前記矩形動き画像領域内のエッジで定義される領域を前記矩形動き画像領域とする第2矩形動き画像領域決定ステップを備えている。
【0103】
このように、前記単位ブロック毎に動き単位ブロックか否か判断し、前記動き行ブロックおよび動き列ブロックを決定し、その双方に属する単位ブロックで特定される矩形領域を矩形動き画像領域として決定することにより、動き画像領域を決定することができる。また、その領域を構成する単位ブロックの内、外周の四辺を構成する単位ブロックについて、これらの単位ブロック内の各画素に基づき、前記矩形動き画像領域内のエッジで定義される領域を前記矩形動き画像領域とすることにより、より精密な動き画像領域を決定することができる。
【0104】
この実施形態における矩形動き画像領域決定方法は、前記第2矩形動き画像領域決定ステップでは、前記外周の四辺を構成する単位ブロックについて、これらの単位ブロック内の行方向については、各行の代表画素値が異なる行を、列方向については各列の代表画素値が異なる列を、前記矩形動き画像領域の境界として決定する。したがって、行毎の代表画素値に基づいて境界を決定することができる。
【0105】
この実施形態における矩形動き画像領域決定方法は前記第2矩形動き画像領域決定ステップでは、前記外周の四辺を構成する単位ブロックについて、これらの単位ブロック内の各画素について、異なるフレーム間で動きが存在する動き画素か否かを判断して、前記矩形動き画像領域の境界を決定する。したがって、各画素の動きベクトルに基づいて境界を決定することができる。
【0106】
この実施形態における矩形動き画像領域決定方法は前記第2矩形動き画像領域決定ステップでは、前記外周の四辺を構成する単位ブロックについて、これらの単位ブロック内の各画素について、行方向エッジおよび列方向エッジを構成する画素を抽出し、各行についての行方向エッジを構成する画素の総数、各列について列方向エッジを構成する画素の総数に基づき前記矩形動き画像領域の境界を決定する。したがって行方向エッジおよび列方向エッジに基づいて境界を決定することができる。
【0107】
この実施形態における矩形動き画像領域決定方法は、前記第2矩形動き画像領域決定ステップの前に、決定した矩形動き画像領域がスクロールによってフレーム間で画像が異なるか否かを判定するスクロール該当判定をする。したがって、スクロールに該当するのかそうでないかを区別することができる。また、スクロールであると判断した場合には、前記第2矩形動き画像領域決定ステップを行わない。したがって、スクロールに該当する場合に迅速な判断が可能となる。
【0108】
この実施形態における矩形動き画像領域決定方法においては、前記スクロール該当判定は、決定した矩形動き画像領域の各画素について、周辺画素との画素値の差に基づいて、エッジであるか否かを判断し、前記エッジではない画素が行方向または列方向に所定数以上存在する行または列について、文字隙間存在領域として認識し、前記決定した矩形動き画像領域に対する前記文字隙間存在領域の割合に基づいてスクロール該当判定をする。したがって、文字を含む画像をスクロールしている場合を、確実に判断することができる。
【0109】
この実施形態における矩形動き画像領域決定方法においては、第1矩形動き画像領域決定ステップにて決定した矩形動き画像領域について、第2矩形動き画像領域決定ステップの前に、前記動き列ブロック決定ステップ、前記動き行ブロック決定ステップ、および前記第1矩形動き画像領域決定ステップを繰り返し実行する。したがって、検出する動き画像領域が複数ある場合でも、正確に検出が可能となる。
【0110】
この実施形態における矩形動き画像領域決定方法は、前記第1矩形動き画像領域決定ステップでは、決定した矩形領域について、さらに、前記動き列ブロック決定ステップ、および前記動き行ブロック決定ステップ、繰り返し実行する。したがって、検出する動き画像領域が複数ある場合でも、正確に検出が可能となる。
【0111】
この実施形態におけるスクロール領域判定装置は、画面内の判定対象領域がスクロール領域か否かを判定するスクロール領域判定装置であって、前記判定対象領域の各画素について、周辺画素との画素値の差に基づいて、エッジであるか否かを判断するエッジ画素判断手段、同一行または同一列に、前記エッジではない画素が所定数以上存在する行または列を文字隙間存在領域として判断する文字隙間存在領域判断手段、前記判定対象領域に対する前記文字隙間存在領域の割合に基づいてスクロール領域か否かを判断するスクロール領域判断手段、を備えている。
【0112】
したがって、文字を含む画像をスクロールしている場合を、確実に判断することができる。
【0113】
この実施形態における境界決定装置は、1画面に存在する矩形領域の境界を決定する境界決定装置であって、判定対象画素における各画素の画素値に基づいて、エッジを構成する画素を判断するエッジ画素判断手段、行方向エッジを構成する画素を行方向エッジ画素として抽出し、前記行方向エッジの総数を各行について演算し、各行の前記行方向エッジの総数に基づいて、行方向の境界を決定する行方向境界決定手段、列方向エッジを構成する画素を列方向エッジ画素として抽出し、前記列方向エッジの総数を各列について演算し、各列の前記列方向エッジの総数に基づいて、列方向の境界を決定する列方向境界決定手段、前記決定した行方向境界および前記列方向境界を、前記矩形領域の境界として決定する矩形領域決定手段、を備えている。
【0114】
したがって行方向エッジおよび列方向エッジに基づいて境界を決定することができる
この実施形態における境界決定装置は、前記エッジ画素判断手段が判定対象とする画素を決定する手段であって、以下の手段を有する荒領域決定手段を備えている。
【0115】
1)行方向および列方向に画素が行列配置された表示領域を、所定数の画素で構成される単位ブロックに分割するとともに、各単位ブロックが動きが存在する動き単位ブロックと判断する動き単位ブロック判断手段、
2)前記単位ブロックのうち、最上段に位置する各単位ブロックと同じ列に属する単位ブロックの集合を列ブロックとして定義し、各列ブロックに少なくとも1以上の動き単位ブロックが存在する場合には当該列ブロックを動き列ブロックとして決定する動き列ブロック決定手段、
3)前記単位ブロックのうち、最左端段に位置する各単位ブロックと同じ行に属する単位ブロックの集合を行ブロックとして定義し、各行ブロックに少なくとも1以上の動き単位ブロックが存在する場合には、当該行ブロックを動き行ブロックとして決定する動き行ブロック決定手段、
4)前記動き行ブロックおよび前記動き列ブロックの双方に属する単位ブロックで特定される矩形領域を矩形動き画像領域として決定する第1矩形動き画像領域決定手段、
5)前記矩形動き画像領域を構成する単位ブロックの内、外周の四辺を構成する単位ブロックに属する画素を判定対象として決定する対象画素決定手段。
【0116】
したがって、より迅速に境界判断が可能である。
【0117】
(5. 第5の実施形態)
上記実施形態により外形が矩形の動き境界(枠)を決定できる。したがって、静止画の領域と動画の領域が併存するような表示状態、たとえば、ブラウザで動画投稿サイトを表示するような場合に、動き領域を動的に検出して、静止画領域とは異なる表示手法(たとえば、エッジ強調処理の変更など)を採用することができる。このように、動き領域を動的に検出することにより、ユーザがブラウザのウインドウ位置を移動、さらには、拡大等、変更した場合でも、動き領域を自動的に追従させることができる。
【0118】
しかしながら、かかる自動追従については、たとえば、下記のような問題が生ずる場合もある。
【0119】
1)ユーザの操作等により、動きを一時停止した場合は通常、動き領域が検出されなくなり、再生を開始すれば再度検出される。かかる一時停止および再度の再生時に、その領域について、前記エッジ強調処理が変更されることとなるので、ユーザが違和感を感じる場合がある。
【0120】
2)動き領域においても、アニメの口パクのように、その領域の一部だけが動き領域で、他はほとんど動きがない場合がある。かかる状態が一定期間続くと、当該一部領域のみが動き領域として判定し、その領域だけが前記エッジ強調処理などがされてしまうおそれがある。
【0121】
この実施形態で開示した発明は、下記の処理を行うことにより動的に矩形の動き領域を検出する動き領域検出装置において、特殊状況下でも適切な矩形の動き領域を検出する検出方法またはその装置を提供することができる。
【0122】
上記実施形態における動き領域検出処理と、この実施形態における補完決定処理の関係を
図21に示す。このように、補完決定処理(ステップS155)は、動き領域検出処理(ステップS153)結果では、動き領域が検出できないまたは検出したものが適切でない場合を補完する処理である。
【0123】
(5.1 一時停止する場合)
かかる補完決定処理を含めた全体の処理について、
図21および
図22を用いて説明する。以下では、時刻tに動きを一時停止させて、その後、時刻t+5でブラウザのウインドウを最小化して、そのままにした場合を例として説明する。
【0124】
CPU23は、次のフレームについてのデータを受け取ると、
図21ステップS153の動き領域検出処理をおこなう。動き領域検出処理では、時刻t-1と時刻tにおけるフレーム間で動き検出がされる。この場合、時刻tにて再生が一時停止させられているので、両フレーム間で差分が存在するので、動き領域が検出される。
【0125】
CPU23は、
図21ステップS155ヘ進む。ステップS155の詳細を
図22に示す。
【0126】
CPU23は、現時点、すなわち、時刻tにおいて、直前まで検出されていた動き領域が存在するか否か判断する(
図22ステップS201)。この場合、直前である時刻t-1においては、既に動き領域が存在するので、CPU23は、時刻tにおいて、動き領域が検出されたか否か判断する(ステップS203)。
【0127】
CPU23は、この場合、時刻tでは、
図21ステップS153にて、動き領域が検出されているので、検出された動き領域が直前まで検出されていた動き領域の内側か否か判断する(ステップS221)。この場合、検出された動き領域は直前まで検出されていた動き領域と同じであるので、前記内側の領域ではないので、補完決定処理を終了する。
【0128】
補完決定処理が終了すると、CPU23は、次のフレームについてのデータを受け取った否か判断する(
図21ステップS151)。
【0129】
CPU23は、次のフレームについてのデータを受け取ると、
図21ステップS153の動き領域検出処理をおこなう。動き領域検出処理では、時刻t+1において動き領域が検出されるか否か判断する。具体的には、時刻tと時刻t+1におけるフレーム間で動き検出がされる。この場合、時刻tにて再生が一時停止させられているので、時刻tと時刻t+1の両フレーム間で差分が存在せず、動きが検出されない。
【0130】
CPU23は、補完決定処理を行う(
図21ステップS155)。すなわち、時刻t+1にて、直前まで検出されていた動き領域が存在するか否か判断する(
図22ステップS201)。この場合、直前の時刻tにおいては、動き領域が存在するので、CPU23は、時刻t+1において、動き領域が検出されたか否か判断する(ステップS203)。
【0131】
この場合、
図21ステップS153にて、動き領域が検出されていないので、CPU23は、時刻t+1のフレームにおいて、直前まで検出されていた動き領域に、枠が存在するか否か判断する(
図22ステップS205)。枠検出は、たとえば、枠の内と外で、画素値を比較して所定以上の差分がある場合には、エッジがあると判断し、エッジの総数が閾値を超えれば枠が存在すると判断するようにすればよい。なお、枠の存在の検出手法は、これ以外の周知の手法を採用してもよい。
【0132】
この場合、単に、再生が一時停止されている状態なので、時刻t+1のフレームにおいて、直前まで検出されていた動き領域には、エッジが存在する。したがって、CPU23は、直前まで検出されていた動き領域をそのまま保持する(ステップS211)。
【0133】
このように、直前のフレームで検出されていた領域の座標を記憶しておき、これを枠候補領域情報としてその後のフレームに与えることにより、上記第1実施形態のように、複数フレーム間で比較することなく、1のフレームに枠が存在するか否かを判断可能となる。
【0134】
これにより、動画領域の再生を停止した場合でも、
図21ステップS153の動き領域検出処理では検出できなかった動き領域を、検出することができる。
【0135】
CPU23は、次のフレームの画像を受け取るか否か判断し(
図21ステップS151)、これを受け取った場合には、ステップS153、ステップS155の処理を繰り返す。
【0136】
具体的には、
図21ステップS153では動き領域は検出できず、時刻t+2〜時刻t+4までは、CPU23は、
図22ステップS201−ステップS203−ステップS205−ステップS211に進み、直前まで検出されていた動き領域が保持される。
【0137】
この場合、時刻t+5においては、ウインドウが閉じられている。したがって、
図21ステップS153では動き領域は検出できず、ステップS155に進む。ステップS155では、CPU23は、ステップS201−ステップS203−ステップS205と進み、ステップS205にて、直前まで検出されていた動き領域の座標には、枠が存在しないと判断してステップS207に進む。CPU23は、枠が存在しない場合が複数回連続で続いてるか否か判断する(ステップS207)。本実施形態においては、ステップS207における回数を「5」とした。この場合は、枠が存在しない場合が複数回連続で続いていないので、CPU23は、直前まで検出されていた動き領域をそのまま保持する(ステップS211)。
【0138】
CPU23は、次のフレームの画像を受け取るか否か判断し(
図21ステップS151)、これを受け取った場合には、ステップS153、ステップS155の処理を繰り返す。
【0139】
具体的には、
図21ステップS153では動き領域は検出できず、ステップS155にて、時刻t+6〜時刻t+8までは、CPU23は、
図22ステップS201−ステップS203−ステップS205−ステップS207−ステップS211と進み、直前まで検出されていた動き領域を保持する。
【0140】
以下同様にして、
図21ステップS153では動き領域は検出できず、ステップS155にて、時刻t+9では、CPU23は、
図22ステップS201−ステップS203−ステップS205−ステップS207に進み、ステップS207にて、枠が存在しない場合が5回連続で続いてると判断して、直前まで検出されていた動き領域を破棄する(ステップS213)。
【0141】
このようにして、矩形の動き領域は存在するけど、再生を停止している場合でも、一定期間は当該領域を検出することができる。
【0142】
なお、本実施形態においては、
図22ステップS203にて、動き領域が検出されない場合に、ステップS205の処理をしている。これは、ステップS221以下の処理を行うかを条件分岐させる為である。したがって、一時停止か否かだけを判断するのであれば、ステップS201で「YES」の場合には、ステップS205へ飛ばすようにしてもよい。
【0143】
(5.2 内側領域となる場合)
以下では、動き領域において当該動き領域の一部だけが動き領域で、他はほとんど動きがないような場合の処理について説明する。以下では、上記と同様に、時刻t-20〜時刻tまでは動き領域全体が動いていたが、時刻t+1〜時刻t+6には、顔の一部のみが動いている場合を例として説明する。
【0144】
CPU23は、時刻tにおいて、
図21ステップS153の動き領域検出処理を行う。この場合、時刻tにて顔の一部のみが動いているので、
図23に示すように、一つ前のフレームの動き領域410と比べると小さな動き領域411が検出される。
【0145】
CPU23は、
図21ステップS153に進む。具体的には、CPU23は、時刻tにおいて、直前まで検出されていた動き領域が存在するか否か判断する(
図22ステップS201)。
【0146】
この場合、直前である時刻t-1においては、
図23に示すように、動き領域が存在するので、CPU23は、時刻tにおいて、動き領域が検出されたか否か判断する(ステップS203)。この場合、動き領域が検出されているので、CPU23は、検出された動き領域が直前まで検出されていた動き領域の内側であるか否か判断する(ステップS221)。
【0147】
この場合、
図23に示すように、時刻tで検出された動き領域411は、時刻t-1で検出された動き領域410に内包されている。したがって、CPU23は、連続して内側を検出した回数が閾値以上か否か判断する(ステップS223)。本実施形態においては、ステップS223における回数を「5」とした。
【0148】
この場合、かかる回数は連続していない。したがって、閾値未満と判断して、CPU23は直前まで検出されていた動き領域の保持時間が閾値以上か否か判断する(ステップS225)。本実施形態においては、ステップS225における保持時間の閾値を3秒とした。
【0149】
この場合、時刻t-20〜時刻tまでは動き領域全体が動いていたので、CPU23は、直前まで検出されていた動き領域の保持時間が閾値を越えていると判断して、直前まで検出されていた動き領域をそのまま保持する(ステップS211)。これにより、動き領域において当該動き領域の一部だけが動き領域で、他はほとんど動きがないような場合でも、動きのある領域の誤検出を防止できる。
【0150】
このように、ステップS225にて、保持時間が閾値以上である場合には、直前まで検出されていた動き領域410を保持する。これにより、誤検出された場合を排除することができる。すなわち、同じ位置で同じ大きさで、動き領域が予め決められた時間保持されており、たまたまそのうちの内側が検出された場合には、誤検出と認定して、ステップS211の処理を実行する。
【0151】
CPU23は、以下のフレームについても同様の処理を実行する。このようにして、検出された動き領域が直前まで検出されていた動き領域の内側である場合にも、元の動き領域を保持することができる。
【0152】
なお、ステップS225にて直前まで検出されていた動き領域の保持時間が閾値を越えていない場合には、直前まで検出されていた動き領域の四隅近傍とも輝度変化なしか否か判断する(ステップS227)。
【0153】
この場合、動き領域において当該動き領域の一部だけが動き領域で、他はほとんど動きがないような場合であるので、輝度変化無しと判断して、ステップS229に進み、枠検出判断を行う。ステップS229の処理はステップS205と同様である。この場合、動き領域には枠は存在するので、ステップS211に進む。
【0154】
このように、単に、一部の領域は動きがあるが、他の部分はたまたま静止しているに過ぎず、直前まで検出されていた動き領域の保持時間が閾値を越えていないような場合でも、CPU23は、直前まで検出されていた動き領域をそのまま保持することができる(ステップS211)。
【0155】
そして、かかる処理が続く場合には、ステップS225にて保持時間が閾値以上となるので、そのままステップS211に進む。
【0156】
ステップS227の意義について説明する。
図23に示すような、検出された動き領域が直前まで検出されていた動き領域の内側である場合としては、動き領域において当該動き領域の一部だけが動き領域で、他はほとんど動きがないような場合以外にも、動き領域の一部に他のウインドウが重なって動き領域が隠れてしまった場合もある。このような場合には、隠されている領域は少なくとも1つは検出された領域の四隅のいずれかを含み、かつ、輝度が変化する。したがって、直前まで検出されていた動き領域の四隅近傍の少なくとも1つに輝度変化がある場合には、ステップS211に進み、そうでない場合にはステップS229の処理を行う。
【0157】
すなわち、動き領域の一部に他のウインドウが重なって動き領域が隠れてしまった場合には、ステップS229にて、直前まで検出されていた動き領域に枠が存在しないと判断されて、検出した動き領域を新しい動き領域とする(ステップS231)。なお、枠を検出する閾値を調整することにより、どの程度重なればよいかを調整できる。
【0158】
なお、ステップS227にて1箇所以上輝度変化がなかった場合、ステップS229に進むことなく、ステップS231に進むようにしてもよい。
【0159】
つぎにCPU23は、ステップS151にて次のフレームについてのデータを受け取った否か判断する(
図21ステップS151)。受け取るとステップS153,ステップS155の処理を繰り返す。
【0160】
なお、ステップS223にて、連続して内側を検出した回数が閾値以上である場合には、ステップS225およびステップS227の判断を行わずに、ステップS229の判断を行う。これにより、内側を繰り返し検出するような場合には、ステップS229の枠判断を行うことができる。
【0161】
なお、ステップS227,ステップS229、ステップS231は、以下のような効果を奏する。動き領域検出初期は、結果の信頼度は比較的低い。なぜなら、マウスポインタやプログレスバーの移動等によって誤って大きく検出されることが多いからである。したがって、動き領域を検出して間もない場合は、現在の検出領域の4 隅の4箇所のうち1箇所も輝度変化がなかった場合で、かつ前記枠が存在していなかった場合に、検出した内側領域を動き領域として再設定する。
【0162】
また、本実施形態においては、ステップS227の判断基準として、前記四隅の少なくとも1カ所で判断するようにしたが、かかる4カ所に加えて、中央1カ所の計5カ所で判断するようにしてもよい。この場合、四隅の少なくとも1カ所に加えて、さらに、中央で輝度変化がないか判断するようにすればよい。
【0163】
また、ステップS221にて、検出された動き領域が直前まで検出されていた動き領域の内側でない場合には、動き領域が移動、または拡大等がなされた場合なので、本件のような直前まで検出されていた動き領域を保持する処理を行わない。すなわち、
図21ステップS153の通常の動き検出処理で検出された領域が、動き領域として検出される。
【0164】
なお、ステップS205、ステップS229において直前まで検出されていた動き領域に枠が存在するかではなく、たとえば、動画の再生位置を示すプログレスバー、再生時間を示すタイマーが存在するかを判断するようにしてもよい。このように、動き領域には存在する領域がある場合には、直前まで検出されていた動き領域が検出領域であると判断することができる。
【0165】
また、直前まで検出されていた動き領域に枠があるか否かを、エッジ数で判断するのではなく、ヒストグラムで判断するようにしてもよい。
【0166】
図24に、
図21、
図22の処理をハードウェアで実現した場合のブロック図を示す。動き領域座標検出器601は、時刻t-1と時刻tの画像を用いて時刻tの動き領域候補(1)候補を出力する。判定器603は、この時刻tの動き領域候補(1)と後述する時刻tの動き座標の候補(2)から、いずれか選択して、時刻tにおいて、時刻tの動き領域を出力する。保持器604は、この時刻tの動き領域(座標)を保持させておき、時刻t+1において、これを時刻tの動き座標として、指定領域特徴検出器605に与えるとともに、時刻t+1の動き座標の候補(2)として自らにも、与える。
【0167】
指定領域特徴検出器605は、時刻t+1において、判定器603から与えられた時刻tの動き座標を、時刻tおよび時刻t+1の画像に適用して、時刻tの動き座標周辺の特徴データd(t)、および時刻t+1の動き座標周辺の特徴データd(t+1)を演算して、判定器603に与える。
【0168】
判定器603は、特徴データd(t+1)から枠が存在するか否か判断する。また特徴データd(t)および特徴データd(t+1)から、四隅の輝度変化があるか(
図22ステップS227)の判断を行う。
【0169】
このようにして、時刻tにおいて、出力した動き座標を保持しておき、時刻t+1において与えられた画像に適用することにより、
図22の判断が可能となる。
【0170】
この実施形態では、上記第1〜第4実施形態の外形矩形領域の検出した場合について説明したが、その以外の手法でも、外形矩形領域の検出手法と組み合わせることは可能である。
【0171】
なお、表示領域の一部に表示される矩形動き画像領域について、時刻tのフレームと、時刻t+1のフレームの画像の差分に基づいて、外形が矩形の矩形動き画像領域の境界を決定する矩形動き画像領域決定方法としては、たとえば、下記ステップで実行することも可能である。前記表示領域を、所定数の画素で構成される単位ブロックに分割するとともに、各単位ブロックが、動きが存在する動き単位ブロックであるか否か判断する動き単位ブロック判断ステップ、前記各単位ブロックについて、各行が配置されている方向である列方向について、少なくとも1の動き単位ブロックを含む場合には、当該行は動き行ブロックであると決定する動き行ブロック決定ステップ、前記各単位ブロックについて、各列が配置されている方向である行方向について、少なくとも1の動き単位ブロックを含む場合には、当該列は動き列ブロックであると決定する動き列ブロック決定ステップ、前記動き行ブロックのうち、隣接する動き行ブロックが閾値以上存在する場合、これらの行ブロックの集合行ブロックの外形行ブロック直線を定義し、前記動き列ブロックのうち、隣接する動き列ブロックが閾値以上存在する場合、これらの列ブロックの集合列ブロックの外形列ブロック直線を定義し、前記外形行ブロック直線および前記外形列ブロック直線で囲われた矩形領域を矩形動き画像領域として決定する第1矩形動き画像領域決定ステップ。
【0172】
上記実施形態では、動き領域座標検出器601と指定領域特徴検出器605に同じフレームの画像を与えるようにしたが、動き領域座標検出器601とは、異なるフレームの画像を指定領域特徴検出器605に与えるようにしてもよい。具体的には、時刻t-1と時刻tのフレームから求めた動き領域と、時刻tと時刻t+1のフレームから求めた動き領域とで、内包関係を判断したが、かかる内包を判断するフレームとしては、時刻tと時刻t+nのフレームから求めた動き領域と、時刻t+mと時刻t+pのフレームから求めた動き領域とから判断するようにしてもよい。ただし、この場合、n、m、pは、n<m、p<mを満たす、整数である。
【0173】
また、指定領域特徴検出器605には、時刻t+aと時刻t+bのフレームをあたえるようにしてもよい。ただし、a、bは、m≧b、m≧a、a≠bを満たす整数である。
【0174】
(6.第6の実施形態)
上記第4の実施形態では、特定の動画領域について、スクロール判定を行い、文字領域をスクロールしている場合には、境界判定を行わないようにしている。かかるスクロール判定は、特定領域がテキスト領域であるか否かの判定に用いることができる。
【0175】
この実施形態では、特定領域がテキスト領域かの判定を別の手法で実施する場合について説明する。
【0176】
なお、同様にして、特定領域がスクロールしているのかの判定に用いることもできる。
【0177】
上記第4の実施形態では、各ラインについて1つ前のラインとのエッジ数の差が閾値を超える場合には、当該ラインを特徴ラインとして検出し、この検出した特徴ライン総数が閾値を超えると、この特定矩形領域が文字領域であると判断している。しかし、
図25に示すような自然画が混在する文字混在領域の場合には、誤検出のおそれがある。なぜなら、自然画の領域においては、1つ前のラインとのエッジ数の差がなく、他の領域だけで、特徴ラインか否かをの判断をしなければならないからである。この実施形態においては、このような二つラインのエッジ差ではなく、各ラインに最大連続無エッジ数が、閾値以上あるか否かで文字混在領域か否かを判断するようにした。以下、
図25に示すような、文字と自然がが混在する矩形領域が抽出されている場合を例として、
図26を用いてその処理について説明する。
【0178】
CPU23は、特徴ライン総数kを初期化し、(
図26ステップS221)、連続無エッジ数rを初期化する(ステップS223)。
【0179】
CPU23は、連続無エッジの開始か否か判断する(ステップS224)。連続無エッジの開始か否かは、その画素が当該行において、初めてエッジでない画素か、またはエッジ画素から非エッジ画素になったかを判断すればよい。なお、各画素がエッジか否かについては、既に説明したように、周りの画素との輝度差に基づいて決定すればよい。
【0180】
CPU23は、ステップS224での判断が”yes”である場合には、連続無エッジ数rをインクリメントし(ステップS225)、連続無エッジの終了か否か判断する(ステップS226)。連続無エッジの終了か否かは、非エッジ画素からエッジ画素になったか、または当該ラインにおける最終画素が非エッジ画素であるかを判断すればよい。
【0181】
CPU23は、現在のr数を候補として記憶する(ステップS227)。
【0182】
CPU23は、当該ラインにおける画素を全て判断したか否か判断する(ステップS231)。全て判断済みでなければ、CPU23は、ステップS223?ステップS227を繰り返す。
【0183】
なお、ステップS224での判断が”no”である場合には、ステップS224の処理を繰り返す。
【0184】
これにより、各行について、連続無エッジ数の候補が1または2以上、記憶される。
【0185】
CPU23は、ステップS231にて、当該行における全画素について判断済みであると判断すると、候補のうち、最大値を抽出し(ステップS233)、さらに、全候補を消去する。CPU23は、抽出した最大値が、閾値よりも大きいか判断する(ステップS234)。
【0186】
本実施形態においては、特定領域における横方向の画素数の40%以上を、ステップS234における閾値としたがこれに限定されない。
【0187】
これにより、例えば、
図25における行L1は、特徴ラインとして判断される。これに対して、行L2は、特徴ラインとしては判断されない。
【0188】
CPU23は、前記最大値が閾値よりも大きい場合には、特徴ライン総数kをインクリメントする(ステップS235)。CPU23は、すべての行について判断済みか否かを判断する(ステップS241)。すべての行について判断済みでない場合には、CPU23はステップS223以下を繰り返す。
【0189】
CPU23は、ステップS131にてすべての行について判断済みと判断すると、文字領域か否か判断する(ステップS243)。
【0190】
本実施形態においては、前記特徴ライン総数kが閾値thkよりも大きい場合には、当該領域は、文字領域だと判断するようにした。閾値thkは適宜決定すればよいが、本実施形態においては、当該領域における全行数の30%とした。
【0191】
本実施形態においては、連続無エッジ数の最大値が前記閾値以上である場合に、当該行を特徴行として判断するようにしている。これにより、一部に自然画部分を含むような画像データであっても、テキストが含まれている場合には、行間が存在するために、最大連続無エッジ数は十分存在することとなる。このように、最大連続無エッジ数に着目することにより、
図25のように、横方向に、自然画と、比較的平坦な背景上に文字が存在する画像、が混在する画像であっても、これを誤って、非文字領域として判断することがない。
【0192】
かかる文字領域判定により、前記第4実施形態と同様に、ブラウザ内の文字をスクロールして動かす場合に、その領域が動画と判定されることを防ぐこともできる。その場合、前記スクロール判定は、当該領域における全行でなく、一部の行で判断してもよい。
【0193】
本実施形態においては、テキストデータが横書きの場合について説明したが、縦書きであっても同様に判定可能である。また、言語は問われない。
【0194】
なお、スクロール判定はこのやり方に限定されず、周知のスクロール判定であってもよい。
【0195】
また、動画領域判断におけるスクロール判定に適用した場合について説明したが、スクロール判定一般に適用可能である。
【0196】
この実施形態にかかるスクロール領域判定装置は、画面内の判定対象領域がスクロール領域か否かを判定するスクロール領域判定装置であって、前記判定対象領域の各画素について、周辺画素との画素値の差に基づいて、エッジであるか否かを判断するエッジ画素判断手段、同一行または同一列に、前記エッジではない画素が所定数連続して存在する行または列を文字隙間存在領域として判断する文字隙間存在領域判断手段、前記判定対象領域に対する前記文字隙間存在領域の割合に基づいてスクロール領域か否かを判断するスクロール領域判断手段、を備えている。
【0197】
したがって、文字を含む画像をスクロールしている場合を、確実に判断することができる。かかるスクロール判定手法は、本実施形態に開示した発明と任意に組み合わせることができる。
【0198】
この実施形態にかかる文字混在領域判定装置は、画面内の判定対象領域が文字混在領域か否かを判定する文字混在領域判定装置であって、前記判定対象領域の各画素について、周辺画素との画素値の差に基づいて、エッジであるか否かを判断するエッジ画素判断手段、同一行または同一列に、前記エッジではない画素が所定数連続して存在する行または列を文字隙間行または文字隙間列として判断する文字隙間領域判断手段、前記判定対象領域に対する前記文字隙間領域の割合に基づいて文字混在領域か否かを判断する文字混在領域判断手段、を備えている。
【0199】
したがって、文字混在領域を確実に判断することができる。かかる文字混在領域判定装置は、本実施形態に開示した矩形検出方法以外とも、任意に組み合わせることができる。
【0200】
また、本実施形態にかかるスクロール領域判定装置は、判定対象領域について、動画領域として候補判断されたあと、スクロール領域である場合には、前記判定対象領域は、動画領域ではないと判定する判定装置として、把握することができる。
【0201】
(7.他の実施形態)
本実施形態においては、画素値として輝度値を採用したが、RGBの値などであってもよい。
【0202】
本実施形態においては、
図5ステップS15において、第tフレームと第t+1フレームで動き画像領域を構成するブロックか否かを判断するようにしたが、時間的なズレがある複数のフレームであればこれに限定されず、例えば、第tフレームと第t+2フレーム間で動きがあるかを判断するようにしてもよい。また、2つのフレームで比較するのでなく、さらに前後フレームを加えて、判断するようにしてもよい。
【0203】
また、上記実施形態においては、動き領域座標検出器601に入力するフレーム画像と指定領域特徴検出器605に入力する画像は同じフレーム画像を採用したが、これには限定されない。例えば、動き領域座標検出器601には、第tフレームと第t+3フレームの画像を、指定領域特徴検出器605には、第t+1フレームと第t+2フレームの画像を与えるようにしてもよい。
【0204】
すなわち、動き領域座標検出器601には、第tフレームと第t+nフレームの画像を、指定領域特徴検出器605には、第t+aフレームと第t+bフレームの画像を与えるようにすればよい。ここで、a、b、nは、n≧b>a≧0を満たす、整数である。
【0205】
この場合、指定領域特徴検出器605は、時刻t+1において、判定器603から与えられた時刻tの動き座標を、時刻t+aおよび時刻t+bの画像に適用して、時刻tの動き座標周辺の特徴データd(t+a)、および時刻t+bの動き座標周辺の特徴データd(t+b)を演算して、判定器603に与える。
【0206】
判定器603は、特徴データd(t+b)から枠が存在するか否か判断する。また特徴データd(t+a)および特徴データd(t+b)から、四隅の輝度変化があるかの判断を行うようにすればよい。
【0207】
本実施形態においては、
図3ステップS9の境界線決定処理は任意であり、画素単位の境界線が不要な場合には行わなくてもよい。また,境界線決定処理においては、外周に位置する全ブロックについて1行全てまたは1列全ての画素値を全て用いたが、一部間引き処理、または代表値を採用することもできる。また、全てのブロックではなく、一部のブロックで判断するようにしてもよい。
【0208】
また、
図5ステップS15のように、過去の同位置の代表値を保持しておき比較するようにしてもよい。
【0209】
本実施形態においては、1ブロックを32*32画素で構成したが、これに限定されない。
【0210】
画素の平均値やハッシュ値でなく、いずれかの画素の値それ自体(例えば当該ブロックの左上隅の画素値)を用いる場合、
図3ステップS9の処理としては、その外周に1ブロック分、配置して、境界を求めるようにしてもよい。例えば、ステップS7の処理にて、7*5個のブロックを動き画像領域として検出した場合、その周りに1ブロック追加した9*7個のブロックで、ステップS9の処理を行う。
【0211】
本実施形態にかかる矩形動き画像領域決定装置を含むモニタまたはセットトップボックスとして構成することもできる。またこのセットトップボックスは、入力データの出力先モニタを切り替えるための切り替えハブとして構成してもよい。
【0212】
上記各実施形態においては、1画素精度の矩形動き画像領域の検出ができる。さらに、複数の矩形動き画像領域の判別も可能である。また、幅の小さな小領域動きの除去ができる。たとえばマウスポインタなど擬似動きの対策が可能である。また、画像内の動き領域、静止領域に対して、これらを区別できるので、最適な制御が可能である。
【0213】
上記実施形態においては、動き単位ブロックか否かの判断について、前記表示領域を、所定数の画素で構成される単位ブロックに分割するとともに、各単位ブロックに属する前記所定数の画素の画素値に基づいて、各単位ブロックの代表画素値を演算し、前記各単位ブロックについて、比較対象のフレームの同じ位置の単位ブロックの代表値と比較し、前記代表値が閾値を超える場合には、動きが存在する動き単位ブロックと判断するようにした。しかし、これに限定されず、各単位ブロックが動きが存在する動き単位ブロックか否かを判断できる手法を採用してもよい。たとえば、既に説明したように、所定数のフレームの同一ブロックの代表値を加算したもの同士の比較など、周知の動き単位ブロック判断ステップの採用が可能である。
【0214】
上記実施形態においては、
図1に示す機能を実現するために、CPU23を用い、ソフトウェアによってこれを実現している。しかし、その一部もしくは全てを、ロジック回路などのハードウェアによって実現してもよい。なお、プログラムの一部の処理を、オペレーティングシステム(OS)にさせるようにしてもよい。