(57)【特許請求の範囲】
【請求項１】
画像を複数の部分領域に分け、部分領域毎に、独立にフィルタ処理する第１のフィルタ処理工程、及び、
前記部分領域のうち、隣接する部分領域のフィルタ処理結果の影響を受ける範囲について、前記隣接する部分領域のフィルタ処理の終了後に、フィルタ処理を行う第２のフィルタ処理工程を含み、さらに、
前記隣接する部分領域のフィルタ処理が終了したかを判定し、
前記隣接する部分領域のフィルタ処理が当該領域に影響を及ぼす範囲まで進行したかを判定し、
前記二つの判定結果に基づき、
前記隣接する部分領域のフィルタ処理が前記部分領域に影響を及ぼす範囲まで進行する前に、前記部分領域のフィルタ処理を行なうように前記第１のフィルタ処理工程を制御し、
前記隣接する部分領域のフィルタ処理結果の影響を受ける範囲については、前記隣接する部分領域のフィルタ処理の終了後に、再度、フィルタ処理を行って、前記フィルタ処理結果を更新するように前記第２のフィルタ処理工程を制御するフィルタ制御工程と、
を含む、ことを特徴とするフィルタ処理方法。
【請求項２】
前記フィルタ制御工程では、前記第１のフィルタ処理工程において、前記隣接する部分領域のフィルタ処理結果の影響を受ける範囲については、前記隣接する部分領域のフィルタ処理終了前には、フィルタ処理を行わないように制御する、ことを特徴とする請求項１記載のフィルタ処理方法。
【請求項３】
前記フィルタ制御工程は、
前記第１のフィルタ処理工程による前記隣接する部分領域のフィルタ処理の終了後に、前記第２のフィルタ処理工程で再度、フィルタ処理を行ってフィルタ処理結果を更新する際に、前記隣接する部分領域のフィルタ処理結果の影響が残留するか否かを判定する工程と、
前記隣接する部分領域のフィルタ処理結果の影響が残留しないと判定された範囲のフィルタ処理結果の更新を行わないように制御する工程と、
を含む、ことを特徴とする請求項１記載のフィルタ処理方法。
【請求項４】
前記第１及び第２のフィルタ処理工程の少なくとも１方において、複数の前記部分領域に対するフィルタ処理を並列処理する、ことを特徴とする請求項１乃至３のいずれか１項
に記載のフィルタ処理方法。
【請求項５】
前記第１のフィルタ処理工程における前記部分領域に対するフィルタ処理において、
フィルタ処理によって変更される画素データのうち、隣接する部分領域のフィルタ処理の終了後に行う前記第２のフィルタ処理工程によるフィルタ処理で必要とされる変更前の画素データを、前記フィルタ処理前に、メモリに予め格納しておき、
隣接する部分領域のフィルタ処理の終了後に行う前記第２のフィルタ処理工程でのフィルタ処理では、前記メモリに格納しておいた前記変更前の画素データを用いてフィルタ処理を行う、ことを特徴とする請求項１乃至４のいずれか１項に記載のフィルタ処理方法。
【請求項６】
前記第１のフィルタ処理工程において、前記画像を複数の部分領域に分割する際に、画像毎に、分割数または分割型を決定する、ことを特徴とする請求項１乃至５のいずれか１項に記載のフィルタ処理方法。
【請求項７】
前記第１及び第２のフィルタ処理工程の少なくとも１方において、前記フィルタ処理は、ブロックノイズを低減するデブロックフィルタである、ことを特徴とする請求項１乃至６のいずれか１項に記載のフィルタ処理方法。
【請求項８】
請求項１乃至７のいずれか一記載のフィルタ処理方法によりフィルタ処理を施した画像を参照して、画像を符号化する、ことを特徴とする動画像符号化方法。
【請求項９】
請求項１乃至７のいずれか一記載のフィルタ処理方法によりフィルタ処理を施した画像を参照して、画像を復号化する、ことを特徴とする動画像復号化方法。
【請求項１０】
フィルタ処理のために、画像を複数の部分領域に分割する手段と、
前記部分領域毎に独立にフィルタ処理する第１のフィルタ処理手段と、
前記部分領域のうち、隣接する部分領域のフィルタ処理結果の影響を受ける範囲について、前記隣接する部分領域のフィルタ処理の終了後に、フィルタ処理を行う第２のフィルタ処理手段と、
前記隣接する部分領域のフィルタ処理が終了したかを判定し、
前記隣接する部分領域のフィルタ処理が当該領域に影響を及ぼす範囲まで進行したかを判定し、
前記二つの判定結果に基づき、
前記隣接する部分領域のフィルタ処理が前記部分領域に影響を及ぼす範囲まで進行する前に、前記部分領域のフィルタ処理を行なうように前記第１のフィルタ処理手段を制御し、
前記隣接する部分領域のフィルタ処理結果の影響を受ける範囲については、前記隣接する部分領域のフィルタ処理の終了後に、再度、フィルタ処理を行って、前記フィルタ処理結果を更新するように前記第２のフィルタ処理手段を制御するフィルタ制御手段を備える、ことを特徴とするフィルタ装置。
【請求項１１】
前記隣接する部分領域のフィルタ処理が終了したかを判定し、判定結果に基づき、隣接する部分領域のフィルタ処理結果の影響を受ける範囲については、前記隣接する部分領域のフィルタ処理終了前には、フィルタ処理を行わないように、前記第１のフィルタ処理手段を制御するフィルタ制御手段を備える、ことを特徴とする請求項１０記載のフィルタ装置。
【請求項１２】
前記フィルタ制御手段は、隣接する部分領域のフィルタ処理の終了後に再度フィルタ処理を行ってフィルタ処理結果を更新する際に、前記隣接する部分領域のフィルタ処理結果の影響が残留するか否かを判定し、
前記隣接する部分領域のフィルタ処理結果の影響が残留しないと判定された範囲のフィルタ処理結果更新を行わないように、前記第２のフィルタ処理手段を制御する、ことを特徴とする請求項１１記載のフィルタ装置。
【請求項１３】
前記部分領域に対するフィルタ処理において、フィルタ処理によって変更される画素データのうち、隣接する部分領域のフィルタ処理の終了後に前記第２のフィルタ処理手段で行うフィルタ処理で必要とされる変更前の画素データをフィルタ処理前にメモリに格納しておく画像記憶手段を備える、ことを特徴とする請求項１０乃至１２のいずれか１項に記載のフィルタ装置。
【請求項１４】
復号画像をループ内フィルタ処理するフィルタ装置であって、
複数のフィルタ処理手段と、フィルタ制御手段と、を備え、
前記フィルタ制御手段は、画面を複数の領域に分割し、それぞれの領域のフィルタ処理のために異なるフィルタ処理手段を割り当て、前記フィルタ処理手段が割り当てられた部分領域内のマクロブロックを、走査して、ループフィルタ処理を行うように制御し、
割り当てられた領域内の走査が終了した場合、分割領域境界で隣接領域のフィルタ結果の前記領域への影響の有無を判定し、
前記判定結果が、前記隣接領域のフィルタ結果の影響無しの場合には、前記領域のフィルタ処理を終了し、
前記判定結果が、前記隣接領域のフィルタ結果の影響が有りの場合には、前記隣接領域のフィルタ結果の影響が伝播する可能性のある範囲のフィルタ処理を行うように、対応する前記フィルタ処理手段を制御する、ことを特徴とするフィルタ装置。
【請求項１５】
前記フィルタ制御手段は、前記隣接領域のフィルタ結果の影響が有ると判定された場合に、前記隣接領域のフィルタ結果の影響が残留するか否かを判断し、前記隣接領域のフィルタ結果の影響が残留している場合にのみ該影響が残留する範囲のフィルタ処理を行うことで、前記隣接領域のフィルタ結果の影響が伝播する可能性があっても実際には前記影響が伝播しない範囲のフィルタ処理は行わない、ように制御する、ことを特徴とする請求項１４記載のフィルタ装置。
【請求項１６】
前記フィルタ制御手段は、前記画面を複数の領域に分割し、それぞれの領域のフィルタ処理のために異なるフィルタ処理手段を割り当て、前記フィルタ処理手段が割り当てられた領域内のマクロブロックを、水平走査順に走査し、隣接領域の影響がない範囲のマクロブロックのループフィルタ処理を行うように制御し、
割り当てられた領域内の走査が終了した場合、分割領域境界で隣接領域のフィルタ結果の前記領域への影響の有無を判定し、
前記判定結果が、前記隣接領域のフィルタ結果の影響無しの場合には、前記領域のフィルタ処理を終了し、
前記判定結果が、前記隣接領域のフィルタ結果の影響が有りの場合には、前記隣接領域のフィルタ結果の影響が伝播する範囲のフィルタ処理を対応する前記フィルタ処理手段で行うように制御する、ことを特徴とする請求項１４記載のフィルタ装置。
【請求項１７】
前記隣接領域のフィルタ結果の影響が有ると判定された場合には、前記隣接領域のフィルタ結果の影響が伝播する範囲内の各マクロブロックを水平走査順に走査してマクロブロック単位でフィルタ処理を行い、前記隣接領域のフィルタ結果の影響が伝播する範囲内の全マクロブロックの走査が終了するとフィルタ処理を終了する制御を行う、ことを特徴とする請求項１４記載のフィルタ装置。
【請求項１８】
請求項１０乃至１７のいずれか一に記載のフィルタ装置を備え、フィルタ処理を施した画像を参照して符号化する、ことを特徴とする動画像符号化装置。
【請求項１９】
請求項１０乃至１７のいずれか一に記載のフィルタ装置を備え、フィルタ処理を施した画像を参照して復号化する、ことを特徴とする動画像復号化装置。
【請求項２０】
フィルタ処理用に画像を複数の部分領域に分ける処理と、
前記部分領域毎に独立にフィルタ処理する第１の処理と、
当該部分領域のうち隣接する部分領域のフィルタ処理結果の影響を受ける範囲について前記隣接する部分領域のフィルタ処理の終了後にフィルタ処理を行う第２の処理と、
前記隣接する部分領域のフィルタ処理が終了したかを判定する第１の判定処理と、
前記隣接する部分領域のフィルタ処理が当該領域に影響を及ぼす範囲まで進行したかを判定する第２の判定処理と、
前記第１の判定処理及び前記第２の判定処理の判定結果に基づき、隣接する部分領域のフィルタ処理結果の影響を受ける範囲については、前記隣接する部分領域のフィルタ処理が当該領域に影響を及ぼす範囲まで進行する前にフィルタ処理を行い、前記隣接する部分領域の前記第１のフィルタ処理の終了後に再度、フィルタ処理を行って、前記第１のフィルタ処理による前記フィルタ処理結果を更新するように、前記第２の処理におけるフィルタ処理を制御するフィルタ制御処理と、
を、コンピュータに実行させるプログラム。
【請求項２１】
請求項２０記載のプログラムにおいて、
前記隣接する部分領域のフィルタ処理が終了したかを判定する判定処理と、
前記判定手段の判定結果に基づき、隣接する部分領域のフィルタ処理結果の影響を受ける範囲については、前記隣接する部分領域のフィルタ処理終了前には、前記第１の処理のフィルタ処理を行わないように制御する処理と、
を前記コンピュータに実行させるプログラム。
【請求項２２】
請求項２０記載のプログラムにおいて、
隣接する部分領域のフィルタ処理の終了後に再度、前記第２の処理のフィルタ処理を行ってフィルタ処理結果を更新する際に、前記隣接する部分領域のフィルタ処理結果の影響が残留するか否かを判定する第３の判定処理と、
前記第３の判定処理によって前記隣接する部分領域のフィルタ処理結果の影響が残留しないと判定された範囲のフィルタ処理結果の更新を行わないように、前記第２のフィルタ処理を制御する処理と、
を前記コンピュータに実行させるプログラム。
【請求項２３】
請求項２０記載のプログラムにおいて、
前記部分領域に対するフィルタ処理において、フィルタ処理によって変更される画素データのうち、隣接する部分領域のフィルタ処理の終了後に行う前記第２の処理のフィルタ処理で必要とされる変更前の画素データをフィルタ処理前にメモリに格納しておく画像記憶処理を前記コンピュータに実行させるプログラム。
【請求項２４】
請求項２０乃至２３のいずれか一に記載のプログラムにおいて、
前記コンピュータは、フィルタ処理した画像を参照して符号化する動画像符号化装置、又は、フィルタ処理した画像を参照して復号化する動画像復号化装置を構成するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像に対するフィルタ処理を高速処理可能な動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、フィルタ装置及びコンピュータプログラムに関する。
【背景技術】
【０００２】
動画像信号を低ビットレート、高圧縮率かつ高画質で符号化して符号化データを生成したり、符号化された動画像を復号化したりする技術として、ＩＴＵ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ）が標準化したＨ．２６１、Ｈ．２６３や、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）のＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４などがある。さらに、近年ＩＴＵとＩＳＯが共同で規格化を行ったＨ．２６４がある（非特許文献１）。このＨ．２６４では、さらなる圧縮効率向上、画質向上のために、ループ内フィルタが採用されている。
【０００３】
Ｈ．２６４復号化処理の概略について図１を参照して以下に説明する。
【０００４】
外部から供給される圧縮符号化された画像ビットストリームデータ（単に「ビットストリーム」と略記する）は、可変長符号復号部１００１に入力される。
【０００５】
可変長符号復号部１００１は、入力されたビットストリームに対して、ビットストリームに記録された情報に基づいて、所定の可変長復号処理又は算術符号復号処理を行い、得られた符号化モードや量子化パラメータや量子化された直交変換係数の情報を、逆量子化部１００２に供給する。また、可変長符号復号部１００１は、参照ピクチャや動きベクトルの情報を動き補償部１００４に供給する。また、可変長符号復号部１００１は、フレーム内予測モード情報をフレーム内予測部１００５に供給する。可変長符号復号部１００１は、符号化モード情報を切り替え部１００９に供給する。
【０００６】
逆量子化部１００２は、供給される量子化された直交変換係数に対して所定の逆量子化処理を行い、得られた直交変換係数の情報を逆直交変換部１００３に供給する。
【０００７】
逆直交変換部１００３は、直交変換係数に対して所定の逆直交変換処理を行い、得られた差分画像情報を加算部１０１０に供給する。
【０００８】
一方、動き補償部１００４は、供給される参照ピクチャ、動きベクトル情報に基づき、フレームメモリ１００８に格納されている参照ピクチャを用いて所定の動き補償処理を行い、得られた予測画像情報を切り替え部１００９に供給する。
【０００９】
フレーム内予測部１００５は、供給されるフレーム内予測モード情報に基づき、復号画像メモリ１００６に格納されている復号画像を用いて所定のフレーム内予測処理を行い、得られた予測画像情報を切り替え部１００９に供給する。
【００１０】
切り替え部１００９は、可変長符号復号部１００１より供給される符号化モード情報に基づき、予測画像を選択して（フレーム内予測、フレーム間予測）、加算部１０１０に供給する。
【００１１】
加算部１０１０は、切り替え部１００９より供給される予測画像と差分画像を加算し、得られる復号画像情報を復号画像メモリ１００６に供給する。
【００１２】
復号画像メモリ１００６は、加算部１０１０より供給される復号画像の全て又は一部を記憶し、フレーム内予測部１００５及びループ内フィルタ部１００７に供給する。
【００１３】
ループ内フィルタ部１００７は、復号画像メモリ１００６より供給される復号画像に所定のループ内フィルタ処理（ブロックノイズを低減するデブロックフィルタ処理等）を施し、得られるフィルタ処理後の復号画像をフレームメモリ１００８に供給する。
【００１４】
フレームメモリ１００８は、ループ内フィルタ部１００７より供給されるフィルタ処理後の復号画像を所定の枚数記憶し、動き補償部１００４に供給するとともに、所定のタイミングで復号画像を外部に出力する。
【００１５】
次に、Ｈ．２６４符号化処理について図２を参照して以下に説明する。
【００１６】
外部から供給される画像は予測、符号化モード判定部１１１４と、減算部１１１０に供給される。
【００１７】
予測、符号化モード判定部１１１４は、入力された画像信号と、フレームメモリ１１０９から供給されるフィルタ処理後の復号画像、復号画像メモリ１１０７から供給される復号画像の情報を用い、符号化モード、参照ピクチャ、動きベクトル、フレーム内予測モード等を決定し、可変長符号符号化部１１０３、動き補償部１１１２、フレーム内予測部１１１３、切り替え部１１１１に供給する。
【００１８】
動き補償部１１１２は、供給される参照ピクチャ、動きベクトル情報に基づき、フレームメモリ１１０９に格納されている参照ピクチャを用いて所定の動き補償処理を行い、得られた予測画像情報を切り替え部１１１１に供給する。
【００１９】
フレーム内予測部１１１３は、予測、符号化モード判定部１１１４より供給されるフレーム内予測モード情報に基づき、復号画像メモリ１１０７に格納されている復号画像を用いて所定のフレーム内予測処理を行い、得られた予測画像情報を切り替え部１１１１に供給する。
【００２０】
切り替え部１１１１は、予測、符号化モード判定部１１１４より供給される符号化モード情報に基づき、予測画像を選択して減算部１１１０及び加算部１１０６に供給する。
【００２１】
減算部１１１０は、外部から入力される画像から予測画像を減算し、得られた差分画像情報を直交変換部１１０１に供給する。
【００２２】
直交変換部１１０１は、差分画像情報に所定の直交変換処理を行い、得られた直交変換係数を量子化部１１０２に供給する。
【００２３】
量子化部１１０２は、直交変換係数に所定の量子化処理を行い、量子化された直交変換係数を可変長符号符号化部１１０３及び逆量子化部１１０４に供給する。
【００２４】
可変長符号符号化部１１０３は、入力される情報に所定の可変長符号符号化処理又は算術符号符号化処理を行い、ビットストリームを生成して外部に出力する。
【００２５】
逆量子化部１１０４は、供給される量子化された直交変換係数に対して所定の逆量子化処理を行い、得られた直交変換係数の情報を逆直交変換部１１０５に供給する。
【００２６】
逆直交変換部１１０５は、直交変換係数に対して所定の逆直交変換処理を行い、得られた差分画像情報を加算部１１０６に供給する。
【００２７】
加算部１１０６は、供給される予測画像と差分画像を加算し、得られる復号画像情報を復号画像メモリ１１０７に供給する。
【００２８】
復号画像メモリ１１０７は、加算部１１０６より供給される復号画像の全て又は一部を記憶し、フレーム内予測部１１１３、ループ内フィルタ部１１０８及び予測、符号化モード判定部１１１４に供給する。
【００２９】
ループ内フィルタ部１１０８は、復号画像メモリ１１０７より供給される復号画像に、所定のループ内フィルタ処理を施し、得られるフィルタ処理後の復号画像をフレームメモリ１１０９に供給する。
【００３０】
フレームメモリ１１０９は、ループ内フィルタ部１１０８より供給されるフィルタ処理後の復号画像を所定の枚数記憶し、動き補償部１１１２及び予測、符号化モード判定部１１１４に供給する。
【００３１】
以上で説明したように、Ｈ．２６４復号化処理では、復号化時の動き補償処理でフレームメモリに格納されている画像を参照するが、参照される画像は、復号画像にループ内フィルタ処理を行った結果である。
【００３２】
また、Ｈ．２６４符号化処理では、符号化及び復号化（符号化器で復号化器と同一の内部状態を得るための局所復号化処理）時の動き補償処理でフレームメモリに格納されている画像を参照するが、参照される画像は、符号済みの画像又は復号画像（局所復号画像）にループ内フィルタ処理を行った結果である。
【００３３】
次に、Ｈ．２６４のループ内フィルタ処理について説明する。
【００３４】
ＭＰＥＧ−２／４等の動画像符号化では、特に、低ビットレートで符号化する場合に復号画像にブロック歪が発生する場合がある。以降の画像の符号化の際には、このブロック歪を含んだ復号画像を動き補償で参照するため、以降の画像にもブロック歪の影響による画質劣化が伝播してしまう問題があった。
【００３５】
そこで、Ｈ．２６４では、復号画像を動き補償で参照するために、フレームメモリに格納する前に、符号化によって発生したブロック歪等の歪を低減するフィルタ（「ループ内フィルタ」という）を適用する技術が採用された。
【００３６】
Ｈ．２６４では、４×４画素ブロック単位で直交変換処理を行うため、このブロック境界でブロック歪が発生しやすい。そこで、各４×４ブロックの境界に対してフィルタ処理を行う。
【００３７】
また、符号化による歪の大きさは、１枚の画像内でも場所によって異なるため、ブロックの符号化モードや量子化パラメータなどに応じて、フィルタの強度を適応的に制御する。
【００３８】
フィルタ処理は、画像内の各マクロブロック（ＭＢ）毎に、水平走査順に適用される。Ｈ．２６４では、マクロブロックは、１６×１６画素の矩形領域である。
【００３９】
マクロブロック内での各４×４ブロック境界に対するフィルタの適用順を、図３を参照して以下に説明する。
【００４０】
１６×１６画素のマクロブロックの４本の垂直方向のブロック境界１０１、１０２、１０３、１０４に対して、この順番でフィルタを適用し、次に４本の水平方向のブロック境界１０５、１０６、１０７、１０８に対してこの順番にフィルタを適用する。各ブロック境界に対しては、境界に直交する方向に、１次元のフィルタを適用する。すなわち、垂直方向のブロック境界では、水平方向のフィルタを適用し、水平方向のブロック境界では、垂直方向のフィルタを適用する。なお、図３に示す８本のブロック境界のうち、ブロック境界１０１及び１０５はＭＢ境界でもある。
【００４１】
ループ内フィルタの動作は、スライス単位で切り替えることが可能である。ここで、スライスとは、整数個数のＭＢの集合である。
【００４２】
フィルタ処理の動作を制御するため、Ｈ．２６４ビットストリームには、スライス毎にパラメータｄｉｓａｂｌｅ＿ｄｅｂｌｏｃｋｉｎｇ＿ｆｉｌｔｅｒ＿ｉｄｃを記録出来る。
【００４３】
ｄｉｓａｂｌｅ＿ｄｅｂｌｏｃｋｉｎｇ＿ｆｉｌｔｅｒ＿ｉｄｃが記録されていない場合には、ｄｉｓａｂｌｅ＿ｄｅｂｌｏｃｋｉｎｇ＿ｆｉｌｔｅｒ＿ｉｄｃの値は０として扱う。
【００４４】
ｄｉｓａｂｌｅ＿ｄｅｂｌｏｃｋｉｎｇ＿ｆｉｌｔｅｒ＿ｉｄｃが０の場合には、該当スライス内の全てのブロック境界に対してフィルタ処理を適用する。
【００４５】
ｄｉｓａｂｌｅ＿ｄｅｂｌｏｃｋｉｎｇ＿ｆｉｌｔｅｒ＿ｉｄｃが１の場合には、該当スライス内のブロック境界に対してはフィルタ処理を行わない。
【００４６】
また、ｄｉｓａｂｌｅ＿ｄｅｂｌｏｃｋｉｎｇ＿ｆｉｌｔｅｒ＿ｉｄｃが２の場合には該当スライス内の、スライス境界を除く全てのブロック境界に対してフィルタ処理を適用する。
【００４７】
フィルタ処理にあたっては、当該ＭＢ内の画素データだけではなく、当該ＭＢの上側及び左側に隣接するＭＢの画素データも変更する。
【００４８】
フィルタ処理にあたって、まずフィルタ適用の可否やフィルタ強度を制御するパラメータであるｂＳ（Ｂｏｕｎｄａｒｙ  Ｓｔｒｅｎｇｔｈ）を算出する。
【００４９】
ｂＳ値の算出手順の概略を、図４のフローチャートを参照して説明する。
【００５０】
ｂＳ値は、対象とする４×４ブロック境界を挟んで隣接する２つの４×４ブロック（２つのブロックを、ブロックＰとブロックＱとする）の符号化モードや動きベクトルなどの情報を参照して算出される。
【００５１】
まず、ブロックＰ又はブロックＱのいずれかがイントラ符号化されたブロックであるか否かを判定する（ステップＳ１０１）。
【００５２】
ステップＳ１０１で条件が成立する場合には、次に対象とするブロック境界がＭＢ境界であるか否かを判定する（ステップＳ１０２）。
【００５３】
ステップＳ１０２で条件が成立する場合には、ｂＳ値は４とする（ステップＳ１０５）。一方、ステップＳ１０２で条件が成立しない場合には、ｂＳ値は３とする（ステップＳ１０６）。
【００５４】
一方、ステップＳ１０１で条件が成立しない場合には、次にブロックＰ、ブロックＱの少なくとも一方が非零の直交変換係数を持つか否かを判定する（ステップＳ１０３）。
【００５５】
ステップＳ１０３で条件が成立する場合には、ｂＳ値は２とする（ステップＳ１０７）。
【００５６】
ステップＳ１０３で条件が成立しない場合には、さらに、
・ブロックＰ及びブロックＱの参照ピクチャ数が同一である、
・ブロックＰ及びブロックＱの参照するピクチャが同一である、
・ブロックＰ及びブロックＱの全ての動きベクトルのＸ方向成分及びＹ方向成分それぞれの差の絶対値が１画素未満である、
という３つの条件が全て満たされるか否かを判定する（ステップＳ１０４）。
【００５７】
ステップＳ１０４で条件が成立する場合には、ｂＳ値は０とする（ステップＳ１０９）。
【００５８】
一方、ステップＳ１０４で条件が成立しない場合には、ｂＳ値は１とする（ステップＳ１０８）。
【００５９】
図５は、ブロック境界のフィルタ処理に用いられる境界周辺の８画素ｐ０〜ｐ３及びｑ０〜ｑ３を示す図である。図５（Ａ）には、垂直方向の境界周辺の８画素、図５（Ｂ）には、水平方向の境界周辺の８画素が示されている。垂直方向の境界に適用するフィルタでは、境界の左右それぞれ４画素が用いられ、水平方向の境界に適用するフィルタでは境界の上下それぞれ４画素が用いられる。ｂＳの値が０の場合には、フィルタ処理は行わない。
【００６０】
ｂＳの値が１、２、３のいずれかの場合のフィルタ処理を説明する。この場合、次式（１）の条件が成立する場合にのみ、フィルタ処理が行われる。
【００６１】
｜ｐ０−ｑ０｜＜α  かつ  ｜ｐ１−ｑ０｜＜β  かつ  ｜ｑ１−ｑ０｜＜β
・・・（１）
【００６２】
ここで、α及びβは、フィルタの強度を制御するパラメータで、ブロックＰ及びブロックＱの量子化パラメータと、Ｈ．２６４ビットストリーム中に記録されているパラメータｓｌｉｃｅ＿ａｌｐｈａ＿ｃ０＿ｏｆｆｓｅｔ＿ｄｉｖ２及びａｌｉｃｅ＿ｂｅｔａ＿ｏｆｆｓｅｔ＿ｄｉｖ２とから定まる値である。
【００６３】
図６は、ｂＳの値が１、２、３のいずれかの場合の第１のフィルタ処理を説明する図である。
【００６４】
図６の上側はフィルタ適用前の画素値、下側はフィルタ適用後の画素値を示している。フィルタ適用によって値が変化する可能性のある画素値は、ｐ０’、ｑ０’で示されている。
【００６５】
すなわち、例えば図６において、境界（縦棒）のすぐ左側の画素の画素値は、フィルタ処理前は、ｐ０であるが、フィルタ処理後はｐ０’に変化する可能性があることを示している。図６において、フィルタ処理前の画素値のうち、フィルタ処理の入力として利用されるもの、及び、フィルタ処理後の画素値のうち、フィルタ処理によって画素値が変化する可能性のあるものは網掛けで示している。
【００６６】
図６において、２０１は、ｐ１、ｐ０、ｑ０、ｑ１の４画素の画素値（フィルタ適用前）を入力し、ｐ０’の画素値を出力する１次元のフィルタ処理を表している。
【００６７】
フィルタ処理２０１は、次式（２）で定義される。
【００６８】
ｐ０’＝Ｃｌｉｐ１（ｐ０＋Δ）
・・・（２）
【００６９】
ここで、Ｃｌｉｐ１（ａ）は、ａの値を［０、２５５］にクリッピングする処理を意味する。また、Δは、次式（３）で定義される。
【００７０】
Δ＝Ｃｌｉｐ３（−ｔｃ、ｔｃ、（（（ｑ０−ｐ０）＜＜２）＋（ｐ１−ｑ１）＋４）＞＞３）
・・・（３）
【００７１】
ここで、Ｃｌｉｐ３（ａ、ｂ、ｃ）は、ｃの値を［ａ、ｂ］の範囲にクリッピングする処理を表している。
【００７２】
また、「 << 」は算術左シフト演算、「 >> 」は算術右シフト演算を表している。
【００７３】
ｔｃは、画素値の変更幅を制約するパラメータで、｜ｐ２−ｐ０｜、｜ｑ２−ｑ０｜、ｂＳ、ブロックＰ及びブロックＱの量子化パラメータ、及びβから定まる値である。
【００７４】
同様に、フィルタ処理２０２は、次式（４）で定義される。
【００７５】
ｑ０’＝Ｃｌｉｐ１（ｑ０−Δ）
・・・（４）
【００７６】
図７は、ｂＳの値が１、２、３のいずれかの場合の第２のフィルタ処理を説明する図である。このフィルタ処理は、輝度成分のみに適用される。
【００７７】
フィルタ処理３０１は、
｜ｐ２−ｐ０｜＜β
が成立する場合のみ行われるもので、次式（５）で定義される。
【００７８】
ｐ１’＝ｐ１＋Ｃｌｉｐ１（−ｔｃ０、ｔｃ０、（ｐ２＋（（ｐ０＋ｑ０＋１）＞＞１）−（ｐ１＜＜１））＞＞１）
・・・（５）
【００７９】
ここで、ｔｃ０は、ｂＳとブロックＰ及びブロックＱの量子化パラメータから定まるパラメータである。また、フィルタ処理３０２は、
｜ｑ２−ｑ０｜＜β
が成立する場合のみ行われるもので、次式（６）で定義される。
【００８０】
ｑ１’＝ｑ１＋Ｃｌｉｐ１（−ｔｃ０、ｔｃ０、（ｑ２＋（（ｐ０＋ｑ０＋１）＞＞１）−（ｑ１＜＜１））＞＞１）
・・・（６）
【００８１】
次に、ｂＳの値が４の場合のフィルタ処理を説明する。この場合も、式（１）の条件が成立する場合にのみ、フィルタ処理が行われる。
【００８２】
図８は、ｂＳの値が４の場合の第１のフィルタ処理を説明する図である。
【００８３】
フィルタ処理４０１、４０２、４０３は、輝度成分に対するフィルタ処理を行う場合で、次式（７）の条件が成立する場合のみ行われる。フィルタ処理４０１、４０２、４０３は、それぞれ、下記の式（８）、式（９）、式（１０）で定義される。
【００８４】
｜ｐ２−ｐ０｜＜β  かつ  ｜ｐ０−ｑ０｜＜（（α＞＞２）＋２）
・・・（７）
【００８５】
ｐ２’＝(２×ｐ３＋３×ｐ２＋ｐ１＋ｐ０＋ｑ０＋４)＞＞３
・・・（８）
【００８６】
ｐ１‘＝（ｐ２＋ｐ１＋ｐ０＋ｑ０＋２）＞＞２
・・・（９）
【００８７】
ｐ０’＝(ｐ２＋２×ｐ１＋２×ｐ０＋２×ｑ０＋ｑ１＋４)＞＞３
・・・（１０）
【００８８】
また、フィルタ処理４０４、４０５、４０６は、輝度成分に対するフィルタ処理を行う場合で、かつ、式（１１）の条件が成立する場合にのみ行われる。フィルタ処理４０４、４０５、４０６は、それぞれ、下記の式（１２）、式（１３）、式（１４）で定義される。
【００８９】
｜ｑ２−ｑ０｜＜β  かつ  ｜ｐ０−ｑ０｜＜（（α＞＞２）＋２）
・・・（１１）
【００９０】
ｑ２’＝（２×ｑ３＋３×ｑ２＋ｑ１＋ｑ０＋ｐ０＋４）＞＞３
・・・（１２）
【００９１】
ｑ１’＝（ｑ２＋ｑ１＋ｑ０＋ｐ０＋２）＞＞２
・・・（１３）
【００９２】
ｑ０’＝（ｑ２＋２×ｑ１＋２×ｑ０＋２×ｐ０＋ｐ１＋４）＞＞３
・・・（１４）
【００９３】
図９は、ｂＳの値が４の場合の第２のフィルタ処理を説明する図である。フィルタ処理５０１は色差成分に対する処理を行う場合か、又は式（７）の条件が成立しない場合のみ行われるもので、次式（１５）で定義される。
【００９４】
ｐ０’＝（２×ｐ１＋ｐ０＋ｑ１＋２）＞＞２
・・・（１５）
【００９５】
フィルタ処理５０２は、色差成分に対するフィルタ処理を行う場合か、又は、式（１１）の条件が成立しない場合のみ行われるもので、次式（１６）で定義される。
【００９６】
ｑ０’＝（２×ｑ１＋ｑ０＋ｐ１＋２）＞＞２      ・・・（１６）
【００９７】
以上説明したように、Ｈ．２６４のループ内フィルタ処理は、画像内の各４×４ブロックの境界に適用される。
【００９８】
また、該当ブロック及び近傍ブロックの符号化モード、量子化パラメータ、非零の直交変換係数の有無、参照ピクチャ、動きベクトル情報などを参照してフィルタ強度を適応的に制御する複雑なフィルタ処理になっており、その所要演算量は大きい。
【００９９】
また、フィルタ処理は、画像内のＭＢを水平走査順で走査し、ＭＢ毎に、フィルタ処理を行うように規定されている。
【０１００】
あるＭＢにフィルタ処理を施す際には、当該ＭＢ内の画素値だけでなく、当該ＭＢの上側及び左側に隣接するＭＢのフィルタ処理後の画素値も参照、変更するため、当該ＭＢのフィルタ処理を行う時点で、上側及び左側ＭＢのフィルタ処理結果が確定していなければ正しいフィルタ処理結果を得ることは出来ない。
【０１０１】
Ｈ．２６４では、フィルタ処理を適用した結果の画像を、後続の画像の符号化時に動き補償で参照する構造になっている。すなわち、フィルタ処理が符号化ループ内に含まれている。
【０１０２】
このため、
・所要演算量を削減する等の目的でフィルタ処理を実行しなかったり、
・フィルタ処理の一部を簡略化したり、あるいは、
・ＭＢのフィルタ処理の順番を変更したりして、
フィルタ処理の内容を変更してしまうと、動き補償で参照される画像に誤差が発生し、その誤差が、後続の画像に、順次伝播、拡大して大きな画質劣化を生じてしまう。
【０１０３】
このため、従来はＨ．２６４の規定内容通りにＭＢ毎に水平走査順で逐次フィルタ処理を行っていた。
【０１０４】
図１０及び図１１を参照して、従来のループ内フィルタ処理の手順を説明する。
【０１０５】
フィルタ前画像メモリ２００１は、ループ内フィルタ処理を適用する前の復号画像を記憶し、フィルタ処理手段２００３（単に「フィルタ手段」ともいう）に供給する。
【０１０６】
フィルタ後画像メモリ２００２は、ループ内フィルタ処理を適用した後の復号画像を記憶し、フィルタ処理手段２００３に供給する。
【０１０７】
図１の構成と対照すると、フィルタ前画像メモリ２００１は、図１の復号画像メモリ１００６に、フィルタ後画像メモリ２００２は、図１のフレームメモリ１００８にそれぞれ対応する。
【０１０８】
フィルタ処理手段２００３は、供給されるフィルタ前画像とフィルタ後画像を用い、１マクロブロックのループ内フィルタ処理を行い、フィルタ処理結果を、フィルタ後画像メモリ２００２に供給する。
【０１０９】
走査手段２００４は、フィルタ処理手段２００３でフィルタ処理を行うＭＢ位置を制御し、画像内をＭＢ単位で水平走査順にフィルタ処理させる。
【０１１０】
画像１枚の全体をループ内フィルタ処理するには、開始（ステップＳ１００１）すると、まず、画像全体の走査が終了したか否かを判定する（ステップＳ１００２）。
【０１１１】
走査が終了していれば、フィルタ処理を終了する（ステップＳ１００５）。
【０１１２】
ステップＳ１００２において、走査が終了していない場合には、走査手段２００４によって、水平走査順に、次のＭＢ位置にフィルタ処理対象のＭＢ位置を移動し（ステップＳ１００３）、フィルタ処理手段２００３によって、１マクロブロックのフィルタ処理を行い（ステップＳ１００４）、ステップＳ１００２に戻る。ここで、水平走査順とは、画面の左上隅位置から走査を開始し、右方向に向かって走査し、画面の右端に達したら１走査単位分だけ画面の下方向に移動すると共に画面左端に移動し、ふたたび右方向に向かって走査する、という手順を画面の右下隅に達するまで繰り返す、ラスタースキャン順の走査を指す。
【０１１３】
【非特許文献１】ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｈ．２６４「Ａｄｖａｎｃｅd  ｖｉｄｅｏ  ｃｏｄｉｎｇ  ｆｏｒ  ｇｅｎｅｒｉｃ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ」、２００５年３月
【特許文献１】特開２００５−７０９３８号公報
【特許文献２】米国特許明細書第６，８８２，６８８号（ＵＳ  Ｐａｔ  ６，８８２，６８８）
【特許文献３】米国特許明細書第６，４０４，３６１号（ＵＳ  Ｐａｔ  ６，４０４，３６１）
【発明の開示】
【発明が解決しようとする課題】
【０１１４】
上記した従来のループ内フィルタ処理では、画面内の全ＭＢを水平走査順に走査し、ＭＢ単位で、逐次フィルタ処理を行うことで、画面全体のループ内フィルタ処理を行っていた。
【０１１５】
しかしながら、所要演算量の大きいループフィルタ処理を、画面内の全ＭＢについて逐次処理しながら、所定の時間内で完了させるためには、フィルタ処理手段が高速に動作する必要がある。
【０１１６】
例えば、１９２０×１０８０画素（フルＨＤサイズ）、３０フレーム／秒のＨＤ映像のループ内フィルタ処理を実時間で実行するには、１マクロブロックのフィルタ処理をおよそ４．１２μ秒以内で完了する必要があり、フィルタ処理手段にはこの時間内に処理を完了できるだけの高速動作が求められる。
【０１１７】
このため、従来のループ内フィルタ処理では、
・演算処理回路の設計難易度が高い、
・演算処理回路や演算を行うプロセッサを高い動作周波数で動作させる必要があり、消費電力が大きい、
・演算能力の低いプロセッサでは処理できない、
などの問題がある。
【０１１８】
ループ内フィルタ処理を高速化する技術として、例えば特許文献１に記載された方法が知られている。これは、１マクロブロックのフィルタ処理の内部をｂＳ算出、フィルタ判定部と複数のフィルタ演算器に分離して、それぞれを専用ハードウェアで実行し、ｂＳ算出、フィルタ判定処理と複数のフィルタ演算処理は並列に実行することで、ループ内フィルタ処理を効率化するものである。この技術は、１マクロブロックのフィルタ処理を効率化するのには効果があるが、画像全体のフィルタ処理はやはりＭＢ毎に逐次処理する必要があり、上記の問題を解決するものではない。特許文献２に記載の方法も同様に、１マクロブロックのフィルタ処理を効率化するものである。
【０１１９】
また、特許文献１や特許文献３には、データに依存性がない輝度成分と色差成分のフィルタ処理を別々の演算器で並列処理することで、さらに処理サイクル数を削減する方法が開示されている。この方法は、ループ内フィルタ処理を分散処理することで、上記の問題を軽減することはできる。しかしながら、データ量が最も大きく、適用するフィルタ処理が最も複雑な輝度成分のループ内フィルタ処理を、ＭＢ毎に逐次処理する必要があることは変わらず、上記の問題が解消されるわけではない。
【０１２０】
したがって、本発明の目的は、従来よりも低速動作のフィルタ処理手段でループ内フィルタ処理が可能な動画像符号化方法、動画像復号化方法及びそれらの装置を提供することにある。
【課題を解決するための手段】
【０１２１】
本願で開示される発明は、前記課題を解決するため、概略以下の構成とされる。
【０１２２】
本発明によれば、画像を複数の部分領域に分割し、部分領域毎に、別々のフィルタ処理手段で、フィルタ処理を行うことにより、ループ内フィルタの負荷を分散し、個々のフィルタ処理手段の負担を軽減するようにしたフィルタ処理方法、動画像符号化方法、動画像復号化方法及びそれらの装置を提供するものである。
【０１２３】
本発明によれば、符号化済みの画像にフィルタ処理を施した画像を参照して符号化する動画像符号化方法であって、前記フィルタ処理では画像を複数の部分領域に分けて部分領域毎に独立にフィルタ処理し、当該部分領域のうち隣接する部分領域のフィルタ処理結果の影響を受ける範囲については前記隣接する部分領域のフィルタ処理終了後にフィルタ処理を行うことを特徴とする動画像符号化方法が提供される。
【０１２４】
本発明によれば、符号化済みの画像にフィルタ処理を施した画像を参照して符号化する動画像符号化方法であって、前記フィルタ処理では画像を複数の部分領域に分けて部分領域毎に独立にフィルタ処理し、当該部分領域のうち隣接する部分領域のフィルタ処理結果の影響を受ける範囲については前記隣接する部分領域のフィルタ処理終了前にフィルタ処理を行い、前記隣接する部分領域のフィルタ処理終了後に再度フィルタ処理を行ってフィルタ処理結果を更新することを特徴とする動画像符号化方法が提供される。
【０１２５】
上記の動画像符号化方法において、隣接する部分領域のフィルタ処理終了後に再度フィルタ処理を行ってフィルタ処理結果を更新する際に、前記隣接する部分領域のフィルタ処理結果の影響が残留しているかを判定し、前記隣接する部分領域のフィルタ処理結果の影響が残留していない場合には以降のフィルタ処理結果更新を行わないようにしてもよい。
また、上記の動画像符号化方法において、２以上の前記部分領域に対するフィルタ処理を並列処理するようにしてもよい。
【０１２６】
また、上記の動画像符号化方法において、前記部分領域に対するフィルタ処理において、フィルタ処理によって変更される画素データのうち、隣接する部分領域のフィルタ処理終了後に行うフィルタ処理で変更前の画素データを必要とする画素データをフィルタ処理前にメモリ等に格納しておき、隣接する部分領域のフィルタ処理終了後に行うフィルタ処理ではメモリ等に格納しておいた変更前の画素データを用いてフィルタ処理を行うようにしてもよい。
【０１２７】
また、本発明において、上記の動画像符号化方法において、画像を２以上の部分領域に分割する際に、画像毎に分割数又は分割型を決定するようにしてもよい。
【発明の効果】
【０１２８】
本発明によれば、従来は高速動作する単一のフィルタ処理手段で逐次処理していたループ内フィルタ処理を、画像を２以上の部分領域に分割し、部分領域毎に別々のフィルタ処理手段でフィルタ処理を行うことが可能になり、ループ内フィルタの負荷を分散し、個々のフィルタ処理手段の負担を軽減できる効果がある。
【０１２９】
本発明によれば、個々のフィルタ処理手段の演算処理回路設計が容易になる効果がある。
【０１３０】
また、本発明によれば、ループ内フィルタ処理を行う演算処理回路やプロセッサの動作周波数を従来より低くすることができ、消費電力を削減できる効果がある。また、従来はループ内フィルタを所定時間内で処理することが出来なかった演算能力の低いプロセッサでも、複数個を用いることでループ内フィルタを処理することが可能になる。
【発明を実施するための最良の形態】
【０１３１】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【０１３２】
本発明の第１の実施の形態を、図１２、図１３、図１４を用いて説明する。図１２は、本発明の第１の実施の形態の構成を示す図であり、図１、図２のループ内フィルタ１００７、１１０８に適用されるフィルタの構成を示している。図１３は、本発明の第１の実施の形態の動作手順を示すフローチャートである。図１４は、本発明の第１の実施の形態の動作の概要を説明するための図である。
【０１３３】
本発明の第１の実施の形態においては、２以上の複数のフィルタ処理手段２１０３（単に「フィルタ手段」ともいう）と、各フィルタ処理手段２１０３の処理対象位置や動作順序を制御するフィルタ制御手段２１０４を含む点が、図１０に示した従来技術と相違している。
【０１３４】
図１２を参照すると、フィルタ前画像メモリ２１０１、フィルタ後画像メモリ２１０２は、図１０におけるフィルタ前画像メモリ２００１、フィルタ後画像メモリ２００２と同様である。
【０１３５】
フィルタ処理手段２１０３は、供給されるフィルタ前画像と、フィルタ後画像とを用い、１マクロブロック（ＭＢ）のループ内フィルタ処理を行い、フィルタ処理結果を、フィルタ後画像メモリ２1０２に供給する。
【０１３６】
フィルタ制御手段２１０４は、２以上の複数のフィルタ処理手段２１０３でフィルタ処理を行うＭＢ位置を制御する。
【０１３７】
画像１枚の全体をループ内フィルタ処理する場合の動作を、図１３、図１４を参照して説明する。
【０１３８】
本発明の第１の実施の形態では、２以上の複数のフィルタ処理手段２１０３のそれぞれが、図１３に示したフローチャートの手順に従ってフィルタ処理を行う。ただし、フィルタ処理対象ＭＢの位置は、個々のフィルタ処理手段で異なる。ここでは、簡単のために画像１枚を横方向に２分割して処理する場合の例を示して説明する。この例では、フィルタ処理手段２１０３を２つ用いる。
【０１３９】
フィルタ制御手段２１０４は、画面を複数の領域（部分領域）に分割し、それぞれの部分領域のフィルタ処理のために異なるフィルタ処理手段を割り当てる。
【０１４０】
そして、フィルタ制御手段２１０４は、それぞれのフィルタ処理手段２１０３が割り当てられた領域内の各ＭＢを、水平走査順に、走査して、ＭＢ毎に、逐次、ループフィルタ処理を行うように制御する。これが、図１４（Ａ）に示す処理である。図１４（Ａ）に示すように、画面を上側の領域（部分領域）と下側の領域（部分領域）に２分割し、２つのフィルタ処理手段２１０３がそれぞれの領域内の各ＭＢを水平走査順（図１４（Ａ）の右向き矢線は水平走査を示す）に、操作して、ＭＢ毎に、逐次、ループフィルタ処理を行う。
【０１４１】
図１３のフローチャートを参照すると、処理を開始すると（ステップＳ１１０１）、まず割り当てられた領域内の全ＭＢの走査が終わったか否かを判定し（ステップＳ１１０２）、走査が終了していれば、ステップＳ１１０５に移る。
【０１４２】
ステップＳ１１０２で走査が終了していない場合、フィルタ制御手段２１０４によって割り当てられた領域内で、次の水平走査順で、次にあたるＭＢ位置に、フィルタ処理対象ＭＢ位置を移動し（ステップＳ１１０３）、フィルタ処理手段２１０３によって、１マクロブロックのフィルタ処理を行い（ステップＳ１１０４）、ステップＳ１１０２に戻る。
【０１４３】
ここで、分割境界のすぐ下又はすぐ右に位置するＭＢのフィルタ処理は、正しく処理するためには、隣接領域の“フィルタ後”の画素値を入力しなければならない。上記のように、分割領域ごとに異なるフィルタ処理手段２１０３でフィルタ処理を行う場合には、隣接領域の“フィルタ前”の画素値を入力としてフィルタ処理してしまい、正しいフィルタ結果とは異なる結果が出力される場合がある。
【０１４４】
これが、図１４（Ａ）で“フィルタ後（結果は正しくない）”と示している領域（縦線で示す領域）である。
【０１４５】
そこで、この領域については、隣接領域のフィルタ処理が完了した後に、分割境界の下側、右側で隣接領域のフィルタ結果の影響が伝播する範囲のフィルタ処理だけを実行し直すことで、正しいフィルタ結果を得る（図１４（Ｂ）の処理）。
【０１４６】
ここで、隣接領域のフィルタ結果の影響が伝播する範囲に関して説明する。
【０１４７】
４×４画素ブロックの境界に適用するフィルタの動作は、図６乃至図９を用いて説明した通りである。
【０１４８】
各フィルタの動作から、輝度成分に適用されるフィルタの入力／出力関係を示したものを図１５に示す。
【０１４９】
このうち、図１５（Ａ）のフィルタは、ＭＢ境界のみに適用される。ＭＢ内の各４×４ブロックの境界には、図１５（Ｂ）のフィルタが適用される。
【０１５０】
例えば、図１５（Ａ）は、ｂＳ＝４の場合に用いられるフィルタの入力／出力関係で、フィルタ処理によって変更される可能性があるのは、ｐ２’、ｐ１’、ｐ０’、ｑ０’、ｑ１’、ｑ２’の６画素である。
【０１５１】
図１５（Ａ）において、例えばｐ２’は、フィルタ処理前のｐ３、ｐ２、ｐ１、ｐ０、ｑ０、ｑ１の６画素の画素値に依存してフィルタ処理結果が算出される、という関係を示している。
【０１５２】
ここで、例えば図１５（Ａ）を見ると、全体としては、４×４画素ブロックの境界の前後±４画素の範囲の画素値を入力とし、境界前後±３画素の範囲の画素値を変更する処理であるので、これを、４×４画素ブロック境界に順次適応する処理は、ＩＩＲ（Ｉｎｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタであるように見える。
【０１５３】
しかし、実際には、図１５に示すように、出力画素位置毎に異なるフィルタを組み合わせた処理である。
【０１５４】
このようなループ内フィルタの性質に基づいて、フィルタの伝播範囲を解析した結果を図１６に示す。図１６では、左端のＭＢ境界より、左側の画素値（灰色の領域）の影響がＭＢ境界からどの程度の範囲まで及ぶかを示している。ここでは、垂直方向の境界へのフィルタ処理のみを示している。
【０１５５】
まず、１番目のフィルタ処理（ＭＢ境界）によって、灰色領域の画素値の影響がＭＢ境界から３画素の位置（１番目のフィルタ処理のｐ１）まで伝播する。
【０１５６】
次に、右に４画素移動した位置のブロック境界に適用する２番目のフィルタ処理によって、灰色領域の画素値の影響がさらにＭＢ境界から６画素の位置（２番目のフィルタ処理のｐ２）まで伝播する。
【０１５７】
さらに右に４画素移動した位置のブロック境界に適用する３番目のフィルタ処理によって、灰色領域の画素値の影響がさらにＭＢ境界から９画素の位置（３番目のフィルタ処理のｐ２）まで伝播する。
【０１５８】
続いて、さらに右に４画素移動した位置のブロック境界に４番目のフィルタ処理を適用するが、このフィルタ処理で入力として用いられる画素値は全て、灰色領域の画素値の影響を受けていないものであるため、灰色領域の画素値の影響はそれ以上伝播しない。
【０１５９】
このように、ＭＢ外(灰色の領域)の画素値の影響はブロック境界のフィルタによって順次伝播するが、その影響は、ＭＢエッジから９画素まで(灰色の画素)であることがわかる。
【０１６０】
さらに、フィルタの適用順序(縦方向フィルタ→横方向フィルタ)を考慮し、画面を横方向に領域分割した場合の隣接領域画素値の伝播範囲を解析すると、図１７のようになる。
【０１６１】
隣接領域画素値(灰色)はＭＢ１の縦方向フィルタ（１）によって、縦に９画素伝播し、次に、ＭＢ２の横方向フィルタ(２)によって、右隣のＭＢ２の９画素の範囲まで伝播する。さらに、ＭＢ２の縦方向フィルタ(３)によって、最終的には、領域分割境界から縦方向に、１４画素の範囲まで伝播することがわかる。
【０１６２】
以上より、隣接領域のフィルタ処理が完了した後に、分割境界の下側、右側の最大１４画素分のフィルタ処理だけをやり直すことで、正しいフィルタ結果を得ることができる。
【０１６３】
本発明の第１の実施の形態では、上記のフィルタの影響の伝播範囲解析の結果に基づき、隣接領域のフィルタ処理が完了した後に、分割境界の下側、右側で隣接領域のフィルタ結果の影響が伝播する範囲のフィルタ処理だけを実行し直すことで、正しいフィルタ結果を得る（図１４（Ｂ）の処理）。
【０１６４】
再び図１３のフローチャートを参照すると、ステップＳ１１０５において、隣接領域のフィルタ結果が当該領域に影響を及ぼすかを判定する。
【０１６５】
図１４に示す例では、画面を２分割した上側（上半分）の領域については、隣接領域の影響はないが、下側（下半分）の領域に関しては上側領域の影響が分割境界から最大で１４画素の範囲まで伝播してくる。
【０１６６】
図１３のステップＳ１１０５において、隣接領域の影響が無いと判定された場合には、該当領域のフィルタ処理を終了する（ステップＳ１１０９）。
【０１６７】
ステップＳ１１０５で隣接領域の影響があると判定された場合には、ステップＳ１１０６〜ステップＳ１１０８で、隣接領域の影響が伝播する範囲内の各ＭＢを水平走査順に走査して、ＭＢ単位でフィルタ処理を行い、隣接領域の影響が伝播する範囲内の全ＭＢの走査が終了すると、フィルタ処理全体を終了する（ステップＳ１１０９）。
【０１６８】
図１４に示す例では、下側の分割領域に対してのみ、上側領域の影響が伝播する分割境界から１４画素の範囲までのフィルタ処理を、ステップＳ１１０６〜ステップＳ１１０８で実行する。
【０１６９】
以上で説明したように、本発明の第１の実施の形態によると、画像を２以上の部分領域に分割し、部分領域毎に別々のフィルタ処理手段でフィルタ処理を行いながら正しいフィルタ処理結果を得ることが可能になる。
【０１７０】
次に、本発明の第２の実施の形態を、図１８を参照して説明する。本発明の第２の実施の形態は、画像の複数領域への分割が、前記第１の実施の形態と相違しており、その他は前記第１の実施の形態と同様である。
【０１７１】
図１８に示すように、画面を縦方向に３つの領域に分割する例を説明する。画面を縦に分割する場合、隣接領域のフィルタ結果の影響が伝播するのは分割境界の右側である。また、図１６に示したように、その伝播範囲は分割境界から最大で９画素の範囲までである。
【０１７２】
そこで、３つの領域のうち、左端を除く２つの領域に対して、ステップＳ１１０６〜ステップＳ１１０８のフィルタ処理を、分割境界から９画素の範囲までに適用することで正しいフィルタ処理結果が得られる。
【０１７３】
以上、画面を横方向に２分割する場合の例と、画面を縦に３分割する例について説明したが、画面分割の分割数と分割の形はこれらに限定されるものでないのは当然のことである。
【０１７４】
次に、本発明の第３の実施の形態を、図１９、図２０を参照して説明する。図１９は本発明の第３の実施の形態によるループ内フィルタ処理の手順を示すフローチャートである。
【０１７５】
ステップＳ１２０１〜ステップＳ１２０５は、前記第１の実施の形態の説明で参照した図１３のフローチャートにおけるステップＳ１１０１〜Ｓ１１０５と同一である。前記第１の実施の形態では、隣接領域のフィルタ結果の影響が伝播する範囲のフィルタ処理をＭＢ単位で走査して行っていたが、本発明の第３の実施の形態では、必ずしもＭＢ単位でフィルタ処理するのではない点が、前記第１の実施の形態と相違している。この点を、図２０を参照して説明する。図２０は、図１６と同様に、縦方向の境界にループ内フィルタを適用する際に、ＭＢ外の画素値の影響がどのように伝播するかを示している。
【０１７６】
図２０において、参照符号６０１〜６１８は、それぞれ異なる画素位置のフィルタ結果を出力するフィルタ処理を示している。
【０１７７】
例えば、６０５は、ＭＢエッジに適用するループ内フィルタ処理のうち、ｐ１、ｐ０、ｑ０、ｑ１、ｑ２の画素値の情報に基づき、ｑ１の位置のフィルタ後の画素値を出力するフィルタを指している。
【０１７８】
図２０において、ＭＢ外（灰色領域）の画素値の影響が伝播するのは、図１６でも説明したとおり、網掛けした画素で示す、ＭＢ境界から９画素までの範囲である。
【０１７９】
図２０からもわかる通り、網掛けした画素のフィルタ結果を得るためには、ＭＢ全体のフィルタ処理（６０１〜６１８）を全て実行する必要は無く、６０１〜６１３のフィルタ処理だけを行えばよい。
【０１８０】
そこで、本発明の第３の実施の形態におけるステップＳ１２０６（図１９）では、このように、隣接領域のフィルタ結果の影響が伝播する範囲のフィルタ結果を得るのに必要な個別のフィルタ処理（図２０の例では６０１〜６１３のフィルタ処理）のみを実行する。これにより、正しいフィルタ結果が得られるため、ループ内フィルタ処理を終了する（ステップＳ１２０７）。
【０１８１】
本発明の第３の実施の形態では、正しいフィルタ結果を得るために必要なフィルタ処理のみを実行するため、前記第１の実施の形態よりも演算量を削減できる。
【０１８２】
なお、図１８に示した例のように、画面を縦方向に領域分割した場合に相当する、水平方向のフィルタ処理の場合について説明したが、本発明は、かかる構成にのみ限定されるものでなく、画面を縦方向に分割した場合やその他の形式で分割した場合においても、同様の処理が可能なのは当然のことである。
【０１８３】
本発明の第４の実施の形態を図２１を参照して説明する。図２１は、本発明の第４の実施の形態によるループ内フィルタ処理の手順を示すフローチャートである。図２１において、ステップＳ１３０１〜ステップＳ１３０５は、前記第３の実施の形態の説明で参照された図１９のフローチャートにおけるステップＳ１２０１〜Ｓ１２０５と同一である。
【０１８４】
前記第３の実施の形態では、隣接領域のフィルタ結果の影響が伝播する可能性のある範囲のフィルタ処理を全て行っていた。
【０１８５】
これに対し、本発明の第４の実施の形態では、隣接領域のフィルタ結果の影響が伝播する可能性があっても、実際には伝播していない範囲のフィルタ処理は行わない点が異なる。
【０１８６】
本発明の第４の実施の形態では、ステップＳ１３０６において、隣接領域の影響が残留するか否かを判断し、影響が残留している場合にのみ、ステップＳ１３０７でフィルタ処理を行う。
【０１８７】
なお、図２０で説明した、隣接領域のフィルタ結果の影響が伝播する可能性がある範囲以外の位置では、ステップＳ１３０６の判定結果は、常に、ＮＯとなる。
【０１８８】
本発明の第４の実施の形態の動作について、図２０を参照して説明する。
【０１８９】
図２０で網掛けした画素で示されている範囲は、隣接領域のフィルタ結果の影響が伝播する可能性がある領域である。
【０１９０】
しかし、実際にフィルタが有効になるかや、適用されるフィルタの強度は、例えば、該当ブロック及び近傍ブロックの符号化モード、量子化パラメータ、非零の直交変換係数の有無、参照ピクチャ、動きベクトル情報などを参照して適応的に制御されるため、図２０で網掛けした画素で示した範囲まで、必ず、隣接領域のフィルタ結果の影響が伝播するとは限らない。
【０１９１】
例えば、図２０で、フィルタ６１０を適用した結果の画素値が、図２１のステップＳ１３０４で出力された結果と同一の場合、その時点で、隣接領域のフィルタ結果の影響は消滅していることがわかるので、その場合には、６１１〜６１３のフィルタ処理は実行しない。同様に、６０５、６０６の二つのフィルタの出力が共に、図２１のステップＳ１３０４での出力と一致する場合にも、その時点で隣接領域のフィルタ結果の影響は消滅していることがわかり、６０７〜６１３のフィルタ処理は実行しない。
【０１９２】
本発明の第４の実施の形態では、隣接領域のフィルタ結果の影響が消滅した以降のフィルタ処理を実行しないため、前記第３の実施の形態よりも演算量を削減できる。
【０１９３】
なお、本実施形態でも、水平方向のフィルタ処理の場合のみについて説明したが、画面を縦方向に分割した場合やその他の形式で分割した場合でも同様の処理が可能なのは当然のことである。
【０１９４】
本発明の第５の実施の形態を図２２を参照して説明する。図２２は、本発明の第５の実施の形態によるループ内フィルタ処理の手順を示すフローチャートである。図２２を参照すると、ステップＳ１４０４以外は、前記第３の実施の形態の説明で参照された図１９のフローチャートにおける処理と同一である。前記第３の実施の形態では、隣接領域のフィルタ結果の影響が伝播する可能性のある範囲のフィルタ処理についても、図１９のステップＳ１２０４でフィルタ処理を行っていた。
【０１９５】
これに対し、本発明の第５の実施の形態では、隣接領域のフィルタ結果の影響が伝播する可能性のあるフィルタ処理は、ステップＳ１４０６で処理するため、ステップＳ１４０４では、隣接領域のフィルタ結果の影響が伝播する可能性の無い箇所のフィルタ処理のみを行っている点が、前記第３の実施の形態と相違している。
【０１９６】
図２０の例で説明すると、図２１のステップＳ１４０４では、隣接領域のフィルタ結果の影響が伝播する可能性がある、分割境界から９画素までの範囲のフィルタ処理である６０１〜６１３は行わず、６１４〜６１８のフィルタ処理のみを実行する。
【０１９７】
これにより、ステップＳ１４０４でのフィルタ処理を削減できる。このため、本実施形態は、前記第３の実施の形態よりも演算量を削減できる。
【０１９８】
次に、本発明の第６の実施の形態を図２３、図２４を参照して説明する。図２３は、本発明の第６の実施の形態の構成を示す図、図２４はその処理の手順を示すフローチャートである。
【０１９９】
図１２に示した前記第１の実施の形態では、フィルタ前、フィルタ後の画像をフィルタ前画像メモリ２１０１、フィルタ後画像メモリ２１０２にそれぞれ格納していたのに対して、本発明の第６の実施の形態では、それらをすべて画像メモリ２２０１に格納する点が相違している。
【０２００】
フィルタ処理手段２２０３は、画像メモリ２２０１に格納されている画像の一部を作業メモリ２２０２に格納する。
【０２０１】
フィルタ処理手段２２０３はまた、画像メモリ２２０１に格納されているフィルタ前画像とフィルタ後画像と作業メモリ２２０２に格納されている画像を用い、１マクロブロックのループ内フィルタ処理を行い、フィルタ処理結果を画像メモリ２２０１に供給する。
【０２０２】
フィルタ制御手段２２０４は、２以上の複数のフィルタ処理手段２２０３でフィルタ処理を行うＭＢ位置を制御する。
【０２０３】
図２４を参照すると、ステップＳ１５０２、Ｓ１５０５、Ｓ１５０７以外は、前記第３の実施の形態の説明で参照された図１９のフローチャートにおける処理と同一である。
【０２０４】
図２４のステップＳ１５０２では、ステップＳ１５０７で必要となる、フィルタ処理前の画像情報を作業メモリ２２０２に格納する。
【０２０５】
ステップＳ１５０５では、フィルタ処理に必要な画像情報を画像メモリ２２０１から得るとともに、フィルタ結果の画像情報も画像メモリ２２０１に格納する。
【０２０６】
ステップＳ１５０７では、フィルタ処理に必要な画像情報を画像メモリ２２０１から得るとともに、フィルタ処理に必要な別の情報を作業メモリ２２０２から得てフィルタ処理を行い、フィルタ結果の画像情報を画像メモリ２２０１に格納する。
【０２０７】
図２０の例を参照してさらに詳細に説明する。図２４のステップＳ１５０７では、隣接領域のフィルタ処理結果が伝播する範囲のフィルタ処理を行うため、６０１〜６１３のフィルタ処理を行う。
【０２０８】
ここで、正しいフィルタ結果を得るためには、６０１〜６１３のフィルタ処理の際には、ステップＳ１５０５でフィルタ処理を行う前の画像情報が必要である。例えば、６０４のフィルタ処理では、ｐ１、ｐ０の（隣接領域の）フィルタ後の画像値と、ｑ０、ｑ１、ｑ２のフィルタ前の画素値が必要である。
【０２０９】
図２３に示した構成のように、フィルタ前の画像情報とフィルタ後の画像情報を同じ画像メモリ２２０１に格納する場合には、図２４のステップＳ１５０７において、フィルタ処理前の画像データを画像メモリ２２０１から得ることは出来ない。
【０２１０】
そこで、ステップＳ１５０７で必要となるフィルタ処理前の画像を、ステップＳ１５０５でのフィルタ処理より前に、ステップＳ１５０２で作業メモリ２２０２に予め格納しておく。そして、ステップＳ１５０７において、作業メモリ２２０２からフィルタ前画像を得ることで、正しいフィルタ結果を得ることが出来る。
【０２１１】
図２０に示す例では、分割境界から１１画素までの範囲のフィルタ前画像情報を、作業メモリ２２０２に格納しておくことで、正しいフィルタ結果を得ることが出来る。
【０２１２】
本発明の第６の実施の形態では、フィルタ前画像とフィルタ後画像を同じ画像メモリ２２０１に格納するため、作業メモリ２２０２のために新たに必要になるメモリ容量をあわせても、前記第１乃至第５の実施の形態よりも少ないメモリ量で、ループ内フィルタ処理を実行できる。なお、本実施の形態でも、水平方向のフィルタ処理の場合のみについて説明したが、画面を縦方向に分割した場合やその他の形式で分割した場合でも同様の処理が可能なのは当然のことである。
【０２１３】
次に、本発明の第７の実施の形態を図２５を参照して説明する。図２５は、本発明の第７の実施の形態の手順を示すフローチャートである。ステップＳ１６０７を除き、図２４に示した前記第６の実施の形態の処理と同一である。
【０２１４】
本発明の第７の実施の形態では、２以上の複数のフィルタ処理手段を並列に動作させる。複数のフィルタ処理手段が並列に動作する場合、ステップＳ１６０８で隣接領域のフィルタ結果の影響が伝播する範囲のフィルタ処理を行う際には、隣接領域のフィルタ処理が完了しているのを確認する必要がある。
【０２１５】
そこで、本発明の第７の実施の形態では、ステップＳ１６０７で、当該領域に影響が伝播する隣接領域のフィルタ処理が終了するまで待機した上で、ステップＳ１６０８に進む。これにより、ループ内フィルタ処理を複数のフィルタ処理手段で並列処理することが可能になり、フィルタ処理に要する時間を短縮できる。なお、ここでは第６の実施の形態との相違点を例に説明したが、第１乃至第５の実施の形態に関しても、ステップＳ１６０７と同様のステップを追加することで、複数のフィルタ処理手段を並列に動作させることが出来るのは当然のことである。
【０２１６】
以上、本発明の実施の形態について説明した。上記の実施の形態では、Ｈ．２６４に則った応用について述べたが、本発明はこの応用のみに限定されるものではない。
【０２１７】
また、画像分割の形に関しては限られた例についてのみ説明したが、本発明は例示した画像分割に限定されるものではなく、例示した以外の種々の画像分割の形にも適用可能である。
【０２１８】
また、画像分割の形は固定的である必要はなく、画像毎に異なる形の画像分割を行うことも可能である。
【０２１９】
さらに、画像を２以上に分割した領域にそれぞれ異なるフィルタ処理手段を割り当ててフィルタ処理する例について説明したが、本発明はこの割り当てに限定されるものではない。例えば、画像を２分割するが、フィルタ処理手段は１つのみ利用し、２つの領域を逐次に、あるいは一部ずつ交互にフィルタ処理することも当然可能である。
【０２２０】
本発明は、動画像符号化、動画像復号化のどちらにも適用可能である。なお、図１３、図１９、図２１、図２２、図２４、図２５のフローチャートを参照して説明した方法（処理）は、該処理を実現するプログラムを記録媒体からコンピュータに読み込んでコンピュータ上で実行することによっても実現するようにしてもよいことは勿論である。
【０２２１】
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０２２２】
【図１】動画像復号化装置の構成を示す図である。
【図２】動画像符号化装置の構成を示す図である。
【図３】ＭＢ内での各４×４ブロック境界に対するフィルタ適用順を示す図である。
【図４】ｂＳ値の算出手順を示すフローチャートである。
【図５】ブロック境界のフィルタ処理に用いられる画素の位置関係を示す図である。
【図６】ｂＳの値が１、２、３のいずれかの場合の第１のフィルタ処理内容を説明する図である。
【図７】ｂＳの値が１、２、３のいずれかの場合の第２のフィルタ処理内容を説明する図である。
【図８】ｂＳの値が４の場合の第１のフィルタ処理内容を説明する図である。
【図９】ｂＳの値が４の場合の第２のフィルタ処理内容を説明する図である。
【図１０】従来のループ内フィルタ処理の構成を示す図である。
【図１１】従来のループ内フィルタ処理の手順を示すフローチャートである。
【図１２】本発明の第１の実施の形態のループ内フィルタ処理の構成を示す図である。
【図１３】本発明の第１の実施の形態のループ内フィルタ処理の手順を示すフローチャートである。
【図１４】本発明の第１の実施の形態のループ内フィルタ処理の手順を説明する図である。
【図１５】輝度成分に適用するフィルタ処理内容を説明する図である。
【図１６】フィルタの影響の伝播範囲を説明する図である。
【図１７】フィルタの影響の伝播範囲を説明する図である。
【図１８】本発明の第２の実施の形態のループ内フィルタ処理の手順を説明する図である。
【図１９】本発明の第３の実施の形態のループ内フィルタ処理の手順を示すフローチャートである。
【図２０】本発明の第３の実施の形態のループ内フィルタ処理を説明する図である。
【図２１】本発明の第４の実施の形態のループ内フィルタ処理の手順を示すフローチャートである。
【図２２】本発明の第５の実施の形態のループ内フィルタ処理の手順を示すフローチャートである。
【図２３】本発明の第６の実施の形態のループ内フィルタ処理の構成を示す図である。
【図２４】本発明の第６の実施の形態のループ内フィルタ処理の手順を示すフローチャートである。
【図２５】本発明の第７の実施の形態のループ内フィルタ処理の手順を示すフローチャートである。
【符号の説明】
【０２２３】
１０１〜１０８  ブロック境界
２０１、２０２、３０１、３０２、４０１〜４０６、５０１、５０２、６０１〜６１８  フィルタ処理
１００１  可変長符号復号部
１００２  逆量子化部
１００３  逆直交変換部
１００４  動き補償部
１００５  フレーム内予測部
１００６  復号画像メモリ
１００７  ループ内フィルタ部
１００８  フレームメモリ
１００９  切り替え部
１０１０  加算部
１１０１  直交変換部
１１０２  量子化部
１１０３  可変長符号符号化部
１１０４  逆量子化部
１１０５  逆直交変換部
１１０６  加算部
１１０７  復号画像メモリ
１１０８  ループ内フィルタ部
１１０９  フレームメモリ
１１１０  減算部
１１１１  切り替え部
１１１２  動き補償部
１１１３  フレーム内予測部
１１１４  予測、符号化モード判定部
２００１  フィルタ前画像メモリ
２００２  フィルタ後画像メモリ
２００３  フィルタ処理手段
２００４  走査手段
２１０１  フィルタ前画像メモリ
２１０２  フィルタ後画像メモリ
２１０３  フィルタ処理手段
２１０４  フィルタ制御手段
２２０１  画像メモリ
２２０２  作業メモリ
２２０３  フィルタ処理手段
２２０４  フィルタ制御手段
【図１】
0004605052.tif 000002
【図２】
0004605052.tif 000003
【図３】
0004605052.tif 000004
【図４】
0004605052.tif 000005
【図５】
0004605052.tif 000006
【図６】
0004605052.tif 000007
【図７】
0004605052.tif 000008
【図８】
0004605052.tif 000009
【図９】
0004605052.tif 000010
【図１０】
0004605052.tif 000011
【図１１】
0004605052.tif 000012
【図１２】
0004605052.tif 000013
【図１３】
0004605052.tif 000014
【図１４】
0004605052.tif 000015
【図１５】
0004605052.tif 000016
【図１６】
0004605052.tif 000017
【図１７】
0004605052.tif 000018
【図１８】
0004605052.tif 000019
【図１９】
0004605052.tif 000020
【図２０】
0004605052.tif 000021
【図２１】
0004605052.tif 000022
【図２２】
0004605052.tif 000023
【図２３】
0004605052.tif 000024
【図２４】
0004605052.tif 000025
【図２５】
0004605052.tif 000026