以下、本出願の実施形態の図面を参照しながら本出願の実施形態の技術案を明晰に、全面的に説明する。明細書に記載される具体的な実施形態はただ本出願を説明するために用いられ、本出願を限定するものではない。また、説明を容易にするために、図面は本出願に関連する部分のみを示している。
現在、プロックに基づいた混合符号化フレームワークが汎用のビデオ符号化・復号化規格に用いられている。ビデオ画像における各画像(フレーム)は、同一サイズの正方形(例えば、128×128、64×64など)の最大符号化ユニット(largest coding unit、LCU)に分割され、各最大符号化ユニットは、ルールに基づいて、矩形の符号化ユニット(coding unit、CU)に分割されることも可能であり、符号化ユニットは、より小さい予測ユニット(prediction unit、PU)に分割されることも可能である。具体的に、混合符号化フレームワークは、予測、変換(transform)、量子化(quantization)、エントロピー符号化(entropy coding)、インループフィルタ(In Loop Filter)などのモジュールを含むことができる。予測モジュールは、イントラ予測(intraPrediction)及びインター予測(interPrediction)を含むことができ、インター予測は、動き推定(motion estimation)及び動き補償(motion compensation)を含むことができる。ビデオ画像(video picture)における隣接サンプル間に強い関連性があるため、ビデオ符号化・復号化技術において、イントラ予測の方法を利用して隣接サンプル間の空間的な冗長性を解消する。ビデオにおける隣接画像間に強い類似性があるため、ビデオ符号化・復号化技術において、インター予測の方法を利用して隣接画像間の時間的な冗長性を解消し、符号化・復号化効率を向上させることができる。
ビデオ符号化・復号化の基本的な流れは、以下の通りである。符号化側では、1つの画像がブロックに分割され、現在ブロックに対してイントラ予測又はインター予測を行うことにより現在ブロックの予測ブロックを生成し、現在ブロックのオリジナルブロックから予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換・量子化して量子化係数行列を取得し、量子化係数行列をエントロピー符号化してビットストリームに出力する。復号化側では、現在ブロックに対してイントラ予測又はインター予測を行うことにより現在ブロックの予測ブロックを生成し、一方、ビットストリームを復号化して量子化係数行列を取得し、量子化係数行列を逆量子化・逆変換して残差ブロックを取得し、予測ブロックと残差ブロックとを加算して再構成ブロックを取得する。再構成ブロックは再構成画像を形成する。画像又はブロックに基づいて再構成画像をインループフィルタリングして復号化画像を取得する。符号化側でも、復号化画像を取得するために、復号化側と類似の処理が必要である。復号化画像は後続の画像の、インター予測のための参照画像であることができる。符号化側で特定されたブロック分割情報、及び、予測、変換、量子化、エントロピー符号化、インループフィルタリングなどのモード情報又はパラメータ情報などは、必要に応じてビットストリームに出力される。復号化側は、既存情報を解析し分析して、符号化側と同じブロック分割情報、予測、変換、量子化、エントロピー符号化、インループフィルタリングなどのモード情報又はパラメータ情報を特定する。それによって、符号化側で取得された復号化画像と復号化側で取得された復号化画像が同じであることが確保される。符号化側で取得された復号化画像は通常、再構成画像とも呼ばれる。予測中に、現在ブロックを予測ユニットに分割してもよく、変換中に、現在ブロックを変換ユニットに分割してもよく、予測ユニットと変換ユニットの分割が異なっていてもよい。上記は、ブロックに基づいた混合符号化フレームワークでのビデオ符号化・復号化の基本的な流れである。技術の発展に伴い、当該フレームワーク又は流れにおける一部のモジュールやステップが最適化される可能性がある。本出願の実施形態は、当該ブロックに基づいた混合符号化フレームワークでのビデオ符号化・復号化の基本的な流れに適用されるが、当該フレームワーク又は流れに限定されない。
現在ブロックは、現在符号化ユニット(CU)、又は、現在予測ユニット(PU)などであってもよい。
インター予測では、復号化された又は再構成された画像又は参照画像の情報を利用して現在ブロックを予測する。インター予測では、動き情報を利用して参照画像から参照ブロックを見つけ、参照ブロックに基づいて予測ブロックを生成する。動き情報は、参照画像を含む参照画像リスト、参照画像インデックス、動きベクトルを含む。動きベクトルは、整数サンプル動きベクトル(integer-sample motion vector)又は分数サンプル動きベクトル(fractional-sample motion vector)であることができる。動きベクトルが分数サンプル動きベクトルである場合、必要な分数サンプルブロックを生成するように、参照画像に補間フィルタを利用する必要がある。動きベクトルに基づいて見つけられた、参照画像における整数サンプルブロック又は分数サンプルブロックは参照ブロックと呼ばれる。参照ブロックをそのまま予測ブロックとする技術があり、参照ブロックに基づいて処理して予測ブロックを生成する技術もある。参照ブロックに基づいて処理して予測ブロックを生成することは、参照ブロックを予測ブロックとし、次に予測ブロックに基づいて処理して新しい予測ブロックを生成することであると理解されることもできる。
現在作成中の多用途ビデオ符号化(VVC)というビデオ符号化・復号化規格には、幾何分割モード(geometric partitioning mode、GPM)と呼ばれるインター予測モードがある。現在作成中のオーディオ・ビデオ符号化規格(audio video coding standard、AVS)というビデオ符号化・復号化規格には、角度重み付け予測(angular weighted prediction、AWP)と呼ばれるインター予測モードがある。これら2つのモードは、名称及び具体的な実現形態が異なるが、原理上では共通するところがある。
なお、従来の単方向予測では、現在ブロックのサイズと同じサイズを有する1つの参照ブロックのみが使用されるが、従来の双方向予測では、現在ブロックのサイズと同じサイズを有する2つの参照ブロックが使用され、予測ブロック内の各サンプルの値は、2つの参照ブロックの対応位置にあるサンプルの値の平均値であり、即ち各参照ブロックにおける全てのサンプルの予測ブロックへの寄与率は50%である。双方向重み付け予測では、2つの参照ブロックの寄与率が異なるようにしてもよく、例えば、1番目の参照ブロックにおける全てのサンプルが75%寄与し、2番目の参照ブロックにおける全てのサンプルが25%寄与する。しかし、同じ参照ブロックにおける全てのサンプルが同じ寄与率を有する。他のいくつかの最適化方式、例えば、復号化側動きベクトル改良(decoder side motion vector refinement、DMVR)技術、双方向オプティカルフロー(bi-directional optical flow、BIO)などによって、参照サンプル又は予測サンプルに何らかの変化が生じる。また、GPM又はAWPでも、現在ブロックのサイズと同じサイズを有する2つの参照ブロックを利用するが、いくつかのサンプル位置では、1番目の参照ブロックの対応位置におけるサンプル値が100%利用され、別のいくつかのサンプル位置では、2番目の参照ブロックの対応位置におけるサンプル値が100%利用され、遷移領域(交差領域)では、これら2つの参照ブロックの対応位置におけるサンプル値が一定の割合で利用される。サンプル値の重みが具体的にどのように割り当てられるかは、GPM又はAWPのモードによって定められる。
例示的に、図1は、重みの割り当てを示す1つ目の概略図である。図1に示されるように、本出願の実施形態に係る64×64の現在ブロックにおけるGPMの複数種の分割モードの重みの割り当ての概略図が示されており、GPMには64種の分割モードが存在する。図2は、重みの割り当てを示す2つ目の概略図である。図2に示されるように、本出願の実施形態に係る64×64の現在ブロックにおけるAWPの複数種の分割モードの重みの割り当ての概略図が示されており、AWPには56種の分割モードが存在する。図1、図2のいずれにおいても、各種の分割モードでは、黒領域は1番目の参照ブロックの対応位置の重み値が0%であることを示し、白領域は1番目の参照ブロックの対応位置の重み値が100%であることを示し、グレー領域は色の濃淡の違いで1番目の参照ブロックの対応位置の重み値が0%より大きく100%より小さいいずれかの重み値であることを示す。2番目の参照ブロックの対応位置の重み値は、100%から1番目の参照ブロックの対応位置の重み値を引いた値である。
GPMにおける重みの導出方法とAWPにおける重みの導出方法は異なる。GPMでは、各種のモードに基づいて角度及びオフセットを特定し、次に、各種のモードの重み付け行列を算出する。AWPでは、まず1次元の重みライン(one-dimensional weight line)を生成し、次に、イントラ角度予測に類似した方法を利用して1次元の重みラインで行列全体を敷き詰める。
先行する符号化・復号化技術に、CU、PU、変換ユニット(transform unit、TU)の分割を問わず、矩形の分割方式のみが存在する。GPM及びAWPでは、分割されない場合に予測の非矩形の分割効果が実現される。GPM及びAWPでは、2つの参照ブロックの重みのマスク(mask)、即ち重みマップが利用される。このマスクから、予測ブロックを生成するための2つの参照ブロックの重みを特定する。遷移領域(blending area)が、2つの参照ブロックの対応の位置を重み付けすることで取得され、遷移をよりスムーズにすることができる。GPM及びAWPでは、現在ブロックが分割線で2つのCU又はPUに分割されていないため、現在ブロックの全体に対して予測後の残差の変換、量子化、逆変換、逆量子化などが行われる。
現在ブロックに用いられる動き情報が記憶されることができる。隣接位置関係に基づいて、前の符号化・復号化済みのブロック(例えば、隣接ブロック)の動き情報が現在画像の後続の符号化・復号化ブロックに用いられることができる。それは、空間関連性(spatial correlation)を利用しているため、そのような符号化・復号化済みの画像の動き情報は空間動き情報(spatial motion information)と呼ばれる。現在画像の各ブロックに用いられる動き情報が記憶されることができる。参照関係に基づいて、前の符号化・復号化済みの画像の動き情報が後続の符号化・復号化画像に用いられることができる。それは、時間関連性(temporal correlation)を利用しているため、そのような符号化・復号化済みの画像の動き情報は時間動き情報(temporal motion information)と呼ばれる。現在画像の各ブロックに用いられる動き情報の記憶方法では、4×4行列のような固定サイズの行列を最小ユニットとして、各最小ユニットに単独的に1セットの動き情報が記憶される。このように、1つのブロックを符号化・復号化するたびに、そのブロックの位置に対応するそれらの最小ユニットは、そのブロックの動き情報を記憶しておくことができる。このように、空間動き情報又は時間動き情報を利用する場合、位置に基づいて、当該位置に対応する動き情報を直接に見つけることができる。例えば、従来の単方向予測が1つの16×16のブロックに用いられる場合、当該ブロックに対応する4×4の最小ユニットの全てがこの単方向予測の動き情報を記憶する。GPM又はAWPが1つのブロックに用いられる場合、当該ブロックに対応する全ての最小ユニットは、GPM又はAWPモード、1番目の動き情報、2番目の動き情報、及び各最小ユニットの位置に基づいて、各最小ユニットに記憶される動き情報を特定する。1つの方法として、1つの最小ユニットに対応する4×4のサンプルが全て1番目の動き情報に由来する場合、この最小ユニットは1番目の動き情報を記憶する。1つの最小ユニットに対応する4×4のサンプルが全て2番目の動き情報に由来する場合、この最小ユニットは2番目の動き情報を記憶する。1つの最小ユニットに対応する4×4のサンプルが1番目の動き情報及び2番目の動き情報の両方に由来する場合、AWPでは、その両方のうちの1つを選択して記憶し、GPMでは、2つの動き情報が異なる参照画像リストを指し示す場合、その2つの動き情報を組み合わせて双方向の動き情報として記憶し、そうではない場合、2番目の動き情報のみを記憶する。
なお、GPM又はAWPは一種のインター予測技術に属する。GPM又はAWPが利用されるか否かを指示するフラグ(flag)をビットストリームで伝送する必要がある。当該フラグは、GPM又はAWPが現在ブロックに用いられるか否かを指示することができる。GPM又はAWPが利用される場合、符号器は、利用される具体的なモード(即ち、GPMの64種の分割モードのいずれか、又はAWPの56種の分割モードのいずれか)と、2つの単方向動き情報のインデックス値とをビットストリームで伝送する必要がある。即ち、現在ブロックに対して、復号器は、ビットストリームを復号化することにより、GPM又はAWPが利用されるか否かの情報を取得することができる。GPM又はAWPが利用されると特定する場合、復号器は、GPM又はAWPの予測モードパラメータと、2つの動き情報インデックス値とを解析することができる。例えば、現在ブロックが2つのパーティションに分割される場合、第一パーティションに対応する第一インデックス値と、第二パーティションに対応する第二インデックス値とを解析することができる。
具体的に、GPMモードでは、GPMが利用される場合、GPMにおける予測モードパラメータ(例えば、GPMの具体的な分割モード)がビットストリームで伝送される。通常では、GPMは64種の分割モードを含む。AWPモードでは、AWPが利用される場合、AWPにおける予測モードパラメータ(例えば、AWPの具体的な分割モード)がビットストリームで伝送される。通常では、AWPは56種の分割モードを含む。
インター予測モードでは、例えば、GPM及びAWPでは、2つの参照ブロックを検索するために、2つの単方向動き情報が必要である。現状の実現様態では、符号器側は、現在ブロックの前の符号化/復号化済みの部分の関連情報を利用して、1つの単方向動き情報候補リストを構築し、単方向動き情報候補リストから単方向動き情報を選択し、これら2つの単方向動き情報の単方向動き情報候補リストにおけるインデックス(index)をビットストリームに書き込む。復号器側は、符号器側と同じ方法を採用し、即ち、現在ブロックの前の復号化済みの部分の関連情報を利用して、1つの単方向動き情報候補リストを構築する。この単方向動き情報候補リストは、符号器側で構築された候補リストと同じである。このようにして、ビットストリームから2つの単方向動き情報のインデックスを解析し、次に、単方向動き情報候補リストからその2つの単方向動き情報(即ち、現在ブロックに用いられる必要のある2つの単方向動き情報)を検索する。
換言すれば、本出願に記載された単方向動き情報は、動きベクトル情報(即ち(x、y)の値)と、対応する参照画像情報(即ち、参照画像リスト及び参照画像リストにおける参照画像インデックス)とを含むことができる。1つの方式では、2つの参照画像リストにおける参照画像インデックスを記録する。その2つの参照画像リストのうちの1つに対応する参照画像インデックスが有効であり、例えば、0、1、2などであり、もう1つに対応する参照画像インデックスが無効であり、例えば、-1である。参照画像インデックスが有効である参照画像リストは、現在ブロックの動き情報に用いられる参照画像リストである。参照画像インデックスに基づいて、当該参照画像リストから対応する参照画像を見つけることができる。各参照画像リストはそれぞれ、1つの対応の動きベクトルを有し、有効な参照画像リストに対応する動きベクトルが有効であり、無効な参照画像リストに対応する動きベクトルが無効である。復号器は、単方向動き情報における参照画像情報から必要な参照画像を見つけることができ、現在ブロックの位置、動きベクトル(即ち(x、y)の値)に基づいて、参照画像から参照ブロックを見つけることができ、さらに、現在ブロックのインター予測値を特定することができる。
イントラ予測方法では、現在ブロックの周辺の符号化・復号化済みの再構成サンプルを参照サンプルとして利用して現在ブロックを予測する。図3は、イントラ予測を示す概略図である。図3に示されるように、現在ブロックのサイズは4×4であり、現在ブロックの左1列及び上1行のサンプルは、現在ブロックの参照サンプルであり、イントラ予測では、これらの参照サンプルを利用して、現在ブロックを予測する。これらの参照サンプルは全て利用可能であり、即ち、全て符号化・復号化されている可能性がある。選択的に、これらの参照サンプルは一部が利用不可能である可能性がある。例えば、現在ブロックが画像全体の一番左にあり、現在ブロックの左の参照サンプルが利用不可能である。又は、現在ブロックを符号化・復号化する場合、現在ブロックの左下のサンプルがまだ符号化・復号化されていないため、左下の参照サンプルも利用不可能である。参照サンプルが利用不可能である場合、利用可能な参照サンプルを利用して、又は何らかの値、何らかの方法を利用して、充填を行ってもよく、充填を行わなくてもよい。
さらに、イントラ予測を行う場合、マルチ参照ライン(multiple reference line、MRL)イントラ予測方法では、より多くの参照サンプルを利用して符号化効率を向上させることができる。例えば、4つの参照ライン/カラムを現在ブロックの参照サンプルとする。
イントラ予測に複数種の予測モードがあり、H.264では、4×4のブロックに対してイントラ予測を行う際、9種のモードを含むことができる。モード0では、現在ブロックの上のサンプルを、垂直方向に沿って、現在ブロックにコピーして予測値とする。モード1では、現在ブロックの左の参照サンプルを、水平方向に沿って、現在ブロックにコピーして予測値とする。モード2(DC)では、隣接する複数のサンプルの平均値を、全てのサンプルの予測値とする。モード3~8では、それぞれある角度に沿って、参照サンプルを現在ブロックの対応位置にコピーする。現在ブロックのいくつかの位置が参照サンプルに厳密に対応することができないため、参照サンプルの重み付け平均値、又は参照サンプルの補間された分数サンプル(interpolated factional sample)を利用する必要がある。
他にも平面(Planar)モードなどがある。技術の発展及びブロックの拡大に伴い角度予測モードも多くなっている。例えば、HEVCに用いられるイントラ予測モードは、Planarモード、DCモード及び33種の角度モード、合計で35種の予測モードを含む。VVCに用いられるイントラモードは、Planarモード、DCモード及び65種の角度モード、合計で67種の予測モードを含む。AVS3に用いられるイントラモードは、DCモード、Planeモード、バイリニア(Bilinear)モード及び63種の角度モード、合計で66種の予測モードを含む。
また、予測を改善する技術もあり、例えば、参照サンプルの分数サンプル補間を改善すること、予測サンプルをフィルタリングすることなどが挙げられる。例えば、AVS3におけるマルチイントラ予測フィルタ(multiple intra prediction filter、MIPF)では、異なるサイズを有するブロックに対して異なるフィルタを利用して予測値を生成する。同一ブロック内の異なる位置におけるサンプルに対して、参照サンプルに近いサンプルに対して1種のフィルタを利用して予測値を生成し、参照サンプルから遠いサンプルに対して別のフィルタを利用して予測値を生成する。AVS3におけるイントラ予測フィルタ(intra prediction filter、IPF)など、予測サンプルをフィルタリングする技術では、参照サンプルを利用して予測値をフィルタリングすることができる。
イントラ予測において、最確モード(MPM)リストを利用したイントラモード符号化技術を利用して、符号化・復号化効率を向上させることができる。符号化・復号化済みの周辺ブロックのイントラ予測モードと、符号化・復号化済みの周辺ブロックのイントラ予測モードに基づいて導出されるイントラ予測モード(例えば、隣接するモード)と、汎用の又は利用確率の高いイントラ予測モード(例えば、DC、Planar、Bilinearモードなど)とを利用して、1つのMPMリストを構成する。テクスチャが空間的な連続性があるため、符号化・復号化済みの周辺ブロックのイントラ予測モードを参照することは、空間関連性を利用したものである。MPMは、イントラ予測モードの予測に用いられることができる。即ち、MPMが現在ブロックに用いられる確率は、MPMが現在ブロックに用いられない確率より高いと考えられる。そのため、二値化中に、より少ない符号語がMPMに用いられるため、オーバーヘッドを節約し、符号化・復号化効率を向上させることができる。
現在のイントラ予測には、DCモード、Planarモード、Bilinearモードなどのモードがあるが、これらはいずれも単純なテクスチャの予測しか扱えない。角度モードが多くなっていても、このようなモードに基づく予測は一つの角度の直線に沿ってしか実行できない。このように、従来のイントラ予測モードでは単純なテクスチャの予測しか扱えない。複雑なテクスチャでは、予測の際に、より小さいブロックに分割されたり、より多くの残差が符号化されたりする必要があり、大きな歪みが生じる可能性がある。
上記課題に対して、現状では、イントラ予測方法が提案されている。当該方法では、符号器・復号器は2種の異なるイントラ予測モードで、現在ブロックの2つの異なる予測ブロックを特定し、次に、多様な重み付け行列で予測ブロックを組み合わせることで、より複雑な予測ブロックを最終的に取得することにより、予測の精度を高めることができる。しかし、DCモード、Planarモード、PLANEモード、Bilinearモードなどの非角度予測モードと、角度予測モードとは計算論理が異なる。非角度予測モードはそれぞれ論理を有し、ハードウェアの実装では、非角度予測モードの回路を角度予測モードの回路として再利用することが難しい。2つのイントラ予測モードを利用して予測を行う場合、2つのイントラ予測モードによる予測がハードウェアでシリアルに行われ、さらに、重み付け行列に基づいて組合せられる場合、既存のイントラ予測回路が2つのイントラ予測モードによる予測に用いられることができる。ただし、先に予測した予測値を記憶する必要があり、このようにイントラ重み付け組合せ予測の時間は、1つのイントラ予測モードのみによるオリジナルの予測の時間より著しく多い。2つのイントラ予測モードによる予測がハードウェアでパラレルに行われる場合、イントラ重み付け組合せ予測の予測値の生成速度はシリアルの実現より明らかに速い。これに対し、コスト的には、2セットのイントラ予測回路が必要となり、即ち1セットのイントラ予測回路を追加する必要がある。ここでいうイントラ予測回路は、上記イントラ非角度予測モード及びイントラ角度予測モードによる予測を行うものであり、即ち、1セットのイントラ予測回路を新たに追加する。
このように、2つの異なるイントラ予測モードを利用してイントラ予測を行う従来の方法では、予測効果をある程度向上させることができるが、予測回路を新たに追加する必要があり、ハードウェア実装のコストの増大を招くため、新たに追加されるイントラ予測回路をできるだけ簡素化して、イントラ重み付け組合せ予測による複雑度を減少させることができる。上記課題を解決するために、本出願の実施形態において、符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができ、次に、多様な重み付け行列で2つの異なる予測ブロックを組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
図4を参照すると、図4は、本出願の実施形態に係るビデオ符号化システムの構成を示すプロック図である。図4に示されるように、当該ビデオ符号化システム10は、変換・量子化ユニット101、イントラ推定ユニット102、イントラ予測ユニット103、動き補償ユニット104、動き推定ユニット105、逆変換・逆量子化ユニット106、フィルタ制御分析ユニット107、フィルタリングユニット108、符号化ユニット109及び復号化画像バッファユニット110などを備える。フィルタリングユニット108は、デブロッキングフィルタリング及びサンプル適応オフセット(Sample Adaptive 0ffset、SAO)フィルタリングを実現することができる。符号化ユニット109は、ヘッダ情報符号化、及び、コンテキストに基づいた適応型バイナリ算術符号化(Context-based Adaptive Binary Arithmatic Coding、CABAC)を実現することができる。入力されたオリジナルビデオ信号について、符号化ツリーブロック(Coding Tree Unit、CTU)の分割により1つのビデオ符号化ブロックを取得することができる。次に、イントラ予測又はインター予測が行われることによりに取得された残差サンプル情報について、変換・量子化ユニット101により、当該ビデオ符号化ブロックに対して変換を行い、例えば、残差情報を画素領域から変換領域へ変換することを含み、また、取得された変換係数を量子化して、ビットレートをさらに低減させる。イントラ推定ユニット102及びイントラ予測ユニット103は、当該ビデオ符号化ブロックに対してイントラ予測を行うために用いられる。具体的に、イントラ推定ユニット102及びイントラ予測ユニット103は、当該ビデオ符号化ブロックを符号化するためのイントラ予測モードを特定するために用いられる。動き補償ユニット104及び動き推定ユニット105は、1つ又は複数の参照画像における1つ又は複数のブロックに対する受信されたビデオ符号化ブロックのインター予測符号化を実行して時間予測情報を提供するために用いられる。動き推定ユニット105によって実行される動き推定が動きベクトルを生成するプロセスであり、動きベクトルによって当該ビデオ符号化ブロックの動きを推定することができ、次に、動き補償ユニット104は、動き推定ユニット105によって特定された動きベクトルに基づいて動き補償を実行する。イントラ予測モードが特定された後、イントラ予測ユニット103はさらに、選択されたイントラ予測データを符号化ユニット109に提供するために用いられ、また、動き推定ユニット105は、計算で特定された動きベクトルデータを符号化ユニット109に送信する。さらに、逆変換・逆量子化ユニット106は、当該ビデオ符号化ブロックを再構成し、画素領域内で残差ブロックを再構成するために用いられる。当該再構成された残差ブロックがフィルタ制御分析ユニット107とフィルタリングユニット108によりフィルタリングされ、ブロック効果アーティファクト(blocking effect artifact)を除去し、次に、当該再構成された残差ブロックを復号化画像バッファユニット110の画像における1つの予測ブロックに追加して、再構成されたビデオ符号ブロックを生成する。符号化ユニット109は、様々な符号化パラメータ及び量子化された変換係数を符号化するために用いられる。CABACに基づく符号化アルゴリズムでは、コンテキストコンテンツは、隣接する符号化ブロックに基づき、特定されたイントラ予測モードを指示する情報を符号化し、当該ビデオ信号のビットストリームを出力するために用いられることができる。復号化画像バッファユニット110は、予測参照のために、再構成されたビデオ符号化ブロックを記憶するために用いられる。ビデオ画像符号化の実行に伴い、新しい再構成されたビデオ符号化ブロックが継続的に生成され、これらの再構成されたビデオ符号化ブロックは全て、復号化画像バッファユニット110に記憶される。
図5を参照すると、図5は、本出願の実施形態に係るビデオ復号化システムの構成を示すブロック図である。図5に示されるように、当該ビデオ復号化システム20は、復号化ユニット201、逆変換・逆量子化ユニット202、イントラ予測ユニット203、動き補償ユニット204、フィルタリングユニット205及び復号化画像バッファユニット206などを備える。復号化ユニット201は、ヘッダ情報復号化及びCABAC復号化を実現することができる。フィルタリングユニット205は、デブロッキングフィルタリング及びSAOフィルタリングを実現することができる。入力されたビデオ信号が図4に示されたように符号化された後、当該ビデオ信号のビットストリームが出力される。当該ビットストリームは、ビデオ復号化システム20に入力され、まず復号化ユニット201によって復号後の変換係数を取得し、当該変換係数に対して、逆変換・逆量子化ユニット202によって処理され、残差ブロックを画素領域に生成する。イントラ予測ユニット203は、特定されたイントラ予測モードと現在のフレーム又は画像の前に復号化されたブロックからのデータとに基づいて、現在のビデオ復号化ブロックの予測データを生成するために用いられることができる。動き補償ユニット204は、動きベクトル及び他の関連シンタックス要素を分析することによりビデオ復号化ブロックのための予測情報を特定し、当該予測情報を利用して、復号化されているビデオ復号化ブロックの予測ブロックを生成する。逆変換・逆量子化ユニット202からの残差ブロックと、イントラ予測ユニット203又は動き補償ユニット204によって生成された対応の予測ブロックとを加算することにより、復号化されたビデオブロックを形成する。当該復号化されたビデオ信号がフィルタリングユニット205により、ブロック効果アーティファクトを除去し、これにより、ビデオ品質を向上することができる。次に、復号化されたビデオブロックを復号化画像バッファユニット206に記憶し、復号化画像バッファユニット206は、後続のイントラ予測又は動き補償のための参照画像を記憶し、同時にビデオ信号を出力するために用いられ、復元されたオリジナルビデオ信号を取得する。
本出願の実施形態におけるイントラ予測方法は主に、図4に示されたイントラ予測ユニット103、及び、図5に示されたイントラ予測ユニット203に適用される。即ち、本出願の実施形態におけるイントラ予測方法は、ビデオ符号化システムに適用されてもよく、ビデオ復号化システムに適用されてもよく、さらに、ビデオ符号化システム及びビデオ復号化システムに同時に適用されてもよいが、本出願の実施形態において特に限定されない。なお、当該イントラ予測方法がイントラ予測ユニット103に適用される場合、「現在ブロック」は具体的に、イントラ予測における現在符号化ブロックを指す。当該イントラ予測方法がイントラ予測ユニット203に適用される場合、「現在ブロック」は具体的に、イントラ予測における現在復号化ブロックを指す。
以下、本出願の実施形態における図面を参照しながら、本出願の実施形態における技術案を明確且つ完全に記述する。
本出願の一実施形態において、復号器に適用されるイントラ予測方法が提供される。図6は、イントラ予測方法の実現を示す1つ目のフローチャートである。図17に示されるように、復号器によるイントラ予測方法は、以下のステップを含むことができる。
ステップ101:ビットストリームを復号化することにより、現在ブロックのイントラ予測モードパラメータを特定する。
本出願の実施形態において、復号器は、ビットストリームを復号化することにより、現在ブロックのイントラ予測モードパラメータを特定することができる。
なお、本出願の実施形態において、イントラ予測モードパラメータは、イントラ重み付け組合せ予測(IWCP)モードが現在ブロックに用いられることができるか否か、即ち、現在ブロックの予測値を特定するには2種の異なるイントラ角度予測モードを利用することができるか否か、を指示することができる。
なお、本出願の実施形態において、イントラ予測モードパラメータは、IWCPモードが利用されているか否かを示すフラグであると理解されてもよい。具体的に、復号器は、ビットストリームを復号化することにより、イントラ予測モードパラメータとする1つの変数を特定することができ、当該変数の値によりイントラ予測モードパラメータの特定を実現することができる。
なお、本出願の実施形態において、IWCPモードはイントラ予測方法の一種である。具体的に、IWCPモードでは、2つの異なるイントラ角度予測モードを現在ブロックのために特定し、そして、これら2つの異なるイントラ角度予測モードのそれぞれに基づいて、2つの予測ブロックをそれぞれ特定し、次に、1つの重み付け行列を特定し、重み付け行列に基づいてこれら2つの予測ブロックを組み合わせることで、新たな予測ブロックを最終的に取得することができ、即ち、現在ブロックの予測ブロックを取得する。
図7は、IWCPモードを示す概略図である。図7に示されるように、現在ブロックに対してイントラ予測を行う際に、イントラ角度予測モード1(第一イントラ予測モード)を利用して、現在ブロックの第一予測ブロックを特定し、同時に、イントラ角度予測モード2(第二イントラ予測モード)を利用して、現在ブロックの第二予測ブロックを特定することができる。そして、重み付け行列を利用して第一予測ブロック及び第二予測ブロックを組み合わせることで、新たな予測ブロックを最終的に取得することができる。
なお、本出願の実施形態において、ビデオ画像は複数の画像ブロックに分割されることができ、現在ブロックは現在符号化待ちの画像ブロックであり、符号化ブロック(Coding Block、CB)と呼ばれることができる。ここで、各符号化ブロックは、第一色コンポーネント(colour component)、第二色コンポーネント、及び第三色コンポーネントを含むことができる。具体的に、本出願において、第一イントラ予測が行われ、また、第一色コンポーネントが輝度コンポーネントであり、即ち、予測待ちの色コンポーネントが輝度コンポーネントであると仮定すれば、予測待ちの符号化ブロックを輝度ブロックと称してもよい。第二イントラ予測が行われ、また、第二色コンポーネントが彩度コンポーネントであり、即ち、予測待ちの色コンポーネントが彩度コンポーネントであると仮定すれば、予測待ちの符号化ブロックを彩度ブロックと称してもよい。
さらに、本出願の実施形態において、IWCPモードを適用する際に、現在ブロックのサイズを制限してもよい。
本出願の実施形態に係るイントラ予測方法では、2つの異なるイントラ角度予測モードをそれぞれ利用して2つの予測ブロックをそれぞれ生成し、重み付け行列に基づいて重み付けを行うことにより新たな予測ブロックを取得する必要があるため、複雑度を低減し、圧縮性能と複雑度との両方のバランスを考慮に入れて、本出願の実施形態において、当該IWCPモードがある特定のサイズを有する予測ブロックに用いられないように制限することができる。そこで、本出願において、復号器は、現在ブロックのサイズパラメータを先に特定し、そのサイズパラメータに基づいて、IWCPモードが現在ブロックに用いられるか否かを特定することができる。
なお、本出願の実施形態において、現在ブロックのサイズパラメータは、現在ブロックの高さ及び幅を含むことができる。そのため、復号器は、現在ブロックの高さ及び幅に基づいて、IWCPモードの利用を制限し、即ち、IWCPモードが用いられることができる予測ブロックのサイズを制限することができる。
例示的に、本出願において、幅及び高さがいずれも第一下限値以上であり、且つ幅及び高さがいずれも第一上限値以下である場合、IWCPモードが現在ブロックに用いられると特定することができる。このように、1つの可能な制限としては、予測ブロックの幅及び高さが第一上限値より小さく(又は以下であり)、且つ、予測ブロックの幅及び高さが第一下限値より大きい(又は以上である)場合のみ、IWCPモードが用いられる。なお、第一下限値は8であってもよく、第一上限値の値は16又は32などであってもよい。
例示的に、本出願において、IWCPモードが復号化待ちの現在フレームに用いられるか否かを特定するためのフレームレベルのフラグが存在することができる。例えば、IWCPモードがイントラフレーム(例えば、Iフレーム)に用いられ、インターフレーム(例えば、Bフレーム、Pフレーム)に用いられないように構成されることができる。又は、IWCPモードがイントラフレームに用いられず、インターフレームに用いられるように構成されることができる。又は、IWCPモードが一部のインターフレームに用いられ、一部のインターフレームに用いられないように構成されることができる。イントラ予測がインターフレームに用いられてもよいため、IWCPモードがインターフレームに用いられる可能性もある。
例示的に、本出願において、IWCPモードがこの領域に用いられるか否かを特定するための、フレームレベル以下且つCUレベル以上(例えば、tile、slice、patch、LCUなど)のフラグが存在することができる。
ステップ102:イントラ予測モードパラメータは現在ブロックがIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。
本出願の実施形態において、復号器は現在ブロックのイントラ予測モードパラメータを特定した後、イントラ予測モードパラメータは現在ブロックがIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、復号器はさらに、現在ブロックの第一モードインデックス及び第二モードインデックスを特定することができる。
なお、本出願の実施形態において、第一モードインデックスは、現在ブロックに用いられる第一イントラ予測モードを指示するために用いられ、第二モードインデックスは、現在ブロックに用いられる第二イントラ予測モードを指示するために用いられることができる。
具体的に、第一モードインデックスの値及び第二モードインデックスの値は、第一イントラ予測モード及び第二イントラ予測モードの可能なイントラ角度予測モードの数に関連付けられている。例えば、第一イントラ予測モード及び第二イントラ予測モードはそれぞれ、モード番号が4~31である28個のイントラ角度予測モードのうちの1つであってもよい。従って、第一モードインデックスの値と第二モードインデックスの値はいずれも、0~27という範囲にある。
例示的に、本出願の実施形態において、パラメータiwcp_pred_mode0_indexで第一モードインデックスを表し、パラメータiwcp_pred_mode1_indexで第二モードインデックスを表すことができる。
ステップ103:現在ブロックのMPMリストを構築する。
本出願の実施形態において、復号器はさらに、現在ブロックのMPMリストを構築することができる。MPMリストにおける予測モードはいずれもイントラ角度予測モードである。
また、本出願の実施形態において、復号器は、現在ブロックのMPMリストを構築する際に、現在ブロックの重み付け行列導出モードを先に特定し、次に、重み付け行列導出モードを利用して現在ブロックのMPMリストを特定する必要がある。
なお、本出願において、重み付け行列導出モードは、現在ブロックに用いられる重み付け行列を特定するために用いられる。具体的に、重み付け行列導出モードは、重み付け行列を導出するモードであってもよい。所定の長さ及び幅を有する予測ブロックに対して、各種の重み付け行列導出モードごとに、1つの重み付け行列が導出されることができる。同じサイズを有する予測ブロックに対して、異なる重み付け行列導出モードから導出される重み付け行列が異なる。
例示的に、本出願において、AVS3におけるAWPに56種の重み付け行列導出モードがあり、VVCにおけるGPMに64種の重み付け行列導出モードがある。
選択的に、本出願において、復号器は、現在ブロックのMPMリストを構築する際に、直接に現在ブロックの隣接ブロックの予測モード及び重み付け行列導出モードに基づいて、MPMリストを構築することができる。
選択的に、本出願において、復号器は、現在ブロックのMPMリストを構築する際に、現在ブロックの隣接ブロックの予測モード、プリセット角度予測モード集合、及び重み付け行列導出モードに基づいて、MPMリストを構築することができる。プリセット角度予測モード集合は、全てのイントラ角度予測モードの1つのサブセットであり得る。AVS3を例として、プリセット角度予測モード集合は、モード番号が4~31である28個のイントラ角度予測モードのみを含むことができる。
本出願において、第一イントラ予測モード及び第二イントラ予測モードの範囲が制限されない場合、プリセット角度予測モード集合は、全てのイントラ角度予測モードの組み合わせであってもよい。第一イントラ予測モード及び第二イントラ予測モードの範囲が制限される必要がある場合、プリセット角度予測モード集合は、一部のイントラ角度予測モードの組み合わせのみであることができ、この場合、プリセット角度予測モード集合が、第一イントラ予測モード及び第二イントラ予測モードの範囲を制限するために用いられることができる。それによって、オーバーヘッドを効果的に低減し、圧縮性能を向上させることができる。
選択的に、本出願において、復号器は、現在ブロックの隣接ブロックのイントラ予測モード、プリセット角度予測モード集合、及び重み付け行列導出モードに基づいて、MPMリストを構築する際に、隣接ブロックの予測モードを利用して第一候補モードを特定し、重み付け行列導出モードを利用して第二候補モードを特定し、さらに、第一候補モード、第二候補モード、及びプリセット角度予測モード集合に基づいて、現在ブロックのMPMリストを構築することができる。
具体的に、本出願において、復号器は、隣接ブロックの予測モードを利用して第一候補モードを特定する際に、隣接ブロックが通常イントラ予測ブロックであり、且つ隣接ブロックの予測モードがイントラ予測モードである場合、隣接ブロックの予測モードを第一候補モードとして特定する。
本出願において、通常イントラ予測ブロックは、DCモード、Planarモード、Bilinearモード、角度予測モードなどの予測モードを利用した予測ブロックであり、イントラブロックコピー(intra block copy、IBC)、イントラストリングコピー予測(intra string copy prediction)などの予測モードを利用した予測ブロックではないと理解されることができる。
図8は、隣接ブロックを示す概略図である。図8に示されるように、現在ブロックがEであり、(x0、y0)は画像におけるブロックEの左上隅のサンプルの座標であり、(x1、y0)は画像におけるブロックEの右上隅のサンプルの座標であり、(x0、y1)は画像におけるブロックEの左下隅のサンプルの座標である。現在ブロックEの隣接ブロックAは、サンプル(x0-1、y0)が位置するブロックであり、現在ブロックEの隣接ブロックBは、サンプル(x0、y0-1)が位置するブロックであり、現在ブロックEの隣接ブロックCは、サンプル(x1+1、y0-1)が位置するブロックであり、現在ブロックEの隣接ブロックDは、サンプル(x0-1、y0-1)が位置するブロックであり、ブロックEの隣接ブロックFは、サンプル(x0-1、y1)が位置するブロックであり、ブロックEの隣接ブロックGは、サンプル(x1、y0-1)が位置するブロックである。現在ブロックEとその隣接ブロックA、B、C及びDとの空間的位置関係は、図8に示されるようである。
本出願において、復号器は、現在ブロックのより右にある隣接ブロック、及びより下にある隣接ブロックを利用することができる。
具体的に、本出願において、復号器は、重み付け行列導出モードを利用して第二候補モードを特定する際に、まず、重み付け行列導出モードに基づいて境界線角度インデックス(boundary line angle index)を特定し、次に、境界線角度インデックスを利用して、第二候補モードを特定することができる。
なお、本出願の実施形態において、第二候補モードがL個の異なるイントラ角度予測モードを含むと特定することができ、それによって、長さがLであるMPMリストの構築を確保することができる。
さらに、本出願の実施形態において、重み付け行列が2種の重み値を含む場合、重み値が変化する位置は、直線を形成する。又は、重み付け行列が複数種の重み値を含む場合、遷移領域において重み値が同じ位置が直線を形成し、その直線を境界線と称してもよい。右水平方向の角度を0度とし、反時計回りに角度が大きくなるようにしてもよい。この場合、境界線は、水平0度、垂直90度、45度、135度などの傾斜角度など、様々な角度を有することができる。ある重み行列が1つの予測ブロックに用いられる場合、例えば、境界線の両側に2つの異なる角度を有するテクスチャがあるか、又は境界線の一方の側に角度のあるテクスチャがあり、境界線の他方の側に平坦なテクスチャがあるなど、対応するテクスチャは、境界線の両側で異なる特性を示す可能性が高い。境界線自体も角度を有するため、境界線が1つの点でイントラ角度予測によって得られると仮定し、その境界線が現在ブロックのいくつかのテクスチャに近い可能性がため、この直線と現在ブロックの2つのイントラ予測モードとの間に相関性がある。
具体的に、本出願において、境界線が1つの点でイントラ角度予測によって得られると仮定すれば、少なくとも1つのイントラ角度予測モードを見つけることができ、このイントラ角度予測モードが境界線を近似的に作成するために用いられる。例えば、水平方向の境界線は水平イントラ予測モード(例えば、AVS3におけるモード24)にマッチングする。垂直方向の境界線は垂直イントラ予測モード(例えば、AVS3におけるモード12)にマッチングする。45度の境界線は左下から右下への45度のイントラ予測モード(例えば、AVS3におけるモード30)にマッチングしてもよく、右上から左下への225度のイントラ予測モード(例えば、AVS3におけるモード6)にマッチングしてもよい。1つの重み付け行列に1つの重み値しかない場合、DCモード、Planarモード、Bilinearモードなど、明らかに角度がないモードにマッチングすることができる。このように、重み付け行列導出モードは、いくつかのイントラ予測モードにマッチングすることができるため、重み付け行列導出モードを利用して、イントラ予測モードの復号化を補助することができる。
なお、本出願において、重み付け行列導出モードは重み付け行列のインデックスであってもよく、例えば、AWPの56種のモードが56種の重み付け行列導出モードであると考えられることができる。
例示的に、本出願において、重み付け行列導出モードとイントラ角度予測モードとの間のマッピング関係をさらに表すために、1つのマッピング関係表を構築してもよい。具体的に、AWPとGPMの複数のモードの境界線はいずれも同一角度を有し、例えば、AVS3のAWPは8つのモードおきに境界線が同一角度を有する。56種のAWPモードは、合計で8つの境界線角度を有する。境界線角度インデックスは、重み付け行列導出モードのモード番号に対して、8を法とする(%8)剰余演算が施されることで取得されることができる。例えば、表1はマッピング関係表であり、AVS3における角度モードを例として、境界線角度インデックス0と1はそれぞれ2つのイントラ角度予測モード(1つは右上から左下への予測モードであり、1つは左上から右下への予測モードである)に対応することができる。具体的に、他の境界線角度インデックスに対して、別の近似的に対応するイントラ角度予測モードを見つけるようにしてもよく、全ての境界線角度インデックスが1種のイントラ角度予測モードのみに対応するようにしてもよい。
1種の重み付け行列に対して、その境界線に対応するイントラ角度予測モードが利用される可能性が高いほか、境界線に関連するいくつかのイントラ角度予測モードが利用される可能性も高い。例えば、その境界線に近い角度、又はその境界線に垂直な角度などの、対応するイントラ角度予測モードが挙げられる。復号器は、重み付け行列とイントラ角度予測モードとの相関性を利用して、IWCPモードのMPMリストを構築することができる。例えば、IWCPモードのMPMリストを構築する際に、MPMリストのリスト長が4である場合、下記表2における境界線角度インデックスに対応する候補モードをMPMリストに追加することができる。
上記表2によれば、各境界線角度インデックスに対応する候補モードの数とMPMリストの長さが等しいことにより、参照のための隣接ブロックのイントラ予測モードが全て利用不可能である場合であってもMPMリストを埋め尽くすことができることを確保することができる。例えば、MPMリストの長さが4であれば、各境界線角度インデックスに対応する候補モードの数を4にすることができる。
さらに、本出願において、復号器は、第一候補モード、第二候補モード、及びプリセット角度予測モード集合に基づいて、MPMリストを構築する際に、プリセット角度予測モード集合に基づいて第一候補モードをフィルタリングすることにより、フィルタリングされた候補モードを取得し、フィルタリングされた候補モード及び第二候補モードに基づいて、MPMリストを構築する。
具体的に、本出願において、復号器は、プリセット角度予測モード集合に基づいて第一候補モードをフィルタリングすることにより、フィルタリングされた候補モードを取得する際に、第一候補モードがプリセット角度予測モード集合に属する場合、復号器は、第一候補モードをフィルタリングされた候補モードとして特定し、第一候補モードがイントラ角度予測モードであり且つプリセット角度予測モード集合に属しない場合、復号器は、プリセット角度予測モード集合から第一候補モードの代替モードを特定し、代替モードをフィルタリングされた候補モードとして特定する。
さらに、本出願において、第一候補モードがイントラ角度予測モードではない場合、復号器は、第一候補モードを直接に削除することができる。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードが属するプリセット角度予測モード集合は、全てのイントラ角度予測モードのサブセットであり、イントラ非角度予測モードを含まないため、IWCPモードに対して、現在ブロックのMPMの選択、即ちMPMリストの構築方法も調整される必要がある。具体的に、復号器は、MPMリストを構築する際に、現在ブロック周辺の隣接ブロックのイントラ予測モードを参照する必要がある。周辺の隣接ブロックとしては、例えば、左隣接ブロック、上隣接ブロック、左上隣接ブロック、右上隣接ブロック、左下隣接ブロックなどが挙げられる。空間的な相関性のため、ある予測モードが周辺の隣接ブロックに用いられる場合、同じ又は類似の予測モードが現在ブロックに用いられるが確率高い。
選択的に、IWCPモードの第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モードであるしかない。従って、参照のためのある隣接ブロックに用いられるイントラ予測モードは、イントラ非角度予測モードであり、即ち、第一候補モードがイントラ角度予測モードではない場合、復号器は、現在ブロックのMPMリストを構築する際に、その参照ブロックに用いられるイントラ非角度予測モードを利用せず、即ち、当該イントラ非角度予測モードを現在ブロックのMPMリストに追加しない。
選択的に、第一イントラ予測モード及び第二イントラ予測モードが属するプリセット角度予測モード集合は、全てのイントラ角度予測モードのサブセットである。そのため、参照のためのある隣接ブロックに用いられるイントラ予測モードが、当該プリセット角度予測モード集合に含まれていないイントラ角度予測モードであり、即ち、第一候補モードがイントラ角度予測モードであり且つプリセット角度予測モード集合に属しない場合、復号器は、現在ブロックのMPMリストを構築する際に、当該プリセット角度予測モード集合に含まれていないイントラ角度予測モードを、プリセット角度予測モード集合内の、角度が類似なイントラ角度予測モードに変換し、次に、MPMリストに追加する。AVS3を例として、プリセット角度予測モード集合により、第一イントラ予測モード及び第二イントラ予測モードは、モード番号が4~31であるイントラ角度予測モードに限定され、また、モード番号が43であるイントラ角度予測モードが現在ブロックの隣接ブロックに用いられる場合、復号器は、モード番号が43であるイントラ角度予測に類似する、モード番号が12であるイントラ角度予測を、IWCPモードにおける現在ブロックのMPMリストに追加することができる。
また、本出願の実施形態において、復号器は、フィルタリングされた候補モード及び第二候補モードに基づいて、MPMリストを構築する際に、フィルタリングされた候補モードが予め設定された追加条件を満たす場合、フィルタリングされた候補モードをMPMリストに追加し、MPMリストが予め設定されたリスト長Lを満たしておらず、且つ第二候補モードが予め定められた追加条件を満たす場合、第二候補モードをMPMリストに追加する。Lは1以上の整数である。
例示的に、本出願において、Lの値は4であることができ、即ち、MPMリストの予め設定されたリスト長が4であり、又は、MPMリストには4つのMPMが含まれる。
なお、本出願の実施形態において、復号器は、モード番号の昇順に従って、MPMリストにおけるL個のモードを並び替えることができる。
なお、本出願の実施形態において、フィルタリングされた候補モードとMPMリストにおける全ての予測モードとが異なる場合、復号器は、フィルタリングされた候補モードが予め設定された追加条件を満たすと特定することができる。それに応じて、第二候補モードとMPMリストにおける全ての予測モードとが異なる場合、復号器は、第二候補モードが予め定められた追加条件を満たすと特定することができる。
なお、本出願の実施形態において、復号器は、隣接ブロックに対応するフィルタリングされた候補モードをMPMリストに追加する際に、隣接ブロックに対応する順序パラメータを特定し、順序パラメータに基づいて、隣接ブロックに対応するフィルタリングされたイントラ候補モードを順にMPMリストに追加することができる。復号器は、隣接ブロックと現在ブロックとの間の空間距離に応じて、対応する順序パラメータを特定することができる。例えば、隣接ブロックと現在ブロックとの間の空間距離が近いほど、隣接ブロックと現在ブロックとの間の相関性が強くなり、追加処理をより先に行い、順序パラメータが小さくなる。隣接ブロックと現在ブロックとの間の空間距離が遠いほど、両者の相関性が弱くなり、追加処理をより後に行う、順序パラメータが大きくなる。
さらに、本出願の実施形態において、復号器は、フィルタリングされた候補モード及び/又は第二候補モードをMPMリストに追加した後、さらに、モード番号の昇順に従って、MPMリストにおけるL個の予測モードを並び替えることができる。
例示的に、本出願において、IWCPモードにおける現在ブロックのMPMリストはIwcpMpm[4]であり、即ち、MPMリストのリスト長は4であり、重み付け行列導出モードのインデックスはIwcpIndexであり、重み付け行列導出モードはAWPの56種の導出モードを再利用し、第一イントラ予測モード及び第二イントラ予測モードが属するプリセット角度予測モード集合は、モード番号が4~31であるイントラ角度予測モードを含むと仮定すれば、復号器は、現在ブロックのMPMリストを構築する際に、以下のステップを順次実行することができる。
ステップS1:配列cand_mode[10]を設け、cand_modeの全ての値を無効値に初期化する。cand_modeに対して以下の操作を実行する。
(a)隣接ブロックFが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[0]は、Fのイントラ予測モードに等しい。
(b)隣接ブロックGが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[1]は、Gのイントラ予測モードに等しい。
(c)隣接ブロックCが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[2]は、Cのイントラ予測モードに等しい。
(d)、隣接ブロックAが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[3]は、Aのイントラ予測モードに等しい。
(e)隣接ブロックBが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[4]は、Bのイントラ予測モードに等しい。
(f)隣接ブロックDが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[5]は、Dのイントラ予測モードに等しい。
(g)cand_mode[6]は、IwcpIndex%8に対応する候補モード0に等しい。
(h)cand_mode[7]は、IwcpIndex%8に対応する候補モード1に等しい。
(i)cand_mode[8]は、IwcpIndex%8に対応する候補モード2に等しい。
(j)cand_mode[9]は、IwcpIndex%8に対応する候補モード3に等しい。
隣接ブロックX(XはA、B、C、D、F又はG)が「存在する」ことは、当該ブロックが画像内にあるべきであり、且つブロックEと同一スライスに属するべきであることを意味する。そうではない場合、隣接ブロックが「存在しない」。ブロックが「存在しない」又はまだ復号化されていない場合、当該ブロックは「利用不可能」である。そうではない場合、当該ブロックは「利用可能」である。画像のサンプルが位置するブロックが「存在しない」又は当該サンプルがまだ復号化されていない場合、当該サンプルは「利用不可能」である。そうではない場合、当該サンプルは「利用可能」である。
本出願において、上記(a)から(f)までの実行手順が第一候補モードの特定プロセスであり、上記(g)から(j)までの実行手順が第二候補モードの特定プロセスである。復号器は、上記表2を参照して第二候補モードを特定することができる。
ステップS2:0から5までのiに対して、以下の操作を実行する。
(a)cand_mode[i]が3より小さい又はcand_mode[i]が33に等しい場合、cand_mode[i]を無効値に設定する。
即ち、第一候補モードがイントラ非角度予測モードである場合、復号器は、第一候補モードを直接に削除し、即ち、第一候補モードを利用しなくてもよい。
(b)そうでなければ、cand_mode[i]が3に等しい場合、cand_mode[i]を4に等しくする。
(c)そうでなければ、cand_mode[i]が32に等しい場合、cand_mode[i]を31に等しくする。
(d)そうでなければ、cand_mode[i]が33より大きい場合、次の操作を実行する。
cand_mode[i]が44より小さい場合、cand_mode[i]をcand_mode[i]-30に等しくする。
そうでなければ、cand_mode[i]が58より小さい場合、cand_mode[i]をcand_mode[i]-33に等しくする。
そうでなければ、cand_mode[i]をcand_mode[i]-34に等しくする。
即ち、第一候補モードがイントラ角度予測モードであり、且つプリセット角度予測モード集合に属しない場合、復号器は、プリセット角度予測モード集合から類似のイントラ角度予測モードを選択して第一候補モードの代替モードとし、当該代替モードをフィルタリングされた候補モードとする。
(e)そうでなければ、cand_mode[i]の値を補正しない。
即ち、第一候補モードがプリセット角度予測モード集合に属する場合、復号器は第一候補モードを直接に利用することができ、即ち、第一候補モードはフィルタリングされた候補モードである。
本出願において、上記ステップS2が第一候補モードのフィルタリングプロセスであり、第一候補モードに対応するフィルタリングされた候補モードが最終的に特定される。
ステップS3:mpm_numを0にし、0から9までのiに対して、以下の操作を実行する。
(a)cand_mode[i]が無効値ではない場合、次の操作を実行する。
cand_mode[i]とIwcpMpm[j]とを比較し、jは0からmpm_num-1であり、cand_mode[i]とIwcpMpm[j]のいずれとも等しくない場合、次の操作を実行する。
1.IwcpMpm[mpm_num]を、cand_mode[i]に等しくする。
2.mpm_numをmpm_num+1に等しくする。
3.mpm_numが4に等しい場合、ステップ3を終了する。
即ち、MPMリストにおける予測モードが4つ未満であるという前提では、フィルタリングされた候補モードとMPMリストにおけるいずれかの予測モードとが同じではない場合、復号器は、フィルタリングされた候補モードをMPMリストに追加することができる。予め設定された追加条件に合致する全てのフィルタリングされた候補モードをMPMリストに追加した後、MPMリストにおける予測モードが依然として4未満である場合、MPMリストのリスト長が4になるまで、復号器は、予め設定された追加条件を満たす第二候補モードを引き続きMPMリストに追加することができる。
ステップS4:IwcpMpm[4]の4つの値を昇順で並べ替える。
最後に、復号器は、MPMリストにおける4つのイントラ角度予測モードを、モード番号の昇順で並び替えることができる。
本出願では、上記ステップ102及びステップ103の実行順序を制限せず、即ち、第一モードインデックス及び第二モードインデックスの特定プロセスと、MPMリストの構築プロセスとの順序を制限しない。
ステップ104:第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。
本出願の実施形態において、復号器は、現在ブロックの第一モードインデックス及び第二モードインデックスを特定し、且つ、現在ブロックのMPMリストを構築した後、さらに、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定することができる。
なお、本出願の実施形態において、第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードであることができる。具体的に、本出願の実施形態において、第一イントラ予測モード及び第二イントラ予測モードは、プリセット角度予測モード集合における、互いに異なるイントラ角度予測モードであることができる。
即ち、本出願において、第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モードであるしかない。つまり、第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モード以外の他の基本イントラ予測モード(例えば、DCモード、Planarモード、PLANEモード、Bilinearモード、PCMモードなどを含むイントラ非角度予測モード)ではない。基本イントラ予測モードは、角度予測モード及び非角度予測モードを含むが、これらに限定されない。例えば、VVCに用いられる67種のイントラ予測モード、AVS3に用いられる66種のイントラ予測モードが挙げられる。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードをイントラ角度予測モードに制限することにより、一方では、IWCPモードを並列的に実装する場合に、イントラ角度重み付け予測をサポートする1セットの回路のみをハードウェアに追加すればよいため、IWCPモードのハードウェア実装の複雑度を低減することができ、他方では、イントラ重み付け組み合わせ予測モード自体は比較的複雑な内容を持つブロックに適用されるが、イントラ非角度予測モードは通常、比較的に均一なテクスチャ変化を持つシーンを扱うために用いられ、より少ないモードの利用によりオーバーヘッドを低減することができるため、IWCPモードにイントラ非角度予測モードを利用するか否かは、圧縮性能にほとんど影響がない。
また、本出願において、利用可能なイントラ予測モードが多いほど、より高い精度の予測値を生成することができるが、それに応じて、選択されたモードのフラグをビットストリームで伝送するためのオーバーヘッドは増加する。そのため、より良好な圧縮性能を取得するために、予測効果とオーバーヘッドとの両方のよりよいバランスを取るように合理の利用可能なイントラ予測モード集合を選択することができる。具体的に、復号器は、プリセット角度予測モード集合を利用して、第一イントラ予測モード及び第二イントラ予測モードの利用可能なイントラ角度予測モードを制限することができ、プリセット角度予測モード集合は、全てのイントラ角度予測モードの1つのサブセットである。AVS3を例として、AVS3には62種の角度モード、即ち、モード番号が3~32、34~65であるイントラ角度予測モードがある。
例示的に、本出願において、第一イントラ予測モード及び第二イントラ予測モードは、モード番号が3~32であるイントラ角度予測モードのみを利用してもよく、又は、モード番号が4~31である28個のイントラ角度予測モードのみを利用してもよい。
例示的に、本出願において、VVCを例として、第一イントラ予測モード及び第二イントラ予測モードは、モード番号が偶数であるイントラ角度予測モードのみを利用してもよく、又は、モード番号が奇数であるイントラ角度予測モードのみを利用してもよい。
例示的に、本出願において、第一イントラ予測モードに用いられる角度予測モード集合と、第二イントラ予測モードに用いられる角度予測モード集合とが異なる。選択的に、復号器は、同じプリセット角度予測モード集合を利用して、第一イントラ予測モード及び第二イントラ予測モードを制限することができる。即ち、第一イントラ予測モードは、モード番号が4~31である28個のイントラ角度予測モードしか利用できず、且つ、第二イントラ予測モードも、モード番号が4~31である28個のイントラ角度予測モードしか利用できない場合、第一イントラ予測モードと第二イントラ予測モードは、同じMPMリストを利用し、同じ又は類似の符号化・復号化方法を利用することができる。即ち、復号器は、異なるプリセット角度予測モード集合を利用して、第一イントラ予測モード及び第二イントラ予測モードを制限する場合、異なるMPMリスト又は著しく異なる符号化・復号化方法が、第一イントラ予測モード及び第二イントラ予測モードに用いられる必要がある。
また、本出願の実施形態において、復号器は、インデックス値とバイナリ文字列との間の第一マッピング関係表を特定することができる。第一マッピング関係表には、第一長さを有するバイナリ文字列、第二長さを有するバイナリ文字列、及び第三長さを有するバイナリ文字列がそれぞれ含まれる。
例示的に、本出願において、第一長さは3ビット、第二長さは5ビット、第三長さは6ビットである。
なお、本出願において、インデックス値とバイナリ文字列との間の第一マッピング関係表は、第一モードインデックス及び第二モードインデックスの値を特定するために用いられることができる。
選択的に、本出願において、AVS3において、モード番号が4~31である28個のイントラ角度予測モードが利用され、即ち、プリセット角度予測モード集合に合計で28個のモードが含まれる場合、4+8+16の形式でモードが符号化され得、即ち、符号語が最も短い4つのモード、符号語が短い8つのモード、符号語が長い16個のモードで符号化され得る。符号語が最も短い4つのモードは3ビットの符号語を利用し、即ち第一長さを利用する。符号語が短い8つのモードは5ビットの符号語を利用し、即ち第二長さを利用する。符号語が長い16個のモードは6ビットの符号語を利用し、即ち第三長さを利用する。
なお、本出願において、モード番号が4~31である28個のイントラ角度予測モードの予測角度は基本的に、常用の角度範囲全体をカバーしている。同時に、モード番号が4~31であるイントラ角度予測モードは、モード番号が34~65であるイントラ角度予測モードより簡単であり、この28個のモードが4+8+16の形式で符号化されることは符号語を無駄にしていないため、復号器は、モード番号が4~31である28個のイントラ角度予測モードに基づいて、プリセット角度予測モード集合を定義することが好ましい。
また、本出願の実施形態において、現在ブロックのMPMリストのリスト長が4である場合、第一長さを有するバイナリ文字列が、MPMリストにおける4つMPMに用いられることができ、即ち、符号語が最も短い4つのモードが、MPMリストにおける4つのMPMに用いられることができる。それに応じて、第二長さを有するバイナリ文字列及び第三長さを有するバイナリ文字列が、プリセット角度予測モード集合における、MPMリストに含まれていない他の予測モードに用いられることができる。
選択的に、本出願において、プリセット角度予測モード集合における、MPMリストにおける4つのMPM以外の他の24個のイントラ角度予測モードについて、復号器は、符号語が短いモードと符号語が長いモードとを均一に分布することができる。具体的に、復号器は、符号語が短い(第二長さを有するバイナリ文字列)8つのモードを、残りの24個のイントラ角度予測モードに均一に分布することができる。例えば、符号語が長い(第三長さを有するバイナリ文字列)2つのモードごとに符号語が短い(第二長さを有するバイナリ文字列)1つのモードが用いられる。さらに具体的な実行過程において、残りの24個のイントラ角度予測モードのうち、0~23というシリアル番号に対して、3を法とする(%3)剰余演算が施されることで実現し、例えば、3を法とするシリアル番号の剰余量が2であるモードが5ビットの符号語を利用し、即ち、第二長さを有するバイナリ文字列を利用する。3を法とするシリアル番号の剰余量が0又は1であるモードが6ビットの符号語を利用し、即ち、第三長さを有するバイナリ文字列を利用する。
例示的に、本出願において、モード番号が4~31である28個のイントラ角度予測モードが利用され、即ち、プリセット角度予測モード集合に28個のモードが含まれる場合、インデックス値とバイナリ文字列との間の第一マッピング関係表は表3に示されるようであり、第一長さは3ビット、第二長さは5ビット、第三長さは6ビットである。
1番目のビットは、MPMであるか否かを表すことができ、例えば、「1」はMPMであることを表し、「0」はMPMではないことを表す。第一イントラ予測モードがMPMである場合、MPMリストに4つのMPMが含まれていると仮定すれば、2つのビットを利用してMPMリストにおけるいずれのMPMが用いられるかを示すことができる。例えば、「00、01、10、11」はそれぞれ、MPMリストにおける1番目のMPM、2番目のMPM、3番目のMPM、4番目のMPMを表す。
さらに、本出願において、ビットフラグが0であるバイナリ文字列を、コンテキストモデルを利用して復号化し、ビットフラグが0ではないバイナリ文字列を、コンテキストモデルを利用せずに復号化する。ビットフラグの値は、いくつのbitが復号化されているかを表すことができ、ビットフラグはbinIdxで表されることができる。
なお、本出願において、復号化側では、表3に基づいて逆二値化する際に、binIdxが0であるバイナリ文字列を、コンテキストモデルを利用して復号化し、binIdxが0ではないバイナリ文字列を、等確率モデル(equal probability model)又はバイパスモード(bypass mode)を利用して復号化することができる。
また、本出願において、復号器は、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する際に、まず、インデックス値とバイナリ文字列との間の第一マッピング関係表に基づいて第一モードインデックスの値i(iは0以上の整数)を特定することができる。iが0以上且つL未満である場合、MPMリストにおける(i+1)番目の角度予測モードを第一イントラ予測モードとして特定する。iがL以上である場合、プリセット角度予測モード集合及びMPMリストを利用して、第一イントラ予測モードを特定する。
具体的に、本出願において、復号器は、プリセット角度予測モード集合及びMPMリストを利用して、第一イントラ予測モードを特定する際に、iがMPMリストにおける1番目のモードのモード番号以上である場合、iと1とを加算する。(i+1)がMPMリストにおける2番目のモードのモード番号以上である場合、復号器は、(i+1)と1とを加算する。(i+2)がMPMリストにおける3番目のモードのモード番号以上である場合、復号器は、(i+2)と1とを加算する。(i+3)がMPMリストにおける4番目のモードのモード番号以上である場合、復号器は、(i+3)と1とを加算する。復号器は、(i+4)を第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第一イントラ予測モードを特定する。
それに応じて、本出願において、復号器は、プリセット角度予測モード集合及びMPMリストを利用して、第一イントラ予測モードを特定する際に、iがMPMリストにおける1番目のモードのモード番号より小さい場合、iを第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第一イントラ予測モードを特定する。又は、(i+1)がMPMリストにおける2番目のモードのモード番号より小さい場合、復号器は、(i+1)を第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第一イントラ予測モードを特定する。又は、(i+2)がMPMリストにおける3番目のモードのモード番号より小さい場合、復号器は、(i+2)を第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第一イントラ予測モードを特定する。又は、(i+3)がMPMリストにおける4番目のモードのモード番号より小さい場合、復号器は、(i+3)を第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第一イントラ予測モードを特定する。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、且つ、上記表3に示されたインデックス値とバイナリ文字列との間の第一マッピング関係表に基づいて特定された第一モードインデックスの値iは、5である場合、モード番号が4~31である28個のイントラ角度予測モードを含むプリセット角度予測モード集合において、iと、MPMリストにおける4つのMPMのモード番号とを順に比較する。具体的に、5は、MPMリストにおける1番目のモードのモード番号より大きいため、復号器は、iと1とを加算することができ、即ち、i+1=6である。次に、復号器は、6とMPMリストにおける2番目のモードのモード番号とを比較する。6が8より小さいため、復号器は、(i+1)の値6を第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合における、モード番号が6であるイントラ予測モードを第一イントラ予測モードとして特定することができる。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、且つ、上記表3に示されたインデックス値とバイナリ文字列との間の第一マッピング関係表に基づいて特定された第一モードインデックスの値iは、10である場合、モード番号が4~31である28個のイントラ角度予測モードを含むプリセット角度予測モード集合において、iと、MPMリストにおける4つのMPMのモード番号とを順に比較する。具体的に、10は、MPMリストにおける1番目のモードのモード番号より大きいため、復号器は、iと1とを加算することができ、即ち、i+1=11である。次に、復号器は、11とMPMリストにおける2番目のモードのモード番号と比較する。11が8より大きいため、復号器は、(i+1)と1とを加算することができ、即ち、(i+1)+1=12である。次に、復号器は、12とMPMリストにおける3番目のモードのモード番号と比較する。12が12に等しいため、復号器は、(i+2)と1とを加算することができ、即ち、(i+2)+1=13である。次に、復号器は、13とMPMリストにおける4番目のモードのモード番号と比較する。13が16より小さいため、復号器は、(i+3)の値13を第一イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合における、モード番号が13であるイントラ予測モードを第一イントラ予測モードとして特定することができる。
また、本出願において、復号器は、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する際に、まず、第一マッピング関係表に基づいて第二モードインデックスの値j(jは0以上の整数)を特定することができる。jが0以上且つL未満である場合、MPMリストにおける(i+1)番目の角度予測モードを第一イントラ予測モードとして特定する。jがL以上である場合、プリセット角度予測モード集合及びMPMリストを利用して、第一イントラ予測モードを特定する。
具体的に、本出願において、復号器は、プリセット角度予測モード集合及びMPMリストを利用して、第二イントラ予測モードを特定する際に、jがMPMリストにおける1番目のモードのモード番号以上である場合、復号器は、jと1とを加算する。(j+1)がMPMリストにおける2番目のモードのモード番号以上である場合、復号器は、(j+1)と1とを加算する。(j+2)がMPMリストにおける3番目のモードのモード番号以上である場合、復号器は、(j+2)と1とを加算する。(j+3)がMPMリストにおける4番目のモードのモード番号以上である場合、復号器は、(j+3)と1とを加算する。復号器は、(j+4)を第二イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第二イントラ予測モードを特定する。
それに応じて、本出願において、復号器は、プリセット角度予測モード集合及びMPMリストを利用して、第二イントラ予測モードを特定する際に、jがMPMリストにおける1番目のモードのモード番号より小さい場合、jを第二イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第二イントラ予測モードを特定する。(j+1)がMPMリストにおける2番目のモードのモード番号より小さい場合、復号器は、(j+1)を第二イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第二イントラ予測モードを特定する。又は、(j+2)がMPMリストにおける3番目のモードのモード番号より小さい場合、復号器は、(j+2)を第二イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第二イントラ予測モードを特定する。又は、(j+3)がMPMリストにおける4番目のモードのモード番号より小さい場合、復号器は、(j+3)を第二イントラ予測モードのモード番号として特定し、プリセット角度予測モード集合から第二イントラ予測モードを特定する。
例示的に、本出願において、IWCPモードが現在ブロックに用いられ、現在ブロックのMPMリストの長さは4であり、即ち、L=4であり、且つ、プリセット角度予測モード集合はモード番号が4~31である28個のイントラ角度予測モードを含む場合、復号器は、ビットストリームを復号化することにより、第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_mode1_indexを特定することができる。さらに、第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_mode1_indexに基づいて、第一イントラ予測モードをIwcpPredMode0として導出し、第二イントラ予測モードをIwcpPredMode1として導出することができる。
復号器は、第一モードインデックスiwcp_pred_mode0_indexを利用して、第一イントラ予測モードIwcpPredMode0を特定する際に、具体的に、次の操作を実行することができる。
1.表3に基づいて、バイナリ文字列を逆二値化することにより、iwcp_pred_mode0_indexの値をiに特定する。
具体的に、復号化によりバイナリ文字列形式のiwcp_pred_mode0_indexを特定した後、表3に基づいて、逆二値化によりバイナリ文字列を特定することができ、即ち、表3の右欄からiwcp_pred_mode0_indexにマッチングしたバイナリ文字列を見つけ、次に、同じ行の左欄からiwcp_pred_mode0_indexの値iを特定する。
2.iが0以上4未満である場合、IwcpPredMode0はIwcpMpm[i]に等しくなる。
3.iが4以上である場合、IwcpPredMode0は、(iwcp_pred_mode0_index+(iwcp_pred_mode0_index>=IwcpMpm[0])+((iwcp_pred_mode0_index+1)>=IwcpMpm[1])+((iwcp_pred_mode0_index+2)>=IwcpMpm[2])+((iwcp_pred_mode0_index+3)>=IwcpMpm[3])) に等しくなる。
即ち、本出願において、第一イントラ予測モードIwcpPredMode0がMPMリストに属しておらず、プリセット角度予測モード集合における、MPMリストにおけるMPM以外の他の24個のイントラ角度予測モードである場合、復号器は、第一モードインデックスiwcp_pred_mode0_indexの値iと、MPMリストにおける各角度予測モードのモード番号とを比較し、比較結果に応じて、1を加算するか否かを特定する。最終的に、復号器は、第一イントラ予測モードのモード番号を算出し、当該モード番号に従って、プリセット角度予測モード集合から第一イントラ予測モードを特定する。
復号器は、第二モードインデックスiwcp_pred_mode1_indexを利用して、第二イントラ予測モードIwcpPredMode1を特定する際に、具体的に、次の操作を実行することができる。
1.表3に基づいて、バイナリ文字列を逆二値化することにより、iwcp_pred_mode1_indexの値をjに特定する。
具体的に、復号化によりバイナリ文字列形式のiwcp_pred_mode1_indexを特定した後、表3に基づいて、逆二値化によりバイナリ文字列を特定することができ、即ち、表3の右欄からiwcp_pred_mode1_indexにマッチングしたバイナリ文字列を見つけ、次に、同じ行の左欄からiwcp_pred_mode1_indexの値jを特定する。
2.jが0以上4未満である場合、IwcpPredMode1はIwcpMpm[i] に等しくなる。
3.jが4以上である場合、IwcpPredMode1は(iwcp_pred_mode1_index+(iwcp_pred_mode1_index>=IwcpMpm[0])+((iwcp_pred_mode1_index+1)>=IwcpMpm[1])+((iwcp_pred_mode1_index+2)>=IwcpMpm[2])+((iwcp_pred_mode1_index+3)>=IwcpMpm[3])) に等しくなる。
また、本出願の実施形態において、IWCPモードでは、第一イントラ予測モード及び第二イントラ予測モードを利用して現在ブロックの予測値を特定する必要がある。第一イントラ予測モード及び第二イントラ予測モードは、1つのプリセット角度予測モード集合を共有することができ、また、同一のMPMリストを共有することもできる。IWCPモードにおける第一イントラ予測モードと第二イントラ予測モードは同じではないため、第二イントラ予測モードを符号化・復号化する際に、第一イントラ予測モードを参照することができる。具体的に、第二イントラ予測モードを特定する際に、第一イントラ予測モードを排除することができる。
本出願において、28個のイントラ角度予測モードについては、上記4+8+16の符号化・復号化方式では、MPMリストにおける4つのMPMが出現する確率が高い(第一イントラ予測モードがMPMリストにおける4つのMPMのうちの1つである確率は約50%であり、第二イントラ予測モードがMPMリストにおける4つのMPMのうちの1つである確率は約50%である)。第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMである場合、第二イントラ予測モードを特定する際に、MPMリストにおける、第一イントラ予測モード以外の他の3つのMPMから1つを選択しかできない。このように、元では、4つから1つを選択し、4つの3ビットの符号語を必要としたが、3つから1つを選択し、1つの2ビットの符号語と、2つの3ビットの符号語とを必要とするようになる。それに応じて、第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMではない場合、第二イントラ予測モードについては、8+16の24個のイントラ角度予測モードから1つ除去してもよいが、このような影響は比較的小さい。
上記から分かるように、第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMである場合、第二イントラ予測モードを特定する際に、第一イントラ予測モードを先に削除することができ、それによって、オーバーヘッドを削減することができる。
さらに、本出願の実施形態において、第一イントラ予測モードがMPMリストにおける1つのMPMである場合、即ち、復号器は、第一モードインデックスの値iが0以上且つL未満である場合、MPMリストにおける(i+1)番目の角度予測モードを第一イントラ予測モードとして特定した後、第二イントラ予測モードを特定する際に、復号器は、インデックス値とバイナリ文字列との間の第二マッピング関係表に基づいて、第二モードインデックスの値jを特定することができる。jがi以上である場合、jと1とを加算する。1を加算した後、jが0以上且つL未満である場合、MPMリストにおける(j+1)番目の角度予測モードを第二イントラ予測モードとして特定する。jがL以上である場合、プリセット角度予測モード集合及びMPMリストを利用して第二イントラ予測モードを特定する。
また、本出願の実施形態において、復号器は、インデックス値とバイナリ文字列との間の第二マッピング関係表を特定することができる。第二マッピング関係表には、第一長さを有するバイナリ文字列、第二長さを有するバイナリ文字列、第三長さを有するバイナリ文字列、及び第四長さを有するバイナリ文字列がそれぞれ含まれる。
例示的に、本出願において、第一長さは3ビット、第二長さは5ビット、第三長さは6ビット、第四長さは2ビットである。
なお、本出願において、インデックス値とバイナリ文字列との間の第二マッピング関係表は、第二モードインデックスの値を特定するためのみに用いられる。
選択的に、本出願において、インデックス値とバイナリ文字列との間の第二マッピング関係表は、表4に示されるようであり、第一長さは3ビット、第二長さは5ビット、第三長さは6ビット、第四長さは2ビットである。
MPMリストの長さは4であり、プリセット角度予測モード集合は、モード番号が4~31である28個のイントラ角度予測モードを含む。復号器は、ビットストリームを復号化することにより、第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_mode1_indexを特定することができる。さらに、第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_mode1_indexに基づいて、第一イントラ予測モードをIwcpPredMode0として導出し、第二イントラ予測モードをIwcpPredMode1として導出することができる。
なお、本出願において、復号化側では、表4に基づいて逆二値化する際に、binIdxが0であるバイナリ文字列を、コンテキストモデルを利用して復号化し、binIdxが0ではないバイナリ文字列を、等確率モデル又はバイパスモードを利用して復号化することができる。
復号器は、第一モードインデックスiwcp_pred_mode0_indexを利用して、第一イントラ予測モードIwcpPredMode0を特定する際に、具体的に、次の操作を実行することができる。
1.表3に基づいて、バイナリ文字列を逆二値化することにより、iwcp_pred_mode0_indexの値をiに特定する。
2.iが0以上4未満である場合、IwcpPredMode0はIwcpMpm[i]に等しくなる。
3.iが4以上である場合、IwcpPredMode0は、(iwcp_pred_mode0_index+(iwcp_pred_mode0_index>=IwcpMpm[0])+((iwcp_pred_mode0_index+1)>=IwcpMpm[1])+((iwcp_pred_mode0_index+2)>=IwcpMpm[2])+((iwcp_pred_mode0_index+3)>=IwcpMpm[3])) に等しくなる。
復号器は、第二モードインデックスiwcp_pred_mode1_indexを利用して、第二イントラ予測モードIwcpPredMode1を特定する際に、具体的に、次の操作を実行することができる。
1.iが0以上4未満である場合、次の操作を実行する。
(a)表4に基づいて、バイナリ文字列を逆二値化することにより、iwcp_pred_mode1_indexの値をjに特定する。
(b)iwcp_pred_mode1_indexがiwcp_pred_mode0_index以上であり、即ち、jがi以上である場合、iwcp_pred_mode1_indexはiwcp_pred_mode1_index+1に等しくなり、即ち、jと1とを加算し、つまり、j=j+1であり、次に、ステップ3を実行する。
2.iが4以上である場合、表3に基づいて、バイナリ文字列を逆二値化することにより、iwcp_pred_mode1_indexの値をjに特定し、次に、ステップ3を実行する。
3.jが0以上4未満である場合、IwcpPredMode1はIwcpMpm[i] に等しくなる。
4.jが4以上である場合、IwcpPredMode1は(iwcp_pred_mode1_index+(iwcp_pred_mode1_index>=IwcpMpm[0])+((iwcp_pred_mode1_index+1)>=IwcpMpm[1])+((iwcp_pred_mode1_index+2)>=IwcpMpm[2])+((iwcp_pred_mode1_index+3)>=IwcpMpm[3])) に等しくなる。
上記から分かるように、第二イントラ予測モードの特定は、第一イントラ予測モードに基づいて行われる必要がある場合、iwcp_pred_mode1_indexの値jは、iwcp_pred_mode0_indexの値iに依存する。具体的に、表4を例として、第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMである場合、第二イントラ予測モードの利用可能なMPMは3種しかなく、さらに、MPMは1つ又は2つのビットで表されることができる。例えば、「00、01、10」はそれぞれ、残りの1番目のMPM、2番目のMPM、3番目のMPMをそれぞれ表す。このように、1つの可能性を排除したため、符号化・復号化方法を変更し、又は、二値化や逆二値化の方法を変更することで、オーバーヘッドを削減することができる。
なお、本出願の実施形態において、プリセット角度予測モード集合はモード番号が4~31である28個のイントラ角度予測モードを含み、MPMリストの長さは4である場合、第一長さを有するバイナリ文字列、第二長さを有するバイナリ文字列、第三長さを有するバイナリ文字列を利用して、インデックス値とバイナリ文字列との間の第一マッピング関係表を特定する際に、まず、第一長さを有するバイナリ文字列、即ち、最も短い符号語がMPMリストにおける4つのMPMに用いられることができる。次に、第二長さを有するバイナリ文字列が、残りの24個のイントラ角度予測モードから選択された8つのイントラ角度予測モードに用いられ、第三長さを有するバイナリ文字列が、選択された16個のイントラ角度予測モードに用いられる。
具体的に、本出願において、残りの24個のイントラ角度予測モードについて、モード番号の昇順に従って、短い符号語、即ち第二長さを有するバイナリ文字列が前の8つのモード番号に対応する予測モードに用いられ、次に、長い符号語、即ち第三長さを有するバイナリ文字列が、後続の16個のモード番号に対応する予測モードに用いられることができる。
例示的に、本出願において、上記表3に示されたインデックス値とバイナリ文字列との間の第一マッピング関係表を、下記表5に置き換えることが可能である。インデックス値とバイナリ文字列との間の第一マッピング関係表を表すための表5は、第一モードインデックス及び第二モードインデックスの値を特定するために用いられることもできる。
それに応じて、上記表4に示されたインデックス値とバイナリ文字列との間の第二マッピング関係表を、下記表6に置き換えることが可能である。インデックス値とバイナリ文字列との間の第二マッピング関係表を表すための表6は、第二モードインデックスの値を特定するために用いられることもできる。
なお、本出願において、モード番号が4~31である28個のイントラ角度予測モードが利用され、即ち、プリセット角度予測モード集合に28個のモードが含まれる場合、4+8+16の形式で、即ち3ビットの符号語を有する4つのモード、5ビットの符号語を有する8つのモード、6ビットの符号語を有する16個のモードを利用して、符号化することができる。
選択的に、本出願において、プリセット角度予測モード集合に合計で20個のモードが含まれる場合、これらのモードは、4つの3ビットの符号語、16個の5ビットの符号語で表されることができる。
選択的に、本出願において、プリセット角度予測モード集合に合計で36個のモードが含まれている場合、これらのモードは、4つの3ビットの符号語、32個の6ビットの符号語で表されることができる。例えば、AVS3では、モード番号が4~31、42~45、及び56~59という36種のイントラ角度予測モードが用いられる。
なお、本出願において、プリセット角度予測モード集合における全てのモードが表3又は表4に示されたような1セットのバイナリ文字列で表される場合、「符号語」をバイナリ文字列として理解することができる。符号語の長さは、バイナリ文字列の長さとして理解されることができる。もう1つの表現方法は、フラグとバイナリ文字列との合計である。例えば、1つのバイナリのMPM_flagは、現在のモードがMPMモードであるか否かを示すために用いられ、即ち、MPM_flagが1である場合、現在のモードがMPMモードであることを示し、MPM_flagが0である場合、現在のモードがMPMモードではないことを示す。現在のモードがMPMモードである場合、MPMは合計4つの可能性を持ち、2ビットのバイナリ文字列で現在のモードがいずれのMPMであるかを示す。この場合、符号語は、フラグとバイナリ文字列との合計であると理解されることができ、符号語の長さは、フラグとバイナリ文字列との合計の長さであると理解されることができる。
ステップ105:現在ブロックの重み付け行列を特定し、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定する。
本出願の実施形態において、現在ブロックに用いられる第一イントラ予測モード及び第二イントラ予測モードを特定した後、さらに、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定するように、復号器は、現在ブロックの重み付け行列を特定する必要がある。
具体的に、本出願において、復号器は、現在ブロックの重み付け行列導出モードに基づいて、現在ブロックの重み付け行列を特定することができる。
さらに、本出願において、復号器は、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定する際に、まず、第一イントラ予測モードに基づいて現在ブロックの第一予測値を特定し、第二イントラ予測モードに基づいて現在ブロックの第二予測値を特定し、次に、重み付け行列を利用して第一予測値及び第二予測値に対して重み付け演算を行うことにより、現在ブロックの予測値を取得することができる。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モードであることができ、即ち、本出願の実施形態において、2つの異なるイントラ角度予測モードが利用される。そして、第一イントラ予測モード及び第二イントラ予測モードを利用して、第一予測ブロック及び第二予測ブロックをそれぞれ生成し、さらに、第一予測ブロック、第二予測ブロック、及び重み付け行列に基づいて、現在ブロックの予測ブロックを特定する。
また、本出願の実施形態において、全ての可能な重み付け行列における各重み付け行列における全ての点の重み値が同一であるというわけではない。換言すれば、少なくとも1つの可能な重み付け行列には、少なくとも2つの異なる重み値が含まれる。
なお、本出願の実施形態において、復号器は、GPM又はAWPに類似した方法で重み付け行列の特定を実現することができる。具体的に、GPM又はAWPが、同一のビデオ符号化・復号化規格又は符号器・復号器に用いられる場合、当該方法で重み付け行列を特定することができ、それで、一部の同じ論理が再利用されることができる。例えば、AWPがAVS3におけるインター予測に用いられる場合、AVS3ではAWPの方法を利用して重み付け行列を特定することができる。同一のビデオ符号化・復号化規格又は符号器・復号器におけるGPM又はAWPとは異なる方法、例えば、異なるモード数、又は遷移領域の異なるアルゴリズム、又は異なるパラメータを利用することなども勿論可能である。インター予測が時間関連性を利用するため、参照画像における再構成済みの画像が参照ブロックとして用いられる。イントラ予測が空間関連性を利用するため、現在ブロックの周辺の再構成済みのサンプルが参照サンプルとして用いられる。空間領域において、距離が近いほど関連性が強くなり、距離が遠いほど関連性が悪くなる。従って、ある重み付け行列により、予測ブロックのサンプル位置が参照サンプルから遠ざけるようになる場合、そのような重み行列は既存技術よりも適切な予測値を生成できない可能性があるため、そのような重み行列を利用しないことができる。その代わりに、その重み行列をインター予測に用いられることができる。
本出願の実施形態において、イントラ予測方法が提供される。符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができ、次に、多様な重み付け行列で2つの異なる予測ブロックを組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
上記実施形態に基づいて、本出願のさらなる別の実施形態において、下記予測サンプル行列が上記した予測ブロックであり、即ち、「ブロック」は「サンプル行列」であると理解されることができ、明細書に言及された配列は行列という意味である。IWCPが輝度コンポーネントの予測に用いられることを例とすることができるが、本発明では輝度コンポーネントに限定されず、彩度コンポーネント及びその他のいかなるフォーマットのいかなるコンポーネントに用いられることもできる。例として、本出願に提案されたイントラ予測方法がAVS3に適用され、復号器がIWCPモードを利用して現在ブロックの予測値を特定する具体的なプロセスは、以下のよう記述されることができる。
なお、1つの具体的な復号化実施例において、AWP技術がAVS3に用いられるため、イントラ重み付け組合せ予測(IWCP)モードの重み付け行列がAWPの重み付け行列を再利用し、即ち、IWCPの重み付け行列の導出方式と、AWPの重み付け行列の導出方式とは同じである。
例えば、1つのシーケンスレベルのフラグ(flag)は、IWCPモードが復号化待ちの現在のシーケンスに用いられるか否かを特定するために用いられる。例えば、シーケンスヘッダの定義が表示7に示されている。
IWCPモードの利用フラグiwcp_enable_flagは2値変数である。iwcp_enable_flagの値が「1」であることは、IWCPモードが利用可能であることを示し、iwcp_enable_flagの値が「0」であることは、IWCPモードが利用不可能であることを示す。IwcpEnableFlagの値はiwcp_enable_flagに等しい。ビットストリームにiwcp_enable_flagが存在しない場合、IwcpEnableFlagの値は0となる。
選択的に、IWCPモードが復号化待ちの現在フレームに用いられるか否かを特定するためのフレームレベルのフラグを利用することができる。例えば、IWCPモードがイントラフレーム(例えば、Iフレーム)に用いられ、インターフレーム(例えば、Bフレーム、Pフレーム)に用いられないように構成されることができる。又は、IWCPモードがイントラフレームに用いられず、インターフレームに用いられるように構成されることができる。又は、IWCPモードが一部のインターフレームに用いられ、一部のインターフレームに用いられないように構成されることができる。
選択的に、フレームレベル以下且つCUレベル以上(例えば、tile、slice、patch、LCUなど)のフラグは、IWCPモードがフラグに対応する領域に用いられるか否かを指示するために用いられることができる。
例示的に、復号器は現在CUを復号化する際に、現在CUがIWCPの利用条件に適合する場合、現在CUのIWCP利用フラグを復号化する。そうでなければ、現在CUのIWCP利用フラグを復号化する必要がない。IWCPの利用条件は、現在CUがイントラ符号化されたCUであり(以下、IntraCuFlagが1である)、IWCPが現在のシーケンスに用いられることができ(以下、IwcpEnableFlagが1である)、且つ現在ブロックのサイズが制限に適合する(以下、width>=IwcpMinSize&& height>=IwcpMinSize &&width<=IwcpMaxSize&& height<=IwcpMaxSize)ことである。1つの可能な場合では、IwcpMinSizeが8に等しく、IwcpMaxSizeが32に等しい。1つの可能な場合では、IwcpMinSizeは8に等し、IwcpMaxSizeは16に等しい。widthは現在CUの幅、heightは現在CUの高さである。
例示的に、YUV4:2:0フォーマットの符号化では、8×8の輝度ブロックが同じ位置にある4×4の彩度ブロックに対応する。1つの可能な方法としては、IWCPモードが8×8の輝度ブロックに用いられることができるが、4×4の彩度ブロックに用いられることが禁止される。これは、4×4のブロックでは、IWCPモードによる予測効果の向上が顕著ではなく、また、ハードウェア実装のコストが増加するためである。
例示的に、IWCPが現在CUに用いられる場合、派生ツリー(Derived Tree、DT)モード、イントラ予測フィルタ(Intra Prediction Filter、IPF)、改善されたイントラ予測(Improved Intra Prediction、IIP)などの他のモードが現在CUに用いられない。即ち、IWCPが現在CUに用いられる場合、これらのモードに関する情報を処理する必要がなくなる。これは、IWCPとこれらのモードとを組み合わせても、予測効果が著しく向上することができないためである。逆に、IWCPが現在CUに用いられる場合、DT、IPF、及びIIPを使用しないことがデフォルトであれば、これらのモードを利用するか否かを示すフラグ(例えば、dt_split_flag,intra_pf_flag,iip_flag)をビットストリームで伝送する必要がなくなり、符号語の節約ができ、圧縮効率に有利となる。
1つの例が表8に示される。
IWCPフラグiwcp_flagは2値変数であり、iwcp_flagの値が「1」であることは、IWCPモードが利用されるべきであることを示し、iwcp_flagの値が「0」であることは、IWCPモードが利用されるべきではないことを示す。IwcpFlagの値は、iwcp_flagの値に等しい。ビットストリームにiwcp_flagが存在しない場合、IwcpFlagの値は0となる。
DTモード分割フラグdt_split_flagは2値変数である。dt_split_flagの値が「1」であることは、DTモード分割を行うべきであることを示し、dt_split_flagの値が「0」であることは、DTモード分割を行うべきではないことを示す。DtSplitFlagの値はdt_split_flagの値に等しく、その値の範囲は0~4である。ビットストリームにdt_split_flagが存在しない場合、DtSplitFlagの値は0となる。DTモード分割は、現在CUが矩形の予測ユニットに分割されることができることを示す。
IPFフラグintra_pf_flagは2値変数である。intra_pf_flagの値が「1」であることは、IPFが現在符号化ユニットに用いられるべきであることを示し、intra_pf_flagの値が「0」であることは、IPFが現在符号化ユニットに用いられるべきではないことを示す。IntraPfFlagの値は、intra_pf_flagの値に等しい。ビットストリームにintra_pf_flagが存在しない場合、IntraPfFlagの値は0となる。初期予測値が生成された後、IPFは、参照サンプルを利用して初期予測値をフィルタリングすることにより、新たな予測値を生成するために用いられることができる。
IIPフラグiip_flagは2値変数である。iip_flagの値が「1」であることは、IIPが現在符号化ユニットに用いられるべきであることを示し、iip_flagの値が「0」であることは、IIPが現在符号化ユニットに用いられるべきではないことを示す。IipFlagの値は、iip_flagの値に等しい。ビットストリームにiip_flagが存在しない場合、IipFlagの値は0となる。IIPは、IIPが利用されない場合のものとは異なるフィルタを利用して予測値を生成するために用いられることができる。一例として、ある角度予測に対して、IIPでは、8タップフィルタ(8-tap filter)を利用して予測値を生成する。IIPが利用されない場合、4タップフィルタを利用して予測値を生成する。
例示的に、IWCPが現在CUに用いられる場合、下記表9のように、ビットストリームを復号化し、重み付け行列導出モードiwcp_idxと、2つのイントラ予測モードの第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_model_indexとを特定する必要がある。重み付け行列導出モードは、AWPの重み付け行列導出モードを再利用する。
IWCPモードのインデックスiwcp_idxは、IWCPモードの重み付け行列を特定するために用いられる。IwcpIndexの値は、iwcp_idxの値に等しい。ビットストリームにiwcp_idxが存在しない場合、IwcpIndexの値は0に等しくなる。
IWCPモードにおける第一モードインデックスiwcp_pred_mode0_indexは、IWCPモードにおける輝度ブロックの第一イントラ予測モードIwcpPredMode0を特定するために用いられる。
IWCPモードにおける第二モードインデックスiwcp_pred_mode1_indexは、IWCPモードにおける輝度ブロックの第二イントラ予測モードIwcpPredMode1を特定するために用いられる。
さらに、第一イントラ予測モード及び第二イントラ予測モードを特定した後、上記実施形態におけるステップ105の方法に基づいて、IwcpPredMode0に基づいて第一イントラ輝度予測サンプル行列predMatrixY0を特定し、IwcpPredMode1に基づいて第二イントラ輝度予測サンプル行列predMatrixY1を特定することができる。IwcpIndexに基づいて輝度重み付け行列IwcpWeightMatrixYを特定した後、輝度重み付け行列IwcpWeightMatrixYを利用して、第一イントラ輝度予測サンプル行列predMatrixY0及び第二イントラ輝度予測サンプル行列predMatrixY1に対して重み付け演算を行うことにより、輝度予測サンプル行列predMatrixIwcpYを最終的に特定する。
具体的に、2つのイントラ輝度予測サンプル行列(predMatrixY0、predMatrixY1)、及び重み付け行列IwcpWeightMatrixYに基づいて、IWCPの輝度予測サンプル行列predMatrixIwcpYを特定する際に、具体的な方法は以下の通りである。
イントラ重み付け組み合わせ予測モードの予測サンプル行列predMatrixIwcpYにおける要素predMatrixIwcpY[x][y]の値は、((predMatrixY0[x][y]*IwcpWeightMatrixY[x][y]+predMatrixY1[x][y]*(8-IwcpWeightMatrixY [x][y])+4) >> 3)である。(x、y)は、現在ブロック内の座標位置である。
さらに、IWCPの予測ブロック、即ち、IWCPモードの予測サンプル行列predMatrixIwcpYを特定した後、後続の処理は、量子化係数の復号化、逆変換及び逆量子化による残差ブロックの特定、残差ブロックと予測ブロックとの組み合わせによる再構成ブロックの取得、後続のインループフィルタリングなどをさらに含むことができる。
本出願の実施形態において、イントラ予測方法が提供される。符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができる。次に、多様な重み付け行列で2つの異なる予測ブロック組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
本出願の1つの実施形態において、符号器に適用されるイントラ予測方法が提供される。図9は、イントラ予測方法の実現を示す2つ目のフローチャートである。図11に示されるように、符号器によるイントラ予測する方法は、以下のステップを含むことができる。
ステップ201:IWCPモードを利用して現在ブロックのイントラ予測値を特定する場合、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。
本出願の実施形態において、IWCPモードを利用して現在ブロックのイントラ予測値を特定する場合、符号器はまず、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定することができる。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。
なお、本出願の実施形態において、IWCPモードはイントラ予測方法の一種である。具体的に、IWCPモードでは、2つの異なるイントラ角度予測モードを現在ブロックのために特定し、そして、これら2つの異なるイントラ角度予測モードのそれぞれに基づいて、2つの予測ブロックをそれぞれ特定し、次に、1つの重み付け行列を特定し、重み付け行列に基づいてこれら2つの予測ブロックを組み合わせることで、新たな予測ブロックを最終的に取得することができ、即ち、現在ブロックの予測ブロックを取得する。
さらに、本出願の実施形態において、IWCPモードを適用する際に、現在ブロックのサイズを制限してもよい。
本出願の実施形態に係るイントラ予測方法では、2つの異なるイントラ角度予測モードをそれぞれ利用して2つの予測ブロックをそれぞれ生成し、重み付け行列に基づいて重み付けを行うことにより新たな予測ブロックを取得する必要があるため、複雑度を低減し、圧縮性能と複雑度との両方のバランスを考慮に入れて、本出願の実施形態において、当該IWCPモードがある特定のサイズを有する予測ブロックに用いられないように制限することができる。そこで、本出願において、符号器は、現在ブロックのサイズパラメータを先に特定し、そのサイズパラメータに基づいて、IWCPモードが現在ブロックに用いられるか否かを特定することができる。
なお、本出願の実施形態において、現在ブロックのサイズパラメータは、現在ブロックの高さ及び幅を含むことができる。そのため、符号器は、現在ブロックの高さ及び幅に基づいて、IWCPモードの利用を制限し、即ち、IWCPモードが用いられることができる予測ブロックのサイズを制限することができる。
例示的に、本出願において、幅及び高さがいずれも第一下限値以上であり、且つ幅及び高さがいずれも第一上限値以下である場合、IWCPモードが現在ブロックに用いられると特定することができる。このように、1つの可能な制限としては、予測ブロックの幅及び高さが第一上限値より小さく(又は以下であり)、且つ、予測ブロックの幅及び高さが第一下限値より大きい(又は以上である)場合のみ、IWCPモードが用いられる。なお、第一下限値は8であってもよく、第一上限値の値は16又は32などであってもよい。
例示的に、YUV4:2:0フォーマットの符号化では、8×8の輝度ブロックが同じ位置にある4×4の彩度ブロックに対応する。1つの可能な方法としては、IWCPモードが8×8の輝度ブロックに用いられることができるが、4×4の彩度ブロックに用いられることが禁止される。これは、4×4のブロックでは、IWCPモードによる予測効果の向上が顕著ではなく、また、ハードウェア実装のコストが増加するためである。
例示的に、本出願において、IWCPモードが復号化待ちの現在フレームに用いられるか否かを特定するためのフレームレベルのフラグが存在することができる。例えば、IWCPモードがイントラフレーム(例えば、Iフレーム)に用いられ、インターフレーム(例えば、Bフレーム、Pフレーム)に用いられないように構成されることができる。又は、IWCPモードがイントラフレームに用いられず、インターフレームに用いられるように構成されることができる。又は、IWCPモードが一部のインターフレームに用いられ、一部のインターフレームに用いられないように構成されることができる。イントラ予測がインターフレームに用いられてもよいため、IWCPモードがインターフレームに用いられる可能性もある。
例示的に、本出願において、IWCPモードがこの領域に用いられるか否かを特定するための、フレームレベル以下且つCUレベル以上(例えば、tile、slice、patch、LCUなど)のフラグが存在することができる。
なお、本出願の実施形態において、符号器は、最小のレート歪みを有する、イントラ予測モードと重み行列導出モードとの組み合わせを特定することができる。当該組み合わせは、第一イントラ予測モード、第二イントラ予測モード、及び重み行列導出モードを含む。
さらに、本出願の実施形態において、第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードであることができる。具体的に、本出願の実施形態において、第一イントラ予測モード及び第二イントラ予測モードは、プリセット角度予測モード集合における、互いに異なるイントラ角度予測モードであることができる。
即ち、本出願において、第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モードであるしかない。つまり、第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モード以外の他の基本イントラ予測モード(例えば、DCモード、Planarモード、PLANEモード、Bilinearモード、PCMモードなどを含むイントラ非角度予測モード)ではない。基本イントラ予測モードは、角度予測モード及び非角度予測モードを含むが、これらに限定されない。例えば、VVCに用いられる67種のイントラ予測モード、AVS3に用いられる66種のイントラ予測モードが挙げられる。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードをイントラ角度予測モードに制限することにより、一方では、IWCPモードを並列的に実装する場合に、イントラ角度重み付け予測をサポートする1セットの回路のみをハードウェアに追加すればよいため、IWCPモードのハードウェア実装の複雑度を低減することができ、他方では、イントラ重み付け組み合わせ予測モード自体は比較的複雑な内容を持つブロックに適用されるが、イントラ非角度予測モードは通常、比較的に均一なテクスチャ変化を持つシーンを扱うために用いられ、より少ないモードの利用によりオーバーヘッドを低減することができるため、IWCPモードにイントラ非角度予測モードを利用するか否かは、圧縮性能にほとんど影響がない。
また、本出願において、利用可能なイントラ予測モードが多いほど、より高い精度の予測値を生成することができるが、それに応じて、選択されたモードのフラグをビットストリームで伝送するためのオーバーヘッドは増加する。そのため、より良好な圧縮性能を取得するために、予測効果とオーバーヘッドとの両方のよりよいバランスを取るように合理の利用可能なイントラ予測モード集合を選択することができる。具体的に、符号器は、プリセット角度予測モード集合を利用して、第一イントラ予測モード及び第二イントラ予測モードの利用可能なイントラ角度予測モードを制限することができ、プリセット角度予測モード集合は、全てのイントラ角度予測モードの1つのサブセットである。AVS3を例として、AVS3には62種の角度モード、即ち、モード番号が3~32、34~65であるイントラ角度予測モードがある。
例示的に、本出願において、第一イントラ予測モード及び第二イントラ予測モードは、モード番号が3~32であるイントラ角度予測モードのみを利用してもよく、又は、モード番号が4~31である28個のイントラ角度予測モードのみを利用してもよい。
例示的に、本出願において、VVCを例として、第一イントラ予測モード及び第二イントラ予測モードは、モード番号が偶数であるイントラ角度予測モードのみを利用してもよく、又は、モード番号が奇数であるイントラ角度予測モードのみを利用してもよい。
例示的に、本出願において、第一イントラ予測モードに用いられる角度予測モード集合と、第二イントラ予測モードに用いられる角度予測モード集合とが異なる。選択的に、復号器は、同じプリセット角度予測モード集合を利用して、第一イントラ予測モード及び第二イントラ予測モードを制限することができる。即ち、第一イントラ予測モードは、モード番号が4~31である28個のイントラ角度予測モードしか利用できず、且つ、第二イントラ予測モードも、モード番号が4~31である28個のイントラ角度予測モードしか利用できない場合、第一イントラ予測モードと第二イントラ予測モードは、同じMPMリストを利用し、同じ又は類似の符号化・復号化方法を利用することができる。即ち、復号器は、異なるプリセット角度予測モード集合を利用して、第一イントラ予測モード及び第二イントラ予測モードを制限する場合、異なるMPMリスト又は著しく異なる符号化・復号化方法が、第一イントラ予測モード及び第二イントラ予測モードに用いられる必要がある。
ステップ202:現在ブロックのMPMリストを構築する。
本出願の実施形態において、符号器はさらに、現在ブロックのMPMリストを構築することができる。MPMリストにおける予測モードはいずれもイントラ角度予測モードである。
また、本出願の実施形態において、符号器は、現在ブロックのMPMリストを構築する際に、現在ブロックの重み付け行列導出モードを先に特定し、次に、重み付け行列導出モードを利用して現在ブロックのMPMリストを特定する必要がある。
なお、本出願において、重み付け行列導出モードは、現在ブロックに用いられる重み付け行列を特定するために用いられる。具体的に、重み付け行列導出モードは、重み付け行列を導出するモードであってもよい。所定の長さ及び幅を有する予測ブロックに対して、各種の重み付け行列導出モードごとに、1つの重み付け行列が導出されることができる。同じサイズを有する予測ブロックに対して、異なる重み付け行列導出モードから導出される重み付け行列が異なる。
例示的に、本出願において、AVS3におけるAWPに56種の重み付け行列導出モードがあり、VVCにおけるGPMに64種の重み付け行列導出モードがある。
選択的に、本出願において、符号器は、現在ブロックのMPMリストを構築する際に、直接に現在ブロックの隣接ブロックの予測モード及び重み付け行列導出モードに基づいて、MPMリストを構築することができる。
選択的に、本出願において、符号器は、現在ブロックのMPMリストを構築する際に、現在ブロックの隣接ブロックの予測モード、プリセット角度予測モード集合、及び重み付け行列導出モードに基づいて、MPMリストを構築することができる。プリセット角度予測モード集合は、全てのイントラ角度予測モードの1つのサブセットであり得る。AVS3を例として、プリセット角度予測モード集合は、モード番号が4~31である28個のイントラ角度予測モードのみを含むことができる。
本出願において、第一イントラ予測モード及び第二イントラ予測モードの範囲が制限されない場合、プリセット角度予測モード集合は、全てのイントラ角度予測モードの組み合わせであってもよい。第一イントラ予測モード及び第二イントラ予測モードの範囲が制限される必要がある場合、プリセット角度予測モード集合は、一部のイントラ角度予測モードの組み合わせのみであることができ、この場合、プリセット角度予測モード集合が、第一イントラ予測モード及び第二イントラ予測モードの範囲を制限するために用いられることができる。それによって、オーバーヘッドを効果的に低減し、圧縮性能を向上させることができる。
選択的に、本出願において、符号器は、現在ブロックの隣接ブロックのイントラ予測モード、プリセット角度予測モード集合、及び重み付け行列導出モードに基づいて、MPMリストを構築する際に、隣接ブロックの予測モードを利用して第一候補モードを特定し、重み付け行列導出モードを利用して第二候補モードを特定し、さらに、第一候補モード、第二候補モード、及びプリセット角度予測モード集合に基づいて、現在ブロックのMPMリストを構築することができる。
具体的に、本出願において、符号器は、隣接ブロックの予測モードを利用して第一候補モードを特定する際に、隣接ブロックが通常イントラ予測ブロックであり、且つ隣接ブロックの予測モードがイントラ予測モードである場合、隣接ブロックの予測モードを第一候補モードとして特定する。
本出願において、通常イントラ予測ブロックは、DCモード、Planarモード、Bilinearモード、角度予測モードなどの予測モードを利用した予測ブロックであり、IBCモード、イントラストリングコピー予測などの予測モードを利用した予測ブロックではないと理解されることができる。
具体的に、本出願において、符号器は、重み付け行列導出モードを利用して第二候補モードを特定する際に、まず、重み付け行列導出モードに基づいて境界線角度インデックスを特定し、次に、境界線角度インデックスを利用して、第二候補モードを特定することができる。
なお、本出願の実施形態において、第二候補モードがL個の異なるイントラ角度予測モードを含むと特定することができ、それによって、長さがLであるMPMリストの構築を確保することができる。
さらに、本出願の実施形態において、重み付け行列が2種の重み値を含む場合、重み値が変化する位置は、直線を形成する。又は、重み付け行列が複数種の重み値を含む場合、遷移領域において重み値が同じ位置が直線を形成し、その直線を境界線と称してもよい。右水平方向の角度を0度とし、反時計回りに角度が大きくなるようにしてもよい。この場合、境界線は、水平0度、垂直90度、45度、135度などの傾斜角度など、様々な角度を有することができる。ある重み行列が1つの予測ブロックに用いられる場合、例えば、境界線の両側に2つの異なる角度を有するテクスチャがあるか、又は境界線の一方の側に角度のあるテクスチャがあり、境界線の他方の側に平坦なテクスチャがあるなど、対応するテクスチャは、境界線の両側で異なる特性を示す可能性が高い。境界線自体も角度を有するため、境界線が1つの点でイントラ角度予測によって得られると仮定し、その境界線が現在ブロックのいくつかのテクスチャに近い可能性がため、この直線と現在ブロックの2つのイントラ予測モードとの間に相関性がある。
具体的に、本出願において、境界線が1つの点でイントラ角度予測によって得られると仮定すれば、少なくとも1つのイントラ角度予測モードを見つけることができ、このイントラ角度予測モードが境界線を近似的に作成するために用いられる。例えば、水平方向の境界線は水平イントラ予測モード(例えば、AVS3におけるモード24)にマッチングする。垂直方向の境界線は垂直イントラ予測モード(例えば、AVS3におけるモード12)にマッチングする。45度の境界線は左下から右下への45度のイントラ予測モード(例えば、AVS3におけるモード30)にマッチングしてもよく、右上から左下への225度のイントラ予測モード(例えば、AVS3におけるモード6)にマッチングしてもよい。1つの重み付け行列に1つの重み値しかない場合、DCモード、Planarモード、Bilinearモードなど、明らかに角度がないモードにマッチングすることができる。このように、重み付け行列導出モードは、いくつかのイントラ予測モードにマッチングすることができるため、重み付け行列導出モードを利用して、イントラ予測モードの復号化を補助することができる。
なお、本出願において、重み付け行列導出モードは重み付け行列のインデックスであってもよく、例えば、AWPの56種のモードが56種の重み付け行列導出モードであると考えられることができる。
例示的に、本出願において、重み付け行列導出モードとイントラ角度予測モードとの間のマッピング関係をさらに表すために、1つのマッピング関係表を構築してもよい。具体的に、AWPとGPMの複数のモードの境界線はいずれも同一角度を有し、例えば、AVS3のAWPは8つのモードおきに境界線が同一角度を有する。56種のAWPモードは、合計で8つの境界線角度を有する。境界線角度インデックスは、重み付け行列導出モードのモード番号に対して、8を法とする(%8)剰余演算が施されることで取得されることができる。例えば、上記表1はマッピング関係表であり、AVS3における角度モードを例として、境界線角度インデックス0と1はそれぞれ2つのイントラ角度予測モード(1つは右上から左下への予測モードであり、1つは左上から右下への予測モードである)に対応することができる。具体的に、他の境界線角度インデックスに対して、別の近似的に対応するイントラ角度予測モードを見つけるようにしてもよく、全ての境界線角度インデックスが1種のイントラ角度予測モードのみに対応するようにしてもよい。
1種の重み付け行列に対して、その境界線に対応するイントラ角度予測モードが利用される可能性が高いほか、境界線に関連するいくつかのイントラ角度予測モードが利用される可能性も高い。例えば、その境界線に近い角度、又はその境界線に垂直な角度などの、対応するイントラ角度予測モードが挙げられる。符号器は、重み付け行列とイントラ角度予測モードとの相関性を利用して、IWCPモードのMPMリストを構築することができる。例えば、IWCPモードのMPMリストを構築する際に、MPMリストのリスト長が4である場合、上記表2における境界線角度インデックスに対応する候補モードをMPMリストに追加することができる。
上記表2によれば、各境界線角度インデックスに対応する候補モードの数とMPMリストの長さが等しいことにより、参照のための隣接ブロックのイントラ予測モードが全て利用不可能である場合であってもMPMリストを埋め尽くすことができることを確保することができる。例えば、MPMリストの長さが4であれば、各境界線角度インデックスに対応する候補モードの数を4にすることができる。
さらに、本出願において、符号器は、第一候補モード、第二候補モード、及びプリセット角度予測モード集合に基づいて、MPMリストを構築する際に、プリセット角度予測モード集合に基づいて第一候補モードをフィルタリングすることにより、フィルタリングされた候補モードを取得し、フィルタリングされた候補モード及び第二候補モードに基づいて、MPMリストを構築する。
具体的に、本出願において、符号器は、プリセット角度予測モード集合に基づいて第一候補モードをフィルタリングすることにより、フィルタリングされた候補モードを取得する際に、第一候補モードがプリセット角度予測モード集合に属する場合、符号器は、第一候補モードをフィルタリングされた候補モードとして特定し、第一候補モードがイントラ角度予測モードであり且つプリセット角度予測モード集合に属しない場合、符号器は、プリセット角度予測モード集合から第一候補モードの代替モードを特定し、代替モードをフィルタリングされた候補モードとして特定する。
さらに、本出願において、第一候補モードがイントラ角度予測モードではない場合、符号器は、第一候補モードを直接に削除することができる。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードが属するプリセット角度予測モード集合は、全てのイントラ角度予測モードのサブセットであり、イントラ非角度予測モードを含まないため、IWCPモードに対して、現在ブロックのMPMの選択、即ちMPMリストの構築方法も調整される必要がある。具体的に、符号器は、MPMリストを構築する際に、現在ブロック周辺の隣接ブロックのイントラ予測モードを参照する必要がある。周辺の隣接ブロックとしては、例えば、左隣接ブロック、上隣接ブロック、左上隣接ブロック、右上隣接ブロック、左下隣接ブロックなどが挙げられる。空間的な相関性のため、ある予測モードが周辺の隣接ブロックに用いられる場合、同じ又は類似の予測モードが現在ブロックに用いられるが確率高い。
選択的に、IWCPモードの第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モードであるしかない。従って、参照のためのある隣接ブロックに用いられるイントラ予測モードは、イントラ非角度予測モードであり、即ち、第一候補モードがイントラ角度予測モードではない場合、符号器は、現在ブロックのMPMリストを構築する際に、その参照ブロックに用いられるイントラ非角度予測モードを利用せず、即ち、当該イントラ非角度予測モードを現在ブロックのMPMリストに追加しない。
選択的に、第一イントラ予測モード及び第二イントラ予測モードが属するプリセット角度予測モード集合は、全てのイントラ角度予測モードのサブセットである。そのため、参照のためのある隣接ブロックに用いられるイントラ予測モードが、当該プリセット角度予測モード集合に含まれていないイントラ角度予測モードであり、即ち、第一候補モードがイントラ角度予測モードであり且つプリセット角度予測モード集合に属しない場合、符号器は、現在ブロックのMPMリストを構築する際に、当該プリセット角度予測モード集合に含まれていないイントラ角度予測モードを、プリセット角度予測モード集合内の、角度が類似なイントラ角度予測モードに変換し、次に、MPMリストに追加する。AVS3を例として、プリセット角度予測モード集合により、第一イントラ予測モード及び第二イントラ予測モードは、モード番号が4~31であるイントラ角度予測モードに限定され、また、モード番号が43であるイントラ角度予測モードが現在ブロックの隣接ブロックに用いられる場合、符号器は、モード番号が43であるイントラ角度予測に類似する、モード番号が12であるイントラ角度予測を、IWCPモードにおける現在ブロックのMPMリストに追加することができる。
また、本出願の実施形態において、符号器は、フィルタリングされた候補モード及び第二候補モードに基づいて、MPMリストを構築する際に、フィルタリングされた候補モードが予め設定された追加条件を満たす場合、フィルタリングされた候補モードをMPMリストに追加し、MPMリストが予め設定されたリスト長Lを満たしておらず、且つ第二候補モードが予め定められた追加条件を満たす場合、第二候補モードをMPMリストに追加する。Lは1以上の整数である。
例示的に、本出願において、Lの値は4であることができ、即ち、MPMリストの予め設定されたリスト長が4であり、又は、MPMリストには4つのMPMが含まれる。
なお、本出願の実施形態において、符号器は、モード番号の昇順に従って、MPMリストにおけるL個のモードを並び替えることができる。
なお、本出願の実施形態において、フィルタリングされた候補モードとMPMリストにおける全ての予測モードとが異なる場合、符号器は、フィルタリングされた候補モードが予め設定された追加条件を満たすと特定することができる。それに応じて、第二候補モードとMPMリストにおける全ての予測モードとが異なる場合、符号器は、第二候補モードが予め定められた追加条件を満たすと特定することができる。
なお、本出願の実施形態において、符号器は、隣接ブロックに対応するフィルタリングされた候補モードをMPMリストに追加する際に、隣接ブロックに対応する順序パラメータを特定し、順序パラメータに基づいて、隣接ブロックに対応するフィルタリングされたイントラ候補モードを順にMPMリストに追加することができる。符号器は、隣接ブロックと現在ブロックとの間の空間距離に応じて、対応する順序パラメータを特定することができる。例えば、隣接ブロックと現在ブロックとの間の空間距離が近いほど、隣接ブロックと現在ブロックとの間の相関性が強くなり、追加処理をより先に行い、順序パラメータが小さくなる。隣接ブロックと現在ブロックとの間の空間距離が遠いほど、両者の相関性が弱くなり、追加処理をより後に行う、順序パラメータが大きくなる。
さらに、本出願の実施形態において、符号器は、フィルタリングされた候補モード及び/又は第二候補モードをMPMリストに追加した後、さらに、モード番号の昇順に従って、MPMリストにおけるL個の予測モードを並び替えることができる。
例示的に、本出願において、IWCPモードにおける現在ブロックのMPMリストはIwcpMpm[4]であり、即ち、MPMリストのリスト長は4であり、重み付け行列導出モードのインデックスはIwcpIndexであり、重み付け行列導出モードはAWPの56種の導出モードを再利用し、第一イントラ予測モード及び第二イントラ予測モードが属するプリセット角度予測モード集合は、モード番号が4~31であるイントラ角度予測モードを含むと仮定すれば、符号器は、現在ブロックのMPMリストを構築する際に、以下のステップを順次実行することができる。
ステップS1:配列cand_mode[10]を設け、cand_modeの全ての値を無効値に初期化する。cand_modeに対して以下の操作を実行する。
(a)隣接ブロックFが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[0]は、Fのイントラ予測モードに等しい。
(b)隣接ブロックGが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[1]は、Gのイントラ予測モードに等しい。
(c)隣接ブロックCが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[2]は、Cのイントラ予測モードに等しい。
(d)、隣接ブロックAが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[3]は、Aのイントラ予測モードに等しい。
(e)隣接ブロックBが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[4]は、Bのイントラ予測モードに等しい。
(f)隣接ブロックDが「存在し」、且つ通常イントラ予測ブロックである場合、cand_mode[5]は、Dのイントラ予測モードに等しい。
(g)cand_mode[6]は、IwcpIndex%8に対応する候補モード0に等しい。
(h)cand_mode[7]は、IwcpIndex%8に対応する候補モード1に等しい。
(i)cand_mode[8]は、IwcpIndex%8に対応する候補モード2に等しい。
(j)cand_mode[9]は、IwcpIndex%8に対応する候補モード3に等しい。
隣接ブロックX(XはA、B、C、D、F又はG)が「存在する」ことは、当該ブロックが画像内にあるべきであり、且つブロックEと同一スライスに属するべきであることを意味する。そうではない場合、隣接ブロックが「存在しない」。ブロックが「存在しない」又はまだ復号化されていない場合、当該ブロックは「利用不可能」である。そうではない場合、当該ブロックは「利用可能」である。画像のサンプルが位置するブロックが「存在しない」又は当該サンプルがまだ復号化されていない場合、当該サンプルは「利用不可能」である。そうではない場合、当該サンプルは「利用可能」である。
本出願において、上記(a)から(f)までの実行手順が第一候補モードの特定プロセスであり、上記(g)から(j)までの実行手順が第二候補モードの特定プロセスである。符号器は、上記表2を参照して第二候補モードを特定することができる。
ステップS2:0から5までのiに対して、以下の操作を実行する。
(a)cand_mode[i]が3より小さい又はcand_mode[i]が33に等しい場合、cand_mode[i]を無効値に設定する。
即ち、第一候補モードがイントラ非角度予測モードである場合、符号器は、第一候補モードを直接に削除し、即ち、第一候補モードを利用しなくてもよい。
(b)そうでなければ、cand_mode[i]が3に等しい場合、cand_mode[i]を4に等しくする。
(c)そうでなければ、cand_mode[i]が32に等しい場合、cand_mode[i]を31に等しくする。
(d)そうでなければ、cand_mode[i]が33より大きい場合、次の操作を実行する。
cand_mode[i]が44より小さい場合、cand_mode[i]をcand_mode[i]-30に等しくする。
そうでなければ、cand_mode[i]が58より小さい場合、cand_mode[i]をcand_mode[i]-33に等しくする。
そうでなければ、cand_mode[i]をcand_mode[i]-34に等しくする。
即ち、第一候補モードがイントラ角度予測モードであり、且つプリセット角度予測モード集合に属しない場合、符号器は、プリセット角度予測モード集合から類似のイントラ角度予測モードを選択して第一候補モードの代替モードとし、当該代替モードをフィルタリングされた候補モードとする。
(e)そうでなければ、cand_mode[i]の値を補正しない。
即ち、第一候補モードがプリセット角度予測モード集合に属する場合、符号器は第一候補モードを直接に利用することができ、即ち、第一候補モードはフィルタリングされた候補モードである。
本出願において、上記ステップS2が第一候補モードのフィルタリングプロセスであり、第一候補モードに対応するフィルタリングされた候補モードが最終的に特定される。
ステップS3:mpm_numを0にし、0から9までのiに対して、以下の操作を実行する。
(a)cand_mode[i]が無効値ではない場合、次の操作を実行する。
cand_mode[i]とIwcpMpm[j]とを比較し、jは0からmpm_num-1であり、cand_mode[i]とIwcpMpm[j]のいずれとも等しくない場合、次の操作を実行する。
1.IwcpMpm[mpm_num]を、cand_mode[i]に等しくする。
2.mpm_numをmpm_num+1に等しくする。
3.mpm_numが4に等しい場合、ステップ3を終了する。
即ち、MPMリストにおける予測モードが4つ未満であるという前提では、フィルタリングされた候補モードとMPMリストにおけるいずれかの予測モードとが同じではない場合、符号器は、フィルタリングされた候補モードをMPMリストに追加することができる。予め設定された追加条件に合致する全てのフィルタリングされた候補モードをMPMリストに追加した後、MPMリストにおける予測モードが依然として4未満である場合、MPMリストのリスト長が4になるまで、符号器は、予め設定された追加条件を満たす第二候補モードを引き続きMPMリストに追加することができる。
ステップS4:IwcpMpm[4]の4つの値を昇順で並べ替える。
最後に、符号器は、MPMリストにおける4つのイントラ角度予測モードを、モード番号の昇順で並び替えることができる。
本出願では、上記ステップ202及びステップ203の実行順序を制限せず、即ち、第一モードインデックス及び第二モードインデックスの特定プロセスと、MPMリストの構築プロセスとの順序を制限しない。
ステップ203:第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。
本出願の実施形態において、符号器は、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定し、且つ、現在ブロックのMPMリストを構築した後、さらに、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定することができる。
なお、本出願の実施形態において、第一モードインデックスは、現在ブロックに用いられる第一イントラ予測モードを指示するために用いられ、第二モードインデックスは、現在ブロックに用いられる第二イントラ予測モードを指示するために用いられることができる。
具体的に、第一モードインデックスの値及び第二モードインデックスの値は、第一イントラ予測モード及び第二イントラ予測モードの可能なイントラ角度予測モードの数に関連付けられている。例えば、第一イントラ予測モード及び第二イントラ予測モードはそれぞれ、モード番号が4~31である28個のイントラ角度予測モードのうちの1つであってもよい。従って、第一モードインデックスの値と第二モードインデックスの値はいずれも、0~27という範囲にある。
例示的に、本出願の実施形態において、パラメータiwcp_pred_mode0_indexで第一モードインデックスを表し、パラメータiwcp_pred_mode1_indexで第二モードインデックスを表すことができる。
また、本出願の実施形態において、符号器は、インデックス値とバイナリ文字列との間の第一マッピング関係表を特定することができる。第一マッピング関係表には、第一長さを有するバイナリ文字列、第二長さを有するバイナリ文字列、及び第三長さを有するバイナリ文字列がそれぞれ含まれる。
例示的に、本出願において、第一長さは3ビット、第二長さは5ビット、第三長さは6ビットである。
なお、本出願において、インデックス値とバイナリ文字列との間の第一マッピング関係表は、第一モードインデックス及び第二モードインデックスの値を特定するために用いられることができる。
選択的に、本出願において、AVS3において、モード番号が4~31である28個のイントラ角度予測モードが利用され、即ち、プリセット角度予測モード集合に合計で28個のモードが含まれる場合、4+8+16の形式でモードが符号化され得、即ち、符号語が最も短い4つのモード、符号語が短い8つのモード、符号語が長い16個のモードで符号化され得る。符号語が最も短い4つのモードは3ビットの符号語を利用し、即ち第一長さを利用する。符号語が短い8つのモードは5ビットの符号語を利用し、即ち第二長さを利用する。符号語が長い16個のモードは6ビットの符号語を利用し、即ち第三長さを利用する。
なお、本出願において、モード番号が4~31である28個のイントラ角度予測モードの予測角度は基本的に、常用の角度範囲全体をカバーしている。同時に、モード番号が4~31であるイントラ角度予測モードは、モード番号が34~65であるイントラ角度予測モードより簡単であり、この28個のモードが4+8+16の形式で符号化されることは符号語を無駄にしていないため、符号器は、モード番号が4~31である28個のイントラ角度予測モードに基づいて、プリセット角度予測モード集合を定義することが好ましい。
また、本出願の実施形態において、現在ブロックのMPMリストのリスト長が4である場合、第一長さを有するバイナリ文字列が、MPMリストにおける4つMPMに用いられることができ、即ち、符号語が最も短い4つのモードが、MPMリストにおける4つのMPMに用いられることができる。それに応じて、第二長さを有するバイナリ文字列及び第三長さを有するバイナリ文字列が、プリセット角度予測モード集合における、MPMリストに含まれていない他の予測モードに用いられることができる。
選択的に、本出願において、プリセット角度予測モード集合における、MPMリストにおける4つのMPM以外の他の24個のイントラ角度予測モードについて、符号器は、符号語が短いモードと符号語が長いモードとを均一に分布することができる。具体的に、符号器は、符号語が短い(第二長さを有するバイナリ文字列)8つのモードを、残りの24個のイントラ角度予測モードに均一に分布することができる。例えば、符号語が長い(第三長さを有するバイナリ文字列)2つのモードごとに符号語が短い(第二長さを有するバイナリ文字列)1つのモードが用いられる。さらに具体的な実行過程において、残りの24個のイントラ角度予測モードのうち、0~23というシリアル番号に対して、3を法とする(%3)剰余演算が施されることで実現し、例えば、3を法とするシリアル番号の剰余量が2であるモードが5ビットの符号語を利用し、即ち、第二長さを有するバイナリ文字列を利用する。3を法とするシリアル番号の剰余量が0又は1であるモードが6ビットの符号語を利用し、即ち、第三長さを有するバイナリ文字列を利用する。
例示的に、本出願において、モード番号が4~31である28個のイントラ角度予測モードが利用され、即ち、プリセット角度予測モード集合に28個のモードが含まれる場合、インデックス値とバイナリ文字列との間の第一マッピング関係表は上記表3に示されたようであり、第一長さは3ビット、第二長さは5ビット、第三長さは6ビットである。
1番目のビットは、MPMであるか否かを表すことができ、例えば、「1」はMPMであることを表し、「0」はMPMではないことを表す。第一イントラ予測モードがMPMである場合、MPMリストに4つのMPMが含まれていると仮定すれば、2つのビットを利用してMPMリストにおけるいずれのMPMが用いられるかを示すことができる。例えば、「00、01、10、11」はそれぞれ、MPMリストにおける1番目のMPM、2番目のMPM、3番目のMPM、4番目のMPMを表す。
さらに、本出願において、ビットフラグが0であるバイナリ文字列を、コンテキストモデルを利用して符号化し、ビットフラグが0ではないバイナリ文字列を、コンテキストモデルを利用せずに符号化する。ビットフラグの値は、いくつのbitが符号化されているかを表すことができ、ビットフラグはbinIdxで表されることができる。
なお、本出願において、符号化側では、表3に基づいて二値化する際に、binIdxが0であるバイナリ文字列を、コンテキストモデルを利用して符号化し、binIdxが0ではないバイナリ文字列を、等確率モデル又はバイパスモードを利用して符号化することができる。
さらに、本出願において、符号器は、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する際に、第一イントラ予測モードのモード番号が、MPMリストにおけるm番目のモードのモード番号と同じである場合、第一モードインデックスの値iに値mを付与し、第一イントラ予測モードのモード番号が、MPMリストにおけるいずれのモードのモード番号とも異なる場合、MPMリストを利用して第一モードインデックスの値iを特定し、第一マッピング関係表及びiに基づいて、第一モードインデックスを特定する。mは0以上且つL未満の整数である。
即ち、本出願において、第一イントラ予測モードのモード番号とMPMリストにおける1つのMPMのモード番号とが同じである場合、第一モードインデックスの値iを、このMPMの順序mにそのまま設定することができる。例えば、第一イントラ予測モードとMPMリストにおける2番目のモードとが同じである場合、i=2に設定する。
具体的に、本出願において、符号器は、MPMリストを利用して第一モードインデックスの値iを特定する際に、第一イントラ予測モードのモード番号がMPMリストにおける4番目のモードのモード番号以上である場合、第一イントラ予測モードのモード番号と4との差をiに付与し、第一イントラ予測モードのモード番号がMPMリストにおける4番目のモードのモード番号より小さく、且つMPMリストにおける3番目のモードのモード番号以上である場合、第一イントラ予測モードのモード番号と3との差をiに付与し、第一イントラ予測モードのモード番号がMPMリストにおける3番目のモードのモード番号よりも小さく、且つMPMリストにおける2番目のモードのモード番号以上である場合、第一イントラ予測モードのモード番号と2との差をiに付与し、第一イントラ予測モードのモード番号がMPMリストにおける2番目のモードのモード番号より小さく、且つMPMリストにおける1番目のモードのモード番号以上である場合、第一イントラ予測モードのモード番号と1との差をiに付与し、第一イントラ予測モードのモード番号がMPMリストにおける1番目のモードのモード番号より小さい場合、第一イントラ予測モードのモード番号をiに付与する。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、第一イントラ予測モードのモード番号が9である場合、符号器は、第一イントラ予測モードのモード番号を、4つのMPMのモード番号とそれぞれ比較する。具体的に、9が2番目のMPMのモード番号より大きく、且つ3番目のMPMのモード番号より小さいため、第一モードインデックスの値iは9-2=7となる。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、第一イントラ予測モードのモード番号が15である場合、符号器は、第一イントラ予測モードのモード番号を、4つのMPMのモード番号とそれぞれ比較する。具体的に、15が3番目のMPMのモード番号より大きく、且つ4番目のMPMのモード番号よりも小さいため、第一モードインデックスの値iは15-3=12となる。
なお、本出願において、符号器は、第一イントラ予測モードに対応する第一モードインデックスの値iを特定した後、第一マッピング関係表及びiに基づいて第一モードインデックスを特定することができる。具体的に、符号器は、上記表3に示された第一マッピング関係表に応じてiを二値化することにより、第一モードインデックスを特定することができる。
さらに、本出願において、符号器は、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する際に、第二イントラ予測モードのモード番号が、MPMリストにおけるm番目のモードのモード番号と同じである場合、第一モードインデックスの値jに値mを付与し、第二イントラ予測モードのモード番号が、MPMリストにおけるいずれのモードのモード番号とも異なる場合、MPMリストを利用して第一モードインデックスの値jを特定し、第一マッピング関係表及びjに基づいて、第二モードインデックスを特定する。mは0以上且つL未満の整数である。
即ち、本出願において、第二イントラ予測モードのモード番号とMPMリストにおける1つのMPMのモード番号とが同じである場合、第一モードインデックスの値jを、このMPMの順序mにそのまま設定することができる。例えば、第二イントラ予測モードとMPMリストにおける3番目のモードとが同じである場合、j=3に設定する。
具体的に、本出願において、符号器は、MPMリストを利用して第一モードインデックスの値jを特定する際に、第二イントラ予測モードのモード番号がMPMリストにおける4番目のモードのモード番号以上である場合、第二イントラ予測モードのモード番号と4との差をjに付与し、第二イントラ予測モードのモード番号がMPMリストにおける4番目のモードのモード番号より小さく、且つMPMリストにおける3番目のモードのモード番号以上である場合、第二イントラ予測モードのモード番号と3との差をjに付与し、第二イントラ予測モードのモード番号がMPMリストにおける3番目のモードのモード番号よりも小さく、且つMPMリストにおける2番目のモードのモード番号以上である場合、第二イントラ予測モードのモード番号と2との差をjに付与し、第二イントラ予測モードのモード番号がMPMリストにおける2番目のモードのモード番号より小さく、且つMPMリストにおける1番目のモードのモード番号以上である場合、第二イントラ予測モードのモード番号と1との差をjに付与し、第二イントラ予測モードのモード番号がMPMリストにおける1番目のモードのモード番号より小さい場合、第二イントラ予測モードのモード番号をjに付与する。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、第二イントラ予測モードのモード番号が17である場合、符号器は、第二イントラ予測モードのモード番号を、4つのMPMのモード番号とそれぞれ比較する。具体的に、17が4番目のMPMのモード番号より大きいため、第一モードインデックスの値jは17-4=13となる。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、第二イントラ予測モードのモード番号が6である場合、符号器は、第二イントラ予測モードのモード番号を、4つのMPMのモード番号とそれぞれ比較する。具体的に、6が1番目のMPMのモード番号より大きく、且つ2番目のMPMのモード番号より小さいため、第一モードインデックスの値jは6-1=5となる。
なお、本出願において、符号器は、第二イントラ予測モードに対応する第二モードインデックスの値jを特定した後、第一マッピング関係表及びjに基づいて第二モードインデックスを特定することができる。具体的に、符号器は、上記表3に示された第一マッピング関係表に応じてjを二値化することにより、第二モードインデックスを特定することができる。
例示的に、本出願において、IWCPモードが現在ブロックに用いられ、現在ブロックのMPMリストの長さは4であり、即ち、L=4であり、MPMリストにおける4つのモードはモード番号の昇順で並べ替えられ、プリセット角度予測モード集合はモード番号が4~31である28個のイントラ角度予測モードを含む場合、符号器は先に、第一イントラ予測モードをIwcpPredMode0として特定し、第二イントラ予測モードをIwcpPredMode1として特定し、次に、第一イントラ予測モードIwcpPredMode0及び第二イントラ予測モードIwcpPredMode1に基づいて、第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_mode1_indexを特定することができる。iwcp_pred_mode0_index及びiwcp_pred_model_indexの値は0~27という範囲にある。
符号器は、現在ブロックのIWCPモードに用いられる第一イントラ予測モードIwcpPredMode0を特定した後、第一モードインデックスiwcp_pred_mode0_indexを特定する際に、具体的に、次の操作を実行することができる。
1.IwcpPredMode0がIwcpMpm[m]に等しく、mが0以上4未満である場合、iwcp_pred_mode0_indexの値iはmに等しくなる。
即ち、第一イントラ予測モードとMPMリストにおけるm番目のMPMとが同じである場合、値mを直接にiに付与することができ、即ちi=mである。
2.IwcpPredMode0がIwcpMpm[m]に等しくない場合、iwcp_pred_mode0_indexの値iはIwcpPredMode0<IwcpMpm[0] ? IwcpPredMode0 : IwcpPredMode0<IwcpMpm[1] ? IwcpPredMode0-1 : IwcpPredMode0<IwcpMpm[2] ? IwcpPredMode0-2 : IwcpPredMode0<IwcpMpm[3] ? IwcpPredMode0-3 : IwcpPredMode0-4に等しくなる。
3.表3に基づいて、iwcp_pred_mode0_indexの値iを二値化することにより、バイナリ文字列形式のiwcp_pred_mode0_indexを特定する。
具体的に、表3に基づいて、iwcp_pred_mode0_indexの値iを二値化する際に、表3の左欄からiと同じインデックス値を特定し、次に、同じ行の右欄からバイナリ文字列iwcp_pred_mode0_indexを特定することができる。
それに応じて、符号器は、現在ブロックのIWCPモードに用いられる第二イントラ予測モードIwcpPredMode1を特定した後、第二モードインデックスiwcp_pred_mode1_indexを特定する際に、具体的に、次の操作を実行することができる。
1.IwcpPredMode1がIwcpMpm[m]に等しく、mが0以上4未満である場合、iwcp_pred_mode1_indexの値jはmに等しくなる。
即ち、第二イントラ予測モードとMPMリストにおけるm番目のMPMとが同じである場合、値mを直接にjに付与することができ、即ちi=mである。
2.IwcpPredMode1がIwcpMpm[m]に等しくない場合、iwcp_pred_mode1_indexの値jはIwcpPredMode1<IwcpMpm[0] ? IwcpPredMode1 : IwcpPredMode1<IwcpMpm[1] ? IwcpPredMode1-1 : IwcpPredMode1<IwcpMpm[2] ? IwcpPredMode1-2 : IwcpPredMode1<IwcpMpm[3] ? IwcpPredMode1-3 : IwcpPredMode1-4に等しくなる。
3.表3に基づいて、iwcp_pred_mode1_indexの値jを二値化することにより、バイナリ文字列形式のiwcp_pred_mode1_indexを特定する。
具体的に、表3に基づいて、iwcp_pred_mode1_indexの値jを二値化する際に、表3の左欄からjと同じインデックス値を特定し、次に、同じ行の右欄からバイナリ文字列iwcp_pred_mode1_indexを特定する。
また、本出願の実施形態において、IWCPモードでは、第一イントラ予測モード及び第二イントラ予測モードを利用して現在ブロックの予測値を特定する必要がある。第一イントラ予測モード及び第二イントラ予測モードは、1つのプリセット角度予測モード集合を共有することができ、また、同一のMPMリストを共有することもできる。IWCPモードにおける第一イントラ予測モードと第二イントラ予測モードは同じではないため、第二イントラ予測モードを符号化・復号化する際に、第一イントラ予測モードを参照することができる。具体的に、第二イントラ予測モードを特定する際に、第一イントラ予測モードを排除することができる。
本出願において、28個のイントラ角度予測モードについては、上記4+8+16の符号化・復号化方式では、MPMリストにおける4つのMPMが出現する確率が高い(第一イントラ予測モードがMPMリストにおける4つのMPMのうちの1つである確率は約50%であり、第二イントラ予測モードがMPMリストにおける4つのMPMのうちの1つである確率は約50%である)。第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMである場合、第二イントラ予測モードを特定する際に、MPMリストにおける、第一イントラ予測モード以外の他の3つのMPMから1つを選択しかできない。このように、元では、4つから1つを選択し、4つの3ビットの符号語を必要としたが、3つから1つを選択し、1つの2ビットの符号語と、2つの3ビットの符号語とを必要とするようになる。それに応じて、第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMではない場合、第二イントラ予測モードについては、8+16の24個のイントラ角度予測モードから1つ除去してもよいが、このような影響は比較的小さい。
上記から分かるように、第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMである場合、第二イントラ予測モードを特定する際に、第一イントラ予測モードを先に削除することができ、それによって、オーバーヘッドを削減することができる。
選択的に、本出願の実施形態において、符号器は、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する際に、第二イントラ予測モードのモード番号が、MPMリストにおけるm番目のモードのモード番号と同じである場合、第一モードインデックスの値jに値mを付与し、第二イントラ予測モードのモード番号が、MPMリストにおけるいずれのモードのモード番号とも異なる場合、MPMリストを利用して第一モードインデックスの値jを特定し、第一マッピング関係表、インデックス値とバイナリ文字列との間の第二マッピング関係表、及びjに基づいて、第二モードインデックスを特定する。
具体的に、本出願において、符号器は、第一マッピング関係表、インデックス値とバイナリ文字列との間の第二マッピング関係表、及びjに基づいて、第二モードインデックスを特定する際に、iがLより小さく且つjより小さい場合、jから1を減算した後、第二マッピング関係表に応じてjを二値化することにより、第二モードインデックスを特定し、jがL以上である場合、第一マッピング関係表に応じてjを二値化することにより、第二モードインデックスを特定する。
また、本出願の実施形態において、符号器は、インデックス値とバイナリ文字列との間の第二マッピング関係表を特定することができる。第二マッピング関係表には、第一長さを有するバイナリ文字列、第二長さを有するバイナリ文字列、第三長さを有するバイナリ文字列、及び第四長さを有するバイナリ文字列がそれぞれ含まれる。
例示的に、本出願において、第一長さは3ビット、第二長さは5ビット、第三長さは6ビット、第四長さは2ビットである。
なお、本出願において、インデックス値とバイナリ文字列との間の第二マッピング関係表は、第二モードインデックスの値を特定するためのみに用いられる。
選択的に、本出願において、インデックス値とバイナリ文字列との間の第二マッピング関係表は、表4に示されたようであり、第一長さは3ビット、第二長さは5ビット、第三長さは6ビット、第四長さは2ビットである。
なお、本出願において、符号化側では、表4に基づいて二値化する際に、binIdxが0であるバイナリ文字列を、コンテキストモデルを利用して符号化し、binIdxが0ではないバイナリ文字列を、等確率モデル又はバイパスモードを利用して符号化することができる。
例示的に、本出願において、IWCPモードが現在ブロックに用いられ、現在ブロックのMPMリストの長さは4であり、即ち、L=4であり、MPMリストにおける4つのモードはモード番号の昇順で並べ替えられ、プリセット角度予測モード集合はモード番号が4~31である28個のイントラ角度予測モードを含む場合、符号器は先に、第一イントラ予測モードをIwcpPredMode0として特定し、第二イントラ予測モードをIwcpPredMode1として特定し、次に、第一イントラ予測モードIwcpPredMode0及び第二イントラ予測モードIwcpPredMode1に基づいて、第一モードインデックスiwcp_pred_mode0_index及び第二モードインデックスiwcp_pred_mode1_indexを特定することができる。
符号器は、現在ブロックのIWCPモードに用いられる第一イントラ予測モードIwcpPredMode0を特定した後、第一モードインデックスiwcp_pred_mode0_indexを特定する際に、具体的に、次の操作を実行することができる。
1.IwcpPredMode0がIwcpMpm[m]に等しく、mが0以上4未満である場合、iwcp_pred_mode0_indexの値iはmに等しくなる。
即ち、第一イントラ予測モードとMPMリストにおけるm番目のMPMとが同じである場合、値mを直接にiに付与することができ、即ちi=mである。
2.IwcpPredMode0がIwcpMpm[m]に等しくない場合、iwcp_pred_mode0_indexの値iはIwcpPredMode0<IwcpMpm[0] ? IwcpPredMode0 : IwcpPredMode0<IwcpMpm[1] ? IwcpPredMode0-1 : IwcpPredMode0<IwcpMpm[2] ? IwcpPredMode0-2 : IwcpPredMode0<IwcpMpm[3] ? IwcpPredMode0-3 : IwcpPredMode0-4に等しくなる。
3.表3に基づいて、iwcp_pred_mode0_indexの値iを二値化することにより、バイナリ文字列形式のiwcp_pred_mode0_indexを特定する。
具体的に、表3に基づいて、iwcp_pred_mode0_indexの値iを二値化する際に、表3の左欄からiと同じインデックス値を特定し、次に、同じ行の右欄からバイナリ文字列iwcp_pred_mode0_indexを特定することができる。
それに応じて、第一イントラ予測モードに基づいて第二イントラ予測モードを特定する場合、符号器は、現在ブロックのIWCPモードに用いられる第二イントラ予測モードIwcpPredMode1を特定した後、第二モードインデックスiwcp_pred_mode1_indexを特定する際に、具体的に、次の操作を実行することができる。
1.IwcpPredMode1がIwcpMpm[m]に等しく、mが0以上4未満である場合、iwcp_pred_mode1_indexの値jはmに等しくなる。
即ち、第二イントラ予測モードとMPMリストにおけるm番目のMPMとが同じである場合、値mを直接にjに付与することができ、即ちi=mである。
2.IwcpPredMode1がIwcpMpm[m]に等しくない場合、iwcp_pred_mode1_indexの値jはIwcpPredMode1<IwcpMpm[0] ? IwcpPredMode1 : IwcpPredMode1<IwcpMpm[1] ? IwcpPredMode1-1 : IwcpPredMode1<IwcpMpm[2] ? IwcpPredMode1-2 : IwcpPredMode1<IwcpMpm[3] ? IwcpPredMode1-3 : IwcpPredMode1-4に等しくなる。
3.iwcp_pred_mode0_indexの値が4より小さい場合、
a.iwcp_pred_mode1_indexがiwcp_pred_mode0_index以上である場合、iwcp_pred_mode1_indexはiwcp_pred_mode1_index - 1に等しくなり、
b.表4に基づいて、iwcp_pred_mode1_indexの値jを二値化することにより、バイナリ文字列形式のiwcp_pred_mode1_indexを特定する。
4.iwcp_pred_mode0_indexが4以上である場合、表3に基づいて、iwcp_pred_mode1_indexの値jを二値化することにより、バイナリ文字列形式のiwcp_pred_mode1_indexを特定する。
上記から分かるように、第二イントラ予測モードの特定は、第一イントラ予測モードに基づいて行われる必要がある場合、iwcp_pred_mode1_indexは、iwcp_pred_mode0_indexに依存する。具体的に、表4を例として、第一イントラ予測モード及び第二イントラ予測モードがいずれもMPMリストにおけるMPMである場合、第二イントラ予測モードの利用可能なMPMは3種しかなく、さらに、MPMは1つ又は2つのビットで表されることができる。例えば、「00、01、10」はそれぞれ、残りの1番目のMPM、2番目のMPM、3番目のMPMをそれぞれ表す。このように、1つの可能性を排除したため、符号化・復号化方法を変更し、又は、二値化や逆二値化の方法を変更することで、オーバーヘッドを削減することができる。
なお、本出願の実施形態において、プリセット角度予測モード集合はモード番号が4~31である28個のイントラ角度予測モードを含み、MPMリストの長さは4である場合、第一長さを有するバイナリ文字列、第二長さを有するバイナリ文字列、第三長さを有するバイナリ文字列を利用して、インデックス値とバイナリ文字列との間の第一マッピング関係表を特定する際に、まず、第一長さを有するバイナリ文字列、即ち、最も短い符号語がMPMリストにおける4つのMPMに用いられることができる。次に、第二長さを有するバイナリ文字列が、残りの24個のイントラ角度予測モードから選択された8つのイントラ角度予測モードに用いられ、第三長さを有するバイナリ文字列が、選択された16個のイントラ角度予測モードに用いられる。
具体的に、本出願において、残りの24個のイントラ角度予測モードについて、モード番号の昇順に従って、短い符号語、即ち第二長さを有するバイナリ文字列が前の8つのモード番号に対応する予測モードに用いられ、次に、長い符号語、即ち第三長さを有するバイナリ文字列が、後続の16個のモード番号に対応する予測モードに用いられることができる。
例示的に、本出願において、上記表3に示されたインデックス値とバイナリ文字列との間の第一マッピング関係表を、上記表5に置き換えることが可能である。インデックス値とバイナリ文字列との間の第一マッピング関係表を表すための表5は、第一モードインデックス及び第二モードインデックスの値を特定するために用いられることもできる。
それに応じて、上記表4に示されたインデックス値とバイナリ文字列との間の第二マッピング関係表を、上記表6に置き換えることが可能である。インデックス値とバイナリ文字列との間の第二マッピング関係表を表すための表6は、第二モードインデックスの値を特定するために用いられることもできる。
なお、本出願において、モード番号が4~31である28個のイントラ角度予測モードが利用され、即ち、プリセット角度予測モード集合に28個のモードが含まれる場合、4+8+16の形式で、即ち3ビットの符号語を有する4つのモード、5ビットの符号語を有する8つのモード、6ビットの符号語を有する16個のモードを利用して、符号化することができる。
選択的に、本出願において、プリセット角度予測モード集合に合計で20個のモードが含まれる場合、これらのモードは、4つの3ビットの符号語、16個の5ビットの符号語で表されることができる。
選択的に、本出願において、プリセット角度予測モード集合に合計で36個のモードが含まれている場合、これらのモードは、4つの3ビットの符号語、32個の6ビットの符号語で表されることができる。例えば、AVS3では、モード番号が4~31、42~45、及び56~59という36種のイントラ角度予測モードが用いられる。
なお、本出願において、プリセット角度予測モード集合における全てのモードが表3又は表4に示されたような1セットのバイナリ文字列で表される場合、「符号語」をバイナリ文字列として理解することができる。符号語の長さは、バイナリ文字列の長さとして理解されることができる。もう1つの表現方法は、フラグとバイナリ文字列との合計である。例えば、1つのバイナリのMPM_flagは、現在のモードがMPMモードであるか否かを示すために用いられ、即ち、MPM_flagが1である場合、現在のモードがMPMモードであることを示し、MPM_flagが0である場合、現在のモードがMPMモードではないことを示す。現在のモードがMPMモードである場合、MPMは合計4つの可能性を持ち、2ビットのバイナリ文字列で現在のモードがいずれのMPMであるかを示す。この場合、符号語は、フラグとバイナリ文字列との合計であると理解されることができ、符号語の長さは、フラグとバイナリ文字列との合計の長さであると理解されることができる。
ステップ204:第一モードインデックス及び第二モードインデックスをビットストリームに書き込む。
本出願の実施形態において、符号器は、第一イントラ予測モードを指示するために用いられる第一モードインデックスと第二イントラ予測モードを指示するために用いられる第二モードインデックスを特定した後、復号器がビットストリームを復号化することにより特定された第一モードインデックス及び第二モードインデックスに基づいて現在ブロックの予測値を特定するように、符号器は、第一モードインデックス及び第二モードインデックスをビットストリームに書き込み、復号化側に伝送することができる。
さらに、本出願の実施形態において、現在ブロックに用いられる第一イントラ予測モード及び第二イントラ予測モードを特定した後、さらに、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定するように、符号器は、現在ブロックの重み付け行列を特定する必要がある。
なお、本出願の実施形態において、符号器は、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定する際に、まず、第一イントラ予測モードに基づいて現在ブロックの第一予測値を特定し、第二イントラ予測モードに基づいて現在ブロックの第二予測値を特定し、次に、重み付け行列を利用して第一予測値及び第二予測値に対して重み付け演算を行うことにより、現在ブロックの予測値を最終的に取得することができる。
さらに、本出願の実施形態において、符号器は、現在ブロックの予測値を特定した後、現在ブロックの予測差分、即ち残差を特定することができるように、現在ブロックの真値と予測値との間の差を計算して取得することができる。
即ち、本出願において、符号器は、現在ブロックの真値とイントラ予測値との間の差を計算して残差を取得することができ、また、当該残差は、変換され、量子化され、エントロピー符号化され、ビットストリームに書き込まれ、復号側に伝送される。
具体的に、本出願において、符号器は、現在ブロックの重み付け行列導出モードに基づいて、現在ブロックの重み付け行列を特定することができる。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードはいずれも、イントラ角度予測モードであることができ、即ち、本出願の実施形態において、2つの異なるイントラ角度予測モードが利用される。そして、第一イントラ予測モード及び第二イントラ予測モードを利用して、第一予測ブロック及び第二予測ブロックをそれぞれ生成し、さらに、第一予測ブロック、第二予測ブロック、及び重み付け行列に基づいて、現在ブロックの予測ブロックを特定する。
また、本出願の実施形態において、全ての可能な重み付け行列における各重み付け行列における全ての点の重み値が同一であるというわけではない。換言すれば、少なくとも1つの可能な重み付け行列には、少なくとも2つの異なる重み値が含まれる。
なお、本出願の実施形態において、符号器は、GPM又はAWPに類似した方法で重み付け行列の特定を実現することができる。具体的に、GPM又はAWPが、同一のビデオ符号化・復号化規格又は符号器・復号器に用いられる場合、当該方法で重み付け行列を特定することができ、それで、一部の同じ論理が再利用されることができる。例えば、AWPがAVS3におけるインター予測に用いられる場合、AVS3ではAWPの方法を利用して重み付け行列を特定することができる。同一のビデオ符号化・復号化規格又は符号器・復号器におけるGPM又はAWPとは異なる方法、例えば、異なるモード数、又は遷移領域の異なるアルゴリズム、又は異なるパラメータを利用することなども勿論可能である。インター予測が時間関連性を利用するため、参照画像における再構成済みの画像が参照ブロックとして用いられる。イントラ予測が空間関連性を利用するため、現在ブロックの周辺の再構成済みのサンプルが参照サンプルとして用いられる。空間領域において、距離が近いほど関連性が強くなり、距離が遠いほど関連性が悪くなる。従って、ある重み付け行列により、予測ブロックのサンプル位置が参照サンプルから遠ざけるようになる場合、そのような重み行列は既存技術よりも適切な予測値を生成できない可能性があるため、そのような重み行列を利用しないことができる。その代わりに、その重み行列をインター予測に用いられることができる。
本出願の実施形態において、イントラ予測方法が提供される。符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができ、次に、多様な重み付け行列で2つの異なる予測ブロックを組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
上記実施形態に基づいて、本出願のさらなる実施形態において、符号器は、IWCPモードが現在ブロックに用いられることを特定した後、現在ブロックのイントラ予測モードパラメータをさらに特定し、イントラ予測モードパラメータをビットストリームに書き込むことができ、上記イントラ予測モードパラメータはIWCPモードが現在ブロックに用いられるか否かを判断するために用いられる。
なお、本出願の実施形態において、イントラ予測モードパラメータは、IWCPモードが現在ブロックに用いられることができるか否か、即ち、現在ブロックの予測値を特定するには2種の異なるイントラ角度予測モードを利用することができるか否か、を指示することができる。
なお、本出願の実施形態において、イントラ予測モードパラメータは、IWCPモードが利用されているか否かを示すフラグであると理解されてもよい。具体的に、符号器は、ビットストリームを解析することにより、イントラ予測モードパラメータとする1つの変数を特定することができ、当該変数の値によりイントラ予測モードパラメータの特定を実現することができる。
例示的に、本出願において、IWCPモードが現在ブロックに用いられる場合、符号器は、イントラ予測モードパラメータの値を、IWCPモードが現在ブロックに用いられることを指示するものに設定することができる。具体的に、符号器は変数の値を1に設定することができる。
例示的に、本出願において、IWCPモードが現在ブロックに用いられない場合、符号器は、イントラ予測モードパラメータの値を、IWCPモードが現在ブロックに用いられないことを指示するものに設定することができる。具体的に、符号器は変数の値を0に設定することができる。
さらに、本出願の実施形態において、符号器は、イントラ予測モードパラメータの設定を完了した後、復号器がビットストリームを復号化した後にイントラ予測モードパラメータを取得することができるように、符号器は、イントラ予測モードパラメータをビットストリームに書き込み、ビットストリームを復号器に伝送することができる。
即ち、本出願の実施形態において、符号器側では、現在ブロックに対して予測符号化を実行し、その間に、現在ブロックのイントラ予測モードパラメータを特定し、対応するイントラ予測モードパラメータをビットストリームに書き込み、ビットストリームを符号器から復号器に伝送する。
なお、本出願の実施形態において、符号器は、現在ブロックに対してイントラ予測を行う前に、先に予測モードパラメータを特定し、次に、予測モードパラメータを利用して、現在ブロックに用いられる符号化モードがどの符号化モードであるかを特定することができる。
さらに、本出願の実施形態において、符号器は、現在ブロックの予測モードパラメータを特定する際に、まず、複数の異なる予測モードを利用して現在ブロックに対してそれぞれ符号化予測を行い、次に、複数の予測モードの各々に対応するレート歪みコストを計算することができる。最後に、符号器は、計算された複数のレート歪みコストから最小のレート歪みコストを選択し、最小のレート歪みコストに対応する予測モードを現在ブロックの予測モードパラメータとして特定することができる。
即ち、現在ブロックに対して、符号器側は複数の予測モードをそれぞれ利用して、予測待ちの色コンポーネントを符号化することができる。
さらに、本出願の実施形態において、符号器は、複数の予測モードを利用して現在ブロックをそれぞれ符号化した後、各予測モードに対応するレート歪みコストを取得することができる。次に、符号器は、取得された複数のレート歪みコストから最小のレート歪みコストを選択し、当該最小のレート歪みコストに対応する予測モードを現在ブロックの予測モードパラメータとして特定することができる。このように、特定された予測モードは、現在ブロックを符号化するために用いられることができ、この予測モードでは、予測残差を小さくし、符号化・復号化効率を向上させることができる。
さらに、本出願の実施形態において、符号化側では、符号器がイントラ予測によってある予測ブロックを得ようとする際に、符号器は、IWCPモードを利用した符号化のコストを得ようともする。符号器は、IWCPモードを利用した符号化のコストを得ようとする場合、全て又は一部の可能な状況のコストを得ようとし、最小のコストを、IWCPモードを利用した符号化のコストとして選択する。
なお、本出願の実施形態において、上記全ての可能な状況は、3つの変数の組み合わせを含み、3つの変数は、現在ブロックの第一イントラ予測モードが全ての可能な予測モードであり、現在ブロックの第二イントラ予測モードが全ての可能な予測モードであり、重み行列導出モードが全ての可能なモードである、というものである。
なお、本出願において、第一イントラ予測モード及び第二イントラ予測モードは、全く異なるイントラ角度予測モードであり、符号器は、IWCPモードに利用可能なイントラ角度予測モードを制限してもよく、IWCPモードに利用可能な重み行列導出モードの数を制限してもよい。このようにすると、可能な状況の数がそれに応じて減少し、符号化側での複雑度もそれに対応して低下する。
例示的に、本出願において、IWCPモードに利用可能な全てのイントラ予測モードが66種あり、第一イントラ予測モードが66種あると仮定すれば、第二イントラ予測モードと第一イントラ予測モードが異なるため、第二イントラ予測モードが65種ある。重み付け行列導出モード(AWPを例として)が56種あると仮定すれば、本出願では、任意の2種の異なるイントラ予測モード、及びいずれかの重み付け行列導出モードを利用することが可能であり、合計で66×65×56種の可能性がある。利用可能なイントラ角度予測モードを制限し、即ち、プリセット角度予測モード集合内のモード範囲を制限すれば、例えば、プリセット角度予測モード集合が、モード番号が4~31である28個のイントラ角度予測モードのみを含むと制限すれば、第一イントラ予測モードは28の可能性があり、第二イントラ予測モードと第一イントラ予測モードが異なるため、第二イントラ予測モードは27の可能性がある。重み付け行列導出モード(AWPを例として)が56種あると仮定すれば、本出願では、任意の2種の異なるイントラ予測モード及びいずれかの重み付け行列導出モードを利用することができるため、合計で28×27×56種の可能性がある。
さらに、本出願の実施形態において、符号器は、IWCPモードの全ての可能な状況に対してレート歪み最適化(rate distortion optimization、RDO)を行い、コストが最小である1つの組み合わせを特定する。各組み合わせは、第一イントラ予測モード、第二イントラ予測モード、及び重み行列導出モードを含む。
選択的に、RDO の時間消費を低減するために、上記IWCPモードの全ての可能な状況に対して最初の選択を行い、例えば、差分絶対値和(sum of absolute difference、SAD)、差分変換絶対値和(sum of absolute transformed difference、SATD)などの近似のコストを利用して最初の選択を行うことにより、設定された数の、第一イントラ予測モードと、第二イントラ予測モードと、重み付け行列導出モードとの候補組み合わせを特定することができる。次に、RDOで精選を行い、コストが最小である、第一イントラ予測モードと、第二イントラ予測モードと、重み付け行列導出モードとの組み合わせを特定する。いくつかの高速アルゴリズムが最初の選択に用いられ、試みの回数を減らすことができる。例えば、1つのイントラ角度予測モードが高コストを引き起こす場合、イントラ角度予測モードに隣接する複数のイントラ予測モードを試みない。
なお、本出願では、上記最初の選択及び精選択において、コストは、第一イントラ予測モード、第二イントラ予測モード、及び重み行列導出モードをビットストリームで符号化するオーバーヘッドのコストを含むことができる。また、最初の選択中に、第一イントラ予測モード、第二イントラ予測モード、及び重み行列導出モードのビットストリームにおけるオーバーヘッドの推定コストを利用することも可能である。例えば、第一イントラ予測モード又は第二イントラ予測モードがMPMであるか否かに応じて第一イントラ予測モード又は第二イントラ予測モードのビット数を推定し、又は、イントラ予測モードの並べ替えに応じて第一又は第二イントラ予測モードのビット数を推定する。RDOでは、より正確な試行符号化(trial coding)によってコストを取得することができる。そのプロセスにおいて、本出願におけるMPMリストの構築方法又はイントラ予測モードの並べ替え方法が必要となる。
なお、本出願において、上記最初の選択及び精選中に、第一イントラ予測モードに基づいて第一予測ブロックを特定し、第二イントラ予測モードに基づいて第二予測ブロックを特定し、重み付け行列導出モードに基づいて重み付け行列を導出する。第一予測ブロック、第二予測ブロック及び重み付け行列に基づいて本出願の予測ブロックを特定する。SAD及びSATDを利用する最初の選択中に、現在ブロック及び予測ブロックを利用してSAD及びSATDを特定する。
さらに、本出願の実施形態において、符号器は、現在ブロックのテクスチャを先に分析することができ、例えば、勾配を利用して分析する。分析されたデータは、最初の選択の役に立つ。例えば、現在ブロックのテクスチャのうち、ある方向のテクスチャが強い場合、上記最初の選択中に、その方向に近似した方向におけるイントラ予測モードが試行のためにより多く選択される。現在ブロックのテクスチャのうち、ある方向のテクスチャが弱い場合、上記最初の選択中に、その方向に近似した方向におけるイントラ予測モードが試行のためにより少なく選択され又は選択されない。
なお、本出願において、IWCPモードを利用した符号化のコストは、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列導出モードによってビットストリームにおいて占有される符号語のコスト、予測残差の変換、量子化、エントロピー符号化などのためにビットストリームで伝送される各種のフラグ及び量子化係数のコスト、再構成ブロックの歪みのコストなどを含む。
IWCPモードを利用した符号化のコストを特定した後、IWCPモードを利用した符号化のコストが、他の予測モード(他の予測モードは他のイントラ予測モード又はインター予測モードなどを含むことができる)のコストよりも低い場合、符号器は、IWCPモードを現在ブロックの予測モードとして選択する。そうではない場合、符号器は他の予測モードを選択する。
さらに、本出願の実施形態において、符号器は、異なるブロック分割を試み、符号化のコストを特定する。IWCPモードがある特定の予測ブロックのために選択された場合、IWCPモードに必要なフラグ、並びに第一イントラ予測モード、第二イントラ予測モード及び重み行列導出モードの情報が、シンタックス(syntax)に従ってビットストリームに書き込まれ、同時に、IWCPモードを利用して予測ブロックが予測され且つ符号化され得る。
本出願の実施形態において、イントラ予測方法が提供される。符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができ、次に、多様な重み付け行列で2つの異なる予測ブロックを組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
上記実施形態に基づいて、本出願のさらなる別の実施形態において、図10は、本出願の実施形態に係る符号器の構造を示す1つ目の概略図である。図10に示されるように、本出願の実施形態に係る符号器300は、第一特定部301、第一構築部302、及び符号化部303を備える。第一特定部301は、イントラ重み付け組合せ予測(IWCP)モードを利用して現在ブロックのイントラ予測値を特定する場合、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定するように構成されており、第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。第一構築部302は、現在ブロックの最確モード(MPM)リストを構築するように構成されている。第一特定部301はさらに、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定するように構成されている。符号化部303は、第一モードインデックス及び第二モードインデックスをビットストリームに書き込むように構成されている。
図11は、本出願の実施形態に係る符号器の構造を示す2つ目の概略図である。図11に示されるように、本出願の実施形態に係る符号器300は、第一プロセッサ304、第一メモリ305、第一通信インターフェース306、及び第一バス307を備え、第一メモリ305には第一プロセッサ304によって実行可能な命令が記憶されており、第一バス307は、第一プロセッサ304、第一メモリ305、及び第一通信インターフェース306に接続するために用いられる。
さらに、本出願の実施形態において、第一プロセッサ304は、IWCPモードを利用して現在ブロックのイントラ予測値を特定する場合、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定し、現在ブロックのMPMリストを構築し、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定し、第一モードインデックス及び第二モードインデックスをビットストリームに書き込むように構成されており、上記第一イントラ予測モード及び上記第二イントラ予測モードは互いに異なるイントラ角度予測モードである。
図12は、本出願の実施形態に係る復号器の構造を示す1つ目の概略図である。図12に示されるように、本出願の実施形態に係る復号器400は、復号化部401、第二特定部402、及び第二構築部403を備える。復号化部401は、ビットストリームを復号化するように構成されている。第二特定部402は、現在ブロックのイントラ予測モードパラメータを特定するように構成されており、第二特定部402は、イントラ予測モードパラメータはIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、現在ブロックの第一モードインデックス及び第二モードインデックスを特定するように構成されている。第二構築部403は、現在ブロックのMPMリストを構築するように構成されている。第二特定部402はさらに、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定するように構成されており、第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードであり、第二特定部402はさらに、現在ブロックの重み付け行列を特定し、また、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定するように構成されている。
図13は、本出願の実施形態に係る復号器の構造を示す2つ目の概略図である。図13に示されるように、本出願の実施形態に係る復号器400は、第二プロセッサ404、第二メモリ405、第二通信インターフェース406、及び第二バス407を備え、第二メモリ405には第二プロセッサ404によって実行可能な命令が記憶されており、第二バス407は、第二プロセッサ404、第二メモリ405、及び第二通信インターフェース406に接続するために用いられる。
さらに、本出願の実施形態において、第二プロセッサ404は、ビットストリームを復号化することにより、現在ブロックのイントラ予測モードパラメータを特定し、イントラ予測モードパラメータはIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、現在ブロックの第一モードインデックス及び第二モードインデックスを特定し、現在ブロックのMPMリストを構築し、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定し、現在ブロックの重み付け行列を特定し、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定するように構成されており、上記第一イントラ予測モード及び上記第二イントラ予測モードは、互いに異なるイントラ角度予測モードである。
また、本実施形態に係る各機能モジュールは、1つの処理ユニットに集積されてもよく、各ユニットは単独に物理的に存在してもよく、2つ以上のユニットは1つのユニットに集積されてもよい。上記集積されたユニットは、ハードウェア又はソフトウェア機能モジュールの形式で実現されることができる。
集積されたユニットは、ソフトウェア機能モジュールとして実装され、且つ独立の製品として販売されたり使用されたりする場合に、コンピュータ可読記録媒体に記憶されてもよい。この理解によれば、本出願の技術的解決策について、本質的な部分、又は従来技術に貢献できた部分、又は当該技術的解決策の全部又は一部は、ソフトウェア製品として表現され得る。このコンピュータソフトウェア製品は、記憶媒体に記憶されており、1つのコンピュータデバイス(パソコン、サーバ、又はネットワークデバイスなどであってもよい)又はプロセッサに本出願の各実施形態に記載の方法の全部又は一部のステップを実行させるための複数の命令を含む。前記記憶媒体は、ユニバーサルシリアルバス(universal serial bus、USB)フラッシュディスク、モバイルハードディスク、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク又は光ディスクなどのプログラムコードを記憶可能な各種類の媒体を含む。
本出願の実施形態において、符号器及び復号器が提供される。復号器は、ビットストリームを復号化することにより、現在ブロックのイントラ予測モードパラメータを特定する。イントラ予測モードパラメータはIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。現在ブロックのMPMリストを構築する。第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。現在ブロックの重み付け行列を特定し、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定する。符号器は、IWCPモードを利用して現在ブロックのイントラ予測値を特定する場合、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。現在ブロックのMPMリストを構築する。第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。第一モードインデックス及び第二モードインデックスをビットストリームに書き込む。即ち、本出願の実施形態において、符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができ、次に、多様な重み付け行列で2つの異なる予測ブロックを組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
本出願の実施形態において、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体に、プログラムが記憶されており、当該プログラムがプロセッサによって実行されると、上記実施形態に記載の方法を実行する。
具体的に、本実施形態における1つのイントラ予測方法に対応するプログラム命令を光ディスク、ハードディスク、USBフラッシュディスクなどの記憶媒体に記憶することができ、記憶媒体における1つのイントラ予測方法に対応するプログラム命令が電子機器によって読み取られ又は実行される場合に、次の操作が実行される。ビットストリームを復号化することにより、現在ブロックのイントラ予測モードパラメータを特定する。イントラ予測モードパラメータはIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。現在ブロックのMPMリストを構築する。第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。現在ブロックの重み付け行列を特定し、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定する。
次の操作がさらに実行される。IWCPモードを利用して現在ブロックのイントラ予測値を特定する場合、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。現在ブロックのMPMリストを構築する。第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。第一モードインデックス及び第二モードインデックスをビットストリームに書き込む。
本出願の実施形態を方法、システム又はコンピュータプログラム製品として提供できることは当業者に理解されるべきである。従って、本出願はハードウェア実施形態、ソフトウェア実施形態、又はソフトウェアとハードウェアを結びつける実施形態を有することができる。また、本出願は、コンピュータによって利用可能なプログラムコードを含む一つ又は複数のコンピュータ利用可能な記憶媒体(磁気ディスク記憶装置、光メモリなどを含むがこれらに限定されない)上に具現化されたコンピュータプログラム製品の形態で実施され得る。
本出願は、本出願の実施形態に係る方法、装置(システム)、及びコンピュータプラグラム製品のフローチャート及び/又はブロック図を参照しながら説明される。フローチャート及び/又はブロック図における各プロセス及び/又はブロック、及びフローチャート及び/又はブロック図におけるプロセス及び/又はブロックの組み合わせはコンピュータプログラム命令によって実現され得る。それらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ又は他のプログラム可能なデータ処理装置(programmable data processing device)のプロセッサに提供されることで、機械を生成する。これで、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサによって実行される命令は、フローチャートの一つ又は複数のプロセス、及び/又はブロック図の一つ又は複数のブロックにおいて指定される機能を実現するに用いられる装置を生じる。
それらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置に特定の方法で実行するように指示することができるコンピュータ可読記憶媒体に記憶されることができる。それによって、当該コンピュータ可読記憶媒体に記憶される命令は命令装置を含む製造品を生じる。当該命令装置は、フローチャートの一つ又は複数のプロセス、及び/又はブロック図の一つ又は複数のブロックにおいて指定される機能を実現する。
それらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置にロードされることができ、コンピュータ又は他のプログラム可能な装置で一連の操作ステップを実行して、コンピュータによって実現されるプロセスを生成する。これで、コンピュータ又は他のプログラム可能な装置で実行される命令は、フローチャートの一つ又は複数のプロセス、及び/又はブロック図の一つ又は複数のブロックにおいて指定される機能を実現するに用いられるステップを提供する。
上記は、本出願の好適な実施形態に過ぎず、本出願の保護範囲を限定するためのものではない。
本出願の実施形態において、イントラ予測方法、符号器、復号器及び記憶媒体が提供される。復号器は、ビットストリームを復号化することにより、現在ブロックのイントラ予測モードパラメータを特定する。イントラ予測モードパラメータはIWCPモードを利用して現在ブロックのイントラ予測値を特定することを指示する場合、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。現在ブロックのMPMリストを構築する。第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。現在ブロックの重み付け行列を特定し、第一イントラ予測モード、第二イントラ予測モード、及び重み付け行列に基づいて、現在ブロックの予測値を特定する。符号器は、IWCPモードを利用して現在ブロックのイントラ予測値を特定する場合、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する。第一イントラ予測モード及び第二イントラ予測モードは互いに異なるイントラ角度予測モードである。現在ブロックのMPMリストを構築する。第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する。第一モードインデックス及び第二モードインデックスをビットストリームに書き込む。即ち、本出願の実施形態において、符号器・復号器は、2種の異なるイントラ角度予測モードで現在ブロックの2つの異なる予測ブロックを特定することができ、次に、多様な重み付け行列で2つの異なる予測ブロックを組み合わせることにより、より複雑な予測ブロックを最終的に取得することができる。それによって、イントラ予測の精度を向上させた上で、ハードウェア実装のコストを低減し、複雑度を低減し、簡単且つ効率的な符号化・復号化方法を実現し、圧縮性能を向上させることができる。
第七様態において、本出願の実施形態では、コンピュータ記憶媒体が提供される。コンピュータ記憶媒体にコンピュータプログラムが記憶されている。コンピュータプログラムが第一プロセッサによって実行されると、上記第二様態に記載のイントラ予測方法を実行し、又は、コンピュータプログラムが第二プロセッサによって実行されると、上記第一様態に記載のイントラ予測方法を実行する。
なお、本出願において、重み付け行列導出モードは、現在ブロックに用いられる重み付け行列を特定するために用いられる。具体的に、重み付け行列導出モードは、重み付け行列を導出するモードであってもよい。所定の高さ及び幅を有する予測ブロックに対して、各種の重み付け行列導出モードごとに、1つの重み付け行列が導出されることができる。同じサイズを有する予測ブロックに対して、異なる重み付け行列導出モードから導出される重み付け行列が異なる。
また、本出願において、復号器は、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する際に、まず、インデックス値とバイナリ文字列との間の第一マッピング関係表に基づいて第一モードインデックスの値i(iは0以上の整数)を特定することができる。iが0以上且つL未満である場合、MPMリストにおける、インデックスがiである角度予測モードを第一イントラ予測モードとして特定する。iがL以上である場合、プリセット角度予測モード集合及びMPMリストを利用して、第一イントラ予測モードを特定する。
また、本出願において、復号器は、第一モードインデックス、第二モードインデックス及びMPMリストに基づいて、現在ブロックの第一イントラ予測モード及び第二イントラ予測モードを特定する際に、まず、第一マッピング関係表に基づいて第二モードインデックスの値j(jは0以上の整数)を特定することができる。jが0以上且つL未満である場合、MPMリストにおける(j+1)番目の角度予測モードを第二イントラ予測モードとして特定する。jがL以上である場合、プリセット角度予測モード集合及びMPMリストを利用して、第二イントラ予測モードを特定する。
なお、本出願において、重み付け行列導出モードは、現在ブロックに用いられる重み付け行列を特定するために用いられる。具体的に、重み付け行列導出モードは、重み付け行列を導出するモードであってもよい。所定の高さ及び幅を有する予測ブロックに対して、各種の重み付け行列導出モードごとに、1つの重み付け行列が導出されることができる。同じサイズを有する予測ブロックに対して、異なる重み付け行列導出モードから導出される重み付け行列が異なる。
さらに、本出願において、符号器は、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する際に、第二イントラ予測モードのモード番号が、MPMリストにおけるm番目のモードのモード番号と同じである場合、第二モードインデックスの値jに値mを付与し、第二イントラ予測モードのモード番号が、MPMリストにおけるいずれのモードのモード番号とも異なる場合、MPMリストを利用して第二モードインデックスの値jを特定し、第一マッピング関係表及びjに基づいて、第二モードインデックスを特定する。mは0以上且つL未満の整数である。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、第二イントラ予測モードのモード番号が17である場合、符号器は、第二イントラ予測モードのモード番号を、4つのMPMのモード番号とそれぞれ比較する。具体的に、17が4番目のMPMのモード番号より大きいため、第二モードインデックスの値jは17-4=13となる。
例示的に、本出願において、MPMリストにおける4つのMPMのモード番号がそれぞれ4、8、12、16であり、第二イントラ予測モードのモード番号が6である場合、符号器は、第二イントラ予測モードのモード番号を、4つのMPMのモード番号とそれぞれ比較する。具体的に、6が1番目のMPMのモード番号より大きく、且つ2番目のMPMのモード番号より小さいため、第二モードインデックスの値jは6-1=5となる。
選択的に、本出願の実施形態において、符号器は、第一イントラ予測モード、第二イントラ予測モード、及びMPMリストに基づいて、現在ブロックの第一モードインデックス及び第二モードインデックスを特定する際に、第二イントラ予測モードのモード番号が、MPMリストにおけるm番目のモードのモード番号と同じである場合、第二モードインデックスの値jに値mを付与し、第二イントラ予測モードのモード番号が、MPMリストにおけるいずれのモードのモード番号とも異なる場合、MPMリストを利用して第二モードインデックスの値jを特定し、第一マッピング関係表、インデックス値とバイナリ文字列との間の第二マッピング関係表、及びjに基づいて、第二モードインデックスを特定する。