ビデオ圧縮スキームは、各画像またはフレームをブロックなどのより小さな部分に分割し、出力内の各ブロックに含まれる情報を制限するための技術を使用して出力ビットストリームを生成することを含み得る。いくつかの実装形態では、出力内の各ブロックに含まれる情報は、空間的冗長性を減らしたり、時間的冗長性を減らしたり、またはそれらの組み合わせを用いたりすることによって制限され得る。例えば、時間的冗長性または空間的冗長性は、エンコーダとデコーダの双方に利用可能な情報に基づいてフレームを予測し、予測したフレームと元のフレームとの差または残差を表す情報を含めることで削減され得る。残差情報は、その残差情報を変換係数に変換し、その変換係数を量子化し、その量子化した変換係数をエントロピーコーディングすることによってさらに圧縮され得る。
符号化ビットストリームは、その制限された情報からブロックおよびソース画像を再生成するように復号化することができる。復号化フレームは、量子化によって生じるブロック境界に跨がるブロックノイズアーチファクトなどのアーチファクトを含み得る。このアーチファクトを減らすために、垂直ブロック境界や水平ブロック境界などのブロック境界に沿ってデブロッキングフィルタを使用するなどして、復号化フレームがフィルタリングされ得る。ブロック境界に一致した入力画像からオブジェクトエッジなどのエッジコンテンツを保持するために、フィルタリングは、各ブロック境界をフィルタリングするかどうかを決定し、対応するフィルタリングパラメータを特定するための閾値を特定し得る。1つの閾値セットを使用して垂直ブロック境界と水平ブロック境界の双方をフィルタリングすると、フィルタリングの精度が制限され、符号化品質が低下する場合がある。
デュアルデブロッキングフィルタ閾値を使用したビデオコーディングは、垂直ブロック境界などに沿って第1の方向にフィルタリングするための第1のフィルタ閾値の最適セットを特定するとともに、水平ブロック境界などに沿って第2の方向にフィルタリングするための第2のフィルタ閾値の最適セットを特定することにより、精度および符号化品質を向上させ得る。エンコーダは、垂直ブロック境界をフィルタリングするために特定されたフィルタ閾値のセットに対応するデブロッキング閾値インデックスと、水平ブロックをフィルタリングするために特定されたフィルタ閾値のセットに対応する別のデブロッキング閾値インデックスとを特定し得る。エンコーダは、符号化ビットストリーム内にデブロッキング閾値インデックスを示す情報を含め得る。デコーダは、符号化ビットストリームからデブロッキング閾値インデックスを示す情報を抽出し、対応するフィルタ閾値を特定して、第1の方向における第1のフィルタ閾値のセットと第2の方向における第2のフィルタ閾値のセットとを使用して復号化フレームをデブロッキングし得る。
図1は、本開示の実装形態によるコンピューティングデバイス100の図である。図示されたコンピューティングデバイス100は、メモリ110、プロセッサ120、ユーザインターフェース(UI)130、電子通信ユニット140、センサ150、電源160、およびバス170を含む。本明細書で使用される「コンピューティングデバイス」という用語は、本明細書に開示される任意の方法またはその方法の任意の一部を実行可能な任意のユニットまたはユニットの組み合わせを含む。
コンピューティングデバイス100は、パーソナルコンピュータ(PC)、サーバ、ワークステーション、ミニコンピュータ、またはメインフレームコンピュータなどの固定コンピューティングデバイス、あるいは、携帯電話、携帯情報端末(PDA)、ラップトップ、またはタブレットPCなどのモバイルコンピューティングデバイスとすることができる。なお、単一のユニットとして図示されているが、コンピューティングデバイス100の1つまたは複数の要素を任意の数の個別の物理ユニットに統合することもできる。例えば、UI130およびプロセッサ120を第1の物理ユニットに統合し、メモリ110を第2の物理ユニットに統合することができる。
メモリ110は、例えば、データ112、命令114、オペレーティングシステム116、またはそれらに関連する任意の情報をコンピューティングデバイス100の他のコンポーネントによる使用もしくはそのコンポーネントとの通信のために含む、記憶する、通信する、または転送することができる任意の有形デバイスなどの任意の非一時的なコンピュータ利用またはコンピュータ可読媒体を含むことができる。非一時的なコンピュータ利用またはコンピュータ可読媒体は、例えば、ソリッドステートドライブ、メモリカード、リムーバブルメディア、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ハードディスクやフロッピー(登録商標)ディスクや光ディスクなどの任意のタイプのディスク、磁気もしくは光学カード、特定用途向け集積回路(ASIC)、電子情報の記憶に適した任意のタイプの非一時的なメディア、またはそれらの任意の組み合わせとすることができる。
なお、単一のユニットとして図示されているが、メモリ110は、ランダムアクセスメモリユニットなどの1つまたは複数の一次メモリユニット、ディスクなどの1つまたは複数の二次データ記憶ユニット、またはそれらの組み合わせなどによる複数の物理ユニットを含み得る。例えば、データ112(またはその一部)、命令114(またはその一部)、またはその両方は、二次記憶ユニットに記憶されてもよく、対応するデータ112を処理したり、対応する命令114を実行したり、またはその両方の実行に伴って、一次記憶ユニットにロードもしくは転送されてもよい。いくつかの実装形態では、メモリ110またはその一部は取り外し可能なメモリであってもよい。
データ112は、入力オーディオデータ、符号化オーディオデータ、復号化オーディオデータなどの情報を含むことができる。命令114は、本明細書に開示される任意の方法またはその方法の任意の一部を実行するためのコードなどの命令を含むことができる。命令114は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせで実現することができる。例えば、命令114は、本明細書に記載される方法、アルゴリズム、態様、またはそれらの組み合わせのいずれかを実現するためにプロセッサ120によって実行され得るコンピュータプログラムなどの、メモリ110に記憶される情報として実装され得る。
なお、メモリ110に含まれるものとして図示されているが、いくつかの実装形態では、命令114またはその一部は、本明細書に記載される方法、アルゴリズム、態様、またはそれらの組み合わせのいずれかを実行するための専用ハードウェアを含むことができる専用プロセッサまたは回路として実装され得る。命令114の一部は、同じマシンもしくは異なるマシン上の複数のプロセッサにわたって、あるいはローカルエリアネットワーク、ワイドエリアネットワーク、インターネット、またはそれらの組み合わせなどのネットワークにわたって分散させることができる。
プロセッサ120は、デジタル信号または他の電子情報を取り扱うまたは処理することができる、光学プロセッサ、量子プロセッサ、分子プロセッサ、またはそれらの組み合わせを含む既存のまたは今後開発される任意のデバイスまたはシステムを含むことができる。例えば、プロセッサ120は、特定用途プロセッサ、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ、プログラマブルロジックコントローラ、マイクロコード、ファームウェア、任意のタイプの集積回路(IC)、ステートマシン、またはそれらの組み合わせを含むことができる。本明細書で使用される「プロセッサ」という用語は、単一のプロセッサまたは複数のプロセッサを含む。
UI130は、仮想または物理キーパッド、タッチパッド、ディスプレイ、タッチディスプレイ、スピーカー、マイク、ビデオカメラ、センサ、またはそれらの任意の組み合わせなど、ユーザとのインターフェースが可能な任意のユニットを含むことができる。例えば、UI130を視聴覚ディスプレイデバイスとし、コンピューティングデバイス100が視聴覚ディスプレイデバイスのUI130を用いて、復号化映像などの映像の表示と併せて復号化音声などの音声を提示してもよい。なお、単一のユニットとして図示されているが、UI130が1つまたは複数の物理ユニットを含んでもよい。例えば、UI130は、ユーザとの音声通信を実行するための音声インターフェースと、ユーザとの視覚およびタッチ式の通信を実行するためのタッチディスプレイとを含んでもよい。
電子通信ユニット140は、無線周波数(RF)通信媒体、紫外線(UV)通信媒体、可視光通信媒体、光ファイバー通信媒体、有線通信媒体、またはそれらの組み合わせなどの有線または無線の電子通信媒体180を介して信号を送信、受信、または送受信することができる。例えば、図示されるように、電子通信ユニット140は、無線信号を介して通信するように構成されたアンテナなどの電子通信インターフェース142に動作可能に接続される。
電子通信インターフェース142は、図1では無線アンテナとして示されているが、図示される無線アンテナ、イーサネット(登録商標)ポートなどの有線通信ポート、赤外線ポート、シリアルポート、あるいは、有線または無線の電子通信媒体180とインターフェース可能な任意の他の有線または無線ユニットとすることができる。なお、図1は、単一の電子通信ユニット140および単一の電子通信インターフェース142を示しているが、任意の数の電子通信ユニットおよび任意の数の電子通信インターフェースを使用することができる。
センサ150は、例えば、音声検知装置、可視光検知装置、動き検知装置、またはそれらの組み合わせを含み得る。例えば、センサ150は、マイクなどの音声検知装置、またはコンピューティングデバイス100の近くにおける対話または他の発話などのコンピューティングデバイス100を操作するユーザによって作成された音を検知可能な既存のまたは今後開発される任意の他の音声検知装置を含み得る。別の例では、センサ150は、カメラ、またはコンピューティングデバイスを操作するユーザの画像などの画像を検知可能な既存のまたは今後開発される任意の他の画像検知装置を含み得る。なお、単一のセンサ150が図示されているが、コンピューティングデバイス100は複数のセンサ150を含んでもよい。例えば、コンピューティングデバイス100は、コンピューティングデバイス100のユーザに向かう方向に視野が向けられた第1のカメラと、コンピューティングデバイス100のユーザから離れる方向に視野が向けられた第2のカメラとを含み得る。
電源160は、コンピューティングデバイス100に電力を供給するための任意の適切なデバイスとすることができる。例えば、電源160としては、有線の外部電源インターフェース、ニッケルカドミウム(NiCd)やニッケル亜鉛(NiZn)やニッケル水素(NiMH)やリチウムイオン(Li−ion)などの1つまたは複数の乾電池、太陽電池、燃料電池、またはコンピューティングデバイス100に電力を供給可能な任意の他のデバイスが挙げられる。なお、図1では単一の電源160が示されているが、コンピューティングデバイス100は複数の電源160、例えばバッテリと有線の外部電源インターフェースとを含んでもよい。
また、図では別々のユニットとして示されているが、電子通信ユニット140、電子通信インターフェース142、UI130、電源160、またはそれらの一部が、一つの複合ユニットとして構成されてもよい。例えば、電子通信ユニット140、電子通信インターフェース142、UI130、および電源160は、外部ディスプレイデバイスとインターフェースして、通信、電力、またはその両方を提供することができる通信ポートとして実装されてもよい。
メモリ110、プロセッサ120、UI130、電子通信ユニット140、センサ150、または電源160のうちの1つ以上は、バス170を介して動作可能に結合され得る。なお、図1では単一のバス170が示されているが、コンピューティングデバイス100は複数のバスを含んでもよい。例えば、メモリ110、プロセッサ120、UI130、電子通信ユニット140、センサ150、およびバス170は、バス170を介して電源160から電力を受け取り得る。別の例では、メモリ110、プロセッサ120、UI130、電子通信ユニット140、センサ150、電源160、またはそれらの組み合わせは、バス170を介して電子信号を送受信するなどして、データを通信し得る。
図1には別途に示されていないが、プロセッサ120、UI130、電子通信ユニット140、センサ150、または電源160のうちの1つ以上は、内部バッファまたはレジスタなどの内部メモリを含んでもよい。例えば、プロセッサ120は、内部メモリ(図示略)を含み、処理のためにメモリ110から内部メモリ(図示略)にデータ112を読み込んでもよい。
別々の要素として図示されているが、メモリ110、プロセッサ120、UI130、電子通信ユニット140、センサ150、電源160、バス170、またはそれらの任意の組み合わせは、1つまたは複数の電子ユニット、回路、またはチップに統合することができる。
図2は、本開示の実装形態によるコンピューティングおよび通信システム200の図である。図示されるコンピューティングおよび通信システム200は、コンピューティングおよび通信デバイス100A,100B,100Cと、アクセスポイント210A,210Bと、ネットワーク220とを含む。例えば、コンピューティングおよび通信システム200は、音声、オーディオ、データ、ビデオ、メッセージング、ブロードキャスト、またはそれらの組み合わせなどの通信を、コンピューティングおよび通信デバイス100A,100B,100Cなどの1つまたは複数の有線または無線通信デバイスに提供する多元接続システムとすることができる。なお、簡略化のために、図2では3つのコンピューティングおよび通信デバイス100A,100B,100Cと、2つのアクセスポイント210A,210Bと、1つのネットワーク220とを示しているが、任意の数のコンピューティングおよび通信デバイスと、アクセスポイントと、ネットワークを使用することができる。
コンピューティングおよび通信デバイス100A,100B,100Cは、例えば、図1に示されたコンピューティングデバイス100などのコンピューティングデバイスとすることができる。例えば、コンピューティングおよび通信デバイス100A,100Bを、モバイルコンピューティングデバイス、ラップトップ、シンクライアント、またはスマートフォンなどのユーザデバイスとし、コンピューティングおよび通信デバイス100Cを、メインフレームまたはクラスタなどのサーバとすることができる。なお、コンピューティングおよび通信デバイス100A,100Bをユーザデバイスとし、コンピューティングおよび通信デバイス100Cをサーバとして説明するが、任意のコンピューティングおよび通信デバイスがサーバの機能の一部またはすべてを実行してもよいし、ユーザデバイスの機能の一部またはすべてを実行してもよいし、あるいはサーバとユーザデバイスの機能の一部またはすべてを実行してもよい。例えば、サーバとしてのコンピューティングおよび通信デバイス100Cが、オーディオデータを受信し、符号化し、処理し、記憶し、送信し、またはそれらの組み合わせを実行してもよく、コンピューティングおよび通信デバイス100A,100Bのうちの一方または両方が、オーディオデータを受信し、復号化し、処理し、記憶し、提示し、またはそれらの組み合わせを実行してもよい。
各コンピューティングおよび通信デバイス100A,100B,100Cとしては、ユーザ機器(UE)、移動局、固定またはモバイル加入者ユニット、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、サーバ、家庭用電化製品、または任意の類似のデバイスなどを挙げることができ、これらは、ネットワーク220などを介して有線または無線通信を実行するように構成することができる。例えば、コンピューティングおよび通信デバイス100A,100B,100Cは、有線または無線の通信信号を送信または受信するように構成することができる。なお、各コンピューティングおよび通信デバイス100A,100B,100Cは単一のユニットとして図示されているが、コンピューティングおよび通信デバイスは任意の数の相互接続される要素を含むことができる。
各アクセスポイント210A,210Bは、有線または無線通信リンク180A,180B,180Cを介して、コンピューティングおよび通信デバイス100A,100B,100Cか、ネットワーク220か、またはそれらの両方と通信するように構成された任意のタイプのデバイスとすることができる。例えば、アクセスポイント210A,210Bとしては、基地局、基地トランシーバ局(BTS)、ノードB、拡張ノードB(eノードB)、ホームノードB(HノードB)、無線ルータ、有線ルータ、ハブ、リレー、スイッチ、または任意の類似の有線または無線デバイスなどを挙げることができる。なお、各アクセスポイント210A,210Bは単一のユニットとして図示されているが、アクセスポイントは任意の数の相互接続される要素を含むことができる。
ネットワーク220は、音声、データ、アプリケーション、ボイスオーバーインターネットプロトコル(VoIP)、あるいは、有線または無線通信リンクを介した任意の他の通信プロトコルもしくは通信プロトコルの組み合わせなどのサービスを提供するように構成された任意のタイプのネットワークとすることができる。例えば、ネットワーク220は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、モバイルもしくはセルラー電話ネットワーク、インターネット、または任意の他の電子通信手段とすることができる。ネットワークは、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、インターネットプロトコル(IP)、リアルタイムトランスポートプロトコル(RTP)、ハイパーテキストトランスポートプロトコル(HTTP)、またはそれらの組み合わせなどの通信プロトコルを使用することができる。
コンピューティングおよび通信デバイス100A,100B,100Cは、有線または無線通信リンクの1つ以上を使用するか、もしくは有線および無線通信リンクの組み合わせを介したネットワーク220を通じて互いに通信することができる。例えば、図示されるように、コンピューティングおよび通信デバイス100A,100Bは無線通信リンク180A,180Bを介して通信することができ、コンピューティングおよび通信デバイス100Cは有線通信リンク180Cを介して通信することができる。コンピューティングおよび通信デバイス100A,100B,100Cのいずれも、1つまたは複数の任意の有線または無線通信リンクを使用して通信することができる。例えば、第1のコンピューティングおよび通信デバイス100Aは、第1のタイプの通信リンクを使用して第1のアクセスポイント210Aを介して通信することができ、第2のコンピューティングおよび通信デバイス100Bは、第2のタイプの通信リンクを使用して第2のアクセスポイント210Bを介して通信することができ、第3のコンピューティングおよび通信デバイス100Cは、第3のタイプの通信リンクを使用して第3のアクセスポイント(図示略)を介して通信することができる。同様に、アクセスポイント210A,210Bは、1つまたは複数のタイプの有線または無線通信リンク230A,230Bを介してネットワーク220と通信することができる。なお、図2では、ネットワーク220を介して通信するコンピューティングおよび通信デバイス100A,100B,100Cを示しているが、コンピューティングおよび通信デバイス100A,100B,100Cは、直接有線または無線通信リンクなどの任意の数の通信リンクを介して互いに通信することができる。
いくつかの実装形態では、コンピューティングおよび通信デバイス100A,100B,100Cのうちの1つまたは複数の間の通信が、ネットワーク220を介した通信を省略し、データ記憶装置などの別の媒体(図示略)を介したデータの転送を含んでもよい。例えば、サーバとしてのコンピューティングおよび通信デバイス100Cが符号化オーディオデータなどのオーディオデータをポータブルデータ記憶ユニットなどのデータ記憶装置に記憶し、コンピューティングおよび通信デバイス100A,100Bのうちの一方または両方が、そのデータ記憶装置をコンピューティングおよび通信デバイス100Cから物理的に切断しコンピューティングおよび通信デバイス100A,100Bのうちの一方に物理的に接続するなどして、データ記憶装置の記憶されたオーディオデータにアクセスしてそのオーディオデータをデータ記憶装置から読み込むまたは取得することができる。
コンピューティングおよび通信システム200の他の実装形態も可能である。例えば、一つの実装形態において、ネットワーク220は、アドホックネットワークとすることができ、アクセスポイント210A,210Bのうちの1つ以上を省略することができる。コンピューティングおよび通信システム200は、図2に示されていないデバイス、ユニット、または要素を含んでもよい。例えば、コンピューティングおよび通信システム200は、より多くの通信デバイス、ネットワーク、およびアクセスポイントを含んでもよい。
図3は、本開示の実装形態による符号化および復号化で使用するためのビデオストリーム300の図である。ビデオカメラによってキャプチャされたビデオストリームやコンピューティングデバイスによって生成されたビデオストリームなどのビデオストリーム300は、ビデオシーケンス310を含み得る。ビデオシーケンス310は、隣接フレーム320のシーケンスを含み得る。なお、3つの隣接するフレーム320が図示されているが、ビデオシーケンス310は、任意の数の隣接フレーム320を含むことができる。
隣接フレーム320内の各フレーム330は、ビデオストリーム内の単一の画像を表し得る。なお、図3には示されていないが、フレーム330は1つまたは複数のセグメント、タイル、またはプレーンを含んでもよく、これらは、並列的などのように個別にコーディングまたは処理されてもよい。フレーム330は複数のブロック340を含み得る。なお、図3には示されていないが、ブロックは複数のピクセルを含むことができる。例えば、ブロックは、16×16のピクセル群、8×8のピクセル群、8×16のピクセル群、または任意の他のピクセル群を含むことができる。本明細書で特に明記しない限り、「ブロック」という用語は、スーパーブロック、マクロブロック、セグメント、スライス、または任意の他のフレーム部分を含むことができる。フレーム、ブロック、ピクセル、またはそれらの組み合わせは、輝度情報、クロミナンス情報、あるいはビデオストリーム(またはその一部)を記憶し変更し通信しまたは表示するのに使用可能な任意の他の情報などの表示情報を含むことができる。
図4は、本開示の実装形態によるエンコーダ400のブロック図である。エンコーダ400は、図1に示されたコンピューティングデバイス100または図2に示されたコンピューティングおよび通信デバイス100A,100B,100Cなどのデバイスにおいて、例えば、図1に示されたメモリ110などのデータ記憶ユニットに記憶されるコンピュータソフトウェアプログラムとして実装可能である。コンピュータソフトウェアプログラムは、図1に示されたプロセッサ120などのプロセッサによって実行され得る機械命令を含むことができ、本明細書に記載されるようなビデオデータの符号化をデバイスに実行させ得る。エンコーダ400は、例えばコンピューティングデバイス100に含まれる専用ハードウェアとして実装することもできる。
エンコーダ400は、図3に示されたビデオストリーム300などのビデオストリーム402を符号化して符号化(圧縮)ビットストリーム404を生成することができる。いくつかの実装形態では、エンコーダ400は、圧縮ビットストリーム404を生成するための順方向経路を含み得る。順方向経路は、イントラ/インター予測ユニット410、変換ユニット420、量子化ユニット430、エントロピー符号化ユニット440、またはそれらの任意の組み合わせを含むことができる。いくつかの実装形態では、エンコーダ400は、さらなるブロックの符号化のためにフレームを再構成するための(破線の接続線によって示される)再構成経路を含み得る。再構成経路は、逆量子化ユニット450、逆変換ユニット460、再構成ユニット470、フィルタリングユニット480、またはそれらの任意の組み合わせを含み得る。なお、ビデオストリーム402を符号化するためにエンコーダ400の他の変形例の構成を使用することもできる。
ビデオストリーム402を符号化するために、ビデオストリーム402内の各フレームはブロック単位で処理することができる。したがって、現在のブロックがフレーム内のブロックから特定され、その現在のブロックが符号化され得る。
イントラ/インター予測ユニット410において、現在のブロックは、単一のフレーム内において行われ得るフレーム内予測か、またはフレームとフレームの間で行われ得るフレーム間予測のいずれかを使用して符号化され得る。イントラ予測は、以前に符号化されて再構成された現在のフレーム内のサンプルから予測ブロックを生成することを含み得る。インター予測は、1つまたは複数の以前に構成された参照フレーム内のサンプルから予測ブロックを生成することを含み得る。現在のフレーム内の現在のブロックの予測ブロックを生成することは、動き推定を実行して、参照フレームの適切な参照部分を示す動きベクトルを生成することを含み得る。
イントラ/インター予測ユニット410は、現在のブロック(生ブロック(raw block))から予測ブロックを減算して残差ブロックを生成してもよい。変換ユニット420は、残差ブロックを例えば周波数領域における変換係数に変換することを含み得るブロックベースの変換を行ってもよい。ブロックベースの変換の例としては、カルーネン・レーベ(Karhunen-Loeve)変換(KLT)、離散コサイン変換(DCT)、特異値分解変換(SVD)、および非対称離散正弦変換(ADST)が挙げられる。一例では、DCTは、ブロックを周波数領域に変換することを含み得る。DCTは、マトリクスの左上に最低周波数(すなわち、DC)係数を有し、マトリクスの右下に最高周波数係数を有する空間周波数に基づいた変換係数値を使用することを含み得る。
量子化ユニット430は、変換係数を量子化変換係数または量子化レベルとも呼ばれ得る離散量子値に変換し得る。エントロピー符号化ユニット440は、量子化変換係数をエントロピー符号化することでエントロピー符号化係数を生成することができる。エントロピー符号化は確率分布メトリックを使用することを含み得る。エントロピー符号化係数およびブロックの復号に使用される情報(使用される予測のタイプ、動きベクトル、および量子化値を含み得る)は圧縮ビットストリーム404に出力され得る。圧縮ビットストリーム404は、ランレングス符号化(run-length encoding(RLE))およびゼロラン符号化(zero-run conding)などの様々な技術を使用してフォーマットすることができる。
再構成経路は、エンコーダ400と、図5に示されたデコーダ500などの対応するデコーダとの間の参照フレーム同期を維持するために使用することができる。再構成経路は、以下で説明する復号化プロセスと同様とすることができ、符号化フレームまたはその一部を復号化することを含み得る。この復号化は、符号化ブロックを復号化することを含み得るものであり、逆量子化ユニット450で量子化変換係数を逆量子化し、逆変換ユニット460で逆量子化変換係数を逆変換して、微分残差ブロックを生成することを含み得る。再構成ユニット470は、イントラ/インター予測ユニット410によって生成された予測ブロックを微分残差ブロックに追加して復号化ブロックを作成し得る。この復号化ブロックにフィルタリングユニット480が適用されることで、ブロックノイズアーチファクトなどの歪みを低減し得る再構成ブロックを生成することができる。なお、図4には1つのフィルタリングユニット480が示されているが、復号化ブロックのフィルタリングは、ループフィルタリング、デブロッキングフィルタリング、他のタイプのフィルタリング、または複数のタイプのフィルタリングの組み合わせを含み得る。再構成ブロックは、482の破線で示されるように、現在のフレームの別の部分、別のフレーム、またはその両方を符号化するために、参照フレームの一部であり得る再構成ブロックとして記憶またはアクセス可能とされ得る。フレームのデブロッキング閾値インデックス値などのコーディング情報は、484の破線で示されるように、符号化されるか、圧縮ビットストリーム404に含まれるか、またはその両方とされ得る。
圧縮ビットストリーム404を符号化するためにエンコーダ400の他の変形例を使用することもできる。例えば、非変換ベースのエンコーダ400は、変換ユニット420を用いることなく残差ブロックを直接量子化することができる。いくつかの実装形態では、量子化ユニット430および逆量子化ユニット450は、単一のユニットに統合され得る。
図5は、本開示の実装形態によるデコーダ500のブロック図である。デコーダ500は、図1に示されたコンピューティングデバイス100または図2に示されたコンピューティングおよび通信デバイス100A,100B,100Cなどのデバイスにおいて、例えば、図1に示されたメモリ110などのデータ記憶ユニットに記憶されるコンピュータソフトウェアプログラムとして実装可能である。コンピュータソフトウェアプログラムは、図1に示されたプロセッサ120などのプロセッサによって実行され得る機械命令を含むことができ、本明細書に記載されるようなビデオデータの符号化をデバイスに実行させ得る。デコーダ500は、例えばコンピューティングデバイス100に含まれる専用ハードウェアとして実装することもできる。
デコーダ500は、図4に示された圧縮ビットストリーム404などの圧縮ビットストリーム502を受信し、その圧縮ビットストリーム502を復号化して出力ビデオストリーム504を生成し得る。デコーダ500は、エントロピー復号化ユニット510、逆量子化ユニット520、逆変換ユニット530、イントラ/インター予測ユニット540、再構成ユニット550、フィルタリングユニット560、またはそれらの任意の組み合わせを含み得る。なお、圧縮ビットストリーム420を復号化するためにデコーダ500の他の変形例の構成を使用することもできる。
エントロピー復号化ユニット510は、例えば、コンテキスト適応バイナリ算術復号化(Context Adaptive Binary Arithmetic Decoding)を使用して圧縮ビットストリーム502内のデータ要素を復号化することで、量子化変換係数のセットを生成し得る。逆量子化ユニット520は量子化変換係数を逆量子化することができ、逆変換ユニット530は逆量子化変換係数を逆変換することで、図4に示された逆変換ユニット460によって生成される微分残差ブロックに対応し得る微分残差ブロックを生成することができる。イントラ/インター予測ユニット540は、圧縮ビットストリーム502からの復号化されたヘッダ情報を使用して、エンコーダ400で作成された予測ブロックに対応する予測ブロックを生成し得る。その予測ブロックが再構成ユニット550において微分残差ブロックに加えられることで復号化ブロックが生成される。この復号化ブロックにフィルタリングユニット560が適用されることでブロックノイズアーチファクトなどのアーチファクトを低減することができる。このフィルタリングユニット560は、ループフィルタリング、デブロッキングフィルタリング、他のタイプのフィルタリング、または複数のタイプのフィルタリングの組み合わせを含み得るものであり、出力ビデオストリーム504として出力され得る再構成ブロックを生成することを含み得る。
圧縮ビットストリーム420を復号化するためにデコーダ500の他の変形例を使用することもできる。例えば、デコーダ500は、フィルタリングユニット560を用いることなく出力ビデオストリーム504を生成することができる。
図6は、本開示の実装形態による、図3に示されたフレーム330などのフレームの一部600の表現のブロック図である。図示されるように、フレームの一部600は、マトリクス内またはデカルト平面に2行2列の4つの64×64ブロック610を含む。いくつかの実装形態では、1つの64×64ブロックは最大コーディング単位のN=64であり得る。各64×64ブロックは、4つの32×32ブロック620を含み得る。各32×32ブロックは、4つの16×16ブロック630を含み得る。各16×16ブロックは、4つの8×8ブロック640を含み得る。各8×8ブロック640は、4つの4×4ブロック650を含み得る。各4×4ブロック650は、このデカルト平面またはマトリクス内の対応するブロック内において4行4列で表され得る16個のピクセルを含み得る。ピクセルは、輝度情報、色情報、位置情報など、フレーム内でキャプチャされた画像を表す情報を含み得る。いくつかの実装形態では、図示されるような16×16ピクセルブロックなどのブロックは、輝度ピクセル662を含み得る輝度ブロック660と、UまたはCbクロミナンスブロック670やVまたはCrクロミナンスブロック680などの2つのクロミナンスブロック670,680とを含み得る。クロミナンスブロック670,680はクロミナンスピクセル690を含み得る。例えば、輝度ブロック660が16×16個の輝度ピクセル662を含み得るとともに、各クロミナンスブロック670,680が図示されるように8×8個のクロミナンスピクセル690を含み得る。なお、ブロックの一つの配置が図示されているが、任意の配置を使用することができる。図6はN×Nブロックを示すが、いくつかの実装形態ではN×Mブロックを使用することができる。例えば、32×64ブロック、64×32ブロック、16×32ブロック、32×16ブロック、または他のサイズのブロックが使用されてもよい。いくつかの実装形態では、N×2Nブロック、2N×Nブロック、またはそれらの組み合わせが使用されてもよい。
いくつかの実装形態において、ビデオコーディングは、順序付け式(ordered)ブロックレベルコーディングを含み得る。順序付け式ブロックレベルコーディングは、ラスタスキャン順序などの順序でフレームのブロックをコーディングすることを含み得る。ラスタスキャン順序では、フレームの左上隅(またはフレームの一部分)のブロックからブロックの特定および処理を開始し、左から右に行に沿って、および上の行から下の行に沿って進み、各ブロックを順番に処理して特定する。例えば、フレームの左上の行列の64×64ブロックがコーディングされる最初のブロックとされ得るとともに、この最初のブロックのすぐ右の64×64ブロックがコーディングされる2番目のブロックとされ得る。そして、上から2行目がコーディングされる2行目とされ、この2行目の左側の列の64×64ブロックが1行目の最も右側の列の64×64ブロックの後にコーディングされ得るものとなる。
いくつかの実装形態では、ブロックのコーディングは、ラスタスキャン順序でブロック内のより小さなブロック単位をコーディングすることを含み得るクアッドツリー(quad-tree)コーディングを使用することを含み得る。例えば、図6に示されたフレームの部分の左下隅に示される64×64ブロックがクアッドツリーコーディングを用いてコーディングされ得る場合、左上の32×32ブロックがコーディングされ、次に右上の32×32ブロックがコーディングされ、次に左下の32×32ブロックがコーディングされ、次に右下の32×32ブロックがコーディングされ得る。各32×32ブロックがクアッドツリーコーディングを用いてコーディングされ得る場合、左上の16×16ブロックがコーディングされ、次に右上の16×16ブロックがコーディングされ、次に左下の16×16ブロックがコーディングされ、次に右下の16×16ブロックがコーディングされ得る。各16×16ブロックがクアッドツリーコーディングを用いてコーディングされ得る場合、左上の8×8ブロックがコーディングされ、次に右上の8×8ブロックがコーディングされ、次に左下の8×8ブロックがコーディングされ、次に右下の8×8ブロックがコーディングされ得る。各8×8ブロックがクアッドツリーコーディングを用いてコーディングされ得る場合、左上の4×4ブロックがコーディングされ、次に右上の4×4ブロックがコーディングされ、次に左下の4×4ブロックがコーディングされ、次に右下の4×4ブロックがコーディングされ得る。いくつかの実装形態では、16×16ブロックに対して8×8ブロックが省略されてもよく、16×16ブロックがクアッドツリーコーディングを用いてコーディングされ得る場合に、左上の4×4ブロックがコーディングされた後、この16×16ブロック内の他の4×4ブロックがラスタスキャン順にコーディングされてもよい。
いくつかの実装形態において、ビデオコーディングは、例えば、対応する符号化フレームから元のフレームの情報の一部を省略することにより、元のフレーム(または入力フレーム)に含まれる情報を圧縮することを含み得る。例えば、コーディングは、スペクトル冗長性を低減すること、空間冗長性を低減すること、時間冗長性を低減すること、またはそれらの組み合わせを含み得る。
いくつかの実装形態において、スペクトル冗長性を低減することは、YUVまたはYCbCrカラーモデルあるいはカラースペースと呼ばれ得る、輝度成分(Y)と2つのクロミナンス成分(UとVまたはCbとCr)とに基づくカラーモデルを使用することを含み得る。YUVカラーモデルを使用することは、比較的大量の情報を使用してフレームの一部分の輝度成分を表すこと、および比較的少量の情報を使用してそのフレームの部分の各対応するクロミナンス成分を表すことを含み得る。例えば、フレームの一部分は、16×16ブロックのピクセルを含み得る高解像度の輝度成分と、各々そのフレームの部分を8×8ブロックのピクセルとして表す2つの低解像度のクロミナンス成分とによって表され得る。ピクセルは、ある値、例えば0〜255の範囲内の値を示し得るとともに、例えば8ビットを使用して記憶または送信され得る。なお、この開示はYUVカラーモデルに関して説明されているが、任意のカラーモデルが使用されてもよい。
いくつかの実装形態において、空間的冗長性を低減することは、例えば、離散コサイン変換(DCT)を使用してブロックを周波数領域に変換することを含み得る。例えば、図4に示された変換ユニット420などのエンコーダのユニットが、空間周波数に基づく変換係数値を使用してDCTを実行し得る。
いくつかの実装形態において、時間的冗長性を低減することは、フレーム間の類似性を使用して、以前に符号化され復号化され再構成されたビデオストリームのフレームであり得る1つまたは複数の参照フレームに基づいて比較的少量のデータを使用してフレームをエンコードすることを含み得る。例えば、現在のフレームのブロックまたはピクセルは、参照フレームの空間的に対応するブロックまたはピクセルに類似し得る。いくつかの実装形態では、現在のフレームのブロックまたはピクセルは、異なる空間位置における参照フレームのブロックまたはピクセルに類似し、時間的冗長性を低減することは、現在のフレーム内のブロックまたはピクセルの位置と参照フレーム内のブロックまたはピクセルの対応する位置との間の空間差または移動を示す動き情報を生成することを含み得る。
いくつかの実装形態において、時間的冗長性を低減することは、現在のフレームの現在のブロックまたはピクセルに対応する参照フレームの一部を特定することを含み得る。例えば、現在のフレームの現在のブロックまたはピクセルを最大限の効率で符号化するために使用する予測子を生成するための部分を特定するために、メモリに記憶されている参照フレームまたは参照フレームの一部が検索され得る。例えば、この検索は、現在のブロックと参照フレームの一部に基づいて生成された予測ブロックとの間のピクセル値の差が最小化される当該参照フレームの一部を特定し得るものであり、動き検索と呼ばれ得る。いくつかの実装形態では、検索される参照フレームの部分が制限され得る。例えば、検索される参照フレームの部分(検索エリアと呼ばれ得る)は参照フレームの制限された数の行を含み得る。一例では、予測子を生成するための参照フレームの部分を特定することは、検索エリアの部分のピクセルと現在のブロックのピクセルとの間の差分絶対値和(SAD)などのコスト関数(cost function)を計算することを含み得る。
いくつかの実装形態では、参照フレーム内において予測子を生成するための参照フレームの部分の位置と現在のフレーム内の現在のブロックとの間の空間差は、動きベクトルとして表され得る。予測ブロックと現在のブロックとの間のピクセル値の差は、差分データ、残差データ、予測誤差、または残差ブロックと呼ばれ得る。いくつかの実装形態では、動きベクトルの生成は動き推定と呼ばれ得るものであり、現在のブロックのピクセルはfx,yによるデカルト座標を使用した位置に基づいて示され得る。同様に、参照フレームの検索エリアのピクセルは、rx,yによるデカルト座標を使用した位置に基づいて示され得る。現在のブロックの動きベクトル(MV)は、例えば、現在のフレームのピクセルと参照フレームの対応するピクセルとの間のSADに基づいて決定され得る。
なお、本明細書では明瞭化のためにフレームのマトリクスまたはデカルト表現を参照して説明されているが、フレームは、フレームまたは画像のピクセル値を効率的に表すことができるように任意のデータ構造で記憶され、送信され、処理され、またはそれらの任意の組み合わせが取られ得る。例えば、フレームは、図示されるようなマトリクスなどの二次元データ構造かまたはベクトル配列などの一次元データ構造で記憶され、送信され、処理され、またはそれらの任意の組み合わせが取られ得る。一実装形態では、図示されるような二次元表現などのフレームの表現は、フレームを画像としてレンダリングする際の物理的位置に対応し得る。例えば、フレームの左上隅にあるブロックの左上隅の位置は、フレームを画像としてレンダリングする際の左上隅の物理的位置に対応し得る。
いくつかの実装形態では、ブロックベースのコーディング効率は、予測コーディングのために、入力ブロックを矩形状(正方形を含む)のパーティションであり得る1つまたは複数の予測パーティションに分割することによって改善され得る。いくつかの実装形態では、予測分割を使用するビデオコーディングは、複数の候補予測分割スキームの中から1つの予測分割スキームを選択することを含み得る。例えば、いくつかの実装形態では、64×64コーディングユニットの候補予測分割スキームは、4×4,4×8,8×4,8×8,8×16,16×8,16×16,16×32,32×16,32×32,32×64,64×32,または64×64などの、4×4から64×64までのサイズの範囲内において矩形状サイズの予測パーティションを含み得る。いくつかの実装形態では、予測分割を使用するビデオコーディングは、予測パーティション全検索を含み得る。予測パーティション全検索は、それぞれ利用可能な候補予測分割スキームを使用してコーディングユニットを符号化することによって予測分割スキームを選択すること、および最小レート歪みエラーを生成するスキームなどの最適なスキームを選択することを含み得る。
いくつかの実装形態において、ビデオフレームの符号化は、ブロック610などの現在のブロックを符号化するために予測分割スキームを特定することを含み得る。いくつかの実装形態では、予測分割スキームを特定することは、ブロックを図示されるような64×64であり得る最大コーディングユニットサイズの単一の予測パーティションとして符号化するかどうか、または、ブロックを図示されるような32×32ブロック620、16×16ブロック630、または8×8ブロック640などのサブブロックに対応し得る複数の予測パーティションに分割するかどうかを判定することを含み得るとともに、1つまたは複数のより小さな予測パーティションに分割するかどうかを判定することを含み得る。例えば、64×64ブロックは、4つの32×32予測パーティションに分割され得る。その4つの32×32予測パーティションのうちの3つは、32×32予測パーティションとして符号化され得る一方、4つ目の32×32予測パーティションは、4つの16×16予測パーティションにさらに分割され得る。その4つの16×16予測パーティションのうちの3つは、16×16予測パーティションとして符号化され得る一方、4つ目の16×16予測パーティションは、4つの8×8予測パーティションにさらに分割され得るものとなり、その各々が8×8予測パーティションとして符号化され得る。いくつかの実装形態では、予測分割スキームを特定することは、予測分割決定ツリーを使用することを含み得る。
いくつかの実装形態において、現在のブロックのビデオコーディングは、複数の候補予測コーディングモードから最適な予測コーディングモードを特定することを含み得る。これにより、様々な統計特性を持つビデオ信号の処理に柔軟性がもたられ、圧縮効率が向上され得る。例えば、ビデオコーダは、各候補予測コーディングモードを評価して、例えば、現在のブロックに対してレート歪みコストなどのエラーメトリックを最小化する予測コーディングモードであり得る最適な予測コーディングモードを特定し得る。いくつかの実装形態では、現在のブロックと対応する予測ブロックとの間の類似性に基づいて利用可能な候補予測コーディングモードのセットを制限することにより、候補予測コーディングモードの検索の複雑さが低減され得る。いくつかの実装形態では、各候補予測コーディングモードの検索の複雑さは指向性改良モード検索(directed refinement mode search)を実行することによって低減され得る。例えば、16×16,8×8,4×4などの候補ブロックサイズの限られたセットに対してメトリックが生成されてもよく、各ブロックサイズに関連付けられるエラーメトリックは降順とされてもよく、4×8や8×4ブロックサイズなど追加の候補ブロックサイズが評価されてもよい。
いくつかの実装形態では、ブロックベースのコーディング効率は、変換コーディングのために、現在の残差ブロックを矩形状(正方形を含む)のパーティションであり得る1つまたは複数の変換パーティションに分割することによって改善され得る。いくつかの実装形態では、変換分割を使用するビデオコーディングは、均一変換分割スキームを選択することを含み得る。例えば、ブロック610などの現在の残差ブロックは、64×64ブロックであり得るとともに、64×64変換を使用して分割することなく変換され得る。
図6には明示的に示されていないが、残差ブロックは、均一変換分割スキームを使用して変換分割され得る。例えば、64×64残差ブロックは、4個の32×32変換ブロックを含む均一変換分割スキームを使用するか、16個の16×16変換ブロックを含む均一変換分割スキームを使用するか、64個の8×8変換ブロックを含む均一変換分割スキームを使用するか、または256個の4×4変換ブロックを含む均一変換分割スキームを使用して変換分割され得る。
いくつかの実装形態では、変換分割を使用するビデオコーディングは、マルチフォーム変換パーティションコーディングを使用して残差ブロックの複数の変換ブロックサイズを特定することを含み得る。いくつかの実装形態では、マルチフォーム変換パーティションコーディングは、現在のブロックサイズ変換を使用して現在のブロックを変換するのか、それとも現在のブロックを分割して各パーティションをマルチフォーム変換パーティションコーディングすることによって現在のブロックを変換するのかを再帰的に判定することを含み得る。例えば、図6に示される左下のブロック610が64×64残差ブロックであり得る場合、マルチフォーム変換パーティションコーディングは、64×64変換を使用して現在の64×64残差ブロックをコーディングするのか、それともその64×64残差ブロックを4つの32×32ブロック620などの複数のパーティションに分割して各パーティションをマルチフォーム変換パーティションコーディングすることによってその64×64残差ブロックをコーディングするのかを判定することを含み得る。いくつかの実装形態では、現在のブロックを変換分割するかどうかの判定は、現在のブロックサイズ変換を使用して現在のブロックを符号化する場合のコストを、パーティションサイズ変換を使用して各パーティションを符号化する場合のコストの合計と比較することに基づき得る。
図7は、本開示の実装形態によるブロック境界を含む入力フレームの一部分の例を示す。入力フレームの部分700は、左上に第1のブロック710、右上に第2のブロック720、左下に第3のブロック730、右下に第4のブロック740を含む。この入力フレームの部分700は、第1のブロック710と第2のブロック720との間の垂直ブロック境界である第1のブロック境界750と、第1のブロック710と第3のブロック730との間の水平ブロック境界である第2のブロック境界760と、第3のブロック730と第4のブロック740との間の垂直ブロック境界である第3のブロック境界770と、第2のブロック720と第4のブロック740との間の水平ブロック境界である第4のブロック境界780とを含む。
第1のブロック710および第2のブロック720は、フレームによってキャプチャされた第1のオブジェクトまたは視覚要素に対応するコンテンツを含むことを示す点描の背景で示されている。第3のブロック730および第4のブロック740は、フレームによってキャプチャされた第2のオブジェクトまたは視覚要素に対応するコンテンツを含むことを示す白色の背景で示されている。フレームによってキャプチャされた第1のオブジェクトと第2のオブジェクトとの間のエッジは、第2のブロック境界760と第4のブロック境界780に対応し、790の太い破線で示されている。
なお、図7には明示的に示されていないが、各ブロック710,720,730,740はピクセルを含み得る。例えば、各ブロック710,720,730,740は、8×8ピクセルブロックであり得る。
図4に関連して説明した符号化などのような画像またはビデオの符号化は、量子化によって生じるブロック境界に沿った歪みであり得るブロックノイズアーチファクトなどのアーチファクトまたは歪みをもたらし得る。例えば、図7に示された入力フレームの部分700の符号化は、図8に示された再構成画像部分に示されるようなブロックノイズアーチファクトをもたらし得る。
図8は、本開示の実装形態によるブロックアーチファクトを含む再構成フレームの一部分の例を示す。図8に示された再構成フレームの部分800は、この図8に示された再構成フレームの部分800がブロックノイズアーチファクトを含むという点を除いて、図7に示された入力フレームの部分700に対応し得る。
図8は、左上に第1のブロック810、右上に第2のブロック820、左下に第3のブロック830、右下に第4のブロック840を含むとともに、第1のブロック810と第2のブロック820との間の垂直ブロック境界である第1のブロック境界850と、第1のブロック810と第3のブロック830との間の水平ブロック境界である第2のブロック境界860と、第3のブロック830と第4のブロック840との間の垂直ブロック境界である第3のブロック境界870と、第2のブロック820と第4のブロック840との間の水平ブロック境界である第4のブロック境界880とを含む。
図8に示された第1のブロック810は、この図8に示された第1のブロック810が濃い点描を用いて示されるブロックノイズ量子化エラーを示すという点を除いて、図7に示された第1のブロック710に対応する。図8に示された第2のブロック820は、図7に示された第2のブロック720に対応する。図8に示された第3のブロック830は、図7に示された第3のブロック730に対応する。図8に示された第4のブロック840は、この図8に示された第4のブロック840が薄い点描を用いて示されるブロックノイズ量子化エラーを示すという点を除いて、図7に示された第4のブロック740に対応する。
図7に関連して説明したオブジェクトと同様、図8に示された第1のブロック810および第2のブロック820は、フレームによってキャプチャされた第1のオブジェクトまたは視覚要素に対応するコンテンツを含み、図8に示された第3のブロック830および第4のブロック840は、フレームによってキャプチャされた第2のオブジェクトまたは視覚要素に対応するコンテンツを含む。フレームによってキャプチャされた第1のオブジェクトと第2のオブジェクトとの間のエッジは、第2のブロック境界860と第4のブロック境界880に対応し、890の太い破線で示されている。
なお、図8には明示的に示されていないが、各ブロック810,820,830,840はピクセルを含み得る。例えば、各ブロック810,820,830,840は、8×8ピクセルブロックであり得る。
図8に示された再構成フレームの部分800のデブロッキングは、第1のブロック境界850に沿ったブロックノイズアーチファクトや第3のブロック境界870に沿ったブロックノイズアーチファクトなどのブロック境界に沿ったブロックノイズアーチファクトを低減または最小化すること、および、第2のブロック境界860および第4のブロック境界880に沿ったオブジェクトエッジ890を維持または最小限の境界曖昧さとすることを含み、ブロックノイズアーチファクトに対応するブロック間の差と、オブジェクトエッジに対応するブロック間の差とを区別することを含み得る。
図9は、本開示の実装形態によるピクセルの行にピクセル粒度(pixel granularity)を有するブロックアーチファクトを含む再構成フレームの一部分の例を示す。図9に示された再構成フレームの部分900は、この図9に示された再構成フレームの部分900ではピクセルの行にピクセルまたはピクセル位置が明示的に表されており、ブロック境界についての参照は明瞭化のために省略されているという点を除いて、図8に示された再構成フレームの部分800に対応し得る。
図9は、図8に示された第1のブロック810に対応する左上の第1のブロック910と、図8に示された第2のブロック820に対応する右上の第2のブロック920と、図8に示された第3のブロック830に対応する左下の第3のブロック930と、図8に示された第4のブロック840に対応する右下の第4のブロック940とを含む。
現在のブロックであり得る第3のブロック930は、図9において左から右に順に明瞭化のためにc0,c1,c2,c3,c4,c5,c6,c7で表示される、第3のブロック930を水平に横切る行に沿ったピクセルなどのピクセルを含み得る。水平に隣接するブロックなどの隣接ブロックであり得る第4のブロック940は、図9において左から右に順に明瞭化のためにa0,a1,a2,a3,a4,a5,a6,a7で表示される、第4のブロック940を水平に横切る行に沿ったピクセルなどのピクセルを含み得る。
第3のブロック930のデブロッキングは、現在のブロック(第3のブロック930)の行に沿ったピクセルc0,c1,c2,c3,c4,c5,c6,c7および水平方向に隣接するブロック(第4のブロック940)の行に沿ったピクセルa0,a1,a2,a3,a4,a5,a6,a7のうちの1つ以上に基づいて、図8に示された第4のブロック境界880に対応し得る現在のブロック(第3のブロック930)と隣接ブロック(第4のブロック940)のブロック境界に沿った現在のブロック(第3のブロック930)の行のピクセルc0,c1,c2,c3,c4,c5,c6,c7の1つ以上をデブロッキングすることを含み得る。
第2のブロック1020のデブロッキングは、現在のブロック(第2のブロック1020)の列に沿ったピクセルc0,c1,c2,c3,c4,c5,c6,c7および垂直方向に隣接するブロック(第4のブロック1040)の列に沿ったピクセルa0,a1,a2,a3,a4,a5,a6,a7のうちの1つ以上に基づいて、図8に示された第3のブロック境界870に対応し得る現在のブロック(第2のブロック1020)と垂直方向に隣接するブロック(第4のブロック1040)のブロック境界に沿った現在のブロック(第2のブロック1020)の列のピクセルc0,c1,c2,c3,c4,c5,c6,c7の1つ以上をデブロッキングすることを含み得る。
図10は、本開示の実装形態によるピクセルの列にピクセル粒度(pixel granularity)を有するブロックアーチファクトを含む再構成フレームの一部分の例を示す。図10に示された再構成フレームの部分1000は、この図10に示された再構成フレームの部分1000ではピクセルの列にピクセルまたはピクセル位置が明示的に表されており、ブロック境界についての参照は明瞭化のために省略されているという点を除いて、図8に示された再構成フレームの部分800に対応し得る。
図10は、図8に示された第1のブロック810に対応する左上の第1のブロック1010と、図8に示された第2のブロック820に対応する右上の第2のブロック1020と、図8に示された第3のブロック830に対応する左下の第3のブロック1030と、図8に示された第4のブロック840に対応する右下の第4のブロック1040とを含む。
現在のブロックであり得る第2のブロック1020は、図10において上から下に順に明瞭化のためにc0,c1,c2,c3,c4,c5,c6,c7で表示される、第2のブロック1020を垂直に横切る列に沿ったピクセルなどのピクセルを含み得る。垂直に隣接するブロックなどの隣接ブロックであり得る第4のブロック1040は、図10において上から下に順に明瞭化のためにa0,a1,a2,a3,a4,a5,a6,a7で表示される、第4のブロック1040を垂直に横切る列に沿ったピクセルなどのピクセルを含み得る。
第2のブロック1020のデブロッキングは、現在のブロック(第2のブロック1020)の列に沿ったピクセルc0,c1,c2,c3,c4,c5,c6,c7および垂直方向に隣接するブロック(第4のブロック1040)の列に沿ったピクセルa0,a1,a2,a3,a4,a5,a6,a7のうちの1つ以上に基づいて、図8に示された第3のブロック境界870に対応し得る現在のブロック(第2のブロック1020)と垂直方向に隣接するブロック(第4のブロック1040)のブロック境界に沿った現在のブロック(第2のブロック1020)の列のピクセルc0,c1,c2,c3,c4,c5,c6,c7の1つ以上をデブロッキングすることを含み得る。
図11は、本開示の実装形態によるデュアルデブロッキングフィルタ閾値を用いた符号化1100の例のフローチャート図である。デュアルデブロッキングフィルタ閾値を用いた符号化1100は、図4に示されたエンコーダ400などのエンコーダで実行され得る。例えば、図4に示されたエンコーダ400のフィルタリングユニット480が、デュアルデブロッキングフィルタ閾値を用いた符号化1100を実行し得る。
デュアルデブロッキングフィルタ閾値を用いた符号化1100は、1110において入力フレームを特定すること、1120において入力フレームを符号化すること、1130において符号化ビットストリームを出力すること、またはそれらの任意の組み合わせを含み得る。
入力フレームは、1110において特定され得る。例えば、エンコーダは、入力画像かまたは入力ビデオストリームもしくは信号、あるいはその一部を受信またはそれにアクセスし、入力画像かまたは入力ビデオストリームの一部を現在の入力フレームとして特定し得る。
1110で特定された入力フレームは、1120において符号化され得る。1120で入力フレームを符号化することは、1122において符号化フレームを生成すること、1124において再構成フレームを生成すること、1126においてデブロッキング閾値インデックスを特定すること、1128において符号化フレームとデブロッキング閾値インデックスとを出力ビットストリーム内に含めること、またはそれらの組み合わせを含み得る。なお、図11では別々に示されているが、1122で符号化フレームを生成すること、1124で再構成フレームを生成すること、1126でデブロッキング閾値インデックスを特定すること、および1128で符号化フレームとデブロッキング閾値インデックスとを出力ビットストリーム内に含めることが、一体的に実行されてもよい。
1122で符号化フレームを生成することは、ブロックベースの符号化を使用することを含み得るものであり、本明細書で説明されているかもしくは文脈から明らかである場合を除いて、図4に関連して説明した符号化と同様であり得る。例えば、エンコーダは、予測ブロックを生成し、各予測ブロックと対応する入力ブロックとの差を残差として特定し、残差を変換することによって各変換係数を特定し、変換係数を量子化することによって各量子化変換係数を生成し、各量子化変換係数と動き情報などの他の符号化データとをエントロピーコーディングし得るか、またはそれらの組み合わせを実行し得る。
1124で再構成フレームを生成することは、本明細書で説明されているかもしくは文脈から明らかである場合を除いて、図4に関連して説明した再構成と同様であり得る。例えば、エンコーダは、量子化変換係数を逆量子化して各逆量子化変換係数を生成し、逆量子化変換係数を逆変換して各再構成残差を生成し、1122で生成された予測ブロックなどの各予測ブロックを特定し、復号化フレームを生成し(各予測ブロックと対応する再構成残差とを組み合わせることによって復号化フレームの各復号化ブロックを生成することを含み得る)、復号化フレームをフィルタリング(ループフィルタリング、デブロッキングフィルタリング、またはその両方など)してアーチファクトを低減しつつ再構成フレームを生成し得るか、またはそれらの組み合わせを実行し得る。なお、1124で再構成フレームの生成に関連して説明したが、デブロッキングまたはその一部は、復号化フレームの生成に続いてまたはループフィルタリングに続いて実行されてもよい。再構成フレームは、他のフレームを符号化するために、再構成フレームまたは参照フレームとして記憶されるかまたはアクセス可能とされてもよい。
デブロッキング閾値インデックスは、1126において特定され得る。いくつかの実装形態では、1126でデブロッキング閾値インデックスを特定することは、1122での符号化フレームの生成に続いて1124で再構成フレームの生成と同時に(例えば、組み合わせて)実行されてもよいし、または1124で再構成フレームの生成に続いて実行されてもよい。例えば、1124での再構成フレームの生成と1126でのデブロッキング閾値インデックスの特定は図11では別々に示されているが、1124での再構成フレームの生成に関連して説明したデブロッキングは、デブロッキング閾値インデックスを特定することを含み得る。
1126でデブロッキング閾値インデックスを特定することは、第1のデブロッキング閾値インデックスを特定すること、第2のデブロッキング閾値インデックスを特定すること、またはその両方を含み得る。デブロッキング閾値インデックスは、定義済みのデブロッキング閾値のセット、グループ、または一群を特定する整数値などのインデックスであり得る。例えば、エンコーダは、定義済みのデブロッキング閾値のセットを含むテーブルまたは他のデータ記憶構造を含み得るかもしくはそれにアクセスし得るものであり、各々定義済みのデブロッキング閾値のセットは、それぞれ対応するデブロッキング閾値インデックスによってインデックス付けされるかまたは一意に特定される。
1126でデブロッキング閾値インデックスを特定することは、水平または垂直などの第1の方向にフレームをデブロッキングするための第1のデブロッキング閾値インデックスを特定すること、および第1の方向に直交する垂直または水平などの第2の方向にフレームをデブロッキングするための、第1のデブロッキング閾値インデックスとは異なり得る第2のデブロッキング閾値インデックスを特定することを含み得る。
一例では、第1のデブロッキング閾値インデックスはフレームの垂直ブロック境界をデブロッキングするために特定され得るものであり、第2のデブロッキング閾値インデックスはフレームの水平ブロック境界をデブロッキングするために特定され得るものである。デブロッキング閾値インデックスを特定する例は図12に示されている。
符号化フレーム、デブロッキング閾値インデックス、またはその両方は、1128において出力ビットストリームすなわち符号化ビットストリーム内に含められ得る。例えば、デブロッキング閾値インデックスは、符号化フレームのフレームヘッダに含められ得る。このフレームヘッダは出力ビットストリーム内に含められ得るものであり、フレームヘッダまたはその一部をエントロピーコーディングすることを含み得る。
デブロッキング閾値インデックスを出力ビットストリーム内に含めることは、第1のデブロッキング閾値インデックスの表示を出力ビットストリーム内に含めること、および個別に、第2のデブロッキング閾値インデックスの表示を出力ビットストリーム内に含めることを含み得る。いくつかの実装形態では、第2のデブロッキング閾値インデックスの表示を出力ビットストリーム内に含めることは、第1のデブロッキング閾値インデックスと第2のデブロッキング閾値インデックスとの差などの差分デブロッキング閾値インデックス値を特定すること、および、差分デブロッキング閾値インデックスまたはその表示を第2のデブロッキング閾値インデックスとして出力ビットストリーム内に含めることを含み得る。
符号化ビットストリームは、1130において出力され得る。例えば、符号化ビットストリームまたは出力ビットストリームは、図2に示されたネットワーク220などのネットワークを介した信号として送信され得ることで、図1に示されたコンピューティングデバイス100または図2に示されたコンピューティングおよび通信デバイス100A,100B,100Cなどのデバイス(図5に示されたデコーダ500などのデコーダを含み得る)は、ネットワークを介してその信号を受信し、符号化ビデオビットストリームを復号して、現在のフレームに対応する再構成フレームまたはその一部を生成し得る。別の例では、符号化ビットストリームは、図1に示されたコンピューティングデバイス100または図2に示されたコンピューティングおよび通信デバイス100A,100B,100Cなどのデバイスにおける図1に示されたメモリ110などのメモリに記憶済み符号化ビデオとして記憶され得ることで、そのメモリにアクセス可能なそのデバイスまたは任意の他のデバイスが、その記憶済み符号化ビデオを取得し得るとともに、図5に示されたデコーダ500などのデコーダが、その符号化ビデオを復号して、現在のフレームに対応する再構成フレームまたはその一部を生成し得る。
デュアルデブロッキングフィルタ閾値を用いた符号化の他の実装形態も利用可能である。実装形態では、デュアルデブロッキングフィルタ閾値を用いた符号化の追加の要素を追加したり、特定の要素を組み合わせたり、および/または特定の要素を削除したりすることができる。
図12は、本開示の実装形態によるデブロッキング閾値インデックスを特定1200する例のフローチャート図である。デブロッキング閾値インデックスを特定1200することは、図4に示されたエンコーダ400などのエンコーダに実装され得る。例えば、図4に示されたエンコーダ400のフィルタリングユニット480がデブロッキング閾値インデックスの特定1200を実行し得る。
デブロッキング閾値インデックスを特定1200することは、復号化フレームであり得る現在のフレームをデブロッキングするためのデブロッキング閾値インデックスを特定することを含み得るものであり、本明細書で説明されているかもしくは文脈から明らかである場合を除いて、図11に示されたデブロッキング閾値インデックスの特定1126に類似し得る。
デブロッキング閾値インデックスを特定1200することは、1210において共有デブロッキング(joint deblocking)閾値インデックスを特定すること、1220において第1の個別のデブロッキング閾値インデックスを特定すること、1230において第2の個別のデブロッキング閾値インデックスを特定すること、またはそれらの任意の組み合わせを含み得る。
なお、図12には別途に示されていないが、デブロッキング閾値インデックスを特定1200することは、候補デブロッキング閾値インデックスを特定することを含み得る。候補デブロッキング閾値インデックスの各々は、それぞれ定義済みのデブロッキング閾値のセットに対応し得るか、またはそれを一意に特定し得る。例えば、エンコーダ、またはエンコーダのデブロッキング閾値インデックス特定ユニットは、候補デブロッキング閾値インデックスおよび対応するデブロッキング閾値のセットを含むテーブル(エンコーダのメモリに記憶されたテーブル、もしくはエンコーダがアクセス可能なテーブルなど)または他のデータ記憶構造からの読み出しを行い得るかもしくはそれにアクセスし得る。一例では、候補デブロッキング閾値インデックスはNのカーディナリティ(cardinality)を有し、定義済みのデブロッキング閾値のセットはNのカーディナリティを有し、各候補デブロッキング閾値インデックスはそれぞれ定義済みのデブロッキング閾値のセットに対応し得る。
1210で共有デブロッキング閾値インデックスを特定することは、フレームをデブロッキングするにあたって共有エラーメトリックなどのメトリックを最小化するデブロッキング閾値のセットに対応するデブロッキング閾値インデックスを特定することを含み得るものであり、フレームをデブロッキングすることは、水平または垂直などの第1の方向においてデブロッキング閾値のセットを用いてフレームをデブロッキングすること、および第1の方向に直交し得る垂直または水平などの第2の方向においてデブロッキング閾値のセットを用いてフレームをデブロッキングすることを含み得る。共有デブロッキング閾値インデックスなどのデブロッキング閾値インデックスを特定する例は図13に示されている。
1220で第1の個別のデブロッキング閾値インデックスを特定することは、第1の方向において第1の個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いつつ、第2の方向において1210で特定された共有デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いてフレームをデブロッキングするにあたり、エラーメトリックなどのメトリックを最小化するデブロッキング閾値のセットに対応するデブロッキング閾値インデックスを特定することを含み得る。第1の個別のデブロッキング閾値インデックスなどのデブロッキング閾値インデックスを特定する例は図13に示されている。
1230で第2の個別のデブロッキング閾値インデックスを特定することは、第1の方向において1220で特定された第1の個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いつつ、第2の方向において第2の個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いてフレームをデブロッキングするにあたり、エラーメトリックなどのメトリックを最小化するデブロッキング閾値のセットに対応するデブロッキング閾値インデックスを特定することを含み得る。第2の個別のデブロッキング閾値インデックスなどのデブロッキング閾値インデックスを特定する例は図13に示されている。
図13は、本開示の実装形態によるデブロッキング閾値インデックスを特定1300する例のフローチャート図である。デブロッキング閾値インデックスの特定1300は、図4に示されたエンコーダ400などのエンコーダで実行され得る。例えば、図4に示されたエンコーダ400のフィルタリングユニット480がデブロッキング閾値インデックスの特定1300を実行し得る。
デブロッキング閾値インデックスを特定1300することは、1310において現在の候補デブロッキング閾値インデックスを特定すること、1320において現在のエラーメトリックを決定すること、1330において最小エラーメトリックに対応する候補デブロッキング閾値インデックスを特定すること、またはそれらの任意の組み合わせを含み得る。
現在の候補デブロッキング閾値インデックスは1310で特定され得る。現在の候補デブロッキング閾値インデックスを特定することは、図12に関連して説明した候補デブロッキング閾値インデックスなどの候補デブロッキング閾値インデックスのセットから現在のデブロッキング閾値インデックスを特定することを含み得る。1310で現在の候補デブロッキング閾値インデックスを特定することは、デブロッキング閾値の対応するセットを特定することを含み得る。
例えば、図12において1210で示されるような共有デブロッキング閾値インデックスを特定することがデブロッキング閾値インデックスの特定1300を含み得るものであり、現在の候補デブロッキング閾値インデックスを特定することは、水平または垂直などの第1の方向と、第1の方向に直交し得る垂直または水平などの第2の方向において、現在のフレームまたはその一部をデブロッキングするための現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを特定することを含み得る。
別の例では、図12において1220で示されるような、または図12において1230で示されるような個別のデブロッキング閾値インデックスを特定することがデブロッキング閾値インデックスの特定1300を含み得るものであり、1310で現在の候補デブロッキング閾値インデックスを特定することは、第1の方向において現在のフレームまたはその一部をデブロッキングするための現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを特定するとともに、第2の方向において異なる個別のデブロッキング閾値インデックス(別々にまたは以前に特定された個別のデブロッキング閾値インデックスなど)に対応するデブロッキング閾値のセットを用いること、または、第1の方向において異なる個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いるとともに、第2の方向において現在のフレームまたはその一部をデブロッキングするための現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを特定することを含み得る。
現在の候補デブロッキング閾値インデックスに対する現在のエラーメトリックは、1320において決定され得る。現在のエラーメトリックを決定することは、水平または垂直などの第1の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすること、第1の方向に直交し得る垂直または水平などの第2の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすること、または、第1の方向および第2の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすることを含み得る。
例えば、図12において1210で示されるような共有デブロッキング閾値インデックスを特定することがデブロッキング閾値インデックスの特定1300を含み得るものであり、1320で現在のエラーメトリックを決定することは、第1の方向および第2の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすることを含み得る。共有デブロッキング閾値インデックスを特定することを含む実装形態では、現在のエラーメトリックは共有エラーメトリックであり得る。
別の例では、図12において1220で示されるような、または図12において1230で示されるような個別のデブロッキング閾値インデックスを特定することがデブロッキング閾値インデックスの特定1300を含み得るものであり、1320で現在のエラーメトリックを決定することは、第1の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングするとともに、第2の方向において異なる個別のデブロッキング閾値インデックス(別々に特定された個別のデブロッキング閾値インデックスなど)に対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすること、または、第2の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングするとともに、第1の方向において異なる個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすることを含み得る。
1320で現在のエラーメトリックを決定することは、候補再構成フレームまたはその一部を生成すること、および、候補再構成フレーム(またはその一部)と対応する入力フレーム(またはその一部)との差に基づいて、例えば、再構成候補フレームと対応する入力フレームとの差分絶対値和(SAD:sum of absolute differences)か、差分二乗和(SSD:sum of squared differences)か、または別のエラーメトリックを決定することなどによって、現在のエラーメトリックを特定することを含み得る。現在のエラーメトリックを決定する例は図14に示されている。
複数の候補デブロッキング閾値インデックスのうちの対応する候補デブロッキング閾値インデックスを用いて、第1の方向に現在のフレームまたはその一部をデブロッキングしたり、第2の方向に現在のフレームまたはその一部をデブロッキングしたり、または第1の方向と第2の方向に現在のフレームまたはその一部をデブロッキングしたりすることにそれぞれ対応する各エラーメトリックは、1325の破線矢印で示されるように決定され得る。
例えば、図12において1210で示されるような共有デブロッキング閾値インデックスを特定することがデブロッキング閾値インデックスの特定1300を含み得るものであり、1320で現在のエラーメトリックを決定することは、複数の候補デブロッキング閾値インデックスのうちの各々対応する1つを用いて、共有エラーメトリックであり得る対応するエラーメトリックを決定することであって、第1の方向および第2の方向において各候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすることによって当該エラーメトリックを決定することを含み得る。
いくつかの実装形態では、1310で現在の候補デブロッキング閾値インデックスを特定することは、複数の候補デブロッキング閾値インデックスの中から、別々に特定される個別のデブロッキング閾値インデックスを特定すること、例えば、第1の方向(または第2の方向)において現在のフレームまたはその一部をデブロッキングするための別々に特定された個別のデブロッキング閾値インデックスや、第2の方向(または第1の方向)において現在のフレームまたはその一部をデブロッキングするための現在の候補デブロッキング閾値インデックスなどを特定することを省略してもよく、また、各エラーメトリックを決定することは、第1の方向および第2の方向において、別々に特定された個別のデブロッキング閾値インデックスを用いて現在のフレームまたはその一部をデブロッキングすることに対応するエラーメトリックを決定することを省略してもよい。
例えば、図12において1220で示されるような、または図12において1230で示されるような個別のデブロッキング閾値インデックスを特定することがデブロッキング閾値インデックスの特定1300を含み得るものであり、1320で現在のエラーメトリックを決定することは、個別のデブロッキング閾値インデックス(別々に特定された個別のデブロッキング閾値インデックスなど)とは異なる(またはそれ以外の)それぞれの候補デブロッキング閾値インデックスに対応するエラーメトリック(第1のエラーメトリック)を決定することを含み得る。このエラーメトリック(第1のエラーメトリック)の決定は、第1の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングするとともに、第2の方向において個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすることによって、または、第1の方向において異なる個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングするとともに、第2の方向において現在の候補デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて現在のフレームまたはその一部をデブロッキングすることによって行われる。
最小エラーメトリックに対応するデブロッキング閾値インデックスは、1330において特定され得る。最小エラーメトリックに対応するデブロッキング閾値インデックスを特定することは、エラーメトリックのセットから最小エラーメトリックを特定することを含み得る。エラーメトリックのセット内の各エラーメトリックは、1320で決定されたそれぞれの現在のエラーメトリックに対応し得る。
例えば、デブロッキング閾値インデックスを特定1300することが、図12において1210で示されるような共有デブロッキング閾値インデックスを特定することを含み得る場合、1320で現在のエラーメトリックを決定することは、各候補デブロッキング閾値インデックスに対応する各デブロッキング閾値のセットを使用して第1の方向および第2の方向に現在のフレームまたはその一部をデブロッキングすることに対応する各エラーメトリックなどのエラーメトリックを決定することを含み得るとともに、1330でデブロッキング閾値インデックスを特定することは、1320で決定されたエラーメトリックから最小エラーメトリックを特定すること、および最小エラーメトリックに対応する候補デブロッキング閾値インデックスを1330でのデブロッキング閾値インデックスとして特定することを含み得る。
別の例では、図12において1200で示されるようなデブロッキング閾値インデックスを特定することは、図12において1210で示されるような共有デブロッキング閾値インデックスを特定すること、図12において1220で示されるような第1の個別のデブロッキング閾値インデックスを特定すること、および、図12において1230で示されるような第2の個別のデブロッキング閾値インデックスを特定することを含み得る。
共有デブロッキング閾値インデックスを特定することは、デブロッキング閾値のセットを用いて第1の方向に現在のフレームまたはその一部をデブロッキングするとともに、そのデブロッキング閾値のセットを用いて第2の方向に現在のフレームまたはその一部をデブロッキングすることに対応する最小共有エラーメトリックを特定することを含み得る。
第1の個別のデブロッキング閾値インデックスを特定することは、エラーメトリックのセットの中から最小エラーメトリックに対応するデブロッキング閾値インデックスを特定することを含み得るものであって、エラーメトリックのセットは、最小共有エラーメトリックを含むとともに候補エラーメトリックを含み、この候補エラーメトリックは、共有デブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて第1の方向に現在のフレームまたはその一部をデブロッキングするとともに、他のデブロッキング閾値のセットを用いて第2の方向に現在のフレームまたはその一部をデブロッキングすることに対応する。
第2の個別のデブロッキング閾値インデックスを特定することは、エラーメトリックのセットの中から最小エラーメトリックに対応するデブロッキング閾値インデックスを特定することを含み得るものであって、エラーメトリックのセットは、第1の個別のデブロッキング閾値インデックスに対応するエラーメトリックを含むとともに候補エラーメトリックを含み、この候補エラーメトリックは、第1の個別のデブロッキング閾値インデックスに対応するデブロッキング閾値のセットを用いて第1の方向に現在のフレームまたはその一部をデブロッキングするとともに、他のデブロッキング閾値のセットを用いて第2の方向に現在のフレームまたはその一部をデブロッキングすることに対応する。
図14は、本開示の実装形態による現在のエラーメトリックを決定1400する例のフローチャート図である。現在のエラーメトリックの決定1400は、図4に示されたエンコーダ400などのエンコーダで実行され得る。例えば、図4に示されたエンコーダ400のフィルタリングユニット480が現在のエラーメトリックの決定1400を実行し得る。
現在のエラーメトリックを決定1400することは、1410において現在のブロックを特定すること、1420において再構成ブロックを生成すること、1430においてエラーメトリックを決定すること、またはそれらの任意の組み合わせを含み得る。
なお、図14には別途に示されていないが、現在のエラーメトリックを決定1400することは、水平または垂直などの第1の方向において現在のフレームをデブロッキングするための第1のデブロッキング閾値のセットを特定すること、および第1の方向に直交し得る垂直または水平などの第2の方向において現在のフレームをデブロッキングするための第2のデブロッキング閾値のセットを特定することを含み得る。
第1のデブロッキング閾値のセットは、図12において1210で示されるように特定された共有デブロッキング閾値インデックスなどの共有デブロッキング閾値インデックスに対応し得るか、または、図12において1220で示されるように特定された第1の個別のデブロッキング閾値インデックスなどの第1の個別のデブロッキング閾値インデックスに対応し得る。第2のデブロッキング閾値のセットは、共有の個別のデブロッキング閾値インデックスに対応し得るか、または、図12において1230で示されるように特定された第2の個別のデブロッキング閾値インデックスなどの第2の個別のデブロッキング閾値インデックスに対応し得る。
現在のフレームの現在のブロックは、1410において特定され得る。例えば、現在のフレームは、予測ブロックなどのブロックを含み得るとともに、そのフレームのそれぞれの現在のブロックは、ラスタ順序などのスキャン順序に基づいて特定され得る。なお、図14には別途に示されていないが、現在のエラーメトリックを決定1400することは、現在のブロック、現在のブロックに隣接する1つまたは複数の隣接ブロック、またはその両方についての変換ブロックサイズを示す情報を特定することを含み得る。
再構成ブロックは、1420において生成され得る。現在のフレームが復号化フレームであり得るとともに、1410で特定された現在のブロックが復号化ブロックであり得る場合、1420で再構成ブロックを生成することは現在のブロックをデブロッキングすることを含み得る。
現在のブロックをデブロッキングすることは、現在のブロックを第1の方向にデブロッキングする際に第1のデブロッキング閾値インデックスを使用し、現在のブロックを第2の方向にデブロッキングする際に第2のデブロッキング閾値インデックスを使用して、復号化ブロックであり得る現在のブロックをデブロッキングすることを含み得る。
第1のデブロッキング閾値インデックスと第2のデブロッキング閾値インデックスは共有デブロッキング閾値インデックスであってもよいし、第1のデブロッキング閾値インデックスは第2のデブロッキング閾値インデックスと異なっていてもよい。例えば、特定されたデブロッキング閾値インデックスが共有デブロッキング閾値インデックスであり得る場合、現在のブロックをデブロッキングすることは、復号化ブロックを水平方向にデブロッキングする際には、その特定されたデブロッキング閾値インデックスを水平デブロッキング閾値インデックスとして用い、復号化ブロックを垂直方向にデブロッキングする際には、その特定されたデブロッキング閾値インデックスを垂直デブロッキング閾値インデックスとして用いることを含み得るか、または、復号化ブロックを垂直方向に垂直デブロッキングする際には、その特定されたデブロッキング閾値インデックスを垂直デブロッキング閾値インデックスとして用い、復号化ブロックを水平方向に水平デブロッキングする際には、その特定されたデブロッキング閾値インデックスを水平デブロッキング閾値インデックスとして用いることを含み得る。現在のブロックをデブロッキングする例は図15に示されている。
図14に示されるように、現在のエラーメトリックを決定1400することは、1425の破線矢印によって示されるように、現在のフレームのブロック毎にそれぞれの再構成ブロックを生成することを含み得る。例えば、現在のフレームのブロック毎にそれぞれの再構成ブロックが1420で生成され得る場合、現在のブロックを第1の方向および第2の方向にデブロッキングすることを含み得る。なお、図14には別途に示されていないが、現在のエラーメトリックを決定1400することは、現在のブロックを第1の方向にデブロッキングすることによって現在のフレームのブロック毎にそれぞれ部分再構成ブロックを生成すること、および対応する部分再構成ブロックを第2の方向にデブロッキングすることによって現在のフレームのブロック毎に再構成ブロックを生成することを含み得る。
現在のエラーメトリックは、1430において決定され得る。現在のエラーメトリックは、現在の再構成フレーム(またはその一部)と対応する入力フレーム(またはその一部)との差に基づいて、例えば、現在の再構成フレームと対応する入力フレームとの差分絶対値和か、差分二乗和か、または別のエラーメトリックを決定することなどによって、決定され得る。
図15は、本開示の実装形態による現在のブロックをデブロッキング1500する例のフローチャート図である。現在のブロックをデブロッキング1500することは、再構成ブロックを生成することを含み得るものであり、図4に示されたエンコーダ400などのエンコーダで実行され得る。例えば、図4に示されたエンコーダ400のフィルタリングユニット480が現在のブロックのデブロッキング1500を実行し得る。
現在のブロックをデブロッキングすることは、第1のデブロッキング閾値インデックスに基づいて、または第1のデブロッキング閾値インデックスと第2のデブロッキング閾値インデックスとに基づいて現在のブロックをデブロッキングすることを含み得る。例えば、第1のデブロッキング閾値インデックスが共有デブロッキング閾値インデックスであり得る場合、現在のブロックをデブロッキングすることは、共有デブロッキング閾値インデックスに基づいて第1の方向に現在のブロックをデブロッキングすること、および共有デブロッキング閾値インデックスに基づいて第2の方向に現在のブロックをデブロッキングすることを含み得る。別の例では、第1のデブロッキング閾値インデックスが第1の個別のデブロッキング閾値インデックスであり得るとともに、第2のデブロッキング閾値インデックスが第2の個別のデブロッキング閾値インデックスであり得る場合、現在のブロックをデブロッキングすることは、第1の個別のデブロッキング閾値インデックスに基づいて第1の方向に現在のブロックをデブロッキングすること、および第2の個別のデブロッキング閾値インデックスに基づいて第2の方向に現在のブロックをデブロッキングすることを含み得る。
現在のブロックは、ブロック境界、境界線、ブロックエッジ、またはブロック辺を有し得る。例えば、図6〜10に示されるように、現在のブロックが4つのブロック境界を有し得る場合、上部ブロック境界や下部ブロック境界などの垂直方向における2つのブロック境界と、左ブロック境界や右ブロック境界などの水平方向における2つのブロック境界とを含み得る。現在のブロックが複数の隣接ブロックに対してすぐ隣りに存在し得る場合、例えば、複数の隣接ブロックは、上部ブロック境界に沿って現在のブロックに隣接し得る現在のブロックの上方の隣接ブロック、下部ブロック境界に沿って現在のブロックに隣接し得る現在のブロックの下方の隣接ブロック、左ブロック境界に沿って現在のブロックに隣接し得る現在のブロックの左の隣接ブロック、右ブロック境界に沿って現在のブロックに隣接し得る現在のブロックの右の隣接ブロックなどである。現在のブロックおよび隣接ブロックの各々は、それぞれの変換ブロックに対応し得る。例えば、現在のブロックがN×Nブロックであり得る場合にN×N変換ブロックに対応してもよいし、またはx2N/x×N/x変換ブロックなどのより小さな変換ブロックに対応してもよい。
図15に示されるように、現在のブロックをデブロッキング1500することは、1510において現在の方向を特定すること、1520において現在のブロック境界を特定すること、1530において現在のデブロッキング閾値のサブセットを特定すること、1540においてピクセルを特定すること、1550において非平坦度係数(non-flatness factor)を決定すること、1560においてデブロッキングするかどうかを決定すること、1570においてデブロッキングパラメータを特定すること、またはそれらの組み合わせを含み得る。
現在の方向は1510において特定され得る。例えば、現在の方向は、水平または垂直などの第1の方向、またはその第1の方向に直交し得る垂直または水平などの第2の方向として特定され得る。
1510で現在の方向を特定することは、現在のフレームを現在の方向にデブロッキングするための現在のデブロッキング閾値インデックスを特定することを含み得る。例えば、現在のフレームを現在の方向にデブロッキングするための現在のデブロッキング閾値インデックスは、図13において1310で示されるように特定され得る。現在のフレームを現在の方向にデブロッキングするための現在のデブロッキング閾値インデックスを特定することは、現在のフレームを現在の方向にデブロッキングするための現在のデブロッキング閾値インデックスに関連付けられた現在のデブロッキング閾値のセット、グループ、または一群を特定することを含み得る。例えば、エンコーダは、現在のデブロッキング閾値インデックスおよび対応するデブロッキング閾値を含むテーブル(エンコーダのメモリに記憶されたテーブル、もしくはエンコーダがアクセス可能なテーブルなど)または他のデータ記憶構造からの読み出しを行い得るかもしくはそれにアクセスし得る。
現在のブロック境界は、1520において特定され得る。例えば、現在の方向が垂直であり得る場合、現在のブロックの上辺か、上部境界線か、もしくは上部エッジに対応する水平ブロック境界が現在のブロック境界として特定され得るか、または現在のブロックの下辺か、下部境界線か、もしくは下部エッジに対応する水平ブロック境界が現在のブロック境界として特定され得る。別の例では、現在の方向が水平であり得る場合、現在のブロックの左辺か、左境界線か、もしくは左エッジに対応する垂直ブロック境界が現在のブロック境界として特定され得るか、または現在のブロックの右辺か、右境界線か、もしくは右エッジに対応する垂直ブロック境界が現在のブロック境界として特定され得る。
現在のブロック境界をデブロッキングするための現在のデブロッキング閾値のサブセットは1530において特定され得る。1530で現在のデブロッキング閾値のサブセットを特定することは、1520で特定された現在のブロック境界に対応する現在の最小変換ブロックサイズを特定することを含み得る。
1530で現在のブロック境界に対応する現在の最小変換ブロックサイズを特定することは、現在のブロック境界に沿った各変換ブロックであって、現在のブロックに対応する変換ブロックか、現在のブロック境界に沿って現在のブロックに隣接する変換ブロックか、もしくはその両方を含み得る各変換ブロックの変換ブロックサイズを特定することを含み得る。
例えば、図8において、現在のブロックが右上ブロック820であり、現在の方向が水平であり、現在のブロック境界850が現在のブロック820と水平に隣接するブロック810との間の垂直境界であり、現在のブロック820が16×16ブロックであり、現在のブロック820の変換ブロックサイズが16×16であり、隣接ブロック810の変換ブロックサイズが8×8であり、現在の最小変換ブロックサイズが8×8であり得る。
図15に示されるように、1530で現在のデブロッキング閾値のサブセットを特定することは、現在の最小変換ブロックサイズに基づいて現在のデブロッキング閾値のサブセットを特定することを含み得るものであって、これは、現在のデブロッキング閾値インデックスに基づいて特定されたデブロッキング閾値のセットであり得る現在のデブロッキング閾値のセットから、現在のデブロッキング閾値のサブセットを特定することを含み得る。
例えば、現在のデブロッキング閾値インデックスに基づいて特定された現在のデブロッキング閾値のセットが、それぞれ利用可能な変換ブロックサイズに対応するデブロッキング閾値のサブセットを含み得る場合、1530で現在のデブロッキング閾値のサブセットを特定することは、現在のデブロッキング閾値のセットから現在の最小変換ブロックサイズに対応するデブロッキング閾値のサブセットを特定することを含み得る。現在のデブロッキング閾値のサブセットは現在のデブロッキング閾値として特定され得る。例えば、デブロッキング閾値の1つ以上が対応する最小変換ブロックサイズに関連付けられ得る場合、現在の最小変換ブロックサイズに関連付けられたデブロッキング閾値のサブセットが現在のデブロッキング閾値として特定され得る。
いくつかの実装形態では、現在の方向における最初のブロック境界での最小変換ブロックサイズが現在の方向における現在のブロックに対して反対側のブロック境界での以前に特定された最小変換ブロックサイズと一致し得る場合、反対側のブロック境界をデブロッキングするために特定されたデブロッキング閾値が現在のブロック境界をデブロッキングするためのデブロッキング閾値として特定され得る。いくつかの実装形態では、現在の方向における現在のブロック境界での最小変換ブロックサイズが現在の方向における現在のブロックに対して反対側のブロック境界での以前に特定された最小変換ブロックサイズと相違し得る場合、現在のブロック境界をデブロッキングするためのデブロッキング閾値は反対側のブロック境界をデブロッキングするために特定されたデブロッキング閾値とは別に特定され得る。
1530で現在のデブロッキング閾値のサブセットを特定することは、現在のブロック境界をデブロッキングするための現在のデブロッキング判定閾値を特定することを含み得る。例えば、1530で特定された現在のデブロッキング閾値のサブセットが現在のデブロッキング判定閾値を含み得る場合、現在のデブロッキング判定閾値は現在のデブロッキング閾値のサブセットから特定され得る。
現在のピクセルのセット、グループ、または一群などの現在のピクセルは、1540において特定され得る。現在のピクセルは、現在のブロック、現在の方向において現在のブロック境界に沿って現在のブロックに隣接する隣接ブロック、またはその両方からのピクセルを含み得る。例えば、1510で特定された現在の方向が垂直であり、現在のブロックがピクセルの列を含み、隣接ブロックが対応するピクセルの列を含み得る場合、1540で現在のピクセルを特定することは、現在のブロックの現在の列からの定義済みのカーディナリティ、数、またはカウント(N)のピクセル(例えば、現在のブロック境界に最も近い現在のブロックの現在の列からのNピクセルなど)を特定することを含み得るとともに、隣接ブロックの現在の列からの定義済みのカーディナリティのピクセル(例えば、現在のブロック境界に最も近い隣接ブロックの現在の列からのNピクセルなど)を特定することを含み得る。いくつかの実装形態では、現在のブロックから特定されたピクセルのカーディナリティは、隣接ブロックから特定されたピクセルのカーディナリティと異なり得る。
非平坦度係数などのメトリックは、1550において決定され得る。非平坦度係数は、特定されたピクセルのセットの平坦度または非平坦度を示し得る。例えば、現在の非平坦度係数は、現在のブロックにおいて特定されたピクセルのセット(1540で特定された現在のブロックのピクセルなど)の平坦度を示し得るとともに、隣接する非平坦度係数は、隣接ブロックの対応するピクセルの平坦度または非平坦度を示し得る。例えば、平坦度メトリックまたは係数、あるいは非平坦度メトリックまたは係数は、対応するピクセル間の最大差を示し得る。
例えば、図9において、現在のブロックが左下ブロック930であり、現在のブロック境界が現在のブロック930と隣接ブロック940(隣接する復号化ブロックであり得る)との間の垂直境界であり得る。現在のブロック940の各行についてそれぞれの現在の平坦度係数が特定され得るとともに、隣接ブロック940の各行についてそれぞれの隣接平坦度係数が特定され得る。一例では、現在のブロック930の上から5行目の現在の平坦度係数は、c0,c1,c2,c3,c4,c5,c6,c7と表示されたピクセルに基づいて特定され得るとともに、隣接ブロック940の上から5行目の隣接平坦度係数は、a0,a1,a2,a3,a4,a5,a6,a7と表示されたピクセルに基づいて特定され得る。
一例では、現在のブロック(c)930の現在の平坦度係数または非平坦度係数は、c4と表示されたピクセルとc7と表示されたピクセルとの差の絶対値、c5と表示されたピクセルとc7と表示されたピクセルとの差の絶対値、およびc6と表示されたピクセルとc7と表示されたピクセルとの差の絶対値のうちの最大値に基づいて特定され、次式のように表され得る。
Nf(c)=max(|c4−c7|,|c5−c7|,|c6−c7|) [式1]
隣接ブロック(a)の対応する隣接平坦度係数または非平坦度係数は、a0と表示されたピクセルとa1と表示されたピクセルとの差の絶対値、a0と表示されたピクセルとa2と表示されたピクセルとの差の絶対値、およびa0と表示されたピクセルとa3と表示されたピクセルとの差の絶対値のうちの最大値に基づいて特定され、次式のように表され得る。
Nf(a)=max(|a0−a1|,|a0−a2|,|a0−a3|) [式2]
別の例では、図10において、現在のブロックが右上ブロック1020であり、現在のブロック境界が現在のブロック1020と垂直に隣接するブロック1040との間の水平境界であり得る。現在のブロック1020の各列について現在の平坦度係数が特定され得るとともに、隣接ブロック1040の各列について隣接平坦度係数が特定され得る。例えば、現在のブロック1020の左から5列目の現在の平坦度係数は、c0,c1,c2,c3,c4,c5,c6,c7と表示されたピクセルに基づいて特定され得るとともに、隣接ブロック1040の左から5列目の隣接平坦度係数は、a0,a1,a2,a3,a4,a5,a6,a7と表示されたピクセルに基づいて特定され得る。
図15に示されるように、現在のデブロッキング判定は1560において特定され得る。例えば、1540で特定されたピクセルをデブロッキングするかどうかは、1530で特定された現在のデブロッキング判定閾値と1550で決定された非平坦度係数とに基づいて1560で判定され得る。例えば、現在のブロック境界がフレームによってキャプチャされたコンテンツのエッジと一致し得る場合、現在のブロック境界に沿ったピクセルのデブロッキングが省略され得る。別の例では、ブロック境界がフレームによってキャプチャされたコンテンツ内のエッジとは不一致であり得る場合、現在のブロック境界に沿ったピクセルがデブロッキングされ得る。
現在のブロック境界に沿った現在のブロックにおいて1540で特定されたピクセルをデブロッキングするかどうかを判定することは、現在のブロックの現在の行または列について1550で特定された現在の非平坦度係数(Nf(c))が1530で特定された現在のデブロッキング判定閾値未満であるかどうかを判定すること、および隣接ブロックの隣接非平坦度係数(Nf(a))が現在のデブロッキング判定閾値未満であるかどうかを判定することを含み得る。
例えば、現在のブロックの現在の行または列の現在の非平坦度係数(Nf(a))がデブロッキング判定閾値未満であり、隣接ブロックの現在の行または列の隣接非平坦度係数(Nf(a))がデブロッキング判定閾値未満であり得る場合、現在のブロック境界の現在の行または列についてデブロッキングすることを示す判定が特定され得る。
別の例では、現在のブロックの現在の行または列の現在の非平坦度係数(Nf(a))がデブロッキング判定閾値未満であり、隣接ブロックの現在の行または列の隣接非平坦度係数(Nf(a))が少なくともデブロッキング判定閾値(デブロッキング判定閾値以上など)であり得る場合、現在のブロック境界の現在の行または列についてのデブロッキングを省略することを示す判定が特定され得る。
別の例では、現在のブロックの現在の行または列の現在の非平坦度係数(Nf(a))が少なくともデブロッキング判定閾値(デブロッキング判定閾値以上など)であり、隣接ブロックの現在の行または列の隣接非平坦度係数(Nf(a))がデブロッキング判定閾値未満であり得る場合、現在のブロック境界の現在の行または列についてのデブロッキングを省略することを示す判定が特定され得る。
別の例では、現在のブロックの現在の行または列の現在の非平坦度係数(Nf(a))が少なくともデブロッキング判定閾値(デブロッキング判定閾値以上など)であり、隣接ブロックの現在の行または列の隣接非平坦度係数(Nf(a))が少なくともデブロッキング判定閾値(デブロッキング判定閾値以上など)であり得る場合、現在のブロック境界の現在の行または列についてのデブロッキングを省略することを示す判定が特定され得る。
1560で特定されたデブロッキング判定は1540で特定されたピクセルについてデブロッキングすることを示し得るものであり、1540で特定されたピクセルをデブロッキングする際のデブロッキングフィルタ、デブロッキングフィルタタイプ、デブロッキングフィルタ強度、またはそれらの組み合わせなどのデブロッキングパラメータまたはデブロッキングフィルタパラメータが1570において特定され得る。デブロッキングパラメータを特定することは、デブロッキング判定閾値とは異なり得る1つまたは複数のデブロッキングフィルタ閾値を現在のデブロッキング閾値のサブセットから特定すること、および特定されたデブロッキングフィルタ閾値に基づいてデブロッキングパラメータを特定することを含み得る。例えば、デブロッキングフィルタ閾値は、予測モード、動きベクトルの一貫性、変換ブロックサイズ、変換ブロックタイプなどに基づいて特定または調整され得る。
現在のブロック境界をデブロッキングすることは、1562および1572の破線矢印で示されるように、現在のブロックの各行または各列について1540でピクセルを特定すること、現在のブロックの各行または各列について1550で非平坦度係数を決定すること、現在のブロックの各行または各列について1560でデブロッキングするかどうかを判定すること、現在のブロックの各行または各列について1570でデブロッキングパラメータを特定すること、またはそれらの組み合わせを含み得る。
現在の方向において現在のブロックをデブロッキングすることは、1574の破線矢印で示されるように、現在の方向について1520で各ブロック境界を特定すること、それぞれのブロック境界毎に、対応するブロック境界について1530で現在のデブロッキング閾値のサブセットを特定すること、対応するブロック境界における現在のブロックの各行または各列について1540でピクセルを特定すること、対応するブロック境界における現在のブロックの各行または各列について1550で非平坦度係数を決定すること、対応するブロック境界における現在のブロックの各行または各列について1560でデブロッキングするかどうかを判定すること、対応するブロック境界における現在のブロックの各行または各列について1570でデブロッキングパラメータを特定すること、またはそれらの組み合わせを含み得る。
現在のブロックをデブロッキングすることは、1576の破線矢印で示されるように、1510で各方向を特定すること、それぞれの方向毎に、対応する方向について1520で各ブロック境界を特定すること、それぞれのブロック境界毎に、対応するブロック境界について1530で現在のデブロッキング閾値のサブセットを特定すること、対応するブロック境界における現在のブロックの各行または各列について1540でピクセルを特定すること、対応するブロック境界における現在のブロックの各行または各列について1550で非平坦度係数を決定すること、対応するブロック境界における現在のブロックの各行または各列について1560でデブロッキングするかどうかを判定すること、対応するブロック境界における現在のブロックの各行または各列について1570でデブロッキングパラメータを特定すること、またはそれらの組み合わせを含み得る。
図16は、本開示の実装形態によるデュアルデブロッキングフィルタ閾値を用いた復号化1600の例のフローチャート図である。デュアルデブロッキングフィルタ閾値を用いた復号化1600は、図5に示されたデコーダ500などのデコーダで実行され得る。
デュアルデブロッキングフィルタ閾値を用いた復号化1600は、1610において符号化フレームを特定すること、1620において復号化フレームを生成すること、1630においてデブロッキング閾値インデックスを特定すること、1640において再構成フレームを生成すること、1650において再構成フレームを出力すること、またはそれらの任意の組み合わせを含み得る。
符号化フレームは1610において特定され得る。例えば、デコーダは、符号化ビットストリームを受信またはそれにアクセスし得るとともに、その符号化ビットストリームまたはその一部から符号化フレームを特定し得る。
復号化フレームは1620において生成され得る。例えば、復号化フレームは、1610で特定された符号化フレームを復号化することによって生成され得る。復号化フレームを生成することは、復号化ブロックを生成することを含み得る。復号化ブロックを生成することは、符号化ビットストリームの一部を復号化することを含み得る。
デブロッキング閾値インデックスは、1630において特定され得る。例えば、デブロッキング閾値インデックスは、現在の(再構成または復号化)フレームに関連付けられたまたはそれに対応するフレームヘッダなどの符号化ビットストリームからデブロッキング閾値インデックスをデコード、読み取り、または抽出することによって特定され得る。
デブロッキング閾値インデックスを特定することは、符号化ビットストリームから第1のデブロッキング閾値インデックスを特定すること、符号化ビットストリームから第2のデブロッキング閾値インデックスを特定すること、またはその両方を含み得る。例えば、デブロッキング閾値インデックスを特定することは、水平または垂直などの第1の方向に現在のフレームをデブロッキングするための第1のデブロッキング閾値インデックスを特定すること、および垂直または水平などの第2の方向に現在のフレームをデブロッキングするための第2のデブロッキング閾値インデックスを特定することを含み得る。
いくつかの実装形態では、第2のデブロッキング閾値インデックスを特定することは、符号化ビットストリームから差分デブロッキング閾値インデックス値などの第2のデブロッキング閾値インデックスを示す情報を抽出すること、および差分デブロッキング閾値インデックス値と第1のデブロッキング閾値インデックスとの合計を第2のデブロッキング閾値インデックスとして特定することを含み得る。いくつかの実装形態では、第2のデブロッキング閾値インデックスを特定することは、第2のデブロッキング閾値インデックスを示す情報が差分デブロッキング閾値インデックス値を含むと判定することを含み得る。
再構成フレームは、1640において生成され得る。再構成フレームを生成することは、復号化フレームをデブロッキングすること(これにより、再構成ブロックを生成することを含み得る)、および再構成ブロックをデブロッキングすることを含み得る。
復号化フレームをデブロッキングすることは、フレームの各復号化ブロックをデブロッキングすることを含み得るものであって、これは、フレームの各復号化ブロックを特定すること、および、各復号化ブロックをデブロッキングすることによって対応する再構成ブロックを生成することを含み得るものであり、これらは、本明細書で説明されているかもしくは文脈から明らかである場合を除いて、図14において1410で示されたブロック特定および図14において1420で示されたブロック再構成と同様であり得る。現在のブロックをデブロッキングすることは、本明細書で説明されているかもしくは文脈から明らかである場合を除いて、図15に示されたデブロッキングと同様であり得る。例えば、各再構成ブロックは、第1のデブロッキング閾値インデックスおよび第2のデブロッキング閾値インデックスに基づいて対応する復号化ブロックをデブロッキングすることによって生成され得る。再構成ブロックは、再構成フレームに含まれ得る。
例えば、第1のデブロッキング閾値インデックスが垂直デブロッキング閾値インデックスであり得る場合、再構成フレームを生成することは、第1のデブロッキング閾値インデックスに基づく垂直デブロッキングと、第2のデブロッキング閾値インデックスに基づく水平デブロッキングとを含み得る。別の例では、第1のデブロッキング閾値インデックスが水平デブロッキング閾値インデックスであり得る場合、再構成フレームを生成することは、第1のデブロッキング閾値インデックスに基づく水平デブロッキングと、第2のデブロッキング閾値インデックスに基づく垂直デブロッキングとを含み得る。
第1の方向にデブロッキングすることは、第1のデブロッキング閾値インデックスに基づいて復号化フレームを第1の方向にデブロッキングすることにより部分デブロッキングフレームを生成することを含み得る。第2の方向にデブロッキングすることは、第2のデブロッキング閾値インデックスに基づいて部分デブロッキングフレームを第2の方向にデブロッキングすることにより再構成フレームを生成することを含み得る。
第1の方向または第2の方向にデブロッキングすることは、対応する(現在の)デブロッキング閾値インデックスに基づいて複数のデブロッキング閾値のセットから現在のデブロッキング閾値(1つのデブロッキング閾値のセットを含み得る)を特定することを含み得る。例えば、デコーダ、またはデコーダのデブロッキング閾値特定ユニットは、デブロッキング閾値のセットを含むテーブル(デコーダのメモリに記憶されたテーブル、もしくはデコーダがアクセス可能なテーブルなど)または他のデータ記憶構造からの読み出しを行い得るかもしくはそれにアクセスし得るとともに、第1のデブロッキング閾値インデックスに対応する第1のデブロッキング閾値のセットと、第2のデブロッキング閾値インデックスに対応する第2のデブロッキング閾値のセットとを特定し得る。
再構成フレームは、1650において出力され得る。例えば、再構成フレームは、ユーザに対する保存または提示用に、図5に示された出力ビデオストリーム504などの出力ビデオストリーム内に含まれ得る。
本明細書において「例」または「実装形態」という用語は、例、事例、または例証であることを意味するために使用される。本明細書において「例」または「実装形態」と記載された任意の態様または設計は、必ずしも他の態様または設計に対して好ましいまたは有利であるとして解釈されるべきではない。むしろ、「例」または「実装形態」という言葉の使用は、具体的な方法で概念を提示することを意図している。本出願で使用される用語「または」は、排他的な「または」ではなく、包括的な「または」を意味することが意図される。すなわち、他に明記されていない限り、または文脈から明らかでない限り、「XはAまたはBを含む」とは、任意の自然な包含的置換(natural inclusive permutations)を意味することを意図する。すなわち、「XはAまたはBを含む」は、XがAを含む場合、XがBを含む場合、XがAおよびBの両方を含む場合のいずれも満たす。さらに、本出願および添付の特許請求の範囲で使用される「1つ」は、他に明記されない限り、または単数形に向けられる文脈から明らかでない限り、「1つまたは複数」を意味すると一般に解釈されるべきである。さらに、「実装形態」または「一実装形態」という用語の使用は、そのように記載されない限り、同じ実施形態または実装形態を意味することを意図するものではない。本明細書で使用される「決定する」および「特定する」という用語、またはその変形語は、図1に示された複数のデバイスのうちの1つ以上を用いて、選択、確認、計算、検索、受信、決定、確立、取得、または、その他の方法で特定または決定することを含み得る。
さらに、説明を簡単にするために、図および本明細書での説明は、シーケンスまたは一連のステップまたは段階を含み得るが、本明細書に開示される方法の要素は、様々な順序でおよび/または同時に起こり得る。また、本明細書に開示された方法の要素は、本明細書に明示的に提示および説明されていない他の要素とともに生じ得る。さらに、本明細書で説明される方法の1つまたは複数の要素が、開示された主題による方法の実装形態から省略されてもよい。
送信コンピューティングおよび通信デバイス100Aおよび/または受信コンピューティングおよび通信デバイス100Bの実装(さらにはそれに記憶されるおよび/またはそれによって実行されるアルゴリズム、方法、命令など)は、ハードウェア、ソフトウェア、または任意の組み合わせで実現することができる。ハードウェアは、例えば、コンピュータ、知的財産(IP)コア、特定用途向け集積回路(ASIC)、プログラマブル論理アレイ、光プロセッサ、プログラマブルロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独でまたは組み合わせて含むものとして理解されるべきである。「信号」および「データ」という用語は互換的に使用される。さらに、送信コンピューティングおよび通信デバイス100Aおよび受信コンピューティングおよび通信デバイス100Bの部分は、必ずしも同様に実装される必要はない。
さらに、一実装形態では、例えば、送信コンピューティングおよび通信デバイス100Aまたは受信コンピューティングおよび通信デバイス100Bは、その実行時に、本明細書に記載された各方法、アルゴリズム、および/または命令のいずれかを実行するコンピュータプログラムを使用して実装することができる。追加的または代替的に、例えば、本明細書に記載された方法、アルゴリズム、または命令のいずれかを実行するための専用ハードウェアを含み得る専用コンピュータ/プロセッサを利用することができる。
送信コンピューティングおよび通信デバイス100Aおよび受信コンピューティングおよび通信デバイス100Bは、例えば、リアルタイムビデオシステムのコンピュータ上で実装することができる。あるいは、送信コンピューティングおよび通信デバイス100Aはサーバに実装され得る一方、受信コンピューティングおよび通信デバイス100Bはハンドヘルド通信デバイスなどのサーバとは別のデバイスに実装され得る。この場合、送信コンピューティングおよび通信デバイス100Aは、エンコーダ400を使用してコンテンツを符号化ビデオ信号に符号化し、その符号化ビデオ信号を通信デバイスに送信することができる。そして、通信デバイスは、デコーダ500を使用して符号化ビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイス上にローカルに記憶されたコンテンツ、例えば、送信コンピューティングおよび通信デバイス100Aによって送信されなかったコンテンツを復号化することができる。他の適切な送信コンピューティングおよび通信デバイス100Aおよび受信コンピューティングおよび通信デバイス100Bの実装スキームが利用可能である。例えば、受信コンピューティングおよび通信デバイス100Bは、ポータブル通信デバイスではなく、概して設置型のパーソナルコンピュータであってもよく、および/またはエンコーダ400を含むデバイスがデコーダ500を含んでもよい。
さらに、本開示の実装形態の全部または一部は、例えば有形のコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、任意のプロセッサによって、またはそれに関連して使用するために、プログラムを有形的に収容、記憶、通信、または輸送することができる任意のデバイスであり得る。媒体は、例えば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
上記の実装形態は、本出願の容易な理解を可能にするために説明されたものであり限定的なものではない。一方、本開示は、添付の特許請求の範囲内に含まれる様々な変形および均等の構成を包含することを意図しており、その範囲は、法律で許容されるようなすべての変形および均等の構造を包含するように最も広い解釈が与えられるべきである。