(57)【特許請求の範囲】
【請求項１】
少なくとも１つのブロックに関して、予測ステージパラメータを含む圧縮動画情報のフレームから再構成された隣接ブロック間の境界でブロッキングアーチファクトを低減させる方法であって、
前記予測ステージパラメータに基づき１つのブロックを再構成することと、
前記再構成ブロックから残差エラー属性を算出することと、
基準フィルタ強度と少なくとも１つの増加値とに基づいて、フィルタ強度値を算出することと、ここで、前記増加値は、前記１つのブロックに関連した前記予測ステージパラメータまたは前記残差エラー属性との少なくとも１つに基づいて、複数のプリセット値から選択され、前記フィルタ強度値は、前記少なくとも一つの増加値に基づいて基準フィルタ強度を調整することで算出され、および
前記フィルタ強度値を用いて、前記１つのブロックに隣接する境界をフィルタ処理することと
を含むことを特徴とする方法。
【請求項２】
前記予測段階パラメータは、参照フレームタイプまたは予測モードの少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記参照フレームタイプは、イントラフレーム、最終フレーム、ゴールデンフレーム、および代替参照フレームのいずれかであることを特徴とする請求項２に記載の方法。
【請求項４】
前記予測モードは、非分割モードと分割モードのいずれかであることを特徴とする請求項２に記載の方法。
【請求項５】
前記フィルタ強度値を算出することは、前記予測ステージパラメータと前記残差エラー属性の他方の１つに基づく前記複数のプリセット値から選択された第２の増加値に基づいて、前記フィルタ強度値を算出することをさらに含むことを特徴とする請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記残差エラー属性は、ヌル動きベクトルと非ゼロ動きベクトルのいずれかであることを特徴とする請求項５に記載の方法。
【請求項７】
前記複数のプリセット値は、フレームレベルで求められることを特徴とする請求項１〜４のいずれか１項に記載の方法。
【請求項８】
復号されている前記フレームが、キーフレームであるか否か判断することをさらに含み、
復号されている前記フレームがキーフレームである場合、前記増加値が、ディフォルト値に設定されることを特徴とする請求項７に記載の方法。
【請求項９】
復号されている前記フレームが、フィルタ強度値条件を特定するか否か判断することと、および
復号されている前記フレームがフィルタ強度値条件を特定する場合、特定されたフィルタ強度値を前記複数のプリセット値に割り当てること
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
復号されている前記フレームが、単一のフィルタ条件を特定するか否か判断することと、および
復号されている前記フレームが単一のフィルタ条件を特定する場合、前記予測ステージパラメータと前記１つのブロックに関連した前記残差エラー属性とに関わりなく、単一のフィルタ強度値を前記ブロックに割り当てることと
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記フレームが、予測段階パラメータと残差エラー属性を有する複数ブロックを含み、
前記予測段階パラメータまたは前記残差エラー属性との少なくとも１つに基づいて、前記ブロックの各々をカテゴリに分類することと、
前記カテゴリの各々に対しフィルタ強度値を求めることと、および
前記ブロックが分類された前記カテゴリに割り当てられた前記フィルタ強度を用いて、前記ブロックの少なくとも１つに隣接する境界をフィルタ処理することと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記一定のカテゴリに対しフィルタ強度値を求めることは、
少なくとも１つのフレームで特定された基準フィルタ強度値を求めることと、
前記カテゴリに関連した前記予測ステージパラメータまたは前記残差エラー属性との少なくとも１つに基づき、前記一定のカテゴリに対し１つ以上のプリセット増加値を求めることと、および
前記１つ以上のプリセット増加値を前記基準フィルタ強度値に加えることと
を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記予測ステージパラメータは、予測フレームタイプまたは予測モードとの少なくとも１つを含み、前記参照フレームタイプは、イントラフレーム、最終フレーム、ゴールデンフレーム、および代替参照フレームのいずれかであり、前記予測モードは、非分割モードと分割モードのいずれかであることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記残差エラー属性は、ヌル動きベクトルと非ゼロ動きベクトルのいずれかであることを特徴とする請求項１１〜１３のいずれか１項に記載の方法。
【請求項１５】
前記カテゴリの各々に対しフィルタ強度値を割り当てることは、前記フレームの少なくとも１つで特定された一組のフィルタ修飾子からの各カテゴリに対し前記フィルタ強度値を求めることをさらに含むことを特徴とする請求項１１〜１３のいずれか１項に記載の方法。
【請求項１６】
復号されている前記フレームが、キーフレームであるか否か判断することと、
復号されている前記フレームがキーフレームである場合、前記プリセットカテゴリの少なくとも１つの前記フィルタ強度値をディフォルト値に設定することと、
前記復号されているフレームが、前記１つ以上のプリセットカテゴリに対して、フィルタ強度値条件を特定するか否か判断することと、
前記復号されているフレームが、前記１つ以上のプリセットカテゴリに対して、フィルタ強度値条件を特定する場合、前記１つ以上のプリセットカテゴリに対し、前記特定したフィルタ強度値を割り当てることと
をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
復号されている前記フレームが、単一のフィルタ条件を特定するか否か判断することと、および
復号されている前記フレームが単一のフィルタ条件を特定する場合、前記カテゴリに関わらず、単一のフィルタ強度値を前記全ブロックに割り当てることと
をさらに含むことを特徴とする請求項１１〜１３のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２００８年９月１１日に出願された米国仮特許出願第６１／０９６，１４７号の優先権を主張している、２００８年１２月５日に出願された米国特許出願第１２／３２９，０７０号の優先権を主張しており、ここで両出願の内容全体を本明細書に参照として組み入れる。
【０００２】
本発明は、一般に動画符号化に関し、より詳しくは、ループフィルタを用いた動画符号化に関する。
【背景技術】
【０００３】
今日の増加しつつある多数のアプリケーションでは、例えば、テレビ会議による遠隔ビジネス会議、高精細動画エンターティメント、動画広告、およびユーザー生成動画の共有を含む様々な目的のためにデジタル動画を利用している。技術の進歩につれて、人々は、高フレームレートでのスムーズな再生と共に、動画品質と高解像度動画により大きな期待を抱いている。
【０００４】
デジタル動画を表示する動画コーダー(coder)を選択するとき、考慮すべき多くの要因があり得る。ある用途では、優れた動画品質が要求され、その他の用途では、例えば、帯域幅または記憶装置要件を含む様々な制約に適合する必要があるかもしれない。帯域幅消費を制限しながら、より高品質の動画送信を可能にするために、現在および将来のバージョンを含む、ＶＰｘ（ニューヨーク市、クリントンパーク、Ｏｎ２  Ｔｅｃｈｎｏｌｏｇｉｅｓ社により普及された），ＶＣＥＧ（ＩＴＵ−Ｔ動画符号化専門家グループ(ITU-T Video Coding Experts Group)によって普及された）Ｈ．２６４標準、およびＭＰＥＧ（ＩＳＯ／ＩＥＣ動画像専門家グループ(ISO/IEC Moving Picture Experts Group)によって普及された）標準などの、独自開発されたフォーマットを含む多数の動画圧縮方式が知られている。Ｈ．２６４は、ＭＰＥＧ−４  Ｐａｒｔ１０またはＭＰＥＧ−４ＡＶＣ（正式には、ＩＳＯ／ＩＥＣ１４４９６−１０）としても知られている。
【０００５】
多くの動画コーディング技術は、ブロックベース予測と量子化ブロック変換である。ブロックベース予測により、再構成フレームバッファを用いて、後続フレームを予測することができる。ブロックベース予測と量子化ブロック変換を用いると、ブロック境界に沿って不連続性が生じることがある。これらの不連続性（一般にブロッキングアーチファクト(artifacts:画像の乱れ)と呼ばれる）は、見た目に目ざわりであるばかりでなく、後続フレームの予測子(predictor)としての参照フレームの効率性を低下させることがある。ループフィルタを適用して、これらの不連続性を低減させることができる。また、このループフィルタを再構成フレームバッファに適用することができる。ある従来のループフィルタは、異なるフィルタ強度を異なるブロック境界に適用している。例えば、ある圧縮システムでは、例えば、ブロックがインター符号化(inter-coded)されているか、イントラ符号化(intra-coded)されているかに基づいて、ループフィルタの強度が変化する。他の圧縮システムでは、例えば、不連続性の程度と閾値レベルとの間の差に基づいて、フィルタ強度を適用する。また、例えば、ある圧縮システムでは、例えば、隣接ブロックと比較したブロックの照明変化の差値を算出して、ループフィルタの強度を変化させ得る。
【発明の概要】
【０００６】
本発明の一実施形態は、圧縮動画情報フレームから再構成された隣接ブロック間境界でのブロッキングアーチファクトを低減させる方法として開示している。動画情報は、少なくとも１つのブロックに関する予測ステージパラメータを含む。この方法は、予測ステージパラメータに基づいて、１つのブロックを再構成することと、再構成ブロックから残差属性(residual error attribute)を算出することと、基準フィルタ強度と少なくとも１つの増加値に基づいて、フィルタ強度値を算出することとを含む。この増加値は、１つのブロックに関連した予測ステージパラメータと残差エラー属性のうちの少なくとも１つに基づく、複数のプリセット値から選択される。また、フィルタ強度値は、前記少なくとも一つの増加値に基づいて基準フィルタ強度を調整することで算出される。算出されたフィルタ強度値を用いて、１つのブロックに隣接する境界がフィルタされる。
【０００７】
本発明の別の実施形態は、各フレームが、予測ステージパラメータと残差属性を有する複数のブロックを含む、圧縮動画情報フレームを復号する方法として開示している。この方法は、予測ステージパラメータと残差属性の少なくとも１つに基づいて、ブロックの各々をカテゴリに分類することと、カテゴリの各々に対するループフィルタ強度値を求めることとを含む。ブロックが分類されているカテゴリに割り当てられたループフィルタ強度を用いて、ブロックの少なくとも１つに隣接する境界がフィルタされる。
【０００９】
本発明のこれらと他の実施形態を、以下にさらに詳しく説明する。
【図面の簡単な説明】
【００１０】
ここでは、添付図面を参照して説明を行い、複数の図面にわたり、同一参照符号は同一部位を示す。
【００１１】
【図１】本発明の一実施形態による動画圧縮システムのブロック図である。
【００１２】
【図２】本発明の一実施形態による動画復元(decompression)システムのブロック図である。
【００１３】
【図３】図１，２の動画圧縮と復元システムで用いられるイントラ予測モードとインター予測モードの概略図である。
【００１４】
【図４】図１の動画圧縮システムで用いられる強度修飾子(strength modifier)の算出に用いるループフィルタコントロールのブロック図である。
【００１５】
【図５】図４の強度修飾子を選択する方法のフローチャートである。
【００１６】
【図６】図１の動画圧縮システムで用いられる動画データのループフィルタ処理を更新する方法のフローチャートである。
【００１７】
【図７】図１の動画圧縮システムで用いられる動画データのループフィルタ処理を更新する別の方法のフローチャートである。
【発明を実施するための形態】
【００１８】
ここで開示したのは、ブロッキングアーチファクトを除去または低減させる適応ループフィルタの一実施形態である。また、ここで開示したのは、オーバヘッドが少ないデータを用いてブロッキングアーチファクトを除去または低減、および／または計算の複雑性を低減させる適応ループフィルタの一実施形態である。
【００１９】
図１は、本実施の一実施形態による適応フィルタ３４を用いた、動画エンコーダ１４のブロック図である。
【００２０】
開示した実施形態において、ブロックベースの動画圧縮は、マクロブロックと呼ばれる隣接画素の一定形状群に対し実施される。一般に、動画の各フレームは、マクロブロックに分割することができ、各マクロブロックは、小さなサイズのブロックから構成されている。マクロブロックおよびブロック中のこれらの画素群は、動きデータ(motion data)とエラー信号(error signal)を生成するために、現フレームまたは他のフレーム中のいずれかのデータと比較できる。この実施形態において、各マクロブロックは、１６×１６画素群であってもよい。他の実施形態において、マクロブロックはまた任意の他のサイズであってよい。
【００２１】
新規な適応ループフィルタの実施形態の説明は、ＶＰ８動画コーディングフォーマットのコンテキストで説明したが、本発明の別の実施形態を他の動画コーディングフォーマットのコンテキストで実装することもできる。また、この実施形態は、いかなる特定動画コーディング標準またはフォーマットにも限定されない。
【００２２】
ブロック境界で不連続性をなくすために、再構成パス時に、ループフィルタ処理を再構成フレームに適用することができる。以下にさらに詳述するように、どのループフィルタとループフィルタ強度を選択するかによって、画像品質に著しい影響を与えることがある。余りに強いフィルタは、ぼけ(blurring)と細部の欠落を引き起こす可能性がある。逆に、余りに弱いフィルタは、隣接ブロック間の不連続性を十分に抑制することができない可能性がある。
【００２３】
図１について説明する。入力動画ストリーム１６を符号化するために、エンコーダ１４は、以下の処理、すなわち、前方向パス（実線で示す）の以下の処理、すなわち、イントラ／インター予測１８、変換１９、量子化２２、およびエントロピー符号化２４を実行して、符号化ビットストリーム２６を生成する。エンコーダ１４は、さらなるマクロブロックを符号化するためにフレームを再構成する再構成パス（点線で示す）も備えている。エンコーダ１４は、再構成パスでの以下の処理、すなわち、逆量子化２８、逆変換３０、再構成３２、およびループフィルタリング３４を実行する。エンコーダ１４のその他の構造的変更をビットストリーム２６の符号化に用いることができる。
【００２４】
図１について説明する。入力動画ストリーム１６が符号化のため与えられたとき、入力動画ストリーム１６中の各フレームは、マクロブロック単位で処理できる。イントラ／インター予測ステージ１８で、イントラ予測モードまたはインター予測モードのいずれかを用いて、各マクロブロックを符号化できる。いずれにしても、再構成フレームに基づいて、予測マクロブロックを形成できる。イントラ予測の場合は、例えば、過去に符号化および再構成されている現フレームのサンプルから予測マクロブロックを形成できる。一方、インター予測の場合は、例えば、すでに符号化および再構成されている１つ以上の前または将来のフレーム（つまり、参照フレーム）から、予測マクロブロックを形成できる。また、別の実施形態では、イントラ予測とインター予測両方のある組み合わせを用いて、マクロブロックを符号化できる。
【００２５】
次に、図１についてさらに説明する。予測マクロブロックを現マクロブロックから引いて、残差マクロブロック（残差(residual)）を生成できる。変換ステージ１９では、残差を変換符号化(transform codes)し、量子化ステージ２２で、残差を量子化して一組の量子化変換係数を生成する。次いで、量子化変換係数は、エントロピー符号化ステージ２４でエントロピー符号化される。エントロピー符号化係数は、用いた予測モード種別、動きベクトル、および量子化値などの、マクロブロックを復号するのに必要な情報と一緒に、圧縮ビットストリーム２６に出力できる。
【００２６】
図１の再構成パスは、エンコーダとデコーダ両方が、マクロブロックを復号するのに必要である参照フレームを用いることができるようにする。再構成パスは、以下にさらに詳述する、復号処理中に実行される機能と同様の、逆量子化ステージ２８により変換係数を逆量子化することと、逆変換ステージ３０により係数を逆変換して、微分残差マクロブロック（微分残差(derivative residual)）を生成することとを含む。再構成ステージ３２で、予測マクロブロックを微分残差に加えて、再構成マクロブロックを生成できる。また、適応ループフィルタ３４を再構成マクロブロックに適用して、ブロッキングアーチファクトを低減させることができる。
【００２７】
図２について説明する。一実施形態によれば、圧縮ビットストリーム２６を復号するには、デコーダ２１は、上述したエンコーダ１４の再構成パスと同様に、以下の機能を実行して、出力動画ストリーム３５を生成する。すなわち、エントロピー復号化２５、逆量子化２７、逆変換２９、イントラ／インター予測２３、再構成３１、適応ループフィルタ３４、およびデブロックキングフィルタ処理３３を行う。デコーダ２１のその他の構造的変更を用いて、圧縮ビットストリーム２６を復号できる。
【００２８】
圧縮ビットストリーム２６が復号化のため与えられたとき、エントロピー復号化ステージ２５により、データ要素をエントロピー復号化して、一組の量子化係数を生成できる。係数を、逆量子化ステージ２７で逆量子化し、逆変換ステージ２９で逆変換して、エンコーダ１４の再構成段階で生成されたものと同一の微分残差を生成できる。イントラ／インター予測ステージ２３で、デコーダ２１は、圧縮ビットストリーム２６から復号化されたヘッダー情報を用いて、エンコーダ１４で生成されたのと同じ予測マクロブロックを生成する。再構成ステージ３１で、予測マクロブロックを微分残差に加えて、再構成マクロブロックを形成できる。適応ループフィルタ３４を再構成マクロブロックに適用して、ブロッキングアーチファクトを低減させることができる。デブロッキングフィルタ３３を再構成マクロブロックに適用して、さらにブロッキング歪を低減させ、その結果を出漁動画ストリーム３５に出力することができる。
【００２９】
新規な適応ループフィルタの実施形態の説明をエンコーダの適応ループフィルタ３４を参照して説明したが、説明したフィルタ処理技術は、デコーダの適応ループフィルタ３４にも実装することができる。本発明の理解を助けるためにのみ、デコーダの適応ループフィルタ３４への言及をこの開示全体を通して省略した。しかしながら、新規なフィルタ処理は、エンコーダの適応ループフィルタ３４に限定されず、デコーダの適応ループフィルタ３４またはフィルタ処理技術を実装している何等かの他の装置に適用できる。
【００３０】
図３は、参照フレーム４４，４８と現在符号化または復号化されている現フレーム３６を示す。上述したように、各フレームは、マクロブロック単位で処理でき、イントラ／インター予測ステージ１８で、イントラ予測モード、インター予測モード、またはインター予測モードとイントラ予測モードの組み合わせのいずれかを用いて、各マクロブロックを符号化できる。例えば、現マクロブロック３８は、以前に符号化された参照フレーム４４のマクロブロック４６からインター予測を用いて、符号化または復号されている。同様に、以前に符号化された参照フレーム４８のマクロブロック５０からインター予測を用いて、現マクロブロック３８’が符号化または復号されている。また、例えば、現フレーム３６内のマクロブロック５２からインター予測を用いて、現マクロブロック３８”が符号化または復号されている。
【００３１】
符号化処理中に、ブロッキングアーチファクトが生成され、例えば、イントラ／インター予測ステージ１８、変換ステージ１９、または量子化ステージ２２に由来するものだろう。ある従来のフィルタは、フィルタ強度が、ブロック境界に依存しているので、計算処理を複雑にし、無駄に時間を浪費させる。
【００３２】
図４は、本発明の一実施形態の適応ループフィルタ３４のループフィルタコントロール６１を示すブロック図である。一実施形態によれば、ループフィルタコントロール６１は、ブロック属性に基づいて、強度修飾子(strength modifier)６０を決定する。ブロック属性は、ブロックや、デコーダに渡されてビットストリームの正しい復号を支援する情報についての既存の符号化情報に基づいている。
【００３３】
ブロック属性は、予測ステージパラメータ６５と残差エラー属性６６を含むことができる。予測ステージパラメータ６５は、参照フレームタイプ６２と予測モード６４のタイプを含むことができる。以下にさらに詳述するように、強度修飾子６０は、適応ループフィルタ３４の閾値レベルを変更する。
【００３４】
参照フレームタイプ６２は、予測ブロックを構成しているとき、図３と同様に、イントラモードまたはインターフレームモードを用いているか否かによって判断できる。イントラモード予測コーディングを用いている場合、参照フレームタイプ６２は、イントラフレームになるであろう（つまり、現フレーム）。イントラフレームを用いるとき、上述したように、予測ブロックは、以前に符号化および再構成されている現フレームのサンプルから形成できる。
【００３５】
インターモード予測コーディングを用いた場合、予測ブロックを作成する基礎として、インターフレームを用いることができる。インターフレームを用いるとき、例えば、１つ以上の前のフレーム、将来のフレーム、またはすでに符号化および再構成されているそれらのある組み合わせから予測ブロックを形成できる。従って、インターフレームを用いるとき、参照フレームタイプ６２は、例えば、最終フレーム、ゴールデンフレーム、または代替参照フレームを含み得る。最終フレームは、現フレームの前に以前に符号化されたフレームである。ゴールデンフレームは、遠い過去のフレームから任意に選択され、後続フレームの予測子として用いられる過去のフレームである。代替参照フレームは、最終フレームでもゴールデンフレームでもないフレームを含み得る。例えば、この代替参照フレームは、過去のフレーム、将来のフレーム、または構成参照フレームである。また、例えば、構成参照フレームは、本発明の譲渡人に譲渡され、本発明と同時に出願され、その全体をここで本明細書に参照として組み入れる「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｖｉｄｅｏ  Ｅｎｃｏｄｉｎｇ  Ｕｓｉｎｇ  Ｃｏｎｓｔｒｕｃｔｅｄ  Ｒｅｆｅｒｅｎｃｅ  Ｆｒａｍｅ」と題する特許出願に開示された参照フレームであってもよい。
【００３６】
予測モード６４のタイプは、予測ブロックを構成しているとき、参照フレームタイプ６２と同様に、イントラモードまたはインターフレームモードコーディングを用いているか否かにより判断できる（図４に示すように）。イントラモード予測コーディングを用いる場合、非分割モードおよび分割モードとして示される、２つのタイプのイントラコーディングをサポートできる。そうではなく、インターモード予測コーディングを用いている場合、非分割モードおよび分割モードとして示される、２つのタイプのインターコーディングをサポートできる。
【００３７】
非分割モードで、インターモード予測コーディングを用いている場合、結果として得られた動きベクトルが、ヌルまたは非ゼロであるか否かによって、残差エラー属性６６を求めることができる。
【００３８】
上述したように、マクロブロックは、１６×１６輝度画素アレイである。イントラコーディングにおいて、各マクロブロックは、例えば、４×４サブブロックと呼ばれる４×４輝度サンプルアレイにさらに分割できる。従って、マクロブロックは、１６個の４×４サブブロックから構成できる。これは、予測ブロックが、マクロブロックに対して形成し得る（つまり、非分割モード）か、または１６個の４×４サブブロックの各々に対して形成し得る（つまり、分割モード）かのいずれかであることを意味している。１６×８、８×１６、および８×８などの、その他のサブブロックサイズも利用可能である。４×４サブブロック分割モードを参照してイントラコーディングの実施形態の説明をしたが、分割モードで、任意の他のサブブロックサイズも用いることができ、この実施形態の説明は、４×４サブブロックに限定されない。
【００３９】
イントラコーディングにおいて、非分割モードは、１６×１６マクロブロック全体の予測ということになり、一方、分割モードは、各４×４サブブロックの個別の予測ということになる。
【００４０】
イントラコーディング非分割モードの場合、例えば、４つの予測モードの１つを用いて、予測される１６×１６ブロックの左および／または上の以前にコード化したブロックの近傍画素サンプルを参照できる。４つの選択可能予測モードは、垂直予測、水平予測、ＤＣ予測、および平面予測である。
【００４１】
イントラコーディング分割モードの場合、例えば、９つの予測モードの１つを用いて、予測される４×４サブブロックの左および／または上の以前に符号化した近傍の画素サンプルを参照できる。９つの選択可能予測モードは、垂直予測、水平予測、ＤＣ予測、斜め下左予測、斜め下右予測、垂直右予測、水平下予測、垂直左予測、および水平上予測である。
【００４２】
インター符号化において、非分割モードでは、１６×１６マクロブロック全体を予測する対応する参照フレーム領域の移動に基づき、１つ以上の動きベクトルを計算することになる。一方、分割モードでは、１６×１６マクロブロックの区画(partition)を予測する対応する参照フレーム領域の移動に基づき、動きベクトルを計算することになる。１６×１６マクロブロックは、１６×８、８×１６、８×８、または４×４の区画に分割され、各々自分自身の動きベクトルを有している。なお、その他の区画サイズも利用可能である。
【００４３】
各々のマクロブロック全体または各々の分割された区画に対して動きベクトルを計算できる。特に、動き補償は、参照フレームのトランスレート(translate)からのマクロブロック（または、マクロブロック内の対応する区画）の画素値を予測する。各マクロブロックまたは各区画に対する動きベクトルは、動きの変化がないことを示すヌル(null)、または動きの変化があることを示す非ゼロのいずれかである。
【００４４】
予測ステージパラメータ６５と残差エラー属性６４に基づき、適応ループフィルタ３４が、どのように異なる強度修飾子６０を適用するかについて実施形態を説明したが、フィルタタイプ、フィルタ係数、およびフィルタタップなどの、何等かのその他のループフィルタ属性を変更しても構わず、本実施形態の説明は、強度修飾子６０の変更に限定されない。
【００４５】
図５は、本発明の一実施形態による、図４のループフィルタコントロール６１の動作を示すフローチャートである。図５について説明する。ブロック１００で、基準ループフィルタ強度ｆを、適応ループフィルタ３４の挙動を規定するフレームに対し選択できる。従って、基準フィルタ強度ｆは、符号化ビットストリームのフレームレベルで特定される。フレームレベルで基準フィルタ強度ｆを特定することで、非常に少ないビットを用いて、フレーム全体に対し１つの基準フィルタ値ｆを特定できるので、オーバヘッドを低減できる。しかしながら、当該フレームに対し１つのみの基準フィルタ強度ｆを指定できるとしても、後述するように、フィルタ強度値／修飾子６０が、適応ループフィルタ１４の閾値レベルを変更するので、フィルタ処理品質は損なわれない。
【００４６】
マクロブロックレベルで、強度修飾子６０を調節するためには、デルタ値１〜８をビットストリームで符号化できる。これらのデルタ値は、例えば、基準フィルタ強度ｆに加えられる。基準フィルタ強度ｆと強度修飾子６０を組み合わせる他の適切な方法も利用可能である。また、デルタ値は、増加値(incremental values)または増加／減少値パーセンテージなどであってもよい。デルタ値は、正、負、またはゼロであってもよい。図５のフローチャートによるデルタを適用することで、Ｆ１〜Ｆ１１に示す１１個の異なる強度修飾子を生成する。
【００４７】
判断ブロック１０２で、コントロール６１は、再構成されている現マクロブロックが、イントラコード化されているか否か判断する。
【００４８】
現マクロブロックが、イントラコード化されている場合、デルタ１を基準フィルタ強度ｆに加えることができる。図４について説明する。この場合、参照フレームタイプ６２は、イントラフレームである。そして、コントロール６１が判断ブロック１０４に移動する。
【００４９】
判断ブロック１０４で、コントロール６１は、イントラコード化分割モードが、用いられているか否か判断する。イントラコード化分割モードが用いられている場合、デルタ２をデルタ１と基準フィルタ強度ｆに加え、強度修飾子変更因子Ｆ２を生成できる。図４に戻って説明する。この場合、予測モード６４は、イントラコード化分割モードである。
【００５０】
イントラコード化分割モードが用いられていない場合（つまり、非分割モード）、デルタ１のみを基準フィルタ強度ｆに加えて、強度修飾子ｆを生成できる。図４について説明する。この場合、予測モード６４は、イントラコード化非分割モードである。
【００５１】
現マクロブロックが、イントラコード化されていない場合、コントロール６０が、判断ブロック１０６に移動して、用いたインターコード化参照フレームのタイプを判断する。最終フレーム(last frame)が用いられた場合、デルタ３を基準フィルタ強度ｆに加えることができる。図４に戻って説明する。この場合、参照フレームタイプ６２は、最終フレームである。そして、コントロール６１が、判断ブロック１０８に移動する。
【００５２】
ゴールデンフレーム(golden frame)が用いられた場合、デルタ４を基準フィルタ強度ｆに加えることができる。図４に戻って説明する。この場合、参照フレームタイプ６２は、ゴールデンフレームである。そして、コントロール６１が、判断ブロック１１０に移動する。
【００５３】
代替フレームが用いられた場合、デルタ５を基準フィルタ強度ｆに加えることができる。図４に戻って説明する。この場合、参照フレームタイプ６２は代替フレームである。そして、コントロール６１が、判断ブロック１１２に移動する。
【００５４】
上述したように、最終フレームが用いられた場合、コントロール６１が、判断ブロック１０８で予測モード６４を判断する。インターコード化分割モードが用いられている場合、デルタ８が、基準フィルタ強度ｆとデルタ３に加えられ、強度修飾子Ｆ５を生成できる。図４に戻って説明する。この場合、予測モード６４はインターコード化分割モードである。
【００５５】
インターコード化分割モードが用いられていない場合、コントロール６１が、計算された動きベクトルが、ヌルまたは非ゼロであるか否か判断する。動きベクトルがヌルである場合、デルタ６が基準フィルタ強度ｆとデルタ３に加えられ、強度修飾子Ｆ３を生成できる。図４に戻って説明する。この場合、予測モード６４は、インターコード化非分割モードであり、残差エラー属性６６はヌル動きベクトルである。動きベクトルが、非ゼロである場合、デルタ７が基準フィルタ強度ｆとデルタ３に加えられ、強度修飾子Ｆ４を生成できる。図４に戻って説明する。この場合、予測モード６４は、インターコード化非分割モード、残差エラー属性６６は、非ゼロ動きベクトルである。
【００５６】
上述したように、ゴールデンフレームが用いられた場合、コントロール６１が、判断ブロック１１０で予測モード６４を判断する。インターコード化分割モードが用いられている場合、デルタ８が、基準フィルタ強度ｆとデルタ４に加えられ、強度修飾子Ｆ８を生成できる。図４に戻って説明する。この場合、予測モード６４は、インターコード化分割モードである。
【００５７】
ゴールデンフレームと共にインターコード化分割モードが用いられていない場合、コントロール６１は、計算された動きベクトルが、ヌルまたは非ゼロであるか否か判断する。動きベクトルがヌルである場合、デルタ６が、基準フィルタ強度ｆとデルタ４に加えられ、強度修飾子Ｆ６を生成できる。図４に戻って説明する。この場合、予測モード６４は、インターコード化非分割モードで、残差エラー属性６６は、ヌル動きベクトルである。動きベクトルが、非ゼロである場合、デルタ７が、基準フィルタ強度ｆとデルタ４に加えられ、強度修飾子Ｆ７を生成できる。図４に戻って説明する。この場合、予測モード６４は、インターコード化非分割モードで、残差エラー属性６６は、非ゼロ動きベクトルである。
【００５８】
上述したように、代替フレームを用いた場合、コントロール６１が、判断ブロック１１２で予測モード６４を判断する。インターコード化分割モードが用いられている場合、デルタ８が、基準フィルタ強度ｆとデルタ５に加えられ、強度修飾子Ｆ１１を生成できる。図４に戻って説明する。この場合、予測モード６４は、インターコード化分割モードである。
【００５９】
代替フレームと共にインターコード化分割モードが用いられていない場合、コントロール６１が、計算された動きベクトルが、ヌルまたは非ゼロであるか否か判断する。動きベクトルがヌルである場合、デルタ６が、基準フィルタ強度ｆとデルタ５に加えられ、強度修飾子Ｆ９を生成できる。図４に戻って説明をする。この場合、予測モード６４は、インターコード化非分割モードであり、残差エラー属性６６は、ヌル動きベクトルである。動きベクトルが非ゼロである場合、デルタ７が、基準フィルタ強度ｆとデルタ５に加えられ、強度修飾子Ｆ１０を生成できる。図４に戻って説明をする。この場合、予測モード６４は、インターコード化非分割モードで、残差エラー属性６６は、非ゼロ動きベクトルである。
【００６０】
一般に、強度修飾子６０の異なるレベルが、ブロッキングアーチファクトに適用され、参照フレームタイプ６２と予測モード６４に依存して、その範囲が程度の差はあるが、存在するだろう。図５に示すように、例えば、異なる強度修飾子６０を、インターコード化マクロブロックではなく、イントラコード化マクロブロックに適用できる（つまり、Ｆ１〜Ｆ２  ｖｓ  Ｆ２〜Ｆ１１）。また、異なる強度修飾子６６を、イントラコード化分割モードマクロブロックではなく、イントラコード化非分割モードマクロブロックに適用できる（つまり、Ｆ１  ｖｓ  Ｆ２）。強度修飾子６０を調整するその他の適切な方式も利用可能である。
【００６１】
図６は、本発明の一実施形態によるループフィルタ処理動画データを更新する方法のフローチャートである。ループフィルタ処理動画データは、参照フレームループフィルタ修飾子並びに予測モードループ修飾子の両方を含むことができる。参照フレームループフィルタ修飾子は、参照フレームタイプ６２のデルタ値を含むことができる。一方、予測モードループフィルタ修飾子は、予測モード６４と残差エラー属性６６の両方のデルタ値を含むことができる。
【００６２】
図６について説明する。判断ブロック１３２で、適応ループフィルタ３４は、自身（通常、キーフレームと呼ばれる）を除き、他の何のフレームも参照せずに、現フレームがフレームコード化されたか否か判断する。現フレームがキーフレームである場合には、適応ループフィルタ３４は、ブロック１３４に移動して、参照フレームループフィルタ修飾子をディフォルト値に設定する。そして、判断ブロック１３６で、適応ループフィルタ３４は、予測モードループフィルタ修飾子をディフォルト値に設定する。いったん、この値がディフォルトに設定されると、適応ループフィルタは、判断ブロック１３０に移動して、フレームレベルで、フィルタ条件がイネーブルされたか否か判断する。
【００６３】
現フレームがキーフレームでかつ値がディフォルト値に設定されている場合、または現フレームがキーフレームではない場合、適応ループフィルタ３４が、判断ブロック１３０に移動して、フレームレベルで、フィルタ条件がイネーブルされたか否か判断する。適応ループフィルタ３４は、ビット、バイト、フラグなどによって、ループフィルタ修飾子がイネーブルされたか否か判断できる。
【００６４】
ループフィルタ修飾子が、イネーブルされていない場合（つまり、単一のループフィルタ条件が検出されている）、適応ループフィルタ３４ステージのループフィルタ処理は、現フレームについてスキップできる。換言すれば、単一のループフィルタ強度をフレーム中の全ブロックに適用することができる。単一のループフィルタ強度は、ループフィルタをフレームのどの部分にも適用しないことを含むこともできる。
【００６５】
いったん、現フレームについてループフィルタ処理がスキップすると、適応ループフィルタは、判断ブロック１３０に戻って、ループフィルタ修飾子が、次のフレームに対しイネーブルされているか否か判断する。適応ループフィルタ３４は、残差エラー信号、参照フレームタイプ６２、予測モード６４、またはそれらのある組み合わせの１つ以上の特徴に基づいて、ループフィルタ処理をスキップすることを選択し得る。適応ループフィルタ３４のループフィルタ処理をスキップするその他の然るべき要因も利用可能である。
【００６６】
例えば、変換ステージ１９で、残差マクロブロックのＡＣ成分が存在せず、マクロブロックがヌル動きベクトルでインターコード化されている場合、ループフィルタ処理をスキップできる。このようにして、この場合に、ループフィルタ処理をスキップすることで、動きがない場合、画像領域のいくつかのフレームにわたりループフィルタ処理を繰り返すことを防止する。こうすることで、ぼけが低減され、少ない計算で済み、その必然的結果として、全体的な計算の複雑性を軽減させる。
【００６７】
図６についてなお説明する。ループフィルタ修飾子がイネーブルされた場合、適応ループフィルタ３４が、判断ブロック１３８に移動して、ループフィルタ強度値条件が検出されたか否か判断する。より具体的に言うと、判断ブロック１３８で、適応ループフィルタ３４は、現フレームで符号化されたループフィルタ修飾子が更新されているか否か判断する。適応ループフィルタ３４は、ビット、バイト、およびフラグなどによって、ループフィルタ修飾子が更新されるか否か判断できる。
【００６８】
ループフィルタ修飾子が更新されていない場合、適応ループフィルタ３４は、前のフレームからのプリセットループフィルタ修飾子を用いて、現フレームに適用する。いったん、前の値が適用されると、適応ループフィルタは、判断ブロック１３０に戻って、次のフレームに対して適応ループフィルタ修飾子がイネーブルされているか否か判断する。
【００６９】
ループフィルタ修飾子が更新されている場合、ブロック１４０で、適応ループフィルタは、参照フレームループフィルタ修飾子変更因子のプリセット値を更新する。次に、適応ループフィルタは、判断ブロック１４２に移動して、予測モードループフィルタ修飾子のプリセット値を更新する。いったん、値が更新されると、適応ループフィルタは、判断ブロック１３０に戻って、次のフレームに対してループフィルタ修飾子がイネーブルされているか否か判断する。
【００７０】
図５に戻って説明する。参照フレームループフィルタ修飾子と予測モードループフィルタ修飾子は、フローチャートの分岐点の各々で適用されるデルタ値１〜８であってもよい。詳しく言うと、デルタ値１，３，４，５は、参照フレームタイプ６２に対応する参照フレームループフィルタ修飾子であり、デルタ値２，８は、予測モード６４に対応する予測モードループフィルタ修飾子であり、デルタ値６，７は、残差エラー属性６６に対応する予測モードループフィルタ修飾子である。図６のフローチャートに示す方法を用いて、これらのデルタ値の各々を、適応ループフィルタ３４で更新できる。
【００７１】
図７は、本発明の一実施形態によるループフィルタ処理動画データを更新する方法のフローチャートである。図７は、適応ループフィルタ３４が、現フレームが、キーフレームであるか否か判断していない点を除き、図６のフローチャートと類似している。従って、ループフィルタ修飾子がイネーブルされ、それらのループフィルタ修飾子が更新されている場合、全フレームは、参照フレームループフィルタ修飾子と予測モードループフィルタ修飾子変更因子を更新し得る。
【００７２】
図７の方法のステップを実装する例示的疑似コードを以下の表１に示す。
【００７３】
0005396478.tif 000002
【００７４】
上記の疑似コードは、特定のどのプログラミング言語およびその実装に限定することを意図していない。数々のプログラミング言語とその実装を用いて、ここで説明した本発明の実施形態の教示を実装し得ることを理解するであろう。
【００７５】
図６，７および上記の疑似コードについて説明する。本発明の実施形態は、ビットストリームのオーバヘッド量を減少させる。例えば、ループフィルタ修飾子が、イネーブルされた否かは、１ビットで判断できる。また、例えば、ループフィルタ修飾子の更新がイネーブルされたか否かも、１ビットで判断できる。
【００７６】
本発明の理解を容易にするため、上記の実施形態を説明したが、かつ本発明を限定するものではない。それどころか、本発明は、開示した実施形態に限定されず、それどころか、添付クレームの精神と範囲内に含まれる様々な変更例と等価な構成を網羅することを意図することを理解すべきである。ここで範囲とは、上記の全ての変更例と法により許されている等価な構成を包合するために、最も広い解釈に一致する。
【図１】
0005396478.tif 000003
【図２】
0005396478.tif 000004
【図３】
0005396478.tif 000005
【図４】
0005396478.tif 000006
【図５】
0005396478.tif 000007
【図６】
0005396478.tif 000008
【図７】
0005396478.tif 000009