(57)【特許請求の範囲】
【請求項１】
画像をデブロッキングフィルタリングする方法であって、
デブロッキングフィルタリングのためのパラメータ値を取得する工程と、
デブロッキングフィルタリングのための前記パラメータ値を用いて、前記画像におけるブロックのサンプルに対してデブロッキングフィルタリングを実施する工程と
を有し、
デブロッキングフィルタリングのための前記パラメータ値を取得する工程は、
量子化パラメータ値に基づく値を取得する工程と、
前記量子化パラメータ値に基づく値にオフセットを加算し、当該加算の結果をＮビット（Ｎは０以上）右にシフトさせるビット演算を行うことで、デブロッキングフィルタリングのための前記パラメータ値を取得する工程とを有し、ここで、前記Ｎは前記画像のビット深度に依存する値であり、前記ビット深度が８の場合に前記Ｎは正の整数である
ことを特徴とする方法。
【請求項２】
前記量子化パラメータ値は、デブロッキングフィルタリングが行われる前記ブロックのための量子化パラメータ値であることを特徴とする請求項１に記載の方法。
【請求項３】
前記量子化パラメータ値に基づく値は、当該値を前記量子化パラメータ値に関連付けたテーブルから取得されることを特徴とする請求項１に記載の方法。
【請求項４】
画像をデブロッキングフィルタリングする装置であって、
デブロッキングフィルタリングのためのパラメータ値を取得する取得手段と、
デブロッキングフィルタリングのための前記パラメータ値を用いて、前記画像におけるブロックのサンプルに対してデブロッキングフィルタリングを実施するフィルタリング手段と
を有し、
前記取得手段は、量子化パラメータ値に基づく値を取得し、
前記取得手段は、前記量子化パラメータ値に基づく値にオフセットを加算し、当該加算の結果をＮビット（Ｎは０以上）右にシフトさせるビット演算を行うことで、デブロッキングフィルタリングのための前記パラメータ値を取得し、ここで、前記Ｎは前記画像のビット深度に依存する値であり、前記ビット深度が８の場合に前記Ｎは正の整数である
ことを特徴とする装置。
【請求項５】
前記量子化パラメータ値は、デブロッキングフィルタリングが行われる前記ブロックのための量子化パラメータ値であることを特徴とする請求項４に記載の装置。  
【請求項６】
前記量子化パラメータ値に基づく値は、当該値を前記量子化パラメータ値に関連付けたテーブルから取得されることを特徴とする請求項４に記載の装置。
【請求項７】
コンピュータを、請求項４〜６のいずれか１項に記載の装置の各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像符号化又は復号のコンテキストにおいて再構成される画像をデブロッキングするための方法及び装置に関する。本発明は、より詳細には、インループフィルタリングにおけるデブロッキングに使用される制御パラメータに関する。
【背景技術】
【０００２】
図１は、本発明の一実施形態によるエンコーダからデータを受信するために使用することができるデコーダ１００のブロック図を示している。このデコーダは、接続されたモジュールによって表される。ここで、各モジュールは、例えば、ＣＰＵ(ここでは図示せず）によって実行されるべきプログラミング命令の形態で、デコーダ１００によって実施される方法の対応するステップを実施するように適合される。
【０００３】
デコーダ１００は、符号化パラメータに関する情報を含むヘッダと、符号化されたビデオデータを含むボディとからそれぞれ構成される符号化された符号化単位（coding units)を含むビットストリーム１０１を受信する。前記符号化されたビデオデータは、エントロピー符号化され、動きベクトル予測子のインデックスは、所与のブロックに対して、所定のビット数で符号化されている。受信された符号化ビデオデータは、モジュール１０２によってエントロピー復号される。次いで、残差データがモジュール１０３によって逆量子化され、次いで、モジュール１０４によって逆変換が適用されて、画素値が得られる。
【０００４】
この時点で、変換単位または変換ブロック、および、符号化単位または符号化ブロックは緩やかに交換可能であり、同様に、ブロックが画素のサンプルに関係する場合には、明確にされるべきである。上記において、残差データは、参照サンプルと予測サンプルとの間の差から作られ、前記サンプルは１つの成分に属する。拡張により、変換ブロックまたは単位は通常、サンプルに関連付けられ、一方、符号化ブロックまたは単位はサンプルまたは画素のいずれかを指すことができる。実際、画素はいくつかの成分、例えば、Ｙ、Ｕ、及びＶを有し、全ての場合において、画素のブロックを処理することは、サンプルの各対応するブロックに所定の処理を適用することからなる。
【０００５】
符号化モードを示すモードデータもエントロピー復号され、そのモードに基づいて、符号化された画像データのブロックに対して、ＩＮＴＲＡタイプの復号またはＩＮＴＥＲタイプの復号が行われる。
【０００６】
ＩＮＴＲＡモードの場合、ＩＮＴＲＡ予測子は、ビットストリームで指定されたイントラ予測モードに基づいてイントラ逆予測部１０５によって決定される。
【０００７】
また、モードがＩＮＴＥＲである場合、動き予測情報がビットストリームから抽出され、エンコーダによって使用される参照領域を見つけることになる。動き予測情報は、参照フレームインデックスと動きベクトル残差とから構成される。動きベクトル予測子は、動きベクトル復号モジュール１１０によって動きベクトルを得るために、動きベクトル残差に加えられる。
【０００８】
動きベクトル復号モジュール１１０は、動き予測によって符号化された現在のブロックごとに動きベクトル復号を適用する。動きベクトル予測子のインデックスが取得されると、現在のブロックについて、現在のブロックに関連する動きベクトルの実際の値が復号され、モジュール１０６によって逆方向動き補償を適用するために使用され得る。復号化された動きベクトルが示す参照画像部分は、参照画像１０８から抽出され、逆方向動き補償１０６に適用される。動きベクトルフィールドデータ１１１は、後続の復号された動きベクトルの逆予測に使用されるため、復号された動きベクトルで更新される。
【０００９】
最後に、復号されたブロックが得られる。ポストフィルタリングは、ポストフィルタリングモジュール１０７によって適用される。様々な利用可能な公知のポストフィルタリング技術の中で、ＨＥＶＣは、例えば、それぞれ「サンプルアダプティブオフセット（Sample Adaptive Offset）」および「デブロッキングフィルタ（Deblocking Filter）」として公知の２つのツールを使用しれる。ここで後者は、ここで関心が持たれ、以下に説明される。デコードされたビデオ信号１０９は、最終的にデコーダ１００によって供給される。
【００１０】
通常、ポストフィルタリング部１０７、逆量子化部１０３、または逆変換部１０４など、いくつかの部もエンコーダ内に存在することに留意されたい。デコード中、符号化単位（coding unit）のデコードは一般に、予測のために以前にデコードされたコンテンツに基づく。復号されたものは、オリジナルの符号化されていない符号化単位にアクセスすることができない。つまり、エンコーダは、これらの符号化単位のデコードされたバージョンにアクセスする必要があります。その結果、符号化単位を符号化した後、エンコーダはその復号に進み、次の符号化単位の符号化に使用される符号化単位の復号バージョンを保存する。要約すると、エンコーダは、デコーダとそれに対応するモジュールを有することになる。
【００１１】
デブロッキングフィルタの目的は、通常、変換符号化に起因するブロッキングアーチファクトを低減することである。変換係数は、ブロック単位で量子化されるので、不完全な再構成が図１のステップ１０３および１０４で発生する。これは、変換ブロックおよび/または予測ブロックの境界における不連続性につながり、符号化効率を低下させることに加えて、最も気を散らすアーチファクトの１つと考えられる。
【００１２】
ＨＥＶＣでは、ＪＶＥＴという名の現在研究中の候補と同様に、このデブロッキングフィルタは３つの主なステップで構成されている。
【００１３】
第１のステップにて、２つのブロック間の垂直または水平境界において、通常、境界の一方の側がＩＮＴＲＡ符号化されているか、またはこの境界上の動き不連続性であるかに基づいて、フィルタリングタイプの判定が行われる。
【００１４】
第２のステップにて、勾配が閾値と比較され、１組の画素をフィルタリングするかどうかを判定し、使用するフィルタを選択する。
第３のステップにて、一旦フィルタが選択されると、通常、それらの値の線形結合を通して、前記ピクセルの実際のフィルタリングが実行され、そして線形結合の範囲の制限は前記値の近くの結果となる。
【００１５】
デブロッキングフィルタ処理を制御するために、制御パラメータの集合が定義され、プロセスで使用される。これらの制御パラメータは、境界強度（ｂｓ）、制御パラメータβ及びクリッピング制御パラメータｔｃを含む。
【００１６】
特に、クリッピング制御パラメータｔｃは、輝度成分に対する強デブロッキングフィルタと弱デブロッキングフィルタとの間を決定するための条件のうちの１つにおいて使用される。また、フィルタリングが行われるべきか否かを決定するための条件、およびフィルタリング動作の範囲クリッピングに対する境界の計算においても使用される。
【００１７】
特に、８より大きいビット深度を有する画像を使用するとき、クリッピング制御パラメータｔｃの定義は、粗すぎるように見え、フィルタリングをクリッピングする際に広すぎる範囲につながるように見える。
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明は、前述の問題のうちの１つまたは複数に対処するように考案されたものである。また、本発明は、クリッピング制御パラメータｔｃの改善された定義、及び/又は、クリッピング制御パラメータｔｃの改善された使用を有するデブロッキングフィルタリング方法に関する。
【課題を解決するための手段】
【００１９】
発明の第１の態様で提供される方法は、  ビデオのデコーダ又はエンコーダによる、ビットストリームから復号された画像内の画素ブロックをフィルタリングする方法であって、
前記ブロックの量子化パラメータおよび画素値のビット深度に基づき、第１のクリッピング制御パラメータ（ｔｃ）値を得る工程と、
前記ブロックのエッジの一方の側に位置する第１の画素の第１の値と、前記エッジの他方の側に位置する第２の画素の第２の値との間の差を、前記第１のクリッピング制御パラメータ値から導出される所定の閾値と比較する工程と、
前記比較の結果に基づき、前記第１の画素に対して強フィルタリングを適用するか否かを判定する工程とを有し、
前記強フィルタリングは、フィルタリング後の第１の画素値が第１のクリッピング制御パラメータ（ｔｃ）に基づく範囲値以下だけ第１の画素値と異なるように、前記第１の画素値をフィルタリングすることを含み、ビット深度の連続する値に対応する２つの範囲値間の比は、厳密に２未満である。
【００２０】
実施形態によれば、強フィルタリングは、フィルタリング後の第１の画素値が第１のクリッピング制御パラメータ値の厳密に２倍未満の第２のパラメータ値以下だけ前記第１の画素値と異なるように、第１の画素値をフィルタリングすることを含む。
【００２１】
実施形態によれば、第１の画素および前記第２の画素の両方は、前記ブロック内の前記エッジ対して隣接する。
【００２２】
実施形態によれば、前記第１の値と前記第２の値との間の差が前記所定の閾値以上である場合、前記フィルタリング後の第１の画素値と前記第１の画素値との間のフィルタリング差が前記第１のクリッピング制御パラメータ値の半分以下となるように、前記第１の画素に弱フィルタリングを適用する。
【００２３】
実施形態によれば、前記第１のクリッピング制御パラメータ値をｔｃとしたとき、前記所定の閾値は（５*ｔｃ ＋ １）＞＞１であり、前記第２のパラメータ値はｔｃ／ｎであり、ここでｎは２以上の整数である。
【００２４】
実施形態によれば、前記強フィルタリングは、前記フィルタリング後の前記第１の画素値が、前記第１のクリッピング制御パラメータ値以下の第２のパラメータ値以下だけ、前記第１の画素値と異なるように、前記第１の画素値をフィルタリングすることを含む。
【００２５】
実施形態によれば、前記弱フィルタリングは、前記フィルタリング後の第１の画素値が、前記第１のクリッピング制御パラメータ値より厳密に小さい第２のパラメータ値以下だけ前記第１の画素値と異なるように、前記第１の画素値をフィルタリングすることを含む。
【００２６】
実施形態によれば、色度地の前記フィルタリングは、前記フィルタリング後の第１の画素値が前記第１のクリッピング制御パラメータ値より厳密に小さい第２のパラメータ値以下だけ前記第１の画素値と異なるように、前記第１の画素値をフィルタリングすることを含む。
【００２７】
実施形態によれば、第２のパラメータ値は、前記画素ブロックに用いらる空間周波数変換に依存する。
【００２８】
実施形態によれば、前記第１のクリッピング制御パラメータ（ｔｃ）を取得するステップは、
最大ビット深度ＭａｘＢｉｔＤｅｐｔｈに対応する第２のクリッピング制御パラメータ（ｔｃ'）を取得する工程と、
第２のクリッピング制御パラメータを、ビット深度ＢｉｔＤｅｐｔｈについて２(MaxBitDepth-BitDepth)よりも厳密に低いスケールファクタで割ることによって、第１のクリッピング制御パラメータ（ｔｃ）を取得する工程とを含む。
【００２９】
実施形態によれば、前記第１のクリッピング制御パラメータｔｃは、
tc = (tc' + R(BitDepth)) ＞＞ (MaxBitDepth-BitDepth)/２
ここで、Ｒ（ＢｉｔＤｅｐｔｈ）は丸め関数である；
によって与えられる。
【００３０】
実施形態によれば、前記第１のクリッピング制御パラメータｔｃは、 
tc = (tc' * g(BitDepth)+ R) ＞＞ N
ここで、Ｒは丸めるための正の整数値であり、Ｎは正の整数値であり、いくつかのビット深度値に対して、ｇ（ｂｉｔｄｅｐｔｈ＋１） ＜ ２*ｇ（ｂｉｔｄｅｐｔｈ）である。
【００３１】
実施形態によれば、前記関数ｇはテーブルで与えられる。
【００３２】
実施形態によれば、前記ビット深度の値は８と１２との間に含まれる。
【００３３】
実施形態によれば、第１のクリップ制御パラメータ（ｔｃy,ｔｃCb、ｔｃCr）は、画素ブロックの各成分毎に得られる。
【００３４】
本発明の他の態様が提供する方法は、ビデオのデコーダ又はエンコーダによる、ビットストリームから復号された画像内の画素ブロックをフィルタリングする方法であって、
前記ブロックの量子化パラメータおよび画素値のビット深度に基づいて第１のクリッピング制御パラメータ（ｔｃ）値を得る工程と、
前記ブロックのエッジの一方の側に位置する第１の画素の第１の値と前記エッジの他方の側に位置する第２の画素の第２の値との間の差を、前記第１のクリッピング制御パラメータ値から導出される所定の閾値と比較する工程と、
前記比較の結果に基づき、前記第１の画素にフィルタリングを適用するかどうかを判定する工程とを有し、
前記第１のクリッピング制御パラメータ（ｔｃ）を得る工程は、
最大ビット深度ＭａｘＢｉｔＤｅｐｔｈに対応する第２のクリッピング制御パラメータ（ｔｃ'）を取得する工程と、
前記第２のクリッピング制御パラメータを、ビット深度ＢｉｔＤｅｐｔｈについて２(MaxBitDepth-BitDepth)よりも厳密に低いスケールファクタで除算することによって前記第１のクリッピング制御パラメータ（ｔｃ）を取得する工程とを含み、
前記画素ブロックの各成分毎に、第１のクリッピング制御パラメータ（ｔｃy, ｔｃcb,ｔｃcr）を得る。
【００３５】
実施形態によれば、前記第１のクリップ制御パラメータ（ｔｃy, ｔｃcb,ｔｃcr）は、次式で与えられる、
tcY = (tc'Y * (gY(BitDepthY) + RY) ＞＞ NY
tcCb = (tc'Cb * (gCb(BitDepthchroma) + RCb) ＞＞ NCb
tcCr = (tc'Cr * (gCr(BitDepthchroma) + RCr) ＞＞ NCr
ここで、ＲY、ＲCb、ＲCrは丸めるための正の整数であり、ＮY、ＮCb、ＮCrは正の整数であり、
幾つかのビット深度値につき、
gY(BitDepthY +1) ＜ 2 * g(BitDepthY)
gCb(BitDepthchroma +1) ＜ 2 * gCb(BitDepthchroma)
gCr(BitDepthchroma +1) ＜ 2 * gCr(BitDepthchroma)
である。
【００３６】
実施形態によれば、ＲCb、ＲCrは同じ値であって、ＮCb、ＮCrは同じである。
【００３７】
実施形態によれば、前記第１のクリッピング制御パラメータは、前記スケールファクタに適用されるスケールオフセットに基づいて得られる。
【００３８】
本発明の他の態様が提供する方法は、ビデオのデコーダ又はエンコーダによる、ビットストリームから復号された画像内の画素ブロックをフィルタリングする方法であって、
前記ブロックの量子化パラメータおよび画素値のビット深度に基づき、第１のクリッピング制御パラメータ（ｔｃ）値を得る工程と、
前記ブロックのエッジの一方の側に位置する第１の画素の第１の値と前記エッジの他方の側に位置する第２の画素の第２の値との間の差を、前記第１のクリッピング制御パラメータ値から導出される所定の閾値と比較する工程と、
前記比較の結果に基づき、前記第１の画素にフィルタリングを適用するかどうかを判定する工程とを含み、
前記第１のクリッピング制御パラメータ（ｔｃ）を得る工程は、
最大ビット深度ＭａｘＢｉｔＤｅｐｔｈに対応する第２のクリッピング制御パラメータ（ｔｃ'）を得る工程と、
前記第２のクリッピング制御パラメータを、ビット深度ＢｉｔＤｅｐｔｈについて、２(MaxBitDepth-BitDepth)よりも厳密に低いスケールファクタで除算することによって、前記第１のクリッピング制御パラメータ（ｔｃ）を得る工程とを含み、
前記第１のクリッピング制御パラメータは、前記スケールファクタに適用されるスケールオフセットに基づいて得られる。
【００３９】
実施形態によれば、前記第１のクリッピング制御パラメータｔｃは、
tc = (TcTable[QP+TcOffset] * (g(BitDepth)+ScaleOffset) + R) ＞＞ N
ここで、Ｒは丸めるための正の整数値であり、Ｎは正の整数値であり、ＱＰは前記ブロックの前記量子化パラメータであり、ｇ(BitDepth)はスケールファクタであり、ＳｃａｌｅＯｆｆｓｅｔはスケールオフセットであり、ＴｃＯｆｆｓｅｔ及びＳｃａｌｅＯｆｆｓｅｔは符号付の整数である、
によって与えられる。
【００４０】
実施形態によれば、ｔｃＯｆｆｓｅｔ及びＳｃａｌｅＯｆｆｓｅｔは、前記ビットストリームで送信される。
【００４１】
実施形態によれば、ｔｃＯｆｆｓｅｔ及びＳｃａｌｅＯｆｆｓｅｔは、前記ビットストリーム内の異なるレベルでシグナリングされる。
【００４２】
実施形態によれば、前記第１のクリッピング制御パラメータは、前記ビットストリームで送信されるスケールファクタに基づいて得られる。
【００４３】
本発明の他の態様が提供する方法は、ビデオのデコーダまたはエンコーダによる、ビットストリームから復号された画像中の画素ブロックをフィルタリングする方法であって、
前記ブロックの量子化パラメータおよび画素値のビット深度に基づき、第１のクリッピング制御パラメータ（ｔｃ）値を得る工程と、
前記ブロックのエッジの一方の側に位置する第１の画素の第１の値と、前記エッジの他方の側に位置する第２の画素の第２の値との間の差を、前記第１のクリッピング制御パラメータ値から導出される所定の閾値と比較する工程と、
前記比較の結果に基づき、前記第１の画素に対してフィルタリングを適用するか否かを判定する工程とを有し、
前記第１のクリッピング制御パラメータを得る工程は、
最大ビット深度ＭａｘＢｉｔＤｅｐｔｈに対応する第２のクリッピング制御パラメータ（ｔｃ'）を得る工程と、
前記第２のクリッピング制御パラメータを、ビット深度ＢｉｔＤｅｐｔｈについて、２(MaxBitDepth-BitDepth)よりも厳密に低いスケールファクタで除算することによって、前記第１のクリッピング制御パラメータ（ｔｃ）を得る工程とを含み、
前記第１のクリッピング制御パラメータは、前記ビットストリームで送信されるスケールファクタに基づいて得られる。
【００４４】
実施形態によれば、前記第１のクリッピング制御パラメータｔｃは、
tc = (TcTable[QP+TcOffset] * TcScale + R) ＞＞ N
ここで、Ｒは丸めるための正の整数値であり、Ｎは正の整数値であり、ＱＰは前記ブロックの前記量子化パラメータであり、ＴｃＳｃａｌｅはスケールファクタである。
【００４５】
実施形態によれば、前記第１のクリッピング制御パラメータｔｃは、
tc = (TcTable[QP] * TcScale + R) ＞＞ N
ここで、Ｒは丸めるための正の整数値であり、Ｎは正の整数値であり、ＱＰは前記ブロックの前記量子化パラメータであり、ＴｃＳｃａｌｅはスケールファクタである
によって与えられる。
【００４６】
実施形態によれば、前記画素ブロックの成分毎に第１のクリッピング制御パラメータ（ｔｃy、ｔｃcb，ｔｃcr）が得られる。
【００４７】
実施形態によれば、前記第２のクリッピング制御パラメータ（ｔｃ'）は、複数のテーブルのうちの１つのテーブルから得られる。
【００４８】
本発明の他の態様が提供する方法は、ビデオのデコーダ又はエンコーダによる、ビットストリームから復号された画像中の画素のブロックをフィルタリングする方法であって、
前記ブロックの量子化パラメータおよび画素値のビット深度に基づいて第１のクリッピング制御パラメータ（ｔｃ）値を得る工程と、
前記ブロックのエッジの一方の側に位置する第１の画素の第１の値と前記エッジの他方の側に位置する第２の画素の第２の値との間の差を、前記第１のクリッピング制御パラメータ値から導出される所定の閾値と比較する工程と、
前記比較の結果に基づき、前記第１の画素にフィルタリングを適用するかどうかを判定する工程とを含み、
前記第１のクリッピング制御パラメータ（ｔｃ）を得る工程は、
最大ビット深度ＭａｘＢｉｔＤｅｐｔｈに対応する第２のクリッピング制御パラメータ（ｔｃ'）を得る工程と、
前記第２のクリッピング制御パラメータを、ビット深度ＢｉｔＤｅｐｔｈについて、２(MaxBitDepth-BitDepth)よりも厳密に低いスケールファクタで除算することによって、前記第１のクリッピング制御パラメータ（ｔｃ）を得る工程とを含み、
前記第２のクリッピング制御パラメータ（ｔｃ’）は、複数のテーブルの中のテーブルから得られる。
【００４９】
実施形態によれば、前記複数のテーブルの中の前記テーブルは、成分のタイプに基づき判定される。
【００５０】
実施形態によれば、前記複数のテーブルの中の前記テーブルは、画像のタイプに基づき判定される。
【００５１】
実施形態によれば、前記複数のテーブルの中の前記テーブルは、前記ビットストリームにおけるインデックスに基づき判定される。本発明の他の態様が提供するコンピュータプログラム製品は、プログラマブル装置のためのコンピュータプログラム製品であって、前記プログラマブル装置にロードされ、前記プログラマブル装置によって実行されるときに、本発明による方法を実施するための一連の命令を含む。
【００５２】
本発明の他の態様が提供するコンピュータ可読記憶媒体は、本発明による方法を実施するためのコンピュータプログラムの命令を記憶する。
【００５３】
本発明の他の態様が提供する装置は、本発明による方法のすべてのステップを実行するように構成されたプロセッサを備える。
【００５４】
本発明による方法の少なくとも一部は、コンピュータで実施することができる。したがって、本発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本明細書ではすべて一般に“回路”、“モジュール”、または“システム”と呼ばれ得るソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。さらに、本発明は、媒体に具現化されたコンピュータ使用可能プログラムコードを有する任意の有形の表現媒体に具現化されたコンピュープログラム製品の形成をとることができる。
【００５５】
本発明はソフトウェアで実施することができるので、本発明は、任意の適切なキャリア媒体上のプログラマブル装置に提供するためのコンピュータ可読コードとして実施することができる。有形の非一時的キャリア媒体は、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードディスクドライブ、磁気テープ装置、またはソリッドステートメモリ装置などの記憶媒体を含むことができる。一時的な搬送媒体は、電気信号、電子信号、光信号、音響信号、磁気信号、または、 マイクロ波またはＲＦ信号等の電磁信号などの信号を含むことができる。
【００５６】
ここで、本発明の実施形態を、ほんの一例として、以下の図面を参照して説明する。
【図面の簡単な説明】
【００５７】
【図１】デブロッキングフィルタリングを有するデコーダのブロック図を示す。
【図２】画素Ｐ及びＱの２つの４×４ブロック間の境界のデブロッキングフィルタリングを示す。
【図３】本発明の一実施形態による条件付き縮小クリッピング範囲フィルタリング方法の一実施形態を示す。
【図４】本発明の１つまたは複数の実施形態を実施するためのコンピューティングデバイスの概略ブロック図である。
【図５】ｔｃ制御パラメータに関連するステップのみを有するデブロッキングフィルタの簡略化された表現である。
【発明を実施するための形態】
【００５８】
デブロッキングフィルタリングは、２つの画素ブロックの境界の近傍におけるサンプル値のフィルタリングと、拡張画素値とに関する。画素のブロックは、符号化ブロック(coding block)または変換ブロック(transform block)であってもよい。符号化ブロックは符号化において基本エンティティとして使用される画素ブロックであり、変換ブロックは、量子化のための基本エンティティとして使用されるサンプルのブロックである。いくつかの実施形態では、符号化ブロックは量子化のためにいくつかの変換ブロックに分割され得る。境界は、現在復号されているブロックとその左に位置する以前に復号されたブロックとの間の垂直であってもよい。境界はまた、現在復号されているブロックとその最上部に位置する以前に復号されたブロックとの間の水平であってもよい。
【００５９】
各サンプルは、典型的には３つの値、Ｙ、ＵおよびＶの三つ組である。ここで、Ｙはサンプルの輝度であり、ＵおよびＶは、サンプルの２つの色度（chrominance）である。したがって、ブロックは、各成分Ｙ、Ｕ、およびＶに対して１つのブロックで３つの値のブロックを形成するものとして見ることができる。
【００６０】
最初のステップでは、境界強度のための制御パラメータｂＳが、１組の基準に従って決定される。これは典型的には８×８ブロックベースで実行されるが、デブロッキングループフィルタにおける他の工程のいくつかは前記８×８ブロックのエッジに沿って一度に４組の列または行で行われる。
【００６１】
ｂＳ値は、境界の両側に位置する２つのブロックのうちの少なくとも１つがＩＮＴＲＡ符号化モードに従って符号化される場合は、「２」であると判定される。ＩＮＴＲＡ符号化モードは、現在のブロックを符号化するためのブロック予測子が、現在の画像内の画素値から決定される符号化モードである。
【００６２】
また、ｂＳ値は、以下のいずれかの条件を満たす場合に「１」であると判定される。
・２つのブロックのうちの少なくとも１つは非ゼロ符号化残差係数を有し、境界は変換境界（transform boundary）である。変換境界は、２つの変換単位（transform units）間の境界である。
・２つのブロックの対応する空間動きベクトル成分間の絶対差が、整数画素単位で１以上である。
・２つのブロックについての動き補償予測は異なる参照ピクチャを参照するか、または動きベクトルの数が２つのブロックについて異なる。
【００６３】
そして、ｂＳ値は、これらの条件のいずれも満たされない場合、ゼロであると決定される。
【００６４】
なお、境界強度は、実際の画素値に依存するのではなく、符号化モード、残差存在、動き情報などの符号化情報に依存する。境界強度がゼロであると判定されたとき、この境界ではフィルタリングは行われない。本発明は、境界強度を使用せず、境界強度の定義が本明細書の説明と比較して修正される実施形態に適用することができる。
【００６５】
境界強度ｂＳが決定されると、制御パラメータβおよびｔｃが決定されなければならない。これらの制御パラメータは、画素の輝度値に対して、また、異なる結果を用いて、画素の色度に対して決定される。
【００６６】
βおよびｔｃの決定は、以下のパラメータに基づく。
・決定された境界強度ｂＳ、
・フレームまたはスライスレベルで決定されたオフセット値、すなわち、それらの値が符号化時に定義され、ビットストリーム内のパラメータ、すなわち、ｓｌｉｃｅ_ｂｅｔａ_ｏｆｆｓｅｔ_ｄｉｖ２およびｓｌｉｃｅ_ｔｃ_ｏｆｆｓｅｔ_ｄｉｖ２として見出されるオフセット値、
・ＱＰｐ、Ｑｐｑで示される、現境界によって分離される２つのブロックＰとＱの量子化パラメータ、
・画素の輝度成分のビット深度ＢｉｔＤｅｐｔｈY、これは画素の輝度値を符号化するために使用されるビット数を意味する。
【００６７】
まず最初のステップでは、値ｑＰＬが次式に従って計算される。
qPL = ((QPq+QPp+1) ＞＞ 1)
ここで、Ｘ＞＞ｙは、整数値Ｘをｙビットだけ右シフト、すなわち、２yで割ったものであり、その結果はまた整数である。
【００６８】
なお、ｑＰLは、２つのブロックの量子化パラメータの平均値を表すことになる。
【００６９】
このｑＰLの値から、次のようにβについて第１のＱ値が計算される。
Q = Clip3(0, 51, qPL + (slice_beta_offset_div2 ＜＜ 1))
ここで、Ｃｌｉｐ３（Ｘ，Ｙ，Ｚ）＝Ｘ if Ｚ＜＝Ｘ，Ｙ if Ｚ＞＝Ｙ、Ｚ if Ｘ＜Ｚ＜Ｙであり、Ｘ＜＜ｙは、整数Ｘをｙビットだけ左シフトすること、すなわち、２yで乗算することを示し、その結果はまた整数である。
【００７０】
なお、関数Ｃｌｉｐ３は、値Ｚを範囲［Ｘ，Ｙ］内にクリップすることを意味し、それ故、第１のＱは０と５１との間に含まれることを意味する。
【００７１】
ｑＰLの値から、次のようにｔｃに対して２番目のＱ値が計算される。 
Q = Clip3(0, 53, qPL + 2 * (bS-1) + (slice_tc_offset_div2 ＜＜ 1))
この第２のＱ値は、２つのブロックの量子化パラメータの平均にオフセット値を加えたものを表す。
【００７２】
なお、第２のＱ値は、０と５３との間に含まれることに留意されたい。
【００７３】
第１および第２のＱ値は、それぞれ、以下のテーブルのβ'およびｔｃ'を得るために使用される。
0006956858.tif 000002
【００７４】
以下では、表現「ＴｃＴａｂｌｅ」は、Ｑをｔｃ'にリンクする上記のテーブルの部分を指すために使用され得る。
【００７５】
最後に、制御パラメータβおよびｔｃは、次式に従ってβ'およびｔｃ'から得られる。β = β' * (1 ＜＜ (BitDepthY - 8))
tc = tc' * (1 ＜＜ (BitDepthY - 8))
【００７６】
８ビットのビット深度の場合、ｔｃ＝ｔｃ’となる。テーブル化された値ｔｃ'は、値８を有するビット深度に対して、特に前述のクリッピング動作及びフィルタリング基準において使用されるクリッピング制御パラメータｔｃに対応する。ビット深度が増加すると、ｔｃは、ビット深度と共に増加する乗算係数を乗算したｔｃ'に対応する。この式によれば、乗算係数は２(BitDepthY-8)に対応する。
【００７７】
なお、上記のβ値およびｔｃ値は、輝度成分について与えられたものである。色度成分についてのβ値、ｔｃ値は、色度について定義された量子化パラメータと、色度成分のビット深度ＢｉｔＤｅｐｔｈCとを用いて同様に計算される。結果として、ＢｉｔＤｅｐｔｈYの代わりにＢｉｔＤｅｐｔｈを使用して、輝度(luma)以外の他のコンポーネントに提示されるメソッドを一般化することができる。
【００７８】
制御パラメータｂＳは、その計算が境界を取り囲む２つのブロックの特定の符号化モードおよびパラメータに依存するので、各境界のレベルで定義される。制御パラメータβとｔｃは、変換ユニットのレベルで定義され、残差の存在（通常、コード化されたブロックフラグで表され、ＨＥＶＣのためのクワッドツリーで組織化される）は変換ユニットから変換ユニットに変化することがある。同様に、量子化パラメータは、２つの隣接する符号化単位の間で変化し得る。
【００７９】
図２は、２つの４×４画素ブロックＰ、Ｑの境界のデブロックフィルタリングを示している。画素ブロックＰ、Ｑは、画素セット２００として識別される。慣例によれば、画素ｐｉjは、ブロックＱの前に符号化されたブロックＰ内にあり、ブロックＱには画素ｑｉjが含まれている。ここで、“ｉ”はブロック内の画素の列、“ｊ”はラインのインデックスである。これとは逆に、ＰがＱの上にある水平境界でも、明らかな適応により同じように言える。
【００８０】
ステップ２１０では、ピクセルの集合に対する境界が、ＰＵ(prediction unit；予測単位）またはＴＵ(transform unit；変換単位）の境界上にあるかどうかがチェックされる。このテストはＰＵまたはＴＵ境界上では真となり、このような境界上にない場合には偽となる。このステップは、ここではＰＵまたはＴＵ境界上でのみアルゴリズムを呼び出すためのものである。
【００８１】
ステップ２１１では、上記で決定された境界強度ｂＳが非ヌルであるかどうかがチェックされる。非ｎｕｌｌである場合、その境界はフィルタリングされる。
【００８２】
ステップ２１２では、種々の勾配強度が測定される。また、Ｐ側のＱＰは変化し得るので、パラメータは境界上の正確な位置に依存するように、簡単にするために、制御パラメータβおよびｔｃの決定は、ここで実行されるように見ることができることに留意されたい。
【００８３】
これらの勾配の合計を測定され、βと比較する。これは、ＨＥＶＣの場合、及び、これまでのＪＶＥＴでは、これは以下の式に対応する。 
|p20-2p10+p00| + |p23-2p13+p03| + |q20-2q10+q00| + |q23-2q13+q03| ＜ β
【００８４】
この合計が十分に低い場合、各側のブロックは、目立つブロッキングアーチファクトの影響を十分に受けやすいと見なされ、デブロッキング判定はステップ２１３と続き、そうでない場合は、画素のセットはフィルタリングを必要としないと見なされ、そのデブロッキングはステップ２１８にて終了する。
【００８５】
ステップ２１３は画素の１Ｄサブセットの反復処理を開始する。図２に示されるような垂直境界のためのラインと、水平境界のための同様の列とにわたる反復がある。したがって、インデックスｉを０に設定することによって、このステップにて、最初の前記１Ｄサブセットが選択されることになる。本発明に関係のないいくつかの動作、さらに、勾配をβと比較すること、またはパラメータ（例えば、ＩＰＣＭまたは無損失）を符号化することに基づいて、フィルタリングするものをチェックすることは省略されていることに留意されたい。
【００８６】
ステップ２１４は、いわゆる強フィルタリングまたは弱フィルタリングを１Ｄサブセットに適用すべきかを判定する。この目的のために、境界の各側の勾配が測定される。ＨＥＶＣの場合、及び、これまでＪＶＥＴでは、βとの対応する比較が、決定のための基準として使用される。
|p2i - 2p1i + p0i| + |q2i - 2q1i + q0i| ＜ β/8
|p3i - p0i| + |q0i - q3i| ＜ β/4 
関連性がより高い別の基準はｔｃに依存する。
|p0i - q0i| ＜ ((1 + 5 * tc) ＞＞ 1)
【００８７】
強フィルタまたは弱フィルタの選択は、クリッピング制御パラメータｔｃに基づいて勾配を閾値と比較することによって行われる。ｔｃは整数であるので、上記の計算は整数への丸めを実行し、例えば、ｔｃ＝３の場合の結果は８であり、ｔｃ=４の場合は１０である。
【００８８】
これらの基準がすべて満たされる場合、ステップ２１６にて、強フィルタリングが１Ｄサブセットに適用でき、さもなければステップ２１５にて弱フィルタリングが１Ｄサブセットに適用される。
【００８９】
ステップ２１７では、これがフィルタリングすべき最後の１Ｄサブセットであったかどうかがチェックされる。これまでのＨＥＶＣおよびＪＶＥＴでは、１Ｄサブセットの数は４である。その場合、セットのすべてのピクセルがフィルタリングされたことになり、フィルタリング処理はステップ２１８にて停止する。そうでない場合は、ステップ２１９にて、ｉをインクリメントすることによって次の１Ｄサブセットが選択される。
【００９０】
図２のプロセス全体は、輝度成分にのみ適用されることに留意されたい。色度成分の場合、フィルタリングを可能にするためにチェックされる唯一の基準は、ｂＳが厳密に１より大きいかどうかである。
【００９１】
次に、輝度成分に対する強フィルタリングについて説明する。画素ｐ２i〜ｐ０i、およびｑ０i〜ｑ２iについて、２つの隣接する各側の線形結合（計４）が計算される。それらのうちの１つがセット２００に属さない場合、それは省略され、線形結合の重みはそれに応じて修正される。そのすべてを列挙せずに（それらはｑｊiに対して対称である）、この結果はＨＥＶＣ(およびこれまでのＪＶＥＴ）に対して以下の計算をもたらす: 
p2i = Clip3(p2i-2*tc, p2i+2*tc, (2*p3i+3*p2i+p1i+p0i+q0i+4)＞＞3) 
p1i = Clip3(p1i-2*tc, p1i+2*tc, (p2i+p1i+p0i+q0i+2)＞＞2) 
p0i = Clip3(p0i-2*tc, p0i+2*tc, (p2i+2*p1i+2p0i+2*q0i+q1i+4)＞＞ 3)
【００９２】
次に、輝度成分の弱フィルタリングについて説明する。完全な１Ｄサブセットのフィルタリングは、以下のように条件付けられる。
Δ = (9 * (q0i - p0i) - 3 * (q1i - p1i) + 8) ＞＞ 4 
Δ ＜ 10*tc
【００９３】
条件が満たされている場合、ｑ０iおよびｐ０iのフィルタリングは、次のように実行できる。
Δ = Clip3(-tc, tc, Δ)
p0i = Clip1Y(p0i + Δ)
q0i = Clip1Y(q0i - Δ)
ここで、Ｃｌｉｐ１Ｙ(ｖａｌ)は、Ｃｌｉｐ３(minY, maxY, val)と等価である。ここでminY, maxYそれぞれは最小、最大サンプル値であり、８ビットコンテンツの場合は０と２５５となる。
【００９４】
次に、ｐ１iをフィルタする場合（βに応じて本発明に関連しない条件に従う）、以下が適用される。 
Δp = Clip3(-(tc＞＞1), tc＞＞1, (((p2i+p0i+1)＞＞1)−p1i+Δ)＞＞1)
p1i' = Clip1Y(p1i + Δp)
【００９５】
同様に、ｑ１iをフィルタする場合は、以下が適用される。 
Δq = Clip3(-(tc＞＞1), tc＞＞1, (((q2i+q0i+1)＞＞1)-q1i-Δ)＞＞1)
q1i' = Clip1Y(q1i + Δq)
【００９６】
色度成分のフィルタリングに関して、ｂＳ＞１の場合、ブロックＰおよびＱの少なくとも一方がＩＮＴＲＡとして符号化されるときである。この場合、単純化されたフィルタリングは次式に従う:。
Δ = Clip3(-tc, tc, ((((q0i-p0i)＜＜2)+ p1i-q1i+4)＞＞3))
p0i' = Clip1C(p0i + Δ)
q0i' = Clip1C(q0i - Δ)
【００９７】
クリッピング制御パラメータｔｃの導出と使用には、多くの非効率性または不正確さがある。特に、ビット深度からの導出はあまりにも粗く、少なくともＪＶＥＴでは、フィルター出力の許容変動範囲が大きすぎる。特定の量子化ステップでの量子化誤差分布を考慮すると、ＪＶＥＴの改善により狭くなっている。実際、適用されるクリッピングは、どの部分が量子化によるブロッキングアーチファクトであるか、およびエッジなどの実際のディテールを超えると不確定である最大範囲であると考えることができる。
【００９８】
本発明の第１の実施形態によれば、クリッピング制御パラメータｔｃの導出は変更されない。クリッピング制御パラメータｔｃは、従来技術のように、ブロックの量子化パラメータに基づいて依然として決定される。
【００９９】
画素の強フィルタリングと弱フィルタリングとの間を決定するために使用される条件に関して、主な条件は次式である。
| p0i - q0i | ＜ ((1 + 5 * tc) ＞＞ 1) 
【０１００】
この条件は、依然として使用され、修正されず、境界の一方の側に位置する画素値と境界の他方の側に位置する画素との間の差が、クリッピング制御パラメータｔｃから導出された閾値と比較されることを意味する。
【０１０１】
我々は、フィルタリングの範囲を制限する強フィルタリングに使用されるクリッピングは、式によって与えられることが分かった。
p2i = Clip3(p2i-2*tc, p2i+2*tc, (2*p3i +3*p2i+p1i+p0i+q0i+ 4)＞＞3)
p1i = Clip3(p1i-2*tc, p1i+2*tc, (p2i+p1i+p0i+q0i+2)＞＞2)
p0i = Clip3(p0i-2*tc, p0i+2*tc, (p2i+2*p1i+2p0i+2*q0i+q1i+4)＞＞3)
すなわち、全ての画素について、フィルタリングされた画素値は、２*ｔｃ以下だけ元の画素値と異なる。
【０１０２】
この第１の実施形態によれば、クリッピング範囲は［-tc, tc］に低減され、これは、フィルタリングされた画素値が元の画素値からｔｃ以下だけ異なることを意味する。これは、強フィルタリングのクリッピング式におけるクリッピング制御パラメータｔｃを、ｔｃ／２以下の第２のクリッピング制御パラメータｔｃ2に置き換えることによって達成され得る。
【０１０３】
これは好ましい実施形態であるが、クリッピング範囲が厳密に2*tcより低くなるとすぐに、結果は改善される。これは、本発明が、強フィルタのクリッピング範囲の縮小をカバーし、厳密に２＊ｔｃよりも低い範囲をもたらし、同様に弱フィルタおよびこれらに適用されるクロミナンスについても厳密にｔｃよりも低くすることを意味する。
【０１０４】
したがって、ｔｃが強すぎることが実験で見出されたので、例えばクリッピングのためのｔｃ／２に対応する第２のクリッピング制御パラメータｔｃ２を定義することができる。この実施形態では、第２のクリッピングパラメータｔｃ２が強フィルタリングおよび／または弱フィルタリングに介在するクリッピング動作においてのみ使用される。この第２のクリッピングパラメータは、強フィルタリングまたは弱フィルタリングのどちらを決定するか、及び、どちらを適用されるべきかを決定することに関与する基準の計算には使用されない。以下に説明する他の実施形態では、第１のクリッピングパラメータｔｃの計算は基準の計算とクリッピング動作の両方の影響で改善される。さらなる実施形態では、これらの２つの態様が組み合わされ、改善された第１のクリッピングパラメータｔｃに基づいて、基準およびクリッピング操作に影響を及ぼす第１のクリッピングパラメータｔｃの改善された計算と、第２のクリッピングパラメータｔｃ2の計算とが、クリッピング操作においてのみ使用される。
【０１０５】
いくつかの実施形態では、ｔｃ2 ＝ｔｃ／２である。
いくつかの実施形態では、ｔｃ2 ＝ｔｃ／Ｎである。ここでＮは以上の整数である。
いくつかの実施形態では、ｔｃ2 ＝ｔｃ／２Nである。ここでＮは１以上の整数である。
いくつかの実施形態では、ｔｃ2が、ｔｃ値によってインデックス付けされたテーブルによって与えられる。例えば、ｔｃ2 = TcTable２［ｔｃ］である。ここで、TcTable２［ｔｃ］はすべてのｔｃ値に対してｔｃ以下である。
いくつかの実施形態では、第２のクリッピング制御パラメータｔｃ2は弱フィルタリングにおけるクリッピングにも使用される。すなわち、弱フィルタΔ = Clip３（-tc, tc, Δ）のクリップ式をΔ = Clip３（-tc2, tc2, Δ）で置き換えられる。
【０１０６】
同様に、式は、以下のように修正することができる。
Δp = Clip3(-(tc2＞＞1), tc2＞＞1, (((p2i+p0i+1)＞＞1)-p1i+Δ)＞＞1)
Δq = Clip3(-(tc2＞＞1), tc2 ＞＞ 1, (((q2i+q0i+1)＞＞1)-q1i+Δ)＞＞1)
【０１０７】
さらなる実施形態では、使用される第２のクリップ制御パラメータｔｃ2が、適応的であり、場合によってはＣＴＢ、スライス、タイル、またはイメージレベルでシグナリングされる。このシグナライゼーションレベルは任意であり得、すなわち、サンプルまたはＣＴＢの数で宣言され得、輝度(luma)および彩度(chroma)に対して独立であり得る。適応性は、Ｎの値をシグナリングすること、または利用可能なクリップ範囲変更子のセットへのオフセット（例えば、１/２、３/４、１/４、...）に依存することができる。
【０１０８】
さらに別の実施形態では、第２の制御パラメータｔｃ2が、ブロック内で使用される空間-周波数変換に依存する。例えば、ＪＶＥＴでは、これらの変換が垂直１Ｄパスと、別の水平１Ｄパスとに分離可能である。各パスのために利用可能な変換のセットは、ＪＶＥＴの場合のように、符号化モード、シグナリングされた情報、およびそれが水平パスであるか垂直パスであるかによって異なり得る。例えば、ＤＳＴ−ＩＶ、ＤＳＴ−ＶＩＩ、ＤＣＴ−ＩＩおよびＤＣＴ−ＩＶは、そこで古典的に使用されている既知の変換機能である。したがって、第２の制御パラメータｔｃ2はそれが垂直境界であるか水平境界であるかに依存し、したがって、パスごとにどの変換が使用されたかに依存する。
【０１０９】
前述の実施形態は、輝度成分をフィルタリングするためのレンジクリッピングの低減に関する。いくつかの実施形態では、色度成分をフィルタリングする際に使用されるレンジクリッピングも低減することができる。典型的には、クリッピング方程式: 
Δ = Clip3(-tc, tc, ((((q0i-p0i)＜＜2)+ p1i-q1i+4)＞＞3)); 
が、
Δ = Clip3(-tc2, tc2, ((((q0i-p0i)＜＜2)+ p1i-q1i+4)＞＞3))
となる。
【０１１０】
いくつかの実施形態では、フィルタリングにおける低減されたクリッピング範囲の使用がいくつかの基準に調整されてもよい。使用される基準は、いくつかの他のループ内フィルタ、特に適応ループフィルタ（Adapive Loop Filter : ＡＬＦ）の起動などの特定の符号化特性に基づくことができる。また、使用される基準は、特定の符号化ツールのＰおよびＱブロックの一方または両方の使用、特にオーバーラップブロック動き補償（Overlapped Block Motion Compensation）、又は、基準サンプル適応フィルタリング（Reference Sample Adaptive Filtering）に基づいてもよい。いくつかの実施形態では基準が使用されるコーデックの種類に基づくことができ、例えば、規則的な範囲はＨＥＶＣのために使用されることができ、一方、低減された範囲はＪＶＥＴのために使用されることができる。
【０１１１】
適応ループフィルタ（ＡＬＦ）は適応畳み込みフィルタであり、その形状および係数は、それらの信号が暗黙的（予測の有無）で、画像全体にわたって適応させることができる。現在、ＪＶＥＴでは、その形状は通常、４５°横に曲げられた正方形であるが、十字形であってもよく、１つの次元の長さは３から９まで変化する。ＡＬＦはその設計を通して広範な変化を見てきたが、一般的な特性は適応畳み込みであり、および、デブロッキングフィルタリング（およびＳＡＯ）後の位置にある。
【０１１２】
オーバーラップブロック動き補償は、ブロックの境界上で動き情報の予測をより連続的にする動き情報の確率的予測モデルである。
【０１１３】
基準サンプル適応フィルタリングは、ＩＮＴＲＡ符号化モード予測において予測子ブロックを生成する際に使用される基準サンプルをフィルタリングするため、ＪＶＥＴにおいて使用される技術である。使用される実際のフィルタは、ビットストリームにおいてシグナリングされてもよい。この技術は、ＪＶＥＴにおいて生成される予測における改善された連続性を可能にする。
【０１１４】
ＤＳＴ、ＤＣＴのような適応多重変換は、ブロック値を、次の量子化対象となる変換係数のブロックに変換するために使用できる変換である。
【０１１５】
図５は、本発明の修正によって影響を受ける第１のクリッピング制御パラメータｔｃパラメータの様々な使用を示す。このように、前記パラメータの使用に関連するステップのみを有するデブロッキングフィルタの単純化された図である。
【０１１６】
したがって、ステップ５０１は、最初に、例えば、前に提示されたＱにｑＰＬをリンクする方程式を介して、量子化ステップを決定する。次に、ステップ５０２は、例えば、テーブルを参照することによって、ｔｃ'パラメータを推定する。次に、ステップ５０３は、例えば、従来技術を含む他の方法、又は本発明の縮尺手段を適用することによって、ビット深度に従って最終的なｔｃパラメータを導出する。
【０１１７】
次に、ステップ５０４は、ｔｃに従って適切なフィルタを選択する。ＨＥＶＣにおいては、式：
| p0i-q0i | ＜ (1 + 5 * tc) ＞＞ 1) 
が、所謂、弱輝度フィルタと強輝度フィルタのどちらかを選択するために使用される。明らかに、そのようなフィルタの数およびタイプ、それらの定義、ならびにｔｃを使用する規則および閾値は変化し得る。ここでの、このステップの目的は、フィルタリング中に実際のクリッピングが行われる他の動作と区別するために、特徴検出に類似した使用を示すことである。したがって、同様に、ステップ５０５は、選択されたフィルタが適用されるべきかどうかをチェックする。再び、ＨＥＶＣでは、これは前述のΔ値を計算し、それを閾値１０*ｔｃと比較し、それによって別の特徴検出を示すことにある。フィルタリングがスキップされた場合、処理はステップ５０９で終了する。
【０１１８】
そうでない場合、いくつかの実施形態では、第２のクリップ制御パラメータｔｃ2が任意のステップ５０６で計算される。次に、ステップ５０７で、選択されたフィルタが適用され、その出力値は、ステップ５０８におけるｔｃまたはｔｃ2に従ったクリップ動作で、フィルタリングされているサンプルの周りの変動に制限される。最終出力サンプル値が決定されると、デブロッキングはステップ５０９で停止する。
【０１１９】
図３は、上述の条件付き縮小クリッピング範囲フィルタリング方法の実施形態を示す。
【０１２０】
これは図２の更新バージョンであり、ステップ３１０〜３１８はそれぞれステップ２１０〜２１８と同一であり、新しいステップ３２０および３２１が本発明の態様を実施するものである。
【０１２１】
ステップ３２０は、上述のような基準に従って、クリッピング範囲が修正されるべきかどうかをチェックする。
【０１２２】
次にステップ３２１は、前記クリッピング範囲を修正する。好ましい実施形態では、クリッピング動作に使用されるｔｃ値をスケールダウンする（すなわち、より低い値を生成する）ことにある。典型的には、これは、第２のクリッピング制御パラメータｔｃ2がクリッピング制御パラメータｔｃから計算される場合である。次いで、この第２のクリッピング制御パラメータｔｃ2は、輝度成分の強フィルタリングを含むフィルタリングにおけるクリッピング動作の一部または全部において使用される。
【０１２３】
我々は、クリッピング制御パラメータｔｃが、２(BitDepth-8)に従って表にされたｔｃ'値から導出されることを見出した。これは、実験において強すぎることが見出されている。実験によれば、中間の結果が最良の結果を与える。さらに、８のビット深度に対してクリッピング制御パラメータを定義し、それをより大きなビット深度に対して乗算することによって、結果として生じる値は、ビット深度のこれらのより大きな値に対して精度を欠く。この実施形態は、従来技術に関するクリッピング範囲を低減するための代替方法である。クリッピングパラメータｔｃの計算を改善するこの実施形態は、クリッピング動作のための第２のクリッピングパラメータｔｃ2を定義する第１の実施形態と組み合わせることができる。
【０１２４】
この実施形態によれば、テーブル化された値ｔｃ'は、例示的な実施形態では最大想定ビット深度MaxBitDepth = １６に対応し、実際のクリッピング制御パラメータは、このテーブル化された値を除算係数で除算して、ビット深度のより低い値に対するクリッピング制御パラメータｔｃの最終値を得ることによって得られる。ＢｉｔＤｅｐｔｈの実際のビット深度のため、この除算係数を２(MaxBitDepth-BitDepth)よりも厳密に低く保つことによって、ビット深度の連続する値に対応するｔｃの２つの値の間の乗算係数が厳密に２よりも低く、有利には１よりも大きいことを保証する。これは、ビット深度の２つの連続する値に対応する２つの範囲クリッピング値間の比率が厳密に２より小さいことに対応する。最大ビット深度に対してテーブル化にされた値ｔｃ'を定義することによって、その値の拡張はより大きくなり、ｔｃ'の値を定義でき、したがって、より良好な精度でクリッピング制御パラメータｔｃの値を定義することを可能にする。ｔｃとｔｃ'との間のこの乗算係数を、２(BitDepth-8)よりも厳密に低く保つことによって、我々は、クリッピング範囲が、この乗算係数が２(BitDepth-8）に等しい従来技術と比較して、実際に低減されることが保証される。
【０１２５】
この式を修正する実施形態は、以下の修正からなることができる。現在、テーブル化された値ｔｃ'に対するクリッピング制御パラメータｔｃを得るための式は、テーブルの値を２(BitDepth-8)で乗算することからなる。１０ビットまたは１２ビットでさえ動作するとき、これは有意な量子化を示し、例えば、いくつかの項目は４であってもよく、その後、次の項目は中間値無しの８である。
【０１２６】
ここでの好ましい実施形態は例えば、前記テーブルをモデル化することによって、テーブル内の精度を高め、次いで、モデルによって提供される値に定数を事前に乗算することによって、精度を高めることである。この例は、
TcTable[Q] = 8 * e(0.113*Q-2.64)
である。ここで、テーブルは、所与のＱ値と目標ｔｃ'値との間の指数則としてモデル化され、事前乗数は８である。この結果は次のテーブルとなる。
0006956858.tif 000003
【０１２７】
ＨＥＶＣと比較して、その要素の精度は５ビットから８ビットに増加されており、これは、記憶サイズの妥当な変更である。また、これは出発点にすぎず、モデルまたは特定の点は、目視検査下で最適化することができることに留意されたい。
【０１２８】
最後に、ｔｃの最終値を得るために、以下の式を使用することができる。
tc = (tc' + R(BitDepth)) ＞＞ f(BitDepth)
または 
tc = (tc' * g(BitDepth) + R) ＞＞ N
ただし、g(BitDepth +1) ＜ 2 * g(BitDepth) の条件付きである。
【０１２９】
好ましい実施形態では、関数Ｒ、ｆおよびｇは：
f(BithDepth) = (16 - BitDepth) / 2
g(BitDepthY)= 16 * 2(B*BitDepth+C)、ここでＢ＝0.857, Ｃ＝-7.44である。
R(BitDepthY) = R = 0
【０１３０】
なお、Ｂ＜１であることは、少なくともビット深さが８〜１１において、ｇ(ＢｉｔＤｅｐｔｈ＋１)＜２ｇ（ＢｉｔＤｅｐｔｈ）であるという観察で予測される。
【０１３１】
関数ｇは、スケール関数と呼ばれる。ｇの後者の式は、ＴｃＴａｂｌｅと同様に、理想的には事前計算され、テーブルに記憶される。テーブルに必要とされる記憶装置は、インプリメンテーションコストにおいて古典的な問題であるので、Ｎは通常、ｇに対するテーブルのサイズと、やはりＴｃＴａｂｌｅによって指示される精度との間の妥協となる。したがって、例として、ＴｃＴａｂｌｅ内の値が精度の目的のために２倍にされる場合、Ｎは１だけ増加される。上記のＴｃＴａｂｌｅおよびＮ＝６の例（ここでは、ｇが８ビットに適合するようにテーブル内の値を許容する）は、次のとおりである。
0006956858.tif 000004
【０１３２】
なお、関数ｇを用いた式は、ｔｃ'を２Nで割り、Ｒによる潜在的な加法補正でｇを乗算することに対応する。条件：ｆ（ＢｉｔＤｅｐｔｈ＋１）＜２＊ｇ（ＢｉｔｈＤｅｐｔｈ）が、２つの連続するＢｉｔＤｅｐｔｈの値に対応するｔｃの値間の乗算係数が厳密に２(BitDepth-8)より小さいことを保証し、その結果、強フィルターのクリッピング範囲が厳密に２*ｔｃよりも低くなる。
【０１３３】
関数Ｒがヌルとなる場合の関数ｆを使用する第１の代替処理は、ビット深度＝１６に対してｔｃ＝ｔｃ’を与えることになることを留意されたい。そして、ｔｃとｔｃ'との間の乗算係数は、２(BitDepth-8-1)に対応する、２(16-BitDepth)/2に対応する。これは、ビット深度の２つの連続する値に対応する２つの範囲クリッピング値の比率が厳密に２より小さいことに対応する。
【０１３４】
第２の実施形態は、特に８より大きいビット深度値に対して、クリッピング制御パラメータの値の改善された精度でクリッピング範囲の低減をもたらす。クリッピング制御パラメータｔｃのこの改善された計算は、輝度(luma)成分のフィルタリングおよび色度(Chroma)成分のフィルタリングの両方に使用することができる。
【０１３５】
それにもかかわらず、ブロッキングアーチファクトは、成分間で、特に輝度成分と色度成分との間で異なることがあるように思われる。色度成分は一般に、同じ定量化パラメータを使用しても、量子化されると、より滑らかであり、輝度成分とは異なって振る舞う。さらに、この規格は、輝度成分および色度成分が同じビット深度を有するピクセルで符号化されない状況を可能にする。これら全ての理由のために、クリッピングパラメータｔｃの決定は、有利には各成に適合される。
【０１３６】
クリッピングパラメータｔｃの改善された計算を与える前の式を取る:
tc = (tc' * g(BitDepth) + R) ＞＞ N
各成分に対する差(differential)クリッピングパラメータの計算は、以下の式に従って定義することができる。
tcY = (tc'Y * gY(BitDepthY) + RY) ＞＞ NY,
tcCb = (tc'Cb * gcb(BitDepthchroma) + RCb) ＞＞ NCb,
tcCr = (tc'Cr * gcr(BitDepthchroma) + RCr) ＞＞ NCr,
ここで、Ｙは輝度成分を指し、ＣｂおよびＣｒは２つの色度成分を指す。これらの式において、両方の色度成分の深度は、ＢｉｔＤｅｐｔｈchromaに等しいと考えられており、そうでない場合には式を適合させることができる。ｇ関数は、以下の例に従ってテーブルで定義することができる。
0006956858.tif 000005
【０１３７】
値tc'Y、tc'Cb、tc'Crは、量子化パラメータＱに基づいて、前述のようにテーブルから導出される。我々は、このテーブルを、ＴｃＴａｂｌｅと、すぐ上のｇテーブルと区別するために呼ぶ。有利には、ＴｃＯｆｆｓｅｔと呼ばれるオフセットが、次に表されるｔｃ'Yの決定を向上させるために利用できる。
tc'Y = TcTable[QPY+TcOffset]
【０１３８】
色度成分についての式は次のようになる。
tc'Cb = TcTable[QPY+TcOffset+TcOffsetCb]
tc'Cr = TcTable[QPY+TcOffset+TcOffsetCr]
【０１３９】
オフセット値ＴｃＯｆｆｓｅｔ，ＴｃＯｆｆｓｅｔCb，ＴｃＯｆｆｓｅｔCrは、典型的にはエンコーダから直接的または間接的にビットストリーム内にて、デコーダにシグナリングされる。
【０１４０】
各成分に対するクリッピングパラメータの決定を区別することによって、デブロッキングに関するこれらの成分の挙動における観察された差を考慮することが可能である。
【０１４１】
いくつかの実施形態では、変数ＲCb、ＲCrは同じ値Ｒchromaを有し、同様に、ＮCb、ＮCrもＮchromaを持つ。ｇCb、ｇCrについては同じであっても、異なってもよい。
【０１４２】
シフト値ＮY、ＮCb、ＮCr、又は、Ｎchromaは、ｇテーブルのサイズ考慮、または乗算に対するオペランドのサイズに基づいて定義することができる。ｔｃ'は、典型的にはｇテーブルの値と同様に、５〜１６ビットで符号化される。１６×１６の乗算はコストがかかる。シフトパラメータ値の選択は、５ビット×５ビット乗算への乗算の減少を可能にする。Ｒパラメータの可能な値は２N-1と０であり、これは、最も近い整数への丸め処理また切り捨てに対応するシフト操作になる。
【０１４３】
我々は、実施形態において、クリッピングパラメータは以下の式に基づいて計算され得ることを見出した。
tc = (tc' * g(BitDepth) + R) ＞＞ N
これは、ＴｃＯｆｆｓｅｔを可視するため、次のように書き換えることができる。
tc = (TcTable[QP+TcOffset] * g(BitDepth) + R) ＞＞ N
【０１４４】
この実施形態は、ＴｃＯｆｆｓｅｔパラメータを使用してクリッピングパラメータを適応させる方法をエンコーダに与える。この適応は有用であるが、ＴｃＯｆｆｓｅｔがＴｃＴａｂｌｅで使用されるインデックスを変更することしかできないので、ＴｃＴａｂｌｅの値に限定される。ｇテーブルに適用されるスケールパラメータを導入することによって、より細かい適応の可能性を与えることができる。
【０１４５】
一実施形態によれば、クリッピングパラメータの計算は以下のようになる。
tc = (TcTable[QP+TcOffset] * (g(BitDepth)+ScaleOffset) + R) ＞＞ N
【０１４６】
スケールオフセット（scale offset）は、例えば、以下のようにＨＥＶＣ規格によってｓｅ（ｖ）として定義される符号付き指数ゴロム符号を使用して、符号付き整数符号化される。
0006956858.tif 000006
【０１４７】
スケールオフセットは、典型的にはＴｃＯｆｆｓｅｔと同様に、例えば、ＳＰＳ、ＰＰＳ、またはスライスレベルで、ビットストリームにおいてシグナリングされる。
【０１４８】
他の実施形態では、スケール関数ｇが、エンコーダによってビットストリーム内で明示的にシグナリングされるスケールパラメータＴｃＳｃａｌｅによって置き換えることができる。このシグナリングは例えば、ＳＰＳ、ＰＰＳ、またはスライスレベルで行うことができる。有利には、このスケールパラメータはエンコーダによって定義され、少なくとも対応するコンポーネントの画素のビット深度に基づいて、互換性のあるデコーダによって使用するために、本発明に従って生成されたビットストリームでシグナリングされる。クリッピングパラメータｔｃの計算は、次のように行うことができる。
tc = (TcTable[QP+TcOffset] * TcScale + R) ＞＞ N
【０１４９】
いくつかの実施形態では、２つのオフセットパラメータ、典型的にはパラメータＴｃＯｆｆｓｅｔおよびパラメータＳｃａｌｅＯｆｆｓｅｔまたはＴｃＳｃａｌｅは、同じレベルでシグナリングされない。一方は、例えば、ＳＰＳまたはＰＰＳレベルでシグナリングされ、他方は、スライスレベルでシグナリングされる。
【０１５０】
いくつかの実施形態では、スケールオフセット、またはスケールパラメータは、パラメータＴｃＯｆｆｓｅｔを置き換える。これらの実施形態では、パラメータＴｃＯｆｆｓｅｔがシグナリングされないか、または０であると仮定される。計算は次のいずれかになる。
tc = (TcTable[QP] * (g(BitDepth) + ScaleOffset) + R) ＞＞ N
または、
tc = (TcTable[QP] * TcScale + R) ＞＞ N
【０１５１】
いくつかの実施形態ではスケールオフセット、またはスケールパラメータは、成分によって適合されてもよい。クリッピングパラメータｔｃの計算は以下のようになる。
tcY = (tc'Y * (gY(BitDepthY) + ScaleOffsetY) + RY) ＞＞ NY
tcCb = (tc'Cb * (gCb(BitDepthchroma) + ScaleOffsetCb) + RCb) ＞＞ NCb
tcCr = (tc'Cr * (gCr(BitDepthchroma) + ScaleOffsetCr) + RCr) ＞＞ NCr
【０１５２】
なお、成分へのスケールオフセットの適応は、成分へのスケール関数ｇ自体の適応から独立していることに留意されたい。例えば、いくつかの実施形態では、クリッピングパラメータｔｃの計算は、次のようにすることができる。
tcY = (tc'Y * (g(BitDepthY) + ScaleOffsetY) + R) ＞＞ N
tcCb = (tc'Cb * (g(BitDepthchroma) + ScaleOffsetCb) + R) ＞＞ N
tcCr = (tc'Cr * (g(BitDepthchroma) + ScaleOffsetCr) + R) ＞＞ N
【０１５３】
当業者は、異なる実施形態を組み合わせることができ、異なるレベルの適応を採用することができることを理解する。
【０１５４】
いくつかの実施形態では、適応のために異なるテーブルＴｃＴａｂｌｅを使用することができる。これらのテーブルは例えば、テーブルを成分に割り当てることによって、暗黙的にシグナリングされてもよい。テーブルは、輝度成分、色度成分に１つ、または、各色度成分に１つの専用となる。
【０１５５】
いくつかの実施形態では、異なるテーブルを暗黙的に画像のタイプにリンクする場合がある。これは、イントラ符号化されたタイプＩの画像用の１つのテーブル、予測されるタイプＰの画像用の１つのテーブル、及び、双方向のタイプＢの画像用の１つのテーブル、双方向を意味します。これは、ＴｃＴａｂｌｅまたはスケールテーブルｇに適用することができる。
【０１５６】
いくつかの実施形態では、特徴またはツール、特に前述の適応ループフィルタのアクティブ化に、異なるテーブルを暗黙的にリンクすることができる。
【０１５７】
いくつかの実施形態では、異なるテーブルのセットが事前定義されてもよい。輝度および/または色度のために使用されるテーブルは、セット内のテーブルを示すインデックスとしてビットストリーム内でシグナリングされる。このインデックスは、テーブルの数が８である場合、固定長符号、例えば３ビットとして符号化されてもよい。このインデックスは、値０が最短コードを有する符号なし指数ゴロムコードを使用して符号化することもできる。
【０１５８】
いくつかの実施形態では、オフセットは送信されず、ＴｃＯｆｆｓｅｔもＳｃａｌｅＯｆｆｓｅｔも送信されない。スケール関数ｇもない。成分よる適応は単に、各成分に１つ、または、少なくとも輝度に１つ、色度に１つの、異なるＴｃＴａｂｌｅを定義することによって行われる。クリッピングパラメータｔｃの計算は、一例としては、以下のようになる。
tcY = (TcTableY[QPY] ＜＜ (BitDepthY-8))
tcCb = (TcTableCb[QPCb] ＜＜ (BitDepthCb-8))
tcCr = (TcTableCr[QPCr] ＜＜ (BitDepthCr-8))
【０１５９】
一実施形態では、２つの色度テーブルＴｃＴａｂｌｅCbとＴｃＴａｂｌｅCrは同じであって、単一のＴｃＴａｂｌｅChromaで表されても良い。
【０１６０】
図４は、本発明の１つまたは複数の実施形態を実施するためのコンピューティングデバイス４．０の概略ブロック図である。コンピューティング装置４．０は、マイクロコンピュータ、ワークステーション、またはライトポータブル装置などの装置とすることができる。コンピューティングデバイス４．０は、以下に示すものが接続された通信バスを備える。
・ ＣＰＵと呼ばれるマイクロプロセッサのような中央処理装置４．１; 
・ ＲＡＭで示されるランダムアクセスメモリ４．２であって、本発明の実施形態の方法の実行可能コード、ならびに本発明の実施形態による方法を実施するために必要な変数およびパラメータを記録するように適合されたレジスタを格納するためのものであり、そのメモリ容量は、例えば、拡張ポートに接続された任意選択のＲＡＭによって拡張することができる; 
・ 本発明の実施形態を実施するためのコンピュータプログラムを記憶するためのＲＯＭで示される読出し専用メモリ４．３; 
・ ネットワークインタフェース４．４は、典型的には処理されるべきデジタルデータが送信又は受信される通信ネットワークに接続される。このネットワークインタフェース４．４は、単一のネットワークインタフェースであってもよく、又は異なるネットワークインタフェース（例えば、有線及び無線インターフェイス、又は異なる種類の有線又は無線インターフェイス）のセットから構成されてもよい。データパケットは、送信のためにネットワークインタフェースに書き込まれるか、またはＣＰＵ ４．１で実行されるソフトウェアアプリケーションの制御下で受信のためにネットワークインタフェースから読み出される; 
・ ユーザインターフェース４．５はユーザからの入力を受信するために、またはユーザに情報を表示するために使用されてもよい; 
・ ＨＤで示されるハードディスク４．６は、大容量記憶装置として提供されてもよい; 
・ I/Oモジュール４．７は、ビデオソースまたはディスプレイのような外部装置から/へデータを受信/送信するために使用されてもよい。
【０１６１】
実行可能コードは読み出し専用メモリ４．３、ハードディスク４．６、または例えばディスクのような取り外し可能なデジタル媒体のいずれかに記憶されてもよい。変形例によれば、プログラムの実行可能なコードは実行される前に、ハードディスク４．６のような通信装置４．０の記憶手段の１つに記憶されるために、ネットワークインタフェース４．４を介して、通信ネットワークの手段によって受信されることができる。
【０１６２】
中央処理装置４．１は、前述の記憶手段の１つに格納された本発明の実施形態によるプログラムの命令またはソフトウェアコードの一部の実行を制御し、指示するように適合される。電源投入後、ＣＰＵ ４．１は、例えばプログラムＲＯＭ ４．３またはハードディスク（ＨＤ）４．６からロードされた後に、ソフトウェアアプリケーションに関するメインＲＡＭメモリ４．２からの命令を実行することができる。このようなソフトウェアアプリケーションは、ＣＰＵ ４．１によって実行されると、本発明のフローチャートのステップを実行する。
【０１６３】
本発明のアルゴリズムの任意のステップはＰＣ（“パーソナルコンピュータ”）、ＤＳＰ（“デジタル信号プロセッサ”）、またはマイクロコントローラなどのプログラマブルコンピューティングマシンによる命令またはプログラムのセットの実行によってソフトウェアで実施することができ、あるいは、ＦＰＧＡ（“フィールドプログラマブルゲートアレイ”）またはＡＳＩＣ（“特定用途向け集積回路”）などのマシンまたは専用コンポーネントによってハードウェアで実施することができる。
【０１６４】
以上、特定の実施形態を参照して本発明を説明したが、本発明は特定の実施形態に限定されるものではなく、本発明の範囲内にある修正は当業者には明らかであろう。
【０１６５】
多くのさらなる修正および変形は単に例として与えられ、添付の特許請求の範囲によってのみ決定される本発明の範囲を限定することを意図しない、前述の例示的な実施形態を参照することにより、当業者に示唆されるのであろう。特に、異なる実施形態からの異なる特徴は、適宜、交換されてもよい。
【０１６６】
特許請求の範囲において、単語「有する」は他の要素又はステップを排除するものではなく、不定冠詞「ａ」又は「ａｎ」は複数を排除するものではない。異なる特徴が相互に異なる従属請求項に記載されているという単なる事実は、これらの特徴の組み合わせが有利に使用されることができないことを示すものではない。
【図１】
0006956858.tif 000007
【図２】
0006956858.tif 000008
【図３】
0006956858.tif 000009
【図４】
0006956858.tif 000010
【図５】
0006956858.tif 000011