JP2020036101A - 画像復号装置および画像符号化装置 - Google Patents
画像復号装置および画像符号化装置 Download PDFInfo
- Publication number
- JP2020036101A JP2020036101A JP2018158721A JP2018158721A JP2020036101A JP 2020036101 A JP2020036101 A JP 2020036101A JP 2018158721 A JP2018158721 A JP 2018158721A JP 2018158721 A JP2018158721 A JP 2018158721A JP 2020036101 A JP2020036101 A JP 2020036101A
- Authority
- JP
- Japan
- Prior art keywords
- prediction
- vector
- unit
- idx
- residual
- 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
【課題】動画像符号化装置における符号化効率を改善する。【解決手段】マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとから動きベクトルを導出するUMVE処理部(3065)を備え、UMVE処理部は少なくとも6つの方向の何れかを示す方向情報、及び長さを示す長さ情報を参照して残差ベクトルを導出する動画像復号装置(31)。【選択図】図5
Description
本発明の実施形態は、画像復号装置および画像符号化装置に関する。
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video Coding)にて提案されている方式などが挙げられる。
このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び、符号化単位を分割することより得られるブロックである予測ユニット(PU)、変換ユニット(TU)からなる階層構造により管理され、CUごとに符号化/復号される。
また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測残差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる。
また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。
"Algorithm Description of Joint Exploration Test Model 5", JVET-E1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 12-20 January 2017
例えば、インター予測については、動画像符号化装置にて探索した差分ベクトルを用いて動きベクトルを導出し予測画像を生成する方法がある。当該予測方法においては動画像符号化装置における符号化の効率が低く成り得るという問題が生じていた。
上記課題を解決するために、本発明の一態様に係る画像復号装置は、マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、上記動きベクトル導出部は、上記残差ベクトルの方向を示す方向情報、及び上記残差ベクトルの長さを示す長さ情報を参照して上記残差ベクトルを導出し、上記方向情報は、少なくとも6つの方向の何れかを示す情報である。
また、本発明の一態様に係る画像復号装置は、マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、上記動きベクトル導出部は、上記マージ候補リストに含まれているブロックの予測インデックスであって、第1の単方向予測、第2の単方向予測、及び、双方向予測の何れかを示す予測インデックスを、上記対象ブロックに適用する予測インデックスに設定する。
また、本発明の一態様に係る画像復号装置は、マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、上記動きベクトル導出部は、上記残差ベクトルの方向を示す方向情報、及び上記残差ベクトルの長さを示す長さ情報を参照して上記残差ベクトルを導出し、上記長さ情報には、小数画素単位での長さ情報が含まれる。
また、本発明の一態様に係る画像復号装置は、マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、上記動きベクトル導出部は、上記残差ベクトルの方向を示す方向情報、及び上記残差ベクトルの長さを示す長さ情報を参照して上記残差ベクトルを導出し、上記長さ情報は、複数の残差ベクトルの長さを含む異なる複数のリストのうち特定のリストに含まれる残差ベクトルの長さの1つを示す。
また、本発明の一態様に係る画像符号化装置は、画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、上記残差ベクトル探索部は、探索した上記残差ベクトルの方向を示す方向情報、及び探索した上記残差ベクトルの長さを示す長さ情報を導出し、上記方向情報は、少なくとも6つの方向の何れかを示す情報である。
また、本発明の一態様に係る画像符号化装置は、画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、上記残差ベクトル探索部は、上記マージ候補リストに含まれているブロックの予測インデックスであって、第1の単方向予測、第2の単方向予測、及び、双方向予測の何れかを示す予測インデックスを、上記対象ブロックに適用する予測インデックスに設定する。
また、本発明の一態様に係る画像符号化装置は、画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、上記残差ベクトル探索部は、探索した上記残差ベクトルの方向を示す方向情報、及び探索した上記残差ベクトルの長さを示す長さ情報を導出し、上記長さ情報には、小数画素単位での長さ情報が含まれる。
また、本発明の一態様に係る画像符号化装置は、画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、上記残差ベクトル探索部は、上記残差ベクトルの方向を示す方向情報、及び上記残差ベクトルの長さを示す長さ情報を導出し、上記長さ情報は、複数の残差ベクトルの長さを含む異なる複数のリストのうち特定のリストに含まれる残差ベクトルの長さの1つを示す。
以上の構成によれば、上記問題の解決を図ることができる。
(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
以下、図面を参照しながら本発明の実施形態について説明する。
図31は、本実施形態に係る画像伝送システム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(Blue-ray Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
動画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した1または複数の復号画像Tdを生成する。
画像表示装置41は、動画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、動画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<演算子>
本明細書で用いる演算子を以下に記載する。
本明細書で用いる演算子を以下に記載する。
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズ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)。
<符号化ストリームTeの構造>
本実施形態に係る動画像符号化装置11および動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
本実施形態に係る動画像符号化装置11および動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
図1は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図1の(a)〜(f)は、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニット(Coding Unit;CU)を示す図である。
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図1の(a)に示すように、ビデオパラメータセット(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)に示すように、ビデオパラメータセット(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の何れかを選択する。
ピクチャパラメータセット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に含まれるデータであって、添え字を付している他のデータについても同様である。
(符号化スライス)
符号化スライスでは、処理対象のスライス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スライスなどが挙げられる。
なお、スライスヘッダSHには、上記符号化ビデオシーケンスに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit)を含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit)を含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(符号化ツリーユニット)
図1の(e)には、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)分割)により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。
図1の(e)には、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)分割)により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。
CTは、CT情報として、QT分割を行うか否かを示すQT分割フラグ(cu_split_flag)、MT分割の分割方法を示すMT分割モード(split_mt_mode)、MT分割の分割方向を示すMT分割方向(split_mt_dir)、MT分割の分割タイプを示すMT分割タイプ(split_mt_type)を含む。cu_split_flag、split_mt_flag、split_mt_dir、split_mt_type は符号化ノード毎に伝送される。
cu_split_flagが1の場合、符号化ノードは4つの符号化ノードに分割される(図2(b))。cu_split_flagが0の時、split_mt_flagが0の場合に符号化ノードは分割されず1つのCUをノードとして持つ(図2(a))。 CUは符号化ノードの末端ノードであり、これ以上分割されない。CUは、符号化処理の基本的な単位となる。
split_mt_flagが1の場合に符号化ノードは以下のようにMT分割される。split_mt_typeが0の時、split_mt_dirが1の場合に符号化ノードは2つの符号化ノードに水平分割され(図2(d))、split_mt_dirが0の場合に符号化ノードは2つの符号化ノードに垂直分割される(図2(c))。また、split_mt_typeが1の時、split_mt_dirが1の場合に符号化ノードは3つの符号化ノードに水平分割され(図2(f))、split_mt_dirが0の場合に符号化ノードは3つの符号化ノードに垂直分割される(図2(e))。
また、CTUのサイズが64x64画素の場合には、CUのサイズは、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画素の何れかをとり得る。
(符号化ユニット)
図1の(f)に示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
図1の(f)に示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCUのサイズよりも大きい場合、CUは、サブCUに分割される。たとえばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。
予測の種類(予測モード)は、イントラ予測と、インター予測の2つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位でエントロピー符号化してもよい。
(予測パラメータ)
予測ユニット(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、参照ピクチャインデックス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中のどのピクチャを実際に参照するかを参照ピクチャインデックスrefIdxLXで指定する。図では、refIdxL0およびrefIdxL1により参照ピクチャP1とB2が参照される例を示す。
参照ピクチャリストは、参照ピクチャメモリ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中のどのピクチャを実際に参照するかを参照ピクチャインデックスrefIdxLXで指定する。図では、refIdxL0およびrefIdxL1により参照ピクチャP1とB2が参照される例を示す。
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_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、適応動きベクトル予測)モードがある、マージフラグmerge_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は、参照ピクチャリストで管理された参照ピクチャを示すインデックスである。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別する。
マージインデックスmerge_idxは、処理が完了した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の値を用いることができる。
(動画像復号装置の構成)
次に、本実施形態に係る動画像復号装置31の構成について説明する。図4は、本実施形態に係る動画像復号装置31の構成を示す概略図である。動画像復号装置31は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。
次に、本実施形態に係る動画像復号装置31の構成について説明する。図4は、本実施形態に係る動画像復号装置31の構成を示す概略図である。動画像復号装置31は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報および、差分画像を生成するための残差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードpredMode、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXである。どの符号を復号するかの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部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は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)、LMモード(35)の何れかを用いるものである。イントラ予測パラメータ復号部304は、IntraPredModeCは輝度モードと同じモードであるか否かを示すフラグを復号し、フラグが輝度モードと同じモードであることを示せば、IntraPredModeCにIntraPredModeYを割り当て、フラグが輝度モードと異なるモードであることを示せば、IntraPredModeCとして、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)、LMモード(35)を復号しても良い。
ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)等のフィルタを施す。
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、復号対象のピクチャ及びCU毎に予め定めた位置に記憶する。
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及び予測ユニット(もしくはサブブロック、固定サイズブロック、ピクセル)毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部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もしくはサブブロックの予測画像を生成するために参照する領域である。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたPUのうち、復号対象PUから予め定めた範囲にある隣接PUを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、復号対象PUがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接PUのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した隣接PUに基づいてイントラ予測モードIntraPredModeが示す予測モードで予測を行ってPUの予測画像を生成する。イントラ予測画像生成部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に出力する。
加算部312は、インター予測画像生成部309またはイントラ予測画像生成部310から入力されたPUの予測画像と逆量子化・逆変換部311から入力された残差信号を画素毎に加算して、PUの復号画像を生成する。加算部312は、生成したPUの復号画像を参照ピクチャメモリ306に記憶し、生成したPUの復号画像をピクチャ毎に統合した復号画像Tdを外部に出力する。
(インター予測パラメータ復号部の構成)
次に、インター予測パラメータ復号部303の構成について説明する。
次に、インター予測パラメータ復号部303の構成について説明する。
図5は、本実施形態に係るインター予測パラメータ復号部303の構成を示す概略図である。
インター予測パラメータ復号部303は、AMVP予測パラメータ導出部3032、加算部3038、UMVE処理部(動きベクトル導出部)3065およびマージ予測パラメータ導出部3036を含んで構成される。
インター予測パラメータ復号部303は、AMVP予測パラメータ導出部3032、加算部3038、UMVE処理部(動きベクトル導出部)3065およびマージ予測パラメータ導出部3036を含んで構成される。
インター予測パラメータ復号部303は、インター予測に関連する符号(シンタックス要素)の復号をエントロピー復号部301に指示し、符号化データに含まれる符号(シンタックス要素)、例えば、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを抽出する。
マージフラグmerge_flagが0、すなわち、AMVP予測モードを示す場合、インター予測パラメータ復号部303は、AMVP予測パラメータとして、例えば、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを復号する。AMVP予測パラメータ導出部3032は予測ベクトルインデックスmvp_LX_idxから予測ベクトルmvpLXを導出する。詳細は後述する。インター予測パラメータ復号制御部3031は、差分ベクトルmvdLXを加算部3038に出力する。加算部3038では、予測ベクトルmvpLXと差分ベクトルmvdLXを加算し、動きベクトルを導出する。
マージフラグmerge_flagが1、すなわち、マージ予測モードを示す場合、インター予測パラメータ復号部303はマージインデックスmerge_idxを復号し、マージ予測パラメータ導出部3036(詳細は後述する)に出力する。
図6の(a)は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362を備える。なお、マージ候補は、予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成され、マージ候補リストに格納される。マージ候補リストに格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。
マージ候補導出部30361は、すでに復号処理が行われた隣接PUの動きベクトルと参照ピクチャインデックスrefIdxLXをそのまま用いてマージ候補を導出する。それ以外にアフィン予測を用いてマージ候補を導出してもよい。マージ候補導出部30361は、アフィン予測を、後述する空間マージ候補導出処理、時間マージ候補導出処理、結合マージ候補導出処理、およびゼロマージ候補導出処理に用いてもよい。
(空間マージ候補導出処理)
空間マージ候補導出処理として、マージ候補導出部30361は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、読み出した予測パラメータをマージ候補として導出する。読み出される予測パラメータは、復号対象PUから予め定めた範囲内にあるPU(例えば、復号対象PUの左下端、左上端、右上端にそれぞれ接するPUの全部または一部)のそれぞれに係る予測パラメータである。
空間マージ候補導出処理として、マージ候補導出部30361は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、読み出した予測パラメータをマージ候補として導出する。読み出される予測パラメータは、復号対象PUから予め定めた範囲内にあるPU(例えば、復号対象PUの左下端、左上端、右上端にそれぞれ接するPUの全部または一部)のそれぞれに係る予測パラメータである。
(時間マージ候補導出処理)
時間マージ導出処理として、マージ候補導出部30361は、復号対象PUの右下の座標を含む参照画像中のPUの予測パラメータを予測パラメータメモリ307から読みだしマージ候補とする。参照画像の指定方法は、例えば、スライスヘッダにおいて指定された参照ピクチャインデックスrefIdxLXでも良いし、復号対象PUに隣接するPUの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。
時間マージ導出処理として、マージ候補導出部30361は、復号対象PUの右下の座標を含む参照画像中のPUの予測パラメータを予測パラメータメモリ307から読みだしマージ候補とする。参照画像の指定方法は、例えば、スライスヘッダにおいて指定された参照ピクチャインデックスrefIdxLXでも良いし、復号対象PUに隣接するPUの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。
(結合マージ候補導出処理)
結合マージ導出処理として、マージ候補導出部30361は、既に導出され、マージ候補リストに格納された2つの異なる導出済マージ候補の動きベクトルと参照ピクチャインデックスを、それぞれL0、L1の動きベクトルとして組み合わせることで結合マージ候補を導出する。
結合マージ導出処理として、マージ候補導出部30361は、既に導出され、マージ候補リストに格納された2つの異なる導出済マージ候補の動きベクトルと参照ピクチャインデックスを、それぞれL0、L1の動きベクトルとして組み合わせることで結合マージ候補を導出する。
(ゼロマージ候補導出処理)
ゼロマージ候補導出処理として、マージ候補導出部30361は、参照ピクチャインデックスrefIdxLXが0であり、動きベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出し、マージ候補リストに格納する。
ゼロマージ候補導出処理として、マージ候補導出部30361は、参照ピクチャインデックスrefIdxLXが0であり、動きベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出し、マージ候補リストに格納する。
マージ候補選択部30362は、マージ候補リストに格納されているマージ候補のうち、インター予測パラメータ復号制御部3031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当てられたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を予測パラメータメモリ307に記憶するとともに、予測画像生成部308に出力する。
図6の(b)は、本実施形態に係るAMVP予測パラメータ導出部3032の構成を示す概略図である。AMVP予測パラメータ導出部3032は、ベクトル候補導出部3033とベクトル候補選択部3034を備える。ベクトル候補導出部3033は、参照ピクチャインデックスrefIdxに基づいて予測パラメータメモリ307が記憶する既に処理済みのPUの動きベクトルmvLXから予測ベクトル候補を導出し、予測ベクトル候補リストmvpListLX[]に格納する。
ベクトル候補選択部3034は、予測ベクトル候補リストmvpListLX[]の予測ベクトル候補のうち予測ベクトルインデックスmvp_LX_idxが示す動きベクトルmvpListLX[mvp_LX_idx]を予測ベクトルmvpLXとして選択する。ベクトル候補選択部3034は、選択した予測ベクトルmvpLXを加算部3038に出力する。
加算部3038は、AMVP予測パラメータ導出部3032から入力された予測ベクトルmvpLXとインター予測パラメータ復号制御部3031から入力された差分ベクトルmvdLXを加算して動きベクトルmvLXを算出する。加算部3038は、算出した動きベクトルmvLXを予測画像生成部308および予測パラメータメモリ307に出力する。
(インター予測画像生成部309)
図7は、本実施形態に係る予測画像生成部308に含まれるインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き補償部(予測画像生成装置)3091、重み予測部3094を含んで構成される。
図7は、本実施形態に係る予測画像生成部308に含まれるインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き補償部(予測画像生成装置)3091、重み予測部3094を含んで構成される。
(動き補償)
動き補償部3091は、インター予測パラメータ復号部303から入力された、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX)に基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャRefXにおいて、復号対象PUの位置を起点として、動きベクトルmvLXだけずれた位置にあるブロックを読み出すことによって補間画像(動き補償画像predSamplesLX)を生成する。ここで、動きベクトルmvLXの精度が整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、動き補償画像を生成する。
動き補償部3091は、インター予測パラメータ復号部303から入力された、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX)に基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャRefXにおいて、復号対象PUの位置を起点として、動きベクトルmvLXだけずれた位置にあるブロックを読み出すことによって補間画像(動き補償画像predSamplesLX)を生成する。ここで、動きベクトルmvLXの精度が整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、動き補償画像を生成する。
(重み予測)
重み予測部3094は、入力される動き補償画像predSamplesLXに重み係数を乗算することによりPUの予測画像を生成する。予測リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力された動き補償画像predSamplesLX(LXはL0もしくはL1)を画素ビット数bitDepthに合わせる以下の式の処理を行う。
重み予測部3094は、入力される動き補償画像predSamplesLXに重み係数を乗算することによりPUの予測画像を生成する。予測リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力された動き補償画像predSamplesLX(LXはL0もしくはL1)を画素ビット数bitDepthに合わせる以下の式の処理を行う。
predSamples[x][y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLX[x][y] + offset1 ) >> shift1 )
ここで、shift1 = 14 - bitDepth、offset1=1<<(shift1-1)である。
また、参照リスト利用フラグの両者(predFlagL0とpredFlagL1)が1の場合(双予測BiPredの場合)で、重み予測を用いない場合には、入力された動き補償画像predSamplesL0、predSamplesL1を平均し画素ビット数に合わせる以下の式の処理を行う。
ここで、shift1 = 14 - bitDepth、offset1=1<<(shift1-1)である。
また、参照リスト利用フラグの両者(predFlagL0とpredFlagL1)が1の場合(双予測BiPredの場合)で、重み予測を用いない場合には、入力された動き補償画像predSamplesL0、predSamplesL1を平均し画素ビット数に合わせる以下の式の処理を行う。
predSamples[x][y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0[x][y] + predSamplesL1[x][y] + offset2 ) >> shift2 )
ここで、shift2=15-bitDepth、offset2=1<<(shift2-1)である。
ここで、shift2=15-bitDepth、offset2=1<<(shift2-1)である。
さらに、単予測の場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0とオフセットo0を符号化データから導出し、以下の式の処理を行う。
predSamples[x][y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( (predSamplesLX[x][y] * w0 + 2^(log2WD - 1)) >> log2WD ) + o0 )
ここで、log2WDは所定のシフト量を示す変数である。
ここで、log2WDは所定のシフト量を示す変数である。
さらに、双予測BiPredの場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0、w1、o0、o1を符号化データから導出し、以下の式の処理を行う。
predSamples[x][y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0 [x][y] * w0 + predSamplesL1[x][y] * w1 + ((o0 + o1 + 1) << log2WD) ) >> (log2WD + 1) )
(第2の実施形態)
(マージ予測パラメータ導出部3036)
(予測モード)
本実施形態においては、動画像復号装置31は、予測モードとして、スキップモード、UMVE(Ultimate motion vector expression)モード、イントラ予測モード、マージモードまたはAMVPモードを選択する。
(第2の実施形態)
(マージ予測パラメータ導出部3036)
(予測モード)
本実施形態においては、動画像復号装置31は、予測モードとして、スキップモード、UMVE(Ultimate motion vector expression)モード、イントラ予測モード、マージモードまたはAMVPモードを選択する。
スキップモードとは、対象ブロックについて、差分ベクトルおよび残差信号が符号化、復号されず、0に設定されるモードである。差分ベクトルが0なので、動きベクトルは予測ベクトルと同じに設定され、残差信号が0なので、復号画像は予測画像と同じに設定される。
また、UMVEモードとは、動画像符号化装置11によって探索された動きベクトルから、マージ候補リストに含まれているブロックの予測ベクトルmvpLX、差分ベクトルmvdLXを導出するモードである。動画像符号化装置11によって選択されたマージ候補リストに含まれているブロックを示す情報は符号化されて、動画像復号装置31に出力される。また、動画像符号化装置11によって、導出された差分ベクトルmvdLXの長さを示す情報および方向を示す情報は符号化されて、動画像復号装置31に出力される。
動画像復号装置31はマージ候補リストから、選択されたブロックの予測ベクトルmvpLXを導出する。また、動画像復号装置31は符号化された差分ベクトルの方向を示す方向情報、及び差分ベクトルの長さを示す長さ情報を参照して差分ベクトルを導出し、差分ベクトルmvdLXと予測ベクトルとから動きベクトルmvLXを導出する。
なお、AMVPモードにおいても、差分ベクトルmvdLXは符号化されて動画像復号装置31に出力される。差分ベクトルmvdLXは(dx, dy)で示される。通常のAMVPモードに比べ、UMVEモードでは(dx, dy)は自由度が制限されていると表現することもできる。UMVEモードでは差分ベクトルやインター予測inter_pred_idcの自由度を制限するため、動画像符号化装置11によって符号化されるデータをより小さい符号量で符号化することができる。
(UMVE処理部3065)
UMVE処理部3065は、UMVEモードにおける処理を行う。
UMVE処理部3065は、UMVEモードにおける処理を行う。
UMVE処理部3065は、動画像符号化装置11がマージ候補リストから選択する予測ベクトルを示す符号化データ、および差分ベクトル(残差ベクトル)を示す符号化データ(UMVE情報)を復号する。UMVE処理部3065は、当該予測ベクトルと当該差分ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する。
より詳細には、UMVE処理部3065は、マージ候補リストmergeCandList[]のマージ候補のうち、base_candidate_idxが示すブロックの動きベクトルを予測ベクトルmvpLXとして選択する。
図10は、UMVEモードにおいて用いられるインデックスの一例を示す図である。図10の(a)は、マージ候補リストmergeCandList[]のマージ候補を示すインデックスbase_candidate_idxの一例を示す図である。図10の(b)は、対象ブロックに隣接するブロックの一例を示す図である。例えば、マージ候補リストmergeCandList[]={A1,B1,B0,A0,B2}の場合、復号したbase_candidate_idxが0を示すと、UMVE処理部3065は図10の(b)に示すブロックA1の動きベクトルを予測ベクトルmvpLXとして選択する。また、復号したbase_candidate_idxが3を示すと、UMVE処理部3065は図10の(b)に示すブロックA0の動きベクトルを予測ベクトルmvpLX(候補ベクトルの中心ベクトル)として選択する。なお、base_candidate_idxを符号化データに含めない場合には、base_candidate_idx=0固定としてもよい。
また、UMVE処理部3065は、差分ベクトルmvdLXの長さを示すインデックスdistance_idxおよび差分ベクトルmvdLXの方向を示すインデックスdirection_idxを用いて差分ベクトルmvdLXを導出する。
例えば、mergeCandListには、base_candidate_idxが示す値と対象ブロックに隣接する参照ブロックとが対応付いており、UMVE処理部3065は、mergeCandListを用いて、base_candidate_idxが示す参照ブロックを特定してもよい。
図10の(c)は、distance_idxの一例を示す図である。図10の(c)に示すように、distance_idxにおいて、0、1、2、3、4、5、6および7の値は、1/4pel、1/2pel、1pel、2pel、4pel、8pel、16pelおよび32pelの8つの距離(長さ)のそれぞれに対応付いている。
図10の(d)は、direction_idxの一例を示す図である。図10の(d)に示すように、direction_idxにおいて、00,01,10および11の値は、x軸が正の方向、x軸が負の方向、y軸が正の方向、y軸が負の方向の4つの方向のそれぞれに対応付いている。
なお、UMVE処理部3065は、予測方向をインター予測識別子(inter_pred_idc)が示す値に応じた方向(L0,L1,双方向等)としてもよい。
例えば、図9は、動画像符号化装置11における探索距離の候補数および導出方向の候補数の一例を示す図である。また、動画像復号装置31において、導出された差分ベクトルmvdLXは図9の候補のうちの1つである。図9に示す例では、中央の黒丸が予測ベクトルmvpLXの指す位置であり、この位置を中心にして、探索距離の候補数は5であり、導出方向の候補数は4(上、下、左、右)である。さらに、マージ候補リストにおける予測ベクトルの候補リストが2つ(L0リスト、L1リスト)あり、インター予測識別子が示す予測方向が3つ(L0,L1,双方向)である場合、差分ベクトルmvdLXは120通りから探索される。このようにUMVEモードは、予測ベクトルを中心として限られた候補点を探索し、適切な動きベクトルを導出するモードである。
(予測モードの選択)
次に、図8を参照して、本実施形態に係る動画像復号装置31における予測モードの選択について説明する。図8は、動画像復号装置31における予測モードの選択処理の流れを示すフローチャートである。
次に、図8を参照して、本実施形態に係る動画像復号装置31における予測モードの選択について説明する。図8は、動画像復号装置31における予測モードの選択処理の流れを示すフローチャートである。
図8に示すように、本実施形態では、予測パラメータ復号部302は、まず、スキップフラグを復号する(S1301)。スキップフラグがスキップモードであることを示している場合(S1302でYES)、予測パラメータ復号部302はUMVEフラグを復号する(S1303)。UMVEフラグがUMVEモードであることを示していない場合(S1304でNO)、予測モードはスキップモードとなる(S1305)。
UMVEフラグがUMVEモードであることを示している場合(S1304でYES)、予測モードはUMVEモードとなる(S1305)。
スキップフラグがスキップモードであることを示していない場合(S1302でNO)、予測パラメータ復号部302は、予測モードフラグを復号する(S1307)。予測モードフラグがイントラ予測モードであることを示している場合(S1308でYES)、予測モードはイントラ予測モードとなる(S1309)。
予測モードフラグがイントラ予測モードであることを示していない場合(S1308でNO)、予測パラメータ復号部302は、マージフラグを復号する(S1310)。マージフラグがマージモードであることを示している場合(S1311でYES)、予測パラメータ復号部302は、UMVEフラグを復号する(S1313)。UMVEフラグがUMVEモードであることを示していない場合(S1314でNO)、予測モードはマージモードとなる(S1315)。UMVEフラグがUMVEモードであることを示している場合(S1314でYES)、予測モードはUMVEモードとなる(S1316)。
マージフラグがマージモードであることを示していない場合(S1311でNO)、予測モードはAMVPモードとなる(S1312)。
スキップモード、マージモードにおいては、予測パラメータ復号部302はmerge_idxを復号する。
UMVEモードにおいては、UMVE処理部3065は、base_candidate_idx、distance_idxおよびdirection_idxを復号する。
なお、上記では、スキップモードである場合及びマージモードである場合にUMVEモードを用いる構成例(マージモードの一モードとしてUMVEモードを用いる例)を説明しているが、この構成に限定されない。例えば、マージモード以外の場合、つまり、AMVPモードの一モードとして、UMVEモードを用いる構成でもよい。
上述の予測モードの選択処理は、図11に示すシンタックスとして示すことができる。
(UMVE予測における差分ベクトルmvdLXの導出方向の例:方向数を拡張)
(導出方向数が8方向の例)
上述の構成では、動画像復号装置31によるUMVEモードにおける差分ベクトルmvdLXの導出方向が水平、垂直方向の4方向の例について説明した。
(導出方向数が8方向の例)
上述の構成では、動画像復号装置31によるUMVEモードにおける差分ベクトルmvdLXの導出方向が水平、垂直方向の4方向の例について説明した。
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの導出を8方向について行う。導出方向を示すdir_tableの要素数を変更することで、導出方向数を変更することが可能となる。上記構成によれば候補点を増やすことで符号化効率を向上させることができる。
以下、UMVEモードで用いる差分ベクトルの候補点の方向が水平垂直の4方向に限定されず、斜め方向を用いる例を説明する。以下、8方向、12方向、16方向の例を説明し、次いで6方向の例を説明する。
図12の(a)から(d)は、本例に係るUMVE処理部3065による差分ベクトルmvdLXの導出方向の一例を示す図である。図12の(a)から(d)に示すように、UMVE処理部3065は上下左右の4方向(図中の候補点)に加え、上下左右間の斜め4方向(図中の追加候補点)も候補とする。
また、図13は、導出方向数が8方向の構成における方向情報direction_idxの一例を示す図である。図13に示すように本例のdirection_idxは0〜7の値をとり、バイナリ表現(binalization)で、″000″、″001″、″010″、″011″、″100″、″101″、″110″、″111″と表される。0〜7の値のそれぞれは、x軸に対して正の方向、負の方向、移動変量なし、移動変量なし、正の方向、負の方向、負の方向、正の方向に対応している。また、y軸に対して、移動変量なし、移動変量なし、正の方向、負の方向、正の方向、負の方向、正の方向、負の方向に対応している。
(導出方向数が8方向であり候補点が矩形形状上に位置する例)
差分ベクトルmvdLXの導出方向数が8方向であり、候補点が矩形形状上に位置する例について説明する。図12の(b)は、差分ベクトルmvdLXの候補点が矩形形状上に位置する一例を示す図である。
差分ベクトルmvdLXの導出方向数が8方向であり、候補点が矩形形状上に位置する例について説明する。図12の(b)は、差分ベクトルmvdLXの候補点が矩形形状上に位置する一例を示す図である。
UMVE処理部3065は、選択した予測ベクトル候補を示すbase_candidate_idx、当該探索において決定した差分ベクトルmvdLXを示す長さ情報distance_idxおよび方向情報direction_idxから動きベクトルを導出する。
ここで、本例においては、差分ベクトルmvdLXの長さは以下のdist_table[]からdistance_idxを用いて導出する。
dist_table[] = {1, 2, 4, 8, 16, 32}
また、差分ベクトルmvdLXの方向とベース距離とは以下のdir_table_x[]およびdir_table_y[]からdirection_idxを用いて導出する。
また、差分ベクトルmvdLXの方向とベース距離とは以下のdir_table_x[]およびdir_table_y[]からdirection_idxを用いて導出する。
dir_table_x[] = {1, -1, 0, 0, 1, -1, -1, 1}
dir_table_y[] = {0, 0, 1, -1, 1, -1, 1, -1}
ここでベース距離とは、基礎となる距離のことであり、長さ変数dtや精度baseMvPrecShiftの修正のより最終的な距離が決定される。
dir_table_y[] = {0, 0, 1, -1, 1, -1, 1, -1}
ここでベース距離とは、基礎となる距離のことであり、長さ変数dtや精度baseMvPrecShiftの修正のより最終的な距離が決定される。
候補点が矩形形状上に位置する場合、上下左右方向の差分値(1, 0), (-1, 0), (0, 1), (0, -1)の成分毎の絶対値1に対して、斜め方向の差分値(1, 1), (-1, -1), (-1, 1), (1, -1)の成分毎の絶対値が1と等しい。
なお、上記のdist_table[]、dir_table_x[]およびdir_table_y[]は、動画像符号化装置11のUMVE処理部1125および動画像復号装置31のUMVE処理部3065が共通して所有するデータである。
動画像復号装置31のUMVE処理部3065は、base_candidate_idx、distance_idxおよびdirection_idxを復号する。
UMVE処理部3065は、base_candidate_idxが示すマージ候補(例えば隣接ブロック)の動きベクトルを予測ベクトルmvpLXとして導出する。そしてこの予測ベクトルをUMVEの候補ベクトルの中心ベクトルとして設定する。
UMVE処理部3065が行う当該中心ベクトルcMvLの設定は以下の式で表すことができる。
cMvLX[0] = mvLX[0] of mergeCandList[base_candidate_idx]
cMvLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、cMvLX[0]は中心ベクトルのx方向の成分であり、cMvLX[1]は中心ベクトルのy方向の成分である。
cMvLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、cMvLX[0]は中心ベクトルのx方向の成分であり、cMvLX[1]は中心ベクトルのy方向の成分である。
また、UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さdtを導出する。差分ベクトルmvdLXの長さ変数dtは以下の式で導出することができる。
dt = dist_table[distance_idx] << baseMvPrecShift
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出することができる。
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出することができる。
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
また、UMVE処理部3065は、設定した中心ベクトルと差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。
dy = dir_table_y[direction_idx] * dt
また、UMVE処理部3065は、設定した中心ベクトルと差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
ここで、mvLX[0]は動きベクトルのx方向の成分であり、mvLX[1]は動きベクトルのy方向の成分である。
mvLX[1] = cMvLX[1] + dy
ここで、mvLX[0]は動きベクトルのx方向の成分であり、mvLX[1]は動きベクトルのy方向の成分である。
なお、baseMvPrecShiftによるシフト処理は、以上の例に限定されない。例えば、以下の処理で行っても同値である(以下同様)。
dt = dist_table[distance_idx]
dx = dir_table_x[direction_idx] * dt<< baseMvPrecShift
dy = dir_table_y[direction_idx] * dt<< baseMvPrecShift
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
また、以下の例でもよい。
dx = dir_table_x[direction_idx] * dt<< baseMvPrecShift
dy = dir_table_y[direction_idx] * dt<< baseMvPrecShift
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
また、以下の例でもよい。
dt = dist_table[distance_idx]
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
mvLX[0] = cMvLX[0] + dx<< baseMvPrecShift
mvLX[1] = cMvLX[1] + dy<< baseMvPrecShift
(導出方向数が8方向であり候補点が菱形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が8方向であり、候補点が菱形形状上に位置する例について説明する。図12の(c)は、差分ベクトルmvdLXの候補点が菱形形状上に位置する一例を示す図である。
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
mvLX[0] = cMvLX[0] + dx<< baseMvPrecShift
mvLX[1] = cMvLX[1] + dy<< baseMvPrecShift
(導出方向数が8方向であり候補点が菱形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が8方向であり、候補点が菱形形状上に位置する例について説明する。図12の(c)は、差分ベクトルmvdLXの候補点が菱形形状上に位置する一例を示す図である。
本例においては、UMVE処理部3065は、差分ベクトルmvdLXの長さ変数dtをdist_table[]を用いて導出する。
dt = dist_table[distance_idx]
dist_table[] = {1, 2, 4, 8, 16, 32}
また、direction_idxが示す差分ベクトルmvdLXの方向を、dir_table_x[]およびdir_table_y[]からdirection_idxを用いて導出(dir_table_x[direction_idx]、dir_table_y[direction_idx])する。
dist_table[] = {1, 2, 4, 8, 16, 32}
また、direction_idxが示す差分ベクトルmvdLXの方向を、dir_table_x[]およびdir_table_y[]からdirection_idxを用いて導出(dir_table_x[direction_idx]、dir_table_y[direction_idx])する。
dir_table_x[] = {8, -8, 0, 0, 4, -4, -4, 4}
dir_table_y[] = {0, 0, 8, -8, 4, -4, 4, -4}
候補点が菱形形状上に位置する場合、上下左右方向の差分値(8, 0), (-8, 0), (0, 8), (0, -8)の成分毎の絶対値8に対して、斜め方向の差分値(4, 4), (-4, -4), (-4, 4), (4, -4)の成分毎の絶対値が1/2だけ小さい(ここでは1/2を用いているがこの値に限定されない)。
dir_table_y[] = {0, 0, 8, -8, 4, -4, 4, -4}
候補点が菱形形状上に位置する場合、上下左右方向の差分値(8, 0), (-8, 0), (0, 8), (0, -8)の成分毎の絶対値8に対して、斜め方向の差分値(4, 4), (-4, -4), (-4, 4), (4, -4)の成分毎の絶対値が1/2だけ小さい(ここでは1/2を用いているがこの値に限定されない)。
動画像復号装置31のUMVE処理部3065は、base_candidate_idx、distance_idxおよびdirection_idxを復号する。
UMVE処理部3065は、base_candidate_idxが示すマージ候補の動きベクトルを予測ベクトルmvpLXとして導出する。そしてこの予測ベクトルを探索の中心ベクトルとして設定する。
UMVE処理部3065が行う当該中心ベクトルcMvLXの設定は以下の式で表すことができる。
cMvLX[0] = mvLX[0] of mergeCandList[base_candidate_idx]
cMvLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、cMvLX[0]は中心ベクトルのx方向の成分であり、cMvLX[1]は中心ベクトルのy方向の成分である。
cMvLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、cMvLX[0]は中心ベクトルのx方向の成分であり、cMvLX[1]は中心ベクトルのy方向の成分である。
また、UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さ変数dtを導出する。
dt = dist_table[distance_idx]
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXの方向と距離と(x成分dxおよびy成分dy)を導出する。dir_table_x[]、dir_table_y[]の精度がbaseMvPrecShiftの場合、差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出することができる。
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXの方向と距離と(x成分dxおよびy成分dy)を導出する。dir_table_x[]、dir_table_y[]の精度がbaseMvPrecShiftの場合、差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出することができる。
dx = (dir_table_x[direction_idx] * dt >> baseMvPrecShift)
dy = (dir_table_y[direction_idx] * dt >> baseMvPrecShift)
例えば、baseMvPrecShift = 3。なお、以降baseMvPrecShift=3の例を説明する場合も、テーブルの精度baseMvPrecShiftは3に限定されない(本明細書の以降の例も同様)
また、UMVE処理部3065は、設定した中心ベクトルと差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。
dy = (dir_table_y[direction_idx] * dt >> baseMvPrecShift)
例えば、baseMvPrecShift = 3。なお、以降baseMvPrecShift=3の例を説明する場合も、テーブルの精度baseMvPrecShiftは3に限定されない(本明細書の以降の例も同様)
また、UMVE処理部3065は、設定した中心ベクトルと差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
ここで、mvLX[0]は動きベクトルのx方向の成分であり、mvLX[1]は動きベクトルのy方向の成分である。
mvLX[1] = cMvLX[1] + dy
ここで、mvLX[0]は動きベクトルのx方向の成分であり、mvLX[1]は動きベクトルのy方向の成分である。
(導出方向数が8方向であり候補点が円形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が8方向であり、候補点が円形形状上に位置する例について説明する。図12の(d)は、差分ベクトルmvdLXの候補点が円形形状上に位置する一例を示す図である。
次に、差分ベクトルmvdLXの導出方向数が8方向であり、候補点が円形形状上に位置する例について説明する。図12の(d)は、差分ベクトルmvdLXの候補点が円形形状上に位置する一例を示す図である。
本例においては、差分ベクトルmvdLXの長さ変数dtを導出に用いるテーブルとして、以下のdist_table[]を用いてもよい。
dist_table[] = {1, 2, 4, 8, 16, 32}
また、UMVE処理部3065は、差分ベクトルmvdLXの方向及びベース距離を、以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
また、UMVE処理部3065は、差分ベクトルmvdLXの方向及びベース距離を、以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 8, -8, 0, 0, 6, -6, -6, 6 }
dir_table_y[] = { 0, 0, 8, -8, 6, -6, 6, -6 }
候補点が円形形状上に位置する場合、上下左右方向の差分値(8, 0), (-8, 0), (0, 8), (0, -8)の成分毎の絶対値8に対して、斜め方向の差分値(6, 6), (-6, -6), (-6, 6), (6, -6)の成分毎の絶対値が2の平方根(約1.414)に近似した値1.5だけ小さい(ここでは2の平方根の近似値として1.5を用いているがこの値に限定されない)。
dir_table_y[] = { 0, 0, 8, -8, 6, -6, 6, -6 }
候補点が円形形状上に位置する場合、上下左右方向の差分値(8, 0), (-8, 0), (0, 8), (0, -8)の成分毎の絶対値8に対して、斜め方向の差分値(6, 6), (-6, -6), (-6, 6), (6, -6)の成分毎の絶対値が2の平方根(約1.414)に近似した値1.5だけ小さい(ここでは2の平方根の近似値として1.5を用いているがこの値に限定されない)。
動画像復号装置31のUMVE処理部3065は、base_candidate_idx、distance_idxおよびdirection_idxを復号する。
UMVE処理部3065は、base_candidate_idxが示すマージ候補のの動きベクトルを予測ベクトルmvpLXとして導出する。そしてこの予測ベクトルを探索の中心ベクトルとして設定する。
UMVE処理部3065が行う当該中心ベクトルcMvLXの設定は以下の式で表すことができる。
cMvLX[0] = mvLX[0] of mergeCandList[base_candidate_idx]
cMvLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、cMvLX[0]は中心ベクトルのx方向の成分であり、cMvLX[1]は中心ベクトルのy方向の成分である。
cMvLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、cMvLX[0]は中心ベクトルのx方向の成分であり、cMvLX[1]は中心ベクトルのy方向の成分である。
また、UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さ変数dtを導出する。差分ベクトルmvdLXの長さ変数dtは以下の式で導出することができる。
dt = dist_table[distance_idx]
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。dir_table_x[]、dir_table_y[]の精度baseMvPrecShiftが1/8の場合、差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出することができる。
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。dir_table_x[]、dir_table_y[]の精度baseMvPrecShiftが1/8の場合、差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出することができる。
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
また、UMVE処理部3065は、設定した中心ベクトルと差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。動きベクトル以下の式で導出することができる。
dy = (dir_table_y[direction_idx] * dt >> 3)
また、UMVE処理部3065は、設定した中心ベクトルと差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。動きベクトル以下の式で導出することができる。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
ここで、mvLX[0]は動きベクトルのx方向の成分であり、mvLX[1]は動きベクトルのy方向の成分である。
mvLX[1] = cMvLX[1] + dy
ここで、mvLX[0]は動きベクトルのx方向の成分であり、mvLX[1]は動きベクトルのy方向の成分である。
以上、菱形形状や円形形状のように、上下左右方向の差分値の絶対値に対して、斜め方向の差分値の絶対値が小さい方向のベース距離を用いることにより、斜め方向への動きがより正確に表現できるようになり、真のベクトルに近い動きベクトルを選択することができる。そのため符号化効率が向上する。
(導出方向数が12方向の例)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの導出を12方向についておこなう。
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの導出を12方向についておこなう。
図14は、導出方向数が12方向の構成における方向情報direction_idxの一例を示す図である。図14に示すように本例のdirection_idxは0〜11の値をとり、バイナリ表現で、″000″、″001″、″010″、″011″、″1000″、″1001″、″1010″、″1011″、″1100″、″1101″、″1110″、″1111″の値のそれぞれは、x軸に対して正の方向、負の方向、移動変量なし、移動変量なし、正の方向、正の方向、負の方向、負の方向、負の方向、負の方向、正の方向、正の方向に対応している。
また、図14に示すように本例のdirection_idxは0〜11の値をとり、バイナリ表現で、″000″、″001″、″010″、″011″、″1000″、″1001″、″1010″、″1011″、″1100″、″1101″、″1110″、″1111″の値のそれぞれは、y軸に対して、移動変量なし、移動変量なし、正の方向、負の方向、正の方向、正の方向、負の方向、負の方向、正の方向、正の方向、負の方向、負の方向に対応している。
(導出方向数が12方向であり候補点が矩形形状上に位置する例)
差分ベクトルmvdLXの導出方向数が12方向であり、候補点が矩形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
差分ベクトルmvdLXの導出方向数が12方向であり、候補点が矩形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 8, -8, 0, 0, 8, 4, -8, -4, -4, -8, 4, 8 }
dir_table_y[] = { 0, 0, 8, -8, 4, 8, -4, -8, 8, 4, -8, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が12方向であり候補点が菱形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が12方向であり、候補点が菱形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離は以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = { 0, 0, 8, -8, 4, 8, -4, -8, 8, 4, -8, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が12方向であり候補点が菱形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が12方向であり、候補点が菱形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離は以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 8, -8, 0, 0, 4, 2, -4, -2, -2, -4, 2, 4 }
dir_table_y[] = { 0, 0, 8, -8, 2, 4, -2, -4, 4, 2, -4, -2 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が12方向であり候補点が円形形状上に位置する例)
次に、差分ベクトルmvdLXの候補方向数が12方向であり、候補点が円形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離は以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = { 0, 0, 8, -8, 2, 4, -2, -4, 4, 2, -4, -2 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が12方向であり候補点が円形形状上に位置する例)
次に、差分ベクトルmvdLXの候補方向数が12方向であり、候補点が円形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離は以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 8, -8, 0, 0, 6, 3, -6, -3, -3, -6, 3, 6 }
dir_table_y[] = { 0, 0, 8, -8, 3, 6, -3, -6, 6, 3, -6, -3 }
(導出方向数が16方向の例)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの導出を16方向について行う。
dir_table_y[] = { 0, 0, 8, -8, 3, 6, -3, -6, 6, 3, -6, -3 }
(導出方向数が16方向の例)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの導出を16方向について行う。
図15は、導出方向数が16方向の構成における方向情報direction_idxの一例を示す図である。図15に示すように本例のdirection_idxは0〜15の値をとり、バイナリ表現で、″0000″、″0001″、″0010″、″0011″、″0100″、″0101″、″0110″、″0111″、″1000″、″1001″、″1010″、″1011″、″1100″、″1101″、″1110″、″1111″の値のそれぞれは、x軸に対して正の方向、負の方向、移動変量なし、移動変量なし、正の方向、負の方向、負の方向、正の方向、正の方向、正の方向、負の方向、負の方向、負の方向、負の方向、正の方向、正の方向に対応している。
また、図15に示すように本例のdirection_idxは0〜15の値をとり、バイナリ表現で、″0000″、″0001″、″0010″、″0011″、″0100″、″0101″、″0110″、″0111″、″1000″、″1001″、″1010″、″1011″、″1100″、″1101″、″1110″、″1111″の値のそれぞれは、y軸に対して、移動変量なし、移動変量なし、正の方向、負の方向、正の方向、負の方向、正の方向、負の方向、正の方向、正の方向、負の方向、負の方向、正の方向、正の方向、負の方向、負の方向に対応している。
(導出方向数が16方向であり候補点が矩形形状上に位置する例)
差分ベクトルmvdLXの導出方向数が16方向であり、候補点が矩形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
差分ベクトルmvdLXの導出方向数が16方向であり、候補点が矩形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = {8, -8, 0, 0, 8, -8, -8, 8, 8, 4, -8, -4, -4, -8, 4, 8 }
dir_table_y[] = {0, 0, 8, -8, 8, -8, 8, -8, 4, 8, -4, -8, 8, 4, -8, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が16方向であり候補点が菱形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が16方向であり、候補点が菱形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = {0, 0, 8, -8, 8, -8, 8, -8, 4, 8, -4, -8, 8, 4, -8, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が16方向であり候補点が菱形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が16方向であり、候補点が菱形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = {8, -8, 0, 0, 4, -4, -4, 4, 6, 2, -6, -2, -2, -6, 2, 6 }
dir_table_y[] = {0, 0, 8, -8, 4, -4, 4, -4, 2, 6, -2, -6, 6, 2, -6, -2 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が16方向であり候補点が円形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が16方向であり、候補点が円形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = {0, 0, 8, -8, 4, -4, 4, -4, 2, 6, -2, -6, 6, 2, -6, -2 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が16方向であり候補点が円形形状上に位置する例)
次に、差分ベクトルmvdLXの導出方向数が16方向であり、候補点が円形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = {8, -8, 0, 0, 6, -6, -6, 6, 7, 3, -7, -3, -3, -7, 3, 7 }
dir_table_y[] = {0, 0, 8, -8, 6, -6, 6, -6, 3, 7, -3, -7, 7, 3, -7, -3 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向の例1)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの探索を6方向について行う。図16は、本例に係るUMVE処理部3065がUMVEモードにおいて候補とする差分ベクトルmvdLXの方向の一例を示す図である。図16に示すように、UMVE処理部3065は左右の2方向に加え、斜め4方向も候補とする。
dir_table_y[] = {0, 0, 8, -8, 6, -6, 6, -6, 3, 7, -3, -7, 7, 3, -7, -3 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向の例1)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの探索を6方向について行う。図16は、本例に係るUMVE処理部3065がUMVEモードにおいて候補とする差分ベクトルmvdLXの方向の一例を示す図である。図16に示すように、UMVE処理部3065は左右の2方向に加え、斜め4方向も候補とする。
図17は、本例の構成におけるdirection_idxの一例を示す図である。図17に示すように本例のdirection_idxは0〜5の値をとり、バイナリ表現で、″00″、″01″、″100″、″101″、″110″、″111″の値のそれぞれは、x軸に対して正の方向、負の方向、正の方向、負の方向、負の方向、正の方向に対応している。また、図17に示すように本例のdirection_idxは0〜5の値をとり、バイナリ表現で″00″、″01″、″100″、″101″、″110″、″111″の値のそれぞれは、y軸に対して、移動変量なし、移動変量なし、正の方向、負の方向、正の方向、負の方向に対応している。
以下、UMVEモードで用いる差分ベクトルの候補点の方向が水平垂直の4方向に限定されず、斜め方向を用いる例を説明する。以下、6方向、8方向、12方向、16方向の例を説明する。
(導出方向数が6方向であり、候補点が矩形形状上に位置する例1)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が矩形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する(dir_table_x[direction_idx]、dir_table_y[direction_idx])。
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が矩形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する(dir_table_x[direction_idx]、dir_table_y[direction_idx])。
dir_table_x[] = { 8, -8, 4, -4, -4, 4 }
dir_table_y[] = { 0, 0, 8, -8, 8, -8 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が菱形形状上に位置する例1)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が菱形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = { 0, 0, 8, -8, 8, -8 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が菱形形状上に位置する例1)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が菱形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 8, -8, 2, -2, -2, 2 }
dir_table_y[] = { 0, 0, 4, -4, 4, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が円形形状上に位置する例1)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が円形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = { 0, 0, 4, -4, 4, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が円形形状上に位置する例1)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が円形形状上に位置する例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 8, -8, 3, -3, -3, 3 }
dir_table_y[] = { 0, 0, 6, -6, 6, -6 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向の例2)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの探索を6方向について行う他の例について説明する。図18は、本例に係るUMVE処理部3065がUMVEモードにおいて候補とする差分ベクトルmvdLXの方向の一例を示す図である。図18に示すように、UMVE処理部3065は上下の2方向に加え、斜め4方向も候補とする。
dir_table_y[] = { 0, 0, 6, -6, 6, -6 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向の例2)
本例においては、UMVE処理部3065は、UMVEモードにおける差分ベクトルmvdLXの探索を6方向について行う他の例について説明する。図18は、本例に係るUMVE処理部3065がUMVEモードにおいて候補とする差分ベクトルmvdLXの方向の一例を示す図である。図18に示すように、UMVE処理部3065は上下の2方向に加え、斜め4方向も候補とする。
図19は、本例の構成における方向情報direction_idxの一例を示す図である。図19に示すように本例のdirection_idxは0〜5の値をとり、バイナリ表現で″00″、″01″、″100″、″101″、″110″、″111″の値のそれぞれは、x軸に対して移動変量なし、移動変量なし、正の方向、負の方向、負の方向、正の方向に対応している。また、図19に示すように本例のdirection_idxは0〜5の値をとり、バイナリ表現で″00″、″01″、″100″、″101″、″110″、″111″の値のそれぞれは、y軸に対して、正の方向、負の方向、正の方向、負の方向、正の方向、負の方向に対応している。
(導出方向数が6方向であり、候補点が矩形形状上に位置する例2)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が矩形形状上に位置する他の例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が矩形形状上に位置する他の例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 0, 0, 8, -8, -8, 8 }
dir_table_y[] = { 8, -8, 4, -4, 4, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が菱形形状上に位置する例2)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が菱形形状上に位置する他の例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = { 8, -8, 4, -4, 4, -4 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が菱形形状上に位置する例2)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が菱形形状上に位置する他の例について説明する。本例においては、UMVE処理部3065は、差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 0, 0, 4, -4, -4, 4 }
dir_table_y[] = { 8, -8, 2, -2, 2, -2 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が円形形状上に位置する例2)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が円形形状上に位置する他の例について説明する。本例においては、UMVE処理部3065は、direction_idxが示す差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_y[] = { 8, -8, 2, -2, 2, -2 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
(導出方向数が6方向であり、候補点が円形形状上に位置する例2)
差分ベクトルmvdLXの導出方向数が6方向であり、候補点が円形形状上に位置する他の例について説明する。本例においては、UMVE処理部3065は、direction_idxが示す差分ベクトルmvdLXの方向及び距離を以下のdir_table_x[]およびdir_table_y[]を用いて導出する。
dir_table_x[] = { 0, 0, 6, -6, -6, 6 }
dir_table_y[] = { 8, -8, 3, -3, 3, -3 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
なお、上述の例において示した値は一例であり、上述の値に限定されない。
dir_table_y[] = { 8, -8, 3, -3, 3, -3 }
dx = (dir_table_x[direction_idx] * dt >> 3)
dy = (dir_table_y[direction_idx] * dt >> 3)
なお、上述の例において示した値は一例であり、上述の値に限定されない。
上記に示した例の構成によれば、UMVE処理部3065において、方向情報は、少なくとも6つの方向の何れかを示す。従って、少なくとも4つの方向の何れかを示す構成に比べて、画像符号化装置で探索する差分ベクトルの候補点を増やすことができる。画像符号化装置で探索する差分ベクトルの候補点が水平垂直のみの4方向に限定される場合、本来の物体の動きベクトル(真のベクトル、トゥルーベクトル)とは異なる動きが選択されることが多い。トゥルーベクトルとは異なっても、対象ブロックでは予測残差が少なくなる動きが選択される場合がある。このような場合、後続のブロックでは、本来の動きから外れるため、予測残差が逆に大きくなったり、大きな差分ベクトルを送る必要が生じる。上記構成では、6方向、8方向、12方向、16方向など、斜め方向が加わることで、本来の物体の動きに近いベクトルを導出ことができる。そのため、物体の動きベクトルをより正確に表現できるようになり、符号化効率を向上させることができる。
既に説明したように、斜め方向のベース距離を、水平垂直方向に比べ小さくすることにより、物体の動きベクトルをより正確に表現できるため、符号化効率を向上させることができる。
(UMVE処理における予測方向の例1)
上述したように、UMVE処理において、UMVE処理部3065は予測方向をインター予測識別子(inter_pred_idc)が示す値に応じた方向(参照ピクチャの種類および数)とする。
上述したように、UMVE処理において、UMVE処理部3065は予測方向をインター予測識別子(inter_pred_idc)が示す値に応じた方向(参照ピクチャの種類および数)とする。
例えば、UMVE処理部3065は対象ブロックのインター予測識別子が示す値がマージ候補リストから選択されたブロックにおける予測方向と異なる方向を示す場合は、以下のように予測方向を決定する。UMVE処理部3065はマージ候補リストから選択されたブロックに設定されている予測方向とは異なるインター予測識別子が示す予測方向にて対象ブロックのUMVEの処理を行う。詳細には、対象ブロックのインター予測識別子(inter_pred_idc)が示す値が0(バイナリ表現で"00")(L0)であれば、UMVE処理部3065は予測方向をL1とする。また、対象ブロックのインター予測識別子が示す値が1(バイナリ表現で"01")(L1)であれば、UMVE処理部3065は予測方向を双方向予測とする。また、対象ブロックのインター予測識別子が示す値が2(バイナリ表現で"1")(双予測、PRED_BI)であれば、UMVE処理部3065は予測方向をL0とする。
(UMVE処理における予測方向の例2)
次に、UMVE処理における予測方向の他の例について説明する。本例においては、UMVE処理部3065は、対象ブロックの予測方向を、UMVE予測の動きベクトルにおいて中心ベクトルに設定される、マージ候補リストから選択されたマージ候補mergeCandList[base_candidate_idx]の予測方向と同じ方向とする。
次に、UMVE処理における予測方向の他の例について説明する。本例においては、UMVE処理部3065は、対象ブロックの予測方向を、UMVE予測の動きベクトルにおいて中心ベクトルに設定される、マージ候補リストから選択されたマージ候補mergeCandList[base_candidate_idx]の予測方向と同じ方向とする。
換言すると、UMVE処理部3065は、マージ候補リストに含まれているブロックのインター予測識別子(予測インデックス)であって、第1の単方向予測、第2の単方向予測、及び、双方向予測の何れかを示す予測インデックスを、UMVE予測の動きベクトルを導出する場合に参照する動き候補の予測インデックスに設定する。
なお、対象画像がBピクチャである場合のUMVE処理においては、マージ候補リストから選択されたブロックに設定されいる予測方向に関わらず、予測方向を双方向予測としてもよい。
上記の構成によれば、UMVE処理部3065は、マージ候補のインター予測識別子をUMVE予測のインター予測識別子として設定する。あるいは、予測方向を双方向予測に設定する。従って、UMVE処理部1125は、UMVE処理される対象ブロックのインター予測識別子を符号化する必要がなくなり、符号化効率を改善させることができる。
また、上記の構成によれば、UMVE処理部1125は各予測方向について差分ベクトルの候補数だけ探索する必要があるが、予測方向を特定することで差分ベクトルの候補数を減らし、差分ベクトルの探索数を減らすことができる。よって、動画像符号化装置11における計算量を軽減することができる。
(UMVE処理における予測方向の例3)
次に、UMVE処理における予測方向のさらに他の例について説明する。本例においては、以下の条件を満たす場合、UMVE処理部3065は、対象ブロックの予測方向をマージ候補リストから選択されたブロックに設定されている予測方向と同じ方向とする。
次に、UMVE処理における予測方向のさらに他の例について説明する。本例においては、以下の条件を満たす場合、UMVE処理部3065は、対象ブロックの予測方向をマージ候補リストから選択されたブロックに設定されている予測方向と同じ方向とする。
条件:UMVEモードにおけるUMVE処理部3065による差分ベクトルmvdLXの導出方向が上下左右の4方向である。
すなわち、差分ベクトルmvdLXの導出方向が当該4方向の場合、UMVE処理部3065は、対象ブロックの予測方向をマージ候補リストから選択されたブロックに設定される予測方向と同一の予測方向に設定する。よって、差分ベクトルmvdLXの導出方向が当該4方向の場合、UMVE処理部3065はインター予測識別子を入力として用いない。
そのため、本例においては、動画像復号装置31はインター予測識別子(inter_pred_idc)よりも先にdirection_idを復号する必要があり、動画像符号化装置11においては、インター予測識別子(inter_pred_idc)よりも先にdirection_idxが符号化される。
すなわち、UMVE処理部3065を用いる構成のエントロピー復号部301は、インター予測識別子(inter_pred_idc)よりも先にdirection_idxを復号する。
図20はUMVE処理部3065(エントロピー復号部301)における復号処理の流れを示すシンタックスの一例を示す図である。図20の(a)は、本例と比較するための復号処理の流れを示すシンタックスの一例を示す図である。図20の(b)は、本例に係る復号処理の流れを示すシンタックスの一例を示す図である。図20の(b)に示すように、エントロピー復号部301はインター予測識別子(inter_pred_idc)よりも先にdirection_idxを復号する。さらに、以下の条件1および条件2の両方が満たされた場合、エントロピー復号部301はインター予測識別子(inter_pred_idc)を復号する。
条件1:identical_list0_list1_flag != 1
参照ピクチャリストL0と参照ピクチャリストL1とが同一であるかを示すフラグ(identical_list0_list1_flag)が1ではない、すなわち、参照ピクチャリストL0と参照ピクチャリストL1とが同一でない。
参照ピクチャリストL0と参照ピクチャリストL1とが同一であるかを示すフラグ(identical_list0_list1_flag)が1ではない、すなわち、参照ピクチャリストL0と参照ピクチャリストL1とが同一でない。
条件2:direction_idx >= 4
direction_idxが示し得る方向数が4以上である。
direction_idxが示し得る方向数が4以上である。
換言すると、上記の条件1および条件2の両方が満たされない場合、UMVE処理部1125はインター予測識別子(inter_pred_idc)を符号化せず、UMVE処理部3065はンター予測識別子(inter_pred_idc)を復号しない。
上記の構成によれば、UMVE処理部1125で符号化されるインター予測識別子の符号化量を削減することができる。そのため、動画像符号化装置11の符号化効率を改善させることができる。
(動きベクトルmvLX[]の導出例1:差分ベクトルmvdLXの探索距離候補に小数画素位置が含まれている例)
本例においては、差分ベクトルmvdLXの探索距離候補として小数画素位置が含まれている。特に、探索距離候補として、1/2画素位置が含まれていてもよい。また、当該探索距離候補は1画素より大きい長さであって、かつ、小数画素精度であってもよい。
本例においては、差分ベクトルmvdLXの探索距離候補として小数画素位置が含まれている。特に、探索距離候補として、1/2画素位置が含まれていてもよい。また、当該探索距離候補は1画素より大きい長さであって、かつ、小数画素精度であってもよい。
図21は、本例に係るUMVE処理部3065による動きベクトルmvLX[]の導出の一例を示す図である。
UMVE処理部3065はdistance_idxおよびdirection_idxを復号する。
ここで、図21に示すように、本例においては、差分ベクトルmvdLXの長さは以下のdist_table[]からdistance_idxを用いて導出される(dist_table[distance_idx])。
dist_table[] = { 1, 2, 3, 4, 6, 10, 14, 18, 22 }
上記dist_table[]においては、差分ベクトルmvdLXの精度が1/4ペルの場合、4の倍数以外(例えば4の倍数に1、2、3を加えた値)の探索距離候補は、小数画素位置となる。
上記dist_table[]においては、差分ベクトルmvdLXの精度が1/4ペルの場合、4の倍数以外(例えば4の倍数に1、2、3を加えた値)の探索距離候補は、小数画素位置となる。
また、UMVE処理部3065は差分ベクトルmvdLXの方向を以下のdir_table_x[]およびdir_table_y[]から導出する。
dir_table_x[] = {0, 0, 1, -1}
dir_table_y[] = {1, -1, 0, 0}
UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さ変数dtを導出する。差分ベクトルmvdLXの長さ変数dtは以下の式で導出する。
dir_table_y[] = {1, -1, 0, 0}
UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さ変数dtを導出する。差分ベクトルmvdLXの長さ変数dtは以下の式で導出する。
dt = dist_table[distance_idx]
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出する。
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。差分ベクトルmvdLXのx成分dxおよびy成分dyは以下の式で導出する。
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
UMVE処理部3065は、設定した中心ベクトルcMvLX[]と差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。動きベクトル以下の式で導出する。
dy = dir_table_y[direction_idx] * dt
UMVE処理部3065は、設定した中心ベクトルcMvLX[]と差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。動きベクトル以下の式で導出する。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例2:予測ベクトルのラウンド処理例1)
本例においては、中心ベクトルcMvLX[]を整数画素位置にラウンドする。また、mvdLXのx成分dxおよびy成分dyを小数画素位置とする。そのため、中心ベクトルcMvLX[]と差分ベクトルmvdLXとを加算して導出された動きベクトルmvLX[]は、小数画素位置になる。
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例2:予測ベクトルのラウンド処理例1)
本例においては、中心ベクトルcMvLX[]を整数画素位置にラウンドする。また、mvdLXのx成分dxおよびy成分dyを小数画素位置とする。そのため、中心ベクトルcMvLX[]と差分ベクトルmvdLXとを加算して導出された動きベクトルmvLX[]は、小数画素位置になる。
図22は、本例に係るUMVE処理部3065による動きベクトルmvLX[]の導出の一例を示す図である。
UMVE処理部3065はdistance_idxおよびdirection_idxを復号し、図22に示すように動きベクトルmvLX[]を導出する。
図22に示すように、UMVE処理部3065における、差分ベクトルmvdLXの長さ変数dt、差分ベクトルmvdLXのx成分dxおよびy成分dyの導出については、上記(動きベクトルmvLX[]の導出例1)と同様であるため、ここで説明は繰り返さない。
図22に示すように、distance_idx >= ROUND_START_POSである場合、UMVE処理部3065は、予測ベクトルpmv[]に対して、以下の式に示すラウンド処理を行い、中心ベクトルcMvLX[]を導出する。なお、ROUND_START_POSとは、ラウンド処理を行う距離インデックスdistance_idxを示す閾値である。例えば、distance_idx >= ROUND_START_POSの場合は、中心ベクトルを整数精度にする。例えばROUND_START_POS=4であってもよい。
cMvLX[0] = roundToInt (mvpLX[0])
cMvLX[1] = roundToInt (mvpLX[1])
ここで、中心ベクトルは、マージ候補から導出してもよい。
cMvLX[1] = roundToInt (mvpLX[1])
ここで、中心ベクトルは、マージ候補から導出してもよい。
mvpLX[0] = mvLX[0] of mergeCandList[base_candidate_idx]
mvpLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、roundToInt(a)はaのラウンド処理(丸め処理)、例えば1/mvPrec画素精度の場合には、roundToInt(a)=(a>>mvPrec)<<mvPrecを表す。1/4画素精度ではmvPrec=2、1/8画素精度ではmvPrec=3、1/16画素精度ではmvPrec=4など。
mvpLX[1] = mvLX[1] of mergeCandList[base_candidate_idx]
ここで、roundToInt(a)はaのラウンド処理(丸め処理)、例えば1/mvPrec画素精度の場合には、roundToInt(a)=(a>>mvPrec)<<mvPrecを表す。1/4画素精度ではmvPrec=2、1/8画素精度ではmvPrec=3、1/16画素精度ではmvPrec=4など。
UMVE処理部3065は、ラウンド処理した中心ベクトルcMvLX[]と差分ベクトルmvdLXのx成分dxおよびy成分dyとから動きベクトルmvLX[]を導出する。動きベクトルは以下の式で導出される。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例3:予測ベクトルのラウンド処理例2)
本例においては、中心ベクトルcMvLX[]のx方向の成分を整数画素位置にラウンドする。
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例3:予測ベクトルのラウンド処理例2)
本例においては、中心ベクトルcMvLX[]のx方向の成分を整数画素位置にラウンドする。
図23は、本例に係るUMVE処理部3065による動きベクトルmvLX[]の導出の一例を示す図である。
UMVE処理部3065はdistance_idxおよびdirection_idxを復号し、図23に示すように動きベクトルmvLX[]を導出する。
図23に示すように、UMVE処理部3065における、差分ベクトルmvdLXの長さ変数dt、差分ベクトルmvdLXのx成分dxおよびy成分dyの導出については、上記(動きベクトルmvLX[]の導出例1)と同様であるため、ここで説明は繰り返さない。
図23に示すように、distance_idx = ROUND_START_POSである場合、UMVE処理部3065は、予測ベクトルのx方向の成分pmvLX[0]に対して、以下の式に示すラウンド処理を行い、中心ベクトルcMvLX[]を導出する。
cMvLX[0] = roundToInt (mvpLX[0])
なお、x方向成分の代わりにy方向成分を修正してもよい。
なお、x方向成分の代わりにy方向成分を修正してもよい。
cMvLX[1] = roundToInt (mvpLX[1])
例えば、ROUND_START_POS=4であってもよい。
例えば、ROUND_START_POS=4であってもよい。
UMVE処理部3065は、差分ベクトルmvdLXのx成分dxおよびy成分dyとラウンド処理した中心ベクトルのx方向の成分cMvLX[0]およびラウンド処理をしていない中心ベクトルのy方向の成分cMvLX[1]とから動きベクトルmvLX[]を導出する。動きベクトルは以下の式で導出される。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例4:予測ベクトルのラウンド処理例3)
本例においては、例えば差分ベクトルmvdLXのy方向の成分だけを小数位置にし、中心ベクトルcMvLX[]のy方向の成分を整数画素位置にラウンドする。
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例4:予測ベクトルのラウンド処理例3)
本例においては、例えば差分ベクトルmvdLXのy方向の成分だけを小数位置にし、中心ベクトルcMvLX[]のy方向の成分を整数画素位置にラウンドする。
図24は、本例に係るUMVE処理部3065による動きベクトルmvLX[]の導出の一例を示す図である。
UMVE処理部3065はdistance_idxおよびdirection_idxを復号する。
ここで、図24に示すように、本例においては、差分ベクトルmvdLXのx成分およびy成分の長さは以下のdist_table_x[]およびdist_table_y[]からdistance_idxを用いてそれぞれ導出される(dist_table_x[distance_idx]、dist_table_y[distance_idx])。
dist_table_x[] = { 1, 2, 3, 4, 6, 8, 12, 16, 20 }
dist_table_y[] = { 1, 2, 3, 4, 6, 10, 14, 18, 22 }
上記dist_table[]においては、差分ベクトルmvdLXの精度が1/4ペルの場合、4の倍数以外(例えば4の倍数に1、2、3を加えた値)の探索距離候補は、小数画素位置となる。すなわち、dist_table_y[]は、小数画素位置となる探索距離候補を含む。
dist_table_y[] = { 1, 2, 3, 4, 6, 10, 14, 18, 22 }
上記dist_table[]においては、差分ベクトルmvdLXの精度が1/4ペルの場合、4の倍数以外(例えば4の倍数に1、2、3を加えた値)の探索距離候補は、小数画素位置となる。すなわち、dist_table_y[]は、小数画素位置となる探索距離候補を含む。
また、差分ベクトルmvdLXの方向は以下のdir_table_x[]およびdir_table_y[]からdirection_idxを用いて導出される(dir_table_x[direction_idx]、dir_table_y[direction_idx])。
dir_table_x[] = {0, 0, 1, -1}
dir_table_y[] = {1, -1, 0, 0}
UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さ変数dtを導出する。UMVE処理部3065は、差分ベクトルmvdLXのx成分の長さ変数dtxおよびy成分の長さ変数dtyを以下の式で導出する。
dir_table_y[] = {1, -1, 0, 0}
UMVE処理部3065は、distance_idxが示す値に応じて、差分ベクトルmvdLXの長さ変数dtを導出する。UMVE処理部3065は、差分ベクトルmvdLXのx成分の長さ変数dtxおよびy成分の長さ変数dtyを以下の式で導出する。
dtx = dist_table_x[distance_idx]
dty = dist_table_y[distance_idx]
また、UMVE処理部3065は、上記dtx、dtyおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。UMVE処理部3065は、差分ベクトルmvdLXのx成分dxおよびy成分dyを以下の式で導出する。
dty = dist_table_y[distance_idx]
また、UMVE処理部3065は、上記dtx、dtyおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。UMVE処理部3065は、差分ベクトルmvdLXのx成分dxおよびy成分dyを以下の式で導出する。
dx = dir_table_x[direction_idx] * dtx
dy = dir_table_y[direction_idx] * dty
なお、y方向成分の代わりにy方向成分を修正してもよい。
dy = dir_table_y[direction_idx] * dty
なお、y方向成分の代わりにy方向成分を修正してもよい。
cMvLX[0] = roundToInt (mvpLX[0])
図24に示すように、distance_idx >= ROUND_START_POSである場合、UMVE処理部3065は、予測ベクトルのy方向の成分pmvLX[1]に対して、以下の式に示すラウンド処理を行い、中心ベクトルcMvLX[1]を導出する。
図24に示すように、distance_idx >= ROUND_START_POSである場合、UMVE処理部3065は、予測ベクトルのy方向の成分pmvLX[1]に対して、以下の式に示すラウンド処理を行い、中心ベクトルcMvLX[1]を導出する。
cMvLX[1] = roundToInt (mvpLX[1])
UMVE処理部3065は、差分ベクトルmvdLXのx成分dxおよびy成分dyとラウンド処理をしてない中心ベクトルのx方向の成分cMvLX[0]およびラウンド処理した予測ベクトルのy方向の成分cMvLX[1]とから動きベクトルmvLx[]を導出する。動きベクトルは以下の式で導出される。
UMVE処理部3065は、差分ベクトルmvdLXのx成分dxおよびy成分dyとラウンド処理をしてない中心ベクトルのx方向の成分cMvLX[0]およびラウンド処理した予測ベクトルのy方向の成分cMvLX[1]とから動きベクトルmvLx[]を導出する。動きベクトルは以下の式で導出される。
mvLX[0] = cMvLX[0] + dx
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例4:予測ベクトルのラウンド処理例4)
本例においては、距離インデックスが所定の値ROUND_START_POS以上の値において、差分ベクトルの取り得る範囲を整数ベクトルに制限する。
mvLX[1] = cMvLX[1] + dy
(動きベクトルmvLX[]の導出例4:予測ベクトルのラウンド処理例4)
本例においては、距離インデックスが所定の値ROUND_START_POS以上の値において、差分ベクトルの取り得る範囲を整数ベクトルに制限する。
例えば、UMVE処理部3065は、中心ベクトル(cMvLX[0], cMvLX[1])に距離(dx, dy)を加えて得られる差分ベクトルを導出後に、direction_idx >= ROUND_START_POSであれば整数画素位置にラウンドし最終的な候補ベクトルを得る。direction_idx < ROUND_START_POSの場合にはラウンドを行わない。すなわち、以下のステップによって処理を行ってもよい。
dt = dist_table[distance_idx]
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
mvLX[0] = cMvLX[0] + (dx<< baseMvPrecShift)
mvLX[1] = cMvLX[1] + (dy<< baseMvPrecShift)
if (direction_idx >= ROUND_START_POS) {
cMvLX[0] = roundToInt (cMvLX[0])
cMvLX[1] = roundToInt (cMvLX[1])
}
これによって、距離がROUND_START_POS以上の場合において、整数位置に限定することにより、コンピュータグラフィクスやアニメなど整数画素変化が重要であるシーケンス等に対して好適な予測画像を得ることができ、符号化効率が向上する効果がある。また、整数画素であれば補間が不要になるため処理量も削減も可能である。
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
mvLX[0] = cMvLX[0] + (dx<< baseMvPrecShift)
mvLX[1] = cMvLX[1] + (dy<< baseMvPrecShift)
if (direction_idx >= ROUND_START_POS) {
cMvLX[0] = roundToInt (cMvLX[0])
cMvLX[1] = roundToInt (cMvLX[1])
}
これによって、距離がROUND_START_POS以上の場合において、整数位置に限定することにより、コンピュータグラフィクスやアニメなど整数画素変化が重要であるシーケンス等に対して好適な予測画像を得ることができ、符号化効率が向上する効果がある。また、整数画素であれば補間が不要になるため処理量も削減も可能である。
(動きベクトルmvLX[]の導出例5:予測ベクトルのラウンド処理例5)
本例においては、距離インデックスが所定の値ROUND_START_POS以上の値において、差分ベクトルの取り得る範囲を所定の小数ベクトルに制限する。
本例においては、距離インデックスが所定の値ROUND_START_POS以上の値において、差分ベクトルの取り得る範囲を所定の小数ベクトルに制限する。
例えば、UMVE処理部3065は、中心ベクトル(cMvLX[0], cMvLX[1])に距離(dx, dy)を加えて得られる差分ベクトルを導出後に、direction_idx >= ROUND_START_POSであれば小数画素位置にラウンドし最終的な候補ベクトルを得る。direction_idx < ROUND_START_POSの場合にはラウンドを行わない。すなわち、以下のステップによって処理を行ってもよい。
dt = dist_table[distance_idx]
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
mvLX[0] = cMvLX[0] + (dx<< baseMvPrecShift)
mvLX[1] = cMvLX[1] + (dy<< baseMvPrecShift)
if (direction_idx >= ROUND_START_POS) {
cMvLX[0] = roundToFloat (cMvLX[0])
cMvLX[1] = roundToFloat (cMvLX[1])
}
ここで、roundToFloatは小数画素精度へのラウンドを示す。例えば、roundToFloat(a)=((a>>mvPrec)<<mvPrec)+(1<<(mvPrec-1))など。この場合、1/2ペル位置の小数位置に移動する。
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
mvLX[0] = cMvLX[0] + (dx<< baseMvPrecShift)
mvLX[1] = cMvLX[1] + (dy<< baseMvPrecShift)
if (direction_idx >= ROUND_START_POS) {
cMvLX[0] = roundToFloat (cMvLX[0])
cMvLX[1] = roundToFloat (cMvLX[1])
}
ここで、roundToFloatは小数画素精度へのラウンドを示す。例えば、roundToFloat(a)=((a>>mvPrec)<<mvPrec)+(1<<(mvPrec-1))など。この場合、1/2ペル位置の小数位置に移動する。
これによって、距離がROUND_START_POS以上の場合において、所定の小数位置に限定することにより、小数位置補間によるローパス効果により予測画像のノイズを低減することができ符号化効率が向上する効果がある。また、整数画素位置を効率的に符号化することができる技術と併用する場合においても、UMVE予測による符号化効率が向上する効果がある。
(動きベクトルmvLX[]の導出例2:複数のdist_table[]から特定のdist_table[]が用いられる例)
図25は、本例に係るUMVE処理部3065の処理を示すシンタックスの一例を示す図である。
図25は、本例に係るUMVE処理部3065の処理を示すシンタックスの一例を示す図である。
本例に係る動画像符号化装置11のUMVE処理部1125および動画像復号装置31のUMVE処理部3065は複数の距離探索候補リストdist_table[]を備える。動画像符号化装置11のUMVE処理部1125は、複数のdist_table[]のうち特定のdist_table[]を示すdistance_list_idxを符号化し、動画像復号装置31に出力する。
図25に示すように、UMVE処理部3065は、distance_list_idxを復号し、distance_list_idxが示すdist_table[]を用いて、差分ベクトルmvdLXの長さを導出する。
例えば、本例に係る動画像符号化装置11のUMVE処理部1125および動画像復号装置31のUMVE処理部3065は以下に示す2つのdist_table_1[]およびdist_table_2[]を備えている。
dist_table_1[] = {1, 2, 3}
dist_table_2[] = {4, 8, 16, 32, 64, 128}
なお、テーブルは以下でもよい。
dist_table_2[] = {4, 8, 16, 32, 64, 128}
なお、テーブルは以下でもよい。
dist_table_1[] = {1, 2, 3, 5}
dist_table_2[] = {4, 8, 16, 32, 64, 128}
なお、UMVE処理部3065は、差分ベクトルmvdLXの長さを、dist_table_1[]またはdist_table_2[]と、distance_list_idxとを用いて導出する。
dist_table_2[] = {4, 8, 16, 32, 64, 128}
なお、UMVE処理部3065は、差分ベクトルmvdLXの長さを、dist_table_1[]またはdist_table_2[]と、distance_list_idxとを用いて導出する。
dist_table = dist_table_1 (distance_list_idx = 0)
= dist_table_2 (distance_list_idx = 1)
dt = dist_table[distance_idx] << baseMvPrecShift
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。
= dist_table_2 (distance_list_idx = 1)
dt = dist_table[distance_idx] << baseMvPrecShift
また、UMVE処理部3065は、上記dtおよびdirection_idxを用いて、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
また、2つのテーブルを合わせて2次元テーブルとしてもよい。この場合、UMVE処理部3065は、以下のように、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。
dy = dir_table_y[direction_idx] * dt
また、2つのテーブルを合わせて2次元テーブルとしてもよい。この場合、UMVE処理部3065は、以下のように、差分ベクトルmvdLXのx成分dxおよびy成分dyを導出する。
dist_table2d[][] = {{1, 2, 3, 5}, {4, 8, 16, 32, 64, 128}}
dt = dist_table2d[distance_list_idx][distance_idx] << baseMvPrecShift
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
distance_list_idxで切り替えるテーブルのサイズは同じサイズでもよい。
dt = dist_table2d[distance_list_idx][distance_idx] << baseMvPrecShift
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
distance_list_idxで切り替えるテーブルのサイズは同じサイズでもよい。
dist_table2d[][] = {{1, 2, 3, 5}, {4, 8, 16, 32}}
dt = dist_table2d[distance_list_idx][distance_idx] << baseMvPrecShift
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
すなわち、長さ情報distance_idxは、複数の残差ベクトルの長さを含む異なる複数のリストのうち特定のリストに含まれる残差ベクトルの長さの1つを示す。また、差分ベクトルmvdLXの方向の導出については上述の例と同様であるため、ここでの説明は繰り返さない。
dt = dist_table2d[distance_list_idx][distance_idx] << baseMvPrecShift
dx = dir_table_x[direction_idx] * dt
dy = dir_table_y[direction_idx] * dt
すなわち、長さ情報distance_idxは、複数の残差ベクトルの長さを含む異なる複数のリストのうち特定のリストに含まれる残差ベクトルの長さの1つを示す。また、差分ベクトルmvdLXの方向の導出については上述の例と同様であるため、ここでの説明は繰り返さない。
処理を行う画像や領域に応じて、好適となる動きベクトルの精度は異なる。例えば、大サイズの予測画像を生成する場合、dist_table_2[]のような、より遠くまで差分ベクトルmvdLXを探索できるテーブルを用いることが好ましい。
以上のように、長さの異なる複数のリストを切り替える構成を用いることにより、短い動きベクトルが必要な領域では、短い距離のテーブルを選択し、長い動きベクトルが必要な領域では、長い距離のテーブルを選択するようにdistance_list_idxにより切り替えることができるため、長さ情報distance_idxに必要な符号量が減少する。distance_list_idxが示す値によって、dist_table[]を指定することで動画像符号化装置11の生成する符号量を低減させることができる。どのテーブルを選択するかの確率は領域に応じて異なると考えられるので、distance_list_idxは、CABACにおいてコンテキストを用いて符号化・復号してもよい。長さ自体も領域に応じて異なると考えられるため、長さ情報distance_idxも、CABACにおいてコンテキストを用いて符号化・復号してもよい。
例えば、異なるテーブルに同じ値(例えば、dist_table_1[]およびdist_table_2[]における、4および8等)があったとしても、処理画像が所定の値より小サイズの画像であれば、dist_table_1から、処理画像が所定の値以上の大サイズであればdist_table_2から当該値を導出してもよい。
図26は、distance_idxが示す値と当該値に必要なビット数との対応関係を示す図である。図26はtruncated unary binarization方式でdistance_idxを符号化する例である。
上述したように、処理画像が大サイズ画像である場合、dist_table_2[] = {4, 8, 16, 32, 64, 128}が利用される。dist_table_2においては、distance_idx=0によって、探索候補距離4が示される。図26に示すように、distance_idx=0に必要なdistance_idxのビット数は1ビットとなる。
一方で、処理画像が大サイズ画像である場合においても、dist_table_1[] = {1, 2, 4, 8, 16, 32}のみが利用される構成では、distance_idx=2によって、探索候補距離4が示される。図26に示すように、distance_idx=2に必要なdistance_idxのビット数は3ビットとなる。
すなわち、本例にて説明した構成によれば、動画像符号化装置11の生成する符号量を低減させることができる。
(動画像符号化装置の構成)
次に、本実施形態に係る動画像符号化装置11の構成について説明する。図27は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
次に、本実施形態に係る動画像符号化装置11の構成について説明する。図27は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は画像Tの各ピクチャについて、そのピクチャを分割した領域である符号化ユニットCU毎に予測ユニットPUの予測画像Pを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から復号済のブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えばインター予測の場合、動きベクトルである。予測画像生成部101は、対象PUを起点として動きベクトルが示す参照画像上の位置にあるブロックを読み出す。またイントラ予測の場合、予測パラメータとは例えばイントラ予測モードである。イントラ予測モードで使用する隣接PUの画素値を参照ピクチャメモリ109から読み出し、PUの予測画像Pを生成する。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作である。インター予測画像生成部1011は、動き補償部10111、重み予測部10112を含んで構成される。動き補償部10111および重み予測部10112については、上述の動き補償部3091、重み予測部3094のそれぞれと同様の構成であるためここでの説明を省略する。
予測画像生成部101は、予測パラメータ符号化部から入力されたパラメータを用いて、参照ピクチャメモリから読み出した参照ブロックの画素値をもとにPUの予測画像Pを生成する。予測画像生成部101で生成した予測画像は減算部102、加算部106に出力される。
減算部102は、予測画像生成部101から入力されたPUの予測画像Pの信号値を、画像Tの対応するPUの画素値から減算して、残差信号を生成する。減算部102は、生成した残差信号を変換・量子化部103に出力する。
変換・量子化部103は、減算部102から入力された残差信号について周波数変換を行い、変換係数を算出する。変換・量子化部103は、算出した変換係数を量子化して量子化係数を求める。変換・量子化部103は、求めた量子化係数をエントロピー符号化部104及び逆量子化・逆変換部105に出力する。
エントロピー符号化部104には、変換・量子化部103から量子化係数が入力され、予測パラメータ符号化部111から符号化パラメータが入力される。入力される符号化パラメータには、例えば、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、予測モードpredMode、及びマージインデックスmerge_idx等の符号がある。
エントロピー符号化部104は、入力された量子化係数と符号化パラメータをエントロピー符号化して符号化ストリームTeを生成し、生成した符号化ストリームTeを外部に出力する。
逆量子化・逆変換部105は、変換・量子化部103から入力された量子化係数を逆量子化して変換係数を求める。逆量子化・逆変換部105は、求めた変換係数について逆周波数変換を行い、残差信号を算出する。逆量子化・逆変換部105は、算出した残差信号を加算部106に出力する。
加算部106は、予測画像生成部101から入力されたPUの予測画像Pの信号値と逆量子化・逆変換部105から入力された残差信号の信号値を画素毎に加算して、復号画像を生成する。加算部106は、生成した復号画像を参照ピクチャメモリ109に記憶する。
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)を施す。
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述した予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いてPUの予測画像Pを生成する。
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして外部に出力し、選択されなかった符号化パラメータのセットを出力しない。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから、符号化するための形式を導出し、エントロピー符号化部104に出力する。符号化するための形式の導出とは、例えば動きベクトルと予測ベクトルから差分ベクトルを導出することである。また予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから予測画像を生成するために必要なパラメータを導出し、予測画像生成部101に出力する。予測画像を生成するために必要なパラメータとは、例えばサブブロック単位の動きベクトルである。
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいて、差分ベクトルのようなインター予測パラメータを導出する。インター予測パラメータ符号化部112は、予測画像生成部101に出力する予測画像の生成に必要なパラメータを導出する構成として、インター予測パラメータ復号部303(図5等、参照)がインター予測パラメータを導出する構成と一部同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたイントラ予測モードIntraPredModeから、符号化するための形式(例えばMPM_idx、rem_intra_luma_pred_mode等)を導出する。
(インター予測パラメータ符号化部の構成)
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、図5のインター予測パラメータ復号部303に対応する手段であり、図28に構成を示す。
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、図5のインター予測パラメータ復号部303に対応する手段であり、図28に構成を示す。
インター予測パラメータ符号化部112は、パラメータ符号化制御部1121、マージ予測パラメータ導出部3036、UMVE処理部1125、AMVP予測パラメータ導出部3032、減算部1123及び図示しない、分割モード導出部、マージフラグ導出部、インター予測識別子導出部、参照ピクチャインデックス導出部、ベクトル差分導出部などを含んで構成され、分割モード導出部、マージフラグ導出部、インター予測識別子導出部、参照ピクチャインデックス導出部、ベクトル差分導出部は各々、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をエントロピー符号化部104に出力する。
パラメータ符号化制御部1121は、マージインデックス導出部11211とベクトル候補インデックス導出部11212を含む。マージインデックス導出部11211は、符号化パラメータ決定部110から入力された動きベクトルと参照ピクチャインデックスを、予測パラメータメモリ108から読み出したマージ候補のPUが持つ動きベクトルと参照ピクチャインデックスと比較して、マージインデックスmerge_idxを導出し、マージ予測パラメータ導出部3036(マージ予測部)に出力する。マージ予測パラメータ導出部3036は、マージインデックスmerge_idxに基づいて、インター予測パラメータを導出する。ベクトル候補インデックス導出部11212は予測ベクトルインデックスmvp_LX_idxを導出し、AMVP予測パラメータ導出部3032に出力する。
インター予測パラメータ符号化部112は、UMVE処理部(残差ベクトル探索部)1125を備える。UMVE処理部1125は、UMVEモードにおいて用いられる符号化データ(UMVE情報等)を導出する。
予測モードpredModeがインター予測モードを示す場合、AMVP予測パラメータ導出部3032には符号化パラメータ決定部110から動きベクトルmvLXが入力される。AMVP予測パラメータ導出部3032は、入力された動きベクトルmvLXに基づいて予測ベクトルmvpLXを導出する。AMVP予測パラメータ導出部3032は、導出した予測ベクトルmvpLXを減算部1123に出力する。なお、参照ピクチャインデックスrefIdx及び予測ベクトルインデックスmvp_LX_idxは、エントロピー符号化部104に出力される。
減算部1123は、符号化パラメータ決定部110から入力された動きベクトルmvLXから、AMVP予測パラメータ導出部3032から入力された予測ベクトルmvpLXを減算して差分ベクトルmvdLXを生成する。差分ベクトルmvdLXはエントロピー符号化部104に出力される。
なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、予測パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、動画像符号化装置11、動画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
〔応用例〕
上述した動画像符号化装置11及び動画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
上述した動画像符号化装置11及び動画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した動画像符号化装置11及び動画像復号装置31を、動画像の送信及び受信に利用できることを、図29を参照して説明する。
図29の(a)は、動画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。図29の(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した動画像符号化装置11は、この符号化部PROD_A1として利用される。
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部A7を更に備えていてもよい。図29の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図29の(b)は、動画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。図29の(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を更に備えていてもよい。図29の(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部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を、動画像の記録及び再生に利用できることを、図30を参照して説明する。
図30の(a)は、上述した動画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。図30の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置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を更に備えていてもよい。図30の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部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の一例である。
図30の(b)は、上述した動画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロックである。図30の(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号装置31は、この復号部PROD_D2として利用される。
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図30の(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部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の一例である。
(ハードウェア的実現およびソフトウェア的実現)
また、上述した動画像復号装置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)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクや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)等の論理回路類などを用いることができる。
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、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:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、および、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
11・・・・・・動画像符号化装置(画像符号化装置)
112・・・・インター予測パラメータ符号化部(残差ベクトル探索部)
31・・・・・・動画像復号装置(画像復号装置)
3065・・・・UMVE処理部(動きベクトル導出部)
112・・・・インター予測パラメータ符号化部(残差ベクトル探索部)
31・・・・・・動画像復号装置(画像復号装置)
3065・・・・UMVE処理部(動きベクトル導出部)
Claims (10)
- マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、
上記動きベクトル導出部は、
上記残差ベクトルの方向を示す方向情報、及び
上記残差ベクトルの長さを示す長さ情報
を参照して上記残差ベクトルを導出し、
上記方向情報は、少なくとも6つの方向の何れかを示す情報である
ことを特徴とする画像復号装置。 - マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、
上記動きベクトル導出部は、上記マージ候補リストに含まれているブロックの予測インデックスであって、第1の単方向予測、第2の単方向予測、及び、双方向予測の何れかを示す予測インデックスを、上記対象ブロックに適用する予測インデックスに設定する
ことを特徴とする画像復号装置。 - マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、
上記動きベクトル導出部は、
上記残差ベクトルの方向を示す方向情報、及び
上記残差ベクトルの長さを示す長さ情報
を参照して上記残差ベクトルを導出し、
上記長さ情報には、小数画素単位での長さ情報が含まれる
ことを特徴とする画像復号装置。 - 上記長さ情報には、1画素より大きい長さであって、かつ、小数画素単位での長さ情報が含まれる
ことを特徴とする請求項3に記載の画像復号装置。 - マージ候補リストに含まれている選択したブロックの予測ベクトルと、符号化データから復号した残差ベクトルとを用いて、対象ブロックに適用する動きベクトルを導出する動きベクトル導出部を備えた画像復号装置であって、
上記動きベクトル導出部は、
上記残差ベクトルの方向を示す方向情報、及び
上記残差ベクトルの長さを示す長さ情報を参照して、
上記残差ベクトルを導出し、
上記長さ情報は、複数の残差ベクトルの長さを含む異なる複数のリストのうち特定のリストに含まれる残差ベクトルの長さの1つを示すことを特徴とする画像復号装置。 - 画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、
上記残差ベクトル探索部は、
探索した上記残差ベクトルの方向を示す方向情報、及び
探索した上記残差ベクトルの長さを示す長さ情報
を導出し、
上記方向情報は、少なくとも6つの方向の何れかを示す情報である
ことを特徴とする画像符号化装置。 - 画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、
上記残差ベクトル探索部は、
上記マージ候補リストに含まれているブロックの予測インデックスであって、第1の単方向予測、第2の単方向予測、及び、双方向予測の何れかを示す予測インデックスを、上記対象ブロックに適用する予測インデックスに設定する
ことを特徴とする画像符号化装置。 - 画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、
上記残差ベクトル探索部は、
探索した上記残差ベクトルの方向を示す方向情報、及び
探索した上記残差ベクトルの長さを示す長さ情報
を導出し、
上記長さ情報には、小数画素単位での長さ情報が含まれる
ことを特徴とする画像符号化装置。 - 上記長さ情報には、1画素より大きい長さであって、かつ、小数画素単位での長さ情報が含まれる
ことを特徴とする請求項8に記載の画像符号化装置。 - 画像復号装置における動きベクトルの導出に用いられるマージ候補リストに含まれているブロックの予測ベクトルを選択し、上記画像復号装置における対象ブロックに適用する動きベクトルの導出に用いられる残差ベクトルを候補とする残差ベクトル探索部を備えた画像符号化装置であって、
上記残差ベクトル探索部は、
上記残差ベクトルの方向を示す方向情報、及び
上記残差ベクトルの長さを示す長さ情報
を導出し、
上記長さ情報は、複数の残差ベクトルの長さを含む異なる複数のリストのうち特定のリストに含まれる残差ベクトルの長さの1つを示す
ことを特徴とする画像符号化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018158721A JP2020036101A (ja) | 2018-08-27 | 2018-08-27 | 画像復号装置および画像符号化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018158721A JP2020036101A (ja) | 2018-08-27 | 2018-08-27 | 画像復号装置および画像符号化装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020036101A true JP2020036101A (ja) | 2020-03-05 |
Family
ID=69668772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018158721A Pending JP2020036101A (ja) | 2018-08-27 | 2018-08-27 | 画像復号装置および画像符号化装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020036101A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021177196A1 (ja) | 2020-03-03 | 2021-09-10 | 三ツ星ベルト株式会社 | ベルト取付治具の補助具及びベルトの取付方法 |
JP2021534653A (ja) * | 2018-08-28 | 2021-12-09 | 鴻穎創新有限公司Fg Innovation Company Limited | ビデオデータをコーディングする装置及び方法 |
-
2018
- 2018-08-27 JP JP2018158721A patent/JP2020036101A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021534653A (ja) * | 2018-08-28 | 2021-12-09 | 鴻穎創新有限公司Fg Innovation Company Limited | ビデオデータをコーディングする装置及び方法 |
JP7290713B2 (ja) | 2018-08-28 | 2023-06-13 | 鴻穎創新有限公司 | ビデオデータをコーディングする装置及び方法 |
WO2021177196A1 (ja) | 2020-03-03 | 2021-09-10 | 三ツ星ベルト株式会社 | ベルト取付治具の補助具及びベルトの取付方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7421586B2 (ja) | 復号装置および符号化装置 | |
CN110574374B (zh) | 图像解码装置 | |
JP7026049B2 (ja) | アフィン動きベクトル導出装置、予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
WO2018110203A1 (ja) | 動画像復号装置、および動画像符号化装置 | |
WO2018116802A1 (ja) | 画像復号装置、画像符号化装置、及び画像予測装置 | |
WO2018037853A1 (ja) | 画像復号装置及び画像符号化装置 | |
JP2021005741A (ja) | 画像符号化装置及び画像復号装置 | |
WO2020116456A1 (ja) | 動画像復号装置 | |
WO2018110462A1 (ja) | 画像復号装置及び画像符号化装置 | |
CN108605138B (zh) | 预测图像生成装置、运动图像解码装置、以及运动图像编码装置 | |
WO2020059877A1 (ja) | 画像復号装置および画像符号化装置 | |
WO2018173895A1 (ja) | 予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
JP7241153B2 (ja) | 画像復号装置 | |
WO2018173432A1 (ja) | 予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
WO2018110180A1 (ja) | 動きベクトル生成装置、予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
WO2019230904A1 (ja) | 画像復号装置、および画像符号化装置 | |
JP2023181459A (ja) | 動画像復号装置、動画像符号化装置、動画像復号方法および動画像符号化方法 | |
JP2019201254A (ja) | 画像復号装置、および画像符号化装置 | |
JP2020036101A (ja) | 画像復号装置および画像符号化装置 | |
JP2020145650A (ja) | 画像復号装置および画像符号化装置 | |
JP2020108012A (ja) | 画像復号装置および画像符号化装置 | |
WO2018061550A1 (ja) | 画像復号装置及び画像符号化装置 | |
JP2020096279A (ja) | 予測画像生成装置、動画像復号装置および動画像符号化装置 | |
WO2020004277A1 (ja) | 画像復号装置、および画像符号化装置 | |
WO2020067440A1 (ja) | 動画像符号化装置および動画像復号装置 |