JP2019201254A - 画像復号装置、および画像符号化装置 - Google Patents
画像復号装置、および画像符号化装置 Download PDFInfo
- Publication number
- JP2019201254A JP2019201254A JP2018093376A JP2018093376A JP2019201254A JP 2019201254 A JP2019201254 A JP 2019201254A JP 2018093376 A JP2018093376 A JP 2018093376A JP 2018093376 A JP2018093376 A JP 2018093376A JP 2019201254 A JP2019201254 A JP 2019201254A
- Authority
- JP
- Japan
- Prior art keywords
- image
- unit
- prediction
- block
- decoding
- 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
【課題】OBMC処理におけるメモリバンドの増加を抑制する。【解決手段】PU補間画像生成部(30911)は、対象サブブロックを複数含む第2のサイズを有する拡大ブロックのブロック境界のみ、第1のサイズを有する対象サブブロックの境界における予測画像の生成に用いる追加補間画像であって、当該境界を挟んで隣接する隣接ブロックのインター予測パラメータを用いて生成する追加補間画像を生成する。【選択図】図13
Description
本発明は、画像復号装置、および画像符号化装置に関する。
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
具体的な動画像符号化方式としては、例えば、H.264/MPEG-4.AVCやHEVC(High-Efficiency Video Coding)にて提案されている方式などが挙げられる。
このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び、符号化単位を分割することより得られるブロックである予測ユニット(PU)、変換ユニット(TU)からなる階層構造により管理され、CUごとに符号化/復号される。
また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測残差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる。
また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。
Video/JVET, "Algorithm Description of Joint Exploration Test Model 1 (JEM 1)", INTERNATIONAL ORGANIZATION FOR STANDARDIZATION ORGANISATION INTERNATIONALE DE NORMALISATION ISO/IEC JTC1/SC29/WG11 CODING OF MOVING PICTURES AND AUDIO, ISO/IEC JTC1/SC29/WG11/N15790, October 2015, Geneva, CH.
近年の動画像符号化及び復号技術においては、予測画像を生成する際の動き補償処理において、対象PUに付加されたインター予測パラメータを用いて生成される補間画像と、対象PUの隣接PUの動きパラメータを用いて生成される補間画像を用いて、対象PUの補間画像を生成する処理(OBMC処理)を用いることが行われている。一方で、OBMC処理は、画像データにアクセスするためのメモリバンドが大きくなるという課題が生じていた。
上記課題を解決するために、本発明の一態様に係る画像復号装置は、符号化データを復号する画像復号装置において、第1のサイズを有する対象サブブロックの境界における予測画像の生成に用いる追加補間画像を、当該境界を挟んで隣接する隣接ブロックのインター予測パラメータを用いて生成する追加補間画像生成部と、対象ブロックのインター予測パラメータを用いて生成される補間画像を用いて生成する補間画像生成部と、前記補間画像および前記追加補間画像を用いて当該対象ブロックの前記予測画像を生成する補正部と、備え、前記追加補間画像生成部は、前記対象サブブロックを複数含む第2のサイズを有する拡大ブロックのブロック境界のみ、前記追加補間画像を生成することを特徴としている。
上記課題を解決するために、本発明の一態様に係る画像符号化装置は、予測画像と符号化対象画像との残差を符号化する画像符号化装置において、第1のサイズを有する対象ブロックの境界における予測画像の生成に用いる追加補間画像を、当該境界を挟んで隣接する隣接ブロックのインター予測パラメータを用いて生成する追加補間画像生成部と、前記対象ブロックに付加されたインター予測パラメータを用いて生成される補間画像を用いて、または前記補間画像および前記追加補間画像を用いて当該対象ブロックに対応する前記予測画像を生成する予測画像生成部と、備え、前記予測画像生成部は、前記対象ブロックを複数含む第2のサイズを有する拡大ブロックのブロック境界のみ、前記追加補間画像を用いて前記予測画像を生成することを特徴とする画像符号化装置。
上記課題を解決するために、本発明の一態様に係る画像復号装置は、符号化データを復号する画像復号装置において、ブロック毎に復号画像を生成する復号部を備え、上記復号部は、所定のサイズ以下のブロックへの分割を禁止し、上記所定のサイズは、4×4画素以上の大きさを有することを特徴としている。
上記課題を解決するために、本発明の一態様に係る画像符号化装置は、動画像を符号化して符号化データを生成する画像符号化装置において、上記動画像の1フレームを複数のブロックに分割して上記符号化データを生成する分割部を備え、上記分割部は、所定のサイズ以下のブロックへの分割を禁止し、上記所定のサイズは、4×4画素以上の大きさを有することを特徴としている。
上記課題を解決するために、本発明の一態様に係る画像復号装置は、符号化データを復号する画像復号装置において、ブロック毎にインター予測パラメータを復号する予測パラメータ復号部を備え、上記予測パラメータ復号部は、所定のサイズ以下のブロックに対して、動きベクトルの精度を示すフラグを整数精度に対応する値に制限することを特徴としている。
上記課題を解決するために、本発明の一態様に係る画像符号化装置は、予測画像と符号化対象画像との残差を符号化する画像符号化装置において、ブロック毎にインター予測を行うことによって予測画像を生成する予測画像生成部を備え、上記予測画像生成部は、所定のサイズ以下のブロックに対して、動きベクトルの精度を示すフラグを整数精度に対応する値に制限することを特徴としている。
本発明の一態様によれば、メモリバンドが大きくなることを抑制することができるという効果を奏する。
(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
以下、図面を参照しながら本発明の実施形態について説明する。
図37は、本実施形態に係る画像伝送システム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が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<符号化ストリーム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は、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
スライスデータレイヤでは、処理対象のスライスデータSDATAを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit)を含んでいる。CTUは、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(符号化ツリーレイヤ)
符号化ツリーレイヤは、図1の(e)に示すように、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ツリー(CT:Coding Tree)と称する。4分木の中間ノードは、符号化ツリーであり、符号化ツリーユニット自身も最上位のCTとして規定される。CTUは、分割フラグ(split_flag)を含み、split_flagが1の場合には、4つの符号化ツリーCTに分割される。split_flagが0の場合には、符号化ツリーCTは分割されず、1つの符号化ユニット(CU:Coding Unit)をノードとして持つ。符号化ユニットCUは符号化ツリーレイヤの末端ノードであり、このレイヤではこれ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
符号化ツリーレイヤは、図1の(e)に示すように、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ツリー(CT:Coding Tree)と称する。4分木の中間ノードは、符号化ツリーであり、符号化ツリーユニット自身も最上位のCTとして規定される。CTUは、分割フラグ(split_flag)を含み、split_flagが1の場合には、4つの符号化ツリーCTに分割される。split_flagが0の場合には、符号化ツリーCTは分割されず、1つの符号化ユニット(CU:Coding Unit)をノードとして持つ。符号化ユニットCUは符号化ツリーレイヤの末端ノードであり、このレイヤではこれ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
また、符号化ツリーユニットCTUのサイズ64×64画素の場合には、符号化ユニットのサイズは、64×64画素、32×32画素、16×16画素、および、8×8画素の何れかをとり得る。
(符号化ユニットレイヤ)
符号化ユニットレイヤは、図1の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
符号化ユニットレイヤは、図1の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
予測ツリーは、符号化ユニットを1または複数に分割した各予測ユニット(PU)の予測情報(参照ピクチャインデックス、動きベクトル等)が規定される。別の表現でいえば、予測ユニットは、符号化ユニットを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ユニットを含む。なお、以下では、予測ユニットをさらに分割した予測単位を「サブブロック」と呼ぶ。サブブロックは、複数の画素によって構成されている。予測ユニットとサブブロックのサイズが等しい場合には、予測ユニット中のサブブロックは1つである。予測ユニットがサブブロックのサイズよりも大きい場合には、予測ユニットは、サブブロックに分割される。たとえば予測ユニットが8×8、サブブロックが4×4の場合には、予測ユニットは水平に2分割、垂直に2分割からなる、4つのサブブロックに分割される。
予測処理は、この予測ユニット(サブブロック)ごとに行ってもよい。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
イントラ予測の場合、分割方法は、2N×2N(符号化ユニットと同一サイズ)と、N×Nとがある。
また、インター予測の場合、分割方法は、符号化データのPU分割モード(part_mode)により符号化され、2N×2N(符号化ユニットと同一サイズ)、2N×N、2N×nU、2N×nD、N×2N、nL×2N、nR×2N、および、N×Nなどがある。なお、2N×nUは、2N×2Nの符号化ユニットを上から順に2N×0.5Nと2N×1.5Nの2領域に分割することを示す。2N×nDは、2N×2Nの符号化ユニットを上から順に2N×1.5Nと2N×0.5Nの2領域に分割することを示す。nL×2Nは、2N×2Nの符号化ユニットを左から順に0.5N×2Nと1.5N×2Nの2領域に分割することを示す。nR×2Nは、2N×2Nの符号化ユニットを左から順に1.5N×2Nと0.5N×1.5Nの2領域に分割することを示す。分割数は1、2、4のいずれかであるため、CUに含まれるPUは1個から4個である。これらのPUを順にPU0、PU1、PU2、PU3と表現する。
図2の(a)〜(h)に、それぞれの分割タイプについて、CUにおけるPU分割の境界の位置を具体的に図示している。
なお、図2の(a)は、CUの分割を行わない2N×2NのPU分割モードを示している。
また、図2の(b)、(c)、および(d)は、それぞれ、PU分割モードが、それぞれ、2N×N、2N×nU、および、2N×nDである場合のパーティションの形状について示している。以下、PU分割モードが、2N×N、2N×nU、および、2N×nDである場合のパーティションを、まとめて横長パーティションと称する。
また、図2の(e)、(f)、および(g)は、それぞれ、PU分割モードが、N×2N、nL×2N、および、nR×2Nである場合のパーティションの形状について示している。以下、PU分割タイプが、N×2N、nL×2N、および、nR×2Nである場合のパーティションを、まとめて縦長パーティションと称する。
また、横長パーティションおよび縦長パーティションをまとめて長方形パーティションと称する。
また、図2の(h)は、PU分割モードが、N×Nである場合のパーティションの形状を示している。図2の(a)および(h)のPU分割モードのことを、そのパーティションの形状に基づいて、正方形分割とも称する。また、図2の(b)〜(g)のPU分割モードのことは、非正方形分割とも称する。
また、図2の(a)〜(h)において、各パーティションに付した番号は識別番号を示しており、この識別番号順に、パーティションに対して処理が行われる。すなわち、当該識別番号は、パーティションのスキャン順を表している。
また、図2の(a)〜(h)において、左上がCUの基準点(原点)であるとする。
また、変換ツリーにおいては、符号化ユニットが1または複数の変換ユニットに分割され、各変換ユニットの位置とサイズとが規定される。別の表現でいえば、変換ユニットは、符号化ユニットを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ユニットを含む。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ユニットとして割り付けるものと、上述したCUの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ユニットごとに行われる。
(予測パラメータ)
予測ユニット(PU)の予測画像は、PUに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、ベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、1をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。2つの参照ピクチャリストが用いられる場合、つまり、predFlagL0=1,predFlagL1=1の場合が、双予測BiPredに対応し、1つの参照ピクチャリストを用いる場合、すなわち(predFlagL0, predFlagL1) = (1, 0)もしくは(predFlagL0, predFlagL1) = (0, 1)の場合が単予測UniPredに対応する。
予測ユニット(PU)の予測画像は、PUに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、ベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、1をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。2つの参照ピクチャリストが用いられる場合、つまり、predFlagL0=1,predFlagL1=1の場合が、双予測BiPredに対応し、1つの参照ピクチャリストを用いる場合、すなわち(predFlagL0, predFlagL1) = (1, 0)もしくは(predFlagL0, predFlagL1) = (0, 1)の場合が単予測UniPredに対応する。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、OBMCフラグOBMC_flag、がある。
(参照ピクチャリスト)
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリストである。
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリストである。
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードでも、AMVPモードでも、既に処理済みのPUの予測パラメータを用いて、対象PUの予測パラメータが導出される。マージ予測モードは、予測リスト利用フラグ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は、これらを識別するためのフラグである。マージ予測モードでも、AMVPモードでも、既に処理済みのPUの予測パラメータを用いて、対象PUの予測パラメータが導出される。マージ予測モードは、予測リスト利用フラグpredFlagLX(またはインター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めずに、既に導出した近傍PUの予測パラメータをそのまま用いるモードであり、AMVPモードは、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めるモードである。なお、動きベクトルmvLXは、予測ベクトルmvpLXを識別する予測ベクトルインデックスmvp_LX_idxと差分ベクトルmvdLXとして符号化される。
(動きベクトル)
動きベクトル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の構成について説明する。図3は、本実施形態に係る画像復号装置31の構成を示す概略図である。画像復号装置31は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。
次に、本実施形態に係る画像復号装置31の構成について説明する。図3は、本実施形態に係る画像復号装置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に記憶する。
ループフィルタ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は、読み出した隣接PUに基づいてイントラ予測モードIntraPredModeが示す予測モードで予測を行ってPUの予測画像を生成する。イントラ予測画像生成部310は、生成したPUの予測画像を加算部312に出力する。
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化係数を逆量子化して変換係数を求める。逆量子化・逆変換部311は、求めた変換係数について逆DCT、逆DST、逆KLT等の逆周波数変換を行い、残差信号を算出する。逆量子化・逆変換部311は、算出した残差信号を加算部312に出力する。
加算部312は、インター予測画像生成部309またはイントラ予測画像生成部310から入力されたPUの予測画像と逆量子化・逆変換部311から入力された残差信号を画素毎に加算して、PUの復号画像を生成する。加算部312は、生成したPUの復号画像を参照ピクチャメモリ306に記憶し、生成したPUの復号画像をピクチャ毎に統合した復号画像Tdを外部に出力する。
(インター予測パラメータ復号部の構成)
次に、インター予測パラメータ復号部303の構成について説明する。
次に、インター予測パラメータ復号部303の構成について説明する。
図4は、本実施形態に係るインター予測パラメータ復号部303の構成を示す概略図である。インター予測パラメータ復号部303は、インター予測パラメータ復号制御部3031、AMVP予測パラメータ導出部3032、加算部3038、マージ予測パラメータ導出部3036およびサブブロック予測パラメータ導出部3037を含んで構成される。
インター予測パラメータ復号制御部3031は、インター予測に関連する符号(シンタックス要素)の復号をエントロピー復号部301に指示し、符号化データに含まれる符号(シンタックス要素)、例えば、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックス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を加算部3038に出力する。加算部3038では、予測ベクトルmvpLXと差分ベクトルmvdLXを加算し、動きベクトルを導出する。
マージフラグmerge_flagが1、すなわち、マージ予測モードを示す場合、インター予測パラメータ復号制御部3031は、マージ予測に係る予測パラメータとして、マージインデックスmerge_idxを抽出する。インター予測パラメータ復号制御部3031は、抽出したマージインデックスmerge_idxをマージ予測パラメータ導出部3036(詳細は後述する)に出力し、サブブロック予測モードフラグsubPbMotionFlagをサブブロック予測パラメータ導出部3037に出力する。サブブロック予測パラメータ導出部3037は、サブブロック予測モードフラグsubPbMotionFlagの値に応じて、PUを複数のサブブロックに分割し、サブブロック単位で動きベクトルを導出する。すなわち、サブブロック予測モードでは、予測ブロックは4x4もしくは8x8という小さいブロック単位で予測される。後述の画像符号化装置11においては、CUを複数のパーティション(2NxN、Nx2N、NxNなどのPU)に分割し、パーティション単位で予測パラメータのシンタックスを符号化する方法に対して、サブブロック予測モードでは複数のサブブロックを集合(セット)にまとめ、当該集合毎に予測パラメータのシンタックスを符号化するため、少ない符号量で多くのサブブロックの動き情報を符号化することができる。
詳細に説明すると、サブブロック予測パラメータ導出部3037は、サブブロック予測モードにてサブブロック予測を行う、時空間サブブロック予測部30371、アフィン予測部30372、マッチング動き導出部30373、の少なくとも一つを備える。
(サブブロック予測モードフラグ)
ここで、画像復号装置31、画像符号化装置11(詳細は後述する)における、あるPUの予測モードがサブブロック予測モードであるか否かを示すサブブロック予測モードフラグsubPbMotionFlagの導出方法について説明する。画像復号装置31、画像符号化装置11は、後述する空間サブブロック予測SSUB、時間サブブロック予測TSUB、アフィン予測AFFINE、マッチング動き導出MATのいずれを用いたかに基づいて、サブブロック予測モードフラグsubPbMotionFlagを導出する。たとえば、あるPUで選択された予測モードをN(たとえばNは選択されたマージ候補を示すラベル)とした場合には、以下の式によりサブブロック予測モードフラグsubPbMotionFlagを導出してもよい。
ここで、画像復号装置31、画像符号化装置11(詳細は後述する)における、あるPUの予測モードがサブブロック予測モードであるか否かを示すサブブロック予測モードフラグsubPbMotionFlagの導出方法について説明する。画像復号装置31、画像符号化装置11は、後述する空間サブブロック予測SSUB、時間サブブロック予測TSUB、アフィン予測AFFINE、マッチング動き導出MATのいずれを用いたかに基づいて、サブブロック予測モードフラグsubPbMotionFlagを導出する。たとえば、あるPUで選択された予測モードをN(たとえばNは選択されたマージ候補を示すラベル)とした場合には、以下の式によりサブブロック予測モードフラグsubPbMotionFlagを導出してもよい。
subPbMotionFlag = (N == TSUB) || (N == SSUB) || (N == AFFINE) || (N == MAT)
ここで||は、論理和を示す(以下同様)。
ここで||は、論理和を示す(以下同様)。
(サブブロック予測部)
次に、サブブロック予測部について説明する。
次に、サブブロック予測部について説明する。
(時空間サブブロック予測部30371)
時空間サブブロック予測部30371は、時間的に対象PUに隣接する参照画像上(たとえば直前のピクチャ)のPUの動きベクトル、もしくは、空間的に対象PUに隣接するPUの動きベクトルから、対象PUを分割して得られるサブブロックの動きベクトルを導出する。具体的には、参照画像上のPUの動きベクトルを対象PUが参照する参照ピクチャに合わせてスケーリングすることにより、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi = xPb + nSbW * i, yj = yPb + nSbH * j, i=0, 1, 2,・・・,nPbW / nSbW - 1、j=0, 1, 2,・・・,nPbH / nSbH - 1)を導出する(時間サブブロック予測)。ここで、(xPb, yPb)は対象PUの左上座標、nPbW, nPbHは対象PUのサイズ、nSbW, nSbHはサブブロックのサイズである。
時空間サブブロック予測部30371は、時間的に対象PUに隣接する参照画像上(たとえば直前のピクチャ)のPUの動きベクトル、もしくは、空間的に対象PUに隣接するPUの動きベクトルから、対象PUを分割して得られるサブブロックの動きベクトルを導出する。具体的には、参照画像上のPUの動きベクトルを対象PUが参照する参照ピクチャに合わせてスケーリングすることにより、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi = xPb + nSbW * i, yj = yPb + nSbH * j, i=0, 1, 2,・・・,nPbW / nSbW - 1、j=0, 1, 2,・・・,nPbH / nSbH - 1)を導出する(時間サブブロック予測)。ここで、(xPb, yPb)は対象PUの左上座標、nPbW, nPbHは対象PUのサイズ、nSbW, nSbHはサブブロックのサイズである。
また、対象PUに隣接するPUの動きベクトルと、対象PUを分割して得られるサブブロックとの距離に応じて、加重平均を計算することで、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi = xPb + nSbW * i, yj = yPb + nSbH * j, i=0, 1, 2,・・・,nPbW / nSbW - 1、j=0, 1, 2,・・・,nPbH / nSbH - 1)を導出してもよい(空間サブブロック予測)。
上記、時間サブブロック予測の候補TSUB、空間サブブロック予測の候補SSUBを、マージモードの一つのモード(マージ候補)として選択する。
(アフィン予測部)
アフィン予測部30372は、対象PUのアフィン予測パラメータを導出する。本実施形態では、アフィン予測パラメータとして、対象PUの2つの制御点(V0、V1)の動きベクトル(mv0_x, mv0_y)(mv1_x, mv1_y)を導出する。具体的には、対象PUの隣接PUの動きベクトルから予測することにより、各制御点の動きベクトルを導出してもよいし、さらに、制御点の動きベクトルとして導出された予測ベクトルと符号化データから導出される差分ベクトルの和により、各制御点の動きベクトルを導出してもよい。
アフィン予測部30372は、対象PUのアフィン予測パラメータを導出する。本実施形態では、アフィン予測パラメータとして、対象PUの2つの制御点(V0、V1)の動きベクトル(mv0_x, mv0_y)(mv1_x, mv1_y)を導出する。具体的には、対象PUの隣接PUの動きベクトルから予測することにより、各制御点の動きベクトルを導出してもよいし、さらに、制御点の動きベクトルとして導出された予測ベクトルと符号化データから導出される差分ベクトルの和により、各制御点の動きベクトルを導出してもよい。
図8は、対象PU(nPbW×nPbH)を構成する各サブブロックの動きベクトルspMvLXを、制御点V0の動きベクトル(mv0_x, mv0_y)およびV1の動きベクトル(mv1_x, mv1_y)から導出する例を示す図である。各サブブロックの動きベクトルspMvLXは、図8に示すように、各サブブロックの中心に位置する点毎の動きベクトルとして導出する。
アフィン予測部30372は対象PUのアフィン予測パラメータに基づいて、対象PU中の各サブブロックの動きベクトルspMvLX[xi][yi] (xi = xPb + nSbW * i, yj = yPb + nSbH * j, i=0, 1, 2,・・・,nPbW / nSbW - 1、j=0, 1, 2,・・・,nPbH / nSbH - 1)を下記の式を用いて、導出する。
spMvLX[xi][yi][0]=mv0_x + (mv1_x - mv0_x) / nPbW * (xi + nSbW/2) - (mv1_y - mv0_y) / nPbH * (yi + nSbH/2)
spMvLX[xi][yi][1]=mv0_y + (mv1_y - mv0_y) / nPbW * (xi + nSbW/2) + (mv1_x - mv0_x) / nPbH * (yi + nSbH/2)
ここで、xPb, yPbは、対象PUの左上座標、nPbW, nPbHは、対象PUの幅と高さ、nSbW, nSbHはサブブロックの幅と高さである。
spMvLX[xi][yi][1]=mv0_y + (mv1_y - mv0_y) / nPbW * (xi + nSbW/2) + (mv1_x - mv0_x) / nPbH * (yi + nSbH/2)
ここで、xPb, yPbは、対象PUの左上座標、nPbW, nPbHは、対象PUの幅と高さ、nSbW, nSbHはサブブロックの幅と高さである。
(マッチング動き導出部30373)
マッチング動き導出モードは、マージモードの一つのマージ候補(マッチング候補)として選択される。マッチング動き導出部では、対象PUを複数のサブブロックに分割し、分割したサブブロック単位で後述のバイラテラルマッチングもしくはテンプレートマッチングを行うことにより、サブブロックの動きベクトルspMvLX[xi][yi] (xi = xPb + nSbW * i, yj = yPb + nSbH * j, i=0, 1, 2,・・・,nPbW / nSbW - 1、j=0, 1, 2,・・・,nPbH / nSbH - 1)を導出する。
マッチング動き導出モードは、マージモードの一つのマージ候補(マッチング候補)として選択される。マッチング動き導出部では、対象PUを複数のサブブロックに分割し、分割したサブブロック単位で後述のバイラテラルマッチングもしくはテンプレートマッチングを行うことにより、サブブロックの動きベクトルspMvLX[xi][yi] (xi = xPb + nSbW * i, yj = yPb + nSbH * j, i=0, 1, 2,・・・,nPbW / nSbW - 1、j=0, 1, 2,・・・,nPbH / nSbH - 1)を導出する。
図9の(a)に示すように、バイラテラルマッチングでは、対象ピクチャCur_PicにおけるサブブロックCur_blockの動きベクトルを導出するために、2枚の参照画像が参照される。より具体的には、まず、サブブロックCur_blockの座標を(xCur,yCur)と表現したとき、参照ピクチャインデックスrefIdxL0によって指定される参照画像Ref0(参照ピクチャAと呼ぶ)内の領域であって、
(xPos,yPos)=(xCur + MV0_x, yCur + MV0_y)
によって特定される左上座標(xPos,yPos)を有するBlock_Aと、例えば参照ピクチャインデックスrefIdxL1によって指定される参照画像Ref1(参照ピクチャBと呼ぶ)内の領域であって、
(xPos,yPos)=(xCur+MV1_x, xCur+MV1_y)=(xCur - MV0_x * TD1/TD0, yCur - MV0_y * TD1/TD0)
によって特定される左上座標(xPos,yPos)を有するBlock_Bとが設定される。ここで、TD0、及びTD1は、図9の(a)に示すように、それぞれ、対象ピクチャCur_Picと参照ピクチャAとのピクチャ間距離、及び対象ピクチャCur_Picと参照ピクチャBとのピクチャ間距離を表している。
(xPos,yPos)=(xCur + MV0_x, yCur + MV0_y)
によって特定される左上座標(xPos,yPos)を有するBlock_Aと、例えば参照ピクチャインデックスrefIdxL1によって指定される参照画像Ref1(参照ピクチャBと呼ぶ)内の領域であって、
(xPos,yPos)=(xCur+MV1_x, xCur+MV1_y)=(xCur - MV0_x * TD1/TD0, yCur - MV0_y * TD1/TD0)
によって特定される左上座標(xPos,yPos)を有するBlock_Bとが設定される。ここで、TD0、及びTD1は、図9の(a)に示すように、それぞれ、対象ピクチャCur_Picと参照ピクチャAとのピクチャ間距離、及び対象ピクチャCur_Picと参照ピクチャBとのピクチャ間距離を表している。
次に、Block_AとBlock_Bとのマッチングコストが最小となるように、(MV0_x,MV0_y)が決定される。このようにして導出された(MV0_x,MV0_y)が、サブブロックに付与される動きベクトルとなる。
一方、図9の(b)は、上記マッチング処理のうち、テンプレートマッチング(Template matching)について説明するための図である。
図9の(b)に示すように、テンプレートマッチングでは、対象ピクチャCur_PicにおけるサブブロックCur_blockの動きベクトルを導出するために、一度に1枚の参照ピクチャが参照される。
より具体的には、まず、例えば参照ピクチャインデックスrefIdxL0によって指定される参照画像Ref0(参照ピクチャAと呼ぶ)内の領域であって、
(xPos,yPos)=(xCur + MV0_x, yCur + MV0_y)
によって特定される左上座標(xPos, yPos)を有する参照ブロックBlock_Aが特定される。ここで、(xCur, yCur)は、サブブロックCur_blockの左上座標である。
(xPos,yPos)=(xCur + MV0_x, yCur + MV0_y)
によって特定される左上座標(xPos, yPos)を有する参照ブロックBlock_Aが特定される。ここで、(xCur, yCur)は、サブブロックCur_blockの左上座標である。
次に、対象ピクチャCur_PicにおいてサブブロックCur_blockに隣接したテンプレート領域Temp_Curと、参照ピクチャAにおいてBlock_Aに隣接したテンプレート領域Temp_L0とが設定される。図9の(b)に示す例において、テンプレート領域Temp_Curは、サブブロックCur_blockの上側に隣接する領域及びサブブロックCur_blockの左側に隣接する領域とから構成されている。また、テンプレート領域Temp_L0は、Block_Aの上側に隣接する領域及びBlock_Aの左側に隣接する領域とから構成されている。
次にTemp_CurとTempL0とのマッチングコストが最小になる(MV0_x,MV0_y)が決定され、サブブロックに付与される動きベクトルspMvL0となる。
図5は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362、マージ候補格納部30363を備える。マージ候補格納部30363は、マージ候補導出部30361から入力されたマージ候補を格納する。なお、マージ候補は、予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成されている。マージ候補格納部30363において、格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。
マージ候補導出部30361は、すでに復号処理が行われた隣接PUの動きベクトルと参照ピクチャインデックスrefIdxLXをそのまま用いてマージ候補を導出する。それ以外にアフィン予測を用いてマージ候補を導出してもよい。この方法を以下で詳細に説明する。マージ候補導出部30361は、アフィン予測を、後述する空間マージ候補導出処理、時間マージ候補導出処理、結合マージ候補導出処理、およびゼロマージ候補導出処理に用いてもよい。なお、アフィン予測はサブブロック単位で行われ、予測パラメータはサブブロック毎に予測パラメータメモリ307に格納されている。あるいは、アフィン予測は画素単位で行われてもよい。
(空間マージ候補導出処理)
空間マージ候補導出処理として、マージ候補導出部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は、既に導出され、マージ候補格納部30363に格納された2つの異なる導出済マージ候補の動きベクトルと参照ピクチャインデックスを、それぞれL0、L1の動きベクトルとして組み合わせることで結合マージ候補を導出する。
結合マージ導出処理として、マージ候補導出部30361は、既に導出され、マージ候補格納部30363に格納された2つの異なる導出済マージ候補の動きベクトルと参照ピクチャインデックスを、それぞれL0、L1の動きベクトルとして組み合わせることで結合マージ候補を導出する。
(ゼロマージ候補導出処理)
ゼロマージ候補導出処理として、マージ候補導出部30361は、参照ピクチャインデックスrefIdxLXが0であり、動きベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出する。
ゼロマージ候補導出処理として、マージ候補導出部30361は、参照ピクチャインデックスrefIdxLXが0であり、動きベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出する。
マージ候補導出部30361によって導出された上記マージ候補はマージ候補格納部30363に格納される。
マージ候補選択部30362は、マージ候補格納部30363に格納されているマージ候補のうち、インター予測パラメータ復号制御部3031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当てられたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を予測パラメータメモリ307に記憶するとともに、予測画像生成部308に出力する。
図6は、本実施形態に係るAMVP予測パラメータ導出部3032の構成を示す概略図である。AMVP予測パラメータ導出部3032は、ベクトル候補導出部3033とベクトル候補選択部3034、およびベクトル候補格納部3035を備える。ベクトル候補導出部3033は、参照ピクチャインデックスrefIdxに基づいて予測パラメータメモリ307が記憶する既に処理済みのPUの動きベクトルmvLXから予測ベクトル候補を導出し、ベクトル候補格納部3035予測ベクトル候補リストmvpListLX[]に格納する。
ベクトル候補選択部3034は、予測ベクトル候補リストmvpListLX[]の予測ベクトル候補のうち予測ベクトルインデックスmvp_LX_idxが示す動きベクトルmvpListLX[mvp_LX_idx]を予測ベクトルmvpLXとして選択する。ベクトル候補選択部3034は、選択した予測ベクトルmvpLXを加算部3038に出力する。
なお、予測ベクトル候補は、復号処理が完了したPUであって、復号対象PUから予め定めた範囲のPU(例えば、隣接PU)の動きベクトルをスケーリングすることで導出する。なお、隣接PUは、復号対象PUに空間的に隣接するPU、例えば、左PU、上PUの他、復号対象PUに時間的に隣接する領域、例えば、復号対象PUと同じ位置を含み、表示時刻が異なるPUの予測パラメータから得られた領域を含む。
加算部3038は、AMVP予測パラメータ導出部3032から入力された予測ベクトルmvpLXとインター予測パラメータ復号制御部3031から入力された差分ベクトルmvdLXを加算して動きベクトルmvLXを算出する。加算部3038は、算出した動きベクトルmvLXを予測画像生成部308および予測パラメータメモリ307に出力する。
(インター予測画像生成部309)
インター予測画像生成部309は、動き補償部(予測画像生成装置)3091を含んで構成される。
インター予測画像生成部309は、動き補償部(予測画像生成装置)3091を含んで構成される。
(動き補償)
動き補償部3091は、インター予測パラメータ復号部303から入力された、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX)に基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャRefXにおいて、復号対象PUの位置を起点として、動きベクトルmvLXだけずれた位置にあるブロックを読み出すことによって補間画像(動き補償画像predSamplesLX)を生成する。ここで、動きベクトルmvLXの精度が整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、動き補償画像を生成する。
動き補償部3091は、インター予測パラメータ復号部303から入力された、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX)に基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャRefXにおいて、復号対象PUの位置を起点として、動きベクトルmvLXだけずれた位置にあるブロックを読み出すことによって補間画像(動き補償画像predSamplesLX)を生成する。ここで、動きベクトルmvLXの精度が整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、動き補償画像を生成する。
(OBMC処理)
まず、図10〜図14を参照して、一般的なOBMC処理について説明する。
まず、図10〜図14を参照して、一般的なOBMC処理について説明する。
(OBMC処理概要)
本実施形態に係る動き補償部3091はOBMC処理を用いて予測画像を生成してもよい。ここで、OBMC(Overlapped block motion compensation)処理について説明する。OBMC処理とは、対象PUに付加されたインター予測パラメータ(以下、動きパラメータ)を用いて生成される補間画像(PU補間画像)と、対象PUの隣接PUの動きパラメータを用いて生成される補間画像(OBMC補間画像)を用いて、対象PUの補間画像(動き補償画像)を生成する処理である。特に、PU間の境界との距離が近い対象PU内の画素(境界画素)において、隣接PUの動きパラメータに基づくOBMC補間画像により、対象PUの補間画像を補正する処理が行われる。
本実施形態に係る動き補償部3091はOBMC処理を用いて予測画像を生成してもよい。ここで、OBMC(Overlapped block motion compensation)処理について説明する。OBMC処理とは、対象PUに付加されたインター予測パラメータ(以下、動きパラメータ)を用いて生成される補間画像(PU補間画像)と、対象PUの隣接PUの動きパラメータを用いて生成される補間画像(OBMC補間画像)を用いて、対象PUの補間画像(動き補償画像)を生成する処理である。特に、PU間の境界との距離が近い対象PU内の画素(境界画素)において、隣接PUの動きパラメータに基づくOBMC補間画像により、対象PUの補間画像を補正する処理が行われる。
図10は、本実施形態に係る隣接PUの動きパラメータを利用して予測画像生成を行う領域の一例を示す図である。図10に示すように、予測画像生成にOBMC処理が適用される場合、黒色で塗りつぶしたPU境界から所定の距離内にある画素がOBMC処理の適用対象となる。
なお、対象PUと隣接PUの形状は必ずしも同じではないので、OBMC処理はPUを分割したサブブロック単位で実施するのが望ましい。サブブロックのサイズは4x4,8x8〜PUサイズまで様々な値をとることができる。このとき、サブブロックの境界画素において、隣接サブブロックの動きパラメータを利用したOBMC補間画像生成および補正処理をOBMC処理と呼ぶ。
(補間画像生成)
図11は本実施形態に係るOBMC処理を行うインター予測画像生成部309が備えている動き補償部3091の要部構成を示すブロック図である。図11に示すように、動き補償部3091は、補間画像生成部3092(PU補間画像生成部30911およびOBMC補間画像生成部30912)とOBMC補正部3093とを備えている。
図11は本実施形態に係るOBMC処理を行うインター予測画像生成部309が備えている動き補償部3091の要部構成を示すブロック図である。図11に示すように、動き補償部3091は、補間画像生成部3092(PU補間画像生成部30911およびOBMC補間画像生成部30912)とOBMC補正部3093とを備えている。
補間画像生成部3092は、インター予測パラメータ(予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLX、OBMCフラグOBMC_flag)に基づいて、補間画像を導出する。
PU補間画像生成部30911は、インター予測パラメータ復号部303から入力された予測リスト利用フラグpredFlagLX[xPb][yPb]、参照ピクチャインデックスrefIdxLX[xPb][yPb]、動きベクトルmvLX[xPb][yPb]に基づいて、PU補間画像Pred_C[x][y](x=0..nPbW-1, y=0..nPbH-1)を生成する。PU補間画像生成部30911は、生成したPU補間画像Pred_C[x][y]をOBMC補正部3093に送信する。なお、(xPb、yPb)はPUの左上座標、nPbW、nPbHは、PUの幅および高さである。なお、ここでは、サフィックスのCはcurrentを意味する。
換言すると、対象予測ユニット(PU)の動き情報を対象サブブロックに対応する参照画像上のサブブロックに適用することにより補間画像を生成する。
また、OBMC補間画像生成部30912は、インター予測パラメータ復号部303から入力された、OBMC_flag、予測リスト利用フラグpredFlagLXN[xNb][yNb]、隣接ブロックの参照ピクチャインデックスrefIdxLXN[xNb][yNb]、隣接ブロックの動きベクトルmvLXN[xNb][yNb]に基づいて、OBMC補間画像Pred_N[x][y](x=0..nPbW-1, y=0..nPbH-1)を生成する。換言すると、対象サブブロックに隣接する隣接サブブロックの動き情報を、隣接サブブロックに対応する参照画像上のサブブロックに適用することにより追加補間画像を生成する。OBMC補間画像生成部30912は生成したOBMC補間画像Pred_N[x][y]をOBMC補正部3093に送信する。なお、(xNb、yNb)はPUの隣接サブブロックの位置である。なお、ここでは、サフィックスのNはneighbourを意味する。
なお、以上の説明では、PU補間画像生成部30911、OBMC補間画像生成部30912を区別しているが、どちらも動きパラメータから補間画像を生成する処理を行うことから、2つの処理を行う手段を一つ用意して、この手段で実行してもよい。
補間画像生成部3092に入力される動きベクトルmvLXまたは動きベクトルmvLXNが整数精度ではなく1/M画素精度(Mは2以上の自然数)である場合、補間画像生成部3092(PU補間画像生成部30911、OBMC補間画像生成部30912)は、補間フィルタにより、整数画素位置の参照画像の画素値から、補間画像を生成する。
動きベクトルmvLXが整数精度でない場合、補間画像生成部3092は、位相nFracに対応するNTAPタップのフィルタ係数mcFilter[nFrac][k](k=0..NTAP-1)と、参照画像の画素の積和演算とから、上述したPU補間画像Pred_C[x][y]、または、OBMC補間画像Pred_N[x][y]を生成する。
具体的には、補間画像生成部3092は、予測ブロック(PUもしくはサブブロック)の左上座標(xb, yb)、サイズ(nW, nH)、動きベクトルmvLX、参照画像refImg(参照ピクチャインデクスrefIdxLXの指す参照ピクチャ)、補間フィルタ係数mcFilter[]、補間フィルタのタップ数NTAPを入力パラメータとして補間画像を生成する。
PU補間画像Pred_C[x][y]の導出において、補間画像生成部3092は、(xb,yb)=(xPb,yPb)、(nW,nH)=(nPbW,nPbH)、mvLX=対象PU(対象サブブロック)の動きベクトルmvLX[xb][yb]、参照画像refImg=refIdxLX[xb][yb]の示す参照ピクチャ、動きベクトル精度M、タップ数NTAPを入力パラメータとして用いる。なお、PUをサブブロックに分割して処理する場合は、(xb,yb)=(xPb+nSbW*i,yPb+nSbH*j)(ここでi=0,1,2,…nPbW/nSbW-1,j=0,1,2,…nPbH/nSbH-1)、(nW,nH)=(nSbW,nSbH)をセットする。OBMC補間画像Pred_N[x][y]の導出においては、補間画像生成部3092は、(xb,yb)=(xPb+nSbW*i,yPb+nSbH*j)(ここでi=0,1,2,…nPbW/nSbW-1,j=0,1,2,…nPbH/nSbH-1)、(nW,nH)=(nSbW,nSbH)、mvLX=mvLXN[xNb][yNb]、参照画像refImg=refIdxLXN[xb][yb]の示す参照ピクチャ、動きベクトル精度M、タップ数NTAPを入力パラメータとして用いる。
補間画像生成部3092は、まず、予測ブロック内座標(x, y)に対応する整数位置(xInt, yInt)および位相(xFrac, yFrac)を以下の式で導出する。
xInt = xb + (mvLX[0] >> (log2(M))) + x
xFrac = mvLX[0] & (M-1)
yInt = yb + (mvLX[1] >> (log2(M))) + y
yFrac = mvLX[1] & (M-1)
ここで、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)
ここで、x=0..nW-1、y=0..nH-1、Mは動きベクトルmvLXの精度(1/M画素精度)を示す。
すなわち、上記式で示すように、補間画像生成部3092は、対象サブブロック、あるいは、隣接サブブロックの動き情報を適用した参照画像上のサブブロック位置を導出する。
補間画像生成部3092は、参照画像refImgに補間フィルタを用いて垂直補間処理を行うことで、一時的画像temp[][]を導出する(以下のΣはk = 0..NTAP-1のkに関する和、shift1は値のレンジを調整する正規化パラメータ)。
temp[x][y] = (ΣmcFilter [ yFrac ][ k ] * refImg[ xInt ][ yInt + k - NTAP/2 + 1 ] + offset1) >> shift1
続いて、補間画像生成部3092は、一時的画像temp[][]の水平補間処理により、補間画像Pred[][]を導出する(以下のΣはk = 0..NTAP-1のkに関する和、shift2は値のレンジを調整する正規化パラメータ)。
続いて、補間画像生成部3092は、一時的画像temp[][]の水平補間処理により、補間画像Pred[][]を導出する(以下のΣはk = 0..NTAP-1のkに関する和、shift2は値のレンジを調整する正規化パラメータ)。
Pred[x][y] = (ΣmcFilter[ xFrac ][ k ] * temp[ xInt + k - NTAP/2 + 1 ][ yInt ] + offset2) >> shift2
(フィルタ係数の例)
次に、動きベクトル精度M=4において、NTAP= 2, 4, 6, 8の各タップ数に対応する補間フィルタmcFilterN2, mcFilterN4, mcFilterN6, mcFilterN8の例を示す。なお、フィルタ係数はこれに限定されない。
mcFilterN8[] = {
{ 0, 0, 0, 64, 0, 0, 0, 0 },
{ -1, 4, -10, 58, 17, -5, 1, 0 },
{ -1, 4, -11, 40, 40, -11, 4, -1 },
{ 0, 1, -5, 17, 58, -10, 4, -1 }
}
mcFilterN6[] = {
{ 0, 0, 64, 0, 0, 0 },
{ 2, -8, 56, 18, -6, 2 },
{ 2, -10, 40, 40, -10, 2 },
{ 2, -6, 18, 56, -8, 2 },
}
mcFilterN4[] = {
{ 0, 64, 0, 0 },
{ -4, 54, 16, -2 },
{ -4, 36, 36, -4 },
{ -2, 16, 54, -4 }
}
mcFilterN2[] = {
{ 64, 0 },
{ 48, 16},
{ 32, 32},
{ 16, 48}
}
なお、OBMC処理を行わない場合は、PU補間画像生成部30911のみが処理を実行する構成としてもよい。
(フィルタ係数の例)
次に、動きベクトル精度M=4において、NTAP= 2, 4, 6, 8の各タップ数に対応する補間フィルタmcFilterN2, mcFilterN4, mcFilterN6, mcFilterN8の例を示す。なお、フィルタ係数はこれに限定されない。
mcFilterN8[] = {
{ 0, 0, 0, 64, 0, 0, 0, 0 },
{ -1, 4, -10, 58, 17, -5, 1, 0 },
{ -1, 4, -11, 40, 40, -11, 4, -1 },
{ 0, 1, -5, 17, 58, -10, 4, -1 }
}
mcFilterN6[] = {
{ 0, 0, 64, 0, 0, 0 },
{ 2, -8, 56, 18, -6, 2 },
{ 2, -10, 40, 40, -10, 2 },
{ 2, -6, 18, 56, -8, 2 },
}
mcFilterN4[] = {
{ 0, 64, 0, 0 },
{ -4, 54, 16, -2 },
{ -4, 36, 36, -4 },
{ -2, 16, 54, -4 }
}
mcFilterN2[] = {
{ 64, 0 },
{ 48, 16},
{ 32, 32},
{ 16, 48}
}
なお、OBMC処理を行わない場合は、PU補間画像生成部30911のみが処理を実行する構成としてもよい。
(加重平均)
OBMC処理を行う構成においては、上述のOBMC補正部3093は受信したOBMC補間画像Pred_N[x][y]およびPU補間画像Pred_C[x][y]に対して加重平均処理を行うことにより、予測画像Pred_[x][y]を生成または更新する。詳細に説明すると、OBMC補正部3093は、インター予測パラメータ復号部303から入力されたOBMCフラグOBMC_flagが1(OBMC処理が有効)の場合、以下の式で示す加重平均処理を行う。
OBMC処理を行う構成においては、上述のOBMC補正部3093は受信したOBMC補間画像Pred_N[x][y]およびPU補間画像Pred_C[x][y]に対して加重平均処理を行うことにより、予測画像Pred_[x][y]を生成または更新する。詳細に説明すると、OBMC補正部3093は、インター予測パラメータ復号部303から入力されたOBMCフラグOBMC_flagが1(OBMC処理が有効)の場合、以下の式で示す加重平均処理を行う。
予測画像Pred_[x][y]=((w1*PU補間画像Pred_C[x][y]+w2*OBMC補間画像Pred_N[x][y])+o)>>shift
ここで、加重平均処理における重みw1、w2について説明する。加重平均処理における重みw1、w2は、PU境界からの対象画素の距離(画素数)に応じて決定する。シフト値shiftは、距離に応じて変更してもよいし、固定してもよい。
ここで、加重平均処理における重みw1、w2について説明する。加重平均処理における重みw1、w2は、PU境界からの対象画素の距離(画素数)に応じて決定する。シフト値shiftは、距離に応じて変更してもよいし、固定してもよい。
以下に、OBMC処理サイズであるnOBMCWおよびnOBMCHが4画素の場合の予測画像Pred_[x][y]の生成について説明する。
シフト値を距離に応じて変更する場合、例えば、{w1, w2, o, shift} = {3, 1, 2, 2}, {7, 1 , 4, 3}, {15, 1 , 8, 4}, {31, 1 , 16, 5}としてもよい。この場合、予測画像Pred_[x][y]は以下の式で生成される。
Pred_[x][y]=(3*Pred_C[x][y]+1*Pred_N[x][y]+2)>>2 距離=0画素
Pred_[x][y]=(7*Pred_C[x][y]+1*Pred_N[x][y]+4)>>3 距離=1画素
Pred_[x][y]=(15*Pred_C[x][y]+1*Pred_N[x][y]+8)>>4 距離=2画素
Pred_[x][y]=(31*Pred_C[x][y]+1*Pred_N[x][y]+16)>>5 距離=3画素
また、シフト値を距離に応じず固定する場合、例えば、{w1, w2} = {24, 8}, {28, 4}, {30, 2}, {31, 1}, o = 16, shift = 5としてもよい。この場合、予測画像Pred_[x][y]は以下の式で生成される。
Pred_[x][y]=(7*Pred_C[x][y]+1*Pred_N[x][y]+4)>>3 距離=1画素
Pred_[x][y]=(15*Pred_C[x][y]+1*Pred_N[x][y]+8)>>4 距離=2画素
Pred_[x][y]=(31*Pred_C[x][y]+1*Pred_N[x][y]+16)>>5 距離=3画素
また、シフト値を距離に応じず固定する場合、例えば、{w1, w2} = {24, 8}, {28, 4}, {30, 2}, {31, 1}, o = 16, shift = 5としてもよい。この場合、予測画像Pred_[x][y]は以下の式で生成される。
Pred_[x][y]=(24*Pred_C[x][y]+8*Pred_N[x][y]+16)>>5 距離=0画素
Pred_[x][y]=(28*Pred_C[x][y]+4*Pred_N[x][y]+16)>>5 距離=1画素
Pred_[x][y]=(30*Pred_C[x][y]+2*Pred_N[x][y]+16)>>5 距離=2画素
Pred_[x][y]=(31*Pred_C[x][y]+1*Pred_N[x][y]+16)>>5 距離=3画素
なお、シフト値を距離に応じて変更する場合の上記式から生成されるPred_[x][y]と、シフト値を距離に応じず固定する場合の上記式から生成されるPred_[x][y]は等価となる。
Pred_[x][y]=(28*Pred_C[x][y]+4*Pred_N[x][y]+16)>>5 距離=1画素
Pred_[x][y]=(30*Pred_C[x][y]+2*Pred_N[x][y]+16)>>5 距離=2画素
Pred_[x][y]=(31*Pred_C[x][y]+1*Pred_N[x][y]+16)>>5 距離=3画素
なお、シフト値を距離に応じて変更する場合の上記式から生成されるPred_[x][y]と、シフト値を距離に応じず固定する場合の上記式から生成されるPred_[x][y]は等価となる。
また、OBMC処理サイズであるnOBMCWおよびnOBMCHが2画素の場合の予測画像Pred_[x][y]の生成は以下の通りである。
シフト値を距離に応じて変更する場合、例えば、{w1, w2, o, shift} = {3, 1, 2, 2}, {7, 1 , 4, 3}としてもよい。この場合、予測画像Pred_[x][y]は以下の式で生成される。
Pred_[x][y]=(3*Pred_C[x][y]+1*Pred_N[x][y]+2)>>2 距離=0画素
Pred_[x][y]=(7*Pred_C[x][y]+1*Pred_N[x][y]+4)>>3 距離=1画素
また、シフト値を距離に応じず固定する場合、例えば、{w1, w2} = {24, 8}, {28, 4}, o = 16, shift = 5としてもよい。この場合、予測画像Pred_[X][Y]は以下の式で生成される。
Pred_[x][y]=(7*Pred_C[x][y]+1*Pred_N[x][y]+4)>>3 距離=1画素
また、シフト値を距離に応じず固定する場合、例えば、{w1, w2} = {24, 8}, {28, 4}, o = 16, shift = 5としてもよい。この場合、予測画像Pred_[X][Y]は以下の式で生成される。
Pred_[x][y]=(24*Pred_C[x][y]+8*Pred_N[x][y]+16)>>5 距離=0画素
Pred_[x][y]=(28*Pred_C[x][y]+4*Pred_N[x][y]+16)>>5 距離=1画素
OBMC処理では、複数の隣接PU(対象PUの上左下右に隣接するPU)の動きパラメータを用いて予測画像が生成される。ここで、複数の隣接PUの動きパラメータから、Pred_[x][y]を生成する方法の概要を説明する。
Pred_[x][y]=(28*Pred_C[x][y]+4*Pred_N[x][y]+16)>>5 距離=1画素
OBMC処理では、複数の隣接PU(対象PUの上左下右に隣接するPU)の動きパラメータを用いて予測画像が生成される。ここで、複数の隣接PUの動きパラメータから、Pred_[x][y]を生成する方法の概要を説明する。
はじめに、OBMC補正部3093は、PU補間画像Pred_C[x][y]、および、対象PUの上側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像Pred_N[x][y]を上記式に適用して予測画像Pred_[x][y]を生成する。
予測画像Pred_[x][y]=((w1*予測画像Pred_C[x][y]+w2*OBMC補間画像Pred_N[x][y])+o)>>shift
次に、OBMC補正部3093は、対象PUの左側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像Pred_N[x][y]、および、先に生成した予測画像Pred[x][y]を用いて予測画像Pred_[x][y]を更新する。すなわち、以下の式により更新する。
次に、OBMC補正部3093は、対象PUの左側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像Pred_N[x][y]、および、先に生成した予測画像Pred[x][y]を用いて予測画像Pred_[x][y]を更新する。すなわち、以下の式により更新する。
予測画像Pred_[x][y]=((w1*予測画像Pred_[x][y]+w2*OBMC補間画像Pred_N[x][y])+o)>>shift
同様にして、OBMC補正部3093は、対象PUの下側および右側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像Pred_N[x][y]を用いて、予測画像Pred_[x][y]を更新する。OBMC補正部3093は、Pred_N[x][y]を対象PUの下側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像とし、以下の式により予測画像Pred_[x][y]を更新する。
同様にして、OBMC補正部3093は、対象PUの下側および右側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像Pred_N[x][y]を用いて、予測画像Pred_[x][y]を更新する。OBMC補正部3093は、Pred_N[x][y]を対象PUの下側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像とし、以下の式により予測画像Pred_[x][y]を更新する。
予測画像Pred_[x][y]=((w1*予測画像Pred_[x][y]+w2*OBMC補間画像Pred_N[x][y])+o)>>shift
OBMC補正部3093は、Pred_N[x][y]を対象PUの右側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像とし、以下の式により予測画像Pred_[x][y]を更新する。
OBMC補正部3093は、Pred_N[x][y]を対象PUの右側に隣接するPUの動きパラメータを用いて作成したOBMC補間画像とし、以下の式により予測画像Pred_[x][y]を更新する。
予測画像Pred_[x][y]=((w1*予測画像Pred_[x][y]+w2*OBMC補間画像Pred_N[x][y])+o)>>shift
上記の構成によれば、動き補償部3091は対象PUに隣接するPUの動きパラメータを用いて追加の補間画像を生成する。そして、動き補償部3091は生成した補間画像を用いて予測画像を生成することができる。そのため、予測精度の高い予測画像を生成することができる。
上記の構成によれば、動き補償部3091は対象PUに隣接するPUの動きパラメータを用いて追加の補間画像を生成する。そして、動き補償部3091は生成した補間画像を用いて予測画像を生成することができる。そのため、予測精度の高い予測画像を生成することができる。
また、OBMC処理の対象となるサブブロックのサイズは任意のサイズで良い(4×4〜PUサイズ)。また、OBMC処理の対象となるサブブロックを含むPUの分割様式についても、2N×N、N×2N、N×N等の任意の分割様式で良い。
(OBMC処理の流れ)
次に、本実施形態に係るOBMC処理の流れについて説明する。
次に、本実施形態に係るOBMC処理の流れについて説明する。
図12は、本実施形態に係る動き補償部3091の処理の流れを示すフローチャートである。また、図13はOBMC処理を表す疑似コードである。
補間画像生成部3092はPU補間画像Pred_C[x][y]を導出する(S1)。
動き補償部3091は、OBMCフラグOBMC_flagを受信し、OBMCフラグOBMC_flagが1であるか否かを判断する(S11)。OBMC_flagが1である、すなわち、OBMCがオンである場合(S11でYES)、補間画像生成部3092および、OBMC補正部3093は上above、左left、下bottom、右rightの各方向dirについて、ループ処理を行う(S2)。方向ループのループ変数dirに対し、方向セットdirSet(dirSet = {above、left、bottom、right})に含まれる方向の値を順に設定することでループ処理を行う(ループの終端はS8)。なお、above, left, bottom, rightに0, 1, 2, 3の値を割り当て、dirSet = {0, 1, 2, 3}に対して処理を行ってもよい。さらに、補間画像生成部3092およびOBMC補正部3093はPUを構成する各サブブロックについて、ループ処理を行う(S9)。すなわち、S9において、OBMC処理を行うサブブロックが定められる。サブブロックループのループ変数は座標(xSb, ySb)とし、補間画像生成部3092およびOBMC補正部3093はPU内のサブブロックの座標を順に設定することでループ処理を行う(ループの終端はS7)。なお、OBMCがオンでない場合(S11でNO)、補間画像生成部3092は、OBMC処理を行わず、PU補間画像Pred_C[x][y]が予測画像Pred_[x][y]となり、処理は終了する。
なお、対象CUが2N×2Nのパーティションに分割されており、かつ、予測モードがマージモード(スキップモードを含む)の場合、エントロピー復号部301はOBMCフラグOBMC_flagを符号化データから復号せず、OBMCが有効であることを示す値(1)を導出する。すなわち、対象CUが2N×2Nかつマージモードの場合には常にOBMC処理をオンとする。
以下、ループ中では、S2で定められた隣接サブブロックの方向dirおよびS9で定められた座標のサブブロックについて、S3、S4の条件を満たす場合に、補間画像生成部3092は、OBMC補間画像Pred_N[x][y]を生成し(S5)、OBMC補正部3093において予測画像を補正する(S6)。
サブブロックループ処理の詳細について説明する。OBMC補間画像生成部30912は、対象サブブロックの方向dirに位置する隣接サブブロックの予測パラメータがvalidであるか否かを判断する(S3)。なお、方向dirが上、左、下、右の場合の動きパラメータを参照する隣接サブブロックの位置(xNb, yNb)は各々、(xSb, ySb-1)、(xSb-1, ySb)、(xSb, ySb+nSbH)、(xSb+nSbW, ySb)とする。ここで、(xSb, ySb)はサブブロックの左上座標、nSbW、nSbHは、サブブロックの幅と高さである。
S3を詳細に説明すると、OBMC補間画像生成部30912は、当該方向の隣接サブブロックの動きパラメータが利用可能(valid)であるか否かを判断する。例えば、隣接サブブロックの予測モードがイントラ予測の場合、隣接サブブロックが画面外である場合、又は、隣接サブブロックの動きパラメータが未知の場合に、OBMC補間画像生成部30912は隣接サブブロックの動きパラメータは利用できないと判断する。換言すると、隣接サブブロック(xNb, yNb)の予測モードがイントラ予測以外のモードであり、かつ、隣接サブブロックの位置(xNb, yNb)が画面内であり、かつ、隣接サブブロック(xNb, yNb)の動きパラメータが既知を示すパラメータ(たとえば、参照ピクチャインデックスが-1以外)の場合、OBMC補間画像生成部30912は隣接サブブロックの動きパラメータを利用できると判断する。また、隣接サブブロックがイントラブロックコピーのPUである場合、隣接サブブロックは動きパラメータを保持するが、OBMC補間画像生成部30912は動きパラメータを利用できないと判断してもよい。ここで、「valid」とは、動きパラメータが利用可能と判断された場合を意味する。
隣接サブブロックの動きパラメータが未知の場合について、図14を用いて詳細に説明する。図14は、隣接サブブロックの動きパラメータが未知であるか否かを説明する図である。図14に示すように各CUの動きパラメータが、例えば、CU単位ごとにZスキャンオーダで導出されると、すでに処理された隣接CU(上および左の隣接CU)に含まれるPUの動きパラメータは既知となる。しかし、処理前CU(下および右の隣接CU)に含まれるPUの動きパラメータは未知となる。なお、同一CU内のPUの動きパラメータは同時に導出される。そのため、同一CU内においては左、上、右、下の隣接するPUの動きパラメータは既知となる。換言すると、CU境界においては、左および上に隣接しているPUの動きパラメータのみを用いてOBMC処理が実行される場合がある。一方で、PU境界においては、左、上、右、下に隣接しているPUの動きパラメータを用いてOBMC処理が実行される。
以下、本発明では、サブブロック(PU)の境界を以下のようにCU境界とPU境界に区別する。
CU境界:対象サブブロックと隣接サブブロックとの境界のうち、対象サブブロックを含むCUと隣接サブブロックを含むCUとが異なるCUに属するとき、この境界をCU境界と呼ぶ。たとえば図14では、対象PUと上隣接CUとの境界、対象PUと左隣接CUとの境界、対象PUと下隣接CUとの境界はCU境界である。
PU境界:対象サブブロックと隣接サブブロックとの境界のうち、CU境界以外の境界(対象サブブロックを含むCUと隣接サブブロックを含むCUが同一のCUに属する)をPU境界と呼ぶ。たとえば図14では、対象PUと対象PUの右側のPUとの境界はPU境界である。
隣接サブブロックがvalidである場合(S3でYES)、OBMC補間画像生成部30912は隣接サブブロック(xNb, yNb)の動きパラメータが、対象サブブロックの動きパラメータと等しいかどうかを判定する(S4)。ここでは、動きパラメータが異なる場合にDiffMotionAvailを1、等しい場合にDiffMotionAvailを0に設定する。逆に隣接サブブロックがvalidではない場合(S3でNOの場合)には、同一性判定処理(S4)、OBMC補間画像生成(S5)と、予測画像の補正(S6)を省略し、次のサブブロックの処理に遷移する(S7)
S4を詳細に説明すると、たとえば、OBMC補間画像生成部30912は、同一性判定に用いる動きパラメータとして、動きベクトルを用いてもよい。この場合、隣接サブブロック(xNb, yNb)の動きベクトルmvLXNが、対象サブブロックの動きベクトルmvLXと等しいかどうかを判断する。
S4を詳細に説明すると、たとえば、OBMC補間画像生成部30912は、同一性判定に用いる動きパラメータとして、動きベクトルを用いてもよい。この場合、隣接サブブロック(xNb, yNb)の動きベクトルmvLXNが、対象サブブロックの動きベクトルmvLXと等しいかどうかを判断する。
OBMC補間画像生成部30912は、同一性判定に用いる動きパラメータとして、動きベクトルに加えてさらに参照ピクチャインデックスに基づいて判断してもよい。
対象サブブロックの動きベクトルが(mvLX[0], mvLX[1])、参照ピクチャインデックスが(refIdxLX)、隣接サブブロックの動きベクトルが(mvLXN[0], mvLXN[1])、参照ピクチャインデックスが(refIdxLXN)である場合、動きベクトルまたは参照ピクチャインデックスが、対象サブブロックと隣接サブブロックとで異なる場合、OBMC補間画像生成部30912は、DiffMotionAvail =1に設定し、OBMC補間画像生成部30912は動きパラメータが異なると判断する(S4でNO)。
動きパラメータの同一性の判断を式で表すと、
DiffMotionAvail = (mvLX[0] != mvLXN[0]) || (mvLX[1] != mvLXN[1]) || (refIdxLX!= refIdxLXN)であり、動きパラメータが異なる場合、DiffMotionAvail =1となる。
DiffMotionAvail = (mvLX[0] != mvLXN[0]) || (mvLX[1] != mvLXN[1]) || (refIdxLX!= refIdxLXN)であり、動きパラメータが異なる場合、DiffMotionAvail =1となる。
また、動きベクトルおよび参照ピクチャインデックスが、対象サブブロックと隣接サブブロックとで等しい場合、DiffMotionAvail =0となる。この場合、OBMC補間画像生成部30912は動きパラメータが等しいと判断する(S4でYES)。
同一性判定に用いる動きパラメータとして、参照ピクチャインデックスの代わりにPOC(Picture Order Countを用いてもよい。この場合、動きベクトルまたはPOCが、対象サブブロックと隣接サブブロックとで異なる場合、OBMC補間画像生成部30912は、DiffMotionAvail =1に設定し、OBMC補間画像生成部30912は動きパラメータが異なると判断する(S4でNO)
動きパラメータの同一性の判断を式で表すと、
DiffMotionAvail = (mvLX[0] != mvLXN[0]) || (mvLX[1] != mvLXN[1]) || (refPOC!= refPOCN)
ここでrefPOCおよびrefPOCNは、対象サブブロックおよび隣接サブブロックの参照画像のPOCである。
動きパラメータの同一性の判断を式で表すと、
DiffMotionAvail = (mvLX[0] != mvLXN[0]) || (mvLX[1] != mvLXN[1]) || (refPOC!= refPOCN)
ここでrefPOCおよびrefPOCNは、対象サブブロックおよび隣接サブブロックの参照画像のPOCである。
隣接サブブロックの動きパラメータが、対象サブブロックの動きパラメータと等しくない場合(S4でNO)、OBMC補間画像生成部30912は対象サブブロックのOBMC補間画像Pred_N[x][y]を生成(導出)し(S5)、OBMC補正部3093は、対象サブブロックのOBMC補間画像Pred_N[x][y]およびPU補間画像Pred_C[x][y]を用いて予測画像Pred_[x][y]を生成または更新する(S6)。逆に動きパラメータが等しい(S4でYES)の場合には、対象サブブロックのOBMC補間画像Pred_N生成と、OBMC補間画像Pred_Nを用いた予測画像の補正を省略し、次のサブブロックの処理に遷移する(S7)。
S5を詳細に説明すると、OBMC補間画像生成部30912は、隣接サブブロックの動きパラメータを用いてOBMC補間画像Pred_N[x][y]を生成(導出)する。例えば、対象サブブロックの左上座標を(xSb, ySb)とし、サブブロックサイズをnSbW、nSbHとする。ここで、予測モードがサブブロック予測でない(PUを分割しないで処理する)場合、OBMC補間画像生成部30912はOBMC処理サイズの幅を示すnOBMCWおよび高さを示すnOBMCHを4画素に設定する。また、予測モードがサブブロック予測である場合、OBMC補間画像生成部30912はOBMC処理サイズであるnOBMCWおよびnOBMCHを2画素に設定する。
OBMC補間画像生成部30912は、dir == aboveのとき、対象サブブロックの上に隣接するサブブロック(xNb, yNb)=(xSb, ySb-1)の動きパラメータを参照し、(xSb, ySb)を左上座標とするサイズ(nSbW, nOBMCH)のブロックの補間画像を導出する。
また、OBMC補間画像生成部30912は、dir == leftのとき、対象サブブロックの左に隣接するサブブロック(xNb, yNb)= (xSb-1, ySb)の動きパラメータを参照し、(xSb, ySb)を左上座標とするサイズ(nOBMCW, nSbH)のブロックの補間画像を導出する。
また、OBMC補間画像生成部30912は、dir == bottomのとき、対象サブブロックの下に隣接するサブブロック(xNb, yNb)= (xSb, ySb+nSbH)の動きパラメータを参照し、(xSb, ySb+nSbH-nOBMCH)を左上座標とするサイズ(nSbW, nOBMCH)のブロックの補間画像を導出する。
また、OBMC補間画像生成部30912は、dir == rightのとき、対象サブブロックの右に隣接するサブブロック(xNb, yNb)= (xSb+nSbW, ySb)の動きパラメータを参照し、(xSb+nSbW-nOBMCW, ySb)を左上座標とするサイズ(nOBMCW, nSbH)のブロックの補間画像を導出する。
上記の処理は疑似コードで以下のように示すことができる。疑似コードでは、参照画像refPic、座標(xb, yb)、サイズnW, nH、動きベクトルmvRefの補間画像生成処理をInterpolation(refPic, xb, yb, nW, nH, mvRef)で表す。ここでは座標(x, y)の動きパラメータをmvLX[x][y]、refIdxLX[x][y]で表す。
nOBMCW = nOBMCH = (PUがサブブロックでない) ? 4 : 2
if ( dir == above )
mvRef = mvLXN[xSb][ySb-1]、refPic=refIdxLXN[xSb][ySb-1]
predN = Interpolation (refPic, xSb, ySb, nSbW, nOBMCH, mvRef )
else if ( dir == left )
mvRef = mvLXN[xSb-1][ySb]、refPic=refIdxLXN[xSb-1][ySb]
predN = Interpolation (refPic, xSb, ySb, nOBMCW, nSbH, mvRef )
else if ( dir == bottom )
mvRef = mvLXN[xSb][ySb+nSbH]、refPic=refIdxLXN[xSb][ySb+nSbH]
predN = Interpolation (refPic, xSb , ySb+nSbH-nOBMCH, nSbW, nOBMCH, mvRef )
else if ( dir == right )
mvRef = mvLXN[xSb+nSbW][ySb]、refPic=refIdxLXN[xSb+nSbW][ySb]
predN = Interpolation (refPic, xSb+nSbW-nOBMCW, ySb, nOBMCW, nSbH, mvRef )
次に、OBMC補正部3093は、対象サブブロックOBMC補間画像Pred_N[x][y]およびPU補間画像Pred_C[x][y]を参照して加重平均処理を行い、予測画像Pred_[x][y]を生成または更新する(S6)。
nOBMCW = nOBMCH = (PUがサブブロックでない) ? 4 : 2
if ( dir == above )
mvRef = mvLXN[xSb][ySb-1]、refPic=refIdxLXN[xSb][ySb-1]
predN = Interpolation (refPic, xSb, ySb, nSbW, nOBMCH, mvRef )
else if ( dir == left )
mvRef = mvLXN[xSb-1][ySb]、refPic=refIdxLXN[xSb-1][ySb]
predN = Interpolation (refPic, xSb, ySb, nOBMCW, nSbH, mvRef )
else if ( dir == bottom )
mvRef = mvLXN[xSb][ySb+nSbH]、refPic=refIdxLXN[xSb][ySb+nSbH]
predN = Interpolation (refPic, xSb , ySb+nSbH-nOBMCH, nSbW, nOBMCH, mvRef )
else if ( dir == right )
mvRef = mvLXN[xSb+nSbW][ySb]、refPic=refIdxLXN[xSb+nSbW][ySb]
predN = Interpolation (refPic, xSb+nSbW-nOBMCW, ySb, nOBMCW, nSbH, mvRef )
次に、OBMC補正部3093は、対象サブブロックOBMC補間画像Pred_N[x][y]およびPU補間画像Pred_C[x][y]を参照して加重平均処理を行い、予測画像Pred_[x][y]を生成または更新する(S6)。
S6を詳細に説明すると、OBMC補正部3093は、隣接サブブロックとの境界からの距離に応じて、OBMC補間画像Pred_N[x][y]およびPU補間画像Pred_C[x][y]を参照して加重平均処理を行う。加重平均処理については以下の通りである。
Pred_[x][y] = Pred_C[x][y]
dir == aboveのとき、OBMC補正部3093は、i = 0.. nSbW-1、j = 0.. nOBMCH-1として、予測画像Pred_[x][y]を下記の式から導出する。
dir == aboveのとき、OBMC補正部3093は、i = 0.. nSbW-1、j = 0.. nOBMCH-1として、予測画像Pred_[x][y]を下記の式から導出する。
x = xSb + i, y = ySb + j
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ j ], w2 = (1<<shift) - w1, o = (1<<(shift-1))
また、dir == leftのとき、OBMC補正部3093は、i = 0.. nOBMCW-1, j = 0.. nSbH-1として、予測画像Pred_[x][y]を下記の式から導出する。
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ j ], w2 = (1<<shift) - w1, o = (1<<(shift-1))
また、dir == leftのとき、OBMC補正部3093は、i = 0.. nOBMCW-1, j = 0.. nSbH-1として、予測画像Pred_[x][y]を下記の式から導出する。
x = xSb + i, y = ySb + j
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ i ] , w2 = (1<<shift) - w1, o = (1<<(shift-1))
また、dir == bottomのとき、OBMC補正部3093は、i = 0.. nSbW-1, j = 0.. nOBMCH-1として、予測画像Pred_[x][y]を下記の式から導出する。
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ i ] , w2 = (1<<shift) - w1, o = (1<<(shift-1))
また、dir == bottomのとき、OBMC補正部3093は、i = 0.. nSbW-1, j = 0.. nOBMCH-1として、予測画像Pred_[x][y]を下記の式から導出する。
x = xSb + i, y = ySb + nSbH - nOBMCH + j
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ nOBMCH-1 - j ] , w2 = (1<<shift) - w1, o = (1<<(shift-1))
また、dir == rightのとき、OBMC補正部3093は、i = 0.. nOBMCW-1, j = 0.. nSbH-1として、予測画像Pred_[x][y]を下記の式から導出する。
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ nOBMCH-1 - j ] , w2 = (1<<shift) - w1, o = (1<<(shift-1))
また、dir == rightのとき、OBMC補正部3093は、i = 0.. nOBMCW-1, j = 0.. nSbH-1として、予測画像Pred_[x][y]を下記の式から導出する。
x = xSb + nSbW - nOBMCW + i, y = ySbH + j
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ nOBMCW-1 - i ] , w2 = (1<<shift) - w1, o = (1<<(shift-1))
上述のように重みは、境界からの距離(画素数)に応じて設定されており、重みテーブルweightOBMCは、以下の通りとしてもよい。
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
w1 = weightOBMC [ nOBMCW-1 - i ] , w2 = (1<<shift) - w1, o = (1<<(shift-1))
上述のように重みは、境界からの距離(画素数)に応じて設定されており、重みテーブルweightOBMCは、以下の通りとしてもよい。
weightOBMC[] = {24, 28, 30, 31}, shift = 5
w1[i]=weightOBMC[i], w2=(1<<shift)-w1
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
weightOBMC[] = {8, 4, 2, 1}, shift = 5
w1[i]=weightOBMC[i], w2=(1<<shift)-w1
Pred_[x][y] = (w2 * Pred_[x][y]] + w1 * Pred_N[i][j] + o) >> shift
次に、動き補償部3091は、OBMC処理対象のサブブロックのうち、未処理のサブブロックがあるか否かを判断する(S7)。
w1[i]=weightOBMC[i], w2=(1<<shift)-w1
Pred_[x][y] = (w1 * Pred_[x][y] + w2 * Pred_N[i][j] + o) >> shift
weightOBMC[] = {8, 4, 2, 1}, shift = 5
w1[i]=weightOBMC[i], w2=(1<<shift)-w1
Pred_[x][y] = (w2 * Pred_[x][y]] + w1 * Pred_N[i][j] + o) >> shift
次に、動き補償部3091は、OBMC処理対象のサブブロックのうち、未処理のサブブロックがあるか否かを判断する(S7)。
PU内に未処理のサブブロックがない場合(S7でNO)、動き補償部3091は、対象PUの全ての方向の隣接サブブロックの動きパラメータを用いてS3〜S6のOBMC処理が行われたか否かを判断する(S8)。つまり、方向セットdirSetに含まれるすべての方向に対して処理が行われたかを判断する。
全ての方向の隣接サブブロックの動きパラメータを用いてOBMC処理が行われた場合(S8でNO)、処理は終了する。
なお、PU内に未処理のサブブロックがある場合(S7でYES)、S9に移行し、次のサブブロックの処理を継続する。また、全ての方向の隣接サブブロックの動きパラメータを用いてOBMC処理が行われていない場合(S8でYES)、S2に移行し、次の方向の処理を行う。
なお、OBMC_flag=0の場合、PRED_[][]=PRED_C[][]である。
(OBMC処理の詳細)
次に、図15〜図19を参照して、本実施形態におけるOBMC処理の詳細について説明する。以降では、PUとCUが等しい場合、PUをCUと置き換えてもよい。OBMC処理は、対象PUの動き補間(PU補間画像生成)に加え、対象PUにおいて隣接PUの動き情報を利用してOBMC補間(OBMC補間画像生成)を行う必要がある。そのため、画像データにアクセスするためのメモリバンドが大きくなる。そこで、本実施形態では、サブブロック予測モードの場合に、OBMC処理の対象となる境界を変更する、換言すれば、実質的にOBMC処理の処理対象ブロックを4×4画素よりも大きくする。これにより、OBMC処理が行われる境界を減らすことができ、メモリバンドを削減することができる。なお、上述したようにOBMC処理は、動き補償部3091が行う。
次に、図15〜図19を参照して、本実施形態におけるOBMC処理の詳細について説明する。以降では、PUとCUが等しい場合、PUをCUと置き換えてもよい。OBMC処理は、対象PUの動き補間(PU補間画像生成)に加え、対象PUにおいて隣接PUの動き情報を利用してOBMC補間(OBMC補間画像生成)を行う必要がある。そのため、画像データにアクセスするためのメモリバンドが大きくなる。そこで、本実施形態では、サブブロック予測モードの場合に、OBMC処理の対象となる境界を変更する、換言すれば、実質的にOBMC処理の処理対象ブロックを4×4画素よりも大きくする。これにより、OBMC処理が行われる境界を減らすことができ、メモリバンドを削減することができる。なお、上述したようにOBMC処理は、動き補償部3091が行う。
図15に、上述した一般的なOBMC処理の概要を示す。図15に示すように、一般的なOBMC処理では、4×4ブロックを処理単位とし、上方向(dir=0)、左方向(dir=1)、下方向(dir=2)、右方向(dir=3)の順で処理を行い、図12においてステップS3でYES、かつ、ステップS4でNOの場合には、4×4ブロックの境界に対してOBMC処理された結果を用いて予測画像を生成している。
これに対し、本実施形態に係る動き補償部3091は、図16に示すように、OBMC処理自体は4×4ブロックの単位で、上方向(dir=0)、左方向(dir=1)、下方向(dir=2)、右方向(dir=3)の順で行っていくが、当該4×4ブロックを含む8×8ブロックの境界に当たらない境界に対してはOMBC処理を行わない。
より詳細に、図17を参照して説明する。図17の(a)に示すように、一般的なOBMC処理では、4×4ブロックの境界に対し処理を行う。一方、本実施形態では、図17の(b)に示すように、動き補償部3091は、OBMC処理自体は4×4ブロック毎に行っていくが、当該4×4ブロックの境界のうち、当該4×4ブロックを含む8×8ブロックの境界に当たらない境界(図17の(b)の破線部)に対してはOBMC処理を行わない。
上記の処理を図11に示した機能ブロックを用いて説明すると次の通りである。PU補間画像生成部30911は、対象ブロック(PU)のPU補間画像を4×4ブロック毎に生成する。また、OBMC補間画像生成部30912は、図12においてステップS3でYES、かつ、ステップS4でNOの場合には、対象ブロックの各4×4ブロックの上方向、左方向、下方向、右方向の境界のうち、当該4×4ブロックの境界、かつ8×8ブロックの境界に対しOBMC補間画像を生成する。そして、OBMC補正部3093は当該8×8ブロックの境界については、PU補間画像生成部30911が生成したPU補間画像をOBMC補間画像生成部30912が生成したOBMC補間画像によって補正する。
動き補償部3091は、当該8×8ブロックの境界以外については、PU補間画像生成部30911によって生成されたPU補間画像を出力し、当該8×8ブロックの境界については、OBMC補正部3093は、PU補間画像生成部によって生成されたPU補間画像をOBMC補間画像生成部30912によって生成されたOBMC補間画像によって補正し、出力する。
上記の処理を疑似コードで示すと図18または図19の通りとなる。なお、図18の疑似コード2001において、subX、subYは、処理対象サブブロックの座標を示し、nPbHはPUの高さを示し、nPbWはPUの幅を示す。また、上述したようにdirは、方向を示し、dir=0は処理対象ブロックの上方向、dir=1は右方向、dir=2は下方向、dir=3は右方向を示す。
疑似コード2001に示すように、動き補償部3091は、境界が、上方向(dir=0)、または下方向(dir=2)、すなわち境界が水平方向の場合で、Y座標(subY)が4の倍数であり、かつ8の倍数でないとき、OBMC処理を行わない(疑似コード2021のcontinue)。また、境界が、左方向(dir=1)、または右方向(dir=3)、すなわち境界が垂直方向の場合で、X座標(subX)が4の倍数であり、かつ8の倍数でないとき、OBMC処理を行わない(疑似コード2021のcontinue)。そして、上記以外の場合にOBMC処理を行う。ここでOBMC処理は、例えば図12のステップS3からステップS6に示す処理である。
また、疑似コード2001は、図19の疑似コード2101のように示すこともできる。疑似コード2101では、(subX,subY)は、サブブロック(4×4)単位の座標である。
以上のように、画像復号装置31は、符号化データを復号するものであって、第1のサイズ(例えば、4×4ブロック)を有する対象サブブロックの境界における予測画像の生成に用いる追加補間画像(OBMC補間画像)を、当該境界を挟んで隣接する隣接ブロックのインター予測パラメータを用いて生成する追加補間画像生成部(OBMC補間画像生成部30912)と、前記対象ブロックのインター予測パラメータを用いて生成される補間画像を用いて生成する補間画像生成部(PU補間画像生成部30911)と、前記補間画像および前記追加補間画像を用いて当該対象ブロックの前記予測画像を生成する補正部(OBMC補正部3093)と、を備え、前記追加補間画像生成部は、前記対象サブブロックを複数含む第2のサイズ(例えば、8×8ブロック)を有する拡大ブロックのブロック境界のみ、前記追加補間画像による補正処理を行う。すなわち、拡大ブロックのブロック境界のみ、前記追加補間画像を生成してもよい。
これにより、隣接ブロックのインター予測パラメータを用いて生成された追加補間画像を用いて生成される予測画像は、拡大ブロックの境界のみとなる。よって、対象サブブロックの境界であっても、拡大ブロックの境界ではない場合、追加補間画像は生成する必要はない。したがって、追加補間画像が生成される場合を少なくすることができ、追加補間画像の生成に必要なメモリバンドを削減することができる。
(画像符号化装置の構成)
次に、本実施形態に係る画像符号化装置11の構成について説明する。図20は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
次に、本実施形態に係る画像符号化装置11の構成について説明する。図20は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は画像Tの各ピクチャについて、そのピクチャを分割した領域である符号化ユニットCU毎に予測ユニットPUの予測画像Pを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から復号済のブロックを読み出す。予測画像生成部101は、対象PUを起点として動きベクトルが示す参照画像上の位置にあるブロックを読み出す。イントラ予測モードでは、使用する隣接PUの画素値を参照ピクチャメモリ109から読み出し、PUの予測画像Pを生成する。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作である。例えば、図21は、予測画像生成部101に含まれるインター予測画像生成部1011の構成を示す概略図である。インター予測画像生成部1011は、動き補償部10111を含んで構成される。動き補償部10111は、OBMC処理を行う構成としてもよく、上述の動き補償部3091と同様の構成であるためここでの説明を省略する。
予測画像生成部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(図3等、参照)がインター予測パラメータを導出する構成と一部同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたイントラ予測モードIntraPredModeから、符号化するための形式(例えばMPM_idx、rem_intra_luma_pred_mode等)を導出する。
(インター予測パラメータ符号化部の構成)
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、図4のインター予測パラメータ復号部303に対応する手段であり、図23に構成を示す。
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、図4のインター予測パラメータ復号部303に対応する手段であり、図23に構成を示す。
インター予測パラメータ符号化部112は、インター予測パラメータ符号化制御部1121、AMVP予測パラメータ導出部1122、減算部1123、サブブロック予測パラメータ導出部1125、及び図示しない、分割モード導出部、マージフラグ導出部、インター予測識別子導出部、参照ピクチャインデックス導出部、ベクトル差分導出部などを含んで構成され、分割モード導出部、マージフラグ導出部、インター予測識別子導出部、参照ピクチャインデックス導出部、ベクトル差分導出部は各々、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に出力する。
インター予測パラメータ符号化制御部1121は、マージインデックス導出部11211とベクトル候補インデックス導出部11212を含む。マージインデックス導出部11211は、符号化パラメータ決定部110から入力された動きベクトルと参照ピクチャインデックスを、予測パラメータメモリ108から読み出したマージ候補のPUが持つ動きベクトルと参照ピクチャインデックスと比較して、マージインデックスmerge_idxを導出し、エントロピー符号化部104に出力する。マージ候補とは、符号化対象となる符号化対象CUから予め定めた範囲にある参照PU(例えば、符号化対象ブロックの左下端、左上端、右上端に接する参照PU)であって、符号化処理が完了したPUである。ベクトル候補インデックス導出部11212は予測ベクトルインデックスmvp_LX_idxを導出する。
サブブロック予測パラメータ導出部1125には、符号化パラメータ決定部110がサブブロック予測モードの使用を決定した場合、subPbMotionFlagの値に従って、空間サブブロック予測、時間サブブロック予測、アフィン予測、マッチング動き導出のいずれかのサブブロック予測の動きベクトルと参照ピクチャインデックスを導出する。動きベクトルと参照ピクチャインデックスは、画像復号装置の説明で述べたように、隣接PU、参照ピクチャブロック等の動きベクトルや参照ピクチャインデックスを予測パラメータメモリ108から読み出し、導出する。
AMVP予測パラメータ導出部1122は、上述のAMVP予測パラメータ導出部3032(図4参照)と同様な構成を有する。
すなわち、予測モードpredModeがインター予測モードを示す場合、AMVP予測パラメータ導出部1122には符号化パラメータ決定部110から動きベクトルmvLXが入力される。AMVP予測パラメータ導出部1122は、入力された動きベクトルmvLXに基づいて予測ベクトルmvpLXを導出する。AMVP予測パラメータ導出部1122は、導出した予測ベクトルmvpLXを減算部1123に出力する。なお、参照ピクチャインデックスrefIdx及び予測ベクトルインデックスmvp_LX_idxは、エントロピー符号化部104に出力される。
減算部1123は、符号化パラメータ決定部110から入力された動きベクトルmvLXから、AMVP予測パラメータ導出部1122から入力された予測ベクトル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に代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
(第2の実施形態)
本実施形態は、画像の分割を制限することにより、必要なメモリバンドを抑制するものである。以下、本実施形態の詳細について説明する。
本実施形態は、画像の分割を制限することにより、必要なメモリバンドを抑制するものである。以下、本実施形態の詳細について説明する。
(画像復号装置31の構成)
図24に、本実施形態に係る画像復号装置31の構成を示す。図24は、本実施形態に係る画像復号装置31の要部構成を示すブロック図である。図24では、図を簡略化するために、一部の部材の図示を省略している。また、説明の便宜上、図3に示した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図24に、本実施形態に係る画像復号装置31の構成を示す。図24は、本実施形態に係る画像復号装置31の要部構成を示すブロック図である。図24では、図を簡略化するために、一部の部材の図示を省略している。また、説明の便宜上、図3に示した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図24に示すように、画像復号装置31は、復号モジュール9、CN情報復号部10(復号部)、予測画像生成部308、逆量子化・逆DCT部311、参照ピクチャメモリ306、加算部312、ループフィルタ305、ヘッダ復号部19、及びCU復号部20を備えている。CU復号部20は、さらにPU情報復号部12及びTT情報復号部13を備えており、TT情報復号部13は、さらにTU復号部22を備えている。
復号モジュール9は、バイナリデータからシンタックス値を復号する復号処理を行う。より具体的には、復号モジュール9は、供給元から供給される符号化データ及びシンタックス種別に基づいて、CABAC等のエントロピー符号化方式により符号化されているシンタックス値を復号し、復号したシンタックス値を供給元に返す。
以下に示す例では、符号化データ及びシンタックス種別の供給元は、CN情報復号部10、CU復号部20(PU情報復号部12及びTT情報復号部13)である。
ヘッダ復号部19は、画像符号化装置11から入力された符号化データのVPS(video parameter set)、SPS、PPS、スライスヘッダを復号する。
CN情報復号部10は、復号モジュール9を用いて、画像符号化装置11から入力された符号化データについて、符号化ツリーユニット(符号化ツリーユニット毎)及び符号化ノード(CN,符号化ユニットCU)の復号処理を行う。CN情報復号部10は、具体的には、以下の手順により符号化データから、CTU情報及びCN情報を復号する。
まず、CN情報復号部10は、復号モジュール9を用いて、CTUに含まれるCTU情報からツリーユニットヘッダCTUHを復号する。次に、CN情報復号部10は、CNに含まれるCN情報から、対象CNをQT分割するか否かを示すQT分割フラグ、対象CNをBT分割またはTT分割するか否かを示すPT分割フラグ、BT分割またはTT分割の分割方向を示す分割方向フラグ、PT分割の分割方法(BT分割またはTT分割)を示す分割モード選択フラグを復号し、QT分割フラグ及びPT分割フラグがさらなる分割を通知しなくなるまで対象CNを再帰的に分割し復号する。最後に、CTU情報からツリーユニットフッタCTUFを復号する。
ツリーユニットヘッダCTUH及びツリーユニットフッタCTUFには、対象符号化ツリーユニットの復号方法を決定するために画像復号装置31が参照する符号化パラメータが含まれる。また、CN情報には、QT分割フラグ、PT分割フラグ、分割方向フラグ及び分割モード選択フラグの他、対象CN及び下位または上位の符号化ノードで適用されるパラメータを含んでいてもよい。
CU復号部20は、PU情報復号部12及びTT情報復号部13から構成され、最下位の符号化ノードCN(すなわちCU)のPUI情報及びTTI情報を復号する。
PU情報復号部12では各PUのPU情報(マージフラグ(merge_flag)、マージインデックス(merge_idx)、予測動きベクトルインデックス(mvp_idx)、参照画像インデックス(ref_idx)、インター予測識別子(inter_pred_idc)、差分ベクトル(mvd)、及びOBMCフラグOBMC_flag等)を、復号モジュール9を用いて復号する。
TT情報復号部13は、各TTI(TU分割フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等、及びTU)を、復号モジュール9を用いて復号する。
また、TT情報復号部13は、TU復号部22を備えている。TU復号部22は、TUに残差が含まれている場合に、QP更新情報(量子化補正値)を復号する。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値を示す値である。またTU復号部22は、量子化予測残差(residual_coding)を復号する。
CN情報復号部10によるCN情報復号の動作について、図25を参照して説明する。図25は、本発明の一実施形態に係るCN情報復号部10のQT情報復号処理、BT/TT情報復号処理を説明するフローチャートである。
CN情報復号部10によるCN情報復号では、QT情報復号と、BT情報またはTT情報(BT/TT情報)復号とを行う。まず、CN情報復号部10によるQT情報復号について順に説明する。
まず、CN情報復号部10は、符号化データからCN情報を復号し、再帰的に符号化ノード(CN:Coding Node)を復号する。具体的には、CN情報復号部10は、QT情報を復号し、対象符号化ツリーcoding_quadtree(x0, y0, log2CbSize, cqtDepth)を復号する。なお、x0, y0は、対象符号化ノードの左上座標、log2CbSizeは符号化ノードのサイズであるCNサイズの、2を底とした対数である対数CNサイズ(例えば、CNサイズが64, 128, 256であれば6, 7, 8)である。cqtDepthは符号化ノードの階層を示すCN階層(QT深度)である。
CN情報復号部10は、復号したCN情報にQT分割フラグがあるか否かを判定する。具体的には、CN情報復号部10は、対数CNサイズlog2CbSizeが所定の最小CNサイズの対数値MinCbLog2SizeYより大きいか否かを判定する。対数CNサイズlog2CbSizeがMinCbLog2SizeYより大きい場合には(S1411でYES)、QT分割フラグがあると判定し、S1421に遷移する。それ以外の場合には(S1411でNO)、S1422に遷移する(S1411)。
対数CNサイズlog2CbSizeがMinCbLog2SizeYより大きいと判定された場合、CN情報復号部10は、シンタックス要素であるQT分割フラグ(split_cu_flag)を復号する(S1421)。
それ以外の場合(対数CNサイズlog2CbSizeがMinCbLog2SizeY以下)、つまり、符号化データにQT分割フラグsplit_cu_flagが現れない場合、CN情報復号部10は、符号化データからのQT分割フラグsplit_cu_flagの復号を省略し、QT分割フラグplit_cu_flagを0として導出する(S1422)。
QT分割フラグsplit_cu_flagが0以外(=1)である場合(S1431でYES)、CN情報復号部10は、一階層下に移行してステップS1411以降の処理を繰り返す。それ以外の場合(1431でYES、QT分割フラグsplit_cu_flagが0の場合)には、BT/TT情報復号処理に遷移する。
CN情報復号部10は、QT分割を行う。具体的には、CN情報復号部10は、CN階層cqtDepth+ 1の位置(x0, y0)、(x1, y0)、(x0, y1)、(x1, y1)で、対数CNサイズlog2CbSize - 1の4つの符号化ノードCNを復号する(S1441)。
coding_quadtree(x0, y0, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x1, y0, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x0, y1, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x1, y1, log2CbSize - 1, cqtDepth + 1 )
ここで、x0, y0は、対象符号化ノードの左上座標、x1, y1は、以下の式のように、(x0,y0)に、対数CNサイズ(1 <<log2CbSize)の1/2を加えて導出される。
x1 = x0 + (1<<( log2CbSize - 1 ) )
y1 = y0 + (1<<( log2CbSize -1 ) )
なお、<<は左シフトを示す。1<<Nは2のN乗と同値である(以下同様)。同様に>>は右シフトを示す。
coding_quadtree(x0, y0, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x1, y0, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x0, y1, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x1, y1, log2CbSize - 1, cqtDepth + 1 )
ここで、x0, y0は、対象符号化ノードの左上座標、x1, y1は、以下の式のように、(x0,y0)に、対数CNサイズ(1 <<log2CbSize)の1/2を加えて導出される。
x1 = x0 + (1<<( log2CbSize - 1 ) )
y1 = y0 + (1<<( log2CbSize -1 ) )
なお、<<は左シフトを示す。1<<Nは2のN乗と同値である(以下同様)。同様に>>は右シフトを示す。
そして、CN情報復号部10は、符号化ノードの階層を示すCN階層cqtDepthに1を加算し、符号化ユニットサイズの対数値である対数CNサイズlog2CbSizeを1だけ減算(CNサイズを1/2)して更新する。
cqtDepth = cqtDepth + 1
log2CbSize = log2CbSize - 1
CN情報復号部10は、下位の符号化ノードにおいても、更新された左上座標、対数CNサイズ、CN階層を用いて、S1411から開始されるQT情報復号を継続する。
cqtDepth = cqtDepth + 1
log2CbSize = log2CbSize - 1
CN情報復号部10は、下位の符号化ノードにおいても、更新された左上座標、対数CNサイズ、CN階層を用いて、S1411から開始されるQT情報復号を継続する。
次に、CN情報復号部10によるBT/TT情報復号処理の概要について、図26を参照して説明する。図26は、CN情報復号部10のQT情報復号処理の流れの一例の概要を示すフローチャートである。
上述のS1431にて、QT分割フラグsplit_cu_flagが0の場合に、CN情報復号部10は対象ブロックがBTあるいはTT分割できるか否かを対象ブロックのサイズ等から判定し、PT分割フラグ(MT分割フラグ)の復号の要否を判定する(S1501:PT分割フラグ判定)。PT分割フラグは対象ブロックをBT分割またはTT分割するか否かを示すフラグである。PT分割フラグの復号が「要」である場合(S1501でYES)、CN情報復号部10はPT分割フラグを復号する(S1502)。続いて、CN情報復号部10は復号したPT分割フラグが0であるか否かを判定する(S1503)。PT分割フラグが0である場合(S1503でNO)、処理は終了する。PT分割フラグが0以外である場合(S1503でYES)、CN情報復号部10は、分割対象ブロックの分割方向が設定されているブロックの分割の制限等によって一意で決まるか否かなどを判定し、分割方向フラグの復号の要否の判定を行う(S1504:分割方向フラグ判定)。分割方向フラグの復号が「要」である場合(分割方向が一意に決まらない場合等)(S1504でYES)、CN情報復号部10は分割方向フラグを復号し(S1505)、分割方向を決定し、処理はS1506に続く。分割方向フラグの復号が「不要」である場合(分割方向が一意で決まる場合等)(S1504でNO)、CN情報復号部10は分割方向フラグを復号せずに、処理はS1506に続く。S1506にて、CN情報復号部10は、分割対象ブロックの分割モード(TT分割、BT分割)が設定されているブロックの分割の制限等によって分割モードが一意で決まるか否かなどを判定し、分割モード選択フラグの復号の要否の判定を行う(S1506:分割モード選択フラグ判定)。分割モード選択フラグの復号が「要」である場合(分割モードが一意で決まらない場合等)(S1506でYES)、CN情報復号部10は分割モード選択フラグを復号し(S1507)、分割モードを決定し、処理はS1508に続く。分割モード選択フラグの復号がの復号が「不要」である場合(分割モードが一意で決まる場合等)(S1506でNO)、CN情報復号部10は分割モード選択フラグを復号せずに、処理はS1508に続く。続いて、S1508にて、CN情報復号部10は分割対象ブロックを決定した方向と決定した分割モードとによって分割する(S1508)。続いて、当該分割によって生じたブロックに対してBT/TT情報復号処理を繰り返し行うループ処理を行う(S1509、S1510、S1511)。当該ループ処理が終了すると処理は終了する。
(制限する分割パターン)
次に、本実施形態に係るCN情報復号部10が制限するCN(CU)の分割パターンについて、図27を用いて説明する。図27の(a)〜(f)は、本実施形態において制限される分割パターンを示す図である。なお、図27の「OK」は当該分割が許されることを示し、「NG」は当該分割が許されないことを示す。
次に、本実施形態に係るCN情報復号部10が制限するCN(CU)の分割パターンについて、図27を用いて説明する。図27の(a)〜(f)は、本実施形態において制限される分割パターンを示す図である。なお、図27の「OK」は当該分割が許されることを示し、「NG」は当該分割が許されないことを示す。
(QT分割の禁止)
本実施形態では、分割後のブロックサイズが4×4画素とならないようにCUの分割パターンを制限する(図27の(a))。例えば、CUサイズが8×8画素(図27の(b))の場合にはQT(Quad tree)分割(4分木分割)を禁止(制限)する。すなわち、CUサイズが8×8画素より大きい場合のみ、換言すれば、CUサイズW>8(log2W>3)の場合のみQT分割を許す。図28に示すシンタックス2701で言えば、SYN1410におけるMinCbLog2SizeYの値を3とする。これにより、CUサイズが8×8画素より大きい場合のみQT分割を許すことができる。
本実施形態では、分割後のブロックサイズが4×4画素とならないようにCUの分割パターンを制限する(図27の(a))。例えば、CUサイズが8×8画素(図27の(b))の場合にはQT(Quad tree)分割(4分木分割)を禁止(制限)する。すなわち、CUサイズが8×8画素より大きい場合のみ、換言すれば、CUサイズW>8(log2W>3)の場合のみQT分割を許す。図28に示すシンタックス2701で言えば、SYN1410におけるMinCbLog2SizeYの値を3とする。これにより、CUサイズが8×8画素より大きい場合のみQT分割を許すことができる。
(BT分割の禁止)
また、CUサイズが4×8画素(図27の(c))、または8×4画素(図27の(d))の場合、BT(Binary tree)分割(2分木分割)を禁止(制限)する。すなわち、CUサイズが8×4画素または4×8画素よりも大きい場合のみ、換言すれば、CUサイズW*HがW*H>32の場合のみBT分割を許可する。図30に示すシンタックス3001で言えば、SYN1460bにおけるlog2CbWidth + log2CbHeight > 5が、CUサイズが4×8画素、または8×4画素より大きい場合のみ、BT分割を許すことを示している。なお、図29には、従来の構成、すなわち、CUサイズが4×8画素、または8×4画素より大きい場合における分割を制限しない場合のシンタックス2801を示している。図29のシンタックス2801のSYN1460aと図30のシンタックス3001のSYN1460bを比較すれば分かるように、本実施形態では、BT分割を実行する条件に「log2CbWidth + log2CbHeight > 5」が追加されている。
また、CUサイズが4×8画素(図27の(c))、または8×4画素(図27の(d))の場合、BT(Binary tree)分割(2分木分割)を禁止(制限)する。すなわち、CUサイズが8×4画素または4×8画素よりも大きい場合のみ、換言すれば、CUサイズW*HがW*H>32の場合のみBT分割を許可する。図30に示すシンタックス3001で言えば、SYN1460bにおけるlog2CbWidth + log2CbHeight > 5が、CUサイズが4×8画素、または8×4画素より大きい場合のみ、BT分割を許すことを示している。なお、図29には、従来の構成、すなわち、CUサイズが4×8画素、または8×4画素より大きい場合における分割を制限しない場合のシンタックス2801を示している。図29のシンタックス2801のSYN1460aと図30のシンタックス3001のSYN1460bを比較すれば分かるように、本実施形態では、BT分割を実行する条件に「log2CbWidth + log2CbHeight > 5」が追加されている。
(ABT分割の禁止)
さらに、図27の(e)に示すようなABT(Asynmetrics Binary tree)分割(非対称2分木分割)において、上記BT分割制限の代わりに、CUサイズが2x8画素と6x8画素とに分割、または、3x8画素と5x8画素とに分割される分割を禁止(制限)する構成であってもよい。すなわち、CUサイズが8x8画素の場合、ABT分割せず、CUサイズW*HがW*H>64(log2CbWidth + log2CbHeight > 6)の場合のみABT分割を許すものであってもよい。
さらに、図27の(e)に示すようなABT(Asynmetrics Binary tree)分割(非対称2分木分割)において、上記BT分割制限の代わりに、CUサイズが2x8画素と6x8画素とに分割、または、3x8画素と5x8画素とに分割される分割を禁止(制限)する構成であってもよい。すなわち、CUサイズが8x8画素の場合、ABT分割せず、CUサイズW*HがW*H>64(log2CbWidth + log2CbHeight > 6)の場合のみABT分割を許すものであってもよい。
(TT分割の禁止)
また、図27の(f)に示すようなCUサイズが2x8画素、4x8画素、2x8画素に分割されるTT(triple tree)分割(3分木分割)を禁止(制限)する構成であってもよい。すなわち、CUサイズが8×8画素の場合、TT分割せず、CUサイズW*HがW*H>64(log2CbWidth + log2CbHeight > 6)の場合のみTT分割を許すものであってもよい。
また、図27の(f)に示すようなCUサイズが2x8画素、4x8画素、2x8画素に分割されるTT(triple tree)分割(3分木分割)を禁止(制限)する構成であってもよい。すなわち、CUサイズが8×8画素の場合、TT分割せず、CUサイズW*HがW*H>64(log2CbWidth + log2CbHeight > 6)の場合のみTT分割を許すものであってもよい。
以上のように、本実施形態に係る画像復号装置31は、符号化データを復号する画像復号装置31において、ブロック毎にシンタックスを復号する復号部(CN情報復号部10)を備え、上記復号部は、ブロック分割において、所定のサイズ以下のブロックへの分割を禁止し、上記所定のサイズは、4×4画素以上の大きさを有することを特徴としている。
これにより、所定のサイズ以下のブロックに分割されることがなくなるため、分割されるブロックが増えることにより必要なメモリバンドが大きくなってしまうことを抑制することができる。
(第3の実施形態)
動きベクトルの制御を切り替えるフラグ(整数ベクトルであるか否かを示すフラグ)mvd_quant_flagに応じて、復号した差分ベクトルから導出される動きベクトルの精度を切り替える構成を説明する。この構成では、mvd_quant_flagが整数ベクトルを示す1である場合には、予測ベクトルmvpLXを整数ベクトルにラウンドroundし、差分ベクトルの絶対値mvdAbsValを左シフトして整数ベクトルとして加算する。この場合(mvd_quant_flagが1の場合)、予測ベクトルも差分ベクトルも整数ベクトルであるから動きベクトルは常に整数ベクトルになる。動きベクトルが1/M精度の場合、整数化に必要なシフト値をshiftSで示す(shiftS=log2(M))。例えば1/4精度であれば、shiftS=2になる。なお、動きベクトルの精度は、1画素精度と1/4画素精度の2選択に限定されず、4, 1, 1/4画素精度や2, 1, 1/4画素の3選択でもよい。動きベクトルの制御を整数ベクトルに制限する場合においては、小数精度の成分を符号化しないため、小数精度が必要ではない場合の差分動きベクトルの符号量を削減することができる。本実施形態では、整数ベクトルに制限する場合における差分ベクトルを高効率に符号化することができる。
動きベクトルの制御を切り替えるフラグ(整数ベクトルであるか否かを示すフラグ)mvd_quant_flagに応じて、復号した差分ベクトルから導出される動きベクトルの精度を切り替える構成を説明する。この構成では、mvd_quant_flagが整数ベクトルを示す1である場合には、予測ベクトルmvpLXを整数ベクトルにラウンドroundし、差分ベクトルの絶対値mvdAbsValを左シフトして整数ベクトルとして加算する。この場合(mvd_quant_flagが1の場合)、予測ベクトルも差分ベクトルも整数ベクトルであるから動きベクトルは常に整数ベクトルになる。動きベクトルが1/M精度の場合、整数化に必要なシフト値をshiftSで示す(shiftS=log2(M))。例えば1/4精度であれば、shiftS=2になる。なお、動きベクトルの精度は、1画素精度と1/4画素精度の2選択に限定されず、4, 1, 1/4画素精度や2, 1, 1/4画素の3選択でもよい。動きベクトルの制御を整数ベクトルに制限する場合においては、小数精度の成分を符号化しないため、小数精度が必要ではない場合の差分動きベクトルの符号量を削減することができる。本実施形態では、整数ベクトルに制限する場合における差分ベクトルを高効率に符号化することができる。
以下、上記処理の詳細は以下のステップとして表現できる。
S1:予測ベクトルを整数ベクトルにラウンドする。
mvpLX[0] = round(mvpLX[0], shiftS)
mvpLX[1] = round(mvpLX[1], shiftS)
動きベクトル(mv[0], mv[1])のラウンド関数は、以下を用いることができるがこれに限定されない。
mvpLX[1] = round(mvpLX[1], shiftS)
動きベクトル(mv[0], mv[1])のラウンド関数は、以下を用いることができるがこれに限定されない。
round(mv[0]) = sign(mv[0]) * ( (abs (mv[0]) + offsetS) >> shiftS ) << shiftS
round(mv[0]) = sign(mv[0]) * ( (abs (mv[0]) + offsetS) >> shiftS ) << shiftS
ここでoffsetS = 1 << (shiftS-1)
S2:差分動きベクトルの逆量子化を行う。具体的には、差分動きベクトル絶対値を左シフトして整数ベクトル精度の動きベクトル絶対値を導出する。
round(mv[0]) = sign(mv[0]) * ( (abs (mv[0]) + offsetS) >> shiftS ) << shiftS
ここでoffsetS = 1 << (shiftS-1)
S2:差分動きベクトルの逆量子化を行う。具体的には、差分動きベクトル絶対値を左シフトして整数ベクトル精度の動きベクトル絶対値を導出する。
mvdAbsVal[0] = mvdAbsVal[0] << shiftS
mvdAbsVal[1] = mvdAbsVal[1] << shiftS
ここで、差分動きベクトル絶対値は、差分動きベクトルが0であるか否かのシンタックスabs_mvd_greater0_flagと、0以上の場合の差分動きベクトル絶対値-1のシンタックスabs_mvd_minus2から導出してもよい。
mvdAbsVal[1] = mvdAbsVal[1] << shiftS
ここで、差分動きベクトル絶対値は、差分動きベクトルが0であるか否かのシンタックスabs_mvd_greater0_flagと、0以上の場合の差分動きベクトル絶対値-1のシンタックスabs_mvd_minus2から導出してもよい。
mvdAbsVal[0] = abs_mvd_greater0_flag[0] * ( abs_mvd_minus2[0] + 2 )
mvdAbsVal[1] = abs_mvd_greater0_flag[1] * ( abs_mvd_minus2[1] + 2 )
S3:差分動きベクトル絶対値と動きベクトル符号(mvd_sign_flag)から、差分動きベクトルを導出する。
mvdAbsVal[1] = abs_mvd_greater0_flag[1] * ( abs_mvd_minus2[1] + 2 )
S3:差分動きベクトル絶対値と動きベクトル符号(mvd_sign_flag)から、差分動きベクトルを導出する。
mvdLX[0] = mvdAbsVal[0] * (1 - 2 * mvd_sign_flag[0])
mvdLX[1] = mvdAbsVal[1] * (1 - 2 * mvd_sign_flag[1])
S4:差分動きベクトルと予測ベクトルを加算し動きベクトルを導出する。
mvdLX[1] = mvdAbsVal[1] * (1 - 2 * mvd_sign_flag[1])
S4:差分動きベクトルと予測ベクトルを加算し動きベクトルを導出する。
mvLX[0] = mvpLX[0] + mvdLX[0]
mvLX[1] = mvpLX[1] + mvdLX[1]
さて、インター予測パラメータ復号部303は、mvd_quant_flagを符号化データから復号するが、所定の条件を満たす場合に復号を省略し、mvd_quant_flagを導出しても良い。すなわち、差分ベクトルが0、すなわち、「abs_mvd_greater0_flag[0] || abs_mvd_greater0_flag[1]が偽」の場合、インター予測パラメータ復号部303は、動きベクトルの精度を示すフラグmvd_quant_flagの復号を省略し、mvd_quant_flag=0、すなわち、整数ベクトルではないと推定してもよい。ここで、abs_mvd_greater0_flag[]は動きベクトルの差分値の絶対値が0より大きいことを示すフラグである。
mvLX[1] = mvpLX[1] + mvdLX[1]
さて、インター予測パラメータ復号部303は、mvd_quant_flagを符号化データから復号するが、所定の条件を満たす場合に復号を省略し、mvd_quant_flagを導出しても良い。すなわち、差分ベクトルが0、すなわち、「abs_mvd_greater0_flag[0] || abs_mvd_greater0_flag[1]が偽」の場合、インター予測パラメータ復号部303は、動きベクトルの精度を示すフラグmvd_quant_flagの復号を省略し、mvd_quant_flag=0、すなわち、整数ベクトルではないと推定してもよい。ここで、abs_mvd_greater0_flag[]は動きベクトルの差分値の絶対値が0より大きいことを示すフラグである。
本実施形態では、インター予測パラメータ復号部303は、CUサイズに応じて、動きベクトルmvLXの精度を示すmvd_quant_flagを復号するか、または常に整数ベクトルを示す値「1」と推定するかを切り替える。すなわち、本実施形態では、CUサイズが所定のサイズ未満の場合、mvd_quant_flagを復号せず、常に「1」と推定し、整数精度の動きベクトルのみを許す。例えば、所定のサイズが4×8、8×4に相当するlog2CbWidth+log2CbHeight==5未満の場合、mvd_quant_flagは下式で導出してもよい。
mvd_quant_flag = (log2CbWidth + log2CbHeight < 5) ? 1 : flag
ここでflagは符号化データから復号した値である。なお、差分ベクトルが0の場合に、mvd_quant_flagを復号せずに0と導出する構成と組み合わせてもよい。
ここでflagは符号化データから復号した値である。なお、差分ベクトルが0の場合に、mvd_quant_flagを復号せずに0と導出する構成と組み合わせてもよい。
mvd_quant_flag = (log2CbWidth + log2CbHeight < 5) ? 1 : (abs_mvd_greater0_flag[0] || abs_mvd_greater0_flag[1]) ? flag : 0
これにより、CUサイズが小さい場合に、1/M画素精度(Mは2以上の自然数)の動きベクトルが用いられることがなくなり、処理に必要なメモリバンドを削減することができる。
これにより、CUサイズが小さい場合に、1/M画素精度(Mは2以上の自然数)の動きベクトルが用いられることがなくなり、処理に必要なメモリバンドを削減することができる。
さらに、差分動きベクトルを復号せずに動きベクトルを導出するモード(マージモード)を用いる場合において、ブロックサイズが小さい場合に、動きベクトルを整数に丸める処理を加えても良い。例えば以下の疑似コードを用いることができる。
if (log2CbWidth + log2CbHeight < 5)
mvLX[0] = round(mvLX[0], shiftS)
mvLX[1] = round(mvLX[1], shiftS)
図31に、具体的なシンタックス例を示す。図31に示すシンタックス3101では、CUサイズが4×4画素よりも大きい場合、mvd_quant_flagを復号している(SYN3110)。これにより、CUサイズが4×4画素よりも大きい場合のみ、mvd_quant_flagを復号する構成となる。
mvLX[0] = round(mvLX[0], shiftS)
mvLX[1] = round(mvLX[1], shiftS)
図31に、具体的なシンタックス例を示す。図31に示すシンタックス3101では、CUサイズが4×4画素よりも大きい場合、mvd_quant_flagを復号している(SYN3110)。これにより、CUサイズが4×4画素よりも大きい場合のみ、mvd_quant_flagを復号する構成となる。
また、複数参照フレーム(例えば、双予測)の場合(すなわち、inter_pred_idc == PRED_BI)には、CUサイズが8x4画素、および4x8画素の場合もmvd_quant_flagを復号せず、「1」と推定する構成であってもよい。すなわち、複数参照フレーム(双予測)の場合は、CUサイズが8x4画素、および4x8画素(log2W+log2H==5)より大きい場合に、mvd_quant_flagを復号する構成であってもよい。複数参照フレームでの制限は2フレームに限定されず、2フレーム以上(2、3、4フレームなど)の場合であってもよい。
図32に、具体的なシンタックス例を示す。図32に示す例では、シンタックス3101に示した条件に加え、CUサイズが8x4画素または4x8画素以下であり、かつ、複数参照フレーム(双予測)である場合以外(!(log2CbWidth + log2CbHeight <= 5 && inter_pred_idc == PRED_BI))にmvd_quant_flagを復号している(SYN3210)。別の表現をすれば、以下の通りであり、CUサイズが8x4画素または4x8画素より大きいか、もしくは、単予測である場合に、mvd_quant_flagを復号する。
mvd_quant_flag = (log2CbWidth + log2CbHeight > 5 || inter_pred_idc != PRED_BI) ) ? flag : 1
この構成でも、既に説明したように、差分ベクトルが0の場合の導出処理と組み合わせてもよい。
mvd_quant_flag = (log2CbWidth + log2CbHeight > 5 || inter_pred_idc != PRED_BI) ) ? flag : 1
この構成でも、既に説明したように、差分ベクトルが0の場合の導出処理と組み合わせてもよい。
mvd_quant_flag = (log2CbWidth + log2CbHeight <= 5 && inter_pred_idc == PRED_BI) ? 1 : (abs_mvd_greater0_flag[0] || abs_mvd_greater0_flag[1]) ? flag : 0
この場合も、差分動きベクトルを復号せずに動きベクトルを導出するモード(マージモード)を用いる場合において、ブロックサイズが小さく、さらに双予測場合に、動きベクトルを整数に丸める処理を加えても良い。例えば以下の疑似コードを用いることができる。
この場合も、差分動きベクトルを復号せずに動きベクトルを導出するモード(マージモード)を用いる場合において、ブロックサイズが小さく、さらに双予測場合に、動きベクトルを整数に丸める処理を加えても良い。例えば以下の疑似コードを用いることができる。
if (log2CbWidth + log2CbHeight <= 5 && predFlagL0 == 1 && predFlagL1 == 1)
mvLX[0] = round(mvLX[0], shiftS)
mvLX[1] = round(mvLX[1], shiftS)
さらに図示しないが、CUサイズが4x4画素より大きいか、もしくは、単予測である場合に、mvd_quant_flagを復号してもよい。すなわち、CUサイズが4x4画素かつ双予測の場合には、mvd_quant_flagを復号せずに、整数ベクトルであることを示す値(例えば1)を導出しても良い。以下、差分ベクトルが0の場合の導出処理と組み合わせた場合の式である。
mvLX[0] = round(mvLX[0], shiftS)
mvLX[1] = round(mvLX[1], shiftS)
さらに図示しないが、CUサイズが4x4画素より大きいか、もしくは、単予測である場合に、mvd_quant_flagを復号してもよい。すなわち、CUサイズが4x4画素かつ双予測の場合には、mvd_quant_flagを復号せずに、整数ベクトルであることを示す値(例えば1)を導出しても良い。以下、差分ベクトルが0の場合の導出処理と組み合わせた場合の式である。
mvd_quant_flag = (log2CbWidth + log2CbHeight == 4 && inter_pred_idc == PRED_BI) ) ? 1 : (abs_mvd_greater0_flag[0] || abs_mvd_greater0_flag[1]) ? flag : 0
この場合も、マージモードでの制限を加えてもよい。
この場合も、マージモードでの制限を加えてもよい。
if (log2CbWidth + log2CbHeight == 4 && predFlagL0 == 1 && predFlagL1 == 1)
mvLX[0] = round(mvLX[0], shiftS)
mvLX[1] = round(mvLX[1], shiftS)
なお、図32に示すシンタックス3201は、図33に示すシンタックス3301のように記載することもできる。すなわちシンタックス3201のSYN3210はシンタックス3301のSYN3310のように記載することもできる。シンタックス3301のSYN3210では、CUサイズが4×8画素または8×4画素より大きい、または、単予測かつ4×4画素より大きい場合、mvd_quant_flagを復号している(SYN3310)。
mvLX[0] = round(mvLX[0], shiftS)
mvLX[1] = round(mvLX[1], shiftS)
なお、図32に示すシンタックス3201は、図33に示すシンタックス3301のように記載することもできる。すなわちシンタックス3201のSYN3210はシンタックス3301のSYN3310のように記載することもできる。シンタックス3301のSYN3210では、CUサイズが4×8画素または8×4画素より大きい、または、単予測かつ4×4画素より大きい場合、mvd_quant_flagを復号している(SYN3310)。
以上をまとめると、図34に示すようになる。図34の(a)は、図31に示すシンタックス3101のSYN3110の場合であり、CUサイズが4×4画素よりも大きい場合に、mvd_quant_flagを復号している(図34の「Y」、「Y」は、mvd_quant_flagを復号することを示す)。また、図34の(b)は、図32または図33に示すシンタックス例の場合であり、双予測で、CUサイズが8x4画素または4x8画素の場合も「N」(「N」はmvd_quant_flagを復号せずに推定することを示す)、すなわち、mvd_quant_flagを復号せずに、「1」と推定する構成となっている。なお、PRED_BIは双予測を示す。
以上のように、本実施形態に係る画像復号装置31は、符号化データを復号する画像復号装置31において、ブロック毎にインター予測パラメータを復号する予測パラメータ復号部(インター予測パラメータ復号部303)を備え、上記予測パラメータ復号部は、所定のサイズ以下のブロックに対して、動きベクトルの精度を示すフラグを整数精度に対応する値に制限することを特徴としている。さらに、動きベクトルの精度を示すフラグが整数精度に対応する値の場合には、予測動きベクトルを整数ベクトルにラウンドして、差分動きベクトルの逆量子化を行う。なお、上記所定のサイズは、4×4画素以上の大きさを有してもよい。
これにより、所定のサイズ以下のブロックについては、動きベクトルの精度が整数精度の制限されるため、動きベクトルの精度を制限しない場合と比較して必要なメモリバンドを少なくすることができる。また、動きベクトルを整数ベクトルに制限することにより、ベクトルの小数成分の伝送を省略できるため、動きベクトル精度の制限化での性能が向上する。小ブロックにおいて、整数ベクトルに制限することで差分ベクトルを高効率に符号化することができる。また、小ブロックにおいて、動きベクトル精度に関するフラグの復号を省略するため、動きベクトル精度に関するフラグの符号量も削減することができる。
なお、複数参照フレーム(双予測)と組み合わせても良い。すなわち、上記、所定のサイズ以下の部分を、所定のサイズ以下、かつ、複数参照フレームの場合に読み替えてもよい。この場合、所定のサイズ以下、かつ、双予測のブロックに対して、動きベクトルの精度を示すフラグの復号を省略し、整数精度に対応する値として導出してもよい。
〔応用例〕
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した画像符号化装置11及び画像復号装置31を、動画像の送信及び受信に利用できることを、図35を参照して説明する。
図35の(a)は、画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。図35の(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を更に備えていてもよい。図35の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図35の(b)は、画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。図35の(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を更に備えていてもよい。図35の(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を、動画像の記録及び再生に利用できることを、図36を参照して説明する。
図36の(a)は、上述した画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。図36の(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、及び、画像を生成または加工する画像処理部C6を更に備えていてもよい。図36の(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の一例である。
図36の(b)は、上述した画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロックである。図36の(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を更に備えていてもよい。図36の(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:登録商標)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
10・・・CN情報復号部(復号部)
11・・・画像符号化装置
31・・・画像復号装置
302・・・予測パラメータ復号部
303・・・インター予測パラメータ復号部(予測画像生成部)
308・・・予測画像生成部
309・・・インター予測画像生成部
3091・・・動き補償部
30911・・・PU補間画像生成部像生成部(補間画像生成部)
30912・・・OBMC補間画像生成部
3092・・・補間画像生成部
3093・・・OBMC補正部(補正部)
11・・・画像符号化装置
31・・・画像復号装置
302・・・予測パラメータ復号部
303・・・インター予測パラメータ復号部(予測画像生成部)
308・・・予測画像生成部
309・・・インター予測画像生成部
3091・・・動き補償部
30911・・・PU補間画像生成部像生成部(補間画像生成部)
30912・・・OBMC補間画像生成部
3092・・・補間画像生成部
3093・・・OBMC補正部(補正部)
Claims (11)
- 符号化データを復号する画像復号装置において、
第1のサイズを有する対象サブブロックの境界における予測画像の生成に用いる追加補間画像を、当該境界を挟んで隣接する隣接ブロックのインター予測パラメータを用いて生成する追加補間画像生成部と、
対象ブロックのインター予測パラメータを用いて生成される補間画像を用いて生成する補間画像生成部と、
前記補間画像および前記追加補間画像を用いて当該対象ブロックの前記予測画像を生成する補正部と、備え、
前記追加補間画像生成部は、前記対象サブブロックを複数含む第2のサイズを有する拡大ブロックのブロック境界のみ、前記追加補間画像を生成することを特徴とする画像復号装置。 - 前記第1のサイズを有する前記対象ブロックは、縦4×横4のサブブロックで構成されており、前記第2のサイズを有する前記拡大ブロックは、縦8×横8のサブブロックで構成されているることを特徴とする請求項1に記載の画像復号装置。
- 予測画像と符号化対象画像との残差を符号化する画像符号化装置において、
第1のサイズを有する対象ブロックの境界における予測画像の生成に用いる追加補間画像を、当該境界を挟んで隣接する隣接ブロックのインター予測パラメータを用いて生成する追加補間画像生成部と、
前記対象ブロックに付加されたインター予測パラメータを用いて生成される補間画像を用いて、または前記補間画像および前記追加補間画像を用いて当該対象ブロックに対応する前記予測画像を生成する予測画像生成部と、備え、
前記予測画像生成部は、前記対象ブロックを複数含む第2のサイズを有する拡大ブロックのブロック境界のみ、前記追加補間画像を用いて前記予測画像を生成することを特徴とする画像符号化装置。 - 符号化データを復号する画像復号装置において、
ブロック毎に復号画像を生成する復号部を備え、
上記復号部は、所定のサイズ以下のブロックへの分割を禁止し、
上記所定のサイズは、4×4画素以上の大きさを有する
ことを特徴とする画像復号装置。 - 上記復号部は、分割後のブロックのサイズが4×4画素となる4分木分割、および2分木分割を禁止することを特徴とする請求項4に記載の画像復号装置。
- 上記復号部は、分割前のブロックのサイズが8×8画素の場合、非対称2分木分割、および3分木分割を禁止することを特徴とする請求項4に記載の画像復号装置。
- 動画像を符号化して符号化データを生成する画像符号化装置において、
上記動画像の1フレームを複数のブロックに分割して上記符号化データを生成する分割部を備え、
上記分割部は、所定のサイズ以下のブロックへの分割を禁止し、
上記所定のサイズは、4×4画素以上の大きさを有する
ことを特徴とする画像符号化装置。 - 符号化データを復号する画像復号装置において、
ブロック毎にインター予測パラメータを復号する予測パラメータ復号部を備え、
上記予測パラメータ復号部は、所定のサイズ以下のブロックに対して、動きベクトルの精度を示すフラグを整数精度に対応する値に制限することを特徴とする画像復号装置。 - 符号化データを復号する上記画像復号装置において、
所定のサイズ以下のブロックに対して、動きベクトルの精度を示すフラグの復号を省略し、整数精度に対応する値として導出することを特徴とする請求項8に記載の画像復号装置。 - 符号化データを復号する上記画像復号装置において、
所定のサイズ以下、かつ、双予測のブロックに対して、動きベクトルの精度を示すフラグの復号を省略し、整数精度に対応する値として導出することを特徴とする請求項8に記載の画像復号装置。 - 予測画像と符号化対象画像との残差を符号化する画像符号化装置において、
ブロック毎にインター予測を行うことによって予測画像を生成する予測画像生成部を備え、
上記予測画像生成部は、所定のサイズ以下のブロックに対して、動きベクトルの精度を示すフラグを整数精度に対応する値に制限することを特徴とする画像符号化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093376A JP2019201254A (ja) | 2018-05-14 | 2018-05-14 | 画像復号装置、および画像符号化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093376A JP2019201254A (ja) | 2018-05-14 | 2018-05-14 | 画像復号装置、および画像符号化装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019201254A true JP2019201254A (ja) | 2019-11-21 |
Family
ID=68612328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018093376A Pending JP2019201254A (ja) | 2018-05-14 | 2018-05-14 | 画像復号装置、および画像符号化装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019201254A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021171360A1 (ja) * | 2020-02-25 | 2021-09-02 | 日本電信電話株式会社 | 符号化方法、符号化装置及びプログラム |
WO2023207649A1 (en) * | 2022-04-29 | 2023-11-02 | Mediatek Inc. | Method and apparatus for decoder-side motion derivation in video coding system |
-
2018
- 2018-05-14 JP JP2018093376A patent/JP2019201254A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021171360A1 (ja) * | 2020-02-25 | 2021-09-02 | 日本電信電話株式会社 | 符号化方法、符号化装置及びプログラム |
JPWO2021171360A1 (ja) * | 2020-02-25 | 2021-09-02 | ||
JP7453581B2 (ja) | 2020-02-25 | 2024-03-21 | 日本電信電話株式会社 | 符号化方法、符号化装置及びプログラム |
WO2023207649A1 (en) * | 2022-04-29 | 2023-11-02 | Mediatek Inc. | Method and apparatus for decoder-side motion derivation in video coding system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109792535B (zh) | 预测图像生成装置、运动图像解码装置以及运动图像编码装置 | |
US11979602B2 (en) | Motion vector generation device, a prediction image generation device, a video decoding device and a video coding device | |
US20200021837A1 (en) | Video decoding apparatus and video coding apparatus | |
WO2020184487A1 (ja) | 動画像復号装置 | |
US20190158860A1 (en) | Video decoding device | |
US20220248051A1 (en) | Prediction image generation device, moving image decoding device, and moving image coding device | |
WO2020116456A1 (ja) | 動画像復号装置 | |
WO2020137920A1 (ja) | 予測画像生成装置、動画像復号装置、動画像符号化装置および予測画像生成方法 | |
CN114762348A (zh) | 运动图像解码装置 | |
WO2018173895A1 (ja) | 予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
JP2019201254A (ja) | 画像復号装置、および画像符号化装置 | |
JP2020145650A (ja) | 画像復号装置および画像符号化装置 | |
JP2020108012A (ja) | 画像復号装置および画像符号化装置 | |
JP2020096279A (ja) | 予測画像生成装置、動画像復号装置および動画像符号化装置 | |
WO2018173432A1 (ja) | 予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
JP2020036101A (ja) | 画像復号装置および画像符号化装置 | |
US11044490B2 (en) | Motion compensation filter apparatus, image decoding apparatus, and video coding apparatus | |
JP2020170901A (ja) | 予測画像生成装置、動画像復号装置および動画像符号化装置 | |
JP2020088577A (ja) | 予測画像生成装置、動画像復号装置、および動画像符号化装置 | |
JP7378968B2 (ja) | 予測画像生成装置、動画像復号装置および動画像符号化装置 | |
JP2019213018A (ja) | 画像復号装置および画像符号化装置 | |
JP2021153253A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2021175009A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2021197558A (ja) | 動画像符号化装置及び動画像復号装置 | |
JP2020005200A (ja) | 画像復号装置、および画像符号化装置 |