以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態((逆)変換スキップに応じた(逆)セカンダリ変換のスキップ)
2.第2の実施の形態((逆)セカンダリ変換に応じた変換スキップフラグの符号化・復号のスキップ)
3.第3の実施の形態((逆)変換スキップに応じたセカンダリ変換フラグの符号化・復号のスキップ)
4.第4の実施の形態(非ゼロ係数のサブブロック平均に応じたセカンダリ変換フラグの符号化・復号のスキップ)
5.第5の実施の形態(変換量子化のバイパスに応じたプライマリ変換識別子の符号化・復号のスキップ)
6.第6の実施の形態(ブロックが正方形または長方形からなる矩形である場合の変換スキップフラグの符号化・復号のスキップ)
7.第7の実施の形態(適応プライマリ変換フラグと変換スキップフラグの制御)
8.第8の実施の形態(適応プライマリ変換フラグと変換スキップフラグの制御)
9.第9の実施の形態(その他)
<1.第1の実施の形態>
<変換処理のスキップ>
例えば非特許文献1には、画像符号化において、画像とその予測画像の差分である予測残差に対してプライマリ変換を行った後に、さらに、エナジーコンパクションを高める(低域に変換係数を集中させる)ために、変換ブロック内のサブブロック毎に、セカンダリ変換を適用することが開示されている。また、その非特許文献1には、どのセカンダリ変換を適用するかを示すセカンダリ変換識別子をCU単位でシグナルすることも開示されている。
また、例えば非特許文献2には、エンコーダにおいて、RDO(Rate-Distortion Optimization)に基づいて、非特許文献1に記載のCU単位でどのセカンダリ変換を適用するか決定するのは、計算複雑度が大きく、変換ブロック単位でのセカンダリ変換を適用するか否かを示すセカンダリ変換フラグをシグナルすることが開示されている。また、その非特許文献2には、どのセカンダリ変換を適用するかを示すセカンダリ変換識別子を、プライマリ変換識別子およびイントラ予測モードに基づいて導出することも開示されている。
しかしながら、非特許文献1および非特許文献2のいずれに記載の方法においても、変換ブロック単位で変換スキップフラグが1、すなわち、変換スキップを適用することを示す場合、プライマリ変換にのみ変換スキップが適用されていた。すなわち、プライマリ変換のみ変換スキップが適用された場合にも、セカンダリ変換が適用されうる。そのため、変換スキップのコンセプトを鑑みた場合に、セカンダリ変換をスキップ(省略)することができず、演算量が増大するおそれがあった。また、例えば非ゼロ係数(非ゼロ変換係数とも称する)が少ない疎な残差信号のような、変換スキップを適用した方が良い残差信号に対して、変換スキップフラグによって変換スキップを適用するようにしても、セカンダリ変換が適用されてしまい、エナジーコンパクションが低下し、符号化効率が低減するおそれがあった。
プライマリ変換では、プライマリ変換識別子pt_idxで指定される水平方向のプライマリ変換Phorおよび垂直方向のプライマリ変換Pverが選択され、予測残差Dに対して、例えば以下の式(1)のように行列演算が行われ、プライマリ変換後の変換係数Coeff_P(プライマリ変換係数とも称する)が得られる。
Coeff_P = Phor ・D・PverT
・・・(1)
なお、式(1)において、演算子"・"は、行列同士の内積(行列積)を行う操作を示し、演算子"T"は、転置行列の操作を示す。以上のように求められたプライマリ変換係数(Coeff_P)は、次に、セカンダリ変換が行われる。また、上述のようなプライマリ変換がスキップ(省略)される場合、予測残差Dがセカンダリ変換される。
例えば、予測残差Dが、以下の式(2)に示されるように4×4の行列=[[255,0,0,0],[0,0,0,0], [0,0,0,0],[0,0,0,0]]であり、スキャン識別子scanIdxが水平スキャンhorを示すとする。
予測残差Dは、水平スキャンの係数のスキャン順に沿ってスキャンされ、以下の式(3)に示されるような1×16次元のベクトルX1dに変換される。
この1×16次元のベクトルX1dとセカンダリ変換の行列Rを用いて、以下の式(4)のような行列演算が行われ、以下の式(4)に示されるような信号Y1dが求められる。
Y1d
T = R ・X1d
T
・・・(4)
ここで、演算子"T"は、転置行列の操作を表す。この行列演算により、例えば、以下の式(5)に示されるような信号Y1dが得られる。
この演算結果Y1dのノルムを正規化するために、以下の式(6)のようなNビットのビットシフト演算が行われ、ビットシフト後の信号Z1dが求められる。
Z1d = ( Y1d )>>N
・・・(6)
このビットシフト演算により、例えば、以下の式(7)に示されるような信号Z1dが得られる。
ノルム正規化後の信号Z1dは、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、1×16次元のベクトルZ1dが以下の式(8)に示されるような4×4行列Coeffに変換される。
式(2)のような非ゼロ係数の数が少ない(疎な残差信号)残差信号(予測残差)の場合、プライマリ変換をスキップし、そのあとに、セカンダリ変換を適用した場合、式(8)のように非ゼロ係数が周波数ドメイン全体に広がるおそれがあった。すなわち、セカンダリ変換を適用することにより、エナジーコンパクションが低下し、符号化効率が低減するおそれがあった。
<セカンダリ変換・逆セカンダリ変換のスキップ>
そこで、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換をスキップさせる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換もスキップさせるようにする。
このようにすることにより、プライマリ変換だけでなくセカンダリ変換もスキップすることができるようになるので、演算量の増大を抑制することができる。また、上述した例のように、非ゼロ係数が少なく、変換スキップを適用した方が良い残差信号に対してセカンダリ変換を適用することを抑制することができ、エナジーコンパクションの低減を抑制することができる。すなわち、符号化効率の低減を抑制することができる。
また、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換をスキップさせる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換もスキップさせるようにする。
このようにすることにより、逆プライマリ変換だけでなく逆セカンダリ変換もスキップすることができるようになるので、演算量の増大を抑制することができる。また、上述した例のように、非ゼロ係数が少なく、変換スキップを適用した方が良い残差信号に対して逆セカンダリ変換を適用することを抑制することができ、エナジーコンパクションの低減を抑制することができる。すなわち、符号化効率の低減を抑制することができる。
<ブロック分割>
ところで、MPEG2(Moving Picture Experts Group 2(ISO/IEC 13818-2))やMPEG-4 Part10 (Advanced Video Coding、以下AVCと記す)などの旧来の画像符号化方式では、符号化処理は、マクロブロックと呼ばれる処理単位で実行される。マクロブロックは、16x16画素の均一なサイズを有するブロックである。これに対し、HEVC(High Efficiency Video Coding)では、符号化処理は、CU(Coding Unit)と呼ばれる処理単位(符号化単位)で実行される。CUは、最大符号化単位であるLCU(Largest Coding Unit)を再帰的に分割することにより形成される、可変的なサイズを有するブロックである。選択可能なCUの最大サイズは、64x64画素である。選択可能なCUの最小サイズは、8x8画素である。最小サイズのCUは、SCU(Smallest Coding Unit)と呼ばれる。なお、CUの最大サイズは、64x64画素に限定されず、より大きい128x128画素、256x256画素などのブロックサイズとしてもよい。
このように、可変的なサイズを有するCUが採用される結果、HEVCでは、画像の内容に応じて画質及び符号化効率を適応的に調整することが可能である。予測符号化のための予測処理は、PU(Prediction Unit)と呼ばれる処理単位(予測単位)で実行される。PUは、CUをいくつかの分割パタンのうちの1つで分割することにより形成される。また、PUは、輝度(Y)及び色差(Cb,Cr)毎のPB(Prediction Block)と呼ばれる処理単位(予測ブロック)から構成される。さらに、直交変換処理は、TU(Transform Unit)と呼ばれる処理単位(変換単位)で実行される。TUは、CU又はPUをある深さまで分割することにより形成される。また、TUは、輝度(Y)及び色差(Cb, Cr)毎のTB(Transform Block)と呼ばれる処理単位(変換ブロック)から構成される。
<再帰的なブロックの分割>
図1は、HEVCにおけるCUについての再帰的なブロック分割の概要を説明するための説明図である。CUのブロック分割は、1つのブロックの4(=2x2)個のサブブロックへの分割を再帰的に繰り返すことにより行われ、結果として四分木(Quad-Tree)状のツリー構造が形成される。1つの四分木の全体をCTB(Coding Tree Block)といい、CTBに対応する論理的な単位をCTU(Coding Tree Unit)という。
図1の上部には、一例として、64x64画素のサイズを有するCUであるC01が示されている。C01の分割の深さは、ゼロに等しい。これは、C01がCTUのルートでありLCUに相当することを意味する。LCUサイズは、SPS(Sequence Parameter Set)又はPPS(Picture Parameter Set)において符号化されるパラメータにより指定され得る。CUであるC02は、C01から分割される4つのCUのうちの1つであり、32x32画素のサイズを有する。C02の分割の深さは、1に等しい。CUであるC03は、C02から分割される4つのCUのうちの1つであり、16x16画素のサイズを有する。C03の分割の深さは、2に等しい。CUであるC04は、C03から分割される4つのCUのうちの1つであり、8x8画素のサイズを有する。C04の分割の深さは、3に等しい。このように、CUは、符号化される画像を再帰的に分割することにより形成される。分割の深さは、可変的である。例えば、青空のような平坦な画像領域には、より大きいサイズの(即ち、深さが小さい)CUが設定され得る。一方、多くのエッジを含む急峻な画像領域には、より小さいサイズの(即ち、深さが大きい)CUが設定され得る。そして、設定されたCUの各々が、符号化処理の処理単位となる。
<CUへのPUの設定>
PUは、イントラ予測及びインター予測を含む予測処理の処理単位である。PUは、CUをいくつかの分割パタンのうちの1つで分割することにより形成される。図2は、図1に示したCUへのPUの設定について説明するための説明図である。図2の右には、2Nx2N、2NxN、Nx2N、NxN、2NxnU、2NxnD、nLx2N及びnRx2Nという、8種類の分割パタンが示されている。これら分割パタンのうち、イントラ予測では、2Nx2N及びNxNの2種類が選択可能である(NxNはSCUでのみ選択可能)。これに対してインター予測では、非対称動き分割が有効化されている場合に、8種類の分割パタンの全てが選択可能である。
<CUへのTUの設定>
TUは、直交変換処理の処理単位である。TUは、CU(イントラCUについては、CU内の各PU)をある深さまで分割することにより形成される。図3は、図2に示したCUへのTUの設定について説明するための説明図である。図3の右には、C02に設定され得る1つ以上のTUが示されている。例えば、TUであるT01は、32x32画素のサイズを有し、そのTU分割の深さはゼロに等しい。TUであるT02は、16x16画素のサイズを有し、そのTU分割の深さは1に等しい。TUであるT03は、8x8画素のサイズを有し、そのTU分割の深さは2に等しい。
上述したCU、PU及びTUといったブロックを画像に設定するためにどのようなブロック分割を行うかは、典型的には、符号化効率を左右するコストの比較に基づいて決定される。エンコーダは、例えば1つの2Mx2M画素のCUと、4つのMxM画素のCUとの間でコストを比較し、4つのMxM画素のCUを設定した方が符号化効率が高いならば、2Mx2M画素のCUを4つのMxM画素のCUへと分割することを決定する。
<CUとPUの走査順>
画像を符号化する際、画像(又はスライス、タイル)内に格子状に設定されるCTB(又はLCU)が、ラスタスキャン順に走査される。1つのCTBの中では、CUは、四分木を左から右、上から下に辿るように走査される。カレントブロックを処理する際、上及び左の隣接ブロックの情報が入力情報として利用される。図4は、CUとPUの走査順について説明するための説明図である。図4の左上には、1つのCTBに含まれ得る4つのCUである、C10、C11、C12及びC13が示されている。各CUの枠内の数字は、処理の順序を表現している。符号化処理は、左上のCUであるC10、右上のCUであるC11、左下のCUであるC12、右下のCUであるC13の順で実行される。図4の右には、CUであるC11に設定され得るインター予測のための1つ以上のPUが示されている。図4の下には、CUであるC12に設定され得るイントラ予測のための1つ以上のPUが示されている。これらPUの枠内の数字に示したように、PUもまた、左から右、上から下に辿るように走査される。
以下においては、画像(ピクチャ)の部分領域や処理単位として「ブロック」を用いて説明する場合がある(処理部のブロックではない)。この場合の「ブロック」は、ピクチャ内の任意の部分領域を示し、その大きさ、形状、および特性等は限定されない。つまり、この場合の「ブロック」には、例えば、TB、TU、PB、PU、SCU、CU、LCU(CTB)、サブブロック、マクロブロック、タイル、またはスライス等、任意の部分領域(処理単位)が含まれるものとする。
<画像符号化装置>
図5は、本技術を適用した画像処理装置の一態様である画像符号化装置の構成の一例を示すブロック図である。図5に示される画像符号化装置100は、AVCやHEVCのように、画像とその予測画像との予測残差を符号化する装置である。例えば、画像符号化装置100は、HEVCに提案された技術や、JVET(Joint Video Exploration Team)にて提案された技術を実装している。
なお、図5においては、処理部やデータの流れ等の主なものを示しており、図5に示されるものが全てとは限らない。つまり、画像符号化装置100において、図5においてブロックとして示されていない処理部が存在したり、図5において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図5に示されるように画像符号化装置100は、制御部101、演算部111、変換部112、量子化部113、符号化部114、逆量子化部115、逆変換部116、演算部117、フレームメモリ118、および予測部119を有する。
制御部101は、外部、または予め指定された処理単位のブロックサイズに基づいて、画像符号化装置100に入力される動画像を処理単位のブロック(CU, PU, 変換ブロック(TB)など)へ分割し、分割されたブロックに対応する画像Iを演算部111へ供給させる。また、制御部101は、各ブロックへ供給する符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo等)を、例えば、RDO(Rate-Distortion Optimization)に基づいて決定する。決定された符号化パラメータは、各ブロックへ供給される。
ヘッダ情報Hinfoは、例えば、ビデオパラメータセット(VPS(Video Parameter Set))、シーケンスパラメータセット(SPS(Sequence Parameter Set))、ピクチャパラメータセット(PPS(Picture Parameter Set))、スライスヘッダ(SH)等の情報を含む。例えば、ヘッダ情報Hinfoには、画像サイズ(横幅PicWidth、縦幅PicHeight)、ビット深度(輝度bitDepthY, 色差bitDepthC)、CUサイズの最大値MaxCUSize/最小値MinCUSize、変換ブロックサイズの最大値MaxTBSize/最小値MinTBSize、変換スキップブロックの最大値MaxTSSize(最大変換スキップブロックサイズとも称する)、各符号化ツールのオンオフフラグ(有効フラグとも称する)などを規定する情報が含まれる。
例えば、ヘッダ情報Hinfoに含まれる符号化ツールのオンオフフラグとしては、以下に示す変換、量子化処理に関わるオンオフフラグがある。なお、符号化ツールのオンオフフラグは、該符号化ツールに関わるシンタックスが符号化データ中に存在するか否かを示すフラグとも解釈することができる。また、オンオフフラグの値が1(真)の場合、該符号化ツールが使用可能であることを示し、オンオフフラグの値が0(偽)の場合、該符号化ツールが使用不可であることを示す。なお、フラグ値の解釈は逆であってもいい。
セカンダリ変換有効フラグ(st_enabled_flag)は、変換処理およびその逆処理の1つとして、セカンダリ変換をする符号化ツールまたはその逆変換(逆セカンダリ変換)をする符号化ツールが使用可能か否かを示すフラグである。換言するに、このセカンダリ変換有効フラグは、対象とするデータ単位において、セカンダリ変換または逆セカンダリ変換((逆)セカンダリ変換とも称する)が許可されているか否かを示す情報である。さらに換言するに、このセカンダリ変換有効フラグは、対象とするデータ単位における(逆)セカンダリ変換の許可に関する情報である。
例えば、このセカンダリ変換有効フラグst_enabled_flagが1(真)の場合、(逆)セカンダリ変換が許可されている((逆)セカンダリ変換を実行することができる)。また、セカンダリ変換有効フラグst_enabled_flagが0(偽)の場合、(逆)セカンダリ変換が許可されていない((逆)セカンダリ変換を実行することができない)。
変換量子化バイパス有効フラグ(transquant_bypass_enabled_flag)は、変換および量子化、または、その逆処理(逆変換および逆量子化)の1つとして、変換および量子化、または、逆量子化および逆変換をスキップする符号化ツールが使用可能か否かを示すフラグである。換言するに、この変換量子化バイパス有効フラグは、対象とするデータ単位において、変換および量子化、または、逆量子化および逆変換((逆)変換および(逆)量子化とも称する)のスキップ(バイパス)を許可するか否かを示す情報である。さらに換言するに、この変換量子化バイパス有効フラグは、対象とするデータ単位における(逆)変換および(逆)量子化のスキップ(バイパス)の許可に関する情報である。
例えば、この変換量子化バイパス有効フラグtransquant_bypass_enabled_flagが1(真)の場合、(逆)変換および(逆)量子化のバイパスが許可されている。すなわち、(逆)変換および(逆)量子化をバイパスすることができる。また、変換量子化バイパス有効フラグtransquant_bypass_enabled_flagが0(偽)の場合、(逆)変換および(逆)量子化のバイパスが許可されていない。すなわち、(逆)変換および(逆)量子化をバイパスすることができない。
変換スキップ有効フラグ(ts_enabled_flag)は、変換処理およびその逆処理の1つとして、プライマリ変換およびセカンダリ変換を含む(逆)変換をスキップする符号化ツールが使用可能か示すフラグである。換言するに、この変換スキップ有効フラグは、対象とするデータ単位において、(逆)変換のスキップが許可されているか否かを示す情報である。さらに換言するに、この変換スキップ有効フラグは、対象とするデータ単位における(逆)変換のスキップの許可に関する情報である。
例えば、この変換スキップ有効フラグts_enabled_flagが1(真)の場合、(逆)変換のスキップが許可されている。すなわち、(逆)変換をスキップすることができる。また、変換スキップ有効フラグts_enabled_flagが0(偽)の場合、(逆)変換のスキップが許可されていない。すなわち、(逆)変換をスキップすることができない。
なお、非特許文献1や非特許文献2に記載の方法の場合、この変換スキップ有効フラグは、上述のように、プライマリ変換または逆プライマリ変換((逆)プライマリ変換とも称する)にしか作用しなかった。そのため、本明細書においては、この変換スキップ有効フラグが、『(逆)プライマリ変換』に関する情報とみなして説明する場合もある。つまり、例えば、この変換スキップ有効フラグが、「対象とするデータ単位における『(逆)プライマリ変換』のスキップの許可に関する情報(対象とするデータ単位において、『(逆)プライマリ変換』のスキップが許可されているか否かを示す情報)」であるとして説明する場合もある。
もちろん、ヘッダ情報Hinfoの内容は任意であり、上述した例以外のどのような情報がこのヘッダ情報Hinfoに含まれるようにしてもよい。
予測モード情報Pinfoには、例えば、以下のような情報が含まれる。
PUサイズPUSizeは、処理対象PUのPUサイズ(予測ブロックサイズ)を示す情報である。イントラ予測モード情報IPinfo(例えば、JCTVC-W1005, 7.3.8.5 Coding Unit syntax中のprev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode等)は、処理対象のブロックのイントラ予測モードに関する情報である。動き予測情報MVinfo(例えば、JCTVC-W1005, 7.3.8.6 Prediction Unit Syntax中のmerge_idx, merge_flag, inter_pred_idc, ref_idx_LX, mvp_lX_flag, X={0,1}, mvd等)は、処理対象のブロックの動き予測に関する情報である。
もちろん、予測モード情報Pinfoの内容は任意であり、上述した例以外のどのような情報がこの予測モード情報Pinfoに含まれるようにしてもよい。
変換情報Tinfoには、例えば、以下のような情報が含まれる。
ブロックサイズTBSize(あるいは、2を底とするTBSizeの対数値log2TBSize、変換ブロックサイズとも称する)は、処理対象変換ブロックのブロックサイズを示す情報である。
変換量子化バイパスフラグ(transquant_bypass_flag)は、対象とするデータ単位において、(逆)変換および(逆)量子化をスキップ(バイパス)するか否かを示す情報である(例えば、JCTVC-W1005, 7.3.8.5 Coding unit syntax中のcu_transquant_bypass_flag等)。換言するに、この変換量子化バイパスフラグは、対象とするデータ単位における(逆)変換および(逆)量子化のスキップ(バイパス)に関する情報である。
例えば、この変換量子化バイパスフラグtransquant_bypass _flagが1(真)の場合、(逆)変換および(逆)量子化がバイパスされる。また、変換量子化バイパス有効フラグtransquant_bypass _flagが0(偽)の場合、(逆)変換および(逆)量子化がバイパスされない。
変換スキップフラグ(ts_flag)は、(逆)変換をスキップするか否かを示す情報である(例えば、JCTVC-W1005, 7.3.8.11 Residual coding syntax syntax中のtransfrom_skip_flag等)。換言するに、この変換スキップフラグは、対象とするデータ単位における(逆)変換のスキップに関する情報である。
例えば、この変換スキップフラグts_flagが1(真)の場合、(逆)変換((逆)プライマリ変換)がスキップされる。また、変換スキップフラグts_flagが0(偽)の場合、(逆)変換((逆)プライマリ変換)が実行される。
なお、非特許文献1や非特許文献2に記載の方法の場合、この変換スキップフラグは、上述のように、(逆)プライマリ変換とも称するにしか作用しなかった。そのため、本明細書においては、この変換スキップフラグが、『(逆)プライマリ変換』に関する情報とみなして説明する場合もある。つまり、例えば、この変換スキップフラグが、「対象とするデータ単位における『(逆)プライマリ変換』のスキップに関する情報(対象とするデータ単位において、『(逆)プライマリ変換』をスキップするか否かを示す情報)」であるとして説明する場合もある。
プライマリ変換識別子(pt_idx)は、対象とするデータ単位において、垂直方向、及び水平方向の(逆)プライマリ変換にどの(逆)プライマリ変換を適用するかを示す識別子である(例えば、JVET-B1001、2.5.1 Adaptive multiple Core transformを参照。JEM2ではemt_idxとも称する)。換言するに、このプライマリ変換識別子は、対象とするデータ単位における(逆)プライマリ変換の内容に関する情報である。
セカンダリ変換識別子(st_idx)は、対象とするデータ単位において、どの(逆)セカンダリ変換を適用するかを示す識別子である(例えば、JVET-B1001、2.5.2 Secondary Transformsを参照。JEM2では、nsst_idx, rot_idxとも称する)。換言するに、このセカンダリ変換識別子は、対象とするデータ単位における(逆)セカンダリ変換の内容に関する情報である。
例えば、セカンダリ変換識別子st_idxは、その値が0より大きい場合、(逆)セカンダリ変換の行列を指定する識別子である。換言するに、この場合、セカンダリ変換識別子st_idxは、(逆)セカンダリ変換の実行を示す。また、例えば、セカンダリ変換識別子st_idxは、その値が0の場合、(逆)セカンダリ変換のスキップを示す。
スキャン識別子(scanIdx)は、スキャン方法に関する情報である。量子化パラメータ(qp)は、対象とするデータ単位において、(逆)量子化に用いられる量子化パラメータを示す情報である。量子化マトリックス(scaling_matrix)は、対象とするデータ単位において、(逆)量子化に用いられる量子化マトリックスを示す情報である(例えば、JCTVC-W1005, 7.3.4 Scaling list data syntax)。
もちろん、変換情報Tinfoの内容は任意であり、上述した例以外のどのような情報がこの変換情報Tinfoに含まれるようにしてもよい。
ヘッダ情報Hinfoは、例えば、各ブロックに供給される。予測モード情報Pinfoは、例えば、符号化部114および予測部119に供給される。変換情報Tinfoは、例えば、変換部112、量子化部113、符号化部114、逆量子化部115、および逆変換部116に供給される。
演算部111は、入力された処理単位のブロックに対応する画像Iから、予測部119から供給された予測画像Pを、式(9)に示すように減算して予測残差Dを求め、それを変換部112に供給する。
D=I-P
・・・(9)
変換部112は、制御部101から供給される変換情報Tinfoに基づいて、演算部111から供給される予測残差Dに対して変換処理を行い、変換係数Coeffを導出する。変換部112は、その変換係数Coeffを量子化部113に供給する。なお、変換部112は、変換スキップまたは変換量子化バイパス時に、変換処理(プライマリ変換およびセカンダリ変換)をスキップ(省略)し、予測残差Dを変換係数Coeffとして量子化部113に供給することもできる。
量子化部113は、制御部101から供給される変換情報Tinfoに基づいて、変換部112から供給される変換係数Coeffをスケーリング(量子化)する。つまり、量子化部113は、変換処理が行われた変換係数Coeff、または、変換処理がスキップ(省略)された変換係数Coeff(つまり予測残差D)の量子化を行う。量子化部113は、その量子化により得られた量子化後の変換係数、すなわち量子化変換係数レベルlevelを符号化部114および逆量子化部115に供給する。なお、量子化部113は、変換量子化バイパス時に、量子化処理をスキップ(省略)し、変換係数Coeffを量子化変換係数レベルlevelとして符号化部114に供給することもできる。
符号化部114は、量子化部113から供給される量子化変換係数レベルlevel等を所定の方法で符号化する。例えば、符号化部114は、シンタックステーブルの定義に沿って、制御部101から供給される符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo等)や、量子化部113から供給される量子化変換係数レベルlevelを、各シンタックス要素のシンタックス値へ変換し、各シンタックス値を符号化(例えば、算術符号化)し、ビット列(符号化データ)を生成する。
また、符号化部114は、量子化変換係数レベルlevelから残差情報RInfoを導出し、残差情報RInfoを符号化し、ビット列(符号化データ)を生成する。
残差情報RInfoには、例えば、ラスト非ゼロ係数X座標(last_sig_coeff_x_pos)、ラスト非ゼロ係数Y座標(last_sig_coeff_y_pos)、サブブロック非ゼロ係数有無フラグ(coded_sub_block_flag)、非ゼロ係数有無フラグ(sig_coeff_flag)、非ゼロ係数のレベルが1より大きいかを示すフラグ情報であるGR1フラグ(gr1_flag)、非ゼロ係数のレベルが2より大きいかを示すフラグ情報であるGR2フラグ(gr2_flag)、非ゼロ係数の正負を示す符号であるサイン符号(sign_flag)、非ゼロ係数の残余レベルを示す情報である非ゼロ係数残余レベル(coeff_abs_level_remaining)などが含まれる(例えば、JCTVC-W1005の7.3.8.11 Residual Coding syntaxを参照)。
もちろん、残差情報RInfoの内容は任意であり、上述した例以外のどのような情報がこの残差情報RInfoに含まれるようにしてもよい。
符号化部114は、例えば、符号化された各シンタックス要素のビット列(符号化データ)を多重化し、ビットストリームとして出力する。
逆量子化部115は、制御部101から供給される変換情報Tinfoに基づいて、量子化部113から供給される量子化変換係数レベルlevelの値をスケーリング(逆量子化)し、逆量子化後の変換係数Coeff_IQを導出する。逆量子化部115は、その変換係数Coeff_IQを逆変換部116に供給する。なお、逆量子化部115は、変換量子化バイパス時に、逆量子化処理をスキップ(省略)し、量子化変換係数レベルlevelを変換係数Coeff_IQとして逆変換部116に供給することもできる。この逆量子化部115により行われる逆量子化は、量子化部113により行われる量子化の逆処理であり、後述する画像復号装置において行われる逆量子化と同様の処理である。したがって、この逆量子化については、画像復号装置に関する説明において後述する。
逆変換部116は、制御部101から供給される変換情報Tinfoに基づいて、逆量子化部115から供給される変換係数Coeff_IQに対して逆変換を行い、予測残差D’を導出する。逆変換部116は、その予測残差D’を演算部117に供給する。なお、逆変換部116は、変換スキップまたは変換量子化バイパス時に、逆変換処理(逆セカンダリ変換および逆プライマリ変換)をスキップ(省略)し、変換係数Coeff_IQを予測残差D'としてとして演算部117に供給することもできる。この逆変換部116により行われる逆変換は、変換部112により行われる変換の逆処理であり、後述する画像復号装置において行われる逆変換と同様の処理である。したがって、この逆変換については、画像復号装置に関する説明において後述する。
演算部117は、逆変換部116から供給される予測残差D’と、予測部119より供給される、その予測残差D’に対応する予測画像P(予測信号)とを、以下の式(10)のように加算して局所復号画像Recを導出する。演算部117は、その局所復号画像Recをフレームメモリ118に供給する。
Rec=D’+P
・・・(10)
フレームメモリ118は、演算部117より供給される局所復号画像Recを用いてピクチャ単位毎の復号画像を再構築し、フレームメモリ118内のバッファへ格納する。フレームメモリ118は、予測部119により指定される復号画像を参照画像としてバッファより読み出し、予測部119に供給する。また、フレームメモリ118は、復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfoなどを、フレームメモリ118内のバッファに格納するようにしても良い。
予測部119は、予測モード情報PInfoによって指定される、フレームメモリ118に格納された復号画像を参照画像として取得し、その参照画像を用いて、予測モード情報Pinfoによって指定される予測方法により予測画像Pを生成する。予測部119は、生成した予測画像Pを演算部111や演算部117に供給する。
このような画像符号化装置100において、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換をスキップさせる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換もスキップさせる制御部を備えるようにする。
<変換部>
図6は、変換部112の主な構成例を示すブロック図である。図6において、変換部112は、スイッチ131、プライマリ変換部132、およびセカンダリ変換部133を有する。
スイッチ131は、プライマリ変換およびセカンダリ変換の実行を制御する制御部の一実施の形態である。例えば、スイッチ131は、プライマリ変換をスキップさせる場合、セカンダリ変換もスキップさせるように制御する。例えば、スイッチ131は、変換情報Tinfoに含まれる、プライマリ変換のスキップに関する変換スキップフラグts_flagの値に応じて、演算部111から供給される予測残差Dの供給先を制御する。
例えば、変換スキップフラグts_flagの値が0の場合、すなわち、変換スキップフラグts_flagが変換(プライマリ変換)の実行を示す場合、スイッチ131は、少なくともプライマリ変換を実行させる。つまり、この場合、スイッチ131は、予測残差Dをプライマリ変換部132に供給する。
また、変換スキップフラグts_flagの値が1の場合、すなわち、変換スキップフラグts_flagが変換(プライマリ変換)のスキップ(省略)を示す場合、スイッチ131は、プライマリ変換およびセカンダリ変換をスキップさせる。つまり、この場合、スイッチ131は、予測残差Dを変換係数Coeffとして量子化部113に供給する。
したがって、変換部112は、容易に、変換の処理量の不要な増大を抑制することができる。
例えば、4×4行列の予測残差D=[[255, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0,0,0,0]]のような、非ゼロ係数の数が少ない疎な残差信号(予測残差D)は、エナジーコンパクションの低下を抑制し、符号化効率の低減を抑制するために、変換スキップ(プライマリ変換およびセカンダリ変換のスキップ)を適用するのが望ましい。スイッチ131が、上述のように変換スキップフラグts_flagの値に応じて変換の実行を制御することにより、特にこのような非ゼロ係数の数が少ない疎な残差信号に対して、より容易にプライマリ変換だけでなくセカンダリ変換もスキップさせることができ、変換の処理量の増大を抑制し、符号化効率の低減を抑制することができる。
なお、スイッチ131は、変換情報Tinfoに含まれる、変換量子化バイパスフラグtransquant_bypass_flagの値に応じて、演算部111から供給される予測残差Dの供給先を制御してもよい。
例えば、変換量子化バイパスフラグtransquant_bypass_flagの値が0の場合、すなわち、変換量子化バイパスフラグtransquant_bypass_flagが変換および量子化の実行を示す場合、スイッチ131は、少なくともプライマリ変換を実行させる。つまり、この場合、スイッチ131は、予測残差Dをプライマリ変換部132に供給する。
また、変換量子化バイパスフラグtransquant_bypass_flagの値が1の場合、すなわち、変換量子化バイパスフラグtransquant bypass_flagが変換および量子化のスキップ(省略)を示す場合、スイッチ131は、プライマリ変換およびセカンダリ変換をスキップさせる。つまり、この場合、スイッチ131は、予測残差Dを変換係数Coeffとして量子化部113に供給する。
このようにすることにより、変換部112は、変換スキップの場合と同様に、容易に、変換の処理量の不要な増大を抑制することができる。
プライマリ変換部132は、スイッチ131から供給される予測残差Dに対して、例えば直交変換等のプライマリ変換を実行する。つまり、プライマリ変換部132は、スイッチ131の制御に従って、プライマリ変換を行う。
プライマリ変換を行う場合、プライマリ変換部132は、例えば、プライマリ変換の内容に関する情報であるプライマリ変換識別子pt_idxの値に応じた方法でプライマリ変換を実行する。例えば、プライマリ変換部132は、プライマリ変換識別子pt_idxで指定される水平方向のプライマリ変換Phorおよび垂直方向のプライマリ変換Pverを選択し、スイッチ131から供給される予測残差Dに対して、例えば以下の式(11)のように行列演算を行い、プライマリ変換後の変換係数Coeff_P(プライマリ変換係数とも称する)を導出する。
Coeff_P=Phor・D・PverT
・・・(11)
なお、式(11)は、以下の式(12)のようにしてもよい。
Coeff_P=Pver・D・PhorT
・・・(12)
なお、演算子"・"は、行列同士の内積(行列積)を行う操作を表し、演算子"T"は、転置行列の操作を表す。プライマリ変換部132は、導出したプライマリ変換係数Coeff_Pをセカンダリ変換部133に供給する。
セカンダリ変換部133は、プライマリ変換部132から供給されるプライマリ変換係数Coeff_Pを1次元のベクトルに変換し、その1次元のベクトルに対する行列演算を行い、その行列演算が行われた1次元のベクトルのスケーリングを行い、そのスケーリングされた前記1次元のベクトルを行列化する変換処理であるセカンダリ変換を行う。つまり、セカンダリ変換部133は、スイッチ131の制御に従ってセカンダリ変換を行う。
セカンダリ変換部133は、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxと、変換係数のスキャン方法に関する情報であるスキャン識別子scanIdxとに基づいて、プライマリ変換係数Coeff_Pに対してセカンダリ変換を行い、セカンダリ変換後の変換係数Coeff(セカンダリ変換係数とも称する)を導出する。
図6に示されるように、セカンダリ変換部133は、ラスタライズ部141、行列演算部142、スケーリング部143、行列化部144、およびセカンダリ変換選択部145を有する。
ラスタライズ部141は、スキャン識別子scanIdxによって指定される変換係数のスキャン方法に基づいて、サブブロック単位(4x4サブブロック)毎に、プライマリ変換部132から供給されるプライマリ変換係数Coeff_Pを1×16次元のベクトルX1dへ変換する。ラスタライズ部141は、得られたベクトルX1dを行列演算部142に供給する。
図7のAは、スキャン識別子scanIdxの各値によって指定されるスキャンタイプscanTypeを示している。図7のAに示されうように、スキャン識別子scanIdxが0の場合、斜め方向スキャン(up-right diagonal scan)が指定され、スキャン識別子scanIdxが1の場合、水平方向スキャン(horizontal fast scan)が指定され、スキャン識別子scanIdxが2の場合、垂直方向スキャン(vertical fast scan)が指定される。図7のB乃至図7のDは、4×4サブブロックにおける各スキャンの係数のスキャン順を示している。図7のB乃至図7のDにおいて、各係数位置に付された番号は、該係数位置がスキャンされる順番を示している。図7のBは、水平方向スキャン(horizontal fast scan)のスキャン順の例を示し、図7のCは、垂直方向スキャン(vertical fast scan)のスキャン順の例を示し、図7のDは、斜め方向スキャン(up-right diagonal scan)のスキャン順の例を示す。
例えば、変換スキップフラグts_flagが0であって、プライマリ変換部132から供給されるプライマリ変換係数Coeff_Pが、以下の式(13)に示されるような4×4の行列であるとする。
また、スキャン識別子scanIdxが水平スキャンhorを示すとする。この場合、ラスタライズ部141は、プライマリ変換係数Coeff_Pを、図7のBの水平スキャンの係数のスキャン順に沿ってスキャンし、以下の式(14)に示されるような1×16次元のベクトルX1dに変換する。ラスタライズ部141は、求めたベクトルX1dを行列演算部142に供給する。
セカンダリ変換選択部145は、セカンダリ変換識別子st_idxで指定されるセカンダリ変換の行列Rを、セカンダリ変換選択部145の内部メモリ(不図示)より読み出し、行列演算部142に供給する。例えば、セカンダリ変換選択部145は、あるセカンダリ変換識別子st_idxの値のとき、セカンダリ変換として、図8に示される16×16の行列Rを読み出し、行列演算部142に供給する。
なお、セカンダリ変換選択部145が、セカンダリ変換識別子st_idxおよびイントラ予測モード情報IPinfo(例えば、予測モード番号)に応じて、セカンダリ変換の行列Rを選択するようにしてもよい。また、セカンダリ変換選択部145が、イントラ予測モード情報IPinfoの代わりに、動き予測情報MVinfoおよびセカンダリ変換識別子st_idxに応じて、変換Rを選択するようにしてもよい。
行列演算部142は、1次元ベクトルX1dおよびセカンダリ変換の行列Rを用いて、以下の式(15)に示すような行列演算を行い、その結果Y1dをスケーリング部143に供給する。
Y1d
T=R・X1d
T
・・・(15)
ここで、演算子"T"は、転置行列の操作を表す。例えば、式(14)のベクトルX1dと図8に示すセカンダリ変換の行列Rの行列積により、以下の式(16)のような結果Y1dが得られる。
スケーリング部143は、行列演算部142から供給される信号Y1dのノルムを正規化するために、以下の式(17)に示されるようなN(Nは自然数)ビットのビットシフト演算を行い、ビットシフト後の信号Z1dを求める。
Z1d=(Y1d)>>N
・・・(17)
なお、以下の式(18)のようにNビットのシフト演算前に、オフセットとして、1<<(N-1)の値を、信号Z1dの各要素へ加算するようにしてもよい。
Z1d=(Y1d+((N-1)<<1)・E)>>N
・・・(18)
なお、式(18)において、Eは、すべての要素の値が1の1×16次元のベクトルである。例えば、図8に示されるセカンダリ変換の行列Rは、8ビットスケーリングされた行列であるため、スケーリング部143において、ノルムの正規化に用いるNの値は8である。例えば、式(16)に示される信号Y1dを式(18)において、N=8として演算すると、式(19)に示されるような結果Z1dが得られる。
一般的に、セカンダリ変換の行列Rが、Nビットスケーリングされている場合、ノルム正規化のビットシフト量は、Nビットである。スケーリング部143は、以上のように得られた信号Z1dを行列化部144に供給する。
行列化部144は、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、ノルム正規化後の1×16次元のベクトルZ1dを4×4行列Xへ変換する。例えば、行列化部144は、式(19)に示される1×16次元のベクトルZ1dを、図7のBに示される水平スキャンに基づいて行列化し、以下の式(20)に示される4x4行列の変換係数Coeffを得る。
行列化部144は、得られた変換係数Coeffを量子化部113に供給する。
例えば、変換スキップフラグts_flagが変換処理(プライマリ変換)のスキップを示す場合、スイッチ131がプライマリ変換およびセカンダリ変換をスキップさせ、量子化部113が予測残差Dに対して量子化を行い、符号化部114が量子化変換係数レベルや変換スキップフラグts_flagを符号化し、それらの符号化データを含むビットストリームを生成するようにしてもよい。
<画像符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。最初に、画像符号化処理の流れの例を、図9のフローチャートを参照して説明する。
画像符号化処理が開始されると、ステップS101において、制御部101は、符号化制御処理を行い、ブロック分割や符号化パラメータの設定等を行う。
ステップS102において、予測部119は、予測処理を行い、最適な予測モードの予測画像等を生成する。例えば、この予測処理において、予測部119は、イントラ予測を行って最適なイントラ予測モードの予測画像等を生成し、インター予測を行って最適なインター予測モードの予測画像等を生成し、それらの中から、コスト関数値等に基づいて最適な予測モードを選択する。
ステップS103において、演算部111は、入力画像と、ステップS102の予測処理により選択された最適なモードの予測画像との差分を演算する。つまり、演算部111は、入力画像と予測画像との予測残差Dを生成する。このようにして求められた予測残差Dは、元の画像データに比べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
ステップS104において、変換部112は、ステップS103の処理により生成された予測残差Dに対して変換処理を行い、変換係数Coeffを導出する。ステップS104の処理の詳細については後述する。
ステップS105において、量子化部113は、制御部101により算出された量子化パラメータを用いる等して、ステップS104の処理により得られた変換係数Coeffを量子化し、量子化変換係数レベルlevelを導出する。
ステップS106において、逆量子化部115は、ステップS105の処理により生成された量子化変換係数レベルlevelを、そのステップS105の量子化の特性に対応する特性で逆量子化し、変換係数Coeff_IQを導出する。
ステップS107において、逆変換部116は、ステップS106の処理により得られた変換係数Coeff_IQを、ステップS104の変換処理に対応する方法で逆変換し、予測残差D’を導出する。なお、この逆変換処理は、ステップS104の変換処理の逆処理であり、後述する画像復号処理において実行される逆変換処理と同様に実行される。そのため、この逆変換処理の説明は、復号側の説明において行う。
ステップS108において、演算部117は、ステップS107の処理により導出された予測残差D’に、ステップS102の予測処理により得られた予測画像を加算することにより、局所的に復号された復号画像を生成する。
ステップS109において、フレームメモリ118は、ステップS108の処理により得られた、局所的に復号された復号画像を記憶する。
ステップS110において、符号化部114は、ステップS105の処理により得られた量子化変換係数レベルlevelを符号化する。例えば、符号化部114は、画像に関する情報である量子化変換係数レベルlevelを、算術符号化等により符号化し、符号化データを生成する。また、このとき、符号化部114は、各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo)を符号化する。さらに、符号化部114は、量子化変換係数レベルlevelから残差情報RInfoを導出し、その残差情報RInfoを符号化する。符号化部114は、このように生成した各種情報の符号化データをまとめて、ビットストリームとして画像符号化装置100の外部に出力する。このビットストリームは、例えば、伝送路や記録媒体を介して復号側に伝送される。
ステップS110の処理が終了すると、画像符号化処理が終了する。
なお、これらの各処理の処理単位は任意であり、互いに同一でなくてもよい。したがって、各ステップの処理は、適宜、他のステップの処理等と並行して、または、処理順を入れ替えて実行することもできる。
<変換処理の流れ>
次に、図9のステップS104において実行される変換処理の流れの例を、図10のフローチャートを参照して説明する。
変換処理が開始されると、ステップS121において、スイッチ131は、変換スキップフラグts_flagが1(真)であるか否かを判定する。変換スキップフラグts_flagが1(真)である(変換スキップフラグts_flagが変換処理のスキップを示す)と判定された場合、プライマリ変換およびセカンダリ変換(ステップS122乃至ステップS130の処理)がスキップされ、変換処理が終了し、処理は図9に戻る。つまり、スイッチ131は、予測残差Dを変換係数Coeffとして量子化部113に供給する。また、ステップS121において、変換スキップフラグts_flagが0(偽)である(変換スキップフラグts_flagが変換処理の実行を示す)と判定された場合、処理はステップS122に進む。
なお、ステップS121において、スイッチ131が、さらに、変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定するようにしてもよい。その際、変換量子化バイパスフラグtransquant_bypass_flagが1(真)である(変換量子化バイパスフラグtransquant_bypass_flagが変換処理および量子化処理のスキップを示す)と判定された場合、プライマリ変換およびセカンダリ変換(ステップS122乃至ステップS130の処理)がスキップされ、変換処理が終了し、処理は図9に戻る。つまり、スイッチ131は、予測残差Dを変換係数Coeffとして量子化部113に供給する。また、ステップS121において、変換量子化バイパスフラグtransquant_bypass_flagが0(偽)である(変換量子化バイパスフラグtransquant_bypass_flagが変換処理および量子化処理の実行を示す)と判定された場合、処理はステップS122に進む。
ステップS122において、プライマリ変換部132は、プライマリ変換識別子pt_idxに基づいて、予測残差Dに対するプライマリ変換を行い、プライマリ変換係数Coeff_Pを導出する。
ステップS123において、セカンダリ変換部133は、セカンダリ変換識別子st_idxがセカンダリ変換を適用するか否か(st_idx>0)を判定する。セカンダリ変換識別子st_idxが0である(セカンダリ変換識別子st_idxがセカンダリ変換のスキップを示す)と判定された場合、セカンダリ変換(ステップS124乃至ステップS130の処理)がスキップされ、変換処理が終了し、処理は図9に戻る。すなわち、セカンダリ変換部133は、プライマリ変換係数Coeff_Pを変換係数Coeffとして量子化部113に供給する。
また、ステップS123において、セカンダリ変換識別子st_idxが0より大きい(セカンダリ変換識別子st_idxがセカンダリ変換の実行を示す)と判定された場合、処理はステップS124に進む。ステップS124乃至ステップS130の処理によりセカンダリ変換が実行される。
ステップS124において、セカンダリ変換選択部145は、セカンダリ変換識別子st_idxにより指定されるセカンダリ変換の行列Rを選択する。
ステップS125において、セカンダリ変換部133は、処理対象の変換ブロックをサブブロックに分割し、未処理のサブブロックを選択する。
ステップS126において、ラスタライズ部141は、スキャン識別子scanIdxで指定されるスキャン方法に基づいて、プライマリ変換係数Coeff_Pを1×16次元のベクトルX1dに変換する。
ステップS127において、行列演算部142は、ベクトルX1dとセカンダリ変換の行列Rとの行列積を演算し、ベクトルY1dを求める。
ステップS128において、スケーリング部143は、ベクトルY1dのノルムを正規化し、ベクトルZ1dを求める。
ステップS129において、行列化部144は、スキャン識別子scanIdxで指定されるスキャン方法に基づいて、ベクトルZ1dを4×4の行列へ変換し、処理対象のサブブロックの変換係数Coeffを求める。この変換係数Coeffが量子化部113に供給される。
ステップS130において、セカンダリ変換部133は、処理対象の変換ブロックの全てのサブブロックを処理したか否かを判定する。未処理のサブブロックが存在すると判定された場合、処理はステップS125に戻り、それ以降の処理を繰り返す。つまり、処理対象の変換ブロックの各サブブロックについて、ステップS125乃至ステップS130の各処理(セカンダリ変換)が実行される。ステップS130において、全てのサブブロックを処理した(全てのサブブロックのセカンダリ変換を行った)と判定された場合、変換処理が終了し、処理は図9に戻る。
なお、変換処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップS123においてセカンダリ変換識別子st_idx=0であると判定された場合、16×16の単位行列がセカンダリ変換の行列Rとして選択され、ステップS125乃至ステップS130の各処理が実行されるようにしてもよい。
以上のように各処理を実行することにより、画像符号化装置100は、変換スキップフラグts_flagで変換処理のスキップを示すことによりプライマリ変換だけでなくセカンダリ変換もスキップすることができる。したがって、例えば、変換スキップを適用するのが望ましい非ゼロ係数の数が少ない疎な残差信号に対して、より容易に、変換の処理量の低減、及びエナジーコンパクションの低下を抑制し、符号化効率の向上した変換処理を行うことができる。
<画像復号装置>
次に、以上のように符号化された符号化データの復号について説明する。図11は、本技術を適用した画像処理装置の一態様である画像復号装置の構成の一例を示すブロック図である。図11に示される画像復号装置200は、図5の画像符号化装置100に対応する画像復号装置であり、画像符号化装置100が生成した符号化データ(ビットストリーム)を、画像符号化装置100による符号化方法に対応する復号方法で復号する。例えば、画像復号装置200は、HEVCに提案された技術や、JVETにて提案された技術を実装している。
なお、図11においては、処理部やデータの流れ等の主なものを示しており、図11に示されるものが全てとは限らない。つまり、画像復号装置200において、図11においてブロックとして示されていない処理部が存在したり、図11において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図11に示されるように画像復号装置200は、復号部211、逆量子化部212、逆変換部213、演算部214、フレームメモリ215、および予測部216を有する。画像復号装置200には、例えば伝送媒体や記録媒体等を介して、画像符号化装置100等が生成した符号化データが例えばビットストリーム等として供給される。
復号部211は、供給される符号化データを、その符号化方法に対応する所定の復号方法で復号する。例えば、復号部211は、シンタックステーブルの定義に沿って、供給された符号化データ(ビットストリーム)のビット列から、各シンタックス要素のシンタックス値を復号する。シンタックス要素には、例えば、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfoなどの情報が含まれる。
復号部211は、残差情報Rinfoを参照して、各変換ブロック内の各係数位置の量子化変換係数レベルlevelを導出する。復号部211は、復号して得た予測モード情報Pinfo、量子化変換係数レベルlevel、変換情報Tinfoを各ブロックへ供給する。例えば、復号部211は、予測モード情報Pinfoを予測部216に供給し、量子化変換係数レベルlevelを逆量子化部212に供給し、変換情報Tinfoを逆量子化部212および逆変換部213に供給する。
逆量子化部212は、復号部211から供給される変換情報Tinfoに基づいて、復号部211から供給される量子化変換係数レベルlevelの値をスケーリング(逆量子化)し、逆量子化後の変換係数Coeff_IQを導出する。この逆量子化は、画像符号化装置100の量子化部113(図5)により行われる量子化の逆処理である。なお、逆量子化部115(図5)は、この逆量子化部212と同様の逆量子化を行う。逆量子化部212は、得られた変換係数Coeff_IQを逆変換部213に供給する。なお、逆量子化部212は、変換量子化バイパス時に、逆量子化処理をスキップ(省略)し、量子化変換係数レベルlevelを変換係数Coeff_IQとして逆変換部213に供給することもできる。
逆変換部213は、復号部211から供給される変換情報Tinfoに基づいて、逆量子化部212より供給される変換係数Coeff_IQを逆変換し、予測残差D’を導出する。この逆変換は、画像符号化装置100の変換部112(図5)により行われる変換処理の逆処理である。なお、逆変換部116は、この逆変換部213と同様の逆変換を行う。この逆変換の詳細については、後述する。逆変換部213は、得られた予測残差D’を演算部214に供給する。なお、逆変換部213は、変換スキップまたは変換量子化バイパス時に、逆変換処理(逆セカンダリ変換および逆プライマリ変換)をスキップ(省略)し、変換係数Coeff_IQを予測残差D’として演算部214に供給することもできる。
演算部214は、以下の式(21)に示されるように、逆変換部213から供給される予測残差D’とその予測残差D’に対応する予測画像P(予測信号)とを加算し、局所的な復号画像Recを導出する。演算部214は、得られた局所的な復号画像Recを用いてピクチャ単位毎の復号画像を再構築し、得られた復号画像を画像復号装置200の外部に出力する。また、演算部214は、その局所的な復号画像Recをフレームメモリ215にも供給する。
Rec=D’+P
・・・(21)
フレームメモリ215は、演算部214より供給される局所的な復号画像Recを用いてピクチャ単位毎の復号画像を再構築し、フレームメモリ215内のバッファに格納する。フレームメモリ215は、予測部216の予測モード情報Pinfoによって指定される復号画像を参照画像としてバッファより読み出し、予測部216に供給する。また、フレームメモリ215は、その復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfoなどをフレームメモリ215内のバッファに格納するようにしても良い。
予測部216は、復号部211から供給される予測モード情報PInfoによって指定される、フレームメモリ215に格納された復号画像を参照画像として取得し、その参照画像を用いて、その予測モード情報Pinfoによって指定される予測方法により予測画像Pを生成する。予測部216は、生成した予測画像Pを、演算部214に供給する。
このような画像復号装置200において、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換をスキップさせる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換もスキップさせる制御部を備えるようにする。
<逆変換部>
図12は、図11の逆変換部213の主な構成例を示すブロック図である。図12に示されるように、逆変換部213は、スイッチ231、逆セカンダリ変換部232、および逆プライマリ変換部233を有する。
スイッチ231は、逆セカンダリ変換および逆プライマリ変換の実行を制御する制御部の一実施の形態である。例えば、スイッチ231は、逆プライマリ変換をスキップさせる場合、逆セカンダリ変換もスキップさせるように制御する。例えば、スイッチ231は、逆プライマリ変換のスキップに関する情報である変換スキップフラグts_flagの値の値に応じてこのような制御を行う。
例えば、変換スキップフラグts_flagの値が0の場合、すなわち、変換スキップフラグts_flagが逆変換(逆プライマリ変換)の実行を示す場合、スイッチ231は、逆セカンダリ変換および逆プライマリ変換を実行させる。つまり、この場合、スイッチ231は、変換係数Coeff_IQを逆セカンダリ変換部232に供給する。
これに対して、変換スキップフラグts_flagの値が1の場合、すなわち、変換スキップフラグts_flagが逆変換(逆プライマリ変換)のスキップ(省略)を示す場合、スイッチ231は、逆セカンダリ変換および逆プライマリ変換をスキップさせる。つまり、この場合、スイッチ231は、変換係数Coeff_IQを予測残差D’として演算部214に供給する。
したがって、逆変換部213は、容易に、逆変換の処理量の不要な増大を抑制することができる。
例えば、4×4行列Coeff_IQ = [[255, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0,0,0,0]]のような、非ゼロ係数の数が少ない疎な残差信号(変換係数Coeff_IQ)は、エナジーコンパクションの低下を抑制し、符号化効率の低減を抑制するために、変換スキップ(逆セカンダリ変換および逆プライマリ変換のスキップ)を適用するのが望ましい。スイッチ231が、上述のように変換スキップフラグts_flagの値に応じて逆変換の実行を制御することにより、特にこのような非ゼロ係数の数が少ない疎な残差信号に対して、より容易に逆プライマリ変換だけでなく逆セカンダリ変換もスキップさせることができ、逆変換の処理量の増大を抑制し、符号化効率の低減を抑制することができる。
なお、スイッチ231は、変換情報Tinfoに含まれる、変換量子化バイパスフラグtransquant_bypass_flagの値に応じて、外部より供給される変換係数Coeff_IQの供給先を制御してもよい。
例えば、変換量子化バイパスフラグtransquant_bypass_flagの値が0の場合、すなわち、変換量子化バイパスフラグtransquant_bypass_flagが逆変換および逆量子化の実行を示す場合、スイッチ231は、変換係数Coeff_IQを逆セカンダリ変換部232に供給する。
また、変換量子化バイパスフラグtransquant_bypass_flagの値が1の場合、すなわち、変換量子化バイパスフラグtransquant bypass_flagが変換および量子化のスキップ(省略)を示す場合、スイッチ231は、逆セカンダリ変換および逆プライマリ変換をスキップさせる。つまり、この場合、スイッチ231は、変換係数Coeff_IQを予測残差D'として演算部214に供給する。
したがって、逆変換部213は、変換スキップと同様に、容易に、変換の処理量の不要な増大を抑制することができる。
逆セカンダリ変換部232は、スイッチ231から供給されるセカンダリ変換係数、すなわち、符号化データが復号され、逆量子化されて得られるセカンダリ変換係数を1次元のベクトルに変換し、その1次元のベクトルに対する行列演算を行い、その行列演算が行われた1次元のベクトルのスケーリングを行い、そのスケーリングされた1次元のベクトルを行列化する変換処理である逆セカンダリ変換を行う。つまり、逆セカンダリ変換部232は、スイッチ231の制御に従って逆セカンダリ変換を行う。
逆セカンダリ変換部232は、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxと、変換係数のスキャン方法に関する情報であるスキャン識別子scanIdxとに基づいて、変換係数Coeff_IQに対して逆セカンダリ変換を行い、逆セカンダリ変換後の変換係数Coeff_IS(プライマリ変換係数ともいう)を導出する。逆セカンダリ変換部232は、そのプライマリ変換係数Coeff_ISを、逆プライマリ変換部233に供給する。なお、逆セカンダリ変換部232の詳細については、後述する。
逆プライマリ変換部233は、逆セカンダリ変換部232から供給されるプライマリ変換係数Coeff_ISに対して、例えば逆直交変換等の逆プライマリ変換を実行する。つまり、逆プライマリ変換部233は、スイッチ231の制御に従って、逆プライマリ変換を行う。
逆プライマリ変換を行う場合、逆プライマリ変換部233は、例えば、逆プライマリ変換の内容に関する情報であるプライマリ変換識別子pt_idxの値に応じた方法で逆プライマリ変換を実行する。例えば、逆プライマリ変換部233は、復号部211から供給されるプライマリ変換識別子pt_idxにより指定される水平方向の逆プライマリ変換IPhorおよび垂直方向の逆プライマリ変換IPverを選択し、変換係数Coeff_ISに対して、例えば式(22)のような行列演算を行い、予測残差D’を導出する。
D’=IPhor・Coeff_IS・IPverT
・・・(22)
ここで、演算子"・"は、行列同士の内積(行列積)を行う操作を表し、演算子"T"は、置換行列の操作を表す。また、水平方向の逆プライマリ変換IPhorは、水平方向のプライマリ変換Phorの逆変換であり、PhorT(=Phor-1)とも表現される。同様に、垂直方向の逆プライマリ変換IPverは、垂直方向のプライマリ変換Pverの逆変換であり、PverT(=Pver-1)とも表現される。なお、上述した式(22)は、以下の式(23)のようにしてもよい。
D’=IPver・Coeff_IS・IPhorT
・・・(23)
逆プライマリ変換部233は、得られた予測残差D’を演算部214に供給する。
次に、逆セカンダリ変換部232について説明する。図12に示されるように、逆セカンダリ変換部232は、ラスタライズ部241、行列演算部242、スケーリング部243、行列化部244、および逆セカンダリ変換選択部245を有する。
ラスタライズ部241は、復号部211から供給されるスキャン識別子scanIdxによって指定される変換係数のスキャン方法に基づいて、サブブロック(4×4サブブロック)毎に、スイッチ231から供給される変換係数Coeff_IQを1×16次元のベクトルX1dに変換する。ラスタライズ部241は、得られたベクトルX1dを行列演算部242に供給する。なお、変換係数のスキャン方法に関する情報であるスキャン識別子scanIdxと対応する各スキャン方法については、図7を参照して上述した通りである。
例えば、逆変換部213に供給される変換係数Coeff_IQが、以下の式(24)に示されるような4×4行列であるとする。
変換スキップフラグts_flagが0であり、スキャン識別子scanIdxが水平スキャンhorを示す場合、ラスタライズ部241は、変換係数Coeff_IQを図7のBに示される水平スキャンの係数のスキャン順に沿ってスキャンし、以下の式(25)に示されるような1×16次元のベクトルX1dに変換する。そして、ラスタライズ部241は、得られたベクトルX1dを行列演算部242に供給する。
逆セカンダリ変換選択部245は、復号部211から供給される、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxにより指定される逆セカンダリ変換の行列IR(=RT)を、逆セカンダリ変換選択部245の内部メモリ(不図示)より読み出し、行列演算部242に供給する。例えば、逆セカンダリ変換選択部245は、あるセカンダリ変換識別子st_idxの値のとき、逆セカンダリ変換の行列IRとして、図8に示される16×16の行列Rの転置行列RTを読み出し、それを行列演算部242に供給する。
なお、逆セカンダリ変換選択部245が、例えば、復号部211から供給されるセカンダリ変換識別子st_idxやイントラ予測モード情報IPinfo(例えば、イントラ予測モード番号)に応じて、逆セカンダリ変換の行列IR(=RT)を選択するようにしてもよい。また、イントラ予測モード情報IPinfoの代わりに、動き予測情報MVinfoとセカンダリ変換識別子st_idxに応じて、逆変換IRが選択されるようにしてもよい。
行列演算部242は、サブブロック(4×4サブブロック)毎に、1×16次元のベクトルX1dおよび逆セカンダリ変換の行列IR(=RT)を用いて、以下の式(26)に示されるような行列演算を行い、その結果としてベクトルY1dを導出する。
Y1d
T=IR・X1d
T=RT・X1d
T
・・・(26)
ここで、演算子"T"は、転置行列の操作を表す。例えば、行列演算部242は、上述した式(25)に示されるベクトルX1dと図8に示されるセカンダリ変換の行列Rの転置行列RTとを用いて、式(26)に示されるような行列積を行い、以下の式(27)に示されるようなベクトルY1dを導出する。行列演算部242は、得られたベクトルY1dをスケーリング部243に供給する。
スケーリング部243は、サブブロック(4×4サブブロック)毎に、行列演算部242から供給される信号Y1dのノルムを正規化するために、以下の式(28)に示されるよなN(Nは自然数)ビットのビットシフト演算を信号Y1dのすべての要素に対して行い、ビットシフト後の信号Z1dを求める。
Z1d=(Y1d)>>N
・・・(28)
なお、以下の式(29)に示されるように、Nビットのシフト演算前に、オフセットとして、1<<(N-1)の値が、信号Z1dの各要素に加算されるようにしてもよい。なお、式(29)において、ベクトルEは、すべての要素の値が1の1×16次元のベクトルである。
Z1d=(Y1d+((N-1)<<1)・E)>>N
・・・(29)
例えば、図8に示される逆セカンダリ変換の行列IR(=RT)は、8ビットスケーリングされた行列であるため、スケーリング部243において、ノルムの正規化に用いられるNの値は8である。
例えば、式(29)において、N=8として演算した結果(信号Z1d)は、以下の式(30)のようになる。
一般的に、逆セカンダリ変換の行列IR(=RT)が、Nビットスケーリングされている場合、ノルム正規化のビットシフト量は、Nビットである。
行列化部244は、サブブロック(4×4サブブロック)毎に、ノルム正規化後の信号Z1dおよびスキャン識別子scanIdxを入力とし、復号部211から供給されるスキャン識別子scanIdxによって指定されるスキャン方法に基づいて、スケーリング部243から供給される1×16次元のベクトルZ1dを4×4行列のプライマリ変換係数Coeff_ISに変換する。
例えば、行列化部244は、式(30)に示される1×16次元のベクトルZ1dを、図7のBに示される水平スキャンに基づいて行列化し、以下の式(31)に示されるような4×4行列のプライマリ変換係数Coeff_ISを得る。
行列化部244は、得られたプライマリ変換係数Coeff_ISを逆プライマリ変換部233に供給する。
<画像復号処理の流れ>
次に、以上のような画像復号装置200により実行される各処理の流れについて説明する。最初に、図13のフローチャートを参照して、画像復号処理の流れの例を説明する。
画像復号処理が開始されると、ステップS201において、復号部211は、画像復号装置200に供給されるビットストリーム(符号化データ)を復号し、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfo、量子化変換係数レベルlevel等の情報を得る。
ステップS202において、逆量子化部212は、ステップS201の処理により得られた量子化変換係数レベルlevelを逆量子化して変換係数Coeff_IQを導出する。この逆量子化は、画像符号化処理のステップS105(図9)において行われる量子化の逆処理であり、画像符号化処理のステップS106(図9)において行われる逆量子化と同様の処理である。
ステップS203において、逆変換部213は、ステップS202の処理により得られた変換係数Coeff_IQを逆変換し、予測残差D'を導出する。この逆変換は、画像符号化処理のステップS104(図9)において行われる変換処理の逆処理であり、画像符号化処理のステップS107(図9)において行われる逆変換と同様の処理である。
ステップS204において、予測部216は、予測モード情報PInfoに基づいて、符号化の際の予測と同一の予測モードで予測を行い、予測画像生成する。
ステップS205において、演算部214は、ステップS203の処理により得られた予測残差D’に、ステップS204の処理により得られた予想画像を加算し、復号画像を得る。
ステップS205の処理が終了すると、画像復号処理が終了される。
<逆変換処理の流れ>
次に、図13のステップS203において実行される逆変換処理の流れの例を、図14のフローチャートを参照して説明する。
逆変換処理が開始されると、ステップS221において、スイッチ231は、変換スキップフラグts_flagが1(真)であるか否かを判定する。変換スキップフラグts_flagが1(真)である(変換スキップフラグts_flagが逆変換処理のスキップを示す)と判定された場合、逆セカンダリ変換および逆プライマリ変換(ステップS222乃至ステップS230の処理)がスキップされ、逆変換処理が終了し、処理は図13に戻る。つまり、スイッチ231は、変換係数Coeff_IQを、予測残差D’として演算部214に供給する。また、変換スキップフラグts_flagが0(偽)である(変換スキップフラグts_flagが逆変換処理の実行を示す)と判定された場合、処理はステップS222に進む。
なお、ステップS221において、スイッチ231が、さらに、変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定するようにしてもよい。その際、変換量子化バイパスフラグtransquant_bypass_flagが1(真)である(変換量子化バイパスフラグtransquant_bypass_flagが逆量子化処理および逆変換処理のスキップを示す)と判定された場合、逆セカンダリ変換および逆プライマリ変換(ステップS222乃至ステップS230の処理)がスキップされ、逆変換処理が終了し、処理は図13に戻る。つまり、スイッチ231は、変換係数Coeff_IQを、予測残差D'として演算部214に供給する。また、変換量子化バイパスフラグtransquant_bypass_flagが0(偽)である(変換量子化バイパスフラグtransquant_bypass_flagが逆量子化処理および逆変換処理の実行を示す)と判定された場合、処理はステップS222に進む。
ステップS222において、逆セカンダリ変換部232は、セカンダリ変換識別子st_idxが逆セカンダリ変換を適用するか否か(st_idx>0)を判定する。セカンダリ変換識別子st_idxが0である(セカンダリ変換識別子st_idxが逆セカンダリ変換のスキップを示す)と判定された場合、逆セカンダリ変換(ステップS223乃至ステップS229の処理)がスキップされ、処理はステップS230に進む。つまり、逆セカンダリ変換部232は、変換係数Coeff_IQをプライマリ変換係数Coeff_Pとして、逆プライマリ変換部233に供給する。
また、ステップS222において、セカンダリ変換識別子st_idxが0より大きい(セカンダリ変換識別子st_idxが逆セカンダリ変換の実行を示す)と判定された場合、処理はステップS223に進む。ステップS223乃至ステップS229の処理により逆セカンダリ変換が実行される。
ステップS223において、逆セカンダリ変換選択部245は、セカンダリ変換識別子st_idxにより指定される逆セカンダリ変換の行列IRを選択する。
ステップS224において、逆セカンダリ変換部232は、処理対象の変換ブロックに含まれる未処理のサブブロックを選択する。
ステップS225において、ラスタライズ部241は、スキャン識別子scanIdxにより指定されるスキャン方法に基づいて、変換係数Coeff_IQを1×16次元のベクトルX1dに変換する。
ステップS226において、行列演算部242は、ベクトルX1dと逆セカンダリ変換の行列IRとの行列積を演算し、ベクトルY1dを求める。
ステップS227において、スケーリング部243は、ベクトルY1dのノルムを正規化し、ベクトルZ1dを求める。
ステップS228において、行列化部244は、スキャン識別子scanIdxにより指定されるスキャン方法に基づいて、ベクトルZ1dを4×4の行列へ変換し、処理対象のサブブロックのプライマリ変換係数Coeff_Pを求める。
ステップS229において、逆セカンダリ変換部232は、処理対象の変換ブロックの全てのサブブロックを処理したか否かを判定する。未処理のサブブロックが存在すると判定された場合、処理はステップS224に戻り、それ以降の処理を繰り返す。つまり、処理対象の変換ブロックの各サブブロックについて、ステップS224乃至ステップS229の各処理(逆セカンダリ変換)が実行される。ステップS229において、全てのサブブロックを処理した(全てのサブブロックの逆セカンダリ変換を行った)と判定された場合、処理はステップS230に進む。
ステップS230において、逆プライマリ変換部233は、プライマリ変換識別子pt_idxに基づいて、プライマリ変換係数Coeff_Pに対する逆プライマリ変換を行い、予測残差D’を導出する。この予測残差D’は、演算部214に供給される。
ステップS230の処理が終了すると、逆変換処理が終了し、処理は図13に戻る。
なお、以上の逆変換処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップS222においてセカンダリ変換識別子st_idxが0であると判定された場合、16×16の単位行列が逆セカンダリ変換の行列IRとして選択され、ステップS223乃至ステップS229の各処理が実行されるようにしてもよい。
以上のように各処理を実行することにより、画像復号装置200は、変換スキップフラグts_flagにより変換処理のスキップを示すことにより逆プライマリ変換だけでなく逆セカンダリ変換もスキップすることができる。したがって、例えば、変換スキップを適用するのが望ましい非ゼロ係数の数が少ない疎な残差信号に対して、逆変換の処理量の低減、及びエナジーコンパクションの低下を抑制し、符号化効率の向上した逆変換処理を行うことができる。
<2.第2の実施の形態>
<変換スキップフラグの符号化・復号のスキップ>
非特許文献1に記載の技術(JEM2)では、セカンダリ変換識別子st_idxは、CU単位で符号化され、変換スキップフラグts_flagは、CUに含まれる各変換ブロック単位で符号化される。
例えば、この技術(JEM2)に対して第1の実施の形態において説明した本技術を適用し、変換スキップフラグts_flagが1である(変換スキップを適用する)場合に(逆)プライマリ変換および(逆)セカンダリ変換をスキップするようにする。この場合、セカンダリ変換識別子st_idxがセカンダリ変換の実行を示す場合、そのCUにおいて変換スキップフラグts_flagが(逆)変換処理のスキップを示すことはできず、変換スキップフラグts_flagは0に決定する。つまり、この場合、変換スキップフラグts_flagの符号化は冗長となる。したがって、符号化効率が低減するおそれがあった。
そこで、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対してセカンダリ変換が行われる場合、そのプライマリ変換のスキップに関する第1の情報の符号化をスキップするようにする。
このようにすることにより、セカンダリ変換が行われる場合に第1の情報の符号化をスキップすることができるようになるので、符号化効率の低減を抑制することができる。
また、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換が行われる場合、プライマリ変換の逆変換である逆プライマリ変換のスキップに関する第1の情報の符号化データの復号をスキップするようにする。
このようにすることにより、逆セカンダリ変換が行われる場合に第1の情報の符号化データの復号をスキップすることができるようになるので、符号化効率の低減を抑制することができる。
<シンタクス>
このような制御を表す疑似コードを記載したシンタクステーブルの例を図15に示す。図15の上から4段目に示されるように、変換スキップフラグts_flagの符号化(すなわち、変換スキップフラグts_flagの符号化データの復号)は、セカンダリ変換識別子st_idxが0であることが条件の1つとなる。つまり、セカンダリ変換識別子st_idxが0でない場合、すなわち、(逆)セカンダリ変換が実行される場合、変換スキップフラグts_flagの符号化(変換スキップフラグts_flagの符号化データの復号)がスキップされる。
<符号化部>
この場合も画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像符号化装置100は、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対してセカンダリ変換が行われる場合、プライマリ変換のスキップに関する第1の情報の符号化をスキップする符号化部を備える。つまり、この場合の符号化部114は、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対してセカンダリ変換が行われる場合、プライマリ変換のスキップに関する第1の情報の符号化をスキップする。
図16は、この場合の符号化部114がプログラム等を実行することにより実現する、変換スキップフラグts_flagの符号化に関する主な機能の例を示す機能ブロック図である。図16に示されるように、符号化部114は、プログラムを実行することにより、変換スキップフラグts_flagの符号化に関する機能として、例えば、セカンダリ変換有効フラグ符号化部301、セカンダリ変換識別子符号化部302、変換スキップ有効フラグ符号化部303、最大変換スキップブロックサイズ符号化部304、変換量子化バイパスフラグ符号化部305、および変換スキップフラグ符号化部306の機能を有することができる。
セカンダリ変換有効フラグ符号化部301は、セカンダリ変換の許可に関する情報であるセカンダリ変換有効フラグst_enabled_flagの符号化に関する処理を行う。セカンダリ変換識別子符号化部302は、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxの符号化に関する処理を行う。変換スキップ有効フラグ符号化部303は、変換(プライマリ変換)のスキップの許可に関する情報である変換スキップ有効フラグts_enabled_flagの符号化に関する処理を行う。最大変換スキップブロックサイズ符号化部304は、変換(プライマリ変換)のスキップが許可される変換ブロックの最大サイズを示す最大変換スキップブロックサイズMaxTSSizeの符号化に関する処理を行う。変換量子化バイパスフラグ符号化部305は、変換(プライマリ変換およびセカンダリ変換)並びに量子化のスキップ(バイパス)に関する情報である変換量子化バイパスフラグtransquant_bypass_flagの符号化に関する処理を行う。変換スキップフラグ符号化部306は、変換(プライマリ変換)のスキップに関する情報である変換スキップフラグts_flagの符号化に関する処理を行う。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、変換スキップフラグts_flag等の符号化を、セカンダリ変換識別子st_idxの値等に応じて行う。この変換スキップフラグts_flag等の符号化の流れの例を図17のフローチャートを参照して説明する。つまり、図17に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
符号化処理が開始されると、ステップS301において、セカンダリ変換有効フラグ符号化部301は、ヘッダ情報Hinfoに含まれるセカンダリ変換有効フラグst_enabled_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られたセカンダリ変換有効フラグst_enabled_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
ステップS302において、セカンダリ変換識別子符号化部302は、ヘッダ情報Hinfoに含まれるセカンダリ変換有効フラグst_enabled_flagが1(真)であるか否かを判定する。セカンダリ変換有効フラグst_enabled_flagが1であると判定された場合、すなわち、セカンダリ変換の実行が許可されていると判定された場合、処理はステップS303に進む。
ステップS303において、セカンダリ変換識別子符号化部302は、セカンダリ変換識別子st_idxを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られたセカンダリ変換識別子st_idxの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。ステップS303の処理が終了すると、処理はステップS304に進む。
また、ステップS302において、セカンダリ変換有効フラグst_enabled_flagが0(偽)であると判定された場合、すなわち、セカンダリ変換の実行が許可されていないと判定された場合、ステップS303の処理がスキップされ、処理はステップS304に進む。
セカンダリ変換が行われないのであれば、セカンダリ変換識別子st_idxは不要である。したがって、この場合、セカンダリ変換識別子符号化部302は、セカンダリ変換識別子st_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS304において、変換スキップ有効フラグ符号化部303は、ヘッダ情報HInfoに含まれる変換スキップ有効フラグts_enabled_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られた変換スキップ有効フラグts_enabled_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
ステップS305において、最大変換スキップブロックサイズ符号化部304は、ヘッダ情報Hinfoに含まれる変換スキップ有効フラグts_enabled_flagが、1(真)であるか否かを判定する。変換スキップ有効フラグts_enabled_flagが1であると判定された場合、すなわち、変換スキップ(プライマリ変換およびセカンダリ変換のスキップ)が許可されていると判定された場合、処理はステップS306に進む。
ステップS306において、最大変換スキップブロックサイズ符号化部304は、最大変換スキップブロックサイズMaxTSSize(または、2を底とする対数値log2MaxTSSize)を符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られた最大変換スキップブロックサイズMaxTSSizeの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。ステップS306の処理が終了すると処理はステップS307に進む。
また、ステップS305において、変換スキップ有効フラグts_enabled_flagが0であると判定された場合、すなわち、変換スキップが許可されていないと判定された場合、ステップS306の処理がスキップされ、処理はステップS307に進む。
変換スキップを行うことができなければ、最大変換スキップブロックサイズMaxTSSize(またはlog2MaxTSSize)は不要である。したがって、この場合、最大変換スキップブロックサイズ符号化部304は、最大変換スキップブロックサイズMaxTSSize(またはlog2MaxTSSize)の符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS307において、変換量子化バイパスフラグ符号化部305は、変換量子化バイパスフラグtransquant_bypass_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られた変換量子化バイパスフラグtransquant_bypass_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
ステップS308において、変換スキップフラグ符号化部306は、変換情報Tinfoに含まれる変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定する。変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、変換(プライマリ変換およびセカンダリ変換)並びに量子化をスキップ(バイパス)すると判定された場合、ステップS309乃至ステップS312の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換および量子化がバイパスされるのであれば、変換スキップフラグts_flagは不要である。したがって、この場合、変換スキップフラグ符号化部306は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS308において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、変換および量子化をスキップ(バイパス)しないと判定された場合、処理はステップS309に進む。
ステップS309において、変換スキップフラグ符号化部306は、セカンダリ変換識別子st_idxの値が0より大きいか否か(st_idx>0)を判定する。セカンダリ変換識別子st_idxの値が0より大きい、すなわち、セカンダリ変換が実行されると判定された場合、ステップS310乃至ステップS312の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
セカンダリ変換が実行されるのであれば、変換スキップは行われないので、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagを復号側に伝送する必要がないので、変換スキップフラグ符号化部306は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS309において、セカンダリ変換識別子st_idxの値が0である、すなわち、セカンダリ変換がスキップされると判定された場合、処理はステップS310に進む。
ステップS310において、変換スキップフラグ符号化部306は、ヘッダ情報HInfoに含まれる変換スキップ有効フラグts_enabled_flagが1(真)であるか否かを判定する。変換スキップ有効フラグts_enabled_flagが0である、すなわち、変換スキップが許可されていないと判定された場合、ステップS311およびステップS312の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換スキップを行うことができなければ、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagを復号側に伝送する必要がないので、変換スキップフラグ符号化部306は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS310において、変換スキップ有効フラグts_enabled_flagが1であると判定された場合、すなわち、変換スキップが許可されていると判定された場合、処理はステップS311に進む。
ステップS311において、変換スキップフラグ符号化部306は、処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSize以下であるか否か(条件式TBSize<=MaxTSSizeが真であるか否か)を判定する。処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSizeより大きいと判定された場合、すなわち、上述の条件式が0(偽)であると判定された場合、ステップS312の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換ブロックのサイズが最大変換スキップブロックサイズより大きい場合、変換スキップが許可されないので、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagを復号側に伝送する必要がないので、変換スキップフラグ符号化部306は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS311において、処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSize以下であると判定された場合、すなわち、上述の条件式が1(真)であると判定された場合、処理はステップS312に進む。
なお、ステップS311において、上述した条件式(TBSize<=MaxTSSize)は、2を底とするTBサイズの対数値log2TrafoSize(またはlog2TBSize)、2を底とする最大変換スキップブロックサイズMaxTSSizeの対数値log2MaxTSSizeを用いて、条件式(log2TrafroSize<=log2MaxTSSize)に置き換えても良い。
ステップS312において、変換スキップフラグ符号化部306は、変換スキップフラグts_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られた変換スキップフラグts_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
つまり、以下の条件式(32)が1(真)となる場合のみ、変換スキップフラグts_flagが符号化される。これは、図15を参照して説明したシンタックスの上から4段目に対応する。
論理値=(ts_enabled_flag &&
!transquant_bypass_flag &&
(log2TrafoSize <= log2MaxTSSize) &&
st_idx==0)
・・・(32)
ステップS312の処理が終了すると、符号化処理が終了し、処理は図9に戻る。
以上のように符号化処理を実行することにより、画像符号化装置100は、CU単位でセカンダリ変換識別子st_idxを符号化する場合において、セカンダリ変換識別子st_idxがセカンダリ変換を適用することを示す場合(st_idx > 0)、変換スキップフラグts_flagの符号化をスキップすることができる。すなわち、変換スキップフラグts_flagに係る符号量の削減、及び符号化にかかる処理量を低減することができる。
なお、上述した符号化処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(32)は、実施可能な範囲で演算を変更可能である。
<復号部>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換が行われる場合、そのプライマリ変換の逆変換である逆プライマリ変換のスキップに関する第1の情報の符号化データの復号をスキップする復号部を備える。つまり、この場合の復号部211は、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換が行われる場合、そのプライマリ変換の逆変換である逆プライマリ変換のスキップに関する第1の情報の符号化データの復号をスキップする。
図18は、この場合の復号部211がプログラム等を実行することにより実現する、変換スキップフラグts_flagの復号に関する主な機能の例を示す機能ブロック図である。図18に示されるように、復号部211は、プログラムを実行することにより、変換スキップフラグts_flagの復号に関する機能として、例えば、セカンダリ変換有効フラグ復号部311、セカンダリ変換識別子復号部312、変換スキップ有効フラグ復号部313、最大変換スキップブロックサイズ復号部314、変換量子化バイパスフラグ復号部315、および変換スキップフラグ復号部316の機能を有することができる。
セカンダリ変換有効フラグ復号部311は、逆セカンダリ変換の許可に関する情報であるセカンダリ変換有効フラグst_enabled_flagの符号化データの復号に関する処理を行う。セカンダリ変換識別子復号部312は、逆セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxの符号化データの復号に関する処理を行う。変換スキップ有効フラグ復号部313は、逆変換(逆プライマリ変換)のスキップの許可に関する情報である変換スキップ有効フラグts_enabled_flagの符号化データの復号に関する処理を行う。最大変換スキップブロックサイズ復号部314は、逆変換(逆プライマリ変換)のスキップが許可される変換ブロックの最大サイズを示す最大変換スキップブロックサイズMaxTSSizeの符号化データの復号に関する処理を行う。変換量子化バイパスフラグ復号部315は、逆変換(逆セカンダリ変換および逆プライマリ変換)並びに逆量子化のスキップ(バイパス)に関する情報である変換量子化バイパスフラグtransquant_bypass_flagの符号化データの復号に関する処理を行う。変換スキップフラグ復号部316は、逆変換(逆プライマリ変換)のスキップに関する情報である変換スキップフラグts_flagの符号化データの復号に関する処理を行う。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、変換スキップフラグts_flag等の符号化データの復号を、セカンダリ変換識別子st_idxの値等に応じて行う。この変換スキップフラグts_flag等の符号化データの復号の流れの例を図19のフローチャートを参照して説明する。つまり、図19に示される復号処理は、図13のステップS201において行われる復号処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化データの復号は任意の方法で行われる。
復号処理が開始されると、ステップS331において、セカンダリ変換有効フラグ復号部311は、ビットストリーム(符号化データ)に含まれるセカンダリ変換有効フラグst_enabled_flagの符号化データを復号し、ヘッダ情報Hinfoの一部として出力する。
ステップS332において、セカンダリ変換識別子復号部312は、その復号されたセカンダリ変換有効フラグst_enabled_flagが、1(真)であるか否かを判定する。セカンダリ変換有効フラグst_enabled_flagが0であると判定された場合、つまり、逆セカンダリ変換の実行が許可されていないと判定された場合、処理はステップS333に進む。
この場合、逆セカンダリ変換はスキップされるので、セカンダリ変換識別子st_idxは符号化されていない。したがって、ステップS333において、セカンダリ変換識別子復号部312は、セカンダリ変換識別子st_idxの符号化データの復号をスキップする。また、この場合、逆セカンダリ変換はスキップされるので、セカンダリ変換識別子st_idxの値は0に固定される。したがって、セカンダリ変換識別子復号部312は、セカンダリ変換識別子st_idxの値が0であると推定する。つまり、セカンダリ変換識別子復号部312は、セカンダリ変換識別子st_idxの値を0に設定する(st_idx=0)。ステップS333の処理が終了すると処理はステップS335に進む。
また、ステップS332において、セカンダリ変換有効フラグst_enabled_flagが1であると判定された場合、処理はステップS334に進む。この場合、逆セカンダリ変換の実行が許可されているので、ステップS334において、セカンダリ変換識別子復号部312は、ビットストリーム(符号化データ)に含まれるセカンダリ変換識別子st_idxの符号化データを復号する。ステップS334の処理が終了すると処理はステップS335に進む。
なお、以上のセカンダリ変換識別子st_idxの復号に係る処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。
ステップS335において、変換スキップ有効フラグ復号部313は、ビットストリーム(符号化データ)に含まれる変換スキップ有効フラグts_enabled_flagの符号化データを復号し、ヘッダ情報Hinfoの一部として出力する。
ステップS336において、最大変換スキップブロックサイズ復号部314は、その復号された変換スキップ有効フラグts_enabled_flagが、1(真)であるか否かを判定する。変換スキップ有効フラグts_enabled_flagが1であると判定された場合、すなわち、逆変換(逆セカンダリ変換および逆プライマリ変換)のスキップが許可されていると判定された場合、処理はステップS337に進む。
ステップS337において、最大変換スキップブロックサイズ復号部314は、ビットストリーム(符号化データ)に含まれる最大変換スキップブロックサイズMaxTSSize(または、2を底とする対数値log2MaxTSSize)の符号化データを復号する。ステップS337の処理が終了すると処理はステップS338に進む。
また、ステップS336において、変換スキップ有効フラグts_enabled_flagが0であると判定された場合、すなわち、逆変換のスキップが許可されていないと判定された場合、逆変換のスキップが行われないのであるから、最大変換スキップブロックサイズMaxTSSizeは不要である。したがって、この場合、ステップS337の処理がスキップされ、処理はステップS338に進む。
ステップS338において、変換量子化バイパスフラグ復号部315は、ビットストリーム(符号化データ)に含まれる変換量子化バイパスフラグtransquant_bypass_flagの符号化データを復号し、変換情報Tinfoの一部として出力する。
ステップS339において、変換スキップフラグ復号部316は、その変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定する。変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、逆変換(逆セカンダリ変換および逆プライマリ変換)並びに逆量子化をスキップ(バイパス)すると判定された場合、ステップS340乃至ステップS342の処理がスキップされ、処理はステップS343に進む。
逆変換および量子化がバイパスされるのであれば、変換スキップフラグts_flagは不要である。したがって、この場合、変換スキップフラグ復号部316は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
また、ステップS339において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、逆変換および量子化をスキップ(バイパス)しないと判定された場合、処理はステップS340に進む。
ステップS340において、変換スキップフラグ復号部316は、セカンダリ変換識別子st_idxの値が0より大きいか否か(st_idx>0)を判定する。セカンダリ変換識別子st_idxの値が0より大きい、すなわち、逆セカンダリ変換が実行されると判定された場合、ステップS341およびステップS342の処理がスキップされ、処理はステップS343に進む。
セカンダリ変換が実行されるのであれば、変換スキップ(逆変換のスキップ)は行われないので、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagは符号化側から伝送されないので、変換スキップフラグ復号部316は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS340において、セカンダリ変換識別子st_idxの値が0である、すなわち、逆セカンダリ変換がスキップされると判定された場合、処理はステップS341に進む。
ステップS341において、変換スキップフラグ復号部316は、ヘッダ情報HInfoに含まれる変換スキップ有効フラグts_enabled_flagが1(真)であるか否かを判定する。変換スキップ有効フラグts_enabled_flagが0であると判定された場合、すなわち、変換スキップが許可されていないと判定された場合、ステップS342の処理がスキップされ、処理はステップS343に進む。
変換スキップ(逆変換のスキップ)を行うことができなければ、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagは符号化側から伝送されないので、変換スキップフラグ復号部316は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS341において、変換スキップ有効フラグts_enabled_flagが1であると判定された場合、すなわち、変換スキップ(逆変換のスキップ)が許可されていると判定された場合、処理はステップS342に進む。
ステップS342において、変換スキップフラグ復号部316は、処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSize以下であるか否か(条件式TBSize<=MaxTSSizeが真であるか否か)を判定する。処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSizeより大きいと判定された場合、すなわち、上述の条件式が0(偽)であると判定された場合、処理はステップS343に進む。
変換ブロックのサイズが最大変換スキップブロックサイズより大きい場合、変換スキップが許可されないので、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagは符号化側から伝送されないので、変換スキップフラグ復号部316は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。なお、ステップS342において、上述した条件式(TBSize <= MaxTSSize)は、2を底とするTBサイズの対数値log2TrafoSize(あるいは、log2TBSize)、2を底とする最大変換スキップブロックサイズMaxTSSizeの対数値log2MaxTSSizeを用いて、条件式(log2TrafroSize <= log2MaxTSSize)に置き換えても良い。
ステップS343において、変換スキップフラグ復号部316は、変換スキップフラグts_flagの符号化データの復号をスキップする。また、この場合、変換スキップ(逆変換のスキップ)は行われない、すなわち、逆変換が実行されるので、変換スキップフラグts_flagの値は0に固定される。したがって、変換スキップフラグ復号部316は、変換スキップフラグts_flagの値が0であると推定する。つまり、変換スキップフラグ復号部316は、変換スキップフラグts_flagの値を0に設定する(ts_flag=0)。ステップS343の処理が終了すると復号処理が終了し、処理は、図13に戻る。
また、ステップS342において、処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSize以下であると判定された場合、すなわち、上述の条件式が1(真)であると判定された場合、処理はステップS344に進む。
ステップS344において、変換スキップフラグ復号部316は、変換スキップフラグts_flagの符号化データを復号する。
つまり、上述の条件式(32)が1(真)となる場合のみ、変換スキップフラグts_flagの符号化データが復号される。これは、図15を参照して説明したシンタックスの上から4段目に対応する。
ステップS344の処理が終了すると、復号処理が終了し、処理は、図13に戻る。
以上のように復号処理を実行することにより、画像復号装置200は、CU単位でセカンダリ変換識別子st_idxが符号化される場合において、そのセカンダリ変換識別子st_idxが逆セカンダリ変換の実行を示す場合(st_idx > 0)、変換スキップフラグts_flagの符号化データの復号をスキップすることができる。すなわち、変換スキップフラグts_flagに係る符号量の削減、及び復号にかかる処理量を低減することができる。
なお、上述した復号処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(32)は、実施可能な範囲で演算を変更可能である。
<3.第3の実施の形態>
<セカンダリ変換フラグの符号化・復号のスキップ>
非特許文献2には、非特許文献1に記載の技術(JEM2)においてCU単位で復号されるセカンダリ変換識別子st_idxが、変換ブロック単位で復号されるセカンダリ変換を適用するか否かを示すセカンダリ変換フラグst_flagと、PU単位で復号されるイントラ予測モード情報IPinfoに基づいて、変換ブロック単位で導出されることが記載されている。
例えば、この非特許文献2に記載の技術に対して第1の実施の形態において説明した本技術を適用し、変換スキップフラグts_flagが1である(変換スキップを適用する)場合に(逆)プライマリ変換および(逆)セカンダリ変換をスキップするようにする。この場合、変換ブロック単位で復号される変換スキップフラグts_flagが、(逆)変換処理のスキップの実行を示す場合(ts_flag=1)、(逆)セカンダリ変換がスキップされるので、そのセカンダリ変換の実行に関する情報であるセカンダリ変換フラグst_flagの符号化が冗長となる。したがって、符号化効率が低減するおそれがあった。
そこで、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換がスキップされる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップするようにする。
このようにすることにより、プライマリ変換がスキップされる場合に第1の情報の符号化をスキップすることができるようになるので、符号化効率の低減を抑制することができる。
また、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換がスキップされる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップするようにする。
このようにすることにより、逆プライマリ変換がスキップされる場合に第1の情報の符号化データの復号をスキップすることができるようになるので、符号化効率の低減を抑制することができる。
<シンタクス>
このような制御を表す疑似コードを記載したシンタクステーブルの例を図20に示す。図20の上から7段目に示されるように、セカンダリ変換フラグst_flagの符号化(すなわち、セカンダリ変換フラグst_flagの符号化データの復号)は、変換スキップフラグts_flagが0であることが条件の1つとなる。つまり、変換スキップフラグts_flagが1の場合、すなわち、(逆)プライマリ変換がスキップされる場合、セカンダリ変換フラグst_flagの符号化(セカンダリ変換フラグst_flagの符号化データの復号)がスキップされる。
また、変換量子化バイパスフラグtransquant_bypass_flagが0であることも、セカンダリ変換フラグst_flagの符号化(すなわち、セカンダリ変換フラグst_flagの符号化データの復号)の条件の1つとなる。つまり、変換量子化バイパスフラグtransquant_bypass_flagが1の場合、すなわち、(逆)変換および(逆)量子化がスキップされる場合、セカンダリ変換フラグst_flagの符号化(セカンダリ変換フラグst_flagの符号化データの復号)がスキップされる。
<符号化部>
この場合も画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。つまり、第1の実施の形態において説明した画像符号化装置100が、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換がスキップされる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする符号化部を備える。つまり、この場合の符号化部114は、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換がスキップされる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする。
図21は、この場合の符号化部114がプログラム等を実行することにより実現する、セカンダリ変換フラグst_flagの符号化に関する主な機能の例を示す機能ブロック図である。図21に示されるように、この場合の符号化部114は、プログラムを実行することにより、セカンダリ変換フラグst_flagの符号化に関する機能として、例えば、第2の実施の形態において説明した符号化部114と同様の、セカンダリ変換有効フラグ符号化部301、変換スキップ有効フラグ符号化部303、最大変換スキップブロックサイズ符号化部304、変換量子化バイパスフラグ符号化部305、および変換スキップフラグ符号化部306の機能を有することができる。さらに、符号化部114は、プログラムを実行することにより、セカンダリ変換フラグst_flagの符号化に関する機能として、例えば、セカンダリ変換フラグ符号化部321の機能を有することができる。
セカンダリ変換フラグ符号化部321は、セカンダリ変換の実行に関する情報であるセカンダリ変換フラグst_flagの符号化に関する処理を行う。例えば、セカンダリ変換フラグst_flagが1(真)の場合、セカンダリ変換が実行される。また、例えば、セカンダリ変換フラグst_flagが0(偽)の場合、セカンダリ変換がスキップされる。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、セカンダリ変換フラグst_flag等の符号化を、変換スキップフラグts_flagの値等に応じて行う。このセカンダリ変換フラグst_flag等の符号化の流れの例を図22および図23のフローチャートを参照して説明する。つまり、図22および図23に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
符号化処理が開始されると、図22のステップS361乃至ステップS368の各処理が、ステップS304乃至ステップS308、並びに、ステップS310乃至ステップS312の各処理(図17)と同様に実行される。
なお、ステップS365において、変換(プライマリ変換およびセカンダリ変換)並びに量子化のスキップ(バイパス)に関する情報である変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、変換(プライマリ変換およびセカンダリ変換)並びに量子化をスキップ(バイパス)すると判定された場合、処理は図23のステップS371に進む。また、ステップS365において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、変換および量子化をスキップ(バイパス)しないと判定された場合、処理はステップS366に進む。
また、ステップS366において、変換(プライマリ変換)のスキップの許可に関する情報である変換スキップ有効フラグts_enabled_flagが0である、すなわち、変換スキップが許可されていないと判定された場合、処理は図23のステップS371に進む。また、ステップS366において、変換スキップ有効フラグts_enabled_flagが1である、すなわち、変換スキップが許可されていると判定された場合、処理はステップS367に進む。
また、ステップS367において、処理対象の変換ブロックのサイズTBSizeが、変換(プライマリ変換)のスキップが許可される変換ブロックの最大サイズである最大変換スキップブロックサイズMaxTSSizeより大きいと判定された場合、処理は図23のステップS371に進む。また、ステップS367において、処理対象の変換ブロックのサイズTBSizeが最大変換スキップブロックサイズMaxTSSize以下であると判定された場合、処理はステップS368に進む。
ステップS368において変換(プライマリ変換)のスキップに関する情報である変換スキップフラグts_flagが生成され、その処理が終了すると、処理は図23のステップS371に進む。
図23のステップS371において、セカンダリ変換有効フラグ符号化部301は、ヘッダ情報Hinfoに含まれる、セカンダリ変換の許可に関する情報であるセカンダリ変換有効フラグst_enabled_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られたセカンダリ変換有効フラグst_enabled_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
ステップS372において、セカンダリ変換フラグ符号化部321は、ヘッダ情報Hinfoに含まれるセカンダリ変換有効フラグst_enabled_flagが1(真)であるか否かを判定する。セカンダリ変換有効フラグst_enabled_flagが0であると判定された場合、すなわち、セカンダリ変換の実行が許可されていないと判定された場合、ステップS373乃至ステップS377の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
セカンダリ変換が行われないのであれば、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagを復号側に伝送する必要がないので、セカンダリ変換フラグ符号化部321は、セカンダリ変換フラグst_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS372において、セカンダリ変換有効フラグst_enabled_flagが1であると判定された場合、すなわち、セカンダリ変換の実行が許可されていると判定された場合、処理はステップS373に進む。
ステップS373において、セカンダリ変換フラグ符号化部321は、変換量子化バイパスフラグtransquant_bypass_flagが、1(真)であるか否かを判定する。変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、変換(プライマリ変換およびセカンダリ変換)並びに量子化をスキップ(バイパス)すると判定された場合、ステップS374乃至ステップS377の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換および量子化がバイパスされるのであれば、セカンダリ変換フラグst_flagは不要である。したがって、この場合、変換スキップフラグ符号化部306は、セカンダリ変換フラグst_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS373において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、変換および量子化をスキップ(バイパス)しないと判定された場合、処理はステップS374に進む。
ステップS374において、セカンダリ変換フラグ符号化部321は、変換スキップフラグts_flagが、1(真)であるか否かを判定する。変換スキップフラグts_flagが1であると判定された場合、すなわち、変換(プライマリ変換)をスキップすると判定された場合、ステップS375乃至ステップS377の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
プライマリ変換がスキップされる場合、セカンダリ変換もスキップされる。したがってセカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagを復号側に伝送する必要がないので、セカンダリ変換フラグ符号化部321は、セカンダリ変換フラグst_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS374において、変換スキップフラグts_flagが0であると判定された場合、すなわち、変換(プライマリ変換)を実行すると判定された場合、処理はステップS375に進む。
ステップS375において、セカンダリ変換フラグ符号化部321は、残差情報Rinfoを参照して、変換ブロック内に存在する非ゼロ係数をカウントし、その総数numSig(sig_coeff_flag==1の総数)を求める。
ステップS376において、セカンダリ変換フラグ符号化部321は、非ゼロ係数の総数numSigが所定の閾値TH以上であるか否か(numSig >= TH)を判定する。非ゼロ係数の総数numSigが所定の閾値THより少ない(numSig < TH)と判定された場合、ステップS377の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
非ゼロ係数の総数numSigが所定の閾値THより少ない場合、すなわち、非ゼロ係数が少ない疎な残差信号の場合、セカンダリ変換によりエナジーコンパクションが低下し、符号化効率が低減するおそれがあるので、符号化効率の低減を抑制するためには、セカンダリ変換をスキップするのが望ましい。つまり、この場合、セカンダリ変換をスキップするように制御される。したがって、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagを復号側に伝送する必要がないので、セカンダリ変換フラグ符号化部321は、セカンダリ変換フラグst_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS376において、非ゼロ係数の総数numSigが所定の閾値TH以上であると判定された場合、処理はステップS377に進む。
ステップS377において、セカンダリ変換フラグ符号化部321は、セカンダリ変換フラグst_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られたセカンダリ変換フラグst_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
つまり、以下の条件式(33)が1(真)となる場合のみ、セカンダリ変換フラグst_flagが符号化される。これは、図20を参照して説明したシンタックスの上から7段目に対応する。
論理値=(st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSig >= TH)
・・・(33)
ステップS377の処理が終了すると、符号化処理が終了し、処理は図9に戻る。
以上のように符号化処理を実行することにより、画像符号化装置100は、変換ブロック単位でセカンダリ変換フラグst_flagを符号化する場合において、変換スキップを適用する場合(ts_flag=1)、セカンダリ変換フラグst_flagの符号化をスキップすることができる。また、画像符号化装置100は、変換および量子化のバイパスを適用する場合(transquant_bypass_flag=1)、セカンダリ変換フラグst_flagの符号化をスキップすることができる。すなわち、セカンダリ変換フラグst_flagに係る符号量の削減、及び符号化に係る処理量を低減することができる。
なお、上述した符号化処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(33)は、実施可能な範囲で演算を変更可能である。
上述の例では、変換ブロック単位でセカンダリ変換フラグst_flagの符号化処理について説明したが、セカンダリ変換フラグst_flagの代わりに、セカンダリ変換識別子st_idxを符号化してもよい。この場合、図20に示すシンタクステーブルの上から8段目に示される、セカンダリ変換フラグst_flagをセカンダリ変換識別子st_idxへ置き換える。また、同様に、図21において、セカンダリ変換フラグ符号化部321を、図16に示すセカンダリ変換識別子st_idxの符号化に関する機能を有するセカンダリ変換識別子符号化部302へ置きかえる。同様に、図23のフローチャートにおける各ステップにおいて、セカンダリ変換フラグst_flagの部分を、セカンダリ変換識別子st_idxへ置き換えて解釈する。
以上のように符号化処理を実行することにより、画像符号化装置100は、変換ブロック単位でセカンダリ変換識別子st_idxを符号化する場合において、変換スキップを適用する場合(ts_flag=1)、セカンダリ変換識別子st_idxの符号化をスキップすることができる。また、画像符号化装置100は、変換および量子化のバイパスを適用する場合(transquant_bypass_flag=1)、セカンダリ変換識別子st_idxの符号化をスキップすることができる。すなわち、セカンダリ変換識別子st_idxに係る符号量の削減、及び符号化に係る処理量を低減することができる。
また、上述の条件式(33)に限定されず、輝度の場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を符号化するように、下記条件式(34)へ変更してもよい。すなわち、色空間を示す識別子cIdxが輝度の値Luma (=0)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の符号化をし、cIdxが色差の値Cb(=1)またはCr(=2)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の符号化を省略する。
論理値=(cIdx==Luma && st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSig >= TH)
・・・(34)
また、上述の条件式(33)に限定されず、イントラの場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を符号化するように、下記条件式(35)へ変更してもよい。すなわち、CUの予測モードを示すCuPredMode[x0][y0]がイントラ予測(=MODE_INTRA)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を符号化し、インター予測の場合、符号化を省略する。
論理値=(CuPredMode[x0][y0]==MODE_INTRA && st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSig >= TH)
・・・(35)
なお、条件式(33)乃至(35)の条件は、それぞれ組み合わせてもよい。
<復号部>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換がスキップされる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする復号部を備える。つまり、この場合の復号部211は、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換がスキップされる場合、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする。
図24は、この場合の復号部211がプログラム等を実行することにより実現する、セカンダリ変換フラグst_flagの復号に関する主な機能の例を示す機能ブロック図である。図24に示されるように、この場合の復号部211は、プログラムを実行することにより、セカンダリ変換フラグst_flagの復号に関する機能として、例えば、第2の実施の形態において説明した復号部211と同様の、セカンダリ変換有効フラグ復号部311、変換スキップ有効フラグ復号部313、最大変換スキップブロックサイズ復号部314、変換量子化バイパスフラグ復号部315、および変換スキップフラグ復号部316の機能を有することができる。さらに、復号部211は、プログラムを実行することにより、セカンダリ変換フラグst_flagの復号に関する機能として、例えば、セカンダリ変換フラグ復号部331の機能を有することができる。
セカンダリ変換フラグ復号部331は、逆セカンダリ変換の実行に関する情報であるセカンダリ変換フラグst_flagの符号化データの復号に関する処理を行う。例えば、セカンダリ変換フラグst_flagが1(真)の場合、逆セカンダリ変換が実行される。また、例えば、セカンダリ変換フラグst_flagが0(偽)の場合、逆セカンダリ変換がスキップされる。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、セカンダリ変換フラグst_flag等の符号化データの復号を、変換スキップフラグts_flagの値等に応じて行う。このセカンダリ変換フラグst_flag等の符号化データの復号の流れの例を図25および図26のフローチャートを参照して説明する。つまり、図25および図26に示される符号化処理は、図13のステップS201において行われる復号処理の一部として実行される。
復号処理が開始されると、図25のステップS381乃至ステップS389の各処理が、ステップS335乃至ステップS339、並びに、ステップS341乃至ステップS344の各処理(図19)と同様に実行される。
なお、ステップS385において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、変換および量子化をスキップ(バイパス)しないと判定された場合、処理はステップS386に進む。
また、ステップS388において、変換スキップフラグts_flagが0と推定され、変換スキップフラグts_flagが0に設定されると、処理は図26のステップS391に進む。同様に、ステップS389において、変換スキップフラグts_flagの符号化データが復号されると、処理は図26のステップS391に進む。
図26のステップS391において、セカンダリ変換有効フラグ復号部311は、ビットストリーム(符号化データ)に含まれるセカンダリ変換有効フラグst_enabled_flagの符号化データを復号し、ヘッダ情報Hinfoの一部として出力する。
ステップS392において、セカンダリ変換フラグ復号部331は、その復号されたセカンダリ変換有効フラグst_enabled_flagが、1(真)であるか否かを判定する。セカンダリ変換有効フラグst_enabled_flagが0であると判定された場合、つまり、逆セカンダリ変換の実行が許可されていないと判定された場合、ステップS393乃至ステップS396の処理がスキップされ、処理はステップS397に進む。
逆セカンダリ変換が許可されていないであれば、逆セカンダリ変換はスキップされる。すなわち、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagは符号化側から伝送されないので、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS392において、セカンダリ変換有効フラグst_enabled_flagが1であると判定された場合、つまり、逆セカンダリ変換の実行が許可されていると判定された場合、処理はステップS393に進む。
ステップS393において、セカンダリ変換フラグ復号部331は、変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定する。変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、逆変換(逆セカンダリ変換および逆プライマリ変換)並びに逆量子化をスキップ(バイパス)すると判定された場合、ステップS394乃至ステップS396の処理がスキップされ、処理はステップS397に進む。
逆変換および逆量子化がバイパスされるのであれば、セカンダリ変換フラグst_flagは不要である。したがって、この場合、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS393において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、逆変換および逆量子化をスキップ(バイパス)しないと判定された場合、処理はステップS394に進む。
ステップS394において、セカンダリ変換フラグ復号部331は、変換スキップフラグts_flagが1(真)であるか否かを判定する。変換スキップフラグts_flagが1(真)であると判定された場合、すなわち、逆変換(逆プライマリ変換)をスキップすると判定された場合、ステップS395およびステップS396の処理がスキップされ、処理はステップS397に進む。
逆プライマリ変換がスキップされるのであれば、逆セカンダリ変換もスキップされる。すなわち、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagは符号化側から伝送されないので、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS394において、変換スキップフラグts_flagが0(偽)であると判定された場合、すなわち、逆変換(逆プライマリ変換)を実行すると判定された場合、処理はステップS395に進む。
ステップS395において、セカンダリ変換フラグ復号部331は、残差情報Rinfoを参照して、変換ブロック内に存在する非ゼロ係数をカウントし、その総数numSig(sig_coeff_flag==1の総数)を求める。
ステップS396において、セカンダリ変換フラグ復号部331は、非ゼロ係数の総数numSigが所定の閾値TH以上であるか否か(numSig >= TH)を判定する。非ゼロ係数の総数numSigが所定の閾値THより少ない(numSig < TH)と判定された場合、処理はステップS397に進む。
非ゼロ係数の総数numSigが所定の閾値THより少ない場合、すなわち、非ゼロ係数が少ない疎な残差信号の場合、逆セカンダリ変換によりエナジーコンパクションが低下し、符号化効率が低減するおそれがあるので、符号化効率の低減を抑制するためには、逆セカンダリ変換をスキップするのが望ましい。つまり、この場合、逆セカンダリ変換をスキップするように制御される。したがって、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagは符号化側から伝送されないので、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS397において、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。また、この場合、逆セカンダリ変換はスキップされるので、セカンダリ変換フラグst_flagの値は0に固定される。したがって、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの値が0であると推定する。つまり、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの値を0に設定する(st_flag=0)。ステップS397の処理が終了すると復号処理が終了し、処理は、図13に戻る。
ステップS396において、非ゼロ係数の総数numSigが所定の閾値TH以上である(numSig >= TH)と判定された場合、処理はステップS398に進む。
ステップS398において、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データを復号する。
つまり、上述の条件式(33)が1(真)となる場合のみ、セカンダリ変換フラグst_flagの符号化データが復号される。これは、図20を参照して説明したシンタックスの上から7段目に対応する。
ステップS398の処理が終了すると、復号処理が終了し、処理は、図13に戻る。
以上のように復号処理を実行することにより、画像復号装置200は、変換ブロック単位でセカンダリ変換フラグst_flagを復号する場合において、変換スキップを適用する場合(ts_flag=1)、セカンダリ変換フラグst_flagの符号化データの復号をスキップすることができる。また、画像復号装置200は、逆変換および逆量子化のバイパスを適用する場合(transquant_bypass_flag=1)、セカンダリ変換フラグst_flagの符号化データの復号をスキップすることができる。すなわち、セカンダリ変換フラグst_flagに係る符号量の削減、及び復号にかかる処理量を低減することができる。
なお、上述した復号処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(33)は、実施可能な範囲で演算を変更可能である。
上述の例では、変換ブロック単位でセカンダリ変換フラグst_flagの復号処理について説明したが、セカンダリ変換フラグst_flagの代わりに、セカンダリ変換識別子st_idxを復号してもよい。この場合、図27に示すシンタクステーブルの上から8段目に示される、セカンダリ変換フラグst_flagをセカンダリ変換識別子st_idxへ置き換える。また、同様に、図24において、セカンダリ変換フラグ復号部331を、図18に示すセカンダリ変換識別子st_idxの復号に関する機能を有するセカンダリ変換識別子復号部312へ置きかえる。同様に、図26のフローチャートの各ステップにおいて、セカンダリ変換フラグst_flagの部分を、セカンダリ変換識別子st_idxへ置き換えて解釈する。
以上のように復号処理を実行することにより、画像復号装置200は、変換ブロック単位でセカンダリ変換識別子st_idxを復号する場合において、変換スキップを適用する場合(ts_flag=1)、セカンダリ変換識別子st_idxの復号をスキップすることができる。また、画像復号装置200は、逆量子化及び逆変換のバイパスを適用する場合(transquant_bypass_flag=1)、セカンダリ変換識別子st_idxの復号をスキップすることができる。すなわち、セカンダリ変換識別子st_idxに係る符号量の削減、及び復号に係る処理量を低減することができる。
また、上述の条件式(33)に限定されず、輝度の場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を復号するように、上述の条件式(34)へ変更してもよい。すなわち、色空間を示す識別子cIdxが輝度の値Luma (=0)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の復号をし、cIdxが色差の値Cb(=1)またはCr(=2)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の復号を省略する。
また、上述の条件式(33)に限定されず、イントラの場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を復号するように、上述の条件式(35)へ変更してもよい。すなわち、CUの予測モードを示すCuPredMode[x0][y0]がイントラ予測(=MODE_INTRA)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を復号し、インター予測の場合、復号を省略する。なお、条件式(33)乃至(35)の条件は、それぞれ組み合わせてもよい。
<4.第4の実施の形態>
<セカンダリ変換フラグの符号化・復号のスキップ>
非特許文献2には、セカンダリ変換フラグst_flagのオーバヘッドを削減するため、変換ブロック内の非ゼロ係数が所定閾値TH(例えば2)以下の場合、セカンダリ変換を適用しないこととし、セカンダリ変換フラグst_flagのシグナルをスキップすることが開示されている。
例えば、8×8変換ブロックにおいて、8×8変換ブロックの各サブブロック(4×4)に非ゼロ係数が各1個存在するとすると、変換ブロック内の非ゼロ係数の総数は4である。したがって、この総数を閾値TH(=2)と比較すると、セカンダリ変換を適用するか否かを示すst_flagをシグナル(符号化)することになる。
したがって、以下の課題がある。各サブブロックに疎な非ゼロ係数が存在する信号に対してセカンダリ変換を適用するおそれがあり、エナジーコンパクションが低下する可能性があった。また、(逆)セカンダリ変換のスキップが明らかな場合(つまり、セカンダリ変換フラグst_flag=0が明らかな場合)、このセカンダリ変換フラグst_flagをシグナル(符号化)すると、そのセカンダリ変換フラグst_flagのオーバヘッドが無駄になり、符号化効率が低減するおそれがあった。
そこで、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップするようにする。
このようにすることにより、サブブロックの非ゼロ係数が疎である場合に、セカンダリ変換をスキップすることができるようになる。これにより、エナジーコンパクションの低下を抑制し、符号化効率の低減を抑制することができる。
また、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップするようにする。
このようにすることにより、サブブロックの非ゼロ係数が疎である場合に、逆セカンダリ変換をスキップすることができるようになる。これにより、エナジーコンパクションの低下を抑制し、符号化効率の低減を抑制することができる。
<シンタクス>
このような制御を表す疑似コードを記載したシンタクステーブルの例を図27に示す。図27の上から7段目に示されるように、セカンダリ変換フラグst_flagの符号化(セカンダリ変換フラグst_flagの符号化データの復号)は、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値であるサブブロック内平均非ゼロ係数数numSigInSBKが、所定の閾値(TH)以上であることが条件の1つとなる。つまり、サブブロック内平均非ゼロ係数数numSigInSBKが所定の閾値(TH)より少ない場合、つまり、サブブロックの非ゼロ係数が疎である場合、セカンダリ変換フラグst_flagの符号化(セカンダリ変換フラグst_flagの符号化データの復号)がスキップされる。
<符号化部>
この場合、画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像符号化装置100は、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする符号化部を備える。つまり、この場合の符号化部114は、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする。
この場合の符号化部114は、プログラム等を実行することにより、第3の実施の形態において説明したのと基本的に同様の機能を有する。つまり、符号化部114は、図21を参照して説明したような機能ブロックを有する。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、セカンダリ変換フラグst_flag等の符号化を、サブブロック内平均非ゼロ係数数numSigInSBK等に応じて行う。このセカンダリ変換フラグst_flag等の符号化の流れの例を図28および図29のフローチャートを参照して説明する。つまり、図28および図29に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
符号化処理が開始されると、図28のステップS401乃至ステップS408の各処理が、図22のステップS361乃至ステップS368の各処理と同様に実行される。
ステップS405またはステップS408の処理が終了すると、処理は図29のステップS411に進む。
図29のステップS411乃至ステップS414の各処理は、図23のステップS371乃至ステップS374の各処理と同様に実行される。
ステップS414において、変換スキップフラグts_flagが0であると判定された場合、すなわち、変換(プライマリ変換)を実行すると判定された場合、処理はステップS415に進む。
ステップS415において、セカンダリ変換フラグ符号化部321は、サブブロック内平均非ゼロ係数数nmSigInSBKを求める。例えば、セカンダリ変換フラグ符号化部321は、残差情報Rinfoを参照して、変換ブロック内に存在する非ゼロ係数の総数numSig(sig_coeff_flag == 1の総数)を以下の式(36)のように導出する。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBSize-1,j=0…TBSize-1)
・・・(36)
次に、セカンダリ変換フラグ符号化部321は、求めた非ゼロ係数の総数numSigを、変換ブロック内のサブブロックの総数で除算し、サブブロック内平均非ゼロ係数数numSigInSBKを以下の式(37)により導出する。
numSigInSBK=numSig /(TBSize*TBSize / 16)
・・・(37)
なお、式(37)において、除算の代わりにシフト演算を用いて、以下の式(38)のように、サブブロック内平均非ゼロ係数数numSigInSBKを導出するようにしてもよい。
numSigInSBK=numSig >> (2 *(log2TBSize-2))
・・・(38)
ここで、log2TBSizeは、変換ブロックサイズTBSizeの2を底とする対数値である。なお、ここで、変換ブロックはTBSize×TBSizeの矩形であることを想定しているが、TBXSize×TBYSizeの長方形であってもよい。この場合、上述した式(36)は以下の式(39)に置き換え、上述した式(38)は以下の式(40)に置き換えればよい。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBXSize-1,j=0…TBYSize-1)
・・・(39)
numSigInSBK=numSig >> ((log2TBXSize-2)+(log2TBYSize-2))
・・・(40)
ここで、log2TBXSizeは、変換ブロックの横幅TBXSizeの2を底とする対数値であり、log2TBYSizeは、変換ブロックの縦幅TBYSizeの2を底とする対数値である。
また、以上の式(36)乃至式(40)では、変換ブロック内のすべてのサブブロックにおける非ゼロ係数の数を数え上げているが、所定の領域に限定してもよい。例えば、TBXSize×TBYSizeの変換ブロックにおいて、低周波領域に存在するサブブロック内の非ゼロ係数を数え上げてもよい。例えば、以下の式(41)に示されるように、TBXSize×TBYSizeの変換ブロックの左上半分に存在するサブブロックを対象とするようにしてもよい。この場合、式(40)は以下の式(42)に置き換えればよい。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBXSize/2-1,j=0…TBYSize/2-1)
・・・(41)
numSigInSBK=numSig >> ((log2TBXSize-3)+(log2TBYSize-3))
・・・(42)
また、以上の式(36)乃至式(42)では、変換ブロック内のすべて(あるいは所定領域)のサブブロックにおける非ゼロ係数の数numSigを、変換ブロック内のすべて(あるいは所定領域)のサブブロックの総数で除算(あるいはシフト演算)をしているが、除算(あるいはシフト演算)の前に、サブブロック数/2(= numSBK>>1)の値をオフセットとして加算してから、除算(またはシフト演算)してもよい(例えば、以下の式(43)、式(44)、式(45)、式(46))。ここで、numSBKは、変換ブロック内のすべて(あるいは所定領域)のサブブロック数を表し、式(43)乃至式(45)におけるnumSBKは、numSBK = TBXSize*TBYSize/16 = 1<<((log2TBXSize-2) + (logTBYSize-2))となり、式(46)におけるnumSBKは、numSBK = 1<<((log2TBXSize-3) + (logTBYSize-3))である。
numSigInSBK=(numSig + (numSBK>>1)) /(TBSize*TBSize / 16)
・・・(43)
numSigInSBK=(numSig + (numSBK>>1)) >> (2*(log2TBSize-2))
・・・(44)
numSigInSBK=(numSig + (numSBK>>1)) >> ((log2TBXSize-2)+(log2TBYSize-2))
・・・(45)
numSigInSBK=(numSig + (numSBK>>1)) >> ((log2TBXSize-3)+(log2TBYSize-3))
・・・(46)
また、以上の式(36)乃至式(42)では、変換ブロック内のすべて(あるいは所定領域)のサブブロックにおける非ゼロ係数の数numSigを、変換ブロック内のすべて(あるいは所定領域)のサブブロックの総数で除算(あるいはシフト演算)をすることにより、サブブロック内平均非ゼロ係数数numSigInSBKを導出しているが、除算に用いるサブブロック数を非ゼロ係数が存在するサブブロックの総数numNonZeroSBK(非ゼロサブブロック数とも呼ぶ)に置き換えてもよい。例えば、非ゼロサブブロック数numNonZeroSBKを以下の式(47)によって導出する。すなわち、サブブロック非ゼロ係数有無フラグcoded_sub_blck_flag(i,j)が1となるサブブロックの数を数え上げることで非ゼロサブブロック数numNonZeroSBKを導出することができる。この場合、サブブロック内平均非ゼロ係数数numSigInSBKは、式(40)の代わりに、以下の式(48)によって導出することができる。なお、式(48)では、ゼロ割を回避するため、非ゼロサブブロック数numNonZeroSBKが0であるか否か判定し、0であれば、numSigInSBKに0を設定し、0より大きければ、numSigInSBKにnumSigをnumNonZeroSBKで除算した値を設定する。
numNonZero =Σ(coded_sub_block_flag(i,j))
(i=0…(TBXSize>>2)-1,j=0…(TBYSize>>2)-1)
・・・(47)
numSigInSBK=numNonZeroSBK==0 ? 0 : numSig / numNonZeroSBK
・・・(48)
また、変換ブロック内の所定領域を対象とし、その所定領域内にあるサブブロックにおける非ゼロ係数の数、及び非ゼロ係数を有するサブブロックの数に基づいて、サブブロック内平均非ゼロ係数数numSigInSBKを導出してもよい。例えば、TBXSize×TBYSizeの変換ブロックの左上半分に存在するサブブロックを対象とするようにしてもよい。この場合、非ゼロ係数数numSigは、上述の式(41)により導出し、非ゼロサブブロック数numNonZeroSBKは以下の式(49)により導出する。導出したnumSig、及びnumNonZeroSBKを参照して、上述の式(48)により、サブブロック内平均非ゼロ係数数numSigInSBKを導出する。
numNonZero =Σ(coded_sub_block_flag(i,j))
(i=0…(TBXSize>>3)-1,j=0…(TBYSize>>3)-1)
・・・(49)
以上のように、サブブロック内平均非ゼロ係数数nmSigInSBKが求められると、処理はステップS416に進む。
ステップS416において、セカンダリ変換フラグ符号化部321は、サブブロック内平均非ゼロ係数数numSigInSBKが所定の閾値TH以上であるか否か(numSigInSBK >= TH)を判定する。該条件式の論理値が0(偽)であると判定された場合、すなわち、numSigInSBK<THを満たすと判定された場合、ステップS417の処理がスキップされ、符号化処理が終了し、処理は、図9に戻る。
サブブロック内平均非ゼロ係数数numSigInSBKが所定の閾値THより少ない場合、非ゼロ係数が疎なサブブロックが存在する。そのようなサブブロックに対してセカンダリ変換を行うと、エナジーコンパクションが低下し、符号化効率が低減するおそれがある。したがって、符号化効率の低減を抑制するためには、セカンダリ変換をスキップするのが望ましい。つまり、この場合、セカンダリ変換をスキップするように制御される。したがって、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagを復号側に伝送する必要がない。したがって、セカンダリ変換フラグ符号化部321は、セカンダリ変換フラグst_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS416において、該条件式の論理値が1(真)であると判定された場合、すなわち、numSigInSBK >= THを満たす場合、処理はステップS417に進む。
ステップS417において、セカンダリ変換フラグ符号化部321は、セカンダリ変換フラグst_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られたセカンダリ変換フラグst_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
つまり、以下の条件式(50)が1(真)となる場合のみ、セカンダリ変換フラグst_flagが符号化される。これは、図27を参照して説明したシンタックスの上から7段目に対応する。
論理値=(st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSigInSBK >= TH)
・・・(50)
以上のように符号化処理を実行することにより、画像符号化装置100は、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、セカンダリ変換フラグst_flagの符号化処理をスキップすることができる。すなわち、セカンダリ変換フラグの符号化に係る処理量を低減することができる。また、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、エナジーコンパクションの低下を抑制することができる。すなわち、符号化効率の低減を抑制することができる。
上述の例では、変換ブロック単位でセカンダリ変換フラグst_flagの符号化処理について説明したが、セカンダリ変換フラグst_flagの代わりに、セカンダリ変換識別子st_idxを符号化してもよい。この場合、図27に示すシンタクステーブルの上から8段目に示される、セカンダリ変換フラグst_flagをセカンダリ変換識別子st_idxへ置き換える。また、同様に、図21において、セカンダリ変換フラグ符号化部321を、図16に示すセカンダリ変換識別子st_idxの符号化に関する機能を有するセカンダリ変換識別子符号化部302へ置きかえる。同様に、図29のフローチャートの各ステップにおいて、セカンダリ変換フラグst_flagの部分を、セカンダリ変換識別子st_idxへ置き換えて解釈する。
以上のように符号化処理を実行することにより、画像符号化装置100は、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、セカンダリ変換識別子st_idxの符号化処理をスキップすることができる。すなわち、セカンダリ変換識別子の符号化に係る処理量を低減することができる。また、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、エナジーコンパクションの低下を抑制することができる。すなわち、符号化効率の低減を抑制することができる。
また、上述の条件式(50)に限定されず、輝度の場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を符号化するように、下記条件式(51)へ変更してもよい。すなわち、色空間を示す識別子cIdxが輝度の値Luma (=0)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の符号化をし、cIdxが色差Cb(=1)またはCr(=2)の場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の符号化を省略する。この場合、色差に関するセカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)は符号化されないため、輝度のセカンダリフラグst_flag(あるいはセカンダリ変換識別子st_idx)と等しいと推定してもよい。あるいは、色差の残差は、一般的に輝度に比べて、疎な残差信号であることが多いため、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)をセカンダリ変換をスキップ(省略)することを示す値(0)に等しいと推定してもよい。
論理値=(cIdx==Luma && st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSigInSBK >= TH)
・・・(51)
また、上述の条件式(50)に限定されず、イントラの場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を符号化するように、下記条件式(52)へ変更してもよい。すなわち、CUの予測モードを示すCuPredMode[x0][y0]がイントラ予測(=MODE_INTRA)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を符号化し、インター予測の場合、符号化を省略する。
論理値=(CuPredMode[x0][y0]==MODE_INTRA && st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSigInSBK >= TH)
・・・(52)
なお、条件式(50)乃至(52)の条件は、それぞれ組み合わせてもよい。
なお、上述した符号化処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(50)乃至(52)は、実施可能な範囲で演算を変更可能である。
<復号部>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする復号部を備える。つまり、この場合の復号部211は、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像とその画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする。
この場合の復号部211は、プログラム等を実行することにより、第3の実施の形態において説明したのと基本的に同様の機能を有する。つまり、復号部211は、図24を参照して説明したような機能ブロックを有する。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、セカンダリ変換フラグst_flag等の符号化データの復号を、サブブロック内平均非ゼロ係数数numSigInSBK等に応じて行う。このセカンダリ変換フラグst_flag等の符号化データの復号の流れの例を図30および図31のフローチャートを参照して説明する。つまり、図30および図31に示される復号処理は、図13のステップS201において行われる復号処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化データの復号は任意の方法で行われる。
復号処理が開始されると、図30のステップS421乃至ステップS429の各処理が、図25のステップS381乃至ステップS389の各処理と同様に実行される。
ステップS428またはステップS429の処理が終了すると、処理は図31のステップS431に進む。
図31のステップS431乃至ステップS434の各処理は、図26のステップS391乃至ステップS394の各処理と同様に実行される。
ステップS434において、変換スキップフラグts_flagが0であると判定された場合、すなわち、変換(プライマリ変換)を実行すると判定された場合、処理はステップS435に進む。
ステップS435において、セカンダリ変換フラグ復号部331は、処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値であるサブブロック内平均非ゼロ係数数nmSigInSBKを求める。例えば、セカンダリ変換フラグ復号部331は、残差情報Rinfoを参照して、変換ブロック内に存在する非ゼロ係数の総数numSig(sig_coeff_flag==1の総数)を以下の式(53)のように導出する。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBSize-1,j=0…TBSize-1)
・・・(53)
次に、セカンダリ変換フラグ復号部331は、非ゼロ係数の総数numSigを、変換ブロック内のサブブロックの総数で除算し、サブブロック内平均非ゼロ係数数numSigInSBKを以下の式(54)により導出する。
numSigInSBK=numSig / (TBSize * TBSize / 16)
・・・(54)
なお、式(54)において、除算の代わりにシフト演算を用いて、以下の式(55)のように、サブブロック内平均非ゼロ係数数numSigInSBKを導出するようにしてもよい。
numSigInSBK=numSig >> (2*(log2TBSize-2))
・・・(55)
ここで、log2TBSizeは、変換ブロックサイズTBSizeの2を底とする対数値である。なお、ここで、変換ブロックはTBSize×TBSizeの矩形であることを想定しているが、TBXSize×TBYSizeの長方形であってもよい。この場合、上述した式(53)は以下の式(56)に置き換え、上述した式(55)は以下の式(57)に置き換えればよい。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBXSize-1,j=0…TBYSize-1)
・・・(56)
numSigInSBK=numSig >> ((log2TBXSize-2)+(log2TBYSize-2))
・・・(57)
ここで、log2TBXSizeは、変換ブロックの横幅TBXSizeの2を底とする対数値であり、log2TBYSizeは、変換ブロックの縦幅TBYSizeの2を底とする対数値である。
また、以上の式(53)乃至式(57)では、変換ブロック内のすべてのサブブロックにおける非ゼロ係数の数を数え上げているが、所定の領域に限定してもよい。例えば、TBXSize×TBYSizeの変換ブロックにおいて、低周波領域に存在するサブブロック内の非ゼロ係数を数え上げてもよい。例えば、以下の式(58)に示されるように、TBXSize×TBYSizeの変換ブロックの左上半分に存在するサブブロックを対象とするようにしてもよい。この場合、式(57)は以下の式(59)に置き換えればよい。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBXSize/2-1,j=0…TBYSize/2-1)
・・・(58)
numSigInSBK=numSig >> ((log2TBXSize-3)+(log2TBYSize-3))
・・・(59)
また、以上の式(53)乃至式(59)では、変換ブロック内のすべて(あるいは所定領域)のサブブロックにおける非ゼロ係数の数numSigを、変換ブロック内のすべて(あるいは所定領域)のサブブロックの総数で除算(あるいはシフト演算)をしているが、除算(あるいはシフト演算)の前に、サブブロック数/2(= numSBK>>1)の値をオフセットとして加算してから、除算(またはシフト演算)してもよい(例えば、式(60)、式(61)、式(62)、式(63))。ここで、numSBKは、変換ブロック内のすべて(あるいは所定領域)のサブブロック数を表し、式(60)乃至式(62)におけるnumSBKは、numSBK = TBXSize*TBYSize/16 = 1<<((log2TBXSize-2) + (logTBYSize-2))となり、式(63)におけるnumSBKは、numSBK = 1<<((log2TBXSize-3) + (logTBYSize-3))である。
numSigInSBK=(numSig + (numSBK>>1)) /(TBSize*TBSize / 16)
・・・(60)
numSigInSBK=(numSig + (numSBK>>1)) >> (2*(log2TBSize-2))
・・・(61)
numSigInSBK=(numSig + (numSBK>>1)) >> ((log2TBXSize-2)+(log2TBYSize-2))
・・・(62)
numSigInSBK=(numSig + (numSBK>>1)) >> ((log2TBXSize-3)+(log2TBYSize-3))
・・・(63)
また、以上の式(53)乃至式(59)では、変換ブロック内のすべて(あるいは所定領域)のサブブロックにおける非ゼロ係数の数numSigを、変換ブロック内のすべて(あるいは所定領域)のサブブロックの総数で除算(あるいはシフト演算)をすることにより、サブブロック内平均非ゼロ係数数numSigInSBKを導出しているが、除算に用いるサブブロック数を非ゼロ係数が存在するサブブロックの総数numNonZeroSBK(非ゼロサブブロック数とも呼ぶ)に置き換えてもよい。例えば、非ゼロサブブロック数numNonZeroSBKを上述の式(47)によって導出する。すなわち、サブブロック非ゼロ係数有無フラグcoded_sub_blck_flag(i,j)が1となるサブブロックの数を数え上げることで非ゼロサブブロック数numNonZeroSBKを導出することができる。この場合、サブブロック内平均非ゼロ係数数numSigInSBKは、式(54)の代わりに、上述の式(48)によって導出することができる。なお、式(48)では、ゼロ割を回避するため、非ゼロサブブロック数numNonZeroSBKが0であるか否か判定し、0であれば、numSigInSBKに0を設定し、0より大きければ、numSigInSBKにnumSigをnumNonZeroSBKで除算した値を設定する。
また、変換ブロック内の所定領域を対象とし、その所定領域内にあるサブブロックにおける非ゼロ係数の数、及び非ゼロ係数を有するサブブロックの数に基づいて、サブブロック内平均非ゼロ係数数numSigInSBKを導出してもよい。例えば、TBXSize×TBYSizeの変換ブロックの左上半分に存在するサブブロックを対象とするようにしてもよい。この場合、非ゼロ係数数numSigは、上述の式(41)により導出し、非ゼロサブブロック数numNonZeroSBKは上述の式(49)により導出する。導出したnumSig、及びnumNonZeroSBKを参照して、上述の式(48)により、サブブロック内平均非ゼロ係数数numSigInSBKを導出する。
以上のように、サブブロック内平均非ゼロ係数数nmSigInSBKが求められると、処理はステップS436に進む。
ステップS416において、セカンダリ変換フラグ復号部331は、サブブロック内平均非ゼロ係数数numSigInSBKが所定の閾値TH以上であるか否か(numSigInSBK >= TH)を判定する。該条件式の論理値が0(偽)であると判定された場合、すなわち、numSigInSBK<THを満たすと判定された場合、処理はステップS437に進む。
サブブロック内平均非ゼロ係数数numSigInSBKが所定の閾値THより少ない場合、非ゼロ係数が疎なサブブロックが存在する。そのようなサブブロックに対して逆セカンダリ変換を行うと、エナジーコンパクションが低下し、符号化効率が低減するおそれがある。したがって、符号化効率の低減を抑制するためには、逆セカンダリ変換をスキップするのが望ましい。つまり、この場合、逆セカンダリ変換をスキップするように制御される。したがって、セカンダリ変換フラグst_flagの値は0に固定される。したがって、この場合、セカンダリ変換フラグst_flagは符号化側から伝送されないので、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS437において、セカンダリ変換フラグst_flagの符号化データの復号をスキップする。また、この場合、逆セカンダリ変換はスキップされるので、セカンダリ変換フラグst_flagの値は0に固定される。したがって、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの値が0であると推定する。つまり、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの値を0に設定する(st_flag=0)。ステップS437の処理が終了すると復号処理が終了し、処理は、図13に戻る。
ステップS436において、該条件式の論理値が1(真)であると判定された場合、すなわち、numSigInSBK >= THを満たす場合、処理はステップS438に進む。
ステップS438において、セカンダリ変換フラグ復号部331は、セカンダリ変換フラグst_flagの符号化データを復号する。
つまり、上述の条件式(50)が1(真)となる場合のみ、セカンダリ変換フラグst_flagの符号化データが復号される。これは、図27を参照して説明したシンタックスの上から7段目に対応する。
ステップS438の処理が終了すると、復号処理が終了し、処理は、図13に戻る。
以上のように復号処理を実行することにより、画像復号装置200は、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、セカンダリ変換フラグst_flagの復号処理をスキップすることができる。すなわち、セカンダリ変換フラグの符号化データの復号に係る処理量を低減することができる。また、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、エナジーコンパクションの低下を抑制することができる。すなわち、符号化効率の低減を抑制することができる。
上述の例では、変換ブロック単位でセカンダリ変換フラグst_flagの復号処理について説明したが、セカンダリ変換フラグst_flagの代わりに、セカンダリ変換識別子st_idxを復号してもよい。この場合、図27に示すシンタクステーブルの上から8段目に示される、セカンダリ変換フラグst_flagをセカンダリ変換識別子st_idxへ置き換える。また、同様に、図24において、セカンダリ変換フラグ復号部331を、図18に示すセカンダリ変換識別子st_idxの復号に関する機能を有するセカンダリ変換識別子復号部312へ置きかえる。同様に、図31のフローチャートの各ステップにおいて、セカンダリ変換フラグst_flagの部分を、セカンダリ変換識別子st_idxへ置き換えて解釈する。
以上のように復号処理を実行することにより、画像復号装置200は、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、セカンダリ変換識別子st_idxの復号処理をスキップすることができる。すなわち、セカンダリ変換識別子の復号に係る処理量を低減することができる。また、変換ブロック内の各サブブロックに疎な非ゼロ係数が存在する信号に対して、エナジーコンパクションの低下を抑制することができる。すなわち、符号化効率の低減を抑制することができる。
また、上述の条件式(50)に限定されず、輝度の場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を復号するように、上述の条件式(51)へ変更してもよい。すなわち、色空間を示す識別子cIdxが輝度の値Luma (=0)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の復号をし、cIdxが色差Cb(=1)またはCr(=2)の場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)の復号を省略する。この場合、色差に関するセカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)は復号されないため、輝度のセカンダリフラグst_flag(あるいはセカンダリ変換識別子st_idx)と等しいと推定してもよい、すなわち、同一の逆セカンダリ変換を適用する。あるいは、色差の残差は、一般的に輝度に比べて、疎な残差信号であることが多いため、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を逆セカンダリ変換をスキップ(省略)することを示す値(0)に等しいと推定してもよい。
また、上述の条件式(50)に限定されず、イントラの場合にのみ、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を復号するように、上述の条件式(52)へ変更してもよい。すなわち、CUの予測モードを示すCuPredMode[x0][y0]がイントラ予測(=MODE_INTRA)を示す場合、セカンダリ変換フラグst_flag(あるいはセカンダリ変換識別子st_idx)を復号し、インター予測の場合、復号を省略する。なお、条件式(50)乃至(52)の条件は、それぞれ組み合わせてもよい。
なお、上述した復号処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(50)乃至(52)は、実施可能な範囲で演算を変更可能である。
<5.第5の実施の形態>
<プライマリ変換識別子の符号化・復号のスキップ>
非特許文献1に記載の方法では、変換ブロック毎に、水平方向のプライマリ変換Phor、及び垂直方向のプライマリ変換Pverにどのプライマリ変換を適用するか指定するプライマリ変換識別子pt_idxを符号化していた。より具体的には、水平方向のプライマリ変換PhorをThor1、Thor2のどちらにするか指定する水平方向プライマリ変換指定フラグpt_hor_flagと、垂直方向のプライマリ変換PverをTver1、Tver2のどちらにするか指定する垂直方向プライマリ変換指定フラグpt_ver_flagより、固定長符号のプライマリ変換識別子pt_idxを以下の式(64)のように導出する。
pt_idx={(pt_hor_flag << 1)+pt_ver_flag }
・・・(64)
その後、プライマリ変換識別子pt_idxのbin列に対して、算術符号化を適用して、ビット列を生成することで、符号化が実施される。図32にその符号化の様子を示す。また、その符号化に対応するプライマリ変換識別子pt_idxの復号の様子を図33に示す。図32のAや図33のAに示されるように、プライマリ変換識別子pt_idxは固定長符号で2値化される。算術符号化・算術復号におけるコンテキストの選択は、図32のBや図33のBに示されるテーブルのように行われる。
しかしながら、非特許文献1では、変換量子化バイパスフラグtransquant_bypass_flagが1(真)の場合(変換量子化バイパスを適用する場合)において、プライマリ変換識別子pt_idxをシグナルするため、該識別子のオーバヘッドが無駄であり、符号化効率が低減するおそれがあった。
そこで、画像符号化の際に、変換量子化バイパスフラグtransquant_bypass_flagが変換量子化バイパスを行うことを示す場合、プライマリ変換識別子pt_idxの符号化をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、画像復号の際に、変換量子化バイパスフラグtransquant_bypass_flagが変換量子化バイパスを行うことを示す場合、プライマリ変換識別子pt_idxの復号をスキップ(省略)し、かつ、プライマリ変換識別子pt_idxの値が、水平方向のプライマリ変換Phorおよび垂直方向のプライマリ変換Pverに所定の直交変換(例えば、DCT-Type 2)を用いることを示す識別子の値(例えば-1)であると推定するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、非特許文献1に記載の方法では、プライマリ変換識別子pt_idxの値の出現頻度を考慮した2値化でないため、算術符号化する際に、符号化効率が低減するおそれがあった。
そこで、プライマリ変換識別子pt_idxの2値化方法として、トランケーテッド・ユーナリー二値化(Truncated Unary Binarization(TUとも称する))を適用するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
<シンタクス>
このような制御を表す疑似コードを記載したシンタクステーブルの例を図34に示す。図34の上から7段目に示されるように、変換量子化バイパスフラグtransquant_bypass_flagが0であることが、プライマリ変換識別子pt_idxの符号化(すなわち、プライマリ変換識別子pt_idxの符号化データの復号)の条件の1つとなる。つまり、変換量子化バイパスフラグtransquant_bypass_flagが1の場合、すなわち、(逆)変換および(逆)量子化がスキップされる場合、プライマリ変換識別子pt_idxの符号化(プライマリ変換識別子pt_idxの符号化データの復号)がスキップされる。
<符号化部>
この場合も画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。つまり、第1の実施の形態において説明した画像符号化装置100が、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、そのプライマリ変換係数がセカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合、プライマリ変換の内容を示す第1の情報の符号化をスキップする符号化部を備える。
つまり、この場合の符号化部114は、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、そのプライマリ変換係数がセカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合、プライマリ変換の内容を示す第1の情報の符号化をスキップする。
図35は、この場合の符号化部114がプログラム等を実行することにより実現する、プライマリ変換識別子の符号化に関する主な機能の例を示す機能ブロック図である。図34に示されるように、この場合の符号化部114は、プログラムを実行することにより、プライマリ変換識別子の符号化に関する機能として、例えば、プライマリ変換有効フラグ符号化部401およびプライマリ変換識別子符号化部402を有することができる。
プライマリ変換有効フラグ符号化部401は、プライマリ変換の許可に関する情報であるプライマリ変換有効フラグpt_enabled_flagの符号化に関する処理を行う。プライマリ変換識別子符号化部402は、プライマリ変換の内容に関する情報であるプライマリ変換識別子pt_idxの符号化に関する処理を行う。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、プライマリ変換識別子pt_idx等の符号化を、変換量子化バイパスフラグtransquant_bypass_flagの値等に応じて行う。このプライマリ変換識別子pt_idx等の符号化の流れの例を図36のフローチャートを参照して説明する。つまり、図36に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
符号化処理が開始されると、ステップS501において、プライマリ変換有効フラグ符号化部401は、ヘッダ情報Hinfoに含まれるプライマリ変換有効フラグpt_enabled_flagを符号化し、ビット列(符号化データ)を生成し出力する。この符号化により得られたプライマリ変換有効フラグpt_enabled_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
ステップS502において、プライマリ変換識別子符号化部402は、ヘッダ情報Hinfoに含まれるプライマリ変換有効フラグpt_enabled_flagが1(真)であるか否かを判定する。プライマリ変換有効フラグpt_enabled_flagが0であると判定された場合、すなわち、プライマリ変換の実行が許可されていないと判定された場合、ステップS503乃至ステップS508の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
プライマリ変換の実行が許可されていないのであれば、プライマリ変換は実行されず、プライマリ変換識別子pt_idxを復号側に伝送する必要がない。したがって、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS502において、プライマリ変換有効フラグpt_enabled_flagが1であると判定された場合、すなわち、プライマリ変換の実行が許可されていると判定された場合、処理はステップS503に進む。
ステップS503において、プライマリ変換識別子符号化部402は、変換情報Tinfoに含まれる変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定する。変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、変換(プライマリ変換およびセカンダリ変換)並びに量子化をスキップ(バイパス)すると判定された場合、ステップS504乃至ステップS508の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換および量子化がバイパスされるのであれば、プライマリ変換識別子pt_idxを復号側に伝送する必要がない。したがって、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS503において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、変換および量子化をスキップ(バイパス)しないと判定された場合、処理はステップS504に進む。
ステップS504において、プライマリ変換識別子符号化部402は、変換情報Tinfoに含まれる変換スキップフラグts_flagが1(真)であるか否かを判定する。変換スキップフラグts_flagが1であると判定された場合、すなわち、変換(プライマリ変換)をスキップすると判定された場合、ステップS505乃至ステップS508の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換(プライマリ変換)がスキップされるのであれば、プライマリ変換識別子pt_idxを復号側に伝送する必要がない。したがって、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS504において、変換スキップフラグts_flagが0であると判定された場合、すなわち、変換(プライマリ変換)をスキップしないと判定された場合、処理はステップS505に進む。
ステップS505において、プライマリ変換識別子符号化部402は、処理対象の変換ブロックのサイズTBSizeが最大プライマリ変換ブロックサイズMaxPTSize以下であるか否か(条件式TBSize<=MaxPTSizeが真であるか否か)を判定する。処理対象の変換ブロックのサイズTBSizeが最大プライマリ変換ブロックサイズMaxPTSizeより大きいと判定された場合、すなわち、上述の条件式が0(偽)であると判定された場合、ステップS506乃至ステップS508の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
最大プライマリ変換ブロックサイズMaxPTSizeは、プライマリ変換の実行が許可される最大のブロックサイズを示す情報である。つまり、変換ブロックのサイズがこの最大プライマリ変換ブロックサイズMaxPTSizeより大きい場合、プライマリ変換の実行が許可されないので、プライマリ変換識別子pt_idxを復号側に伝送する必要がない。したがって、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS505において、処理対象の変換ブロックのサイズTBSizeが最大プライマリ変換ブロックサイズMaxPTSize以下であると判定された場合、すなわち、上述の条件式が1(真)であると判定された場合、処理はステップS506に進む。
なお、ステップS505において、上述した条件式(TBSize<=MaxTSSize)は、2を底とするTBサイズの対数値log2TBSize、2を底とする最大プライマリ変換ブロックサイズMaxPTSizeの対数値log2MaxPTSizeを用いて、条件式(log2TBSize <= log2MaxPTSize)に置き換えても良い。
ステップS506において、プライマリ変換識別子符号化部402は、残差情報Rinfoを参照して、変換ブロック内に存在する非ゼロ係数の総数numSig(sig_coeff_flag == 1の総数)を以下の式(65)のように導出する。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBSize-1,j=0…TBSize-1)
・・・(65)
ステップS507において、プライマリ変換識別子符号化部402は、非ゼロ係数の総数numSigが所定の閾値TH以上であるか否か(numSig >= TH)を判定する。非ゼロ係数の総数numSigが所定の閾値THより少ない(numSig < TH)と判定された場合、ステップS508の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
非ゼロ係数の総数numSigが所定の閾値THより少ない場合、すなわち、非ゼロ係数が少ない疎な残差信号の場合、エナジーコンパクションが低下し、符号化効率が低減するおそれがあるので、符号化効率の低減を抑制するためには、変換スキップまたは所定の直交変換(例えば、DCT - Type 2)を適用するのが望ましい。つまり、この場合、プライマリ変換識別子pt_idxを復号側に伝送する必要がない。したがって、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS507において、非ゼロ係数の総数numSigが所定の閾値TH以上であると判定された場合、処理はステップS508に進む。
ステップS508において、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxを可変長符号化し、ビット列(符号化データ)を生成し出力する。この符号化の詳細については後述する。この符号化により得られたプライマリ変換識別子pt_idxの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
つまり、以下の条件式(66)が1(真)となる場合のみ、プライマリ変換識別子pt_idxが符号化される。これは、図34を参照して説明したシンタックスの上から7段目に対応する。
論理値=(pt_enabled_flag && (transquant_bypass_flag == 0 || ts_flag == 0) && (log2TBSize <= log2MaxPTSize) && numSig >= TH)
・・・(66)
ステップS508の処理が終了すると、符号化処理が終了し、処理は図9に戻る。
以上のように符号化処理を実行することにより、画像符号化装置100は、変換量子化バイパスを適用する場合に、プライマリ変換識別子pt_idxの符号化処理をスキップすることができる。すなわち、プライマリ変換識別子pt_idxの符号化に係る処理量および符号量を低減することができる。
また、上述の条件式(66)に限定されず、輝度の場合にのみ、プライマリ変換識別子pt_idxを符号化するように、下記条件式(67)へ変更してもよい。すなわち、色空間を示す識別子cIdxが輝度の値Luma (=0)を示す場合、プライマリ変換識別子pt_idxの符号化をし、cIdxが色差Cb(=1)またはCr(=2)の場合、プライマリ変換識別子pt_idxの符号化を省略する。
論理値=(cIdx==Luma && st_enabled_flag &&
(transquant_bypass_flag==0 || ts_flag==0) &&
numSig >= TH)
・・・(67)
なお、条件式(66)および(67)の条件は、それぞれ組み合わせてもよい。
なお、上述した符号化処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(66)および(67)は、実施可能な範囲で演算を変更可能である。
<補足:CUプライマリ変換フラグ(適応プライマリ変換フラグ)の符号化のスキップ>
上記の画像符号化装置100では、変換量子化バイパスを適用する場合に、変換ブロック単位でのプライマリ変換識別子pt_idxの符号化処理をスキップする事例について説明したが、これに限定にされない。例えば、CU単位で、変換ブロック単位のプライマリ変換識別子pt_idxを符号化するか否かを示すCUプライマリ変換フラグcu_pt_flag(適応プライマリ変換フラグapt_flagとも称する)を変換量子化バイパスフラグtransquant_bypass_flagの値に応じて符号化する。
CUプライマリ変換フラグcu_pt_flagが1(真)の場合には、変換ブロック単位のプライマリ変換識別子pt_idxの符号化をし、CUプライマリ変換フラグcu_pt_flagが0(偽)の場合には、変換ブロック単位のプライマリ変換識別子pt_idxの符号化を省略してもよい。この場合、符号化部114は、さらに、不図示のCUプライマリ変換フラグ符号化部403を備える。
CUプライマリ変換フラグ符号化部403は、TU単位でのプライマリ変換識別子pt_idxの符号化の許可に関する情報であるCUプライマリ変換フラグcu_pt_flagの符号化に関する処理を行う。CUプライマリ変換フラグ符号化部403におけるCUプライマリ変換フラグcu_pt_flagの符号化は例えば、以下の疑似コードに基づいて行う。
if ( !transquant_bypass_flag && pt_enabled_flag )
{
encode cu_pt_flag
}
すなわち、CUプライマリ変換フラグ符号化部403は、変換量子化バイパスフラグtransquant_bypass_flagが0(偽)、かつプライマリ変換有効フラグpt_enabled_flagが1(真)のときにCUプライマリ変換フラグcu_pt_flagを符号化し、それ以外の場合(変換量子化バイパスフラグtransquant_bypass_flagが1(真)、またはプライマリ変換有効フラグpt_enabled_flagが0(偽))のときは、CUプライマリ変換フラグcu_pt_flagの符号化を省略する。すなわち、変換量子化バイパスフラグを適用する場合には、CUプライマリ変換フラグcu_pt_flagを復号側に伝送する必要がない。従って、CUプライマリ変換フラグ符号化部403は、CUプライマリ変換フラグcu_pt_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減をすることができる。
なお、この場合、プライマリ変換識別子符号化部402における、プライマリ変換識別子pt_idxの符号化条件は、例えば、以下の疑似コードに基づいて行う。
if( cu_pt_flag && ts_flag==0 && numSig >= TH)
{
encode pt_idx
}
すなわち、プライマリ変換識別子符号化部402は、CUプライマリ変換フラグcu_pt_flagが1(真)、かつ変換スキップフラグts_flagが0(偽)、かつ、非ゼロ係数数numSigが閾値TH以上のとき、プライマリ変換識別子pt_idxを符号化し、それ以外の場合(CUプライマリ変換フラグcu_pt_flagが0(偽)、または変換スキップフラグts_flagが1(真)、または、非ゼロ係数数numSigが閾値THより小さい)ときは、プライマリ変換識別子pt_idxの符号化を省略する。すなわち、CUプライマリ変換フラグが0の場合には、プライマリ変換識別子pt_idxを復号側に伝送する必要がない。従って、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減をすることができる。
<プライマリ変換識別子符号化処理の流れ>
次に、図37のフローチャートを参照して、図36のステップS508において実行されるプライマリ変換識別子符号化処理の流れの例を説明する。
プライマリ変換識別子符号化処理が開始されると、プライマリ変換識別子符号化部402は、ステップS511において、変数の初期化を行う。例えば、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの最大値であるmaxPTIdxを3に設定する(maxPTIdx=3)。
ステップS512において、プライマリ変換識別子符号化部402は、予測モード情報Pinfoを参照して、処理対象変換ブロックを含むCUがイントラ予測であるか、インター予測であるか判定する。インター予測であると判定された場合、処理はステップS513に進む。
ステップS513において、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxの値を以下の式(68)のように修正する。
pt_idx=maxPTIdx - pt_idx
・・・(68)
プライマリ変換識別子pt_idxの各値の出現確率が、イントラ予測とインター予測で逆の傾向にある。そこで、プライマリ変換識別子符号化部402は、イントラ予測の場合、最も出現頻度高い値(0)を0、2番目に出現頻度の高い値(1)を1、3番目に出現頻度に高い値(2)を2、4番目に出現頻度の高い値(3)を3として算術符号化を行い、インター予測の場合、最も出現頻度高い値(3)を0、2番目に出現頻度の高い値(2)を1、3番目に出現頻度に高い値(3)を2、4番目に出現頻度の高い値(0)を3として算術符号化を行うために、算術符号化の対象とするプライマリ変換識別子pt_idxの値を上述の式(68)のように変更する。
ステップS513の処理が終了すると処理はステップS514に進む。また、ステップS512において、イントラ予測であると判定された場合、処理はステップS514に進む。
ステップS514において、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxをTUにより2値化した場合のbin列の長さを示すmaxBinIdxを以下の式(69)のように導出する。具体的には、プライマリ変換識別子pt_idxと、プライマリ変換識別子pt_idxの最大値maxPTIdxのうち小さい値をmaxBinIdxの値とする。
maxBinIdx=min(pt_idx,maxPTIdx)
・・・(69)
ステップS515において、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxを2値化したbin列の現在のbinの位置を示すbinIdxの値が、binIdxの最大値maxBinIdxより小さいか判定する。binIdxの値が、maxBinIdxの値より小さいと判定された場合(binIdx < maxBinIdx)、処理はステップS516に進む。
ステップS516において、プライマリ変換識別子符号化部402は、binIdx=iの位置のbinのシンボルsymbolの値を1に設定する(symbol=1)。
ステップS517において、プライマリ変換識別子符号化部402は、2値化されたプライマリ変換識別子pt_idxのbin列でbinIdx=iの位置のbinのシンボルsymbolを算術符号化する。
ここで、プライマリ変換識別子符号化部402は、binIdx=iの位置のbinを算術符号化する際に、図38に示すように、各binIdxに応じたコンテキストを用いて、算術符号化する。例えば、図38のM0の場合は、binIdx=0…2まですべてのbinについて、コンテキストを用いないバイパスモードにより算術符号化を行う例を示している。なお、バイパスモードとは、シンボル0とシンボル1の発生確率が等確率であるとして、算術符号化を行うモードである。
また、図38のM1の場合は、binIdx=0(先頭)のbinについて、コンテキストを用いるレギュラーモードにより算術符号化を行い、binIdx=1…2のbinについては、バイパスモードにより算術符号化を行う例を示している。なお、レギュラーモードとは、シンボル0とシンボル1の発生確率を更新しながら、算術符号化を行うモードである。例えば、M1の場合、binIdx=0のbinについては、イントラの場合、コンテキストを指定するインデックスctxIncの値を0にし、インターの場合には、1を割り当てる。
また、図38のM2の場合は、binIdx=0…1のbinについて、コンテキストを用いるレギュラーモードにより算術符号化を行い、binIdx=2のbinについては、バイパスモードにより算術符号化を行う例を示している。例えば、M2の場合、binIdx=0のbinについては、イントラの場合、コンテキストを指定するインデックスctxIncの値を0にし、インターの場合には、1を割り当てる。また、binIdx=1のbinについては、イントラの場合、コンテキストを指定するインデックスctxIncの値を2にし、インターの場合には、3を割り当てる。
また、図38のM1及びM2では、レギュラーモードにより算術符号化の対象となるbinIdx=iの位置のbinに対して、イントラとインターの場合とで、異なるコンテキストを指定するコンテキストインデックスctxIncを割り当ている。しかし、上述の式(68)において、プライマリ変換識別子pt_idxの各値の出現確率が、イントラ予測とインター予測で逆の傾向を利用して、プライマリ変換識別子pt_idxについて、イントラ予測の場合、最も出現頻度高い値(0)を0、2番目に出現頻度の高い値(1)を1、3番目に出現頻度に高い値(2)を2、4番目に出現頻度の高い値(3)を3として、インター予測の場合、最も出現頻度高い値(3)を0、2番目に出現頻度の高い値(2)を1、3番目に出現頻度に高い値(3)を2、4番目に出現頻度の高い値(0)を3として修正している。こうすることで、式(68)後のプライマリ変換識別子pt_idxのbinIdx=iのbinのシンボルが0、又は1となる発生確率をイントラとインターで同等にすることができる。従って、イントラとインターの場合とで、レギュラーモードにより算術符号化の対象となるbinIdx=iの位置のbinに対して、同一のコンテキストを指定するコンテキストインデックスctxIncを割り当ててもよい。この場合、イントラとインターで異なるコンテキストを指定するコンテキストインデックスctxIncを割り当てる場合と同等の符号化効率を達成しつつ、さらに、コンテキストを保持するメモリサイズを削減することができる。
例えば、図38のM3の場合は、binIdx=0(先頭)のbinについて、コンテキストを用いるレギュラーモードにより算術符号化を行い、binIdx=1…2のbinについては、バイパスモードにより算術符号化を行う例を示している。M3の場合、binIdx=0のbinについては、イントラ、インターによらず、コンテキストを指定するインデックスctxIncの値を0にする。
また、図38のM4の場合は、binIdx=0…1のbinについて、コンテキストを用いるレギュラーモードにより算術符号化を行い、binIdx=2のbinについては、バイパスモードにより算術符号化を行う例を示している。M4の場合、イントラ、インターによらず、binIdx=0のbinについては、コンテキストを指定するインデックスctxIncの値を0にし、binIdx=1のbinについては、コンテキストを指定するインデックスctxIncの値を1にする。
図38のM0を用いることにより、コンテキストを用いるレギュラーモードによる算術符号化をせずに、すべてバイパスモードにより算術符号化するため、非特許文献1に記載の方法に比べて、高速にbin列を算術符号化することができ、かつ、従来技術比べてコンテキストを保持するメモリサイズを削減することができる。
また、図38のM1を用いることにより、先頭のbin(binIdx=0)に対して、コンテキストを用いるレギュラーモードによる算術符号化を行い、残りのbinをバイパスモードにより算術符号化するため、非特許文献1に記載の方法よりも比較的高速にbin列を算術符号化することができ、かつ、コンテキストを保持するメモリサイズを削減することができる。また、符号化効率も改善される。
図38のM2を用いるメリットは、binIdx=0…1のbinに対して、コンテキストを用いるレギュラーモードによる算術符号化を行い、残りのbinをバイパスモードにより算術符号化するため、非特許文献1に記載の方法よりも比較的高速にbin列を算術符号化することができる。また、符号化効率も改善される。
また、図38のM3の場合、先頭のbin(binIdx=0)に対して、イントラ、インターによらず、同一のコンテキストを指定するコンテキストインデックスを割り当てる。従って、M1と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらにコンテキストを保持するメモリサイズを削減することができる。
図38のM4の場合、binIdx=0…1のbinに対して、イントラ、インターによらず、それぞれ、同一のコンテキストを指定するコンテキストインデックスを割り当てる。従って、M2と比較して、同等の処理量、及び符号化効率を達成しつつ、さらにコンテキストを保持するメモリサイズを削減することができる。
ステップS518において、プライマリ変換識別子符号化部402は、変数binIdxの値を更新する(binIdx += 1)。ステップS518の処理が終了すると、処理はステップS515に戻り、それ以降の処理を繰り返す。すなわち、ステップS515において、binIdxの値が、maxBinIdxの値以上と判定されるまで、ステップS515乃至ステップS518の処理を繰り返す。ステップS515において、binIdxの値が、maxBinIdxの値以上と判定された場合、処理はステップS519に進む。
ステップS519において、プライマリ変換識別子符号化部402は、プライマリ変換識別子pt_idxが、プライマリ変換識別子pt_idxの最大値maxPTIdxより小さいか否かを判定する。プライマリ変換識別子pt_idxの値が、maxPTIdxの値より小さいと判定された場合(pt_idx < maxPTIdx)、処理はステップS520に進む。
ステップS520において、プライマリ変換識別子符号化部402は、binIdx=iの位置のbinのシンボルsymbolの値を0に設定する(symbol=0)。
ステップS521において、プライマリ変換識別子符号化部402は、2値化されたプライマリ変換識別子pt_idxのbin列でbinIdx=iの位置のbinのシンボルを算術符号化する。
ステップS521の処理が終了すると、プライマリ変換識別子符号化処理が終了し、処理は図36に戻る。また、ステップS519において、プライマリ変換識別子pt_idxの値が、maxPTIdxの値以上であると判定された場合(pt_idx >= maxPTIdx)、ステップS520およびステップS521の処理がスキップされ、プライマリ変換識別子符号化処理が終了し、処理は図36に戻る。
以上の処理の疑似コードを図39のAに示す。このようにすることにより、図39のBに示されるようなTU(トランケーテッド・ユーナリー2値化)を用いた2値化を実現することができる。例えば、プライマリ変換識別子pt_idxの値が0であれば、ビット列0が得られる。また、例えば、プライマリ変換識別子pt_idxの値が1であれば、ビット列10が得られる。
このようにすることにより、プライマリ変換識別子pt_idxの符号化効率の低減を抑制することができる。
また、ステップS513の処理を行うことにより、イントラ予測とインター予測でのプライマリ変換識別子pt_idxの出現頻度が逆傾向にある性質を利用することができ、より効率的な算術符号化を行うことができる。
さらに、ステップS517の処理において図38のM0を用いる場合、コンテキストを用いるレギュラーモードによる算術符号化をせずに、すべてバイパスモードにより算術符号化するため、非特許文献1に記載の方法に比べて、高速にbin列を算術符号化することができ、かつ、従来技術比べてコンテキストを保持するメモリサイズを削減することができる。
また、ステップS517の処理において図38のM1を用いる場合、先頭のbin(binIdx=0)に対して、コンテキストを用いるレギュラーモードによる算術符号化を行い、残りのbinをバイパスモードにより算術符号化するため、非特許文献1に記載の方法よりも比較的高速にbin列を算術符号化することができ、かつ、コンテキストを保持するメモリサイズを削減することができる。また、符号化効率も改善される。
さらに、ステップS517の処理において図38のM2を用いる場合、binIdx=0…1のbinに対して、コンテキストを用いるレギュラーモードによる算術符号化を行い、残りのbinをバイパスモードにより算術符号化するため、非特許文献1に記載の方法よりも比較的高速にbin列を算術符号化することができる。また、符号化効率も改善される。
また、ステップS517の処理において図38のM3を用いる場合、先頭のbin(binIdx=0)に対して、イントラ、インターによらず、同一のコンテキストを用いるレギュラーモードによる算術符号化を行い、残りのbinをバイパスモードにより算術符号化する。従って、M1と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらに、コンテキストを保持するメモリサイズを削減することができる。
さらに、ステップS517の処理において図38のM4を用いる場合、binIdx=0…1のbinに対して、イントラ、インターによらず、それぞれ同一のコンテキストを用いるレギュラーモードによる算術符号化を行い、残りのbinをバイパスモードにより算術符号化する。従って、M2と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらに、コンテキストを保持するメモリサイズを削減することができる。
なお、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップS516のシンボルsymbolを0とし、ステップS520のシンボルsymbolを1として算術符号化を行うようにしてもよい。その場合、図39のCに示されるTUを用いて、プライマリ変換識別子pt_idxの2値化を行うことになる。
また、ステップS514乃至ステップS521の処理の代わりに、図39のBや図39のCに示されるTUのルックアップテーブルを参照して、直接プライマリ変換識別子pt_idxの値からbin列を求め、そのbin列を算術符号化するようにしてもよい。
<復号部>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、その量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、そのプライマリ変換係数を画像とその画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、逆プライマリ変換の内容に関する第1の情報の符号化データの復号をスキップする復号部を備える。つまり、この場合の復号部211は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、その量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、そのプライマリ変換係数を画像とその画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、逆プライマリ変換の内容に関する第1の情報の符号化データの復号をスキップする。
図40は、この場合の復号部211がプログラム等を実行することにより実現する、プライマリ変換識別子の復号に関する主な機能の例を示す機能ブロック図である。図40に示されるように、この場合の復号部211は、プログラムを実行することにより、プライマリ変換識別子の復号に関する機能として、例えば、プライマリ変換有効フラグ復号部411およびプライマリ変換識別子復号部412を有することができる。
プライマリ変換有効フラグ復号部411は、逆プライマリ変換の許可に関する情報であるプライマリ変換有効フラグpt_enabled_flagの符号化データの復号に関する処理を行う。プライマリ変換識別子復号部412は、逆プライマリ変換の内容に関する情報であるプライマリ変換識別子pt_idxの復号に関する処理を行う。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、プライマリ変換識別子pt_idx等の符号化データの復号を、変換量子化バイパスフラグtransquant_bypass_flagの値等に応じて行う。このプライマリ変換識別子pt_idx等の復号の流れの例を図41のフローチャートを参照して説明する。つまり、図41に示される復号処理は、図13のステップS201において行われる復号処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化データの復号は任意の方法で行われる。
復号処理が開始されると、ステップS541において、プライマリ変換有効フラグ復号部411は、ビットストリーム(符号化データ)のビット列からプライマリ変換有効フラグpt_enabled_flagの符号化データを復号し、ヘッダ情報の一部として出力する。
ステップS542において、プライマリ変換識別子復号部412は、ヘッダ情報Hinfoに含まれるプライマリ変換有効フラグpt_enabled_flagが、1(真)であるか否かを判定する。プライマリ変換有効フラグpt_enabled_flagが0であると判定された場合、ステップS543乃至ステップS547の処理がスキップされ、処理はステップS548に進む。
逆プライマリ変換の実行が許可されていないのであれば、逆プライマリ変換は実行されず、プライマリ変換識別子pt_idxは符号化側から伝送されないので、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
また、ステップS542において、プライマリ変換有効フラグpt_enabled_flagが1であると判定された場合、処理はステップS543に進む。
ステップS543において、プライマリ変換識別子復号部412は、変換情報Tinfoに含まれる変換量子化バイパスフラグtransquant_bypass_flagが1(真)であるか否かを判定する。変換量子化バイパスフラグtransquant_bypass_flagが1であると判定された場合、すなわち、逆変換(逆セカンダリ変換および逆プライマリ変換)並びに逆量子化をスキップ(バイパス)すると判定された場合、ステップS543乃至ステップS547の処理がスキップされ、処理はステップS548に進む。
逆変換および逆量子化がバイパスされるのであれば、プライマリ変換識別子pt_idxは不要である。したがって、この場合、プライマリ変換識別子pt_idxは符号化側から伝送されないので、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS543において、変換量子化バイパスフラグtransquant_bypass_flagが0であると判定された場合、すなわち、逆変換および逆量子化をスキップ(バイパス)しないと判定された場合、処理はステップS544に進む。
ステップS544において、プライマリ変換識別子復号部412は、変換情報TInfoに含まれる変換スキップフラグts_flagが1(真)であるか否かを判定する。変換スキップフラグts_flagが1であると判定された場合、すなわち、逆変換(逆プライマリ変換)をスキップすると判定された場合、ステップS545乃至ステップS547の処理がスキップされ、処理はステップS548に進む。
逆プライマリ変換がスキップされるのであれば、プライマリ変換識別子pt_idxは不要である。したがって、この場合、プライマリ変換識別子pt_idxは符号化側から伝送されないので、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS544において、変換スキップフラグts_flagが0であると判定された場合、すなわち、逆変換(逆プライマリ変換)を実行すると判定された場合、処理はステップS545に進む。
ステップS545において、プライマリ変換識別子復号部412は、処理対象の変換ブロックのサイズTBSizeが最大プライマリ変換ブロックサイズMaxPTSize以下であるかいなか(条件式(TBSize <= MaxPTSize)の論理値が1(真)であるかいなか)判定する。処理対象の変換ブロックのサイズTBSizeが最大プライマリ変換ブロックサイズMaxPTSizeより大きいと判定された場合(TBSize > MaxPTSize)、ステップS546およびステップS547の処理がスキップされ、処理はステップS548に進む。
最大プライマリ変換ブロックサイズMaxPTSizeは、逆プライマリ変換の実行が許可される最大のブロックサイズを示す情報である。つまり、変換ブロックのサイズがこの最大プライマリ変換ブロックサイズMaxPTSizeより大きい場合、逆プライマリ変換の実行が許可されないので、プライマリ変換識別子pt_idxは符号化側から伝送されない。したがって、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS545において、処理対象の変換ブロックのサイズTBSizeが最大プライマリ変換ブロックサイズMaxPTSize以下であると判定された場合(TBSize <= MaxPTSize)、処理はステップS546に進む。
なお、条件式(TBSize <= MaxPTSize)は、2を底とするTBサイズの対数値log2TBSize、2を底とする最大プライマリ変換ブロックサイズMaxPTSizeの対数値log2MaxPTSizeを用いて、条件式(log2TBSize <= log2MaxPTSize)に置き換えても良い。
ステップS546において、プライマリ変換識別子復号部412は、残差情報Rinfoを参照して、変換ブロック内に存在する非ゼロ係数の総数numSig(sig_coeff_flag == 1の総数)を以下の式(70)のように導出する。
numSig=Σ(sig_coeff_flag(i,j))
(i=0…TBSize-1,j=0…TBSize-1)
・・・(70)
ステップS547において、プライマリ変換識別子復号部412は、変換ブロック内の非ゼロ係数の数numSigが閾値THより大きいか否か(numSig >= TH)を判定する。非ゼロ係数の総数numSigが所定の閾値THより少ない(numSig < TH)と判定された場合、処理はステップS548に進む。
非ゼロ係数の総数numSigが所定の閾値THより少ない場合、すなわち、非ゼロ係数が少ない疎な残差信号の場合、エナジーコンパクションが低下し、符号化効率が低減するおそれがあるので、符号化効率の低減を抑制するためには、変換スキップまたは所定の逆直交変換(例えば、DCT-Type 2の逆変換)を適用するのが望ましい。つまり、この場合、プライマリ変換識別子pt_idxは符号化側から伝送されない。したがって、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS548において、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの復号をスキップする。また、この場合、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの値が、水平方向のプライマリ変換Phor、及び垂直方向のプライマリ変換Pverに所定の直交変換(例えば、DCT-Type 2)を用いることを示す識別子の値(例えば-1)であると推定する。つまり、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの値を-1に設定する(pt_idx=-1)。ステップS548の処理が終了すると復号処理が終了し、処理は、図13に戻る。
ステップS547において、非ゼロ係数の総数numSigが所定の閾値TH以上である(numSig >= TH)と判定された場合、処理はステップS549に進む。
ステップS549において、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データを復号する。この復号の詳細については後述する。
つまり、上述の条件式(66)が1(真)となる場合のみ、プライマリ変換識別子pt_idxの符号化データが復号される。これは、図34を参照して説明したシンタックスの上から7段目に対応する。
ステップS549の処理が終了すると、復号処理が終了し、処理は、図13に戻る。
以上のように復号処理を実行することにより、画像復号装置200は、変換量子化バイパスを適用する場合に、プライマリ変換識別子pt_idxの復号処理をスキップすることができる。すなわち、プライマリ変換識別子pt_idxの復号に係る処理量および符号量を低減することができる。
なお、上述した復号処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(66)は、実施可能な範囲で演算を変更可能である。
上記の画像復号装置200では、変換量子化バイパスを適用する場合に、変換ブロック単位でのプライマリ変換識別子pt_idxの復号処理をスキップする事例について説明したが、これに限定にされない。例えば、CU単位で、変換ブロック単位のプライマリ変換識別子pt_idxを復号(符号化)する否かを示すCUプライマリ変換フラグcu_pt_flagを変換量子化バイパスフラグtransquant_bypass_flagの値に応じて復号する。CUプライマリ変換フラグcu_pt_flagが1(真)の場合には、変換ブロック単位のプライマリ変換識別子pt_idxの復号をし、CUプライマリ変換フラグcu_pt_flagが0(偽)の場合には、変換ブロック単位のプライマリ変換識別子pt_idxの復号を省略し、プライマリ変換識別子pt_idxの値を-1と推定してもよい。この場合、復号部214は、さらに、不図示のCUプライマリ変換フラグ復号部413を備える。
CUプライマリ変換フラグ復号部413は、TU単位でのプライマリ変換識別子pt_idxの復号(符号化)の許可に関する情報であるCUプライマリ変換フラグcu_pt_flagの復号に関する処理を行う。CUプライマリ変換フラグ復号部413におけるCUプライマリ変換フラグcu_pt_flagの復号は例えば、以下の疑似コードに基づいて行う。
if ( !transquant_bypass_flag && pt_enabled_flag )
{
decode cu_pt_flag
}
すなわち、CUプライマリ変換フラグ復号部413は、変換量子化バイパスフラグtransquant_bypass_flagが0(偽)、かつプライマリ変換有効フラグpt_enabled_flagが1(真)のときにCUプライマリ変換フラグcu_pt_flagを復号し、それ以外の場合(変換量子化バイパスフラグtransquant_bypass_flagが1(真)、またはプライマリ変換有効フラグpt_enabled_flagが0(偽))のときは、CUプライマリ変換フラグcu_pt_flagの復号を省略し、CUプライマリ変換フラグcu_pt_flagの値を0と推定する。すなわち、変換量子化バイパスフラグを適用する場合には、CUプライマリ変換フラグcu_pt_flagは伝送されない。従って、CUプライマリ変換フラグ復号部413は、CUプライマリ変換フラグcu_pt_flagの復号をスキップし、CUプライマリ変換フラグcu_pt_flagの値を0と推定する。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減をすることができる。
なお、この場合、プライマリ変換識別子復号部412における、プライマリ変換識別子pt_idxの復号条件は、例えば、以下の疑似コードに基づいて行う。
if( cu_pt_flag && ts_flag==0 && numSig >= TH)
{
decode pt_idx
}
else {
pt_idx = -1
}
すなわち、プライマリ変換識別子復号部412は、CUプライマリ変換フラグcu_pt_flagが1(真)、かつ変換スキップフラグts_flagが0(偽)、かつ、非ゼロ係数数numSigが閾値TH以上のとき、プライマリ変換識別子pt_idxを復号し、それ以外の場合(CUプライマリ変換フラグcu_pt_flagが0(偽)、または変換スキップフラグts_flagが1(真)、または、非ゼロ係数数numSigが閾値THより小さい)ときは、プライマリ変換識別子pt_idxの復号を省略し、プライマリ変換識別子pt_idxの値を所定の直交変換(例えば、DCT-Type 2など)を適用することを示す値(‐1)であると推定する。すなわち、CUプライマリ変換フラグが0の場合には、プライマリ変換識別子pt_idxを復号側に伝送されない。従って、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの復号をスキップし、該識別子の値を、所定の直交変換を適用することを示す値(-1)へ推定する。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減をすることができる。
<プライマリ変換識別子復号処理の流れ>
次に、図42のフローチャートを参照して、図41のステップS549において実行されるプライマリ変換識別子復号処理の流れの例を説明する。
プライマリ変換識別子復号処理が開始されると、プライマリ変換識別子復号部412は、ステップS551において、変数の初期化を行う。例えば、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxを0に設定する(pt_idx=0)。また、例えば、プライマリ変換識別子復号部412は、符号化データのビット列の1binを算術復号して得られるシンボルの値を入れる変数であるsymbolを0に設定する(symbol=0)。また、例えば、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの符号化データのビット列で復号対象のbinの位置を示すインデックスであるbinIdxを0に設定する(binIdx=0)。また、例えば、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの最大値であるmaxPTIdxを3に設定する(maxPTIdx=3)。
ステップS552において、プライマリ変換識別子復号部412は、ビット列でbinIdx=iの位置のbinを算術復号し、得られたシンボルの値を、変数symbolへ設定する。ここで、プライマリ変換識別子復号部412は、binIdx=iの位置のbinを算術復号する際に、図38に示すように、各binIdxに応じたコンテキストを用いて、算術復号する。
例えば、図38のM0の場合は、binIdx=0…2まですべてのbinについて、コンテキストを用いないバイパスモードにより算術復号を行う例を示している。なお、バイパスモードとは、シンボル0とシンボル1の発生確率が等確率であるとして、算術復号を行うモードである。
また、図38のM1の場合は、binIdx=0(先頭)のbinについて、コンテキストを用いるレギュラーモードにより算術復号を行い、binIdx=1…2のbinについては、バイパスモードにより算術復号を行う例を示している。なお、レギュラーモードとは、シンボル0とシンボル1の発生確率を更新しながら、算術復号を行うモードである。例えば、M1の場合、binIdx=0のbinについては、イントラの場合、コンテキスを指定するインデックスctxIncの値を0にし、インターの場合には、1を割り当てる。
また、図38のM2の場合は、binIdx=0…1のbinについて、コンテキストを用いるレギュラーモードにより算術復号を行い、binIdx=2のbinについては、バイパスモードにより算術復号を行う例を示している。例えば、M2の場合、binIdx=0のbinについては、イントラの場合、コンテキストを指定するインデックスctxIncの値を0にし、インターの場合には、1を割り当てる。また、binIdx=1のbinについては、イントラの場合、コンテキストを指定するインデックスctxIncの値を2にし、インターの場合には、3を割り当てる。
また、図38のM1及びM2では、レギュラーモードにより算術復号の対象となるbinIdx=iの位置のbinに対して、イントラとインターの場合とで、異なるコンテキストを指定するコンテキストインデックスctxIncを割り当ている。しかし、画像符号化装置100では、上述の式(68)において、プライマリ変換識別子pt_idxの各値の出現確率が、イントラ予測とインター予測で逆の傾向を利用して、プライマリ変換識別子pt_idxについて、イントラ予測の場合、最も出現頻度高い値(0)を0、2番目に出現頻度の高い値(1)を1、3番目に出現頻度に高い値(2)を2、4番目に出現頻度の高い値(3)を3として、インター予測の場合、最も出現頻度高い値(3)を0、2番目に出現頻度の高い値(2)を1、3番目に出現頻度に高い値(3)を2、4番目に出現頻度の高い値(0)を3として修正して、算術符号化を行っている。こうすることで、式(68)後のプライマリ変換識別子pt_idxのbinIdx=iのbinのシンボルが0、又は1となる発生確率をイントラとインターで同等にすることができる。従って、画像復号装置200においても、イントラとインターの場合とで、レギュラーモードにより算術復号の対象となるbinIdx=iの位置のbinに対して、同一のコンテキストを指定するコンテキストインデックスctxIncを割り当ててもよい。この場合、イントラとインターで異なるコンテキストを指定するコンテキストインデックスctxIncを割り当てる場合と同等の符号化効率を達成しつつ、さらに、コンテキストを保持するメモリサイズを削減することができる。
例えば、図38のM3の場合は、binIdx=0(先頭)のbinについて、コンテキストを用いるレギュラーモードにより算術復号を行い、binIdx=1…2のbinについては、バイパスモードにより算術復号を行う例を示している。M3の場合、binIdx=0のbinについては、イントラ、インターによらず、コンテキストを指定するインデックスctxIncの値を0にする。
また、図38のM4の場合は、binIdx=0…1のbinについて、コンテキストを用いるレギュラーモードにより算術復号を行い、binIdx=2のbinについては、バイパスモードにより算術復号を行う例を示している。M4の場合、イントラ、インターによらず、binIdx=0のbinについては、コンテキストを指定するインデックスctxIncの値を0にし、binIdx=1のbinについては、コンテキストを指定するインデックスctxIncの値を1にする。
図38のM0を用いることにより、コンテキストを用いるレギュラーモードによる算術復号をせずに、すべてバイパスモードにより算術復号するため、非特許文献1に記載の方法に比べて、高速にbin列からシンボルを復号することができ、かつ、非特許文献1に記載の方法に比べてコンテキストを保持するメモリサイズを削減することができる。
図38のM1を用いることにより、先頭のbin(binIdx=0)に対して、コンテキストを用いるレギュラーモードによる算術復号を行い、残りのbinをバイパスモードにより算術復号するため、非特許文献1に記載の方法より比較的高速にbin列からシンボルを復号することができ、かつ、コンテキストを保持するメモリサイズを削減することができる。また、符号化効率も改善される。
図38のM2を用いることにより、binIdx=0…1のbinに対して、コンテキストを用いるレギュラーモードによる算術復号を行い、残りのbinをバイパスモードにより算術復号するため、非特許文献1に記載の方法より比較的高速にbin列からシンボルを復号することができる。また、符号化効率も改善される。
また、図38のM3の場合、先頭のbin(binIdx=0)に対して、イントラ、インターによらず、同一のコンテキストを指定するコンテキストインデックスを割り当てる。従って、M1と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらにコンテキストを保持するメモリサイズを削減することができる。
図38のM4の場合、binIdx=0…1のbinに対して、イントラ、インターによらず、それぞれ、同一のコンテキストを指定するコンテキストインデックスを割り当てる。従って、M2と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらにコンテキストを保持するメモリサイズを削減することができる。
ステップS553において、プライマリ変換識別子復号部412は、シンボルsymbolの値が1であるか判定する。シンボルsymbolが1であると判定された場合、処理はステップS554に進む。
ステップS554において、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxおよび変数binIdxの値を更新する。例えば、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの値を+1インクリメントする(pt_idx += 1)。また、例えば、プライマリ変換識別子復号部412は、変数binIdxの値を+1インクリメントする(binIdx += 1)。
ステップS555において、プライマリ変換識別子復号部412は、プライマリ変換識別子pt_idxの値が、プライマリ変換識別子pt_idxの最大値maxPTIdxに等しいか否か判定する。プライマリ変換識別子pt_idxの値が、最大値maxPTIdxの値と等しくないと判定された場合(pt_idx != maxPTIdx)、処理はステップS556に進む。また、ステップS553において、シンボルsymbolが0であると判定された場合、処理はステップS556に進む。
ステップS556において、プライマリ変換識別子復号部412は、シンボルsymbolの値が1であるか否かを判定する。シンボルsymbolの値が1であると判定された場合、処理はステップS552に戻り、それ以降の処理が繰り返される。
また、ステップS555において、プライマリ変換識別子pt_idxの値が、最大値maxPTIdxの値と等しいと判定された場合(pt_idx == maxPTIdx)、処理はステップS557に進む。また、ステップS556において、シンボルsymbolの値が0であると判定された場合、処理はステップS557に進む。
ステップS557において、プライマリ変換識別子復号部412は、予測モード情報Pinfoを参照して、処理対象変換ブロックを含むCUがイントラ予測であるか、インター予測であるか判定する。インター予測であると判定された場合、処理はステップS558に進む。
ステップS558において、プライマリ変換識別子復号部412は、復号して得られたプライマリ変換識別子pt_idxの値を以下の式(71)に基づいて、修正する。
pt_idx=maxPTIdx - pt_idx
・・・(71)
プライマリ変換識別子pt_idxの各値の出現確率が、イントラ予測とインター予測で逆の傾向にある。そこで、イントラ予測の場合、最も出現頻度高い値(0)を0、2番目に出現頻度の高い値(1)を1、3番目に出現頻度に高い値(2)を2、4番目に出現頻度の高い値(3)を3として算術符号化され、インター予測の場合、最も出現頻度高い値(3)を0、2番目に出現頻度の高い値(2)を1、3番目に出現頻度に高い値(3)を2、4番目に出現頻度の高い値(0)を3として算術符号化されている。プライマリ変換識別子復号部412は、このようなプライマリ変換識別子pt_idxの値の正しい割り当てへ戻すために、式(71)のように処理を行う。
ステップS558の処理が終了すると、プライマリ変換識別子復号処理が終了し、処理は図41に戻る。また、ステップS557において、イントラ予測であると判定された場合、ステップS558の処理はスキップされ、プライマリ変換識別子復号処理が終了し、処理は図41に戻る。
以上の処理の疑似コードを図43のAに示す。このようにすることにより、図43のBに示されるようなTU(トランケーテッド・ユーナリー2値化)を用いた多値化(逆2値化)を実現することができる。例えば、ビット列が0であれば、プライマリ変換識別子pt_idxの値は0となる。また、例えば、ビット列が10であれば、プライマリ変換識別子pt_idxの値は1となる。
このようにすることにより、プライマリ変換識別子pt_idxの符号化効率の低減を抑制することができる。
また、ステップS558の処理を行うことにより、イントラ予測とインター予測でのプライマリ変換識別子pt_idxの出現頻度が逆傾向にある性質を利用することができ、より効率的な算術復号を行うことができる。
さらに、ステップS552の処理において、図38のM0を用いる場合、コンテキストを用いるレギュラーモードによる算術復号をせずに、すべてバイパスモードにより算術復号するため、非特許文献1に記載の方法に比べて、高速にbin列からシンボルを復号することができ、かつ、非特許文献1に記載の方法に比べてコンテキストを保持するメモリサイズを削減することができる。
また、ステップS552の処理において、図38のM1を用いる場合、先頭のbin(binIdx=0)に対して、コンテキストを用いるレギュラーモードによる算術復号を行い、残りのbinをバイパスモードにより算術復号するため、非特許文献1に記載の方法よりも比較的高速にbin列からシンボルを復号することができ、かつ、コンテキストを保持するメモリサイズを削減することができる。また、符号化効率も改善される。
また、ステップS552の処理において、図38のM2を用いる場合、binIdx=0…1のbinに対して、コンテキストを用いるレギュラーモードによる算術復号を行い、残りのbinをバイパスモードにより算術復号するため、非特許文献1に記載の方法よりも比較的高速にbin列からシンボルを復号することができる。また、符号化効率も改善される。
また、ステップS552の処理において図38のM3を用いる場合、先頭のbin(binIdx=0)に対して、イントラ、インターによらず、同一のコンテキストを用いるレギュラーモードによる算術復号を行い、残りのbinをバイパスモードにより算術復号する。従って、M1と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらに、コンテキストを保持するメモリサイズを削減することができる。
さらに、ステップS552の処理において図38のM4を用いる場合、binIdx=0…1のbinに対して、イントラ、インターによらず、それぞれ同一のコンテキストを用いるレギュラーモードによる算術復号を行い、残りのbinをバイパスモードにより算術復号する。従って、M2と比較して、同等の処理量、及び同等の符号化効率を達成しつつ、さらに、コンテキストを保持するメモリサイズを削減することができる。
なお、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップS553やステップS556において、シンボルsymboの判定条件を1に等しいとしているが、0に等しいとしてもよい。その場合、図43のCに示されるTUを用いて、プライマリ変換識別子pt_idxの逆2値化を行うことになる。
また、ステップS552乃至ステップS556の処理の代わりに、図43のBや図43のCに示されるTUのルックアップテーブルを参照して、直接ビット列からプライマリ変換識別子pt_idxの値を求めるようにしてもよい。
<6.第6の実施の形態>
<CU,PU、およびTUの形状>
図44は、第6の実施の形態におけるCU,PU、およびTUの形状について説明する図である。
第6の実施の形態におけるCU,PU、およびTUは、JVET-C0024, “EE2.1: Quadtree plus binary tree structure integration with JEM tools”に記載されているQTBT(Quad tree plus binary tree)のCU,PU、およびTUである。
具体的には、第6の実施の形態におけるCUのブロック分割では、1つのブロックを4(=2x2)個だけでなく、2(=1x2,2x1)個のサブブロックにも分割することができる。即ち、第6の実施の形態では、CUのブロック分割は、1つのブロックを4個または2個のサブブロックへの分割を再帰的に繰り返すことにより行われ、結果として四分木(Quad-Tree)状または水平方向もしくは垂直方向の2分木(Binary-Tree)状のツリー構造が形成される。
その結果、CUの形状は、正方形だけでなく、長方形である可能性がある。例えば、LCUサイズが128x128である場合、CUのサイズ(水平方向のサイズw×垂直方向のサイズh)は、図44に示すように、128x128,64x64,32x32,16x16,8x8,4x4といった正方形のサイズだけでなく、128x64,128x32,128x16,128x8,128x4,64x128,32x128,16x128,8x128,4x128,64x32,64x16,64x8,64x4,32x64,16x64,8x64,4x64,32x16,32x8,32x4,16x32,8x32,4x32,16x8,16x4,8x16,4x16, 8x4,4x8といった長方形のサイズである可能性がある。また、第6の実施の形態では、PUとTUは、CUと同一である。
<変換スキップフラグの符号化・復号のスキップ>
以上により、第6の実施の形態では、変換ブロックの水平方向のサイズTBXSizeと垂直方向のサイズTBYSizeが異なる場合がある。従って、第6の実施の形態では、最大変換スキップブロックサイズMaxTSSizeとして、変換スキップブロックの水平方向のサイズTBXSizeと垂直方向のサイズTBYSizeのうちの大きい方max(TBXSize,TBYSize)の最大値が設定される。そして、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、(逆)変換のスキップに関する変換スキップフラグts_flagの符号化や復号がスキップされる。第6の実施の形態の変換スキップフラグts_flagの符号化や復号のスキップ以外の処理は、第3の実施の形態の処理と同様である。
<シンタクス>
図45は、第6の実施の形態における変換スキップフラグts_flag等の符号化の制御を表す疑似コードを記載したシンタクステーブルの例を示す図である。
図45のシンタクステーブルは、上から4段目を除いて、図20のシンタクステーブルと同一である。
図45の上から4段目に示されるように、変換スキップフラグts_flagの符号化(すなわち、変換スキップフラグts_flagの符号化データの復号)は、max(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSize以下であることが条件の1つとなる。つまり、max(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSizeより大きい場合、変換スキップフラグts_flagの符号化(変換スキップフラグts_flagの符号化データの復号)がスキップされる。
また、変換スキップ有効フラグts_enabled_flagと変換量子化バイパスフラグtransquant_bypass_flagが1であることも、変換スキップフラグts_flagの符号化(変換スキップフラグts_flagの符号化データの復号)の条件の1つとなる。つまり、(逆)変換と(逆)量子化の両方がスキップされる場合、および、変換スキップが許可されていない場合、変換スキップフラグts_flagの符号化(変換スキップフラグts_flagの符号化データの復号)がスキップされる。
<符号化部>
この場合も画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。つまり、第1の実施の形態において説明した画像符号化装置100が、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、変換スキップフラグts_flagの符号化をスキップする符号化部を備える。つまり、この場合の符号化部114は、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、変換スキップフラグts_flagの符号化をスキップする。
図46は、この場合の符号化部114がプログラム等を実行することにより実現する、変換スキップフラグts_flagの符号化に関する主な機能の例を示す機能ブロック図である。図46に示されるように、この場合の符号化部114は、プログラムを実行することにより、変換スキップフラグts_flagの符号化に関する機能として、例えば、第3の実施の形態において説明した符号化部114と同様の、セカンダリ変換有効フラグ符号化部301、変換スキップ有効フラグ符号化部303、最大変換スキップブロックサイズ符号化部304、変換量子化バイパスフラグ符号化部305、およびセカンダリ変換フラグ符号化部321の機能を有することができる。さらに、符号化部114は、プログラムを実行することにより、変換スキップフラグts_flagの符号化に関する機能として、例えば、変換スキップフラグ符号化部441の機能を有することができる。
変換スキップフラグ符号化部441は、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、変換スキップフラグts_flagの符号化に関する処理を行う。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、変換スキップフラグts_flagの符号化を、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果等に基づいて行う。この変換スキップフラグts_flag等の符号化の流れの例を図47および図48のフローチャートを参照して説明する。つまり、図47および図48に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
図47のステップS601乃至S606の処理は、図22のステップS361乃至S366の処理と同様であるので、説明は省略する。
ステップS607において、変換スキップフラグ符号化部441は、処理対象の変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSize以下であるか否か(条件式max(TBXSize,TBYSize)<=MaxTSSizeが真であるか否か)を判定する。処理対象の変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSizeより大きいと判定された場合、すなわち、上述の条件式が0(偽)であると判定された場合、ステップS608の処理がスキップ(省略)され、処理は図48のステップS609に進む。
max(TBXSize,TBYSize)が最大変換スキップブロックサイズより大きい場合、変換スキップが許可されないので、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagを復号側に伝送する必要がないので、変換スキップフラグ符号化部441は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS607において、処理対象の変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSize以下であると判定された場合、すなわち、上述の条件式が1(真)であると判定された場合、処理はステップS608に進む。
ステップS608乃至S615の処理は、図22のステップS368の処理および図23のステップS371乃至S377の処理と同様であるので、説明は省略する。
以上のように、変換スキップフラグ符号化部441は、変換ブロックの水平方向のサイズTBXSizeおよび垂直方向のサイズTBYSizeに基づいて、変換スキップフラグts_flagの符号化をスキップする。従って、変換ブロックの形状が長方形である場合であっても、変換スキップフラグts_flagの符号化を適切にスキップすることができる。
<復号部>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、変換スキップフラグts_flagの復号をスキップする復号部を備える。つまり、この場合の復号部211は、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、変換スキップフラグts_flagの復号をスキップする。
図49は、この場合の復号部211がプログラム等を実行することにより実現する、変換スキップフラグts_flagの符号化データの復号に関する主な機能の例を示す機能ブロック図である。図49に示されるように、この場合の復号部211は、プログラムを実行することにより、変換スキップフラグts_flagの符号化データの復号に関する機能として、例えば、第3の実施の形態において説明した復号部211と同様の、セカンダリ変換有効フラグ復号部311、変換スキップ有効フラグ復号部313、最大変換スキップブロックサイズ復号部314、変換量子化バイパスフラグ復号部315、およびセカンダリ変換フラグ復号部331の機能を有することができる。さらに、復号部211は、プログラムを実行することにより、変換スキップフラグts_flagの符号化データの復号に関する機能として、例えば、変換スキップフラグ復号部461の機能を有することができる。
セカンダリ変換フラグ復号部331は、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果に基づいて、変換スキップフラグts_flagの符号化データの復号に関する処理を行う。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、変換スキップフラグts_flagの符号化データの復号を、max(TBXSize,TBYSize)と最大変換スキップブロックサイズMaxTSSizeの比較結果等に基づいて行う。この変換スキップフラグts_flag等の符号化データの復号の流れの例を図50および図51のフローチャートを参照して説明する。つまり、図50および図51に示される符号化処理は、図13のステップS201において行われる復号処理の一部として実行される。
図50のステップS631乃至S636の処理は、図25のステップS381乃至S386の処理と同様であるので、説明は省略する。
ステップS637において、変換スキップフラグ復号部461は、処理対象の変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSize以下であるか否か(条件式max(TBXSize,TBYSize)<=MaxTSSizeが真であるか否か)を判定する。処理対象の変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSizeより大きいと判定された場合、すなわち、上述の条件式が0(偽)であると判定された場合、処理はステップS638に進む。
変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズより大きい場合、変換スキップが許可されないので、変換スキップフラグts_flagの値は0に固定される。したがって、この場合、変換スキップフラグts_flagは符号化側から伝送されないので、変換スキップフラグ復号部461は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
また、ステップS637において、処理対象の変換ブロックのmax(TBXSize,TBYSize)が最大変換スキップブロックサイズMaxTSSize以下であると判定された場合、すなわち、上述の条件式が1(真)であると判定された場合、処理はステップS639に進む。
ステップS638乃至S647の処理は、図25のステップS388およびS389並びに図26のステップS391乃至S398の処理と同様であるので、説明は省略する。
以上のように、変換スキップフラグ復号部461は、変換ブロックの水平方向のサイズTBXSizeおよび垂直方向のサイズTBYSizeに基づいて、変換スキップフラグts_flagの符号化をスキップする。従って、変換ブロックの形状が長方形である場合であっても、変換スキップフラグts_flagの復号を適切にスキップすることができる。
なお、変換スキップフラグts_flagの符号化や復号のスキップを行うか否かの判定方法は、水平方向のサイズTBXSizeおよび垂直方向のサイズTBYSizeに基づいて変換ブロックのサイズが変換スキップブロックサイズの最大値より大きいかどうかを判定する方法であれば、上述した方法に限定されない。
例えば、水平方向のサイズTBXSizeおよび垂直方向のサイズTBYSizeの対数の大きい方であるmax(log2TBXSize,log2TBYSize)が変換スキップブロックサイズの最大値の対数log2MaxTSSizeより大きい場合(max(log2TBXSize,log2TBYSize)>log2MaxTSSize)に、変換スキップフラグts_flagの符号化や復号のスキップが行われるようにしてもよい。
また、最大変換スキップブロックサイズMaxTSSizeを、最大変換スキップブロックの水平方向のサイズMaxTSXSizeと垂直方向のサイズMaxTSYSizeの和として、水平方向のサイズTBXSizeと垂直方向のサイズTBYSizeの和が、最大変換スキップブロックサイズMaxTSSizeより大きい場合(TBXSize+TBYSize>MaxTSSize)に、変換スキップフラグts_flagの符号化や復号のスキップが行われるようにしてもよい。
さらに、水平方向のサイズTBXSizeと垂直方向のサイズTBYSizeの積が、最大変換スキップブロックの水平方向のサイズMaxTSXSizeと垂直方向のサイズMaxTSYSizeの積より大きい場合(TBXSize*TBYSize>MaxTSXSize*MaxTSYSize)に、変換スキップフラグts_flagの符号化や復号のスキップが行われるようにしてもよい。
また、水平方向のサイズTBXSizeと垂直方向のサイズTBYSizeの対数の和(log2TBXSize+log2TBYSize)が、最大変換スキップブロックの水平方向のサイズMaxTSXSizeと垂直方向のサイズMaxTSYSizeの対数の和(log2MaxTSXSize +log2MaxTSYSize)より大きい場合(log2TBXSize+log2TBYSize>log2MaxTSXSize +log2MaxTSYSize)に、変換スキップフラグts_flagの符号化や復号のスキップが行われるようにしてもよい。
さらに、対数log2MaxTSSizeを、最大変換スキップブロックの水平方向のサイズMaxTSXSizeと垂直方向のサイズMaxTSYSizeの対数の和として、水平方向のサイズTBXSizeと垂直方向のサイズTBYSizeの対数の和(log2TBXSize+log2TBYSize)が対数log2MaxTSSizeより大きい場合(log2TBXSize+log2TBYSize>log2MaxTSSize)に、変換スキップフラグts_flagの符号化や復号のスキップが行われるようにしてもよい。
なお、判定に用いられる最大変換スキップブロックの水平方向のサイズMaxTSXSize(またはその対数値log2MaxTSXSize)と垂直方向のサイズMaxTSYSize(またはその対数値log2MaxTSYSize)は、SPS,PPS、スライスヘッダ(SH)などのパラメータセットに設定されて、符号化側から復号側に通知される。
また、第6の実施の形態では、第3の実施の形態におけるブロックに図44に示した正方形または長方形からなる矩形のブロックが適用されたが、第3の実施の形態以外の実施の形態におけるブロックに図44に示した矩形のブロックが適用されるようにしてもよい。この場合、各実施の形態において、第6の実施の形態と同様に、水平方向のサイズTBXSizeおよび垂直方向のサイズTBYSizeに基づいて変換スキップフラグts_flagの符号化や復号のスキップが行われる。
<7.第7の実施の形態>
<従来技術の概要>
H. Huang, K. Zhang, Y.-W. Huang, S. Lei,"EE2.1: Quadtree plus binary tree structure integration with JEM tools", JVET-C0024, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 3rd Meeting: Geneva, CH, 26 May - 1 June 2016(以下、非特許文献3と称する)や、J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce,"Algorithm Description of Joint Exploration Test Model 4" JVET-D1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 4th Meeting: Chendu, CN, 15 - 21 Octover 2016(以下、非特許文献4と称する)には、輝度の変換ブロックについて、水平方向のプライマリ変換PThor、及び垂直方向の変換PTver毎に、適応的に複数の異なる1次元直交変換から、プライマリ変換を選択する適応プライマリ変換(AMT: Adaptive Multiple core Transform)が開示されている。
この適応プライマリ変換を実施するか否かを示す適応プライマリ変換フラグapt_flag(CUプライマリ変換フラグcu_pt_flagとも称する)は、処理対象の輝度変換ブロックを含むCUにおいてシグナルされる(復号側に伝送される)。
しかしながら、上記従来技術では、apt_flag==1の場合(適応プライマリ変換を適用する場合)に、変換スキップの適否を示す変換スキップフラグts_flagがシグナルされうる。従って、ts_flagまたはapt_flagに関する符号量が冗長となり、不要に符号量が増大するおそれがあった。
また、変換量子化バイパスフラグtransquant_bypass_flag==1の場合(変換量子化バイパスを適用する場合)、適応プライマリ変換フラグapt_flagがシグナルされうる。従って、apt_flagに関する符号量が冗長となり、不要に符号量が増大するおそれがあった。
非特許文献3および非特許文献4に記載の方法おいて、冗長な符号量が発生する場合の例を図52に示す。図52に示される表は、非特許文献3および非特許文献4に記載の方法における、変換量子化バイパスフラグtransquant_bypass_flag、適応プライマリ変換フラグapt_flag、変換スキップフラグts_flag、プライマリ変換識別子pt_idx、およびセカンダリ変換識別子st_idxのとりうるバリエーションを示している。
例えば、図52に示される表において、case#1は、"transquant_bypass_flag==0、apt_flag==0、ts_flag==0、pt_idxはシグナルされない、st_idx==0"の状態を示しており、このとき、プライマリ変換(1st Tr.)は、DCTが選択され、セカンダリ変換(2nd Tr.)は、スキップされることを示す。
これに対して、case#3およびcase#4は、apt_flag==1とts_flag==0とがシグナルされているが、適応プライマリ変換フラグapt_flagをシグナルする必要がある場合はts_flag==0であることは明らかであるのでこの変換スキップフラグts_flagのシグナルは不要である。つまり、この場合、変換スキップフラグts_flagが冗長である。また、case#5は、ts_flag==1がシグナルされているにも関わらず適応プライマリ変換フラグapt_flagがシグナルされており冗長である。case#6およびcase#7は、transquant_bypass_flag==1がシグナルされているにも関わらず適応プライマリ変換フラグapt_flagがシグナルされており冗長である。
<適応プライマリ変換フラグおよび変換スキップフラグの符号化・復号のスキップ>
以上のように、非特許文献3および非特許文献4に記載の方法では、適応プライマリ変換フラグapt_flag==1の場合(適応プライマリ変換を適用する場合)に、変換スキップの適否を示す変換スキップフラグts_flagがシグナルされる可能性があり、不要に符号量が増大するおそれがあった。また、変換スキップフラグts_flag==1の場合に、適応プライマリ変換フラグapt_flagがシグナルされる可能性があり、不要に符号量が増大するおそれがあった。また、変換量子化バイパスフラグtransquant_bypass_flag==1の場合(変換量子化バイパスを適用する場合)に、適応プライマリ変換フラグapt_flagがシグナルされる可能性があり、不要に符号量が増大するというおそれがあった。
そこで、例えば図53のcase#5のように、画像符号化の際に、変換量子化バイパスフラグtransquant_bypass_flag==1の場合(変換量子化バイパスを行うことを示す場合)、適応プライマリ変換フラグapt_flagの符号化をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、例えば図53のcase#3およびcase#4のように、適応プライマリ変換フラグapt_flag==1の場合(適応プライマリ変換を適用する場合)、変換スキップフラグts_flagの符号化をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、例えば図53のcase#5のように、画像復号の際に、変換量子化バイパスフラグtransquant_bypass_flag==1の場合、適応プライマリ変換フラグapt_flagの復号をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、例えば図53のcase#3およびcase#4のように、適応プライマリ変換フラグapt_flag==1の場合、変換スキップフラグts_flagの復号をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
<シンタクス>
このような制御を表す疑似コードを記載したシンタクステーブルの例を図54および図55に示す。なお、これらのシンタクスにおいて、countNonZeroCoeffs(compID)は、compIDが示す色信号の変換ブロック内に存在する非ゼロ係数(有意係数)の数を返す関数である。この例の場合、図54の上から6段目に示されるように、変換量子化バイパスフラグtransquant_bypass_flagが0(偽)であることが、適応プライマリ変換フラグapt_flagの符号化(適応プライマリ変換フラグapt_flagの符号化データの復号)の条件の1つとされている。つまり、変換量子化バイパスフラグtransquant_bypass_flagが1(真)の場合、すなわち、(逆)変換および(逆)量子化がスキップされる場合、適応プライマリ変換フラグapt_flagの符号化(適応プライマリ変換フラグapt_flagの符号化データの復号)がスキップされる。
また、図55の上から3段目に示されるように、適応プライマリ変換フラグapt_flagが0(偽)であることが、変換スキップフラグts_flagの符号化(変換スキップフラグts_flagの符号化データの復号)の条件の1つとされている。つまり、適応プライマリ変換フラグapt_flagが1(真)の場合、すなわち、適応プライマリ変換が適用される場合、輝度変換ブロック及び色差の変換ブロックに関する変換スキップフラグts_flagの符号化(変換スキップフラグts_flagの符号化データの復号)がスキップされる。
<符号化>
この場合も画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。つまり、第1の実施の形態において説明した画像符号化装置100が、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、そのプライマリ変換係数がセカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合(変換量子化バイパス時)、適応プライマリ変換のオン・オフを示す第1の情報の符号化をスキップする符号化部を備える。
つまり、この場合の符号化部114は、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、そのプライマリ変換係数がセカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合、適応プライマリ変換のオン・オフを示す第1の情報の符号化をスキップする。
また、画像符号化装置100は、適応プライマリ変換が適用される場合、変換スキップのオン・オフを示す第2の情報の符号化をスキップする符号化部を備える。つまり、この場合の符号化部114は、画像とその画像の予測画像との差分である予測残差に対する変換処理である適応プライマリ変換が実施される場合(apt_flag==1)、変換スキップのオン・オフを示す第2の情報の符号化をスキップする。
図56は、この場合の符号化部114がプログラム等を実行することにより実現する、適応プライマリ変換フラグの符号化、および変換スキップフラグの符号化に関する主な機能の例を示す機能ブロック図である。図56に示されるように、この場合の符号化部114は、プログラムを実行することにより、適応プライマリ変換フラグの符号化に関する機能として、例えば、適応プライマリ変換フラグ符号化部501を有し、変換スキップフラグの符号化に関する機能として、変換スキップフラグ符号化部502を有することができる。
適応プライマリ変換フラグ符号化部501は、適応プライマリ変換のオン・オフに関する情報である適応プライマリ変換フラグapt_flagの符号化に関する処理を行う。変換スキップフラグ符号化部502は、変換スキップのオン・オフに関する情報である変換スキップフラグts_flagの符号化に関する処理を行う。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、適応プライマリ変換フラグapt_flag等の符号化を、変換量子化バイパスフラグtransquant_bypass_flagの値等に応じて行う。この適応プライマリ変換フラグapt_flag等の符号化の流れの例を図57のフローチャートを参照して説明する。つまり、図57に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
符号化処理が開始されると、ステップS701において、適応プライマリ変換フラグ符号化部501は、以下の条件式(72)に示す条件Condition 1が1(真)であるか否かを判定する。条件Condition 1は、図54を参照して説明したシンタックスの上から6段目に対応する。
Condition 1:
apt_enabled_flag
&& compID==COMPONENT_Y
&& width <= MaxPTSize
&& height<= MaxPTSize
&& !transquant_bypass_flag
・・・(72)
ここで、MaxPTSizeは、適応プライマリ変換が適用可能なブロックサイズの最大値を表し、例えば、64である。なお、MaxPTSizeは、上記値に限定されず、ヘッダ情報において通知されるMaxPTSizeを規定するパラメータによって設定されてもよい。
また、条件式(72)において、ブロックサイズと閾値を比較する部分を、以下の条件式(73)のように、対数表現に置き換えてもよい。
apt_enabled_flag
&& compID==COMPONENT_Y
&& log2TbWidth <= log2MaxPTSize
&& log2TbHeight<= log2MaxPTSize
&& !transquant_bypass_flag
・・・(73)
ここで、log2MaxPTSizeの値は、6である。なお、log2MaxPTSizeの値は、これに限定されず、ヘッダ情報において通知されるlog2MaxPTSizeを規定するパラメータによって設定されてもよい。
ステップS701において、条件Condition 1が1(真)であると判定された場合、すなわち、適応プライマリ変換フラグを符号化すると判定された場合、処理はステップS702に進む。ステップS702において、適応プライマリ変換フラグ符号化部501は、適応プライマリ変換フラグapt_flagを可変長符号化し、ビット列(符号化データ)を生成し出力する。ステップS702の処理が終了すると処理はステップS703に進む。
これに対して、ステップS701において、条件Condition 1が0(偽)であると判定された場合、すなわち、適応プライマリ変換フラグを符号化しないと判定された場合、ステップS702の処理がスキップされ、処理はステップS703に進む。
適応プライマリ変換フラグの符号化条件を満たさないのであれば、適応プライマリ変換フラグapt_flagを復号側に伝送する必要がない。したがって、適応プライマリ変換フラグ符号化部501は、適応プライマリ変換フラグapt_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップ703において、変換スキップフラグ符号化部502は、以下の条件式(74)に示す条件Condition 2が1(真)であるか否かを判定する。条件Condition 2は、図55を参照して説明したシンタックスの上から3段目に対応する。
Condition 2:
ts_enabled_flag
&& width * height <= MaxTSSize
&& !transquant_bypass_flag
&& !apt_flag
・・・(74)
ここで、MaxTSSizeは、変換スキップが適用可能なブロックサイズの最大値を表し、例えば、16である。なお、MaxTSSizeは、上記値に限定されず、ヘッダ情報において通知されるMaxTSSizeを規定するパラメータによって設定されてもよい。
また、条件式(74)において、ブロックサイズと閾値を比較する部分を、以下の条件式(75)のように、対数表現に置き換えてもよい。
ts_enabled_flag
&& (log2TbWidth + log2TbHeight) <= log2MaxTSSize
&& !transquant_bypass_flag
&& !apt_flag
・・・(75)
ここで、log2MaxTSSizeの値は、4である。なお、log2MaxTSSizeの値は、これに限定されず、ヘッダ情報において通知されるlog2MaxTSSizeを規定するパラメータによって設定されてもよい。
ステップS703において、条件Condition 2が1(真)であると判定された場合、すなわち、変換スキップフラグを符号化すると判定された場合、処理はステップS704に進む。ステップS704において、変換スキップフラグ符号化部502は、変換スキップフラグts_flagを可変長符号化し、ビット列(符号化データ)を生成し出力する。ステップS704の処理が終了すると符号化処理が終了し、処理は図9に戻る。
これに対して、ステップS703において、条件Condition 2が0(偽)であると判定された場合、すなわち、変換スキップフラグを符号化しないと判定された場合、ステップS704の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
変換スキップフラグの符号化条件を満たさないのであれば、変換スキップフラグts_flagを復号側に伝送する必要がない。したがって、変換スキップフラグ符号化部502は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
この符号化により得られた適応プライマリ変換フラグapt_flagの符号化データおよび変換スキップフラグts_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
以上のように符号化処理を実行することにより、画像符号化装置100は、変換量子化バイパスを適用する場合に、適応プライマリ変換フラグapt_flagの符号化処理をスキップすることができる。すなわち、適応プライマリ変換フラグapt_flagの符号化に係る処理量および符号量を低減することができる。
また、画像符号化装置100は、適応プライマリ変換を適用する場合に、変換スキップフラグts_flagの符号化処理をスキップすることができる。すなわち、変換スキッフラグts_flagの符号化に係る処理量および符号量を低減することができる。
<補足>
上述の条件condition 1は、条件式(72)に限定されず、各色空間毎に適応プライマリ変換フラグを符号化(復号)するように、以下の条件式(76)へ変更してもよい。この場合、上述の条件式(74)に示される条件condition 2も以下の条件式(77)へ併せて変更することが望ましい。
Condition 1b:
apt_enabled_flag
&& width <= MaxPTSize
&& height<= MaxPTSize
&& !transquant_bypass_flag
・・・(76)
Condition 2b:
ts_enabled_flag
&& width * height <= MaxTSSize
&& !transquant_bypass_flag
&& !apt_flag[compID]
・・・(77)
上記変更に対応するシンタックステーブルを図58、及び図59に示す。なお、これらのシンタクスにおいて、countNonZeroCoeffs(compID)は、compIDが示す色信号の変換ブロック内に存在する非ゼロ係数(有意係数)の数を返す関数である。条件式(76)に示される条件Condition 1bは、図58のシンタックスの上から6段目に対応する。また、条件式(77)に示される条件Condition 2bは、図59のシンタックスの上から3段目に対応する。
また、上述の条件Condition 2は、条件式(74)に限定されず、例えば、色空間識別子compIDが輝度を示し、かつ適応プライマリ変換フラグapt_flagが1(真)である場合、変換スキップフラグts_flagの符号化(復号)を省略するように、以下の条件式(78)へ変更してもよい。
Codntion 2c:
ts_enabled_flag
&& width * height <= MaxTSSize
&& !transquant_bypass_flag
&& !(apt_flag && compID==COMPONENT_Y)
・・・(78)
上記変更に対応するシンタックステーブルを図60に示す。countNonZeroCoeffs(compID)は、compIDが示す色信号の変換ブロック内に存在する非ゼロ係数(有意係数)の数を返す関数である。条件Condition 2cは、図60のシンタックスの上から3段目に対応する。
なお、上述した符号化処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(72)乃至(78)は、実施可能な範囲で演算を変更可能である。
<復号>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、その量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、そのプライマリ変換係数を画像とその画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、適応プライマリ変換のオン・オフに関する第1の情報の符号化データの復号をスキップする復号部を備える。
つまり、この場合の復号部211は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、その量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、そのプライマリ変換係数を画像とその画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、適応プライマリ変換のオン・オフに関する第1の情報の符号化データの復号をスキップする。
また、画像復号装置200は、適応プライマリ変換が適用される場合(apt_flag==1)、変換スキップのオン・オフを示す第2の情報の符号化データの復号をスキップする復号部211を備える。つまり、この場合の復号部211は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化・逆セカンダリ変換して得られるプライマリ変換係数に対して、適応プライマリ変換の逆処理、つまり、逆適応プライマリ変換が実施される場合、変換スキップのオン・オフを示す第2の情報の符号化データの復号をスキップする。
図61は、この場合の復号部211がプログラム等を実行することにより実現する、プライマリ変換識別子の復号に関する主な機能の例を示す機能ブロック図である。図61に示されるように、この場合の復号部211は、プログラムを実行することにより、適応プライマリ変換フラグの復号に関する機能として、例えば、適応プライマリ変換フラグ復号部511を有し、変換スキップフラグの復号に関する機能として、変換スキップフラグ復号部512を有することができる。
適応プライマリ変換フラグ復号部511は、逆適応プライマリ変換のオン・オフに関する情報である適応プライマリ変換フラグapt_flagの符号化データの復号に関する処理を行う。変換スキップフラグ復号部512は、変換スキップのオン・オフに関する情報である変換スキップフラグts_flagの符号化データの復号に関する処理を行う。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、適応プライマリ変換フラグapt_flag等の符号化データの復号を、変換量子化バイパスフラグtransquant_bypass_flagの値等に応じて行う。この適応プライマリ変換フラグapt_flag等の復号の流れの例を図62のフローチャートを参照して説明する。つまり、図62に示される復号処理は、図13のステップS201において行われる復号処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化データの復号は任意の方法で行われる。
復号処理が開始されると、ステップS711において、適応プライマリ変換フラグ号部511は、上述の条件式(72)に示す条件condition 1が1(真)であるか否かを判定する。条件condition 1が0(偽)であると判定された場合、すなわち、適応プライマリ変換フラグを復号しないと判定された場合、処理はステップS712に進む。
ステップS712において、適応プライマリ変換フラグ復号部511は、適応プライマリ変換フラグapt_flagの復号をスキップする。この場合、適応プライマリ変換フラグ復号部511は、適応プライマリ変換を実施しないと解釈し、そのことを示す値(0)を、適応プライマリ変換フラグapt_flagへ設定する(apt_flag=0)。
つまり、適応プライマリ変換フラグの符号化条件を満たさないのであれば、適応プライマリ変換フラグapt_flagは符号化側から伝送されないので、適応プライマリ変換フラグ復号部511は、適応プライマリ変換フラグapt_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS712の処理が終了すると、処理はステップS714に進む。また、ステップS711において、条件condition 1が1(真)であると判定された場合、すなわち、適応プライマリ変換フラグを復号すると判定された場合、処理はステップS713に進む。
ステップS713において、適応プライマリ変換フラグ復号部511は、適応プライマリ変換フラグapt_flagの符号化データを復号する。ステップS713の処理が終了すると、処理はステップS714に進む。
ステップS714において、変換スキップフラグ復号部512は、上述の条件式(74)に示すcondition 2が1(真)であるか否かを判定する。条件condition 2が0(偽)であると判定された場合、すなわち、変換スキップフラグを復号しないと判定された場合、処理はステップ715に進む。
ステップS715において、変換スキップフラグ復号部512は、変換スキップフラグts_flagの復号をスキップする。この場合、変換スキップフラグ復号部512は、変換スキップを実施しないと解釈し、そのことを示す値(0)を、変換スキップフラグts_flagへ設定する(ts_flag=0))。
つまり、変換スキップフラグの符号化条件を満たさないのであれば、変換スキップフラグts_flagは符号化側から伝送されないので、変換スキップフラグ復号部512は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS715の処理が終了すると、復号処理が終了し、処理は図13に戻る。また、ステップS714において、条件condition 2が1(真)であると判定された場合、すなわち、変換スキップフラグを復号すると判定された場合、処理はステップS716に進む。
ステップS716において、変換スキップフラグ復号部512は、変換スキップフラグts_flagの符号化データを復号する。ステップS716の処理が終了すると、復号処理が終了し、処理は図13に戻る。
以上のように復号処理を実行することにより、画像復号装置200は、変換量子化バイパスを適用する場合に、適応プライマリ変換フラグapt_flagの復号処理をスキップすることができる。すなわち、適応プライマリ変換フラグapt_flagの復号に係る処理量および符号量を低減することができる。
また、画像復号装置200は、適応プライマリ変換を適用する場合に、変換スキップフラグts_flagの復号処理をスキップすることができる。すなわち、変換スキッフラグts_flagの復号に係る処理量および符号量を低減することができる。
<補足>
上述の条件condition 1は、条件式(72)に限定されず、各色空間毎に適応プライマリ変換フラグを復号するように、上述の条件式(76)へ変更してもよい。この場合、上述の条件式(74)を上述の条件式(77)へ合わせて変更することが望ましい。
また、上述の条件Condition 2は、上述の条件式(74)に限定されず、色空間識別子compIDが輝度を示し、かつ適応プライマリ変換フラグapt_flagが0(偽)を示す場合、変換スキップフラグts_flagの復号を省略するように、上述の条件式(78)へ変更してもよい。
なお、上述した復号処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(72)乃至(78)は、実施可能な範囲で演算を変更可能である。
<8.第8の実施の形態>
<従来技術の概要>
H. Jang, J. Lim, J. Nam, S.-H. Kim, "Signaling for primary transform and transform skip" JVET-E0037, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 5th Meeting: Geneva, CH, 12 - 20 January 2017(以下、非特許文献5と称する)では、非特許文献2に記載のQTBT (Quad Tree + Binary Tree)の導入により、符号化ユニットCUと変換ユニットTUが同一となったため、変換スキップフラグts_flag==1の場合(変換スキップを適用する場合)、CUレベルでの適応プライマリ変換フラグapt_flagのシグナルは冗長であることを指摘している。
そこで、非特許文献5では、適応プライマリ変換フラグapt_flagのシンタックス位置を、変換スキップフラグts_flagの後へ配置し、ts_flag==1のとき、該適応プライマリ変換フラグapt_flagの復号(符号化)を省略することが提案されている。
しかしながら、非特許文献5に記載の構成では、符号化効率が低下することが指摘されている。また、非特許文献5に記載の構成では、非特許文献3や非特許文献4の場合と同様に、変換量子化バイパスが適用される場合(transquant_bypass_flag==1)において、適応プライマリ変換フラグapt_flagがシグナルされうる。従って、、apt_flagに関する符号量が冗長となり、不要に符号量が増大するおそれがあった。
非特許文献5に記載の方法おいて、冗長な符号量が発生する場合の例を図63に示す。図63に示される表は、非特許文献5に記載の方法における、変換量子化バイパスフラグtransquant_bypass_flag、変換スキップフラグts_flag、適応プライマリ変換フラグapt_flag、プライマリ変換識別子pt_idx、及びセカンダリ変換識別子st_idxのとりうるバリエーションについて記載したものである。
例えば、図63に示される表において、case#6およびcase#7は、transquant_bypass_flag==1がシグナルされているにも関わらず適応プライマリ変換フラグapt_flagがシグナルされており冗長である。
<適応プライマリ変換フラグ・変換スキップフラグの符号化・復号のスキップ>
以上のように、非特許文献5に記載の方法では、変換量子化バイパスが適用される場合(transquant_bypass_flag==1)において、適応プライマリ変換フラグapt_flagがシグナルされる可能性があり、不要に符号量が増大するというおそれがあった。
そこで、例えば図64のcase#6のように、画像符号化の際に、変換量子化バイパスフラグtransquant_bypass_flag==1の場合(変換量子化バイパスを行うことを示す場合)、適応プライマリ変換フラグapt_flagの符号化をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、例えば図64のcase#4のように、変換スキップフラグts_flag==1の場合 (変換スキップを適用する場合)、適応プライマリ変換フラグapt_flagの符号化をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、例えば図64のcase#6のように、画像復号の際に、変換量子化バイパスフラグtransquant_bypass_flag==1の場合、適応プライマリ変換フラグapt_flagの復号をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
また、例えば図64のcase#4のように、変換スキップフラグts_flag==1の場合、適応プライマリ変換フラグapt_flagの復号をスキップ(省略)するようにする。このようにすることにより、符号化効率の低減を抑制することができる。
<シンタクス>
このような制御を表す疑似コードを記載したシンタクステーブルの例を図65および図66に示す。なお、これらのシンタクスにおいて、countNonZeroCoeffs(compID)は、compIDが示す色信号の変換ブロック内に存在する非ゼロ係数(有意係数)の数を返す関数である。図65および図66の例の場合、図54においては上から6段目乃至8段目(図65の上から5段目と6段目との間)にあった適応プライマリ変換フラグapt_flagに関する記述が、図66の上から5段目および6段目に移動されており、さらに、変換スキップフラグts_flagが0(偽)、かつ、変換量子化バイパスフラグtransquant_bypass_flagが0(偽)であることが、適応プライマリ変換フラグapt_flagの符号化(適応プライマリ変換フラグapt_flagの符号化データの復号)の条件の1つとされている。
つまり、変換量子化バイパスフラグtransquant_bypass_flagが1(真)の場合、すなわち、(逆)変換および(逆)量子化がスキップされる場合、適応プライマリ変換フラグapt_flagの符号化(適応プライマリ変換フラグapt_flagの符号化データの復号)がスキップされる。また、変換スキップフラグts_flagが1(真)の場合、すなわち、変換スキップされる場合、適応プライマリ変換フラグapt_flagの符号化(適応プライマリ変換フラグapt_flagの符号化データの復号)がスキップされる。
<符号化>
この場合も画像符号化装置100は、第1の実施の形態の場合と基本的に同様の構成を有する。つまり、第1の実施の形態において説明した画像符号化装置100が、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、そのプライマリ変換係数がセカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合(変換量子化バイパス時)、または、変換がスキップされる場合(変換スキップ時)、適応プライマリ変換のオン・オフを示す第1の情報の符号化をスキップする符号化部を備える。
つまり、この場合の符号化部114は、画像とその画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、その予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、そのプライマリ変換係数がセカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合、または、変換がスキップされる場合、適応プライマリ変換のオン・オフを示す第1の情報の符号化をスキップする。
この場合の符号化部114がプログラムを実行することにより有する適応プライマリ変換フラグの符号化に関する機能は、図56を参照して説明した第7の実施の形態の場合と同様であるので、その説明は省略する。
<符号化処理の流れ>
次に、画像符号化装置100により実行される各処理の流れの例を説明する。この場合画像符号化装置100は、画像符号化処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像符号化装置100は、画像符号化処理のステップS110(図9)において、適応プライマリ変換フラグapt_flag等の符号化を、変換量子化バイパスフラグtransquant_bypass_flagの値等に応じて行う。この適応プライマリ変換フラグapt_flag等の符号化の流れの例を図67のフローチャートを参照して説明する。つまり、図67に示される符号化処理は、図9のステップS110において行われる符号化処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化は任意の方法で行われる。
符号化処理が開始されると、ステップS721において、変換スキップフラグフラグ符号化部502は、以下の条件式(79)に示す条件Condition 3が1(真)であるか否かを判定する。条件Condition 3は、図66を参照して説明したシンタックスの上から3段目に対応する。
Condition 3:
ts_enabled_flag
&& width*height <= MaxTSSize
&& !transquant_bypass_flag
・・・(79)
ここで、MaxTSSizeは、変換スキップが適用可能なブロックサイズの最大値を表し、例えば、16である。なお、MaxTSSizeは、上記値に限定されず、ヘッダ情報において通知されるMaxTSSizeを規定するパラメータによって設定されてもよい。
また、条件式(79)において、ブロックサイズと閾値を比較する部分を、以下の条件式(80)のように、対数表現に置き換えてもよい。
ts_enabled_flag
&& ((log2TbWidth + log2TbHeight) <= log2MaxTSSize)
&& !transquant_bypass_flag
・・・(80)
ここで、log2MaxTSSizeの値は、4である。なお、log2MaxTSSizeの値は、これに限定されず、ヘッダ情報において通知されるlog2MaxTSSizeを規定するパラメータによって設定されてもよい。
ステップS721において、条件Condition 3が1(真)であると判定された場合、すなわち、変換スキップフラグを符号化すると判定された場合、処理はステップS722に進む。ステップS722において、変換スキップフラグ符号化部502は、変換スキップフラグts_flagを可変長符号化し、ビット列(符号化データ)を生成し出力する。ステップS722の処理が終了すると処理はステップS723に進む。
これに対して、ステップS721において、条件Condition 3が0(偽)であると判定された場合、すなわち、変換スキップフラグを符号化しないと判定された場合、ステップS722の処理がスキップされ、処理はステップS723に進む。
変換スキップフラグの符号化条件を満たさないのであれば、変換スキップフラグts_flagを復号側に伝送する必要がない。したがって、変換スキップフラグ符号化部502は、変換スキップフラグts_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS723において、適応プライマリ変換フラグ符号化部501は、以下の条件式(81)に示す条件Condition 4が1(真)であるか否かを判定する。条件Condition 4は、図66を参照して説明したシンタックスの上から5段目に対応する。
Condition 4:
apt_enabled_flag
&& compID==COMPONENT_Y
&& width <= MaxPTSize
&& height<= MaxPTSize
&& !ts_flag[compID]
&& !transquant_bypass_flag
・・・(81)
ここで、MaxPTSizeは、適応プライマリ変換が適用可能なブロックサイズの最大値を表し、例えば、64である。なお、MaxPTSizeは、上記値に限定されず、ヘッダ情報において通知されるMaxPTSizeを規定するパラメータによって設定されてもよい。
また、条件式(81)において、ブロックサイズと閾値を比較する部分を、以下の条件式(82)のように、対数表現に置き換えてもよい。
apt_enabled_flag
&& compID==COMPONENT_Y
&& log2TbWidth <= log2MaxPTSize
&& log2TbHeight<= log2MaxPTSize
&& !ts_flag[compID]
&& !transquant_bypass_flag
・・・(82)
ここで、log2MaxPTSizeの値は、6である。なお、log2MaxPTSizeの値は、これに限定されず、ヘッダ情報において通知されるlog2MaxPTSizeを規定するパラメータによって設定されてもよい。
ステップS723において、条件Condition 4が1(真)であると判定された場合、すなわち、適応プライマリ変換フラグを符号化すると判定された場合、処理はステップS724に進む。ステップS724において、適応プライマリ変換フラグ符号化部501は、適応プライマリ変換フラグapt_flagを可変長符号化し、ビット列(符号化データ)を生成し出力する。符号化処理が終了し、処理は図9に戻る。ステップS724の処理が終了すると符号化処理が終了し、処理は図9に戻る。
これに対して、ステップS723において、条件Condition 4が0(偽)であると判定された場合、すなわち、適応プライマリ変換フラグを符号化しないと判定された場合、ステップS724の処理がスキップされ、符号化処理が終了し、処理は図9に戻る。
適応プライマリ変換フラグの符号化条件を満たさないのであれば、適応プライマリ変換フラグapt_flagを復号側に伝送する必要がない。したがって、適応プライマリ変換フラグ符号化部501は、適応プライマリ変換フラグapt_flagの符号化をスキップする。このようにすることにより、冗長な情報の符号化をスキップすることができるので、符号化処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
この符号化により得られた適応プライマリ変換フラグapt_flagの符号化データおよび変換スキップフラグts_flagの符号化データは、量子化変換係数レベルlevelの符号化データを含むビットストリームに含められる。
以上のように符号化処理を実行することにより、画像符号化装置100は、変換量子化バイパスを適用する場合に、適応プライマリ変換フラグapt_flagの符号化処理をスキップすることができる。すなわち、適応プライマリ変換フラグapt_flagの符号化に係る処理量および符号量を低減することができる。
また、画像符号化装置100は、変換スキップを適用する場合に、適応プライマリ変換フラグapt_ flagの符号化処理をスキップすることができる。すなわち、適応プライマリ変換フラグapt_ flagの符号化に係る処理量および符号量を低減することができる。
<補足>
上述の条件condition 4は、式(81)に限定されず、各色空間毎に適応プライマリ変換フラグを符号化(復号)するように、以下の条件式(83)へ変更してもよい。
Condition 4a:
apt_enabled_flag && compID==COMPONENT_Y
&& width <= MaxPTSize
&& height<= MaxPTSize
&& !ts_flag[compID] && !transquant_bypass_flag
・・・(83)
上記変更に対応するシンタックステーブルを図68に示す。なお、このシンタクスにおいて、countNonZeroCoeffs(compID)は、compIDが示す色信号の変換ブロック内に存在する非ゼロ係数(有意係数)の数を返す関数である。条件Condition 4aは、図68のシンタックスの上から5段目に対応する。
なお、上述した符号化処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(79)乃至(83)は、実施可能な範囲で演算を変更可能である。
<復号>
次に画像復号装置200について説明する。この場合も画像復号装置200は、第1の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置200は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、その量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、そのプライマリ変換係数を画像とその画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、または、変換がスキップされる場合(変換スキップ時)、適応プライマリ変換のオン・オフに関する第1の情報の符号化データの復号をスキップする復号部を備える。
つまり、この場合の復号部211は、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、その量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、そのプライマリ変換係数を画像とその画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、または、変換がスキップが適用される場合、適応プライマリ変換のオン・オフに関する第1の情報の符号化データの復号をスキップする。
この場合の復号部211がプログラムを実行することにより有する適応プライマリ変換フラグの符号化に関する機能は、図61を参照して説明した第7の実施の形態の場合と同様であるので、その説明は省略する。
<復号処理の流れ>
次に、画像復号装置200により実行される各処理の流れの例を説明する。この場合画像復号装置200は、画像復号処理を、第1の実施の形態の場合と基本的に同様に行う。ただし、この場合、画像復号装置200は、画像復号処理のステップS201(図13)において、適応プライマリ変換フラグapt_flag等の符号化データの復号を、変換量子化バイパスフラグtransquant_bypass_flagの値等に応じて行う。この適応プライマリ変換フラグapt_flag等の復号の流れの例を図69のフローチャートを参照して説明する。つまり、図69に示される復号処理は、図13のステップS201において行われる復号処理の一部として実行される。その他の符号化パラメータや量子化変換係数レベルlevelの符号化データの復号は任意の方法で行われる。
復号処理が開始されると、ステップS731において、変換スキップフラグ号部512は、上述の条件式(79)に示す条件Condition 3が1(真)であるか否かを判定する。条件Condition 3が0(偽)であると判定された場合、すなわち、変換スキップフラグを復号しないと判定された場合、処理はステップS732に進む。
ステップS732において、変換スキップフラグ復号部512は、変換スキップフラグts_flagの復号をスキップする。この場合、変換スキップフラグ復号部512は、変換スキップを実施しないと解釈し、そのことを示す値(0)を、変換スキップフラグts_flagへ設定する(ts_flag=0)。
つまり、変換スキップフラグの符号化条件を満たさないのであれば、変換スキップフラグts_flagは符号化側から伝送されないので、変換スキップフラグ復号部512は、変換スキップフラグts_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS732の処理が終了すると、処理はステップS734に進む。また、ステップS731において、条件condition 3が1(真)であると判定された場合、すなわち、変換スキップフラグを復号すると判定された場合、処理はステップS733に進む。
ステップS733において、変換スキップフラグ復号部512は、変換スキップフラグts_flagの符号化データを復号する。ステップS733の処理が終了すると、処理はステップS734に進む。
ステップS734において、適応プライマリ変換フラグ復号部511は、上述の条件式(81)に示すCondition 4が1(真)であるか否かを判定する。条件Condition 4が0(偽)であると判定された場合、すなわち、適応プライマリ変換フラグを復号しないと判定された場合、処理はステップS735に進む。
ステップS735において、適応プライマリ変換フラグ復号部511は、適応プライマリ変換フラグapt_flagの復号をスキップする。この場合、適応プライマリ変換フラグ復号部511は、適応プライマリ変換を実施しないと解釈し、そのことを示す値(0)を、適応プライマリ変換フラグapt_flagへ設定する(apt_flag=0)。復号処理が終了し、処理は図13に戻る。
つまり、適応プライマリ変換フラグの符号化条件を満たさないのであれば、適応プライマリ変換フラグapt_flagは符号化側から伝送されないので、適応プライマリ変換フラグ復号部511は、適応プライマリ変換フラグapt_flagの符号化データの復号をスキップする。このようにすることにより、冗長な情報の復号をスキップすることができるので、復号処理の負荷の増大を抑制することができるとともに、符号化効率の低減を抑制することができる。
ステップS735の処理が終了すると、復号処理が終了し、処理は図13に戻る。また、ステップS734において、条件condition 2が1(真)であると判定された場合、すなわち、変換スキップフラグを復号すると判定された場合、処理はステップS736に進む。
ステップS736において、適応プライマリ変換フラグ復号部511は、適応プライマリ変換フラグapt_flagの符号化データを復号する。ステップS736の処理が終了すると、復号処理が終了し、処理は図13に戻る。
以上のように復号処理を実行することにより、画像復号装置200は、変換量子化バイパスを適用する場合、または、変換スキップを適用する場合に、適応プライマリ変換フラグapt_flagの復号処理をスキップすることができる。すなわち、適応プライマリ変換フラグapt_flagの復号に係る処理量および符号量を低減することができる。
なお、上述した復号処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。また、上述したシンタックスや条件式(79)乃至(82)は、実施可能な範囲で演算を変更可能である。
<9.第9の実施の形態>
<情報のデータ単位>
以上において説明した画像に関する情報や画像の符号化・復号に関する情報が設定される(または対象とするデータの)データ単位は、それぞれ任意であり、上述した例に限定されない。例えば、これらの情報が、それぞれ、TU、TB、PU、PB、CU、LCU、サブブロック、ブロック、タイル、スライス、ピクチャ、シーケンス、またはコンポーネント毎に設定されるようにしてもよいし、それらのデータ単位のデータを対象とするようにしてもよい。もちろん、このデータ単位は、情報毎に設定される。つまり、全ての情報が同一のデータ単位毎に設定される(または対象とする)ようにしなくてもよい。なお、これらの情報の格納場所は任意であり、上述したデータ単位のヘッダやパラメータセット等に格納されるようにしてもよい。また、複数個所に格納されるようにしてもよい。
<制御情報>
以上の各実施の形態において説明した本技術に関する制御情報を符号化側から復号側に伝送するようにしてもよい。例えば、上述した本技術を適用することを許可(または禁止)するか否かを制御する制御情報(例えばenabled_flag)を伝送するようにしてもよい。また、例えば、上述した本技術を適用することを許可(または禁止)するブロックサイズの上限若しくは下限、またはその両方を指定する制御情報を伝送するようにしてもよい。
<符号化・復号>
本技術は、プライマリ変換、セカンダリ変換、および符号化(復号、逆セカンダリ変換、および逆プライマリ変換)を行う任意の画像符号化・復号に適用することができる。つまり、変換(逆変換)、量子化(逆量子化)、符号化(復号)、予測等の仕様は任意であり、上述した例に限定されない。例えば、変換(逆変換)において、(逆)プライマリ変換および(逆)セカンダリ変換以外の(逆)変換(すなわち3以上の(逆)変換)が行われるようにしてもよい。また、符号化(復号)は、可逆な方式であってもよいし、非可逆な方式であってもよい。さらに、量子化(逆量子化)や予測等は省略するようにしてもよい。また、フィルタ処理等の上述していない処理が行われるようにしてもよい。
例えば、ループ内フィルタとして、デブロッキングフィルタ、サンプル適応オフセット(SAO; Sample Adaptive Offset)や適応ループフィルタ(ALF; Adaptive Loop Filter)を適用してもよい。なお、ロスレス符号化を行う場合、画像符号化装置100では、変換量子化バイパス有効フラグtransquant_bypass_enabled_flagを1にして符号化し、所定単位毎(例えば、CTUやCU)に変換量子化バイパスフラグtransquant_bypass_flagを1として符号化する。従って、所定単位毎の変換量子化バイパスフラグtransquant_bypass_flagが1である場合、復号画像を修正する作用があるフィルタやループ内フィルタ(デブロッキングフィルタ、サンプル適応オフセット、適応ループフィルタ)の処理を省略することが必要である。また、所定単位毎の変換量子化バイパスフラグtransquant_bypass_flagが1である場合、復号画像を修正する作用があるフィルタやループ内フィルタ(デブロッキングフィルタ、サンプル適応オフセット、適応ループフィルタ)に関する所定単位毎のシンタックス要素の符号化を省略することで、冗長な符号量を削減することができる。例えば、適応ループフィルタであれば、フィルタ係数やフィルタ処理のオンオフフラグなどのシンタックス要素の符号化を省略する。
同様にして、ロスレス符号化された符号化データを復号する画像復号装置200では、変換量子化バイパス有効フラグtransquant_bypass_enabled_flagを復号し、所定単位毎(例えば、CTUやCU)に変換量子化バイパスフラグtransquant_bypass_flagを復号する。従って、所定単位毎の変換量子化バイパスフラグtransquant_bypass_flagが1である場合、復号画像を修正する作用があるフィルタやループ内フィルタ(デブロッキングフィルタ、サンプル適応オフセット、適応ループフィルタ)の処理を省略することが必要である。また、所定単位毎の変換量子化バイパスフラグtransquant_bypass_flagが1である場合、復号画像を修正する作用があるフィルタやループ内フィルタ(デブロッキングフィルタ、サンプル適応オフセット、適応ループフィルタ)に関する所定単位毎のシンタックス要素の復号を省略することで、冗長な符号の復号に係る処理量を削減することができる。例えば、適応ループフィルタであれば、フィルタ係数やフィルタ処理のオンオフフラグなどのシンタックス要素の復号を省略する。
<本技術の適用分野>
本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。
例えば、本技術は、鑑賞の用に供される画像を伝送するシステムやデバイスにも適用することができる。また、例えば、本技術は、交通の用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、セキュリティの用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、スポーツの用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、農業の用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、畜産業の用に供されるシステムやデバイスにも適用することができる。さらに、本技術は、例えば火山、森林、海洋等の自然の状態を監視するシステムやデバイスにも適用することができる。また、本技術は、例えば天気、気温、湿度、風速、日照時間等を観測する気象観測システムや気象観測装置に適用することができる。さらに、本技術は、例えば鳥類、魚類、ハ虫類、両生類、哺乳類、昆虫、植物等の野生生物の生態を観測するシステムやデバイス等にも適用することができる。
<多視点画像符号化・復号システムへの適用>
上述した一連の処理は、複数の視点(ビュー(view))の画像を含む多視点画像の符号化・復号を行う多視点画像符号化・復号システムに適用することができる。その場合、各視点(ビュー(view))の符号化・復号において、本技術を適用するようにすればよい。
<階層画像符号化・復号システムへの適用>
また、上述した一連の処理は、所定のパラメータについてスケーラビリティ(scalability)機能を有するように複数レイヤ化(階層化)された階層画像の符号化・復号を行う階層画像符号化(スケーラブル符号化)・復号システムに適用することができる。その場合、各階層(レイヤ)の符号化・復号において、本技術を適用するようにすればよい。
<コンピュータ>
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
図70は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
図70に示されるコンピュータ800において、CPU(Central Processing Unit)801、ROM(Read Only Memory)802、RAM(Random Access Memory)803は、バス804を介して相互に接続されている。
バス804にはまた、入出力インタフェース810も接続されている。入出力インタフェース810には、入力部811、出力部812、記憶部813、通信部814、およびドライブ815が接続されている。
入力部811は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部812は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部813は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部814は、例えば、ネットワークインタフェースよりなる。ドライブ815は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア821を駆動する。
以上のように構成されるコンピュータでは、CPU801が、例えば、記憶部813に記憶されているプログラムを、入出力インタフェース810およびバス804を介して、RAM803にロードして実行することにより、上述した一連の処理が行われる。RAM803にはまた、CPU801が各種の処理を実行する上において必要なデータなども適宜記憶される。
コンピュータ(CPU801)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア821に記録して適用することができる。その場合、プログラムは、リムーバブルメディア821をドライブ815に装着することにより、入出力インタフェース810を介して、記憶部813にインストールすることができる。
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部814で受信し、記憶部813にインストールすることができる。
その他、このプログラムは、ROM802や記憶部813に、あらかじめインストールしておくこともできる。
<本技術の応用>
上述した実施形態に係る画像符号化装置100や画像復号装置200は、例えば、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機や受信機、または、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置や、これら記憶媒体から画像を再生する再生装置などの、様々な電子機器に応用され得る。
<第1の応用例:テレビジョン受像機>
図71は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置900は、アンテナ901、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、表示部906、音声信号処理部907、スピーカ908、外部インタフェース(I/F)部909、制御部910、ユーザインタフェース(I/F)部911、及びバス912を備える。
チューナ902は、アンテナ901を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ902は、復調により得られた符号化ビットストリームをデマルチプレクサ903へ出力する。即ち、チューナ902は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送部としての役割を有する。
デマルチプレクサ903は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ904へ出力する。また、デマルチプレクサ903は、符号化ビットストリームからEPG(Electronic Program Guide)などの補助的なデータを抽出し、抽出したデータを制御部910に供給する。なお、デマルチプレクサ903は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
デコーダ904は、デマルチプレクサ903から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ904は、復号処理により生成される映像データを映像信号処理部905へ出力する。また、デコーダ904は、復号処理により生成される音声データを音声信号処理部907へ出力する。
映像信号処理部905は、デコーダ904から入力される映像データを再生し、表示部906に映像を表示させる。また、映像信号処理部905は、ネットワークを介して供給されるアプリケーション画面を表示部906に表示させてもよい。また、映像信号処理部905は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部905は、例えばメニュー、ボタン又はカーソルなどのGUI(Graphical User Interface)の画像を生成し、生成した画像を出力画像に重畳してもよい。
表示部906は、映像信号処理部905から供給される駆動信号により駆動され、表示デバイス(例えば、液晶ディスプレイ、プラズマディスプレイ又はOELD(Organic ElectroLuminescence Display)(有機ELディスプレイ)など)の映像面上に映像又は画像を表示する。
音声信号処理部907は、デコーダ904から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ908から音声を出力させる。また、音声信号処理部907は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
外部インタフェース部909は、テレビジョン装置900と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース部909を介して受信される映像ストリーム又は音声ストリームが、デコーダ904により復号されてもよい。即ち、外部インタフェース部909もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送部としての役割を有する。
制御部910は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置900の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース部911から入力される操作信号に応じて、テレビジョン装置900の動作を制御する。
ユーザインタフェース部911は、制御部910と接続される。ユーザインタフェース部911は、例えば、ユーザがテレビジョン装置900を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース部911は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部910へ出力する。
バス912は、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、音声信号処理部907、外部インタフェース部909及び制御部910を相互に接続する。
このように構成されたテレビジョン装置900において、デコーダ904が、上述した画像復号装置200の機能を有するようにしてもよい。つまり、デコーダ904が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、テレビジョン装置900は、受信する符号化ビットストリームの符号化効率の低減を抑制することができる。
また、このように構成されたテレビジョン装置900において、映像信号処理部905が、例えば、デコーダ904から供給される画像データを符号化し、得られた符号化データを、外部インタフェース部909を介してテレビジョン装置900の外部に出力させることができるようにしてもよい。そして、その映像信号処理部905が、上述した画像符号化装置100の機能を有するようにしてもよい。つまり、映像信号処理部905が、デコーダ904から供給される画像データを、以上の各実施の形態において説明した方法で符号化するようにしてもよい。このようにすることにより、テレビジョン装置900は、出力する符号化データの符号化効率の低減を抑制することができる。
<第2の応用例:携帯電話機>
図72は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、及びバス933を備える。
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス933は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、及び制御部931を相互に接続する。
携帯電話機920は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
音声通話モードにおいて、マイクロホン925により生成されるアナログ音声信号は、音声コーデック923に供給される。音声コーデック923は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック923は、圧縮後の音声データを通信部922へ出力する。通信部922は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック923へ出力する。音声コーデック923は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
また、データ通信モードにおいて、例えば、制御部931は、操作部932を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部931は、文字を表示部930に表示させる。また、制御部931は、操作部932を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部922へ出力する。通信部922は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部931へ出力する。制御部931は、表示部930に電子メールの内容を表示させると共に、電子メールデータを記録再生部929に供給し、その記憶媒体に書き込ませる。
記録再生部929は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USB(Universal Serial Bus)メモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
また、撮影モードにおいて、例えば、カメラ部926は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部927へ出力する。画像処理部927は、カメラ部926から入力される画像データを符号化し、符号化ストリームを記録再生部929に供給し、その記憶媒体に書き込ませる。
さらに、画像表示モードにおいて、記録再生部929は、記憶媒体に記録されている符号化ストリームを読み出して画像処理部927へ出力する。画像処理部927は、記録再生部929から入力される符号化ストリームを復号し、画像データを表示部930に供給し、その画像を表示させる。
また、テレビ電話モードにおいて、例えば、多重分離部928は、画像処理部927により符号化された映像ストリームと、音声コーデック923から入力される音声ストリームとを多重化し、多重化したストリームを通信部922へ出力する。通信部922は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部922は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部928へ出力する。多重分離部928は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部927、音声ストリームを音声コーデック923へ出力する。画像処理部927は、映像ストリームを復号し、映像データを生成する。映像データは、表示部930に供給され、表示部930により一連の画像が表示される。音声コーデック923は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
このように構成された携帯電話機920において、例えば画像処理部927が、上述した画像符号化装置100の機能を有するようにしてもよい。つまり、画像処理部927が、画像データを、以上の各実施の形態において説明した方法で符号化するようにしてもよい。このようにすることにより、携帯電話機920は、符号化効率の低減を抑制することができる。
また、このように構成された携帯電話機920において、例えば画像処理部927が、上述した画像復号装置200の機能を有するようにしてもよい。つまり、画像処理部927が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、携帯電話機920は、符号化データの符号化効率の低減を抑制することができる。
<第3の応用例:記録再生装置>
図73は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データおよび映像データを復号する。
記録再生装置940は、チューナ941、外部インタフェース(I/F)部942、エンコーダ943、HDD(Hard Disk Drive)部944、ディスクドライブ945、セレクタ946、デコーダ947、OSD(On-Screen Display)部948、制御部949、およびユーザインタフェース(I/F)部950を備える。
チューナ941は、アンテナ(図示せず)を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ941は、復調により得られた符号化ビットストリームをセレクタ946へ出力する。即ち、チューナ941は、記録再生装置940における伝送部としての役割を有する。
外部インタフェース部942は、記録再生装置940と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース部942は、例えば、IEEE(Institute of Electrical and Electronic Engineers)1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース部942を介して受信される映像データおよび音声データは、エンコーダ943へ入力される。即ち、外部インタフェース部942は、記録再生装置940における伝送部としての役割を有する。
エンコーダ943は、外部インタフェース部942から入力される映像データおよび音声データが符号化されていない場合に、映像データおよび音声データを符号化する。そして、エンコーダ943は、符号化ビットストリームをセレクタ946へ出力する。
HDD部944は、映像および音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラムおよびその他のデータを内部のハードディスクに記録する。また、HDD部944は、映像および音声の再生時に、これらデータをハードディスクから読み出す。
ディスクドライブ945は、装着されている記録媒体へのデータの記録および読み出しを行う。ディスクドライブ945に装着される記録媒体は、例えばDVD(Digital Versatile Disc)ディスク(DVD-Video、DVD-RAM(DVD - Random Access Memory)、DVD-R(DVD - Recordable)、DVD-RW(DVD - Rewritable)、DVD+R(DVD + Recordable)、DVD+RW(DVD + Rewritable)等)又はBlu-ray(登録商標)ディスクなどであってよい。
セレクタ946は、映像および音声の記録時には、チューナ941又はエンコーダ943から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD944又はディスクドライブ945へ出力する。また、セレクタ946は、映像及び音声の再生時には、HDD944又はディスクドライブ945から入力される符号化ビットストリームをデコーダ947へ出力する。
デコーダ947は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ947は、生成した映像データをOSD部948へ出力する。また、デコーダ947は、生成した音声データを外部のスピーカへ出力する。
OSD部948は、デコーダ947から入力される映像データを再生し、映像を表示する。また、OSD部948は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
制御部949は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置940の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース部950から入力される操作信号に応じて、記録再生装置940の動作を制御する。
ユーザインタフェース部950は、制御部949と接続される。ユーザインタフェース部950は、例えば、ユーザが記録再生装置940を操作するためのボタンおよびスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース部950は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部949へ出力する。
このように構成された記録再生装置940において、例えばエンコーダ943が、上述した画像符号化装置100の機能を有するようにしてもよい。つまり、エンコーダ943が、画像データを、以上の各実施の形態において説明方法で符号化するようにしてもよい。このようにすることにより、記録再生装置940は、符号化効率の低減を抑制することができる。
また、このように構成された記録再生装置940において、例えばデコーダ947が、上述した画像復号装置200の機能を有するようにしてもよい。つまり、デコーダ947が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、記録再生装置940は、符号化データの符号化効率の低減を抑制することができる。
<第4の応用例:撮像装置>
図74は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース(I/F)部966、メモリ部967、メディアドライブ968、OSD部969、制御部970、ユーザインタフェース(I/F)部971、およびバス972を備える。
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース部971は、制御部970に接続される。バス972は、画像処理部964、外部インタフェース部966、メモリ部967、メディアドライブ968、OSD部969、および制御部970を相互に接続する。
光学ブロック961は、フォーカスレンズ及び絞り機構などを有する。光学ブロック961は、被写体の光学像を撮像部962の撮像面に結像させる。撮像部962は、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部962は、画像信号を信号処理部963へ出力する。
信号処理部963は、撮像部962から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部963は、カメラ信号処理後の画像データを画像処理部964へ出力する。
画像処理部964は、信号処理部963から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部964は、生成した符号化データを外部インタフェース部966またはメディアドライブ968へ出力する。また、画像処理部964は、外部インタフェース部966またはメディアドライブ968から入力される符号化データを復号し、画像データを生成する。そして、画像処理部964は、生成した画像データを表示部965へ出力する。また、画像処理部964は、信号処理部963から入力される画像データを表示部965へ出力して画像を表示させてもよい。また、画像処理部964は、OSD部969から取得される表示用データを、表示部965へ出力する画像に重畳してもよい。
OSD部969は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部964へ出力する。
外部インタフェース部966は、例えばUSB入出力端子として構成される。外部インタフェース部966は、例えば、画像の印刷時に、撮像装置960とプリンタとを接続する。また、外部インタフェース部966には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置960にインストールされ得る。さらに、外部インタフェース部966は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース部966は、撮像装置960における伝送部としての役割を有する。
メディアドライブ968に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ968に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD(Solid State Drive)のような非可搬性の記憶部が構成されてもよい。
制御部970は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置960の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース部971から入力される操作信号に応じて、撮像装置960の動作を制御する。
ユーザインタフェース部971は、制御部970と接続される。ユーザインタフェース部971は、例えば、ユーザが撮像装置960を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース部971は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部970へ出力する。
このように構成された撮像装置960において、例えば画像処理部964が、上述した画像符号化装置100の機能を有するようにしてもよい。つまり、画像処理部964が、画像データを、以上の各実施の形態において説明した方法で符号化するようにしてもよい。このようにすることにより、撮像装置960は、符号化効率の低減を抑制することができる。
また、このように構成された撮像装置960において、例えば画像処理部964が、上述した画像復号装置200の機能を有するようにしてもよい。つまり、画像処理部964が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、撮像装置960は、符号化データの符号化効率の低減を抑制することができる。
<第5の応用例:ビデオセット>
また、本技術は、任意の装置またはシステムを構成する装置に搭載するあらゆる構成、例えば、システムLSI(Large Scale Integration)等としてのプロセッサ、複数のプロセッサ等を用いるモジュール、複数のモジュール等を用いるユニット、ユニットにさらにその他の機能を付加したセット等(すなわち、装置の一部の構成)として実施することもできる。図75は、本技術を適用したビデオセットの概略的な構成の一例を示している。
近年、電子機器の多機能化が進んでおり、その開発や製造において、その一部の構成を販売や提供等として実施する場合、1機能を有する構成として実施を行う場合だけでなく、関連する機能を有する複数の構成を組み合わせ、複数の機能を有する1セットとして実施を行う場合も多く見られるようになってきた。
図75に示されるビデオセット1300は、このような多機能化された構成であり、画像の符号化や復号(いずれか一方でもよいし、両方でも良い)に関する機能を有するデバイスに、その機能に関連するその他の機能を有するデバイスを組み合わせたものである。
図75に示されるように、ビデオセット1300は、ビデオモジュール1311、外部メモリ1312、パワーマネージメントモジュール1313、およびフロントエンドモジュール1314等のモジュール群と、コネクティビティ1321、カメラ1322、およびセンサ1323等の関連する機能を有するデバイスとを有する。
モジュールは、互いに関連するいくつかの部品的機能をまとめ、まとまりのある機能を持った部品としたものである。具体的な物理的構成は任意であるが、例えば、それぞれ機能を有する複数のプロセッサ、抵抗やコンデンサ等の電子回路素子、その他のデバイス等を配線基板等に配置して一体化したものが考えられる。また、モジュールに他のモジュールやプロセッサ等を組み合わせて新たなモジュールとすることも考えられる。
図75の例の場合、ビデオモジュール1311は、画像処理に関する機能を有する構成を組み合わせたものであり、アプリケーションプロセッサ、ビデオプロセッサ、ブロードバンドモデム1333、およびRFモジュール1334を有する。
プロセッサは、所定の機能を有する構成をSoC(System On a Chip)により半導体チップに集積したものであり、例えばシステムLSI(Large Scale Integration)等と称されるものもある。この所定の機能を有する構成は、論理回路(ハードウエア構成)であってもよいし、CPU、ROM、RAM等と、それらを用いて実行されるプログラム(ソフトウエア構成)であってもよいし、その両方を組み合わせたものであってもよい。例えば、プロセッサが、論理回路とCPU、ROM、RAM等とを有し、機能の一部を論理回路(ハードウエア構成)により実現し、その他の機能をCPUにおいて実行されるプログラム(ソフトウエア構成)により実現するようにしてもよい。
図75のアプリケーションプロセッサ1331は、画像処理に関するアプリケーションを実行するプロセッサである。このアプリケーションプロセッサ1331において実行されるアプリケーションは、所定の機能を実現するために、演算処理を行うだけでなく、例えばビデオプロセッサ1332等、ビデオモジュール1311内外の構成を必要に応じて制御することもできる。
ビデオプロセッサ1332は、画像の符号化・復号(その一方または両方)に関する機能を有するプロセッサである。
ブロードバンドモデム1333は、インターネットや公衆電話回線網等の広帯域の回線を介して行われる有線若しくは無線(またはその両方)の広帯域通信により送信するデータ(デジタル信号)をデジタル変調する等してアナログ信号に変換したり、その広帯域通信により受信したアナログ信号を復調してデータ(デジタル信号)に変換したりする。ブロードバンドモデム1333は、例えば、ビデオプロセッサ1332が処理する画像データ、画像データが符号化されたストリーム、アプリケーションプログラム、設定データ等、任意の情報を処理する。
RFモジュール1334は、アンテナを介して送受信されるRF(Radio Frequency)信号に対して、周波数変換、変復調、増幅、フィルタ処理等を行うモジュールである。例えば、RFモジュール1334は、ブロードバンドモデム1333により生成されたベースバンド信号に対して周波数変換等を行ってRF信号を生成する。また、例えば、RFモジュール1334は、フロントエンドモジュール1314を介して受信されたRF信号に対して周波数変換等を行ってベースバンド信号を生成する。
なお、図75において点線1341に示されるように、アプリケーションプロセッサ1331とビデオプロセッサ1332を、一体化し、1つのプロセッサとして構成されるようにしてもよい。
外部メモリ1312は、ビデオモジュール1311の外部に設けられた、ビデオモジュール1311により利用される記憶デバイスを有するモジュールである。この外部メモリ1312の記憶デバイスは、どのような物理構成により実現するようにしてもよいが、一般的にフレーム単位の画像データのような大容量のデータの格納に利用されることが多いので、例えばDRAM(Dynamic Random Access Memory)のような比較的安価で大容量の半導体メモリにより実現するのが望ましい。
パワーマネージメントモジュール1313は、ビデオモジュール1311(ビデオモジュール1311内の各構成)への電力供給を管理し、制御する。
フロントエンドモジュール1314は、RFモジュール1334に対してフロントエンド機能(アンテナ側の送受信端の回路)を提供するモジュールである。図75に示されるように、フロントエンドモジュール1314は、例えば、アンテナ部1351、フィルタ1352、および増幅部1353を有する。
アンテナ部1351は、無線信号を送受信するアンテナおよびその周辺の構成を有する。アンテナ部1351は、増幅部1353から供給される信号を無線信号として送信し、受信した無線信号を電気信号(RF信号)としてフィルタ1352に供給する。フィルタ1352は、アンテナ部1351を介して受信されたRF信号に対してフィルタ処理等を行い、処理後のRF信号をRFモジュール1334に供給する。増幅部1353は、RFモジュール1334から供給されるRF信号を増幅し、アンテナ部1351に供給する。
コネクティビティ1321は、外部との接続に関する機能を有するモジュールである。コネクティビティ1321の物理構成は、任意である。例えば、コネクティビティ1321は、ブロードバンドモデム1333が対応する通信規格以外の通信機能を有する構成や、外部入出力端子等を有する。
例えば、コネクティビティ1321が、Bluetooth(登録商標)、IEEE 802.11(例えばWi-Fi(Wireless Fidelity、登録商標))、NFC(Near Field Communication)、IrDA(InfraRed Data Association)等の無線通信規格に準拠する通信機能を有するモジュールや、その規格に準拠した信号を送受信するアンテナ等を有するようにしてもよい。また、例えば、コネクティビティ1321が、USB(Universal Serial Bus)、HDMI(登録商標)(High-Definition Multimedia Interface)等の有線通信規格に準拠する通信機能を有するモジュールや、その規格に準拠した端子を有するようにしてもよい。さらに、例えば、コネクティビティ1321が、アナログ入出力端子等のその他のデータ(信号)伝送機能等を有するようにしてもよい。
なお、コネクティビティ1321が、データ(信号)の伝送先のデバイスを含むようにしてもよい。例えば、コネクティビティ1321が、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等の記録媒体に対してデータの読み出しや書き込みを行うドライブ(リムーバブルメディアのドライブだけでなく、ハードディスク、SSD(Solid State Drive)、NAS(Network Attached Storage)等も含む)を有するようにしてもよい。また、コネクティビティ1321が、画像や音声の出力デバイス(モニタやスピーカ等)を有するようにしてもよい。
カメラ1322は、被写体を撮像し、被写体の画像データを得る機能を有するモジュールである。カメラ1322の撮像により得られた画像データは、例えば、ビデオプロセッサ1332に供給されて符号化される。
センサ1323は、例えば、音声センサ、超音波センサ、光センサ、照度センサ、赤外線センサ、イメージセンサ、回転センサ、角度センサ、角速度センサ、速度センサ、加速度センサ、傾斜センサ、磁気識別センサ、衝撃センサ、温度センサ等、任意のセンサ機能を有するモジュールである。センサ1323により検出されたデータは、例えば、アプリケーションプロセッサ1331に供給されてアプリケーション等により利用される。
以上においてモジュールとして説明した構成をプロセッサとして実現するようにしてもよいし、逆にプロセッサとして説明した構成をモジュールとして実現するようにしてもよい。
以上のような構成のビデオセット1300において、後述するようにビデオプロセッサ1332に本技術を適用することができる。したがって、ビデオセット1300は、本技術を適用したセットとして実施することができる。
<ビデオプロセッサの構成例>
図76は、本技術を適用したビデオプロセッサ1332(図75)の概略的な構成の一例を示している。
図76の例の場合、ビデオプロセッサ1332は、ビデオ信号およびオーディオ信号の入力を受けてこれらを所定の方式で符号化する機能と、符号化されたビデオデータおよびオーディオデータを復号し、ビデオ信号およびオーディオ信号を再生出力する機能とを有する。
図76に示されるように、ビデオプロセッサ1332は、ビデオ入力処理部1401、第1画像拡大縮小部1402、第2画像拡大縮小部1403、ビデオ出力処理部1404、フレームメモリ1405、およびメモリ制御部1406を有する。また、ビデオプロセッサ1332は、エンコード・デコードエンジン1407、ビデオES(Elementary Stream)バッファ1408Aおよび1408B、並びに、オーディオESバッファ1409Aおよび1409Bを有する。さらに、ビデオプロセッサ1332は、オーディオエンコーダ1410、オーディオデコーダ1411、多重化部(MUX(Multiplexer))1412、逆多重化部(DMUX(Demultiplexer))1413、およびストリームバッファ1414を有する。
ビデオ入力処理部1401は、例えばコネクティビティ1321(図75)等から入力されたビデオ信号を取得し、デジタル画像データに変換する。第1画像拡大縮小部1402は、画像データに対してフォーマット変換や画像の拡大縮小処理等を行う。第2画像拡大縮小部1403は、画像データに対して、ビデオ出力処理部1404を介して出力する先でのフォーマットに応じて画像の拡大縮小処理を行ったり、第1画像拡大縮小部1402と同様のフォーマット変換や画像の拡大縮小処理等を行ったりする。ビデオ出力処理部1404は、画像データに対して、フォーマット変換やアナログ信号への変換等を行って、再生されたビデオ信号として例えばコネクティビティ1321等に出力する。
フレームメモリ1405は、ビデオ入力処理部1401、第1画像拡大縮小部1402、第2画像拡大縮小部1403、ビデオ出力処理部1404、およびエンコード・デコードエンジン1407によって共用される画像データ用のメモリである。フレームメモリ1405は、例えばDRAM等の半導体メモリとして実現される。
メモリ制御部1406は、エンコード・デコードエンジン1407からの同期信号を受けて、アクセス管理テーブル1406Aに書き込まれたフレームメモリ1405へのアクセススケジュールに従ってフレームメモリ1405に対する書き込み・読み出しのアクセスを制御する。アクセス管理テーブル1406Aは、エンコード・デコードエンジン1407、第1画像拡大縮小部1402、第2画像拡大縮小部1403等で実行される処理に応じて、メモリ制御部1406により更新される。
エンコード・デコードエンジン1407は、画像データのエンコード処理、並びに、画像データが符号化されたデータであるビデオストリームのデコード処理を行う。例えば、エンコード・デコードエンジン1407は、フレームメモリ1405から読み出した画像データを符号化し、ビデオストリームとしてビデオESバッファ1408Aに順次書き込む。また、例えば、ビデオESバッファ1408Bからビデオストリームを順次読み出して復号し、画像データとしてフレームメモリ1405に順次書き込む。エンコード・デコードエンジン1407は、これらの符号化や復号において、フレームメモリ1405を作業領域として使用する。また、エンコード・デコードエンジン1407は、例えばマクロブロック毎の処理を開始するタイミングで、メモリ制御部1406に対して同期信号を出力する。
ビデオESバッファ1408Aは、エンコード・デコードエンジン1407によって生成されたビデオストリームをバッファリングして、多重化部(MUX)1412に供給する。ビデオESバッファ1408Bは、逆多重化部(DMUX)1413から供給されたビデオストリームをバッファリングして、エンコード・デコードエンジン1407に供給する。
オーディオESバッファ1409Aは、オーディオエンコーダ1410によって生成されたオーディオストリームをバッファリングして、多重化部(MUX)1412に供給する。オーディオESバッファ1409Bは、逆多重化部(DMUX)1413から供給されたオーディオストリームをバッファリングして、オーディオデコーダ1411に供給する。
オーディオエンコーダ1410は、例えばコネクティビティ1321等から入力されたオーディオ信号を例えばデジタル変換し、例えばMPEGオーディオ方式やAC3(AudioCode number 3)方式等の所定の方式で符号化する。オーディオエンコーダ1410は、オーディオ信号が符号化されたデータであるオーディオストリームをオーディオESバッファ1409Aに順次書き込む。オーディオデコーダ1411は、オーディオESバッファ1409Bから供給されたオーディオストリームを復号し、例えばアナログ信号への変換等を行って、再生されたオーディオ信号として例えばコネクティビティ1321等に供給する。
多重化部(MUX)1412は、ビデオストリームとオーディオストリームとを多重化する。この多重化の方法(すなわち、多重化により生成されるビットストリームのフォーマット)は任意である。また、この多重化の際に、多重化部(MUX)1412は、所定のヘッダ情報等をビットストリームに付加することもできる。つまり、多重化部(MUX)1412は、多重化によりストリームのフォーマットを変換することができる。例えば、多重化部(MUX)1412は、ビデオストリームとオーディオストリームとを多重化することにより、転送用のフォーマットのビットストリームであるトランスポートストリームに変換する。また、例えば、多重化部(MUX)1412は、ビデオストリームとオーディオストリームとを多重化することにより、記録用のファイルフォーマットのデータ(ファイルデータ)に変換する。
逆多重化部(DMUX)1413は、多重化部(MUX)1412による多重化に対応する方法で、ビデオストリームとオーディオストリームとが多重化されたビットストリームを逆多重化する。つまり、逆多重化部(DMUX)1413は、ストリームバッファ1414から読み出されたビットストリームからビデオストリームとオーディオストリームとを抽出する(ビデオストリームとオーディオストリームとを分離する)。つまり、逆多重化部(DMUX)1413は、逆多重化によりストリームのフォーマットを変換(多重化部(MUX)1412による変換の逆変換)することができる。例えば、逆多重化部(DMUX)1413は、例えばコネクティビティ1321やブロードバンドモデム1333等から供給されたトランスポートストリームを、ストリームバッファ1414を介して取得し、逆多重化することにより、ビデオストリームとオーディオストリームとに変換することができる。また、例えば、逆多重化部(DMUX)1413は、例えばコネクティビティ1321により各種記録媒体から読み出されたファイルデータを、ストリームバッファ1414を介して取得し、逆多重化することにより、ビデオストリームとオーディオストリームとに変換することができる。
ストリームバッファ1414は、ビットストリームをバッファリングする。例えば、ストリームバッファ1414は、多重化部(MUX)1412から供給されたトランスポートストリームをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、例えばコネクティビティ1321やブロードバンドモデム1333等に供給する。
また、例えば、ストリームバッファ1414は、多重化部(MUX)1412から供給されたファイルデータをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、例えばコネクティビティ1321等に供給し、各種記録媒体に記録させる。
さらに、ストリームバッファ1414は、例えばコネクティビティ1321やブロードバンドモデム1333等を介して取得したトランスポートストリームをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、逆多重化部(DMUX)1413に供給する。
また、ストリームバッファ1414は、例えばコネクティビティ1321等において各種記録媒体から読み出されたファイルデータをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、逆多重化部(DMUX)1413に供給する。
次に、このような構成のビデオプロセッサ1332の動作の例について説明する。例えば、コネクティビティ1321等からビデオプロセッサ1332に入力されたビデオ信号は、ビデオ入力処理部1401において4:2:2Y/Cb/Cr方式等の所定の方式のデジタル画像データに変換され、フレームメモリ1405に順次書き込まれる。このデジタル画像データは、第1画像拡大縮小部1402または第2画像拡大縮小部1403に読み出されて、4:2:0Y/Cb/Cr方式等の所定の方式へのフォーマット変換および拡大縮小処理が行われ、再びフレームメモリ1405に書き込まれる。この画像データは、エンコード・デコードエンジン1407によって符号化され、ビデオストリームとしてビデオESバッファ1408Aに書き込まれる。
また、コネクティビティ1321等からビデオプロセッサ1332に入力されたオーディオ信号は、オーディオエンコーダ1410によって符号化され、オーディオストリームとして、オーディオESバッファ1409Aに書き込まれる。
ビデオESバッファ1408Aのビデオストリームと、オーディオESバッファ1409Aのオーディオストリームは、多重化部(MUX)1412に読み出されて多重化され、トランスポートストリームまたはファイルデータ等に変換される。多重化部(MUX)1412により生成されたトランスポートストリームは、ストリームバッファ1414にバッファされた後、例えばコネクティビティ1321やブロードバンドモデム1333等を介して外部ネットワークに出力される。また、多重化部(MUX)1412により生成されたファイルデータは、ストリームバッファ1414にバッファされた後、例えばコネクティビティ1321等に出力され、各種記録媒体に記録される。
また、例えばコネクティビティ1321やブロードバンドモデム1333等を介して外部ネットワークからビデオプロセッサ1332に入力されたトランスポートストリームは、ストリームバッファ1414にバッファされた後、逆多重化部(DMUX)1413により逆多重化される。また、例えばコネクティビティ1321等において各種記録媒体から読み出され、ビデオプロセッサ1332に入力されたファイルデータは、ストリームバッファ1414にバッファされた後、逆多重化部(DMUX)1413により逆多重化される。つまり、ビデオプロセッサ1332に入力されたトランスポートストリームまたはファイルデータは、逆多重化部(DMUX)1413によりビデオストリームとオーディオストリームとに分離される。
オーディオストリームは、オーディオESバッファ1409Bを介してオーディオデコーダ1411に供給され、復号されてオーディオ信号が再生される。また、ビデオストリームは、ビデオESバッファ1408Bに書き込まれた後、エンコード・デコードエンジン1407により順次読み出されて復号されてフレームメモリ1405に書き込まれる。復号された画像データは、第2画像拡大縮小部1403によって拡大縮小処理されて、フレームメモリ1405に書き込まれる。そして、復号された画像データは、ビデオ出力処理部1404に読み出されて、4:2:2Y/Cb/Cr方式等の所定の方式にフォーマット変換され、さらにアナログ信号に変換されて、ビデオ信号が再生出力される。
このように構成されるビデオプロセッサ1332に本技術を適用する場合、エンコード・デコードエンジン1407に、上述した各実施形態に係る本技術を適用すればよい。つまり、例えば、エンコード・デコードエンジン1407が、上述した画像符号化装置100の機能若しくは画像復号装置200の機能またはその両方を有するようにしてもよい。このようにすることにより、ビデオプロセッサ1332は、図1乃至図69を参照して上述した各実施の形態と同様の効果を得ることができる。
なお、エンコード・デコードエンジン1407において、本技術(すなわち、画像符号化装置100の機能若しくは画像復号装置200の機能またはその両方)は、論理回路等のハードウエアにより実現するようにしてもよいし、組み込みプログラム等のソフトウエアにより実現するようにしてもよいし、それらの両方により実現するようにしてもよい。
<ビデオプロセッサの他の構成例>
図77は、本技術を適用したビデオプロセッサ1332の概略的な構成の他の例を示している。図77の例の場合、ビデオプロセッサ1332は、ビデオデータを所定の方式で符号化・復号する機能を有する。
より具体的には、図77に示されるように、ビデオプロセッサ1332は、制御部1511、ディスプレイインタフェース1512、ディスプレイエンジン1513、画像処理エンジン1514、および内部メモリ1515を有する。また、ビデオプロセッサ1332は、コーデックエンジン1516、メモリインタフェース1517、多重化・逆多重化部(MUX DMUX)1518、ネットワークインタフェース1519、およびビデオインタフェース1520を有する。
制御部1511は、ディスプレイインタフェース1512、ディスプレイエンジン1513、画像処理エンジン1514、およびコーデックエンジン1516等、ビデオプロセッサ1332内の各処理部の動作を制御する。
図77に示されるように、制御部1511は、例えば、メインCPU1531、サブCPU1532、およびシステムコントローラ1533を有する。メインCPU1531は、ビデオプロセッサ1332内の各処理部の動作を制御するためのプログラム等を実行する。メインCPU1531は、そのプログラム等に従って制御信号を生成し、各処理部に供給する(つまり、各処理部の動作を制御する)。サブCPU1532は、メインCPU1531の補助的な役割を果たす。例えば、サブCPU1532は、メインCPU1531が実行するプログラム等の子プロセスやサブルーチン等を実行する。システムコントローラ1533は、メインCPU1531およびサブCPU1532が実行するプログラムを指定する等、メインCPU1531およびサブCPU1532の動作を制御する。
ディスプレイインタフェース1512は、制御部1511の制御の下、画像データを例えばコネクティビティ1321等に出力する。例えば、ディスプレイインタフェース1512は、デジタルデータの画像データをアナログ信号に変換し、再生されたビデオ信号として、またはデジタルデータの画像データのまま、コネクティビティ1321のモニタ装置等に出力する。
ディスプレイエンジン1513は、制御部1511の制御の下、画像データに対して、その画像を表示させるモニタ装置等のハードウエアスペックに合わせるように、フォーマット変換、サイズ変換、色域変換等の各種変換処理を行う。
画像処理エンジン1514は、制御部1511の制御の下、画像データに対して、例えば画質改善のためのフィルタ処理等、所定の画像処理を施す。
内部メモリ1515は、ディスプレイエンジン1513、画像処理エンジン1514、およびコーデックエンジン1516により共用される、ビデオプロセッサ1332の内部に設けられたメモリである。内部メモリ1515は、例えば、ディスプレイエンジン1513、画像処理エンジン1514、およびコーデックエンジン1516の間で行われるデータの授受に利用される。例えば、内部メモリ1515は、ディスプレイエンジン1513、画像処理エンジン1514、またはコーデックエンジン1516から供給されるデータを格納し、必要に応じて(例えば、要求に応じて)、そのデータを、ディスプレイエンジン1513、画像処理エンジン1514、またはコーデックエンジン1516に供給する。この内部メモリ1515は、どのような記憶デバイスにより実現するようにしてもよいが、一般的にブロック単位の画像データやパラメータ等といった小容量のデータの格納に利用することが多いので、例えばSRAM(Static Random Access Memory)のような比較的(例えば外部メモリ1312と比較して)小容量だが応答速度が高速な半導体メモリにより実現するのが望ましい。
コーデックエンジン1516は、画像データの符号化や復号に関する処理を行う。このコーデックエンジン1516が対応する符号化・復号の方式は任意であり、その数は1つであってもよいし、複数であってもよい。例えば、コーデックエンジン1516は、複数の符号化・復号方式のコーデック機能を備え、その中から選択されたもので画像データの符号化または符号化データの復号を行うようにしてもよい。
図77に示される例において、コーデックエンジン1516は、コーデックに関する処理の機能ブロックとして、例えば、MPEG-2 Video1541、AVC/H.2641542、HEVC/H.2651543、HEVC/H.265(Scalable)1544、HEVC/H.265(Multi-view)1545、およびMPEG-DASH1551を有する。
MPEG-2 Video1541は、画像データをMPEG-2方式で符号化したり復号したりする機能ブロックである。AVC/H.2641542は、画像データをAVC方式で符号化したり復号したりする機能ブロックである。HEVC/H.2651543は、画像データをHEVC方式で符号化したり復号したりする機能ブロックである。HEVC/H.265(Scalable)1544は、画像データをHEVC方式でスケーラブル符号化したりスケーラブル復号したりする機能ブロックである。HEVC/H.265(Multi-view)1545は、画像データをHEVC方式で多視点符号化したり多視点復号したりする機能ブロックである。
MPEG-DASH1551は、画像データをMPEG-DASH(MPEG-Dynamic Adaptive Streaming over HTTP)方式で送受信する機能ブロックである。MPEG-DASHは、HTTP(HyperText Transfer Protocol)を使ってビデオのストリーミングを行う技術であり、予め用意された解像度等が互いに異なる複数の符号化データの中から適切なものをセグメント単位で選択し伝送することを特徴の1つとする。MPEG-DASH1551は、規格に準拠するストリームの生成やそのストリームの伝送制御等を行い、画像データの符号化・復号については、上述したMPEG-2 Video1541乃至HEVC/H.265(Multi-view)1545を利用する。
メモリインタフェース1517は、外部メモリ1312用のインタフェースである。画像処理エンジン1514やコーデックエンジン1516から供給されるデータは、メモリインタフェース1517を介して外部メモリ1312に供給される。また、外部メモリ1312から読み出されたデータは、メモリインタフェース1517を介してビデオプロセッサ1332(画像処理エンジン1514またはコーデックエンジン1516)に供給される。
多重化・逆多重化部(MUX DMUX)1518は、符号化データのビットストリーム、画像データ、ビデオ信号等、画像に関する各種データの多重化や逆多重化を行う。この多重化・逆多重化の方法は任意である。例えば、多重化の際に、多重化・逆多重化部(MUX DMUX)1518は、複数のデータを1つにまとめるだけでなく、所定のヘッダ情報等をそのデータに付加することもできる。また、逆多重化の際に、多重化・逆多重化部(MUX DMUX)1518は、1つのデータを複数に分割するだけでなく、分割した各データに所定のヘッダ情報等を付加することもできる。つまり、多重化・逆多重化部(MUX DMUX)1518は、多重化・逆多重化によりデータのフォーマットを変換することができる。例えば、多重化・逆多重化部(MUX DMUX)1518は、ビットストリームを多重化することにより、転送用のフォーマットのビットストリームであるトランスポートストリームや、記録用のファイルフォーマットのデータ(ファイルデータ)に変換することができる。もちろん、逆多重化によりその逆変換も可能である。
ネットワークインタフェース1519は、例えばブロードバンドモデム1333やコネクティビティ1321等向けのインタフェースである。ビデオインタフェース1520は、例えばコネクティビティ1321やカメラ1322等向けのインタフェースである。
次に、このようなビデオプロセッサ1332の動作の例について説明する。例えば、コネクティビティ1321やブロードバンドモデム1333等を介して外部ネットワークからトランスポートストリームを受信すると、そのトランスポートストリームは、ネットワークインタフェース1519を介して多重化・逆多重化部(MUX DMUX)1518に供給されて逆多重化され、コーデックエンジン1516により復号される。コーデックエンジン1516の復号により得られた画像データは、例えば、画像処理エンジン1514により所定の画像処理が施され、ディスプレイエンジン1513により所定の変換が行われ、ディスプレイインタフェース1512を介して例えばコネクティビティ1321等に供給され、その画像がモニタに表示される。また、例えば、コーデックエンジン1516の復号により得られた画像データは、コーデックエンジン1516により再符号化され、多重化・逆多重化部(MUX DMUX)1518により多重化されてファイルデータに変換され、ビデオインタフェース1520を介して例えばコネクティビティ1321等に出力され、各種記録媒体に記録される。
さらに、例えば、コネクティビティ1321等により図示せぬ記録媒体から読み出された、画像データが符号化された符号化データのファイルデータは、ビデオインタフェース1520を介して多重化・逆多重化部(MUX DMUX)1518に供給されて逆多重化され、コーデックエンジン1516により復号される。コーデックエンジン1516の復号により得られた画像データは、画像処理エンジン1514により所定の画像処理が施され、ディスプレイエンジン1513により所定の変換が行われ、ディスプレイインタフェース1512を介して例えばコネクティビティ1321等に供給され、その画像がモニタに表示される。また、例えば、コーデックエンジン1516の復号により得られた画像データは、コーデックエンジン1516により再符号化され、多重化・逆多重化部(MUX DMUX)1518により多重化されてトランスポートストリームに変換され、ネットワークインタフェース1519を介して例えばコネクティビティ1321やブロードバンドモデム1333等に供給され図示せぬ他の装置に伝送される。
なお、ビデオプロセッサ1332内の各処理部の間での画像データやその他のデータの授受は、例えば、内部メモリ1515や外部メモリ1312を利用して行われる。また、パワーマネージメントモジュール1313は、例えば制御部1511への電力供給を制御する。
このように構成されるビデオプロセッサ1332に本技術を適用する場合、コーデックエンジン1516に、上述した各実施形態に係る本技術を適用すればよい。つまり、例えば、コーデックエンジン1516が、上述した画像符号化装置100の機能若しくは画像復号装置200の機能またはその両方を有するようにすればよい。このようにすることにより、ビデオプロセッサ1332は、図1乃至図69を参照して上述した各実施の形態と同様の効果を得ることができる。
なお、コーデックエンジン1516において、本技術(すなわち、画像符号化装置100の機能)は、論理回路等のハードウエアにより実現するようにしてもよいし、組み込みプログラム等のソフトウエアにより実現するようにしてもよいし、それらの両方により実現するようにしてもよい。
以上にビデオプロセッサ1332の構成を2例示したが、ビデオプロセッサ1332の構成は任意であり、上述した2例以外のものであってもよい。また、このビデオプロセッサ1332は、1つの半導体チップとして構成されるようにしてもよいが、複数の半導体チップとして構成されるようにしてもよい。例えば、複数の半導体を積層する3次元積層LSIとしてもよい。また、複数のLSIにより実現されるようにしてもよい。
<装置への適用例>
ビデオセット1300は、画像データを処理する各種装置に組み込むことができる。例えば、ビデオセット1300は、テレビジョン装置900(図71)、携帯電話機920(図72)、記録再生装置940(図73)、撮像装置960(図74)等に組み込むことができる。ビデオセット1300を組み込むことにより、その装置は、図1乃至図69を参照して上述した各実施の形態と同様の効果を得ることができる。
なお、上述したビデオセット1300の各構成の一部であっても、ビデオプロセッサ1332を含むものであれば、本技術を適用した構成として実施することができる。例えば、ビデオプロセッサ1332のみを本技術を適用したビデオプロセッサとして実施することができる。また、例えば、上述したように点線1341により示されるプロセッサやビデオモジュール1311等を、本技術を適用したプロセッサやモジュール等として実施することができる。さらに、例えば、ビデオモジュール1311、外部メモリ1312、パワーマネージメントモジュール1313、およびフロントエンドモジュール1314を組み合わせ、本技術を適用したビデオユニット1361として実施することもできる。いずれの構成の場合であっても、図1乃至図69を参照して上述した各実施の形態と同様の効果を得ることができる。
つまり、ビデオプロセッサ1332を含むものであればどのような構成であっても、ビデオセット1300の場合と同様に、画像データを処理する各種装置に組み込むことができる。例えば、ビデオプロセッサ1332、点線1341により示されるプロセッサ、ビデオモジュール1311、または、ビデオユニット1361を、テレビジョン装置900(図71)、携帯電話機920(図72)、記録再生装置940(図73)、撮像装置960(図74)等に組み込むことができる。そして、本技術を適用したいずれかの構成を組み込むことにより、その装置は、ビデオセット1300の場合と同様に、図1乃至図69を参照して上述した各実施の形態と同様の効果を得ることができる。
<第6の応用例:ネットワークシステム>
また、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。図78は、本技術を適用したネットワークシステムの概略的な構成の一例を示している。
図78に示されるネットワークシステム1600は、機器同士が、ネットワークを介して画像(動画像)に関する情報を授受するシステムである。このネットワークシステム1600のクラウドサービス1601は、自身に通信可能に接続されるコンピュータ1611、AV(Audio Visual)機器1612、携帯型情報処理端末1613、IoT(Internet of Things)デバイス1614等の端末に対して、画像(動画像)に関するサービスを提供するシステムである。例えば、クラウドサービス1601は、所謂動画配信(オンデマンドやライブ配信)のような、画像(動画像)のコンテンツの供給サービスを端末に提供する。また、例えば、クラウドサービス1601は、端末から画像(動画像)のコンテンツを受け取って保管するバックアップサービスを提供する。また、例えば、クラウドサービス1601は、端末同士の画像(動画像)のコンテンツの授受を仲介するサービスを提供する。
クラウドサービス1601の物理構成は任意である。例えば、クラウドサービス1601は、動画像を保存し、管理するサーバ、動画像を端末に配信するサーバ、動画像を端末から取得するサーバ、ユーザ(端末)や課金を管理するサーバ等の各種サーバや、インターネットやLAN等の任意のネットワークを有するようにしてもよい。
コンピュータ1611は、例えば、パーソナルコンピュータ、サーバ、ワークステーション等のような情報処理装置により構成される。AV機器1612は、例えば、テレビジョン受像機、ハードディスクレコーダ、ゲーム機器、カメラ等のような画像処理装置により構成される。携帯型情報処理端末1613は、例えば、ノート型パーソナルコンピュータ、タブレット端末、携帯電話機、スマートフォン等のような携帯型の情報処理装置により構成される。IoTデバイス1614は、例えば、機械、家電、家具、その他の物、ICタグ、カード型デバイス等、画像に関する処理を行う任意の物体により構成される。これらの端末は、いずれも通信機能を有し、クラウドサービス1601に接続し(セッションを確立し)、クラウドサービス1601と情報の授受を行う(すなわち通信を行う)ことができる。また、各端末は、他の端末と通信を行うこともできる。端末間の通信は、クラウドサービス1601を介して行うようにしてもよいし、クラウドサービス1601を介さずに行うようにしてもよい。
以上のようなネットワークシステム1600に本技術を適用し、端末間や、端末とクラウドサービス1601との間で画像(動画像)のデータが授受される際に、その画像データを各実施の形態において上述したように符号化・復号するようにしてもよい。つまり、端末(コンピュータ1611乃至IoTデバイス1614)やクラウドサービス1601が、それぞれ、上述した画像符号化装置100や画像復号装置200の機能を有するようにしてもよい。このようにすることにより、画像データを授受する端末やクラウドサービス1601は、符号化効率の低減を抑制することができる。
<その他>
なお、符号化データ(ビットストリーム)に関する各種情報は、符号化データに多重化されて伝送され又は記録されるようにしてもよいし、符号化データに多重化されることなく、符号化データと関連付けられた別個のデータとして伝送され又は記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
また、上述したように、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを1つのデータにまとめるといった、複数の物を1つにまとめることを意味し、上述の「関連付ける」の1つの方法を意味する。
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術を、他の実施の形態において説明した本技術と組み合わせて実施することもできる。また、上述した任意の本技術を、上述していない他の技術と併用して実施することもできる。
なお、本技術は以下のような構成も取ることができる。
(1) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換をスキップさせる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換もスキップさせる制御部
を備える画像処理装置。
(2) 前記制御部は、前記プライマリ変換のスキップに関する第1の情報が前記プライマリ変換のスキップを示す場合、前記プライマリ変換および前記セカンダリ変換をスキップさせる
(1)に記載の画像処理装置。
(3) 前記制御部は、前記第1の情報が前記プライマリ変換の実行を示す場合、前記プライマリ変換を実行させ、前記セカンダリ変換の内容に関する第2の情報が前記セカンダリ変換のスキップを示すとき、前記セカンダリ変換をスキップさせる
(1)または(2)に記載の画像処理装置。
(4) 前記プライマリ変換は直交変換である
(1)乃至(3)のいずれかに記載の画像処理装置。
(5) 前記セカンダリ変換は、
前記プライマリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(1)乃至(4)のいずれかに記載の画像処理装置。
(6) 前記制御部の制御に従って前記プライマリ変換を行うプライマリ変換部と、
前記制御部の制御に従って前記セカンダリ変換を行うセカンダリ変換部と
をさらに備える(1)乃至(5)のいずれかに記載の画像処理装置。
(7) 前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数または前記予測残差に対して量子化を行う量子化部と、
前記量子化部により前記セカンダリ変換係数または前記予測残差が量子化されて得られる量子化変換係数レベルを符号化する符号化部と
をさらに備える(1)乃至(6)のいずれかに記載の画像処理装置。
(8) 前記制御部は、前記プライマリ変換のスキップに関する第1の情報が前記プライマリ変換のスキップを示す場合、前記プライマリ変換および前記セカンダリ変換をスキップさせ、
前記量子化部は、前記予測残差に対して量子化を行い、
前記符号化部は、前記量子化変換係数レベルおよび前記第1の情報を符号化し、前記量子化変換係数レベルの符号化データおよび前記第1の情報の符号化データを含むビットストリームを生成する
(1)乃至(7)のいずれかに記載の画像処理装置。
(9) 前記予測画像を生成する予測部をさらに備える
(1)乃至(8)のいずれかに記載の画像処理装置。
(10) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換をスキップさせる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換もスキップさせる
画像処理方法。
(11) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換をスキップさせる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換もスキップさせる制御部
を備える画像処理装置。
(12) 前記制御部は、前記逆プライマリ変換のスキップに関する第1の情報が前記逆プライマリ変換のスキップを示す場合、前記逆プライマリ変換および前記逆セカンダリ変換をスキップさせる
(11)に記載の画像処理装置。
(13) 前記制御部は、前記第1の情報が前記逆プライマリ変換の実行を示し、かつ、前記逆セカンダリ変換の内容に関する第2の情報が前記逆セカンダリ変換のスキップを示す場合、前記逆セカンダリ変換をスキップさせて、前記逆プライマリ変換を実行させる
(11)または(12)に記載の画像処理装置。
(14) 前記逆プライマリ変換は逆直交変換である
(11)乃至(13)のいずれかに記載の画像処理装置。
(15) 前記逆セカンダリ変換は、
符号化データが復号され、逆量子化されて得られるセカンダリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(11)乃至(14)のいずれかに記載の画像処理装置。
(16) 前記制御部の制御に従って前記逆プライマリ変換を行う逆プライマリ変換部と、
前記制御部の制御に従って前記逆セカンダリ変換を行う逆セカンダリ変換部と
をさらに備える(11)乃至(15)のいずれかに記載の画像処理装置。
(17) 符号化データを復号する復号部と、
前記復号部により前記符号化データが復号されて得られる量子化変換係数レベルを逆量子化する逆量子化部と
をさらに備え、
前記逆セカンダリ変換部は、前記逆量子化部により前記量子化変換係数レベルが逆量子化されて得られるセカンダリ変換係数に対して前記逆セカンダリ変換を行い、
前記逆プライマリ変換部は、前記逆セカンダリ変換部により前記セカンダリ変換係数が前記逆セカンダリ変換されて得られる前記プライマリ変換係数に対して前記逆プライマリ変換を行う
(11)乃至(16)のいずれかに記載の画像処理装置。
(18) 前記復号部は、ビットストリームより、前記量子化変換係数レベルの符号化データと、前記逆プライマリ変換のスキップに関する第1の情報の符号化データとを取得して復号し、
前記制御部は、前記復号部により復号されて得られる前記第1の情報が前記プライマリ変換のスキップを示す場合、前記逆プライマリ変換および前記逆セカンダリ変換をスキップさせる
(11)乃至(17)のいずれかに記載の画像処理装置。
(19) 前記予測画像を生成する予測部をさらに備える
(11)乃至(18)のいずれかに記載の画像処理装置。
(20) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換をスキップさせる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換もスキップさせる
画像処理方法。
(21) 画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対してセカンダリ変換が行われる場合、前記プライマリ変換のスキップに関する第1の情報の符号化をスキップする符号化部
を備える画像処理装置。
(22) 前記符号化部は、前記セカンダリ変換の内容に関する第2の情報が前記セカンダリ変換の実行を示す場合、前記第1の情報の符号化をスキップする
(21)に記載の画像処理装置。
(23) 前記符号化部は、
前記プライマリ変換、前記セカンダリ変換、および、前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数に対する量子化のスキップに関する第3の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化の実行を示し、
前記第2の情報が前記セカンダリ変換のスキップを示し、
前記プライマリ変換のスキップの許可に関する第4の情報が前記プライマリ変換のスキップの許可を示し、
かつ、処理対象の変換ブロックのサイズが、前記プライマリ変換のスキップが許可される変換ブロックの最大サイズ以下である場合、
前記第1の情報を符号化する
(21)または(22)に記載の画像処理装置。
(24) 前記プライマリ変換は直交変換である
(21)乃至(23)のいずれかに記載の画像処理装置。
(25) 前記セカンダリ変換は、
前記プライマリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(21)乃至(24)のいずれかに記載の画像処理装置。
(26) 前記プライマリ変換を行うプライマリ変換部と、
前記セカンダリ変換を行うセカンダリ変換部と、
前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数または前記予測残差に対して量子化を行う量子化部と
をさらに備え、
前記符号化部は、前記量子化部により前記セカンダリ変換係数または前記予測残差が量子化されて得られる量子化変換係数レベルを符号化し、前記量子化変換係数レベルの符号化データを含むビットストリームを生成する
(21)乃至(25)のいずれかに記載の画像処理装置。
(27) 前記符号化部は、前記第1の情報の符号化を行う場合、さらに、前記第1の情報を符号化し、生成した前記第1の情報の符号化データを前記ビットストリームに含める
(21)乃至(26)のいずれかに記載の画像処理装置。
(28) 前記符号化部は、さらに、前記セカンダリ変換の内容に関する第2の情報を符号化し、生成した前記第2の情報の符号化データを前記ビットストリームに含める
(21)乃至(27)のいずれかに記載の画像処理装置。
(29) 前記予測画像を生成する予測部をさらに備える
(21)乃至(28)のいずれかに記載の画像処理装置。
(30) 画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対してセカンダリ変換が行われる場合、前記プライマリ変換のスキップに関する第1の情報の符号化をスキップする
画像処理方法。
(31) 画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換が行われる場合、前記プライマリ変換の逆変換である逆プライマリ変換のスキップに関する第1の情報の符号化データの復号をスキップする復号部
画像処理装置。
(32) 前記復号部は、前記逆セカンダリ変換の内容に関する第2の情報が前記逆セカンダリ変換の実行を示す場合、前記第1の情報の符号化データの復号をスキップする
(31)に記載の画像処理装置。
(33) 前記復号部は、前記第1の情報の符号化データの復号をスキップする場合、前記第1の情報が前記逆プライマリ変換の実行を示すと推定する
(31)または(32)に記載の画像処理装置。
(34) 前記復号部は、
前記逆プライマリ変換、前記逆セカンダリ変換、および、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化のスキップに関する第3の情報が前記逆プライマリ変換、前記逆セカンダリ変換、および前記逆量子化の実行を示し、
前記第2の情報が前記逆セカンダリ変換のスキップを示し、
前記逆プライマリ変換のスキップの許可に関する第4の情報が前記逆プライマリ変換のスキップの許可を示し、
かつ、処理対象の変換ブロックのサイズが、前記逆プライマリ変換のスキップが許可される変換ブロックの最大サイズ以下である場合、
前記第1の情報の符号化データを復号する
(31)乃至(33)のいずれかに記載の画像処理装置。
(35) 前記復号部は、さらに、量子化変換係数レベルの符号化データを復号するように構成され、
前記復号部により前記符号化データが復号されて得られる前記量子化変換係数レベルを逆量子化する逆量子化部をさらに備える
(31)乃至(34)のいずれかに記載の画像処理装置。
(36) 前記逆セカンダリ変換を行う逆セカンダリ変換部と、
前記逆プライマリ変換を行う逆プライマリ変換部と
をさらに備える(31)乃至(35)のいずれかに記載の画像処理装置。
(37) 前記逆プライマリ変換は逆直交変換である
(31)乃至(36)のいずれかに記載の画像処理装置。
(38) 前記逆セカンダリ変換は、
符号化データが復号され、逆量子化されて得られるセカンダリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(31)乃至(37)のいずれかに記載の画像処理装置。
(39) 前記予測画像を生成する予測部をさらに備える
(31)乃至(38)のいずれかに記載の画像処理装置。
(40) 画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換が行われる場合、前記プライマリ変換の逆変換である逆プライマリ変換のスキップに関する第1の情報の符号化データの復号をスキップする
画像処理方法。
(41) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換がスキップされる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする符号化部
を備える画像処理装置。
(42) 前記符号化部は、前記プライマリ変換のスキップに関する第2の情報が前記プライマリ変換のスキップを示す場合、前記第1の情報の符号化をスキップする
(41)に記載の画像処理装置。
(43) 前記符号化部は、
前記セカンダリ変換の許可に関する第3の情報が前記セカンダリ変換の許可を示し、
前記プライマリ変換、前記セカンダリ変換、および、前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数に対する量子化のスキップに関する第4の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化の実行を示し、
前記第2の情報が前記プライマリ変換の実行を示し、
かつ、処理対象の変換ブロック内の非ゼロ係数の総数が所定の閾値以上である場合、
前記第1の情報を符号化する
(41)または(42)に記載の画像処理装置。
(44) 前記プライマリ変換は直交変換である
(41)乃至(43)のいずれかに記載の画像処理装置。
(45) 前記セカンダリ変換は、
前記プライマリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(41)乃至(44)のいずれかに記載の画像処理装置。
(46) 前記プライマリ変換を行うプライマリ変換部と、
前記セカンダリ変換を行うセカンダリ変換部と、
前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数または前記予測残差に対して量子化を行う量子化部と
をさらに備え、
前記符号化部は、前記量子化部により前記セカンダリ変換係数または前記予測残差が量子化されて得られる量子化変換係数レベルを符号化し、前記量子化変換係数レベルの符号化データを含むビットストリームを生成する
(41)乃至(45)のいずれかに記載の画像処理装置。
(47) 前記符号化部は、前記第1の情報の符号化を行う場合、さらに、前記第1の情報を符号化し、生成した前記第1の情報の符号化データを前記ビットストリームに含める
(41)乃至(46)のいずれかに記載の画像処理装置。
(48) 前記符号化部は、前記プライマリ変換のスキップに関する第2の情報の符号化を行う場合、さらに、前記第2の情報を符号化し、生成した前記第2の情報の符号化データを前記ビットストリームに含める
(41)乃至(47)のいずれかに記載の画像処理装置。
(49) 前記予測画像を生成する予測部をさらに備える
(41)乃至(48)のいずれかに記載の画像処理装置。
(50) 前記復号部は、前記逆プライマリ変換および前記逆セカンダリ変換の変換ブロックの水平方向のサイズおよび垂直方向のサイズに基づいて、前記逆プライマリ変換のスキップに関する逆プライマリ変換スキップ情報の復号をスキップする
ように構成された
(41)乃至(49)のいずれかに記載の画像処理装置。
(51) 前記復号部は、前記変換ブロックの水平方向および垂直方向のサイズのうちの大きい方が所定値より大きい場合、前記逆プライマリ変換スキップ情報の復号をスキップする
ように構成された
(50)に記載の画像処理装置。
(52) 前記復号部は、前記変換ブロックの水平方向と垂直方向のサイズの和または積が所定値より大きい場合、前記逆プライマリ変換スキップ情報の復号をスキップする
ように構成された
(50)に記載の画像処理装置。
(53) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換がスキップされる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする
画像処理方法。
(54) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換がスキップされる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする復号部
を備える画像処理装置。
(55) 前記復号部は、前記逆プライマリ変換のスキップに関する第2の情報が前記逆プライマリ変換のスキップを示す場合、前記第1の情報の符号化データの復号をスキップする
(54)に記載の画像処理装置。
(56) 前記復号部は、前記第1の情報の符号化データの復号をスキップする場合、前記第1の情報が前記逆セカンダリ変換のスキップを示すと推定する
(54)または(55)に記載の画像処理装置。
(57) 前記復号部は、
前記逆セカンダリ変換の許可に関する第3の情報が前記逆セカンダリ変換の許可を示し、
前記逆プライマリ変換、前記逆セカンダリ変換、および、符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化のスキップに関する第4の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化の実行を示し、
前記第2の情報が前記プライマリ変換の実行を示し、
かつ、処理対象の変換ブロック内の非ゼロ係数の総数が所定の閾値以上である場合、
前記第1の情報の符号化データを復号する
(54)乃至(56)のいずれかに記載の画像処理装置。
(58) 前記復号部は、さらに、量子化変換係数レベルの符号化データを復号するように構成され、
前記復号部により前記符号化データが復号されて得られる前記量子化変換係数レベルを逆量子化する逆量子化部をさらに備える
(54)乃至(57)のいずれかに記載の画像処理装置。
(59) 前記逆セカンダリ変換を行う逆セカンダリ変換部と、
前記逆プライマリ変換を行う逆プライマリ変換部と
をさらに備える(54)乃至(58)のいずれかに記載の画像処理装置。
(60) 前記逆プライマリ変換は逆直交変換である
(54)乃至(59)のいずれかに記載の画像処理装置。
(61) 前記逆セカンダリ変換は、
符号化データが復号され、逆量子化されて得られるセカンダリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(54)乃至(60)のいずれかに記載の画像処理装置。
(62) 前記予測画像を生成する予測部をさらに備える
(54)乃至(61)のいずれかに記載の画像処理装置。
(63) 前記復号部は、前記逆プライマリ変換および前記逆セカンダリ変換の変換ブロックの水平方向のサイズおよび垂直方向のサイズに基づいて、前記逆プライマリ変換のスキップに関する逆プライマリ変換スキップ情報の復号をスキップする
ように構成された
(54)乃至(62)のいずれかに記載の画像処理装置。
(64) 前記復号部は、前記変換ブロックの水平方向および垂直方向のサイズのうちの大きい方が所定値より大きい場合、前記逆プライマリ変換スキップ情報の復号をスキップする
ように構成された
(63)に記載の画像処理装置。
(65) 前記復号部は、前記変換ブロックの水平方向と垂直方向のサイズの和または積が所定値より大きい場合、前記逆プライマリ変換スキップ情報の復号をスキップする
ように構成された
(63)に記載の画像処理装置。
(66) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換の逆変換である逆プライマリ変換がスキップされる場合、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする
画像処理方法。
(67) 処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする符号化部
を備える画像処理装置。
(68) 前記符号化部は、処理対象の変換ブロックに含まれる前記非ゼロ係数の総数を求め、前記総数を前記変換ブロックのサブブロック数で除算することにより、前記平均値を求める
(67)に記載の画像処理装置。
(69) 前記符号化部は、
前記セカンダリ変換の許可に関する第2の情報が前記セカンダリ変換の許可を示し、
前記プライマリ変換、前記セカンダリ変換、および、前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数に対する量子化のスキップに関する第3の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化の実行を示し、
前記プライマリ変換のスキップに関する第4の情報が前記プライマリ変換の実行を示し、
かつ、前記平均値が前記閾値以上である場合、
前記第1の情報を符号化する
(67)または(68)に記載の画像処理装置。
(70) 前記プライマリ変換は直交変換である
(67)乃至(69)のいずれかに記載の画像処理装置。
(71) 前記セカンダリ変換は、
前記プライマリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(67)乃至(70)のいずれかに記載の画像処理装置。
(72) 前記プライマリ変換を行うプライマリ変換部と、
前記セカンダリ変換を行うセカンダリ変換部と
をさらに備える(67)乃至(71)のいずれかに記載の画像処理装置。
(73) 前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数または前記予測残差に対して量子化を行う量子化部と
をさらに備え、
前記符号化部は、前記量子化部により前記セカンダリ変換係数または前記予測残差が量子化されて得られる量子化変換係数レベルを符号化し、前記量子化変換係数レベルの符号化データを含むビットストリームを生成する
(67)乃至(72)のいずれかに記載の画像処理装置。
(74) 前記符号化部は、前記第1の情報の符号化を行う場合、さらに、前記第1の情報を符号化し、生成した前記第1の情報の符号化データを前記ビットストリームに含める
(67)乃至(73)のいずれかに記載の画像処理装置。
(75) 前記予測画像を生成する予測部をさらに備える
(67)乃至(74)のいずれかに記載の画像処理装置。
(76) 処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換のスキップに関する第1の情報の符号化をスキップする
画像処理方法。
(77) 処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする復号部
を備える画像処理装置。
(78) 前記復号部は、処理対象の変換ブロックに含まれる前記非ゼロ係数の総数を求め、前記総数を前記変換ブロックのサブブロック数で除算することにより、前記平均値を求める
(77)に記載の画像処理装置。
(79) 前記復号部は、前記第1の情報の符号化データの復号をスキップする場合、前記第1の情報が前記逆セカンダリ変換のスキップを示すと推定する
(77)または(78)に記載の画像処理装置。
(80) 前記復号部は、
前記セカンダリ変換の許可に関する第2の情報が前記セカンダリ変換の許可を示し、
前記プライマリ変換、前記セカンダリ変換、および、前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数に対する量子化のスキップに関する第3の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化の実行を示し、
前記プライマリ変換のスキップに関する第4の情報が前記プライマリ変換の実行を示し、
かつ、前記平均値が前記閾値以上である場合、
前記第1の情報の符号化データを復号する
(77)乃至(79)のいずれかに記載の画像処理装置。
(81) 前記復号部は、さらに、量子化変換係数レベルの符号化データを復号するように構成され、
前記復号部により前記符号化データが復号されて得られる前記量子化変換係数レベルを逆量子化する逆量子化部をさらに備える
(77)乃至(80)のいずれかに記載の画像処理装置。
(82) 前記逆セカンダリ変換を行う逆セカンダリ変換部と、
前記逆プライマリ変換を行う逆プライマリ変換部と
をさらに備える(77)乃至(81)のいずれかに記載の画像処理装置。
(83) 前記逆プライマリ変換は逆直交変換である
(77)乃至(82)のいずれかに記載の画像処理装置。
(84) 前記逆セカンダリ変換は、
符号化データが復号され、逆量子化されて得られるセカンダリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(77)乃至(83)のいずれかに記載の画像処理装置。
(85) 前記予測画像を生成する予測部をさらに備える
(77)乃至(84)のいずれかに記載の画像処理装置。
(86) 処理対象の変換ブロックに含まれる非ゼロ係数の数の、サブブロック単位の平均値が閾値より少ない場合、画像と前記画像の予測画像との差分である予測残差がプライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換の逆変換である逆セカンダリ変換のスキップに関する第1の情報の符号化データの復号をスキップする
画像処理方法。
(87) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合、前記プライマリ変換の内容を示す第1の情報の符号化をスキップする符号化部
を備える画像処理装置。
(88) 前記符号化部は、前記プライマリ変換、前記セカンダリ変換、および、前記量子化のスキップに関する第2の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化のスキップを示す場合、前記第1の情報の符号化をスキップする
(87)に記載の画像処理装置。
(89) 前記符号化部は、
前記プライマリ変換の許可に関する第3の情報が前記プライマリ変換の許可を示し、
前記第2の情報が前記プライマリ変換、前記セカンダリ変換、および前記量子化の実行を示し、
前記プライマリ変換のスキップに関する第4の情報が前記プライマリ変換の実行を示し、
かつ、処理対象の変換ブロック内の非ゼロ係数の総数が所定の閾値以上である場合、
前記第1の情報を符号化する
(87)または(88)に記載の画像処理装置。
(90) 前記符号化部は、前記第1の情報を、トランケーテッド・ユーナリー2値化を用いて2値化し、符号化する
(87)乃至(89)のいずれかに記載の画像処理装置。
(91) 前記符号化部は、前記第1の情報の値を前記画像の予測モードに応じた値に設定する
(87)乃至(90)のいずれかに記載の画像処理装置。
(92) 前記符号化部は、前記画像の予測がインター予測の場合、前記第1の情報の値を、前記第1の情報の最大値から前記第1の情報の値を減算した値に変更する
(87)乃至(91)のいずれかに記載の画像処理装置。
(93) 前記符号化部は、2値化した前記第1の情報の先頭のbinを、コンテキストを用いるレギュラーモードで算術符号化し、残りのbinを、コンテキストを用いないバイパスモードで算術符号化する
(87)乃至(92)のいずれかに記載の画像処理装置。
(94) 前記プライマリ変換は直交変換であり、
前記セカンダリ変換は、
前記プライマリ変換係数を1次元のベクトルに変換し、
前記1次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記1次元のベクトルのスケーリングを行い、
スケーリングされた前記1次元のベクトルを行列化する
変換処理である
(87)乃至(93)のいずれかに記載の画像処理装置。
(95) 前記プライマリ変換を行うプライマリ変換部と、
前記セカンダリ変換を行うセカンダリ変換部と、
前記セカンダリ変換係数または前記予測残差に対して量子化を行う量子化部と
をさらに備え、
前記符号化部は、
前記量子化部により前記セカンダリ変換係数または前記予測残差が量子化されて得られる量子化変換係数レベルを符号化し、前記量子化変換係数レベルの符号化データを含むビットストリームを生成し、
前記第1の情報の符号化を行う場合、さらに、前記第1の情報の符号化データを前記ビットストリームに含める
(87)乃至(94)のいずれかに記載の画像処理装置。
(96) 画像と前記画像の予測画像との差分である予測残差に対する変換処理であるプライマリ変換、前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換、および、前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数に対する量子化がスキップされる場合、前記プライマリ変換の内容を示す第1の情報の符号化をスキップする
画像処理方法。
(97) 符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、前記量子化変換係数レベルが前記逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、前記プライマリ変換係数を画像と前記画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、前記逆プライマリ変換の内容に関する第1の情報の符号化データの復号をスキップする復号部
を備える画像処理装置。
(98) 前記復号部は、前記逆量子化、前記逆セカンダリ変換、および、前記逆プライマリ変換のスキップに関する第2の情報が前記逆量子化、前記逆セカンダリ変換、および前記逆プライマリ変換のスキップを示す場合、前記第1の情報の符号化データの復号をスキップする
(97)に記載の画像処理装置。
(99) 前記復号部は、前記第1の情報の符号化データの復号をスキップする場合、前記第1の情報が、水平方向の逆プライマリ変換および垂直方向の逆プライマリ変換に所定の直交変換を用いることを示すと推定する
(97)または(98)に記載の画像処理装置。
(100) 前記復号部は、
前記逆プライマリ変換の許可に関する第3の情報が前記逆プライマリ変換の許可を示し、
前記第2の情報が前記逆量子化、前記逆セカンダリ変換、および前記逆プライマリ変換の実行を示し、
前記逆プライマリ変換のスキップに関する第4の情報が前記逆プライマリ変換の実行を示し、
かつ、処理対象の変換ブロック内の非ゼロ係数の総数が所定の閾値以上である場合、
前記第1の情報の符号化データを復号する
(97)乃至(99)のいずれかに記載の画像処理装置。
(101) 前記復号部は、前記第1の情報の符号化データを算術復号し、得られたbinをトランケーテッド・ユーナリー2値化を用いて多値化して、前記第1の情報を得る
(97)乃至(100)のいずれかに記載の画像処理装置。
(102) 前記復号部は、復号して得られた前記第1の情報の値を前記画像の予測モードに応じた値に設定する
(97)乃至(101)のいずれかに記載の画像処理装置。
(103) 前記復号部は、前記画像の予測がインター予測の場合、前記第1の情報の値を、前記第1の情報の最大値から前記第1の情報の値を減算した値に変更する
(97)乃至(102)のいずれかに記載の画像処理装置。
(104) 前記復号部は、前記第1の情報の符号化データの先頭のbinを、コンテキストを用いるレギュラーモードで算術復号し、残りのbinを、コンテキストを用いないバイパスモードで算術復号する
(97)乃至(103)のいずれかに記載の画像処理装置。
(105) 前記復号部は、さらに、前記量子化変換係数レベルの符号化データを復号するように構成され、
前記復号部により前記符号化データが復号されて得られる前記量子化変換係数レベルを前記逆量子化する逆量子化部と、
前記逆量子化部により前記量子化変換係数レベルが前記逆量子化されて得られる前記セカンダリ変換係数に対して前記逆セカンダリ変換を行う逆セカンダリ変換部と、
前記逆セカンダリ変換部により前記セカンダリ変換係数が前記逆セカンダリ変換されて得られる前記プライマリ変換係数に対して前記逆プライマリ変換を行う逆プライマリ変換部と
をさらに備える(97)乃至(104)のいずれかに記載の画像処理装置。
(106) 符号化データが復号されて得られる量子化変換係数レベルに対する逆量子化、前記量子化変換係数レベルが前記逆量子化されて得られるセカンダリ変換係数をプライマリ変換係数に変換する逆セカンダリ変換、および、前記プライマリ変換係数を画像と前記画像の予測画像との差分である予測残差に変換する逆プライマリ変換がスキップされる場合、前記逆プライマリ変換の内容に関する第1の情報の符号化データの復号をスキップする
画像処理方法。
(111) 画像データより得られる情報を符号化し、前記画像データに対する変換処理および量子化をスキップする場合、適応プライマリ変換を実施するか否かを示す適応プライマリ変換情報の符号化をスキップする符号化部
を備える画像処理装置。
(112) 前記符号化部は、前記画像データの輝度成分に対する前記変換処理および前記量子化をスキップする場合、前記画像データの輝度成分に対する前記適応プライマリ変換情報の符号化をスキップする
(111)に記載の画像処理装置。
(113) 前記符号化部は、色成分毎に、前記適応プライマリ変換情報を符号化するか否かを設定する
(111)に記載の画像処理装置。
(114) 前記符号化部は、さらに、前記画像データに対して前記適応プライマリ変換を実施する場合、前記画像データに対する前記変換処理をスキップするか否かを示す変換スキップ情報の符号化をスキップする
(111)乃至(113)のいずれかに記載の画像処理装置。
(115) 前記符号化部は、色成分毎に、前記変換スキップ情報を符号化するか否かを設定する
(114)に記載の画像処理装置。
(116) 前記符号化部は、前記画像データの輝度成分に対する前記適応プライマリ変換を実施する場合、前記画像データの輝度成分に対する前記変換スキップ情報の符号化をスキップする
(114)に記載の画像処理装置。
(117) 画像データより得られる情報を符号化し、前記画像データに対する変換処理および量子化をスキップする場合、適応プライマリ変換を実施するか否かを示す適応プライマリ変換情報の符号化をスキップする
画像処理方法。
(121) 画像データより得られる情報が符号化された符号化データを復号し、前記符号化データ復号されたデータに対する逆変換処理および逆量子化をスキップする場合、逆適応プライマリ変換を実施するか否かを示す逆適応プライマリ変換情報の復号をスキップする復号部
を備える画像処理装置。
(122) 前記復号部は、前記画像データの輝度成分に関するデータに対する前記逆変換処理および前記逆量子化をスキップする場合、前記画像データの輝度成分に関するデータに対する前記逆適応プライマリ変換情報の復号をスキップする
(121)に記載の画像処理装置。
(123) 前記復号部は、色成分毎に、前記逆適応プライマリ変換情報を復号するか否かを設定する
(121)に記載の画像処理装置。
(124) 前記復号部は、さらに、前記データに対して前記逆適応プライマリ変換を実施する場合、前記データに対する前記逆変換処理をスキップするか否かを示す逆変換スキップ情報の復号をスキップする
(121)乃至(123)のいずれかに記載の画像処理装置。
(125) 前記復号部は、色成分毎に、前記逆変換スキップ情報を復号するか否かを設定する
(124)に記載の画像処理装置。
(126) 前記復号部は、前記画像データの輝度成分に関するデータに対する前記逆適応プライマリ変換を実施する場合、前記画像データの輝度成分に関するデータに対する前記逆変換スキップ情報の復号をスキップする
(124)に記載の画像処理装置。
(127) 画像データより得られる情報が符号化された符号化データを復号し、前記符号化データ復号されたデータに対する逆変換処理および逆量子化をスキップする場合、逆適応プライマリ変換を実施するか否かを示す逆適応プライマリ変換情報の復号をスキップする
画像処理方法。
(131) 画像データより得られる情報を符号化し、前記画像データに対する変換処理および量子化をスキップする場合、前記画像データに対する前記変換処理をスキップするか否かを示す変換スキップ情報の符号化をスキップする符号化部
を備える画像処理装置。
(132) 前記符号化部は、色成分毎に、前記変換スキップ情報を符号化するか否かを設定する
(131)に記載の画像処理装置。
(133) 前記符号化部は、さらに、適応プライマリ変換を実施するか否かを示す適応プライマリ変換情報の符号化をスキップする
(131)または(132)のいずれかに記載の画像処理装置。
(134) 前記符号化部は、前記画像データの輝度成分に対する前記適応プライマリ変換情報の符号化をスキップする
(133)に記載の画像処理装置。
(135) 前記符号化部は、色成分毎に、前記適応プライマリ変換情報を符号化するか否かを設定する
(133)に記載の画像処理装置。
(136) 画像データより得られる情報を符号化し、前記画像データに対する変換処理および量子化をスキップする場合、前記画像データに対する前記変換処理をスキップするか否かを示す変換スキップ情報の符号化をスキップする
画像処理方法。
(141) 画像データより得られる情報が符号化された符号化データを復号し、前記符号化データ復号されたデータに対する逆変換処理および逆量子化をスキップする場合、前記符号化データ復号されたデータに対する逆変換処理をスキップするか否かを示す逆変換スキップ情報の復号をスキップする復号部
を備える画像処理装置。
(142) 前記復号部は、色成分毎に、前記逆変換スキップ情報を復号するか否かを設定する
(141)に記載の画像処理装置。
(143) 前記復号部は、さらに、逆適応プライマリ変換を実施するか否かを示す逆適応プライマリ変換情報の復号をスキップする
(141)または(142)のいずれかに記載の画像処理装置。
(144) 前記復号部は、前記画像データの輝度成分に関するデータに対する前記逆適応プライマリ変換情報の復号をスキップする
(143)に記載の画像処理装置。
(145) 前記復号部は、色成分毎に、前記逆適応プライマリ変換情報を復号するか否かを設定する
(143)に記載の画像処理装置。
(146) 画像データより得られる情報が符号化された符号化データを復号し、前記符号化データ復号されたデータに対する逆変換処理および逆量子化をスキップする場合、前記符号化データ復号されたデータに対する逆変換処理をスキップするか否かを示す逆変換スキップ情報の復号をスキップする
画像処理方法。