<第1の実施形態>
以下、図面を参照しながら本発明の実施形態について説明する。
図17は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
画像伝送システム1は、符号化対象画像を符号化した符号を伝送し、伝送された符号を復号し画像を表示するシステムである。画像伝送システム1は、画像符号化装置(動画像符号化装置)11、ネットワーク21、画像復号装置(動画像復号装置)31及び画像表示装置41を含んで構成される。
画像符号化装置11には、単一レイヤもしくは複数レイヤの画像を示す画像Tが入力される。レイヤとは、ある時間を構成するピクチャが1つ以上ある場合に、複数のピクチャを区別するために用いられる概念である。たとえば、同一ピクチャを、画質や解像度の異なる複数のレイヤで符号化するとスケーラブル符号化になり、異なる視点のピクチャを複数のレイヤで符号化するとビュースケーラブル符号化となる。複数のレイヤのピクチャ間で予測(インターレイヤ予測、インタービュー予測)を行う場合には、符号化効率が大きく向上する。また予測を行わない場合(サイマルキャスト)の場合にも、符号化データをまとめることができる。
ネットワーク21は、画像符号化装置11が生成した符号化ストリームTeを画像復号装置31に伝送する。ネットワーク21は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blue-ray Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した1または複数の復号画像Tdを生成する。
画像表示装置41は、画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<演算子>
本明細書で用いる演算子を以下に記載する。
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、|=はOR代入演算子)である。
x ? y : zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。
Clip3(a, b, c) は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
<符号化ストリームTeの構造>
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
図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の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセット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に含まれるスライスの総数)。
なお、以下、スライスS0~SNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスSは、図1の(c)に示すように、スライスヘッダSH、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記符号化ビデオシーケンスに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit)を含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(符号化ツリーユニット)
図1の(e)に示すように、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(CN:Coding Node)と称する。4分木の中間ノードは、符号化ノードであり、符号化ツリーユニット自身も最上位の符号化ノードとして規定される。CTUは、分割フラグ(cu_split_flag)を含み、cu_split_flagが1の場合には、4つの符号化ノードCNに分割される。cu_split_flagが0の場合には、符号化ノードCNは分割されず、1つの符号化ユニット(CU:Coding Unit)をノードとして持つ。符号化ユニットCUは符号化ノードの末端ノードであり、これ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
また、符号化ツリーユニットCTUのサイズが64x64画素の場合には、符号化ユニットのサイズは、64x64画素、32x32画素、16x16画素、および、8x8画素の何れかをとり得る。
(符号化ユニット)
図1の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
予測ツリーでは、符号化ユニットを1または複数に分割した各予測ユニット(PU)の予測情報(参照ピクチャインデックス、動きベクトル等)が規定される。別の表現でいえば、予測ユニットは、符号化ユニットを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ユニットを含む。なお、以下では、予測ユニットをさらに分割した予測単位を「サブブロック」と呼ぶ。サブブロックは、複数の画素によって構成されている。予測ユニットとサブブロックのサイズが等しい場合には、予測ユニット中のサブブロックは1つである。予測ユニットがサブブロックのサイズよりも大きい場合には、予測ユニットは、サブブロックに分割される。たとえば予測ユニットが8x8、サブブロックが4x4の場合には、予測ユニットは水平に2分割、垂直に2分割からなる、4つのサブブロックに分割される。
予測処理は、この予測ユニット(サブブロック)ごとに行ってもよい。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
イントラ予測の場合、分割方法は、2Nx2N(符号化ユニットと同一サイズ)と、NxNとがある。
また、インター予測の場合、分割方法は、符号化データのPU分割モード(part_mode)により符号化され、2Nx2N(符号化ユニットと同一サイズ)、2NxN、2NxnU、2NxnD、Nx2N、nLx2N、nRx2N、および、NxNなどがある。なお、2NxN、Nx2Nは1:1の対称分割を示し、
2NxnU、2NxnDおよびnLx2N、nRx2Nは、1:3、3:1の非対称分割を示す。CUに含まれるPUを順にPU0、PU1、PU2、PU3と表現する。
図2の(a)~(h)に、それぞれのPU分割モードにおけるパーティションの形状(PU分割の境界の位置)を具体的に図示している。図2の(a)は、2Nx2Nのパーティションを示し、(b)、(c)、(d)は、それぞれ、2NxN、2NxnU、および、2NxnDのパーティション(横長パーティション)を示す。(e)、(f)、(g)は、それぞれ、Nx2N、nLx2N、nRx2Nである場合のパーティション(縦長パーティション)を示し、(h)は、NxNのパーティションを示す。なお、横長パーティションと縦長パーティションを総称して長方形パーティション、2Nx2N、NxNを総称して正方形パーティションと呼ぶ。
また、変換ツリーにおいては、符号化ユニットが1または複数の変換ユニットに分割され、各変換ユニットの位置とサイズとが規定される。別の表現でいえば、変換ユニットは、符号化ユニットを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ユニットを含む。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ユニットとして割り付けるものと、上述したCUの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ユニットごとに行われる。
(予測パラメータ)
予測ユニット(PU:Prediction Unit)の予測画像は、PUに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、動きベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、フラグが0以外(たとえば1)をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。
(参照ピクチャリスト)
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリストである。
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードは、予測リスト利用フラグpredFlagLX(またはインター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めずに、既に処理した近傍PUの予測パラメータから導出する用いるモードであり、AMVPモードは、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めるモードである。なお、動きベクトルmvLXは、予測ベクトルmvpLXを識別する予測ベクトルインデックスmvp_LX_idxと差分ベクトルmvdLXとして符号化される。
(動きベクトル)
動きベクトルmvLXは、異なる2つのピクチャ上のブロック間のずれ量を示す。動きベクトルmvLXに関する予測ベクトル、差分ベクトルを、それぞれ予測ベクトルmvpLX、差分ベクトルmvdLXと呼ぶ。
(画像復号装置の構成)
次に、本実施形態に係る画像復号装置31の構成について説明する。図4は、本実施形態に係る画像復号装置31の構成を示す概略図である。画像復号装置31は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、CNN(Convolution
al Neural Network、畳み込みニューラルネットワーク)フィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報および、差分画像を生成するための残差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードpredMode、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXである。どの符号を復号するかの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部301は、量子化係数を逆量子化・逆変換部311に出力する。この量子化係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)、DST(Discrete Sine Transform、離散サイン変換)、KLT(Karyhnen Loeve Transform、カルーネンレーベ変換)等の周波数変換を行い量子化して得られる係数である。
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してインター予測パラメータを復号する。
インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。インター予測パラメータ復号部303の詳細については後述する。
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータを復号する。イントラ予測パラメータとは、CUを1つのピクチャ内で予測する処理で用いるパラメータ、例えば、イントラ予測モードIntraPredModeである。イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2~34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)の何れかを用いるものである。イントラ予測パラメータ復号部304は、IntraPredModeCは輝度モードと同じモードであるか否かを示すフラグを復号し、フラグが輝度モードと同じモードであることを示せば、IntraPredModeCにIntraPredModeYを割り当て、フラグが輝度モードと異なるモードであることを示せば、IntraPredModeCとして、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)を復号しても良い。
CNNフィルタ305は、エントロピー復号部301から量子化パラメータ、および予測
パラメータを取得し、加算部312が生成したCUの復号画像を入力画像(フィルタ前画像
)とし、フィルタ前画像に処理を施し、出力画像(フィルタ後画像)を出力する。CNNフ
ィルタ305は、画像符号化装置11が備えるCNNフィルタ107と同様の機能を有する。
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、復号対象のピクチャ及びCU毎に予め定めた位置に記憶する。
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及び予測ユニット(もしくはサブブロック、固定サイズブロック、ピクセル)毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXがある。
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてPUもしくはサブブロックの予測画像を生成する。
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてインター予測によりPUもしくはサブブロックの予測画像を生成する。
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(L0リスト、もしくはL1リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象PUを基準として動きベクトルmvLXが示す位置にある参照ピクチャブロックを参照ピクチャメモリ306から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックをもとに予測を行ってPUの予測画像を生成する。インター予測画像生成部309は、生成したPUの予測画像を加算部312に出力する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロックと呼ぶ)であり、PUもしくはサブブロックの予測画像を生成するために参照する領域である。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたPUのうち、復号対象PUから予め定めた範囲にある隣接PUを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、復号対象PUがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接PUのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した隣接PUに基づいてイントラ予測モードIntraPredModeが示す予測モードで予測を行ってPUの予測画像を生成する。イントラ予測画像生成部310は、生成したPUの予測画像を加算部312に出力する。
イントラ予測パラメータ復号部304において、輝度と色差で異なるイントラ予測モードを導出する場合、イントラ予測画像生成部310は、輝度予測モードIntraPredModeYに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2~34)の何れかによって輝度のPUの予測画像を生成し、色差予測モードIntraPredModeCに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)の何れかによって色差のPUの予測画像を生成する。
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化係数を逆量子化して変換係数を求める。逆量子化・逆変換部311は、求めた変換係数について逆DCT、逆DST、逆KLT等の逆周波数変換を行い、残差信号を算出する。逆量子化・逆変換部311は、算出した残差信号を加算部312に出力する。
なお、逆量子化・逆変換部311は、符号化ストリームTeを参照して復号される量子化パラメータ(qP)から、QP = 2 ^ (qP / 6)によって得られる量子化ステップを算出し、算出した量子化ステップ(QP)を用いて、エントロピー復号部301から入力された量子化係数を逆量子化する。
加算部312は、インター予測画像生成部309またはイントラ予測画像生成部310から入力されたPUの予測画像と逆量子化・逆変換部311から入力された残差信号を画素毎に加算して、PUの復号画像を生成する。加算部312は、生成したPUの復号画像を参照ピクチャメモリ306に記憶し、生成したPUの復号画像をピクチャ毎に統合した復号画像Tdを外部に出力する。
(画像符号化装置の構成)
次に、本実施形態に係る画像符号化装置11の構成について説明する。図3は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算部106、CNN(Convolutional Neural Network、畳み込みニューラルネットワーク)フィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は画像Tの各ピクチャについて、そのピクチャを分割した領域である符号化ユニットCU毎に予測ユニットPUの予測画像Pを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から復号済のブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えばインター予測の場合、動きベクトルである。予測画像生成部101は、対象PUを起点として動きベクトルが示す参照画像上の位置にあるブロックを読み出す。またイントラ予測の場合、予測パラメータとは例えばイントラ予測モードである。イントラ予測モードで使用する隣接PUの画素値を参照ピクチャメモリ109から読み出し、PUの予測画像Pを生成する。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作であるためここでの説明を省略する。
予測画像生成部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に記憶する。
(画像フィルタ装置の構成)
CNNフィルタ305は、本実施形態に係る画像フィルタ装置の一例である。図5に画像フィルタ装置の構成を示す。画像フィルタ装置は、qP画像生成部400と、ニューラルネットワーク部404と、変換部402とを備える。
ここで、CNNフィルタ305(ニューラルネットワーク部404)は、コンボリューション層(ニューロンは空間的位置を有し、空間的な位置に近い入力のみと接続する構成であって、ニューロンの積和演算における重み係数/カーネル及びバイアス/オフセットがピクチャ内の位置に依存しない層)を少なくとも有するニューラルネットワークの総称である。CNNフィルタ305は、コンボリューション層の他、フルコネクション層(FCN)と呼ばれる、ニューロンは空間的位置を有さず全ての入力と接続する構成や、LCN(Locally Connected Networks)層とよばれる、ニューロンは空間的位置を有し、空間的な位置に近い入力のみと接続する構成であるがCNNと異なり重み係数やバイアスを共有しない構成を含むことができる。CNNフィルタ305において、コンボリューション層への入力サイズと、コンボリューション層からの出力サイズとは異なってもよい。すなわち、CNNフィルタ305は、コンボリューションフィルタを適用する位置を移動させる場合の移動量(ステップサイズ)を1より大きくすることで、出力サイズが入力サイズよりも小さくなるコンボリューション層を含むことができる。また、出力サイズが入力サイズよりも大きくなるデコンボリューション層(Deconvolution)も含むことができる。デコンボリューション層は、トランスポーズコンボリューション(Transposed Convolution)層とよばれる場合もある。また、CNNフィルタ305は、プーリング層(Pooling)、ドロップアウト(DropOut)層等を含むことができる。プーリング層は、大きな画像を小さなウィンドウに区切り、区切ったそれぞれのウィンドウに応じて最大値や平均値等の代表値を得る層であり、ドロップアウト層は、確率に応じて出力を固定値(例えば0)にすることでランダム性を追加する層である。
図18は、CNNフィルタ305の入出力の他の例を示す概念図である。図18の(a)では、フィルタ前画像は、輝度(Y)及び量子化パラメータ(qP)のチャネルと、第1の色差(Cb)及び量子化パラメータ(qP)のチャネルと、第2の色差(Cr)及び量子化パラメータ(qP)のチャネルとに分かれて、CNNフィルタ305に入力される。CNNフィルタ305は、輝度(Y)及び量子化パラメータ(qP)のチャネルに処理を施し(Y')を出力するCNNフィルタ305-1と、第1の色差(Cb)及び量子化パラメータ(qP)のチャネルに処理を施し(Cb')を出力するCNNフィルタ305-2と、第2の色差(Cr)及び量子化パラメータ(qP)のチャネルに処理を施し(Cr')を出力するCNNフィルタ305-3とを含んで構成される。
また、図18の(b)では、フィルタ前画像は、輝度(Y)及び量子化パラメータ(qP)のチャネルと、第1の色差(Cb)、第2の色差(Cr)、及び量子化パラメータ(qP)のチャネルとに分かれて、CNNフィルタ305に入力される。CNNフィルタ305は、輝度(Y)及び量子化パラメータ(qP)のチャネルに処理を施し(Y')を出力するCNNフィルタ305-4と、第1の色差(Cb)、第2の色差(Cr)、及び量子化パラメータ(qP)のチャネルに処理を施し(Cb', Cr')を出力するCNNフィルタ305-5とを含んで構成される。
図示しないが、輝度(Y)、第1の色差(Cb)、第2の色差(Cr)、及び量子化パラメータ(qP)のチャネルをCNNフィルタ305に入力し、(Y', Cb', Cr')を出力するCNNフィルタ305でもよい。また、4つの輝度(Y0, Y1, Y2, Y3)、第1の色差(Cb)、第2の色差(Cr)、及び量子化パラメータ(qP)のチャネルをCNNフィルタ305に入力し、(Y0', Y1', Y2', Y3', Cb', Cr')を出力するCNNフィルタ305でもよい。また、当然RGB画像(R, G, B)でもよい。
ここで、参照パラメータ(符号化パラメータ)は量子化パラメータ(qP)に限定されず、1つ以上の符号化パラメータを利用することができる。また、CNNフィルタ305は、各々異なる手段(回路やソフトウェア)を用いて構成されたCNNフィルタ305-1、CNNフィルタ305-2、CNNフィルタ305-3、305-4、305-5を含む構成に限定されない。例えば、CNNフィルタ305が、複数の異なる手段(回路やソフトウェア)のうち1つの手段によって構成された上で、異なるモードで動作する構成であってもよい。
ここで、CNNフィルタ305-1~305-3のそれぞれは、例えば図5を用いて説明したように、qP画像生成部、変換部、及び、ニューラルネットワーク部を備えている。
ここで、CNNフィルタ305-4~305-5のそれぞれは、例えば図5を用いて説明したように、qP画像生成部、変換部、及び、ニューラルネットワーク部を備えている。
また、参照パラメータ(符号化パラメータ)は量子化パラメータ(qP)に限定されず、1つ以上の符号化パラメータを利用することができる。
なお、以降の形態においても、上記説明したようなチャネル構成で処理しても良い。また、参照パラメータ(符号化パラメータ)は量子化パラメータ(qP)に限定されず、CNNフィルタd1は1つ以上の符号化パラメータを利用することができる。
図5に示すように、qP画像生成部400は、ブロック毎に特定される量子化パラメータ(qP)を参照し、当該ブロックに含まれる各画素に、当該ブロックにおけるqPの値を画素値として付与することにより、qP画像(第2種の入力画像データ)を生成し、生成したqP画像を変換部402に供給する。量子化パラメータ(qP)の説明及び具体的なqP画像の例については後述する。
変換部402は、qP画像生成部400から取得したqP画像に含まれる各々の量子化パラメータ(qP)を非線形変換することによって変換後のqPNL画像を生成する。当該非線形変換後のqPNL画像は、各画素値が非線形変換後の量子化パラメータ(qP)であるような画像である。
変換部402によって生成された非線形変換後のqPNL画像(変換後の第2種の入力画像データ)は、ニューラルネットワーク部404に入力される。
ニューラルネットワーク部404には、復号画像(第1種の入力画像データ)と、変換部402が非線形変換した画像とが入力され、出力画像(フィルタ後画像)を出力する。 なお、上記復号画像は、1チャネルの画像(例、輝度成分の画像{Y}、各色差成分の画像{Cb}, {Cr})でもよいし、複数チャネルの画像(例、輝度と色差成分の画像{Y, Cb}, {Y, Cr}、2つの色差成分の画像{Cb, Cr}、輝度と2つの色差の画像{Y, Cb, Cr})でもよい。
なお、上記復号画像は、加算部の出力でもよいし、さらに加算後に、1つ以上のフィルタ(バイラテラルフィルタや、デブロッキングフィルタ、SAO、ALF、NLMFなど)を適用後の復号画像でもよい。
図5(a)では、qP画像生成部400により、qPの2次元データを生成し、変換部402により生成された2次元データの変換を行う構成としているが、図5(b)に示すようにスカラー単位でqPを変換した後に、変換後のqPNLの2次元データに変換する構成でもよい。この構成ではqP導出部401は、ブロック毎に特定される量子化パラメータ(qP)を参照して、変換部402に入力する。変換部402はスカラーのqP値をqPNL値に変換する。さらにqP画像生成部403により、ブロック毎に導出される変換後の量子化パラメータ(qPNL)を参照して、2次元データ(qPNL画像)を生成する。
なお、ここでは第2種の入力画像データを2次元データとして記述したが、幅×高さ×チャネル数を有する3次元データであってもよい(このときチャネル数は1であってもよい)。なお、ニューラルネットワーク上の中間データは、ある種の特徴を表現したデータであることから、「特徴マップ」とも呼ばれる。
以下では、変換部402による非線形変換の具体例を説明する。
(非線形変換例1)
本実施形態に係る変換部402は、例えば、加算部より供給される復号画像(第1種の入力画像データ)を生成する際に適用された量子化ステップを画素値とする画像を、非線形変換後のqPNL画像(変換後の第2種の入力画像データ)として生成する。なお、第1種の入力画像データ及び第2種の入力画像データは、幅×高さを有する2次元データでもよいし、幅×高さ×チャネル数を有する3次元データであってもよい。本実施形態では2次元データであるか3次元データであるかによらず単に画像とも表現する。なお、量子化ステップを線形変換値(ある値で乗算、加算した値)を変換後の値として用いてもよい。
上述のように、本実施形態に係る逆量子化・逆変換部311は、符号化ストリームTeを参照して復号される量子化パラメータ(qP)から、QP = 2 ^ (qP / 6)によって得られる量子化ステップを算出する。そして、エントロピー復号部301から入力された量子化係数を、当該量子化ステップ用いて逆量子化し、更に逆周波数変換を行うことによって残差信号を算出する。さらに、算出された残差信号を加算部において予測画像に加算することによって復号画像が生成される。
本例では、残差信号を生成する際に用いられた、量子化パラメータから量子化ステップへの変換と同様の非線形変換を、変換部402における非線形変換に用いる。
このように復号画像を生成する際の量子化・逆量子化に用いられる量子化ステップを非線形変換に用いることで、フィルタ処理の性能を向上させることができる。
より具体的には、変換部402は、以下の変換式を用いて、量子化パラメータ(qP)を非線形の変換量子化パラメータ(qPNL)に変換する。図6に量子化パラメータ(qP)と、変換量子化パラメータ(qPNL)との関係をグラフで表す。小数点演算での変換処理の例としては、
qPNL = 2 ^ (qP / 6) ・・・(式1-1)
を用いることができる。図6(a)は、式1-1の変換式における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
また、整数演算での例としては、
qPNL = levelScale[qP % 6] << (qP / 6) ・・・(式1-2)
を用いることができる。式1-2の変換式は、levelScale[qP % 6]にqP / 6の左ビットシフトを行うことを表す。ここで、%は剰余を表し、qP % 6は、qPを6で割った余りを表す。levelScale[qP % 6]は量子化パラメータqPによって決まる整数であり、テーブルlevelScale[ ]の一例として、k = 0, 1, 2, 3, 4, 5に対して、
levelScale[k] = {40, 45, 51, 57, 64, 72}
を用いることができる。図6(b)は、式1-2における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
なお、量子化パラメータqPの粒度は上記に限定されない。すなわち、上記では、量子化パラメータqPの6の変化により、量子化ステップが2倍となる場合を説明しているが、例えば、量子化パラメータqPのKの変化により、量子化ステップが2倍となるような場合でもよい。この場合は動作の概要は上記と変わりない。qPNLの導出式は以下となる。
qPNL = 2 ^ (qP / K) ・・・(式1-1´)
qPNL = levelScale[qP % K] << (qP / K) ・・・(式1-2´)
また、図10に、式1-2の非線形変換の結果を示す。図10の(a)に示す量子化パラメータ(qP)は、変換ユニットの単位領域(または量子化パラメータ(qP)が同じ単位領域)毎に配置されている。図10(b)は、図10の(a)に示す量子化パラメータ(qP)が非線形変換された後の変換量子化パラメータ(qPNL)を画素毎に示す。
(非線形変換例2)
本例でも、上記例と同様に、変換部402は、画素値として付与された量子化パラメータ(qP)を非線形変換し、非線形変換された変換量子化パラメータ(qPNL)を生成する。
ただし、本例では、変換部402は、加算部から供給される復号画像(第1種の入力画像データ)に対して適用された量子化ステップの逆数を画素値とする画像を、非線形変換後のqPNL画像(第2種の入力画像データ)として生成する。なお、量子化ステップの逆数を線形変換値(ある値で乗算、加算した値)を変換後の値として用いてもよい。
このように、復号画像を生成する際の量子化ステップの逆数を用いることによっても、フィルタ処理の性能を向上させることができる。
より具体的には変換部402は、以下の変換式を用いて、量子化パラメータを非線形の変換量子化パラメータに変換する。図7には量子化パラメータ(qP)と、変換量子化パラメータ(qPNL)との関係をグラフで表す。小数点演算での変換処理の例としては、
qPNL = 1 / (2 ^ (qP / 6)) ・・・(式2-1)
を用いることができる。図7(a)は、式2-1の変換式における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
また、整数演算での例としては、
qPNL = quantScale[qP % 6] >> (qP / 6) ・・・(式2-2)
を用いることができる。式2-2の変換式は、quantScale [qP % 6]にqP / 6の右ビットシフトを行うことを表す。ここで、quantScale[qP % 6]は量子化パラメータqPによって決まる整数であり、テーブルquantScale[ ]の一例として、k = 0, 1, 2, 3, 4, 5に対して、
quantScale[k] = {26214, 23302, 20560, 18396, 16384, 14564}
を用いることができる。図7(b)は、式2-2における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
なお、qPの粒度がKの場合の式は以下のとおりである。
qPNL = 1 / (2 ^ (qP / K)) ・・・(式2-1´)
qPNL = quantScale[qP % K] >> (qP / K) ・・・(式2-2´)
以降の変換例においてもqPの粒度を6以外とすることが可能であるが、粒度Kの場合に6をKと置き換えるだけなので説明は省略する。
(非線形変換例3)
本例に係る変換部402は、qP画像(第2種の入力画像データ)の画素値として含まれる各量子化パラメータに対して、対数変換、指数変換及び逆数変換のうち何れか1つを行いうことによって、非線形変換後のqP画像(第2種の入力画像データ)を生成する。
より好ましくは、対数変換、指数変換及び逆数変換のうち何れか1つを用いて、量子化パラメータが大きくなるほど変化幅が小さくなるような変換量子化パラメータに変換する。
上記のような変換を行うことにより、フィルタ処理の性能を向上させることができる。
(非線形変換例3-1)
一例として、変換部402は、以下の変換式を用いて、量子化パラメータを非線形の変換量子化パラメータに変換する。図8には変換式のグラフを示す。変換式の例としては、
qPNL = log(qP) ・・・(式3-1)
を用いることができる。換言すると、変換量子化パラメータは、量子化パラメータを対数変換したものである。ここで、対数の底としては、例えば2を用いることができるがこれは本例を限定するものではない。
図8(a)は、式3-1の変換式における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
なお、qP = 0のときに、log(qP)が発散することを避けるために、対数の真数にオフセットとしてcを加算して以下のように処理してもよい。
qPNL = k * log(qP + c) ・・・(式3-2)
ここで、kは所定の正規化係数を表している。ただし、kの具体的な値は本実施形態を限定するものではない。
(非線形変換例3-2)
また、変換部402は、以下の変換式を用いて、量子化パラメータを非線形の変換量子化パラメータに変換してもよい。変換式の例としては、
qPNL = (qP / 6) ^ r (ここで0 < r <1、例えばr = 1/2) ・・・(式3-3)
が挙げられる。換言すると、変換量子化パラメータは、量子化パラメータを指数変換したものである。図8(b)は、式3-3における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
なお、対数変換の例と同様に、オフセットcを加算して以下のように処理してもよい。
qPNL = k * ((qP + c) / 6)) ^ 1/2 ・・・(式3-4)
(非線形変換例3-3)
また、変換部402は、以下の変換式を用いて、量子化パラメータを非線形の変換量子化パラメータに変換してもよい。変換式の例としては、
qPNL = 1 / qP ・・・(式3-5)
が挙げられる。換言すれば、変換量子化パラメータは、量子化パラメータを逆数変換したものである。図8(c)は、式3-5における量子化パラメータと、変換量子化パラメータの関係をグラフで表したものである。
なお、上述の例と同様に、オフセットcを加算して以下のように処理してもよい。
qPNL = k / (qP + c) ・・・(式3-6)
なお、上述の例におけるオフセットcの値は、予め定められた値を用いることができるが、これは本実施形態を限定するものではない。例えば、以下に説明するように、オフセットcを、符号化ストリームTeから復号して用いてもよい。
(量子化係数qPのオフセット)
上述の例におけるオフセットcの値は以下のように決定してもよい。すなわち、オフセットcの値を指定するためのシンタックスを、スライスヘッダ内に含めておき、エントロピー復号部301が当該シンタックスを復号することによって、オフセットcを導出する構成としてもよい。
より具体的には、オフセットを指定するためのシンタックスslice_beta_offset_div2を、符号化ストリームTeのスライスヘッダに含めておき、エントロピー復号部301が当該シンタックスを復号したうえで、下記変換式を用いてオフセットcを導出してもよい。
c=slice_beta_offset_div2 << 1 ・・・(式3-7)
なお、slice_beta_offset_div2はデブロッキングフィルタ処理のかかりやすさを調節するためのシンタックス要素でもある。
(クリップ処理)
また、上述の非線形変換例1~3に示した各例は、クリップ処理と組み合わせて用いてもよい。
例えば、式3-7を用いて導出されたオフセットをqPに加算したうえで、所定の範囲にクリップし、当該クリップ後のqPを、式3-1、3-3、3-5等に代入してもよい。一例として0~51までの範囲にクリップする場合、
qP = Clip3(0, 51, qP + (slice_beta_offset_div2 << 1)) ・・・(式3-8)
によって導出したqPを、式3-1、3-3、3-5等に代入してもよい。
(境界強度の利用)
また、オフセットcの値を、境界強度(bS)に応じて決定する構成としてもよい。例えばオフセットcは下記変換式を用いて導出してもよい。
c = 2 * (bS - 1) + (slice_tc_offset_div2 << 1) ・・・(式3-9)
ここで、bSは画素毎に定まるデブロッキングフィルタ処理の強度を調節するためのパラメータであり、当該画素が含まれるブロックと、当該ブロックに隣接する隣接ブロック毎に応じて、例えば以下の(a)~(c)のように決定される。
(a)bS = 2
少なくとも一方のブロックが画面内予測ブロックであるとき。
(b)bS = 1
・少なくとも片方のブロックに非ゼロの直交変換係数が存在し、TU境界であるとき。
・境界を挟む2つのブロックの動きベクトルの差の絶対値が1画素以上であるとき。
・境界を挟む2つのブロックの動き補償の参照画像が異なるか、動きベクトルの数が異なるとき。
(c)bS = 0
上記(a)、(b)以外のとき。
また、式3-9におけるシンタックスslice_tc_offset_div2は、オフセットを指定するためのシンタックスとして、一例として符号化ストリームTeのスライスヘッダに含まれ、エントロピー復号部301によって復号されてもよい。
なお、slice_tc_offset_div2はデブロッキングフィルタ処理モードをストロング・フィルタ及びウィーク・フィルタのうちどちらにするかの判定及びフィルタ強度を調節するためのシンタックス要素でもある。
また、式3-9を用いて導出されたオフセットを量子化パラメータ(qP)に加算したうえで、上述の(クリップ処理)と同様に、所定の範囲にクリップし、当該クリップ後の量子化パラメータ(qP)を、式3-1、3-3、3-5等に代入してもよい。一例として0~51までの範囲にクリップする場合、
qP = Clip3(0, 51, qP + 2 * (bS - 1) + (slice_tc_offset_div2 << 1)) ・・・(式3-10)
によって導出したqPを、式3-1、3-3、3-5等に代入してもよい。
(非線形変換例4)
また、本実施形態に係る変換部402は、例えば、非線形変換後の画像に適用される量子化パラメータに対して多項式を用いた非線形変換を行うことによって、非線形変換後の画像(第2種の入力画像データ)を生成する。
本例では、一例として、非線形変換例3において説明した、対数変換、指数変換及び逆数変換の少なくとも何れかを近似する多項式を用いて非線形変換を行うことができる。
このように、量子化パラメータに対して多項式近似を用いた非線形変換を適用することによっても、フィルタ処理に好適なパラメータに変換することができ、フィルタ処理の性能を向上させることができる。
一例として、変換部402は、以下の変換式を用いて、量子化パラメータ(qP)を非線形の変換量子化パラメータ(qPNL)に変換する。変換式の例としては、
qPNL = a * qP + b * qP ^ 2 + c ・・・(式4-1)
を用いることができる。
多項式の次数は、2次に限定されず、3次以上の多項式近似を行ってもよい。例えば、3次多項式としては、
qPNL = a * qP + b * qP ^ 2 + c * qP ^ 3 + d ・・・(式4-2)
を用いてもよい。
また、式4-1の係数の係数(a、b、c)及び式4-2の係数(a、b、c、d)は所定の値を用いてもよく、該係数に対応するシンタックスを符号化ストリームTeに含めてもよい。
また、ニューラルネットワーク部404に入力する画像の種類及びその数は限定されない。例えば、ニューラルネットワーク部404には、加算部が生成した復号画像及び非線形変換後の画像に加え、1以上の更なる画像を入力してもよい。一例として、図9(a)に示すように、加算部が生成した復号画像(第1種の入力画像データ)及び非線形変換後のqPNL画像(変換後の第2種の入力画像データ)に加え、非線形変換前のqP画像をニューラルネットワーク部404に入力してもよい。また、図9(b)に示すように、ニューラルネットワーク部404に、非線形変換前のqP画像と共に、非線形変換後の複数のqPNL画像を入力してもよい。非線形変換後の複数のqPNL画像は、異なる非線形変換方法によって変換されたものでもよいが、互いに相補的な関係にある画像を入力すると好適である。例えば、第1の非線形変換後のqPNL画像として、式1-1を用いた非線形変換後のqPNL画像を入力し、第2の非線形変換後のqPNL画像として、式2-1を用いた非線形変換後のqPNL画像を入力する構成が挙げられる。
(量子化パラメータ(qP))
上述した量子化パラメータ(qP)は、画像の圧縮率と画質とを制御するパラメータである。本実施形態において量子化パラメータ(qP)は、値が大きいほど画質が低くなり符号量が減少する特性、および値が小さいほど画質が高くなり符号量が増加する特性を有する。量子化パラメータ(qP)として、例えば、予測残差に係る変換変換係数の量子化幅を導出するパラメータを用いることができる。
ピクチャ単位の量子化パラメータ(qP)としては、処理対象フレームの代表的な1個の量子化パラメータ(qP)を入力することができる。例えば、量子化パラメータ(qP)は、対象ピクチャに適用されるパラメータセットにより指定することができる。また、量子化パラメータ(qP)は、ピクチャの構成要素に適用される量子化パラメータ(qP)に基づいて算出することができる。具体的には、スライスに適用される量子化パラメータ(qP)の先頭の値や平均値に基づいて、量子化パラメータ(qP)を算出することができる。
また、ピクチャを分割した単位の量子化パラメータ(qP)としては、所定の基準でピクチャを分割した単位毎の量子化パラメータ(qP)を入力することができる。例えば、量子化パラメータ(qP)を、スライス毎に適用することができる。また、量子化パラメータ(qP)を、スライス内のブロックに適用することができる。また、量子化パラメータ(qP)を、既存の符号化単位から独立した領域単位(例えば、ピクチャを16x9個に分割して得られる各領域)で指定することができる。この場合、量子化パラメータ(qP)が、スライス数や変換ユニット数に依存する。それにより、領域に対応する量子化パラメータ(qP)の値が不定になり、CNNフィルタが構成できないため、領域内の量子化パラメータ(qP)の平均値を代表値として用いる方法が考えられる。また、領域内の一つの位置の量子化パラメータ(qP)を代表値として用いる方法もある。また、領域内の複数の位置の量子化パラメータ(qP)の中央値(median)や最頻値(mode)を代表値として用いる方法もある。
また、特定の個数の量子化パラメータ(qP)を入力する場合としては、量子化パラメータ(qP)の個数が一定になるように、量子化パラメータ(qP)のリストを生成してCNNフィルタへ入力してもよい。例えば、スライス毎の量子化パラメータ(qP)のリストを作成し、最大値、最小値、中央値の3個の量子化パラメータ(qP)のリストを作成して入力する方法が考えられる。
また、コンポーネント単位の量子化パラメータ(qP)としては、処理対象のコンポーネントに適用する量子化パラメータ(qP)を入力することができる。この量子化パラメータ(qP)の例として、輝度量子化パラメータ(qP)、色差量子化パラメータ(qP)を挙げることができる。
また、ブロック単位でCNNフィルタを適用する場合、周辺量子化パラメータ(qP)として、対象ブロックの量子化パラメータ(qP)とブロック周辺の量子化パラメータ(qPNeighbour)を入力してもよい。
CNNフィルタ305は、量子化パラメータ(qP)以外の、ピクチャ、および符号化パラメータに応じて設計することができる。すなわち、CNNフィルタ305を、方向性、アクティビティ等の画像データから導出可能なピクチャ特性だけでなく、符号化パラメータに応じて設計することができるので、CNNフィルタ305は、符号化パラメータ毎に異なる強度のフィルタを実現することができる。したがって、本実施形態はCNNフィルタ305を備えるので、符号化パラメータ毎に異なるネットワークを導入することなく、符号化パラメータに応じた処理をすることができる。
<第2の実施形態>
本実施形態に係る画像フィルタ装置は、第1の実施形態と同じく、図5(a)に示すように、qP画像生成部400と、ニューラルネットワーク部404と、変換部402とを備える。
qP画像生成部400の働きは、第1の実施形態に記載のqP画像生成部400と同じであるため、詳細な説明は省略する。
本実施形態に係る変換部402は、例えば、qP画像(第2種の入力画像データ)の画素値である量子化パラメータを標準化(正規化)する変換を行うことによって、変換後のqPNL画像(変換後の第2種の入力画像データ)を生成する。
変換後402は、qP画像生成部400から取得したqP画像に含まれる各々の量子化パラメータ(qP)を-1から1、またはそれに含まれる範囲に正規化する変換を行うことによって、変換後のqPNL画像を生成する。標準化された量子化パラメータの値を標準量子化パラメータ(qPNL0)と呼ぶ。
変換部402は、一例として、qP画像生成部400から取得した量子化パラメータ(qP)から、非線形変換後の量子化パラメータqPNLを導出し、さらに、非線形変換後の量子化パラメータqPNLから標準量子化パラメータ(qPNL0)を導出することにより、当該標準量子化パラメータ(qPNL0)を各画素値とする変換・標準化後のqPNL画像を生成する。非線形変換は<第1の実施形態>に記載の非線形変換例を用いればよい。
以下では、変換部402によって、量子化パラメータ(qP)に非線形変換を施し非線形変換後の量子化パラメータ(qPNL)から標準量子化パラメータ(qPNL0)を導出する具体例を説明する。
(固定値を減算)
量子化パラメータ(qP)から特定のQP値(modQP)を減算することにより、標準量子化パラメータ(qPNL0)を導出する。
具体的な式の例としては、
qPNL0 = (qP - modQP) / v ・・・(式5-1)
を用いることができる。
modQPは発生頻度が高い量子化パラメータの値である。ここで、量子化パラメータの各値うち、発生頻度が高い量子化パラメータの値が32である場合、modQP = 32として標準量子化パラメータ(qPNL0)を求めることができる。
また、式5-1中のvは、下の式より求められる。
v = max((maxQP - modQP),(modQP - minQP)) ・・・(式5-2)
maxQPは、量子化パラメータの取り得る最大値(例えば51)であり、minQPは、量子化パラメータの取り得る最小値(例えば0)である。
また、変換部402は、量子化パラメータ(qP)及び発生頻度が高い量子化パラメータ(modQP)をそれぞれ非線形変換した後に、非線形変換後の量子化パラメータNLfunc(qP)から非線形変換後の発生頻度が高い量子化パラメータNLfunc(modQP)を減算することにより、標準量子化パラメータ(qPNL0)を導出してもよい。
具体的な式の例としては、
qPNL0 = (NLfunc(qP) - NLfunc (modQP)) / v ・・・(式5-3)
を用いることができる。上記の説明において、NLfuncは、非線形変換を行うための関数であり、具体的には、実施形態1において説明した各種の非線形変換式を用いることができる。
ここで、式5-3中のvは、一例として、下の式より求められる。
v = max{(NLfunc(maxQP) - NLfunc(modQP)),(NLfunc(modQP) - NLfunc(minQP))} ・・・(式5-4)
(クリップ処理)
また、本実施形態に係る変換部402は、量子化パラメータ(qP)を、所定の範囲でクリップ処理を行うことで、標準量子化パラメータ(qPNL0)を導出してもよい。導出された標準量子化パラメータ(qPNL0)をニューラルネットワーク部404に入力してもよい。
ここで、所定の範囲としては、パラメータ値の範囲を特定する構成とし、特定した範囲を上記所定の範囲として用いてもよいし、予め定められた範囲を上記所定の範囲として用いてもよい。
具体的な式の例としては、
qPNL0 = Clip3 (minDNQP, maxDNQP, qP) ・・・(式6-1)
を用いることができる。
minDNQPは、量子化パラメータ(qP)の上記所定範囲における最小値、maxDNQPは、量子化パラメータ(qP)の上記所定の範囲における最大値を示し、minDNQP < maxDNQPである。一例として、minDNQP = 12、maxDNQP = 51を用いることができる。
また、変換部402は、量子化パラメータ(qP)を非線形変換した後、非線形変換した変換量子化パラメータ(qPNL)を所定の範囲でクリップ処理を行うことで、標準量子化パラメータ(qPNL0)を導出し、ニューラルネットワーク部404に入力してもよい。
具体的な式の例としては、
qPNL0 = Clip3 (minDNQPNL, maxDNQPNL, qPNL) ・・・(式6-2)
を用いることができる。minDNQPNLは、変換量子化パラメータ(qPNL)の上記所定の範囲における最小値、maxDNQPNLは、変換量子化パラメータ(qPNL)の上記所定の範囲における最大値を示し、minDNQPNL < maxDNQPNLである。
<第3の実施形態>
本実施形態に係る画像フィルタ装置は、第1の実施形態と同じく、図5(a)に示すように、qP画像生成部400と、ニューラルネットワーク部404と、変換部402とを備える。
qP画像生成部400の働きは、第1の実施形態に記載のqP画像生成部400と同じであるため、詳細な説明は省略する。
本実施形態に係る変換部402は、例えば、予測画像又は差分画像を生成するための符号化パラメータを参照して(図示せず)、qP画像(第2種の入力画像データ)を修正した後に変換することにより、変換後のqPNL画像(変換後の第2種の入力画像データ)を生成する。
変換部402は、qP画像生成部400から取得したqP画像に含まれる各々の量子化パラメータ(qP)を変換することによって、変換後のqPNL画像を生成する。ここで、符号化パラメータを参照して量子化パラメータ(qP)を補正した値を修正量子化パラメータ(qP1)と呼ぶ。第3の実施形態の変換部402は、qP画像生成部400から取得した量子化パラメータ(qP)から、符号化パラメータを参照して修正量子化パラメータ(qP1)を導出し、修正量子化パラメータ(qP1)に対し非線形変換することによって、変換後のqPNL画像を生成する。非線形変換は上述の説明と同じである。
以下では、変換部402によって、符号化パラメータを参照して量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出する具体例を説明する。
((ブロックの全画素に対する修正))
以下のA1~A6では、対象ブロックに含まれる全ての画素の量子化パラメータを修正する例について説明する。
ただし、下記の例は、対象ブロックの全画素に対して適用するのではなく、後述する境界近傍画素に対してのみ適用する構成としてもよい。
(A1:インター及びイントラに基づく修正)
一例として、変換部402は、予測パラメータ復号部から供給される符号化パラメータを参照することによって、対象ブロックが、イントラ予測が適用されたブロックであるか、それ以外であるかを判定する。変換部402は、対象ブロックが、イントラ予測が適用されたブロックであると判定された場合、当該ブロック全ての画素に関する量子化パラメータ(qP)を増加させ、修正量子化パラメータ(qP1)を導出する。イントラ予測が適用された予測ブロックをイントラ予測ブロックとも呼称する。イントラ予測ブロック以外は、インター予測が適用された予測ブロックである。
このように、イントラ予測ブロックにおいて量子化パラメータ(qP)を大きくすることで、フィルタ処理の性能を向上させることができる。
一例として、変換部402は、以下の式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出する。式の例としては、
qP1 = qP + (intraPred ? offset:0) ・・・(式7-1)
を用いることができる。式7-1中のintraPredは、対象ブロックがイントラ予測ブロックであるかを問う真偽値式であり、真である場合、すなわち対象ブロックがイントラ予測ブロックである場合には量子化パラメータ(qP)にoffset(オフセット)を加算する。また、偽である場合、すなわち対象ブロックがイントラ予測ブロック以外である場合には何も加算しない。オフセットは所定の値を用いてもよいし、符号化ストリームTeでSPSあるいはPPSの中に含めて通知してもよい。
(A2:輝度及び色差に基づく修正)
また、本実施形態に係る変換部402は、対象ブロックが、輝度ブロックであるか、色差ブロックであるかを判定する。変換部402は、判定の後、対象ブロックが、色差ブロックである場合に、当該ブロックの量子化パラメータ(qP)を増加させ、修正量子化パラメータ(qP1)を導出する。
このように、色差ブロックにおいて量子化パラメータ(qP)を大きくすることで、フィルタ処理の性能を向上させることができる。
一例として、変換部402は、以下の式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出する。式の例としては、
qP1 = qP + (cIdx != 0) ? offset : 0 ・・・(式8-1)
・輝度ブロックの場合 cIdx = 0 ・・・(式8-2)
・色差ブロックの場合 cIdx = 1,2 ・・・(式8-3)
を用いることができる。式8-1では、cIdxが0でない場合に真と判定し、qPにoffset(オフセット)を加算し、cIdxが0である場合に偽と判定し、qPに何も加算しない。オフセットは所定の値を用いてもよいし、符号化ストリームTeでSPSあるいはPPSの中に含めて通知してもよい。なお、式8-1中のcIdxは、式8-2に示すように、輝度ブロックは0、式8-3に示すように、色差ブロックは1又は2である。
(A3:動きベクトル判定に基づく修正)
(動きベクトル判定1-1)
本実施形態に係る変換部402は、対象ブロックと隣接ブロックの動きベクトルの差が一定より大きいと判定した場合に、対象ブロックに含まれる全ての画素に関する量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
すなわち、ブロックPの動きベクトル(mvp[0],mvp[1])と、ブロックPに隣接するブロックQの動きベクトル(mvq[0],mvq[1])の差が所定の値より大きい場合に、対象ブロックの全ての画素に関する量子化パラメータ(qP)にmod1を加算してもよい。
具体的な判定式の例としては、
abs(mvp[0] - mvq[0]) + abs(mvp[1] - mvq[1]) > diff ・・・(式8a-1)
が挙げられる。diffは所定の値を用いればよい。式8a-1の判定式において、abs(mvp[0] - mvq[0]) + abs(mvp[1] - mvq[1])がdiffより大きい場合に、例えば、以下の式、
qP1 = qP + mod1 ・・・(式8a-2)
のようにmod1を加算し、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。mod1は所定の値である。
(動きベクトル判定1-2)
また、本実施形態に係る変換部402は、対象ブロックと隣接ブロックの動きベクトルの水平成分及び垂直成分の差のうち、いずれかが所定の値より大きい場合に、対象ブロックに含まれる全ての画素に関する量子化パラメータ(qP)に所定のmod1を加算してもよい。
具体的な判定式の例としては、
(abs(mvp[0] - mvq[0]) > diff) || (abs(mvp[1] - mvq[1]) > diff) ・・・(式8b-1)
が挙げられる。ここでabs(a)はaの絶対値を導出する関数である。
式8b-1において、abs(mvp[0] - mvq[0])、abs(mvp[1] - mvq[1])のうち、いずれかがdiffより大きい場合に、例えば、式8a-2の変換式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
(A4:参照ピクチャインデックスに基づく修正)
変換部402は、符号化パラメータに含まれる参照ピクチャインデックスを参照し、対象ブロックPに関連付けられた参照ピクチャインデックスと、当該対象ブロックPに隣接する隣接ブロックQに関連付けられた参照ピクチャインデックスとの値が異なる場合に、対象ブロックに含まれる各画素の量子化パラメータ(qP)に対して,例えば、式8a-2の変換式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
(A5:変換係数に基づく修正)
また、本実施形態に係る変換部402は、予測パラメータ復号部から供給される符号化パラメータを参照し、対象ブロックに非ゼロ変換係数がある場合に、量子化パラメータ(qP)にオフセットを加算してもよい。オフセットが加算された量子化パラメータ(qP)を修正量子化パラメータ(qP1)として利用する。
このように、対象ブロックに変換係数がある場合に、量子化パラメータ(qP)を大きくすることで、フィルタ処理の性能を向上させることができる。
一例として、変換部402は、以下の式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出する。式の例としては、
qP1 = qP + (cbp != 0) ? offset : 0 ・・・(式9-1)
・対象ブロックに変換係数が含まれる場合 cbp = 1 ・・・(式9-2)
・対象ブロックに変換係数が含まれない場合 cbp = 0 ・・・(式9-3)
を用いることができる。ここで、cbpは、coding block pattern(cbf_luma、cbf_cb、cbf_cr)のことを指す。式9-1は、cbpが0でない場合に真と判定され、qPにoffset(オフセット)が加算され、cbpが0である場合に偽と判定され、qPに何も加算されない。オフセットは所定の値を用いてもよいし、符号化ストリームTeでSPSあるいはPPSの中に含めて通知してもよい。なお、式9-1中のcbpは、式9-2に示すように、対象ブロックに変換係数が含まれる場合は1、式9-3に示すように、対象ブロックに変換係数が含まれない場合は0である。
(ブロックサイズに基づく修正)
また、本実施形態に係る変換部402は、対象ブロックのブロックサイズに応じて量子化パラメータ(qP)の大きさを調節して、修正量子化パラメータ(qP1)を導出してもよい。
例えば、対象ブロックのブロックサイズが所定の閾値のサイズよりも大きい場合に量子化パラメータ(qP)に所定の値を加算して、修正量子化パラメータ(qP1)を導出してもよい。
(導出例1)
一例として、変換部402は、以下の式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出する。式の例としては、
qP1 = (blkW + blkH > TH) ? qP + mod : qP ・・・(式10-1)
を用いることができる。ここで、式10-1中のblkWは、対象ブロックの幅、blkHは、対象ブロックの高さ、THは所定の閾値のサイズである。対象ブロックの幅と高さとの和が、所定の閾値よりも大きい場合に、真と判定され、量子化パラメータ(qP)に所定のmodが加算され、修正量子化パラメータ(qP1)が導出される。対象ブロックの幅と高さとの和が所定の値よりも小さい場合に、偽と判定され、量子化パラメータ(qP)には何も加算されない。
また、ブロックサイズに応じて、量子化パラメータ(qP)に加算する値を調節し、修正量子化パラメータ(qP1)を導出してもよい。例えば、ブロックサイズの所定の閾値を2つ設定し、それぞれの閾値に合わせて量子化パラメータ(qP)に加算する値を設定してもよい。所定の閾値を2つ設けた場合の式の例としては、
if(blkW + blkH > TH1)
qP1 = qP + mod1;
else if(blkW + blkH > TH2)
qP = qP + mod2; ・・・(式10-2)
を用いることができる。ここでTH1及びTH2は、それぞれ所定の閾値(TH1>TH2)である。まず、対象ブロックの幅と高さとの和が、所定の閾値TH1よりも大きい場合は、量子化パラメータ(qP)に所定のmod1が加算され、修正量子化パラメータ(qP1)が導出される。それ以外の場合は、else if以降の式が実行される。対象ブロックの幅と高さとの和が、閾値TH2よりも大きい場合は、量子化パラメータ(qP)に所定のmod2が加算され、修正量子化パラメータ(qP1)が導出される。式10-2では、閾値を2つ設定したが、閾値の数は特に限定されず、3つ以上設定してもよい。mod、mod1、mod2は所定の値を用いてもよいし、符号化ストリームTeでSPSあるいはPPSの中に含めて通知してもよい。
(導出例2)
また、一例として、変換部402は、対象ブロックのブロックサイズに応じた、ルックアップテーブルによって参照される値から調整項を導出して加算してもよい。
式の例としては、
qP1 = qP + qPmodTable [log2(blkW) + log2(blkH)] ・・・(式11-1)
を用いることができる。ここで、blkWは対象ブロックの幅、blkHは対象ブロックの高さである。
(導出例3)
また、一例として、変換部402は、対象ブロックのブロックサイズに対し、積、和、シフト演算で調整項を導出して加算してもよい。
式の例としては、
qP1 = qP + ((a*(log2(blkW) + log2(blkH))) >> b) + c ・・・(式12-1)
を用いることができる。ここで、a、b及びcは所定の値である。
(A6:ブロックデプスに基づく修正)
また、本実施形態に係る変換部402は、符号化パラメータのデプス情報(分割情報)を参照して、対象のブロックのデプスに応じて、量子化パラメータ(qP)の大きさを変化させ、修正量子化パラメータ(qP1)を導出してもよい。
ブロックのデプスとは、ブロック分割(4分木のQT分割、2分木のBT分割)でブロックを分割する場合に、分割する度にインクリメントされる値である。ブロックのデプスは、最上位レベルを0としてブロックが分割される度に大きな値になる。
((ブロックの境界近傍画素に対する修正))
以下のB1~B4では、対象ブロックと当該対象ブロックに隣接する隣接ブロックとの境界の近傍画素の量子化パラメータを修正する例について説明する。
なお、下記の例は、境界近傍画素のみならず対象ブロックの全画素に対して適用する構成としてもよい。
(B1:ブロック境界修正)
本実施形態に係る変換部402は、量子化パラメータ(qP)の修正を要するブロック境界であるか、否かを判定し、ブロック境界の場合に、当該ブロック境界からの距離が所定の画素数以内の画素(境界近傍画素、本明細書において同様)の量子化パラメータ(qP)を大きくし、修正量子化パラメータ(qP1)を導出してもよい。ここで、所定の画素数は1でもよいし、2以上であってもよい。所定の画素数が1の場合が、境界に隣接する画素に対応する。
このように、境界近傍画素の量子化パラメータ(qP)を大きくすることで、フィルタ処理の性能を向上させることができる。
例えば、以下の式を用いて、境界近傍画素の量子化パラメータ(qP)を修正することができる。対象ブロックのブロック境界線が、水平方向の境界線であるときの式の例としては、
if(水平境界) { // 上境界 or 下境界
for (x = 0; x < blkW; x++){
qP1[x][0] = qP[x][0] + mod
qP1[x][blkH - 1] = qP[x][blkH - 1] + mod
}
} ・・・(式13-1)
を用いることができる。blkWはブロックの水平方向の画素数、blkHはブロックの垂直方向の画素数であり、[x][y]はブロックの画素に対応する座標(x,y)である。
また、対象ブロックのブロック境界が、水平境界でなく、垂直方向の境界であるときの式の例としては、
if(垂直境界) { // 左境界 or 右境界
for (y = 0; y < blkH; y++){
qP1[0][y] = qP[0][y] + mod
qP1[blkW - 1][y] = qP[blkW - 1][y] + mod
}
} ・・・(式13-2)
を用いることができる。
図19に、境界近傍画素の具体例を示す。図19(a)は、所定の画素数が1の場合の修正前の対象ブロックの量子化パラメータ、(b)は、修正後の対象ブロックの量子化パラメータを示す。例えば、mod = 2のときは、図19(b)に示すように境界線に隣接する1行1列の量子化パラメータに2を加算する。
同様に、図20(a)は、所定の画素数が2の場合の修正前の対象ブロックの量子化パラメータ、(b)は、修正後の対象ブロックの量子化パラメータを示す。例えば、mod = 2のとき、図20(b)に示すように境界線に隣接する2行2列の量子化パラメータに2を加算する。
また、本実施形態に係る変換部402は、ブロック境界のN画素を修正する場合に、境界線に近い画素ほど、量子化パラメータ(qP)の修正量を大きくしてもよい。
具体的な式の例としては、
if(水平境界) { // 上境界 or 下境界
for (x = 0; x < blkW; x++){
qP1[x][0] = qP[x][0] + mod1
qP1[x][1] = qP[x][1] + mod2
qP1[x][blkH-1] = qP[x][blkH-1] + mod1
qP1[x][blkH-2] = qP[x][blkH-2] + mod2
}
} ・・・(式14-1)
else if(垂直境界) { // 左境界 or 右境界
for (y = 0; y < blkH; y++){
qP1[0][y] = qP[0][y] + mod1
qP1[1][y] = qP[1][y] + mod2
qP1[blkW-1][y] = qP[blkW-1][y] + mod1
qP1[blkW-2][y] = qP[blkW-2][y] + mod2
}
} ・・・(式14-2)
を用いることができる。式14-1及び式14-2において、例えば、mod1 = 2、mod2 = 1としてもよい。図21(a)は、所定の画素数が2の場合の修正前の対象ブロックの量子化パラメータ、(b)は、式14-1及び式14-2の式を用いて、境界近傍画素の量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出した後の対象ブロックの量子化パラメータを示す。
(ブロック境界の判定)
量子化パラメータ(qP)の修正を要するブロック境界であるか否かの判定は、具体的には以下の判定方法のいずれかを用いればよい。隣接する2つのブロックにおいて、
・量子化パラメータ(qP)が異なる場合、
・少なくとも1方にイントラ予測モードが使用されている場合、
・少なくとも1方に非ゼロの変換係数が存在する場合、
・インター予測モードの場合、動きベクトルが異なる場合、
・インター予測モードの場合、参照ピクチャが異なる場合、
である。例えば、図23の(a)は、水平境界における隣接するブロックPおよびQの量子化パラメータp0とq0を表す。図23の(b)は、垂直境界における隣接するブロックPおよびQの量子化パラメータp0とq0を表す。
図22(a)に示すように、1つの対象ブロック内に複数の境界線が存在し、複数のブロックにさらに分割されている場合も、上述した(ブロック境界の判定)を用いて、各ブロック境界を判定することができる。ブロック境界の判定の後、分割された各ブロックにおいて、式13-1及び式13-2を用いて、各境界線に隣接する画素の量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。図22(b)は、修正後の対象ブロックを示し、この場合、式13-1及び式13-2においてmod = 2であり、各境界線に隣接する1行1列(所定の画素数が1の場合)の量子化パラメータに2が加算されている。
(B2:動きベクトル判定に基づく修正)
(動きベクトル判定1-1)
本実施形態に係る変換部402は、隣接するブロックの動きベクトルの差が一定より大きいと判定した場合に、境界近傍画素に関する対象ブロックの量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
すなわち、ブロックPの動きベクトル(mvp[0],mvp[1])と、ブロックPに隣接するブロックQの動きベクトル(mvq[0],mvq[1])の差が所定の値より大きい場合に、境界近傍画素に対して、量子化パラメータ(qP)にmod1を加算してもよい。
具体的な判定式の例としては、
abs(mvp[0] - mvq[0]) + abs(mvp[1] - mvq[1]) > diff ・・・(式15-1)
が挙げられる。diffは所定の値を用いればよい。式15-1の判定式において、abs(mvp[0] - mvq[0]) + abs(mvp[1] - mvq[1])がdiffより大きい場合に、例えば、以下の式、
qP1 = qP + mod1 ・・・(式15-2)
のようにmod1を加算し、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。mod1は所定の値である。
(動きベクトル判定1-2)
また、本実施形態に係る変換部402は、隣接するブロックの動きベクトルの水平成分及び垂直成分の差のうち、いずれかが所定の値より大きい場合に、境界近傍画素に対して、量子化パラメータ(qP)に所定のmod1を加算してもよい。
具体的な判定式の例としては、
(abs(mvp[0] - mvq[0]) > diff) || (abs(mvp[1] - mvq[1]) > diff) ・・・(式16-1)
が挙げられる。ここでabs(a)はaの絶対値を導出する関数である。
式16-1において、abs(mvp[0] - mvq[0])、abs(mvp[1] - mvq[1])のうち、いずれかがdiffより大きい場合に、例えば、式15-2の変換式を用いて、境界近傍画素に関する量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
(B3:予測モード判定に基づく修正)
また、本実施形態に係る変換部402は、符号化パラメータを参照し、ブロックPの予測モードpredModePと、ブロックPに隣接するブロックQの予測モードpredModeQとが等しいか否かを判定し、等しくない場合に、境界近傍画素に関する量子化パラメータ(qP)に所定のmod1を加算してもよい。
具体的な判定式の例としては、
predModeP != predModeQ ・・・(式17-1)
が挙げられる。
式17-1において、予測モードpredModePと、予測モードpredModeQとが等しくない場合に、例えば、式15-2の式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
(B4:分割デプス判定に基づく修正)
また、本実施形態に係る変換部402は、符号化パラメータを参照し、ブロックPの分割デプスdepthPと、ブロックPに隣接するブロックQの分割デプスdepthQとが等しいか否かを判定し、等しくない場合に、境界近傍画素に対して、量子化パラメータ(qP)に所定のmod1を加算してもよい。
具体的な判定式の例としては、
depthP != depthQ ・・・(式18-1)
が挙げられる。
式18-1において、分割デプスdepthPと、分割デプスdepthQとが等しくない場合に、例えば、式15-2の式を用いて、量子化パラメータ(qP)から修正量子化パラメータ(qP1)を導出してもよい。
<第4の実施形態>
本発明の他の実施形態について、図11に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、その説明を省略する。
本実施形態においては、図11に示すように、CNNフィルタ305dは、n+1個のCNNフィルタCNN0、CNN1、…、CNNnを含む、複数の個別ニューラルネットワークである1段目のCNNフィルタ305d1と、セレクタ305d2と、共通ニューラルネットワークである2段目のCNNフィルタ305d3と、qP画像生成部400dと、変換部402dとを含む。
変換部402dでは上述の実施形態1~3のいずれかの変換を用いて、量子化パラメータを変換し、変換後の量子化パラメータ(qPNL)の代表値をセレクタ305d2に供給する。
1段目のCNNフィルタ305d1において、CNNフィルタCNN0には、一例として、輝度(Y)のチャネル、第1の色差(Cb)のチャネル、および第2の色差(Cr)のチャネルを含む3つのチャネルから構成されるフィルタ前画像が入力される。CNNフィルタCNN0は、FP1よりも小さい値を有するフィルタパラメータFPに対して最適化されたフィルタである。また、CNNフィルタCNN1は、FP1以上でFP2よりも小さい値を有するフィルタパラメータFPに対して最適化されたフィルタである。また、CNNフィルタCNNnは、FPn以上の値を有するフィルタパラメータFPに対して最適化されたフィルタである。
1段目のCNNフィルタ305d1に含まれるCNNフィルタCNN0、CNN1、…、CNNnの各々は、フィルタ処理を施した画像をセレクタ305d2に出力する。セレクタ305d2には、フィルタパラメータFPが入力され、入力されたフィルタパラメータFPに応じて、2段目のCNNフィルタ305d3に出力するフィルタ処理が施された画像を選択する。したがって、2段目のCNNフィルタ305d3には、セレクタ305d2によって選択された最適なフィルタ処理が施された画像が入力される。換言すれば、本実施形態における個別ニューラルネットワークは、画像フィルタ装置への入力画像データにおけるフィルタパラメータの値に応じて、入力画像データに対して選択的に作用する。
なお、CNNフィルタを選択するフィルタパラメータFPは、明示的に符号化データにおいて符号化しても良いし、符号化パラメータから導出してもよい。例えば、符号化パラメータの一つである量子化パラメータの代表値(平均値など)からフィルタパラメータFPを導出してもよい。
2段目のCNNフィルタ305d3は、入力画像にフィルタ処理を施し、フィルタ後画像を出力する。換言すれば、本実施形態における共通ニューラルネットワークは、個別ニューラルネットワークの出力画像データに対して、フィルタパラメータの値によらずに共通に作用する。
なお、セレクタ305d2が選択に用いるフィルタパラメータFPは、変換後の量子化パラメータ(qPNL)の代表値に限らない。フィルタパラメータFPは、符号化データにおいて明示的に伝送しても良い。また、フィルタパラメータFPとして、入力画像における量子化パラメータの他に、入力画像におけるイントラ予測及びインター予測の種別を示すパラメータ、入力画像におけるイントラ予測方向を示すパラメータ、入力画像におけるパーティションの分割深度(デプス情報、分割情報)を示すパラメータ、入力画像におけるパーティションのサイズを示すパラメータを挙げることができる。なお、これらのパラメータにおいても、特定位置の値(左上や中央)、平均値、最小値、最大値、中央値、最頻値などの代表値を用いてもよい。
図12は、本実施形態に係る画像フィルタ装置の構成の変形例を示す概略図である。図12に示すように、CNNフィルタ305eは、n+1個のCNNフィルタCNN0、CNN1、…、CNNnを含む、複数の個別ニューラルネットワークであるCNNフィルタ305e2、およびセレクタ305e3は、共通ニューラルネットワークであるCNNフィルタ305e1の後段に配置することもできる。この場合、CNNフィルタ305e1は、CNNフィルタ305eへの入力画像データに作用し、CNNフィルタ305e2は、入力画像データにおけるフィルタパラメータの値に応じて、CNNフィルタ305e1の出力画像データに対して選択的に作用する。また、セレクタ305e3がフィルタ後画像を出力する。なお、CNNフィルタ305eは、qP画像生成部400eと、変換部402eとを備えており、それらは、それぞれ、qP画像生成部400dと、変換部402dと同様の構成である。
なお、本実施形態においても、画像復号装置におけるCNNフィルタは、画像符号化装置におけるCNNフィルタと同様の機能を有する。
第4の実施形態の構成によれば、フィルタパラメータFPの大きさに応じてネットワークを切り替える部分(305e2)と、フィルタパラメータの大きさによらずに同じネットワークを用いる部分(305e1)を用いることで、フィルタ全体を量子化パラメータなどの符号化パラメータで切り替える構成に比べてネットワーク構成を小さくできる。ネットワーク構成が小さいほうが、演算量が小さく高速であることに加え、学習パラメータが頑強で多くの入力画像に対して適当なフィルタ処理ができる効果がある。
<第5の実施形態>
本発明の他の実施形態について、図13に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、その説明を省略する。
本実施形態においては、図13に示すように、CNNフィルタ305fは、n+1個のCNNフィルタCNN0、CNN1、…、CNNnを含む1段目のCNNフィルタ305f1と、セレクタ305f2と、2段目のCNNフィルタ305f3と、qP画像生成部400fと、変換部402fとを含む。
1段目のCNNフィルタ305f1において、CNNフィルタCNN1は、QP1Lよりも大きくQP1Hよりも小さい値を有する変換後の量子化パラメータに対して最適化されたフィルタである。また、CNNフィルタCNN2は、QP2Lよりも大きくQP2Hよりも小さい値を有する変換後の量子化パラメータに対して最適化されたフィルタである。また、CNNフィルタCNN3は、QP3Lよりも大きくQP3Hよりも小さい値を有する変換後の量子化パラメータに対して最適化されたフィルタである。また、CNNフィルタCNN4は、QP4Lよりも大きくQP4Hよりも小さい値を有する変換後の量子化パラメータに対して最適化されたフィルタである。他のCNNフィルタも同様のフィルタである。
閾値QP1L、QP1H、…QP4L、QP4Hの具体例として、QP1L=0、QP1H=18、QP2L=12、QP2H=30、QP3L=24、QP3H=42、QP4L=36、QP4H=51の値を割り当てることができる。
この場合、例えば、変換後の量子化パラメータが10であれば、セレクタ305f2はCNNフィルタCNN1を選択する。また、変換後の量子化パラメータが15であれば、セレクタ305f2はCNNフィルタCNN1とCNNフィルタCNN2を選択する。また、変換後の量子化パラメータが20であれば、セレクタ305f2はCNNフィルタCNN2を選択する。また、変換後の量子化パラメータが25であれば、セレクタ305f2はCNNフィルタCNN2,CNNフィルタCNN3を選択する。また、変換後の量子化パラメータが30であれば、セレクタ305f2はCNNフィルタCNN3を選択する。
2段目のCNNフィルタ305f3は、セレクタ305f2が1種類のCNNフィルタを選択した場合は、入力画像をフィルタ後画像として出力し、セレクタ305f2が2種類のCNNフィルタを選択した場合は、2つの入力画像の平均値をフィルタ後画像として出力する。
なお、本実施形態においても、画像復号装置におけるCNNフィルタは、画像符号化装置におけるCNNフィルタ107fと同様の機能を有する。
第5の実施形態の構成によれば、変換後の量子化パラメータの大きさに応じてネットワークを切り替える部分(305f1)と、変換後の量子化パラメータの大きさによらずに同じネットワークを用いる部分(305f3)を用いることで、フィルタ全体を量子化パラメータなどの符号化パラメータで切り替える構成に比べてネットワーク構成を小さくできる。ネットワーク構成が小さいほうが演算量が小さく高速であることに加え、学習パラメータが頑強で多くの入力画像に対して適当なフィルタ処理ができる効果がある。また、各CNNフィルタの最適化の範囲を重複させたことで、フィルタを切り替えた時にパッチの境界で視覚的なひずみが現れることを回避することができる。
<第6の実施形態>
本発明の他の実施形態について、図14に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、その説明を省略する。
上述したように、画像フィルタ装置は、ブロック歪みを低減する機能とリンギング歪みを低減するフィルタとを利用してもよい。また、ブロック歪みを低減するデブロッキングフィルタ(DF:Deblocking Filter)や、リンギング歪みを低減するサンプルアダプティブオフセット(SAO:Sample Adaptive Offset)などの別のフィルタと処理を併用してもよい。
本実施形態では、デブロッキングフィルタ(DF)の処理と、サンプルアダプティブオフセット(SAO)の処理とCNNフィルタを併用する構成を説明する。
(第1の例)
図14の(a)に本実施形態の第1の例を示す。第1の例では、画像フィルタ装置305gは、CNNフィルタ305g1とサンプルアダプティブオフセット(SAO)305g2とを含む。CNNフィルタ305g1は、ブロック歪みを低減するフィルタとして機能する。
(第2の例)
図14の(b)に本実施形態の第2の例を示す。第2の例では、画像フィルタ装置305hは、デブロッキングフィルタ(DF)305h1とCNNフィルタ305g2とを含む。CNNフィルタ305h2は、デブロッキングフィルタの後段でさらにリンギングノイズを低減するフィルタとして機能する。
(第3の例)
図14の(c)に本実施形態の第3の例を示す。第3の例では、画像フィルタ装置305iは、第1のCNNフィルタ305i1と第2のCNNフィルタ305i2とを含む。第1のCNNフィルタ305i1は、ブロック歪みを低減するフィルタとして機能し、第2のCNNフィルタ305i2は、ブロック歪みを低減するフィルタの後段でさらにリンギングノイズを低減するフィルタとして機能する。
なお、何れの例においても、画像復号装置におけるCNNフィルタは画像符号化装置におけるCNNフィルタと同様の機能を有する。
<第7の実施形態>
なお、上述した実施形態における画像符号化装置11、画像復号装置31の一部、例えば、予測パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、予測パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置11、画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
〔応用例〕
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した画像符号化装置11及び画像復号装置31を、動画像の送信及び受信に利用できることを、図15を参照して説明する。
図15の(a)は、画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。図15の(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を更に備えていてもよい。図15の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図15の(b)は、画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。図15の(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を更に備えていてもよい。図15の(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を、動画像の記録及び再生に利用できることを、図16を参照して説明する。
図16の(a)は、上述した画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。図16の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した画像符号化装置11は、この符号化部PROD_C1として利用される。
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部PROD_C6を更に備えていてもよい。図16の(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の一例である。
図16の(b)は、上述した画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロックである。図16の(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を更に備えていてもよい。図16の(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)を用いてソフトウェア的に実現してもよい。
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行する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:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔まとめ〕
本発明の態様1に係る画像フィルタ装置(CNNフィルタ107,305)は、輝度又は色差を画素値とする1又は複数の第1種の入力画像データが少なくとも入力され、輝度又は色差を画素値とする1又は複数の第1種の出力画像データを出力するニューラルネットワーク部と、量子化パラメータを画素値とする1又は複数の第2種の入力画像データが入力され、当該第2種の入力画像データを非線形変換することにより、変換後の第2種の入力画像データを生成する変換部(402)と、を備え、上記ニューラルネットワーク部(404)には、上記変換後の第2種の入力画像データも入力される。
本発明の態様2に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様1において、上記第1種の入力画像データを生成する際の逆量子化又は量子化において用いられる量子化ステップを画素値とする画像を、上記変換後の第2種の入力画像データとして生成する。
本発明の態様3に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様1において、上記第1種の入力画像データを生成する際の逆量子化又は量子化において用いられる量子化ステップの逆数を画素値とする画像を、上記変換後の第2種の入力画像データとして生成する。
本発明の態様4に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様1において、上記第2種の入力画像データに含まれる各量子化パラメータに対して、対数変換、指数変換及び逆数変換のうち何れか1つを行うことによって、上記変換後の第2種の入力画像データを生成する。
本発明の態様5に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様1において、上記第2種の入力画像データに含まれる各量子化パラメータに対して多項式を用いた非線形変換を行うことによって、上記変換後の第2種の入力画像データを生成する。
本発明の態様6に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様1において、上記第2種の入力画像データの画素値である量子化パラメータを標準化する変換を行うことによって、上記変換後の第2種の入力画像データを生成する。
本発明の態様7に係る画像フィルタ装置(CNNフィルタ107,305)は、輝度又は色差を画素値とする1又は複数の第1種の入力画像データが少なくとも入力され、輝度又は色素を画素値とする1又は複数の第1種の出力画像データを出力するニューラルネットワーク部(404)と、量子化パラメータを画素値とする1又は複数の第2種の入力画像データが入力され、予測画像又は差分画像を生成するための符号化パラメータを参照して、当該第2種の入力画像データを変換することにより、変換後の第2種の入力画像データを生成する変換部(402)と、を備え、上記ニューラルネットワーク部には、上記変換後の第2の入力画像データも入力される。
本発明の態様8に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様7において、上記符号化パラメータを参照することによって、対象ブロックが、イントラ予測が適用されたブロックであるか否かを判定し、当該対象ブロックが、イントラ予測が適用されブロックであると判定された場合に、上記変換部は、当該対象ブロックに含まれる全ての画素の量子化パラメータを変換することで、上記変換後の第2種の入力画像データを生成する。
本発明の態様9に係る画像フィルタ装置(CNNフィルタ107,305)が備える変換部(402)は、上記態様7において、上記符号化パラメータを参照することによってブロック境界を特定し、特定されたブロック境界に隣接する画素の量子化パラメータを変更することにより、上記変換後の第2の入力画像データを生成する。
本発明の態様10に係る画像復号装置(31)は、画像を復号する画像復号装置であって、復号画像に作用させるフィルタとして上記態様1から9の何れか1つに記載の画像フィルタ装置を備える。
本発明の態様11に係る画像符号化装置(11)は、画像を符号化する画像符号化装置であって、局所復号画像に作用させるフィルタとして上記態様1から9の何れか1つに記載の画像フィルタ装置を備える。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。