本発明は、動画像符号化技術に関し、特に、被符号化画像と参照画像とから被符号化画像の動きベクトルを検出する動き検出装置に関するものである。
今日、動画像の伝送技術と蓄積技術は、我々の生活を豊かなものにする上で非常に重要な技術となっている。
例えば、携帯情報端末を用いた遠隔地でのテレビ電話が可能となっている。このテレビ電話では、音声に同期させて、動画像を相互に伝送できるため、従来に比べより豊かな表現力のあるコミュニケーションが実現ができる。テレビ電話の伝送路は無線であり、現在の伝送速度は、64kbps(bit per second)である。将来的には、2Mbps程度まで高速化される可能性はある。しかし、比較的低い伝送速度の下で、伝送する画像の画質を向上させるためには、動画像の伝送技術、特に、動画像の圧縮符号化技術が重要である。
もう一方の重要技術である動画像の蓄積技術は、年々発展している。近年では、DVD(Digital Versatile Disk)レコーダを使って、ディジタル方式でテレビ番組を録画することも可能となっている。DVDレコーダは年々販売台数を伸ばし、VHSレコーダが全てDVDレコーダに置き換わるのも時間の問題である。VHSレコーダと同様に、DVDレコーダにおいても、高画質で長時間録画できることは、重要なセールスポイントである。DVDレコーダに使用される記録媒体(DVD−RAM、DVD−RW、ブルーレイディスクなど)の記録密度は、年々向上しているが、現状では、ハイビジョン番組を高画質で長時間録画するまでには至っていない。記録媒体の限られた領域に、長時間の映像を画質を保ちつつ録画するためには、画質を落とさずに映像を低ビットレートで符号化する動画像符号化技術が重要となる。
動画像符号化技術には、様々な方式が提案されている。画像圧縮技術の標準規格としては、ITU−T(国際電気通信連合電気通信標準化部門)のH.261、H.263、ISO(国際標準化機構)のMPEG−1、MPEG−2、MPEG−4などがある。(MPEGは、Moving Picture Experts Groupの略語。)
これらの動画像符号化処理において、符号化の対象となる入力画像は、縦16画素×横16画素の輝度成分、縦8画素×横8画素の色差成分(Cb)、および、縦8画素×横8画素の色差成分(Cr)から構成されるマクロブロックに分割される。各マクロブロックは、参照画像から最も類似したブロックが探索され(いわゆる動き検出処理が行われ)、探索された参照画像のブロックとの差分がとられる。そして、その差分は周波数領域に変換された後、可変長符号化されてビットストリームに変換される。
これらの符号化処理の中で、画質を大きく左右する処理が動き検出処理である。MPEG符号化処理装置において、重要な構成要素である動き検出部について、先ず、説明する。
動き検出には、様々な手法が存在するが、最も代表的な方法がブロックマッチング法である。ブロックマッチング法は、現画像のマクロブロックと、参照画像のある特定の範囲(以降、探索範囲と呼ぶ)から生成される、マクロブロックと同じサイズのブロックとの間で、画素レベルの演算を行い、相関度を示す評価値を求め、その評価値が最もよい結果となる参照画像上の位置を動きベクトルとして検出する方法である。評価値として、一般に、差分絶対値和(SAD)や差分二乗和(SSD)が用いられ、その値が小さいほど相関性が高いとみなされる。
従来、階層的に動き検出を実施する例がある。たとえば、文献1(日本国特開2002−218474号公報)は、動きベクトルの検出を1/2画素精度で実施するために、第1ステップとして、比較的大きな探索範囲で整数画素精度の動きベクトル検出を実施し、第2ステップとして、第1ステップで検出した動きベクトルの周囲で、かつ、第1ステップより小さい探索範囲で、1/2画素精度の動きベクトルを検出する技術を開示している。
図22と図23とを参照して、従来技術による動き検出の方法を具体的に説明する。
図22は、従来の一般的な動き検出部のブロック図である。図22に示す従来の一般的な動き検出部は、整数画素精度動き検出部1、1/2画素精度動き検出部2、動き補償部3、第1ローカルメモリ4、第2ローカルメモリ5、第3ローカルメモリ6、DMAコントローラ7、及び、SDRAM8を備える。
図23は、従来の一般的な動き検出部のフローチャートである。
図23のステップS1において、SDRAM8に格納されている入力画像から、符号化対象のマクロブロック(以下、カレントマクロブロックと呼ぶ)を第1ローカルメモリ4へ転送する。
ステップS2において、カレントマクロブロックから決定される動き検出範囲、すなわち、探索範囲の画像データ、例えば、−32<=X<=+32、−32<=Y<=+32の探索範囲の画像データが、参照画像として、SDRAM8から第1ローカルメモリ4へ転送される。
ステップS3において、整数画素精度動き検出部1は、第1ローカルメモリ4に転送された、カレントマクロブロックと参照画像の探索範囲に対して、整数画素精度動き検出を行う。整数画素精度動き検出では、整数画素精度動き検出部1は、整数画素のみを用いて、カレントマクロブロックと最も相関の強い同じサイズのブロックを探索範囲から検出し、動きベクトルを求める。動きベクトルは、カレントマクロブロックの左端上の座標に対する、検出したブロックの左端上の座標の相対位置で表現する。相関の強さは、例えば、2つのブロック内の対応する画素における輝度成分の差分絶対値和(SAD)や差分二乗和(SSD)として評価される。
階層化して動き検出を行う場合、一般的に整数画素精度動き検出は、それ以降の階層の動き検出より探索範囲が大きい。そのため、必要とされるメモリ容量が大きくなる。
メモリ容量増大を回避するために、例えば、画素を間引いてメモリへ転送し、動き検出の精度を落とす方法がある。図24は、1画素毎に間引かれた整数画素を示す。すなわち、図24に示す例では、横方向に1画素毎に画素P2が間引かれて、画素P1のみが参照画像として用いられる。このように間引くと、間引かない場合と比較して横方向の検出精度が1/2に落ちる。しかし、第1ローカルメモリ4に確保されるべき参照画像用の領域は、1/2に削減できる。この方法により、同じ探索範囲を少ないメモリ容量で探索できる。または、同じメモリ容量で広範囲の動き検出を行うことができる。どのような間引き方法を採用するかは、検出精度が落ちることによる画質劣化と、探索範囲が広がることによる画質向上のトレードオフ関係により、決定される。
図23に戻って、ステップS4において、ステップS3の整数画素精度動き検出で求めた動きベクトルMV−INTを基に、1/2画素精度動き検出に必要な参照画像が、SDRAM8から第2ローカルメモリ5へ転送される。
上述したように、整数画素精度動き検出の参照画像の画素を間引いた場合、1/2画素精度動き検出のための参照画像を、SDRAM8より再び取得する必要がある。なぜなら、後述するように、規格上、1/2画素を算出するためには、必ず隣接する整数画素が必要となるからである。整数画素精度動きベクトルMV−INTの周辺8点の1/2画素に対して、1/2画素精度動き検出を行う場合、SDRAM8に格納されている参照画像から、動きベクトルMV−INTを基準として、X方向に「−1」、Y方向に「−1」移動した座標位置から、横方向に18画素、縦方向に18ラインの画像が取得され、第2ローカルメモリ5に転送される。SDRAM8に対して、32ビット単位のアクセスしかできない場合は、参照画像として必要のない画素データを読み出してしまう場合があり、最大で横24画素、縦18ライン分の画像データを読み出す場合もある。
ステップS5において、1/2画素精度動き検出部2は、1/2画素精度動き検出を実施する。例えば、動きベクトルMV−INTの周辺8点において、ステップS4において第2ローカルメモリ5に転送された参照画像を用いて、1/2画素を生成し、その8個の1/2画素及び探索中心位置の整数画素と、カレントマクロブロックとで差分絶対値和演算を行う。
図25は、整数画素Bの近傍に生成された1/2画素を示す。すなわち、探索中心位置である整数画素Bの周りに、1/2画素a〜hが生成されている。1/2画素は、例えば、MPEG−4のシンプルプロファイルの場合、整数画素A〜Dを用いて、次のように算出される。
図25の1/2画素fと1/2画素dは、それぞれ、
f=(A+B+C+D+2−R)/4
d=(A+B+1−R)/2
と算出される。ここで、Rは、rounding controlと呼ばれ、「0」または「1」が代入される。
1/2画素精度動き検出部2は、探索中心位置の整数画素Bとその周りの8個の1/2画素a〜hの計9点の画素に対して、差分絶対値和の値が最も小さくなる点を求める。求めた差分絶対値和の値が最も小さくなる点に対する探索中心位置からのオフセット座標を、動きベクトルMV−INTに加算することにより、1/2画素精度の動きベクトルMV−HALFが算出される。
さらに検出精度を向上させるために、1/2画素精度動き検出で求めた動きベクトルMV−HALFを基に、1/4画素精度動き検出を実施する場合もある。例えば、1/2画素精度動き検出と同様に、動きベクトルMV−HALFの周辺8点において、参照画像を用いて1/4画素を生成し、探索中心位置の1/2画素とその周りに生成した8個の1/4画素の計9点の画素に対して、差分絶対値和の値が最も小さくなる点を探索する。探索した点に対する探索中心位置からのオフセット座標を、動きベクトルMV−HALFに加算することにより、1/4画素精度の動きベクトルを算出する。なお、図22及び図23においては、1/4画素精度動き検出のための構成要素と処理ステップを省略して図示していない。
ステップS6において、動き検出に続く動き補償のために、ステップS5の1/2画素精度動き検出において最終的に決定した動きベクトルが示す位置の参照画像が、SDRAM8から第3ローカルメモリ6に転送される。
一般的に、動きベクトル検出は、画素データの輝度成分に対して実施される。そのため、輝度成分に関しては、多くの場合、1/2画素精度動き検出で第2ローカルメモリ5に取得した参照領域は、動き補償に必要な領域を包含している。データ転送量を削減するために、第2ローカルメモリ5のデータを、第3ローカルメモリ6へ転送する場合と、第2ローカルメモリ5を動き補償部3が直接アクセスする場合とがある。ただし、色差成分に関しては、第2ローカルメモリ5に転送されていないため、SDRAM8より第3ローカルメモリ6へ転送する必要がある。
ステップS7において、動き補償部3は、動き補償を実施する。動き補償で取得する色差成分の画像データは、輝度成分の動きベクトルに基づいて決定される色差動きベクトルによって決定される。MPEG−4の場合、輝度成分の動きベクトルの1/2倍したものが色差成分の動きベクトルとして定義される。例えば、輝度成分の動きベクトルのXY座標(0.5、1.5)は、1/2倍すると、(0.25、0.75)になるが、これは(0.5、0.5)に丸められる。
前述したとおり、動画像符号化処理は、動き検出、動き補償、DCT、可変長符号化などの複数の処理から構成される。これらの処理を、一つのハードウェア資源(例えばプロセッサ)を用いて、マクロブロック単位に実行する場合、一つのマクロブロックの処理が終了するまで、次のマクロブロック処理が開始できない。このような逐次処理では、画面サイズや入力のフレームレートが大きい場合、マクロブロック処理が間に合わずに、コマ落ちが生じてしまうことがある。
これを解決するために、処理単位毎のハードウェア資源を用意し、マクロブロック処理をパイプライン的に実行する方法がある。
図26は、動画像符号化処理のフローチャートである。図26に示すように、一般的な動画像符号化処理は、ステップS11の動き検出、ステップS12の動き補償、ステップS13のDCT/量子化処理、及び、ステップS14の可変長符号化処理からなる。これらの処理を、4段のパイプランに分割すると、図27のような処理になる。
図27は、動画像符号化のパイプライン処理を示す。同図において、横軸は時間を表し、各処理の()内の数字は、処理しているマクロブロック番号を示す。図27に示すように、パイプライン処理では、マクロブロック番号「0」の動き検出処理が終了すると、マクロブロック番号「0」の動き補償処理が開始され、それと同時に、マクロブロック番号「1」の動き検出の処理がスタートする。
図27に示す4つの処理のうち、最も処理時間が長い処理の処理時間を時間Tとすると、パイプライン処理では、時間Tの間隔でストリーム化されたマクロブロックが出力されることになる。4つの処理の合計時間を時間Uとすると、1マクロブロックあたりの処理時間は、逐次処理では時間U,パイプライン処理では時間Tとなり、U>Tは自明であるため、パイプライン処理によって、マクロブロック処理のスループットが向上する。
しかし、このようなパイプライン処理を実行するためには、各処理の間にパイプラインバッファが必要となる。パイプラインバッファとは、パイプラインの切れ目でデータを保持しておくための中間バッファである。よって、パイプライン化は、性能とコストのトレードオフを考慮して実施しなければならない。
図28は、動き検出のフローチャートである。図28は、複数に階層化された動き検出における、ある階層の動き検出の処理フローを示している。
ステップS21において、第(m−1)階層(mは2以上の自然数)の動き検出が行われる。ステップS21において行われる第(m−1)階層の動き検出が、図24に示したような間引された参照画像に対して実施される場合、ステップS22において、第(m−1)階層で検出された動きベクトルを基に、次の第(m)階層の動き検出のための参照画像データを転送しなければならない。ステップS23において、転送された参照画像データを用いて、第(m)階層の動き検出が行われる。
図29は、動き検出のパイプラインの構成を示し、図28の動き検出に対応するものである。動き検出において、広い範囲を探索する場合、その探索範囲のデータを取得するためのデータ転送に時間を要する。そのため、図29に示すパイプラインの構成例では、stage(k+1)に、データ転送のためのパイプラインステージを設けて、スループットを向上させるている。
以上説明したような、従来技術による手法は、パイプライン処理によって動画像処理のスループットが向上する反面、動き検出の階層が増えた場合には、パイプライン段数が深くなり、レイテンシが増大すると同時に、必要なパイプラインバッファの数が増大するという欠点がある。
特開2002−218474号公報(第3図) 特開2001−15872号公報
そこで本発明は、パイプライン処理における時間遅延を低減してフレーム遅延の発生を抑制し、さらに、パイプラインバッファの数を削減できる、動画像符号化用の動き検出装置を提供することを目的とする。
第1の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、階層的に動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する第2段階の動きベクトル検出のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、第2段階の動きベクトルを検出する第2動き検出手段と、第2動き検出手段で検出した第2段階の動きベクトルを用いて実施する第3段階の動きベクトル検出のための第3参照画像を格納する第3記憶手段と、第3記憶手段に格納された第3参照画像を用いて、第3段階の動きベクトルを検出する第3動き検出手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、主記憶手段と第2記憶手段の間のデータ転送、及び、主記憶手段と第3記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、第1段階の動きベクトルの参照が必要な場合、プロセッサは、第2段階の動きベクトルの検出が完了する前に、第1段階で検出した動きベクトルに基づいて、主記憶手段から第3記憶手段へ第3参照画像のデータを転送し、第1段階の動きベクトルの参照が不必要な場合、プロセッサは、第1段階の動きベクトルの検出が完了する前に、主記憶手段から第3記憶手段へ第3参照画像のデータを転送する。
この構成によれば、第1段階で検出した動きベクトルを参照する場合、第3段階の動きベクトル検出用の参照画像の転送と、第2段階の動きベクトル検出の実行を同時に実施するため、第3段階の動きベクトル検出が遅延なく開始できる。また、第1段階で検出した動きベクトルを参照しない場合、第3段階の動きベクトルの検出を遅延なく開始できる。
第2の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、階層的に動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する第2段階の動きベクトル検出のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、第2段階の動きベクトルを検出する第2動き検出手段と、第2動き検出手段で検出した第2段階の動きベクトルを用いて実施する動き補償のための第3参照画像を格納する第3記憶手段と、第3記憶手段に格納された第3参照画像を用いて、動き補償を実施する動き補償手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、主記憶手段と第2記憶手段の間のデータ転送、及び、主記憶手段と第3記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、第1段階の動きベクトルの参照が必要な場合、プロセッサは、第2段階の動きベクトルの検出が完了する前に、第1段階で検出した動きベクトルに基づいて、主記憶手段から第3記憶手段へ第3参照画像のデータを転送し、第1段階で検出した動きベクトル非参照の場合、プロセッサは、第1段階の動きベクトルの検出が完了する前に、主記憶手段から第3記憶手段へ第3参照画像のデータを転送する。
この構成によれば、第1段階で検出した動きベクトルを参照する場合、動き補償用の参照画像の転送と、第2段階の動きベクトル検出の実行を同時に実施するため、動き補償が遅延なく開始できる。また、第1段階で検出した動きベクトルを参照しない場合、第3段階の動き補償を遅延なく開始できる。
第3の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、階層的に動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する第2段階の動きベクトル検出のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、第2段階の動きベクトルを検出する第2動き検出手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、及び、主記憶手段と第2記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、プロセッサは、第1段階の動きベクトル検出が完了する前に、主記憶手段から第2記憶手段へ第2参照画像のデータを転送する。
この構成によれば、第2段階の動きベクトル検出用の参照画像の転送と、第1段階の動きベクトル検出の実行を同時に実施するため、第2段階の動きベクトル検出が遅延なく開始できる。
第4の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する動き補償のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、動き補償を実施する動き補償手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、及び、主記憶手段と第2記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、プロセッサは、第1段階の動きベクトルの検出が完了する前に、主記憶手段から第2記憶手段へ第2参照画像のデータを転送する。
この構成によれば、動き補償用の参照画像の転送と、第1段階の動きベクトル検出の実行を同時に実施するため、動き補償用が遅延なく開始できる。
第5の発明に係る動き検出装置では、第1動き検出手段は、整数画素精度の動きベクトルを検出する。
第6の発明に係る動き検出装置では、第2動き検出手段は、1/2画素精度の動きベクトルを検出する。
第7の発明に係る動き検出装置では、第3動き検出手段は、1/4画素精度の動きベクトルを検出する。
これらの構成によれば、整数画素精度の動きベクトル検出から1/4画素精度の動きベクトル検出まで、段階的に実行できる。さらに、整数画素精度の動きベクトル検出までを行う動き検出装置、1/2画素精度の動きベクトル検出までを行う動き検出装置、あるいは、1/4画素精度の動きベクトル検出までを行う動き検出装置を、応用目的に応じて随意に構成できる。
第8の発明に係る動き検出装置では、動き補償手段は、輝度画像の動き補償を実施する。
この構成によれば、輝度データに対して動き補償を行う動き検出装置を実現できる。
第9の発明に係る動き検出装置では、動き補償手段は、色差画像の動き補償を実施する。
この構成によれば、色差データに対して動き補償を行う動き検出装置を実現できる。
第10の発明に係る動き検出装置では、第1記憶手段と第2記憶手段とは、メモリで実装され、第1記憶手段のメモリサイズは、第2記憶手段のメモリサイズより大きい。
この構成によれば、第1記憶手段を利用する第1動き検出手段は、第2記憶手段を利用する第2動き検出手段よりも、より広い範囲にわたって動きベクトルを探索することができる。
第11の発明に係る動き検出装置では、第2記憶手段と第3記憶手段とは、メモリで実装され、第2記憶手段のメモリサイズは、第3記憶手段のメモリサイズより大きい。
この構成によれば、第2記憶手段を利用する第2動き検出手段は、第3記憶手段を利用する第3動き検出手段よりも、より広い範囲にわたって動きベクトルを探索することができる。
第12の発明に係る動き検出装置では、第2記憶手段には、データ転送制御手段と第2動き検出手段のいずれか一方がアクセスする。
第13の発明に係る動き検出装置では、第3記憶手段には、データ転送制御手段と第3動き検出手段のいずれか一方がアクセスする。
第14の発明に係る動き検出装置では、第3記憶手段には、データ転送制御手段と動き補償手段のいずれか一方がアクセスする。
これらの構成によれば、パイプラインバッファを設けなくても、データ転送と動き検出を実行できる。
第15の発明に係る動き検出装置では、第1動き検出手段で検出した動きベクトルを基準にして、必要な範囲の参照画像のデータが、第2記憶手段から第3記憶手段へ、転送される。
この構成によれば、主記憶手段から第3記憶手段へのデータ転送を割愛できる。
第16の発明に係る動き検出装置では、第1動き検出手段で検出した動きベクトルを基準にして、必要な範囲の参照画像のデータが、第1記憶手段から前記第2記憶手段へ転送される。
この構成によれば、主記憶手段から第2記憶手段へのデータ転送を割愛できる。
本発明によれば、パイプライン処理における時間遅延を低減してフレーム遅延の発生を抑制し、さらに、パイプラインバッファの数を削減できる、動画像符号化用の動き検出装置を提供することができる。
本発明の実施の形態1における動き検出装置のブロック図
本発明の実施の形態1における動き検出装置のフローチャート
本発明の実施の形態1における参照画像の1/4に間引かれた整数画素配置図
本発明の実施の形態1における参照画像の1/4に間引かれた1/2画素配置図
本発明の実施の形態1における参照画像の1/4画素配置図
本発明の実施の形態1における参照画像の転送範囲を示す説明図
本発明の実施の形態1における動き検出装置のパイプラインの構成図
本発明の実施の形態2における動き検出装置のブロック図
本発明の実施の形態2における動き検出装置のフローチャート
本発明の実施の形態2における輝度座標と色差座標の対応表
本発明の実施の形態2における色差データの転送範囲の説明図
従来技術による動き検出装置のパイプライン構成図
本発明の実施の形態2における動き検出装置のパイプラインの構成図
本発明の実施の形態3における動き検出装置のブロック図
本発明の実施の形態3における動き検出装置のフローチャート
本発明の実施の形態3における動き検出装置のパイプラインの構成図
本発明の実施の形態4における動き検出装置のフローチャート
本発明の実施の形態4における動き検出装置のパイプラインの構成図
本発明の実施の形態5における動き検出装置のブロック図
本発明の実施の形態5における動き検出装置のフローチャート
本発明の実施の形態5における動き検出装置のパイプラインの構成図
従来の一般的な動き検出部のブロック図
従来の一般的な動き検出部のフローチャート
1画素毎に間引かれた整数画素の例示図
整数画素Bの近傍に生成された1/2画素の例示図
動画像符号化処理のフローチャート
動画像符号化のパイプライン処理の例示図
動き検出のフローチャート
動き検出のパイプラインの構成図
符号の説明
1 整数画素精度動き検出部
2 1/2画素精度動き検出部
3 動き補償部
4 第1ローカルメモリ
5 第2ローカルメモリ
6 第3ローカルメモリ
7 DMAコントローラ
8 SDRAM
20 プロセッサ
21 整数画素精度動き検出器
22 1/2画素精度動き検出器
23 1/4画素精度動き検出器
24 動き補償器
31、32、33 ローカルメモリ
41 SDRAM
42 DMAコントローラ
次に、図面を参照しながら、本発明の実施の形態を説明する。
(実施の形態1)
図1は、本発明の実施の形態1における動き検出装置のブロック図である。本形態の動き検出装置は、図1に示すように、整数画素精度動き検出器21、1/2画素精度動き検出器22、1/4画素精度動き検出器23、ローカルメモリ31、32、33、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
整数画素精度動き検出器21は、第1動き検出手段に相当し、1/2画素精度動き検出器22は、第2動き検出手段に相当し、1/4画素精度動き検出器23は、第3動き検出手段に相当する。
ローカルメモリ31は、第1記憶手段に相当し、整数画素精度動き検出器21が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ32は、第2記憶手段に相当し、1/2画素精度動き検出器22が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ33は、第3記憶手段に相当し、1/4画素精度動き検出器23が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。SDRAM41は、主記憶装置に相当し、現フレームと参照フレームの画像データを格納する。
DMAコントローラ42は、データ転送制御手段に相当し、SDRAM41とローカルメモリ31、32、33の間のデータ転送を制御する。プロセッサ20は、動き検出装置全体の処理を制御する。また、図1において、実線はデータ線を表し、点線は制御線を表す。
図2は、本発明の実施の形態1における動き検出装置のフローチャートである。図1を参照しつつ、図2に従って、本形態の動き検出装置の動作を説明する。
ステップS31において、整数画素精度動き検出に使用する参照画像データと符号化対象のマクロブロックの画像データが、DMAコントローラ42の制御の下、SDRAM41からローカルメモリ31に転送される。
ステップS32において、整数画素精度動き検出器21は、ローカルメモリ31に転送された参照画像データと符号化対象のマクロブロックの画像データを使用して、整数画素精度動き検出を実施する。整数画素動き検出は、ブロックマッチング法に従って実施される。
以下の説明では、本形態の整数画素精度動き検出を、水平方向に1/4に間引かれた参照画像に対して実施する例について述べる。
図3は、本発明の実施の形態1における参照画像の1/4に間引かれた整数画素配置図である。同図において、白丸の画素Fp1は、間引かれていない整数画素を表し、黒丸の画素Fp2は、間引かれた整数画素を表す。この例では、参照画像は、水平方向に1/4に間引かれている。水平方向で4画素単位に有効データが存在するため、水平方向の動き検出の精度が1/4になる。
整数画素精度動き検出の方法は、数多く提案されており、代表的なものとして、全探索、勾配法、ダイアモンドサーチ、One−at−a−Timeなどがある。本発明では、どの方法を用いても良い。また、整数画素精度動き検出の評価関数には、従来技術の差分絶対値和、差分二乗和などが利用できる。
図2に戻り、ステップS33において、1/2画素精度動き検出に使用される参照画像データと符号化対象のマクロブロックの画像データが、プロセッサ20の命令によって、SDRAM41からローカルメモリ32に転送される。
ステップS34において、1/2画素精度動き検出器22は、整数画素精度動き検出で検出した動きベクトルの周辺で、1/2画素精度動き検出を実施する。本形態の1/2画素精度動き検出では、整数画素精度動き検出で検出した動きベクトルの周辺の8個の1/2画素に対して、1/2画素精度動き検出が実施される。
以下の説明では、本形態の1/2画素精度動き検出を、水平方向に1/4に間引かれた参照画像に対して実施する例について述べる。
図4は、本発明の実施の形態1における参照画像の1/4に間引かれた1/2画素配置図である。図4において、白丸の画素Fp1は、間引かれていない整数画素を表し、黒丸の画素Fp2は、間引かれた整数画素を表す。また、小さい白丸の画素Hp1は、間引かれていない整数画素Fp1から算出された1/2画素を表す。
1/2画素は、前述したように、整数画素値の平均で算出する。図4に示すように、ある探索位置に注目すると、1/2画素は、横方向に4画素単位で有効である。また、同じ1/4に間引きされた処理でも、1/2画素精度動き検出には、整数画素精度動き検出の時に比較して、より多くの参照画像データが必要になることが分かる。
図2に戻り、ステップS35において、1/4画素精度動き検出に使用される参照画像データと符号化対象のマクロブロックの画像データが、プロセッサ20からの命令によって、SDRAM41からローカルメモリ33に転送される。
ステップS36において、1/4画素精度動き検出器23は、1/2画素精度動き検出で検出した動きベクトルの周辺で、1/4画素精度動き検出を実施する。
動き検出の最後の階層である1/4画素精度動き検出では、動き検出の精度を向上させるために、画素の間引きは行われない。
図5は、本発明の実施の形態1における参照画像の1/4画素配置図である。図5において、白丸の画素Fp1は、整数画素を表し、小さい白丸の画素Hp1は、1/2画素を表し、小さい黒丸の画素Qp1は、1/4画素を表す。画素Fp1,画素Hp1,及び、画素Qp1の符号付けは、代表的であって、すべての画素に符号を付しているのではない。
1/4画素の算出は、1/2画素が整数画素から算出された場合と同様に、1/2画素の平均値として求められる。図5に示した1/4画素の配置、1/4画素を算出するための1/2画素の配置、さらに、1/2画素を算出するための整数画素の配置から明白なように、1/4画素精度動き検出では整数画素を間引くことができない。従って、間引きのある1/2画素からの1/2画素精度動き検出が終了したら、1/4画素精度動き検出用として、間引きのない参照画像データを転送する必要がある。
ところで、前述したように、1/4画素精度動き検出用の参照画像データの転送の終了を待って、1/4画素精度動き検出を実施すると、1/4画素精度動き検出の開始が遅くなり、レイテンシが増加する。そこで、図2に示すステップS35では、整数画素精度動き検出が終了した時点で、1/2画素精度動き検出における探索範囲を含むように、1/4画素精度動き検出用のデータを転送する。
図6は、本発明の実施の形態1における参照画像の転送範囲を示す説明図である。図6において、各画素の符号は、図5と同様であり、説明を省略する。
図6に示す例では、符号化するマクロブロックは、3画素×3画素から構成されると仮定している。(実際は、符号化するマクロブロックは、16画素×16画素から構成される。)実線の枠51が、整数画素精度動き検出でマッチングの取れたマクロブロックであり、その整数画素精度動きベクトルMV−INTの位置は、枠51の左上の画素Fp3の座標で与えられる。点線で示す枠52は、1/4画素精度動き検出用に転送すべき参照画像の範囲を示す。すなわち、枠52は、1/2画素精度動き検出において、画素Fp3で示される動きベクトルMV−INTの位置から、その周辺の8個の1/2画素のいずれに1/2画素精度動きベクトルMV−HALFの検出結果が落ち着いても、次の1/4画素精度動き検出のための1/4画素を生成するために必要な整数画素が必ず含まれるような画素の範囲を示している。
このように、1/4画素精度動き検出のための参照画像データの転送範囲を枠52で示す範囲に設定すれば、1/4画素精度動き検出のための参照画像データを、整数画素精度動き検出において動きベクトルMV−INTが確定した段階で、図1のSDRAM41からローカルメモリ33へ転送することができる。この結果、1/2画素精度動き検出の結果を待たずに、1/4画素精度動き検出用の参照画像データを転送できるため、1/4画素精度動き検出のデータ待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
図7は、本発明の実施の形態1における動き検出装置のパイプラインの構成を示す。図7は、本形態の動き検出装置の処理のパイプラインが、動き検出処理と参照画像DMA転送処理とに分けて、stage−0からstage−4にわたって構成されていることを表している。上述したように、本形態の動き検出装置では、stage−3において、1/2画素精度動き検出と同時に、1/4画素精度動き検出用の参照画像データの転送が実施できるため、パイプラン段数を一段少なく出来る。
以上説明したように、本形態の動き検出装置によれば、パイプライン段数を一段少なくできて、その分だけ動き検出処理を高速に実施できるので、パイプライン処理における時間遅延を低減してフレーム遅延の発生を抑制出来る。
(実施の形態2)
図8は、本発明の実施の形態2における動き検出装置のブロック図である。図8において、図1と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
本形態の動き検出装置は、図8に示すように、整数画素精度動き検出器21、1/2画素精度動き検出器22、動き補償器24、ローカルメモリ31、32、33、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
ローカルメモリ31は、第1記憶手段に相当し、整数画素精度動き検出器21が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ32は、第2記憶手段に相当し、1/2画素精度動き検出器22が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ33は、第3記憶手段に相当し、動き補償器24が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。SDRAM41は、主記憶装置に相当し、現フレームと参照フレームの画像データを格納する。
DMAコントローラ42は、データ転送制御手段に相当し、SDRAM41とローカルメモリ31、32、33の間のデータ転送を制御する。プロセッサ20は、動き検出装置全体の処理を制御する。また、図8において、実線はデータ線を表し、点線は制御線を表す。
本形態の動き検出装置では、動き検出は、整数画素精度と1/2画素精度の2階層で実施され、1/4画素精度動き検出は実施されない。また、1/2画素精度動き検出では、参照画像の画素を間引かないものとする。1/2画素精度動き検出の後、動き補償が実施される。
図9は、本発明の実施の形態2における動き検出装置のフローチャートである。
図8を参照しつつ、図9に従って、本形態の動き検出装置の動作を説明する。
ステップS41における整数画素精度動き検出用の参照画像データと符号化対象のマクロブロック画像データの転送、ステップS42における整数画素精度動き検出、ステップS43における1/2画素精度動き検出用の参照画像データと符号化対象のマクロブロック画像データの転送、及び、ステップS44における1/2画素精度動き検出は、図2に示した本発明の実施の形態1における動き検出装置のフローチャートのステップS31、ステップS32、ステップS33、及び、ステップS34と同様であり、説明を省略する。
ステップS44において、1/2画素精度動き検出が終了すると、次に動き補償を実施する。動き補償は、輝度成分の参照画像と、色差成分の参照画像に対して実施される。しかし、この段階では、色差成分の参照画像データは、ローカルメモリ33にまだ転送されていない。また、色差成分の参照画像データ領域は、輝度成分の動きベクトルが確定した後でなければ特定できないため、従来技術では、1/2画素精度動き検出の確定後に、色差成分の参照画像データを転送する必要があった。
そこで、本形態の動き検出装置では、ステップS45において、整数画素動きベクトルが確定した段階で、1/2画素精度動き検出の探索範囲を含むように、色差成分の参照画像データの転送を開始する。すなわち、実施の形態1における図2のステップS35の1/4画素精度動き検出用参照画像転送と同様に、1/2画素精度動き検出のいかなる探索結果にも対応できるように、必要な色差成分の参照画像データ領域を定義し、その領域の色差成分の参照画像データを、整数画素精度動き検出における動きベクトルの決定直後に、図8に示すSDRAM41からローカルメモリ33へ転送する。
ステップS46において、ステップS44における1/2画素精度動き検出結果に従って、ローカルメモリ33に格納されている、輝度成分の参照画像データと色差成分の参照画像データとを読出し、動き補償を行う。
上述したステップS45における色差成分の参照画像データの具体的な転送方法をさらに説明する。
図10は、本発明の実施の形態2における輝度座標と色差座標の対応表である。この対応表は、水平方向と垂直方向の座標に等しく適用できる。
色差成分の参照画像データ(以下、色差データと呼ぶ)は、水平方向と垂直方向のそれぞれにおいて、輝度成分の参照画像データ(以下、輝度データと呼ぶ)の半分の量であるため、それぞれの方向で輝度データ2つに対して色差データ1つが対応する。(画面全体では、輝度データ4つに対して色差データ1つが対応する。)すなわち、図10に示すように、輝度の座標値「0」は、色差の座標値「0」に、輝度の座標値「0.5」「1」「1.5」は、色差の座標値「0.5」に、輝度の座標値「2」は、色差の座標値「1」に、それぞれ対応するといった具合である。この座標変換ルールによれば、たとえば、輝度データのXY座標(1.5、2.5)に対応する色差データのXY座標は、(0.5、1.5)である。
動き補償において、被符号化マクロブロックの16画素×16画素の輝度データに対応して生成しなければならない色差データは、8画素×8画素である。図11は、本発明の実施の形態2における色差データの転送範囲の説明図である。図11は、説明を簡単にするために、水平方向における輝度データの座標から色差データの座標に座標変換する例を示している。
いま、輝度データにおいて、整数画素精度動き検出の結果、整数画素精度動きベクトルMV−INTの位置は、黒丸の整数画素Fp12に求まったと仮定する。次の階層の1/2画素精度動き検出では、1/2画素精度動きベクトルが検出される可能性のある座標位置は、整数画素Fp12の左右の1/2画素Hp11と1/2画素Hp12、および、整数画素Fp12そのものである。例えば、整数画素Fp12のX座標が「2」である場合、1/2画素精度動きベクトルが検出される可能性のある画素Hp11,Fp12,Hp12のX座標は、それぞれ、「1.5」、「2」、「2.5」となる。
これらの輝度データの座標に対応する色差データの座標と画素は、図10の座標変換ルールより、座標「0.5」の1/2画素Hp20、座標「1」の整数画素Fp21、座標「1.5」の1/2画素Hp21となる。つまり、色差データの1ライン−8画素分として生成される可能性のある画素の座標は、次の3つの場合のいずれかである。
(1)0.5、1.5、2.5、3.5、4.5、5.5、6.5、7.5
(2)1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0
(3)1.5、2.5、3.5、4.5、5.5、6.5、7.5、8.5
座標「0.5」の1/2画素Hp20から座標「7.5」の1/2画素Hp27までを含む場合(1)の色差データを生成するためには、座標「0」の整数画素Fp20から座標「8.0」の整数画素Fp28までを、SDRAM41からローカルメモリ33に転送する必要がある。
座標「1.5」の整数画素Hp21から座標「8.5」の整数画素Hp28を含む場合(3)の色差データを生成するためには、座標「1」の整数画素Fp21から座標「9.0」の整数画素Fp29までを、SDRAM41からローカルメモリ33に転送する必要がある。
以上より、場合(1)、(2)、(3)の色差データをすべて生成できるようにするためには、座標「0」の整数画素Fp20から座標「9.0」の整数画素Fp29までを、SDRAM41からローカルメモリ33に転送すれば良い。このように計算することで、1/2画素精度動き検出が終了する前に、色差の参照画像データを転送することが可能である。
このように、本形態の動き検出装置によれば、1/2画素精度動き検出の結果を待たずに、動き補償用の参照画像データを転送できるため、動き補償に必要な参照画像データを取得するための待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
ここで、本形態の動き検出装置における必要なパイプライン段数とパイプラインバッファ数の削減効果をより明確にするため、従来技術と比較しよう。
図12は、従来技術による動き検出装置のパイプライン構成を示す。同時に、図12には、各段で必要なパイプラインバッファを示している。
図12に示すように、stage−0において、現在転送している参照画像の輝度データを保持するための参照画像バッファ(輝度)が必要となる。これは、異なるマクロブロック世代において、データ転送と処理がstage−0とstage−1で同時に実施されているためである。例えば、stage−1で(n)番目のマクロブロックの整数画素精度動き検出を実行している時に、stage−0で(n+1)番目のマクロブロックの整数画素精度動き検出用の参照画像データを並行して転送している。この時、(n)番目のマクロブロックの整数画素精度動き検出で参照しているメモリ領域を破壊しないために、stage−0におけるデータ転送のために別途バッファを設ける必要がある。さらに、stage−1の整数画素精度動き検出に使用する現画像のマクロブロックデータ(輝度データと色差データ)を、stage−0において同時に転送するために、現マクロブロックバッファ(輝度・色差)が必要である。
従来技術による動き検出装置では、動き補償用データの転送が、stage−2の1/2画素精度動き検出が完了した後に実行されるため、動き補償をstage−2とは別のstage−3で行う必要がある。これは、1/2画素精度動き検出と動き補償の処理を同じ段に収めることが性能的に難しいためである。この結果、stage−2に、輝度データ転送用の参照画像バッファ(輝度)と、色差データ転送用の参照画像バッファ(色差)と、stage−3に、輝度データ動き補償用の参照画像バッファ(輝度)と、色差データ動き補償用の参照画像バッファ(色差)とが必要となる。
このように、従来技術による動き検出装置では、4段のパイプラインが必要であり、パイプラインバッファは、合計10個必要である。
図13は、本発明の実施の形態2における動き検出装置のパイプラインの構成を示す。本形態のパイプライン構成によれば、stage−0において整数画素精度動き検出用データ転送を行い、stage−1において整数画素精度動き検出を行い、その結果を受けて1/2画素精度動き検出用データ転送を行う。stage−2において1/2画素精度動き検出と動き補償用データ(色差データ)転送を並行して行い、その後動き補償を実施する。
このように、本形態の動き検出装置によれば、stage−1の整数画素精度動き検出の結果によって、動き補償用データ(色差データ)の転送範囲を特定して、動き補償用データ(輝度データと色差データ)の転送を、stage−2において1/2画素精度動き検出と並行して実施できるので、必要なパイプライン段数は、3段である。これは、図12に示した従来技術による動き検出装置よりも1段少ない。
図13には、パイプラインの各段で必要となるパイプラインバッファも同時に示している。本形態の動き検出装置では、必要なパイプラインバッファは、各段の輝度データ用の参照画像バッファ(輝度)と、輝度データと色差データ用の現マクロブロックバッファ(輝度・色差)、及び、stage−2の色差データ用の参照画像バッファ(色差)の、計7個である。すなわち、本形態の動き検出装置では、stage−3が不要となった効果として、パイプラインバッファ数を、図12に示した従来技術による動き検出装置の10個から7個に削減できる。
(実施の形態3)
図14は、本発明の実施の形態3における動き検出装置のブロック図である。図14において、図1と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
本形態の動き検出装置は、図14に示すように、整数画素精度動き検出器21、1/2画素精度動き検出器22、ローカルメモリ31、32、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
本形態の動き検出装置では、整数画素精度動き検出の後に、1/2画素精度動き検出を実施し、1/4画素精度動き検出は実施しない。また、1/2画素精度動き検出では、参照画像の画素を間引かないものとする。
図15は、本発明の実施の形態3における動き検出装置のフローチャートである。
図15に示すように、本形態の動き検出装置は、ステップS51において、整数画素精度動き検出用の参照画像データをSDRAM41からローカルメモリ31に転送する。
ステップS52において、整数画素精度動き検出を行う。
ステップS53において、1/2画素精度動き検出用の参照画像データをSDRAM41からローカルメモリ32に転送する。この1/2画素精度動き検出用の参照画像データの転送は、ステップS51の整数画素精度動き検出用の参照画像データの転送と並行して行っても良いし、ステップS52の整数画素精度動き検出と並行して行っても良い。
1/2画素精度動き検出用の参照画像データの転送する領域は、整数画素精度動き検出の探索結果に依存せずに決定される。その決定の方法は、本発明の実施の形態1における1/4画素精度動き検出用の参照画像データの転送領域の決定の方法と同様である(図6参照)。すなわち、現在符号化中のマクロブロックに対して、整数精度動きベクトルがどの位置に落ち着いても、1/2画素精度動き検出に必要な参照画像データが必ず含まれるように、1/2画素精度動き検出用の参照画像データの転送する領域を決定する。
ステップS54において、ステップS52の整数画素精度動き検出の探索結果を基に、ステップS53で転送した1/2画素精度動き検出用の参照画像データを用いて、1/2画素精度動き検出を行う。
このように、本形態の動き検出装置によれば、整数画素精度動き検出の結果を待たずに、1/2画素精度動き検出用の参照画像データを転送できるため、1/2画素精度動き検出用の参照画像データの待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
図16は、本発明の実施の形態3における動き検出装置のパイプラインの構成を示す。本形態の動き検出装置によれば、stage−1において、1/2画素精度動き検出用の参照画像データ転送が実施できるため、パイプラン段数がひとつ少なくて済む。
(実施の形態4)
本発明の実施の形態4の動き検出装置は、図1に示した本発明の実施の形態1の動き検出装置と同じブロック構成である。従って、本形態の動き検出装置の説明は、図1を参照して行う。
本形態の動き検出装置は、本発明の実施の形態1と実施の形態3を組み合わせたものであり、整数画素精度動き検出、1/2画素精度動き検出、及び、1/4画素精度動き検出を実施する。また、本形態の動き検出装置は、1/2画素精度動き検出用の参照画像転送を整数画素精度動き検出の結果を待たずに実施でき、かつ、1/4画素精度動き検出用の参照画像転送を、整数画素精度動き検出において動きベクトルが確定した直後に開始できる。
図17は、本発明の実施の形態4における動き検出装置のフローチャートである。図1を参照しつつ、図17に従って、本形態の動き検出装置の動作を説明する。
ステップS61において、整数画素精度動き検出用参照画像データの転送を行う。
ステップS62において、整数画素精度動き検出を行う。
ステップS62と同時に、ステップS63において、1/2画素精度動き検出用参照画像データの転送を行う。
ステップS64において、ステップS62の整数画素精度動き検出の探索結果を基に、ステップS63で転送した1/2画素精度動き検出用の参照画像データを用いて、1/2画素精度動き検出を行う。
ステップS64と同時に、ステップS65において、ステップS62の整数画素精度動き検出の探索結果を基に決定されたデータ転送領域について、1/4画素精度動き検出用参照画像データの転送を行う。
ステップS66において、テップS64の1/2画素精度動き検出の探索結果を基に、ステップS65で転送した1/4画素精度動き検出用の参照画像データを用いて、1/4画素精度動き検出を行う。
このように、本形態の動き検出装置は、整数画素精度動き検出の結果を待たずに、1/2画素精度動き検出用の参照画像データを転送できるため、1/2画素精度動き検出用の参照画像データの待ち時間が削減される。さらに、1/2画素精度動き検出の結果を待たずに、1/4画素精度動き検出用の参照画像データを転送できるため、1/4画素精度動き検出用の参照画像データの待ち時間が削減される。この結果、本形態の動き検出装置によれば、マクロブロック処理のレイテンシが大幅に改善する。
図18は、本発明の実施の形態4における動き検出装置のパイプラインの構成を示す。図18に示すように、本形態の動き検出装置は、stage−1において、1/2画素精度動き検出用の参照画像データの転送が実施でき、かつ、stage−2において、1/4画素精度動き検出用の参照画像データの転送が実施できる。その結果、本形態の動き検出装置では、パイプライン段数が2段削減される。さらに、本形態の動き検出装置は、マクロブロック処理のレイテンシが、動きベクトル検出の実行時間のみによって決定され、データ転送による遅延が生じないという特徴を有する。
(実施の形態5)
図19は、本発明の実施の形態5における動き検出装置のブロック図である。図19において、図1と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
本形態の動き検出装置は、図19に示すように、整数画素精度動き検出器21、動き補償器24、ローカルメモリ31、32、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
本形態の動き検出装置では、整数画素精度動き検出の後に、動き補償を行う。
図20は、本発明の実施の形態5における動き検出装置のフローチャートである。
図20に示すように、本形態の動き検出装置は、ステップS71において、整数画素精度動き検出用の参照画像データをSDRAM41からローカルメモリ31に転送する。
ステップS72において、ステップS71においてローカルメモリ31に転送された参照画像データを用いて、整数画素精度動き検出を行う。
ステップS73において、動き補償用の参照画像データをSDRAM41からローカルメモリ32に転送する。この参照画像データの転送は、ステップS72の整数画素精度動き検出と並行して実施する。
ステップS74において、ステップS73で転送した動き補償用の参照画像データを用いて、ステップS72の整数画素精度動き検出の探索結果を基に、動き補償を行う。
このように、本形態の動き検出装置によれば、整数画素精度動き検出の結果を待たずに、動き補償用の参照画像データを転送できるため、動き補償用の参照画像データの待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
図21は、本発明の実施の形態5における動き検出装置のパイプラインの構成を示す。本形態の動き検出装置によれば、stage−1において、動き補償用の参照画像データ転送が実施できるため、パイプラン段数がひとつ少なくて済む。
以上説明したように、本発明の動き検出装置によれば、1/2画素精度動き検出用の参照画像データの転送と1/4画素精度動き検出用の参照画像データの転送とを、それぞれ上位の階層の画素精度動き検出の結果を待たずに、実施できるので、参照画像データの転送に伴う遅延が生ぜず、マクロブロック処理のレイテンシが大幅に改善する。また、本発明の動き検出装置によれば、パイプライン段数の削減と、パイプラインバッファ数の削減が可能となる。この結果、高速処理可能な動画像の動き検出装置を、より小型に低コストで実現できる。
本発明の趣旨は、参照画像データの転送に伴うマクロブロック処理のレイテンシを改善し、さらに、パイプラインバッファの必要個数を削減できる、動画像符号化用動き検出装置を実現することにあるのであって、本発明の趣旨を逸脱しない限り、種々の適用が可能である。
本発明に係わる動き検出装置は、例えば、動画像の符号化装置とその応用分野において利用できる。
本発明は、動画像符号化技術に関し、特に、被符号化画像と参照画像とから被符号化画像の動きベクトルを検出する動き検出装置に関するものである。
今日、動画像の伝送技術と蓄積技術は、我々の生活を豊かなものにする上で非常に重要な技術となっている。
例えば、携帯情報端末を用いた遠隔地でのテレビ電話が可能となっている。このテレビ電話では、音声に同期させて、動画像を相互に伝送できるため、従来に比べより豊かな表現力のあるコミュニケーションが実現ができる。テレビ電話の伝送路は無線であり、現在の伝送速度は、64kbps(bit per second)である。将来的には、2Mbps程度まで高速化される可能性はある。しかし、比較的低い伝送速度の下で、伝送する画像の画質を向上させるためには、動画像の伝送技術、特に、動画像の圧縮符号化技術が重要である。
もう一方の重要技術である動画像の蓄積技術は、年々発展している。近年では、DVD(Digital Versatile Disk)レコーダを使って、ディジタル方式でテレビ番組を録画することも可能となっている。DVDレコーダは年々販売台数を伸ばし、VHSレコーダが全てDVDレコーダに置き換わるのも時間の問題である。VHSレコーダと同様に、DVDレコーダにおいても、高画質で長時間録画できることは、重要なセールスポイントである。DVDレコーダに使用される記録媒体(DVD−RAM、DVD−RW、ブルーレイディスクなど)の記録密度は、年々向上しているが、現状では、ハイビジョン番組を高画質で長時間録画するまでには至っていない。記録媒体の限られた領域に、長時間の映像を画質を保ちつつ録画するためには、画質を落とさずに映像を低ビットレートで符号化する動画像符号化技術が重要となる。
動画像符号化技術には、様々な方式が提案されている。画像圧縮技術の標準規格としては、ITU‐T(国際電気通信連合電気通信標準化部門)のH.261、H.263、ISO(国際標準化機構)のMPEG‐1、MPEG‐2、MPEG‐4などがある。(MPEGは、Moving Picture Experts Groupの略語。)
これらの動画像符号化処理において、符号化の対象となる入力画像は、縦16画素×横16画素の輝度成分、縦8画素×横8画素の色差成分(Cb)、および、縦8画素×横8画素の色差成分(Cr)から構成されるマクロブロックに分割される。各マクロブロックは、参照画像から最も類似したブロックが探索され(いわゆる動き検出処理が行われ)、探索された参照画像のブロックとの差分がとられる。そして、その差分は周波数領域に変換された後、可変長符号化されてビットストリームに変換される。
これらの符号化処理の中で、画質を大きく左右する処理が動き検出処理である。MPEG符号化処理装置において、重要な構成要素である動き検出部について、先ず、説明する。
動き検出には、様々な手法が存在するが、最も代表的な方法がブロックマッチング法である。ブロックマッチング法は、現画像のマクロブロックと、参照画像のある特定の範囲(以降、探索範囲と呼ぶ)から生成される、マクロブロックと同じサイズのブロックとの間で、画素レベルの演算を行い、相関度を示す評価値を求め、その評価値が最もよい結果となる参照画像上の位置を動きベクトルとして検出する方法である。評価値として、一般に、差分絶対値和(SAD)や差分二乗和(SSD)が用いられ、その値が小さいほど相関性が高いとみなされる。
従来、階層的に動き検出を実施する例がある。たとえば、文献1(日本国特開2002−218474号公報)は、動きベクトルの検出を1/2画素精度で実施するために、第1ステップとして、比較的大きな探索範囲で整数画素精度の動きベクトル検出を実施し、第2ステップとして、第1ステップで検出した動きベクトルの周囲で、かつ、第1ステップより小さい探索範囲で、1/2画素精度の動きベクトルを検出する技術を開示している。
図22と図23とを参照して、従来技術による動き検出の方法を具体的に説明する。
図22は、従来の一般的な動き検出部のブロック図である。図22に示す従来の一般的な動き検出部は、整数画素精度動き検出部1、1/2画素精度動き検出部2、動き補償部3、第1ローカルメモリ4、第2ローカルメモリ5、第3ローカルメモリ6、DMAコントローラ7、及び、SDRAM8を備える。
図23は、従来の一般的な動き検出部のフローチャートである。
図23のステップS1において、SDRAM8に格納されている入力画像から、符号化対象のマクロブロック(以下、カレントマクロブロックと呼ぶ)を第1ローカルメモリ4へ転送する。
ステップS2において、カレントマクロブロックから決定される動き検出範囲、すなわち、探索範囲の画像データ、例えば、−32<=X<=+32、−32<=Y<=+32の探索範囲の画像データが、参照画像として、SDRAM8から第1ローカルメモリ4へ転送される。
ステップS3において、整数画素精度動き検出部1は、第1ローカルメモリ4に転送された、カレントマクロブロックと参照画像の探索範囲に対して、整数画素精度動き検出を行う。整数画素精度動き検出では、整数画素精度動き検出部1は、整数画素のみを用いて、カレントマクロブロックと最も相関の強い同じサイズのブロックを探索範囲から検出し、動きベクトルを求める。動きベクトルは、カレントマクロブロックの左端上の座標に対する、検出したブロックの左端上の座標の相対位置で表現する。相関の強さは、例えば、2つのブロック内の対応する画素における輝度成分の差分絶対値和(SAD)や差分二乗和(SSD)として評価される。
階層化して動き検出を行う場合、一般的に整数画素精度動き検出は、それ以降の階層の動き検出より探索範囲が大きい。そのため、必要とされるメモリ容量が大きくなる。
メモリ容量増大を回避するために、例えば、画素を間引いてメモリへ転送し、動き検出の精度を落とす方法がある。図24は、1画素毎に間引かれた整数画素を示す。すなわち、図24に示す例では、横方向に1画素毎に画素P2が間引かれて、画素P1のみが参照画像として用いられる。このように間引くと、間引かない場合と比較して横方向の検出精度が1/2に落ちる。しかし、第1ローカルメモリ4に確保されるべき参照画像用の領域は、1/2に削減できる。この方法により、同じ探索範囲を少ないメモリ容量で探索できる。または、同じメモリ容量で広範囲の動き検出を行うことができる。どのような間引き方法を採用するかは、検出精度が落ちることによる画質劣化と、探索範囲が広がることによる画質向上のトレードオフ関係により、決定される。
図23に戻って、ステップS4において、ステップS3の整数画素精度動き検出で求めた動きベクトルMV−INTを基に、1/2画素精度動き検出に必要な参照画像が、SDRAM8から第2ローカルメモリ5へ転送される。
上述したように、整数画素精度動き検出の参照画像の画素を間引いた場合、1/2画素精度動き検出のための参照画像を、SDRAM8より再び取得する必要がある。なぜなら、後述するように、規格上、1/2画素を算出するためには、必ず隣接する整数画素が必要となるからである。整数画素精度動きベクトルMV−INTの周辺8点の1/2画素に対して、1/2画素精度動き検出を行う場合、SDRAM8に格納されている参照画像から、動きベクトルMV−INTを基準として、X方向に「−1」、Y方向に「−1」移動した座標位置から、横方向に18画素、縦方向に18ラインの画像が取得され、第2ローカルメモリ5に転送される。SDRAM8に対して、32ビット単位のアクセスしかできない場合は、参照画像として必要のない画素データを読み出してしまう場合があり、最大で横24画素、縦18ライン分の画像データを読み出す場合もある。
ステップS5において、1/2画素精度動き検出部2は、1/2画素精度動き検出を実施する。例えば、動きベクトルMV−INTの周辺8点において、ステップS4において第2ローカルメモリ5に転送された参照画像を用いて、1/2画素を生成し、その8個の1/2画素及び探索中心位置の整数画素と、カレントマクロブロックとで差分絶対値和演算を行う。
図25は、整数画素Bの近傍に生成された1/2画素を示す。すなわち、探索中心位置である整数画素Bの周りに、1/2画素a〜hが生成されている。1/2画素は、例えば、MPEG−4のシンプルプロファイルの場合、整数画素A〜Dを用いて、次のように算出される。
図25の1/2画素fと1/2画素dは、それぞれ、
f=(A+B+C+D+2−R)/4
d=(A+B+1−R)/2
と算出される。ここで、Rは、rounding controlと呼ばれ、「0」または「1」が代入される。
1/2画素精度動き検出部2は、探索中心位置の整数画素Bとその周りの8個の1/2画素a〜hの計9点の画素に対して、差分絶対値和の値が最も小さくなる点を求める。求めた差分絶対値和の値が最も小さくなる点に対する探索中心位置からのオフセット座標を、動きベクトルMV−INTに加算することにより、1/2画素精度の動きベクトルMV−HALFが算出される。
さらに検出精度を向上させるために、1/2画素精度動き検出で求めた動きベクトルMV−HALFを基に、1/4画素精度動き検出を実施する場合もある。例えば、1/2画素精度動き検出と同様に、動きベクトルMV−HALFの周辺8点において、参照画像を用いて1/4画素を生成し、探索中心位置の1/2画素とその周りに生成した8個の1/4画素の計9点の画素に対して、差分絶対値和の値が最も小さくなる点を探索する。探索した点に対する探索中心位置からのオフセット座標を、動きベクトルMV−HALFに加算することにより、1/4画素精度の動きベクトルを算出する。なお、図22及び図23においては、1/4画素精度動き検出のための構成要素と処理ステップを省略して図示していない。
ステップS6において、動き検出に続く動き補償のために、ステップS5の1/2画素精度動き検出において最終的に決定した動きベクトルが示す位置の参照画像が、SDRAM8から第3ローカルメモリ6に転送される。
一般的に、動きベクトル検出は、画素データの輝度成分に対して実施される。そのため、輝度成分に関しては、多くの場合、1/2画素精度動き検出で第2ローカルメモリ5に取得した参照領域は、動き補償に必要な領域を包含している。データ転送量を削減するために、第2ローカルメモリ5のデータを、第3ローカルメモリ6へ転送する場合と、第2ローカルメモリ5を動き補償部3が直接アクセスする場合とがある。ただし、色差成分に関しては、第2ローカルメモリ5に転送されていないため、SDRAM8より第3ローカルメモリ6へ転送する必要がある。
ステップS7において、動き補償部3は、動き補償を実施する。動き補償で取得する色差成分の画像データは、輝度成分の動きベクトルに基づいて決定される色差動きベクトルによって決定される。MPEG−4の場合、輝度成分の動きベクトルの1/2倍したものが色差成分の動きベクトルとして定義される。例えば、輝度成分の動きベクトルのXY座標(0.5、1.5)は、1/2倍すると、(0.25、0.75)になるが、これは(0.5、0.5)に丸められる。
前述したとおり、動画像符号化処理は、動き検出、動き補償、DCT、可変長符号化などの複数の処理から構成される。これらの処理を、一つのハードウェア資源(例えばプロセッサ)を用いて、マクロブロック単位に実行する場合、一つのマクロブロックの処理が終了するまで、次のマクロブロック処理が開始できない。このような逐次処理では、画面サイズや入力のフレームレートが大きい場合、マクロブロック処理が間に合わずに、コマ落ちが生じてしまうことがある。
これを解決するために、処理単位毎のハードウェア資源を用意し、マクロブロック処理をパイプライン的に実行する方法がある。
図26は、動画像符号化処理のフローチャートである。図26に示すように、一般的な動画像符号化処理は、ステップS11の動き検出、ステップS12の動き補償、ステップS13のDCT/量子化処理、及び、ステップS14の可変長符号化処理からなる。これらの処理を、4段のパイプランに分割すると、図27のような処理になる。
図27は、動画像符号化のパイプライン処理を示す。同図において、横軸は時間を表し、各処理の()内の数字は、処理しているマクロブロック番号を示す。図27に示すように、パイプライン処理では、マクロブロック番号「0」の動き検出処理が終了すると、マクロブロック番号「0」の動き補償処理が開始され、それと同時に、マクロブロック番号「1」の動き検出の処理がスタートする。
図27に示す4つの処理のうち、最も処理時間が長い処理の処理時間を時間Tとすると、パイプライン処理では、時間Tの間隔でストリーム化されたマクロブロックが出力されることになる。4つの処理の合計時間を時間Uとすると、1マクロブロックあたりの処理時間は、逐次処理では時間U,パイプライン処理では時間Tとなり、U > T は自明であるため、パイプライン処理によって、マクロブロック処理のスループットが向上する。
しかし、このようなパイプライン処理を実行するためには、各処理の間にパイプラインバッファが必要となる。パイプラインバッファとは、パイプラインの切れ目でデータを保持しておくための中間バッファである。よって、パイプライン化は、性能とコストのトレードオフを考慮して実施しなければならない。
図28は、動き検出のフローチャートである。図28は、複数に階層化された動き検出における、ある階層の動き検出の処理フローを示している。
ステップS21において、第(m−1)階層(mは2以上の自然数)の動き検出が行われる。ステップS21において行われる第(m−1)階層の動き検出が、図24に示したような間引された参照画像に対して実施される場合、ステップS22において、第(m−1)階層で検出された動きベクトルを基に、次の第(m)階層の動き検出のための参照画像データを転送しなければならない。ステップS23において、転送された参照画像データを用いて、第(m)階層の動き検出が行われる。
図29は、動き検出のパイプラインの構成を示し、図28の動き検出に対応するものである。動き検出において、広い範囲を探索する場合、その探索範囲のデータを取得するためのデータ転送に時間を要する。そのため、図29に示すパイプラインの構成例では、stage(k+1)に、データ転送のためのパイプラインステージを設けて、スループットを向上させるている。
以上説明したような、従来技術による手法は、パイプライン処理によって動画像処理のスループットが向上する反面、動き検出の階層が増えた場合には、パイプライン段数が深くなり、レイテンシが増大すると同時に、必要なパイプラインバッファの数が増大するという欠点がある。
特開2002−218474号公報(第3図)
特開2001−15872号公報
そこで本発明は、パイプライン処理における時間遅延を低減してフレーム遅延の発生を抑制し、さらに、パイプラインバッファの数を削減できる、動画像符号化用の動き検出装置を提供することを目的とする。
第1の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、階層的に動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する第2段階の動きベクトル検出のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、第2段階の動きベクトルを検出する第2動き検出手段と、第2動き検出手段で検出した第2段階の動きベクトルを用いて実施する第3段階の動きベクトル検出のための第3参照画像を格納する第3記憶手段と、第3記憶手段に格納された第3参照画像を用いて、第3段階の動きベクトルを検出する第3動き検出手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、主記憶手段と第2記憶手段の間のデータ転送、及び、主記憶手段と第3記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、第1段階の動きベクトルの参照が必要な場合、プロセッサは、第2段階の動きベクトルの検出が完了する前に、第1段階で検出した動きベクトルに基づいて、主記憶手段から第3記憶手段へ第3参照画像のデータを転送し、第1段階の動きベクトルの参照が不必要な場合、プロセッサは、第1段階の動きベクトルの検出が完了する前に、主記憶手段から第3記憶手段へ第3参照画像のデータを転送する。
この構成によれば、第1段階で検出した動きベクトルを参照する場合、第3段階の動きベクトル検出用の参照画像の転送と、第2段階の動きベクトル検出の実行を同時に実施するため、第3段階の動きベクトル検出が遅延なく開始できる。また、第1段階で検出した動きベクトルを参照しない場合、第3段階の動きベクトルの検出を遅延なく開始できる。
第2の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、階層的に動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する第2段階の動きベクトル検出のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、第2段階の動きベクトルを検出する第2動き検出手段と、第2動き検出手段で検出した第2段階の動きベクトルを用いて実施する動き補償のための第3参照画像を格納する第3記憶手段と、第3記憶手段に格納された第3参照画像を用いて、動き補償を実施する動き補償手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、主記憶手段と第2記憶手段の間のデータ転送、及び、主記憶手段と第3記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、第1段階の動きベクトルの参照が必要な場合、プロセッサは、第2段階の動きベクトルの検出が完了する前に、第1段階で検出した動きベクトルに基づいて、主記憶手段から第3記憶手段へ第3参照画像のデータを転送し、第1段階で検出した動きベクトル非参照の場合、プロセッサは、第1段階の動きベクトルの検出が完了する前に、主記憶手段から第3記憶手段へ第3参照画像のデータを転送する。
この構成によれば、第1段階で検出した動きベクトルを参照する場合、動き補償用の参照画像の転送と、第2段階の動きベクトル検出の実行を同時に実施するため、動き補償が遅延なく開始できる。また、第1段階で検出した動きベクトルを参照しない場合、第3段階の動き補償を遅延なく開始できる。
第3の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、階層的に動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する第2段階の動きベクトル検出のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、第2段階の動きベクトルを検出する第2動き検出手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、及び、主記憶手段と第2記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、プロセッサは、第1段階の動きベクトル検出が完了する前に、主記憶手段から第2記憶手段へ第2参照画像のデータを転送する。
この構成によれば、第2段階の動きベクトル検出用の参照画像の転送と、第1段階の動きベクトル検出の実行を同時に実施するため、第2段階の動きベクトル検出が遅延なく開始できる。
第4の発明に係る動き検出装置は、参照画像と被符号化画像との相関により、動きベクトルを検出する動き検出装置であって、プロセッサと、第1段階の動きベクトル検出用の第1参照画像を格納する第1記憶手段と、第1記憶手段に格納された第1参照画像を用いて、第1段階の動きベクトルを検出する第1動き検出手段と、第1動き検出手段で検出した第1段階の動きベクトルを用いて実施する動き補償のための第2参照画像を格納する第2記憶手段と、第2記憶手段に格納された第2参照画像を用いて、動き補償を実施する動き補償手段と、参照画像と被符号化画像を格納する主記憶手段と、主記憶手段と第1記憶手段の間のデータ転送、及び、主記憶手段と第2記憶手段の間のデータ転送を制御するデータ転送制御手段とを備え、プロセッサは、第1段階の動きベクトルの検出が完了する前に、主記憶手段から第2記憶手段へ第2参照画像のデータを転送する。
この構成によれば、動き補償用の参照画像の転送と、第1段階の動きベクトル検出の実行を同時に実施するため、動き補償用が遅延なく開始できる。
第5の発明に係る動き検出装置では、第1動き検出手段は、整数画素精度の動きベクトルを検出する。
第6の発明に係る動き検出装置では、第2動き検出手段は、1/2画素精度の動きベクトルを検出する。
第7の発明に係る動き検出装置では、第3動き検出手段は、1/4画素精度の動きベクトルを検出する。
これらの構成によれば、整数画素精度の動きベクトル検出から1/4画素精度の動きベクトル検出まで、段階的に実行できる。さらに、整数画素精度の動きベクトル検出までを行う動き検出装置、1/2画素精度の動きベクトル検出までを行う動き検出装置、あるいは、1/4画素精度の動きベクトル検出までを行う動き検出装置を、応用目的に応じて随意に構成できる。
第8の発明に係る動き検出装置では、動き補償手段は、輝度画像の動き補償を実施する。
この構成によれば、輝度データに対して動き補償を行う動き検出装置を実現できる。
第9の発明に係る動き検出装置では、動き補償手段は、色差画像の動き補償を実施する。
この構成によれば、色差データに対して動き補償を行う動き検出装置を実現できる。
第10の発明に係る動き検出装置では、第1記憶手段と第2記憶手段とは、メモリで実装され、第1記憶手段のメモリサイズは、第2記憶手段のメモリサイズより大きい。
この構成によれば、第1記憶手段を利用する第1動き検出手段は、第2記憶手段を利用する第2動き検出手段よりも、より広い範囲にわたって動きベクトルを探索することができる。
第11の発明に係る動き検出装置では、第2記憶手段と第3記憶手段とは、メモリで実装され、第2記憶手段のメモリサイズは、第3記憶手段のメモリサイズより大きい。
この構成によれば、第2記憶手段を利用する第2動き検出手段は、第3記憶手段を利用する第3動き検出手段よりも、より広い範囲にわたって動きベクトルを探索することができる。
第12の発明に係る動き検出装置では、第2記憶手段には、データ転送制御手段と第2動き検出手段のいずれか一方がアクセスする。
第13の発明に係る動き検出装置では、第3記憶手段には、データ転送制御手段と第3動き検出手段のいずれか一方がアクセスする。
第14の発明に係る動き検出装置では、第3記憶手段には、データ転送制御手段と動き補償手段のいずれか一方がアクセスする。
これらの構成によれば、パイプラインバッファを設けなくても、データ転送と動き検出を実行できる。
第15の発明に係る動き検出装置では、第1動き検出手段で検出した動きベクトルを基準にして、必要な範囲の参照画像のデータが、第2記憶手段から第3記憶手段へ転送される。
この構成によれば、主記憶手段から第3記憶手段へのデータ転送を割愛できる。
第16の発明に係る動き検出装置では、第1動き検出手段で検出した動きベクトルを基準にして、必要な範囲の参照画像のデータが、第1記憶手段から前記第2記憶手段へ転送される。
この構成によれば、主記憶手段から第2記憶手段へのデータ転送を割愛できる。
本発明によれば、パイプライン処理における時間遅延を低減してフレーム遅延の発生を抑制し、さらに、パイプラインバッファの数を削減できる、動画像符号化用の動き検出装置を提供することができる。
本発明の実施の形態1における動き検出装置のブロック図
本発明の実施の形態1における動き検出装置のフローチャート
本発明の実施の形態1における参照画像の1/4に間引かれた整数画素配置図
本発明の実施の形態1における参照画像の1/4に間引かれた1/2画素配置図
本発明の実施の形態1における参照画像の1/4画素配置図
本発明の実施の形態1における参照画像の転送範囲を示す説明図
本発明の実施の形態1における動き検出装置のパイプラインの構成図
本発明の実施の形態2における動き検出装置のブロック図
本発明の実施の形態2における動き検出装置のフローチャート
本発明の実施の形態2における輝度座標と色差座標の対応表
本発明の実施の形態2における色差データの転送範囲の説明図
従来技術による動き検出装置のパイプライン構成図
本発明の実施の形態2における動き検出装置のパイプラインの構成図
本発明の実施の形態3における動き検出装置のブロック図
本発明の実施の形態3における動き検出装置のフローチャート
本発明の実施の形態3における動き検出装置のパイプラインの構成図
本発明の実施の形態4における動き検出装置のフローチャート
本発明の実施の形態4における動き検出装置のパイプラインの構成図
本発明の実施の形態5における動き検出装置のブロック図
本発明の実施の形態5における動き検出装置のフローチャート
本発明の実施の形態5における動き検出装置のパイプラインの構成図
従来の一般的な動き検出部のブロック図
従来の一般的な動き検出部のフローチャート
1画素毎に間引かれた整数画素の例示図
整数画素Bの近傍に生成された1/2画素の例示図
動画像符号化処理のフローチャート
動画像符号化のパイプライン処理の例示図
動き検出のフローチャート
動き検出のパイプラインの構成図
符号の説明
1 整数画素精度動き検出部
2 1/2画素精度動き検出部
3 動き補償部
4 第1ローカルメモリ
5 第2ローカルメモリ
6 第3ローカルメモリ
7 DMAコントローラ
8 SDRAM
20 プロセッサ
21 整数画素精度動き検出器
22 1/2画素精度動き検出器
23 1/4画素精度動き検出器
24 動き補償器
31、32、33 ローカルメモリ
41 SDRAM
42 DMAコントローラ
次に、図面を参照しながら、本発明の実施の形態を説明する。
(実施の形態1)
図1は、本発明の実施の形態1における動き検出装置のブロック図である。本形態の動き検出装置は、図1に示すように、整数画素精度動き検出器21、1/2画素精度動き検出器22、1/4画素精度動き検出器23、ローカルメモリ31、32、33、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
整数画素精度動き検出器21は、第1動き検出手段に相当し、1/2画素精度動き検出器22は、第2動き検出手段に相当し、1/4画素精度動き検出器23は、第3動き検出手段に相当する。
ローカルメモリ31は、第1記憶手段に相当し、整数画素精度動き検出器21が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ32は、第2記憶手段に相当し、1/2画素精度動き検出器22が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ33は、第3記憶手段に相当し、1/4画素精度動き検出器23が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。SDRAM41は、主記憶装置に相当し、現フレームと参照フレームの画像データを格納する。
DMAコントローラ42は、データ転送制御手段に相当し、SDRAM41とローカルメモリ31、32、33の間のデータ転送を制御する。プロセッサ20は、動き検出装置全体の処理を制御する。また、図1において、実線はデータ線を表し、点線は制御線を表す。
図2は、本発明の実施の形態1における動き検出装置のフローチャートである。図1を参照しつつ、図2に従って、本形態の動き検出装置の動作を説明する。
ステップS31において、整数画素精度動き検出に使用する参照画像データと符号化対象のマクロブロックの画像データが、DMAコントローラ42の制御の下、SDRAM41からローカルメモリ31に転送される。
ステップS32において、整数画素精度動き検出器21は、ローカルメモリ31に転送された参照画像データと符号化対象のマクロブロックの画像データを使用して、整数画素精度動き検出を実施する。整数画素動き検出は、ブロックマッチング法に従って実施される。
以下の説明では、本形態の整数画素精度動き検出を、水平方向に1/4に間引かれた参照画像に対して実施する例について述べる。
図3は、本発明の実施の形態1における参照画像の1/4に間引かれた整数画素配置図である。同図において、白丸の画素Fp1は、間引かれていない整数画素を表し、黒丸の画素Fp2は、間引かれた整数画素を表す。この例では、参照画像は、水平方向に1/4に間引かれている。水平方向で4画素単位に有効データが存在するため、水平方向の動き検出の精度が1/4になる。
整数画素精度動き検出の方法は、数多く提案されており、代表的なものとして、全探索、勾配法、ダイアモンドサーチ、One−at−a−Timeなどがある。本発明では、どの方法を用いても良い。また、整数画素精度動き検出の評価関数には、従来技術の差分絶対値和、差分二乗和などが利用できる。
図2に戻り、ステップS33において、1/2画素精度動き検出に使用される参照画像データと符号化対象のマクロブロックの画像データが、プロセッサ20の命令によって、SDRAM41からローカルメモリ32に転送される。
ステップS34において、1/2画素精度動き検出器22は、整数画素精度動き検出で検出した動きベクトルの周辺で、1/2画素精度動き検出を実施する。本形態の1/2画素精度動き検出では、整数画素精度動き検出で検出した動きベクトルの周辺の8個の1/2画素に対して、1/2画素精度動き検出が実施される。
以下の説明では、本形態の1/2画素精度動き検出を、水平方向に1/4に間引かれた参照画像に対して実施する例について述べる。
図4は、本発明の実施の形態1における参照画像の1/4に間引かれた1/2画素配置図である。図4において、白丸の画素Fp1は、間引かれていない整数画素を表し、黒丸の画素Fp2は、間引かれた整数画素を表す。また、小さい白丸の画素Hp1は、間引かれていない整数画素Fp1から算出された1/2画素を表す。
1/2画素は、前述したように、整数画素値の平均で算出する。図4に示すように、ある探索位置に注目すると、1/2画素は、横方向に4画素単位で有効である。また、同じ1/4に間引きされた処理でも、1/2画素精度動き検出には、整数画素精度動き検出の時に比較して、より多くの参照画像データが必要になることが分かる。
図2に戻り、ステップS35において、1/4画素精度動き検出に使用される参照画像データと符号化対象のマクロブロックの画像データが、プロセッサ20からの命令によって、SDRAM41からローカルメモリ33に転送される。
ステップS36において、1/4画素精度動き検出器23は、1/2画素精度動き検出で検出した動きベクトルの周辺で、1/4画素精度動き検出を実施する。
動き検出の最後の階層である1/4画素精度動き検出では、動き検出の精度を向上させるために、画素の間引きは行われない。
図5は、本発明の実施の形態1における参照画像の1/4画素配置図である。図5において、白丸の画素Fp1は、整数画素を表し、小さい白丸の画素Hp1は、1/2画素を表し、小さい黒丸の画素Qp1は、1/4画素を表す。画素Fp1,画素Hp1,及び、画素Qp1の符号付けは、代表的であって、すべての画素に符号を付しているのではない。
1/4画素の算出は、1/2画素が整数画素から算出された場合と同様に、1/2画素の平均値として求められる。図5に示した1/4画素の配置、1/4画素を算出するための1/2画素の配置、さらに、1/2画素を算出するための整数画素の配置から明白なように、1/4画素精度動き検出では整数画素を間引くことができない。従って、間引きのある1/2画素からの1/2画素精度動き検出が終了したら、1/4画素精度動き検出用として、間引きのない参照画像データを転送する必要がある。
ところで、前述したように、1/4画素精度動き検出用の参照画像データの転送の終了を待って、1/4画素精度動き検出を実施すると、1/4画素精度動き検出の開始が遅くなり、レイテンシが増加する。そこで、図2に示すステップS35では、整数画素精度動き検出が終了した時点で、1/2画素精度動き検出における探索範囲を含むように、1/4画素精度動き検出用のデータを転送する。
図6は、本発明の実施の形態1における参照画像の転送範囲を示す説明図である。図6において、各画素の符号は、図5と同様であり、説明を省略する。
図6に示す例では、符号化するマクロブロックは、3画素×3画素から構成されると仮定している。(実際は、符号化するマクロブロックは、16画素×16画素から構成される。)実線の枠51が、整数画素精度動き検出でマッチングの取れたマクロブロックであり、その整数画素精度動きベクトルMV−INTの位置は、枠51の左上の画素Fp3の座標で与えられる。点線で示す枠52は、1/4画素精度動き検出用に転送すべき参照画像の範囲を示す。すなわち、枠52は、1/2画素精度動き検出において、画素Fp3で示される動きベクトルMV−INTの位置から、その周辺の8個の1/2画素のいずれに1/2画素精度動きベクトルMV−HALFの検出結果が落ち着いても、次の1/4画素精度動き検出のための1/4画素を生成するために必要な整数画素が必ず含まれるような画素の範囲を示している。
このように、1/4画素精度動き検出のための参照画像データの転送範囲を枠52で示す範囲に設定すれば、1/4画素精度動き検出のための参照画像データを、整数画素精度動き検出において動きベクトルMV−INTが確定した段階で、図1のSDRAM41からローカルメモリ33へ転送することができる。この結果、1/2画素精度動き検出の結果を待たずに、1/4画素精度動き検出用の参照画像データを転送できるため、1/4画素精度動き検出のデータ待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
図7は、本発明の実施の形態1における動き検出装置のパイプラインの構成を示す。図7は、本形態の動き検出装置の処理のパイプラインが、動き検出処理と参照画像DMA転送処理とに分けて、stage−0からstage−4にわたって構成されていることを表している。上述したように、本形態の動き検出装置では、stage−3において、1/2画素精度動き検出と同時に、1/4画素精度動き検出用の参照画像データの転送が実施できるため、パイプラン段数を一段少なく出来る。
以上説明したように、本形態の動き検出装置によれば、パイプライン段数を一段少なくできて、その分だけ動き検出処理を高速に実施できるので、パイプライン処理における時間遅延を低減してフレーム遅延の発生を抑制出来る。
(実施の形態2)
図8は、本発明の実施の形態2における動き検出装置のブロック図である。図8において、図1と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
本形態の動き検出装置は、図8に示すように、整数画素精度動き検出器21、1/2画素精度動き検出器22、動き補償器24、ローカルメモリ31、32、33、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
ローカルメモリ31は、第1記憶手段に相当し、整数画素精度動き検出器21が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ32は、第2記憶手段に相当し、1/2画素精度動き検出器22が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。ローカルメモリ33は、第3記憶手段に相当し、動き補償器24が使用する参照画像データと符号化対象のマクロブロックの画像データを格納する。SDRAM41は、主記憶装置に相当し、現フレームと参照フレームの画像データを格納する。
DMAコントローラ42は、データ転送制御手段に相当し、SDRAM41とローカルメモリ31、32、33の間のデータ転送を制御する。プロセッサ20は、動き検出装置全体の処理を制御する。また、図8において、実線はデータ線を表し、点線は制御線を表す。
本形態の動き検出装置では、動き検出は、整数画素精度と1/2画素精度の2階層で実施され、1/4画素精度動き検出は実施されない。また、1/2画素精度動き検出では、参照画像の画素を間引かないものとする。1/2画素精度動き検出の後、動き補償が実施される。
図9は、本発明の実施の形態2における動き検出装置のフローチャートである。
図8を参照しつつ、図9に従って、本形態の動き検出装置の動作を説明する。
ステップS41における整数画素精度動き検出用の参照画像データと符号化対象のマクロブロック画像データの転送、ステップS42における整数画素精度動き検出、ステップS43における1/2画素精度動き検出用の参照画像データと符号化対象のマクロブロック画像データの転送、及び、ステップS44における1/2画素精度動き検出は、図2に示した本発明の実施の形態1における動き検出装置のフローチャートのステップS31、ステップS32、ステップS33、及び、ステップS34と同様であり、説明を省略する。
ステップS44において、1/2画素精度動き検出が終了すると、次に動き補償を実施する。動き補償は、輝度成分の参照画像と、色差成分の参照画像に対して実施される。しかし、この段階では、色差成分の参照画像データは、ローカルメモリ33にまだ転送されていない。また、色差成分の参照画像データ領域は、輝度成分の動きベクトルが確定した後でなければ特定できないため、従来技術では、1/2画素精度動き検出の確定後に、色差成分の参照画像データを転送する必要があった。
そこで、本形態の動き検出装置では、ステップS45において、整数画素動きベクトルが確定した段階で、1/2画素精度動き検出の探索範囲を含むように、色差成分の参照画像データの転送を開始する。すなわち、実施の形態1における図2のステップS35の1/4画素精度動き検出用参照画像転送と同様に、1/2画素精度動き検出のいかなる探索結果にも対応できるように、必要な色差成分の参照画像データ領域を定義し、その領域の色差成分の参照画像データを、整数画素精度動き検出における動きベクトルの決定直後に、図8に示すSDRAM41からローカルメモリ33へ転送する。
ステップS46において、ステップS44における1/2画素精度動き検出結果に従って、ローカルメモリ33に格納されている、輝度成分の参照画像データと色差成分の参照画像データとを読出し、動き補償を行う。
上述したステップS45における色差成分の参照画像データの具体的な転送方法をさらに説明する。
図10は、本発明の実施の形態2における輝度座標と色差座標の対応表である。この対応表は、水平方向と垂直方向の座標に等しく適用できる。
色差成分の参照画像データ(以下、色差データと呼ぶ)は、水平方向と垂直方向のそれぞれにおいて、輝度成分の参照画像データ(以下、輝度データと呼ぶ)の半分の量であるため、それぞれの方向で輝度データ2つに対して色差データ1つが対応する。(画面全体では、輝度データ4つに対して色差データ1つが対応する。)すなわち、図10に示すように、輝度の座標値「0」は、色差の座標値「0」に、輝度の座標値「0.5」「1」「1.5」は、色差の座標値「0.5」に、輝度の座標値「2」は、色差の座標値「1」に、それぞれ対応するといった具合である。この座標変換ルールによれば、たとえば、輝度データのXY座標(1.5、2.5)に対応する色差データのXY座標は、(0.5、1.5)である。
動き補償において、被符号化マクロブロックの16画素×16画素の輝度データに対応して生成しなければならない色差データは、8画素×8画素である。図11は、本発明の実施の形態2における色差データの転送範囲の説明図である。図11は、説明を簡単にするために、水平方向における輝度データの座標から色差データの座標に座標変換する例を示している。
いま、輝度データにおいて、整数画素精度動き検出の結果、整数画素精度動きベクトルMV−INTの位置は、黒丸の整数画素Fp12に求まったと仮定する。次の階層の1/2画素精度動き検出では、1/2画素精度動きベクトルが検出される可能性のある座標位置は、整数画素Fp12の左右の1/2画素Hp11と1/2画素Hp12、および、整数画素Fp12そのものである。例えば、整数画素Fp12のX座標が「2」である場合、1/2画素精度動きベクトルが検出される可能性のある画素Hp11,Fp12,Hp12のX座標は、それぞれ、「1.5」、「2」、「2.5」となる。
これらの輝度データの座標に対応する色差データの座標と画素は、図10の座標変換ルールより、座標「0.5」の1/2画素Hp20、座標「1」の整数画素Fp21、座標「1.5」の1/2画素Hp21となる。つまり、色差データの1ライン−8画素分として生成される可能性のある画素の座標は、次の3つの場合のいずれかである。
(1)0.5、1.5、2.5、3.5、4.5、5.5、6.5、7.5
(2)1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0
(3)1.5、2.5、3.5、4.5、5.5、6.5、7.5、8.5
座標「0.5」の1/2画素Hp20から座標「7.5」の1/2画素Hp27までを含む場合(1)の色差データを生成するためには、座標「0」の整数画素Fp20から座標「8.0」の整数画素Fp28までを、SDRAM41からローカルメモリ33に転送する必要がある。
座標「1.5」の整数画素Hp21から座標「8.5」の整数画素Hp28を含む場合(3)の色差データを生成するためには、座標「1」の整数画素Fp21から座標「9.0」の整数画素Fp29までを、SDRAM41からローカルメモリ33に転送する必要がある。
以上より、場合(1)、(2)、(3)の色差データをすべて生成できるようにするためには、座標「0」の整数画素Fp20から座標「9.0」の整数画素Fp29までを、SDRAM41からローカルメモリ33に転送すれば良い。このように計算することで、1/2画素精度動き検出が終了する前に、色差の参照画像データを転送することが可能である。
このように、本形態の動き検出装置によれば、1/2画素精度動き検出の結果を待たずに、動き補償用の参照画像データを転送できるため、動き補償に必要な参照画像データを取得するための待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
ここで、本形態の動き検出装置における必要なパイプライン段数とパイプラインバッファ数の削減効果をより明確にするため、従来技術と比較しよう。
図12は、従来技術による動き検出装置のパイプライン構成を示す。同時に、図12には、各段で必要なパイプラインバッファを示している。
図12に示すように、stage−0において、現在転送している参照画像の輝度データを保持するための参照画像バッファ(輝度)が必要となる。これは、異なるマクロブロック世代において、データ転送と処理がstage−0とstage−1で同時に実施されているためである。例えば、stage−1で(n)番目のマクロブロックの整数画素精度動き検出を実行している時に、stage−0で(n+1)番目のマクロブロックの整数画素精度動き検出用の参照画像データを並行して転送している。この時、(n)番目のマクロブロックの整数画素精度動き検出で参照しているメモリ領域を破壊しないために、stage−0におけるデータ転送のために別途バッファを設ける必要がある。さらに、stage−1の整数画素精度動き検出に使用する現画像のマクロブロックデータ(輝度データと色差データ)を、stage−0において同時に転送するために、現マクロブロックバッファ(輝度・色差)が必要である。
従来技術による動き検出装置では、動き補償用データの転送が、stage−2の1/2画素精度動き検出が完了した後に実行されるため、動き補償をstage−2とは別のstage−3で行う必要がある。これは、1/2画素精度動き検出と動き補償の処理を同じ段に収めることが性能的に難しいためである。この結果、stage−2に、輝度データ転送用の参照画像バッファ(輝度)と、色差データ転送用の参照画像バッファ(色差)と、stage−3に、輝度データ動き補償用の参照画像バッファ(輝度)と、色差データ動き補償用の参照画像バッファ(色差)とが必要となる。
このように、従来技術による動き検出装置では、4段のパイプラインが必要であり、パイプラインバッファは、合計10個必要である。
図13は、本発明の実施の形態2における動き検出装置のパイプラインの構成を示す。本形態のパイプライン構成によれば、stage−0において整数画素精度動き検出用データ転送を行い、stage−1において整数画素精度動き検出を行い、その結果を受けて1/2画素精度動き検出用データ転送を行う。stage−2において1/2画素精度動き検出と動き補償用データ(色差データ)転送を並行して行い、その後動き補償を実施する。
このように、本形態の動き検出装置によれば、stage−1の整数画素精度動き検出の結果によって、動き補償用データ(色差データ)の転送範囲を特定して、動き補償用データ(輝度データと色差データ)の転送を、stage−2において1/2画素精度動き検出と並行して実施できるので、必要なパイプライン段数は、3段である。これは、図12に示した従来技術による動き検出装置よりも1段少ない。
図13には、パイプラインの各段で必要となるパイプラインバッファも同時に示している。本形態の動き検出装置では、必要なパイプラインバッファは、各段の輝度データ用の参照画像バッファ(輝度)と、輝度データと色差データ用の現マクロブロックバッファ(輝度・色差)、及び、stage−2の色差データ用の参照画像バッファ(色差)の、計7個である。すなわち、本形態の動き検出装置では、stage−3が不要となった効果として、パイプラインバッファ数を、図12に示した従来技術による動き検出装置の10個から7個に削減できる。
(実施の形態3)
図14は、本発明の実施の形態3における動き検出装置のブロック図である。図14において、図1と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
本形態の動き検出装置は、図14に示すように、整数画素精度動き検出器21、1/2画素精度動き検出器22、ローカルメモリ31、32、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
本形態の動き検出装置では、整数画素精度動き検出の後に、1/2画素精度動き検出を実施し、1/4画素精度動き検出は実施しない。また、1/2画素精度動き検出では、参照画像の画素を間引かないものとする。
図15は、本発明の実施の形態3における動き検出装置のフローチャートである。
図15に示すように、本形態の動き検出装置は、ステップS51において、整数画素精度動き検出用の参照画像データをSDRAM41からローカルメモリ31に転送する。
ステップS52において、整数画素精度動き検出を行う。
ステップS53において、1/2画素精度動き検出用の参照画像データをSDRAM41からローカルメモリ32に転送する。この1/2画素精度動き検出用の参照画像データの転送は、ステップS51の整数画素精度動き検出用の参照画像データの転送と並行して行っても良いし、ステップS52の整数画素精度動き検出と並行して行っても良い。
1/2画素精度動き検出用の参照画像データの転送する領域は、整数画素精度動き検出の探索結果に依存せずに決定される。その決定の方法は、本発明の実施の形態1における1/4画素精度動き検出用の参照画像データの転送領域の決定の方法と同様である(図6参照)。すなわち、現在符号化中のマクロブロックに対して、整数精度動きベクトルがどの位置に落ち着いても、1/2画素精度動き検出に必要な参照画像データが必ず含まれるように、1/2画素精度動き検出用の参照画像データの転送する領域を決定する。
ステップS54において、ステップS52の整数画素精度動き検出の探索結果を基に、ステップS53で転送した1/2画素精度動き検出用の参照画像データを用いて、1/2画素精度動き検出を行う。
このように、本形態の動き検出装置によれば、整数画素精度動き検出の結果を待たずに、1/2画素精度動き検出用の参照画像データを転送できるため、1/2画素精度動き検出用の参照画像データの待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
図16は、本発明の実施の形態3における動き検出装置のパイプラインの構成を示す。本形態の動き検出装置によれば、stage−1において、1/2画素精度動き検出用の参照画像データ転送が実施できるため、パイプラン段数がひとつ少なくて済む。
(実施の形態4)
本発明の実施の形態4の動き検出装置は、図1に示した本発明の実施の形態1の動き検出装置と同じブロック構成である。従って、本形態の動き検出装置の説明は、図1を参照して行う。
本形態の動き検出装置は、本発明の実施の形態1と実施の形態3を組み合わせたものであり、整数画素精度動き検出、1/2画素精度動き検出、及び、1/4画素精度動き検出を実施する。また、本形態の動き検出装置は、1/2画素精度動き検出用の参照画像転送を整数画素精度動き検出の結果を待たずに実施でき、かつ、1/4画素精度動き検出用の参照画像転送を、整数画素精度動き検出において動きベクトルが確定した直後に開始できる。
図17は、本発明の実施の形態4における動き検出装置のフローチャートである。図1を参照しつつ、図17に従って、本形態の動き検出装置の動作を説明する。
ステップS61において、整数画素精度動き検出用参照画像データの転送を行う。
ステップS62において、整数画素精度動き検出を行う。
ステップS62と同時に、ステップS63において、1/2画素精度動き検出用参照画像データの転送を行う。
ステップS64において、ステップS62の整数画素精度動き検出の探索結果を基に、ステップS63で転送した1/2画素精度動き検出用の参照画像データを用いて、1/2画素精度動き検出を行う。
ステップS64と同時に、ステップS65において、ステップS62の整数画素精度動き検出の探索結果を基に決定されたデータ転送領域について、1/4画素精度動き検出用参照画像データの転送を行う。
ステップS66において、テップS64の1/2画素精度動き検出の探索結果を基に、ステップS65で転送した1/4画素精度動き検出用の参照画像データを用いて、1/4画素精度動き検出を行う。
このように、本形態の動き検出装置は、整数画素精度動き検出の結果を待たずに、1/2画素精度動き検出用の参照画像データを転送できるため、1/2画素精度動き検出用の参照画像データの待ち時間が削減される。さらに、1/2画素精度動き検出の結果を待たずに、1/4画素精度動き検出用の参照画像データを転送できるため、1/4画素精度動き検出用の参照画像データの待ち時間が削減される。この結果、本形態の動き検出装置によれば、マクロブロック処理のレイテンシが大幅に改善する。
図18は、本発明の実施の形態4における動き検出装置のパイプラインの構成を示す。図18に示すように、本形態の動き検出装置は、stage−1において、1/2画素精度動き検出用の参照画像データの転送が実施でき、かつ、stage−2において、1/4画素精度動き検出用の参照画像データの転送が実施できる。その結果、本形態の動き検出装置では、パイプライン段数が2段削減される。さらに、本形態の動き検出装置は、マクロブロック処理のレイテンシが、動きベクトル検出の実行時間のみによって決定され、データ転送による遅延が生じないという特徴を有する。
(実施の形態5)
図19は、本発明の実施の形態5における動き検出装置のブロック図である。図19において、図1と同様な構成要素については、同一の符号を付すことにより、説明を省略する。
本形態の動き検出装置は、図19に示すように、整数画素精度動き検出器21、動き補償器24、ローカルメモリ31、32、SDRAM41、DMAコントローラ42、及び、プロセッサ20を備える。
本形態の動き検出装置では、整数画素精度動き検出の後に、動き補償を行う。
図20は、本発明の実施の形態5における動き検出装置のフローチャートである。
図20に示すように、本形態の動き検出装置は、ステップS71において、整数画素精度動き検出用の参照画像データをSDRAM41からローカルメモリ31に転送する。
ステップS72において、ステップS71においてローカルメモリ31に転送された参照画像データを用いて、整数画素精度動き検出を行う。
ステップS73において、動き補償用の参照画像データをSDRAM41からローカルメモリ32に転送する。この参照画像データの転送は、ステップS72の整数画素精度動き検出と並行して実施する。
ステップS74において、ステップS73で転送した動き補償用の参照画像データを用いて、ステップS72の整数画素精度動き検出の探索結果を基に、動き補償を行う。
このように、本形態の動き検出装置によれば、整数画素精度動き検出の結果を待たずに、動き補償用の参照画像データを転送できるため、動き補償用の参照画像データの待ち時間が削減され、マクロブロック処理のレイテンシが改善する。
図21は、本発明の実施の形態5における動き検出装置のパイプラインの構成を示す。本形態の動き検出装置によれば、stage−1において、動き補償用の参照画像データ転送が実施できるため、パイプラン段数がひとつ少なくて済む。
以上説明したように、本発明の動き検出装置によれば、1/2画素精度動き検出用の参照画像データの転送と1/4画素精度動き検出用の参照画像データの転送とを、それぞれ上位の階層の画素精度動き検出の結果を待たずに、実施できるので、参照画像データの転送に伴う遅延が生ぜず、マクロブロック処理のレイテンシが大幅に改善する。また、本発明の動き検出装置によれば、パイプライン段数の削減と、パイプラインバッファ数の削減が可能となる。この結果、高速処理可能な動画像の動き検出装置を、より小型に低コストで実現できる。
本発明の趣旨は、参照画像データの転送に伴うマクロブロック処理のレイテンシを改善し、さらに、パイプラインバッファの必要個数を削減できる、動画像符号化用動き検出装置を実現することにあるのであって、本発明の趣旨を逸脱しない限り、種々の適用が可能である。
本発明に係わる動き検出装置は、例えば、動画像の符号化装置とその応用分野において利用できる。