(57)【要約】【課題】異なる予測演算を含む画像復号処理を高速化することの出来る画像データ復号演算装置を提供する。【解決手段】MBTYPE解析部において、対象のマクロブロックが周辺予測処理を行うものか、時間Direct予測処理を行うものかを判断し、判断結果に応じてデータを時間Direct予測処理部と周辺予測処理部に振り分ける。時間Direct予測処理は、すぐに処理を始め、周辺予測処理は、参照先データが揃ってから処理を始める。時間Direct予測処理と周辺予測処理は、可能な場合には並行に実行し、処理の高速化を図る。【選択図】図１１
2010206688.tif 000002
【特許請求の範囲】
【請求項１】
Direct予測方式で符号化されたデータと周辺予測方式で符号化されたデータとが混在する画像データを復号する画像データ復号演算装置において、
Direct予測方式で符号化されたデータを復号して、動きベクトルを取得するDirect予測処理部と、
ピクチャのすべてのDirect予測方式で符号化されたデータの復号を待たずに、Direct予測処理部の動作と並行して、周辺予測方式で符号化されたデータのうち参照先のデータが揃ったデータから復号して、動きベクトルを取得する周辺予測処理部と、
Direct予測方式で符号化されたデータを該Direct予測処理部へ、周辺予測方式で符号化されたデータを該周辺予測処理部へ選択出力する選択部と、
を備えることを特徴とする画像データ復号演算装置。
【請求項２】
前記Direct予測方式は、時間Direct予測方式であることを特徴とする請求項１に記載の画像データ復号演算装置。
【請求項３】
前記Direct予測方式は、時間Direct予測方式と空間Direct予測方式とを含むことを特徴とする請求項１に記載の画像データ復号演算装置。
【請求項４】
前記データは、マクロブロックを分割したブロック単位で動きベクトルの生成が行われることを特徴とする請求項１に記載の画像データ復号演算装置。
【請求項５】
Direct予測方式で符号化されたデータと周辺予測方式で符号化されたデータとが混在する画像データを復号する画像データ復号演算方法において、
Direct予測方式で符号化されたデータを復号して、動きベクトルを取得し、
ピクチャのすべてのDirect予測方式で符号化されたデータの復号を待たずに、Direct予測処理部の動作と並行して、周辺予測方式で符号化されたデータのうち参照先のデータが揃ったデータから復号して、動きベクトルを取得する、
ことを特徴とする画像データ復号演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像などの画像データ復号演算装置に関する。
【背景技術】
【０００２】
近年、差分符号化を用いた画像圧縮技術としてＨ.２６４、ＭＰＥＧ−１／２、ＭＰＥＧ−４、ＶＣ−１、ＡＶＳなどの規格が知られている。これらの規格ではフレーム間予測を実行する方法として、動きベクトル（MV）を用いた予測手法が用いられる。
【０００３】
図１は、従来のH.264あるいはAVSの符号器、復号器の概略構成図である。
符号器１０は、入力画像を入力し、符号化して、復号器１１に渡し、復号器１１は、渡された符号化画像を復号して、出力画像として出力する。
【０００４】
符号器１０においては、入力画像は、MB（マクロブロック）分割部１５において、処理単位であるマクロブロックに分割される。マクロブロックに分割された入力画像は、動きベクトル検出部１６に入力され、マクロブロックごとの動きベクトルが検出される。動きベクトル検出部１６には、過去に処理されたフレームを格納する過去のフレームバッファ１７から、過去のフレームの画像データが入力される。これは、動きベクトル検出部１６において、現在のフレームと過去のフレームとの差分をとって、処理対象のマクロブロックに一番近い、過去のフレームのマクロブロックを指し示すベクトルを動きベクトルとするからである。
【０００５】
動きベクトル（MV）は、フレーム間予測部１８に入力される。フレーム間予測部１８には、過去のフレームバッファ１７から、動きベクトルの検出に用いられた過去のフレームが入力され、差分動きベクトルとフレーム間予測によって生成された予測画像が生成される。差分動きベクトルは、エントロピー符号化部１９に入力される。フレーム間予測によって生成された予測画像は、予測モード選択部２０に入力される。
【０００６】
一方、現フレームバッファ２１には、現在のフレームが格納されており、フレーム内予測部２２に現フレームを与えて、フレーム内予測によって生成された予測画像を生成させる。フレーム内予測によって生成された予測画像は、予測モード選択部２０に入力される。また、現フレームバッファ２１の現フレームは、デブロッキングフィルタ２３において、デブロッキングされ、フレームバッファ管理部２４を介して、過去に処理されたフレームとして、過去のフレームバッファ１７に格納される。
【０００７】
予測モード選択部２０は、現在のマクロブロックの予測方式がフレーム間予測かフレーム内予測かの設定を受けて、フレーム間予測部１８からの予測画像か、フレーム内予測部２２の予測画像のいずれかを選択出力する。予測モード選択部２０から出力された予測画像は、減算器２５において、マクロブロックごとに入力画像との差分が取られ、この差分が直交変換量子化部２６において、直交変換され、量子化される。直交変換量子化部２６の出力は、エントロピー符号化部１９において可変長符号化され復号器１１に渡される。また、直交変換量子化部２６の出力は、逆量子化逆直交変換部２７において、元の差分画に戻され、加算器２８において、予測画像と加算されて、現在のフレームが復元される。復元された現フレームは、現フレームバッファ２１に格納される。
【０００８】
復号器１１では、可変長符号化された画像をエントロピー復号化部３０において、可変長復号し、得られた差分動きベクトルをフレーム間予測部３１に与える。また、可変長復号された画像は、逆量子化逆直交変換部３２において、逆量子化され、逆直交変換され、加算器３３に入力される。加算器では、予測画像と加算され、現フレームが復元される。現フレームは、現フレームバッファ３４に格納される。現フレームバッファ３４に格納された現フレームは、フレーム内予測部３５に与えられ、フレーム内予測による予測画像を生成させる。フレーム内予測部３５の出力は、予測モード選択部３６に与えられる。また、現フレームバッファ３４の現フレームは、デブロッキングフィルタ３７において、デブロッキング処理され、フレームバッファ管理部３８を介して、過去フレームバッファ３９に格納される。
【０００９】
過去フレームバッファ３９の過去フレームは、フレーム間予測部３１に与えられ、フレーム間予測による予測画像を生成させる。フレーム間予測部３１の出力は、予測モード選択部３６に与えられる。予測モード選択部３６は、マクロブロックのデータに付随する情報から、符号化に使用されている予測モードを取得し、フレーム内予測部３５あるいはフレーム間予測部３１のいずれかの予測画像を加算器３３に入力する。過去フレームバッファ３９の過去フレームは、処理し終わったフレームであるので、出力画像として出力される。
【００１０】
符号化処理では入力画像に対してMB（マクロブロック）内のブロック単位で処理が行われる。直交変換、量子化などで画面内の冗長性を取り除く画面内予測と過去の複数フレーム（過去のフレームバッファ１７）から動き補償した予測残差を抽出する事でフレーム間の冗長性を取り除くフレーム間予測を用い、上記の値をエントロピー符号化する事により圧縮効果をはかる。復号化ではその符号化の逆動作となる。
【００１１】
動きベクトルは現フレームを再生する際に用いるパラメータであり、過去にデコードした画像からの移動距離を示すものである。
図２は、動きベクトルを説明する図である。
【００１２】
図２では、フレーム番号１〜３のフレームが示されている。フレーム２が他のフレームを参照するフレームである。フレーム２が他のフレームを参照する場合、表示順が先のフレーム１を参照する場合と、表示順が後のフレーム３を参照する場合がある。フレーム１を参照する場合を前方参照と呼び、フレーム３を参照する場合を後方参照と呼ぶ。いずれの場合にも、フレーム２がデコードされるときには、フレーム１も３もデコード済みでなくてはならないので、表示順は、フレーム１、２、３の順番でも、デコード順は、フレーム１、３、２の順番となる。
【００１３】
これらの技術を用いる事で、全時間の全画素情報を保持するよりも圧倒的にデータ量を削減することが可能であり、動画像圧縮技術や、動画内の移動物体認識等を行う場合に用いられる。
【００１４】
上記記載の画像圧縮規格において、現フレームをデコードする処理順番は16×16画素（MB：マクロブロック）単位に行われる。
図３は、フレーム内のデコード順を説明する図である。
【００１５】
デコードは、マクロブロック単位で行われる。マクロブロックは、16×16画素のブロックであり、図3に示すように、1フレーム内では、左から右、上から下の順にデコードを行う。
【００１６】
MB単位内では、予測精度を向上させる為MB内で分割される場合があり、下記に示すケースがある。
（MB分割：16×16、16×8、8×16、8×8）
更にMB分割が8×8分割の場合、下記に示すSubMB分割がある。
（SubMB分割：8×8、8×4、4×8、4×4）
【００１７】
図４は、MBの分割について図示する図である。
1マクロブロックは、16×16画素であるが、これを横に分割する16×8、縦に分割する8×16、４つに分割する8×8の分割方法がある。それぞれ、16×16画素、16×8画素、8×16画素、8×8画素の単位で動きベクトルを生成する。また、8×8画素の分割の場合には、SubMB分割がある。これは、H.264の場合であり、AVSには適用されない。SubMB分割は、8×8画素を基準に、横に分割する8×4分割、縦に分割する4×8分割、4つの分割する4×4分割がある。
【００１８】
また、同一MB内でもサブブロック単位（8×8）にＭＶ演算の予測方法が異なる場合が存在する。
動きベクトル（MV）を求めるのにH.264やAVSでは周辺予測やDirect予測といった算出方法がある。
【００１９】
これらの演算方式は処理が全く異なるがＭＢ分割毎にMV演算する必要があり、各演算処理に時間がかかるため演算時間の短縮が望まれている。
周辺予測ベクトル演算について以下に示す。
【００２０】
図５は、周辺予測の演算方法を説明する図である。
現ブロックのMVを求める場合、左隣接情報（A）、真上隣接情報（B）、右上隣接情報（C）、左上隣接情報（D）として図中に示される予測動きベクトルから、これらの中間値のMVP（予測動きベクトル）を求め、現ブロックの差分MV情報（MVD）との和で、現ブロックの動きベクトルを求める。隣接Cがない場合のみ隣接Dを隣接Cとして演算に用いる。
【００２１】
マクロブロックを更に分割して、8×8のサブブロックとした場合は、図５の分割マクロブロックMBPartの０〜３の順に処理を進める。MBPart3を処理する場合には、MBPart2が左隣情報（A）、MBPart1が真上隣接情報（B）、MBPart0が左上隣接情報（D）として使用される。
【００２２】
図６は、周辺予測の場合にメモリに格納されるデータについて説明する図である。
周辺予測演算に用いるメモリは、隣接B,C,Dを保持しておく必要がある為、4×4ブロックで処理する場合、（4）×1（Line）と、4×16（マクロブロックの左の縦の部分）と、現ブロック処理分（16）のメモリが必要となる。すなわち、図６のように、4×4画素を単位として処理を行う場合、図５で説明したように、隣接情報として、4×4ブロックA〜Dを保持しておく必要がある。したがって、現ブロックの上側の、現ブロックから右側に向かって一列と、現ブロックの左側の縦の列が必要である。上側のブロックを現ブロックから右側に一列分保持しておくのは、次のマクロブロックを処理するようになると、マクロブロックの位置が右にずれるが、その場合にもメモリ内に必要なデータ保持しておくためである。また、現マクロブロックがフレームの右端から、1段下の左端に移動する場合のために、メモリには、現ブロックから左に向かって一列分、現マクロブロックの一番下のブロックを保持しておく。前方、後方参照の両方を考慮した場合２倍のメモリ量が必要となる。
【００２３】
周辺予測の場合には、隣接A-Dの動きベクトルMVを参照して、現MBを処理するので、隣接A-DのMVが先に生成されていないと処理開始できない。また、参照先のMVが生成されてから現在のMBを処理するので、MBPart順に処理する必要がある。
【００２４】
次にDirect予測ベクトル演算について以下に示す。
Direct予測ベクトル演算は、時間Direct演算モードと空間Direct演算モードが存在する。
【００２５】
図７は、時間Direct予測の演算方法を示す図である。
時間Direct予測は、過去に復号したベクトル情報を後方参照ピクチャとし、対象ピクチャ、後方参照ピクチャ、前方参照ピクチャの時間的距離を演算し、ベクトルを生成する予測符号化モードである。
【００２６】
図７において、POC0は、前方参照するピクチャの表示順番を示す番号である。POC_CUは、現ピクチャの表示順番を示す番号である。POC1は、後方参照するピクチャの表示順番を示す番号である。図７の場合、POC0は、６であり、POC_CUは、８であり、POC1は、１２である。前方の距離が２であり、後方の距離が４である。したがって、前方の動きベクトルと後方の動きベクトルの大きさの割合を１：２として、POC0の対応するMBの動きベクトルとPOC1の対応するMBの動きベクトルを内分したものをPOC_CUの動きベクトルとする。
【００２７】
時間Direct予測においては、過去のベクトル情報を用いて演算するので差分動きベクトル（MVD）を必要としない為、時間Direct演算を使用する事で圧縮効率が向上する。動き速度が一定の場合に時間的な相関関係があるので効果がある。処理順番は、復号対象ピクチャのMV情報をメモリにmvCol情報として使用する為に格納しておく（このピクチャが後方参照Pictureとなる場合の為）。
【００２８】
復号対象ピクチャの対象MBが時間Directモードの場合、ColPic（後方参照先ピクチャ）のmvCol情報を取得する。
ここで、
ColPic(Colocated Picture)：復号対象ピクチャの後方参照ピクチャの事を意味する。
mvCol（motion vector Colocated MB）：対象MB（マクロブロック１６×１６画素）におけるColPic内の同MB位置のMVを意味する。
POCは画面表示順のパラメータであり現フレーム、前方参照、後方参照のPOCを用いる。
POC0   ：前方参照画 MV（Fwd）に対応したPOCもの
POC1   ：後方参照画  MV（Bwd）に対応したPOCもの
POC_CU ：現フレームに対応したPOC
【００２９】
時間Direct予測のMVの演算は、以下のような式で与えることが規格により規定されている。
・tb /tdを演算（POC_CU/POC0/POC1より）
tb = POC_CU-POC0
td = POC1-POC0
・txを演算(td/tbより)
tx = (16384 + Abs(td/2))/td
・DSF（ＤｉｓｔＳｃａｌｅＦａｃｔｏｒ）を演算（tb/txより）
DSF = Clip3(-1024,1023,(tb*tx + 32)>>6)
・TempralDirectMVを演算 MV内分式
前方MV  mvFwｄ = (DSF * mvCol + 128)>>8
後方MV  mvBwd= mvFwd - mvCol
時間Direct予測においては、周辺予測と異なりMB内で分割があった場合でも隣接A-Dの生成を参照する事なく演算開始が可能となる。
【００３０】
図８は、空間Direct予測の演算方法を示す図である。
時間Direct予測と同じく過去に復号化した後方参照のベクトル情報を用いてmvColと
復号化対象のMB分割に関わらず分割サイズを16×16とした隣接A、B、C、Dの情報から得られるMVPよりMV値を決定する。
【００３１】
図８（ｂ）に基づいて空間Direct予測を説明する。まず、ステップS10において、現在のマクロブロックCuのサイズを16×16とし、参照するピクチャにおける、現在のマクロブロックの位置に対応するマクロブロックの周辺のマクロブロックA,B,C,Dの動きベクトルMVを取得し、これらの中間値のMVを得る。ステップS11において、現在のマクロブロックの後方参照用MVのX成分MVXが閾値thXより大きく、かつ、MVのY成分MVYが閾値thYより大きいか否かを判断する。ステップS11の判断がＮｏの場合には、ステップS12において、ステップS10で得られたMVを空間Direct予測によって得られた予測動きベクトルMVPであると設定する。ステップS11の判断がYesの場合には、ステップS13において、空間Direct予測による予測動きベクトルMVPを０とする。このように、現在のマクロブロックの動きベクトルを、過去のピクチャの、対応する位置の周囲のマクロブロックの動きベクトルの中間値の値とするか、０とするかを、現在のマクロブロックの後方参照用動きベクトルMVの値によって選択するのが、空間Direct予測である。予測動きベクトルMVPは、マクロブロックA,B,C,Dの動きベクトルMVA、MVB、MVC、MVDの中間値であるが、マクロブロックCが無い場合には、マクロブロックDの値で代用する。現在のマクロブロックCuをどのように分割しているかには関係なく、16×16のブロックを単位として、マクロブロックA,B,C,Dの動きベクトルを取得する。
【００３２】
空間Direct予測は、時間Direct予測と同様、過去のベクトル情報を用いて演算するので差分ベクトル（MVD）を必要としない為、空間Direct演算を使用する事で圧縮効率が向上する。空間的な相関関係がある場合に効果がある。
【００３３】
図９は、従来の動きベクトル生成装置のブロック構成図である。
エントロピー復号部４０から出力された復号データは、MBTYPE解析部４１に入力され、現在のマクロブロックがDirect予測か周辺予測か否かが決定される。また、現在のピクチャの表示順番PROC_CUと、参照先のピクチャの参照順番POC1、POC2がDirect予測処理部４２に入力され、Direct予測処理が行われる。Direct予測処理の作業メモリとして、Direct演算メモリが設けられている。Direct予測処理が終わったマクロブロックは、Directメモリ４４に格納される。Direct処理が終わると、完了報告が周辺予測処理部４３に入力されると共に、Direct予測処理で得られた動きベクトルが周辺予測処理部４３に入力される。周辺予測処理部４３には、エントロピー復号部４０からの差分動きベクトルも入力され、周辺予測処理が行われる。周辺予測処理が完了したマクロブロックは、周辺予測メモリ４５に入力される。周辺予測処理部４３は、Direct予測処理の対象のマクロブロックについては、Directメモリ４４から動きベクトルを読み出して、そのままMV生成部４６に入力する。周辺予測対照のマクロブロックについては、周辺予測メモリ４５から動きベクトルを読み出して、MV生成部４６に入力する。MV生成部４６では、動きベクトルを、参照画像生成部47に送り、参照画像生成部47において、参照画像を生成する。
【００３４】
以上のような従来技術においては、Direct予測対象のマクロブロックをすべて最初に処理し、その後周辺予測演算を開始する。
また、以上のような従来技術では、1ピクチャ分のDirect予測処理の結果を格納するDirect演算メモリが必要である。また、Direct予測処理が完全に完了しないと周辺予測ができない。
【００３５】
MBTYPE解析部４１は、マクロブロックタイプを解析しマクロブロック分割状態の解析を行う。また8×8分割の場合は各Partitionが周辺予測を行うかDirect予測を行うかの解析も行う。マクロブロックタイプ、およびDirect／周辺予測の情報はエントロピー符号化されて画像圧縮されており、エントロピー復号部40でその情報が復号されMV生成部のMBTYPE解析部41へ転送されてくる。
【００３６】
周辺予測処理部４３は上述した周辺予測の演算を行う。周辺予測メモリ４５は周辺予測処理部４３から周辺情報のMVの格納取得を行うためのメモリである。
Direct予測処理部４２は上述したDirect予測の演算を行う。Directメモリ４４はDirect予測処理部４２からのmvColの格納取得を行うためのメモリである。
【００３７】
Direct演算メモリ４４はMB分割内でDirect予測したブロックが存在した場合、Direct演算結果を格納しておくメモリである。周辺予測で用いる周辺のマクロブロックがDirect予測の場合にDirect演算メモリ４４からMV情報を取得しMV生成部４６へ送出する。
【００３８】
ＭＶ生成部４６は、周辺予測処理部４３からのＭＶ、Direct予測部４２からのＭＶを切り替えて参照画像生成部４７に転送する。
しかしながら、周辺予測演算とDirect予測演算はMBのPartition毎にＭＶ再生完了を待つ必要があり、生成処理時間に対する演算効率が悪いという問題があった。
【００３９】
図１０は、従来の動きベクトル生成のタイミングを示す図である。
MBpartとして、０〜３のMBpartがあり、MBpart１、２がDirect予測であるとする。まず、MBpart1、2を最初に処理する。この処理が終わると、Direct予測処理の完了通知が発行され、周辺予測演算が開始される。最初にMBpart0が周辺予測処理され、MV0が生成される。次に、MBpart1と2が処理されるが、これは、Direct予測するべきものであるので、DirectメモリからMV１、MV2を取得して、MBpart1、2の動きベクトルとする。次に、MBpart3が周辺予測処理される。これにより、動きベクトルMV3が得られる。Direct予測処理がすべて終わり、周辺予測処理で、MBpart0の処理が終わった時点から、参照画取得処理が可能となる。
【００４０】
Direct演算メモリを用いず、周辺予測とDirect予測が混在した場合でもMBPart順に処理を行う方式は可能である。しかし、周辺予測とDirect予測で回路構成が大きく異なりMBPart毎に周辺予測部とDirect予測部の切り替え制御が複雑になる。その為、従来では、先にDirectPartのみ演算してDirect演算メモリに格納しておき、周辺予測はDirectのPartも含めMBPart0−3の順番に処理を行い、DirectPartのMVはDirecｔ演算メモリから取り出す方式を取っていた。
【００４１】
なお、上記演算における中間値（Median）、最大、最小、クリップの演算式は、以下で与えられる。
【数１】
2010206688.tif 000003
【発明の概要】
【発明が解決しようとする課題】
【００４２】
従来技術では、周辺予測演算とDirect予測演算が混在する場合でもMBPartition順にMVを生成していく必要があった。時間Direct予測が存在する場合は、周辺予測を開始する前にDirect予測のMBPartは先に演算を行い、Direct演算メモリに格納しておく必要があった。そして、その後、周辺予測をMBpart0-3の順に処理を行い、DirectのMBpartについては、Direct演算メモリからＭＶを取り出して処理を行っていた。
【００４３】
周辺予測とDirect予測は演算方式がまったく異なるので回路は別々に構成する必要があるが、どちらか片方しか動作する事ができなかった。
本発明の課題は、異なる予測演算を含む画像復号処理を高速化することの出来る画像データ復号演算装置を提供することである。
【課題を解決するための手段】
【００４４】
本発明の一側面における画像データ復号演算装置は、Direct予測方式で符号化されたデータと周辺予測方式で符号化されたデータとが混在する画像データを復号する画像データ復号演算装置において、Direct予測方式で符号化されたデータを復号して、動きベクトルを取得するDirect予測処理部と、ピクチャのすべてのDirect予測方式で符号化されたデータの復号を待たずに、Direct予測処理部の動作と並行して、周辺予測方式で符号化されたデータのうち参照先のデータが揃ったデータから復号して、動きベクトルを取得する周辺予測処理部と、Direct予測方式で符号化されたデータを該Direct予測処理部へ、周辺予測方式で符号化されたデータを該周辺予測処理部へ選択出力する選択部とを備える。
【発明の効果】
【００４５】
本発明によれば、異なる予測演算を含む画像復号処理を高速化することの出来る画像データ復号演算装置を提供することができる。
【図面の簡単な説明】
【００４６】
【図１】従来のH.264あるいはAVSの符号器、復号器の概略構成図である。
【図２】動きベクトルを説明する図である。
【図３】フレーム内のデコード順を説明する図である。
【図４】MBの分割について図示する図である。
【図５】周辺予測の演算方法を説明する図である。
【図６】周辺予測の場合にメモリに格納されるデータについて説明する図である。
【図７】時間Direct予測の演算方法を示す図である。
【図８】空間Direct予測の演算方法を示す図である。
【図９】従来の動きベクトル生成装置のブロック構成図である。
【図１０】従来の動きベクトル生成のタイミングを示す図である。
【図１１】本発明の実施形態のブロック構成図である。
【図１２Ａ】選択部の処理フロー（その１）である。
【図１２Ｂ】選択部の処理フロー（その２）である。
【図１３】選択部の処理フロー（その３）である。
【図１４】本実施形態の動作タイミングを示す図である。
【図１５】MBPartition２，３が時間Direct予測の場合の実施形態の動作タイミングと従来動作タイミングを比較する図である。
【図１６】MBPartition０，３が時間Direct予測の場合の実施形態の動作タイミングと従来の動作タイミングを比較する図である。
【図１７】本発明の別の実施形態のブロック構成図である。
【図１８】MBPartition２，３が空間Direct予測の場合の実施形態の動作タイミングを説明する図である。
【図１９】MBPartition０，３が空間Direct予測の場合の実施形態の動作タイミングを説明する図である。
【図２０】本実施形態の効果を説明する図である。
【発明を実施するための形態】
【００４７】
図１１は、本発明の実施形態のブロック構成図である。
図１１において、図９と同じ構成要素には、同じ参照符号を付し、詳しい説明を省略する。
【００４８】
まず、MBTYPE解析部４１において、時間Direct予測と周辺予測のMBPartを判定する。次に、時間Direct予測の箇所だけを順次処理していく。演算結果は周辺予測処理部４３を経由してDirectメモリ４４へ格納する。一方、時間Direct予測と並行して周辺予測処理を行うが、隣接A‐Dが生成されていればMBPart順に処理していく。まだ生成されていない場合は、隣接A-Dの生成完了まで待つ。演算結果は、周辺予格納メモリ４５へ格納する。
【００４９】
本実施形態では、従来技術の構成において、MBTYPE解析後に、選択部５０を設け、図１２、１３に示す選択フローにしたがって、選択処理を行うようにする。
時間Direct予測は隣接情報MVの生成完了を待たずに処理が開始できる特徴を活かす事で、周辺予測とDirect予測が混在する場合、時間Direct予測と周辺予測の処理並列化が可能となる。
【００５０】
図１２Ａ、Ｂ及び図１３は、選択部の処理フローである。
まず、ステップＳ２０において、どのMBpartがDirect予測処理を行うべきかを示す変数DIRPART[0]〜[3]をみな「０」に初期化する。この変数に「１」が立っているMBpartがDirect予測を行うものである。ステップＳ２１において、エントロピー復号されたデータからMBTYPEを読み取り、ステップＳ２１において、Direct予測処理を行うMBpartがあるか否かを判断する。ステップＳ２２のループにおいては、ｉを０〜３まで１ずつ変化させながらステップＳ２３を実行する。ステップＳ２３は、Direct予測処理を行うMBpartの変数DIRPARTを「１」に設定する。
【００５１】
ステップＳ２３において、DIRPART[0]〜[3]が「0000、1000、1100、1110、1111」のグループか、「0001、0010、0100、0111、1001、1010、1011、1101」のグループか、「0011、0101、0110」のグループか、いずれのグループに属するかを判断する。最初のグループの場合は、ステップＳ２４に進む。ステップＳ２４では、DIRPART[0]が「１」であるか否かを判断し、「０」ならばMBpart0に周辺予測処理を施し、「１」ならばMBpart0にDirect予測処理を施し、ステップＳ２５に進む。ステップＳ２４の判断と、その後の処理を合わせて１サイクルで処理を終える。次のサイクル２では、ステップＳ２５において、DIRPART[1]が「１」か否かを判断し、「０」ならば周辺予測処理を、「１」ならばDirect予測処理をMBpart1に施す。サイクル３では、ステップＳ２６において、DIRPART[2]が「１」か否かを判断し、「０」ならば周辺予測処理を、「１」ならばDirect予測処理をMBpart2に施す。サイクル４では、DIRPART[3]が「１」か否かを判断し、「０」周辺予測処理を、「１」ならばDirect予測処理をMBpart3に施す。以上のように、DIRPART[0]〜[3]が最初のグループの場合には、すべて処理し終わるのに４サイクルかかるので、特に高速化の効果は現れていない。
【００５２】
ステップＳ２３の判断で、DIRPART[0]〜[3]が２番目のグループに属すると判断された場合には、ステップＳ２８において、DIRPART[0]が「１」か否かが判断される。ステップＳ２８の判断がＮｏの場合には、ステップＳ２９において、DIRPART[0]〜[3]が、２番目のグループのいずれであるかが判断される。DIRPART[0]〜[3]が「0001」であると判断された場合には、サイクル１で、MBpart3のDirect予測処理とMBpart0の周辺予測処理を平行に行い、サイクル２、３で、それぞれMBpart1とMBpart2の周辺予測処理を行い、３サイクルで処理を終了する。DIRPART[0]〜[3]が「0010」であると判断された場合には、サイクル１で、MBpart2のDirect予測処理とMBpart0の周辺予測処理を平行に行い、サイクル２、３で、それぞれMBpart1とMBpart3の周辺予測処理を行い、３サイクルで処理を終了する。DIRPART[0]〜[3]が「0100」であると判断された場合には、サイクル１で、MBpart1のDirect予測処理とMBpart0の周辺予測処理を平行に行い、サイクル２、３で、それぞれMBpart2とMBpart3の周辺予測処理を行い、３サイクルで処理を終了する。DIRPART[0]〜[3]が「0111」であると判断された場合には、サイクル１で、MBpart1のDirect予測処理とMBpart0の周辺予測処理を平行に行い、サイクル２、３で、それぞれMBpart2とMBpart3のDirect予測処理を行い、３サイクルで処理を終了する。
【００５３】
ステップＳ２８の判断がYesの場合には、サイクル1で、MBpart0のDirect予測処理を行い、サイクル２で、DIRPART[0]〜[3]が「1001、1010、1011、1101」のいずれであるかを判断する（ステップＳ３０）。そして、サイクル2内で、DIRPART[0]〜[3]が「1001」の場合は、MBpart3のDirect予測処理とMBpart1の周辺予測処理を並行して行い、サイクル３でMBpart2の周辺予測処理を行って、３サイクルで処理を終了する。DIRPART[0]〜[3]が「1010」の場合は、サイクル2内で、MBpart2のDirect予測処理とMBpart1の周辺予測処理を並行して行い、サイクル３でMBpart3の周辺予測処理を行って、３サイクルで処理を終了する。DIRPART[0]〜[3]が「1011」の場合は、サイクル2内で、MBpart2のDirect予測処理とMBpart1の周辺予測処理を並行して行い、サイクル３でMBpart3のDirect予測処理を行って、３サイクルで処理を終了する。DIRPART[0]〜[3]が「1101」の場合は、サイクル2内で、MBpart１のDirect予測処理を行い、サイクル３で、MBpart２の周辺予測処理とMBpart3のDirect予測処理を並行に行って、３サイクルで処理を終了する。
【００５４】
ステップＳ２３において、DIRPART[0]〜[3]が、最後のグループであると判断された場合には、ステップＳ３１において、DIRPART[0]〜[3]が「0011、0101、0110」のいずれであるかが判断される。DIRPART[0]〜[3]が「0011」であった場合には、サイクル１で、MBpart2のDirect予測処理とMBpart0の周辺予測処理を並行して処理し、サイクル２で、MBpart3のDirect予測処理と、MBpart1の周辺予測処理を並行して行い、2サイクルで処理を終了する。DIRPART[0]〜[3]が「0101」であった場合には、サイクル１で、MBpart1のDirect予測処理とMBpart0の周辺予測処理を並行して処理し、サイクル２で、MBpart3のDirect予測処理と、MBpart2の周辺予測処理を並行して行い、2サイクルで処理を終了する。DIRPART[0]〜[3]が「0110」であった場合には、サイクル１で、MBpart1のDirect予測処理とMBpart0の周辺予測処理を並行して処理し、サイクル２で、MBpart2のDirect予測処理を行い、サイクル３で、MBpart3の周辺予測処理を行い、3サイクルで処理を終了する。
【００５５】
図１４は、本実施形態の動作タイミングを示す図である。
図１４の例は、マクロブロックが４つに分割されており、MBpart1,2がDirect予測処理で、MBpart0,3が周辺予測処理の場合の動作タイミングを示している。最初に、MBpart1、2のDirect予測処理を行い、次に、MBpart0,3について、周辺予測処理を行う。この場合は、図１３のDIRPART[0]〜[3]が「0110」の場合を示しており、４つのMBpartを処理するのに、３サイクルかかる場合である。
【００５６】
図１５は、MBPartition２，３が時間Direct予測の場合の実施形態の動作タイミングと従来動作タイミングを比較する図である。
図１５（ａ）のように、従来では、時間Direct予測処理をすべて終えてから周辺予測処理を行っていた。したがって、最初に、MBpart2,3の時間Direct予測処理を行い、結果を格納してから、MBpart0,1の周辺予測処理を行って、４サイクルかかっていた。周辺予測処理のMBpart2,3の部分については、格納された結果を取得するのみである。
【００５７】
図１５(ｂ)のように、本実施形態では、MBpart2,3の時間Direct予測処理とMBpart０,1の周辺予測処理を並行して行うので、処理が完了するまでのサイクルが2サイクルとなって、処理サイクルが従来の１/２となる。
【００５８】
図１６は、MBPartition０，３が時間Direct予測の場合の実施形態の動作タイミングと従来の動作タイミングを比較する図である。
図１６（ａ）のように、従来の場合には、MBpart0、3の時間Direct予測処理を最初に行ってしまい、その後、MBpart1,2の周辺予測処理を行っていた。周辺予測に必要な参照画の取得は、Direct予測処理の終了後である。
【００５９】
一方、図１６（ｂ）のように、本実施形態では、最初にMBpart0の時間Direct予測処理を行う。これにより、周辺予測に必要な参照画の取得が、MBpart0の処理の後可能となるので、次のサイクルで、MBpart3の時間Direct予測処理とMBpart1の周辺予測処理とを並行して行う。すなわち、MBpart１の周辺予測処理は、MBpart0が隣接Ａとなるので、MBpart0の処理が完了しないとMBpart1は処理を開始できないので、MBpart1の周辺予測処理は、MBpart0の時間Direct予測処理の完了をまって始める。そして、最後に、MBpart2の周辺予測処理を行う。これにより、処理サイクルが従来の3/4となる。
【００６０】
図１７は、本発明の別の実施形態のブロック構成図である。
図１７において、図１１と同じ構成要素には、同じ参照符号を付し、詳しい説明を省略する。選択部５０ａは、Direct予測と周辺予測のMBPartを判定する。空間Direct予測が含まれる場合、現在のマクロブロックCuの分割サイズに関わらず、周辺予測部を分割サイズ=16×16とする隣接位置ABCDから空間Direct予測に使用する予測ベクトル値MVPを演算する。Direct予測のMBPartは、空間Directあるいは時間Directに関わらず、Direct予測の箇所だけを順次処理していく。演算結果は周辺予測処理部４３を経由してDirectメモリ４４へ格納する。周辺予測のMBPartは、隣接A‐Dが生成されてあればMBPart順に処理していく。まだ生成されていない場合は生成完了まで待つ。演算結果は周辺予格納メモリ４５へ格納する。空間Direct予測と時間Direct予測は同一MB内での混在はない。なお、空間Direct予測処理部５１へは、周辺予測処理部４３より、空間Direct予測用MVPが入力される。すなわち、隣接Ａ〜ＤのＭＶの中間値のＭＶが空間Direct予測処理部５１に入力される。
【００６１】
図１８は、MBPartition２，３が空間Direct予測の場合の実施形態の動作タイミングを説明する図である。
最初に空間Direct予測用のMVP値を得るために周辺予測処理部を起動し、その後の動作は時間Direct予測と同じである。従来では、図１８（ａ）のように、周辺予測処理部で空間Direct予測用MVPを得た後、空間Direct処理をMBpart2,3について行い、これが完了してから、MBpart0,1の周辺予測処理を行っていた。一方、本実施形態では、図１８（ｂ）のように、空間Direct予測用MVPを得てから、MBpart2,3の空間Direct予測処理と、MBpart0,1の周辺予測処理を並行して実行することになる。これにより、処理サイクルが従来の１/２となる。
【００６２】
図１９は、MBPartition０，３が空間Direct予測の場合の実施形態の動作タイミングを説明する図である。
最初に空間Direct予測用のMVP値を得るために周辺予測処理部を起動し、その後の動作は時間Direct予測と同じである。従来では、図１９（ａ）のように、周辺予測処理部で空間Direct予測用MVPを得た後、空間Direct処理をMBpart0,3について行い、これが完了してから、MBpart1,2の周辺予測処理を行っていた。一方、図１９（ｂ）のように、本実施形態では、最初に周辺予測処理部で空間Direct予測用MVPを得た後、MBpart0の空間Direct予測処理を行う。これにより、周辺予測に必要な参照画の取得が、MBpart0の処理の後可能となるので、次のサイクルで、MBpart3の空間Direct予測処理とMBpart1の周辺予測処理とを並行して行う。すなわち、MBpart１の周辺予測処理は、MBpart0が隣接Ａとなるので、MBpart0の処理が完了しないとMBpart1は処理を開始できないので、MBpart1の周辺予測処理は、MBpart0の空間Direct予測処理の完了をまって始める。そして、最後に、MBpart2の周辺予測処理を行う。これにより、処理サイクルが従来の3/4となる。
【００６３】
図２０は、本実施形態の効果を説明する図である。
１つのマクロブロックが、MBpart0〜3の４つに分割されている場合、それぞれのMBpartが周辺予測か、時間Direct予測かによって、組み合わせは16パターンあり、11パターンで効果がある。図２０において、△が従来と同じで高速化の効果が無い場合であり、○が４サイクルが３サイクルになる効果がある場合であり、◎が４サイクルが2サイクルになる効果がある場合である。生成時間は、それぞれサイクル0〜3が記載されており、どのサイクルで、どのMBpartをどのように処理するかが記載されている。
【００６４】
したがって、本実施形態の効果としては、以下のことが言える。
・2パターンで処理サイクルが1／2になる。
・9パターンで処理サイクルが3／4になる。
・5パターンで従来と同じ。
【００６５】
1MV生成に8サイクルとした場合、以下のサイクル数が動きベクトルの生成に必要となる。
MB分割8×8の場合     ：4（MBPart）×8＝32サイクル
全分割双方向参照         ：32×2（Fwd/Bwd）＝64サイクル
全分割（SubMB分割4×4）：64×4（SubPart）＝256サイクル
1Picture処理（HDサイズ：1920画素（120MB） × 1080画素（68MB））
120MB × 68MB＝8160MB
8160MB × 256 × （1/2） =1044480サイクルの処理性能向上の効果がある。
【００６６】
以上のように、ベクトル生成処理性能が向上すると参照画像取得が早くできる。そして、参照画像取得は動画圧縮技術において最も処理サイクルが必要とされるが、その処理をできるだけ早く処理開始できる為処理性能を向上させる事ができる。
【００６７】
本実施形態の画像データ復号演算装置は、DVDレコーダ、Blu‐ｒayレコーダ、カムコーダ、地デジチューナ、ワンセグチューナ、STB（セットトップボックス）等の画像復号処理を伴う製品に適用可能である。
【符号の説明】
【００６８】
１０      符号器
１１      復号器
１５      MB分解部
１６      動きベクトル検出部
１７      過去のフレームバッファ
１８      フレーム間予測部
１９      エントロピー符号化部
２０      予測モード選択部
２１      現フレームバッファ
２２      フレーム内予測部
２３      デブロッキングフィルタ
２４      フレームバッファ管理部
２５      減算器
２６      直交変換量子化部
２７      逆量子化逆直交変換部
２８      加算器
３０      エントロピー復号化部
３１      フレーム間予測部
３２      逆量子化逆直交変換部
３３      加算器
３４      現フレームバッファ
３５      フレーム内予測部
３６      予測モード選択部
３７      デブロッキングフィルタ
３８      フレームバッファ管理部
３９      過去フレームバッファ
４０      エントロピー復号部
４１      MBTYPE解析部
４２      時間Direct予測処理部
４３      周辺予測処理部
４４      Directメモリ
４５      周辺予測メモリ
４６      MV生成部
４７      参照画像生成部
５０、５０ａ      選択部
５１      空間Direct予測処理部
【図１】
2010206688.tif 000004
【図２】
2010206688.tif 000005
【図４】
2010206688.tif 000006
【図５】
2010206688.tif 000007
【図９】
2010206688.tif 000008
【図１０】
2010206688.tif 000009
【図１１】
2010206688.tif 000010
【図１２Ａ】
2010206688.tif 000011
【図１４】
2010206688.tif 000012
【図１５】
2010206688.tif 000013
【図１６】
2010206688.tif 000014
【図１７】
2010206688.tif 000015
【図１８】
2010206688.tif 000016
【図１９】
2010206688.tif 000017
【図３】
2010206688.tif 000018
【図６】
2010206688.tif 000019
【図７】
2010206688.tif 000020
【図８】
2010206688.tif 000021
【図１２Ｂ】
2010206688.tif 000022
【図１３】
2010206688.tif 000023
【図２０】
2010206688.tif 000024