以下の説明では、本開示の一部を形成し、且つ、本発明の複数の実施形態の特定の態様、または本発明の複数の実施形態が使用され得る特定の態様を実例として示す、添付の図を参照する。本発明の複数の実施形態は他の態様で使用されてもよく、図に描写されない構造的または論理的な変更を含み得ることが解る。従って、以下の詳細な説明は制限的な意味で解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲により定義される。
例えば、説明されている方法に関連する開示が、この方法を実行するように構成される対応するデバイスまたはシステムについても当てはまり得ること、および、その逆もまた同様であることが解る。例えば、1または複数の特定の方法の段階が説明される場合は、対応するデバイスが、説明されている1または複数の方法の段階を実行する1または複数のユニット、例えば、機能ユニット(例えば、これら1または複数の段階を実行する1つのユニット、または、これら複数の段階のうちの1または複数をそれぞれが実行する複数のユニット)を、係る1または複数のユニットが図で明示的に説明または例示されていない場合であっても含んでよい。一方で、例えば、特定の装置が1または複数のユニット、例えば、機能ユニットに基づいて説明される場合は、対応する方法が、これら1または複数のユニットの機能を実行する1つの段階(例えば、これら1または複数のユニットの機能を実行する1つの段階、または、これら複数のユニットのうちの1または複数の機能をそれぞれが実行する複数の段階)を、係る1または複数の段階が図で明示的に説明または例示されていない場合であっても含んでよい。更には、特に記載がない限り、本明細書に記載されている様々な例示的な実施形態および/または態様の特徴を互いに組み合わせてよいことが解る。
ビデオコーディングとは通常、ビデオまたはビデオシーケンスを形成する一連の画像の処理を指す。ビデオコーディングの分野では、「画像」という用語の代わりに、「フレーム」または「イメージ」という用語が同義語として使用されることがある。ビデオコーディング(または一般に、コーディング)は、ビデオ符号化およびビデオ復号という2つの部分を含む。ビデオ符号化はソース側で実行され、通常は、元のビデオ画像を(例えば、圧縮により)処理して、ビデオ画像の表現に必要とされるデータの量を(より効率的な保存および/または伝送のために)削減することを含む。ビデオ復号は宛先側で実行され、通常は、ビデオ画像を再構成するためのエンコーダと比較して逆の処理を含む。ビデオ画像(または一般に、画像)の「コーディング」に言及する実施形態は、ビデオ画像またはそれぞれのビデオシーケンスの「符号化」または「復号」に関すると理解されるものとする。符号化部分と復号部分との組み合わせは、コーデック(コーディングおよび復号)とも呼ばれる。
無損失ビデオコーディングの場合は、元のビデオ画像が再構成され得る、すなわち、再構成されたビデオ画像が(保存中または伝送中に伝送損失または他のデータ損失が生じないものと仮定して)元のビデオ画像と同じ品質である。有損失ビデオコーディングの場合は、例えば、量子化による更なる圧縮を実行して、ビデオ画像を表現するデータの量を削減する。ビデオ画像はデコーダで完全に再構成することができない、すなわち、再構成されたビデオ画像の品質は、元のビデオ画像の品質と比較して低いまたは悪い。
幾つかのビデオコーディング規格は、「有損失ハイブリッドビデオコーデック」のグループに属する(すなわち、サンプル領域における空間的および時間的な予測と、変換領域における量子化を適用するための2D変換コーディングとを組み合わせる)。ビデオシーケンスの各画像は通常、一組の非重複ブロックに区分化され、コーディングは通常、ブロックレベルで実行される。つまり、エンコーダでは通常、例えば、空間的(画像内)予測および/または時間的(画像間)予測を使用して予測ブロックを生成することと、現在のブロック(処理中/処理予定のブロック)から予測ブロックを減算して残差ブロックを取得することと、変換領域における残差ブロックの変換および残差ブロックの量子化を行って、伝送されるデータの量を削減(圧縮)することとにより、ビデオをブロック(ビデオブロック)レベルで処理する、すなわち、符号化するが、デコーダでは、エンコーダと比較して逆の処理を、符号化または圧縮されたブロックに適用して、現在のブロックを表現のために再構成する。更に、エンコーダは、デコーダ処理ループを繰り返すことで、両方が同一の予測(例えば、イントラ予測およびインター予測)および/または再構成物を生成して後続ブロックを処理する、すなわち、コーディングするようにする。以下では、図1から図3に基づき、ビデオコーディングシステム10、ビデオエンコーダ20、およびビデオデコーダ30の実施形態について説明する。
図1Aは、本願の技術を利用し得る例示的なコーディングシステム10、例えば、ビデオコーディングシステム10(または略してコーディングシステム10)を示した概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(または略してエンコーダ20)およびビデオデコーダ30(または略してデコーダ30)は、本願に記載の様々な例に従って技術を実行するように構成され得るデバイスの例を表す。
図1Aに示すように、コーディングシステム10は、符号化された画像データ21を、例えば、当該符号化された画像データを復号するために宛先デバイス14へ提供する(13)ように構成されるソースデバイス12を備える。
ソースデバイス12はエンコーダ20を備えており、更には、すなわち、オプションで、画像ソース16と、プリプロセッサ(または前処理ユニット)18、例えば、画像プリプロセッサ18と、通信インタフェースまたは通信ユニット22とを備えてよい。
画像ソース16は、任意の種類の画像キャプチャデバイス、例えば、実世界の画像をキャプチャするためのカメラ、および/または、任意の種類の画像生成デバイス、例えば、コンピュータアニメーション画像を生成するためのコンピュータグラフィクスプロセッサ、または、実世界の画像、コンピュータ生成画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)、および/またはそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得および/または提供するための任意の種類の他のデバイスを備えても、それらのデバイスであってもよい。画像ソースは、上述の画像のいずれかを保存する任意の種類のメモリまたは記憶装置であってよい。
プリプロセッサ18と前処理ユニット18により実行される処理とを区別して、画像または画像データ17は、生画像または生画像データ17とも呼ばれることがある。
プリプロセッサ18は、(生)画像データ17を受信し、且つ、画像データ17に対する前処理を実行して、前処理された画像19または前処理された画像データ19を取得するように構成されてよい。プリプロセッサ18により実行される前処理は、例えば、トリミング、(例えば、RGBからYCbCrへの)色フォーマット変換、色補正、またはノイズ除去を含んでよい。前処理ユニット18は任意選択的な構成要素であり得ることを理解できる。
ビデオエンコーダ20は、前処理された画像データ19を受信し、且つ、符号化された画像データ21を提供するように構成されてよい(更なる詳細については、例えば、図2に基づいて後述する)。
ソースデバイス12の通信インタフェース22は、符号化された画像データ21を受信し、且つ、符号化された画像データ21(またはその任意の更に処理されたバージョン)を、通信チャネル13を介して別のデバイス、例えば、宛先デバイス14または任意の他のデバイスへ伝送して保存または直接再構成するように構成されてよい。
宛先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を備えており、更には、すなわち、オプションで、通信インタフェースまたは通信ユニット28と、ポストプロセッサ32(または後処理ユニット32)と、表示デバイス34とを備えてよい。
宛先デバイス14の通信インタフェース28は、符号化された画像データ21(またはその任意の更に処理されたバージョン)を、例えば、ソースデバイス12から直接受信するか、任意の他のソース、例えば、符号化された画像データ記憶デバイスなどの記憶デバイスから受信し、且つ、符号化された画像データ21をデコーダ30に提供するように構成されてよい。
通信インタフェース22および通信インタフェース28は、ソースデバイス12と宛先デバイス14との間の直接的な通信リンク、例えば、直接的な有線または無線の接続を介して、または、任意の種類のネットワーク、例えば、有線または無線のネットワーク、もしくはそれらの任意の組み合わせ、または任意の種類のプライベートネットワークおよびパブリックネットワーク、もしくはそれらの任意の種類の組み合わせを介して、符号化された画像データ21または符号化されたデータを送信または受信する(13)ように構成されてよい。
通信インタフェース22は、符号化された画像データ21を適切なフォーマット、例えば、パケットにパッケージ化する、および/または、任意の種類の伝送符号化または処理を使用することで、符号化された画像データを処理して、通信リンクまたは通信ネットワークを介して伝送するように構成されてよい。
通信インタフェース22の対の片方を成す通信インタフェース28は、伝送されたデータを受信し、且つ、任意の種類の対応する伝送復号もしくは処理および/またはパッケージ解除を使用することで伝送データを処理して、符号化された画像データ21を取得するように構成されてよい。
通信インタフェース22および通信インタフェース28はどちらも、ソースデバイス12から宛先デバイス14の方を向いている図1Aの通信チャネル13の矢印で示すような一方向通信インタフェースとして、または双方向通信インタフェースとして構成されてよく、メッセージの送信および受信、例えば、接続のセットアップを行って、通信リンクおよび/またはデータの伝送、例えば、符号化された画像データの伝送に関連する任意の他の情報の確認応答および交換を行うように構成されてよい。
デコーダ30は、符号化された画像データ21を受信し、且つ、復号された画像データ31または復号された画像31を提供するように構成されてよい(更なる詳細については、例えば、図3または図5に基づいて後述する)。
宛先デバイス14のポストプロセッサ32は、復号された画像データ31(再構成された画像データとも呼ばれる)、例えば、復号された画像31を後処理して、後処理された画像データ33、例えば、後処理された画像33を取得するように構成されてよい。後処理ユニット32により実行される後処理は、例えば、復号された画像データ31を、例えば、表示デバイス34で表示する準備をするための、(例えば、YCbCrからRGBへの)色フォーマット変換、色補正、トリミングもしくは再サンプリング、または任意の他の処理のいずれか1つまたは複数を含んでよい。
宛先デバイス14の表示デバイス34は、後処理された画像データ33を受信して、画像を、例えば、ユーザまたは視聴者に表示するように構成されてよい。表示デバイス34は、統合型または外部のディスプレイまたはモニタなど、再構成された画像を表現するための任意の種類のディスプレイであっても、それを備えてもよい。ディスプレイは、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタル光プロセッサ(DLP)、または任意の種類の他のディスプレイであってよい。
図1Aではソースデバイス12および宛先デバイス14が別個のデバイスとして描写されているが、デバイスの複数の実施形態は、両方のデバイスまたは両方の機能、すなわち、ソースデバイス12または対応する機能と、宛先デバイス14または対応する機能とを含んでもよい。係る実施形態では、ソースデバイス12または対応する機能と、宛先デバイス14または対応する機能とが、同じハードウェアおよび/またはソフトウェアを使用して、または、別個のハードウェアおよび/もしくはソフトウェアまたはそれらの任意の組み合わせにより実装されてよい。
本明細書に基づいて当業者に明らかになるように、図1Aに示すような、これらの異なるユニットの機能、または、ソースデバイス12および/または宛先デバイス14内の機能の存在および(正確な)分割は、実際のデバイスおよび用途に応じて異なることがある。
エンコーダ20(例えば、ビデオエンコーダ20)もしくはデコーダ30(例えば、ビデオデコーダ30)、または、エンコーダ20およびデコーダ30の両方は、図1Bに示すような処理回路、例えば、1または複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ハードウェア、ビデオコーディング専用、またはそれらの任意の組み合わせを介して実装されてよい。エンコーダ20は、図2のエンコーダ20および/または本明細書に記載されている任意の他のエンコーダシステムまたはサブシステムに関して説明される様々なモジュールを具現化するよう、処理回路46を介して実装されてよい。デコーダ30は、図3のデコーダ30および/または本明細書に記載されている任意の他のデコーダシステムまたはサブシステムに関して説明される様々なモジュールを具現化するよう、処理回路46を介して実装されてよい。処理回路は、後述される様々な演算を実行するように構成されてよい。図5に示すように、これらの技術がソフトウェアで部分的に実装される場合は、デバイスは、最適な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を保存してよく、1または複数のプロセッサを使用してハードウェアで命令を実行して、本開示の技術を実行してよい。ビデオエンコーダ20およびビデオデコーダ30は、例えば、図1Bに示すように、組み合わされたエンコーダ/デコーダ(コーデック)の一部として単一のデバイスに統合されてよい。
図1Bに示すビデオコーディングシステム40は、ビデオエンコーダ20およびビデオデコーダ30の両方を実装する処理回路を備える。加えて、実世界の画像をキャプチャするためのカメラなどの1または複数の撮像デバイス41、アンテナ42、1または複数のメモリ貯蔵庫44、1または複数のプロセッサ43、および/または、上記の表示デバイス34などの表示デバイス45が、ビデオコーディングシステム40の一部として提供されてよい。
ソースデバイス12および宛先デバイス14は、任意の種類のハンドヘルドデバイスまたは固定式デバイス、例えば、ノートブックコンピュータまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットもしくはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、表示デバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、放送受信デバイス、または放送送信デバイスなどを含む、幅広いデバイスのいずれかを含んでよく、オペレーティングシステムを使用しなくても、任意の種類のオペレーティングシステムを使用してもよい。場合によっては、ソースデバイス12および宛先デバイス14が無線通信のために装備されてよい。故に、ソースデバイス12および宛先デバイス14は無線通信デバイスであってよい。
場合によっては、図1Aに示すビデオコーディングシステム10は例に過ぎず、本願の技術は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディングシステム(例えば、ビデオ符号化またはビデオ復号)に適用されてよい。他の例では、データがローカルメモリから取得される、またはネットワークを介してストリーミングされるなどである。ビデオ符号化デバイスはデータを符号化してメモリに保存してよい、および/または、ビデオ復号デバイスはメモリからデータを取得して復号してよい。幾つかの例では、符号化および復号は、互いに通信しないが単にデータをメモリに符号化するおよび/またはデータをメモリから取得して復号するデバイスにより実行される。
説明の都合上、本明細書では、例えば、高効率ビデオコーディング(HEVC)、または、多用途ビデオコーディング(VVC)の参照ソフトウェア、すなわち、ITU-Tビデオコーディング専門家グループ(VCEG)およびISO/IEC動画専門家集団(MPEG)のビデオコーディングに関する共同作業部会(JCT-VC)により開発された次世代ビデオコーディング規格を参照することにより、本発明の複数の実施形態について説明する。当業者は、本発明の複数の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
[エンコーダおよび符号化方法]
図2は、本願の技術を実装するように構成される例示的なビデオエンコーダ20の概略ブロック図を示す。図2の例では、ビデオエンコーダ20は、入力201(または入力インタフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、(ライン)バッファ216、ループフィルタユニット220、復号された画像バッファ(DPB)230、モード選択ユニット260、エントロピ符号化ユニット270、および出力272(または出力インタフェース272)を備える。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、区分化ユニット262を含んでよい。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(不図示)を含んでよい。図2に示すようなビデオエンコーダ20は、ハイブリッドビデオエンコーダ、またはハイブリッドビデオコーデックに係るビデオエンコーダとも呼ばれることがある。
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、およびモード選択ユニット260は、エンコーダ20の順方向信号経路を形成するものと見なされることがあるが、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、(ライン)バッファ216、ループフィルタ220、復号された画像バッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の逆方向信号経路を形成するものと見なされることがあり、ビデオエンコーダ20の逆方向信号経路は、デコーダ(図3のビデオデコーダ30を参照)の信号経路に対応する。逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタ220、復号された画像バッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の「内蔵デコーダ」を形成するものとも見なされる。
[画像&画像区分化(画像&ブロック)]
エンコーダ20は、例えば、入力201を介して、画像17(または画像データ17)、例えば、ビデオまたはビデオシーケンスを形成する一連の画像のうち、ある画像を受信するように構成されてよい。受信された画像または画像データは、前処理された画像19(または前処理された画像データ19)であってもよい。簡単にするために、以下の説明では画像17を参照する。画像17は、(特に、現在の画像を、他の画像、例えば、同じビデオシーケンス、すなわち、現在の画像も含むビデオシーケンスの、以前に符号化および/または復号された画像と区別するビデオコーディングにおいて)現在の画像またはコーディングされる画像とも呼ばれることがある。
(デジタル)画像は、強度値を有するサンプルの二次元アレイまたはマトリクスであるか、それと見なされ得る。アレイ内のサンプルは、画素(画像要素の短縮形式)またはペルとも呼ばれることがある。アレイまたは画像の水平および垂直方向(または軸)におけるサンプルの数によって、画像のサイズおよび/または解像度が定義される。色の表現には通常、3つの色成分が採用される。すなわち、画像は3つのサンプルアレイとして表現されても、それらを含んでもよい。RBGフォーマットまたは色空間では、画像が、対応する赤、緑、青のサンプルアレイを含む。ただし、ビデオコーディングでは、各画素が通常、輝度およびクロミナンスのフォーマットまたは色空間、例えば、YCbCrで表現され、YCbCrは、Y(代わりに、Lが使用されることもある)で示される輝度成分と、CbおよびCrで示される2つのクロミナンス成分とを含む。輝度(または略してルマ)成分Yは、明るさまたはグレイレベルの強度(例えば、グレイスケール画像におけるようなもの)を表し、2つのクロミナンス(または略してクロマ)成分CbおよびCrは、色度または色の情報成分を表す。結果的に、YCbCrフォーマットの画像は、輝度サンプル値(Y)の輝度サンプルアレイと、クロミナンス値(CbおよびCr)の2つのクロミナンスサンプルアレイとを含む。RGBフォーマットの画像は、YCbCrフォーマットに変換(convertedまたはtransformed)されてよく、その逆もまた同様である。このプロセスは、色の変換(transformationまたはconversion)としても知られている。画像がモノクロである場合は、画像は輝度サンプルアレイのみを含んでよい。結果的に、画像は、例えば、モノクロフォーマットのルマサンプルのアレイ、または、4:2:0、4:2:2、および4:4:4の色フォーマットのルマサンプルのアレイおよびクロマサンプルの2つの対応するアレイであってよい。
ビデオエンコーダ20の実施形態は、画像17を複数の(通常は非重複の)画像ブロック203に区分化するように構成される画像区分化ユニット(図2には描写されていない)を含んでよい。これらのブロックは、根ブロック、マクロブロック(H.264/AVC)、またはコーディングツリーブロック(CTB)もしくはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVCによる)とも呼ばれることがある。画像区分化ユニットは、ビデオシーケンスの全ての画像とブロックサイズを定義する対応するグリッドとに同じブロックサイズを使用するか、画像間または画像のサブセットまたはグループ間でブロックサイズを変更し、各画像を対応するブロックに区分化するように構成されてよい。
更なる実施形態において、ビデオエンコーダは、画像17のブロック203、例えば、画像17を形成する1つ、幾つか、または全てのブロックを直接受信するように構成されてよい。画像ブロック203は、現在の画像ブロックまたはコーディングされる画像ブロックとも呼ばれることがある。
画像17と同様に、画像ブロック203は、画像17よりも寸法は小さいが、強度値(サンプル値)を有するサンプルの二次元アレイまたはマトリクスであるか、それと見なされ得る。つまり、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロ画像17の場合はルマアレイ、または、色画像の場合はルマアレイもしくはクロマアレイ)、または3つのサンプルアレイ(例えば、色画像17の場合はルマアレイおよび2つのクロマアレイ)、または適用される色フォーマットに応じた任意の他の数および/または種類のアレイを含んでよい。ブロック203の水平および垂直方向(または軸)におけるサンプルの数によって、ブロック203のサイズが定義される。結果的に、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、または変換係数のM×Nアレイを含んでよい。
図2に示すようなビデオエンコーダ20の実施形態は、画像17をブロックごとに符号化するように構成されてよく、例えば、符号化および予測がブロック203ごとに実行される。
図2に示すようなビデオエンコーダ20の実施形態は更に、スライス(ビデオスライスとも呼ばれる)を使用することにより画像を区分化および/または符号化するように構成されてよく、画像は1または複数のスライス(通常は非重複)に区分化されても、1または複数のスライスを使用して符号化されてもよく、各スライスは1または複数のブロック(例えば、CTU)を含んでよい。
図2に示すようなビデオエンコーダ20の実施形態は更に、タイルグループ(ビデオタイルグループとも呼ばれる)および/またはタイル(ビデオタイルとも呼ばれる)を使用することにより画像を区分化および/または符号化するように構成されてよく、画像は1または複数のタイルグループ(通常は非重複)に区分化されても、1または複数のタイルグループを使用して符号化されてもよく、各タイルグループは1または複数のブロック(例えば、CTU)または1または複数のタイルを含んでよく、各タイルは長方形の形状であってよく、1または複数のブロック(例えば、CTU)、例えば、完全または部分的なブロックを含んでよい。
[残差計算]
残差計算ユニット204は、例えば、画像ブロック203のサンプル値から予測ブロック265のサンプル値をサンプルごと(画素ごと)に減算してサンプル領域内の残差ブロック205を取得することにより、画像ブロック203および予測ブロック265(予測ブロック265に関する更なる詳細は後で提供される)に基づいて、残差ブロック205(残差205とも呼ばれる)を計算するように構成されてよい。
[変換]
変換処理ユニット206は、離散余弦変換(DCT)または離散正弦変換(DST)などの変換を残差ブロック205のサンプル値に適用して、変換領域内の変換係数207を取得するように構成されてよい。変換係数207は変換残差係数とも呼ばれることがあり、変換領域内の残差ブロック205を表す。
変換処理ユニット206は、H.265/HEVCに指定された変換などのDCT/DSTの整数近似を適用するように構成されてよい。直交DCT変換と比較して、係る整数近似は通常、特定の因子でスケーリングされる。順方向変換および逆変換で処理される残差ブロックのノルムを順守するために、更なるスケーリング因子が変換プロセスの一部として適用される。スケーリング因子は通常、シフト演算の2の累乗であるスケーリング因子、変換係数のビット深度、確度と実装コストとの間のトレードオフなどのような特定の制約に基づいて選択される。例えば、特定のスケーリング因子が、例えば、逆変換処理ユニット212による逆変換(および、例えば、ビデオデコーダ30における逆変換処理ユニット312による対応する逆変換)に指定され、例えば、エンコーダ20における変換処理ユニット206による順方向変換の対応するスケーリング因子が適宜指定されてよい。
ビデオエンコーダ20の実施形態(それぞれ変換処理ユニット206)は、変換パラメータ、例えば、1または複数の変換のタイプを、例えば、直接出力するか、エントロピ符号化ユニット270を介して符号化または圧縮してから出力するように構成されてよく、その結果、例えば、ビデオデコーダ30は変換パラメータを復号のため受信および使用してよい。
[量子化]
量子化ユニット208は、例えば、スカラ量子化またはベクトル量子化を適用することにより、変換係数207を量子化して、量子化された係数209を取得するように構成されてよい。量子化された係数209は、量子化された変換係数209または量子化された残差係数209とも呼ばれることがある。
量子化プロセスでは、変換係数207の幾つかまたは全てに関連付けられるビット深度が低減され得る。例えば、量子化中にnビットの変換係数がmビットの変換係数に切り捨てられてよく、nはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することにより修正されてよい。例えば、スカラ量子化の場合は、異なるスケーリングを適用して、より細かいまたはより粗い量子化を実現してよい。量子化ステップサイズが小さいほど、より細かい量子化に対応し、量子化ステップサイズが大きいほど、より粗い量子化に対応する。適用可能な量子化ステップサイズは量子化パラメータ(QP)で示されてよい。量子化パラメータは、例えば、予め定義された一組の適用可能な量子化ステップサイズのインデックスであってよい。例えば、小さな量子化パラメータは細かい量子化(小さな量子化ステップサイズ)に対応してよく、大きな量子化パラメータは粗い量子化(大きな量子化ステップサイズ)に対応してよく、またはその逆もまた同様である。量子化は量子化ステップサイズによる除算を含んでよく、例えば、逆量子化ユニット210による、対応するおよび/または逆の量子化解除は、量子化ステップサイズによる乗算を含んでよい。幾つかの規格、例えば、HEVCに係る実施形態は、量子化パラメータを使用して量子化ステップサイズを決定するように構成されてよい。概して、量子化ステップサイズは、除算を含む方程式の不動点近似を使用した量子化パラメータに基づいて計算されてよい。量子化および量子化解除に更なるスケーリング因子を導入して残差ブロックのノルムを復元してよく、これは、量子化ステップサイズおよび量子化パラメータの方程式の不動点近似で使用されるスケーリングを理由に修正され得る。1つの例示的な実装では、逆変換のスケーリングと量子化解除とが組み合わされてよい。代替的に、カスタマイズされた量子化テーブルを使用し、例えば、ビットストリームで、エンコーダからデコーダにシグナリングしてもよい。量子化は不可逆演算であり、量子化ステップサイズが増加するにつれて損失が増加する。
ビデオエンコーダ20の実施形態(それぞれ量子化ユニット208)は、量子化パラメータ(QP)を、例えば、直接出力するか、エントロピ符号化ユニット270を介して符号化してから出力するように構成されてよく、その結果、例えば、ビデオデコーダ30は量子化パラメータを復号のため受信および適用してよい。
[逆量子化]
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいてまたはそれを使用して量子化ユニット208により適用される量子化スキームの逆を適用することにより、量子化ユニット208の逆量子化を量子化された係数に適用して、量子化解除された係数211を取得するように構成される。量子化解除された係数211は、量子化解除された残差係数211とも呼ばれることがあり、通常は量子化による損失に起因して変換係数とは同一でないものの、変換係数207に対応する。
[逆変換]
逆変換処理ユニット212は、変換処理ユニット206により適用される変換の逆変換、例えば、逆の離散余弦変換(DCT)または逆の離散正弦変換(DST)または他の逆変換を適用して、サンプル領域内の再構成された残差ブロック213(または対応する量子化解除された係数213)を取得するように構成される。再構成された残差ブロック213は、変換ブロック213とも呼ばれることがある。
[再構成]
再構成ユニット214(例えば、加算器またはアナログ加算器214)は、例えば、再構成された残差ブロック213のサンプル値と予測ブロック265のサンプル値とをサンプルごとに加算することにより、変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック265に加算して、サンプル領域内の再構成されたブロック215を取得するように構成される。
[フィルタリング]
ループフィルタユニット220(または略して「ループフィルタ」220)は、再構成されたブロック215をフィルタリングして、フィルタリングされたブロック221を取得するか、一般には、再構成されたサンプルをフィルタリングして、フィルタリングされたサンプルを取得するように構成される。ループフィルタユニットは、画素遷移を平滑化するか、そうでなければビデオ品質を向上させるように構成されてよい。ループフィルタユニット220は、ブロック解除フィルタ、サンプル適応型オフセット(SAO)フィルタ、または、1または複数の他のフィルタ、例えば、バイラテラルフィルタ、適応型ループフィルタ(ALF)、鮮鋭化、平滑化フィルタもしくは協調フィルタ、またはそれらの任意の組み合わせなどの、1または複数のループフィルタを含んでよい。図2にはループフィルタユニット220がループ内フィルタとして示されているが、他の構成では、ループフィルタユニット220がポストループフィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリング済みの再構成されたブロック221とも呼ばれることがある。
ビデオエンコーダ20の実施形態(それぞれループフィルタユニット220)は、ループフィルタパラメータ(サンプル適応型オフセット情報など)を、例えば、直接出力するか、エントロピ符号化ユニット270を介して符号化してから出力するように構成されてよく、その結果、例えば、デコーダ30は、同じループフィルタパラメータまたはそれぞれのループフィルタを復号のため受信および適用してよい。
[復号された画像バッファ]
復号された画像バッファ(DPB)230は、ビデオエンコーダ20によりビデオデータを符号化するための参照画像、または一般に、参照画像データを保存するメモリであってよい。DPB230は、シンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかにより形成されてよい。復号された画像バッファ(DPB)230は、1または複数のフィルタリングされたブロック221を保存するように構成されてよい。復号された画像バッファ230は更に、同じ現在の画像または異なる画像、例えば、以前に再構成された画像の以前にフィルタリングされた他のブロック、例えば、以前に再構成およびフィルタリングされたブロック221を保存するように構成されてよく、例えば、以前に再構成された、すなわち、復号された完全な画像(および対応する参照ブロックおよびサンプル)および/または部分的に再構成された現在の画像(および対応する参照ブロックおよびサンプル)をインター予測のために提供してよい。復号された画像バッファ(DPB)230は、例えば、再構成されたブロック215がループフィルタユニット220によりフィルタリングされていない場合に、1または複数のフィルタリングされていない再構成されたブロック215、または一般に、フィルタリングされていない再構成されたサンプル、または、これらの再構成されたブロックまたはサンプルの任意の他の更に処理されたバージョンを保存するように構成されてもよい。
[モード選択(区分化&予測)]
モード選択ユニット260は、区分化ユニット262、インター予測ユニット244、およびイントラ予測ユニット254を備え、元の画像データ、例えば、元のブロック203(現在の画像17の現在のブロック203)と、再構成された画像データ、例えば、同じ(現在の)画像の、および/または、1または複数の以前に復号された画像からの、例えば、復号された画像バッファ230もしくは他のバッファ(例えば、ラインバッファ216)からのフィルタリングされたおよび/またはフィルタリングされていない再構成されたサンプルまたはブロックとを、受信または取得するように構成される。再構成された画像データを、予測、例えば、インター予測またはイントラ予測のための参照画像データとして使用して、予測ブロック265または予測因子265を取得する。特に、ラインバッファ216からの参照サンプル217がイントラ予測ユニット254により使用されてよい。
モード選択ユニット260は、現在のブロック予測モードの区分化(区分化なしを含む)および予測モード(例えば、イントラ予測モードまたはインター予測モード)を決定または選択し、且つ、対応する予測ブロック265を生成するように構成されてよく、予測ブロック265は、残差ブロック205の計算と再構成されたブロック215の再構成とに使用される。
モード選択ユニット260の実施形態は、区分化および予測モードを(例えば、モード選択ユニット260によりサポートされているか、モード選択ユニット260に利用できるものから)選択するように構成されてよく、これによって、最良に一致する、または、つまり、最小残差(最小残差とは、伝送または保存により適した圧縮を意味する)または最小シグナリングオーバヘッド(最小シグナリングオーバヘッドとは、伝送または保存により適した圧縮を意味する)が提供されるか、その両方が考慮されるか、その両方のバランスが取れる。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて区分化および予測モードを決定する、すなわち、最小のレート歪みを提供する予測モードを選択するように構成されてよい。この文脈における「最良」、「最小」、「最適」などのような用語は、必ずしも全般的な「最良」、「最小」、「最適」などを指しているとは限らないが、ある値が閾値または他の制約を超えるまたは下回ることで、「次善の選択」につながる可能性があるものの複雑さおよび処理時間が低減するような、終了または選択の基準の達成を指すこともある。
つまり、区分化ユニット262は、例えば、四分木区分化(QT)、二分木区分化(BT)、もしくは三分木区分化(TT)、またはそれらの任意の組み合わせを繰り返し使用して、ブロック203をより小さなブロックパーティションまたはサブブロック(これもやはりブロックを形成する)に区分化し、且つ、これらのブロックパーティションまたはサブブロックの各々について予測を実行するように構成されてよく、モード選択は、区分化されたブロック203の木構造の選択を含み、予測モードは、これらのブロックパーティションまたはサブブロックの各々に適用される。
以下では、例示的なビデオエンコーダ20により実行される(例えば、区分化ユニット262による)区分化および(インター予測ユニット244およびイントラ予測ユニット254による)予測処理についてより詳細に説明する。
[区分化]
区分化ユニット262は、現在のブロック203をより小さなパーティション、例えば、正方形または長方形のサイズのより小さなブロックに区分化(または分割)してよい。これらのより小さなブロック(サブブロックとも呼ばれることがある)は更に、より一層小さなパーティションに区分化されてよい。これは木区分化または階層木区分化とも呼ばれ、例えば、ルートツリーレベル0(階層レベル0、深度0)の根ブロックが再帰的に区分化されてよく、例えば、次に低いツリーレベルの2またはそれより多くのブロック、例えば、ツリーレベル1(階層レベル1、深度1)のノードに区分化されてよく、これらのブロックは、例えば、終了基準が満たされたこと、例えば、最大ツリー深度または最小ブロックサイズに達したことを理由に区分化が終了するまで、次に低いレベル、例えば、ツリーレベル2(階層レベル2、深度2)の2またはそれより多くのブロックに再び区分化されるなどしてよい。更に区分化されないブロックは、木の葉ブロックまたは葉ノードとも呼ばれる。2つのパーティションへの区分化を使用する木が二分木(BT)と呼ばれ、3つのパーティションへの区分化を使用する木が三分木(TT)と呼ばれ、4つのパーティションへの区分化を使用する木が四分木(QT)と呼ばれる。
前述したように、本明細書で使用する「ブロック」という用語は、画像のある部分、特に正方形または長方形の部分であってよい。例えば、HEVCおよびVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、もしくは変換ユニット(TU)、および/または、対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)、または予測ブロック(PB)であっても、それらに対応してもよい。
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有する画像のルマサンプルのCTBおよびクロマサンプルの2つの対応するCTB、または、モノクロ画像またはサンプルのコーディングに使用される3つの別個の色平面および構文構造を使用してコーディングされる画像のサンプルのCTBであっても、それらを含んでもよい。それに応じて、コーディングツリーブロック(CTB)は、構成要素のCTBへの分割が区分化となるように、ある値Nに対するサンプルのN×Nブロックであってよい。コーディングユニット(CU)は、3つのサンプルアレイを有する画像のルマサンプルのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロック、または、モノクロ画像またはサンプルのコーディングに使用される3つの別個の色平面および構文構造を使用してコーディングされる画像のサンプルのコーディングブロックであっても、それらを含んでもよい。
それに応じて、コーディングブロック(CB)は、CTBのコーディングブロックへの分割が区分化となるように、ある値MおよびNに対するサンプルのM×Nブロックであってよい。
例えば、HEVCに従った幾つかの実施形態では、コーディングツリーとして示される四分木構造を使用することにより、コーディングツリーユニット(CTU)がCUに分割されてよい。インター画像(時間的)予測またはイントラ画像(空間的)予測のどちらを使用して画像エリアをコーディングするかの決定は、CUレベルで行われる。各CUは更に、PUの分割タイプに従って、1つ、2つ、または4つのPUに分割され得る。1つのPU内では、同じ予測プロセスが適用され、関連情報がPUベースでデコーダに伝送される。PUの分割タイプに基づいて予測プロセスを適用することにより残差ブロックを取得した後、CUのコーディングツリーと同様の別の四分木構造に従って、CUが変換ユニット(TU)に区分化され得る。
例えば、多用途ビデオコーディング(VVC)と呼ばれる現在開発中の最新ビデオコーディング規格に従った実施形態では、四分木と二分木との組み合わせ(QTBT)の区分化が、例えば、コーディングブロックの区分化に使用される。QTBTブロック構造では、CUの形状を正方形または長方形のどちらか一方とすることができる。例えば、コーディングツリーユニット(CTU)がまず、四分木構造で区分化される。四分木葉ノードは更に、二分木または三分(ternaryまたはtriple)木の構造で区分化される。区分化木の葉ノードはコーディングユニット(CU)と呼ばれ、そのパーティションは、更なる区分化を全く行うことなく予測および変換の処理に使用される。これは、CU、PU、およびTUがQTBTコーディングブロック構造において同じブロックサイズを有することを意味する。並行して、複数のパーティション、例えば、三分木パーティションがQTBTブロック構造と一緒に使用されてよい。
一例では、ビデオエンコーダ20のモード選択ユニット260が、本明細書に記載されている区分化技術の任意の組み合わせを実行するように構成されてよい。
上記のように、ビデオエンコーダ20は、一組の(予め決定された)予測モードから最良の予測モードまたは最適な予測モードを決定または選択するように構成される。一組の予測モードは、イントラ予測モードおよび/またはインター予測モードを含んでよい。
[イントラ予測]
一組のイントラ予測モードは、35個の異なるイントラ予測モード、例えば、DC(または平均(mean))モードおよび平面モードのような無指向性モード、または、例えば、HEVCで定義されるような指向性モードを含んでもよいし、67個の異なるイントラ予測モード、例えば、DC(または平均)モードおよび平面モードのような無指向性モード、または、例えば、VVCのために定義されるような指向性モードを含んでもよい。
イントラ予測ユニット254は、同じ現在の画像の近接ブロックの再構成されたサンプルを使用して、これら一組のイントラ予測モードのうち、あるイントラ予測モードに従って(イントラ)予測ブロック265を生成するように構成される。
イントラ予測ユニット254(または一般に、モード選択ユニット260)は更に、イントラ予測パラメータ(または一般に、ブロックについて、選択されたイントラ予測モードを示す情報)を、符号化された画像データ21に含めるため構文要素266の形式でエントロピ符号化ユニット270に出力するように構成されてよく、その結果、例えば、ビデオデコーダ30は、予測パラメータを復号のため受信および使用してよい。
[インター予測]
一組の(または考えられる)インター予測モードは、利用可能な参照画像(すなわち、例えば、DBP230に保存されている以前の少なくとも部分的に復号された画像)および他のインター予測パラメータ、例えば、参照画像の全体が最良に一致する参照ブロックの検索に使用されるのか、または、参照画像の一部のみ、例えば、現在のブロックのエリアの周りの検索ウィンドウエリアのみが使用されるのか、および/または、例えば、ハーフ/セミペル補間および/またはクォーターペル補間などの画素補間が適用されるかどうかに依存する。
上記の予測モードに加えて、スキップモードおよび/または直接モードが適用されてもよい。
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(どちらも図2には示されていない)を含んでよい。動き推定ユニットは、画像ブロック203(現在の画像17の現在の画像ブロック203)および復号された画像231、または、少なくとも1つまたは複数の以前に再構成されたブロック、例えば、1または複数の以前に復号された画像231の再構成されたブロックを、動き推定のため受信または取得するように構成されてよい。例として、ビデオシーケンスは、現在の画像と以前に復号された画像231とを含んでよい、または、つまり、現在の画像と以前に復号された画像231とは、ビデオシーケンスを形成する一連の画像の一部であっても、それを形成してもよい。
エンコーダ20は、これら複数の以前に復号された画像のうちの同じまたは異なる画像の複数の参照ブロックからある参照ブロックを選択し、且つ、参照画像(または参照画像インデックス)、および/または、参照ブロックの位置(x、y座標)と現在のブロックの位置との間のオフセット(空間的オフセット)を、インター予測パラメータとして動き推定ユニットに提供するように構成されてよい。このオフセットは動きベクトル(MV)とも呼ばれる。
動き補償ユニットは、インター予測パラメータを取得する、例えば、受信するように構成されてよく、当該インター予測パラメータに基づいてまたはそれを使用してインター予測を実行して、(インター)予測ブロック265を取得するように構成されてよい。動き補償ユニットにより実行される動き補償は、動き推定により決定される動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成し、場合によっては副画素の精度に対する補間を実行することを含んでよい。補間フィルタリングは既知の画素サンプルから更なる画素サンプルを生成し得るため、画像ブロックのコーディングに使用され得る予測ブロック候補の数が増加する可能性がある。動き補償ユニットは、現在の画像ブロックのPUの動きベクトルを受信すると、複数の参照画像リストのうちの1つにおいて動きベクトルが指し示す予測ブロックの位置を特定してよい。
動き補償ユニットは、ビデオスライスの画像ブロックを復号する際にビデオデコーダ30により使用されるブロックおよびビデオスライスに関連付けられる構文要素を生成してもよい。スライスおよびそれぞれの構文要素に加えて、またはそれらに代わるものとして、タイルグループおよび/またはタイルとそれぞれの構文要素とが生成または使用されてよい。
[エントロピコーディング]
エントロピ符号化ユニット270は、例えば、エントロピ符号化のアルゴリズムまたはスキーム(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応型VLCスキーム(CAVLC)、算術コーディングスキーム、二値化、コンテキスト適応型バイナリ算術コーディング(CABAC)、構文ベースのコンテキスト適応型バイナリ算術コーディング(SBAC)、確率区間区分化エントロピ(PIPE)コーディング、または別のエントロピ符号化の方法もしくは技術)、またはバイパス(圧縮なし)を、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/または他の構文要素に適用して、例えば、符号化されたビットストリーム21の形式で出力272を介して出力され得る符号化された画像データ21を取得するように構成され、その結果、例えば、ビデオデコーダ30は、パラメータを復号のため受信および使用してよい。符号化されたビットストリーム21は、ビデオデコーダ30に伝送されても、後でビデオデコーダ30により伝送または取得されるようメモリに保存されてもよい。ビデオエンコーダ20の他の構造的な変形例を使用してビデオストリームを符号化することもできる。例えば、非変換ベースのエンコーダ20が、特定のブロックまたはフレームについて変換処理ユニット206を用いずに残差信号を直接量子化することができる。別の実装では、エンコーダ20は、単一のユニットに組み合わされた量子化ユニット208および逆量子化ユニット210を有することができる。
[デコーダおよび復号方法]
図3は、本願の技術を実装するように構成されるビデオデコーダ30の例を示す。ビデオデコーダ30は、例えば、エンコーダ20により符号化される、符号化された画像データ21(例えば、符号化されたビットストリーム21)を受信して、復号された画像331を取得するように構成される。符号化された画像データまたはビットストリームは、符号化された画像データを復号するための情報、例えば、符号化されたビデオスライス(および/またはタイルグループもしくはタイル)の画像ブロックおよび関連付けられる構文要素を表すデータを含む。
図3の例において、デコーダ30は、エントロピ復号ユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(例えば、アナログ加算器314)、(ライン)バッファ316、ループフィルタ320、復号された画像バッファ(DPB)330、モードアプリケーションユニット360、インター予測ユニット344、およびイントラ予測ユニット354を備える。
インター予測ユニット344は、動き補償ユニットであっても、それを含んでもよい。ビデオデコーダ30は、幾つかの例では、図2のビデオエンコーダ20に関して説明されている符号化経路に対して概して逆の復号経路を実行してよい。
エンコーダ20に関して説明されているように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、(ライン)バッファ216、ループフィルタ220,復号された画像バッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の「内蔵デコーダ」を形成するものとも見なされる。結果的に、逆量子化ユニット310は、逆量子化ユニット210と機能が同一であってよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能が同一であってよく、再構成ユニット314は、再構成ユニット214と機能が同一であってよく、(ライン)バッファ316は、イントラ予測ユニット354に参照サンプル317を提供する(ライン)バッファ216と機能が同一であってよく、ループフィルタ320は、ループフィルタ220と機能が同一であってよく、復号された画像バッファ330は、復号された画像バッファ230と機能が同一であってよい。従って、ビデオエンコーダ20のそれぞれのユニットおよび機能について提供されている説明は、ビデオデコーダ30のそれぞれのユニットおよび機能に準用される。
[エントロピ復号]
エントロピ復号ユニット304は、ビットストリーム21(または一般に、符号化された画像データ21)を解析し、且つ、例えば、符号化された画像データ21に対するエントロピ復号を実行して、例えば、量子化された係数309および/または復号されたコーディングパラメータ366、例えば、インター予測パラメータ(例えば、参照画像インデックスおよび動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/または他の構文要素のいずれかまたは全てを取得するように構成される。エントロピ復号ユニット304は、エンコーダ20のエントロピ符号化ユニット270に関して説明されているような符号化のスキームに対応する復号のアルゴリズムまたはスキームを適用するように構成されてよい。エントロピ復号ユニット304は更に、インター予測パラメータ、イントラ予測パラメータ、および/または他の構文要素をモード選択ユニット360に、他のパラメータをデコーダ30の他のユニットに提供するように構成されてよい。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルで構文要素を受信してよい。スライスおよびそれぞれの構文要素に加えて、またはそれらに代わるものとして、タイルグループおよび/またはタイルとそれぞれの構文要素とが受信および/または使用されてよい。
[逆量子化]
逆量子化ユニット310は、(例えば、エントロピ復号ユニット304で、例えば、解析および/または復号することにより、)符号化された画像データ21から量子化パラメータ(QP)(または一般に、逆量子化に関連する情報)および量子化された係数を受信し、且つ、当該量子化パラメータに基づいて、復号済みの量子化された係数309に逆量子化を適用して、変換係数311とも呼ばれることがある量子化解除された係数311を取得するように構成されてよい。逆量子化プロセスは、量子化の程度と、同様に適用されるべき逆量子化の程度とを決定するために、ビデオスライス(またはタイルもしくはタイルグループ)内のビデオブロックごとにビデオエンコーダ20により決定される量子化パラメータの使用を含んでよい。
[逆変換]
逆変換処理ユニット312は、変換係数311とも呼ばれる量子化解除された係数311を受信し、且つ、サンプル領域内の再構成された残差ブロック313を取得すべく、量子化解除された係数311に変換を適用するように構成されてよい。再構成された残差ブロック313は、変換ブロック313とも呼ばれることがある。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであってよい。逆変換処理ユニット312は更に、(例えば、エントロピ復号ユニット304で、例えば、解析および/または復号することにより、)符号化された画像データ21から変換パラメータまたは対応する情報を受信して、量子化解除された係数311に適用されるべき変換を決定するように構成されてよい。
[再構成]
再構成ユニット314(例えば、加算器またはアナログ加算器314)は、例えば、再構成された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することにより、再構成された残差ブロック313を予測ブロック365に加算して、サンプル領域内の再構成されたブロック315を取得するように構成されてよい。
[フィルタリング]
(コーディングループ内またはコーディングループの後のどちらか一方にある)ループフィルタユニット320は、例えば、画素遷移を平滑化するか、そうでなければビデオ品質を向上させるために、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得するように構成される。ループフィルタユニット320は、ブロック解除フィルタ、サンプル適応型オフセット(SAO)フィルタ、または、1または複数の他のフィルタ、例えば、バイラテラルフィルタ、適応型ループフィルタ(ALF)、鮮鋭化、平滑化フィルタもしくは協調フィルタ、またはそれらの任意の組み合わせなどの、1または複数のループフィルタを含んでよい。図3にはループフィルタユニット320がループ内フィルタとして示されているが、他の構成では、ループフィルタユニット320がポストループフィルタとして実装されてもよい。
[復号された画像バッファ]
その後、画像の復号されたビデオブロック321は、復号された画像バッファ330に保存され、復号された画像バッファ330は、復号された画像331を、他の画像の後続の動き補償のため、および/または、出力もしくはそれぞれの表示のための参照画像として保存する。
デコーダ30は、復号された画像311を、例えば、出力312を介して出力して、ユーザに提示または表示するように構成される。
[予測]
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってよく、イントラ予測ユニット354は、イントラ予測ユニット254と機能が同一であってよく、(例えば、エントロピ復号ユニット304で、例えば、解析および/または復号することにより、)符号化された画像データ21から受信される区分化パラメータおよび/または予測パラメータまたはそれぞれの情報に基づいて分割または区分化の決定および予測を実行する。モード選択ユニット360は、再構成された画像、ブロック、またはそれぞれのサンプル(フィルタリングされている、またはフィルタリングされていない)に基づいてブロックごとに予測(イントラ予測またはインター予測)を実行して、予測ブロック365を取得するように構成されてよい。更に、ラインバッファ316からの参照サンプル317は、イントラ予測ユニット354により使用されてよい。
ビデオスライスまたは画像がイントラコーディングされた(I)スライスとしてコーディングされている場合は、モード選択ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードと、現在の画像の以前に復号されたブロックからのデータとに基づき、現在のビデオスライスの画像ブロックについて予測ブロック365を生成するように構成される。ビデオスライスまたは画像がインターコーディングされた(すなわち、BまたはP)スライスとしてコーディングされている場合は、モード選択ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピ復号ユニット304から受信される動きベクトルおよび他の構文要素に基づき、現在のビデオスライスのビデオブロックについて予測ブロック365を生成するように構成される。インター予測では、予測ブロックが、複数の参照画像リストのうちの1つにおける複数の参照画像のうちの1つから生成されてよい。ビデオデコーダ30は、リスト0及びリスト1という参照画像リストを、DPB330に保存された参照画像に基づき、デフォルトの構築技術を使用して構築してよい。スライス(例えば、ビデオスライス)に加えて、またはそれらに代わるものとして、タイルグループ(例えば、ビデオタイルグループ)および/またはタイル(例えば、ビデオタイル)を使用する実施形態に対して、または当該実施形態により、同じまたは同様の手法が適用されてよい、例えば、I、P、またはBのタイルグループおよび/またはタイルを使用してビデオがコーディングされてよい。
モード選択ユニット360は、動きベクトルおよび他の構文要素を解析することにより現在のビデオスライスのビデオ/画像ブロックについて予測情報を決定し、且つ、当該予測情報を使用して、復号されている現在のビデオブロックについて予測ブロックを生成するように構成される。例えば、モード選択ユニット360は、受信された構文要素のうちの幾つかを使用して、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラ予測またはインター予測)と、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照画像リストのうちの1または複数に関する構築情報と、スライスのインターコーディングされたビデオブロックごとの動きベクトルと、スライスのインターコーディングされたビデオブロックごとのインター予測状態と、現在のビデオスライス内のビデオブロックを復号するための他の情報とを決定する。スライス(例えば、ビデオスライス)に加えて、またはそれらに代わるものとして、タイルグループ(例えば、ビデオタイルグループ)および/またはタイル(例えば、ビデオタイル)を使用する実施形態に対して、または当該実施形態により、同じまたは同様の手法が適用されてよい、例えば、I、P、またはBのタイルグループおよび/またはタイルを使用してビデオがコーディングされてよい。
図3に示すようなビデオデコーダ30の実施形態は、スライス(ビデオスライスとも呼ばれる)を使用することにより画像を区分化および/または復号するように構成されてよく、画像は1または複数のスライス(通常は非重複)に区分化されても、1または複数のスライスを使用して復号されてもよく、各スライスは1または複数のブロック(例えば、CTU)を含んでよい。
図3に示すようなビデオデコーダ30の実施形態は、タイルグループ(ビデオタイルグループとも呼ばれる)および/またはタイル(ビデオタイルとも呼ばれる)を使用することにより画像を区分化および/または復号するように構成されてよく、画像は1または複数のタイルグループ(通常は非重複)に区分化されても、1または複数のタイルグループを使用して復号されてもよく、各タイルグループは1または複数のブロック(例えば、CTU)または1または複数のタイルを含んでよく、各タイルは長方形の形状であってよく、1または複数のブロック(例えば、CTU)、例えば、完全または部分的なブロックを含んでよい。ビデオデコーダ30の他の変形例を使用して、符号化された画像データ21を復号することができる。例えば、デコーダ30は、ループフィルタリングユニット320を用いずに出力ビデオストリームを生成することができる。例えば、非変換ベースのデコーダ30が、特定のブロックまたはフレームについて逆変換処理ユニット312を用いずに残差信号を直接逆量子化することができる。別の実装では、ビデオデコーダ30は、単一のユニットに組み合わされた逆量子化ユニット310および逆変換処理ユニット312を有することができる。
エンコーダ20およびデコーダ30では、現在の段階の処理結果を更に処理して、その後、次の段階に出力してよいものと理解されたい。例えば、補間フィルタリング、動きベクトルの導出、またはループフィルタリングの後に、補間フィルタリング、動きベクトルの導出、またはループフィルタリングの処理結果に対して、クリップまたはシフトなどの更なる演算が実行されてよい。
なお、現在のブロックの導出された動きベクトル(限定されるわけではないが、アフィンモードの制御点動きベクトル、アフィンモード、平面モード、ATMVPモードのサブブロック動きベクトル、および時間的な動きベクトルなどを含む)に対して更なる演算が適用されてよい。例えば、動きベクトルの値は、その表現ビット数に従って予め定義された範囲に制限される。動きベクトルの表現ビット数がbitDepthである場合は、その範囲が-2^(bitDepth-1)~2^(bitDepth-1)-1であり、「^」はべき乗を意味する。例えば、bitDepthが16に等しく設定されている場合は、その範囲が-32768~32767であり、bitDepthが18に等しく設定されている場合は、その範囲が-131072~131071である。例えば、導出された動きベクトル(例えば、1つの8×8ブロック内の4つの4×4サブブロックのMV)の値は、4つの4×4サブブロックのMVの整数部分間の最大差がN画素を超えない、例えば、1画素を超えないように制限される。
以下の説明では、bitDepthに従って動きベクトルを制限するための方法を2つ提供する。
方法1:以下の演算でオーバフローMSB(最上位ビット)を除去する。
ux=(mvx+2bitDepth)%2bitDepth (1)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux (2)
uy=(mvy+2bitDepth)%2bitDepth (3)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy (4)
ここで、mvxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、mvyは、イメージブロックまたはサブブロックの動きベクトルの垂直成分であり、uxおよびuyは、それぞれの中間値を示す。
例えば、mvxの値が-32769である場合は、式(1)および式(2)を適用した後に、結果として得られる値が32767である。コンピュータシステムでは、十進数が2の補数として保存される。
-32769の2の補数は、1,0111,1111,1111,1111(17ビット)である。その後、MSBが破棄されるため、結果として得られる2の補数は0111,1111,1111,1111(十進数は32767)であり、式(1)および式(2)を適用することによる出力と同じである。
ux=(mvpx+mvdx+2bitDepth)%2bitDepth (5)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux (6)
uy=(mvpy+mvdy+2bitDepth)%2bitDepth (7)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy (8)
式(5)から式(8)に示すように、これらの演算は、動きベクトル予測因子mvpと動きベクトル差mvdとの合計中に適用されてよい。
方法2:値をクリッピングすることによりオーバフローMSBを除去する。
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
ここで、vxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、vyは、イメージブロックまたはサブブロックの動きベクトルの垂直成分であり、x、y、zは、MVクリッピングプロセスの3つの入力値にそれぞれ対応し、関数Clip3の定義は以下の通りである。
図4は、本開示のある実施形態に係るビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、下記のような開示されている実施形態を実装するのに適している。ある実施形態では、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30などのデコーダ、または図1Aのビデオエンコーダ20などのエンコーダであってよい。
ビデオコーディングデバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニット、または中央処理装置(CPU)430と、データを送信するための送信ユニット(Tx)440および出口ポート450(または出力ポート450)と、データを保存するためのメモリ460とを備えてよい。ビデオコーディングデバイス400は、光信号または電気信号が出入りするための入口ポート410、受信ユニット420、送信ユニット440、および出口ポート450に結合される光/電気(OE)構成要素および電気/光(EO)構成要素を備えてもよい。
プロセッサ430は、ハードウェアおよびソフトウェアにより実装されてよい。プロセッサ430は、1または複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装されてよい。プロセッサ430は、入口ポート410、受信ユニット420、送信ユニット440、出口ポート450、およびメモリ460と通信状態にあってよい。プロセッサ430はコーディングモジュール470を備えてよい。コーディングモジュール470は、上記および下記の開示されている実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング演算を実装、処理、準備、または提供してよい。従って、コーディングモジュール470を含めることで、ビデオコーディングデバイス400の機能の大幅な改善が提供され、ビデオコーディングデバイス400の異なる状態への変換が行われる。代替的に、コーディングモジュール470は、メモリ460に保存され、且つ、プロセッサ430により実行される命令として実装されてよい。
メモリ460は、1または複数のディスク、テープドライブ、およびソリッドステートドライブを備えてよく、プログラムが実行のため選択されたときに係るプログラムを保存し、且つ、プログラムの実行中に読み取られる命令およびデータを保存するための、オーバフローデータ記憶デバイスとして使用されてよい。メモリ460は、例えば、揮発性および/または不揮発性であってよく、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってよい。
図5は、例示的な実施形態に係る図1Aのソースデバイス12および宛先デバイス14のどちらか一方または両方として使用され得る装置500の簡略ブロック図である。
装置500内のプロセッサ502を中央処理装置とすることができる。代替的に、プロセッサ502は、現存しているまたは今後開発される情報を操作または処理できる任意の他のタイプのデバイスまたは複数のデバイスとすることもできる。開示されている実装は、示されているような単一のプロセッサ、例えば、プロセッサ502で実施され得るが、1より多くのプロセッサを使用して速度および効率の利点が実現され得る。
ある実装では、装置500内のメモリ504をリードオンリメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスとすることができる。任意の他の最適なタイプの記憶デバイスがメモリ504として使用され得る。メモリ504は、バス512を使用してプロセッサ502によりアクセスされるコードおよびデータ506を含むことができる。メモリ504は更に、オペレーティングシステム508およびアプリケーションプログラム510を含むことができ、アプリケーションプログラム510は、プロセッサ502が本明細書に記載の方法を実行できるようにする少なくとも1つのプログラムを含む。
例えば、アプリケーションプログラム510は、アプリケーション1からアプリケーションNを含むことができ、アプリケーション1からアプリケーションNは更に、本明細書に記載の方法を実行するビデオコーディングアプリケーションを含む。
装置500は、ディスプレイ518などの1または複数の出力デバイスを含むこともできる。一例では、ディスプレイ518は、ディスプレイを、タッチ入力を感知するように動作可能なタッチセンシティブ要素と組み合わせたタッチセンシティブディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502に結合され得る。
装置500のバス512は、ここでは単一のバスとして描写されているが、複数のバスで構成され得る。更には、二次記憶装置514が、装置500の他の構成要素に直接結合されてもよいし、ネットワークを介してアクセスされてもよく、メモリカードなどの単一の統合ユニット、または複数のメモリカードなどの複数のユニットを備えることができる。
更に、装置500には、イメージ感知デバイス520および/または音感知デバイス522が含まれてよい。故に、装置500は多種多様な構成で実装され得る。
[インター/イントラ予測の組み合わせ(CIIP)]
従来、コーディングユニットは、(同じ画像内の参照サンプルを使用して)イントラ予測されるか、(他の画像内の参照サンプルを使用して)インター予測されるかのどちらか一方である。インター/イントラ予測の組み合わせでは、これら2つの予測手法が組み合わされる。従って、これは多重仮説(MH)予測と呼ばれることもある。インター/イントラ予測の組み合わせが有効である場合は、イントラ予測およびインター予測されたサンプルが重みにより適用されるため、予測されたサンプルの加重平均として最終的な予測が導出される。
ブロックがいつインター/イントラ予測の組み合わせでコーディングされるかを示すには、フラグ、すなわち、CIIPフラグが使用される。
CIIPでコーディングされるブロックが更に、図6および図7に示すように、幾つかのサブブロックに分割されてよい。一例では、サブブロックは、ブロックを水平サブブロックに分割することにより、すなわち、垂直方向に分割することにより導出され、各サブブロックは、元のブロックと同じ幅であるが、元のブロックの1/4の高さしかない。
一例では、サブブロックは、ブロックを垂直サブブロックに分割することにより、すなわち、水平方向に分割することにより導出され、各サブブロックは、元のブロックと同じ高さであるが、元のブロックの1/4の幅しかない。
CIIPには、より多くの残差信号を通例は有するイントラ予測の結果が含まれるため、CIIPに起因してブロックアーチファクトがもたらされることがある。ブロックアーチファクトは、CIIPブロックの境界だけでなく、CIIPブロック内のサブブロックエッジ、例えば、図6の垂直サブブロックエッジA、B、Cでも生じる。水平サブブロックエッジは、それに応じて識別され得る。ブロックアーチファクトを除去するには、図7に示すように、CIIPブロック内のサブブロックエッジをブロック解除してよい。
ブロックアーチファクトはCIIPブロックの境界およびCIIPブロック内のサブブロックエッジの両方で生じる可能性があるが、これら2つの境界に起因する歪みは異なることがあり、異なる境界強度が必要とされることがある。
サブブロックエッジは、CIIP自体に起因することがある。例えば、CIIPブロックのイントラ予測モードが水平モードである場合は、図6に示すような垂直区分化が適用され、結果として、3つのサブブロックエッジがもたらされる。
ただし、サブブロックエッジは、TU(変換ユニット)のサイズ制限にも起因することがある。VTM3.0(多用途ビデオコーディングテストモデル3.0)では、最大TUサイズが64×64サンプルである。CU(コーディングユニット)が128×128サンプルである場合は、それは、図8に示すように4つのTUに分割され、結果として、4つのTU境界になる。その結果、変換が64×64の粒度で適用される。破線として示すTU境界をブロック解除する必要がある。
更には、特定のコーディングツール(例えば、サブブロック変換)が適用されると、図9などに示すように、CIIPの予測により処理されるCU内でTUエッジが生じる可能性がある。CIIPでコーディングされるコーディングユニットが更に、複数の変換ユニットに分割されてよい。故に、図9で破線として強調表示されているTU境界は、CIIPユニット内の内部TUエッジを表す。CIIPユニット内のこれらの内部TUエッジもブロック解除する必要がある。
説明の残りの部分では、以下の用語を使用する。
CIIPブロック:CIIPの適用により予測されるコーディングブロック
イントラブロック:CIIPではなくイントラ予測の適用により予測されるコーディングブロック
インターブロック:CIIPではなくインター予測の適用により予測されるコーディングブロック
[ブロック解除フィルタおよび境界強度]
HEVCおよびVVCなどのビデオコーディングスキームは、ブロックベースのハイブリッドビデオコーディングの成功原理に沿って設計されている。この原理を使用して、まず、画像がブロックに区分化され、その後、各ブロックがイントラ画像またはインター画像の予測を使用することにより予測される。これらのブロックは近接ブロックに関してコーディングされ、ある程度の類似性で元の信号を近似する。コーディングされたブロックのみが元の信号を近似するので、近似間の差によって、予測ブロックおよび変換ブロックの境界で切れ目が生じることがある。これらの切れ目は、ブロック解除フィルタにより減衰される。図10は、サブパーティションのサンプルに対するブロック解除フィルタの適用の例を示す。サブパーティションのサイズがブロック解除の方向に直交する8つのサンプルより小さい場合は、決定プロセスで3つのサンプルのみを使用し、且つ、1つのサンプルを修正する、弱いファイラが使用される。
ブロック境界をフィルタリングするかどうかの決定では、予測モードおよび動きベクトルなどのビットストリーム情報が使用される。幾つかのコーディング条件では、強いブロックアーチファクトの作成される可能性が高くなり、強いブロックアーチファクトは、全てのブロック境界に割り当てられ、且つ、表1のように決定される、いわゆる境界強度(BsまたはBS)変数により表される。
ブロック解除は、ルマ成分についてBsが0より大きく、且つ、クロマ成分についてBsが1より大きいブロック境界にのみ適用される。Bsの値が高いほど、より高いクリッピングパラメータ値を使用することにより、より強いフィルタリングが可能になる。Bsの導出条件は、イントラ予測されたブロック境界に最も強いブロックアーチファクトが現れる確率を反映する。
通例、境界の2つの隣接するブロックには、図11に示すように、PおよびQのラベルが付られる。この図は垂直境界の場合を描写している。水平境界を考慮する場合は、図11を時計回りに90度回転させるものとし、Pが上ブロック、Qが下ブロックとなる。
[最も可能性の高いモードリストの構築]
最も可能性の高いモード(MPM)リストは、コーディング効率を向上させるためにイントラモードコーディングで使用される。イントラモードの数が多いこと(例えば、HEVCでは35、VVCでは67)に起因して、現在のブロックのイントラモードは直接シグナリングされない。代わりに、現在のブロックの最も可能性の高いモードリストが、その近接ブロックのイントラ予測モードに基づいて構築される。現在のブロックのイントラモードがその近接するものに関連しているため、MPMリストは通例、その名前(最も可能性の高いモードリスト)が示すように、適切な予測を提供する。故に、現在のブロックのイントラモードは、そのMPMリストに入る可能性が高い。このように、現在のブロックのイントラモードを導出するには、MPMリストのインデックスのみがシグナリングされる。イントラモードの合計の数と比較して、MPMリストの長さははるかに短くなる(例えば、HEVCでは3-MPMリストが使用され、VVCでは6-MPMリストが使用される)。従って、イントラモードのコーディングに必要とされるビットが少なくなる。現在のブロックのイントラモードがそのMPMリストに属しているかどうかを示すには、フラグ(mpm_flag)が使用される。それが真である場合は、MPMリストを使用して現在のブロックのイントラモードにインデックスを付けることができる。それ以外の場合は、二値化されたコードを使用してイントラモードが直接シグナリングされる。VVCおよびHEVCの両方で、MPMリストは、その近接する左側のブロックおよび上部のブロックに基づいて構築される。現在のブロックの左側の近接ブロックおよび上部の近接ブロックを予測に利用できない場合は、デフォルトのモードリストが使用される。
[動きベクトル予測]
動きベクトル予測は、動きデータのコーディングで使用される技術である。動きベクトルには通例、水平方向および垂直方向の動きをそれぞれ指す2つの成分xおよびyがある。現在のブロックの動きベクトルは通例、現在の画像内または以前にコーディングされた画像内の近接ブロックの動きベクトルと相関している。これは、近接ブロックが同様の動きの同じ移動物体に対応する可能性が高く、物体の動きが経時的に突然変化する可能性が低いためである。
その結果、近接ブロックの動きベクトルを予測因子として使用すると、シグナリングされた動きベクトル差のサイズが縮小される。動きベクトル予測因子(MVP)は通例、同じ場所に配置された画像内の空間的に近接するブロックおよび/または時間的に近接するブロックからの、既に復号された動きベクトルから導出される。
ブロックがCIIPの適用により予測されると判断された場合は、その最終的な予測されたサンプルは、イントラ予測されたサンプルに部分的に基づいている。イントラ予測も含まれるため、残差係数および変換係数は概して、インターブロック(mvd、マージ、スキップ)と比較して大きくなる。従って、これらの多重仮説(MHまたはMHIntra)ブロック、すなわち、CIIPブロックが他のブロックに隣接する場合は、境界を跨ってより多くの切れ目が存在することになる。HEVCおよびVVCでは、境界の2つの隣接するブロックのいずれかがイントラ予測されると、この境界に対して強いブロック解除フィルタが適用され、境界強度(BS)のパラメータは2(最も強い)に設定される。
ただし、VTM3.0では、CIIPにより予測されるブロックに起因する潜在的なブロックアーチファクトが考慮されない。境界強度の導出では依然として、CIIPを伴うブロックをインターブロックと見なす。特定の状況下では、係る処理手法によって、主観的および客観的な品質が低下することがある。
本開示の実施形態は、ブロック解除フィルタを向上させるために、CIIPブロックを組み込むための幾つかの代替案を提供するものであり、特定の境界の境界強度の導出がCIIPブロックの影響を受ける。
多用途ビデオコーディングの参照文献(ドラフト3)がVVCドラフト3.0と定義されており、以下のリンクを介して見つけることができる。
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L1001-v3.zip.
実施形態1:
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度が以下のように決定されてよい。
・図12に示すように、PブロックおよびQブロックのうちの少なくとも一方のブロックがCIIP(MHIntra予測)を伴うブロックである場合は、この境界の境界強度パラメータが第1の値に設定される。例えば、第1の値は2に等しくてよい。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、更なる条件付き評価に従って決定される。この境界の境界強度の導出は図12に示されており、表1の仕様に従っている。
・より具体的には、PブロックおよびQブロックのうちの少なくとも一方が非ゼロの変換係数を有する場合は、境界強度が1に等しいと決定される。同様に、PブロックおよびQブロックのインター予測で異なる参照画像が使用されるか、PブロックおよびQブロックの動きベクトルの数が異なる場合は、境界強度が1に等しいと決定される。更に、PブロックおよびQブロックの動きベクトル間の絶対差が、動きベクトルの水平成分および垂直成分のうちの少なくとも一方について1つの整数ルマサンプルより大きいかそれに等しい場合は、境界強度が1に等しいと決定される。
・比較のため、図13には、VVCまたはITU-H.265のビデオコーディング規格で規定された方法が示されている。PブロックもQブロックもCIIPの適用により予測されない場合の本実施形態に係る境界強度の決定は、図13の既知の方法に対応する。
・PブロックおよびQブロックに含まれる画素サンプルは、上述のような決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態2:
図14に示すように、2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度が代替的に以下のように導出されてもよい。
・PブロックおよびQブロックのうちの少なくとも一方のブロックがイントラ予測を伴うブロックである場合は、境界強度が2に設定される。
・それ以外の場合は、PブロックおよびQブロックのうちの少なくとも一方のブロックがCIIP(MHIntra予測)を伴うブロックである場合に、この境界の境界強度が第1の値、例えば、1に設定される。
・それ以外の場合は、PブロックおよびQブロックのうちの少なくとも一方が非ゼロの変換係数を有する場合に、この境界の境界強度が第2の値、例えば、1に設定される。第1の値および第2の値は異なっていてよい。
・それ以外の場合は、PブロックおよびQブロックに属する動きベクトル間の絶対差が1つの整数ルマサンプルより大きいかそれに等しい場合に、この境界の境界強度が第2の値、例えば、1に設定される。
・それ以外の場合は、隣接ブロックの動き予測が異なる参照画像を参照するか、動きベクトルの数が異なる場合に、この境界の境界強度が第2の値、例えば、1に設定される。
・それ以外の場合は、この境界の境界強度が0に設定される。
・PブロックおよびQブロックに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態3:
図15に示すように、2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、この境界の境界強度が代替的に以下のように設定されてもよい。
・PブロックおよびQブロックのうちの少なくとも一方のブロックが、CIIPの適用によってではなく、イントラ予測の適用によって予測される場合は、境界強度が2に等しく設定される。可能性としては、Pブロックが多重仮説(MHまたはMHIntra)、すなわち、CIIP予測ではなくイントラ予測により予測され、且つ、Qブロックが任意の予測関数により予測されることが含まれ、その逆もまた同様である。
・PブロックおよびQブロックがインター予測の適用またはCIIPの適用により予測される場合(可能性としては、Pブロックがインターブロックであり、且つ、Qブロックがインターブロックであること、または代替的に、Pブロックがインターブロックであり、且つ、QブロックがCIIPブロックであること、または代替的に、PブロックがCIIPブロックであり、且つ、Qブロックがインターブロックであること、または代替的に、PブロックがCIIPブロックであり、且つ、QブロックがCIIPブロックであることが含まれる)は、以下が適用されてよい。
・PブロックおよびQブロックのうちの少なくとも一方が非ゼロの変換係数を有する場合は、境界の境界強度パラメータが1に等しく設定される。
・それ以外の場合(PブロックおよびQブロックが非ゼロの変換係数を有しない場合)は、PブロックおよびQブロックが異なる参照画像に基づいて予測されるか、ブロックPおよびブロックQの予測に使用される動きベクトルの数が等しくない場合に、この境界の境界強度が1に等しく設定される。
・それ以外の場合(PブロックおよびQブロックが非ゼロの変換係数を有さず、且つ、PブロックおよびQブロックが同じ参照画像に基づいて予測され、且つ、PブロックおよびQブロックの予測に使用される動きベクトルの数が同じである場合)は、PブロックおよびQブロックの予測に使用される動きベクトル間の絶対差が1つの整数ルマサンプルより大きいかそれに等しい場合に、この境界の境界強度が1に等しく設定される。
・それ以外の場合(上記3つの条件が全て偽であると評価された場合)は、この境界の境界強度が0に等しく設定される。
・続いて、PブロックおよびQブロックのうちの少なくとも一方のブロックがCIIPを伴うブロックである場合は、境界強度が以下のように修正される。
・境界強度が予め定義された第1の値(一例では、予め定義された第1の値は2に等しい)に等しくない場合は、境界強度が予め定義された第2の値(一例では、予め定義された第2の値は1に等しい)ずつ増分される。
・PブロックおよびQブロックに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態4:
2つの側(上述の参照によるVVCドラフト3.0に記載されているようなPおよびQ)を有する境界の場合は、境界強度が以下のように導出されてよい。
・この境界が水平境界であり、且つ、PおよびQが異なるCTUに属する場合は、次のようになる。
・ブロックQがCIIPを伴うブロックである場合は、境界強度が2に設定される。
・それ以外の場合は、上述の参照によるVVCドラフト3.0で定義されているように、且つ、図13に示すように、境界強度が導出される。
・それ以外の場合:
・PブロックおよびQブロックのうちの少なくとも一方のブロックがCIIPを伴うブロックである場合は、この境界の境界強度が2に設定される。
・それ以外の場合は、上述の参照によるVVCドラフト3.0で定義されているように、且つ、図13に示すように、この境界の境界強度を導出する。
実施形態5:
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの実施形態に従って以下のように決定されてよい。
・PブロックまたはQブロックのうちの少なくとも一方が、CIIPの適用ではなくイントラ予測の適用により予測される場合は、境界強度が2に等しく設定される。可能性としては、Pブロックが多重仮説(CIIP)予測ではなくイントラ予測により予測され、且つ、Qブロックが任意の予測関数により予測されることが含まれ、その逆もまた同様である。
・PブロックおよびQブロックがインター予測またはCIIPの適用により予測される場合(可能性としては、Pブロックがインターブロックであり、且つ、Qブロックがインターブロックであること、または代替的に、Pブロックがインターブロックであり、且つ、QブロックがCIIPブロックであること、または代替的に、PブロックがCIIPブロックであり、且つ、Qブロックがインターブロックであること、または代替的に、PブロックがCIIPブロックであり、且つ、QブロックがCIIPブロックであることが含まれる)は、以下が適用されてよい。
・境界が水平境界であり、且つ、PおよびQが2つの異なるCTU内に配置される場合は、次のようになる。
・Qブロック(Qブロックは、Pブロックの下に配置されるブロックとして示される)がCIIPの適用により予測される場合は、境界の境界強度が1に等しく設定される。
・それ以外の場合(QブロックがCIIPの適用により予測されない場合)は、隣接するブロックPおよびブロックQのうちの少なくとも一方が非ゼロの変換係数を有する場合に、境界の境界強度が1に等しく設定される。
・それ以外の場合は、PブロックおよびQブロックの予測に使用される動きベクトル間の絶対差が1つの整数ルマサンプルより大きいかそれに等しい場合に、境界の境界強度が1に等しく設定される。
・それ以外の場合は、隣接するブロックPおよびブロックQの動き補償予測が異なる参照画像に基づいて実行される場合、または、ブロックPおよびブロックQの予測に使用される動きベクトルの数が等しくない場合に、境界の境界強度が1に等しく設定される。これら最後の2つの条件の順序は、図13に示すように逆にしてよい。
・それ以外の場合は、境界の境界強度が0に等しく設定される。
・それ以外の場合(境界が垂直境界である場合、または、ブロックPおよびブロックQが同じCTU内に含まれる場合):
・PブロックおよびQブロックのうちの少なくとも一方がCIIPの適用により予測される場合は、境界の境界強度が1に等しく設定される。
・それ以外の場合は、隣接するブロックPおよびブロックQのうちの少なくとも一方が非ゼロの変換係数を有する場合に、当該境界の境界強度が1に等しく設定される。
・それ以外の場合は、ブロックPおよびブロックQの予測に使用される動きベクトル間の絶対差が1つの整数ルマサンプルより大きいかそれに等しい場合に、境界の境界強度が1に等しく設定される。
・それ以外の場合は、隣接するブロックPおよびブロックQの動き補償予測が異なる参照画像に基づいて実行される場合、または、ブロックPおよびブロックQの予測に使用される動きベクトルの数が等しくない場合に、境界の境界強度が1に等しく設定される。これら最後の2つの条件の順序は、図13に示すように逆にしてよい。
・それ以外の場合は、この境界の境界強度が0に等しく設定される。
・ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態の利益:
多重仮説予測、すなわち、CIIPの適用により予測されるブロックのブロック解除フィルタリングは、中強度(1に等しい境界強度)のブロック解除フィルタで適用される。
ブロックがCIIPの適用により予測される場合は、インター予測の適用により第1予測が取得され、イントラ予測の適用により第2予測が取得され、これらは後で組み合わされる。最終的な予測はイントラ予測の部分を含むため、CIIPにより予測されるブロックの境界にブロックアーチファクトが存在する可能性がある。この問題を軽減するために、本発明に従って境界強度を1に設定して、CIIPの適用により予測されるブロックエッジのフィルタリングを保証する。
更には、本開示によって、必要とされるラインメモリが以下のように削減される。ラインメモリは、上部のCTU行に対応するン情報であって、近接する下部のCTU行の処理中に必要とされる情報の保存に必要なメモリと定義される。例えば、2つのCTU行間の水平境界をフィルタリングするには、上部のCTU行の予測モード情報(イントラ予測/インター予測/多重仮説(CIIP)予測)をラインメモリに保存する必要がある。ブロックの予測モードを説明するには3つの状態(イントラ予測/インター予測/多重仮説(CIIP)予測)が考えられるため、ラインメモリの要件がブロックあたり2ビットと定義され得る。
ただし、本開示によれば、ブロック(本実施形態のPブロック)が上部のCTU行に属する場合は、ブロック解除操作において、ブロックがインター予測またはイントラ予測のどちらにより予測されるかに関する情報のみが必要とされる(従って、ブロックあたり1ビットを使用して保存され得るのは、2つの状態のみである)。
理由は以下の通りである。
PブロックとQブロックとの間の境界が水平境界である場合、および、QブロックおよびPブロックが2つの異なるCTUに属する(全ての実施形態において、Qブロックは、Pブロックに対して下部にあるブロックである)場合は、PブロックがCIIPの適用により予測されるかどうかの情報が境界強度の決定において利用されない。イントラ予測およびCIIPは相互に排他的であるため、上記の実施形態5の第1条件をチェックするには、Pブロックがイントラ予測により予測されるかどうかを判断すれば十分である。従って、PブロックがCIIPの適用により予測されるかどうかの情報を保存する必要は全くない。
ハードウェア実装における開示の助けを借りると、(PブロックがCIIPにより予測される場合は)Pブロックの予測モードをインター予測へと一時的に変更することができ、変更された予測モードに従って境界強度の決定を実行することができる。その後(境界強度の決定後)、予測モードはCIIPに戻すことができる。なお、ハードウェア実装は、本明細書に記載の方法(CTU境界におけるPブロックの予測モードの変更)に限定されない。本開示によれば、これは、PブロックがCIIPにより予測されるかどうかの情報が(水平CTU境界における)境界強度の決定において必要ではないことを説明するための例として提示されているに過ぎない。
従って、本開示によれば、必要とされるラインメモリは、ブロックあたり2ビットからブロックあたり1ビットに削減される。なお、ハードウェアで実装する必要のあるラインメモリの合計は、画像幅に比例し、最小ブロック幅に反比例する。
実施形態6:
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの実施形態に従って以下のように決定されてよい。
・まず、図13に示すような、上述の参照によるVVCドラフト3.0またはITU-H.265のビデオコーディング規格で規定された方法に従って、境界の境界強度を決定する。
・境界が水平境界であり、且つ、PおよびQが2つの異なるCTU内に配置される場合は、次のようになる。
・ブロックQがCIIPの適用により予測される場合は、境界強度が以下のように修正される。
・境界強度が2に等しくない場合は、境界強度が1ずつ増分される。
・それ以外の場合(境界が垂直境界である場合、または、ブロックPおよびブロックQが同じCTU内に含まれる場合):
・ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測される場合は、境界の境界強度が以下のように調整される。
・境界強度が2に等しくない場合は、境界強度が1ずつ増分される。
・ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態7:
この実施形態は実施形態4の変形例を表す。
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、この実施形態に従って境界強度が以下のように導出されてよい。
・境界が水平境界であり、且つ、ブロックPおよびブロックQが異なるCTU内に配置される場合は、次のようになる。
・Qブロック(Qブロックは、Pブロックの下に配置されるブロックとして示される)がCIIPの適用により予測される場合は、境界強度が2に等しく設定される。
・QブロックがCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・ブロックQがCIIPの適用により予測されない場合、および、ブロックPおよびブロックQの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
・それ以外の場合(境界が垂直境界である場合、または、ブロックPおよびブロックQが同じCTU内に含まれる場合):
・PブロックまたはQブロックのうちの少なくとも一方がCIIPの適用により予測される場合は、境界の境界強度が2に等しく設定される。
・PブロックおよびQブロックの両方がCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックおよびQブロックの両方がCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
・PブロックおよびQブロックに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態の利益:
多重仮説(CIIP)予測の適用により予測されるブロックのブロック解除フィルタリングは、中強度(1に等しい境界強度)のブロック解除フィルタで実行される。
ブロックがCIIPの適用により予測される場合は、インター予測の適用により第1予測が取得され、イントラ予測の適用により第2予測が取得され、これらは後で組み合わされる。最終的な予測はイントラ予測の部分を含むため、CIIPにより予測されるブロックの境界にブロックアーチファクトが存在する可能性がある。この問題を軽減するために、本開示に従って境界強度を2に設定して、CIIPの適用により予測されるブロックエッジのフィルタリングを保証する。
更には、本開示によって、必要とされるラインメモリが以下のように削減される。ラインメモリは、上部のCTU行に対応するン情報であって、近接する下部のCTU行の処理中に必要とされる情報の保存に必要なメモリと定義される。例えば、2つのCTU行間の水平境界をフィルタリングするには、上部のCTU行の予測モード情報(イントラ予測/インター予測/多重仮説(CIIP)予測)をラインメモリに保存する必要がある。ブロックの予測モードを説明するには3つの状態(イントラ予測/インター予測/多重仮説(CIIP)予測)が考えられるため、ラインメモリの要件がブロックあたり2ビットと定義され得る。
ただし、本開示によれば、ブロック(本実施形態のPブロック)が上部のCTU行に属する場合は、ブロック解除操作において、ブロックがインター予測またはイントラ予測のどちらにより予測されるかに関する情報のみが必要とされる(従って、ブロックあたり1ビットを使用して保存され得るのは、2つの状態のみである)。
理由は以下の通りである。
PブロックとQブロックとの間の境界が水平境界である場合、および、QブロックおよびPブロックが2つの異なるCTUに属する(全ての実施形態において、Qブロックは、Pブロックに対して下部にあるブロックである)場合は、PブロックがCIIPの適用により予測されるかどうかの情報が境界強度の決定において利用されない。従って、これを保存する必要はない。イントラ予測およびCIIPは相互に排他的であるため、上記の実施形態7の第1条件をチェックするには、Pブロックがイントラ予測により予測されるかどうかを判断すれば十分である。
ハードウェア実装における開示の助けを借りると、(PブロックがCIIPにより予測される場合は)Pブロックの予測モードをインター予測へと一時的に変更することができ、変更された予測モードに従って境界強度の決定を実行することができる。その後(境界強度の決定後)、予測モードはCIIPに戻すことができる。なお、ハードウェア実装は、ここに記載の方法(CTU境界におけるPブロックの予測モードの変更)に限定されない。本開示によれば、これは、PブロックがCIIPにより予測されるかどうかの情報が(水平CTU境界における)境界強度の決定において必要ではないことを説明するための例として提示されているに過ぎない。
従って、本発明によれば、必要とされるラインメモリは、ブロックあたり2ビットからブロックあたり1ビットに削減される。なお、ハードウェアで実装する必要のあるラインメモリの合計は、画像幅に比例し、最小ブロック幅に反比例する。
実施形態8:
この実施形態は実施形態6の変形例を表す。
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの実施形態に従って以下のように決定されてよい。
・PおよびQのうちの少なくとも一方のブロックが、CIIPの適用によってではなく、イントラ予測の適用によって予測される場合は、境界強度が2に等しく設定される。可能性としては、Pブロックが多重仮説予測(CIIP)ではなくイントラ予測により予測され、且つ、Qブロックが任意の予測関数により予測されることが含まれ、その逆もまた同様である。
・PブロックおよびQブロックがインター予測またはCIIPの適用により予測される場合(可能性としては、Pブロックがインターブロックであり、且つ、Qブロックがインターブロックであること、または代替的に、Pブロックがインターブロックであり、且つ、QブロックがCIIPブロックであること、または代替的に、PブロックがCIIPブロックであり、且つ、Qブロックがインターブロックであること、または代替的に、PブロックがCIIPブロックであり、且つ、QブロックがCIIPブロックであることが含まれる)は、以下が適用されてよい。
・ブロックPおよびブロックQのうちの少なくとも一方が非ゼロの変換係数を有する場合は、境界の境界強度が1に等しく設定される。
・それ以外の場合(ブロックPおよびブロックQが非ゼロの変換係数を有しない場合)は、ブロックPおよびブロックQの予測に使用される動きベクトル間の絶対差が1つの整数ルマサンプルより大きいかそれに等しい場合に、この境界の境界強度が1に等しく設定される。
・それ以外の場合(ブロックPおよびブロックQが非ゼロの変換係数を有さず、且つ、動きベクトル間の絶対差が1つの整数ルマサンプルより小さい場合)は、ブロックPおよびブロックQが異なる参照画像に基づいて予測されるか、ブロックPおよびブロックQの予測に使用される動きベクトルの数が等しくない場合に、この境界の境界強度が1に等しく設定される。これら最後の2つの条件の順序は、図13に示すように逆にしてよい。
・それ以外の場合(上記3つの条件の全てが偽であると評価された場合)は、この境界の境界強度が0に等しく設定される。
・境界が水平境界であり、且つ、PおよびQが2つの異なるCTU内に配置される場合は、次のようになる。
・ブロックQがCIIPの適用により予測される場合は、決定された境界強度が以下のように修正される。
・境界強度が2に等しくない場合は、境界強度が1ずつ増分される。
・境界が垂直境界である場合、または、ブロックPおよびブロックQが同じCTU内に含まれる場合:
・ブロックPおよびブロックQのうちの少なくとも一方がCIIPの適用により予測される場合は、境界の境界強度が以下のように調整される。
・境界強度が2に等しくない場合は、境界強度が1ずつ増分される。
・ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態の利益:
多重仮説予測、すなわち、CIIPの適用により予測されるブロックのブロック解除フィルタリングは、中強度(1に等しい境界強度)のブロック解除フィルタで実行される。
ブロックがCIIPの適用により予測される場合は、インター予測の適用により第1予測が取得され、イントラ予測の適用により第2予測が取得され、これらは後で組み合わされる。最終的な予測はイントラ予測の部分を含むため、CIIPにより予測されるブロックの境界にブロックアーチファクトが存在する可能性がある。この問題を軽減するには、本開示に従って境界強度を1増加させて、CIIPの適用により予測されるブロックエッジのフィルタリングを保証する。
更には、本開示によって、必要とされるラインメモリが以下のように削減される。ラインメモリは、上部のCTU行に対応するン情報であって、近接する下部のCTU行の処理中に必要とされる情報の保存に必要なメモリと定義される。例えば、2つのCTU行間の水平境界をフィルタリングするには、上部のCTU行の予測モード情報(イントラ予測/インター予測/多重仮説(CIIP)予測)をラインメモリに保存する必要がある。ブロックの予測モードを説明するには3つの状態(イントラ予測/インター予測/多重仮説(CIIP)予測)が考えられるため、ラインメモリの要件がブロックあたり2ビットと定義され得る。
ただし、本開示によれば、ブロック(本実施形態のPブロック)が上部のCTU行に属する場合は、ブロック解除操作において、ブロックがインター予測またはイントラ予測のどちらにより予測されるかに関する情報のみが必要とされる(従って、ブロックあたり1ビットを使用して保存され得るのは、2つの状態のみである)。
理由は以下の通りである。
PブロックとQブロックとの間の境界が水平境界である場合、および、PブロックおよびQブロックが2つの異なるCTUに属する(全ての実施形態において、Qブロックは、Pブロックに対して下部にあるブロックである)場合は、PブロックがCIIPの適用により予測されるかどうかの情報が境界強度の決定において利用されない。従って、これを保存する必要はない。イントラ予測およびCIIPは相互に排他的であるため、上記の実施形態8の第1条件をチェックするには、Pブロックがイントラ予測により予測されるかどうかを判断すれば十分である。
ハードウェア実装における開示の助けを借りると、(PブロックがCIIPにより予測される場合は)Pブロックの予測モードをインター予測へと一時的に変更することができ、変更された予測モードに従って境界強度の決定を実行することができる。その後(境界強度の決定後)、予測モードはCIIPに戻すことができる。なお、ハードウェア実装は、ここに記載の方法(CTU境界におけるPブロックの予測モードの変更)に限定されない。本開示によれば、これは、PブロックがCIIPにより予測されるかどうかの情報が(水平CTU境界における)境界強度の決定において必要ではないことを説明するための例として提示されているに過ぎない。
従って、本開示によれば、必要とされるラインメモリは、ブロックあたり2ビットからブロックあたり1ビットに削減される。なお、ハードウェアで実装する必要のあるラインメモリの合計は、画像幅に比例し、最小ブロック幅に反比例する。
なお、全ての上記の実施形態によれば、ブロックがCIIPの適用により予測される場合は、インター予測の適用により第1予測が取得され、イントラ予測の適用により第2予測が取得され、これらは後で組み合わされる。
上記の実施形態は、CIIPブロックが、ブロック解除フィルタを実行するときに異なる程度までイントラブロックと見なされることを示す。実施形態1、2、および3では、3つの異なる方策を使用して境界の境界強度を調整する。
実施形態1では、CIIPブロックが完全にイントラブロックと見なされる。従って、Bsを2に設定する条件は表1と同じである。
実施形態2では、CIIPブロックに起因する歪みがイントラブロックに起因するものほど高くはないと見なされる。従って、境界でCIIPブロックが検出された場合は、Bsが1と見なされる。
実施形態3では、CIIPブロックが部分的にイントラブロックと見なされ、境界の少なくとも1つの隣接ブロックがCIIPブロックである場合に、Bsが1増加する。図13の従来の導出方策を使用してBsが既に2である場合は、Bsが変更されない。
図11は、上述の参照によるVVCドラフト3.0におけるBsの導出を示す。図12、14、および15は、実施形態1、2、および3のBsの導出に対する変更点をそれぞれ描写している。
実施形態1および2の場合に、潜在的な歪みだけでなく処理論理も低減されることは注目に値する。実施形態1および2では、PブロックまたはQブロックがCIIPブロックである限り、係数および動きベクトルのチェックが必要なくなるため、条件チェックの待ち時間が短縮される。
実施形態4、5および6は、ラインバッファメモリが考慮される実施形態1、2、および3のそれぞれの変形例である。実施形態1、2、および3に対する主な変更点は、PブロックおよびQブロックが異なるCTU内に配置され、且つ、エッジが水平である場合に、CIIPブロックのチェックが非対称的に実行されることである。つまり、P側のブロック(すなわち、上)がチェックされず、Q側のブロック(すなわち、下)のみがチェックされる。このように、別のCTU内に配置されるP側のブロックのCIIPフラグを保存するために、更なるラインバッファメモリは割り当てられない。
上記6つの実施形態に加えて、CIIPブロックの1つの更なる特徴は、CIIPブロックを一貫してイントラブロックと見なす必要がないことであってよい。一例では、現在のブロックの動きベクトル予測因子を検索するときに、その近接ブロックがCIIPブロックである場合は、これらのCIIPブロックの動きベクトルを動きベクトル予測因子と見なすことができる。この場合は、CIIPブロックのインター予測情報が使用されるため、CIIPブロックがイントラブロックと見なされなくなる。別の例では、イントラブロックのMPMリストを構築するときに、現在のブロックの近接CIIPブロックを、イントラ情報を含まないものと見なすことができる。従って、現在のブロックのMPMリスト構築にこれらのCIIPブロックを利用できるかどうかをチェックするときに、それらは利用できないものとしてラベル付けされる。なお、この段落で言及するCIIPブロックは、ブロック解除フィルタのBs値を決定するために使用されるCIIPブロックだけに限定されない。
上記6つの実施形態に加えて、CIIPブロックの1つの更なる特徴は、MHブロックが一貫してイントラブロックと見なされることであってよい。一例では、現在のブロックの動きベクトル予測因子を検索するときに、その近接ブロックがCIIPブロックである場合は、これらのCIIPブロックの動きベクトルが動きベクトル予測因子から除外される。この場合は、CIIPブロックのインター予測情報が使用されないため、CIIPブロックがイントラブロックと見なされる。別の例では、イントラブロックのMPMリストを構築するときに、現在のブロックの近接CIIPブロックを、イントラ情報を含むものと見なすことができる。従って、現在のブロックのMPMリスト構築にこれらのCIIPブロックを利用できるかどうかをチェックするときに、それらは利用可能なものとしてラベル付けされる。なお、この段落で言及するCIIPブロックは、ブロック解除フィルタのBs値を決定するために使用されるCIIPブロックだけに限定されない。
実施形態9:
一例では、CIIPブロックの境界の境界強度(Bs)が値2に設定されてよいが、CIIPブロック内のサブブロックの境界の境界強度は値1に設定されてよい。サブブロックの境界が8×8サンプルグリッドと位置合わせされていない場合は、係るエッジの境界強度が値0に設定されてよい。図16または図17には、8×8グリッドが示されている。図16は、CUの左上のサンプルから開始する8×8サンプルグリッドを示し、図17は、CUの左上のサンプルから開始しない8×8サンプルグリッドを示す。
別の例では、エッジの境界強度が以下のように決定されてよい。
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの例に従って以下のように導出されてよい。
・境界が水平境界であり、且つ、ブロックPおよびブロックQが異なるCTU内に配置される場合は、次のようになる。
・Qブロック(Qブロックは、Pブロックの下に配置されるブロックとして示される)がCIIPの適用により予測される場合は、境界強度が2に等しく設定される。
・QブロックがCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・QブロックがCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
・それ以外の場合(PおよびQがCIIPブロック内の2つのサブブロックに対応する場合、すなわち、目標境界がCIIPブロック内のサブブロック境界である場合):
・サブブロック境界が8×8グリッドと位置合わせされている場合は、境界強度を値1に設定する。
・それ以外の場合(サブブロック境界が8×8グリッドと位置合わせされていない場合)は、境界強度を値0に設定する。
・それ以外の場合(境界が垂直境界である場合、または、ブロックPおよびブロックQが同じCTU内に含まれ、且つ、PおよびQが同じCIIPブロック内にない場合):
・ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測される場合は、境界の境界強度パラメータが2に等しく設定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、ブロックPおよびブロックQの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
・ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
別の例では、CIIPブロックの境界の境界強度(Bs)が値2に設定されてよいが、CIIPブロック内のサブブロックの境界の境界強度は値1に設定されてよい。サブブロックの境界が4×4サンプルグリッドと位置合わせされていない場合は、係るエッジの境界強度が値0に設定されてよい。図18には、4×4グリッドが示されている。
別の例では、エッジの境界強度が以下のように決定されてよい。
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの例に従って以下のように導出されてよい。
・境界が水平境界であり、且つ、ブロックPおよびブロックQが異なるCTU内に配置される場合は、次のようになる。
・Qブロック(Qブロックは、Pブロックの下に配置されるブロックとして示される)がCIIPの適用により予測される場合は、境界強度が2に等しく設定される。
・QブロックがCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・QブロックがCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定される。
・それ以外の場合(PおよびQがCIIPブロック内の2つのサブブロックに対応する、すなわち、目標境界がCIIPブロック内のサブブロック境界である場合):
・サブブロック境界が4×4グリッドと位置合わせされている場合は、境界強度を値1に設定する。
・それ以外の場合(サブブロック境界が4×4グリッドと位置合わせされていない場合)は、境界強度を値0に設定する。
・それ以外の場合(境界が垂直境界である場合、または、PブロックおよびQブロックが同じCTU内に含まれ、且つ、PおよびQが同じCIIPブロック内にない場合):
・PブロックまたはQブロックのうちの少なくとも一方がCIIPの適用により予測される場合は、境界の境界強度が2に等しく設定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定される。
・ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態10(ラインバッファの制約なし):
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、この実施形態に従って境界強度が以下のように導出されてよい。
・ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にない場合は、境界の境界強度が2に等しく設定される。
・ブロックPおよびブロックQの両方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にある場合は、次のようになる。
・サブブロック境界が8×8グリッドと位置合わせされている場合は、境界強度が値1に設定される。
・それ以外の場合(サブブロック境界が8×8グリッドと位置合わせされていない場合)は、境界強度が値0に設定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態11(ラインバッファの制約なし、8×8グリッドとのCIIP位置合わせ):
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、この実施形態に従って境界強度が以下のように導出されてよい。
・ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内になく、且つ、境界が8×8グリッドと位置合わせされている場合は、境界の境界強度が2に等しく設定される。
・ブロックPおよびブロックQの両方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にある場合は、次のようになる。
・サブブロック境界が8×8グリッドと位置合わせされている場合は、境界強度を値1に設定する。
・それ以外の場合(サブブロック境界が8×8グリッドと位置合わせされていない場合)は、境界強度を値0に設定する。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
・ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態12(ラインバッファの制約なし、TUサイズの制約、CIIP境界についても8×8グリッド位置合わせ):
一例では、CIIPブロックの境界の境界強度(Bs)が値2に設定されてよいが、CIIPブロック内のサブブロックの境界の境界強度は、(図8に示すような)TUサイズの制限に起因するサブブロックを除いて、値1に設定されてよい。境界がTU境界であり、且つ、その近接するPブロックおよびQブロックが同じCIIPブロックに属する場合は、境界の境界強度が2に設定される。サブブロックの境界またはCIIPブロック(CIIPブロックサイズは8×8より小さくてよい)の境界が8×8サンプルグリッドと位置合わせされていない場合は、係るエッジの境界強度が値0に設定されてよい。図16または図17には、8×8グリッドが示されている。図16は、CUの左上のサンプルから開始する8×8サンプルグリッドを示し、図17は、CUの左上のサンプルから開始しない8×8サンプルグリッドを示す。
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの例に従って以下のように導出されてよい。
・ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内になく、且つ、境界が8×8グリッドと位置合わせされている場合は、境界の境界強度が2に等しく設定される。
・ブロックPおよびブロックQの両方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にある場合は、次のようになる。
・サブブロック境界が8×8グリッドと位置合わせされている場合は、サブブロックPまたはサブブロックQのうちの少なくとも一方のサイズが最大許容TUサイズに等しいときに、境界強度を値2に設定する。
・サブブロック境界が8×8グリッドと位置合わせされている場合は、サブブロックPまたはサブブロックQのどちらのサイズも最大許容TUサイズに等しくないときに、境界強度を値1に設定する。
・それ以外の場合(サブブロック境界が8×8グリッドと位置合わせされていない場合)は、境界強度を値0に設定する。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定されてよい。
ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態13(ラインバッファの制約なし、TUサイズの制約、CIIPサブブロック境界についてのみ8×8グリッド位置合わせ):
一例では、CIIPブロックの境界の境界強度(Bs)が値2に設定されてよいが、CIIPブロック内のサブブロックの境界の境界強度は、(図8に示すような)TUサイズの制限に起因するサブブロックを除いて、値1に設定されてよい。境界がTU境界であり、且つ、その近接するPブロックおよびQブロックが同じCIIPブロックに属する場合は、境界の境界強度が2に設定される。CIIPブロックのサブブロックの境界が8×8サンプルグリッドと位置合わせされていない場合は、係るエッジの境界強度が値0に設定されてよい。図16または図17には、8×8グリッドが示されている。図16は、CUの左上のサンプルから開始する8×8サンプルグリッドを示し、図17は、CUの左上のサンプルから開始しない8×8サンプルグリッドを示す。
2つの側を有する境界(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示される)の場合は、境界強度がこの例に従って以下のように導出されてよい。
・ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIP内にない場合は、境界の境界強度が2に等しく設定される。
・ブロックPおよびブロックQの両方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にある場合は、次のようになる。
・サブブロック境界が8×8グリッドと位置合わせされている場合は、サブブロックPまたはサブブロックQのうちの少なくとも一方のサイズが最大許容TUサイズに等しいときに、境界強度を値2に設定する。
・サブブロック境界が8×8グリッドと位置合わせされている場合は、サブブロックPまたはサブブロックQのどちらのサイズも最大許容TUサイズに等しくないときに、境界強度を値1に設定する。
・それ以外の場合(サブブロック境界が8×8グリッドと位置合わせされていない場合)は、境界強度を値0に設定する。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定される。
ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態14(TU変換エッジ、CIIPサブブロックについてのみ8×8グリッド位置合わせ):
一例では、CIIPブロックの境界または変換ユニットの境界の境界強度(Bs)が値2に設定されてよいが、CIIPブロック内のサブブロックの境界の境界強度は値1に設定されてよい。サブブロックの境界または変換ユニットの境界またはCIIPブロックの境界が8×8サンプルグリッドと位置合わせされていない場合は、係るエッジの境界強度が値0に設定されてよい。例えば、8×8グリッドを、図16または図17に示すようなものにすることができる。図16は、CUの左上のサンプルから開始する8×8サンプルグリッドを示し、図17は、CUの左上のサンプルから開始しない8×8サンプルグリッドを示す。
2つの側を有する境界の場合(それぞれの側の空間的に隣接するブロックは、PブロックおよびQブロックとして示され、当該境界は、8×8グリッドと位置合わせされている)は、この実施形態に従って境界強度が以下のように導出されてよい。
・PブロックまたはQブロックのうちの少なくとも一方がイントラ予測の適用により予測される場合は、境界強度が2に等しいと決定される。
・それ以外の場合は、ブロックPまたはブロックQのうちの少なくとも一方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にない場合に、境界の境界強度パラメータが2に等しく設定される。
・それ以外の場合は、ブロックPおよびブロックQの両方がCIIPの適用により予測され、且つ、ブロックPおよびブロックQが同じCIIPブロック内にある場合、すなわち、サブブロック境界の場合に、次のようになる。
・サブブロック境界が変換ユニットと位置合わせされている場合は、サブブロック境界の境界強度を値2に設定する。
・それ以外の場合は、サブブロック境界の境界強度を値1に設定する。
・PブロックもQブロックもCIIPの適用により予測されない場合、および、PブロックおよびQブロックの両方がインター予測の適用により予測される場合は、境界強度が2より小さいと決定される。境界強度の正確な値は、図13に示すものなどの更なる条件付き評価に従って決定される。
ブロックPおよびブロックQに含まれる画素サンプルは、決定された境界強度に従ってブロック解除フィルタを適用することによりフィルタリングされる。
実施形態15:
別の例では、本開示に係る境界強度を決定するプロセスが、上述の参照によるVVCドラフト3.0で使用されているような擬似コード言語で以下のように説明されてよい。
このプロセスへの入力:
・画像サンプルアレイrecPicture
・現在の画像の左上のサンプルに対する現在のコーディングブロックの左上のサンプルを指定する場所(xCb、yCb)
・現在のコーディングブロックの幅を指定する変数nCbW
・現在のコーディングブロックの高さを指定する変数nCbH
・垂直(EDGE_VER)エッジまたは水平(EDGE_HOR)エッジのどちらがフィルタリングされるかを指定する変数edgeType
・二次元(nCbW)×(nCbH)アレイedgeFlag
このプロセスの出力は、境界フィルタリング強度を指定する二次元(nCbW)×(nCbH)アレイbSである。
変数xDi、yDj、xN、およびyNは、以下のように導出される。
・edgeTypeがEDGE_VERに等しい場合は、xDiが(i<<3)に等しく設定され、yDjが(j<<2)に等しく設定され、xNがMax(0,(nCbW/8)-1)に等しく設定され、yNが(nCbH/4)-1に等しく設定される。
・それ以外の(edgeTypeがEDGE_HORに等しい)場合は、xDiが(i<<2)に等しく設定され、yDjが(j<<3)に等しく設定され、xNが(nCbW/4)-1に等しく設定され、yNがMax(0,(nCbH/8)-1)に等しく設定される。
i=0..xNであるxDi、およびj=0..yNであるyDjの場合は、以下が適用される。
・edgeFlag[xDi][yDj]が0に等しい場合は、変数bS[xDi][yDj]が0に等しく設定される。
・それ以外の場合は、以下が適用される。
・サンプル値p0およびサンプル値q0は以下のように導出される。
・edgeTypeがEDGE_VERに等しい場合は、p0がrecPicture[xCb+xDi-1][yCb+yDj]に等しく設定され、q0がrecPicture[xCb+xDi][yCb+yDj]に等しく設定される。
・それ以外の(edgeTypeがEDGE_HORに等しい)場合は、p0がrecPicture[xCb+xDi][yCb+yDj-1]に等しく設定され、q0がrecPicture[xCb+xDi][yCb+yDj]に等しく設定される。
・変数bS[xDi][yDj]は以下のように導出される。
・サンプルp0またはサンプルq0が、イントラ予測モードでコーディングされたコーディングユニットのコーディングブロック内にある場合は、bS[xDi][yDj]が2に等しく設定される。
・それ以外の場合は、ブロックエッジが変換ブロックエッジでもあり、且つ、サンプルp0またはサンプルq0のciip_flagが1に等しい場合に、bS[xDi][yDj]が2に等しく設定される。
・それ以外の場合は、サンプルp0またはサンプルq0のciip_flagが1に等しい場合に、bS[xDi][yDj]が1に等しく設定される。
・それ以外の場合は、ブロックエッジが変換ブロックエッジでもあり、且つ、サンプルp0またはサンプルq0が、1または複数の非ゼロの変換係数レベルを含む変換ブロック内にある場合に、bS[xDi][yDj]が1に等しく設定される。
・それ以外の場合は、以下の条件のうちの1または複数が真である場合に、bS[xDi][yDj]が1に等しく設定される。
・サンプルp0を含むコーディングサブブロックの予測には、サンプルq0を含むコーディングサブブロックの予測とは異なる参照画像または異なる数の動きベクトルが使用される。
注1:2つのコーディングサブブロックに使用される参照画像が同じであるか、異なるかの判断は、参照画像リスト0へのインデックスまたは参照画像リスト1へのインデックスのどちらを使用して予測が実行されるかどうかに関係なく、且つ、参照画像リスト内のインデックス位置が異なるかどうかにも関係なく、どの画像が参照されるかにのみ基づく。
注2:左上のサンプルカバー(xSb,ySb)を有するコーディングサブブロックの予測に使用される動きベクトルの数は、PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]に等しい。
・サンプルp0を含むコーディングサブブロックの予測には、1つの動きベクトルが使用され、サンプルq0を含むコーディングサブブロックの予測には、1つの動きベクトルが使用され、使用される動きベクトルの水平成分間または垂直成分間の絶対差は、1/4ルマサンプルの単位で4より大きいかそれに等しい。
・サンプルp0を含むコーディングサブブロックの予測には、2つの動きベクトルおよび2つの異なる参照画像が使用され、サンプルq0を含むコーディングサブブロックの予測には、同じ2つの参照画像に対する2つの動きベクトルが使用され、同じ参照画像に対する2つのコーディングサブブロックの予測で使用される2つの動きベクトルの水平成分間または垂直成分間の絶対差は、1/4ルマサンプルの単位で4より大きいかそれに等しい。
・サンプルp0を含むコーディングサブブロックの予測には、同じ参照画像に対する2つの動きベクトルが使用され、サンプルq0を含むコーディングサブブロックの予測には、同じ参照画像に対する2つの動きベクトルが使用され、以下の条件はどちらも真である。
・2つのコーディングサブブロックの予測で使用されるリスト0の動きベクトルの水平成分間または垂直成分間の絶対差は、1/4ルマサンプルの単位で4より大きいかそれに等しい、または、2つのコーディングサブブロックの予測で使用されるリスト1の動きベクトルの水平成分間または垂直成分間の絶対差は、1/4ルマサンプルの単位で4より大きいかそれに等しい。
・サンプルp0を含むコーディングサブブロックの予測で使用されるリスト0の動きベクトルと、サンプルq0を含むコーディングサブブロックの予測で使用されるリスト1の動きベクトルとの水平成分間または垂直成分間の絶対差は、1/4ルマサンプルの単位で4より大きいかそれに等しい、または、サンプルp0を含むコーディングサブブロックの予測で使用されるリスト1の動きベクトルと、サンプルq0を含むコーディングサブブロックの予測で使用されるリスト0の動きベクトルとの水平成分間または垂直成分間の絶対差は、1/4ルマサンプルの単位で4より大きいかそれに等しい。
・それ以外の場合は、変数bS[xDi][yDj]が0に等しく設定される。
本発明の複数の実施形態が主にビデオコーディングに基づいて説明されてきたが、コーディングシステム10、エンコーダ20、およびデコーダ30(および、それに応じてシステム10)の実施形態、並びに、本明細書に記載の他の実施形態が、静止画像の処理またはコーディング、すなわち、ビデオコーディングにおけるような任意の前の画像または連続する画像から独立した個々の画像の処理またはコーディングのために構成されてもよいことに留意されたい。一般に、画像処理コーディングが単一の画像17に限定される場合は、インター予測ユニット244(エンコーダ)およびインター予測ユニット344(デコーダ)のみが利用できないことがある。ビデオエンコーダ20およびビデオデコーダ30の他の全ての機能(ツールまたは技術とも呼ばれる)が、静止画像の処理、例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、区分化262/362、イントラ予測254/354、および/またはループフィルタリング220、320、並びにエントロピコーディング270およびエントロピ復号304に等しく使用されてよい。
例えば、エンコーダ20およびデコーダ30の実施形態と、例えば、エンコーダ20およびデコーダ30を参照しながら本明細書に記載されている機能とが、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されてよい。これらの機能は、ソフトウェアで実装される場合に、コンピュータ可読媒体上に保存されるか、通信媒体を介して1または複数の命令またはコードとして伝送され、ハードウェアベースの処理ユニットにより実行されてよい。
コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、例えば、通信プロトコルに従ってコンピュータプログラムを一箇所から別の箇所に転送し易くする任意の媒体を含む通信媒体を含んでよい。このように、コンピュータ可読媒体は概して、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応してよい。データ記憶媒体は、本開示に記載の技術を実装するための命令、コード、および/またはデータ構造を取得するために、1または複数のコンピュータ、または、1または複数のプロセッサによりアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品はコンピュータ可読媒体を含んでよい。
限定ではなく例として、係るコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、フラッシュメモリ、または、所望のプログラムコードを命令またはデータ構造の形式で保存するために使用でき、且つ、コンピュータがアクセスできる、任意の他の媒体を含むことができる。また、接続はいずれも、厳密にはコンピュータ可読媒体と呼ばれる。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または、赤外線、ラジオ、およびマイクロ波などの無線技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が伝送される場合は、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、ラジオ、およびマイクロ波などの無線技術が媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに、非一時的な有形記憶媒体を対象にすることを理解されたい。本明細書で使用されるようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、およびブルーレイディスクを含み、ディスク(disk)は通例、データを磁気的に再生するものであり、ディスク(disc)は、データをレーザで光学的に再生するものである。上記の組み合わせは、コンピュータ可読媒体の範囲内にも含まれるべきである。
命令は、1または複数のプロセッサ、例えば、1または複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の集積回路またはディスクリート論理回路により実行されてよい。結果的に、本明細書で使用されているような「プロセッサ」という用語は、前述の構造のいずれか、または、本明細書に記載の技術を実装するのに適した任意の他の構造を指すことがある。加えて、幾つかの態様では、本明細書に記載の機能が、符号化および復号のために構成される専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に提供されても、組み合わされたコーデックに組み込まれてもよい。また、これらの技術は、1または複数の回路または論理要素で完全に実装され得る。
本開示の技術は、無線ハンドセット、集積回路(IC)、または一組のIC(例えば、チップセット)を含む多種多様なデバイスまたは装置で実装されてよい。本開示では、開示されている技術を実行するように構成されるデバイスの機能的側面を強調するために、様々な構成要素、モジュール、またはユニットについて説明しているが、必ずしも異なるハードウェアユニットによる実現は必要とされない。むしろ、上記のように、様々なユニットが、コーデックハードウェアユニットに組み合わされてもよいし、最適なソフトウェアおよび/またはファームウェアと併せて、上記のような1または複数のプロセッサを含む相互運用ハードウェアユニットの集合により提供されてもよい。
[他の考えられる項目]
(項目1)
コーディングの方法であって、上記コーディングは復号または符号化を含み、上記方法は、
現在のコーディングユニットがインター/イントラ予測の組み合わせ(CIIP)の適用により予測されるかどうかを判断する段階と、
上記現在のコーディングユニットがCIIPの適用により予測されると判断した場合に、上記現在のコーディングユニットの境界の境界強度を第1の値に設定する段階と
を備える、方法。
(項目2)
上記第1の値は1から2の範囲にある、項目1に記載の方法。
(項目3)
上記第1の値は2である、項目1または2に記載の方法。
(項目4)
上記第1の値は1である、項目1または2に記載の方法。
(項目5)
上記現在のコーディングユニット、および、上記現在のコーディングユニットの上記境界に隣接する隣接コーディングユニットのうちの少なくとも一方が非ゼロの変換係数を有する、
上記現在のコーディングユニットおよび上記隣接コーディングユニットの予測に使用される動きベクトル間の絶対差が1つの整数サンプルより大きいかそれに等しい、
上記現在のコーディングユニットおよび上記隣接コーディングユニットが異なる参照画像に基づいて予測される、
上記現在のコーディングユニットおよび上記隣接コーディングユニットの予測に使用される動きベクトルの数が異なる、
という条件のうちの1つが成立すると判断した場合に、上記第1の値を1ずつ増分する段階
を更に備える項目4に記載の方法。
(項目6)
上記現在のコーディングユニットの上記境界が水平エッジである場合に、上記現在のコーディングユニットの上記境界に隣接する隣接コーディングユニットが異なるコーディングツリーユニット(CTU)内にあるかどうかを判断する段階
を更に備える項目1から5のいずれか一項に記載の方法。
(項目7)
サブコーディングユニットの境界の境界強度を第2の値に設定する段階であって、上記現在のコーディングユニットは少なくとも2つのサブコーディングユニットを含み、上記サブコーディングユニットの上記境界は上記少なくとも2つのサブコーディングユニット間の境界である、設定する段階
を更に備える項目1から6のいずれか一項に記載の方法。
(項目8)
上記第2の値は1である、項目7に記載の方法。
(項目9)
上記サブコーディングユニットの上記境界が変換ユニットのエッジである場合は、上記第2の値が上記第1の値に等しい、項目7または8に記載の方法。
(項目10)
上記サブコーディングユニットの上記境界が変換ユニットのエッジでない場合は、上記第2の値が上記第1の値と異なる、項目7または8に記載の方法。
(項目11)
上記現在のコーディングユニットの上記境界が8×8グリッドと位置合わせされているかどうかを判断する段階と、
上記現在のコーディングユニットの上記境界が上記8×8グリッドと位置合わせされていないと判断した場合に、上記現在のコーディングユニットの上記境界の上記境界強度を0に設定する段階と
を更に備える項目1から10のいずれか一項に記載の方法。
(項目12)
上記サブコーディングユニットの上記境界がサブグリッドと位置合わせされているかどうかを判断する段階であって、上記サブグリッドは4×4グリッドまたは8×8グリッドである、判断する段階と、
上記サブコーディングユニットの上記境界が上記サブグリッドと位置合わせされていないと判断した場合に、上記サブコーディングユニットの上記境界の上記境界強度を0に設定する段階と
を更に備える項目7から10のいずれか一項に記載の方法。
(項目13)
上記境界の上記境界強度が0より大きい場合に、ルマ成分について境界に対するブロック解除を実行する段階
を更に備える項目1から12のいずれか一項に記載の方法。
(項目14)
上記境界の上記境界強度が1より大きい場合に、クロマ成分について境界に対するブロック解除を実行する段階
を更に備える項目1から13のいずれか一項に記載の方法。
(項目15)
上記現在のコーディングユニットがCIIPの適用により予測される場合は、上記現在のコーディングユニットが、ブロック解除を実行するときに、イントラ予測を伴うコーディングユニットと見なされる、項目1から14のいずれか一項に記載の方法。
(項目16)
項目1から15のいずれか一項に記載の方法を実行するための処理回路を備えるエンコーダ(20)。
(項目17)
項目1から15のいずれか一項に記載の方法を実行するための処理回路を備えるデコーダ(30)。
(項目18)
命令を備えるコンピュータプログラム製品であって、上記プログラムがコンピュータにより実行されると、項目1から15のいずれか一項に記載の方法を上記コンピュータに実行させる、コンピュータプログラム製品。
(項目19)
デコーダ(30)であって、
1または複数のプロセッサと、
上記1または複数のプロセッサに結合され、且つ、上記1または複数のプロセッサにより実行される命令を保存する、非一時的コンピュータ可読記憶媒体であって、上記命令は、上記1または複数のプロセッサにより実行されると、項目1から15のいずれか一項に記載の方法を実行するように上記デコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備えるデコーダ。
(項目20)
エンコーダ(20)であって、
1または複数のプロセッサと、
上記1または複数のプロセッサに結合され、且つ、上記1または複数のプロセッサにより実行される命令を保存する、非一時的コンピュータ可読記憶媒体であって、上記命令は、上記1または複数のプロセッサにより実行されると、項目1から15のいずれか一項に記載の方法を実行するように上記エンコーダを構成する、非一時的コンピュータ可読記憶媒体と
を備えるエンコーダ。