JP2004179906A - 動きベクトル検出装置および動きベクトル検出方法 - Google Patents
動きベクトル検出装置および動きベクトル検出方法 Download PDFInfo
- Publication number
- JP2004179906A JP2004179906A JP2002342846A JP2002342846A JP2004179906A JP 2004179906 A JP2004179906 A JP 2004179906A JP 2002342846 A JP2002342846 A JP 2002342846A JP 2002342846 A JP2002342846 A JP 2002342846A JP 2004179906 A JP2004179906 A JP 2004179906A
- Authority
- JP
- Japan
- Prior art keywords
- motion vector
- reduced
- block
- composite block
- area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】動きベクトルの検出精度が高い動きベクトル検出装置を提供する。
【解決手段】動きベクトル検出装置は、縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出手段と、縮小動きベクトルに基づいて各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備しており、縮小動きベクトル検出手段は、縮小複合ブロックに配置された画素データと縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて縮小動きベクトルを検出し、差分値は、縮小複合ブロックにおける所定の領域に配置された画素データと縮小複合参照ブロックにおいて所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出される。
【選択図】 図3
【解決手段】動きベクトル検出装置は、縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出手段と、縮小動きベクトルに基づいて各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備しており、縮小動きベクトル検出手段は、縮小複合ブロックに配置された画素データと縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて縮小動きベクトルを検出し、差分値は、縮小複合ブロックにおける所定の領域に配置された画素データと縮小複合参照ブロックにおいて所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出される。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
本発明は、動きベクトルを階層的に検出する動きベクトル検出装置および動きベクトル検出方法に関する。
【0002】
【従来の技術】
これまでに、動画像の動きベクトルを検出する際に、動きベクトルの検出(探索)範囲の拡大と動きベクトルを検出するための演算量削減とを両立させることを目的として様々な動きベクトル検出方法が提案されてきた。
【0003】
このような動きベクトル検出方法の一つとして階層的動きベクトル検出方法がある。この階層的動きベクトル検出方法は、まず、1段目の動きベクトル検出として現在のフレームと参照フレームとのそれぞれにおいて縮小画像を生成し、この両縮小画像に基づいて縮小動きベクトルを検出する。その後、原画像(縮小前の通常画面同士)による2段目の動きベクトル検出として、前記1段目の縮小動きベクトルを拡大したベクトルの終点を中心として動きベクトルを探索する方法である。
【0004】
図12は、従来の動きベクトル検出装置の動作を説明するための模式図である。縮小化フレーム17Bは、720画素×480ラインの符号化フレーム3B(マクロブロックMB)を水平方向および垂直方向に4分の1に縮小したものであり、180画素×120ラインによって構成されている。符号化フレーム3Bは、動きベクトルを求める対象となる符号化ブロック4Bを有している。符号化ブロック4Bは、16画素×16画素によって構成されている。縮小化フレーム17Bは、符号化ブロック4Bを水平方向および垂直方向に4分の1に縮小した縮小符号化ブロック6Bを有している。縮小符号化ブロック6Bは、4画素×4画素によって構成されている。
【0005】
縮小参照フレーム16Bは、720画素×480ラインの参照フレーム7Bを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。参照フレーム7Bは、動きベクトルを探索するための参照領域8Bを有している。縮小参照フレーム16Bは、縮小動きベクトルを探索するための縮小参照領域9Bを有している。
【0006】
縮小前の符号化フレーム3Bおよび参照フレーム7Bによって階層L0が構成されており、縮小後の縮小化フレーム17Bおよび縮小参照フレーム16Bによって階層L1が構成されている。
【0007】
図13は、従来の動きベクトル検出装置における縮小画像を生成する方法を説明するための模式図である。縮小前の階層L0における2行×2列の4個の画素A、画素B、画素Cおよび画素Dは、水平方向および垂直方向に沿って2分の1に縮小された結果、階層L1において1個の画素aとなる。階層L1における画素aの値は、下記の式に示すように、階層L0における画素A、画素B、画素Cおよび画素Dの値の平均値になる。
【0008】
a=(A+B+C+D)/4
まず、縮小符号化ブロック6Bに配置された画素の画素値と縮小参照領域9Bにおける縮小参照ブロックに配置された画素の画素値と間の差分絶対値を算出し、それらの差分絶対値の和(sad)が最小になる縮小参照ブロックを終点とし、縮小符号化ブロック6Bを始点とする縮小動きベクトルmv=(dh、dv)を求める。
【0009】
そして、求められた縮小動きベクトルmv=(dh、dv)を水平成分および垂直成分を4倍した初期動きベクトルMV=(dh×4、dv×4)に補正する。次に、初期動きベクトルMVの終点を、動きベクトルを探索するための中心とし、その周辺について符号化ブロック4Bとブロックマッチングを行う。
【0010】
このときの差分絶対値和(SAD)が最小になる参照領域8Bにおける位置を終点とし初期動きベクトルMVの始点を始点とするベクトルを符号化ブロック4Bの動きベクトルとして検出する。
【0011】
ブロックマッチングとは、これから動きベクトルを求めようとしている現フレームの対象ブロックについて、そのブロック内画像の輝度信号のパターンと最も類似している画像部分(同サイズのブロック領域)を参照フレームから探索し、探索された参照フレームの画像部分と現在のフレームの対象ブロックとの位置のオフセット量(中心間の変位量)を動きベクトルするものである。
【0012】
具体的には、符号化フレーム3Bを縮小した縮小符号化フレーム6Bにおける縮小符号化ブロックをmbとし、探索する縮小参照フレーム16Bにおける縮小参照領域をrefとすると、縮小符号化ブロックmbに属する全ての画素値とそれに呼応する縮小参照領域refの画素値との間の差分の絶対値和などの評価量SAD(mbc,ref)を求め、この評価量が最小となる点を縮小動きベクトルmvとして検出する(縮小画像間のSADは小文字のsadで記述しあるが算出式は同じ)。
【0013】
【数1】
【0014】
なお、動きベクトルとして整数精度と実数精度があり、実数精度の動きベクトル求めるにはその探索画素が存在しないので、周囲の画素から補間によって参照画素を生成してブロックマッチングする。実数精度の動きベクトルとしては1/2画素精度の動きベクトルが用いられることが多く、整数精度の動きベクトルを探索した後、1/2画素精度の動きベクトルを演算し動きベクトルの検出精度を上げることができる。
【0015】
このような階層的動きベクトル検出方法の特長は、2段目の処理(階層L0)のみでブロックマッチングによって動きベクトルを探索するフルサーチと呼ばれる方法と比較すると、縮小画面において大まかな動きベクトルを縮小動きベクトルとして検出するため、階層L0における動きベクトルの検索範囲を大きく狭めることができる。したがって、階層L0だけで同じ検出範囲を処理した場合(1階層フルサーチ)の演算量と比べると格段に演算量は減少する。また、動きベクトル検索時に呼び込む画像データのメモリ容量も少なくすることができ、データ読み出しのアクセス回数が軽減されるため消費電力が抑えられる。
【0016】
しかしながら、このような階層的動きベクトル検出方法にあっては、1段目の動きベクトル検出において用いる縮小画面の縮小比率が大きくなるに従って探索に用いるブロック内の画素数も急激に減少する。このため、動きベクトルが少ない数のブロック内画素に基づいて検出されるので検出精度の劣化(誤検出)が生じるという問題点があった。
【0017】
図14は、従来の動きベクトル検出装置の他の動作を説明するための模式図である。縮小符号化フレーム17Cは、720画素×480ラインの符号化フレーム3Cを水平方向および垂直方向に4分の1に縮小したものであり、180画素×120ラインによって構成されている。
【0018】
符号化フレーム3Cは、動きベクトルを求める対象となる4個の符号化ブロック4Cを有している。符号化ブロック4Cは、2行×2列に構成されており、複合ブロック5Cが構成されている。各符号化ブロック4Cは、16画素×16画素によって構成されている。
【0019】
縮小符号化フレーム17Cは、複合ブロック5Cを水平方向および垂直方向に4分の1に縮小した縮小複合ブロック6Cを有している。縮小複合ブロック6Cは、8画素×8画素によって構成されている。
【0020】
縮小参照フレーム6Cは、720画素×480ラインの参照フレーム7Cを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。参照フレーム7Cは、動きベクトルを探索するための参照領域8Cを有している。縮小参照フレーム6Cは、縮小動きベクトルを探索するための縮小参照領域16Cを有している。
【0021】
縮小前の符号化フレーム3Cおよび参照フレーム7Cによって階層L0が構成されており、縮小後の縮小符号化フレーム17Cおよび縮小参照フレーム6Cによって階層L1が構成されている。
【0022】
まず、縮小複合ブロック6Cに配置された画素の画素値と縮小参照領域9Cにおける縮小参照ブロックに配置された画素の画素値と間の差分絶対値を算出し、それらの差分絶対値の和(sad)が最小になる縮小参照ブロックを終点とし、縮小複合ブロック6Cを始点とする縮小動きベクトルmv=(dh、dv)を求める。
【0023】
そして、求められた縮小動きベクトルmv=(dh、dv)を水平成分および垂直成分を4倍した初期動きベクトルMV=(dh×4、dv×4)に補正する。次に、初期動きベクトルMVの終点を、動きベクトルを探索するための中心とし、その周辺について複合ブロック5Cを構成する4個の符号化ブロック4Cとそれぞれブロックマッチングを行う。
【0024】
このときの差分絶対値和SADがそれぞれ最小になる参照領域8Cにおける位置を終点とし初期動きベクトルMVの始点を始点とするベクトルをそれぞれ4個の符号化ブロック4Cの動きベクトルとして検出する。
【0025】
このように階層L0において複数の符号化ブロック4C(ここでは4ブロック)を複合ブロック5Cとして1つの対象ブロックとしてまとめ、それを階層L1で縮小化した場合、縮小複合ブロック6Cの画面サイズが、図12を参照して前述した縮小符号化ブロック6Bの画面サイズよりも大きくなり検索に用いる画素数も増える。
【0026】
この場合、階層L1において得られた縮小動きベクトルは、階層L0における複合ブロック5Cを構成する4つの符号化ブロック4Cのすべてに同じ動きベクトルMV(初期動きベクトル)を充てることになる。従って、複合ブロック5C内の符号化ブロックが同じような動きベクトルを有している場合はブロックマッチングの回数も削減され、縮小ブロックの縮小化も抑えられ動きベクトルの検出精度も上がるという特長がある。
【0027】
【特許文献1】
特開平9−182080号公報(第6頁〜第7頁、第42図)
【0028】
【特許文献2】
特開平11−262015号公報(第3頁〜第4頁、第6図)
【0029】
【発明が解決しようとする課題】
しかしながら、前述したような複合ブロックによる縮小化においても、複合ブロックを構成する4個の符号化ブロックのうち、例えば一個の符号化ブロックが特異なブロックであるために、他の符号化ブロックの動きベクトルと大きく異なる特異な動きベクトルを有している場合には、他の符号化ブロックの動きベクトルを検出しようとするときに、この特異な動きベクトルに影響された結果、誤った動きベクトルを検出するおそれがあるという問題がある。
【0030】
本発明は、係る問題を解決するためになされたものであり、その目的は、動きベクトルの検出精度が高い動きベクトル検出装置および動きベクトル検出方法を提供することにある。
【0031】
【課題を解決するための手段】
本発明に係る動きベクトル検出装置は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出手段と、前記縮小動きベクトル検出手段によって検出された前記縮小動きベクトルに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備しており、前記縮小動きベクトル検出手段は、前記縮小複合ブロックに配置された画素データと前記縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて前記縮小動きベクトルを検出し、前記差分値は、前記縮小複合ブロックにおける所定の領域に配置された画素データと前記縮小複合参照ブロックにおいて前記所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出されることを特徴とする。
【0032】
本発明に係る他の動きベクトル検出装置は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、前記符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように前記縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとをそれぞれ検出する縮小動きベクトル検出手段と、前記縮小動きベクトル検出手段によってそれぞれ検出された前記縮小メイン動きベクトルと前記縮小サブ動きベクトルとに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備することを特徴とする。
【0033】
本発明に係る動きベクトル検出方法は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出工程と、前記縮小動きベクトル検出工程によって検出された前記縮小動きベクトルに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出工程とを包含しており、前記縮小動きベクトル検出工程は、前記縮小複合ブロックに配置された画素データと前記縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて前記縮小動きベクトルを検出し、前記差分値は、前記縮小複合ブロックにおける所定の領域に配置された画素データと前記縮小複合参照ブロックにおいて前記所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出されることを特徴とする。
【0034】
本発明に係る他の動きベクトル検出方法は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、前記符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように前記縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとをそれぞれ検出する縮小動きベクトル検出工程と、前記縮小動きベクトル検出工程によってそれぞれ検出された前記縮小メイン動きベクトルと前記縮小サブ動きベクトルとに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出工程とを包含することを特徴とする。
【0035】
【発明の実施の形態】
本実施の形態に係る動きベクトル検出装置においては、縮小複合ブロックに配置された画素データと縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて縮小動きベクトルが検出され、差分値は、縮小複合ブロックにおける所定の領域に配置された画素データと縮小複合参照ブロックにおいて所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出される。
【0036】
このため、縮小複合ブロックに配置された画素データの一部が特異な画素データであっても、特異な画素データの影響を排除するように重み付けをする所定の領域を設定することができる。その結果、動きベクトルの検出精度を向上させることができる。
【0037】
前記縮小複合ブロックには、前記評価値を算出するための画素データに重み付けをする重み付け領域と、前記評価値を算出するための画素データに重み付けをしない非重み付け領域とが設けられており、前記重み付け領域は、前記縮小複合ブロックの中央に配置されており、前記非重み付け領域は、前記重み付け領域を囲むように前記縮小複合ブロックの周縁に配置されていることが好ましい。
【0038】
前記複合ブロックは、4行×4行の符号化ブロックによって構成されており、前記縮小複合ブロックに設けられた前記重み付け領域は、前記複合ブロックの中央に配置された2行×2列の符号化ブロックに対応する位置に配置されており、前記非重み付け領域は、前記複合ブロックの周縁に配置された符号化ブロックに対応する位置に配置されていることが好ましい。
【0039】
前記複合ブロックは、マトリックス状に配置された複数の符号化ブロックによって構成されていることが好ましい。
【0040】
前記動きベクトル検出手段は、前記縮小動きベクトル検出手段によって検出された前記縮小動きベクトルに応じて各符号化ブロックごとに前記参照領域にそれぞれ設けられる探索領域に配置された画素データに基づいて各符号化ブロックの動きベクトルをそれぞれ検出し、前記非重み付け領域に対応する符号化ブロックの動きベクトルを検出するための探索領域は、前記重み付け領域に対応する符号化ブロックの動きベクトルを検出するための探索領域よりも広くなっていることが好ましい。
【0041】
前記縮小動きベクトル検出手段は、前記評価値が最小となる前記縮小複合参照ブロックに基づいて前記縮小動きベクトルを検出することが好ましい。
【0042】
本実施の形態に係る他の動きベクトル検出装置においては、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとがそれぞれ検出され、それぞれ検出された縮小メイン動きベクトルと縮小サブ動きベクトルとに基づいて、複合ブロックに含まれる各符号化ブロックの動きベクトルがそれぞれ検出される。
【0043】
このため、縮小複合ブロックに配置された縮小サブブロックの動きベクトルの一部が縮小メイン動きベクトルと比べ特異な動きベクトルであっても、特異な動きベクトルとして個別にその縮小サブブロックの動きベクトルを設定することができる。その結果、動きベクトルの検出精度を向上させることができる。
【0044】
前記動きベクトル検出手段は、各縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の差に応じて、各縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出することが好ましい。
【0045】
前記動きベクトル検出手段は、前記縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の前記差が所定の値よりも大きいときは、前記縮小サブ動きベクトルに基づいて、前記縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出し、前記縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の前記差が所定の値以下であるときは、前記縮小メイン動きベクトルに基づいて、前記縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出することが好ましい。
【0046】
以下、図面を参照して本発明の実施の形態を説明する。
【0047】
図1は実施の形態に係る動きベクトル検出装置100の構成を示すブロック図であり、図2は動きベクトル検出装置100に設けられた縮小動きベクトル検出器1の構成を説明するためのブロック図であり、図3は動きベクトル検出装置100が動きベクトルを検出するための符号化フレーム3および参照フレーム7を説明するための模式図である。
【0048】
動きベクトル検出装置100は、メモリユニット40を備えている。メモリユニット40には、動きベクトル検出装置100が動きベクトルを検出するための符号化フレーム3および参照フレーム7が格納されている。メモリユニット40は、大容量であって高速アクセスが可能なメモリによって構成されている。
【0049】
符号化フレーム3は、例えば720画素×480ラインによって構成されており、複合ブロック5を有している。複合ブロック5は、動きベクトルを求める対象となる複数の符号化ブロック4を有している。符号化ブロック4は、例えば4行×4列のマトリックス状に配置されている。各符号化ブロック4は、例えば16行×16列の画素によって構成されている。参照フレーム7は、例えば720画素×480ラインによって構成されており、動きベクトルを検出するための参照領域8を有している。
【0050】
動きベクトル検出装置100には、縮小器41が設けられている。縮小器41は、メモリユニット40に格納された符号化フレーム3を縮小した縮小符号化フレーム17を生成して、生成した縮小符号化フレーム17をメモリユニット40に格納する。
【0051】
縮小符号化フレーム17は、符号化フレーム3を水平方向および垂直方向に沿って4分の1に縮小したものであり、例えば180画素×120ラインによって構成されている。縮小符号化フレーム17は、複合ブロック5を水平方向および垂直方向に沿って4分の1に縮小した縮小複合ブロック6を有している。縮小複合ブロック6は、例えば4行×4列のマトリックス状に配置された縮小符号化ブロックによって構成されている。各縮小符号化ブロックは、例えば4行×4列のマトリックス状に配置された画素によって構成されている。
【0052】
縮小複合ブロック6には、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値を算出するための画素データに重み付けをする重み付け領域と、評価値を算出するための画素データに重み付けをしない非重み付け領域とが設けられている。重み付け領域は、縮小複合ブロック6の中央に配置された2行×2列の縮小符号化ブロックに設定されている。非重み付け領域は、縮小複合ブロック6の周縁に配置された12個の縮小符号化ブロックに設定されている。
【0053】
縮小器41はまた、メモリユニット40に格納された参照フレーム7を縮小した縮小参照フレーム16を生成して、生成した縮小参照フレーム16をメモリユニット40に格納する。
【0054】
縮小参照フレーム16は、参照フレーム7を水平方向および垂直方向に沿って4分の1に縮小したものであり、例えば180画素×120ラインによって構成されている。縮小参照フレーム16は、参照領域8を水平方向および垂直方向に沿って4分の1に縮小した縮小参照領域9を有している。
【0055】
動きベクトル検出装置100は、現フレームバッファ42を備えている。現フレームバッファ42は、メモリユニット40に格納された符号化フレーム3と縮小符号化フレーム17とを読み出して一時的に保持する。
【0056】
動きベクトル検出装置100には、参照フレームバッファ43が設けられている。参照フレームバッファ43は、メモリユニット40に格納された参照フレーム7と縮小参照フレーム16とを読み出して一時的に保持する。
【0057】
動きベクトル検出装置100は、縮小動きベクトル検出器1を備えている。縮小動きベクトル検出器1は、参照フレームバッファ43に保持された縮小参照フレーム16における縮小参照領域9に配置された画素データに基づいて、現フレームバッファ42に保持された縮小符号化フレーム17に設けられた縮小複合ブロック6の縮小動きベクトルを検出する。
【0058】
動きベクトル検出装置100は、動きベクトル検出器2を備えている。動きベクトル検出器2は、縮小動きベクトル検出器1によって検出された縮小動きベクトルに基づいて、複合ブロック5に含まれる各符号化ブロック4の動きベクトルをそれぞれ求めて符号化器45へ供給する。
【0059】
符号化器45は、動きベクトル検出器2から供給された各符号化ブロック4の動きベクトルに基づいて、メモリユニット40に格納された符号化フレーム3に設けられた複合ブロック5を構成する各符号化ブロック4を符号化して符号化ビットストリームとして出力する。
【0060】
図2を参照すると、縮小動きベクトル検出器1は、コントローラ55を有している。コントローラ55は、縮小参照フレーム16における縮小参照領域9に配置された画素データをメモリユニット40から参照フレームバッファ43へ読み出すためのアドレスと縮小符号化フレーム17における縮小複合ブロック6に配置された画素データをメモリユニット40から現フレームバッファ42へ読み出すためのアドレスとをアドレス移動器50へ供給する。
【0061】
アドレス移動器50は、コントローラ55から供給された各アドレスに基づいて、縮小参照領域9に配置された画素データをメモリユニット40から読み出して参照フレームバッファ43へ格納し、縮小複合ブロック6に配置された画素データをメモリユニット40から読み出して現フレームバッファ42へ格納する。
【0062】
縮小動きベクトル検出器1は、差分演算器51を有している。差分演算器51は、縮小参照領域9に配置された画素データと縮小複合ブロック6に配置された画素データとの間の差分値を算出して絶対値算出器52へ供給する。
【0063】
絶対値算出器52は、差分演算器51によって算出された差分値を絶対値に変換した差分絶対値を生成して加算器53へ供給する。加算器53は、コントローラ55からの指示に応じて、縮小参照領域9に配置されたすべての画素データについての差分絶対値を合計した差分絶対値和SADを算出して判定器54へ供給する。
【0064】
判定器54は、探索範囲内において最小になる差分絶対値和SADおよび差分絶対値和SADが最小になる縮小参照領域のアドレスをコントローラ55へ供給する。
【0065】
コントローラ55は、判定器54から供給された差分絶対値和SADおよび縮小参照領域のアドレスに基づいて縮小動きベクトルを検出して動きベクトル検出器2へ供給する。メモリ56は、判定器54から供給された差分絶対値和SADおよびコントローラ55によって検出された縮小動きベクトルを一時的に保持する。
【0066】
このように構成された動きベクトル検出装置の動作を説明する。図4および図5は、実施の形態に係る動きベクトル検出装置100の動作を示すフローチャートである。図4に示すステップS1〜ステップS201は、符号化フレーム3に設けられた複合ブロック5を縮小した縮小複合ブロック6の縮小動きベクトルを検出する手順を示している。図5に示すステップS8〜ステップS20は、符号化フレーム3に設けられた複合ブロック5に含まれる各符号化ブロック4の動きベクトルを縮小動きベクトルに基づいて検出する手順を示している。
【0067】
まず、階層L0の符号化フレーム3に設けられた複合ブロック5について動きベクトルの検出が開始される(ステップS1)。そして、複合ブロック5を縮小した縮小複合ブロック6に配置された画素データが現フレームバッファ42から縮小動きベクトル検出器1へ読み出される(ステップS2)。次に、縮小動きベクトルを探索するための縮小参照領域9における探索開始位置h=−H1、v=−V1が設定される(ステップS3)。
【0068】
その後、探索開始位置のアドレスから探索終了位置のアドレスまで、縮小参照領域9に配置された画素データが参照フレームバッファ43から順次読み出される(ステップS4)。そして、ステップS2において読み出された縮小複合ブロック6に配置された画素データが重み付け領域に属するか否かが判断される(ステップS101)。
【0069】
縮小複合ブロック6に配置された画素データが重み付け領域に属すると判断されたときは(ステップS101においてYES)、縮小動きベクトル1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値に所定の重み付け係数を乗算した差分絶対値和sadwを求める(ステップS102)。
【0070】
縮小複合ブロック6に配置された画素データが重み付け領域に属さないと判断されたときは(ステップS101においてNO)、縮小動きベクトル検出器1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値を非重み付け領域における差分絶対値和sadwoとする(ステップS103)。
【0071】
差分絶対値和sadwが求められたとき(ステップS102)または差分絶対値和sadwoが求められたとき(ステップS103)は、縮小動きベクトル検出器1は、差分絶対値和sadwと差分絶対値和sadwoとを加算した縮小複合ブロック6の差分絶対値和sadを算出する(ステップS104)。
【0072】
そして、ステップS104において算出された縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいか否かが判断される(ステップS105)。縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいと判断されたときは(ステップS105においてYES)、これまでに算出された差分絶対値和sadよりも小さいと判断された縮小複合ブロック6の差分絶対値和sadを算出したときの縮小参照領域9に配置された画素データの位置と、縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新する(ステップS106)。
【0073】
縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さくないと判断されたとき(ステップS105においてNO)または縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新したとき(ステップS106)は、縮小参照領域9のアドレスをインクリメントする(ステップS6)。
【0074】
そして、インクリメントされた縮小参照領域9のアドレスが探索範囲外であり探索範囲が終了したか否かが判断される(ステップS7)。探索範囲が終了していないと判断されたときは(ステップS7においてNO)、ステップS4へ戻る。インクリメントされた縮小参照領域9のアドレスの画素データが読み込まれ、ステップS4からステップS6までの一連のプロセスが繰り返される。
【0075】
探索範囲が終了したと判断されたときは(ステップS7においてYES)、縮小複合ブロック6の縮小動きベクトルmvに縮小率4分の1の逆数を乗算して縮小動きベクトルmvを補正し、階層L0における動きベクトル検出のための初期動きベクトル(動きベクトルを探索するための中心位置)とする。
【0076】
そして、階層L0における複合ブロック5を構成する符号化ブロック4のナンバーn=0として先頭の符号化ブロック4を指定する(ステップS8)。次に、ナンバーnによって示される符号化ブロック4に配置された画素データが現フレームバッファ42から動きベクトル検出器2へ読み出される(ステップS9)。その後、ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか否かが判断される(ステップS301)。
【0077】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであると判断されたときは(ステップS301においてYES)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0、v=−V0(H0およびV0はゼロ以上)に設定する(ステップS10)。ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックでないと判断されたときは(ステップS301においてNO)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0−p、v=−V0−q(p>0、q>0)に設定する(ステップS302)。
【0078】
次に、ナンバーnによって示される符号化ブロック4とのブロックマッチングのために、参照領域8に配置された画素データが参照フレームバッファ43から読み出される(ステップS11)。読み出される参照領域8に配置された画素データの先頭アドレス(フレーム内座標)は、ナンバーnによって示される符号化ブロック4の中心座標に前述した初期動きベクトルと探索範囲の開始位置とが加算されたものである。
【0079】
その後、動きベクトル検出器2は、ナンバーnによって示される符号化ブロック4に配置された画素データと参照領域8に配置された画素データとの差分絶対値SADを算出する(ステップS12)。そして、動きベクトル検出器2は、算出した差分絶対値SADが最小であるか否かを判断する(ステップS13)。
【0080】
算出した差分絶対値SADが最小であると判断したときは(ステップS13においてYES)、差分絶対値SADが最小であるときの動きベクトルMVn=(dh、dv)を求めるべき動きベクトルとして更新する(ステップS14)。
【0081】
算出した差分絶対値SADが最小でないと判断したとき(ステップS13においてNO)または動きベクトルMVn=(dh、dv)を求めるべき動きベクトルとして更新したとき(ステップS14)は、参照領域8における検索開始位置を水平方向および垂直方向にインクリメントする(ステップS15)。
【0082】
そして、ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックであるか否かが判断される(ステップS401)。ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックであると判断されたときは(ステップS401においてYES)、検索範囲(h=H0、v=V0)が終了したか否かを判断する(ステップS16)。検索範囲(h=H0、v=V0)が終了していないと判断されたときは(ステップS16においてNO)、ステップS11へ戻り、次の参照領域データを読み出す。
【0083】
ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックでないと判断されたときは(ステップS401においてNO)、検索範囲(h=H0+p、v=V0+q)が終了したか否かを判断する(ステップS402)。検索範囲(h=H0+p、v=V0+q)が終了していないと判断されたときは(ステップS402においてNO)、ステップS11へ戻る。
【0084】
検索範囲(h=H0、v=V0)が終了したと判断されたとき(ステップS16においてYES)または検索範囲(h=H0+p、v=V0+q)が終了したと判断されたとき(ステップS402においてYES)は、ステップS14において求めた動きベクトルに検索を開始したときの初期動きベクトルを加算してナンバーnによって示される符号化ブロック4の動きベクトルを算出する(ステップS17)。
【0085】
そして、ナンバーnをインクリメントして複合ブロック5における次の符号化ブロック4を指定する(ステップS18)。次に、複合ブロック5におけるすべての符号化ブロック4の動きベクトルの検出が終了したか否かが判断される(ステップS19)。複合ブロック5におけるすべての符号化ブロック4の動きベクトルの検出が終了していないと判断されたときは(ステップS19においてNO)、ステップS9へ戻る。複合ブロック5におけるすべての符号化ブロック4の動きベクトルの検出が終了したと判断されたときは(ステップS19においてYES)、動きベクトルの検出処理を終了する(ステップS20)。
【0086】
本実施の形態に係る階層的動きベクトル検出の特徴は、1段目(階層L1)の動きベクトル検出において縮小複合ブロック6に重み付け/非重み付けの領域分けを導入したことである。また、これらの領域に対応した2段目(階層L0)の符号化ブロック4の動きベクトル検出において、これら2つの重み付け/非重み付け領域間で動きベクトル探索の範囲を変えることである。
【0087】
階層L0における複数の符号化ブロック4によって構成される複合ブロック5を階層L1において一つの縮小複合ブロック6として扱う。これにより縮小複合ブロックのサイズが拡大するため対象ブロック内データ数も増える。このため、動きベクトル検出の精度劣化を抑えることができる。
【0088】
しかし一方で、複数の符号化ブロック4を一つの縮小複合ブロック6にすることで広い画像範囲を対象とすることになり、他と異なる動きを有するブロックも含まれるおそれも増大する。このため、縮小複合ブロック6の中央と周辺とで重み付けを変え、中央領域は重み付けし、その周辺領域は重み付けをせず、中央領域の動きが優位に選択されるように設定する。なお、非重み付けの周辺領域については非優位な選択を補うため、2段目の階層L0で前記周辺領域と空間的に対応するブロックについて動きベクトルの探索範囲を広げることを特徴としている。
【0089】
具体的には、階層L0における複合ブロック5を構成する符号化ブロック4に対応するように階層L1の縮小複合ブロック6を分けた場合、複合ブロックの中央ブロックに対応する縮小複合ブロック6の中央領域(例えば、図3の縮小複合ブロック6の斜線領域)を重み付けし、残った周辺領域を重み付けしない。
【0090】
重み付け領域についてはブロックマッチングの際、差分絶対値に所定の重み付け値を乗算し非重み付け領域の差分絶対値よりも大きくする。これによって、縮小複合ブロック6の重み付けされた中央領域のSAD値に縮小複合ブロック6全体のSADが偏るため、そのときの動きベクトルが検出されやすくなる。
【0091】
また、階層L0において縮小複合ブロック6の重み付け領域に対応する符号化ブロックと非重み付け領域に対応する符号化ブロックとで動きベクトルの探索範囲を変える。すなわち、非重み付け領域に対応する符号化ブロックの動きベクトルの探索範囲を重み付け領域に対応する符号化ブロックの探索範囲よりも広げている。
【0092】
以上のように本実施の形態によれば、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて縮小動きベクトルが検出され、差分値は、縮小複合ブロック6における所定の領域に配置された画素データと縮小複合参照ブロックにおいて所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出される。
【0093】
このため、縮小複合ブロック6に配置された画素データの一部が特異な画素データであっても、特異な画素データの影響を排除するように重み付けをする所定の領域を設定することができる。その結果、動きベクトルの検出精度を向上させることができる。
【0094】
本実施の形態においては、縮小画像による1段目の動きベクトル検出において、縮小複合ブロック6の中央と周辺とで重み付けを変えて縮小動きベクトルを検出し、その縮小動きベクトルに基づいて、縮小前の原画像による2段目の動きベクトル検出において、縮小複合ブロック6における中央と周辺とに対応する符号化ブロックについて動きベクトルの探索範囲を変えることで、階層的動きベクトルの検出精度の劣化を抑えることできる。
【0095】
なお、本実施の形態では複合ブロック5が16個の符号化ブロック4によって構成される例を説明したが、本発明はこれに限定されない。複数の符号化ブロックであれば複合ブロック5を任意に構成してもよい。
【0096】
また、本実施の形態においては、中央と周辺と2段に分けて重み付け/非重み付け領域を分けたが、さらに細かく複数に分けて重み付けを変えてもよい。
【0097】
図6および図7は、実施の形態に係る動きベクトル検出装置の他の動作を示すフローチャートである。図4および図5を参照して前述した動きベクトル検出装置の動作を示すフローチャートの構成要素と同一の構成要素には同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0098】
図6および図7に示すフローチャートにおいては、図4および図5を参照して前述した手順と異なり、1段目(階層L1)の動きベクトル検出において縮小複合ブロック6における重み付け領域の差分絶対値和の最小値sadw_minを算出する。そして、この最小値sadw_minと縮小複合ブロック6全体の最小値(min(sad))とを比較する。そこでこれら2つの最小値間の差が小さい場合は、縮小ブロックは全体として一様な動きのブロックであると判定する。従って、一様な動きのブロックと判定された場合、階層L0での重み付け領域/非重み付け領域間での動きベクトル探索範囲の変更を実施しなくてもよい。このため、2段目の動きベクトル探索の演算が軽減される。
【0099】
図6および図7を参照すると、ステップS1〜ステップS4は、図4を参照して前述したステップS1〜ステップS4と同一である。
【0100】
そして、ステップS2において読み出された縮小複合ブロック6に配置された画素データが重み付け領域に属するか否かが判断される(ステップS101)。
【0101】
縮小複合ブロック6に配置された画素データが重み付け領域に属すると判断されたときは(ステップS101においてYES)、縮小動きベクトル検出器1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値に所定の重み付け係数を乗算した差分絶対値和sadwを求める(ステップS102)。
【0102】
そして、ステップS102において求められた差分絶対値和sadwが、これまでに求められた差分絶対値和sadwよりも小さいか否かが判断される(ステップS107)。差分絶対値和sadwが、これまでに求められた差分絶対値和sadwよりも小さいと判断されたときは(ステップS107においてYES)、ステップS102において求められた差分絶対値和sadwを最小差分絶対値和sadw_minとして更新する(ステップS108)。
【0103】
縮小複合ブロック6に配置された画素データが重み付け領域に属さないと判断されたときは(ステップS101においてNO)、縮小動きベクトル検出器1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値を非重み付け領域における差分絶対値和sadwoとする(ステップS103)。
【0104】
差分絶対値和sadwが、これまでに求められた差分絶対値和sadwよりも小さくないと判断されたとき(ステップS107においてNO)、または差分絶対値和sadwを最小差分絶対値和sadw_minとして更新したとき(ステップS108)、または差分絶対値和sadwoが求められたとき(ステップS103)は、縮小動きベクトル検出器1は、差分絶対値和sadwと差分絶対値和sadwoとを加算した縮小複合ブロック6の差分絶対値和sadを算出する(ステップS104)。
【0105】
そして、ステップS104において算出された縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいか否かが判断される(ステップS105)。縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいと判断されたときは(ステップS105においてYES)、これまでに算出された差分絶対値和sadよりも小さいと判断された縮小複合ブロック6の差分絶対値和sadを算出したときの縮小参照領域9に配置された画素データの位置と、縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新する(ステップS106)。
【0106】
縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さくないと判断されたとき(ステップS105においてNO)または縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新したとき(ステップS106)は、縮小参照領域9のアドレスをインクリメントする(ステップS6)。
【0107】
そして、インクリメントされた縮小参照領域9のアドレスが探索範囲外であり探索範囲が終了したか否かが判断される(ステップS7)。探索範囲が終了していないと判断されたときは(ステップS7においてNO)、ステップS4へ戻る。インクリメントされた縮小参照領域9のアドレスの画素データが読み込まれ、ステップS4からステップS6までの一連のプロセスが繰り返される。
【0108】
探索範囲が終了したと判断されたときは(ステップS7においてYES)、縮小複合ブロック6の縮小動きベクトルmvに縮小率4分の1の逆数を乗算して縮小動きベクトルmvを補正し、階層L0における動きベクトル検出のための初期動きベクトル(動きベクトルを探索するための中心位置)とする。
【0109】
そして、階層L0における複合ブロック5を構成する符号化ブロック4のナンバーn=0として先頭の符号化ブロック4を指定する(ステップS8)。次に、ナンバーnによって示される符号化ブロック4に配置された画素データが現フレームバッファ42から動きベクトル検出器2へ読み出される(ステップS9)。
【0110】
その後、ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいかが判断される(ステップS301A)。
【0111】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいと判断されたときは(ステップS301AにおいてYES)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0、v=−V0(H0およびV0はゼロ以上)に設定する(ステップS10)。
【0112】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックでなく、且つ、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さくないと判断されたときは(ステップS301AにおいてNO)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0−p、v=−V0−q(p>0、q>0)に設定する(ステップS302)。
【0113】
ステップS11からステップS15までは、図5を参照して前述したステップS11〜ステップS15と同一である。
【0114】
そして、ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいかが判断される(ステップS411)。
【0115】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいと判断されたときは(ステップS411においてYES)、検索範囲(h=H0、v=V0)が終了したか否かを判断する(ステップS16)。検索範囲(h=H0、v=V0)が終了していないと判断されたときは(ステップS16においてNO)、ステップS11へ戻り、次の参照領域データを読み出す。
【0116】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックでなく、且つ、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さくないと判断されたときは(ステップS411においてNO)、検索範囲(h=H0+p、v=V0+q)が終了したか否かを判断する(ステップS402)。検索範囲(h=H0+p、v=V0+q)が終了していないと判断されたときは(ステップS402においてNO)、ステップS11へ戻る。
【0117】
ステップS17からステップS20までは、図5を参照して前述したステップS17〜ステップS20と同一である。
【0118】
このように、1段目の縮小複合ブロック6に設けられた重み付け領域における最小SADを算出し、それを縮小複合ブロック6全体の最小SADと比較することで、その差が所定の値以下で小さければ縮小複合ブロック6は全体として一様な動きのブロックとみなし、階層L0において重み付け領域/非重み付け領域間での動きベクトル探索範囲を変更しなくてもよい。このため、動きベクトル探索範囲を削減することができる。
【0119】
なお、本実施の形態では縮小複合ブロック6に設けられた重み付け領域の最小値SADを算出し、それを階層L0において条件判断で用いたが、重み付け領域の最小値SADの動きベクトルを算出し、縮小複合ブロック6全体の動きベクトルと比較する条件を用いてもよい。その場合、動きベクトルの値が所定の範囲内であれば、全体として一様な動きのブロックとみなせばよい。
【0120】
図8は、実施の形態に係る動きベクトル検出装置のさらに他の動作を説明するための模式図である。図3を参照して前述した構成要素と同一の構成要素には同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0121】
符号化フレーム3Aは、720画素×480ラインによって構成されており、複合ブロック5Aを有している。複合ブロック5Aは、動きベクトルを求める対象となる複数の符号化ブロック4Aを有している。符号化ブロック4Aは、2行×2列のマトリックス状に配置されている。各符号化ブロック4Aは、16行×16列の画素によって構成されている。参照フレーム7Aは、720画素×480ラインによって構成されており、動きベクトルを検出するための参照領域8Aを有している。
【0122】
縮小符号化フレーム17Aは、符号化フレーム3Aを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。縮小符号化フレーム17Aは、複合ブロック5Aを水平方向および垂直方向に沿って4分の1に縮小した縮小複合ブロック6Aを有している。縮小複合ブロック6Aは、2行×2列のマトリックス状に配置された縮小符号化ブロックによって構成されている。各縮小符号化ブロックは、4行×4列のマトリックス状に配置された画素によって構成されている。
【0123】
縮小参照フレーム16Aは、参照フレーム7Aを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。縮小参照フレーム16Aは、参照領域8Aを水平方向および垂直方向に沿って4分の1に縮小した縮小参照領域9Aを有している。
【0124】
本実施の形態においては、1段目(階層L1)の動きベクトル検出において、縮小複合ブロック6A全体の縮小メイン動きベクトルを検出すると同時に、縮小複合ブロック6A(mb)のサブブロック(mbn)の縮小サブ動きベクトルを求める。このとき、サブブロックの縮小サブ動きベクトル(mvn)は縮小複合ブロック6Aの縮小メイン動きベクトル(mv)の探索範囲内において同時に探索される。また、サブブロックは2段目(階層L0)の複合ブロック5Aを構成する符号化ブロック4Aにそれぞれ空間的に対応する。
【0125】
このことによって、縮小複合ブロック6Aの動きと大きく異なる動きがサブブロックに存在した場合、サブブロックの縮小サブ動きベクトルを階層L0における2段目の動きベクトルとして用いることで、動きベクトル検出精度の劣化を抑えることができる。
【0126】
サブブロックの縮小サブ動きベクトル検出については、サブブロックそれぞれのSAD(sadn)を算出し、それらsadnの最小時の動きベクトルを検出する。縮小複合ブロック6A全体の縮小メイン動きベクトルは、サブブロックのsadnを総和したsadが最小となるときの動きベクトルを検出する。
【0127】
なお、2段目(階層L0)における動きベクトル検出では、サブブロックの縮小サブ動きベクトルと縮小複合ブロック6A全体の縮小メイン動きベクトルとの間の差が所定の値以内であれば、縮小複合ブロック6A全体の縮小メイン動きベクトルを2段目(階層L0)における動きベクトルとする。もしサブブロックの縮小サブ動きベクトルと縮小複合ブロック6A全体の縮小メイン動きベクトルとが、所定の値を超えて異なれば、サブブロックの縮小サブ動きベクトルに基づいて、符号化ブロックの動きベクトルを検出する。
【0128】
図9および図10は、実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャートである。図4および図5を参照して前述したフローチャートの構成要素と同一の構成要素には同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0129】
ステップS1〜ステップS4は、図4を参照して前述したステップS1〜ステップS4と同一である。
【0130】
そして、縮小サブブロックmbn のデータと縮小参照領域9Aの対応データとの差分絶対値和であるsadnを算出する(ステップS111)。この場合nは0、1、2、3である。
【0131】
次に、算出されたsad0、sad1、sad2、sad3が、動きベクトル検索範囲内でこれまでのそれらよりも小さな値か否かが判定される(ステップS112)。もし小さな値であれば(ステップS112においてYES)、そのときの動きベクトル値(縮小サブブロックmbnの中心からそれに対応する縮小参照領域(サブ縮小参照領域)の中心までの空間的変位量mvn=(dh、dv))が更新される(ステップS113)。
【0132】
算出されたsad0、sad1、sad2、sad3が、動きベクトル検索範囲内でこれまでのそれらよりも小さな値でないとき(ステップS112においてNO)、またはmvn=(dh、dv))が更新されたとき(ステップS113)は、縮小サブブロックmbnのsad0、sad1、sad2、sad3を互いに加算して縮小複合ブロック6A全体の差分絶対値和sadを算出する(ステップS114)。
【0133】
そして、縮小複合ブロック6A全体の差分絶対値和sadがこれまでのsad値よりも小さいか否かが判定される(ステップS115)。もし、小さければ(ステップS115においてYES)、そのときの動きベクトル(縮小複合ブロックmbの中心から探索縮小参照領域の中心までの空間的変位量mv=(dh、dv))が算出される(ステップS116)。
【0134】
縮小複合ブロック6A全体の差分絶対値和sadがこれまでのsad値よりも小さくないと判定されたとき(ステップS115においてNO)、または、空間的変位量mv=(dh、dv))が算出されたとき(ステップS116)は、次の探索範囲の縮小参照領域に配置された画素データを読み出すために、水平hあるいは垂直vのカウントがインクリメントされる(ステップS6)。
【0135】
そして、検索範囲が終了したか否かが判断される(ステップS7)。検索範囲が終了していないと判断されたときは(ステップS7においてNO)、ステップS4へ戻る。検索範囲が終了したと判断されたときは(ステップS7においてYES)、階層L0における複合ブロック5Aを構成する符号化ブロック4Aのナンバーn=0として先頭の符号化ブロック4Aを指定する(ステップS8)。
【0136】
次に、現フレームバッファ42から符号化ブロックMBn(開始時n=0)に配置された画素データが読み出される(ステップS9)。その後、符号化ブロックMBnに空間的に対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)とが比較され、その差分が所定の値th2未満であるか否かが判断される(ステップS321)。
【0137】
符号化ブロックMBnに空間的に対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値th2未満であると判断されたときは(ステップS321においてYES)、対象符号化ブロックMBnの初期の動きベクトルは縮小複合ブロック6A全体の縮小メイン動きベクトルを補正(縮小の逆比を乗算)した値が設定される(ステップS322)。
【0138】
符号化ブロックMBnに空間的に対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値th2未満でないと判断されたときは(ステップS321においてNO)、符号化ブロックMBnの初期動きベクトルは縮小サブブロックの縮小サブ動きベクトルを補正した値(縮小の逆比を乗算)に設定される(ステップS323)。
【0139】
縮小サブブロックの縮小サブ動きベクトルと縮小複合ブロックmbの縮小メイン動きベクトルとの比較は、例えば、両動きベクトル間における水平方向に沿った動きベクトル成分dhの差分絶対値と垂直方向に沿った動きベクトル成分dvの差分絶対値とを加えたものが用いられる。
【0140】
この後のプロセスは、上記どちらかの初期動きベクトル値を探索の中心にして、符号化ブロックMBnとそれに対応する参照領域データとの間でブロックマッチングされる。その結果、最小のSADが算出された参照領域の中心と符号化ブロックのMBnの中心との空間的変位が動きベクトル値として算出される。
【0141】
以上のように本実施の形態によれば、参照フレーム7Aに設けられた参照領域8Aを縮小した縮小参照領域9Aに配置された画素データに基づいて、符号化フレーム3Aに設けられた複数の符号化ブロック4Aを含む複合ブロック5Aを縮小した縮小複合ブロック6Aの動きベクトルを表す縮小メイン動きベクトルと、符号化フレーム3Aにそれぞれ設けられた各符号化ブロック4Aと対応するように縮小複合ブロック6Aにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとがそれぞれ検出され、それぞれ検出された縮小メイン動きベクトルと縮小サブ動きベクトルとに基づいて、複合ブロック5Aに含まれる各符号化ブロック4Aの動きベクトルがそれぞれ検出される。
【0142】
このため、縮小複合ブロック6Aに配置された画素データの一部が特異な画素データであっても、動きベクトルの検出精度を向上させることができる。
【0143】
このように、1段目の動きベクトル検出において縮小ブロック全体の動きベクトル検出と同時に縮小ブロックのサブブロック(2段目の複合ブロックを構成する個々のブロックに空間的に対応)の動きベクトルを求めることで、縮小ブロック全体と大きく異なる動きがサブブロックに存在する場合、1段目のサブブロックの動きベクトルを2段目に用いることで動きベクトルの検出精度の劣化を抑えることができる。
【0144】
図11は、実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャートである。動きベクトル検出装置のさらに他の動作について、前述した図9および図10に示すフローチャートに追加変更を加えた図11に示すフローチャートを用いて説明する。なお、本実施例の説明図としては図8の説明図を用いる。前述した図9および図10に示すフローチャートの構成要素と同一の構成要素には、同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0145】
本実施例では、階層L0における複数の符号化ブロック4A(16画素×16ラインからなる4個のブロック)によって構成された複合ブロック5Aが、階層L1において一つの縮小化された縮小複合ブロック6Aとして縮小動きベクトルが検出される。階層L1は、水平1/4、垂直1/4に縮小化された場合とする。
【0146】
本実施例と前述した図9および図10に示すフローチャートの実施例との違いは、2段目(階層L0)の動きベクトル検出における初期動きベクトルの設定に関して、1段目(階層L1)で検出された縮小複合ブロック6Aの縮小メイン動きベクトルと縮小サブブロックの縮小サブ動きベクトルとを比較判定する方法に関する部分である。
【0147】
前述した図9および図10に示すフローチャートの実施例においては、縮小複合ブロック6A全体の縮小メイン動きベクトルに対して縮小サブブロックの縮小サブ動きベクトルが大きく異なる場合は、すべて縮小サブブロックの縮小サブ動きベクトルを2段目の初期動きベクトルとして設定した。これに対して本実施例においては、上記縮小複合ブロック6A全体の縮小メイン動きベクトルに対して縮小サブブロックの縮小サブ動きベクトルが大きく異なる場合についても、縮小サブブロックの最小sadnが小さく、且つその最小sadnの4倍と縮小複合ブロック6A全体の最小sadとの差分が小さい場合には、その縮小サブブロックの縮小サブ動きベクトルは縮小複合ブロック6A全体の縮小メイン動きベクトルと同じにするという条件が加わる。
【0148】
このことは、一部の縮小サブブロックの縮小サブ動きベクトル検出において、できるだけ小さなsadの縮小参照領域とのマッチングが優先され、その結果本来の動きベクトルと大きくかけ離れたベクトルが選択されてしまう場合を抑制させるためである。このようなケースとして、最小sadnが小さく他のサブブロックのsadnも差が小さく、動きベクトルだけが大きい場合がある。
【0149】
本実施例では、階層L0の複合ブロック5Aを縮小化した1段目(階層L1)のある縮小ブロックについて動きベクトルを検出し、それを初期動きベクトル値(前記動きベクトルは縮小比率の逆比で補正された値)として2段目(階層L0)の符号化ブロック4Aの動きベクトルを検出するそのプロセスの一部を示したものである。
【0150】
階層L1において縮小複合ブロック6Aの縮小メイン動きベクトルおよびそのサブブロックの縮小サブ動きベクトルを検出するステップは、前述した図9および図10に示すフローチャートの実施例と同一である。
【0151】
初期動きベクトルを検出した後、階層L0において符号化ブロックMBnの動きベクトルを検出する。この場合、n=0、1、2、3である。
【0152】
そして、現フレームバッファ42から符号化ブロックMBn(開始時n=0)に配置された画素データが読み出される(ステップS9)。次に、符号化ブロックMBnに対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)とが比較され、その差分が所定の値(th2)未満であるか否かが判断される(ステップS321)。
【0153】
符号化ブロックMBnに対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値(th2)未満でないと判断されたときは(ステップS321においてNO)、符号化ブロックMBnに対応する縮小サブブロックの最小sadnが所定の値(th3)未満であって、且つその最小値を4倍した値と縮小複合ブロックの最小sadと間の差分絶対値が所定の値(th4)未満であるか否かが判断される(ステップS331)。
【0154】
符号化ブロックMBnに対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値(th2)未満であると判断されたときは(ステップS321においてYES)、または、符号化ブロックMBnに対応する縮小サブブロックの最小sadnが所定の値(th3)未満であって、且つその最小値を4倍した値と縮小複合ブロックの最小sadと間の差分絶対値が所定の値(th4)未満であると判断されたとき(ステップS331においてYES)は、符号化ブロックMBnの初期の動きベクトルを、縮小複合ブロック6A全体の縮小メイン動きベクトルを補正した値に設定する(ステップS322)。
【0155】
符号化ブロックMBnに対応する縮小サブブロックの最小sadnが所定の値(th3)未満でないか、または、その最小値を4倍した値と縮小複合ブロックの最小sadと間の差分絶対値が所定の値(th4)未満でないと判断されたとき(ステップS331においてNO)は、符号化ブロックMBnの初期の動きベクトルを、縮小サブブロックの縮小サブ動きベクトルに設定する(ステップS323)。
【0156】
この後のプロセスは、前述した図9および図10に示すフローチャートの実施例と同一であり、上記どちらかの初期動きベクトル値を探索の中心にして、符号化ブロックMBnとそれに対応する参照領域データとでブロックマッチングし、最小のSADの参照領域の中心と符号化ブロックMBnの中心との間の空間的変位量を動きベクトルとする。
【0157】
以上のように本実施の形態によれば、1段目の動きベクトル検出において、一部の縮小サブブロックが誤ってより小さなsadの縮小参照領域のデータとマッチングされてしまい、その結果2段目の動きベクトル探索において大きく異なる初期動きベクトルが設定されてしまうという問題を避けることができる。
【0158】
【発明の効果】
以上のように本発明によれば、動きベクトルの検出精度が高い動きベクトル検出装置および動きベクトル検出方法を提供することができる。
【図面の簡単な説明】
【図1】実施の形態に係る動きベクトル検出装置の構成を示すブロック図
【図2】実施の形態に係る動きベクトル検出装置に設けられた縮小動きベクトル検出器の構成を説明するためのブロック図
【図3】実施の形態に係る動きベクトル検出装置の動作を説明するための模式図
【図4】実施の形態に係る動きベクトル検出装置の動作を示すフローチャート
【図5】実施の形態に係る動きベクトル検出装置の動作を示すフローチャート
【図6】実施の形態に係る動きベクトル検出装置の他の動作を示すフローチャート
【図7】実施の形態に係る動きベクトル検出装置の他の動作を示すフローチャート
【図8】実施の形態に係る動きベクトル検出装置のさらに他の動作を説明するための模式図
【図9】実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャート
【図10】実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャート
【図11】実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャート
【図12】従来の動きベクトル検出装置の動作を説明するための模式図
【図13】従来の動きベクトル検出装置における縮小画像を生成する方法を説明するための模式図
【図14】従来の動きベクトル検出装置の他の動作を説明するための模式図
【符号の説明】
1 縮小動きベクトル検出器
2 動きベクトル検出器
3、3A、3B、3C 符号化フレーム
4、4A、4B、4C 符号化ブロック
5、5A、5C 複合ブロック
6 6A、6C 縮小複合ブロック
6B 縮小ブロック
7、7A、7B、7C 参照フレーム
8、8A、8B、8C 参照領域
9、9A、9B、9C 縮小参照領域
16、16A、16B、16C 縮小参照フレーム
17、17A、17B、17C 縮小符号化フレーム
40 メモリユニット
41 縮小器
42 現フレームバッファ
43 参照フレームバッファ
45 符号化器
50 アドレス移動器
51 差分演算器
52 絶対値算出器
53 加算器
54 判定器
55 コントローラ
56 メモリ
100 動きベクトル検出装置
【発明の属する技術分野】
本発明は、動きベクトルを階層的に検出する動きベクトル検出装置および動きベクトル検出方法に関する。
【0002】
【従来の技術】
これまでに、動画像の動きベクトルを検出する際に、動きベクトルの検出(探索)範囲の拡大と動きベクトルを検出するための演算量削減とを両立させることを目的として様々な動きベクトル検出方法が提案されてきた。
【0003】
このような動きベクトル検出方法の一つとして階層的動きベクトル検出方法がある。この階層的動きベクトル検出方法は、まず、1段目の動きベクトル検出として現在のフレームと参照フレームとのそれぞれにおいて縮小画像を生成し、この両縮小画像に基づいて縮小動きベクトルを検出する。その後、原画像(縮小前の通常画面同士)による2段目の動きベクトル検出として、前記1段目の縮小動きベクトルを拡大したベクトルの終点を中心として動きベクトルを探索する方法である。
【0004】
図12は、従来の動きベクトル検出装置の動作を説明するための模式図である。縮小化フレーム17Bは、720画素×480ラインの符号化フレーム3B(マクロブロックMB)を水平方向および垂直方向に4分の1に縮小したものであり、180画素×120ラインによって構成されている。符号化フレーム3Bは、動きベクトルを求める対象となる符号化ブロック4Bを有している。符号化ブロック4Bは、16画素×16画素によって構成されている。縮小化フレーム17Bは、符号化ブロック4Bを水平方向および垂直方向に4分の1に縮小した縮小符号化ブロック6Bを有している。縮小符号化ブロック6Bは、4画素×4画素によって構成されている。
【0005】
縮小参照フレーム16Bは、720画素×480ラインの参照フレーム7Bを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。参照フレーム7Bは、動きベクトルを探索するための参照領域8Bを有している。縮小参照フレーム16Bは、縮小動きベクトルを探索するための縮小参照領域9Bを有している。
【0006】
縮小前の符号化フレーム3Bおよび参照フレーム7Bによって階層L0が構成されており、縮小後の縮小化フレーム17Bおよび縮小参照フレーム16Bによって階層L1が構成されている。
【0007】
図13は、従来の動きベクトル検出装置における縮小画像を生成する方法を説明するための模式図である。縮小前の階層L0における2行×2列の4個の画素A、画素B、画素Cおよび画素Dは、水平方向および垂直方向に沿って2分の1に縮小された結果、階層L1において1個の画素aとなる。階層L1における画素aの値は、下記の式に示すように、階層L0における画素A、画素B、画素Cおよび画素Dの値の平均値になる。
【0008】
a=(A+B+C+D)/4
まず、縮小符号化ブロック6Bに配置された画素の画素値と縮小参照領域9Bにおける縮小参照ブロックに配置された画素の画素値と間の差分絶対値を算出し、それらの差分絶対値の和(sad)が最小になる縮小参照ブロックを終点とし、縮小符号化ブロック6Bを始点とする縮小動きベクトルmv=(dh、dv)を求める。
【0009】
そして、求められた縮小動きベクトルmv=(dh、dv)を水平成分および垂直成分を4倍した初期動きベクトルMV=(dh×4、dv×4)に補正する。次に、初期動きベクトルMVの終点を、動きベクトルを探索するための中心とし、その周辺について符号化ブロック4Bとブロックマッチングを行う。
【0010】
このときの差分絶対値和(SAD)が最小になる参照領域8Bにおける位置を終点とし初期動きベクトルMVの始点を始点とするベクトルを符号化ブロック4Bの動きベクトルとして検出する。
【0011】
ブロックマッチングとは、これから動きベクトルを求めようとしている現フレームの対象ブロックについて、そのブロック内画像の輝度信号のパターンと最も類似している画像部分(同サイズのブロック領域)を参照フレームから探索し、探索された参照フレームの画像部分と現在のフレームの対象ブロックとの位置のオフセット量(中心間の変位量)を動きベクトルするものである。
【0012】
具体的には、符号化フレーム3Bを縮小した縮小符号化フレーム6Bにおける縮小符号化ブロックをmbとし、探索する縮小参照フレーム16Bにおける縮小参照領域をrefとすると、縮小符号化ブロックmbに属する全ての画素値とそれに呼応する縮小参照領域refの画素値との間の差分の絶対値和などの評価量SAD(mbc,ref)を求め、この評価量が最小となる点を縮小動きベクトルmvとして検出する(縮小画像間のSADは小文字のsadで記述しあるが算出式は同じ)。
【0013】
【数1】
【0014】
なお、動きベクトルとして整数精度と実数精度があり、実数精度の動きベクトル求めるにはその探索画素が存在しないので、周囲の画素から補間によって参照画素を生成してブロックマッチングする。実数精度の動きベクトルとしては1/2画素精度の動きベクトルが用いられることが多く、整数精度の動きベクトルを探索した後、1/2画素精度の動きベクトルを演算し動きベクトルの検出精度を上げることができる。
【0015】
このような階層的動きベクトル検出方法の特長は、2段目の処理(階層L0)のみでブロックマッチングによって動きベクトルを探索するフルサーチと呼ばれる方法と比較すると、縮小画面において大まかな動きベクトルを縮小動きベクトルとして検出するため、階層L0における動きベクトルの検索範囲を大きく狭めることができる。したがって、階層L0だけで同じ検出範囲を処理した場合(1階層フルサーチ)の演算量と比べると格段に演算量は減少する。また、動きベクトル検索時に呼び込む画像データのメモリ容量も少なくすることができ、データ読み出しのアクセス回数が軽減されるため消費電力が抑えられる。
【0016】
しかしながら、このような階層的動きベクトル検出方法にあっては、1段目の動きベクトル検出において用いる縮小画面の縮小比率が大きくなるに従って探索に用いるブロック内の画素数も急激に減少する。このため、動きベクトルが少ない数のブロック内画素に基づいて検出されるので検出精度の劣化(誤検出)が生じるという問題点があった。
【0017】
図14は、従来の動きベクトル検出装置の他の動作を説明するための模式図である。縮小符号化フレーム17Cは、720画素×480ラインの符号化フレーム3Cを水平方向および垂直方向に4分の1に縮小したものであり、180画素×120ラインによって構成されている。
【0018】
符号化フレーム3Cは、動きベクトルを求める対象となる4個の符号化ブロック4Cを有している。符号化ブロック4Cは、2行×2列に構成されており、複合ブロック5Cが構成されている。各符号化ブロック4Cは、16画素×16画素によって構成されている。
【0019】
縮小符号化フレーム17Cは、複合ブロック5Cを水平方向および垂直方向に4分の1に縮小した縮小複合ブロック6Cを有している。縮小複合ブロック6Cは、8画素×8画素によって構成されている。
【0020】
縮小参照フレーム6Cは、720画素×480ラインの参照フレーム7Cを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。参照フレーム7Cは、動きベクトルを探索するための参照領域8Cを有している。縮小参照フレーム6Cは、縮小動きベクトルを探索するための縮小参照領域16Cを有している。
【0021】
縮小前の符号化フレーム3Cおよび参照フレーム7Cによって階層L0が構成されており、縮小後の縮小符号化フレーム17Cおよび縮小参照フレーム6Cによって階層L1が構成されている。
【0022】
まず、縮小複合ブロック6Cに配置された画素の画素値と縮小参照領域9Cにおける縮小参照ブロックに配置された画素の画素値と間の差分絶対値を算出し、それらの差分絶対値の和(sad)が最小になる縮小参照ブロックを終点とし、縮小複合ブロック6Cを始点とする縮小動きベクトルmv=(dh、dv)を求める。
【0023】
そして、求められた縮小動きベクトルmv=(dh、dv)を水平成分および垂直成分を4倍した初期動きベクトルMV=(dh×4、dv×4)に補正する。次に、初期動きベクトルMVの終点を、動きベクトルを探索するための中心とし、その周辺について複合ブロック5Cを構成する4個の符号化ブロック4Cとそれぞれブロックマッチングを行う。
【0024】
このときの差分絶対値和SADがそれぞれ最小になる参照領域8Cにおける位置を終点とし初期動きベクトルMVの始点を始点とするベクトルをそれぞれ4個の符号化ブロック4Cの動きベクトルとして検出する。
【0025】
このように階層L0において複数の符号化ブロック4C(ここでは4ブロック)を複合ブロック5Cとして1つの対象ブロックとしてまとめ、それを階層L1で縮小化した場合、縮小複合ブロック6Cの画面サイズが、図12を参照して前述した縮小符号化ブロック6Bの画面サイズよりも大きくなり検索に用いる画素数も増える。
【0026】
この場合、階層L1において得られた縮小動きベクトルは、階層L0における複合ブロック5Cを構成する4つの符号化ブロック4Cのすべてに同じ動きベクトルMV(初期動きベクトル)を充てることになる。従って、複合ブロック5C内の符号化ブロックが同じような動きベクトルを有している場合はブロックマッチングの回数も削減され、縮小ブロックの縮小化も抑えられ動きベクトルの検出精度も上がるという特長がある。
【0027】
【特許文献1】
特開平9−182080号公報(第6頁〜第7頁、第42図)
【0028】
【特許文献2】
特開平11−262015号公報(第3頁〜第4頁、第6図)
【0029】
【発明が解決しようとする課題】
しかしながら、前述したような複合ブロックによる縮小化においても、複合ブロックを構成する4個の符号化ブロックのうち、例えば一個の符号化ブロックが特異なブロックであるために、他の符号化ブロックの動きベクトルと大きく異なる特異な動きベクトルを有している場合には、他の符号化ブロックの動きベクトルを検出しようとするときに、この特異な動きベクトルに影響された結果、誤った動きベクトルを検出するおそれがあるという問題がある。
【0030】
本発明は、係る問題を解決するためになされたものであり、その目的は、動きベクトルの検出精度が高い動きベクトル検出装置および動きベクトル検出方法を提供することにある。
【0031】
【課題を解決するための手段】
本発明に係る動きベクトル検出装置は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出手段と、前記縮小動きベクトル検出手段によって検出された前記縮小動きベクトルに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備しており、前記縮小動きベクトル検出手段は、前記縮小複合ブロックに配置された画素データと前記縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて前記縮小動きベクトルを検出し、前記差分値は、前記縮小複合ブロックにおける所定の領域に配置された画素データと前記縮小複合参照ブロックにおいて前記所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出されることを特徴とする。
【0032】
本発明に係る他の動きベクトル検出装置は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、前記符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように前記縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとをそれぞれ検出する縮小動きベクトル検出手段と、前記縮小動きベクトル検出手段によってそれぞれ検出された前記縮小メイン動きベクトルと前記縮小サブ動きベクトルとに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備することを特徴とする。
【0033】
本発明に係る動きベクトル検出方法は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出工程と、前記縮小動きベクトル検出工程によって検出された前記縮小動きベクトルに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出工程とを包含しており、前記縮小動きベクトル検出工程は、前記縮小複合ブロックに配置された画素データと前記縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて前記縮小動きベクトルを検出し、前記差分値は、前記縮小複合ブロックにおける所定の領域に配置された画素データと前記縮小複合参照ブロックにおいて前記所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出されることを特徴とする。
【0034】
本発明に係る他の動きベクトル検出方法は、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、前記符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように前記縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとをそれぞれ検出する縮小動きベクトル検出工程と、前記縮小動きベクトル検出工程によってそれぞれ検出された前記縮小メイン動きベクトルと前記縮小サブ動きベクトルとに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出工程とを包含することを特徴とする。
【0035】
【発明の実施の形態】
本実施の形態に係る動きベクトル検出装置においては、縮小複合ブロックに配置された画素データと縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて縮小動きベクトルが検出され、差分値は、縮小複合ブロックにおける所定の領域に配置された画素データと縮小複合参照ブロックにおいて所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出される。
【0036】
このため、縮小複合ブロックに配置された画素データの一部が特異な画素データであっても、特異な画素データの影響を排除するように重み付けをする所定の領域を設定することができる。その結果、動きベクトルの検出精度を向上させることができる。
【0037】
前記縮小複合ブロックには、前記評価値を算出するための画素データに重み付けをする重み付け領域と、前記評価値を算出するための画素データに重み付けをしない非重み付け領域とが設けられており、前記重み付け領域は、前記縮小複合ブロックの中央に配置されており、前記非重み付け領域は、前記重み付け領域を囲むように前記縮小複合ブロックの周縁に配置されていることが好ましい。
【0038】
前記複合ブロックは、4行×4行の符号化ブロックによって構成されており、前記縮小複合ブロックに設けられた前記重み付け領域は、前記複合ブロックの中央に配置された2行×2列の符号化ブロックに対応する位置に配置されており、前記非重み付け領域は、前記複合ブロックの周縁に配置された符号化ブロックに対応する位置に配置されていることが好ましい。
【0039】
前記複合ブロックは、マトリックス状に配置された複数の符号化ブロックによって構成されていることが好ましい。
【0040】
前記動きベクトル検出手段は、前記縮小動きベクトル検出手段によって検出された前記縮小動きベクトルに応じて各符号化ブロックごとに前記参照領域にそれぞれ設けられる探索領域に配置された画素データに基づいて各符号化ブロックの動きベクトルをそれぞれ検出し、前記非重み付け領域に対応する符号化ブロックの動きベクトルを検出するための探索領域は、前記重み付け領域に対応する符号化ブロックの動きベクトルを検出するための探索領域よりも広くなっていることが好ましい。
【0041】
前記縮小動きベクトル検出手段は、前記評価値が最小となる前記縮小複合参照ブロックに基づいて前記縮小動きベクトルを検出することが好ましい。
【0042】
本実施の形態に係る他の動きベクトル検出装置においては、参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとがそれぞれ検出され、それぞれ検出された縮小メイン動きベクトルと縮小サブ動きベクトルとに基づいて、複合ブロックに含まれる各符号化ブロックの動きベクトルがそれぞれ検出される。
【0043】
このため、縮小複合ブロックに配置された縮小サブブロックの動きベクトルの一部が縮小メイン動きベクトルと比べ特異な動きベクトルであっても、特異な動きベクトルとして個別にその縮小サブブロックの動きベクトルを設定することができる。その結果、動きベクトルの検出精度を向上させることができる。
【0044】
前記動きベクトル検出手段は、各縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の差に応じて、各縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出することが好ましい。
【0045】
前記動きベクトル検出手段は、前記縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の前記差が所定の値よりも大きいときは、前記縮小サブ動きベクトルに基づいて、前記縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出し、前記縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の前記差が所定の値以下であるときは、前記縮小メイン動きベクトルに基づいて、前記縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出することが好ましい。
【0046】
以下、図面を参照して本発明の実施の形態を説明する。
【0047】
図1は実施の形態に係る動きベクトル検出装置100の構成を示すブロック図であり、図2は動きベクトル検出装置100に設けられた縮小動きベクトル検出器1の構成を説明するためのブロック図であり、図3は動きベクトル検出装置100が動きベクトルを検出するための符号化フレーム3および参照フレーム7を説明するための模式図である。
【0048】
動きベクトル検出装置100は、メモリユニット40を備えている。メモリユニット40には、動きベクトル検出装置100が動きベクトルを検出するための符号化フレーム3および参照フレーム7が格納されている。メモリユニット40は、大容量であって高速アクセスが可能なメモリによって構成されている。
【0049】
符号化フレーム3は、例えば720画素×480ラインによって構成されており、複合ブロック5を有している。複合ブロック5は、動きベクトルを求める対象となる複数の符号化ブロック4を有している。符号化ブロック4は、例えば4行×4列のマトリックス状に配置されている。各符号化ブロック4は、例えば16行×16列の画素によって構成されている。参照フレーム7は、例えば720画素×480ラインによって構成されており、動きベクトルを検出するための参照領域8を有している。
【0050】
動きベクトル検出装置100には、縮小器41が設けられている。縮小器41は、メモリユニット40に格納された符号化フレーム3を縮小した縮小符号化フレーム17を生成して、生成した縮小符号化フレーム17をメモリユニット40に格納する。
【0051】
縮小符号化フレーム17は、符号化フレーム3を水平方向および垂直方向に沿って4分の1に縮小したものであり、例えば180画素×120ラインによって構成されている。縮小符号化フレーム17は、複合ブロック5を水平方向および垂直方向に沿って4分の1に縮小した縮小複合ブロック6を有している。縮小複合ブロック6は、例えば4行×4列のマトリックス状に配置された縮小符号化ブロックによって構成されている。各縮小符号化ブロックは、例えば4行×4列のマトリックス状に配置された画素によって構成されている。
【0052】
縮小複合ブロック6には、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値を算出するための画素データに重み付けをする重み付け領域と、評価値を算出するための画素データに重み付けをしない非重み付け領域とが設けられている。重み付け領域は、縮小複合ブロック6の中央に配置された2行×2列の縮小符号化ブロックに設定されている。非重み付け領域は、縮小複合ブロック6の周縁に配置された12個の縮小符号化ブロックに設定されている。
【0053】
縮小器41はまた、メモリユニット40に格納された参照フレーム7を縮小した縮小参照フレーム16を生成して、生成した縮小参照フレーム16をメモリユニット40に格納する。
【0054】
縮小参照フレーム16は、参照フレーム7を水平方向および垂直方向に沿って4分の1に縮小したものであり、例えば180画素×120ラインによって構成されている。縮小参照フレーム16は、参照領域8を水平方向および垂直方向に沿って4分の1に縮小した縮小参照領域9を有している。
【0055】
動きベクトル検出装置100は、現フレームバッファ42を備えている。現フレームバッファ42は、メモリユニット40に格納された符号化フレーム3と縮小符号化フレーム17とを読み出して一時的に保持する。
【0056】
動きベクトル検出装置100には、参照フレームバッファ43が設けられている。参照フレームバッファ43は、メモリユニット40に格納された参照フレーム7と縮小参照フレーム16とを読み出して一時的に保持する。
【0057】
動きベクトル検出装置100は、縮小動きベクトル検出器1を備えている。縮小動きベクトル検出器1は、参照フレームバッファ43に保持された縮小参照フレーム16における縮小参照領域9に配置された画素データに基づいて、現フレームバッファ42に保持された縮小符号化フレーム17に設けられた縮小複合ブロック6の縮小動きベクトルを検出する。
【0058】
動きベクトル検出装置100は、動きベクトル検出器2を備えている。動きベクトル検出器2は、縮小動きベクトル検出器1によって検出された縮小動きベクトルに基づいて、複合ブロック5に含まれる各符号化ブロック4の動きベクトルをそれぞれ求めて符号化器45へ供給する。
【0059】
符号化器45は、動きベクトル検出器2から供給された各符号化ブロック4の動きベクトルに基づいて、メモリユニット40に格納された符号化フレーム3に設けられた複合ブロック5を構成する各符号化ブロック4を符号化して符号化ビットストリームとして出力する。
【0060】
図2を参照すると、縮小動きベクトル検出器1は、コントローラ55を有している。コントローラ55は、縮小参照フレーム16における縮小参照領域9に配置された画素データをメモリユニット40から参照フレームバッファ43へ読み出すためのアドレスと縮小符号化フレーム17における縮小複合ブロック6に配置された画素データをメモリユニット40から現フレームバッファ42へ読み出すためのアドレスとをアドレス移動器50へ供給する。
【0061】
アドレス移動器50は、コントローラ55から供給された各アドレスに基づいて、縮小参照領域9に配置された画素データをメモリユニット40から読み出して参照フレームバッファ43へ格納し、縮小複合ブロック6に配置された画素データをメモリユニット40から読み出して現フレームバッファ42へ格納する。
【0062】
縮小動きベクトル検出器1は、差分演算器51を有している。差分演算器51は、縮小参照領域9に配置された画素データと縮小複合ブロック6に配置された画素データとの間の差分値を算出して絶対値算出器52へ供給する。
【0063】
絶対値算出器52は、差分演算器51によって算出された差分値を絶対値に変換した差分絶対値を生成して加算器53へ供給する。加算器53は、コントローラ55からの指示に応じて、縮小参照領域9に配置されたすべての画素データについての差分絶対値を合計した差分絶対値和SADを算出して判定器54へ供給する。
【0064】
判定器54は、探索範囲内において最小になる差分絶対値和SADおよび差分絶対値和SADが最小になる縮小参照領域のアドレスをコントローラ55へ供給する。
【0065】
コントローラ55は、判定器54から供給された差分絶対値和SADおよび縮小参照領域のアドレスに基づいて縮小動きベクトルを検出して動きベクトル検出器2へ供給する。メモリ56は、判定器54から供給された差分絶対値和SADおよびコントローラ55によって検出された縮小動きベクトルを一時的に保持する。
【0066】
このように構成された動きベクトル検出装置の動作を説明する。図4および図5は、実施の形態に係る動きベクトル検出装置100の動作を示すフローチャートである。図4に示すステップS1〜ステップS201は、符号化フレーム3に設けられた複合ブロック5を縮小した縮小複合ブロック6の縮小動きベクトルを検出する手順を示している。図5に示すステップS8〜ステップS20は、符号化フレーム3に設けられた複合ブロック5に含まれる各符号化ブロック4の動きベクトルを縮小動きベクトルに基づいて検出する手順を示している。
【0067】
まず、階層L0の符号化フレーム3に設けられた複合ブロック5について動きベクトルの検出が開始される(ステップS1)。そして、複合ブロック5を縮小した縮小複合ブロック6に配置された画素データが現フレームバッファ42から縮小動きベクトル検出器1へ読み出される(ステップS2)。次に、縮小動きベクトルを探索するための縮小参照領域9における探索開始位置h=−H1、v=−V1が設定される(ステップS3)。
【0068】
その後、探索開始位置のアドレスから探索終了位置のアドレスまで、縮小参照領域9に配置された画素データが参照フレームバッファ43から順次読み出される(ステップS4)。そして、ステップS2において読み出された縮小複合ブロック6に配置された画素データが重み付け領域に属するか否かが判断される(ステップS101)。
【0069】
縮小複合ブロック6に配置された画素データが重み付け領域に属すると判断されたときは(ステップS101においてYES)、縮小動きベクトル1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値に所定の重み付け係数を乗算した差分絶対値和sadwを求める(ステップS102)。
【0070】
縮小複合ブロック6に配置された画素データが重み付け領域に属さないと判断されたときは(ステップS101においてNO)、縮小動きベクトル検出器1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値を非重み付け領域における差分絶対値和sadwoとする(ステップS103)。
【0071】
差分絶対値和sadwが求められたとき(ステップS102)または差分絶対値和sadwoが求められたとき(ステップS103)は、縮小動きベクトル検出器1は、差分絶対値和sadwと差分絶対値和sadwoとを加算した縮小複合ブロック6の差分絶対値和sadを算出する(ステップS104)。
【0072】
そして、ステップS104において算出された縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいか否かが判断される(ステップS105)。縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいと判断されたときは(ステップS105においてYES)、これまでに算出された差分絶対値和sadよりも小さいと判断された縮小複合ブロック6の差分絶対値和sadを算出したときの縮小参照領域9に配置された画素データの位置と、縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新する(ステップS106)。
【0073】
縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さくないと判断されたとき(ステップS105においてNO)または縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新したとき(ステップS106)は、縮小参照領域9のアドレスをインクリメントする(ステップS6)。
【0074】
そして、インクリメントされた縮小参照領域9のアドレスが探索範囲外であり探索範囲が終了したか否かが判断される(ステップS7)。探索範囲が終了していないと判断されたときは(ステップS7においてNO)、ステップS4へ戻る。インクリメントされた縮小参照領域9のアドレスの画素データが読み込まれ、ステップS4からステップS6までの一連のプロセスが繰り返される。
【0075】
探索範囲が終了したと判断されたときは(ステップS7においてYES)、縮小複合ブロック6の縮小動きベクトルmvに縮小率4分の1の逆数を乗算して縮小動きベクトルmvを補正し、階層L0における動きベクトル検出のための初期動きベクトル(動きベクトルを探索するための中心位置)とする。
【0076】
そして、階層L0における複合ブロック5を構成する符号化ブロック4のナンバーn=0として先頭の符号化ブロック4を指定する(ステップS8)。次に、ナンバーnによって示される符号化ブロック4に配置された画素データが現フレームバッファ42から動きベクトル検出器2へ読み出される(ステップS9)。その後、ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか否かが判断される(ステップS301)。
【0077】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであると判断されたときは(ステップS301においてYES)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0、v=−V0(H0およびV0はゼロ以上)に設定する(ステップS10)。ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックでないと判断されたときは(ステップS301においてNO)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0−p、v=−V0−q(p>0、q>0)に設定する(ステップS302)。
【0078】
次に、ナンバーnによって示される符号化ブロック4とのブロックマッチングのために、参照領域8に配置された画素データが参照フレームバッファ43から読み出される(ステップS11)。読み出される参照領域8に配置された画素データの先頭アドレス(フレーム内座標)は、ナンバーnによって示される符号化ブロック4の中心座標に前述した初期動きベクトルと探索範囲の開始位置とが加算されたものである。
【0079】
その後、動きベクトル検出器2は、ナンバーnによって示される符号化ブロック4に配置された画素データと参照領域8に配置された画素データとの差分絶対値SADを算出する(ステップS12)。そして、動きベクトル検出器2は、算出した差分絶対値SADが最小であるか否かを判断する(ステップS13)。
【0080】
算出した差分絶対値SADが最小であると判断したときは(ステップS13においてYES)、差分絶対値SADが最小であるときの動きベクトルMVn=(dh、dv)を求めるべき動きベクトルとして更新する(ステップS14)。
【0081】
算出した差分絶対値SADが最小でないと判断したとき(ステップS13においてNO)または動きベクトルMVn=(dh、dv)を求めるべき動きベクトルとして更新したとき(ステップS14)は、参照領域8における検索開始位置を水平方向および垂直方向にインクリメントする(ステップS15)。
【0082】
そして、ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックであるか否かが判断される(ステップS401)。ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックであると判断されたときは(ステップS401においてYES)、検索範囲(h=H0、v=V0)が終了したか否かを判断する(ステップS16)。検索範囲(h=H0、v=V0)が終了していないと判断されたときは(ステップS16においてNO)、ステップS11へ戻り、次の参照領域データを読み出す。
【0083】
ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックでないと判断されたときは(ステップS401においてNO)、検索範囲(h=H0+p、v=V0+q)が終了したか否かを判断する(ステップS402)。検索範囲(h=H0+p、v=V0+q)が終了していないと判断されたときは(ステップS402においてNO)、ステップS11へ戻る。
【0084】
検索範囲(h=H0、v=V0)が終了したと判断されたとき(ステップS16においてYES)または検索範囲(h=H0+p、v=V0+q)が終了したと判断されたとき(ステップS402においてYES)は、ステップS14において求めた動きベクトルに検索を開始したときの初期動きベクトルを加算してナンバーnによって示される符号化ブロック4の動きベクトルを算出する(ステップS17)。
【0085】
そして、ナンバーnをインクリメントして複合ブロック5における次の符号化ブロック4を指定する(ステップS18)。次に、複合ブロック5におけるすべての符号化ブロック4の動きベクトルの検出が終了したか否かが判断される(ステップS19)。複合ブロック5におけるすべての符号化ブロック4の動きベクトルの検出が終了していないと判断されたときは(ステップS19においてNO)、ステップS9へ戻る。複合ブロック5におけるすべての符号化ブロック4の動きベクトルの検出が終了したと判断されたときは(ステップS19においてYES)、動きベクトルの検出処理を終了する(ステップS20)。
【0086】
本実施の形態に係る階層的動きベクトル検出の特徴は、1段目(階層L1)の動きベクトル検出において縮小複合ブロック6に重み付け/非重み付けの領域分けを導入したことである。また、これらの領域に対応した2段目(階層L0)の符号化ブロック4の動きベクトル検出において、これら2つの重み付け/非重み付け領域間で動きベクトル探索の範囲を変えることである。
【0087】
階層L0における複数の符号化ブロック4によって構成される複合ブロック5を階層L1において一つの縮小複合ブロック6として扱う。これにより縮小複合ブロックのサイズが拡大するため対象ブロック内データ数も増える。このため、動きベクトル検出の精度劣化を抑えることができる。
【0088】
しかし一方で、複数の符号化ブロック4を一つの縮小複合ブロック6にすることで広い画像範囲を対象とすることになり、他と異なる動きを有するブロックも含まれるおそれも増大する。このため、縮小複合ブロック6の中央と周辺とで重み付けを変え、中央領域は重み付けし、その周辺領域は重み付けをせず、中央領域の動きが優位に選択されるように設定する。なお、非重み付けの周辺領域については非優位な選択を補うため、2段目の階層L0で前記周辺領域と空間的に対応するブロックについて動きベクトルの探索範囲を広げることを特徴としている。
【0089】
具体的には、階層L0における複合ブロック5を構成する符号化ブロック4に対応するように階層L1の縮小複合ブロック6を分けた場合、複合ブロックの中央ブロックに対応する縮小複合ブロック6の中央領域(例えば、図3の縮小複合ブロック6の斜線領域)を重み付けし、残った周辺領域を重み付けしない。
【0090】
重み付け領域についてはブロックマッチングの際、差分絶対値に所定の重み付け値を乗算し非重み付け領域の差分絶対値よりも大きくする。これによって、縮小複合ブロック6の重み付けされた中央領域のSAD値に縮小複合ブロック6全体のSADが偏るため、そのときの動きベクトルが検出されやすくなる。
【0091】
また、階層L0において縮小複合ブロック6の重み付け領域に対応する符号化ブロックと非重み付け領域に対応する符号化ブロックとで動きベクトルの探索範囲を変える。すなわち、非重み付け領域に対応する符号化ブロックの動きベクトルの探索範囲を重み付け領域に対応する符号化ブロックの探索範囲よりも広げている。
【0092】
以上のように本実施の形態によれば、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて縮小動きベクトルが検出され、差分値は、縮小複合ブロック6における所定の領域に配置された画素データと縮小複合参照ブロックにおいて所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出される。
【0093】
このため、縮小複合ブロック6に配置された画素データの一部が特異な画素データであっても、特異な画素データの影響を排除するように重み付けをする所定の領域を設定することができる。その結果、動きベクトルの検出精度を向上させることができる。
【0094】
本実施の形態においては、縮小画像による1段目の動きベクトル検出において、縮小複合ブロック6の中央と周辺とで重み付けを変えて縮小動きベクトルを検出し、その縮小動きベクトルに基づいて、縮小前の原画像による2段目の動きベクトル検出において、縮小複合ブロック6における中央と周辺とに対応する符号化ブロックについて動きベクトルの探索範囲を変えることで、階層的動きベクトルの検出精度の劣化を抑えることできる。
【0095】
なお、本実施の形態では複合ブロック5が16個の符号化ブロック4によって構成される例を説明したが、本発明はこれに限定されない。複数の符号化ブロックであれば複合ブロック5を任意に構成してもよい。
【0096】
また、本実施の形態においては、中央と周辺と2段に分けて重み付け/非重み付け領域を分けたが、さらに細かく複数に分けて重み付けを変えてもよい。
【0097】
図6および図7は、実施の形態に係る動きベクトル検出装置の他の動作を示すフローチャートである。図4および図5を参照して前述した動きベクトル検出装置の動作を示すフローチャートの構成要素と同一の構成要素には同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0098】
図6および図7に示すフローチャートにおいては、図4および図5を参照して前述した手順と異なり、1段目(階層L1)の動きベクトル検出において縮小複合ブロック6における重み付け領域の差分絶対値和の最小値sadw_minを算出する。そして、この最小値sadw_minと縮小複合ブロック6全体の最小値(min(sad))とを比較する。そこでこれら2つの最小値間の差が小さい場合は、縮小ブロックは全体として一様な動きのブロックであると判定する。従って、一様な動きのブロックと判定された場合、階層L0での重み付け領域/非重み付け領域間での動きベクトル探索範囲の変更を実施しなくてもよい。このため、2段目の動きベクトル探索の演算が軽減される。
【0099】
図6および図7を参照すると、ステップS1〜ステップS4は、図4を参照して前述したステップS1〜ステップS4と同一である。
【0100】
そして、ステップS2において読み出された縮小複合ブロック6に配置された画素データが重み付け領域に属するか否かが判断される(ステップS101)。
【0101】
縮小複合ブロック6に配置された画素データが重み付け領域に属すると判断されたときは(ステップS101においてYES)、縮小動きベクトル検出器1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値に所定の重み付け係数を乗算した差分絶対値和sadwを求める(ステップS102)。
【0102】
そして、ステップS102において求められた差分絶対値和sadwが、これまでに求められた差分絶対値和sadwよりも小さいか否かが判断される(ステップS107)。差分絶対値和sadwが、これまでに求められた差分絶対値和sadwよりも小さいと判断されたときは(ステップS107においてYES)、ステップS102において求められた差分絶対値和sadwを最小差分絶対値和sadw_minとして更新する(ステップS108)。
【0103】
縮小複合ブロック6に配置された画素データが重み付け領域に属さないと判断されたときは(ステップS101においてNO)、縮小動きベクトル検出器1は、縮小複合ブロック6に配置された画素データと縮小参照領域9に設けられた縮小複合参照ブロックに配置された画素データとの間の絶対差分値を算出し、算出した絶対差分値を非重み付け領域における差分絶対値和sadwoとする(ステップS103)。
【0104】
差分絶対値和sadwが、これまでに求められた差分絶対値和sadwよりも小さくないと判断されたとき(ステップS107においてNO)、または差分絶対値和sadwを最小差分絶対値和sadw_minとして更新したとき(ステップS108)、または差分絶対値和sadwoが求められたとき(ステップS103)は、縮小動きベクトル検出器1は、差分絶対値和sadwと差分絶対値和sadwoとを加算した縮小複合ブロック6の差分絶対値和sadを算出する(ステップS104)。
【0105】
そして、ステップS104において算出された縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいか否かが判断される(ステップS105)。縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さいと判断されたときは(ステップS105においてYES)、これまでに算出された差分絶対値和sadよりも小さいと判断された縮小複合ブロック6の差分絶対値和sadを算出したときの縮小参照領域9に配置された画素データの位置と、縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新する(ステップS106)。
【0106】
縮小複合ブロック6の差分絶対値和sadが、これまでに算出された差分絶対値和sadよりも小さくないと判断されたとき(ステップS105においてNO)または縮小複合ブロック6の中心位置との間の変位量(dh、dv)を縮小複合ブロック6の縮小動きベクトルmvとして更新したとき(ステップS106)は、縮小参照領域9のアドレスをインクリメントする(ステップS6)。
【0107】
そして、インクリメントされた縮小参照領域9のアドレスが探索範囲外であり探索範囲が終了したか否かが判断される(ステップS7)。探索範囲が終了していないと判断されたときは(ステップS7においてNO)、ステップS4へ戻る。インクリメントされた縮小参照領域9のアドレスの画素データが読み込まれ、ステップS4からステップS6までの一連のプロセスが繰り返される。
【0108】
探索範囲が終了したと判断されたときは(ステップS7においてYES)、縮小複合ブロック6の縮小動きベクトルmvに縮小率4分の1の逆数を乗算して縮小動きベクトルmvを補正し、階層L0における動きベクトル検出のための初期動きベクトル(動きベクトルを探索するための中心位置)とする。
【0109】
そして、階層L0における複合ブロック5を構成する符号化ブロック4のナンバーn=0として先頭の符号化ブロック4を指定する(ステップS8)。次に、ナンバーnによって示される符号化ブロック4に配置された画素データが現フレームバッファ42から動きベクトル検出器2へ読み出される(ステップS9)。
【0110】
その後、ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいかが判断される(ステップS301A)。
【0111】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいと判断されたときは(ステップS301AにおいてYES)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0、v=−V0(H0およびV0はゼロ以上)に設定する(ステップS10)。
【0112】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックでなく、且つ、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さくないと判断されたときは(ステップS301AにおいてNO)、動きベクトルの探索を開始するための動きベクトル探索開始位置をh=−H0−p、v=−V0−q(p>0、q>0)に設定する(ステップS302)。
【0113】
ステップS11からステップS15までは、図5を参照して前述したステップS11〜ステップS15と同一である。
【0114】
そして、ナンバーnによって示される符号化ブロック4が重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいかが判断される(ステップS411)。
【0115】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックであるか、または、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さいと判断されたときは(ステップS411においてYES)、検索範囲(h=H0、v=V0)が終了したか否かを判断する(ステップS16)。検索範囲(h=H0、v=V0)が終了していないと判断されたときは(ステップS16においてNO)、ステップS11へ戻り、次の参照領域データを読み出す。
【0116】
ナンバーnによって示される符号化ブロック4が縮小複合ブロック6に設定された重み付け領域に対応する符号化ブロックでなく、且つ、ステップS108において更新された縮小複合ブロック6の重み付け領域における最小差分絶対値和sadw_minとステップS105における縮小複合ブロック6の差分絶対値和min(sad)との間の差分絶対値が所定の値th1よりも小さくないと判断されたときは(ステップS411においてNO)、検索範囲(h=H0+p、v=V0+q)が終了したか否かを判断する(ステップS402)。検索範囲(h=H0+p、v=V0+q)が終了していないと判断されたときは(ステップS402においてNO)、ステップS11へ戻る。
【0117】
ステップS17からステップS20までは、図5を参照して前述したステップS17〜ステップS20と同一である。
【0118】
このように、1段目の縮小複合ブロック6に設けられた重み付け領域における最小SADを算出し、それを縮小複合ブロック6全体の最小SADと比較することで、その差が所定の値以下で小さければ縮小複合ブロック6は全体として一様な動きのブロックとみなし、階層L0において重み付け領域/非重み付け領域間での動きベクトル探索範囲を変更しなくてもよい。このため、動きベクトル探索範囲を削減することができる。
【0119】
なお、本実施の形態では縮小複合ブロック6に設けられた重み付け領域の最小値SADを算出し、それを階層L0において条件判断で用いたが、重み付け領域の最小値SADの動きベクトルを算出し、縮小複合ブロック6全体の動きベクトルと比較する条件を用いてもよい。その場合、動きベクトルの値が所定の範囲内であれば、全体として一様な動きのブロックとみなせばよい。
【0120】
図8は、実施の形態に係る動きベクトル検出装置のさらに他の動作を説明するための模式図である。図3を参照して前述した構成要素と同一の構成要素には同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0121】
符号化フレーム3Aは、720画素×480ラインによって構成されており、複合ブロック5Aを有している。複合ブロック5Aは、動きベクトルを求める対象となる複数の符号化ブロック4Aを有している。符号化ブロック4Aは、2行×2列のマトリックス状に配置されている。各符号化ブロック4Aは、16行×16列の画素によって構成されている。参照フレーム7Aは、720画素×480ラインによって構成されており、動きベクトルを検出するための参照領域8Aを有している。
【0122】
縮小符号化フレーム17Aは、符号化フレーム3Aを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。縮小符号化フレーム17Aは、複合ブロック5Aを水平方向および垂直方向に沿って4分の1に縮小した縮小複合ブロック6Aを有している。縮小複合ブロック6Aは、2行×2列のマトリックス状に配置された縮小符号化ブロックによって構成されている。各縮小符号化ブロックは、4行×4列のマトリックス状に配置された画素によって構成されている。
【0123】
縮小参照フレーム16Aは、参照フレーム7Aを水平方向および垂直方向に沿って4分の1に縮小したものであり、180画素×120ラインによって構成されている。縮小参照フレーム16Aは、参照領域8Aを水平方向および垂直方向に沿って4分の1に縮小した縮小参照領域9Aを有している。
【0124】
本実施の形態においては、1段目(階層L1)の動きベクトル検出において、縮小複合ブロック6A全体の縮小メイン動きベクトルを検出すると同時に、縮小複合ブロック6A(mb)のサブブロック(mbn)の縮小サブ動きベクトルを求める。このとき、サブブロックの縮小サブ動きベクトル(mvn)は縮小複合ブロック6Aの縮小メイン動きベクトル(mv)の探索範囲内において同時に探索される。また、サブブロックは2段目(階層L0)の複合ブロック5Aを構成する符号化ブロック4Aにそれぞれ空間的に対応する。
【0125】
このことによって、縮小複合ブロック6Aの動きと大きく異なる動きがサブブロックに存在した場合、サブブロックの縮小サブ動きベクトルを階層L0における2段目の動きベクトルとして用いることで、動きベクトル検出精度の劣化を抑えることができる。
【0126】
サブブロックの縮小サブ動きベクトル検出については、サブブロックそれぞれのSAD(sadn)を算出し、それらsadnの最小時の動きベクトルを検出する。縮小複合ブロック6A全体の縮小メイン動きベクトルは、サブブロックのsadnを総和したsadが最小となるときの動きベクトルを検出する。
【0127】
なお、2段目(階層L0)における動きベクトル検出では、サブブロックの縮小サブ動きベクトルと縮小複合ブロック6A全体の縮小メイン動きベクトルとの間の差が所定の値以内であれば、縮小複合ブロック6A全体の縮小メイン動きベクトルを2段目(階層L0)における動きベクトルとする。もしサブブロックの縮小サブ動きベクトルと縮小複合ブロック6A全体の縮小メイン動きベクトルとが、所定の値を超えて異なれば、サブブロックの縮小サブ動きベクトルに基づいて、符号化ブロックの動きベクトルを検出する。
【0128】
図9および図10は、実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャートである。図4および図5を参照して前述したフローチャートの構成要素と同一の構成要素には同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0129】
ステップS1〜ステップS4は、図4を参照して前述したステップS1〜ステップS4と同一である。
【0130】
そして、縮小サブブロックmbn のデータと縮小参照領域9Aの対応データとの差分絶対値和であるsadnを算出する(ステップS111)。この場合nは0、1、2、3である。
【0131】
次に、算出されたsad0、sad1、sad2、sad3が、動きベクトル検索範囲内でこれまでのそれらよりも小さな値か否かが判定される(ステップS112)。もし小さな値であれば(ステップS112においてYES)、そのときの動きベクトル値(縮小サブブロックmbnの中心からそれに対応する縮小参照領域(サブ縮小参照領域)の中心までの空間的変位量mvn=(dh、dv))が更新される(ステップS113)。
【0132】
算出されたsad0、sad1、sad2、sad3が、動きベクトル検索範囲内でこれまでのそれらよりも小さな値でないとき(ステップS112においてNO)、またはmvn=(dh、dv))が更新されたとき(ステップS113)は、縮小サブブロックmbnのsad0、sad1、sad2、sad3を互いに加算して縮小複合ブロック6A全体の差分絶対値和sadを算出する(ステップS114)。
【0133】
そして、縮小複合ブロック6A全体の差分絶対値和sadがこれまでのsad値よりも小さいか否かが判定される(ステップS115)。もし、小さければ(ステップS115においてYES)、そのときの動きベクトル(縮小複合ブロックmbの中心から探索縮小参照領域の中心までの空間的変位量mv=(dh、dv))が算出される(ステップS116)。
【0134】
縮小複合ブロック6A全体の差分絶対値和sadがこれまでのsad値よりも小さくないと判定されたとき(ステップS115においてNO)、または、空間的変位量mv=(dh、dv))が算出されたとき(ステップS116)は、次の探索範囲の縮小参照領域に配置された画素データを読み出すために、水平hあるいは垂直vのカウントがインクリメントされる(ステップS6)。
【0135】
そして、検索範囲が終了したか否かが判断される(ステップS7)。検索範囲が終了していないと判断されたときは(ステップS7においてNO)、ステップS4へ戻る。検索範囲が終了したと判断されたときは(ステップS7においてYES)、階層L0における複合ブロック5Aを構成する符号化ブロック4Aのナンバーn=0として先頭の符号化ブロック4Aを指定する(ステップS8)。
【0136】
次に、現フレームバッファ42から符号化ブロックMBn(開始時n=0)に配置された画素データが読み出される(ステップS9)。その後、符号化ブロックMBnに空間的に対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)とが比較され、その差分が所定の値th2未満であるか否かが判断される(ステップS321)。
【0137】
符号化ブロックMBnに空間的に対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値th2未満であると判断されたときは(ステップS321においてYES)、対象符号化ブロックMBnの初期の動きベクトルは縮小複合ブロック6A全体の縮小メイン動きベクトルを補正(縮小の逆比を乗算)した値が設定される(ステップS322)。
【0138】
符号化ブロックMBnに空間的に対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値th2未満でないと判断されたときは(ステップS321においてNO)、符号化ブロックMBnの初期動きベクトルは縮小サブブロックの縮小サブ動きベクトルを補正した値(縮小の逆比を乗算)に設定される(ステップS323)。
【0139】
縮小サブブロックの縮小サブ動きベクトルと縮小複合ブロックmbの縮小メイン動きベクトルとの比較は、例えば、両動きベクトル間における水平方向に沿った動きベクトル成分dhの差分絶対値と垂直方向に沿った動きベクトル成分dvの差分絶対値とを加えたものが用いられる。
【0140】
この後のプロセスは、上記どちらかの初期動きベクトル値を探索の中心にして、符号化ブロックMBnとそれに対応する参照領域データとの間でブロックマッチングされる。その結果、最小のSADが算出された参照領域の中心と符号化ブロックのMBnの中心との空間的変位が動きベクトル値として算出される。
【0141】
以上のように本実施の形態によれば、参照フレーム7Aに設けられた参照領域8Aを縮小した縮小参照領域9Aに配置された画素データに基づいて、符号化フレーム3Aに設けられた複数の符号化ブロック4Aを含む複合ブロック5Aを縮小した縮小複合ブロック6Aの動きベクトルを表す縮小メイン動きベクトルと、符号化フレーム3Aにそれぞれ設けられた各符号化ブロック4Aと対応するように縮小複合ブロック6Aにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとがそれぞれ検出され、それぞれ検出された縮小メイン動きベクトルと縮小サブ動きベクトルとに基づいて、複合ブロック5Aに含まれる各符号化ブロック4Aの動きベクトルがそれぞれ検出される。
【0142】
このため、縮小複合ブロック6Aに配置された画素データの一部が特異な画素データであっても、動きベクトルの検出精度を向上させることができる。
【0143】
このように、1段目の動きベクトル検出において縮小ブロック全体の動きベクトル検出と同時に縮小ブロックのサブブロック(2段目の複合ブロックを構成する個々のブロックに空間的に対応)の動きベクトルを求めることで、縮小ブロック全体と大きく異なる動きがサブブロックに存在する場合、1段目のサブブロックの動きベクトルを2段目に用いることで動きベクトルの検出精度の劣化を抑えることができる。
【0144】
図11は、実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャートである。動きベクトル検出装置のさらに他の動作について、前述した図9および図10に示すフローチャートに追加変更を加えた図11に示すフローチャートを用いて説明する。なお、本実施例の説明図としては図8の説明図を用いる。前述した図9および図10に示すフローチャートの構成要素と同一の構成要素には、同一の参照符号を付している。従って、これらの構成要素の詳細な説明は省略する。
【0145】
本実施例では、階層L0における複数の符号化ブロック4A(16画素×16ラインからなる4個のブロック)によって構成された複合ブロック5Aが、階層L1において一つの縮小化された縮小複合ブロック6Aとして縮小動きベクトルが検出される。階層L1は、水平1/4、垂直1/4に縮小化された場合とする。
【0146】
本実施例と前述した図9および図10に示すフローチャートの実施例との違いは、2段目(階層L0)の動きベクトル検出における初期動きベクトルの設定に関して、1段目(階層L1)で検出された縮小複合ブロック6Aの縮小メイン動きベクトルと縮小サブブロックの縮小サブ動きベクトルとを比較判定する方法に関する部分である。
【0147】
前述した図9および図10に示すフローチャートの実施例においては、縮小複合ブロック6A全体の縮小メイン動きベクトルに対して縮小サブブロックの縮小サブ動きベクトルが大きく異なる場合は、すべて縮小サブブロックの縮小サブ動きベクトルを2段目の初期動きベクトルとして設定した。これに対して本実施例においては、上記縮小複合ブロック6A全体の縮小メイン動きベクトルに対して縮小サブブロックの縮小サブ動きベクトルが大きく異なる場合についても、縮小サブブロックの最小sadnが小さく、且つその最小sadnの4倍と縮小複合ブロック6A全体の最小sadとの差分が小さい場合には、その縮小サブブロックの縮小サブ動きベクトルは縮小複合ブロック6A全体の縮小メイン動きベクトルと同じにするという条件が加わる。
【0148】
このことは、一部の縮小サブブロックの縮小サブ動きベクトル検出において、できるだけ小さなsadの縮小参照領域とのマッチングが優先され、その結果本来の動きベクトルと大きくかけ離れたベクトルが選択されてしまう場合を抑制させるためである。このようなケースとして、最小sadnが小さく他のサブブロックのsadnも差が小さく、動きベクトルだけが大きい場合がある。
【0149】
本実施例では、階層L0の複合ブロック5Aを縮小化した1段目(階層L1)のある縮小ブロックについて動きベクトルを検出し、それを初期動きベクトル値(前記動きベクトルは縮小比率の逆比で補正された値)として2段目(階層L0)の符号化ブロック4Aの動きベクトルを検出するそのプロセスの一部を示したものである。
【0150】
階層L1において縮小複合ブロック6Aの縮小メイン動きベクトルおよびそのサブブロックの縮小サブ動きベクトルを検出するステップは、前述した図9および図10に示すフローチャートの実施例と同一である。
【0151】
初期動きベクトルを検出した後、階層L0において符号化ブロックMBnの動きベクトルを検出する。この場合、n=0、1、2、3である。
【0152】
そして、現フレームバッファ42から符号化ブロックMBn(開始時n=0)に配置された画素データが読み出される(ステップS9)。次に、符号化ブロックMBnに対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)とが比較され、その差分が所定の値(th2)未満であるか否かが判断される(ステップS321)。
【0153】
符号化ブロックMBnに対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値(th2)未満でないと判断されたときは(ステップS321においてNO)、符号化ブロックMBnに対応する縮小サブブロックの最小sadnが所定の値(th3)未満であって、且つその最小値を4倍した値と縮小複合ブロックの最小sadと間の差分絶対値が所定の値(th4)未満であるか否かが判断される(ステップS331)。
【0154】
符号化ブロックMBnに対応する縮小サブブロックmbnの縮小サブ動きベクトル(mvn)と縮小複合ブロックmbの縮小メイン動きベクトル(mvn)との間の差分が所定の値(th2)未満であると判断されたときは(ステップS321においてYES)、または、符号化ブロックMBnに対応する縮小サブブロックの最小sadnが所定の値(th3)未満であって、且つその最小値を4倍した値と縮小複合ブロックの最小sadと間の差分絶対値が所定の値(th4)未満であると判断されたとき(ステップS331においてYES)は、符号化ブロックMBnの初期の動きベクトルを、縮小複合ブロック6A全体の縮小メイン動きベクトルを補正した値に設定する(ステップS322)。
【0155】
符号化ブロックMBnに対応する縮小サブブロックの最小sadnが所定の値(th3)未満でないか、または、その最小値を4倍した値と縮小複合ブロックの最小sadと間の差分絶対値が所定の値(th4)未満でないと判断されたとき(ステップS331においてNO)は、符号化ブロックMBnの初期の動きベクトルを、縮小サブブロックの縮小サブ動きベクトルに設定する(ステップS323)。
【0156】
この後のプロセスは、前述した図9および図10に示すフローチャートの実施例と同一であり、上記どちらかの初期動きベクトル値を探索の中心にして、符号化ブロックMBnとそれに対応する参照領域データとでブロックマッチングし、最小のSADの参照領域の中心と符号化ブロックMBnの中心との間の空間的変位量を動きベクトルとする。
【0157】
以上のように本実施の形態によれば、1段目の動きベクトル検出において、一部の縮小サブブロックが誤ってより小さなsadの縮小参照領域のデータとマッチングされてしまい、その結果2段目の動きベクトル探索において大きく異なる初期動きベクトルが設定されてしまうという問題を避けることができる。
【0158】
【発明の効果】
以上のように本発明によれば、動きベクトルの検出精度が高い動きベクトル検出装置および動きベクトル検出方法を提供することができる。
【図面の簡単な説明】
【図1】実施の形態に係る動きベクトル検出装置の構成を示すブロック図
【図2】実施の形態に係る動きベクトル検出装置に設けられた縮小動きベクトル検出器の構成を説明するためのブロック図
【図3】実施の形態に係る動きベクトル検出装置の動作を説明するための模式図
【図4】実施の形態に係る動きベクトル検出装置の動作を示すフローチャート
【図5】実施の形態に係る動きベクトル検出装置の動作を示すフローチャート
【図6】実施の形態に係る動きベクトル検出装置の他の動作を示すフローチャート
【図7】実施の形態に係る動きベクトル検出装置の他の動作を示すフローチャート
【図8】実施の形態に係る動きベクトル検出装置のさらに他の動作を説明するための模式図
【図9】実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャート
【図10】実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャート
【図11】実施の形態に係る動きベクトル検出装置のさらに他の動作を示すフローチャート
【図12】従来の動きベクトル検出装置の動作を説明するための模式図
【図13】従来の動きベクトル検出装置における縮小画像を生成する方法を説明するための模式図
【図14】従来の動きベクトル検出装置の他の動作を説明するための模式図
【符号の説明】
1 縮小動きベクトル検出器
2 動きベクトル検出器
3、3A、3B、3C 符号化フレーム
4、4A、4B、4C 符号化ブロック
5、5A、5C 複合ブロック
6 6A、6C 縮小複合ブロック
6B 縮小ブロック
7、7A、7B、7C 参照フレーム
8、8A、8B、8C 参照領域
9、9A、9B、9C 縮小参照領域
16、16A、16B、16C 縮小参照フレーム
17、17A、17B、17C 縮小符号化フレーム
40 メモリユニット
41 縮小器
42 現フレームバッファ
43 参照フレームバッファ
45 符号化器
50 アドレス移動器
51 差分演算器
52 絶対値算出器
53 加算器
54 判定器
55 コントローラ
56 メモリ
100 動きベクトル検出装置
Claims (11)
- 参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出手段と、
前記縮小動きベクトル検出手段によって検出された前記縮小動きベクトルに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備しており、
前記縮小動きベクトル検出手段は、前記縮小複合ブロックに配置された画素データと前記縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて前記縮小動きベクトルを検出し、
前記差分値は、前記縮小複合ブロックにおける所定の領域に配置された画素データと前記縮小複合参照ブロックにおいて前記所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出されることを特徴とする動きベクトル検出装置。 - 前記縮小複合ブロックには、前記評価値を算出するための画素データに重み付けをする重み付け領域と、前記評価値を算出するための画素データに重み付けをしない非重み付け領域とが設けられており、
前記重み付け領域は、前記縮小複合ブロックの中央に配置されており、
前記非重み付け領域は、前記重み付け領域を囲むように前記縮小複合ブロックの周縁に配置されている、請求項1記載の動きベクトル検出装置。 - 前記複合ブロックは、4行×4行の符号化ブロックによって構成されており、
前記縮小複合ブロックに設けられた前記重み付け領域は、前記複合ブロックの中央に配置された2行×2列の符号化ブロックに対応する位置に配置されており、
前記非重み付け領域は、前記複合ブロックの周縁に配置された符号化ブロックに対応する位置に配置されている、請求項2記載の動きベクトル検出装置。 - 前記複合ブロックは、マトリックス状に配置された複数の符号化ブロックによって構成されている、請求項1記載の動きベクトル検出装置。
- 前記動きベクトル検出手段は、前記縮小動きベクトル検出手段によって検出された前記縮小動きベクトルに応じて各符号化ブロックごとに前記参照領域にそれぞれ設けられる探索領域に配置された画素データに基づいて各符号化ブロックの動きベクトルをそれぞれ検出し、
前記非重み付け領域に対応する符号化ブロックの動きベクトルを検出するための探索領域は、前記重み付け領域に対応する符号化ブロックの動きベクトルを検出するための探索領域よりも広くなっている、請求項2記載の動きベクトル検出装置。 - 前記縮小動きベクトル検出手段は、前記評価値が最小となる前記縮小複合参照ブロックに基づいて前記縮小動きベクトルを検出する、請求項1記載の動きベクトル検出装置。
- 参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、前記符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように前記縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとをそれぞれ検出する縮小動きベクトル検出手段と、
前記縮小動きベクトル検出手段によってそれぞれ検出された前記縮小メイン動きベクトルと前記縮小サブ動きベクトルとに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出手段とを具備することを特徴とする動きベクトル検出装置。 - 前記動きベクトル検出手段は、各縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の差に応じて、各縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出する、請求項7記載の動きベクトル検出装置。
- 前記動きベクトル検出手段は、前記縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の前記差が所定の値よりも大きいときは、前記縮小サブ動きベクトルに基づいて、前記縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出し、
前記縮小サブ動きベクトルと前記縮小メイン動きベクトルとの間の前記差が所定の値以下であるときは、前記縮小メイン動きベクトルに基づいて、前記縮小サブ動きベクトルに対応する符号化ブロックの動きベクトルを検出する、請求項8記載の動きベクトル検出装置。 - 参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの縮小動きベクトルを検出する縮小動きベクトル検出工程と、
前記縮小動きベクトル検出工程によって検出された前記縮小動きベクトルに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出工程とを包含しており、
前記縮小動きベクトル検出工程は、前記縮小複合ブロックに配置された画素データと前記縮小参照領域に設けられた縮小複合参照ブロックに配置された画素データとの間の差分値を加算した評価値に基づいて前記縮小動きベクトルを検出し、
前記差分値は、前記縮小複合ブロックにおける所定の領域に配置された画素データと前記縮小複合参照ブロックにおいて前記所定の領域に対応する領域に配置された画素データとにそれぞれ重み付けをして算出されることを特徴とする動きベクトル検出方法。 - 参照フレームに設けられた参照領域を縮小した縮小参照領域に配置された画素データに基づいて、符号化フレームに設けられた複数の符号化ブロックを含む複合ブロックを縮小した縮小複合ブロックの動きベクトルを表す縮小メイン動きベクトルと、前記符号化フレームにそれぞれ設けられた各符号化ブロックと対応するように前記縮小複合ブロックにそれぞれ配置された縮小サブブロックの動きベクトルを表す縮小サブ動きベクトルとをそれぞれ検出する縮小動きベクトル検出工程と、
前記縮小動きベクトル検出工程によってそれぞれ検出された前記縮小メイン動きベクトルと前記縮小サブ動きベクトルとに基づいて、前記複合ブロックに含まれる各符号化ブロックの動きベクトルをそれぞれ検出する動きベクトル検出工程とを包含することを特徴とする動きベクトル検出方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002342846A JP2004179906A (ja) | 2002-11-26 | 2002-11-26 | 動きベクトル検出装置および動きベクトル検出方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002342846A JP2004179906A (ja) | 2002-11-26 | 2002-11-26 | 動きベクトル検出装置および動きベクトル検出方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2004179906A true JP2004179906A (ja) | 2004-06-24 |
Family
ID=32704785
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002342846A Withdrawn JP2004179906A (ja) | 2002-11-26 | 2002-11-26 | 動きベクトル検出装置および動きベクトル検出方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2004179906A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011082703A (ja) * | 2009-10-05 | 2011-04-21 | Nippon Hoso Kyokai <Nhk> | 予測ベクトル補正装置及びプログラム |
| JP2012065176A (ja) * | 2010-09-16 | 2012-03-29 | Fujitsu Ltd | 動画像符号化装置 |
| JP2014093602A (ja) * | 2012-11-01 | 2014-05-19 | Toshiba Corp | 画像処理装置、画像処理方法、画像処理プログラム、および立体画像表示装置 |
| JP2016063358A (ja) * | 2014-09-17 | 2016-04-25 | 株式会社ソシオネクスト | 符号化回路、符号化方法 |
| JP7049499B1 (ja) | 2021-03-04 | 2022-04-06 | 株式会社Cygames | コンテンツ動画再生プログラム、コンテンツ動画再生装置、コンテンツ動画再生方法、コンテンツ動画データ生成プログラム、及びコンテンツ動画データ生成装置 |
-
2002
- 2002-11-26 JP JP2002342846A patent/JP2004179906A/ja not_active Withdrawn
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011082703A (ja) * | 2009-10-05 | 2011-04-21 | Nippon Hoso Kyokai <Nhk> | 予測ベクトル補正装置及びプログラム |
| JP2012065176A (ja) * | 2010-09-16 | 2012-03-29 | Fujitsu Ltd | 動画像符号化装置 |
| JP2014093602A (ja) * | 2012-11-01 | 2014-05-19 | Toshiba Corp | 画像処理装置、画像処理方法、画像処理プログラム、および立体画像表示装置 |
| JP2016063358A (ja) * | 2014-09-17 | 2016-04-25 | 株式会社ソシオネクスト | 符号化回路、符号化方法 |
| US10104396B2 (en) | 2014-09-17 | 2018-10-16 | Socionext Inc. | Encoder circuit and encoding method |
| JP7049499B1 (ja) | 2021-03-04 | 2022-04-06 | 株式会社Cygames | コンテンツ動画再生プログラム、コンテンツ動画再生装置、コンテンツ動画再生方法、コンテンツ動画データ生成プログラム、及びコンテンツ動画データ生成装置 |
| WO2022186235A1 (ja) * | 2021-03-04 | 2022-09-09 | 株式会社Cygames | コンテンツ動画再生プログラム、コンテンツ動画再生装置、コンテンツ動画再生方法、コンテンツ動画データ生成プログラム、及びコンテンツ動画データ生成装置 |
| JP2022134845A (ja) * | 2021-03-04 | 2022-09-15 | 株式会社Cygames | コンテンツ動画再生プログラム、コンテンツ動画再生装置、コンテンツ動画再生方法、コンテンツ動画データ生成プログラム、及びコンテンツ動画データ生成装置 |
| US12539465B2 (en) | 2021-03-04 | 2026-02-03 | Cygames, Inc. | Content-video playback program, content-video playback device, content-video playback method, content-video-data generation program, and content-video-data generation device |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7099393B2 (en) | Motion vector detection apparatus for performing checker-pattern subsampling with respect to pixel arrays | |
| KR20020085269A (ko) | 다중 후보를 이용한 움직임 벡터 병합 탐색 방법 | |
| JP5471449B2 (ja) | 移動領域検出装置 | |
| JPWO2009102013A1 (ja) | 移動ベクトル検出装置 | |
| JP2009105950A (ja) | 動きベクトル導出方法、動きベクトル導出プログラム及びこの動きベクトル導出プログラムを格納したデータ記憶媒体 | |
| CN1260977C (zh) | 在数字影像压缩中决定运动矢量的方法 | |
| US20050249284A1 (en) | Method and apparatus for generating motion vector in hierarchical motion estimation | |
| US8649436B2 (en) | Methods for efficient implementation of skip/direct modes in digital video compression algorithms | |
| KR101217627B1 (ko) | 블록 기반의 움직임 추정 방법 및 장치 | |
| US20060114997A1 (en) | Temporal prediction in video coding | |
| JP2004179906A (ja) | 動きベクトル検出装置および動きベクトル検出方法 | |
| CN113489988B (zh) | 一种hevc整像素运动估计方法及装置 | |
| JP3175914B2 (ja) | 画像符号化方法および画像符号化装置 | |
| CN101841701B (zh) | 基于宏块对的编解码方法及装置 | |
| JP4597103B2 (ja) | 動きベクトル探索方法及び装置 | |
| US9497482B2 (en) | Methods for comparing a target block to a reference window for motion estimation during video encoding | |
| JP2004229150A (ja) | 動きベクトル探索方法および装置 | |
| JP3968161B2 (ja) | 動ベクトル検出装置および記録媒体 | |
| JP2016052056A (ja) | 符号化回路、符号化方法 | |
| CN117793368B (zh) | 视频处理方法、装置、电子设备及存储介质 | |
| JPH1013842A (ja) | マルコフモデル画像符号化装置 | |
| JPH10112865A (ja) | 復号信号の符号化方法 | |
| JPH0965342A (ja) | 映像符号化装置及び映像復号化装置 | |
| JP4205636B2 (ja) | 画像予測符号化方法,画像予測復号方法,画像符号化装置,画像復号装置,画像符号化プログラム,画像復号プログラムおよびそれらのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| JPH0993581A (ja) | 動画像符号化装置の動き検出装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060207 |
