JP2021141348A - 画像処理装置および方法 - Google Patents

画像処理装置および方法 Download PDF

Info

Publication number
JP2021141348A
JP2021141348A JP2018106463A JP2018106463A JP2021141348A JP 2021141348 A JP2021141348 A JP 2021141348A JP 2018106463 A JP2018106463 A JP 2018106463A JP 2018106463 A JP2018106463 A JP 2018106463A JP 2021141348 A JP2021141348 A JP 2021141348A
Authority
JP
Japan
Prior art keywords
matrix
unit
transformation
conversion
inverse
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018106463A
Other languages
English (en)
Inventor
健史 筑波
Kenji Tsukuba
健史 筑波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Group Corp
Original Assignee
Sony Group Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Group Corp filed Critical Sony Group Corp
Priority to JP2018106463A priority Critical patent/JP2021141348A/ja
Priority to PCT/JP2019/019643 priority patent/WO2019230444A1/ja
Publication of JP2021141348A publication Critical patent/JP2021141348A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】適応直交変換のコストの増大を抑制することができるようにする。【解決手段】ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成し、ベース変換行列とそのベース変換行列に対応するスパース行列とを用いて、その生成された係数データに対して、そのベース変換行列と異なる変換タイプに対応する逆直交変換を適用する。本開示は、例えば、画像処理装置、画像符号化装置、または画像復号装置等に適用することができる。【選択図】図1

Description

本開示は、画像処理装置および方法に関し、特に、適応直交変換のコストの増大を抑制することができるようにした画像処理装置および方法に関する。
従来、輝度について、TU(Transform Unit)単位毎の、水平方向のプライマリ変換PThor(プライマリ水平変換とも称する)および垂直方向のプライマリ変換PTver(プライマリ垂直変換とも称する)毎に、適応的に複数の異なる直交変換から、プライマリ変換を選択する適応プライマリ変換(AMT: Adaptive Multiple Core Transforms)が開示されている(例えば、非特許文献1参照)。
この非特許文献1で提案されているAMTの変換(DCT5/DCT8/DST1/DST7)を、DCT2とその派生変換(フリップ、転置、符号反転でえられる)DCT3/DST2/DST3の変換行列をそれぞれベース変換行列として、前処理・後処理でスパース行列ADJ-X(X=1,2,3,4)と行列演算することで、近似することが提案されている(例えば、非特許文献2参照)。
Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 4", JVET-G1001_v1, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 7th Meeting: Torino, IT, 13-21 July 2017 Amir Said, Hilmi Egilmez, Vadim Seregin, Marta Karczewicz, "Complexity Reduction for Adaptive Multiple Transforms (AMTs) using Adjustment Stages", JVET-J0066, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018
しかしながら、非特許文献2に記載の方法の場合、DCT2/DCT3/DST2/DST3に対応する変換/逆変換のモジュールを用意する必要があり、回路規模が増大するおそれがあった。また、フリップ/転置/符号反転の処理は遅延が増えるおそれがあった。これらにより、適応直交変換のコストが増大するおそれがあった。
本開示は、このような状況に鑑みてなされたものであり、適応直交変換のコストの増大を抑制することができるようにするものである。
本技術の一側面の画像処理装置は、ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成する復号部と、ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、前記復号部により生成された前記係数データに対して、前記ベース変換行列と異なる変換タイプに対応する逆直交変換を適用する逆直交変換部とを備える画像処理装置である。
本技術の一側面の画像処理方法は、ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成し、ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、生成された前記係数データに対して、前記ベース変換行列と異なる変換タイプに対応する逆直交変換を適用する画像処理方法である。
本技術の他の側面の画像処理装置は、ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、画像の予測残差に対して、前記ベース変換行列と異なる変換タイプに対応する直交変換を適用して、係数データを生成する直交変換部と、前記直交変換部により生成された前記係数データを符号化して、ビットストリームを生成する符号化部とを備える画像処理装置である。
本技術の他の側面の画像処理方法は、ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、画像の予測残差に対して、前記ベース変換行列と異なる変換タイプに対応する直交変換を適用して、係数データを生成し、生成された前記係数データを符号化して、ビットストリームを生成する画像処理方法である。
本技術の一側面の画像処理装置および方法においては、ビットストリームが復号されて、画像の予測残差が直交変換された係数データが生成され、ベース変換行列とそのベース変換行列に対応するスパース行列とが用いられて、その生成された係数データに対して、そのベース変換行列と異なる変換タイプに対応する逆直交変換が適用される。
本技術の他の側面の画像処理装置および方法においては、ベース変換行列とそのベース変換行列に対応するスパース行列とが用いられて、画像の予測残差に対して、そのベース変換行列と異なる変換タイプに対応する直交変換が適用されて、係数データが生成され、その生成された係数データが符号化されて、ビットストリームが生成される。
本開示によれば、画像を処理することができる。特に、適応直交変換のコストの増大を抑制することができる。なお、上述の効果は必ずしも限定的なものではなく、上述の効果と共に、または上述の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
本技術を適用した適応直交変換の方法の主な例を示す図である。 周波数領域のパワーシフトについて説明する図である。 空間領域のパワーシフトについて説明する図である。 変換タイプ別の適用例を説明する図である。 スパース行列の例を示す図である。 スパース行列の例を示す図である。 画像処理装置の主な構成例を示すブロック図である。 ブロックサイズが大きい場合の変換タイプ別の設定例を説明する図である。 ブロックサイズが小さい場合の変換タイプ別の設定例を説明する図である。 ブロックサイズが大きい場合の変換タイプ別の他の設定例を説明する図である。 ブロックサイズが小さい場合の変換タイプ別の他の設定例を説明する図である。 画像処理の流れの例を説明するフローチャートである。 設定処理の流れの例を説明するフローチャートである。 変換処理の流れの例を説明するフローチャートである。 画像処理装置の主な構成例を示すブロック図である。 画像処理の流れの例を説明するフローチャートである。 逆変換処理の流れの例を説明するフローチャートである。 画像処理装置の主な構成例を示すブロック図である。 変換処理の流れの例を説明するフローチャートである。 画像処理装置の主な構成例を示すブロック図である。 逆変換処理の流れの例を説明するフローチャートである。 画像符号化装置の主な構成例を示すブロック図である。 直交変換部の主な構成例を示すブロック図である。 プライマリ水平変換部の主な構成例を示すブロック図である。 プライマリ垂直変換部の主な構成例を示すブロック図である。 画像符号化処理の流れの例を説明するフローチャートである。 直交変換処理の流れの例を説明するフローチャートである。 プライマリ水平変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 プライマリ垂直変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 画像復号装置の主な構成例を示すブロック図である。 逆直交変換部の主な構成例を示すブロック図である。 逆プライマリ垂直変換部の主な構成例を示すブロック図である。 逆プライマリ水平変換部の主な構成例を示すブロック図である。 画像復号処理の流れの例を説明するフローチャートである。 逆直交変換処理の流れの例を説明するフローチャートである。 逆プライマリ垂直変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 逆プライマリ水平変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 プライマリ水平変換部の主な構成例を示すブロック図である。 プライマリ垂直変換部の主な構成例を示すブロック図である。 プライマリ水平変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 プライマリ垂直変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 逆プライマリ垂直変換部の主な構成例を示すブロック図である。 逆プライマリ水平変換部の主な構成例を示すブロック図である。 逆プライマリ垂直変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 逆プライマリ水平変換処理の流れの例を説明するフローチャートである。 パワーシフト処理の流れの例を説明するフローチャートである。 コンピュータの主な構成例を示すブロック図である。
以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.適応直交変換
2.第1の実施の形態(画像処理装置(方法#1))
3.第2の実施の形態(画像処理装置(方法#1))
4.第3の実施の形態(画像処理装置(方法#2))
5.第4の実施の形態(画像処理装置(方法#2))
6.第5の実施の形態(画像符号化装置(方法#1))
7.第6の実施の形態(画像復号装置(方法#1))
8.第7の実施の形態(画像符号化装置(方法#2))
9.第8の実施の形態(画像復号装置(方法#2))
10.付記
<1.適応直交変換>
<技術内容・技術用語をサポートする文献等>
本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
非特許文献1:(上述)
非特許文献2:(上述)
非特許文献3:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union), "Advanced video coding for generic audiovisual services", H.264, 04/2017
非特許文献4:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union), "High efficiency video coding", H.265, 12/2016
非特許文献5: B. Bross, "Versatile Video Coding (Draft 1) ", JVET-J1001, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018
非特許文献6: Jiane Chen, Elena Alshina, "Algorithm description for Versatile Video Coding and Test Model 1 (VTM 1)" , JVET-J1002, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、非特許文献4に記載されているQuad-Tree Block Structure、非特許文献1に記載されているQTBT(Quad Tree Plus Binary Tree) Block Structure、非特許文献5乃至6に記載されているMulti-type (binary/ternay/quaternary) tree Block Strcture(BT/TT/QT coding block structureとも呼ぶ)が実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、特許請求の範囲のサポート要件を満たすものとする。また、例えば、パース(Parsing)、シンタックス(Syntax)、セマンティクス(Semantics)等の技術用語についても同様に、実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、特許請求の範囲のサポート要件を満たすものとする。
また、本明細書において、画像(ピクチャ)の部分領域や処理単位として説明に用いる「ブロック」(処理部を示すブロックではない)は、特に言及しない限り、ピクチャ内の任意の部分領域を示し、その大きさ、形状、および特性等は限定されない。例えば、「ブロック」には、上述の非特許文献1、非特許文献3、非特許文献4、非特許文献5、および非特許文献6に記載のTB(Transform Block)、TU(Transform Unit)、PB(Prediction Block)、PU(Prediction Unit)、SCU(Smallest Coding Unit)、CU(Coding Unit)、LCU(Largest Coding Unit)、CTB(Coding Tree Block)、CTU(Coding Tree Unit)、変換ブロック、サブブロック、マクロブロック、タイル、またはスライス等、任意の部分領域(処理単位)が含まれるものとする。また、このようなブロックのサイズを指定するに当たって、直接的にブロックサイズを指定するだけでなく、間接的にブロックサイズを指定するようにしてもよい。例えばサイズを識別する識別情報を用いてブロックサイズを指定するようにしてもよい。また、例えば、基準となるブロック(例えばLCUやSCU等)のサイズとの比または差分によってブロックサイズを指定するようにしてもよい。例えば、シンタックス要素等としてブロックサイズを指定する情報を伝送する場合に、その情報として、上述のような間接的にサイズを指定する情報を用いるようにしてもよい。このようにすることにより、その情報の情報量を低減させることができ、符号化効率を向上させることができる場合もある。また、このブロックサイズの指定には、ブロックサイズの範囲の指定(例えば、許容されるブロックサイズの範囲の指定等)も含む。
また、本明細書において、符号化とは、画像をビットストリームに変換する全体の処理だけではなく、一部の処理も含む。例えば、予測処理、直交変換、量子化、算術符号化等を包括した処理を含むだけではなく、量子化と算術符号化とを総称した処理、予測処理と量子化と算術符号化とを包括した処理、などを含む。同様に、復号とは、ビットストリームを画像に変換する全体の処理だけではなく、一部の処理も含む。例えば、逆算術復号、逆量子化、逆直交変換、予測処理等を包括した処理を含むだけではなく、逆算術復号と逆量子化とを包括した処理、逆算術復号と逆量子化と予測処理とを包括した処理、などを含む。
<適応直交変換>
非特許文献1に記載のテストモデル(JEM4(Joint Exploration Test Model 4))においては、輝度の変換ブロックについて、水平方向のプライマリ変換PThor(プライマリ水平変換とも称する)、および垂直方向のプライマリ変換PTver(プライマリ垂直変換とも称する)毎に、適応的に複数の異なる1次元直交変換から、プライマリ変換を選択する適応プライマリ変換(AMT(Adaptive Multiple core Transforms))が開示されている。なお、AMTは、EMT(Explicit Multiple core Transforms)とも称する。
非特許文献1では、プライマリ変換の候補として、DCT-II(DCT2), DST-VII(DST7), DCT-VIII(DCT8), DST-I(DST1), DCT-V(DCT5)の5つの1次元直交変換が提案されている。なお、それらに加えて、さらに、DST-IV(DST4)およびIDT(Identity Transform:1次元変換スキップ)の2つの1次元直交変換が追加され、計7つの1次元直交変換をプライマリ変換の候補とすることも提案されている。
また、非特許文献2においては、この非特許文献1において提案されている適応直交変換の変換(DCT5/DCT8/DST1/DST7)を、DCT2とその派生変換(フリップ、転置、符号反転でえられる)DCT3/DST2/DST3の変換行列をそれぞれベース変換行列として、前処理・後処理でスパース行列ADJ-X(X=1,2,3,4)と行列演算することで、近似することが開示されている。
しかしながら、非特許文献2に記載の方法の場合、DCT2/DCT3/DST2/DST3に対応する変換/逆変換のモジュールを用意する必要があり、回路規模が増大するおそれがあった。また、派生行列をフリップ/転置/符号反転の処理によって得る場合は遅延が増えるおそれがあった。これらにより、適応直交変換のコストが増大するおそれがあった。
<変換行列の近似>
そこで、変換タイプxのNxNの変換行列TN,xをNxNのベース変換行列TN,base(例えば変換タイプDCT2のNxNのベース変換行列TN,DCT2)とNxNのスパース行列IntAN,xとによって近似する(図1)。
その際、周波数領域のパワーシフトを行うようにする(方法#1)。例えば、図2のグラフに示されるように、周波数領域において、入力信号xを直交変換してえられる周波数成分のパワー(点線)を、補正後の周波数成分のパワー(実線)に変換する。その際、係数データのL2ノルムが補正前と後とで変化しないように、かつ、より低域に係数が集中するように、パワーの交換を行う。このようにすることにより、エナジーコンパクションを向上させ、符号化効率を向上させることができる。
より具体的には、例えば順方向の1次元変換の場合、入力信号Xをベース変換行列TN,DCT2を用いて1次元変換し、1次元変換後の信号をスパース行列IntAN,xを用いてパワーシフトする。また、例えば逆方向の1次元変換の場合、入力信号Xをスパース行列IntAN,xを用いてパワーシフトし、パワーシフト後の信号をベース変換行列TN,DCT2を用いて逆1次元変換する。
また、空間領域のパワーシフトを行うようにしてもよい(方法#2)。例えば、DST7は、残差信号xiのパワーが図3のグラフの右側に集中している信号をより効率的に圧縮する特性がある。そこで、図3のグラフに示されるように、空間領域において、残差信号xiのパワー(点線)を、補正後の残差信号のパワー(実線)に変換する。その際、残差信号のL2ノルムが補正前と後とで変化しないように、かつ、より右側に係数が集中するように、パワーの交換を行う。すなわち、DST7で効率よく圧縮可能な残差信号へ補正することで、DST7で直交変換したときに、より低域の方へ信号が集まるようにすることができる。このようにすることにより、エナジーコンパクションを向上させ、符号化効率を向上させることができる。
より具体的には、例えば順方向の1次元変換の場合、入力信号Xをスパース行列IntAN,xを用いてパワーシフトし、パワーシフト後の信号をベース変換行列TN,DCT2を用いて1次元変換する。また、例えば逆方向の1次元変換の場合、入力信号Xをベース変換行列TN,DCT2を用いて逆1次元変換し、逆1次元変換後の信号をスパース行列IntAN,xを用いてパワーシフトする。
以上のようにすることにより、対象変換タイプと同等のエナジーコンパクションを実現することができる。また、符号化効率を維持しつつ、適応直交変換の実装コストを低減させることができる。また、演算量の削減、変換行列の保持に要するメモリサイズを削減することができる。また、ベース変換行列TN,DCT2とある行列Aとの行列の積の演算を、バタフライ演算等の高速アルゴリズムにより実現すること可能となる。また、スパース行列IntAN,Xとある行列Bとの行列の積の演算において、非ゼロ要素に限定して演算を行うことで、演算量削減が可能となる。
例えば、図4の表に示されるように、変換タイプDST7の変換行列TN,DST7は、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DST7とを用いて近似する。このように、変換タイプDST7のサイズNxNの変換行列(N-pt DST7)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DST7)の実装コストを削減することができる。
また、例えば、図4の表に示されるように、変換タイプDCT8の変換行列TN,DCT8は、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DCT8とを用いて近似する。このように、変換タイプDCT8のサイズNxNの変換行列(N-pt DCT8)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DCT8)の実装コストを削減することができる。
また、例えば、図4の表に示されるように、変換タイプDST1の変換行列TN,DST1は、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DST1とを用いて近似する。このように、変換タイプDST1のサイズNxNの変換行列(N-pt DST1)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DST1)の実装コストを削減することができる。
また、例えば、図4の表に示されるように、変換タイプDCT5の変換行列TN,DCT5は、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DCT5とを用いて近似する。このように、変換タイプDCT5のサイズNxNの変換行列(N-pt DCT5)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DCT5)の実装コストを削減することができる。
また、例えば、図4の表に示されるように、変換タイプDCT4の変換行列TN,DCT4は、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DCT4とを用いて近似する。このように、変換タイプDCT4のサイズNxNの変換行列(N-pt DCT4)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DCT4)の実装コストを削減することができる。
また、例えば、図4の表に示されるように、変換タイプDST4の変換行列TN,DST4は、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DST4とを用いて近似する。このように、変換タイプDST4のサイズNxNの変換行列(N-pt DST4)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DST4)の実装コストを削減することができる。
近似することができる変換タイプは任意であり、上述の例に限定されない。つまり、図4の表に示されるように、xをCまはたSとし、yを任意の値とすると、変換タイプDxTyの変換行列TN,DxTyは、変換タイプDCT2のベース変換行列TN,DCT2と、スパース行列IntAN,DxTyとを用いて近似することができる。このように、変換タイプDxTyのサイズNxNの変換行列(N-pt DxTy)を、変換タイプDCT2のサイズNxNの変換行列(N-pt DCT2)とスパース行列との組み合わせにより表現する(近似する)ことにより、符号効率を維持しつつ、変換行列(N-pt DxTy)の実装コストを削減することができる。
以上のように、係数変換(例えば直交変換)に用いられる全ての変換タイプの変換行列を、変換タイプDCT2のベース変換行列とスパース行列を用いて近似する。なお、このベース変換行列の変換タイプは任意でありDCT2に限定されない。つまり、係数変換(例えば直交変換)に用いられる全ての変換タイプの変換行列を、1つの変換タイプのベース変換行列とスパース行列を用いて近似するようにする。したがって、実装コストの増大を抑制することができる。
<行列演算(方法#1)>
次に、上述の方法#1(周波数領域におけるパワーシフトを伴う方法)により、DCT2の変換行列とスパース行列とを用いてその他の変換タイプの変換行列を近似するための行列演算の例について説明する。近似対象である変換タイプtgtのサイズNxNの変換行列(対象変換行列とも称する)をTN,tgtとし、変換タイプDCT2のサイズNxNの変換行列をTN,DCT2とする。このとき、対象変換行列TN,tgtは、あるサイズNxNのスパース行列ANと、変換タイプDCT2のサイズNxNの変換行列TN,DCT2によって、以下の式(1)のように表すことができる。
Figure 2021141348
この式(1)に、変換行列TN,DCT2の逆変換(TN,DCT2)-1(=(TN,DCT2)t)を両辺に(右側から)かけることで、以下の式(2)のように、スパース行列AN,tgtを求めることができる。
Figure 2021141348
すなわち、スパース行列ANは、対象変換行列TN,tgtと変換行列TN,DCT2の転置行列との行列の積によって表現される。換言するに、スパース行列ANは、対象変換行列TN,tgtの右側から変換行列TN,DCT2の転置行列を作用させることで得られる。実装上は、スパース行列ANを、整数精度に近似するため、上述の式(2)は、以下の式(3)のように変形される。式(3)において、スパース行列IntANは、整数精度のスパース行列ANを示し、例えば、スパース行列ANに所定のスケーリング係数S(=2s)を乗算し、その乗算結果に対してround関数を適用して小数点以下を四捨五入することで得ることができる。
Figure 2021141348
実数精度のスパース行列AN,tgtは、以下の式(4)に示されるように、整数精度のスパース行列IntAN,tgtとシフト演算によって近似される。
Figure 2021141348
従って、式(1)に、式(4)を代入すると、以下の式(5)のように、対象変換行列TN,tgtを、整数精度のスパース行列IntAN,tgt、変換タイプDCT2の変換行列TN,DCT2、およびシフト演算により近似することができる。
Figure 2021141348
<スパース行列>
例えば、S = 2s, where s=2, N=8として、上述の手法によって求めた8-pt DCT2の変換行列から、8-pt DCT5/DCT8/DST1/DST7の変換行列を近似するs-bit整数精度のスパース行列IntAN,tgtの例を図5に示す。図5のAに8-pt DST7の変換行列を近似するためのスパース行列IntAN,DST7の一例を示す。図5のBに8-pt DCT8の変換行列を近似するためのスパース行列IntAN,DCT8の一例を示す。図5のCに8-pt DST1の変換行列を近似するためのスパース行列IntAN,DST1の一例を示す。図5のDに8-pt DCT5の変換行列を近似するためのスパース行列IntAN,DCT5の一例を示す。
図5に示されるように、スパース行列IntAN,tgtは、複数の(多数の)ゼロ要素を含み、非ゼロ要素は、主に対角成分とその周辺に位置するという特徴を有する。従って、スパース行列IntAN,tgtと行列Xとの行列の積に関する演算は、スパース行列IntAN,tgtの非ゼロ要素に関するものを行えばよい(ゼロ要素に関する演算は省略することができる)ので、その処理量(演算量)を低減させることができる。つまり、この演算に関するCPUやメモリ等の負荷の増大を抑制することができる。また、DCT2はバタフライ演算等の高速アルゴリズムが存在する。したがって、DCT5/DCT8/DST1/DST7の変換行列を、上述のようにスパース行列とDCT2の変換行列に分解することで、より高速に行列演算を行うことが可能となる。
同様に、8-pt DCT4/DST4を近似するスパース行列の一例を図6に示す。図6のAに8-pt DCT4の変換行列を近似するためのスパース行列IntAN,DCT4の一例を示す。図6のBに8-pt DST4の変換行列を近似するためのスパース行列IntAN,DST4の一例を示す。なお、DCT4/DST4を近似するためのスパース行列は、疎ではあるが、図5の各例に比べてゼロ係数の要素が少ないため、演算量削減効果は図5の各例の方が大きい。
なお、式(2)で得られたスパース行列AN,tgtに対して、各行ベクトル毎に、各要素の値(非ゼロ)の絶対値の大きい順に上位n個(0<n<N)の要素のみを残し、それ以外の要素の値を0へ置き換える操作(疑似コード (A1))をしてもよい。この操作を加えることで、各行ベクトルの非ゼロ要素の数をn個に明示的に制限したスパース行列A* N,tgtを得ることができる。得られた各行ベクトルの非ゼロ要素の数がn個に制限されたスパース行列A* N,tgtを式(3)に代入して、整数近似されたスパース行列を取得してもよい。なお、疑似コード(A1)に限定されず、OMP(Orthogornal Matching Persuit)によりスパース行列を導出してもよい。こうすることで、各行ベクトルの非ゼロ要素の数をn個へ制限した、より精度の高いスパース行列を導出することが可能となる。
/** 疑似コード(A1) 開始 **/
入力:
srcMat: 入力行列 (NxN)
K: 非ゼロ要素の数
出力:
dstMat: 出力行列 (NxN)
処理:
// 入力行列(NxN)と同じサイズのすべての要素がゼロの出力行列(NxN)を確保
dstMat = np.zeros( [N, N] )

// 各行ベクトル毎の処理
for colIdx in range(0, N, 1):
// 第colIdx行の行ベクトルをtgt_vecへ設定する
tgt_vec = srcMat[colIdx,:]

// 行ベクトルtgt_vecから要素の絶対値の大きい順で上位K個の要素
//のインデックスを取得する
indices = np.argpartition(-np.abs(tgt_vec)), K)[:K]

//絶対値の大きい順でK番目の非ゼロ要素の絶対値を閾値threshへ設定する
thresh = np.min (np.abs(tgt_vec)[indices])

//非ゼロ要素の絶対値が閾値thresh未満の要素をゼロにする
tgt_vec[ np.abs(tgt_vec) < thresh ] = 0

// 出力行列の第colIdx行の行ベクトルへ非ゼロ要素の数を制限した
// 行ベクトル tgt_vecを設定する
dstMat[colIdx,:] = tgt_vec
/** 疑似コード 終わり **/
例えば、S=2s, where s=6, N=8として、疑似コード(A1)を、上述の手法の式(2)乃至式(3)の間へ追加して、非ゼロ要素の数n=3へ制限された、8-pt DCT2の変換行列から、8-pt DCT5/DCT8/DST1/DST7の変換行列を近似するs-bit整数精度のスパース行列IntAN,tgtを導出した場合、図5と比較して、各行ベクトルの非ゼロ要素の数をn個へ制限した、より精度の高いスパース行列を導出することが可能となる。
同様に、同手法による8-pt DCT4/DST4を近似するスパース行列を導出した場合、図6と比較して、各行ベクトルの非ゼロ要素の数をn個へ制限した、より精度の高いスパース行列を導出することが可能となる。
なお、N-pt DCT4の変換行列は、2N-pt DCT2をODD/EVEN分解して、ODD行列(低次)を取り出すことでも得られる。また、N-pt DST4の変換行列は、そのように得られたN-pt DCT4を適宜、フリップ、符号反転をすることで得ることもできる。
<行列演算(方法#2)>
次に、上述の方法#2(空間領域におけるパワーシフトを伴う方法)により、DCT2の変換行列とスパース行列とを用いてその他の変換タイプの変換行列を近似するための行列演算の例について説明する。
対象変換行列TN,tgtは、上述の式(1)の例以外にも、例えば、以下の式(6)のように、DCT2の変換行列TN,DCT2の右側からスパース行列ANを作用させることによっても表すことができる。
Figure 2021141348
従って、この式(6)に、変換行列TN,DCT2の逆変換(TN,DCT2)-1(=(TN,DCT2)t)を両辺に(左側から)かけることで、以下の式(7)のように、スパース行列AN,tgtを求めることができる。
Figure 2021141348
すなわち、スパース行列ANは、変換行列TN,DCT2の転置行列と対象変換行列TN,tgtとの行列の積によって表現される。換言するに、スパース行列ANは、対象変換行列TN,tgtの左側から変換行列TN,DCT2の転置行列を作用させることで得られる。スパース行列ANを、整数精度に近似するため、上述の式(7)は、以下の式(8)のように変形される。式(8)において、スパース行列IntANは、整数精度のスパース行列ANを示し、例えば、そのスパース行列ANに所定のスケーリング係数S(= 2s)を乗算し、その乗算結果に対してround関数を適用して小数点以下を四捨五入することにより得られる。なお、式(7)で得られたスパース行スパース行列AN,tgtに対して、列ベクトル毎に、各要素の値(非ゼロ)の絶対値の大きい順に上位n個(0<n<N)の要素のみを残し、それ以外の要素の値を0へ置き換える操作(疑似コード(A1)の操作を、行ベクトルを対象とした部分を、列ベクトルへ修正すればよい)を行ってから、式(8)により整数精度のスパース行列を導出してもよい。こうすることで、各列ベクトルの非ゼロ要素の数をn個へ制限した、より精度の高いスパース行列を導出することが可能となる。
Figure 2021141348
実数精度のスパース行列AN,tgtは、上述の式(4)のように整数精度のスパース行列IntAN,tgtとシフト演算によって近似される。従って、上述の式(6)にその式(4)を代入すると、以下の式(9)のように、対象変換行列TN,tgtを、整数精度のスパース行列IntAN,tgt、DCT2の変換行列TN,DCT2、およびシフト演算により近似することができる。
Figure 2021141348
<2.第1の実施の形態>
<画像処理装置>
次に、以上のような変換行列の近似(方法#1)を適用した順方向の係数変換を実現するための構成や処理について説明する。図7は、本技術を適用した画像処理装置の主な構成の一例を示すブロック図である。図7に示される画像処理装置100は、画像データを係数データに変換する係数変換を行う装置である。
図7に示されるように、画像処理装置100は、変換行列設定部101および変換部102を有する。変換行列設定部101は、変換部102による係数変換に用いられる変換行列の設定に関する処理を行う。例えば、変換行列設定部101は、変換タイプやブロックサイズに基づいて、係数変換に用いられるベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列に対応するシフト量SIntAxを設定する。変換行列設定部101は、設定したそれらのパラメータを変換部102に供給する。
変換部102は、画像データを順方向に1次元変換し、係数データを生成する。変換部102は、変換行列設定部101により設定された(変換行列設定部101から供給された)ベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列に対応するシフト量SIntAxを用いてその1次元変換を行う。
変換行列設定部101は、サイズ判定部111、ベース変換行列設定部112、フラグ設定部113、スパース行列設定部114、ベース変換行列LUT(Look Up Table)121、およびスパース行列LUT122を有する。
サイズ判定部111は、外部より供給されるブロックサイズを示す情報を取得し、その情報に基づいて、1次元変換の処理対象ブロックのブロックサイズを閾値判定する。つまり、サイズ判定部111は、処理対象ブロックが予め定められた所定の閾値より大きいか否かを判定する。サイズ判定部111は、その判定結果をベース変換行列設定部112乃至スパース行列設定部114に供給する。
ベース変換行列設定部112は、サイズ判定部111から供給される処理対象ブロックのブロックサイズの判定結果と、外部より供給される1次元変換の変換タイプの識別子TrTypeIdxに基づいて、1次元変換に用いるベース変換行列TX(1次元変換の変換タイプの変換行列の近似に用いるベース変換行列TX)を設定し、そのベース変換行列TXをベース変換行列LUT121より取得する。ベース変換行列設定部112は、その取得したベース変換行列TXを変換部102(係数変換部131)に供給する。
フラグ設定部113は、サイズ判定部111から供給される処理対象ブロックのブロックサイズの判定結果と、外部より供給される1次元変換の変換タイプの識別子TrTypeIdxに基づいて、スパース行列有無フラグsparsePresentFlagを設定する。スパース行列有無フラグsparsePresentFlagは、1次元変換の変換タイプの変換行列の近似にスパース行列を用いるか否か(適用可能なスパース行列が存在するか否か)を示すフラグ情報である。フラグ設定部113は、設定したスパース行列有無フラグsparsePresentFlagを変換部102(スイッチ132)に供給する。
スパース行列設定部114は、サイズ判定部111から供給される処理対象ブロックのブロックサイズの判定結果と、外部より供給される1次元変換の変換タイプの識別子TrTypeIdxに基づいて、1次元変換に用いるスパース行列IntAX(1次元変換の変換タイプの変換行列の近似に用いるスパース行列IntAX)を設定し、そのスパース行列IntAXをスパース行列LUT122より取得する。また、スパース行列設定部114は、その設定したスパース行列IntAXに対応するシフト量SIntAxを設定する。スパース行列設定部114は、その取得したベース変換行列TXと、設定したシフト量SIntAxとを変換部102(パワーシフト部133)に供給する。
ベース変換行列設定部112乃至スパース行列設定部114は、例えば図8および図9に示されるようなテーブル情報DRV_TRANSMAT_TBLを予め有しており、そのテーブル情報DRV_TRANSMAT_TBLに基づいて上述のパラメータを設定する。
図8および図9は、変換タイプDCT2,DST7,DCT8,DST1,DCT5の変換行列を近似する場合のテーブル情報DRV_TRANSMAT_TBLの例を示している。図8は、ブロックサイズが閾値以上の場合に参照されるテーブル情報DRV_TRANSMAT_TBLの例を示し、図9は、ブロックサイズが閾値より小さい場合に参照されるテーブル情報DRV_TRANSMAT_TBLの例を示している。
例えば、サイズ判定部111により処理対象ブロックのサイズが閾値以上であると判定された場合、ベース変換行列設定部112は、図8のテーブル情報DRV_TRANSMAT_TBLにおいて変換タイプの識別子TrTypeIdxに対応するベース変換行列TXを設定する。また、フラグ設定部113は、スパース行列有無フラグsparsePresentFlagを、図8のテーブル情報DRV_TRANSMAT_TBLにおいて変換タイプの識別子TrTypeIdxに対応する値に設定する。さらに、スパース行列設定部114は、図8のテーブル情報DRV_TRANSMAT_TBLにおいて変換タイプの識別子TrTypeIdxに対応するスパース行列IntAXを設定し、その設定したスパース行列IntAXに対応するシフト量SIntAxを設定する。
例えば、TrTypeIdxが「1」の場合、ベース変換行列設定部112は、ベース変換行列TN,DCT2を設定し、フラグ設定部113は、スパース行列有無フラグsparsePresentFlagをTrueに設定し、スパース行列設定部114は、スパース行列IntAN,DST7を設定する。他の変換タイプの場合も同様である。
なお、DCT8は、DST7のフリップしたFlipDST7等に置き換えてもよい。
これに対して例えば、サイズ判定部111により処理対象ブロックのサイズが閾値未満であると判定された場合、ベース変換行列設定部112は、同様に、図9のテーブル情報DRV_TRANSMAT_TBLに基づいてベース変換行列TXを設定する。また、フラグ設定部113も、同様に、図9のテーブル情報DRV_TRANSMAT_TBLに基づいてスパース行列有無フラグsparsePresentFlagの値を設定する。さらに、スパース行列設定部114も、同様に、図9のテーブル情報DRV_TRANSMAT_TBLに基づいてスパース行列IntAXを設定し、その設定したスパース行列IntAXに対応するシフト量SIntAxを設定する。
例えば、TrTypeIdxが「1」の場合、ベース変換行列設定部112は、ベース変換行列TN,DST7を設定し、フラグ設定部113は、スパース行列有無フラグsparsePresentFlagをFalseに設定し、スパース行列設定部114は、スパース行列を設定しない(N/A)。他の変換タイプの場合も同様である。
なお、DCT8は、DST7をフリップしたFlipDST7等に置き換えてもよい。また、DCT5は、DCT2に置き換えてもよい。さらに、DST1は、DST2に置き換えてもよい。
テーブル情報DRV_TRANSMAT_TBLは任意であり、上述の図8および図9の例に限定されない。図10および図11は、テーブル情報DRV_TRANSMAT_TBLの他の例を示す。図10および図11に示されるテーブル情報DRV_TRANSMAT_TBLは、変換タイプDCT2,DST7,DCT8,DCT4,DST4,DST1の変換行列を近似する場合の例を示している。図10は、ブロックサイズが閾値以上の場合に参照されるテーブル情報DRV_TRANSMAT_TBLの例を示し、図11は、ブロックサイズが閾値より小さい場合に参照されるテーブル情報DRV_TRANSMAT_TBLの例を示している。
例えば、サイズ判定部111により処理対象ブロックのサイズが閾値以上であると判定された場合、ベース変換行列設定部112は、図10のテーブル情報DRV_TRANSMAT_TBLにおいて変換タイプの識別子TrTypeIdxに対応するベース変換行列TXを設定する。また、フラグ設定部113は、スパース行列有無フラグsparsePresentFlagを、図10のテーブル情報DRV_TRANSMAT_TBLにおいて変換タイプの識別子TrTypeIdxに対応する値に設定する。さらに、スパース行列設定部114は、図10のテーブル情報DRV_TRANSMAT_TBLにおいて変換タイプの識別子TrTypeIdxに対応するスパース行列IntAXを設定し、その設定したスパース行列IntAXに対応するシフト量SIntAxを設定する。
例えば、TrTypeIdxが「4」の場合、ベース変換行列設定部112は、ベース変換行列TN,DCT2を設定し、フラグ設定部113は、スパース行列有無フラグsparsePresentFlagをTrueに設定し、スパース行列設定部114は、スパース行列IntAN,DCT4を設定する。他の変換タイプの場合も同様である。
なお、DCT8は、DST7をフリップしたFlipDST7等に置き換えてもよい。また、DST4は、DCT4をフリップしたFlipDCT4等に置き換えてもよい。
これに対して例えば、サイズ判定部111により処理対象ブロックのサイズが閾値未満であると判定された場合、ベース変換行列設定部112は、同様に、図11のテーブル情報DRV_TRANSMAT_TBLに基づいてベース変換行列TXを設定する。また、フラグ設定部113も、同様に、図11のテーブル情報DRV_TRANSMAT_TBLに基づいてスパース行列有無フラグsparsePresentFlagの値を設定する。さらに、スパース行列設定部114も、同様に、図11のテーブル情報DRV_TRANSMAT_TBLに基づいてスパース行列IntAXを設定し、その設定したスパース行列IntAXに対応するシフト量SIntAxを設定する。
例えば、TrTypeIdxが「4」の場合、ベース変換行列設定部112は、ベース変換行列TN,DCT4を設定し、フラグ設定部113は、スパース行列有無フラグsparsePresentFlagをFalseに設定し、スパース行列設定部114は、スパース行列を設定しない(N/A)。他の変換タイプの場合も同様である。
なお、DCT8は、DST7のフリップしたFlipDST7等に置き換えてもよい。また、DST4は、FlipDCT4に置き換えてもよい。さらに、DST1は、DST2に置き換えてもよい。
以上のように、処理対象ブロックのサイズに応じて参照するテーブル情報DRV_TRANSMAT_TBLを使い分けることにより、処理対象ブロックが所定の閾値よりも大きい場合のみ、ベース変換行列とスパース行列とを用いた変換行列の近似を適用するようにすることができる。もちろん、全てのブロックサイズの処理対象ブロックに対して、ベース変換行列とスパース行列とを用いた変換行列の近似を適用するようにしてもよい。その場合、処理対象ブロックのサイズに関わらず、同一のテーブル情報DRV_TRANSMAT_TBL(例えば図8または図10のテーブル情報DRV_TRANSMAT_TBL)が参照されるようにすればよい。
図7に戻り、ベース変換行列LUT121は、ハードディスクまたは半導体メモリ等の任意の記憶媒体を有しており、その記憶媒体に、候補となるベース変換行列TXを記憶する。ベース変換行列LUT121は、要求されたベース変換行列TXを、その要求元のベース変換行列設定部112に供給する。
スパース行列LUT122は、ハードディスクまたは半導体メモリ等の任意の記憶媒体を有しており、その記憶媒体に、候補となるスパース行列IntAXを記憶する。スパース行列LUT122は、要求されたスパース行列IntAXを、その要求元のスパース行列設定部114に供給する。
図7に示されるように、変換部102は、係数変換部131、スイッチ132、パワーシフト部133、および出力部134を有する。
係数変換部131は、変換行列設定部101(ベース変換行列設定部112)から供給されるベース変換行列TXを取得し、そのベース変換行列TXを用いて、入力される空間領域の画像データを順方向に1次元変換し、周波数領域の係数データを生成する。係数変換部131は、生成した係数データをスイッチ132に供給する。
スイッチ132は、変換行列設定部101(フラグ設定部113)から供給されるスパース行列有無フラグsparsePresentFlagを取得し、そのスパース行列有無フラグsparsePresentFlagに基づいて、係数変換部131から供給された係数データの供給先を制御する。例えば、スパース行列有無フラグsparsePresentFlagの値がTrueの場合、スイッチ132は、その係数データをパワーシフト部133に供給する。また、例えば、スパース行列有無フラグsparsePresentFlagの値がFalseの場合、スイッチ132は、その係数データを出力部134に供給する。つまり、スイッチ132は、スパース行列有無フラグsparsePresentFlagの値に応じて、周波数領域におけるパワーシフトを行うか否かを制御する。
パワーシフト部133は、変換行列設定部101(スパース行列設定部114)から供給されるスパース行列IntAXとシフト量SIntAxとを取得し、それらに基づいて、スイッチ132から供給される係数データのパワーシフト(すなわち、周波数領域におけるパワーシフト)を行う。パワーシフト部133は、パワーシフトが行われた係数データを出力部134に供給する。
出力部134は、スイッチ132から供給される係数データ、または、パワーシフト部133から供給されるパワーシフトされた係数データを出力する。
<画像処理の流れ>
図7の画像処理装置100により実行される画像処理の流れの例を、図12のフローチャートを参照して説明する。画像処理が開始されると、変換行列設定部101は、ステップS101において、ベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列IntAXに対応するシフト量SIntAxを設定する。ステップS102において、変換部102は、ステップS101において設定されたベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列IntAXに対応するシフト量SIntAxを用いて、空間領域の画像データを順方向に1次元変換し、周波数領域の係数データを生成する。ステップS102の処理が終了すると画像処理が終了する。
<設定処理の流れ>
次に、図13のフローチャートを参照して、図12のステップS101において実行される設定処理の流れの例を説明する。設定処理が開始されると、サイズ判定部111は、ステップS111において、処理対象ブロックのサイズを示す情報に基づいて、処理対象ブロックのサイズを判定する。
ステップS112において、ベース変換行列設定部112は、処理対象ブロックのブロックサイズを示す情報、および、変換タイプの識別情報TrTypeIdxに基づいて、それらに対応するベース変換行列TXを設定する。
ステップS113において、フラグ設定部113は、処理対象ブロックのブロックサイズを示す情報、および、変換タイプの識別情報TrTypeIdxに基づいて、それらに対応するスパース行列有無フラグsparsePresentFlagの値を設定する。
ステップS114において、スパース行列設定部114は、処理対象ブロックのブロックサイズを示す情報、および、変換タイプの識別情報TrTypeIdxに基づいて、スパース行列IntAXが存在するか否かを判定する。スパース行列IntAXが存在すると判定された場合、処理はステップS115に進む。
ステップS115において、スパース行列設定部114は、処理対象ブロックのブロックサイズを示す情報、および、変換タイプの識別情報TrTypeIdxに基づいて、それらに対応するスパース行列IntAXを設定する。
ステップS116において、スパース行列設定部114は、ステップS115において設定されたスパース行列IntAXに対応するシフト量SIntAxを設定する。ステップS116の処理が終了すると、処理はステップS118に進む。
また、ステップS114において、スパース行列が存在しないと判定された場合、処理はステップS117に進む。ステップS117において、スパース行列設定部114は、スパース行列としてNULLを設定する。ステップS117の処理が終了すると処理はステップS118に進む。
ステップS118において、ベース変換行列設定部112は、設定したベース変換行列TXを係数変換部131に出力する。また、フラグ設定部113は、設定したスパース行列有無フラグsparsePresentFlagをスイッチ132に出力する。さらに、スパース行列設定部114は、設定したスパース行列IntAXおよびシフト量SIntAxをパワーシフト部133に出力する。なお、この処理は、設定されていないパラメータについては省略される。ステップS118の処理が終了すると設定処理が終了し、処理は図12に戻る。
<変換処理の流れ>
次に、図12のステップS102において実行される変換処理の流れの例を、図14のフローチャートを参照して説明する。変換処理が開始されると、係数変換部131は、ステップS131において、ベース変換行列設定部112により設定されたベース変換行列TXを用いて、空間領域の画像データを順方向に1次元変換し、周波数領域の係数データを得る。
ステップS132において、スイッチ132は、フラグ設定部113により設定されたスパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS133に進む。
ステップS133において、パワーシフト部133は、スパース行列IntAXおよびシフト量SIntAxを用いて、ステップS131において生成された係数データをパワーシフト(周波数領域におけるパワーシフト)する。ステップS133の処理が終了すると処理はステップS134に進む。
また、ステップS132において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS133の処理が省略され、処理はステップS134に進む。
ステップS134において、出力部134は、ステップS131において生成された係数データ、または、ステップS133においてパワーシフトされた係数データを出力する。ステップS134の処理が終了すると変換処理が終了し、処理は図12に戻る。
以上のようにすることにより、画像処理装置100は、順方向の1次元変換に用いられる変換行列を、ベース変換行列TX、スパース行列IntAX、およびシフト量SIntAxを用いて近似することができる。したがって、対象変換タイプと同等のエナジーコンパクションを実現し、符号化効率を維持しながら、適応直交変換のコストの増大を抑制することができる。
<3.第2の実施の形態>
<画像処理装置>
次に、以上のような変換行列の近似(方法#1)を適用した逆方向の係数変換を実現するための構成や処理について説明する。図15は、本技術を適用した画像処理装置の主な構成の一例を示すブロック図である。図15に示される画像処理装置150は、係数データを画像データに変換する係数逆変換を行う装置である。
図15に示されるように、画像処理装置150は、変換行列設定部101および逆変換部152を有する。変換行列設定部101は、画像処理装置100の場合と同様に、ベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列に対応するシフト量SIntAxを設定し、それらを逆変換部152に供給する。
逆変換部152は、変換部102が行う係数変換の逆処理(逆変換)を行う。より具体的には、逆変換部152は、画像データが順方向に1次元変換されて生成される係数データを逆方向に1次元変換し、画像データを生成(復元)する。逆変換部152は、変換行列設定部101により設定された(変換行列設定部101から供給された)ベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列に対応するシフト量SIntAxを用いてその1次元変換を行う。
逆変換部152は、スイッチ161、パワーシフト部162、係数逆変換部163、および出力部164を有する。
スイッチ161は、変換行列設定部101(フラグ設定部113)から供給されるスパース行列有無フラグsparsePresentFlagを取得し、そのスパース行列有無フラグsparsePresentFlagに基づいて、入力される周波数領域の係数データの供給先を制御する。例えば、スパース行列有無フラグsparsePresentFlagの値がTrueの場合、スイッチ161は、その係数データをパワーシフト部162に供給する。また、例えば、スパース行列有無フラグsparsePresentFlagの値がFalseの場合、スイッチ161は、その係数データを係数逆変換部163に供給する。つまり、スイッチ161は、スパース行列有無フラグsparsePresentFlagの値に応じて、周波数領域におけるパワーシフトを行うか否かを制御する。
パワーシフト部162は、変換行列設定部101(スパース行列設定部114)から供給されるスパース行列IntAXとシフト量SIntAxとを取得し、それらに基づいて、スイッチ161から供給される係数データのパワーシフト(すなわち、周波数領域におけるパワーシフト)を行う。パワーシフト部162は、パワーシフトが行われた係数データを係数逆変換部163に供給する。
係数逆変換部163は、変換行列設定部101(ベース変換行列設定部112)から供給されるベース変換行列TXを取得し、そのベース変換行列TXを用いて、スイッチ161から供給される係数データ、または、パワーシフト部162から供給されるパワーシフトされた係数データを逆方向に1次元変換し、空間領域の画像データを生成する。係数逆変換部163は、生成した画像データを出力部164に供給する。
出力部164は、係数逆変換部163から供給された画像データを出力する。
<画像処理の流れ>
図15の画像処理装置150により実行される画像処理の流れの例を、図16のフローチャートを参照して説明する。画像処理が開始されると、変換行列設定部101は、ステップS151において、ベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列IntAXに対応するシフト量SIntAxを設定する。ステップS152において、逆変換部152は、ステップS151において設定されたベース変換行列TX、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、およびそのスパース行列IntAXに対応するシフト量SIntAxを用いて、係数データを逆方向に1次元変換し、画像データを生成する。ステップS152の処理が終了すると画像処理が終了する。
<逆変換処理の流れ>
図16のステップS151において実行される設定処理は、図13のフローチャートと同様の流れで行われる。次に、図16のステップS152において実行される逆変換処理の流れの例を、図17のフローチャートを参照して説明する。逆変換処理が開始されると、スイッチ161は、ステップS161において、フラグ設定部113により設定されたスパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS162に進む。
ステップS162において、パワーシフト部162は、スパース行列IntAXおよびシフト量SIntAxを用いて、周波数領域の係数データをパワーシフト(周波数領域におけるパワーシフト)する。ステップS162の処理が終了すると処理はステップS163に進む。また、ステップS161において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS162の処理が省略され、処理はステップS163に進む。
ステップS163において、係数逆変換部163は、ベース変換行列設定部112により設定されたベース変換行列TXを用いて、周波数領域の係数データ(スイッチ161から供給された係数データ)を逆方向に1次元変換し、空間領域の画像データを得る。
ステップS164において、出力部164は、ステップS163において生成された画像データを出力する。ステップS164の処理が終了すると逆変換処理が終了し、処理は図16に戻る。
以上のようにすることにより、画像処理装置150は、逆方向の1次元変換に用いられる変換行列を、ベース変換行列TX、スパース行列IntAX、およびシフト量SIntAxを用いて、上述の方法#1により近似することができる。したがって、対象変換タイプと同等のエナジーコンパクションを実現し、符号化効率を維持しながら、適応直交変換のコストの増大を抑制することができる。
<4.第3の実施の形態>
<画像処理装置>
次に、以上のような変換行列の近似(方法#2)を適用した順方向の係数変換を実現するための構成や処理について説明する。この場合の画像処理装置100の主な構成例を図18に示す。
図18に示されるように、この場合、変換部102のスイッチ132は、変換行列設定部101(フラグ設定部113)から供給されるスパース行列有無フラグsparsePresentFlagを取得し、そのスパース行列有無フラグsparsePresentFlagに基づいて、入力される空間領域の画像データの供給先を制御する。例えば、スパース行列有無フラグsparsePresentFlagの値がTrueの場合、スイッチ132は、その画像データをパワーシフト部133に供給する。また、例えば、スパース行列有無フラグsparsePresentFlagの値がFalseの場合、スイッチ132は、その画像データを係数変換部131に供給する。つまり、スイッチ132は、スパース行列有無フラグsparsePresentFlagの値に応じて、空間領域におけるパワーシフトを行うか否かを制御する。
パワーシフト部133は、変換行列設定部101(スパース行列設定部114)から供給されるスパース行列IntAXとシフト量SIntAxとを取得し、それらに基づいて、画像データのパワーシフト(空間領域におけるパワーシフト)を行う。パワーシフト部133は、パワーシフトが行われた画像データを係数変換部131に供給する。
係数変換部131は、変換行列設定部101(ベース変換行列設定部112)から供給されるベース変換行列TXを取得し、そのベース変換行列TXを用いて、スイッチ132から供給される画像データ、または、パワーシフト部133から供給されるパワーシフトされた画像データを、順方向に1次元変換し、周波数領域の係数データを生成する。係数変換部131は、生成した係数データを出力部134に供給する。
出力部134は、係数変換部131から供給される係数データを出力する。
<変換処理の流れ>
この場合、画像処理は、図12のフローチャートの場合と同様の流れで行われる。また、設定処理は、図13のフローチャートの場合と同様の流れで行われる。
次に、図18の場合の画像処理装置100により図12のステップS102において実行される変換処理の流れの例を、図19のフローチャートを参照して説明する。変換処理が開始されると、スイッチ132は、ステップS171において、フラグ設定部113により設定されたスパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS172に進む。
ステップS172において、パワーシフト部133は、スパース行列IntAXおよびシフト量SIntAxを用いて、空間領域の画像データをパワーシフト(空間領域におけるパワーシフト)する。ステップS172の処理が終了すると処理はステップS173に進む。また、ステップS171において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS172の処理が省略され、処理はステップS173に進む。
ステップS173において、係数変換部131は、ベース変換行列TXを用いて、画像データを順方向に1次元変換し、周波数領域の係数データを得る。
ステップS174において、出力部134は、ステップS173において生成された係数データを出力する。ステップS174の処理が終了すると変換処理が終了し、処理は図12に戻る。
以上のようにすることにより、画像処理装置100は、順方向の1次元変換に用いられる変換行列を、ベース変換行列TX、スパース行列IntAX、およびシフト量SIntAxを用いて、上述の方法#2により近似することができる。したがって、対象変換タイプと同等のエナジーコンパクションを実現し、符号化効率を維持しながら、適応直交変換のコストの増大を抑制することができる。
<5.第4の実施の形態>
<画像処理装置>
次に、以上のような変換行列の近似(方法#2)を適用した逆方向の係数変換を実現するための構成や処理について説明する。この場合の画像処理装置150の主な構成の一例を図20に示す。
図20に示されるように、この場合、逆変換部152の係数逆変換部163は、変換行列設定部101(ベース変換行列設定部112)から供給されるベース変換行列TXを取得し、そのベース変換行列TXを用いて、入力される周波数領域の係数データを逆方向に1次元変換し、空間領域の画像データを生成する。係数逆変換部163は、生成した画像データをスイッチ161に供給する。
スイッチ161は、変換行列設定部101(フラグ設定部113)から供給されるスパース行列有無フラグsparsePresentFlagを取得し、そのスパース行列有無フラグsparsePresentFlagに基づいて、係数逆変換部163から供給される画像データの供給先を制御する。例えば、スパース行列有無フラグsparsePresentFlagの値がTrueの場合、スイッチ161は、その画像データをパワーシフト部162に供給する。また、例えば、スパース行列有無フラグsparsePresentFlagの値がFalseの場合、スイッチ161は、その画像データを出力部164に供給する。つまり、スイッチ161は、スパース行列有無フラグsparsePresentFlagの値に応じて、空間領域におけるパワーシフトを行うか否かを制御する。
パワーシフト部162は、変換行列設定部101(スパース行列設定部114)から供給されるスパース行列IntAXとシフト量SIntAxとを取得し、それらに基づいて、スイッチ161から供給される画像データのパワーシフト(すなわち、空間領域におけるパワーシフト)を行う。パワーシフト部162は、パワーシフトが行われた画像データを出力部164に供給する。
出力部164は、スイッチ161から供給される画像データ、または、パワーシフト部162から供給されるパワーシフトされた画像データを出力する。
<逆変換処理の流れ>
この場合、画像処理は、図16のフローチャートの場合と同様の流れで行われる。また、設定処理は、図13のフローチャートの場合と同様の流れで行われる。
次に、図20の場合の画像処理装置150により図16のステップS152において実行される逆変換処理の流れの例を、図21のフローチャートを参照して説明する。
逆変換処理が開始されると、係数逆変換部163は、ステップS181において、ベース変換行列設定部112により設定されたベース変換行列TXを用いて、入力された周波数領域の係数データを逆方向に1次元変換し、空間領域の画像データを得る。
ステップS182において、スイッチ161は、フラグ設定部113により設定されたスパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS183に進む。
ステップS183において、パワーシフト部162は、スパース行列IntAXおよびシフト量SIntAxを用いて、ステップS181において生成された画像データをパワーシフト(空間領域におけるパワーシフト)する。ステップS183の処理が終了すると処理はステップS184に進む。また、ステップS182において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS183の処理が省略され、処理はステップS184に進む。
ステップS184において、出力部164は、ステップS181において生成された画像データ、またはステップS183においてパワーシフトされた画像データを出力する。ステップS184の処理が終了すると逆変換処理が終了し、処理は図16に戻る。
以上のようにすることにより、画像処理装置150は、逆方向の1次元変換に用いられる変換行列を、ベース変換行列TX、スパース行列IntAX、およびシフト量SIntAxを用いて、上述の方法#2により近似することができる。したがって、対象変換タイプと同等のエナジーコンパクションを実現し、符号化効率を維持しながら、適応直交変換のコストの増大を抑制することができる。
<6.第5の実施の形態>
<画像符号化装置>
以上に説明した本技術は、任意の装置やデバイス等に適用することができる。例えば、画像データを符号化する画像符号化装置に、上述した本技術(変換行列の近似(方法#1))を適用することができる。
図22は、本技術を適用した画像処理装置の一態様である画像符号化装置の構成の一例を示すブロック図である。図22に示される画像符号化装置300は、動画像の画像データを符号化する装置である。例えば、画像符号化装置300は、非特許文献1乃至非特許文献6に記載されている技術を実装し、それらの文献のいずれかに記載された規格に準拠した方法で動画像の画像データを符号化する。
なお、図22においては、処理部やデータの流れ等の主なものを示しており、図22に示されるものが全てとは限らない。つまり、画像符号化装置300において、図22においてブロックとして示されていない処理部が存在したり、図22において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、画像符号化装置300内の処理部等を説明する他の図においても同様である。
図22に示されるように画像符号化装置300は、制御部301、並べ替えバッファ311、演算部312、直交変換部313、量子化部314、符号化部315、蓄積バッファ316、逆量子化部317、逆直交変換部318、演算部319、インループフィルタ部320、フレームメモリ321、予測部322、およびレート制御部323を有する。
<制御部>
制御部301は、外部、または予め指定された処理単位のブロックサイズに基づいて、並べ替えバッファ311により保持されている動画像データを処理単位のブロック(CU, PU, 変換ブロックなど)へ分割する。また、制御部301は、各ブロックへ供給する符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど)を、例えば、RDO(Rate-Distortion Optimization)に基づいて、決定する。
これらの符号化パラメータの詳細については後述する。制御部301は、以上のような符号化パラメータを決定すると、それを各ブロックへ供給する。具体的には、以下の通りである。
ヘッダ情報Hinfoは、各ブロックに供給される。
予測モード情報Pinfoは、符号化部315と予測部322とに供給される。
変換情報Tinfoは、符号化部315、直交変換部313、量子化部314、逆量子化部317、および逆直交変換部318に供給される。
フィルタ情報Finfoは、インループフィルタ部320に供給される。
<並べ替えバッファ>
画像符号化装置300には、動画像データの各フィールド(入力画像)がその再生順(表示順)に入力される。並べ替えバッファ311は、各入力画像をその再生順(表示順)に取得し、保持(記憶)する。並べ替えバッファ311は、制御部301の制御に基づいて、その入力画像を符号化順(復号順)に並べ替えたり、処理単位のブロックに分割したりする。並べ替えバッファ311は、処理後の各入力画像を演算部312に供給する。また、並べ替えバッファ311は、その各入力画像(元画像)を、予測部322やインループフィルタ部320にも供給する。
<演算部>
演算部312は、処理単位のブロックに対応する画像I、および予測部322より供給される予測画像Pを入力とし、画像recから予測画像Pを以下の式(10)に示されるように減算して、予測残差resiを導出し、それを直交変換部313に供給する。
resi = rec - P ・・・(10)
<直交変換部>
直交変換部313は、演算部312から供給される予測残差resiと、制御部301から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、予測残差resiに対して直交変換を行い、係数データcoefを導出する。直交変換部313は、その得られた係数データcoefを量子化部314に供給する。
<量子化部>
量子化部314は、直交変換部313から供給される係数データcoefと、制御部301から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、係数データcoefをスケーリング(量子化)する。なお、この量子化のレートは、レート制御部323により制御される。量子化部314は、このような量子化により得られた量子化後の係数データ、すなわち量子化変換係数qcoefを、符号化部315および逆量子化部317に供給する。
<符号化部>
符号化部315は、量子化部314から供給された量子化変換係数qcoefと、制御部301から供給される各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど)と、インループフィルタ部320から供給されるフィルタ係数等のフィルタに関する情報と、予測部322から供給される最適な予測モードに関する情報とを入力とする。符号化部315は、量子化変換係数qcoefを可変長符号化(例えば、算術符号化)し、ビット列(符号化データ)を生成する。
また、符号化部315は、その量子化変換係数qcoefから残差情報Rinfoを導出し、残差情報Rinfoを符号化し、ビット列を生成する。
さらに、符号化部315は、インループフィルタ部320から供給されるフィルタに関する情報をフィルタ情報Finfoに含め、予測部322から供給される最適な予測モードに関する情報を予測モード情報Pinfoに含める。そして、符号化部315は、上述した各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど)を符号化し、ビット列を生成する。
また、符号化部315は、以上のように生成された各種情報のビット列を多重化し、符号化データを生成する。符号化部315は、その符号化データを蓄積バッファ316に供給する。
<蓄積バッファ>
蓄積バッファ316は、符号化部315において得られた符号化データを、一時的に保持する。蓄積バッファ316は、所定のタイミングにおいて、保持している符号化データを、例えばビットストリーム等として画像符号化装置300の外部に出力する。例えば、この符号化データは、任意の記録媒体、任意の伝送媒体、任意の情報処理装置等を介して復号側に伝送される。すなわち、蓄積バッファ316は、符号化データ(ビットストリーム)を伝送する伝送部でもある。
<逆量子化部>
逆量子化部317は、逆量子化に関する処理を行う。例えば、逆量子化部317は、量子化部314から供給される量子化変換係数qcoefと、制御部301から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、量子化変換係数qcoefの値をスケーリング(逆量子化)する。なお、この逆量子化は、量子化部314において行われる量子化の逆処理である。逆量子化部317は、このような逆量子化により得られた係数データcoefIを、逆直交変換部318に供給する。
<逆直交変換部>
逆直交変換部318は、逆直交変換に関する処理を行う。例えば、逆直交変換部318は、逆量子化部317から供給される係数データcoefIと、制御部301から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、係数データcoefIに対して逆直交変換を行い、残差データresiIを導出する。なお、この逆直交変換は、直交変換部313において行われる直交変換の逆処理である。逆直交変換部318は、このような逆直交変換により得られた残差データresiIを演算部319に供給する。なお、逆直交変換部318は、復号側の逆直交変換部(後述する)と同様であるので、逆直交変換部318については、復号側について行う説明(後述する)を適用することができる。
<演算部>
演算部319は、逆直交変換部318から供給される残差データresiIと、予測部322から供給される予測画像Pとを入力とする。演算部319は、その残差データresiIと、その残差データresiIに対応する予測画像Pとを加算し、局所復号画像Rlocalを導出する。演算部319は、導出した局所復号画像Rlocalをインループフィルタ部320およびフレームメモリ321に供給する。
<インループフィルタ部>
インループフィルタ部320は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部320は、演算部319から供給される局所復号画像Rlocalと、制御部301から供給されるフィルタ情報Finfoと、並べ替えバッファ311から供給される入力画像(元画像)とを入力とする。なお、インループフィルタ部320に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。例えば、必要に応じて、予測モード、動き情報、符号量目標値、量子化パラメータQP、ピクチャタイプ、ブロック(CU、CTU等)の情報等がインループフィルタ部320に入力されるようにしてもよい。
インループフィルタ部320は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。インループフィルタ部320は、必要に応じて入力画像(元画像)や、その他の入力情報もそのフィルタ処理に用いる。
例えば、インループフィルタ部320は、バイラテラルフィルタ、デブロッキングフィルタ(DBF(DeBlocking Filter))、適応オフセットフィルタ(SAO(Sample Adaptive Offset))、および適応ループフィルタ(ALF(Adaptive Loop Filter))の4つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
もちろん、インループフィルタ部320が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部320がウィーナーフィルタ等を適用するようにしてもよい。
インループフィルタ部320は、フィルタ処理された局所復号画像Rlocalをフレームメモリ321に供給する。なお、例えばフィルタ係数等のフィルタに関する情報を復号側に伝送する場合、インループフィルタ部320は、そのフィルタに関する情報を符号化部315に供給する。
<フレームメモリ>
フレームメモリ321は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ321は、演算部319から供給される局所復号画像Rlocalや、インループフィルタ部320から供給されるフィルタ処理された局所復号画像Rlocalを入力とし、それを保持(記憶)する。また、フレームメモリ321は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する(フレームメモリ321内のバッファへ格納する)。フレームメモリ321は、予測部322の要求に応じて、その復号画像R(またはその一部)を予測部322に供給する。
<予測部>
予測部322は、予測画像の生成に関する処理を行う。例えば、予測部322は、制御部301から供給される予測モード情報Pinfoと、並べ替えバッファ311から供給される入力画像(元画像)と、フレームメモリ321から読み出す復号画像R(またはその一部)を入力とする。予測部322は、予測モード情報Pinfoや入力画像(元画像)を用い、インター予測やイントラ予測等の予測処理を行い、復号画像Rを参照画像として参照して予測を行い、その予測結果に基づいて動き補償処理を行い、予測画像Pを生成する。予測部322は、生成した予測画像Pを演算部312および演算部319に供給する。また、予測部322は、以上の処理により選択した予測モード、すなわち最適な予測モードに関する情報を、必要に応じて符号化部315に供給する。
<レート制御部>
レート制御部323は、レート制御に関する処理を行う。例えば、レート制御部323は、蓄積バッファ316に蓄積された符号化データの符号量に基づいて、オーバフローあるいはアンダーフローが発生しないように、量子化部314の量子化動作のレートを制御する。
以上のような構成の画像符号化装置300において、直交変換部313および逆直交変換部318は、上述した本技術を適用した処理を行う。
<直交変換部>
図23は、図22の直交変換部313の主な構成例を示すブロック図である。図23に示されるように、直交変換部313は、プライマリ変換部341およびセカンダリ変換部342を有する。
プライマリ変換部341は、例えば直交変換等の所定の変換処理であるプライマリ変換に関する処理を行う。例えば、プライマリ変換部341は、予測残差resi、変換情報Tinfo、および予測モード情報PInfo(図示せず)等を入力とし、その予測残差resiに対してプライマリ変換を行い、得られた係数データcoefPをセカンダリ変換部342に供給する。例えば、プライマリ変換部341は、変換タイプ識別子trTypeIdxHおよびtrTypeIdxV、変換ブロックの水平方向のサイズlog2TrWidth、変換ブロックの垂直方向のサイズlog2TrHeight、並びに、シーケンスビット深度channelBitDepth等の情報を用いて、そのプライマリ変換を行う。
セカンダリ変換部342は、例えば直交変換等の所定の変換処理であるセカンダリ変換に関する処理を行う。例えばセカンダリ変換部342は、係数データcoefP、変換情報Tinfo(図示せず)、および予測モード情報PInfo(図示せず)等を入力とし、その係数データcoefPに対してセカンダリ変換を行い、得られた係数データcoefを量子化部314に供給する。
図23に示されるように、プライマリ変換部341は、プライマリ水平変換部351およびプライマリ垂直変換部352を有する。
プライマリ水平変換部351は、水平方向の1次元変換であるプライマリ水平変換に関する処理を行う。例えば、プライマリ水平変換部351は、予測残差resi、変換情報Tinfo、および予測モード情報PInfo(図示せず)等を入力とし、その予測残差resiに対してプライマリ水平変換を行い、得られた係数データcoefH(= tmp)をプライマリ垂直変換部352に供給する。
例えば、プライマリ水平変換部351は、プライマリ水平変換の変換タイプ識別子trTypeIdxH、変換ブロックの水平方向のサイズlog2TrWidth、変換ブロックの垂直方向のサイズlog2TrHeight、およびシーケンスビット深度channelBitDepth等の情報を用いて、そのプライマリ水平変換を行う。
プライマリ垂直変換部352は、垂直方向の1次元変換であるプライマリ垂直変換に関する処理を行う。例えば、プライマリ垂直変換部352は、係数データcoefH(= tmp)、変換情報Tinfo、および予測モード情報PInfo(図示せず)等を入力とし、その係数データcoefHに対してプライマリ垂直変換を行い、得られた係数データcoefPをセカンダリ変換部342に供給する。
例えば、プライマリ垂直変換部352は、プライマリ垂直変換の変換タイプ識別子trTypeIdxV、変換ブロックの水平方向のサイズlog2TrWidth、および変換ブロックの垂直方向のサイズlog2TrHeight等の情報を用いて、そのプライマリ垂直変換を行う。
なお、これらのプライマリ変換部341、セカンダリ変換部342、プライマリ水平変換部351、およびプライマリ垂直変換部352は、それぞれ、自身の処理をスキップ(省略)することができる。
<プライマリ変換の行列式>
プライマリ変換部341(プライマリ水平変換部351およびプライマリ垂直変換部352)は、プライマリ変換(プライマリ水平変換およびプライマリ垂直変換)において、ベース変換行列とスパース行列とを用いた変換行列の近似を適用する。この近似を用いたプライマリ変換を、行列式を用いて説明する。
プライマリ水平変換部351が行うプライマリ水平変換を行列式で表すと以下の式(11)のようになる。なお、式(11)において、Yは、変換後の係数データを示し、Xは、変換前の係数データを示し、(TN,tgt)tは、変換行列TN,tgtの転置行列を示す。
Figure 2021141348
この式(11)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(12)のように表現することができる。
Figure 2021141348
また、プライマリ垂直変換部352が行うプライマリ垂直変換を行列式で表すと以下の式(13)のようになる。なお、式(13)において、Yは、変換後の係数データを示し、Xは、変換前の係数データを示し、TN,tgtは、変換行列を示す。
Figure 2021141348
この式(13)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(14)のように表現することができる。
Figure 2021141348
このような近似を行うことにより、<1.適応直交変換>等において上述したように、適応直交変換のコストの増大を抑制することができる。なお、ベース変換行列は任意であり、DCT2に限定されない。例えば、DCT2の高速アルゴリズムと同程度の処理量で演算可能な変換行列に置き換えても、DCT2の場合と同様に適応直交変換のコストの増大を抑制することができる。
なお、これらのような順方向の直交変換では、式(12)や式(14)に示されるように、周波数ドメインにおいて、ある方向(水平または垂直)に対して、係数データの可逆なパワーの交換(パワーシフト)が行なわれる(周波数領域パワーシフトとも称する)。すなわち、このような順方向の直交変換は、セカンダリ変換の1次元係数変換とみなすこともできる。また、このような順方向の直交変換は、係数データの補正処理ともみなすことができる。
<プライマリ水平変換部>
図24は、プライマリ水平変換部351の主な構成例を示すブロック図である。図24に示されるように、プライマリ水平変換部351は、パラメータ導出部361、行列演算部362、正規化部363、スイッチ364、パワーシフト部365、およびクリップ部366を有する。
パラメータ導出部361は、変換タイプ識別子trTypeIdxH、変換ブロックの水平方向のサイズlog2TrWidth、変換ブロックの垂直方向のサイズlog2TrHeight、およびシーケンスビット深度channelBitDepth等の情報を入力とし、それらの情報に基づいて、プライマリ水平変換処理に用いられるパラメータを導出する。
例えば、パラメータ導出部361は、上述した変換行列設定部101と同様の機能を有しており、水平方向の1次元変換用のベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出する。また、パラメータ導出部361は、シーケンス毎に設定されるプライマリ水平変換における有効桁数のシフト量であるプライマリ水平変換シフト量fwdShift1を導出する。なお、プライマリ水平変換シフト量fwdShift1が導出済みの場合、この処理は省略することができる。また、パラメータ導出部361は、係数の最小値coefMinと最大値coefMaxとを導出する。
パラメータ導出部361は、導出したパラメータを各処理部に供給する。例えば、パラメータ導出部361は、導出したベース変換行列THを行列演算部362に供給する。また、パラメータ導出部361は、導出したプライマリ水平変換シフト量fwdShift1を正規化部363に供給する。さらに、パラメータ導出部361は、導出したスパース行列有無フラグsparsePresentFlagをスイッチ364に供給する。また、パラメータ導出部361は、導出したスパース行列IntAXをパワーシフト部365(行列演算部371)に供給する。さらに、パラメータ導出部361は、導出したシフト量SIntAxをパワーシフト部365(正規化部372)に供給する。また、パラメータ導出部361は、導出した係数の最小値coefMinおよび最大値coefMaxをクリップ部366に供給する。
行列演算部362は、予測残差resiおよびベース変換行列THを入力とし、行列演算に関する処理を行う。例えば、行列演算部362は、予測残差resiに対して右側からベース変換行列THの転置行列(TH)tをかけて水平方向の1次元直交変換を行い、中間データtmp1を導出する(tmp1 = resi × (TH)t)。行列演算部362は、その中間データtmp1を正規化部363に供給する。
正規化部363は、その中間データtmp1とプライマリ水平変換シフト量fwdShift1とを入力とし、正規化に関する処理を行う。例えば、正規化部363は、中間データtmp1をプライマリ水平変換シフト量fwdShift1で右ビットシフトして正規化し、中間データtmp2を導出する(tmp2 = tmp1 >> fwdShift1)。つまり、正規化部363は、中間データtmp1の有効桁数を制御する。正規化部363は、その中間データtmp2をスイッチ364に供給する。
スイッチ364は、その中間データtmp2とスパース行列有無フラグsparsePresentFlagとを入力とし、周波数領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ364は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、周波数領域におけるパワーシフトが行われるように、中間データtmp2をパワーシフト部365(行列演算部371)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ364は、周波数領域におけるパワーシフトを省略するように、中間データtmp2をクリップ部366に供給する。
パワーシフト部365は、その中間データtmp2、スパース行列IntAX、およびシフト量SIntAxを入力とし、周波数領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部365は、中間データtmp2に対して周波数領域におけるパワーシフトを行い、処理後の中間データtmp2をクリップ部366に供給する。パワーシフト部365は、行列演算部371および正規化部372を有する。
行列演算部371は、中間データtmp2およびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部371は、スイッチ364から供給された中間データtmp2に対して右側からスパース行列IntAXの転置行列をかけて、中間データtmp2'を導出する(tmp2' = tmp2 × (IntAX)t)。行列演算部371は、その中間データtmp2'を正規化部372に供給する。
正規化部372は、その中間データtmp2'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部372は、中間データtmp2'をシフト量SIntAxで右ビットシフトして正規化し、中間データtmp2を導出する(tmp2 = tmp2' >> SIntAx)。つまり、正規化部372は、中間データtmp2'の有効桁数を制御する。正規化部372は、その周波数領域におけるパワーシフトが行われた中間データtmp2をクリップ部366に供給する。
クリップ部366は、スイッチ364またはパワーシフト部365(正規化部372)から供給された中間データtmp2と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。クリップ処理とは、所定の最小値以下の値をその最小値に変換し、所定の最大値以上の値をその最大値に変換する処理である。例えば、クリップ部366は、中間データtmp2の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部366は、中間データtmp2がクリップされて得られた係数データcoefH(=tmp)をプライマリ垂直変換部352に供給する。なお、クリップ部366は、省略してもよい。
<プライマリ垂直変換部>
図25は、プライマリ垂直変換部352の主な構成例を示すブロック図である。図25に示されるように、プライマリ垂直変換部352は、パラメータ導出部381、行列演算部382、正規化部383、スイッチ384、パワーシフト部385、およびクリップ部386を有する。
パラメータ導出部381は、変換タイプ識別子trTypeIdxV、変換ブロックの水平方向のサイズlog2TrWidth、および変換ブロックの垂直方向のサイズlog2TrHeight等の情報を入力とし、それらの情報に基づいて、プライマリ垂直変換処理に用いられるパラメータを導出する。
例えば、パラメータ導出部381は、上述した変換行列設定部101と同様の機能を有しており、垂直方向の1次元変換用のベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出する。また、パラメータ導出部381は、シーケンス毎に設定されるプライマリ垂直変換における有効桁数のシフト量であるプライマリ垂直変換シフト量fwdShift2を導出する。なお、プライマリ垂直変換シフト量fwdShift2が導出済みの場合、この処理は省略することができる。また、パラメータ導出部381は、係数の最小値coefMinと最大値coefMaxとを導出する。
パラメータ導出部381は、導出したパラメータを各処理部に供給する。例えば、パラメータ導出部381は、導出したベース変換行列TVを行列演算部382に供給する。また、パラメータ導出部381は、導出したプライマリ垂直変換シフト量fwdShift2を正規化部383に供給する。さらに、パラメータ導出部381は、導出したスパース行列有無フラグsparsePresentFlagをスイッチ384に供給する。また、パラメータ導出部381は、導出したスパース行列IntAXをパワーシフト部385(行列演算部391)に供給する。さらに、パラメータ導出部381は、導出したシフト量SIntAxをパワーシフト部385(正規化部392)に供給する。また、パラメータ導出部381は、導出した係数の最小値coefMinおよび最大値coefMaxをクリップ部386に供給する。
行列演算部382は、係数データcoefH(= tmp)およびベース変換行列TVを入力とし、行列演算に関する処理を行う。例えば、行列演算部382は、係数データcoefHに対して左側からベース変換行列TVをかけて垂直方向の1次元直交変換を行い、中間データtmp3を導出する(tmp3 = TV × coefH)。行列演算部382は、その中間データtmp3を正規化部383に供給する。
正規化部383は、その中間データtmp3とプライマリ垂直変換シフト量fwdShift2とを入力とし、正規化に関する処理を行う。例えば、正規化部383は、中間データtmp3をプライマリ垂直変換シフト量fwdShift2で右ビットシフトして正規化し、中間データtmp4を導出する(tmp4 = tmp3 >> fwdShift2)。つまり、正規化部383は、中間データtmp3の有効桁数を制御する。正規化部383は、その中間データtmp4をスイッチ384に供給する。
スイッチ384は、その中間データtmp4とスパース行列有無フラグsparsePresentFlagとを入力とし、周波数領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ384は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、周波数領域におけるパワーシフトが行われるように、中間データtmp4をパワーシフト部385(行列演算部391)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ384は、周波数領域におけるパワーシフトを省略するように、中間データtmp4をクリップ部386に供給する。
パワーシフト部385は、その中間データtmp4、スパース行列IntAX、およびシフト量SIntAxを入力とし、周波数領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部385は、中間データtmp4に対して周波数領域におけるパワーシフトを行い、処理後の中間データtmp4をクリップ部386に供給する。パワーシフト部385は、行列演算部391および正規化部392を有する。
行列演算部391は、中間データtmp4およびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部391は、スイッチ384から供給された中間データtmp4に対して左側からスパース行列IntAXをかけて、中間データtmp4'を導出する(tmp4' = IntAX × tmp4)。行列演算部391は、その中間データtmp4'を正規化部392に供給する。
正規化部392は、その中間データtmp4'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部392は、中間データtmp4'をシフト量SIntAxで右ビットシフトして正規化し、中間データtmp4を導出する(tmp4 = tmp4' >> SIntAx)。つまり、正規化部392は、中間データtmp4'の有効桁数を制御する。正規化部392は、その周波数領域におけるパワーシフトが行われた中間データtmp4をクリップ部386に供給する。
クリップ部386は、スイッチ384またはパワーシフト部385(正規化部392)から供給された中間データtmp4と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部386は、中間データtmp4の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部386は、中間データtmp4がクリップされて得られた係数データcoefPをセカンダリ変換部342に供給する。なお、クリップ部386は、省略してもよい。
以上のような構成を有することにより、画像符号化装置300は、上述した本技術を適用した処理を行い、適応直交変換のコストの増大を抑制することができる。
<画像符号化処理の流れ>
次に、以上のような画像符号化装置300により実行される各処理の流れについて説明する。最初に、図26のフローチャートを参照して、画像符号化処理の流れの例を説明する。
画像符号化処理が開始されると、ステップS301において、並べ替えバッファ311は、制御部301に制御されて、入力された動画像データのフレームの順を表示順から符号化順に並べ替える。
ステップS302において、制御部301は、並べ替えバッファ311が保持する入力画像に対して、処理単位を設定する(ブロック分割を行う)。
ステップS303において、制御部301は、並べ替えバッファ311が保持する入力画像についての符号化パラメータを決定(設定)する。
ステップS304において、予測部322は、予測処理を行い、最適な予測モードの予測画像等を生成する。例えば、この予測処理において、予測部322は、イントラ予測を行って最適なイントラ予測モードの予測画像等を生成し、インター予測を行って最適なインター予測モードの予測画像等を生成し、それらの中から、コスト関数値等に基づいて最適な予測モードを選択する。
ステップS305において、演算部312は、入力画像と、ステップS304の予測処理により選択された最適なモードの予測画像との差分を演算する。つまり、演算部312は、入力画像と予測画像との予測残差resiを生成する。このようにして求められた予測残差resiは、元の画像データに比べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
ステップS306において、直交変換部313は、ステップS305の処理により生成された予測残差resiに対して直交変換処理を行い、係数データcoefを導出する。
ステップS307において、量子化部314は、制御部301により算出された量子化パラメータを用いる等して、ステップS306の処理により得られた係数データcoefを量子化し、量子化変換係数qcoefを導出する。
ステップS308において、逆量子化部317は、ステップS307の処理により生成された量子化変換係数qcoefを、そのステップS307の量子化の特性に対応する特性で逆量子化し、係数データcoefIを導出する。なお、この逆量子化処理は、復号側において行われる逆量子化処理(後述する)と同様であるので、このステップS308の逆量子化処理については、復号側について行う説明(後述する)を適用することができる。
ステップS309において、逆直交変換部318は、ステップS308の処理により得られた係数データcoefIを、ステップS306の直交変換処理に対応する方法で逆直交変換し、残差データresiIを導出する。なお、この逆直交変換処理は、復号側において行われる逆直交変換処理(後述する)と同様であるので、このステップS309の逆直交変換処理については、復号側について行う説明(後述する)を適用することができる。
ステップS310において、演算部319は、ステップS309の処理により導出された残差データresiIに、ステップS304の予測処理により得られた予測画像を加算することにより、局所的に復号された復号画像を生成する。
ステップS311において、インループフィルタ部320は、ステップS310の処理により導出された、局所的に復号された復号画像に対して、インループフィルタ処理を行う。
ステップS312において、フレームメモリ321は、ステップS310の処理により導出された、局所的に復号された復号画像や、ステップS312においてフィルタ処理された、局所的に復号された復号画像を記憶する。
ステップS313において、符号化部315は、ステップS307の処理により得られた量子化変換係数qcoefを符号化する。例えば、符号化部315は、画像に関する情報である量子化変換係数qcoefを、算術符号化等により符号化し、符号化データを生成する。また、このとき、符号化部315は、各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo等)を符号化する。さらに、符号化部315は、量子化変換係数qcoefから残差情報RInfoを導出し、その残差情報RInfoを符号化する。
ステップS314において、蓄積バッファ316は、このようにして得られた符号化データを蓄積し、例えばビットストリームとして、それを画像符号化装置300の外部に出力する。このビットストリームは、例えば、伝送路や記録媒体を介して復号側に伝送される。また、レート制御部323は、必要に応じてレート制御を行う。
ステップS314の処理が終了すると、画像符号化処理が終了する。
以上のような流れの画像符号化処理において、ステップS306およびステップS309の処理として、上述した本技術を適用した処理が行われる。したがって、この画像符号化処理を実行することにより、適応直交変換のコストの増大を抑制することができる。
<直交変換処理の流れ>
図26のステップS306の処理において実行される直交変換処理の流れの例を、図27のフローチャートを参照して説明する。
直交変換処理が開始されると、直交変換部313のプライマリ水平変換部351は、ステップS321において、プライマリ水平変換処理を行う。
ステップS322において、プライマリ垂直変換部352は、プライマリ垂直変換処理を行う。
ステップS323において、セカンダリ変換部342は、セカンダリ変換処理を行う。
ステップS323の処理が終了すると、直交変換処理が終了し、処理は図26に戻る。
以上のような直交変換処理において、ステップS321やステップS322の処理として、上述した本技術を適用した処理が行われる。したがって、この直交変換処理を実行することにより、適応直交変換のコストの増大を抑制することができる。
なお、この直交変換処理の各ステップ(ステップS321乃至ステップS323)は、それぞれ、スキップ(省略)することができる。
<プライマリ水平変換処理の流れ>
図27のステップS321において実行されるプライマリ水平変換処理の流れの例を、図28のフローチャートを参照して説明する。
プライマリ水平変換処理が開始されると、プライマリ水平変換部351のパラメータ導出部361は、ステップS331において、ベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部361(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS332において、パラメータ導出部361は、プライマリ水平変換シフト量fwdShift1を導出する。例えば、パラメータ導出部361は、シーケンス毎のプライマリ水平変換シフト量fwdShift1を、以下の式(15)のように、変換ブロックのサイズに関する情報(log2TrWidth)、シーケンスビット深度channelBitDepth、ステップS331において導出したベース変換行列THの整数近似精度を表すパラメータtrMatShift、および係数のレンジに関するパラメータlog2TransformRangeに基づいて導出する。なお、パラメータtrMatShiftは、例えば、8の値をとる。さらに、パラメータ導出部361は、係数の最小値coefMinと最大値coefMaxも導出する。
fwdShift1 = log2TrWidth + channelBitDepth + trMatShift - log2TransformDynamicRange
・・・(15)
ステップS333において、行列演算部362は、例えば以下の式(16)のように、予測残差resiの水平方向へベース変換行列THを用いて1次元変換(1D変換)を実行し、中間データtmp1を導出する。つまり、行列演算部362は、予測残差resiに対して右側から水平方向のベース変換行列THの転置行列TH Tをかけて、中間データtmp1を導出する。
tmp = resi × TH T ・・・(16)
ステップS334において、正規化部363は、例えば以下の式(17)のように、中間データtmp1の各係数をプライマリ水平変換シフト量fwdShift1で正規化する。
tmp2 = (tmp1 + offsetFwdShift1) >> fwdShift1 ・・・(17)
offsetFwdShift1 = 1<<(fwdShift1-1)
ステップS335において、スイッチ364は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS336に進む。つまり、この場合、スイッチ364は、中間データtmp2をパワーシフト部365に供給する。
ステップS336において、パワーシフト部365は、パワーシフト処理を実行し、中間データtmp2を周波数領域においてパワーシフトする。ステップS336の処理が終了すると処理はステップS337に進む。また、ステップS335において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS336の処理が省略され、処理はステップS337に進む。つまり、この場合、スイッチ364は、中間データtmp2をクリップ部366に供給する。
ステップS337において、クリップ部366は、例えば以下の式(18)に示されるように、中間データtmp2の値を、係数の最小値coefMinVal乃至係数の最大値coefMaxValの範囲になるようクリップし、クリップ後の係数データcoefHを導出する。
coefH = Clip3(coefMinVal, coefMaxVal, tmp2) ・・・(18)
ここで、Clip3(a_min, a_max, val)は、valがa_minより小さいとき、a_minを返し、valがa_maxより大きいとき、a_maxを返し、それ以外の場合(a_min乃至a_maxの範囲にある場合)、valを返すクリップ演算子である。
ステップS337の処理が終了すると、処理は図27に戻る。
以上のようにプライマリ水平変換処理を行うことにより、プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS337の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図29のフローチャートを参照して図28のステップS336において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部371は、ステップS341において、例えば以下の式(19)のように、中間データtmp2とスパース行列IntAXの転置行列IntAX Tとの行列演算を行い、中間データtmp2'を得る。つまり、行列演算部371は、中間データtmp2の右側からスパース行列IntAXの転置行列IntAX Tをかけて、中間データtmp2'を導出する。
tmp2' = tmp2 × IntAX T ・・・(19)
ステップS342において、正規化部372は、例えば以下の式(20)のように、ステップS341の処理により導出された中間データtmp2'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
coefH = tmp2 = (tmp2' + (1 << (SIntAx - 1))) >> SIntAx ・・・(20)
ステップS342の処理が終了するとパワーシフト処理が終了し、処理は図28に戻る。
このように周波数領域におけるパワーシフトを行うことにより、プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<プライマリ垂直変換処理の流れ>
図27のステップS322において実行されるプライマリ垂直変換処理の流れの例を、図30のフローチャートを参照して説明する。
プライマリ垂直変換処理が開始されると、プライマリ垂直変換部352のパラメータ導出部381は、ステップS351において、ベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部381(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS352において、パラメータ導出部381は、プライマリ垂直変換シフト量fwdShift2を導出する。パラメータ導出部381は、例えば、シーケンス毎のプライマリ垂直変換シフト量fwdShift2を、例えば以下の式(21)のように、変換ブロックのサイズに関する情報(log2TrHeight)と変換行列TVの整数近似精度を表すパラメータtrMatShiftに基づいて導出する。なお、パラメータtrMatShiftは、例えば、8の値をとる。その場合、変換行列TVの整数近似精度は、8bitであることを意味する。さらに、パラメータ導出部381は、係数の最小値coefMinと最大値coefMaxも導出する。
fwdShift2 = log2TrHeight + trMatShift ・・・(21)
ステップS353において、行列演算部382は、例えば以下の式(22)のように、係数データcoefHの垂直方向へベース変換行列TVを用いて1次元変換(1D変換)を実行し、中間データtmp3を導出する。つまり、行列演算部382は、係数データcoefHに対して左側から垂直方向のベース変換行列TVをかけて、中間データtmp3を導出する。
tmp3 = TV × coefH ・・・(22)
ステップS354において、正規化部383は、例えば以下の式(23)のように、中間データtmp3の各係数をプライマリ垂直変換シフト量fwdShift2で正規化する。
tmp4 = (tmp3 + offsetFwdShift2) >> fwdShift2 ・・・(23)
offsetFwdShift2 = 1<<(fwdShift2-1)
ステップS355において、スイッチ384は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS356に進む。つまり、この場合、スイッチ384は、中間データtmp4をパワーシフト部385に供給する。
ステップS356において、パワーシフト部385は、パワーシフト処理を実行し、中間データtmp4を周波数領域においてパワーシフトする。ステップS356の処理が終了すると処理はステップS357に進む。また、ステップS355において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS356の処理が省略され、処理はステップS357に進む。つまり、この場合、スイッチ384は、中間データtmp4をクリップ部386に供給する。
ステップS357において、クリップ部386は、例えば以下の式(24)に示されるように、中間データtmp4の値を、係数の最小値coefMinVal乃至係数の最大値coefMaxValの範囲になるようクリップし、クリップ後の係数データcoefPを導出する。
coefP = Clip3(coefMinVal, coefMaxVal, tmp4) ・・・(24)
ステップS357の処理が終了すると、処理は図27に戻る。
以上のようにプライマリ垂直変換処理を行うことにより、プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS357の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図31のフローチャートを参照して図30のステップS356において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部391は、ステップS361において、例えば以下の式(25)のように、スパース行列IntAXと中間データtmp4との行列演算を行い、中間データtmp4'を得る。つまり、行列演算部391は、中間データtmp4の左側からスパース行列IntAXをかけて、中間データtmp4'を導出する。
tmp4' = IntAX × tmp4 ・・・(25)
ステップS362において、正規化部392は、例えば以下の式(26)のように、ステップS361の処理により導出された中間データtmp4'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
coefP = tmp4 = (tmp4' + (1 << (SIntAx - 1))) >> SIntAx ・・・(26)
ステップS362の処理が終了するとパワーシフト処理が終了し、処理は図30に戻る。
このように周波数領域におけるパワーシフトを行うことにより、プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<7.第6の実施の形態>
<画像復号装置>
また、本技術(変換行列の近似(方法#1))は、例えば、画像データの符号化データを復号する画像復号装置にも適用することができる。
図32は、本技術を適用した画像処理装置の一態様である画像復号装置の構成の一例を示すブロック図である。図32に示される画像復号装置400は、AVCやHEVCのように、画像とその予測画像との予測残差が符号化された符号化データを復号する装置である。例えば、画像復号装置400は、非特許文献1乃至非特許文献6に記載されている技術を実装し、それらの文献のいずれかに記載された規格に準拠した方法で動画像の画像データが符号化された符号化データを復号する。例えば、画像復号装置400は、上述の画像符号化装置300により生成された符号化データ(ビットストリーム)を復号する。
なお、図32においては、処理部やデータの流れ等の主なものを示しており、図32に示されるものが全てとは限らない。つまり、画像復号装置400において、図32においてブロックとして示されていない処理部が存在したり、図32において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、画像復号装置400内の処理部等を説明する他の図においても同様である。
図32において、画像復号装置400は、蓄積バッファ411、復号部412、逆量子化部413、逆直交変換部414、演算部415、インループフィルタ部416、並べ替えバッファ417、フレームメモリ418、および予測部419を備えている。なお、予測部419は、不図示のイントラ予測部、およびインター予測部を備えている。画像復号装置400は、符号化データ(ビットストリーム)を復号することによって、動画像データを生成するための装置である。
<蓄積バッファ>
蓄積バッファ411は、画像復号装置400に入力されたビットストリームを取得し、保持(記憶)する。蓄積バッファ411は、所定のタイミングにおいて、または、所定の条件が整う等した場合、蓄積しているビットストリームを復号部412に供給する。
<復号部>
復号部412は、画像の復号に関する処理を行う。例えば、復号部412は、蓄積バッファ411から供給されるビットストリームを入力とし、シンタックステーブルの定義に沿って、そのビット列から、各シンタックス要素のシンタックス値を可変長復号し、パラメータを導出する。
シンタックス要素およびシンタックス要素のシンタックス値から導出されるパラメータには、例えば、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfo、フィルタ情報Finfoなどの情報が含まれる。つまり、復号部412は、ビットストリームから、これらの情報をパースする(解析して取得する)。これらの情報について以下に説明する。
<ヘッダ情報Hinfo>
ヘッダ情報Hinfoは、例えば、VPS(Video Parameter Set)/SPS(Sequence Parameter Set)/PPS(Picture Parameter Set)/SH(スライスヘッダ)などのヘッダ情報を含む。ヘッダ情報Hinfoには、例えば、画像サイズ(横幅PicWidth、縦幅PicHeight)、ビット深度(輝度bitDepthY, 色差bitDepthC)、色差アレイタイプChromaArrayType、CUサイズの最大値MaxCUSize/最小値MinCUSize、4分木分割(Quad-tree分割ともいう)の最大深度MaxQTDepth/最小深度MinQTDepth、2分木分割(Binary-tree分割)の最大深度MaxBTDepth/最小深度MinBTDepth、変換スキップブロックの最大値MaxTSSize(最大変換スキップブロックサイズともいう)、各符号化ツールのオンオフフラグ(有効フラグともいう)などを規定する情報が含まれる。
例えば、ヘッダ情報Hinfoに含まれる符号化ツールのオンオフフラグとしては、以下に示す変換、量子化処理に関わるオンオフフラグがある。なお、符号化ツールのオンオフフラグは、該符号化ツールに関わるシンタックスが符号化データ中に存在するか否かを示すフラグとも解釈することができる。また、オンオフフラグの値が1(真)の場合、該符号化ツールが使用可能であることを示し、オンオフフラグの値が0(偽)の場合、該符号化ツールが使用不可であることを示す。なお、フラグ値の解釈は逆であってもよい。
コンポーネント間予測有効フラグ(ccp_enabled_flag)は、コンポーネント間予測(CCP(Cross-Component Prediction),CC予測とも称する)が使用可能であるか否かを示すフラグ情報である。例えば、このフラグ情報が「1」(真)の場合、使用可能であることが示され、「0」(偽)の場合、使用不可であることが示される。なお、このCCPは、コンポーネント間線形予測(CCLMまたはCCLMP)とも称する。
<予測モード情報Pinfo>
予測モード情報Pinfoには、例えば、処理対象PB(予測ブロック)のサイズ情報PBSize(予測ブロックサイズ)、イントラ予測モード情報IPinfo、動き予測情報MVinfo等の情報が含まれる。
イントラ予測モード情報IPinfoには、例えば、JCTVC-W1005, 7.3.8.5 Coding Unit syntax中のprev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode、およびそのシンタックスから導出される輝度イントラ予測モードIntraPredModeY等が含まれる。
また、イントラ予測モード情報IPinfoには、例えば、コンポーネント間予測フラグ(ccp_flag(cclmp_flag))、多クラス線形予測モードフラグ(mclm_flag)、色差サンプル位置タイプ識別子(chroma_sample_loc_type_idx)、色差MPM識別子(chroma_mpm_idx)、および、これらのシンタックスから導出される輝度イントラ予測モード(IntraPredModeC)等が含まれる。
コンポーネント間予測フラグ(ccp_flag(cclmp_flag))は、コンポーネント間線形予測を適用するか否かを示すフラグ情報である。例えば、ccp_flag==1のとき、コンポーネント間予測を適用することを示し、ccp_flag==0のとき、コンポーネント間予測を適用しないことを示す。
多クラス線形予測モードフラグ(mclm_flag)は、線形予測のモードに関する情報(線形予測モード情報)である。より具体的には、多クラス線形予測モードフラグ(mclm_flag)は、多クラス線形予測モードにするか否かを示すフラグ情報である。例えば、「0」の場合、1クラスモード(単一クラスモード)(例えばCCLMP)であることを示し、「1」の場合、2クラスモード(多クラスモード)(例えばMCLMP)であることを示す。
色差サンプル位置タイプ識別子(chroma_sample_loc_type_idx)は、色差コンポーネントの画素位置のタイプ(色差サンプル位置タイプとも称する)を識別する識別子である。例えば色フォーマットに関する情報である色差アレイタイプ(ChromaArrayType)が420形式を示す場合、色差サンプル位置タイプ識別子は、以下の式(27)のような割り当て方となる。
chroma_sample_loc_type_idx == 0:Type2
chroma_sample_loc_type_idx == 1:Type3
chroma_sample_loc_type_idx == 2:Type1
chroma_sample_loc_type_idx == 3:Type0
・・・(27)
なお、この色差サンプル位置タイプ識別子(chroma_sample_loc_type_idx)は、色差コンポーネントの画素位置に関する情報(chroma_sample_loc_info())として(に格納されて)伝送される。
色差MPM識別子(chroma_mpm_idx)は、色差イントラ予測モード候補リスト(intraPredModeCandListC)の中のどの予測モード候補を色差イントラ予測モードとして指定するかを表す識別子である。
動き予測情報MVinfoには、例えば、merge_idx, merge_flag, inter_pred_idc, ref_idx_LX, mvp_lX_flag, X={0,1}, mvd等の情報が含まれる(例えば、JCTVC-W1005, 7.3.8.6 Prediction Unit Syntaxを参照)。
もちろん、予測モード情報Pinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
<変換情報Tinfo>
変換情報Tinfoには、例えば、以下の情報が含まれる。もちろん、変換情報Tinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
処理対象変換ブロックの横幅サイズTBWSizeおよび縦幅TBHSize(または、2を底とする各TBWSize(または、TrWidth)、TBHSize(または、TrHeight)の対数値log2TBWSize(または、log2TrWidth)、log2TBHSize(または、log2TrHeight)であってもよい。)
変換スキップフラグ(ts_flag):(逆)プライマリ変換および(逆)セカンダリ変換をスキップか否かを示すフラグである。
スキャン識別子(scanIdx)
量子化パラメータ(qp)
量子化マトリックス(scaling_matrix(例えば、JCTVC-W1005, 7.3.4 Scaling list data syntax))
<残差情報Rinfo>
残差情報Rinfo(例えば、JCTVC-W1005の7.3.8.11 Residual Coding syntaxを参照)には、例えば以下のシンタックスが含まれる。
cbf(coded_block_flag):残差データ有無フラグ
last_sig_coeff_x_pos:ラスト非ゼロ係数X座標
last_sig_coeff_y_pos:ラスト非ゼロ係数Y座標
coded_sub_block_flag:サブブロック非ゼロ係数有無フラグ
sig_coeff_flag:非ゼロ係数有無フラグ
gr1_flag:非ゼロ係数のレベルが1より大きいかを示すフラグ(GR1フラグとも呼ぶ)
gr2_flag:非ゼロ係数のレベルが2より大きいかを示すフラグ(GR2フラグとも呼ぶ)
sign_flag:非ゼロ係数の正負を示す符号(サイン符号とも呼ぶ)
coeff_abs_level_remaining:非ゼロ係数の残余レベル(非ゼロ係数残余レベルとも呼ぶ)
もちろん、残差情報Rinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
<フィルタ情報Finfo>
フィルタ情報Finfoには、例えば、以下に示す各フィルタ処理に関する制御情報が含まれる。
デブロッキングフィルタ(DBF)に関する制御情報
画素適応オフセット(SAO)に関する制御情報
適応ループフィルタ(ALF)に関する制御情報
その他の線形・非線形フィルタに関する制御情報
より具体的には、例えば、各フィルタを適用するピクチャや、ピクチャ内の領域を指定する情報や、CU単位のフィルタOn/Off制御情報、スライス、タイルの境界に関するフィルタOn/Off制御情報などが含まれる。もちろん、フィルタ情報Finfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
復号部412の説明に戻り、復号部412は、残差情報Rinfoを参照して、各変換ブロック内の各係数位置の量子化変換係数qcoefを導出する。復号部412は、その量子化変換係数qcoefを、逆量子化部413に供給する。
また、復号部412は、パースしたヘッダ情報Hinfo、予測モード情報Pinfo、量子化変換係数qcoef、変換情報Tinfo、フィルタ情報Finfoを各ブロックへ供給する。具体的には以下の通りである。
ヘッダ情報Hinfoは、逆量子化部413、逆直交変換部414、予測部419、インループフィルタ部416に供給される。
予測モード情報Pinfoは、逆量子化部413および予測部419に供給される。
変換情報Tinfoは、逆量子化部413および逆直交変換部414に供給される。
フィルタ情報Finfoは、インループフィルタ部416に供給される。
もちろん、上述の例は一例であり、この例に限定されない。例えば、各符号化パラメータが任意の処理部に供給されるようにしてもよい。また、その他の情報が、任意の処理部に供給されるようにしてもよい。
<逆量子化部>
逆量子化部413は、逆量子化に関する処理を行う。例えば、逆量子化部413は、復号部412から供給される変換情報Tinfoおよび量子化変換係数qcoefを入力とし、その変換情報Tinfoに基づいて、量子化変換係数qcoefの値をスケーリング(逆量子化)し、逆量子化後の係数データcoefIを導出する。
なお、この逆量子化は、量子化部314による量子化の逆処理として行われる。また、この逆量子化は、逆量子化部317による逆量子化と同様の処理である。つまり、逆量子化部317は、逆量子化部413と同様の処理(逆量子化)を行う。
逆量子化部413は、導出した係数データcoefIを逆直交変換部414に供給する。
<逆直交変換部>
逆直交変換部414は、逆直交変換に関する処理を行う。例えば、逆直交変換部414は、逆量子化部413から供給される係数データcoefI、および、復号部412から供給される変換情報Tinfoを入力とし、その変換情報Tinfoに基づいて、係数データcoefIに対して逆直交変換処理を行い、残差データresiIを導出する。
なお、この逆直交変換は、直交変換部313による直交変換の逆処理として行われる。また、この逆直交変換は、逆直交変換部318による逆直交変換と同様の処理である。つまり、逆直交変換部318は、逆直交変換部414と同様の処理(逆直交変換)を行う。
逆直交変換部414は、導出した残差データresiI'を演算部415に供給する。
<演算部>
演算部415は、画像に関する情報の加算に関する処理を行う。例えば、演算部415は、逆直交変換部414から供給される残差データresiIと、予測部419から供給される予測画像Pとを入力とする。演算部415は、例えば以下の式(28)に示されるように、残差データresiIとその残差データresiIに対応する予測画像P(予測信号)とを加算し、局所復号画像Rlocalを導出する。
Rlocal = resiI + P ・・・(28)
演算部415は、導出した局所復号画像Rlocalを、インループフィルタ部416およびフレームメモリ418に供給する。
<インループフィルタ部>
インループフィルタ部416は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部416は、演算部415から供給される局所復号画像Rlocalと、復号部412から供給されるフィルタ情報Finfoとを入力とする。なお、インループフィルタ部416に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。
インループフィルタ部416は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。
例えば、インループフィルタ部416は、バイラテラルフィルタ、デブロッキングフィルタ(DBF(DeBlocking Filter))、適応オフセットフィルタ(SAO(Sample Adaptive Offset))、および適応ループフィルタ(ALF(Adaptive Loop Filter))の4つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
インループフィルタ部416は、符号化側(例えば画像符号化装置300のインループフィルタ部320)により行われたフィルタ処理に対応するフィルタ処理を行う。もちろん、インループフィルタ部416が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部416がウィーナーフィルタ等を適用するようにしてもよい。
インループフィルタ部416は、フィルタ処理された局所復号画像Rlocalを並べ替えバッファ417およびフレームメモリ418に供給する。
<並べ替えバッファ>
並べ替えバッファ417は、インループフィルタ部416から供給された局所復号画像Rlocalを入力とし、それを保持(記憶)する。並べ替えバッファ417は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する(バッファ内に格納する)。並べ替えバッファ417は、得られた復号画像Rを、復号順から再生順に並べ替える。並べ替えバッファ417は、並べ替えた復号画像R群を動画像データとして画像復号装置400の外部に出力する。
<フレームメモリ>
フレームメモリ418は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ418は、演算部415より供給される局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ418内のバッファへ格納する。
また、フレームメモリ418は、インループフィルタ部416から供給される、インループフィルタ処理された局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ418内のバッファへ格納する。フレームメモリ418は、適宜、その記憶している復号画像R(またはその一部)を参照画像として予測部419に供給する。
なお、フレームメモリ418が、復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなどを記憶するようにしても良い。
<予測部>
予測部419は、予測画像の生成に関する処理を行う。例えば、予測部419は、復号部412から供給される予測モード情報Pinfoを入力とし、その予測モード情報Pinfoによって指定される予測方法により予測を行い、予測画像Pを導出する。その導出の際、予測部419は、その予測モード情報Pinfoによって指定される、フレームメモリ418に格納されたフィルタ前またはフィルタ後の復号画像R(またはその一部)を、参照画像として利用する。予測部419は、導出した予測画像Pを、演算部415に供給する。
以上のような構成の画像復号装置400において、逆直交変換部414は、上述した本技術を適用した処理を行う。
<逆直交変換部の詳細>
図33は、図32の逆直交変換部414の主な構成例を示すブロック図である。図33に示されるように、逆直交変換部414は、逆セカンダリ変換部431および逆プライマリ変換部432を有する。
逆セカンダリ変換部431は、例えば逆直交変換等の所定の変換処理である逆セカンダリ変換に関する処理を行う。例えば逆セカンダリ変換部431は、係数データcoefIおよび変換情報Tinfo(図示せず)等を入力とし、その係数データcoefIに対して逆セカンダリ変換を行い、得られた係数データcoefIPを逆プライマリ変換部432に供給する。
逆プライマリ変換部432は、例えば逆直交変換等の所定の変換処理である逆プライマリ変換に関する処理を行う。例えば、逆プライマリ変換部432は、係数データcoefIPや変換情報Tinfo等を入力とし、その係数データcoefIPに対して逆プライマリ変換を行い、得られた残差データresiIを演算部415に供給する。例えば、逆プライマリ変換部432は、変換タイプ識別子trTypeIdxHおよびtrTypeIdxV、変換ブロックの水平方向のサイズlog2TrWidth、変換ブロックの垂直方向のサイズlog2TrHeight、並びに、シーケンスビット深度channelBitDepth等の情報を用いて、その逆プライマリ変換を行う。
図33に示されるように、逆プライマリ変換部432は、逆プライマリ垂直変換部441および逆プライマリ水平変換部442を有する。
逆プライマリ垂直変換部441は、垂直方向の逆1次元直交変換である逆プライマリ垂直変換に関する処理を行う。例えば、逆プライマリ垂直変換部441は、係数データcoefIPや変換情報Tinfo等を入力とし、その係数データcoefIPに対して逆プライマリ垂直変換を行い、得られた係数データcoefIV(= tmp)を逆プライマリ水平変換部442に供給する。
例えば、逆プライマリ垂直変換部441は、逆プライマリ垂直変換の変換タイプ識別子trTypeIdxV、変換ブロックの水平方向のサイズlog2TrWidth、および変換ブロックの垂直方向のサイズlog2TrHeight等の情報を用いて、その逆プライマリ垂直変換を行う。
逆プライマリ水平変換部442は、水平方向の逆1次元直交変換である逆プライマリ水平変換に関する処理を行う。例えば、逆プライマリ水平変換部442は、係数データcoefIV(= tmp)や変換情報Tinfo等を入力とし、その係数データcoefIVに対して逆プライマリ水平変換を行い、得られた残差データresiIを演算部415に供給する。
例えば、逆プライマリ水平変換部442は、逆プライマリ水平変換の変換タイプ識別子trTypeIdxH、変換ブロックの水平方向のサイズlog2TrWidth、変換ブロックの垂直方向のサイズlog2TrHeight、およびシーケンスビット深度channelBitDepth等の情報を用いて、その逆プライマリ水平変換を行う。
なお、これらの逆セカンダリ変換部431、逆プライマリ変換部432、逆プライマリ垂直変換部441、および逆プライマリ水平変換部442は、それぞれ、自身の処理をスキップ(省略)することができる。
<逆プライマリ変換の行列式>
逆プライマリ変換部432(逆プライマリ垂直変換部441および逆プライマリ水平変換部442)は、逆プライマリ変換(逆プライマリ垂直変換および逆プライマリ水平変換)において、ベース変換行列とスパース行列とを用いた変換行列の近似を適用する。この近似を用いた逆プライマリ変換を、行列式を用いて説明する。
逆プライマリ垂直変換部441が行う逆プライマリ垂直変換を行列式で表すと以下の式(29)のようになる。なお、式(29)において、Yは、変換後の係数データを示し、Xは、変換前の係数データを示し、(TN,tgt)tは、変換行列TN,tgtの転置行列を示す。
Figure 2021141348
この式(29)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(30)のように表現することができる。
Figure 2021141348
また、逆プライマリ水平変換部442が行う逆プライマリ水平変換を行列式で表すと以下の式(31)のようになる。なお、式(31)において、Yは、変換後の係数データを示し、Xは、変換前の係数データを示し、TN,tgtは、変換行列を示す。
Figure 2021141348
この式(31)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(32)のように表現することができる。
Figure 2021141348
このような近似を行うことにより、<1.適応直交変換>等において上述したように、適応直交変換のコストの増大を抑制することができる。なお、ベース変換行列は任意であり、DCT2に限定されない。例えば、DCT2の高速アルゴリズムと同程度の処理量で演算可能な変換行列に置き換えても、DCT2の場合と同様に適応直交変換のコストの増大を抑制することができる。
<逆プライマリ垂直変換部>
図34は、逆プライマリ垂直変換部441の主な構成例を示すブロック図である。図34に示されるように、逆プライマリ垂直変換部441は、パラメータ導出部451、スイッチ452、パワーシフト部453、行列演算部454、正規化部455、およびクリップ部456を有する。
パラメータ導出部451は、変換タイプ識別子trTypeIdxV、変換ブロックの水平方向のサイズlog2TrWidth、および変換ブロックの垂直方向のサイズlog2TrHeight等の情報を入力とし、それらの情報に基づいて、逆プライマリ垂直変換処理に用いられるパラメータを導出する。
例えば、パラメータ導出部451は、上述した変換行列設定部101と同様の機能を有しており、垂直方向の1次元変換用のベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出する。また、パラメータ導出部451は、シーケンス毎に設定される逆プライマリ垂直変換における有効桁数のシフト量である逆プライマリ垂直変換シフト量invShift1を導出する。なお、逆プライマリ垂直変換シフト量invShift1が導出済みの場合、この処理は省略することができる。また、パラメータ導出部451は、係数の最小値coefMinと最大値coefMaxとを導出する。
パラメータ導出部451は、導出したパラメータを各処理部に供給する。例えば、パラメータ導出部451は、導出したベース変換行列TVを行列演算部454に供給する。また、パラメータ導出部451は、導出した逆プライマリ垂直変換シフト量invShift1を正規化部455に供給する。さらに、パラメータ導出部451は、導出したスパース行列有無フラグsparsePresentFlagをスイッチ452に供給する。また、パラメータ導出部451は、導出したスパース行列IntAXをパワーシフト部453(行列演算部461)に供給する。さらに、パラメータ導出部451は、導出したシフト量SIntAxをパワーシフト部453(正規化部462)に供給する。また、パラメータ導出部451は、導出した係数の最小値coefMinおよび最大値coefMaxをクリップ部456に供給する。
スイッチ452は、係数データcoefIPとスパース行列有無フラグsparsePresentFlagとを入力とし、周波数領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ452は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、周波数領域におけるパワーシフトが行われるように、係数データcoefIPをパワーシフト部453(行列演算部461)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ452は、周波数領域におけるパワーシフトを省略するように、係数データcoefIPをクリップ部456に供給する。
パワーシフト部453は、その係数データcoefIP、スパース行列IntAX、およびシフト量SIntAxを入力とし、周波数領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部453は、係数データcoefIPに対して周波数領域におけるパワーシフトを行い、処理後の係数データcoefIPを行列演算部454に供給する。パワーシフト部453は、行列演算部461および正規化部462を有する。
行列演算部461は、係数データcoefIPおよびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部461は、スイッチ452から供給された係数データcoefIPに対して左側からスパース行列IntAXの転置行列をかけて、中間データcoefIP'を導出する(coefIP' = (IntAx)t × coefIP)。行列演算部461は、その中間データcoefIP'を正規化部462に供給する。
正規化部462は、その中間データcoefIP'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部462は、中間データcoefIP'をシフト量SIntAxで右ビットシフトして正規化し、係数データcoefIPを導出する(coefIP = coefIP' >> SIntAx)。つまり、正規化部462は、中間データcoefIP'の有効桁数を制御する。正規化部462は、その周波数領域におけるパワーシフトが行われた係数データcoefIPを行列演算部454に供給する。
行列演算部454は、スイッチ452またはパワーシフト部453(正規化部462)から供給された係数データcoefIPおよびベース変換行列TVを入力とし、行列演算に関する処理を行う。例えば、行列演算部454は、係数データcoefIPに対して左側からベース変換行列TVの転置行列(TV)tをかけて垂直方向の1次元逆直交変換を行い、中間データtmp5を導出する(tmp5 = (TV)t × coefIP)。行列演算部454は、その中間データtmp5を正規化部455に供給する。
正規化部455は、その中間データtmp5と逆プライマリ垂直変換シフト量invShift1とを入力とし、正規化に関する処理を行う。例えば、正規化部455は、中間データtmp5を、シーケンスレベルの逆プライマリ垂直変換シフト量invShift1で右ビットシフトして正規化し、中間データtmp6を導出する(tmp6 = tmp5 >> invShift1)。つまり、正規化部455は、中間データtmp5の有効桁数を制御する。正規化部455は、その中間データtmp6をクリップ部456に供給する。
クリップ部456は、その中間データtmp6と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部456は、中間データtmp6の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部456は、中間データtmp6がクリップされて得られた係数データcoefIVを逆プライマリ水平変換部442に供給する。なお、クリップ部456は、省略してもよい。
<逆プライマリ水平変換部>
図35は、逆プライマリ水平変換部442の主な構成例を示すブロック図である。図35に示されるように、逆プライマリ水平変換部442は、パラメータ導出部471、スイッチ472、パワーシフト部473、行列演算部474、正規化部475、およびクリップ部476を有する。
パラメータ導出部471は、変換タイプ識別子trTypeIdxH、変換ブロックの水平方向のサイズlog2TrWidth、変換ブロックの垂直方向のサイズlog2TrHeight、およびシーケンスビット深度channelBitDepth等の情報を入力とし、それらの情報に基づいて、逆プライマリ水平変換処理に用いられるパラメータを導出する。
例えば、パラメータ導出部471は、上述した変換行列設定部101と同様の機能を有しており、水平方向の1次元変換用のベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出する。また、パラメータ導出部471は、シーケンス毎に設定される逆プライマリ水平変換における有効桁数のシフト量である逆プライマリ水平変換シフト量invShift2を導出する。なお、逆プライマリ水平変換シフト量invShift2が導出済みの場合、この処理は省略することができる。また、パラメータ導出部471は、係数の最小値coefMinと最大値coefMaxとを導出する。
パラメータ導出部471は、導出したパラメータを各処理部に供給する。例えば、パラメータ導出部471は、導出したベース変換行列THを行列演算部474に供給する。また、パラメータ導出部471は、導出した逆プライマリ水平変換シフト量invShift2を正規化部475に供給する。さらに、パラメータ導出部471は、導出したスパース行列有無フラグsparsePresentFlagをスイッチ472に供給する。また、パラメータ導出部471は、導出したスパース行列IntAXをパワーシフト部473(行列演算部481)に供給する。さらに、パラメータ導出部471は、導出したシフト量SIntAxをパワーシフト部473(正規化部482)に供給する。さらに、例えば、パラメータ導出部471は、導出した残差データの最小値coefMinおよび最大値coefMaxをクリップ部476に供給する。
スイッチ472は、係数データcoefIVとスパース行列有無フラグsparsePresentFlagとを入力とし、周波数領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ472は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、周波数領域におけるパワーシフトが行われるように、係数データcoefIVをパワーシフト部473(行列演算部481)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ472は、周波数領域におけるパワーシフトを省略するように、係数データcoefIVを行列演算部474に供給する。
パワーシフト部473は、その係数データcoefIV、スパース行列IntAX、およびシフト量SIntAxを入力とし、周波数領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部473は、係数データcoefIVに対して周波数領域におけるパワーシフトを行い、処理後の係数データcoefIVを行列演算部474に供給する。パワーシフト部473は、行列演算部481および正規化部482を有する。
行列演算部481は、係数データcoefIVおよびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部481は、スイッチ472から供給された係数データcoefIVに対して右側からスパース行列IntAXをかけて、中間データcoefIV'を導出する(coefIV' = coefIV × IntAx)。行列演算部481は、その中間データcoefIV'を正規化部482に供給する。
正規化部482は、その中間データcoefIV'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部482は、中間データcoefIV'をシフト量SIntAxで右ビットシフトして正規化し、係数データcoefIVを導出する(coefIV = coefIV' >> SIntAx)。つまり、正規化部482は、中間データcoefIV'の有効桁数を制御する。正規化部482は、その周波数領域におけるパワーシフトが行われた係数データcoefIVを行列演算部474に供給する。
行列演算部474は、スイッチ472またはパワーシフト部473(正規化部482)から供給された係数データcoefIVおよびベース変換行列THを入力とし、行列演算に関する処理を行う。例えば、行列演算部474は、係数データcoefIVに対して右側からベース変換行列THをかけて水平方向の1次元逆直交変換を行い、中間データtmp7を導出する(tmp7 = coefIV × TH)。行列演算部474は、その中間データtmp7を正規化部475に供給する。
正規化部475は、その中間データtmp7と逆プライマリ水平変換シフト量invShift2とを入力とし、正規化に関する処理を行う。例えば、正規化部475は、中間データtmp7を、シーケンスレベルの逆プライマリ水平変換シフト量invShift2で右ビットシフトして正規化し、中間データtmp8を導出する(tmp8 = tmp7 >> invShift2)。つまり、正規化部475は、中間データtmp7の有効桁数を制御する。正規化部475は、その中間データtmp8をクリップ部476に供給する。
クリップ部476は、その中間データtmp8と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部476は、中間データtmp8の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部476は、中間データtmp8がクリップされて得られた残差データresiIを演算部415に供給する。なお、クリップ部476は、省略してもよい。
以上のような構成を有することにより、画像復号装置400は、上述した本技術を適用した処理を行い、適応直交変換のコストの増大を抑制することができる。
<画像復号処理の流れ>
次に、以上のような画像復号装置400により実行される各処理の流れについて説明する。最初に、図36のフローチャートを参照して、画像復号処理の流れの例を説明する。
画像復号処理が開始されると、蓄積バッファ411は、ステップS401において、画像復号装置400の外部から供給される符号化データ(ビットストリーム)を取得して保持する(蓄積する)。
ステップS402において、復号部412は、その符号化データ(ビットストリーム)を復号し、量子化変換係数qcoefを得る。また、復号部412は、この復号により、符号化データ(ビットストリーム)から各種符号化パラメータをパースする(解析して取得する)。
ステップS403において、逆量子化部413は、ステップS402の処理により得られた量子化変換係数qcoefに対して、符号化側で行われた量子化の逆処理である逆量子化を行い、係数データcoefIを得る。
ステップS404において、逆直交変換部414は、ステップS403の処理により得られた係数データcoefIに対して、符号化側で行われた直交変換処理の逆処理である逆直交変換処理を行い、残差データresiIを得る。
ステップS405において、予測部419は、ステップS402においてパースされた情報に基づいて、符号化側より指定される予測方法で予測処理を実行し、フレームメモリ418に記憶されている参照画像を参照する等して、予測画像Pを生成する。
ステップS406において、演算部415は、ステップS404の処理により得られた残差データresiIと、ステップS405の処理により得られた予測画像Pとを加算し、局所復号画像Rlocalを導出する。
ステップS407において、インループフィルタ部416は、ステップS406の処理により得られた局所復号画像Rlocalに対して、インループフィルタ処理を行う。
また、ステップS408において、フレームメモリ418は、ステップS406の処理により得られた局所復号画像Rlocal、および、ステップS407の処理により得られたフィルタ処理後の局所復号画像Rlocalの内、少なくとも一方を記憶する。
ステップS409において、並べ替えバッファ417は、ステップS407の処理により得られたフィルタ処理された局所復号画像Rlocalを用いて復号画像Rを導出し、その復号画像R群の順序を復号順から再生順に並べ替える。
ステップS410において、並べ替えバッファ417は、再生順に並べ替えた復号画像R群を、動画像として画像復号装置400の外部に出力する。
ステップS410の処理が終了すると、画像復号処理が終了する。
以上のような流れの画像復号処理において、ステップS404の処理として、上述した本技術を適用した処理が行われる。したがって、この画像復号処理を実行することにより、適応直交変換のコストの増大を抑制することができる。
<逆直交変換処理の流れ>
図36のステップS404の処理において実行される逆直交変換処理の流れの例を、図37のフローチャートを参照して説明する。
逆直交変換処理が開始されると、逆直交変換部414の逆セカンダリ変換部431は、ステップS421において、逆セカンダリ変換処理を行う。
ステップS422において、逆プライマリ垂直変換部441は、逆プライマリ垂直変換処理を行う。
ステップS423において、逆プライマリ水平変換部442は、逆プライマリ水平変換処理を行う。
ステップS423の処理が終了すると、逆直交変換処理が終了し、処理は図36に戻る。
以上のような逆直交変換処理において、ステップS422やステップS423の処理として、上述した本技術を適用した処理が行われる。したがって、この逆直交変換処理を実行することにより、適応直交変換のコストの増大を抑制することができる。
なお、この逆直交変換処理の各ステップ(ステップS421乃至ステップS423)は、それぞれ、スキップ(省略)することができる。
<逆プライマリ垂直変換処理の流れ>
図37のステップS422において実行される逆プライマリ垂直変換処理の流れの例を、図38のフローチャートを参照して説明する。
逆プライマリ垂直変換処理が開始されると、逆プライマリ垂直変換部441のパラメータ導出部451は、ステップS431において、ベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部451(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS432において、パラメータ導出部451は、逆プライマリ垂直変換シフト量invShift1を導出する。例えば、パラメータ導出部451は、シーケンス毎の逆プライマリ垂直変換シフト量invShift1を、以下の式(33)のように、ステップS431において導出したベース変換行列TVの整数近似精度を表すパラメータtrMatShiftに基づいて導出する。なお、パラメータtrMatShiftは、例えば、8の値をとる。さらに、パラメータ導出部451は、係数の最小値coefMinと最大値coefMaxも導出する。
invShift1 = trMatShift + 1 ・・・(33)
ステップS433において、スイッチ452は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS434に進む。つまり、この場合、スイッチ452は、係数データcoefIPをパワーシフト部453に供給する。
ステップS434において、パワーシフト部453は、パワーシフト処理を実行し、係数データcoefIPを周波数領域においてパワーシフトする。ステップS434の処理が終了すると処理はステップS435に進む。また、ステップS433において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS434の処理が省略され、処理はステップS435に進む。つまり、この場合、スイッチ452は、係数データcoefIPを行列演算部454に供給する。
ステップS435において、行列演算部454は、例えば以下の式(34)のように、係数データcoefIPの垂直方向へベース変換行列TVを用いて逆1次元変換(逆1D変換)を実行し、中間データtmp5を導出する。つまり、行列演算部454は、係数データcoefIPに対して左側から垂直方向のベース変換行列TVの転置行列TV Tをかけて、中間データtmp5を導出する。
tmp5 = TV T×coefIP ・・・(34)
ステップS436において、正規化部455は、例えば以下の式(35)に示されるように、中間データtmp5の各係数を逆プライマリ垂直変換シフト量invShift1で正規化する。
tmp6 = ( tmp5 + offsetInvShift1 ) >> invShift1 ・・・(35)
offsetInvShift1 = 1<<(offsetInvShift1-1)
ステップS437において、クリップ部456は、例えば以下の式(36)に示されるように、中間データtmp6の値を、係数の最小値coefMin乃至係数の最大値coefMaxの範囲になるようクリップし、クリップ後の係数データcoefIV(=tmp)を導出する。
coefIV = Clip3(coefMinVal, coefMaxVal, tmp6) ・・・(36)
ステップS437の処理が終了すると、逆プライマリ垂直変換処理が終了し、処理は図37に戻る。
以上のように、逆プライマリ垂直変換処理を行うことにより、逆プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS437の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図39のフローチャートを参照して図38のステップS434において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部461は、ステップS441において、例えば以下の式(37)のように、スパース行列IntAXの転置行列と係数データcoefIPとの行列演算を行い、中間データcoefIP'を得る。つまり、行列演算部461は、係数データcoefIPの左側からスパース行列IntAXの転置行列IntAX Tをかけて、中間データcoefIP'を導出する。
coefIP' = IntAX T × coefIP ・・・(37)
ステップS442において、正規化部462は、例えば以下の式(38)のように、ステップS441の処理により導出された中間データcoefIP'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
coefIP = (coefIP' + (1 << (SIntAx - 1))) >> SIntAx ・・・(38)
ステップS442の処理が終了するとパワーシフト処理が終了し、処理は図38に戻る。
このように周波数領域におけるパワーシフトを行うことにより、逆プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<逆プライマリ水平変換処理の流れ>
図37のステップS423において実行される逆プライマリ水平変換処理の流れの例を、図40のフローチャートを参照して説明する。
逆プライマリ水平変換処理が開始されると、逆プライマリ水平変換部442のパラメータ導出部471は、ステップS451において、ベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部471(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS452において、パラメータ導出部471は、シーケンス毎の逆プライマリ水平変換シフト量invShift2を導出する。例えば、パラメータ導出部471は、シーケンス毎の逆プライマリ水平変換シフト量invShift2を、以下の式(39)のように、ベース変換行列THの整数近似精度を表すパラメータtrMatShift、係数データのレンジに関するパラメータlog2TransformRange、およびシーケンスビット深度channelBitDepthに基づいて導出する。なお、パラメータtrMatShiftは、例えば、8の値をとる。さらに、パラメータ導出部471は、係数の最小値coefMinと最大値coefMaxも導出する。
invShift2 = trMatShift + log2TransformDynamicRange - 1 - channelBitDepth
・・・(39)
ステップS453において、スイッチ472は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS454に進む。つまり、この場合、スイッチ472は、係数データcoefIVをパワーシフト部473に供給する。
ステップS454において、パワーシフト部473は、パワーシフト処理を実行し、係数データcoefIVを周波数領域においてパワーシフトする。ステップS454の処理が終了すると処理はステップS455に進む。また、ステップS453において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS454の処理が省略され、処理はステップS455に進む。つまり、この場合、スイッチ472は、係数データcoefIVを行列演算部474に供給する。
ステップS455において、行列演算部474は、例えば以下の式(40)のように、係数データcoefIVの水平方向へベース変換行列THを用いて1次元変換(1D変換)を実行し、中間データtmp7を導出する。つまり、行列演算部474は、係数データcoefIVに対して右側から水平方向のベース変換行列THをかけて、中間データtmp7を導出する。
tmp7 = coefIV×TH ・・・(40)
ステップS456において、正規化部475は、例えば以下の式(41)のように、中間データtmp7の各係数を逆プライマリ水平変換シフト量invShift2で正規化する。つまり、正規化部475は、中間データtmp7(にオフセットoffsetInvShift2を加えた値)を逆プライマリ水平変換シフト量invShift2の分だけ右方向にビットシフトする。
tmp8 = (tmp7 + offsetInvShift2) >> invShift2 ・・・(41)
offsetInvShift2 = 1<<(invShift2-1)
ステップS457において、クリップ部476は、例えば以下の式(42)のように、中間データtmp8の値を、係数の最小値coefMin乃至係数の最大値coefMaxの範囲になるようクリップし、クリップ後の残差データresiIを導出する。
resiI = Clip3(coefMinVal, coefMaxVal, tmp8) ・・・(42)
ステップS457の処理が終了すると、逆プライマリ水平変換処理が終了し、処理は図37に戻る。
以上のように、逆プライマリ水平変換処理を行うことにより、逆プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS405の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図41のフローチャートを参照して図40のステップS454において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部481は、ステップS451において、例えば以下の式(43)のように、係数データcoefIVとスパース行列IntAXとの行列演算を行い、中間データcoefIV'を得る。つまり、行列演算部481は、係数データcoefIVの右側からスパース行列IntAXをかけて、中間データcoefIV'を導出する。
coefIV' = coefIV × IntAX ・・・(43)
ステップS462において、正規化部482は、例えば以下の式(44)のように、ステップS461の処理により導出された中間データcoefIV'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
coefIV = (coefIV' + (1 << (SIntAx - 1))) >> SIntAx ・・・(44)
ステップS462の処理が終了するとパワーシフト処理が終了し、処理は図40に戻る。
このように周波数領域におけるパワーシフトを行うことにより、逆プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<8.第7の実施の形態>
<画像符号化装置>
また、本技術(変換行列の近似(方法#2))を、画像符号化装置に適用することもできる。この場合の画像符号化装置300の構成は、図22を参照して説明した場合と同様である。また、この場合の直交変換部313の構成は、図23を参照して説明した場合と同様である。
<プライマリ変換の行列式>
プライマリ変換部341(プライマリ水平変換部351およびプライマリ垂直変換部352)は、プライマリ変換(プライマリ水平変換およびプライマリ垂直変換)において、ベース変換行列とスパース行列とを用いた変換行列の近似を適用する。この近似を用いたプライマリ変換を、行列式を用いて説明する。
プライマリ水平変換部351が行うプライマリ水平変換を行列式で表すと上述した式(11)のようになる。方法#2の場合、この式(11)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(45)のように表現することができる。
Figure 2021141348
また、プライマリ垂直変換部352が行うプライマリ垂直変換を行列式で表すと上述の式(13)のようになる。方法#2の場合、この式(13)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(46)のように表現することができる。
Figure 2021141348
このような近似を行うことにより、<1.適応直交変換>等において上述したように、適応直交変換のコストの増大を抑制することができる。なお、ベース変換行列は任意であり、DCT2に限定されない。例えば、DCT2の高速アルゴリズムと同程度の処理量で演算可能な変換行列に置き換えても、DCT2の場合と同様に適応直交変換のコストの増大を抑制することができる。
なお、これらのような順方向の直交変換では、式(45)や式(46)に示されるように、空間ドメインにおいて、ある方向(水平または垂直)に対して、係数データの可逆なパワーの交換(パワーシフト)が行なわれる(空間領域パワーシフトとも称する)。すなわち、このような順方向の直交変換は、予測残差の補正処理ともみなすことができる。
<プライマリ水平変換部>
図42は、この場合のプライマリ水平変換部351の主な構成例を示すブロック図である。図42に示されるように、この場合もプライマリ水平変換部351は、図24の場合と同様に、パラメータ導出部361乃至クリップ部366を有する。
そして、パラメータ導出部361は、この場合も図24の場合と同様に、水平方向の1次元変換用のベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出し、それらを各処理部に供給する。
ただし、スイッチ364は、予測残差resiとスパース行列有無フラグsparsePresentFlagとを入力とし、空間領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ364は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、空間領域におけるパワーシフトが行われるように、予測残差resiをパワーシフト部365(行列演算部371)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ364は、空間領域におけるパワーシフトを省略するように、予測残差resiを行列演算部362に供給する。
パワーシフト部365は、予測残差resi、スパース行列IntAX、およびシフト量SIntAxを入力とし、空間領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部365は、予測残差resiに対して空間領域におけるパワーシフトを行い、処理後の予測残差resiを行列演算部362に供給する。
行列演算部371は、予測残差resiおよびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部371は、スイッチ364から供給された予測残差resiに対して右側からスパース行列IntAXの転置行列をかけて、中間データresi'を導出する(resi' = resi × (IntAX)t)。行列演算部371は、その中間データresi'を正規化部372に供給する。
正規化部372は、その中間データresi'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部372は、中間データresi'をシフト量SIntAxで右ビットシフトして正規化し、予測残差resiを導出する(resi = resi' >> SIntAx)。つまり、正規化部372は、中間データresi'の有効桁数を制御する。正規化部372は、その空間領域におけるパワーシフトが行われた予測残差resiを行列演算部362に供給する。
行列演算部362は、スイッチ364またはパワーシフト部365(正規化部372)から供給される予測残差resiとベース変換行列THとを入力とし、行列演算に関する処理を行う。例えば、行列演算部362は、予測残差resiに対して右側からベース変換行列THの転置行列(TH)tをかけて水平方向の1次元直交変換を行い、中間データtmp1を導出する(tmp1 = resi × (TH)t)。行列演算部362は、その中間データtmp1を正規化部363に供給する。
正規化部363は、その中間データtmp1とプライマリ水平変換シフト量fwdShift1とを入力とし、正規化に関する処理を行う。例えば、正規化部363は、中間データtmp1をプライマリ水平変換シフト量fwdShift1で右ビットシフトして正規化し、中間データtmp2を導出する(tmp2 = tmp1 >> fwdShift1)。つまり、正規化部363は、中間データtmp1の有効桁数を制御する。正規化部363は、その中間データtmp2をクリップ部366に供給する。
クリップ部366は、正規化部363から供給された中間データtmp2と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部366は、中間データtmp2の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部366は、中間データtmp2がクリップされて得られた係数データcoefH(=tmp)をプライマリ垂直変換部352に供給する。なお、クリップ部366は、省略してもよい。
<プライマリ垂直変換部>
図43は、この場合のプライマリ垂直変換部352の主な構成例を示すブロック図である。図25に示されるように、プライマリ垂直変換部352は、この場合もパラメータ導出部381乃至クリップ部386を有する。
そして、パラメータ導出部381は、この場合も図25の場合と同様に、垂直方向の1次元変換用のベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出し、それらを各処理部に供給する。
ただし、スイッチ384は、係数データcoefHとスパース行列有無フラグsparsePresentFlagとを入力とし、空間領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ384は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、空間領域におけるパワーシフトが行われるように、係数データcoefHをパワーシフト部385(行列演算部391)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ384は、空間領域におけるパワーシフトを省略するように、係数データcoefHを行列演算部382に供給する。
パワーシフト部385は、その係数データcoefH、スパース行列IntAX、およびシフト量SIntAxを入力とし、空間領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部385は、係数データcoefHに対して空間領域におけるパワーシフトを行い、処理後の係数データcoefHを行列演算部382に供給する。
行列演算部391は、係数データcoefHおよびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部391は、スイッチ384から供給された係数データcoefHに対して左側からスパース行列IntAXをかけて、中間データcoefH'を導出する(coefH' = IntAX × coefH)。行列演算部391は、その中間データcoefH'を正規化部392に供給する。
正規化部392は、その中間データcoefH'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部392は、中間データcoefH'をシフト量SIntAxで右ビットシフトして正規化し、係数データcoefHを導出する(coefH = coefH' >> SIntAx)。つまり、正規化部392は、中間データcoefH'の有効桁数を制御する。正規化部392は、その空間領域におけるパワーシフトが行われた係数データcoefHを行列演算部382に供給する。
行列演算部382は、係数データcoefH(= tmp)およびベース変換行列TVを入力とし、行列演算に関する処理を行う。例えば、行列演算部382は、係数データcoefHに対して左側からベース変換行列TVをかけて垂直方向の1次元直交変換を行い、中間データtmp3を導出する(tmp3 = TV × coefH)。行列演算部382は、その中間データtmp3を正規化部383に供給する。
正規化部383は、その中間データtmp3とプライマリ垂直変換シフト量fwdShift2とを入力とし、正規化に関する処理を行う。例えば、正規化部383は、中間データtmp3をプライマリ垂直変換シフト量fwdShift2で右ビットシフトして正規化し、中間データtmp4を導出する(tmp4 = tmp3 >> fwdShift2)。つまり、正規化部383は、中間データtmp3の有効桁数を制御する。正規化部383は、その中間データtmp4をクリップ部386に供給する。
クリップ部386は、正規化部383から供給された中間データtmp4と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部386は、中間データtmp4の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部386は、中間データtmp4がクリップされて得られた係数データcoefPをセカンダリ変換部342に供給する。なお、クリップ部386は、省略してもよい。
以上のような構成を有することにより、画像符号化装置300は、上述した本技術を適用した処理を行い、適応直交変換のコストの増大を抑制することができる。
<画像符号化処理等の流れ>
次に、この場合の画像符号化装置300により実行される各処理の流れについて説明する。この場合も画像符号化処理は、図26のフローチャートと同様の流れで行われる。また、この場合も直交変換処理は、図27のフローチャートと同様の流れで行われる。
<プライマリ水平変換処理の流れ>
この場合の、図27のステップS321において実行されるプライマリ水平変換処理の流れの例を、図44のフローチャートを参照して説明する。
プライマリ水平変換処理が開始されると、プライマリ水平変換部351のパラメータ導出部361は、ステップS501において、ベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部361(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS502において、パラメータ導出部361は、プライマリ水平変換シフト量fwdShift1を導出する。また、パラメータ導出部361は、係数の最小値coefMinと最大値coefMaxも導出する。
ステップS503において、スイッチ364は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS504に進む。つまり、この場合、スイッチ364は、予測残差resiをパワーシフト部365に供給する。
ステップS504において、パワーシフト部365は、パワーシフト処理を実行し、予測残差resiを空間領域においてパワーシフトする。ステップS504の処理が終了すると処理はステップS505に進む。また、ステップS503において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS504の処理が省略され、処理はステップS505に進む。つまり、この場合、スイッチ364は、予測残差resiを行列演算部362に供給する。
ステップS505において、行列演算部362は、例えば上述の式(16)のように、予測残差resiの水平方向へベース変換行列THを用いて1次元変換(1D変換)を実行し、中間データtmp1を導出する。つまり、行列演算部362は、予測残差resiに対して右側から水平方向のベース変換行列THの転置行列TH Tをかけて、中間データtmp1を導出する。
ステップS506において、正規化部363は、例えば上述の式(17)のように、中間データtmp1の各係数をプライマリ水平変換シフト量fwdShift1で正規化する。
ステップS507において、クリップ部366は、例えば上述の式(18)のように、中間データtmp2の値を、係数の最小値coefMinVal乃至係数の最大値coefMaxValの範囲になるようクリップし、クリップ後の係数データcoefHを導出する。
ステップS507の処理が終了すると、処理は図27に戻る。
以上のようにプライマリ水平変換処理を行うことにより、プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS507の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図45のフローチャートを参照して、図44のステップS504において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部371は、ステップS521において、例えば以下の式(47)のように、予測残差resiとスパース行列IntAXの転置行列IntAX Tとの行列演算を行い、中間データresi'を得る。つまり、行列演算部371は、予測残差resiの右側からスパース行列IntAXの転置行列IntAX Tをかけて、中間データresi'を導出する。
resi' = resi × IntAX T ・・・(47)
ステップS522において、正規化部372は、例えば以下の式(48)のように、ステップS521の処理により導出された中間データresi'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
resi = (resi' + (1 << (SIntAx - 1))) >> SIntAx ・・・(48)
ステップS522の処理が終了するとパワーシフト処理が終了し、処理は図44に戻る。
このように空間領域におけるパワーシフトを行うことにより、プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<プライマリ垂直変換処理の流れ>
この場合の、図27のステップS322において実行されるプライマリ垂直変換処理の流れの例を、図46のフローチャートを参照して説明する。
プライマリ垂直変換処理が開始されると、プライマリ垂直変換部352のパラメータ導出部381は、ステップS541において、ベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部381(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS542において、パラメータ導出部381は、プライマリ垂直変換シフト量fwdShift2を導出する。また、パラメータ導出部381は、係数の最小値coefMinと最大値coefMaxも導出する。
ステップS543において、スイッチ384は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS544に進む。つまり、この場合、スイッチ384は、係数データcoefHをパワーシフト部385に供給する。
ステップS544において、パワーシフト部385は、パワーシフト処理を実行し、係数データcoefHを空間領域においてパワーシフトする。ステップS544の処理が終了すると処理はステップS545に進む。また、ステップS543において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS544の処理が省略され、処理はステップS545に進む。つまり、この場合、スイッチ384は、係数データcoefHを行列演算部382に供給する。
ステップS545において、行列演算部382は、例えば上述の式(22)のように、係数データcoefHの垂直方向へベース変換行列TVを用いて1次元変換(1D変換)を実行し、中間データtmp3を導出する。つまり、行列演算部382は、係数データcoefHに対して左側から垂直方向のベース変換行列TVをかけて、中間データtmp3を導出する。
ステップS546において、正規化部383は、例えば上述の式(23)のように、中間データtmp3の各係数をプライマリ垂直変換シフト量fwdShift2で正規化する。
ステップS547において、クリップ部386は、例えば上述の式(24)に示されるように、中間データtmp4の値を、係数の最小値coefMinVal乃至係数の最大値coefMaxValの範囲になるようクリップし、クリップ後の係数データcoefPを導出する。
ステップS547の処理が終了すると、処理は図27に戻る。
以上のようにプライマリ垂直変換処理を行うことにより、プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS547の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図46のステップS544において実行されるパワーシフト処理の流れの例を、図47のフローチャートを参照して説明する。
パワーシフト処理が開始されると、行列演算部391は、ステップS561において、例えば以下の式(49)のように、スパース行列IntAXと係数データcoefHとの行列演算を行い、中間データcoefH'を得る。つまり、行列演算部391は、係数データcoefHの左側からスパース行列IntAXをかけて、中間データcoefH'を導出する。
coefH' = IntAX × coefH ・・・(49)
ステップS562において、正規化部392は、例えば以下の式(50)のように、ステップS561の処理により導出された中間データcoefH'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
coefH = (coefH' + (1 << (SIntAx - 1))) >> SIntAx ・・・(50)
ステップS562の処理が終了するとパワーシフト処理が終了し、処理は図46に戻る。
このように空間領域におけるパワーシフトを行うことにより、プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<9.第8の実施の形態>
<画像復号装置>
また、本技術(変換行列の近似(方法#2))を、画像復号装置に適用することもできる。この場合の画像復号装置400の構成は、図32を参照して説明した場合と同様である。また、この場合の逆直交変換部414の構成は、図33を参照して説明した場合と同様である。
<逆プライマリ変換の行列式>
逆プライマリ変換部432(逆プライマリ垂直変換部441および逆プライマリ水平変換部442)は、逆プライマリ変換(逆プライマリ垂直変換および逆プライマリ水平変換)において、ベース変換行列とスパース行列とを用いた変換行列の近似を適用する。この近似を用いた逆プライマリ変換を、行列式を用いて説明する。
逆プライマリ垂直変換部441が行う逆プライマリ垂直変換を行列式で表すと上述した式(29)のようになる。方法#2の場合、この式(29)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(51)のように表現することができる。
Figure 2021141348
また、逆プライマリ水平変換部442が行う逆プライマリ水平変換を行列式で表すと上述の式(13)のようになる。方法#2の場合、この式(13)は、整数精度のスパース行列IntAN,tgtとベース変換行列TN,base(ここでは、base=DCT2)とを用いて、以下の式(52)のように表現することができる。
Figure 2021141348
このような近似を行うことにより、<1.適応直交変換>等において上述したように、適応直交変換のコストの増大を抑制することができる。なお、ベース変換行列は任意であり、DCT2に限定されない。例えば、DCT2の高速アルゴリズムと同程度の処理量で演算可能な変換行列に置き換えても、DCT2の場合と同様に適応直交変換のコストの増大を抑制することができる。
<逆プライマリ垂直変換部>
図48は、この場合の逆プライマリ垂直変換部441の主な構成例を示すブロック図である。図48に示されるように、この場合も逆プライマリ垂直変換部441は、図34の場合と同様に、パラメータ導出部451乃至クリップ部456を有する。
そして、パラメータ導出部451は、この場合も図34の場合と同様に、垂直方向の1次元変換用のベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出する。また、パラメータ導出部451は、シーケンス毎に設定される逆プライマリ垂直変換における有効桁数のシフト量である逆プライマリ垂直変換シフト量invShift1を導出する。なお、逆プライマリ垂直変換シフト量invShift1が導出済みの場合、この処理は省略することができる。さらに、パラメータ導出部451は、係数の最小値coefMinと最大値coefMaxとを導出する。パラメータ導出部451は、この場合も図34の場合と同様に、導出したこれらのパラメータを各処理部に供給する。
ただし、行列演算部454は、係数データcoefIPおよびベース変換行列TVを入力とし、行列演算に関する処理を行う。例えば、行列演算部454は、係数データcoefIPに対して左側からベース変換行列TVの転置行列(TV)tをかけて垂直方向の1次元逆直交変換を行い、中間データtmp5を導出する(tmp5 = (TV)t × coefIP)。行列演算部454は、その中間データtmp5を正規化部455に供給する。
正規化部455は、その中間データtmp5と逆プライマリ垂直変換シフト量invShift1とを入力とし、正規化に関する処理を行う。例えば、正規化部455は、中間データtmp5を、シーケンスレベルの逆プライマリ垂直変換シフト量invShift1で右ビットシフトして正規化し、中間データtmp6を導出する(tmp6 = tmp5 >> invShift1)。つまり、正規化部455は、中間データtmp5の有効桁数を制御する。正規化部455は、その中間データtmp6をスイッチ452に供給する。
スイッチ452は、係数データcoefIPとスパース行列有無フラグsparsePresentFlagとを入力とし、空間領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ452は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、空間領域におけるパワーシフトが行われるように、中間データtmp6をパワーシフト部453(行列演算部461)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ452は、空間領域におけるパワーシフトを省略するように、中間データtmp6をクリップ部456に供給する。
パワーシフト部453は、その中間データtmp6、スパース行列IntAX、およびシフト量SIntAxを入力とし、空間領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部453は、中間データtmp6に対して空間領域におけるパワーシフトを行い、処理後の中間データtmp6をクリップ部456に供給する。
行列演算部461は、中間データtmp6およびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部461は、スイッチ452から供給された中間データtmp6に対して左側からスパース行列IntAXの転置行列IntAX Tをかけて、中間データtmp6'を導出する(tmp6' = (IntAX)t × tmp6)。行列演算部461は、その中間データtmp6'を正規化部462に供給する。
正規化部462は、その中間データtmp6'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部462は、中間データtmp6'をシフト量SIntAxで右ビットシフトして正規化し、中間データtmp6を導出する(tmp6= tmp6' >> SIntAx)。つまり、正規化部462は、中間データtmp6'の有効桁数を制御する。正規化部462は、その空間領域におけるパワーシフトが行われた中間データtmp6をクリップ部456に供給する。
クリップ部456は、その中間データtmp6と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部456は、中間データtmp6の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部456は、中間データtmp6がクリップされて得られた係数データcoefIVを逆プライマリ水平変換部442に供給する。なお、クリップ部456は、省略してもよい。
<逆プライマリ水平変換部>
図49は、この場合の逆プライマリ水平変換部442の主な構成例を示すブロック図である。図49に示されるように、逆プライマリ水平変換部442は、この場合もパラメータ導出部471乃至クリップ部476を有する。
そして、パラメータ導出部471は、この場合も図35の場合と同様に、水平方向の1次元変換用のベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを導出する。また、パラメータ導出部471は、シーケンス毎に設定される逆プライマリ水平変換における有効桁数のシフト量である逆プライマリ水平変換シフト量invShift2を導出する。なお、逆プライマリ水平変換シフト量invShift2が導出済みの場合、この処理は省略することができる。さらに、パラメータ導出部471は、係数の最小値coefMinと最大値coefMaxとを導出する。パラメータ導出部471は、この場合も図35の場合と同様に、導出したこれらのパラメータを各処理部に供給する。
ただし、行列演算部474は、係数データcoefIVおよびベース変換行列THを入力とし、行列演算に関する処理を行う。例えば、行列演算部474は、係数データcoefIVに対して右側からベース変換行列THをかけて水平方向の1次元逆直交変換を行い、中間データtmp7を導出する(tmp7 = coefIV × TH)。行列演算部474は、その中間データtmp7を正規化部475に供給する。
正規化部475は、その中間データtmp7と逆プライマリ水平変換シフト量invShift2とを入力とし、正規化に関する処理を行う。例えば、正規化部475は、中間データtmp7を、シーケンスレベルの逆プライマリ水平変換シフト量invShift2で右ビットシフトして正規化し、中間データtmp8を導出する(tmp8 = tmp7 >> invShift2)。つまり、正規化部475は、中間データtmp7の有効桁数を制御する。正規化部475は、その中間データtmp8をスイッチ472に供給する。
スイッチ472は、中間データtmp8とスパース行列有無フラグsparsePresentFlagとを入力とし、空間領域におけるパワーシフトの実行制御に関する処理を行う。例えば、スイッチ472は、スパース行列有無フラグsparsePresentFlagが真(true)の場合、空間領域におけるパワーシフトが行われるように、中間データtmp8をパワーシフト部473(行列演算部481)に供給する。また、スパース行列有無フラグsparsePresentFlagが偽(False)の場合、スイッチ472は、空間領域におけるパワーシフトを省略するように、中間データtmp8をクリップ部476に供給する。
パワーシフト部473は、その中間データtmp8、スパース行列IntAX、およびシフト量SIntAxを入力とし、空間領域におけるパワーシフトに関する処理を行う。例えば、パワーシフト部473は、中間データtmp8に対して空間領域におけるパワーシフトを行い、処理後の中間データtmp8をクリップ部476に供給する。
行列演算部481は、中間データtmp8およびスパース行列IntAXを入力とし、行列演算に関する処理を行う。例えば、行列演算部481は、スイッチ472から供給された中間データtmp8に対して右側からスパース行列IntAXをかけて、中間データtmp8'を導出する(tmp8' = tmp8 × IntAx)。行列演算部481は、その中間データtmp8'を正規化部482に供給する。
正規化部482は、その中間データtmp8'およびシフト量SIntAxを入力とし、正規化に関する処理を行う。例えば、正規化部482は、中間データtmp8'をシフト量SIntAxで右ビットシフトして正規化し、中間データtmp8を導出する(tmp8 = tmp8' >> SIntAx)。つまり、正規化部482は、中間データtmp8'の有効桁数を制御する。正規化部482は、その空間領域におけるパワーシフトが行われた中間データtmp8をクリップ部476に供給する。
クリップ部476は、その中間データtmp8と、係数の最小値coefMinおよび最大値coefMaxとを入力とし、クリップ処理に関する処理を行う。例えば、クリップ部476は、中間データtmp8の値を、係数の最小値coefMinおよび最大値coefMaxの範囲内にクリップする。クリップ部476は、中間データtmp8がクリップされて得られた残差データresiIを演算部415に供給する。なお、クリップ部476は、省略してもよい。
以上のような構成を有することにより、画像復号装置400は、上述した本技術を適用した処理を行い、適応直交変換のコストの増大を抑制することができる。
<画像復号処理等の流れ>
次に、この場合の画像復号装置400により実行される各処理の流れについて説明する。この場合も画像復号処理は、図36のフローチャートと同様の流れで行われる。また、この場合も逆直交変換処理は、図37のフローチャートと同様の流れで行われる。
<逆プライマリ垂直変換処理の流れ>
この場合の、図37のステップS422において実行される逆プライマリ垂直変換処理の流れの例を、図50のフローチャートを参照して説明する。
逆プライマリ垂直変換処理が開始されると、逆プライマリ垂直変換部441のパラメータ導出部451は、ステップS601において、ベース変換行列TV、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部451(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS602において、パラメータ導出部451は、逆プライマリ垂直変換シフト量invShift1を導出する。また、パラメータ導出部451は、係数の最小値coefMinと最大値coefMaxも導出する。
ステップS603において、行列演算部454は、例えば上述の式(34)のように、係数データcoefIPの垂直方向へベース変換行列TVを用いて1次元変換(1D変換)を実行し、中間データtmp5を導出する。つまり、行列演算部454は、係数データcoefIPに対して左側から垂直方向のベース変換行列TVの転置行列TV Tをかけて、中間データtmp5を導出する。
ステップS604において、正規化部455は、例えば上述の式(35)のように、中間データtmp5の各係数を逆プライマリ垂直変換シフト量invShift1で正規化し、中間データtmp6を導出する。
ステップS605において、スイッチ452は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS606に進む。つまり、この場合、スイッチ452は、中間データtmp6をパワーシフト部453に供給する。
ステップS606において、パワーシフト部453は、パワーシフト処理を実行し、中間データtmp6を空間領域においてパワーシフトする。ステップS606の処理が終了すると処理はステップS607に進む。また、ステップS605において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS606の処理が省略され、処理はステップS607に進む。つまり、この場合、スイッチ452は、中間データtmp6をクリップ部456に供給する。
ステップS607において、クリップ部456は、例えば上述の式(36)に示されるように、中間データtmp6の値を、係数の最小値coefMinVal乃至係数の最大値coefMaxValの範囲になるようクリップし、クリップ後の係数データcoefIVを導出する。
ステップS607の処理が終了すると、処理は図37に戻る。
以上のように逆プライマリ垂直変換処理を行うことにより、逆プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS607の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図51のフローチャートを参照して図50のステップS606において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部461は、ステップS621において、例えば以下の式(53)のように、スパース行列IntAXの転置行列IntAX Tと中間データtmp6との行列演算を行い、中間データtmp6'を得る。つまり、行列演算部461は、中間データtmp6の左側からスパース行列IntAXの転置行列IntAX Tをかけて、中間データtmp6'を導出する。
tmp6' = IntAX T × coefIP ・・・(53)
ステップS622において、正規化部462は、例えば以下の式(54)のように、ステップS621の処理により導出された中間データtmp6'をスパース行列IntAXに対応するシフト量SIntAxで正規化する。
coefIV = tmp6 = (tmp6' + (1 << (SIntAx - 1))) >> SIntAx ・・・(54)
ステップS622の処理が終了するとパワーシフト処理が終了し、処理は図50に戻る。
このように空間領域におけるパワーシフトを行うことにより、逆プライマリ垂直変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<逆プライマリ水平変換処理の流れ>
また、この場合の、図37のステップS423において実行される逆プライマリ水平変換処理の流れの例を、図52のフローチャートを参照して説明する。
逆プライマリ水平変換処理が開始されると、逆プライマリ水平変換部442のパラメータ導出部471は、ステップS641において、ベース変換行列TH、スパース行列有無フラグsparsePresentFlag、スパース行列IntAX、および、そのスパース行列IntAXに対応するシフト量SIntAxを設定する。例えば、パラメータ導出部471(の変換行列設定部101)は、図13のフローチャートを参照して説明した設定処理を実行し、これらのパラメータを設定する。
ステップS642において、パラメータ導出部471は、シーケンス毎の逆プライマリ水平変換シフト量invShift2を導出する。さらに、パラメータ導出部471は、係数の最小値coefMinと最大値coefMaxも導出する。
ステップS643において、行列演算部474は、例えば上述の式(40)のように、係数データcoefIVの水平方向へベース変換行列THを用いて1次元変換(1D変換)を実行し、中間データtmp7を導出する。
ステップS644において、正規化部475は、例えば上述の式(41)のように、中間データtmp7の各係数を逆プライマリ水平変換シフト量invShift2で正規化し、中間データtmp8を導出する。
ステップS645において、スイッチ472は、スパース行列有無フラグsparsePresentFlagが真(True)であるか否かを判定する。真(True)であると判定された場合、処理はステップS646に進む。つまり、この場合、スイッチ472は、中間データtmp8をパワーシフト部473に供給する。
ステップS646において、パワーシフト部473は、パワーシフト処理を実行し、中間データtmp8を空間領域においてパワーシフトする。ステップS646の処理が終了すると処理はステップS647に進む。また、ステップS645において、スパース行列有無フラグsparsePresentFlagが偽(False)であると判定された場合、ステップS646の処理が省略され、処理はステップS647に進む。つまり、この場合、スイッチ472は、中間データtmp8をクリップ部476に供給する。
ステップS647において、クリップ部476は、例えば上述の式(42)のように、中間データtmp8の値を、係数の最小値coefMin乃至係数の最大値coefMaxの範囲になるようクリップし、クリップ後の残差データresiIを導出する。
ステップS647の処理が終了すると、逆プライマリ水平変換処理が終了し、処理は図37に戻る。
以上のように、逆プライマリ水平変換処理を行うことにより、逆プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができるので、適応直交変換のコストの増大を抑制することができる。
なお、ステップS647の処理は省略するようにしてもよい。
<パワーシフト処理の流れ>
次に、図53のフローチャートを参照して図52のステップS646において実行されるパワーシフト処理の流れの例を説明する。
パワーシフト処理が開始されると、行列演算部481は、ステップS661において、例えば以下の式(55)のように、中間データtmp8とスパース行列IntAXとの行列演算を行い、中間データtmp8'を得る。つまり、行列演算部481は、中間データtmp8の右側からスパース行列IntAXをかけて、中間データtmp8'を導出する。
tmp8' = tmp8 × IntAX ・・・(55)
ステップS662において、正規化部482は、例えば以下の式(56)のように、ステップS661の処理により導出された中間データtmp8'をスパース行列IntAXに対応するシフト量SIntAxで正規化し、残差データresiIを導出する。
resiI = tmp8 = (tmp8' + (1 << (SIntAx - 1))) >> SIntAx ・・・(56)
ステップS662の処理が終了するとパワーシフト処理が終了し、処理は図52に戻る。
このように空間領域におけるパワーシフトを行うことにより、逆プライマリ水平変換の変換行列を所定のベース変換行列とスパース行列とを用いて近似することができる。したがって、適応直交変換のコストの増大を抑制することができる。
<10.付記>
<コンピュータ>
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
図54は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
図54に示されるコンピュータ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に、あらかじめインストールしておくこともできる。
<情報・処理の単位>
以上において説明した各種情報が設定されるデータ単位や、各種処理が対象とするデータ単位は、それぞれ任意であり上述した例に限定されない。例えば、これらの情報や処理が、それぞれ、TU(Transform Unit)、TB(Transform Block)、PU(Prediction Unit)、PB(Prediction Block)、CU(Coding Unit)、LCU(Largest Coding Unit)、サブブロック、ブロック、タイル、スライス、ピクチャ、シーケンス、またはコンポーネント毎に設定されるようにしてもよいし、それらのデータ単位のデータを対象とするようにしてもよい。もちろん、このデータ単位は、情報や処理毎に設定され得るものであり、全ての情報や処理のデータ単位が統一されている必要はない。なお、これらの情報の格納場所は任意であり、上述したデータ単位のヘッダやパラメータセット等に格納されるようにしてもよい。また、複数個所に格納されるようにしてもよい。
<制御情報>
以上の各実施の形態において説明した本技術に関する制御情報を符号化側から復号側に伝送するようにしてもよい。例えば、上述した本技術を適用することを許可(または禁止)するか否かを制御する制御情報(例えばenabled_flag)を伝送するようにしてもよい。また、例えば、上述した本技術を適用する対象(または適用しない対象)を示す制御情報を伝送するようにしてもよい。例えば、本技術を適用する(または、適用を許可若しくは禁止する)ブロックサイズ(上限若しくは下限、またはその両方)、フレーム、コンポーネント、またはレイヤ等を指定する制御情報を伝送するようにしてもよい。
<本技術の適用対象>
本技術は、任意の画像符号化・復号方式に適用することができる。つまり、上述した本技術と矛盾しない限り、変換(逆変換)、量子化(逆量子化)、符号化(復号)、予測等、画像符号化・復号に関する各種処理の仕様は任意であり、上述した例に限定されない。また、上述した本技術と矛盾しない限り、これらの処理の内の一部を省略してもよい。
また本技術は、複数の視点(ビュー(view))の画像を含む多視点画像の符号化・復号を行う多視点画像符号化・復号システムに適用することができる。その場合、各視点(ビュー(view))の符号化・復号において、本技術を適用するようにすればよい。
さらに本技術は、所定のパラメータについてスケーラビリティ(scalability)機能を有するように複数レイヤ化(階層化)された階層画像の符号化・復号を行う階層画像符号化(スケーラブル符号化)・復号システムに適用することができる。その場合、各階層(レイヤ)の符号化・復号において、本技術を適用するようにすればよい。
上述した実施の形態に係る画像処理装置、画像符号化装置、および画像復号装置は、例えば、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機(例えばテレビジョン受像機や携帯電話機)、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置(例えばハードディスクレコーダやカメラ)などの、様々な電子機器に応用され得る。
また、本技術は、任意の装置またはシステムを構成する装置に搭載するあらゆる構成、例えば、システムLSI(Large Scale Integration)等としてのプロセッサ(例えばビデオプロセッサ)、複数のプロセッサ等を用いるモジュール(例えばビデオモジュール)、複数のモジュール等を用いるユニット(例えばビデオユニット)、ユニットにさらにその他の機能を付加したセット(例えばビデオセット)等(すなわち、装置の一部の構成)として実施することもできる。
さらに、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、コンピュータ、AV(Audio Visual)機器、携帯型情報処理端末、IoT(Internet of Things)デバイス等の任意の端末に対して、画像(動画像)に関するサービスを提供するクラウドサービスに適用することもできる。
なお、本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
例えば、本技術は、観賞用コンテンツ等の提供の用に供されるシステムやデバイスに適用することができる。また、例えば、本技術は、交通状況の監理や自動運転制御等、交通の用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、セキュリティの用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、機械等の自動制御の用に供されるシステムやデバイスに適用することができる。さらに、例えば、本技術は、農業や畜産業の用に供されるシステムやデバイスにも適用することができる。また、本技術は、例えば火山、森林、海洋等の自然の状態や野生生物等を監視するシステムやデバイスにも適用することができる。さらに、例えば、本技術は、スポーツの用に供されるシステムやデバイスにも適用することができる。
<その他>
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の2状態を識別する際に用いる情報だけでなく、3以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の2値であってもよいし、3値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報(フラグも含む)は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
また、符号化データ(ビットストリーム)に関する各種情報(メタデータ等)は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の記録媒体(または同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、1フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを1つのデータにまとめるといった、複数の物を1つにまとめることを意味し、上述の「関連付ける」の1つの方法を意味する。
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
また、例えば、本技術は、装置またはシステムを構成するあらゆる構成、例えば、システムLSI(Large Scale Integration)等としてのプロセッサ、複数のプロセッサ等を用いるモジュール、複数のモジュール等を用いるユニット、ユニットにさらにその他の機能を付加したセット等(すなわち、装置の一部の構成)として実施することもできる。
なお、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
なお、本技術は以下のような構成も取ることができる。
(1) ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成する復号部と、
ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、前記復号部により生成された前記係数データに対して、前記ベース変換行列と異なる変換タイプに対応する逆直交変換を適用する逆直交変換部と
を備える画像処理装置。
(2) 前記ベース変換行列の変換タイプの数は1つである
(1)に記載の画像処理装置。
(3) 前記ベース変換行列は、DCT2である
(2)に記載の画像処理装置。
(4) 前記異なる変換タイプは、前記直交変換に設定される全ての変換タイプである
(1)乃至(3)のいずれかに記載の画像処理装置。
(5) 前記逆直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、垂直方向の逆プライマリ変換を適用する
(1)乃至(4)のいずれかに記載の画像処理装置。
(6) 前記逆直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、水平方向の逆プライマリ変換を適用する
(1)乃至(5)のいずれかに記載の画像処理装置。
(7) 前記逆直交変換部は、
前記復号部により生成された前記係数データに対して、前記スパース行列を用いて周波数領域のパワーシフトを行い、
前記パワーシフトが行われた前記係数データに対して、前記ベース変換行列を用いて逆直交変換を行う
(1)乃至(6)のいずれかに記載の画像処理装置。
(8) 前記逆直交変換部は、
前記スパース行列の転置行列と入力信号との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行い、
前記ベース変換行列の転置行列と前記シフト演算の結果との行列の積を求める行列演算を行うことにより、
垂直方向の逆プライマリ変換を適用する
(7)に記載の画像処理装置。
(9) 前記逆直交変換部は、
入力信号と前記スパース行列との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行い、
前記シフト演算の結果と前記ベース変換行列との行列の積を求める行列演算を行うことにより、
水平方向の逆プライマリ変換を適用する
(7)または(8)に記載の画像処理装置。
(10) 前記逆直交変換部は、
前記復号部により生成された前記係数データに対して、前記ベース変換行列を用いて逆直交変換を行い、
前記逆直交変換が行われて得られた予測残差に対して、前記スパース行列を用いて空間領域のパワーシフトを行う
(1)乃至(9)のいずれかに記載の画像処理装置。
(11) 前記逆直交変換部は、
前記ベース変換行列の転置行列と入力信号との行列の積を求める行列演算を行い、
前記スパース行列の転置行列と前記行列演算の結果との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行うことにより、
垂直方向の逆プライマリ変換を適用する
(10)に記載の画像処理装置。
(12) 前記逆直交変換部は、
入力信号と前記ベース変換行列との行列の積を求める行列演算を行い、
前記行列演算の結果と前記スパース行列との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行うことにより、
水平方向の逆プライマリ変換を適用する
(10)または(11)に記載の画像処理装置。
(13) ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成し、
ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、生成された前記係数データに対して、前記ベース変換行列と異なる変換タイプに対応する逆直交変換を適用する
画像処理方法。
(14) ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、画像の予測残差に対して、前記ベース変換行列と異なる変換タイプに対応する直交変換を適用して、係数データを生成する直交変換部と、
前記直交変換部により生成された前記係数データを符号化して、ビットストリームを生成する符号化部と
を備える画像処理装置。
(15) 前記ベース変換行列は、DCT2である
(14)に記載の画像処理装置。
(16) 前記直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、水平方向のプライマリ変換を適用する
(14)または(15)に記載の画像処理装置。
(17) 前記直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、垂直方向のプライマリ変換を適用する
(14)乃至(16)のいずれかに記載の画像処理装置。
(18) 前記直交変換部は、
前記予測残差に対して、前記ベース変換行列を用いて直交変換を行い、
前記直交変換が行われて得られた係数データに対して、前記スパース行列を用いて周波数領域のパワーシフトを行う
(14)乃至(17)のいずれかに記載の画像処理装置。
(19) 前記直交変換部は、
前記予測残差に対して、前記スパース行列を用いて空間領域のパワーシフトを行い、
前記パワーシフトが行われた前記予測残差に対して、前記ベース変換行列を用いて直交変換を行う
(14)乃至(18)のいずれかに記載の画像処理装置。
(20) ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、画像の予測残差に対して、前記ベース変換行列と異なる変換タイプに対応する直交変換を適用して、係数データを生成し、
生成された前記係数データを符号化して、ビットストリームを生成する
画像処理方法。
100 画像処理装置, 101 変換行列設定部, 102 変換部, 111 サイズ判定部, 112 ベース変換行列設定部, 113 フラグ設定部, 114 スパース行列設定部, 121 ベース変換行列LUT, 122 スパース行列LUT, 131 係数変換部, 132 スイッチ, 133 パワーシフト部, 134 出力部, 150 画像処理装置, 152 逆変換部, 161 スイッチ, 162 パワーシフト部, 163 係数逆変換部, 164 出力部, 300 画像符号化装置, 301 制御部, 313 直交変換部, 318 逆直交変換部, 341 プライマリ変換部, 342 セカンダリ変換部, 351 プライマリ水平変換部, 352 プライマリ垂直変換部, 361 パラメータ導出部, 362 行列演算部, 363 正規化部, 364 スイッチ, 365 パワーシフト部, 366 クリップ部, 371 行列演算部, 372 正規化部, 381 パラメータ導出部, 382 行列演算部, 383 正規化部, 384 スイッチ, 385 パワーシフト部, 386 クリップ部, 391 行列演算部, 392 正規化部, 400 画像復号装置, 414 逆直交変換部, 431 逆セカンダリ変換部, 432 逆プライマリ変換部, 441 逆プライマリ垂直変換部, 442 逆プライマリ水平変換部, 451 パラメータ導出部, 452 スイッチ, 453 パワーシフト部, 454 行列演算部, 455 正規化部, 456 クリップ部, 461 行列演算部, 462 正規化部, 471 パラメータ導出部, 472 スイッチ, 473 パワーシフト部, 474 行列演算部, 475 正規化部, 476 クリップ部, 481 パワーシフト部, 482 正規化部

Claims (20)

  1. ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成する復号部と、
    ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、前記復号部により生成された前記係数データに対して、前記ベース変換行列と異なる変換タイプに対応する逆直交変換を適用する逆直交変換部と
    を備える画像処理装置。
  2. 前記ベース変換行列の変換タイプの数は1つである
    請求項1に記載の画像処理装置。
  3. 前記ベース変換行列は、DCT2である
    請求項2に記載の画像処理装置。
  4. 前記異なる変換タイプは、前記直交変換に設定される全ての変換タイプである
    請求項1に記載の画像処理装置。
  5. 前記逆直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、垂直方向の逆プライマリ変換を適用する
    請求項1に記載の画像処理装置。
  6. 前記逆直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、水平方向の逆プライマリ変換を適用する
    請求項1に記載の画像処理装置。
  7. 前記逆直交変換部は、
    前記復号部により生成された前記係数データに対して、前記スパース行列を用いて周波数領域のパワーシフトを行い、
    前記パワーシフトが行われた前記係数データに対して、前記ベース変換行列を用いて逆直交変換を行う
    請求項1に記載の画像処理装置。
  8. 前記逆直交変換部は、
    前記スパース行列の転置行列と入力信号との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行い、
    前記ベース変換行列の転置行列と前記シフト演算の結果との行列の積を求める行列演算を行うことにより、
    垂直方向の逆プライマリ変換を適用する
    請求項7に記載の画像処理装置。
  9. 前記逆直交変換部は、
    入力信号と前記スパース行列との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行い、
    前記シフト演算の結果と前記ベース変換行列との行列の積を求める行列演算を行うことにより、
    水平方向の逆プライマリ変換を適用する
    請求項7に記載の画像処理装置。
  10. 前記逆直交変換部は、
    前記復号部により生成された前記係数データに対して、前記ベース変換行列を用いて逆直交変換を行い、
    前記逆直交変換が行われて得られた予測残差に対して、前記スパース行列を用いて空間領域のパワーシフトを行う
    請求項1に記載の画像処理装置。
  11. 前記逆直交変換部は、
    前記ベース変換行列の転置行列と入力信号との行列の積を求める行列演算を行い、
    前記スパース行列の転置行列と前記行列演算の結果との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行うことにより、
    垂直方向の逆プライマリ変換を適用する
    請求項10に記載の画像処理装置。
  12. 前記逆直交変換部は、
    入力信号と前記ベース変換行列との行列の積を求める行列演算を行い、
    前記行列演算の結果と前記スパース行列との行列の積を求める行列演算を行い、前記行列演算の結果に対してシフト演算を行うことにより、
    水平方向の逆プライマリ変換を適用する
    請求項10に記載の画像処理装置。
  13. ビットストリームを復号して、画像の予測残差が直交変換された係数データを生成し、
    ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、生成された前記係数データに対して、前記ベース変換行列と異なる変換タイプに対応する逆直交変換を適用する
    画像処理方法。
  14. ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、画像の予測残差に対して、前記ベース変換行列と異なる変換タイプに対応する直交変換を適用して、係数データを生成する直交変換部と、
    前記直交変換部により生成された前記係数データを符号化して、ビットストリームを生成する符号化部と
    を備える画像処理装置。
  15. 前記ベース変換行列は、DCT2である
    請求項14に記載の画像処理装置。
  16. 前記直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、水平方向のプライマリ変換を適用する
    請求項14に記載の画像処理装置。
  17. 前記直交変換部は、前記ベース変換行列と前記スパース行列とを用いて、垂直方向のプライマリ変換を適用する
    請求項14に記載の画像処理装置。
  18. 前記直交変換部は、
    前記予測残差に対して、前記ベース変換行列を用いて直交変換を行い、
    前記直交変換が行われて得られた係数データに対して、前記スパース行列を用いて周波数領域のパワーシフトを行う
    請求項14に記載の画像処理装置。
  19. 前記直交変換部は、
    前記予測残差に対して、前記スパース行列を用いて空間領域のパワーシフトを行い、
    前記パワーシフトが行われた前記予測残差に対して、前記ベース変換行列を用いて直交変換を行う
    請求項14に記載の画像処理装置。
  20. ベース変換行列と前記ベース変換行列に対応するスパース行列とを用いて、画像の予測残差に対して、前記ベース変換行列と異なる変換タイプに対応する直交変換を適用して、係数データを生成し、
    生成された前記係数データを符号化して、ビットストリームを生成する
    画像処理方法。
JP2018106463A 2018-06-01 2018-06-01 画像処理装置および方法 Pending JP2021141348A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018106463A JP2021141348A (ja) 2018-06-01 2018-06-01 画像処理装置および方法
PCT/JP2019/019643 WO2019230444A1 (ja) 2018-06-01 2019-05-17 画像処理装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018106463A JP2021141348A (ja) 2018-06-01 2018-06-01 画像処理装置および方法

Publications (1)

Publication Number Publication Date
JP2021141348A true JP2021141348A (ja) 2021-09-16

Family

ID=68696746

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018106463A Pending JP2021141348A (ja) 2018-06-01 2018-06-01 画像処理装置および方法

Country Status (2)

Country Link
JP (1) JP2021141348A (ja)
WO (1) WO2019230444A1 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11368720B2 (en) * 2016-05-13 2022-06-21 Sony Corporation Image processing apparatus and method

Also Published As

Publication number Publication date
WO2019230444A1 (ja) 2019-12-05

Similar Documents

Publication Publication Date Title
US10848788B2 (en) Multi-type-tree framework for video coding
JP7283389B2 (ja) 画像処理装置および方法
WO2021125309A1 (ja) 画像処理装置および方法
US11632551B2 (en) Image coding method based on secondary transform and apparatus therefor
US20210144376A1 (en) Image processing apparatus and method
US11445218B2 (en) Image processing apparatus and method
CN116684642A (zh) 图像编解码方法、存储介质和数据发送方法
US20240121438A1 (en) Image processing device and method
US20240040137A1 (en) Image processing apparatus and method
US20230179779A1 (en) Image processing device and method
CN113228685B (zh) 用于基于二次变换编码图像的方法及其装置
JPWO2019159697A1 (ja) 画像処理装置および方法
WO2021100588A1 (ja) 画像処理装置および方法
KR20240018432A (ko) 화상 처리 장치 및 방법
WO2019230444A1 (ja) 画像処理装置および方法
WO2020066641A1 (ja) 画像処理装置および方法
JP7494858B2 (ja) 画像処理装置および方法
WO2023195330A1 (ja) 画像処理装置および方法
WO2021117866A1 (ja) 画像処理装置および方法
US20240163437A1 (en) Image processing device and method
WO2020129697A1 (ja) 画像処理装置および方法