本開示の一態様に係る符号化装置は、回路と、前記回路に接続されるメモリとを備え、前記回路は、動作において、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成し、前記第1の予測画像に対して更新処理を適用することによって、前記処理対象ブロックの最終的な予測画像を生成し、前記更新処理の候補は、第1の処理と第2の処理を含み、前記第1の処理は、BDOF(bi-directional optical flow)処理であり、前記第2の処理は、前記処理対象ブロックのイントラ予測で生成された第2の予測画像と前記第1の予測画像とを混合する処理であり、前記更新処理の適用では、前記第1の処理及び前記第2の処理が排他的に適用される。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、第1の予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、画像を符号化するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
また、前記回路は、前記更新処理の適用では、前記第2の処理を前記第1の予測画像に適用するか否かを判定し、前記第2の処理を適用すると判定した場合に、前記第2の処理を前記更新処理とし、前記第2の処理を適用しないと判定した場合に、前記第1の処理を前記第1の予測画像に適用するか否かを判定し、前記第1の処理を適用すると判定した場合に、前記第1の処理を前記更新処理としてもよい。
これにより、更新処理の選択を適切に行うことができる可能性を高めることができる。
また、前記回路は、画像を符号化するためのパイプライン処理に含まれる1つのステージであって、生成された前記最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、前記第1の処理および前記第2の処理を排他的に実行してもよい。
これにより、例えば、第1の処理と第2の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、符号化装置の回路規模の増加を抑制することができる可能性を高めることができる。
また、本開示の一態様に係る復号装置は、回路と、前記回路に接続されるメモリとを備え、前記回路は、動作において、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成し、前記第1の予測画像に対して更新処理を適用することによって、前記処理対象ブロックの最終的な予測画像を生成し、前記更新処理の候補は、第1の処理と第2の処理を含み、前記第1の処理は、BDOF(bi-directional optical flow)処理であり、前記第2の処理は、前記処理対象ブロックのイントラ予測で生成された第2の予測画像と前記第1の予測画像とを混合する処理であり、前記更新処理の適用では、前記第1の処理及び前記第2の処理が排他的に適用される。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、第1の予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、符号化画像を復号するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
また、前記回路は、前記更新処理の適用では、前記第2の処理を前記第1の予測画像に適用するか否かを判定し、前記第2の処理を適用すると判定した場合に、前記第2の処理を前記更新処理とし、前記第2の処理を適用しないと判定した場合に、前記第1の処理を前記第1の予測画像に適用するか否かを判定し、前記第1の処理を適用すると判定した場合に、前記第1の処理を前記更新処理としてもよい。
これにより、更新処理の選択を適切に行うことができる可能性を高めることができる。
また、前記回路は、符号化画像を復号するためのパイプライン処理に含まれる1つのステージであって、生成された前記最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、前記第1の処理および前記第2の処理を排他的に実行してもよい。
これにより、例えば、第1の処理と第2の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、復号装置の回路規模の増加を抑制することができる可能性を高めることができる。
また、例えば、本開示の一態様に係る符号化装置は、分割部と、イントラ予測部と、インター予測部と、予測制御部と、変換部と、量子化部と、エントロピー符号化部とを備える。
前記分割部は、動画像を構成する符号化対象ピクチャを複数のブロックに分割する。前記イントラ予測部は、前記符号化対象ピクチャにおける参照画像を用いて前記符号化対象ピクチャにおける処理対象ブロックのイントラ予測画像を生成するイントラ予測を行う。前記インター予測部は、前記符号化対象ピクチャとは異なる参照ピクチャにおける参照画像を用いて前記処理対象ブロックのインター予測画像を生成するインター予測を行う。
前記予測制御部は、前記イントラ予測部が行うイントラ予測、及び、前記インター予測部が行うインター予測を制御する。前記変換部は、前記イントラ予測画像又は前記インター予測画像のうちの少なくとも1つで構成される予測画像と、前記処理対象ブロックの画像との間における残差画像を変換して、前記処理対象ブロックの変換係数信号を生成する。前記量子化部は、前記変換係数信号を量子化する。前記エントロピー符号化部は、量子化済みの前記変換係数信号を符号化する。
ここで、前記インター予測部は、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成し、前記第1の予測画像に対して更新処理を適用することによって、前記処理対象ブロックの最終的な予測画像を生成する。前記更新処理の候補は、第1の処理と第2の処理を含み、前記第1の処理は、BDOF(bi-directional optical flow)処理であり、前記第2の処理は、前記処理対象ブロックのイントラ予測で生成された第2の予測画像と前記第1の予測画像とを混合する処理である。そして、前記更新処理の適用では、前記第1の処理及び前記第2の処理が排他的に適用される。
また、例えば、本開示の一態様に係る復号装置は、予測画像を用いて動画像を復号する復号装置であって、エントロピー復号部と、逆量子化部と、逆変換部と、イントラ予測部と、インター予測部と、予測制御部と、加算部(再構成部)とを備える。
前記エントロピー復号部は、前記動画像を構成する復号対象ピクチャにおける処理対象ブロックの量子化済みの変換係数信号を復号する。前記逆量子化部は、量子化済みの前記変換係数信号を逆量子化する。前記逆変換部は、前記変換係数信号を逆変換して、前記処理対象ブロックの残差画像を取得する。
前記イントラ予測部は、前記復号対象ピクチャにおける参照画像を用いて前記処理対象ブロックのイントラ予測画像を生成するイントラ予測を行う。前記インター予測部は、前記復号対象ピクチャとは異なる参照ピクチャにおける参照画像を用いて前記処理対象ブロックのインター予測画像を生成するインター予測を行う。前記予測制御部は、前記イントラ予測部が行うイントラ予測、及び、前記インター予測部が行うインター予測を制御する。
前記加算部は、前記イントラ予測画像又は前記インター予測画像のうちの少なくとも1つで構成される予測画像と、前記残差画像とを足し合わせて、前記処理対象ブロックの画像を再構成する。
ここで、前記インター予測部は、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成し、前記第1の予測画像に対して更新処理を適用することによって、前記処理対象ブロックの最終的な予測画像を生成する。前記更新処理の候補は、第1の処理と第2の処理を含み、前記第1の処理は、BDOF(bi-directional optical flow)処理であり、前記第2の処理は、前記処理対象ブロックのイントラ予測で生成された第2の予測画像と前記第1の予測画像とを混合する処理である。そして、前記更新処理の適用では、前記第1の処理及び前記第2の処理が排他的に適用される。
さらに、これらの包括的又は具体的な態様は、システム、装置、方法、集積回路、コンピュータプログラム、又は、コンピュータ読み取り可能なCD-ROMなどの非一時的な記録媒体で実現されてもよく、システム、装置、方法、集積回路、コンピュータプログラム、及び、記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について図面を参照しながら具体的に説明する。なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの関係及び順序などは、一例であり、請求の範囲を限定する主旨ではない。
以下では、符号化装置および復号化装置の実施の形態を説明する。実施の形態は、本開示の各態様で説明する処理および/または構成を適用可能な符号化装置および復号化装置の例である。処理および/または構成は、実施の形態とは異なる符号化装置および復号化装置においても実施可能である。例えば、実施の形態に対して適用される処理および/または構成に関して、例えば以下のいずれかを実施してもよい。
(1)本開示の各態様で説明する実施の形態の符号化装置または復号装置の複数の構成要素のうちいずれかは、本開示の各態様のいずれかで説明する他の構成要素に置き換えまたは組み合わせられてもよい。
(2)実施の形態の符号化装置または復号装置において、当該符号化装置または復号装置の複数の構成要素のうち一部の構成要素によって行われる機能または処理に、機能または処理の追加、置き換え、削除などの任意の変更がなされてもよい。例えば、いずれかの機能または処理は、本開示の各態様のいずれかで説明する他の機能または処理に、置き換えまたは組み合わせられてもよい。
(3)実施の形態の符号化装置または復号装置が実施する方法において、当該方法に含まれる複数の処理のうちの一部の処理について、追加、置き換えおよび削除などの任意の変更がなされてもよい。例えば、方法におけるいずれかの処理は、本開示の各態様のいずれかで説明する他の処理に、置き換えまたは組み合わせられてもよい。
(4)実施の形態の符号化装置または復号装置を構成する複数の構成要素のうちの一部の構成要素は、本開示の各態様のいずれかで説明する構成要素と組み合わせられてもよいし、本開示の各態様のいずれかで説明する機能の一部を備える構成要素と組み合わせられてもよいし、本開示の各態様で説明する構成要素が実施する処理の一部を実施する構成要素と組み合わせられてもよい。
(5)実施の形態の符号化装置または復号装置の機能の一部を備える構成要素、または、実施の形態の符号化装置または復号装置の処理の一部を実施する構成要素は、本開示の各態様いずれかで説明する構成要素と、本開示の各態様でいずれかで説明する機能の一部を備える構成要素と、または、本開示の各態様のいずれかで説明する処理の一部を実施する構成要素と組み合わせまたは置き換えられてもよい。
(6)実施の形態の符号化装置または復号装置が実施する方法において、当該方法に含まれる複数の処理のいずれかは、本開示の各態様のいずれかで説明する処理に、または、同様のいずれかの処理に、置き換えまたは組み合わせられてもよい。
(7)実施の形態の符号化装置または復号装置が実施する方法に含まれる複数の処理のうちの一部の処理は、本開示の各態様のいずれかで説明する処理と組み合わせられてもよい。
(8)本開示の各態様で説明する処理および/または構成の実施の仕方は、実施の形態の符号化装置または復号装置に限定されるものではない。例えば、処理および/または構成は、実施の形態において開示する動画像符号化または動画像復号とは異なる目的で利用される装置において実施されてもよい。
(実施の形態1)
[符号化装置]
まず、実施の形態に係る符号化装置を説明する。図1は、実施の形態に係る符号化装置100の機能構成を示すブロック図である。符号化装置100は、動画像をブロック単位で符号化する動画像符号化装置である。
図1に示すように、符号化装置100は、画像をブロック単位で符号化する装置であって、分割部102と、減算部104と、変換部106と、量子化部108と、エントロピー符号化部110と、逆量子化部112と、逆変換部114と、加算部116と、ブロックメモリ118と、ループフィルタ部120と、フレームメモリ122と、イントラ予測部124と、インター予測部126と、予測制御部128と、を備える。
符号化装置100は、例えば、汎用プロセッサ及びメモリにより実現される。この場合、メモリに格納されたソフトウェアプログラムがプロセッサにより実行されたときに、プロセッサは、分割部102、減算部104、変換部106、量子化部108、エントロピー符号化部110、逆量子化部112、逆変換部114、加算部116、ループフィルタ部120、イントラ予測部124、インター予測部126及び予測制御部128として機能する。また、符号化装置100は、分割部102、減算部104、変換部106、量子化部108、エントロピー符号化部110、逆量子化部112、逆変換部114、加算部116、ループフィルタ部120、イントラ予測部124、インター予測部126及び予測制御部128に対応する専用の1以上の電子回路として実現されてもよい。
以下に、符号化装置100の全体的な処理の流れを説明した後に、符号化装置100に含まれる各構成要素について説明する。
[符号化処理の全体フロー]
図2は、符号化装置100による全体的な符号化処理の一例を示すフローチャートである。
まず、符号化装置100の分割部102は、動画像である入力画像に含まれる各ピクチャを複数の固定サイズのブロック(例えば、128×128画素)に分割する(ステップSa_1)。そして、分割部102は、その固定サイズのブロックに対して分割パターン(ブロック形状ともいう)を選択する(ステップSa_2)。つまり、分割部102は、固定サイズのブロックを、その選択された分割パターンを構成する複数のブロックに、さらに分割する。そして、符号化装置100は、その複数のブロックのそれぞれについて、そのブロック(すなわち符号化対象ブロック)に対してステップSa_3~Sa_9の処理を行う。
つまり、イントラ予測部124、インター予測部126および予測制御部128の全てまたは一部からなる予測処理部は、符号化対象ブロック(カレントブロックともいう)の予測信号(予測ブロックともいう)を生成する(ステップSa_3)。
次に、減算部104は、符号化対象ブロックと予測ブロックとの差分を予測残差(差分ブロックともいう)として生成する(ステップSa_4)。
次に、変換部106および量子化部108は、その差分ブロックに対して変換および量子化を行うことによって、複数の量子化係数を生成する(ステップSa_5)。なお、複数の量子化係数からなるブロックを係数ブロックともいう。
次に、エントロピー符号化部110は、その係数ブロックと、予測信号の生成に関する予測パラメータとに対して符号化(具体的にはエントロピー符号化)を行うことによって、符号化信号を生成する(ステップSa_6)。なお、符号化信号は、符号化ビットストリーム、圧縮ビットストリーム、またはストリームともいう。
次に、逆量子化部112および逆変換部114は、係数ブロックに対して逆量子化および逆変換を行うことによって、複数の予測残差(すなわち差分ブロック)を復元する(ステップSa_7)。
次に、加算部116は、その復元された差分ブロックに予測ブロックを加算することによってカレントブロックを再構成画像(再構成ブロックまたは復号画像ブロックともいう)に再構成する(ステップSa_8)。これにより、再構成画像が生成される。
この再構成画像が生成されると、ループフィルタ部120は、その再構成画像に対してフィルタリングを必要に応じて行う(ステップSa_9)。
そして、符号化装置100は、ピクチャ全体の符号化が完了したか否かを判定し(ステップSa_10)、完了していないと判定する場合(ステップSa_10のNo)、ステップSa_2からの処理を繰り返し実行する。
なお、上述の例では、符号化装置100は、固定サイズのブロックに対して1つの分割パターンを選択し、その分割パターンにしたがって各ブロックの符号化を行うが、複数の分割パターンのそれぞれにしたがって各ブロックの符号化を行ってもよい。この場合には、符号化装置100は、複数の分割パターンのそれぞれに対するコストを評価し、例えば最も小さいコストの分割パターンにしたがった符号化によって得られる符号化信号を、出力される符号化信号として選択してもよい。
図示されているように、これらのステップSa_1~Sa_10の処理は、符号化装置100によってシーケンシャルに行われる。あるいは、それらの処理のうちの一部の複数の処理が並列に行われてもよく、それらの処理の順番の入れ替え等が行われてもよい。
[分割部]
分割部102は、入力動画像に含まれる各ピクチャを複数のブロックに分割し、各ブロックを減算部104に出力する。例えば、分割部102は、まず、ピクチャを固定サイズ(例えば128x128)のブロックに分割する。他の固定ブロックサイズが採用されてもよい。この固定サイズのブロックは、符号化ツリーユニット(CTU)と呼ばれることがある。そして、分割部102は、例えば再帰的な四分木(quadtree)及び/又は二分木(binary tree)ブロック分割に基づいて、固定サイズのブロックの各々を可変サイズ(例えば64x64以下)のブロックに分割する。すなわち、分割部102は、分割パターンを選択する。この可変サイズのブロックは、符号化ユニット(CU)、予測ユニット(PU)あるいは変換ユニット(TU)と呼ばれることがある。なお、種々の処理例では、CU、PU及びTUは区別される必要はなく、ピクチャ内の一部又はすべてのブロックがCU、PU、TUの処理単位となってもよい。
図3は、実施の形態におけるブロック分割の一例を示す概念図である。図3において、実線は四分木ブロック分割によるブロック境界を表し、破線は二分木ブロック分割によるブロック境界を表す。
ここでは、ブロック10は、128x128画素の正方形ブロック(128x128ブロック)である。この128x128ブロック10は、まず、4つの正方形の64x64ブロックに分割される(四分木ブロック分割)。
左上の64x64ブロックは、さらに2つの矩形の32x64ブロックに垂直に分割され、左の32x64ブロックはさらに2つの矩形の16x64ブロックに垂直に分割される(二分木ブロック分割)。その結果、左上の64x64ブロックは、2つの16x64ブロック11、12と、32x64ブロック13とに分割される。
右上の64x64ブロックは、2つの矩形の64x32ブロック14、15に水平に分割される(二分木ブロック分割)。
左下の64x64ブロックは、4つの正方形の32x32ブロックに分割される(四分木ブロック分割)。4つの32x32ブロックのうち左上のブロック及び右下のブロックはさらに分割される。左上の32x32ブロックは、2つの矩形の16x32ブロックに垂直に分割され、右の16x32ブロックはさらに2つの16x16ブロックに水平に分割される(二分木ブロック分割)。右下の32x32ブロックは、2つの32x16ブロックに水平に分割される(二分木ブロック分割)。その結果、左下の64x64ブロックは、16x32ブロック16と、2つの16x16ブロック17、18と、2つの32x32ブロック19、20と、2つの32x16ブロック21、22とに分割される。
右下の64x64ブロック23は分割されない。
以上のように、図3では、ブロック10は、再帰的な四分木及び二分木ブロック分割に基づいて、13個の可変サイズのブロック11~23に分割される。このような分割は、QTBT(quad-tree plus binary tree)分割と呼ばれることがある。
なお、図3では、1つのブロックが4つ又は2つのブロックに分割されていたが(四分木又は二分木ブロック分割)、分割はこれらに限定されない。例えば、1つのブロックが3つのブロックに分割されてもよい(三分木ブロック分割)。このような三分木ブロック分割を含む分割は、MBT(multi type tree)分割と呼ばれることがある。
[ピクチャの構成 スライス/タイル]
ピクチャを並列にデコードするために、ピクチャはスライス単位またはタイル単位で構成される場合がある。スライス単位またはタイル単位からなるピクチャは、分割部102によって構成されてもよい。
スライスは、ピクチャを構成する基本的な符号化の単位である。ピクチャは、例えば1つ以上のスライスから構成される。また、スライスは、1つ以上の連続するCTU(Coding Tree Unit)からなる。
図4Aは、スライスの構成の一例を示す概念図である。例えば、ピクチャは、11×8個のCTUを含み、かつ、4つのスライス(スライス1-4)に分割される。スライス1は、16個のCTUからなり、スライス2は、21個のCTUからなり、スライス3は、29個のCTUからなり、スライス4は、22個のCTUからなる。ここで、ピクチャ内の各CTUは、いずれかのスライスに属する。スライスの形状は、ピクチャを水平方向に分割した形になる。スライスの境界は、画面端である必要はなく、画面内のCTUの境界のうちどこであってもよい。スライスの中のCTUの処理順(符号化順または復号順)は、例えばラスタ・スキャン順である。また、スライスは、ヘッダ情報と符号化データを含む。ヘッダ情報には、スライスの先頭のCTUアドレス、スライス・タイプなどそのスライスの特徴が記述されてもよい。
タイルは、ピクチャを構成する矩形領域の単位である。各タイルにはTileIdと呼ばれる番号がラスタ・スキャン順に割り振られてもよい。
図4Bは、タイルの構成の一例を示す概念図である。例えば、ピクチャは、11×8個のCTUを含み、かつ、4つの矩形領域のタイル(タイル1-4)に分割される。タイルが使用される場合、タイルが使用されない場合と比べてCTUの処理順が変更される。タイルが使用されない場合、ピクチャ内の複数のCTUはラスタ・スキャン順に処理される。タイルが使用される場合には、複数のタイルのそれぞれにおいて、少なくとも1つのCTUがラスタ・スキャン順に処理される。例えば、図4Bに示すように、タイル1に含まれる複数のCTUの処理順は、タイル1の1行目左端からタイル1の1行目右端まで向かい、次に、タイル1の2行目左端からタイル1の2行目右端まで向かう順である。
なお、1つのタイルは、1つ以上のスライスを含む場合があり、1つのスライスは、1つ以上のタイルを含む場合がある。
[減算部]
減算部104は、分割部102から入力され、分割部102によって分割されたブロック単位で、原信号(原サンプル)から予測信号(以下に示す予測制御部128から入力される予測サンプル)を減算する。つまり、減算部104は、符号化対象ブロック(以下、カレントブロックという)の予測誤差(残差ともいう)を算出する。そして、減算部104は、算出された予測誤差(残差)を変換部106に出力する。
原信号は、符号化装置100の入力信号であり、動画像を構成する各ピクチャの画像を表す信号(例えば輝度(luma)信号及び2つの色差(chroma)信号)である。以下において、画像を表す信号をサンプルということもある。
[変換部]
変換部106は、空間領域の予測誤差を周波数領域の変換係数に変換し、変換係数を量子化部108に出力する。具体的には、変換部106は、例えば空間領域の予測誤差に対して所定の離散コサイン変換(DCT)又は離散サイン変換(DST)を行う。所定のDCT又はDSTは、予め定められていてもよい。
なお、変換部106は、複数の変換タイプの中から適応的に変換タイプを選択し、選択された変換タイプに対応する変換基底関数(transform basis function)を用いて、予測誤差を変換係数に変換してもよい。このような変換は、EMT(explicit multiple core transform)又はAMT(adaptive multiple transform)と呼ばれることがある。
複数の変換タイプは、例えば、DCT-II、DCT-V、DCT-VIII、DST-I及びDST-VIIを含む。図5Aは、変換タイプ例に対応する変換基底関数を示す表である。図5AにおいてNは入力画素の数を示す。これらの複数の変換タイプの中からの変換タイプの選択は、例えば、予測の種類(イントラ予測及びインター予測)に依存してもよいし、イントラ予測モードに依存してもよい。
このようなEMT又はAMTを適用するか否かを示す情報(例えばEMTフラグまたはAMTフラグと呼ばれる)及び選択された変換タイプを示す情報は、通常、CUレベルで信号化される。なお、これらの情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、ビットシーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
また、変換部106は、変換係数(変換結果)を再変換してもよい。このような再変換は、AST(adaptive secondary transform)又はNSST(non-separable secondary transform)と呼ばれることがある。例えば、変換部106は、イントラ予測誤差に対応する変換係数のブロックに含まれるサブブロック(例えば4x4サブブロック)ごとに再変換を行う。NSSTを適用するか否かを示す情報及びNSSTに用いられる変換行列に関する情報は、通常、CUレベルで信号化される。なお、これらの情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
変換部106には、Separableな変換と、Non-Separableな変換とが適用されてもよい。Separableな変換とは、入力の次元の数だけ方向ごとに分離して複数回変換を行う方式であり、Non-Separableな変換とは、入力が多次元であった際に2つ以上の次元をまとめて1次元とみなして、まとめて変換を行う方式である。
例えば、Non-Separableな変換の一例として、入力が4×4のブロックであった場合にはそれを16個の要素を持ったひとつの配列とみなし、その配列に対して16×16の変換行列で変換処理を行うようなものが挙げられる。
また、Non-Separableな変換のさらなる例では、4×4の入力ブロックを16個の要素を持ったひとつの配列とみなした後に、その配列に対してGivens回転を複数回行うような変換(Hypercube Givens Transform)が行われてもよい。
変換部106での変換では、CU内の領域に応じて周波数領域に変換する基底のタイプを切替えることもできる。一例として、SVT(Spatially Varying Transform)がある。SVTでは、図5Bに示すように、水平あるいは垂直方向にCUを2等分し、いずれか一方の領域のみ周波数領域への変換を行う。変換基底のタイプは領域毎に設定でき、例えば、DST7とDCT8が用いられる。本例ではCU内の2つの領域のうち、どちらか一方のみ変換を行い、もう一方は変換を行わないが、2つの領域共に変換してもよい。また、分割方法も2等分だけでなく、4等分、あるいは分割を示す情報を別途符号化してCU分割と同様にシグナリングするなど、より柔軟にすることもできる。なお、SVTは、SBT(Sub-block Transform)と呼ぶこともある。
[量子化部]
量子化部108は、変換部106から出力された変換係数を量子化する。具体的には、量子化部108は、カレントブロックの変換係数を所定の走査順序で走査し、走査された変換係数に対応する量子化パラメータ(QP)に基づいて当該変換係数を量子化する。そして、量子化部108は、カレントブロックの量子化された変換係数(以下、量子化係数という)をエントロピー符号化部110及び逆量子化部112に出力する。所定の走査順序は、予め定められていてもよい。
所定の走査順序は、変換係数の量子化/逆量子化のための順序である。例えば、所定の走査順序は、周波数の昇順(低周波から高周波の順)又は降順(高周波から低周波の順)で定義されてもよい。
量子化パラメータ(QP)とは、量子化ステップ(量子化幅)を定義するパラメータである。例えば、量子化パラメータの値が増加すれば量子化ステップも増加する。つまり、量子化パラメータの値が増加すれば量子化誤差が増大する。
また、量子化には、量子化マトリックスが使用される場合がある。例えば、4x4および8x8などの周波数変換サイズと、イントラ予測およびインター予測などの予測モードと、輝度および色差などの画素成分とに対応して数種類の量子化マトリックスが使われる場合がある。なお、量子化とは、所定の間隔でサンプリングした値を所定のレベルに対応づけてデジタル化することをいい、この技術分野では、丸め、ラウンディング、スケーリングといった他の表現を用いて参照されてもよいし、丸め、ラウンディング、スケーリングを採用してもよい。所定の間隔及びレベルは、予め定められていてもよい。
量子化マトリックスを使用する方法として、符号化装置側で直接設定された量子化マトリックスを使用する方法と、デフォルトの量子化マトリックス(デフォルトマトリックス)を使用する方法とがある。符号化装置側では、量子化マトリックスを直接設定することにより、画像の特徴に応じた量子化マトリックスを設定することができる。しかし、この場合、量子化マトリックスの符号化によって、符号量が増加するというデメリットがある。
一方、量子化マトリックスを使用せず、高域成分の係数も低域成分の係数も同じように量子化する方法もある。なお、この方法は、係数が全て同じ値である量子化マトリックス(フラットなマトリックス)を用いる方法に等しい。
量子化マトリックスは、例えば、SPS(シーケンスパラメータセット:Sequence Parameter Set)またはPPS(ピクチャパラメータセット:Picture Parameter Set)で指定されてもよい。SPSは、シーケンスに対して用いられるパラメータを含み、PPSは、ピクチャに対して用いられるパラメータを含む。SPSとPPSとは、単にパラメータセットと呼ばれる場合がある。
[エントロピー符号化部]
エントロピー符号化部110は、量子化部108から入力された量子化係数に基づいて符号化信号(符号化ビットストリーム)を生成する。具体的には、エントロピー符号化部110は、例えば、量子化係数を二値化し、二値信号を算術符号化し、圧縮されたビットストリームまたはシーケンスを出力する。
[逆量子化部]
逆量子化部112は、量子化部108から入力された量子化係数を逆量子化する。具体的には、逆量子化部112は、カレントブロックの量子化係数を所定の走査順序で逆量子化する。そして、逆量子化部112は、カレントブロックの逆量子化された変換係数を逆変換部114に出力する。所定の走査順序は、予め定められていてもよい。
[逆変換部]
逆変換部114は、逆量子化部112から入力された変換係数を逆変換することにより予測誤差(残差)を復元する。具体的には、逆変換部114は、変換係数に対して、変換部106による変換に対応する逆変換を行うことにより、カレントブロックの予測誤差を復元する。そして、逆変換部114は、復元された予測誤差を加算部116に出力する。
なお、復元された予測誤差は、通常、量子化により情報が失われているので、減算部104が算出した予測誤差と一致しない。すなわち、復元された予測誤差には、通常、量子化誤差が含まれている。
[加算部]
加算部116は、逆変換部114から入力された予測誤差と予測制御部128から入力された予測サンプルとを加算することによりカレントブロックを再構成する。そして、加算部116は、再構成されたブロックをブロックメモリ118及びループフィルタ部120に出力する。再構成ブロックは、ローカル復号ブロックと呼ばれることもある。
[ブロックメモリ]
ブロックメモリ118は、例えば、イントラ予測で参照されるブロックであって符号化対象ピクチャ(カレントピクチャという)内のブロックを格納するための記憶部である。具体的には、ブロックメモリ118は、加算部116から出力された再構成ブロックを格納する。
[フレームメモリ]
フレームメモリ122は、例えば、インター予測に用いられる参照ピクチャを格納するための記憶部であり、フレームバッファと呼ばれることもある。具体的には、フレームメモリ122は、ループフィルタ部120によってフィルタされた再構成ブロックを格納する。
[ループフィルタ部]
ループフィルタ部120は、加算部116によって再構成されたブロックにループフィルタを施し、フィルタされた再構成ブロックをフレームメモリ122に出力する。ループフィルタとは、符号化ループ内で用いられるフィルタ(インループフィルタ)であり、例えば、デブロッキング・フィルタ(DFまたはDBF)、サンプルアダプティブオフセット(SAO)及びアダプティブループフィルタ(ALF)などを含む。
ALFでは、符号化歪みを除去するための最小二乗誤差フィルタが適用され、例えばカレントブロック内の2x2サブブロックごとに、局所的な勾配(gradient)の方向及び活性度(activity)に基づいて複数のフィルタの中から選択された1つのフィルタが適用される。
具体的には、まず、サブブロック(例えば2x2サブブロック)が複数のクラス(例えば15又は25クラス)に分類される。サブブロックの分類は、勾配の方向及び活性度に基づいて行われる。例えば、勾配の方向値D(例えば0~2又は0~4)と勾配の活性値A(例えば0~4)とを用いて分類値C(例えばC=5D+A)が算出される。そして、分類値Cに基づいて、サブブロックが複数のクラスに分類される。
勾配の方向値Dは、例えば、複数の方向(例えば水平、垂直及び2つの対角方向)の勾配を比較することにより導出される。また、勾配の活性値Aは、例えば、複数の方向の勾配を加算し、加算結果を量子化することにより導出される。
このような分類の結果に基づいて、複数のフィルタの中からサブブロックのためのフィルタが決定される。
ALFで用いられるフィルタの形状としては例えば円対称形状が利用される。図6A~図6Cは、ALFで用いられるフィルタの形状の複数の例を示す図である。図6Aは、5x5ダイヤモンド形状フィルタを示し、図6Bは、7x7ダイヤモンド形状フィルタを示し、図6Cは、9x9ダイヤモンド形状フィルタを示す。フィルタの形状を示す情報は、通常、ピクチャレベルで信号化される。なお、フィルタの形状を示す情報の信号化は、ピクチャレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、スライスレベル、タイルレベル、CTUレベル又はCUレベル)であってもよい。
ALFのオン/オフは、例えば、ピクチャレベル又はCUレベルで決定されてもよい。例えば、輝度についてはCUレベルでALFを適用するか否かが決定されてもよく、色差についてはピクチャレベルでALFを適用するか否かが決定されてもよい。ALFのオン/オフを示す情報は、通常、ピクチャレベル又はCUレベルで信号化される。なお、ALFのオン/オフを示す情報の信号化は、ピクチャレベル又はCUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
選択可能な複数のフィルタ(例えば15又は25までのフィルタ)の係数セットは、通常、ピクチャレベルで信号化される。なお、係数セットの信号化は、ピクチャレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、スライスレベル、タイルレベル、CTUレベル、CUレベル又はサブブロックレベル)であってもよい。
[ループフィルタ部 > デブロッキング・フィルタ]
デブロッキング・フィルタでは、ループフィルタ部120は、再構成画像のブロック境界にフィルタ処理を行うことによって、そのブロック境界に生じる歪みを減少させる。
図7は、デブロッキング・フィルタとして機能するループフィルタ部120の詳細な構成の一例を示すブロック図である。
ループフィルタ部120は、境界判定部1201、フィルタ判定部1203と、フィルタ処理部1205と、処理判定部1208と、フィルタ特性決定部1207と、スイッチ1202、1204および1206とを備える。
境界判定部1201は、デブロッキング・フィルタ処理される画素(すなわち対象画素)がブロック境界付近に存在しているか否かを判定する。そして、境界判定部1201は、その判定結果をスイッチ1202および処理判定部1208に出力する。
スイッチ1202は、対象画素がブロック境界付近に存在していると境界判定部1201によって判定された場合には、フィルタ処理前の画像を、スイッチ1204に出力する。逆に、スイッチ1202は、境界判定部1201によって対象画素がブロック境界付近に存在していないと判定された場合には、フィルタ処理前の画像をスイッチ1206に出力する。
フィルタ判定部1203は、対象画素の周辺にある少なくとも1つの周辺画素の画素値に基づいて、対象画素に対してデブロッキング・フィルタ処理を行うか否かを判定する。そして、フィルタ判定部1203は、その判定結果をスイッチ1204および処理判定部1208に出力する。
スイッチ1204は、対象画素にデブロッキング・フィルタ処理を行うとフィルタ判定部1203によって判定された場合には、スイッチ1202を介して取得したフィルタ処理前の画像を、フィルタ処理部1205に出力する。逆に、スイッチ1204は、対象画素にデブロッキング・フィルタ処理を行わないとフィルタ判定部1203によって判定された場合には、スイッチ1202を介して取得したフィルタ処理前の画像をスイッチ1206に出力する。
フィルタ処理部1205は、スイッチ1202および1204を介してフィルタ処理前の画像を取得した場合には、フィルタ特性決定部1207によって決定されたフィルタ特性を有するデブロッキング・フィルタ処理を、対象画素に対して実行する。そして、フィルタ処理部1205は、そのフィルタ処理後の画素をスイッチ1206に出力する。
スイッチ1206は、処理判定部1208による制御に応じて、デブロッキング・フィルタ処理されていない画素と、フィルタ処理部1205によってデブロッキング・フィルタ処理された画素とを選択的に出力する。
処理判定部1208は、境界判定部1201およびフィルタ判定部1203のそれぞれの判定結果に基づいて、スイッチ1206を制御する。つまり、処理判定部1208は、対象画素がブロック境界付近に存在していると境界判定部1201によって判定され、かつ、対象画素にデブロッキング・フィルタ処理を行うとフィルタ判定部1203によって判定された場合には、デブロッキング・フィルタ処理された画素をスイッチ1206から出力させる。また、上述の場合以外では、処理判定部1208は、デブロッキング・フィルタ処理されていない画素をスイッチ1206から出力させる。このような画素の出力が繰り返し行われることによって、フィルタ処理後の画像がスイッチ1206から出力される。
図8は、ブロック境界に対して対称なフィルタ特性を有するデブロッキング・フィルタの例を示す概念図である。
デブロッキング・フィルタ処理では、例えば、画素値と量子化パラメータを用いて、特性の異なる2つのデブロッキング・フィルタ、すなわちストロングフィルタおよびウィークフィルタのうちの何れか1つが選択される。ストロングフィルタでは、図8に示すように、ブロック境界を挟んで画素p0~p2と、画素q0~q2とが存在する場合、画素q0~q2のそれぞれの画素値は、例えば以下の式に示す演算を行うことによって、画素値q’0~q’2に変更される。
q’0=(p1+2×p0+2×q0+2×q1+q2+4)/8
q’1=(p0+q0+q1+q2+2)/4
q’2=(p0+q0+q1+3×q2+2×q3+4)/8
なお、上述の式において、p0~p2およびq0~q2は、画素p0~p2および画素q0~q2のそれぞれの画素値である。また、q3は、画素q2にブロック境界と反対側に隣接する画素q3の画素値である。また、上述の各式の右辺において、デブロッキング・フィルタ処理に用いられる各画素の画素値に乗算される係数が、フィルタ係数である。
さらに、デブロッキング・フィルタ処理では、演算後の画素値が閾値を超えて設定されないように、クリップ処理が行われてもよい。このクリップ処理では、上述の式による演算後の画素値は、量子化パラメータから決定される閾値を用いて、「演算対象画素値±2×閾値」にクリップされる。これにより、過度な平滑化を防ぐことができる。
図9は、デブロッキング・フィルタ処理が行われるブロック境界を説明するための概念図である。図10は、Bs値の一例を示す概念図である。
デブロッキング・フィルタ処理が行われるブロック境界は、例えば、図9で示すような8×8画素ブロックのPU(Prediction Unit)またはTU(Transform Unit)の境界である。デブロッキング・フィルタ処理は、4行または4列を単位に行われ得る。まず、図9に示すブロックPおよびブロックQに対して、図10のようにBs(Boundary Strength)値が決定される。
図10のBs値にしたがい、同一の画像に属するブロック境界であっても、異なる強さのデブロッキング・フィルタ処理を行うか否かが決定される。色差信号に対するデブロッキング・フィルタ処理は、Bs値が2の場合に行われる。輝度信号に対するデブロッキング・フィルタ処理は、Bs値が1以上であって、所定の条件が満たされた場合に行われる。所定の条件は、予め定められていてもよい。なお、Bs値の判定条件は図10に示したものに限定されず、他のパラメータに基づいて決定されてもよい。
[予測処理部(イントラ予測部・インター予測部・予測制御部)]
図11は、符号化装置100の予測処理部で行われる処理の一例を示すフローチャートである。なお、予測処理部は、イントラ予測部124、インター予測部126、および予測制御部128の全てまたは一部の構成要素からなる。
予測処理部は、カレントブロックの予測画像を生成する(ステップSb_1)。この予測画像は、予測信号または予測ブロックともいう。なお、予測信号には、例えばイントラ予測信号またはインター予測信号がある。具体的には、予測処理部は、予測ブロックの生成、差分ブロックの生成、係数ブロックの生成、差分ブロックの復元、および復号画像ブロックの生成が行われることによって既に得られている再構成画像を用いて、カレントブロックの予測画像を生成する。
再構成画像は、例えば、参照ピクチャの画像であってもよいし、カレントブロックを含むピクチャであるカレントピクチャ内の符号化済みのブロックの画像であってもよい。カレントピクチャ内の符号化済みのブロックは、例えばカレントブロックの隣接ブロックである。
図12は、符号化装置100の予測処理部で行われる処理の他の例を示すフローチャートである。
予測処理部は、第1の方式で予測画像を生成し(ステップSc_1a)、第2の方式で予測画像を生成し(ステップSc_1b)、第3の方式で予測画像を生成する(ステップSc_1c)。第1の方式、第2の方式、および第3の方式は、予測画像を生成するための互いに異なる方式であって、それぞれ例えば、インター予測方式、イントラ予測方式、および、それら以外の予測方式であってもよい。これらの予測方式では、上述の再構成画像を用いてもよい。
次に、予測処理部は、ステップSc_1a、Sc_1b、およびSc_1cで生成された複数の予測画像のうちの何れか1つを選択する(ステップSc_2)。この予測画像の選択、すなわち最終的な予測画像を得るための方式またはモードの選択は、生成された各予測画像に対するコストを算出し、そのコストに基づいて行われてもよい。または、その予測画像の選択は、符号化の処理に用いられるパラメータに基づいて行われてもよい。符号化装置100は、その選択された予測画像、方式またはモードを特定するための情報を符号化信号(符号化ビットストリームともいう)に信号化してもよい。その情報は、例えばフラグなどであってもよい。これにより、復号装置は、その情報に基づいて、符号化装置100において選択された方式またはモードにしたがって予測画像を生成することができる。なお、図12に示す例では、予測処理部は、各方式で予測画像を生成した後に、何れかの予測画像を選択する。しかし、予測処理部は、それらの予測画像を生成する前に、上述の符号化の処理に用いられるパラメータに基づいて、方式またはモードを選択し、その方式またはモードにしたがって予測画像を生成してもよい。
例えば、第1の方式および第2の方式は、それぞれイントラ予測およびインター予測であって、予測処理部は、これらの予測方式にしたがって生成される予測画像から、カレントブロックに対する最終的な予測画像を選択してもよい。
図13は、符号化装置100の予測処理部で行われる処理の他の例を示すフローチャートである。
まず、予測処理部は、イントラ予測によって予測画像を生成し(ステップSd_1a)、インター予測によって予測画像を生成する(ステップSd_1b)。なお、イントラ予測によって生成された予測画像を、イントラ予測画像ともいい、インター予測によって生成された予測画像を、インター予測画像ともいう。
次に、予測処理部は、イントラ予測画像およびインター予測画像のそれぞれを評価する(ステップSd_2)。この評価には、コストが用いられてもよい。つまり、予測処理部は、イントラ予測画像およびインター予測画像のそれぞれのコストCを算出する。このコストCは、R-D最適化モデルの式、例えば、C=D+λ×Rによって算出され得る。この式において、Dは、予測画像の符号化歪であって、例えば、カレントブロックの画素値と予測画像の画素値との差分絶対値和などによって表される。また、Rは、予測画像の発生符号量であって、具体的には、予測画像を生成するための動き情報などの符号化に必要な符号量などである。また、λは、例えばラグランジュの未定乗数である。
そして、予測処理部は、イントラ予測画像およびインター予測画像から、最も小さいコストCが算出された予測画像を、カレントブロックの最終的な予測画像として選択する(ステップSd_3)。つまり、カレントブロックの予測画像を生成するための予測方式またはモードが選択される。
[イントラ予測部]
イントラ予測部124は、ブロックメモリ118に格納されたカレントピクチャ内のブロックを参照してカレントブロックのイントラ予測(画面内予測ともいう)を行うことで、予測信号(イントラ予測信号)を生成する。具体的には、イントラ予測部124は、カレントブロックに隣接するブロックのサンプル(例えば輝度値、色差値)を参照してイントラ予測を行うことでイントラ予測信号を生成し、イントラ予測信号を予測制御部128に出力する。
例えば、イントラ予測部124は、規定の複数のイントラ予測モードのうちの1つを用いてイントラ予測を行う。複数のイントラ予測モードは、通常、1以上の非方向性予測モードと、複数の方向性予測モードと、を含む。規定の複数のモードは、予め規定されていてもよい。
1以上の非方向性予測モードは、例えばH.265/HEVC規格で規定されたPlanar予測モード及びDC予測モードを含む。
複数の方向性予測モードは、例えばH.265/HEVC規格で規定された33方向の予測モードを含む。なお、複数の方向性予測モードは、33方向に加えてさらに32方向の予測モード(合計で65個の方向性予測モード)を含んでもよい。図14は、イントラ予測において用いられ得る全67個のイントラ予測モード(2個の非方向性予測モード及び65個の方向性予測モード)を示す概念図である。実線矢印は、H.265/HEVC規格で規定された33方向を表し、破線矢印は、追加された32方向を表す(2個の非方向性予測モードは図14には図示されていない)。
種々の処理例では、色差ブロックのイントラ予測において、輝度ブロックが参照されてもよい。つまり、カレントブロックの輝度成分に基づいて、カレントブロックの色差成分が予測されてもよい。このようなイントラ予測は、CCLM(cross-component linear model)予測と呼ばれることがある。このような輝度ブロックを参照する色差ブロックのイントラ予測モード(例えばCCLMモードと呼ばれる)は、色差ブロックのイントラ予測モードの1つとして加えられてもよい。
イントラ予測部124は、水平/垂直方向の参照画素の勾配に基づいてイントラ予測後の画素値を補正してもよい。このような補正をともなうイントラ予測は、PDPC(position dependent intra prediction combination)と呼ばれることがある。PDPCの適用の有無を示す情報(例えばPDPCフラグと呼ばれる)は、通常、CUレベルで信号化される。なお、この情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
[インター予測部]
インター予測部126は、フレームメモリ122に格納された参照ピクチャであってカレントピクチャとは異なる参照ピクチャを参照してカレントブロックのインター予測(画面間予測ともいう)を行うことで、予測信号(インター予測信号)を生成する。インター予測は、カレントブロック又はカレントブロック内のカレントサブブロック(例えば4x4ブロック)の単位で行われる。例えば、インター予測部126は、カレントブロック又はカレントサブブロックについて参照ピクチャ内で動き探索(motion estimation)を行い、そのカレントブロック又はカレントサブブロックに最も一致する参照ブロック又はサブブロックを見つける。そして、インター予測部126は、参照ブロック又はサブブロックからカレントブロック又はサブブロックへの動き又は変化を補償する動き情報(例えば動きベクトル)を取得する。インター予測部126は、その動き情報に基づいて、動き補償(または動き予測)を行い、カレントブロック又はサブブロックのインター予測信号を生成する。インター予測部126は、生成されたインター予測信号を予測制御部128に出力する。
動き補償に用いられた動き情報は、多様な形態でインター予測信号として信号化されてもよい。例えば、動きベクトルが信号化されてもよい。他の例として、動きベクトルと予測動きベクトル(motion vector predictor)との差分が信号化されてもよい。
[インター予測の基本フロー]
図15は、インター予測の基本的な流れの一例を示すフローチャートである。
インター予測部126は、まず、予測画像を生成する(ステップSe_1~Se_3)。次に、減算部104は、カレントブロックと予測画像との差分を予測残差として生成する(ステップSe_4)。
ここで、インター予測部126は、予測画像の生成では、カレントブロックの動きベクトル(MV)の決定(ステップSe_1およびSe_2)と、動き補償(ステップSe_3)とを行うことによって、その予測画像を生成する。また、インター予測部126は、MVの決定では、候補動きベクトル(候補MV)の選択(ステップSe_1)と、MVの導出(ステップSe_2)とを行うことによって、そのMVを決定する。候補MVの選択は、例えば、候補MVリストから少なくとも1つの候補MVを選択することによって行われる。また、MVの導出では、インター予測部126は、少なくとも1つの候補MVから、さらに少なくとも1つの候補MVを選択することによって、その選択された少なくとも1つの候補MVを、カレントブロックのMVとして決定してもよい。あるいは、インター予測部126は、その選択された少なくとも1つの候補MVのそれぞれについて、その候補MVで指示される参照ピクチャの領域を探索することによって、カレントブロックのMVを決定してもよい。なお、この参照ピクチャの領域を探索することを、動き探索(motion estimation)と称してもよい。
また、上述の例では、ステップSe_1~Se_3は、インター予測部126によって行われるが、例えばステップSe_1またはステップSe_2などの処理は、符号化装置100に含まれる他の構成要素によって行われてもよい。
[動きベクトルの導出のフロー]
図16は、動きベクトル導出の一例を示すフローチャートである。
インター予測部126は、動き情報(例えばMV)を符号化するモードで、カレントブロックのMVを導出する。この場合、例えば動き情報が予測パラメータとして符号化されて、信号化される。つまり、符号化された動き情報が、符号化信号(符号化ビットストリームともいう)に含まれる。
あるいは、インター予測部126は、動き情報を符号化しないモードでMVを導出する。この場合には、動き情報は、符号化信号に含まれない。
ここで、MV導出のモードには、後述のノーマルインターモード、マージモード、FRUCモードおよびアフィンモードなどがあってもよい。これらのモードのうち、動き情報を符号化するモードには、ノーマルインターモード、マージモード、およびアフィンモード(具体的には、アフィンインターモードおよびアフィンマージモード)などがある。なお、動き情報には、MVだけでなく、後述の予測動きベクトル選択情報が含まれてもよい。また、動き情報を符号化しないモードには、FRUCモードなどがある。インター予測部126は、これらの複数のモードから、カレントブロックのMVを導出するためのモードを選択し、その選択されたモードを用いてカレントブロックのMVを導出する。
図17は、動きベクトル導出の他の例を示すフローチャートである。
インター予測部126は、差分MVを符号化するモードで、カレントブロックのMVを導出する。この場合、例えば差分MVが予測パラメータとして符号化されて、信号化される。つまり、符号化された差分MVが、符号化信号に含まれる。この差分MVは、カレントブロックのMVと、その予測MVとの差である。
あるいは、インター予測部126は、差分MVを符号化しないモードでMVを導出する。この場合には、符号化された差分MVは、符号化信号に含まれない。
ここで、上述のようにMVの導出のモードには、後述のノーマルインター、マージモード、FRUCモードおよびアフィンモードなどがある。これらのモードのうち、差分MVを符号化するモードには、ノーマルインターモードおよびアフィンモード(具体的には、アフィンインターモード)などがある。また、差分MVを符号化しないモードには、FRUCモード、マージモードおよびアフィンモード(具体的には、アフィンマージモード)などがある。インター予測部126は、これらの複数のモードから、カレントブロックのMVを導出するためのモードを選択し、その選択されたモードを用いてカレントブロックのMVを導出する。
[動きベクトルの導出のフロー]
図18は、動きベクトル導出の他の例を示すフローチャートである。MV導出のモード、すなわちインター予測モードには、複数のモードがあり、大きく分けて、差分MVを符号化するモードと、差分動きベクトルを符号化しないモードとがある。差分MVを符号化しないモードには、マージモード、FRUCモード、およびアフィンモード(具体的には、アフィンマージモード)がある。これらのモードの詳細については、後述するが、簡単には、マージモードは、周辺の符号化済みブロックから動きベクトルを選択することによって、カレントブロックのMVを導出するモードであり、FRUCモードは、符号化済み領域間で探索を行うことによって、カレントブロックのMVを導出するモードである。また、アフィンモードは、アフィン変換を想定して、カレントブロックを構成する複数のサブブロックそれぞれの動きベクトルを、カレントブロックのMVとして導出するモードである。
具体的には、図示されるように、インター予測部126は、インター予測モード情報が0を示す場合(Sf_1で0)、マージモードにより動きベクトルを導出する(Sf_2)。また、インター予測部126は、インター予測モード情報が1を示す場合(Sf_1で1)、FRUCモードにより動きベクトルを導出する(Sf_3)。また、インター予測部126は、インター予測モード情報が2を示す場合(Sf_1で2)、アフィンモード(具体的には、アフィンマージモード)により動きベクトルを導出する(Sf_4)。また、インター予測部126は、インター予測モード情報が3を示す場合(Sf_1で3)、差分MVを符号化するモード(例えば、ノーマルインターモード)により動きベクトルを導出する(Sf_5)。
[MV導出 > ノーマルインターモード]
ノーマルインターモードは、候補MVによって示される参照ピクチャの領域から、カレントブロックの画像に類似するブロックに基づいて、カレントブロックのMVを導出するインター予測モードである。また、このノーマルインターモードでは、差分MVが符号化される。
図19は、ノーマルインターモードによるインター予測の例を示すフローチャートである。
インター予測部126は、まず、時間的または空間的にカレントブロックの周囲にある複数の符号化済みブロックのMVなどの情報に基づいて、そのカレントブロックに対して複数の候補MVを取得する(ステップSg_1)。つまり、インター予測部126は、候補MVリストを作成する。
次に、インター予測部126は、ステップSg_1で取得された複数の候補MVの中から、N個(Nは2以上の整数)の候補MVのそれぞれを予測動きベクトル候補(予測MV候補ともいう)として、所定の優先順位に従って抽出する(ステップSg_2)。なお、その優先順位は、N個の候補MVのそれぞれに対して予め定められていてもよい。
次に、インター予測部126は、そのN個の予測動きベクトル候補の中から1つの予測動きベクトル候補を、カレントブロックの予測動きベクトル(予測MVともいう)として選択する(ステップSg_3)。このとき、インター予測部126は、選択された予測動きベクトルを識別するための予測動きベクトル選択情報をストリームに符号化する。なお、ストリームは、上述の符号化信号または符号化ビットストリームである。
次に、インター予測部126は、符号化済み参照ピクチャを参照し、カレントブロックのMVを導出する(ステップSg_4)。このとき、インター予測部126は、さらに、その導出されたMVと予測動きベクトルとの差分値を差分MVとしてストリームに符号化する。なお、符号化済み参照ピクチャは、符号化後に再構成された複数のブロックからなるピクチャである。
最後に、インター予測部126は、その導出されたMVと符号化済み参照ピクチャとを用いてカレントブロックに対して動き補償を行ことにより、そのカレントブロックの予測画像を生成する(ステップSg_5)。なお、予測画像は、上述のインター予測信号である。
また、符号化信号に含められる、予測画像の生成に用いられたインター予測モード(上述の例ではノーマルインターモード)を示す情報は、例えば予測パラメータとして符号化される。
なお、候補MVリストは、他のモードに用いられるリストと共通に用いられてもよい。また、候補MVリストに関する処理を、他のモードに用いられるリストに関する処理に適用してもよい。この候補MVリストに関する処理は、例えば、候補MVリストからの候補MVの抽出もしくは選択、候補MVの並び替え、または、候補MVの削除などである。
[MV導出 > マージモード]
マージモードは、候補MVリストから候補MVをカレントブロックのMVとして選択することによって、そのMVを導出するインター予測モードである。
図20は、マージモードによるインター予測の例を示すフローチャートである。
インター予測部126は、まず、時間的または空間的にカレントブロックの周囲にある複数の符号化済みブロックのMVなどの情報に基づいて、そのカレントブロックに対して複数の候補MVを取得する(ステップSh_1)。つまり、インター予測部126は、候補MVリストを作成する。
次に、インター予測部126は、ステップSh_1で取得された複数の候補MVの中から1つの候補MVを選択することによって、カレントブロックのMVを導出する(ステップSh_2)。このとき、インター予測部126は、選択された候補MVを識別するためのMV選択情報をストリームに符号化する。
最後に、インター予測部126は、その導出されたMVと符号化済み参照ピクチャとを用いてカレントブロックに対して動き補償を行ことにより、そのカレントブロックの予測画像を生成する(ステップSh_3)。
また、符号化信号に含められる、予測画像の生成に用いられたインター予測モード(上述の例ではマージモード)を示す情報は、例えば予測パラメータとして符号化される。
図21は、マージモードによるカレントピクチャの動きベクトル導出処理の一例を説明するための概念図である。
まず、予測MVの候補を登録した予測MVリストを生成する。予測MVの候補としては、対象ブロックの空間的に周辺に位置する複数の符号化済みブロックが持つMVである空間隣接予測MV、符号化済み参照ピクチャにおける対象ブロックの位置を投影した近辺のブロックが持つMVである時間隣接予測MV、空間隣接予測MVと時間隣接予測MVのMV値を組み合わせて生成したMVである結合予測MV、および値がゼロのMVであるゼロ予測MV等がある。
次に、予測MVリストに登録されている複数の予測MVの中から1つの予測MVを選択することで、対象ブロックのMVとして決定する。
さらに、可変長符号化部では、どの予測MVを選択したかを示す信号であるmerge_idxをストリームに記述して符号化する。
なお、図21で説明した予測MVリストに登録する予測MVは一例であり、図中の個数とは異なる個数であったり、図中の予測MVの一部の種類を含まない構成であったり、図中の予測MVの種類以外の予測MVを追加した構成であったりしてもよい。
マージモードにより導出した対象ブロックのMVを用いて、後述するDMVR(decoder motion vector refinement)処理を行うことによって最終的なMVを決定してもよい。
なお、予測MVの候補は、上述の候補MVであり、予測MVリストは、上述の候補MVリストである。また、候補MVリストを、候補リストと称してもよい。また、merge_idxは、MV選択情報である。
[MV導出 > FRUCモード]
動き情報は符号化装置側から信号化されずに、復号装置側で導出されてもよい。なお、上述のように、H.265/HEVC規格で規定されたマージモードが用いられてもよい。また例えば、復号装置側で動き探索を行うことにより動き情報が導出されてもよい。実施の形態において、復号装置側では、カレントブロックの画素値を用いずに動き探索が行われる。
ここで、復号装置側で動き探索を行うモードについて説明する。この復号装置側で動き探索を行うモードは、PMMVD(pattern matched motion vector derivation)モード又はFRUC(frame rate up-conversion)モードと呼ばれることがある。
フローチャートの形式でFRUC処理の一例を図22に示す。まず、カレントブロックに空間的又は時間的に隣接する符号化済みブロックの動きベクトルを参照して、各々が予測動きベクトル(MV)を有する複数の候補のリスト(すなわち、候補MVリストであって、マージリストと共通であってもよい)が生成される(ステップSi_1)。次に、候補MVリストに登録されている複数の候補MVの中からベスト候補MVを選択する(ステップSi_2)。例えば、候補MVリストに含まれる各候補MVの評価値が算出され、評価値に基づいて1つの候補MVが選択される。そして、選択された候補の動きベクトルに基づいて、カレントブロックのための動きベクトルが導出される(ステップSi_4)。具体的には、例えば、選択された候補の動きベクトル(ベスト候補MV)がそのままカレントブロックのための動きベクトルとして導出される。また例えば、選択された候補の動きベクトルに対応する参照ピクチャ内の位置の周辺領域において、パターンマッチングを行うことにより、カレントブロックのための動きベクトルが導出されてもよい。すなわち、ベスト候補MVの周辺の領域に対して、参照ピクチャにおけるパターンマッチングおよび評価値を用いた探索を行い、さらに評価値が良い値となるMVがあった場合は、ベスト候補MVを前記MVに更新して、それをカレントブロックの最終的なMVとしてもよい。より良い評価値を有するMVへの更新を行う処理を実施しない構成とすることも可能である。
最後に、インター予測部126は、その導出されたMVと符号化済み参照ピクチャとを用いてカレントブロックに対して動き補償を行ことにより、そのカレントブロックの予測画像を生成する(ステップSi_5)。
サブブロック単位で処理を行う場合も全く同様の処理としてもよい。
評価値は、種々の方法によって算出されてもよい。例えば、動きベクトルに対応する参照ピクチャ内の領域の再構成画像と、所定の領域(その領域は、例えば、以下に示すように、他の参照ピクチャの領域またはカレントピクチャの隣接ブロックの領域であってもよい)の再構成画像とを比較する。所定の領域は予め定められていてもよい。
そして、2つの再構成画像の画素値の差分を算出して、動きベクトルの評価値に用いてもよい。なお、差分値に加えてそれ以外の情報を用いて評価値を算出してもよい。
次に、パターンマッチングの例について詳細に説明する。まず、候補MVリスト(例えばマージリスト)に含まれる1つの候補MVを、パターンマッチングによる探索のスタートポイントとして選択する。例えば、パターンマッチングとしては、第1パターンマッチング又は第2パターンマッチングが用いられ得る。第1パターンマッチング及び第2パターンマッチングは、それぞれ、バイラテラルマッチング(bilateral matching)及びテンプレートマッチング(template matching)と呼ばれることがある。
[MV導出 > FRUC > バイラテラルマッチング]
第1パターンマッチングでは、異なる2つの参照ピクチャ内の2つのブロックであってカレントブロックの動き軌道(motion trajectory)に沿う2つのブロックの間でパターンマッチングが行われる。したがって、第1パターンマッチングでは、上述した候補の評価値の算出のための所定の領域として、カレントブロックの動き軌道に沿う他の参照ピクチャ内の領域が用いられる。所定の領域は、予め定められていてもよい。
図23は、動き軌道に沿う2つの参照ピクチャにおける2つのブロック間での第1パターンマッチング(バイラテラルマッチング)の一例を説明するための概念図である。図23に示すように、第1パターンマッチングでは、カレントブロック(Cur block)の動き軌道に沿う2つのブロックであって異なる2つの参照ピクチャ(Ref0、Ref1)内の2つのブロックのペアの中で最もマッチするペアを探索することにより2つの動きベクトル(MV0、MV1)が導出される。具体的には、カレントブロックに対して、候補MVで指定された第1の符号化済み参照ピクチャ(Ref0)内の指定位置における再構成画像と、前記候補MVを表示時間間隔でスケーリングした対称MVで指定された第2の符号化済み参照ピクチャ(Ref1)内の指定位置における再構成画像との差分を導出し、得られた差分値を用いて評価値を算出する。複数の候補MVの中で最も評価値が良い値となる候補MVを最終MVとして選択することが可能であり、良い結果をもたらし得る。
連続的な動き軌道の仮定の下では、2つの参照ブロックを指し示す動きベクトル(MV0、MV1)は、カレントピクチャ(Cur Pic)と2つの参照ピクチャ(Ref0、Ref1)との間の時間的な距離(TD0、TD1)に対して比例する。例えば、カレントピクチャが時間的に2つの参照ピクチャの間に位置し、カレントピクチャから2つの参照ピクチャへの時間的な距離が等しい場合、第1パターンマッチングでは、鏡映対称な双方向の動きベクトルが導出される。
[MV導出 > FRUC > テンプレートマッチング]
第2パターンマッチング(テンプレートマッチング)では、カレントピクチャ内のテンプレート(カレントピクチャ内でカレントブロックに隣接するブロック(例えば上及び/又は左隣接ブロック))と参照ピクチャ内のブロックとの間でパターンマッチングが行われる。したがって、第2パターンマッチングでは、上述した候補の評価値の算出のための所定の領域として、カレントピクチャ内のカレントブロックに隣接するブロックが用いられる。
図24は、カレントピクチャ内のテンプレートと参照ピクチャ内のブロックとの間でのパターンマッチング(テンプレートマッチング)の一例を説明するための概念図である。図24に示すように、第2パターンマッチングでは、カレントピクチャ(Cur Pic)内でカレントブロック(Cur block)に隣接するブロックと最もマッチするブロックを参照ピクチャ(Ref0)内で探索することによりカレントブロックの動きベクトルが導出される。具体的には、カレントブロックに対して、左隣接および上隣接の両方もしくはどちらか一方の符号化済み領域の再構成画像と、候補MVで指定された符号化済み参照ピクチャ(Ref0)内の同等位置における再構成画像との差分を導出し、得られた差分値を用いて評価値を算出し、複数の候補MVの中で最も評価値が良い値となる候補MVをベスト候補MVとして選択することが可能である。
このようなFRUCモードを適用するか否かを示す情報(例えばFRUCフラグと呼ばれる)は、CUレベルで信号化されてもよい。また、FRUCモードが適用される場合(例えばFRUCフラグが真の場合)、適用可能なパターンマッチングの方法(第1パターンマッチング又は第2パターンマッチング)を示す情報がCUレベルで信号化されてもよい。なお、これらの情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)であってもよい。
[MV導出 > アフィンモード]
次に、複数の隣接ブロックの動きベクトルに基づいてサブブロック単位で動きベクトルを導出するアフィンモードについて説明する。このモードは、アフィン動き補償予測(affine motion compensation prediction)モードと呼ばれることがある。
図25Aは、複数の隣接ブロックの動きベクトルに基づくサブブロック単位の動きベクトルの導出の一例を説明するための概念図である。図25Aにおいて、カレントブロックは、16の4x4サブブロックを含む。ここでは、隣接ブロックの動きベクトルに基づいてカレントブロックの左上角制御ポイントの動きベクトルv0が導出され、同様に、隣接サブブロックの動きベクトルに基づいてカレントブロックの右上角制御ポイントの動きベクトルv1が導出される。そして、以下の式(1A)により、2つの動きベクトルv0及びv1が投影されてもよく、カレントブロック内の各サブブロックの動きベクトル(vx,vy)が導出されてもよい。
ここで、x及びyは、それぞれ、サブブロックの水平位置及び垂直位置を示し、wは、所定の重み係数を示す。所定の重み係数は、予め決定されていてもよい。
このようなアフィンモードを示す情報(例えばアフィンフラグと呼ばれる)は、CUレベルで信号化されてもよい。なお、このアフィンモードを示す情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)であってもよい。
また、このようなアフィンモードでは、左上及び右上角制御ポイントの動きベクトルの導出方法が異なるいくつかのモードを含んでもよい。例えば、アフィンモードには、アフィンインター(アフィンノーマルインターともいう)モードと、アフィンマージモードの2つのモードがある。
[MV導出 > アフィンモード]
図25Bは、3つの制御ポイントを有するアフィンモードにおけるサブブロック単位の動きベクトルの導出の一例を説明するための概念図である。図25Bにおいて、カレントブロックは、16の4x4サブブロックを含む。ここでは、隣接ブロックの動きベクトルに基づいてカレントブロックの左上角制御ポイントの動きベクトルv0が導出され、同様に、隣接ブロックの動きベクトルに基づいてカレントブロックの右上角制御ポイントの動きベクトルv1、隣接ブロックの動きベクトルに基づいてカレントブロックの左下角制御ポイントの動きベクトルv2が導出される。そして、以下の式(1B)により、3つの動きベクトルv0、v1及びv2が投影されてもよく、カレントブロック内の各サブブロックの動きベクトル(vx,vy)が導出されてもよい。
ここで、x及びyは、それぞれ、サブブロック中心の水平位置及び垂直位置を示し、wは、カレントブロックの幅、hは、カレントブロックの高さを示す。
異なる制御ポイント数(例えば、2つと3つ)のアフィンモードは、CUレベルで切り替えて信号化されてもよい。なお、CUレベルで使用しているアフィンモードの制御ポイント数を示す情報を、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)で信号化してもよい。
また、このような3つの制御ポイントを有するアフィンモードでは、左上、右上及び左下角制御ポイントの動きベクトルの導出方法が異なるいくつかのモードを含んでもよい。例えば、アフィンモードには、アフィンインター(アフィンノーマルインターともいう)モードと、アフィンマージモードの2つのモードがある。
[MV導出 > アフィンマージモード]
図26A、図26Bおよび図26Cは、アフィンマージモードを説明するための概念図である。
アフィンマージモードでは、図26Aに示すように、例えば、カレントブロックに隣接する符号化済みブロックA(左)、ブロックB(上)、ブロックC(右上)、ブロックD(左下)およびブロックE(左上)のうち、アフィンモードで符号化されたブロックに対応する複数の動きベクトルに基づいて、カレントブロックの制御ポイントのそれぞれの予測動きベクトルが算出される。具体的には、符号化済みブロックA(左)、ブロックB(上)、ブロックC(右上)、ブロックD(左下)およびブロックE(左上)の順序でこれらのブロックが検査され、アフィンモードで符号化された最初の有効なブロックが特定される。この特定されたブロックに対応する複数の動きベクトルに基づいて、カレントブロックの制御ポイントの予測動きベクトルが算出される。
例えば、図26Bに示すように、カレントブロックの左に隣接するブロックAが2つの制御ポイントを有するアフィンモードで符号化されている場合は、ブロックAを含む符号化済みブロックの左上角および右上角の位置に投影した動きベクトルv3およびv4が導出される。そして、導出された動きベクトルv3およびv4から、カレントブロックの左上角の制御ポイントの予測動きベクトルv0と、右上角の制御ポイントの予測動きベクトルv1が算出される。
例えば、図26Cに示すように、カレントブロックの左に隣接するブロックAが3つの制御ポイントを有するアフィンモードで符号化されている場合は、ブロックAを含む符号化済みブロックの左上角、右上角および左下角の位置に投影した動きベクトルv3、v4およびv5が導出される。そして、導出された動きベクトルv3、v4およびv5から、カレントブロックの左上角の制御ポイントの予測動きベクトルv0と、右上角の制御ポイントの予測動きベクトルv1と、左下角の制御ポイントの予測動きベクトルv2が算出される。
なお、後述する図29のステップSj_1におけるカレントブロックの制御ポイントのそれぞれの予測動きベクトルの導出に、この予測動きベクトル導出方法を用いてもよい。
図27は、アフィンマージモードの一例を示すフローチャートである。
アフィンマージモードでは、図示されるように、まず、インター予測部126は、カレントブロックの制御ポイントのそれぞれの予測MVを導出する(ステップSk_1)。制御ポイントは、図25Aに示すように、カレントブロックの左上角および右上角のポイント、或いは図25Bに示すように、カレントブロックの左上角、右上角および左下角のポイントである。
つまり、インター予測部126は、図26Aに示すように、符号化済みブロックA(左)、ブロックB(上)、ブロックC(右上)、ブロックD(左下)およびブロックE(左上)の順序にこれらのブロックを検査し、アフィンモードで符号化された最初の有効なブロックを特定する。
そして、ブロックAが特定されブロックAが2つの制御ポイントを有する場合、図26Bに示すように、インター予測部126は、ブロックAを含む符号化済みブロックの左上角および右上角の動きベクトルv3およびv4から、カレントブロックの左上角の制御ポイントの動きベクトルv0と、右上角の制御ポイントの動きベクトルv1とを算出する。例えば、インター予測部126は、符号化済みブロックの左上角および右上角の動きベクトルv3およびv4を、カレントブロックに投影することによって、カレントブロックの左上角の制御ポイントの予測動きベクトルv0と、右上角の制御ポイントの予測動きベクトルv1とを算出する。
或いは、ブロックAが特定されブロックAが3つの制御ポイントを有する場合、図26Cに示すように、インター予測部126は、ブロックAを含む符号化済みブロックの左上角、右上角および左下角の動きベクトルv3、v4およびv5から、カレントブロックの左上角の制御ポイントの動きベクトルv0と、右上角の制御ポイントの動きベクトルv1、左下角の制御ポイントの動きベクトルv2とを算出する。例えば、インター予測部126は、符号化済みブロックの左上角、右上角および左下角の動きベクトルv3、v4およびv5を、カレントブロックに投影することによって、カレントブロックの左上角の制御ポイントの予測動きベクトルv0と、右上角の制御ポイントの予測動きベクトルv1、左下角の制御ポイントの動きベクトルv2とを算出する。
次に、インター予測部126は、カレントブロックに含まれる複数のサブブロックのそれぞれについて、動き補償を行う。すなわち、インター予測部126は、その複数のサブブロックのそれぞれについて、2つの予測動きベクトルv0およびv1と上述の式(1A)、或いは3つの予測動きベクトルv0、v1およびv2と上述の式(1B)とを用いて、そのサブブロックの動きベクトルをアフィンMVとして算出する(ステップSk_2)。そして、インター予測部126は、それらのアフィンMVおよび符号化済み参照ピクチャを用いてそのサブブロックに対して動き補償を行う(ステップSk_3)。その結果、カレントブロックに対して動き補償が行われ、そのカレントブロックの予測画像が生成される。
[MV導出 > アフィンインターモード]
図28Aは、2つの制御ポイントを有するアフィンインターモードを説明するための概念図である。
このアフィンインターモードでは、図28Aに示すように、カレントブロックに隣接する符号化済みブロックA、ブロックBおよびブロックCの動きベクトルから選択された動きベクトルが、カレントブロックの左上角の制御ポイントの予測動きベクトルv0として用いられる。同様に、カレントブロックに隣接する符号化済みブロックDおよびブロックEの動きベクトルから選択された動きベクトルが、カレントブロックの右上角の制御ポイントの予測動きベクトルv1として用いられる。
図28Bは、3つの制御ポイントを有するアフィンインターモードを説明するための概念図である。
このアフィンインターモードでは、図28Bに示すように、カレントブロックに隣接する符号化済みブロックA、ブロックBおよびブロックCの動きベクトルから選択された動きベクトルが、カレントブロックの左上角の制御ポイントの予測動きベクトルv0として用いられる。同様に、カレントブロックに隣接する符号化済みブロックDおよびブロックEの動きベクトルから選択された動きベクトルが、カレントブロックの右上角の制御ポイントの予測動きベクトルv1として用いられる。更に、カレントブロックに隣接する符号化済みブロックFおよびブロックGの動きベクトルから選択された動きベクトルが、カレントブロックの左下角の制御ポイントの予測動きベクトルv2として用いられる。
図29は、アフィンインターモードの一例を示すフローチャートである。
図示されるように、アフィンインターモードでは、まず、インター予測部126は、カレントブロックの2つまたは3つの制御ポイントのそれぞれの予測MV(v0,v1)または(v0,v1,v2)を導出する(ステップSj_1)。制御ポイントは、図25Aまたは図25Bに示すように、カレントブロックの左上角、右上角或いは左下角のポイントである。
つまり、インター予測部126は、図28Aまたは図28Bに示すカレントブロックの各制御ポイント近傍の符号化済みブロックのうちの何れかのブロックの動きベクトルを選択することによって、カレントブロックの制御ポイントの予測動きベクトル(v0,v1)または(v0,v1,v2)を導出する。このとき、インター予測部126は、選択された2つの動きベクトルを識別するための予測動きベクトル選択情報をストリームに符号化する。
例えば、インター予測部126は、カレントブロックに隣接する符号化済みブロックからどのブロックの動きベクトルを制御ポイントの予測動きベクトルとして選択するかを、コスト評価等を用いて決定し、どの予測動きベクトルを選択したかを示すフラグをビットストリームに記述してもよい。
次に、インター予測部126は、ステップSj_1で選択または導出された予測動きベクトルをそれぞれ更新しながら(ステップSj_2)、動き探索を行う(ステップSj_3およびSj_4)。つまり、インター予測部126は、更新される予測動きベクトルに対応する各サブブロックの動きベクトルをアフィンMVとして、上述の式(1A)または式(1B)を用いて算出する(ステップSj_3)。そして、インター予測部126は、それらのアフィンMVおよび符号化済み参照ピクチャを用いて各サブブロックに対して動き補償を行う(ステップSj_4)。その結果、インター予測部126は、動き探索ループにおいて、例えば最も小さいコストが得られる予測動きベクトルを、制御ポイントの動きベクトルとして決定する(ステップSj_5)。このとき、インター予測部126は、さらに、その決定されたMVと予測動きベクトルとのそれぞれの差分値を差分MVとしてストリームに符号化する。
最後に、インター予測部126は、その決定されたMVと符号化済み参照ピクチャとを用いてカレントブロックに対して動き補償を行ことにより、そのカレントブロックの予測画像を生成する(ステップSj_6)。
[MV導出 > アフィンインターモード]
異なる制御ポイント数(例えば、2つと3つ)のアフィンモードをCUレベルで切り替えて信号化する場合、符号化済みブロックとカレントブロックで制御ポイントの数が異なる場合がある。図30Aおよび図30Bは、符号化済みブロックとカレントブロックで制御ポイントの数が異なる場合の、制御ポイントの予測ベクトル導出方法を説明するための概念図である。
例えば、図30Aに示すように、カレントブロックが左上角、右上角および左下角の3つの制御ポイントを有し、カレントブロックの左に隣接するブロックAが2つの制御ポイントを有するアフィンモードで符号化されている場合は、ブロックAを含む符号化済みブロックの左上角および右上角の位置に投影した動きベクトルv3およびv4が導出される。そして、導出された動きベクトルv3およびv4から、カレントブロックの左上角の制御ポイントの予測動きベクトルv0と、右上角の制御ポイントの予測動きベクトルv1が算出される。更に、導出された動きベクトルv0およびv1から、左下角の制御ポイントの予測動きベクトルv2が算出される。
例えば、図30Bに示すように、カレントブロックが左上角および右上角の2つの制御ポイントを有し、カレントブロックの左に隣接するブロックAが3つの制御ポイントを有するアフィンモードで符号化されている場合は、ブロックAを含む符号化済みブロックの左上角、右上角および左下角の位置に投影した動きベクトルv3、v4およびv5が導出される。そして、導出された動きベクトルv3、v4およびv5から、カレントブロックの左上角の制御ポイントの予測動きベクトルv0と、右上角の制御ポイントの予測動きベクトルv1が算出される。
図29のステップSj_1におけるカレントブロックの制御ポイントのそれぞれの予測動きベクトルの導出に、この予測動きベクトル導出方法を用いてもよい。
[MV導出 > DMVR]
図31Aは、マージモードおよびDMVRの関係を示すフローチャートである。
インター予測部126は、マージモードでカレントブロックの動きベクトルを導出する(ステップSl_1)。次に、インター予測部126は、動きベクトルの探索、すなわち動き探索を行うか否かを判定する(ステップSl_2)。ここで、インター予測部126は、動き探索を行わないと判定すると(ステップSl_2のNo)、ステップSl_1で導出された動きベクトルを、カレントブロックに対する最終の動きベクトルとして決定する(ステップSl_4)。すなわち、この場合には、マージモードでカレントブロックの動きベクトルが決定される。
一方、ステップSl_1で動き探索を行うと判定すると(ステップSl_2のYes)、インター予測部126は、ステップSl_1で導出された動きベクトルによって示される参照ピクチャの周辺領域を探索することによって、カレントブロックに対して最終の動きベクトルを導出する(ステップSl_3)。すなわち、この場合には、DMVRでカレントブロックの動きベクトルが決定される。
図31Bは、MVを決定するためのDMVR処理の一例を説明するための概念図である。
まず、(例えばマージモードにおいて)カレントブロックに設定された最適MVPを、候補MVとする。そして、候補MV(L0)に従って、L0方向の符号化済みピクチャである第1参照ピクチャ(L0)から参照画素を特定する。同様に、候補MV(L1)に従って、L1方向の符号化済みピクチャである第2参照ピクチャ(L1)から参照画素を特定する。これらの参照画素の平均をとることでテンプレートを生成する。
次に、前記テンプレートを用いて、第1参照ピクチャ(L0)および第2参照ピクチャ(L1)の候補MVの周辺領域をそれぞれ探索し、コストが最小となるMVを最終的なMVとして決定する。なお、コスト値は、例えば、テンプレートの各画素値と探索領域の各画素値との差分値および候補MV値等を用いて算出してもよい。
なお、典型的には、符号化装置と、後述の復号化装置とでは、ここで説明した処理の構成および動作は基本的に共通である。
ここで説明した処理例そのものでなくても、候補MVの周辺を探索して最終的なMVを導出することができる処理であれば、どのような処理を用いてもよい。
[動き補償 > BIO/OBMC]
動き補償では、予測画像を生成し、その予測画像を補正するモードがある。そのモードは、例えば、後述のBIOおよびOBMCである。
図32は、予測画像の生成の一例を示すフローチャートである。
インター予測部126は、予測画像を生成し(ステップSm_1)、例えば上述の何れかのモードによってその予測画像を補正する(ステップSm_2)。
図33は、予測画像の生成の他の例を示すフローチャートである。
インター予測部126は、カレントブロックの動きベクトルを決定する(ステップSn_1)。次に、インター予測部126は、予測画像を生成し(ステップSn_2)、補正処理を行うか否かを判定する(ステップSn_3)。ここで、インター予測部126は、補正処理を行うと判定すると(ステップSn_3のYes)、その予測画像を補正することによって最終的な予測画像を生成する(ステップSn_4)。一方、インター予測部126は、補正処理を行わないと判定すると(ステップSn_3のNo)、その予測画像を補正することなく最終的な予測画像として出力する(ステップSn_5)。
また、動き補償では、予測画像を生成するときに輝度を補正するモードがある。そのモードは、例えば、後述のLICである。
図34は、予測画像の生成の他の例を示すフローチャートである。
インター予測部126は、カレントブロックの動きベクトルを導出する(ステップSo_1)。次に、インター予測部126は、輝度補正処理を行うか否かを判定する(ステップSo_2)。ここで、インター予測部126は、輝度補正処理を行うと判定すると(ステップSo_2のYes)、輝度補正を行いながら予測画像を生成する(ステップSo_3)。つまり、LICによって予測画像が生成される。一方、インター予測部126は、輝度補正処理を行わないと判定すると(ステップSo_2のNo)、輝度補正を行うことなく通常の動き補償によって予測画像を生成する(ステップSo_4)。
[動き補償 > OBMC]
動き探索により得られたカレントブロックの動き情報だけでなく、隣接ブロックの動き情報も用いて、インター予測信号が生成されてもよい。具体的には、(参照ピクチャ内の)動き探索により得られた動き情報に基づく予測信号と、(カレントピクチャ内の)隣接ブロックの動き情報に基づく予測信号と、を重み付け加算することにより、カレントブロック内のサブブロック単位でインター予測信号が生成されてもよい。このようなインター予測(動き補償)は、OBMC(overlapped block motion compensation)と呼ばれることがある。
OBMCモードでは、OBMCのためのサブブロックのサイズを示す情報(例えばOBMCブロックサイズと呼ばれる)は、シーケンスレベルで信号化されてもよい。さらに、OBMCモードを適用するか否かを示す情報(例えばOBMCフラグと呼ばれる)は、CUレベルで信号化されてもよい。なお、これらの情報の信号化のレベルは、シーケンスレベル及びCUレベルに限定される必要はなく、他のレベル(例えばピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)であってもよい。
OBMCモードの例について、より具体的に説明する。図35及び図36は、OBMC処理による予測画像補正処理の概要を説明するためのフローチャート及び概念図である。
まず、図36に示すように、処理対象(カレント)ブロックに割り当てられた動きベクトル(MV)を用いて通常の動き補償による予測画像(Pred)を取得する。図36において、矢印“MV”は参照ピクチャを指し、予測画像を得るためにカレントピクチャのカレントブロックが何を参照しているかを示している。
次に、符号化済みの左隣接ブロックに対して既に導出された動きベクトル(MV_L)を符号化対象ブロックに適用(再利用)して予測画像(Pred_L)を取得する。動きベクトル(MV_L)は、カレントブロックから参照ピクチャを指す矢印”MV_L”によって示される。そして、2つの予測画像PredとPred_Lとを重ね合わせることで予測画像の1回目の補正を行う。これは、隣接ブロック間の境界を混ぜ合わせる効果を有する。
同様に、符号化済みの上隣接ブロックに対して既に導出された動きベクトル(MV_U)を符号化対象ブロックに適用(再利用)して予測画像(Pred_U)を取得する。動きベクトル(MV_U)は、カレントブロックから参照ピクチャを指す矢印”MV_U”によって示される。そして、予測画像Pred_Uを1回目の補正を行った予測画像(例えば、PredとPred_L)に重ね合わせることで予測画像の2回目の補正を行う。これは、隣接ブロック間の境界を混ぜ合わせる効果を有する。2回目の補正によって得られた予測画像は、隣接ブロックとの境界が混ぜ合わされた(スムージングされた)、カレントブロックの最終的な予測画像である。
なお、上述の例は、左隣接および上隣接のブロックを用いた2パスの補正方法であるが、その補正方法は、右隣接および/または下隣接のブロックも用いた3パスまたはそれ以上のパスの補正方法であってもよい。
なお、重ね合わせを行う領域はブロック全体の画素領域ではなく、ブロック境界近傍の一部の領域のみであってもよい。
なお、ここでは1枚の参照ピクチャから、追加的な予測画像Pred_LおよびPred_Uを重ね合わせることで1枚の予測画像Predを得るためのOBMCの予測画像補正処理について説明した。しかし、複数の参照画像に基づいて予測画像が補正される場合には、同様の処理が複数の参照ピクチャのそれぞれに適用されてもよい。このような場合、複数の参照ピクチャに基づくOBMCの画像補正を行うことによって、各々の参照ピクチャから、補正された予測画像を取得した後に、その取得された複数の補正予測画像をさらに重ね合わせることで最終的な予測画像を取得する。
なお、OBMCでは、対象ブロックの単位は、予測ブロック単位であっても、予測ブロックをさらに分割したサブブロック単位であってもよい。
OBMC処理を適用するかどうかの判定の方法として、例えば、OBMC処理を適用するかどうかを示す信号であるobmc_flagを用いる方法がある。具体的な一例としては、符号化装置は、対象ブロックが動きの複雑な領域に属しているかどうかを判定してもよい。符号化装置は、動きの複雑な領域に属している場合は、obmc_flagとして値1を設定してOBMC処理を適用して符号化を行い、動きの複雑な領域に属していない場合は、obmc_flagとして値0を設定してOBMC処理を適用せずにブロックの符号化を行う。一方、復号化装置では、ストリーム(例えば圧縮シーケンス)に記述されたobmc_flagを復号することで、その値に応じてOBMC処理を適用するかどうかを切替えて復号を行う。
インター予測部126は、上述の例では、矩形のカレントブロックに対して1つの矩形の予測画像を生成する。しかし、インター予測部126は、その矩形のカレントブロックに対して矩形と異なる形状の複数の予測画像を生成し、それらの複数の予測画像を結合することによって、最終的な矩形の予測画像を生成してもよい。矩形と異なる形状は、例えば三角形であってもよい。
図37は、2つの三角形の予測画像の生成を説明するための概念図である。
インター予測部126は、カレントブロック内の三角形の第1パーティションに対して、その第1パーティションの第1MVを用いて動き補償を行うことによって、三角形の予測画像を生成する。同様に、インター予測部126は、カレントブロック内の三角形の第2パーティションに対して、その第2パーティションの第2MVを用いて動き補償を行うことによって、三角形の予測画像を生成する。そして、インター予測部126は、これらの予測画像を結合することによって、カレントブロックと同じ矩形の予測画像を生成する。
なお、図37に示す例では、第1パーティションおよび第2パーティションはそれぞれ三角形であるが、台形であってもよく、それぞれ互いに異なる形状であってもよい。さらに、図37に示す例では、カレントブロックが2つのパーティションから構成されているが、3つ以上のパーティションから構成されていてもよい。
また、第1パーティションおよび第2パーティションは重複していてもよい。すなわち、第1パーティションおよび第2パーティションは同じ画素領域を含んでいてもよい。この場合、第1パーティションにおける予測画像と第2パーティションにおける予測画像とを用いてカレントブロックの予測画像を生成してもよい。
また、この例では2つのパーティションともにインター予測で予測画像が生成される例を示したが、少なくとも1つのパーティションについてイントラ予測によって予測画像を生成してもよい。
[動き補償 > BIO]
次に、動きベクトルを導出する方法について説明する。まず、等速直線運動を仮定したモデルに基づいて動きベクトルを導出するモードについて説明する。このモードは、BIO(bi-directional optical flow)モードと呼ばれることがある。
図38は、等速直線運動を仮定したモデルを説明するための概念図である。図38において、(vx,vy)は、速度ベクトルを示し、τ0、τ1は、それぞれ、カレントピクチャ(Cur Pic)と2つの参照ピクチャ(Ref0,Ref1)との間の時間的な距離を示す。(MVx0,MVy0)は、参照ピクチャRef0に対応する動きベクトルを示し、(MVx1、MVy1)は、参照ピクチャRef1に対応する動きベクトルを示す。
このとき速度ベクトル(vx,vy)の等速直線運動の仮定の下では、(MVx0,MVy0)及び(MVx1,MVy1)は、それぞれ、(vxτ0,vyτ0)及び(-vxτ1,-vyτ1)と表され、以下のオプティカルフロー等式(2)が採用されてもよい。
ここで、I(k)は、動き補償後の参照画像k(k=0,1)の輝度値を示す。このオプティカルフロー等式は、(i)輝度値の時間微分と、(ii)水平方向の速度及び参照画像の空間勾配の水平成分の積と、(iii)垂直方向の速度及び参照画像の空間勾配の垂直成分の積と、の和が、ゼロと等しいことを示す。このオプティカルフロー等式とエルミート補間(Hermite interpolation)との組み合わせに基づいて、マージリスト等から得られるブロック単位の動きベクトルが画素単位で補正されてもよい。
なお、等速直線運動を仮定したモデルに基づく動きベクトルの導出とは異なる方法で、復号装置側で動きベクトルが導出されてもよい。例えば、複数の隣接ブロックの動きベクトルに基づいてサブブロック単位で動きベクトルが導出されてもよい。
[動き補償 > LIC]
次に、LIC(local illumination compensation)処理を用いて予測画像(予測)を生成するモードの一例について説明する。
図39は、LIC処理による輝度補正処理を用いた予測画像生成方法の一例を説明するための概念図である。
まず、符号化済みの参照ピクチャからMVを導出して、カレントブロックに対応する参照画像を取得する。
次に、カレントブロックに対して、参照ピクチャとカレントピクチャとで輝度値がどのように変化したかを示す情報を抽出する。この抽出は、カレントピクチャにおける符号化済み左隣接参照領域(周辺参照領域)および符号化済み上隣参照領域(周辺参照領域)の輝度画素値と、導出されたMVで指定された参照ピクチャ内の同等位置における輝度画素値とに基づいて行われる。そして、輝度値がどのように変化したかを示す情報を用いて、輝度補正パラメータを算出する。
MVで指定された参照ピクチャ内の参照画像に対して前記輝度補正パラメータを適用する輝度補正処理を行うことで、カレントブロックに対する予測画像を生成する。
なお、図39における前記周辺参照領域の形状は一例であり、これ以外の形状を用いてもよい。
また、ここでは1枚の参照ピクチャから予測画像を生成する処理について説明したが、複数枚の参照ピクチャから予測画像を生成する場合も同様であり、各々の参照ピクチャから取得した参照画像に、上述と同様の方法で輝度補正処理を行ってから予測画像を生成してもよい。
LIC処理を適用するかどうかの判定の方法として、例えば、LIC処理を適用するかどうかを示す信号であるlic_flagを用いる方法がある。具体的な一例としては、符号化装置において、カレントブロックが、輝度変化が発生している領域に属しているかどうかを判定し、輝度変化が発生している領域に属している場合はlic_flagとして値1を設定してLIC処理を適用して符号化を行い、輝度変化が発生している領域に属していない場合はlic_flagとして値0を設定してLIC処理を適用せずに符号化を行う。一方、復号化装置では、ストリームに記述されたlic_flagを復号化することで、その値に応じてLIC処理を適用するかどうかを切替えて復号を行ってもよい。
LIC処理を適用するかどうかの判定の別の方法として、例えば、周辺ブロックでLIC処理を適用したかどうかに従って判定する方法もある。具体的な一例としては、カレントブロックがマージモードであった場合、マージモード処理におけるMVの導出の際に選択した周辺の符号化済みブロックがLIC処理を適用して符号化したかどうかを判定する。その結果に応じてLIC処理を適用するかどうかを切替えて符号化を行う。なお、この例の場合でも、同じ処理が復号装置側の処理に適用される。
LIC処理(輝度補正処理)の態様について図39を用いて説明したが、以下、その詳細を説明する。
まず、インター予測部126は、符号化済みピクチャである参照ピクチャから符号化対象ブロックに対応する参照画像を取得するための動きベクトルを導出する。
次に、インター予測部126は、符号化対象ブロックに対して、左隣接および上隣接の符号化済み周辺参照領域の輝度画素値と、動きベクトルで指定された参照ピクチャ内の同等位置における輝度画素値とを用いて、参照ピクチャと符号化対象ピクチャとで輝度値がどのように変化したかを示す情報を抽出して輝度補正パラメータを算出する。例えば、符号化対象ピクチャ内の周辺参照領域内のある画素の輝度画素値をp0とし、当該画素と同等位置の、参照ピクチャ内の周辺参照領域内の画素の輝度画素値をp1とする。インター予測部126は、周辺参照領域内の複数の画素に対して、A×p1+B=p0を最適化する係数A及びBを輝度補正パラメータとして算出する。
次に、インター予測部126は、動きベクトルで指定された参照ピクチャ内の参照画像に対して輝度補正パラメータを用いて輝度補正処理を行うことで、符号化対象ブロックに対する予測画像を生成する。例えば、参照画像内の輝度画素値をp2とし、輝度補正処理後の予測画像の輝度画素値をp3とする。インター予測部126は、参照画像内の各画素に対して、A×p2+B=p3を算出することで輝度補正処理後の予測画像を生成する。
なお、図39における周辺参照領域の形状は一例であり、これ以外の形状を用いてもよい。また、図39に示す周辺参照領域の一部が用いられてもよい。例えば、上隣接画素および左隣接画素のそれぞれから間引いた所定数の画素を含む領域を周辺参照領域として用いてもよい。また、周辺参照領域は、符号化対象ブロックに隣接する領域に限らず、符号化対象ブロックに隣接しない領域であってもよい。画素に関する所定数は、予め定められていてもよい。
また、図39に示す例では、参照ピクチャ内の周辺参照領域は、符号化対象ピクチャ内の周辺参照領域から、符号化対象ピクチャの動きベクトルで指定される領域であるが、他の動きベクトルで指定される領域であってもよい。例えば、当該他の動きベクトルは、符号化対象ピクチャ内の周辺参照領域の動きベクトルであってもよい。
なお、ここでは、符号化装置100における動作を説明したが、復号装置200における動作も典型的には同様である。
なお、LIC処理は輝度のみではなく、色差に適用してもよい。このとき、Y、Cb、およびCrのそれぞれに対して個別に補正パラメータを導出してもよいし、いずれかに対して共通の補正パラメータを用いてもよい。
また、LIC処理はサブブロック単位で適用してもよい。例えば、カレントサブブロックの周辺参照領域と、カレントサブブロックのMVで指定された参照ピクチャ内の参照サブブロックの周辺参照領域を用いて補正パラメータを導出してもよい。
[予測制御部]
予測制御部128は、イントラ予測信号(イントラ予測部124から出力される信号)及びインター予測信号(インター予測部126から出力される信号)のいずれかを選択し、選択した信号を予測信号として減算部104及び加算部116に出力する。
図1に示すように、種々の符号化装置例では、予測制御部128は、エントロピー符号化部110に入力される予測パラメータを出力してもよい。エントロピー符号化部110は、予測制御部128から入力されるその予測パラメータ、量子化部108から入力される量子化係数に基づいて、符号化ビットストリーム(またはシーケンス)を生成してもよい。予測パラメータは復号装置に使用されてもよい。復号装置は、符号化ビットストリームを受信して復号し、イントラ予測部124、インター予測部126および予測制御部128において行われる予測処理と同じ処理を行ってもよい。予測パラメータは、選択予測信号(例えば、動きベクトル、予測タイプ、または、イントラ予測部124またはインター予測部126で用いられた予測モード)、または、イントラ予測部124、インター予測部126および予測制御部128において行われる予測処理に基づく、あるいはその予測処理を示す、任意のインデックス、フラグ、もしくは値を含んでいてもよい。
[符号化装置の実装例]
図40は、符号化装置100の実装例を示すブロック図である。符号化装置100は、プロセッサa1及びメモリa2を備える。例えば、図1に示された符号化装置100の複数の構成要素は、図40に示されたプロセッサa1及びメモリa2によって実装される。
プロセッサa1は、情報処理を行う回路であり、メモリa2にアクセス可能な回路である。例えば、プロセッサa1は、動画像を符号化する専用又は汎用の電子回路である。プロセッサa1は、CPUのようなプロセッサであってもよい。また、プロセッサa1は、複数の電子回路の集合体であってもよい。また、例えば、プロセッサa1は、図1等に示された符号化装置100の複数の構成要素のうち、複数の構成要素の役割を果たしてもよい。
メモリa2は、プロセッサa1が動画像を符号化するための情報が記憶される専用又は汎用のメモリである。メモリa2は、電子回路であってもよく、プロセッサa1に接続されていてもよい。また、メモリa2は、プロセッサa1に含まれていてもよい。また、メモリa2は、複数の電子回路の集合体であってもよい。また、メモリa2は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリa2は、不揮発性メモリでもよいし、揮発性メモリでもよい。
例えば、メモリa2には、符号化される動画像が記憶されてもよいし、符号化された動画像に対応するビット列が記憶されてもよい。また、メモリa2には、プロセッサa1が動画像を符号化するためのプログラムが記憶されていてもよい。
また、例えば、メモリa2は、図1等に示された符号化装置100の複数の構成要素のうち、情報を記憶するための構成要素の役割を果たしてもよい。例えば、メモリa2は、図1に示されたブロックメモリ118及びフレームメモリ122の役割を果たしてもよい。より具体的には、メモリa2には、再構成済みブロック及び再構成済みピクチャ等が記憶されてもよい。
なお、符号化装置100において、図1等に示された複数の構成要素の全てが実装されなくてもよいし、上述された複数の処理の全てが行われなくてもよい。図1等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、上述された複数の処理の一部は、他の装置によって実行されてもよい。
[復号装置]
次に、例えば上記の符号化装置100から出力された符号化信号(符号化ビットストリーム)を復号可能な復号装置について説明する。図41は、実施の形態に係る復号装置200の機能構成を示すブロック図である。復号装置200は、動画像をブロック単位で復号する動画像復号装置である。
図41に示すように、復号装置200は、エントロピー復号部202と、逆量子化部204と、逆変換部206と、加算部208と、ブロックメモリ210と、ループフィルタ部212と、フレームメモリ214と、イントラ予測部216と、インター予測部218と、予測制御部220と、を備える。
復号装置200は、例えば、汎用プロセッサ及びメモリにより実現される。この場合、メモリに格納されたソフトウェアプログラムがプロセッサにより実行されたときに、プロセッサは、エントロピー復号部202、逆量子化部204、逆変換部206、加算部208、ループフィルタ部212、イントラ予測部216、インター予測部218及び予測制御部220として機能する。また、復号装置200は、エントロピー復号部202、逆量子化部204、逆変換部206、加算部208、ループフィルタ部212、イントラ予測部216、インター予測部218及び予測制御部220に対応する専用の1以上の電子回路として実現されてもよい。
以下に、復号装置200の全体的な処理の流れを説明した後に、復号装置200に含まれる各構成要素について説明する。
[復号処理の全体フロー]
図42は、復号装置200による全体的な復号処理の一例を示すフローチャートである。
まず、復号装置200のエントロピー復号部202は、固定サイズのブロック(例えば、128×128画素)の分割パターンを特定する(ステップSp_1)。この分割パターンは、符号化装置100によって選択された分割パターンである。そして、復号装置200は、その分割パターンを構成する複数のブロックのそれぞれに対してステップSp_2~Sp_6の処理を行う。
つまり、エントロピー復号部202は、復号対象ブロック(カレントブロックともいう)の符号化された量子化係数および予測パラメータを復号(具体的にはエントロピー復号)する(ステップSp_2)。
次に、逆量子化部204および逆変換部206は、複数の量子化係数に対して逆量子化および逆変換を行うことによって、複数の予測残差(すなわち差分ブロック)を復元する(ステップSp_3)。
次に、イントラ予測部216、インター予測部218および予測制御部220の全てまたは一部からなる予測処理部は、カレントブロックの予測信号(予測ブロックともいう)を生成する(ステップSp_4)。
次に、加算部208は、差分ブロックに予測ブロックを加算することによってカレントブロックを再構成画像(復号画像ブロックともいう)に再構成する(ステップSp_5)。
そして、この再構成画像が生成されると、ループフィルタ部212は、その再構成画像に対してフィルタリングを行う(ステップSp_6)。
そして、復号装置200は、ピクチャ全体の復号が完了したか否かを判定し(ステップSp_7)、完了していないと判定する場合(ステップSp_7のNo)、ステップSp_1からの処理を繰り返し実行する。
図示されたように、ステップSp_1~Sp_7の処理は、復号装置200によってシーケンシャルに行われる。あるいは、それらの処理のうちの一部の複数の処理が並列に行われてもよく、順番の入れ替え等が行われてもよい。
[エントロピー復号部]
エントロピー復号部202は、符号化ビットストリームをエントロピー復号する。具体的には、エントロピー復号部202は、例えば、符号化ビットストリームから二値信号に算術復号する。そして、エントロピー復号部202は、二値信号を多値化(debinarize)する。エントロピー復号部202は、ブロック単位で量子化係数を逆量子化部204に出力する。エントロピー復号部202は、実施の形態におけるイントラ予測部216、インター予測部218および予測制御部220に、符号化ビットストリーム(図1参照)に含まれている予測パラメータを出力してもよい。イントラ予測部216、インター予測部218および予測制御部220は、符号化装置側におけるイントラ予測部124、インター予測部126および予測制御部128で行われる処理と同じ予測処理を実行することができる。
[逆量子化部]
逆量子化部204は、エントロピー復号部202からの入力である復号対象ブロック(以下、カレントブロックという)の量子化係数を逆量子化する。具体的には、逆量子化部204は、カレントブロックの量子化係数の各々について、当該量子化係数に対応する量子化パラメータに基づいて当該量子化係数を逆量子化する。そして、逆量子化部204は、カレントブロックの逆量子化された量子化係数(つまり変換係数)を逆変換部206に出力する。
[逆変換部]
逆変換部206は、逆量子化部204からの入力である変換係数を逆変換することにより予測誤差を復元する。
例えば符号化ビットストリームから読み解かれた情報がEMT又はAMTを適用することを示す場合(例えばAMTフラグが真)、逆変換部206は、読み解かれた変換タイプを示す情報に基づいてカレントブロックの変換係数を逆変換する。
また例えば、符号化ビットストリームから読み解かれた情報がNSSTを適用することを示す場合、逆変換部206は、変換係数に逆再変換を適用する。
[加算部]
加算部208は、逆変換部206からの入力である予測誤差と予測制御部220からの入力である予測サンプルとを加算することによりカレントブロックを再構成する。そして、加算部208は、再構成されたブロックをブロックメモリ210及びループフィルタ部212に出力する。
[ブロックメモリ]
ブロックメモリ210は、イントラ予測で参照されるブロックであって復号対象ピクチャ(以下、カレントピクチャという)内のブロックを格納するための記憶部である。具体的には、ブロックメモリ210は、加算部208から出力された再構成ブロックを格納する。
[ループフィルタ部]
ループフィルタ部212は、加算部208によって再構成されたブロックにループフィルタを施し、フィルタされた再構成ブロックをフレームメモリ214及び表示装置等に出力する。
符号化ビットストリームから読み解かれたALFのオン/オフを示す情報がALFのオンを示す場合、局所的な勾配の方向及び活性度に基づいて複数のフィルタの中から1つのフィルタが選択され、選択されたフィルタが再構成ブロックに適用される。
[フレームメモリ]
フレームメモリ214は、インター予測に用いられる参照ピクチャを格納するための記憶部であり、フレームバッファと呼ばれることもある。具体的には、フレームメモリ214は、ループフィルタ部212によってフィルタされた再構成ブロックを格納する。
[予測処理部(イントラ予測部・インター予測部・予測制御部)]
図43は、復号装置200の予測処理部で行われる処理の一例を示すフローチャートである。なお、予測処理部は、イントラ予測部216、インター予測部218、および予測制御部220の全てまたは一部の構成要素からなる。
予測処理部は、カレントブロックの予測画像を生成する(ステップSq_1)。この予測画像は、予測信号または予測ブロックともいう。なお、予測信号には、例えばイントラ予測信号またはインター予測信号がある。具体的には、予測処理部は、予測ブロックの生成、差分ブロックの生成、係数ブロックの生成、差分ブロックの復元、および復号画像ブロックの生成が行われることによって既に得られている再構成画像を用いて、カレントブロックの予測画像を生成する。
再構成画像は、例えば、参照ピクチャの画像であってもよいし、カレントブロックを含むピクチャであるカレントピクチャ内の復号済みのブロックの画像であってもよい。カレントピクチャ内の復号済みのブロックは、例えばカレントブロックの隣接ブロックである。
図44は、復号装置200の予測処理部で行われる処理の他の例を示すフローチャートである。
予測処理部は、予測画像を生成するための方式またはモードを判定する(ステップSr_1)。例えば、この方式またはモードは、例えば予測パラメータなどに基づいて判定されてもよい。
予測処理部は、予測画像を生成するためのモードとして第1の方式を判定した場合には、その第1の方式にしたがって予測画像を生成する(ステップSr_2a)。また、予測処理部は、予測画像を生成するためのモードとして第2の方式を判定した場合には、その第2の方式にしたがって予測画像を生成する(ステップSr_2b)。また、予測処理部は、予測画像を生成するためのモードとして第3の方式を判定した場合には、その第3の方式にしたがって予測画像を生成する(ステップSr_2c)。
第1の方式、第2の方式、および第3の方式は、予測画像を生成するための互いに異なる方式であって、それぞれ例えば、インター予測方式、イントラ予測方式、および、それら以外の予測方式であってもよい。これらの予測方式では、上述の再構成画像を用いてもよい。
[イントラ予測部]
イントラ予測部216は、符号化ビットストリームから読み解かれたイントラ予測モードに基づいて、ブロックメモリ210に格納されたカレントピクチャ内のブロックを参照してイントラ予測を行うことで、予測信号(イントラ予測信号)を生成する。具体的には、イントラ予測部216は、カレントブロックに隣接するブロックのサンプル(例えば輝度値、色差値)を参照してイントラ予測を行うことでイントラ予測信号を生成し、イントラ予測信号を予測制御部220に出力する。
なお、色差ブロックのイントラ予測において輝度ブロックを参照するイントラ予測モードが選択されている場合は、イントラ予測部216は、カレントブロックの輝度成分に基づいて、カレントブロックの色差成分を予測してもよい。
また、符号化ビットストリームから読み解かれた情報がPDPCの適用を示す場合、イントラ予測部216は、水平/垂直方向の参照画素の勾配に基づいてイントラ予測後の画素値を補正する。
[インター予測部]
インター予測部218は、フレームメモリ214に格納された参照ピクチャを参照して、カレントブロックを予測する。予測は、カレントブロック又はカレントブロック内のサブブロック(例えば4x4ブロック)の単位で行われる。例えば、インター予測部218は、符号化ビットストリーム(例えば、エントロピー復号部202から出力される予測パラメータ)から読み解かれた動き情報(例えば動きベクトル)を用いて動き補償を行うことでカレントブロック又はサブブロックのインター予測信号を生成し、インター予測信号を予測制御部220に出力する。
符号化ビットストリームから読み解かれた情報がOBMCモードを適用することを示す場合、インター予測部218は、動き探索により得られたカレントブロックの動き情報だけでなく、隣接ブロックの動き情報も用いて、インター予測信号を生成する。
また、符号化ビットストリームから読み解かれた情報がFRUCモードを適用することを示す場合、インター予測部218は、符号化ストリームから読み解かれたパターンマッチングの方法(バイラテラルマッチング又はテンプレートマッチング)に従って動き探索を行うことにより動き情報を導出する。そして、インター予測部218は、導出された動き情報を用いて動き補償(予測)を行う。
また、インター予測部218は、BIOモードが適用される場合に、等速直線運動を仮定したモデルに基づいて動きベクトルを導出する。また、符号化ビットストリームから読み解かれた情報がアフィン動き補償予測モードを適用することを示す場合には、インター予測部218は、複数の隣接ブロックの動きベクトルに基づいてサブブロック単位で動きベクトルを導出する。
[MV導出 > ノーマルインターモード]
符号化ビットストリームから読み解かれた情報がノーマルインターモードを適用することを示す場合、インター予測部218は、符号化ストリームから読み解かれた情報に基づいて、MVを導出し、そのMVを用いて動き補償(予測)を行う。
図45は、復号装置200におけるノーマルインターモードによるインター予測の例を示すフローチャートである。
復号装置200のインター予測部218は、ブロックごとに、そのブロックに対して動き補償を行う。インター予測部218は、時間的または空間的にカレントブロックの周囲にある複数の復号済みブロックのMVなどの情報に基づいて、そのカレントブロックに対して複数の候補MVを取得する(ステップSs_1)。つまり、インター予測部218は、候補MVリストを作成する。
次に、インター予測部218は、ステップSs_1で取得された複数の候補MVの中から、N個(Nは2以上の整数)の候補MVのそれぞれを予測動きベクトル候補(予測MV候補ともいう)として、所定の優先順位に従って抽出する(ステップSs_2)。なお、その優先順位は、N個の予測MV候補のそれぞれに対して予め定められていてもよい。
次に、インター予測部218は、入力されたストリーム(すなわち符号化ビットストリーム)から予測動きベクトル選択情報を復号し、その復号された予測動きベクトル選択情報を用いて、そのN個の予測MV候補の中から1つの予測MV候補を、カレントブロックの予測動きベクトル(予測MVともいう)として選択する(ステップSs_3)。
次に、インター予測部218は、入力されたストリームから差分MVを復号し、その復号された差分MVである差分値と、選択された予測動きベクトルとを加算することによって、カレントブロックのMVを導出する(ステップSs_4)。
最後に、インター予測部218は、その導出されたMVと復号済み参照ピクチャとを用いてカレントブロックに対して動き補償を行ことにより、そのカレントブロックの予測画像を生成する(ステップSs_5)。
[予測制御部]
予測制御部220は、イントラ予測信号及びインター予測信号のいずれかを選択し、選択した信号を予測信号として加算部208に出力する。全体的に、復号装置側の予測制御部220、イントラ予測部216およびインター予測部218の構成、機能、および処理は、符号化装置側の予測制御部128、イントラ予測部124およびインター予測部126の構成、機能、および処理と対応していてもよい。
[復号装置の実装例]
図46は、復号装置200の実装例を示すブロック図である。復号装置200は、プロセッサb1及びメモリb2を備える。例えば、図41に示された復号装置200の複数の構成要素は、図46に示されたプロセッサb1及びメモリb2によって実装される。
プロセッサb1は、情報処理を行う回路であり、メモリb2にアクセス可能な回路である。例えば、プロセッサb1は、符号化された動画像(すなわち符号化ビットストリーム)を復号する専用又は汎用の電子回路である。プロセッサb1は、CPUのようなプロセッサであってもよい。また、プロセッサb1は、複数の電子回路の集合体であってもよい。また、例えば、プロセッサb1は、図41等に示された復号装置200の複数の構成要素のうち、複数の構成要素の役割を果たしてもよい。
メモリb2は、プロセッサb1が符号化ビットストリームを復号するための情報が記憶される専用又は汎用のメモリである。メモリb2は、電子回路であってもよく、プロセッサb1に接続されていてもよい。また、メモリb2は、プロセッサb1に含まれていてもよい。また、メモリb2は、複数の電子回路の集合体であってもよい。また、メモリb2は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリb2は、不揮発性メモリでもよいし、揮発性メモリでもよい。
例えば、メモリb2には、動画像が記憶されてもよいし、符号化ビットストリームが記憶されてもよい。また、メモリb2には、プロセッサb1が符号化ビットストリームを復号するためのプログラムが記憶されていてもよい。
また、例えば、メモリb2は、図41等に示された復号装置200の複数の構成要素のうち、情報を記憶するための構成要素の役割を果たしてもよい。具体的には、メモリb2は、図41に示されたブロックメモリ210及びフレームメモリ214の役割を果たしてもよい。より具体的には、メモリb2には、再構成済みブロック及び再構成済みピクチャ等が記憶されてもよい。
なお、復号装置200において、図41等に示された複数の構成要素の全てが実装されなくてもよいし、上述された複数の処理の全てが行われなくてもよい。図41等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、上述された複数の処理の一部は、他の装置によって実行されてもよい。
[各用語の定義]
各用語は一例として、以下のような定義であってもよい。
ピクチャは、モノクロフォーマットにおける複数の輝度サンプルの配列、又は、4:2:0、4:2:2及び4:4:4のカラーフォーマットにおける複数の輝度サンプルの配列及び複数の色差サンプルの2つの対応配列である。ピクチャは、フレーム又はフィールドであってもよい。
フレームは、複数のサンプル行0、2、4、・・・が生じるトップフィールド、及び、複数のサンプル行1、3、5、・・・が生じるボトムフィールドの組成物である。
スライスは、1つの独立スライスセグメント、及び、(もしあれば)同じアクセスユニット内の(もしあれば)次の独立スライスセグメントに先行する全ての後続の従属スライスセグメントに含まれる整数個の符号化ツリーユニットである。
タイルは、ピクチャにおける特定のタイル列及び特定のタイル行内の複数の符号化ツリーブロックの矩形領域である。タイルは、タイルのエッジを跨ぐループフィルタが依然として適用されてもよいが、独立して復号及び符号化され得ることが意図された、フレームの矩形領域であってもよい。
ブロックは、複数のサンプルのMxN(N行M列)配列、又は、複数の変換係数のMxN配列である。ブロックは、1つの輝度及び2つの色差の複数の行列からなる複数の画素の正方形又は矩形の領域であってもよい。
CTU(符号化ツリーユニット)は、3つのサンプル配列を有するピクチャの複数の輝度サンプルの符号化ツリーブロックであってもよいし、複数の色差サンプルの2つの対応符号化ツリーブロックであってもよい。あるいは、CTUは、モノクロピクチャと、3つの分離されたカラー平面及び複数のサンプルの符号化に用いられるシンタックス構造を用いて符号化されるピクチャとのいずれかの複数のサンプルの符号化ツリーブロックであってもよい。
スーパーブロックは、1つ又は2つのモード情報ブロックを構成し、又は、再帰的に4つの32×32ブロックに分割され、さらに分割され得る64×64画素の正方形ブロックであってもよい。
(実施の形態2)
本実施の形態における符号化装置100は、実施の形態1と同様の構成を有する。また、本実施の形態における符号化装置100は、実施の形態1に対して付加的な機能、または代替え的な機能を有する。同様に、本実施の形態における復号装置200は、実施の形態1と同様の構成を有する。また、本実施の形態における復号装置200は、実施の形態1に対して付加的な機能、または代替え的な機能を有する。
本実施の形態における復号装置200は、VPDUと呼ばれる画像の単位を用いて処理を行うとともに、以下の第1~第7の例のような予測処理を行う。なお、以下の予測処理の第1~第7の例では、パイプライン処理が用いられる。このパイプライン処理は、複数のステージ(例えばStage1~6)を含み、これらのステージのそれぞれは、そのステージに対応する回路またはプロセッサなどのハードウェアによって実行される。
[VPDU]
図47は、予測処理を行う際のブロックサイズについて説明するための図である。
ピクチャまたは画像を構成する最も大きな単位としてCTUがある。基本的に予測処理はCU単位で行われ、そのCUはCTU以下のサイズを取ることができる。例えば、CTUサイズが128×128画素である場合は、CUサイズは、4×4画素、4×8画素、8×4画素、8×8画素、・・・、または128×128画素を取ることができる。
また、別の単位としてVPDU(Virtual Pipeline Decoding Unit)と呼ばれる単位がある。VPDUは、ハードウェアにおいてパイプライン処理を行う際に、1ステージで処理できる固定的な単位である。具体的には、変換処理が適用されるブロックサイズの中で取りうる最も大きなサイズをVPDUのサイズとすることが多く、例えば、VPDUに対して64×64画素等のサイズが設定される。
一般的に、処理対象CUがVPDUよりも小さい場合は、VPDUに包含される複数のCUをまとめてパイプライン処理の1ステージで処理することが想定される。一方、処理対象CUがVPDUよりも大きい場合は、そのCUを複数のVPDUに分割して、そのCUをVPDUごとにパイプライン処理の1ステージで処理することが想定される。
[予測処理の第1の例]
図48は、本実施の形態における復号装置200によって行われる予測処理の第1の例をパイプライン処理の一構成例として概略的に示す図である。
図48に示すパイプライン処理PL1は、Stage1~6を含む。
Stage1では、エントロピー復号処理St1が行われる。つまり、Stage1では、復号装置200は、復号対象の入力ストリームに対して、エントロピー復号を行うことによって、符号化画像の復号に必要な情報を取得する。なお、入力ストリームは、上述の符号化ビットストリームであって、エントロピー復号処理St1は、図41に示す復号装置200のエントロピー復号部202によって行われる。一般的に、Stage1の処理は、図47に示すVPDU単位ではなく、CU単位、CTU単位、もしくはそれよりも大きな単位で行われる。
Stage2では、MV導出処理St21およびメモリ転送処理St22が行われる。つまり、MV導出処理St21では、復号装置200は、動きベクトルであるMVを導出する。そして、メモリ転送処理St22では、復号装置200は、その導出されたMVを用いて参照画像の少なくとも一部を例えばフレームメモリ214などのメモリから転送する。一般的に、Stage2以降の各ステージの処理は、図47に示すVPDU単位で行われる。例えばStage2以降の各ステージでは、VPDUがCUよりも大きければ、VPDU内の全てのCUに対する処理が完了するまで、各CUに対する処理が行われる。また、VPDUがCUよりも小さければ、例えば、CU内の1つのVPDUに対して処理が行われ、その1つのVPDUの処理結果(例えば、導出されたMV)がCU内の他のVPDUに適用される。
Stage3では、DMVR処理St3が行われる。つまり、Stage3では、復号装置200は、DMVR処理によって、上述のように導出されたMVの周辺を探索してそのMVの補正を行う。
Stage4では、MC処理St4が行われる。つまり、Stage4では、復号装置200は、その補正されたMVを用いて動き補償処理を行う。
なお、上述のStage2~4までの処理は、図41に示すインター予測部218によって行われる。
Stage5では、LIC処理St51aと、イントラ予測処理St52と、イントラ/インター混合処理St53と、モード切替処理St57と、逆量子化・逆変換処理St54と、再構成処理St56とが行われる。
LIC処理St51aでは、復号装置200は、動き補償処理によって取得されたインター予測画像に対してLIC処理を適用することでそのインター予測画像の補正を行う。なお、LIC処理St51aは、図41に示すインター予測部218によって行われる。
また、LIC処理St51aと同時に行われるイントラ予測処理St52では、復号装置200は、イントラ予測を行うことによってイントラ予測画像を生成する。なお、イントラ予測処理St52は、図41に示すイントラ予測部216によって行われる。
イントラ/インター混合処理St53では、復号装置200は、その補正されたインター予測画像とイントラ予測画像とを加算器を用いて混合する、または重ね合わせることによって、イントラ/インター混合予測画像を生成する。例えば、イントラ予測画像の画素値とインター予測画像の画素値との平均値がイントラ/インター混合予測画像の画素値として用いられてもよい。なお、イントラ/インター混合処理St53は、CIIP(Combined inter merge / intra prediction)とも呼ばれる。モード切替処理St57では、復号装置200は、イントラ予測画像と、イントラ/インター混合予測画像と、補正後のインター予測画像とから、符号化画像の復号に用いられる最終的な予測画像を選択的に切り替える。
イントラ/インター混合処理St53は、インター予測でMC処理St4が行われてインター予測画像を生成したのちに、イントラ予測画像を混合するため、インター予測におけるMV導出のモードの1つと考えることもできる。なお、インター予測モードにおけるMV導出のモードは、例えば、図16や図17のように分類できるが、いずれの分類に含まれてもよい。例えば、MV導出モードを、図17のように差分MVを符号化するモードか差分MVを符号化しないモードかに分類する場合、どちらか1方に含まれるのであれば、どちらの分類に含まれてもよい。図16等、他の分類でも同様である。
なお、イントラ・インター混合処理St53およびモード切替処理St57は、図41に示すインター予測部218、イントラ予測部216、および予測制御部220のうちの少なくとも1つによって行われる。
逆量子化・逆変換処理St54では、復号装置200は、入力ストリームに対して逆量子化と逆変換とを行って残差画像を生成する。残差画像は、上述の予測残差または差分ブロックである。再構成処理St56では、復号装置200は、その残差画像と、上述のように切り替えられた予測画像とを加算することによって再構成画像を生成する。この生成された再構成画像は、次のブロックまたはCUの処理に隣接参照画素として使用されるため、LIC処理St51aおよびイントラ予測処理St52にフィードバックされる。
なお、逆量子化・逆変換処理St54は、図41に示す逆量子化部204および逆変換部206によって行われ、再構成処理St56は、図41に示す加算部208によって行われる。
Stage6では、ループフィルタ処理St6が行われる。つまり、Stage6では、復号装置200は、再構成画像に対してデブロッキング・フィルタ等のループフィルタを適用することによって復号画像を生成する。なお、このループフィルタ処理St6は、図41に示すループフィルタ部212によって行われる。
なお、図48に示すパイプライン処理PL1は一例であって、このパイプライン処理PL1に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL1に他の処理を追加したり、ステージの区切り方を変えてもよい。
図47を用いて説明した通り、処理対象CUがVPDUよりも小さい場合は、VPDUに包含される複数のCUをまとめてパイプラインの1ステージで処理を行うことが想定される。例えば、VPDUのサイズが64×64画素で、それに包含される全てのCUのそれぞれのサイズが8×8画素である場合、図48に示すパイプライン処理PL1の1ステージの中で、64個のCUの処理が行われる。
ここで、Stage5におけるモード切替処理St57では、ワーストケースとして、VPDUに含まれる上述の64個の全てのCUの復号に、イントラ/インター混合予測画像が用いられる場合がある。そのイントラ/インター混合予測画像を生成するためのイントラ/インター混合処理St53では、復号装置200は、イントラ予測画像と補正後のインター予測画像とを混合する。したがって、復号装置200は、CUごとに、そのCUに対するイントラ予測処理St52と、インター予測処理との両方が完了していることを確認してから、イントラ予測画像と補正後のインター予測画像とを混合する必要がある。なお、上述のインター予測処理は、MV導出処理St21、メモリ転送処理St22、DMVR処理St3、MC処理St4およびLIC処理St51aを含む。
つまり、図48に示すパイプライン処理PL1では、復号装置200は、CUごとに、イントラ予測処理St52およびインター予測処理のうちで処理完了時間が遅い方を待つ必要がある。その結果、待ち時間がワーストケースでは1ステージ処理中に64回も発生する可能性がある。
この待ち時間は、Stage5の処理時間を大幅に増加させてしまう原因となり、その結果、1ピクチャの復号に与えられた処理時間内に、その復号を完了させることができない場合が生じる。つまり、決められた時間に復号画像を表示させることができなくなってしまう可能性が発生する。
そこで、本実施の形態における復号装置200は、以下に示す予測処理の第2~第7の例を行ってもよい。
[予測処理の第2の例]
図49は、本実施の形態における復号装置200によって行われる予測処理の第2の例を示すフローチャートである。なお、このフローチャートは、予測処理の第2の例におけるCUに対する処理の流れを示す。
復号装置200は、ステップS11~S17aの処理をCU単位で行う。具体的には、まず、復号装置200は、処理対象CUに対してMVの導出を行い(ステップS11)、さらに、DMVR処理を行う(ステップS12)。このDMVR処理では、復号装置200は、ステップS11で導出されたMVの周辺を探索することによってそのMVの補正を行う。そして、復号装置200は、補正されたMVを用いてMC処理、すなわち動き補償処理を行う(ステップS13)。これにより、インター予測画像が得られる。
次に、復号装置200は、処理対象CUにLIC処理を適用するかどうかを判定する(ステップS14a)。ここで、復号装置200は、LIC処理を適用すると判定すると(ステップS14aのYes)、MC処理によって得られたインター予測画像に対してLIC処理による補正を行うことによって、最終的な予測画像を生成する(ステップS16a)。なお、最終的な予測画像とは、再構成画像の生成に用いられる予測画像であって、残差画像に加算される予測画像である。
一方、復号装置200は、LIC処理を適用しないと判定すると(ステップS14aのNo)、さらに、イントラ/インター混合処理を適用するかどうかを判定する(ステップS15a)。ここで、復号装置200は、イントラ/インター混合処理を適用すると判定すると(ステップS15aのYes)、MC処理によって得られたインター予測画像と、イントラ予測処理によって得られたイントラ予測画像とを混合する(ステップS17a)。この混合によって、イントラ/インター混合予測画像が最終的な予測画像として生成される。一方、復号装置200は、イントラ/インター混合処理を適用しないと判定すると(ステップS15aのNo)、MC処理によって得られたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
なお、図49のフローチャートでは、復号装置200は、まず、LIC処理を適用するかどうかを判定してから、次に、イントラ/インター混合処理を適用するかどうかを判定しているが、その逆の順でそれらの判定を行ってもよい。
なお、図49のフローチャートは一例であって、このフローチャートに含まれる少なくとも1つのステップを除いたり、このフローチャートに他の処理または条件判定のステップを追加したりしてもよい。
なお、図49に示すフローチャートの処理は、符号化装置100によって行われてもよい。つまり、符号化装置100と復号装置200とは、互に同様の予測処理を行い、その予測処理を用いて、画像をストリームに符号化するか、そのストリームを画像に復号するかに違いがある。したがって、図49のフローチャートに示される予測処理の流れは、符号化装置100においても基本的に共通である。
なお、図49のフローチャートにおける、LIC処理を適用するかどうかの判定(ステップS14a)、およびイントラ/インター混合処理を適用するかどうかの判定(ステップS15a)は、フラグの解析によって行われてもよい。つまり、復号装置200は、例えば、ストリームに記述されているフラグを解析することによって、それらの判定を行ってもよい。また、符号化装置100は、例えば、R-D最適化モデルを用いたコストを算出することによって、それらの判定を行ってもよい。つまり、符号化装置100は、上述のそれぞれの判定において、判定対象の処理を適用することに得られる予測画像のコストと、その処理を適用しないことによって得られる予測画像のコストとを算出する。そして、符号化装置100は、それらのコストのうちの小さい方のコストに対応する予測画像が最終的な予測画像として用いられるように、上述の判定を行う。
図50は、本実施の形態における復号装置200によって行われる予測処理の第2の例をパイプライン処理の一構成例として概略的に示す図である。
図50に示すパイプライン処理PL2は、Stage1~6を含む。なお、Stage2以降の各ステージの処理は、例えばVPDU単位で行われる。
このパイプライン処理PL2のStage1~6のうちのStage5は、図48に示すパイプライン処理PL1のStage5とは異なる。つまり、パイプライン処理PL2のStage5では、LIC処理St51aを適用しない場合に、イントラ/インター混合処理St53が行われる。言い換えれば、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、LIC処理St51aを行うことなく、そのインター予測画像とイントラ予測画像とを混合することによって、イントラ/インター混合予測画像を生成する。
このようなパイプライン処理PL2では、イントラ/インター混合処理St53が行われる時点では、そのイントラ/インター混合処理St53に必要なインター予測画像の生成がStage4で既に完了している。したがって、図48に示すパイプライン処理PL1では必要とされていたインター予測処理の完了の待機を、パイプライン処理PL2では不要とすることができる。したがって、イントラ予測処理St52が完了した時点ですぐにイントラ/インター混合処理St53を行うことが可能となる。その結果、余分な待ち時間の発生を抑えることができる。つまり、イントラ/インター混合処理St53を行う場合のStage5の処理時間を、イントラ/インター混合処理St53を行わない場合のStage5の処理時間とほぼ同等の処理時間にすることができる。
なお、図50に示すパイプライン処理PL2は一例であって、このパイプライン処理PL2に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL2に他の処理を追加したり、ステージの区切り方を変えてもよい。
このように予測処理の第2の例では、図49および図50に示す処理によって、1つのVPDUに複数のCUが包含されるような符号化が行われる場合においても、全てのステージの処理を予め指定された処理時間内に完了させることができる。その結果、符号化性能の劣化を抑制しながら処理の高速化を図る可能性を高めることができる。
[予測処理の第2の例のバリエーション]
なお、予測処理の第2の例では、LIC処理の適用が選択されたという条件が満たされたときには常にイントラ/インター混合処理が禁止されるが、イントラ/インター混合処理の禁止は、この条件に限らない。例えば、LIC処理の適用が選択され、かつ、処理対象CUのサイズが特定の閾値よりも小さいという条件が満たされたときに、イントラ/インター混合処理が禁止されてもよい。これにより、再構成画像を生成するStage5の処理時間は増加するが、その増加時間をある程度の範囲内に収めることが可能となり、符号化性能の劣化をさらに抑制しながら処理時間の増加を抑制できる可能性を高めることができる。
なお、イントラ/インター混合処理の適用を選択し、かつ、処理対象CUのサイズが特定の閾値よりも小さいという条件が満たされたときに、LIC処理が禁止されてもよい。また、その条件に含まれる「処理対象CUのサイズが特定の閾値よりも小さい」は、「1つのVPDUに含まれるCUの数が特定の閾値よりも多い」に置き換えられてもよい。
なお、予測処理の第2の例では、LIC処理とイントラ/インター混合処理との組み合わせにおいて、何れか一方の処理が適用され他方の処理が禁止されるが、この組み合わせに限らず、他の組み合わせにおいても上述と同様の適用と禁止とが行われてもよい。例えば、他の組み合わせは、再構成画像を生成するStage5において、再構成画像のフィードバックが必要なインター予測側の処理と、待ち時間が必要とされる処理との組み合わせであれば、どのような組み合わせであってもよい。待ち時間が必要とされる処理は、イントラ予測側の処理とインター予測側の処理とのうち完了時間の遅い方の処理を待つ必要がある処理である。なお、再構成画像のフィードバックが必要なインター予測側の処理は、例えば、インター予測によって得られた予測画像に対して行われるフィルタ処理であってもよい。
[予測処理の第3の例]
図51は、本実施の形態における復号装置200によって行われる予測処理の第3の例を示すフローチャートである。なお、このフローチャートは、予測処理の第3の例におけるCUに対する処理の流れを示す。
復号装置200は、ステップS11~S13、S14b、S15a、S16b、およびS17aの処理をCU単位で行う。具体的には、まず、復号装置200は、処理対象CUに対してMVの導出を行い(ステップS11)、さらに、DMVR処理を行う(ステップS12)。このDMVR処理では、復号装置200は、ステップS11で導出されたMVの周辺を探索することによってそのMVの補正を行う。そして、復号装置200は、補正されたMVを用いてMC処理、すなわち動き補償処理を行う(ステップS13)。これにより、処理対象CUのインター予測画像が得られる。
次に、復号装置200は、処理対象CUのインター予測画像に対してフィルタ処理(予測画フィルタ処理ともいう)を適用するかどうかを判定する(ステップS14b)。ここで、フィルタ処理とは、複数の画素のそれぞれに重みを乗算して、画素値を補正または更新する処理である。なお、予測画フィルタ処理とは、特に、予測画像に含まれる画素値を補正または更新する処理である。
復号装置200は、フィルタ処理を適用すると判定すると(ステップS14bのYes)、MC処理によって得られたインター予測画像に対してフィルタ処理を行うことによって、フィルタ処理されたインター予測画像を、最終的な予測画像として生成する(ステップS16b)。例えば、フィルタ処理では、5×5のフィルタ係数からなるマトリックスが用いられてもよい。さらに、フィルタ処理では、処理対象CUに隣接するCU(以下、隣接CUという)の再構成画像に含まれる画素が用いられてもよい。例えば、処理対象CUのインター予測画像内の各画素のうちの、処理対象CUと隣接CUとの境界に近い画素は、その隣接CUの再構成画像に含まれる画素を用いてフィルタ処理される。
一方、復号装置200は、フィルタ処理を適用しないと判定すると(ステップS14bのNo)、さらに、イントラ/インター混合処理を適用するかどうかを判定する(ステップS15a)。ここで、復号装置200は、イントラ/インター混合処理を適用すると判定すると(ステップS15aのYes)、MC処理によって得られたインター予測画像と、イントラ予測処理によって得られたイントラ予測画像とを混合する(ステップS17a)。この混合によって、イントラ/インター混合予測画像が最終的な予測画像として生成される。一方、復号装置200は、イントラ/インター混合処理を適用しないと判定すると(ステップS15aのNo)、MC処理によって得られたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
なお、図51のフローチャートでは、復号装置200は、まず、インター予測画像に対してフィルタ処理を適用するかどうかを判定してから、次に、イントラ/インター混合処理を適用するかどうかを判定しているが、その逆の順でそれらの判定を行ってもよい。
なお、図51のフローチャートは一例であって、このフローチャートに含まれる少なくとも1つのステップを除いたり、このフローチャートに他の処理または条件判定のステップを追加したりしてもよい。
なお、図51に示すフローチャートの処理は、符号化装置100によって行われてもよい。つまり、符号化装置100と復号装置200とは、互に同様の予測処理を行い、その予測処理を用いて、画像をストリームに符号化するか、そのストリームを画像に復号するかに違いがある。したがって、図51のフローチャートに示される予測処理の流れは、符号化装置100においても基本的に共通である。
なお、図51のフローチャートにおける、フィルタ処理を適用するかどうかの判定(ステップS14b)、およびイントラ/インター混合処理を適用するかどうかの判定(ステップS15a)は、フラグの解析によって行われてもよい。つまり、復号装置200は、例えば、ストリームに記述されているフラグを解析することによって、それらの判定を行ってもよい。また、符号化装置100は、例えば、R-D最適化モデルを用いたコストを算出することによって、それらの判定を行ってもよい。つまり、符号化装置100は、上述のそれぞれの判定において、判定対象の処理を適用することに得られる予測画像のコストと、その処理を適用しないことによって得られる予測画像のコストとを算出する。そして、符号化装置100は、それらのコストのうちの小さい方のコストに対応する予測画像が最終的な予測画像として用いられるように、上述の判定を行う。
図52は、本実施の形態における復号装置200によって行われる予測処理の第3の例をパイプライン処理の一構成例として概略的に示す図である。
図52に示すパイプライン処理PL3は、Stage1~6を含む。なお、Stage2以降の各ステージの処理は、例えばVPDU単位で行われる。
このパイプライン処理PL3のStage1~6のうちのStage5は、図50に示すパイプライン処理PL2のStage5とは異なる。つまり、パイプライン処理PL3のStage5では、LIC処理St51aの代わりに予測画フィルタ処理St51bが行われる。この予測画フィルタ処理St51bは、上述のフィルタ処理である。
つまり、パイプライン処理PL2のStage5では、予測画フィルタ処理St51bを適用しない場合に、イントラ/インター混合処理St53が行われる。言い換えれば、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、予測画フィルタ処理St51bを行うことなく、そのインター予測画像とイントラ予測画像とを混合することによって、イントラ/インター混合予測画像を生成する。一方、復号装置200は、MC処理St4によって生成されたインター予測画像に対して予測画フィルタ処理St51bを適用する場合は、その予測画フィルタ処理St51bが適用されたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
このようなパイプライン処理PL3では、イントラ/インター混合処理St53が行われる時点では、そのイントラ/インター混合処理St53に必要なインター予測画像の生成がStage4で既に完了している。したがって、図48に示すパイプライン処理PL1では必要とされていたインター予測処理の完了の待機を、パイプライン処理PL3では不要とすることができる。したがって、イントラ予測処理St52が完了した時点ですぐにイントラ/インター混合処理St53を行うことが可能となる。その結果、余分な待ち時間の発生を抑えることができる。つまり、イントラ/インター混合処理St53を行う場合のStage5の処理時間を、イントラ/インター混合処理St53を行わない場合のStage5の処理時間とほぼ同等の処理時間にすることができる。
なお、図52に示すパイプライン処理PL3は一例であって、このパイプライン処理PL3に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL3に他の処理を追加したり、ステージの区切り方を変えてもよい。
なお、予測画フィルタ処理St51bは、既に処理が完了しているブロックの残差画像と予測画像を加算することで生成された再構成画像をフィードバックさせて、前記再構成画像も入力に加えて処理を行う構成としているが、それに限ったものでなく、前記再構成画像をフィードバックさせて入力させることなく、処理対象ブロック内の予測画像のみに対してフィルタ処理を行う構成としてもよい。
言い換えると、図52のパイプライン処理PL3におけるStage5では、処理済みのCUの残差画像と予測画像とを加算することで生成された再構成画像が、予測画フィルタ処理St51bにフィードバックされる。そして、予測画フィルタ処理St51bでは、その再構成画像と、MC処理St4によって生成されたインター予測画像とを用いた処理が行われる。つまり、インター予測画像の画素が、再構成画像の画素を用いてフィルタリングされる。しかし、この予測処理の第3の例は、このようなフィードバックに限定されるものではない。つまり、予測画フィルタ処理St51bへの再構成画像のフィードバックが行われなくてもよい。この場合には、予測画フィルタ処理St51bでは、その再構成画像を用いることなく、MC処理St4によって生成されたインター予測画像に対して処理が行われる。
このようなフィードバックが行われない場合には、Stage5を、予測画フィルタ処理St51bを行うステージと、その予測画フィルタ処理St51b以外の再構成処理St56などの幾つかの処理を含むステージとに分割することができる。しかし、Stage5を2つのステージに分割すると、ステージの追加によって、必要とされるメモリおよび回路が増加する可能性がある。しかし、パイプライン処理PL3では、予測画フィルタ処理St51bは、再構成処理St56などの幾つかの処理と同じステージで行われるため、メモリおよび回路の増加を回避できる可能性を高めることができる。
このように予測処理の第3の例では、図51および図52に示す処理によって、1つのVPDUに複数のCUが包含されるような符号化が行われる場合においても、全てのステージの処理を予め指定された処理時間内に完了させることができる。その結果、符号化性能の劣化を抑制しながら処理の高速化を図る可能性を高めることができる。また、上述のように、予測画フィルタ処理St51bが、再構成処理St56などの処理と同じステージに実装されるため、符号化装置100および復号装置200の回路規模の増加を抑制できる可能性を高めることができる。
[予測処理の第4の例]
図53は、本実施の形態における復号装置200によって行われる予測処理の第4の例を示すフローチャートである。なお、このフローチャートは、予測処理の第4の例におけるCUに対する処理の流れを示す。
復号装置200は、ステップS11~S13、S14c、S15a、S16c、およびS17aの処理をCU単位で行う。具体的には、まず、復号装置200は、処理対象CUに対してMVの導出を行い(ステップS11)、さらに、DMVR処理を行う(ステップS12)。このDMVR処理では、復号装置200は、ステップS11で導出されたMVの周辺を探索することによってそのMVの補正を行う。そして、復号装置200は、補正されたMVを用いてMC処理、すなわち動き補償処理を行う(ステップS13)。これにより、処理対象CUのインター予測画像が得られる。
次に、復号装置200は、処理対象CUのインター予測画像に対してBIO処理を適用するかどうかを判定する(ステップS14c)。ここで、復号装置200は、BIO処理を適用すると判定すると(ステップS14cのYes)、MC処理によって得られたインター予測画像に対してBIO処理を行うことによって、最終的な予測画像を生成する(ステップS16c)。なお、BIO処理は、上述のBIOモードであって、BDOF(bi-directional optical flow)処理とも呼ばれる。このBIO処理は、等速直線運動を仮定したモデルに基づいて導出または補正された動きベクトルに基づいてインター予測画像を補正する処理である。このようにBIO処理によって補正されたインター予測画像が、最終的な予測画像として再構成画像の生成に用いられる。
一方、復号装置200は、BIO処理を適用しないと判定すると(ステップS14cのNo)、さらに、イントラ/インター混合処理を適用するかどうかを判定する(ステップS15a)。ここで、復号装置200は、イントラ/インター混合処理を適用すると判定すると(ステップS15aのYes)、MC処理によって得られたインター予測画像と、イントラ予測処理によって得られたイントラ予測画像とを混合する(ステップS17a)。この混合によって、イントラ/インター混合予測画像が最終的な予測画像として生成される。一方、復号装置200は、イントラ/インター混合処理を適用しないと判定すると(ステップS15aのNo)、MC処理によって得られたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
なお、図53のフローチャートでは、復号装置200は、まず、インター予測画像に対してBIO処理を適用するかどうかを判定してから、次に、イントラ/インター混合処理を適用するかどうかを判定しているが、その逆の順でそれらの判定を行ってもよい。
なお、図53のフローチャートは一例であって、このフローチャートに含まれる少なくとも1つのステップを除いたり、このフローチャートに他の処理または条件判定のステップを追加したりしてもよい。
なお、図53に示すフローチャートの処理は、符号化装置100によって行われてもよい。つまり、符号化装置100と復号装置200とは、互に同様の予測処理を行い、その予測処理を用いて、画像をストリームに符号化するか、そのストリームを画像に復号するかに違いがある。したがって、図53のフローチャートに示される予測処理の流れは、符号化装置100においても基本的に共通である。
なお、図53のフローチャートにおける、BIO処理を適用するかどうかの判定(ステップS14c)、およびイントラ/インター混合処理を適用するかどうかの判定(ステップS15a)は、フラグの解析によって行われてもよい。つまり、復号装置200は、例えば、ストリームに記述されているフラグを解析することによって、それらの判定を行ってもよい。また、符号化装置100は、例えば、R-D最適化モデルを用いたコストを算出することによって、それらの判定を行ってもよい。つまり、符号化装置100は、上述のそれぞれの判定において、判定対象の処理を適用することに得られる予測画像のコストと、その処理を適用しないことによって得られる予測画像のコストとを算出する。そして、符号化装置100は、それらのコストのうちの小さい方のコストに対応する予測画像が最終的な予測画像として用いられるように、上述の判定を行う。
図54は、本実施の形態における復号装置200によって行われる予測処理の第4の例をパイプライン処理の一構成例として概略的に示す図である。
図54に示すパイプライン処理PL4は、Stage1~6を含む。なお、Stage2以降の各ステージの処理は、例えばVPDU単位で行われる。
このパイプライン処理PL4のStage1~6のうちのStage5は、図50に示すパイプライン処理PL2のStage5とは異なる。つまり、パイプライン処理PL4のStage5では、LIC処理St51aの代わりにBIO処理St51cが行われる。さらに、このBIO処理St51cには、残差画像と予測画像とを加算することで生成される再構成画像がフィードバックされていない。
このようなパイプライン処理PL4のStage5では、BIO処理St51cを適用しない場合に、イントラ/インター混合処理St53が行われる。言い換えれば、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、BIO処理St51cを行うことなく、そのインター予測画像とイントラ予測画像とを混合することによって、イントラ/インター混合予測画像を生成する。一方、復号装置200は、MC処理St4によって生成されたインター予測画像に対してBIO処理St51cを適用する場合は、イントラ/インター混合処理St53を行わない。したがって、復号装置200は、そのBIO処理St51cが適用されたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
つまり、予測処理の第4の例では、BIO処理St51cとイントラ/インター混合処理St53とのうちの1つの処理が排他的に選択され、それらの処理のうちの選択された処理だけが、MC処理St4によって生成されたインター予測画像に対して適用される。その選択された処理の適用によって、処理対象CUの最終的な予測画像が生成されて、再構成画像の生成に用いられる。
このようなパイプライン処理PL4では、イントラ/インター混合処理St53が行われる時点では、そのイントラ/インター混合処理St53に必要なインター予測画像の生成がStage4で既に完了している。したがって、図48に示すパイプライン処理PL1では必要とされていたインター予測処理の完了の待機を、パイプライン処理PL4では不要とすることができる。したがって、イントラ予測処理St52が完了した時点ですぐにイントラ/インター混合処理St53を行うことが可能となる。その結果、余分な待ち時間の発生を抑えることができる。つまり、イントラ/インター混合処理St53を行う場合のStage5の処理時間を、イントラ/インター混合処理St53を行わない場合のStage5の処理時間とほぼ同等の処理時間にすることができる。
なお、図54に示すパイプライン処理PL4は一例であって、このパイプライン処理PL4に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL4に他の処理を追加したり、ステージの区切り方を変えてもよい。
なお、図54のパイプライン処理PL4におけるStage5では、処理済みのCUの残差画像と予測画像とを加算することで生成された再構成画像は、BIO処理St51cにフィードバックされない。したがって、Stage5を、BIO処理St51cを行うステージと、そのBIO処理St51c以外の再構成処理St56などの幾つかの処理を含むステージとに分割することができる。しかし、Stage5を2つのステージに分割すると、ステージの追加によって、必要とされるメモリおよび回路が増加する可能性がある。しかし、パイプライン処理PL4では、BIO処理St51cは、再構成処理St56などの幾つかの処理と同じステージで行われるため、メモリおよび回路の増加を回避できる可能性を高めることができる。
このように予測処理の第4の例では、図53および図54に示す処理によって、1つのVPDUに複数のCUが包含されるような符号化が行われる場合においても、全てのステージの処理を予め指定された処理時間内に完了させることができる。その結果、符号化性能の劣化を抑制しながら処理の高速化を図る可能性を高めることができる。また、上述のように、BIO処理St51cが、再構成処理St56などの処理と同じステージに実装されているため、符号化装置100および復号装置200の回路規模の増加を抑制できる可能性を高めることができる。
以上のように、本実施の形態における復号装置200は、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成する。そして、復号装置200は、第1の予測画像に対して更新処理を適用することによって、処理対象ブロックの最終的な予測画像を生成する。ここで、更新処理の候補は、第1の処理と第2の処理を含む。第1の処理は、BDOF(bi-directional optical flow)処理であり、第2の処理は、処理対象ブロックのイントラ予測で生成された第2の予測画像と上述の第1の予測画像とを混合する処理である。そして、更新処理の適用では、第1の処理及び第2の処理が排他的に適用される。例えば、復号装置200は、最終的な予測画像の生成では、更新処理が第1の処理である場合には、第1の予測画像に第2の処理を適用することなく、第1の処理を適用して、最終的な予測画像を生成する。また、復号装置200は、更新処理が第2の処理である場合には、第1の予測画像に第1の処理を適用することなく、第2の処理を適用して、最終的な予測画像を生成する。なお、第1の予測画像は、インター予測画像であり、第2の予測画像は、イントラ予測画像であり、処理対象ブロックは、例えば処理対象CUである。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、第1の予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、符号化画像を復号するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
また、復号装置200は、上述の更新処理の適用では、第2の処理を第1の予測画像に適用するか否かを判定し、第2の処理を適用すると判定した場合に、第2の処理を更新処理とする。一方、復号装置200は、第2の処理を適用しないと判定した場合に、第1の処理を第1の予測画像に適用するか否かを判定し、第1の処理を適用すると判定した場合に、第1の処理を更新処理とする。
これにより、更新処理の選択を適切に行うことができる可能性を高めることができる。
また、復号装置200は、符号化画像を復号するためのパイプライン処理に含まれる1つのステージであって、生成された最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、第1の処理および第2の処理を排他的に実行する。
これにより、例えば、第1の処理と第2の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、復号装置200の回路規模の増加を抑制することができる可能性を高めることができる。
このような復号装置200と同様に、本実施の形態における符号化装置100は、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成する。そして、符号化装置100は、第1の予測画像に対して更新処理を適用することによって、処理対象ブロックの最終的な予測画像を生成する。ここで、更新処理の候補は、第1の処理と第2の処理を含む。第1の処理は、BDOF(bi-directional optical flow)処理であり、第2の処理は、処理対象ブロックのイントラ予測で生成された第2の予測画像と上述の第1の予測画像とを混合する処理である。そして、更新処理の適用では、第1の処理及び第2の処理が排他的に適用される。例えば、符号化装置100は、最終的な予測画像の生成では、更新処理が第1の処理である場合には、第1の予測画像に第2の処理を適用することなく、第1の処理を適用して、最終的な予測画像を生成する。また、符号化装置100は、更新処理が第2の処理である場合には、第1の予測画像に第1の処理を適用することなく、第2の処理を適用して、最終的な予測画像を生成する。なお、第1の予測画像は、インター予測画像であり、第2の予測画像は、イントラ予測画像であり、処理対象ブロックは、例えば処理対象CUである。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、第1の予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、画像を符号化するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
また、符号化装置100は、上述の更新処理の適用では、第2の処理を第1の予測画像に適用するか否かを判定し、第2の処理を適用すると判定した場合に、第2の処理を更新処理とする。一方、符号化装置100は、第2の処理を適用しないと判定した場合に、第1の処理を第1の予測画像に適用するか否かを判定し、第1の処理を適用すると判定した場合に、第1の処理を更新処理とする。
これにより、更新処理の選択を適切に行うことができる可能性を高めることができる。
また、符号化装置100は、画像を符号化するためのパイプライン処理に含まれる1つのステージであって、生成された最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、第1の処理および第2の処理を排他的に実行する。
これにより、例えば、第1の処理と第2の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、符号化装置100の回路規模の増加を抑制することができる可能性を高めることができる。
[予測処理の第5の例]
図55は、本実施の形態における復号装置200によって行われる予測処理の第5の例を示すフローチャートである。なお、このフローチャートは、予測処理の第5の例におけるCUに対する処理の流れを示す。
復号装置200は、ステップS11~S13、S14c、S15b、S16c、およびS17bの処理をCU単位で行う。具体的には、まず、復号装置200は、処理対象CUに対してMVの導出を行い(ステップS11)、さらに、DMVR処理を行う(ステップS12)。このDMVR処理では、復号装置200は、ステップS11で導出されたMVの周辺を探索することによってそのMVの補正を行う。そして、復号装置200は、補正されたMVを用いてMC処理、すなわち動き補償処理を行う(ステップS13)。これにより、処理対象CUのインター予測画像が得られる。
次に、復号装置200は、処理対象CUのインター予測画像に対してBIO処理を適用するかどうかを判定する(ステップS14c)。ここで、復号装置200は、BIO処理を適用すると判定すると(ステップS14cのYes)、MC処理によって得られたインター予測画像に対してBIO処理を行うことによって、最終的な予測画像を生成する(ステップS16c)。このようにBIO処理によって補正されたインター予測画像が、最終的な予測画像として再構成画像の生成に用いられる。
一方、復号装置200は、BIO処理を適用しないと判定すると(ステップS14cのNo)、さらに、フィルタ処理(予測画フィルタ処理ともいう)を適用するかどうかを判定する(ステップS15b)。ここで、復号装置200は、フィルタ処理を適用すると判定すると(ステップS15bのYes)、MC処理によって得られたインター予測画像に対してフィルタ処理を行う(ステップS17b)。このフィルタ処理によって、再構成画像の生成に用いられる最終的な予測画像が生成される。一方、復号装置200は、フィルタ処理を適用しないと判定すると(ステップS15bのNo)、MC処理によって得られたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
ここで、フィルタ処理は、上述の予測処理の第3の例におけるフィルタ処理と同じであってもよく、上述した通り、複数の画素のそれぞれに重みを乗算して、画素値を補正または更新する処理であってもよい。なお、予測画フィルタ処理とは、特に、予測画像に含まれる画素値を補正または更新する処理である。または/かつ、その予測画フィルタ処理とは、例えば、MC処理によって得られたインター予測画像の画素を補正または更新する処理であってもよい。
なお、図55のフローチャートでは、復号装置200は、まず、インター予測画像に対してBIO処理を適用するかどうかを判定してから、次に、フィルタ処理を適用するかどうかを判定しているが、その逆の順でそれらの判定を行ってもよい。
なお、図55のフローチャートは一例であって、このフローチャートに含まれる少なくとも1つのステップを除いたり、このフローチャートに他の処理または条件判定のステップを追加したりしてもよい。
なお、図55に示すフローチャートの処理は、符号化装置100によって行われてもよい。つまり、符号化装置100と復号装置200とは、互に同様の予測処理を行い、その予測処理を用いて、画像をストリームに符号化するか、そのストリームを画像に復号するかに違いがある。したがって、図55のフローチャートに示される予測処理の流れは、符号化装置100においても基本的に共通である。
なお、図55のフローチャートにおける、BIO処理を適用するかどうかの判定(ステップS14c)、およびフィルタ処理を適用するかどうかの判定(ステップS15b)は、フラグの解析によって行われてもよい。つまり、復号装置200は、例えば、ストリームに記述されているフラグを解析することによって、それらの判定を行ってもよい。また、符号化装置100は、例えば、R-D最適化モデルを用いたコストを算出することによって、それらの判定を行ってもよい。つまり、符号化装置100は、上述のそれぞれの判定において、判定対象の処理を適用することによって得られる予測画像のコストと、その処理を適用しないことによって得られる予測画像のコストとを算出する。そして、符号化装置100は、それらのコストのうちの小さい方のコストに対応する予測画像が最終的な予測画像として用いられるように、上述の判定を行う。
図56は、本実施の形態における復号装置200によって行われる予測処理の第5の例をパイプライン処理の一構成例として概略的に示す図である。
図56に示すパイプライン処理PL5は、Stage1~6を含む。なお、Stage2以降の各ステージの処理は、例えばVPDU単位で行われる。
このパイプライン処理PL5のStage1~6のうちのStage5は、図50に示すパイプライン処理PL2のStage5とは異なる。つまり、パイプライン処理PL5のStage5では、MC処理St4によって生成されたインター予測画像に対して、BIO処理St51cか予測画フィルタ処理St51bかのどちらか一方のみが適用されることによって、最終的な予測画像が生成される。なお、予測画フィルタ処理St51bは、上述のフィルタ処理である。
つまり、パイプライン処理PL5のStage5では、予測画フィルタ処理St51bを適用しない場合に、BIO処理St51cが行われ、BIO処理St51cを適用しない場合に、予測画フィルタ処理St51bが行われる。言い換えれば、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、予測画フィルタ処理St51bを行うことなく、BIO処理St51cを適用することによって、最終的な予測画像を生成する。または、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、BIO処理St51cを行うことなく、予測画フィルタ処理St51bを適用することによって、最終的な予測画像を生成する。
つまり、予測処理の第5の例では、BIO処理St51cと予測画フィルタ処理St51bとのうちの1つの処理が排他的に選択され、それらの処理のうちの選択された処理だけが、MC処理St4によって生成されたインター予測画像に対して適用される。その選択された処理の適用によって、処理対象CUの最終的な予測画像が生成されて、再構成画像の生成に用いられる。
BIO処理St51cと予測画フィルタ処理St51bとを同時に適用した場合には、その2つの処理が連続して行われるため、Stage5の処理時間または処理サイクル数が増加する。したがって、このような場合には、規定の処理時間内にStage5の処理を完了させることができなくなってしまう可能性がある。しかし、図56に示すパイプライン処理PL5では、BIO処理St51cと予測画フィルタ処理St51bとのうちの、何れか一方しか行われない。したがって、Stage5の処理時間または処理サイクル数の増加を抑えて、Stage5の処理を規定の処理時間内に完了させることができる。
なお、図56に示すパイプライン処理PL5は一例であって、このパイプライン処理PL5に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL5に他の処理を追加したり、ステージの区切り方を変えてもよい。
なお、予測画フィルタ処理St51bは、既に処理が完了しているブロックの残差画像と予測画像を加算することで生成された再構成画像をフィードバックさせて、前記再構成画像も入力に加えて処理を行う構成としているが、それに限ったものでなく、前記再構成画像をフィードバックさせて入力させることなく、処理対象ブロック内の予測画像のみに対してフィルタ処理を行う構成としてもよい。
言い換えると、図56のパイプライン処理PL5におけるStage5では、処理済みのCUの残差画像と予測画像とを加算することで生成された再構成画像が、予測画フィルタ処理St51bにフィードバックされる。そして、予測画フィルタ処理St51bでは、その再構成画像と、MC処理St4によって生成されたインター予測画像とを用いた処理が行われる。つまり、インター予測画像の画素が、再構成画像の画素を用いてフィルタリングされる。しかし、この予測処理の第5の例は、このようなフィードバックに限定されるものではない。つまり、予測画フィルタ処理St51bへの再構成画像のフィードバックが行われなくてもよい。この場合には、予測画フィルタ処理St51bでは、その再構成画像を用いることなく、MC処理St4によって生成されたインター予測画像に対して処理が行われる。
同様に、BIO処理St51cには、再構成画像のフィードバックは行われない。したがって、Stage5を、BIO処理St51cを含むステージと、そのBIO処理St51c以外の予測画フィルタ処理St51bおよび再構成処理St56などの幾つかの処理を含むステージとに分割することができる。しかし、Stage5を2つのステージに分割すると、ステージの追加によって、必要とされるメモリおよび回路が増加する可能性がある。しかし、パイプライン処理PL5では、予測画フィルタ処理St51bおよびBIO処理St51cは、再構成処理St56などの幾つかの処理と同じステージで行われるため、メモリおよび回路の増加を回避できる可能性を高めることができる。
このように予測処理の第5の例では、図55および図56に示す処理によって、1つのVPDUに複数のCUが包含されるような符号化が行われる場合においても、全てのステージの処理を予め指定された処理時間内に完了させることができる。その結果、符号化性能の劣化を抑制しながら処理の高速化を図る可能性を高めることができる。また、上述のように、予測画フィルタ処理St51bおよびBIO処理St51cが、再構成処理St56などの処理と同じステージに実装されているため、符号化装置100および復号装置200の回路規模の増加を抑制できる可能性を高めることができる。
以上のように、本実施の形態における復号装置200は、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの予測画像を生成し、その予測画像に対して更新処理を適用することによって、処理対象ブロックの最終的な予測画像を生成する。ここで、その更新処理の候補は、第1の処理と第2の処理を含み、第1の処理は、BDOF(bi-directional optical flow)処理であり、第2の処理は、予測画像の画素値を更新するフィルタ処理である。そして、更新処理の適用では、第1の処理及び第2の処理が排他的に適用される。例えば、復号装置200は、最終的な予測画像の生成では、更新処理が第1の処理である場合には、予測画像に第2の処理を適用することなく、第1の処理を適用して、最終的な予測画像を生成する。また、復号装置200は、更新処理が第2の処理である場合には、予測画像に第1の処理を適用することなく、第2の処理を適用して、最終的な予測画像を生成する。なお、処理対象ブロックは、例えば処理対象CUである。また、インター予測モードにおいて生成される予測画像はインター予測画像である。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、符号化画像を復号するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
また、復号装置200は、更新処理の適用では、第2の処理を予測画像に適用するか否かを判定し、第2の処理を適用すると判定した場合に、第2の処理を更新処理とする。一方、復号装置200は、第2の処理を適用しないと判定した場合に、第1の処理を予測画像に適用するか否かを判定し、第1の処理を適用すると判定した場合に、第1の処理を更新処理とする。
これにより、更新処理を適切に行うことができる可能性を高めることができる。
また、第2の処理は、予測画像に基づいて、その予測画像の画素値を更新する。例えば、第2の処理では、再構成画像を用いずに処理が行われる。または、第2の処理は、(1)予測画像、及び、(2)処理対象ブロックと異なるブロックの再構成画像に基づいて、その予測画像の画素値を更新する。
これにより、第2の処理による適切な画素値の更新の可能性を高めることができる。
また、復号装置200は、符号化画像を復号するためのパイプライン処理に含まれる1つのステージであって、生成された最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、第1の処理および第2の処理を排他的に実行する。
これにより、例えば、第1の処理と第2の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、復号装置200の回路規模の増加を抑制することができる可能性を高めることができる。
ここで、更新処理の候補は、第1の処理および第2の処理とは異なる第3の処理をさらに含んでもよい。第3の処理は、処理対象ブロックのイントラ予測で生成された第2の予測画像と、インター予測モードで生成した予測画像である第1の予測画像とを混合する処理である。この場合、更新処理の適用では、第1の処理、第2の処理及び第3の処理が排他的に適用される。例えば、第3の処理は、上述のイントラ/インター混合処理である。
これにより、適用される更新処理の種類を増やすことができ、例えば予測画像を高精度に生成することができる。
また、復号装置200は、更新処理の適用では、(1)インター予測モードが、第3の処理を選択可能なインター予測モードであった場合、第3の処理を予測画像に適用するか否かを判定してもよい。そして、復号装置200は、第3の処理を適用すると判定した場合に、第3の処理を更新処理とし、第3の処理を適用しないと判定した場合に、第1の処理を予測画像に適用するか否かを判定する。そして、復号装置200は、第1の処理を適用すると判定した場合に、その第1の処理を更新処理とする。一方、復号装置200は、(2)インター予測モードが、第3の処理を選択できないインター予測モードであった場合には、第2の処理を予測画像に適用するか否かを判定してもよい。そして、復号装置200は、第2の処理を適用すると判定した場合に、第2の処理を更新処理とし、第2の処理を適用しないと判定した場合に、第1の処理を予測画像に適用するか否かを判定する。そして、復号装置200は、第1の処理を適用すると判定した場合に、その第1の処理を更新処理とする。
これにより、更新処理を適切に行うことができる可能性を高めることができる。
また、復号装置200は、符号化画像を復号するためのパイプライン処理に含まれる1つのステージであって、生成された最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、第1の処理、第2の処理および第3の処理を排他的に実行する。
これにより、例えば、第1の処理と第2の処理と第3の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、復号装置200の回路規模の増加を抑制することができる可能性を高めることができる。
また、復号装置200は、生成した最終的な予測画像と残差信号を加算した再構成画像に含まれる画素値を更新するフィルタ処理を行う。例えば、そのフィルタ処理は、デブロッキング・フィルタなどのループフィルタである。
これにより、再構成画像の歪みなどを除去することができる。
このような復号装置200と同様に、本実施の形態における符号化装置100は、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの予測画像を生成し、その予測画像に対して更新処理を適用することによって、処理対象ブロックの最終的な予測画像を生成する。ここで、その更新処理の候補は、第1の処理と第2の処理を含み、第1の処理は、BDOF(bi-directional optical flow)処理であり、第2の処理は、予測画像の画素値を更新するフィルタ処理である。そして、更新処理の適用では、第1の処理及び第2の処理が排他的に適用される。例えば、符号化装置100は、最終的な予測画像の生成では、更新処理が第1の処理である場合には、予測画像に第2の処理を適用することなく、第1の処理を適用して、最終的な予測画像を生成する。また、符号化装置100は、更新処理が第2の処理である場合には、予測画像に第1の処理を適用することなく、第2の処理を適用して、最終的な予測画像を生成する。なお、処理対象ブロックは、例えば処理対象CUである。また、インター予測モードにおいて生成される予測画像はインター予測画像である。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、画像を符号化するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
また、符号化装置100は、更新処理の適用では、第2の処理を予測画像に適用するか否かを判定し、第2の処理を適用すると判定した場合に、第2の処理を更新処理とする。一方、符号化装置100は、第2の処理を適用しないと判定した場合に、第1の処理を予測画像に適用するか否かを判定し、第1の処理を適用すると判定した場合に、第1の処理を更新処理とする。
これにより、更新処理を適切に行うことができる可能性を高めることができる。
また、第2の処理は、予測画像に基づいて、その予測画像の画素値を更新する。例えば、第2の処理では、再構成画像を用いずに処理が行われる。または、第2の処理は、(1)予測画像、及び、(2)処理対象ブロックと異なるブロックの再構成画像に基づいて、その予測画像の画素値を更新する。
これにより、第2の処理による適切な画素値の更新の可能性を高めることができる。
また、符号化装置100は、画像を符号化するためのパイプライン処理に含まれる1つのステージであって、生成された最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、第1の処理および第2の処理を排他的に実行する。
これにより、例えば、第1の処理と第2の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、符号化装置100の回路規模の増加を抑制することができる可能性を高めることができる。
ここで、更新処理の候補は、第1の処理および第2の処理とは異なる第3の処理をさらに含んでもよい。第3の処理は、処理対象ブロックのイントラ予測で生成された第2の予測画像と、インター予測モードで生成した予測画像である第1の予測画像とを混合する処理である。この場合、更新処理の適用では、第1の処理、第2の処理及び第3の処理が排他的に適用される。例えば、第3の処理は、イントラ/インター混合処理であってもよい。
これにより、適用される更新処理の種類を増やすことができ、例えば予測画像を高精度に生成することができる。
また、符号化装置100は、更新処理の適用では、(1)インター予測モードが、第3の処理を選択可能なインター予測モードであった場合、第3の処理を予測画像に適用するか否かを判定してもよい。そして、符号化装置100は、第3の処理を適用すると判定した場合に、第3の処理を更新処理とし、第3の処理を適用しないと判定した場合に、第1の処理を予測画像に適用するか否かを判定する。そして、符号化装置100は、第1の処理を適用すると判定した場合に、その第1の処理を更新処理とする。一方、符号化装置100は、(2)インター予測モードが、第3の処理を選択できないインター予測モードであった場合には、第2の処理を予測画像に適用するか否かを判定してもよい。そして、符号化装置100は、第2の処理を適用すると判定した場合に、第2の処理を更新処理とし、第2の処理を適用しないと判定した場合に、第1の処理を予測画像に適用するか否かを判定する。そして、符号化装置100は、第1の処理を適用すると判定した場合に、その第1の処理を更新処理とする。
これにより、更新処理を適切に行うことができる可能性を高めることができる。
また、符号化装置100は、画像を符号化するためのパイプライン処理に含まれる1つのステージであって、生成された最終的な予測画像と残差画像とを加算することによって再構成画像を生成する再構成処理と同じステージで、第1の処理、第2の処理および第3の処理を排他的に実行する。
これにより、例えば、第1の処理と第2の処理と第3の処理とが再構成処理と異なるステージで行われる場合と比べて、パイプライン処理に含まれるステージの数を減らすことができる。その結果、符号化装置100の回路規模の増加を抑制することができる可能性を高めることができる。
また、符号化装置100は、生成した最終的な予測画像と残差信号を加算した再構成画像に含まれる画素値を更新するフィルタ処理を行う。例えば、そのフィルタ処理は、デブロッキング・フィルタなどのループフィルタである。
これにより、再構成画像の歪みなどを除去することができる。
[予測処理の第6の例]
図57は、本実施の形態における復号装置200によって行われる予測処理の第6の例を示すフローチャートである。なお、このフローチャートは、予測処理の第6の例におけるCUに対する処理の流れを示す。
復号装置200は、ステップS11~S13、S14d、S15a、S16d、およびS17aの処理をCU単位で行う。具体的には、まず、復号装置200は、処理対象CUに対してMVの導出を行い(ステップS11)、さらに、DMVR処理を行う(ステップS12)。このDMVR処理では、復号装置200は、ステップS11で導出されたMVの周辺を探索することによってそのMVの補正を行う。そして、復号装置200は、補正されたMVを用いてMC処理、すなわち動き補償処理を行う(ステップS13)。これにより、処理対象CUのインター予測画像が得られる。
次に、復号装置200は、処理対象CUのインター予測画像に対してOBMC処理を適用するかどうかを判定する(ステップS14d)。ここで、復号装置200は、OBMC処理を適用すると判定すると(ステップS14dのYes)、MC処理によって得られたインター予測画像に対してOBMC処理を行うことによって、最終的な予測画像を生成する(ステップS16d)。
一方、復号装置200は、OBMC処理を適用しないと判定すると(ステップS14dのNo)、さらに、イントラ/インター混合処理を適用するかどうかを判定する(ステップS15a)。ここで、復号装置200は、イントラ/インター混合処理を適用すると判定すると(ステップS15aのYes)、MC処理によって得られたインター予測画像と、イントラ予測処理によって得られたイントラ予測画像とを混合する(ステップS17a)。この混合によって、最終的な予測画像が生成される。一方、復号装置200は、イントラ/インター混合処理を適用しないと判定すると(ステップS15aのNo)、MC処理によって得られたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
なお、図57のフローチャートでは、復号装置200は、まず、インター予測画像に対してOBMC処理を適用するかどうかを判定してから、次に、イントラ/インター混合処理を適用するかどうかを判定しているが、その逆の順でそれらの判定を行ってもよい。
なお、図57のフローチャートは一例であって、このフローチャートに含まれる少なくとも1つのステップを除いたり、このフローチャートに他の処理または条件判定のステップを追加したりしてもよい。
なお、図57に示すフローチャートの処理は、符号化装置100によって行われてもよい。つまり、符号化装置100と復号装置200とは、互に同様の予測処理を行い、その予測処理を用いて、画像をストリームに符号化するか、そのストリームを画像に復号するかに違いがある。したがって、図57のフローチャートに示される予測処理の流れは、符号化装置100においても基本的に共通である。
なお、図57のフローチャートにおける、OBMC処理を適用するかどうかの判定(ステップS14d)、およびイントラ/インター混合処理を適用するかどうかの判定(ステップS15a)は、フラグの解析によって行われてもよい。つまり、復号装置200は、例えば、ストリームに記述されているフラグを解析することによって、それらの判定を行ってもよい。また、符号化装置100は、例えば、R-D最適化モデルを用いたコストを算出することによって、それらの判定を行ってもよい。つまり、符号化装置100は、上述のそれぞれの判定において、判定対象の処理を適用することに得られる予測画像のコストと、その処理を適用しないことによって得られる予測画像のコストとを算出する。そして、符号化装置100は、それらのコストのうちの小さい方のコストに対応する予測画像が最終的な予測画像として用いられるように、上述の判定を行う。
図58は、本実施の形態における復号装置200によって行われる予測処理の第6の例をパイプライン処理の一構成例として概略的に示す図である。
図58に示すパイプライン処理PL6は、Stage1~6を含む。なお、Stage2以降の各ステージの処理は、例えばVPDU単位で行われる。
このパイプライン処理PL6のStage1~6のうちのStage5は、図50に示すパイプライン処理PL2のStage5とは異なる。つまり、パイプライン処理PL6のStage5では、LIC処理St51aの代わりにOBMC処理St51dが行われる。さらに、このOBMC処理St51dには、残差画像と予測画像とを加算することで生成された再構成画像がフィードバックされていない。
このようなパイプライン処理PL6のStage5では、OBMC処理St51dを適用しない場合に、イントラ/インター混合処理St53が行われる。言い換えれば、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、OBMC処理St51dを行うことなく、そのインター予測画像とイントラ予測画像とを混合することによって、イントラ/インター混合予測画像を生成する。一方、復号装置200は、MC処理St4によって生成されたインター予測画像に対してOBMC処理St51dを適用する場合は、そのOBMC処理St51dが適用されたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
このようなパイプライン処理PL6では、イントラ/インター混合処理St53が行われる時点では、そのイントラ/インター混合処理St53に必要なインター予測画像の生成がStage4で既に完了している。したがって、図48に示すパイプライン処理PL1では必要とされていたインター予測処理の完了の待機を、パイプライン処理PL6では不要とすることができる。したがって、イントラ予測処理St52が完了した時点ですぐにイントラ/インター混合処理St53を行うことが可能となる。その結果、余分な待ち時間の発生を抑えることができる。つまり、イントラ/インター混合処理St53を行う場合のStage5の処理時間を、イントラ/インター混合処理St53を行わない場合のStage5の処理時間とほぼ同等の処理時間にすることができる。
なお、図58に示すパイプライン処理PL6は一例であって、このパイプライン処理PL6に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL6に他の処理を追加したり、ステージの区切り方を変えてもよい。
なお、図58のパイプライン処理PL6におけるStage5では、処理済みのCUの残差画像と予測画像とを加算することで生成された再構成画像は、OBMC処理St51dにフィードバックされない。したがって、Stage5を、OBMC処理St51dを行うステージと、そのOBMC処理St51d以外の再構成処理St56などの幾つかの処理を含むステージとに分割することができる。しかし、Stage5を2つのステージに分割すると、ステージの追加によって、必要とされるメモリおよび回路が増加する可能性がある。しかし、パイプライン処理PL6では、OBMC処理St51dは、再構成処理St56などの幾つかの処理と同じステージで行われるため、メモリおよび回路の増加を回避できる可能性を高めることができる。
このように予測処理の第6の例では、図57および図58に示す処理によって、1つのVPDUに複数のCUが包含されるような符号化が行われる場合においても、全てのステージの処理を予め指定された処理時間内に完了させることができる。その結果、符号化性能の劣化を抑制しながら処理の高速化を図る可能性を高めることができる。また、上述のように、OBMC処理St51dが、再構成処理St56などの処理と同じステージに実装されているため、符号化装置100および復号装置200の回路規模の増加を抑制できる可能性を高めることができる。
[予測処理の第7の例]
図59は、本実施の形態における復号装置200によって行われる予測処理の第7の例を示すフローチャートである。なお、このフローチャートは、予測処理の第7の例におけるCUに対する処理の流れを示す。
復号装置200は、ステップS11~S13、S14d、S15b、S16d、およびS17bの処理をCU単位で行う。具体的には、まず、復号装置200は、処理対象CUに対してMVの導出を行い(ステップS11)、さらに、DMVR処理を行う(ステップS12)。このDMVR処理では、復号装置200は、ステップS11で導出されたMVの周辺を探索することによってそのMVの補正を行う。そして、復号装置200は、補正されたMVを用いてMC処理、すなわち動き補償処理を行う(ステップS13)。これにより、処理対象CUのインター予測画像が得られる。
次に、復号装置200は、処理対象CUのインター予測画像に対してOBMC処理を適用するかどうかを判定する(ステップS14d)。ここで、復号装置200は、OBMC処理を適用すると判定すると(ステップS14dのYes)、MC処理によって得られたインター予測画像に対してOBMC処理を行うことによって、最終的な予測画像を生成する(ステップS16d)。
一方、復号装置200は、OBMC処理を適用しないと判定すると(ステップS14dのNo)、さらに、フィルタ処理(予測画フィルタ処理ともいう)を適用するかどうかを判定する(ステップS15b)。ここで、復号装置200は、フィルタ処理を適用すると判定すると(ステップS15bのYes)、MC処理によって得られたインター予測画像に対してフィルタ処理を行う(ステップS17b)。このフィルタ処理によって、最終的な予測画像が生成される。一方、復号装置200は、フィルタ処理を適用しないと判定すると(ステップS15bのNo)、MC処理によって得られたインター予測画像を、そのまま最終的な予測画像として再構成画像の生成に用いる。
なお、図59のフローチャートでは、復号装置200は、まず、インター予測画像に対してOBMC処理を適用するかどうかを判定してから、次に、フィルタ処理を適用するかどうかを判定しているが、その逆の順でそれらの判定を行ってもよい。
なお、図59のフローチャートは一例であって、このフローチャートに含まれる少なくとも1つのステップを除いたり、このフローチャートに他の処理または条件判定のステップを追加したりしてもよい。
なお、図59に示すフローチャートの処理は、符号化装置100によって行われてもよい。つまり、符号化装置100と復号装置200とは、互に同様の予測処理を行い、その予測処理を用いて、画像をストリームに符号化するか、そのストリームを画像に復号するかに違いがある。したがって、図59のフローチャートに示される予測処理の流れは、符号化装置100においても基本的に共通である。
なお、図59のフローチャートにおける、OBMC処理を適用するかどうかの判定(ステップS14d)、およびフィルタ処理を適用するかどうかの判定(ステップS15b)は、フラグの解析によって行われてもよい。つまり、復号装置200は、例えば、ストリームに記述されているフラグを解析することによって、それらの判定を行ってもよい。また、符号化装置100は、例えば、R-D最適化モデルを用いたコストを算出することによって、それらの判定を行ってもよい。つまり、符号化装置100は、上述のそれぞれの判定において、判定対象の処理を適用することによって得られる予測画像のコストと、その処理を適用しないことによって得られる予測画像のコストとを算出する。そして、符号化装置100は、それらのコストのうちの小さい方のコストに対応する予測画像が最終的な予測画像として用いられるように、上述の判定を行う。
図60は、本実施の形態における復号装置200によって行われる予測処理の第7の例をパイプライン処理の一構成例として概略的に示す図である。
図60に示すパイプライン処理PL7は、Stage1~6を含む。なお、Stage2以降の各ステージの処理は、例えばVPDU単位で行われる。
このパイプライン処理PL7のStage1~6のうちのStage5は、図50に示すパイプライン処理PL2のStage5とは異なる。つまり、パイプライン処理PL7のStage5では、MC処理St4によって生成されたインター予測画像に対して、OBMC処理St51dか予測画フィルタ処理St51bかのどちらか一方のみが適用されることによって、最終的な予測画像が生成される。なお、予測画フィルタ処理St51bは、上述のフィルタ処理である。
つまり、パイプライン処理PL7のStage5では、予測画フィルタ処理St51bを適用しない場合に、OBMC処理St51dが行われ、OBMC処理St51dを適用しない場合に、予測画フィルタ処理St51bが行われる。言い換えれば、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、予測画フィルタ処理St51bを行うことなく、OBMC処理St51dを適用することによって、最終的な予測画像を生成する。または、復号装置200は、MC処理St4によって生成されたインター予測画像に対して、OBMC処理St51dを行うことなく、予測画フィルタ処理St51bを適用することによって、最終的な予測画像を生成する。
OBMC処理St51dと予測画フィルタ処理St51bとを同時に適用した場合には、その2つの処理が連続して行われるため、Stage5の処理時間または処理サイクル数が増加する。したがって、このような場合には、規定の処理時間内にStage5の処理を完了させることができなくなってしまう可能性がある。しかし、図60に示すパイプライン処理PL7では、OBMC処理St51dと予測画フィルタ処理St51bとのうちの、何れか一方しか行われない。したがって、Stage5の処理時間または処理サイクル数の増加を抑えて、Stage5の処理を規定の処理時間内に完了させることができる。
なお、図60に示すパイプライン処理PL7は一例であって、このパイプライン処理PL7に含まれる少なくとも1つの処理を除いたり、このパイプライン処理PL7に他の処理を追加したり、ステージの区切り方を変えてもよい。
なお、図60のパイプライン処理PL7におけるStage5では、処理済みのCUの残差画像と予測画像とを加算することで生成された再構成画像が、予測画フィルタ処理St51bにフィードバックされる。そして、予測画フィルタ処理St51bでは、その再構成画像と、MC処理St4によって生成されたインター予測画像とを用いた処理が行われる。つまり、インター予測画像の境界周辺の画素が、再構成画像の画素を用いてフィルタリングされる。しかし、この予測処理の第7の例は、このようなフィードバックに限定されるものではない。つまり、予測画フィルタ処理St51bへの再構成画像のフィードバックが行われなくてもよい。この場合には、予測画フィルタ処理St51bでは、その再構成画像を用いることなく、MC処理St4によって生成されたインター予測画像に対して処理が行われる。
同様に、OBMC処理St51dには、再構成画像のフィードバックは行われない。したがって、Stage5を、OBMC処理St51dを含むステージと、そのOBMC処理St51d以外の予測画フィルタ処理St51bおよび再構成処理St56などの幾つかの処理を含むステージとに分割することができる。しかし、Stage5を2つのステージに分割すると、ステージの追加によって、必要とされるメモリおよび回路が増加する可能性がある。しかし、パイプライン処理PL5では、予測画フィルタ処理St51bおよびOBMC処理St51dは、再構成処理St56などの幾つかの処理と同じステージで行われるため、メモリおよび回路の増加を回避できる可能性を高めることができる。
このように予測処理の第7の例では、図59および図60に示す処理によって、1つのVPDUに複数のCUが包含されるような符号化が行われる場合においても、全てのステージの処理を予め指定された処理時間内に完了させることができる。その結果、符号化性能の劣化を抑制しながら処理の高速化を図る可能性を高めることができる。また、上述のように、予測画フィルタ処理St51bおよびOBMC処理St51dが、再構成処理St56などの処理と同じステージに実装されているため、符号化装置100および復号装置200の回路規模の増加を抑制できる可能性を高めることができる。
[変形例]
なお、本実施の形態における予測処理の第1の例、第2の例、第3の例、第4の例、第5の例、第6の例、第7の例のうち複数の例を組み合わせてもよい。例えば、LIC処理、BIO処理、OBMC処理、予測画フィルタ処理、およびイントラ/インター混合処理を含む5つの処理を、再構成処理と同じステージに実装してもよい。そして、それらの5つの処理のうち1つだけを選択してインター予測画像に適用してもよい。または、その5つの処理のうちの少なくとも2つの処理を、再構成処理と同じステージに実装してもよい。そして、その少なくとも2つの処理から1つだけを選択してインター予測画像に適用してもよい。また、上述の例では5つの処理から1つの処理だけが選択されるが、6つ以上の処理から1つの処理だけが選択されてインター予測画像に適用されてもよい。この場合には、LIC処理、BIO処理、OBMC処理、予測画フィルタ処理、およびイントラ/インター混合処理とは異なる他の処理が、上述の6つ以上の処理に含まれてもよい。さらに、選択される候補となる処理は、LIC処理、BIO処理、OBMC処理、予測画フィルタ処理、およびイントラ/インター混合処理に限らず、どのような処理であってもよい。
[構成及び処理の代表例]
上記に示された符号化装置100及び復号装置200の構成及び処理の代表例を以下に示す。
図61は、符号化処理および復号処理の一例を示すフローチャートである。例えば、符号化装置100および復号装置200のそれぞれは、回路、及び、回路に接続されたメモリを備える。符号化装置100が備える回路及びメモリは、図40に示されるプロセッサa1及びメモリa2に対応していてもよく、復号装置200が備える回路及びメモリは、図46に示されるプロセッサb1及びメモリb2に対応していてもよい。符号化装置100および復号装置200のそれぞれの回路は、動作において、以下を行う。
具体的には、予測処理の第4の例のように、その回路は、動作において、ステップS1およびステップS2aの処理を行う。より具体的には、回路は、まず、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの第1の予測画像を生成する(ステップS1)。
次に、その回路は、第1の予測画像に対して更新処理を適用することによって、処理対象ブロックの最終的な予測画像を生成する(ステップS2a)。ここで、その更新処理の候補は、第1の処理と第2の処理を含む。また、第1の処理は、BDOF(bi-directional optical flow)処理、すなわち上述のBIO処理である。また、第2の処理は、上述のイントラ/インター混合処理である。つまり、第2の処理は、処理対象ブロックのイントラ予測で生成された第2の予測画像と上述の第1の予測画像とを混合する処理である。そして、更新処理の適用では、第1の処理及び第2の処理が排他的に適用される。つまり、回路は、更新処理が第1の処理である場合には、第1の予測画像に第2の処理を適用することなく、第1の処理を適用することによって、最終的な予測画像を生成する。一方、回路は、更新処理が第2の処理である場合には、第1の予測画像に第1の処理を適用することなく、第2の処理を適用することによって、最終的な予測画像を生成する。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、インター予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、画像を符号化するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
図62は、符号化処理および復号処理の他の例を示すフローチャートである。例えば、符号化装置100および復号装置200のそれぞれは、回路、及び、回路に接続されたメモリを備える。符号化装置100が備える回路及びメモリは、図40に示されるプロセッサa1及びメモリa2に対応していてもよく、復号装置200が備える回路及びメモリは、図46に示されるプロセッサb1及びメモリb2に対応していてもよい。符号化装置100および復号装置200のそれぞれの回路は、動作において、以下を行う。
具体的には、予測処理の第5の例のように、その回路は、動作において、ステップS1およびステップS2bの処理を行う。より具体的には、回路は、まず、インター予測モードにおいて、導出した動きベクトルに基づいて処理対象ブロックの予測画像を生成する(ステップS1)。
次に、その回路は、その予測画像に対して更新処理を適用することによって、処理対象ブロックの最終的な予測画像を生成する(ステップS2b)。ここで、その更新処理の候補は、第1の処理と第2の処理を含む。また、第1の処理は、BDOF(bi-directional optical flow)処理、すなわち上述のBIO処理である。また、第2の処理は、予測画像の画素値を更新するフィルタ処理である。そして、更新処理の適用では、第1の処理及び第2の処理が排他的に適用される。つまり、回路は、更新処理が第1の処理である場合には、予測画像に第2の処理を適用することなく、第1の処理を適用することによって、最終的な予測画像を生成する。一方、回路は、更新処理が第2の処理である場合には、予測画像に第1の処理を適用することなく、第2の処理を適用することによって、最終的な予測画像を生成する。
これにより、第1の処理が更新処理であっても、第2の処理が更新処理であっても、第1の処理および第2の処理のうちの更新処理以外の処理は、インター予測画像に対して適用されない。つまり、その更新処理以外の処理の適用は禁止される。したがって、例えば、画像を符号化するためのパイプライン処理に含まれる1つのステージに第1の処理と第2の処理とが含まれている場合に、その第1の処理と第2の処理とを共に行うことによって、そのステージの処理にかかる時間が長くなってしまうことを抑制することができる可能性を高めることができる。すなわち、処理時間増加の抑制の可能性を高めることができる。
[その他の例]
上述された各例における符号化装置100及び復号装置200は、それぞれ、画像符号化装置及び画像復号装置として利用されてもよいし、動画像符号化装置及び動画像復号装置として利用されてもよい。
また、符号化装置100及び復号装置200は、上述された複数の処理対象要素のうち一部の処理対象要素のみを処理(より具体的には符号化又は復号)し、他の装置が、他の処理対象要素を処理(より具体的には符号化又は復号)してもよい。また、符号化装置100及び復号装置200は、上述された複数の構成要素のうち一部の構成要素のみを備え、他の装置が、他の構成要素を備えてもよい。
また、上述された各例の少なくとも一部が、符号化方法として利用されてもよいし、復号方法として利用されてもよいし、予測方法として利用されてもよいし、その他の方法として利用されてもよい。
また、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPU又はプロセッサなどのプログラム実行部が、ハードディスク又は半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
具体的には、符号化装置100及び復号装置200のそれぞれは、処理回路(Processing Circuitry)と、当該処理回路に電気的に接続された、当該処理回路からアクセス可能な記憶装置(Storage)とを備えていてもよい。例えば、処理回路はプロセッサa1又はb1に対応し、記憶装置はメモリa2又はb2に対応する。
処理回路は、専用のハードウェア及びプログラム実行部の少なくとも一方を含み、記憶装置を用いて処理を実行する。また、記憶装置は、処理回路がプログラム実行部を含む場合には、当該プログラム実行部により実行されるソフトウェアプログラムを記憶する。
ここで、上述された符号化装置100又は復号装置200などを実現するソフトウェアは、図47~図62に示す処理をコンピュータに実行させるプログラムである。
また、各構成要素は、上述の通り、回路であってもよい。これらの回路は、全体として1つの回路を構成してもよいし、それぞれ別々の回路であってもよい。また、各構成要素は、汎用的なプロセッサで実現されてもよいし、専用のプロセッサで実現されてもよい。
また、特定の構成要素が実行する処理を別の構成要素が実行してもよい。また、処理を実行する順番が変更されてもよいし、複数の処理が並行して実行されてもよい。また、符号化復号装置が、符号化装置100及び復号装置200を備えていてもよい。
また、説明に用いられた第1及び第2等の序数は、適宜、付け替えられてもよい。また、構成要素などに対して、序数が新たに与えられてもよいし、取り除かれてもよい。
以上、符号化装置100及び復号装置200の態様について、複数の例に基づいて説明したが、符号化装置100及び復号装置200の態様は、これらの例に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を各例に施したものや、異なる例における構成要素を組み合わせて構築される形態も、符号化装置100及び復号装置200の態様の範囲内に含まれてもよい。
ここで開示された1以上の態様を本開示における他の態様の少なくとも一部と組み合わせて実施してもよい。また、ここで開示された1以上の態様のフローチャートに記載の一部の処理、装置の一部の構成、シンタックスの一部などを他の態様と組み合わせて実施してもよい。
[実施及び応用]
以上の各実施の形態において、機能的又は作用的なブロックの各々は、通常、MPU(micro proccessing unit)及びメモリ等によって実現可能である。また、機能ブロックの各々による処理は、ROM等の記録媒体に記録されたソフトウェア(プログラム)を読み出して実行するプロセッサなどのプログラム実行部として実現されてもよい。当該ソフトウェアは、配布されてもよい。当該ソフトウェアは、半導体メモリなどの様々な記録媒体に記録されてもよい。なお、各機能ブロックをハードウェア(専用回路)によって実現することも可能である。ハードウェア及びソフトウェアの様々な組み合わせが採用され得る。
各実施の形態において説明した処理は、単一の装置(システム)を用いて集中処理することによって実現してもよく、又は、複数の装置を用いて分散処理することによって実現してもよい。また、上記プログラムを実行するプロセッサは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、又は分散処理を行ってもよい。
本開示の態様は、以上の実施例に限定されることなく、種々の変更が可能であり、それらも本開示の態様の範囲内に包含される。
さらにここで、上記各実施の形態で示した動画像符号化方法(画像符号化方法)又は動画像復号化方法(画像復号方法)の応用例、及び、その応用例を実施する種々のシステムを説明する。このようなシステムは、画像符号化方法を用いた画像符号化装置、画像復号方法を用いた画像復号装置、又は、両方を備える画像符号化復号装置を有することを特徴としてもよい。このようなシステムの他の構成について、場合に応じて適切に変更することができる。
[使用例]
図63は、コンテンツ配信サービスを実現する適切なコンテンツ供給システムex100の全体構成を示す図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ、図示された例における固定無線局である基地局ex106、ex107、ex108、ex109、ex110が設置されている。
このコンテンツ供給システムex100では、インターネットex101に、インターネットサービスプロバイダex102又は通信網ex104、及び基地局ex106~ex110を介して、コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、及びスマートフォンex115などの各機器が接続される。当該コンテンツ供給システムex100は、上記のいずれかの装置を組合せて接続するようにしてもよい。種々の実施において、基地局ex106~ex110を介さずに、各機器が電話網又は近距離無線等を介して直接的又は間接的に相互に接続されていてもよい。さらに、ストリーミングサーバex103は、インターネットex101等を介して、コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、及びスマートフォンex115などの各機器と接続されてもよい。また、ストリーミングサーバex103は、衛星ex116を介して、飛行機ex117内のホットスポット内の端末等と接続されてもよい。
なお、基地局ex106~ex110の代わりに、無線アクセスポイント又はホットスポット等が用いられてもよい。また、ストリーミングサーバex103は、インターネットex101又はインターネットサービスプロバイダex102を介さずに直接通信網ex104と接続されてもよいし、衛星ex116を介さず直接飛行機ex117と接続されてもよい。
カメラex113はデジタルカメラ等の静止画撮影、及び動画撮影が可能な機器である。また、スマートフォンex115は、2G、3G、3.9G、4G、そして今後は5Gと呼ばれる移動通信システムの方式に対応したスマートフォン機、携帯電話機、又はPHS(Personal Handy-phone System)等である。
家電ex114は、冷蔵庫、又は家庭用燃料電池コージェネレーションシステムに含まれる機器等である。
コンテンツ供給システムex100では、撮影機能を有する端末が基地局ex106等を通じてストリーミングサーバex103に接続されることで、ライブ配信等が可能になる。ライブ配信では、端末(コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、スマートフォンex115、及び飛行機ex117内の端末等)は、ユーザが当該端末を用いて撮影した静止画又は動画コンテンツに対して上記各実施の形態で説明した符号化処理を行ってもよく、符号化により得られた映像データと、映像に対応する音を符号化した音データと多重化してもよく、得られたデータをストリーミングサーバex103に送信してもよい。即ち、各端末は、本開示の一態様に係る画像符号化装置として機能する。
一方、ストリーミングサーバex103は要求のあったクライアントに対して送信されたコンテンツデータをストリーム配信する。クライアントは、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、スマートフォンex115、又は飛行機ex117内の端末等である。配信されたデータを受信した各機器は、受信したデータを復号化処理して再生してもよい。即ち、各機器は、本開示の一態様に係る画像復号装置として機能してもよい。
[分散処理]
また、ストリーミングサーバex103は複数のサーバ又は複数のコンピュータであって、データを分散して処理したり記録したり配信するものであってもよい。例えば、ストリーミングサーバex103は、CDN(Contents Delivery Network)により実現され、世界中に分散された多数のエッジサーバとエッジサーバ間をつなぐネットワークによりコンテンツ配信が実現されていてもよい。CDNでは、クライアントに応じて物理的に近いエッジサーバが動的に割り当てられ得る。そして、当該エッジサーバにコンテンツがキャッシュ及び配信されることで遅延を減らすことができる。また、いくつかのタイプのエラーが発生した場合又はトラフィックの増加などにより通信状態が変わる場合に複数のエッジサーバで処理を分散したり、他のエッジサーバに配信主体を切り替えたり、障害が生じたネットワークの部分を迂回して配信を続けることができるので、高速かつ安定した配信が実現できる。
また、配信自体の分散処理にとどまらず、撮影したデータの符号化処理を各端末で行ってもよいし、サーバ側で行ってもよいし、互いに分担して行ってもよい。一例として、一般に符号化処理では、処理ループが2度行われる。1度目のループでフレーム又はシーン単位での画像の複雑さ、又は、符号量が検出される。また、2度目のループでは画質を維持して符号化効率を向上させる処理が行われる。例えば、端末が1度目の符号化処理を行い、コンテンツを受け取ったサーバ側が2度目の符号化処理を行うことで、各端末での処理負荷を減らしつつもコンテンツの質と効率を向上させることができる。この場合、ほぼリアルタイムで受信して復号する要求があれば、端末が行った一度目の符号化済みデータを他の端末で受信して再生することもできるので、より柔軟なリアルタイム配信も可能になる。
他の例として、カメラex113等は、画像から特徴量(特徴又は特性の量)を抽出し、特徴量に関するデータをメタデータとして圧縮してサーバに送信する。サーバは、例えば特徴量からオブジェクトの重要性を判断して量子化精度を切り替えるなど、画像の意味(又は内容の重要性)に応じた圧縮を行う。特徴量データはサーバでの再度の圧縮時の動きベクトル予測の精度及び効率向上に特に有効である。また、端末でVLC(可変長符号化)などの簡易的な符号化を行い、サーバでCABAC(コンテキスト適応型二値算術符号化方式)など処理負荷の大きな符号化を行ってもよい。
さらに他の例として、スタジアム、ショッピングモール、又は工場などにおいては、複数の端末によりほぼ同一のシーンが撮影された複数の映像データが存在する場合がある。この場合には、撮影を行った複数の端末と、必要に応じて撮影をしていない他の端末及びサーバを用いて、例えばGOP(Group of Picture)単位、ピクチャ単位、又はピクチャを分割したタイル単位などで符号化処理をそれぞれ割り当てて分散処理を行う。これにより、遅延を減らし、よりリアルタイム性を実現できる。
複数の映像データはほぼ同一シーンであるため、各端末で撮影された映像データを互いに参照し合えるように、サーバで管理及び/又は指示をしてもよい。また、各端末からの符号化済みデータを、サーバが受信し複数のデータ間で参照関係を変更、又はピクチャ自体を補正或いは差し替えて符号化しなおしてもよい。これにより、一つ一つのデータの質と効率を高めたストリームを生成できる。
さらに、サーバは、映像データの符号化方式を変更するトランスコードを行ったうえで映像データを配信してもよい。例えば、サーバは、MPEG系の符号化方式をVP系(例えばVP9)に変換してもよいし、H.264をH.265に変換等してもよい。
このように、符号化処理は、端末、又は1以上のサーバにより行うことが可能である。よって、以下では、処理を行う主体として「サーバ」又は「端末」等の記載を用いるが、サーバで行われる処理の一部又は全てが端末で行われてもよいし、端末で行われる処理の一部又は全てがサーバで行われてもよい。また、これらに関しては、復号処理についても同様である。
[3D、マルチアングル]
互いにほぼ同期した複数のカメラex113及び/又はスマートフォンex115などの端末により撮影された異なるシーン、又は、同一シーンを異なるアングルから撮影した画像或いは映像を統合して利用することが増えてきている。各端末で撮影した映像は、別途取得した端末間の相対的な位置関係、又は、映像に含まれる特徴点が一致する領域などに基づいて統合され得る。
サーバは、2次元の動画像を符号化するだけでなく、動画像のシーン解析などに基づいて自動的に、又は、ユーザが指定した時刻において、静止画を符号化し、受信端末に送信してもよい。サーバは、さらに、撮影端末間の相対的な位置関係を取得できる場合には、2次元の動画像だけでなく、同一シーンが異なるアングルから撮影された映像に基づき、当該シーンの3次元形状を生成できる。サーバは、ポイントクラウドなどにより生成した3次元のデータを別途符号化してもよいし、3次元データを用いて人物又はオブジェクトを認識或いは追跡した結果に基づいて、受信端末に送信する映像を、複数の端末で撮影した映像から、選択、又は、再構成して生成してもよい。
このようにして、ユーザは、各撮影端末に対応する各映像を任意に選択してシーンを楽しむこともできるし、複数画像又は映像を用いて再構成された3次元データから選択視点の映像を切り出したコンテンツを楽しむこともできる。さらに、映像と共に、音も複数の相異なるアングルから収音され、サーバは、特定のアングル又は空間からの音を対応する映像と多重化して、多重化された映像と音とを送信してもよい。
また、近年ではVirtual Reality(VR)及びAugmented Reality(AR)など、現実世界と仮想世界とを対応付けたコンテンツも普及してきている。VRの画像の場合、サーバは、右目用及び左目用の視点画像をそれぞれ作成し、Multi-View Coding(MVC)などにより各視点映像間で参照を許容する符号化を行ってもよいし、互いに参照せずに別ストリームとして符号化してもよい。別ストリームの復号時には、ユーザの視点に応じて仮想的な3次元空間が再現されるように互いに同期させて再生するとよい。
ARの画像の場合には、サーバは、現実空間のカメラ情報に、仮想空間上の仮想物体情報を、3次元的位置又はユーザの視点の動きに基づいて重畳してもよい。復号装置は、仮想物体情報及び3次元データを取得又は保持し、ユーザの視点の動きに応じて2次元画像を生成し、スムーズにつなげることで重畳データを作成してもよい。または、復号装置は仮想物体情報の依頼に加えてユーザの視点の動きをサーバに送信してもよい。サーバは、サーバに保持される3次元データから受信した視点の動きに合わせて重畳データを作成し、重畳データを符号化して復号装置に配信してもよい。なお、重畳データは、典型的には、RGB以外に透過度を示すα値を有し、サーバは、3次元データから作成されたオブジェクト以外の部分のα値が0などに設定し、当該部分が透過する状態で、符号化してもよい。もしくは、サーバは、クロマキーのように所定の値のRGB値を背景に設定し、オブジェクト以外の部分は背景色にしたデータを生成してもよい。所定の値のRGB値は、予め定められていてもよい。
同様に配信されたデータの復号処理はクライアント(例えば、端末)で行っても、サーバ側で行ってもよいし、互いに分担して行ってもよい。一例として、ある端末が、一旦サーバに受信リクエストを送り、そのリクエストに応じたコンテンツを他の端末で受信し復号処理を行い、ディスプレイを有する装置に復号済みの信号が送信されてもよい。通信可能な端末自体の性能によらず処理を分散して適切なコンテンツを選択することで画質のよいデータを再生することができる。また、他の例として大きなサイズの画像データをTV等で受信しつつ、鑑賞者の個人端末にピクチャが分割されたタイルなど一部の領域が復号されて表示されてもよい。これにより、全体像を共有化しつつ、自身の担当分野又はより詳細に確認したい領域を手元で確認することができる。
屋内外の近距離、中距離、又は長距離の無線通信が複数使用可能な状況下で、MPEG-DASHなどの配信システム規格を利用して、シームレスにコンテンツを受信することが可能かもしれない。ユーザは、ユーザの端末、屋内外に配置されたディスプレイなどの復号装置又は表示装置を自由に選択しながらリアルタイムで切り替えてもよい。また、自身の位置情報などを用いて、復号する端末及び表示する端末を切り替えながら復号を行うことができる。これにより、ユーザが目的地へ移動している間に、表示可能なデバイスが埋め込まれた隣の建物の壁面又は地面の一部に情報をマップ及び表示することが可能になる。また、符号化データが受信端末から短時間でアクセスできるサーバにキャッシュされている、又は、コンテンツ・デリバリー・サービスにおけるエッジサーバにコピーされている、などの、ネットワーク上での符号化データへのアクセス容易性に基づいて、受信データのビットレートを切り替えることも可能である。
[スケーラブル符号化]
コンテンツの切り替えに関して、図64に示す、上記各実施の形態で示した動画像符号化方法を応用して圧縮符号化されたスケーラブルなストリームを用いて説明する。サーバは、個別のストリームとして内容は同じで質の異なるストリームを複数有していても構わないが、図示するようにレイヤに分けて符号化を行うことで実現される時間的/空間的スケーラブルなストリームの特徴を活かして、コンテンツを切り替える構成であってもよい。つまり、復号側が性能という内的要因と通信帯域の状態などの外的要因とに応じてどのレイヤを復号するかを決定することで、復号側は、低解像度のコンテンツと高解像度のコンテンツとを自由に切り替えて復号できる。例えばユーザが移動中にスマートフォンex115で視聴していた映像の続きを、例えば帰宅後にインターネットTV等の機器で視聴したい場合には、当該機器は、同じストリームを異なるレイヤまで復号すればよいので、サーバ側の負担を軽減できる。
さらに、上記のように、レイヤ毎にピクチャが符号化されており、ベースレイヤの上位のエンハンスメントレイヤでスケーラビリティを実現する構成以外に、エンハンスメントレイヤが画像の統計情報などに基づくメタ情報を含んでいてもよい。復号側が、メタ情報に基づきベースレイヤのピクチャを超解像することで高画質化したコンテンツを生成してもよい。超解像は、解像度を維持及び/又は拡大しつつ、SN比を向上してもよい。メタ情報は、超解像処理に用いるような線形或いは非線形のフィルタ係数を特定するため情報、又は、超解像処理に用いるフィルタ処理、機械学習或いは最小2乗演算におけるパラメータ値を特定する情報などを含む。
または、画像内のオブジェクトなどの意味合いに応じてピクチャがタイル等に分割される構成が提供されてもよい。復号側が、復号するタイルを選択することで一部の領域だけを復号する。さらに、オブジェクトの属性(人物、車、ボールなど)と映像内の位置(同一画像における座標位置など)とをメタ情報として格納することで、復号側は、メタ情報に基づいて所望のオブジェクトの位置を特定し、そのオブジェクトを含むタイルを決定できる。例えば、図65に示すように、メタ情報は、HEVCにおけるSEI(supplemental enhancement information)メッセージなど、画素データとは異なるデータ格納構造を用いて格納されてもよい。このメタ情報は、例えば、メインオブジェクトの位置、サイズ、又は色彩などを示す。
ストリーム、シーケンス又はランダムアクセス単位など、複数のピクチャから構成される単位でメタ情報が格納されてもよい。復号側は、特定人物が映像内に出現する時刻などを取得でき、ピクチャ単位の情報と時間情報を合わせることで、オブジェクトが存在するピクチャを特定でき、ピクチャ内でのオブジェクトの位置を決定できる。
[Webページの最適化]
図66は、コンピュータex111等におけるwebページの表示画面例を示す図である。図67は、スマートフォンex115等におけるwebページの表示画面例を示す図である。図66及び図67に示すようにwebページが、画像コンテンツへのリンクであるリンク画像を複数含む場合があり、閲覧するデバイスによってその見え方は異なっていてもよい。画面上に複数のリンク画像が見える場合には、ユーザが明示的にリンク画像を選択するまで、又は画面の中央付近にリンク画像が近付く或いはリンク画像の全体が画面内に入るまで、表示装置(復号装置)は、リンク画像として各コンテンツが有する静止画又はIピクチャを表示してもよいし、複数の静止画又はIピクチャ等でgifアニメのような映像を表示してもよいし、ベースレイヤのみを受信し、映像を復号及び表示してもよい。
ユーザによりリンク画像が選択された場合、表示装置は、例えばベースレイヤを最優先にしつつ復号を行う。なお、webページを構成するHTMLにスケーラブルなコンテンツであることを示す情報があれば、表示装置は、エンハンスメントレイヤまで復号してもよい。さらに、リアルタイム性を担保するために、選択される前又は通信帯域が非常に厳しい場合には、表示装置は、前方参照のピクチャ(Iピクチャ、Pピクチャ、前方参照のみのBピクチャ)のみを復号及び表示することで、先頭ピクチャの復号時刻と表示時刻との間の遅延(コンテンツの復号開始から表示開始までの遅延)を低減できる。またさらに、表示装置は、ピクチャの参照関係を敢えて無視して、全てのBピクチャ及びPピクチャを前方参照にして粗く復号し、時間が経ち受信したピクチャが増えるにつれて正常の復号を行ってもよい。
[自動走行]
また、車の自動走行又は走行支援のため2次元又は3次元の地図情報などのような静止画又は映像データを送受信する場合、受信端末は、1以上のレイヤに属する画像データに加えて、メタ情報として天候又は工事の情報なども受信し、これらを対応付けて復号してもよい。なお、メタ情報は、レイヤに属してもよいし、単に画像データと多重化されてもよい。
この場合、受信端末を含む車、ドローン又は飛行機などが移動するため、受信端末は、当該受信端末の位置情報を送信することで、基地局ex106~ex110を切り替えながらシームレスな受信及び復号の実行を実現できる。また、受信端末は、ユーザの選択、ユーザの状況及び/又は通信帯域の状態に応じて、メタ情報をどの程度受信するか、又は地図情報をどの程度更新していくかを動的に切り替えることが可能になる。
コンテンツ供給システムex100では、ユーザが送信した符号化された情報をリアルタイムでクライアントが受信して復号し、再生することができる。
[個人コンテンツの配信]
また、コンテンツ供給システムex100では、映像配信業者による高画質で長時間のコンテンツのみならず、個人による低画質で短時間のコンテンツのユニキャスト、又はマルチキャスト配信が可能である。このような個人のコンテンツは今後も増加していくと考えられる。個人コンテンツをより優れたコンテンツにするために、サーバは、編集処理を行ってから符号化処理を行ってもよい。これは、例えば、以下のような構成を用いて実現できる。
撮影時にリアルタイム又は蓄積して撮影後に、サーバは、原画データ又は符号化済みデータから撮影エラー、シーン探索、意味の解析、及びオブジェクト検出などの認識処理を行う。そして、サーバは、認識結果に基づいて手動又は自動で、ピントずれ又は手ブレなどを補正したり、明度が他のピクチャに比べて低い又は焦点が合っていないシーンなどの重要性の低いシーンを削除したり、オブジェクトのエッジを強調したり、色合いを変化させるなどの編集を行う。サーバは、編集結果に基づいて編集後のデータを符号化する。また撮影時刻が長すぎると視聴率が下がることも知られており、サーバは、撮影時間に応じて特定の時間範囲内のコンテンツになるように上記のように重要性が低いシーンのみならず動きが少ないシーンなどを、画像処理結果に基づき自動でクリップしてもよい。または、サーバは、シーンの意味解析の結果に基づいてダイジェストを生成して符号化してもよい。
個人コンテンツには、そのままでは著作権、著作者人格権、又は肖像権等の侵害となるものが写り込んでいるケースもあり、共有する範囲が意図した範囲を超えてしまうなど個人にとって不都合な場合もある。よって、例えば、サーバは、画面の周辺部の人の顔、又は家の中などを敢えて焦点が合わない画像に変更して符号化してもよい。さらに、サーバは、符号化対象画像内に、予め登録した人物とは異なる人物の顔が映っているかどうかを認識し、映っている場合には、顔の部分にモザイクをかけるなどの処理を行ってもよい。または、符号化の前処理又は後処理として、著作権などの観点からユーザが画像を加工したい人物又は背景領域を指定してもよい。サーバは、指定された領域を別の映像に置き換える、又は焦点をぼかすなどの処理を行ってもよい。人物であれば、動画像において人物をトラッキングして、人物の顔の部分の映像を置き換えることができる。
データ量の小さい個人コンテンツの視聴はリアルタイム性の要求が強いため、帯域幅にもよるが、復号装置は、まずベースレイヤを最優先で受信して復号及び再生を行ってもよい。復号装置は、この間にエンハンスメントレイヤを受信し、再生がループされる場合など2回以上再生される場合に、エンハンスメントレイヤも含めて高画質の映像を再生してもよい。このようにスケーラブルな符号化が行われているストリームであれば、未選択時又は見始めた段階では粗い動画だが、徐々にストリームがスマートになり画像がよくなるような体験を提供することができる。スケーラブル符号化以外にも、1回目に再生される粗いストリームと、1回目の動画を参照して符号化される2回目のストリームとが1つのストリームとして構成されていても同様の体験を提供できる。
[その他の実施応用例]
また、これらの符号化又は復号処理は、一般的に各端末が有するLSIex500において処理される。LSI(large scale integration circuitry)ex500(図63参照)は、ワンチップであっても複数チップからなる構成であってもよい。なお、動画像符号化又は復号用のソフトウェアをコンピュータex111等で読み取り可能な何らかの記録メディア(CD-ROM、フレキシブルディスク、又はハードディスクなど)に組み込み、そのソフトウェアを用いて符号化又は復号処理を行ってもよい。さらに、スマートフォンex115がカメラ付きである場合には、そのカメラで取得した動画データを送信してもよい。このときの動画データはスマートフォンex115が有するLSIex500で符号化処理されたデータであってもよい。
なお、LSIex500は、アプリケーションソフトをダウンロードしてアクティベートする構成であってもよい。この場合、端末は、まず、当該端末がコンテンツの符号化方式に対応しているか、又は、特定サービスの実行能力を有するかを判定する。端末がコンテンツの符号化方式に対応していない場合、又は、特定サービスの実行能力を有さない場合、端末は、コーデック又はアプリケーションソフトをダウンロードし、その後、コンテンツ取得及び再生してもよい。
また、インターネットex101を介したコンテンツ供給システムex100に限らず、デジタル放送用システムにも上記各実施の形態の少なくとも動画像符号化装置(画像符号化装置)又は動画像復号化装置(画像復号装置)のいずれかを組み込むことができる。衛星などを利用して放送用の電波に映像と音が多重化された多重化データを載せて送受信するため、コンテンツ供給システムex100のユニキャストがし易い構成に対してマルチキャスト向きであるという違いがあるが符号化処理及び復号処理に関しては同様の応用が可能である。
[ハードウェア構成]
図68は、図63に示されたスマートフォンex115のさらに詳細を示す図である。また、図69は、スマートフォンex115の構成例を示す図である。スマートフォンex115は、基地局ex110との間で電波を送受信するためのアンテナex450と、映像及び静止画を撮ることが可能なカメラ部ex465と、カメラ部ex465で撮像した映像、及びアンテナex450で受信した映像等が復号されたデータを表示する表示部ex458とを備える。スマートフォンex115は、さらに、タッチパネル等である操作部ex466と、音声又は音響を出力するためのスピーカ等である音声出力部ex457と、音声を入力するためのマイク等である音声入力部ex456と、撮影した映像或いは静止画、録音した音声、受信した映像或いは静止画、メール等の符号化されたデータ、又は、復号化されたデータを保存可能なメモリ部ex467と、ユーザを特定し、ネットワークをはじめ各種データへのアクセスの認証をするためのSIMex468とのインタフェース部であるスロット部ex464とを備える。なお、メモリ部ex467の代わりに外付けメモリが用いられてもよい。
表示部ex458及び操作部ex466等を統括的に制御し得る主制御部ex460と、電源回路部ex461、操作入力制御部ex462、映像信号処理部ex455、カメラインタフェース部ex463、ディスプレイ制御部ex459、変調/復調部ex452、多重/分離部ex453、音声信号処理部ex454、スロット部ex464、及びメモリ部ex467とが同期バスex470を介して接続されている。
電源回路部ex461は、ユーザの操作により電源キーがオン状態にされると、スマートフォンex115を動作可能な状態に起動し、バッテリパックから各部に対して電力を供給する。
スマートフォンex115は、CPU、ROM及びRAM等を有する主制御部ex460の制御に基づいて、通話及データ通信等の処理を行う。通話時は、音声入力部ex456で収音した音声信号を音声信号処理部ex454でデジタル音声信号に変換し、変調/復調部ex452でスペクトラム拡散処理を施し、送信/受信部ex451でデジタルアナログ変換処理及び周波数変換処理を施し、その結果の信号を、アンテナex450を介して送信する。また受信データを増幅して周波数変換処理及びアナログデジタル変換処理を施し、変調/復調部ex452でスペクトラム逆拡散処理し、音声信号処理部ex454でアナログ音声信号に変換した後、これを音声出力部ex457から出力する。データ通信モード時は、本体部の操作部ex466等の操作に基づいてテキスト、静止画、又は映像データが操作入力制御部ex462を介して主制御部ex460の制御下で送出され得る。同様の送受信処理が行われる。データ通信モード時に映像、静止画、又は映像と音声を送信する場合、映像信号処理部ex455は、メモリ部ex467に保存されている映像信号又はカメラ部ex465から入力された映像信号を上記各実施の形態で示した動画像符号化方法によって圧縮符号化し、符号化された映像データを多重/分離部ex453に送出する。音声信号処理部ex454は、映像又は静止画をカメラ部ex465で撮像中に音声入力部ex456で収音した音声信号を符号化し、符号化された音声データを多重/分離部ex453に送出する。多重/分離部ex453は、符号化済み映像データと符号化済み音声データを所定の方式で多重化し、変調/復調部(変調/復調回路部)ex452、及び送信/受信部ex451で変調処理及び変換処理を施してアンテナex450を介して送信する。所定の方式は、予め定められていてもよい。
電子メール又はチャットに添付された映像、又はウェブページにリンクされた映像を受信した場合等において、アンテナex450を介して受信された多重化データを復号するために、多重/分離部ex453は、多重化データを分離することにより、多重化データを映像データのビットストリームと音声データのビットストリームとに分け、同期バスex470を介して符号化された映像データを映像信号処理部ex455に供給するとともに、符号化された音声データを音声信号処理部ex454に供給する。映像信号処理部ex455は、上記各実施の形態で示した動画像符号化方法に対応した動画像復号化方法によって映像信号を復号し、ディスプレイ制御部ex459を介して表示部ex458から、リンクされた動画像ファイルに含まれる映像又は静止画が表示される。音声信号処理部ex454は、音声信号を復号し、音声出力部ex457から音声が出力される。リアルタイムストリーミングがますます普及しだしているため、ユーザの状況によっては音声の再生が社会的にふさわしくないこともあり得る。そのため、初期値としては、音声信号は再生せず映像データのみを再生する構成の方が望ましく、ユーザが映像データをクリックするなど操作を行った場合にのみ音声を同期して再生してもよい。
またここではスマートフォンex115を例に説明したが、端末としては符号化器及び復号化器を両方持つ送受信型端末の他に、符号化器のみを有する送信端末、及び、復号化器のみを有する受信端末という他の実装形式が考えられる。デジタル放送用システムにおいて、映像データに音声データが多重化された多重化データを受信又は送信するとして説明した。ただし、多重化データには、音声データ以外に映像に関連する文字データなどが多重化されてもよい。また、多重化データではなく映像データ自体が受信又は送信されてもよい。
なお、CPUを含む主制御部ex460が符号化又は復号処理を制御するとして説明したが、種々の端末はGPUを備えることも多い。よって、CPUとGPUで共通化されたメモリ、又は共通に使用できるようにアドレスが管理されているメモリにより、GPUの性能を活かして広い領域を一括して処理する構成でもよい。これにより符号化時間を短縮でき、リアルタイム性を確保し、低遅延を実現できる。特に動き探索、デブロックフィルタ、SAO(Sample Adaptive Offset)、及び変換・量子化の処理を、CPUではなく、GPUでピクチャなどの単位で一括して行うと効率的である。