トップ :: H 電気 :: H04 電気通信技術



【発明の名称】 ビデオデータの水平及び垂直フィルタリングを同時に行うデブロッキングフィルタ及び動作方法
【発明者】 【氏名】鄭 得 秀

【氏名】鄭 昌 永

【氏名】李 容 美

【氏名】姜 ▲スン▼ 善

【要約】 【課題】ビデオデータの水平及び垂直フィルタリングを同時に行うデブロッキングフィルタ及び動作方法を提供する。

【解決手段】フィルタリングされるマクロブロックのビデオデータを保存するためのバッファメモリと、側面に位置する隣接するマクロブロックのビデオデータのうち一部を保存するためのバッファメモリと、フィルタリングを行うためにバッファメモリから判読したビデオデータ、隣接するマクロブロックのデータを保存するためのレジスタバッファアレイと、レジスタバッファアレイと連結され、サブブロックのエッジを水平または垂直フィルタリングし、次のサブブロックのエッジを同時に水平または垂直フィルタリングするエッジフィルタと、を備え、垂直フィルタリングは、隣接するマクロブロックからのデータを使用し、水平フィルタリングは、側面マクロブロックバッファメモリからのビデオデータを使用するデブロッキングフィルタ。
【特許請求の範囲】
【請求項1】
フィルタリングされる現在マクロブロックのビデオデータを保存するための現在マクロブロックバッファメモリと、
前記現在マクロブロックの側面に位置する隣接するマクロブロックのビデオデータのうち一部を保存するための側面マクロブロックバッファメモリと、
現在フィルタリングを行うために前記現在マクロブロックバッファメモリで判読したビデオデータ、前記側面マクロブロックバッファメモリで判読したビデオデータ及び隣接するマクロブロックのデータを保存するためのレジスタバッファアレイと、
前記レジスタバッファアレイと連結され、ビデオデータの現在マクロブロックでサブブロックのエッジを水平または垂直フィルタリングし、前記ビデオデータの現在マクロブロックで次のサブブロックのエッジを同時に水平または垂直フィルタリングするエッジフィルタと、を備え、
前記垂直フィルタリングは、隣接するマクロブロックからのデータを使用し、前記水平フィルタリングは、前記側面マクロブロックバッファメモリからのビデオデータを使用することを特徴とするデブロッキングフィルタ。
【請求項2】
フィルタリング前のビデオデータ、フィルタリング済みのビデオデータ及び前記隣接するマクロブロックのビデオデータを保存するための外部メモリを備えることを特徴とする請求項1に記載のデブロッキングフィルタ。
【請求項3】
前記エッジフィルタによってフィルタリング済みのビデオデータを一時保存するためのフィルタリング出力バッファメモリをさらに備えることを特徴とする請求項2に記載のデブロッキングフィルタ。
【請求項4】
前記現在マクロブロックバッファメモリ、前記側面マクロブロックメモリ及び前記出力バッファメモリそれぞれは、フィルタリング演算のパイプライン構造のために2つ以上のバッファメモリを備えることを特徴とする請求項3に記載のデブロッキングフィルタ。
【請求項5】
前記デブロッキングフィルタは、
前記外部メモリからビデオデータを判読し、前記判読されたビデオデータを前記現在マクロブロックバッファメモリ及び/または前記側面マクロブロックバッファメモリに保存するように制御する外部メモリ制御器と、
前記現在マクロブロックバッファメモリ、前記側面マクロブロックバッファメモリ及び前記外部メモリからデータを判読し、前記判読されたビデオデータを前記レジスタバッファアレイに保存するように制御するレジスタバッファアレイ制御器と、をさらに備えることを特徴とする請求項3に記載のデブロッキングフィルタ。
【請求項6】
前記レジスタバッファアレイは、
前記現在マクロブロックバッファメモリからサブブロックビデオデータを判読し、前記側面マクロブロックバッファメモリからビデオデータを判読し、前記外部メモリからビデオデータまたは隣接するマクロブロックを判読し、
前記判読されたビデオデータを保存し、前記エッジフィルタによってフィルタリングされたサブブロックビデオデータを同時に保存し、保存された前記現在マクロブロックのサブブロックビデオデータを次のエッジフィルタリングのために提供することを特徴とする請求項5に記載のデブロッキングフィルタ。
【請求項7】
前記エッジフィルタに連結され、エッジフィルタリング時にフィルタリング強度を決定するフィルタリング強度生成器と、
前記フィルタリング強度生成器及び前記エッジフィルタに連結され、エッジフィルタリング時にフィルタリング実行有無を決定するための臨界値生成器と、をさらに備え、
前記フィルタリング強度生成器は、前記エッジフィルタと分離されて構成されることを特徴とする請求項5に記載のデブロッキングフィルタ。
【請求項8】
前記フィルタリング強度生成器は、動きベクトル生成過程で発生した動きベクトルを利用して、前記動きベクトル生成過程と同時にフィルタリング強度を生成することを特徴とする請求項7に記載のデブロッキングフィルタ。
【請求項9】
前記エッジフィルタは、現在マクロブロックでサブブロックの垂直及び水平エッジが同時にフィルタリングされるように、輝度または彩度成分に対して独立的に動作する複数のフィルタリングエンジンを備えることを特徴とする請求項1に記載のデブロッキングフィルタ。
【請求項10】
前記現在マクロブロックバッファメモリ、前記側面マクロブロックバッファメモリ及び前記フィルタリング出力バッファメモリそれぞれに/からビデオデータの入出力を制御するバッファメモリ制御器をそれぞれ備えることを特徴とする請求項5に記載のデブロッキングフィルタ。
【請求項11】
前記エッジフィルタは、前記ビデオデータの輝度成分に対するフィルタリング演算と彩度成分に対するフィルタリング演算とを同時に行うことを特徴とする請求項1に記載のデブロッキングフィルタ。
【請求項12】
前記ビデオデータは、H.264/AVCビデオコーデックによって処理されることを特徴とする請求項1に記載のデブロッキングフィルタ。
【請求項13】
フィルタリングされる現在マクロブロックのビデオデータを保存するステップと、
前記現在マクロブロックの側面に位置した隣接するマクロブロックのビデオデータの一部を保存するステップと、
現在フィルタリングのための現在マクロブロックバッファメモリから判読されたビデオデータと、側面マクロブロックバッファメモリから判読されたビデオデータ及び隣接するマクロブロックのビデオデータを保存するステップと、
ビデオデータの現在マクロブロックでサブブロックのエッジに対する水平または垂直フィルタリング及び前記ビデオデータの現在マクロブロックで次のサブブロックのエッジに対する水平または垂直フィルタリングを同時に行うステップと、を含み、
前記垂直フィルタリングは、隣接するマクロブロックからのデータを使用し、前記水平フィルタリングは、前記側面マクロブロックバッファメモリからのビデオデータを使用することを特徴とするデブロッキングフィルタリング方法。
【請求項14】
ビデオデータのマクロブロックに対応する横エッジ及び縦エッジを4×4のサブブロックに対応する横エッジ及び縦エッジに等分するステップと、
前記マクロブロックの上側横エッジの4×16ブロックから前記マクロブロックの下側横エッジの4×16ブロックにデブロッキングフィルタリングを行うステップと、を含み、
前記各4×16ブロックに対して、4個の4×4サブブロックの縦エッジに対する横フィルタリングを進めた後、4個の4×4サブブロックの横エッジに対する縦フィルタリングを進めることを特徴とするデブロッキングフィルタリング方法。
【請求項15】
前記デブロッキングフィルタリングを行うステップは、
第一の4×16ブロックの横フィルタリングを処理するステップと、
第二の4×16ブロックの横フィルタリング及び第一の4×16ブロックの縦フィルタリングを同時に処理するステップと、
第三の4×16ブロックの横フィルタリング及び第二の4×16ブロックの縦フィルタリングを同時に処理するステップと、
第四の4×16ブロックの横フィルタリング及び第三の4×16ブロックの縦フィルタリングを同時に処理するステップと、
第四の4×16ブロックの縦フィルタリングを処理するステップと、を含むことを特徴とする請求項14に記載のデブロッキングフィルタリング方法。
【請求項16】
前記各4×16ブロックに対する前記水平及び/または垂直フィルタリングステップは、
第一の4×4サブブロックに対するデータを入力するステップと、
前記第一の4×4サブブロックに対するフィルタリングと同時に第二の4×4サブブロックに対するデータを入力されるステップと、
前記第二の4×4サブブロックに対するフィルタリングと同時に第三の4×4サブブロックに対するデータを入力するステップと、
前記第三の4×4サブブロックに対するフィルタリングと同時に第四の4×4サブブロックに対するデータを入力するステップと、
前記第四の4×4サブブロックに対するフィルタリングステップと、を含むことを特徴とする請求項15に記載のデブロッキングフィルタリング方法。
【請求項17】
前記4×4サブブロックのそれぞれをフィルタリングするステップは、
4個の画素ラインに対して同時にフィルタリングするステップを含むことを特徴とする請求項16に記載のデブロッキングフィルタリング方法。
【請求項18】
前記デブロッキングフィルタリングを行うステップは、
前記ビデオデータの輝度成分に対するフィルタリング演算と彩度成分に対するフィルタリング演算とを行うステップを含むことを特徴とする請求項14に記載のデブロッキングフィルタリング方法。
【請求項19】
前記ビデオデータは、H.264/AVCビデオコーデックによって処理されることを特徴とする請求項14に記載のデブロッキングフィルタリング方法。
【発明の詳細な説明】【技術分野】
【0001】
本発明は、画像デコーディング装置に係り、具体的には、H.264/AVCビデオコーディング標準で発生するブロックキング効果を除去するためのデブロッキングフィルタ及びフィルタリング方法に関する。
【背景技術】
【0002】
ほとんどの画像処理システムでは、国際電気通信連合(ITU:International Telecommunication Union)で勧告するH.261、H262、H.263のような標準化されたビデオコーデックを一般的に使用する。また、このビデオコーデックは、MPEG−1、MPEG−2、MPEG−4のコーデック標準が適用される。そして、最近では、さらに高い圧縮率を実現できるH.264/AVCビデオコーデックについての研究及び標準化作業が活発に進められている。
【0003】
H.264/AVCビデオコーディング標準では、ブロック単位で圧縮符号化した後にデコーディングするので、復元画像にブロックキング現象が発生する。このようなブロックキング現象は、大きく2つの原因に起因する。第一の原因としては、H.264/AVCと共にほとんどの圧縮技法は一定のサイズのブロックに対してDCT(Discrete Cosine Transform)を行い、量子化過程を経るので、互いに重畳されないブロック単位の変換は、周辺ブロックまたは画素間の相関関係が全く考慮されていないまま独立的に変換と量子化とが行われてデータ損失が発生し、かつブロックキング現象が発生する。第二の原因としては、ブロック単位で動きベクトルを予測して画像を補償するが、一つのブロックに属する画素は、同じ動きベクトルを有するので、ブロックキング現象を誘発させる。
【0004】
デブロッキングフィルタは、このようなブロック単位のコーディングで発生するブロックの境界誤差を柔らかくする役割を行って、最終復元画像の品質を向上させる役割を行う。H.264/AVC標準は、ブロックキング現象を防止するためにデブロッキングフィルタが使われうる。しかし、デブロッキングフィルタを実現することによってデコーダの実現も複雑になるという問題が発生する。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする技術的課題は、メモリアクセス回数を減少させ、高速のフィルタリング演算を行えるデブロッキングフィルタ及び動作方法を提供することである。
【課題を解決するための手段】
【0006】
前記目的を達成するために、本発明の一実施形態によるデブロッキングフィルタは、フィルタリングされる現在マクロブロックのビデオデータを保存するための現在マクロブロックバッファメモリと、前記現在マクロブロックの側面に位置する隣接するマクロブロックのビデオデータのうち一部を保存するための側面マクロブロックバッファメモリと、現在フィルタリングを行うために前記現在マクロブロックバッファメモリから判読したビデオデータ、前記側面マクロブロックバッファメモリから判読したビデオデータ及び隣接するマクロブロックのデータを保存するためのレジスタバッファアレイと、前記レジスタバッファアレイと連結され、ビデオデータの現在マクロブロックでサブブロックのエッジを水平または垂直フィルタリングし、前記ビデオデータの現在マクロブロックで次のサブブロックのエッジを同時に水平または垂直フィルタリングするエッジフィルタと、を備え、前記垂直フィルタリングは、隣接するマクロブロックからのデータを使用し、前記水平フィルタリングは、前記側面マクロブロックバッファメモリからのビデオデータを使用することを特徴とする。
【0007】
また、フィルタリング前のビデオデータ、フィルタリング済みのビデオデータ及び前記隣接するマクロブロックのビデオデータを保存するための外部メモリをさらに備えることができる。
また、前記エッジフィルタによってフィルタリング済みのビデオデータを一時保存するためのフィルタリング出力バッファメモリをさらに備えることができる。
また、前記現在マクロブロックバッファメモリ、前記側面マクロブロックメモリ及び前記出力バッファメモリそれぞれは、フィルタリング演算のパイプライン構造のために2つ以上のバッファメモリを備えることが望ましい。
【0008】
また、前記デブロッキングフィルタは、前記外部メモリからビデオデータを判読し、前記判読されたビデオデータを前記現在マクロブロックバッファメモリ及び/または前記側面マクロブロックバッファメモリに保存するように制御する外部メモリ制御器及び前記現在マクロブロックバッファメモリ、前記側面マクロブロックバッファメモリ及び前記外部メモリからデータを判読し、前記判読されたビデオデータを前記レジスタバッファアレイに保存するように制御するレジスタバッファアレイ制御器をさらに備えることが望ましい。
【0009】
また、前記レジスタバッファアレイは、前記現在マクロブロックバッファメモリからサブブロックビデオデータを判読し、前記側面マクロブロックバッファメモリからビデオデータを判読し、前記外部メモリからビデオデータまたは隣接するマクロブロックを判読し、前記判読されたビデオデータを保存し、前記エッジフィルタによってフィルタリングされたサブブロックビデオデータを同時に保存し、保存された前記現在マクロブロックのサブブロックビデオデータを次のエッジフィルタリングのために提供できる。
【0010】
一方、前記デブロッキングフィルタは、前記エッジフィルタに連結され、エッジフィルタリング時にフィルタリング強度を決定するフィルタリング強度生成器及び前記フィルタリング強度生成器及び前記エッジフィルタに連結され、エッジフィルタリング時にフィルタリング実行有無を決定するための臨界値生成器をさらに備え、前記フィルタリング強度生成器は、前記エッジフィルタと分離されて構成されることが望ましい。
【0011】
また、前記フィルタリング強度生成器は、動きベクトル生成過程で発生した動きベクトルを利用して、前記動きベクトル生成過程と同時にフィルタリング強度を生成することが望ましい。
また、前記エッジフィルタは、現在マクロブロックでサブブロックの垂直及び水平エッジが同時にフィルタリングされるように、輝度または彩度成分に対して独立的に動作する複数のフィルタリングエンジンを備えることが望ましい。
【0012】
また、前記デブロッキングフィルタは、前記現在マクロブロックバッファメモリ、前記側面マクロブロックバッファメモリ及び前記フィルタリング出力バッファメモリそれぞれに/からビデオデータの入出力を制御するバッファメモリ制御器をそれぞれ備えることが望ましい。
また、前記エッジフィルタは、前記ビデオデータの輝度成分に対するフィルタリング演算と彩度成分に対するフィルタリング演算とを同時に行うことが望ましい。
また、前記ビデオデータは、H.264/AVCビデオコーデックによって処理されうる。
【0013】
一方、本発明の一実施形態によるデブロッキングフィルタリング方法は、フィルタリングされる現在マクロブロックのビデオデータを保存するステップと、前記現在マクロブロックの側面に位置した隣接するマクロブロックのビデオデータの一部を保存するステップと、現在フィルタリングのための現在マクロブロックバッファメモリから判読されたビデオデータと、側面マクロブロックバッファメモリから判読されたビデオデータ及び隣接するマクロブロックのビデオデータを保存するステップと、ビデオデータの現在マクロブロックでサブブロックのエッジに対する水平または垂直フィルタリング及び前記ビデオデータの現在マクロブロックで次のサブブロックのエッジに対する水平または垂直フィルタリングを同時に行うステップと、を含み、前記垂直フィルタリングは、隣接するマクロブロックからのデータを使用し、水平フィルタリングは、前記側面マクロブロックバッファメモリからのビデオデータを使用することを特徴とする。
【0014】
一方、本発明の他の実施例によるデブロッキングフィルタリング方法は、ビデオデータのマクロブロックに対応する横エッジ及び縦エッジを4×4のサブブロックに対応する横エッジ及び縦エッジに等分するステップ及び前記マクロブロックの上側横エッジの4×16ブロックから前記マクロブロックの下側横エッジの4×16ブロックにデブロッキングフィルタリングを行うステップを含み、前記各4×16ブロックに対して、4個の4×4サブブロックの縦エッジに対する横フィルタリングを進めた後、4個の4×4サブブロックの横エッジに対する縦フィルタリングを進めることを特徴とする。
【0015】
また、前記デブロッキングフィルタリングを行うステップは、第一の4×16ブロックの横フィルタリングを処理するステップと、第二の4×16ブロックの横フィルタリング及び第一の4×16ブロックの縦フィルタリングを同時に処理するステップと、第三の4×16ブロックの横フィルタリング及び第二の4×16ブロックの縦フィルタリングを同時に処理するステップと、第四の4×16ブロックの横フィルタリング及び第三の4×16ブロックの縦フィルタリングを同時に処理するステップと、第四の4×16ブロックの縦フィルタリングを処理するステップと、を含むことができる。
【0016】
また、前記各4×16ブロックに対する前記水平及び/または垂直フィルタリングステップは、第一の4×4サブブロックに対するデータを入力するステップと、前記第一の4×4サブブロックに対するフィルタリングと同時に第二の4×4サブブロックに対するデータを入力するステップと、前記第二の4×4サブブロックに対するフィルタリングと同時に第三の4×4サブブロックに対するデータを入力するステップと、前記第三の4×4サブブロックに対するフィルタリングと同時に第四の4×4サブブロックに対するデータを入力するステップと、前記第四の4×4サブブロックに対するフィルタリングステップと、を含むことができる。
【0017】
また、前記4×4サブブロックのそれぞれをフィルタリングするステップは、4個の画素ラインに対して同時にフィルタリングするステップを含むことが望ましい。
また、前記デブロッキングフィルタリングを行うステップは、前記ビデオデータの輝度成分に対するフィルタリング演算と彩度成分に対するフィルタリング演算とを行うステップを含むことができる。
【発明の効果】
【0018】
本発明によるデブロッキングフィルタ及びフィルタリング方法によれば、データの入力とフィルタリング演算、垂直フィルタリングと水平フィルタリング、データの出力を同時に行えるパイプライン構造を通じて高速のフィルタリング演算が可能である。
【発明を実施するための最良の形態】
【0019】
本発明と本発明の動作上の利点及び本発明の実施によって達成される目的を十分に理解するためには、本発明の望ましい実施形態を例示する添付図面及び添付図面に記載された内容を参照しなければならない。
以下、添付された図面を参照して、本発明の望ましい実施形態を説明することによって、本発明を詳細に説明する。各図面に付された同一参照符号は、同一部材を表す。
【0020】
図1は、一般的なビデオデコーダシステムの構成を表すブロック図である。
前述したように、圧縮画像データは、画像処理装置でデコーディング過程を通じて元のデータに復元されて画面に表示される。図1を参照すれば、画像データをデコーディングするためのビデオデコーダ10は、構文分析器11、エントロピーデコーダ12、逆変換器13、動きベクトル演算器14、予測器15、デブロッキングフィルタ16及び複数のハードウェアモジュールと外部メモリ制御器及びインターフェースのためのPCI(Personal Computer Interface)モジュール(図示せず)で構成される。
【0021】
デコーディング過程で必要なデータは、内部メモリあるいは外部メモリから判読または保存し、それぞれのモジュールは、図1のシステムバス17を通じてデータを相互交換する。デコーディング過程は、前述したハードウェアモジュールで順次に処理されて元来の画像に復元されるが、画像データがマクロブロック単位で圧縮されて復元されるため、復元された画像のブロック間の境界地点では、ブロック単位で画面の差が発生する。このようなブロックキング現象は、図1のデブロッキングフィルタ16を通じてブロッキング現象を減らす。
【0022】
一方、ブロッキング現象は、一定のサイズのブロック単位で圧縮されて発生するため、デブロッキングフィルタ16のエッジフィルタリングもマクロブロック単位で行われる。
図2は、デブロッキングフィルタリング動作に使われるマクロブロックを示した図である。
【0023】
図2を参照すれば、現在マクロブロックをXで表示し、周辺マクロブロックは、図2に示したようにA、B、C、Dで表現し、以下、現在マクロブロックXを中心に左側マクロブロックをA、上部マクロブロックをBで表現する。現在マクロブロックXの境界をフィルタリングするためには、図2のようにマクロブロックA及びマクロブロックBのデータが必要である。すなわち、水平フィルタリング演算のために左側マクロブロックAが必要であり、垂直フィルタリング演算のために上部マクロブロックBが必要である。
【0024】
図3A及び図3Bは、一つのマクロブロック内の各エッジのフィルタリング順序を示す。
図3A及び図3Bを参照すれば、一つのマクロブロックに対するフィルタリング演算は、マクロブロックを構成するピクセルの輝度成分と彩度成分とに対してそれぞれ行われ、図3Aは、輝度成分のフィルタリング境界領域を表し、図3Bは、彩度成分のフィルタリング境界領域を表す。輝度成分のフィルタリング演算は、垂直境界に対してa、b、c、d順にフィルタリングを行い、その次の水平境界に対してe、f、g、h順にフィルタリングを行う。また、彩度成分のフィルタリング演算は、垂直境界に対してi、j順にフィルタリングを行い、その次の水平境界に対してk、l順にフィルタリングを行う。一般的に、輝度成分のフィルタリング演算が先に行われ、その後、彩度成分のフィルタリング演算が行われる。
【0025】
また、フィルタリング演算を行うためには、各境界領域を中心にそれぞれ4個の画素(ピクセル)が必要である。すなわち、フィルタリング演算のためには、垂直境界ピクセルに対して左右それぞれ4個ずつのピクセルが必要であり、水平境界に対しては、上下それぞれ4個ずつのピクセルが必要であり、隣接する4×4サイズブロックが属するマクロブロックで使用する量子化パラメータ、隣接クロックの符号化モード、動きベクトルによって修正される画素数及び適用されるフィルタリング強度が変わる。
【0026】
以上のように、一般的なフィルタリング方法を使用すれば、フィルタリング演算のためにメモリアクセス及びフィルタリング所要時間を考慮すれば、800サイクル以上がかかって高画質の画像データに対するフィルタリング演算で時間遅延が発生して、結果的に高画質の画像データのリアルタイム処理に問題が発生する。
【0027】
図4は、本発明の一実施形態によるデブロッキングフィルタのブロックダイヤグラムを示す。
まず、デブロッキングフィルタアルゴリズムを簡単に説明すれば、フィルタリングしようとするエッジに該当するピクセルを選択し、選択されたピクセルを内部または外部メモリから判読してフィルタリング演算を行うためのバッファに保存しなければならない。そして、実際画像のエッジ部分は生かし、過度なフィルタリングが発生しないようにフィルタリング強度を求め、臨界値と比較してフィルタリング実行有無を決定する。このようなデブロッキングフィルタリングアルゴリズムは、例えば、H.264/AVC標準化文書に開示されている。
【0028】
一方、図4に示した本発明の一実施形態によるデブロッキングフィルタ400のハードウェア構造は、メモリアクセスを減少させつつ、フィルタリング演算を効率的に実行させるハードウェア構造である。また、本発明の一実施形態によるデブロッキングフィルタ400は、水平フィルタリングと垂直フィルタリングとを行うに当って、フィルタリング演算を並列処理させうる。
【0029】
このために、本発明の一実施形態によるデブロッキングフィルタ400は、図示したように、2個の出力バッファメモリ402、2個のX−バッファメモリ404、2個のA−バッファメモリ406、出力バッファメモリ制御器408、X−バッファメモリ制御器410、A−バッファメモリ制御器412、外部バスインターフェース414、レジスタバッファアレイ416、レジスタバッファアレイ制御器418、エッジフィルタ420、フィルタリング強度生成器422、臨界値生成器424、外部メモリ制御器426及び外部メモリ430を備えるもので構成される。
【0030】
2個の出力バッファメモリ402は、エッジフィルタ420でフィルタリング済みのデータを外部メモリ430に出力する前に一時的に保存するためのメモリである。2個のX−バッファメモリ404は、現在フィルタリングを行うエッジに該当するマクロブロックのデータを保存するためのメモリである。すなわち、X−バッファメモリ404は、図2の現在マクロブロックXのデータを保存する。2個のA−バッファメモリ406は、現在マクロブロックXの左側に隣接するマクロブロックのデータのうち、現在マクロブロックXに隣接する4個の4×4サブブロックのデータを保存する。出力バッファメモリ制御器408、X−バッファメモリ制御器410及びA−バッファメモリ制御器412は、それぞれ出力バッファメモリ402、X−バッファメモリ404及びA−バッファメモリ406のデータ入出力を制御する。外部バスインターフェース414は、デコーディング過程で必要なデータは、内部メモリあるいは外部メモリから判読または保存するインターフェース機能を行う。
【0031】
レジスタバッファアレイ416は、フィルタリング演算を行うために、X−バッファメモリ404から判読した現在マクロブロックデータ、A−バッファメモリ406から判読した左側に隣接するマクロブロックのデータ及び外部メモリ430から判読した上部に隣接するマクロブロックのデータを保存し、エッジフィルタ420でフィルタリング演算されたデータのうち、次のフィルタリング演算に利用されるデータを保存する機能を行う。エッジフィルタ420は、レジスタバッファアレイ416に保存されたデータを利用して各エッジに対するフィルタリング演算を行う。フィルタリング強度生成器422は、実際画像のエッジ部分は生かし、過度なフィルタリングが発生しないようにフィルタリング強度を決定する役割を行い、臨界値生成器424は、フィルタリング実行有無を最終決定するための臨界値を算出する役割を行う。外部メモリ430は、フィルタリングを行うためのビデオデータを保存し、フィルタリング済みのデータを再び保存する機能を行う。レジスタバッファアレイ制御器418は、レジスタバッファアレイ416を制御するためのものであり、外部メモリ制御器426は、外部メモリ430を制御するためのものである。
【0032】
図4を参照して、本発明の一実施形態によるデブロッキングフィルタ400の動作過程を説明する。
まず、一つのマクロブロックをフィルタリングするためには、現在マクロブロックと関連した情報及び周辺マクロブロックと関連した情報が必要である。すなわち、現在マクロブロックの垂直エッジをフィルタリングするためには、左側のAマクロブロックと関連した情報が必要であり、水平エッジをフィルタリングするためには、上段のBマクロブロックと関連した情報が必要である。図1のビデオデコーダシステムで説明したように、デブロッキングフィルタの前ステップである予測器からフィルタリングしようとする現在マクロブロックと関連した情報を受けてX−バッファメモリ404に保存する。X−バッファメモリが2個のバッファメモリで構成される理由は、効率的なビデオデコーダシステムのパイプライン構造のためである。
【0033】
また、水平/垂直エッジをフィルタリングするための周辺マクロブロックであるA、Bマクロブロックを保存するためのメモリバッファが必要であり、A−バッファメモリ406は、左側のAマクロブロックと関連した情報を保存し、MBAFFモードを考慮して4×32ピクセル情報を保存する。A−バッファメモリ406も、ビデオデコーダシステムのパイプライン構造のために2個のバッファメモリで構成される。
【0034】
上段のBマクロブロックと関連した情報は、H.264/AVCメインプロファイルの場合、最高2048*1024解像度を支援する場合、MBAFFモードを考慮すれば、128*4*32ピクセル情報が必要である。ここで、128は、一つのラインのマクロブロックの数に該当する。しかし、このようなピクセル情報を内部メモリバッファに保存するのには情報量が過度に多い。したがって、現在マクロブロックXの上段マクロブロックBと関連した情報は、外部メモリ430に保存し、フィルタリングが行われる前に必要なBマクロブロックと関連したピクセル情報をあらかじめ判読して内部のレジスタバッファアレイ416に保存する構造が効率的である。また、図4に示したように、外部メモリ430をアクセスするために、外部バスインターフェースモジュール414が使われ、システムバス432とデータを交換する。
【0035】
図4で、レジスタバッファアレイ416は、高速フィルタリング演算のためのパイプライン構造のために、フィルタリング演算に必要なピクセル及びフィルタリング済みのピクセルのうち、次のフィルタリング演算に必要なデータを保存してフィルタリングを効率的に処理する。すなわち、本発明の他のレジスタバッファアレイ416は、一般的なデブロッキングフィルタの構造とは違って、該エッジフィルタリングに必要な情報を判読してフィルタリング演算を行い、垂直、水平エッジフィルタリングが完了するまでレジスタに保存することによって、高速パイプライン構造を可能にし、不要なメモリアクセスサイクルを減らすことができる。
【0036】
エッジフィルタ420は、レジスタバッファアレイ416からピクセル情報を受け、フィルタリング強度生成器422からフィルタリング強度値と臨界値生成器424から臨界値とを受けて実際フィルタリング演算を行う。また、エッジフィルタ420は、高速フィルタリング演算のために4×4サブブロックの垂直または水平エッジのフィルタリングを同時に行えるように、輝度または彩度成分に対して独立的に動作する4個のフィルタリングエンジンを有する。この4個のフィルタリングエンジンは、それぞれ一つの4×4サブブロックデータの一つのラインの画素に対するフィルタリングを行う。
【0037】
また、本発明の一実施形態によるデブロッキングフィルタ400のエッジフィルタ420は、フィルタリング演算にかかる時間を短縮させるために、輝度成分に対するフィルタリング演算と同時に彩度成分に対するフィルタリング演算を行う。
【0038】
本発明の一実施形態によるデブロッキングフィルタ400は、図4に示したように、フィルタリング強度生成器422がエッジフィルタ420の外部に設置されるように構成される。フィルタリング強度を決定するためには、動きベクトルの情報が使われ、色々な条件を複雑に比較する過程が必要である。動きベクトルの情報は、図1に示したビデオデコーダ10のように、予測器15の前に動きベクトル情報が使われる。したがって、一般的には、動きベクトル情報も内部メモリに保存されてフィルタリング強度生成時に使われねばならないが、本発明によるデブロッキングフィルタ400では、動きベクトル情報を別途に保存せずに共有できるように、動きベクトル生成過程でフィルタリング強度を生成させる。これにより、内部メモリを節約できるだけでなく、フィルタリング強度が前ステップで生成されるので、デブロッキングフィルタ演算のサイクルを減らせるという長所がある。
【0039】
また、パイプライン構造のために2個のメモリで構成された出力バッファメモリ402は、フィルタリング済みのデータを一時保存した後、外部メモリ430に出力する。
一方、デブロッキングフィルタ400は、4×4サブブロックを基本単位としてフィルタリング演算を行い、毎ブロック境界ごとに少なくとも二つ以上のピクセルをアクセスしなければならないので、メモリ使用の頻度が増加してデコーダの性能に影響を与えることがある。したがって、本発明の一実施形態によるデブロッキングフィルタ400は、メモリのアクセスを減少させ、フィルタリング演算を効率的に並列処理できるように構成される。
【0040】
一般的なフィルタリング順序は、垂直エッジに対するフィルタリング実行を終え、水平エッジに対するフィルタリングを行う。この場合、一つのマクロブロックをフィルタリングするためには、64回の水平フィルタリング動作と64回の垂直フィルタリング動作とを行わねばならない。データ入出力のためのメモリアクセスサイクル数及びフィルタリング演算サイクル数を概略的に15サイクルと仮定しても、1920サイクルがかかり、高画質の画像データをリアルタイムで処理するのに問題が発生する。しかし、本発明の一実施形態によるデブロッキングフィルタ400は、垂直エッジ及び水平エッジフィルタリングを同時に処理できるハードウェア構造を通じてメモリアクセス及びフィルタリング演算サイクルの数を減少させうる。
【0041】
図5は、本発明の一実施形態によるマクロブロック内のエッジに対するフィルタリング順序を示すダイヤグラムである。
図5は、一つの16×16マクロブロックを表すものであって、16個の各サブブロックは、4×4のブロックである。一つのマクロブロックでのフィルタリング順序は、16個の4×4サブブロックのうち上側横ラインから下側横ライン方向に4個のサブブロックずつデブロッキングフィルタリングを行う。また、4個の4×4サブブロックの縦エッジに対する横フィルタリングを順次に進めた後、横エッジに対する縦フィルタリングを順次に進める。
【0042】
すなわち、一つのマクロブロックでのフィルタリング順序は、図5(a)に示したように、1、2、3、4番のサブブロックに対して順次に水平フィルタリング(I)し、水平フィルタリングが完了すれば、同じ方式で図5(b)に示したように、1、2、3、4順に垂直フィルタリング(I′)を処理する。次いで、5、6、7、8番のサブブロックに対する水平フィルタリング(II)を行い、再び5、6、7、8番のサブブロックに対する垂直フィルタリング(II′)を行う。そして、9、10、11、12番のサブブロックに対する水平フィルタリング(III)を行い、再び9、10、11、12番のサブブロックに対する垂直フィルタリング(III′)を行う。そして、13、14、15、16番のサブブロックに対する水平フィルタリング(IV)を行い、再び13、14、15、16番のサブブロックに対して垂直フィルタリング(IV′)を行う。
【0043】
図6は、本発明の一実施形態によるフィルタリング演算時、パイプライン構造を示すブロックダイヤグラムである。
【0044】
本発明の一実施形態によるデブロッキングフィルタリング方法は、4×16ブロックを基本単位とする。すなわち、図5に示したように、1、2、3、4番の4個の4×4サブブロック(すなわち、4×16ブロック)、次いで、5、6、7、8番の4個のサブブロック、次いで、9、10、11、12番の4個のサブブロック、次いで、13、14、15、16番の4個のサブブロック順にフィルタリングを進める。本発明によるデブロッキングフィルタリング方法は、4×16、すなわち4個の4×4サブブロックを基本単位として水平フィルタリング及び垂直フィルタリングを2段階パイプファイン構造で処理する。また、一つの4×16ブロックでは、水平フィルタリング及び垂直フィルタリングが何れも4×4ブロック単位の2段階パイプライン構造でフィルタリング演算を行う。
【0045】
図5及び図6を参照して、本発明によるパイプライン構造を説明すれば、第一の4×16ブロックに対する横フィルタリング(I)を処理した後、第一の4×16ブロックに対する縦フィルタリング(I′)と第二の4×16ブロックに対する横フィルタリング(II)とを同時に処理する。次いで、第二の4×16ブロックに対する縦フィルタリング(II′)と第三の4×16ブロックに対する横フィルタリング(III)とを同時に処理する。次いで、第三の4×16ブロックに対する縦フィルタリング(III′)と第四の4×16ブロックに対する横フィルタリング(IV)とを同時に処理する。そして、最後に、第四の4×16ブロックに対する縦フィルタリング(IV′)を処理する。
【0046】
すなわち、本発明によるデブロッキングフィルタリング方法は、水平フィルタリングと垂直フィルタリングとがパイプライン構造になっているので、1、2、3、4番のサブブロックに対する垂直フィルタリングが行われる間に5、6、7、8番のサブブロックに対する水平フィルタリングを行う。そして、5、6、7、8番のサブブロックに対する垂直フィルタリングが行われる間に9、10、11、12番のサブブロックに対する水平フィルタリングを行う。そして、9、10、11、12番のサブブロックに対する垂直フィルタリングを行う間に13、14、15、16番のサブブロックに対する水平フィルタリングを行い、最後に、13、14、15、16番のサブブロックに対する垂直フィルタリングを行う。
【0047】
一方、一つの4×16ブロックに対しては、第一の4×4サブブロックに対するデータ入力ステップ後、第一の4×4サブブロックに対するフィルタリングと第二の4×4サブブロックに対するデータ入力ステップとを同時に進める。次いで、第二の4×4サブブロックに対するフィルタリングと第三の4×4サブブロックに対するデータ入力ステップとを同時に進める。次いで、第三の4×4サブブロックに対するフィルタリングと第四の4×4サブブロックに対するデータ入力ステップとを同時に進める。そして、最後に、第四の4×4サブブロックに対するフィルタリングを行う。
【0048】
例えば、図5の第一の4×16ブロック、すなわち、1、2、3、4番の4×4サブブロックの水平フィルタリングの例を参照すれば、1番の4×4サブブロックに対する水平フィルタリングが進められる間に2番の4×4サブブロックに対する水平フィルタリングのためにデータを入力する。このような方式によって、2番の4×4サブブロックに対する水平フィルタリングが進められる間に3番の4×4サブブロックに対する水平フィルタリングのためにデータを入力する。また、3番の4×4サブブロックに対する水平フィルタリングが進められる間に4番の4×4サブブロックに対する水平フィルタリングのためにデータを入力する。そして、最後に、4番の4×4サブブロックに対する水平フィルタリングを行う。
【0049】
したがって、本発明の一実施形態によるデブロッキングフィルタリング方法は、4×16単位ブロックに対して横フィルタリングと縦フィルタリングとを同時に処理できる。また、それぞれの横フィルタリングと縦フィルタリングとは、それぞれ4×4単位ブロックに対してデータ入力とフィルタリング演算とを同時に処理できる。
また、本発明の一実施形態によるフィルタリング方法は、フィルタリング演算にかかる時間を短縮させるために、輝度成分に対するフィルタリング演算と同時に彩度成分に対するフィルタリング演算とを行う。
【0050】
一方、このように、フィルタリング演算を高速のパイプライン構造で処理する機能は、図4に示した本発明によるデブロッキングフィルタ400のようにレジスタバッファアレイ416を通じて達成される。すなわち、本発明によるフィルタリング方法は、4×16を基本単位として水平及び垂直フィルタリングが行われるが、4×4単位のフィルタリング演算時にメモリアクセスをなくすためにレジスタバッファアレイ416を使用し、フィルタリングが終わった4×4ブロックに対して次の垂直フィルタリングに使用する。したがって、次のフィルタリングのために内部バッファメモリに保存する過程を省略でき、これにより、メモリアクセスサイクルを減らすことができる。
【0051】
図7は、本発明の一実施形態によるデブロッキングフィルタリング動作を示すフローチャートである。
【0052】
図7を参照して、本発明によるフィルタリング方法を説明すれば、まず、最初の垂直エッジに対する水平フィルタリングを行うためのAマクロブロック及び第一の4×4×マクロブロックデータを内部Xバッファメモリから判読してレジスタバッファアレイに保存してフィルタリングするデータを準備する(S701)。データ準備が終われば、垂直エッジであるか否かを判別し(S702)、垂直エッジであれば、水平フィルタリングを行うことができる(S703)。フィルタリング演算と同時に、次の水平フィルタリングに対するXマクロブロックの第二の4×4サブブロックデータをレジスタバッファアレイに準備する(S704)。そして、水平フィルタリング済みのデータと次の4×4サブブロックデータとでレジスタバッファアレイをアップデートする(S707)。この過程を4×4水平フィルタリングが終わるまで反復する(S708及びS709)。それと同時に、水平フィルタリングが進められる間に第一のまたは第二の垂直フィルタリングのためのBマクロブロックの4×16データを外部メモリからレジスタバッファアレイに準備する(S710及びS711)。
【0053】
パイプライン構造からなる水平フィルタリング過程を4個の垂直エッジに対する処理が終われば、垂直フィルタリングが可能である(S705)。また、水平、垂直フィルタリングが何れも終わったAマクロブロックのデータは、出力が可能である(S718)。
【0054】
垂直フィルタリングは、水平フィルタリングされたXマクロブロックの4×16ブロックデータとBマクロブロックの4×16ブロックのデータとを利用して、4×4単位のパイプライン構造によって行われ(S705)、それと同時に、次の垂直エッジについて前述した水平フィルタリング過程を行う(S703)。そして、垂直フィルタリング済みのデータと水平フィルタリングされた4×4サブブロックデータとでレジスタバッファアレイをアップデートする(S712)。この過程を4×4垂直フィルタリングが終わるまで反復する(S713及びS714)。
【0055】
このように垂直フィルタリングが終われば、次のマクロブロックのデブロッキングフィルタリングのために、Xマクロブロックの第四の4×16ブロックデータは、Aバッファメモリに保存し(S715)、それと同時にBマクロブロックデータは、垂直、水平フィルタリング済みなので、外部メモリに出力するために出力バッファメモリに保存され、次の水平、垂直フィルタリングが行われる間に外部メモリに出力される(S716)。そして、4×4のXマクロブロックのデータは、次の垂直フィルタリングのためにレジスタバッファアレイにアップデートされる。このような過程を全ての垂直、水平エッジに対して行えば、一つのマクロブロックに対するデブロッキングフィルタリングが完了し、フィルタリング済みのデータは、外部メモリに出力される(S717及びS719)。
【0056】
本発明は、図面に示した一実施形態を参考として説明されたが、これは、例示的なものに過ぎず、当業者ならば、これから多様な変形及び均等な他の実施形態が可能であるということが分かるであろう。したがって、本発明の真の技術的保護範囲は、特許請求の範囲の技術的思想によって決定されなければならない。
【産業上の利用可能性】
【0057】
本発明は、画像デコーディング装置関連の技術分野に適用可能である。
【図面の簡単な説明】
【0058】
【図1】一般的なビデオデコーダシステムの構成を示すブロック図である。
【図2】デブロッキングフィルタリング動作に使われるマクロブロックを示す図面である。
【図3A】一つのマクロブロック内のエッジフィルタリング順序を示すダイヤグラムである。
【図3B】一つのマクロブロック内のエッジフィルタリング順序を示すダイヤグラムである。
【図4】本発明の一実施形態によるデブロッキングフィルタを示すブロックダイヤグラムである。
【図5】本発明の一実施形態によるマクロブロック内のエッジフィルタリング順序を示すダイヤグラムである。
【図6】本発明の一実施形態によるフィルタリング動作時のパイプライン構造を示すブロックダイヤグラムである。
【図7】本発明の一実施形態によるデブロッキングフィルタリング動作を示すフローチャートである。
【符号の説明】
【0059】
402 出力バッファメモリ
404 X−バッファメモリ
406 A−バッファメモリ
408 出力バッファメモリ制御器
410 X−バッファメモリ制御器
412 A−バッファメモリ制御器
414 外部バスインターフェースモジュール
416 レジスタバッファアレイ
418 レジスタバッファアレイ制御器
420 エッジフィルタ
422 フィルタリング強度生成器
424 臨界値生成器
426 外部メモリ制御器
430 外部メモリ
432 システムバス
【出願人】 【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】416,Maetan−dong,Yeongtong−gu,Suwon−si Gyeonggi−do,Republic of Korea
【出願日】 平成17年12月16日(2005.12.16)
【代理人】 【識別番号】100086368
【弁理士】
【氏名又は名称】萩原 誠

【公開番号】 特開2006−174486(P2006−174486A)
【公開日】 平成18年6月29日(2006.6.29)
【出願番号】 特願2005−363935(P2005−363935)