以下、具体的な実現例について詳細に言及し、その例を添付の図面に示す。以下の詳細な説明では、本出願で示されている保護対象の理解の一助にするべく、限定を課さない多数の具体的な詳細を説明している。ただし、請求項の範囲を逸脱しない限りにおいて様々な変形を用いてもよく、このような具体的な詳細がなくても保護対象を実施することができることは当業者であれば明らかである。たとえば、本出願で示されている保護対象をデジタル映像機能を持つ多くの種類の電子デバイスで実施することができることは当業者であれば明らかである。
第1世代AVS規格には中国国家規格「Information Technology,Advanced Audio Video Coding,Part 2:Video」(AVS1として公知)及び「Information Technology,Advanced Audio Video Coding Part 16:Radio Television Video」(AVS+として公知)が含まれる。この規格によりMPEG-2規格と比較して同じ知覚的品質で約50%のビットレート節減を実現することができる。第2世代AVS規格には一連の中国国家規格「Information Technology,Efficient Multimedia Coding」(AVS2として認識)が含まれ、主にextra HDテレビ番組の伝送を対象にしている。AVS2の符号化効率はAVS+の符号化効率の2倍である。その一方で、AVS2規格の映像部分が用途の国際規格の1つとしてInstitute of Electrical and Electronics Engineers(IEEE)によって提示された。AVS3規格は最新の国際規格HEVCの符号化効率を凌ぐことを目指すUHD映像用途の新世代映像符号化規格の1つであり、これによりHEVC規格を超える約30%のビットレート節減が実現される。2019年3月の第68回AVS会議でAVS3-P2 baselineが完成した。これにより、HEVC規格を超える約30%のビットレート節減が実現される。現在では、ハイパフォーマンスモデル(HPM)と呼ばれる参考ソフトウェアの1つがAVSグループによって管理され、AVS3規格の参考実装が示されている。HEVCのようにAVS3規格はブロックを用いた複合映像符号化フレームワーク上に構築される。
図1は本開示のいくつかの実現例に係るパラレルに映像ブロックの符号化及び復号を行なう典型的なシステム10を示すブロック図である。図1に示されているように、システム10は、送信先デバイス14によってその後に復号される映像データを生成して符号化する送信元デバイス12を含む。送信元デバイス12及び送信先デバイス14は、デスクトップコンピュータ又はラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、表示デバイス、デジタルメディアプレーヤ、ビデオゲーム機、映像ストリーミングデバイスなどを含む多種多様な電子デバイスのいずれも備えてもよい。いくつかの実現例では、送信元デバイス12及び送信先デバイス14には無線通信機能が装備されている。
いくつかの実現例では、復号されることになる符号化された映像データをリンク16を介して送信先デバイス14が受信してもよい。リンク16が、送信元デバイス12から送信先デバイス14に符号化された映像データを移動させることができるあらゆる種類の通信媒体やデバイスを備えてもよい。一例では、リンク16が、送信元デバイス12が符号化された映像データを直接送信先デバイス14にリアルタイムで送信するのを可能にする通信媒体を備えてもよい。符号化された映像データを無線通信プロトコルなどの通信規格にしたがって変調して送信先デバイス14に送信してもよい。通信媒体は高周波(RF)スペクトルや1つ以上の物理的な伝送線などのあらゆる無線通信媒体又は有線通信媒体を備えてもよい。通信媒体はローカルエリアネットワーク、ワイドエリアネットワークやインタネットのようなグローバルネットワークなど、パケットを用いたネットワークの一部をなしてもよい。通信媒体はルータ、スイッチ、基地局や、送信元デバイス12から送信先デバイス14への通信を容易にするのに有用になり得るその他一切の機器を含んでもよい。
他の実現例では、符号化された映像データを出力インタフェイス22から記憶デバイス32に送信してもよい。その後、記憶デバイス32中の符号化された映像データを入力インタフェイス28を介して送信先デバイス14がアクセスしてもよい。記憶デバイス32はハードドライブ、Blu-ray(登録商標) disc、DVD、CD-ROM、フラッシュメモリ、揮発メモリ又は不揮発メモリや、符号化された映像データを記憶するその他一切の適当なデジタル記憶媒体など、様々な分散型データ記憶媒体やローカルアクセス型データ記憶媒体のいずれも含んでもよい。さらに別の例では、記憶デバイス32は送信元デバイス12によって生成された符号化された映像データを保持することができるファイルサーバや別の中間記憶デバイスに対応してもよい。記憶デバイス32から得られる記憶された映像データにストリーミングやダウンロードを介して送信先デバイス14がアクセスしてもよい。ファイルサーバは符号化された映像データを記憶し、符号化された映像データを送信先デバイス14に送信することができるあらゆる種類のコンピュータであってもよい。典型的なファイルサーバには、ウェブサーバ(たとえばウェブサイト用)、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイスやローカルディスクドライブが含まれる。符号化された映像データに送信先デバイス14があらゆる標準的なデータ接続を通じてアクセスしてもよく、このようなデータ接続は無線チャンネル(たとえばWi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)や、ファイルサーバに記憶されている符号化された映像データにアクセスするのに適する無線チャンネルと有線接続との双方の組合せを含む。記憶デバイス32からの符号化された映像データの伝送はストリーミング伝送、ダウンロード伝送や、これらの双方の組合せであってもよい。
図1に示されているように、送信元デバイス12は映像源18、映像エンコーダ20及び出力インタフェイス22を含む。映像源18は映像撮像デバイス(たとえば映像カメラ)、以前に撮像された映像を収蔵する映像アーカイブ、映像コンテンツプロバイダから映像を受け取る映像供給インタフェイス及び/又はソース映像としてコンピュータグラフィックデータを生成するコンピュータグラフィックシステムや、このような映像源の組合せなどの映像源を含んでもよい。一例として、映像源18が警備監視システムの映像カメラである場合、送信元デバイス12及び送信先デバイス14はカメラ付き携帯電話器又はテレビ電話器を形成してもよい。一方で、本出願で説明されている実現例はほとんどの映像符号化に適用可能であるといえ、無線用途及び/又は有線用途に適用することができる。
撮像されている映像、予め撮像された映像やコンピュータ生成映像を映像エンコーダ20によって符号化してもよい。符号化された映像データを送信元デバイス12の出力インタフェイス22を介して直接送信先デバイス14に送信してもよい。符号化された映像データを復号及び/又は再生を目的として送信先デバイス14や他のデバイスによるその後のアクセスのために記憶デバイス32に記憶することをさらに行なってもよい(あるいは、これを上記の代わりに行なってもよい)。出力インタフェイス22はモデム及び/又は送信器をさらに含んでもよい。
送信先デバイス14は入力インタフェイス28、映像デコーダ30及び表示デバイス34を含む。入力インタフェイス28は受信器及び/又はモデムを含んでもよく、リンク16を用いて符号化された映像データを受信してもよい。リンク16を用いて通信されたり記憶デバイス32に設けられたりした符号化された映像データは、映像データを復号する際に映像デコーダ30によって用いられる映像エンコーダ20によって生成される様々なシンタックス要素を含んでもよい。このようなシンタックス要素を、通信媒体で送信される、記憶媒体に記憶される、又はファイルサーバに記憶される、符号化された映像データ中に含ませてもよい。
いくつかの実現例では、送信先デバイス14は表示デバイス34を含んでもよく、表示デバイス34は一体型の表示デバイスであることが可能であり、また、送信先デバイス14と通信するように構成される外部表示デバイスであることが可能である。表示デバイス34は復号された映像データをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイや別の種類の表示デバイスなどの様々な表示デバイスのいずれを備えてもよい。
映像エンコーダ20及び映像デコーダ30はVVC、HEVC、MPEG-4、Part 10、Advanced Video Coding(AVC)、AVS又はこのような規格を拡張したものなどのプロプラエタリ規格や業界規格にしたがって動作してもよい。本出願が特定の映像符号化/復号規格に限定されず、他の映像符号化/復号規格に適用可能であってもよいことが当然分かる。多くの場合に、送信元デバイス12の映像エンコーダ20を映像データを符号化するように構成する際に、このような現行の規格や将来の規格のいずれにしたがって符号化してもよいことが分かる。同様に、多くの場合に、送信先デバイス14の映像デコーダ30を映像データを復号するように構成する際に、このような現行の規格や将来の規格のいずれにしたがって符号化してもよいことも分かる。
映像エンコーダ20及び映像デコーダ30の各々を1つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェアやこれらの任意の組合せなどの様々な適当なエンコーダ回路のいずれとしても実施してもよい。ソフトウェアで部分的に実施される場合、電子デバイスでは、適当な非一時的コンピュータ可読媒体にソフトウェアに対する指示を記憶し、指示を1つ以上のプロセッサを用いるハードウェアで実行して本開示で開示されている映像符号化/復号動作を実行してもよい。映像エンコーダ20及び映像デコーダ30の各々を1つ以上のエンコーダ又はデコーダに含ませてもよく、これらのいずれかを複合型のencoder/decoder(CODEC)の一部としてそれぞれのデバイスに組み込んでもよい。
図2は本出願で説明されているいくつかの実現例に係る典型的な映像エンコーダ20を示すブロック図である。映像エンコーダ20は映像フレーム内の映像ブロックのイントラ予測符号化及びインタ予測符号化を行なってもよい。イントラ予測符号化は空間的予測に依拠し、与えられた映像フレームやピクチャ内の映像データの空間的冗長性を抑えたり解消したりする。インタ予測符号化は時間的予測に依拠し、映像シーケンスの隣接する映像フレームやピクチャ内の映像データの時間的冗長性を抑えたり解消したりする。
図2に示されているように、映像エンコーダ20は映像データメモリ40、予測処理部41、復号ピクチャバッファ(decoded picture buffer:DPB)64、加算器50、変換処理部52、量子化部54及びエントロピ符号化部56を含む。予測処理部41は動き推定部42、動き補償部44、分割部45、イントラ予測処理部46及びイントラブロックコピー(BC)部48をさらに含む。いくつかの実現例では、映像エンコーダ20は映像ブロック再構成に用いられる逆量子化部58、逆変換処理部60及び加算器62も含む。ブロック境界にフィルタリングを行なって、再構成された映像からブロック状のアーティファクトを除去するために加算器62とDPB64との間にデブロッキングフィルタなどのループ内フィルタ63を配置してもよい。加算器62の出力にフィルタリングを行なうためにデブロッキングフィルタに加えて別のループ内フィルタ63も用いてもよい。再構成されたCUが参照ピクチャ記憶箇所に入れられ、今後符号化される映像ブロックを符号化するのに参照として用いられる前に、再構成されたCUに、画素適応オフセット(SAO)やアダプティブループ内フィルタ(adaptive in-loop filter:ALF)などのさらに別のループ内フィルタ箇所63を使用してもよい。映像エンコーダ20はプログラム可能なハードウェア部位や固定のハードウェア部位の形態をとってもよいし、映像エンコーダ20を図示されているプログラム可能なハードウェア部位や固定のハードウェア部位の1つ以上に分割してもよい。
映像データメモリ40は映像エンコーダ20の構成要素によって符号化される映像データを記憶してもよい。映像データメモリ40の映像データをたとえば映像源18から取得してもよい。DPB64は映像エンコーダ20(たとえば、イントラ予測符号化モード又はインタ予測符号化モードのエンコーダ)によって映像データを符号化する際に用いられる参照映像データを記憶するバッファである。映像データメモリ40及びDPB64を様々なメモリデバイスのいずれによっても形成してもよい。様々な例では、映像データメモリ40は映像エンコーダ20の他の構成要素をともなうオンチップ型であってもよいし、当該構成要素との関係でオフチップ型であってもよい。
図2に示されているように、予測処理部41中の分割部45が映像データを受け取った後、映像データを映像ブロックに分割する。この分割は、映像データに関連する四分木構造などの所定の分割構造にしたがって映像フレームをスライス、タイルやその他より大きいコーディングユニット(CU)に分割するものも含んでもよい。映像フレームを複数の映像ブロック(又はタイルと称する映像ブロックの集合)に分割してもよい。予測処理部41は、エラー結果(たとえば、符号レートや歪みのレベル)に基づいて現在の映像ブロックに対して、複数のイントラ予測符号化モードのうちの1つや複数のインタ予測符号化モードのうちの1つなど、複数の可能な予測符号化モードのうちの1つを選択してもよい。予測処理部41は、得られたイントラ又はインタ予測により符号化されたブロックを加算器50に提供して残差ブロックを生成し、得られたイントラ又はインタ予測により符号化されたブロックを加算器62に提供してその後に参照フレームの一部として用いられる符号化されたブロックを再構成してもよい。予測処理部41は動きベクトル、イントラモードインジケータ、分割情報やその他このようなシンタックス情報などのシンタックス要素をエントロピ符号化部56に提供することも行なう。
現在の映像ブロックに対して適切なイントラ予測符号化モードを選択するために、予測処理部41中のイントラ予測処理部46は、符号化される現在のブロックとしての現在の映像ブロックのイントラ予測符号化を同じフレーム内の1つ以上の近隣のブロックに対して行なって空間的予測を実現してもよい。予測処理部41中の動き推定部42及び動き補償部44は、現在の映像ブロックのインタ予測符号化を1つ以上の参照フレーム内の1つ以上の予測ブロックに対して行なって時間的予測を実現する。映像エンコーダ20は複数の符号化の仕方を実行してもよく、たとえば、映像データのブロック毎に適切な符号化モードを選択してもよい。
いくつかの実現例では、動き推定部42は映像フレームのシーケンス中の所定のパターンに応じて動きベクトルを生成することによって現在の映像フレームのインタ予測モードを決定する。動きベクトルは参照映像フレーム内の予測ブロックに対する現在の映像フレーム内の映像ブロックのprediction unit(PU)の変位を示す。動き推定部42によって実行される動き推定は、映像ブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(又は他の符号化された単位)内で符号化中である現在のブロックに対する参照フレーム(又は他の符号化された単位)内の予測ブロックに対する現在の映像フレーム又はピクチャ内の映像ブロックのPUの変位を示してもよい。所定のパターンによってシーケンス中の映像フレームをPフレーム又はBフレームに指定してもよい。イントラBC部48では、インタ予測に用いられる動き推定部42による動きベクトルの判定と同様の仕方で、イントラBC符号化に用いられるベクトル、たとえばブロックベクトルを判定してもよいし、ブロックベクトルを判定するのに動き推定部42を利用してもよい。
予測ブロックは、差分絶対値和(sum of absolute difference:SAD)、二乗誤差和(sum of square difference:SSD)やその他差分指数によって判定してよい画素差分の観点から符号化される映像ブロックのPUとの合致度が高いと考えられる参照フレームのブロックである。いくつかの実現例では、映像エンコーダ20ではDPB64に記憶されている参照フレームの画素非整数個分の位置(sub-integer pixel positions)の値を計算してもよい。たとえば、映像エンコーダ20は参照フレームの画素1/4個分の位置、画素1/8個分の位置やその他画素1個分以下の位置の値を補間してもよい。したがって、動き推定部42は画素1個まるまる分の位置と画素1個分以下の位置とに対して動き探索を行なうことができ、画素1個分以下の精度で動きベクトルを出力することができる。
動き推定部42は、PUの位置と第1の参照フレームリスト(リスト0)又は第2の参照フレームリスト(リスト1)から選択された参照フレームの予測ブロックの位置とを比較することによってインタ予測により符号化されたフレーム内の映像ブロックのPUの動きベクトルを計算する。リスト0及びリスト1の各々によってDPB64に記憶されている1つ以上の参照フレームを特定する。動き推定部42は計算された動きベクトルを動き補償部44に送り、その後エントロピ符号化部56に送る。
動き補償部44によって行なわれる動き補償は動き推定部42によって判定された動きベクトルに基づいて予測ブロックを取得したり生成したりすることを要してもよい。動き補償部44は現在の映像ブロックのPUの動きベクトルを受け取ると、参照フレームリストのうちの1つ中で動きベクトルによって指し示される予測ブロックの位置を特定し、DPB64から予測ブロックを取得し、予測ブロックを加算器50に転送してもよい。その後、加算器50は符号化中の現在の映像ブロックの画素値から動き補償部44によって提供された予測ブロックの画素値を差し引くことによって画素差分値の残差映像ブロックを形成する。残差映像ブロックを形成する画素差分値はルマ差分成分を含んでもよいし、クロマ差分成分を含んでもよいし、これらの両方を含んでもよい。動き補償部44は映像フレームの映像ブロックを復号する際に、映像デコーダ30によって用いられる、映像フレームの映像ブロックに関連するシンタックス要素を生成することも行なってもよい。シンタックス要素は、たとえば、予測ブロックを特定するのに用いられる動きベクトルを定めるシンタックス要素、予測モードを示す任意のフラグや、本出願で説明されているその他一切のシンタックス情報を含んでもよい。動き推定部42と動き補償部44とを一体化して一体化の度合いを高めてもよいことに留意する。なお、動き推定部42と動き補償部44とは概念上の目的で別々に図示されている。
いくつかの実現例では、イントラBC部48はベクトルを生成し、動き推定部42及び動き補償部44に関連して上述されているのと同様の仕方で予測ブロックを取得してもよい。ただし、予測ブロックは符号化中の現在のブロックと同じフレーム内にあり、動きベクトルに対して当該ベクトルをブロックベクトルと称する。特に、イントラBC部48は現在のブロックを符号化するのに用いられるイントラ予測モードを決定してもよい。いくつかの例では、イントラBC部48は様々なイントラ予測モードを用いて現在のブロックを符号化してもよく、たとえば、別々の符号化の仕方で行なう際に様々なイントラ予測モードを用いてもよく、そのパフォーマンスをレート歪み解析を通じて検証してもよい。次に、イントラBC部48は検証された様々なイントラ予測モードから、用いるのに適切なイントラ予測モードを選択し、これに応じてイントラモードインジケータを生成してもよい。たとえば、イントラBC部48は検証された様々なイントラ予測モードにレート歪み解析を用いてレート歪み値を計算し、検証されたモードから最良のレート歪み特性を、用いるのに適切なイントラ予測モードとして持つイントラ予測モードを選択してもよい。多くの場合、レート歪み解析は符号化されたブロックと、符号化されたブロックを生成するために過去に符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、並びに符号化されたブロックを生成するのに用いられるビットレート(すなわち、ビット数)を判定する。イントラBC部48は様々な符号化されたブロックの歪みとレートとから比率を計算してどのイントラ予測モードがブロックの最良のレート歪み値を示すのかを判定してもよい。
他の例では、イントラBC部48は動き推定部42及び動き補償部44の全体又は一部を用いて本出願で説明されている実現例に係るイントラBC予測の上記のような機能を実行してもよい。いずれの場合でも、イントラブロックコピーでは、予測ブロックは、画素差分の点で符号化されるブロックとの合致度が高いと考えられるブロックであってもよい。これを差分絶対値和(sum of absolute difference:SAD)、二乗誤差和(sum of squared difference:SSD)やその他差分指数によって判定してもよい。予測ブロックの特定は画素非整数個分の位置の値の計算を含んでもよい。
予測ブロックがイントラ予測にしたがって同じフレームから得られるのか、インタ予測にしたがって異なるフレームから得られるのかにかかわらず、映像エンコーダ20は符号化中の現在の映像ブロックの画素値から予測ブロックの画素値を差し引き、画素差分値を形成することによって残差映像ブロックを形成してもよい。残差映像ブロックを形成する画素差分値はルマ成分差分とクロマ成分差分との両方を含んでもよい。
イントラ予測処理部46は現在の映像ブロックを、動き推定部42及び動き補償部44によって行なわれるインタ予測に代わるものとしてイントラ予測してもよいし、上述のようにイントラBC部48によって行なわれるイントラブロックコピー予測に代わるものとしてイントラ予測してもよい。特に、イントラ予測処理部46は現在のブロックを符号化するのに用いられるイントラ予測モードを決定してもよい。これを行なうために、イントラ予測処理部46は様々なイントラ予測モードを用いて現在のブロックを符号化してもよく、たとえば、別々の符号化の仕方で行なう際に様々なイントラ予測モードを用いてもよく、イントラ予測処理部46(又は、いくつかの例では、モード選択部)は検証されたイントラ予測モードから、用いるのに適切なイントラ予測モードを選択してもよい。イントラ予測処理部46はブロックに対して選択されたイントラ予測モードを示す情報をエントロピ符号化部56に提供してもよい。エントロピ符号化部56はビットストリーム中の選択されたイントラ予測モードを示す情報を符号化してもよい。
予測処理部41がインタ予測かイントラ予測かのいずれかにより現在の映像ブロックに対する予測ブロックを判定した後、加算器50が現在の映像ブロックから予測ブロックを差し引くことによって残差映像ブロックを形成する。残差ブロック中の残差映像データを1つ以上のtransform unit(TU)に含ませてもよく、この残差映像データは変換処理部52に提供される。変換処理部52は残差映像データを残差変換係数に離散コサイン変換(DCT)や概念的に同様の変換などの変換を用いて変換する。
変換処理部52は得られた変換係数を量子化部54に送ってもよい。量子化部54は変換係数を量子化してビットレートをさらに削減する。量子化プロセスは係数の一部又は全部に関連するビット深度も削減してもよい。量子化の程度を量子化パラメータを調節することによって修正してもよい。いくつかの例では、その後、量子化部54は量子化された変換係数を含む行列のスキャンを行なってもよい。これの代わりに、スキャンをエントロピ符号化部56が行なってもよい。
量子化に続いて、エントロピ符号化部56は量子化された変換係数を映像ビットストリームにエントロピ符号化する。たとえば、context adaptive variable length coding(CAVLC)、context adaptive binary arithmetic coding(CABAC)、syntax-based context-adaptive binary arithmetic coding(SBAC)、probability interval partitioning entropy(PIPE)符号化や、別のエントロピ符号化方法やエントロピ符号化技法を用いてエントロピ符号化する。その後、符号化されたビットストリームは映像デコーダ30に送信されたり、その後に映像デコーダ30に送信されたり映像デコーダ30によって取得されたりするように記憶デバイス32中でアーカイブ形式にされたりしてもよい。エントロピ符号化部56は符号化中の現在の映像フレームの動きベクトルや他のシンタックス要素もエントロピ符号化してもよい。
逆量子化部58及び逆変換処理部60が逆量子化及び逆変換をそれぞれ行ない、他の映像ブロックの予測に用いられる参照ブロックを生成するために画素ドメインで残差映像ブロックを再構成する。上記されているように、動き補償部44はDPB64に記憶されているフレームの1つ以上の参照ブロックから、動き補償された予測ブロックを生成してもよい。動き補償部44は1つ以上の補間フィルタを予測ブロックに適用して動き推定に用いられる画素非整数個分の値を計算することも行なってもよい。
動き補償部44によって生成された動き補償された予測ブロックに再構成された残差ブロックを加算器62が加算してDPB64に記憶される参照ブロックを生成する。その後、参照ブロックを以降の映像フレーム内の別の映像ブロックをインタ予測する予測ブロックとしてイントラBC部48、動き推定部42及び動き補償部44が用いてもよい。
図3は本出願のいくつかの実現例に係る典型的な映像デコーダ30を示すブロック図である。映像デコーダ30は映像データメモリ79、エントロピ復号部80、予測処理部81、逆量子化部86、逆変換処理部88、加算器90及びDPB92を含む。さらに、予測処理部81は動き補償部82、イントラ予測処理部84及びイントラBC部85を含む。映像デコーダ30は図2に関連して映像エンコーダ20に関して上述されている符号化プロセスとほぼ逆の復号プロセスを実行してもよい。たとえば、動き補償部82がエントロピ復号部80から受け取った動きベクトルに基づいて予測データを生成してもよい一方で、イントラ予測部84がエントロピ復号部80から受け取ったイントラ予測モードインジケータに基づいて予測データを生成してもよい。
いくつかの例では、本出願の実施を実行するように映像デコーダ30の部位にタスクを割り当ててもよい。また、いくつかの例では、本開示の実施を映像デコーダ30の部位の1つ以上に振り分けてもよい。たとえば、本出願の実施をイントラBC部85が単独で実行してもよいし、動き補償部82、イントラ予測処理部84やエントロピ復号部80などの映像デコーダ30の他の部位と組み合されて実行してもよい。いくつかの例では、映像デコーダ30がイントラBC部85を含まなくてもよく、イントラBC部85の機能を動き補償部82などの予測処理部81の他の構成要素によって実行してもよい。
映像データメモリ79は映像デコーダ30の他の構成要素によって復号される、符号化された映像ビットストリームなどの映像データを記憶してもよい。映像データメモリ79に記憶されている映像データを、たとえば、記憶デバイス32から取得してもよいし、カメラなどの付属の映像源から取得してもよいし、映像データの有線又は無線ネットワーク通信により取得してもよいし、物理的なデータ記憶媒体(たとえば、フラッシュドライブやハードディスク)にアクセスすることによって取得してもよい。映像データメモリ79は、符号化された映像ビットストリームから得られた符号化された映像データを記憶する符号化ピクチャバッファ(coded picture buffer:CPB)を含んでもよい。映像デコーダ30の復号ピクチャバッファ(DPB)92は映像デコーダ30によって映像データを復号する(たとえば、イントラ予測符号化モードやインタ予測符号化モードで復号する)際に用いられる参照映像データを記憶する。映像データメモリ79及びDPB92をシンクロナスDRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗変化型RAM(MRAM)、抵抗変化型RAM(RRAM(登録商標))や他の種類のメモリデバイスなどの様々なメモリデバイスのいずれによっても形成してもよい。図示するために、図3では映像データメモリ79とDPB92とが映像デコーダ30の別個の2つの構成要素として示されている。しかし、映像データメモリ79とDPB92とを同じメモリデバイスによって実現してもよいし、別々のメモリデバイスによって実現してもよいことは当業者であれば明らかである。いくつかの例では、映像データメモリ79が映像デコーダ30の他の構成要素をともなうオンチップ型であってもよいし、当該構成要素との関係でオフチップ型であってもよい。
復号プロセスの際、符号化された映像フレームの映像ブロックと、関連するシンタックス要素とを表わす符号化された映像ビットストリームを映像デコーダ30が受信する。映像デコーダ30は映像フレームレベル及び/又は映像ブロックレベルでシンタックス要素を受信してもよい。映像デコーダ30のエントロピ復号部80がビットストリームをエントロピ復号して量子化された係数、動きベクトル又はイントラ予測モードインジケータ及び他のシンタックス要素を生成する。その後、エントロピ復号部80は動きベクトルと他のシンタックス要素とを予測処理部81に転送する。
映像フレームがイントラ予測符号化(I)されたフレームとして符号化されたり、他の種類のフレーム内のイントラ符号化された予測ブロックのために符号化されたりする場合、予測処理部81のイントラ予測処理部84が信号伝達されたイントラ予測モードと、現在のフレームの以前に復号されたブロックから得られる参照データとに基づいて現在の映像フレームの映像ブロックの予測データを生成してもよい。
映像フレームがインタ予測符号化(すなわち、B又はP)されたフレームとして符号化される場合、予測処理部81の動き補償部82がエントロピ復号部80から受け取った動きベクトル及び他のシンタックス要素に基づいて現在の映像フレームの映像ブロックの、1つ以上の予測ブロックを生成する。予測ブロックの各々を参照フレームリストのうちの1つ中の参照フレームから生成してもよい。映像デコーダ30はDPB92に記憶されている参照フレームに基づいて初期設定の構成技術を用いて参照フレームリスト、すなわち、リスト0及びリスト1を構成してもよい。
いくつかの例では、映像ブロックが本出願で説明されているイントラBCモードにしたがって符号化される場合、予測処理部81のイントラBC部85がエントロピ復号部80から受け取ったブロックベクトル及び他のシンタックス要素に基づいて現在の映像ブロックの予測ブロックを生成する。予測ブロックは映像エンコーダ20によって定められた現在の映像ブロックと同じピクチャの再構成された領域内にあってもよい。
動き補償部82及び/又はイントラBC部85が動きベクトル及び他のシンタックス要素をパースすることによって現在の映像フレームの映像ブロックの予測情報を判定し、予測情報を用いて復号中の現在の映像ブロックの予測ブロックを生成する。たとえば、動き補償部82は受け取ったシンタックス要素のいくつかを用いて、映像フレームの映像ブロックを符号化するのに用いられる予測モード(たとえば、インタ予測かイントラ予測か)、インタ予測フレームの種類(たとえば、BかPか)、フレームに対する参照フレームリストの1つ以上の構成情報、フレームの各インタ予測符号化された映像ブロックの動きベクトル、フレームの各インタ予測符号化された映像ブロックのインタ予測ステータス及び現在の映像フレーム内の映像ブロックを復号するための他の情報を判定する。
同様に、イントラBC部85は受け取ったシンタックス要素、たとえば、現在の映像ブロックがイントラBCモードを用いて予測されたと判断するためのフラグ、どのフレームの映像ブロックが再構成された領域内にあって、DPB92に記憶されるべきであるのかについての構成情報、フレームの各イントラBC予測された映像ブロックのブロックベクトル、フレームの各イントラBC予測された映像ブロックのイントラBC予測ステータス及び現在の映像フレーム内の映像ブロックを復号するための他の情報のうちのいくつかを用いてもよい。
動き補償部82は映像ブロックを符号化する際に映像エンコーダ20によって用いられたように補間フィルタを用いて補間も行なって、参照ブロックの画素非整数個分の補間された値を計算してもよい。この場合、動き補償部82は受け取ったシンタックス要素から映像エンコーダ20によって用いられた補間フィルタを判定し、補間フィルタを用いて予測ブロックを生成してもよい。
逆量子化部86は、ビットストリームで提供され、エントロピ復号部80によってエントロピ復号された量子化された変換係数を、映像フレーム内の映像ブロック毎に映像エンコーダ20によって計算された量子化パラメータと同じものを用いて逆量子化して、量子化の程度を判定する。逆変換処理部88は変換係数に逆変換、たとえば、逆DCT、逆整数変換(inverse integer transform)や概念的に同様の逆変換プロセスを適用して画素領域で残差ブロックを再構成する。
動き補償部82又はイントラBC部85がベクトル及び他のシンタックス要素に基づいて現在の映像ブロックの予測ブロックを生成した後、加算器90が逆変換処理部88からの残差ブロックと、動き補償部82及びイントラBC部85によって生成された対応する予測ブロックとを合計することによって現在の映像ブロックの復号された映像ブロックを再構成する。復号された映像ブロックをさらに処理するために加算器90とDPB92との間にループ内フィルタ91を配置してもよい。再構成されたCUが参照ピクチャ記憶箇所に入れられる前に、再構成されたCUに、デブロッキングフィルタ、画素適応オフセット(SAO)やアダプティブループ内フィルタ(ALF)などのループ内フィルタ箇所91を使用してもよい。その後、与えられたフレーム内の復号された映像ブロックはDPB92に記憶され、DPB92は次の映像ブロックの以降の動き補償に用いられる参照フレームを記憶する。DPB92、又はDPB92とは別のメモリデバイスが図1の表示デバイス34などの表示デバイスにその後に表示するために復号された映像も記憶してもよい。
典型的な映像符号化プロセスでは、映像シーケンスがフレーム又はピクチャの順序集合を典型的に含む。各フレームが3つのサンプル配列(表記SL、SCb及びSCr)を含んでもよい。SLはルマサンプルの二次元配列である。SCbはCbクロマサンプルの二次元配列である。SCrはCrクロマサンプルの二次元配列である。他の例では、フレームはモノクロであってもよく、したがってルマサンプルの二次元配列を1つのみ含む。
HEVCのようにAVS3規格はブロックを用いた複合映像符号化フレームワーク上に構築される。入力映像信号がブロック毎に処理される(コーディングユニット(CU)と称する)。四分木のみに基づいてブロックを分割するHEVCとは異なり、AVS3では、1つのコーディングツリーユニット(CTU)が四分木/二分木/拡張四分木に基づいて様々な局所的な特性に適応するようにCUに分割される。これに加えて、HEVCの複数の分割単位型式の概念は除かれる。すなわち、AVS3にはCUとprediction unit(PU)とtransform unit(TU)との隔たりは存在しない。代わりに、各CUが予測と変換との両方に基本単位として常に用いられ、さらに分割されない。AVS3のツリー分割構造では、まず1つのCTUが四分木構造に基づいて分割される。その後、各四分木リーフノードを二分木構造及び拡張四分木構造に基づいてさらに分割することができる。
図4Aに示されているように、映像エンコーダ20(言い換えると、特に分割部45)がまずフレームをコーディングツリーユニット(CTU)の集合に分割することによってフレームの符号化表現を生成する。映像フレームは、左から右に上から下までラスタスキャン順に連続的に整列する整数個のCTUを含んでもよい。各CTUは論理的な最大のコーディングユニットであり、CTUの幅及び高さが連続パラメータセット中で映像エンコーダ20によって信号伝達され、CTUの幅及び高さは、映像シーケンスのすべてのCTUが同じサイズを持ち、サイズは128×128、64×64、32×32及び16×16の1つであるようなものである。しかし、本出願が特定のサイズに必ずしも限定されない点に留意するべきである。図4Bに示されているように、各CTUはルマサンプルの1つのコーディングツリーブロック(CTB)と、クロマサンプルの対応する2つのコーディングツリーブロックと、コーディングツリーブロックのサンプルを符号化するのに用いられるシンタックス要素とを備えてもよい。シンタックス要素は画素群の符号化されたブロックの異なる種類の単位の特性と、映像シーケンスを映像デコーダ30でどのように再構成することができるのかとを記述するものであり、インタ予測又はイントラ予測、イントラ予測モード、動きベクトル及び他のパラメータを含む。モノクロピクチャ、又は別々の3つのカラープレーンを持つピクチャでは、CTUは1つのコーディングツリーブロックと、コーディングツリーブロックのサンプルを符号化するのに用いられるシンタックス要素とを備えてもよい。コーディングツリーブロックはサンプルのN×Nブロックであってもよい。
優れたパフォーマンスを実現するために、映像エンコーダ20はCTUのコーディングツリーブロックに対して二分木分割、三分木分割、四分木分割又は双方の組合せなどのツリー分割を再帰的に行なって、CTUをより小さいコーディングユニット(CU)に分割してもよい。図4Cに示されているように、まず64×64CTU400が4つのより小さいCUに分割され、各々は32×32のブロックサイズを持つ。より小さい4つのCUのうち、CU410とCU420との各々がブロックサイズが16×16の4つのCUに分割される。2つの16×16CU430及び440の各々がブロックサイズが8×8の4つのCUにさらに分割される。図4Dは図4Cに示されているCTU400の分割プロセスの最終結果を示す四分木データ構造を示し、四分木の各リーフノードが32×32から8×8にわたるそれぞれのサイズの、1つのCUに対応する。図4Bに示されているCTUのように、各CUが、ルマサンプルの符号化ブロック(CB)と、同じサイズのフレームのクロマサンプルの対応する2つの符号化ブロックと、符号化ブロックのサンプルを符号化するのに用いられるシンタックス要素とを備えてもよい。モノクロピクチャ、又は別々の3つのカラープレーンを持つピクチャでは、CUは1つの符号化ブロックと、符号化ブロックのサンプルを符号化するのに用いられるシンタックス構造とを備えてもよい。図4C及び図4Dに示されている四分木分割は図示するためのものにすぎず、1つのCTUを四分木/三分木/二分木分割に基づいて様々な局所的な特性に適応するようにCUに分割することができる点に留意するべきである。多種類のツリー構造では、1つのCTUが四分木構造によって分割され、各四分木リーフCUを二分木構造及び三分木構造によってさらに分割することができる。図4Eに示されているように、AVS3には5つの分割型式が存在する。すなわち、四分割、水平二分割、垂直二分分割、水平拡張四分木分割及び垂直拡張四分木分割が存在する。
いくつかの実現例では、CUの符号化ブロックを1つ以上のM×N prediction block(PB)に映像エンコーダ20がさらに分割してもよい。prediction blockはサンプルの矩形(正方形又は非正方形)のブロックであり、同じ予測(インタ又はイントラ)が適用される。CUのprediction unit(PU)がルマサンプルのprediction blockと、クロマサンプルの対応する2つのprediction blockと、prediction blockを予測するのに用いられるシンタックス要素とを備えてもよい。モノクロピクチャ、又は別々の3つのカラープレーンを持つピクチャでは、PUは1つのprediction blockと、prediction blockのサンプルを予測するのに用いられるシンタックス構造とを備えてもよい。CUの各PUのルマ prediction block、Cb prediction block及びCr prediction blockに対する予測ルマブロック、予測Cbブロック及び予測Crブロックを映像エンコーダ20が生成してもよい。
PUの予測ブロックを生成するのにイントラ予測又はインタ予測を映像エンコーダ20が用いてもよい。PUの予測ブロックを生成するのにイントラ予測を映像エンコーダ20が用いる場合、PUに関連するフレームの復号されたサンプルに基づいてPUの予測ブロックを映像エンコーダ20が生成してもよい。PUの予測ブロックを生成するのにインタ予測を映像エンコーダ20が用いる場合、PUに関連するフレーム以外の1つ以上のフレームの復号されたサンプルに基づいてPUの予測ブロックを映像エンコーダ20が生成してもよい。
映像エンコーダ20がCUの、1つ以上のPUの予測ルマブロック、予測Cbブロック及び予測Crブロックを生成した後、CUのルマ残差ブロック中の各サンプルがCUの予測ルマブロックの1つ中のルマサンプルと、CUの元のルマ符号化ブロック中の対応するサンプルとの差分を示すように、CUの予測ルマブロックをその元のルマ符号化ブロックから差し引くことによってCUのルマ残差ブロックを映像エンコーダ20が生成してもよい。同様に、CUのCb残差ブロック中の各サンプルがCUの予測Cbブロックの1つ中のCbサンプルと、CUの元のCb符号化ブロック中の対応するサンプルとの差分を示し、CUのCr残差ブロック中の各サンプルがCUの予測Crブロックの1つ中のCrサンプルと、CUの元のCr符号化ブロック中の対応するサンプルとの差分を示すことができるように、CUのCb残差ブロック及びCr残差ブロックを映像エンコーダ20がそれぞれ生成してもよい。
さらに、図4Cに示されているように、映像エンコーダ20が四分木分割を用いてCUのルマ残差ブロック、Cb残差ブロック及びCr残差ブロックを1つ以上のルマ変換ブロック、Cb変換ブロック及びCr変換ブロックに分解してもよい。変換ブロックは同じ変換が適用されるサンプルの矩形(正方形又は非正方形)のブロックである。CUのtransform unit(TU)がルマサンプルの変換ブロックと、クロマサンプルの対応する2つの変換ブロックと、変換ブロックサンプルを変換するのに用いられるシンタックス要素とを備えてもよい。したがって、CUの各TUはルマ変換ブロック、Cb変換ブロック及びCr変換ブロックに関連してもよい。いくつかの例では、TUに関連するルマ変換ブロックはCUのルマ残差ブロックのサブブロックであってもよい。Cb変換ブロックはCUのCb残差ブロックのサブブロックであってもよい。Cr変換ブロックはCUのCr残差ブロックのサブブロックであってもよい。モノクロピクチャ、又は別々の3つのカラープレーンを持つピクチャでは、TUは1つの変換ブロックと、変換ブロックのサンプルを変換するのに用いられるシンタックス構造とを備えてもよい。
映像エンコーダ20が1つ以上の変換をTUのルマ変換ブロックに適用してTUのルマ係数ブロックを生成してもよい。係数ブロックが変換係数の二次元配列であってもよい。変換係数はスカラー量であってもよい。映像エンコーダ20が1つ以上の変換をTUのCb変換ブロックに適用してTUのCb係数ブロックを生成してもよい。映像エンコーダ20が1つ以上の変換をTUのCr変換ブロックに適用してTUのCr係数ブロックを生成してもよい。
係数ブロック(たとえば、ルマ係数ブロック、Cb係数ブロックやCr係数ブロック)を生成した後、係数ブロックを映像エンコーダ20が量子化してもよい。大まかには、量子化は、変換係数を量子化し、場合によっては、変換係数を表現するのに用いられるデータの量を削減してさらなる圧縮を実現するプロセスを指す。映像エンコーダ20が係数ブロックを量子化した後、映像エンコーダ20は量子化された変換係数を示すシンタックス要素をエントロピ符号化してもよい。たとえば、量子化された変換係数を示すシンタックス要素にContext-Adaptive Binary Arithmetic Coding(CABAC)を映像エンコーダ20が実行してもよい。最後に、符号化されたフレームの表現と、関連するデータとを形成する一連のビットを含むビットストリームを映像エンコーダ20が出力してもよく、符号化されたフレームの表現と、関連するデータとは記憶デバイス32にセーブされたり送信先デバイス14に送信されたりする。
映像エンコーダ20によって生成されたビットストリームを受信した後、映像デコーダ30がビットストリームをパースしてビットストリームからシンタックス要素を取得してもよい。ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて映像データのフレームを映像デコーダ30が再構成してもよい。映像データを再構成するプロセスは映像エンコーダ20によって実行される符号化プロセスとほぼ逆である。たとえば、映像デコーダ30が現在のCUのTUに関連する係数ブロックに逆変換を行なって現在のCUのTUに関連する残差ブロックを再構成してもよい。映像デコーダ30が現在のCUのPUの予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって現在のCUの符号化ブロックを再構成することも行なう。フレームの各CUの符号化ブロックを再構成した後、映像デコーダ30がフレームを再構成してもよい。
SAOは、エンコーダによって送信されたルックアップテーブルの値に基づいて、デブロッキングフィルタの適用後に各サンプルにオフセット値を条件付きで加算することによって復号されたサンプルを修正するプロセスである。SAOフィルタリングはシンタックス要素sao-type-idxを用いてCTB毎に選択されるフィルタリング形式に基づいて領域に関して実行される。sao-type-idxの値として0の値はSAOフィルタがCTBに適用されないことを示し、それぞれ、値1及び2は、バンドオフセットフィルタリング形式及びエッジオフセットフィルタリング形式を用いることを示す。1に等しいsao-type-idxによって指定されるバンドオフセットモードでは、選択されたオフセット値がサンプル振幅(sample amplitude)に直接依存する。このモードでは、全サンプル振幅範囲はバンドと呼ばれる32個のセグメントに均等に分割され、これらのバンドのうち4つ(32個のバンドのうち連続するもの)に属するサンプル値が、バンドオフセットとして表現される送信された値を加えることによって修正され、この値は正又は負であることが可能である。4つの連続するバンドを使用する主な理由は、バンディングアーティファクトが出現する可能性がある平滑な領域では、CTB中のサンプル振幅が少数のバンドのみに集中し易いことである。これに加えて、4つのオフセットを用いるように選択された設計が、やはり4つのオフセット値を用いる動作のエッジオフセットモードと統合される。2に等しいsao-type-idxによって指定されるエッジオフセットモードでは、0から3の値を持つシンタックス要素sao-eo-classは、CTBのエッジオフセット分類に水平方向か、垂直方向か、2つの斜めの傾斜方向の一方かのいずれが用いられるのかを示す。
図5は本開示のいくつかの実現例に係るSAOで用いられる4つの傾斜パターンを示すブロック図である。4つの傾斜パターン502,504,506及び508はエッジオフセットモードのそれぞれのsao-eo-classの傾斜パターンである。「p」と表記されているサンプルは中央のサンプルが考慮対象であることを示す。「n0」及び「n1」と表記されている2つのサンプルは(a)水平(sao-eo-class=0)傾斜パターン、(b)垂直(sao-eo-class=1)傾斜パターン、(c)135°斜め(sao-eo-class=2)傾斜パターン及び(d)45°(sao-eo-class=3)傾斜パターンに沿った2つの近隣のサンプルを示す。ある位置に位置するサンプル値pと、図5に示されている近隣の位置に位置する2つのサンプルの値n0及びn1とを比較することによってCTB中の各サンプルが5つのEdgeIdxカテゴリのうちの1つに分類される。この分類は復号されたサンプル値に基づいてサンプル毎に行なわれるので、EdgeIdx分類に追加の信号伝達は不要である。サンプル位置でのEdgeIdxカテゴリに応じて、1から4のEdgeIdxカテゴリについて、サンプル値には送信されたルックアップテーブルから得られるオフセット値が加えられる。オフセット値は常にカテゴリ1及び2に対して正であり、カテゴリ3及び4に対して負である。したがって、フィルタは通常、エッジオフセットモードで平滑化効果を持つ。以下の表1はSAOエッジクラスのサンプルEdgeIdxカテゴリを示す。
SAOタイプ1及び2では、合計4つの振幅オフセット値がCTB毎にデコーダに送信される。タイプ1では、符号も符号化される。オフセット値と、sao-type-idxやsao-eo-classなどの関連するシンタックス要素とがエンコーダによって決定され、典型的にはレート歪みパフォーマンスを最適化する基準を用いて決定される。マージフラグを用いてSAOパラメータが左又は上のCTBから受け継がれることを示して、信号伝達を効率化することができる。まとめると、SAOは、再構成された信号をさらに洗練させることを可能にする非線形のフィルタリング操作であり、平滑領域とエッジ周囲との両方で信号表現を拡張することができる。
いくつかの実施形態では、符号化効率を改善したり、クロス成分情報を導入することによって画素適応オフセット(SAO)の複雑さを軽減したりする方法及びシステムが本出願で開示されている。SAOはHEVC、VVC、AVS2及びAVS3規格で用いられる。以下の説明ではHEVC、VVC、AVS2及びAVS3規格の既存のSAO設計が基本的なSAO方法として用いられているが、映像符号化の当業者は本開示で説明されているクロス成分方法を設計精神を同じくする他のループフィルタ設計や他の符号化ツールにも適用することができる。たとえば、AVS3規格では、SAOは拡張画素適応オフセット(ESAO)と呼ばれる符号化ツールに置換される。一方で、本出願で開示されているCCSAOをESAOとパラレルに適用することもできる。別の例では、CCSAOをAV1規格のConstrained Directional Enhancement Filter(CDEF)とパラレルに適用することができる。
HEVC、VVC、AVS2及びAVS3規格の既存のSAO設計では、ルマYサンプルオフセット値、クロマCbサンプルオフセット値及びクロマCrサンプルオフセット値が個別に判定される。すなわち、たとえば、同一位置にある(collocated)ルマサンプルや近隣のルマサンプルを考慮することなく、現在のクロマサンプルオフセットが現在のクロマサンプル値及び近隣のクロマサンプル値のみによって判定される。その一方で、ルマサンプルはクロマサンプルよりも多くの元のピクチャの詳細情報を維持し、これにより、現在のクロマサンプルオフセットの判定をより良好に行なうことができる。さらに、通常、クロマサンプルはRGBからYCbCrへのカラー変換の後や、量子化及びデブロッキングフィルタの後に高周波詳細部を喪失するので、クロマオフセットを判定するために維持される高周波詳細部を有するルマサンプルを導入することで、クロマサンプルの再構成をより良好に行なうことができる。したがって、たとえばクロス成分サンプル適応オフセット(Cross-Component Sample Adaptive Offset:CCSAO)の方法及びシステムを用いてクロス成分相関を調べることによってさらなるゲインを期待することができる。いくつかの実施形態では、本記載の相関はクロス成分サンプル値を含むだけでなく、予測/残差符号化モード、変換形式や、クロス成分から得られる量子化/デブロッキング/SAO/ALFパラメータなどのピクチャ/符号化情報も含む。
別の例はSAOの例であり、ルマサンプルオフセットがルマサンプルのみによって判定される。しかし、たとえば、同じバンドオフセット(BO)分類を持つルマサンプルをそれと同一位置にあるクロマサンプル及びその近隣のクロマサンプルによってさらに分類することができ、これにより、より効果的な分類を実現することができる。SAO分類を、元のピクチャと再構成されたピクチャとのサンプル差分を補償するための近道ととらえることができる。したがって、効果的な分類が望まれる。
図6Aは本開示のいくつかの実現例に係る、クロマサンプルに適用され、入力としてDBF Yを用いるCCSAOのシステム及びプロセスを示すブロック図である。ルマデブロッキングフィルタの後のルマサンプル(DBF Y)がSAO Cb及びSAO Crの後のクロマCb及びクロマCrの別のオフセットを判定するのに用いられる。たとえば、まず、現在のクロマサンプル602が同一位置にあるルマサンプル604及び近隣のルマサンプル606(白色)を用いて分類され、対応するクラスの対応するCCSAOオフセット値が現在のクロマサンプル値に加えられる。図6Bは本開示のいくつかの実現例に係る、ルマサンプル及びクロマサンプルに適用され、入力としてDBF Y/Cb/Crを用いるCCSAOのシステム及びプロセスを示すブロック図である。図6Cは本開示のいくつかの実現例に係る独立して動作ことができるCCSAOのシステム及びプロセスを示すブロック図である。図6Dは本開示のいくつかの実現例に係る、同じコーデックステージの同じオフセット又は異なるオフセットを用いて再帰的(2回又はN回)に適用されるか、異なるステージで繰り返されることが可能であるCCSAOのシステム及びプロセスを示すブロック図である。まとめると、いくつかの実施形態では、現在のルマサンプルを分類するために、現在のルマサンプル及び近隣のルマサンプルの情報と、同一位置にあるクロマサンプル及び近隣のクロマサンプル(Cb及びCr)の情報とを用いることができる。いくつかの実施形態では、現在のクロマサンプル(Cb又はCr)を分類するために、同一位置にあるルマサンプル及び近隣のルマサンプルと、同一位置にあるクロスクロマサンプル及び近隣のクロスクロマサンプルと、現在のクロマサンプル及び近隣のクロマサンプルとを用いることができる。いくつかの実施形態では、CCSAOが(1)DBF Y/Cb/Crの後、(2)DBFの前の再構成された画像Y/Cb/Crの後、又は(3)SAO Y/Cb/Crの後、又は(4)ALF Y/Cb/Crの後にカスケード状に分岐することができる。
いくつかの実施形態では、CCSAOを他の符号化ツール、たとえば、AVS規格のESAO又はAV1規格のCDEFとパラレルに適用することもできる。図6Eは本開示のいくつかの実現例に係るAVS規格のESAOとパラレルに適用されるCCSAOのシステム及びプロセスを示すブロック図である。
図6Fは本開示のいくつかの実現例に係るSAOの後に適用されるCCSAOのシステム及びプロセスを示すブロック図である。いくつかの実施形態では、図6FはCCSAOの位置がSAOの後にあることが可能であることを示し、すなわち、VVC規格のCross-Component Adaptive Loop Filter(CCALF)の位置を示す。図6Gは本開示のいくつかの実現例に係れば、CCSAOのシステム及びプロセスがCCALFを用いずに独立して動作することができることを示すブロック図である。いくつかの実施形態では、SAO Y/Cb/CrをESAO、たとえばAVS3規格のESAOに置換することができる。
図6Hは本開示のいくつかの実現例に係るCCALFとパラレルに適用されるCCSAOのシステム及びプロセスを示すブロック図である。いくつかの実施形態では、図6HはCCSAOをCCALFとパラレルに適用することができることを示す。いくつかの実施形態では、図6Hにおいて、CCALF及びCCSAOの位置を変更することができる。いくつかの実施形態では、図6Aから図6Hにおいて、あるいは本開示にわたって、SAO Y/Cb/CrブロックをESAO Y/Cb/Cr(AVS3のESAO Y/Cb/Cr)又はCDEF(AV1のCDEF)に置換することができる。Y/Cb/Crを映像符号化領域でY/U/Vとも表記することができることに留意する。いくつかの実施形態では、映像がRGBフォーマットの映像である場合も、本開示ではYUV表記をGBRにそれぞれ対応させるだけでCCSAOを適用することができる。
いくつかの実施形態では、現在のクロマサンプル分類は同一位置にあるルマサンプルのSAOタイプ(エッジオフセット(EO)又はBO)、クラス及びカテゴリを再度用いたものである。対応するCCSAOオフセットを信号伝達したり、デコーダそのものから導出したりすることができる。たとえば、h_Yが同一位置にあるルマSAOオフセットであるとし、h_Cb及びh_CrがそれぞれCCSAO Cbオフセット及びCCSAO Crオフセットであるとする。h_Cb(又はh_Cr)=w*h_Yであり、wを限られたテーブルから選択することができる。たとえば、±1/4,±1/2,0,±1,±2,±4…などであり、|w|は2の累乗の値のみを含む。
いくつかの実施形態では、同一位置にあるルマサンプル(Y0)と近隣の8つのルマサンプルとの比較スコア[-8,8]が用いられ、これにより合計17個のクラスが得られる。
Initial Class=0
近隣の8つのルマサンプルにループ処理を適用(Yi,i=1~8)
Y0>Yiの場合 Class+=1
上記の場合以外の場合において、Y0<Yiの場合 Class-=1
いくつかの実施形態では、上述の分類方法を組み合せることができる。たとえば、多様性を高めるためにSAO BO(32個のバンド分類)と組み合せた比較スコアが用いられ、これにより合計17*32個のクラスが得られる。いくつかの実施形態では、CbとCrとに同じクラスを用いて複雑さを軽減したりビットを節減させたりすることができる。
図7は本開示のいくつかの実現例に係るCCSAOを用いるサンプルプロセスを示すブロック図である。特に、図7はCCSAOの入力によって垂直DBF及び水平DBFの入力を導入して、クラスの判定を単純化したり柔軟性を高めたりすることができることを示す。たとえば、Y0_DBF_V、Y0_DBF_H及びY0が、それぞれDBF_V、DBF_H及びSAOの入力での同一位置にあるルマサンプルであるとする。Yi_DBF_V、Yi_DBF_H及びYiがそれぞれDBF_V、DBF_H及びSAOの入力での近隣の8つのルマサンプルであり、i=1~8である。
Max Y0=max(Y0_DBF_V,Y0_DBF_H,Y0_DBF)
Max Yi=max(Yi_DBF_V,Yi_DBF_H,Yi_DBF)
また、max Y0及びmax YiをCCSAO分類に与える。
図8は本開示のいくつかの実現例に係る、CCSAOプロセスが垂直DBF及び水平DBFにインターリーブされることを示すブロック図である。いくつかの実施形態では、図6、図7及び図8のCCSAOブロックが、適当な選択がなされたものであることが可能である。たとえば、最初のCCSAO_VにY0_DBF_V及びYi_DBF_Vを用い(図6と同じサンプル処理を適用する)、その一方で、CCSAO入力としてDBF_V ルマサンプルの入力を用いる。
いくつかの実施形態において、実施されるCCSAOシンタックスが以下の表2に示されている。
いくつかの実施形態では、CCSAO Cbオフセット値及びCCSAO Crオフセット値の信号伝達について、1つの追加のクロマオフセットが信号伝達される場合、他のクロマ成分オフセットをプラス符号又はマイナス符号や、重み付けを用いて導出してビットのオーバーヘッドを節減することができる。たとえば、h_Cb及びh_CrがそれぞれCCSAO Cb及びCCSAO Crのオフセットであるとする。wを明示的に示した上で、この場合、限られた|w|候補が用いられかつw=±|w|であるが、h_Crを、h_Crそのものを明示的に示すことなくh_Cbから導出することができる。
h_Cr=w*h_Cb
図9は本開示のいくつかの実現例に係る、クロス成分相関を用いて映像信号を復号する典型的なプロセス900を示すフローチャートである。
映像デコーダ30が第1の成分と第2の成分とを含む映像信号を受信する(910)。いくつかの実施形態では、第1の成分は映像信号のルマ成分であり、第2の成分は映像信号のクロマ成分である。
映像デコーダ30が第2の成分に関連する複数のオフセットも受信する(920)。
その後、映像デコーダ30が第1の成分の特性測定値を利用して第2の成分に関連する分類カテゴリを取得する(930)。たとえば、図6では、まず、現在のクロマサンプル602が同一位置にあるルマサンプル604と近隣のルマサンプル606(白色)を用いて分類され、対応するCCSAOオフセット値が現在のクロマサンプルに加えられる。
映像デコーダ30が分類カテゴリにしたがって第2の成分の複数のオフセットから第1のオフセットをさらに選択する(940)。
映像デコーダ30が選択された第1のオフセットに基づいて第2の成分をさらに修正する(950)。
いくつかの実施形態では、第1の成分の特性測定値を利用して第2の成分に関連する分類カテゴリを取得すること(930)は、第1の成分のそれぞれのサンプルを利用して第2の成分の対応するサンプルの対応する分類カテゴリを取得することであって、第1の成分のそれぞれのサンプルが、第2の成分の対応するサンプルと同一位置にある、第1の成分の対応するサンプルである、ことを含む。たとえば、現在のクロマサンプル分類は同一位置にあるルマサンプルのSAOタイプ(EO又はBO)、クラス及びカテゴリを再度用いたものである。
いくつかの実施形態では、第1の成分の特性測定値を利用して第2の成分に関連する分類カテゴリを取得すること(930)は、第1の成分のそれぞれのサンプルを利用して第2の成分の対応するサンプルの対応する分類カテゴリを取得することであって、第1の成分のそれぞれのサンプルがデブロッキング処理がなされる前に再構成されるか、デブロッキング処理がなされた後に再構成される、ことを含む。いくつかの実施形態では、第1の成分はデブロッキングフィルタ(DBF)でデブロッキング処理がなされたものである。いくつかの実施形態では、第1の成分はルマデブロッキングフィルタ(DBF Y)でデブロッキング処理がなされたものである。たとえば、図6又は図7の代わりに、CCSAO入力がDBF Yの前にあることも可能である。
いくつかの実施形態では、特性測定値は、第1の成分のサンプル値の範囲をいくつかのバンドに分割し、第1の成分のサンプルの強度値に基づいてバンドを選択することによって導出される。いくつかの実施形態では、特性測定値はバンドオフセット(BO)から導出される。
いくつかの実施形態では、特性測定値は第1の成分のサンプルのエッジ情報の方向及び強さに基づいて導出される。いくつかの実施形態では、特性測定値はエッジオフセット(EO)から導出される。
いくつかの実施形態では、第2の成分を修正すること(950)は第2の成分に選択された第1のオフセットを直接加えることを含む。たとえば、対応するCCSAOオフセット値が現在のクロマ成分サンプルに加えられる。
いくつかの実施形態では、第2の成分を修正すること(950)は選択された第1のオフセットを第2のオフセットに対応させ、対応させられた第2のオフセットを第2の成分に加えることを含む。たとえば、CCSAO Cbオフセット値及びCCSAO Crオフセット値の信号伝達について、1つの追加のクロマオフセットが信号伝達される場合、他のクロマ成分オフセットをプラス符号又はマイナス符号や、重み付けを用いて導出してビットのオーバーヘッドを節減することができる。
いくつかの実施形態では、映像信号を受信すること(910)はCCSAOを用いて映像信号を復号する方法が連続パラメータセット(SPS)中の映像信号に対して有効にされるか否かを示すシンタックス要素を受信することを含む。いくつかの実施形態では、CCSAOがシーケンスレベルで有効にされるか否かをcc_sao_enabled_flagが示す。
いくつかの実施形態では、映像信号を受信すること(910)は、CCSAOを用いて映像信号を復号する方法がスライスレベルでの第2の成分に対して有効にされるか否かを示すシンタックス要素を受信することを含む。いくつかの実施形態では、CCSAOがCb又はCrにそれぞれのスライスで有効にされるか否かをslice_cc_sao_cb_flag又はslice_cc_sao_cr_flagが示す。
いくつかの実施形態では、第2の成分に関連する複数のオフセットを受信すること(920)は異なるコーディングツリーユニット(CTU)の異なるオフセットを受信することを含む。いくつかの実施形態では、CTUについて、オフセットの符号をcc_sao_offset_sign_flagが示し、現在のCTUのCCSAO Cbオフセット値及びCCSAO Crオフセット値をcc_sao_offset_absが示す。
いくつかの実施形態では、第2の成分に関連する複数のオフセットを受信すること(920)は、CTUの受信したオフセットがCTUの近隣のCTUのうちの1つのオフセットと同じか否かを示すシンタックス要素を受信することであって、近隣のCTUは左の近隣のCTUか上の近隣のCTUかのいずれかである、こと、を含む。たとえば、CCSAOオフセットが左のCTUからマージされるのか上のCTUからマージされるのかをcc_sao_merge_up_flagが示す。
いくつかの実施形態では、映像信号は第3の成分をさらに含み、CCSAOを用いて映像信号を復号する方法は、第3の成分に関連する第2の複数のオフセットを受信することと、第1の成分の特性測定値を利用して第3の成分に関連する第2の分類カテゴリを取得することと、第2の分類カテゴリにしたがって第3の成分の第2の複数のオフセットから第3のオフセットを選択することと、選択された第3のオフセットに基づいて第3の成分を修正することとをさらに含む。
図11は本開示のいくつかの実現例に係る、同一位置にあるルマ/クロマサンプル及び近隣のルマ/クロマサンプル(白色)のすべてをCCSAO分類に入れることができることを示すサンプルプロセスのブロック図である。図6A、図6B及び図11はCCSAO分類の入力を示している。図11中、現在のクロマサンプルは1104であり、クロス成分同一位置クロマサンプルは1102であり、同一位置ルマサンプルは1106である。
いくつかの実施形態において、分類子の例(C0)では分類に後述の図12の同一位置にあるルマ又はクロマサンプル値(Y0)(図6BのY4/U4/V4及び図6C)を用いる。band_numがルマダイナミックレンジ又はクロマダイナミックレンジの均等分割されたバンドの個数であるとし、bit_depthがシーケンスのビット深度であるとすると、現在のクロマサンプルのクラスインデックスの例は以下の通りである。
Class(C0)=(Y0*band_num)>>bit_depth
いくつかの実施形態では、分類で丸めを考慮に入れ、たとえば、以下の通りである。
Class(C0)=((Y0*band_num)+(1<<bit_depth))>>bit_depth
band_num及びbit_depthのいくつかの例が以下に表3において列挙されている。表3はバンドの個数が分類の例毎に異なる場合の3つの分類の例を示す。
いくつかの実施形態では、分類子がC0分類に異なるルマサンプル位置を用いる。図10Aは本開示のいくつかの実現例に係る、C0分類に異なるルマ(又はクロマ)サンプル位置を用いる分類子を示すブロック図であり、たとえば、C0分類にY0ではなく近隣のY7を用いる。
いくつかの実施形態では、異なる分類子を連続パラメータセット(SPS)/適応パラメータセット(APS)/ピクチャパラメータセット(PPS)/ピクチャヘッダ(PH)/スライスヘッダ(SH)/領域/コーディングツリーユニット(CTU)/コーディングユニット(CU)/サブブロック/サンプルレベルにおいて切り換えることができる。たとえば、図10では、以下の表4に示されているように、POC0にY0を用いる一方で、POC1にY7を用いる。
いくつかの実施形態において、図10Bは本開示のいくつかの実現例に係る、ルマ候補の異なる形状のいくつかの例を示す。たとえば、形状には制約を課すことができる。いくつかの例では、図10B(b)(c)(d)に示されているように、ルマ候補の総数が2の累乗でなければならない。いくつかの例では、図10B(a)(c)(d)(e)に示されているように、ルマ候補の個数がクロマサンプル(中央にある)に対して水平対称かつ垂直対称でなければならない。いくつかの実施形態では、2の累乗の制約と対称性の制約をクロマ候補にも適用することできる。図6B及び図6CのU/V部分が対称性の制約の例を示している。いくつかの実施形態では、異なるカラーフォーマットに分類子の異なる「制約」があることが可能である。たとえば、420カラーフォーマットでは、図6B及び図6Cに示されているようなルマ/クロマ候補が選択されて用いられる(3×3形状から1つの候補が選択される)一方で、444カラーフォーマットでは、選択されたルマ及びクロマ候補に図10B(f)が用いられ、422カラーフォーマットでは、ルマ候補に図10B(g)が用いられ(2つのクロマサンプルが4つのルマ候補を共有する)、クロマ候補に図10B(f)が用いられる。
いくつかの実施形態では、C0位置とC0 band_numとをSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて組み合せ、切り換えることができる。異なる組合せは以下の表5に示されている異なる分類子であることが可能である。
いくつかの実施形態では、同一位置にあるルマサンプル値(Y0)が、同一位置にあるルマサンプル及び近隣のルマサンプルに重み付けすることによって得られる値(Yp)に置換される。図12は本開示のいくつかの実現例に係る、同一位置にあるルマサンプル値を同一位置にあるルマサンプル及び近隣のルマサンプルに重み付けすることによって得られる値と置換することを用いる典型的な分類子を示す。同一位置にあるルマサンプル値(Y0)を、近隣のルマサンプルに重み付けすることによって得られる位相補正値(Yp)に置換することができる。異なるYpが異なる分類子であることが可能である。
いくつかの実施形態では、異なるYpが異なるクロマフォーマットに適用される。たとえば、図12では、(a)のYpが420のクロマフォーマットに用いられ、(b)のYpが422のクロマフォーマットに用いられ、Y0が444のクロマフォーマットに用いられる。
いくつかの実施形態では、別の分類子(C1)が、同一位置にあるルマサンプル(Y0)と近隣の8つのルマサンプルとの比較スコア[-8,8]であり、これにより、以下に示されているように合計17個のクラスが得られる。
Initial Class(C1)=0、近隣の8つのルマサンプルにループ処理を適用(Yi,i=1~8)
Y0>Yiの場合 Class+=1
上記の場合以外の場合において、Y0<Yiの場合 Class-=1
いくつかの実施形態では、C1の例が、閾値thが0である場合の以下の関数に等しい。
ClassIdx=Index2ClassTable(f(C,P1)+f(C,P2)+…+f(C,P8))
x-y>thの場合にはf(x,y)=1、x-y=thの場合にはf(x,y)=0、x-y<thの場合にはf(x,y)=-1
Index2ClassTableはルックアップテーブル(LUT)であり、Cは現在のサンプル又は同一位置にあるサンプルであり、P1~P8は近隣のサンプルである。
いくつかの実施形態では、C4分類子と同様に、1つ以上の閾値を予め規定し(たとえば、LUTに入れておく)、または、SPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルで信号伝達して差分を分類する(量子化する)のを容易にすることができる。
いくつかの実施形態では、変形例(C1’)では比較スコア[0,8]をカウントするだけであり、これにより、8つのクラスが得られる。(C1,C1’)は分類子グループであり、PH/SHレベルフラグを信号伝達してC1とC1’とを切り換えることができる。
Initial Class(C1’)=0、近隣の8つのルマサンプルにループ処理を適用(Yi,i=1~8)
Y0>Yiの場合 Class+=1
いくつかの実施形態では、変形例(C1s)は、M個の近隣のサンプルのうちの近隣のNを選択的に用いて比較スコアをカウントするものである。MビットのビットマスクをSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルで信号伝達して、比較スコアをカウントするためにどの近隣のサンプルが選択されるのかを示すことができる。ルマ分類子の例として図6Bを用い、すなわち、8つの近隣のルマサンプルが候補であり、8ビットのビットマスク(01111110)をPHで信号伝達してY1~Y6の6つのサンプルが選択されることを通知し、したがって、比較スコアは[-6,6]内にあり、これにより、13個のオフセットが得られる。分類子C1sに適当な選択がなされることで、オフセット信号伝達のオーバーヘッドと分類粒度とのトレードオフについてより多くの選択がエンコーダにもたらされる。
C1sと同様に、変形例(C1’)は比較スコア[0,+N]のみをカウントするものであり、上記のビットマスク01111110の例では[0,6]内にある比較スコアが得られ、これにより、7個のオフセットが得られる。
いくつかの実施形態では、異なる分類子を組み合せて汎用的な分類子を得る。たとえば、以下の表6-1に示されているように異なるピクチャ(異なるPOC値)に対して異なる分類子が適用される。
いくつかの実施形態において、別の分類子の例(C3)では表6-2に示されているように分類にビットマスクを用いる。10ビットのビットマスクをSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルで信号伝達して分類子を通知する。たとえば、ビットマスク11 1100 0000は、与えられた10ビットのルマサンプル値について、最上位ビット(MSB)である4ビットのみが分類に用いられることを意味し、このビットマスクによって合計16個のクラスが得られる。別の例であるビットマスク10 0100 0001は、3ビットのみが分類に用いられることを意味し、このビットマスクによって合計8つのクラスが得られる。
いくつかの実施形態では、ビットマスク長(N)をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて一定にしたり変更したりすることができる。たとえば、10ビットのシーケンスの場合、4ビットのビットマスク1110がピクチャ中のPHで信号伝達され、MSB 3ビット分であるb9,b8,b7が分類に用いられる。別の例としてはLSB上の4ビットのビットマスク0011があり、b0,b1が分類に用いられる。ビットマスク分類子がルマ分類又はクロマ分類に適用されることが可能である。ビットマスクNにMSBを用いるのかLSBを用いるのかをSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて不変にしたり可変にしたりすることができる。
いくつかの実施形態では、ルマ位置とC3ビットマスクとをSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて組み合せたり変更したりすることができる。異なる組合せが異なる分類子であることが可能である。
いくつかの実施形態では、ビットマスク制限である「1の最大個数」を、オフセットの対応する個数を制限するために適用することができる。たとえば、SPSでビットマスクの「1の最大個数」を4に制限すると、シーケンス中の最大オフセットは16になる。異なるPOCのビットマスクが異なることが可能であるが、「1の最大個数」が4つを超えることはない(クラス総数が16個を超えることはない)。「1の最大個数」の値をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルで信号伝達したり変更したりすることができる。
いくつかの実施形態では、図11に示されているように、他のクロス成分クロマサンプル、たとえばクロマサンプル1102やその近隣のサンプルをCCSAO分類に入れることもできる(たとえば現在のクロマサンプル1104について行なわれる)。たとえば、CrクロマサンプルをCCSAO Cb分類に入れることができる。CbクロマサンプルをCCSAO Cr分類に入れることができる。クロス成分クロマサンプルの分類子がルマクロス成分分類子と同じであることが可能であるし、本開示で説明されているそれ特有の分類子を有することができる。2つの分類子を組み合せて現在のクロマサンプルを分類する協働分類子を形成することができる。たとえば、クロス成分ルマサンプルとクロス成分クロマサンプルとを組み合せた協働分類子によって、以下の表6-3に示されているように合計16個のクラスが得られる。
上記のすべての分類(C0,C1,C1’,C2,C3)を組み合せることができる。たとえば、以下の表6-4を参照する。
いくつかの実施形態において、分類子の例(C2)では同一位置にあるルマサンプルと近隣のルマサンプルとの差分(Yn)を用いる。図12(c)はビット深度が10である場合の[-1024,1023]であるダイナミックレンジを持つYnの例を示す。C2 band_numがYnダイナミックレンジの均等分割されたバンドの個数であるとすると、
Class(C2)=(Yn+(1<<bit_depth)*band_num)>>(bit_depth+1)である。
いくつかの実施形態では、C0とC2とを組み合せて汎用的な分類子を得る。たとえば、以下の表7に示されているように異なるピクチャ(異なるPOC)に対して異なる分類子が適用される。
いくつかの実施形態では、上述のすべての分類子(C0,C1,C1’,C2)が組み合される。たとえば、以下の表8-1に示されているように異なるピクチャ(異なるPOC)に対して異なる分類子が適用される。
いくつかの実施形態において、以下の表8-2に示されているように、分類子の例(C4)では分類にCCSAO入力値と補償されるサンプル値との差分を用いる。たとえば、CCSAOがALFステージで適用される場合、現在の成分のALF前サンプル値とALF後サンプル値との差分が分類に用いられる。1つ以上の閾値を予め規定し(たとえば、ルックアップテーブル(LUT)に入れておく)、または、SPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルで信号伝達して差分を分類する(量子化する)のを容易にすることができる。C4分類子をC0 Y/U/V bandNumと組み合せて協働分類子を形成することができる(たとえば、表8-2に示されているPOC1の例)。
いくつかの実施形態において、異なる符号化モードで再構成画像に異なる歪み統計値が導入される場合があるので、分類子の例(C5)では「符号化情報」を用いてサブブロック分類を容易にする。CCSAOサンプルがそのサンプルの以前の符号化情報を用いて分類され、符号化情報の組合せによって分類子を形成することができ、たとえば、以下の表8-3に示されているように形成することができる。後述されている図30はC5についての符号化情報の異なるステージの別の例を示す。
いくつかの実施形態において、分類子の例(C6)ではYUVカラー変換値を分類に用いる。たとえば、現在のY成分を分類するために、1/1/1の同一位置にあるY/U/Vサンプル又は近隣のY/U/Vサンプルを、RGBに変換されたカラーになるように選択し、C3 bandNumを用いて、現在のY成分分類子になるようにR値を量子化する。
いくつかの実施形態では、現在の成分の分類の現在の成分情報のみを用いる他の分類子の例を、クロス成分分類として用いることができる。たとえば、図5及び表1に示されているように、EdgeIdxを導出し、現在のクロマサンプルを分類するのにルマサンプル情報及びeo-クラスが用いられる。クロス成分分類子として用いることもできる他の「非クロス成分」分類子はエッジ方向、ピクセル強度、ピクセル変化、ピクセルの不一致、画素のラプラシアンの和(pixel sum-of-Laplacian)、ソーベル演算子、コンパス演算子(compass operator)、ハイパスフィルタ値、ローパスフィルタ値などを含む。
いくつかの実施形態では、同じPOCで複数の分類子が用いられる。現在のフレームがいくつかの領域分に分割され、各領域で同じ分類子を用いる。たとえば、POC0で異なる3つの分類子が用いられ、以下の表9に示されているようにどの分類子が用いられるのか(0か1か2か)がCTUレベルで信号伝達される。
いくつかの実施形態では、複数の分類子の最大個数(複数の分類子は代替オフセット集合とも呼ばれる場合がある)をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて一定にしたり信号伝達したりすることができる。一例では、複数の分類子の一定(所定)の最大個数が4である。この場合、POC0で異なる4つの分類子が用いられ、どの分類子が用いられるのか(0か1か2か)がCTUレベルで信号伝達される。各ルマCTB又は各クロマCTBに用いられる分類子を示すのにTruncated-unary(TU)符号を用いることができる。たとえば、以下の表10に示されているように、TU符号が0である場合にはCCSAOが適用されず、TU符号が10である場合には集合0が適用され、TU符号が110である場合には集合1が適用され、TU符号が1110である場合には集合2が適用され、TU符号が1111である場合には集合3が適用される。固定長符号、CTBの分類子(オフセットセットインデックス)を示すのにゴロム・ライス符号及び指数ゴロム符号を用いることもできる。異なる3つの分類子がPOC1で用いられる。
1280×720シーケンスPOC0の場合のCb CTBオフセット集合インデックス及びCr CTBオフセット集合インデックスの例が説明されている(CTUサイズが128×128である場合、フレーム中のCTUの個数は10×6である)。POC0 Cbでは4つのオフセット集合を用い、POC0 Crでは1つのオフセット集合を用いる。以下の表11-1に示されているように、オフセット集合インデックスが0である場合にはCCSAOが適用されず、オフセット集合インデックスが1である場合には集合0が適用され、オフセット集合インデックスが2である場合には集合1が適用され、オフセット集合インデックスが3である場合には集合2が適用され、オフセット集合インデックスが4である場合には集合3が適用される。タイプは、選択された同一位置にあるルマサンプル(Yi)の位置を表わす。異なるオフセット集合は異なるタイプ、band_num及び対応するオフセットを有することができる。
いくつかの実施形態では、同一位置にあるY/U/Vサンプル/現在のY/U/Vサンプル及び近隣のY/U/Vサンプルを分類に一緒に用いる例が以下の表11-2に記載されている(Y/U/V成分毎の3成分協働bandNum分類)。POC0では、{2,4,1}のオフセット集合が{Y,U,V}にそれぞれ用いられる。各オフセット集合をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて適応するように変更することができる。異なるオフセット集合が異なる分類子を有することができる。たとえば、図6B及び図6Cで候補位置(candPos)が指示しているように、現在のY4ルマサンプルを分類するために、Y集合0が異なるbandNum{Y,U,V}={16,1,2}を用いて候補として{現在のY4,同一位置にあるU4,同一位置にあるV4}をそれぞれ選択する。選択された{Y,U,V}候補のサンプル値として{candY,candU,candV}を用いて、クラス総数は32であり、クラスインデックスの導出を以下のように示すことができる。
bandY=(candY*bandNumY)>>BitDepth,
bandU=(candU*bandNumU)>>BitDepth,
bandV=(candV*bandNumV)>>BitDepth,
classIdx=bandY*bandNumU*bandNumV
+bandU*bandNumV
+bandV
いくつかの実施形態では、協働分類子のclassIdxの導出を「or-shift」形式として表現して導出プロセスを簡略化することができる。たとえば、max bandNum={16,4,4}
classIdx=(bandY<<4)|(bandU<<2)|bandV
別の例はPOC1成分V集合1分類内の例である。この例では、bandNum={4,1,2}の場合のcandPos={近隣のY8,近隣のU3,近隣のV0}を用い、これにより、8つのクラスが得られる。
いくつかの実施形態では、同一位置にあるY/U/Vサンプル及び近隣のY/U/Vサンプルを現在のY/U/Vサンプル分類に一緒に用いる例がたとえば以下の表11-3に示されているように記載されている(Y/U/V成分毎の3成分協働edgeNum(C1s)及びbandNum分類)。エッジCandPosはC1s分類子に用いられる中央の位置であり、エッジビットマスクはC1s近隣サンプルアクティベーションインジケータであり、edgeNumはC1sクラスの対応する個数である。この例では、C1sがY分類子にのみ適用され(したがって、edgeNumがedgeNumYに等しい)、エッジcandPosは常にY4である(現在のサンプル位置/同一位置にあるサンプル位置)。一方で、近隣のサンプル位置としてエッジcandPosを用いる場合、C1sをY/U/V分類子に適用することができる。
Y C1sの比較スコアをdiffで表わす場合、classIdxの導出は以下の通りであることが可能である。
bandY=(candY*bandNumY)>>BitDepth,
bandU=(candU*bandNumU)>>BitDepth,
bandV=(candV*bandNumV)>>BitDepth,
edgeIdx=diff+(edgeNum>>1),
bandIdx=bandY*bandNumU*bandNumV
+bandU*bandNumV
+bandV
classIdx=bandIdx*edgeNum+edgeIdx
いくつかの実施形態では、最大band_num(bandNumY,bandNumU又はbandNumV)をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて一定にしたり信号伝達したりすることができる。たとえば、デコーダでフレーム毎に最大band_num=16を一定にすると、フレームでC0 band_numを通知するのに4ビットが信号伝達される。他の最大band_numの例が表12で後述されている。
いくつかの実施形態では、各集合(又は加えられたすべての集合)のクラス又はオフセットの最大個数(複数の分類子を一緒に用いる組合せ、たとえば、C1s edgeNum*C1bandNumY*bandNumU*bandNumV)をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて一定にしたり信号伝達したりすることができる。たとえば、加えられたすべての集合に対して最大値が一定にされ(class_num=256*4)、制約を確認するのにエンコーダ適合性確認又はデコーダ基準適合確認を用いることができる。
いくつかの実施形態では、制限、たとえば、band_num(bandNumY,bandNumU又はbandNumV)を2の累乗の値のみになるように制限する制限をC0分類に適用することができる。band_numを信号伝達で明示的に示す代わりに、シンタックスband_num_shiftを信号伝達する。デコーダではシフト演算を用いて乗算を回避することができる。異なるband_num_shiftを異なる成分に用いることができる。
Class(C0)=(Y0>>band_num_shift)>>bit_depth
別の演算の例は誤差を減らすために丸めを考慮に入れるものである。
Class(C0)=((Y0+(1<<(band_num_shift-1)))>>band_num_shift)>>bit_depth
たとえば、band_num_max(Y,U又はV)が16である場合、表13に示されているように、可能なband_num_shift候補はband_num=1,2,4,8,16に対応して0,1,2,3,4である。
いくつかの実施形態では、Cbに適用される分類子とCrに適用される分類子とは異なる。すべてのクラスのCbオフセットとCrオフセットとを個別に信号伝達することができる。たとえば、以下の表14に示されているように、信号伝達された異なるオフセットが異なるクロマ成分に適用される。
いくつかの実施形態では、最大オフセット値が連続パラメータセット(SPS)/適応パラメータセット(APS)/ピクチャパラメータセット(PPS)/ピクチャヘッダ(PH)/スライスヘッダ(SH)/領域/CTU/CU/サブブロック/サンプルレベルにおいて一定にされたり信号伝達されたりする。たとえば、最大オフセットは[-15,15]の間にある。異なる成分が異なる最大オフセット値を有することができる。
いくつかの実施形態では、オフセットの信号伝達に差分パルス符号変調(DPCM)を用いることができる。たとえば、オフセット{3,3,2,1,-1}を{3,0,-1,-1,-2}として信号伝達することができる。
いくつかの実施形態では、オフセットを次のピクチャ/スライスの再度使用のためにAPS又はメモリバッファに記憶することができる。記憶された以前のフレームオフセットのいずれが現在のピクチャに用いられるのかを示すためにインデックスを信号伝達することができる。
いくつかの実施形態では、Cbの分類子とCrの分類子とが同じである。すべてのクラスのCbオフセットとCrオフセットとを、たとえば以下の表15に示されているように一緒に信号伝達することができる。
いくつかの実施形態では、Cbの分類子とCrの分類子とが同じであることが可能である。異なる符号フラグを用いてすべてのクラスのCbオフセットとCrオフセットとを、たとえば以下の表16に示されているように一緒に信号伝達することができる。表16によると、Cbオフセットが(3,3,2,-1)である場合、導出されたCrオフセットは(-3,-3,-2,1)である。
いくつかの実施形態では、符号フラグをクラス毎に、たとえば以下の表17に示されているように信号伝達することができる。表17によると、Cbオフセットが(3,3,2,-1)である場合、それぞれの符号を含むフラグにしたがえば導出されたCrオフセットは(-3,3,2,1)である。
いくつかの実施形態では、Cbの分類子とCrの分類子とが同じであることが可能である。異なる重みを用いてすべてのクラスのCbオフセットとCrオフセットとを、たとえば以下の表18に示されているように一緒に信号伝達することができる。重み(w)を限られたテーブル、たとえば、±1/4,±1/2,0,±1,±2,±4…などから選択することができ、|w|は2の累乗の値のみを含む。表18によると、Cbオフセットが(3,3,2,-1)である場合、それぞれの符号を含むフラグにしたがえば導出されたCrオフセットは(-6,-6,-4,2)である。
いくつかの実施形態では、重みをクラス毎に、たとえば以下の表19に示されているように信号伝達することができる。表19によると、Cbオフセットが(3,3,2,-1)である場合、それぞれの符号を含むフラグにしたがえば導出されるCrオフセットは(-6,12,0,-1)である。
いくつかの実施形態では、複数の分類子が同じPOCで用いられる場合、異なるオフセット集合が個別に信号伝達されたり一緒に信号伝達されたりする。
いくつかの実施形態では、以前に復号されたオフセットを将来のフレームの使用に備えて記憶することができる。以前に復号されたオフセット集合のいずれが現在のフレームに用いられるのかを示すためにインデックスを信号伝達して、オフセットの信号伝達のオーバーヘッドを抑えることができる。たとえば、表20に示されているようにオフセット集合idx=0を信号伝達することでPOC0のオフセットをPOC2によって再度使用することができる。
いくつかの実施形態では、たとえば以下の表21で示されているようにCbの再度使用オフセットセットidxとCrの再度使用オフセットセットidxとが異なることが可能である。
いくつかの実施形態では、オフセットの信号伝達に、起点(start)と長さ(length)を含む追加のシンタックスを用いて、信号伝達のオーバーヘッドを抑えることができる。たとえば、band_num=256の場合、band_idx=37~44のオフセットのみが信号伝達される。表22-1の以下の例では、起点(start)のシンタックスと長さ(length)のシンタックスとの両方が8ビットの固定長でコード化され、これは当然band_numビットに合致する。
いくつかの実施形態では、CCSAOがすべてのYUV 3成分に適用される場合、同一位置にあるYUVサンプルと近隣のYUVサンプルとを分類に一緒に用いることができ、上述されているCb/Crのオフセット信号伝達方法のすべてをY/Cb/Crに拡張することができる。いくつかの実施形態では、異なる成分オフセット集合を個別に記憶して用いたり(各成分は独自の記憶された集合を有する)、一緒に記憶して用いたり(各成分は同じ記憶物を共有/再度使用する)することができる。個別の集合の例は以下の表22-2に示されている。
いくつかの実施形態では、シーケンスビット深度が10(又は特定のビット深度)を超える場合、信号伝達の前にオフセットを量子化することができる。デコーダ側では、以下の表23に示されているように、復号されたオフセットを適用する前にこれを逆量子化する。たとえば、12ビットのシーケンスの場合、復号されたオフセットを2だけ左にシフトする(逆量子化する)。
いくつかの実施形態では、オフセットをCcSaoOffsetVal=(1-2*ccsao_offset_sign_flag)*(ccsao_offset_abs<<(BitDepth-Min(10,BitDepth)))のように計算することができる。
いくつかの実施形態では、本記載でフィルタの強さの概念をさらに導入する。たとえば、分類子オフセットをサンプルに適用する前に重み付けをさらに行なうことができる。重み(w)を2の累乗の値のテーブルから選択することができる。たとえば、±1/4,±1/2,0,±1,±2,±4…などであり、|w|は2の累乗の値のみを含む。重みインデックスをSPS/APS/PPS/PH/SH/領域(Set)/CTU/CU/サブブロック/サンプルレベルで信号伝達することができる。量子化されたオフセットの信号伝達をこのような重みの適用の部分集合としてとらえることができる。図6Dに示されているように再帰的CCSAOが適用される場合、同様の重みインデックスメカニズムを第1のステージと第2のステージとの間に適用することができる。
いくつかの例で、異なる分類子に対する重み付け、すなわち、複数の分類子のオフセットを重みを組み合せて同じサンプルに適用することができる。同様の重みインデックスメカニズムを上記のように信号伝達で示すことができる。たとえば、
offset_final=w*offset_1+(1-w)*offset_2又は
offset_final=w1*offset_1+w2*offset_2+…
いくつかの実施形態では、サンプル処理は後述されているものである。R(x,y)がCCSAO前の入力ルマサンプル値又は入力クロマサンプル値であるとし、R’(x,y)がCCSAO後の出力ルマサンプル値又は出力クロマサンプル値であるとする。
offset=ccsao_offset[class_indexofR(x,y)]
R’(x,y)=Clip3(0,(1<<bit_depth)-1,R(x,y)+offset)
上記の式にしたがって、各ルマ又はクロマサンプル値R(x,y)を現在のピクチャの通知された分類子及び/又は現在のオフセット集合idxを用いて分類する。導出されたクラスインデックスの対応するオフセットを各ルマ又はクロマサンプル値R(x,y)に加える。クリップ関数Clip 3を(R(x,y)+offset)に適用して、出力ルマ又はクロマサンプル値R’(x,y)をビット深度ダイナミックレンジ(たとえば、range 0~(1<<bit_depth)-1)に入れる。
いくつかの実施形態では、境界処理は後述されているものである。分類に用いられる同一位置にあるルマ(クロマ)サンプル及び近隣のルマ(クロマ)サンプルのいずれかが現在のピクチャの外側にある場合には、CCSAOは現在のクロマ(ルマ)サンプルに適用されない。図13Aは本開示のいくつかの実現例に係る、分類に用いられる同一位置にあるルマ(クロマ)サンプル及び近隣のルマ(クロマ)サンプルのいずれかが現在のピクチャの外側にある場合にCCSAOが現在のクロマ(ルマ)サンプルに適用されないことを示すブロック図である。たとえば、図13A(a)では、分類子が用いられる場合、現在のピクチャの左1列のクロマ成分にCCSAOが適用されない。たとえば、C1’が用いられる場合、図13A(b)に示されているように、現在のピクチャの左1列と上1行のクロマ成分にCCSAOが適用されない。
図13Bは本開示のいくつかの実現例に係る、分類に用いられる同一位置にあるルマサンプル又はクロマサンプル及び近隣のルマサンプル又はクロマサンプルのいずれかが現在のピクチャの外側にある場合にCCSAOが現在のルマサンプル又は現在のクロマサンプルに適用されることを示すブロック図である。いくつかの実施形態では、分類に用いられる同一位置にあるルマサンプル又はクロマサンプル及び近隣のルマサンプル又はクロマサンプルのいずれかが現在のピクチャの外側にある場合、図13B(a)に示されているように処理漏れサンプルを反復して用いたり、図13B(b)に示されているように処理漏れサンプルにミラーパディングを行なって分類のためにサンプルを作成したりし、現在のルマサンプル又は現在のクロマサンプルにCCSAOを適用することができるというものが変形例である。いくつかの実施形態では、分類に用いられる同一位置にあるルマ(クロマ)サンプル及び近隣のルマ(クロマ)サンプルのいずれかが現在のサブピクチャ/スライス/タイル/パッチ/CTU/360仮想境界の外側にある場合、本出願で開示されている無効化/反復/ミラーピクチャ境界処理方法をサブピクチャ/スライス/タイル/CTU/360仮想境界に適用することもできる。
たとえば、ピクチャが1つ以上のタイル行と1つ以上のタイル列に分割される。タイルはピクチャの矩形領域をカバーする一連のCTUである。
スライスは整数個の完全なタイル、又はピクチャのタイル内の連続する整数個の完全なCTU行からなる。
サブピクチャは、ピクチャの矩形領域をまとまってカバーする1つ以上のスライスを含む。
いくつかの実施形態では、360度映像は球体上で撮像され、性質上「境界」がなく、投影ドメインで参照ピクチャの境界外にある参照サンプルを常に球体ドメインで近隣のサンプルから取得することができる。複数の面(face)で構成される投影フォーマットでは、いかなる種類のコンパクトなフレームパッキング構成が用いられる場合であっても、フレームパッキングが用いられたピクチャ中の隣接する2つ以上の面の間に不連続箇所が現れる。VVCでは、ループ内フィルタリング操作が無効にされている垂直及び/又は水平仮想境界が導入され、当該境界の位置がSPSかピクチャヘッダかのいずれかで信号伝達される。連続面の集合毎に1つずつ、2つのタイルを用いるのと比較して、面サイズがCTUサイズの倍数である必要がないので、360仮想境界の使用の仕方はより柔軟である。いくつかの実施形態では、垂直360仮想境界の最大個数が3であり、水平360仮想境界の最大個数も3である。いくつかの実施形態では、2つの仮想境界の距離がCTUサイズ以上であり、仮想境界の粒度が8ルマサンプル(たとえば8×8サンプル格子)である。
図14は本開示のいくつかの実現例に係れば、分類に用いられる、現在のクロマサンプルに対応する選択された同一位置にあるルマサンプル又は近隣のルマサンプルが仮想境界によって定められた仮想空間の外側にある場合、現在のクロマサンプルにCCSAOが適用されないことを示すブロック図である。いくつかの実施形態では、仮想境界(virtual boundary:VB)はピクチャフレーム内の空間を分離する仮想線である。いくつかの実施形態では、仮想境界(VB)が現在のフレームに適用される場合、仮想境界によって定められた仮想空間の外側にある選択された対応するルマ位置にあるクロマサンプルにCCSAOが適用されない。図14は9つのルマの位置候補をともなうC0分類子に仮想境界が用いられる例を示す。各CTUについて、対応する選択されたルマ位置が仮想境界によって囲まれる仮想空間の外側にあるクロマサンプルにはCCSAOが適用されない。たとえば、図14(a)では、クロマサンプル1402に対して選択されたY7ルマサンプル位置がフレームの最下部側から画素ライン4本の位置にある水平仮想境界1406の別の側にある場合、クロマサンプル1402にCCSAOが適用されない。たとえば、図14(b)では、クロマサンプル1404に対して選択されたY5ルマサンプル位置がフレームの右側から画素ラインy本の位置にある垂直仮想境界1408の別の側にある場合、クロマサンプル1404にCCSAOが適用されない。
図15は本開示のいくつかの実現例に係る、仮想境界の外側にあるルマサンプルに反復パディング又はミラーパディングを適用することができることを示す。図15(a)は反復パディングの例を示す。元のY7がVB1502の最下部側に位置する分類子になるように選択される場合、元のY7ルマサンプル値の代わりにY4ルマサンプル値が分類に用いられる(Y7位置にコピーされる)。図15(b)はミラーパディングの例を示す。Y7がVB1504の最下部側に位置する分類子になるように選択される場合、元のY7ルマサンプル値の代わりに、Y0ルマサンプルに対してY7値と対称になっているY1ルマサンプル値が分類に用いられる。パディング方法によってCCSAOが適用される可能性がより多くのクロマサンプルに与えられるので、高い符号化ゲインを実現することができる。
いくつかの実施形態では、CCSAOに必要なラインバッファを削減して境界処理状態の確認を単純化するために制限を適用することができる。図16は本開示のいくつかの実現例に係れば、9つの同一位置にあるルマサンプル及び近隣のルマサンプルのすべてが分類に用いられる場合、さらに1つのルマラインバッファ(すなわち、現在のVB1602よりも上のライン-5のラインルマサンプル全部)が必要である場合があることを示す。図10B(a)は、6つのルマ候補のみを分類に用いる例を示し、この例ではラインバッファが削減され、図13A及び図13Bのいかなる追加の境界確認も必要ではない。
いくつかの実施形態では、ルマサンプルをCCSAO分類に用いることで、ルマラインバッファが増加し、したがって、デコーダハードウェアの実施コストが増大する場合がある。図17は本開示のいくつかの実現例に係れば、9つのルマ候補のCCSAOがVB1702を横切ることでさらに2つのルマラインバッファが増える場合があるというAVSの図を示す。仮想境界(VB)1702よりも上のルマサンプル及びクロマサンプルについては、現在のCTU行でDBF/SAO/ALFが処理される。VB1702よりも下のルマサンプル及びクロマサンプルについては、次のCTU行でDBF/SAO/ALFが処理される。AVSのデコーダハードウェア設計では、ルマライン-1~-4のDBF前サンプル、ライン-5のSAO前サンプル及びクロマライン-3~-1のDBF前サンプル、ライン-4のSAO前サンプルが次のCTU行のDBF/SAO/ALF処理に備えてラインバッファとして記憶される。次のCTU行を処理する場合、ラインバッファにないルマサンプル及びクロマサンプルは利用できない。しかし、たとえば、クロマライン-3(b)位置で、次のCTU行でクロマサンプルが処理され、その一方で、SAO前ルマサンプルライン-7,-6及び-5がCCSAOで分類に必要である。SAO前ルマサンプルライン-7,-6はラインバッファにないので、これらは利用できない。また、SAO前ルマサンプルライン-7及び-6をラインバッファに加えることで、デコーダハードウェアの実施コストが増大する。いくつかの例では、ルマVB(ライン-4)とクロマVB(ライン-3)とが異なる場合がある(揃わない)。
図17と同様に、図18Aは本開示のいくつかの実現例に係る、9つのルマ候補のCCSAOがVB1802を横切ることでさらに1つのルマラインバッファが増える場合があるというVVCの図を示す。異なる規格でVBが異なる場合がある。VVCでは、ルマVBがライン-4であり、クロマVBがライン-2であるので、9つの候補のCCSAOによって1つのルマラインバッファが増える場合がある。
いくつかの実施形態では、第1の解決手段では、クロマサンプルのルマ候補のいずれかがVBを越えている(現在のクロマサンプルVBの外側にある)場合、CCSAOがクロマサンプルに対して無効にされる。図19A~図19Cは、本開示のいくつかの実現例に係れば、AVS及びVVCでは、クロマサンプルのルマ候補のいずれかがVB1902を越えている(現在のクロマサンプルVBの外側にある)場合、CCSAOがクロマサンプルに対して無効にされることを示す。図14は本実現例のいくつかの例も示す。
いくつかの実施形態では、第2の解決手段では、「VB横断(cross VB)」ルマ候補に対して、VBの近傍にありかつVBの別の側にあるルマライン、たとえば、ルマライン-4からCCSAOに反復パディングが用いられる。いくつかの実施形態では、VBよりも下にある近隣のものに最も近いルマからの反復パディングが「VB横断」クロマ候補に実施される。図20A~図20Cは、本開示のいくつかの実現例に係れば、AVS及びVVCでは、クロマサンプルのルマ候補のいずれかがVB2002を越えている(現在のクロマサンプルVBの外側にある)場合、反復パディングを用いてCCSAOがクロマサンプルに対して有効にされることを示す。図14(a)は本実現例のいくつかの例も示す。
いくつかの実施形態では、第3の解決手段では、「VB横断」ルマ候補についてルマVBよりも下からCCSAOにミラーパディングが用いられる。図21A~図21Cは、本開示のいくつかの実現例に係れば、AVS及びVVCでは、クロマサンプルのルマ候補のいずれかがVB2102を越えている(現在のクロマサンプルVBの外側にある)場合、ミラーパディングを用いてCCSAOがクロマサンプルに対して有効にされることを示す。図14(b)及び図13B(b)は本実現例のいくつかの例も示す。いくつかの実施形態では、第4の解決手段では、CCSAOを適用するのに「両側対称パディング(double sided symmetric padding)」が用いられる。図22A~図22Bは、本開示のいくつかの実現例に係れば、異なるCCSAO形状のいくつかの例(たとえば、9つのルマの候補(図22A)や8つのルマの候補(図22B))に両側対称パディングを用いてCCSAOが有効にされることを示す。クロマサンプルの同一位置にある中央のルマサンプルを含むルマサンプル集合について、ルマサンプル集合の一方の側がVB2202の外側にある場合、ルマサンプル集合の両側に両側対称パディングが適用される。たとえば、図22Aでは、ルマサンプルY0,Y1及びY2がVB2202の外側にあるので、Y0,Y1,Y2とY6,Y7,Y8との両方にY3,Y4,Y5を用いてパディングが行なわれる。たとえば、図22Bでは、ルマサンプルY0がVB2202の外側にあるので、Y0にY2を用いてパディングが行なわれ、Y7にY5を用いてパディングが行なわれる。
図18Bは、本開示のいくつかの実現例に係れば、同一位置にあるクロマサンプル又は近隣のクロマサンプルが現在のルマサンプルを分類するのに用いられる場合、選択されたクロマ候補がVBを越えている場合があり、追加のクロマラインバッファが必要である場合があるという図を示す。上述の同様の解決手段1~4を、問題を扱うのに用いることができる。
解決手段1は、ルマサンプルのクロマ候補のいずれかがVBを越えて別の側にあり得る場合にルマサンプルに対してCCSAOを無効にするものである。
解決手段2は、「VB横断」クロマ候補に対して、VBよりも下にある近隣のものに最も近いクロマから反復パディングを用いるものである。
解決手段3は、「VB横断」クロマ候補にクロマVBよりも下からミラーパディングを用いるものである。
解決手段4は「両側対称パディング」を用いるものである。CCSAOの同一位置にあるクロマサンプルの中央にある候補集合について、候補集合の一方の側がVBの外側にある場合、両側に両側対称パディングが適用される。
パディング方法によってCCSAOが適用される可能性がより多くのルマサンプル又はクロマサンプルに与えられるので、高い符号化ゲインを実現することができる。
いくつかの実施形態では、最下ピクチャ(又はスライス、タイル、ブリック(brick))境界のCTU行で、VBよりも下のサンプルが現在のCTU行で処理されるので、上記の特別な処理(解決手段1,2,3,4)は最下ピクチャ(又はスライス、タイル、ブリック)境界のCTU行で適用されない。たとえば、1920×1080のフレームが128×128のCTUに分割される。フレームは15×9CTU(切り上げ)を含む。最下CTU行は15番目のCTU行である。復号プロセスはCTU行毎のプロセスであり、各CTU行についてCTU毎のプロセスである。現在のCTU行と次のCTU行との水平CTU境界に沿ってデブロッキングを適用する必要がある。1つのCTU内の最下の4/2のルマ/クロマラインで、DBFサンプル(VVCの場合)が次のCTU行で処理され、現在のCTU行でCCSAOに利用できないので、CTB VBはCTU行毎に適用される。一方で、ピクチャフレームの最下CTU行で、最下の4/2のルマ/クロマラインのDBFサンプルが現在のCTU行で利用できる。これは、残った次のCTU行がなく、これらが現在のCTU行でDBF処理されるからである。
いくつかの実施形態では、図13~図22に示されているVBをサブピクチャ/スライス/タイル/パッチ/CTU/360仮想境界の境界に置換することができる。いくつかの実施形態では、図13~図22のクロマサンプル及びルマサンプルの位置を変更することができる。いくつかの実施形態では、図13~図22のクロマサンプル及びルマサンプルの位置を第1のクロマサンプル及び第2のクロマサンプルの位置に置換することができる。いくつかの実施形態では、CTU内側のALF VBは通常は水平であるといえる。いくつかの実施形態では、サブピクチャ/スライス/タイル/パッチ/CTU/360仮想境界の境界が水平であっても垂直であってもよい。
いくつかの実施形態では、図16で説明されているようにCCSAOに必要なラインバッファを削減して境界処理状態の確認を単純化するために制限を適用することができる。図23は本開示のいくつかの実現例に係る限られた個数のルマ候補を分類に用いる制限を示す。図23(a)は6つのルマ候補のみを分類に用いる制限を示す。図23(b)は4つのルマ候補のみを分類に用いる制限を示す。
いくつかの実施形態では、適用された領域が実施される。CCSAO適用領域の単位はCTBを用いるものであることが可能である。すなわち、オン/オフ制御、CCSAOパラメータ(分類、オフセット集合インデックスに用いられるオフセット、ルマ候補位置、band_num、ビットマスク…など)が1つのCTB内と同じである。
いくつかの実施形態では、適用された領域をCTB境界に揃えることができない。たとえば、適用された領域はクロマCTB境界と揃わず、ずれている。シンタックス(オン/オフ制御、CCSAOパラメータ)についてもCTB毎に信号伝達されるが、完璧に適用された領域がCTB境界と揃わない。図24は、本開示のいくつかの実現例に係れば、CCSAO適用領域がCTB/CTU境界2406と揃わないことを示す。たとえば、適用された領域がクロマCTB/CTU境界2406と揃わないが、左上にずれた(4,4)サンプルはVB2408と揃う。同じデブロッキングパラメータが8×8デブロッキングプロセス領域毎に用いられるので、この揃わないCTB境界設計はデブロッキングプロセスに有用である。
いくつかの実施形態では、表24に示されているように、CCSAO適用領域の単位(マスクサイズ)が様々な単位(CTBサイズよりも大きかったり小さかったりする単位)であることが可能である。異なる成分に対してマスクサイズが異なることが可能である。マスクサイズをSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルにおいて変更することができる。たとえば、一連のマスクオン/オフフラグとオフセット集合インデックスとをPHで信号伝達して各CCSAO領域情報を通知する。
いくつかの実施形態では、CCSAO適用領域のフレームの分割を変更しないようにすることができる。たとえば、フレームをN個の領域に分割する。図25は本開示のいくつかの実現例に係れば、CCSAO適用領域のフレームの分割を、CCSAOパラメータを用いて変更しないようにすることができることを示す。
いくつかの実施形態では、領域毎にその領域特有の領域オン/オフ制御フラグ及びCCSAOパラメータがあることが可能である。また、領域サイズがCTBサイズよりも大きい場合、CTBオン/オフ制御フラグと領域オン/オフ制御フラグとがあることが可能である。図25(a)及び(b)はフレームをN個の領域に分割するいくつかの例を示す。図25(a)は4つの領域の垂直分割を示す。図25(b)は4つの領域の正方形分割を示す。いくつかの実施形態では、すべてで制御フラグがオンであるピクチャレベルCTB(ph_cc_sao_cb_ctb_control_flag/ph_cc_sao_cr_ctb_control_flag)と同様に、領域オン/オフ制御フラグがオフである場合、CTBオン/オフフラグをさらに信号伝達することができる。それ以外の場合、CTBフラグをさらに信号伝達せずに、この領域内のすべてのCTBにCCSAOが適用される。
いくつかの実施形態では、CCSAOが適用された異なる領域で同じ領域オン/オフ制御及びCCSAOパラメータを共有することができる。たとえば、図25(c)では、領域0~2で同じパラメータを共有し、領域3~15で同じパラメータを共有する。図25(c)は領域のオン/オフ制御フラグ及びCCSAOパラメータをヒルベルトスキャン順で信号伝達することができることも示している。
いくつかの実施形態では、CCSAO適用領域の単位をピクチャ/スライス/CTBレベルから四分木分割/二分木分割/三分木分割することができる。CTB分割と同様に、一連の分割フラグを信号伝達してCCSAO適用領域の分割を通知する。図26は本開示のいくつかの実現例に係れば、CCSAO適用領域をフレーム/スライス/CTBレベルから二分木(BT)分割/四分木(QT)分割/三分木(TT)分割することができることを示す。
図27は本開示のいくつかの実現例に係れば、ピクチャフレーム内で複数の分類子が用いられ、異なるレベルで変更されることを示すブロック図である。いくつかの実施形態では、複数の分類子が1つのフレームで用いられる場合、分類子集合インデックスを適用する方法の方法をSPS/APS/PPS/PH/SH/領域/CTU/CU/サブブロック/サンプルレベルで変更することができる。たとえば、以下の表25に示されているように、フレームで分類子の4つ集合が用いられ、PHで変更される。図27(a)及び(c)は初期設定の変更のない領域分類子を示す。図27(b)は分類子集合インデックスがマスク/CTBレベルで信号伝達されることを示し、0はこのCTBに対してCCSAOがオフであることを示し、1~4は集合インデックスを示す。
いくつかの実施形態では、初期設定の領域の場合において、この領域のCTBで初期設定の集合インデックス(たとえば、領域レベルフラグは0である)を用いず、このフレームで他の分類子集合を用いるとき、領域レベルフラグを信号伝達することができる。たとえば、初期設定の集合インデックスが用いられる場合には領域レベルフラグは1である。たとえば、4つの領域の正方形分割では、以下の表26に示されているように以下の分類子集合が用いられる。
図28は本開示のいくつかの実現例に係れば、CCSAO適用領域の分割が動的な分割であり、ピクチャレベルで変更されることが可能であることを示すブロック図である。たとえば、図28(a)は3つのCCSAOオフセット集合がこのPOC(set_num=3)で用いられることを示すので、ピクチャフレームが3つの領域に垂直分割される。図28(b)は4つのCCSAOオフセット集合がこのPOC(set_num=4)で用いられることを示すので、ピクチャフレームが4つの領域に水平分割される。図28(c)は3つのCCSAOオフセット集合がこのPOC(set_num=3)で用いられることを示すので、ピクチャフレームが3つの領域にラスタ分割される。領域毎に領域のすべてでオンである、その領域固有のフラグがあり、各CTBのオン/オフ制御ビットを節減することができる。領域の個数は信号伝達されたピクチャset_numに依存する。
CCSAO適用領域はブロックの内側の符号化情報(サンプル位置、サンプル符号化モード、ループフィルタパラメータなど)にしたがう特定の領域であることが可能である。たとえば、1)サンプルがスキップモードで符号化される場合にだけ、CCSAO適用領域を適用することができる、又は2)CCSAO適用領域が、CTU境界に沿ったN個のサンプルのみを含む、又は3)CCSAO適用領域がフレーム内の8×8格子上のサンプルのみを含む、又は4)CCSAO適用領域がDBFでフィルタリングされたサンプルのみを含む、又は5)CCSAO適用領域がCUの上のM個の行及び左のN個の行のみ含む。異なる適用された領域で異なる分類子を用いることができる。異なる適用された領域で異なる分類子を用いることができる。たとえば、CTUにおいて、スキップモードでC1を用い、8×8格子でC2を用い、スキップモード及び8×8格子でC3を用いる。たとえば、CTUにおいて、スキップモードで符号化されたサンプルにC1を用い、CU中央にあるサンプルにC2を用い、CU中央においてスキップモードで符号化されるサンプルにC3を用いる。図29は、本開示のいくつかの実現例に係れば、CCSAO分類子について現在の符号化情報又はクロス成分符号化情報を考慮に入れることができることを示す図である。たとえば、異なる符号化モード/パラメータ/サンプル位置によって異なる分類子を形成することができる。異なる符号化情報を組み合せて協働分類子を形成することができる。異なる領域で異なる分類子を用いることができる。図29は適用された領域の別の例も示す。
いくつかの実施形態では、実施されるCCSAOシンタックスが以下の表27に示されている。いくつかの例では、各々のシンタックス要素の2値化を変更することができる。AVS3では、用語 パッチはスライスに類似しており、patch header はスライスヘッダに類似している。FLCは固定長符号を表わす。TUはTruncated-unary符号を表わす。EGkはk次の指数ゴロム符号(exponential-golomb code with order k)を表わし、kを一定にすることができる。SVLCは符合付きのEG0を表わす。UVLCは符合なしEG0を表わす。
高レベルのフラグがオフである場合、低レベルのフラグをフラグのオフ状態から推測することができ、低レベルのフラグを信号伝達する必要がない。たとえば、このピクチャでph_cc_sao_cb_flagがfalseである場合、ph_cc_sao_cb_band_num_minus1,ph_cc_sao_cb_luma_type,cc_sao_cb_offset_sign_flag,cc_sao_cb_offset_abs,ctb_cc_sao_cb_flag,cc_sao_cb_merge_left_flag及びcc_sao_cb_merge_up_flagが存在せず、これらはfalseであると推測される。
いくつかの実施形態では、表28に示されているように、SPS ccsao_enabled_flagにSPS SAO有効フラグを条件として課す。
いくつかの実施形態では、ph_cc_sao_cb_ctb_control_flag,ph_cc_sao_cr_ctb_control_flagはCb/Cr CTBオン/オフ制御粒度を有効にするか否かを示す。ph_cc_sao_cb_ctb_control_flag及びph_cc_sao_cr_ctb_control_flagが有効にされる場合、ctb_cc_sao_cb_flag及びctb_cc_sao_cr_flagをさらに信号伝達することができる。それ以外の場合、現在のピクチャにCCSAOが適用されるか否かが、ph_cc_sao_cb_flag,ph_cc_sao_cr_flagに依存し、ctb_cc_sao_cb_flag及びctb_cc_sao_cr_flagをCTBレベルでさらに信号伝達することはない。
いくつかの実施形態では、ph_cc_sao_cb_type及びph_cc_sao_cr_typeについて、中央の同一位置にあるルマ位置がクロマサンプルの分類に用いられるか(図10のY0の位置)否かを識別するためにフラグをさらに信号伝達してビットのオーバーヘッドを抑えることができる。同様に、cc_sao_cb_type及びcc_sao_cr_typeがCTBレベルで信号伝達される場合、フラグを同じメカニズムを用いてさらに信号伝達することができる。たとえば、C0ルマ位置候補の個数が9である場合、以下の表29に示されているように、中央の同一位置にあるルマ位置が用いられるか否かを識別するためにcc_sao_cb_type0_flagをさらに信号伝達する。中央の同一位置にあるルマ位置が用いられない場合、残りの8つの近隣のルマ位置のいずれが用いられるのかを示すのにcc_sao_cb_type_idcが用いられる。
以下の表30は1つの分類子(set_num=1)又は複数の分類子(set_num>1)がフレームで用いられるAVSの例を示す。シンタックス表記を上記で用いられている表記に対応させることができる点に留意する。
各領域が独自の集合を有する図25又は図27と組み合せる場合、以下の表31に示されているように、シンタックスの例が領域オン/オフ制御フラグ(picture_ccsao_lcu_control_flag[compIdx][setIdx])を含むことができる。
いくつかの実施形態では、高レベルのシンタックスについて、pps_ccsao_info_in_ph_flag及びgci_no_sao_constraint_flagを加えることができる。
いくつかの実施形態では、1に等しいpps_ccsao_info_in_ph_flagが、CCSAOフィルタ情報がPHシンタックス構造に存在し得、PHシンタックス構造を含まないPPSを指すスライスヘッダに存在し得ないことを示す。0に等しいpps_ccsao_info_in_ph_flagが、CCSAOフィルタ情報がPHシンタックス構造に存在せず、PPSを指すスライスヘッダに存在し得ることを示す。存在しない場合、pps_ccsao_info_in_ph_flagの値が0に等しいと推測される。
いくつかの実施形態では、1に等しいgci_no_ccsao_constraint_flagが、OlsInScope中のすべてのピクチャのsps_ccsao_enabled_flagが0に等しいことを示す。0に等しいgci_no_ccsao_constraint_flagはこのような制約を課さない。いくつかの実施形態では、映像のビットストリームは規則にしたがう1つ以上の出力レイヤ集合(output layer set:OLS)を備える。本記載の例では、OlsInScopeはスコープ内にある1つ以上のOLSを指す。いくつかの例では、profile_tier_level()シンタックス構造によってレベル情報が提供され、適宜、プロファイル、層、サブプロファイルや、OlsInScopeがしたがう汎用的な制約情報が提供される。profile_tier_level()シンタックス構造がVPSに含まれる場合、OlsInScopeはVPSによって指定された1つ以上のOLSである。profile_tier_level()シンタックス構造がSPSに含まれる場合、OlsInScopeは、SPSを指す層のうちの最下層である層のみを含むOLSであり、この最下層は独立した層である。
いくつかの実施形態では、イントラ及びインタ予測後SAOフィルタへの拡張が以下でさらに示されているものである。いくつかの実施形態では、本開示で開示されているSAO分類方法を予測後フィルタとして用いることができ、予測はイントラブロックコピーなどのイントラ予測ツール、インタ予測ツールやその他予測ツールであることが可能である。図30は本開示のいくつかの実現例に係れば、本開示で開示されているSAO分類方法が予測後フィルタとして用いられることを示すブロック図である。
いくつかの実施形態では、Y,U及びVの成分毎に、対応する分類子が選択される。さらに、成分予測サンプル毎に、まず分類され、対応するオフセットが加えられる。たとえば、成分毎に現在のサンプル及び近隣のサンプルを分類に用いることができる。以下の表32に示されているように、Yでは現在のYサンプル及び近隣のYサンプルを用い、U/Vでは現在のU/Vサンプルを分類に用いる。図31は本開示のいくつかの実現例に係れば、予測後SAOフィルタについて成分毎に現在のサンプル及び近隣のサンプルを分類に用いることができることを示すブロック図である。
いくつかの実施形態では、洗練させられた予測サンプル(Ypred’,Upred’,Vpred’)が、対応するクラスオフセットを加えることによって更新され、その後のイントラ予測、インタ予測やその他予測に用いられる。
Ypred’=clip3(0,(1<<bit_depth)-1,Ypred+h_Y[i])
Upred’=clip3(0,(1<<bit_depth)-1,Upred+h_U[i])
Vpred’=clip3(0,(1<<bit_depth)-1,Vpred+h_V[i])
いくつかの実施形態では、クロマU成分及びクロマV成分について、現在のクロマ成分の他に、さらに別のオフセット分類にクロス成分(Y)を用いることができる。追加のクロス成分オフセット(h’_U,h’_V)をたとえば以下の表33に示されているように現在の成分オフセット(h_U,h_V)に加えることができる。
いくつかの実施形態では、洗練させられた予測サンプル(Upred’’,Vpred’’)が、対応するクラスオフセットを加えることによって更新され、その後のイントラ予測、インタ予測やその他予測に用いられる。
Upred’’=clip3(0,(1<<bit_depth)-1,Upred’+h’_U[i])
Vpred’’=clip3(0,(1<<bit_depth)-1,Vpred’+h’_V[i])
いくつかの実施形態では、イントラ予測及びインタ予測で異なるSAOフィルタオフセットを用いることができる。
図32は本開示のいくつかの実現例に係るクロス成分相関を用いて映像信号を復号する典型的なプロセス3200を示すフローチャートである。
映像デコーダ30(図3に示されているような映像デコーダ)が階層構造の第1のレベルに関連する第1のシンタックス要素を、階層構造を持つ映像ビットストリームから受け取る(3210)。
クロス成分サンプル適応オフセット(CCSAO)フィルタ情報が第1のレベルに存在することを第1のシンタックス要素が示すとの判断にしたがって、映像デコーダ30が共同でCCSAOフィルタ情報にしたがって、第1のレベルの下の1つ以上の領域を映像ビットストリームから再構成する(3220)。
CCSAOフィルタ情報が第1のレベルに存在しないことを第1のシンタックス要素が示すとの判断にしたがって、映像デコーダ30が階層構造の第2のレベルに存在するCCSAOフィルタ情報に個別にしたがって1つ以上の領域を映像ビットストリームから再構成する(3230)。
いくつかの実施形態では、映像ビットストリームが第1の成分と第2の成分とを備える。いくつかの実施形態では、CCSAOフィルタ情報にしたがって1つ以上の領域を映像ビットストリームから再構成することは、適用されているCCSAOフィルタに応じて、映像デコーダ30がCCSAOフィルタ情報にしたがって、第2の成分のそれぞれのサンプルに関連する第1の成分の1つ以上のサンプルの集合から第2の成分の分類子を判定することを含み、映像デコーダ30は分類子にしたがって映像ビットストリームの、1つ以上の領域のうちの領域内の第2の成分のそれぞれのサンプルの値を修正するか否かを判断し、映像デコーダ30は分類子にしたがって領域内の第2の成分のそれぞれのサンプルの値を修正するとの判断に応じて、分類子にしたがって第2の成分のそれぞれのサンプルのサンプルオフセットを判定し、映像デコーダ30は判定されたサンプルオフセットに基づいて第2の成分のそれぞれのサンプルの値を修正する。
たとえば、1に等しいpps_ccsao_info_in_ph_flagが、CCSAOフィルタ情報がPHシンタックス構造に存在し得、PHシンタックス構造を含まないPPSを指すスライスヘッダに存在し得ないことを示す。0に等しいpps_ccsao_info_in_ph_flagが、CCSAOフィルタ情報がPHシンタックス構造に存在せず、PPSを指すスライスヘッダに存在し得ることを示す。
いくつかの実施形態では、階層構造の第2のレベルに存在するCCSAOフィルタ情報に個別にしたがって1つ以上の領域を映像ビットストリームから再構成すること(3230)は、第1のレベルの下の階層構造の第2のレベルに関連する第2のシンタックス要素を映像ビットストリームから受け取ることと、CCSAOフィルタ情報が第2のレベルに存在することを第2のシンタックス要素が示すとの判断にしたがって、1つ以上の領域のそれぞれの領域の階層構造の第2のレベルに存在するそれぞれのCCSAOフィルタ情報に個別にしたがって1つ以上の領域を映像ビットストリームから再構成することとを含む。たとえば、0に等しいpps_ccsao_info_in_ph_flagが、CCSAOフィルタ情報がPHシンタックス構造に存在せず、PPSを指すスライスヘッダに存在し得ることを示す。
いくつかの実施形態では、階層構造の第1のレベルが、ピクチャパラメータセット(PPS)を指すピクチャヘッダ(PH)シンタックス構造である。
いくつかの実施形態では、階層構造の第2のレベルが、PPSを指すスライスヘッダ(SH)シンタックス構造である。
いくつかの実施形態では、CCSAOフィルタ情報は、CCSAOが有効にされるか否かを示すシンタックス要素と、以前に復号されたオフセット集合のいずれが用いられるかを示すシンタックス要素と、コーディングツリーブロック(CTB)レベルで成分オン/オフ制御を有効にするか否かを示すシンタックス要素と、対応するクラスの成分のバンド数を示すシンタックス要素と、対応するクラスの成分のオフセット集合数を示すシンタックス要素と、対応するクラスの成分のエッジ方向を示すシンタックス要素と、現在の成分で他の成分を分類に用いることができるか否かを示すシンタックス要素と、対応するクラスの成分オフセット値を示すシンタックス要素と、ピクチャ/スライスに用いられる代替集合の個数を示すシンタックス要素と、分類子候補位置を示すシンタックス要素とからなる群から選択される1つ以上を含む。
いくつかの実施形態では、CCSAOフィルタ情報は、対応するクラスの成分オフセット符号値を示すシンタックス要素と、対応するクラスの成分オフセット絶対値を示すシンタックス要素とをさらに含み、対応するクラスの成分オフセット符号値を示すシンタックス要素は、対応するクラスの成分オフセット絶対値を示すシンタックス要素がゼロでないとの判断に応じてビットストリームから復号される。たとえば、offset_sign_flagが、(offset_abs!=0)の場合に復号される。
いくつかの実施形態では、映像信号を復号するプロセス3200では、映像デコーダ30が第3のシンタックス要素を映像ビットストリームから受け取り、映像ビットストリーム中の所定の出力レイヤ集合(OLS)中のピクチャにCCSAOフィルタが有効とされないことを制約が含むことを第3のシンタックス要素が示すとの判断にしたがって、映像デコーダ30が制約付きで映像ビットストリームの、1つ以上の領域を再構成し、制約が適用されないことを第3のシンタックス要素が示すとの判断にしたがって、映像デコーダ30が制約なしで映像ビットストリームの、1つ以上の領域を再構成する。たとえば、1に等しいgci_no_ccsao_constraint_flagが、OlsInScope内のすべてのピクチャのsps_ccsao_enabled_flagが0に等しいことを示す。たとえば、0に等しいgci_no_ccsao_constraint_flagはこのような制約を課さない。
いくつかの実施形態では、映像ビットストリームが第3の成分をさらに含み、第1の成分、第2の成分及び第3の成分の各々がYUV成分の1つ又はGBR成分の1つから選択される。たとえば、映像がRGBフォーマットである場合も、YUV表記をGBRにそれぞれ対応させるだけでCCSAOを適用することができる。
いくつかの実施形態では、分類子にしたがって第2の成分のそれぞれのサンプルのサンプルオフセットを判定することは、分類子にしたがって第2の成分のそれぞれのサンプルの重み付けがなされたサンプルオフセットを判定することを含む。たとえば、分類子オフセットに対して、サンプルに適用する前に重み付けを行なうことができる。
いくつかの実施形態では、分類子にしたがって第2の成分のそれぞれのサンプルのサンプルオフセットを判定することは、1つ以上の分類子の重み付けがなされたサンプルオフセットにしたがって第2の成分のそれぞれのサンプルのサンプルオフセットを判定することを含む。
図33はユーザインタフェイス3350に接続されたコンピューティング環境3310を示す。コンピューティング環境3310はデータ処理サーバの一部であることが可能である。コンピューティング環境3310はプロセッサ3320、メモリ3330及び入力/出力(I/O)インタフェイス3340を含む。
通常、プロセッサ3320は表示、データ取得、データ通信や画像処理に関連する動作などのコンピューティング環境3310の動作全体を制御する。プロセッサ3320は上記の方法のステップの全部又は一部を実行するための指示を実行する1つ以上のプロセッサを含んでもよい。さらに、プロセッサ3320はプロセッサ3320と他の構成要素とのやり取りを促進する1つ以上のモジュールを含んでもよい。プロセッサは中央処理装置(CPU)、マイクロプロセッサ、シングルチップマシン、画像処理装置(GPU)などであってもよい。
メモリ3330はコンピューティング環境3310の動作をサポートするための様々な種類のデータを記憶するように構成されている。メモリ3330は所定のソフトウェア3332を含んでもよい。このようなデータの例には、コンピューティング環境3310で運用されるあらゆるアプリケーションや方法のための指示、映像データセット、画像データなどが含まれる。メモリ3330を、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、プログラマブル読み出し専用メモリ(PROM)、読み出し専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気又は光学ディスクなどのあらゆる種類の揮発又は不揮発メモリデバイスやこれらの組合せを用いて実施してもよい。
I/Oインタフェイス3340はプロセッサ3320と、キーボード、クリックホイール、ボタンなどの周辺インタフェイスモジュールとの間のインタフェイスを実現する。ボタンはホームボタン、スタートスキャンボタンやストップスキャンボタンを含んでもよいが、これらに限定されない。I/Oインタフェイス3340をエンコーダ及びデコーダに接続することができる。
一実施形態では、上記の方法を実行するのに用いられ、コンピューティング環境3310のプロセッサ3320によって実行可能なたとえばメモリ3330中の複数のプログラムを備える非一時的コンピュータ可読記憶媒体も提供される。これの代わりに、非一時的コンピュータ可読記憶媒体は、映像データを復号する際にデコーダ(たとえば、図3の映像デコーダ30)によって用いられるたとえば上述の符号化方法を用いてエンコーダ(たとえば、図2の映像エンコーダ20)によって生成される符号化された映像情報(たとえば、1つ以上のシンタックス要素を備える映像情報)を備えるビットストリーム又はデータストリームを記憶していてもよい。非一時的コンピュータ可読記憶媒体はたとえば、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ記憶デバイスなどであってもよい。
一実施形態では、1つ以上のプロセッサ(たとえば、プロセッサ3320)と、1つ以上のプロセッサによって実行可能な複数のプログラムを記憶している非一時的コンピュータ可読記憶媒体、すなわちメモリ3330とを備えるコンピューティングデバイスも提供され、1つ以上のプロセッサは、複数のプログラムの実行の際に上記の方法を実行するように構成されている。
一実施形態では、上記の方法を実行するのに用いられ、コンピューティング環境3310のプロセッサ3320によって実行可能なたとえばメモリ3330中の複数のプログラムを備えるコンピュータプログラムプロダクトも提供される。たとえば、コンピュータプログラムプロダクトは非一時的コンピュータ可読記憶媒体を含んでもよい。
一実施形態では、コンピューティング環境3310を上記の方法を実行するために1つ以上のASIC、DSP、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、FPGA、GPU、コントローラ、マイクロコントローラ、マイクロプロセッサやその他電子コンポネントを用いて実施してもよい。
さらに別の実施形態は様々な他の実施形態で組み合されたりその他再配置されたりする上記の実施形態の様々な部分集合も含む。
1つ以上の例では、説明されている機能をハードウェア、ソフトウェア、ファームウェアやこれらのあらゆる組合せで実施してもよい。ソフトウェアで実施される場合、機能を1つ以上の指示やコードとしてコンピュータ可読媒体に記憶したりコンピュータ可読媒体を用いて送ったりしてハードウェアベースの処理部によって実行してもよい。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、又はある場所から別の場所にたとえば通信プロトコルにしたがってコンピュータプログラムを移動させるのを促進するあらゆる媒体を含む通信媒体を含んでもよい。このようにして、コンピュータ可読媒体は(1)非一時的である有形のコンピュータ可読記憶媒体、又は(2)信号や搬送波などの通信媒体にほぼ対応することができる。データ記憶媒体は、本出願で説明されている実現例を実施するための指示、コード及び/又はデータ構造を取得するために1つ以上のコンピュータや1つ以上のプロセッサによってアクセス可能であるあらゆる入手可能な媒体であってもよい。コンピュータプログラムプロダクトはコンピュータ可読媒体を含んでもよい。
本明細書中の実現例の説明で用いられている用語は特定の実現例のみを説明するためのものであり、請求項の範囲を限定することを意図するものではない。実現例の説明と添付の請求項とで用いられる場合、単数形「a」、「an」、及び「the」は、文脈上明確に別段の記載がない限り、複数形も含むことを意図するものである。本出願で用いられている用語「及び/又は」は、関連する列挙された事物の1つ以上の、あらゆる可能な組合せを指し、含むことも分かる。用語「含む」及び/又は「備える」は、本出願で用いられる場合、記載されている特徴、要素及び/又は構成要素の存在を示す一方で、1つ以上の他の機能、要素、構成要素及び/又はこれらの集団の存在又は付加を排除するものではないことがさらに分かる。
本出願では、第1、第2などの用語を用いて様々な要素を説明している場合があるが、当該要素は当該用語によって当然限定されないことも分かる。当該用語はある要素を別の要素と区別するのに用いられるのにすぎないものである。たとえば、実現例の範囲から逸脱しない範囲で、第1の電極を第2の電極と表記することができ、同様に、第2の電極を第1の電極と表記することもできる。第1の電極と第2の電極とは両方とも電極であるが、これらは同じ電極ではない。
単数形又は複数形で「一例」、「例」、「典型的な例」などと本明細書にわたって記載されているが、これは、例に関連して説明されている1つ以上の特定の特徴、構造や特性が本開示の少なくとも1つの例に含まれることを意味する。したがって、本明細書にわたって様々な箇所で単数形又は複数形で「一例では」や「例では」、「典型的な例では」などの語句が出現する場合、必ずしも出現のすべてが同じ例にあてはまらない。さらに、1つ以上の例における特定の特徴、構造や特性が、任意の適切な仕方で組み合せたものを含んでもよい。
本出願の説明は例示及び説明を目的として記載されており、限定列挙されたり開示されている形態に限定されたりすることを意図しているものではない。上述の説明及び関連する図面で提示されている教示の恩恵を受ける当業者には多くの修正、変形及び別の実現例が明らかである。実施形態は、本発明の原理、実施上の使用を最も良く説明し、他の当業者が様々な実現例の発明を理解することができるようにし、基礎となる原理と、企図される特定の使用に適するように様々な修正を加えた様々な実現例とを最大限に利用するように選択され、説明されたものである。したがって、請求項の範囲は開示されている実現例の特定の例に限定されず、修正例及び他の実現例が添付の請求項の範囲に含まれるように意図されるものであることが分かる。