(57)【要約】【課題】デブロッキングフィルタの処理時間を短縮するとともに、使用メモリ量を削減する。【解決手段】デブロッキングフィルタ処理において、水平１６画素×垂直１６画素からなる入力マクロブロックを４個のサブブロックグループに分割し、分割したサブブロックグループ毎に垂直エッジ方向のフィルタ処理演算および水平エッジ方向のフィルタ処理演算を実行し、４個のサブブロックグループを連結して１個のマクロブロックに再構成する。【選択図】  図１
2012151690.tif 000002
【特許請求の範囲】
【請求項１】
外部からの入力画像データを格納する入力メモリと、
前記入力メモリからマクロブロックサイズ毎に画素データを読み出してサブブロックグループの画素データに分割し、分割した画素データを処理ステージ毎に順番に第1の中間メモリに格納するサブブロック分割部と、
サブブロックグループ毎に、前記第1の中間メモリから画素データを読み出して垂直方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第２の中間メモリに格納する垂直エッジフィルタ処理部と、
サブブロックグループ毎に、前記第２の中間メモリから画素データを読み出して水平方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第３の中間メモリに格納する水平エッジフィルタ処理部と、
前記第３の中間メモリから処理ステージ毎に順番に読み出したサブブロックグループの画素データを連結してマクロブロックの画素データに再構成して出力するサブブロック連結部と、
を具備するデブロッキングフィルタ装置。
【請求項２】
請求項１記載のデブロッキングフィルタ装置において、
前記垂直エッジフィルタ処理部と前記水平エッジフィルタ処理部とは、同じ処理ステージでそれぞれのフィルタ処理を並列実行するように構成するとともに、前記垂直エッジフィルタ処理部による処理ステージの後に前記水平エッジフィルタ処理部による処理ステージが続くようにパイプライン実行するように構成したことを特徴とするデブロッキングフィルタ装置。
【請求項３】
請求項１記載のデブロッキングフィルタ装置において、
第２の中間メモリを、２面メモリで構成し、２面メモリの一方が、垂直エッジフィルタ処理部の処理データを格納しているときは、２面メモリの他方が、格納データを読み出して水平エッジフィルタ処理部へ供給するように、交互に切り換えるように構成したことを特徴とするデブロッキングフィルタ装置。
【請求項４】
請求項１記載のデブロッキングフィルタ装置において、更に、
外部からフィルタ処理モードを決定するための符号化パラメータを入力して、フィルタ処理モードを決定するためのフィルタ制御部を備えることを特徴とするデブロッキングフィルタ装置。
【請求項５】
請求項１記載のデブロッキングフィルタ装置において、
前記マクロブロックサイズを水平１６画素×垂直１６画素とし、
前記サブブロックグループを、水平４画素×垂直４画素からなるサブブロック４個の集合で構成し、
前記サブブロック分割部は、マクロブロックを４個のサブブロックグループに分割するように構成したことを特徴とするデブロッキングフィルタ装置。
【請求項６】
デブロッキングフィルタとして、請求項１乃至５の何れか１つに記載のデブロッキングフィルタ装置を用いた動画像符号化装置。
【請求項７】
請求項６記載の動画像符号化装置において、
前記デブロッキングフィルタ装置を複数個実装して、複数マクロブロックのデブロッキングフィルタ処理を並列に実行するように構成したことを特徴とする動画像符号化装置。
【請求項８】
デブロッキングフィルタとして、請求項１乃至５の何れか１つに記載のデブロッキングフィルタ装置を用いた動画像復号化装置。
【請求項９】
請求項８記載の動画像復号化装置において、
前記デブロッキングフィルタ装置を複数個実装して、複数マクロブロックのデブロッキングフィルタ処理を並列に実行するように構成したことを特徴とする動画像復号化装置。
【請求項１０】
入力メモリからマクロブロックサイズ毎に画素データを読み出してサブブロックグループの画素データに分割し、分割した画素データを処理ステージ毎に順番に第1の中間メモリに格納するステップと、
サブブロックグループ毎に、前記第1の中間メモリから画素データを読み出して垂直方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第２の中間メモリに格納するステップと、
サブブロックグループ毎に、前記第２の中間メモリから画素データを読み出して水平方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第３の中間メモリに格納するステップと、
前記第３の中間メモリから処理ステージ毎に順番に読み出したサブブロックグループの画素データを連結してマクロブロックの画素データに再構成して出力するステップと、
からなるデブロッキングフィルタ処理方法。
【請求項１１】
請求項１０記載のデブロッキングフィルタ処理方法において、
垂直方向のサブブロック境界画素を中心とするデブロッキングフィルタ処理と、水平方向のサブブロック境界画素を中心とするデブロッキングフィルタ処理とを、同じ処理ステージで並列実行するように構成するとともに、垂直方向のサブブロック境界画素を中心とするデブロッキングフィルタ処理の処理ステージの後に水平方向のサブブロック境界画素を中心とするデブロッキングフィルタ処理の処理ステージが続くようにパイプライン実行するように構成したことを特徴とするデブロッキングフィルタ処理方法。
【請求項１２】
請求項１０記載のデブロッキングフィルタ処理方法において、
前記マクロブロックサイズを水平１６画素×垂直１６画素とし、
前記サブブロックグループを、水平４画素×垂直４画素からなるサブブロック４個の集合で構成し、
マクロブロックを４個のサブブロックグループに分割するように構成したことを特徴とするデブロッキングフィルタ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像符号化・復号化などにおいて画像を高画質化するための処理技術に関する。
【背景技術】
【０００２】
近年の動画像符号化処理は、元の画像から画質をなるべく劣化させずに高い圧縮効果を得られる技術が採用されている。例えば、動画像符号化の国際標準方式であるH.264/AVC符号化方式(以下、H.264と略す)もその一つである。H.264は、符号化処理過程での画質劣化を抑える符号化ツールが幾つか用意されている。デブロッキングフィルタもそのツールの一つである。デブロッキングフィルタは、符号化処理の過程で画像に生じるブロックノイズを低減させる目的で使用する。この結果、画質を向上させる効果と、画像の動き予測の精度向上による符号化効率向上の効果が得られる。H.264は、地上デジタル放送のワンセグ放送の映像やブルーレイ・ディスクの映像フォーマットに採用されている。
【０００３】
しかし、それぞれの符号化ツールは画質向上など大きなメリットがあるが、処理負荷や使用メモリ量が非常に大きいというデメリットがある。
特にH.264のデブロッキングフィルタは、入力した全画素が演算対象となることから処理量が膨大であり、処理遅延時間短縮の大きな障害となっている。特に画素サイズに比例して処理量も増加するため、画素サイズが大きいほど処理遅延への影響が大きく無視できない。
また、H.264のデブロッキングフィルタを含む符号化ツールをハードウエア化する際には、開発コストに大きく影響する使用メモリ量削減が必須である。
【０００４】
マクロブロックを複数領域に分割してから所定の画像処理を実行する手法として、以下の先行技術がある。
特許文献１には、マクロブロックを正方形状のＮ個のサブブロックに分割し、Ｎ個の領域毎に動きベクトル探索処理を実行する方法が公開されている。しかし、マクロブロックに対して水平・垂直方向に処理する構成でないため、デブロックフィルタ処理を実装することは不可能である。
特許文献２には、マクロブロックを4分割し、同じ構成を持つ4組のデコードブロックを用いて4並列でデコード処理を行う構成が公開されている。しかし、処理を4組並列化するため処理期間が短縮できる効果があるものの、使用メモリ量はマクロブロックを分割しない構成の時と同一である。また、マクロブロックに対して水平・垂直方向に処理する構成でないため、デブロックフィルタ処理を実装することは不可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2004-241918号公報
【特許文献２】特開平8-9389号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
H.264/AVC動画像符号化方式を用いたコーデック(符号化または復号化)装置において、一般的に扱う動画の画素サイズが大きくなるほど、コーデック処理の所要時間が長くなる課題がある。これは、コーデック処理に必要な演算回数が画素数に比例して増加するためである。この結果、画素サイズが大きくなるほど画像データを入力してからコーデック処理後の画像データ出力を得るまでの期間が長くなるため処理遅延時間が課題となる。特にH.264/AVC動画像符号化方式のデブロッキングフィルタは、入力した全画素が演算対象となることから処理量が膨大であり、処理遅延時間短縮の大きな障害となっていた。
また、H.264/AVCコーデック処理をハードウエア化する際には、開発コストに大きく影響する使用メモリ量削減が必須である。
【０００７】
本発明は、デブロッキングフィルタにおいて、データを入力してからコーデック処理後の画像データ出力を得るまでの処理時間を短縮するとともに、使用メモリ量を削減することを目的としている。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために本発明のデブロッキングフィルタ装置は、外部からの入力画像データを格納する入力メモリと、前記入力メモリからマクロブロックサイズ毎に画素データを読み出してサブブロックグループの画素データに分割し、分割した画素データを処理ステージ毎に順番に第1の中間メモリに格納するサブブロック分割部と、サブブロックグループ毎に、前記第1の中間メモリから画素データを読み出して垂直方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第２の中間メモリに格納する垂直エッジフィルタ処理部と、サブブロックグループ毎に、前記第２の中間メモリから画素データを読み出して水平方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第３の中間メモリに格納する水平エッジフィルタ処理部と、前記第３の中間メモリから処理ステージ毎に順番に読み出したサブブロックグループの画素データを連結してマクロブロックの画素データに再構成して出力するサブブロック連結部と、を具備するものである。
【０００９】
また、本発明の動画像符号化装置または動画像復号化装置は、デブロッキングフィルタとして、上記のデブロッキングフィルタ装置を用いたものである。
【００１０】
本発明のデブロッキングフィルタ処理方法は、入力メモリからマクロブロックサイズ毎に画素データを読み出してサブブロックグループの画素データに分割し、分割した画素データを処理ステージ毎に順番に第1の中間メモリに格納するステップと、サブブロックグループ毎に、前記第1の中間メモリから画素データを読み出して垂直方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第２の中間メモリに格納するステップと、サブブロックグループ毎に、前記第２の中間メモリから画素データを読み出して水平方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを第３の中間メモリに格納するステップと、前記第３の中間メモリから処理ステージ毎に順番に読み出したサブブロックグループの画素データを連結してマクロブロックの画素データに再構成して出力するステップと、からなるものである。
【発明の効果】
【００１１】
本発明によれば、デブロッキング処理において、データを入力してからコーデック処理後の画像データ出力を得るまでの処理時間を短縮することができ、コーデック処理の低遅延化に寄与する。また、デブロッキングフィルタの使用メモリ量を削減することができ、ハードウエア開発のコスト低減に寄与する。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例のデブロッキングフィルタの構成を示す図。
【図２】デブロッキングフィルタ処理を行うマクロブロックの画素位置を示す図。
【図３】サブブロックエッジに対するフィルタ処理の詳細を示す図。
【図４】デブロッキングフィルタ処理における従来の水平、垂直方向の処理の順番を示す図。
【図５】デブロッキングフィルタ処理における本発明の水平エッジ、垂直エッジの処理の順番を示す図。
【図６】本発明の実施例の水平エッジ、垂直エッジの処理を分割したグループ単位で行うための垂直・水平エッジフィルタ処理のブロック図。
【図７】処理対象マクロブロック1個辺りの垂直エッジおよび水平エッジのデブロッキングフィルタ処理タイミングを示す図。
【図８】垂直・水平エッジフィルタ処理ブロックへのサブブロックグループ画素データの入力順序と出力順序を示す図。
【図９】本発明のデブロッキングフィルタを組み込んだ装置形態の一例を示す図。
【図１０】マクロブロックの一番左側垂直エッジおよび一番上側水平エッジのデブロッキンングフィルタ処理方法を示す図。
【図１１】本発明の実施例の中間メモリのメモリ容量を示す図。
【図１２】本発明の実施例のデブロッキングフィルタの全体処理フロー図。
【図１３】垂直エッジフィルタ処理ステージの処理フロー図。
【図１４】本発明の実施例の水平エッジフィルタ処理ステージの処理フロー図。
【図１５】本発明の実施例のデブロッキングフィルタを適用したH.264/AVC符号化装置のブロック図の一例を示す図。
【図１６】本発明の実施例のデブロッキングフィルタを適用したH.264/AVC復号化装置のブロック図の一例を示す図。
【発明を実施するための形態】
【００１３】
図1は、本発明の実施例のデブロッキングフィルタ100の構成を示す図である。
この実施例のデブロッキングフィルタ100は、外部から非圧縮の入力画像データを格納する入力メモリ105と、入力メモリ105からマクロブロックサイズ（水平１６画素×垂直16画素)毎に読み出して4個のサブブロックグループの画素領域に分割し、分割した画素データを処理ステージ毎に順番に中間メモリ1(106)に格納するサブブロック分割部103と、中間メモリ1(106)から画素データを読み出して後述する所定の手順で垂直方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを中間メモリ2(107)に格納する垂直エッジフィルタ処理部101と、中間メモリ2(107)から画素データを読み出して後述する所定の手順で水平方向のサブブロック境界画素を中心にデブロッキングフィルタ処理を行い、処理後の画素データを中間メモリ3(108)に格納する水平エッジフィルタ処理部102と、中間メモリ3(108)から処理ステージ毎に順番に読み出したサブブロックグループ4個分の画素データを連結して1個のマクロブロックの画素データに再構成した後に出力メモリ109に格納し、出力画像データとして外部へ出力するサブブロック連結部104と、外部からフィルタ処理モードを決定するための符号化パラメータを入力して、フィルタ処理モードを決定するためのフィルタ制御部110で構成する。
マクロブロックの画素サイズは水平16画素×垂直16画素、サブブロックの画素サイズは水平4画素×垂直4画素である。1個のマクロブロックは16個のサブブロック集合で構成する。サブブロックグループの画素サイズは、水平16画素×垂直4画素であり、4個のサブブロック集合で構成する。
【００１４】
垂直エッジフィルタ処理部101は、前段の中間メモリ1(106)から画素データを読み出す時に、処理対象マクロブロックの左隣マクロブロックのマクロブロック右側境界に接している水平４画素×垂直16画素分の画素データのうち、処理対象サブブロックグループに接している水平４画素×垂直4画素分の画素データを同時に読み出してフィルタ処理を行う。
【００１５】
水平エッジフィルタ処理部102は、中間メモリ2(107)から読み出した画素データが、処理対象マクロブロックから4個に分割したうちのマクロブロック上側境界に接しているサブブロックグループに該当する時は、処理対象マクロブロックの上隣マクロブロックのマクロブロック下側境界に接している水平16画素×垂直4画素分の画素データを同時に読み出してフィルタ処理を行う。中間メモリ2(107)から読み出した画素データが、マクロブロック上側境界に接しているサブブロックグループに該当しない場合は、中間メモリ2(107)に保持している１つ前の処理ステージで垂直エッジフィルタ処理部101が出力した画素データを同時に読み出してフィルタ処理を行う。
【００１６】
フィルタ処理モードは、デブロッキングフィルタ処理を実行する際に、フィルタ演算を行う画素位置、フィルタ特性の調整を指示する情報である。
【００１７】
制御部110がフィルタ処理モードを決定するために外部から入力する符号化パラメータは、処理対象マクロブロックがイントラ属性またはインター属性であるかを示す情報、処理対象マクロブロックがDCT係数を使用して符号化されているかを示す情報、処理対象マクロブロックの動きベクトル値を示す情報、処理対象マクロブロックを符号化した際の参照ピクチャ番号、参照ピクチャ枚数を示す情報等がある。これらフィルタ処理モードを決定するために参照する符号化パラメータおよびフィルタ処理モードの決定する手順の詳細は、全てH.264/AVC国際標準規格で定義されているものであり、本実施例の説明では省略する。
【００１８】
次に、H.264/AVC国際標準規格に定義されている、デブロッキングフィルタ処理の処理手順について図2、図3および図4で説明する。
【００１９】
図2は、デブロッキングフィルタ処理を行うマクロブロックの画素位置を示す図である。
先に説明した通り、16個のサブブロック201で1個のマクロブロック200を構成する。デブロッキングフィルタ処理では、マクロブロック200を構成する水平16画素×垂直16画素のうち、16個のサブブロック境界に該当する4箇所の垂直方向サブブロックエッジ(以下、垂直エッジと称する)であるエッジ206、エッジ207、エッジ208、エッジ209と、4箇所の水平方向サブブロックエッジ(以下、水平エッジと称する)であるエッジ202、エッジ203、エッジ204、エッジ205に対して、各エッジ画素を中心とする所定タップ係数を用いたFIR(Finite Impulse Response、有限インパルス応答)フィルタ演算を行う。H.264/AVC国際標準規格では、先に垂直エッジのフィルタ処理を行い、続いて水平エッジのフィルタ処理を行うことを定義している。
ところで、別途決定するフィルタ処理モードに応じて、フィルタ処理の演算対象外となる垂直エッジおよび水平エッジが生じる場合があるが、以後の本実施例の説明は、垂直方向および水平方向の全サブブロックエッジにフィルタ処理する場合の条件で説明する。尚、フィルタ処理の演算対象外となるサブブロックエッジについては、該当エッジのフィルタ処理をスキップするだけで良いため、本発明の処理方法以外に特別な手段を必要としない。
【００２０】
図3は、サブブロックエッジに対するフィルタ処理の詳細を示す図である。
サブブロックエッジのフィルタ処理は、垂直エッジが処理対象の時は水平方向に隣接する2個のサブブロックを参照し、水平エッジが処理対象の時は垂直方向に隣接する2個のサブブロックを参照する。例えば、図3(a)に示したように、垂直エッジ306のフィルタ処理では、垂直エッジ306に接しているサブブロックP(301)とサブブロックQ(302)を参照する。一方、水平エッジ309のフィルタ処理では、水平エッジ309に接しているサブブロックP(301)とサブブロックR(303)を参照する。
隣接する2個のサブブロックのフィルタ処理は、FIRフィルタ演算(畳み込み)を4回実施する。1回当たりのFIRフィルタ演算では、8画素を入力して、8画素の出力を得る。
【００２１】
図3(b)に垂直エッジ306に対するフィルタ処理を示す。サブブロックP(301)の画素p0、p1、p2、p3の4画素304と、サブブロックQ(302)の画素q0、q1、q2、q3の4画素305の合計8画素を入力し、FIRフィルタ演算結果として、サブブロックＰ（３０１）は画素ｐ０’、ｐ１’、ｐ２’、ｐ３’の４画素３１０を、サブブロックQ(302)は画素ｑ０’、ｑ１’、ｑ２’、ｑ３’の4画素311を得る。これを垂直方向に4回実行する。
【００２２】
図3(c)に水平エッジ309に対するフィルタ処理を示す。サブブロックP(301)の画素p0、p1、p2、p3の4画素307と、サブブロックR(303)の画素r0、r1、r2、r3の4画素308の合計8画素を入力し、FIRフィルタ演算結果として、サブブロックＰ（３０１）は画素ｐ０’、ｐ１’、ｐ２’、ｐ３’の4画素312を、サブブロックR(303)は画素ｒ０’、ｒ１’、ｒ２’、ｒ３’の4画素313を得る。これを水平方向に4回実行する。
【００２３】
図4は、デブロッキングフィルタ処理における従来の水平、垂直方向の処理の順番を示す図である。
H.264/AVC国際標準規格では、先に垂直エッジのフィルタ処理を行い、続いて水平エッジのフィルタ処理を行うことを定義している。即ち、まず先に図4(a)の4箇所全ての垂直エッジ(401、402、403、404)のフィルタ処理を行い、次に図4(b)の4箇所全ての水平エッジ(405、406、407、408)のフィルタ処理を行うものである。この手順では、中間メモリ1、中間メモリ2および中間メモリ3がそれぞれ1個のマクロブロック画素サイズと同じメモリ容量を持つ必要があるため、マクロブロック×３個分（水平１６画素×垂直１６画素×３）と、フィルタ処理に参照する左側の隣接マクロブロック(水平4画素×垂直16画素)と、上側の隣接マクロブロック(水平16画素×垂直4画素)の参照画素分とを足し合わせた中間メモリ容量(輝度プレーンのみで896画素分)が必要となる。
尚、水平エッジのフィルタ処理を先に行い、垂直エッジのフィルタ処理を後に行った場合、H.264/AVC国際標準規格の処理手順で得た出力画素値と得られる結果が異なるため、同規格が保障する画像品質から外れることになるため、通常は逆方向の処理手順を実施しない。
【００２４】
図5は、デブロッキングフィルタ処理における本発明の水平エッジ、垂直エッジの処理の順番を示す図である。
まず、入力メモリ105から読み出した処理対象マクロブロックをサブブロック分割部103で4個のサブブロックグループの画素領域に分割する。4個のサブブロックグループとは、番号1、2、3、4の4個のサブブロックで構成するサブブロックグループa(501)、番号5、6、7、8の4個のサブブロックで構成するサブブロックグループb(502)、番号9、10、11、12の4個のサブブロックで構成するサブブロックグループc(503)、番号13、14、15、16の4個のサブブロックで構成するサブブロックグループd(504)を示す。
【００２５】
本発明のデブロッキングフィルタ処理の手順は、サブブロックグループ毎に垂直エッジのフィルタ処理と水平エッジのフィルタ処理を分割したグループ単位で行うようにする。サブブロックグループa(501)に含まれている4箇所の垂直エッジ(401、402、403、404)に対するフィルタ処理を行い、次に同サブブロックグループa(501)に含まれている4箇所の水平エッジ(405)に対するフィルタ処理を行う。残りのサブブロックグループb(502)、サブブロックグループc(503)、サブブロックグループd(504)についても同様に、それぞれのサブブロックグループに含まれている4箇所の垂直エッジに対するフィルタ処理を行い、その次にそれぞれのサブブロックグループに含まれている4箇所の水平エッジに対するフィルタ処理を行うようにする。
4個のサブブロックグループの垂直エッジ、水平エッジのフィルタ演算が全て完了した時点で、サブブロック連結部104により、1個のマクロブロックに再構成して出力メモリ109に格納する。
【００２６】
図6は、本発明の水平エッジ、垂直エッジの処理を分割したグループ単位で行うための垂直・水平エッジフィルタ処理のブロック図である。
中間メモリ1(106)からサブブロックグループnの画素データを処理ステージ毎に順次読み出し、垂直エッジフィルタ処理部101でサブブロックグループに含まれている4箇所の垂直エッジに対するフィルタ処理を行い、その結果の画素データを中間メモリ2(107)に格納する。水平エッジフィルタ処理部102は、中間メモリ2(107)からサブブロックグループの画素データを読み出してサブブロックグループに含まれている4箇所の水平エッジに対するフィルタ処理を行い、その結果の画素データを中間メモリ3(108)に格納する。
【００２７】
中間メモリ2(107)は、垂直エッジフィルタ処理部101が画素データを書き込むタイミングと、水平エッジフィルタ処理部102が画素データ読み出すタイミングが重なっても支障をきたさないようにするため、2面メモリで構成する(詳細は図11で説明)。中間メモリ2(107)を2面メモリにすることで、垂直エッジフィルタ処理部101と水平エッジフィルタ処理部102は並列実行が可能となる。
【００２８】
ここで、垂直エッジフィルタ処理部101は、前段の中間メモリ1(106)から画素データを読み出す時に、処理対象マクロブロックの左隣マクロブロックのマクロブロック右側境界に接している水平４画素×垂直16画素分の画素データのうち、処理対象サブブロックグループに接している水平４画素×垂直4画素分の画素データ(601)を同時に読み出してフィルタ処理を行う。
【００２９】
さらに、水平エッジフィルタ処理部102は、中間メモリ2(107)から読み出した画素データが、処理対象マクロブロックから4個に分割したうちのマクロブロック上側境界に接しているサブブロックグループに該当する時は、処理対象マクロブロックの上隣マクロブロックのマクロブロック下側境界に接している水平16画素×垂直4画素分の画素データ(602)を同時に読み出してフィルタ処理を行う。中間メモリ2(107)から読み出した画素データが、マクロブロック上側境界に接しているサブブロックグループに該当しない場合は、別途保持した１つ前の処理ステージで垂直エッジフィルタ処理部101が出力した画素データを同時に読み出してフィルタ処理を行う。
【００３０】
図7は、処理対象マクロブロック1個辺りの垂直エッジおよび水平エッジのデブロッキングフィルタ処理タイミングを示す図である。
【００３１】
ここで、1個のサブブロックグループのフィルタ処理に必要な期間を1ステージとする。図中の記号Vは、1個のサブブロックグループに含まれる4箇所の垂直エッジに対する処理を示し、記号Hは、1個のサブブロックグループに含まれる4箇所の水平エッジに対する処理を示している。
【００３２】
図7(a)は、従来方法のデブロッキングフィルタ処理タイミングを示す図である。従来方法は、全ての垂直エッジのフィルタ処理に4処理ステージ、全ての水平エッジのフィルタ処理に4処理ステージの合計8処理ステージが必要である。従来方法で垂直エッジと水平エッジのフィルタ処理がそれぞれ独立しているのは、垂直エッジのフィルタ処理が垂直方向の全16画素を纏めてフィルタ処理する方式であるため、全ての垂直エッジのフィルタ処理が完了しないと、水平エッジのフィルタ処理を開始できないためである。従って、従来方法は、いずれの処理ステージのフィルタ処理も並列実行は不可能である。具体的には処理ステージ毎にVa(701)(サブブロックグループaの垂直エッジのフィルタ処理、以下同様)、Vb(702)、Vc(703)、Vd(704)の順番で垂直エッジのフィルタ処理を行い、続いてHa(705)(サブブロックグループaの水平エッジのフィルタ処理、以下同様)、Hb(706)、Hc(707)、Hd(708)の順番で水平エッジのフィルタ処理を行う。
【００３３】
図7(b)は、本発明のデブロッキングフィルタ処理タイミングを示す図である。
前述の通り、垂直エッジフィルタ処理部101と水平エッジフィルタ処理部102は並列実行が可能な構成であるため、垂直エッジのフィルタ処理と水平エッジのフィルタ処理は並列実行が可能である。このため、全体としては、サブブロックグループのフィルタ処理単位でパイプライン実行が可能である。具体的には、処理ステージ1はVa(709)を実行する。処理ステージ2は処理ステージ1のVaの出力を受けてHa(710)およびVb(711)を実行する。処理ステージ3は処理ステージ2のVbの出力を受けてHb(712)およびVc(713)を実行する。処理ステージ4は処理ステージ3のVcの出力を受けてHc(714)およびVd(715)を実行する。処理ステージ5は処理ステージ4のVdの出力を受けてHd(716)を実行する。
尚、厳密には処理ステージ1はVaと同時に1個前のマクロブロックのHdを実行し、処理ステージ5はHdと同時に次のマクロブロックのVaを実行するようにして、いずれの処理ステージも常に垂直エッジと水平エッジのフィルタ処理を同時に実行する。
【００３４】
この結果、本発明のデブロッキングフィルタ処理は合計5処理ステージに短縮することができ、従来方法のデブロッキングフィルタ処理と比べて3処理ステージ分、処理期間を短縮できる。即ち、デブロッキングフィルタ全体の処理時間を5/8化に短縮することに等しく、H.264符号化処理および復号化処理の低遅延化に寄与する。
【００３５】
図8は、垂直・水平エッジフィルタ処理ブロック600へのサブブロックグループ画素データの入力順序と出力順序を示す図である。
処理対象マクロブロック800の画素データは、サブブロック分割部103で4個のサブブロックグループの画素領域に分割し、垂直エッジフィルタ処理の処理ステージ毎にサブブロックグループａ（８０１）、サブブロックグループb(802)、サブブロックグループc(803)、サブブロックグループd(804)の順番で中間メモリ1(106)を介して垂直・水平エッジフィルタ処理ブロック600へ入力する
一方、垂直・水平エッジフィルタ処理ブロック600からは、水平エッジフィルタ処理の処理ステージ毎にサブブロックグループａ’（８０６）、サブブロックグループｂ’（８０７）、サブブロックグループｃ’（８０８）、サブブロックグループｄ’（８０９）の順番で中間メモリ3(108)を介して出力し、サブブロック連結部104で１個のマクロブロック805の画素データに再構成する。
【００３６】
図9は、本発明のデブロッキングフィルタ100を組み込んだ装置形態の一例を示す図である。
H.264/AVC動画像符号化方式を用いたコーデック(符号化または復号化)装置に本発明のデブロッキングフィルタ100を実装する場合、最低1個のデブロッキングフィルタ100があれば目的のコーデック動作が可能である。しかし、画素サイズが大きくなるほど画像データを入力してからコーデック処理後の画像データ出力を得るまでの期間が長くなるため処理遅延時間が問題となる。そこで、同図に示すようにコーデック装置にデブロッキングフィルタ100を複数個実装して、複数マクロブロックのデブロッキングフィルタ処理を並列に実行できるようにする。
【００３７】
具体的には、N個の本発明のデブロッキングフィルタ(902、903、904)と、少なくとも1枚の画像データを格納するフレームメモリ1(900)と、フレームメモリ1(900)からN個のマクロブロックを読み出してN個のデブロッキングフィルタへ別々に入力するマクロブロック入力制御部901と、デブロッキングフィルタ100が出力する別々のマクロブロックを受け取り、再び1枚の画像データとなるようにフレームメモリ2へ出力するマクロブロック出力制御部905と、少なくともデブロッキングフィルタ処理後の1枚の画像データを格納するフレームメモリ2(906)とで構成する。
【００３８】
上記の構成により、複数個のマクロブロックのデブロッキングフィルタ処理の並列実行が可能となり、画像データ1枚辺りのデブロッキングフィルタ処理時間を短縮することが可能となる。即ち、コーデック装置の処理遅延短縮の効果が得られる。
【００３９】
図10は、マクロブロックの一番左側垂直エッジおよび一番上側水平エッジのデブロッキンングフィルタ処理方法を示す図である。
処理対象マクロブロックの一番左側垂直エッジ(16画素)と、一番上側水平エッジ(16画素)に対してデブロックフィルタ処理を行う時、それぞれ隣接マクロブロックの画素データを入力してからフィルタ演算を実行する。
【００４０】
図10(a)は、処理対象マクロブロックの一番左側垂直エッジのフィルタ処理を行う時の左隣マクロブロックから画素データを読み出す位置関係を示している。垂直エッジフィルタ処理部101は、中間メモリ1(106)から処理対象マクロブロックN(1000)の画素データを読み出す時に、同時に左隣マクロブロックM(1001)からマクロブロック境界1002に接している水平４画素×垂直16画素分の画素データ(1003)を入力する。この時、垂直エッジフィルタ処理部101は、１個のマクロブロックを4個のサブブロックグループ毎に処理するため、参照する左隣マクロブロック1001から処理対象サブブロックグループに接している水平４画素×垂直4画素を読み出して中間メモリ1(106)に格納し、フィルタ処理を行う。
【００４１】
図10(b)は、処理対象マクロブロックの一番上側垂直エッジのフィルタ処理を行う時の上隣マクロブロックから画素データを読み出す位置関係を示している。水平エッジフィルタ処理部102は、中間メモリ2(107)から読み出した画素データがマクロブロック境界1008に接しているサブブロックグループ1006に該当する時は、同時に上隣マクロブロック1005のマクロブロック境界1008に接している水平16画素×垂直4画素分の画素データ(1007)を読み出して中間メモリ2(107)に格納し、フィルタ処理を行う。中間メモリ2(107)から読み出した画素データが、マクロブロック上側境界に接していないサブブロックグループに該当する場合は、同時に中間メモリ2(107)に保持している１つ前の処理ステージで垂直エッジフィルタ処理部101が出力した画素データを読み出してフィルタ処理を行う
中間メモリ2(107)は、マクロブロックN(1004)の水平4画素×垂直16画素分の画素データと、上隣マクロブロックL(1005)の水平4画素×垂直16画素分の画素データを同時に保持できる容量のメモリを2個持つ。
【００４２】
図11は、中間メモリのメモリ容量を示す図である。
中間メモリ1(106)は、1個のサブブロックグループの画素データを格納する水平16画素×垂直4画素と、左隣マクロブロックの水平4画素×垂直4画素を同時に保持できるメモリ容量として合計80画素分(水平20画素×垂直4画素)を持つ。
【００４３】
中間メモリ2(107)は、処理対象マクロブロックの水平16画素×垂直4画素分の画素データと、上隣マクロブロックL(1005)の水平4画素×垂直16画素分の画素データまたは１つ前の処理ステージで得たサブブロックグループの画素データを同時に保持できるメモリを2個持つ。中間メモリ2(107) のメモリ容量は合計256画素分(水平16画素×垂直8画素×2)である。中間メモリ2(107)で同容量のメモリを2個持つ理由は、図7で示したように垂直エッジのフィルタ処理と水平エッジのフィルタ処理を並列実行するためである。垂直エッジフィルタ処理部101から中間メモリ2(107)への画素データ書き込み動作と、中間メモリ2(107)から水平エッジフィルタ処理部102への画素データ読み出し動作が同時に発生できるようにするため、中間メモリ2(107)を中間メモリ2a(1100)と中間メモリ2b(1101)の2個のメモリで構成する。それぞれのメモリ容量は、水平16画素×垂直8画素分である。垂直エッジフィルタ処理部102が中間メモリ2a(1100)に書き込んでいる時は、水平エッジフィルタ処理部102は中間メモリ2b(1101)から読み出しを行う。垂直エッジフィルタ処理部102が中間メモリ2b(1101)に書き込んでいる時は、水平エッジフィルタ処理部102は中間メモリ2a(1100)から読み出しを行う。中間メモリ2a(1100)と中間メモリ2b(1101)への画素データの書き込みと読み出しは、お互いが重ならないように処理ステージ毎に交互に切換えを行う。
【００４４】
中間メモリ3(108)は、1個のサブブロックグループの画素データを格納する水平4画素×垂直16画素分のメモリ容量として合計64画素分を持つ。従って、本発明のデブロックフィルタの合計使用メモリ量は400画素分である(入力メモリ105と出力メモリ109は除く)。
【００４５】
一方、従来方法のデブロッキングフィルタは、中間メモリ1と中間メモリ2と中間メモリ3にそれぞれ水平16画素×垂直16画素分のメモリ容量を確保する必要がある。また、左隣マクロブロックから入力する画素データ(水平4画素×16画素)と、さらに上隣マクロブロックから入力する画素データ(水平16画素×4画素)の保存するためのメモリを含めると、合計使用メモリ量は896画素分となる。即ち、従来方法のデブロッキングフィルタと比べて本発明のデブロッキングフィルタの使用メモリ量を約1/2に削減できる。
【００４６】
図12は、本発明の実施例のデブロッキングフィルタ100の全体処理フロー図である。
まず初めに、画素データのマクロブロック入力が終了したか否かを判定し(ステップ1200)、終了していなければ1個のマクロブロック分の画素データを入力して入力メモリ105に格納する(ステップ1201)。次に、サブブロック分割部103が入力メモリ105から1マクロブロック分の画素データを読み出して4個のサブブロックグループに分割し、サブブロックグループの画素データを順番に垂直エッジフィルタ処理ステージに中間メモリ1(106)を介して転送する(ステップ1202)。垂直エッジフィルタ処理ステージは、サブブロックグループの画素データに対して垂直エッジのフィルタ処理を行う(ステップ1203)。垂直エッジフィルタ処理ステージと水平エッジフィルタ処理ステージは並列に動作する(ステップ1204)。水平エッジフィルタ処理ステージは、垂直エッジフィルタ処理ステージが出力したサブブロックグループの画素データに対して水平エッジのフィルタ処理を行う。垂直エッジフィルタ処理ステージから水平エッジフィルタ処理ステージへの画素データは中間メモリ2(107)を介して転送する(ステップ1205)。水平エッジフィルタ処理ステージからサブブロック連結部104が中間メモリ3(108)を介して4個のサブブロックグループの画素データを受け取り(ステップ1206)、1個のマクロブロック分の画素データに連結して出力メモリ109に格納する(ステップ1207)。
【００４７】
なお、図12において、ステップ1202から垂直エッジフィルタ処理ステージ(S1203)と水平エッジフィルタ処理ステージ(S1204)の両方に矢印を記載し、また、垂直エッジフィルタ処理ステージ(S1203)と水平エッジフィルタ処理ステージ(S1204)の両方からステップS1206へ矢印を記載しているのは、垂直エッジフィルタ処理ステージと水平エッジフィルタ処理ステージとが並列に動作することを示すものである。
【００４８】
図13は、本発明の実施例の垂直エッジフィルタ処理ステージの処理フロー図である。
まず、垂直エッジフィルタ処理ステージは、サブブロック分割部103が出力する4個のサブブロックグループの画素データを4回の処理ステージ毎に分けて中間メモリ1(106)を介して受け取る。サブブロックグループの画素データの受け取り順序は、サブブロックグループa、同b、同c、同dの順番である(ステップ1300)。次に、中間メモリ1(106)から1個のサブブロックグループの画素データを読み出し(ステップ1301)、垂直エッジのデブロッキングフィルタ処理を実行する(ステップ1302)。フィルタ処理を行ったサブブロックグループがサブブロックグループaまたは同cか否かを判定し(ステップ1303)、サブブロックグループaまたは同cである場合は処理結果の画素データを中間メモリ2a(1100)に格納する(ステップ1304)。サブブロックグループbまたは同dである場合は処理結果の画素データを中間メモリ2b(1101)に格納する(ステップ1305)。最後に、垂直エッジのデブロッキングフィルタ処理がサブブロックグループa、同b、同c、同dの順番で一巡したか否かを判定し、一巡していない場合はステップ1300に戻る。一巡した場合は、同フローを終了する。
同フローのうち、ステップ1301からステップ1304またはステップ1305の処理期間が1個の処理ステージ期間に相当する。また、ステップ1300からステップ1306の処理期間が4個の処理ステージ期間に相当する。
【００４９】
図14は、本発明の実施例の水平エッジフィルタ処理ステージの処理フロー図である。
まず、現在の処理ステージが全体フロー動作を開始してから１番最初の処理ステージであるか否かを判定する(ステップ1400)。現在の処理ステージが１番最初の処理ステージである場合は1個の処理ステージ期間のウエイト(何も処理しない期間)を挿入する。ウエイトを挿入する理由は、１番最初の処理ステージは、垂直エッジフィルタ処理部101から中間メモリ2(107) に有効な画素データが書き込まれていないためである。2番目の処理ステージ以降から有効な画素データが得られるため、１番最初の処理ステージはウエイトを挿入して無効処理を回避する。水平エッジフィルタ処理ステージは、垂直エッジフィルタ処理ステージが出力する4個のサブブロックグループの画素データを4回の処理ステージ毎に分けて中間メモリ2(107)を介して受け取る。サブブロックグループの画素データの受け取り順序は、サブブロックグループa、同b、同c、同dの順番である(ステップ1402)。次に、現在の処理対象サブブロックグループがサブブロックグループaまたは同cか否かを判定し(ステップ1403)、サブブロックグループaまたは同cである場合は画素データを中間メモリ2a(1100)から読み出す(ステップ1404)。サブブロックグループbまたは同dである場合は画素データを中間メモリ2b(1101) から読み出す(ステップ1405)。読み出したサブブロックグループの画素データに対してデブロッキングフィルタ処理を実行し(ステップ1406)、処理結果の画素データを中間メモリ3(108)へ格納する(ステップ1407)。
最後に、水平エッジのデブロッキングフィルタ処理がサブブロックグループa、同b、同c、同dの順番で一巡したか否かを判定し、一巡していない場合はステップ1402に戻る。一巡した場合は、同フローを終了する。
同フローのうち、ステップ1403からステップ1407の処理期間が1個の処理ステージ期間に相当する。また、ステップ1402からステップ1408の処理期間が4個の処理ステージ期間に相当する。
【００５０】
図15は、本発明のデブロッキングフィルタ100を適用したH.264/AVC符号化装置のブロック図の一例である。
【００５１】
H.264/AVC符号化とは、符号化対象の画像フレームと過去に符号化した画像フレームを比較することで画像の動きを推定して予測信号を作成し、符号化対象の画像から予測信号を引き算した信号(予測誤差)をDCTおよび量子化した後、可変長符号化することで、入力画像データを圧縮して符号化ビットストリームに圧縮変換する技術である。予測信号を作成する過程で過去に符号化した画像フレームを逆DCTおよび逆量子化を経て元の画像データに一旦戻す処理を行うが、この時にマクロブロック単位で符号化処理を行うことに起因して ブロックノイズ(正方形状の画像ノイズ)が発生する。ブロックノイズは自然画像ではないため予測信号に大きな誤差が生じる原因となる。デブロッキングフィルタは、ブロックノイズを低減する目的で予測信号の作成過程に挿入する。具体的には、過去に符号化した画像フレームを戻す工程の逆DCTの後段に挿入する。
【００５２】
H.264/AVC符号化装置は、DCT(Discrete Cosine Transform、離散コサイン変換)部1500、量子化部1501、逆量子化部1502、逆DCT部1503、動き補償部1505、動きベクトル検出部1506、可変長符号化部1507および本発明のデブロッキングフィルタ1504(100)で構成する。DCT部(1500)は、時系列に並んだ画素信号の列を水平周波数成分および垂直周波数成分を表現する信号列に変換する処理を行う。量子化部1501は、入力画像の値と動き補償部1505で求めた予測画像の予測値を差し引くことで求めた予測誤差値を幾つかの代表値に対応づけする処理を行う。逆量子化部1502は、幾つかの代表値に対応づけされた値を元の予測誤差値に戻す処理を行う。即ち、量子化部1501と逆の処理を行う。逆DCT部1503は、水平周波数成分および垂直周波数成分を表現する信号列を時系列に並んだ画素信号の列に変換する処理を行う。即ち、DCT部(1500)と逆の処理を行う。動きベクトル検出部1506は、連続する画像フレーム間で画像がどの方向にどれ位動いたかを動きベクトル値として所定の画素単位で検出する処理を行う。動き補償部1505は、動きベクトル検出部1506で求めた動きベクトルから画像が移動した後の予測画像を作成する処理を行う。可変長符号化部1507は、量子化部1501が出力する量子化値および動きベクトル検出部1506が出力する動きベクトル値について、出現頻度の高い値には短い代表値(符号)を割り振り、出現頻度の低い値には長い代表値(符号)を割り振るようにして平均的な符号長を短くする処理を行う。デブロッキングフィルタ1504(100)は、ブロックノイズを低減する目的で予測信号を作成する過程で実行する本発明のデブロッキングフィルタ100である。
【００５３】
図16は、本発明の実施例のデブロッキングフィルタ100を適用したH.264/AVC復号化装置のブロック図の一例である。
【００５４】
H.264/AVC復号化とは、H.264/AVC符号化で圧縮した符号化ビットストリームを逆量子化と逆DCTにより復元した予測誤差画像と、過去に復元した画像とを加算することで元の画像データに復元する技術である。
【００５５】
H.264/AVC復号化装置は、可変長復号化部1600と、逆量子化部1601と、逆DCT部1602と、動き補償部1604と、デブロッキングフィルタ部1603(100)で構成する。可変長復号化部1600は、量子化値および動きベクトル値の出現頻度に応じて割り振られた代表値(符号)を元の量子化値および動きベクトル値に戻す処理を行う。逆量子化部1601は、幾つかの代表値に対応づけされた値を元の予測誤差値に戻す処理を行う。逆DCT部1602は、水平周波数成分および垂直周波数成分を表現する信号列を時系列に並んだ画素信号の列に変換する処理を行う。動き補償部1604は、符号化装置から送られた動きベクトルから画像が移動した後の予測画像を作成する処理を行う。デブロッキングフィルタ1603(100)は、ブロックノイズを低減する目的で予測画像を作成する過程で実行する本発明のデブロッキングフィルタ100である。H.264/AVC復号化装置が出力する復号後の画像データは、デブロッキングフィルタ処理後の画像である。
【００５６】
本発明のデブロッキングフィルタ100の動作は、H.264/AVC動画像符号化方式に定義されているフィルタ処理手順に限定されるものではない。入力されたマクロブロック画像データに対して垂直方向および水平方向の処理を伴うその他の画像処理にも適用が可能である。
【符号の説明】
【００５７】
１００…デブロッキングフィルタ、１０１…垂直エッジフィルタ処理部、１０２…水平エッジフィルタ処理部、１０３…サブブロック分割部、１０４…サブブロック連結部、１０５…入力メモリ、１０６…中間メモリ１、１０７…中間メモリ２、１０８…中間メモリ３、１０９…出力メモリ、１１０…制御部、
１５００…ＤＣＴ部、１５０１…量子化部、１５０２…逆量子化部、１５０３…逆ＤＣＴ部、１５０４…デブロッキングフィルタ、１５０５…動き補償部、１５０６…動きベクトル検出部、１５０７…可変長符号化部、
１６００…可変長復号化部、１６０１…逆量子化部、1602逆DCT部、１６０３…デブロッキングフィルタ、１６０４…動き補償部。
【図１】
2012151690.tif 000003
【図２】
2012151690.tif 000004
【図３】
2012151690.tif 000005
【図４】
2012151690.tif 000006
【図５】
2012151690.tif 000007
【図６】
2012151690.tif 000008
【図７】
2012151690.tif 000009
【図８】
2012151690.tif 000010
【図９】
2012151690.tif 000011
【図１０】
2012151690.tif 000012
【図１１】
2012151690.tif 000013
【図１２】
2012151690.tif 000014
【図１３】
2012151690.tif 000015
【図１４】
2012151690.tif 000016
【図１５】
2012151690.tif 000017
【図１６】
2012151690.tif 000018