[0019] 本開示は、ビデオコーディングおよび圧縮の分野に関する。一例として、本開示は、高効率ビデオコーディング(HEVC)規格およびそれの範囲拡張およびスクリーンコンテンツコーディング拡張に関する。但し、本技法は、HEVC規格またはそれの範囲拡張およびスクリーンコンテンツコーディング拡張に限定されると見なされるべきではない。説明しやすいように、本技法が、HEVC規格に関して説明されるが、本技法は、他のビデオコーディング規格に適用可能であり得、一般的にビデオコーディング技法に適用可能である。また、本開示で説明される技法は、将来開発される規格の一部になり得る。言い換えれば、本開示で説明される技法は、前に開発されたビデオコーディング規格、現在開発中のビデオコーディング規格、および次のビデオコーディング規格に適用可能であり得る。
[0020] ビデオコーディングの一部として、ビデオエンコーダは、符号化ビデオブロックを再構成し、再構成されたビデオブロックが後続のブロックのインター予測またはイントラ予測のために使用され得るように、再構成されたビデオブロックをビデオエンコーダの復号ピクチャバッファ(DPB:decoded picture buffer)に記憶する。ビデオデコーダは、符号化ビデオブロックのためのビデオデータを受信し、最終的な表示のためにビデオブロックを再構成する。
[0021] 場合によっては、ブロックの境界に沿ってブロッキングアーティファクトがあり得る。そのようなブロッキングアーティファクトは、再構成のために使用されるブロックのブロックサイズが比較的大きいとき、閲覧者にとって特に顕著であり得る。ブロッキングアーティファクトは、あるブロックから別のブロックへの遷移を閲覧者が知覚できないような、あるブロックから別のブロックへのブレンドされた遷移ではなく、ビデオコンテンツ中の別個のビデオブロックを閲覧者に知覚させる、ブロックの境界における中断を一般に指す。より一般的には、ブロッキングアーティファクトは、あるブロックから別のブロックへのビデオコンテンツ中の知覚できる中断を引き起こすブロックベースのビデオコーディングの結果であり得る。
[0022] 本開示で説明されるように、ブロッキングアーティファクトを平滑化するために、ビデオコーダ(例えば、ビデオエンコーダまたはビデオデコーダ)は、ブロック境界に近接した複数のピクセル(例えば、ブロックの境界から延びるN個のピクセル)上でデブロッキングフィルタを適用し得る。ブロッキングアーティファクトの平滑化は、ピクセル値間の急激な上昇ではなく、ブロックの一方の側からのピクセル値の変化がブロック境界にわたって平滑な遷移であるように、隣接ブロック間の境界の両側にあるピクセル間のピクセル値における急激な上昇を平均する。言い換えれば、ブロッキングアーティファクトを平滑化することにより、ピクセル値における平滑な遷移があるように、境界に近接したピクセル値が変化する量が低減する。
[0023] 本開示は、ブロックの境界までのピクセルの幾何学的距離と、ピクセル値の差分(すなわち、ピクセル値差分)とに基づいて、ブロック中のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定することの例を説明している。ブロック中のピクセルのピクセル値は、ルーマブロック中のピクセルのルーマ値、またはクロマブロックのうちの1つ中のピクセルのクロマ値のうちの1つであり得る。いくつかの例では、ビデオコーダはまた、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定するためにデブロックフィルタ処理されるべきであるピクセルの数を利用し得る。
[0024] 場合によっては、比較的大きいブロックサイズ(例えば、一例として32×32)の場合、ブロック境界に沿ったブロッキングアーティファクトは著しいことがある。例えば、ビデオコーダは、ブロックをコーディングすることの一部として変換ユニットを決定する。変換ユニットのブロックサイズが比較的大きい場合、ブロッキングアーティファクトは著しいことがある。ブロッキングアーティファクトを平滑化するために、HEVCビデオコーディング規格および他の提案における技法など、現在の技法が存在するが、そのような技法は、大きいブロックサイズの場合、ブロッキングアーティファクトを適切に平滑化しないか、またはブロッキングアーティファクトの十分な平滑化を達成するために計算および実施複雑さを大幅に増加させることがある。
[0025] 本開示で説明される技法は、幾何学的距離とピクセル値差分とに基づいてブロッキングアーティファクトを平滑化することによって、視覚的品質を改善し得る。例えば、本技法は、ピクセル距離に従ってフィルタ処理する前にピクセル値を維持し得、ここで、ピクセル距離は、幾何学的距離およびピクセル値差分の関数である。ビデオコーダはまた、処理および実施を可能にする、何らかの他の技法として、より少数のピクセルを使用してデブロックフィルタ処理を行うことが可能であり得る。
[0026] 図1は、本開示の例による技法を利用するように構成され得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されるように、システム10は、通信チャネル16を介して符号化ビデオを宛先デバイス14に送信するソースデバイス12を含む。符号化ビデオデータはまた、記憶媒体34またはファイルサーバ36に記憶され得、必要に応じて宛先デバイス14によってアクセスされ得る。記憶媒体またはファイルサーバに記憶されたとき、ビデオエンコーダ20は、コード化ビデオデータを記憶媒体に記憶するための、ネットワークインターフェース、コンパクトディスク(CD)、Blu−ray(登録商標)またはデジタルビデオディスク(DVD)バーナーまたはスタンピングファシリティデバイス、あるいは他のデバイスなど、別のデバイスにコード化ビデオデータを与え得る。同様に、ネットワークインターフェース、CDまたはDVDリーダーなど、ビデオデコーダ30とは別個のデバイスが、記憶媒体からコード化ビデオデータを取り出し得、取り出されたデータをビデオデコーダ30に与えた。
[0027] ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ワイヤレスハンドセットデバイスなどを含む、多種多様なデバイスのいずれかを備え得る。多くの場合、そのようなデバイスはワイヤレス通信が可能であり得る。従って、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。同様に、ファイルサーバ36は、インターネット接続を含む任意の標準データ接続を通して宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、ワイヤード接続(例えば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。
[0028] 本開示の例による、技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0029] いくつかの例において、本開示で説明される技法は、高効率ビデオコーディング(HEVC)規格に従うビデオコーディングにおいて特に有用であり得る。但し、本開示で説明される技法は、特定のビデオコーディング規格に限定されると見なされるべきではない。本開示で説明される技法は、非規格ベースのビデオコーディングにも適用可能であり得る。
[0030] ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、およびそれのスケーラブルビデオコーディング(SVC:Scalable Video Coding)拡張とマルチビュービデオコーディング(MVC:Multiview Video Coding)拡張とを含む、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264を含む。MVCの最新のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。
[0031] さらに、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって開発された、新開発のビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)がある。文書JCTVC−L1003v34、Brossら、「High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC:Joint Collaborative Team on Video Coding)、第12回会議、ジュネーブ、スイス、2013年1月14〜23日に記載されている、「HEVCワーキングドラフト10」または「WD10」と呼ばれるHEVCの最近のドラフトは、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v34.zipから入手可能である。
[0032] HEVCは、ITU−T WP3/16とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)によって最近開発されたビデオコーディングのための国際規格である。HEVCの範囲拡張は、YCbCr4:2:2、YCbCr4:4:4、およびRGBなど、YCbCr4:2:0以外の色空間のためにビデオコーディングを拡張することを含む。範囲拡張ドラフトは、D.Flynn、M.Naccari、C.Rosewarne、J.Sole、G.Sullivan、およびT.Suzuki、「High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 3」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、文書JCTVC−P1005、2014年1月である。さらに、スクリーンコンテンツコーディングのためのコーディング性能を改善するために、新しい規格化アクティビティが行われた。新しい規格化のためのアクティビティは、Joint Call for Proposals for Coding of Screen Content、ITU−T Q6/16およびISO/IEC JTC1/SC29/WG11、文書MPEG2014/N14175、2013年1月である。
[0033] 図1の例では、ソースデバイス12が、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含む。ソースデバイス12において、ビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得、これらは、例えば、スマートフォンまたはタブレットコンピュータ内に与えられ得る。但し、本開示で説明される技法は、一般にビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例、あるいは符号化ビデオデータがローカルディスクに記憶された適用例に適用され得る。
[0034] キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、ワイヤードまたはワイヤレス通信プロトコルなどの通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器と、フィルタと、ワイヤレス通信の場合には1つまたは複数のアンテナとを含む、データを送信するために設計された回路を含み得る。
[0035] ビデオエンコーダ20によって符号化された、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオはまた、後で消費するために記憶媒体34またはファイルサーバ36に記憶され得る。記憶媒体34は、Blu−rayディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶媒体34に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス14によってアクセスされ得る。図1には示されていないが、いくつかの例では、記憶媒体34および/またはファイルサーバ36は送信機24の出力を記憶し得る。
[0036] また、記憶媒体34およびファイルサーバ36は、ビデオエンコーダ20からビデオデータを受信するものとして示されているが、いくつかの例では、記憶媒体34およびファイルサーバ36が、ビデオエンコーダ20ではなく、送信機24または何らかの他のユニットからビデオデータを受信し得る。同様に、記憶媒体34およびファイルサーバ36は、ビデオデータをビデオデコーダ30に出力するものとして示されているが、いくつかの例では、記憶媒体34およびファイルサーバ36が、ビデオデータを、ビデオデコーダ30ではなく、受信機26または何らかの他のユニットに出力し得る。これらの例では、ビデオデコーダ30が、受信機26または何らかの他のユニットからビデオデータを受信し得る。
[0037] ファイルサーバ36は、符号化ビデオを記憶することと、その符号化ビデオを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイスに送信することとが可能な任意の他のタイプのデバイスを含む。ファイルサーバ36からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。ファイルサーバ36は、インターネット接続を含む任意の標準データ接続を通して宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(例えば、Wi−Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、イーサネット(登録商標)、USBなど)、またはその両方の組合せを含み得る。
[0038] 宛先デバイス14は、図1の例で、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。宛先デバイス14の受信機26は通信チャネル16を介して情報を受信し、モデム28は、ビデオデコーダ30のための復調されたビットストリームを生成するためにその情報を復調する。通信チャネル16を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ30が使用する、ビデオエンコーダ20によって生成された様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体34またはファイルサーバ36に記憶された符号化ビデオデータとともに含まれ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、ビデオデータを符号化または復号することが可能であるそれぞれのエンコーダデコーダ(コーデック)の一部を形成し得る。
[0039] ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14が、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14がディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0040] 図1の例では、通信チャネル16が、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は、一般に、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0041] ビデオエンコーダ20およびビデオデコーダ30は、HEVCおよび/またはHEVC規格の拡張など、ビデオ圧縮規格に従って動作し得る。HEVC範囲拡張は現在開発中である。さらに、HEVCおよびそれの拡張の説明は、例示のために与えられたものであり、限定的と見なされるべきではない。一般に、ビデオエンコーダ20およびビデオデコーダ30はビデオコーディングに関し、より具体的には、より詳細に説明されるようなデブロックフィルタ処理に関する、本開示で説明される例示的な技法を行うように構成され得る。
[0042] 図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30がそれぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットがマルチプレクサプロトコルに準拠し得る。例としては、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルがある。
[0043] ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実施され得る。本技法が部分的にソフトウェアで実施されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を行うために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0044] ビデオデコーダ30を含むデバイスの例としては、ワイヤレス通信デバイス、集積回路(IC)、およびマイクロプロセッサがある。同様に、ビデオエンコーダ20を含むデバイスの例としては、ワイヤレス通信デバイス、IC、およびマイクロプロセッサがある。
[0045] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30がそれぞれ、本開示で説明される技法を実施するように構成された1つまたは複数のプロセッサを含み得る。ビデオエンコーダ20またはビデオデコーダ30を含むデバイスはまた、ビデオエンコーダ20およびビデオデコーダ30が利用するビデオデータを記憶するメモリを含み得る。ビデオエンコーダ20とビデオデコーダ30とを含むデバイスがICチップまたはマイクロプロセッサである例では、メモリが、ICチップまたはマイクロプロセッサのローカルメモリであり得るか、あるいはICチップまたはマイクロプロセッサを含む装置(例えば、スマートフォンまたはタブレットなどのワイヤレス通信デバイス)のシステムメモリ、あるいはローカルメモリとシステムメモリとの組合せであり得る。ビデオエンコーダ20とビデオデコーダ30とを含むデバイスがワイヤレス通信デバイス(または他のそのようなデバイス)である例では、メモリが、ビデオエンコーダ20またはビデオデコーダ30のローカルメモリ、ビデオエンコーダ20またはビデオデコーダ30を含むデバイスのシステムメモリ、あるいはローカルメモリとシステムメモリとの組合せであり得る。
[0046] 本開示に従って、ビデオエンコーダ20は、デブロックフィルタ処理のための本開示の技法のいずれかまたは全てを実施し得る。同様に、ビデオデコーダ30は、デブロックフィルタ処理のためのこれらの技法のいずれかまたは全てを実施し得る。本開示で説明されるビデオコーダは、ビデオエンコーダまたはビデオデコーダを指すことがある。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指すことがある。同様に、ビデオコーディングはビデオ符号化またはビデオ復号を指すことがある。例えば、ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、本開示で説明される例示的な技法を行い得るので、「ビデオコーダ」という用語は、一般的にビデオエンコーダまたはビデオデコーダを表すために使用される。特定の符号化技法が呼び出される本開示の部分では、ビデオコーダがビデオエンコーダ20の一例を表し、特定の復号技法が呼び出される本開示の部分では、ビデオコーダがビデオデコーダ30の一例を表す。また、「コーディングする」または「コーディング」という用語は、一般的に、それぞれ、符号化する/復号するまたは符号化/復号を指すために使用される。
[0047] デジタルビデオデバイスは、デジタルビデオ情報をより効率的に符号化および復号するためのビデオ圧縮技法を実施する。ビデオ圧縮は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的(フレーム内)予測および/または時間的(フレーム間)予測技法を適用し得る。
[0048] HEVC準拠ビデオ復号デバイスは、前の生成デバイス(例えば、ITU−T H.264/AVCデバイス)に対していくつかの追加の能力をサポートする。例えば、H.264は9つのイントラ予測符号化モードを提供するが、HEVCは同数の35個のイントラ予測符号化モードをサポートする。以下のセクションは、HEVCのいくつかの態様をより詳細に論じることになる。
[0049] HEVC規格に従うビデオコーディングの場合、ビデオフレームはコーディングユニットに区分され得る。コーディングユニット(CU:coding unit)は、ビデオ圧縮のために様々なコーディングツールが適用される基本ユニットとして働く画像領域を一般に指す。CUは、通常、Yとして示されるルミナンス成分と、UおよびVとして示される2つのクロマ成分とを有する。ビデオサンプリングフォーマットに応じて、サンプルの数に関して、UおよびV成分のサイズは、Y成分のサイズと同じであるかまたはそれとは異なり得る。
[0050] CUは、一般に方形であり、例えば、ITU−T H.264などの他のビデオコーディング規格の下でのいわゆるマクロブロックと同様であると見なされ得る。HEVC規格の現在提案されている態様のいくつかに従うコーディングが例示のために本出願において説明される。但し、本開示で説明される技法は、HEVCの範囲拡張、H.264または他の規格に従って定義されるプロセスあるいはプロプライエタリビデオコーディングプロセスなど、他のビデオコーディングプロセスのために有用であり得る。
[0051] HEVCによれば、CUは、1つまたは複数の予測ユニット(PU:prediction unit)および/または1つまたは複数の変換ユニット(TU:transform unit)を含み得る。ビットストリーム内のシンタックスデータは、ピクセルの数に関して最大CUである最大コーディングユニット(LCU:largest coding unit)を定義し得る。一般に、CUは、CUがサイズの差異を有しないことを除いて、H.264のマクロブロックと同様の目的を有する。従って、CUはサブCUに分割され得る。一般に、本開示におけるCUへの言及は、ピクチャの最大コーディングユニットまたはLCUのサブCUを指すことがある。LCUはサブCUに分割され得、各サブCUはさらにサブCUに分割され得る。ビットストリームのためのシンタックスデータは、CU深度と呼ばれる、LCUが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示ではまた、CU、PU、またはTUのいずれかを指すために「ブロック」または「部分」という用語を使用する。一般に、「部分」は、ビデオフレームの任意のサブセットを指し得る。
[0052] LCUは4分木データ構造に関連し得る。一般に、4分木データ構造はCUごとに1つのノードを含み、ルートノードはLCUに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのためのシンタックスデータを与え得る。例えば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的な分割が存在しなくても、リーフCUの4つのサブCUがリーフCUとも呼ばれる。例えば、16×16サイズのCUがさらに分割されない場合、その16×16CUが決して分割されなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
[0053] リーフCUは1つまたは複数のPUを含み得る。一般に、PUは、対応するCUの全部または一部分を表し、そのPUのための参照サンプルを取り出すためのデータを含み得る。例えば、PUがインターモード符号化されるとき、PUは、PUのための動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルが指す参照フレーム、および/または動きベクトルの参照リスト(例えば、リスト0もしくはリスト1)を記述し得る。(1つまたは複数の)PUを定義するリーフCUのためのデータはまた、例えば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかに応じて異なり得る。イントラコーディングの場合、PUは、以下で説明されるリーフ変換ユニットと同じように扱われ得る。
[0054] HEVC規格は、CUごとに異なり得る変換ユニット(TU)に従う変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるかまたはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルが、「残差4分木」(RQT:residual quad tree)と呼ばれる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換係数を生成するために変換され得、その変換係数は量子化され得る。TUは、ルーマ変換ブロックと2つのクロマ変換ブロックとを含む。従って、TUに適用される、以下で説明される任意のコーディングプロセスは、実際には、ルーマおよびクロマの変換ブロックに適用され得る。
[0055] 一般に、PUは、予測プロセスに関係するデータを指す。例えば、PUがイントラモード符号化されるとき、PUは、PUのためのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための動きベクトルを定義するデータを含み得る。
[0056] 一般に、TUは、変換プロセスと量子化プロセスとのために使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUをも含み得る。予測に続いて、ビデオエンコーダ20は、PUに従ってコーディングノードによって識別されたビデオブロックから残差値を計算し得る。コーディングノードは、次いで、元のビデオブロックではなく、残差値を参照するように更新される。残差値はピクセル差分値を備え、ピクセル差分値は、エントロピーコーディングのためのシリアル化変換係数(serialized transform coefficient)を生成するためにTU中で指定された変換と他の変換情報とを使用して変換係数に変換され、量子化され、走査され得る。コーディングノードは、これらのシリアル化変換係数を参照するように、もう一度更新され得る。本開示は、一般に、CUのコーディングノードを指すために「ビデオブロック」という用語を使用する。いくつかの特定の場合において、本開示は、コーディングノード並びにPUおよびTUを含む、ツリーブロック、すなわち、LCUまたはCUを指すためにも「ビデオブロック」という用語を使用し得る。
[0057] ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は、一般に、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックはCU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
[0058] ブロック(例えば、ビデオデータの予測ユニット)をコーディングするために、ブロックの予測子が最初に導出される。予測ブロックとも呼ばれる予測子は、イントラ(I)予測(すなわち、空間的予測)またはインター(PまたはB)予測(すなわち時間的予測)のいずれかを通して導出され得る。従って、いくつかの予測ユニットは、同じフレーム(またはスライス)中の隣接参照ブロック中の参照サンプルに対する空間的予測を使用してイントラコーディング(I)され得、他の予測ユニットは、前にコーディングされた他のフレーム(またはスライス)中の参照サンプルのブロックに対して単方向にインターコーディング(P)されるかまたは双方向にインターコーディング(B)され得る。各場合において、参照サンプルは、コーディングされるべきブロックの予測ブロックを形成するために使用され得る。
[0059] 予測ブロックの識別時に、元のビデオデータブロック中のピクセルとそれの予測ブロック中のピクセルとの間の差分が決定される。この差分は予測残差データと呼ばれることがあり、コーディングされるべきブロック中のピクセル値と、コード化ブロックを表すように選択された予測ブロック中のピクセル値との間のピクセル差分を示す。より良好な圧縮を達成するために、予測残差データは、例えば、離散コサイン変換(DCT)、整数変換、カルーネン−レーベ(Karhunen-Loeve)(K−L)変換、または変換係数を生成するための別の変換を使用して変換され得る。
[0060] TUなどの変換ブロック中の残差データは、空間的ピクセル領域に存在するピクセル差分値の2次元(2D)アレイで構成され得る。変換は、周波数領域などの変換領域において残差ピクセル値を変換係数の2次元アレイに変換する。
[0061] さらなる圧縮のために、変換係数は、エントロピーコーディングに先立って量子化され得る。次いで、エントロピーコーダは、量子化変換係数に、コンテキスト適応型可変長コーディング(CAVLC:Context Adaptive Variable Length Coding)、コンテキスト適応型バイナリ算術コーディング(CABAC)、確率間隔区分エントロピーコーディング(PIPE)などのエントロピーコーディングを適用する。いくつかの例では、ビデオエンコーダ20が、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20が適応走査を行い得る。1次元ベクトルを形成するために量子化変換係数を走査した後に、ビデオエンコーダ20は1次元ベクトルをエントロピー符号化し得る、ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用する、符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0062] 算術コーディングは、シンボルを非整数長さコードワードにマッピングすることが可能であるので、高いコーディング効率を有する多くの圧縮アルゴリズムにおいて使用されるエントロピーコーディングの形態である。CABACコーディングは、ある情報に適用され、他の情報についてバイパスされ得る。
[0063] ビデオデコーダ30は、ブロックを復号するためにビデオエンコーダ20のプロセスの逆を行う。例えば、ビデオデコーダ30は、ビットストリームから受信された係数データからTUを決定し、ビットストリームからの動きベクトル情報またはイントラコーディングモード情報から予測子を識別する。ビデオデコーダ30は、次いで、ブロックを生成するためにTUに予測子を加算する。
[0064] 上記で説明されたように、ビデオエンコーダ20およびビデオデコーダ30は、本開示で説明される例示的なデブロックフィルタ処理技法を実施するように構成され得る。例えば、ビデオコーダ(例えば、ビデオエンコーダ20またはビデオデコーダ30)は、ブロック境界に沿ったブロッキングアーティファクトを除去するためにデブロックフィルタ処理を行い得る。ブロッキングアーティファクトは、閲覧者がビデオブロックの境界を見ることができるビデオコンテンツ欠陥を指す。デブロックフィルタ処理は、閲覧者がビデオブロックを知覚しない(すなわち、あるブロックから別のブロックへのビデオコンテンツの急激な変化がない)ように、境界に近接したピクセルのピクセル値を平滑化する。
[0065] しかしながら、デブロックフィルタ処理は、同様にビデオコンテンツを過剰平滑化すべきではなく、従って、過剰平滑化は視覚的品質を劣化させる。さらに、場合によっては、ビデオコンテンツ自体が急激な変化を含み得、デブロックフィルタ処理は、そのような変化を過度に平滑化すべきではない。例えば、現実画像エッジ(例えば、例示的な例として、白いバックグラウンド上に黒い前景物体を用いて形成されたエッジ)では、デブロックフィルタ処理が、そのような現実画像エッジ上で平滑化すべきではない。
[0066] 現在、HEVC規格は、大きいブロックサイズ変換(例えば、比較的大きいTUサイズ)を使用し、それにより、ブロック境界に沿った著しいブロッキングアーティファクトが生じることがある。HEVCは、強フィルタ処理方法を有する、ループ内デブロックフィルタ処理方式を含む。しかしながら、ブロックサイズが大きいとき、激しいブロッキングアーティファクトを処理するための非効率があることがわかっている。
[0067] この問題を解決するために、HEVCための多くの提案が行われた。Z.Shi、X.Sun、およびJ.Xu、「CE12, Subset 1: Report of deblocking for large size blocks」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、文書JCTVC−G409、2011年11月において、より大きい変換ブロックの境界を平滑化するために、より長いフィルタが提案された。G.Van der Auwera、R.Joshi、およびM.Karczewicz、「Non-CE1: Deblocking of Large Block Artifacts」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、文書JCTVC−K138、2012年10月、S.Lu、O.Nakagami、およびT.Suzuki、「CE1: On deblocking filter」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、文書JCTVC−K149、2012年10月、S.Lu、O.Nakagami、およびT.Suzuki、「NonCE1: Simple improvement of Deblocking filter」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、文書JCTVC−K150、2012年10月、並びに、D.−K.KwonおよびM.Budagavi、「Non-CE1: Suppression of blocking artifacts at large TU boundaries」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11、文書JCTVC−K269、2012年10月において、大きい変換ブロック(例えば、TU)サイズのために、デブロックフィルタ処理パラメータが調整されている。これらの技法は、より大きい変換ブロックの境界に沿ったブロッキングアーティファクトを減衰するのを助けることができた。しかしながら、HEVCの変更は行われなかった。
[0068] Google VP9、A.GrangeおよびH.Alvestrand、「A VP9 Bitstream Overview」、ネットワークワーキンググループ、IETF、2013年2月において、ブロッキングアーティファクトを低減するために、長いフィルタが使用され、これは、「CE12, Subset 1: Report of deblocking for larger size blocks」と同様である。「CE12, Subset 1: Report of deblocking for larger size blocks」と「Non-CE1: Suppression of blocking artifacts at large TU boundaries」の両方は、大きい変換ブロックの境界に沿ったブロッキングアーティファクトを低減できる。しかしながら、これらの技法は、ブロック境界に沿った多くのピクセルにアクセスすることを必要とし、それにより、計算および実施複雑さが増加する。また、それらにおけるフィルタは、極めて強いローパスフィルタであり、それらは過剰平滑化を行い、視覚品質劣化をもたらすことがある。一方、「Non-CE1:Deblocking of Large Block Artifacts」、「CE1: On deblocking filter」、「NonCE1: Simple improvement of Deblocking filter」、および「Non-CE1: Suppression of blocking artifacts at large TU boundaries」において提案されるような、デブロックフィルタパラメータを変更することによる性能(performance)は、境界に沿って変更されるピクセルの数が十分でないので制限され得、場合によっては、これらの方法により、現実画像エッジの平滑化が生じることがあり、これは視覚的品質を劣化させる。
[0069] 本開示で説明される例示的な技法は、デブロックフィルタ処理のための上で説明された問題のうちの1つまたは複数を克服し得る。例えば、本開示は、ブロッキングアーティファクトを低減するための新しいフィルタ設計について説明している。本開示で説明される技法は、ピクセル距離(例えば、定義されたピクセル距離)に従ってフィルタ処理する前にピクセル値を維持することによって、視覚的品質を改善する。それはまた、処理および実施を可能にする、「CE12, Subset 1:Report of deblocking for large size blocks」および「Non-CE1:Suppression of blocking artifacts at large TU boundaries」に記載する技法など、上で説明された他の技法の全てではないにしても、少なくともいくつかと比較して、フィルタ処理のためにより少数のピクセルを必要とする。
[0070] いくつかの例では、ビデオエンコーダ20が、符号化されているブロックの再構成の一部としてデブロックフィルタ処理を行い得る。例えば、上で説明されたように、ビデオエンコーダ20は、残差データを含むTUを決定する。TUは、次いで、変換され、量子化される。さらに、ビデオエンコーダ20は、TUを再構成するために、ブロックを逆量子化し、逆変換する。ビデオエンコーダ20は、再構成されたブロックを生成するために、再構成されたTUに予測子を加算する。本開示で説明される技法において、ビデオエンコーダ20は、ブロックが、後続のブロックのインター予測またはイントラ予測符号化のために使用され得るように、ビデオエンコーダ20が復号ピクチャバッファ(DPB)に記憶する、フィルタ処理された再構成されたブロックを生成するために、本開示で説明される技法を利用して、再構成されたブロックをデブロックフィルタ処理し得る。
[0071] ビデオデコーダ30は、ブロックを生成することの一部としてデブロックフィルタ処理を行い得る。例えば、ビデオデコーダ30は、ブロックの係数を受信し、TUを再構成するためにブロックを逆量子化し、逆変換する。ビデオデコーダ30は、再構成されたブロックを生成するために、再構成されたTUに予測子を加算する。ビデオデコーダ30は、ブロックが、後続のブロックのインター予測またはイントラ予測復号のために、およびディスプレイのための復号されたビデオの出力のために使用され得るように、ビデオデコーダ30がそれのDPBに記憶する、フィルタ処理された再構成されたブロックを生成するために、本開示で説明される技法を利用して、再構成されたブロックをデブロックフィルタ処理し得る。
[0072] 本開示で説明される技法において、ビデオコーダ(例えば、ビデオエンコーダ20またはビデオデコーダ30)は、第1のブロックの第1のピクセルから第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定し得る。ビデオコーダは、第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定し得る。ビデオコーダは、幾何学的距離とピクセル値差分とに基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し、デブロックフィルタ処理すべき量に基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理し得る。図4に示す例とともに、デブロックフィルタ処理技法の例が与えられる。
[0073] 図4は、ブロック境界にわたるピクセル位置に対するピクセル値の一例を示す概念図である。例えば、図4は、ブロック84Aとブロック84Bとを示している。図4は、「|」がブロック84Aとブロック84Bとの間のブロック境界86である一例を示している。ブロック境界86は、2つの隣接TU間の境界であり得るが、いくつかの例で、2つの隣接PU間の境界であり得る。境界86が2つのTU間の境界である例では、ブロック84Aとブロック84Bが両方ともTUであり得る。境界86が2つのPU間の境界である例では、ブロック84Aとブロック84Bが両方ともPUであり得る。
[0074] 境界86は、水平ブロック境界または垂直ブロック境界のいずれかであり得る。例として、境界86は垂直ブロック境界として示されている。しかしながら、例示的な技法は、境界が水平である場合に等しく適用可能である。
[0075] ブロック84Bは、コーディング(例えば、符号化または復号)されている現在ブロックであり得、ブロック84Aは、前にコーディングされたブロックであり得る。例えば、ブロック84AはビデオコーダのDPBに記憶され得る。この例では、ブロック84Bが、デブロックフィルタ処理の前の再構成されたブロック(例えば、再構成されたTU+予測子)であり得る。
[0076] また、この例では、ブロック84Aの一部が、すでにデブロックフィルタ処理されていることがあるが、ブロック84Aの右端境界は、まだデブロックフィルタ処理されていないことがある(例えば、ピクセルp(0)〜p(N−1))。例えば、ビデオコーダは、左側のブロック84Aに隣接するブロックの右端境界に近接したピクセルとともに、ブロック84Aの左端境界に近接したピクセルをデブロックフィルタ処理していることがある。ビデオコーダは、ブロック84Aとして得られたブロックをビデオコーダのDPBに記憶し、次に、ブロック84Bの左端境界に近接したピクセル(例えば、ピクセルq(0)〜q(N−1))をデブロックブロックフィルタ処理するために、ブロック84Aを取り出していることがある。同様に、ビデオコーダがブロック84Bの右側のブロックをコーディングしているとき、ビデオコーダは、ブロック84Bの右端境界に近接したピクセルをデブロックフィルタ処理するであろう。ビデオコーダは、(例えば、境界が水平境界である場合)ブロック84Bの上および下のブロックに基づいて、同様のデブロックフィルタ処理を行い得る。いくつかの例で、デブロッキングの一部として、ビデオコーダは、ブロック84Aのある部分がすでにデブロックフィルタ処理された場合、ブロック84Aのピクセルp(0)〜p(N−1)をデブロックフィルタ処理し、ブロック84Bが、符号化または復号されている現在ブロックである場合、ブロック84Bのピクセルq(0)〜q(N−1)をデブロックフィルタ処理し得る。
[0077] 図4では、ブロック84Aのピクセルが、それぞれ、ピクセル値p(0)〜p(N−1)をもつピクセル0〜N−1であり、ブロック84Bのピクセルは、それぞれ、ピクセル値q(0)〜q(N−1)をもつピクセル0〜N−1である。ブロック中のピクセルのピクセル値は、ルーマブロック中のピクセルのルーマ値、またはクロマブロックのうちの1つ中のピクセルのクロマ値のうちの1つであり得る。例えば、p(0)〜p(N−1)は、ブロック84Aがルーマブロックである例で、ピクセルのルーマ値に対応するか、または、ブロック84Aがクロマブロックのうちの1つである例で、ピクセルのクロマ値のうちの1つに対応し得る。同様に、q(0)〜q(N−1)は、ブロック84Bがルーマブロックである例で、ピクセルのルーマ値に対応するか、または、ブロック84Bがクロマブロックのうちの1つである例で、ピクセルのクロマ値のうちの1つに対応し得る。
[0078] ピクセル値p(0)〜p(N−1)をもつピクセルは同じ行中にあり得、ピクセル値q(0)〜q(N−1)をもつピクセルは、同じ行中にあり、ピクセル値p(0)〜p(N−1)をもつピクセルと同じ行中にあり得る。変数「N」は、デブロックフィルタ処理されるべきであるピクセルの数(すなわち、ブロック84A中のN−1個のピクセルおよびブロック84B中のN−1個のピクセル)を示す。
[0079] 図4に示されるように、ピクセル値p(0)〜p(N−1)をもつピクセルは全て、境界86に近接しており、境界86から徐々に遠ざかる。例えば、ブロック84Aのピクセル値p(0)をもつピクセルは境界86に最も近く、ブロック84Aのピクセル値p(1)をもつピクセルは次に最も近く、ブロック84Aのピクセル値p(N−1)をもつピクセルは境界86から最も離れている。同様に、ピクセル値q(0)〜q(N−1)をもつピクセルは全て、境界86に近接しており、境界86から徐々に遠ざかる。例えば、ブロック84Bのピクセル値q(0)をもつピクセルは境界86に最も近く、ブロック84Bのピクセル値q(1)をもつピクセルは次に最も近く、ブロック84Bのピクセル値q(N−1)をもつピクセルは境界86から最も離れている。また、ピクセル値p(0)をもつピクセルとピクセル値q(0)をもつピクセルとは境界86までの距離が等距離であり得、ピクセル値p(1)をもつピクセルとピクセル値q(1)をもつピクセルとは境界86までの距離が等距離であり得、以下同様である。
[0080] より一般的には、境界86へのピクセル値p(i)をもつピクセルの間の距離は、境界86へのピクセル値q(i)をもつピクセルの間の距離に等しい。言い換えれば、p(i)およびq(i)が、ブロック境界86に対する各側において位置iにおけるピクセル値を示すとし、ここで、iは、境界86から最も近いピクセルの場合に0であり、その位置が境界86から遠ざかるにつれて増加する。
[0081] 図4に示されるように、それぞれ、ブロック84Aおよびブロック84B中の最も近いピクセルのためのピクセル値である、ピクセル値p(0)とピクセル値q(0)との間の急激な変化がある。ピクセル値p(0)とピクセル値q(0)との間の急激な変化により、ブロック84Aとブロック84Bとの間にブロックアーティファクトが生じ得る。そのようなブロックアーティファクトは、ビデオコンテンツの視覚的品質の低減を引き起こす。本開示で説明されるデブロックフィルタ処理技法は、視覚的品質を劣化させる過剰平滑化を行うことなく、計算効率のよい方式でそのようなブロックアーティファクトを低減し得る。
[0082] 一般に、ビデオコーダは、少なくとも2つのピクセル間のピクセル値差分と、幾何学的距離とに基づいて、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定する。本開示では、「ピクセル距離」という用語が、ピクセルのピクセル値をデブロックフィルタ処理すべき量として定義され、ピクセル値差分と幾何学的距離との関数である。
[0083] 例えば、ピクセル距離l(例えば、デブロックフィルタ処理すべき量を決定するために使用される値)はl(i)=f(n(i),d(i))として定義され、ここで、nは、変更される(例えば、デブロックフィルタ処理される)べきピクセルとブロック境界(例えば、境界86)のロケーションとの間の幾何学的距離を示し、dは、ブロック境界86に対するピクセル値間のピクセル値距離(例えば、差分)を示す。いくつかの例では、l(i)の値が、ピクセルのピクセル値をデブロックフィルタ処理すべき量に等しい。いくつかの例では、l(i)の値が、さらに、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定するために変更され得る。
[0084] いくつかの例では、ビデオコーダが、ピクセルと境界86との間のピクセルの数に基づいてピクセルの幾何学的距離を決定し得る。一例として、幾何学的距離nは、変更される(例えば、デブロックフィルタ処理される)べきピクセルとブロック境界86との間のピクセルの数に従って設定され得る。例えば、nは、p(0)およびq(0)の場合に0であり、nは、p(1)およびq(1)の場合に1であり、以下同様である。これは、式n(i)=i、i=0...N−1を暗示し、ここで、iはピクセルインデックスである。
[0085] 上の例では、p(0)とq(0)との間の距離が無視される(すなわち、0に設定される)。幾何学的距離nは、p(0)とq(0)との間の距離を考慮して(すなわち、ピクセル値p(0)をもつピクセルおよびピクセル値q(0)をもつピクセルと境界86とからの距離が0でない例では)設定され得る。例えば、nは、p(0)およびq(0)の場合に0.5に設定される。次いで、nは、p(1)およびq(1)の場合に1.5であり、p(2)およびq(2)の場合に2.5であり、以下同様である。従って、この例でも、ピクセルの幾何学的距離は、ピクセルと境界86との間のピクセルの数に基づき得る。これは、式n(i)=(2×i+1)/2を暗示する。
[0086] 上記は、境界86までのデブロックフィルタ処理されるべきであるピクセルの幾何学的距離を決定するための例示的な方式を説明している。境界86までのピクセルの幾何学的距離を決定するための他の方式があり得る。例えば、境界86から0単位または0.5単位離れているピクセル値p(0)およびq(0)をもつピクセルが、例示のために与えられる。ピクセル値p(0)およびq(0)をもつピクセルと境界86との間の距離は0または0.5とは異なり得る。
[0087] 以下は、ピクセル値差分を決定するための例示的な方式を説明している。いくつかの例では、ピクセル値差分が、デブロックフィルタ処理されるべきピクセルと別のピクセルとの間のものであり得る。しかしながら、本技法は、そのように限定されない。いくつかの例では、ピクセル値差分が2つのピクセル間のものであり得、それらのいずれも、デブロックフィルタ処理されるべきピクセルではない。
[0088] ビデオコーダは、q(j)−p(i)のように、一方を他方から減算することによって、2つのピクセル値p(i)とq(j)との間のピクセル値差分を計算する。ピクセル値距離dは、ピクセルp(N−1)p(N−2)...p(1)p(0)およびq(0)q(1)...q(N−2)q(N−1)の全部または一部間のピクセル値差分を考慮することによって計算され得る。
[0089] 一例として、位置iにおけるd、すなわちd(i)が、d(i)=q(0)−p(0)、またはd(i)=(q(0)−p(0))/2として設定され得る。この場合、d(i)は、全てのピクセル位置に対して同じである。例えば、ビデオコーダは、境界86に最も近いブロック84Aのピクセルのピクセル値(例えば、p(0))と、境界86に最も近いブロック84Bのピクセルのピクセル値(例えば、q(0))とに基づいて、ピクセル値差分を決定し得る。
[0090] この例では、ビデオコーダがピクセル値差分を決定するが、ピクセル値差分は、デブロックフィルタ処理されるべきピクセルに基づかないことがある。例えば、ピクセル値p(1)をもつピクセル(すなわち、境界86に最も近いピクセルの後のピクセル)がデブロックフィルタ処理されるべきであると仮定する。この例では、ピクセル値p(1)をもつピクセルのためのピクセル値差分が、q(0)およびp(0)のピクセル値差分に基づく。この例では、ビデオコーダが、ピクセル値のいずれも、必ずしもフィルタ処理されているピクセルのためのものであるとは限らない、2つのピクセル間のピクセル値差分を決定し、ピクセル値をデブロックフィルタ処理すべき量を決定するために使用されるピクセル値差分を決定するために、その結果を2で除算する。
[0091] また、この例では、ピクセル値差分について、ピクセルのうちの一方がブロック84Aからであり(ピクセル値p(0)をもつピクセル)、他方のピクセルがブロック84Bからである(q(0)ピクセル値をもつピクセル)。その上、この例では、ビデオコーダが、ピクセル値差分を決定するためにフィルタ処理されるべきピクセルを使用しないことがあるが、ビデオコーダが、(例えば、上で説明されたn(i)のための式のうちの1つを使用して)幾何学的距離を決定するためにフィルタ処理されるべきピクセルを使用し得る。
[0092] 別の例として、dは、ピクセルロケーションに従って変更され得る。例えば、d(i)は、d(i)=q(i)−p(i)またはd(i)=((q(i)−p(i))/2として位置iにおける各ピクセルについて設定され得る。例えば、ビデオコーダは、ブロック84A中のピクセルのピクセル値と、ブロック84B中のピクセルのピクセル値とに基づいて、ピクセル値差分を決定し得、ここで、それぞれのブロック84Aおよび84B中のピクセルは、境界86に対して同じ距離である。言い換えれば、ブロック84A中のピクセル値p(i)をもつピクセルは、ブロック84B中のピクセル値q(i)をもつピクセルと境界86までの距離が等距離である。
[0093] この例では、ビデオコーダがピクセル値差分を決定し、ピクセル値差分は、デブロックフィルタ処理されるべきピクセルに基づく。例えば、ピクセル値p(1)をもつピクセル(すなわち、境界86に最も近いピクセルの後のピクセル)がデブロックフィルタ処理されるべきであると仮定する。この例では、ピクセル値p(1)をもつピクセルのためのピクセル値差分が、q(1)およびp(1)のピクセル値差分に基づく。この例では、ビデオコーダが、ピクセル値のうちの一方が、フィルタ処理されているピクセルのためのものである、2つのピクセル間のピクセル値差分を決定し、ピクセル値をデブロックフィルタ処理すべき量を決定するために使用されるピクセル値差分を決定するために、その結果を2で除算する。
[0094] 上記のように、この例では、ピクセル値差分について、ピクセルのうちの一方がブロック84Aからであり(ピクセル値p(i)をもつピクセル)、他方のピクセルがブロック84Bからである(ピクセル値q(i)をもつピクセル)が、ピクセル値差分を決定するために使用されるピクセルのうちの少なくとも1つは、デブロックフィルタ処理されるべきであるピクセルである(例えば、ピクセル値p(i)をもつピクセルおよびピクセル値q(i)をもつピクセルは、デブロックフィルタ処理されるべきである)。また、幾何学的距離は、境界86までのフィルタ処理されるべきピクセルの距離に基づいて決定される。
[0095] 別の例では、d(i)が、d(i)=q(0)−p(i)、d(i)=q(i)−p(0)、(q(0)−p(i))/2、またはd(i)=(q(i)−p(0))/2として設定され得る。この例では、ビデオコーダが、フィルタ処理されるべきであるピクセルのピクセル値(例えば、p(i)またはq(i))と、境界86に最も近い他のブロック中のピクセルのピクセル値とに基づいて、ピクセル値差分を決定する。例えば、ブロック84A中のi番目のピクセルのためのピクセル値差分はp(i)およびq(0)に基づき、ここで、q(0)は、境界86に最も近い、およびブロック84B中にあるピクセルのためのピクセル値である。
[0096] 別の例として、位置iにおけるd、すなわちd(i)は、d_p(i)=p(i+1)−p(i−1)、または(p(i+1)−p(i−1))/2、およびd_q(i)=q(i+1)−q(i−1)、または(q(i+1)−q(i−1))/2として、隣接ピクセルを使用して計算され得る。この場合、それぞれ、p(−1)はq(0)として設定され得、q(−1)はp(0)として設定され得る。この例では、ビデオコーダが、デブロックフィルタ処理されるべきピクセルに隣接するピクセルのピクセル値に基づいて、ピクセル値差分を決定する。言い換えれば、ビデオコーダは、デブロックフィルタ処理されるべきピクセルの第1の隣接ピクセルと、デブロックフィルタ処理されるべきピクセルの第2の隣接ピクセルとに基づいて、ピクセル値差分を決定する。2つの隣接ピクセルは同じ行または列中にあり得る。ビデオコーダは、デブロックフィルタ処理されるべき実際のピクセルのピクセル値を使用しないことがあるが、デブロックフィルタ処理されるべき実際のピクセルのピクセル値を利用することが可能であり得る。
[0097] また、隣接ピクセルは、境界86の最も近くに配置されたピクセルを除いて、デブロックフィルタ処理されるべきピクセルと同じブロック中にあり得る。例えば、ピクセル値p(0)をもつピクセルがデブロックフィルタ処理されるべきであると仮定する。ピクセル値p(0)をもつピクセルに対する隣接ピクセルはp(1)およびq(0)である。ピクセル値p(1)をもつピクセルは、ピクセル値p(0)をもつピクセルと同じブロック(例えば、ブロック84A)中にあるが、ピクセル値q(0)をもつピクセルは異なるブロック(例えば、ブロック84B)中にある。
[0098] いくつかの例で、dは、重み付き和としてピクセル値差分のうちの複数を組み合わせることによって計算され得る。例えば、d(i)=Σjw(j)×d(j)であり、ここで、Σjw(j)=1、j=0...N−1である。この例で、ピクセル値差分は、複数のピクセルのピクセル値のピクセル値差分の重み付けに基づく。いくつかの例で、ピクセル値差分は、q(j)−p(j)がd(j)に等しい場合など、デブロックフィルタ処理されるべきピクセルの全てのためのピクセル値のピクセル値差分の重み付けに基づく。一般に、d(j)の式は、d(i)の上記の例示的な式のいずれかの式であり得る。
[0099] この例で、ビデオコーダは、少なくともピクセル値差分のための重み付け(例えば、d(j)の少なくとも1つのインスタンスのための重み付け、ここで、d(j)の式は、d(i)のための上記の式のいずれかに等しい)を決定し得る。いくつかの例で、ビデオコーダは、ピクセル値差分の各々のための重み付け(例えば、d(j)のあらゆるインスタンスのための重み付け)を決定し得る。Σjw(j)=1、j=0...N−1の重み付け式は重み付け式の一例であり、ビデオコーダは、ピクセル値差分のための重み付け(すなわち、d(j))を決定するために他の技法を利用し得る。
[0100] ピクセル値差分(例えば、d(i))と境界86までのフィルタ処理されるべきピクセルの幾何学的距離(例えば、n(i))とを用いて、ビデオコーダは、ピクセルをデブロックフィルタ処理すべき量を決定し得る(すなわち、ピクセル距離は、d(i)とn(i)とを組み合わせることによって形成され得る)。例えば、l(i)は、両方の項を乗算することによって計算され得る。ビデオコーダがデブロックフィルタ処理すべき量を決定し得る1つの例示的な方式は、l(i)=d(i)×(N−n(i))/Nである。言い換えれば、ビデオコーダは、ピクセル値差分、境界からのピクセルの幾何学的距離、およびいくつかの例で、デブロックフィルタ処理されるべきピクセルの数(例えば、N)に基づいて、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し得る。
[0101] ビデオコーダは、以下の式、p’(i)=g1(l,p(i))、およびq’(i)=g2(l,q(i))に基づいて、ピクセル値をフィルタ処理し得る(すなわち、その場合、各ピクセル値は変更される)。関数g1およびg2の例として、ビデオコーダは、以下の式、p’(i)=p(i)+l(i)、およびq’(i)=q(i)−l(i)を行い得る。これらの式において、p’(i)は、ブロック84A中のi番目のピクセルのためのデブロックフィルタ処理されたピクセル値を表し、q’(i)は、ブロック84B中のi番目のピクセルのためのデブロックフィルタ処理された値を表す。
[0102] しかしながら、場合によっては、l(i)が正値である場合、p’(i)が最大許容ピクセル値よりも大きいか、またはq’(i)が最小許容ピクセル値よりも小さいことが可能であり得る。l(i)が負値である場合、p’(i)が最小許容ピクセル値よりも小さく、q’(i)が最大許容ピクセル値よりも大きいことが可能であり得る。例えば、最小ピクセル値は0であり得、最大ピクセル値は255であり得る。
[0103] いくつかの例では、デブロックフィルタ処理されたピクセルのピクセル値が最大許容ピクセル値よりも小さいかまたはそれに等しく、最小許容ピクセル値よりも大きいかまたはそれに等しいことを保証するために、ビデオコーダは、g1およびg2関数の追加の例である、以下の式、p’(i)=clip(Min,Max,p(i)+l(i))、およびq’(i)=clip(Min,Max,q(i)−l(i))を行い得、ここで、MinおよびMaxは、最小ピクセルサンプル値および最大ピクセルサンプル値を表す。このようにして、p(i)+l(i)が最大値よりも大きいかまたは最小値よりも小さい場合、ビデオコーダは、デブロックフィルタ処理されたピクセルのピクセル値をクリッピングして、それぞれ、MaxまたはMinにする。同様に、q(i)−l(i)が最大値よりも大きいかまたは最小値よりも小さい場合、ビデオコーダは、デブロックフィルタ処理されたピクセルのピクセル値をクリッピングして、それぞれ、MaxまたはMinにする。
[0104] さらに、いくつかの例では、ピクセルのピクセル値がデブロックフィルタ処理される量を制限することが可能であり得る。例えば、HEVCにおけるデブロックフィルタ処理プロセスでは、変更可能なピクセル値(例えば、ピクセルのピクセル値がフィルタ処理される量)が制限され、制限を設定するためのしきい値がシグナリングされ得る。同様にして、l(i)は、しきい値を使用してクリッピングされ得る。例えば、ビデオエンコーダ20は最大許容調整しきい値(すなわち、l(i)の絶対値が、最大許容調整しきい値よりも小さいかまたはそれに等しい)をシグナリングし得、ビデオデコーダ30はそのようなしきい値を受信し得る。いくつかの例では、HEVCデブロックフィルタのためのしきい値が、一定値を使用してそれをスケーリングすることによって使用され得るか、または、最大許容調整しきい値を決定するために、別個の値がビットストリーム中でシグナリングされ得る。ピクセル値が変更され(例えば、フィルタ処理され)得る量を制限することは、あらゆる例において必要であるとは限らないことを理解されたい。
[0105] このようにして、ビデオコーダは、境界までのピクセルのピクセル距離(すなわち、ここで、ピクセル距離は、ピクセル値差分とブロックの境界までの幾何学的距離とに基づく)基づいて、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し得る。例えば、l(i)は、境界までのピクセルの距離の関数である値である。いくつかの例では、l(i)がオフセット値と見なされ得る。いくつかの例では、ピクセルの数(n)が少なくとも8に等しい。
[0106] いくつかの例では、l(i)が、境界により近いピクセルの場合により大きく、境界からより遠いピクセルの場合により小さくなり得る。例えば、l(i)のための式の一例はd(i)×(N−n(i))/Nである。n(i)の値は、境界86からより遠く離れたピクセルの場合により大きく、境界86により近いピクセルの場合により低くなり得る。従って、N−n(i)の値は、境界86からより遠く離れたピクセルの場合により小さく、境界86により近いピクセルの場合により大きい。従って、l(i)は、境界86により近いピクセルの場合により大きく、境界86からより遠く離れたピクセルの場合により小さい。
[0107] 上記の説明は、ビデオコーダ(例えば、ビデオエンコーダ20またはビデオデコーダ30)が、長いフィルタ処理プロセスと呼ばれることもある、デブロックフィルタ処理を行う方式のための例を与えるものである。しかしながら、ビデオコーダは、全ての事例においてデブロックフィルタ処理を行うとは限らない。以下は、長いフィルタ処理プロセスが呼び出されるときの条件(例えば、ビデオコーダが、本開示で説明されるデブロックフィルタ処理技法を行うときの例)を説明している。
[0108] 例えば、ビデオコーダは、シャープエッジまたはテクスチャをもつエリアがデブロッキングフィルタによって過剰平滑化されないように、平滑なエリアのみに長いフィルタを適用し得る。上で説明されたように、デブロッキングフィルタ処理技法によって行われる平滑化により、ピクセル値が境界の両側で変化する量が低減する。しかしながら、ビデオコンテンツは、ビデオコンテンツ中にエッジがあるようなものであり得る。これらのエッジを平滑化すること(例えば、過剰平滑化)は視覚的品質に悪影響を及ぼし得る。
[0109] 例えば、ビデオブロック中で、2つの隣接ピクセル間のピクセル値の急激な変化があるときにエッジが発生し得(一例として、ブロック内の白い部分に隣接する黒い部分など、但し、エッジのそれほどひどくない例もある)、そのような部分を平滑化することが視覚的品質を劣化させ得る。この例では、デブロックフィルタ処理が、白い部分へのブロック部分遷移であった部分に適用された場合に、結果が、エッジにおいて灰色になること(例えば、過剰平滑化)であり、ビデオ品質の劣化を引き起こすことになる。従って、極端な自然エッジがある部分(例えば、ビデオコンテンツ自体がピクセル値の急激な変化を含む部分)においてデブロックフィルタ処理技法を適用せず、極端な自然エッジがない部分(例えば、ビデオコンテンツ自体でなく、ビデオコーディングの一部として追加されたブロッキングアーティファクトが除去されたような、比較的平滑であるビデオコンテンツ)においてデブロックフィルタ処理技法を適用することは有益であり得る。
[0110] いくつかの例では、ビデオコーダが、勾配によってローカルエリアの平滑度を決定し得る。勾配からの決定された平滑度の結果に基づいて、ビデオコーダはデブロッキングフィルタを行い得る。
[0111] 例えば、X個のピクセルをもつデブロッキング境界では、長いフィルタが適用されるとき、境界の各側におけるX×M個のピクセルが処理されると仮定する。例えば、図4に示されるように、境界86では、Xが境界86に沿った垂直方向ピクセルの数を指し、Mがデブロックフィルタ処理されるべき水平方向ピクセルの数を指す。水平境界では、Xが水平境界に沿った水平方向ピクセルの数を指すことになり、Mがデブロックフィルタ処理されるべき垂直方向ピクセルの数を指す。勾配計算についての以下の説明では、変数「M」が上記の変数「N」と同じであると見なされ得、ここで、Nは、ブロック中のデブロックフィルタ処理されるべきであるピクセルの数を示した。
[0112] いくつかの例では、ビデオコーダが、長いフィルタを適用すべきか否かを決定するために、デブロッキング境界の各側(例えば、境界86の各側)におけるX×M’(M’は、より大きいかまたはMに等しい)ピクセルエリアの勾配を決定し得る。デブロッキング境界の両側の勾配がしきい値勾配値よりも小さいという決定に基づいて、ビデオコーダは長いフィルタ(すなわち、本開示で説明されるデブロックフィルタ処理技法の1つまたは複数の例)を適用し得る。場合によっては、ビデオコーダは長いフィルタを適用しないことがある。このようにして、長いフィルタ処理プロセス(例えば、本開示で説明されるデブロックフィルタ処理プロセス)は第1のタイプのフィルタ処理と見なされ得、上記の文書またはHEVC規格に記載されている技法などの他のデブロックフィルタ処理技法のうちのいずれか1つは第2のタイプのフィルタ処理と見なされ得る。いくつかの例では、ビデオコーダが、隣接ピクセルに基づいて勾配を決定し、勾配をしきい値勾配値と比較し得る。これらの例では、ビデオコーダが、比較に基づいて、第1のタイプのフィルタ処理または第2のタイプのフィルタ処理を行い得る。
[0113] 計算複雑さを低減するために、ビデオコーダは、X×M’個のピクセルの勾配を計算するために部分ピクセルのみを選択し得る。例えば、勾配は、2つの連続するピクセル間の差分に基づいて計算され得る。但し、ビデオコーダは、複数のピクセル(例えば、またはブロック中のそれらの全て)を使用して勾配を決定し得る。例えば、平面がモデル化され得、それの傾きが、ブロック中のピクセルを使用して推定され得る。
[0114] 一例として、インターリーブされたピクセルは、以下のように勾配を計算するために使用され、すなわち、P(i,j)、i=0、1、2...X−1、j=0、1、2...M’−1が、1つのX×M’ブロック中のピクセルを示すとし、ブロックの勾配は、勾配H=Σi,jabs(P(i,j)−P(i,min(M’−1,j+1)))、i=0...X−1、j=0...M’−1、勾配V=Σi,jabs(P(i,j)−P(min(i+1,X−1),j)))、i=0...X−1、j=0...M’−1、および勾配=勾配H+勾配Vとして計算される。この例では、勾配がしきい値よりも小さいとビデオコーダが決定することに基づいて、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。また、勾配がしきい値よりも大きいとビデオコーダが決定することに基づいて、ビデオコーダは、HEVC規格における技法などのフィルタ処理技法を行い得る。
[0115] 上記の例において、ビデオコーダは、水平勾配と垂直勾配の両方(例えば、水平勾配と垂直勾配の両方)が、水平または垂直デブロッキング境界のいずれかについて考慮に入れられることを利用した。いくつかの例では、ビデオコーダが、ある境界について、他の方向ではなく、ある方向の勾配を決定し、その勾配を考慮に入れ得る(例えば、水平境界がフィルタ処理されるとき、垂直勾配が使用され、垂直境界がフィルタ処理されるとき、水平勾配が使用される)。
[0116] 勾配を計算するための計算の数を低減するために、ビデオコーダは、勾配を計算するためにX×M’エリアをサブサンプリングし得る。例えば、水平および垂直勾配は、勾配H=Σi,jabs(P(i,j)−P(i,min(M’−1,j+1)))、(i=0、2、4...X−2、j=0、2、4...M’−2)および(i=1、3、5...X−1、j=1、3、5...M’−1)、並びに勾配V=Σi,jabs(P(i,j)−P(min(i+1,X−1),j)))、(i=0、2、4...N−2、j=0、2、4...M’−2)および(i=1、3、5...X−1、j=1、3、5...M’−1)として計算され得る。
[0117] 上記の例において、ビデオコーダは、フィルタ処理されるべきであるブロックのピクセルの全てを含むX×M’領域のための勾配値を決定する(すなわち、上記の例において、各X×M’領域のための1つの勾配値が計算されることに留意されたい)。いくつかの例では、各領域が区分され得、ビデオコーダが、各区分のフィルタ処理を制御するために、各領域における複数の勾配を決定(例えば、計算)し得る。一例として、区分はX×M’の領域中のラインであり得る。以下の例では、エリアが各ラインにセグメント化され、ここで、ビデオコーダは、境界が垂直である場合、勾配H(i)=Σjabs(P(i,j)−P(i,min(M’−1,j+1)))として、位置iにおける水平勾配を決定し、境界が水平である場合、勾配V(j)=Σiabs(P(i,j)−P(min(i+1,X−1),j)))として、位置jにおける垂直勾配を決定する。次いで、ビデオコーダは、勾配H(i)によって垂直位置iにおけるピクセルのフィルタ処理を制御し得、水平位置jにおけるピクセルのフィルタ処理は勾配V(j)によって制御され得る。
[0118] いくつかの例では、ビデオコーダが各ピクセル位置における勾配の使用によって各ピクセルのフィルタ処理を制御することも可能である。例えば、あるピクセル位置における勾配がしきい値よりも高いとビデオコーダが決定した場合、この位置は真の画像エッジと見なされ得、ビデオコーダはそのようなピクセルのフィルタ処理を回避する(または、少なくとも、本開示で説明される技法を使用してピクセルをフィルタ処理しない)であろう。
[0119] さらに、いくつかの例では、ビデオコーダが、1つまたは複数のピクセルをデブロックフィルタ処理すべきかどうかを決定するために、ブロック(例えば、X×M’)、セグメントまたはライン区分、あるいはピクセルにおける勾配決定を組み合わせ得る。言い換えれば、上記の例では、ブロックレベル、セグメントまたはラインレベル、およびピクセルレベル制御が、フィルタ処理の決定を行うために、互いに組み合わせられ得る。
[0120] いくつかの例では、ビデオコーダが、勾配を決定し、勾配をしきい値勾配と比較する。比較に基づいて、ビデオコーダは、本開示で説明される技法を使用してピクセルのピクセル値をデブロックフィルタ処理するか、他の技法を使用してピクセルのピクセル値をデブロックフィルタ処理するか、またはピクセル値をデブロックファイラーしない。例えば、勾配がしきい値勾配よりも小さい場合、ビデオコーダは、本開示で説明される技法を使用してピクセルのピクセル値をデブロックファイラーし得、他の場合、ビデオコーダは、他の技法を使用してデブロックファイラーするか、またはデブロックフィルタ処理しないことがある。
[0121] ビデオエンコーダ20は、SPS、PPSまたはスライスヘッダ中で勾配値のためのしきい値(例えば、しきい値勾配)をシグナリングし得、ビデオデコーダ30は、SPS、PPS、またはスライスヘッダ中でしきい値勾配を受信し得る。いくつかの例で、しきい値は、イントラスライスと非イントラスライスとについて別個にシグナリングされ得る。シグナリングされたしきい値は、「CE12, Subset 1: Report of deblocking for large size blocks」においてなど、既存の方法において言及した差異を含む、他の平滑度メトリックのために適用され得る。いくつかの例で、しきい値は、シグナリングが回避され得るように、エンコーダ側(ビデオエンコーダ20)とデコーダ側(ビデオデコーダ30)とにおいて同じである一定値であり得る。
[0122] ビデオコーダは、各水平および垂直フィルタ処理方向について同じしきい値勾配値を適用し得るか、または各フィルタ処理方向について異なるしきい値が使用され得る。しきい値勾配値が方向ごとに異なる場合、各方向について、ビデオエンコーダ20は、ビデオデコーダ30が受信する別個の値をシグナリングし得る。別の例として、ビデオエンコーダ20は、各方向について勾配しきい値を生成するために、ある値をシグナリングし、別様に値をスケーリングし得る。
[0123] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30が、変換ブロックサイズ(例えば、ブロックの符号化または復号のために使用される変換ブロックのサイズ)、コーディングモード(例えば、イントラ予測またはインター予測コーディング)、動きベクトル、再構成されたピクセル値など、ビデオエンコーダ20とビデオデコーダ30の両方とともに利用可能な情報に応じて勾配しきい値を調整し得る。いくつかの例では、ビデオエンコーダ20が、ビデオエンコーダ20とビデオデコーダ30の両方によって利用可能な情報によって選択され得る場合のセットについての異なるしきい値勾配値をシグナリングし得る。
[0124] 上述のメトリックに基づいて、ビデオコーダはデブロックフィルタ処理を制御し得る。一例として、ビデオコーダは、勾配がしきい値勾配よりも大きいとき、デブロックフィルタ処理をオフにし得る。いくつかの例では、勾配値の範囲に応じて、異なる強度をもつフィルタ処理が適用され得る。例えば、ビデオコーダは、l(i)の値を調整する(例えば、決定された勾配によってl(i)の値をスケーリングする)ために勾配を利用し得る。言い換えれば、大きい勾配をもつエリアのための小さいl(i)の場合変更の量が低減されるように、勾配に従ってピクセル距離l(i)を減少させることが可能であるか、または、ビデオコーダは、勾配が十分に小さくないとき、より弱いフィルタ(例えば、HEVCにおいて定義されているフィルタ)を適用し得る。
[0125] 概ね、いくつかの例で、ビデオコーダは、ピクセル値がデブロックフィルタ処理されるべきである1つまたは複数のピクセルを含むブロックの一部分の勾配値を決定し得、ここで、勾配値は、ブロックの一部分の平滑度を示す(すなわち、ブロックの一部分中に画像エッジがあるかどうかを示す)。ブロックの一部分は、デブロックフィルタ処理されるべきであるブロックのピクセルの全てを含む領域(例えば、X×M’領域)であり得る。勾配値を決定する際に、ビデオコーダは、勾配値を決定するために領域中のピクセルのサブサンプルを利用し得る(すなわち、勾配値決定のために、必ずしも領域中のピクセルの全てを使用する必要があるとは限らない)。
[0126] ブロックの一部分は、デブロックフィルタ処理されるべきピクセルを含むブロックの1次元ラインであり得る。この例において、ビデオコーダは、ラインごとに勾配値(例えば、各ラインのための勾配値)を決定し得、勾配値決定のために、必ずしもライン中のピクセルの全てを使用する必要があるとは限らない。ブロックの一部分は、潜在的に、フィルタ処理されるべき各ピクセル(例えば、ピクセルごとの各ピクセルのための勾配値)であり得る。
[0127] ビデオコーダは、勾配値をしきい値勾配値と比較し、比較に基づいて、本開示で説明されるデブロックフィルタ処理技法を行い得る。例えば、勾配値がしきい値勾配値よりも小さい場合、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得、しきい値勾配値よりも大きい場合、ビデオコーダは、何らかの他のタイプのデブロックフィルタ処理を行い得るか、またはデブロックフィルタ処理を行わないことがある。
[0128] さらに、いくつかの例では、ビデオエンコーダ20とビデオデコーダ30の両方が、勾配値を決定する必要がないことがある。例えば、ビデオエンコーダ20は、勾配値を決定し、本開示で説明されるデブロックフィルタ処理を行うべきかどうかを決定し得る。ビデオエンコーダ20は、ブロックが、本開示で説明される技法を使用してデブロックフィルタ処理されるべきであるかどうかを示す、シンタックス要素(例えば、フラグ)をシグナリングし得る。そのような場合、ビデオデコーダ30は、勾配値を決定する必要がないか、または、勾配値に基づいて、本開示で説明されるデブロックフィルタ処理を行うべきかどうかを決定する必要がないことがある。このようにして、ビデオデコーダ30は、勾配値を決定する必要がないことがあり、これは、潜在的に、計算量的に複雑なプロセスであり得る。
[0129] しかしながら、帯域幅効率のために、いくつかの例では、ビデオデコーダ30が、勾配値計算を行い、決定された勾配値に基づいて、本開示で説明されるデブロックフィルタ処理技法を行うべきかどうかを決定し得る。このようにして、ビデオデコーダ30はそのような決定を行うことになるので、本開示で説明されるデブロックフィルタ処理技法を行うべきかどうかを示す追加のシンタックス要素は必要とされないであろう。
[0130] 上記は、本開示で説明されるデブロックフィルタ処理技法を行うべきかどうかを決定するためにビデオコーダが利用し得る一例について説明している。但し、勾配値に基づいて、本開示で説明されるデブロックフィルタ処理を行うべきかどうかを決定することは一例である。以下は、既存のHEVCデブロッキングフィルタと組み合わせてフィルタがどのように適用されるか追加の例について説明している。
[0131] いくつかの例では、ビデオコーダが、以下で説明される例示的な条件のうちの1つまたは複数が満たされたとき、本開示で説明されるデブロックフィルタ処理技法を適用し得る。他の場合、他の提案(例えば、HEVC仕様)において定義されているデブロックフィルタ処理プロセスが適用され得る。
[0132] また、以下の例において、ビデオコーダはまた、本開示で説明されるデブロックフィルタ処理技法を行うべきかどうかを決定するために、以下の条件に加えて、勾配値決定を使用し得る。例えば、以下の条件のいずれも真でないが、TU境界の2つの8×8ブロックからの勾配があるしきい値よりも小さい場合でも、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。
[0133] いくつかの例では、ビデオコーダが、2つの隣接する(例えば、隣接)TUに対するサイズを決定し得る。この場合も、TUは、ビデオエンコーダ20によって変換され、量子化され、ビデオデコーダ30によって逆量子化され、逆変換されるブロックである。場合によっては、ブロックの変換および/または量子化がスキップされ得ることに留意されたい。TUの場合、ルーマ成分のための変換ブロックと、第1のクロマ成分のための変換ブロックと、第2のクロマ成分のための変換ブロックとがある。本開示において、TUのサイズは、ルーマ成分、またはクロマ成分のいずれかのための変換ブロックであり得る、変換ブロックのサイズを指す。例えば、ビデオコーダは、ルーマ成分と2つのクロマ成分とのブロックのためにデブロックフィルタ処理技法を行い得る。成分のうちの1つまたは複数について、ビデオコーダは、2つの隣接する変換ブロックのサイズを決定し得る。
[0134] 2つの隣接するTU間のより大きい変換サイズ(例えば、成分のうちの1つの変換ブロック)が最大許容変換ブロックサイズ(例えば、MaxTrafoSize)に等しいという決定に基づいて、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。いくつかの例では、最大許容変換ブロックサイズが32×32である。
[0135] いくつかの例では、ブロックのうちの1つが最大許容変換ブロックサイズに等しいことに加え、ビデオコーダは関係するCUがイントラコーディング(イントラ予測コーディング)されるかインターコーディング(インター予測コーディング)されるかを決定し得る。コーディングされるブロックであるCU、TUはブロックの一部分である。
[0136] 関係するCUがイントラコーディングされるとビデオコーダが決定した場合、および隣接するTUのうちの1つは最大許容変換ブロックサイズである。ビデオコーダは、本開示で説明される技法を利用してピクセル値をデブロックフィルタ処理する。関係するCUがイントラコーディングされないが、CUの区分サイズが2N×2Nであり、TUのcbfが1に等しい(すなわち、TUの変換がスキップされる)とビデオコーダが決定した場合、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。
[0137] 別の例では、上記の2つの条件の上に以下の条件のいずれかまたは両方が追加され得る。例えば、最大変換ユニットサイズ(MaxTrafoSize)が16×16よりも大きいかまたはそれに等しい場合、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行うように構成され得る。
[0138] また、上記の条件のうちの1つは、隣接するTUのうちの1つのサイズが最大許容TUサイズに等しいかどうかに基づいた。以下は、隣接するTUのうちのより小さいTUのサイズが特定のサイズよりも大きいかまたはそれに等しいかどうかに基づく条件の一例である。例えば、2つのTU間のより小さい変換サイズが16×16よりも大きいかまたはそれに等しいとビデオコーダが決定した場合、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。例えば、関係するCUがイントラコーディングされ、2つのTU間のより小さい変換サイズが16×16よりも大きいかまたはそれに等しい場合、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。別の例として、関係するCUがイントラコーディングされず、CUの区分サイズが2N×2Nであり、2つのTU間のより小さい変換サイズが16×16よりも大きいかまたはそれに等しい場合、ビデオコーダは、本開示で説明されるデブロックフィルタ処理技法を行い得る。
[0139] デブロックフィルタ処理技法が適用されるときの上記の例示的な条件は例示のために与えたものにすぎないことを理解されたい。本開示で説明されるデブロックフィルタ処理技法を行うべきかどうかを決定するためにビデオコーダが評価し得る他の条件があり得る。
[0140] 図2は、本開示で説明される技法を使用し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20について、例示のためにHEVCコーディングのコンテキストにおいて説明されるが、デブロックフィルタ処理を利用する他のコーディング規格または方法に関して本開示を限定するものではない。ビデオエンコーダ20は、ビデオフレーム内のCUのイントラコーディングおよびインターコーディングを行い得る。イントラコーディングは、所与のビデオフレーム内のビデオデータの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの現在フレームと前にコーディングされたフレームとの間の時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのビデオ圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのビデオ圧縮モードのいずれかを指すことがある。
[0141] 図2に示されるように、ビデオデータメモリ39は、ビデオフレーム内で現在ビデオブロックを符号化するために使用されるビデオデータを受信する。ビデオデータメモリ39は、(例えば、ビデオデータを記憶するように構成された)ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ39に記憶されるビデオデータは、例えば、ビデオソース18から取得され得る。(参照ピクチャバッファまたは参照フレームバッファとも呼ばれる)復号ピクチャバッファ(DPB)64は、(例えば、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる、イントラコーディングモードまたはインターコーディングモードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用する参照ビデオデータを記憶するバッファの一例である。ビデオデータメモリ39およびDPB64は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ39およびDPB64は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ39が、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそのような構成要素に対してオフチップであり得る。
[0142] 図2の例では、ビデオエンコーダ20が、動き補償ユニット44と、動き推定ユニット42と、イントラ予測処理ユニット46と、復号ピクチャバッファ(DPB)64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。図2に示されている変換処理ユニット52は、残差データのブロックに実際の変換または変換の組合せを適用するユニットであり、CUの変換ユニット(TU)と呼ばれることもある変換係数のブロックと混同されるべきではない。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。
[0143] デブロッキングフィルタ63は、再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をデブロックフィルタ処理し得る。いくつかの例では、デブロッキングフィルタ63が、本開示で説明される例示的な技法を実施し、ビデオエンコーダ20の他のユニットと組み合わせてそうするように構成され得る。例えば、デブロッキングフィルタ63は、単独でまたはビデオエンコーダ20の他のユニットと組み合わせて、第1のブロックの第1のピクセルから第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定し、第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定し、幾何学的距離とピクセル値差分とに基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し、デブロックフィルタ処理すべき量に基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理し得る。
[0144] 図2には示されていないが、ビデオエンコーダ20は、サンプル適応オフセット(SAO:sample adaptive offset)フィルタおよび/または適応ループフィルタ(ALF:adaptive loop filter)を含み得る。SAOフィルタおよび/またはALFフィルタは、デブロッキングフィルタ63の前に、またはデブロッキングフィルタ63の後に配置され得る。デブロッキングフィルタ63が隣接ブロック間のブロッキネスを低減するように構成された場合、SAOフィルタおよび/またはALFフィルタは、ビデオコンテンツが元のビデオコンテンツと同じであるように見えるように、またはビデオコーディング効率を増加させるために、他のタイプのフィルタ処理を行うように構成され得る。デブロッキングフィルタ63は、再構成されたブロックが元のブロックにより似ているように、ピクセル値を変更するためにフィルタ処理を場合によっては適用するが、必ずしも適用するとは限らない。そうではなく、デブロッキングフィルタ63はブロッキネスを除去する。また、SAOフィルタとALFフィルタとは、同じブロックのビデオデータのみに基づき得、ここで、デブロッキングフィルタ63は、異なるブロックからのビデオデータを利用する。
[0145] 符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロック、例えば、最大コーディングユニット(LCU)に分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを行う。イントラ予測処理ユニット46は、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して、受信されたビデオブロックのイントラ予測コーディングを行い得る。
[0146] モード選択ユニット40は、例えば、各モードについての誤差(すなわち、ひずみ)結果に基づいて、コーディングモードのうちの1つ、すなわち、イントラまたはインターを選択し得、得られたイントラまたはインター予測ブロック(例えば、PU)を、残差ブロックデータを生成するために加算器50に与え、参照フレーム中で使用する符号化ブロックを再構成するために加算器62に与える。加算器62は、以下でより詳細に説明されるように、符号化ブロックを再構成するために、予測ブロックを、そのブロックについての、逆変換処理ユニット60からの逆量子化され逆変換されたデータと合成し得る。いくつかのビデオフレームはIフレームに指定され得、Iフレーム中の全てのブロックはイントラ予測モードで符号化される。場合によっては、例えば、動き推定ユニット42によって行われた動き探索によって得られたブロックの予測が不十分であったとき、イントラ予測処理ユニット46は、PフレームまたはBフレーム中のブロックのイントラ予測符号化を行い得る。
[0147] 動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定(または動き探索)は、ビデオブロックのための動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレームの参照サンプルに対する、現在フレーム中の予測ユニットの変位を示し得る。動き推定ユニット42は、予測ユニットをDPB64に記憶された参照フレームの参照サンプルと比較することによってインターコード化フレームの予測ユニットのための動きベクトルを計算する。参照サンプルは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of squared difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされているPUを含むCUの部分にぴったり一致することがわかるブロックであり得る。参照サンプルは、参照フレームまたは参照スライス内のどこにでも発生し得、必ずしも、参照フレームまたはスライスのブロック(例えば、コーディングユニット)境界において発生するとは限らない。いくつかの例では、参照サンプルが分数ピクセル位置において発生し得る。
[0148] 動き推定ユニット42が参照ブロックの位置を特定し得る探索空間を拡大するために、動き推定ユニット42は、参照ピクチャに対して補間フィルタ処理を行い得る。参照ピクチャ中に含まれるピクセルは、整数ピクセルと呼ばれ、整数ピクセル位置に配置される。補間フィルタ処理を行うことの一部として、動き推定ユニット42は、整数ピクセル間のピクセル値を補間し(すなわち、新しいピクセルロケーションのための新しいピクセル値を計算し)得る。これらの補間ピクセルはサブピクセルまたは分数ピクセルと呼ばれる。参照ブロックを識別するために、動き推定ユニット42は、望ましい参照ブロックの位置を特定するために、整数ピクセルと分数ピクセルの両方を探索し得る。
[0149] 動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。動きベクトルによって識別される参照フレームの部分は参照サンプルと呼ばれることがある。動き補償ユニット44は、例えば、PUのための動きベクトルによって識別される参照サンプルを取り出すことによって、現在CUの予測ユニットについての予測値を計算し得る。
[0150] イントラ予測処理ユニット46は、動き推定ユニット42と動き補償ユニット44とによって行われるインター予測の代替として、受信ブロックをイントラ予測し得る。イントラ予測処理ユニット46は、隣接する、前にコーディングされたブロック、例えば、ブロックについての左から右へ、上から下への符号化順序を仮定すると、現在ブロックの上、右上、左上、または左のブロックに対して受信ブロックを予測し得る。イントラ予測処理ユニット46は多種多様なイントラ予測モードで構成され得る。例えば、イントラ予測処理ユニット46は、符号化されているCUのサイズに基づいて、一定数の方向性予測モード、例えば、33個の方向性予測モードで構成され得る。
[0151] イントラ予測処理ユニット46は、例えば、様々なイントラ予測モードのための誤差値を計算し、最も低い誤差値を生じるモードを選択することによって、イントラ予測モードを選択し得る。方向性予測モードは、空間的に隣接するピクセルの値を合成し、その合成された値をPU中の1つまたは複数のピクセル位置に適用するための機能を含み得る。PU中の全てのピクセル位置のための値が計算されると、イントラ予測処理ユニット46は、PUと符号化されるべき受信ブロックとの間のピクセル差分に基づいて予測モードのための誤差値を計算し得る。イントラ予測処理ユニット46は、許容できる誤差値を生じるイントラ予測モードが発見されるまでイントラ予測モードをテストし続け得る。イントラ予測処理ユニット46は、次いで、PUを加算器50に送り得る。
[0152] ビデオエンコーダ20は、コーディングされている元のビデオブロックから、動き補償ユニット44またはイントラ予測処理ユニット46によって計算された予測データを減算することによって残差ブロックを形成する。加算器50は、この減算演算を行う1つまたは複数の構成要素を表す。残差ブロックはピクセル差分値の2次元行列に対応し得、ここで、残差ブロック中の値の数は、残差ブロックに対応するPU中のピクセルの数と同じである。残差ブロック中の値は、PU中のコロケートピクセルの値と、コーディングされるべき元のブロック中のコロケートピクセルの値との間の差分、すなわち、誤差に対応し得る。差分は、コーディングされるブロックのタイプに応じてクロマ差分またはルーマ差分であり得る。
[0153] 変換処理ユニット52は、残差ブロックから1つまたは複数のTUを形成し得る。変換処理ユニット52は、複数の変換の中から変換を選択する。変換は、ブロックサイズ、コーディングモードなど、1つまたは複数のコーディング特性に基づいて選択され得る。変換処理ユニット52は、次いで、選択された変換をTUに適用して、変換係数の2次元アレイを備えるビデオブロックを生成する。
[0154] 変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、次いで、その変換係数を量子化し得る。エントロピー符号化ユニット56は、次いで、走査モードに従って、行列中の量子化された変換係数の走査を行い得る。本開示は、エントロピー符号化ユニット56が走査を行うものとして説明している。但し、他の例では、量子化ユニット54などの他の処理ユニットが走査を行えることを理解されたい。
[0155] 変換係数が1次元アレイに走査されると、エントロピー符号化ユニット56は、CABAC、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE)、または別のエントロピーコーディング方法などのエントロピーコーディングを係数に適用し得る。エントロピー符号化ユニット56は、変換係数をコーディングするように構成され得る。CABACを行うために、エントロピー符号化ユニット56は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストモデルを選択し得る。エントロピー符号化ユニット56によるエントロピーコーディングの後に、得られた符号化ビデオは、ビデオデコーダ30などの別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
[0156] 逆量子化ユニット58および逆変換処理ユニット60は、例えば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックをDPB64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。
[0157] 加算器62は、DPB64に記憶するための再構成されたビデオブロックを生成するために、再構成された残差ブロックを、動き補償ユニット44によって(場合によっては補間フィルタ処理を用いて)位置を特定された動き補償予測ブロックに加算する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0158] このようにして、ビデオエンコーダ20は、境界までのピクセルのピクセル距離に基づいて、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し、決定された量に基づいてデブロックフィルタ処理するように構成された1つまたは複数のプロセッサを含むビデオエンコーダの一例であり得る。いくつかの例では、ビデオエンコーダ20が、少なくとも8つのピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し得る。ある例では、境界により近いピクセルのピクセル値が境界からより遠く離れているピクセルのピクセル値よりも多く変更されることをビデオエンコーダ20が決定し得る。いくつかの例では、ビデオエンコーダ20が、デブロックフィルタ処理すべき量を決定するために、境界までのピクセルのピクセル距離の関数であるオフセット値を決定し得る。
[0159] いくつかの例では、ビデオエンコーダ20が、第1のタイプのフィルタ(例えば、本開示で説明される長いデブロックフィルタ処理)を行うかどうかを決定し得る。ビデオエンコーダ20は、第1のタイプのフィルタ処理を行わないと決定した場合、(例えば、ベースHEVC規格において定義されている)第2のタイプのデブロックフィルタ処理を行い得る。ある例では、ビデオエンコーダ20が、隣接ブロックに基づいて勾配を決定し得、勾配をしきい値と比較し得る。そのような例では、ビデオエンコーダ20が、比較に基づいて、本開示で説明されるデブロックフィルタ処理技法を行うか、あるいは、比較に基づいて、HEVC規格におけるものなどのデブロックフィルタ処理技法、または何らかの他のデブロックフィルタ処理技法を行い得る。
[0160] 図3は、符号化ビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。ビデオデコーダ30は、デブロックフィルタ処理のための方法を行うように構成されたデバイスの一例を表す。図3の例では、ビデオデータメモリ69が符号化ビデオを受信する。ビデオデータメモリ69は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどの(例えば、ビデオデータを記憶するように構成された)ビデオデータを記憶し得る。ビデオデータメモリ69に記憶されたビデオデータは、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ69は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。
[0161] (例えば、イントラコーディングモードまたはインターコーディングモードで)ビデオデコーダ30によってビデオデータを復号する際に使用する参照ビデオデータを記憶する復号ピクチャバッファ(DPB)82。ビデオデータメモリ69およびDPB82は、SDRAMを含むDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ69およびDPB82は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ69が、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0162] ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測処理ユニット74と、逆量子化ユニット76と、逆変換処理ユニット78と、復号ピクチャバッファ(DPB)82と、加算器80とを含む。図3のビデオデコーダ30は、いくつかの例で、ビデオエンコーダ20(図2参照)に関して説明された符号化パスとは一般に逆の復号パスを行い得る。
[0163] エントロピー復号ユニット70は、変換係数の1次元アレイを取り出すために、符号化ビットストリームに対してエントロピー復号プロセスを行う。使用されるエントロピー復号プロセスは、ビデオエンコーダ20によって使用されたエントロピーコーディング(例えば、CABAC)に依存する。エンコーダによって使用されたエントロピーコーディングプロセスは、符号化ビットストリーム中でシグナリングされるか、または所定のプロセスであり得る。エントロピー復号ユニット70は、変換係数をコーディングするように構成され得る。
[0164] いくつかの例では、エントロピー復号ユニット70(または逆量子化ユニット76)が、ビデオエンコーダ20のエントロピー符号化ユニット56(または量子化ユニット54)によって使用された走査モードをミラーリングする走査を使用して受信値を走査し得る。係数の走査は逆量子化ユニット76において行われ得るが、走査は、例示のために、エントロピー復号ユニット70によって行われるものとして説明される。さらに、例示のために別個の機能ユニットとして示されるが、ビデオデコーダ30のエントロピー復号ユニット70、逆量子化ユニット76、および他のユニットの構造および機能は互いに高度に統合され得る。
[0165] 逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、例えば、HEVCのために提案されたプロセスまたはH.264復号規格によって定義されたプロセスと同様の、従来のプロセスを含み得る。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、CUについてビデオエンコーダ20によって計算される量子化パラメータQPの使用を含み得る。逆量子化ユニット76は、係数が1次元アレイから2次元アレイに変換される前または変換された後に変換係数を逆量子化し得る。
[0166] 逆変換処理ユニット78は、逆量子化された変換係数に逆変換を適用する。いくつかの例では、逆変換処理ユニット78が、ビデオエンコーダ20からのシグナリングに基づいて、あるいはブロックサイズ、コーディングモードなどの1つまたは複数のコーディング特性から変換を推論することによって、逆変換を決定し得る。いくつかの例では、逆変換処理ユニット78が、現在ブロックを含むLCUのための4分木のルートノードにおけるシグナリングされた変換に基づいて、現在ブロックに適用すべき変換を決定し得る。代替的に、変換は、LCU4分木中のリーフノードCUのためのTU4分木のルートにおいてシグナリングされ得る。いくつかの例では、逆変換処理ユニット78がカスケード逆変換を適用し得、ここで逆変換処理ユニット78は、復号されている現在ブロックの変換係数に2つまたはそれ以上の逆変換を適用する。イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードと、現在フレームの、前に復号されたブロックからのデータとに基づいて、現在フレームの現在ブロックのための予測データを生成し得る。
[0167] 動き補償ユニット72は、符号化ビットストリームから、動きベクトルと、動き予測方向と、参照インデックスとを取り出し得る。参照予測方向は、インター予測モードが単方向である(例えば、Pフレーム)か、双方向である(Bフレーム)かを示す。参照インデックスは、候補動きベクトルがどの参照フレームに基づくかを示す。
[0168] 取り出された動き予測方向と、参照フレームインデックスと、動きベクトルとに基づいて、動き補償ユニットは現在部分のための動き補償ブロックを生成する。これらの動き補償ブロックは、本質的に、残差データを生成するために使用される予測ブロックを再現する。
[0169] 動き補償ユニット72は、場合によっては、動き補償ユニット44によって行われる同じ補間フィルタ処理に対して行うことによって、動き補償ブロックを生成し得る。サブピクセル精度をもつ動き推定のために使用されるべき補間フィルタのための識別子が、シンタックス要素中に含まれ得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルのための補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。動き補償ユニット72は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
[0170] さらに、動き補償ユニット72およびイントラ予測処理ユニット74は、HEVCの例で、符号化ビデオシーケンスの(1つまたは複数の)フレームを符号化するために使用されたLCUのサイズを決定するために、(例えば、4分木によって与えられる)シンタックス情報の一部を使用し得る。動き補償ユニット72およびイントラ予測処理ユニット74はまた、符号化ビデオシーケンスのフレームの各CUがどのように分割されるか(および、同様に、サブCUがどのように分割されるか)を記述する分割情報を決定するために、シンタックス情報を使用し得る。シンタックス情報はまた、各分割がどのように符号化されるかを示すモード(例えば、イントラ予測またはインター予測、およびイントラ予測の場合はイントラ予測符号化モード)と、各インター符号化PUについての1つまたは複数の参照フレーム(および/またはそれらの参照フレームの識別子を含んでいる参照リスト)と、符号化ビデオシーケンスを復号するための他の情報とを含み得る。
[0171] 加算器80は、復号されたブロックを形成するために、残差ブロックを、動き補償ユニット72またはイントラ予測処理ユニット74によって生成される対応する予測ブロックと合成する。ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタ処理するためのデブロッキングフィルタ81も適用され得る。デブロッキングフィルタ81は、本開示で説明される例示的なデブロックフィルタ処理技法を実施するように構成され得る。例えば、デブロッキングフィルタ81は、単独でまたは他の構成要素と組み合わせて、第1のブロックの第1のピクセルから第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定し、第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定し、幾何学的距離とピクセル値差分とに基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し、デブロックフィルタ処理すべき量に基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理し得る。復号されたビデオブロックは、次いで、DPB82に記憶され、DPB82は、参照ブロックを後続の動き補償に与え、また、(図1のディスプレイデバイス32などの)ディスプレイデバイス上での提示のために復号されたビデオを生成する。
[0172] 図2と同様に、図3には示されていないが、ビデオデコーダ30は、サンプル適応オフセット(SAO)フィルタおよび/または適応ループフィルタ(ALF)を含み得る。SAOフィルタおよび/またはALFフィルタは、デブロッキングフィルタ81の前に、またはデブロッキングフィルタ81の後に配置され得る。デブロッキングフィルタ81が隣接ブロック間のブロッキネスを低減するように構成された場合、SAOフィルタおよび/またはALFフィルタは、ビデオコンテンツが元のビデオコンテンツと同じであるように見えるように、またはビデオコーディング効率を増加させるために、他のタイプのフィルタ処理を行うように構成され得る。デブロッキングフィルタ81は、再構成されたブロックが元のブロックにより似ているように、ピクセル値を変更するためにフィルタ処理を場合によっては適用するが、必ずしも適用するとは限らない。そうではなく、デブロッキングフィルタ81はブロッキネスを除去する。また、SAOフィルタとALFフィルタとは、同じブロックのビデオデータのみに基づき得、ここで、デブロッキングフィルタ81は、異なるブロックからのビデオデータを利用する。
[0173] このようにして、ビデオデコーダ30は、境界までのピクセルのピクセル距離に基づいて、ピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し、決定された量に基づいてデブロックフィルタ処理するように構成された1つまたは複数のプロセッサを含む、ビデオデコーダの一例であり得る。いくつかの例では、ビデオデコーダ30が、少なくとも8つのピクセルのピクセル値をデブロックフィルタ処理すべき量を決定し得る。ある例では、境界により近いピクセルのピクセル値が、境界からより遠く離れているピクセルのピクセル値よりも多く変更されることをビデオデコーダ30が決定し得る。いくつかの例では、ビデオデコーダ30が、デブロックフィルタ処理すべき量を決定するために、境界までのピクセルのピクセル距離の関数であるオフセット値を決定し得る。
[0174] いくつかの例では、ビデオデコーダ30が、第1のタイプのフィルタ(例えば、本開示で説明される長いデブロックフィルタ処理)を行うかどうかを決定し得る。ビデオデコーダ30は、第1のタイプのフィルタ処理を行わないと決定した場合、(例えば、ベースHEVC規格において定義されている)第2のタイプのデブロックフィルタ処理を行い得る。ある例では、ビデオデコーダ30が、隣接ブロックに基づいて勾配を決定し得、勾配をしきい値と比較し得る。そのような例では、ビデオデコーダ30が、比較に基づいて、本開示で説明されるデブロックフィルタ処理技法を行うか、あるいは、比較に基づいて、HEVC規格におけるものなどのデブロックフィルタ処理技法、または何らかの他のデブロックフィルタ処理技法を行い得る。
[0175] 図5は、本開示で説明される技法に基づいて定義される例示的なデブロッキングフィルタ100の構成要素を示すブロック図である。一般に、図2からのデブロッキングフィルタ63と図3からのデブロッキングフィルタ81のいずれかまたは両方は、デブロッキングフィルタ100の構成要素と実質的に同様の構成要素を含み得る。ビデオエンコーダ、ビデオデコーダ、ビデオエンコーダ/デコーダ(コーデック)など、他のビデオコーディングデバイスも、デブロッキングフィルタ100と実質的に同様の構成要素を含み得る。デブロッキングフィルタ100は、ハードウェア、ソフトウェア、またはファームウェア、あるいはそれらの任意の組合せで実施され得る。ソフトウェアまたはファームウェアで実施されるとき、(1つまたは複数のプロセッサまたは処理ユニット、およびソフトウェアまたはファームウェアのための命令を記憶するためのメモリなどの)対応するハードウェアも与えられ得る。
[0176] 図5の例では、デブロッキングフィルタ100が、デブロッキング決定ユニット104と、メモリに記憶されたサポート定義102と、デブロッキングフィルタ処理ユニット106と、メモリに記憶されたデブロッキングフィルタ定義108と、エッジ位置特定ユニット103と、エッジロケーションデータ構造105とを含む。デブロッキングフィルタ100の構成要素のいずれかまたは全ては機能的に統合され得る。デブロッキングフィルタ100の構成要素は、例示のために別々に示されているにすぎない。一般に、デブロッキングフィルタ100は、例えば、ブロックについて予測データを残差データと組み合わせる加算構成要素から、復号されたブロック(または再構成されたブロック)のためのデータを受信する。データは、さらに、ブロックがどのように予測されたかについての指示を含み得る。以下で説明される例では、デブロッキングフィルタ100が、LCUとLCUのためのCU4分木とに関連する復号されたビデオブロックを含むデータを受信するように構成され、ここで、CU4分木は、LCUがCUにどのように区分されるかを記述し、リーフノードCUのPUおよびTUのための予測モードを記述する。
[0177] デブロッキングフィルタ100は、デブロッキングフィルタ100のメモリ中に、または対応するビデオコーディングデバイスによって与えられる外部メモリ中にエッジロケーションデータ構造105を維持し得る。いくつかの例で、エッジ位置特定ユニット103は、LCUがCUにどのように区分されるかを示す、LCUに対応するCU4分木を受信し得る。次いで、エッジ位置特定ユニット103は、デブロッキングのための候補であるLCU中のCUのTUおよびPUに関連する復号されたビデオブロック間のエッジ(例えば、境界)を決定するために、CU4分木を分析し得る。例えば、エッジ位置特定ユニット103は境界86の位置を特定し得る。
[0178] エッジロケーションデータ構造105は、水平次元と、垂直次元と、水平エッジおよび垂直エッジを表す次元とを有するアレイを備え得る。一般に、ビデオブロック間のエッジ(例えば、境界)は、LCUの最小サイズCU、またはCUのTUおよびPUに関連する2つのビデオブロック間に生じ得る。LCUがN×Nのサイズを有すると仮定し、LCUの最小サイズCUがサイズM×Mであると仮定すると、アレイは、[N/M]×[N/M]×2のサイズを備え得、ここで、「2」は、CU間のエッジの2つの可能な方向(水平および垂直)を表す。例えば、LCUが64×64ピクセルと8×8最小サイズCUとを有すると仮定すると、アレイは、[8]×[8]×[2]エントリを備え得る。
[0179] 各エントリは、一般に、2つのビデオブロック間の可能なエッジに対応し得る。実際は、エッジロケーションデータ構造105のエントリの各々に対応するLCU内の位置の各々にエッジが存在しないことがある。従って、データ構造の値は偽に初期化され得る。一般に、エッジ位置特定ユニット103は、LCUのCUのTUおよびPUに関連する2つのビデオブロック間のエッジのロケーションを決定し、エッジロケーションデータ構造105中の対応する値を真に設定するために、CU4分木を分析し得る。
[0180] 一般に、アレイのエントリは、対応するエッジがデブロッキングのための候補としてLCU中に存在するかどうかを記述し得る。すなわち、エッジ位置特定ユニット103が、LCUのCUのTUおよびPUに関連する2つの隣接ビデオブロック間のエッジが存在すると決定したとき、エッジ位置特定ユニット103は、エッジが存在することを示すためにエッジロケーションデータ構造105中の対応するエントリの値を(例えば、「真」の値に)設定し得る。
[0181] デブロッキング決定ユニット104は、一般に、2つの隣接ブロックについて、2つのブロック間のエッジがデブロックされるべきかどうかを決定する。デブロッキング決定ユニット104は、エッジロケーションデータ構造105を使用してエッジのロケーションを決定し得る。エッジロケーションデータ構造105の値がブール値を有するとき、デブロッキング決定ユニット104は、いくつかの例では、「真」の値がエッジの存在を示し、「偽」の値がエッジが存在しないことを示すと決定し得る。例えば、デブロッキング決定ユニット104は、勾配を決定し、本開示で説明される技法を利用してデブロックフィルタ処理すべきかどうかを決定し得る。別の例として、デブロッキング決定ユニット104は、変換サイズ、およびCUがイントラコーディングされるかまたはイントラコーディングされないかを決定し、本開示で説明される技法を利用してデブロックフィルタ処理すべきかどうかを決定するためにそのような情報を利用し得る。
[0182] 一般に、デブロッキング決定ユニット104は、1つまたは複数のデブロッキング決定関数で構成される。関数は、ブロック間のエッジを横断するピクセルのラインに適用される複数の係数を含み得る。例えば、関数は、エッジに対して直角である8つのピクセルのラインに適用され得、ここで、ピクセルのうちの4つは、2つのブロックのうちの一方にあり、他の4つのピクセルは、2つのブロックのうちの他方にある。サポート定義102は関数のためのサポートを定義する。一般に、「サポート」は、関数が適用されるピクセルに対応する。サポートのセットの様々な例が、図6に関して以下でより詳細に説明される。
[0183] デブロッキング決定ユニット104は、サポート定義102によって定義されたサポートの1つまたは複数のセットに1つまたは複数のデブロッキング決定関数を適用し、ビデオデータの2つのブロック間の特定のエッジがデブロックされるべきかどうかを決定するように構成され得る。デブロッキング決定ユニット104から発生する破線は、フィルタ処理されることなしに出力されるブロックのためのデータを表す。2つのブロック間のエッジがフィルタ処理されるべきでないとデブロッキング決定ユニット104が決定した場合、デブロッキングフィルタ100は、データを改変することなしに、ブロックのためのデータを出力し得る。すなわち、そのデータはデブロッキングフィルタ処理ユニット106をバイパスし得る。一方、エッジがデブロックされるべきであるとデブロッキング決定ユニット104が決定したとき、デブロッキング決定ユニット104は、エッジをデブロックするために、デブロッキングフィルタ処理ユニット106にエッジの近くのピクセルのための値をフィルタ処理させ得る。
[0184] デブロッキングフィルタ処理ユニット106は、デブロッキング決定ユニット104によって示されたデブロックされるべきエッジのために、デブロッキングフィルタパラメータ108からデブロッキングフィルタの定義を取り出す。一般に、エッジのフィルタ処理は、デブロックされるべき現在エッジの近傍からのピクセルの値を使用する。従って、デブロッキング決定関数とデブロッキングフィルタの両方は、エッジの両側に、あるサポート領域を有し得る。エッジ(例えば、境界)の近傍にあるピクセルにデブロッキングフィルタを適用することによって、デブロッキングフィルタ処理ユニット106は、エッジの近くの高周波遷移が減衰するように、ピクセルの値を平滑化し得る。このようにして、エッジ(例えば、境界)の近くのピクセルへのデブロッキングフィルタの適用は、エッジの近くのブロッキネスアーティファクトを低減し得る。
[0185] 図6は、サブブロック130とサブブロック132との間のビデオブロックのエッジ(すなわち、境界)134の近くのピクセル位置を示す概念図である。一例として、境界134は、CUにおいて定義されている2つのTU間のTUエッジ、またはCUにおいて定義されている2つのPU間のPUエッジなど、内部CUエッジを備え得る。ピクセル位置の各々は、フォーマット[p|q]IJを使用して指定され、ここで、pはサブブロック130に対応し、qはサブブロック132に対応し、Iはエッジ134からの距離に対応し、Jは、サブブロック130および132の上から下への行インジケータに対応する。いくつかの例では、デブロッキング決定関数およびデブロッキングフィルタのために使用されるサポートが、8つのピクセルのラインを有する。そのような例では、0≦X≦7である所与のラインXのために、ピクセルp3X〜q3Xの各々がサポートとして使用され得る
[0186] 図7は、ビデオデータを処理する例示的な技法を示すフローチャートである。例示のために、図7の例が、図6に関して詳細に説明される。例えば、例示のために、図7は、ピクセルp43が、デブロックフィルタ処理されるべきであるピクセルであることに関して説明される。また、図7の例について、ビデオコーダが本技法を行うことに関して説明される。ビデオコーダは、一般的にビデオエンコーダ20またはビデオデコーダ30を表すために使用される。
[0187] ビデオコーダは、第1のブロックの第1のピクセルから第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定する(140)。例えば、ビデオコーダは、境界134までのブロック130のピクセルp43の幾何学的距離を決定し得、ここで、境界134はブロック130とブロック132との間の境界である。一例として、ビデオコーダは、第1のピクセルと境界との間のピクセルの数に基づいて幾何学的距離を決定し得る。例えば、ピクセルp43の幾何学的距離は、n(i)=iである式に基づいて4であるか、またはn(i)=(2i+1)/2である式に基づいて9/2である。
[0188] ビデオコーダは、第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定する(142)。例えば、ビデオコーダは、第2のピクセルのピクセル値と第3のピクセルの第1のピクセル値との間の差分を決定し、差分の結果を2で除算し得る。
[0189] いくつかの例で、第2のピクセルは、境界に最も近い第1のブロックのピクセルであり(例えば、ブロック130のp03は境界134に最も近い)、第3のピクセルは、境界に最も近い第2のブロックのピクセルである(例えば、ブロック132のq03は境界134に最も近い)。いくつかの例で、第2のピクセルと第1のピクセルとは同じであり、第3のピクセルは、第1のブロック中の第1のピクセルと境界までの距離が等距離である、第2のブロック中のピクセルである(例えば、q43は、境界134までの距離が、p43の境界134までの距離と等距離である)。別の例として、第2のピクセルと第1のピクセルとは同じであり、第3のピクセルは、境界にクローゼットであるピクセルである(例えば、q03は境界134に最も近い)。いくつかの例で、第2のピクセルと第3のピクセルとは隣接ピクセルである(例えば、p53とp33)。
[0190] ビデオコーダは、幾何学的距離とピクセル値差分とに基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定する(144)。ビデオコーダは、上で説明された例示的な技法のうちの1つまたは複数を使用してピクセル値差分を決定し、少なくともピクセル値差分のための重み付けを決定し得る。これらの例では、ビデオコーダが、幾何学的距離と、ピクセル値差分と、ピクセル値差分のための重み付けとに基づいて、デブロックフィルタ処理すべき量を決定し得る。いくつかの例では、ビデオコーダが、幾何学的距離と、ピクセル値差分と、デブロックフィルタ処理されるべきであるピクセルの数(ピクセルの数は、ビットストリーム中でシグナリングされるかまたはあらかじめ記憶され得る)とに基づいて、デブロックフィルタ処理すべき量を決定し得る。
[0191] ビデオコーダは、デブロックフィルタ処理すべき量に基づいて、第1のピクセルのピクセル値をデブロックフィルタ処理する(146)。場合によっては、ビデオコーダは、デブロックフィルタ処理すべき量が、第1のしきい値よりも大きいかまたは第2のしきい値よりも小さいと決定し、デブロックフィルタ処理すべき量が、第1のしきい値よりも大きいかまたは第2のしきい値よりも小さいことに基づいて、デブロックフィルタ処理すべき調整された量を決定し得る。ビデオコーダは、デブロックフィルタ処理すべき調整された量に基づいて、ピクセル値をデブロックフィルタ処理し得る。
[0192] さらに、いくつかの例では、ビデオコーダが、本開示で説明される技法を使用してデブロックフィルタ処理すべきかどうかを決定し得る。例えば、ビデオコーダは、第1のブロックの一部分のための勾配値を決定し得、ここで、勾配値は、第1のブロックの一部分の平滑度を示す。一部分の例としては、デブロックフィルタ処理されるべきであるピクセル以外の追加のピクセルを含むブロックの領域、ブロックのライン、さらにはブロックのピクセルがある。ビデオコーダは、勾配値がしきい値勾配値よりも小さいかまたはそれに等しいことに基づいて、ピクセル値をデブロックフィルタ処理し得る。
[0193] 別の例として、ビデオコーダは、第1のブロックを生成するために使用される第1の変換ブロックの第1のブロックサイズと、第2のブロックを生成するために使用される第2の変換ブロックの第2のブロックサイズとを決定し得る。ビデオコーダは、第1のブロックサイズおよび第2のブロックサイズのうちのより大きいブロックサイズが最大許容変換ブロックサイズに等しいこと、または第1のブロックサイズおよび第2のブロックサイズのうちのより小さいブロックサイズがしきい値ブロックサイズよりも大きいことに基づいて、ピクセル値をデブロックフィルタ処理し得る。
[0194] いくつかの例では、ビデオコーダが、後続のブロック(例えば、第3のブロック)のインター予測またはイントラ予測の一部として、デブロックフィルタ処理されたピクセル値を利用し得る。ビデオコーダがビデオエンコーダ20である例では、ビデオエンコーダ20が、(例えば、第3のブロックをインター予測またはイントラ予測符号化することの一部として)第3のブロック中のピクセルのピクセル値とデブロックフィルタ処理されたピクセル値との間の差分を決定し得る。ビデオエンコーダ20は、第3のブロック中のピクセルのピクセル値とデブロックフィルタ処理されたピクセル値との間の差分を示す情報をシグナリングし得、ここで、シグナリングされた情報は、第3のブロックを復号するために使用される。
[0195] ビデオコーダがビデオデコーダ30である場合、ビデオデコーダ30は、第3のブロック中のピクセルのピクセル値とデブロックフィルタ処理されたピクセル値との間の差分を示す情報を受信し得る。ビデオデコーダ30は、受信された情報に基づいて第3のブロックをインター予測またはイントラ予測復号し得る。
[0196] 1つまたは複数の例では、説明された機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施され得る。ソフトウェアで実施される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実施のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0197] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0198] 命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実施に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能が、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実施され得る。
[0199] 例によっては、本明細書で説明された方法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで行われ得、追加、マージ、または完全に除外され得る(例えば、全ての説明された行為またはイベントが、本方法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの実施形態では、行為またはイベントが、連続的にではなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に行われ得る。
[0200] 本明細書で開示する方法、システムおよび装置と関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実施され得ることを、当業者は認識されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上で概ねそれらの機能に関して説明された。そのような機能がハードウェアとして実施されるか、ソフトウェアとして実施されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を特定の適用例ごとに変わる方式で実施し得るが、そのような実施の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
[0201] さらに、本明細書で開示する例は、汎用プロセッサ、DSP、ASIC、FPGAまたは他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素などの電子デバイスまたは回路、あるいは本明細書で説明された機能を行うように設計されたそれらの任意の組合せを用いて実施または行われ得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、計算デバイスの組合せ、例えば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実施され得る。
[0202] 本明細書で開示する実施形態に関して説明された方法またはアルゴリズムのステップは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICはユーザ端末中に存在し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として存在し得る。
[0203] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示する技法を行うように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0203] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示する技法を行うように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを処理する方法であって、前記方法が、
第1のブロックの第1のピクセルから前記第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定することと、
第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定することと、
前記幾何学的距離と前記ピクセル値差分とに基づいて、前記第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定することと、
デブロックフィルタ処理すべき前記量に基づいて、前記第1のピクセルの前記ピクセル値をデブロックフィルタ処理することと
を備える、方法。
[C2]
前記第1のピクセルの前記幾何学的距離を決定することが、前記第1のピクセルと前記境界との間のピクセルの数に基づいて前記幾何学的距離を決定することを備える、C1に記載の方法。
[C3]
前記ピクセル値差分を決定することが、前記第2のピクセルの前記ピクセル値と前記第3のピクセルの前記ピクセル値との間の差分を決定することと、前記差分を2で除算することとを備える、C1に記載の方法。
[C4]
前記第2のピクセルが、前記境界に最も近い前記第1のブロックのピクセルを備え、前記第3のピクセルが、前記境界に最も近い前記第2のブロックのピクセルを備える、C1に記載の方法。
[C5]
前記第2のピクセルと前記第1のピクセルとが同じピクセルであり、前記第3のピクセルが、前記第1のブロック中の前記第1のピクセルと前記境界までの距離が等距離である前記第2のブロック中のピクセルを備える、C1に記載の方法。
[C6]
前記第2のピクセルと前記第1のピクセルとが同じピクセルであり、前記第3のピクセルが、前記境界に最も近い前記第2のブロック中のピクセルを備える、C1に記載の方法。
[C7]
前記第2のピクセルが前記第1のピクセルの第1の隣接ピクセルを備え、前記第3のピクセルが前記第1のピクセルの第2の隣接ピクセルを備える、C1に記載の方法。
[C8]
少なくとも前記ピクセル値差分のための重み付けを決定することをさらに備え、
ここにおいて、デブロックフィルタ処理すべき前記量を決定することが、前記幾何学的距離と、前記ピクセル値差分と、前記ピクセル値差分のための前記重み付けとに基づいて、デブロックフィルタ処理すべき前記量を決定することを備える、C1に記載の方法。
[C9]
デブロックフィルタ処理すべき前記量が、第1のしきい値よりも大きいかまたは第2のしきい値よりも小さいと決定することと、
デブロックフィルタ処理すべき前記量が、前記第1のしきい値よりも大きいかまたは前記第2のしきい値よりも小さいことに基づいて、デブロックフィルタ処理すべき調整された量を決定することと
をさらに備え、
ここにおいて、前記ピクセル値をデブロックフィルタ処理することが、デブロックフィルタ処理すべき前記調整された量に基づいて、前記第1のピクセルの前記ピクセル値をデブロックフィルタ処理することを備える、C1に記載の方法。
[C10]
デブロックフィルタ処理すべき前記量を決定することが、前記幾何学的距離と、前記ピクセル値差分と、デブロックフィルタ処理されるべきであるピクセルの数とに基づいて、デブロックフィルタ処理すべき前記量を決定することを備える、C1に記載の方法。
[C11]
前記第1のブロックの一部分のための勾配値を決定することをさらに備え、ここにおいて、前記勾配値が、前記第1のブロックの前記一部分の平滑度を示し、
ここにおいて、デブロックフィルタ処理することは、前記勾配値がしきい値勾配値よりも小さいかまたはそれに等しいことに基づいて、前記ピクセル値をデブロックフィルタ処理することを備える、C1に記載の方法。
[C12]
前記第1のブロックを生成するために使用される第1の変換ブロックの第1のブロックサイズと、前記第2のブロックを生成するために使用される第2の変換ブロックの第2のブロックサイズとを決定することをさらに備え、
ここにおいて、デブロックフィルタ処理することは、前記第1のブロックサイズおよび前記第2のブロックサイズのうちのより大きいブロックサイズが最大許容変換ブロックサイズに等しいこと、または前記第1のブロックサイズおよび前記第2のブロックサイズのうちのより小さいブロックサイズがしきい値ブロックサイズよりも大きいことに基づいて、前記ピクセル値をデブロックフィルタ処理することを備える、C1に記載の方法。
[C13]
第3のブロック中のピクセルのピクセル値と前記デブロックフィルタ処理されたピクセル値との間の差分を決定することと、
前記第3のブロック中の前記ピクセルの前記ピクセル値と前記デブロックフィルタ処理されたピクセル値との間の前記差分を示す情報をシグナリングすることと、ここにおいて、前記シグナリングされた情報が、前記第3のブロックを復号するために使用される、をさらに備える、C1に記載の方法。
[C14]
第3のブロック中のピクセルのピクセル値と前記デブロックフィルタ処理されたピクセル値との間の差分を示す情報を受信することと、
前記受信された情報に基づいて前記第3のブロックをインター予測またはイントラ予測復号することと
をさらに備える、C1に記載の方法。
[C15]
ビデオデータを処理するためのデバイスであって、前記デバイスは、
ピクセル値を記憶するビデオデータメモリと、
第1のブロックの第1のピクセルから前記第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定することと、ここにおいて、前記第2のブロックのピクセル値が前記ビデオデータメモリに記憶される、
第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定することと、
前記幾何学的距離と前記ピクセル値差分とに基づいて、前記第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定することと、
デブロックフィルタ処理すべき前記量に基づいて、前記第1のピクセルの前記ピクセル値をデブロックフィルタ処理することと
を行うように構成されたビデオコーダと
を備える、デバイス。
[C16]
前記第1のピクセルの前記幾何学的距離を決定するために、前記ビデオコーダが、前記第1のピクセルと前記境界との間のピクセルの数に基づいて前記幾何学的距離を決定するように構成された、C15に記載のデバイス。
[C17]
前記ピクセル値差分を決定するために、前記ビデオコーダが、前記第2のピクセルの前記ピクセル値と前記第3のピクセルの前記ピクセル値との間の差分を決定することと、前記差分を2で除算することとを行うように構成された、C15に記載のデバイス。
[C18]
前記第2のピクセルが、前記境界に最も近い前記第1のブロックのピクセルを備え、前記第3のピクセルが、前記境界に最も近い前記第2のブロックのピクセルを備える、C15に記載のデバイス。
[C19]
前記第2のピクセルと前記第1のピクセルとが同じピクセルであり、前記第3のピクセルが、前記第1のブロック中の前記第1のピクセルと前記境界までの距離が等距離である前記第2のブロック中のピクセルを備える、C15に記載のデバイス。
[C20]
前記第2のピクセルと前記第1のピクセルとが同じピクセルであり、前記第3のピクセルが、前記境界に最も近い前記第2のブロック中のピクセルを備える、C15に記載のデバイス。
[C21]
前記第2のピクセルが前記第1のピクセルの第1の隣接ピクセルを備え、前記第3のピクセルが前記第1のピクセルの第2の隣接ピクセルを備える、C15に記載のデバイス。
[C22]
前記ビデオコーダが、
少なくとも前記ピクセル値差分のための重み付けを決定するように構成され、
ここにおいて、デブロックフィルタ処理すべき前記量を決定するために、前記ビデオコーダが、前記幾何学的距離と、前記ピクセル値差分と、前記ピクセル値差分のための前記重み付けとに基づいて、デブロックフィルタ処理すべき前記量を決定するように構成された、C15に記載のデバイス。
[C23]
前記ビデオコーダは、
デブロックフィルタ処理すべき前記量が、第1のしきい値よりも大きいかまたは第2のしきい値よりも小さいと決定することと、
デブロックフィルタ処理すべき前記量が、前記第1のしきい値よりも大きいかまたは前記第2のしきい値よりも小さいことに基づいて、デブロックフィルタ処理すべき調整された量を決定することと
を行うように構成され、
ここにおいて、前記ピクセル値をデブロックフィルタ処理するために、前記ビデオコーダが、デブロックフィルタ処理すべき前記調整された量に基づいて、前記第1のピクセルの前記ピクセル値をデブロックフィルタ処理するように構成された、C15に記載のデバイス。
[C24]
デブロックフィルタ処理すべき前記量を決定するために、前記ビデオコーダが、前記幾何学的距離と、前記ピクセル値差分と、デブロックフィルタ処理されるべきであるピクセルの数とに基づいて、デブロックフィルタ処理すべき前記量を決定するように構成された、C15に記載のデバイス。
[C25]
前記ビデオコーダが、
前記第1のブロックの一部分のための勾配値を決定するように構成され、ここにおいて、前記勾配値が、前記第1のブロックの前記一部分の平滑度を示し、
ここにおいて、デブロックフィルタ処理するために、前記ビデオコーダは、前記勾配値がしきい値勾配値よりも小さいかまたはそれに等しいことに基づいて、前記ピクセル値をデブロックフィルタ処理するように構成された、C15に記載のデバイス。
[C26]
前記ビデオコーダが、
前記第1のブロックを生成するために使用される第1の変換ブロックの第1のブロックサイズと、前記第2のブロックを生成するために使用される第2の変換ブロックの第2のブロックサイズとを決定するように構成され、
ここにおいて、デブロックフィルタ処理するために、前記ビデオコーダは、前記第1のブロックサイズおよび前記第2のブロックサイズのうちのより大きいブロックサイズが最大許容変換ブロックサイズに等しいこと、または前記第1のブロックサイズおよび前記第2のブロックサイズのうちのより小さいブロックサイズがしきい値ブロックサイズよりも大きいことに基づいて、前記ピクセル値をデブロックフィルタ処理するように構成された、C15に記載のデバイス。
[C27]
前記デバイスが、
マイクロプロセッサ、
集積回路(IC)、または
ワイヤレスハンドセットデバイスのうちの1つを備える、C15に記載のデバイス。
[C28]
ビデオデータを処理するためのデバイスであって、前記デバイスが、
第1のブロックの第1のピクセルから前記第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定するための手段と、
第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定するための手段と、
前記幾何学的距離と前記ピクセル値差分とに基づいて、前記第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定するための手段と、
デブロックフィルタ処理すべき前記量に基づいて、前記第1のピクセルの前記ピクセル値をデブロックフィルタ処理するための手段と
を備える、デバイス。
[C29]
実行されたとき、処理するためのデバイスの1つまたは複数のプロセッサに、
第1のブロックの第1のピクセルから前記第1のブロックと第2のブロックとの間の境界までの幾何学的距離を決定することと、
第2のピクセルのピクセル値と第3のピクセルのピクセル値とに基づいてピクセル値差分を決定することと、
前記幾何学的距離と前記ピクセル値差分とに基づいて、前記第1のピクセルのピクセル値をデブロックフィルタ処理すべき量を決定することと、
デブロックフィルタ処理すべき前記量に基づいて、前記第1のピクセルの前記ピクセル値をデブロックフィルタ処理することと
を行わせる命令を記憶したコンピュータ可読記憶媒体。