JP2020145486A - 動画像符号化装置及び動画像復号装置 - Google Patents
動画像符号化装置及び動画像復号装置 Download PDFInfo
- Publication number
- JP2020145486A JP2020145486A JP2017146569A JP2017146569A JP2020145486A JP 2020145486 A JP2020145486 A JP 2020145486A JP 2017146569 A JP2017146569 A JP 2017146569A JP 2017146569 A JP2017146569 A JP 2017146569A JP 2020145486 A JP2020145486 A JP 2020145486A
- Authority
- JP
- Japan
- Prior art keywords
- prediction
- motion vector
- tile
- unit
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】インター予測を用い、ピクチャ間の情報を参照する場合は、小領域を復号する場合でも、ピクチャ全体を復号しなくても各タイルの復号の独立性を保証する仕組みを提供する。【解決手段】空間隣接ブロックあるいは時間隣接ブロックから取得した利用可能な動きベクトルS3101をもとに、スケーリングにより算出した対象ブロックのサブブロックレベルの動きベクトルS3104の指す画素がタイルシーケンス内にない場合(S3106でY)、前記画素値をタイルシーケンス内の画素値で置き換えS3107、アフィン予測を用いた動き補償画像を生成するS3108。【選択図】図31
Description
本発明の実施形態は、動画像復号装置、および動画像符号化装置に関する。
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video Coding)にて提案されている方式などが挙げられる。
このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得
られる符号化単位(符号化ユニット(CU:Coding Unit)と呼ばれることもある)、及び
、符号化単位を分割することより得られるブロックである予測ユニット(PU:Prediction
Unit)、変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CUご
とに符号化/復号される。
られる符号化単位(符号化ユニット(CU:Coding Unit)と呼ばれることもある)、及び
、符号化単位を分割することより得られるブロックである予測ユニット(PU:Prediction
Unit)、変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CUご
とに符号化/復号される。
また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測残差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる(非特許文献1)。
また、近年、マルチコアCPUやGPU等のプロセッサの進化に伴い、動画像符号化および復号処理において、並列処理を行いやすい構成やアルゴリズムが採用されるようになってきた。並列化しやすい構成の一例として、タイル(Tile)という画面(ピクチャ)分割単位が導入されている。タイルはスライスと異なり、ピクチャを矩形領域に分割したものであるが、ある1枚のピクチャにおいて、タイル外の情報(予測モード、MV、画素値)を参照せずに、タイルを復号する。従って、タイルは1ピクチャ内では独立に復号することができる(非特許文献2)。
さらに、近年、4Kや8K、あるいはVR、360度動画のような360度全方位を取り込んだ動画に代表される、動画像の高解像度化が進んでいる。これらをスマホやHMD(Head Mount Display)で視聴する時は高解像度映像の一部を切り出してディスプレイに表示する。スマホ
やHMDでは電池の容量は大きくなく、表示に必要な一部の領域を抽出して、最小限の復号
処理により映像を視聴できる仕組みが期待されている。
やHMDでは電池の容量は大きくなく、表示に必要な一部の領域を抽出して、最小限の復号
処理により映像を視聴できる仕組みが期待されている。
"Algorithm Description of Joint Exploration Test Model 6", JVET-F1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 31 March- April 2017
ITU-T H.265(04/2015) SERIES H:AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video High efficiency video coding
上記で説明したように、タイルはピクチャを矩形領域に分割したものであり、1枚のピクチャにおいて、タイル外の情報(予測モード、MV、画素値)を参照せずに復号するため、タイルは1ピクチャ内では独立に復号することができる。しかしながら、インター予測を用い、既に復号した異なるピクチャ(参照ピクチャ)を参照する場合、対象タイルが参照ピクチャ上で参照する情報(予測モード、MV、画素値)は、参照ピクチャ上の対象タイルと同じ位置の領域の情報には限らない。従って、動画像の一部の領域(タイル、あるいは限られた個数のタイル)のみを再生する場合でも、動画像全体を再生する必要がある。タイルを空間方向だけでなく、時間方向にも独立に処理できるようにするには、ピクチャ内で対象タイルに隣接するタイルの情報を参照しないだけでなく、参照ピクチャでも、対象タイルと同じ位置のタイル(コロケートタイル)以外の情報を参照しないことが必要である。従って、各タイルを独立に復号するには、対象タイルおよびコロケートタイルに隣接するタイルの情報を使用する可能性のあるツールを一切使用しなければよいが、この場合、独立に復号できないタイルに比べて著しく符号化効率が低下する。
そこで、本発明は、上記の課題に鑑みてなされたものであり、その目的は、符号化効率の低下を抑えつつ、空間方向および時間方向において各タイルの独立な復号を保証する仕組みを提供することである。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、対象ブロックを分割したサブブロックのアフィン予測を用いて動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置であって、対象ブロックの2つの代表点の動きベクトル(第1の動きベクトル)を導出する第1の導出手段と、第1の動きベクトルがタイルシーケンス内を参照するかどうかを判定する判定手段と、第1の動きベクトルから、対象ブロックに含まれるサブブロックの動きベクトル(第2の動きベクトル)を導出する第2の導出手段と、第2の動きベクトルに基づいて、サブブロック単位の動き補償画像を生成する生成手段とを備え、前記判定手段が、第1の動きベクトルがタイルシーケンス外を参照すると判定した場合、前記動き補償画像の画素値をタイルシーケンス内の画素値から導出する処理を実施することを特徴とする。
本発明の一態様によれば、動画像において、個々のツール毎に各タイルの復号の独立性を保証する仕組みを導入するので、符号化効率の低下を抑えつつ、各タイルを独立に復号をすることができる。これにより、表示等に必要な領域を選択して復号できるので、処理量を大幅に削減することができる。
(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
以下、図面を参照しながら本発明の実施形態について説明する。
図29は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
画像伝送システム1は、符号化対象画像を符号化した符号を伝送し、伝送された符号を復号し画像を表示するシステムである。画像伝送システム1は、画像符号化装置(動画像符号化装置)11、ネットワーク21、画像復号装置(動画像復号装置)31及び画像表示装置(動画像表示装置)41を含んで構成される。
画像符号化装置11には、単一レイヤもしくは複数レイヤの画像を示す画像Tが入力される。レイヤとは、ある時間を構成するピクチャが1つ以上ある場合に、複数のピクチャを区別するために用いられる概念である。たとえば、同一ピクチャを、画質や解像度の異なる複数のレイヤで符号化するとスケーラブル符号化になり、異なる視点のピクチャを複数のレイヤで符号化するとビュースケーラブル符号化となる。複数のレイヤのピクチャ間で予測(インターレイヤ予測、インタービュー予測)を行う場合には、符号化効率が大きく向上する。また予測を行わない場合(サイマルキャスト)の場合にも、符号化データをまとめることができる。
ネットワーク21は、画像符号化装置11が生成した符号化ストリームTeを画像復号装置31に伝送する。ネットワーク21は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)また
はこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
はこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した1または複数の復号画像Tdを生成する。
画像表示装置41は、画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、空間スケーラブル符号化、SNR
スケーラブル符号化では、画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
スケーラブル符号化では、画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<演算子>
本明細書で用いる演算子を以下に記載する。
本明細書で用いる演算子を以下に記載する。
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR
、|=はOR代入演算子である。
、|=はOR代入演算子である。
x ? y : zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子であ
る。
る。
Clip3(a, b, c) は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
abs(a)はaの絶対値を返す関数である。
Int(a)はaの性数値を返す関数である。
<符号化ストリームTeの構造>
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
図1は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図1の(a)〜(f)は、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス
、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スラ
イスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニット(Coding Unit;CU)を
示す図である。
、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スラ
イスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニット(Coding Unit;CU)を
示す図である。
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために画像復号装
置31が参照するデータの集合が規定されている。シーケンスSEQは、図1の(a)に示
すように、ビデオパラメータセットVPS(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図1では、#0と#1、すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために画像復号装
置31が参照するデータの集合が規定されている。シーケンスSEQは、図1の(a)に示
すように、ビデオパラメータセットVPS(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図1では、#0と#1、すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複
数の動画像に共通する符号化パラメータの集合、および、動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
数の動画像に共通する符号化パラメータの集合、および、動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置
31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れか
を選択する。
31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れか
を選択する。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために
画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用
を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。そ
の場合、対象シーケンス内の各スライスヘッダから複数のPPSの何れかを選択する。
画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用
を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。そ
の場合、対象シーケンス内の各スライスヘッダから複数のPPSの何れかを選択する。
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図1の(b)に示すように、スライスS0〜SNS-1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
符号化ピクチャでは、処理対象のピクチャPICTを復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図1の(b)に示すように、スライスS0〜SNS-1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS0〜SNS-1のそれぞれを区別する必要が無い場合、符号の添え字
を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために画像復号装置31が参照
するデータの集合が規定されている。スライスSは、図1の(c)に示すように、スライ
スヘッダSH、および、スライスデータSDATAを含んでいる。
符号化スライスでは、処理対象のスライスSを復号するために画像復号装置31が参照
するデータの集合が規定されている。スライスSは、図1の(c)に示すように、スライ
スヘッダSH、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P
、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライ
スを指す。
、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライ
スを指す。
なお、スライスヘッダSHには、上記符号化ビデオシーケンスに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために画像復
号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の
(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit、CTUブロック)を
含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために画像復
号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の
(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit、CTUブロック)を
含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(符号化ツリーユニット)
図1の(e)には、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割(QT分割)または2分木分割(BT分割)により符号化処理の基本的な単位である符号化ユニット(CU:Coding Unit)に分割される。再帰的な4分木分割または2分木分割により得られる木構造を符号化ツリー(CT:Coding Tree)、木構造のノードのことを符号化ノード(CN:Coding Node)と称する。4分木及び2分木の中間ノードは、符号化ノードであり、符号化ツリーユニット自身も最上位の符号化ノードとして規定される。
図1の(e)には、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割(QT分割)または2分木分割(BT分割)により符号化処理の基本的な単位である符号化ユニット(CU:Coding Unit)に分割される。再帰的な4分木分割または2分木分割により得られる木構造を符号化ツリー(CT:Coding Tree)、木構造のノードのことを符号化ノード(CN:Coding Node)と称する。4分木及び2分木の中間ノードは、符号化ノードであり、符号化ツリーユニット自身も最上位の符号化ノードとして規定される。
CTは、CT情報として、QT分割を行うか否かを示すQT分割フラグ(cu_split_flag)、及
びBT分割の分割方法を示すBT分割モード(split_bt_mode)を含む。cu_split_flag及び/又はsplit_bt_modeは符号化ノードCNごとに伝送される。cu_split_flagが1の場合には、符号化ノードCNは4つの符号化ノードCNに分割される。cu_split_flagが0の時、split_bt_modeが1の場合には、符号化ノードCNは2つの符号化ノードCNに水平分割され、split_bt_modeが2の場合には、符号化ノードCNは2つの符号化ノードCNに垂直分割され、split_bt_modeが0の場合には、符号化ノードCNは分割されず、1つの符号化ユニットCUをノードとして持つ。符号化ユニットCUは符号化ノードの末端ノード(リーフノード)であり、これ以上分割されない。
びBT分割の分割方法を示すBT分割モード(split_bt_mode)を含む。cu_split_flag及び/又はsplit_bt_modeは符号化ノードCNごとに伝送される。cu_split_flagが1の場合には、符号化ノードCNは4つの符号化ノードCNに分割される。cu_split_flagが0の時、split_bt_modeが1の場合には、符号化ノードCNは2つの符号化ノードCNに水平分割され、split_bt_modeが2の場合には、符号化ノードCNは2つの符号化ノードCNに垂直分割され、split_bt_modeが0の場合には、符号化ノードCNは分割されず、1つの符号化ユニットCUをノードとして持つ。符号化ユニットCUは符号化ノードの末端ノード(リーフノード)であり、これ以上分割されない。
また、符号化ツリーユニットCTUのサイズが64x64画素の場合には、符号化ユニットのサイズは、64x64画素、64x32画素、32x64画素、32x32画素、64x16画素、16x64画素、32x16
画素、16x32画素、16x16画素、64x8画素、8x64画素、32x8画素、8x32画素、16x8画素、8x16画素、8x8画素、64x4画素、4x64画素、32x4画素、4x32画素、16x4画素、4x16画素、8x4画素、4x8画素、及び、4x4画素の何れかをとり得る。
画素、16x32画素、16x16画素、64x8画素、8x64画素、32x8画素、8x32画素、16x8画素、8x16画素、8x8画素、64x4画素、4x64画素、32x4画素、4x32画素、16x4画素、4x16画素、8x4画素、4x8画素、及び、4x4画素の何れかをとり得る。
(符号化ユニット)
図1の(f)には、処理対象の符号化ユニットを復号するために画像復号装置31が参
照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モ
ード)等が規定される。
図1の(f)には、処理対象の符号化ユニットを復号するために画像復号装置31が参
照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モ
ード)等が規定される。
なお、符号化ストリームTeのデータ構造は、図1ではなく、図15の構成をとってもよい。図15と図1の違いとして、スライスをさらにタイルに分割し、タイルの中にCTUが含ま
れることである。従って(d)符号化スライスデータの中にタイルが含まれ、(g)符号化タイルの中にCTUが含まれる。
れることである。従って(d)符号化スライスデータの中にタイルが含まれ、(g)符号化タイルの中にCTUが含まれる。
また、符号化ストリームTeのデータ構造は、図1ではなく、図16の構成をとってもよい。図16と図1の違いとして、スライスをタイルに置換え、タイルデータの中にCTUが含ま
れることである。従って(b)符号化ピクチャの中にタイルが含まれ、(g)符号化タイルはタイルヘッダとタイルデータから構成され、(h)符号化タイルデータの中にCTUが
含まれる。
れることである。従って(b)符号化ピクチャの中にタイルが含まれ、(g)符号化タイルはタイルヘッダとタイルデータから構成され、(h)符号化タイルデータの中にCTUが
含まれる。
予測ツリーでは、符号化ユニットを1または複数に分割した各予測ユニット(PU)の予測パラメータ(参照ピクチャインデックス、動きベクトル等)が規定される。別の表現でいえば、予測ユニットは、符号化ユニットを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ユニットを含む。なお、以下では、予測ユニットをさらに分割した予測単位を「サブブロック」と呼ぶ。サブブロックは、複数の画素によって構成されている。予測ユニットとサブブロックのサイズが等しい場合には、予測ユニット中のサブブロックは1つである。予測ユニットがサブブロックのサイズよりも大きい場合には、予測ユニットは、サブブロックに分割される。たとえば予測ユニットが8x8、サブブロックが4x4の場合には、予測ユニットは水平に2分割、垂直に2分割からなる、4つのサブブロックに分割される。
予測処理は、この予測ユニット(サブブロック)ごとに行ってもよい。
予測ツリーにおける予測の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
イントラ予測の場合、分割方法は、2Nx2N(符号化ユニットと同一サイズ)と、NxNとがある。
また、インター予測の場合、分割方法は、符号化データのPU分割モード(part_mode)
により符号化され、2Nx2N(符号化ユニットと同一サイズ)、2NxN、2NxnU、2NxnD、Nx2N
、nLx2N、nRx2N、および、NxNなどがある。なお、2NxN、Nx2Nは1:1の対称分割を示し、
2NxnU、2NxnDおよびnLx2N、nRx2Nは、1:3、3:1の非対称分割を示す。CUに含まれるPUを順にPU0、PU1、PU2、PU3と表現する。
により符号化され、2Nx2N(符号化ユニットと同一サイズ)、2NxN、2NxnU、2NxnD、Nx2N
、nLx2N、nRx2N、および、NxNなどがある。なお、2NxN、Nx2Nは1:1の対称分割を示し、
2NxnU、2NxnDおよびnLx2N、nRx2Nは、1:3、3:1の非対称分割を示す。CUに含まれるPUを順にPU0、PU1、PU2、PU3と表現する。
図2の(a)〜(h)に、それぞれのPU分割モードにおけるパーティションの形状(PU分割の境界の位置)を具体的に図示している。図2の(a)は、2Nx2Nのパーティション
を示し、(b)、(c)、(d)は、それぞれ、2NxN、2NxnU、および、2NxnDのパーティション(横長パーティション)を示す。(e)、(f)、(g)は、それぞれ、Nx2N、nLx2N、nRx2Nである場合のパーティション(縦長パーティション)を示し、(h)は、NxN
のパーティションを示す。なお、横長パーティションと縦長パーティションを総称して長方形パーティション、2Nx2N、NxNを総称して正方形パーティションと呼ぶ。
を示し、(b)、(c)、(d)は、それぞれ、2NxN、2NxnU、および、2NxnDのパーティション(横長パーティション)を示す。(e)、(f)、(g)は、それぞれ、Nx2N、nLx2N、nRx2Nである場合のパーティション(縦長パーティション)を示し、(h)は、NxN
のパーティションを示す。なお、横長パーティションと縦長パーティションを総称して長方形パーティション、2Nx2N、NxNを総称して正方形パーティションと呼ぶ。
また、変換ツリーにおいては、符号化ユニットが1または複数の変換ユニットTUに分割され、各変換ユニットの位置とサイズとが規定される。別の表現でいえば、変換ユニットは、符号化ユニットを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ユニットを含む。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ユニットとして割り付けるものと、上述したCUの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ユニットごとに行われる。
(予測パラメータ)
予測ユニット(PU:Prediction Unit)の予測画像は、PUに付随する予測パラメータに
よって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、動きベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に、対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、フラグが0以外(たとえば1)をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
予測ユニット(PU:Prediction Unit)の予測画像は、PUに付随する予測パラメータに
よって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、動きベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に、対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、フラグが0以外(たとえば1)をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスref_idx_lX(refIdxLX)、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLXがある。
(参照ピクチャリスト)
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリストである。図3は、参照ピクチャおよび参照ピクチャリストの一例を示す概念図である。図3(a)において、矩形はピクチャ、矢印はピクチャの参照関係、横軸は時間、矩形中のI、P、Bは各々イントラピクチャ、単予測ピクチャ、双予測ピクチャ、矩形中の数
字は復号順を示す。図に示すように、ピクチャの復号順は、I0、P1、B2、B3、B4であり、表示順は、I0、B3、B2、B4、P1である。図3(b)に、参照ピクチャリストの例を示す。参照ピクチャリストは、参照ピクチャの候補を表すリストであり、1つのピクチャ(スライス)が1つ以上の参照ピクチャリストを有してもよい。図の例では、対象ピクチャB3は、L0リストRefPicList0およびL1リストRefPicList1の2つの参照ピクチャリストを持つ。対象ピクチャがB3の場合の参照ピクチャは、I0、P1、B2であり、参照ピクチャはこれらのピクチャを要素として持つ。個々の予測ユニットでは、参照ピクチャリストRefPicListX
(X=0または1)中のどのピクチャを実際に参照するかを参照ピクチャインデックスrefIdxLXで指定する。図では、refIdxL0およびrefIdxL1により参照ピクチャP1とB2が参照される例を示す。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、以降では、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別する。
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリストである。図3は、参照ピクチャおよび参照ピクチャリストの一例を示す概念図である。図3(a)において、矩形はピクチャ、矢印はピクチャの参照関係、横軸は時間、矩形中のI、P、Bは各々イントラピクチャ、単予測ピクチャ、双予測ピクチャ、矩形中の数
字は復号順を示す。図に示すように、ピクチャの復号順は、I0、P1、B2、B3、B4であり、表示順は、I0、B3、B2、B4、P1である。図3(b)に、参照ピクチャリストの例を示す。参照ピクチャリストは、参照ピクチャの候補を表すリストであり、1つのピクチャ(スライス)が1つ以上の参照ピクチャリストを有してもよい。図の例では、対象ピクチャB3は、L0リストRefPicList0およびL1リストRefPicList1の2つの参照ピクチャリストを持つ。対象ピクチャがB3の場合の参照ピクチャは、I0、P1、B2であり、参照ピクチャはこれらのピクチャを要素として持つ。個々の予測ユニットでは、参照ピクチャリストRefPicListX
(X=0または1)中のどのピクチャを実際に参照するかを参照ピクチャインデックスrefIdxLXで指定する。図では、refIdxL0およびrefIdxL1により参照ピクチャP1とB2が参照される例を示す。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、以降では、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別する。
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグme
rge_flagは、これらを識別するためのフラグである。マージモードは、予測リスト利用フラグpredFlagLX(またはインター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めずに、既に処理した近傍PUの予測パラメータから導出する用いるモードである。AMVPモードは、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めるモードである。なお、動きベクトルmvLXは、予測ベクトルmvpLXを識別する予測ベクトル
インデックスmvp_lX_idxと差分ベクトルmvdLXとして符号化される。
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグme
rge_flagは、これらを識別するためのフラグである。マージモードは、予測リスト利用フラグpredFlagLX(またはインター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めずに、既に処理した近傍PUの予測パラメータから導出する用いるモードである。AMVPモードは、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めるモードである。なお、動きベクトルmvLXは、予測ベクトルmvpLXを識別する予測ベクトル
インデックスmvp_lX_idxと差分ベクトルmvdLXとして符号化される。
インター予測識別子inter_pred_idcは、参照ピクチャの種類および数を示す値であり、PRED_L0、PRED_L1、PRED_BIの何れかの値をとる。PRED_L0、PRED_L1は、各々L0リスト、L1リストの参照ピクチャリストで管理された参照ピクチャを用いることを示し、1枚の参
照ピクチャを用いること(単予測)を示す。PRED_BIは2枚の参照ピクチャを用いること
(双予測BiPred)を示し、L0リストとL1リストで管理された参照ピクチャを用いる。予測ベクトルインデックスmvp_lX_idxは予測ベクトルを示すインデックスであり、参照ピクチャインデックスrefIdxLXは、参照ピクチャリストで管理された参照ピクチャを示すインデックスである。
照ピクチャを用いること(単予測)を示す。PRED_BIは2枚の参照ピクチャを用いること
(双予測BiPred)を示し、L0リストとL1リストで管理された参照ピクチャを用いる。予測ベクトルインデックスmvp_lX_idxは予測ベクトルを示すインデックスであり、参照ピクチャインデックスrefIdxLXは、参照ピクチャリストで管理された参照ピクチャを示すインデックスである。
マージインデックスmerge_idxは、処理が完了したPUから導出される予測パラメータ候
補(マージ候補)のうち、いずれかの予測パラメータを復号対象PUの予測パラメータとして用いるかを示すインデックスである。
補(マージ候補)のうち、いずれかの予測パラメータを復号対象PUの予測パラメータとして用いるかを示すインデックスである。
(動きベクトル)
動きベクトルmvLXは、異なる2つのピクチャ上のブロック間のずれ(シフト)量を示す。動きベクトルmvLXに関する予測ベクトル、差分ベクトルを、それぞれ予測ベクトルmvpLX、差分ベクトルmvdLXと呼ぶ。
動きベクトルmvLXは、異なる2つのピクチャ上のブロック間のずれ(シフト)量を示す。動きベクトルmvLXに関する予測ベクトル、差分ベクトルを、それぞれ予測ベクトルmvpLX、差分ベクトルmvdLXと呼ぶ。
(インター予測識別子inter_pred_idcと予測リスト利用フラグpredFlagLX)
インター予測識別子inter_pred_idcと、予測リスト利用フラグpredFlagL0、predFlagL1の関係は以下のとおりであり、相互に変換可能である。
インター予測識別子inter_pred_idcと、予測リスト利用フラグpredFlagL0、predFlagL1の関係は以下のとおりであり、相互に変換可能である。
inter_pred_idc = (predFlagL1<<1) + predFlagL0
predFlagL0 = inter_pred_idc & 1
predFlagL1 = inter_pred_idc >> 1
なお、インター予測パラメータは、予測リスト利用フラグを用いても良いし、インター予測識別子を用いてもよい。また、予測リスト利用フラグを用いた判定は、インター予測識別子を用いた判定に置き替えてもよい。逆に、インター予測識別子を用いた判定は、予測リスト利用フラグを用いた判定に置き替えてもよい。
predFlagL0 = inter_pred_idc & 1
predFlagL1 = inter_pred_idc >> 1
なお、インター予測パラメータは、予測リスト利用フラグを用いても良いし、インター予測識別子を用いてもよい。また、予測リスト利用フラグを用いた判定は、インター予測識別子を用いた判定に置き替えてもよい。逆に、インター予測識別子を用いた判定は、予測リスト利用フラグを用いた判定に置き替えてもよい。
(双予測biPredの判定)
双予測BiPredであるかのフラグbiPredは、2つの予測リスト利用フラグがともに1であるかによって導出できる。たとえば以下の式で導出できる。
双予測BiPredであるかのフラグbiPredは、2つの予測リスト利用フラグがともに1であるかによって導出できる。たとえば以下の式で導出できる。
biPred = (predFlagL0 == 1 && predFlagL1 == 1)
フラグbiPredは、インター予測識別子が2つの予測リスト(参照ピクチャ)を使うことを示す値であるか否かによっても導出できる。たとえば以下の式で導出できる。
フラグbiPredは、インター予測識別子が2つの予測リスト(参照ピクチャ)を使うことを示す値であるか否かによっても導出できる。たとえば以下の式で導出できる。
biPred = (inter_pred_idc == PRED_BI) ? 1 : 0
上記式は、以下の式でも表現できる。
上記式は、以下の式でも表現できる。
biPred = (inter_pred_idc == PRED_BI)
なお、PRED_BIはたとえば3の値を用いることができる。
なお、PRED_BIはたとえば3の値を用いることができる。
(ループフィルタ)
ループフィルタは符号化ループ内に設けたフィルタで、ブロック歪やリンギング歪を除去し、画質を改善するフィルタである。ループフィルタには、主に、デブロッキングフィルタ、サンプル適応オフセット(SAO:Sample Adaptive Offset)、適応ループフィルタ
(ALF:Adaptive Loop Filter)がある。
ループフィルタは符号化ループ内に設けたフィルタで、ブロック歪やリンギング歪を除去し、画質を改善するフィルタである。ループフィルタには、主に、デブロッキングフィルタ、サンプル適応オフセット(SAO:Sample Adaptive Offset)、適応ループフィルタ
(ALF:Adaptive Loop Filter)がある。
デブロッキングフィルタは、ブロック境界を介して互いに隣接する輝度成分の画素のデブロック前画素値の差が予め定められた閾値よりも小さい場合に、当該ブロック境界に対して、輝度および色差成分の画素にデブロッキング処理を施すことによって、当該ブロック境界付近の画像の平滑化を行う。
SAOはデブロッキングフィルタ後に適用するフィルタであり、リンギング歪や量子化歪
を除去する効果がある。SAOはCTU単位の処理であり、画素値をいくつかのカテゴリに分類して、カテゴリ毎に画素単位にオフセットを加減算するフィルタである。SAOのエッジオ
フセット(EO)処理は、対象画素と隣接画素(参照画素)との大小関係に応じて画素値に加算するオフセット値を決定する。
を除去する効果がある。SAOはCTU単位の処理であり、画素値をいくつかのカテゴリに分類して、カテゴリ毎に画素単位にオフセットを加減算するフィルタである。SAOのエッジオ
フセット(EO)処理は、対象画素と隣接画素(参照画素)との大小関係に応じて画素値に加算するオフセット値を決定する。
ALFは、ALF前復号画像に対して、符号化ストリームTeから復号されたALFパラメータ(
フィルタ係数)ALFPを用いた適応的フィルタ処理を施すことによって、ALF済復号画像を
生成する。
フィルタ係数)ALFPを用いた適応的フィルタ処理を施すことによって、ALF済復号画像を
生成する。
フィルタ係数はスライスヘッダ直後に通知され、メモリに格納される。後続のインター予測を用いるスライスあるいはピクチャでは、フィルタ係数自体を通知する以外に、過去に通知され、メモリに格納されたフィルタ係数をインデックスで指定し、フィルタ係数自体を通知しないことで、フィルタ係数の符号化に必要なビット量を削減している。しかしながら、後述する各タイルを独立に復号するためには、ALFはフィルタ係数をタイル単位
で通知、格納し、同じTileIdを持つ後続のタイルにおいてはインデックスで指定されたフィルタ係数を用いて、適応的フィルタ処理を施してもよい。
で通知、格納し、同じTileIdを持つ後続のタイルにおいてはインデックスで指定されたフィルタ係数を用いて、適応的フィルタ処理を施してもよい。
(エントロピー符号化)
エントロピー符号化には、シンタックスの種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックスを可変長符号化する方式と、あらかじめ定められた表、あるいは計算式を用いてシンタックスを可変長符号化する方式がある。前者のCABAC(Context Adaptive Binary Arithmetic Coding)では、符号化あるいは復号したピクチャ毎に更新した確率モデルをメモリに格納する。そして、後続のインター予測を用いるPピクチャ、あるいはBピクチャにおいて、対象ピクチャのコンテキストの初期状態は、メモリに格納された確率モデルの中から、同じスライスタイプ、同じスライスレベルの量子化パラメータを使用したピクチャの確率モデルを選択して、符号化、復号処理に使用する。各タイルを独立に復号するためには、確率モデルはタイル単位でメモリに格納される。そして、同じTileIdを持つ後続のタイルにおいてコンテキストの初期状態は、同じスライスタイプ、同じスライスレベルの量子化パラメータを符号化あるいは復号に使用した既復号タイルの確率モデルを選択してもよい。
エントロピー符号化には、シンタックスの種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックスを可変長符号化する方式と、あらかじめ定められた表、あるいは計算式を用いてシンタックスを可変長符号化する方式がある。前者のCABAC(Context Adaptive Binary Arithmetic Coding)では、符号化あるいは復号したピクチャ毎に更新した確率モデルをメモリに格納する。そして、後続のインター予測を用いるPピクチャ、あるいはBピクチャにおいて、対象ピクチャのコンテキストの初期状態は、メモリに格納された確率モデルの中から、同じスライスタイプ、同じスライスレベルの量子化パラメータを使用したピクチャの確率モデルを選択して、符号化、復号処理に使用する。各タイルを独立に復号するためには、確率モデルはタイル単位でメモリに格納される。そして、同じTileIdを持つ後続のタイルにおいてコンテキストの初期状態は、同じスライスタイプ、同じスライスレベルの量子化パラメータを符号化あるいは復号に使用した既復号タイルの確率モデルを選択してもよい。
(タイル)
図17(a)はピクチャをN個のタイル(実線の矩形、図はN=9の例)に分割した例を示す図
である。タイルはさらに複数のCTU(破線の矩形)に分割される。図17(a)の中央のタイルの左上座標を(xTs,yTs)、幅をwT、高さをhTとする。またピクチャの幅をwPict、高さをhPictとする。なお、タイルの分割数やサイズに関する情報をタイル情報と呼び、詳細は後
述する。
図17(a)はピクチャをN個のタイル(実線の矩形、図はN=9の例)に分割した例を示す図
である。タイルはさらに複数のCTU(破線の矩形)に分割される。図17(a)の中央のタイルの左上座標を(xTs,yTs)、幅をwT、高さをhTとする。またピクチャの幅をwPict、高さをhPictとする。なお、タイルの分割数やサイズに関する情報をタイル情報と呼び、詳細は後
述する。
図17(b)はピクチャをタイルに分割した時の、CTUの符号化、復号順序を示す図である。各タイルに記載されている番号はTileId(ピクチャ内のタイルの識別子)であり、ピクチャ内のタイルに対し左上から右下にラスタースキャン順で番号が割り当てられ、タイルはTileIdの順に処理される。つまりTileIdの昇順に符号化、復号処理される。また、CTUは
各タイル内を左上から右下へラスタースキャン順に処理され、1つのタイル内での処理が終わると、次のタイル内のCTUが処理される。
各タイル内を左上から右下へラスタースキャン順に処理され、1つのタイル内での処理が終わると、次のタイル内のCTUが処理される。
図17(c)は時間方向に連続するタイルを示す図である。図17(c)に示されるように、ビデオシーケンスは、複数の時間方向に連続するピクチャから構成されている。タイルシーケンスは、時間方向に連続する1つ以上の時刻のタイルから構成されている。なお、図中のCVS(Coded Video Sequence)は、あるイントラピクチャから復号順で次のイントラピクチ
ャの直前のピクチャまでのピクチャ群である。
ャの直前のピクチャまでのピクチャ群である。
図18は、タイル情報等に関するシンタックスの例であり、以下、図18(b)、(d)、(a)、(c)の順番に説明する。
タイル情報は、例えば図18(b)に示すように、num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flag、column_width_minus1[i]、row_height_minus1[i]であり、例えば、PPSで通知される。ここで、num_tile_columns_minus1、num_tile_rows_minus1は各々ピクチャ内の水平、垂直方向のタイル数から1を引いた値である。uniform_spacing_flagはピクチャが均等にタイル分割されるか否かを示すフラグである。uniform_spacing_flagの値が1の場合、ピクチャの各タイルの幅、高さは同じに設定され、ピクチャ内の水平、垂直方向のタイル数から導出することができる。
wT = wPict/(num_tile_columns_minus1+1)
hT = hPict/(num_tile_rows_minus1+1)
uniform_spacing_flagの値が0の場合、ピクチャの各タイルの幅、高さは同じに設定され
なくてもよく、各タイルの幅column_width_minus1[i](図17のwT)、高さrow_height_minus1[i](図17のhT)をタイル毎に符号化する。
hT = hPict/(num_tile_rows_minus1+1)
uniform_spacing_flagの値が0の場合、ピクチャの各タイルの幅、高さは同じに設定され
なくてもよく、各タイルの幅column_width_minus1[i](図17のwT)、高さrow_height_minus1[i](図17のhT)をタイル毎に符号化する。
(タイル境界制限)
タイル情報はPPSで通知されるため、ピクチャ毎にタイルの位置やサイズを変更するこ
とができる。一方、タイルシーケンスを独立に復号する場合、つまり同じTileIdをもつタイルは、異なるTileIdをもつタイルの情報を参照することなく復号可能とする場合には、ピクチャ毎にタイルの位置やサイズを変更しなくても良い。つまり、各タイルが異なる時刻のピクチャ(参照ピクチャ)を参照する場合に、CVSの全てのピクチャにおいて、同一
のタイル分割を適用してもよい。この場合、同じTileIDをもつタイルは、CVSの全ピクチ
ャを通して、左上座標、幅、高さは同じに設定する。
タイル情報はPPSで通知されるため、ピクチャ毎にタイルの位置やサイズを変更するこ
とができる。一方、タイルシーケンスを独立に復号する場合、つまり同じTileIdをもつタイルは、異なるTileIdをもつタイルの情報を参照することなく復号可能とする場合には、ピクチャ毎にタイルの位置やサイズを変更しなくても良い。つまり、各タイルが異なる時刻のピクチャ(参照ピクチャ)を参照する場合に、CVSの全てのピクチャにおいて、同一
のタイル分割を適用してもよい。この場合、同じTileIDをもつタイルは、CVSの全ピクチ
ャを通して、左上座標、幅、高さは同じに設定する。
タイル情報がCVSを通じて変化しないことは、図18(d)に示すvui_parameter()のtiles_fixed_structure_flagの値を1にセットすることで通知する。つまり、tiles_fixed_structure_flagの値が1の場合、CVSを通して、PPSで通知されるnum_tile_columns_minus1、 num_tile_rows_minus1、uniform_spacing_flag、 column_width_minus1[i]、row_height_minus1[i]、loop_filter_across_tiles_enabled_flag(タイル境界でのループフィルタのオ
ンオフ)の値は一意としてもよい。tiles_fixed_structure_flagの値が1の場合、CVS内では、TileIdが同じタイルは、時刻(POC:Picture Order Count)が異なるピクチャにおいても、ピクチャ上のタイル位置(タイルの左上座標、幅、高さ)は変更されない。また、tiles_fixed_structure_flagの値が0である場合、タイルシーケンスは時刻によってサイ
ズが異なってもよい。
ンオフ)の値は一意としてもよい。tiles_fixed_structure_flagの値が1の場合、CVS内では、TileIdが同じタイルは、時刻(POC:Picture Order Count)が異なるピクチャにおいても、ピクチャ上のタイル位置(タイルの左上座標、幅、高さ)は変更されない。また、tiles_fixed_structure_flagの値が0である場合、タイルシーケンスは時刻によってサイ
ズが異なってもよい。
図18(a)はシーケンスパラメータセットSPSの一部を抜粋したシンタックス表である。independent_tile_flagは、タイルシーケンスが空間方向に加え、時間方向でも独立に符号
化、復号できるか否かを示すフラグである。independent_tile_flagの値が1である場合、タイルシーケンスは独立に符号化、復号できることを意味する。この場合、タイルの符号化・復号及び符号化データのシンタックスにおいて下記の制約が課してもよい。
(制約1)CVS内では、タイルはTileIdが異なるタイルの情報を参照しない。
(制約2)CVSを通して、PPSで通知されるピクチャ内の水平、垂直方向のタイル数、タイルの幅、タイルの高さは同じである。CVS内では、TileIdが同じタイルは、時刻(POC)が異なるピクチャにおいても、ピクチャ上のタイル位置(タイルの左上座標、幅、高さ)は変更されない。vui_parameter()のtiles_fixed_structure_flagの値は1に設定する。
化、復号できるか否かを示すフラグである。independent_tile_flagの値が1である場合、タイルシーケンスは独立に符号化、復号できることを意味する。この場合、タイルの符号化・復号及び符号化データのシンタックスにおいて下記の制約が課してもよい。
(制約1)CVS内では、タイルはTileIdが異なるタイルの情報を参照しない。
(制約2)CVSを通して、PPSで通知されるピクチャ内の水平、垂直方向のタイル数、タイルの幅、タイルの高さは同じである。CVS内では、TileIdが同じタイルは、時刻(POC)が異なるピクチャにおいても、ピクチャ上のタイル位置(タイルの左上座標、幅、高さ)は変更されない。vui_parameter()のtiles_fixed_structure_flagの値は1に設定する。
上述の(制約1)「タイルはTileIdが異なるタイルの情報を参照しない」について、詳細に説明する。
図19は時間方向(異なるピクチャ間)のタイルの参照について説明する図である。
図19(a)は、時刻t0のイントラピクチャPict(t0)をN個のタイルに分割した例である。図19(b)は、時刻t1=t0+1のインターピクチャPict(t1)をN個のタイルに分割した例である。Pict(t1)はPict(t0)を参照する。図19(c)は、時刻t2=t0+2のインターピクチャPict(t2)をN個のタイルに分割した例である。Pict(t2)はPict(t1)を参照する。図中、Tile(n,t)は時刻tのTileId=n(n=0..N-1)のタイルを表す。上述の(制約2)から、どの時刻においても、TileId=nのタイルの左上座標、幅、高さは同じである。
図19(a)は、時刻t0のイントラピクチャPict(t0)をN個のタイルに分割した例である。図19(b)は、時刻t1=t0+1のインターピクチャPict(t1)をN個のタイルに分割した例である。Pict(t1)はPict(t0)を参照する。図19(c)は、時刻t2=t0+2のインターピクチャPict(t2)をN個のタイルに分割した例である。Pict(t2)はPict(t1)を参照する。図中、Tile(n,t)は時刻tのTileId=n(n=0..N-1)のタイルを表す。上述の(制約2)から、どの時刻においても、TileId=nのタイルの左上座標、幅、高さは同じである。
図19(b)において、タイルTile(n,t1)内のCU1、CU2、CU3は、図19(a)のブロックBLK1、BLK2、BLK3を参照する。この場合、BLK1とBLK3はタイルTile(n,t0)外のタイルに含まれる
ブロックであり、これらを参照するには、時刻t0において、Tile(n,t0)だけではなく、Pict(t0)全体を復号する必要がある。つまりTileId=nに対応するタイルシーケンスを時刻t0、t1で復号するだけではタイルTile(n,t1)を復号することはできず、TileId=nに加えてTileId=n以外のタイルシーケンスの復号も必要である。従ってタイルシーケンスを独立に復号するためには、タイル内のCUの動き補償画像を導出する場合に参照する参照ピクチャ内の参照画素がコロケートタイル(参照ピクチャ上の同じ位置のタイル)内に含まれる必要がある。
ブロックであり、これらを参照するには、時刻t0において、Tile(n,t0)だけではなく、Pict(t0)全体を復号する必要がある。つまりTileId=nに対応するタイルシーケンスを時刻t0、t1で復号するだけではタイルTile(n,t1)を復号することはできず、TileId=nに加えてTileId=n以外のタイルシーケンスの復号も必要である。従ってタイルシーケンスを独立に復号するためには、タイル内のCUの動き補償画像を導出する場合に参照する参照ピクチャ内の参照画素がコロケートタイル(参照ピクチャ上の同じ位置のタイル)内に含まれる必要がある。
図19(c)において、タイルTile(n,t2)の右端の境界に隣接するCU4は時間方向の予測ベクトル候補として、図19(b)に示す時刻t1のピクチャ内におけるCU4'の右下ブロックCU4BRを参照し、CU4BRの動きベクトルを予測ベクトル候補として予測ベクトル候補リスト(マー
ジ候補リスト)に格納する。しかしながらタイルの右端のCUではCU4BRはコロケートタイ
ル外に位置し、CU4BRを参照するには、時刻t1において、Tile(n,t1)だけではなく、少な
くともTile(n+1,t1)を復号する必要がある。つまりTileId=nのタイルシーケンスを復号するだけではタイルTile(n,t2)を復号することはできない。従ってタイルシーケンスを独立に復号するためには、時間方向の予測ベクトル候補として参照する参照ピクチャ上のブロックがコロケートタイル内に含まれる必要がある。上記の制約の具体的な実現方法を、以下の画像復号装置および画像符号化装置において説明する。
ジ候補リスト)に格納する。しかしながらタイルの右端のCUではCU4BRはコロケートタイ
ル外に位置し、CU4BRを参照するには、時刻t1において、Tile(n,t1)だけではなく、少な
くともTile(n+1,t1)を復号する必要がある。つまりTileId=nのタイルシーケンスを復号するだけではタイルTile(n,t2)を復号することはできない。従ってタイルシーケンスを独立に復号するためには、時間方向の予測ベクトル候補として参照する参照ピクチャ上のブロックがコロケートタイル内に含まれる必要がある。上記の制約の具体的な実現方法を、以下の画像復号装置および画像符号化装置において説明する。
また、independent_tile_flagの値が0である場合、タイルシーケンスが独立に復号できなくてもよいことを意味する。
(画像復号装置の構成)
図20(a)に本発明の画像復号装置(動画像復号装置)2000を示す。画像復号装置2000は
、ヘッダ情報復号部2001、タイル復号部2002a〜2002nおよびタイル合成部2003を含んで構成される。
図20(a)に本発明の画像復号装置(動画像復号装置)2000を示す。画像復号装置2000は
、ヘッダ情報復号部2001、タイル復号部2002a〜2002nおよびタイル合成部2003を含んで構成される。
ヘッダ情報復号部2001は、外部から入力され、NAL(network abstraction layer)ユニット単位で符号化された符号化ストリームTeを復号する。また、ヘッダ情報復号部2001は、外部から入力された、ディスプレイ等に表示すべき画像領域を示す制御情報から、表示に必要なタイル(TileId)を導出する。また、ヘッダ情報復号部2001は、符号化ストリームTeから表示に必要な符号化タイルを抽出し、タイル復号部2002a〜2002nに伝送する。また、ヘッダ情報復号部2001は、PPSを復号して得られたタイル情報(タイルの分割に関す
る情報)と、復号されるタイルのTileIdをタイル合成部2003に伝送する。
る情報)と、復号されるタイルのTileIdをタイル合成部2003に伝送する。
タイル復号部2002a〜2002nは、各符号化タイルを復号し、復号したタイルをタイル合成部2003に伝送する。
ここで、タイル復号部2002a〜2002nは、タイルシーケンスを1つの独立なビデオシーケンスとして復号処理を行うため、復号処理を行う際に時間的にも空間的にもタイルシーケンス間の予測情報を参照しない。すなわち、タイル復号部2002a〜2002nは、あるピクチャ内のタイルを復号する場合に、別の(異なるTileIdをもつ)タイルシーケンスのタイルを参照しない。
このように、タイル復号部2002a〜2002nが各々タイルを復号するため、複数のタイルを並列に復号処理することも、1つのタイルのみを独立して復号することもできる。その結果、タイル復号部2002a〜2002nによれば、必要最小限の復号処理のみ実行することで表示に必要な画像を復号できる等、効率よく復号処理を実行することができる。
タイル合成部2003は、ヘッダ情報復号部2001から伝送されたタイル情報および復号されるタイルのTileIdと、タイル復号部2002a〜2002nによって復号されたタイルとを参照し、表示に必要な復号画像Tdを生成、出力する。
(タイル復号部の構成)
タイル復号部2002a〜2002nの構成について説明する。以下に一例として、タイル復号部2002aの構成を、図5を用いて説明する。図5は、タイル復号部2002a〜2002nの1つであ
る2002の構成を示すブロック図である。タイル復号部2002は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。なお、後述のタイル符号化部2012に合わせ、タイル復号部2002にループフィルタ305が含まれない構成もある。
タイル復号部2002a〜2002nの構成について説明する。以下に一例として、タイル復号部2002aの構成を、図5を用いて説明する。図5は、タイル復号部2002a〜2002nの1つであ
る2002の構成を示すブロック図である。タイル復号部2002は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。なお、後述のタイル符号化部2012に合わせ、タイル復号部2002にループフィルタ305が含まれない構成もある。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
また、以降では処理の単位としてCTU、CU、PU、TUを使用した例を記載するが、この例
に限らず、TUあるいはPU単位の代わりにCU単位で処理をしてもよい。あるいはCTU、CU、PU、TUをブロックと読み替え、ブロック単位の処理としてもよい。
に限らず、TUあるいはPU単位の代わりにCU単位で処理をしてもよい。あるいはCTU、CU、PU、TUをブロックと読み替え、ブロック単位の処理としてもよい。
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測パラメータおよび、差分画像を生成するための残
差情報などがある。
差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードpredMode、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスref_idx_lX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLXである。どの符号を復号するかの制御は、予測パラメータ復号部3
02の指示に基づいて行われる。エントロピー復号部301は、量子化変換係数を逆量子化・逆変換部311に出力する。この量子化変換係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)、DST(Discrete Sine Transform、離散サイン変換)、KLT(Karyhnen Loeve Transform、カルーネンレーベ変換
)等の周波数変換を行い量子化して得られる係数である。
02の指示に基づいて行われる。エントロピー復号部301は、量子化変換係数を逆量子化・逆変換部311に出力する。この量子化変換係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)、DST(Discrete Sine Transform、離散サイン変換)、KLT(Karyhnen Loeve Transform、カルーネンレーベ変換
)等の周波数変換を行い量子化して得られる係数である。
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してインター予測パラメータを復号する。また、インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。インター予測パラメータ復号部303の詳細については後述する。
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータを復号する。イントラ予測パラメータとは、CUを1つのピクチャ内で予測する処理で用いるパラメータ、例えば、イントラ予測モードIntraPredModeである。
イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)、LMモード(35)の何れかを用いるものである。イントラ予測パラメータ復号部304は、輝度モードと色差モードが同じであるか否かを示すフラグを復号し、フラグが輝度モードと同じモードであることを示せば、IntraPredModeCにIntraPredModeYを割り当て、フラグが輝度モードと異なるモードであることを示せば、IntraPredModeCとして、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)、LMモード(35)を復号しても良い。
ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ313、サンプル適応オフセット(SAO)314、適応ループフィルタ(ALF)315等のフィルタを施す。なお、ループフィルタ305はタイル符号化部2012と対になっていれば、必ずしも上記3種類のフィルタを含まなくてもよく、例えばデブロッキングフィルタ313のみの構成であってもよい。
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、復号対象のピクチャ及びCTUあるいはCU毎に予め定めた位置に記憶する。
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及び予測ユニット(もしくはサブブロック、固定サイズブロック、ピクセル)毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部3
03が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXがある。
03が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXがある。
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてPU(ブロック)もしくはサブブロックの予測画像を生成する。
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてインター予測によりPU(ブロック)もしくはサブブロックの予測画像を生成する。
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(L0リスト、もしくはL1リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象PUを基準として動きベクトルmvLXが示す位置にある参照ピクチャブロックを参照ピクチャメモリ306から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックをもとに補間を行ってPUの予測画像(補間画像、動き補償画像)を生成する。インター予測画像生成部309は、生成したPUの予測画像を加算部312に出力する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロックと呼ぶ)であり、PUもしくはサブブロックの予測画像を生成するために参照する領域である。
(タイル境界パディング)
参照ピクチャブロック(参照ブロック)は、予測リスト利用フラグpredFlagLX=1の参照ピクチャリストに対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャ上にあって、対象CU(ブロック)の位置を基準として、動きベクトルmvLXが示す位置のブロックである。既に説明したように、対象タイルと同じTileIdをもつ参照ピクチャ上のタイル(コロケートタイル)内に、参照ブロックの画素が位置する保証はない。そこで、一例として、参照ピクチャにおいて、図21(a)に示すように各タイルの外側をパディング(タイ
ル境界の画素値で補填する)することで、コロケートタイル外の画素値を参照することなく参照ブロックを読みだすことができる。
参照ピクチャブロック(参照ブロック)は、予測リスト利用フラグpredFlagLX=1の参照ピクチャリストに対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャ上にあって、対象CU(ブロック)の位置を基準として、動きベクトルmvLXが示す位置のブロックである。既に説明したように、対象タイルと同じTileIdをもつ参照ピクチャ上のタイル(コロケートタイル)内に、参照ブロックの画素が位置する保証はない。そこで、一例として、参照ピクチャにおいて、図21(a)に示すように各タイルの外側をパディング(タイ
ル境界の画素値で補填する)することで、コロケートタイル外の画素値を参照することなく参照ブロックを読みだすことができる。
タイル境界パディング(タイル外パディング)は、後述する動き補償部3091による動き補償において、参照画素の位置(xIntL+i, yIntL+j)の画素値として、以下の位置xRef+i, yRef+jの画素値refImg[xRef+i][yRef+j]を用いることで実現する。すなわち、参照画素参照時に、参照位置を、タイルの上下左右の境界画素の位置でクリッピングすることで実現する。
xRef + i = Clip3( xTs, xYs + wT - 1, xIntL + i ) (式PAD-1)
yRef + j = Clip3( yTs, xYs + wT - 1, yIntL + j )
ここで、(xTs,yTs)は、対象ブロックが位置する対象タイルの左上座標、wT、hTは、対象
タイルの幅と高さである。
yRef + j = Clip3( yTs, xYs + wT - 1, yIntL + j )
ここで、(xTs,yTs)は、対象ブロックが位置する対象タイルの左上座標、wT、hTは、対象
タイルの幅と高さである。
なお、xIntL、yIntLは、ピクチャの左上座標を基準とした対象ブロックの左上座標を(x
b,yb)、動きベクトルを(mvLX[0],mvLX[1])とすると、
xIntL = xb + ( mvLX[0]>>log2(M) ) (式PAD-2)
yIntL = yb + ( mvLX[1]>>log2(M) )
で導出しても良い。ここでMは、動きベクトルの精度が1/Mペル(pel)であることを示す。
b,yb)、動きベクトルを(mvLX[0],mvLX[1])とすると、
xIntL = xb + ( mvLX[0]>>log2(M) ) (式PAD-2)
yIntL = yb + ( mvLX[1]>>log2(M) )
で導出しても良い。ここでMは、動きベクトルの精度が1/Mペル(pel)であることを示す。
座標(xRef+i,yRef+j)の画素値を読み出すことで、図21(a)のパディングを実現することができる。
independent_tile_flag=1の場合に、このようにタイル境界をパディングすることで、
インター予測で動きベクトルがコロケートタイル外を指しても、コロケートタイル内の画素値を用いて参照画素を置き換えるので、タイルシーケンスを独立にインター予測を用いて復号することができる。
インター予測で動きベクトルがコロケートタイル外を指しても、コロケートタイル内の画素値を用いて参照画素を置き換えるので、タイルシーケンスを独立にインター予測を用いて復号することができる。
(タイル境界動きベクトル制限)
タイル境界パディングの他の制限方法として、タイル境界動きベクトル制限がある。本処理では、後述する動き補償部3091による動き補償において、参照画素の位置(xIntL+i, yIntL+j)がコロケートタイル内に入るように動きベクトルを制限(クリッピング)する。
タイル境界パディングの他の制限方法として、タイル境界動きベクトル制限がある。本処理では、後述する動き補償部3091による動き補償において、参照画素の位置(xIntL+i, yIntL+j)がコロケートタイル内に入るように動きベクトルを制限(クリッピング)する。
本処理では、対象ブロック(対象サブブロックもしくは対象ブロック)の左上座標(xb,
yb)、ブロックのサイズ(W, H)、対象タイルの左上座標(xT, yT)、対象タイルの幅と高さがwT、hTである場合に、ブロックの動きベクトルmvLXを入力とし、制限された動きベクトルmvLXを出力する。
yb)、ブロックのサイズ(W, H)、対象タイルの左上座標(xT, yT)、対象タイルの幅と高さがwT、hTである場合に、ブロックの動きベクトルmvLXを入力とし、制限された動きベクトルmvLXを出力する。
対象ブロックの補間画像生成における参照画素の左端posL、右端posR、上端posU、下端posDは各々、以下である。なお、NTAPは補間画像生成に使用するフィルタのタップ数である。
posL = xb + ( mvLX[0]>>log2(M) ) - NTAP/2 + 1 (式CLIP1)
posR = xb + W - 1 + ( mvLX[0]>>log2(M) ) + NTAP/2
posU = yb + ( mvLX[1]>>log2(M) ) - NTAP/2 + 1
posD = yb + H - 1 + ( mvLX[1]>>log2(M) ) + NTAP/2
上記参照画素がコロケートタイル内に入るための制限は以下のとおりである。
posR = xb + W - 1 + ( mvLX[0]>>log2(M) ) + NTAP/2
posU = yb + ( mvLX[1]>>log2(M) ) - NTAP/2 + 1
posD = yb + H - 1 + ( mvLX[1]>>log2(M) ) + NTAP/2
上記参照画素がコロケートタイル内に入るための制限は以下のとおりである。
posL >= xTs (式CLIP2)
posR <= xTs + wT - 1
posU >= yTs
posD <= yTs + hT - 1
である。以下の変形ができる。
posR <= xTs + wT - 1
posU >= yTs
posD <= yTs + hT - 1
である。以下の変形ができる。
posL = xb + ( mvLX[0]>>log2(M) ) - NTAP/2 + 1 >= xTs (式CLIP3)
( mvLX[0]>>log2(M) ) >= xTs - xb + NTAP/2 - 1
posR = xb + W - 1 + ( mvLX[0]>>log2(M) ) + NTAP/2 <= xTs + wT - 1
( mvLX[0]>>log2(M) ) <= xTs + wT - 1 - xb - W + 1 - NTAP/2
posU = yb + ( mvLX[1]>>log2(M) ) - NTAP/2 + 1 >= yTs
( mvLX[0]>>log2(M) ) >= yTs - yb + NTAP/2 - 1
posD = yb + H - 1+ ( mvLX[1]>>log2(M) ) + NTAP/2 <= yTs + hT - 1
( mvLX[1]>>log2(M) ) <= yTs + hT - 1 - yb - H + 1 - NTAP/2
したがって、動きベクトルの制限は、以下の式で導出できる。
( mvLX[0]>>log2(M) ) >= xTs - xb + NTAP/2 - 1
posR = xb + W - 1 + ( mvLX[0]>>log2(M) ) + NTAP/2 <= xTs + wT - 1
( mvLX[0]>>log2(M) ) <= xTs + wT - 1 - xb - W + 1 - NTAP/2
posU = yb + ( mvLX[1]>>log2(M) ) - NTAP/2 + 1 >= yTs
( mvLX[0]>>log2(M) ) >= yTs - yb + NTAP/2 - 1
posD = yb + H - 1+ ( mvLX[1]>>log2(M) ) + NTAP/2 <= yTs + hT - 1
( mvLX[1]>>log2(M) ) <= yTs + hT - 1 - yb - H + 1 - NTAP/2
したがって、動きベクトルの制限は、以下の式で導出できる。
mvLX[0] = Clip3 (vxmin, vxmax, mvLX[0]) (式CLIP4)
mvLX[1] = Clip3 (vymin, vymax, mvLX[1])
ここで
vxmin = (xTs - xb + NTAP/2 - 1)<<log2(M) (式CLIP5)
vxmax = (xTs + wT - xb - W - NTAP/2)<<log2(M)
vymin = (yTs - yb + NTAP/2 - 1)<<log2(M)
vymax = (yTs + hT - yb - H - NTAP/2)<<log2(M)
independent_tile_flag=1の場合に、このように動きベクトルを制限することにより、
インター予測で動きベクトルがコロケートタイル外を常に指すことができる。この構成においても、タイルシーケンスを独立にインター予測を用いて復号することができる。
mvLX[1] = Clip3 (vymin, vymax, mvLX[1])
ここで
vxmin = (xTs - xb + NTAP/2 - 1)<<log2(M) (式CLIP5)
vxmax = (xTs + wT - xb - W - NTAP/2)<<log2(M)
vymin = (yTs - yb + NTAP/2 - 1)<<log2(M)
vymax = (yTs + hT - yb - H - NTAP/2)<<log2(M)
independent_tile_flag=1の場合に、このように動きベクトルを制限することにより、
インター予測で動きベクトルがコロケートタイル外を常に指すことができる。この構成においても、タイルシーケンスを独立にインター予測を用いて復号することができる。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたPUのうち、復号対象PUから予め定めた範囲にある隣接PUを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、復号対象PUがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接PUのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した隣接PUに基づいてイントラ予測モードIntraPredModeが示す予測モードで予測を行ってPUの予測画像を生成する。イントラ予測画
像生成部310は、生成したPUの予測画像を加算部312に出力する。
像生成部310は、生成したPUの予測画像を加算部312に出力する。
イントラ予測パラメータ復号部304において、輝度と色差で異なるイントラ予測モードを導出する場合、イントラ予測画像生成部310は、輝度予測モードIntraPredModeYに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)の何れかによって輝度のPUの予測画像を生成し、色差予測モードIntraPredModeCに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)、LMモード(35)の何れかによって色差のPUの予測画像を生成する。
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化変換係数を逆量子化して変換係数を求める。逆量子化・逆変換部311は、求めた変換係数について逆DCT、逆DST、逆KLT等の逆周波数変換を行い、予測残差信号を算出する。逆量子化
・逆変換部311は、算出した残差信号を加算部312に出力する。
・逆変換部311は、算出した残差信号を加算部312に出力する。
加算部312は、インター予測画像生成部309またはイントラ予測画像生成部310から入力されたPUの予測画像と逆量子化・逆変換部311から入力された残差信号を画素毎に加算して、PUの復号画像を生成する。加算部312は、生成したブロックの復号画像をデブロッキングフィルタ313、SAO(サンプル適応オフセット)部314、またはA
LF315の少なくとも何れかに出力する。
LF315の少なくとも何れかに出力する。
(インター予測パラメータ復号部の構成)
次に、インター予測パラメータ復号部303の構成について説明する。
次に、インター予測パラメータ復号部303の構成について説明する。
図12は、本実施形態に係るインター予測パラメータ復号部303の構成を示す概略図である。インター予測パラメータ復号部303は、インター予測パラメータ復号制御部3031、AMVP予測パラメータ導出部3032、加算部3035、マージ予測パラメータ導出部3036およびサブブロック予測パラメータ導出部3037を含んで構成される。
インター予測パラメータ復号制御部3031は、インター予測に関連する符号(シンタックス要素)の復号をエントロピー復号部301に指示し、符号化データに含まれる符号(シンタックス要素)、例えば、PU分割モードpart_mode、マージフラグmerge_flag、マ
ージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデ
ックスref_idx_lX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLXを抽出す
る。
ージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデ
ックスref_idx_lX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLXを抽出す
る。
インター予測パラメータ復号制御部3031は、まず、マージフラグmerge_flagを抽出する。インター予測パラメータ復号制御部3031が、あるシンタックス要素を抽出すると表現する場合は、あるシンタックス要素の復号をエントロピー復号部301に指示し、該当のシンタックス要素を符号化データから読み出すことを意味する。
マージフラグmerge_flagが0、すなわち、AMVP予測モードを示す場合、インター予測パラメータ復号制御部3031は、エントロピー復号部301を用いて符号化データからAMVP予測パラメータを抽出する。AMVP予測パラメータとして、例えば、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLXがある。AMVP予測パラメータ導出部3032は予測ベクトルイ
ンデックスmvp_lX_idxから予測ベクトルmvpLXを導出する。詳細は後述する。インター予
測パラメータ復号制御部3031は、差分ベクトルmvdLXを加算部3035に出力する。
加算部3035では、予測ベクトルmvpLXと差分ベクトルmvdLXを加算し、動きベクトルを導出する。
ンデックスmvp_lX_idxから予測ベクトルmvpLXを導出する。詳細は後述する。インター予
測パラメータ復号制御部3031は、差分ベクトルmvdLXを加算部3035に出力する。
加算部3035では、予測ベクトルmvpLXと差分ベクトルmvdLXを加算し、動きベクトルを導出する。
マージフラグmerge_flagが1、すなわち、マージ予測モードを示す場合、インター予測パラメータ復号制御部3031は、マージ予測に係る予測パラメータとして、マージインデックスmerge_idxを抽出する。インター予測パラメータ復号制御部3031は、抽出し
たマージインデックスmerge_idxをマージ予測パラメータ導出部3036(詳細は後述す
る)に出力し、サブブロック予測モードフラグsubPbMotionFlagをサブブロック予測パラ
メータ導出部3037に出力する。サブブロック予測パラメータ導出部3037は、サブブロック予測モードフラグsubPbMotionFlagの値に応じて、PUを複数のサブブロックに分
割し、サブブロック単位で動きベクトルを導出する。すなわち、サブブロック予測モードでは、予測ブロックは4x4もしくは8x8という小さいブロック単位で予測される。後述のタイル符号化部2012においては、CUを複数のパーティション(2NxN、Nx2N、NxNなどのPU)
に分割し、パーティション単位で予測パラメータのシンタックスを符号化する方法に対して、サブブロック予測モードでは複数のサブブロックを集合(セット)にまとめ、当該集合毎に予測パラメータのシンタックスを符号化するため、少ない符号量で多くのサブブロックの動き情報を符号化することができる。
たマージインデックスmerge_idxをマージ予測パラメータ導出部3036(詳細は後述す
る)に出力し、サブブロック予測モードフラグsubPbMotionFlagをサブブロック予測パラ
メータ導出部3037に出力する。サブブロック予測パラメータ導出部3037は、サブブロック予測モードフラグsubPbMotionFlagの値に応じて、PUを複数のサブブロックに分
割し、サブブロック単位で動きベクトルを導出する。すなわち、サブブロック予測モードでは、予測ブロックは4x4もしくは8x8という小さいブロック単位で予測される。後述のタイル符号化部2012においては、CUを複数のパーティション(2NxN、Nx2N、NxNなどのPU)
に分割し、パーティション単位で予測パラメータのシンタックスを符号化する方法に対して、サブブロック予測モードでは複数のサブブロックを集合(セット)にまとめ、当該集合毎に予測パラメータのシンタックスを符号化するため、少ない符号量で多くのサブブロックの動き情報を符号化することができる。
詳細に説明すると、サブブロック予測パラメータ導出部3037は、サブブロック予測モードにてサブブロック予測を行う、時空間サブブロック予測部30371、アフィン予測部30372、マッチング動き導出部30373、OBMC予測部30374の少なくとも一つ
を備える。
を備える。
(サブブロック予測モードフラグ)
ここで、タイル復号部2002、タイル符号化部2012(詳細は後述する)における、あるPUの予測モードがサブブロック予測モードであるか否かを示すサブブロック予測モードフラグsubPbMotionFlagの導出方法について説明する。タイル復号部2002、タイル符号化部2012は、後述する空間サブブロック予測SSUB、時間サブブロック予測TSUB、アフィン予測AFFINE、マッチング動き導出MATのいずれを用いたかに基づいて、サブブロック予測モードフラグsubPbMotionFlagを導出する。たとえば、あるPUで選択された予測モードをN(たとえ
ばNは選択されたマージ候補を示すラベル)とした場合には、以下の式によりサブブロッ
ク予測モードフラグsubPbMotionFlagを導出してもよい。
ここで、タイル復号部2002、タイル符号化部2012(詳細は後述する)における、あるPUの予測モードがサブブロック予測モードであるか否かを示すサブブロック予測モードフラグsubPbMotionFlagの導出方法について説明する。タイル復号部2002、タイル符号化部2012は、後述する空間サブブロック予測SSUB、時間サブブロック予測TSUB、アフィン予測AFFINE、マッチング動き導出MATのいずれを用いたかに基づいて、サブブロック予測モードフラグsubPbMotionFlagを導出する。たとえば、あるPUで選択された予測モードをN(たとえ
ばNは選択されたマージ候補を示すラベル)とした場合には、以下の式によりサブブロッ
ク予測モードフラグsubPbMotionFlagを導出してもよい。
subPbMotionFlag = (N == TSUB) || (N == SSUB) || (N == AFFINE) || (N == MAT)
ここで||は、論理和を示す(以下同様)。
ここで||は、論理和を示す(以下同様)。
また、タイル復号部2002、タイル符号化部2012は、空間サブブロック予測SSUB、時間サブブロック予測TSUB、アフィン予測AFFINE、マッチング動き導出MAT、OBMC予測OBMCのう
ち、一部の予測を行う構成でもよい。すなわち、タイル復号部2002、タイル復号部2002が空間サブブロック予測SSUB、アフィン予測AFFINEを行う構成である場合には、以下のようにサブブロック予測モードフラグsubPbMotionFlagを導出してもよい。
ち、一部の予測を行う構成でもよい。すなわち、タイル復号部2002、タイル復号部2002が空間サブブロック予測SSUB、アフィン予測AFFINEを行う構成である場合には、以下のようにサブブロック予測モードフラグsubPbMotionFlagを導出してもよい。
subPbMotionFlag = (N == SSUB)|| (N == AFFINE)
図7は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362、マージ候補格納部30363を備える。マージ候補格納部30363は、マージ候補導出部30361から入力されたマージ候補を格納する。なお、マージ候補は、予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成されている。マージ候補格納部30363において、格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。
図7は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362、マージ候補格納部30363を備える。マージ候補格納部30363は、マージ候補導出部30361から入力されたマージ候補を格納する。なお、マージ候補は、予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成されている。マージ候補格納部30363において、格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。
マージ候補導出部30361は、すでに復号処理が行われた隣接PUの動きベクトルと参照ピクチャインデックスrefIdxLXをそのまま用いてマージ候補を導出する。それ以外にアフィン予測を用いてマージ候補を導出してもよい。この方法を以下で詳細に説明する。マージ候補導出部30361は、アフィン予測を、後述する空間マージ候補導出処理、時間マージ候補導出処理、結合マージ候補導出処理、およびゼロマージ候補導出処理に用いてもよい。なお、アフィン予測はサブブロック単位で行われ、予測パラメータはサブブロック毎に予測パラメータメモリ307に格納されている。あるいは、アフィン予測は画素単位で行われてもよい。
(空間マージ候補導出処理)
空間マージ候補導出処理として、マージ候補導出部30361は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、読み出した予測パラメータをマージ候補として導出し、マージ候補リストmergeCandList[](予
測ベクトル候補リストmvpListLX[])に格納する。読み出される予測パラメータは、復号
対象PUから予め定めた範囲内にあるPU(例えば、図21(b)に示す復号対象PUの左下端、左
上端、右上端にそれぞれ接するPUの全部または一部)のそれぞれに係る予測パラメータである。
空間マージ候補導出処理として、マージ候補導出部30361は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、読み出した予測パラメータをマージ候補として導出し、マージ候補リストmergeCandList[](予
測ベクトル候補リストmvpListLX[])に格納する。読み出される予測パラメータは、復号
対象PUから予め定めた範囲内にあるPU(例えば、図21(b)に示す復号対象PUの左下端、左
上端、右上端にそれぞれ接するPUの全部または一部)のそれぞれに係る予測パラメータである。
(時間マージ候補導出処理)
時間マージ導出処理として、マージ候補導出部30361は、参照ピクチャにおいて図21(c)に示すコロケートブロックの右下(ブロックBR)、あるいは、復号対象PUの中心の
座標を含むブロック(ブロックC)の予測パラメータを予測パラメータメモリ307から
読みだしマージ候補し、マージ候補リストmergeCandList[]に格納する。ブロックCの動きベクトルよりもブロックBRの動きベクトルの方が、空間マージ候補となるブロック位置から離れているので、ブロックBRは空間マージ候補の動きベクトルとは異なる動きベクトルをもつ可能性が高い。従って一般的にブロックBRを優先してマージ候補リストmergeCandList[]に加え、ブロックBRが動きベクトルを持たない(例えばイントラ予測ブロック)場
合や、ブロックBRがピクチャ外に位置する場合は、ブロックCの動きベクトルを予測ベク
トル候補に加える。異なる動きベクトルが予測候補として加わることで、予測ベクトルの選択肢が増え、符号化効率が高まる。参照ピクチャの指定方法は、例えば、スライスヘッダにおいて指定された参照ピクチャインデックスrefIdxLXでも良いし、復号対象PUに隣接するPUの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。
時間マージ導出処理として、マージ候補導出部30361は、参照ピクチャにおいて図21(c)に示すコロケートブロックの右下(ブロックBR)、あるいは、復号対象PUの中心の
座標を含むブロック(ブロックC)の予測パラメータを予測パラメータメモリ307から
読みだしマージ候補し、マージ候補リストmergeCandList[]に格納する。ブロックCの動きベクトルよりもブロックBRの動きベクトルの方が、空間マージ候補となるブロック位置から離れているので、ブロックBRは空間マージ候補の動きベクトルとは異なる動きベクトルをもつ可能性が高い。従って一般的にブロックBRを優先してマージ候補リストmergeCandList[]に加え、ブロックBRが動きベクトルを持たない(例えばイントラ予測ブロック)場
合や、ブロックBRがピクチャ外に位置する場合は、ブロックCの動きベクトルを予測ベク
トル候補に加える。異なる動きベクトルが予測候補として加わることで、予測ベクトルの選択肢が増え、符号化効率が高まる。参照ピクチャの指定方法は、例えば、スライスヘッダにおいて指定された参照ピクチャインデックスrefIdxLXでも良いし、復号対象PUに隣接するPUの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。
例えばブロックCの位置(xColCtr, yColCtr)とブロックBRの位置(xColBr、yColBr)
は、以下の式で導出してもよい。
は、以下の式で導出してもよい。
xColCtr = xPb + (W>>1)
yColCtr = yPb + (H>>1)
xColBr = xPb + W (式BR0)
yColBr = yPb + H
ここで、(xPb,yPb)は対象ブロックの左上座標、(W,H)は対象ブロックの幅と高さである。
yColCtr = yPb + (H>>1)
xColBr = xPb + W (式BR0)
yColBr = yPb + H
ここで、(xPb,yPb)は対象ブロックの左上座標、(W,H)は対象ブロックの幅と高さである。
(タイル境界BR、BRmod)
ところで、図21(c)に示す時間マージ候補として参照するブロックの1つであるブロッ
クBRは、図21(d)のように対象ブロックがタイルの右端に位置する場合、図21(e)のようにタイル外に位置する。そこで、ブロックBRの位置を図21(f)に示すように、コロケートブ
ロック内の右下に設定してもよい。この位置をBRmodとも呼ぶ。例えば以下の式でBRmodの位置(xColBr、yColBr)を導出してもよい。
ところで、図21(c)に示す時間マージ候補として参照するブロックの1つであるブロッ
クBRは、図21(d)のように対象ブロックがタイルの右端に位置する場合、図21(e)のようにタイル外に位置する。そこで、ブロックBRの位置を図21(f)に示すように、コロケートブ
ロック内の右下に設定してもよい。この位置をBRmodとも呼ぶ。例えば以下の式でBRmodの位置(xColBr、yColBr)を導出してもよい。
xColBr = xPb + W - 1 (式BR1)
yColBr = yPb + H - 1
さらに、BRmodの位置を2のM乗の倍数とするために、以下の右シフトの後に左シフトをす
る処理を加えても良い。
yColBr = yPb + H - 1
さらに、BRmodの位置を2のM乗の倍数とするために、以下の右シフトの後に左シフトをす
る処理を加えても良い。
xColBr = ((xPb + W - 1)>>M)<<M (式BR2)
yColBr = ((yPb + H - 1)>>M)<<M
また、対象ブロックがタイルの下端に位置しない場合は、(式BR1)および(式BR2)におけるBRmodの位置のY座標yColBrを、各々以下の式で導出しても良い。
yColBr = ((yPb + H - 1)>>M)<<M
また、対象ブロックがタイルの下端に位置しない場合は、(式BR1)および(式BR2)におけるBRmodの位置のY座標yColBrを、各々以下の式で導出しても良い。
yColBr = yPb + H (式BR3)
yColBr = ((yPb + H)>>M)<<M
これにより、タイル外のブロックを参照することなく、ブロックBR(あるいはBRmod)
を時間マージ候補として参照することができる。なお、時間マージ候補ブロックBRを図21(f)の位置に設定するのは、全ての対象ブロックの位置によらず適用してもよいし、対象
ブロックがタイルの右端に位置する場合に限定してもよい。例えば、ある位置(x,y)のTileIdを導出する関数をgetTileID(x,y)とすると、getTileID(xColBr,yColBr) != “対象ブ
ロックを含むタイルのTileId”である場合、上記式のいずれかで、BR(BRmod)の位置を導出しても良い。independent_tile_flag=1の場合に、コロケートブロック内の右下BRmodに設定してもよい。例えば、independent_tile_flag=0の場合には、ブロックBRを(式BR0)で導出し、independent_tile_flag=1の場合には、ブロックBRを(式BR1)あるいは(式BR2)で導出してもよい。
yColBr = ((yPb + H)>>M)<<M
これにより、タイル外のブロックを参照することなく、ブロックBR(あるいはBRmod)
を時間マージ候補として参照することができる。なお、時間マージ候補ブロックBRを図21(f)の位置に設定するのは、全ての対象ブロックの位置によらず適用してもよいし、対象
ブロックがタイルの右端に位置する場合に限定してもよい。例えば、ある位置(x,y)のTileIdを導出する関数をgetTileID(x,y)とすると、getTileID(xColBr,yColBr) != “対象ブ
ロックを含むタイルのTileId”である場合、上記式のいずれかで、BR(BRmod)の位置を導出しても良い。independent_tile_flag=1の場合に、コロケートブロック内の右下BRmodに設定してもよい。例えば、independent_tile_flag=0の場合には、ブロックBRを(式BR0)で導出し、independent_tile_flag=1の場合には、ブロックBRを(式BR1)あるいは(式BR2)で導出してもよい。
このように、コロケートブロックの右下ブロック位置を、図21(f)に示すコロケートタ
イル内の右下位置BRmodに設定することで、independent_tile_flag=1の場合に、時間方向のマージ予測を用いて符号化効率を低下させることなく、タイルシーケンスを独立に復号することができる。
イル内の右下位置BRmodに設定することで、independent_tile_flag=1の場合に、時間方向のマージ予測を用いて符号化効率を低下させることなく、タイルシーケンスを独立に復号することができる。
(結合マージ候補導出処理)
結合マージ導出処理として、マージ候補導出部30361は、既に導出され、マージ候補格納部30363に格納された2つの異なる導出済マージ候補の動きベクトルと参照ピクチャインデックスを、それぞれL0、L1の動きベクトルとして組み合わせることで結合マージ候補を導出し、マージ候補リストmergeCandList[]に格納する。
結合マージ導出処理として、マージ候補導出部30361は、既に導出され、マージ候補格納部30363に格納された2つの異なる導出済マージ候補の動きベクトルと参照ピクチャインデックスを、それぞれL0、L1の動きベクトルとして組み合わせることで結合マージ候補を導出し、マージ候補リストmergeCandList[]に格納する。
なお、上述の空間マージ候補導出処理、時間マージ候補導出処理、結合マージ候補導出処理で導出した動きベクトルが、対象ブロックの位置するタイルのコロケートタイル外を一部でも指す場合は、動きベクトルをクリッピングして、コロケートタイル内のみを指すように修正してもよい。この処理はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
(ゼロマージ候補導出処理)
ゼロマージ候補導出処理として、マージ候補導出部30361は、参照ピクチャインデックスrefIdxLXが0であり、動きベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出し、マージ候補リストmergeCandList[]に格納する。
ゼロマージ候補導出処理として、マージ候補導出部30361は、参照ピクチャインデックスrefIdxLXが0であり、動きベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出し、マージ候補リストmergeCandList[]に格納する。
マージ候補導出部30361によって導出された上記マージ候補はマージ候補格納部30363に格納される。マージ候補リストmergeCandList[]に格納する順番は、図21(b)、(c)の{L、A、AR、BL、AL、BR/C、結合マージ候補、ゼロマージ候補}である。BR/Cは、
ブロックBRが利用可能でなければブロックCを使用する、という意味である。なお、利用
可能でない(ブロックがタイル外、イントラ予測等)参照ブロックは、マージ候補リストに格納されない。
ブロックBRが利用可能でなければブロックCを使用する、という意味である。なお、利用
可能でない(ブロックがタイル外、イントラ予測等)参照ブロックは、マージ候補リストに格納されない。
マージ候補選択部30362は、マージ候補格納部30363のマージ候補リストmergeCandList[]に格納されているマージ候補のうち、インター予測パラメータ復号制御部3
031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当て
られたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を予測パラメータメモリ307に記憶するとともに、予測画像生成部308に出力する。
031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当て
られたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を予測パラメータメモリ307に記憶するとともに、予測画像生成部308に出力する。
(サブブロック予測部)
次に、サブブロック予測部について説明する。
次に、サブブロック予測部について説明する。
(時空間サブブロック予測部30371)
時空間サブブロック予測部30371は、時間的に対象PUに隣接する参照ピクチャ上(たとえば直前のピクチャ)のPUの動きベクトル、もしくは、空間的に対象PUに隣接するPUの動きベクトルから、対象PUを分割して得られるサブブロックの動きベクトルを導出する。具体的には、参照ピクチャ上のPUの動きベクトルを対象PUが参照する参照ピクチャに合わせて動きベクトルをスケーリングすることにより、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi=xPb+BW*i, yj=yPb+BH*j, i=0,1,2,・・・,W/BW-1、j=0,1,2,
・・・,H/BH-1)を導出する(時間サブブロック予測)。ここで、(xPb, yPb)は対象PUの左上座標、W, Hは対象PUのサイズ、BW, BHはサブブロックのサイズである。
時空間サブブロック予測部30371は、時間的に対象PUに隣接する参照ピクチャ上(たとえば直前のピクチャ)のPUの動きベクトル、もしくは、空間的に対象PUに隣接するPUの動きベクトルから、対象PUを分割して得られるサブブロックの動きベクトルを導出する。具体的には、参照ピクチャ上のPUの動きベクトルを対象PUが参照する参照ピクチャに合わせて動きベクトルをスケーリングすることにより、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi=xPb+BW*i, yj=yPb+BH*j, i=0,1,2,・・・,W/BW-1、j=0,1,2,
・・・,H/BH-1)を導出する(時間サブブロック予測)。ここで、(xPb, yPb)は対象PUの左上座標、W, Hは対象PUのサイズ、BW, BHはサブブロックのサイズである。
また、対象PUに隣接するPUの動きベクトルを、対象PUを分割して得られるサブブロックとの距離に応じて加重平均を計算することで、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi=xPb+BW*i, yj=yPb+BH*j, i=0,1,2,・・・,W/BW-1、j=0,1,2,・・・,H/BH-1)を導出してもよい(空間サブブロック予測)。
上記、時間サブブロック予測の候補TSUB、空間サブブロック予測の候補SSUBを、マージモードの一つのモード(マージ候補)として選択する。
具体的な時空間サブブロック予測方法として、ATMVP(Adaptive Temporal Motion Vector Prediction)とSTMVP(Spatial-Temporal Motion Vector Prediction)について説明
する。
する。
(動きベクトルスケーリング)
まず、動きベクトルのスケーリングの導出方法を説明する。動きベクトルMv、動きベクトルMvをもつブロックを含むピクチャPic1、動きベクトルMvの参照ピクチャRic2、スケーリング後の動きベクトルsMv、スケーリング後の動きベクトルsMvをもつブロックを含むピクチャPict3、スケーリング後の動きベクトルsMvが参照する参照ピクチャPic4とすると、sMvの導出関数MvScale(Mv, Pic1, Pic2, Pic3, Pic4)は下式で表される。
まず、動きベクトルのスケーリングの導出方法を説明する。動きベクトルMv、動きベクトルMvをもつブロックを含むピクチャPic1、動きベクトルMvの参照ピクチャRic2、スケーリング後の動きベクトルsMv、スケーリング後の動きベクトルsMvをもつブロックを含むピクチャPict3、スケーリング後の動きベクトルsMvが参照する参照ピクチャPic4とすると、sMvの導出関数MvScale(Mv, Pic1, Pic2, Pic3, Pic4)は下式で表される。
sMv2 = MvScale(Mv, Pic1, Pic2, Pic3, Pic4)
= Clip3(-R1, R1-1, sign(distScaleFactor * Mv) * ((abs(distScaleFactor *
Mv) + round1-1) >> shift1)) (式MVSCALE-1)
distScaleFactor = Clip3(-R2, R2-1, (tb*tx + round2)>>shift2 )
tx = (16384 + abs(td) >> 1 )/ td
td = DiffPicOrderCnt( Pic1, Pic2 )
tb = DiffPicOrderCnt( Pic3, Pic4 )
ここで、round1, round2, shift1, shift2は、逆数を用いて除算を行うためのラウンド値及びシフト値で例えば、round1 = 1<<(shift1-1)、round2 = 1<<(shift2-1)、shift1=8, shift2 = 6などである。DiffPicOrderCnt(Pic1, Pic2)はPic1とPic2の時間情報(例えばPOC)の差を返す関数である。R1, R2, R3は処理を限られた精度で行うために値域を制限するもので例えば、R1 = 32768、R2 = 4096、R3 = 128などである。
= Clip3(-R1, R1-1, sign(distScaleFactor * Mv) * ((abs(distScaleFactor *
Mv) + round1-1) >> shift1)) (式MVSCALE-1)
distScaleFactor = Clip3(-R2, R2-1, (tb*tx + round2)>>shift2 )
tx = (16384 + abs(td) >> 1 )/ td
td = DiffPicOrderCnt( Pic1, Pic2 )
tb = DiffPicOrderCnt( Pic3, Pic4 )
ここで、round1, round2, shift1, shift2は、逆数を用いて除算を行うためのラウンド値及びシフト値で例えば、round1 = 1<<(shift1-1)、round2 = 1<<(shift2-1)、shift1=8, shift2 = 6などである。DiffPicOrderCnt(Pic1, Pic2)はPic1とPic2の時間情報(例えばPOC)の差を返す関数である。R1, R2, R3は処理を限られた精度で行うために値域を制限するもので例えば、R1 = 32768、R2 = 4096、R3 = 128などである。
また、スケーリング関数MvScale(Mv, Pic1, Pic2, Pic3, Pic4)は以下の式でもよい。
MvScale(Mv, Pic1, Pic2, Pic3, Pic4) =
Mv * DiffPicOrderCnt( Pic3, Pic4 ) / DiffPicOrderCnt( Pic1, Pic2 ) (式MVSCALE-2)
すなわち、Pic1とPic2の時間情報の差と、Pic3とPic4の時間情報の差との比に応じてMvをスケーリングしてもよい。
Mv * DiffPicOrderCnt( Pic3, Pic4 ) / DiffPicOrderCnt( Pic1, Pic2 ) (式MVSCALE-2)
すなわち、Pic1とPic2の時間情報の差と、Pic3とPic4の時間情報の差との比に応じてMvをスケーリングしてもよい。
(ATMVP、タイル境界ATMVP)
ATMVPは、図21(b)に示す対象ピクチャPCurの対象ブロックの空間隣接ブロック(L、A、AR、BL、AL)の動きベクトルをもとに、対象ブロックのサブブロック毎に動きベクトルを導出し、サブブロック単位で予測画像を生成する方式であり、下記の手順で処理する。
ATMVPは、図21(b)に示す対象ピクチャPCurの対象ブロックの空間隣接ブロック(L、A、AR、BL、AL)の動きベクトルをもとに、対象ブロックのサブブロック毎に動きベクトルを導出し、サブブロック単位で予測画像を生成する方式であり、下記の手順で処理する。
ステップ1)初期ベクトル導出
空間隣接ブロックL、A、AR、BL、ALの順に、利用可能(available)な最初の隣接ブロッ
クを求める。利用可能な隣接ブロックが見つかった場合、そのブロックが有する動きベクトルと参照ピクチャをATMVPの初期ベクトルIMVと初期参照ピクチャIRefとして、ステップ2に移行する。全ての隣接ブロックが利用可能でない(non available)場合、ATMVFをオフとし、処理を終了する。「ATMVPがオフ」の意味は、マージ候補リストにATMVPによる動きベクトルを格納しないということである。
空間隣接ブロックL、A、AR、BL、ALの順に、利用可能(available)な最初の隣接ブロッ
クを求める。利用可能な隣接ブロックが見つかった場合、そのブロックが有する動きベクトルと参照ピクチャをATMVPの初期ベクトルIMVと初期参照ピクチャIRefとして、ステップ2に移行する。全ての隣接ブロックが利用可能でない(non available)場合、ATMVFをオフとし、処理を終了する。「ATMVPがオフ」の意味は、マージ候補リストにATMVPによる動きベクトルを格納しないということである。
ここで、「利用可能な隣接ブロック」の意味は、例えば、隣接ブロックの位置が対象タイルに含まれており、かつ、隣接ブロックが動きベクトルを有する、である。
ステップ2)初期ベクトルのタイル境界チェック
初期参照ピクチャIRef上において、対象ブロックがIMVを用いて参照するブロックがコロ
ケートタイル内か否かをチェックする。このブロックがコロケートタイル内にある場合、IMVとIRefを各々対象ブロックのブロックレベルの動きベクトルBMVと参照ピクチャBRefとしてステップ3に移行する。このブロックがコロケートタイル内にない場合、参照ピクチャリストRefPicListXに格納された参照ピクチャRefPicListX[RefIdx](RefIdx=0..参照ピ
クチャ数-1)上で、IMVからスケーリング関数MvScale(IMV, PCur, IRef, PCur, RefPicListX[refIdx])を用いて導出されるsIMVを用いて参照するブロックが、コロケートタイル内
にあるか否かをチェックする。このブロックがコロケートタイル内にある場合、このsIMVとRefPicListX[RefIdx]を各々対象ブロックのブロックレベルの動きベクトルBMVと参照ピクチャBRefとしてステップ3に移行する。
初期参照ピクチャIRef上において、対象ブロックがIMVを用いて参照するブロックがコロ
ケートタイル内か否かをチェックする。このブロックがコロケートタイル内にある場合、IMVとIRefを各々対象ブロックのブロックレベルの動きベクトルBMVと参照ピクチャBRefとしてステップ3に移行する。このブロックがコロケートタイル内にない場合、参照ピクチャリストRefPicListXに格納された参照ピクチャRefPicListX[RefIdx](RefIdx=0..参照ピ
クチャ数-1)上で、IMVからスケーリング関数MvScale(IMV, PCur, IRef, PCur, RefPicListX[refIdx])を用いて導出されるsIMVを用いて参照するブロックが、コロケートタイル内
にあるか否かをチェックする。このブロックがコロケートタイル内にある場合、このsIMVとRefPicListX[RefIdx]を各々対象ブロックのブロックレベルの動きベクトルBMVと参照ピクチャBRefとしてステップ3に移行する。
なお、参照ピクチャリストに格納された全ての参照ピクチャにおいてこのようなブロックが見つからない場合、ATMVFをオフとし、処理を終了する。
ステップ3)サブブロック動きベクトル
図22(b)に示すように、参照ピクチャBRef上で、対象ブロックを動きベクトルBMVだけずれた(シフトした)位置のブロックをサブブロックに分割し、各サブブロックの有する動きベクトルSpRefMvLX[k][l](k=0..NBW-1、l=0..NBH-1)と参照ピクチャSpRef[k][l]の情報を取得する。ここで、NBW、NBHは各々、水平および垂直方向のサブブロックの個数である。あるサブブロック(k1,l1)の動きベクトルがない場合、ブロックレベルの動きベクトルBMVと参照ピクチャBRefを、サブブロック(k1,l1)の動きベクトルSpRefMvLX[k1][l1]と参照ピクチャSpRef[k1][l1]としてセットする。
図22(b)に示すように、参照ピクチャBRef上で、対象ブロックを動きベクトルBMVだけずれた(シフトした)位置のブロックをサブブロックに分割し、各サブブロックの有する動きベクトルSpRefMvLX[k][l](k=0..NBW-1、l=0..NBH-1)と参照ピクチャSpRef[k][l]の情報を取得する。ここで、NBW、NBHは各々、水平および垂直方向のサブブロックの個数である。あるサブブロック(k1,l1)の動きベクトルがない場合、ブロックレベルの動きベクトルBMVと参照ピクチャBRefを、サブブロック(k1,l1)の動きベクトルSpRefMvLX[k1][l1]と参照ピクチャSpRef[k1][l1]としてセットする。
ステップ4)動きベクトルスケーリング
参照ピクチャ上の各サブブロックの動きベクトルSpRefMvLX[k][l]と参照ピクチャSpRef[k][l]からスケーリング関数MvScale()により対象ブロック上の各サブブロックの動きベ
クトルSpMvLX[k][l]を導出する。
参照ピクチャ上の各サブブロックの動きベクトルSpRefMvLX[k][l]と参照ピクチャSpRef[k][l]からスケーリング関数MvScale()により対象ブロック上の各サブブロックの動きベ
クトルSpMvLX[k][l]を導出する。
SpMvLX[k][l] = MvScale(SpRefMvLX[k][l], Bref, SpRef[k][l], PCur, RefPicListX[refIdx0]) (式ATMVP-1)
ここでRefPicListX[refIdx0])は、対象ブロックのサブブロックレベルの参照ピクチャ
であり、例えば、参照ピクチャRefPicListX[refIdxATMVP]、refIdxATMVP = 0とする。
ここでRefPicListX[refIdx0])は、対象ブロックのサブブロックレベルの参照ピクチャ
であり、例えば、参照ピクチャRefPicListX[refIdxATMVP]、refIdxATMVP = 0とする。
なお、対象ブロックのサブブロックレベルの参照ピクチャは、参照ピクチャRefPicListX[refIdx0]ではなく、図18(c)に示す、スライスヘッダで通知された時間方向の予測動き
ベクトル導出に用いられるインデックス(collocated_ref_idx)で指定された参照ピクチャでもよい。この場合、対象ブロックのサブブロックレベルの参照ピクチャはRefPicListX[collocated_ref_idx]であり、対象ブロックのサブブロックレベルの動きベクトルSpMvLX[k][l]の算出式は下記である。
ベクトル導出に用いられるインデックス(collocated_ref_idx)で指定された参照ピクチャでもよい。この場合、対象ブロックのサブブロックレベルの参照ピクチャはRefPicListX[collocated_ref_idx]であり、対象ブロックのサブブロックレベルの動きベクトルSpMvLX[k][l]の算出式は下記である。
SpMvLX[k][l] = MvScale(SpRefMvLX[k][l], Bref, SpRef[k][l], PCur, RefPicListX[collocated_ref_idx])) (式ATMVP-2)
ステップ5)サブブロックベクトルのタイル境界チェック
対象ブロックのサブブロックレベルの参照ピクチャにおいて、対象サブブロックがSpMvLX[k][l]を用いて参照するサブブロックがコロケートタイル内にあるか否かをチェックする。あるサブブロック(k2, l2)においてサブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にない場合には、以下の処理1(処理1A〜処理1D)のいずれかを施す。
・[処理1A] タイル境界パディング
タイル境界パディング(タイル外パディング)は、既に説明したように参照位置を、タ
イルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準とした対象サブブロックの左上座標を(xs,ys)、対象サブブロックの幅
と高さをBW、BW、対象サブブロックが位置する対象タイルの左上座標を(xTs,yTs)、対象
タイルの幅と高さをwT、hT、動きベクトルをspMvLX[k2][l2]とすると、サブブロックレベルの参照画素(xRef, yRef)を下式で導出する。
ステップ5)サブブロックベクトルのタイル境界チェック
対象ブロックのサブブロックレベルの参照ピクチャにおいて、対象サブブロックがSpMvLX[k][l]を用いて参照するサブブロックがコロケートタイル内にあるか否かをチェックする。あるサブブロック(k2, l2)においてサブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にない場合には、以下の処理1(処理1A〜処理1D)のいずれかを施す。
・[処理1A] タイル境界パディング
タイル境界パディング(タイル外パディング)は、既に説明したように参照位置を、タ
イルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準とした対象サブブロックの左上座標を(xs,ys)、対象サブブロックの幅
と高さをBW、BW、対象サブブロックが位置する対象タイルの左上座標を(xTs,yTs)、対象
タイルの幅と高さをwT、hT、動きベクトルをspMvLX[k2][l2]とすると、サブブロックレベルの参照画素(xRef, yRef)を下式で導出する。
xRef + i = Clip3(xTs, xTs+wT-1, xs+(SpMvLX[k2][l2][0]>>log2(M)) + i) (式ATMVP-3)
yRef + j = Clip3(yTs, yTs+hT-1, ys+(SpMvLX[k2][l2][1]>>log2(M)) + j)
・[処理1B] タイル境界動きベクトル制限
サブブロックレベルの動きベクトルSpMvLX[k2][l2]がタイル外を参照しないようにサブブロック動きベクトルSpMvLX[k2][l2]をクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理1C] タイル境界動きベクトル置換(代替動きベクトルによる置換)
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にない場合には、コロケートタイル内にある代替動きベクトルSpMvLX[k3][l3]でコピーする。例えば、(k3, l3)は、(k2, l2)の隣接サブブロックでもよいし、ブロックの中心でもよい。
yRef + j = Clip3(yTs, yTs+hT-1, ys+(SpMvLX[k2][l2][1]>>log2(M)) + j)
・[処理1B] タイル境界動きベクトル制限
サブブロックレベルの動きベクトルSpMvLX[k2][l2]がタイル外を参照しないようにサブブロック動きベクトルSpMvLX[k2][l2]をクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理1C] タイル境界動きベクトル置換(代替動きベクトルによる置換)
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にない場合には、コロケートタイル内にある代替動きベクトルSpMvLX[k3][l3]でコピーする。例えば、(k3, l3)は、(k2, l2)の隣接サブブロックでもよいし、ブロックの中心でもよい。
SpMvLX[k2][l2][0] = SpMvLX[k3][l3][0] (式ATMVP-4)
SpMvLX[k2][l2][1] = SpMvLX[k3][l3][1]
・[処理1D] タイル境界ATMVPオフ
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にないサブブロック数が所定の閾値を越えた場合、ATMVPをオフにし、処理を終了する。例えば所定の
閾値は対象ブロック内の全サブブロック数の1/2としてもよい。
SpMvLX[k2][l2][1] = SpMvLX[k3][l3][1]
・[処理1D] タイル境界ATMVPオフ
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にないサブブロック数が所定の閾値を越えた場合、ATMVPをオフにし、処理を終了する。例えば所定の
閾値は対象ブロック内の全サブブロック数の1/2としてもよい。
なお、処理1はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
ステップ6)マージ候補リストにATMVPを格納する。マージ候補リストに格納するマー
ジ候補の順番の例を図24に示す。このリストの中から、インター予測パラメータ復号制御部3031で導出されたmerge_idxを用いて、対象ブロックのマージ候補が選択される。
ジ候補の順番の例を図24に示す。このリストの中から、インター予測パラメータ復号制御部3031で導出されたmerge_idxを用いて、対象ブロックのマージ候補が選択される。
マージ候補としてATMVPが選択された場合、図22(b)に示すように、対象ブロックの各サブブロックからSpMvLX[k][l]シフトした参照ピクチャRefPicListX[refIdxATMVP]上の画像を読み出し、予測画像とする。
以上ステップ1)〜ステップ6)で説明したATMVPに関するマージ候補リスト導出処理
を図23のフローチャートで説明する。
を図23のフローチャートで説明する。
時空間サブブロック予測部30371は、対象ブロックの5つの隣接ブロックをサーチする
(S2301)。
(S2301)。
時空間サブブロック予測部30371は、利用可能な最初の隣接ブロックの有無を判定し、
利用可能な隣接ブロックがあればS2303に進み、利用可能な隣接ブロックがなければS2311に進む(S2302)。
利用可能な隣接ブロックがあればS2303に進み、利用可能な隣接ブロックがなければS2311に進む(S2302)。
時空間サブブロック予測部30371は、利用可能な隣接ブロックの有する動きベクトルと
参照ピクチャを、対象ブロックの初期ベクトルIMVと初期参照ピクチャIRefとして設定す
る(S2303)。
参照ピクチャを、対象ブロックの初期ベクトルIMVと初期参照ピクチャIRefとして設定す
る(S2303)。
時空間サブブロック予測部30371は、対象ブロックの初期ベクトルIMVと初期参照ピクチャIRefをもとに、対象ブロックのブロックベースの動きベクトルBMVと参照ピクチャBRef
をサーチする(S2304)。
をサーチする(S2304)。
時空間サブブロック予測部30371は、参照ブロックがコロケートタイル内を指すブロッ
クベースの動きベクトルBMVの有無を判定し、BMVがあれば、BRefを取得してS2306に進み
、BMVがなければS2311に進む(S2305)。
クベースの動きベクトルBMVの有無を判定し、BMVがあれば、BRefを取得してS2306に進み
、BMVがなければS2311に進む(S2305)。
時空間サブブロック予測部30371は、対象ブロックのブロックベースの動きベクトルBMVと参照ピクチャBRefを用いて、コロケートブロックのサブブロックベースの動きベクトルSpRefMvLX[k][l]と参照ピクチャSpRef[k][l]を取得する(S2306)。
時空間サブブロック予測部30371は、動きベクトルSpRefMvLX[k][l]と参照ピクチャSpRefを用いて、参照ピクチャをRefPicListX[refIdxATMVP]に設定した時の、対象ブロックの
サブブロックベースの動きベクトルspMvLX[k][l]をスケーリングにより導出する(S2307
)。
サブブロックベースの動きベクトルspMvLX[k][l]をスケーリングにより導出する(S2307
)。
時空間サブブロック予測部30371は、参照ピクチャRefPicListX[refIdxATMVP]上で、動
きベクトルspMvLX[k][l]の指す各ブロックが全てコロケートタイル内を参照するか否かを判定する。全ブロックがコロケートタイル内のみを参照する場合、S2310に進み、そうで
ない場合、S2309に進む(S2308)。
きベクトルspMvLX[k][l]の指す各ブロックが全てコロケートタイル内を参照するか否かを判定する。全ブロックがコロケートタイル内のみを参照する場合、S2310に進み、そうで
ない場合、S2309に進む(S2308)。
時空間サブブロック予測部30371は、動きベクトルspMvLX[k][l]だけシフトしたブロッ
クの少なくとも一部がコロケートタイル外にある場合、シフト後のサブブロックがコロケートタイル内にあるサブブロックレベルの動きベクトルを持つ、隣接サブブロックのサブブロックレベルの動きベクトルをコピーする(S2309)。
クの少なくとも一部がコロケートタイル外にある場合、シフト後のサブブロックがコロケートタイル内にあるサブブロックレベルの動きベクトルを持つ、隣接サブブロックのサブブロックレベルの動きベクトルをコピーする(S2309)。
時空間サブブロック予測部30371は、図24に示すマージ候補リストmergeCandList[]にATMVPの動きベクトルを格納する(S2310)。
時空間サブブロック予測部30371は、マージ候補リストmergeCandList[]にATMVPの動き
ベクトルを格納しない(S2311)。
ベクトルを格納しない(S2311)。
なお、S2309の処理は隣接ブロックの動きベクトルのコピー以外に、5)で説明したよ
うに、参照ピクチャのタイル境界のパディング処理や、対象ブロックのサブブロックレベルの動きベクトルのクリッピング処理であってもよい。また、利用可能でないサブブロック数が所定の閾値より多い時はATMVPをオフにしてS2311に進んでもよい。
うに、参照ピクチャのタイル境界のパディング処理や、対象ブロックのサブブロックレベルの動きベクトルのクリッピング処理であってもよい。また、利用可能でないサブブロック数が所定の閾値より多い時はATMVPをオフにしてS2311に進んでもよい。
以上の処理により、ATMVPに関するマージ候補リストを導出する。
このようにATMVPの動きベクトルを導出し、予測画像を生成することで、インター予測
で動きベクトルがコロケートタイル外を指しても、コロケートタイル内の画素値を用いて参照画素を置き換えるので、タイルを独立にインター予測することができる。したがって、参照画素の一部がコロケートタイル内に含まれない場合でも、ATMVPをマージ候補の1
つとして選択することができる。そしてATMVP以外のマージ候補よりも性能が高い場合は
、ATMVPを利用して予測画像を生成できるので、符号化効率を高めることができる。
で動きベクトルがコロケートタイル外を指しても、コロケートタイル内の画素値を用いて参照画素を置き換えるので、タイルを独立にインター予測することができる。したがって、参照画素の一部がコロケートタイル内に含まれない場合でも、ATMVPをマージ候補の1
つとして選択することができる。そしてATMVP以外のマージ候補よりも性能が高い場合は
、ATMVPを利用して予測画像を生成できるので、符号化効率を高めることができる。
(STMVP)
STMVPは、図25(a)に示す対象ピクチャPCurの対象ブロックの空間隣接ブロック(a,b,c,d,…)、および、図25(b)に示す対象ブロックのコロケートブロック(A',B',C',D',…)
の動きベクトルをもとに、対象ブロックのサブブロック毎に動きベクトルを導出し、サブブロック単位で予測画像を生成する方式である。図25(a)のA,B,C,Dは、対象ブロックを分割したサブブロックの例である。図25(b)のA',B',C',D'は、図25(a)のサブブロックA,B,C,Dのコロケートブロックである。図25(b)のAc',Bc',Cc',Dc'はA',B',C',D'の中心に位置
する領域であり、Abr',Bbr',Cbr',Dbr'はA',B',C',D'の右下に位置する領域である。なお、Abr',Bbr',Cbr',Dbr'は図25(b)に示すA',B',C',D'外の右下位置ではなく、図25(g)に示すA',B',C',D'内の右下位置であってもよい。図25(g)では、Abr',Bbr',Cbr',Dbr'はコロ
ケートタイル内の位置をとる。STMVPは下記の手順で処理する。
STMVPは、図25(a)に示す対象ピクチャPCurの対象ブロックの空間隣接ブロック(a,b,c,d,…)、および、図25(b)に示す対象ブロックのコロケートブロック(A',B',C',D',…)
の動きベクトルをもとに、対象ブロックのサブブロック毎に動きベクトルを導出し、サブブロック単位で予測画像を生成する方式である。図25(a)のA,B,C,Dは、対象ブロックを分割したサブブロックの例である。図25(b)のA',B',C',D'は、図25(a)のサブブロックA,B,C,Dのコロケートブロックである。図25(b)のAc',Bc',Cc',Dc'はA',B',C',D'の中心に位置
する領域であり、Abr',Bbr',Cbr',Dbr'はA',B',C',D'の右下に位置する領域である。なお、Abr',Bbr',Cbr',Dbr'は図25(b)に示すA',B',C',D'外の右下位置ではなく、図25(g)に示すA',B',C',D'内の右下位置であってもよい。図25(g)では、Abr',Bbr',Cbr',Dbr'はコロ
ケートタイル内の位置をとる。STMVPは下記の手順で処理する。
ステップ1)対象ブロックをサブブロックに分割し、サブブロックAの上側隣接ブロッ
クから右方向に、利用可能(available)な最初のブロックを求める。利用可能な隣接ブ
ロックが見つかった場合、その最初のブロックが有する動きベクトルと参照ピクチャをSTMVPの上側ベクトルmvA_aboveと参照ピクチャRefA_aboveとし、カウントcnt=1とする。利
用可能な隣接ブロックがない場合、カウントcnt=0とする。
クから右方向に、利用可能(available)な最初のブロックを求める。利用可能な隣接ブ
ロックが見つかった場合、その最初のブロックが有する動きベクトルと参照ピクチャをSTMVPの上側ベクトルmvA_aboveと参照ピクチャRefA_aboveとし、カウントcnt=1とする。利
用可能な隣接ブロックがない場合、カウントcnt=0とする。
ステップ2)サブブロックAの左側隣接ブロックbから下方向に、利用可能な最初のブロックを求める。利用可能な隣接ブロックが見つかった場合、その最初のブロックが有する動きベクトルと参照ピクチャを左側ベクトルmvA_leftと参照ピクチャRefA_leftとし、カ
ウントcntを1インクリメントする。利用可能な隣接ブロックがない場合、カウントcntを
更新しない。
ウントcntを1インクリメントする。利用可能な隣接ブロックがない場合、カウントcntを
更新しない。
ステップ3)サブブロックAのコロケートブロックA'において、右下位置A'brおよびA'cの順に利用可能か否かをチェックする。利用可能な領域が見つかった場合、そのブロックが有する最初の動きベクトルと参照ピクチャをコロケートベクトルmvA_colと参照ピクチ
ャRefA_colとし、カウントを1インクリメントする。利用可能なブロックがない場合、カ
ウントcntを更新しない。
ャRefA_colとし、カウントを1インクリメントする。利用可能なブロックがない場合、カ
ウントcntを更新しない。
ステップ4)cnt=0(利用可能な動きベクトルが1つもない)の場合、STMVPをオフにし、処理を終了する。
ステップ5)ctnが0でない場合、対象ピクチャPCurと、対象ブロックの参照ピクチャRefPicListX[collocated_ref_idx]との時間情報を用いて、ステップ1)〜ステップ3)で
求めた利用可能な動きベクトルをスケーリングする。スケーリング後の動きベクトルをsmvA_above,smvA_left,smvA_colとする。
求めた利用可能な動きベクトルをスケーリングする。スケーリング後の動きベクトルをsmvA_above,smvA_left,smvA_colとする。
smvA_above = MvScale(mvA_above , PCur, RefA_above, PCur, RefPicListX[collocated_ref_idx])) (式STMVP-1)
smvA_left = MvScale(mvA_left, PCur, RefA_left, PCur, RefPicListX[collocated_ref_idx]))
smvA_col = MvScale(mvA_col, PCur, RefA_col, PCur, RefPicListX[collocated_ref_idx]))
利用可能でない動きベクトルは0にセットする。
smvA_left = MvScale(mvA_left, PCur, RefA_left, PCur, RefPicListX[collocated_ref_idx]))
smvA_col = MvScale(mvA_col, PCur, RefA_col, PCur, RefPicListX[collocated_ref_idx]))
利用可能でない動きベクトルは0にセットする。
ここでスケーリング関数MvScale(Mv, Pic1, Pic2, Pic3, Pic4)は、上述のように動き
ベクトルMvをスケーリングするための関数である。
ベクトルMvをスケーリングするための関数である。
ステップ6)smvA_above,smvA_left,smvA_colの平均を算出し、サブブロックAの動きベクトルspMvLX[A]としてセットする。サブブロックAの参照ピクチャはRefPicListX[collocated_ref_idx]である。
spMvLX[A] = (smvA_above+smvA_left+smvA_col)/cnt (式STMVP-2)
整数演算のために例えば、以下のように導出しても良い。cnt == 2の場合、2つのベク
トルを順にmvA_cnt0, mvA_cnt1と記載すると、以下の式で導出してもよい。
整数演算のために例えば、以下のように導出しても良い。cnt == 2の場合、2つのベク
トルを順にmvA_cnt0, mvA_cnt1と記載すると、以下の式で導出してもよい。
spMvLX[A] = (smvA_cnt0+smvA_cnt1)>>1
cnt == 3の場合、以下の式で導出してもよい。
cnt == 3の場合、以下の式で導出してもよい。
spMvLX[A] = (5*smvA_above+5*smvA_1eft+6*smvA_col)>>4
ステップ7)参照ピクチャRefPicListX[collocated_ref_idx]において、コロケートブ
ロックをspMvLX[A]だけシフトした位置のブロックがコロケートタイル内か否かをチェッ
クする。ブロックの一部あるいは全部がコロケートタイル内にない場合、以下の処理2(
処理2A〜処理2D)のいずれかを施す。
・[処理2A] タイル境界パディング
タイル境界パディング(タイル外パディング)は、既に説明したように参照位置を、タイルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準としたサブブロックAの左上座標を(xs,ys)、サブブロックAの幅と高さ
をBW、BH、サブブロックAが位置する対象タイルの左上座標を(xTs,yTs)、対象タイルの幅と高さをwT、hTとすると、サブブロックAの
参照画素(xRef, yRef)を下式で導出する。
ステップ7)参照ピクチャRefPicListX[collocated_ref_idx]において、コロケートブ
ロックをspMvLX[A]だけシフトした位置のブロックがコロケートタイル内か否かをチェッ
クする。ブロックの一部あるいは全部がコロケートタイル内にない場合、以下の処理2(
処理2A〜処理2D)のいずれかを施す。
・[処理2A] タイル境界パディング
タイル境界パディング(タイル外パディング)は、既に説明したように参照位置を、タイルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準としたサブブロックAの左上座標を(xs,ys)、サブブロックAの幅と高さ
をBW、BH、サブブロックAが位置する対象タイルの左上座標を(xTs,yTs)、対象タイルの幅と高さをwT、hTとすると、サブブロックAの
参照画素(xRef, yRef)を下式で導出する。
xRef + i = Clip3(xTs, xTs+wT-1, xs+(spMvLX[A][0]>>log2(M))+i) (式STMVP-3)
yRef + j = Clip3(yTs, yTs+hT-1, ys+(spMvLX[A][1]>>log2(M))+j)
なお、処理2はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
・[処理2B] タイル境界動きベクトル制限
サブブロックレベルの動きベクトルspMvLX[A]がタイル外を参照しないようにサブブロ
ック動きベクトルspMvLX[A]をクリッピングする。タイル境界動きベクトル制限について
は上述したとおりである。
・[処理2C] タイル境界動きベクトル置換(代替動きベクトルによる置換)
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にない場合には、コロケートタイル内にある代替動きベクトルSpMvLX[k3][l3]でコピーする。例えば、(k3, l3)は、(k2, l2)の隣接サブブロックでもよいし、ブロックの中心でもよい。
yRef + j = Clip3(yTs, yTs+hT-1, ys+(spMvLX[A][1]>>log2(M))+j)
なお、処理2はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
・[処理2B] タイル境界動きベクトル制限
サブブロックレベルの動きベクトルspMvLX[A]がタイル外を参照しないようにサブブロ
ック動きベクトルspMvLX[A]をクリッピングする。タイル境界動きベクトル制限について
は上述したとおりである。
・[処理2C] タイル境界動きベクトル置換(代替動きベクトルによる置換)
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にない場合には、コロケートタイル内にある代替動きベクトルSpMvLX[k3][l3]でコピーする。例えば、(k3, l3)は、(k2, l2)の隣接サブブロックでもよいし、ブロックの中心でもよい。
SpMvLX[k2][l2][0] = SpMvLX[k3][l3][0] (式STMVP-4)
SpMvLX[k2][l2][1] = SpMvLX[k3][l3][1]
・[処理2D] タイル境界STMVPオフ
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にないサブブロック数が所定の閾値を越えた場合、STMVPをオフにし、処理を終了する。例えば所定の
閾値は対象ブロック内の全サブブロック数の1/2としてもよい。
SpMvLX[k2][l2][1] = SpMvLX[k3][l3][1]
・[処理2D] タイル境界STMVPオフ
サブブロック動きベクトルSpMvLX[k2][l2]の指す先がコロケートタイル内にないサブブロック数が所定の閾値を越えた場合、STMVPをオフにし、処理を終了する。例えば所定の
閾値は対象ブロック内の全サブブロック数の1/2としてもよい。
ステップ8)上記ステップ1)〜ステップ7)の処理をサブブロックB,C,D等、対象ブ
ロックの各サブブロックに対して実行し、図25(d)、(e)、(f)のようにサブブロックの動
きベクトルを求める。ただし、サブブロックBでは、上側隣接ブロックはdから右方向にサーチする。サブブロックCでは、上側隣接ブロックはAであり、左側隣接ブロックはaから
下方向にサーチする。サブブロックDでは、上側隣接ブロックはBであり、左側隣接ブロックはCである。
ロックの各サブブロックに対して実行し、図25(d)、(e)、(f)のようにサブブロックの動
きベクトルを求める。ただし、サブブロックBでは、上側隣接ブロックはdから右方向にサーチする。サブブロックCでは、上側隣接ブロックはAであり、左側隣接ブロックはaから
下方向にサーチする。サブブロックDでは、上側隣接ブロックはBであり、左側隣接ブロックはCである。
ステップ9)マージ候補リストにSTMVPの動きベクトルを格納する。マージ候補リスト
に格納するマージ候補の順番を図24に示す。このリストの中から、インター予測パラメータ復号制御部3031で導出されたmerge_idxを用いて、対象ブロックのマージ候補が選択さ
れる。
に格納するマージ候補の順番を図24に示す。このリストの中から、インター予測パラメータ復号制御部3031で導出されたmerge_idxを用いて、対象ブロックのマージ候補が選択さ
れる。
マージ候補としてSTMVPが選択された場合、対象ブロックの各サブブロックから動きベ
クトル分シフトした参照ピクチャRefPicListX[collocated_ref_idx]上の画像を読み出し
、予測画像とする。
クトル分シフトした参照ピクチャRefPicListX[collocated_ref_idx]上の画像を読み出し
、予測画像とする。
以上ステップ1)〜ステップ9)で説明したSTMVPに関するマージ候補リスト導出処理
を図26(a)のフローチャートで説明する。
を図26(a)のフローチャートで説明する。
時空間サブブロック予測部30371は、対象ブロックをサブブロックに分割する(S2601)。
時空間サブブロック予測部30371は、サブブロックの上側、左側、時間方向の隣接ブロ
ックをサーチする(S2602)。
ックをサーチする(S2602)。
時空間サブブロック予測部30371は、利用可能な隣接ブロックの有無を判定し、利用可
能な隣接ブロックがあればS2604に進み、利用可能な隣接ブロックが1個もなければS2610に進む(S2603)。
能な隣接ブロックがあればS2604に進み、利用可能な隣接ブロックが1個もなければS2610に進む(S2603)。
時空間サブブロック予測部30371は、対象ピクチャと複数の隣接ブロックの参照ピクチ
ャ間の時間的な距離に応じて、利用可能な隣接ブロックの有する動きベクトルをスケーリングする(S2604)。
ャ間の時間的な距離に応じて、利用可能な隣接ブロックの有する動きベクトルをスケーリングする(S2604)。
時空間サブブロック予測部30371は、スケーリングした動きベクトルの平均値を算出し
、対象サブブロックの動きベクトルspMvLX[]としてセットする(S2605)。
、対象サブブロックの動きベクトルspMvLX[]としてセットする(S2605)。
時空間サブブロック予測部30371は、参照ピクチャ上のコロケートサブブロックを動き
ベクトルspMvLX[]だけシフトしたブロックがコロケートタイル内にあるか否かを判定し、コロケートタイル内にあればS2608に進み、一部分でもコロケートタイル内になければS2607に進む(S2606)。
ベクトルspMvLX[]だけシフトしたブロックがコロケートタイル内にあるか否かを判定し、コロケートタイル内にあればS2608に進み、一部分でもコロケートタイル内になければS2607に進む(S2606)。
時空間サブブロック予測部30371は、動きベクトルspMvLX[]だけシフトしたブロックが
コロケートタイル外にある場合、動きベクトルspMvLX[]をクリッピングする(S2607)。
コロケートタイル外にある場合、動きベクトルspMvLX[]をクリッピングする(S2607)。
時空間サブブロック予測部30371は、処理中のサブブロックが対象ブロックの最後のサ
ブブロックか否かをチェックし(S2608)、最後のサブブロックであればS2610に進み、そうでなければ、処理対象を次のサブブロックに移してS2602に進み(S2609)、S2602〜S2608を繰り返し処理する。
ブブロックか否かをチェックし(S2608)、最後のサブブロックであればS2610に進み、そうでなければ、処理対象を次のサブブロックに移してS2602に進み(S2609)、S2602〜S2608を繰り返し処理する。
時空間サブブロック予測部30371は、図24に示すマージ候補リストmergeCandList[]にSTMVPの動きベクトルを格納する(S2610)。
時空間サブブロック予測部30371は、利用可能な動きベクトルがない場合、マージ候補
リストmergeCandList[]にSTMVPの動きベクトルを格納せず、処理を終了する(S2611)。
リストmergeCandList[]にSTMVPの動きベクトルを格納せず、処理を終了する(S2611)。
なお、S2607の処理は対象サブブロックの動きベクトルのクリッピング処理以外に、7
)で説明したように、参照ピクチャのタイル境界のパディング処理であってもよい。
)で説明したように、参照ピクチャのタイル境界のパディング処理であってもよい。
以上の処理により、STMVPに関するマージ候補リストを導出する。
このようにSTMVPの動きベクトルを導出し、予測画像を生成することで、インター予測
で動きベクトルがコロケートタイル外を指しても、コロケートタイル内の画素値を用いて参照画素を置き換えるので、タイルを独立にインター予測することができる。したがって、参照画素の一部がコロケートタイル内に含まれない場合でも、STMVPをマージ候補の1
つとして選択することができる。そしてSTMVP以外のマージ候補よりも性能が高い場合は
、STMVPを利用して予測画像を生成できるので、符号化効率を高めることができる。
で動きベクトルがコロケートタイル外を指しても、コロケートタイル内の画素値を用いて参照画素を置き換えるので、タイルを独立にインター予測することができる。したがって、参照画素の一部がコロケートタイル内に含まれない場合でも、STMVPをマージ候補の1
つとして選択することができる。そしてSTMVP以外のマージ候補よりも性能が高い場合は
、STMVPを利用して予測画像を生成できるので、符号化効率を高めることができる。
(アフィン予測部)
アフィン予測部30372、30321は、対象PUのアフィン予測パラメータを導出する。本実施形態では、アフィン予測パラメータとして、対象PUの2つの制御点(V0、V1)の動きベクトル(mv0_x, mv0_y)(mv1_x, mv1_y)を導出する。具体的には、対象PUの隣接PUの動きベクトルから予測することにより、各制御点の動きベクトルを導出してもよいし(アフィン予測部30372)、制御点の動きベクトルとして導出された予測ベクトルと符号化データ
から導出される差分ベクトルの和により、各制御点の動きベクトルを導出してもよい(アフィン予測部30321)。
アフィン予測部30372、30321は、対象PUのアフィン予測パラメータを導出する。本実施形態では、アフィン予測パラメータとして、対象PUの2つの制御点(V0、V1)の動きベクトル(mv0_x, mv0_y)(mv1_x, mv1_y)を導出する。具体的には、対象PUの隣接PUの動きベクトルから予測することにより、各制御点の動きベクトルを導出してもよいし(アフィン予測部30372)、制御点の動きベクトルとして導出された予測ベクトルと符号化データ
から導出される差分ベクトルの和により、各制御点の動きベクトルを導出してもよい(アフィン予測部30321)。
(サブブロックの動きベクトル導出処理)
以下、更に具体的な実施構成の例として、アフィン予測部30372、30321がアフィン予測を用いて、各サブブロックの動きベクトルmvLXを導出する処理の流れを、ステップに分けて説明する。アフィン予測部30372、30321がアフィン予測を用いて、対象サブブロックの動きベクトルmvLXを導出する処理は、下記(STEP1)〜(STEP3)の3つの工程を含んでいる。
以下、更に具体的な実施構成の例として、アフィン予測部30372、30321がアフィン予測を用いて、各サブブロックの動きベクトルmvLXを導出する処理の流れを、ステップに分けて説明する。アフィン予測部30372、30321がアフィン予測を用いて、対象サブブロックの動きベクトルmvLXを導出する処理は、下記(STEP1)〜(STEP3)の3つの工程を含んでいる。
(STEP1)制御点ベクトルの導出
アフィン予測部30372、30321が候補を導出するためのアフィン予測に用いる2つの制御点として、対象ブロックの代表点(ここではブロックの左上の点V0及びブロックの右上の点V1)の各々の動きベクトルを導出する工程である。なお、ブロックの代表点は、対象ブロック上の点を用いる。本明細書では、アフィン予測の制御点に用いるブロックの代表点を「ブロック制御点」と記載する。
アフィン予測部30372、30321が候補を導出するためのアフィン予測に用いる2つの制御点として、対象ブロックの代表点(ここではブロックの左上の点V0及びブロックの右上の点V1)の各々の動きベクトルを導出する工程である。なお、ブロックの代表点は、対象ブロック上の点を用いる。本明細書では、アフィン予測の制御点に用いるブロックの代表点を「ブロック制御点」と記載する。
まず、AMVPモード及びマージモードの(STEP1)の処理について、図30を用いて各々説明
する。図30は、AMVPモード及びマージモードにおける制御点の動きベクトルの導出のために利用される参照ブロックの位置の例を示す図である。
する。図30は、AMVPモード及びマージモードにおける制御点の動きベクトルの導出のために利用される参照ブロックの位置の例を示す図である。
(AMVPモードにおける制御点の動きベクトルの導出)
アフィン予測部30321は、2つの制御点(V0、V1)の予測ベクトルmvpVNLXと差分ベクトルを加算して、各々動きベクトルmvN=(mvN_x,mvN_y)を導出する。Nは制御点を表す。
アフィン予測部30321は、2つの制御点(V0、V1)の予測ベクトルmvpVNLXと差分ベクトルを加算して、各々動きベクトルmvN=(mvN_x,mvN_y)を導出する。Nは制御点を表す。
より具体的には、アフィン予測部30321は、制御点VN(N=0..1)の予測ベクトル候補を導
出し、予測ベクトル候補リストmvpListVNLX[]に格納する。更に、アフィン予測部30321は、符号化データから点VNの予測ベクトルインデックスmvpVN_LX_idx、差分ベクトルmvdVNLXから、制御点VNの動きベクトル(mvN_x, mvN_y)を以下の式で導出する。
出し、予測ベクトル候補リストmvpListVNLX[]に格納する。更に、アフィン予測部30321は、符号化データから点VNの予測ベクトルインデックスmvpVN_LX_idx、差分ベクトルmvdVNLXから、制御点VNの動きベクトル(mvN_x, mvN_y)を以下の式で導出する。
mvN_x = mvNLX[0] = mvpListVNLX[mvpVN_LX_idx][0] + mvdVNLX[0] (式AFFIN-1)
mvN_y = mvNLX[1] = mvpListVNLX[mvpVN_LX_idx][1] + mvdVNLX[1]
アフィン予測部30321は、図30(a)に示すように、代表点の一つに隣接するブロックA、B及びCのいずれかをmvpV0_LX_idxを参照して、参照ブロック(AMVP参照ブロック)として
選択する。そして、選択されたAMVP参照ブロックの動きベクトルを代表点V0の予測ベクトルmvpV0LXとする。更に、アフィン予測部30321は、ブロックD及びEのいずれかをmvpV1_LX_idxを参照して、AMVP参照ブロックとして選択する。そして、選択されたAMVP参照ブロックの動きベクトルを代表点V1の予測ベクトルmvpV1LXとする。なお、(STEP1)における制御点の位置は上記に限定されず、V1の代わりに図30(b)に示すブロックの左下の点V2の位置
でもよい。この場合、ブロックF及びGのいずれかをmvpV2_LX_idxを参照して、AMVP参照ブロックとして選択する。そして、選択されたAMVP参照ブロックの動きベクトルを代表点V2の予測ベクトルmvpV2LXとする。
mvN_y = mvNLX[1] = mvpListVNLX[mvpVN_LX_idx][1] + mvdVNLX[1]
アフィン予測部30321は、図30(a)に示すように、代表点の一つに隣接するブロックA、B及びCのいずれかをmvpV0_LX_idxを参照して、参照ブロック(AMVP参照ブロック)として
選択する。そして、選択されたAMVP参照ブロックの動きベクトルを代表点V0の予測ベクトルmvpV0LXとする。更に、アフィン予測部30321は、ブロックD及びEのいずれかをmvpV1_LX_idxを参照して、AMVP参照ブロックとして選択する。そして、選択されたAMVP参照ブロックの動きベクトルを代表点V1の予測ベクトルmvpV1LXとする。なお、(STEP1)における制御点の位置は上記に限定されず、V1の代わりに図30(b)に示すブロックの左下の点V2の位置
でもよい。この場合、ブロックF及びGのいずれかをmvpV2_LX_idxを参照して、AMVP参照ブロックとして選択する。そして、選択されたAMVP参照ブロックの動きベクトルを代表点V2の予測ベクトルmvpV2LXとする。
例えば図30(c-2)のように、対象ブロックの左側がタイル境界に接する場合、制御点はV0とV1であり、制御点V0の参照ブロックはBとなる。この場合、mvpV0_L0_idxは不要である。なお、参照ブロックBがイントラ予測の場合、アフィン予測をオフ(アフィン予測しな
い、affine_flag=0)にしてもよいし、制御点V1の予測ベクトルをコピーして制御点V0の
予測ベクトルとし、アフィン予測してもよい。これらはタイル符号化部2012のアフィン予測部11221と同じ処理をすればよい。
い、affine_flag=0)にしてもよいし、制御点V1の予測ベクトルをコピーして制御点V0の
予測ベクトルとし、アフィン予測してもよい。これらはタイル符号化部2012のアフィン予測部11221と同じ処理をすればよい。
また、図30(c-1)のように、対象ブロックの上側がタイル境界に接する場合、制御点はV0とV2であり、制御点V0の参照ブロックはCとなる。この場合、mvpV0_L0_idxは不要である。なお、参照ブロックCがイントラ予測の場合、アフィン予測をオフ(アフィン予測しな
い)にしてもよいし、制御点V2の予測ベクトルをコピーして制御点V0の予測ベクトルとし、アフィン予測してもよい。これらはタイル符号化部2012のアフィン予測部11221と同じ
処理をすればよい。
い)にしてもよいし、制御点V2の予測ベクトルをコピーして制御点V0の予測ベクトルとし、アフィン予測してもよい。これらはタイル符号化部2012のアフィン予測部11221と同じ
処理をすればよい。
(マージモードにおける制御点の動きベクトルの導出)
アフィン予測部30372は、図30(d)に示すようなL、A、AR、LB、ALを含むブロックに対し、予測パラメータメモリ307を参照し、アフィン予測が利用されているか否かをチェック
する。ブロックL、A、AR、LB、ALの順にサーチし、最初に見つかったアフィン予測を利用するブロック(ここでは図30(d)のLとする)を参照ブロック(マージ参照ブロック)として選択し、動きベクトルを導出する。
アフィン予測部30372は、図30(d)に示すようなL、A、AR、LB、ALを含むブロックに対し、予測パラメータメモリ307を参照し、アフィン予測が利用されているか否かをチェック
する。ブロックL、A、AR、LB、ALの順にサーチし、最初に見つかったアフィン予測を利用するブロック(ここでは図30(d)のLとする)を参照ブロック(マージ参照ブロック)として選択し、動きベクトルを導出する。
アフィン予測部30372は、選択されたマージ参照ブロックの3点(図30(e)の点v0、点v1、点v2)を含むブロックの動きベクトル(mvvN_x,mvvN_y)(N=0..2)から、制御点(例えばV0、V1)の動きベクトル(mvN_x,mvN_y)(N=0..1)を導出する。なお、図30(e)に示す例では
、対象ブロックの横幅はW、高さはHであり、マージ参照ブロック(図の例では、Lを含む
ブロック)の横幅はw、高さはhである。
、対象ブロックの横幅はW、高さはHであり、マージ参照ブロック(図の例では、Lを含む
ブロック)の横幅はw、高さはhである。
mv0_x = mv0LX[0] = mvv0_x+(mvv1_x-mvv0_x)/w*w-(mvv2_y-mvv0_y)/h*(h-H) (式AFFINE-2)
mv0_y = mv0LX[1] = mvv0_y+(mvv2_y-mvv0_y)/h*w+(mvv1_x-mvv0_x)/w*(h-H)
mv1_x = mv1LX[0] = mvv0_x+(mvv1_x-mvv0_x)/w*(w+W)-(mvv2_y-mvv0_y)/h*(h-H)
mv1_y = mv1LX[1] = mvv0_y+(mvv2_y-mvv0_y)/h*(w+W)+(mvv1_x-mvv0_x)/w*(h-H)
導出した動きベクトルmv0、mv1の参照ピクチャが、対象ブロックの参照ピクチャと異なる場合は、参照ピクチャ各々と対象ピクチャのピクチャ間距離に基づいてスケーリングしてもよい。
mv0_y = mv0LX[1] = mvv0_y+(mvv2_y-mvv0_y)/h*w+(mvv1_x-mvv0_x)/w*(h-H)
mv1_x = mv1LX[0] = mvv0_x+(mvv1_x-mvv0_x)/w*(w+W)-(mvv2_y-mvv0_y)/h*(h-H)
mv1_y = mv1LX[1] = mvv0_y+(mvv2_y-mvv0_y)/h*(w+W)+(mvv1_x-mvv0_x)/w*(h-H)
導出した動きベクトルmv0、mv1の参照ピクチャが、対象ブロックの参照ピクチャと異なる場合は、参照ピクチャ各々と対象ピクチャのピクチャ間距離に基づいてスケーリングしてもよい。
次に、アフィン予測部30372、30321が(STEP1)で導出した制御点V0、V1の動きベクトル(mvN_x,mvN_y)(N=0..1)がタイル外を指す(参照ピクチャにおいて、コロケートブロックをmvNだけシフトした位置のブロックの一部、あるいは全部がコロケートタイル内に無い)
場合、下記の処理4(処理4A〜処理4D)のいずれかを施す。
・[処理4A] タイル境界パディング
STEP3でタイル境界パディング処理する。この場合、(STEP1)では特に追加処理を行わない。タイル境界パディング(タイル外パディング)は、既に説明したように、参照位置をタイルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準とした対象サブブロックの左上座標を(xs,ys)、対象ブロックの幅と
高さをW、H、対象サブブロックが位置する対象タイルの左上座標を(xTs,yTs)、対象タイ
ルの幅と高さをwT、hTとすると、サブブロックレベルの参照画素(xRef, yRef)を下式で導出する。
場合、下記の処理4(処理4A〜処理4D)のいずれかを施す。
・[処理4A] タイル境界パディング
STEP3でタイル境界パディング処理する。この場合、(STEP1)では特に追加処理を行わない。タイル境界パディング(タイル外パディング)は、既に説明したように、参照位置をタイルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準とした対象サブブロックの左上座標を(xs,ys)、対象ブロックの幅と
高さをW、H、対象サブブロックが位置する対象タイルの左上座標を(xTs,yTs)、対象タイ
ルの幅と高さをwT、hTとすると、サブブロックレベルの参照画素(xRef, yRef)を下式で導出する。
xRef + i = Clip3(xTs, xTs+wT-1, xs+(SpMvLX[k2][l2][0]>>log2(M)) + i) (式AFFINE-3)
yRef + j = Clip3(yTs, yTs+hT-1, ys+(SpMvLX[k2][l2][1]>>log2(M)) + j)
・[処理4B] タイル境界動きベクトル制限
サブブロックレベルの動きベクトルspMvLX[k2][l2]がタイル外を参照しないようにサブブロック動きベクトルspMvLX[k2][l2]をクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理4C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
コロケートタイル内を指す動きベクトルを持つ隣接サブブロックから動きベクトルをコピーする。
・[処理4D] アフィンオフ
コロケートタイル外を参照すると判定される場合には、affine_flag=0にセットする(
アフィン予測しない)。この場合は以上の処理を行わない。
yRef + j = Clip3(yTs, yTs+hT-1, ys+(SpMvLX[k2][l2][1]>>log2(M)) + j)
・[処理4B] タイル境界動きベクトル制限
サブブロックレベルの動きベクトルspMvLX[k2][l2]がタイル外を参照しないようにサブブロック動きベクトルspMvLX[k2][l2]をクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理4C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
コロケートタイル内を指す動きベクトルを持つ隣接サブブロックから動きベクトルをコピーする。
・[処理4D] アフィンオフ
コロケートタイル外を参照すると判定される場合には、affine_flag=0にセットする(
アフィン予測しない)。この場合は以上の処理を行わない。
なお、処理4はタイル符号化部2002のアフィン予測部とタイル復号部2012のアフィン予測部で同じ処理を選択する必要がある。
(STEP2)サブブロックベクトルの導出
アフィン予測部30372、30321が、(STEP1)で導出された対象ブロックの代表点であるブ
ロック制御点(制御点V0とV1、あるいは、V0とV2)の動きベクトルから、対象ブロックに含まれる各サブブロックの動きベクトルを導出する工程である。(STEP1)と(STEP2)によって、各サブブロックの動きベクトルspMvLXが導出される。なお、以下では制御点V0とV1の例を説明するが、V1の動きベクトルをV2の動きベクトルに置き換えれば、制御点V0とV2でも同様の処理で、各サブブロックの動きベクトルを導出することができる。
アフィン予測部30372、30321が、(STEP1)で導出された対象ブロックの代表点であるブ
ロック制御点(制御点V0とV1、あるいは、V0とV2)の動きベクトルから、対象ブロックに含まれる各サブブロックの動きベクトルを導出する工程である。(STEP1)と(STEP2)によって、各サブブロックの動きベクトルspMvLXが導出される。なお、以下では制御点V0とV1の例を説明するが、V1の動きベクトルをV2の動きベクトルに置き換えれば、制御点V0とV2でも同様の処理で、各サブブロックの動きベクトルを導出することができる。
図13(a)は、対象ブロックを構成する各サブブロックの動きベクトルspMvLXを、制御
点V0の動きベクトル(mv0_x, mv0_y)およびV1の動きベクトル(mv1_x, mv1_y)から導出する例を示す図である。各サブブロックの動きベクトルspMvLXは、図13(a)に示すよう
に、各サブブロックの中心に位置する点毎の動きベクトルとして導出する。
点V0の動きベクトル(mv0_x, mv0_y)およびV1の動きベクトル(mv1_x, mv1_y)から導出する例を示す図である。各サブブロックの動きベクトルspMvLXは、図13(a)に示すよう
に、各サブブロックの中心に位置する点毎の動きベクトルとして導出する。
アフィン予測部30372、30321は制御点V0とV1の動きベクトル(mv0_x,mv0_y)、(mv1_x,mv1_y)に基づいて、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi=xb+BW*i、yj=yb+BH*j、i=0,1,2,・・・,W/BW-1、j=0,1,2,・・・,H/BH-1)を下記の式を用いて、
導出する。
導出する。
spMvLX[xi][yi][0]=mv0_x+(mv1_x-mv0_x)/W*(xi+BW/2)-(mv1_y-mv0_y)/W*(yi+BH/2)
(式AFFINE-4)
spMvLX[xi][yi][1]=mv0_y+(mv1_y-mv0_y)/W*(xi+BW/2)+(mv1_x-mv0_x)/W*(yi+BH/2)
ここで、xb、ybは、対象PUの左上座標、W、Hは対象ブロックの幅と高さ、BW、BHはサブブロックの幅と高さである。
(式AFFINE-4)
spMvLX[xi][yi][1]=mv0_y+(mv1_y-mv0_y)/W*(xi+BW/2)+(mv1_x-mv0_x)/W*(yi+BH/2)
ここで、xb、ybは、対象PUの左上座標、W、Hは対象ブロックの幅と高さ、BW、BHはサブブロックの幅と高さである。
図13(b)は、対象ブロック(幅W、高さH)を幅BW、高さBHのサブブロックに分割した例
を示す図である。
を示す図である。
サブブロック位置(i, j)及びサブブロック座標(xi, yj)の点は、図13(b)におけるx軸に平行な破線とy軸に平行な破線との交点である。図13(b)には、一例として、サブブロック位置(i,j)=(1,1)の点、及び当該サブブロック位置(1, 1)に対するサブブロック座標(xi,y
j)=(x1,y1)=(BW+BW/2, BH+BH/2)の点が示されている。
j)=(x1,y1)=(BW+BW/2, BH+BH/2)の点が示されている。
(STEP3)サブブロック動き補償
動き補償部3091が、インター予測パラメータ復号部303から入力された、予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、(STEP2)で導出したサ
ブブロックの動きベクトルspMvLXに基づいて、affine_flag=1の場合に、サブブロック単
位の動き補償を行う工程である。具体的には、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャ上の、対象サブブロックの位置を起点として、動きベクトルspMvLXだけずれた位置にあるブロックを読み出しフィルタリングすることによって、動き補償画像PredLXを生成する。
動き補償部3091が、インター予測パラメータ復号部303から入力された、予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、(STEP2)で導出したサ
ブブロックの動きベクトルspMvLXに基づいて、affine_flag=1の場合に、サブブロック単
位の動き補償を行う工程である。具体的には、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャ上の、対象サブブロックの位置を起点として、動きベクトルspMvLXだけずれた位置にあるブロックを読み出しフィルタリングすることによって、動き補償画像PredLXを生成する。
(STEP2)で導出したサブブロックの動きベクトルがタイル外を指す場合、タイル境界を
パディングして画素を読み出す。
パディングして画素を読み出す。
なお、タイル復号部2012では、タイル符号化部2002から通知されたaffine_flagがあれ
ば、affine_flag=1の場合にのみ、上記処理を実施してもよい。
ば、affine_flag=1の場合にのみ、上記処理を実施してもよい。
図31(a)は上記のアフィン予測の動作を示すフローチャートである。
アフィン予測部30372、30321は制御点の動きベクトルを導出する(S3101)。
次にアフィン予測部30372、30321は導出した制御点の動きベクトルがタイル外を指すか否かを判定する(S3102)。動きベクトルがタイル外を指さない場合(S3102でN)、S3104
に進む。動きベクトルが一部でもタイル外を指す場合(S3102でY)、S3103に進む。
に進む。動きベクトルが一部でもタイル外を指す場合(S3102でY)、S3103に進む。
動きベクトルが一部でもタイル外を指す場合、アフィン予測部30372、30321は上記で説明した処理4のいずれか、たとえば動きベクトルをクリッピングし、動きベクトルがタイル内を指すように修正する。
このS3101〜S3103は上記の(STEP1)に対応する処理である。
アフィン予測部30372、30321は導出した制御点の動きベクトルをもとに、各サブブロックの動きベクトルを導出する(S3104)。S3104は上記(STEP2)に対応する処理である。
動き補償部3091はaffine_flag=1か否かを判定する(S3105)。affine_flag=1でない
場合(S3105でN)、動き補償部3091はアフィン予測を実施せず、アフィン予測処理を終了する。affine_flag=1の場合(S3105でY)、S3106に進む。
場合(S3105でN)、動き補償部3091はアフィン予測を実施せず、アフィン予測処理を終了する。affine_flag=1の場合(S3105でY)、S3106に進む。
動き補償部3091は、サブブロックの動きベクトルがタイル外を指すか否かを判定する(3106)。動きベクトルがタイル外を指さない場合(S3106でN)、S3108に進む。動きベ
クトルが一部でもタイル外を指す場合(S3106でY)、S3107に進む。
クトルが一部でもタイル外を指す場合(S3106でY)、S3107に進む。
サブブロックの動きベクトルが一部でもタイル外を指す場合、動き補償部3091はタイル境界をパディングする(S3107)。
動き補償部3091は、サブブロックの動きベクトルを用いてアフィン予測による動き補償画像を生成する(S3108)。
このS3105〜S3108は上記(STEP3)に対応する処理である。
図31(b)は、図31(a)のS3101で、AMVP予測の場合に制御点を決定する一例を示すフロー
チャートである。
チャートである。
アフィン予測部30321は、対象ブロックの上側がタイル境界に接するか否かを判定する(S3110)。タイルの上側境界に接する場合(S3110でY)、S3111に進み、制御点をV0、V2に
設定する(S3111)。そうでない場合(S3110でN)、S3112に進み、制御点をV0、V1に設定する(S3112)。
設定する(S3111)。そうでない場合(S3110でN)、S3112に進み、制御点をV0、V1に設定する(S3112)。
アフィン予測において、隣接ブロックがタイル外に位置したり、動きベクトルがタイル外を指す場合であっても、上記のように制御点を設定、アフィン予測の動きベクトルを導出、予測画像を生成することで、タイル内の画素値を用いて参照画素を置き換えることができる。従って、アフィン予測処理の使用頻度の低下を抑制しつつ、タイルを独立にインター予測できるので符号化効率を高めることができる。
(マッチング動き導出部30373)
マッチング動き導出部30373は、バイラテラルマッチングまたはテンプレートマッチングの何れかのマッチング処理を行うことにより、PUを構成するブロック又はサブブロックの動きベクトルspMvLXを導出する。図14は、(a)バイラテラルマッチング(Bilateral matching)、(b)テンプレートマッチング(Template matching)を説明するための図
である。マッチング動き導出モードは、マージモードの一つのマージ候補(マッチング候補)として選択される。
マッチング動き導出部30373は、バイラテラルマッチングまたはテンプレートマッチングの何れかのマッチング処理を行うことにより、PUを構成するブロック又はサブブロックの動きベクトルspMvLXを導出する。図14は、(a)バイラテラルマッチング(Bilateral matching)、(b)テンプレートマッチング(Template matching)を説明するための図
である。マッチング動き導出モードは、マージモードの一つのマージ候補(マッチング候補)として選択される。
マッチング動き導出部30373は、物体が等速運動をすると仮定して、複数の参照ピクチャにおける領域のマッチングにより動きベクトルを導出する。バイラテラルマッチングでは、ある物体が、参照ピクチャAのある領域、対象ピクチャCur_Picの対象PU、参照
ピクチャBのある領域を等速運動で通過するものと仮定して、参照ピクチャA、B間のマッチングにより対象PUの動きベクトルを導出する。テンプレートマッチングでは、対象PUの隣接領域の動きベクトルと対象PUの動きベクトルが等しいと仮定して、対象PUの隣接領域Temp_Cur(テンプレート)と参照ピクチャ上の参照ブロックの隣接領域Temp_L0のマッ
チングにより動きベクトルを導出する。マッチング動き導出部では、対象PUを複数のサブブロックに分割し、分割したサブブロック単位で後述のバイラテラルマッチングもしくはテンプレートマッチングを行うことにより、サブブロックの動きベクトルspMvLX[xi][yi]
(xi=xPb+BW*i、yj=yPb+BH*j、i=0,1,2,・・・,W/BW-1、j=0,1,2,・・・,H/BH-1)を導出
する。
ピクチャBのある領域を等速運動で通過するものと仮定して、参照ピクチャA、B間のマッチングにより対象PUの動きベクトルを導出する。テンプレートマッチングでは、対象PUの隣接領域の動きベクトルと対象PUの動きベクトルが等しいと仮定して、対象PUの隣接領域Temp_Cur(テンプレート)と参照ピクチャ上の参照ブロックの隣接領域Temp_L0のマッ
チングにより動きベクトルを導出する。マッチング動き導出部では、対象PUを複数のサブブロックに分割し、分割したサブブロック単位で後述のバイラテラルマッチングもしくはテンプレートマッチングを行うことにより、サブブロックの動きベクトルspMvLX[xi][yi]
(xi=xPb+BW*i、yj=yPb+BH*j、i=0,1,2,・・・,W/BW-1、j=0,1,2,・・・,H/BH-1)を導出
する。
図14の(a)に示すように、バイラテラルマッチングでは、対象ピクチャCur_Picに
おける対象ブロックCur_blockの動きベクトルを導出するために、2枚の参照ピクチャが
参照される。より具体的には、まず、対象ブロックCur_blockの座標を(xCur,yCur)と表現したとき、参照ピクチャインデックスrefIdxL0によって指定される参照ピクチャRef0(参照ピクチャAと呼ぶ)内の領域であって、
(xPos0,yPos0)=(xCur+mv0[0], yCur+mv0[1]) (式FRUC-1)
によって特定される左上座標(xPos0,yPos0)を有するBlock_Aと、例えば参照ピクチャインデックスrefIdxL1によって指定される参照ピクチャRef1(参照ピクチャBと呼ぶ)内の領域であって、
(xPos1,yPos1)=(xCur+mv1[0], xCur+mv1[1]) =(xCur-mv0[0]*DiffPicOrderCnt(Cur_Pic,Ref1)/ DiffPicOrderCnt(Cur_Pic,Ref0), yCur-mv0[1]*DiffPicOrderCnt(Cur_Pic,Ref1)/ DiffPicOrderCnt(Cur_Pic,Ref0)) (式FRUC-2)
によって特定される左上座標(xPos1,yPos1)を有するBlock_Bとが設定される。ここで、DiffPicOrderCnt(Cur_Pic,Ref0)、及びDiffPicOrderCnt(Cur_Pic,Ref1)は、図14の(a)に示すように、それぞれ、対象ピクチャCur_Picと参照ピクチャAとの時間情報の差を
返す関数、及び対象ピクチャCur_Picと参照ピクチャBとの時間情報の差を返す関数を表
している。
おける対象ブロックCur_blockの動きベクトルを導出するために、2枚の参照ピクチャが
参照される。より具体的には、まず、対象ブロックCur_blockの座標を(xCur,yCur)と表現したとき、参照ピクチャインデックスrefIdxL0によって指定される参照ピクチャRef0(参照ピクチャAと呼ぶ)内の領域であって、
(xPos0,yPos0)=(xCur+mv0[0], yCur+mv0[1]) (式FRUC-1)
によって特定される左上座標(xPos0,yPos0)を有するBlock_Aと、例えば参照ピクチャインデックスrefIdxL1によって指定される参照ピクチャRef1(参照ピクチャBと呼ぶ)内の領域であって、
(xPos1,yPos1)=(xCur+mv1[0], xCur+mv1[1]) =(xCur-mv0[0]*DiffPicOrderCnt(Cur_Pic,Ref1)/ DiffPicOrderCnt(Cur_Pic,Ref0), yCur-mv0[1]*DiffPicOrderCnt(Cur_Pic,Ref1)/ DiffPicOrderCnt(Cur_Pic,Ref0)) (式FRUC-2)
によって特定される左上座標(xPos1,yPos1)を有するBlock_Bとが設定される。ここで、DiffPicOrderCnt(Cur_Pic,Ref0)、及びDiffPicOrderCnt(Cur_Pic,Ref1)は、図14の(a)に示すように、それぞれ、対象ピクチャCur_Picと参照ピクチャAとの時間情報の差を
返す関数、及び対象ピクチャCur_Picと参照ピクチャBとの時間情報の差を返す関数を表
している。
次に、Block_AとBlock_Bとのマッチングコストが最小となるように、(mv0[0],mv0[1]
)が決定される。このようにして導出された(mv0[0],mv0[1])が、対象ブロックに付与
される動きベクトルとなる。この対象ブロックに付与された動きベクトルをもとに、対象ブロックを分割したサブブロック毎に動きベクトルspMVL0を導出する。
)が決定される。このようにして導出された(mv0[0],mv0[1])が、対象ブロックに付与
される動きベクトルとなる。この対象ブロックに付与された動きベクトルをもとに、対象ブロックを分割したサブブロック毎に動きベクトルspMVL0を導出する。
一方、図14の(b)は、上記マッチング処理のうち、テンプレートマッチング(Template matching)について説明するための図である。
図14の(b)に示すように、テンプレートマッチングでは、対象ピクチャCur_Picに
おける対象ブロックCur_blockの動きベクトルを導出するために、一度に1枚の参照ピク
チャが参照される。
おける対象ブロックCur_blockの動きベクトルを導出するために、一度に1枚の参照ピク
チャが参照される。
より具体的には、例えば参照ピクチャインデックスrefIdxL0によって指定される参照ピクチャRef0(参照ピクチャAと呼ぶ)内の領域であって、
(xPos0,yPos0)=(xCur+mv0[0], yCur+mv0[1]) (式FRUC-3)
によって特定される左上座標(xPos0, yPos0)を有する参照ブロックBlock_Aが特定され
る。ここで、(xCur, yCur)は、対象ブロックCur_blockの左上座標である。
(xPos0,yPos0)=(xCur+mv0[0], yCur+mv0[1]) (式FRUC-3)
によって特定される左上座標(xPos0, yPos0)を有する参照ブロックBlock_Aが特定され
る。ここで、(xCur, yCur)は、対象ブロックCur_blockの左上座標である。
次に、対象ピクチャCur_Picにおいて対象ブロックCur_blockに隣接したテンプレート領域Temp_Curと、参照ピクチャAにおいてBlock_Aに隣接したテンプレート領域Temp_L0とが設定される。図14の(b)に示す例において、テンプレート領域Temp_Curは、対象ブロックCur_blockの上側に隣接する領域及び対象ブロックCur_blockの左側に隣接する領域とから構成されている。また、テンプレート領域Temp_L0は、Block_Aの上側に隣接する領域及びBlock_Aの左側に隣接する領域とから構成されている。
次にTemp_CurとTemp_L0とのマッチングコストが最小になる(mv0[0],mv0[1])が決定され、対象ブロックに付与される動きベクトルとなる。この対象ブロックに付与された動きベクトルをもとに、対象ブロックを分割したサブブロック毎に動きベクトルspMvL0を導出する。
また、テンプレートマッチングでも、2枚の参照ピクチャRef0、Ref1に対して処理してもよい。この場合、上記に説明した参照ピクチャRef0のマッチングと参照ピクチャRef1のマッチングを順に行う。参照ピクチャインデックスrefIdxL1によって指定される参照ピクチャRef1(参照ピクチャBと呼ぶ)内の領域であって、
(xPos1,yPos1)=(xCur+mv1[0], yCur+mv1[1]) (式FRUC-4)
によって特定される左上座標(xPos1, yPos1)を有する参照ブロックBlock_Bが特定され
、参照ピクチャBにおいてBlock_Bに隣接したテンプレート領域Temp_L1とが設定される。
最終的にTemp_CurとTemp_L1とのマッチングコストが最小になる(mv1[0],mv1[1])が決定され、対象ブロックに付与される動きベクトルとなる。この対象ブロックに付与された動きベクトルをもとに、対象ブロックを分割したサブブロック毎に動きベクトルspMvL1を導出する。
(xPos1,yPos1)=(xCur+mv1[0], yCur+mv1[1]) (式FRUC-4)
によって特定される左上座標(xPos1, yPos1)を有する参照ブロックBlock_Bが特定され
、参照ピクチャBにおいてBlock_Bに隣接したテンプレート領域Temp_L1とが設定される。
最終的にTemp_CurとTemp_L1とのマッチングコストが最小になる(mv1[0],mv1[1])が決定され、対象ブロックに付与される動きベクトルとなる。この対象ブロックに付与された動きベクトルをもとに、対象ブロックを分割したサブブロック毎に動きベクトルspMvL1を導出する。
(マッチング処理による動きベクトル導出処理)
マッチングモードにおける動きベクトル導出(パターンマッチベクトル導出)処理の流れについて図32のフローチャートを参照して説明する。
マッチングモードにおける動きベクトル導出(パターンマッチベクトル導出)処理の流れについて図32のフローチャートを参照して説明する。
図32に示す処理は、マッチング予測部30373により実行される。図32(a)はバイラテラル
マッチング処理のフローチャートであり、図32(b)はテンプレートマッチング処理のフロ
ーチャートである。
マッチング処理のフローチャートであり、図32(b)はテンプレートマッチング処理のフロ
ーチャートである。
なお、図32(a)に示す各ステップのうち、S3201〜S3205は、ブロックレベルで実行され
るブロックサーチである。すなわち、パターンマッチを用いて、ブロック(CUまたはPU)全体で動きベクトルを導出する。
るブロックサーチである。すなわち、パターンマッチを用いて、ブロック(CUまたはPU)全体で動きベクトルを導出する。
また、S3206〜S3207は、サブブロックレベルで実行されるサブブロックサーチである。すなわち、パターンマッチを用いて、ブロックを構成するサブブロック単位で動きベクトルを導出する。
まず、S3201において、マッチング予測部30373は、対象ブロックにおけるブロックレベルの初期ベクトル候補を設定する。初期ベクトル候補は、対象ブロックのAMVP候補、マージ候補等の隣接ブロックの動きベクトルである。
次に、S3202では、マッチング予測部30373は、上記で設定した初期ベクトル候補の中から、マッチングコストが最小となるベクトルをサーチし、ベクトル探索のベースとなる初期ベクトルとする。マッチングコストは、例えば下式のように表される。
SAD = ΣΣabs(Block_A[x][y]-Block_B[x][y]) (式FRUC-5)
x y
ここでBlock_A[][]とBlock_B[][]は各々、ブロックの左上座標が(式FRUC-1)、(式FRUC-2)の(xPos0,yPos0)、(xPos1,yPos1)で表されるブロックであり、(mv0[0],mv0[1])に初
期ベクトル候補を代入する。そして、マッチングコストが最小となるベクトルを(mv0[0],mv0[1])に再度セットする。
x y
ここでBlock_A[][]とBlock_B[][]は各々、ブロックの左上座標が(式FRUC-1)、(式FRUC-2)の(xPos0,yPos0)、(xPos1,yPos1)で表されるブロックであり、(mv0[0],mv0[1])に初
期ベクトル候補を代入する。そして、マッチングコストが最小となるベクトルを(mv0[0],mv0[1])に再度セットする。
次に、S3203では、マッチング予測部30373は、S3202で求めた初期ベクトルがタイル外
を指す(参照ピクチャにおいて、コロケートブロックをmvN(N=0..1)だけシフトした位置
のブロックの一部、あるいは全部がコロケートタイル内に無い)かどうかを判定する。初期ベクトルがタイル外を指さない場合(S3203でN)、S3205に進む。初期ベクトルが一部
でもタイル外を指す場合(S3203でY)、S3204に進む。
を指す(参照ピクチャにおいて、コロケートブロックをmvN(N=0..1)だけシフトした位置
のブロックの一部、あるいは全部がコロケートタイル内に無い)かどうかを判定する。初期ベクトルがタイル外を指さない場合(S3203でN)、S3205に進む。初期ベクトルが一部
でもタイル外を指す場合(S3203でY)、S3204に進む。
S3204では、マッチング予測部30373は、以下の処理5(処理5A〜処理5C)のいずれかを実行する。
・[処理5A] タイル境界パディング
動き補償部3091でタイル境界パディングする。
・[処理5A] タイル境界パディング
動き補償部3091でタイル境界パディングする。
初期ベクトル(mv0[0],mv0[1])の指す画素がタイル外を参照しないようにクリッピング
する。ピクチャの左上座標を基準とした対象ブロックの左上座標を(xs,ys)、対象ブロッ
クの幅と高さをW、H、対象ブロックが位置する対象タイルの左上座標を(xTs,yTs)、対象
タイルの幅と高さをwT、hTとすると、サブブロックの参照画素(xRef, yRef)を下式で導出する。
する。ピクチャの左上座標を基準とした対象ブロックの左上座標を(xs,ys)、対象ブロッ
クの幅と高さをW、H、対象ブロックが位置する対象タイルの左上座標を(xTs,yTs)、対象
タイルの幅と高さをwT、hTとすると、サブブロックの参照画素(xRef, yRef)を下式で導出する。
xRef + i = Clip3(xTs, xTs+wT-1, xs+(mv0[0]>>log2(M)) + i) (式FRUC-6)
yRef + j = Clip3(yTs, yTs+hT-1, ys+(mv1[1]>>log2(M)) + j)
・[処理5B] タイル境界動きベクトル制限
初期ベクトルの動きベクトルmv0がタイル外を参照しないように初期ベクトルmv0をクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理5C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
動きベクトルmv0の指す先がコロケートタイル内にない場合には、コロケートタイル内
にある代替動きベクトルでコピーする。
・[処理5D] タイル境界バイラテラルフィルタオフ
コロケートタイル外を参照すると判定される場合には、バイラテラルマッチングのオン・オフを示すBM_flagを0にセットし、バイラテラルマッチングは実施しない(endに進む
)。
なお、処理5はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
yRef + j = Clip3(yTs, yTs+hT-1, ys+(mv1[1]>>log2(M)) + j)
・[処理5B] タイル境界動きベクトル制限
初期ベクトルの動きベクトルmv0がタイル外を参照しないように初期ベクトルmv0をクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理5C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
動きベクトルmv0の指す先がコロケートタイル内にない場合には、コロケートタイル内
にある代替動きベクトルでコピーする。
・[処理5D] タイル境界バイラテラルフィルタオフ
コロケートタイル外を参照すると判定される場合には、バイラテラルマッチングのオン・オフを示すBM_flagを0にセットし、バイラテラルマッチングは実施しない(endに進む
)。
なお、処理5はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
S3205では、マッチング予測部30373は、対象ブロックにおけるブロックレベルのローカルサーチ(局所的探索)を行う。ローカルサーチでは、S3202あるいはS3204で導出された初期ベクトルを中心とする局所領域(例えば初期ベクトルを中心とする±D画素の領域)
をさらにサーチし、マッチングコストが最小となるベクトルを探索し、最終的な対象ブロックの動きベクトルとする。
をさらにサーチし、マッチングコストが最小となるベクトルを探索し、最終的な対象ブロックの動きベクトルとする。
続いて、対象ブロックに含まれる各サブブロックについて、以下の処理を行う(S3206
〜S3207)。
〜S3207)。
S3206では、マッチング予測部30373は、対象ブロックにおけるサブブロックの初期ベクトルを導出(初期ベクトルサーチ)する。サブブロックの初期ベクトル候補は、S3205で
導出したブロックレベルの動きベクトル、当該サブブロックの時空間方向の隣接ブロックの動きベクトル、当該サブブロックのATMVPあるいはSTMVPベクトル等である。これらの候補ベクトルの中から、マッチングコストが最小となるベクトルを当該サブブロックの初期ベクトルとする。なお、サブブロックの初期ベクトル探索に利用するベクトル候補は上述のベクトルに限定されない。
導出したブロックレベルの動きベクトル、当該サブブロックの時空間方向の隣接ブロックの動きベクトル、当該サブブロックのATMVPあるいはSTMVPベクトル等である。これらの候補ベクトルの中から、マッチングコストが最小となるベクトルを当該サブブロックの初期ベクトルとする。なお、サブブロックの初期ベクトル探索に利用するベクトル候補は上述のベクトルに限定されない。
次に、S3207では、マッチング予測部30373は、S3206で選択されたサブブロックの初期
ベクトルを中心とする局所領域(例えば初期ベクトルを中心とする±D画素の領域)で、
ステップサーチ等(ローカルサーチ)を行う。そして、サブブロックの初期ベクトル付近のベクトル候補のマッチングコストを導出し、最小となるベクトルをサブブロックの動きベクトルとして導出する。
ベクトルを中心とする局所領域(例えば初期ベクトルを中心とする±D画素の領域)で、
ステップサーチ等(ローカルサーチ)を行う。そして、サブブロックの初期ベクトル付近のベクトル候補のマッチングコストを導出し、最小となるベクトルをサブブロックの動きベクトルとして導出する。
そして、対象ブロックに含まれる全てのサブブロックについて処理が完了すると、バイラテラルマッチングのパターンマッチベクトル導出処理が終了する。
次にテンプレートマッチングのパターンマッチベクトル導出処理を、図32(b)を用いて
説明する。図32(b)に示す各ステップのうち、S3211〜S3205は、ブロックレベルで実行さ
れるブロックサーチである。また、S3214〜S3207は、サブブロックレベルで実行されるサブブロックサーチである。
説明する。図32(b)に示す各ステップのうち、S3211〜S3205は、ブロックレベルで実行さ
れるブロックサーチである。また、S3214〜S3207は、サブブロックレベルで実行されるサブブロックサーチである。
まず、S3211において、マッチング予測部30373は、対象ブロックのテンプレートTemp_Cur(対象ブロックの上隣接領域と左隣接領域の双方)がタイル内に存在するか否かを判定する。存在する場合(S3211でY)、図14(c)に示すように、Temp_Curに対象ブロックの上
隣接領域と左隣接領域をセットし、対象ブロックのテンプレートを取得する(S3213)。そ
うでなければ(S3211でN)、S3212に進み、以下の処理6(処理6A〜処理6E)のいずれ
かを実行する。
・[処理6A] タイル境界パディング
動き補償部3091でタイル境界パディングする。
・[処理6B] タイル境界動きベクトル制限
動きベクトルがタイル外を参照しないように動きベクトルをクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理6C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
サブブロック動きベクトルの指す先がコロケートタイル内にない場合には、コロケートタイル内にある代替動きベクトルでコピーする。
・[処理6D] テンプレートマッチングオフ
コロケートタイル外を参照すると判定される場合には、テンプレートマッチングのオン、オフを示すTM_flagを0にセットし、テンプレートマッチングは実施しない(endに進む
)。
・[処理6E] 上隣接領域と左隣接領域のどちらか片方がタイル内にある場合、その隣接領
域をテンプレートとしてセットする。
なお、処理6はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
隣接領域と左隣接領域をセットし、対象ブロックのテンプレートを取得する(S3213)。そ
うでなければ(S3211でN)、S3212に進み、以下の処理6(処理6A〜処理6E)のいずれ
かを実行する。
・[処理6A] タイル境界パディング
動き補償部3091でタイル境界パディングする。
・[処理6B] タイル境界動きベクトル制限
動きベクトルがタイル外を参照しないように動きベクトルをクリッピングする。タイル境界動きベクトル制限については上述したとおりである。
・[処理6C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
サブブロック動きベクトルの指す先がコロケートタイル内にない場合には、コロケートタイル内にある代替動きベクトルでコピーする。
・[処理6D] テンプレートマッチングオフ
コロケートタイル外を参照すると判定される場合には、テンプレートマッチングのオン、オフを示すTM_flagを0にセットし、テンプレートマッチングは実施しない(endに進む
)。
・[処理6E] 上隣接領域と左隣接領域のどちらか片方がタイル内にある場合、その隣接領
域をテンプレートとしてセットする。
なお、処理6はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
次に、S3201では、マッチング予測部30373は、対象ブロックにおけるブロックレベルの初期ベクトル候補を設定する。S3201の処理は図32(a)のS3201と同じである。
次に、S3202では、マッチング予測部30373は、上記で設定した初期ベクトル候補の中から、マッチングコストが最小となるベクトルをサーチし、ベクトル探索のベースとなる初期ベクトルとする。マッチングコストは、例えば下式のように表される。
SAD = ΣΣabs(Temp_Cur[x][y]-Temp_L0[x][y]) (式FRUC-7)
x y
ここでTemp_L0[][]は、図14(b)に示す対象ブロックのテンプレートであり、(式FRUC-3)で示される(xPos0,yPos0)を左上座標とするBlock_Aの上側および左側に隣接する領域である。(式FRUC-3)の(mv0[0],mv0[1])には初期ベクトル候補を代入する。そして、マッチ
ングコストが最小となるベクトルを(mv0[0],mv0[1])に再度セットする。なお、S3212でテンプレートに対象ブロックの上側あるいは左側領域のみセットした場合、Temp_L0[][]も
同じ形状にする。
x y
ここでTemp_L0[][]は、図14(b)に示す対象ブロックのテンプレートであり、(式FRUC-3)で示される(xPos0,yPos0)を左上座標とするBlock_Aの上側および左側に隣接する領域である。(式FRUC-3)の(mv0[0],mv0[1])には初期ベクトル候補を代入する。そして、マッチ
ングコストが最小となるベクトルを(mv0[0],mv0[1])に再度セットする。なお、S3212でテンプレートに対象ブロックの上側あるいは左側領域のみセットした場合、Temp_L0[][]も
同じ形状にする。
S3203およびS3204の処理は、図32(a)のS3203およびS3204と同じ処理である。なお図32(b)のS3204の処理5において、テンプレートマッチングをオフにする場合、TM_flagを0に
セットする。
セットする。
S3205では、マッチング予測部30373は、対象ブロックにおけるブロックレベルのローカルサーチ(局所的探索)を行う。ローカルサーチでは、S3202あるいはS3204で導出された初期ベクトルを中心とする局所領域(例えば初期ベクトルを中心とする±D画素の領域)
をさらにサーチし、マッチングコストが最小となるベクトルを探索し、最終的な対象ブロックの動きベクトルとする。
をさらにサーチし、マッチングコストが最小となるベクトルを探索し、最終的な対象ブロックの動きベクトルとする。
続いて、対象ブロックに含まれる各サブブロックについて、以下の処理を行う(S3214
〜S3207)。
〜S3207)。
S3214では、マッチング予測部30373は、図14(d)に示すように、対象ブロックにおける
サブブロックのテンプレートを取得する。S3212でテンプレートに対象ブロックの上側あ
るいは左側領域のみセットした場合、S3214でもサブブロックのテンプレートを同じ形状
にする。
サブブロックのテンプレートを取得する。S3212でテンプレートに対象ブロックの上側あ
るいは左側領域のみセットした場合、S3214でもサブブロックのテンプレートを同じ形状
にする。
S3206では、マッチング予測部30373は、対象ブロックにおけるサブブロックの初期ベクトルを導出(初期ベクトルサーチ)する。サブブロックの初期ベクトル候補は、S3205で
導出したブロックレベルの動きベクトル、当該サブブロックの時空間方向の隣接ブロックの動きベクトル、当該サブブロックのATMVPあるいはSTMVPベクトル等である。これらの候
補ベクトルの中から、マッチングコストが最小となるベクトルを当該サブブロックの初期ベクトルとする。なお、サブブロックの初期ベクトル探索に利用するベクトル候補は上述のベクトルに限定されない。
導出したブロックレベルの動きベクトル、当該サブブロックの時空間方向の隣接ブロックの動きベクトル、当該サブブロックのATMVPあるいはSTMVPベクトル等である。これらの候
補ベクトルの中から、マッチングコストが最小となるベクトルを当該サブブロックの初期ベクトルとする。なお、サブブロックの初期ベクトル探索に利用するベクトル候補は上述のベクトルに限定されない。
次に、S3207では、マッチング予測部30373は、S3206で選択されたサブブロックの初期
ベクトルを中心とするステップサーチ(ローカルサーチ)を行う。そして、サブブロックの初期ベクトルを中心とする局所領域(例えば初期ベクトルを中心とする±D画素の領域
)のベクトル候補のマッチングコストを導出し、最小となるベクトルをサブブロックの動きベクトルとして導出する。
ベクトルを中心とするステップサーチ(ローカルサーチ)を行う。そして、サブブロックの初期ベクトルを中心とする局所領域(例えば初期ベクトルを中心とする±D画素の領域
)のベクトル候補のマッチングコストを導出し、最小となるベクトルをサブブロックの動きベクトルとして導出する。
そして、対象ブロックに含まれる全てのサブブロックについて処理が完了すると、テンプレートマッチングのパターンマッチベクトル導出処理が終了する。
以上は参照ピクチャがRef0の場合であったが、参照ピクチャをRef1とした場合も、上記と同じ処理でテンプレートマッチングを実施することができる。さらに、参照ピクチャが2枚の場合、導出した2つの動きベクトルを用いて、動き補償部3091では双予測処理を行う。
動き補償部3091に出力するfruc_merge_idxは下式で導出する。
fruc_merge_idx = fruc_merge_idx & BM_flag & (TM_flag<<1) (式FRUC-8)
なお、タイル復号部2012でfruc_merge_idxが通知される場合は、パターンマッチベクトル導出処理の前にBM_flagとTM_flagを導出し、フラグの値が真のマッチング処理のみ実施してもよい。
なお、タイル復号部2012でfruc_merge_idxが通知される場合は、パターンマッチベクトル導出処理の前にBM_flagとTM_flagを導出し、フラグの値が真のマッチング処理のみ実施してもよい。
BM_flag = fruc_merge_idx & 1 (式FRUC-9)
TM_flag = (fruc_merge_idx & 10)>>1
なお、テンプレートがタイル外に位置することでテンプレートマッチングをオフにする場合、fruc_merge_idx=0(マッチング処理なし)、fruc_merge_idx=1(バイラテラルマッチ
ング)の2択となり、fruc_merge_idxは1bitで表現することができる。
TM_flag = (fruc_merge_idx & 10)>>1
なお、テンプレートがタイル外に位置することでテンプレートマッチングをオフにする場合、fruc_merge_idx=0(マッチング処理なし)、fruc_merge_idx=1(バイラテラルマッチ
ング)の2択となり、fruc_merge_idxは1bitで表現することができる。
また、動き補償部3091では、マッチング予測部30373で導出したfruc_merge_idxおよび
動きベクトルをもとに、マッチング処理による予測画像を生成するが、処理5において、タイル外を指す動きベクトルを修正しなかった場合は、タイル境界の画素をパディングした後、動き補償を実施する。
動きベクトルをもとに、マッチング処理による予測画像を生成するが、処理5において、タイル外を指す動きベクトルを修正しなかった場合は、タイル境界の画素をパディングした後、動き補償を実施する。
マッチング処理において、テンプレートがタイル外に位置したり、動きベクトルがタイル外を指す場合であっても、上記のように動きベクトルを導出、予測画像を生成することで、タイル内の画素値を用いて参照画素を置き換えることができる。従って、マッチング処理の使用頻度の低下を抑制しつつ、タイルを独立にインター予測できるので符号化効率を高めることができる。
(OBMC処理)
本実施形態に係る動き補償部3091はOBMC処理を用いて予測画像を生成してもよい。ここで、OBMC(Overlapped block motion compensation)処理について説明する。OBMC処理とは、対象ブロックのインター予測パラメータ(以下、動きパラメータ)を用いて生成される対象サブブロックの補間画像PredCと、対象サブブロックの隣接ブロックの動きパ
ラメータを用いて生成される対象ブロックの補間画像PredRNを用いて、対象ブロックの補間画像(動き補償画像)を生成する処理である。ブロック境界との距離が近い対象ブロック内の画素(境界画素)において、隣接ブロックの動きパラメータに基づく補間画像Pred
RNにより、対象ブロックの補間画像を補正する処理がサブブロック単位で行われる。
本実施形態に係る動き補償部3091はOBMC処理を用いて予測画像を生成してもよい。ここで、OBMC(Overlapped block motion compensation)処理について説明する。OBMC処理とは、対象ブロックのインター予測パラメータ(以下、動きパラメータ)を用いて生成される対象サブブロックの補間画像PredCと、対象サブブロックの隣接ブロックの動きパ
ラメータを用いて生成される対象ブロックの補間画像PredRNを用いて、対象ブロックの補間画像(動き補償画像)を生成する処理である。ブロック境界との距離が近い対象ブロック内の画素(境界画素)において、隣接ブロックの動きパラメータに基づく補間画像Pred
RNにより、対象ブロックの補間画像を補正する処理がサブブロック単位で行われる。
図33は、本実施形態に係る隣接ブロックの動きパラメータを利用して予測画像を生成する領域の一例を示す図である。ブロック単位の予測では、ブロック内の動きパラメータは同じであるため、図33(a)に示すように、ブロック境界から所定の距離内にある斜線のサ
ブブロックの画素がOBMC処理の適用対象となる。サブブロック単位の予測では、サブブロック毎に動きパラメータは異なるため、図33(b)に示すように、各サブブロックの画素がOBMC処理の適用対象となる。
ブブロックの画素がOBMC処理の適用対象となる。サブブロック単位の予測では、サブブロック毎に動きパラメータは異なるため、図33(b)に示すように、各サブブロックの画素がOBMC処理の適用対象となる。
なお、対象ブロックと隣接ブロックの形状は必ずしも同じではないので、OBMC処理はブロックを分割したサブブロック単位で実施するのが望ましい。サブブロックのサイズは4x4、8x8〜ブロックサイズまで様々な値をとることができる。
(OBMC処理の流れ)
図34は、本実施形態に係るOBMC予測部30374が実施するパラメータ導出処理を示すフロ
ーチャートである。
図34は、本実施形態に係るOBMC予測部30374が実施するパラメータ導出処理を示すフロ
ーチャートである。
OBMC予測部30374は、対象サブブロックに対し、上側、左側、下側、右側の各方向に隣
接する隣接ブロックの有無および利用可能性を判定する。図34では、上、左、下、右の各方向に対し全てのサブブロックの処理を実施したのち、次の方向の処理に移行する方法をとっているが、あるサブブロックに対し全ての方向を処理した後、次のサブブロックの処理に移行する方法をとることもできる。図34において、対象サブブロックに対する隣接ブロックの方向は、i=1は上側、i=2は左側、i=3は下側、i=4は右側とする。
接する隣接ブロックの有無および利用可能性を判定する。図34では、上、左、下、右の各方向に対し全てのサブブロックの処理を実施したのち、次の方向の処理に移行する方法をとっているが、あるサブブロックに対し全ての方向を処理した後、次のサブブロックの処理に移行する方法をとることもできる。図34において、対象サブブロックに対する隣接ブロックの方向は、i=1は上側、i=2は左側、i=3は下側、i=4は右側とする。
まず、OBMC予測部30374は、OBMC処理の必要性と隣接ブロックの有無をチェックする(S3401)。予測単位がブロック単位で、対象サブブロックがiの示す方向のブロック境界に
接していない場合は、OBMC処理に必要な隣接ブロックがないので(S3401でN)、S3404に
進み、フラグobmc_flag[i]を0にする。そうでなければ(予測単位がブロック単位で対象
サブブロックがブロック境界に接する場合、あるいは、処理単位がサブブロックの場合)、OBMC処理に必要な隣接ブロックがあるので(S3401でY)、S3402に進む。
接していない場合は、OBMC処理に必要な隣接ブロックがないので(S3401でN)、S3404に
進み、フラグobmc_flag[i]を0にする。そうでなければ(予測単位がブロック単位で対象
サブブロックがブロック境界に接する場合、あるいは、処理単位がサブブロックの場合)、OBMC処理に必要な隣接ブロックがあるので(S3401でY)、S3402に進む。
例えば図33(a)のサブブロックSCU1[3][0]は左側、下側、右側はブロック境界に接しな
いので、obmc_flag[2]=0、obmc_flag[3]=0、obmc_flag[4]=0である。また、サブブロックSCU2[0][2]は上側、下側、右側がブロック境界に接しないので、obmc_flag[1]=0、obmc_flag[3]=0、obmc_flag[4]=0である。また、白色のサブブロックはブロック境界に全く接しないサブブロックであるので、obmc_flag[1]=obmc_flag[2]=obmc_flag[3]=obmc_flag[4]=0である。
いので、obmc_flag[2]=0、obmc_flag[3]=0、obmc_flag[4]=0である。また、サブブロックSCU2[0][2]は上側、下側、右側がブロック境界に接しないので、obmc_flag[1]=0、obmc_flag[3]=0、obmc_flag[4]=0である。また、白色のサブブロックはブロック境界に全く接しないサブブロックであるので、obmc_flag[1]=obmc_flag[2]=obmc_flag[3]=obmc_flag[4]=0である。
次にOBMC予測部30374は、隣接ブロックの利用可能性として、iで示す方向の隣接ブロックがイントラ予測ブロックあるいはタイル外のブロックであるかをチェックする(S3402
)。隣接ブロックがイントラ予測ブロックあるいはタイル外のブロックの場合(S3402でY)、S3404に進み、対応する方向iのobmc_flag[i]を0にセットする。そうでなければ(隣
接ブロックがインター予測ブロック、かつ、タイル内のブロックの場合)(S3402でN)、S3403に進む。
)。隣接ブロックがイントラ予測ブロックあるいはタイル外のブロックの場合(S3402でY)、S3404に進み、対応する方向iのobmc_flag[i]を0にセットする。そうでなければ(隣
接ブロックがインター予測ブロック、かつ、タイル内のブロックの場合)(S3402でN)、S3403に進む。
例えば、図33(c)の場合、タイル内の対象ブロックCU3の対象サブブロックSCU3[0][0]に対し、左側の隣接ブロックはタイル外であるので、対象サブブロックSCU3[0][0]のobmc_flag[2]は0にセットする。また、タイル内の対象ブロックCU4の対象サブブロックSCU4[3][0]に対し、上側の隣接ブロックはイントラ予測であるので、対象サブブロックSCU4[3][0]のobmc_flag[1]は0にセットする。
次にOBMC予測部30374は、隣接ブロックの利用可能性として、iが示す方向の隣接ブロックと対象サブブロックの動きパラメータが等しいどうかをチェックする(S3403)。動き
パラメータが等しい場合(S3403でY)、S3404に進み、obmc_flag[i]=0にセットする。そ
うでなければ(動きパラメータが異なる場合)(S3403でN)、S3405に進む。
パラメータが等しい場合(S3403でY)、S3404に進み、obmc_flag[i]=0にセットする。そ
うでなければ(動きパラメータが異なる場合)(S3403でN)、S3405に進む。
サブブロックとその隣接ブロックの動きパラメータが等しいか否かは下式で判定する。
((mvLX[0]!=mvLXRN[0]) || (mvLX[1]!=mvLXRN[1]) || (refIdxLX!=refIdxLXRN))?
(式OBMC-1)
ここで、タイル内の対象サブブロックの動きベクトル(mvLX[0],mvLX[1])、参照ピクチャ
インデックスrefIdxLX、iが示す方向の隣接ブロックの動きベクトル(mvLXRN[0],mvLXRN[1])、参照ピクチャインデックスrefIdxLXRNである。
(式OBMC-1)
ここで、タイル内の対象サブブロックの動きベクトル(mvLX[0],mvLX[1])、参照ピクチャ
インデックスrefIdxLX、iが示す方向の隣接ブロックの動きベクトル(mvLXRN[0],mvLXRN[1])、参照ピクチャインデックスrefIdxLXRNである。
例えば、図33(c)において、対象サブブロックSCU4[0][0]の動きベクトル(mvLX[0],mvLX[1])、参照ピクチャインデックスrefIdxLX、左側隣接ブロックの動きベクトル(mvLXR2[0],mvLXR2[1])、参照ピクチャインデックスrefIdxLXR2とすると、動きベクトルと参照ピク
チャインデックスが同じ場合、例えば、((mvLX[0]==mvLXRN[0]) && (mvLX[1]==mvLXRN[1]) && (refIdxLX==refIdxLXRN))が真である場合は、対象サブブロックのobmc_flag[2]=0である。
チャインデックスが同じ場合、例えば、((mvLX[0]==mvLXRN[0]) && (mvLX[1]==mvLXRN[1]) && (refIdxLX==refIdxLXRN))が真である場合は、対象サブブロックのobmc_flag[2]=0である。
なお、上式では動きベクトルと参照ピクチャインデックスを使用したが、下式のように動きベクトルとPOCを用いて判定してもよい。
((mvLX[0]!=mvLXRN[0]) || (mvLX[1]!=mvLXRN[1]) || (refPOC!=refPOCRN))?
(式OBMC-2)
ここでrefPOCは対象サブブロックのPOCであり、refPOCRNは隣接ブロックのPOCである。
(式OBMC-2)
ここでrefPOCは対象サブブロックのPOCであり、refPOCRNは隣接ブロックのPOCである。
次にOBMC予測部30374は、隣接ブロックの動きベクトルが指す領域が全てタイル内(参
照ピクチャにおいて、コロケートブロックをmvN(N=0..4)だけシフトした位置のブロック
の一部、あるいは全部がコロケートタイル内に無い)か否かを判定する(S3405)。動きベ
クトルが指す領域が全てタイル内の場合(S3405でY)、S3407に進む。そうでない場合(
動きベクトルが指す領域が一部でもタイル外にある場合)(S3405でN)、S3406に進む。
照ピクチャにおいて、コロケートブロックをmvN(N=0..4)だけシフトした位置のブロック
の一部、あるいは全部がコロケートタイル内に無い)か否かを判定する(S3405)。動きベ
クトルが指す領域が全てタイル内の場合(S3405でY)、S3407に進む。そうでない場合(
動きベクトルが指す領域が一部でもタイル外にある場合)(S3405でN)、S3406に進む。
隣接ブロックの動きベクトルがタイル外を指す場合、以下の処理3のいずれかを施す(S3406)。
・[処理3A] タイル境界パディング
動き補償部3091でタイル境界パディングを実施する。タイル境界パディング(タイル外パディング)は、既に説明したように参照位置を、タイルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準とした対象サブブロックの左上座標を(xs,ys)、対象サブブロックの幅と高さをBW、BH、対象サブブロック
が位置する対象タイルの左上座標を(xTs,yTs)、対象タイルの幅と高さをwT、hT、隣接ブ
ロックの動きベクトル(MvLXRN[0], MvLXRN[1])とすると、サブブロックの参照画素(xRef,
yRef)を下式で導出する。
・[処理3A] タイル境界パディング
動き補償部3091でタイル境界パディングを実施する。タイル境界パディング(タイル外パディング)は、既に説明したように参照位置を、タイルの上下左右の境界画素の位置でクリッピングすることで実現する。例えば、ピクチャの左上座標を基準とした対象サブブロックの左上座標を(xs,ys)、対象サブブロックの幅と高さをBW、BH、対象サブブロック
が位置する対象タイルの左上座標を(xTs,yTs)、対象タイルの幅と高さをwT、hT、隣接ブ
ロックの動きベクトル(MvLXRN[0], MvLXRN[1])とすると、サブブロックの参照画素(xRef,
yRef)を下式で導出する。
xRef + i = Clip3(xTs, xTs+wT-BW, xs+ (MvLXRN[0]>>log2(M))) (式OBMC-3)
yRef + j = Clip3(yTs, yTs+hT-BH, ys+ (MvLXRN[1]>>log2(M)))
・[処理3B] タイル境界動きベクトル制限
隣接ブロックの動きベクトルMvLXRNがタイル外を参照しないようにクリッピングする。・[処理3C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
コロケートタイル内を指す動きベクトルを持つ隣接サブブロックから動きベクトルをコピーする。
・[処理3D] タイル境界OBMCオフ
方向iの隣接ブロックの動きベクトル(MvLXRN[0], MvLXRN[1])で参照画像を参照すると
、コロケートタイル外を参照すると判定される場合には、obmc_flag[i]=0にセットする(方向iではOBMC処理を実施しない)。この場合はS3407を飛ばして先に進む。
yRef + j = Clip3(yTs, yTs+hT-BH, ys+ (MvLXRN[1]>>log2(M)))
・[処理3B] タイル境界動きベクトル制限
隣接ブロックの動きベクトルMvLXRNがタイル外を参照しないようにクリッピングする。・[処理3C] タイル境界動きベクトル置換(代替動きベクトル置き換え)
コロケートタイル内を指す動きベクトルを持つ隣接サブブロックから動きベクトルをコピーする。
・[処理3D] タイル境界OBMCオフ
方向iの隣接ブロックの動きベクトル(MvLXRN[0], MvLXRN[1])で参照画像を参照すると
、コロケートタイル外を参照すると判定される場合には、obmc_flag[i]=0にセットする(方向iではOBMC処理を実施しない)。この場合はS3407を飛ばして先に進む。
なお、処理3はタイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
OBMC予測部30374は、隣接ブロックの動きベクトルがタイル内を示す場合、あるいは処
理3を実施した場合、obmc_flag[i]=1にセットする(S3407)。
理3を実施した場合、obmc_flag[i]=1にセットする(S3407)。
次にOBMC予測部30374は、サブブロックの全ての方向(i=1〜4)に対し、上記S3401〜S3407の処理を実施した後、終了する。
OBMC予測部30374は、上記で導出した予測パラメータ(obmc_flagと各サブブロックの隣接ブロックの動きパラメータ)をインター予測画像生成部309に出力し、インター予測画
像生成部309はobmc_flagを参照してOBMC処理の要否を判定しながら、対象ブロックに対し、OBMC処理を施す(詳細は(動き補償)で説明する)。
像生成部309はobmc_flagを参照してOBMC処理の要否を判定しながら、対象ブロックに対し、OBMC処理を施す(詳細は(動き補償)で説明する)。
なお、タイル復号部2012では、タイル符号化部2002から通知されたobmc_flagがあればobmc_flag[i]にセットし、obmc_flag[i]=1の場合にのみ、上記処理を実施してもよい。
(BTM)
BTM予測部3038は、マージ予測パラメータ導出部3036により導出された双方向の動きベ
クトルを用いて生成された予測画像をテンプレートととし、バイラテラルテンプレートマッチング(BTM)処理を実行することにより、精度の高い動きベクトルを導出する。
BTM予測部3038は、マージ予測パラメータ導出部3036により導出された双方向の動きベ
クトルを用いて生成された予測画像をテンプレートととし、バイラテラルテンプレートマッチング(BTM)処理を実行することにより、精度の高い動きベクトルを導出する。
(動きベクトル導出処理の例)
マージモードにおいて導出した2つの動きベクトルが対象ブロックに対し逆向きであれば、BTM予測部3038はバイラテラルテンプレートマッチング(BTM)処理を行う。
マージモードにおいて導出した2つの動きベクトルが対象ブロックに対し逆向きであれば、BTM予測部3038はバイラテラルテンプレートマッチング(BTM)処理を行う。
図35を参照してバイラテラルテンプレートマッチング(BTM)処理を説明する。図35(a)はBTM予測における参照ピクチャとテンプレートとの関係を示す図であり、(b)は処理の流れを示す図であり、(c)はBTM予測におけるテンプレートを説明する図である。
図35(a)および(c)に示すように、BTM予測部3038は、まず、マージ予測パラメータ導出
部3036で導出された複数の動きベクトル(例えばmvL0およびmvL1)から対象ブロックCur_blockの予測ブロックを生成し、これをテンプレートとする。具体的には、mvL0により生
成された動き補償画像predL0と、mvL1により生成された動き補償画像predL1から予測ブロックCur_Tempを生成する。
部3036で導出された複数の動きベクトル(例えばmvL0およびmvL1)から対象ブロックCur_blockの予測ブロックを生成し、これをテンプレートとする。具体的には、mvL0により生
成された動き補償画像predL0と、mvL1により生成された動き補償画像predL1から予測ブロックCur_Tempを生成する。
Cur_Temp[x][y] = Clip3( 0, (1<<bitDepth)-1, (predL0[x][y]+predL1[x][y]+1)>>1
) (式BTM-1)
次に、BTM予測部3038は、mvL0、mvL1を各々中心(初期ベクトル)とする±D画素の範囲で、動きベクトル候補を設定し、各動きベクトル候補が生成する動き補償画像PredL0、PredL1とテンプレートとのマッチングコストを導出する。そして、マッチングコストが最小となるベクトルmvL0'、mvL1'を対象ブロックの更新された動きベクトルとする。ただし、サーチ範囲は参照ピクチャRef0およびRef1上のコロケートタイル内に限定する。
) (式BTM-1)
次に、BTM予測部3038は、mvL0、mvL1を各々中心(初期ベクトル)とする±D画素の範囲で、動きベクトル候補を設定し、各動きベクトル候補が生成する動き補償画像PredL0、PredL1とテンプレートとのマッチングコストを導出する。そして、マッチングコストが最小となるベクトルmvL0'、mvL1'を対象ブロックの更新された動きベクトルとする。ただし、サーチ範囲は参照ピクチャRef0およびRef1上のコロケートタイル内に限定する。
次に、図35(b)を参照してBTM予測の流れを説明する。まず、BTM予測部3038はテンプレ
ートを取得する(S3501)。テンプレートは上述した通り、マージ予測パラメータ導出部3036で導出された動きベクトル(例えばmvL0およびmvL1)から生成する。次に、BTM予測部3038はコロケートタイル内のローカルサーチを行う。ローカルサーチはS3502〜S3505のように、複数の異なる精度のサーチを繰り返すことによって行ってもよい。例えば、ローカルサーチは、M画素精度サーチL0処理(S3502)、N画素精度サーチL0処理(S3503)、M画素精度
サーチL1処理(S3504)、N画素精度サーチL1処理(S3505)の順に行う。ここでM>Nであり、例えば、M=1画素精度、N=1/2画素精度とすることができる。
ートを取得する(S3501)。テンプレートは上述した通り、マージ予測パラメータ導出部3036で導出された動きベクトル(例えばmvL0およびmvL1)から生成する。次に、BTM予測部3038はコロケートタイル内のローカルサーチを行う。ローカルサーチはS3502〜S3505のように、複数の異なる精度のサーチを繰り返すことによって行ってもよい。例えば、ローカルサーチは、M画素精度サーチL0処理(S3502)、N画素精度サーチL0処理(S3503)、M画素精度
サーチL1処理(S3504)、N画素精度サーチL1処理(S3505)の順に行う。ここでM>Nであり、例えば、M=1画素精度、N=1/2画素精度とすることができる。
M画素精度LXサーチ処理(X=0..1)は、タイル内で、mvLXが示す座標を中心としたサーチ
を実施する。また、N画素精度サーチLX処理は、タイル内で、M画素精度サーチLX処理でマッチングコストが最小となった座標を中心としたサーチを実施する。
を実施する。また、N画素精度サーチLX処理は、タイル内で、M画素精度サーチLX処理でマッチングコストが最小となった座標を中心としたサーチを実施する。
なお、タイル境界をあらかじめパディングして拡張してもよい。この場合、動き補償部3091でも同様にパディング処理をする。
このようにマージモードで導出した動きベクトルを修正することで、予測画像を改善することができる。そして、修正された動きベクトルをタイル内に限定することで、バイラテラルテンプレートマッチング処理の使用頻度の低下を抑制しつつ、タイルを独立にインター予測できるので符号化効率を高めることができる。
図8は、本実施形態に係るAMVP予測パラメータ導出部3032の構成を示す概略図である。AMVP予測パラメータ導出部3032は、ベクトル候補導出部3033とベクトル候補選択部3034、およびベクトル候補格納部3036を備える。ベクトル候補導出部3033は、参照ピクチャインデックスrefIdxに基づいて予測パラメータメモリ307が記憶する既に処理済みのPUの動きベクトルmvLXから予測ベクトル候補を導出し、ベクトル候補格納部3036の予測ベクトル候補リストmvpListLX[]に格納する。
ベクトル候補選択部3034は、予測ベクトル候補リストmvpListLX[]の予測ベクトル
候補のうち予測ベクトルインデックスmvp_lX_idxが示す動きベクトルmvpListLX[mvp_lX_idx]を予測ベクトルmvpLXとして選択する。ベクトル候補選択部3034は、選択した予測ベクトルmvpLXを加算部3035に出力する。
候補のうち予測ベクトルインデックスmvp_lX_idxが示す動きベクトルmvpListLX[mvp_lX_idx]を予測ベクトルmvpLXとして選択する。ベクトル候補選択部3034は、選択した予測ベクトルmvpLXを加算部3035に出力する。
なお、予測ベクトル候補は、復号処理が完了したPUであって、復号対象PUから予め定めた範囲のPU(例えば、隣接PU)の動きベクトルをスケーリングすることで導出する。なお、隣接PUは、復号対象PUに空間的に隣接するPU、例えば、左PU、上PUの他、復号対象PUに時間的に隣接する領域、例えば、復号対象PUと同じ位置を含み、表示時刻が異なるPUの予測パラメータから得られた領域を含む。なお、時間マージ候補の導出で述べたように、コロケートブロックの右下ブロック位置を、図21(f)に示すタイル内の右下位置に変更する
ことで、independent_tile_flag=1の場合に、符号化効率を低下させることなくタイルシ
ーケンスを独立にAMVP予測を用いて復号することができる。
ことで、independent_tile_flag=1の場合に、符号化効率を低下させることなくタイルシ
ーケンスを独立にAMVP予測を用いて復号することができる。
加算部3035は、AMVP予測パラメータ導出部3032から入力された予測ベクトルmvpLXとインター予測パラメータ復号制御部3031から入力された差分ベクトルmvdLXを加算して動きベクトルmvLXを算出する。加算部3035は、算出した動きベクトルmvLXを予測画像生成部308および予測パラメータメモリ307に出力する。
なお、マージ予測パラメータ導出部3036において導出された動きベクトルをそのままインター予測画像生成部309に出力せず、BTM予測部3038を介して出力してもよい。
(LIC予測部3039)
LIC(Local Illumination Compensation)予測は、マージ予測、サブブロック予測、AMVP予測等で導出した動きベクトルが指す参照ピクチャ上の領域の隣接領域Ref_Temp(図36(a))、および、対象ブロックの隣接領域Cur_Temp(図36(b))の画素値から対象ブロックCur_blockの画素値を線形予測する処理である。下式のように、参照ピクチャ上の領域の
隣接領域Ref_Tempから求めた対象ブロックの隣接領域の予測値Cur_Temp'と、対象ブロッ
クの隣接領域Cur_Tempとの二乗誤差SSDが最小になるスケール係数aとオフセットbの組み
合わせを算出する。
LIC(Local Illumination Compensation)予測は、マージ予測、サブブロック予測、AMVP予測等で導出した動きベクトルが指す参照ピクチャ上の領域の隣接領域Ref_Temp(図36(a))、および、対象ブロックの隣接領域Cur_Temp(図36(b))の画素値から対象ブロックCur_blockの画素値を線形予測する処理である。下式のように、参照ピクチャ上の領域の
隣接領域Ref_Tempから求めた対象ブロックの隣接領域の予測値Cur_Temp'と、対象ブロッ
クの隣接領域Cur_Tempとの二乗誤差SSDが最小になるスケール係数aとオフセットbの組み
合わせを算出する。
Cur_Temp'[][] = a*Ref_Temp[][]+b (式LIC-1)
SSD = ΣΣ(Cur_Temp'[x][y]-Cur_Temp[x][y])^2
x y
なお、図36ではa、bの算出に用いる画素値はサブサンプリングされているが、サブサンプリングせず、領域内の全画素値を用いてもよい。
SSD = ΣΣ(Cur_Temp'[x][y]-Cur_Temp[x][y])^2
x y
なお、図36ではa、bの算出に用いる画素値はサブサンプリングされているが、サブサンプリングせず、領域内の全画素値を用いてもよい。
また、対象ブロックの隣接領域Cur_Temp、あるいは、参照ブロックの隣接領域Ref_Tempのいずれかの領域の一部がタイルあるいはコロケートタイル外に位置する場合、タイルあるいはコロケートタイル内の画素のみを使用してもよい。例えば、参照ブロックの上側隣接領域がコロケートタイル外にある場合、Cur_TempおよびRef_Tempは対象ブロックおよび参照ブロックの左側隣接領域の画素のみを使用する。例えば、参照ブロックの左側隣接領域がコロケートタイル外にある場合、Cur_TempおよびRef_Tempは対象ブロックおよび参照ブロックの上側隣接領域の画素のみを使用してもよい。
あるいは、対象ブロックの隣接領域Cur_Temp、あるいは、参照ブロックの隣接領域Ref_Tempのいずれかの領域の一部がタイルあるいはコロケートタイル外に位置する場合、LIC
予測をオフとし、動き補償部3091ではLIC予測を実施しなくてもよい。
予測をオフとし、動き補償部3091ではLIC予測を実施しなくてもよい。
あるいは、対象ブロックの隣接領域Cur_Temp、あるいは、参照ブロックの隣接領域Ref_Tempのいずれかの領域の一部がタイルあるいはコロケートタイル外に位置する場合、タイルあるいはコロケートタイルに含まれる領域のサイズが閾値より大きければ、タイルあるいはコロケートタイル内の画素を用いて領域をセットし、そうでなければLIC予測をオフ
としてもよい。例えば、参照ブロックの上側隣接領域がコロケートタイル外にあり、閾値TH=16の場合、対象ブロックの高さHが16より大きければCur_TempおよびRef_Tempは対象ブロックおよび参照ブロックの左側隣接領域の画素を使用し、対象ブロックの高さHが16以
下であればLIC予測をオフにする。
としてもよい。例えば、参照ブロックの上側隣接領域がコロケートタイル外にあり、閾値TH=16の場合、対象ブロックの高さHが16より大きければCur_TempおよびRef_Tempは対象ブロックおよび参照ブロックの左側隣接領域の画素を使用し、対象ブロックの高さHが16以
下であればLIC予測をオフにする。
なお、使用する画素はサブサンプリングされてもよいし、サブサンプリングせず、領域内の全画素値を用いてもよい。
これらの処理は、タイル符号化部2002とタイル復号部2012で同じ処理を選択する必要がある。
算出したaおよびbは、動きベクトル等とともに動き補償部3091に出力される。
(インター予測画像生成部309)
図11は、本実施形態に係る予測画像生成部308に含まれるインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き補償部(予測画像生成装置)3091、重み予測部3094を含んで構成される。
図11は、本実施形態に係る予測画像生成部308に含まれるインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き補償部(予測画像生成装置)3091、重み予測部3094を含んで構成される。
(動き補償)
動き補償部3091は、インター予測パラメータ復号部303から入力された、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX、オンオフフラグ等)に基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャRefXにおいて、復号対象PUの位置を起点として、動きベクトルmvLXだけずれた位置にあるブロックを読み出すことによって補間画像(動き補償画像)を生成する。ここで、動きベクトルmvLXの精度が整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、動き補償画像を生成する。
動き補償部3091は、インター予測パラメータ復号部303から入力された、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX、オンオフフラグ等)に基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャRefXにおいて、復号対象PUの位置を起点として、動きベクトルmvLXだけずれた位置にあるブロックを読み出すことによって補間画像(動き補償画像)を生成する。ここで、動きベクトルmvLXの精度が整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、動き補償画像を生成する。
動き補償部3091に入力される動きベクトルmvLXまたは動きベクトルmvLXNが1/M画素精度(Mは2以上の自然数)である場合、補間フィルタにより、整数画素位置の参照ピクチャの画素値から、補間画像を生成する。つまり、位相nFracに対応するNTAPタップの補間
フィルタ係数mcFilter[nFrac][k](k=0..NTAP-1)と、参照ピクチャの画素の積和演算とか
ら、上述した補間画像Pred[][]を生成する。
フィルタ係数mcFilter[nFrac][k](k=0..NTAP-1)と、参照ピクチャの画素の積和演算とか
ら、上述した補間画像Pred[][]を生成する。
動き補償部3091は、まず、予測ブロック内座標(x, y)に対応する整数位置(xInt, yInt)および位相(xFrac, yFrac)を以下の式で導出する。
xInt = xb + (mvLX[0] >> (log2(M))) + x (式INTER-1)
xFrac = mvLX[0] & (M-1)
yInt = yb + (mvLX[1] >> (log2(M))) + y
yFrac = mvLX[1] & (M-1)
ここで、(xb, yb)は、ブロックの左上座標、x=0..nW-1、y=0..nH-1、Mは、動きベクトルmvLXの精度(1/M画素精度)を示す。
xFrac = mvLX[0] & (M-1)
yInt = yb + (mvLX[1] >> (log2(M))) + y
yFrac = mvLX[1] & (M-1)
ここで、(xb, yb)は、ブロックの左上座標、x=0..nW-1、y=0..nH-1、Mは、動きベクトルmvLXの精度(1/M画素精度)を示す。
動き補償部3091は、参照ピクチャrefImgに補間フィルタを用いて水平補間処理を行うことで、一時的画像temp[][]を導出する。以下のΣはk = 0..NTAP-1のkに関する和、shift1は値のレンジを調整する正規化パラメータ、offset1=1<<(shift1-1)である。
temp[x][y] = (ΣmcFilter [xFrac][k]*refImg[xInt+k-NTAP/2+1][yInt]+offset1) >> shift1 (式INTER-2)
なお、参照ピクチャ上の画素refImg[xInt+k-NTAP/2+1][yInt]の参照時には後述するパ
ディングを行う。
なお、参照ピクチャ上の画素refImg[xInt+k-NTAP/2+1][yInt]の参照時には後述するパ
ディングを行う。
続いて、動き補償部3091は、一時的画像temp[][]を垂直補間処理により、補間画像Pred[][]を導出する。以下のΣはk = 0..NTAP-1のkに関する和、shift2は値のレンジを調整する正規化パラメータ、offset2=1<<(shift2-1)である。
Pred[x][y] = (ΣmcFilter[yFrac][k]*temp[x][y+k-NTAP/2+1]+offset2) >> shift2
(式INTER-3)
なお、双予測の場合は、上記のPred[][]をリストL0、L1毎に導出し(補間画像PredL0[][]とPredL1[][]と呼ぶ)、補間画像PredL0[][]と補間画像PredL1[][]から補間画像Pred[][]を生成する。
(式INTER-3)
なお、双予測の場合は、上記のPred[][]をリストL0、L1毎に導出し(補間画像PredL0[][]とPredL1[][]と呼ぶ)、補間画像PredL0[][]と補間画像PredL1[][]から補間画像Pred[][]を生成する。
なお、入力される動きベクトルmvLXまたは動きベクトルmvLXNが、対象ブロックの位置
するタイルのコロケートタイルの外を一部でも指す場合は、あらかじめタイル境界をパディングすることで、タイルを独立にインター予測することができる。
するタイルのコロケートタイルの外を一部でも指す場合は、あらかじめタイル境界をパディングすることで、タイルを独立にインター予測することができる。
(パディング)
上述の(式INTER-2)では、参照ピクチャ上の画素refImg[xInt+k-NTAP/2+1][yInt]を参照するが、実際には存在しない画面外の画素値を参照する場合には、以下の画面境界パディング(画面外パディング)を行う。画面境界パディングは、参照画素の位置(xIntL+i, yIntL+j)の画素値として、以下の位置xRef + i, yRef+ jの画素値refImg[xRef+i][yRef+j]を用いることで実現する。
上述の(式INTER-2)では、参照ピクチャ上の画素refImg[xInt+k-NTAP/2+1][yInt]を参照するが、実際には存在しない画面外の画素値を参照する場合には、以下の画面境界パディング(画面外パディング)を行う。画面境界パディングは、参照画素の位置(xIntL+i, yIntL+j)の画素値として、以下の位置xRef + i, yRef+ jの画素値refImg[xRef+i][yRef+j]を用いることで実現する。
xRef + i = Clip3( 0, pic_width_in_luma_samples ? 1, xIntL + i ) (式PAD-3)
yRef + j = Clip3( 0, pic_height_in_luma_samples ? 1, yIntL + j )
なお、画面境界パディング(式PAD-3)に変えて、タイル境界パディング(式PAD-1)を行っても良い。
yRef + j = Clip3( 0, pic_height_in_luma_samples ? 1, yIntL + j )
なお、画面境界パディング(式PAD-3)に変えて、タイル境界パディング(式PAD-1)を行っても良い。
(OBMC補間画像生成)
OBMCでは、対象ブロックのインター予測パラメータに基づいて導出される対象サブブロックの補間画像、および、隣接ブロックのインター予測パラメータに基づいて導出される補間画像という、2種類の補間画像を生成し、これらの重み付加算処理により最終的に予測に用いる補間画像を生成する。ここで、対象ブロックのインター予測パラメータに基づいて導出される対象サブブロックの補間画像を補間画像PredC(第1のOBMC補間画像)、
隣接ブロックのインター予測パラメータに基づいて導出される補間画像を補間画像PredRN(第2のOBMC補間画像)と呼ぶ。なお、Nは対象サブブロックの上側(A)、左側(L)、下側(B)、右側(R)のいずれかを示す。OBMC処理を行わない(OBMCオフ)場合には、補間画像PredCがそのまま、対象サブブロックの動き補償画像PredLXとなる。OBMC処理を行う(OBMCオン)場合には、補間画像PredCと補間画像PredRNから対象サブブロックの動き補償画像PredLXが生成される。
OBMCでは、対象ブロックのインター予測パラメータに基づいて導出される対象サブブロックの補間画像、および、隣接ブロックのインター予測パラメータに基づいて導出される補間画像という、2種類の補間画像を生成し、これらの重み付加算処理により最終的に予測に用いる補間画像を生成する。ここで、対象ブロックのインター予測パラメータに基づいて導出される対象サブブロックの補間画像を補間画像PredC(第1のOBMC補間画像)、
隣接ブロックのインター予測パラメータに基づいて導出される補間画像を補間画像PredRN(第2のOBMC補間画像)と呼ぶ。なお、Nは対象サブブロックの上側(A)、左側(L)、下側(B)、右側(R)のいずれかを示す。OBMC処理を行わない(OBMCオフ)場合には、補間画像PredCがそのまま、対象サブブロックの動き補償画像PredLXとなる。OBMC処理を行う(OBMCオン)場合には、補間画像PredCと補間画像PredRNから対象サブブロックの動き補償画像PredLXが生成される。
動き補償部3091は、インター予測パラメータ復号部303から入力された対象サブブロックのインター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX、OBMCフラグobmc_flag)に基づいて、補間画像
を生成する。
を生成する。
図34(b)は、動き補償部3091のOBMC予測での補間画像生成の動作を説明するフロー
チャートである。
チャートである。
まず、動き補償部3091は、予測パラメータに基づいて、補間画像PredC[x][y](x=0..BW-1, y=0..BH-1)を生成する(S3411)。
次にobmc_flag[i]=1か否かを判定する(S3413)。obmc_flag[i]=0の場合(S3413でN)、
次の方向(i=i+1)に進む。obmc_flag[i]=1の場合(S3413でY)、補間画像PredRN[x][y]を
生成する(S3414)。つまり、obmc_flag[i]=1となるiが示す方向のサブブロックに対してのみ、インター予測パラメータ復号部303から入力された隣接ブロックの予測リスト利用フラグpredFlagLX[xPbN][yPbN]、参照ピクチャインデックスrefIdxLX[xPbN][yPbN]、動きベクトルmvLX[xPbN][yPbN]に基づいて、補間画像PredRN[x][y](x=0..BW-1, y=0..BH-1)を生成し(S3414)、以下で説明する補間画像PredC[x][y]と補間画像PredRN[x][y]の加重平均処理を実施し(S3415)、補間画像PredLXを生成する(S3416)。なお、(xPbN、yPbN)は隣接ブロックの左上座標である。
次の方向(i=i+1)に進む。obmc_flag[i]=1の場合(S3413でY)、補間画像PredRN[x][y]を
生成する(S3414)。つまり、obmc_flag[i]=1となるiが示す方向のサブブロックに対してのみ、インター予測パラメータ復号部303から入力された隣接ブロックの予測リスト利用フラグpredFlagLX[xPbN][yPbN]、参照ピクチャインデックスrefIdxLX[xPbN][yPbN]、動きベクトルmvLX[xPbN][yPbN]に基づいて、補間画像PredRN[x][y](x=0..BW-1, y=0..BH-1)を生成し(S3414)、以下で説明する補間画像PredC[x][y]と補間画像PredRN[x][y]の加重平均処理を実施し(S3415)、補間画像PredLXを生成する(S3416)。なお、(xPbN、yPbN)は隣接ブロックの左上座標である。
次に加重平均処理を実施する(S3415)。
OBMC処理を行う構成においては、動き補償部3091は補間画像PredC[x][y]と補間画
像PredRN[x][y]の加重平均処理を行うことにより、補間画像PredC[x][y]を更新する。詳
細に説明すると、動き補償部3091は、インター予測パラメータ復号部303から入力
されたOBMCフラグobmc_flag[i]=1(OBMC処理が有効)の場合、iが示す方向のサブブロック境界のS個の画素に対し以下の加重平均処理を行う。
像PredRN[x][y]の加重平均処理を行うことにより、補間画像PredC[x][y]を更新する。詳
細に説明すると、動き補償部3091は、インター予測パラメータ復号部303から入力
されたOBMCフラグobmc_flag[i]=1(OBMC処理が有効)の場合、iが示す方向のサブブロック境界のS個の画素に対し以下の加重平均処理を行う。
PredC[x][y]=((w1*PredC[x][y]+w2*PredRN[x][y])+o)>>shift (式INTER-4)
ここで、加重平均処理における重みw1、w2について説明する。加重平均処理における重みw1、w2は、サブブロック境界からの対象画素の距離(画素数)に応じて決定する。w1+w2=(1<<shift)、o=1<<(shift-1)の関係がある。
ここで、加重平均処理における重みw1、w2について説明する。加重平均処理における重みw1、w2は、サブブロック境界からの対象画素の距離(画素数)に応じて決定する。w1+w2=(1<<shift)、o=1<<(shift-1)の関係がある。
OBMC処理では、複数の隣接ブロックの補間画像を用いて予測画像が生成される。ここで、複数の隣接ブロックの動きパラメータから、PredC[x][y]を更新する方法を説明する。
はじめに、動き補償部3091は、obmc_flag[1]=1の場合、対象サブブロックの補間
画像PredC[x][y]に上側隣接ブロックの動きパラメータを用いて作成した補間画像PredRA[x][y]を適用してPredC[x][y]を更新する。
画像PredC[x][y]に上側隣接ブロックの動きパラメータを用いて作成した補間画像PredRA[x][y]を適用してPredC[x][y]を更新する。
PredC[x][y]=((w1*PredC[x][y]+w2*PredRA[x][y])+o)>>shift (式INTER-5)
次に、動き補償部3091は、obmc_flag[i]=1である方向iに対し、対象サブブロックの左側(i=2)、下側(i=3)および右側(i=4)の隣接ブロックの動きパラメータを用いて作成
した補間画像PredRL[x][y]、PredRL[x][y]、PredRL[x][y]を用いてPredC[x][y]を順次更
新する。すなわち、以下の式により更新する。
次に、動き補償部3091は、obmc_flag[i]=1である方向iに対し、対象サブブロックの左側(i=2)、下側(i=3)および右側(i=4)の隣接ブロックの動きパラメータを用いて作成
した補間画像PredRL[x][y]、PredRL[x][y]、PredRL[x][y]を用いてPredC[x][y]を順次更
新する。すなわち、以下の式により更新する。
PredC[x][y]=((w1*PredC[x][y]+w2*PredRL[x][y])+o)>>shift(式INTER-6)
PredC[x][y]=((w1*PredC[x][y]+w2*PredRB[x][y])+o)>>shift
PredC[x][y]=((w1*PredC[x][y]+w2*PredRR[x][y])+o)>>shift
obmc_flag[0]=0の場合、あるいは、i=1〜4に対し、上記の処理を実施した後、PredC[x][y]を予測画像PredLX[x][y]にセットする(S3416)。
PredC[x][y]=((w1*PredC[x][y]+w2*PredRB[x][y])+o)>>shift
PredC[x][y]=((w1*PredC[x][y]+w2*PredRR[x][y])+o)>>shift
obmc_flag[0]=0の場合、あるいは、i=1〜4に対し、上記の処理を実施した後、PredC[x][y]を予測画像PredLX[x][y]にセットする(S3416)。
PredLX[x][y] = PredC[x][y] (式INTER-7)
以上のように、動き補償部3091は対象サブブロックの隣接ブロックの動きパラメータを考慮して予測画像を生成することができるので、OBMC処理では予測精度の高い予測画像を生成することができる。
以上のように、動き補償部3091は対象サブブロックの隣接ブロックの動きパラメータを考慮して予測画像を生成することができるので、OBMC処理では予測精度の高い予測画像を生成することができる。
また、OBMC処理により更新されるサブブロック境界の画素数Sは任意で良い(S=2〜ブ
ロックサイズ)。また、OBMC処理の対象となるサブブロックを含むブロックの分割様式も、2NxN、Nx2N、NxN等の任意の分割様式で良い。
ロックサイズ)。また、OBMC処理の対象となるサブブロックを含むブロックの分割様式も、2NxN、Nx2N、NxN等の任意の分割様式で良い。
このようにOBMCの動きベクトルを導出し、予測画像を生成することで、サブブロックの動きベクトルがタイル外を指す場合でも、タイル内の画素値を用いて参照画素を置き換える。従って、OBMC処理の使用頻度の低下を抑制しつつ、タイルを独立にインター予測できるので符号化効率を高めることができる。
(LIC補間画像生成)
LICでは、LIC予測部3039で算出されたスケール係数aとオフセットbを用いて、(式INTER-3)で導出した対象ブロックの補間画像Predを修正し、予測画像PredLXを生成する。
LICでは、LIC予測部3039で算出されたスケール係数aとオフセットbを用いて、(式INTER-3)で導出した対象ブロックの補間画像Predを修正し、予測画像PredLXを生成する。
PredLX[x][y] = Pred[x][y]*a+b (式INTER-8)
(重み予測)
重み予測部3094は、入力される動き補償画像PredLXに重み係数を乗算することにより対象ブロックの予測画像を生成する。予測リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力された
動き補償画像PredLX(LXはL0もしくはL1)を画素ビット数bitDepthに合わせる以下の式の処理を行う。
(重み予測)
重み予測部3094は、入力される動き補償画像PredLXに重み係数を乗算することにより対象ブロックの予測画像を生成する。予測リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力された
動き補償画像PredLX(LXはL0もしくはL1)を画素ビット数bitDepthに合わせる以下の式の処理を行う。
Pred[x][y] = Clip3( 0, (1<<bitDepth)-1, (PredLX[x][y]+offset1)>>shift1 )
(式INTER-9)
ここで、shift1=14-bitDepth、offset1=1<<(shift1-1)である。
また、予測リスト利用フラグの両者(predFlagL0とpredFlagL1)が1の場合(双予測BiPredの場合)で、重み予測を用いない場合には、入力された動き補償画像PredL0、PredL1を平均し画素ビット数に合わせる以下の式の処理を行う。
(式INTER-9)
ここで、shift1=14-bitDepth、offset1=1<<(shift1-1)である。
また、予測リスト利用フラグの両者(predFlagL0とpredFlagL1)が1の場合(双予測BiPredの場合)で、重み予測を用いない場合には、入力された動き補償画像PredL0、PredL1を平均し画素ビット数に合わせる以下の式の処理を行う。
Pred[x][y] = Clip3( 0, (1<<bitDepth)-1, (PredL0[x][y]+PredL1[x][y]+offset2)>>shift2 ) (式INTER-10)
ここで、shift2=15-bitDepth、offset2=1<<(shift2-1)である。
ここで、shift2=15-bitDepth、offset2=1<<(shift2-1)である。
さらに、単予測の場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0とオフセットo0を符号化データから導出し、以下の式の処理を行う。
Pred[x][y] = Clip3( 0, (1<<bitDepth)-1, ((PredLX[x][y]*w0+2^(log2WD-1))>>log2WD)+o0 ) (式INTER-11)
ここで、log2WDは所定のシフト量を示す変数である。
ここで、log2WDは所定のシフト量を示す変数である。
さらに、双予測BiPredの場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0、w1、o0、o1を符号化データから導出し、以下の式の処理を行う。
Pred[x][y] = Clip3( 0, (1<<bitDepth)-1, (PredL0[x][y]*w0+PredL1[x][y]*w1+((o0+o1+1)<<log2WD))>>(log2WD+1))(式INTER-12)
<動きベクトル復号処理>
以下では、図9を参照して、本実施形態に係る動きベクトル復号処理について具体的に説明する。
<動きベクトル復号処理>
以下では、図9を参照して、本実施形態に係る動きベクトル復号処理について具体的に説明する。
上述の説明から明らかなように、本実施形態に係る動きベクトル復号処理は、インター予測に関連するシンタックス要素を復号する処理(動きシンタックス復号処理とも呼ぶ)と、動きベクトルを導出する処理(動きベクトル導出処理)とを含んでいる。
(動きシンタックス復号処理)
図9は、インター予測パラメータ復号制御部3031によって行われるインター予測シンタックス復号処理の流れを示すフローチャートである。図9の説明における以下の説明において、特に明示のない場合、各処理はインター予測パラメータ復号制御部3031によって行われる。
図9は、インター予測パラメータ復号制御部3031によって行われるインター予測シンタックス復号処理の流れを示すフローチャートである。図9の説明における以下の説明において、特に明示のない場合、各処理はインター予測パラメータ復号制御部3031によって行われる。
まず、ステップS101において、マージフラグmerge_flagが復号され、ステップS102において、merge_flag != 0(merge_flagが0でないか)が判断される。
merge_flag !=0 が真(S102でY)の場合、S103においてマージインデックスmerge_idxが復号され、マージモードにおける動きベクトル導出処理(S111)を実行する。
merge_flag!=0 が偽(S102でN)の場合、S104においてインター予測識別子inter_pred_idcを復号する。
inter_pred_idcがPRED_L1以外(PRED_L0もしくはPRED_BI)の場合、S105、S10
6、S107において、参照ピクチャインデックスref_idx_l0、差分ベクトルのパラメータmvdL0、予測ベクトルインデックスmvp_l0_idxが各々復号される。
6、S107において、参照ピクチャインデックスref_idx_l0、差分ベクトルのパラメータmvdL0、予測ベクトルインデックスmvp_l0_idxが各々復号される。
inter_pred_idcがPRED_L0以外(PRED_L1もしくはPRED_BI)の場合、S108、S10
9、S110において、参照ピクチャインデックスref_idx_l1、差分ベクトルのパラメータmvdL1、予測ベクトルインデックスmvp_l1_idxが復号される。続いて、AMVPモードにお
ける動きベクトル導出処理(S112)を実行する。
9、S110において、参照ピクチャインデックスref_idx_l1、差分ベクトルのパラメータmvdL1、予測ベクトルインデックスmvp_l1_idxが復号される。続いて、AMVPモードにお
ける動きベクトル導出処理(S112)を実行する。
このような構成によって、画像復号装置2000は、independent_tile_flagの値が1である場合にタイルシーケンス単位で独立にタイルを復号することができる。また、個々のツール毎に各タイルの復号の独立性を保証する仕組みを導入するので、符号化効率の低下を抑えつつ、動画像において、各タイルを独立に復号をすることができる。これにより、表示等に必要な領域を選択して復号できるので、処理量を大幅に削減することができる。
(画像符号化装置の構成)
図20(b)に本発明の動画像符号化装置2020を示す。動画像符号化装置2020は、ピクチャ
分割部2010、ヘッダ情報生成部2011、タイル符号化部2012a〜2012nおよび符号化ストリーム生成部2013を含んで構成される。
図20(b)に本発明の動画像符号化装置2020を示す。動画像符号化装置2020は、ピクチャ
分割部2010、ヘッダ情報生成部2011、タイル符号化部2012a〜2012nおよび符号化ストリーム生成部2013を含んで構成される。
ピクチャ分割部2010は、ピクチャを互いに重複しない複数のタイルに分割し、タイルをタイル符号化部2012a〜2012nに伝送する。ヘッダ情報生成部2011は、分割したタイルからタイル情報(TileId、タイルの分割数、サイズに関する情報)を生成し、ヘッダ情報として符号化ストリーム生成部2013に伝送する。
タイル符号化部2012a〜2012nは、各タイルを符号化する。また、タイル符号化部2012a
〜2012nは、タイルシーケンス単位でタイルを符号化する。このように、タイル符号化部2012a〜2012nによれば、タイルを並列に符号化処理することができる。
〜2012nは、タイルシーケンス単位でタイルを符号化する。このように、タイル符号化部2012a〜2012nによれば、タイルを並列に符号化処理することができる。
ここで、タイル符号化部2012a〜2012nは、1つの独立なビデオシーケンスと同様に、タイルシーケンスに対し符号化処理を行い、TileIDの異なるタイルシーケンスの予測情報は符号化処理を行う際に時間的にも空間的にも参照しない。すなわち、タイル符号化部2012a〜2012nは、あるピクチャ内のタイルを符号化する場合に、空間的にも時間的にも別のタイルを参照しない。
符号化ストリーム生成部2013は、ヘッダ情報生成部2011から伝送されたタイル情報を含むヘッダ情報と、タイル符号化部2012a〜2012nがタイルを符号化して、NALユニット単位
で符号化ストリームTeを生成する。
で符号化ストリームTeを生成する。
このように、タイル符号化部2012a〜2012nが各タイルを独立に符号化することができるため、複数のタイルを並列に符号化処理することも、復号装置側で複数のタイルを並列に復号処理することも、1つのタイルのみを独立して復号することもできる。
(タイル符号化部の構成)
次に、タイル符号化部2012a〜2012nの構成について説明する。以下に一例として、タイル符号化部2012aの構成を、図4を用いて説明する。図4は、タイル符号化部2012a〜2012nの1つである2012の構成を示すブロック図である。図4は、本実施形態に係るタイル符
号化部2012の構成を示すブロック図である。タイル符号化部2012は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラ
メータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。なお、タイル符号化部2012はループフィルタ107が含まれない構成であってもよい。
次に、タイル符号化部2012a〜2012nの構成について説明する。以下に一例として、タイル符号化部2012aの構成を、図4を用いて説明する。図4は、タイル符号化部2012a〜2012nの1つである2012の構成を示すブロック図である。図4は、本実施形態に係るタイル符
号化部2012の構成を示すブロック図である。タイル符号化部2012は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラ
メータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。なお、タイル符号化部2012はループフィルタ107が含まれない構成であってもよい。
予測画像生成部101は画像Tの各ピクチャについて、そのピクチャを分割した領域である符号化ユニットCU毎に予測ユニットPUの予測画像Pを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から復号済のブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えばインター予測の場合、動きベクトルである。予測画像生成部101は、対象PUを起点として動きベクトルが示す参照ピクチャ上の位置にあるブロックを読み出す。またイントラ予測の場合、予測パラメータとは例えばイントラ予測モードである。イントラ予測モードで使用する隣接PUの画素値を参照ピクチャメモリ109から読み出し、PUの予測画像Pを生成する。予測画像生成部101は、読み
出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作である。例えば、図6は、予測画像生成部101に含まれるインター予測画像生成部1011の構成を示す概略図である。インター予測画像生成部1011は、動き補償部10111、重み予測部10112を含んで構成される。動き補償部10111および重み予測部10112については、上述の動き補償部3091、重み予測部3094のそれぞれと同様の構成であるためここでの説明を省略する。また、タイル境界でのパディング処理についても予測画像生成部308と同じ動作であり、ここでの説明を省略する。
予測画像生成部101は、予測パラメータ符号化部から入力されたパラメータを用いて、参照ピクチャメモリから読み出した参照ブロックの画素値をもとにPUの予測画像Pを生
成する。予測画像生成部101で生成した予測画像は減算部102、加算部106に出力される。
成する。予測画像生成部101で生成した予測画像は減算部102、加算部106に出力される。
予測画像生成部101に含まれる(図示しない)イントラ予測画像生成部は既に説明したイントラ予測画像生成部310と同じ動作である。
減算部102は、予測画像生成部101から入力されたPUの予測画像Pの信号値を、画像Tの対応するPU位置の画素値から減算して、残差信号を生成する。減算部102は、生成した残差信号を変換・量子化部103に出力する。
変換・量子化部103は、減算部102から入力された予測残差信号に対し周波数変換を行い、変換係数を算出する。変換・量子化部103は、算出した変換係数を量子化して量子化変換係数を求める。変換・量子化部103は、求めた量子化変換係数をエントロピー符号化部104及び逆量子化・逆変換部105に出力する。
エントロピー符号化部104には、変換・量子化部103から量子化変換係数が入力され、予測パラメータ符号化部111から予測パラメータが入力される。入力される予測パラメータには、例えば、参照ピクチャインデックスref_idx_lX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLX、予測モードpred_mode_flag、及びマージインデック
スmerge_idx等の符号がある。
スmerge_idx等の符号がある。
エントロピー符号化部104は、入力された分割情報、予測パラメータ、量子化変換係数等をエントロピー符号化して符号化ストリームTeを生成し、生成した符号化ストリームTeを外部に出力する。
逆量子化・逆変換部105は、タイル復号部2002における、逆量子化・逆変換部311(図5)と同じであり、変換・量子化部103から入力された量子化変換係数を逆量子化して変換係数を求める。逆量子化・逆変換部105は、求めた変換係数について逆変換を行い、残差信号を算出する。逆量子化・逆変換部105は、算出した残差信号を加算部106に出力する。
加算部106は、予測画像生成部101から入力されたPUの予測画像Pの信号値と逆量子化・逆変換部105から入力された残差信号の信号値を画素毎に加算して、復号画像を生成する。加算部106は、生成した復号画像を参照ピクチャメモリ109に記憶する。
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ114、サンプル適応オフセット(SAO)115、適応ループフィルタ(ALF)116を施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まなくてもよく、例えばデブロッキングフィルタ114のみの構成であってもよい。
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述したQTあるいはBT分割パラメータや予測パラメータやこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いてPUの予測画像Pを生成する。
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すRDコスト値を算出する。RDコスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化残差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したRDコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして外部に出力し、選択されなかった符号化パラメータのセットを出力しない。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから、符号化するための形式を導出し、エントロピー符号化部104に出力する。符号化するための形式の導出とは、例えば動きベクトルと予測ベクトルから差分ベクトルを導出することである。また予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから予測画像を生成するために必要なパラメータを導出し、予測画像生成部101に出力する。予測画像を生成するために必要なパラメータとは、例えばサブブロック単位の動きベクトルである。
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいて、差分ベクトルのようなインター予測パラメータを導出する。インター予測パラメータ符号化部112は、予測画像生成部101に出力する予測画像の生成に必要なパラメータを導出する構成として、インター予測パラメータ復号部303がインター予測パラメータを導出する構成と一部同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
また、イントラ予測パラメータ符号化部113は、予測画像生成部101に出力する予測画像の生成に必要な予測パラメータを導出する構成として、イントラ予測パラメータ復号部304がイントラ予測パラメータを導出する構成と、一部同一の構成を含む。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたイントラ予測モードIntraPredModeから、符号化するための形式(例えばMPM_idx、rem_intra_luma_pred_mode等)を導出する。
(インター予測パラメータ符号化部の構成)
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、図12のインター予測パラメータ復号部303に対応する手段であり、図10に構成を示す。
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、図12のインター予測パラメータ復号部303に対応する手段であり、図10に構成を示す。
インター予測パラメータ符号化部112は、インター予測パラメータ符号化制御部1121、AMVP予測パラメータ導出部1122、減算部1123、サブブロック予測パラメータ導出部1125、BTM予測部1126、LIC予測部1127、及び図示しない、分割モード導出部、マージフラグ導出部、インター予測識別子導出部、参照ピクチャインデックス導出部、ベクトル差分導出部などを含んで構成され、分割モード導出部、マージフラグ導出部、インター予測識別子導出部、参照ピクチャインデックス導出部、ベクトル差分導出部は各々、PU分割モードpart_mode、マージフラグmerge_flag、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、差分ベクトルmvdLXを導出する。インター予測パラメータ符号化部112は、動きベクトル(mvLX、subMvLX)と参照ピクチャインデック
スrefIdxLX、PU分割モードpart_mode、インター予測識別子inter_pred_idc、あるいはこ
れらを示す情報を予測画像生成部101に出力する。またインター予測パラメータ符号化部112は、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLX、サブブロック予測モードフラグsubPbMotionFlagをエントロピー符号化部104に出力する。
スrefIdxLX、PU分割モードpart_mode、インター予測識別子inter_pred_idc、あるいはこ
れらを示す情報を予測画像生成部101に出力する。またインター予測パラメータ符号化部112は、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_lX_idx、差分ベクトルmvdLX、サブブロック予測モードフラグsubPbMotionFlagをエントロピー符号化部104に出力する。
インター予測パラメータ符号化制御部1121は、マージインデックス導出部11211とベクトル候補インデックス導出部11212を含む。マージインデックス導出部11211は、符号化パラメータ決定部110から入力された動きベクトルと参照ピクチャインデックスを、予測パラメータメモリ108から読み出したマージ候補のPUが持つ動きベクトルと参照ピクチャインデックスと比較して、マージインデックスmerge_idxを導出し
、エントロピー符号化部104に出力する。マージ候補とは、符号化対象となる符号化対象CUから予め定めた範囲にある参照PU(例えば、符号化対象ブロックの左下端、左上端、右上端に接する参照PU)であって、符号化処理が完了したPUである。ベクトル候補インデックス導出部11212は予測ベクトルインデックスmvp_lX_idxを導出する。
、エントロピー符号化部104に出力する。マージ候補とは、符号化対象となる符号化対象CUから予め定めた範囲にある参照PU(例えば、符号化対象ブロックの左下端、左上端、右上端に接する参照PU)であって、符号化処理が完了したPUである。ベクトル候補インデックス導出部11212は予測ベクトルインデックスmvp_lX_idxを導出する。
サブブロック予測パラメータ導出部1125には、符号化パラメータ決定部110がサブブロック予測モードの使用を決定した場合、subPbMotionFlagの値に従って、空間サブ
ブロック予測、時間サブブロック予測、アフィン予測、マッチング動き導出、OBMC予測のいずれかのサブブロック予測の動きベクトルと参照ピクチャインデックスを導出する。動
きベクトルと参照ピクチャインデックスは、タイル復号部2002の説明で述べたように、隣接PU、参照ピクチャブロック等の動きベクトルや参照ピクチャインデックスを予測パラメータメモリ108から読み出し、導出する。サブブロック予測パラメータ導出部1125、および、この中に含まれる時空間サブブロック予測部11251、アフィン予測部11252、マッチング予測部11253、OBMC予測部11254は、インター予測パラメータ復号部303のサブブロッ
ク予測パラメータ導出部3037、および、この中に含まれる時空間サブブロック予測部30371、アフィン予測部30372、マッチング予測部30373、OBMC予測部30374と同様の構成を有する。
ブロック予測、時間サブブロック予測、アフィン予測、マッチング動き導出、OBMC予測のいずれかのサブブロック予測の動きベクトルと参照ピクチャインデックスを導出する。動
きベクトルと参照ピクチャインデックスは、タイル復号部2002の説明で述べたように、隣接PU、参照ピクチャブロック等の動きベクトルや参照ピクチャインデックスを予測パラメータメモリ108から読み出し、導出する。サブブロック予測パラメータ導出部1125、および、この中に含まれる時空間サブブロック予測部11251、アフィン予測部11252、マッチング予測部11253、OBMC予測部11254は、インター予測パラメータ復号部303のサブブロッ
ク予測パラメータ導出部3037、および、この中に含まれる時空間サブブロック予測部30371、アフィン予測部30372、マッチング予測部30373、OBMC予測部30374と同様の構成を有する。
AMVP予測パラメータ導出部1122は、アフィン予測部11221を含み、上述のAMVP予測
パラメータ導出部3032(図12参照)と同様な構成を有する。
パラメータ導出部3032(図12参照)と同様な構成を有する。
すなわち、予測モードpredModeがインター予測モードを示す場合、AMVP予測パラメータ導出部1122には符号化パラメータ決定部110から動きベクトルmvLXが入力される。AMVP予測パラメータ導出部1122は、入力された動きベクトルmvLXに基づいて予測ベクトルmvpLXを導出する。AMVP予測パラメータ導出部1122は、導出した予測ベクトルmvpLXを減算部1123に出力する。なお、参照ピクチャインデックスrefIdxLX及び予測ベクトルインデックスmvp_lX_idxは、エントロピー符号化部104に出力される。また、アフィン予測部11221は、上述のAMVP予測パラメータ導出部3032のアフィン予測部30321(図12参照)と同様な構成を有する。
LIC予測部1127は、上述のLIC予測部3039(図12参照)と同様な構成を有する。
LIC予測部1127は、上述のLIC予測部3039(図12参照)と同様な構成を有する。
減算部1123は、符号化パラメータ決定部110から入力された動きベクトルmvLXから、AMVP予測パラメータ導出部1122から入力された予測ベクトルmvpLXを減算して差
分ベクトルmvdLXを生成する。差分ベクトルmvdLXはエントロピー符号化部104に出力される。
分ベクトルmvdLXを生成する。差分ベクトルmvdLXはエントロピー符号化部104に出力される。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、対象ブロックを分割したサブブロックのアフィン予測を用いて動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置であって、対象ブロックの2つの代表点の動きベクトル(第1の動きベクトル)を導出する第1の導出手段と、第1の動きベクトルがタイルシーケンス内を参照するかどうかを判定する判定手段と、第1の動きベクトルから、対象ブロックに含まれるサブブロックの動きベクトル(第2の動きベクトル)を導出する第2の導出手段と、第2の動きベクトルに基づいて、サブブロック単位の動き補償画像を生成する生成手段とを備え、前記判定手段が、第1の動きベクトルがタイルシーケンス外を参照すると判定した場合、前記動き補償画像の画素値をタイルシーケンス内の画素値から導出する処理を実施することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、前記判定手段が、第1の動きベクトルがタイルシーケンス外を参照すると判定した場合、前記第1の導出処理は、第1の動きベクトルの範囲制限によって処理することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、第2の動きベクトルがタイル外を参照する場合、前記生成手段がタイル境界をパディングして動き補償画像を生成することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、予測ベクトルインデックスを参照した予測ベクトルと差分ベクトルを加算して前記2つの代表点の動きベクトルを導出することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、対象ブロックの左側がタイル境界に接する場合、代表点を対象ブロックの左上および右上の点に設定し、対象ブロックの上側がタイル境界に接する場合、代表点を対象ブロックの左上および左下の点に設定することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、アフィン予測が利用された隣接ブロック内の3点の動きベクトルから前記2つの代表点の動きベクトルを導出することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、対象ブロックを分割したサブブロックの動きベクトル(第1の動きベクトル)と、サブブロックの隣接ブロックから動きベクトル(第2の動きベクトル)を用いてオーバーラップ動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置であって、サブブロックの上側、左側、下側、あるいは、右側の各方向に隣接する隣接ブロックから第2の動きベクトルを取得する手段と、サブブロックの第2の動きベクトルによる動き補償画像を生成する際に、参照する参照画素が参照ピクチャ上でタイルシーケンス内にあるか否かを判定する第1の判定手段と、第1の動きベクトルと第2の動きベクトルが等しいか否かを判定する第2の判定手段と、サブブロックの第1の動きベクトルによる第1の動き補償画像を生成する第1の生成手段と、サブブロックの第2の動きベクトルによる第2の動き補償画像を生成する第2の生成手段と、第2の判定手段が2つの動きベクトルが等しくないと判定した場合に、第1の動き補償画像、および、第2の動き補償画像の加算により予測画像を生成する第3の生成手段とを備え、第1の判定手段が、参照ピクチャ上でタイルシーケンス内に参照画素がないと判定した場合、前記動き補償画像の画素値をタイルシーケンス内の画素値から導出する処理を実施することを特徴とする動画像符号化装置、あるいは動画像復号装置。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、前記生成手段が、前記タイルシーケンスの境界画素から導出されるパディング画素を用いることを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、前記生成手段が、第2の動きベクトルの範囲制限によって処理することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、前記生成手段が、第2の動きベクトルを隣接ブロックの動きベクトルからコピーすることにより処理することを特徴とする。
本発明の一態様に係る画像符号化装置、あるいは動画像復号装置は、対象ブロックを分割したサブブロックのテンプレートマッチングを用いて動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置であって、対象ピクチャにおいて対象ブロックに上側および左側隣接する領域(第1のテンプレート領域)と、参照ピクチャにおいて参照ブロックに上側および左側隣接する領域(第2のテンプレート領域)を取得する第1の取得手段と、対象ブロックの隣接ブロックの動きベクトルをもとに、第1のテンプレート領域と第2のテンプレート領域とのマッチングコストが最小となる動きベクトル(第1の動きベクトル)を導出する第1の導出手段と、対象ピクチャにおいて対象ブロックを分割したサブブロックに上側および左側隣接する領域(第3のテンプレート領域)と、参照ピクチャにおいて参照ブロックを分割したサブブロックに上側および左側隣接する領域(第4のテンプレート領域)を取得する第2の取得手段と、第1の動きベクトル、あるいは、隣接ブロックの動きベクトルをもとに、第3のテンプレート領域と第4のテンプレート領域とのマッチングコストが最小となる動きベクトル(第2の動きベクトル)を導出する第2
の導出手段と、サブブロックの第2の動きベクトルによる動き補償画像を生成する生成手段とを備え、第1の取得手段は、第1のテンプレート領域を取得する際に、第1のテンプレート領域が全てタイル内に存在するか否かを判定する判定手段を備え、前記判定手段が、第1のテンプレート領域の一部がタイルシーケンス内に存在すると判定した場合、タイルシーケンス内に存在する上隣接領域と左隣接領域のいずれか一方のみを第1のテンプレート領域として取得し、前記判定手段が、第1のテンプレート領域がタイルシーケンス内に存在しないと判定した場合、テンプレートマッチングを用いた動き補償予測処理を実施しないことを特徴とする。
の導出手段と、サブブロックの第2の動きベクトルによる動き補償画像を生成する生成手段とを備え、第1の取得手段は、第1のテンプレート領域を取得する際に、第1のテンプレート領域が全てタイル内に存在するか否かを判定する判定手段を備え、前記判定手段が、第1のテンプレート領域の一部がタイルシーケンス内に存在すると判定した場合、タイルシーケンス内に存在する上隣接領域と左隣接領域のいずれか一方のみを第1のテンプレート領域として取得し、前記判定手段が、第1のテンプレート領域がタイルシーケンス内に存在しないと判定した場合、テンプレートマッチングを用いた動き補償予測処理を実施しないことを特徴とする。
(ソフトウェアによる実現例)
なお、上述した実施形態におけるタイル符号化部2012、タイル復号部2002の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、予測パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、タイル符号化部2012、タイル復号部2002のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュ
ータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
なお、上述した実施形態におけるタイル符号化部2012、タイル復号部2002の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、予測パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、タイル符号化部2012、タイル復号部2002のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュ
ータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
〔応用例〕
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した画像符号化装置11及び画像復号装置31を、動画像の送信及び受信に
利用できることを、図27を参照して説明する。
利用できることを、図27を参照して説明する。
図27の(a)は、画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。図27の(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した画像符号化装置11は、
この符号化部PROD_A1として利用される。
この符号化部PROD_A1として利用される。
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像
するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部PRED_A7を更に備えていてもよい。図27の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部PRED_A7を更に備えていてもよい。図27の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよい
し、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(
不図示)を介在させるとよい。
し、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(
不図示)を介在させるとよい。
図27の(b)は、画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。図27の(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した画像復号装置31は、この復号部PROD_B3として利用される。
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示す
るディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図27の(b)においては
、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
るディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図27の(b)においては
、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであって
もよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から
取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
もよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から
取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である
。
。
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線または有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
次に、上述した画像符号化装置11及び画像復号装置31を、動画像の記録及び再生に利用できることを、図28を参照して説明する。
図28の(a)は、上述した画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。図28の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した画像符
号化装置11は、この符号化部PROD_C1として利用される。
号化装置11は、この符号化部PROD_C1として利用される。
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたドライブ装置
(不図示)に装填されるものであってもよい。
(不図示)に装填されるものであってもよい。
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像
を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部PROD_C6を更に備えていてもよい。図28の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部PROD_C6を更に備えていてもよい。図28の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダなどが挙げられる(この場合、入力端子PROD_C4または受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5または画像
処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3
または受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_C
の一例である。
処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3
または受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_C
の一例である。
図28の(b)は、上述した画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロックである。図28の(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述し
た画像復号装置31は、この復号部PROD_D2として利用される。
た画像復号装置31は、この復号部PROD_D2として利用される。
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのよ
うに、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなど
のように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
うに、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなど
のように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を
表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図28の(b)においては、
これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図28の(b)においては、
これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動
画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称
され、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4または送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型またはタブレット型PC(この場合、ディスプレイPROD_D3または送
信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称
され、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4または送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型またはタブレット型PC(この場合、ディスプレイPROD_D3または送
信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
(ハードウェア的実現およびソフトウェア的実現)
また、上述した画像復号装置31および画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU
(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
また、上述した画像復号装置31および画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU
(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記
プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random
Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random
Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc)/CD-R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory:登録商標)/フラッシ
ュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
ュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを、通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital
Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable
Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber
Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable
Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber
Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
本発明の実施形態は、画像データが符号化された符号化データを復号する画像復号装置、および、画像データが符号化された符号化データを生成する画像符号化装置に好適に適用することができる。また、画像符号化装置によって生成され、画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
10 CT情報復号部
20 CU復号部
41 画像表示装置
2000 画像復号装置
2002 タイル復号部
2020 画像符号化装置
2012 タイル符号化部
20 CU復号部
41 画像表示装置
2000 画像復号装置
2002 タイル復号部
2020 画像符号化装置
2012 タイル符号化部
Claims (9)
- 対象ブロックを分割したサブブロックのアフィン予測を用いて動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置において、
対象ブロックの2つの代表点の動きベクトル(第1の動きベクトル)を導出する第1の導出手段と、
第1の動きベクトルがタイルシーケンス内を参照するかどうかを判定する判定手段と、
第1の動きベクトルから、対象ブロックに含まれるサブブロックの動きベクトル(第2の動きベクトル)を導出する第2の導出手段と、
第2の動きベクトルに基づいて、サブブロック単位の動き補償画像を生成する生成手段とを備え、
前記判定手段が、第1の動きベクトルがタイルシーケンス外を参照すると判定した場合、前記動き補償画像の画素値をタイルシーケンス内の画素値から導出する処理を実施することを特徴とする動画像符号化装置、あるいは動画像復号装置。 - 前記判定手段が、第1の動きベクトルがタイルシーケンス外を参照すると判定した場合、前記第1の導出処理は、第1の動きベクトルの範囲制限によって処理することを特徴とする請求項1に記載の動画像符号化装置、あるいは動画像復号装置。
- 前記生成手段は、第2の動きベクトルがタイル外を参照する場合、タイル境界をパディングして動き補償画像を生成することを特徴とする請求項1に記載の動画像符号化装置、あるいは動画像復号装置。
- 対象ブロックの左側がタイル境界に接する場合、代表点を対象ブロックの左上および右上の点に設定し、対象ブロックの上側がタイル境界に接する場合、代表点を対象ブロックの左上および左下の点に設定することを特徴とする請求項1に記載の動画像符号化装置、あるいは動画像復号装置。
- 対象ブロックを分割したサブブロックの動きベクトル(第1の動きベクトル)と、サブブロックの隣接ブロックから動きベクトル(第2の動きベクトル)を用いてオーバーラップ動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置において、
サブブロックの上側、左側、下側、あるいは、右側の各方向に隣接する隣接ブロックから第2の動きベクトルを取得する手段と、
サブブロックの第2の動きベクトルによる動き補償画像を生成する際に、参照する参照画素が参照ピクチャ上でタイルシーケンス内にあるか否かを判定する第1の判定手段と、
第1の動きベクトルと第2の動きベクトルが等しいか否かを判定する第2の判定手段と、
サブブロックの第1の動きベクトルによる第1の動き補償画像を生成する第1の生成手段と、
サブブロックの第2の動きベクトルによる第2の動き補償画像を生成する第2の生成手段と、
第2の判定手段が2つの動きベクトルが等しくないと判定した場合に、第1の動き補償画像、および、第2の動き補償画像の加算により予測画像を生成する第3の生成手段とを備え、
第1の判定手段が、参照ピクチャ上でタイルシーケンス内に参照画素がないと判定した場合、前記動き補償画像の画素値をタイルシーケンス内の画素値から導出する処理を実施することを特徴とする動画像符号化装置、あるいは動画像復号装置。 - 前記生成手段は、前記タイルシーケンスの境界画素から導出されるパディング画素を用いることを特徴とする請求項5に記載の動画像符号化装置、あるいは動画像復号装置。
- 前記生成手段は、第2の動きベクトルの範囲制限によって処理することを特徴とする請求項5に記載の動画像符号化装置、あるいは動画像復号装置。
- 前記生成手段は、第2の動きベクトルを隣接ブロックの動きベクトルからコピーすることにより処理することを特徴とする請求項5に記載の動画像符号化装置、あるいは動画像復号装置。
- 対象ブロックを分割したサブブロックのテンプレートマッチングを用いて動き補償予測処理を実施する動画像符号化装置、あるいは動画像復号装置において、
対象ピクチャにおいて対象ブロックに上側および左側隣接する領域(第1のテンプレート領域)と、参照ピクチャにおいて参照ブロックに上側および左側隣接する領域(第2のテンプレート領域)を取得する第1の取得手段と、
対象ブロックの隣接ブロックの動きベクトルをもとに、第1のテンプレート領域と第2のテンプレート領域とのマッチングコストが最小となる動きベクトル(第1の動きベクトル)を導出する第1の導出手段と、
対象ピクチャにおいて対象ブロックを分割したサブブロックに上側および左側隣接する領域(第3のテンプレート領域)と、参照ピクチャにおいて参照ブロックを分割したサブブロックに上側および左側隣接する領域(第4のテンプレート領域)を取得する第2の取得手段と、
第1の動きベクトル、あるいは、隣接ブロックの動きベクトルをもとに、第3のテンプレート領域と第4のテンプレート領域とのマッチングコストが最小となる動きベクトル(第2の動きベクトル)を導出する第2の導出手段と、
サブブロックの第2の動きベクトルによる動き補償画像を生成する生成手段とを備え、
第1の取得手段は、第1のテンプレート領域を取得する際に、第1のテンプレート領域が全てタイル内に存在するか否かを判定する判定手段を備え、
前記判定手段が、第1のテンプレート領域の一部がタイルシーケンス内に存在すると判定した場合、タイルシーケンス内に存在する上隣接領域と左隣接領域のいずれか一方のみを第1のテンプレート領域として取得し、
前記判定手段が、第1のテンプレート領域がタイルシーケンス内に存在しないと判定した場合、テンプレートマッチングを用いた動き補償予測処理を実施しないことを特徴とする動画像符号化装置、あるいは動画像復号装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017146569A JP2020145486A (ja) | 2017-07-28 | 2017-07-28 | 動画像符号化装置及び動画像復号装置 |
PCT/JP2018/024364 WO2019004283A1 (ja) | 2017-06-28 | 2018-06-27 | 動画像符号化装置及び動画像復号装置 |
US16/625,964 US11184636B2 (en) | 2017-06-28 | 2018-06-27 | Video encoding device and video decoding device |
US17/488,418 US11800147B2 (en) | 2017-06-28 | 2021-09-29 | Video encoding device and video decoding device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017146569A JP2020145486A (ja) | 2017-07-28 | 2017-07-28 | 動画像符号化装置及び動画像復号装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020145486A true JP2020145486A (ja) | 2020-09-10 |
Family
ID=72354565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017146569A Pending JP2020145486A (ja) | 2017-06-28 | 2017-07-28 | 動画像符号化装置及び動画像復号装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020145486A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021520121A (ja) * | 2018-04-02 | 2021-08-12 | エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd | 動画像処理方法および装置 |
US11997312B2 (en) | 2018-04-02 | 2024-05-28 | SZ DJI Technology Co., Ltd. | Method and device for video image processing |
-
2017
- 2017-07-28 JP JP2017146569A patent/JP2020145486A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021520121A (ja) * | 2018-04-02 | 2021-08-12 | エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd | 動画像処理方法および装置 |
JP7216109B2 (ja) | 2018-04-02 | 2023-01-31 | エスゼット ディージェイアイ テクノロジー カンパニー リミテッド | 動画像処理方法、動画像処理装置、及びコンピュータプログラム |
US11871032B2 (en) | 2018-04-02 | 2024-01-09 | SZ DJI Technology Co., Ltd. | Method and device for image motion compensation |
US11949911B2 (en) | 2018-04-02 | 2024-04-02 | SZ DJI Technology Co., Ltd. | Method and device for obtaining motion vector of video image |
US11949912B2 (en) | 2018-04-02 | 2024-04-02 | SZ DJI Technology Co., Ltd. | Method and device for video image processing |
US11997312B2 (en) | 2018-04-02 | 2024-05-28 | SZ DJI Technology Co., Ltd. | Method and device for video image processing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019004283A1 (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2021016016A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2021005741A (ja) | 画像符号化装置及び画像復号装置 | |
WO2018116802A1 (ja) | 画像復号装置、画像符号化装置、及び画像予測装置 | |
WO2018221368A1 (ja) | 動画像復号装置、及び動画像符号化装置 | |
CN111886867B (zh) | 运动矢量推导装置、运动图像解码装置以及运动图像编码装置 | |
JP2021010046A (ja) | 画像符号化装置及び画像復号装置 | |
US20200021837A1 (en) | Video decoding apparatus and video coding apparatus | |
WO2018230493A1 (ja) | 動画像復号装置、動画像符号化装置、予測画像生成装置及び動きベクトル導出装置 | |
WO2020116456A1 (ja) | 動画像復号装置 | |
JP2020053924A (ja) | 動画像符号化装置、動画像復号装置 | |
JP7241153B2 (ja) | 画像復号装置 | |
WO2018110180A1 (ja) | 動きベクトル生成装置、予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
CN112956206A (zh) | 运动图像解码装置以及运动图像编码装置 | |
JP2020043500A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2020145650A (ja) | 画像復号装置および画像符号化装置 | |
JP2020088660A (ja) | 動画像符号化装置、動画像復号装置 | |
WO2018061550A1 (ja) | 画像復号装置及び画像符号化装置 | |
JP2020145486A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2020145488A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2021016018A (ja) | 動画像符号化装置、動画像復号装置および動きベクトル導出装置 | |
JP2020145484A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2021057621A (ja) | 動画像符号化装置、動画像復号装置および予測画像生成装置 | |
WO2019131349A1 (ja) | 画像復号装置、画像符号化装置 | |
JP2020022116A (ja) | 動画像符号化装置及び動画像復号装置 |