JP2010141513A - 演算装置及び動画像符号化装置 - Google Patents
演算装置及び動画像符号化装置 Download PDFInfo
- Publication number
- JP2010141513A JP2010141513A JP2008314632A JP2008314632A JP2010141513A JP 2010141513 A JP2010141513 A JP 2010141513A JP 2008314632 A JP2008314632 A JP 2008314632A JP 2008314632 A JP2008314632 A JP 2008314632A JP 2010141513 A JP2010141513 A JP 2010141513A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- quantization
- processing unit
- dbf
- macroblock
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】H.264 エンコード処理に並列処理を導入した場合、DBF処理を高速化可能な演算装置及び動画像符号化装置を提供することである。
【解決手段】複数の演算部を備え、入力画像データを、MBごとに処理する際に、DBF処理を複数のMBに対して並列的に実行する為の演算装置であって、入力画像データを入力し、予測誤差画像データを生成する第1の処理部211と、さらに、DCT及び量子化を行い、量子化値及び量子化スケール(qp)を生成する第2の処理部212と、そして、逆量子化及び逆離散コサイン変換を行い、復元したものにDBF処理し、予測画像を生成して第1の処理部へ供給する第3の処理部213Aと、第2の処理部の後段に設けられ、第2の処理部からのDBF処理予定のMBとその直前のMBとでqpが同じときには、直前のMBのqpを強制的に変更する量子化スケール変更部215と、を備える。
【選択図】図1
【解決手段】複数の演算部を備え、入力画像データを、MBごとに処理する際に、DBF処理を複数のMBに対して並列的に実行する為の演算装置であって、入力画像データを入力し、予測誤差画像データを生成する第1の処理部211と、さらに、DCT及び量子化を行い、量子化値及び量子化スケール(qp)を生成する第2の処理部212と、そして、逆量子化及び逆離散コサイン変換を行い、復元したものにDBF処理し、予測画像を生成して第1の処理部へ供給する第3の処理部213Aと、第2の処理部の後段に設けられ、第2の処理部からのDBF処理予定のMBとその直前のMBとでqpが同じときには、直前のMBのqpを強制的に変更する量子化スケール変更部215と、を備える。
【選択図】図1
Description
本発明は、演算装置及び動画像符号化装置に係り、特にH.264符号化器において、デブロッキングフィルタ処理を高速化させるために使用される演算装置及び動画像符号化装置に関するものである。
動画像符号化装置におけるH.264 符号化処理(以下、H.264 エンコード処理という)は、画面をマクロブロック(以下、MBという)という16×16画素の領域を単位として、動き予測、イントラ予測、予測誤差生成、離散コサイン変換(以下、DCTという)、量子化、エントロピー符号化、逆量子化、デブロッキングフィルタの各処理を順次に行う。すべてのMBは、処理スキャン順に番号が付けられている(図3参照)。
量子化は、量子化スケール(以下、qpという、これは量子化ステップと同義である)を使い、予測誤差画像データの量子化を行い、量子化値(以下、coeffという)を生成する。qpは、MB毎に異なる値を使用することができる。ただし、coeffを一つも持たないMBに関しては、MB番号が一つ前のMBと等しいqp値を利用することになっている。
低コストのH.264エンコーダを設計する場合、並列処理を導入することは有効である。この場合、高性能な演算機を一つ用意するよりも、安価な演算機を複数用意するほうがコスト性能比に優れる。
低コストのH.264エンコーダを設計する場合、並列処理を導入することは有効である。この場合、高性能な演算機を一つ用意するよりも、安価な演算機を複数用意するほうがコスト性能比に優れる。
ところで、従来のH.264 エンコード処理においては、MB毎にデブロッキングフィルタ(以下、DBFという)処理を行う際には、まずMB毎にqpを設定し、このqpに基づいてDBF処理のフィルタ係数を画素ごとに算出し或いはテーブル引きして取得し、このフィルタ係数をMBを構成する複数の画素それぞれに乗算することによって、DBF処理が実行される。
ところが、H.264 エンコード処理に並列処理を導入した場合、符号化データを複数(例えば2つ)のMBに対して並列的にDBF処理を実行しようとすると、画面上で並列処理の対象となる2つのMBのうちの1つのMBに対して処理スキャン順に順次にエンコード処理のステップが進んでいく過程で並列処理の対象となるもう1つのMBはある規則をもって選ばれるが、並列処理対象となる2つのMBがDBF処理を行うにはそれぞれのMBにqpを設定することが必要である。これはqpに基づいてDBF係数を算出することが必要なためである。一方、量子化スケールqpはMBごとに異なるが、H.264規格では、圧縮されたエレメンタリストリームでは、量子化スケールqpは、直前のMBが持つ量子化スケールとの差分情報のみを持って伝送されていく。つまり、あるMBのqpは1つ前のMBのqpに差分情報を加えたものとなる。
従って、並列的にDBF処理を実行する場合、H.264 エンコード処理の過程で、並列処理対象の2つのMBのうちの一方のMBについてDBF処理を実行する際にこれと並列的にもう一方のMBについてもDBF処理を実行しようとするとき、もう一方のMBの直前のMBが持つ量子化スケールが決まっていなければ、もう一方の次のMBについては並列的にDBF処理を実行できず、結果としてDBF処理を高速化できないという問題を生じる。
一方、先行技術として、特許文献1にはH.264の符号化器におけるパイプライン処理(並列処理)及びデブロッキングフィルタ処理についての記述があるが、デブロッキングフィルタ処理における並列処理に伴う問題点についての記載はみられない。
特開2007−312340号公報
一方、先行技術として、特許文献1にはH.264の符号化器におけるパイプライン処理(並列処理)及びデブロッキングフィルタ処理についての記述があるが、デブロッキングフィルタ処理における並列処理に伴う問題点についての記載はみられない。
そこで、本発明は上記の問題に鑑み、H.264 エンコード処理に並列処理を導入した場合、デブロッキングフィルタ処理を高速化することができる演算装置及び動画像符号化装置を提供することを目的とするものである。
本発明の一態様によれば、複数の演算部を備え、入力画像データを、画面を構成する所定数のマクロブロックそれぞれに対応したデータごとに信号処理する際に、デブロッキングフィルタ処理を前記所定数のマクロブロックのうちの複数のマクロブロックに対して並列的に実行するための演算装置であって、前記入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行い、予測誤差画像データを生成する第1の処理部と、前記予測誤差画像データを入力し、離散コサイン変換及び量子化を行い、マクロブロックごとに、量子化値及び量子化スケールを生成する第2の処理部と、前記量子化値及び量子化スケールを入力し、逆量子化及び逆離散コサイン変換を行い、その結果復元された予測誤差画像データをデブロッキングフィルタ処理してブロック歪みを除去し、予測画像を生成して前記第1の処理部へ供給する第3の処理部と、前記第2の処理部と前記第3の処理部との間に設けられて、前記第2の処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックとその直前のマクロブロックとで量子化スケールが同じときには、前記直前のマクロブロックの量子化スケールを強制的に変更する量子化スケール変更部と、を備えたことを特徴とする演算装置が提供される。
本発明の他の態様によれば、少なくとも上記の一態様に記載の演算装置と、この演算装置の前記第2の処理部からの量子化値をエントロピー符号化する符号化装置と、を具備した動画像符号化装置が提供される。
本発明によれば、H.264 エンコード処理に並列処理を導入した場合、デブロッキングフィルタ処理を高速化することができる演算装置及び動画像符号化装置を実現することができる。
発明の実施の形態について図面を参照して説明する。
図1は本発明の一実施形態の動画像符号化装置のブロック図を示し、図2は動画像符号化装置を適用した画像記録装置の概略構成のブロック図を示し、図3はマクロブロック(MB)番号の画面上での割り振りを説明する図を示している。
図1は本発明の一実施形態の動画像符号化装置のブロック図を示し、図2は動画像符号化装置を適用した画像記録装置の概略構成のブロック図を示し、図3はマクロブロック(MB)番号の画面上での割り振りを説明する図を示している。
図2に示すように、動画像符号化装置としてH.264エンコーダを適用した画像記録装置100は、例えば放送受信機やメディア再生装置のように放送或いは蓄積された信号から画像信号を再生出力する画像入力装置10と、この画像入力装置10からの画像信号を入力しエンコードするH.264 エンコーダ20と、そのH.264 エンコーダ20からのエンコード結果である符号化データが記録される記録媒体30とを備えている。
1つの画面の動画像符号化処理において処理単位として用いられるマクロブロック(MB)番号は、図3に示すように画面(例えば縦4×横4個のMBで構成される)上でマクロブロックMBは画面左のMBから右方向にかつ画面の上から下方向に処理スキャン順に番号(♯0,♯1,♯2,……♯15)が付されている。以下に述べる本実施形態では、画面を構成する複数のマクロブロックMBをそれぞれMB(♯0),MB(♯1),MB(♯2),……MB(♯15)と表すことがある。
図1に示すように、動画像符号化装置としてのH.264エンコーダ20は、演算装置としてのMB演算部21と、符号化装置としてのエントロピー符号化部22とを備えている。MB演算部21は、エンコード処理を構成する複数の処理のうちの幾つかの処理を並列的に実行することを可能とする少なくとも1つのMB演算機で構成されており、動き予測、イントラ予測、予測誤差生成、DCT、量子化、エントロピー符号化、逆量子化、デブロッキングフィルタ(DBF)の各処理を行う。
MB演算部21は、入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行う第1の処理部211と、第1の処理部211からの予測誤差画像データを入力し、DCT及び量子化を行う第2の処理部212と、第2の処理部212からの量子化値coeff及び量子化スケールqpの差分を入力し、逆量子化及び逆DCT(以下、IDCTという)を行う逆量子化及びIDCT部213と、逆量子化及びIDCT部213からの逆量子化及びIDCTして復元された予測誤差画像データを入力し、DBF処理してブロック歪みを除去し、予測画像(参照画像とも呼ばれる)データを生成して第1の処理部211へ出力するDBF処理部214と、第2の処理部212と逆量子化及びIDCT部213との間に設けられて、第2の処理部212から出力される現在のMBと次のMBとで量子化スケールqpが同じとき(即ちqpの差分=0のとき)には、次のMBの量子化スケールqpを強制的に変更する量子化スケール変更部215と、を備えている。なお、逆量子化及びIDCT部213と、DBF処理部214とは、第3の処理部213Aを構成している。また、第1の処理部211における動き予測は、入力画像データと予測画像データの差分をとることによって行われる。量子化スケールqpの差分とは、注目しているMBにおける量子化スケールqpbとその1つ前のMBにおける量子化スケールqpaとの差分をいう。
一方、エントロピー符号化部22は、第2の処理部212からの量子化値coeff及び量子化スケールqpの差分をさらに量子化スケール変更部215を通して得られた量子化値coeff及び量子化スケールqpの差分と、第1の処理部211で得られた動きベクトルとを入力し、量子化値coeffをエントロピー符号化(例えば可変長符号化)し、エレメンタリストリームとして出力する。
MB演算部の各処理について説明する。動き予測及び予測誤差生成では、DBF処理部214によって生成した予測画像(参照画像)データと、入力画像データを入力とし、この入力画像データと予測画像データとの差分値(予測誤差画像データという)を生成する。この予測誤差画像データをDCTによって周波数空間(水平,垂直周波数領域)における二次元平面上での離散値に変換(展開)し、その離散値をDC成分からAC成分方向(周波数が高くなる方向)へジグザグスキャンして一次元に順次並べたDCT係数値を生成して、これを量子化する。なお、イントラ(画面内)予測は、同じ画面内の画像サンプルを用いて別の位置の画像サンプルを予測するものであり、例えば画素についてその画素が属するライン上の隣の画素との差分をとることによって行われる。イントラ予測は、画面間で行われるインター予測と併用(例えば、符号化効率向上のために最適な予測モードに選択的に切り換えるなど)して用いられる。
量子化は、DCT係数値と量子化スケールqpを入力とし、量子化した結果を量子化値coeff、量子化スケールqpの差分(mb_qp_delta)として出力する。量子化値coeffとは、予測誤差画像データのDCT係数値を量子化した値のことである。量子化スケールqpの差分(mb_qp_delta)とは、直前のMBの量子化スケールqpaと次のMBの量子化スケールqpbとの差分であり、qpb=qpa+(mb_qp_delta) で次のMBの量子化スケールqpbを求めることができる。
逆量子化処理は、量子化値coeff、及び量子化スケールqpの差分(mb_qp_delta)を入力とし、量子化前のDCT係数を出力する。IDCTは、逆量子化された量子化前のDCT係数からDCT前の予測誤差画像データを復号画像データとして出力する。DBF処理は、復号画像データを入力し、フィルタリング後の画像が予測画像(参照画像)データとして第1の処理部211へ出力される。
量子化スケール変更部215は、第2の処理部212と第3の処理部213Aとの間に設けられて、第2の処理部212から出力されるMBごとの量子化値coeffが0のときにcoeff≠0となるcoeff値を挿入するcoeff挿入部を構成することによっても、実現することもできる。これについては、図6乃至図8にて後で説明する。
エントロピー符号化部22は、量子化された量子化値coeff、量子化スケールqpの差分(mb_qp_delta) を受け取り、MB番号順にエントロピー符号化を行い、図示しない記録媒体へと出力する。
エントロピー符号化部22は、量子化された量子化値coeff、量子化スケールqpの差分(mb_qp_delta) を受け取り、MB番号順にエントロピー符号化を行い、図示しない記録媒体へと出力する。
図1の構成では、MB演算部21は1つのMB演算部で構成されているが、これに限定されることなく、同じ構成の複数個のMB演算部で構成してもよい。
図4は、本実施形態において、MB演算部としてMB演算機を複数用意し、複数のMB演算機を用いてMB演算処理を並列的に行うようにしたH.264 エンコーダの実施例を示している。
図4の例では、3つのMB演算機21-1,21-2,21-3と、エントロピー符号化部22と、画像メモリ23とを備えた構成例を示している。MB演算機21-1,21-2,21-3のそれぞれの構成は、図1のMB演算部21の構成と同様である。
図4は、本実施形態において、MB演算部としてMB演算機を複数用意し、複数のMB演算機を用いてMB演算処理を並列的に行うようにしたH.264 エンコーダの実施例を示している。
図4の例では、3つのMB演算機21-1,21-2,21-3と、エントロピー符号化部22と、画像メモリ23とを備えた構成例を示している。MB演算機21-1,21-2,21-3のそれぞれの構成は、図1のMB演算部21の構成と同様である。
図4で、入力画像データは、3つのMB演算機21-1〜21-3に供給され、各MB演算機21-1〜21-3はそれぞれ図1における第1〜第3の処理部の各処理と同様に、画面を構成する縦×横の所定数のMBそれぞれに処理スキャン順に順次必要な処理を実施するが、3つのMB演算機があるためにDBF処理過程に至るまでの複数段階の処理において、画面上の複数のMBに対して同じ処理を並列的に実行することが可能である。それらの各処理段階でで処理前及び処理後のデータは画像メモリ23に記憶されて処理過程が進行していく。3つのMB演算機21-1〜21-3のDCT及び量子化処理後の各データはエントロピー符号化部22へ供給されて例えば可変長符号化され、エレメンタリストリームとして図示しない記録媒体へ出力される。
このように構成することにより、MB演算部の負担を複数のMB演算機で分担することができ、高性能な演算機が必要であった部分を、低コストな演算機を複数用意して同等の性能を得ることが可能となる。従って、H.264 エンコーダを低コストに実現することができる。
一方、量子化スケールqpの伝送方法は、H.264規格で決まっている。量子化スケールqpはMBごとに決められており、圧縮されたエレメンタリストリームでは、図5に示すように次の量子化スケールqpの伝送は、最初のMB(♯0)のqp0以外は1つ前(直前)のMBが持つ量子化スケールとの差分情報(mb_qp_delta)のみとなっている。図5で、qp0,qp1,qp2,qp3……qp15はそれぞれMB(♯0),MB(♯1),MB(♯2),MB(♯3),……MB(♯15)の量子化スケールを表している。
一方、量子化スケールqpの伝送方法は、H.264規格で決まっている。量子化スケールqpはMBごとに決められており、圧縮されたエレメンタリストリームでは、図5に示すように次の量子化スケールqpの伝送は、最初のMB(♯0)のqp0以外は1つ前(直前)のMBが持つ量子化スケールとの差分情報(mb_qp_delta)のみとなっている。図5で、qp0,qp1,qp2,qp3……qp15はそれぞれMB(♯0),MB(♯1),MB(♯2),MB(♯3),……MB(♯15)の量子化スケールを表している。
MB単位の量子化スケールqpの差分(mb_qp_delta)の伝送方法は、H.264規格では、図6のように規定されている。量子化スケールqpの差分(mb_qp_delta)は、予測誤差(言い換えれば量子化値coeff)の存在(CodedBlockPattern)するときと、イントラ(画面内)16×16符号化されたときのみ伝送されるようになっている。従って、H.264エンコード処理を形成する複数の処理の中でも、量子化スケールを必要とするDBF処理に関しては、DBF処理を実行するMBの1つ前のMBのCodedBlockPatternの有無が決定(確認)されるまで、次のMBのDBF処理を進めることができない。
1つ前のMBの量子化スケールをqpa、次のMBの量子化スケールをqpbとすると、図6から分かるようにCodedBlockPatternLuma(予測誤差の輝度成分の存在)もしくはCodedBlockPatternChroma(予測誤差の色差成分の存在)が0以外であれば、qpa+mb_qp_delta→qpb 即ち、1つ前のMBのqpaに差分(mb_qp_delta)を加えたものが次のMBのqpbとなる。
図7は図6のmb_qp_deltaの伝送方法をフローチャートに表したものである。
DCT係数を量子化スケールqpaで量子化し、CodedBlockPatternLuma>0若しくはCodedBlockPatternChroma>0、即ちcoeff≠0、若しくはMBPartPredMode = = Intra_16×16であるかを判定し(ステップS11)、そうであれば、エレメンタリストリーム(ES)にqpの差分(mb_qp_delta)及び量子化値coeffを含み(ステップS12)、そうでなければ、ESにqpの差分(mb_qp_delta)及びcoeffを含まない(ステップS13)。
DCT係数を量子化スケールqpaで量子化し、CodedBlockPatternLuma>0若しくはCodedBlockPatternChroma>0、即ちcoeff≠0、若しくはMBPartPredMode = = Intra_16×16であるかを判定し(ステップS11)、そうであれば、エレメンタリストリーム(ES)にqpの差分(mb_qp_delta)及び量子化値coeffを含み(ステップS12)、そうでなければ、ESにqpの差分(mb_qp_delta)及びcoeffを含まない(ステップS13)。
そこで、本発明の実施例においては、DCT及び量子化を行う第2の処理部の後段に、量子化スケール変更部215として上述のcoeff挿入部を設けて、第2の処理部212の出力にCodedBlockPattern(或いは、量子化値coeff、又はqpの差分(mb_qp_delta))が存在するか否かを判定し、存在しないときはcoeff(≠0)を付加、又はqpの差分(mb_qp_delta≠0)を付加することにより、次のMBのDBF処理を実行できるようにした。
図8はMB演算部21における量子化、及び量子化値coeff挿入処理のフローチャートを示している。まず、DCT係数値を量子化スケールqpで量子化する(ステップS1)。次に、MBタイプが16×16イントラ予測であるか否かを判定する(ステップS2)。16×16イントラ予測でなければ、インター予測であるとしてステップS3へ移行する。
画面を構成する複数のMBの各行間で並列処理が間断なく継続して実行されるための条件としては、図14及び図15で後述するように、画面を構成する複数のMBの各行の最後のMBの量子化処理結果である量子化値coeffがcoeff≠0(或いは、qpの差分(mb_qp_delta)≠0であってもよい)であることが必要となる。これは、次の行の先頭のMBがDBF処理を実行しようとする際に、前の行の最後のMBの量子化処理結果である量子化値coeffがcoeff=0(或いは、qpの差分(mb_qp_delta)=0)であると、DBF処理に必要なフィルタ係数を取得できないためである。
そこで、ステップS3では、MB信号処理を行う際にMBが各行の最後のMBか否かを判定する)。そして、行の最後のMBであれば、量子化値coeffが存在しない、即ちcoeff=0か否かを判定する(ステップS4)。
ステップS4の判定で、coeffが存在しない(即ちcoeff=0)ならば、行の最後のMBの量子化処理結果としてcoeff≠0が出力されるように量子化値coeff≠0を挿入(追加)する処理を行う(ステップS5)。
ステップS4の判定で、coeffが存在しない(即ちcoeff=0)ならば、行の最後のMBの量子化処理結果としてcoeff≠0が出力されるように量子化値coeff≠0を挿入(追加)する処理を行う(ステップS5)。
図9〜図15はH.264 エンコード処理において並列処理を実行する際に生ずる問題点を説明するための図である。ただし、図9では、量子化スケール変更部215の必要性を説明するために、図1のMB演算部21の構成から、量子化スケール変更部215(或いはcoeff挿入部)を削除した構成を示している。ここでは、H.264 エンコード処理においてDBF処理を並列実行する際に生じる問題を説明する。
図9はDBF処理を含むマクロブロック(MB)信号処理を並列処理する場合のブロック図を示している。図9は、以降の図10〜図15での並列処理の過程を説明するために、図1のMB演算部21の構成における、第1の処理部211と、第2の処理部212と、逆量子化,IDCT及びDBF処理を行う第3の処理部213Aとで構成されている部分を説明する。
第1の処理部211は、入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行う。第2の処理部212は、第1の処理部211からの予測誤差画像データを入力し、離散コサイン変換(DCT)及び量子化を行う。第3の処理部213Aは、第2の処理部212からの量子化値coeff及び量子化スケールqpの差分(mb_qp_delta)を入力し、逆量子化及びIDCT(逆DCT)を行い、更に加えて、その逆DCTして復元された予測誤差画像データを、DBF(デブロッキング)処理してブロック歪みを除去し、予測画像(参照画像)データを生成して第1の処理部211へ出力する。
図9〜図15では、第1〜第3の処理部211,212,213Aによる各処理であることを簡略に表すためにそれぞれの処理に1)、2)、3)と符号を付して説明する。
まず、図10に示すように4×4個のマクロブロックMBで構成される画面上のMB(♯0)に対して、第1の処理1)を行う。MB(♯0)に対する第1の処理1)を完了すると、図11に示すようにMB(♯0)は第2の処理2)へ移行し、次のMB(♯1)は第1の処理を開始する。
MB(♯0)が第2の処理2)を完了し、MB(♯1)が第1の処理を完了すると、第2の処理部212からは量子化スケールqpの初期値が出力され第3の処理部213Aへ供給される。このとき、図12に示すようにMB(♯0)は第3の処理3)(DBF処理を含む)へ移行し、次のMB(♯1)は第2の処理2)へ移行し、その次のMB(♯2)は第1の処理1)を開始し、それとほぼ並列的にMB(♯4)で第1の処理1)を開始する。MB(♯2)とMB(♯4)との画面上での位置関係は桂馬飛びと称せられ、並列処理可能な位置関係にある。
MB(♯0)が第3の処理3)を完了し、MB(♯1)が第2の処理2)を完了し、MB(♯2)及び MB(♯4)が第1の処理を完了すると、第2の処理部212からは量子化スケールqpの差分(mb_qp_delta)が出力され第3の処理部213へ供給される。このとき、図13に示すようにMB(♯0)は第3の処理3)を完了し、次のMB(♯1)は第3の処理3)へ移行し、その次のMB(♯2)は第2の処理2)へ移行し、それとほぼ並列的にMB(♯4)は第2の処理2)へ移行し、MB(♯3)は第1の処理1)を開始し、それとほぼ並列的にMB(♯5)は第1の処理1)を開始する。
MB(♯0)が第3の処理3)の完了状態を維持し、MB(♯1)が第3の処理3)を完了し、MB(♯2)及びMB(♯4)が第2の処理2)を完了し、MB(♯3)及びMB(♯5)が第1の処理を完了すると、図14に示すようにMB(♯0)は第3の処理3)の完了状態であり、次のMB(♯1)は第3の処理3)を完了し、その次のMB(♯2)は第3の処理3)へ移行し、更にその次のMB(♯3)は第2の処理2)へ移行し、それとほぼ並列的にMB(♯5)は第2の処理2)へ移行し、更にMB(♯6)は第1の処理1)を開始し、それとほぼ並列的にMB(♯8)は第1の処理1)を開始する。この場合、第3の処理部213AはMB(♯2)と共にMB(♯4)においても第3の処理3)を開始しようとするが、右上のMB(♯3)は第2の処理2)を動作中でありDCT及び量子化を完了させていないので、次のMB(♯4)へ渡す量子化スケールqpの差分(mb_qp_delta)及び量子化値coeffを出力できずこのためMB(♯4)はDBF処理へ移行できない。従って、このような状況ではDBF処理の並列処理を行うべき一方のMB(♯2)のDBF処理のみ行われて、もう一方のMB(♯4)のDBF処理が行われず、DBF処理の並列処理が成立しない時間が多くなり、そのためにマクロブロック(MB)信号処理の実行速度が著しく低下するという問題を生じる。
更に、図示しないがMB(♯6)の第1の処理1)が完了した後の処理過程以降(例えば図15参照)についてもDBF処理での並列処理は成立しない状況を生ずることがある。例えば、MB(♯4)、MB(♯9)及びMB(♯14)が並列処理可能なMBの関係であるが、MB(♯14)が並列処理が成立しない状況になる。
従って、図14及び図15からも類推できるように、DBF処理の並列処理が実行可能か否かを判定するのに、図8に示したようなフローチャートで判定することが可能である。
従って、図14及び図15からも類推できるように、DBF処理の並列処理が実行可能か否かを判定するのに、図8に示したようなフローチャートで判定することが可能である。
デブロッキングフィルタ(DBF)処理は、本来、マクロブロックMBの境界が滑らかになるようにフィルタ処理をする機能である。図16に示すように、実際には、16×16画素のマクロブロック(MB_A,MB_B,MB_C)の境界ほかに、そのMB(例えばMB_B)を構成する例えば4×4画素のブロックの境界に対してもDBF処理を行う。このようなDBF処理を行う際には、(1)縦の境界、(2)横の境界の順序にDBF処理を行う。逆順で行うと結果が変わる。マクロブロック境界及びブロック境界にDBF処理を掛けるので、各境界を挟んで左右又は上下の4ブロックずつを縦又は横にDBF処理を行うことになる。従って、ある1つのMBに対しては、まず縦方向に横8×縦16画素ずつ左から右へDBF処理を行い、その後横方向に縦8×横16画素ずつ上から下へDBF処理を行うことによって、1MB分のDBF処理を完了させることができる。
図17は図16の縦方向の境界におけるDBF処理を説明する図である。
図17は横方向に隣接する2つのMB_A,MB_B間の縦の境界におけるMB_Bの最初のDBF処理を示している。縦のMB境界を中心とする横8×縦16画素の領域に対しMB_Bの最初のDBF処理を行うには、8個の画素の値をA,B,C,D,E,F,G,Hとし、DBF処理後の8個の画素の値をA′,B′,C′,D′,E′,F′,G′,H′とすると、各画素にH.264 で規定されるDBF係数(強度)α,β,γ,δ,ε,ζ,η,θ又はα′,β′,γ′,δ′,ε′,ζ′,η′,θ′を乗算して加算することによって、MB境界の左側に接した画素DをDBF処理した画素値D′は、
D′=αA+βB+γC+δD+ε+ζ+η+θ
MB境界の右側に接した画素EをDBFした画素値E′は、
E′=α′A+β′B+γ′C+δ′D+ε′E+ζ′F+η′G+θ′H
となる。ここで、DBF係数は、各MBの量子化スケールqpに基づいて算出して取得できる、若しくはテーブル引きして取得することができる。α〜θはMB_Aの量子化スケールqp_aに基づいて算出したDBF係数であり、α′〜θ′はMB_Bの量子化スケールqp_bに基づいて算出したDBF係数である。
図17は横方向に隣接する2つのMB_A,MB_B間の縦の境界におけるMB_Bの最初のDBF処理を示している。縦のMB境界を中心とする横8×縦16画素の領域に対しMB_Bの最初のDBF処理を行うには、8個の画素の値をA,B,C,D,E,F,G,Hとし、DBF処理後の8個の画素の値をA′,B′,C′,D′,E′,F′,G′,H′とすると、各画素にH.264 で規定されるDBF係数(強度)α,β,γ,δ,ε,ζ,η,θ又はα′,β′,γ′,δ′,ε′,ζ′,η′,θ′を乗算して加算することによって、MB境界の左側に接した画素DをDBF処理した画素値D′は、
D′=αA+βB+γC+δD+ε+ζ+η+θ
MB境界の右側に接した画素EをDBFした画素値E′は、
E′=α′A+β′B+γ′C+δ′D+ε′E+ζ′F+η′G+θ′H
となる。ここで、DBF係数は、各MBの量子化スケールqpに基づいて算出して取得できる、若しくはテーブル引きして取得することができる。α〜θはMB_Aの量子化スケールqp_aに基づいて算出したDBF係数であり、α′〜θ′はMB_Bの量子化スケールqp_bに基づいて算出したDBF係数である。
次に、図18乃至図21を参照して、例えば縦4×横4のMBで構成される画面について、MBごとに順次にDBF処理を行いかつ並列処理が可能な状況に至った場合には、DBF並列処理を実行する動作について説明する。
図18では、MB(♯0)に対応する太線枠(四角形)内における横方向に存在する3つのブロック境界を3本の細い縦線で縦の境界として表しており、各縦の境界を中心とする横8×縦16画素の3つの領域について、左側から右側へ3回順次にDBF処理を実行することによって、垂直処理を完了する。その後に、縦方向の3つのブロック境界を3本の細い横線で横の境界として表しているが、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、左上のMB(♯0)についてDBF処理を完了する。
図18では、MB(♯0)に対応する太線枠(四角形)内における横方向に存在する3つのブロック境界を3本の細い縦線で縦の境界として表しており、各縦の境界を中心とする横8×縦16画素の3つの領域について、左側から右側へ3回順次にDBF処理を実行することによって、垂直処理を完了する。その後に、縦方向の3つのブロック境界を3本の細い横線で横の境界として表しているが、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、左上のMB(♯0)についてDBF処理を完了する。
次に、図19に示す次のMB(♯1)のDBF処理へ移行する。
MB(♯1)の最初の処理では、横方向に並んだ1つのMB境界(1本の太い縦線) 及び3つのブロック境界(3本の細い縦線)をそれぞれ中心とする横8×縦16画素の4つの領域について、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ3つのブロック境界(3本の細い横線)について、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯1)についてDBF処理を完了する。
MB(♯1)の最初の処理では、横方向に並んだ1つのMB境界(1本の太い縦線) 及び3つのブロック境界(3本の細い縦線)をそれぞれ中心とする横8×縦16画素の4つの領域について、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ3つのブロック境界(3本の細い横線)について、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯1)についてDBF処理を完了する。
次に、図20に示す次のMB(♯2)のDBF処理へ移行する。このMB(♯2)のDBF処理時には、MB(♯4)の並列処理が可能(先に述べた桂馬飛びの関係)となる。
並列処理される一方のMB(♯2)の処理では、MB(♯1)とMB(♯2)の間のMB境界(1本の太い縦線)を中心とする横8×縦16画素の1つの領域と、横方向に並んだ3つのブロック境界(3本の細い縦線)をそれぞれ中心とする横8×縦16画素の3つの領域とについて、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ3つのブロック境界(3本の細い横線)について、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯2)についてDBF処理を完了する。この処理は、図19の処理と処理方法は同様である。
並列処理される一方のMB(♯2)の処理では、MB(♯1)とMB(♯2)の間のMB境界(1本の太い縦線)を中心とする横8×縦16画素の1つの領域と、横方向に並んだ3つのブロック境界(3本の細い縦線)をそれぞれ中心とする横8×縦16画素の3つの領域とについて、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ3つのブロック境界(3本の細い横線)について、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯2)についてDBF処理を完了する。この処理は、図19の処理と処理方法は同様である。
並列処理されるもう一方のMB(♯4)の処理では、MB(♯4)に対応する太線枠(四角形)内における横方向の3つのブロック境界(3本の細い縦線)を中心とする横8×縦16画素の3つの領域について、左側から右側へ3回順次にDBF処理を実行することによって、垂直処理を完了する。その後、MB(♯0)とMB(♯4)の境界のMB境界(太い横線) を中心とする縦8×横16画素の1つの領域と、縦方向の3つのブロック境界(3本の細い横線)を中心とする縦8×横16画素の3つの領域とについて、上側から下側へ4回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯4)についてDBF処理を完了する。
次に、図21に示す次のMB(♯3)のDBF処理へ移行する。このMB(♯3)のDBF処理時には、MB(♯5)の並列処理が可能(先に述べた桂馬飛びの関係)となる。
並列処理される一方のMB(♯3)の処理では、MB(♯2)とMB(♯3)の間のMB境界(1本の太い縦線)を中心とする横8×縦16画素の1つの領域と、横方向に並んだ3つのブロック境界(3本の細い縦線)をそれぞれ中心とする横8×縦16画素の3つの領域とについて、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ3つのブロック境界(3本の細い横線)について、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯3)についてDBF処理を完了する。この処理は、図17の処理と同様である。
並列処理される一方のMB(♯3)の処理では、MB(♯2)とMB(♯3)の間のMB境界(1本の太い縦線)を中心とする横8×縦16画素の1つの領域と、横方向に並んだ3つのブロック境界(3本の細い縦線)をそれぞれ中心とする横8×縦16画素の3つの領域とについて、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、縦方向に並んだ3つのブロック境界(3本の細い横線)について、各横の境界を中心とする縦8×横16画素の3つの領域について、上側から下側へ3回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯3)についてDBF処理を完了する。この処理は、図17の処理と同様である。
並列処理されるもう一方のMB(♯5)の処理では、MB(♯4)とMB(♯5)の間のMB境界(1本の太い縦線) を中心とする横8×縦16画素の1つの領域と、MB(♯5)に対応する太線枠(四角形)内における横方向の3つのブロック境界(3本の細い縦線)を中心とする横8×縦16画素の3つの領域とについて、左側から右側へ4回順次にDBF処理を実行することによって、垂直処理を完了する。その後、MB(♯1)とMB(♯5)とのMB境界(1本の太い横線) を中心とする縦8×横16画素の1つの領域と、縦方向の3つのブロック境界(3本の細い横線)を中心とする縦8×横16画素の3つの領域とについて、上側から下側へ4回順次にDBF処理を実行することによって、水平処理を完了する。これによって、垂直水平処理が完了し、MB(♯5)についてDBF処理を完了する。
図22は量子化スケールqpとデブロッキングフィルタ強度 (係数)との関係を説明する図である。DBF強度は、量子化スケールqpによって変化する。図22で、MB(♯1)についてqp=3、MB(♯4)についてqp=2、MB(♯5)についてqp=4であるとすると、MB(♯1)のqp=3とMB(♯5)のqp=4との間にあるエッジは強度A、MB(♯4)のqp=2とMB(♯5)のqp=4との間にあるエッジは強度Bとなる。
以上述べた本発明の実施形態によれば、動画像符号化装置において、量子化処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックとその直前のマクロブロックとで量子化スケールが同じときには、直前のマクロブロックの量子化スケールを強制的に変更することによって、同じにならないようにする量子化スケール変更部を設けたので、従来並列処理することが困難であった部分も並列実行が可能となる。量子化処理の終了待ちをせずにデブロッキングフィルタの処理を始めることができる。これにより、従来のH.264 エンコーダよりも並列処理を高速化することができ、高性能な演算機が必要であった部分を、安価な演算機を複数用意して同等の性能を得ることができる。従って、H.264 エンコーダを低コストに実現できる利点がある。
尚、本発明は上記の実施の形態に限定されるものではなく、種々の変形が可能である。例えば、符号化装置の構成及び符号化手法は、特に限定されるものではない。
20…H.264エンコーダ(動画像符号化装置)
21…MB演算部(演算装置)
22…エントロピー符号化部(符号化装置)
211…第1の処理部
212…第2の処理部
213…逆量子化及びIDCT部
214…デブロッキングフィルタ処理部
213及び214,213A…第3の処理部
21…MB演算部(演算装置)
22…エントロピー符号化部(符号化装置)
211…第1の処理部
212…第2の処理部
213…逆量子化及びIDCT部
214…デブロッキングフィルタ処理部
213及び214,213A…第3の処理部
Claims (4)
- 複数の演算部を備え、入力画像データを、画面を構成する所定数のマクロブロックそれぞれに対応したデータごとに信号処理する際に、デブロッキングフィルタ処理を前記所定数のマクロブロックのうちの複数のマクロブロックに対して並列的に実行するための演算装置であって、
前記入力画像データを入力し、動き予測、イントラ予測及び予測誤差生成を行い、予測誤差画像データを生成する第1の処理部と、
前記予測誤差画像データを入力し、離散コサイン変換及び量子化を行い、マクロブロックごとに、量子化値及び量子化スケールを生成する第2の処理部と、
前記量子化値及び量子化スケールを入力し、逆量子化及び逆離散コサイン変換を行い、その結果復元された予測誤差画像データをデブロッキングフィルタ処理してブロック歪みを除去し、予測画像を生成して前記第1の処理部へ供給する第3の処理部と、
前記第2の処理部と前記第3の処理部との間に設けられて、前記第2の処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックとその直前のマクロブロックとで量子化スケールが同じときには、前記直前のマクロブロックの量子化スケールを強制的に変更する量子化スケール変更部と、
を備えたことを特徴とする演算装置。 - 前記量子化スケール変更部は、前記第2の処理部から出力されるデブロッキングフィルタ処理予定の次のマクロブロックの直前のマクロブロックの量子化値が0、又は前記次のマクロブロックとその直前のマクロブロックにおける2つの量子化スケール間の差分が0のときに量子化値≠0となる量子化値、又は量子化スケール間の差分≠0となる差分値を直前のマクロブロックに付加するものであることを特徴とする請求項1に記載の演算装置。
- 前記量子化スケール変更部は、画面の縦×横に所定数のマクロブロックが配置され、横方向の各行の最終のマクロブロックについて、前記第2の処理部から出力される量子化値、が0でない量子化値、又は量子化スケールの差分が0でない差分値を保証することを特徴とする請求項1又は2に記載の演算装置。
- 請求項1乃至3のいずれか1つに記載の演算装置と、
この演算装置の前記第2の処理部からの量子化値をエントロピー符号化する符号化装置と、
を具備したことを特徴とする動画像符号化装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008314632A JP2010141513A (ja) | 2008-12-10 | 2008-12-10 | 演算装置及び動画像符号化装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008314632A JP2010141513A (ja) | 2008-12-10 | 2008-12-10 | 演算装置及び動画像符号化装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010141513A true JP2010141513A (ja) | 2010-06-24 |
Family
ID=42351261
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008314632A Pending JP2010141513A (ja) | 2008-12-10 | 2008-12-10 | 演算装置及び動画像符号化装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2010141513A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPWO2012035730A1 (ja) * | 2010-09-16 | 2014-01-20 | パナソニック株式会社 | 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置 |
| JP2016208532A (ja) * | 2010-12-07 | 2016-12-08 | ソニー株式会社 | 画像処理装置、画像処理方法、プログラム及び記録媒体 |
| JP2016208533A (ja) * | 2010-12-07 | 2016-12-08 | ソニー株式会社 | 画像処理装置、画像処理方法、プログラム及び記録媒体 |
| KR20210080931A (ko) | 2019-12-23 | 2021-07-01 | 현대오트론 주식회사 | Fpga 기반 미디안 필터를 이용한 이미지 프로세싱 시스템 및 방법 |
-
2008
- 2008-12-10 JP JP2008314632A patent/JP2010141513A/ja active Pending
Cited By (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPWO2012035730A1 (ja) * | 2010-09-16 | 2014-01-20 | パナソニック株式会社 | 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置 |
| US9185406B2 (en) | 2010-09-16 | 2015-11-10 | Panasonic Intellectual Property Management Co., Ltd. | Image decoding device, image coding device, methods thereof, programs thereof, integrated circuits thereof, and transcoding device |
| JP2016208532A (ja) * | 2010-12-07 | 2016-12-08 | ソニー株式会社 | 画像処理装置、画像処理方法、プログラム及び記録媒体 |
| JP2016208533A (ja) * | 2010-12-07 | 2016-12-08 | ソニー株式会社 | 画像処理装置、画像処理方法、プログラム及び記録媒体 |
| JP2018014742A (ja) * | 2010-12-07 | 2018-01-25 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
| US10334279B2 (en) | 2010-12-07 | 2019-06-25 | Sony Corporation | Image processing device and image processing method |
| US10362318B2 (en) | 2010-12-07 | 2019-07-23 | Sony Corporation | Image processing device and image processing method that horizontal filtering on pixel blocks |
| US10582202B2 (en) | 2010-12-07 | 2020-03-03 | Sony Corporation | Image processing device and image processing method that horizontal filtering on pixel blocks |
| US10785504B2 (en) | 2010-12-07 | 2020-09-22 | Sony Corporation | Image processing device and image processing method |
| US10931955B2 (en) | 2010-12-07 | 2021-02-23 | Sony Corporation | Image processing device and image processing method that horizontal filtering on pixel blocks |
| US11381846B2 (en) | 2010-12-07 | 2022-07-05 | Sony Corporation | Image processing device and image processing method |
| KR20210080931A (ko) | 2019-12-23 | 2021-07-01 | 현대오트론 주식회사 | Fpga 기반 미디안 필터를 이용한 이미지 프로세싱 시스템 및 방법 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102043579B1 (ko) | 화상 코딩 장치, 화상을 코딩하는 방법, 화상 디코딩 장치, 화상을 디코딩하는 방법 및 컴퓨터 판독가능 매체 | |
| KR20210077799A (ko) | 부호화 장치, 부호화 방법 및 프로그램 | |
| JP7529749B2 (ja) | 画像境界処理を使用して画像を符号化および復号する装置および方法 | |
| JP5100015B2 (ja) | 画面間又は画面内符号化モードの動画像符号化方法及び装置 | |
| KR20210125095A (ko) | 화상 부호화 장치, 화상 부호화 방법 및 저장 매체 | |
| JP4939273B2 (ja) | 画像符号化装置及び画像符号化方法 | |
| JP5275454B2 (ja) | 画像復号装置 | |
| JP2007150913A (ja) | 画像符号化装置 | |
| JP6708211B2 (ja) | 動画像符号化装置、動画像符号化方法および動画像符号化プログラムを記憶する記録媒体 | |
| JP2010141513A (ja) | 演算装置及び動画像符号化装置 | |
| JP2008271127A (ja) | 符号化装置 | |
| JP5087016B2 (ja) | 符号化装置及びその制御方法、コンピュータプログラム | |
| JP7728429B2 (ja) | 画像復号装置、画像復号方法及びプログラム | |
| WO2020059341A1 (ja) | 画像復号装置、画像符号化装置、画像処理システム及びプログラム | |
| CN113906747B (zh) | 图像解码装置、图像解码方法及程序 | |
| JP2007251865A (ja) | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 | |
| CN113228652B (zh) | 图像编码装置和方法、图像解码装置和方法以及存储介质 | |
| CN116600134B (zh) | 一种适配图形引擎的并行视频压缩方法和装置 | |
| JP2007013298A (ja) | 画像符号化装置 | |
| JP2007251605A (ja) | 復号装置、復号方法、プログラムおよび記録媒体 | |
| JP4786623B2 (ja) | 動画像符号化装置および動画像復号装置 | |
| CN112740673B (zh) | 图像数据编码和解码 | |
| JP2011142699A (ja) | 画像符号化装置、画像符号化方法 | |
| JPWO2017082304A1 (ja) | 情報圧縮装置、情報圧縮方法、情報圧縮プログラム、及び、符号化装置 | |
| JP4719650B2 (ja) | 画像符号化装置 |