(57)【要約】【課題】H.264 エンコード処理に並列処理を導入した場合、ＤＢＦ処理を高速化可能な演算装置及び動画像符号化装置を提供することである。【解決手段】複数の演算部を備え、入力画像データを、ＭＢごとに処理する際に、ＤＢＦ処理を複数のＭＢに対して並列的に実行する為の演算装置であって、入力画像データを入力し、予測誤差画像データを生成する第１の処理部２１１と、さらに、ＤＣＴ及び量子化を行い、量子化値及び量子化スケール(ｑｐ)を生成する第２の処理部２１２と、そして、逆量子化及び逆離散コサイン変換を行い、復元したものにＤＢＦ処理し、予測画像を生成して第１の処理部へ供給する第３の処理部２１３Ａと、第２の処理部の後段に設けられ、第２の処理部からのＤＢＦ処理予定のＭＢとその直前のＭＢとでｑｐが同じときには、直前のＭＢのｑｐを強制的に変更する量子化スケール変更部２１５と、を備える。【選択図】図１
2010141513.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算部を備え、入力画像データを、画面を構成する所定数のマクロブロックそれぞれに対応したデータごとに信号処理する際に、デブロッキングフィルタ処理を前記所定数のマクロブロックのうちの複数のマクロブロックに対して並列的に実行するための演算装置であって、
前記入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行い、予測誤差画像データを生成する第１の処理部と、
前記予測誤差画像データを入力し、離散コサイン変換及び量子化を行い、マクロブロックごとに、量子化値及び量子化スケールを生成する第２の処理部と、
前記量子化値及び量子化スケールを入力し、逆量子化及び逆離散コサイン変換を行い、その結果復元された予測誤差画像データをデブロッキングフィルタ処理してブロック歪みを除去し、予測画像を生成して前記第１の処理部へ供給する第３の処理部と、
前記第２の処理部と前記第３の処理部との間に設けられて、前記第２の処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックとその直前のマクロブロックとで量子化スケールが同じときには、前記直前のマクロブロックの量子化スケールを強制的に変更する量子化スケール変更部と、
を備えたことを特徴とする演算装置。
【請求項２】
前記量子化スケール変更部は、前記第２の処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックの直前のマクロブロックの量子化値が０、又は前記次のマクロブロックとその直前のマクロブロックにおける２つの量子化スケール間の差分が０のときに量子化値≠０となる量子化値、又は量子化スケール間の差分≠０となる差分値を直前のマクロブロックに付加するものであることを特徴とする請求項１に記載の演算装置。
【請求項３】
前記量子化スケール変更部は、画面の縦×横に所定数のマクロブロックが配置され、横方向の各行の最終のマクロブロックについて、前記第２の処理部から出力される量子化値、が０でない量子化値、又は量子化スケールの差分が０でない差分値を保証することを特徴とする請求項１又は２に記載の演算装置。
【請求項４】
請求項１乃至３のいずれか１つに記載の演算装置と、
この演算装置の前記第２の処理部からの量子化値をエントロピー符号化する符号化装置と、
を具備したことを特徴とする動画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置及び動画像符号化装置に係り、特にH.264符号化器において、デブロッキングフィルタ処理を高速化させるために使用される演算装置及び動画像符号化装置に関するものである。
【背景技術】
【０００２】
動画像符号化装置におけるH.264 符号化処理(以下、H.264 エンコード処理という)は、画面をマクロブロック(以下、ＭＢという)という１６×１６画素の領域を単位として、動き予測、イントラ予測、予測誤差生成、離散コサイン変換(以下、ＤＣＴという)、量子化、エントロピー符号化、逆量子化、デブロッキングフィルタの各処理を順次に行う。すべてのＭＢは、処理スキャン順に番号が付けられている(図３参照)。
【０００３】
量子化は、量子化スケール(以下、qpという、これは量子化ステップと同義である)を使い、予測誤差画像データの量子化を行い、量子化値(以下、coeffという)を生成する。qpは、ＭＢ毎に異なる値を使用することができる。ただし、coeffを一つも持たないＭＢに関しては、ＭＢ番号が一つ前のＭＢと等しいqp値を利用することになっている。  
低コストのH.264エンコーダを設計する場合、並列処理を導入することは有効である。この場合、高性能な演算機を一つ用意するよりも、安価な演算機を複数用意するほうがコスト性能比に優れる。
【０００４】
ところで、従来のH.264 エンコード処理においては、ＭＢ毎にデブロッキングフィルタ(以下、ＤＢＦという)処理を行う際には、まずＭＢ毎にqpを設定し、このqpに基づいてＤＢＦ処理のフィルタ係数を画素ごとに算出し或いはテーブル引きして取得し、このフィルタ係数をＭＢを構成する複数の画素それぞれに乗算することによって、ＤＢＦ処理が実行される。
【０００５】
ところが、H.264 エンコード処理に並列処理を導入した場合、符号化データを複数(例えば２つ)のＭＢに対して並列的にＤＢＦ処理を実行しようとすると、画面上で並列処理の対象となる２つのＭＢのうちの１つのＭＢに対して処理スキャン順に順次にエンコード処理のステップが進んでいく過程で並列処理の対象となるもう１つのＭＢはある規則をもって選ばれるが、並列処理対象となる２つのＭＢがＤＢＦ処理を行うにはそれぞれのＭＢにqpを設定することが必要である。これはqpに基づいてＤＢＦ係数を算出することが必要なためである。一方、量子化スケールqpはＭＢごとに異なるが、H.264規格では、圧縮されたエレメンタリストリームでは、量子化スケールqpは、直前のＭＢが持つ量子化スケールとの差分情報のみを持って伝送されていく。つまり、あるＭＢのqpは１つ前のＭＢのqpに差分情報を加えたものとなる。
【０００６】
従って、並列的にＤＢＦ処理を実行する場合、H.264 エンコード処理の過程で、並列処理対象の２つのＭＢのうちの一方のＭＢについてＤＢＦ処理を実行する際にこれと並列的にもう一方のＭＢについてもＤＢＦ処理を実行しようとするとき、もう一方のＭＢの直前のＭＢが持つ量子化スケールが決まっていなければ、もう一方の次のＭＢについては並列的にＤＢＦ処理を実行できず、結果としてＤＢＦ処理を高速化できないという問題を生じる。  
一方、先行技術として、特許文献１にはH.264の符号化器におけるパイプライン処理(並列処理)及びデブロッキングフィルタ処理についての記述があるが、デブロッキングフィルタ処理における並列処理に伴う問題点についての記載はみられない。
【特許文献１】特開２００７−３１２３４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明は上記の問題に鑑み、H.264 エンコード処理に並列処理を導入した場合、デブロッキングフィルタ処理を高速化することができる演算装置及び動画像符号化装置を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、複数の演算部を備え、入力画像データを、画面を構成する所定数のマクロブロックそれぞれに対応したデータごとに信号処理する際に、デブロッキングフィルタ処理を前記所定数のマクロブロックのうちの複数のマクロブロックに対して並列的に実行するための演算装置であって、前記入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行い、予測誤差画像データを生成する第１の処理部と、前記予測誤差画像データを入力し、離散コサイン変換及び量子化を行い、マクロブロックごとに、量子化値及び量子化スケールを生成する第２の処理部と、前記量子化値及び量子化スケールを入力し、逆量子化及び逆離散コサイン変換を行い、その結果復元された予測誤差画像データをデブロッキングフィルタ処理してブロック歪みを除去し、予測画像を生成して前記第１の処理部へ供給する第３の処理部と、前記第２の処理部と前記第３の処理部との間に設けられて、前記第２の処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックとその直前のマクロブロックとで量子化スケールが同じときには、前記直前のマクロブロックの量子化スケールを強制的に変更する量子化スケール変更部と、を備えたことを特徴とする演算装置が提供される。
【０００９】
本発明の他の態様によれば、少なくとも上記の一態様に記載の演算装置と、この演算装置の前記第２の処理部からの量子化値をエントロピー符号化する符号化装置と、を具備した動画像符号化装置が提供される。
【発明の効果】
【００１０】
本発明によれば、H.264 エンコード処理に並列処理を導入した場合、デブロッキングフィルタ処理を高速化することができる演算装置及び動画像符号化装置を実現することができる。
【発明を実施するための最良の形態】
【００１１】
発明の実施の形態について図面を参照して説明する。  
図１は本発明の一実施形態の動画像符号化装置のブロック図を示し、図２は動画像符号化装置を適用した画像記録装置の概略構成のブロック図を示し、図３はマクロブロック(ＭＢ)番号の画面上での割り振りを説明する図を示している。
【００１２】
図２に示すように、動画像符号化装置としてH.264エンコーダを適用した画像記録装置１００は、例えば放送受信機やメディア再生装置のように放送或いは蓄積された信号から画像信号を再生出力する画像入力装置１０と、この画像入力装置１０からの画像信号を入力しエンコードするH.264 エンコーダ２０と、そのH.264 エンコーダ２０からのエンコード結果である符号化データが記録される記録媒体３０とを備えている。
【００１３】
１つの画面の動画像符号化処理において処理単位として用いられるマクロブロック(ＭＢ)番号は、図３に示すように画面(例えば縦４×横４個のＭＢで構成される)上でマクロブロックＭＢは画面左のＭＢから右方向にかつ画面の上から下方向に処理スキャン順に番号(♯０，♯１，♯２，……♯１５)が付されている。以下に述べる本実施形態では、画面を構成する複数のマクロブロックＭＢをそれぞれＭＢ(♯０)，ＭＢ(♯１)，ＭＢ(♯２)，……ＭＢ(♯１５)と表すことがある。
【００１４】
図１に示すように、動画像符号化装置としてのH.264エンコーダ２０は、演算装置としてのＭＢ演算部２１と、符号化装置としてのエントロピー符号化部２２とを備えている。ＭＢ演算部２１は、エンコード処理を構成する複数の処理のうちの幾つかの処理を並列的に実行することを可能とする少なくとも１つのＭＢ演算機で構成されており、動き予測、イントラ予測、予測誤差生成、ＤＣＴ、量子化、エントロピー符号化、逆量子化、デブロッキングフィルタ(ＤＢＦ)の各処理を行う。
【００１５】
ＭＢ演算部２１は、入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行う第１の処理部２１１と、第１の処理部２１１からの予測誤差画像データを入力し、ＤＣＴ及び量子化を行う第２の処理部２１２と、第２の処理部２１２からの量子化値coeff及び量子化スケールqpの差分を入力し、逆量子化及び逆ＤＣＴ(以下、ＩＤＣＴという)を行う逆量子化及びＩＤＣＴ部２１３と、逆量子化及びＩＤＣＴ部２１３からの逆量子化及びＩＤＣＴして復元された予測誤差画像データを入力し、ＤＢＦ処理してブロック歪みを除去し、予測画像(参照画像とも呼ばれる)データを生成して第１の処理部２１１へ出力するＤＢＦ処理部２１４と、第２の処理部２１２と逆量子化及びＩＤＣＴ部２１３との間に設けられて、第２の処理部２１２から出力される現在のＭＢと次のＭＢとで量子化スケールqpが同じとき(即ちqpの差分=０のとき)には、次のＭＢの量子化スケールqpを強制的に変更する量子化スケール変更部２１５と、を備えている。なお、逆量子化及びＩＤＣＴ部２１３と、ＤＢＦ処理部２１４とは、第３の処理部２１３Ａを構成している。また、第１の処理部２１１における動き予測は、入力画像データと予測画像データの差分をとることによって行われる。量子化スケールqpの差分とは、注目しているＭＢにおける量子化スケールqpbとその１つ前のＭＢにおける量子化スケールqpaとの差分をいう。
【００１６】
一方、エントロピー符号化部２２は、第２の処理部２１２からの量子化値coeff及び量子化スケールqpの差分をさらに量子化スケール変更部２１５を通して得られた量子化値coeff及び量子化スケールqpの差分と、第１の処理部２１１で得られた動きベクトルとを入力し、量子化値coeffをエントロピー符号化(例えば可変長符号化)し、エレメンタリストリームとして出力する。
【００１７】
ＭＢ演算部の各処理について説明する。動き予測及び予測誤差生成では、ＤＢＦ処理部２１４によって生成した予測画像(参照画像)データと、入力画像データを入力とし、この入力画像データと予測画像データとの差分値(予測誤差画像データという)を生成する。この予測誤差画像データをＤＣＴによって周波数空間(水平，垂直周波数領域)における二次元平面上での離散値に変換(展開)し、その離散値をＤＣ成分からＡＣ成分方向(周波数が高くなる方向)へジグザグスキャンして一次元に順次並べたＤＣＴ係数値を生成して、これを量子化する。なお、イントラ(画面内)予測は、同じ画面内の画像サンプルを用いて別の位置の画像サンプルを予測するものであり、例えば画素についてその画素が属するライン上の隣の画素との差分をとることによって行われる。イントラ予測は、画面間で行われるインター予測と併用(例えば、符号化効率向上のために最適な予測モードに選択的に切り換えるなど)して用いられる。
【００１８】
量子化は、ＤＣＴ係数値と量子化スケールqpを入力とし、量子化した結果を量子化値coeff、量子化スケールqpの差分(mb_qp_delta)として出力する。量子化値coeffとは、予測誤差画像データのＤＣＴ係数値を量子化した値のことである。量子化スケールqpの差分(mb_qp_delta)とは、直前のＭＢの量子化スケールqpaと次のＭＢの量子化スケールqpbとの差分であり、qpb=qpa＋(mb_qp_delta) で次のＭＢの量子化スケールqpbを求めることができる。
【００１９】
逆量子化処理は、量子化値coeff、及び量子化スケールqpの差分(mb_qp_delta)を入力とし、量子化前のＤＣＴ係数を出力する。ＩＤＣＴは、逆量子化された量子化前のＤＣＴ係数からＤＣＴ前の予測誤差画像データを復号画像データとして出力する。ＤＢＦ処理は、復号画像データを入力し、フィルタリング後の画像が予測画像(参照画像)データとして第１の処理部２１１へ出力される。
【００２０】
量子化スケール変更部２１５は、第２の処理部２１２と第３の処理部２１３Ａとの間に設けられて、第２の処理部２１２から出力されるＭＢごとの量子化値coeffが０のときにcoeff≠０となるcoeff値を挿入するcoeff挿入部を構成することによっても、実現することもできる。これについては、図６乃至図８にて後で説明する。  
エントロピー符号化部２２は、量子化された量子化値coeff、量子化スケールqpの差分(mb_qp_delta) を受け取り、ＭＢ番号順にエントロピー符号化を行い、図示しない記録媒体へと出力する。
【００２１】
図１の構成では、ＭＢ演算部２１は１つのＭＢ演算部で構成されているが、これに限定されることなく、同じ構成の複数個のＭＢ演算部で構成してもよい。  
図４は、本実施形態において、ＭＢ演算部としてＭＢ演算機を複数用意し、複数のＭＢ演算機を用いてＭＢ演算処理を並列的に行うようにしたH.264 エンコーダの実施例を示している。  
図４の例では、３つのＭＢ演算機２１-1，２１-2，２１-3と、エントロピー符号化部２２と、画像メモリ２３とを備えた構成例を示している。ＭＢ演算機２１-1，２１-2，２１-3のそれぞれの構成は、図１のＭＢ演算部２１の構成と同様である。
【００２２】
図4で、入力画像データは、３つのＭＢ演算機２１-1〜２１-3に供給され、各ＭＢ演算機２１-1〜２１-3はそれぞれ図１における第１〜第３の処理部の各処理と同様に、画面を構成する縦×横の所定数のＭＢそれぞれに処理スキャン順に順次必要な処理を実施するが、３つのＭＢ演算機があるためにＤＢＦ処理過程に至るまでの複数段階の処理において、画面上の複数のＭＢに対して同じ処理を並列的に実行することが可能である。それらの各処理段階でで処理前及び処理後のデータは画像メモリ２３に記憶されて処理過程が進行していく。３つのＭＢ演算機２１-1〜２１-3のＤＣＴ及び量子化処理後の各データはエントロピー符号化部２２へ供給されて例えば可変長符号化され、エレメンタリストリームとして図示しない記録媒体へ出力される。
【００２３】
このように構成することにより、ＭＢ演算部の負担を複数のＭＢ演算機で分担することができ、高性能な演算機が必要であった部分を、低コストな演算機を複数用意して同等の性能を得ることが可能となる。従って、H.264 エンコーダを低コストに実現することができる。  
一方、量子化スケールqpの伝送方法は、H.264規格で決まっている。量子化スケールqpはＭＢごとに決められており、圧縮されたエレメンタリストリームでは、図５に示すように次の量子化スケールqpの伝送は、最初のＭＢ(♯０)のqp0以外は１つ前(直前)のＭＢが持つ量子化スケールとの差分情報(mb_qp_delta)のみとなっている。図５で、qp0，qp1，qp2，qp3……qp15はそれぞれＭＢ(♯０)，ＭＢ(♯１)，ＭＢ(♯２)，ＭＢ(♯３)，……ＭＢ(♯１５)の量子化スケールを表している。
【００２４】
ＭＢ単位の量子化スケールqpの差分(mb_qp_delta)の伝送方法は、H.264規格では、図６のように規定されている。量子化スケールqpの差分(mb_qp_delta)は、予測誤差(言い換えれば量子化値coeff)の存在(CodedBlockPattern)するときと、イントラ(画面内)16×16符号化されたときのみ伝送されるようになっている。従って、H.264エンコード処理を形成する複数の処理の中でも、量子化スケールを必要とするＤＢＦ処理に関しては、ＤＢＦ処理を実行するＭＢの１つ前のＭＢのCodedBlockPatternの有無が決定(確認)されるまで、次のＭＢのＤＢＦ処理を進めることができない。
【００２５】
１つ前のＭＢの量子化スケールをqpa、次のＭＢの量子化スケールをqpbとすると、図６から分かるようにCodedBlockPatternLuma(予測誤差の輝度成分の存在)もしくはCodedBlockPatternChroma(予測誤差の色差成分の存在)が０以外であれば、qpa＋mb_qp_delta→qpb 即ち、１つ前のＭＢのqpaに差分(mb_qp_delta)を加えたものが次のＭＢのqpbとなる。
【００２６】
図７は図６のmb_qp_deltaの伝送方法をフローチャートに表したものである。  
ＤＣＴ係数を量子化スケールqpaで量子化し、CodedBlockPatternLuma＞０若しくはCodedBlockPatternChroma＞０、即ちcoeff≠０、若しくはＭＢPartPredMode = = Intra_16×16であるかを判定し（ステップＳ11）、そうであれば、エレメンタリストリーム(ＥＳ)にqpの差分(mb_qp_delta)及び量子化値coeffを含み（ステップＳ12）、そうでなければ、ＥＳにqpの差分(mb_qp_delta)及びcoeffを含まない（ステップＳ13）。
【００２７】
そこで、本発明の実施例においては、ＤＣＴ及び量子化を行う第２の処理部の後段に、量子化スケール変更部２１５として上述のcoeff挿入部を設けて、第２の処理部２１２の出力にCodedBlockPattern（或いは、量子化値coeff、又はqpの差分(mb_qp_delta)）が存在するか否かを判定し、存在しないときはcoeff(≠０)を付加、又はqpの差分(mb_qp_delta≠０)を付加することにより、次のＭＢのＤＢＦ処理を実行できるようにした。
【００２８】
図８はＭＢ演算部２１における量子化、及び量子化値coeff挿入処理のフローチャートを示している。まず、ＤＣＴ係数値を量子化スケールqpで量子化する（ステップＳ1）。次に、ＭＢタイプが１６×１６イントラ予測であるか否かを判定する(ステップＳ2)。１６×１６イントラ予測でなければ、インター予測であるとしてステップＳ3へ移行する。
【００２９】
画面を構成する複数のＭＢの各行間で並列処理が間断なく継続して実行されるための条件としては、図１４及び図１５で後述するように、画面を構成する複数のＭＢの各行の最後のＭＢの量子化処理結果である量子化値coeffがcoeff≠０(或いは、qpの差分(mb_qp_delta)≠０であってもよい)であることが必要となる。これは、次の行の先頭のＭＢがＤＢＦ処理を実行しようとする際に、前の行の最後のＭＢの量子化処理結果である量子化値coeffがcoeff＝０(或いは、qpの差分(mb_qp_delta)＝０)であると、ＤＢＦ処理に必要なフィルタ係数を取得できないためである。
【００３０】
そこで、ステップＳ3では、ＭＢ信号処理を行う際にＭＢが各行の最後のＭＢか否かを判定する）。そして、行の最後のＭＢであれば、量子化値coeffが存在しない、即ちcoeff=０か否かを判定する（ステップＳ4）。  
ステップＳ4の判定で、coeffが存在しない(即ちcoeff=０)ならば、行の最後のＭＢの量子化処理結果としてcoeff≠０が出力されるように量子化値coeff≠０を挿入(追加)する処理を行う（ステップＳ5）。
【００３１】
図９〜図１５はH.264 エンコード処理において並列処理を実行する際に生ずる問題点を説明するための図である。ただし、図９では、量子化スケール変更部２１５の必要性を説明するために、図１のＭＢ演算部２１の構成から、量子化スケール変更部２１５(或いはcoeff挿入部)を削除した構成を示している。ここでは、H.264 エンコード処理においてＤＢＦ処理を並列実行する際に生じる問題を説明する。
【００３２】
図９はＤＢＦ処理を含むマクロブロック(ＭＢ)信号処理を並列処理する場合のブロック図を示している。図９は、以降の図１０〜図１５での並列処理の過程を説明するために、図１のＭＢ演算部２１の構成における、第１の処理部２１１と、第２の処理部２１２と、逆量子化,ＩＤＣＴ及びＤＢＦ処理を行う第３の処理部２１３Ａとで構成されている部分を説明する。
【００３３】
第１の処理部２１１は、入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行う。第２の処理部２１２は、第１の処理部２１１からの予測誤差画像データを入力し、離散コサイン変換(ＤＣＴ)及び量子化を行う。第３の処理部２１３Ａは、第２の処理部２１２からの量子化値coeff及び量子化スケールqpの差分(mb_qp_delta)を入力し、逆量子化及びＩＤＣＴ(逆ＤＣＴ)を行い、更に加えて、その逆ＤＣＴして復元された予測誤差画像データを、ＤＢＦ(デブロッキング)処理してブロック歪みを除去し、予測画像(参照画像)データを生成して第１の処理部２１１へ出力する。
【００３４】
図９〜図１５では、第１〜第３の処理部２１１，２１２，２１３Ａによる各処理であることを簡略に表すためにそれぞれの処理に１)、２)、３)と符号を付して説明する。
【００３５】
まず、図１０に示すように４×４個のマクロブロックＭＢで構成される画面上のＭＢ(♯０)に対して、第１の処理１)を行う。ＭＢ(♯０)に対する第１の処理１)を完了すると、図１１に示すようにＭＢ(♯０)は第２の処理２)へ移行し、次のＭＢ(♯１)は第１の処理を開始する。
【００３６】
ＭＢ(♯０)が第２の処理２)を完了し、ＭＢ(♯１)が第１の処理を完了すると、第２の処理部２１２からは量子化スケールqpの初期値が出力され第３の処理部２１３Ａへ供給される。このとき、図１２に示すようにＭＢ(♯０)は第３の処理３)(ＤＢＦ処理を含む)へ移行し、次のＭＢ(♯１)は第２の処理２)へ移行し、その次のＭＢ(♯２)は第１の処理１)を開始し、それとほぼ並列的にＭＢ(♯４)で第１の処理１)を開始する。ＭＢ(♯２)とＭＢ(♯４)との画面上での位置関係は桂馬飛びと称せられ、並列処理可能な位置関係にある。
【００３７】
ＭＢ(♯０)が第３の処理３)を完了し、ＭＢ(♯１)が第２の処理２)を完了し、ＭＢ(♯２)及び ＭＢ(♯４)が第１の処理を完了すると、第２の処理部２１２からは量子化スケールqpの差分(mb_qp_delta)が出力され第３の処理部２１３へ供給される。このとき、図１３に示すようにＭＢ(♯０)は第３の処理３)を完了し、次のＭＢ(♯１)は第３の処理３)へ移行し、その次のＭＢ(♯２)は第２の処理２)へ移行し、それとほぼ並列的にＭＢ(♯４)は第２の処理２)へ移行し、ＭＢ(♯３)は第１の処理１)を開始し、それとほぼ並列的にＭＢ(♯５)は第１の処理１)を開始する。
【００３８】
ＭＢ(♯０)が第３の処理３)の完了状態を維持し、ＭＢ(♯１)が第３の処理３)を完了し、ＭＢ(♯２)及びＭＢ(♯４)が第２の処理２)を完了し、ＭＢ(♯３)及びＭＢ(♯５)が第１の処理を完了すると、図１４に示すようにＭＢ(♯０)は第３の処理３)の完了状態であり、次のＭＢ(♯１)は第３の処理３)を完了し、その次のＭＢ(♯２)は第３の処理３)へ移行し、更にその次のＭＢ(♯３)は第２の処理２)へ移行し、それとほぼ並列的にＭＢ(♯５)は第２の処理２)へ移行し、更にＭＢ(♯６)は第１の処理１)を開始し、それとほぼ並列的にＭＢ(♯８)は第１の処理１)を開始する。この場合、第３の処理部２１３ＡはＭＢ(♯２)と共にＭＢ(♯４)においても第３の処理３)を開始しようとするが、右上のＭＢ(♯３)は第２の処理２)を動作中でありＤＣＴ及び量子化を完了させていないので、次のＭＢ(♯４)へ渡す量子化スケールqpの差分(mb_qp_delta)及び量子化値coeffを出力できずこのためＭＢ(♯４)はＤＢＦ処理へ移行できない。従って、このような状況ではＤＢＦ処理の並列処理を行うべき一方のＭＢ(♯２)のＤＢＦ処理のみ行われて、もう一方のＭＢ(♯４)のＤＢＦ処理が行われず、ＤＢＦ処理の並列処理が成立しない時間が多くなり、そのためにマクロブロック(ＭＢ)信号処理の実行速度が著しく低下するという問題を生じる。
【００３９】
更に、図示しないがＭＢ(♯６)の第１の処理１)が完了した後の処理過程以降(例えば図１５参照)についてもＤＢＦ処理での並列処理は成立しない状況を生ずることがある。例えば、ＭＢ(♯４)、ＭＢ(♯９)及びＭＢ(♯１４)が並列処理可能なＭＢの関係であるが、ＭＢ(♯１４)が並列処理が成立しない状況になる。  
従って、図１４及び図１５からも類推できるように、ＤＢＦ処理の並列処理が実行可能か否かを判定するのに、図８に示したようなフローチャートで判定することが可能である。
【００４０】
デブロッキングフィルタ(ＤＢＦ)処理は、本来、マクロブロックＭＢの境界が滑らかになるようにフィルタ処理をする機能である。図１６に示すように、実際には、１６×１６画素のマクロブロック(ＭＢ_A，ＭＢ_B，ＭＢ_C)の境界ほかに、そのＭＢ(例えばＭＢ_B)を構成する例えば４×４画素のブロックの境界に対してもＤＢＦ処理を行う。このようなＤＢＦ処理を行う際には、(1)縦の境界、(2)横の境界の順序にＤＢＦ処理を行う。逆順で行うと結果が変わる。マクロブロック境界及びブロック境界にＤＢＦ処理を掛けるので、各境界を挟んで左右又は上下の４ブロックずつを縦又は横にＤＢＦ処理を行うことになる。従って、ある１つのＭＢに対しては、まず縦方向に横８×縦１６画素ずつ左から右へＤＢＦ処理を行い、その後横方向に縦８×横１６画素ずつ上から下へＤＢＦ処理を行うことによって、１ＭＢ分のＤＢＦ処理を完了させることができる。
【００４１】
図１７は図１６の縦方向の境界におけるＤＢＦ処理を説明する図である。  
図１７は横方向に隣接する２つのＭＢ_A，ＭＢ_B間の縦の境界におけるＭＢ_Bの最初のＤＢＦ処理を示している。縦のＭＢ境界を中心とする横８×縦１６画素の領域に対しＭＢ_Bの最初のＤＢＦ処理を行うには、８個の画素の値をＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈとし、ＤＢＦ処理後の８個の画素の値をＡ′，Ｂ′，Ｃ′，Ｄ′，Ｅ′，Ｆ′，Ｇ′，Ｈ′とすると、各画素にH.264 で規定されるＤＢＦ係数(強度)α，β，γ，δ，ε，ζ，η，θ又はα′，β′，γ′，δ′，ε′，ζ′，η′，θ′を乗算して加算することによって、ＭＢ境界の左側に接した画素ＤをＤＢＦ処理した画素値Ｄ′は、
Ｄ′＝αＡ＋βＢ＋γＣ＋δＤ＋ε＋ζ＋η＋θ
ＭＢ境界の右側に接した画素ＥをＤＢＦした画素値Ｅ′は、
Ｅ′＝α′Ａ＋β′Ｂ＋γ′Ｃ＋δ′Ｄ＋ε′Ｅ＋ζ′Ｆ＋η′Ｇ＋θ′Ｈ
となる。ここで、ＤＢＦ係数は、各ＭＢの量子化スケールqpに基づいて算出して取得できる、若しくはテーブル引きして取得することができる。α〜θはＭＢ_Aの量子化スケールqp_aに基づいて算出したＤＢＦ係数であり、α′〜θ′はＭＢ_Bの量子化スケールqp_bに基づいて算出したＤＢＦ係数である。
【００４２】
次に、図１８乃至図２１を参照して、例えば縦４×横４のＭＢで構成される画面について、ＭＢごとに順次にＤＢＦ処理を行いかつ並列処理が可能な状況に至った場合には、ＤＢＦ並列処理を実行する動作について説明する。  
図１８では、ＭＢ(♯０)に対応する太線枠(四角形)内における横方向に存在する３つのブロック境界を３本の細い縦線で縦の境界として表しており、各縦の境界を中心とする横８×縦１６画素の３つの領域について、左側から右側へ３回順次にＤＢＦ処理を実行することによって、垂直処理を完了する。その後に、縦方向の３つのブロック境界を３本の細い横線で横の境界として表しているが、各横の境界を中心とする縦８×横１６画素の３つの領域について、上側から下側へ３回順次にＤＢＦ処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、左上のＭＢ(♯０)についてＤＢＦ処理を完了する。
【００４３】
次に、図１９に示す次のＭＢ(♯１)のＤＢＦ処理へ移行する。  
ＭＢ(♯１)の最初の処理では、横方向に並んだ１つのＭＢ境界(１本の太い縦線) 及び３つのブロック境界(３本の細い縦線)をそれぞれ中心とする横８×縦１６画素の４つの領域について、左側から右側へ４回順次にＤＢＦ処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ３つのブロック境界(３本の細い横線)について、各横の境界を中心とする縦８×横１６画素の３つの領域について、上側から下側へ３回順次にＤＢＦ処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、ＭＢ(♯１)についてＤＢＦ処理を完了する。
【００４４】
次に、図２０に示す次のＭＢ(♯２)のＤＢＦ処理へ移行する。このＭＢ(♯２)のＤＢＦ処理時には、ＭＢ(♯４)の並列処理が可能(先に述べた桂馬飛びの関係)となる。  
並列処理される一方のＭＢ(♯２)の処理では、ＭＢ(♯１)とＭＢ(♯２)の間のＭＢ境界(１本の太い縦線)を中心とする横８×縦１６画素の１つの領域と、横方向に並んだ３つのブロック境界(３本の細い縦線)をそれぞれ中心とする横８×縦１６画素の３つの領域とについて、左側から右側へ４回順次にＤＢＦ処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ３つのブロック境界(３本の細い横線)について、各横の境界を中心とする縦８×横１６画素の３つの領域について、上側から下側へ３回順次にＤＢＦ処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、ＭＢ(♯２)についてＤＢＦ処理を完了する。この処理は、図１９の処理と処理方法は同様である。
【００４５】
並列処理されるもう一方のＭＢ(♯４)の処理では、ＭＢ(♯４)に対応する太線枠(四角形)内における横方向の３つのブロック境界(３本の細い縦線)を中心とする横８×縦１６画素の３つの領域について、左側から右側へ３回順次にＤＢＦ処理を実行することによって、垂直処理を完了する。その後、ＭＢ(♯０)とＭＢ(♯４)の境界のＭＢ境界(太い横線) を中心とする縦８×横１６画素の１つの領域と、縦方向の３つのブロック境界(３本の細い横線)を中心とする縦８×横１６画素の３つの領域とについて、上側から下側へ４回順次にＤＢＦ処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、ＭＢ(♯４)についてＤＢＦ処理を完了する。
【００４６】
次に、図２１に示す次のＭＢ(♯３)のＤＢＦ処理へ移行する。このＭＢ(♯３)のＤＢＦ処理時には、ＭＢ(♯５)の並列処理が可能(先に述べた桂馬飛びの関係)となる。  
並列処理される一方のＭＢ(♯３)の処理では、ＭＢ(♯２)とＭＢ(♯３)の間のＭＢ境界(１本の太い縦線)を中心とする横８×縦１６画素の１つの領域と、横方向に並んだ３つのブロック境界(３本の細い縦線)をそれぞれ中心とする横８×縦１６画素の３つの領域とについて、左側から右側へ４回順次にＤＢＦ処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ３つのブロック境界(３本の細い横線)について、各横の境界を中心とする縦８×横１６画素の３つの領域について、上側から下側へ３回順次にＤＢＦ処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、ＭＢ(♯３)についてＤＢＦ処理を完了する。この処理は、図１７の処理と同様である。
【００４７】
並列処理されるもう一方のＭＢ(♯５)の処理では、ＭＢ(♯４)とＭＢ(♯５)の間のＭＢ境界(１本の太い縦線) を中心とする横８×縦１６画素の１つの領域と、ＭＢ(♯５)に対応する太線枠(四角形)内における横方向の３つのブロック境界(３本の細い縦線)を中心とする横８×縦１６画素の３つの領域とについて、左側から右側へ４回順次にＤＢＦ処理を実行することによって、垂直処理を完了する。その後、ＭＢ(♯１)とＭＢ(♯５)とのＭＢ境界(１本の太い横線) を中心とする縦８×横１６画素の１つの領域と、縦方向の３つのブロック境界(３本の細い横線)を中心とする縦８×横１６画素の３つの領域とについて、上側から下側へ４回順次にＤＢＦ処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、ＭＢ(♯５)についてＤＢＦ処理を完了する。
【００４８】
図２２は量子化スケールqpとデブロッキングフィルタ強度 (係数)との関係を説明する図である。ＤＢＦ強度は、量子化スケールqpによって変化する。図２２で、ＭＢ(♯１)についてqp＝３、ＭＢ(♯４)についてqp＝２、ＭＢ(♯５)についてqp＝４であるとすると、ＭＢ(♯１)のqp＝３とＭＢ(♯５)のqp＝４との間にあるエッジは強度Ａ、ＭＢ(♯４)のqp＝２とＭＢ(♯５)のqp＝４との間にあるエッジは強度Ｂとなる。
【００４９】
以上述べた本発明の実施形態によれば、動画像符号化装置において、量子化処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックとその直前のマクロブロックとで量子化スケールが同じときには、直前のマクロブロックの量子化スケールを強制的に変更することによって、同じにならないようにする量子化スケール変更部を設けたので、従来並列処理することが困難であった部分も並列実行が可能となる。量子化処理の終了待ちをせずにデブロッキングフィルタの処理を始めることができる。これにより、従来のH.264 エンコーダよりも並列処理を高速化することができ、高性能な演算機が必要であった部分を、安価な演算機を複数用意して同等の性能を得ることができる。従って、H.264 エンコーダを低コストに実現できる利点がある。
【００５０】
尚、本発明は上記の実施の形態に限定されるものではなく、種々の変形が可能である。例えば、符号化装置の構成及び符号化手法は、特に限定されるものではない。
【図面の簡単な説明】
【００５１】
【図１】本発明の一実施形態の動画像符号化装置を示すブロック図。
【図２】動画像符号化装置を適用した画像記録装置の概略構成を示すブロック図。
【図３】画面上でのマクロブロック(ＭＢ)番号の割り振りを説明する図。
【図４】複数のＭＢ演算機を用いてＭＢ演算処理を並列的に行うようにしたH.264 エンコーダの実施例を示すブロック図。
【図５】量子化スケールの伝送方法を説明する図。
【図６】ＭＢ単位の量子化スケールqpの差分(mb_qp_delta)の伝送方法を説明する図。
【図７】図６のmb_qp_deltaの伝送方法を表すフローチャート。
【図８】ＭＢ演算部における量子化、及び量子化値coeff挿入処理を示すフローチャート。
【図９】ＤＢＦ処理を含むマクロブロック(ＭＢ)信号処理を並列処理する場合の第１〜第３の処理部の区分を示すブロック図。
【図１０】H.264 エンコード処理において並列処理を実行する際に生ずる問題を説明するための図。
【図１１】H.264 エンコード処理において並列処理を実行する際に生ずる問題を説明するための図。
【図１２】H.264 エンコード処理において並列処理を実行する際に生ずる問題を説明するための図。
【図１３】H.264 エンコード処理において並列処理を実行する際に生ずる問題を説明するための図。
【図１４】H.264 エンコード処理において並列処理を実行する際に生ずる問題を説明するための図。
【図１５】H.264 エンコード処理において並列処理を実行する際に生ずる問題を説明するための図。
【図１６】デブロッキングフィルタ(ＤＢＦ)のフィルタ処理の順序を説明する図。
【図１７】図１６のＭＢ間の縦方向の境界におけるＤＢＦ処理を説明する図。
【図１８】縦４×横４のＭＢで構成される画面について、ＭＢごとに順次にＤＢＦ処理を行いかつ並列処理が可能な状況に至った場合には、ＤＢＦ並列処理を実行する動作について説明するための図。
【図１９】縦４×横４のＭＢで構成される画面について、ＭＢごとに順次にＤＢＦ処理を行いかつ並列処理が可能な状況に至った場合には、ＤＢＦ並列処理を実行する動作について説明するための図。
【図２０】縦４×横４のＭＢで構成される画面について、ＭＢごとに順次にＤＢＦ処理を行いかつ並列処理が可能な状況に至った場合には、ＤＢＦ並列処理を実行する動作について説明するための図。
【図２１】縦４×横４のＭＢで構成される画面について、ＭＢごとに順次にＤＢＦ処理を行いかつ並列処理が可能な状況に至った場合には、ＤＢＦ並列処理を実行する動作について説明するための図。
【図２２】量子化スケールqpとデブロッキングフィルタ強度 (係数)との関係を説明する図。
【符号の説明】
【００５２】
２０…H.264エンコーダ(動画像符号化装置)
２１…ＭＢ演算部(演算装置)
２２…エントロピー符号化部(符号化装置)
２１１…第１の処理部
２１２…第2の処理部
２１３…逆量子化及びＩＤＣＴ部
２１４…デブロッキングフィルタ処理部
２１３及び２１４，２１３Ａ…第３の処理部
【図１】
2010141513.tif 000003
【図２】
2010141513.tif 000004
【図３】
2010141513.tif 000005
【図４】
2010141513.tif 000006
【図５】
2010141513.tif 000007
【図６】
2010141513.tif 000008
【図７】
2010141513.tif 000009
【図８】
2010141513.tif 000010
【図９】
2010141513.tif 000011
【図１０】
2010141513.tif 000012
【図１１】
2010141513.tif 000013
【図１２】
2010141513.tif 000014
【図１３】
2010141513.tif 000015
【図１４】
2010141513.tif 000016
【図１５】
2010141513.tif 000017
【図１６】
2010141513.tif 000018
【図１７】
2010141513.tif 000019
【図１８】
2010141513.tif 000020
【図１９】
2010141513.tif 000021
【図２０】
2010141513.tif 000022
【図２１】
2010141513.tif 000023
【図２２】
2010141513.tif 000024