(57)【要約】  本開示は、直交変換および逆直交変換に必要なメモリ容量の増大を抑制することができるようにする画像処理装置および方法に関する。変換行列の一部を構成する部分行列を用いてその変換行列を導出し、その導出された変換行列を用いて、画像の予測残差を直交変換し、その予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する。本開示は、例えば、画像処理装置、画像符号化装置、または画像復号装置等に適用することができる。
2019102889.tif 000002
【特許請求の範囲】
【請求項１】
変換行列の一部を構成する部分行列を用いて前記変換行列を導出する導出部と、
前記導出部により導出された前記変換行列を用いて、画像の予測残差を直交変換する直交変換部と、
前記直交変換部により前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部と
を備える画像処理装置。
【請求項２】
前記導出部は、ルックアップテーブルに格納される前記部分行列を用いて、前記変換行列を導出する
請求項１に記載の画像処理装置。
【請求項３】
前記直交変換部は、前記導出部により導出された前記変換行列を用いて前記予測残差に対するプライマリ変換を行い、さらに、前記プライマリ変換の結果に対してセカンダリ変換を行う
請求項１に記載の画像処理装置。
【請求項４】
前記導出部は、水平方向の１次元直交変換用の前記変換行列と、垂直方向の１次元直交変換用の前記変換行列とを導出し、
前記直交変換部は、前記プライマリ変換として、
前記導出部により導出された水平方向の１次元直交変換用の前記変換行列を用いて、前記水平方向の１次元直交変換を行い、さらに、
前記導出部により導出された垂直方向の１次元直交変換用の前記変換行列を用いて、前記垂直方向の１次元直交変換を行う
請求項３に記載の画像処理装置。
【請求項５】
前記導出部は、前記部分行列を、前記変換行列の中心を通る所定の方向の軸を中心としてフリップして前記変換行列の残りの部分行列を導出することにより、前記変換行列を導出する
請求項１に記載の画像処理装置。
【請求項６】
前記導出部は、さらに、フリップされた前記部分行列の要素の符号を反転して、前記変換行列を導出する
請求項５に記載の画像処理装置。
【請求項７】
前記部分行列は、前記変換行列の左半分の部分行列または右半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の行方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の行ベクトルの符号を反転して、前記変換行列の右半分の部分行列または左半分の部分行列を導出することにより、前記変換行列を導出するように構成される
請求項１に記載の画像処理装置。
【請求項８】
前記部分行列は、前記変換行列の上半分の部分行列または下半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の列方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の列ベクトルの符号を反転して、前記変換行列の下半分の部分行列または上半分の部分行列を導出することにより、前記変換行列を導出するように構成される
請求項１に記載の画像処理装置。
【請求項９】
前記部分行列は、前記変換行列の上半分の部分行列または下半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の下半分の部分行列または上半分の部分行列を導出することにより、前記変換行列を導出するように構成される
請求項１に記載の画像処理装置。
【請求項１０】
前記部分行列は、前記変換行列の右上三角部分の部分行列または左下三角部分の部分行列であり、
前記導出部は、前記部分行列を転置して、前記変換行列の左下三角部分の部分行列または右上三角部分の部分行列を導出することにより、前記変換行列を導出するように構成される
請求項１に記載の画像処理装置。
【請求項１１】
前記部分行列は、前記変換行列の左上三角部分の部分行列または右下三角部分の部分行列であり、
前記導出部は、前記部分行列を、前記変換行列の右上端と左下端を結ぶ対角線を軸とする斜め方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の右下三角部分の部分行列または左上三角部分の部分行列を導出することにより、前記変換行列を導出するように構成される
請求項１に記載の画像処理装置。
【請求項１２】
前記部分行列は、前記変換行列の左上４分の１の部分行列であり、
前記導出部は、
前記部分行列を、前記変換行列の行方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の行ベクトルの符号を反転して、前記変換行列の右上４分の１の部分行列を導出し、
前記部分行列を、前記変換行列の列方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の列ベクトルの符号を反転して、前記変換行列の左下４分の１の部分行列を導出し、
前記部分行列を、前記変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の右下４分の１の部分行列を導出することにより、
前記変換行列を導出するように構成される
請求項１に記載の画像処理装置。
【請求項１３】
前記導出部は、前記部分行列を用いて第１の変換行列を導出し、さらに、導出した前記第１の変換行列を用いて第２の変換行列を導出し、
前記直交変換部は、前記導出部により導出された前記第２の変換行列を用いて、前記予測残差を直交変換する
請求項１に記載の画像処理装置。
【請求項１４】
前記直交変換部は、Quad-Tree Block Structure、または、QTBT（Quad Tree Plus Binary Tree） Block StructureのTU（Transform Unit）を処理単位として、前記予測残差の直交変換を行う
請求項１に記載の画像処理装置。
【請求項１５】
前記符号化部は、Quad-Tree Block Structure、または、QTBT（Quad Tree Plus Binary Tree） Block StructureのCU（Coding Unit）を処理単位として、前記係数データの符号化を行う
請求項１に記載の画像処理装置。
【請求項１６】
変換行列の一部を構成する部分行列を用いて前記変換行列を導出し、
導出された前記変換行列を用いて、画像の予測残差を直交変換し、
前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する
画像処理方法。
【請求項１７】
ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、
変換行列の一部を構成する部分行列を用いて前記変換行列を導出する導出部と、
前記導出部により導出された前記変換行列を用いて、前記復号部により得られた前記係数データを逆直交変換する逆直交変換部と
を備える画像処理装置。
【請求項１８】
前記逆直交変換部は、前記復号部により得られた前記係数データに対する逆セカンダリ変換を行い、さらに、前記導出部により導出された前記変換行列を用いて、前記逆セカンダリ変換の結果に対して逆プライマリ変換を行う
請求項１７に記載の画像処理装置。
【請求項１９】
前記導出部は、水平方向の逆１次元直交変換用の前記変換行列と、垂直方向の逆１次元直交変換用の前記変換行列とを導出し、
前記逆直交変換部は、前記逆プライマリ変換として、
前記導出部により導出された水平方向の逆１次元直交変換用の前記変換行列を用いて、前記水平方向の逆１次元直交変換を行い、さらに、
前記導出部により導出された垂直方向の逆１次元直交変換用の前記変換行列を用いて、前記垂直方向の逆１次元直交変換を行う
請求項１８に記載の画像処理装置。
【請求項２０】
前記導出部は、前記部分行列を、前記変換行列の中心を通る所定の方向の軸を中心としてフリップして前記変換行列の残りの部分行列を導出することにより、前記変換行列を導出する
請求項１７に記載の画像処理装置。
【請求項２１】
前記導出部は、前記部分行列を用いて第１の変換行列を導出し、さらに、導出した前記第１の変換行列を用いて第２の変換行列を導出し、
前記逆直交変換部は、前記導出部により導出された前記第２の変換行列を用いて、前記係数データを逆直交変換する
請求項１７に記載の画像処理装置。
【請求項２２】
前記復号部は、Quad-Tree Block Structure、または、QTBT（Quad Tree Plus Binary Tree） Block StructureのCU（Coding Unit）を処理単位として、前記ビットストリームの復号を行う
請求項１７に記載の画像処理装置。
【請求項２３】
前記逆直交変換部は、Quad-Tree Block Structure、または、QTBT（Quad Tree Plus Binary Tree） Block StructureのTU（Transform Unit）を処理単位として、前記係数データの逆直交変換を行う
請求項１７に記載の画像処理装置。
【請求項２４】
ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、
変換行列の一部を構成する部分行列を用いて前記変換行列を導出し、
導出された前記変換行列を用いて、得られた前記係数データを逆直交変換する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および方法に関し、特に、直交変換および逆直交変換に必要なメモリ容量の増大を抑制することができるようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
従来、輝度について、TU（Transform Unit）単位毎の、水平方向のプライマリ変換PThor（プライマリ水平変換とも称する）および垂直方向のプライマリ変換PTver（プライマリ垂直変換とも称する）毎に、適応的に複数の異なる直交変換から、プライマリ変換を選択する適応プライマリ変換（AMT: Adaptive Multiple Core Transforms）が開示されている（例えば、非特許文献１参照）。【０００３】
非特許文献１では、プライマリ変換の候補として、DCT-II, DST-VII, DCT-VIII, DST-I, DCT-VIの５つの１次元直交変換がある。また、さらに、DST-IVおよびIDT（Identity Transform: １次元変換スキップ）の２つの１次元直交変換を追加し、計７つの１次元直交変換をプライマリ変換の候補とすることが提案されている（例えば、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】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
【非特許文献２】V. Lorcy, P. Philippe, "Proposed improvements to the Adaptive multiple Core transform", JVET-C0022, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 3rd Meeting: Geneva, CH, 26 May - 1 June 2016
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、これらの方法の場合、プライマリ変換の全変換行列の保持に要するLUT（Look Up Table）のサイズが増大してしまうおそれがあった。すなわち、このプライマリ変換のハードウエア実装を考えた場合、変換行列の係数の保持に要するメモリサイズが増大するおそれがあった。【０００６】
本開示は、このような状況に鑑みてなされたものであり、直交変換および逆直交変換に必要なメモリ容量の増大を抑制することができるようにするものである。
【課題を解決するための手段】
【０００７】
本技術の一側面の画像処理装置は、変換行列の一部を構成する部分行列を用いて前記変換行列を導出する導出部と、前記導出部により導出された前記変換行列を用いて、画像の予測残差を直交変換する直交変換部と、前記直交変換部により前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部とを備える画像処理装置である。【０００８】
本技術の一側面の画像処理方法は、変換行列の一部を構成する部分行列を用いて前記変換行列を導出し、導出された前記変換行列を用いて、画像の予測残差を直交変換し、前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する画像処理方法である。【０００９】
本技術の他の側面の画像処理装置は、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、変換行列の一部を構成する部分行列を用いて前記変換行列を導出する導出部と、前記導出部により導出された前記変換行列を用いて、前記復号部により得られた前記係数データを逆直交変換する逆直交変換部とを備える画像処理装置である。【００１０】
本技術の他の側面の画像処理方法は、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、変換行列の一部を構成する部分行列を用いて前記変換行列を導出し、導出された前記変換行列を用いて、得られた前記係数データを逆直交変換する画像処理方法である。【００１１】
本技術の一側面の画像処理装置および方法においては、変換行列の一部を構成する部分行列が用いられてその変換行列が導出され、その導出された変換行列が用いられて、画像の予測残差が直交変換され、その予測残差が直交変換されて得られた係数データが符号化され、ビットストリームが生成される。【００１２】
本技術の他の側面の画像処理装置および方法においては、ビットストリームが復号され、画像の予測残差が直交変換された係数データが得られ、変換行列の一部を構成する部分行列が用いられてその変換行列が導出され、その導出された変換行列が用いられて、その得られた係数データが逆直交変換される。
【発明の効果】
【００１３】
本開示によれば、画像を処理することができる。特に、直交変換および逆直交変換に必要なメモリ容量の増大を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】変換セットと選択される直交変換との対応関係を示す図である。
【図２】直交変換のタイプと、用いられる関数との対応関係を示す図である。
【図３】変換セットと予測モードとの対応関係を示す図である。
【図４】LUTに格納される直交変換のタイプの例を示す図である。
【図５】HEVCにおける変換行列の保持に要するLUTサイズの例を示す図である。
【図６】変換行列の保持に要するLUTサイズの例を示す図である。
【図７】変換行列間の類似性の例を説明する図である。
【図８】フリップにより代替可能な変換タイプの例を説明する図である。
【図９】転置により代替可能な変換タイプの例を説明する図である。
【図１０】変換行列の代替の主な具体例の一覧を示す図である。
【図１１】画像符号化装置の主な構成例を示すブロック図である。
【図１２】直交変換部の主な構成例を示すブロック図である。
【図１３】画像符号化処理の流れの例を説明するフローチャートである。
【図１４】直交変換処理の流れの例を説明するフローチャートである。
【図１５】画像復号装置の主な構成例を示すブロック図である。
【図１６】逆直交変換部の主な構成例を示すブロック図である。
【図１７】画像復号処理の流れの例を説明するフローチャートである。
【図１８】逆直交変換処理の流れの例を説明するフローチャートである。
【図１９】変換タイプ導出の例を示す図である。
【図２０】変換タイプ導出の具体例を示す図である。
【図２１】変換行列の保持に要するLUTサイズの例を示す図である。
【図２２】プライマリ変換部の主な構成例を示すブロック図である。
【図２３】プライマリ水平変換部の主な構成例を示すブロック図である。
【図２４】変換行列導出部の主な構成例を示すブロック図である。
【図２５】プライマリ垂直変換部の主な構成例を示すブロック図である。
【図２６】変換行列導出部の主な構成例を示すブロック図である。
【図２７】プライマリ変換処理の流れの例を説明するフローチャートである。
【図２８】プライマリ水平変換処理の流れの例を説明するフローチャートである。
【図２９】要素毎の演算表現の例を示す図である。
【図３０】変換行列導出処理の流れの例を説明するフローチャートである。
【図３１】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図３２】プライマリ垂直変換処理の流れの例を説明するフローチャートである。
【図３３】要素毎の演算表現の例を示す図である。
【図３４】逆プライマリ変換部の主な構成例を示すブロック図である。
【図３５】逆プライマリ垂直変換部の主な構成例を示すブロック図である。
【図３６】変換行列導出部の主な構成例を示すブロック図である。
【図３７】逆プライマリ水平変換部の主な構成例を示すブロック図である。
【図３８】変換行列導出部の主な構成例を示すブロック図である。
【図３９】逆プライマリ変換処理の流れの例を説明するフローチャートである。
【図４０】逆プライマリ変換選択処理の流れの例を説明するフローチャートである。
【図４１】逆プライマリ垂直変換処理の流れの例を説明するフローチャートである。
【図４２】逆プライマリ水平変換処理の流れの例を説明するフローチャートである。
【図４３】変換タイプ導出の例を示す図である。
【図４４】変換タイプ導出の具体例を示す図である。
【図４５】変換行列の保持に要するLUTサイズの例を示す図である。
【図４６】変換行列導出部の主な構成例を示すブロック図である。
【図４７】変換行列導出部の主な構成例を示すブロック図である。
【図４８】変換行列導出部の主な構成例を示すブロック図である。
【図４９】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図５０】変換行列導出部の主な構成例を示すブロック図である。
【図５１】変換行列導出部の主な構成例を示すブロック図である。
【図５２】変換タイプ導出の例を示す図である。
【図５３】変換行列の保持に要するLUTサイズの例を示す図である。
【図５４】変換行列導出処理の流れの例を説明するフローチャートである。
【図５５】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図５６】変換タイプ導出の例を示す図である。
【図５７】変換行列の保持に要するLUTサイズの例を示す図である。
【図５８】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図５９】変換タイプ導出の例を示す図である。
【図６０】変換行列の保持に要するLUTサイズの例を示す図である。
【図６１】変換行列導出処理の流れの例を説明するフローチャートである。
【図６２】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図６３】２次元直交変換の空間対称性について説明する図である。
【図６４】水平方向の対称性について説明する図である。
【図６５】垂直方向の対称性について説明する図である。
【図６６】水平方向・垂直方向の対称性について説明する図である。
【図６７】予測残差の変換を伴う変換行列の代替の主な具体例の一覧を示す図である。
【図６８】変換行列の保持に要するLUTサイズの例を示す図である。
【図６９】プライマリ変換部の主な構成例を示すブロック図である。
【図７０】プライマリ変換処理の流れの例を説明するフローチャートである。
【図７１】予測残差置換操作処理の流れの例を説明するフローチャートである。
【図７２】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図７３】逆プライマリ変換部の主な構成例を示すブロック図である。
【図７４】逆プライマリ変換処理の流れの例を説明するフローチャートである。
【図７５】変換行列の保持に要するLUTサイズの例を示す図である。
【図７６】変換行列導出部の主な構成例を示すブロック図である。
【図７７】変換行列導出部の主な構成例を示すブロック図である。
【図７８】変換行列導出処理の流れの例を説明するフローチャートである。
【図７９】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図８０】変換行列導出部の主な構成例を示すブロック図である。
【図８１】変換行列導出部の主な構成例を示すブロック図である。
【図８２】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図８３】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図８４】部分行列を用いた変換行列の導出について説明する図である。
【図８５】部分行列から導出する変換行列の主な具体例の一覧を示す図である。
【図８６】変換行列導出の様子の例を示す図である。
【図８７】変換行列導出の様子の例を示す図である。
【図８８】変換行列導出の様子の例を示す図である。
【図８９】変換行列導出の様子の例を示す図である。
【図９０】変換行列導出の様子の例を示す図である。
【図９１】変換行列導出の様子の例を示す図である。
【図９２】変換行列導出部の主な構成例を示すブロック図である。
【図９３】変換行列導出部の主な構成例を示すブロック図である。
【図９４】変換行列導出処理の流れの例を説明するフローチャートである。
【図９５】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図９６】変換行列導出部の主な構成例を示すブロック図である。
【図９７】変換行列導出部の主な構成例を示すブロック図である。
【図９８】変換行列の保持に要するLUTサイズの例を示す図である。
【図９９】変換行列導出部の主な構成例を示すブロック図である。
【図１００】変換行列導出処理の流れの例を説明するフローチャートである。
【図１０１】変換タイプ識別子に対する変換タイプの割り当ての例を示す図である。
【図１０２】コンピュータの主な構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本開示を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．適応プライマリ変換  ［００１６］
２．第１の実施の形態（変換行列からの変換行列導出）  ［００４１］
２−１．共通コンセプト
２−２．実施例１−１
２−３．実施例１−２
２−４．実施例１−３
２−５．実施例１−４
２−６．実施例１−５
３．第２の実施の形態（予測残差変換）  ［０５６１］
３−１．共通コンセプト
３−２．実施例２−１
３−３．実施例２−２
３−４．実施例２−３
３−５．実施例２−４
４．第３の実施の形態（部分行列からの変換行列導出）  ［０７３４］
４−１．共通コンセプト
５．第４の実施の形態（実施の形態の組み合わせ）  ［０８４０］
５−１．共通コンセプト
６．付記
【００１６】
＜１．適応プライマリ変換＞
＜技術内容・技術用語をサポートする文献等＞
本技術で開示される範囲は、実施例に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
【００１７】
非特許文献１：（上述）
非特許文献３：TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU（International Telecommunication Union）, "Advanced video coding for generic audiovisual services", H.264, 04/2017
非特許文献４：TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU（International Telecommunication Union）, "High efficiency video coding", H.265, 12/2016
【００１８】
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、非特許文献４に記載されているQuad-Tree Block Structure、非特許文献１に記載されているQTBT（Quad Tree Plus Binary Tree） Block Structureが実施例において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。また、例えば、パース（Parsing）、シンタックス（Syntax）、セマンティクス（Semantics）等の技術用語についても同様に、実施例において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。
【００１９】
また、本明細書において、画像（ピクチャ）の部分領域や処理単位として説明に用いる「ブロック」（処理部を示すブロックではない）は、特に言及しない限り、ピクチャ内の任意の部分領域を示し、その大きさ、形状、および特性等は限定されない。例えば、「ブロック」には、上述の非特許文献１、非特許文献３、および非特許文献４に記載の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等）のサイズとの比または差分によってブロックサイズを指定するようにしてもよい。例えば、シンタックス要素等としてブロックサイズを指定する情報を伝送する場合に、その情報として、上述のような間接的にサイズを指定する情報を用いるようにしてもよい。このようにすることにより、その情報の情報量を低減させることができ、符号化効率を向上させることができる場合もある。また、このブロックサイズの指定には、ブロックサイズの範囲の指定（例えば、許容されるブロックサイズの範囲の指定等）も含む。
【００２１】
＜適応プライマリ変換＞
非特許文献１に記載のテストモデル（JEM4（Joint Exploration Test Model 4））においては、輝度の変換ブロックについて、水平方向のプライマリ変換PThor（プライマリ水平変換とも称する）、および垂直方向のプライマリ変換PTver（プライマリ垂直変換とも称する）毎に、適応的に複数の異なる１次元直交変換から、プライマリ変換を選択する適応プライマリ変換（AMT（Adaptive Multiple Core Transforms））が開示されている。
【００２２】
具体的には、輝度の変換ブロックについて、適応プライマリ変換を実施するか否かを示す適応プライマリ変換フラグapt_flagが０（偽）の場合には、例えば図１に示される表（LUT_TrSetToTrTypIdx）のように、プライマリ変換として、DCT（Discrete Cosine Transform）-II、またはDST（Discrete Sine Transform）-VIIがモード情報によって一意に決定される（TrSetIdx = 4）。
【００２３】
適応プライマリ変換フラグapt_flagが１（真）の場合であって、処理対象の輝度の変換ブロックを含むカレントCU（Coding Unit）がイントラCUである場合、図１に示される表のように、水平方向（x方向）と垂直方向（y方向）のそれぞれについてのプライマリ変換の候補となる直交変換を含む変換セットTrSetが、図１に示す３つの変換セットTrSet（TrSetIdx = 0,1,2）の中から選択される。なお、図１に示されるDST-VIIやDCT-VIII等は、直交変換のタイプを示しており、それぞれ、図２の表に示されるような関数が用いられる。
【００２４】
この変換セットTrSetは、図３に示されるモード情報と変換セットの対応表（のイントラ予測モード情報）に基づいて一意に決定される。例えば、以下の式（１）および式（２）のように、各変換セットTrSetH, TrSetVに対して、対応する変換セットTrSetを指定する変換セット識別子TrSetIdxを設定するように実施される。
【００２５】
【数１】
2019102889.tif 000003
【００２６】
ここで、TrSetHは、プライマリ水平変換PThorの変換セットを示し、TrSetVは、プライマリ垂直変換PTverの変換セットを示し、ルックアップテーブルLUT_IntraModeToTrSetは、図３の対応表である。ルックアップテーブルLUT_IntraModeToTrSet[][]の１番目の配列は、イントラ予測モードIntraModeを引数とし、２番目の配列は、{H=0, V=1}を引数とする。
【００２７】
例えば、イントラ予測モード番号19（IntraMode == 19）の場合、プライマリ水平変換PThorの変換セットTrSetH（プライマリ水平変換セットとも称する）として、図１の表に示される変換セット識別子TrSetIdx = 0の変換セットが選択され、プライマリ垂直変換PTverの変換セットTrSetV（プライマリ垂直変換セットとも称する）として、図１の表に示される変換セット識別子TrSetIdx=2の変換セットが選択される。
【００２８】
なお、適応プライマリ変換フラグapt_flagが１（真）の場合であって、処理対象の輝度の変換ブロックを含むカレントCUがインターCUである場合、プライマリ水平変換の変換セットTrSetHおよびプライマリ垂直変換の変換セットTrSetVには、インターCU専用の変換セットInterTrSet（TrSetIdx = 3）を割り当てる。
【００２９】
続いて、水平方向と垂直方向のそれぞれについて、選択された変換セットTrSetのうち、どの直交変換を適用するかを、プライマリ水平変換指定フラグpt_hor_flagおよびプライマリ垂直変換指定フラグpt_ver_flagの内の対応する方によって選択する。
【００３０】
例えば、以下の式（３）および式（４）のように、プライマリ{水平，垂直}変換セットTrSet{H,V}と、プライマリ{水平，垂直}変換指定フラグpt_{hor,ver}_flagとを引数として、図１に示される変換セットの定義表(LUT_TrSetToTrTypeIdx)から導出する。
【００３１】
【数２】
2019102889.tif 000004
【００３２】
例えば、イントラ予測モード番号34（IntraMode == 34）（すなわち、プライマリ水平変換セットTraSetHが０）であり、プライマリ水平変換指定フラグpt_hor_flagが０である場合、図１の変換セット定義表（LUT_TrSetToTrTypeIdx）から、式（３）の変換タイプ識別子TrTypeIdxHの値は４であり、該変換タイプ識別子TrTypeIdxHの値に対応する変換タイプTrTypeHは、図２を参照して、DST-VIIである。つまり、変換セット識別子TrSetIdxが０の変換セットのDST-VIIがプライマリ水平変換PThorの変換タイプとして選択される。また、プライマリ水平変換指定フラグpt_hor_flagが１の場合、DCT-VIIIが変換タイプとして選択される。なお、変換タイプTrTypeを選択するとは、変換タイプ識別子TrTypeIdxを介して、該変換タイプ識別子TrTypeIdxで指定される変換タイプを選択することを含む。
【００３３】
なお、プライマリ水平変換指定フラグpt_hor_flagおよびプライマリ垂直変換指定フラグpt_ver_flagからプライマリ変換識別子pt_idxが、以下の式（５）に基づいて導出される。すなわち、プライマリ変換識別子pt_idxの上位１bitは、プライマリ垂直変換指定フラグの値に対応し、下位１bitは、プライマリ水平変換指定フラグの値に対応する。
【００３４】
【数３】
2019102889.tif 000005
【００３５】
導出されたプライマリ変換識別子pt_idxのbin列に対して、算術符号化を適用して、ビット列を生成することで、符号化が実施される。なお、適応プライマリ変換フラグapt_flag、およびプライマリ変換識別子pt_idxは、輝度の変換ブロックにおいてシグナルされる。
【００３６】
以上のように、非特許文献１では、プライマリ変換の候補として、DCT-II（DCT2）, DST-VII（DST7）, DCT-VIII（DCT8）, DST-I（DST1）, DCT-V（DCT5）の５つの１次元直交変換が提案されている。また、非特許文献２においては、それらに加えて、さらに、DST-IV（DST4）およびIDT（Identity Transform：１次元変換スキップ）の２つの１次元直交変換が追加され、計７つの１次元直交変換をプライマリ変換の候補とすることが提案されている。
【００３７】
つまり、非特許文献１の場合、図４に示されるように、プライマリ変換の候補として、１次元直交変換がLUTに格納される。また、非特許文献２の場合、それらに加えて、さらに、DST-IV（DST4）およびIDTもLUTに格納される（図４参照）。
【００３８】
HEVC（High Efficiency Video Coding）の場合、変換行列の保持に必要なLUT（Look Up Table：ルックアップテーブル）のサイズは、図５に示される表のようになる。つまり、LUTのサイズは合計約1.3KBとなる。これに対して、非特許文献１に記載の方法の場合、例えばDCT2は、2/4/8/16/32/64/128点のサイズ毎の変換行列をLUT上に保持する必要がある。また、その他の１次元変換（DST7/DST1/DCT8）は、4/8/16/32/64点のサイズ毎の変換行列をLUT上に保持する必要がある。この場合、変換行列の各係数のビット精度を10bitと仮定すると、プライマリ変換の全変換行列の保持に必要なLUTのサイズは、図６のＡに示されるようになる。つまり、この場合のLUTのサイズは合計約53KBとなる。すなわち、この場合のLUTのサイズは、HEVCの場合に対して約50倍に増大する。
【００３９】
同様に、非特許文献２に記載の方法の場合、プライマリ変換の全変換行列の保持に要するLUTのサイズは、図６のＢに示される表のようになる。つまり、この場合のLUTのサイズは合計約67KBとなる。すなわち、この場合のLUTのサイズは、HEVCの場合に対して約60倍に増大する。
【００４０】
プライマリ変換のハードウエア実装を考えた場合、LUTのサイズは記憶容量（メモリ容量）に反映される。つまり、非特許文献１や非特許文献２に記載の方法の場合、HEVCの場合に比べて、回路規模（変換行列の係数の保持に必要なメモリ容量）が約50倍乃至60倍程度に増大するおそれがあった。
【００４１】
＜２．第１の実施の形態＞
＜２−１．共通コンセプト＞
＜変換行列の導出＞
そこで、第１の変換行列を用いて第２の変換行列を導出し、その導出された第２の変換行列を用いて、画像の予測残差を直交変換し、その予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成するようにする。
【００４２】
例えば、画像処理装置において、第１の変換行列を用いて第２の変換行列を導出する導出部と、その導出部により導出された第２の変換行列を用いて、画像の予測残差を直交変換する直交変換部と、その直交変換部により予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部とを備えるようにする。
【００４３】
このようにすることにより、変換行列を他の変換行列から導出することができるので、直交変換のために用意する変換行列の数の増大を抑制することができ、直交変換に必要なメモリ容量の増大を抑制することができる。
【００４４】
また、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、第１の変換行列を用いて第２の変換行列を導出し、その導出された第２の変換行列を用いて、その得られた係数データを逆直交変換するようにする。
【００４５】
例えば、画像処理装置において、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、第１の変換行列を用いて第２の変換行列を導出する導出部と、その導出部により導出された第２の変換行列を用いて、その復号部により得られた係数データを逆直交変換する逆直交変換部とを備えるようにする。
【００４６】
このようにすることにより、変換行列を他の変換行列から導出することができるので、逆直交変換のために用意する変換行列の数の増大を抑制することができ、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【００４７】
＜変換行列の特性＞
変換行列の主な役割の１つは、DC成分の方向に向けて低次（特に０次）の周波数成分の信号を偏らせることであり、その周波数成分の集め方が重要な特性となる。周波数成分をどのように偏らせるかは、低次（特に０次）の基底ベクトル（行ベクトル）の波形成分が重要となる。つまり、この基底ベクトルの波形成分が似たような傾向にある変換行列同士は、直交変換・逆直交変換について、似たような性能を期待することができる（周波数成分の偏らせ方が似ている）。
【００４８】
そこで、変換行列の低次（特に０次）の基底ベクトル（行ベクトル）の波形に着目する。例えば、図７の変換行列３０において、枠３１内の低次（特に０次）の行ベクトルの波形（各要素の値の傾向）を、グラフ３２のように示すとする。
【００４９】
グラフ３２は、図中左側程、より低周波成分の要素の値（の傾向）を示し、図中右側程、より高周波成分の要素の値（の傾向）を示す。また、グラフ３２は、図中上側程、値が大きいことを示し、図中下側程、値が小さいことを示す。なお、グラフ３２の上下方向の中央が０を示し、中央より上側が正の値、中央より下側が負の値を示す。
【００５０】
グラフ３２の波形３２Ａは、変換行列３０の０次の行ベクトルの波形を示している。この波形３２Ａに示されるように、この場合、変換行列３０の０次の行ベクトルは、低周波成分から高周波成分に向かって値が大きくなる傾向を有する。
【００５１】
また、例えば、図７の変換行列３０において、枠３３内の低次（特に０次）の列ベクトルの波形（各要素の値の傾向）を、グラフ３４のように示すとする。グラフ３４は、図中上側程、より低周波成分の要素の値（の傾向）を示し、図中下側程、より高周波成分の要素の値（の傾向）を示す。また、グラフ３４は、図中左側程、値が大きいことを示し、図中右側程、値が小さいことを示す。なお、グラフ３４の左右方向の中央が０を示し、中央より左側が正の値、中央より右側が負の値を示す。
【００５２】
グラフ３４の波形３４Ａは、変換行列３０の０次の列ベクトルの波形を示している。この波形３４Ａに示されるように、この場合、変換行列３０の０次の列ベクトルは、中間の周波成分においてピークを有する（つまり、低周波側においてより低周波成分に向かって値が小さくなり、高周波側においてより高周波成分に向かって値が小さくなる傾向を有する）。
【００５３】
なお、本明細書においては、変換行列３０の０次の列ベクトルの波形を、グラフ３５のように転置した状態で表す場合もある。グラフ３５の構造は、グラフ３２と同様である。波形３５Ａは、波形３４Ａと等価である。
【００５４】
上述のように、このような低次（特に０次）の基底ベクトル（行ベクトル）の波形が類似する変換行列同士は、似たような性能を有する。換言するに、変換行列は、低次（特に０次）の基底ベクトル（行ベクトル）の波形が類似する他の変換行列によって代替することができる。したがって、これを利用することにより、LUTに格納する変換行列の数の増大を抑制することができる。
【００５５】
ここで、非特許文献１や非特許文献２に記載の変換タイプに着目すると、これらの変換タイプの変換行列の０次の行ベクトルや０次の列ベクトルの波形は、４つの型（タイプ）に分類することができる。図８にその例を示す。
【００５６】
１つ目のタイプは、フラット型である。このフラット型は、各周波数成分において値が略一様である波形のタイプである。２つ目のタイプは、増加型である。この増加型は、低周波成分から高周波成分に向かって値が増大する傾向にある波形のタイプである。３つ目のタイプは、減少型である。この減少型は、低周波成分から高周波成分に向かって値が減少する傾向にある波形のタイプである。４つ目のタイプは、山型である。この山型は、途中にピーク（最大値）を有する傾向にある波形のタイプである。つまり、この山型の場合、波形は、低周波成分側でより低周波成分に向かって値が減少するとともに、高周波成分側でより高周波成分に向かって値が減少する傾向にある。
【００５７】
なお、これらの各タイプは、波形のおおよその形を示すものであり、完全に一致する必要はない。例えば、増加型の場合、波形は、全体として、低周波側から高周波側に向かって値が大きくなる傾向にあればよく、低周波側から高周波側に向かって厳密に単調増加していなくてもよい。
【００５８】
同様に、減少型の場合、波形は、全体として、低周波側から高周波側に向かって値が小さくなる傾向にあればよく、低周波側から高周波側に向かって厳密に単調減少していなくてもよい。
【００５９】
同様に、山型の場合、波形は、全体として中央付近においてピーク（最大値）を有し、その両側において、そのピークから離れる方向に値が減少する傾向にあればよく、ピークの両側においてピークから離れる方向に値が単調減少している必要は無い。また、ピークは、１成分により形成されなくてもよく、例えば複数の成分からピークのおおよその位置や値が特定できるようなものであってもよい。また、ピークの位置は厳密に中央でなくてもよい。
【００６０】
同様に、フラット型の場合、波形は、全体として値が略一様であればよく、厳密にフラットである必要は無い。つまり、値に多少のばらつきがあってもよい。換言するに、他の３タイプに分類できないものをフラット型としてもよい。
【００６１】
以上の波形の分類は一例であり、上述の例に限定されない。つまり、上述した以外のタイプに波形を分類するようにしてもよく、分類するタイプの数も任意であり、上述の４種に限定されない。なお、この分類は本技術の説明の便宜上行うものであり、実際の処理として行うものではない。
【００６２】
この分類に従うと、図８に示されるように、DCT2の変換行列の０次行ベクトルの波形はフラット型に分類され、０次列ベクトルの波形は、減少型に分類される。また、DST7の変換行列の０次行ベクトルの波形は増加型に分類され、０次列ベクトルの波形は、山型に分類される。また、DCT8の変換行列の０次行ベクトルの波形は減少型に分類され、０次列ベクトルの波形は、減少型に分類される。また、DCT5の変換行列の０次行ベクトルの波形はフラット型に分類され、０次列ベクトルの波形は、フラット型に分類される。なお、DST4の変換行列の０次行ベクトルの波形は増加型に分類され、０次列ベクトルの波形は、増加型に分類される。
【００６３】
上述のように、変換行列は、０次の行ベクトルの波形が類似する他の変換行列によって代替することができる。つまり、０次の行ベクトルの波形が同型の変換タイプは、お互いに変換行列を代替することができる。
【００６４】
つまり、導出部が、上述の第１の変換行列を用いて第２の変換行列を導出する際に、最低次行ベクトルが所望のタイプの波形を有する第２の変換行列を導出するようにしてもよい。このようにすることにより、直交変換・逆直交変換のために用意する変換行列の数の増大を抑制することができ、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【００６５】
例えば、導出部が、第１の変換行列を用いて、最低次行ベクトルがフラット型の波形を有する第２の変換行列を導出するようにしてもよい。このようにすることにより、導出した第２の変換行列により、最低次行ベクトルの波形がフラット型の変換行列を代替することができる。また、例えば、導出部が、第１の変換行列を用いて、最低次行ベクトルが増加型の波形を有する第２の変換行列を導出するようにしてもよい。このようにすることにより、導出した第２の変換行列により、最低次行ベクトルの波形が増加型の変換行列を代替することができる。
【００６６】
また、例えば、導出部が、第１の変換行列を用いて、最低次行ベクトルが減少型の波形を有する第２の変換行列を導出するようにしてもよい。このようにすることにより、導出した第２の変換行列により、最低次行ベクトルの波形が減少型の変換行列を代替することができる。また、例えば、導出部が、第１の変換行列を用いて、最低次行ベクトルが山型の波形を有する第２の変換行列を導出するようにしてもよい。このようにすることにより、導出した第２の変換行列により、最低次行ベクトルの波形が山型の変換行列を代替することができる。
【００６７】
例えば、図８において、DST7、DST4、DST8、DST3は、いずれも０次の行ベクトルの波形が増加型であるので、お互いに変換行列を代替することができる。つまり、互いに異なる変換タイプの変換行列であっても、代替することができる。
【００６８】
つまり、導出部が、上述の第１の変換行列を用いて第２の変換行列を導出する際に、第１の変換行列とは異なる変換タイプの第２の変換行列を導出するようにしてもよい。このようにすることにより、直交変換・逆直交変換のために用意する変換タイプの数の増大を抑制することができ、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【００６９】
なお、その導出の際、導出部が、第１の変換行列と行数および列数が同一の第２の変換行列を導出するようにしてもよい。行数および列数を変化させる場合、波形のタイプが意図せずに変化する可能性がある。したがって、行数および列数を第１の変換行列と同一とすることにより、波形のタイプの意図しない変化が生じる可能性を抑制することができ、第２の変換行列の導出をより容易に行うことができる。
【００７０】
なお、行列は、要素に対する操作を容易に行うことができる。行列の要素に対する操作には、例えば、要素の並び替え等がある。より具体的には、例えば、行列は、その要素群の並び順を所定の方向にフリップ（反転）したり、要素群を転置して行と列とを入れ替えたりすることができる。なお、転置は、行列の左上端と右下端とを結ぶ対角線を軸とするフリップ（反転）と等価である。すなわち、転置はフリップの一部とも言える。また、各要素の符号を反転（正から負、負から正）することも容易である。
【００７１】
このような操作を利用することにより、０次の行ベクトルの波形（のタイプ）を意図的に変化させることができる。例えば、０次の行ベクトルの波形が増加型の行列を行方向にフリップすると、その０次の行ベクトルの波形は減少型に変化する。逆に、０次の行ベクトルの波形が減少型の行列を行方向にフリップすると、その０次の行ベクトルの波形は増加型に変化する。
【００７２】
つまり、図８に示されるように、０次の行ベクトルの波形が増加型の変換タイプ（例えば、DST7、DST4、DST8、DST3）の変換行列を行方向にフリップすることにより、０次の行ベクトルの波形が減少型の変換タイプ（例えば、DCT7、DCT4、DCT8、DCT3）の変換行列を代替可能な変換行列を得ることができる。
【００７３】
また、例えば、行列を転置すると、０次の行ベクトルの波形のタイプと０次の列ベクトルの波形のタイプとが入れ替わる。つまり、転置により、行列の０次の行ベクトルの波形が、転置前の行列の０次の列ベクトルの波形と同タイプになる。
【００７４】
例えば、図９に示されるように、０次の列ベクトルの波形が減少型であるDCT2（DCT6）の変換行列を転置することにより、０次の行ベクトルの波形が減少型の変換タイプ（DCT3、DCT7、DCT4、DCT8）の変換行列を代替可能な変換行列を得ることができる。また、例えば、図９に示されるように、０次の列ベクトルの波形が山型であるDST7（DST3）の変換行列を転置することにより、０次の行ベクトルの波形が山型の変換タイプ（DST2、DST6、DST1、DST5）の変換行列を代替可能な変換行列を得ることができる。
【００７５】
つまり、導出部は、このような第１の変換行列の要素に対する操作により、第２の変換行列を導出するようにしてもよい。そして、この要素に対する操作には、上述のように、要素の並び替え（並び順の変更）を含むようにしてもよい。このようにすることにより、意図的に波形のタイプを変更することができるので、第１の変換行列からより多様な第２の変換行列を導出することができる。したがって、直交変換・逆直交変換のために用意する変換タイプの数の増大を抑制することができ、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【００７６】
なお、もちろん、導出部が、このような操作を複数回行って第２の変換行列を導出するようにしてもよい。例えば、フリップや転置等の操作を任意に組み合わせることができる。また、同じ操作を複数回繰り返してもよい。このようにすることにより、第１の変換行列からさらに多様な第２の変換行列を導出することができる。
【００７７】
なお、上述のように、直交変換・逆直交変換に利用される変換行列は、LUTに格納される。したがって、導出部は、このルックアップテーブル（LUT）に格納される第１の変換行列を用いて、第２の変換行列を導出するようにしてもよい。このようにすることにより、LUTのサイズの増大を抑制することができる。したがって、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【００７８】
＜導出例＞
以上のような操作を伴う変換行列の導出例の一覧を図１０に示す。なお、導出に用いる変換行列（第１の変換行列）をベース変換行列Tbaseとも称する。ベース変換行列の変換タイプをベース変換タイプまたは第１の変換タイプとも称する。また、導出する変換行列（第２の変換行列）の変換タイプを第２の変換タイプとも称する。
【００７９】
図１０に示される表において、最上段の項目名の行を除き、上から１段目の例の導出は、第１の変換タイプの最低次行ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。
【００８０】
この場合、導出部は、第１の変換行列をフリップして、第２の変換行列を導出する。より具体的には、導出部は、DST7の変換行列をベース変換行列Tbaseとし、それを行方向にフリップしてFlipDST7の変換行列を導出する。DST7の変換行列の０次の行ベクトルの波形は増加型であるので、導出されたFlipDST7の変換行列の０次の行ベクトルの波形は減少型である。したがって、このFlipDST7の変換行列により、０次の行ベクトルの波形が減少型のDCT8の変換行列を代替することができる。
【００８１】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された第２の変換タイプ（FlipDST7）の変換行列を用いて直交変換・逆直交変換を行うことにより、DCT8の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。また、この場合、１回の操作で第２の変換行列（減少型の代替変換行列）を導出することができる。
【００８２】
また、その１段下の（上から２段目の）例の導出は、第１の変換タイプの最低次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。
【００８３】
この場合、導出部は、第１の変換行列を転置して、第２の変換行列を導出する。より具体的には、導出部は、DST7の変換行列をベース変換行列Tbaseとし、それを転置してTrDST7の変換行列を導出する。DST7の変換行列の０次の列ベクトルの波形は山型であるので、導出されたTrDST7の変換行列の０次の行ベクトルの波形は山型である。したがって、このTrDST7の変換行列により、０次の行ベクトルの波形が山型のDST1の変換行列を代替することができる。
【００８４】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST1の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された第２の変換タイプ（TrDST7）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST1の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。また、この場合、１回の操作で第２の変換行列（山型の代替変換行列）を導出することができる。
【００８５】
また、その１段下の（上から３段目の）例の導出は、対になるDCT/DST間の特性に着目したものである。より具体的には、対になるDCT/DST間（例えばDST7とDCT8）では、偶数番目の行ベクトルが軸対称であり、奇数番目の行ベクトルが点対称である点に着目している。
【００８６】
この場合、導出部は、第１の変換行列をフリップし、フリップ後の第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、第２の変換行列を導出する。より具体的には、導出部は、DST7の変換行列をベース変換行列Tbaseとし、それを行方向にフリップし、さらに、奇数次の行ベクトルの符号を反転してDCT8の変換行列を導出する。なお、行ベクトルの符号反転は、行ベクトルの各要素の最上位ビットを変換すればよい。当然、導出されたDCT8の変換行列により、０次の行ベクトルの波形が減少型のDST8の変換行列を代替することができる。
【００８７】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、当然、導出された第２の変換タイプ（DCT8）の変換行列を用いて直交変換・逆直交変換を行うことにより、DCT8の変換行列を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。また、この場合、２回の操作で第２の変換行列（対になる代替変換行列）を導出することができる。
【００８８】
また、その１段下の（上から４段目の）例の導出は、上から１段目の場合と同様に、第１の変換タイプの最低次行ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。
【００８９】
この場合、導出部は、第１の変換行列をフリップして、第２の変換行列を導出する。より具体的には、導出部は、DCT8の変換行列をベース変換行列Tbaseとし、それを行方向にフリップして、FlipDCT8の変換行列を導出する。DCT8の変換行列の０次の行ベクトルの波形は減少型であるので、導出されたFlipDCT8の変換行列の０次の行ベクトルの波形は増加型である。したがって、このFlipDCT8の変換行列により、０次の行ベクトルの波形が増加型のDST7の変換行列を代替することができる。
【００９０】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された第２の変換タイプ（FlipDCT8）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST7の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。また、この場合、１回の操作で第２の変換行列（減少型の代替変換行列）を導出することができる。
【００９１】
また、その１段下の（上から５段目の）例の導出は、第１の変換タイプの最高次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。
【００９２】
この場合、導出部は、第１の変換行列をフリップし、フリップ後の第１の変換行列を転置して、第２の変換行列を導出する。より具体的には、導出部は、DCT8の変換行列をベース変換行列Tbaseとし、それを行方向にフリップし、さらに転置して、TrFlipDCT8の変換行列を導出する。DCT8の変換行列の最高次の列ベクトルの波形は山型であるので、導出されたTrFlipDCT8の変換行列の０次の行ベクトルの波形は山型である。したがって、このTrFlipDCT8の変換行列により、０次の行ベクトルの波形が山型のDST1の変換行列を代替することができる。
【００９３】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST1の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された第２の変換タイプ（TrFlipDCT8）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST1の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。また、この場合、２回の操作で第２の変換行列（山型の代替変換行列）を導出することができる。
【００９４】
また、その１段下の（上から６段目の）例の導出は、上から３段目の場合と同様に、対になるDCT/DST間の特性に着目したものである。より具体的には、対になるDCT/DST間（例えばDCT8とDST7）では、偶数番目の行ベクトルが軸対称であり、奇数番目の行ベクトルが点対称である点に着目している。
【００９５】
この場合、導出部は、第１の変換行列をフリップし、フリップ後の第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、第２の変換行列を導出する。より具体的には、導出部は、DCT8の変換行列をベース変換行列Tbaseとし、それを行方向にフリップし、さらに、奇数次の行ベクトルの符号を反転してDST7の変換行列を導出する。当然、導出されたDST7の変換行列により、０次の行ベクトルの波形が増加型のDST7の変換行列を代替することができる。
【００９６】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、当然、導出された第２の変換タイプ（DST7）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST7の変換行列を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。また、この場合、２回の操作で第２の変換行列（対になる代替変換行列）を導出することができる。
【００９７】
また、その１段下の（上から７段目の）例の導出は、第１の変換タイプの最低次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。
【００９８】
この場合、導出部は、第１の変換行列を転置して、第２の変換行列を導出する。より具体的には、導出部は、DCT2の変換行列をベース変換行列Tbaseとし、それを転置してDCT3の変換行列を導出する。DCT2の変換行列の０次の列ベクトルの波形は減少型であるので、導出されたDCT3の変換行列の０次の行ベクトルの波形は減少型である。したがって、このDCT3の変換行列により、０次の行ベクトルの波形が減少型のDCT8の変換行列を代替することができる。
【００９９】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された第２の変換タイプ（DCT3）の変換行列を用いて直交変換・逆直交変換を行うことにより、DCT8の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。また、この場合、１回の操作で第２の変換行列（減少型の代替変換行列）を導出することができる。
【０１００】
また、その１段下の（上から８段目の）例の導出は、第１の変換タイプの最高次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。
【０１０１】
この場合、導出部は、第１の変換行列を転置し、転置後の第１の変換行列をフリップして、第２の変換行列を導出する。より具体的には、導出部は、DCT2の変換行列をベース変換行列Tbaseとし、それを転置し、さらに行方向にフリップして、FlipDCT3の変換行列を導出する。DCT2の変換行列の最高次の列ベクトルの波形は増加型であるので、導出されたFlipDCT3の変換行列の０次の行ベクトルの波形は増加型である。したがって、このFlipDCT3の変換行列により、０次の行ベクトルの波形が増加型のDST7の変換行列を代替することができる。
【０１０２】
このような導出を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された第２の変換タイプ（FlipDCT3）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST7の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。また、この場合、２回の操作で第２の変換行列（増加型の代替変換行列）を導出することができる。
【０１０３】
なお、上述した各導出例は、それぞれ単独で実施するようにしてもよいし、複数の導出例を組み合わせて実施するようにしてもよい。
【０１０４】
＜画像符号化装置＞
次に、以上のような変換行列の導出を行う構成について説明する。図１１は、本技術を適用した画像処理装置の一態様である画像符号化装置の構成の一例を示すブロック図である。図１１に示される画像符号化装置１００は、動画像の画像データを符号化する装置である。例えば、画像符号化装置１００は、非特許文献１、非特許文献３、または非特許文献４に記載されている技術を実装し、それらの文献のいずれかに記載された規格に準拠した方法で動画像の画像データを符号化する。
【０１０５】
なお、図１１においては、処理部やデータの流れ等の主なものを示しており、図１１に示されるものが全てとは限らない。つまり、画像符号化装置１００において、図１１においてブロックとして示されていない処理部が存在したり、図１１において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、画像符号化装置１００内の処理部等を説明する他の図においても同様である。
【０１０６】
図１１に示されるように画像符号化装置１００は、制御部１０１、並べ替えバッファ１１１、演算部１１２、直交変換部１１３、量子化部１１４、符号化部１１５、蓄積バッファ１１６、逆量子化部１１７、逆直交変換部１１８、演算部１１９、インループフィルタ部１２０、フレームメモリ１２１、予測部１２２、およびレート制御部１２３を有する。
【０１０７】
＜制御部＞
制御部１０１は、外部、または予め指定された処理単位のブロックサイズに基づいて、並べ替えバッファ１１１により保持されている動画像データを処理単位のブロック（CU, PU, 変換ブロックなど）へ分割する。また、制御部１０１は、各ブロックへ供給する符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど）を、例えば、RDO(Rate-Distortion Optimization)に基づいて、決定する。
【０１０８】
これらの符号化パラメータの詳細については後述する。制御部１０１は、以上のような符号化パラメータを決定すると、それを各ブロックへ供給する。具体的には、以下の通りである。
【０１０９】
ヘッダ情報Hinfoは、各ブロックに供給される。
予測モード情報Pinfoは、符号化部１１５と予測部１２２とに供給される。
変換情報Tinfoは、符号化部１１５、直交変換部１１３、量子化部１１４、逆量子化部１１７、および逆直交変換部１１８に供給される。
フィルタ情報Finfoは、インループフィルタ部１２０に供給される。
【０１１０】
＜並べ替えバッファ＞
画像符号化装置１００には、動画像データの各フィールド（入力画像）がその再生順（表示順）に入力される。並べ替えバッファ１１１は、各入力画像をその再生順（表示順）に取得し、保持（記憶）する。並べ替えバッファ１１１は、制御部１０１の制御に基づいて、その入力画像を符号化順（復号順）に並べ替えたり、処理単位のブロックに分割したりする。並べ替えバッファ１１１は、処理後の各入力画像を演算部１１２に供給する。また、並べ替えバッファ１１１は、その各入力画像（元画像）を、予測部１２２やインループフィルタ部１２０にも供給する。
【０１１１】
＜演算部＞
演算部１１２は、処理単位のブロックに対応する画像I、および予測部１２２より供給される予測画像Pを入力とし、画像Iから予測画像Pを以下の式（６）に示されるように減算して、予測残差Dを導出し、それを直交変換部１１３に供給する。
【０１１２】
【数４】
2019102889.tif 000006
【０１１３】
＜直交変換部＞
直交変換部１１３は、演算部１１２から供給される予測残差Dと、制御部１０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、予測残差Dに対して直交変換を行い、変換係数Coeffを導出する。直交変換部１１３は、その得られた変換係数Coeffを量子化部１１４に供給する。
【０１１４】
＜量子化部＞
量子化部１１４は、直交変換部１１３から供給される変換係数Coeffと、制御部１０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、変換係数Coeffをスケーリング（量子化）する。なお、この量子化のレートは、レート制御部１２３により制御される。量子化部１１４は、このような量子化により得られた量子化後の変換係数、すなわち量子化変換係数レベルlevelを、符号化部１１５および逆量子化部１１７に供給する。
【０１１５】
＜符号化部＞
符号化部１１５は、量子化部１１４から供給された量子化変換係数レベルlevelと、制御部１０１から供給される各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど）と、インループフィルタ部１２０から供給されるフィルタ係数等のフィルタに関する情報と、予測部１２２から供給される最適な予測モードに関する情報とを入力とする。符号化部１１５は、量子化変換係数レベルlevelを可変長符号化（例えば、算術符号化）し、ビット列（符号化データ）を生成する。
【０１１６】
また、符号化部１１５は、その量子化変換係数レベルlevelから残差情報Rinfoを導出し、残差情報Rinfoを符号化し、ビット列を生成する。
【０１１７】
さらに、符号化部１１５は、インループフィルタ部１２０から供給されるフィルタに関する情報をフィルタ情報Finfoに含め、予測部１２２から供給される最適な予測モードに関する情報を予測モード情報Pinfoに含める。そして、符号化部１１５は、上述した各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど）を符号化し、ビット列を生成する。
【０１１８】
また、符号化部１１５は、以上のように生成された各種情報のビット列を多重化し、符号化データを生成する。符号化部１１５は、その符号化データを蓄積バッファ１１６に供給する。
【０１１９】
＜蓄積バッファ＞
蓄積バッファ１１６は、符号化部１１５において得られた符号化データを、一時的に保持する。蓄積バッファ１１６は、所定のタイミングにおいて、保持している符号化データを、例えばビットストリーム等として画像符号化装置１００の外部に出力する。例えば、この符号化データは、任意の記録媒体、任意の伝送媒体、任意の情報処理装置等を介して復号側に伝送される。すなわち、蓄積バッファ１１６は、符号化データ（ビットストリーム）を伝送する伝送部でもある。
【０１２０】
＜逆量子化部＞
逆量子化部１１７は、逆量子化に関する処理を行う。例えば、逆量子化部１１７は、量子化部１１４から供給される量子化変換係数レベルlevelと、制御部１０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、量子化変換係数レベルlevelの値をスケーリング（逆量子化）する。なお、この逆量子化は、量子化部１１４において行われる量子化の逆処理である。逆量子化部１１７は、このような逆量子化により得られた変換係数Coeff_IQを、逆直交変換部１１８に供給する。
【０１２１】
＜逆直交変換部＞
逆直交変換部１１８は、逆直交変換に関する処理を行う。例えば、逆直交変換部１１８は、逆量子化部１１７から供給される変換係数Coeff_IQと、制御部１０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、変換係数Coeff_IQに対して逆直交変換を行い、予測残差D'を導出する。なお、この逆直交変換は、直交変換部１１３において行われる直交変換の逆処理である。逆直交変換部１１８は、このような逆直交変換により得られた予測残差D'を演算部１１９に供給する。なお、逆直交変換部１１８は、復号側の逆直交変換部（後述する）と同様であるので、逆直交変換部１１８については、復号側について行う説明（後述する）を適用することができる。
【０１２２】
＜演算部＞
演算部１１９は、逆直交変換部１１８から供給される予測残差D’と、予測部１２２から供給される予測画像Pとを入力とする。演算部１１９は、その予測残差D’と、その予測残差D’に対応する予測画像Pとを加算し、局所復号画像Rlocalを導出する。演算部１１９は、導出した局所復号画像Rlocalをインループフィルタ部１２０およびフレームメモリ１２１に供給する。
【０１２３】
＜インループフィルタ部＞
インループフィルタ部１２０は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部１２０は、演算部１１９から供給される局所復号画像Rlocalと、制御部１０１から供給されるフィルタ情報Finfoと、並べ替えバッファ１１１から供給される入力画像（元画像）とを入力とする。なお、インループフィルタ部１２０に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。例えば、必要に応じて、予測モード、動き情報、符号量目標値、量子化パラメータQP、ピクチャタイプ、ブロック（CU、CTU等）の情報等がインループフィルタ部１２０に入力されるようにしてもよい。
【０１２４】
インループフィルタ部１２０は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。インループフィルタ部１２０は、必要に応じて入力画像（元画像）や、その他の入力情報もそのフィルタ処理に用いる。
【０１２５】
例えば、インループフィルタ部１２０は、非特許文献１に記載のように、バイラテラルフィルタ、デブロッキングフィルタ（DBF（DeBlocking Filter））、適応オフセットフィルタ（SAO（Sample Adaptive Offset））、および適応ループフィルタ（ALF(Adaptive Loop Filter)）の４つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
【０１２６】
もちろん、インループフィルタ部１２０が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部１２０がウィーナーフィルタ等を適用するようにしてもよい。
【０１２７】
インループフィルタ部１２０は、フィルタ処理された局所復号画像Rlocalをフレームメモリ１２１に供給する。なお、例えばフィルタ係数等のフィルタに関する情報を復号側に伝送する場合、インループフィルタ部１２０は、そのフィルタに関する情報を符号化部１１５に供給する。
【０１２８】
＜フレームメモリ＞
フレームメモリ１２１は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ１２１は、演算部１１９から供給される局所復号画像Rlocalや、インループフィルタ部１２０から供給されるフィルタ処理された局所復号画像Rlocalを入力とし、それを保持（記憶）する。また、フレームメモリ１２１は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する（フレームメモリ１２１内のバッファへ格納する）。フレームメモリ１２１は、予測部１２２の要求に応じて、その復号画像R（またはその一部）を予測部１２２に供給する。
【０１２９】
＜予測部＞
予測部１２２は、予測画像の生成に関する処理を行う。例えば、予測部１２２は、制御部１０１から供給される予測モード情報Pinfoと、並べ替えバッファ１１１から供給される入力画像（元画像）と、フレームメモリ１２１から読み出す復号画像R（またはその一部）を入力とする。予測部１２２は、予測モード情報Pinfoや入力画像（元画像）を用い、インター予測やイントラ予測等の予測処理を行い、復号画像Rを参照画像として参照して予測を行い、その予測結果に基づいて動き補償処理を行い、予測画像Pを生成する。予測部１２２は、生成した予測画像Pを演算部１１２および演算部１１９に供給する。また、予測部１２２は、以上の処理により選択した予測モード、すなわち最適な予測モードに関する情報を、必要に応じて符号化部１１５に供給する。
【０１３０】
＜レート制御部＞
レート制御部１２３は、レート制御に関する処理を行う。例えば、レート制御部１２３は、蓄積バッファ１１６に蓄積された符号化データの符号量に基づいて、オーバフローあるいはアンダーフローが発生しないように、量子化部１１４の量子化動作のレートを制御する。
【０１３１】
以上のような構成の画像符号化装置１００において、直交変換部１１３は、導出部および直交変換部として、上述した本技術を適用した処理を行う。また、符号化部１１５は、符号化部として、上述した本技術を適用した処理を行う。さらに逆直交変換部１１８は、逆直交変換部および導出部として、上述した本技術を適用した処理を行う。したがって、画像符号化装置１００は、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０１３２】
＜直交変換部の詳細＞
図１２は、図１１の直交変換部１１３の主な構成例を示すブロック図である。図１２に示されるように、直交変換部１１３は、スイッチ１５１、プライマリ変換部１５２、およびセカンダリ変換部１５３を有する。
【０１３３】
スイッチ１５１は、予測残差Dおよびコンポーネント識別子compIDに対応する変換スキップフラグts_flag[compID]を入力とし、変換スキップフラグts_flag[compID]の値がNO_TS(=0)の場合（変換スキップを適用しない場合）、プライマリ変換部１５２へ予測残差Dを供給する。また、変換スキップフラグts_flag[compID]の値が2D_TS(=1)の場合（２次元変換スキップを適用することを示す場合）、プライマリ変換部１５２およびセカンダリ変換部１５３をスキップし、予測残差Dを変換係数Coeffとして直交変換部１１３の外部に出力する（量子化部１１４に供給する）。
【０１３４】
プライマリ変換部１５２は、例えば直交変換等の所定の変換処理であるプライマリ変換に関する処理を行う。例えば、プライマリ変換部１５２は、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、コンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]、予測モード情報PInfo、変換ブロックのサイズ（横幅の対数値log2TBWSize, 縦幅の対数値log2TBHSize）、および予測残差Dを入力とする。なお、変換ブロックの横幅TBWSizeをTBWidthとも称し、その対数値をlog2TBWidthとも称する。同様に、変換ブロックの縦幅TBHSizeをTBHeightとも称し、その対数値をlog2TBHeightとも称する。
【０１３５】
プライマリ変換部１５２は、その予測モード情報PInfo、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、およびコンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]を参照して、コンポーネント識別子compIDに対応するプライマリ水平変換の変換タイプTrTypeH（および該変換タイプを示すプライマリ水平変換タイプ識別子TrTypeIdxH）、およびプライマリ垂直変換の変換タイプTrTypeV（および該変換タイプを示すプライマリ垂直変換タイプ識別子TrTypeIdxV）を選択する。
【０１３６】
また、プライマリ変換部１５２は、予測残差Dに対して、そのプライマリ水平変換タイプ識別子TrTypeIdxH（または、プライマリ水平変換タイプTrTypeH）と変換ブロックの横幅log2TBWSizeで定まるプライマリ水平変換と、プライマリ垂直変換タイプ識別子TrTypeIdxV（または、プライマリ垂直変換タイプTrTypeV）と変換ブロックの縦幅log2TBHSizeで定まるプライマリ垂直変換と行い、プライマリ変換後の変換係数Coeff_Pを導出する。プライマリ水平変換は、水平方向の１次元直交変換であり、プライマリ垂直変換は、垂直方向の１次元直交変換である。
【０１３７】
プライマリ変換部１５２は、導出した変換係数Coeff_Pをセカンダリ変換部１５３に供給する。
【０１３８】
セカンダリ変換部１５３は、例えば直交変換等の所定の変換処理であるセカンダリ変換に関する処理を行う。例えばセカンダリ変換部１５３は、セカンダリ変換識別子st_idx、変換係数のスキャン方法を示すスキャン識別子scanIdx、および変換係数Coeff_Pを入力とする。セカンダリ変換部１５３は、セカンダリ変換識別子st_idxおよびスキャン識別子scanIdxに基づいて、変換係数Coeff_Pに対してセカンダリ変換を行い、セカンダリ変換後の変換係数Coeff_Sを導出する。
【０１３９】
より具体的には、セカンダリ変換識別子st_idxが、セカンダリ変換を適用することを示す場合（st_idx>0）、セカンダリ変換部１５３は、変換係数Coeff_Pに対して、セカンダリ変換識別子st_idxに対応するセカンダリ変換の処理を実行し、セカンダリ変換後の変換係数Coeff_Sを導出する。
【０１４０】
セカンダリ変換部１５３は、そのセカンダリ変換係数Coeff_Sを、変換係数Coeffとして直交変換部１１３の外部に出力する（量子化部１１４に供給する）。
【０１４１】
また、セカンダリ変換識別子st_idxが、セカンダリ変換を適用しないことを示す場合（st_idx==0）、セカンダリ変換部１５３は、セカンダリ変換をスキップし、プライマリ変換後の変換係数Coeff_Pを変換係数Coeff（セカンダリ変換後の変換係数Coeff_S）として直交変換部１１３の外部に出力する（量子化部１１４に供給する）。
【０１４２】
以上のような構成の直交変換部１１３において、プライマリ変換部１５２は、導出部および直交変換部として、上述した本技術を適用した処理を行う。つまり、導出部は、第１の変換行列を用いて第２の変換行列を導出し、直交変換部は、導出部により導出された第２の変換行列を用いて予測残差に対するプライマリ変換を行う。したがって、プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０１４３】
なお、上述のようにプライマリ変換部１５２は、プライマリ変換として、プライマリ水平変換とプライマリ垂直変換とを行う。つまり、導出部は、水平方向の１次元直交変換用の第２の変換行列と、垂直方向の１次元直交変換用の第２の変換行列とを導出し、直交変換部は、プライマリ変換として、導出部により導出された水平方向の１次元直交変換用の第２の変換行列を用いて、水平方向の１次元直交変換を行い、さらに、導出部により導出された垂直方向の１次元直交変換用の第２の変換行列を用いて、垂直方向の１次元直交変換を行う。したがって、このような、水平方向の１次元直交変換および垂直方向の１次元直交変換が行われるプライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０１４４】
＜画像符号化処理の流れ＞
次に、以上のような画像符号化装置１００により実行される各処理の流れについて説明する。最初に、図１３のフローチャートを参照して、画像符号化処理の流れの例を説明する。
【０１４５】
画像符号化処理が開始されると、ステップＳ１０１において、並べ替えバッファ１１１は、制御部１０１に制御されて、入力された動画像データのフレームの順を表示順から符号化順に並べ替える。
【０１４６】
ステップＳ１０２において、制御部１０１は、並べ替えバッファ１１１が保持する入力画像に対して、処理単位を設定する（ブロック分割を行う）。
【０１４７】
ステップＳ１０３において、制御部１０１は、並べ替えバッファ１１１が保持する入力画像についての符号化パラメータを決定（設定）する。
【０１４８】
ステップＳ１０４において、予測部１２２は、予測処理を行い、最適な予測モードの予測画像等を生成する。例えば、この予測処理において、予測部１２２は、イントラ予測を行って最適なイントラ予測モードの予測画像等を生成し、インター予測を行って最適なインター予測モードの予測画像等を生成し、それらの中から、コスト関数値等に基づいて最適な予測モードを選択する。
【０１４９】
ステップＳ１０５において、演算部１１２は、入力画像と、ステップＳ１０４の予測処理により選択された最適なモードの予測画像との差分を演算する。つまり、演算部１１２は、入力画像と予測画像との予測残差Dを生成する。このようにして求められた予測残差Dは、元の画像データに比べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
【０１５０】
ステップＳ１０６において、直交変換部１１３は、ステップＳ１０５の処理により生成された予測残差Dに対して直交変換処理を行い、変換係数Coeffを導出する。
【０１５１】
ステップＳ１０７において、量子化部１１４は、制御部１０１により算出された量子化パラメータを用いる等して、ステップＳ１０６の処理により得られた変換係数Coeffを量子化し、量子化変換係数レベルlevelを導出する。
【０１５２】
ステップＳ１０８において、逆量子化部１１７は、ステップＳ１０７の処理により生成された量子化変換係数レベルlevelを、そのステップＳ１０７の量子化の特性に対応する特性で逆量子化し、変換係数Coeff_IQを導出する。
【０１５３】
ステップＳ１０９において、逆直交変換部１１８は、ステップＳ１０８の処理により得られた変換係数Coeff_IQを、ステップＳ１０６の直交変換処理に対応する方法で逆直交変換し、予測残差D'を導出する。なお、この逆直交変換処理は、復号側において行われる逆直交変換処理（後述する）と同様であるので、このステップＳ１０９の逆直交変換処理については、復号側について行う説明（後述する）を適用することができる。
【０１５４】
ステップＳ１１０において、演算部１１９は、ステップＳ１０９の処理により導出された予測残差D'に、ステップＳ１０４の予測処理により得られた予測画像を加算することにより、局所的に復号された復号画像を生成する。
【０１５５】
ステップＳ１１１において、インループフィルタ部１２０は、ステップＳ１１０の処理により導出された、局所的に復号された復号画像に対して、インループフィルタ処理を行う。
【０１５６】
ステップＳ１１２において、フレームメモリ１２１は、ステップＳ１１０の処理により導出された、局所的に復号された復号画像や、ステップＳ１１２においてフィルタ処理された、局所的に復号された復号画像を記憶する。
【０１５７】
ステップＳ１１３において、符号化部１１５は、ステップＳ１０７の処理により得られた量子化変換係数レベルlevelを符号化する。例えば、符号化部１１５は、画像に関する情報である量子化変換係数レベルlevelを、算術符号化等により符号化し、符号化データを生成する。また、このとき、符号化部１１５は、各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo）を符号化する。さらに、符号化部１１５は、量子化変換係数レベルlevelから残差情報RInfoを導出し、その残差情報RInfoを符号化する。
【０１５８】
ステップＳ１１４において、蓄積バッファ１１６は、このようにして得られた符号化データを蓄積し、例えばビットストリームとして、それを画像符号化装置１００の外部に出力する。このビットストリームは、例えば、伝送路や記録媒体を介して復号側に伝送される。また、レート制御部１２３は、必要に応じてレート制御を行う。
【０１５９】
ステップＳ１１４の処理が終了すると、画像符号化処理が終了する。
【０１６０】
以上のような流れの画像符号化処理において、ステップＳ１０６の処理として、上述した本技術を適用した処理が行われる。また、ステップＳ１０９の処理として、上述した本技術を適用した処理が行われる。さらに、ステップＳ１１３の処理として、上述した本技術を適用した処理が行われる。したがって、この画像符号化処理を実行することにより、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０１６１】
＜直交変換処理の流れ＞
次に図１３のステップＳ１０６において実行される直交変換処理の流れの例を、図１４のフローチャートを参照して説明する。
【０１６２】
直交変換処理が開始されると、スイッチ１５１は、ステップＳ１３１において、変換スキップフラグts_flagが2D_TS（２次元変換スキップを示す場合）（例えば１（真））、または、変換量子化バイパスフラグtransquant_bypass_flagが１（真）、であるか否かを判定する。変換スキップフラグts_flagが2D_TS（例えば１（真））、または、変換量子化バイパスフラグが１（真）であると判定された場合、直交変換処理が終了し、処理は図１３に戻る。この場合、直交変換処理（プライマリ変換やセカンダリ変換）が省略され、入力された予測残差Dが変換係数Coeffとされる。
【０１６３】
また、図１４のステップＳ１３１において、変換スキップフラグts_flagが2D_TSでなく（２次元変換スキップでなく）（例えば０（偽））、かつ、変換量子化バイパスフラグtransquant_bypass_flagが０（偽）であると判定された場合、処理はステップＳ１３２に進む。この場合、プライマリ変換処理およびセカンダリ変換処理が行われる。
【０１６４】
ステップＳ１３２において、プライマリ変換部１５２は、入力された予測残差Dに対して、コンポーネント識別子compIDで指定される適応プライマリ変換情報に基づいてプライマリ変換処理を行い、プライマリ変換後の変換係数Coeff_Pを導出する。
【０１６５】
ステップＳ１３３において、セカンダリ変換部１５３は、変換係数Coeff_Pに対してセカンダリ変換処理を行い、セカンダリ変換後の変換係数Coeff_S（変換係数Coeff）を導出する。
【０１６６】
ステップＳ１３３の処理が終了すると直交変換処理が終了する。
【０１６７】
以上のような直交変換処理において、ステップＳ１３２の処理として、上述した本技術を適用した処理が行われる。したがって、この直交変換処理を実行することにより、プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０１６８】
＜画像復号装置＞
図１５は、本技術を適用した画像処理装置の一態様である画像復号装置の構成の一例を示すブロック図である。図１５に示される画像復号装置２００は、AVCやHEVCのように、画像とその予測画像との予測残差が符号化された符号化データを復号する装置である。例えば、画像復号装置２００は、非特許文献１、非特許文献３、または非特許文献４に記載されている技術を実装し、それらの文献のいずれかに記載された規格に準拠した方法で動画像の画像データが符号化された符号化データを復号する。例えば、画像復号装置２００は、上述の画像符号化装置１００により生成された符号化データ（ビットストリーム）を復号する。
【０１６９】
なお、図１５においては、処理部やデータの流れ等の主なものを示しており、図１５に示されるものが全てとは限らない。つまり、画像復号装置２００において、図１５においてブロックとして示されていない処理部が存在したり、図１５において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、画像復号装置２００内の処理部等を説明する他の図においても同様である。
【０１７０】
図１５において、画像復号装置２００は、蓄積バッファ２１１、復号部２１２、逆量子化部２１３、逆直交変換部２１４、演算部２１５、インループフィルタ部２１６、並べ替えバッファ２１７、フレームメモリ２１８、および予測部２１９を備えている。なお、予測部２１９は、不図示のイントラ予測部、およびインター予測部を備えている。画像復号装置２００は、符号化データ（ビットストリーム）を復号することによって、動画像データを生成するための装置である。
【０１７１】
＜蓄積バッファ＞
蓄積バッファ２１１は、画像復号装置２００に入力されたビットストリームを取得し、保持（記憶）する。蓄積バッファ２１１は、所定のタイミングにおいて、または、所定の条件が整う等した場合、蓄積しているビットストリームを復号部２１２に供給する。
【０１７２】
＜復号部＞
復号部２１２は、画像の復号に関する処理を行う。例えば、復号部２１２は、蓄積バッファ２１１から供給されるビットストリームを入力とし、シンタックステーブルの定義に沿って、そのビット列から、各シンタックス要素のシンタックス値を可変長復号し、パラメータを導出する。
【０１７３】
シンタックス要素およびシンタックス要素のシンタックス値から導出されるパラメータには、例えば、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfo、フィルタ情報Finfoなどの情報が含まれる。つまり、復号部２１２は、ビットストリームから、これらの情報をパースする（解析して取得する）。これらの情報について以下に説明する。
【０１７４】
＜ヘッダ情報Hinfo＞
ヘッダ情報Hinfoは、例えば、VPS（Video Parameter Set）／SPS（Sequence Parameter Set）／PPS（Picture Parameter Set）／SH（スライスヘッダ）などのヘッダ情報を含む。ヘッダ情報Hinfoには、例えば、画像サイズ（横幅PicWidth、縦幅PicHeight）、ビット深度（輝度bitDepthY, 色差bitDepthC）、色差アレイタイプChromaArrayType、CUサイズの最大値MaxCUSize／最小値MinCUSize、４分木分割（Quad-tree分割ともいう）の最大深度MaxQTDepth/最小深度MinQTDepth、２分木分割（Binary-tree分割）の最大深度MaxBTDepth/最小深度MinBTDepth、変換スキップブロックの最大値MaxTSSize（最大変換スキップブロックサイズともいう）、各符号化ツールのオンオフフラグ（有効フラグともいう）などを規定する情報が含まれる。
【０１７５】
例えば、ヘッダ情報Hinfoに含まれる符号化ツールのオンオフフラグとしては、以下に示す変換、量子化処理に関わるオンオフフラグがある。なお、符号化ツールのオンオフフラグは、該符号化ツールに関わるシンタックスが符号化データ中に存在するか否かを示すフラグとも解釈することができる。また、オンオフフラグの値が１（真）の場合、該符号化ツールが使用可能であることを示し、オンオフフラグの値が０（偽）の場合、該符号化ツールが使用不可であることを示す。なお、フラグ値の解釈は逆であってもよい。
【０１７６】
コンポーネント間予測有効フラグ（ccp_enabled_flag）:コンポーネント間予測（CCP（Cross-Component Prediction），CC予測とも称する）が使用可能であるか否かを示すフラグ情報である。例えば、このフラグ情報が「１」（真）の場合、使用可能であることが示され、「０」（偽）の場合、使用不可であることが示される。
【０１７７】
なお、この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）は、多クラス線形予測モードにするか否かを示すフラグ情報である。例えば、「０」の場合、１クラスモード（単一クラスモード）（例えばCCLMP）であることを示し、「１」の場合、２クラスモード（多クラスモード）（例えばMCLMP）であることを示す。
【０１８３】
色差サンプル位置タイプ識別子（chroma_sample_loc_type_idx）は、色差コンポーネントの画素位置のタイプ（色差サンプル位置タイプとも称する）を識別する識別子である。例えば色フォーマットに関する情報である色差アレイタイプ（ChromaArrayType）が420形式を示す場合、色差サンプル位置タイプ識別子は、以下の式（７）のような割り当て方となる。
【０１８４】
【数５】
2019102889.tif 000007
【０１８５】
なお、この色差サンプル位置タイプ識別子（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（または、２を底とする各TBWSize、TBHSizeの対数値log2TBWSize、log2TBHSizeであってもよい）。
変換スキップフラグ（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：非ゼロ係数のレベルが１より大きいかを示すフラグ（GR1フラグとも呼ぶ）
gr2_flag：非ゼロ係数のレベルが２より大きいかを示すフラグ(GR2フラグとも呼ぶ)
sign_flag：非ゼロ係数の正負を示す符号（サイン符号とも呼ぶ）
coeff_abs_level_remaining:非ゼロ係数の残余レベル（非ゼロ係数残余レベルとも呼ぶ）
など。
【０１９３】
もちろん、残差情報Rinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【０１９４】
＜フィルタ情報Finfo＞
フィルタ情報Finfoには、例えば、以下に示す各フィルタ処理に関する制御情報が含まれる。
【０１９５】
デブロッキングフィルタ(DBF)に関する制御情報
画素適応オフセット(SAO)に関する制御情報
適応ループフィルタ(ALF)に関する制御情報
その他の線形・非線形フィルタに関する制御情報
【０１９６】
より具体的には、例えば、各フィルタを適用するピクチャや、ピクチャ内の領域を指定する情報や、CU単位のフィルタOn/Off制御情報、スライス、タイルの境界に関するフィルタOn/Off制御情報などが含まれる。もちろん、フィルタ情報Finfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【０１９７】
復号部２１２の説明に戻り、復号部２１２は、残差情報Rinfoを参照して、各変換ブロック内の各係数位置の量子化変換係数レベルlevelを導出する。復号部２１２は、その量子化変換係数レベルlevelを、逆量子化部２１３に供給する。
【０１９８】
また、復号部２１２は、パースしたヘッダ情報Hinfo、予測モード情報Pinfo、量子化変換係数レベルlevel、変換情報Tinfo、フィルタ情報Finfoを各ブロックへ供給する。具体的には以下の通りである。
【０１９９】
ヘッダ情報Hinfoは、逆量子化部２１３、逆直交変換部２１４、予測部２１９、インループフィルタ部２１６に供給される。
予測モード情報Pinfoは、逆量子化部２１３および予測部２１９に供給される。
変換情報Tinfoは、逆量子化部２１３および逆直交変換部２１４に供給される。
フィルタ情報Finfoは、インループフィルタ部２１６に供給される。
【０２００】
もちろん、上述の例は一例であり、この例に限定されない。例えば、各符号化パラメータが任意の処理部に供給されるようにしてもよい。また、その他の情報が、任意の処理部に供給されるようにしてもよい。
【０２０１】
＜逆量子化部＞
逆量子化部２１３は、逆量子化に関する処理を行う。例えば、逆量子化部２１３は、復号部２１２から供給される変換情報Tinfoおよび量子化変換係数レベルlevelを入力とし、その変換情報Tinfoに基づいて、量子化変換係数レベルlevelの値をスケーリング（逆量子化）し、逆量子化後の変換係数Coeff_IQを導出する。
【０２０２】
なお、この逆量子化は、量子化部１１４による量子化の逆処理として行われる。また、この逆量子化は、逆量子化部１１７による逆量子化と同様の処理である。つまり、逆量子化部１１７は、逆量子化部２１３と同様の処理（逆量子化）を行う。
【０２０３】
逆量子化部２１３は、導出した変換係数Coeff_IQを逆直交変換部２１４に供給する。
【０２０４】
＜逆直交変換部＞
逆直交変換部２１４は、逆直交変換に関する処理を行う。例えば、逆直交変換部２１４は、逆量子化部２１３から供給される変換係数Coeff_IQ、および、復号部２１２から供給される変換情報Tinfoを入力とし、その変換情報Tinfoに基づいて、変換係数Coeff_IQに対して逆直交変換処理を行い、予測残差D'を導出する。
【０２０５】
なお、この逆直交変換は、直交変換部１１３による直交変換の逆処理として行われる。また、この逆直交変換は、逆直交変換部１１８による逆直交変換と同様の処理である。つまり、逆直交変換部１１８は、逆直交変換部２１４と同様の処理（逆直交変換）を行う。
【０２０６】
逆直交変換部２１４は、導出した予測残差D'を演算部２１５に供給する。
【０２０７】
＜演算部＞
演算部２１５は、画像に関する情報の加算に関する処理を行う。例えば、演算部２１５は、逆直交変換部２１４から供給される予測残差D'と、予測部２１９から供給される予測画像Pとを入力とする。演算部２１５は、以下の式（８）に示されるように、予測残差D'とその予測残差D'に対応する予測画像P（予測信号）とを加算し、局所復号画像Rlocalを導出する。
【０２０８】
【数６】
2019102889.tif 000008
【０２０９】
演算部２１５は、導出した局所復号画像Rlocalを、インループフィルタ部２１６およびフレームメモリ２１８に供給する。
【０２１０】
＜インループフィルタ部＞
インループフィルタ部２１６は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部２１６は、演算部２１５から供給される局所復号画像Rlocalと、復号部２１２から供給されるフィルタ情報Finfoとを入力とする。なお、インループフィルタ部２１６に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。
【０２１１】
インループフィルタ部２１６は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。
【０２１２】
例えば、インループフィルタ部２１６は、非特許文献１に記載のように、バイラテラルフィルタ、デブロッキングフィルタ（DBF（DeBlocking Filter））、適応オフセットフィルタ（SAO（Sample Adaptive Offset））、および適応ループフィルタ（ALF(Adaptive Loop Filter)）の４つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
【０２１３】
インループフィルタ部２１６は、符号化側（例えば画像符号化装置１００のインループフィルタ部１２０）により行われたフィルタ処理に対応するフィルタ処理を行う。もちろん、インループフィルタ部２１６が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部２１６がウィーナーフィルタ等を適用するようにしてもよい。
【０２１４】
インループフィルタ部２１６は、フィルタ処理された局所復号画像Rlocalを並べ替えバッファ２１７およびフレームメモリ２１８に供給する。
【０２１５】
＜並べ替えバッファ＞
並べ替えバッファ２１７は、インループフィルタ部２１６から供給された局所復号画像Rlocalを入力とし、それを保持（記憶）する。並べ替えバッファ２１７は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する（バッファ内に格納する）。並べ替えバッファ２１７は、得られた復号画像Rを、復号順から再生順に並べ替える。並べ替えバッファ２１７は、並べ替えた復号画像R群を動画像データとして画像復号装置２００の外部に出力する。
【０２１６】
＜フレームメモリ＞
フレームメモリ２１８は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ２１８は、演算部２１５より供給される局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ２１８内のバッファへ格納する。
【０２１７】
また、フレームメモリ２１８は、インループフィルタ部２１６から供給される、インループフィルタ処理された局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ２１８内のバッファへ格納する。フレームメモリ２１８は、適宜、その記憶している復号画像R（またはその一部）を参照画像として予測部２１９に供給する。
【０２１８】
なお、フレームメモリ２１８が、復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなどを記憶するようにしても良い。
【０２１９】
＜予測部＞
予測部２１９は、予測画像の生成に関する処理を行う。例えば、予測部２１９は、復号部２１２から供給される予測モード情報Pinfoを入力とし、その予測モード情報Pinfoによって指定される予測方法により予測を行い、予測画像Pを導出する。その導出の際、予測部２１９は、その予測モード情報Pinfoによって指定される、フレームメモリ２１８に格納されたフィルタ前またはフィルタ後の復号画像R（またはその一部）を、参照画像として利用する。予測部２１９は、導出した予測画像Pを、演算部２１５に供給する。
【０２２０】
以上のような構成の画像復号装置２００において、逆直交変換部２１４は、導出部および逆直交変換部として、上述した本技術を適用した処理を行う。また、復号部２１２は、復号部として、上述した本技術を適用した処理を行う。したがって、画像復号装置２００は、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０２２１】
＜逆直交変換部の詳細＞
図１６は、図１５の逆直交変換部２１４の主な構成例を示すブロック図である。図１６に示されるように、逆直交変換部２１４は、スイッチ２５１、逆セカンダリ変換部２５２、および逆プライマリ変換部２５３を有する。
【０２２２】
スイッチ２５１は、変換係数Coeff_IQ、および変換スキップフラグts_flag[compID]を入力とする。変換スキップフラグts_flag[compID]の値がNO_TS(=0)の場合、すなわち、変換スキップを適用しない場合、スイッチ２５１は、変換係数Coeff_IQを、逆セカンダリ変換部２５２に供給する。また、変換スキップフラグts_flag[compID]の値が2D_TS(=1)の場合、すなわち、２次元変換スキップを適用することを示す場合、スイッチ２５１は、逆セカンダリ変換部２５２および逆プライマリ変換部２５３をスキップし、変換係数Coeff_IQを予測残差D'として逆直交変換部２１４の外部に出力する（演算部２１５に供給する）。
【０２２３】
逆セカンダリ変換部２５２は、符号化側（例えば、画像符号化装置１００のセカンダリ変換部１５３）において行われるセカンダリ変換の逆処理である逆セカンダリ変換に関する処理を行う。例えば、逆セカンダリ変換部２５２は、セカンダリ変換識別子st_idx、変換係数のスキャン方法を示すスキャン識別子scanIdx、および、スイッチ２５１から供給される変換係数Coeff_IQを入力とする。
【０２２４】
逆セカンダリ変換部２５２は、セカンダリ変換識別子st_idxおよびスキャン識別子scanIdxに基づいて、変換係数Coeff_IQに対して逆セカンダリ変換を行い、逆セカンダリ変換後の変換係数Coeff_ISを導出する。
【０２２５】
より具体的には、セカンダリ変換識別子st_idxが、逆セカンダリ変換を適用することを示す場合（st_idx>0）、逆セカンダリ変換部２５２は、変換係数Coeff_IQに対して、セカンダリ変換識別子st_idxに対応する逆セカンダリ変換の処理を実行し、逆セカンダリ変換後の変換係数Coeff_ISを導出する。逆セカンダリ変換部２５２は、その逆セカンダリ変換後の変換係数Coeff_ISを逆プライマリ変換部２５３に供給する。
【０２２６】
なお、セカンダリ変換識別子st_idxが、逆セカンダリ変換を適用しないことを示す場合（st_idx==0）、逆セカンダリ変換部２５２は、逆セカンダリ変換をスキップし、変換係数Coeff_IQを逆セカンダリ変換後の変換係数Coeff_ISとして逆プライマリ変換部２５３に供給する。
【０２２７】
逆プライマリ変換部２５３は、符号化側（例えば、画像符号化装置１００のプライマリ変換部１５２）において行われるプライマリ変換の逆処理である逆プライマリ変換に関する処理を行う。例えば、逆プライマリ変換部２５３は、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、コンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]、予測モード情報PInfo、変換ブロックのサイズ（横幅の対数値log2TBWSize, 縦幅の対数値log2TBHSize）および逆セカンダリ変換後の変換係数Coeff_ISを入力とする。
【０２２８】
逆プライマリ変換部２５３は、その予測モード情報PInfo、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、およびコンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]を参照して、コンポーネント識別子compIDに対応する逆プライマリ水平変換の変換タイプTrTypeH（および該変換タイプを示す逆プライマリ水平変換タイプ識別子TrTypeIdxH）、および逆プライマリ垂直変換の変換タイプTrTypeV（および該変換タイプを示す逆プライマリ垂直変換タイプ識別子TrTypeIdxV）を選択する。
【０２２９】
また、逆プライマリ変換部２５３は、逆セカンダリ後の変換係数Coeff_ISに対して、その逆プライマリ垂直変換タイプ識別子TrTypeIdxV（または、逆プライマリ垂直変換タイプTrTypeV）と変換ブロックの縦幅log2TBHSizeとで定まる逆プライマリ垂直変換と、逆プライマリ水平変換タイプ識別子TrTypeIdxH（または、逆プライマリ水平変換タイプTrTypeH）と変換ブロックの横幅log2TBWSizeとで定まる逆プライマリ水平変換とを行い、逆プライマリ変換後の変換係数Coeff_IPを導出する。逆プライマリ垂直変換は、垂直方向の逆１次元直交変換であり、逆プライマリ水平変換は、水平方向の逆１次元直交変換である。
【０２３０】
逆プライマリ変換部２５３は、その逆プライマリ変換後の変換係数Coeff_IPを、予測残差D'として逆直交変換部２１４の外部に出力する（演算部２１５に供給する）。
【０２３１】
以上のような構成の逆直交変換部２１４において、逆プライマリ変換部２５３は、導出部および逆直交変換部として、上述した本技術を適用した処理を行う。つまり、導出部は、第１の変換行列を用いて第２の変換行列を導出し、逆直交変換部は、その導出部により導出された第２の変換行列を用いて、逆セカンダリ変換結果に対して逆プライマリ変換を行う。したがって、このような逆プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０２３２】
なお、上述のように逆プライマリ変換部２５３は、逆プライマリ変換として、逆プライマリ垂直変換と逆プライマリ水平変換とを行う。つまり、導出部は、垂直方向の逆１次元直交変換用の第２の変換行列と、水平方向の逆１次元直交変換用の第２の変換行列とを導出し、逆直交変換部は、逆プライマリ変換として、導出部により導出された垂直方向の逆１次元直交変換用の第２の変換行列を用いて、垂直方向の逆１次元直交変換を行い、さらに、導出部により導出された水平方向の逆１次元直交変換用の第２の変換行列を用いて、水平方向の逆１次元直交変換を行う。したがって、このような、垂直方向の逆１次元直交変換および水平方向の逆１次元直交変換が行われるプライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０２３３】
＜画像復号処理の流れ＞
次に、以上のような画像復号装置２００により実行される各処理の流れについて説明する。最初に、図１７のフローチャートを参照して、画像復号処理の流れの例を説明する。
【０２３４】
画像復号処理が開始されると、蓄積バッファ２１１は、ステップＳ２０１において、画像復号装置２００の外部から供給される符号化データ（ビットストリーム）を取得して保持する（蓄積する）。
【０２３５】
ステップＳ２０２において、復号部２１２は、その符号化データ（ビットストリーム）を復号し、量子化変換係数レベルlevelを得る。また、復号部２１２は、この復号により、符号化データ（ビットストリーム）から各種符号化パラメータをパースする（解析して取得する）。
【０２３６】
ステップＳ２０３において、逆量子化部２１３は、ステップＳ２０２の処理により得られた量子化変換係数レベルlevelに対して、符号化側で行われた量子化の逆処理である逆量子化を行い、変換係数Coeff_IQを得る。
【０２３７】
ステップＳ２０４において、逆直交変換部２１４は、ステップＳ２０３の処理により得られた変換係数Coeff_IQに対して、符号化側で行われた直交変換処理の逆処理である逆直交変換処理を行い、予測残差D'を得る。
【０２３８】
ステップＳ２０５において、予測部２１９は、ステップＳ２０２においてパースされた情報に基づいて、符号化側より指定される予測方法で予測処理を実行し、フレームメモリ２１８に記憶されている参照画像を参照する等して、予測画像Pを生成する。
【０２３９】
ステップＳ２０６において、演算部２１５は、ステップＳ２０４の処理により得られた予測残差D'と、ステップＳ２０５の処理により得られた予測画像Pとを加算し、局所復号画像Rlocalを導出する。
【０２４０】
ステップＳ２０７において、インループフィルタ部２１６は、ステップＳ２０６の処理により得られた局所復号画像Rlocalに対して、インループフィルタ処理を行う。
【０２４１】
ステップＳ２０８において、並べ替えバッファ２１７は、ステップＳ２０７の処理により得られたフィルタ処理された局所復号画像Rlocalを用いて復号画像Rを導出し、その復号画像R群の順序を復号順から再生順に並べ替える。再生順に並べ替えられた復号画像R群は、動画像として画像復号装置２００の外部に出力される。
【０２４２】
また、ステップＳ２０９において、フレームメモリ２１８は、ステップＳ２０６の処理により得られた局所復号画像Rlocal、および、ステップＳ２０７の処理により得られたフィルタ処理後の局所復号画像Rlocalの内、少なくとも一方を記憶する。
【０２４３】
ステップＳ２０９の処理が終了すると、画像復号処理が終了する。
【０２４４】
以上のような流れの画像復号処理において、ステップＳ２０２の処理として、上述した本技術を適用した処理が行われる。また、ステップＳ２０４の処理として、上述した本技術を適用した処理が行われる。したがって、この画像復号処理を実行することにより、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０２４５】
＜逆直交変換の処理の流れ＞
次に、図１７のステップＳ２０４において実行される逆直交変換処理の流れの例を、図１８のフローチャートを参照して説明する。逆直交変換処理が開始されると、スイッチ２５１は、ステップＳ２３１において、変換スキップフラグts_flagが2D_TS（２次元変換スキップのモード）（例えば１（真））である、または、変換量子化バイパスフラグtransquant_bypass_flagが１（真）である、か否かを判定する。変換スキップ識別子ts_idxが2D_TSである、または、変換量子化バイパスフラグが１（真）であると判定された場合、逆直交変換処理が終了し、処理は図１７に戻る。この場合、逆直交変換処理（逆プライマリ変換や逆セカンダリ変換）が省略され、変換係数Coeff_IQが予測残差D'とされる。
【０２４６】
また、ステップＳ２３１において、変換スキップ識別子ts_idxが2D_TSでない（２次元変換スキップ以外のモード）（例えば０（偽））であり、かつ、変換量子化バイパスフラグが０（偽）である、と判定された場合、処理はステップＳ２３２に進む。この場合、逆セカンダリ変換処理および逆プライマリ変換処理が行われる。
【０２４７】
ステップＳ２３２において、逆セカンダリ変換部２５２は、変換係数Coeff_IQに対して、セカンダリ変換識別子st_idxに基づいて逆セカンダリ変換処理を行い、変換係数Coeff_ISを導出し、出力する。
【０２４８】
ステップＳ２３３において、逆プライマリ変換部２５３は、変換係数Coeff_ISに対して逆プライマリ変換処理を行い、逆プライマリ変換後の変換係数Coeff_IP（予測残差D'）を導出する。
【０２４９】
ステップＳ２３３の処理が終了すると逆直交変換処理が終了する。
【０２５０】
以上のような逆直交変換処理において、ステップＳ２３３の処理として、上述した本技術を適用した処理が行われる。したがって、この逆直交変換処理を実行することにより、逆プライマリ変換処理に必要なメモリ容量の増大を抑制することができる。
【０２５１】
＜２−２．実施例１−１＞
＜コンセプト＞
次に、図１０を参照して説明した各導出例について、より詳細に説明する。最初に、図１０に示される表において、最上段の項目名の行を除き、上から１段目の例と２段目の例について説明する。
【０２５２】
上述したように、上から１段目の例の導出は、第１の変換タイプの最低次行ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。この場合、導出部は、第１の変換行列をフリップして、第２の変換行列を導出する。つまり、導出部は、図１９に示されるように、DST7の変換行列をベース変換行列Tbaseとし、それを行方向にフリップしてFlipDST7の変換行列を導出する。このFlipDST7の変換行列により、０次の行ベクトルの波形が類似する（減少型の）DCT8の変換行列を代替することができる。
【０２５３】
この導出の具体的な例を図２０の上側に示す。図２０の上側に示されるように、この導出は、ベース変換行列Tbase（DST7）とフリップ行列Ｊとの行列積によって表すことができる。ここでフリップ行列Ｊ（Cross-Identity Matrixとも称する）は、Ｎ×Ｎの単位行列Ｉを左右反転したものである。
【０２５４】
また、上から２段目の例の導出は、第１の変換タイプの最低次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。この場合、導出部は、第１の変換行列を転置して、第２の変換行列を導出する。つまり、導出部は、図１９に示されるように、DST7の変換行列をベース変換行列Tbaseとし、それを転置してTrDST7の変換行列を導出する。このTrDST7の変換行列により、０次の行ベクトルの波形が類似する（山型の）DST1の変換行列を代替することができる。
【０２５５】
この導出の具体的な例を図２０の下側に示す。図２０の下側に示されるように、この導出は、ベース変換行列Tbase（DST7）の転置によって表すことができる。
【０２５６】
つまり、以上の２つの導出例はいずれも、１回の操作（フリップまたは転置）で第２の変換行列を導出することができる。また、その操作も容易である。つまり、容易に第２の変換行列を導出することができる。
【０２５７】
また、以上の２つの導出例を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列およびDST1の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。
【０２５８】
この場合、図２１の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を３種類に低減させることができるので、LUTサイズの合計は約40KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０２５９】
なお、上述したように、この場合も、導出された第２の変換タイプ（TrDST7やFlipDST7）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST1の変換行列やDCT8の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。
【０２６０】
＜プライマリ変換部＞
次に、このような導出を行うための構成や処理等について説明する。図２２は、この場合のプライマリ変換部１５２の主な構成例を示すブロック図である。図２２に示されるように、プライマリ変換部１５２は、プライマリ変換選択部３１１、プライマリ水平変換部３１２、およびプライマリ垂直変換部３１３を有する。
【０２６１】
プライマリ変換選択部３１１は、予測モード情報PInfo、コンポーネント識別子compID、適応プライマリ変換フラグapt_flag[compID]、およびプライマリ変換識別子pt_idx[compID]を入力とする。プライマリ変換選択部３１１は、それらの情報を参照して、プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよびプライマリ垂直変換の変換タイプ識別子TrTypeIdxVを導出する。プライマリ変換選択部３１１は、導出したプライマリ水平変換の変換タイプ識別子TrTypeIdxHをプライマリ水平変換部３１２に供給する。また、プライマリ変換選択部３１１は、導出したプライマリ垂直変換の変換タイプ識別子TrTypeIdxVをプライマリ垂直変換部３１３に供給する。
【０２６２】
プライマリ水平変換部３１２は、予測残差D、プライマリ水平変換の変換タイプ識別子TrTypeIdxH、および変換ブロックのサイズに関する情報（図示せず）を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの横幅を示すlog2TBWSize（横幅の対数値）であってもよい（N = 1 << log2TBWSize）。プライマリ水平変換部３１２は、予測残差Dに対して、変換タイプ識別子TrTypeIdxHと変換ブロックのサイズで定まるプライマリ水平変換Phorを実行し、プライマリ水平変換後の変換係数Coeff_Phorを導出する。プライマリ水平変換部３１２は、そのプライマリ水平変換後の変換係数Coeff_Phorをプライマリ垂直変換部３１３に供給する。
【０２６３】
プライマリ垂直変換部３１３は、プライマリ水平変換後の変換係数Coeff_Phor、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV、および変換ブロックのサイズに関する情報（図示せず）を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの縦幅を示すlog2TBHSize（縦幅の対数値）であってもよい（N = 1 << log2TBHSize）。プライマリ垂直変換部３１３は、プライマリ水平変換後の変換係数Coeff_Phorに対して、変換タイプ識別子TrTypeIdxVと変換ブロックのサイズで定まるプライマリ垂直変換Pverを実行し、そのプライマリ垂直変換後の変換係数Coeff_Pverを導出する。プライマリ垂直変換部３１３は、そのプライマリ垂直変換後の変換係数Coeff_Pverを、プライマリ変換後の変換係数Coeff_Pとして、プライマリ変換部１５２の外部に出力する（セカンダリ変換部１５３に供給する）。
【０２６４】
以上のような構成のプライマリ変換部１５２において、プライマリ水平変換部３１２およびプライマリ垂直変換部３１３は、それぞれ、導出部および直交変換部として、上述した本技術を適用した処理を行う。
【０２６５】
つまり、プライマリ水平変換部３１２は、導出部として、水平方向の１次元直交変換用の第２の変換行列を導出し、さらに、直交変換部として、その導出部により導出された水平方向の１次元直交変換用の第２の変換行列を用いて、水平方向の１次元直交変換を行う。したがって、プライマリ水平変換部３１２は、水平方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０２６６】
また、プライマリ垂直変換部３１３は、導出部として、垂直方向の１次元直交変換用の第２の変換行列を導出し、さらに、直交変換部として、その導出部により導出された垂直方向の１次元直交変換用の第２の変換行列を用いて、垂直方向の１次元直交変換を行う。したがって、プライマリ垂直変換部３１３は、垂直方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０２６７】
＜プライマリ水平変換部＞
図２３は、図２２のプライマリ水平変換部３１２の主な構成例を示すブロック図である。図２３に示されるように、プライマリ水平変換部３１２は、変換行列導出部３２１、行列演算部３２２、スケーリング部３２３、およびクリップ部３２４を有する。
【０２６８】
変換行列導出部３２１は、プライマリ水平変換の変換タイプ識別子TrTypeIdxHと、変換ブロックのサイズに関する情報を入力とし、そのプライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する、変換ブロックと同サイズの、プライマリ水平変換用の変換行列TH（水平方向の１次元直交変換用の変換行列TH）を導出する。変換行列導出部３２１は、その変換行列THを行列演算部３２２に供給する。
【０２６９】
行列演算部３２２は、その変換行列導出部３２１から供給される変換行列THを用いて、入力データXin（すなわち予測残差Dの変換ブロック）に対する水平方向の１次元直交変換を行い、中間データY1を得る。この演算は以下の式（９）のように行列式で表すことができる。
【０２７０】
【数７】
2019102889.tif 000009
【０２７１】
行列演算部３２２は、その中間データY1をスケーリング部３２３に供給する。
【０２７２】
スケーリング部３２３は、その中間データY1の各i行j列成分の係数Y1[i,j]を所定のシフト量SHでスケーリングし、中間データY2を得る。このスケーリングは、以下の式（１０）のように表すことができる。以降、ある２次元行列（２次元配列）Xのi行j列成分（(i,j)成分）をX[i,j]と表記する。
【０２７３】
【数８】
2019102889.tif 000010
【０２７４】
スケーリング部３２３は、その中間データY2をクリップ部３２４に供給する。
【０２７５】
クリップ部３２４は、その中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、プライマリ水平変換後の変換係数Coeff_Phor）を導出する。この処理は、以下の式（１１）のように表すことができる。
【０２７６】
【数９】
2019102889.tif 000011
【０２７７】
クリップ部３２４は、その出力データXout（プライマリ水平変換後の変換係数Coeff_Phor）をプライマリ水平変換部３１２の外部に出力する（プライマリ垂直変換部３１３に供給する）。
【０２７８】
以上のような構成のプライマリ水平変換部３１２において、変換行列導出部３２１は、導出部として、上述した本技術を適用した処理を行う。また、行列演算部３２２は、直交変換部として、上述した本技術を適用した処理を行う。したがって、プライマリ水平変換部３１２は、水平方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０２７９】
＜変換行列導出部＞
図２４は、図２３の変換行列導出部３２１の主な構成例を示すブロック図である。図２４に示されるように、変換行列導出部３２１は、変換行列LUT３３１、フリップ部３３２、および転置部３３３を有する。なお、図２４においては、データの授受を示す矢印を省略しているが、変換行列導出部３２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０２８０】
変換行列LUT３３１は、プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよび変換ブロックのサイズNに対応する変換行列を保持（格納）するためのルックアップテーブルである。変換行列LUT３３１は、プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよび変換ブロックのサイズNが指定されると、それらに対応する変換行列を選択し、出力する。この導出例の場合、変換行列LUT３３１は、その変換行列をベース変換行列Tbaseとしてフリップ部３３２若しくは転置部３３３、または両方に供給する。
【０２８１】
フリップ部３３２は、入力されるN行N列の変換行列Tをフリップし、フリップ後の変換行列Tflipを出力する。この導出例の場合、フリップ部３３２は、変換行列LUT３３１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを行方向（水平方向）にフリップして、フリップ後の変換行列Tflipを、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０２８２】
転置部３３３は、入力されるN行N列の変換行列Tを転置し、転置後の変換行列Ttransposeを出力する。この導出例の場合、転置部３３３は、変換行列LUT３３１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを転置して、転置後の変換行列Ttransposeを、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０２８３】
以上のように、変換行列導出部３２１は、フリップ部３３２や転置部３３３を有する。したがって、変換行列導出部３２１は、例えば、フリップ部３３２を用いて、図１０に示される表の上から１段目の例の導出例を実現することができる。また、変換行列導出部３２１は、例えば、転置部３３３を用いて、図１０に示される表の上から２段目の例の導出例を実現することができる。
【０２８４】
＜プライマリ垂直変換部＞
図２５は、図２２のプライマリ垂直変換部３１３の主な構成例を示すブロック図である。図２５に示されるように、プライマリ垂直変換部３１３は、変換行列導出部３５１、行列演算部３５２、スケーリング部３５３、およびクリップ部３５４を有する。
【０２８５】
変換行列導出部３５１は、プライマリ垂直変換の変換タイプ識別子TrTypeIdxVと、変換ブロックのサイズに関する情報を入力とし、そのプライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する、変換ブロックと同サイズの、プライマリ垂直変換用の変換行列TV（垂直方向の１次元直交変換用の変換行列TV）を導出する。変換行列導出部３５１は、その変換行列TVを行列演算部３５２に供給する。
【０２８６】
行列演算部３５２は、その変換行列導出部３５１から供給される変換行列TVを用いて、入力データXin（すなわちプライマリ水平変換後の変換係数Coeff_Phorの変換ブロック）に対する垂直方向の１次元直交変換を行い、中間データY1を得る。この演算は以下の式（１２）のように行列式で表すことができる。
【０２８７】
【数１０】
2019102889.tif 000012
【０２８８】
行列演算部３５２は、その中間データY1をスケーリング部３５３に供給する。
【０２８９】
スケーリング部３５３は、その中間データY1の各i行j列成分の係数Y1[i,j]を所定のシフト量SVでスケーリングし、中間データY2を得る。このスケーリングは、以下の式（１３）のように表すことができる。
【０２９０】
【数１１】
2019102889.tif 000013
【０２９１】
スケーリング部３５３は、その中間データY2をクリップ部３５４に供給する。
【０２９２】
クリップ部３５４は、その中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、プライマリ垂直変換後の変換係数Coeff_Pver）を導出する。この処理は、以下の式（１４）のように表すことができる。
【０２９３】
【数１２】
2019102889.tif 000014
【０２９４】
クリップ部３２４は、その出力データXout（プライマリ垂直変換後の変換係数Coeff_Pver）を、プライマリ変換後の変換係数Coeff_Pとして、プライマリ垂直変換部３１３の外部に出力する（セカンダリ変換部１５３に供給する）。
【０２９５】
以上のような構成のプライマリ垂直変換部３１３において、変換行列導出部３５１は、導出部として、上述した本技術を適用した処理を行う。また、行列演算部３５２は、直交変換部として、上述した本技術を適用した処理を行う。したがって、プライマリ垂直変換部３１３は、垂直方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０２９６】
＜変換行列導出部＞
図２６は、図２５の変換行列導出部３５１の主な構成例を示すブロック図である。図２６に示されるように、変換行列導出部３５１は、変換行列LUT３６１、フリップ部３６２、および転置部３６３を有する。なお、図２６においては、データの授受を示す矢印を省略しているが、変換行列導出部３５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０２９７】
変換行列LUT３６１は、プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび変換ブロックのサイズNに対応する変換行列を保持（格納）するためのルックアップテーブルである。変換行列LUT３６１は、プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび変換ブロックのサイズNが指定されると、それらに対応する変換行列を選択し、出力する。この導出例の場合、変換行列LUT３６１は、その変換行列をベース変換行列Tbaseとしてフリップ部３６２若しくは転置部３６３、または両方に供給する。
【０２９８】
フリップ部３６２は、入力されるN行N列の変換行列Tをフリップし、フリップ後の変換行列Tflipを出力する。この導出例の場合、フリップ部３６２は、変換行列LUT３６１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを行方向（水平方向）にフリップして、フリップ後の変換行列Tflipを、変換行列TVとして、変換行列導出部３５１の外部に出力する（行列演算部３５２に供給する）。
【０２９９】
転置部３６３は、入力されるN行N列の変換行列Tを転置し、転置後の変換行列Ttransposeを出力する。この導出例の場合、転置部３６３は、変換行列LUT３６１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを転置して、転置後の変換行列Ttransposeを、変換行列TVとして、変換行列導出部３５１の外部に出力する（行列演算部３５２に供給する）。
【０３００】
以上のように、変換行列導出部３５１は、フリップ部３６２や転置部３６３を有する。したがって、変換行列導出部３５１は、例えば、フリップ部３６２を用いて、図１０に示される表の上から１段目の例の導出例を実現することができる。また、変換行列導出部３５１は、例えば、転置部３６３を用いて、図１０に示される表の上から２段目の例の導出例を実現することができる。
【０３０１】
＜プライマリ変換処理の流れ＞
次に、上述した構成により行われる処理の流れの例等について説明する。この場合の、図１４のステップＳ１３２において実行されるプライマリ変換処理の流れの例を、図２７のフローチャートを参照して説明する。
【０３０２】
プライマリ変換処理が開始されると、プライマリ変換部１５２のプライマリ変換選択部３１１（図２２）は、ステップＳ３０１において、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（および該識別子で指定される変換タイプTrTypeH）と、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（および該識別子で指定される変換タイプTrTypeV）とを、それぞれ、上述したように選択する。
【０３０３】
ステップＳ３０２において、プライマリ水平変換部３１２は、ステップＳ３０１において得られたプライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応するプライマリ水平変換処理を予測残差Dに対して行い、プライマリ水平変換後の変換係数Coeff_Phorを導出する。
【０３０４】
ステップＳ３０３において、プライマリ垂直変換部３１３は、ステップＳ３０１において得られたプライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応するプライマリ垂直変換処理をプライマリ水平変換結果（プライマリ水平変換後の変換係数Coeff_Phor）に対して行い、プライマリ垂直変換後の変換係数Coeff_Pver（プライマリ変換後の変換係数Coeff_P）を導出する。
【０３０５】
ステップＳ３０３の処理が終了すると、プライマリ変換処理が終了し、処理は図１４に戻る。
【０３０６】
以上のようなプライマリ変換処理において、ステップＳ３０２やステップＳ３０３の処理として、上述した本技術を適用した処理が行われる。したがって、このプライマリ変換処理を実行することにより、プライマリ水平変換処理やプライマリ垂直変換処理に必要なメモリ容量の増大を抑制することができる。
【０３０７】
＜プライマリ水平変換処理の流れ＞
図２７のステップＳ３０２において実行されるプライマリ水平変換処理の流れについて、図２８のフローチャートを参照して説明する。
【０３０８】
プライマリ水平変換処理が開始されると、プライマリ水平変換部３１２の変換行列導出部３２１（図２３）は、ステップＳ３２１において、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または、変換タイプTrTypeH）に対応する変換行列THを導出する。
【０３０９】
ステップＳ３２２において、行列演算部３２２は、その導出された変換行列THを用いて入力データXin（予測残差D）に対して水平方向の１次元直交変換を行い、中間データY1を得る。この処理を行列式として表現すると、上述の式（９）のように表すことができる。また、この処理を要素毎の演算として表現すると、以下の式（１５）のように表すことができる。
【０３１０】
【数１３】
2019102889.tif 000015
【０３１１】
つまり、図２９に示されるように、中間データY1のi行j列成分の係数Y1[i,j]には、入力データXinのi行目の行ベクトルXin[i,:]と、変換行列THのj行目の行ベクトルTH[j,:]の転置行列THT[:,j]との内積を設定する（j=0,・・・,M-1, i=0,・・・,N-1）。ここで、Mは、入力データXinのx方向のサイズであり、Nは、入力データXinのy方向のサイズである。MおよびNは、以下の式（１６）のように表すことができる。
【０３１２】
【数１４】
2019102889.tif 000016
【０３１３】
図２８に戻り、ステップＳ３２３において、スケーリング部３２３は、ステップＳ３２２の処理により導出された中間データY1の各i行j列成分の係数Y1[i,j]をシフト量SHでスケーリングし、中間データY2を導出する。このスケーリングは、上述の式（１０）のように表すことができる。
【０３１４】
ステップＳ３２４において、クリップ部３２４は、ステップＳ３２３の処理により導出された中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、プライマリ水平変換後の変換係数Coeff_Phor）を得る。この処理は、上述の式（１１）のように表すことができる。
【０３１５】
ステップＳ３２４の処理が終了すると、プライマリ水平変換処理が終了し、処理は図２７に戻る。
【０３１６】
以上のようなプライマリ水平変換処理において、ステップＳ３２１やステップＳ３２２の処理として、上述した本技術を適用した処理が行われる。したがって、このプライマリ水平変換処理を実行することにより、水平方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０３１７】
＜変換行列導出処理の流れ＞
次に、図２８のステップＳ３２１において実行される変換行列導出処理の流れの例を、図３０のフローチャートを参照して説明する。
【０３１８】
変換行列導出処理が開始されると、変換行列導出部３２１は、ステップＳ３４１において、変換タイプ識別子TrTypeIdxHに対応するベース変換タイプBaseTrTypeを、例えば、図３１に示されるような対応表を参照して求める。なお、この処理を数式で表すと、例えば式（１７）のように表現することができる。さらに、その求めたベース変換タイプのN行N列の変換行列を変換行列LUTより読み出し、以下の式（１８）のように、それをベース変換行列Tbaseに設定する。
【０３１９】
【数１５】
2019102889.tif 000017
【０３２０】
また、変換行列導出部３２１は、以下の式（１９）のように、フリップフラグFlipFlagに、変換タイプ識別子TrTypeIdxHに対応する値を設定する。また、変換行列導出部３２１は、以下の式（２０）のように、転置フラグTransposeFlagに、変換タイプ識別子TrTypeIdxHに対応する値を設定する。
【０３２１】
【数１６】
2019102889.tif 000018
【０３２２】
ステップＳ３４２において、変換行列導出部３２１は、フリップフラグFlipFlagと転置フラグTransposeFlagとが以下の式（２１）で表される条件（ConditionA1）を満たすか否かを判定する。
【０３２３】
【数１７】
2019102889.tif 000019
【０３２４】
上述の条件（ConditionA1）を満たすと判定された場合（フリップフラグFlipFlagと転置フラグTransposeFlagとがともに偽（０）の場合）、処理はステップＳ３４３に進む。
【０３２５】
ステップＳ３４３において、変換行列導出部３２１は、以下の式（２２）に示されるように、ベース変換行列Tbaseを変換行列THへ設定する。
【０３２６】
【数１８】
2019102889.tif 000020
【０３２７】
ステップＳ３４３の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。また、ステップＳ３４２において、上述の条件（ConditionA1）を満たさないと判定された場合（フリップフラグFlipFlagまたは転置フラグTransposeFlagが真（１）の場合）、処理はステップＳ３４４に進む。
【０３２８】
ステップＳ３４４において、変換行列導出部３２１は、フリップフラグFlipFlagと転置フラグTransposeFlagとが以下の式（２３）で表される条件（ConditionA2）を満たすか否かを判定する。
【０３２９】
【数１９】
2019102889.tif 000021
【０３３０】
上述の条件（ConditionA2）を満たすと判定された場合（フリップフラグFlipFlagが偽（０）であり、かつ、転置フラグTransposeFlagが真（１）である場合）、処理はステップＳ３４５に進む。
【０３３１】
ステップＳ３４５において、変換行列導出部３２１は、転置部３３３を介して、ベース変換行列Tbaseを転置して、変換行列THを得る。この処理は、以下の式（２４）のように、行列式として表現することができる。
【０３３２】
【数２０】
2019102889.tif 000022
【０３３３】
また、この処理を要素毎の演算として表現する場合、変換行列導出部３２１は、以下の式（２５）のように、ベース変換行列Tbaseのi行j列成分（(i,j)成分）を変換行列THの(j,i)成分に設定する。
【０３３４】
【数２１】
2019102889.tif 000023
【０３３５】
ここで、N行N列の変換行列THのi行j列成分（(i,j)成分）をTH[i,j]と表記する。また、２行目の「for i,j=0,...,N-1」は、iとjとが0乃至N-1の値を持つことを示す。つまり、TH[j,i]がN行N列の変換行列THの全ての要素を示すことを意味する。
【０３３６】
このように、ステップＳ３４５の処理を、要素毎の演算として表現することにより、簡単な２次元配列へのアクセスで、転置操作を実現することできる。ステップＳ３４５の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０３３７】
また、ステップＳ３４４において、上述の条件（ConditionA2）を満たさないと判定された場合（フリップフラグFlipFlagが真（１）である、または、転置フラグTransposeFlagが偽（０）である場合）、処理はステップＳ３４６に進む。
【０３３８】
ステップＳ３４６において、変換行列導出部３２１は、フリップ部３３２を介して、ベース変換行列Tbaseをフリップして、変換行列THを得る。この処理は、以下の式（２６）のように、行列式として表現することができる。
【０３３９】
【数２２】
2019102889.tif 000024
【０３４０】
ここで、×は行列積を表す演算子である。また、フリップ行列J（Cross-Identity Matrix）は、N行N列の単位行列Ｉを左右反転したものである。
【０３４１】
また、この処理を要素毎の演算として表現する場合、変換行列導出部３２１は、以下の式（２７）のように、変換行列THのi行j列成分（(i,j)成分）に、ベース変換行列Tbaseの(i, N-1-j)成分を設定する。
【０３４２】
【数２３】
2019102889.tif 000025
【０３４３】
ここで、N行N列の変換行列THのi行j列成分（(i,j)成分）をTH[i,j]と表記する。また２行目の「for i,j=0,...,N-1」は、iとjがそれぞれ0乃至N-1の値を持つことを示す。すなわち、TH[i,j]がN行N列の変換行列THの全ての要素を示すことを意味する。
【０３４４】
このように、ステップＳ３４６の処理を、要素毎の演算として表現することにより、ベース変換行列Tbaseとフリップ行列Ｊとの行列演算をせずに、簡単な２次元配列へのアクセスで、転置操作を実現することできる。また、フリップ行列Ｊが不要になる。ステップＳ３４６の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０３４５】
以上のような変換行列導出処理において、ステップＳ３４５やステップＳ３４６の処理として、上述した本技術を適用した処理が行われる。したがって、この変換行列導出処理を実行することにより、水平方向の１次元直交変換において、図１０に示される表の上から１段目や２段目の例の導出例を実現することができる。したがって、必要なメモリ容量の増大を抑制することができる。
【０３４６】
なお、ステップＳ３４４の処理とステップＳ３４６の処理との間に、以下に説明するような分岐をいれてもよい。つまり、そのステップにおいて、変換行列導出部３２１は、フリップフラグFlipFlagと転置フラグTransposeFlagとが以下の式（２８）で表される条件（ConditionA3）を満たすか否かを判定する。
【０３４７】
【数２４】
2019102889.tif 000026
【０３４８】
変換行列導出部３２１は、上述の条件（ConditionA3）を満たすと判定された場合（フリップフラグFlipFlagが真（１）であり、かつ、転置フラグTransposeFlagが偽（０）である場合）、処理はステップＳ３４６に進む。
【０３４９】
また、上述の条件（ConditionA3）を満たさないと判定された場合（フリップフラグFlipFlagが偽（０）であるか、または、転置フラグTransposeFlagが真（１）である場合）、変換行列導出処理が終了し、処理は図２８に戻る。
【０３５０】
＜プライマリ垂直変換処理の流れ＞
次に、図２７のステップＳ３０３において実行されるプライマリ垂直変換処理の流れについて、図３２のフローチャートを参照して説明する。
【０３５１】
プライマリ垂直変換処理が開始されると、プライマリ垂直変換部３１３の変換行列導出部３５１（図２５）は、ステップＳ３６１において、変換行列導出処理を実行し、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）に対応する変換行列TVを導出する。
【０３５２】
この変換行列導出処理の流れは、図３０のフローチャートを参照して説明したプライマリ水平変換の場合と同様であるのでその説明を省略する。例えば、プライマリ水平変換の変換タイプ識別子TrTypeIdxHをプライマリ垂直変換の変換タイプ識別子TrTypeIdxVに置き換えたり、導出されるプライマリ水平変換用の変換行列THを、プライマリ垂直変換用の変換行列TVに置き換えたりする等、図３０を参照して行った説明の、水平方向に関する説明を垂直方向に置き換えればよい。
【０３５３】
ステップＳ３６２において、行列演算部３５２は、その導出された変換行列TVを用いて入力データXin（プライマリ水平変換後の変換係数Coeff_Phor）に対して垂直方向の１次元直交変換を行い、中間データY1を得る。この処理を行列式として表現すると、上述の式（１２）のように表すことができる。また、この処理を要素毎の演算として表現すると、以下の式（２９）のように表すことができる。
【０３５４】
【数２５】
2019102889.tif 000027
【０３５５】
つまり、この場合、図３３に示されるように、中間データY1のi行j列成分の係数Y1[i,j]には、変換行列TVのi行目の行ベクトルTV[i,:]と入力データXinのj列目の列ベクトルXin[:,j]との内積を設定する（j=0,・・・,M-1, i=0,・・・,N-1）。
【０３５６】
ステップＳ３６３において、スケーリング部３５３は、ステップＳ３２２の処理により導出された中間データY1の各i行j列成分の係数Y1[i,j]をシフト量SVでスケーリングし、中間データY2を導出する。このスケーリングは、上述の式（１３）のように表すことができる。
【０３５７】
ステップＳ３６４において、クリップ部３５４は、ステップＳ３６３の処理により導出された中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、プライマリ垂直変換後の変換係数Coeff_Pver）を得る。この処理は、上述の式（１４）のように表すことができる。
【０３５８】
ステップＳ３６４の処理が終了すると、プライマリ水平変換処理が終了し、処理は図２７に戻る。
【０３５９】
以上のようなプライマリ垂直変換処理において、ステップＳ３６１やステップＳ３６２の処理として、上述した本技術を適用した処理が行われる。したがって、このプライマリ垂直変換処理を実行することにより、垂直方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０３６０】
＜逆プライマリ変換部＞
次に、本実施例の場合の画像復号装置２００の構成について説明する。図３４は、この場合の逆プライマリ変換部２５３（図１６）の主な構成例を示すブロック図である。図３４に示されるように、逆プライマリ変換部２５３は、逆プライマリ変換選択部４１１、逆プライマリ垂直変換部４１２、および逆プライマリ水平変換部４１３を有する。
【０３６１】
逆プライマリ変換選択部４１１は、予測モード情報PInfo、コンポーネント識別子compID、適応プライマリ変換フラグapt_flag[compID]、およびプライマリ変換識別子pt_idx[compID]を入力とする。逆プライマリ変換選択部４１１は、それらの情報を参照して、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxHを導出する。逆プライマリ変換選択部４１１は、導出した逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVを逆プライマリ垂直変換部４１２に供給する。また、逆プライマリ変換選択部４１１は、導出した逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHを逆プライマリ水平変換部４１３に供給する。
【０３６２】
逆プライマリ垂直変換部４１２は、逆セカンダリ変換後の変換係数Coeff_IS、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxV、および変換ブロックのサイズに関する情報を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの縦幅を示すlog2TBHSize（縦幅の対数値）であってもよい（N = 1 << log2TBHSize）。逆プライマリ垂直変換部４１２は、逆セカンダリ変換後の変換係数Coeff_ISに対して、変換タイプ識別子TrTypeIdxVと変換ブロックのサイズで定まる逆プライマリ垂直変換IPverを実行し、逆プライマリ垂直変換後の変換係数Coeff_IPverを導出する。逆プライマリ垂直変換部４１２は、その逆プライマリ垂直変換後の変換係数Coeff_IPverを逆プライマリ水平変換部４１３に供給する。
【０３６３】
逆プライマリ水平変換部４１３は、逆プライマリ垂直変換後の変換係数Coeff_IPver、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxH、および変換ブロックのサイズに関する情報を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの横幅を示すlog2TBWSize（横幅の対数値）であってもよい（N = 1 << log2TBWSize）。逆プライマリ水平変換部４１３は、逆プライマリ垂直変換部４１２から供給される逆プライマリ垂直変換後の変換係数Coeff_IPverに対して、変換タイプ識別子TrTypeIdxHと変換ブロックのサイズで定まる逆プライマリ水平変換IPhorを実行し、その逆プライマリ水平変換後の変換係数Coeff_IPhor（すなわち逆プライマリ変換後の変換係数Coeff_IP）を導出する。逆プライマリ水平変換部４１３は、その逆プライマリ水平変換後の変換係数Coeff_IPhorを予測残差D'として逆プライマリ変換部２５３の外部に出力する（演算部２１５に供給する）。
【０３６４】
以上のような構成の逆プライマリ変換部２５３において、逆プライマリ垂直変換部４１２および逆プライマリ水平変換部４１３は、それぞれ、導出部および直交変換部として、上述した本技術を適用した処理を行う。
【０３６５】
つまり、逆プライマリ垂直変換部４１２は、導出部として、垂直方向の逆１次元直交変換用の第２の変換行列を導出し、さらに、逆直交変換部として、その導出部により導出された垂直方向の逆１次元直交変換用の第２の変換行列を用いて、垂直方向の逆１次元直交変換を行う。したがって、逆プライマリ垂直変換部４１２は、垂直方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０３６６】
また、逆プライマリ水平変換部４１３は、導出部として、水平方向の逆１次元直交変換用の第２の変換行列を導出し、さらに、直交変換部として、その導出部により導出された水平方向の逆１次元直交変換用の第２の変換行列を用いて、水平方向の逆１次元直交変換を行う。したがって、逆プライマリ水平変換部４１３は、水平方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０３６７】
＜逆プライマリ垂直変換部＞
図３５は、図３４の逆プライマリ垂直変換部４１２の主な構成例を示すブロック図である。図３５に示されるように、逆プライマリ垂直変換部４１２は、変換行列導出部４２１、行列演算部４２２、スケーリング部４２３、およびクリップ部４２４を有する。
【０３６８】
変換行列導出部４２１は、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVと、変換ブロックのサイズに関する情報を入力とし、その逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する、変換ブロックと同サイズの、逆プライマリ垂直変換用の変換行列TV（垂直方向の逆１次元直交変換用の変換行列TV）を導出する。変換行列導出部４２１は、その変換行列TVを行列演算部４２２に供給する。
【０３６９】
行列演算部４２２は、その変換行列導出部４２１から供給される変換行列TVを用いて、入力データXin（すなわち逆セカンダリ変換後の変換係数Coeff_ISの変換ブロック）に対する垂直方向の逆１次元直交変換を行い、中間データY1を得る。この演算は以下の式（３０）のように行列式で表すことができる。
【０３７０】
【数２６】
2019102889.tif 000028
【０３７１】
行列演算部４２２は、その中間データY1をスケーリング部４２３に供給する。
【０３７２】
スケーリング部４２３は、その中間データY1の各i行j列成分の係数Y1[i,j]を所定のシフト量SIVでスケーリングし、中間データY2を得る。このスケーリングは、以下の式（３１）のように表すことができる。
【０３７３】
【数２７】
2019102889.tif 000029
【０３７４】
スケーリング部４２３は、その中間データY2をクリップ部４２４に供給する。
【０３７５】
クリップ部４２４は、その中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、逆プライマリ垂直変換後の変換係数Coeff_IPver）を導出する。この処理は、上述の式（１１）のように表すことができる。
【０３７６】
クリップ部４２４は、その出力データXout（逆プライマリ垂直変換後の変換係数Coeff_IPver）を逆プライマリ垂直変換部４１２の外部に出力する（逆プライマリ水平変換部４１３に供給する）。
【０３７７】
以上のような構成の逆プライマリ垂直変換部４１２において、変換行列導出部４２１は、導出部として、上述した本技術を適用した処理を行う。また、行列演算部４２２は、直交変換部として、上述した本技術を適用した処理を行う。したがって、逆プライマリ垂直変換部４１２は、垂直方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０３７８】
＜変換行列導出部＞
図３６は、図３５の変換行列導出部４２１の主な構成例を示すブロック図である。図３６に示されるように、変換行列導出部４２１は、変換行列LUT４３１、フリップ部４３２、および転置部４３３を有する。なお、図３６においては、データの授受を示す矢印を省略しているが、変換行列導出部４２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０３７９】
変換行列LUT４３１は、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび変換ブロックのサイズNに対応する変換行列を保持（格納）するためのルックアップテーブルである。変換行列LUT４３１は、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび変換ブロックのサイズNが指定されると、それらに対応する変換行列を選択し、出力する。この導出例の場合、変換行列LUT４３１は、その変換行列をベース変換行列Tbaseとしてフリップ部４３２若しくは転置部４３３、または両方に供給する。
【０３８０】
フリップ部４３２は、入力されるN行N列の変換行列Tをフリップし、フリップ後の変換行列Tflipを出力する。この導出例の場合、フリップ部４３２は、変換行列LUT４３１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを行方向（水平方向）にフリップして、フリップ後の変換行列Tflipを、変換行列TVとして、変換行列導出部３２１の外部に出力する（行列演算部４２２に供給する）。
【０３８１】
転置部４３３は、入力されるN行N列の変換行列Tを転置し、転置後の変換行列Ttransposeを出力する。この導出例の場合、転置部４３３は、変換行列LUT４３１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを転置して、転置後の変換行列Ttransposeを、変換行列TVとして、変換行列導出部４２１の外部に出力する（行列演算部４２２に供給する）。
【０３８２】
以上のように、変換行列導出部４２１は、フリップ部４３２や転置部４３３を有する。したがって、変換行列導出部４２１は、例えば、フリップ部４３２を用いて、図１０に示される表の上から１段目の例の導出例を実現することができる。また、変換行列導出部４２１は、例えば、転置部４３３を用いて、図１０に示される表の上から２段目の例の導出例を実現することができる。
【０３８３】
＜逆プライマリ水平変換部＞
図３７は、図３４の逆プライマリ水平変換部４１３の主な構成例を示すブロック図である。図３７に示されるように、逆プライマリ水平変換部４１３は、変換行列導出部４５１、行列演算部４５２、スケーリング部４５３、およびクリップ部４５４を有する。
【０３８４】
変換行列導出部４５１は、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHと、変換ブロックのサイズに関する情報を入力とし、その逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する、変換ブロックと同サイズの、逆プライマリ水平変換用の変換行列TH（水平方向の逆１次元直交変換用の変換行列TH）を導出する。変換行列導出部４５１は、その変換行列THを行列演算部４５２に供給する。
【０３８５】
行列演算部４５２は、その変換行列導出部４５１から供給される変換行列THを用いて、入力データXin（すなわち逆プライマリ垂直変換後の変換係数Coeff_IPverの変換ブロック）に対する水平方向の逆１次元直交変換を行い、中間データY1を得る。この演算は以下の式（３２）のように行列式で表すことができる。
【０３８６】
【数２８】
2019102889.tif 000030
【０３８７】
行列演算部４５２は、その中間データY1をスケーリング部４５３に供給する。
【０３８８】
スケーリング部４５３は、その中間データY1の各i行j列成分の係数Y1[i,j]を所定のシフト量SIHでスケーリングし、中間データY2を得る。このスケーリングは、以下の式（３３）のように表すことができる。
【０３８９】
【数２９】
2019102889.tif 000031
【０３９０】
スケーリング部４５３は、その中間データY2をクリップ部４５４に供給する。
【０３９１】
クリップ部４５４は、その中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、逆プライマリ水平変換後の変換係数Coeff_IPhor）を導出する。この処理は、上述の式（１１）のように表すことができる。
【０３９２】
クリップ部４５４は、その出力データXout（逆プライマリ水平変換後の変換係数Coeff_IPhor（逆プライマリ変換後の変換係数Coeff_IP））を、予測残差D'として、逆プライマリ水平変換部４１３の外部に出力する（演算部２１５に供給する）。
【０３９３】
以上のような構成の逆プライマリ水平変換部４１３において、変換行列導出部４５１は、導出部として、上述した本技術を適用した処理を行う。また、行列演算部４５２は、逆直交変換部として、上述した本技術を適用した処理を行う。したがって、逆プライマリ水平変換部４１３は、水平方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０３９４】
＜変換行列導出部＞
図３８は、図３７の変換行列導出部４５１の主な構成例を示すブロック図である。図３８に示されるように、変換行列導出部４５１は、変換行列LUT４６１、フリップ部４６２、および転置部４６３を有する。なお、図３８においては、データの授受を示す矢印を省略しているが、変換行列導出部４５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０３９５】
変換行列LUT４６１は、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよび変換ブロックのサイズNに対応する変換行列を保持（格納）するためのルックアップテーブルである。変換行列LUT４６１は、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよび変換ブロックのサイズNが指定されると、それらに対応する変換行列を選択し、出力する。この導出例の場合、変換行列LUT４６１は、その変換行列をベース変換行列Tbaseとしてフリップ部４６２若しくは転置部４６３、または両方に供給する。
【０３９６】
フリップ部４６２は、入力されるN行N列の変換行列Tをフリップし、フリップ後の変換行列Tflipを出力する。この導出例の場合、フリップ部４６２は、変換行列LUT４６１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを行方向（水平方向）にフリップして、フリップ後の変換行列Tflipを、変換行列THとして、変換行列導出部４５１の外部に出力する（行列演算部４５２に供給する）。
【０３９７】
転置部４６３は、入力されるN行N列の変換行列Tを転置し、転置後の変換行列Ttransposeを出力する。この導出例の場合、転置部４６３は、変換行列LUT４６１から供給されるN行N列のベース変換行列Tbaseを入力とし、そのベース変換行列Tbaseを転置して、転置後の変換行列Ttransposeを、変換行列THとして、変換行列導出部４５１の外部に出力する（行列演算部４５２に供給する）。
【０３９８】
以上のように、変換行列導出部４５１は、フリップ部４６２や転置部４６３を有する。したがって、変換行列導出部４５１は、例えば、フリップ部４６２を用いて、図１０に示される表の上から１段目の例の導出例を実現することができる。また、変換行列導出部４５１は、例えば、転置部４６３を用いて、図１０に示される表の上から２段目の例の導出例を実現することができる。
【０３９９】
＜逆プライマリ変換処理の流れ＞
次に、画像復号装置２００の上述した構成により行われる処理の流れの例等について説明する。この場合の、図１８のステップＳ２３３において実行される逆プライマリ変換処理の流れの例を、図３９のフローチャートを参照して説明する。
【０４００】
逆プライマリ変換処理が開始されると、逆プライマリ変換部２５３の逆プライマリ変換選択部４１１（図３４）は、ステップＳ４０１において、逆プライマリ変換選択処理を行い、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）と、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）とを、それぞれ選択する。
【０４０１】
ステップＳ４０２において、逆プライマリ垂直変換部４１２は、ステップＳ４０１において得られた逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する逆プライマリ垂直変換処理を逆セカンダリ変換後の変換係数Coeff_ISに対して行い、逆プライマリ垂直変換後の変換係数Coeff_IPverを導出する。
【０４０２】
ステップＳ４０３において、逆プライマリ水平変換部４１３は、ステップＳ４０１において得られた逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する逆プライマリ水平変換処理を逆プライマリ垂直変換後の変換係数Coeff_IPverに対して行い、逆プライマリ水平変換後の変換係数Coeff_IPhor（すなわち、逆プライマリ変換後の変換係数Coeff_IP（予測残差D'））を導出する。
【０４０３】
ステップＳ４０３の処理が終了すると、逆プライマリ変換処理が終了し、処理は図１８に戻る。
【０４０４】
以上のような逆プライマリ変換処理において、ステップＳ４０２やステップＳ４０３の処理として、上述した本技術を適用した処理が行われる。したがって、この逆プライマリ変換処理を実行することにより、逆プライマリ垂直変換処理や逆プライマリ水平変換処理に必要なメモリ容量の増大を抑制することができる。
【０４０５】
＜逆プライマリ変換選択処理の流れ＞
次に、図３９のステップＳ４０１において実行される逆プライマリ変換選択処理の流れの例を、図４０のフローチャートを参照して説明する。
【０４０６】
逆プライマリ変換選択処理が開始されると、逆プライマリ変換選択部４１１は、ステップＳ４２１において、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]が真（１）であるか否かを判定する。コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]が真（１）であると判定された場合、処理はステップＳ４２２に進む。
【０４０７】
ステップＳ４２２において、逆プライマリ変換選択部４１１は、予測モード情報Pinfoに基づいて変換セット群から、各方向の変換セットTrSetH、TrSetVを選択する。
【０４０８】
ステップＳ４２３において、逆プライマリ変換選択部４１１は、変換セットTrSetHとプライマリ変換識別子pt_idx[compID]に基づいて、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHを導出する。この処理は、例えば、以下の式（３４）のように表すことができる。
【０４０９】
【数３０】
2019102889.tif 000032
【０４１０】
ステップＳ４２４において、逆プライマリ変換選択部４１１は、変換セットTrSetVと逆プライマリ変換識別子pt_idx[compID]に基づいて、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVを導出する。この処理は、例えば、以下の式（３５）のように表すことができる。
【０４１１】
【数３１】
2019102889.tif 000033
【０４１２】
ステップＳ４２４の処理が終了すると、逆プライマリ変換選択処理が終了し、処理は図３９に戻る。
【０４１３】
また、ステップＳ４２１において、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]が偽（０）であると判定された場合、処理はステップＳ４２５に進む。
【０４１４】
ステップＳ４２５において、逆プライマリ変換選択部４１１は、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHに、所定の直交変換（例えばDCT2）を設定（選択）する。この処理は、例えば、以下の式（３６）のように表すことができる。
【０４１５】
【数３２】
2019102889.tif 000034
【０４１６】
ステップＳ４２６において、逆プライマリ変換選択部４１１は、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに、所定の直交変換（例えばDCT2）を設定（選択）する。この処理は、例えば、以下の式（３７）のように表すことができる。
【０４１７】
【数３３】
2019102889.tif 000035
【０４１８】
ステップＳ４２６の処理が終了すると、逆プライマリ変換選択処理が終了し、処理は図３９に戻る。
【０４１９】
＜逆プライマリ垂直変換処理の流れ＞
次に、図３９のステップＳ４０２において実行される逆プライマリ垂直変換処理の流れについて、図４１のフローチャートを参照して説明する。
【０４２０】
逆プライマリ垂直変換処理が開始されると、逆プライマリ垂直変換部４１２の変換行列導出部４２１（図３５）は、ステップＳ４４１において、変換行列導出処理を実行し、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する変換行列TVを導出する。
【０４２１】
この場合の変換行列導出処理は、図３０のフローチャートを参照して説明したプライマリ水平変換の場合と同様の流れで行われる。したがって、その説明を省略する。例えば、プライマリ水平変換の変換タイプ識別子TrTypeIdxHを逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに置き換えたり、導出されるプライマリ水平変換用の変換行列THを、逆プライマリ垂直変換用の変換行列TVに置き換えたりすることにより、図３０を参照して行った説明を、この場合の変換行列導出処理の説明として適用することができる。
【０４２２】
ステップＳ４４２において、行列演算部４２２は、その導出された変換行列TVを用いて入力データXin（つまり、逆セカンダリ変換後の変換係数Coeff_IS）に対して垂直方向の逆１次元直交変換を行い、中間データY1を得る。この処理を行列式として表現すると、上述の式（３０）のように表すことができる。 
【０４２３】
ステップＳ４４３において、スケーリング部４２３は、ステップＳ４４２の処理により導出された中間データY1の各i行j列成分の係数Y1[i,j]をシフト量SIVでスケーリングし、中間データY2を導出する。このスケーリングは、上述の式（３１）のように表すことができる。
【０４２４】
ステップＳ４４４において、クリップ部４２４は、ステップＳ４４３の処理により導出された中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、逆プライマリ垂直変換後の変換係数Coeff_IPver）を得る。この処理は、上述の式（１１）のように表すことができる。
【０４２５】
ステップＳ４４４の処理が終了すると、逆プライマリ垂直変換処理が終了し、処理は図３９に戻る。
【０４２６】
以上のような逆プライマリ垂直変換処理において、ステップＳ４４１やステップＳ４４２の処理として、上述した本技術を適用した処理が行われる。したがって、この逆プライマリ垂直変換処理を実行することにより、垂直方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０４２７】
＜逆プライマリ水平変換処理の流れ＞
次に、図３９のステップＳ４０３において実行される逆プライマリ水平変換処理の流れについて、図４２のフローチャートを参照して説明する。
【０４２８】
逆プライマリ水平変換処理が開始されると、逆プライマリ水平変換部４１３の変換行列導出部４５１（図３７）は、ステップＳ４６１において、変換行列導出処理を実行し、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する変換行列THを導出する。
【０４２９】
この場合の変換行列導出処理は、図３０のフローチャートを参照して説明したプライマリ水平変換の場合と同様の流れで行われる。したがって、その説明を省略する。例えば、プライマリ水平変換を逆プライマリ水平変換に置き換える等すれば、図３０を参照して行った説明を、この場合の変換行列導出処理の説明として適用することができる。
【０４３０】
ステップＳ４６２において、行列演算部４５２は、その導出された変換行列THを用いて入力データXin（つまり、逆プライマリ垂直変換後の変換係数Coeff_IPver）に対して水平方向の逆１次元直交変換を行い、中間データY1を得る。この処理を行列式として表現すると、上述の式（３２）のように表すことができる。
【０４３１】
ステップＳ４６３において、スケーリング部４５３は、ステップＳ４６２の処理により導出された中間データY1の各i行j列成分の係数Y1[i,j]をシフト量SIHでスケーリングし、中間データY2を導出する。このスケーリングは、上述の式（３３）のように表すことができる。
【０４３２】
ステップＳ４６４において、クリップ部４５４は、ステップＳ４６３の処理により導出された中間データY2の各i行j列成分の係数Y2[i,j]の値をクリップし、出力データXout（つまり、逆プライマリ水平変換後の変換係数Coeff_IPhor）を得る。この処理は、上述の式（１４）のように表すことができる。
【０４３３】
ステップＳ４６４の処理が終了すると、逆プライマリ水平変換処理が終了し、処理は図３９に戻る。
【０４３４】
以上のような逆プライマリ水平変換処理において、ステップＳ４６１やステップＳ４６２の処理として、上述した本技術を適用した処理が行われる。したがって、この逆プライマリ水平変換処理を実行することにより、水平方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０４３５】
＜２−３．実施例１−２＞
＜コンセプト＞
次に、図１０に示される表において、最上段の項目名の行を除き、上から３段目の例について説明する。
【０４３６】
上述したように、上から３段目の例の導出は、対になるDCT/DST間の特性に着目したものである。より具体的には、対になるDCT/DST間（例えばDST7とDCT8）では、偶数番目の行ベクトルが軸対称であり、奇数番目の行ベクトルが点対称である点に着目している。この場合、導出部は、第１の変換行列をフリップし、フリップ後の第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、第２の変換行列を導出する。つまり、導出部は、図４３に示されるように、DST7の変換行列を行方向にフリップし、さらに、奇数次の行ベクトルの符号を反転してロスレスでDCT8の変換行列を導出する。したがって、当然、その導出されたDCT8により、０次の行ベクトルの波形が同一の（減少型の）DCT8の変換行列を代替することができる。
【０４３７】
この導出の具体的な例を図４４に示す。図４４に示されるように、この導出は、奇数次の行の要素が負の単位行列Dと、ベース変換行列Tbase（DST7）と、フリップ行列Ｊとの行列積によって表すことができる。
【０４３８】
つまり、この導出例は、２回の操作（フリップと符号反転）で第２の変換行列を導出することができる。また、各操作も容易である。つまり、容易に第２の変換行列を導出することができる。
【０４３９】
また、この導出例を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。
【０４４０】
この場合、図４５の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を４種類に低減させることができるので、LUTサイズの合計は約47KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０４４１】
なお、上述したように、この場合、第２の変換タイプとして変換タイプDCT8の変換行列を得ることができるので、その第２の変換タイプの変換行列を用いて直交変換・逆直交変換を行うことにより、DCT8の変換行列を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０４４２】
＜変換行列導出部＞
次に、このような導出を行うための構成や処理等について説明する。まず、画像符号化装置１００が有する本実施の形態の技術構成について説明する。この場合のプライマリ変換部１５２、プライマリ水平変換部３１２、およびプライマリ垂直変換部３１３等の構成は、図２２を参照して説明した＜２−２．実施例１−１＞の場合と同様であるのでその説明を省略する。
【０４４３】
図４６は、この場合の変換行列導出部３２１（プライマリ水平変換部３１２内の変換行列導出部３２１（図２３））の主な構成例を示すブロック図である。図４６に示されるように、この場合の変換行列導出部３２１は、変換行列LUT３３１、フリップ部３３２、および符号反転部５０１を有する。なお、図４６においては、データの授受を示す矢印を省略しているが、変換行列導出部３２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０４４４】
変換行列LUT３３１およびフリップ部３３２は、図２４の場合と同様である。
【０４４５】
符号反転部５０１は、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例（実施例１−２）の場合、変換行列導出部３２１は、変換行列LUT３３１において選択したN行N列のベース変換行列Tbaseを、フリップ部３３２を介して水平方向にフリップし、さらに符号反転部５０１を介して奇数次行ベクトルの符号を反転し、変換行列TInvSignを変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０４４６】
以上のように、変換行列導出部３２１は、フリップ部３３２および符号反転部５０１を用いて、図１０に示される表の上から３段目の例の導出例を実現することができる。
【０４４７】
＜変換行列導出部＞
図４７は、この場合のプライマリ垂直変換部３１３が有する変換行列導出部３５１の主な構成例を示すブロック図である。図４７に示されるように、この場合の変換行列導出部３５１は、変換行列導出部３２１と同様に、変換行列LUT３６１、フリップ部３６２、および符号反転部５０２を有する。なお、図４７においては、データの授受を示す矢印を省略しているが、変換行列導出部３５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０４４８】
変換行列LUT３６１およびフリップ部３６２は、図２６の場合と同様である。
【０４４９】
符号反転部５０２は、符号反転部５０１と同様に、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例の場合、変換行列導出部３５１は、変換行列LUT３６１において選択したN行N列のベース変換行列Tbaseを、フリップ部３６２を介して水平方向にフリップし、さらに符号反転部５０２を介して奇数次行ベクトルの符号を反転し、変換行列TInvSignを変換行列TVとして、変換行列導出部３５１の外部に出力する（行列演算部３５２に供給する）。
【０４５０】
以上のように、変換行列導出部３５１は、フリップ部３６２および符号反転部５０２を用いて、図１０に示される表の上から３段目の例の導出例を実現することができる。
【０４５１】
＜変換行列導出処理の流れ＞
この場合のプライマリ変換処理、プライマリ水平変換処理、プライマリ垂直変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われるので、これらの処理についての説明は省略する。
【０４５２】
次に、図２８のステップＳ３２１において、プライマリ水平変換部３１２内の変換行列導出部３２１により実行される、この場合の変換行列導出処理の流れの例を、図４８のフローチャートを参照して説明する。
【０４５３】
変換行列導出処理が開始されると、変換行列導出部３２１は、ステップＳ５０１において、変換タイプ識別子TrTypeIdxHに対応するベース変換タイプBaseTrTypeを、例えば、図４９に示されるような対応表を参照して求める。なお、この処理を数式で表すと、例えば上述の式（１７）のように表現することができる。さらに、変換行列導出部３２１は、その求めたベース変換タイプのN行N列の変換行列を変換行列LUTより読み出し、上述の式（１８）のように、それをベース変換行列Tbaseに設定する。
【０４５４】
また、変換行列導出部３２１は、上述の式（１９）のように、フリップフラグFlipFlagに、変換タイプ識別子TrTypeIdxHに対応する値を設定する。また、変換行列導出部３２１は、以下の式（３８）のように、符号反転フラグInvSignFlagに、変換タイプ識別子TrTypeIdxHに対応する値を設定する。
【０４５５】
【数３４】
2019102889.tif 000036
【０４５６】
ステップＳ５０２において、変換行列導出部３２１は、フリップフラグFlipFlagと転置フラグTransposeFlagとが以下の式（３９）で表される条件（ConditionB1）を満たすか否かを判定する。
【０４５７】
【数３５】
2019102889.tif 000037
【０４５８】
上述の式（３９）に示される条件を満たさないと判定された場合（すなわち、フリップフラグFlipFlagが偽（０）であるか、または、符号反転フラグInvSignFlagが偽（０）である、と判定された場合）、処理はステップＳ５０３に進む。
【０４５９】
ステップＳ５０３において、変換行列導出部３２１は、ベース変換行列Tbaseを変換行列THに設定する。ステップＳ５０３の処理が終了すると、変換行列導出処理が終了し、処理は、図２８に戻る。
【０４６０】
また、ステップＳ５０２において、上述の式（３９）に示される条件を満たすと判定された場合（すなわち、フリップフラグFlipFlagが真（１）であり、かつ、符号反転フラグInvSignFlagが真（１）であると判定された場合）、処理はステップＳ５０４に進む。
【０４６１】
ステップＳ５０４において、変換行列導出部３２１は、フリップ部３３２を用いて、ベース変換行列Tbaseをフリップし、それを変換行列THに設定する。つまり、変換行列導出部３２１は、Flip(Tbase)の変換行列THを導出する。
【０４６２】
ステップＳ５０５において、変換行列導出部３２１は、符号反転部５０１を用いて、変換行列THの奇数番目の行ベクトルの符号を反転して、変換行列THを再設定する。この処理は、以下の式（４０）のように行列式として表現することができる。
【０４６３】
【数３６】
2019102889.tif 000038
【０４６４】
ここで、×は行列積を表す演算子であり、符号反転行列Dは、Diag(1,-1,…,(-1)N-1)からなる対角行列である。
【０４６５】
また、この処理は、以下の式（４１）のように、要素毎の演算としても表現することができる。このようにすることにより、符号反転行列Dを持たなくても実現することができる。その場合、変換行列導出部３２１は、変換行列THのi行j列成分（(i,j)成分）のうち、奇数行目(i%2==1)の成分の正負符号を反転する。
【０４６６】
【数３７】
2019102889.tif 000039
【０４６７】
ここで、N行N列の変換行列THのi行j列成分（(i,j)成分）をTH[i,j]と表記する。また、２行目の「for i,j=0,...,N-1 and i%2 == 1」は、jが0乃至N-1の値を持ち、iが0乃至N-1の範囲の奇数の値を持つことを示す。すなわち、TH[i,j]がN行N列の変換行列THの奇数行ベクトル（の各要素）を示すことを意味する。
【０４６８】
ステップＳ５０５の処理が終了すると、変換行列導出処理が終了し、処理は、図２８に戻る。
【０４６９】
＜変換行列導出処理の流れ＞
なお、プライマリ垂直変換処理のステップＳ３６１（図３２）において実行される変換行列導出処理の流れは、図４８のフローチャートを参照して説明したプライマリ水平変換において実行される変換行列導出処理の場合と同様であるのでその説明を省略する。
【０４７０】
＜変換行列導出部＞
次に、この場合の画像復号装置２００の構成について説明する。この場合も画像復号装置２００が有する逆プライマリ変換部２５３、逆プライマリ垂直変換部４１２、逆プライマリ水平変換部４１３等の構成は、＜２−２．実施例１−１＞の場合と同様であるのでその説明を省略する。
【０４７１】
図５０は、この場合の変換行列導出部４２１（逆プライマリ垂直変換部４１２が有する変換行列導出部４２１）の主な構成例を示すブロック図である。図５０に示されるように、この場合の変換行列導出部４２１は、変換行列導出部３２１と同様に、変換行列LUT４３１、フリップ部４３２、および符号反転部５１１を有する。なお、図５０においては、データの授受を示す矢印を省略しているが、変換行列導出部４２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０４７２】
変換行列LUT４３１およびフリップ部４３２は、図３６の場合と同様である。符号反転部５１１は、符号反転部５０１と同様に、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例の場合、変換行列導出部４２１は、変換行列LUT４３１において選択したN行N列のベース変換行列Tbaseを、フリップ部４３２を介して水平方向にフリップし、さらに符号反転部５１１を介して奇数次行ベクトルの符号を反転し、変換行列TInvSignを変換行列TVとして、変換行列導出部４２１の外部に出力する（行列演算部４２２に供給する）。
【０４７３】
以上のように、変換行列導出部４２１は、フリップ部４３２および符号反転部５１１を用いて、図１０に示される表の上から３段目の例の導出例を実現することができる。
【０４７４】
＜変換行列導出部＞
図５１は、この場合の、逆プライマリ水平変換部４１３が有する変換行列導出部４５１の主な構成例を示すブロック図である。図５１に示されるように、この場合の変換行列導出部４５１は、変換行列導出部４２１と同様に、変換行列LUT４６１、フリップ部４６２、および符号反転部５１２を有する。なお、図５１においては、データの授受を示す矢印を省略しているが、変換行列導出部４５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０４７５】
変換行列LUT４６１およびフリップ部４６２は、図５０の場合と同様である。符号反転部５１２は、符号反転部５０１と同様に、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例の場合、変換行列導出部４５１は、変換行列LUT４６１において選択したN行N列のベース変換行列Tbaseを、フリップ部４６２を介して水平方向にフリップし、さらに符号反転部５１２を介して奇数次行ベクトルの符号を反転し、変換行列TInvSignを変換行列TVとして、変換行列導出部４５１の外部に出力する（行列演算部４５２に供給する）。
【０４７６】
以上のように、変換行列導出部４５１は、フリップ部４６２および符号反転部５１２を用いて、図１０に示される表の上から３段目の例の導出例を実現することができる。
【０４７７】
＜変換行列導出処理の流れ＞
なお、変換行列導出部４２１および変換行列導出部４５１は、図４８のフローチャートを参照して説明した場合と同様の流れで、変換行列導出処理を行うので、その説明は省略する。
【０４７８】
＜２−４．実施例１−３＞
＜コンセプト＞
次に、図１０に示される表において、最上段の項目名の行を除き、上から４段目および５段目の例について説明する。
【０４７９】
上述したように、上から４段目の例の導出は、上から１段目の場合と同様に、第１の変換タイプの最低次行ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。この場合、導出部は、第１の変換行列をフリップして、第２の変換行列を導出する。つまり、導出部は、図５２に示されるように、DCT8の変換行列をベース変換行列Tbaseとし、それを行方向にフリップして、FlipDCT8の変換行列を導出する。このFlipDCT8の変換行列により、０次の行ベクトルの波形が類似する（増加型の）DST7の変換行列を代替することができる。
【０４８０】
また、上から５段目の例の導出は、第１の変換タイプの最高次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。この場合、導出部は、第１の変換行列をフリップし、フリップ後の第１の変換行列を転置して、第２の変換行列を導出する。つまり、導出部は、図５２に示されるように、DCT8の変換行列をベース変換行列Tbaseとし、それを行方向にフリップし、さらに転置して、TrFlipDCT8の変換行列を導出する。このTrFlipDCT8の変換行列により、０次の行ベクトルの波形が類似する（山型の）DST1の変換行列を代替することができる。
【０４８１】
つまり、以上の２つの導出例は、１回または２回の操作（フリップまたはフリップ＋転置）で第２の変換行列を導出することができる。また、その操作も容易である。つまり、容易に第２の変換行列を導出することができる。
【０４８２】
また、以上の２つの導出例を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列およびDST1の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。
【０４８３】
この場合、図５３の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を３種類に低減させることができるので、LUTサイズの合計は約40KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０４８４】
なお、上述したように、この場合も、導出された第２の変換タイプ（FlipDCT8やTrFlipDCT8）の変換行列を用いて直交変換・逆直交変換を行うことにより、DST7の変換行列やDST1の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。
【０４８５】
＜構成＞
この場合の画像符号化装置１００および画像復号装置２００の構成は、それぞれ、＜２−２．実施例１−１＞において説明したのと同様であるのでその説明を省略する。
【０４８６】
＜変換行列導出処理の流れ＞
次に処理の流れについて説明する。変換行列導出処理以外の処理は＜２−２．実施例１−１＞等において上述した例と同様の流れで行われるので、それらの説明は省略する。
【０４８７】
図２８のステップＳ３２１において、プライマリ水平変換部３１２が有する変換行列導出部３２１により実行される変換行列導出処理の流れの例を、図５４のフローチャートを参照して説明する。
【０４８８】
変換行列導出処理が開始されると、変換行列導出部３２１は、ステップＳ５２１において、変換タイプ識別子TrTypeIdxHに対応するベース変換タイプBaseTrTypeを、例えば、図５５に示されるような対応表を参照して求める。
【０４８９】
また、変換行列導出部３２１は、図３０のフローチャートのステップＳ３４１の場合と同様に、変換タイプ識別子TrTypeIdxHに対応するフリップフラグFlipFlagの値と、変換タイプ識別子TrTypeIdxHに対応する転置フラグTransposeFlagの値を設定する。
【０４９０】
ステップＳ５２２において、変換行列導出部３２１は、フリップフラグFlipFlagが以下の式（４２）で表される条件（ConditionC1）を満たすか否かを判定する。
【０４９１】
【数３８】
2019102889.tif 000040
【０４９２】
上述の条件（ConditionC1）を満たさないと判定された場合（フリップフラグFlipFlagが偽（０）の場合）、処理はステップＳ５２３に進む。
【０４９３】
ステップＳ５２３において、変換行列導出部３２１は、図３０のステップＳ３４３の場合と同様に、ベース変換行列Tbaseを変換行列THに設定する。ステップＳ５２３の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０４９４】
また、ステップＳ５２２において、上述の条件（ConditionC1）を満たすと判定された場合（フリップフラグFlipFlagが真（１）の場合）、処理はステップＳ５２４に進む。
【０４９５】
ステップＳ５２４において、変換行列導出部３２１は、ベース変換行列Tbaseを水平方向にフリップし、そのフリップした変換行列Flip（Tbase）を変換行列Ttmpへ設定する。この処理は、以下の式（４３）のように表すことができる。
【０４９６】
【数３９】
2019102889.tif 000041
【０４９７】
ステップＳ５２５において、変換行列導出部３２１は、転置フラグTransposeFlagが以下の式（４４）で表される条件（ConditionC2）を満たすか否かを判定する。
【０４９８】
【数４０】
2019102889.tif 000042
【０４９９】
上述の条件（ConditionC2）を満たさないと判定された場合（転置フラグTransposeFlagが偽（０）の場合）、処理はステップＳ５２６に進む。
【０５００】
ステップＳ５２６において、変換行列導出部３２１は、変換行列Ttmpを変換行列THへ設定する。この処理は、以下の式（４５）のように表すことができる。
【０５０１】
【数４１】
2019102889.tif 000043
【０５０２】
ステップＳ５２６の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。また、ステップＳ５２５において上述の条件（ConditionC2）を満たすと判定された場合（転置フラグTransposeFlagが真（１）の場合）、処理はステップＳ５２７に進む。
【０５０３】
ステップＳ５２７において、変換行列導出部３２１は、変換行列Ttmpを転置したTr(Ttmp)を変換行列THに設定する。この処理は、例えば以下の式（４６）のように表すことができる。
【０５０４】
【数４２】
2019102889.tif 000044
【０５０５】
ステップＳ５２７の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０５０６】
以上のように変換行列導出処理を実行することにより、水平方向の１次元直交変換において、図１０に示される表の上から４段目や５段目の例の導出例を実現することができる。したがって、必要なメモリ容量の増大を抑制することができる。
【０５０７】
なお、以上においては、フリップと転置を順に行うように説明したが、フリップと転置を一括（１回の演算で）で行うようにしてもよい。例えば、図５４のステップＳ５２２およびステップＳ５２５の判定をまとめて行い、両方が真（１）である場合、フリップと転置を一括して行うようにしてもよい。
【０５０８】
例えば、このフリップおよび転置の操作は、要素毎の演算として表現すると、変換行列THのj行i列成分（(j,i)成分）に、ベース変換行列Tbaseの(i,N-1-j)成分を設定することである。つまり、以下の式（４７）のように表現することができる。
【０５０９】
【数４３】
2019102889.tif 000045
【０５１０】
ここで、N行N列の変換行列THのi行j列成分（(i,j)成分）をTH[i,j]と表記する。また２行目の「for i,j=0,...,N-1」は、iとjとがそれぞれ0乃至N-1の値を持つことを示す。すなわち、TH[i,j]がN行N列の変換行列THの全ての要素を示すことを意味する。
【０５１１】
このようにすることにより、フリップと転置を１度の操作、それも、簡単な２次元配列へのアクセスで実現することができる。また、フリップ行列Ｊが不要であるので、その分メモリ容量の増大を抑制することができる。
【０５１２】
なお、本実施例の場合、図３２のステップＳ３６１において、プライマリ垂直変換部３１３が有する変換行列導出部３５１により実行される変換行列導出処理も、この図５４のフローチャートと同様の流れで行われる。
【０５１３】
また、本実施例の場合、図４１のステップＳ４４１において、逆プライマリ垂直変換部４１２が有する変換行列導出部４２１により実行される変換行列導出処理も、この図５４のフローチャートと同様の流れで行われる。
【０５１４】
さらに、本実施例の場合、図４２のステップＳ４６１において、逆プライマリ水平変換部４１３が有する変換行列導出部４５１により実行される変換行列導出処理も、この図５４のフローチャートと同様の流れで行われる。
【０５１５】
したがって、これらについての説明は省略する。
【０５１６】
＜２−５．実施例１−４＞
＜コンセプト＞
次に、図１０に示される表において、最上段の項目名の行を除き、上から６段目の例について説明する。
【０５１７】
上述したように、上から６段目の例の導出は、上から３段目の場合（実施例１−２）と同様に、対になるDCT/DST間の特性に着目したものである。より具体的には、対になるDCT/DST間（例えばDCT8とDST7）では、偶数番目の行ベクトルが軸対称であり、奇数番目の行ベクトルが点対称である点に着目している。この場合、導出部は、第１の変換行列をフリップし、フリップ後の第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、第２の変換行列を導出する。つまり、導出部は、図５６に示されるように、DCT8の変換行列をベース変換行列Tbaseとし、それを行方向にフリップし、さらに、奇数次の行ベクトルの符号を反転してDST7の変換行列をロスレスに導出する。したがって、当然、その導出されたDST7の変換行列により、０次の行ベクトルの波形が同一の（増加型の）DST7の変換行列を代替することができる。
【０５１８】
つまり、この導出例は、２回の操作（フリップ＋符号反転）で第２の変換行列を導出することができる。また、その操作も容易である。つまり、容易に第２の変換行列を導出することができる。
【０５１９】
また、この導出例を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。
【０５２０】
この場合、図５７の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を４種類に低減させることができるので、LUTサイズの合計は約47KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０５２１】
また、この導出例の場合、第２の変換行列としてDST7の変換行列を導出することができるのであるから、この第２の変換行列を用いて直交変換・逆直交変換を行うことにより、当然、DST7の変換行列を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０５２２】
＜構成および処理の流れ＞
この場合の画像符号化装置１００および画像復号装置２００の構成は、それぞれ、＜２−３．実施例１−２＞において説明したのと同様であるのでその説明を省略する。また、画像符号化装置１００および画像復号装置２００が行う処理も、＜２−３．実施例１−２＞において説明したのと同様であるのでその説明を省略する。
【０５２３】
ただし、本実施例の場合は、変換行列導出処理において変換タイプ識別子TrTypeIdxHに対応するベース変換タイプを求める際に、例えば図５８に示されるような対応表を参照して求める。それ以外は、図４８のフローチャートを参照して説明した場合と同様の流れで行えば良い。
【０５２４】
＜２−６．実施例１−５＞
＜コンセプト＞
次に、図１０に示される表において、最上段の項目名の行を除き、上から７段目および８段目の例について説明する。
【０５２５】
上述したように、上から７段目の例の導出は、上から１段目の場合と同様に、第１の変換タイプの最低次行ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。ただし、この場合、導出部は、第１の変換行列を転置して、第２の変換行列を導出する。つまり、導出部は、図５９に示されるように、DCT2の変換行列をベース変換行列Tbaseとし、それを転置してDCT3の変換行列を導出する。このDCT3の変換行列により、０次の行ベクトルの波形が類似する（減少型の）DCT8の変換行列を代替することができる。
【０５２６】
また、上から８段目の例の導出は、上から５段目の場合と同様に、第１の変換タイプの最高次列ベクトルの波形と代替する変換行列の変換タイプの最低次行ベクトルの波形との類似性に着目したものである。この場合、導出部は、第１の変換行列を転置し、転置後の第１の変換行列をフリップして、第２の変換行列を導出する。つまり、導出部は、図５９に示されるように、DCT2の変換行列をベース変換行列Tbaseとし、それを転置し、さらに行方向にフリップして、FlipDCT3の変換行列を導出する。このFlipDCT3の変換行列により、０次の行ベクトルの波形が類似する（増加型の）DST7の変換行列を代替することができる。
【０５２７】
つまり、以上の２つの導出例は、１回または２回の操作（転置または転置＋フリップ）で第２の変換行列を導出することができる。また、その操作も容易である。つまり、容易に第２の変換行列を導出することができる。
【０５２８】
また、以上の２つの導出例を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列およびDST7の変換行列を用意する必要が無くなる。つまり、固有変換タイプを削減することができる。
【０５２９】
この場合、図６０の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を３種類に低減させることができるので、LUTサイズの合計は約40KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０５３０】
なお、上述したように、この場合も、導出された第２の変換タイプ（DCT3やFlipDCT3）の変換行列を用いて直交変換・逆直交変換を行うことにより、DCT8の変換行列やDST7の変換行列を直交変換・逆直交変換に用いる場合と同程度の符号化効率が得られる。
【０５３１】
＜構成＞
この場合の画像符号化装置１００および画像復号装置２００の構成は、それぞれ、＜２−２．実施例１−１＞において説明したのと同様であるのでその説明を省略する。
【０５３２】
＜変換行列導出処理の流れ＞
次に処理の流れについて説明する。変換行列導出処理以外の処理は＜２−２．実施例１−１＞等において上述した例と同様の流れで行われるので、それらの説明は省略する。
【０５３３】
図２８のステップＳ３２１において、プライマリ水平変換部３１２が有する変換行列導出部３２１により実行される変換行列導出処理の流れの例を、図６１のフローチャートを参照して説明する。
【０５３４】
変換行列導出処理が開始されると、変換行列導出部３２１は、ステップＳ５４１において、変換タイプ識別子TrTypeIdxHに対応するベース変換タイプBaseTrTypeを、例えば、図６２に示されるような対応表を参照して求める。
【０５３５】
また、変換行列導出部３２１は、図３０のフローチャートのステップＳ３４１の場合と同様に、変換タイプ識別子TrTypeIdxHに対応するフリップフラグFlipFlagの値と、変換タイプ識別子TrTypeIdxHに対応する転置フラグTransposeFlagの値を設定する。
【０５３６】
ステップＳ５４２において、変換行列導出部３２１は、転置フラグTransposeFlagが以下の式（４８）で表される条件（ConditionD1）を満たすか否かを判定する。
【０５３７】
【数４４】
2019102889.tif 000046
【０５３８】
上述の条件（ConditionD1）を満たさないと判定された場合（転置フラグTransposeFlagが偽（０）の場合）、処理はステップＳ５４３に進む。
【０５３９】
ステップＳ５４３において、変換行列導出部３２１は、図３０のステップＳ３４３の場合と同様に、ベース変換行列Tbaseを変換行列THに設定する。ステップＳ５４３の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０５４０】
また、ステップＳ５４２において、上述の条件（ConditionD1）を満たすと判定された場合（転置フラグTransposeFlagが真（１）の場合）、処理はステップＳ５４４に進む。
【０５４１】
ステップＳ５４４において、変換行列導出部３２１は、ベース変換行列Tbaseを水平方向に転置し、その転置した変換行列Tr（Tbase）を変換行列Ttmpへ設定する。この処理は、以下の式（４９）のように表すことができる。
【０５４２】
【数４５】
2019102889.tif 000047
【０５４３】
ステップＳ５４５において、変換行列導出部３２１は、フリップフラグFlipFlagが以下の式（５０）で表される条件（ConditionD2）を満たすか否かを判定する。
【０５４４】
【数４６】
2019102889.tif 000048
【０５４５】
上述の条件（ConditionD2）を満たさないと判定された場合（フリップフラグFlipFlagが偽（０）の場合）、処理はステップＳ５４６に進む。
【０５４６】
ステップＳ５４６において、変換行列導出部３２１は、上述の式（４５）のように、変換行列Ttmpを変換行列THへ設定する。
【０５４７】
ステップＳ５４６の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。また、ステップＳ５４５において上述の条件（ConditionD2）を満たすと判定された場合（フリップフラグFlipFlagが真（１）の場合）、処理はステップＳ５４７に進む。
【０５４８】
ステップＳ５４７において、変換行列導出部３２１は、変換行列TtmpをフリップしたFlip(Ttmp)を変換行列THに設定する。この処理は、例えば以下の式（５１）のように表すことができる。
【０５４９】
【数４７】
2019102889.tif 000049
【０５５０】
ステップＳ５４７の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０５５１】
以上のように変換行列導出処理を実行することにより、水平方向の１次元直交変換において、図１０に示される表の上から７段目や８段目の例の導出例を実現することができる。したがって、必要なメモリ容量の増大を抑制することができる。
【０５５２】
なお、以上においては、転置とフリップを順に行うように説明したが、転置とフリップを一括（１回の演算で）で行うようにしてもよい。例えば、図６１のステップＳ５４２およびステップＳ５４５の判定をまとめて行い、両方が真（１）である場合、転置とフリップを一括して行うようにしてもよい。
【０５５３】
例えば、この転置およびフリップの操作は、要素毎の演算として表現すると、変換行列THのi行（N-1-j）列成分（(i,(N-1-j))成分）に、ベース変換行列Tbaseの(j,i)成分を設定することである。つまり、以下の式（５２）のように表現することができる。
【０５５４】
【数４８】
2019102889.tif 000050
【０５５５】
ここで、N行N列の変換行列THのi行j列成分（(i,j)成分）をTH[i,j]と表記する。また２行目の「for i,j=0,...,N-1」は、iとjとがそれぞれ0乃至N-1の値を持つことを示す。すなわち、TH[i,j]がN行N列の変換行列THの全ての要素を示すことを意味する。
【０５５６】
このようにすることにより、転置とフリップを１度の操作、それも、簡単な２次元配列へのアクセスで実現することができる。また、フリップ行列Ｊが不要であるので、その分メモリ容量の増大を抑制することができる。
【０５５７】
なお、本実施例の場合、図３２のステップＳ３６１において、プライマリ垂直変換部３１３が有する変換行列導出部３５１により実行される変換行列導出処理も、この図６１のフローチャートと同様の流れで行われる。例えば、図６１のフローチャートにおいて、変換タイプ識別子TrTypeIdxHをTrTypeIdxVへ、変換行列THを変換行列TVへ置き換えて解釈すればよい。
【０５５８】
また、本実施例の場合、図４１のステップＳ４４１において、逆プライマリ垂直変換部４１２が有する変換行列導出部４２１により実行される変換行列導出処理も、この図６１のフローチャートと同様の流れで行われる。例えば、図６１のフローチャートにおいて、変換タイプ識別子TrTypeIdxHをTrTypeIdxVへ、変換行列THを変換行列TVへ置き換えて解釈すればよい。
【０５５９】
さらに、本実施例の場合、図４２のステップＳ４６１において、逆プライマリ水平変換部４１３が有する変換行列導出部４５１により実行される変換行列導出処理も、この図６１のフローチャートと同様の流れで行われる。
【０５６０】
したがって、これらについての説明は省略する。
【０５６１】
＜３．第２の実施の形態＞
＜３−１．共通コンセプト＞
＜予測残差の置換操作＞
第１の実施の形態においては、変換行列を操作して他の変換行列を生成する旨を説明したが、変換行列だけでなく予測残差を操作するようにしてもよい。つまり、画像の予測残差を置換操作し、ベースとなる変換行列を用いて、置換操作された予測残差を直交変換し、その予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成するようにしてもよい。
【０５６２】
例えば、画像処理装置において、画像の予測残差を置換操作する操作部と、ベースとなる変換行列を用いて、その操作部により置換操作された予測残差を直交変換する直交変換部と、その直交変換部により予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部とを備えるようにしてもよい。
【０５６３】
このようにしても、第１の実施の形態の場合と等価の２次元直交変換を実現することができる。つまり、ある変換行列を用いた直交変換により、実質的に他の変換行列による直交変換を実現することができる。したがって、第１の実施の形態の場合と同様に、直交変換のために用意する変換行列の数の増大を抑制することができ、直交変換に必要なメモリ容量の増大を抑制することができる。また、第１の実施の形態の場合と比べて操作の回数を低減させることができるので、直交変換の処理量の増大を抑制することができる。
【０５６４】
また、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、その得られた係数データを逆直交変換し、その得られた係数データの逆直交変換結果を置換操作するようにしてもよい。
【０５６５】
例えば、画像処理装置において、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、その復号部により得られた係数データを逆直交変換する逆直交変換部と、その逆直交変換部により得られた係数データの逆直交変換結果を置換操作する操作部とを備えるようにしてもよい。
【０５６６】
このようにしても、第１の実施の形態の場合と等価の逆２次元直交変換を実現することができる。つまり、ある変換行列を用いた逆直交変換により、実質的に他の変換行列による逆直交変換を実現することができる。したがって、第１の実施の形態の場合と同様に、逆直交変換のために用意する変換行列の数の増大を抑制することができ、逆直交変換に必要なメモリ容量の増大を抑制することができる。また、第１の実施の形態の場合と比べて操作の回数を低減させることができるので、逆直交変換の処理量の増大を抑制することができる。
【０５６７】
より具体的に説明する。異なる２つの２次元直交変換（予測残差を含む）の空間対称性に着目すると、例えば、DST7の変換行列とそのDST7の変換行列をフリップしたFlipDST7の変換行列との間のように、ある方向（水平方向または垂直方向）において、１次元直交変換の間に軸対称がある場合がある。また、例えば、予測残差についても、予測残差（X）とその予測残差をフリップしたもの（X・J）との間に、ある方向（水平方向または垂直方向）において、予測残差の間に軸対称性がある場合がある。
【０５６８】
このような場合、例えば図６３に示されるように、元の予測残差をフリップしたものを、第１の変換行列を用いて直交変換することにより、第１の変換行列をフリップした第２の変換行列を用いたその元の予測残差の直交変換を代替することができる。
【０５６９】
図６３の例の場合、図中左側においては、以下の式（５３）のように、元の予測残差に対して、第１の変換行列を用いた垂直方向の一次元直交変換と、フリップした第１の変換行列を用いた水平方向の一次元直交変換とが行われている。
【０５７０】
【数４９】
2019102889.tif 000051
【０５７１】
これに対して、図中右側には、予測残差のフリップ（以下の式（５４））と、そのフリップした予測残差に対する第１の変換行列を用いた垂直方向および水平方向の一次元直交変換（以下の式（５５））が示されている。
【０５７２】
【数５０】
2019102889.tif 000052
【０５７３】
このような２つの２次元直交変換には、空間対称性が生じる。したがって一方で他方を代替可能である。
【０５７４】
換言するに、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、予測残差の直交変換に用いる変換行列との間に空間対称性が存在する場合、上述のように、予測残差をその空間対称性の方向にフリップし、そのフリップした予測残差をベースとなる変換行列により直交変換することにより、他の変換行列による直交変換（ベースとなる変換行列を用いて導出した変換行列を用いた、フリップする前の予測残差の直交変換）を代替することができる。
【０５７５】
つまり、操作部が、予測残差を、１次元直交変換の間の空間対称性の方向にフリップし、直交変換部が、その操作部によりフリップされた予測残差を、ベースとなる変換行列を用いて直交変換するようにしてもよい。このようにすることにより、他の変換行列による直交変換と等価の直交変換を行うことができる。つまり、上述のように、実質的に他の変換行列による直交変換を実現することができる。したがって、直交変換のために用意する変換行列の数の増大を抑制することができ、直交変換に必要なメモリ容量の増大を抑制することができる。
【０５７６】
このことは、逆直交変換についても同様である。つまり、ビットストリームを復号して得られた係数データを、ベースとなる変換行列を用いて逆直交変換し、操作部が、その逆直交変換結果を、１次元直交変換の間の空間対称性の方向にフリップするようにしてもよい。このようにすることにより、実質的に他の変換行列による逆直交変換を実現することができるので、逆直交変換のために用意する変換行列の数の増大を抑制することができ、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０５７７】
例えば、図６４の左側には、予測残差Xに対して、DST7の変換行列をフリップしたFlipDST7を用いた水平方向の１次元直交変換と、DST7の変換行列を用いた垂直方向の１次元直交変換とを行う２次元直交変換が示される。また、図６４の右側には、予測残差Xを水平方向にフリップした予測残差X'（= X・J）に対して、DST7の変換行列を用いた水平方向・垂直方向の１次元直交変換を行う２次元直交変換が示される。これらは互いに水平方向に対称性を有しており、等価である。したがって、例えば後者の２次元直交変換により、前者の２次元直交変換を代替することができる。なお、前者の２次元直交変換は以下の式（５６）のように表現され、後者の２次元直交変換は以下の式（５７）のように表現される。
【０５７８】
【数５１】
2019102889.tif 000053
【０５７９】
つまり、例えば、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、予測残差の直交変換に用いる変換行列との間に水平方向の対称性が存在する場合、操作部が、予測残差を水平方向にフリップし、直交変換部が、その操作部により水平方向にフリップされた予測残差を、ベースとなる変換行列を用いて直交変換するようにしてもよい。このようにすることにより、実質的に、ベースとなる変換行列による直交変換との間に水平方向の対称性が存在する他の変換行列による直交変換を実現することができる。
【０５８０】
逆直交変換についても同様である。つまり、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、係数データの逆直交変換に用いる変換行列との間に水平方向の対称性が存在する場合、逆直交変換部が、ビットストリームを復号して得られた係数データを、ベースとなる変換行列を用いて逆直交変換し、操作部が、その逆直交変換結果を、水平方向にフリップするようにしてもよい。このようにすることにより、実質的に、ベースとなる変換行列による逆直交変換との間に水平方向の対称性が存在する他の変換行列による逆直交変換を実現することができる。
【０５８１】
また例えば、図６５の左側には、予測残差Xに対して、DST7の変換行列を用いた水平方向の１次元直交変換と、DST7の変換行列をフリップしたFlipDST7を用いた垂直方向の１次元直交変換とを行う２次元直交変換が示される。また、図６５の右側には、予測残差Xを垂直方向にフリップした予測残差X'（= J・X）に対して、DST7の変換行列を用いた水平方向・垂直方向の１次元直交変換を行う２次元直交変換が示される。これらは互いに垂直方向に対称性を有しており、等価である。したがって、例えば後者の２次元直交変換により、前者の２次元直交変換を代替することができる。なお、前者の２次元直交変換は以下の式（５８）のように表現され、後者の２次元直交変換は以下の式（５９）のように表現される。
【０５８２】
【数５２】
2019102889.tif 000054
【０５８３】
つまり、例えば、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、予測残差の直交変換に用いる変換行列との間に垂直方向の対称性が存在する場合、操作部が、予測残差を垂直方向にフリップし、直交変換部が、その操作部により垂直方向にフリップされた予測残差を、ベースとなる変換行列を用いて直交変換するようにしてもよい。このようにすることにより、実質的に、ベースとなる変換行列による直交変換との間に垂直方向の対称性が存在する他の変換行列による直交変換を実現することができる。
【０５８４】
逆直交変換についても同様である。つまり、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、係数データの逆直交変換に用いる変換行列との間に垂直方向の対称性が存在する場合、逆直交変換部が、ビットストリームを復号して得られた係数データを、ベースとなる変換行列を用いて逆直交変換し、操作部が、その逆直交変換結果を、垂直方向にフリップするようにしてもよい。このようにすることにより、実質的に、ベースとなる変換行列による逆直交変換との間に垂直方向の対称性が存在する他の変換行列による逆直交変換を実現することができる。
【０５８５】
さらに例えば、図６６の左側には、予測残差Xに対して、DST7の変換行列をフリップしたFlipDST7を用いた水平方向・垂直方向の１次元直交変換を行う２次元直交変換が示される。また、図６６の右側には、予測残差Xを水平方向・垂直方向にフリップした予測残差X'（= J・X・J）に対して、DST7の変換行列を用いた水平方向・垂直方向の１次元直交変換を行う２次元直交変換が示される。これらは互いに水平方向・垂直方向の両方に対称性を有しており、等価である。したがって、例えば後者の２次元直交変換により、前者の２次元直交変換を代替することができる。なお、前者の２次元直交変換は以下の式（６０）のように表現され、後者の２次元直交変換は以下の式（６１）のように表現される。
【０５８６】
【数５３】
2019102889.tif 000055
【０５８７】
つまり、例えば、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、予測残差の直交変換に用いる変換行列との間に水平方向および垂直方向の対称性が存在する場合、操作部が、予測残差を水平方向および垂直方向にフリップし、直交変換部が、その操作部により水平方向および垂直方向にフリップされた予測残差を、ベースとなる変換行列を用いて直交変換するようにしてもよい。このようにすることにより、実質的に、ベースとなる変換行列による直交変換との間に水平方向および垂直方向の対称性が存在する他の変換行列による直交変換を実現することができる。
【０５８８】
逆直交変換についても同様である。つまり、ベースとなる変換行列（変換タイプ）と、その変換行列を用いて導出した、係数データの逆直交変換に用いる変換行列との間に水平方向および垂直方向の対称性が存在する場合、逆直交変換部が、ビットストリームを復号して得られた係数データを、ベースとなる変換行列を用いて逆直交変換し、操作部が、その逆直交変換結果を、水平方向および垂直方向にフリップするようにしてもよい。このようにすることにより、実質的に、ベースとなる変換行列による逆直交変換との間に水平方向および垂直方向の対称性が存在する他の変換行列による逆直交変換を実現することができる。
【０５８９】
なお、上述の式（６０）の場合、変換行列T1とT2をそれぞれフリップするので、操作が２回必要になる。これに対して、上述の式（６１）の場合、予測残差のフリップ（J・X・J）は、置換行列Pと予測残差Xとの行列積に置換することができる。すなわち、１回の操作で行うことができる。したがって、上述の式（６０）の場合（変換行列をフリップする場合）に比べて、操作の回数を低減させることができ、直交変換・逆直交変換の処理量の増大を抑制することができる（直交変換・逆直交変換をより容易に行うことができる）。すなわち、直交変換・逆直交変換の処理の負荷の増大を抑制することができる。また、直交変換・逆直交変換をより高速に行うことができる。
【０５９０】
＜変換行列の符号反転＞
以上の予測残差の置換操作とともに、変換行列の操作も適用するようにしてもよい。例えば、導出部が第１の変換行列を用いて第２の変換行列を導出し、操作部が予測残差を１次元直交変換の間の空間対称性の方向にフリップし、直交変換部が、操作部によりフリップされた予測残差を、導出部により導出された第２の変換行列を用いて直交変換するようにしてもよい。このようにすることにより、実質的に他の変換行列による直交変換を実現することができる。したがって、直交変換のために用意する変換行列の数の増大を抑制することができ、直交変換に必要なメモリ容量の増大を抑制することができる。
【０５９１】
逆直交変換についても同様である。例えば、導出部が第１の変換行列を用いて第２の変換行列を導出し、逆直交変換部が、導出部により導出された第２の変換行列を用いて、復号部により得られた係数データを逆直交変換し、操作部が、逆直交変換部により得られた係数データの逆直交変換結果を置換操作するようにしてもよい。このようにすることにより、実質的に他の変換行列による逆直交変換を実現することができる。したがって、逆直交変換のために用意する変換行列の数の増大を抑制することができ、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０５９２】
なお、この直交変換または逆直交変換における第２の変換行列の導出の際、導出部が、第１の変換行列と行数および列数が同一の第２の変換行列を導出するようにしてもよい。行数および列数を変化させる場合、波形のタイプが意図せずに変化する可能性がある。したがって、行数および列数を第１の変換行列と同一とすることにより、波形のタイプの意図しない変化が生じる可能性を抑制することができ、第２の変換行列の導出をより容易に行うことができる。
【０５９３】
また、その第２の変換行列の導出の際に、導出部が、第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、第２の変換行列を導出するようにしてもよい。このように導出した第２の変換行列を用いて、上述のように予測残差を置換操作した直交変換することにより、第１の変換行列に対して偶数番目の行ベクトルが軸対称であり、奇数番目の行ベクトルが点対称である他の変換行列による予測残差の直交変換を実現する（代替する）ことができる。また、このように導出した第２の変換行列を用いて逆直交変換し、その逆直交変換結果を上述のように置換操作することにより、第１の変換行列に対して偶数番目の行ベクトルが軸対称であり、奇数番目の行ベクトルが点対称である他の変換行列を用いた逆直交変換を実現する（代替する）ことができる。
【０５９４】
＜予測残差の操作例＞
以上のような他の変換行列による直交変換・逆直交変換を代替するための予測残差の操作例の一覧を図６７に示す。
【０５９５】
図６７に示される表において、最上段の項目名の行を除き、上から１段目の例の操作は、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）に、１次元直交変換の間の軸対称があることに着目したものである。
【０５９６】
この場合、操作部は、予測残差を、１次元直交変換の間の空間対称性の方向にフリップし、直交変換部は、その操作部によりフリップされた予測残差を、ベースとなる変換行列を用いて直交変換する。より具体的には、操作部が予測残差をフリップし、直交変換部がDST7の変換行列をベース変換行列Tbaseとし、フリップされた予測残差をそのDST7の変換行列を用いて直交変換する。このようにすることにより、FlipDST7の変換行列を用いたフリップされていない予測残差の直交変換を代替することができる。なお、予測残差のフリップの方向は、空間対称性の方向（水平方向若しくは垂直方向、またはその両方）に対応する。
【０５９７】
逆直交変換の場合も同様である。逆直交変換部は、ビットストリームを復号して得られた係数データを、ベースとなる変換行列を用いて逆直交変換し、操作部は、その逆直交変換結果を、１次元直交変換の間の空間対称性の方向にフリップする。より具体的には、逆直交変換部が、DST7の変換行列を用いて係数データを逆直交変換し、操作部がその逆直交変換結果をフリップする。このようにすることにより、FlipDST7の変換行列を用いた係数データの逆直交変換を代替することができる。なお、逆直交変換結果のフリップの方向は、空間対称性の方向（水平方向若しくは垂直方向、またはその両方）に対応する。
【０５９８】
このような予測残差（逆直交変換結果も含む）に対する操作を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてFlipDST7の変換行列を用意する必要が無くなる。つまり、第１の実施の形態の場合と同様に、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、このような予測残差（逆直交変換結果も含む）の操作を伴う直交変換・逆直交変換を行うことにより、FlipDST7の変換行列を用いる直交変換・逆直交変換の場合と同程度の符号化効率が得られる。
【０５９９】
また、そのFlipDST7の変換行列を用いる直交変換・逆直交変換の場合と比較して、予測残差（逆直交変換結果も含む）に対する２次元のフリップ操作を一括した操作で行うことができるので、フリップ操作の回数を低減することができる。したがって、直交変換・逆直交変換の処理量の増大を抑制することができる（直交変換・逆直交変換をより容易に行うことができる）。すなわち、直交変換・逆直交変換の処理の負荷の増大を抑制することができる。また、直交変換・逆直交変換をより高速に行うことができる。
【０６００】
また、その１段下の（上から２段目の）例の操作は、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）についての１次元直交変換の間の類似性に着目したものである。より具体的には、偶数番目の行ベクトルが軸対称性を持ち、奇数番目の行ベクトルが点対称性を持つことに着目している。
【０６０１】
この場合、導出部が、第１の変換行列を用いて第２の変換行列を導出し、操作部が、画像の予測残差を置換操作し、直交変換部が、その操作部により置換操作された予測残差を、導出部により導出された第２の変換行列を用いて直交変換する。より具体的には、導出部が、DST7の変換行列の奇数番目の行ベクトルを符号反転し、操作部が、予測残差をフリップし、直交変換部が、フリップされた予測残差を、導出部により導出された、DST7の変換行列の奇数番目の行ベクトルを符号反転した変換行列を用いて直交変換する。このようにすることにより、DCT8の変換行列を用いたフリップされていない予測残差の直交変換を代替することができる。
【０６０２】
なお、予測残差のフリップの方向は、空間対称性の方向（水平方向若しくは垂直方向、またはその両方）に対応する。また、変換行列への操作は奇数番目の行ベクトルに対する符号反転だけなので、導出部により導出される変換行列の行数および列数は、DST7の変換行列と同一である。
【０６０３】
逆直交変換の場合も同様である。導出部が、第１の変換行列を用いて第２の変換行列を導出し、逆直交変換部が、ビットストリームを復号して得られた係数データを、その第２の変換行列を用いて逆直交変換し、操作部が、その逆直交変換結果を、１次元直交変換の間の空間対称性の方向にフリップする。より具体的には、導出部が、DST7の変換行列の奇数番目の行ベクトルを符号反転し、逆直交変換部が、その奇数番目の行ベクトルが符号反転されたDST7の変換行列を用いて係数データを逆直交変換し、操作部がその逆直交変換結果をフリップする。このようにすることにより、DCT8の変換行列を用いた係数データの逆直交変換を代替することができる。
【０６０４】
なお、逆直交変換結果のフリップの方向は、空間対称性の方向（水平方向若しくは垂直方向、またはその両方）に対応する。また、変換行列への操作は奇数番目の行ベクトルに対する符号反転だけなので、導出部により導出される変換行列の行数および列数は、DST7の変換行列と同一である。
【０６０５】
このような予測残差（逆直交変換結果も含む）に対する操作を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列を用意する必要が無くなる。つまり、第１の実施の形態の場合と同様に、固有変換タイプを削減することができる。すなわち、LUTサイズの増大を抑制することができる。また、このような予測残差（逆直交変換結果も含む）の操作を伴う直交変換・逆直交変換を行うことにより、DCTの変換行列を用いる直交変換・逆直交変換の場合と同一の符号化効率が得られる。
【０６０６】
また、その１段下の（上から３段目の）例の操作は、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）に、１次元直交変換の間の軸対称があることに着目したものであり、上から１段目と同一の操作である。
【０６０７】
ただし、この場合、DCT8の変換行列をベース変換行列Tbaseとしている。したがって、このようにすることにより、FlipDCT8の変換行列を用いたフリップされていない予測残差の直交変換を代替することができる。逆直交変換の場合も同様である。つまり、このようにすることにより、FlipDCT8の変換行列を用いた係数データの逆直交変換を代替することができる。
【０６０８】
また、その１段下の（上から４段目の）例の操作は、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）についての１次元直交変換の間の類似性（偶数番目の行ベクトルが軸対称性を持ち、奇数番目の行ベクトルが点対称性を持つこと）に着目したものであり、上から２段目と同一の操作である。
【０６０９】
ただし、この場合、DCT8の変換行列をベース変換行列Tbaseとしている。したがって、このようにすることにより、DST7の変換行列を用いたフリップされていない予測残差の直交変換を代替することができる。逆直交変換の場合も同様である。つまり、このようにすることにより、DST7の変換行列を用いた係数データの逆直交変換を代替することができる。
【０６１０】
なお、上述した各導出例は、それぞれ単独で実施するようにしてもよいし、複数の導出例を組み合わせて実施するようにしてもよい。また、上述した例では、ベース変換タイプ（第１の変換タイプ）の例として、DST7、あるいはDCT8を用いて説明したが、図８にある通り同型の波形形状を有する変換タイプに置き換えても実現することができる。例えば、DST7をDST4、DST8、DST3など同型の波形形状を有するその他の直交変換に置き換えてもよい。同様に、DCT8をDCT3、DCT7、DCT4など同型の波形形状を有するその他の直交変換に置き換えてもよい。
【０６１１】
＜構成および処理の流れ＞
このような予測残差の置換操作を行う画像符号化装置１００の構成は、第１の実施の形態の場合と同様である。そして、この画像符号化装置１００において、直交変換部１１３は、操作部および直交変換部として、上述した本技術を適用した処理を行う。また、符号化部１１５は、符号化部として、上述した本技術を適用した処理を行う。さらに逆直交変換部１１８は、逆直交変換部および操作部として、上述した本技術を適用した処理を行う。したがって、画像符号化装置１００は、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０６１２】
また、直交変換部１１３の構成は、第１の実施の形態の場合と同様である。そして、この直交変換部１１３において、プライマリ変換部１５２は、操作部および直交変換部として、上述した本技術を適用した処理を行う。つまり、操作部は、画像の予測残差を置換操作し、直交変換部は、ベースとなる変換行列を用いて、その操作部により置換操作された予測残差に対するプライマリ変換を行う。したがって、プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０６１３】
なお、上述のようにプライマリ変換部１５２は、プライマリ変換として、プライマリ水平変換とプライマリ垂直変換とを行う。つまり、操作部は、画像の予測残差を置換操作し、直交変換部は、その置換操作された予測残差に対して、プライマリ変換として、ベースとなる水平方向の１次元直交変換用の第２の変換行列を用いて、水平方向の１次元直交変換を行い、さらに、ベースとなる垂直方向の１次元直交変換用の第２の変換行列を用いて、垂直方向の１次元直交変換を行う。したがって、このような、水平方向の１次元直交変換および垂直方向の１次元直交変換が行われるプライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０６１４】
なお、画像符号化装置１００により実行される画像符号化処理の流れは、第１の実施の形態の場合と同様である。つまり、以上のような流れの画像符号化処理において、ステップＳ１０６の処理として、上述した本技術を適用した処理が行われる。また、ステップＳ１０９の処理として、上述した本技術を適用した処理が行われる。さらに、ステップＳ１１３の処理として、上述した本技術を適用した処理が行われる。したがって、この画像符号化処理を実行することにより、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０６１５】
また、その画像符号化処理のステップＳ１０６において実行される直交変換処理の流れは、第１の実施の形態の場合と同様である。つまり、以上のような流れの直交変換処理において、ステップＳ１３２の処理として、上述した本技術を適用した処理が行われる。したがって、この直交変換処理を実行することにより、プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０６１６】
また、復号側も同様である。つまり、このような逆直交変換結果の置換操作を行う画像復号装置２００の構成は、第１の実施の形態の場合と同様である。そして、この画像復号装置２００において、逆直交変換部２１４は、逆直交変換部および操作部として、上述した本技術を適用した処理を行う。また、復号部２１２は、復号部として、上述した本技術を適用した処理を行う。したがって、画像復号装置２００は、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０６１７】
また、逆直交変換部２１４の構成は、第１の実施の形態の場合と同様である。そして、この逆直交変換部２１４において、逆プライマリ変換部２５３は、逆直交変換部および操作部として、上述した本技術を適用した処理を行う。つまり、逆直交変換部は、ベースとなる変換行列を用いて、逆セカンダリ変換結果に対する逆プライマリ変換を行い、操作部は、得られた逆プライマリ変換結果を置換操作する。したがって、逆プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０６１８】
なお、上述のように逆プライマリ変換部２５３は、逆プライマリ変換として、逆プライマリ垂直変換と逆プライマリ水平変換とを行う。つまり、逆直交変換部は、逆セカンダリ変換結果に対して、逆プライマリ変換として、ベースとなる垂直方向の逆１次元直交変換用の第２の変換行列を用いて、垂直方向の逆１次元直交変換を行い、さらに、ベースとなる水平方向の逆１次元直交変換用の第２の変換行列を用いて、水平方向の逆１次元直交変換を行う。したがって、このような、垂直方向の逆１次元直交変換および水平方向の逆１次元直交変換が行われるプライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０６１９】
なお、画像復号装置２００により実行される画像復号処理の流れは、第１の実施の形態の場合と同様である。つまり、以上のような流れの画像復号処理において、ステップＳ２０２の処理として、上述した本技術を適用した処理が行われる。また、ステップＳ２０４の処理として、上述した本技術を適用した処理が行われる。したがって、この画像復号処理を実行することにより、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０６２０】
また、その画像復号処理のステップＳ２０４において実行される逆直交変換処理の流れは、第１の実施の形態の場合と同様である。つまり、以上のような流れの逆直交変換処理において、ステップＳ２３３の処理として、上述した本技術を適用した処理が行われる。したがって、この逆直交変換処理を実行することにより、逆プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０６２１】
＜３−２．実施例２−１＞
＜コンセプト＞
次に、図６７を参照して説明した各導出例について、より詳細に説明する。最初に、図６７に示される表において、最上段の項目名の行を除き、上から１段目の例の操作は、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）に、１次元直交変換の間の軸対称があることに着目したものである。
【０６２２】
この場合、操作部は、予測残差をフリップする。直交変換部は、そのフリップされた予測残差を、ベース変換行列（DST7の変換行列）を用いて直交変換する。このようにすることにより、DST7の変換行列をフリップしたFlipDST7（＜２−２．実施例１−１＞参照）の変換行列を用いた予測残差の直交変換を代替することができる。
【０６２３】
逆直交変換についても同様である。この場合、逆直交変換部は、係数データを、ベース変換行列（DST7の変換行列）を用いて逆直交変換し、操作部は、逆直交変換結果をフリップする。このようにすることにより、DST7の変換行列をフリップしたFlipDST7の変換行列を用いた係数データ（変換係数Coeff_IQ）の逆直交変換を代替することができる。
【０６２４】
このような予測残差（逆直交変換結果も含む）に対する操作を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてFlipDST7の変換行列を用意する必要が無くなる。つまり、第１の実施の形態の場合と同様に、固有変換タイプを削減することができる。
【０６２５】
この場合、図６８の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を４種類に低減させることができるので、LUTサイズの合計は約47KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０６２６】
また、そのFlipDST7の変換行列を用いる直交変換・逆直交変換の場合と比較して、予測残差（逆直交変換結果も含む）に対する２次元のフリップ操作を一括した操作で行うことができるので、フリップ操作の回数を低減することができる。したがって、直交変換・逆直交変換の処理量の増大を抑制することができる（直交変換・逆直交変換をより容易に行うことができる）。
【０６２７】
また、このような予測残差（逆直交変換結果も含む）の操作を伴う直交変換・逆直交変換を行うことにより、FlipDST7の変換行列を用いる直交変換・逆直交変換の場合と同程度の符号化効率が得られる。
【０６２８】
＜プライマリ変換部＞
次に、このような処理を行うための構成や処理等について説明する。図６９は、この場合のプライマリ変換部１５２の主な構成例を示すブロック図である。図６９に示されるように、この場合のプライマリ変換部１５２は、図２２に示される構成に加え、予測残差置換操作部５５１を有する。
【０６２９】
プライマリ変換選択部３１１は、導出したプライマリ水平変換の変換タイプ識別子TrTypeIdxHおよびプライマリ垂直変換の変換タイプ識別子TrTypeIdxVを予測残差置換操作部５５１にも供給する。
【０６３０】
予測残差置換操作部５５１は、スイッチ１５１から供給される予測残差D、並びに、プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよびプライマリ垂直変換の変換タイプ識別子TrTypeIdxVを入力とする。予測残差置換操作部５５１は、予測残差Dを、変換タイプ識別子TrTypeIdxHおよび変換タイプ識別子TrTypeIdxVに応じてフリップする。予測残差置換操作部５５１は、そのフリップ後の予測残差Dflipをプライマリ水平変換部３１２に供給する。
【０６３１】
以上のような構成のプライマリ変換部１５２において、予測残差置換操作部５５１は、操作部として、上述した本技術を適用した処理を行う。プライマリ水平変換部３１２およびプライマリ垂直変換部３１３は、それぞれ、直交変換部として、上述した本技術を適用した処理を行う。
【０６３２】
つまり、プライマリ水平変換部３１２は、直交変換部として、ベースとなる水平方向の１次元直交変換用の変換行列を用いて、フリップ後の予測残差Dflipに対して、水平方向の１次元直交変換を行う。したがって、プライマリ水平変換部３１２は、水平方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０６３３】
また、プライマリ垂直変換部３１３は、直交変換部として、ベースとなる垂直方向の１次元直交変換用の変換行列を用いて、プライマリ水平変換後の変換係数Coeff_Phorに対して、垂直方向の１次元直交変換を行う。したがって、プライマリ垂直変換部３１３は、垂直方向の１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０６３４】
＜プライマリ変換処理の流れ＞
次に、上述した構成により行われる処理の流れの例等について説明する。この場合の、図１４のステップＳ１３２において実行されるプライマリ変換処理の流れの例を、図７０のフローチャートを参照して説明する。
【０６３５】
プライマリ変換処理が開始されると、プライマリ変換部１５２のプライマリ変換選択部３１１は、ステップＳ５６１において、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）と、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）とを、それぞれ選択する。
【０６３６】
ステップＳ５６２において、予測残差置換操作部５５１は、予測残差置換操作処理を実行し、ステップＳ５６１において得られた変換タイプ識別子TrTypeIdxHおよび変換タイプ識別子TrTypeIdxVに応じて、予測残差Dをフリップし、フリップ後の予測残差Dflipを導出する。
【０６３７】
ステップＳ５６３において、プライマリ水平変換部３１２は、プライマリ水平変換処理を行い、ステップＳ５６１において得られたプライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する変換行列を用いて、ステップＳ５６２において得られたフリップ後の予測残差Dflipに対してプライマリ水平変換を行う。
【０６３８】
ステップＳ５６４において、プライマリ垂直変換部３１３は、プライマリ垂直変換処理を行い、ステップＳ５６１において得られたプライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する変換行列を用いて、ステップＳ５６３の処理により得られるプライマリ水平変換後の変換係数Coeff_Phorに対してプライマリ垂直変換を行う。
【０６３９】
ステップＳ５６４の処理が終了するとプライマリ変換処理が終了し、処理は図１４に戻る。
【０６４０】
以上のようなプライマリ変換処理において、ステップＳ５６２乃至ステップＳ５６４の各処理として、上述した本技術を適用した処理が行われる。したがって、このプライマリ変換処理を実行することにより、プライマリ水平変換処理やプライマリ垂直変換処理に必要なメモリ容量の増大を抑制することができる。
【０６４１】
＜予測残差置換操作処理の流れ＞
図７０のステップＳ５６２において実行される予測残差置換操作処理の流れについて、図７１のフローチャートを参照して説明する。
【０６４２】
予測残差置換操作処理が開始されると、予測残差置換操作部５５１は、ステップＳ５８１において、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）に対応するフリップフラグFlipFlagHと、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）に対応するフリップフラグFlipFlagVとを導出する。その際、予測残差置換操作部５５１は、例えば、図７２に示されるような対応表（LUT_TrTypeIdxToFlipFlag）を参照してフリップフラグFlipFlagHとフリップフラグFlipFlagVとを求める。これらのフリップフラグの導出は、例えば、以下の式（６２）および式（６３）のように表すことができる。
【０６４３】
【数５４】
2019102889.tif 000056
【０６４４】
ステップＳ５８２において、予測残差置換操作部５５１は、ステップＳ５８１において導出したフリップフラグFlipFlagHおよびフリップフラグFlipFlagVが以下の式（６４）で示される条件を満たすか否かを判定する。
【０６４５】
【数５５】
2019102889.tif 000057
【０６４６】
この条件を満たすと判定された場合、すなわち、FlipFlagHが真（１）であり、かつ、FlipFlagVが偽（０）であると判定された場合、処理はステップＳ５８３に進む。
【０６４７】
ステップＳ５８３において、予測残差置換操作部５５１は、予測残差Dを水平方向にフリップしてフリップ後の予測残差Dflipを得る。この操作を行列表現すると以下の式（６５）のように表すことができる。
【０６４８】
【数５６】
2019102889.tif 000058
【０６４９】
ここで、×は行列積を表す演算子であり、FlipH(Ｘ)は、行列Ｘを水平方向へのフリップ操作を表す演算子であり、FlipV(・)に対応するフリップ行列Jは、N行N列の単位行列Ｉを左右反転したものである。また、この操作を要素毎の演算として表現する場合、予測残差置換操作部５５１は、以下の式（６６）のように、フリップ後の予測残差Dflipのi行j列成分（(i,j)成分）に、予測残差Dの(i,N-1-j)成分を設定する。
【０６５０】
【数５７】
2019102889.tif 000059
【０６５１】
ただし、予測残差Dのサイズは横幅N、縦幅M（M行N列）である。このN、Mは、以下の式（６７）および式（６８）を満たす。
【０６５２】
【数５８】
2019102889.tif 000060
【０６５３】
ステップＳ５８３の処理が終了すると、処理はステップＳ５８８に進む。また、ステップＳ５８２において、条件を満たさないと判定された場合、すなわち、FlipFlagHが偽（０）であるか、または、FlipFlagVが真（１）であると判定された場合、処理はステップＳ５８４に進む。
【０６５４】
ステップＳ５８４において、予測残差置換操作部５５１は、ステップＳ５８１において導出したフリップフラグFlipFlagHおよびフリップフラグFlipFlagVが以下の式（６９）で示される条件を満たすか否かを判定する。
【０６５５】
【数５９】
2019102889.tif 000061
【０６５６】
この条件を満たすと判定された場合、すなわち、FlipFlagHが偽（０）であり、かつ、FlipFlagVが真（１）であると判定された場合、処理はステップＳ５８５に進む。
【０６５７】
ステップＳ５８５において、予測残差置換操作部５５１は、予測残差Dを垂直方向にフリップしてフリップ後の予測残差Dflipを得る。この操作を行列表現すると以下の式（７０）のように表すことができる。
【０６５８】
【数６０】
2019102889.tif 000062
【０６５９】
ここで、×は行列積を表す演算子であり、FlipV(Ｘ)は、行列Ｘを垂直方向へのフリップ操作を表す演算子であり、FlipV(・)に対応するフリップ行列Jは、M行M列の単位行列Ｉを左右反転したものである。また、この操作を要素毎の演算として表現する場合、予測残差置換操作部５５１は、以下の式（７１）のように、フリップ後の予測残差Dflipのi行j列成分（(i,j)成分）に、予測残差Dの(M-1-i,j)成分を設定する。ただし、予測残差Dのサイズは横幅N、縦幅M（M行N列）であり、このN、Mは、上述の式（６７）および式（６８）を満たす。
【０６６０】
【数６１】
2019102889.tif 000063
【０６６１】
ステップＳ５８５の処理が終了すると、処理はステップＳ５８８に進む。また、ステップＳ５８４において、条件を満たさないと判定された場合、すなわち、FlipFlagHが真（１）であるか、または、FlipFlagVが偽（０）であると判定された場合、処理はステップＳ５８６に進む。
【０６６２】
ステップＳ５８６において、予測残差置換操作部５５１は、ステップＳ５８１において導出したフリップフラグFlipFlagHおよびフリップフラグFlipFlagVが以下の式（７２）で示される条件を満たすか否かを判定する。
【０６６３】
【数６２】
2019102889.tif 000064
【０６６４】
この条件を満たすと判定された場合、すなわち、FlipFlagHが真（１）であり、かつ、FlipFlagVが真（１）であると判定された場合、処理はステップＳ５８７に進む。
【０６６５】
ステップＳ５８７において、予測残差置換操作部５５１は、予測残差Dを水平方向および垂直方向にフリップしてフリップ後の予測残差Dflipを得る。この操作を行列表現すると以下の式（７３）のように表すことができる。
【０６６６】
【数６３】
2019102889.tif 000065
【０６６７】
ここで、×は行列積を表す演算子であり、フリップ行列J1は、N行N列の単位行列Ｉを左右反転したものであり、フリップ行列J2はM行M列の単位行列Ｉを左右反転したものである。なお、フリップ行列Jは、転置してもフリップ行列Jと等価である（JT = J）。また、この操作を要素毎の演算として表現する場合、予測残差置換操作部５５１は、以下の式（７４）のように、フリップ後の予測残差Dflipのi行j列成分（(i,j)成分）に、予測残差Dの(M-i-1,N-j-1)成分を設定する。ただし、予測残差Dのサイズは横幅N、縦幅M（M行N列）であり、このN、Mは、上述の式（６７）および式（６８）を満たす。
【０６６８】
【数６４】
2019102889.tif 000066
【０６６９】
ステップＳ５８７の処理が終了すると、処理はステップＳ５８８に進む。
【０６７０】
ステップＳ５８８において、予測残差置換操作部５５１は、以下の式（７５）のように、フリップ後の予測残差Dflipを予測残差Dとする。つまり、この予測残差D（フリップ後の予測残差Dflip）に対してプライマリ水平変換処理（図７０のステップＳ５６３）が行われる。
【０６７１】
【数６５】
2019102889.tif 000067
【０６７２】
ステップＳ５８８の処理が終了すると、予測残差置換操作処理が終了し、処理は図７０に戻る。また、ステップＳ５８６において、条件を満たさないと判定された場合、すなわち、FlipFlagHが偽（０）であるか、または、FlipFlagVが偽（０）であると判定された場合、予測残差置換操作処理が終了し、処理は図７０に戻る。
【０６７３】
以上のように予測残差置換操作処理を行うことにより、予測残差置換操作部５５１は、２次元直交変換（予測残差を含む）が有する空間対称性の方向に（すなわち、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）およびプライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）に対応する方向に）予測残差をフリップさせることができる。
【０６７４】
＜逆プライマリ変換部＞
次に、本実施例の場合の画像復号装置２００の構成について説明する。図７３は、この場合の逆プライマリ変換部２５３（図１６）の主な構成例を示すブロック図である。図７３に示されるように、この場合の逆プライマリ変換部２５３は、図３４に示される構成に加え、予測残差置換操作部５５２を有する。
【０６７５】
逆プライマリ変換選択部４１１は、導出した逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxHを予測残差置換操作部５５１にも供給する。また、逆プライマリ水平変換部４１３は、導出した逆プライマリ水平変換後の変換係数Coeff_IPhorを予測残差置換操作部５５２に供給する。
【０６７６】
予測残差置換操作部５５２は、逆プライマリ水平変換部４１３から供給される逆プライマリ水平変換後の変換係数Coeff_IPhor、並びに、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）およびプライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）を入力とする。予測残差置換操作部５５２は、逆プライマリ水平変換後の変換係数Coeff_IPhorを、変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）および変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）に応じてフリップする。予測残差置換操作部５５２は、そのフリップした変換係数Coeff_IPhor（逆プライマリ変換後の変換係数Coeff_IP）を、予測残差D'として、逆プライマリ変換部２５３の外部に出力する（演算部２１５に供給する）。
【０６７７】
以上のような構成の逆プライマリ変換部２５３において、予測残差置換操作部５５２は、操作部として、上述した本技術を適用した処理を行う。逆プライマリ垂直変換部４１２および逆プライマリ水平変換部４１３は、それぞれ、逆直交変換部として、上述した本技術を適用した処理を行う。
【０６７８】
つまり、逆プライマリ垂直変換部４１２は、逆直交変換部として、ベースとなる垂直方向の逆１次元直交変換用の変換行列を用いて、逆セカンダリ変換後の変換係数Coeff_ISに対して、垂直方向の逆１次元直交変換を行う。この変換係数が、その後、予測残差置換操作部５５２により上述のようにフリップされることにより、他の変換行列を用いた垂直方向の逆１次元直交変換を代替することができる。したがって、逆プライマリ垂直変換部４１２は、垂直方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０６７９】
また、逆プライマリ水平変換部４１３は、逆直交変換部として、ベースとなる水平方向の逆１次元直交変換用の変換行列を用いて、逆プライマリ垂直変換後の変換係数Coeff_IPverに対して、水平方向の逆１次元直交変換を行う。この変換係数が、その後、予測残差置換操作部５５２により上述のようにフリップされることにより、他の変換行列を用いた水平方向の逆１次元直交変換を代替することができる。したがって、逆プライマリ水平変換部４１３は、水平方向の逆１次元直交変換に必要なメモリ容量の増大を抑制することができる。
【０６８０】
＜逆プライマリ変換処理の流れ＞
次に、上述した構成により行われる処理の流れの例等について説明する。この場合の、図１８のステップＳ２３３において実行される逆プライマリ変換処理の流れの例を、図７４のフローチャートを参照して説明する。
【０６８１】
逆プライマリ変換処理が開始されると、逆プライマリ変換部２５３の逆プライマリ変換選択部４１１は、ステップＳ６０１において、逆プライマリ変換選択処理を行い、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）と、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）とをそれぞれ選択する。
【０６８２】
ステップＳ６０２において、逆プライマリ垂直変換部４１２は、逆プライマリ垂直変換処理を行い、ステップＳ６０１において得られた逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する変換行列を用いて、逆セカンダリ変換後の変換係数Coeff_ISに対して垂直方向の逆１次元直交変換を行う。
【０６８３】
ステップＳ６０３において、逆プライマリ水平変換部４１３は、逆プライマリ水平変換処理を行い、ステップＳ６０１において得られた逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する変換行列を用いて、ステップＳ６０２において導出された逆プライマリ垂直変換後の変換係数Coeff_IPverに対して水平方向の逆１次元直交変換を行う。
【０６８４】
ステップＳ６０４において、予測残差置換操作部５５２は、予測残差置換操作処理を行い、ステップＳ６０１において得られた逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVと、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHとを用いて、ステップＳ６０３において導出された逆プライマリ水平変換後の変換係数Coeff_IPhorをフリップし、逆プライマリ変換後の変換係数Coeff_IP（予測残差D'）を導出する。
【０６８５】
この予測残差置換操作処理は、図７１のフローチャートを参照して説明した例と同様の流れで行われる。したがって、図７１に関する説明は、適宜、予測残差Dを変換係数Coeff_IPhorに置き換える等すれば、このステップＳ６０４の処理にも適用することができるので、その説明を省略する。
【０６８６】
ステップＳ６０４の処理が終了すると逆プライマリ変換処理が終了し、処理は図１８に戻る。
【０６８７】
以上のような逆プライマリ変換処理において、ステップＳ６０２乃至ステップＳ６０４の各処理として、上述した本技術を適用した処理が行われる。したがって、この逆プライマリ変換処理を実行することにより、逆プライマリ垂直変換処理や逆プライマリ水平変換処理に必要なメモリ容量の増大を抑制することができる。
【０６８８】
＜３−３．実施例２−２＞
＜コンセプト＞
次に、図６７に示される表において、最上段の項目名の行を除き、上から２段目の例について説明する。この操作は、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）についての１次元直交変換の間の類似性に着目したものである。より具体的には、偶数番目の行ベクトルが軸対称性を持ち、奇数番目の行ベクトルが点対称性を持つことに着目している。
【０６８９】
この場合、導出部は、第１の変換行列を用いて第２の変換行列を導出し、操作部は、予測残差を置換操作し、直交変換部は、その置換操作された予測残差を、第２の変換行列を用いて直交変換する。例えば、DST7の変換行列をベース変換行列とし、導出部が、そのDST7の変換行列の奇数番目の行ベクトルの符号を反転し、操作部が、予測残差をフリップし、直交変換部が、フリップした予測残差を、奇数番目の行ベクトルを符号反転したDST7の変換行列を用いて直交変換する。このようにすることにより、DST7の変換行列をフリップし、その奇数番目の行ベクトルを符号反転した変換行列（すなわち、DCT8（＜２−３．実施例１−２＞参照））を用いた予測残差の直交変換を代替することができる。
【０６９０】
逆直交変換についても同様である。この場合、導出部は、第１の変換行列を用いて第２の変換行列を導出し、逆直交変換部は、係数データを、第２の変換行列を用いて逆直交変換し、操作部は、逆直交変換結果を置換操作する。例えば、DST7の変換行列をベース変換行列とし、導出部が、そのDST7の変換行列の奇数番目の行ベクトルの符号を反転し、逆直交変換部が、係数データを、奇数番目の行ベクトルを符号反転したDST7の変換行列を用いて逆直交変換し、操作部が、その逆直交変換結果をフリップする。このようにすることにより、DST7の変換行列をフリップし、その奇数番目の行ベクトルを符号反転した変換行列（すなわち、DCT8（＜２−３．実施例１−２＞参照））を用いた係数データ（変換係数Coeff_IQ）の逆直交変換を代替することができる。
【０６９１】
このような予測残差（逆直交変換結果も含む）に対する操作を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDCT8の変換行列を用意する必要が無くなる。つまり、第１の実施の形態の場合と同様に、固有変換タイプを削減することができる。
【０６９２】
この場合、図７５の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を４種類に低減させることができるので、LUTサイズの合計は約47KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０６９３】
＜変換行列導出部＞
この場合、プライマリ変換部１５２は、＜３−２．実施例２−１＞の場合と同様の構成を有する。また、プライマリ水平変換部３１２は、＜３−２．実施例２−１＞の場合と同様の構成を有する。また、プライマリ垂直変換部３１３は、＜３−２．実施例２−１＞の場合と同様の構成を有する。ただし、プライマリ水平変換部３１２が有する変換行列導出部３２１の内部の構成と、プライマリ垂直変換部３１３が有する変換行列導出部３５１の内部の構成とが、＜３−２．実施例２−１＞の場合と異なる。
【０６９４】
図７６は、この場合のプライマリ水平変換部３１２が有する変換行列導出部３２１の主な構成例を示すブロック図である。図７６に示されるように、この場合の変換行列導出部３２１は、変換行列LUT３３１および符号反転部５６１を有する。なお、図７６においては、データの授受を示す矢印を省略しているが、変換行列導出部３２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０６９５】
符号反転部５６１は、符号反転部５０１（図４６）と同様の処理部であり、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例（実施例２−２）の場合、変換行列導出部３２１は、符号反転部５６１を介して、変換行列LUT３３１において選択したN行N列のベース変換行列Tbaseの奇数次行ベクトルの符号を反転し、変換行列TInvSignを導出する。変換行列導出部３２１は、その変換行列TInvSignを、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０６９６】
以上のように、変換行列導出部３２１は、符号反転部５６１を用いて、図６７に示される表の上から２段目の例の、プライマリ水平変換における「ベース変換行列Tbaseの操作」を実現することができる。
【０６９７】
＜変換行列導出部＞
図７７は、この場合のプライマリ垂直変換部３１３が有する変換行列導出部３５１の主な構成例を示すブロック図である。図７７に示されるように、この場合の変換行列導出部３５１は、変換行列導出部３２１の場合と同様に、変換行列LUT３６１および符号反転部５６２を有する。なお、図７７においては、データの授受を示す矢印を省略しているが、変換行列導出部３５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０６９８】
符号反転部５６２は、符号反転部５０２（図４７）と同様の処理部であり、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例（実施例２−２）の場合、変換行列導出部３５１は、符号反転部５６２を介して、変換行列LUT３６１において選択したN行N列のベース変換行列Tbaseの奇数次行ベクトルの符号を反転し、変換行列TInvSignを導出する。符号反転部５６２は、その変換行列TInvSignを、変換行列TVとして、変換行列導出部３５１の外部に出力する（行列演算部３５２に供給する）。
【０６９９】
以上のように、変換行列導出部３５１は、符号反転部５６２を用いて、図６７に示される表の上から２段目の例の、プライマリ垂直変換における「ベース変換行列Tbaseの操作」を実現することができる。
【０７００】
＜変換行列導出処理の流れ＞
この場合のプライマリ変換処理は、＜３−２．実施例２−１＞の場合と同様の流れで行われる（図７０のフローチャートと同様の流れで行われる）ので、その説明は基本的に省略する。
【０７０１】
ただし、この場合、図７０のステップＳ５６２において実行される予測残差置換操作処理（図７１）のステップＳ５８１においては、予測残差置換操作部５５１が、図７２に示される対応表の代わりに、図７９に示される対応表（LUT_TrTypeIdxToFlipFlag）を参照してフリップフラグFlipFlagHとフリップフラグFlipFlagVとを求める。
【０７０２】
また、この場合、図７０のステップＳ５６３において実行されるプライマリ水平変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図２８のフローチャートと同様の流れで行われる）が、図２８のステップＳ３２１において実行される変換行列導出処理は、図３０の例とは異なる流れで行われる。
【０７０３】
この場合の、図２８のステップＳ３２１において、プライマリ水平変換部３１２内の変換行列導出部３２１により実行される変換行列導出処理の流れの例を、図７８のフローチャートを参照して説明する。
【０７０４】
変換行列導出処理が開始されると、変換行列導出部３２１は、ステップＳ６２１において、例えば、図７９に示される対応表（LUT_TrTypeIdxToFlipFlag）を参照し、変換タイプ識別子TrTypeIdxHに対応するベース変換タイプのベース変換行列Tbaseと、符号反転フラグInvSignFlagを導出する。
【０７０５】
ステップＳ６２２において、変換行列導出部３２１は、ステップＳ６２１において導出した符号反転フラグInvSignFlagが真（１）であるか否かを判定する。符号反転フラグInvSignFlagが偽（０）であると判定された場合、処理はステップＳ６２３に進む。
【０７０６】
ステップＳ６２３において、変換行列導出部３２１は、ステップＳ６２１において導出されたベース変換行列Tbase（DST7）を変換行列LUT３３１から読み出し、それを変換行列THに設定する。これを行列式で表すと以下の式（７６）のようになる。
【０７０７】
【数６６】
2019102889.tif 000068
【０７０８】
ステップＳ６２３の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。また、ステップＳ６２２において、符号反転フラグInvSignFlagが真（１）であると判定された場合、処理はステップＳ６２４に進む。
【０７０９】
ステップＳ６２４において、変換行列導出部３２１は、ステップＳ６２１において導出されたベース変換行列Tbase（DST7）を変換行列LUT３３１から読み出し、符号反転部５６１を介してそのベース変換行列Tbase（DST7）の奇数番目の行ベクトルを符号反転し、それを変換行列THに設定する。これを行列式で表すと以下の式（７７）のようになる。
【０７１０】
【数６７】
2019102889.tif 000069
【０７１１】
ここで、×は行列積を表す演算子であり、符号反転行列Dは、Diag(1,-1,…,(-1)N-1)からなる対角行列である。
【０７１２】
ステップＳ６２４の処理が終了すると、変換行列導出処理が終了し、処理は図２８に戻る。
【０７１３】
＜変換行列導出処理の流れ＞
なお、プライマリ垂直変換処理のステップＳ３６１（図３２）において実行される変換行列導出処理の流れは、図７８のフローチャートを参照して説明したプライマリ水平変換において実行される変換行列導出処理の場合と同様であるのでその説明を省略する。図７８の説明において、適宜、変換タイプ識別子TrTypeIdxHを変換タイプ識別子TrTypeIdxVに置き換えたり、変換行列THを変換行列TVに置き換えたりすればよい。
【０７１４】
＜変換行列導出部＞
次に、この場合の画像復号装置２００の構成について説明する。この場合も画像復号装置２００が有する逆プライマリ変換部２５３、逆プライマリ垂直変換部４１２、逆プライマリ水平変換部４１３等の構成は、＜２−２．実施例１−１＞の場合と同様であるのでその説明を省略する。
【０７１５】
図８０は、この場合の変換行列導出部４２１（逆プライマリ垂直変換部４１２が有する変換行列導出部４２１）の主な構成例を示すブロック図である。図８０に示されるように、この場合の変換行列導出部４２１は、変換行列導出部３２１と同様に、変換行列LUT４３１および符号反転部５７１を有する。なお、図８０においては、データの授受を示す矢印を省略しているが、変換行列導出部４２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０７１６】
変換行列LUT４３１は、図３６の場合と同様である。符号反転部５７１は、符号反転部５０１と同様の処理部であり、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例（実施例２−２）の場合、変換行列導出部４２１は、符号反転部５７１を介して、変換行列LUT４３１において選択したN行N列のベース変換行列Tbaseの奇数次行ベクトルの符号を反転し、変換行列TInvSignを導出する。符号反転部５７１は、その変換行列TInvSignを、変換行列TVとして、変換行列導出部４２１の外部に出力する（行列演算部４２２に供給する）。
【０７１７】
以上のように、変換行列導出部４２１は、符号反転部５７１を用いて、図６７に示される表の上から２段目の例の、逆プライマリ垂直変換における「ベース変換行列Tbaseの操作」を実現することができる。
【０７１８】
＜変換行列導出部＞
図８１は、この場合の、逆プライマリ水平変換部４１３が有する変換行列導出部４５１の主な構成例を示すブロック図である。図８１に示されるように、この場合の変換行列導出部４５１は、変換行列導出部４２１と同様に、変換行列LUT４６１および符号反転部５７２を有する。なお、図８１においては、データの授受を示す矢印を省略しているが、変換行列導出部４５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０７１９】
変換行列LUT４６１は、図８０の場合と同様である。符号反転部５７２は、符号反転部５７１と同様の処理部であり、N行N列の変換行列Tを入力とし、その変換行列Tの所定箇所の符号を反転して、符号反転後の変換行列TInvSignを出力する。この導出例（実施例２−２）の場合、変換行列導出部４５１は、符号反転部５７２を介して、変換行列LUT４６１において選択したN行N列のベース変換行列Tbaseの奇数次行ベクトルの符号を反転し、変換行列TInvSignを導出する。符号反転部５７２は、その変換行列TInvSignを、変換行列THとして、変換行列導出部４５１の外部に出力する（行列演算部４５２に供給する）。
【０７２０】
以上のように、変換行列導出部４５１は、符号反転部５１２を用いて、図６７に示される表の上から２段目の例の、逆プライマリ垂直変換における「ベース変換行列Tbaseの操作」を実現することができる。
【０７２１】
＜変換行列導出処理の流れ＞
なお、変換行列導出部４２１および変換行列導出部４５１は、図７８のフローチャートを参照して説明した場合と同様の流れで、変換行列導出処理を行うので、その説明は省略する。
【０７２２】
＜３−４．実施例２−３＞
＜コンセプト＞
次に、図６７に示される表において、最上段の項目名の行を除き、上から３段目の例について説明する。この例は、上から１段目の例と同様に、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）に、１次元直交変換の間の軸対称があることに着目したものである。
【０７２３】
この場合、操作部は、予測残差をフリップする。直交変換部は、そのフリップされた予測残差を、ベース変換行列（DCT8の変換行列）を用いて直交変換する。このようにすることにより、DCT8の変換行列をフリップしたFlipDCT8（＜２−４．実施例１−３＞参照）の変換行列を用いた予測残差の直交変換を代替することができる。
【０７２４】
逆直交変換についても同様である。この場合、逆直交変換部は、係数データを、ベース変換行列（DCT8の変換行列）を用いて逆直交変換し、操作部は、逆直交変換結果をフリップする。このようにすることにより、DCT8の変換行列をフリップしたFlipDCT8の変換行列を用いた係数データ（変換係数Coeff_IQ）の逆直交変換を代替することができる。
【０７２５】
このような予測残差（逆直交変換結果も含む）に対する操作を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてFlipDCT8の変換行列を用意する必要が無くなる。つまり、第１の実施の形態の場合と同様に、固有変換タイプを削減することができる。
【０７２６】
ただし、この場合、予測残差置換操作処理（図７１）においては、図７２に示される対応表の代わりに、図８２に示される対応表（LUT_TrTypeIdxToFlipFlag）が参照されるようにすればよい。
【０７２７】
また、逆直交変換の場合も同様であり、直交変換の場合と同様の構成により、直交変換の場合と同様の処理を行えばよい。
【０７２８】
＜３−５．実施例２−４＞
＜コンセプト＞
次に、図６７に示される表において、最上段の項目名の行を除き、上から４段目の例について説明する。この例は、上から２段目の例と同様に、異なる２つの２次元直交変換において、ある方向（水平方向若しくは垂直方向、またはその両方）についての１次元直交変換の間の類似性（偶数番目の行ベクトルが軸対称性を持ち、奇数番目の行ベクトルが点対称性を持つこと）に着目したものであり、上から２段目と同一の操作である。
【０７２９】
この場合、導出部は、第１の変換行列から第２の変換行列を導出し、操作部は、予測残差Dをフリップする。直交変換部は、そのフリップされた予測残差を、ベース変換行列（DCT8の変換行列）を符号反転したDST7の変換行列を用いて直交変換する。このようにすることにより、DCT8の変換行列をフリップして符号反転したDST7（＜２−５．実施例１−４＞参照）の変換行列を用いた予測残差の直交変換を代替することができる。
【０７３０】
逆直交変換についても同様である。この場合、導出部は、DCT8の変換行列の奇数番目の行ベクトルを符号反転し、逆直交変換部は、係数データを、奇数番目の行ベクトルを符号反転されたDCT8の変換行列（すなわちDST7）を用いて逆直交変換し、操作部は、逆直交変換結果をフリップする。このようにすることにより、DCT8の変換行列をフリップして符号反転したDST7の変換行列を用いた係数データ（変換係数Coeff_IQ）の逆直交変換を代替することができる。
【０７３１】
このような予測残差（逆直交変換結果も含む）に対する操作を適用することにより、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列を用意する必要が無くなる。つまり、第１の実施の形態の場合と同様に、固有変換タイプを削減することができる。
【０７３２】
ただし、この場合、予測残差置換操作処理（図７１）においては、図７９に示される対応表の代わりに、図８３に示される対応表（LUT_TrTypeIdxToFlipFlag）が参照されるようにすればよい。
【０７３３】
また、逆直交変換の場合も同様であり、直交変換の場合と同様の構成により、直交変換の場合と同様の処理を行えばよい。
【０７３４】
＜４．第３の実施の形態＞
＜４−１．共通コンセプト＞
＜部分行列を用いた変換行列の導出＞
第１の実施の形態においては、変換行列を用いて他の変換行列を導出する旨を説明したが、これに限らず、変換行列の一部である部分行列を用意し、その部分行列を用いて変換行列を導出するようにしてもよい。
【０７３５】
つまり、変換行列の一部を構成する部分行列を用いてその変換行列を導出し、その導出された変換行列を用いて、画像の予測残差を直交変換し、予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成するようにしてもよい。
【０７３６】
例えば、画像処理装置において、変換行列の一部を構成する部分行列を用いてその変換行列を導出する導出部と、その導出部により導出された変換行列を用いて、画像の予測残差を直交変換する直交変換部と、その直交変換部により予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部とを備えるようにしてもよい。
【０７３７】
このようにすることにより、部分行列を保持しておけばよくなる（変換行列の全てを保持しておく必要がない）ので、直交変換に必要なメモリ容量の増大を抑制することができる。
【０７３８】
また、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、変換行列の一部を構成する部分行列を用いてその変換行列を導出し、その導出された変換行列を用いて、得られた係数データを逆直交変換するようにしてもよい。
【０７３９】
例えば、画像処理装置において、ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、変換行列の一部を構成する部分行列を用いてその変換行列を導出する導出部と、その導出部により導出された変換行列を用いて、復号部により得られた係数データを逆直交変換する逆直交変換部とを備えるようにしてもよい。
【０７４０】
このようにすることにより、部分行列を保持しておけばよくなる（変換行列の全てを保持しておく必要がない）ので、逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０７４１】
＜部分行列と変換行列全体との関係の例＞
より具体的に説明する。例えば、図８４に示されるように、DCT2の変換行列６０１の場合、その左部分の偶数番目の行ベクトルの波形と、右部分の偶数番目の行ベクトルの波形は、互いに軸対称の関係にある。また、その変換行列６０１の左部分の奇数番目の行ベクトルの波形は、互いに点対称の関係にある。
【０７４２】
したがって、DCT2の変換行列６０１の左部分を構成する部分行列を、変換行列６０１の中心を通る列方向を軸として、水平方向（行方向）にフリップし、奇数番目の行ベクトルを符号反転することにより、DCT2の変換行列６０１の右部分を構成する部分行列を導出することができる。すなわち、DCT2の変換行列６０１は、その左部分を構成する部分行列から導出することができる。
【０７４３】
また、例えば、DST7の変換行列６０２の場合、その左上三角部分の偶数番目の行ベクトルの波形と、右下三角部分の偶数番目の列ベクトルの波形は、互いに軸対称の関係にある。また、その変換行列６０２の左上三角部分の奇数番目の行ベクトルの波形と、右下三角部分の奇数番目の列ベクトルの波形とは、互いに点対称の関係にある。
【０７４４】
したがって、DST7の変換行列６０２の左上三角部分を構成する部分行列を、変換行列６０２の右上端と左下端とを結ぶ対角線を軸として、左上右下の斜め方向にフリップし、奇数番目の列ベクトルを符号反転することにより、DST7の変換行列６０２の右下三角部分を構成する部分行列を導出することができる。すなわち、DST7の変換行列６０２は、その左上三角部分を構成する部分行列から導出することができる。
【０７４５】
つまり、変換行列LUTには、変換行列全体を格納させる代わりに、その変換行列全体を導出可能な、その変換行列の部分行列を格納すればよい。例えば、導出部が、そのルックアップテーブル（変換行列LUT）に格納される部分行列を用いて、変換行列（全体）を導出するようにしてもよい。このようにすることにより、DCT2およびDST7の変換行列全体を格納する場合よりも、UTサイズの増大を抑制することができる。すなわち、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０７４６】
また、この部分行列からの変換行列全体の導出のための操作として、上述したように、フリップを行うようにしてもよい。また、そのフリップの方向は任意である。例えば、導出部が、部分行列を、その変換行列の中心を通る所定の方向の軸を中心としてフリップしてその変換行列の残りの部分行列を導出することにより、変換行列を導出するようにしてもよい。このようにすることにより、簡易な操作により、部分行列から変換行列全体を導出することができる。
【０７４７】
なお、このフリップの方向は任意である。例えば、導出部が、部分行列を行に平行な方向（行方向または水平方向とも称する）にフリップするようにしてもよい。また、例えば、導出部が、部分行列を列に平行な方向（列方向または垂直方向とも称する）にフリップするようにしてもよい。さらに、例えば、導出部が、部分行列を、その変換行列の中心を中心とする回転方向にフリップするようにしてもよい。また、例えば、導出部が、部分行列を、変換行列の対角線を軸とする斜め方向にフリップするようにしてもよい。
【０７４８】
このようにすることにより、例えば、部分行列から、その部分行列に対して多様な方向に対称性を有する他の部分行列を、簡易な操作により導出することができる。
【０７４９】
また、この部分行列からの変換行列全体の導出のための操作として、上述したように、符号反転を行うようにしてもよい。例えば、導出部が、さらに、フリップされた部分行列の要素の符号を反転して、変換行列を導出するようにしてもよい。このようにすることにより、簡単な操作により、部分行列からより多様な変換行列全体を導出することができる。
【０７５０】
＜導出例＞
以上のような部分行列からの変換行列全体の導出例の一覧を図８５に示す。なお、導出に用いる部分行列をベース部分行列とも称する。
【０７５１】
図８５に示される表において、最上段の項目名の行を除き、上から１段目の例の導出は、垂直軸に対する軸対称性に着目したものである。
【０７５２】
この場合、部分行列は、変換行列の左半分の部分行列または右半分の部分行列であり、導出部は、その部分行列を変換行列の行方向にフリップし、さらに、フリップされた部分行列の奇数番目の行ベクトルの符号を反転して、その変換行列の右半分の部分行列または左半分の部分行列（つまり、変換行列の残りの部分行列）を導出することにより、変換行列全体を導出する。
【０７５３】
例えば、図８６に示されるように、導出部は、変換タイプがDCT2の変換行列６０１の左半分の部分行列６０１Ａを、変換行列６０１の中心を通る列に平行な方向（列方向）の軸６０１Ｘを中心にフリップする（つまり、水平方向にフリップする）。導出部は、さらに、その奇数番目の行ベクトルの符号を反転する。このようにすることにより、その変換行列６０１の右半分の部分行列６０１Ｂが導出される。つまり、変換行列６０１全体が導出される。このような導出を、導出する変換行列をN行N列の変換行列Tとし、導出に用いるその部分行列をCとして、要素毎の演算表現として表すと、以下の式（７８）のように表すことができる。
【０７５４】
【数６８】
2019102889.tif 000070
【０７５５】
このような導出を適用することにより、部分行列からその変換行列の全体を導出することができるので、直交変換・逆直交変換に用いる変換行列の候補としてDCT2の変換行列６０１全体を用意する必要が無くなる（その部分行列６０１Ａを用意すればよい）。つまり、この候補の情報量を２分の１にすることができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された変換行列を用いて直交変換・逆直交変換を行うことにより、DCT2の変換行列６０１を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０７５６】
なお、このような導出を適用する変換行列は、その要素が上述のような対称性を有していればよく、変換タイプは、上述の例に限定されない。例えば、変換タイプはDST2であってもよい。
【０７５７】
また、以上においては、左半分の部分行列から右半分の部分行列（変換行列全体）を導出するように説明したが、これに限らず、例えば、右半分の部分行列から左半分の部分行列（変換行列全体）を導出するようにしてもよい。
【０７５８】
また、その１段下の（上から２段目の）例の導出は、水平軸に対する軸対称性に着目したものである。
【０７５９】
この場合、部分行列は、変換行列の上半分の部分行列または下半分の部分行列であり、導出部は、その部分行列を変換行列の列方向にフリップし、さらに、フリップされた部分行列の奇数番目の列ベクトルの符号を反転して、その変換行列の下半分の部分行列または上半分の部分行列（つまり、変換行列の残りの部分行列）を導出することにより、その変換行列全体を導出する。
【０７６０】
例えば、図８７に示されるように、導出部は、変換タイプがDST1の変換行列６１１の上半分の部分行列６１１Ａを、変換行列６１１の中心を通る行に平行な方向（行方向）の軸６１１Ｘを中心にフリップする（つまり、垂直方向にフリップする）。導出部は、さらに、その奇数番目の列ベクトルの符号を反転する。このようにすることにより、その変換行列６１１の下半分の部分行列６１１Ｂが導出される。つまり、変換行列６１１全体が導出される。このような導出を、導出する変換行列をN行N列の変換行列Tとし、導出に用いるその部分行列をCとして、要素毎の演算表現として表すと、以下の式（７９）のように表すことができる。
【０７６１】
【数６９】
2019102889.tif 000071
【０７６２】
このような導出を適用することにより、部分行列からその変換行列の全体を導出することができるので、直交変換・逆直交変換に用いる変換行列の候補としてDST1の変換行列６１１全体を用意する必要が無くなる（その部分行列６１１Ａを用意すればよい）。つまり、この候補の情報量を２分の１にすることができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された変換行列を用いて直交変換・逆直交変換を行うことにより、DST1の変換行列６１１を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０７６３】
なお、このような導出を適用する変換行列は、その要素が上述のような対称性を有していればよく、変換タイプは、上述の例に限定されない。例えば、変換タイプはDCT3、DCT1、またはDST3であってもよい。
【０７６４】
また、以上においては、上半分の部分行列から下半分の部分行列（変換行列全体）を導出するように説明したが、これに限らず、例えば、下半分の部分行列から上半分の部分行列（変換行列全体）を導出するようにしてもよい。
【０７６５】
また、その１段下の（上から３段目の）例の導出は、点対称性に着目したものである。
【０７６６】
この場合、部分行列は、変換行列の上半分の部分行列または下半分の部分行列であり、導出部は、その部分行列を変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、その変換行列の下半分の部分行列または上半分の部分行列（つまり、変換行列の残りの部分行列）を導出することにより、その変換行列全体を導出する。
【０７６７】
例えば、図８８に示されるように、導出部は、変換タイプがDST4の変換行列６１２の上半分の部分行列６１２Ａを、変換行列６１２の中心６１２Ｘを中心とする回転方向にフリップする。導出部は、さらに、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転する。このようにすることにより、その変換行列６１２の下半分の部分行列６１２Ｂが導出される。つまり、変換行列６１２全体が導出される。このような導出を、導出する変換行列をN行N列の変換行列Tとし、導出に用いるその部分行列をCとして、要素毎の演算表現として表すと、以下の式（８０）のように表すことができる。
【０７６８】
【数７０】
2019102889.tif 000072
【０７６９】
このような導出を適用することにより、部分行列からその変換行列の全体を導出することができるので、直交変換・逆直交変換に用いる変換行列の候補としてDST4の変換行列６１２全体を用意する必要が無くなる（その部分行列６１２Ａを用意すればよい）。つまり、この候補の情報量を２分の１にすることができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された変換行列を用いて直交変換・逆直交変換を行うことにより、DST4の変換行列６１２を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０７７０】
なお、このような導出を適用する変換行列は、その要素が上述のような対称性を有していればよく、変換タイプは、上述の例に限定されない。例えば、変換タイプはDCT4であってもよい。
【０７７１】
また、以上においては、上半分の部分行列から下半分の部分行列（変換行列全体）を導出するように説明したが、これに限らず、例えば、下半分の部分行列から上半分の部分行列（変換行列全体）を導出するようにしてもよい。
【０７７２】
また、その１段下の（上から４段目の）例の導出は、対角軸に対する対称性に着目したものである。
【０７７３】
この場合、部分行列は、変換行列の右上三角部分の部分行列または左下三角部分の部分行列であり、導出部は、その部分行列を転置して、変換行列の左下三角部分の部分行列または右上三角部分の部分行列を導出することにより、その変換行列を導出する。
【０７７４】
例えば、図８９に示されるように、導出部は、変換タイプがDCT5の変換行列６１３の右上三角部分の部分行列６１３Ａを、変換行列６１３の左上端と右下端とを結ぶ対角線を軸としてフリップする。このようにすることにより、その変換行列６１３の左下三角部分の部分行列６１３Ｂが導出される。つまり、変換行列６１３全体が導出される。このような導出を、導出する変換行列をN行N列の変換行列Tとし、導出に用いるその部分行列をCとして、要素毎の演算表現として表すと、以下の式（８１）のように表すことができる。
【０７７５】
【数７１】
2019102889.tif 000073
【０７７６】
このような導出を適用することにより、部分行列からその変換行列の全体を導出することができるので、直交変換・逆直交変換に用いる変換行列の候補としてDCT5の変換行列６１３全体を用意する必要が無くなる（その部分行列６１３Ａを用意すればよい）。つまり、この候補の情報量を２分の１にすることができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された変換行列を用いて直交変換・逆直交変換を行うことにより、DCT5の変換行列６１３を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０７７７】
なお、図８９に示されるように、転置は、変換行列の左上端と右下端とを結ぶ対角線を軸としてフリップすることと同義である。つまり、転置は、フリップに含まれる（フリップ操作の１つである）ものとする。
【０７７８】
また、このような導出を適用する変換行列は、その要素が上述のような対称性を有していればよく、変換タイプは、上述の例に限定されない。例えば、変換タイプはDST5、DCT4、またはDCT8であってもよい。
【０７７９】
また、以上においては、右上三角部分の部分行列から左下三角部分の部分行列（変換行列全体）を導出するように説明したが、これに限らず、例えば、左下三角部分の部分行列から右上三角部分の部分行列（変換行列全体）を導出するようにしてもよい。
【０７８０】
また、その１段下の（上から５段目の）例の導出は、クロス位置の対角軸に対する対称性に着目したものである。
【０７８１】
この場合、部分行列は、変換行列の左上三角部分の部分行列または右下三角部分の部分行列であり、導出部は、その部分行列を、変換行列の右上端と左下端を結ぶ対角線を軸とする斜め方向にフリップし、さらに、そのフリップされた部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、その変換行列の右下三角部分の部分行列または左上三角部分の部分行列を導出する。
【０７８２】
例えば、図９０に示されるように、導出部は、変換タイプがDST7の変換行列６０２の左上三角部分の部分行列６０２Ａを、変換行列６０２の右上端と左下端とを結ぶ対角線を軸としてフリップする。導出部は、さらに、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転する。このようにすることにより、その変換行列６０２の右下三角部分の部分行列６０２Ｂが導出される。つまり、変換行列６０２全体が導出される。このような導出を、導出する変換行列をN行N列の変換行列Tとし、導出に用いるその部分行列をCとして、要素毎の演算表現として表すと、以下の式（８２）のように表すことができる。
【０７８３】
【数７２】
2019102889.tif 000074
【０７８４】
このような導出を適用することにより、部分行列からその変換行列の全体を導出することができるので、直交変換・逆直交変換に用いる変換行列の候補としてDST7の変換行列６０２全体を用意する必要が無くなる（その部分行列６０２Ａを用意すればよい）。つまり、この候補の情報量を２分の１にすることができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された変換行列を用いて直交変換・逆直交変換を行うことにより、DST7の変換行列６０２を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０７８５】
なお、この場合の、変換行列の右上端と左下端を結ぶ対角線を軸とする斜め方向にフリップも、行と列とが入れ替わるので「転置」に含まれる（転置操作の１つである）ものとする。
【０７８６】
なお、このような導出を適用する変換行列は、その要素が上述のような対称性を有していればよく、変換タイプは、上述の例に限定されない。例えば、変換タイプはDST6であってもよい。
【０７８７】
また、以上においては、左上三角部分の部分行列から右下三角部分の部分行列（変換行列全体）を導出するように説明したが、これに限らず、例えば、右下三角部分の部分行列から左上三角部分の部分行列（変換行列全体）を導出するようにしてもよい。
【０７８８】
また、その１段下の（上から６段目乃至８段目の）例の導出は、垂直軸に対する軸対称性、水平軸に対する軸対称性、および点対称性に着目したものである。
【０７８９】
この場合、部分行列は、変換行列の左上４分の１の部分行列であり、導出部は、その部分行列を変換行列の行方向にフリップし、そのフリップされた部分行列の奇数番目の行ベクトルの符号を反転して、変換行列の右上４分の１の部分行列を導出し、また、部分行列を変換行列の列方向にフリップし、そのフリップされた部分行列の奇数番目の列ベクトルの符号を反転して、変換行列の左下４分の１の部分行列を導出し、さらに、部分行列を変換行列の中心を中心とする回転方向にフリップし、そのフリップされた部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、変換行列の右下４分の１の部分行列を導出する。
【０７９０】
例えば、図９１に示されるように、導出部は、変換タイプがDST1の変換行列６１４の左上４分の１の部分行列６１４Ａを、変換行列６１４の中心を通る列に平行な方向（列方向）の軸６１４Ｘ−１を中心にフリップする（つまり、水平方向にフリップする）。導出部は、さらに、その奇数番目の行ベクトルの符号を反転する。このようにすることにより、その変換行列６１４の右上４分の１の部分行列６１４Ｂが導出される。
【０７９１】
また、導出部は、変換タイプがDST1の変換行列６１４の左上４分の１の部分行列６１４Ａを、変換行列６１４の中心を通る行に平行な方向（行方向）の軸６１４Ｘ−２を中心にフリップする（つまり、垂直方向にフリップする）。導出部は、さらに、その奇数番目の列ベクトルの符号を反転する。このようにすることにより、その変換行列６１４の左下４分の１の部分行列６１４Ｃが導出される。
【０７９２】
さらに、導出部は、変換タイプがDST1の変換行列６１４の左上４分の１の部分行列６１４Ａを、変換行列６１４の中心６１４Ｘ−３を中心とする回転方向にフリップする。導出部は、さらに、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転する。このようにすることにより、その変換行列６１４の右下４分の１の部分行列６１４Ｄが導出される。
【０７９３】
つまり、変換行列６１４全体が導出される。このような導出を、導出する変換行列をN行N列の変換行列Tとし、導出に用いるその部分行列をCとして、要素毎の演算表現として表すと、以下の式（８３）乃至式（８５）のように表すことができる。
【０７９４】
【数７３】
2019102889.tif 000075
【０７９５】
このような導出を適用することにより、部分行列からその変換行列の全体を導出することができるので、直交変換・逆直交変換に用いる変換行列の候補としてDST1の変換行列６１４全体を用意する必要が無くなる（その部分行列６１４Ａを用意すればよい）。つまり、この候補の情報量を４分の１にすることができる。すなわち、LUTサイズの増大を抑制することができる。また、導出された変換行列を用いて直交変換・逆直交変換を行うことにより、DST1の変換行列６１４を直交変換・逆直交変換に用いる場合と同一の符号化効率が得られる。
【０７９６】
なお、このような導出を適用する変換行列は、要素が上述のような対称性を有していればよく、変換タイプは、上述の例に限定されない。例えば、変換タイプはDCT1であってもよい。
【０７９７】
また、以上においては、左上４分の１の部分行列から残りの部分行列を導出するように説明したが、これに限らず、例えば、右上４分の１の部分行列から残りの部分行列を導出するようにしてもよいし、左下４分の１の部分行列から残りの部分行列を導出るようにしてもよいし、右下４分の１の部分行列から残りの部分行列を導出するようにしてもよい。
【０７９８】
＜変換行列導出部＞
このような部分行列からの変換行列の導出を行う画像符号化装置１００の構成は、第１の実施の形態の場合と同様である。そして、この画像符号化装置１００において、直交変換部１１３は、導出部および直交変換部として、上述した本技術を適用した処理を行う。また、符号化部１１５は、符号化部として、上述した本技術を適用した処理を行う。さらに逆直交変換部１１８は、逆直交変換部および導出部として、上述した本技術を適用した処理を行う。したがって、画像符号化装置１００は、直交変換・逆直交変換に必要なメモリ容量の増大を抑制することができる。
【０７９９】
また、直交変換部１１３の構成は、第１の実施の形態の場合と同様である。そして、この直交変換部１１３において、プライマリ変換部１５２は、導出部および直交変換部として、上述した本技術を適用した処理を行う。つまり、導出部は、変換行列の一部を構成する部分行列を用いて変換行列全体を導出し、直交変換部は、その導出部により導出された変換行列を用いて予測残差に対するプライマリ変換を行う。したがって、プライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０８００】
なお、上述のようにプライマリ変換部１５２は、プライマリ変換として、プライマリ水平変換とプライマリ垂直変換とを行う。つまり、導出部は、水平方向の１次元直交変換用の前記変換行列と、垂直方向の１次元直交変換用の前記変換行列とを導出し、直交変換部は、プライマリ変換として、その導出部により導出された水平方向の１次元直交変換用の変換行列を用いて、その水平方向の１次元直交変換を行い、さらに、その導出部により導出された垂直方向の１次元直交変換用の変換行列を用いて、その垂直方向の１次元直交変換を行う。したがって、このような、水平方向の１次元直交変換および垂直方向の１次元直交変換が行われるプライマリ変換に必要なメモリ容量の増大を抑制することができる。
【０８０１】
なお、この場合、プライマリ変換部１５２は、＜２−２．実施例１−１＞の場合と同様の構成を有する。また、プライマリ水平変換部３１２は、＜２−２．実施例１−１＞の場合と同様の構成を有する。また、プライマリ垂直変換部３１３は、＜２−２．実施例１−１＞の場合と同様の構成を有する。ただし、プライマリ水平変換部３１２が有する変換行列導出部３２１の内部の構成と、プライマリ垂直変換部３１３が有する変換行列導出部３５１の内部の構成とが、＜２−２．実施例１−１＞の場合と異なる。
【０８０２】
図９２は、この場合のプライマリ水平変換部３１２が有する変換行列導出部３２１の主な構成例を示すブロック図である。図９２に示されるように、この場合の変換行列導出部３２１は、変換行列LUT３３１、水平方向フリップ部６３２、垂直方向フリップ部６３３、転置部６３４、および符号反転部６３５を有する。なお、図９２においては、データの授受を示す矢印を省略しているが、変換行列導出部３２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０８０３】
水平方向フリップ部６３２は、入力される部分行列を、変換行列の中心を通る列方向の直線を軸として水平方向（行方向）にフリップし、フリップ後の部分行列を出力する。垂直方向フリップ部６３３は、入力される部分行列を、変換行列の中心を通る行方向の直線を軸として垂直方向（列方向）にフリップし、フリップ後の部分行列を出力する。転置部６３４は、入力される部分行列を転置して（斜め方向にフリップして）、転置後の部分行列を出力する。符号反転部６３５は、入力される部分行列の一部の符号を反転し、符号反転後の部分行列を出力する。
【０８０４】
例えば、図８５に示される表の最上段の項目名の行を除き、上から１段目の導出例の場合、変換行列導出部３２１は、変換行列LUT３３１から変換行列の左半分（または右半分）の部分行列を読み出し、水平方向フリップ部６３２を介して、その部分行列を行方向（水平方向）にフリップし、さらに、符号反転部６３５を介して、そのフリップされた部分行列の奇数番目の行ベクトルの符号を反転して、変換行列の残りの部分行列を導出する。これらの処理により変換行列の全ての部分行列が得られる。つまり、変換行列全体が導出される。変換行列導出部３２１は、その導出した変換行列（全体）を、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０８０５】
また、例えば、図８５に示される表の上から２段目の導出例の場合、変換行列導出部３２１は、変換行列LUT３３１から変換行列の上半分（または下半分）の部分行列を読み出し、垂直方向フリップ部６３３を介して、その部分行列を列方向（垂直方向）にフリップし、符号反転部６３５を介して、そのフリップされた部分行列の奇数番目の列ベクトルの符号を反転して、変換行列の残りの部分行列を導出する。これらの処理により変換行列の全ての部分行列が得られる。つまり、変換行列全体が導出される。変換行列導出部３２１は、その導出した変換行列（全体）を、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０８０６】
また、例えば、図８５に示される表の上から３段目の導出例の場合、変換行列導出部３２１は、変換行列LUT３３１から変換行列の上半分（または下半分）の部分行列を読み出し、水平方向フリップ部６３２を介してその部分行列を行方向（水平方向）にフリップし、垂直方向フリップ部６３３を介してその水平方向にフリップされた部分行列をさらに列方向（垂直方向）にフリップし、符号反転部６３５を介して、その導出した部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、変換行列の残りの部分行列を導出する。これらの処理により変換行列の全ての部分行列が得られる。つまり、変換行列全体が導出される。変換行列導出部３２１は、その導出した変換行列（全体）を、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０８０７】
また、例えば、図８５に示される表の上から４段目の導出例の場合、変換行列導出部３２１は、変換行列LUT３３１から変換行列の右上三角部分（または左下三角部分）の部分行列を読み出し、転置部６３４を介して、変換行列の左上端と右下端とを結ぶ直線を軸として、その部分行列を転置して、変換行列の残りの部分行列を導出する。この処理により変換行列の全ての部分行列が得られる。つまり、変換行列全体が導出される。変換行列導出部３２１は、その導出した変換行列（全体）を、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０８０８】
また、例えば、図８５に示される表の上から５段目の導出例の場合、変換行列導出部３２１は、変換行列LUT３３１から変換行列の左上三角部分（または右下三角部分）の部分行列を読み出し、転置部６３４を介して、変換行列の右上端と左下端とを結ぶ直線を軸として、その部分行列を転置し、符号反転部６３５を介して、その導出した部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転し、変換行列の残りの部分行列を導出する。これらの処理により変換行列の全ての部分行列が得られる。つまり、変換行列全体が導出される。変換行列導出部３２１は、その導出した変換行列（全体）を、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０８０９】
さらに、例えば、図８５に示される表の上から６段目の導出例の場合、変換行列導出部３２１は、変換行列LUT３３１から変換行列の左上４分の１の部分行列を読み出す。変換行列導出部３２１は、水平方向フリップ部６３２を介して、その部分行列を行方向（水平方向）にフリップし、さらに、符号反転部６３５を介して、そのフリップされた部分行列の奇数番目の行ベクトルの符号を反転して、変換行列の右上４分の１の部分行列を導出する。
【０８１０】
また、変換行列導出部３２１は、垂直方向フリップ部６３３を介して、その左上４分の１の部分行列を列方向（垂直方向）にフリップし、さらに、符号反転部６３５を介して、そのフリップされた部分行列の奇数番目の列ベクトルの符号を反転して、変換行列の左下４分の１の部分行列を導出する。
【０８１１】
また、変換行列導出部３２１は、水平方向フリップ部６３２を介してその左上４分の１の部分行列を行方向（水平方向）にフリップし、垂直方向フリップ部６３３を介してその水平方向にフリップされた部分行列をさらに列方向（垂直方向）にフリップし、符号反転部６３５を介して、その導出した部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、変換行列の右下４分の１の部分行列を導出する。
【０８１２】
つまり、これらの処理により変換行列の全ての部分行列が得られる。つまり、変換行列全体が導出される。変換行列導出部３２１は、その導出した変換行列（全体）を、変換行列THとして、変換行列導出部３２１の外部に出力する（行列演算部３２２に供給する）。
【０８１３】
以上のような構成を有するので、変換行列導出部３２１は、図８５に示される表の各導出例を実現することができる。
【０８１４】
＜変換行列導出部＞
図９３は、この場合のプライマリ垂直変換部３１３が有する変換行列導出部３５１の主な構成例を示すブロック図である。図９３に示されるように、この場合の変換行列導出部３５１は、変換行列導出部３２１の場合と同様に、変換行列LUT３６１、水平方向フリップ部６４２、垂直方向フリップ部６４３、転置部６４４、および符号反転部６４５を有する。なお、図９３においては、データの授受を示す矢印を省略しているが、変換行列導出部３５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０８１５】
水平方向フリップ部６４２は、水平方向フリップ部６３２と同様の処理部である。垂直方向フリップ部６４３は、垂直方向フリップ部６３３と同様の処理部である。転置部６４４は、転置部６３４と同様の処理部である。符号反転部６４５は、符号反転部６３５と同様の処理部である。
【０８１６】
変換行列導出部３５１は、変換行列LUT３６１から変換行列の所定の部分行列を読み出し、水平方向フリップ部６３２乃至符号反転部６３５を適宜介して、図８５の表に示される導出例のいずれかの方法で、その部分行列から残りの部分行列を導出する。つまり、変換行列全体が導出される。変換行列導出部３５１は、その導出した変換行列（全体）を、変換行列TVとして、変換行列導出部３５１の外部に出力する（行列演算部３５２に供給する）。
【０８１７】
以上のような構成を有するので、変換行列導出部３５１は、図８５に示される表の各導出例を実現することができる。
【０８１８】
＜変換行列導出処理の流れ＞
この場合のプライマリ変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図２７のフローチャートと同様の流れで行われる）ので、その説明は基本的に省略する。
【０８１９】
また、この場合、図２７のステップＳ３０２において実行されるプライマリ水平変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図２８のフローチャートと同様の流れで行われる）が、図２８のステップＳ３２１において実行される変換行列導出処理は、図３０の例とは異なる流れで行われる。
【０８２０】
この場合の、図２８のステップＳ３２１において、プライマリ水平変換部３１２内の変換行列導出部３２１により実行される変換行列導出処理の流れの例を、図９４のフローチャートを参照して説明する。
【０８２１】
変換行列導出処理が開始されると、変換行列導出部３２１は、ステップＳ７０１において、例えば、図９５に示される対応表を参照し、変換タイプ識別子TrTypeIdxHに対応する部分行列Cを変換行列LUT３３１より読み出す。
【０８２２】
ステップＳ７０２において、変換行列導出部３２１は、水平方向フリップ部６３２乃至符号反転部６３５を適宜利用して、変換タイプ識別子TrTypeIdxHに対応する変換タイプの変換行列THを、部分行列Cから所定の導出方法（図８５の表に示される導出方法のいずれか）に基づいて導出する。
【０８２３】
ステップＳ７０２の処理が終了すると変換行列導出処理が終了し、処理は図２８に戻る。
【０８２４】
＜変換行列導出処理の流れ＞
なお、この場合、図２７のステップＳ３０３において実行されるプライマリ垂直変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図３２のフローチャートと同様の流れで行われる）。ただし、図３２のステップＳ３６１において実行される変換行列導出処理は、図９４のフローチャートの場合と同様の流れで行われる。したがって、その説明を省略する。図９４の説明において、適宜、変換タイプ識別子TrTypeIdxHを変換タイプ識別子TrTypeIdxVに置き換えたり、変換行列THを変換行列TVに置き換えたりすればよい。
【０８２５】
＜変換行列導出部＞
次に、この場合の画像復号装置２００の構成について説明する。この場合も画像復号装置２００が有する逆プライマリ変換部２５３、逆プライマリ垂直変換部４１２、逆プライマリ水平変換部４１３等の構成は、＜２−２．実施例１−１＞の場合と同様であるのでその説明を省略する。
【０８２６】
つまり、逆直交変換部が、復号部により得られた係数データに対する逆セカンダリ変換を行い、さらに、導出部により導出された変換行列を用いて、その逆セカンダリ変換結果に対して逆プライマリ変換を行うようにしてもよい。
【０８２７】
また、導出部が、水平方向の逆１次元直交変換用の変換行列と、垂直方向の逆１次元直交変換用の変換行列とを導出し、逆直交変換部が、逆プライマリ変換として、導出部により導出された水平方向の逆１次元直交変換用の変換行列を用いて、その水平方向の逆１次元直交変換を行い、さらに、導出部により導出された垂直方向の逆１次元直交変換用の変換行列を用いて、その垂直方向の逆１次元直交変換を行うようにしてもよい。
【０８２８】
図９６は、この場合の逆プライマリ垂直変換部４１２が有する変換行列導出部４２１の主な構成例を示すブロック図である。図９６に示されるように、この場合の変換行列導出部４２１は、変換行列導出部３２１と同様に、変換行列LUT４３１、水平方向フリップ部６５２、垂直方向フリップ部６５３、転置部６５４、および符号反転部６５５を有する。なお、図９６においては、データの授受を示す矢印を省略しているが、変換行列導出部４２１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０８２９】
水平方向フリップ部６５２は、水平方向フリップ部６３２と同様の処理部である。垂直方向フリップ部６５３は、垂直方向フリップ部６３３と同様の処理部である。転置部６５４は、転置部６３４と同様の処理部である。符号反転部６５５は、符号反転部６３５と同様の処理部である。
【０８３０】
変換行列導出部４２１は、逆直交変換（逆プライマリ垂直変換）において、変換行列LUT４３１から変換行列の所定の部分行列を読み出し、水平方向フリップ部６５２乃至符号反転部６５５を適宜介して、図８５の表に示される導出例のいずれかの方法で、その部分行列から残りの部分行列を導出する。つまり、変換行列全体が導出される。変換行列導出部４２１は、その導出した変換行列（全体）を、変換行列TVとして、変換行列導出部４２１の外部に出力する（行列演算部４２２に供給する）。
【０８３１】
以上のような構成を有するので、変換行列導出部４２１は、図８５に示される表の各導出例を実現することができる。
【０８３２】
＜変換行列導出部＞
図９７は、この場合の、逆プライマリ水平変換部４１３が有する変換行列導出部４５１の主な構成例を示すブロック図である。図９７に示されるように、この場合の変換行列導出部４５１は、変換行列導出部４２１と同様に、変換行列LUT４６１、水平方向フリップ部６６２、垂直方向フリップ部６６３、転置部６６４、および符号反転部６６５を有する。なお、図９７においては、データの授受を示す矢印を省略しているが、変換行列導出部４５１は、任意の処理部（処理ブロック）間で任意のデータを授受することができる。
【０８３３】
水平方向フリップ部６６２は、水平方向フリップ部６３２と同様の処理部である。垂直方向フリップ部６６３は、垂直方向フリップ部６３３と同様の処理部である。転置部６６４は、転置部６３４と同様の処理部である。符号反転部６６５は、符号反転部６３５と同様の処理部である。
【０８３４】
変換行列導出部４５１は、逆直交変換（逆プライマリ水平変換）において、変換行列LUT４３１から変換行列の所定の部分行列を読み出し、水平方向フリップ部６６２乃至符号反転部６６５を適宜介して、図８５の表に示される導出例のいずれかの方法で、その部分行列から残りの部分行列を導出する。つまり、変換行列全体が導出される。変換行列導出部４５１は、その導出した変換行列（全体）を、変換行列TVとして、変換行列導出部４５１の外部に出力する（行列演算部４５２に供給する）。
【０８３５】
以上のような構成を有するので、変換行列導出部４５１は、図８５に示される表の各導出例を実現することができる。
【０８３６】
＜変換行列導出処理の流れ＞
この場合の逆プライマリ変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図３９のフローチャートと同様の流れで行われる）。また、図３９のステップＳ４０１において実行される逆プライマリ変換選択処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図４０のフローチャートと同様の流れで行われる）。また、図３９のステップＳ４０２において実行される逆プライマリ垂直変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図４１のフローチャートと同様の流れで行われる）。したがって、これらの処理についての説明は基本的に省略する。
【０８３７】
ただし、その逆プライマリ垂直変換処理において実行される変換行列導出処理（図４１のステップＳ４４１）は、図９４のフローチャートの場合と同様の流れで行われる。したがって、その説明を省略する。
【０８３８】
＜変換行列導出処理の流れ＞
なお、この場合、図３９のステップＳ４０３において実行される逆プライマリ水平変換処理は、＜２−２．実施例１−１＞の場合と同様の流れで行われる（図４２のフローチャートと同様の流れで行われる）。したがってその説明を省略する。
【０８３９】
ただし、その逆プライマリ水平変換処理において実行される変換行列導出処理（図４２のステップＳ４６１）は、図９４のフローチャートの場合と同様の流れで行われる。したがって、その説明を省略する。
【０８４０】
＜５．第４の実施の形態＞
＜５−１．共通コンセプト＞
＜実施の形態の組み合わせ＞
以上においては、第１の実施の形態乃至第３の実施の形態を説明したが、これらの各実施の形態を組み合わせて適用するようにしてもよい。例えば、非特許文献１に記載の方法に対して、実施例１−１において説明した方法と、第３の実施の形態において説明した方法とを組み合わせて適用するようにしてもよい。
【０８４１】
つまり、導出部が、部分行列を用いて第１の変換行列を導出し、さらに、その導出した第１の変換行列を用いて第２の変換行列を導出し、直交変換部が、その導出部により導出された第２の変換行列を用いて、予測残差を直交変換するようにしてもよい。
【０８４２】
その際、導出部は、第１の変換行列を用いて、第１の変換行列とは異なる変換タイプの第２の変換行列を導出するようにしてもよい。また、導出部は、第１の変換行列をフリップまたは転置して、第２の変換行列を導出するようにしてもよい。
【０８４３】
その場合、図９８の表に示されるように、非特許文献１に記載の技術の場合に５種類必要だった変換行列（図６のＡの表参照）を３種類に低減させることができ、さらに、その３種類の変換行列についても、部分行列を用意すれば良いので、LUTサイズの合計は約20KBとすることができる。つまり、非特許文献１に記載の技術の場合に比べて（約53KB（図６のＡの表））LUTのサイズを低減させることができる。すなわち、LUTのサイズの増大を抑制することができる。
【０８４４】
＜変換行列導出部＞
この場合も画像符号化装置１００および画像復号装置２００の構成は、それぞれ、第１の実施の形態の場合と基本的に同様である。ただし、各変換行列導出部の構成のみ第１の実施の形態の場合と異なる。
【０８４５】
例えば、この場合の、変換行列導出部３２１の主な構成例を図９９に示す。図９９に示されるように、この場合の変換行列導出部３２１は、実施例１−１の場合の構成（図２４）と、第３の実施の形態の場合の構成（図９２）との両方を有していればよい。つまり、この場合の変換行列導出部３２１は、変換行列LUT３３１、フリップ部３３２、転置部３３３、水平方向フリップ部６３２、垂直方向フリップ部６３３、転置部６３４、および符号反転部６３５を有する。
【０８４６】
＜変換行列導出処理の流れ＞
この変換行列導出処理により、プライマリ水平変換処理において実行される変換行列導出処理の流れの例を、図１００のフローチャートを参照して説明する。
【０８４７】
変換行列導出処理が開始されると、ステップＳ７２１において、変換行列導出部３２１は、図１０１に示される対応表を参照し、変換タイプ識別子TrTypeIdxHに対応するベース部分行列Cを変換行列LUT３３１から読み出す。
【０８４８】
ステップＳ７２２において、変換行列導出部３２１は、その対応表に基づいて、変換タイプ識別子TrTypeIdxHに対応するフリップフラグFlipFlagと転置フラグTransposeFlagとを導出する（値を設定する）。
【０８４９】
ステップＳ７２３において、変換行列導出部３２１は、水平方向フリップ部６３２乃至符号反転部６３５を適宜用いて、変換タイプ識別子TrTypeIdxHに対応するベース変換行列Tbaseを、部分行列Cから所定の導出方法に基づいて生成する。
【０８５０】
そして、変換行列導出部３２１は、ステップＳ７２４乃至ステップＳ７２８の各処理を、フリップ部３３２および転置部３３３を適宜用いて、図３０のステップＳ３４２乃至ステップＳ３４６の各処理と同様に実行する。つまり、第１の変換行列を第２の変換行列に適宜変換する。
【０８５１】
ステップＳ７２８の処理が終了すると、変換行列導出処理が終了し、処理は、図２８に戻る。
【０８５２】
なお、プライマリ垂直変換部３１３が有する変換行列導出部３５１、逆プライマリ垂直変換部４１２が有する変換行列導出部４２１、および、逆プライマリ水平変換部４１３が有する変換行列導出部４５１は、いずれも、図９９を参照して説明した場合と同様の構成を有する。したがってそれらの説明は省略する。
【０８５３】
また、プライマリ垂直変換処理において実行される変換行列導出処理、逆プライマリ垂直変換処理において実行される変換行列導出処理、および、逆プライマリ水平変換処理において実行される変換行列導出処理は、いずれも、図１００のフローチャートを参照して上述した場合と同様の流れで実行される。したがってそれらの説明は省略する。
【０８５４】
このようにすることにより、実施例１−１と第３の実施の形態の両方の効果を得ることができる。
【０８５５】
なお、実施の形態（実施例）の組み合わせ方は任意であり、この例に限定されない。例えば、実施の形態３において説明した方法は、実施の形態１の各実施例と組み合わせることができる。また、実施の形態３において説明した方法は、実施の形態２において説明した方法とも組み合わせることができる。
【０８５６】
＜６．付記＞
＜コンピュータ＞
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
【０８５７】
図１０２は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０８５８】
図１０２に示されるコンピュータ８００において、CPU（Central Processing Unit）８０１、ROM（Read Only Memory）８０２、RAM（Random Access Memory）８０３は、バス８０４を介して相互に接続されている。
【０８５９】
バス８０４にはまた、入出力インタフェース８１０も接続されている。入出力インタフェース８１０には、入力部８１１、出力部８１２、記憶部８１３、通信部８１４、およびドライブ８１５が接続されている。
【０８６０】
入力部８１１は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部８１２は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部８１３は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部８１４は、例えば、ネットワークインタフェースよりなる。ドライブ８１５は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア８２１を駆動する。
【０８６１】
以上のように構成されるコンピュータでは、CPU８０１が、例えば、記憶部８１３に記憶されているプログラムを、入出力インタフェース８１０およびバス８０４を介して、RAM８０３にロードして実行することにより、上述した一連の処理が行われる。RAM８０３にはまた、CPU８０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０８６２】
コンピュータ（CPU８０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア８２１に記録して適用することができる。その場合、プログラムは、リムーバブルメディア８２１をドライブ８１５に装着することにより、入出力インタフェース８１０を介して、記憶部８１３にインストールすることができる。
【０８６３】
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部８１４で受信し、記憶部８１３にインストールすることができる。
【０８６４】
その他、このプログラムは、ROM８０２や記憶部８１３に、あらかじめインストールしておくこともできる。
【０８６５】
＜情報・処理の単位＞
以上において説明した各種情報が設定されるデータ単位や、各種処理が対象とするデータ単位は、それぞれ任意であり上述した例に限定されない。例えば、これらの情報や処理が、それぞれ、TU（Transform Unit）、TB(Transform Block)、PU（Prediction Unit）、PB(Prediction Block)、CU（Coding Unit）、LCU（Largest Coding Unit）、サブブロック、ブロック、タイル、スライス、ピクチャ、シーケンス、またはコンポーネント毎に設定されるようにしてもよいし、それらのデータ単位のデータを対象とするようにしてもよい。もちろん、このデータ単位は、情報や処理毎に設定され得るものであり、全ての情報や処理のデータ単位が統一されている必要はない。なお、これらの情報の格納場所は任意であり、上述したデータ単位のヘッダやパラメータセット等に格納されるようにしてもよい。また、複数個所に格納されるようにしてもよい。
【０８６６】
＜制御情報＞
以上の各実施の形態において説明した本技術に関する制御情報を符号化側から復号側に伝送するようにしてもよい。例えば、上述した本技術を適用することを許可（または禁止）するか否かを制御する制御情報（例えばenabled_flag）を伝送するようにしてもよい。また、例えば、上述した本技術を適用する対象（または適用しない対象）を示す制御情報を伝送するようにしてもよい。例えば、本技術を適用する（または、適用を許可若しくは禁止する）ブロックサイズ（上限若しくは下限、またはその両方）、フレーム、コンポーネント、またはレイヤ等を指定する制御情報を伝送するようにしてもよい。
【０８６７】
＜本技術の適用対象＞
本技術は、任意の画像符号化・復号方式に適用することができる。つまり、上述した本技術と矛盾しない限り、変換（逆変換）、量子化（逆量子化）、符号化（復号）、予測等、画像符号化・復号に関する各種処理の仕様は任意であり、上述した例に限定されない。また、上述した本技術と矛盾しない限り、これらの処理の内の一部を省略してもよい。
【０８６８】
また本技術は、複数の視点（ビュー（view））の画像を含む多視点画像の符号化・復号を行う多視点画像符号化・復号システムに適用することができる。その場合、各視点（ビュー（view））の符号化・復号において、本技術を適用するようにすればよい。
【０８６９】
さらに本技術は、所定のパラメータについてスケーラビリティ（scalability）機能を有するように複数レイヤ化（階層化）された階層画像の符号化・復号を行う階層画像符号化（スケーラブル符号化）・復号システムに適用することができる。その場合、各階層（レイヤ）の符号化・復号において、本技術を適用するようにすればよい。
【０８７０】
上述した実施形態に係る画像符号化装置１００や画像復号装置２００は、例えば、衛星放送、ケーブルＴＶなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機（例えばテレビジョン受像機や携帯電話機）、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置（例えばハードディスクレコーダやカメラ）などの、様々な電子機器に応用され得る。
【０８７１】
また、本技術は、任意の装置またはシステムを構成する装置に搭載するあらゆる構成、例えば、システムLSI（Large Scale Integration）等としてのプロセッサ（例えばビデオプロセッサ）、複数のプロセッサ等を用いるモジュール（例えばビデオモジュール）、複数のモジュール等を用いるユニット（例えばビデオユニット）、ユニットにさらにその他の機能を付加したセット（例えばビデオセット）等（すなわち、装置の一部の構成）として実施することもできる。
【０８７２】
さらに、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、コンピュータ、AV（Audio Visual）機器、携帯型情報処理端末、IoT（Internet of Things）デバイス等の任意の端末に対して、画像（動画像）に関するサービスを提供するクラウドサービスに適用することもできる。
【０８７３】
なお、本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
【０８７４】
例えば、本技術は、観賞用コンテンツ等の提供の用に供されるシステムやデバイスに適用することができる。また、例えば、本技術は、交通状況の監理や自動運転制御等、交通の用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、セキュリティの用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、機械等の自動制御の用に供されるシステムやデバイスに適用することができる。さらに、例えば、本技術は、農業や畜産業の用に供されるシステムやデバイスにも適用することができる。また、本技術は、例えば火山、森林、海洋等の自然の状態や野生生物等を監視するシステムやデバイスにも適用することができる。さらに、例えば、本技術は、スポーツの用に供されるシステムやデバイスにも適用することができる。
【０８７５】
＜その他＞
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の２状態を識別する際に用いる情報だけでなく、３以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の２値であってもよいし、３値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報（フラグも含む）は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
【０８７６】
また、符号化データ（ビットストリーム）に関する各種情報（メタデータ等）は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る（リンクさせ得る）ようにすることを意味する。つまり、互いに関連付けられたデータは、１つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の記録媒体（または同一の記録媒体の別の記録エリア）に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、１フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
【０８７７】
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを１つのデータにまとめるといった、複数の物を１つにまとめることを意味し、上述の「関連付ける」の１つの方法を意味する。
【０８７８】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０８７９】
また、例えば、本技術は、装置またはシステムを構成するあらゆる構成、例えば、システムLSI（Large Scale Integration）等としてのプロセッサ、複数のプロセッサ等を用いるモジュール、複数のモジュール等を用いるユニット、ユニットにさらにその他の機能を付加したセット等（すなわち、装置の一部の構成）として実施することもできる。
【０８８０】
なお、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０８８１】
また、例えば、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。
【０８８２】
また、例えば、本技術は、１つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０８８３】
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能（機能ブロック等）を有し、必要な情報を得ることができるようにすればよい。
【０８８４】
また、例えば、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、１つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を１つのステップとしてまとめて実行することもできる。
【０８８５】
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
【０８８６】
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
【０８８７】
なお、本技術は以下のような構成も取ることができる。
（１）  第１の変換行列を用いて第２の変換行列を導出する導出部と、
前記導出部により導出された前記第２の変換行列を用いて、画像の予測残差を直交変換する直交変換部と、
前記直交変換部により前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部と
を備える画像処理装置。
（２）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列とは異なる変換タイプの前記第２の変換行列を導出する
（１）に記載の画像処理装置。
（３）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列と行数および列数が同一の前記第２の変換行列を導出する
（１）または（２）に記載の画像処理装置。
（４）  前記導出部は、前記第１の変換行列の要素に対する操作により、前記第２の変換行列を導出する
（１）乃至（３）のいずれかに記載の画像処理装置。
（５）  前記操作は、要素の並び替えを含む
（４）に記載の画像処理装置。
（６）  前記導出部は、前記操作を複数回行うことにより、前記第２の変換行列を導出する
（４）または（５）に記載の画像処理装置。
（７）  前記導出部は、ルックアップテーブルに格納される前記第１の変換行列を用いて、前記第２の変換行列を導出する
（１）乃至（６）のいずれかに記載の画像処理装置。
（８）  前記直交変換部は、前記導出部により導出された前記第２の変換行列を用いて前記予測残差に対するプライマリ変換を行い、さらに、前記プライマリ変換の結果に対してセカンダリ変換を行う
（１）乃至（７）のいずれかに記載の画像処理装置。
（９）  前記導出部は、水平方向の１次元直交変換用の前記第２の変換行列と、垂直方向の１次元直交変換用の前記第２の変換行列とを導出し、
前記直交変換部は、前記プライマリ変換として、
前記導出部により導出された水平方向の１次元直交変換用の前記第２の変換行列を用いて、前記水平方向の１次元直交変換を行い、さらに、
前記導出部により導出された垂直方向の１次元直交変換用の前記第２の変換行列を用いて、前記垂直方向の１次元直交変換を行う
（８）に記載の画像処理装置。
（１０）  前記導出部は、前記第１の変換行列をフリップして、前記第２の変換行列を導出する
（１）乃至（９）のいずれかに記載の画像処理装置。
（１１）  前記導出部は、前記第１の変換行列を転置して、前記第２の変換行列を導出する
（１）乃至（１０）のいずれかに記載の画像処理装置。
（１２）  前記導出部は、前記第１の変換行列をフリップし、フリップ後の第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、前記第２の変換行列を導出する
（１）乃至（１１）のいずれかに記載の画像処理装置。
（１３）  前記導出部は、前記第１の変換行列をフリップし、フリップ後の第１の変換行列を転置して、前記第２の変換行列を導出する
（１）乃至（１２）のいずれかに記載の画像処理装置。
（１４）  前記導出部は、前記第１の変換行列を転置し、転置後の第１の変換行列をフリップして、前記第２の変換行列を導出する
（１）乃至（１３）のいずれかに記載の画像処理装置。
（１５）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが所望のタイプの波形を有する前記第２の変換行列を導出する
（１）乃至（１４）のいずれかに記載の画像処理装置。
（１６）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルがフラット型の波形を有する前記第２の変換行列を導出する
（１）乃至（１５）のいずれかに記載の画像処理装置。
（１７）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが増加型の波形を有する前記第２の変換行列を導出する
（１）乃至（１６）のいずれかに記載の画像処理装置。
（１８）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが減少型の波形を有する前記第２の変換行列を導出する
（１）乃至（１７）のいずれかに記載の画像処理装置。
（１９）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが山型の波形を有する前記第２の変換行列を導出する
（１）乃至（１８）のいずれかに記載の画像処理装置。
（２０）  第１の変換行列を用いて第２の変換行列を導出し、
導出された前記第２の変換行列を用いて、画像の予測残差を直交変換し、
前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する
画像処理方法。
【０８８８】
（２１）  ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、
第１の変換行列を用いて第２の変換行列を導出する導出部と、
前記導出部により導出された前記第２の変換行列を用いて、前記復号部により得られた前記係数データを逆直交変換する逆直交変換部と
を備える画像処理装置。
（２２）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列とは異なる変換タイプの前記第２の変換行列を導出する
（２１）に記載の画像処理装置。
（２３）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列と行数および列数が同一の前記第２の変換行列を導出する
（２１）または（２２）に記載の画像処理装置。
（２４）  前記導出部は、前記第１の変換行列の要素に対する操作により、前記第２の変換行列を導出する
（２１）乃至（２３）のいずれかに記載の画像処理装置。
（２５）  前記操作は、要素の並び替えを含む
（２４）に記載の画像処理装置。
（２６）  前記導出部は、前記操作を複数回行うことにより、前記第２の変換行列を導出する
（２４）または（２５）に記載の画像処理装置。
（２７）  前記導出部は、ルックアップテーブルに格納される前記第１の変換行列を用いて、前記第２の変換行列を導出する
（２１）乃至（２６）のいずれかに記載の画像処理装置。
（２８）  前記逆直交変換部は、前記係数データに対する逆セカンダリ変換を行い、さらに、前記導出部により導出された前記第２の変換行列を用いて、前記逆セカンダリ変換の結果に対して逆プライマリ変換を行う
（２１）乃至（２７）のいずれかに記載の画像処理装置。
（２９）  前記導出部は、水平方向の逆１次元直交変換用の前記第２の変換行列と、垂直方向の逆１次元直交変換用の前記第２の変換行列とを導出し、
前記逆直交変換部は、前記逆プライマリ変換として、
前記導出部により導出された水平方向の逆１次元直交変換用の前記第２の変換行列を用いて、前記水平方向の逆１次元直交変換を行い、さらに、
前記導出部により導出された垂直方向の逆１次元直交変換用の前記第２の変換行列を用いて、前記垂直方向の逆１次元直交変換を行う
（２８）に記載の画像処理装置。
（３０）  前記導出部は、前記第１の変換行列をフリップして、前記第２の変換行列を導出する
（２１）乃至（２９）のいずれかに記載の画像処理装置。
（３１）  前記導出部は、前記第１の変換行列を転置して、前記第２の変換行列を導出する
（２１）乃至（３０）のいずれかに記載の画像処理装置。
（３２）  前記導出部は、前記第１の変換行列をフリップし、フリップ後の第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、前記第２の変換行列を導出する
（２１）乃至（３１）のいずれかに記載の画像処理装置。
（３３）  前記導出部は、前記第１の変換行列をフリップし、フリップ後の第１の変換行列を転置して、前記第２の変換行列を導出する
（２１）乃至（３２）のいずれかに記載の画像処理装置。
（３４）  前記導出部は、前記第１の変換行列を転置し、転置後の第１の変換行列をフリップして、前記第２の変換行列を導出する
（２１）乃至（３３）のいずれかに記載の画像処理装置。
（３５）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが所望のタイプの波形を有する前記第２の変換行列を導出する
（２１）乃至（３４）のいずれかに記載の画像処理装置。
（３６）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルがフラット型の波形を有する前記第２の変換行列を導出する
（２１）乃至（３５）のいずれかに記載の画像処理装置。
（３７）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが増加型の波形を有する前記第２の変換行列を導出する
（２１）乃至（３６）のいずれかに記載の画像処理装置。
（３８）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが減少型の波形を有する前記第２の変換行列を導出する
（２１）乃至（３７）のいずれかに記載の画像処理装置。
（３９）  前記導出部は、前記第１の変換行列を用いて、最低次行ベクトルが山型の波形を有する前記第２の変換行列を導出する
（２１）乃至（３８）のいずれかに記載の画像処理装置。
（４０）  ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、
第１の変換行列を用いて第２の変換行列を導出し、
導出された前記第２の変換行列を用いて、得られた前記係数データを逆直交変換する
画像処理方法。
【０８８９】
（４１）  画像の予測残差を置換操作する操作部と、
ベースとなる変換行列を用いて、前記操作部により置換操作された前記予測残差を直交変換する直交変換部と、
前記直交変換部により前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部と
を備える画像処理装置。
（４２）  前記操作部は、前記予測残差を、１次元直交変換の間の空間対称性の方向にフリップし、
前記直交変換部は、前記操作部によりフリップされた前記予測残差を、前記変換行列を用いて直交変換する
（４１）に記載の画像処理装置。
（４３）  前記操作部は、前記予測残差を、水平方向にフリップし、
前記直交変換部は、前記操作部により水平方向にフリップされた前記予測残差を、前記変換行列を用いて直交変換する
（４１）または（４２）に記載の画像処理装置。
（４４）  前記操作部は、前記予測残差を、垂直方向にフリップし、
前記直交変換部は、前記操作部により垂直方向にフリップされた前記予測残差を、前記変換行列を用いて直交変換する
（４１）乃至（４３）のいずれかに記載の画像処理装置。
（４５）  前記操作部は、前記予測残差を、水平方向および垂直方向にフリップし、
前記直交変換部は、前記操作部により水平方向および垂直方向にフリップされた前記予測残差を、前記変換行列を用いて直交変換する
（４１）乃至（４４）のいずれかに記載の画像処理装置。
（４６）  第１の変換行列を用いて第２の変換行列を導出する導出部をさらに備え、
前記直交変換部は、前記操作部によりフリップされた前記予測残差を、前記導出部により導出された前記第２の変換行列を用いて直交変換するように構成される
（４１）乃至（４５）のいずれかに記載の画像処理装置。
（４７）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列と行数および列数が同一の前記第２の変換行列を導出する
（４６）に記載の画像処理装置。
（４８）  前記導出部は、前記第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、前記第２の変換行列を導出する
（４６）または（４７）に記載の画像処理装置。
（４９）  前記直交変換部は、ベースとなる変換行列を用いて、前記操作部により置換操作された前記予測残差に対するプライマリ変換を行い、さらに、前記プライマリ変換結果に対してセカンダリ変換を行う
（４１）乃至（４８）のいずれかに記載の画像処理装置。
（５０）  画像の予測残差を置換操作し、
ベースとなる変換行列を用いて、置換操作された前記予測残差を直交変換し、
前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する
画像処理方法。
【０８９０】
（５１）  ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、
前記復号部により得られた前記係数データを逆直交変換する逆直交変換部と、
前記逆直交変換部により得られた前記係数データの逆直交変換結果を置換操作する操作部と
を備える画像処理装置。
（５２）  前記操作部は、前記逆直交変換結果を、１次元直交変換の間の空間対称性の方向にフリップする
（５１）に記載の画像処理装置。
（５３）  前記操作部は、前記逆直交変換結果を、水平方向にフリップする
（５１）または（５２）に記載の画像処理装置。
（５４）  前記操作部は、前記逆直交変換結果を、垂直方向にフリップする
（５１）乃至（５３）のいずれかに記載の画像処理装置。
（５５）  前記操作部は、前記逆直交変換結果を、水平方向および垂直方向にフリップする
（５１）乃至（５４）のいずれかに記載の画像処理装置。
（５６）  第１の変換行列を用いて第２の変換行列を導出する導出部をさらに備え、
前記逆直交変換部は、前記導出部により導出された前記第２の変換行列を用いて、前記復号部により得られた前記係数データを逆直交変換するように構成され、
前記操作部は、前記逆直交変換部により得られた前記係数データの逆直交変換結果を置換操作するように構成される
（５１）乃至（５５）のいずれかに記載の画像処理装置。
（５７）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列と行数および列数が同一の前記第２の変換行列を導出する
（５６）に記載の画像処理装置。
（５８）  前記導出部は、前記第１の変換行列のうち、奇数番目の行ベクトルの符号を反転して、前記第２の変換行列を導出する
（５６）または（５７）に記載の画像処理装置。
（５９）  前記逆直交変換部は、前記復号部により得られた前記係数データに対する逆セカンダリ変換を行い、さらに、ベースとなる変換行列を用いて、前記逆セカンダリ変換結果に対して逆プライマリ変換を行い、
前記操作部は、前記逆直交変換部により得られた前記逆プライマリ変換結果を置換操作する
（５１）乃至（５８）のいずれかに記載の画像処理装置。
（６０）  ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、
得られた前記係数データを逆直交変換し、
得られた前記係数データの逆直交変換結果を置換操作する
画像処理方法。
【０８９１】
（６１）  変換行列の一部を構成する部分行列を用いて前記変換行列を導出する導出部と、
前記導出部により導出された前記変換行列を用いて、画像の予測残差を直交変換する直交変換部と、
前記直交変換部により前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する符号化部と
を備える画像処理装置。
（６２）  前記導出部は、ルックアップテーブルに格納される前記部分行列を用いて、前記変換行列を導出する
（６１）に記載の画像処理装置。
（６３）  前記直交変換部は、前記導出部により導出された前記変換行列を用いて前記予測残差に対するプライマリ変換を行い、さらに、前記プライマリ変換結果に対してセカンダリ変換を行う
（６１）または（６２）に記載の画像処理装置。
（６４）  前記導出部は、水平方向の１次元直交変換用の前記変換行列と、垂直方向の１次元直交変換用の前記変換行列とを導出し、
前記直交変換部は、前記プライマリ変換として、
前記導出部により導出された水平方向の１次元直交変換用の前記変換行列を用いて、前記水平方向の１次元直交変換を行い、さらに、
前記導出部により導出された垂直方向の１次元直交変換用の前記変換行列を用いて、前記垂直方向の１次元直交変換を行う
（６３）に記載の画像処理装置。
（６５）  前記導出部は、前記部分行列を、前記変換行列の中心を通る所定の方向の軸を中心としてフリップして前記変換行列の残りの部分行列を導出することにより、前記変換行列を導出する
（６１）乃至（６４）のいずれかに記載の画像処理装置。
（６６）  前記導出部は、前記部分行列を行に平行な方向にフリップする
（６５）に記載の画像処理装置。
（６７）  前記導出部は、前記部分行列を列に平行な方向にフリップする
（６５）または（６６）に記載の画像処理装置。
（６８）  前記導出部は、前記部分行列を、前記変換行列の中心を中心とする回転方向にフリップする
（６５）乃至（６７）のいずれかに記載の画像処理装置。
（６９）  前記導出部は、前記部分行列を、前記変換行列の対角線を軸とする斜め方向にフリップする
（６５）乃至（６８）のいずれかに記載の画像処理装置。
（７０）  前記導出部は、さらに、フリップされた前記部分行列の要素の符号を反転して、前記変換行列を導出する
（６５）乃至（６９）のいずれかに記載の画像処理装置。
（７１）  前記部分行列は、前記変換行列の左半分の部分行列または右半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の行方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の行ベクトルの符号を反転して、前記変換行列の右半分の部分行列または左半分の部分行列を導出することにより、前記変換行列を導出するように構成される
（６１）乃至（７０）のいずれかに記載の画像処理装置。
（７２）  前記部分行列は、前記変換行列の上半分の部分行列または下半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の列方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の列ベクトルの符号を反転して、前記変換行列の下半分の部分行列または上半分の部分行列を導出することにより、前記変換行列を導出するように構成される
（６１）乃至（７１）のいずれかに記載の画像処理装置。
（７３）  前記部分行列は、前記変換行列の上半分の部分行列または下半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の下半分の部分行列または上半分の部分行列を導出することにより、前記変換行列を導出するように構成される
（６１）乃至（７２）のいずれかに記載の画像処理装置。
（７４）  前記部分行列は、前記変換行列の右上三角部分の部分行列または左下三角部分の部分行列であり、
前記導出部は、前記部分行列を転置して、前記変換行列の左下三角部分の部分行列または右上三角部分の部分行列を導出することにより、前記変換行列を導出するように構成される
（６１）乃至（７３）のいずれかに記載の画像処理装置。
（７５）  前記部分行列は、前記変換行列の左上三角部分の部分行列または右下三角部分の部分行列であり、
前記導出部は、前記部分行列を、前記変換行列の右上端と左下端を結ぶ対角線を軸とする斜め方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の右下三角部分の部分行列または左上三角部分の部分行列を導出することにより、前記変換行列を導出するように構成される
（６１）乃至（７４）のいずれかに記載の画像処理装置。
（７６）  前記部分行列は、前記変換行列の左上４分の１の部分行列であり、
前記導出部は、
前記部分行列を、前記変換行列の行方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の行ベクトルの符号を反転して、前記変換行列の右上４分の１の部分行列を導出し、
前記部分行列を、前記変換行列の列方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の列ベクトルの符号を反転して、前記変換行列の左下４分の１の部分行列を導出し、
前記部分行列を、前記変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の右下４分の１の部分行列を導出することにより、
前記変換行列を導出するように構成される
（６１）乃至（７５）のいずれかに記載の画像処理装置。
（７７）  前記導出部は、前記部分行列を用いて第１の変換行列を導出し、さらに、導出した前記第１の変換行列を用いて第２の変換行列を導出し、
前記直交変換部は、前記導出部により導出された前記第２の変換行列を用いて、前記予測残差を直交変換する
（６１）乃至（７６）のいずれかに記載の画像処理装置。
（７８）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列とは異なる変換タイプの前記第２の変換行列を導出する
（７７）に記載の画像処理装置。
（７９）  前記導出部は、前記第１の変換行列をフリップまたは転置して、前記第２の変換行列を導出する
（７７）または（７８）に記載の画像処理装置。
（８０）  変換行列の一部を構成する部分行列を用いて前記変換行列を導出し、
導出された前記変換行列を用いて、画像の予測残差を直交変換し、
前記予測残差が直交変換されて得られた係数データを符号化し、ビットストリームを生成する
画像処理方法。
【０８９２】
（８１）  ビットストリームを復号し、画像の予測残差が直交変換された係数データを得る復号部と、
変換行列の一部を構成する部分行列を用いて前記変換行列を導出する導出部と、
前記導出部により導出された前記変換行列を用いて、前記復号部により得られた前記係数データを逆直交変換する逆直交変換部と
を備える画像処理装置。
（８２）  前記導出部は、ルックアップテーブルに格納される前記部分行列を用いて、前記変換行列を導出する
（８１）に記載の画像処理装置。
（８３）  前記逆直交変換部は、前記復号部により得られた前記係数データに対する逆セカンダリ変換を行い、さらに、前記導出部により導出された前記変換行列を用いて、前記逆セカンダリ変換結果に対して逆プライマリ変換を行う
（８１）または（８２）に記載の画像処理装置。
（８４）  前記導出部は、水平方向の逆１次元直交変換用の前記変換行列と、垂直方向の逆１次元直交変換用の前記変換行列とを導出し、
前記逆直交変換部は、前記逆プライマリ変換として、
前記導出部により導出された水平方向の逆１次元直交変換用の前記変換行列を用いて、前記水平方向の逆１次元直交変換を行い、さらに、
前記導出部により導出された垂直方向の逆１次元直交変換用の前記変換行列を用いて、前記垂直方向の逆１次元直交変換を行う
（８３）に記載の画像処理装置。
（８５）  前記導出部は、前記部分行列を、前記変換行列の中心を通る所定の方向の軸を中心としてフリップして前記変換行列の残りの部分行列を導出することにより、前記変換行列を導出する
（８１）乃至（８４）のいずれかに記載の画像処理装置。
（８６）  前記導出部は、前記部分行列を行に平行な方向にフリップする
（８５）に記載の画像処理装置。
（８７）  前記導出部は、前記部分行列を列に平行な方向にフリップする
（８５）または（８６）に記載の画像処理装置。
（８８）  前記導出部は、前記部分行列を、前記変換行列の中心を中心とする回転方向にフリップする
（８５）乃至（８７）のいずれかに記載の画像処理装置。
（８９）  前記導出部は、前記部分行列を、前記変換行列の対角線を軸とする斜め方向にフリップする
（８５）乃至（８８）のいずれかに記載の画像処理装置。
（９０）  前記導出部は、さらに、フリップされた前記部分行列の要素の符号を反転して、前記変換行列を導出する
（８５）乃至（８９）のいずれかに記載の画像処理装置。
（９１）  前記部分行列は、前記変換行列の左半分の部分行列または右半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の行方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の行ベクトルの符号を反転して、前記変換行列の右半分の部分行列または左半分の部分行列を導出することにより、前記変換行列を導出するように構成される
（８１）乃至（９０）のいずれかに記載の画像処理装置。
（９２）  前記部分行列は、前記変換行列の上半分の部分行列または下半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の列方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の列ベクトルの符号を反転して、前記変換行列の下半分の部分行列または上半分の部分行列を導出することにより、前記変換行列を導出するように構成される
（８１）乃至（９１）のいずれかに記載の画像処理装置。
（９３）  前記部分行列は、前記変換行列の上半分の部分行列または下半分の部分行列であり、
前記導出部は、前記部分行列を前記変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の下半分の部分行列または上半分の部分行列を導出することにより、前記変換行列を導出するように構成される
（８１）乃至（９２）のいずれかに記載の画像処理装置。
（９４）  前記部分行列は、前記変換行列の右上三角部分の部分行列または左下三角部分の部分行列であり、
前記導出部は、前記部分行列を転置して、前記変換行列の左下三角部分の部分行列または右上三角部分の部分行列を導出することにより、前記変換行列を導出するように構成される
（８１）乃至（９３）のいずれかに記載の画像処理装置。
（９５）  前記部分行列は、前記変換行列の左上三角部分の部分行列または右下三角部分の部分行列であり、
前記導出部は、前記部分行列を、前記変換行列の右上端と左下端を結ぶ対角線を軸とする斜め方向にフリップし、さらに、奇数番目の行ベクトルの符号を反転して、前記変換行列の右下三角部分の部分行列または左上三角部分の部分行列を導出することにより、前記変換行列を導出するように構成される
（８１）乃至（９４）のいずれかに記載の画像処理装置。
（９６）  前記部分行列は、前記変換行列の左上４分の１の部分行列であり、
前記導出部は、
前記部分行列を、前記変換行列の行方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の行ベクトルの符号を反転して、前記変換行列の右上４分の１の部分行列を導出し、
前記部分行列を、前記変換行列の列方向にフリップし、さらに、フリップされた前記部分行列の奇数番目の列ベクトルの符号を反転して、前記変換行列の左下４分の１の部分行列を導出し、
前記部分行列を、前記変換行列の中心を中心とする回転方向にフリップし、さらに、フリップされた前記部分行列の、行番号および列番号がともに偶数である要素、および、行番号および列番号がともに奇数である要素の符号を反転して、前記変換行列の右下４分の１の部分行列を導出することにより、
前記変換行列を導出するように構成される
（８１）乃至（９５）のいずれかに記載の画像処理装置。
（９７）  前記導出部は、前記部分行列を用いて第１の変換行列を導出し、さらに、導出した前記第１の変換行列を用いて第２の変換行列を導出し、
前記逆直交変換部は、前記導出部により導出された前記第２の変換行列を用いて、前記係数データを逆直交変換する
（８１）乃至（９６）のいずれかに記載の画像処理装置。
（９８）  前記導出部は、前記第１の変換行列を用いて、前記第１の変換行列とは異なる変換タイプの前記第２の変換行列を導出する
（９７）に記載の画像処理装置。
（９９）  前記導出部は、前記第１の変換行列をフリップまたは転置して、前記第２の変換行列を導出する
（９７）または（９８）に記載の画像処理装置。
（１００）  ビットストリームを復号し、画像の予測残差が直交変換された係数データを得て、
変換行列の一部を構成する部分行列を用いて前記変換行列を導出し、
導出された前記変換行列を用いて、得られた前記係数データを逆直交変換する
画像処理方法。
【符号の説明】
【０８９３】
１００  画像符号化装置，  １０１  制御部，  １１３  直交変換部，  １１５  符号化部，  １１８  逆直交変換部,  １５２  プライマリ変換部，  ２００  画像復号装置，  ２１２  復号部，  ２１４  逆直交変換部，  ２５３  逆プライマリ変換部，  ３１１  プライマリ変換選択部，  ３１２  プライマリ水平変換部，  ３１３  プライマリ垂直変換部，  ３２１  変換行列導出部，  ３３１  変換行列LUT，  ３３２  フリップ部，  ３３３  転置部，  ３５１  変換行列導出部，  ３６１  変換行列LUT，  ３６２  フリップ部，  ３６３  転置部，  ４１１  逆プライマリ変換選択部，  ４１２  逆プライマリ垂直変換部，  ４１３  逆プライマリ水平変換部，  ４２１  変換行列導出部，  ４３１  変換行列LUT，  ４３２  フリップ部，  ４３３  転置部，  ４５１  変換行列導出部，  ４６１  変換行列LUT，  ４６２  フリップ部，  ４６３  転置部，  ５０１、５０２、５１１、および５１２  符号反転部，  ５５１および５５２  予測残差置換操作部，  ５６１、５６２、５７１、および５７２  符号反転部，  ６３２  水平方向フリップ部，  ６３３  垂直方向フリップ部，  ６３４  転置部，  ６３５  符号反転部，  ６４２  水平方向フリップ部，  ６４３  垂直方向フリップ部，  ６４４  転置部，  ６４５  符号反転部，  ６５２  水平方向フリップ部，  ６５３  垂直方向フリップ部，  ６５４  転置部，  ６５５  符号反転部，  ６６２  水平方向フリップ部，  ６６３  垂直方向フリップ部，  ６６４  転置部，  ６６５  符号反転部
【図１】
2019102889.tif 000076
【図２】
2019102889.tif 000077
【図３】
2019102889.tif 000078
【図４】
2019102889.tif 000079
【図５】
2019102889.tif 000080
【図６】
2019102889.tif 000081
【図７】
2019102889.tif 000082
【図８】
2019102889.tif 000083
【図９】
2019102889.tif 000084
【図１０】
2019102889.tif 000085
【図１１】
2019102889.tif 000086
【図１２】
2019102889.tif 000087
【図１３】
2019102889.tif 000088
【図１４】
2019102889.tif 000089
【図１５】
2019102889.tif 000090
【図１６】
2019102889.tif 000091
【図１７】
2019102889.tif 000092
【図１８】
2019102889.tif 000093
【図１９】
2019102889.tif 000094
【図２０】
2019102889.tif 000095
【図２１】
2019102889.tif 000096
【図２２】
2019102889.tif 000097
【図２３】
2019102889.tif 000098
【図２４】
2019102889.tif 000099
【図２５】
2019102889.tif 000100
【図２６】
2019102889.tif 000101
【図２７】
2019102889.tif 000102
【図２８】
2019102889.tif 000103
【図２９】
2019102889.tif 000104
【図３０】
2019102889.tif 000105
【図３１】
2019102889.tif 000106
【図３２】
2019102889.tif 000107
【図３３】
2019102889.tif 000108
【図３４】
2019102889.tif 000109
【図３５】
2019102889.tif 000110
【図３６】
2019102889.tif 000111
【図３７】
2019102889.tif 000112
【図３８】
2019102889.tif 000113
【図３９】
2019102889.tif 000114
【図４０】
2019102889.tif 000115
【図４１】
2019102889.tif 000116
【図４２】
2019102889.tif 000117
【図４３】
2019102889.tif 000118
【図４４】
2019102889.tif 000119
【図４５】
2019102889.tif 000120
【図４６】
2019102889.tif 000121
【図４７】
2019102889.tif 000122
【図４８】
2019102889.tif 000123
【図４９】
2019102889.tif 000124
【図５０】
2019102889.tif 000125
【図５１】
2019102889.tif 000126
【図５２】
2019102889.tif 000127
【図５３】
2019102889.tif 000128
【図５４】
2019102889.tif 000129
【図５５】
2019102889.tif 000130
【図５６】
2019102889.tif 000131
【図５７】
2019102889.tif 000132
【図５８】
2019102889.tif 000133
【図５９】
2019102889.tif 000134
【図６０】
2019102889.tif 000135
【図６１】
2019102889.tif 000136
【図６２】
2019102889.tif 000137
【図６３】
2019102889.tif 000138
【図６４】
2019102889.tif 000139
【図６５】
2019102889.tif 000140
【図６６】
2019102889.tif 000141
【図６７】
2019102889.tif 000142
【図６８】
2019102889.tif 000143
【図６９】
2019102889.tif 000144
【図７０】
2019102889.tif 000145
【図７１】
2019102889.tif 000146
【図７２】
2019102889.tif 000147
【図７３】
2019102889.tif 000148
【図７４】
2019102889.tif 000149
【図７５】
2019102889.tif 000150
【図７６】
2019102889.tif 000151
【図７７】
2019102889.tif 000152
【図７８】
2019102889.tif 000153
【図７９】
2019102889.tif 000154
【図８０】
2019102889.tif 000155
【図８１】
2019102889.tif 000156
【図８２】
2019102889.tif 000157
【図８３】
2019102889.tif 000158
【図８４】
2019102889.tif 000159
【図８５】
2019102889.tif 000160
【図８６】
2019102889.tif 000161
【図８７】
2019102889.tif 000162
【図８８】
2019102889.tif 000163
【図８９】
2019102889.tif 000164
【図９０】
2019102889.tif 000165
【図９１】
2019102889.tif 000166
【図９２】
2019102889.tif 000167
【図９３】
2019102889.tif 000168
【図９４】
2019102889.tif 000169
【図９５】
2019102889.tif 000170
【図９６】
2019102889.tif 000171
【図９７】
2019102889.tif 000172
【図９８】
2019102889.tif 000173
【図９９】
2019102889.tif 000174
【図１００】
2019102889.tif 000175
【図１０１】
2019102889.tif 000176
【図１０２】
2019102889.tif 000177
【国際調査報告】
2019102889.tif 000178
2019102889.tif 000179
2019102889.tif 000180
2019102889.tif 000181