(57)【特許請求の範囲】
【請求項１】
最大符号化単位から分割される符号化単位ごとに、ビットストリームを復号して画像を生成する復号部と、
前記復号部により生成される画像内の最大符号化単位にそれぞれ含まれる８×８ブロックの間の垂直境界の近傍の画素を対象とする水平方向のデブロックフィルタを、複数の前記垂直境界に対して複数の最大符号化単位にまたがって、複数の前記垂直境界に対する前記水平方向のデブロックフィルタの間で垂直方向のデブロックフィルタに伴う処理の依存関係の無い状態で並列的に適用する水平フィルタリング部と、
前記水平フィルタリング部によりデブロックフィルタを適用された画素を含む前記画像内の最大符号化単位にそれぞれ含まれる８×８ブロックの間の水平境界の近傍の画素を対象とする垂直方向のデブロックフィルタを、複数の前記水平境界に対して複数の最大符号化単位にまたがって並列的に適用する垂直フィルタリング部と、
を備える画像処理装置。
【請求項２】
前記水平フィルタリング部は、８×８ブロックの間の隣接する複数の前記垂直境界についての前記水平方向のデブロックフィルタ同士に依存関係を生じさせないように、前記水平方向のデブロックフィルタの処理対象となる複数の最大符号化単位の間で垂直方向のデブロックフィルタに伴う処理の前記依存関係の無い状態で前記水平方向のデブロックフィルタを適用し、
前記垂直フィルタリング部は、８×８ブロックの間の隣接する複数の前記水平境界についての前記垂直方向のデブロックフィルタ同士に依存関係を生じさせないように、前記垂直方向のデブロックフィルタを適用する、
請求項１に記載の画像処理装置。
【請求項３】
前記水平フィルタリング部は、８×８ブロックの間の隣接する複数の前記垂直境界についての前記水平方向のデブロックフィルタ同士で重複しないタップ長を用いて前記水平方向のデブロックフィルタを適用し、
前記垂直フィルタリング部は、８×８ブロックの間の隣接する複数の前記水平境界についての前記垂直方向のデブロックフィルタ同士で重複しないタップ長を用いて前記垂直方向のデブロックフィルタを適用する、
請求項２に記載の画像処理装置。
【請求項４】
前記復号部は、前記最大符号化単位から分割される可変的なサイズを有する符号化単位ごとに前記ビットストリームを復号して前記画像を生成する、請求項３に記載の画像処理装置。
【請求項５】
最大符号化単位から分割される符号化単位ごとに、ビットストリームを復号して画像を生成することと、
前記復号により生成される画像内の最大符号化単位にそれぞれ含まれる８×８ブロックの間の垂直境界の近傍の画素を対象とする水平方向のデブロックフィルタを、複数の前記垂直境界に対して複数の最大符号化単位にまたがって、複数の前記垂直境界に対する前記水平方向のデブロックフィルタの間で垂直方向のデブロックフィルタに伴う処理の依存関係の無い状態で並列的に適用することと、
前記水平方向のデブロックフィルタを適用された画素を含む前記画像内の最大符号化単位にそれぞれ含まれる８×８ブロックの間の水平境界の近傍の画素を対象とする垂直方向のデブロックフィルタを、複数の前記水平境界に対して複数の最大符号化単位にまたがって並列的に適用することと、
を含む画像処理方法。
【請求項６】
前記水平方向のデブロックフィルタは、８×８ブロックの間の隣接する複数の前記垂直境界についての前記水平方向のデブロックフィルタ同士に依存関係を生じさせないように、前記水平方向のデブロックフィルタの処理対象となる複数の最大符号化単位の間で垂直方向のデブロックフィルタに伴う処理の前記依存関係の無い状態で複数の前記垂直境界に適用され、
前記垂直方向のデブロックフィルタは、８×８ブロックの間の隣接する複数の前記水平境界についての前記垂直方向のデブロックフィルタ同士に依存関係を生じさせないように複数の前記水平境界に適用される、
請求項５に記載の画像処理方法。
【請求項７】
前記水平方向のデブロックフィルタは、８×８ブロックの間の隣接する複数の前記垂直境界についての前記水平方向のデブロックフィルタ同士で重複しないタップ長を用いて適用され、
前記垂直方向のデブロックフィルタは、８×８ブロックの間の隣接する複数の前記水平境界についての前記垂直方向のデブロックフィルタ同士で重複しないタップ長を用いて適用される、
請求項６に記載の画像処理方法。
【請求項８】
前記最大符号化単位から分割される可変的なサイズを有する符号化単位ごとに前記ビットストリームが復号され前記画像が生成される、請求項７に記載の画像処理方法。
【請求項９】
画像処理装置を制御するプロセッサを、
最大符号化単位から分割される符号化単位ごとに、ビットストリームを復号して画像を生成する復号部と、
前記復号部により生成される画像内の最大符号化単位にそれぞれ含まれる８×８ブロックの間の垂直境界の近傍の画素を対象とする水平方向のデブロックフィルタを、複数の前記垂直境界に対して複数の最大符号化単位にまたがって、複数の前記垂直境界に対する前記水平方向のデブロックフィルタの間で垂直方向のデブロックフィルタに伴う処理の依存関係の無い状態で並列的に適用する水平フィルタリング部と、
前記水平フィルタリング部によりデブロックフィルタを適用された画素を含む前記画像内の最大符号化単位にそれぞれ含まれる８×８ブロックの間の水平境界の近傍の画素を対象とする垂直方向のデブロックフィルタを、複数の前記水平境界に対して複数の最大符号化単位にまたがって並列的に適用する垂直フィルタリング部と、
として機能させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置、画像処理方法、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
画像符号化方式の標準仕様の１つであるＨ．２６４／ＡＶＣでは、画像の符号化の際に生じるブロック歪みに起因する画質の劣化を抑制するために、例えば４×４画素のブロックごとにブロック境界にデブロックフィルタが適用される。このデブロックフィルタのために要する処理量は多大であり、例えば、画像の復号の際の全処理量の５０％を占めることもあると言われている。【０００３】
次世代の画像符号化方式であるＨＥＶＣ（High  Efficiency  Video  Coding）の標準化作業では、ＪＣＴＶＣ−Ａ１１９（下記非特許文献１参照）において、８×８画素以上のサイズのブロックごとにデブロックフィルタを適用することが提案されている。ＪＣＴＶＣ−Ａ１１９において提案された手法では、デブロックフィルタを適用する最小単位のブロックサイズが拡大されることで、１つのマクロブロック内で同一方向の複数のブロック境界についてのフィルタリング処理を並列的に実行することが可能となる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】K.Ugur  (Nokia),  K.R.Andersson  (LM  Ericsson),  A.Fuldseth  (Tandberg  Telecom),  "JCTVC-A119:Video  coding  technology  proposal  by  Tandberg,  Nokia,  and  Ericsson",  Documents  of  the  first  meeting  of  the  Joint  Collaborative  Team  on  Video  Coding  (JCT-VC),  Dresden,  Germany,  15-23  April,  2010.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＪＣＴＶＣ−Ａ１１９において提案された手法を採用したとしても、垂直方向のブロック境界についての処理と水平方向のブロック境界についての処理との間の依存関係は残される。具体的には、例えば、１つのマクロブロックの垂直境界についての処理は、隣接するマクロブロックの水平境界についての処理を待って行われる。また、１つのマクロブロックの水平境界についての処理は、同じマクロブロックの垂直境界についての処理を待って行われる。従って、上記手法でも、非常に限られた範囲でしかデブロックフィルタの処理を並列化することができない。よって、デブロックフィルタの適用に際しての多大な処理量を原因とする遅延又はデータレートの低下などの課題が十分に解決されるとは言い難い。【０００６】
そこで、本開示に係る技術は、デブロックフィルタの適用に際しての処理のさらなる並列化を可能とする仕組みを提供しようとするものである。
【課題を解決するための手段】
【０００７】
本開示によれば、ビットストリームを復号して画像を生成する復号部と、前記復号部により生成される画像内の８×８ブロックの間の垂直境界の近傍の画素を対象とする水平方向のデブロックフィルタを、複数の前記垂直境界にわたって並列的に適用する水平フィルタリング部と、前記水平フィルタリング部によりデブロックフィルタを適用された画素を含む前記画像内の８×８ブロックの間の水平境界の近傍の画素を対象とする垂直方向のデブロックフィルタを、複数の前記水平境界にわたって並列的に適用する垂直フィルタリング部と、を備える画像処理装置が提供される。
【０００８】
上記画像処理装置は、典型的には、画像を復号する画像復号装置として実現され得る。【０００９】
また、本開示によれば、ビットストリームを復号して画像を生成することと、前記復号により生成される画像内の８×８ブロックの間の垂直境界の近傍の画素を対象とする水平方向のデブロックフィルタを、複数の前記垂直境界にわたって並列的に適用することと、前記水平方向のデブロックフィルタを適用された画素を含む前記画像内の８×８ブロックの間の水平境界の近傍の画素を対象とする垂直方向のデブロックフィルタを、複数の前記水平境界にわたって並列的に適用することと、を含む画像処理方法が提供される。
【００１０】
また、本開示によれば、画像処理装置を制御するプロセッサを、ビットストリームを復号して画像を生成する復号部と、前記復号部により生成される画像内の８×８ブロックの間の垂直境界の近傍の画素を対象とする水平方向のデブロックフィルタを、複数の前記垂直境界にわたって並列的に適用する水平フィルタリング部と、前記水平フィルタリング部によりデブロックフィルタを適用された画素を含む前記画像内の８×８ブロックの間の水平境界の近傍の画素を対象とする垂直方向のデブロックフィルタを、複数の前記水平境界にわたって並列的に適用する垂直フィルタリング部と、として機能させるためのプログラムが提供される。
【００１１】
また、本開示によれば、上述したプログラムを記録したコンピュータ読取可能な記録媒体が提供される。
【００１２】
上記画像を符号化するための技術が提供されてもよい。
【発明の効果】
【００１３】
以上説明したように、本開示に係る技術によれば、デブロックフィルタの適用に際しての処理のさらなる並列化が可能となる。
【図面の簡単な説明】
【００１４】
【図１】一実施形態に係る画像符号化装置の構成の一例を示すブロック図である。
【図２】一実施形態に係る画像復号装置の構成の一例を示すブロック図である。
【図３】境界を挟んで隣接する画素の一例を示す説明図である。
【図４】既存の手法におけるフィルタリング要否判定処理での参照画素について説明するための説明図である。
【図５】フィルタリング処理により更新される画素について説明するための説明図である。
【図６】実施形態の説明のためのエッジの呼び方について説明するための説明図である。
【図７】既存の手法における並列処理について説明するための説明図である。
【図８】既存の手法における処理間の依存関係について説明するための第１の説明図である。
【図９】既存の手法における処理間の依存関係について説明するための第２の説明図である。
【図１０】既存の手法における処理の順序の一例について説明するための説明図である。
【図１１】第１の実施例における処理の順序の一例について説明するための説明図である。
【図１２】第１の実施例に係るデブロックフィルタの詳細な構成の一例を示すブロック図である。
【図１３】判定部のさらに詳細な構成の一例を示すブロック図である。
【図１４】スライス境界を挟んで隣接するブロックの一例について説明するための説明図である。
【図１５】スライスごとの処理の順序の第１の例について説明するための説明図である。
【図１６】スライスごとの処理の順序の第２の例について説明するための説明図である。
【図１７】一変形例において実現され得る判定の手法の第１及び第２の例について説明するための説明図である。
【図１８】一変形例において実現され得る判定の手法の第３及び第４の例について説明するための説明図である。
【図１９】一変形例において実現され得る判定の手法の第５及び第６の例について説明するための説明図である。
【図２０】第１の実施例に係るデブロックフィルタによる処理の流れの一例を示すフローチャートである。
【図２１】フィルタリング要否判定処理の流れの一例を示すフローチャートである。
【図２２】第２の実施例における処理の順序の一例について説明するための説明図である。
【図２３】第２の実施例に係るデブロックフィルタの詳細な構成の一例を示すブロック図である。
【図２４】第２の実施例に係るデブロックフィルタによる処理の流れの一例を示すフローチャートである。
【図２５】ＬＣＵごとの処理の順序について説明するための説明図である。
【図２６】ＬＣＵごとの処理の流れの一例を示すフローチャートである。
【図２７】第３の実施例の概略について説明するための説明図である。
【図２８】第３の実施例に係るデブロックフィルタの詳細な構成の一例を示すブロック図である。
【図２９】加重平均のための重みの決定について説明するための説明図である。
【図３０】加重平均のための重みの一例について説明するための説明図である。
【図３１】第３の実施例に係る計算部からの出力画素値について説明するための説明図である。
【図３２】比較のための処理の順序の第１の例について説明するための説明図である。
【図３３】第３の実施例において実現される処理の順序の第１の例について説明するための説明図である。
【図３４】比較のための処理の順序の第２の例について説明するための説明図である。
【図３５】第３の実施例において実現される処理の順序の第２の例について説明するための説明図である。
【図３６】第３の実施例に係るデブロックフィルタによる処理の流れの一例を示すフローチャートである。
【図３７】図３６に示した画素値計算処理の流れの一例を示すフローチャートである。
【図３８】マルチビューコーデックについて説明するための説明図である。
【図３９】一実施形態に係る画像符号化処理のマルチビューコーデックへの適用について説明するための説明図である。
【図４０】一実施形態に係る画像復号処理のマルチビューコーデックへの適用について説明するための説明図である。
【図４１】スケーラブルコーデックについて説明するための説明図である。
【図４２】一実施形態に係る画像符号化処理のスケーラブルコーデックへの適用について説明するための説明図である。
【図４３】一実施形態に係る画像復号処理のスケーラブルコーデックへの適用について説明するための説明図である。
【図４４】テレビジョン装置の概略的な構成の一例を示すブロック図である。
【図４５】携帯電話機の概略的な構成の一例を示すブロック図である。
【図４６】記録再生装置の概略的な構成の一例を示すブロック図である。
【図４７】撮像装置の概略的な構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付すことにより重複説明を省略する。
【００１６】
また、以下の順序にしたがって当該「発明を実施するための形態」を説明する。
１．装置の概要
１−１．画像符号化装置
１−２．画像復号装置
２．既存の手法の説明
２−１．デブロックフィルタの基本的な構成
２−２．既存の手法における処理間の依存関係
３．第１の実施例
３−１．デブロックフィルタの構成例
３−２．判定条件の変形例
３−３．処理の流れ
４．第２の実施例
４−１．デブロックフィルタの構成例
４−２．処理の流れ
４−３．ＬＣＵごとの処理の例
５．第３の実施例
５−１．概略
５−２．デブロックフィルタの構成例
５−３．処理の順序の例
５−４．処理の流れ
６．様々なコーデックへの適用
６−１．マルチビューコーデック
６−２．スケーラブルコーデック
７．応用例
８．まとめ
【００１７】
＜１．装置の概要＞
まず、図１及び図２を用いて、本明細書で開示する技術を適用可能な一例としての装置の概要を説明する。本明細書で開示する技術は、例えば、画像符号化装置及び画像復号装置に適用可能である。
【００１８】
［１−１．画像符号化装置］
図１は、一実施形態に係る画像符号化装置１０の構成の一例を示すブロック図である。図１を参照すると、画像符号化装置１０は、Ａ／Ｄ（Analogue  to  Digital）変換部１１、並べ替えバッファ１２、減算部１３、直交変換部１４、量子化部１５、可逆符号化部１６、蓄積バッファ１７、レート制御部１８、逆量子化部２１、逆直交変換部２２、加算部２３、デブロックフィルタ２４ａ、フレームメモリ２５、セレクタ２６、イントラ予測部３０、動き探索部４０、及びモード選択部５０を備える。
【００１９】
Ａ／Ｄ変換部１１は、アナログ形式で入力される画像信号をデジタル形式の画像データに変換し、一連のデジタル画像データを並べ替えバッファ１２へ出力する。
【００２０】
並べ替えバッファ１２は、Ａ／Ｄ変換部１１から入力される一連の画像データに含まれる画像を並べ替える。並べ替えバッファ１２は、符号化処理に係るＧＯＰ（Group  of  Pictures）構造に応じて画像を並べ替えた後、並べ替え後の画像データを減算部１３、イントラ予測部３０及び動き探索部４０へ出力する。
【００２１】
減算部１３には、並べ替えバッファ１２から入力される画像データ、及び後に説明するモード選択部５０により選択される予測画像データが供給される。減算部１３は、並べ替えバッファ１２から入力される画像データとモード選択部５０から入力される予測画像データとの差分である予測誤差データを算出し、算出した予測誤差データを直交変換部１４へ出力する。
【００２２】
直交変換部１４は、減算部１３から入力される予測誤差データについて直交変換を行う。直交変換部１４により実行される直交変換は、例えば、離散コサイン変換（Discrete  Cosine  Transform：ＤＣＴ）又はカルーネン・レーベ変換などであってよい。直交変換部１４は、直交変換処理により取得される変換係数データを量子化部１５へ出力する。
【００２３】
量子化部１５には、直交変換部１４から入力される変換係数データ、及び後に説明するレート制御部１８からのレート制御信号が供給される。量子化部１５は、変換係数データを量子化し、量子化後の変換係数データ（以下、量子化データという）を可逆符号化部１６及び逆量子化部２１へ出力する。また、量子化部１５は、レート制御部１８からのレート制御信号に基づいて量子化パラメータ（量子化スケール）を切替えることにより、可逆符号化部１６に入力される量子化データのビットレートを変化させる。
【００２４】
可逆符号化部１６には、量子化部１５から入力される量子化データ、及び、後に説明するイントラ予測部３０又は動き探索部４０により生成されモード選択部５０により選択されるイントラ予測又はインター予測に関する情報が供給される。イントラ予測に関する情報は、例えば、ブロックごとの最適なイントラ予測モードを示す予測モード情報を含み得る。また、インター予測に関する情報は、例えば、ブロックごとの動きベクトルの予測のための予測モード情報、差分動きベクトル情報、及び参照画像情報などを含み得る。
【００２５】
可逆符号化部１６は、量子化データについて可逆符号化処理を行うことにより、符号化ストリームを生成する。可逆符号化部１６による可逆符号化は、例えば、可変長符号化、又は算術符号化などであってよい。また、可逆符号化部１６は、上述したイントラ予測に関する情報又はインター予測に関する情報を、符号化ストリームのヘッダ（例えばブロックヘッダ又はスライスヘッダなど）内に多重化する。そして、可逆符号化部１６は、生成した符号化ストリームを蓄積バッファ１７へ出力する。
【００２６】
蓄積バッファ１７は、可逆符号化部１６から入力される符号化ストリームを半導体メモリなどの記憶媒体を用いて一時的に蓄積する。そして、蓄積バッファ１７は、蓄積した符号化ストリームを、伝送路（又は画像符号化装置１０からの出力線）の帯域に応じたレートで出力する。
【００２７】
レート制御部１８は、蓄積バッファ１７の空き容量を監視する。そして、レート制御部１８は、蓄積バッファ１７の空き容量に応じてレート制御信号を生成し、生成したレート制御信号を量子化部１５へ出力する。例えば、レート制御部１８は、蓄積バッファ１７の空き容量が少ない時には、量子化データのビットレートを低下させるためのレート制御信号を生成する。また、例えば、レート制御部１８は、蓄積バッファ１７の空き容量が十分大きい時には、量子化データのビットレートを高めるためのレート制御信号を生成する。
【００２８】
逆量子化部２１は、量子化部１５から入力される量子化データについて逆量子化処理を行う。そして、逆量子化部２１は、逆量子化処理により取得される変換係数データを、逆直交変換部２２へ出力する。
【００２９】
逆直交変換部２２は、逆量子化部２１から入力される変換係数データについて逆直交変換処理を行うことにより、予測誤差データを復元する。そして、逆直交変換部２２は、復元した予測誤差データを加算部２３へ出力する。
【００３０】
加算部２３は、逆直交変換部２２から入力される復元された予測誤差データとモード選択部５０から入力される予測画像データとを加算することにより、復号画像データを生成する。そして、加算部２３は、生成した復号画像データをデブロックフィルタ２４ａ及びフレームメモリ２５へ出力する。
【００３１】
デブロックフィルタ２４ａは、画像の符号化の際に生じるブロック歪みを減少させるためのフィルタリング処理を行う。例えば、デブロックフィルタ２４ａは、加算部２３から入力される復号画像データについてブロックの境界ごとにフィルタリングの要否を判定し、フィルタを適用すべきであると判定した境界にデブロックフィルタを適用する。デブロックフィルタ２４ａには、加算部２３からの復号画像データに加えて、フィルタリングの要否の判定のために使用される情報（例えば、モード情報、変換係数情報及び動きベクトル情報）も入力される。そして、デブロックフィルタ２４ａは、ブロック歪みの除去されたフィルタリング後の復号画像データをフレームメモリ２５へ出力する。なお、デブロックフィルタ２４ａによる処理について、後に詳細に説明する。
【００３２】
フレームメモリ２５は、加算部２３から入力される復号画像データ、及びデブロックフィルタ２４ａから入力されるフィルタリング後の復号画像データを記憶媒体を用いて記憶する。
【００３３】
セレクタ２６は、イントラ予測のために使用されるフィルタリング前の復号画像データをフレームメモリ２５から読み出し、読み出した復号画像データを参照画像データとしてイントラ予測部３０に供給する。また、セレクタ２６は、インター予測のために使用されるフィルタリング後の復号画像データをフレームメモリ２５から読み出し、読み出した復号画像データを参照画像データとして動き探索部４０に供給する。
【００３４】
イントラ予測部３０は、並べ替えバッファ１２から入力される符号化対象の画像データ、及びセレクタ２６を介して供給される復号画像データに基づいて、各イントラ予測モードのイントラ予測処理を行う。例えば、イントラ予測部３０は、各イントラ予測モードによる予測結果を所定のコスト関数を用いて評価する。そして、イントラ予測部３０は、コスト関数値が最小となるイントラ予測モード、即ち圧縮率が最も高くなるイントラ予測モードを、最適なイントラ予測モードとして選択する。さらに、イントラ予測部３０は、当該最適なイントラ予測モードを示す予測モード情報、予測画像データ、及びコスト関数値などのイントラ予測に関する情報を、モード選択部５０へ出力する。
【００３５】
動き探索部４０は、並べ替えバッファ１２から入力される符号化対象の画像データ、及びセレクタ２６を介して供給される復号画像データに基づいて、インター予測処理（フレーム間予測処理）を行う。例えば、動き探索部４０は、各予測モードによる予測結果を所定のコスト関数を用いて評価する。次に、動き探索部４０は、コスト関数値が最小となる予測モード、即ち圧縮率が最も高くなる予測モードを、最適な予測モードとして選択する。また、動き探索部４０は、当該最適な予測モードに従って予測画像データを生成する。そして、動き探索部４０は、選択した最適な予測モードを示す予測モード情報、予測画像データ、及びコスト関数値などのインター予測に関する情報を、モード選択部５０へ出力する。
【００３６】
モード選択部５０は、イントラ予測部３０から入力されるイントラ予測に関するコスト関数値と動き探索部４０から入力されるインター予測に関するコスト関数値とを比較する。そして、モード選択部５０は、イントラ予測及びインター予測のうちコスト関数値がより少ない予測手法を選択する。モード選択部５０は、イントラ予測を選択した場合には、イントラ予測に関する情報を可逆符号化部１６へ出力すると共に、予測画像データを減算部１３及び加算部２３へ出力する。また、モード選択部５０は、インター予測を選択した場合には、インター予測に関する上述した情報を可逆符号化部１６へ出力すると共に、予測画像データを減算部１３及び加算部２３へ出力する。
【００３７】
［１−２．画像復号装置］
図２は、一実施形態に係る画像復号装置６０の構成の一例を示すブロック図である。図２を参照すると、画像復号装置６０は、蓄積バッファ６１、可逆復号部６２、逆量子化部６３、逆直交変換部６４、加算部６５、デブロックフィルタ２４ｂ、並べ替えバッファ６７、Ｄ／Ａ（Digital  to  Analogue）変換部６８、フレームメモリ６９、セレクタ７０及び７１、イントラ予測部８０、並びに動き補償部９０を備える。
【００３８】
蓄積バッファ６１は、伝送路を介して入力される符号化ストリームを記憶媒体を用いて一時的に蓄積する。
【００３９】
可逆復号部６２は、蓄積バッファ６１から入力される符号化ストリームを、符号化の際に使用された符号化方式に従って復号する。また、可逆復号部６２は、符号化ストリームのヘッダ領域に多重化されている情報を復号する。符号化ストリームのヘッダ領域に多重化されている情報とは、例えば、ブロックヘッダ内のイントラ予測に関する情報及びインター予測に関する情報を含み得る。可逆復号部６２は、イントラ予測に関する情報をイントラ予測部８０へ出力する。また、可逆復号部６２は、インター予測に関する情報を動き補償部９０へ出力する。
【００４０】
逆量子化部６３は、可逆復号部６２による復号後の量子化データを逆量子化する。逆直交変換部６４は、符号化の際に使用された直交変換方式に従い、逆量子化部６３から入力される変換係数データについて逆直交変換を行うことにより、予測誤差データを生成する。そして、逆直交変換部６４は、生成した予測誤差データを加算部６５へ出力する。
【００４１】
加算部６５は、逆直交変換部６４から入力される予測誤差データと、セレクタ７１から入力される予測画像データとを加算することにより、復号画像データを生成する。そして、加算部６５は、生成した復号画像データをデブロックフィルタ２４ｂ及びフレームメモリ６９へ出力する。
【００４２】
デブロックフィルタ２４ｂは、復号された画像に現れるブロック歪みを減少させるためのフィルタリング処理を行う。デブロックフィルタ２４ｂは、例えば、加算部６５から入力される復号画像データについてブロックの境界ごとにフィルタリングの要否を判定し、フィルタを適用すべきであると判定した境界にデブロックフィルタを適用する。デブロックフィルタ２４ｂには、加算部６５からの復号画像データに加えて、フィルタリングの要否の判定のために使用される情報も入力される。そして、デブロックフィルタ２４ｂは、ブロック歪みの除去されたフィルタリング後の復号画像データを並べ替えバッファ６７及びフレームメモリ６９へ出力する。なお、デブロックフィルタ２４ｂによる処理について、後に詳細に説明する。
【００４３】
並べ替えバッファ６７は、デブロックフィルタ２４ｂから入力される画像を並べ替えることにより、時系列の一連の画像データを生成する。そして、並べ替えバッファ６７は、生成した画像データをＤ／Ａ変換部６８へ出力する。
【００４４】
Ｄ／Ａ変換部６８は、並べ替えバッファ６７から入力されるデジタル形式の画像データをアナログ形式の画像信号に変換する。そして、Ｄ／Ａ変換部６８は、例えば、画像復号装置６０と接続されるディスプレイ（図示せず）にアナログ画像信号を出力することにより、画像を表示させる。
【００４５】
フレームメモリ６９は、加算部６５から入力されるフィルタリング前の復号画像データ、及びデブロックフィルタ２４ｂから入力されるフィルタリング後の復号画像データを記憶媒体を用いて記憶する。
【００４６】
セレクタ７０は、可逆復号部６２により取得されるモード情報に応じて、画像内のブロックごとに、フレームメモリ６９からの画像データの出力先をイントラ予測部８０と動き補償部９０との間で切り替える。例えば、セレクタ７０は、イントラ予測モードが指定された場合には、フレームメモリ６９から供給されるフィルタリング前の復号画像データを参照画像データとしてイントラ予測部８０へ出力する。また、セレクタ７０は、インター予測モードが指定された場合には、フレームメモリ６９から供給されるフィルタリング後の復号画像データを参照画像データとして動き補償部９０へ出力する。
【００４７】
セレクタ７１は、可逆復号部６２により取得されるモード情報に応じて、画像内のブロックごとに、加算部６５へ供給すべき予測画像データの出力元をイントラ予測部８０と動き補償部９０との間で切り替える。例えば、セレクタ７１は、イントラ予測モードが指定された場合には、イントラ予測部８０から出力される予測画像データを加算部６５へ供給する。セレクタ７１は、インター予測モードが指定された場合には、動き補償部９０から出力される予測画像データを加算部６５へ供給する。
【００４８】
イントラ予測部８０は、可逆復号部６２から入力されるイントラ予測に関する情報とフレームメモリ６９からの参照画像データとに基づいて画素値の画面内予測を行い、予測画像データを生成する。そして、イントラ予測部８０は、生成した予測画像データをセレクタ７１へ出力する。
【００４９】
動き補償部９０は、可逆復号部６２から入力されるインター予測に関する情報とフレームメモリ６９からの参照画像データとに基づいて動き補償処理を行い、予測画像データを生成する。そして、動き補償部９０は、生成した予測画像データをセレクタ７１へ出力する。
【００５０】
＜２．既存の手法の説明＞
［２−１．デブロックフィルタの基本的な構成］
一般的に、Ｈ．２６４／ＡＶＣ又はＨＥＶＣなどの既存の画像符号化方式におけるデブロックフィルタによる処理は、フィルタリング要否判定処理及びフィルタリング処理という２種類の処理を含む。以下、ＨＥＶＣを例にとって、これら２つの処理について説明する。
【００５１】
（１）フィルタリング要否判定処理
フィルタリング要否判定処理は、入力画像内のブロックの境界ごとにデブロックフィルタを適用すべきか否かを判定する処理である。ブロックの境界は、左右に隣接するブロック間の垂直境界と、上下に隣接するブロック間の水平境界とを含む。ＪＣＴＶＣ−Ａ１１９では、８×８画素のブロックサイズが最小の処理単位である。例えば、１６×１６画素のマクロブロック内には４つの８×８画素のブロックが存在し、ブロックごとに１つの（左の）垂直境界及び１つの（上の）水平境界、即ち合計で４＋４＝８個の境界が判定の対象となる。なお、本明細書において、マクロブロックとの用語は、ＨＥＶＣの文脈における符号化単位（ＣＵ：Coding  Unit）をも含むものとする。
【００５２】
図３は、境界を挟んで隣接する２つのブロック（隣接ブロック）Ｂａ及びＢｂ内の画素の一例を示す説明図である。ここでは垂直境界を例にとって説明するが、当然ながら、ここで説明された事項は水平境界にも同等に適用可能である。図３の例において、ブロックＢａ内の画素は、ｐｉｊという記号で示されている。ｉは列のインデックス、ｊは行のインデックスである。列のインデックスｉは、垂直境界に近い列から順に（右から左へ）０，１，２，３と付番されている。行のインデックスｊは、上から下へ０，１，２，…，７と付番されている。なお、ブロックＢａの左半分は図中で省略されている。一方、ブロックＢｂ内の画素は、ｑｋｊという記号で示されている。ｋは列のインデックス、ｊは行のインデックスである。列のインデックスｋは、垂直境界に近い列から順に（左から右へ）０，１，２，３と付番されている。なお、ブロックＢｂの右半分もまた図中で省略されている。
【００５３】
図３に示したブロックＢａ及びＢｂの間の垂直境界について、デブロックフィルタを適用すべきか否かは、次のような条件に従って判定され得る：
【００５４】
・輝度成分（Luma）の判定条件・・・条件Ａ及び条件Ｂがいずれも真なら適用
−条件Ａ：
（Ａ１）ブロックＢａ若しくはＢｂがイントラ予測モードである；
（Ａ２）ブロックＢａ若しくはＢｂが非ゼロの直交変換係数を有する；又は
（Ａ３）｜ＭＶＡｘ−ＭＶＢｘ｜≧４若しくは｜ＭＶＡｙ−ＭＶＢｙ｜≧４
−条件Ｂ：
｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２５−２ｐ１５＋ｐ０５｜＋｜ｑ２５−２ｑ１５＋ｑ０５｜＜β
【００５５】
なお、条件Ａ３に関し、Ｑｐｅｌ（１／４画素）精度のブロックＢａの動きベクトルを（ＭＶＡｘ，ＭＶＡｙ）、ブロックＢｂの動きベクトルを（ＭＶＢｘ，ＭＶＢｙ）とする。また、条件Ｂにおけるβは、エッジ判定閾値である。βの初期値は量子化パラメータに応じて与えられる。また、βの値は、スライスヘッダ内のパラメータでユーザにより指定可能である。
【００５６】
・色差成分（Chroma）の判定条件・・・条件Ａ１が真なら適用
−条件Ａ１：ブロックＢａ又はＢｂがイントラ予測モードである
【００５７】
即ち、図４において点線枠Ｌ３及びＬ６で示しているように、一般的な垂直境界についてのフィルタリング要否判定処理（特に、輝度成分の判定条件Ｂの判定）では、各ブロックの３番目及び６番目の行（最も上の行を１番目とする）の画素が参照される。同様に、水平境界についてのフィルタリング要否判定処理では、各ブロックの３番目及び６番目の列の画素（図４には示していない）が参照される。そして、上述した判定条件に従ってデブロックフィルタを適用すべきと判定された境界について、次に説明するフィルタリング処理が行われる。
【００５８】
（２）フィルタリング処理
ある境界についてデブロックフィルタを適用すべきと判定されると、垂直境界については当該境界の左右の画素、水平境界については当該境界の上下の画素に、フィルタリング処理が行われる。輝度成分については、画素値に応じてフィルタ強度が強（strong）フィルタと弱（weak）フィルタとの間で切り替えられ得る。
【００５９】
・輝度成分のフィルタリング
−強度選択・・・１行ごと（又は１列ごと）にフィルタ強度を選択。以下の条件Ｃ１〜Ｃ３が全て満たされる場合には強フィルタ、いずれか１つでも満たされない場合には弱フィルタが選択される：
（Ｃ１）ｄ＜（β>>２）
（Ｃ２）（｜ｐ３ｊ−ｐ０ｊ｜＋｜ｑ０ｊ−ｑ３ｊ｜）＜（β>>３）
（Ｃ３）｜ｐ０ｊ−ｑ０ｊ｜＜（（５ｔＣ＋１）>>１）
ここで、ｊは、垂直境界については行、水平境界については列のインデックスである。また、ｄ＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２５−２ｐ１５＋ｐ０５｜＋｜ｑ２５−２ｑ１５＋ｑ０５｜である。
【００６０】
−弱フィルタリング：
Δ＝Ｃｌｉｐ（−ｔＣ，ｔＣ，（１３（ｑ０ｊ−ｐ０ｊ）＋４（ｑ１ｊ−ｐ１ｊ）−５（ｑ２ｊ−ｐ２ｊ）＋１６）>>５））
ｐ０ｊ＝Ｃｌｉｐ０−２５５（ｐ０ｊ＋Δ）
ｑ０ｊ＝Ｃｌｉｐ０−２５５（ｑ０ｊ−Δ）
ｐ１ｊ＝Ｃｌｉｐ０−２５５（ｐ１ｊ＋Δ／２）
ｑ１ｊ＝Ｃｌｉｐ０−２５５（ｑ１ｊ−Δ／２）
【００６１】
−強フィルタリング：
ｐ０ｊ＝Ｃｌｉｐ０−２５５（（ｐ２ｊ＋２ｐ１ｊ＋２ｐ０ｊ＋２ｑ０ｊ＋ｑ１ｊ＋４）>>３）
ｑ０ｊ＝Ｃｌｉｐ０−２５５（（ｐ１ｊ＋２ｐ０ｊ＋２ｑ０ｊ＋２ｑ１ｊ＋ｑ２ｊ＋４）>>３）
ｐ１ｊ＝Ｃｌｉｐ０−２５５（（ｐ２ｊ＋ｐ１ｊ＋ｐ０ｊ＋ｑ０ｊ＋２）>>２）
ｑ１ｊ＝Ｃｌｉｐ０−２５５（（ｐ０ｊ＋ｑ０ｊ＋ｑ１ｊ＋ｑ２ｊ＋２）>>２）
ｐ２ｊ＝Ｃｌｉｐ０−２５５（（２ｐ３ｊ＋３ｐ２ｊ＋ｐ１ｊ＋ｐ０ｊ＋ｑ０ｊ＋４）>>３）
ｑ２ｊ＝Ｃｌｉｐ０−２５５（（ｐ０ｊ＋ｑ０ｊ＋ｑ１ｊ＋３ｑ２ｊ＋２ｑ３ｊ＋４）>>３）
【００６２】
なお、Ｃｌｉｐ（ａ，ｂ，ｃ）は値ｃをａ≦ｃ≦ｂの範囲でクリップする処理、Ｃｌｉｐ０−２５５（ｃ）は値ｃを０≦ｃ≦２５５の範囲でクリップする処理をそれぞれ表す。
【００６３】
・色差成分のフィルタリング：
Δ＝Ｃｌｉｐ（−ｔＣ，ｔＣ，（（（（ｑ０ｊ−ｐ０ｊ）<<２）＋ｐ１ｊ−ｑ１ｊ＋４）>>３））
ｐ０ｊ＝Ｃｌｉｐ０−２５５（ｐ０ｊ＋Δ）
ｑ０ｊ＝Ｃｌｉｐ０−２５５（ｑ０ｊ−Δ）
【００６４】
即ち、図５において点線枠Ｃ６〜Ｃ８及びＣ１〜Ｃ３で示しているように、一般的な垂直境界についてのフィルタリング処理（特に、輝度成分の強フィルタリング）では、各ブロックの１〜３番目及び６〜８番目の列の画素値が更新される。同様に、水平境界についてのフィルタリング処理では、各ブロックの１〜３番目及び６〜８番目の行の画素値が更新される。
【００６５】
［２−２．既存の手法における処理間の依存関係］
ここで、説明のために、図６に示したように、１６×１６画素のサイズを有するマクロブロックＭＢｘ（ＭＢ０、ＭＢ１…）の左上の垂直境界をＶｘ，０、中央上の垂直境界をＶｘ，１、左下の垂直境界をＶｘ，２、中央下の垂直境界をＶｘ，３、左上の水平境界をＨｘ，０、右上の水平境界をＨｘ，１、左中央の水平境界をＨｘ，２、右中央の水平境界をＨｘ，３、と表すものとする。また、例えば境界Ｚについてのフィルタリング要否判定処理をＪＺ、フィルタリング処理をＦＺなどと表すものとする。
【００６６】
上述した既存の手法では、１つのマクロブロック内で同一方向の複数の境界についての処理の間に依存関係が存在しない。そのため、例えば１つのマクロブロック内で複数の垂直境界についてのフィルタリングを並列的に実行し、及び複数の水平境界についてのフィルタリングを並列的に実行することができる。一例として、図７を参照すると、マクロブロックＭＢ０内で、４つのフィルタリング処理ＦＶ０，０、ＦＶ０，１、ＦＶ０，２及びＦＶ０，３の間に依存関係がなく（即ち、重複して更新される画素がなく）、これらを並列的に実行できることが分かる。
【００６７】
しかし、上述した既存の手法では、垂直境界についてのフィルタリング処理と水平境界についてのフィルタリング要否判定処理との間の依存関係は残される。また、水平境界についてのフィルタリング処理と垂直境界についてのフィルタリング要否判定処理との間の依存関係も残される。従って、例えば垂直境界を水平境界よりも先に処理する場合、あるマクロブロック内での水平境界についてのフィルタリング要否判定処理は、垂直境界についてのフィルタリング処理の終了を待って実行されることになる。一例として、図８を参照すると、マクロブロックＭＢ０内で、フィルタリング処理ＦＶ０，０及びＦＶ０，１の結果にフィルタリング要否判定処理ＪＨ０，０が依存し、フィルタリング処理ＦＶ０，１の結果にフィルタリング要否判定処理ＪＨ０，１が依存することが示されている。同様に、あるマクロブロック内での垂直境界についてのフィルタリング要否判定処理は、隣りのマクロブロックの水平境界についてのフィルタリング処理の終了を待って実行されることになる。一例として、図９を参照すると、マクロブロックＭＢ０のフィルタリング処理ＦＨ０，１及びＦＨ０，３の結果にマクロブロックＭＢ１のフィルタリング要否判定処理ＪＶ１，０が依存し、マクロブロックＭＢ０のフィルタリング処理ＦＨ０，３の結果にマクロブロックＭＢ１のフィルタリング要否判定処理ＪＶ１，２が依存することが示されている。
【００６８】
既存の手法は、このような処理間の依存関係を有しているため、例えばＪＣＴＶＣ−Ａ１１９において提案された手法を採用したとしても、非常に限られた範囲でしかデブロックフィルタの処理の並列化を達成することができない。
【００６９】
図１０は、既存の手法におけるデブロックフィルタの処理の順序の一例について説明するための説明図である。ここでは、一例として、３２×３２画素のサイズを有する画像がデブロックフィルタに入力されるものとする。当該入力画像は、それぞれ１６×１６画素のサイズを有する４つのマクロブロックＭＢ０〜ＭＢ３を含む。
【００７０】
図１０を参照すると、並列的に実行され得る処理が各点線枠内にそれぞれ示されている。例えば、第１ステップでは、マクロブロックＭＢ０の４つの垂直境界についてのフィルタリング要否判定処理ＪＶ０，０、ＪＶ０，１、ＪＶ０，２及びＪＶ０，３が並列的に実行される。次に、第２ステップでは、マクロブロックＭＢ０の４つの垂直境界についてのフィルタリング処理ＦＶ０，０、ＦＶ０，１、ＦＶ０，２及びＦＶ０，３が並列的に実行される。次に、第２ステップが終了した後、第３ステップにおいて、マクロブロックＭＢ０の４つの水平境界についてのフィルタリング要否判定処理ＪＨ０，０、ＪＨ０，１、ＪＨ０，２及びＪＨ０，３が並列的に実行される。この第３ステップにおいては、第２ステップにおける垂直境界についてのフィルタリング処理後の画素値が、水平境界についてのフィルタリング要否判定処理のために使用される。次に、第４ステップでは、マクロブロックＭＢ０の４つの水平境界についてのフィルタリング処理ＦＨ０，０、ＦＨ０，１、ＦＨ０，２及びＦＨ０，３が並列的に実行される。次に、第４ステップが終了した後、マクロブロックＭＢ１についての処理（第５ステップ〜第８ステップ）が順次行われる。このうち第５ステップにおいては、第４ステップにおけるマクロブロックＭＢ０の水平境界についてのフィルタリング処理後の画素値が、マクロブロックＭＢ１の垂直境界についてのフィルタリング要否判定処理のために使用される。次に、マクロブロックＭＢ１についての処理が終了した後、マクロブロックＭＢ２についての処理（第９ステップ〜第１２ステップ）が順次行われる。次に、マクロブロックＭＢ２についての処理が終了した後、マクロブロックＭＢ３についての処理（第１３ステップ〜第１６ステップ）が順次行われる。
【００７１】
このような限られた範囲での処理の並列化では、デブロックフィルタの適用に際しての多大な処理量を原因とする遅延又はデータレートの低下などの課題が十分に解決されるとは言い難い。そこで、以下に説明するデブロックフィルタの３つの実施例により、デブロックフィルタの適用に際しての処理のさらなる並列化を実現する。
【００７２】
＜３．第１の実施例＞
［３−１．デブロックフィルタの構成例］
本節では、図１に示した画像符号化装置１０のデブロックフィルタ２４ａ及び図２に示した画像復号装置６０のデブロックフィルタ２４ｂの第１の実施例に係る構成の一例を説明する。なお、デブロックフィルタ２４ａ及びデブロックフィルタ２４ｂの構成は、共通であってよい。従って、これ以降の説明では、特に両者を区別する必要が無い場合には、デブロックフィルタ２４ａ及びデブロックフィルタ２４ｂをデブロックフィルタ２４と総称する。
【００７３】
（１）新たな処理間の依存関係
本実施例においても、デブロックフィルタ２４による処理は、上述したフィルタリング要否判定処理及びフィルタリング処理という２種類の処理を含む。但し、デブロックフィルタ２４は、垂直境界及び水平境界の一方についてのフィルタリング要否判定処理において、複数のマクロブロックにわたって、デブロックフィルタへの入力画像の画素値を判定のために使用する。それにより、例えば垂直境界が水平境界よりも先に処理さる場合には、デブロックフィルタ２４は、あるブロックの垂直境界についてのフィルタリング要否判定処理を、隣りのブロックの水平境界についてのフィルタリング処理を待つことなく実行することができる。また、水平境界が垂直境界よりも先に処理さる場合には、デブロックフィルタ２４は、あるブロックの水平境界についてのフィルタリング要否判定処理を、隣りのブロックの垂直境界についてのフィルタリング処理を待つことなく実行することができる。従って、マクロブロック間での処理の依存関係が緩和される。
【００７４】
マクロブロック間での処理の依存関係が緩和されることで、画像内の複数のマクロブロック間で処理を並列化することが可能となる。例えば、入力画像内の全てのブロックの垂直境界についてのフィルタリング要否判定処理を並列的に行うことができる。また、入力画像内の全てのブロックの水平境界についてのフィルタリング要否判定処理を並列的に行うこともできる。
【００７５】
図１１は、本実施例において実現可能な処理の順序の一例について説明するための説明図である。ここでも、一例として、３２×３２画素のサイズを有する画像がデブロックフィルタに入力されるものとする。当該入力画像は、それぞれ１６×１６画素のサイズを有する４つのマクロブロックＭＢ０〜ＭＢ３を含む。
【００７６】
図１１を参照すると、並列的に実行され得る処理が各点線枠内にそれぞれ示されている。図１０の例では一連の処理に１６個の処理ステップを要していたのに対し、図１１の例では、同じ数の処理が４個の処理ステップに集約されている。即ち、第１ステップでは、全てのマクロブロックＭＢ０〜ＭＢ３の全ての垂直境界についてのフィルタリング要否判定処理ＪＶ０，０〜ＪＶ３，３が並列的に実行される。次に、第２ステップでは、全てのマクロブロックＭＢ０〜ＭＢ３の１６個の垂直境界についてのフィルタリング処理ＦＶ０，０〜ＦＶ３，３が並列的に実行される。次に、第３ステップでは、全てのマクロブロックＭＢ０〜ＭＢ３の全ての水平境界についてのフィルタリング要否判定処理ＪＨ０，０〜ＪＨ３，３が並列的に実行される。次に、第４ステップでは、全てのマクロブロックＭＢ０〜ＭＢ３の１６個の水平境界についてのフィルタリング処理ＦＨ０，０〜ＦＨ３，３が並列的に実行される。なお、水平境界が垂直境界よりも先に処理さる場合には、第１ステップ及び第２ステップの前に、第３ステップ及び第４ステップが実行されてよい。
【００７７】
図１１は、画像内の全てのマクロブロックにわたる処理の並列化により並列度（並列的に実行される処理の多さ）が最大限に高められる例である。但し、かかる例に限定されず、画像内の全てのマクロブロックではなく一部のマクロブロック群にわたって処理が並列化されてもよい。
【００７８】
（２）デブロックフィルタの詳細な構成
図１２は、上述した並列処理を実現する第１の実施例に係るデブロックフィルタ２４の詳細な構成の一例を示すブロック図である。図１２を参照すると、デブロックフィルタ２４は、垂直判定ブロック１１０、水平判定ブロック１１４、水平フィルタリングブロック１３０、垂直フィルタリングブロック１４０及び並列化制御部１５０を有する。
【００７９】
（２−１）垂直判定ブロック
垂直判定ブロック１１０は、複数の垂直境界判定部１１２−１〜１１２−ｎを含む。各垂直境界判定部１１２には、デブロックフィルタ２４への入力画像、及びフィルタリングの要否の判定のために使用される判定情報が供給される。
【００８０】
垂直境界判定部１１２−１〜１１２−ｎは、画像内の複数のマクロブロックにわたってデブロックフィルタ２４への入力画像の画素値を用いて、垂直境界についてデブロックフィルタを適用すべきか否かを判定する。そして、各垂直境界判定部１１２は、各垂直境界についての判定結果を示す情報（例えば、"１"がデブロックフィルタを適用すべきとの判定結果を示す二値情報）を、水平フィルタリングブロック１３０へ出力する。
【００８１】
（２−２）水平フィルタリングブロック
水平フィルタリングブロック１３０は、複数の水平フィルタリング部１３２−１〜１３２−ｎを含む。各水平フィルタリング部１３２には、入力画像及び垂直判定ブロック１１０からの各垂直境界についての判定結果が供給される。
【００８２】
各水平フィルタリング部１３２は、対応する垂直境界判定部１１２による判定結果がフィルタを適用すべきことを示している場合に、対応する垂直境界の左右の画素に垂直境界についてのデブロックフィルタを適用する。そして、各水平フィルタリング部１３２は、フィルタを適用した画素についてはフィルタリング後の画素値、その他の画素については入力画像の画素値を、水平判定ブロック１１４及び垂直フィルタリングブロック１４０へ出力する。
【００８３】
（２−３）水平判定ブロック
水平判定ブロック１１４は、複数の水平境界判定部１１６−１〜１１６−ｎを含む。各水平境界判定部１１６には、水平フィルタリングブロック１３０によるフィルタリング後の画素値、及びフィルタリングの要否の判定のために使用される判定情報が供給される。
【００８４】
水平境界判定部１１６−１〜１１６−ｎは、画像内の複数のマクロブロックにわたって水平フィルタリングブロック１３０によるフィルタリング後の画素値を用いて、水平境界についてデブロックフィルタを適用すべきか否かを判定する。そして、各水平境界判定部１１６は、各水平境界についての判定結果を示す情報を、垂直フィルタリングブロック１４０へ出力する。
【００８５】
（２−４）垂直フィルタリングブロック
垂直フィルタリングブロック１４０は、複数の垂直フィルタリング部１４２−１〜１４２−ｎを含む。各垂直フィルタリング部１４２には、水平フィルタリングブロック１３０によるフィルタリング後の画素値及び水平判定ブロック１１４からの各水平境界についての判定結果が供給される。
【００８６】
各垂直フィルタリング部１４２は、対応する水平境界判定部１１６による判定結果がフィルタを適用すべきことを示している場合に、対応する水平境界の上下の画素に水平境界についてのデブロックフィルタを適用する。そして、各垂直フィルタリング部１４２は、フィルタを適用した画素についてはフィルタリング後の画素値、その他の画素については水平フィルタリングブロック１３０から供給された画素値を出力する。各垂直フィルタリング部１４２からの出力は、デブロックフィルタ２４からの出力画像を構成し得る。
【００８７】
（３）判定部のさらに詳細な構成
図１３は、各垂直境界判定部１１２及び各水平境界判定部１１６のさらに詳細な構成の一例を示すブロック図である。図１３を参照すると、各判定部は、タップ構築部１２１、演算部１２２、閾値比較部１２３、歪み評価部１２４及びフィルタリング判定部１２５を含む。
【００８８】
タップ構築部１２１は、入力画像内で注目する境界を挟んで隣接する２つのブロックの画素値から参照画素の画素値を取得し、上述した輝度成分の判定条件Ｂの判定のためのタップ（参照画素値のセット）を構築する。例えば、各ブロックのサイズが８×８画素である場合において、注目する境界が垂直境界であるときは、タップ構築部１２１は、左右２つのブロックの３番目及び６番目の行に属する画素値からタップを構築する。また、注目する境界が水平境界であるときは、タップ構築部１２１は、上下２つのブロックの３番目及び６番目の列に属する画素値からタップを構築する。演算部１２２は、タップ構築部１２１により構築されたタップを判定条件Ｂの判定式の左辺に代入し、エッジ判定閾値βと比較されるエッジの値を算出する。閾値比較部１２３は、演算部１２２により算出された値をエッジ判定閾値βと比較し、比較結果をフィルタリング判定部１２５へ出力する。
【００８９】
歪み評価部１２４は、判定情報として供給されるモード情報（ＭＢモード）、変換係数情報及び動きベクトル情報を用いて、上述した輝度成分の判定条件Ａを評価する。そして、歪み評価部１２４は、評価結果をフィルタリング判定部１２５へ出力する。なお、色差成分については、歪み評価部１２４によるモード情報に基づく判定条件Ａ１についての判定のみが行われ得る。
【００９０】
フィルタリング判定部１２５は、閾値比較部１２３から入力される判定条件Ｂについての比較結果と、歪み評価部１２４から入力される判定条件Ａについての評価結果とに基づいて、注目する境界についてデブロックフィルタを適用すべきか否かを判定する。そして、フィルタリング判定部１２５は、判定結果を示す情報を出力する。
【００９１】
（４）並列化制御部
図１２に示した並列化制御部１５０は、垂直判定ブロック１１０及び水平判定ブロック１１４におけるフィルタリング要否判定処理の並列度、並びに水平フィルタリングブロック１３０及び垂直フィルタリングブロック１４０におけるフィルタリング処理の並列度を制御する。
【００９２】
例えば、並列化制御部１５０は、入力画像のサイズに基づいて、各ブロックの処理の並列度を制御してもよい。より具体的には、並列化制御部１５０は、入力画像のサイズが相対的に大きい場合に、各ブロックの処理の並列度を高める。それにより、画像のサイズに応じて増加する処理量を原因とする遅延又はデータレートの低下を適応的に防止することができる。また、例えば、並列化制御部１５０は、シーケンスパラメータセット、ピクチャパラメータセット又はスライスヘッダ内に含まれるパラメータに基づいて、各ブロックの処理の並列度を制御してもよい。それにより、装置を開発するユーザごとの要件に応じて柔軟に並列度を設定することが可能となる。例えば、プロセッサのコア数又はソフトウェアのスレッド数などの実装環境の制約に応じて並列度が設定されてもよい。
【００９３】
さらに、本実施例において、マクロブロック間の処理の並列化が可能ということは、画像内のブロックごとの処理の順序をどのように設定しても最終的に出力される結果に影響がないことを意味する。そこで、並列化制御部１５０は、垂直判定ブロック１１０及び水平判定ブロック１１４におけるフィルタリング要否判定処理の順序、並びに水平フィルタリングブロック１３０及び垂直フィルタリングブロック１４０におけるフィルタリング処理の順序をブロックごとに制御し得る。
【００９４】
より具体的には、並列化制御部１５０は、マクロブロック間のフィルタリング処理の依存関係に応じて、フィルタリング処理の順序を制御してもよい。例えば、既存の手法において、画像内のスライスごとの並列処理を実装しようとすると、スライス境界を挟んで隣接するマクロブロック間の処理の依存関係が処理の遅延を引き起こす場合がある。しかし、本実施例では、並列化制御部１５０は、スライス境界に隣接するマクロブロックについてのフィルタリング処理を他のマクロブロックよりも先に行わせることができる。
【００９５】
例えば、図１４には、スライス境界を挟んで隣接する８つのマクロブロックＭＢ１０〜ＭＢ１３及びＭＢ２０〜ＭＢ２３が示されている。このうち、マクロブロックＭＢ１０〜ＭＢ１３は、スライスＳＬ１に属する。マクロブロックＭＢ２０〜ＭＢ２３は、スライスＳＬ２に属する。これらマクロブロックのうち、スライスＳＬ２のマクロブロックＭＢ２０の水平境界についてのフィルタリング処理は、スライスＳＬ１のマクロブロックＭＢ１２の垂直境界についてのフィルタリング処理に依存する。同様に、スライスＳＬ２のマクロブロックＭＢ２１の水平境界についてのフィルタリング処理は、スライスＳＬ１のマクロブロックＭＢ１３の垂直境界についてのフィルタリング処理に依存する。
【００９６】
このような状況において、図１５の例のように、並列化制御部１５０は、例えば、スライスＳＬ１のフィルタリング処理のうちマクロブロックＭＢ１２及びＭＢ１３の垂直境界についてのフィルタリング処理を他の境界についての処理よりも優先的に実行させる。その結果、スライスＳＬ２のフィルタリング処理において、マクロブロックＭＢ２０及びＭＢ２１の水平境界についてのフィルタリング処理に大きな遅延が生じることが防がれる。また、図１６の例のように、スライスＳＬ１に含まれる全てのマクロブロックの垂直境界についてのフィルタリング処理が並列的に最初に実行される場合にも、スライスＳＬ２のマクロブロックＭＢ２０及びＭＢ２１の水平境界についてのフィルタリング処理に遅延は生じない。
【００９７】
［３−２．判定条件の変形例］
前項では、各垂直境界判定部１１２は、図４に示した既存の手法のように、ブロックの３番目及び６番目の行の画素を参照して、各ブロックの垂直境界についてのフィルタリングの要否を判定する、と説明した。同様に、各水平境界判定部１１６は、ブロックの３番目及び６番目の列の画素を参照して、各ブロックの水平境界についてのフィルタリングの要否を判定する、と説明した。このような場合には、既存の装置に実装されているフィルタリング要否判定処理の判定条件を変えることなく、本実施例に係る構成を容易に実現することができる。
【００９８】
しかしながら、各垂直境界判定部１１２及び各水平境界判定部１１６は、判定に際して、既存の手法とは異なる判定条件を使用してもよい。例えば、各垂直境界判定部１１２は、ブロックの３つ以上の列の画素を参照してもよい。各水平境界判定部１１６は、ブロックの３つ以上の列の画素を参照してもよい。さらに、各垂直境界判定部１１２及び各水平境界判定部１１６は、既存の手法とは異なる判定条件式を使用してもよい。以下、図１７〜図１９を用いて、本実施例において実現され得る判定の手法の６つの例をそれぞれ説明する。
【００９９】
（１）第１の例
図１７は、判定の手法の第１及び第２の例をそれぞれ説明するための説明図である。第１及び第２の例では、垂直境界についてのフィルタリング要否判定処理（特に、輝度成分の判定条件Ｂの判定）において、各ブロックの１番目から８番目までの全ての行Ｌ１〜Ｌ８の画素が参照される。水平境界についてのフィルタリング要否判定処理においても、各ブロックの１番目から８番目までの全ての列の画素が参照される。
【０１００】
第１の例において、輝度成分の判定条件は、次のように定義され得る：
・輝度成分（Luma）の判定条件・・・条件Ａ及び条件Ｂがいずれも真なら適用
−条件Ａ：
（Ａ１）ブロックＢａ若しくはＢｂがイントラ予測モードである；
（Ａ２）ブロックＢａ若しくはＢｂが非ゼロの直交変換係数を有する；又は
（Ａ３）｜ＭＶＡｘ−ＭＶＢｘ｜≧４若しくは｜ＭＶＡｙ−ＭＶＢｙ｜≧４
−条件Ｂ：
ｉＤ０＝｜ｐ２０−２ｐ１０＋ｐ００｜＋｜ｑ２０−２ｑ１０＋ｑ００｜＋｜ｐ２７−２ｐ１７＋ｐ０７｜＋｜ｑ２７−２ｑ１７＋ｑ０７｜
ｉＤ１＝｜ｐ２１−２ｐ１１＋ｐ０１｜＋｜ｑ２１−２ｑ１１＋ｑ０１｜＋｜ｐ２６−２ｐ１６＋ｐ０６｜＋｜ｑ２６−２ｑ１６＋ｑ０６｜
ｉＤ２＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２５−２ｐ１５＋ｐ０５｜＋｜ｑ２５−２ｑ１５＋ｑ０５｜
ｉＤ３＝｜ｐ２３−２ｐ１３＋ｐ０３｜＋｜ｑ２３−２ｑ１３＋ｑ０３｜＋｜ｐ２４−２ｐ１４＋ｐ０４｜＋｜ｑ２４−２ｑ１４＋ｑ０４｜
ｉＤａｖｅ＝（ｉＤ０＋ｉＤ１＋ｉＤ２＋ｉＤ３）>>２
とした場合に、ｉＤａｖｅ＜β
【０１０１】
色差成分の判定条件は、既に説明した既存の手法と同様であってよい。なお、４つの判定用パラメータｉＤ０〜ｉＤ３の平均値ｉＤａｖｅの算出に際して、重み付け平均が計算されてもよい。
【０１０２】
（２）第２の例
第２の例において、輝度成分の判定条件Ｂは、次のように定義され得る：
−条件Ｂ：
ｉＤ０＝｜ｐ２０−２ｐ１０＋ｐ００｜＋｜ｑ２０−２ｑ１０＋ｑ００｜＋｜ｐ２７−２ｐ１７＋ｐ０７｜＋｜ｑ２７−２ｑ１７＋ｑ０７｜
ｉＤ１＝｜ｐ２１−２ｐ１１＋ｐ０１｜＋｜ｑ２１−２ｑ１１＋ｑ０１｜＋｜ｐ２６−２ｐ１６＋ｐ０６｜＋｜ｑ２６−２ｑ１６＋ｑ０６｜
ｉＤ２＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２５−２ｐ１５＋ｐ０５｜＋｜ｑ２５−２ｑ１５＋ｑ０５｜
ｉＤ３＝｜ｐ２３−２ｐ１３＋ｐ０３｜＋｜ｑ２３−２ｑ１３＋ｑ０３｜＋｜ｐ２４−２ｐ１４＋ｐ０４｜＋｜ｑ２４−２ｑ１４＋ｑ０４｜
とした場合に、
ｉＤ０＜β  かつ  ｉＤ１＜β  かつ  ｉＤ２＜β  かつ  ｉＤ３＜β  
【０１０３】
４つの判定用パラメータｉＤ０〜ｉＤ３の算出式は、第１の例と同様である。なお、４つの判定用パラメータｉＤ０〜ｉＤ３の全てではなく少なくとも３つ、２つ又は１つがエッジ判定閾値βを下回る、という条件が使用されてもよい。
【０１０４】
（３）第３の例
図１８は、判定の手法の第３及び第４の例をそれぞれ説明するための説明図である。第３及び第４の例では、垂直境界についてのフィルタリング要否判定処理（特に、輝度成分の判定条件Ｂの判定）において、各ブロックの４つの行Ｌ１、Ｌ３、Ｌ６及びＬ８の画素が参照される。水平境界についてのフィルタリング要否判定処理においても、各ブロックの４つの列の画素が参照される。
【０１０５】
第３の例において、輝度成分の判定条件は、次のように定義され得る：
・輝度成分（Luma）の判定条件・・・条件Ａ及び条件Ｂがいずれも真なら適用
−条件Ａ：
（Ａ１）ブロックＢａ若しくはＢｂがイントラ予測モードである；
（Ａ２）ブロックＢａ若しくはＢｂが非ゼロの直交変換係数を有する；又は
（Ａ３）｜ＭＶＡｘ−ＭＶＢｘ｜≧４若しくは｜ＭＶＡｙ−ＭＶＢｙ｜≧４
−条件Ｂ：
ｉＤ０＝｜ｐ２０−２ｐ１０＋ｐ００｜＋｜ｑ２０−２ｑ１０＋ｑ００｜＋｜ｐ２７−２ｐ１７＋ｐ０７｜＋｜ｑ２７−２ｑ１７＋ｑ０７｜
ｉＤ２＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２５−２ｐ１５＋ｐ０５｜＋｜ｑ２５−２ｑ１５＋ｑ０５｜
ｉＤａｖｅ＝（ｉＤ０＋ｉＤ２）>>１
とした場合に、ｉＤａｖｅ＜β
【０１０６】
色差成分の判定条件は、既に説明した既存の手法と同様であってよい。なお、２つの判定用パラメータｉＤ０及びｉＤ２の平均値ｉＤａｖｅの算出に際して、重み付け平均が計算されてもよい。
【０１０７】
（４）第４の例
第４の例において、輝度成分の判定条件Ｂは、次のように定義され得る：
−条件Ｂ：
ｉＤ０＝｜ｐ２０−２ｐ１０＋ｐ００｜＋｜ｑ２０−２ｑ１０＋ｑ００｜＋｜ｐ２７−２ｐ１７＋ｐ０７｜＋｜ｑ２７−２ｑ１７＋ｑ０７｜
ｉＤ２＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２５−２ｐ１５＋ｐ０５｜＋｜ｑ２５−２ｑ１５＋ｑ０５｜
とした場合に、
ｉＤ０＜β  かつ  ｉＤ２＜β
【０１０８】
２つの判定用パラメータｉＤ０及びｉＤ２の算出式は、第３の例と同様である。なお、２つの判定用パラメータｉＤ０及びｉＤ２の双方ではなく少なくとも一方がエッジ判定閾値βを下回る、という条件が使用されてもよい。
【０１０９】
なお、ここではブロックの１番目、３番目、６番目及び８番目の行（又は列）Ｌ１、Ｌ３、Ｌ６及びＬ８が判定の際に参照される例を説明したが、行又は列の他の組合せが参照されてもよい。
【０１１０】
（５）第５の例
図１９は、判定の手法の第５及び第６の例をそれぞれ説明するための説明図である。第５及び第６の例では、垂直境界についてのフィルタリング要否判定処理において、各ブロックの４つの行Ｌ１、Ｌ３、Ｌ５及びＬ７の画素が参照される。水平境界についてのフィルタリング要否判定処理においても、各ブロックの４つの列の画素が参照される。
【０１１１】
第５の例において、輝度成分の判定条件は、次のように定義され得る：
・輝度成分（Luma）の判定条件・・・条件Ａ及び条件Ｂがいずれも真なら適用
−条件Ａ：
（Ａ１）ブロックＢａ若しくはＢｂがイントラ予測モードである；
（Ａ２）ブロックＢａ若しくはＢｂが非ゼロの直交変換係数を有する；又は
（Ａ３）｜ＭＶＡｘ−ＭＶＢｘ｜≧４若しくは｜ＭＶＡｙ−ＭＶＢｙ｜≧４
−条件Ｂ：
ｉＤ０＝｜ｐ２０−２ｐ１０＋ｐ００｜＋｜ｑ２０−２ｑ１０＋ｑ００｜＋｜ｐ２６−２ｐ１６＋ｐ０６｜＋｜ｑ２６−２ｑ１６＋ｑ０６｜
ｉＤ２＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２４−２ｐ１４＋ｐ０４｜＋｜ｑ２４−２ｑ１４＋ｑ０４｜
ｉＤａｖｅ＝（ｉＤ０＋ｉＤ２）>>１
とした場合に、ｉＤａｖｅ＜β
【０１１２】
色差成分の判定条件は、既に説明した既存の手法と同様であってよい。なお、２つの判定用パラメータｉＤ０及びｉＤ２の平均値ｉＤａｖｅの算出に際して、重み付け平均が計算されてもよい。
【０１１３】
（６）第６の例
第６の例において、輝度成分の判定条件Ｂは、次のように定義され得る：
−条件Ｂ：
ｉＤ０＝｜ｐ２０−２ｐ１０＋ｐ００｜＋｜ｑ２０−２ｑ１０＋ｑ００｜＋｜ｐ２６−２ｐ１６＋ｐ０６｜＋｜ｑ２６−２ｑ１６＋ｑ０６｜
ｉＤ２＝｜ｐ２２−２ｐ１２＋ｐ０２｜＋｜ｑ２２−２ｑ１２＋ｑ０２｜＋｜ｐ２４−２ｐ１４＋ｐ０４｜＋｜ｑ２４−２ｑ１４＋ｑ０４｜
とした場合に、
ｉＤ０＜β  かつ  ｉＤ２＜β
【０１１４】
２つの判定用パラメータｉＤ０及びｉＤ２の算出式は、第５の例と同様である。なお、２つの判定用パラメータｉＤ０及びｉＤ２の双方ではなく少なくとも一方がエッジ判定閾値βを下回る、という条件が使用されてもよい。
【０１１５】
一般的に、判定の際に参照される行及び列の数が多い程、判定の正確性は向上する。従って、８つの行及び列が参照される第１の例及び第２の例では、本来デブロックフィルタを適用すべきでないブロックがフィルタリングされる可能性、及び本来デブロックフィルタを適用すべきブロックがフィルタリングされない可能性を最小化することができる。その結果、符号化され及び復号される画像の画質が高められる。一方、判定の際に参照される行及び列の数を少なくすれば、処理コストを低減することができる。画質と処理コストとはトレードオフの関係にあるため、判定の際に参照すべき行及び列の数は、装置の用途又は実装の制約などに応じて適応的に選択されてもよい。また、参照すべき行の組合せ及び列の組合せが適応的に選択されてもよい。
【０１１６】
また、第１、第３及び第５の例のように、判定用パラメータの平均値ｉＤａｖｅをエッジ判定閾値βと比較することで、行又は列ごとのパラメータのばらつきに過度に影響を受けることなく、ブロック単位で適切な判定を行うことができる。
【０１１７】
［３−３．処理の流れ］
次に、図２０及び図２１を用いて、デブロックフィルタ２４による処理の流れを説明する。
【０１１８】
図２０は、第１の実施例におけるデブロックフィルタ２４による処理の流れの一例を示すフローチャートである。図２０を参照すると、まず、垂直境界判定部１１２−１〜１１２−ｎは、入力画像内の複数のマクロブロックに含まれる全ての垂直境界について、フィルタリングの要否を並列的に判定する（ステップＳ１１０）。次に、水平フィルタリング部１３２−１〜１３２−ｎは、ステップＳ１１０においてデブロックフィルタを適用すべきと判定された全ての垂直境界について、デブロックフィルタを並列的に適用する（ステップＳ１２０）。次に、水平境界判定部１１６−１〜１１６−ｎは、入力画像内の複数のマクロブロックに含まれる全ての水平境界について、フィルタリングの要否を並列的に判定する（ステップＳ１３０）。次に、垂直フィルタリング部１４２−１〜１４２−ｎは、ステップＳ１３０においてデブロックフィルタを適用すべきと判定された全ての水平境界について、デブロックフィルタを並列的に適用する（ステップＳ１４０）。
【０１１９】
なお、ここで説明した処理の流れは一例に過ぎない。即ち、２つ以上の任意の数のマクロブロックごとにデブロックフィルタ２４による処理は並列化されてよい。また、処理の順序も変更されてよい。
【０１２０】
図２１は、図２０のステップＳ１１０及びＳ１３０に相当するフィルタリング要否判定処理の流れの一例を示すフローチャートである。図２１を参照すると、まず、歪み評価部１２４は、モード情報、変換係数情報及び動きベクトル情報に基づいて、各境界の歪みを評価する（ステップＳ１５０）。ここで、歪みがあると評価された場合（判定条件Ａが真であった場合）には、処理はステップＳ１５４へ進む。一方、歪みがないと評価された場合には、処理はステップＳ１６０へ進む（ステップＳ１５２）。
【０１２１】
ステップＳ１５４では、タップ構築部１２１により構築された参照画素のタップに基づいて、演算部１２２により、エッジの値が算出される（ステップＳ１５４）。そして、閾値比較部１２３は、算出された値をエッジ判定閾値βと比較する（ステップＳ１５６）。ここで、エッジの値が閾値βよりも小さい場合（判定条件Ｂが真であった場合）には、処理はステップＳ１５８へ進む。一方、エッジの値が閾値βよりも小さくない場合には、処理はステップＳ１６０へ進む。
【０１２２】
ステップＳ１５８では、フィルタリング判定部１２５は、判定の対象の境界にデブロックフィルタを適用すべきであると判定する（ステップＳ１５８）。一方、ステップＳ１４０では、フィルタリング判定部１２５は、判定の対象の境界にデブロックフィルタを適用すべきでないと判定する（ステップＳ１６０）。
【０１２３】
＜４．第２の実施例＞
［４−１．デブロックフィルタの構成例］
本節では、デブロックフィルタ２４の第２の実施例に係る構成の一例を説明する。
【０１２４】
（１）新たな処理間の依存関係
本実施例では、デブロックフィルタ２４は、各ブロックの垂直境界についてのフィルタリング要否判定処理を、当該ブロックが属するマクロブロック内の他のブロックへのデブロックフィルタの適用を待つことなく実行する。また、デブロックフィルタ２４は、各ブロックの水平境界についてのフィルタリング要否判定処理を、当該ブロックが属するマクロブロック内の他のブロックへのデブロックフィルタの適用を待つことなく実行する。これにより、マクロブロック内での処理の依存関係が緩和される。
【０１２５】
上述したように処理の依存関係が緩和される結果として、マクロブロック内で垂直境界及び水平境界についてのフィルタリング要否判定処理を並列化することが可能となる。
【０１２６】
図２２は、本実施例において実現可能な処理の順序の一例について説明するための説明図である。ここでも、一例として、３２×３２画素のサイズを有する画像がデブロックフィルタに入力されるものとする。当該入力画像は、それぞれ１６×１６画素のサイズを有する４つのマクロブロックＭＢ０〜ＭＢ３を含む。
【０１２７】
図２２を参照すると、並列的に実行され得る処理が各点線枠内にそれぞれ示されている。図１０の例では一連の処理に１６個の処理ステップを要していたのに対し、図２２の例では、同じ数の処理が、１２個の処理ステップに集約されている。即ち、第１ステップでは、マクロブロックＭＢ０の４つの垂直境界及び４つの水平境界についてのフィルタリング要否判定処理ＪＶ０，０〜ＪＶ０，３及びＪＨ０，０〜ＪＨ０，３が並列的に実行される。次に、第２ステップでは、マクロブロックＭＢ０の４つの垂直境界についてのフィルタリング処理ＦＶ０，０〜ＦＶ０，３が並列的に実行される。次に、第３ステップでは、マクロブロックＭＢ１の４つの垂直境界及び４つの水平境界についてのフィルタリング要否判定処理ＪＶ１，０〜ＪＶ１，３及びＪＨ１，０〜ＪＨ１，３が並列的に実行される。次に、第４ステップでは、マクロブロックＭＢ１の４つの垂直境界についてのフィルタリング処理ＦＶ１，０〜ＦＶ１，３が並列的に実行される。次に、第５ステップでは、マクロブロックＭＢ０の４つの水平境界についてのフィルタリング処理ＦＨ０，０〜ＦＨ０，３が並列的に実行される。次に、第６ステップでは、マクロブロックＭＢ２の４つの垂直境界及び４つの水平境界についてのフィルタリング要否判定処理ＪＶ２，０〜ＪＶ２，３及びＪＨ２，０〜ＪＨ２，３が並列的に実行される。次に、第７ステップでは、マクロブロックＭＢ２の４つの垂直境界についてのフィルタリング処理ＦＶ２，０〜ＦＶ２，３が並列的に実行される。次に、第８ステップでは、マクロブロックＭＢ１の４つの水平境界についてのフィルタリング処理ＦＨ１，０〜ＦＨ１，３が並列的に実行される。次に、第９ステップでは、マクロブロックＭＢ３の４つの垂直境界及び４つの水平境界についてのフィルタリング要否判定処理ＪＶ３，０〜ＪＶ３，３及びＪＨ３，０〜ＪＨ３，３が並列的に実行される。次に、第１０ステップでは、マクロブロックＭＢ３の４つの垂直境界についてのフィルタリング処理ＦＶ３，０〜ＦＶ３，３が並列的に実行される。次に、第１１ステップでは、マクロブロックＭＢ２の４つの水平境界についてのフィルタリング処理ＦＨ２，０〜ＦＨ２，３が並列的に実行される。次に、第１２ステップでは、マクロブロックＭＢ３の４つの水平境界についてのフィルタリング処理ＦＨ３，０〜ＦＨ３，３が並列的に実行される。この場合にも、既存の手法よりも少ない数の処理ステップで入力画像全体についてのデブロックフィルタ２４の処理を実行することができる。
【０１２８】
（２）デブロックフィルタの詳細な構成
図２３は、上述した並列処理を実現する第２の実施例に係るデブロックフィルタ２４の詳細な構成の一例を示すブロック図である。図２３を参照すると、デブロックフィルタ２４は、垂直判定ブロック２１０、水平判定ブロック２１４、水平フィルタリングブロック１３０、垂直フィルタリングブロック１４０及び並列化制御部１５０を有する。
【０１２９】
（２−１）垂直判定ブロック
垂直判定ブロック２１０は、複数の垂直境界判定部２１２−１〜２１２−ｎを含む。各垂直境界判定部２１２は、各ブロックの垂直境界についてデブロックフィルタを適用すべきか否かを、当該ブロックが属するマクロブロック内の他のブロックへのデブロックフィルタの適用を待つことなく実行する。そして、各垂直境界判定部２１２は、各垂直境界についての判定結果を示す情報（例えば、"１"がデブロックフィルタを適用すべきとの判定結果を示す二値情報）を、水平フィルタリングブロック１３０へ出力する。
【０１３０】
（２−２）水平判定ブロック
水平判定ブロック２１４は、複数の水平境界判定部２１６−１〜２１６−ｎを含む。各水平境界判定部２１６は、各ブロックの水平境界についてデブロックフィルタを適用すべきか否かを、当該ブロックが属するマクロブロック内の他のブロックへのデブロックフィルタの適用を待つことなく実行する。そして、各水平境界判定部２１６は、各水平境界についての判定結果を示す情報を、垂直フィルタリングブロック１４０へ出力する。
【０１３１】
なお、本実施例においても、各垂直境界判定部２１２及び各水平境界判定部２１６は、既存の手法と同様の位置の画素を参照して、各境界についてのフィルタリングの要否を判定してよい。その代わりに、各垂直境界判定部２１２及び各水平境界判定部２１６は、［３−２．判定条件の変形例］において説明した手法に従って、各境界についてのフィルタリングの要否を判定してもよい。
【０１３２】
［４−２．処理の流れ］
図２４は、第２の実施例におけるデブロックフィルタ２４による処理の流れの一例を示すフローチャートである。図２４を参照すると、まず、垂直境界判定部２１２−１〜２１２−ｎは、入力画像内の１つの注目マクロブロックに含まれる全ての垂直境界について、フィルタリングの要否を並列的に判定する（ステップＳ２０２）。また、水平境界判定部２１４−１〜２１４−ｎは、当該注目マクロブロックに含まれる全ての水平境界について、フィルタリングの要否を並列的に判定する（ステップＳ２０４）。これらステップＳ２０２及びステップＳ２０４もまた並列的に行われる。
【０１３３】
次に、水平フィルタリング部１３２−１〜１３２−ｎは、ステップＳ２０２においてデブロックフィルタを適用すべきと判定された注目マクロブロック内の垂直境界について、デブロックフィルタを並列的に適用する（ステップＳ２１０）。
【０１３４】
次のステップＳ２２０の処理は、１つ前のループにおける注目マクロブロックを対象として行われる。最初の注目マクロブロックについては、ステップＳ２２０の処理はスキップされてよい。垂直フィルタリング部１４２−１〜１４２−ｎは、１つ前のループのステップＳ２０４においてデブロックフィルタを適用すべきと判定された水平境界について、デブロックフィルタを並列的に適用する（ステップＳ２２０）。
【０１３５】
その後、入力画像内に未処理の注目マクロブロックが残っている場合には、新たな注目マクロブロックについてステップＳ２０２〜Ｓ２２０の処理が繰り返される（ステップＳ２３０）。
【０１３６】
一方、未処理の注目マクロブロックが残っていない場合には、垂直フィルタリング部１４２−１〜１４２−ｎは、最後のループの注目マクロブロックを対象とし、デブロックフィルタを適用すべきと判定された水平境界について、デブロックフィルタを並列的に適用する（ステップＳ２４０）。
【０１３７】
なお、ここで説明した処理の流れもまた一例に過ぎない。即ち、処理の並列度及び順序は変更されてよい。また、処理の並列度及び順序は、並列化制御部１５０により適応的に制御されてよい。
【０１３８】
［４−３．ＬＣＵごとの処理の例］
上述したように、本明細書で説明される様々な実施例に係る技術は、ＨＥＶＣの符号化単位（ＣＵ）に基づく処理として実現されてもよい。ＨＥＶＣにおいて、サイズの最も大きい符号化単位はＬＣＵ（Largest  Coding  Unit）と呼ばれ、例えば６４×６４画素のＬＣＵが選択可能である。選択可能な最小のＣＵのサイズは、８×８画素である。画像の符号化及び復号に際しては、通常、ピクチャ（又はスライス）の左上のＬＣＵを起点とし、ラスタスキャンの順序に従って、ＬＣＵごとに処理が行われる。そこで、本項では、デブロックフィルタ２４におけるこのようなＬＣＵごとの処理の例について説明する。
【０１３９】
図２５は、上述した第２の実施例に関連するＬＣＵごとの処理の順序について説明するための説明図である。ここでは、ＬＣＵのサイズは１６×１６画素、ＣＵのサイズは８×８画素であるものとする。
【０１４０】
図２５を参照すると、左上の第１段階において、第ｎ−１番目のＬＣＵまでの各ＬＣＵのフィルタリングが終了している。なお、垂直境界についてのフィルタリングの対象画素は斜線で網掛けされ、水平境界についてのフィルタリングの対象画素は塗りつぶされている。
【０１４１】
図２５の右上の第２段階及び左下の第３段階の処理は、第ｎ番目のＬＣＵを対象とする処理である。まず、第２段階の前に、第ｎ番目のＬＣＵに属する全ての垂直境界及び全ての水平境界についてのフィルタリング要否判定処理が並列的に行われる。即ち、第ｎ番目のＬＣＵ内の各ＣＵに属する境界についてのフィルタリング要否判定処理は、当該第ｎ番目のＬＣＵ内の他のＣＵへのデブロックフィルタの適用を待つことなく実行される。次に、第２段階では、第ｎ番目のＬＣＵに属する垂直境界のうちデブロックフィルタを適用すべきと判定された垂直境界についてのフィルタリング処理が並列的に行われる。次に、第ｎ番目のＬＣＵに属する水平境界のうちデブロックフィルタを適用すべきと判定された水平境界についてのフィルタリング処理が並列的に行われる。
【０１４２】
その後、図２５の右下の第４段階の処理は、第ｎ＋１番目のＬＣＵを対象とする処理である。第ｎ＋１番目のＬＣＵ内の全てのＣＵに属する境界についてのフィルタリング要否判定処理が並列的に行われた後、第４段階では、デブロックフィルタを適用すべきと判定された垂直境界についてのフィルタリング処理が並列的に行われる。
【０１４３】
なお、ここでは一例としてＬＣＵのサイズを１６×１６画素としたが、ＬＣＵのサイズは３２×３２画素又は６４×６４画素などであってもよい。特に、選択されるＬＣＵのサイズがより大きければ、１つのＬＣＵに属する垂直境界及び水平境界の数も多くなることから、並列化による処理時間の短縮の効果はより高められる。
【０１４４】
図２６は、デブロックフィルタ２４によるＬＣＵごとの処理の流れの一例を示すフローチャートである。
【０１４５】
図２６を参照すると、まず、垂直境界判定部２１２−１〜２１２−ｎは、入力画像内の１つの注目ＬＣＵに含まれる全ての垂直境界について、フィルタリングの要否を並列的に判定する（ステップＳ２５２）。また、水平境界判定部２１６−１〜２１６−ｎは、当該注目ＬＣＵに含まれる全ての水平境界について、フィルタリングの要否を並列的に判定する（ステップＳ２５４）。これらステップＳ２５２及びステップＳ２５４もまた並列的に行われる。
【０１４６】
次に、水平フィルタリング部１３２−１〜１３２−ｎは、ステップＳ２５２においてデブロックフィルタを適用すべきと判定された注目ＬＣＵ内の垂直境界について、デブロックフィルタを並列的に適用する（ステップＳ２６０）。
【０１４７】
次に、垂直フィルタリング部１４２−１〜１４２−ｎは、ステップＳ２５４においてデブロックフィルタを適用すべきと判定された注目ＬＣＵ内の水平境界について、デブロックフィルタを並列的に適用する（ステップＳ２７０）。
【０１４８】
その後、入力画像内に未処理のＬＣＵが残っている場合には、新たな注目ＬＣＵについてステップＳ２５２〜Ｓ２７０の処理が繰り返される（ステップＳ２８０）。一方、未処理のＬＣＵが残っていない場合には、処理は終了する。
【０１４９】
＜５．第３の実施例＞
［５−１．概略］
第１及び第２の実施例では、デブロックフィルタの既存の処理の順序が変更され、処理の並列度が高められる。特に、第１の実施例では、フィルタリングの要否の判定に際してデブロックフィルタへの入力画像の画素値をより広く活用することで、処理の依存関係が緩和される。本節で説明する第３の実施例では、このような考え方がさらに拡張される。即ち、第３の実施例では、垂直境界及び水平境界の双方についてのフィルタリング処理においてデブロックフィルタへの入力画素値をフィルタリングすることで、処理のさらなる並列化を図る。
【０１５０】
図２７は、本実施例の概略について説明するための説明図である。図２７の左下には、デブロックフィルタにより処理される前の入力画素（リコンストラクト画素ともいう）を表す図形が示されている。本実施例において、デブロックフィルタへの入力画素は、垂直境界及び水平境界についてのフィルタリング要否判定処理、並びに垂直境界及び水平境界についてのフィルタリング処理において参照される。従って、上記２つのフィルタリング要否判定処理の間の依存関係、及び上記２つのフィルタリング処理の間の依存関係が共に解消される。
【０１５１】
但し、垂直境界についてのフィルタリング処理及び水平境界についてのフィルタリング処理において、重複する画素の値が更新される可能性がある。そのような可能性を有する画素の位置が、図２７において黒く塗りつぶされた画素によって示されている。そこで、本実施例に係るデブロックフィルタは、並列的に動作する２つのフィルタにより重複して更新される画素について、２つのフィルタ出力から１つの出力画素値を計算する。
【０１５２】
［５−２．デブロックフィルタの構成例］
図２８は、第３の実施例に係るデブロックフィルタ２４の詳細な構成の一例を示すブロック図である。図２８を参照すると、デブロックフィルタ２４は、ラインメモリ３０８、判定ブロック３１０、水平フィルタリングブロック３３０、垂直フィルタリングブロック３４０、並列化制御部１５０及び計算部３６０を有する。
【０１５３】
ラインメモリ３０８は、デブロックフィルタ２４へ入力される入力画像の画素値を記憶する。ラインメモリ３０８により記憶される画素値は、水平フィルタリングブロック３３０及び垂直フィルタリングブロック３４０におけるフィルタリング処理によって更新されない。ラインメモリ３０８により記憶される画素値は、次に説明する判定ブロック３１０内の各部によるフィルタリング要否判定処理において参照される。なお、デブロックフィルタ２４の処理とは異なる目的で装置内に設けられるメモリが、ラインメモリ３０８として再利用（共用）されてもよい。
【０１５４】
判定ブロック３１０は、複数の垂直境界判定部３１２−１〜３１２−ｎ及び複数の水平境界判定部３１４−１〜３１４−ｎを含む。各垂直境界判定部３１２及び各水平境界判定部３１４には、ラインメモリ３０８により記憶されるデブロックフィルタ２４への入力画像の画素値、及びフィルタリングの要否の判定のために使用される判定情報が供給される。
【０１５５】
各垂直境界判定部３１２は、デブロックフィルタ２４への入力画素値を用いて、各垂直境界についてデブロックフィルタを適用すべきか否かを判定する。そして、各垂直境界判定部３１２は、各垂直境界についての判定結果を示す情報を、水平フィルタリングブロック３３０へ出力する。
【０１５６】
各水平境界判定部３１４もまた、デブロックフィルタ２４への入力画素値を用いて、各水平境界についてデブロックフィルタを適用すべきか否かを判定する。各水平境界判定部３１４による判定処理は、各垂直境界判定部３１２による判定処理と並列的に行われる。そして、各水平境界判定部３１４は、各水平境界についての判定結果を示す情報を、垂直フィルタリングブロック３４０へ出力する。
【０１５７】
なお、本実施例においても、各垂直境界判定部３１２及び各水平境界判定部３１４は、既存の手法と同様の位置の画素を参照して、各境界についてのフィルタリングの要否を判定してよい。その代わりに、各垂直境界判定部３１２及び各水平境界判定部３１４は、［３−２．判定条件の変形例］において説明した手法に従って、各境界についてのフィルタリングの要否を判定してもよい。
【０１５８】
水平フィルタリングブロック３３０は、複数の水平フィルタリング部３３２−１〜３３２−ｎを含む。各水平フィルタリング部３３２には、ラインメモリ３０８からの入力画素値及び判定ブロック３１０からの各垂直境界についての判定結果が供給される。
【０１５９】
各水平フィルタリング部３３２は、対応する垂直境界判定部３１２による判定結果がフィルタを適用すべきことを示している場合に、対応する垂直境界の左右の画素に垂直境界についてのデブロックフィルタを適用する。そして、各水平フィルタリング部３３２は、フィルタを適用した画素についてはフィルタリング後の画素値、その他の画素については入力画素値を、計算部３６０へ出力する。
【０１６０】
垂直フィルタリングブロック３４０は、複数の垂直フィルタリング部３４２−１〜３４２−ｎを含む。各垂直フィルタリング部３４２には、ラインメモリ３０８からの入力画素値及び判定ブロック３１０からの各水平境界についての判定結果が供給される。
【０１６１】
各垂直フィルタリング部３４２は、対応する水平境界判定部３１４による判定結果がフィルタを適用すべきことを示している場合に、対応する水平境界の上下の画素に水平境界についてのデブロックフィルタを適用する。垂直フィルタリング部３４２−１〜３４２−ｎによるフィルタリング処理は、水平フィルタリング部３３２−１〜３３２−ｎによるフィルタリング処理と並列的に行われる。そして、各垂直フィルタリング部３４２は、フィルタを適用した画素についてはフィルタリング後の画素値、その他の画素については入力画素値を、計算部３６０へ出力する。
【０１６２】
計算部３６０には、水平フィルタリングブロック３３０からの出力画素値と垂直フィルタリングブロック３４０からの出力画素値とが並列的に供給される。さらに、計算部３６０には、垂直境界判定部３１２及び水平境界判定部３１４による判定結果が供給される。計算部３６０は、供給される判定結果に応じて、水平フィルタリングブロック３３０及び垂直フィルタリングブロック３４０の双方によりフィルタリングされる画素について、水平フィルタリングブロック３３０からのフィルタ出力及び垂直フィルタリングブロック３４０からのフィルタ出力に基づいて出力画素値を計算する。
【０１６３】
例えば、本実施例において、計算部３６０は、重複してフィルタリングされる画素について、２つのフィルタ出力の平均を計算する。計算部３６０により計算される２つのフィルタ出力の平均は、単純な平均であってもよい。その代わりに、計算部３６０は、２つのフィルタ出力の加重平均を計算してもよい。計算部３６０は、例えば、各画素についての加重平均の重みを、各画素の垂直境界までの距離及び水平境界までの距離に応じて決定し得る。
【０１６４】
図２９は、計算部３６０による加重平均のための重みの決定について説明するための説明図である。図２９を参照すると、図２７に示した重複位置の１つに位置する注目画素ＰＺが黒く示されている。注目画素ＰＺと最も近くの垂直境界ＶＺとの間の距離ＤＶは、３画素である。注目画素ＰＺと最も近くの水平境界ＨＺとの間の距離ＤＨは２画素である。距離ＤＨは、距離ＤＶよりも小さい。この場合、計算部３６０は、水平境界ＨＺについてのデブロックフィルタの出力についての重みを、垂直境界ＶＺについてのデブロックフィルタの出力についての重みよりも大きく決定し得る。図２９の例では、垂直境界ＶＺについてのフィルタ出力Ｖｏｕｔと水平境界ＨＺについてのフィルタ出力Ｈｏｕｔとの間の重みの比は、２：３と決定されている。
【０１６５】
図２９から理解されるように、２つのフィルタ出力の加重平均が計算される結果として、水平方向に沿ったフィルタタップと垂直方向に沿ったフィルタタップとを有する１つの２次元フィルタが適用された場合と同等の出力画素値を、各注目画素について得ることができる。それにより、垂直境界及び水平境界についてのフィルタリング処理を並列化させた場合にも、垂直境界及び水平境界の双方に現れるブロック歪みを適切に減少させることができる。他の実施例として、デブロックフィルタ２４は、水平フィルタリング、垂直フィルタリング及び加重平均を同時に計算する１つの２次元フィルタを有していてもよい。但し、その場合には、フィルタ係数を画素ごとに様々に変化させる必要性が生じるため、実装が極めて複雑となる。これに対し、第３の実施例のように２つの１次元フィルタを並列的に実行した後に加重平均を計算することとすれば、既存のデブロックフィルタの仕組みを活かしながら、２次元フィルタに実質的に等しい処理を容易に実現することができる。
【０１６６】
図３０は、図２９の例に従って決定される加重平均のための重みの一例について説明するための説明図である。図３０を参照すると、垂直境界と水平境界との１つの交点の周囲に位置する６×６＝３６個の画素（上述した重複位置の画素）が示されている。これら画素のうち、垂直境界及び水平境界から等距離に位置する画素については、フィルタ出力Ｖｏｕｔとフィルタ出力Ｈｏｕｔとの間の重みの比は１対１（又は２対２若しくは３対３）である。垂直境界により近い画素については、フィルタ出力Ｖｏｕｔへの重みの方がフィルタ出力Ｈｏｕｔへの重みよりも大きく決定されている（例えば、画素Ｐ１の重みの比はＶｏｕｔ：Ｈｏｕｔ＝３：１）。一方、水平境界により近い画素については、フィルタ出力Ｖｏｕｔへの重みの方がフィルタ出力Ｈｏｕｔへの重みよりも小さく決定されている（例えば、画素Ｐ２の重みの比はＶｏｕｔ：Ｈｏｕｔ＝１：３）。
【０１６７】
このように各画素と境界との間の距離に応じて加重平均の重みを変化させることで、ブロック歪みをより効果的に抑制して画質を改善することができる。
【０１６８】
なお、上述した重みは一例に過ぎない。例えば、計算部３６０は、各画素と境界との間の距離の代わりに（又はそれに加えて）、各画素に対応する垂直境界及び水平境界のエッジの強さに応じて、各画素についての加重平均の重みを決定してもよい。ここでのエッジの強さとは、例えば、図１３に示した演算部１２２により算出されるエッジの値のようなパラメータで表現され得る。この場合、よりエッジの強い境界についてのフィルタ出力の重みが、よりエッジの弱い境界についてのフィルタ出力の重みよりも大きく決定され得る。このようにエッジの強さに応じて加重平均の重みを変化させることで、ブロック歪みが強く現れている境界について適応的にデブロックフィルタの効果を高めることができる。
【０１６９】
計算部３６０は、水平フィルタリングブロック３３０及び垂直フィルタリングブロック３４０のいずれか一方によりフィルタリングされる画素については、実際にフィルタリングを行ったブロックからの出力を選択する。また、計算部３６０は、水平フィルタリングブロック３３０及び垂直フィルタリングブロック３４０のいずれによってもフィルタリングされない画素については、デブロックフィルタ２４への入力画素値をそのまま出力する。フィルタリング要否の判定結果に応じた計算部３６０からの出力画素値を、図３１の表に示す。
【０１７０】
［５−３．処理の順序の例］
以下、本実施例においてデブロックフィルタ２４により実現可能な処理の順序の２つの例を説明する。ここでも、一例として、３２×３２画素のサイズを有する画像がデブロックフィルタに入力されるものとする。当該入力画像は、それぞれ１６×１６画素のサイズを有する４つのマクロブロックＭＢ０〜ＭＢ３を含む。
【０１７１】
（１）第１の例
まず、比較のために、垂直境界についてのフィルタリング処理と水平境界についてのフィルタリング処理との間の依存関係が残っている場合の処理の順序を図３２に示す。図３２において、第１ステップでは、４つのマクロブロックＭＢ０〜ＭＢ３の全ての垂直境界及び全ての水平境界についてのフィルタリング要否判定処理ＪＶ０，０〜ＪＶ３，３及びＪＨ０，０〜ＪＨ３，３が並列的に実行される。次に、第２ステップでは、４つのマクロブロックＭＢ０〜ＭＢ３の１６個の垂直境界についてのフィルタリング処理ＦＶ０，０〜ＦＶ３，３が実行される。次に、第３ステップでは、４つのマクロブロックＭＢ０〜ＭＢ３の１６個の水平境界についてのフィルタリング処理ＦＨ０，０〜ＦＨ３，３が実行される。その後、第４ステップでは、水平境界についてのフィルタリング処理後の各画素値が、デブロックフィルタ２４からの出力用のメモリへ格納される。
【０１７２】
図３３は、本実施例において実現される処理の順序の第１の例を示している。図３３において、第１ステップでは、４つのマクロブロックＭＢ０〜ＭＢ３の全ての垂直境界及び全ての水平境界についてのフィルタリング要否判定処理ＪＶ０，０〜ＪＶ３，３及びＪＨ０，０〜ＪＨ３，３が並列的に実行される。次に、第２ステップでは、４つのマクロブロックＭＢ０〜ＭＢ３の全ての垂直境界及び全ての水平境界についてのフィルタリング処理ＦＶ０，０〜ＦＶ３，３及びＦＨ０，０〜ＦＨ３，３が並列的に実行され得る（実際には、フィルタリングが必要と判定された境界のみがフィルタリングされる）。その後、第３ステップでは、各画素値がデブロックフィルタ２４からの出力用のメモリへ格納される。その際、水平フィルタリングブロック３３０及び垂直フィルタリングブロック３４０の双方によりフィルタリングされた画素については、２つのフィルタ出力の加重平均が出力画素値として計算され得る。
【０１７３】
（２）第２の例
上述した第１の例は並列度を最大限に高める例である一方、本実施例においても、デブロックフィルタ２４は、マクロブロックごとの処理を実現することもできる。
【０１７４】
まず、比較のために、垂直境界についてのフィルタリング処理と水平境界についてのフィルタリング処理との間の依存関係が残っている場合のマクロブロックごとの処理の順序を図３４に示す。なお、図３４に示した処理の順序は、第２の実施例に関連して図２２に示した処理の順序と実質的に同じである。図２２において説明の簡明さの観点から図示を省略した、出力用のメモリへの画素値の格納についての４つの処理ステップ（第６、第１０、第１４及び第１６ステップ）が、図３４では明示されている。図３４の処理は、これら４つの処理ステップを含む１６個の処理ステップで構成される。
【０１７５】
図３５は、本実施例において実現される処理の順序の第２の例を示している。図３５において、第１ステップでは、マクロブロックＭＢ０の４つの垂直境界及び４つの水平境界についてのフィルタリング要否判定処理ＪＶ０，０〜ＪＶ０，３及びＪＨ０，０〜ＪＨ０，３が並列的に実行される。次に、第２ステップでは、マクロブロックＭＢ０の４つの垂直境界及び４つの水平境界についてのフィルタリング処理ＦＶ０，０〜ＦＶ０，３及びＦＨ０，０〜ＦＨ０，３が並列的に実行される。次に、第３ステップでは、マクロブロックＭＢ０の各画素値がデブロックフィルタ２４からの出力用のメモリへ格納される。その際、２つのフィルタにより重複してフィルタリングされた画素については、２つのフィルタ出力の加重平均が出力画素値として計算され得る。その後、第４ステップから第６ステップにおいてマクロブロックＭＢ１、第７ステップから第９ステップにおいてマクロブロックＭＢ２、第１０ステップから第１２ステップにおいてマクロブロックＭＢ３が同様に処理される。図３５の処理は、図３４の処理よりも少ない１２個の処理ステップで構成されている。
【０１７６】
このように、第３の実施例では、垂直境界についてのフィルタリング処理と水平境界についてのフィルタリング処理との間の依存関係も解消されることから、第１及び第２の実施形態と比較して、デブロックフィルタ２４における処理をより少ない処理ステップで実行することができる。なお、フィルタリング処理においてデブロックフィルタへの入力画素のみが参照されることの利点の１つは、フィルタタップをどのように構成しても垂直境界についてのフィルタリング処理と水平境界についてのフィルタリング処理との間の依存関係が生じないことである。そのため、既存の手法よりも多くの画素からフィルタタップを構成して画質の向上を図ることも可能となる。例えば、既存の手法では、図７に関連して説明したように、各境界の各側につき３画素分のフィルタタップが使用された。しかし、本実施例では、例えば各境界の各画素につき５画素以上のフィルタタップを使用しても、処理間に依存関係が生じることがない。また、デブロックフィルタの処理単位のブロックサイズをより小さくしても、やはり処理間に依存関係が生じることがない。
【０１７７】
第３の実施例においても、第１及び第２の実施例と同様、デブロックフィルタ２４における処理の並列度及び順序は、並列化制御部１５０により制御されてよい。
【０１７８】
［５−４．処理の流れ］
図３６は、第３の実施例に係るデブロックフィルタによる処理の流れの一例を示すフローチャートである。また、図３７は、図３６に示した画素値計算処理の流れの一例を示すフローチャートである。
【０１７９】
図３６を参照すると、まず、垂直境界判定部３１２−１〜３１２−ｎは、入力画像内（又はマクロブロック内）の全ての垂直境界について、フィルタリングの要否を並列的に判定する（ステップＳ３０２）。また、水平境界判定部３１４−１〜３１４−ｎは、入力画像内（又はマクロブロック内）の全ての水平境界について、フィルタリングの要否を並列的に判定する（ステップＳ３０４）。これらステップＳ３０２及びステップＳ３０４もまた並列的に行われる。
【０１８０】
次に、水平フィルタリング部３３２−１〜３３２−ｎは、ステップＳ３０２においてデブロックフィルタを適用すべきと判定された全ての垂直境界について、デブロックフィルタを並列的に適用する（ステップＳ３０６）。また、垂直フィルタリング部３４２−１〜３４２−ｎは、ステップＳ３０４においてデブロックフィルタを適用すべきと判定された全ての水平境界について、デブロックフィルタを並列的に適用する（ステップＳ３０８）。これらステップＳ３０６及びステップＳ３０８もまた並列的に行われる。
【０１８１】
次に、計算部３６０により、図３７に示す画素値計算処理が行われる（ステップＳ３１０）。図３７を参照すると、ステップＳ３１４からステップＳ３２６までの処理は、処理対象の画素ごとにループされる（ステップＳ３１２）。
【０１８２】
ステップＳ３１４において、計算部３６０は、注目画素が垂直境界及び水平境界についての２つのフィルタの双方によりフィルタリングされたか否かを判定する（ステップＳ３１４）。ここで、注目画素が２つのフィルタの双方によりフィルタリングされた場合には、処理はステップＳ３２２へ進む。一方、注目画素が２つのフィルタの双方によりフィルタリングされてはいない場合には、処理はステップＳ３１６へ進む。
【０１８３】
ステップＳ３１６において、計算部３６０は、注目画素が垂直境界及び水平境界についての２つのフィルタのいずれか一方によりフィルタリングされたか否かを判定する（ステップＳ３１６）。ここで、注目画素が２つのフィルタのいずれか一方によりフィルタリングされた場合には、処理はステップＳ３２０へ進む。一方、注目画素がいずれのフィルタによってもフィルタリングされていない場合には、処理はステップＳ３１８へ進む。
【０１８４】
ステップＳ３１８では、計算部３６０は、デブロックフィルタ２４への入力画素値を取得する（ステップＳ３１８）。ステップＳ３２０では、計算部３６０は、注目画素について実際にフィルタリングを行ったフィルタからのフィルタ出力を取得する（ステップＳ３２０）。
【０１８５】
ステップＳ３２２では、計算部３６０は、注目画素について２つのフィルタからのフィルタ出力の加重平均を計算するための重みの値を、例えば注目画素の垂直境界までの距離及び水平境界までの距離、又は注目画素に対応する垂直境界及び水平境界のエッジの強さに応じて決定する（ステップＳ３２２）。そして、計算部３６０は、決定した重みを用いて、２つのフィルタからのフィルタ出力の加重平均を計算する（ステップＳ３２４）。
【０１８６】
その後、計算部３６０は、ステップＳ３１８若しくはステップＳ３２０において取得し、又はステップＳ３２４において計算した注目画素の画素値をメモリに格納する（ステップＳ３２６）。このような処理が処理対象の全ての画素について行われると、図３６及び図３７に示した一連の処理は終了する。
【０１８７】
＜６．様々なコーデックへの適用＞
本開示に係る技術は、画像の符号化及び復号に関連する様々なコーデックに適用可能である。本節では、本開示に係る技術がマルチビューコーデック及びスケーラブルコーデックにそれぞれ適用される例について説明する。
【０１８８】
［６−１．マルチビューコーデック］
マルチビューコーデックは、いわゆる多視点映像を符号化し及び復号するための画像符号化方式である。図３８は、マルチビューコーデックについて説明するための説明図である。図３８を参照すると、３つの視点においてそれぞれ撮影される３つのビューのフレームのシーケンスが示されている。各ビューには、ビューＩＤ（view_id）が付与される。これら複数のビューのうちいずれか１つのビューが、ベースビュー（base  view）に指定される。ベースビュー以外のビューは、ノンベースビューと呼ばれる。図３８の例では、ビューＩＤが"０"であるビューがベースビューであり、ビューＩＤが"１"又は"２"である２つのビューがノンベースビューである。これらマルチビューの画像データを符号化する際、ベースビューのフレームについての符号化情報に基づいてノンベースビューのフレームを符号化することにより、全体としての符号化ストリームのデータサイズが圧縮され得る。
【０１８９】
上述したマルチビューコーデックに従った符号化処理及び復号処理において、各ビューにデブロックフィルタが適用され得る。各ビューへのデブロックフィルタの適用にあたり、本開示に係る技術に従って、各ビューの複数のＣＵを包含する処理単位で、水平フィルタリングが並列化され、及び垂直フィルタリングが並列化されてよい。上記処理単位は、数個のＣＵ、ＬＣＵ又はピクチャなどであってよい。また、並列処理を制御するためのパラメータ（例えば、段落００９２において説明したパラメータ）が、ビューごとに設定されてもよい。また、ベースビューにおいて設定されたパラメータが、ノンベースビューにおいて再利用されてもよい。
【０１９０】
また、複数のビューにわたって水平フィルタリング及び垂直フィルタリングが並列化されてもよい。並列処理を制御するためのパラメータ（例えば、段落００９２において説明したパラメータ）は、複数のビューにわたって共通化されてもよい。また、複数のビューにわたってパラメータが共通化されているか否かを示すフラグが、追加的に指定されてもよい
【０１９１】
図３９は、上述した画像符号化処理のマルチビューコーデックへの適用について説明するための説明図である。図３９を参照すると、一例としてのマルチビュー符号化装置７１０の構成が示されている。マルチビュー符号化装置７１０は、第１符号化部７２０、第２符号化部７３０及び多重化部７４０を備える。
【０１９２】
第１符号化部７２０は、ベースビュー画像を符号化し、ベースビューの符号化ストリームを生成する。第２符号化部７３０は、ノンベースビュー画像を符号化し、ノンベースビューの符号化ストリームを生成する。多重化部７４０は、第１符号化部７２０により生成されるベースビューの符号化ストリームと、第２符号化部７３０により生成される１つ以上のノンベースビューの符号化ストリームとを多重化し、マルチビューの多重化ストリームを生成する。
【０１９３】
図３９に例示した第１符号化部７２０及び第２符号化部７３０は、上述した実施形態に係る画像符号化装置１０と同等の構成を有する。それにより、各ビューへのデブロックフィルタの適用に際して、複数のＣＵを包含する処理単位で、水平フィルタリングを並列化し、及び垂直フィルタリングを並列化することが可能となる。これら処理を制御するパラメータは、各ビューの符号化ストリームのヘッダ領域に挿入されてもよく、又は多重化ストリーム内の共通的なヘッダ領域に挿入されてもよい。
【０１９４】
図４０は、上述した画像復号処理のマルチビューコーデックへの適用について説明するための説明図である。図４０を参照すると、一例としてのマルチビュー復号装置７６０の構成が示されている。マルチビュー復号装置７６０は、逆多重化部７７０、第１復号部７８０及び第２復号部７９０を備える。
【０１９５】
逆多重化部７７０は、マルチビューの多重化ストリームをベースビューの符号化ストリーム及び１つ以上のノンベースビューの符号化ストリームに逆多重化する。第１復号部７８０は、ベースビューの符号化ストリームからベースビュー画像を復号する。第２復号部７３０は、ノンベースビューの符号化ストリームからノンベースビュー画像を復号する。
【０１９６】
図４０に例示した第１復号部７８０及び第２復号部７９０は、上述した実施形態に係る画像復号装置６０と同等の構成を有する。それにより、各ビューへのデブロックフィルタの適用に際して、複数のＣＵを包含する処理単位で、水平フィルタリングを並列化し、及び垂直フィルタリングを並列化することが可能となる。これら処理を制御するパラメータは、各ビューの符号化ストリームのヘッダ領域から取得されてもよく、又は多重化ストリーム内の共通的なヘッダ領域から取得されてもよい。
【０１９７】
［６−２．スケーラブルコーデック］
スケーラブルコーデックは、いわゆる階層符号化を実現するための画像符号化方式である。図４１は、スケーラブルコーデックについて説明するための説明図である。図４１を参照すると、空間解像度、時間解像度又は画質の異なる３つのレイヤのフレームのシーケンスが示されている。各レイヤには、レイヤＩＤ（layer_id）が付与される。これら複数のレイヤのうち、最も解像度（又は画質）の低いレイヤが、ベースレイヤ（base  layer）である。ベースレイヤ以外のレイヤは、エンハンスメントレイヤと呼ばれる。図４１の例では、レイヤＩＤが"０"であるレイヤがベースレイヤであり、レイヤＩＤが"１"又は"２"である２つのレイヤがエンハンスメントレイヤである。これらマルチレイヤの画像データを符号化する際、ベースレイヤのフレームについての符号化情報に基づいてエンハンスメントレイヤのフレームを符号化することにより、全体としての符号化ストリームのデータサイズが圧縮され得る。
【０１９８】
上述したスケーラブルコーデックに従った符号化処理及び復号処理において、各レイヤにデブロックフィルタが適用され得る。各レイヤへのデブロックフィルタの適用にあたり、本開示に係る技術に従って、各レイヤの複数のＣＵを包含する処理単位で、水平フィルタリングが並列化され、及び垂直フィルタリングが並列化されてよい。上記処理単位は、数個のＣＵ、ＬＣＵ又はピクチャなどであってよい。また、並列処理を制御するためのパラメータ（例えば、段落００９２において説明したパラメータ）が、レイヤごとに設定されてもよい。また、ベースレイヤにおいて設定されたパラメータが、エンハンスメントレイヤにおいて再利用されてもよい。
【０１９９】
また、複数のレイヤにわたって水平フィルタリング及び垂直フィルタリングが並列化されてもよい。並列処理を制御するためのパラメータ（例えば、段落００９２において説明したパラメータ）は、複数のレイヤにわたって共通化されてもよい。また、複数のレイヤにわたってパラメータが共通化されているか否かを示すフラグが、追加的に指定されてもよい
【０２００】
図４２は、上述した画像符号化処理のスケーラブルコーデックへの適用について説明するための説明図である。図４２を参照すると、一例としてのスケーラブル符号化装置８１０の構成が示されている。スケーラブル符号化装置８１０は、第１符号化部８２０、第２符号化部８３０及び多重化部８４０を備える。
【０２０１】
第１符号化部８２０は、ベースレイヤ画像を符号化し、ベースレイヤの符号化ストリームを生成する。第２符号化部８３０は、エンハンスメントレイヤ画像を符号化し、エンハンスメントレイヤの符号化ストリームを生成する。多重化部８４０は、第１符号化部８２０により生成されるベースレイヤの符号化ストリームと、第２符号化部８３０により生成される１つ以上のエンハンスメントレイヤの符号化ストリームとを多重化し、マルチレイヤの多重化ストリームを生成する。
【０２０２】
図４２に例示した第１符号化部８２０及び第２符号化部８３０は、上述した実施形態に係る画像符号化装置１０と同等の構成を有する。それにより、各レイヤへのデブロックフィルタの適用に際して、複数のＣＵを包含する処理単位で、水平フィルタリングを並列化し、及び垂直フィルタリングを並列化することが可能となる。これら処理を制御するパラメータは、各レイヤの符号化ストリームのヘッダ領域に挿入されてもよく、又は多重化ストリーム内の共通的なヘッダ領域に挿入されてもよい。
【０２０３】
図４３は、上述した画像復号処理のスケーラブルコーデックへの適用について説明するための説明図である。図４３を参照すると、一例としてのスケーラブル復号装置８６０の構成が示されている。スケーラブル復号装置８６０は、逆多重化部８７０、第１復号部８８０及び第２復号部８９０を備える。
【０２０４】
逆多重化部８７０は、マルチレイヤの多重化ストリームをベースレイヤの符号化ストリーム及び１つ以上のエンハンスメントレイヤの符号化ストリームに逆多重化する。第１復号部８８０は、ベースレイヤの符号化ストリームからベースレイヤ画像を復号する。第２復号部８３０は、エンハンスメントレイヤの符号化ストリームからエンハンスメントレイヤ画像を復号する。
【０２０５】
図４３に例示した第１復号部８８０及び第２復号部８９０は、上述した実施形態に係る画像復号装置６０と同等の構成を有する。それにより、各レイヤへのデブロックフィルタの適用に際して、複数のＣＵを包含する処理単位で、水平フィルタリングを並列化し、及び垂直フィルタリングを並列化することが可能となる。これら処理を制御するパラメータは、各レイヤの符号化ストリームのヘッダ領域から取得されてもよく、又は多重化ストリーム内の共通的なヘッダ領域から取得されてもよい。
【０２０６】
＜７．応用例＞
上述した実施形態に係る画像符号化装置１０及び画像復号装置６０は、衛星放送、ケーブルＴＶなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、４つの応用例について説明する。
【０２０７】
［７−１．第１の応用例］
図４４は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置９００は、アンテナ９０１、チューナ９０２、デマルチプレクサ９０３、デコーダ９０４、映像信号処理部９０５、表示部９０６、音声信号処理部９０７、スピーカ９０８、外部インタフェース９０９、制御部９１０、ユーザインタフェース９１１、及びバス９１２を備える。
【０２０８】
チューナ９０２は、アンテナ９０１を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ９０２は、復調により得られた符号化ビットストリームをデマルチプレクサ９０３へ出力する。即ち、チューナ９０２は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置９００における伝送手段としての役割を有する。
【０２０９】
デマルチプレクサ９０３は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ９０４へ出力する。また、デマルチプレクサ９０３は、符号化ビットストリームからＥＰＧ（Electronic  Program  Guide）などの補助的なデータを抽出し、抽出したデータを制御部９１０に供給する。なお、デマルチプレクサ９０３は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
【０２１０】
デコーダ９０４は、デマルチプレクサ９０３から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ９０４は、復号処理により生成される映像データを映像信号処理部９０５へ出力する。また、デコーダ９０４は、復号処理により生成される音声データを音声信号処理部９０７へ出力する。
【０２１１】
映像信号処理部９０５は、デコーダ９０４から入力される映像データを再生し、表示部９０６に映像を表示させる。また、映像信号処理部９０５は、ネットワークを介して供給されるアプリケーション画面を表示部９０６に表示させてもよい。また、映像信号処理部９０５は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部９０５は、例えばメニュー、ボタン又はカーソルなどのＧＵＩ（Graphical  User  Interface）の画像を生成し、生成した画像を出力画像に重畳してもよい。
【０２１２】
表示部９０６は、映像信号処理部９０５から供給される駆動信号により駆動され、表示デバイス（例えば、液晶ディスプレイ、プラズマディスプレイ又はＯＬＥＤなど）の映像面上に映像又は画像を表示する。
【０２１３】
音声信号処理部９０７は、デコーダ９０４から入力される音声データについてＤ／Ａ変換及び増幅などの再生処理を行い、スピーカ９０８から音声を出力させる。また、音声信号処理部９０７は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
【０２１４】
外部インタフェース９０９は、テレビジョン装置９００と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース９０９を介して受信される映像ストリーム又は音声ストリームが、デコーダ９０４により復号されてもよい。即ち、外部インタフェース９０９もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置９００における伝送手段としての役割を有する。
【０２１５】
制御部９１０は、ＣＰＵ（Central  Processing  Unit）などのプロセッサ、並びにＲＡＭ（Random  Access  Memory）及びＲＯＭ（Read  Only  Memory）などのメモリを有する。メモリは、ＣＰＵにより実行されるプログラム、プログラムデータ、ＥＰＧデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置９００の起動時にＣＰＵにより読み込まれ、実行される。ＣＰＵは、プログラムを実行することにより、例えばユーザインタフェース９１１から入力される操作信号に応じて、テレビジョン装置９００の動作を制御する。
【０２１６】
ユーザインタフェース９１１は、制御部９１０と接続される。ユーザインタフェース９１１は、例えば、ユーザがテレビジョン装置９００を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース９１１は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９１０へ出力する。
【０２１７】
バス９１２は、チューナ９０２、デマルチプレクサ９０３、デコーダ９０４、映像信号処理部９０５、音声信号処理部９０７、外部インタフェース９０９及び制御部９１０を相互に接続する。
【０２１８】
このように構成されたテレビジョン装置９００において、デコーダ９０４は、上述した実施形態に係る画像復号装置６０の機能を有する。それにより、テレビジョン装置９００での画像の復号に際して、デブロックフィルタの処理の並列度を高めて処理を高速化することができる。
【０２１９】
［７−２．第２の応用例］
図４５は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機９２０は、アンテナ９２１、通信部９２２、音声コーデック９２３、スピーカ９２４、マイクロホン９２５、カメラ部９２６、画像処理部９２７、多重分離部９２８、記録再生部９２９、表示部９３０、制御部９３１、操作部９３２、及びバス９３３を備える。
【０２２０】
アンテナ９２１は、通信部９２２に接続される。スピーカ９２４及びマイクロホン９２５は、音声コーデック９２３に接続される。操作部９３２は、制御部９３１に接続される。バス９３３は、通信部９２２、音声コーデック９２３、カメラ部９２６、画像処理部９２７、多重分離部９２８、記録再生部９２９、表示部９３０、及び制御部９３１を相互に接続する。
【０２２１】
携帯電話機９２０は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
【０２２２】
音声通話モードにおいて、マイクロホン９２５により生成されるアナログ音声信号は、音声コーデック９２３に供給される。音声コーデック９２３は、アナログ音声信号を音声データへ変換し、変換された音声データをＡ／Ｄ変換し圧縮する。そして、音声コーデック９２３は、圧縮後の音声データを通信部９２２へ出力する。通信部９２２は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号をアンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部９２２は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック９２３へ出力する。音声コーデック９２３は、音声データを伸張し及びＤ／Ａ変換し、アナログ音声信号を生成する。そして、音声コーデック９２３は、生成した音声信号をスピーカ９２４に供給して音声を出力させる。
【０２２３】
また、データ通信モードにおいて、例えば、制御部９３１は、操作部９３２を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部９３１は、文字を表示部９３０に表示させる。また、制御部９３１は、操作部９３２を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部９２２へ出力する。通信部９２２は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号をアンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部９２２は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部９３１へ出力する。制御部９３１は、表示部９３０に電子メールの内容を表示させると共に、電子メールデータを記録再生部９２９の記憶媒体に記憶させる。
【０２２４】
記録再生部９２９は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、ＲＡＭ又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、ＵＳＢメモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
【０２２５】
また、撮影モードにおいて、例えば、カメラ部９２６は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部９２７へ出力する。画像処理部９２７は、カメラ部９２６から入力される画像データを符号化し、符号化ストリームを記録再生部９２９の記憶媒体に記憶させる。
【０２２６】
また、テレビ電話モードにおいて、例えば、多重分離部９２８は、画像処理部９２７により符号化された映像ストリームと、音声コーデック９２３から入力される音声ストリームとを多重化し、多重化したストリームを通信部９２２へ出力する。通信部９２２は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号をアンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部９２２は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部９２８へ出力する。多重分離部９２８は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部９２７、音声ストリームを音声コーデック９２３へ出力する。画像処理部９２７は、映像ストリームを復号し、映像データを生成する。映像データは、表示部９３０に供給され、表示部９３０により一連の画像が表示される。音声コーデック９２３は、音声ストリームを伸張し及びＤ／Ａ変換し、アナログ音声信号を生成する。そして、音声コーデック９２３は、生成した音声信号をスピーカ９２４に供給して音声を出力させる。
【０２２７】
このように構成された携帯電話機９２０において、画像処理部９２７は、上述した実施形態に係る画像符号化装置１０及び画像復号装置６０の機能を有する。それにより、携帯電話機９２０での画像の符号化及び復号に際して、デブロックフィルタの処理の並列度を高めて処理を高速化することができる。
【０２２８】
［７−３．第３の応用例］
図４６は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置９４０は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置９４０は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置９４０は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置９４０は、音声データ及び映像データを復号する。
【０２２９】
記録再生装置９４０は、チューナ９４１、外部インタフェース９４２、エンコーダ９４３、ＨＤＤ（Hard  Disk  Drive）９４４、ディスクドライブ９４５、セレクタ９４６、デコーダ９４７、ＯＳＤ（On-Screen  Display）９４８、制御部９４９、及びユーザインタフェース９５０を備える。
【０２３０】
チューナ９４１は、アンテナ（図示せず）を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ９４１は、復調により得られた符号化ビットストリームをセレクタ９４６へ出力する。即ち、チューナ９４１は、記録再生装置９４０における伝送手段としての役割を有する。
【０２３１】
外部インタフェース９４２は、記録再生装置９４０と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース９４２は、例えば、ＩＥＥＥ１３９４インタフェース、ネットワークインタフェース、ＵＳＢインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース９４２を介して受信される映像データ及び音声データは、エンコーダ９４３へ入力される。即ち、外部インタフェース９４２は、記録再生装置９４０における伝送手段としての役割を有する。
【０２３２】
エンコーダ９４３は、外部インタフェース９４２から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ９４３は、符号化ビットストリームをセレクタ９４６へ出力する。
【０２３３】
ＨＤＤ９４４は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラム及びその他のデータを内部のハードディスクに記録する。また、ＨＤＤ９４４は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
【０２３４】
ディスクドライブ９４５は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ９４５に装着される記録媒体は、例えばＤＶＤディスク（ＤＶＤ−Ｖｉｄｅｏ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等）又はＢｌｕ−ｒａｙ（登録商標）ディスクなどであってよい。
【０２３５】
セレクタ９４６は、映像及び音声の記録時には、チューナ９４１又はエンコーダ９４３から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをＨＤＤ９４４又はディスクドライブ９４５へ出力する。また、セレクタ９４６は、映像及び音声の再生時には、ＨＤＤ９４４又はディスクドライブ９４５から入力される符号化ビットストリームをデコーダ９４７へ出力する。
【０２３６】
デコーダ９４７は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ９４７は、生成した映像データをＯＳＤ９４８へ出力する。また、デコーダ９０４は、生成した音声データを外部のスピーカへ出力する。
【０２３７】
ＯＳＤ９４８は、デコーダ９４７から入力される映像データを再生し、映像を表示する。また、ＯＳＤ９４８は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのＧＵＩの画像を重畳してもよい。
【０２３８】
制御部９４９は、ＣＰＵなどのプロセッサ、並びにＲＡＭ及びＲＯＭなどのメモリを有する。メモリは、ＣＰＵにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置９４０の起動時にＣＰＵにより読み込まれ、実行される。ＣＰＵは、プログラムを実行することにより、例えばユーザインタフェース９５０から入力される操作信号に応じて、記録再生装置９４０の動作を制御する。
【０２３９】
ユーザインタフェース９５０は、制御部９４９と接続される。ユーザインタフェース９５０は、例えば、ユーザが記録再生装置９４０を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース９５０は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９４９へ出力する。
【０２４０】
このように構成された記録再生装置９４０において、エンコーダ９４３は、上述した実施形態に係る画像符号化装置１０の機能を有する。また、デコーダ９４７は、上述した実施形態に係る画像復号装置６０の機能を有する。それにより、記録再生装置９４０での画像の符号化及び復号に際して、デブロックフィルタの処理の並列度を高めて処理を高速化することができる。
【０２４１】
［７−４．第４の応用例］
図４７は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置９６０は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
【０２４２】
撮像装置９６０は、光学ブロック９６１、撮像部９６２、信号処理部９６３、画像処理部９６４、表示部９６５、外部インタフェース９６６、メモリ９６７、メディアドライブ９６８、ＯＳＤ９６９、制御部９７０、ユーザインタフェース９７１、及びバス９７２を備える。
【０２４３】
光学ブロック９６１は、撮像部９６２に接続される。撮像部９６２は、信号処理部９６３に接続される。表示部９６５は、画像処理部９６４に接続される。ユーザインタフェース９７１は、制御部９７０に接続される。バス９７２は、画像処理部９６４、外部インタフェース９６６、メモリ９６７、メディアドライブ９６８、ＯＳＤ９６９、及び制御部９７０を相互に接続する。
【０２４４】
光学ブロック９６１は、フォーカスレンズ及び絞り機構などを有する。光学ブロック９６１は、被写体の光学像を撮像部９６２の撮像面に結像させる。撮像部９６２は、ＣＣＤ又はＣＭＯＳなどのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部９６２は、画像信号を信号処理部９６３へ出力する。
【０２４５】
信号処理部９６３は、撮像部９６２から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部９６３は、カメラ信号処理後の画像データを画像処理部９６４へ出力する。
【０２４６】
画像処理部９６４は、信号処理部９６３から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部９６４は、生成した符号化データを外部インタフェース９６６又はメディアドライブ９６８へ出力する。また、画像処理部９６４は、外部インタフェース９６６又はメディアドライブ９６８から入力される符号化データを復号し、画像データを生成する。そして、画像処理部９６４は、生成した画像データを表示部９６５へ出力する。また、画像処理部９６４は、信号処理部９６３から入力される画像データを表示部９６５へ出力して画像を表示させてもよい。また、画像処理部９６４は、ＯＳＤ９６９から取得される表示用データを、表示部９６５へ出力する画像に重畳してもよい。
【０２４７】
ＯＳＤ９６９は、例えばメニュー、ボタン又はカーソルなどのＧＵＩの画像を生成して、生成した画像を画像処理部９６４へ出力する。
【０２４８】
外部インタフェース９６６は、例えばＵＳＢ入出力端子として構成される。外部インタフェース９６６は、例えば、画像の印刷時に、撮像装置９６０とプリンタとを接続する。また、外部インタフェース９６６には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置９６０にインストールされ得る。さらに、外部インタフェース９６６は、ＬＡＮ又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース９６６は、撮像装置９６０における伝送手段としての役割を有する。
【０２４９】
メディアドライブ９６８に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ９６８に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はＳＳＤ（Solid  State  Drive）のような非可搬性の記憶部が構成されてもよい。
【０２５０】
制御部９７０は、ＣＰＵなどのプロセッサ、並びにＲＡＭ及びＲＯＭなどのメモリを有する。メモリは、ＣＰＵにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置９６０の起動時にＣＰＵにより読み込まれ、実行される。ＣＰＵは、プログラムを実行することにより、例えばユーザインタフェース９７１から入力される操作信号に応じて、撮像装置９６０の動作を制御する。
【０２５１】
ユーザインタフェース９７１は、制御部９７０と接続される。ユーザインタフェース９７１は、例えば、ユーザが撮像装置９６０を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース９７１は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９７０へ出力する。
【０２５２】
このように構成された撮像装置９６０において、画像処理部９６４は、上述した実施形態に係る画像符号化装置１０及び画像復号装置６０の機能を有する。それにより、撮像装置９６０での画像の符号化及び復号に際して、デブロックフィルタの処理の並列度を高めて処理を高速化することができる。
【０２５３】
＜８．まとめ＞
ここまで、図１〜図４７を用いて、一実施形態に係る画像符号化装置１０及び画像復号装置６０のデブロックフィルタの３つの実施例について詳しく説明した。これら３つの実施例によれば、既存の手法において存在していたデブロックフィルタの処理の依存関係が緩和される。それにより、デブロックフィルタの適用に際しての処理の並列度を高めることが可能となる。その結果、デブロックフィルタの多大な処理量を原因とする遅延又はデータレートの低下を回避し、処理を高速化することができる。また、画像のサイズ又は実装環境の制約などの様々な条件に応じてデブロックフィルタの処理の並列度及び順序を柔軟に設定することも可能となる。
【０２５４】
また、第１の実施例によれば、垂直境界及び水平境界の一方についてのフィルタリングの要否の判定に際して、画像内の複数のマクロブロックにわたって、デブロックフィルタへの入力画像の画素値が参照される。それにより、マクロブロック間（あるいは符号化単位間）の処理の依存関係が緩和される。従って、複数のマクロブロック（最も並列度が高められる場合には、画像内の全てのマクロブロック）にわたるフィルタリング要否判定処理を並列化することが可能となる。
【０２５５】
また、第２の実施例によれば、各ブロックの垂直境界及び水平境界についてのフィルタリングの要否の判定は、当該ブロックが属するマクロブロック内の他のブロックへのデブロックフィルタの適用を待つことなく実行される。それにより、マクロブロック内（あるいは符号化単位内）での垂直境界と水平境界との間の処理の依存関係が緩和される。従って、マクロブロック内で、垂直境界及び水平境界についてのフィルタリング要否判定処理を並列化することが可能となる。
【０２５６】
また、第３の実施例によれば、垂直境界及び水平境界についてのフィルタリング処理の双方において、デブロックフィルタへの入力画素がフィルタリングされる。かかる構成によれば、垂直境界及び水平境界についてのフィルタリング処理をも互いに並列化することが可能となる。それにより、デブロックフィルタにおける処理を一層高速化することができる。また、並列的に実行される２つのフィルタリング処理の双方により更新される画素については、２つのフィルタ出力に基づいて出力画素値が計算される。それにより、上記２つのフィルタリング処理を並列化させた場合にも、垂直境界及び水平境界の双方に現れるブロック歪みを適切に減少させることができる。また、出力画素値は、２つのフィルタ出力の加重平均として計算され得る。それにより、デブロックフィルタによるブロック歪みの除去の効果を高め、画質をさらに向上させることもできる。
【０２５７】
なお、本明細書では、主に垂直境界についてのフィルタリング処理が水平境界についてのフィルタリング処理よりも先に行われる例を説明したが、水平境界についてのフィルタリング処理が先に行われる場合にも本開示に係る技術による上述した効果は同等に享受され得る。また、デブロックフィルタの処理単位のサイズ又はマクロブロックのサイズは、本明細書で説明した例に限定されず、他のサイズであってもよい。また、１つの手法として、フィルタリング要否判定処理自体を省略した上で、複数の垂直境界及び複数の水平境界へのデブロックフィルタの適用を並列化することも可能である。
【０２５８】
また、デブロックフィルタの処理の並列化のために使用される情報を符号化側から復号側に伝送する手法は、これら情報を符号化ストリームのヘッダに多重化する手法に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像（スライス若しくはブロックなど、画像の一部であってもよい）と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像（又はビットストリーム）とは別の伝送路上で伝送されてもよい。また、情報は、画像（又はビットストリーム）とは別の記録媒体（又は同一の記録媒体の別の記録エリア）に記録されてもよい。さらに、情報と画像（又はビットストリーム）とは、例えば、複数フレーム、１フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
【０２５９】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０２６０】
なお、本明細書では、垂直境界についてのフィルタリング処理を「水平フィルタリング」、水平境界についてのフィルタリング処理を「垂直フィルタリング」と表現している。一般に、垂直境界についてのフィルタリング処理のフィルタタップは水平方向に沿って並び、水平境界についてのフィルタリング処理のフィルタタップは垂直方向に沿って並ぶ。そのため、上述したようなフィルタリング処理の呼称が採用される。
【符号の説明】
【０２６１】
１０，  ６０    画像処理装置
１１２，２１２  第１判定部（垂直境界判定部）
１１６，２１６  第２判定部（水平境界判定部）
１３２          水平フィルタリング部
１４２          垂直フィルタリング部
１５０          並列化制御部
【図１】
0006011342.tif 000002
【図２】
0006011342.tif 000003
【図３】
0006011342.tif 000004
【図４】
0006011342.tif 000005
【図５】
0006011342.tif 000006
【図６】
0006011342.tif 000007
【図７】
0006011342.tif 000008
【図８】
0006011342.tif 000009
【図９】
0006011342.tif 000010
【図１０】
0006011342.tif 000011
【図１１】
0006011342.tif 000012
【図１２】
0006011342.tif 000013
【図１３】
0006011342.tif 000014
【図１４】
0006011342.tif 000015
【図１５】
0006011342.tif 000016
【図１６】
0006011342.tif 000017
【図１７】
0006011342.tif 000018
【図１８】
0006011342.tif 000019
【図１９】
0006011342.tif 000020
【図２０】
0006011342.tif 000021
【図２１】
0006011342.tif 000022
【図２２】
0006011342.tif 000023
【図２３】
0006011342.tif 000024
【図２４】
0006011342.tif 000025
【図２５】
0006011342.tif 000026
【図２６】
0006011342.tif 000027
【図２７】
0006011342.tif 000028
【図２８】
0006011342.tif 000029
【図２９】
0006011342.tif 000030
【図３０】
0006011342.tif 000031
【図３１】
0006011342.tif 000032
【図３２】
0006011342.tif 000033
【図３３】
0006011342.tif 000034
【図３４】
0006011342.tif 000035
【図３５】
0006011342.tif 000036
【図３６】
0006011342.tif 000037
【図３７】
0006011342.tif 000038
【図３８】
0006011342.tif 000039
【図３９】
0006011342.tif 000040
【図４０】
0006011342.tif 000041
【図４１】
0006011342.tif 000042
【図４２】
0006011342.tif 000043
【図４３】
0006011342.tif 000044
【図４４】
0006011342.tif 000045
【図４５】
0006011342.tif 000046
【図４６】
0006011342.tif 000047
【図４７】
0006011342.tif 000048