IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シャープ株式会社の特許一覧

<>
  • 特開-動画像符号化装置、動画像復号装置 図1
  • 特開-動画像符号化装置、動画像復号装置 図2
  • 特開-動画像符号化装置、動画像復号装置 図3
  • 特開-動画像符号化装置、動画像復号装置 図4
  • 特開-動画像符号化装置、動画像復号装置 図5
  • 特開-動画像符号化装置、動画像復号装置 図6
  • 特開-動画像符号化装置、動画像復号装置 図7
  • 特開-動画像符号化装置、動画像復号装置 図8
  • 特開-動画像符号化装置、動画像復号装置 図9
  • 特開-動画像符号化装置、動画像復号装置 図10
  • 特開-動画像符号化装置、動画像復号装置 図11
  • 特開-動画像符号化装置、動画像復号装置 図12
  • 特開-動画像符号化装置、動画像復号装置 図13
  • 特開-動画像符号化装置、動画像復号装置 図14
  • 特開-動画像符号化装置、動画像復号装置 図15
  • 特開-動画像符号化装置、動画像復号装置 図16
  • 特開-動画像符号化装置、動画像復号装置 図17
  • 特開-動画像符号化装置、動画像復号装置 図18
  • 特開-動画像符号化装置、動画像復号装置 図19
  • 特開-動画像符号化装置、動画像復号装置 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023155630
(43)【公開日】2023-10-23
(54)【発明の名称】動画像符号化装置、動画像復号装置
(51)【国際特許分類】
   H04N 19/70 20140101AFI20231016BHJP
   H04N 19/85 20140101ALI20231016BHJP
【FI】
H04N19/70
H04N19/85
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022065065
(22)【出願日】2022-04-11
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】000005049
【氏名又は名称】シャープ株式会社
(74)【代理人】
【識別番号】100157200
【弁理士】
【氏名又は名称】野口 茂孝
(74)【代理人】
【識別番号】100160783
【弁理士】
【氏名又は名称】堅田 裕之
(72)【発明者】
【氏名】中條 健
(72)【発明者】
【氏名】猪飼 知宏
(72)【発明者】
【氏名】八杉 将伸
(72)【発明者】
【氏名】徳毛 靖昭
(72)【発明者】
【氏名】橋本 知典
(72)【発明者】
【氏名】青野 友子
(72)【発明者】
【氏名】高田 圭一郎
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LA00
5C159LB05
5C159LB15
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159NN11
5C159RC12
5C159RC38
5C159UA02
5C159UA05
(57)【要約】      (修正有)
【課題】ニューラルネットワークの処理を効率よく、かつ、正確に実行することが可能な動画像符号化装置及び動画像復号装置を提供する。
【解決手段】動画像伝送システム1において、動画像復号装置30は、符号化データを復号して復号画像を生成する画像復号装置と、復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有する。解像度逆変換装置は、解像度を指定する情報と逆変換処理の単位を示す情報とを復号する。解像度を指定する情報と逆変換処理の単位を示す情報の値は、同一の比例関係を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
符号化データを復号して復号画像を生成する画像復号装置と、
前記復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有し、
前記解像度逆変換装置において解像度を指定する情報と逆変換処理の単位を示す情報を復号し、
前記解像度を指定する情報と前記逆変換処理の単位を示す情報の値が同一の比例関係を有することを特徴とする動画像復号装置。
【請求項2】
符号化データを復号して復号画像を生成する画像復号装置と、
前記復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有し、
前記解像度逆変換装置におけるニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および復号画像の画素値のビット長を用いて、画像の画素値とテンソルの入出力の値を互いに変換することを特徴とする動画像復号装置。
【請求項3】
画像を符号化して符号化データを生成する画像符号化装置と、
前記符号化データを復号した復号画像の解像度を逆変換するための逆変換情報を生成する逆変換情報生成装置と、
前記逆変換情報を補助拡張情報として符号化する逆変換情報符号化装置を有し、
前記逆変換情報は、解像度を指定する情報と逆変換処理の単位を示す情報の値が同一の比例関係を有する逆変換情報を生成することを特徴とする動画像符号化装置。
【請求項4】
画像を符号化して符号化データを生成する画像符号化装置と、
前記符号化データを復号した復号画像の解像度を逆変換するための逆変換情報を生成する逆変換情報生成装置と、
前記逆変換情報を補助拡張情報として符号化する逆変換情報符号化装置を有し、
前記解像度逆変換装置におけるニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および符号化画像の画素値のビット長を用いて、画像の画素値とテンソルの入出力の値を互いに変換する逆変換情報を生成することを特徴とする動画像符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、動画像符号化装置、動画像復号装置に関する。
【背景技術】
【0002】
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
【0003】
具体的な動画像符号化方式としては、例えば、H.264/AVCやH.265/HEVC(High-Efficiency Video Coding)方式などが挙げられる。
【0004】
このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得
られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び
、符号化単位を分割することより得られる変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CU毎に符号化/復号される。
【0005】
また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測誤差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる。
【0006】
また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。
【0007】
H.274には、画像の性質や、表示方法、タイミングなどを符号化データと同時に伝送す
るための補助拡張情報SEI(Supplemental Enhancement Information)messageが規定されている。
【0008】
非特許文献1及び非特許文献2、非特許文献3においては、ポストフィルタとして利用されるニューラルネットワークフィルタのトポロジーとパラメータを伝送するSEIを、明
示的に規定する方法と、間接的に参照情報として規定する方法が開示されている。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】B. Choi, Z. Li, W. Wang, W. Jiang, X. Xu, S. Wenger and S. Liu,“AHG9/AHG11: SEI messages for carriage of neural network information for post-filtering,” JVET-V0091
【非特許文献2】M. M. Hannuksela, E. B. Aksu, F. Cricri, H. R. Tavakoli and M. Santamaria, "AHG9: On post-filter SEI", JVET-X0112
【非特許文献3】M. M. Hannuksela, M. Santamaria, F. Cricri, E. B. Aksu and H. R. Tavakoli, "AHG9: On post-filter SEI", JVET-Y0115
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、非特許文献1、非特許文献2、非特許文献3では、ニューラルネットワ
ークの処理の単位であるパッチサイズと入力と出力の画面のサイズの関係が明確に定義されていないという問題があった。
【0011】
また、非特許文献1、非特許文献2、非特許文献3では、ニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および復号画像の画素値のビット長の関係が明確に定義されていないという問題があった。
【0012】
【課題を解決するための手段】
【0013】
本発明の一態様に係る動画像復号装置は、
符号化データを復号して復号画像を生成する画像復号装置と、
前記復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有し、
前記解像度逆変換装置において解像度を指定する情報と逆変換処理の単位を示す情報を復号し、
前記解像度を指定する情報と前記逆変換処理の単位を示す情報の値が同一の比例関係を有することを特徴とする。
【0014】
また、本発明の一態様に係る動画像復号装置は、
符号化データを復号して復号画像を生成する画像復号装置と、
前記復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有し、
前記解像度逆変換装置におけるニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および復号画像の画素値のビット長を用いて、画像の画素値とテンソルの入出力の値を互いに変換することを特徴とする。
【0015】
本発明の一態様に係る動画像符号化装置は、
画像を符号化して符号化データを生成する画像符号化装置と、
前記符号化データを復号した復号画像の解像度を逆変換するための逆変換情報を生成する逆変換情報生成装置と、
前記逆変換情報を補助拡張情報として符号化する逆変換情報符号化装置を有し、
前記逆変換情報は、解像度を指定する情報と逆変換処理の単位を示す情報の値が同一の比例関係を有する逆変換情報を生成することを特徴とする。
【0016】
また、本発明の一態様に係る動画像符号化装置は、
画像を符号化して符号化データを生成する画像符号化装置と、
前記符号化データを復号した復号画像の解像度を逆変換するための逆変換情報を生成する逆変換情報生成装置と、
前記逆変換情報を補助拡張情報として符号化する逆変換情報符号化装置を有し、
前記解像度逆変換装置におけるニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および符号化画像の画素値のビット長を用いて、画像の画素値とテンソルの入出力の値を互いに変換する逆変換情報を生成することを特徴とする。
【発明の効果】
【0017】
このような構成にすることで、ニューラルネットワークの処理を効率よくかつ正確に実行することが可能となる。
【0018】
【図面の簡単な説明】
【0019】
図1】本実施形態に係る動画像伝送システムの構成を示す概略図である。
図2】符号化データの階層構造を示す図である。
図3】本実施形態に係る動画像伝送システムにおいて処理の対象となる画像の概念図である。
図4】参照ピクチャおよび参照ピクチャリストの一例を示す概念図である。
図5】画像復号装置の構成を示す概略図である。
図6】画像復号装置の概略的動作を説明するフローチャートである。
図7】画像符号化装置の構成を示すブロック図である。
図8】インター予測パラメータ符号化部の構成を示す概略図である。
図9】本実施形態におけるポストフィルタ処理のためのSEIのシンタクスを示す図である。
図10】本実施の形態におけるニューラルネットワークへの画像データの入出力処理を説明する図である。
図11】入力テンソルに画像データを入力する処理内容を説明する図である。
図12】出力テンソルからデータを出力する処理内容を説明する図である。テンソルに画像データを入力する処理内容を説明する図である。
図13】本実施形態におけるポストフィルタ処理のためのSEIのシンタクスの別の例1を示す図である。
図14】本実施形態におけるポストフィルタ処理のためのSEIのシンタクスの別の例2を示す図である。
図15】本実施形態におけるポストフィルタ処理のためのSEIのシンタクスの別の例3を示す図である。
図16】本実施形態におけるポストフィルタ処理のためのSEIのシンタクスの別の例4を示す図である。
図17】本実施形態におけるポストフィルタ処理のためのSEIのシンタクスの別の例5を示す図である。
図18】NNフィルタ部611の処理のフローチャートを示す図である。
図19】NNフィルタ部611のニューラルネットワークの構成を示す図である。
図20】NNRの符号化装置・復号装置について示す図である。
【0020】
【発明を実施するための形態】
【0021】
(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
【0022】
図1は、本実施形態に係る動画像伝送システムの構成を示す概略図である。
【0023】
動画像伝送システム1は、解像度が変換された異なる解像度の画像を符号化した符号化
データを伝送し、伝送された符号化データを復号し画像を元の解像度に逆変換して表示するシステムである。動画像伝送システム1は、動画像符号化装置10とネットワーク21と動
画像復号装置30と画像表示装置41からなる。
【0024】
動画像符号化装置10は、解像度変換装置(解像度変換部)51、画像符号化装置(画像符号化部)11、逆変換情報作成装置(逆変換情報作成部)71、逆変換情報符号化装置(逆変換情報符号化部)81から構成される。
【0025】
動画像復号装置30は、画像復号装置(画像復号部)31、解像度逆変換装置(解像度逆変
換部)61、及び逆変換情報復号装置(逆変換情報復号部)91から構成される。
【0026】
解像度変換装置51は、動画像に含まれる画像Tの解像度を変換し、異なる解像度の画像
を含む可変解像度動画像T2を、画像符号化装置11に供給する。また、解像度変換装置51は、画像の解像度変換の有無を示す逆変換情報を画像符号化装置11に供給する。当該情報が解像度変換を示す場合、動画像符号化装置10は、後述する解像度変換情報ref_pic_resampling_enabled_flagを1に設定し、符号化データTeのシーケンスパラメータセットSPS(Sequence Parameter Set)に含ませて符号化する。
【0027】
逆変換情報作成装置71は、動画像に含まれる画像T1に基づいて、逆変換情報を作成する。逆変換情報は、解像度変換前の入力画像T1と解像度変換及び符号化、復号後の画像Td1との関係性から導出もしくは選択される。付加情報は何を選択するかを示す情報である。
【0028】
逆変換情報符号化装置81には逆変換情報が入力される。逆変換情報符号化装置81は、逆変換情報を符号化して符号化された逆変換情報を生成し、ネットワーク21に送る。
【0029】
画像符号化装置11には可変解像度画像T2が入力される。画像符号化装置11は、RPR(Reference Picture Resampling)の枠組みを用いて、PPS単位で入力画像の画像サイズ情報を符号化し、画像復号装置31に送る。
【0030】
図1において、逆変換情報符号化装置81は画像符号化装置11とつながれていないが、逆変換情報符号化装置81と画像符号化装置11とは、適宜必要な情報を通信してもよい。
【0031】
ネットワーク21は、符号化された逆変換情報及び符号化データTeを画像復号装置31に伝送する。符号化された逆変換情報の一部または全部は、補助拡張情報SEIとして、符号化
データTeに含められてもよい。ネットワーク21は、インターネット(Internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blue-ray Disc:登録商標)等の符号化データTeを記録した記憶媒体で代替されても良い。
【0032】
画像復号装置31は、ネットワーク21が伝送した符号化データTeのそれぞれを復号し、可変解像度復号画像Td1を生成して解像度逆変換装置61に供給する。
【0033】
逆変換情報復号装置91は、ネットワーク21が伝送した符号化された逆変換情報を復号して逆変換情報を生成して解像度逆変換装置61に供給する。
【0034】
図1において、逆変換情報復号装置91は、画像復号装置31とは別に図示されているが、逆変換情報復号装置91は、画像復号装置31に含まれてもよい。例えば、逆変換情報復号装置91は、画像復号装置31の各機能部とは別に画像復号装置31に含まれてもよい。また、図1において、画像復号装置31とつながれていないが、逆変換情報復号装置91と画像復号装置31とは、適宜必要な情報を通信してもよい。
【0035】
解像度逆変換装置61は、解像度変換情報が解像度変換を示す場合、符号化データに含まれる画像サイズ情報に基づいて、ニューラルネットワークを用いた超解像処理などのポストフィルタ処理を介して、解像度変換された画像を逆変換することによって、オリジナルサイズの復号画像を生成する。
【0036】
また、解像度逆変換装置61は、解像度変換情報が等倍の解像度をする場合、ニューラル
ネットワークを用いたポストフィルタ処理を行い、入力画像T1に復元する解像度逆変換処理を実行し、復号画像Td2を生成してもよい。
【0037】
画像表示装置41は、解像度逆変換装置61から入力された1または複数の復号画像Td2の
全部または一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、画像復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
【0038】
図3は、図1に示す動画像伝送システムにおいて処理の対象となる画像の概念図であっ
て、時間の経過に伴う、当該画像の解像度の変化を示す図である。ただし、図3において
は、画像が符号化されているか否かを区別していない。図3は、動画像伝送システムの処
理過程において、解像度を低下させて画像復号装置31に画像を伝送する例を示している。図3に示すように、通常、解像度変換装置51は、伝送される情報の情報量を少なくするた
めに画像の解像度を入力画像の解像と同じかそれ以下にする変換を行う。
【0039】
<演算子>
本明細書で用いる演算子を以下に記載する。
【0040】
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR
、|=はOR代入演算子であり、||は論理和を示す。
【0041】
x ? y : zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子であ
る。
【0042】
Clip3(a,b,c)は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返
し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
【0043】
abs(a)はaの絶対値を返す関数である。
【0044】
Int(a)はaの整数値を返す関数である。
【0045】
floor(a)はa以下の最大の整数を返す関数である。
【0046】
ceil(a)はa以上の最小の整数を返す関数である。
【0047】
a/dはdによるaの除算(小数点以下切り捨て)を表す。
【0048】
a^bはpower(a,b)を表す。a=2の場合1<<bと等しい。
【0049】
<符号化データTeの構造>
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化データTeのデータ構造について説明する。
【0050】
図2は、符号化データTeにおけるデータの階層構造を示す図である。符号化データTeは
、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図2には
、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピ
クチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライ
スデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図が示されている。
【0051】
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために画像復号装
置31が参照するデータの集合が規定されている。シーケンスSEQは、図2に示すように、ビデオパラメータセットVPS(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、Adaptation Parameter Set(APS)、ピクチャPICT、及び、補助拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
【0052】
ビデオパラメータセットVPSでは、複数のレイヤから構成されている動画像において、
複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
【0053】
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが
規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを
選択する。
【0054】
ここで、シーケンスパラメータセットSPSには以下のシンタックス要素が含まれる。
・ref_pic_resampling_enabled_flag:対象SPSを参照する単一のシーケンスに含まれる各画像を復号する場合に、解像度を可変とする機能(リサンプリング:resampling)を用いるか否かを規定するフラグである。別の側面から言えば、当該フラグは、予測画像の生成において参照される参照ピクチャのサイズが、単一のシーケンスが示す各画像間において変化することを示すフラグである。当該フラグの値が1である場合、上記リサンプリング
が適用され、0である場合、適用されない。
・pic_width_max_in_luma_samples:単一のシーケンスにおける画像のうち、最大の幅を
有する画像の幅を、輝度ブロック単位で指定するシンタックス要素である。また、当該シンタックス要素の値は、0ではなく、且つMax(8, MinCbSizeY)の整数倍であることが要求
される。ここで、MinCbSizeYは、輝度ブロックの最小サイズによって定まる値である。
・pic_height_max_in_luma_samples:単一のシーケンスにおける画像のうち、最大の高さを有する画像の高さを、輝度ブロック単位で指定するシンタックス要素である。また、当該シンタックス要素の値は、0ではなく、且つMax(8, MinCbSizeY)の整数倍であることが
要求される。
・sps_temporal_mvp_enabled_flag:対象シーケンスを復号する場合において、時間動き
ベクトル予測を用いるか否かを規定するフラグである。当該フラグの値が1であれば時間
動きベクトル予測が用いられ、値が0であれば時間動きベクトル予測は用いられない。ま
た、当該フラグを規定することにより、異なる解像度の参照ピクチャを参照する場合等に、参照する座標位置がずれてしまうことを防ぐことができる。
【0055】
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために
画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を
示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その
場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
【0056】
ここで、ピクチャパラメータセットPPSには以下のシンタックス要素が含まれる。
・pps_pic_width_in_luma_samples:対象ピクチャの幅を指定するシンタックス要素であ
る。当該シンタックス要素の値は、0ではなく、Max(8, MinCbSizeY)の整数倍であり、且
つsps_pic_width_max_in_luma_samples以下の値であることが要求される。
・pps_pic_height_in_luma_samples:対象ピクチャの高さを指定するシンタックス要素である。当該シンタックス要素の値は、0ではなく、Max(8, MinCbSizeY)の整数倍であり、
且つsps_pic_height_max_in_luma_samples以下の値であることが要求される。
・conformance_window_flag:コンフォーマンス(クロッピング)ウィンドウオフセット
パラメータが続いて通知されるか否かを示すフラグであって、コンフォーマンスウィンドウを表示する場所を示すフラグである。このフラグが1である場合、当該パラメータが通
知され、0である場合、コンフォーマンスウインドウオフセットパラメータが存在しない
ことを示す。
・conf_win_left_offset、conf_win_right_offset、conf_win_top_offset、conf_win_bottom_offset:出力用のピクチャ座標で指定される矩形領域に関して、復号処理で出力されるピクチャの左、右、上、下位置を指定するためのオフセット値である。また、conformance_window_flagの値が0である場合、conf_win_left_offset、conf_win_right_offset、conf_win_top_offset、conf_win_bottom_offsetの値は0であるものと推定される。
【0057】
出力用ピクチャの幅PicWidthInLumaSamplesと高さPicHightInLumaSamplesは以下で導出される。
【0058】
PicWidthInLumaSamples = pps_pic_width_in_luma_samples - SubWidthC * (conf_win_right_offset + conf_win_left_offset)
PicHightInLumaSamples = pps_pic_height_in_luma_samples - SubHightC * (conf_win_bottom_offset + conf_win_top_offset)
ここで、色差フォーマットの変数ChromaFormatIdcは、sps_chroma_format_idの値であ
り、変数SubWidthCと、変数SubHightCは、このChromaFormatIdcによって決まる値で、モ
ノクロフォーマットの場合は、SubWidthCとSubHightCは、共に1であり、4:2:0フォーマットの場合は、SubWidthCとSubHightCは、共に2であり、4:2:2フォーマットの場合は、SubWidthCが2でSubHightCが1であり、4:4:4フォーマットの場合は、SubWidthCとSubHightCは、共に1である。
・scaling_window_flag:スケーリングウインドウオフセットパラメータが対象PPSに存在するか否かを示すフラグであって、出力される画像サイズの規定に関するフラグである。このフラグが1である場合、当該パラメータがPPSに存在することを示しており、このフラグが0である場合、当該パラメータがPPSに存在しないことを示している。また、ref_pic_resampling_enabled_flagの値が0である場合、scaling_window_flagの値も0であることが要求される。
・scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset、scaling_win_bottom_offset:スケーリング比率計算のために画像サイズに適用されるオフセットを、それぞれ、対象ピクチャの左、右、上、下位置について輝度画素単位で指定するシンタックス要素である。また、scaling_window_flagの値が0である場合、scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset、scaling_win_bottom_offsetの値は0であるものと推定される。また、scaling_win_left_offset + scaling_win_right_offsetの値はpic_width_in_luma_samples未満であること、及びscaling_win_top_offset + scaling_win_bottom_offsetの値はpic_height_in_luma_samples未満であることが要求される。
【0059】
スケーリング用ピクチャの幅PicScaleWidthLと高さPicScaleHeightLは以下で導出され
る。
【0060】
PicScaleWidthL = pic_width_in_luma_samples - SubWidthC * (scaling_win_right_offset + scaling_win_left_offset)
PicScaleHeightL = pic_height_in_luma_samples - SubHightC * (scaling_win_bottom
_offset + scaling_win_top_offset)
(サブピクチャ)
ピクチャは、さらに矩形のサブピクチャに分割されていてもよい。サブピクチャのサイズはCTUの倍数であってもよい。サブピクチャは縦横に整数個連続するタイルの集合で定
義される。つまり、ピクチャは矩形のタイルに分割され、矩形のタイルの集合としてサブピクチャを定義する。サブピクチャの左上タイルのIDと右下タイルのIDを用いてサブピクチャを定義してもよい。また、スライスヘッダにはサブピクチャのIDを示すsh_subpic_idを含んでもよい。
【0061】
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図2に示すように、ピクチャヘッ
ダPH、スライス0~スライスNS-1を含む(NSはピクチャPICTに含まれるスライスの総数)
【0062】
以下、スライス0~スライスNS-1のそれぞれを区別する必要が無い場合、符号の添え字
を省略して記述することがある。また、以下に説明する符号化データTeに含まれるデータであって、添え字を付している他のデータについても同様である。
【0063】
ピクチャヘッダには、以下のシンタックス要素が含まれる。
・pic_temporal_mvp_enabled_flag:当該ピクチャヘッダに関連付けられたスライスのイ
ンター予測に時間動きベクトル予測を用いるか否かを規定するフラグである。当該フラグの値が0である場合、当該ピクチャヘッダに関連付けられたスライスのシンタックス要素
は、そのスライスの復号において時間動きベクトル予測が用いられないように制限される。当該フラグの値が1である場合、当該ピクチャヘッダに関連付けられたスライスの復号に時間動きベクトル予測が用いられることを示している。また、当該フラグが規定されていない場合、値が0であるものと推定される。
【0064】
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために画像復号装置31が参照す
るデータの集合が規定されている。スライスは、図2に示すように、スライスヘッダ、お
よび、スライスデータを含んでいる。
【0065】
スライスヘッダには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダに含まれる符号化パラメータの一例である。
【0066】
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単予測(L0予測)、または、イントラ予測を用いるPスライス、(3)符号化の際に単予測(L0予測或いはL1予測)、双予測、または、イントラ予測を用いるBスライスなどが挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライスを指す。
【0067】
なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
【0068】
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータを復号するために画像復号装置
31が参照するデータの集合が規定されている。スライスデータは、図2の符号化スライス
ヘッダに示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
【0069】
(符号化ツリーユニット)
図2には、処理対象の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自身も最上位の符号化ノードとして規定される。
【0070】
CTは、CT情報として、CT分割を行うか否かを示すCU分割フラグ(split_cu_flag)、QT分
割を行うか否かを示すQT分割フラグ(qt_split_cu_flag)、MT分割の分割方向を示すMT分割方向(mtt_split_cu_vertical_flag)、MT分割の分割タイプを示すMT分割タイプ(mtt_split_cu_binary_flag)を含む。split_cu_flag、qt_split_cu_flag、mtt_split_cu_vertical_flag、mtt_split_cu_binary_flagは符号化ノード毎に伝送される。
【0071】
輝度と色差で異なるツリーを用いても良い。ツリーの種別をtreeTypeで示す。例えば、輝度(Y, cIdx=0)と色差(Cb/Cr, cIdx=1,2)で共通のツリーを用いる場合、共通単一ツリーをtreeType=SINGLE_TREEで示す。輝度と色差で異なる2つのツリー(DUALツリー)を用いる場合、輝度のツリーをtreeType=DUAL_TREE_LUMA、色差のツリーをtreeType=DUAL_TREE_CHROMAで示す。
【0072】
(符号化ユニット)
図2は、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータ
の集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメータ、変換パラ
メータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
【0073】
予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCUのサイズよりも大きい場合、CUはサブCUに分割される。たとえばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。
【0074】
予測の種類(予測モード)は、イントラ予測と、インター予測の2つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
【0075】
変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位
でエントロピー符号化してもよい。
【0076】
(予測パラメータ)
予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。
【0077】
以下、インター予測の予測パラメータについて説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0とpredFlagL1、参照ピクチャインデックスrefIdxL0とre
fIdxL1、動きベクトルmvL0とmvL1から構成される。predFlagL0、predFlagL1は、参照ピクチャリスト(L0リスト、L1リスト)が用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、フラグが0以外(たとえば1)をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
【0078】
インター予測パラメータを導出するためのシンタックス要素には、例えば、マージモードで用いるアフィンフラグaffine_flag、マージフラグmerge_flag、マージインデックスmerge_idx、MMVDフラグmmvd_flag、AMVPモードで用いる参照ピクチャを選択するためのイ
ンター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、動きベクトルを導出するための予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、動きベクト
ル精度モードamvr_modeがある。
【0079】
(参照ピクチャリスト)
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリ
ストである。図4は、参照ピクチャおよび参照ピクチャリストの一例を示す概念図である
図4の参照ピクチャの一例を示す概念図において、矩形はピクチャ、矢印はピクチャの
参照関係、横軸は時間、矩形中のI、P、Bは各々イントラピクチャ、単予測ピクチャ、双
予測ピクチャ、矩形中の数字は復号順を示す。図に示すように、ピクチャの復号順は、I0、P1、B2、B3、B4であり、表示順は、I0、B3、B2、B4、P1である。図4には、ピクチャB3(対象ピクチャ)の参照ピクチャリストの例を示されている。参照ピクチャリストは、参照ピクチャの候補を表すリストであり、1つのピクチャ(スライス)が1つ以上の参照ピクチャリストを有してもよい。図の例では、対象ピクチャB3は、L0リストRefPicList0およびL1リストRefPicList1の2つの参照ピクチャリストを持つ。個々のCUでは、参照ピクチャリストRefPicListX(X=0または1)中のどのピクチャを実際に参照するかをrefIdxLXで指定する。図は、refIdxL0=2、refIdxL1=0の例である。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、以降では、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別する。
【0080】
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Advanced Motion Vector Prediction、適応動きベクトル予測)モードがあり、merge_flagは、これらを識別するためのフラグである。マージ予測モードは、予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めずに、既に処理した近傍ブロックの予測パラメータ等から導出するモードである。AMVPモードは、inter_pred_idc、refIdxLX、mvLXを符号化データに含めるモードである。なお、mvLXは、予測ベクトルmvpLXを識別するmvp_LX_idxと差分ベクトルmvdLXとして符号化される。また、マージ予測モードの他に、アフィン予測モード、MMVD予測モードがあってもよい。
【0081】
inter_pred_idcは、参照ピクチャの種類および数を示す値であり、PRED_L0、PRED_L1、PRED_BIの何れかの値をとる。PRED_L0、PRED_L1は、各々L0リスト、L1リストで管理され
た1枚の参照ピクチャを用いる単予測を示す。PRED_BIはL0リストとL1リストで管理され
た2枚の参照ピクチャを用いる双予測を示す。
【0082】
merge_idxは、処理が完了したブロックから導出される予測パラメータ候補(マージ候
補)のうち、いずれの予測パラメータを対象ブロックの予測パラメータとして用いるかを示すインデックスである。
【0083】
(動きベクトル)
mvLXは、異なる2つのピクチャ上のブロック間のシフト量を示す。mvLXに関する予測ベクトル、差分ベクトルを、それぞれmvpLX、mvdLXと呼ぶ。
【0084】
(インター予測識別子inter_pred_idcと予測リスト利用フラグpredFlagLX)
inter_pred_idcと、predFlagL0、predFlagL1の関係は以下のとおりであり、相互に変換可能である:
inter_pred_idc = (predFlagL1<<1)+predFlagL0
predFlagL0 = inter_pred_idc & 1
predFlagL1 = inter_pred_idc >> 1
なお、インター予測パラメータは、予測リスト利用フラグを用いても良いし、インター予測識別子を用いてもよい。また、予測リスト利用フラグを用いた判定は、インター予測識別子を用いた判定に置き替えてもよい。逆に、インター予測識別子を用いた判定は、予測リスト利用フラグを用いた判定に置き替えてもよい。
【0085】
(画像復号装置の構成)
本実施形態に係る画像復号装置31(図5)の構成について説明する。
【0086】
画像復号装置31は、エントロピー復号部301、パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像
生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312、予測パラメ
ータ導出部320を含んで構成される。なお、後述の画像符号化装置11に合わせ、画像復号
装置31にループフィルタ305が含まれない構成もある。
【0087】
パラメータ復号部302は、さらに、ヘッダ復号部3020、CT情報復号部3021、及びCU復号
部3022(予測モード復号部)を備えており、CU復号部3022はさらにTU復号部3024を備えている。これらを総称して復号モジュールと呼んでもよい。ヘッダ復号部3020は、符号化データからVPS、SPS、PPS、APSなどのパラメータセット情報、スライスヘッダ(スライス情報)を復号する。CT情報復号部3021は、符号化データからCTを復号する。CU復号部3022は符号化データからCUを復号する。TU復号部3024は、TUに予測誤差が含まれている場合に、符号化データからQP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を復号する。
【0088】
TU復号部3024は、スキップモード以外(skip_mode==0)の場合に、符号化データからQP更新情報と量子化予測誤差を復号する。より具体的には、TU復号部3024は、skip_mode==0の場合に、対象ブロックに量子化予測誤差が含まれているか否かを示すフラグcu_cbpを復号し、cu_cbpが1の場合に量子化予測誤差を復号する。cu_cbpが符号化データに存在しない
場合は0と導出する。
【0089】
TU復号部3024は、符号化データから変換基底を示すインデックスmts_idxを復号する。
また、TU復号部3024は、符号化データからセカンダリ変換の利用及び変換基底を示すインデックスstIdxを復号する。stIdxは0の場合にセカンダリ変換の非適用を示し、1の場合にセカンダリ変換基底のセット(ペア)のうち一方の変換を示し、2の場合に上記ペアのう
ち他方の変換を示す。
【0090】
予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を
含んで構成される。
【0091】
予測パラメータ導出部320は、インター予測パラメータ導出部303及びイントラ予測パラメータ導出部304を含んで構成される。
【0092】
エントロピー復号部301は、外部から入力された符号化データTeに対してエントロピー
復号を行って、個々の符号(シンタックス要素)を復号する。エントロピー符号化には、シンタックス要素の種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックス要素を可変長符号化する方式と、あらかじめ定められた表、あるいは計算式を用いてシンタックス要素を可変長符号化する方式がある。前者のCABAC(Context Adaptive Binary Arithmetic Coding)は、コンテキストのCABAC状態(優勢シンボルの種別(0 or 1)と確率を指定する確率状態インデックスpStateIdx)をメモリに格納する。エントロピー復号部301は、セグメント(タイル、CTU行、スライス)の先頭で全てのCABAC状態を初期化する。エントロピー復号部301は、シンタックス要素をバイナリ列(Bin String)に変換し、Bin Stringの各ビットを復号する。コンテキストを用いる場合には、シンタックス要素の各ビットに対してコンテキストインデックスctxIncを導出し、コンテキストを用いてビットを復号し、用いたコンテキストのCABAC状態を更新する。コンテキストを用いないビットは、等確率(EP, bypass)で復号され、ctxInc導出やCABAC状態は省略される。復号されたシンタックス要素には、予測画像を生成するための予測情報および、差分画像を生成するための予測誤差などがある。
【0093】
エントロピー復号部301は、復号した符号をパラメータ復号部302に出力する。復号した符号とは、例えば、予測モードpredMode、merge_flag、merge_idx、inter_pred_idc、refIdxLX、mvp_LX_idx、mvdLX、amvr_mode等である。どの符号を復号するかの制御は、パラメータ復号部302の指示に基づいて行われる。
【0094】
(基本フロー)
図6は、画像復号装置31の概略的動作を説明するフローチャートである。
【0095】
(S1100:パラメータセット情報復号)ヘッダ復号部3020は、符号化データからVPS、SPS、PPSなどのパラメータセット情報を復号する。
【0096】
(S1200:スライス情報復号)ヘッダ復号部3020は、符号化データからスライスヘッダ
(スライス情報)を復号する。
【0097】
以下、画像復号装置31は、対象ピクチャに含まれる各CTUについて、S1300からS5000の
処理を繰り返すことにより各CTUの復号画像を導出する。
【0098】
(S1300:CTU情報復号)CT情報復号部3021は、符号化データからCTUを復号する。
【0099】
(S1400:CT情報復号)CT情報復号部3021は、符号化データからCTを復号する。
【0100】
(S1500:CU復号)CU復号部3022はS1510、S1520を実施して、符号化データからCUを復
号する。
【0101】
(S1510:CU情報復号)CU復号部3022は、符号化データからCU情報、予測情報、TU分割
フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を復号する。
【0102】
(S1520:TU情報復号)TU復号部3024は、TUに予測誤差が含まれている場合に、符号化
データからQP更新情報と量子化予測誤差、変換インデックスmts_idxを復号する。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの
差分値である。
【0103】
(S2000:予測画像生成)予測画像生成部308は、対象CUに含まれる各ブロックについて
、予測情報に基づいて予測画像を生成する。
【0104】
(S3000:逆量子化・逆変換)逆量子化・逆変換部311は、対象CUに含まれる各TUについて、逆量子化・逆変換処理を実行する。
【0105】
(S4000:復号画像生成)加算部312は、予測画像生成部308より供給される予測画像と
、逆量子化・逆変換部311より供給される予測誤差とを加算することによって、対象CUの
復号画像を生成する。
【0106】
(S5000:ループフィルタ)ループフィルタ305は、復号画像にデブロッキングフィルタ、SAO、ALFなどのループフィルタをかけ、復号画像を生成する。
【0107】
(インター予測パラメータ導出部の構成)
インター予測パラメータ導出部303(動きベクトル導出装置)は、パラメータ復号部302から入力されたシンタックス要素に基づいて、予測パラメータメモリ307に記憶された予
測パラメータを参照してインター予測パラメータを導出する。また、インター予測パラメータをインター予測画像生成部309、予測パラメータメモリ307に出力する。インター予測パラメータ導出部303及びその内部の要素であるAMVP予測パラメータ導出部3032、マージ予測パラメータ導出部3036、アフィン予測部30372、MMVD予測部30373、GPM部30377、DMVR部30537、MV加算部3038は、画像符号化装置、画像復号装置で共通する手段であるので、これらを総称して動きベクトル導出部(動きベクトル導出装置)と称してもよい。
【0108】
ヘッダ復号部3020及びヘッダ符号化部1110の備えるスケールパラメータ導出部30378は
、参照ピクチャの水平方向のスケーリング比RefPicScale[i][j][0]、および、参照ピクチャの垂直方向のスケーリング比RefPicScale[i][j][1]、及び、参照ピクチャがスケーリングされているか否かを示すRefPicIsScaled[i][j]を導出する。ここで、iは参照ピクチャリストがL0リスト(i=0)かL1リスト(i=1)であるかを示し、jをL0参照ピクチャリストあるいはL1参照ピクチャリストの値(参照ピクチャ)として、次のように導出する:
RefPicScale[i][j][0] =
((fRefWidth << 14)+(PicScaleWidthL >> 1)) / PicScaleWidthL
RefPicScale[i][j][1] =
((fRefHeight << 14)+(PicScaleHeightL >> 1)) / PicScaleHeightL
RefPicIsScaled[i][j] =
(RefPicScale[i][j][0] != (1<<14)) || (RefPicScale[i][j][1] != (1<<14))
ここで、変数PicScaleWidthLは、符号化ピクチャが参照される時に水平方向のスケーリング比を計算する時の値であり、符号化ピクチャの輝度の水平方向の画素数から左右のオフセット値を引いたものが用いられる。変数PicScaleHeightLは、符号化ピクチャが参照
される時に垂直方向のスケーリング比を計算する時の値であり、符号化ピクチャの輝度の垂直方向の画素数から上下のオフセット値を引いたものが用いられる。変数fRefWidthは
、リストiの参照リスト値jのPicScaleWidthLの値とし、変数fRefHightは、リストiの参
照ピクチャリスト値jのPicScaleHeightLの値とする。
【0109】
(MV加算部)
MV加算部3038は、AMVP予測パラメータ導出部3032から入力されたmvpLXと復号したmvdLXを加算してmvLXを算出する。加算部3038は、算出したmvLXをインター予測画像生成部309
および予測パラメータメモリ307に出力する:
mvLX[0] = mvpLX[0]+mvdLX[0]
mvLX[1] = mvpLX[1]+mvdLX[1]
ループフィルタ305は、符号化ループ内に設けたフィルタで、ブロック歪やリンギング
歪を除去し、画質を改善するフィルタである。ループフィルタ305は、加算部312が生成し
たCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適
応ループフィルタ(ALF)等のフィルタを施す。
【0110】
DF部601は、画素や境界、線分単位でデブロッキングフィルタの強度bSを導出するbS導
出部602、ブロックノイズを低減するためにデブロッキングフィルタ処理を行うDFフィル
タ部602から構成される。
【0111】
DF部601は、NN(Neural Network)処理(NNフィルタ部601の処理)前の入力画像resPictureに、パーティション分割境界、予測ブロックの境界、変換ブロックの境界があるかを示すエッジ度edgeIdcとデブロッキングフィルタの最大フィルタ長maxFilterLengthを導出する。さらに、edgeIdcと変換ブロックの境界、符号化パラメータから、デブロッキングフィルタの強度bSを導出する。符号化パラメータは、例えば予測モードCuPredMode、BDPCM予測モードintra_bdpcm_luma_flag、IBC予測モードであるかを示すフラグ、動きベクトル、参照ピクチャ、変換ブロックに非0係数が存在するかを示すフラグtu_y_coded_flag、tu_u_coded_flagなどである。edgeIdcとbSは0,1,2の値をとってもよいし、それ以外の値でもよい。
【0112】
参照ピクチャメモリ306は、CUの復号画像を、対象ピクチャ及び対象CU毎に予め定めた
位置に記憶する。
【0113】
予測パラメータメモリ307は、CTUあるいはCU毎に予め定めた位置に予測パラメータを記憶する。具体的には、予測パラメータメモリ307は、パラメータ復号部302が復号したパラメータ及び予測パラメータ導出部320が導出したパラメータ等を記憶する。
【0114】
予測画像生成部308には予測パラメータ導出部320が導出したパラメータが入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、predModeが示す予測モードで、パラメータと参照ピクチャ(参照ピク
チャブロック)を用いてブロックもしくはサブブロックの予測画像を生成する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロックと呼ぶ)であり、予測画像を生成するために参照する領域である。
【0115】
predModeがインター予測モードを示す場合、インター予測画像生成部309は、インター
予測パラメータ導出部303から入力されたインター予測パラメータと参照ピクチャを用い
てインター予測によりブロックもしくはサブブロックの予測画像を生成する。
【0116】
(動き補償)
動き補償部3091(補間画像生成部3091)は、インター予測パラメータ導出部303から入
力された、インター予測パラメータ(predFlagLX、refIdxLX、mvLX)に基づいて、参照ピクチャメモリ306から参照ブロックを読み出すことによって補間画像(動き補償画像)を
生成する。参照ブロックは、refIdxLXで指定された参照ピクチャRefPicLX上で、対象ブロックの位置からmvLXシフトした位置のブロックである。ここで、mvLXが整数精度でない場合には、動き補償フィルタと呼ばれる小数位置の画素を生成するためのフィルタを施して、補間画像を生成する。
【0117】
動き補償部3091は、まず、予測ブロック内座標(x,y)に対応する整数位置(xInt,yInt)および位相(xFrac,yFrac)を以下の式で導出する:
xInt = xPb+(mvLX[0]>>(log2(MVPREC)))+x
xFrac = mvLX[0]&(MVPREC-1)
yInt = yPb+(mvLX[1]>>(log2(MVPREC)))+y
yFrac = mvLX[1]&(MVPREC-1)
ここで、(xPb,yPb)は、bW*bHサイズのブロックの左上座標、x=0…bW-1、y=0…bH-1であり、MVPRECは、mvLXの精度(1/MVPREC画素精度)を示す。例えばMVPREC=16である。
【0118】
動き補償部3091は、参照ピクチャrefImgに補間フィルタを用いて水平補間処理を行うことで、一時的画像temp[][]を導出する。以下のΣはk=0..NTAP-1のkに関する和、shift1は値のレンジを調整する正規化パラメータ、offset1=1<<(shift1-1)である:
temp[x][y] = (ΣmcFilter[xFrac][k]*refImg[xInt+k-NTAP/2+1][yInt]+offset1)>>shift1
続いて、動き補償部3091は、一時的画像temp[][]を垂直補間処理により、補間画像Pred[][]を導出する。以下のΣはk=0..NTAP-1のkに関する和、shift2は値のレンジを調整する正規化パラメータ、offset2=1<<(shift2-1)である:
Pred[x][y] = (ΣmcFilter[yFrac][k]*temp[x][y+k-NTAP/2+1]+offset2)>>shift2
なお、双予測の場合、上記のPred[][]をL0リスト、L1リスト毎に導出し(補間画像PredL0[][]とPredL1[][]と呼ぶ)、PredL0[][]とPredL1[][]から補間画像Pred[][]を生成する。
【0119】
なお、動き補償部3091は、スケールパラメータ導出部30378で導出された参照ピクチャ
の水平方向のスケーリング比RefPicScale[i][j][0]、および、参照ピクチャの垂直方向のスケーリング比RefPicScale[i][j][1]に応じて、補間画像をスケーリングする機能を有している。
【0120】
イントラ予測画像生成部310は、predModeがイントラ予測モードを示す場合、イントラ
予測パラメータ導出部304から入力されたイントラ予測パラメータと参照ピクチャメモリ306から読み出した参照画素を用いてイントラ予測を行う。
【0121】
逆量子化・逆変換部311(残差復号部)は、パラメータ復号部302から入力された量子化変換係数を逆量子化して変換係数を求める。
【0122】
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化変換係数qd[][]をスケーリング部31111によりスケーリング(逆量子化)して変換係数d[][]を求める。
【0123】
スケーリング部31111は、パラメータ復号部302において導出された量子化パラメータおよびスケーリングファクタを用いて、TU復号部が復号した変換係数に対して係数単位の重みを用いてスケーリングする。
【0124】
ここで量子化パラメータqPは、対象変換係数の色コンポーネントcIdxと、ジョイント色差残差符号化フラグtu_joint_cbcr_flagを用いて以下で導出する。
【0125】
qP = qPY (cIdx==0)
qP = qPCb (cIdx==1 && tu_joint_cbcr_flag==0)
qP = qPCr (cIdx==2 && tu_joint_cbcr_flag==0)
qP = qPCbCr (tu_joint_cbcr_flag!=0)
スケーリング部31111は、対象TUのサイズ(nTbW,nTbH)からサイズあるいは形状に関わる値rectNonTsFlagを導出する。
【0126】
rectNonTsFlag = (((Log2(nTbW)+Log2(nTbH)) & 1)==1 && transform_skip_flag[xTbY][yTbY]==0)
transform_skip_flagは変換をスキップするか否かを示すフラグである。
【0127】
スケーリング部31111は、スケーリングリスト復号部3026(図示せず)において導出さ
れたScalingFactor[][]を用いて次の処理を行う。
【0128】
スケーリング部31111は、スケーリングリストが有効でない場合(scaling_list_enabled_flag==0)、もしくは、変換スキップを用いる場合(transform_skip_flag==1)の場合に
、m[x][y]=16を設定する。つまり、一様量子化を行う。scaling_list_enabled_flagはス
ケーリングリストが有効か否かを示すフラグである。
【0129】
それ以外の場合(つまり、scaling_list_enabled_flag==1かつtransform_skip_flag==0の場合)、スケーリング部31111はスケーリングリストを用いる。ここではm[][]を下記のようにセットする。
【0130】
m[x][y] = ScalingFactor[Log2(nTbW)][Log2(nTbH)][matrixId][x][y]
ここで、matrixIdは、対象TUの予測モード(CuPredMode)、色コンポーネントインデックス(cIdx)、非分離変換の適用有無(lfnst_idx)により設定される。
【0131】
スケーリング部31111はスケーリングファクタls[x][y]をsh_dep_quant_used_flagが1
の場合に以下の式で導出する。
【0132】
ls[x][y] = (m[x][y]*quantScale[rectNonTsFlag][(qP+1)%6]) << ((qP+1)/6)
それ以外の場合(sh_dep_quant_used_flag=0)、以下の式で導出してもよい。
【0133】
ls[x][y] = (m[x][y]*quantScale[rectNonTsFlag][qP%6]) << (qP/6)
ここでquantScale[] = {{ 40, 45, 51, 57, 64, 72 }, {57, 64, 72, 80, 90, 102 }}である。sh_dep_quant_used_flagは、依存量子化を行う場合に1、行わない場合に0とするフラグである。quantScaleの値はx (x=0..6)の値により以下の式で導出する。
【0134】
quantScale[x] = RoundInt(2^(6/(x-qsoffset)))
qsoffset = rectNonTsFlag==0 ? 4 : 2
qPの値が4の場合、quantScaleは64である。ここでRoundIntはラウンド用定数(例えば0.5)を加算した上で小数点以下を切り捨てし整数化する関数である。
【0135】
スケーリング部31111は、スケーリングファクタls[][]と復号された変換係数TransCoeffLevelの積からdnc[][]を導出することにより、逆量子化を行う。
【0136】
dnc[x][y] = (TransCoeffLevel[xTbY][yTbY][cIdx][x][y]*ls[x][y]+bdOffset1) >> bdShift1
ここでbdOffset1 = 1<<(bdShift1-1)
最後に、スケーリング部31111は、逆量子化された変換係数をクリッピングしd[x][y]を導出する。
【0137】
d[x][y] = Clip3(CoeffMin, CoeffMax, dnc[x][y]) (式CLIP-1)
CoeffMin、CoeffMaxはクリッピングの最小値と最大値であり、以下の式により導出する。
【0138】
CoeffMin = -(1 << log2TransformRange)
CoeffMax = (1 << log2TransformRange) - 1
ここで、log2TransformRangeは後述する方法で導出された変換係数の範囲を示す値である。
【0139】
d[x][y]は、逆コア変換部31123もしくは逆非分離変換部31121に伝送される。逆非分離
変換部31121は、逆量子化の後、コア変換の前に、変換係数d[][]に対して逆非分離変換を
適用する。
【0140】
加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。
加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
【0141】
逆量子化・逆変換部311は、パラメータ復号部302から入力された量子化変換係数を逆量子化して変換係数を求める。
【0142】
加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。
加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
【0143】
(ニューラルネットワークに基づくポストフィルタ処理のためのSEI)
図9は、ニューラルネットワークに基づくポストフィルタ処理のためのSEIのシンタクスを示している。
・nnrpf_id: ニューラルネットワークの識別番号である。
・nnrpf_mode_idc:ポストフィルタ処理に使用するニューラルネットワークモデルの指定
方法を示すモードのインデックスである。値が0の場合は、nnrpf_idに関連付けられるNN
(Nueral Network)フィルタが、このSEIメッセージで指定されていないことを示す。値
が1の場合は、nnrpf_idに関連付けられるNNフィルタが所定のURI(Uniform Resource Identifier)で識別されるニューラルネットワークモデルであることを示す。URIは、ロジカルもしくは物理的なリソースを示す識別用の文字列である。なおURIの示す場所に実際のデータが存在する必要はなく、文字列がリソースを特定できればよい。値が2の場合は、nnrpf_idに関連付けられるNNフィルタが、このSEIメッセージに含まれるISO/IEC 15938-17ビットストリームで表されるニューラルネットワークモデルであることを示す。値が3の場合は、nnrpf_idに関連付けられるNNフィルタが、前の復号で使用したNNフィルタSEIメッセージで識別され、このSEIメッセージに含まれるISO/IEC 15938-17ビットストリームで更新されるニューラルネットワークモデルであることを示す。
・nnrpf_purposeは、ポストフィルタ処理の目的を示す。nnrpf_purposeの値が0の場合、
ポストフィルタ処理よる画質改善を目的を示す。nnrpf_purposeの値が1の場合、色差フォーマット変換を行うことを示す。具体的には、4:2:0フォーマットを4:4:4フォーマットに変換するような色差信号の解像度変換を行う場合を示す。nnrpf_purposeの値が2の場合、ポストフィルタ処理によって、画像の解像度変換して画像サイズを増やす場合を示す。
・nnrpf_out_sub_c_idcは、出力画像のクロマフォーマット表示値と入力画像のChromaFormatIdcの差を指定します。の値は、0から3 -ChromaFormatIdcの範囲でなければなりません。 出力画像の輝度サンプリングに対するクロマサンプリングの場合、色差フォーマットの表示変数OutputChromaFormatIDCは次のように導出される。
【0144】
OutputChromaFormatIdc = ChromaFormatIdc + nnrpf_out_sub_c_idc
OutputChromaFormatIdcの値が0ならば、出力はモノクロ画像で、変数outSubWidthCとoutSubHeightCには、
outSubWidthC = 1
outSubHeightC = 1
が代入される。
【0145】
OutputChromaFormatIdcの値が1ならば、出力は4:2:0フォーマット画像で、変数outSubWidthCとoutSubHeightCには、
outSubWidthC = 2
outSubHeightC = 2
が代入される。
【0146】
OutputChromaFormatIdcの値が2ならば、出力は4:2:2フォーマット画像で、変数outSubWidthCとoutSubHeightCには、
outSubWidthC = 2
outSubHeightC = 1
が代入される。
【0147】
OutputChromaFormatIdcの値が3ならば、出力は4:4:4フォーマット画像で、変数outSubWidthCとoutSubHeightCには、
outSubWidthC = 1
outSubHeightC = 1
が代入される。
・nnrpf_patch_size_minus1 + 1は、ポストフィルタの処理の単位のパッチの水平および
垂直方向の画素数を指定する。
・nnrpf_overlap * 2 + nnrpf_patch_size_minus1 + 1は、ポストフィルタ処理の各入力
テンソルのそれぞれの水平および垂直画素数を指定する。nnrpf_overlapの値は、0から16383までの範囲とする。パッチは、画面を区切ったブロックであり、nnrpf_overlapの値分だけ、左右上下に画素をオーバーラップさせて入力テンソルに入力される。
・nnrpf_pic_width_in_luma_samplesとnnrpf_pic_height_in_luma_samplesが存在する場
合は、nnrpf_idで識別されるポストフィルタ処理を復号画像に適用した結果の画像の輝度画素配列の幅と高さをそれぞれ示す。
【0148】
非特許文献2では、解像度変換をポストフィルタ処理で行う場合、解像度変換後の画像
サイズは定義されている。また非特許文献3では、ニューラルネットワークの処理の単位
であるパッチサイズが定義されているが、入出力の画像サイズとの関係が明らかではなかった。そのため、ニューラルネットワークによる処理における入出力において、不具合が生じる場合があった。そこで、本実施の形態では、以下ように各変数を設定する。
【0149】
入力のパッチの水平方向と垂直方向の大きさを表す変数patchWidth、patchHeightと、
出力のパッチの水平方向と垂直方向の大きさを表す変数outPatchWidth、outPatchHight、出力の色差信号のパッチの水平方向と垂直方向の大きさを示す変数outPatchCWidth、outPatchCHeightとオーバーラップの大きさを示す変数overlapSizeは、以下のように導出される。
【0150】
patchWidth = nnrpf_patch_size_minus1 + 1
patchHeight = nnrpf_patch_size_minus1 + 1
outPatchWidth = (nnrpf_pic_width_in_luma_samples * patchWidth) /
PicWidthInLumaSamples
outPatchHight = (nnrpf_pic_height_in_luma_samples * patchHight) /
PicHeightInLumaSamples)

outPatchCWidth = outPatchWidth * InpSubWidthC / outSubWidthC
outPatchCHeight = outPatchHight * InpSubHeightC / outSubHeightC
overlapSize = nnrpf_overlap
ここで、outPatchWidth * PicWidthInLumaSamplesの値は、nnrpf_pic_width_in_luma_samples * patchWidthの値と等しくする。また、outPatchHight * PicHightInLumaSamplesの値は、nnrpf_pic_hight_in_luma_samples * patchHightの値と等しくする。
【0151】
この制約は、PicWidthInLumaSamples対nnrpf_pic_width_in_luma_samplesの比と、patchWidth対outPatchWidthの比を等しくすることと、PicHeightInLumaSamples対nnrpf_pic_height_in_luma_samplesの比と、patchHight対outPatchHeightの比を等しくすることと等価である。
【0152】
上記のような変数の値の制約を設けることで、復号された画像サイズとポストフィルタ処理をおこなった画像サイズと、パッチの大きさに上記の制約を設けることで、ポストフィルタ処理で解像度変換を行った場合でも破綻なく処理が可能である。
・nnrpf_io_order_idcは、復号画像をポストフィルタ処理のニューラルネットワークへのテンソルへの入出力方法を示す。
【0153】
nnrpf_io_order_idcの値が0ならば、入力、出力テンソルには1チャンネルの輝度コンポーネントのみが入力、出力される。
【0154】
nnrpf_io_order_idcの値が1ならば、入力、出力テンソルには2チャンネルの色差コンポーネントのみが入力、出力される。
【0155】
nnrpf_io_order_idcの値が2ならば、入力、出力テンソルには1チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントが入力、出力される。
【0156】
nnrpf_io_order_idcの値が3ならば、図10で示すように、入力、出力テンソルには4チャンネルの輝度チャンネルと2つの色差チャンネルおよび量子化パラメータのチャンネルが
入力、出力される。
【0157】
図10は、ポストフィルタ処理を行うニューラルネットワークへの画像データの入出力処理を説明する図である。
【0158】
nnrpf_io_order_idcの値が0の時は、図10のコードで示されるように、まず、輝度の画
像サイズを基準にパッチサイズ毎に入力テンソルinputTensorは、1チャンネルの輝度コンポーネントのみが入力するInputTensors()を呼び出し入力する。次に、ポストフィルタ処理を行うPostProcessingFilter(inputTensor)を実行する。最後に、1チャンネルの輝度コンポーネントの出力テンソルoutputTensorをOutputTensors(OutputTensor)で出力画像
として出力する。ここで、変数cTopとcLeftの値は、輝度の画像データの左上の垂直方向
の座標と水平方向の座標を示す。
【0159】
nnrpf_io_order_idcの値が1の時は、図10のコードで示されるように、まず、輝度の画
像サイズをInpSubHeightCまたは、InpSubWidthで割った色差の画像サイズを基準にパッチサイズ毎に入力テンソルinputTensorは、2チャンネルの色差コンポーネントの入力するInputTensors()を呼び出し入力する。次に、ポストフィルタ処理を行うPostProcessingFilter(inputTensor)を実行する。最後に、2チャンネルの色差コンポーネントの出力テンソルoutputTensorをOutputTensors()で出力画像として出力する。ここで、変数cTopとcLeftの値は、色差の画像データの左上の垂直方向の座標と水平方向の座標を示す。
【0160】
nnrpf_io_order_idcの値が2の時は、図10のコードで示されるように、まず、輝度の画
像サイズを基準にパッチサイズ毎に入力テンソルinputTensorは、1チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントが入力するInputTensors()を呼び出し
入力する。次に、ポストフィルタ処理を行うPostProcessingFilter(inputTensor)を実行
する。最後に、1チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントの出力テンソルoutputTensorをOutputTensors()で出力画像として出力する。ここで、変数c
TopとcLeftの値は、輝度の画像データの左上の垂直方向の座標と水平方向の座標を示す。
【0161】
nnrpf_io_order_idcの値が3の時は、図10のコードで示されるように、まず、輝度の画
像サイズを基準にパッチサイズの2倍毎にinputTensorは、4チャンネルの輝度コンポーネ
ントと2チャンネルの色差コンポーネントが入力するInputTensors()を呼び出し入力す
る。次に、ポストフィルタ処理を行うPostProcessingFilter(inputTensor)を実行する。
最後に、4チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントの出力テンソルoutputTensorをOutputTensors()で出力画像として出力する。ここで、変数cTopとcLeftの値は、輝度の画像データの左上の垂直方向の座標と水平方向の座標を示す。
【0162】
図11は、ポストフィルタ処理を行うニューラルネットワークの入力テンソルに画像データを入力する処理を行うInputTensors()の処理内容を説明する図である。
【0163】
nnrpf_io_order_idcの値が0の時は、図11のコードで示されるように、入力テンソルinputTensorは1チャンネルの輝度コンポーネントのみを入力する。ここで、入力テンソルinputTensorの水平方向の大きさは、patchWidth+2*overlapSizeであり、垂直方向の大きさは、patchHeight+2*overlapSizeとなり、上下左右の隣接するパッチに対してoverlapSize分の画素値をオーバーラップさせて入力する。
【0164】
このとき、関数InpYは、復号画像の輝度信号の画素値を入力テンソルの変数の型に変換する関数とする。関数InpCは、復号画像の色差信号の画素値を入力テンソルの変数の型に変換する関数とする。
【0165】
nnrpf_io_order_idcの値が1の時は、図11のコードで示されるように、入力テンソルinputTensorは2チャンネルの色差コンポーネントを入力する。ここで、入力テンソルinputTensorの水平方向の大きさは、patchWidth+2*overlapSizeであり、垂直方向の大きさは、patchHeight+2*overlapSizeとなり、上下左右の隣接するパッチに対してoverlapSize分の画素値をオーバーラップさせて入力する。
【0166】
nnrpf_io_order_idcの値が2の時は、図11のコードで示されるように、入力テンソルinputTensorは1チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントを入力する。ここで、入力テンソルinputTensorの水平方向の大きさは、patchWidth+2*overlapSizeであり、垂直方向の大きさは、patchHeight+2*overlapSizeとなり、上下左右の隣接するパッチに対してoverlapSize分の画素値をオーバーラップさせて入力する。
【0167】
4:2:0フォーマットの場合は、色差信号は、輝度信号に対して水平方向、垂直方向とも
に半分の画素数であり、InpSubWidthCとInpSubHeightの値は両方とも2となる。この場合
、輝度画素位置に対応する色差画素を入力するとともに、対応する画素がない場合は、左隣または上隣の最近傍位置の色差画素を入力テンソルに入力する。
【0168】
4:2:2フォーマットの場合は、色差信号は、輝度信号に対して水平方向が半分の画素数
であり、InpSubWidthCの値は1とInpSubHeightの値は2となる。この場合、輝度画素位置に対応する色差画素を入力するとともに、対応する画素がない場合は、左隣の最近傍位置の色差画素を入力テンソルに入力する。
【0169】
4:4:4フォーマットの場合は、色差信号は、輝度信号に対して同じ画素数であり、InpSubWidthCとInpSubHeightの値はともに1となる。この場合、輝度画素位置に対応する色差画素を入力テンソルに入力する。
【0170】
nnrpf_io_order_idcの値が3の時は、図11のコードで示されるように、入力テンソルinp
utTensorは4チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントと量子化パラメータを変換した値を入力する。ここで、入力テンソルinputTensorの水平方向の
大きさは、patchWidth+2*overlapSizeであり、垂直方向の大きさは、patchHeight+2*overlapSizeとなり、上下左右の隣接するパッチに対してoverlapSize分の画素値をオーバーラップさせて入力する。
【0171】
4:2:0フォーマットの場合は、輝度信号は、水平方向、垂直方向にそれぞれ1画素毎にサンプリングして4分割して、4チャンネル化としている。なお、4:2:2フォーマットの場合
には、色差信号を垂直方向に1画素毎にサンプリングして、4チャンネルの色差コンポーネントとしてもよい。
【0172】
図12は、ポストフィルタ処理を行うニューラルネットワークの出力テンソルからポストフィルタ処理を行った画像データを出力する処理を行うOutputTensors()の処理内容を説
明する図である。
【0173】
このとき、関数OutYは、出力テンソルの変数の型を輝度信号の画素値に変換する関数とする。関数OutCは、出力テンソルの変数の型を色差信号の画素値に変換する関数とする。
【0174】
nnrpf_io_order_idcの値が0の時は、図12のコードで示されるように、出力テンソルoutputTensorは1チャンネルの輝度コンポーネントを出力する。ここで、出力テンソルoutputTensorの水平方向の大きさは、outPatchWidthであり、垂直方向の大きさは、outPatchHeightとなる。ポストフィルタ処理を復号画像に適用した結果の輝度画像の幅nnrpf_pic_width_in_luma_samplesと高さnnrpf_pic_height_in_luma_samplesの範囲のポストフィルタ処理後の輝度信号の出力画像バッファFilteredYPicに出力する。
【0175】
nnrpf_io_order_idcの値が1の時は、図12のコードで示されるように、出力テンソルoutputTensorは2チャンネルの色差コンポーネントを出力する。ここで、出力テンソルoutputTensorの水平方向の大きさは、outPatchWidthであり、垂直方向の大きさは、outPatchHeightとなる。ポストフィルタ処理を復号画像に適用した結果の色差画像の幅nnrpf_pic_width_in_luma_samples/outSubWidthCと高さnnrpf_pic_height_in_luma_samples/outSubHightCの範囲のポストフィルタ処理後の色差信号の出力画像バッファFilteredCPicに出力する。
【0176】
nnrpf_io_order_idcの値が2の時は、図12のコードで示されるように、出力テンソルoutputTensorは1チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントを出力する。ここで、出力テンソルoutputTensorの水平方向の大きさは、outPatchWidthであり、垂直方向の大きさは、outPatchHeightとなる。ポストフィルタ処理を復号画像に適用した結果の輝度画像の幅nnrpf_pic_width_in_luma_samplesと高さnnrpf_pic_height_in_luma_samplesの範囲のポストフィルタ処理後の輝度信号の出力画像バッファFilteredYPic
を出力し、同時に、ポストフィルタ処理後の色差信号を色差信号の出力画像バッファFilteredCPicに出力する。
【0177】
nnrpf_io_order_idcの値が3の時は、図12のコードで示されるように、出力テンソルoutputTensorは4チャンネルの輝度コンポーネントと2チャンネルの色差コンポーネントを出力する。ここで、出力テンソルoutputTensorの水平方向の大きさは、outPatchWidthであり、垂直方向の大きさは、outPatchHeightとなる。ポストフィルタ処理を復号画像に適用した結果の輝度画像の幅nnrpf_pic_width_in_luma_samplesと高さnnrpf_pic_height_in_luma_samplesの範囲のポストフィルタ処理後の輝度信号の出力画像バッファFilteredYPicを出力し、同時に、ポストフィルタ処理後の色差信号を色差信号の出力画像バッファFilteredCPicに出力する。
・nnrpf_reserved_zero_bitは、0でなければならない。SEIのビットストリームをバイト
アラインするために入力される。
・nnrpf_uri[ i ]は、iバイトのITEF Internet Standard 63で定義されたUTF-8の文字コ
ードのNULLで終端されるiバイトの文字が含まれる。UTF-8文字コード列は、ポストフィルタ処理で使用されるニューラルネットワークを識別するIETF Internet Standard 66で指
定されている構文とセマンティクスを持つURIが含まれる。
・nnrpf_payload_byte [i]には、ISO /IEC15938-17に準拠するビットストリームのi番目
のバイトが含まれる。nnrpf_payload_byte[i]のバイト列は、ISO /IEC15938-17に準拠す
るビットストリームである。
【0178】
(ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の例1)
ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の実施形態を示
す。
【0179】
図13は、ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別のシン
タクス例1を示している。以下では、既に図9で説明したものと同一のシンタクスエレメントについては、説明を省略する。
・nnrpf_component_last_flagは、ポストフィルタ処理の入力テンソルおよび出力テンソ
ルにおいて、各チャネルが最後の次元になるよう格納されているかどうかを示すフラグである。nnrpf_component_last_flagが0である場合、チャネルをテンソルの第2の次元に格
納し、1である場合は最後の次元に格納する。
・nnrpf_inp_sample_idcは、復号画像の画素値をポストフィルタ処理への入力値に変換する方法を示す。nnrpf_inp_sample_idcが0,1,2,3の場合、ポストフィルタ処理への入力値
は、それぞれ、binary16, binary32, binary64, binary128である。これらはIEEE 754-2019で規定される浮動小数点型の数である。このとき、関数InpY、InpCおよびInpQPを下記のように規定する:
InpY( x ) = x ÷ ( ( 1 << BitDepthY ) - 1 )
InpC( x ) = x ÷ ( ( 1 << BitDepthC ) ) - 1 )
InpQP( x ) = 2^( ( x - 42 ) / 6 )
なお、演算子÷は、小数精度(商の小数点以下を切り捨てない)の除算を表す。BitDepthYおよびBitDepthCは、それぞれ、復号画像の輝度コンポーネントのビット長および色差コンポーネントのビット長である。
【0180】
nnrpf_inp_sample_idcが4,5,6の場合、ポストフィルタ処理への入力値は、それぞれ、8ビット符号なし整数、16ビット符号なし整数、32ビット符号なし整数である。このとき、関数InpY、InpCおよびInpQPを下記のように規定する:
inpTensorBitDepth >= BitDepthY の場合、
InpY( x ) = x << ( inpTensorBitDepth - BitDepthY )
そうでない場合、
InpY( x ) = Clip3( 0, (1<<inpTensorBitDepth) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthY - inpTensorBitDepth
inpTensorBitDepth >= BitDepthC の場合、
InpC( x ) = x << ( inpTensorBitDepth - BitDepthC )
そうでない場合、
InpC( x ) = Clip3( 0, (1<<inpTensorBitDepth) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthC - inpTensorBitDepth
InpQP( x ) = x
inpTensorBitDepthは、入力テンソルにおける画素値のビット長である。
関数InpY, InpC, InpQPは、入力テンソルに入力値を設定する際に用いる。図11には、InpYおよびInpCの使用例を含む。このように入力値を変換する関数InpYおよびInpCをデータ型により切り替えることで、入力値の値域を適切に変換してポストフィルタ処理に入力できる。なお、図11に示すnnrpf_io_order_idc=3の場合には、入力テンソルを用いてQPの値を入力する。この際に変換関数としてInpQPを用いれば、入力のテンソルの型に応じた変換式を適用することができる。たとえば図11中の式
inputTensor[0][6][yP+overlapSize][xP+overlapSize] = 2(SliceQPY - 42)/6
に代えて
inputTensor[0][6][yP+overlapSize][xP+overlapSize] = InpQP(SliceQPY)
とするとよい。
【0181】
また、上記の例のように丸めつき右シフトを行わず、次のように右シフトのみとしてもよい:
inpTensorBitDepth >= BitDepthY の場合、
InpY( x ) = x << ( inpTensorBitDepth - BitDepthY )
そうでない場合、
InpY( x ) = x >> ( BitDepthY - inpTensorBitDepth )
inpTensorBitDepth >= BitDepthC の場合、
InpC( x ) = x << ( inpTensorBitDepth - BitDepthC )
そうでない場合、
InpC( x ) = x >> ( BitDepthC - inpTensorBitDepth )
・nnrpf_inp_tensor_bitdepth_minus8 + 8は、整数の入力テンソルにおける入力値のビット長を示す。inpTensorBitDepth は、次のように求める:
inpTensorBitDepth = nnrpf_inp_tensor_bitdepth_minus8 + 8
nnrpf_inp_tensor_bitdepth_minus8は、入力テンソルの入力値が8bit符号なし整数より大きな整数型の場合に符号化する。入力テンソルの入力値が8bit符号なし整数である場合(nnrpf_inp_sample_idcが4)、nnrpf_inp_tensor_bitdepth_minus8 = 0 と設定する。入力テンソルの入力値が16bit符号なし整数または32bit符号なし整数である場合(nnrpf_inp_sample_idcが5または6)、nnrpf_inp_tensor_bitdepth_minus8の値の範囲は、それぞれ、0から8または0から24である。
【0182】
また、minus8ではなくminus1やminus4など別の数値を用いてもよい。たとえばビット長の最小値をXbitとする場合は、nnrpf_inp_tensor_bitdepth_minusXをシンタクスエレメントとして用い、inpTensorBitDepthは次のように求める:
inpTensorBitDepth = nnrpf_inp_tensor_bitdepth_minusX + X
nnrpf_inp_tensor_bitdepth_minusXは、入力テンソルの入力値がXbit符号なし整数より大きな整数型の場合に符号化する。
・nnrpf_inp_order_idcは、復号画像の画素配列をポストフィルタ処理への入力として配
置する方法を示す。
・nnrpf_out_sample_idcは、ポストフィルタ処理の出力値の型を示す。nnrpf_inp_sample_idcが0,1,2,3の場合、ポストフィルタ処理への入力値は、それぞれ、binary16, binary32, binary64, binary128である。これらはIEEE 754-2019で規定される浮動小数点型の数である。このとき、関数OutYおよびOutCは下記のように規定される:
OutY( x ) = Clip3( 0, (1<<BitDepthY)-1, Round( x * ((1<<BitDepthY)-1) ) )
OutC( x ) = Clip3( 0, (1<<BitDepthC)-1, Round( x * ((1<<BitDepthC)-1) ) )
BitDepthYおよびBitDepthCは、それぞれ、復号画像の輝度コンポーネントのビット長および色差コンポーネントのビット長である。
【0183】
nnrpf_inp_sample_idcが4,5,6の場合、ポストフィルタ処理への入力値は、それぞれ、8
ビット符号なし整数、16ビット符号なし整数、32ビット符号なし整数である。このとき、関数InpY、InpCおよびInpQPは下記のように規定される:
outTensorBitDepth >= BitDepthY の場合、
OutY( x ) = x << ( outTensorBitDepth - BitDepthY )
そうでない場合、
OutY( x ) = Clip3( 0, (1<<outTensorBitDepth) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthY - outTensorBitDepth
outTensorBitDepth >= BitDepthC の場合、
OutC( x ) = x << ( outTensorBitDepth - BitDepthC )
そうでない場合、
OutC( x ) = Clip3( 0, (1<<outTensorBitDepth) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthC - outTensorBitDepth
outTensorBitDepthは、出力テンソルにおける出力値のビット長である。
【0184】
関数OutYとOutCは、出力テンソルから出力値を取得する際に用いる。図12には、OutYおよびOutCの使用例を含む。このように出力値を変換する関数OutYおよびOutCの処理をデータ型により切り替えることで、出力値の値域を適切に変換して取得できる。
・nnrpf_out_tensor_bitdepth_minus8 + 8は、整数の出力テンソルにおける出力値のビット長を示す。outTensorBitDepth は、次のように求める:
outTensorBitDepth = nnrpf_out_tensor_bitdepth_minus8 + 8
出力テンソルの出力値が8bit符号なし整数である場合(nnrpf_out_sample_idcが4)、nnrpf_out_tensor_bitdepth_minus8を符号化せず、nnrpf_out_tensor_bitdepth_minus8 = 0 と設定する。出力テンソルの出力値が16bit符号なし整数または32bit符号なし整数である場合(nnrpf_out_sample_idcが5または6)、nnrpf_out_tensor_bitdepth_minus8の値の範囲は、それぞれ、0から8または0から24である。
【0185】
なお、nnrpf_inp_tensor_bitdepth_minus8とnnrpf_out_tensor_bitdepth_minus8を使わず、1つのシンタクスエレメントnnrpf_tensor_bitdepth_minus8から次のように導出して
もよい:
inpTensorBitDepth = nnrpf_tensor_bitdepth_minus8 + 8
outTensorBitDepth = nnrpf_tensor_bitdepth_minus8 + 8
このとき、入力テンソルまたは出力テンソルのいずれかが整数型であり、どちらかが8bit符号なし整数より大きな型であればnnrpf_tensor_bitdepth_minus8を符号化する。
また、入力ビット長と同様に、minus8ではなくminus1やminus4など最小ビット長を示す別の数値を用いてもよい。
・nnrpf_out_order_idcは、ポストフィルタ処理の出力値がどのように並んでいるかを示
す。
・nnrpf_constant_patch_size_flagは、ポストフィルタ処理のパッチ(処理単位)が固定のサイズかどうかを示す。nnrpf_constant_patch_size_flagが1の場合、ポストフィルタ
処理の処理単位の幅および高さを表すpatchWidthおよびpatchHeightは、後続の2つのシンタクスエレメントにより指定される幅および高さに設定する:
patchWidth = nnrpf_patch_width_minus1 + 1
patchHeight = nnrpf_patch_height_minus1 + 1
nnrpf_constant_patch_size_flagが0の場合、patchWidthおよびpatchHeightは、ポストフィルタ処理を実行する装置(NNフィルタ部611)が任意に決定した値とする。例えば、NNフィルタ部611の実行する入力テンソル幅-2*overlapSize、入力テンソル高さ-2*overlapSize、overlapSize=8を用いてもよい。
・nnrpf_patch_width_minus1 + 1は、パッチが固定のサイズである場合の幅を示す。
・nnrpf_patch_height_minus1 + 1は、パッチが固定のサイズである場合の高さを示す。
【0186】
なお、nnrpf_inp_sample_idcおよびnnrpf_out_sample_idcの値は、上記で説明した値でなく別の割り当てでもよい。また、上記の説明に含まれていない型を選択できるようにしてもよい。たとえば、nnrpf_inp_sample_idc=7およびnnrpf_out_sample_idc=7に64ビット符号なし整数を割り当てもよいし、符号つき整数を割り当ててもよい。
【0187】
以上のようにすることで、ニューラルネットワークへの入力画素と入力テンソルおよび出力テンソルとポストフィルタ処理後の出力画像の画素値の間で、適切にビット長を変換できる。
【0188】
また、変形例として、シンタクス変数の値によらず、patchWidthおよびpatchHeight、overlapSizeは、ポストフィルタ処理を実行する装置(NNフィルタ部611)が任意に決定し
た値としてもよい。値は上記で説明したとおり。
【0189】
また、変形例として、出力テンソルの出力値のビット長のまま変換せずに出力画像としてもよい。このとき、関数OutYおよびOutCは以下の通りである;
OutY( x ) = x
OutC( x ) = x
あるいは関数の呼び出しを省いてもよい。
【0190】
以上のようにすることで、出力値のビット長を保った出力画像を取得することができる。
【0191】
(ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の例2)
ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の実施形態を示
す。
【0192】
図14は、ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別のシン
タクス例2を示している。以下では、既に説明したものと同一のシンタクスエレメントに
ついては、説明を省略する。
・nnrpf_inp_tensor_bitdepth_delta は、整数の入力テンソルにおける入力値のビット長を示す。inpTensorBitDepthは次のように求める:
inpTensorBitDepth =
(nnrpf_inp_sample_idc == 4) ? nnrpf_inp_tensor_bitdepth_delta + 1 :
(nnrpf_inp_sample_idc == 5) ? nnrpf_inp_tensor_bitdepth_delta + 9 :
(nnrpf_inp_sample_idc == 6) ? nnrpf_inp_tensor_bitdepth_delta + 17
またはこのように求めてもよい:
inpTensorBitDepth =
nnrpf_inp_tensor_bitdepth_delta + 1 + (nnrpf_inp_sample_idc-4) :
(nnrpf_inp_sample_idc == 5) ? nnrpf_inp_tensor_bitdepth_delta + 9 :
(nnrpf_inp_sample_idc == 6) ? nnrpf_inp_tensor_bitdepth_delta + 17
nnrpf_inp_sample_idcが4,5,6の場合、nnrpf_inp_tensor_bitdepth_deltaの範囲は、それぞれ、0から7, 0から15, 0から15である。入力値のとる整数型に応じてビット長のとりうる最小値を変え、最小値からの差分を符号化する。これにより、ビット長の範囲を幅広く利用可能としながらビット長を表現するための符号量を削減できる。
・nnrpf_out_tensor_bitdepth_delta は、整数の出力テンソルにおける出力値のビット長を示す。outTensorBitDepthは次のように求める:
outTensorBitDepth =
(nnrpf_out_sample_idc == 4) ? nnrpf_out_tensor_bitdepth_delta + 1 :
(nnrpf_out_sample_idc == 5) ? nnrpf_out_tensor_bitdepth_delta + 9 :
(nnrpf_out_sample_idc == 6) ? nnrpf_out_tensor_bitdepth_delta + 17
nnrpf_out_sample_idcが4,5,6の場合、nnrpf_out_tensor_bitdepth_deltaの範囲は、それぞれ、0から7, 0から15, 0から15である。これにより、nnrpf_out_tensor_bitdepth_deltaと同様に、ビット長の範囲を幅広く利用可能としながら、ビット長を表現するための
符号量を削減できる。
【0193】
(ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の例3)
ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の実施形態を示
す。
【0194】
図15は、ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別のシン
タクス例3を示している。以下では、既に説明したものと同一のシンタクスエレメントに
ついては、説明を省略する。
・nnrpf_inp_tensor_bitdepth_luma_minus8およびnnrpf_inp_tensor_bitdepth_luma_minus8は、nnrpf_inp_tensor_bitdepth_minus8と同様に整数の入力テンソルにおけるビット長を示す値であるが、それぞれ輝度信号の値および色差信号の値のビット長のみを示す。入力テンソルにおける輝度信号の値および色差信号の値のビット長inpTensorBitDepthY, inpTensorBitDepthCは次のように求める:
inpTensorBitDepthY = nnrpf_inp_tensor_bitdepth_luma_minus8 + 8
inpTensorBitDepthC = nnrpf_inp_tensor_bitdepth_chroma_minus8 + 8
このとき、整数の入力テンソルに対する関数InpYおよびInpCは次のように定める:
inpTensorBitDepthY >= BitDepthY の場合、
InpY( x ) = x << ( inpTensorBitDepthY - BitDepthY )
そうでない場合、
InpY( x ) = Clip3( 0, (1<<inpTensorBitDepthY) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthY - inpTensorBitDepthY
inpTensorBitDepthC >= BitDepthC の場合、
InpC( x ) = x << ( inpTensorBitDepthC - BitDepthC )
そうでない場合、
InpC( x ) = Clip3( 0, (1<<inpTensorBitDepthC) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthC - inpTensorBitDepthC
・nnrpf_out_tensor_bitdepth_luma_minus8およびnnrpf_out_tensor_bitdepth_luma_minus8は、nnrpf_out_tensor_bitdepth_minus8と同様に整数の出力テンソルにおけるビット長を示す値であるが、それぞれ輝度信号の値および色差信号の値のビット長のみを示す。出力テンソルにおける輝度信号の値および色差信号の値のビット長outTensorBitDepthY, outTensorBitDepthCは次のように求める:
outTensorBitDepthY = nnrpf_out_tensor_bitdepth_luma_minus8 + 8
outTensorBitDepthC = nnrpf_out_tensor_bitdepth_chroma_minus8 + 8
このとき、整数の出力テンソルに対する関数OutYおよびOutCは次のように定める:
outTensorBitDepthY >= BitDepthY の場合、
OutY( x ) = x << ( outTensorBitDepthY - BitDepthY )
そうでない場合、
OutY( x ) = Clip3( 0, (1<<outTensorBitDepthY) -1,
( x + ( 1 << (shift-1) ) ) >> shift )
ここで shift = BitDepthY - outTensorBitDepthY
以上のようにすることで、輝度信号の値と色差信号の値のビット長が異なる実施形態への対応が可能である。
【0195】
(ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の例4)
ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の実施形態を示
す。この実施形態は、入力テンソルと出力テンソルのデータ型およびビット長を同一とする例である。
【0196】
図16は、ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別のシン
タクス例4を示している。以下では、既に説明したものと同一のシンタクスエレメントに
ついては、説明を省略する。
・nnrpf_sample_idcは、入力および出力テンソルのデータ型を示す。値の示すデータ型は、既に説明したnnrpf_inp_sample_idcなどと同様である。nnrpf_inp_sample_idcおよびnnrpf_out_sample_idcには、nnrpf_sample_idcの値を設定する。
・nnrpf_tensor_bitdepth_minus8 + 8は、入力および出力テンソルの入力値のビット長を示す。inpTensorBitdepthおよびoutTensorBitDepthは以下のように設定する:
inpTensorBitDepth = nnrp_tensor_bitdepth_minis8 + 8
outTensorBitDepth = nnrp_tensor_bitdepth_minis8 + 8
以上のようにすることで、入力テンソルと出力テンソルの型が同一の実施形態において符号化効率が向上できる。
【0197】
(ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の例5)
ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別の実施形態を示
す。この実施形態は、入力テンソルと出力テンソルのデータ型をビット長と同一とする例である。
【0198】
図17は、ニューラルネットワークに基づくポストフィルタ処理のためのSEIの別のシン
タクス例5を示している。以下では、既に説明したものと同一のシンタクスエレメントに
ついては、説明を省略する。
・nnrpf_inp_sample_idcは、復号画像のサンプル値をポストフィルタ処理への入力値に変換する方法を示す。nnrpf_inp_sample_idcが0,1,2,3の場合、ポストフィルタ処理への入
力値は、それぞれ、binary16, binary32, binary64, binary128である。これらはIEEE 754-2019で規定される浮動小数点型の数である。このとき、関数InpY、InpCおよびInpQPを下記のように規定する:
InpY( x ) = x ÷ ( ( 1 << BitDepthY ) - 1 )
InpC( x ) = x ÷ ( ( 1 << BitDepthC ) ) - 1 )
InpQP( x ) = 2^( ( x - 42 ) / 6 )
BitDepthYおよびBitDepthCは、それぞれ、復号画像の輝度コンポーネントのビット長および色差コンポーネントのビット長である。たとえばnnrpf_inp_sample_idcが4から28の場
合、ポストフィルタ処理への入力値は、それぞれ、(nnrpf_imp_sample_idc-4+8)ビット符号なし整数である。このとき、入力テンソルのビット長inpTensorBitDepthを次のように
規定する:
inpTensorBitDepth = nnrpf_inp_sample_idc - 4 + 8
関数InpYおよびInpCについては上記の別の例1で説明した通りである。
【0199】
以上のようにすることでシンタクスを簡潔にすることができる。
【0200】
(SEIの復号とポストフィルタ処理)
ヘッダ復号部3020は、規定されたSEIメッセージから、ネットワークモデル複雑度情報
を復号する。SEIは復号や表示などに関連する処理の付加情報である。
【0201】
図18は、NNフィルタ部611の処理のフローチャートを示す図である。NNフィルタ部611は
、上記SEIメッセージのパラメータに従って以下の処理を行う。
【0202】
S6001:SEIのネットワークモデル複雑度情報から処理量と精度を読み込む。
【0203】
S6002:NNフィルタ部611が処理可能な複雑度を超える場合には終了する。超えない場合にはS6003へ進む。
【0204】
S6003:NNフィルタ部611が処理可能な精度を超える場合には終了する。超えない場合にはS6004へ進む。
【0205】
S6004:SEIからネットワークモデルを特定し、NNフィルタ部611のトポロジーを設定す
る。
【0206】
S6005:SEIの更新情報からネットワークモデルのパラメータを導出する。
【0207】
S6006:導出されたネットワークモデルのパラメータをNNフィルタ部611に読み込む。
【0208】
S6007:NNフィルタ部611のフィルタ処理を実行し、外部に出力する。
【0209】
ただし、復号処理における輝度サンプルや色差サンプルの構築にSEIは必ずしも必要と
されない。
【0210】
(NNフィルタ部611の構成例)
図19は、ニューラルネットワークフィルタ部(NNフィルタ部611)を用いた補間フィル
タ、ループフィルタ、ポストフィルタの構成例を示す図である。以下ではポストフィルタの例を説明するが、補間フィルタやループフィルタでもよい。
【0211】
動画像復号装置後の後処理部61は、NNフィルタ部611を備える。NNフィルタ部611は、参照ピクチャメモリ306の画像を出力する際に、フィルタ処理を行い外部に出力する。出力
画像は、表示、ファイル書き出し、再エンコード(トランスコード)、伝送などをしてもよい。NNフィルタ部611は、入力画像に対して、ニューラルネットワークモデルによるフ
ィルタ処理を行う手段である。同時に、等倍もしくは有理数倍の縮小・拡大を行ってもよい。
【0212】
ここで、ニューラルネットワークモデル(以下、NNモデル)とは、ニューラルネットワークの要素および結合関係(トポロジー)と、ニューラルネットワークのパラメータ(重み、バイアス)を意味する。なお、トポロジーを固定して、ニューラルネットワークモデルはパラメータのみを切り替えても良い。
【0213】
(NNフィルタ部611の詳細)
NNフィルタ部は入力画像inputTensorと入力パラメータ(例えば、QP、bSなど)を用いて
、ニューラルネットワークモデルによるフィルタ処理を行う。入力画像は、コンポーネントごとの画像であってもよいし、複数コンポーネントをそれぞれチャネルとして持つ画像であってもよい。また、入力パラメータは画像と異なるチャネルに割り当ててもよい。
【0214】
NNフィルタ部は、以下の処理を繰り返し適用してもよい。
【0215】
NNフィルタ部は、inputTensorにカーネルk[m][i][j]を畳み込み演算(conv,convolution)し、biasを加算した出力画像outputTensorを導出する。ここで、nn=0..n-1、xx=0..width-1、yy=0..height-1である。
【0216】
outputTensor[nn][xx][yy]=ΣΣΣ(k[mm][i][j]*inputTensor[mm][xx+i-of][yy+j-of]+bias[nn])
1x1 Convの場合、Σは、各々mm=0..m-1、i=0、j=0の総和を表す。このとき、of=0を設
定する。3x3 Convの場合、Σは各々mm=0..m-1、i=0..2、j=0..2の総和を表す。このとき
、of=1を設定する。nはoutSamplesのチャネル数、mはinputTensorのチャネル数、widthはinputTensorとoutputTensorの幅、heightはinputTensorとoutputTensorの高さである。ofは、inputTensorとoutputTensorのサイズを同一にするために、inputTensorの周囲に設けるパディング領域のサイズである。以下、NNフィルタ部の出力が画像ではなく値(補正値)の場合には、outputTensorの代わりにcorrNNで出力を表わす。
【0217】
なお、CWH形式のinputTensor、outputTensorではなくCHW形式のinputTensor、outputTensorで記述すると以下の処理と等価である。
【0218】
outputTensor[nn][yy][xx]=ΣΣΣ(k[mm][i][j]*inputTensor[mm][yy+j-of][xx+i-of]+bias[nn])
また、Depth wise Convと呼ばれる以下の式で示す処理を行ってもよい。ここで、nn=0..n-1、xx=0..width-1、yy=0..height-1である。
【0219】
outputTensor[nn][xx][yy]=ΣΣ(k[nn][i][j]*inputTensor[nn][xx+i-of][yy+j-of]+bias[nn])
Σは各々i、jに対する総和を表す。nはoutputTensorとinputTensorのチャネル数、width
はinputTensorとoutputTensorの幅、heightはinputTensorとoutputTensorの高さである。
【0220】
またActivateと呼ばれる非線形処理、たとえばReLUを用いてもよい。
ReLU(x) = x >= 0 ? x : 0
また以下の式に示すleakyReLUを用いてもよい。
【0221】
leakyReLU(x) = x >= 0 ? x : a * x
ここでaは所定の値、例えば0.1や0.125である。また整数演算を行うために上記の全てのk、bias、aの値を整数として、convの後に右シフトを行ってもよい。
【0222】
ReLUでは0未満の値に対しては常に0、それ以上の値に対しては入力値がそのまま出力される。一方、leakyReLUでは、0未満の値に対して、aで設定された勾配で線形処理が行わ
れる。ReLUでは0未満の値に対する勾配が消失するため、学習が進みにくくなる場合があ
る。leakyReLUでは0未満の値に対する勾配が残され、上記問題が起こりにくくなる。また、上記leakyReLU(x)のうち、aの値をパラメータ化して用いるPReLUを用いてもよい。
【0223】
(NNR)
Neural Network Coding and Representation(NNR)は、ニューラルネットワーク(NN)を
効率的に圧縮するための国際標準規格である。学習済みのNNの圧縮を行うことで、NNを保存や伝送を行う際の効率化が可能となる。
【0224】
以下にNNRの符号化・復号処理の概要について説明する。
【0225】
図20は、NNRの符号化装置・復号装置について示す図である。
【0226】
NN符号化装置801は、前処理部8011、量子化部8012、エントロピー符号化部8013を有す
る。NN符号化装置801は、圧縮前のNNモデルOを入力し、量子化部8012にてNNモデルOの量
子化を行い、量子化モデルQを求める。NN符号化装置801は、量子化前に、前処理部8011に
て枝刈り(プルーニング)やスパース化などのパラメータ削減手法を繰り返し適用してもよい。その後、エントロピー符号化部8013にて、量子化モデルQにエントロピー符号化を
適用し、NNモデルの保存、伝送のためのビットストリームSを求める。
【0227】
NN復号装置802は、エントロピー復号部8021、パラメータ復元部8022、後処理部8023を
有する。NN復号装置802は、始めに伝送されたビットストリームSを入力し、エントロピー復号部8021にて、Sのエントロピー復号を行い、中間モデルRQを求める。NNモデルの動作
環境がRQで使用された量子化表現を用いた推論をサポートしている場合、RQを出力し、推論に使用してもよい。そうでない場合、パラメータ復元部8022にてRQのパラメータを元の表現に復元し、中間モデルRPを求める。使用する疎なテンソル表現がNNモデルの動作環境で処理できる場合、RPを出力し、推論に使用してもよい。そうでない場合、NNモデルOと
異なるテンソル、または構造表現を含まない再構成NNモデルRを求め、出力する。
【0228】
NNR規格には、整数、浮動小数点など、特定のNNパラメータの数値表現に対する復号手
法が存在する。
【0229】
復号手法NNR_PT_INTは、整数値のパラメータからなるモデルを復号する。復号手法NNR_PT_FLOATは、NNR_PT_INTを拡張し、量子化ステップサイズdeltaを追加する。このdeltaに上記整数値を乗算し、スケーリングされた整数を生成する。deltaは、整数の量子化パラメータqpとdeltaの粒度パラメータqp_densityから、以下のように導き出される。
【0230】
mul = 2^(qp_density) + (qp & (2^(qp_density)-1))
delta = mul * 2^((qp >> qp_density)-qp_density)
(学習済みNNのフォーマット)
学習済みNNの表現は、層のサイズや層間の接続などのトポロジー表現と、重みやバイアスなどのパラメータ表現の2つの要素からなる。
【0231】
トポロジー表現は、TensorflowやPyTorchなどのネイティブフォーマットでカバーされ
ているが、相互運用性向上のため、Open Neural Network Exchange Format(ONNX)、Neural Network Exchange Format(NNEF)などの交換フォーマットが存在する。
【0232】
また、NNR規格では、圧縮されたパラメータテンソルを含むNNRビットストリームの一部として、トポロジー情報nnr_topology_unit_payloadを伝送する。これにより、交換フォ
ーマットだけでなく、ネイティブフォーマットで表現されたトポロジー情報との相互運用を実現する。
【0233】
(画像符号化装置の構成)
次に、本実施形態に係る画像符号化装置11の構成について説明する。図7は、本実施形
態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ル
ープフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、パラメータ符号化部111、予測パラメータ導出部120、エントロピー符号化部104を含んで構成される。
【0234】
予測画像生成部101はCU毎に予測画像を生成する。予測画像生成部101は既に説明したインター予測画像生成部309とイントラ予測画像生成部310を含んでおり、説明を省略する。
【0235】
減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Tの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103
に出力する。
【0236】
変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、
量子化変換係数をパラメータ符号化部111及び逆量子化・逆変換部105に出力する。
【0237】
逆量子化・逆変換部105は、画像復号装置31における逆量子化・逆変換部311(図5)と
同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
【0238】
パラメータ符号化部111は、ヘッダ符号化部1110、CT情報符号化部1111、CU符号化部1112(予測モード符号化部)を備えている。CU符号化部1112はさらにTU符号化部1114を備えている。以下、各モジュールの概略動作を説明する。
【0239】
ヘッダ符号化部1110はヘッダ情報、分割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
【0240】
CT情報符号化部1111は、QT、MT(BT、TT)分割情報等を符号化する。
【0241】
CU符号化部1112はCU情報、予測情報、分割情報等を符号化する。
【0242】
TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報と量子化予測誤差を符号化する。
【0243】
CT情報符号化部1111、CU符号化部1112は、インター予測パラメータ(predMode、merge_flag、merge_idx、inter_pred_idc、refIdxLX、mvp_LX_idx、mvdLX)、イントラ予測パラメータ(intra_luma_mpm_flag、intra_luma_mpm_idx、intra_luma_mpm_reminder、intra_chroma_pred_mode)、量子化変換係数等のシンタックス要素をパラメータ符号化部111に供給する。
【0244】
エントロピー符号化部104には、パラメータ符号化部111から量子化変換係数と符号化パラメータ(分割情報、予測パラメータ)が入力される。エントロピー符号化部104はこれ
らをエントロピー符号化して符号化データTeを生成し、出力する。
【0245】
予測パラメータ導出部120は、インター予測パラメータ符号化部112、イントラ予測パラメータ符号化部113を含む手段であり、符号化パラメータ決定部110から入力されたパラメータからイントラ予測パラメータ及びイントラ予測パラメータを導出する。導出されたイントラ予測パラメータ及びイントラ予測パラメータは、パラメータ符号化部111に出力される。
【0246】
(インター予測パラメータ符号化部の構成)
インター予測パラメータ符号化部112は図8に示すように、パラメータ符号化制御部1121、インター予測パラメータ導出部303を含んで構成される。インター予測パラメータ導出部303は画像復号装置と共通の構成である。パラメータ符号化制御部1121は、マージインデックス導出部11211とベクトル候補インデックス導出部11212を含む。
【0247】
マージインデックス導出部11211は、マージ候補等を導出し、インター予測パラメータ
導出部303に出力する。ベクトル候補インデックス導出部11212は予測ベクトル候補等を導出し、インター予測パラメータ導出部303とパラメータ符号化部111に出力する。
【0248】
(イントラ予測パラメータ符号化部113の構成)
イントラ予測パラメータ符号化部113は、パラメータ符号化制御部1131とイントラ予測
パラメータ導出部304を備える。イントラ予測パラメータ導出部304は画像復号装置と共通の構成である。
【0249】
パラメータ符号化制御部1131はIntraPredModeYおよびIntraPredModeCを導出する。さらにmpmCandList[]を参照してintra_luma_mpm_flagを決定する。これらの予測パラメータをイントラ予測パラメータ導出部304とパラメータ符号化部111に出力する。
【0250】
ただし、画像復号装置と異なり、インター予測パラメータ導出部303、イントラ予測パ
ラメータ導出部304への入力は符号化パラメータ決定部110、予測パラメータメモリ108で
あり、パラメータ符号化部111に出力する。
【0251】
加算部106は、予測画像生成部101から入力された予測ブロックの画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
【0252】
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まな
くてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
【0253】
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【0254】
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【0255】
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセッ
トを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
【0256】
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化
誤差を示すRDコスト値を算出する。RDコスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化データTeの情報量である。二乗誤差は、減算部102において算出され
た予測誤差の二乗和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセット
を選択する。符号化パラメータ決定部110は決定した符号化パラメータをパラメータ符号
化部111と予測パラメータ導出部120に出力する。
【0257】
なお、上述した実施形態における画像符号化装置11、画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測パラメータ導出部320、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111、予測パラメータ導出部120をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置11、画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0258】
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
【0259】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0260】
本実施の形態を図1に基づいて説明すると、符号化データを復号して復号画像を生成す
る画像復号装置と、前記復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有し、前記解像度逆変換装置において解像度を指定する情報と逆変換処理の単位を示す情報を復号し、前記解像度を指定する情報と前記逆変換処理の単位を示す情報の値が同一の比例関係を有することを特徴とする動画像復号装置である。
【0261】
また、符号化データを復号して復号画像を生成する画像復号装置と、前記復号画像を、逆変換情報を用いて、指定された解像度に変換を行うニューラルネットワークを用いた解像度逆変換装置を有し、前記解像度逆変換装置におけるニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および復号画像の画素値のビット長を用いて、画像の画素値とテンソルの入出力の値を互いに変換することを特徴とする動画像復号装置である。
【0262】
また、画像を符号化して符号化データを生成する画像符号化装置と、前記符号化データを復号した復号画像の解像度を逆変換するための逆変換情報を生成する逆変換情報生成装置と、前記逆変換情報を補助拡張情報として符号化する逆変換情報符号化装置を有し、前記逆変換情報は、解像度を指定する情報と逆変換処理の単位を示す情報の値が同一の比例関係を有する逆変換情報を生成することを特徴とする動画像符号化装置である。
【0263】
また、画像を符号化して符号化データを生成する画像符号化装置と、前記符号化データを復号した復号画像の解像度を逆変換するための逆変換情報を生成する逆変換情報生成装置と、前記逆変換情報を補助拡張情報として符号化する逆変換情報符号化装置を有し、前記解像度逆変換装置におけるニューラルネットワークの入力テンソルと出力テンソルの値のデータ型および符号化画像の画素値のビット長を用いて、画像の画素値とテンソルの入出力の値を互いに変換する逆変換情報を生成することを特徴とする動画像符号化装置である。
【0264】
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0265】
本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、および、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
【符号の説明】
【0266】
1 動画像伝送システム
30 動画像復号装置
31 画像復号装置
301 エントロピー復号部
302 パラメータ復号部
303 インター予測パラメータ導出部
304 イントラ予測パラメータ導出部
305、107 ループフィルタ
306、109 参照ピクチャメモリ
307、108 予測パラメータメモリ
308、101 予測画像生成部
309 インター予測画像生成部
310 イントラ予測画像生成部
311、105 逆量子化・逆変換部
312、106 加算部
320 予測パラメータ導出部
10 動画像符号化装置
11 画像符号化装置
102 減算部
103 変換・量子化部
104 エントロピー符号化部
110 符号化パラメータ決定部
111 パラメータ符号化部
112 インター予測パラメータ符号化部
113 イントラ予測パラメータ符号化部
120 予測パラメータ導出部
71 逆変換情報作成装置
81 逆変換情報符号化装置
91 逆変換情報復号装置
611 NNフィルタ部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20