(57)【要約】  本開示は、符号化・復号の負荷の増大を抑制することができるようにする画像処理装置および方法に関する。画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする。または、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする。本開示は、例えば、画像処理装置、画像符号化装置、または画像復号装置等に適用することができる。
2017195666.tif 000002
【特許請求の範囲】
【請求項１】
画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部
を備える画像処理装置。
【請求項２】
前記予測残差に対する変換処理であるプライマリ変換を行うプライマリ変換部と、
前記プライマリ変換部により前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換を行うセカンダリ変換部と
をさらに備え、
前記クリップ処理部は、前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数をクリップするように構成される
請求項１に記載の画像処理装置。
【請求項３】
前記変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルに対する行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルのスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
をさらに備え、
前記クリップ処理部は、前記スケーリング部によりスケーリングされた前記１次元のベクトルをクリップするように構成され、
前記行列化部は、前記クリップ処理部によりクリップされた前記１次元のベクトルを行列化するように構成される
請求項１に記載の画像処理装置。
【請求項４】
画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする
画像処理方法。
【請求項５】
逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部
を備える画像処理装置。
【請求項６】
逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする
画像処理方法。
【請求項７】
要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに変換する変換部
を備える画像処理装置。
【請求項８】
前記直交行列Tiは、第iの置換行列Piの転置行列PiTと、第iの直交行列Fiと、第iの置換行列Piとの行列積（PiT・Fi・Pi）からなる
請求項７に記載の画像処理装置。
【請求項９】
前記変換部は、前記第iの直交行列Tiと第i-1(i>0)の行ベクトルXi-1の転置行列Xi-1Tとの行列積Xiを導出する
請求項８に記載の画像処理装置。
【請求項１０】
前記直交行列Fiは、対角成分に互いに異なる2N-1個の２×２回転行列を有し、その他の要素は０である疎行列である
請求項８に記載の画像処理装置。
【請求項１１】
前記置換行列Piは、順方向に2i個の要素からなるN-i+1個のサブセットに分割し、各サブセットjの左半分の要素群を第１のクラスとし、右半分の要素群を第２のクラスとし、前記第１のクラスの奇数番目の要素Kを前記第２のクラスの対応する奇数番目Lの要素の右隣の偶数番目の要素Mと入れ替えることで導出される行列である
請求項８に記載の画像処理装置。
【請求項１２】
前記Nは４または６である
請求項７に記載の画像処理装置。
【請求項１３】
要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに変換する
画像処理方法。
【請求項１４】
要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する逆変換部
を備える画像処理装置。
【請求項１５】
前記直交行列ＩＲは、前記直交行列Tiの転置行列TiTにより構成され、
前記直交行列TiTは、第iの置換行列Piの転置行列PiTと、第iの直交行列Fiの転置行列FiTと、第iの置換行列Piとの行列積（PiT・FiT・Pi）からなる
を備える請求項１４に記載の画像処理装置。
【請求項１６】
前記逆変換部は、前記第iの直交行列Tiの転置行列TiTと第i-1(i>0)の行ベクトルXi-1の転置行列Xi-1Tとの行列積Xiを導出する
請求項１５に記載の画像処理装置。
【請求項１７】
前記直交行列Fiは、対角成分に互いに異なる2N-1個の２×２回転行列を有し、その他の要素は０である疎行列である
請求項１５に記載の画像処理装置。
【請求項１８】
前記置換行列Piは、順方向に2i個の要素からなるN-i+1個のサブセットに分割し、各サブセットjの左半分の要素群を第１のクラスとし、右半分の要素群を第２のクラスとし、前記第１のクラスの奇数番目の要素Kを前記第２のクラスの対応する奇数番目Lの要素の右隣の偶数番目の要素Mと入れ替えることで導出される行列である
請求項１５に記載の画像処理装置。
【請求項１９】
前記Nは４または６である
を備える請求項１４に記載の画像処理装置。
【請求項２０】
要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および方法に関し、特に、符号化・復号の負荷の増大を抑制することができるようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
従来、画像符号化において、画像とその予測画像の差分である予測残差に対してプライマリ変換を行った後に、さらに、エナジーコンパクションを高める（低域に変換係数を集中させる）ために、変換ブロック内の４×４サブブロック毎に、セカンダリ変換を適用することが開示されている（例えば、非特許文献１参照）。その非特許文献１には、どのセカンダリ変換を適用するかを示すセカンダリ変換識別子をCU単位でシグナルすることも開示されている。【０００３】
また、エンコーダにおいて、RDO（Rate-Distortion Optimization）に基づいて、非特許文献１に記載のCU単位でどのセカンダリ変換を適用するか決定するのは、計算複雑度が大きく、変換ブロック単位でのセカンダリ変換を適用するか否かを示すセカンダリ変換フラグをシグナルすることが開示されている（例えば、非特許文献２参照）。その非特許文献２には、どのセカンダリ変換を適用するかを示すセカンダリ変換識別子を、プライマリ変換識別子およびイントラ予測モードに基づいて導出することも開示されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer Ohm, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 2", JVET-B1001_v3, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016
【非特許文献２】X.Zhao, A.Said, V.Seregin, M.Karczewicz, J.Chen, R.Joshi, "TU-level non-separable secondary transform", JVET-B0059, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１および非特許文献２のいずれに記載の方法においても、セカンダリ変換の各行列の要素の精度は、９ビット（bit）精度で近似している。しかしながら、この精度でセカンダリ変換や逆セカンダリ変換を実行すると、セカンダリ変換や逆セカンダリ変換後の各信号のダイナミックレンジが１６ビットを超える可能性があり、セカンダリ変換や逆セカンダリ変換後の演算結果を一時的に格納する中間バッファとして必要な容量が増大するおそれがあった。【０００６】
本開示は、このような状況に鑑みてなされたものであり、符号化・復号の負荷の増大を抑制することができるようにするものである。
【課題を解決するための手段】
【０００７】
本技術の第１の側面の画像処理装置は、画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部を備える画像処理装置である。【０００８】
前記予測残差に対する変換処理であるプライマリ変換を行うプライマリ変換部と、前記プライマリ変換部により前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換を行うセカンダリ変換部とをさらに備え、前記クリップ処理部は、前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数をクリップするように構成されるようにすることができる。【０００９】
前記変換係数を１次元のベクトルに変換するラスタライズ部と、前記１次元のベクトルに対する行列演算を行う行列演算部と、前記行列演算が行われた前記１次元のベクトルのスケーリングを行うスケーリング部と、スケーリングされた前記１次元のベクトルを行列化する行列化部とをさらに備え、前記クリップ処理部は、前記スケーリング部によりスケーリングされた前記１次元のベクトルをクリップするように構成され、前記行列化部は、前記クリップ処理部によりクリップされた前記１次元のベクトルを行列化するように構成されるようにすることができる。【００１０】
本技術の第１の側面の画像処理方法は、画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする画像処理方法である。【００１１】
本技術の第２の側面の画像処理装置は、逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部を備える画像処理装置である。【００１２】
本技術の第２の側面の画像処理方法は、逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする画像処理方法である。【００１３】
本技術の第３の側面の画像処理装置は、要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに変換する変換部を備える画像処理装置である。【００１４】
前記直交行列Tiは、第iの置換行列Piの転置行列PiTと、第iの直交行列Fiと、第iの置換行列Piとの行列積（PiT・Fi・Pi）からなるようにすることができる。【００１５】
前記変換部は、前記第iの直交行列Tiと第i-1(i>0)の行ベクトルXi-1の転置行列Xi-1Tとの行列積Xiを導出することができる。【００１６】
前記直交行列Fiは、対角成分に互いに異なる2N-1個の２×２回転行列を有し、その他の要素は０である疎行列であるようにすることができる。【００１７】
前記置換行列Piは、順方向に2i個の要素からなるN-i+1個のサブセットに分割し、各サブセットjの左半分の要素群を第１のクラスとし、右半分の要素群を第２のクラスとし、前記第１のクラスの奇数番目の要素Kを前記第２のクラスの対応する奇数番目Lの要素の右隣の偶数番目の要素Mと入れ替えることで導出される行列であるようにすることができる。【００１８】
前記Nは４または６であるようにすることができる。【００１９】
本技術の第３の側面の画像処理方法は、要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに変換する画像処理方法である。【００２０】
本技術の第４の側面の画像処理装置は、要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する逆変換部を備える画像処理装置である。【００２１】
前記直交行列ＩＲは、前記直交行列Tiの転置行列TiTにより構成され、前記直交行列TiTは、第iの置換行列Piの転置行列PiTと、第iの直交行列Fiの転置行列FiTと、第iの置換行列Piとの行列積（PiT・FiT・Pi）からなるようにすることができる。【００２２】
前記逆変換部は、前記第iの直交行列Tiの転置行列TiTと第i-1(i>0)の行ベクトルXi-1の転置行列Xi-1Tとの行列積Xiを導出することができる。【００２３】
前記直交行列Fiは、対角成分に互いに異なる2N-1個の２×２回転行列を有し、その他の要素は０である疎行列であるようにすることができる。【００２４】
前記置換行列Piは、順方向に2i個の要素からなるN-i+1個のサブセットに分割し、各サブセットjの左半分の要素群を第１のクラスとし、右半分の要素群を第２のクラスとし、前記第１のクラスの奇数番目の要素Kを前記第２のクラスの対応する奇数番目Lの要素の右隣の偶数番目の要素Mと入れ替えることで導出される行列であるようにすることができる。【００２５】
前記Nは４または６であるようにすることができる。【００２６】
本技術の第４の側面の画像処理方法は、要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する画像処理方法である。【００２７】
本技術の第１の側面の画像処理装置および方法においては、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数が、所定の上限値若しくは下限値またはその両方でクリップされる。【００２８】
本技術の第２の側面の画像処理装置および方法においては、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数が、所定の上限値若しくは下限値またはその両方でクリップされる。【００２９】
本技術の第３の側面の画像処理装置および方法においては、要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積が導出されることにより、前記行ベクトルX0が要素数2N点の行ベクトルXnに変換される。【００３０】
本技術の第４の側面の画像処理装置および方法においては、要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積が導出されることにより、前記行ベクトルX0が要素数2N点の行ベクトルXnに逆変換される。
【発明の効果】
【００３１】
本開示によれば、画像を処理することができる。特に、符号化・復号の負荷の増大を抑制することができる。
【図面の簡単な説明】
【００３２】
【図１】CUについての再帰的なブロック分割の概要を説明するための説明図である。
【図２】図１に示したCUへのPUの設定について説明するための説明図である。
【図３】図１に示したCUへのTUの設定について説明するための説明図である。
【図４】CU／PUの走査順について説明するための説明図である。
【図５】セカンダリ変換の行列の例を示す図である。
【図６】セカンダリ変換におけるダイナミックレンジの例を示す図である。
【図７】画像符号化装置の主な構成例を示すブロック図である。
【図８】変換部の主な構成例を示すブロック図である。
【図９】画像符号化処理の流れの例を説明するフローチャートである。
【図１０】変換処理の流れの例を説明するフローチャートである。
【図１１】画像復号装置の主な構成例を示すブロック図である。
【図１２】逆変換部の主な構成例を示すブロック図である。
【図１３】画像復号処理の流れの例を説明するフローチャートである。
【図１４】逆変換処理の流れの例を説明するフローチャートである。
【図１５】変換部の主な構成例を示すブロック図である。
【図１６】変換処理の流れの例を説明するフローチャートである。
【図１７】逆変換部の主な構成例を示すブロック図である。
【図１８】逆変換処理の流れの例を説明するフローチャートである。
【図１９】ハイパーキューブギブンズ変換の様子の例を示す図である。
【図２０】ハイパーキューブギブンズ変換の行列分解について説明する図である。
【図２１】ハイパーキューブギブンズ変換の行列分解について説明する図である。
【図２２】ハイパーキューブギブンズ変換の行列分解について説明する図である。
【図２３】ハイパーキューブギブンズ変換の行列分解について説明する図である。
【図２４】ハイパーキューブギブンズ変換の行列分解について説明する図である。
【図２５】セカンダリ変換におけるダイナミックレンジの例を示す図である。
【図２６】変換部の主な構成例を示すブロック図である。
【図２７】行列演算部の主な構成例を示すブロック図である。
【図２８】変換処理の流れの例を説明するフローチャートである。
【図２９】行列演算処理の流れの例を説明するフローチャートである。
【図３０】逆変換部の主な構成例を示すブロック図である。
【図３１】行列演算部の主な構成例を示すブロック図である。
【図３２】逆変換処理の流れの例を説明するフローチャートである。
【図３３】行列演算処理の流れの例を説明するフローチャートである。
【図３４】ハイパーキューブギブンズ変換の行列分解について説明する図である。
【図３５】行列演算部の主な構成例を示すブロック図である。
【図３６】行列演算処理の流れの例を説明するフローチャートである。
【図３７】行列演算部の主な構成例を示すブロック図である。
【図３８】行列演算処理の流れの例を説明するフローチャートである。
【図３９】置換δi疑似コードの例を示す図である。
【図４０】32点HyGTの場合の置換δｉの例を示す図である。
【図４１】32点HyGTの場合の置換δｉの様子の例を説明する図である。
【図４２】32点HyGTの場合の置換δｉの様子の例を説明する図である。
【図４３】64点HyGTの場合の置換δｉの例を示す図である。
【図４４】2N点HyGT部の主な構成例を示すブロック図である。
【図４５】行列演算処理の流れの例を説明するフローチャートである。
【図４６】2N点逆HyGT部の主な構成例を示すブロック図である。
【図４７】行列演算処理の流れの例を説明するフローチャートである。
【図４８】セパラブルな64点HyGTと非セパラブルな64点HyGTの比較結果を説明する図である。
【図４９】ブロック分割の様子の例を説明する図である。
【図５０】セカンダリ変換部の主な構成例を示すブロック図である。
【図５１】64点HyGT部の主な構成例を示すブロック図である。
【図５２】変換処理の流れの例を説明するフローチャートである。
【図５３】行列演算処理の流れの例を説明するフローチャートである。
【図５４】逆セカンダリ変換部の主な構成例を示すブロック図である。
【図５５】64点逆HyGT部の主な構成例を示すブロック図である。
【図５６】変換処理の流れの例を説明するフローチャートである。
【図５７】行列演算処理の流れの例を説明するフローチャートである。
【図５８】セカンダリ変換の実行の様子の例を説明する図である。
【図５９】セカンダリ変換の実行の様子の例を説明する図である。
【図６０】セカンダリ変換の実行の様子の例を説明する図である。
【図６１】セカンダリ変換の実行の様子の例を説明する図である。
【図６２】セカンダリ変換の実行の様子の例を説明する図である。
【図６３】シーケンスパラメータセットのシンタクスの例を示す図である。
【図６４】Residual Codingのシンタクスの例を示す図である。
【図６５】シーケンスパラメータセットのシンタクスの例を示す図である。
【図６６】Residual Codingのシンタクスの例を示す図である。
【図６７】変換部の主な構成例を示すブロック図である。
【図６８】SDT部の主な構成例を示すブロック図である。
【図６９】テンプレートマッチングの様子の例を説明する図である。
【図７０】テンプレートマッチングの様子の例を説明する図である。
【図７１】変換処理の流れの例を説明するフローチャートである。
【図７２】SDT処理の流れの例を説明するフローチャートである。
【図７３】学習サンプル導出処理の流れの例を説明するフローチャートである。
【図７４】学習サンプル導出処理の流れの例を説明する、図７３に続くフローチャートである。
【図７５】変換行列R導出処理の流れの例を説明するフローチャートである。
【図７６】逆変換部の主な構成例を示すブロック図である。
【図７７】逆SDT部の主な構成例を示すブロック図である。
【図７８】逆変換処理の流れの例を説明するフローチャートである。
【図７９】逆SDT処理の流れの例を説明するフローチャートである。
【図８０】変換行列IR導出処理の流れの例を説明するフローチャートである。
【図８１】逆SDT部の主な構成例を示すブロック図である。
【図８２】逆SDT処理の流れの例を説明するフローチャートである。
【図８３】コンピュータの主な構成例を示すブロック図である。
【図８４】テレビジョン装置の概略的な構成の一例を示すブロック図である。
【図８５】携帯電話機の概略的な構成の一例を示すブロック図である。
【図８６】記録再生装置の概略的な構成の一例を示すブロック図である。
【図８７】撮像装置の概略的な構成の一例を示すブロック図である。
【図８８】ビデオセットの概略的な構成の一例を示すブロック図である。
【図８９】ビデオプロセッサの概略的な構成の一例を示すブロック図である。
【図９０】ビデオプロセッサの概略的な構成の他の例を示すブロック図である。
【図９１】ネットワークシステムの概略的な構成の一例を示すブロック図である。
【発明を実施するための形態】
【００３３】
以下、本開示を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態（変換係数のクリップ）
２．第２の実施の形態（ノルム正規化の際のビットシフト量制御）
３．第３の実施の形態（行列演算の分解）
４．第４の実施の形態（16点HyGTの別表現）
５．第５の実施の形態（2N点HyGT）
６．第６の実施の形態（64点HyGT）
７．第７の実施の形態（ブロック分割）
８．第８の実施の形態（サブブロックの選択）
９．第９の実施の形態（SDTへの適用）
１０．第１０の実施の形態（その他）
【００３４】
＜１．第１の実施の形態＞
＜ブロック分割＞
MPEG2（Moving Picture Experts Group 2(ISO/IEC 13818-2)）やMPEG-4 Part10（Advanced Video Coding、以下AVCと記す）などの旧来の画像符号化方式では、符号化処理は、マクロブロックと呼ばれる処理単位で実行される。マクロブロックは、16x16画素の均一なサイズを有するブロックである。これに対し、HEVC（High Efficiency Video Coding）では、符号化処理は、CU（Coding Unit）と呼ばれる処理単位（符号化単位）で実行される。CUは、最大符号化単位であるLCU（Largest Coding Unit）を再帰的に分割することにより形成される、可変的なサイズを有するブロックである。選択可能なCUの最大サイズは、64x64画素である。選択可能なCUの最小サイズは、8x8画素である。最小サイズのCUは、SCU（Smallest Coding Unit）と呼ばれる。なお、CUの最大サイズは、64x64画素に限定されず、より大きい128x128画素、256x256画素などのブロックサイズとしてもよい。
【００３５】
このように、可変的なサイズを有するCUが採用される結果、HEVCでは、画像の内容に応じて画質及び符号化効率を適応的に調整することが可能である。予測符号化のための予測処理は、PU（Prediction Unit）と呼ばれる処理単位（予測単位）で実行される。PUは、CUをいくつかの分割パタンのうちの１つで分割することにより形成される。また、PUは、輝度(Y)及び色差(Cb,Cr)毎のPB(Prediction Block)と呼ばれる処理単位(予測ブロック)から構成される。さらに、直交変換処理は、TU（Transform Unit）と呼ばれる処理単位（変換単位）で実行される。TUは、CU又はPUをある深さまで分割することにより形成される。また、TUは、輝度(Y)及び色差(Cb, Cr)毎のTB(Transform Block)と呼ばれる処理単位（変換ブロック）から構成される。
【００３６】
＜再帰的なブロックの分割＞
図１は、HEVCにおけるCUについての再帰的なブロック分割の概要を説明するための説明図である。CUのブロック分割は、１つのブロックの４（=2x2）個のサブブロックへの分割を再帰的に繰り返すことにより行われ、結果として四分木（Quad-Tree）状のツリー構造が形成される。１つの四分木の全体をCTB（Coding Tree Block）といい、CTBに対応する論理的な単位をCTU（Coding Tree Unit）という。
【００３７】
図１の上部には、一例として、64x64画素のサイズを有するCUであるＣ０１が示されている。Ｃ０１の分割の深さは、ゼロに等しい。これは、Ｃ０１がCTUのルートでありLCUに相当することを意味する。LCUサイズは、SPS（Sequence Parameter Set）又はPPS（Picture Parameter Set）において符号化されるパラメータにより指定され得る。CUであるＣ０２は、Ｃ０１から分割される４つのCUのうちの１つであり、32x32画素のサイズを有する。Ｃ０２の分割の深さは、１に等しい。CUであるＣ０３は、Ｃ０２から分割される４つのCUのうちの１つであり、16x16画素のサイズを有する。Ｃ０３の分割の深さは、２に等しい。CUであるＣ０４は、Ｃ０３から分割される４つのCUのうちの１つであり、8x8画素のサイズを有する。Ｃ０４の分割の深さは、３に等しい。このように、CUは、符号化される画像を再帰的に分割することにより形成される。分割の深さは、可変的である。例えば、青空のような平坦な画像領域には、より大きいサイズの（即ち、深さが小さい）CUが設定され得る。一方、多くのエッジを含む急峻な画像領域には、より小さいサイズの（即ち、深さが大きい）CUが設定され得る。そして、設定されたCUの各々が、符号化処理の処理単位となる。
【００３８】
＜CUへのPUの設定＞
PUは、イントラ予測及びインター予測を含む予測処理の処理単位である。PUは、CUをいくつかの分割パタンのうちの１つで分割することにより形成される。図２は、図１に示したCUへのPUの設定について説明するための説明図である。図２の右には、2Nx2N、2NxN、Nx2N、NxN、2NxnU、2NxnD、nLx2N及びnRx2Nという、８種類の分割パタンが示されている。これら分割パタンのうち、イントラ予測では、2Nx2N及びNxNの２種類が選択可能である（NxNはSCUでのみ選択可能）。これに対してインター予測では、非対称動き分割が有効化されている場合に、８種類の分割パタンの全てが選択可能である。
【００３９】
＜CUへのTUの設定＞
TUは、直交変換処理の処理単位である。TUは、CU（イントラCUについては、CU内の各PU）をある深さまで分割することにより形成される。図３は、図２に示したCUへのTUの設定について説明するための説明図である。図３の右には、Ｃ０２に設定され得る１つ以上のTUが示されている。例えば、TUであるＴ０１は、32x32画素のサイズを有し、そのTU分割の深さはゼロに等しい。TUであるＴ０２は、16x16画素のサイズを有し、そのTU分割の深さは１に等しい。TUであるＴ０３は、8x8画素のサイズを有し、そのTU分割の深さは２に等しい。
【００４０】
上述したCU、PU及びTUといったブロックを画像に設定するためにどのようなブロック分割を行うかは、典型的には、符号化効率を左右するコストの比較に基づいて決定される。エンコーダは、例えば１つの2Mx2M画素のCUと、４つのMxM画素のCUとの間でコストを比較し、４つのMxM画素のCUを設定した方が符号化効率が高いならば、2Mx2M画素のCUを４つのMxM画素のCUへと分割することを決定する。
【００４１】
＜CUとPUの走査順＞
画像を符号化する際、画像（又はスライス、タイル）内に格子状に設定されるCTB（又はLCU）が、ラスタスキャン順に走査される。１つのCTBの中では、CUは、四分木を左から右、上から下に辿るように走査される。カレントブロックを処理する際、上及び左の隣接ブロックの情報が入力情報として利用される。図４は、CUとPUの走査順について説明するための説明図である。図４の左上には、１つのCTBに含まれ得る４つのCUである、Ｃ１０、Ｃ１１、Ｃ１２及びＣ１３が示されている。各CUの枠内の数字は、処理の順序を表現している。符号化処理は、左上のCUであるＣ１０、右上のCUであるＣ１１、左下のCUであるＣ１２、右下のCUであるＣ１３の順で実行される。図４の右には、CUであるＣ１１に設定され得るインター予測のための１つ以上のPUが示されている。図４の下には、CUであるＣ１２に設定され得るイントラ予測のための１つ以上のPUが示されている。これらPUの枠内の数字に示したように、PUもまた、左から右、上から下に辿るように走査される。
【００４２】
以下においては、画像（ピクチャ）の部分領域や処理単位として「ブロック」を用いて説明する場合がある（処理部のブロックではない）。この場合の「ブロック」は、ピクチャ内の任意の部分領域を示し、その大きさ、形状、および特性等は限定されない。つまり、この場合の「ブロック」には、例えば、TU、TB、PU、PB、SCU、CU、LCU（CTB）、サブブロック、マクロブロック、タイル、またはスライス等、任意の部分領域（処理単位）が含まれるものとする。
【００４３】
＜変換係数のダイナミックレンジ＞
非特許文献１には、画像符号化において、画像とその予測画像の差分である予測残差に対してプライマリ変換を行った後に、さらに、エナジーコンパクションを高める（低域に変換係数を集中させる）ために、変換ブロック内のサブブロック毎に、セカンダリ変換を適用することが開示されている。また、その非特許文献１には、どのセカンダリ変換を適用するかを示すセカンダリ変換識別子をCU単位でシグナルすることも開示されている。
【００４４】
非特許文献２には、エンコーダにおいて、RDO（Rate-Distortion Optimization）に基づいて、非特許文献１に記載のCU単位でどのセカンダリ変換を適用するか決定するのは、計算複雑度が大きく、変換ブロック単位でのセカンダリ変換を適用するか否かを示すセカンダリ変換フラグをシグナルすることが開示されている。また、その非特許文献２には、どのセカンダリ変換を適用するかを示すセカンダリ変換識別子を、プライマリ変換識別子およびイントラ予測モードに基づいて導出することも開示されている。
【００４５】
しかしながら、非特許文献１および非特許文献２のいずれに記載の方法においても、セカンダリ変換の各行列の要素の精度は、９ビット（bit）精度で近似している。この精度でセカンダリ変換や逆セカンダリ変換を実行すると、セカンダリ変換や逆セカンダリ変換後の各信号のダイナミックレンジが１６ビットを超える可能性があった。そのため、セカンダリ変換や逆セカンダリ変換後の演算結果を一時的に格納する中間バッファに必要な容量が増大する等、符号化・復号の負荷が増大するおそれがあった。
【００４６】
例えば、セカンダリ変換は、以下の式（１）のように表すことができる。
【００４７】
Y = T・XT  ・・・（１）
【００４８】
式（１）において、Ｔは１６×１６の行列であり、Ｘは１×１６の１次元のベクトルである。Ｘの各要素の値の値域は、[-A, A-1]である。
【００４９】
この場合、式（１）においてＹの各要素のダイナミックレンジの上限値MaxValは、以下の式（２）のように表される。
【００５０】
【数１】
2017195666.tif 000003
・・・（２）
【００５１】
式（２）において、ｒは、行ベクトルを示し、ｉは行ベクトルｒのｉ番目の要素を示す。つまり、行列Ｔのある行ベクトルｒに着目した場合、行ベクトルの全要素の絶対値和とＸの値域の上限値が最大となる行ベクトルｒが、式（１）のダイナミックレンジの上限値となる。同様に、下限値は、-MaxValとなる。
【００５２】
例えば、セカンダリ変換において行われる行列演算に、図５に示されるような行列Ｒが用いられるとする。この場合Ｒの行ベクトルｒの全要素の絶対値和が最大となるのは、r = 3のときである（図中四角で囲まれた行ベクトル）。このとき、絶対値和は、以下の式（３）に示されるように、627である。
【００５３】
【数２】
2017195666.tif 000004
・・・（３）
【００５４】
非特許文献１に記載の方法におけるセカンダリ変換におけるダイナミックレンジは図６に示される表のようになる。この表に示されるように、Coeff >> 8や、Coeff_P >> 8の操作（ノルム正規化）の後の係数が215を超える可能性があった。
【００５５】
このようにダイナミックレンジが１６ビットを超えると、中間バッファサイズは、１６ビットでは不足するので、３２ビットにしなければならなくなり、コストが増大するおそれがある。このように、非特許文献１や非特許文献２に記載の方法では、符号化・復号の負荷が増大するおそれがあった。
【００５６】
＜変換係数のクリップ＞
そこで、変換係数を、所定の上限値若しくは下限値またはその両方でクリップするようにする。このようにすることにより、変換係数のダイナミックレンジ幅の増大を抑制することができるので、符号化・復号の負荷の増大を抑制することができる。
【００５７】
＜画像符号化装置＞
図７は、本技術を適用した画像処理装置の一態様である画像符号化装置の構成の一例を示すブロック図である。図７に示される画像符号化装置１００は、AVCやHEVCのように、画像とその予測画像との予測残差を符号化する装置である。例えば、画像符号化装置１００は、HEVCに提案された技術や、JVET（Joint Video Exploration Team）にて提案された技術を実装している。
【００５８】
なお、図７においては、処理部やデータの流れ等の主なものを示しており、図７に示されるものが全てとは限らない。つまり、画像符号化装置１００において、図７においてブロックとして示されていない処理部が存在したり、図７において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【００５９】
図７に示されるように画像符号化装置１００は、制御部１０１、演算部１１１、変換部１１２、量子化部１１３、符号化部１１４、逆量子化部１１５、逆変換部１１６、演算部１１７、フレームメモリ１１８、および予測部１１９を有する。
【００６０】
制御部１０１は、外部、または予め指定された処理単位のブロックサイズに基づいて、画像符号化装置１００に入力される動画像を処理単位のブロック（CU, PU, 変換ブロック(TB)など）へ分割し、分割されたブロックに対応する画像Iを演算部１１１へ供給させる。また、制御部１０１は、各ブロックへ供給する符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo等）を、例えば、RDO（Rate-Distortion Optimization）に基づいて決定する。決定された符号化パラメータは、各ブロックへ供給される。
【００６１】
ヘッダ情報Hinfoは、例えば、ビデオパラメータセット（VPS（Video Parameter Set））、シーケンスパラメータセット（SPS（Sequence Parameter Set））、ピクチャパラメータセット（PPS（Picture Parameter Set））、スライスヘッダ（SH）等の情報を含む。例えば、ヘッダ情報Hinfoには、画像サイズ（横幅PicWidth、縦幅PicHeight）、ビット深度（輝度bitDepthY, 色差bitDepthC）、CUサイズの最大値MaxCUSize／最小値MinCUSize、変換ブロックサイズの最大値MaxTBSize／最小値MinTBSize、変換スキップブロックの最大値MaxTSSize（最大変換スキップブロックサイズとも称する）、各符号化ツールのオンオフフラグ（有効フラグとも称する）などを規定する情報が含まれる。もちろん、ヘッダ情報Hinfoの内容は任意であり、上述した例以外のどのような情報がこのヘッダ情報Hinfoに含まれるようにしてもよい。
【００６２】
予測モード情報Pinfoには、例えば、処理対象PUのPUサイズ（予測ブロックサイズ）を示す情報であるPUサイズPUSize、処理対象のブロックのイントラ予測モードに関する情報であるイントラ予測モード情報IPinfo（例えば、JCTVC-W1005, 7.3.8.5 Coding Unit syntax中のprev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode等）、処理対象のブロックの動き予測に関する情報である動き予測情報MVinfo（例えば、JCTVC-W1005, 7.3.8.6 Prediction Unit Syntax中のmerge_idx, merge_flag, inter_pred_idc, ref_idx_LX, mvp_lX_flag, X={0,1}, mvd等）等が含まれる。もちろん、予測モード情報Pinfoの内容は任意であり、上述した例以外のどのような情報がこの予測モード情報Pinfoに含まれるようにしてもよい。
【００６３】
変換情報Tinfoには、例えば、以下のような情報が含まれる。
【００６４】
ブロックサイズTBSize（あるいは、２を底とするTBSizeの対数値log2TBSize、変換ブロックサイズとも称する）は、処理対象変換ブロックのブロックサイズを示す情報である。
【００６５】
セカンダリ変換識別子（st_idx）は、対象とするデータ単位において、どのセカンダリ変換または逆セカンダリ変換（（逆）セカンダリ変換とも称する）を適用するかを示す識別子である（例えば、JVET-B1001、2.5.2 Secondary Transformsを参照。JEM2では、nsst_idx, rot_idxとも称する）。換言するに、このセカンダリ変換識別子は、対象とするデータ単位における（逆）セカンダリ変換の内容に関する情報である。
【００６６】
例えば、セカンダリ変換識別子st_idxは、その値が０より大きい場合、（逆）セカンダリ変換の行列を指定する識別子である。換言するに、この場合、セカンダリ変換識別子st_idxは、（逆）セカンダリ変換の実行を示す。また、例えば、セカンダリ変換識別子st_idxは、その値が０の場合、（逆）セカンダリ変換のスキップを示す。
【００６７】
スキャン識別子（scanIdx）は、スキャン方法に関する情報である。量子化パラメータ（qp）は、対象とするデータ単位において、（逆）量子化に用いられる量子化パラメータを示す情報である。量子化マトリックス（scaling_matrix）は、対象とするデータ単位において、（逆）量子化に用いられる量子化マトリックスを示す情報である（例えば、JCTVC-W1005, 7.3.4 Scaling list data syntax）。
【００６８】
もちろん、変換情報Tinfoの内容は任意であり、上述した例以外のどのような情報がこの変換情報Tinfoに含まれるようにしてもよい。
【００６９】
ヘッダ情報Hinfoは、例えば、各ブロックに供給される。予測モード情報Pinfoは、例えば、符号化部１１４および予測部１１９に供給される。変換情報Tinfoは、例えば、変換部１１２、量子化部１１３、符号化部１１４、逆量子化部１１５、および逆変換部１１６に供給される。
【００７０】
演算部１１１は、入力された処理単位のブロックに対応する画像Ｉから、予測部１１９から供給された予測画像Ｐを、式（４）に示すように減算して予測残差Ｄを求め、それを変換部１１２に供給する。
【００７１】
Ｄ＝Ｉ−Ｐ  ・・・（４）
【００７２】
変換部１１２は、制御部１０１から供給される変換情報Tinfoに基づいて、演算部１１１から供給される予測残差Ｄに対して変換処理を行い、変換係数Coeffを導出する。変換部１１２は、その変換係数Coeffを量子化部１１３に供給する。
【００７３】
量子化部１１３は、制御部１０１から供給される変換情報Tinfoに基づいて、変換部１１２から供給される変換係数Coeffをスケーリング（量子化）する。つまり、量子化部１１３は、変換処理が行われた変換係数Coeffの量子化を行う。量子化部１１３は、その量子化により得られた量子化後の変換係数、すなわち量子化変換係数レベルlevelを符号化部１１４および逆量子化部１１５に供給する。
【００７４】
符号化部１１４は、量子化部１１３から供給される量子化変換係数レベルlevel等を所定の方法で符号化する。例えば、符号化部１１４は、シンタックステーブルの定義に沿って、制御部１０１から供給される符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo等）や、量子化部１１３から供給される量子化変換係数レベルlevelを、各シンタックス要素のシンタックス値へ変換し、各シンタックス値を符号化（例えば、算術符号化）し、ビット列（符号化データ）を生成する。
【００７５】
また、符号化部１１４は、量子化変換係数レベルlevelから残差情報RInfoを導出し、残差情報RInfoを符号化し、ビット列（符号化データ）を生成する。
【００７６】
残差情報RInfoには、例えば、ラスト非ゼロ係数X座標（last_sig_coeff_x_pos）、ラスト非ゼロ係数Y座標（last_sig_coeff_y_pos）、サブブロック非ゼロ係数有無フラグ（coded_sub_block_flag）、非ゼロ係数有無フラグ（sig_coeff_flag）、非ゼロ係数のレベルが１より大きいかを示すフラグ情報であるGR1フラグ（gr1_flag）、非ゼロ係数のレベルが２より大きいかを示すフラグ情報であるGR2フラグ（gr2_flag）、非ゼロ係数の正負を示す符号であるサイン符号（sign_flag）、非ゼロ係数の残余レベルを示す情報である非ゼロ係数残余レベル（coeff_abs_level_remaining）などが含まれる（例えば、JCTVC-W1005の7.3.8.11 Residual Coding syntaxを参照）。もちろん、残差情報RInfoの内容は任意であり、上述した例以外のどのような情報がこの残差情報RInfoに含まれるようにしてもよい。
【００７７】
符号化部１１４は、例えば、符号化された各シンタックス要素のビット列（符号化データ）を多重化し、ビットストリームとして出力する。
【００７８】
逆量子化部１１５は、制御部１０１から供給される変換情報Tinfoに基づいて、量子化部１１３から供給される量子化変換係数レベルlevelの値をスケーリング（逆量子化）し、逆量子化後の変換係数Coeff_IQを導出する。逆量子化部１１５は、その変換係数Coeff_IQを逆変換部１１６に供給する。この逆量子化部１１５により行われる逆量子化は、量子化部１１３により行われる量子化の逆処理であり、後述する画像復号装置において行われる逆量子化と同様の処理である。したがって、この逆量子化については、画像復号装置に関する説明において後述する。
【００７９】
逆変換部１１６は、制御部１０１から供給される変換情報Tinfoに基づいて、逆量子化部１１５から供給される変換係数Coeff_IQに対して逆変換を行い、予測残差Ｄ’を導出する。逆変換部１１６は、その予測残差Ｄ’を演算部１１７に供給する。この逆変換部１１６により行われる逆変換は、変換部１１２により行われる変換の逆処理であり、後述する画像復号装置において行われる逆変換と同様の処理である。したがって、この逆変換については、画像復号装置に関する説明において後述する。
【００８０】
演算部１１７は、逆変換部１１６から供給される予測残差Ｄ’と、予測部１１９より供給される、その予測残差Ｄ’に対応する予測画像Ｐ（予測信号）とを、以下の式（５）のように加算して局所復号画像Recを導出する。演算部１１７は、その局所復号画像Recをフレームメモリ１１８に供給する。
【００８１】
Rec＝Ｄ’＋Ｐ  ・・・（５）
【００８２】
フレームメモリ１１８は、演算部１１７より供給される局所復号画像Recを用いてピクチャ単位毎の復号画像を再構築し、フレームメモリ１１８内のバッファへ格納する。フレームメモリ１１８は、予測部１１９により指定される復号画像を参照画像としてバッファより読み出し、予測部１１９に供給する。また、フレームメモリ１１８は、復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfoなどを、フレームメモリ１１８内のバッファに格納するようにしても良い。
【００８３】
予測部１１９は、予測モード情報PInfoによって指定される、フレームメモリ１１８に格納された復号画像を参照画像として取得し、その参照画像を用いて、予測モード情報Pinfoによって指定される予測方法により予測画像Ｐを生成する。予測部１１９は、生成した予測画像Ｐを演算部１１１や演算部１１７に供給する。
【００８４】
このような画像符号化装置１００において、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部を備えるようにする。つまり、変換部１１２が、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするようにする。
【００８５】
＜変換部＞
図８は、変換部１１２の主な構成例を示すブロック図である。図８において、変換部１１２は、プライマリ変換部１３１およびセカンダリ変換部１３２を有する。
【００８６】
プライマリ変換部１３１は、演算部１１１から供給される予測残差Ｄに対して、例えば直交変換等のプライマリ変換を実行し、その予測残差Ｄに対応するプライマリ変換後の変換係数Coeff_P（プライマリ変換係数とも称する）を導出する。すなわち、プライマリ変換部１３１は、予測残差Ｄをプライマリ変換係数Coeff_Pに変換する。プライマリ変換部１３１は、導出したプライマリ変換係数Coeff_Pをセカンダリ変換部１３２に供給する。
【００８７】
セカンダリ変換部１３２は、プライマリ変換部１３１から供給されるプライマリ変換係数Coeff_Pを１次元のベクトルに変換し、その１次元のベクトルに対する行列演算を行い、その行列演算が行われた１次元のベクトルのスケーリングを行い、そのスケーリングされた前記１次元のベクトルを行列化する変換処理であるセカンダリ変換を行う。
【００８８】
セカンダリ変換部１３２は、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxと、変換係数のスキャン方法に関する情報であるスキャン識別子scanIdxとに基づいて、プライマリ変換係数Coeff_Pに対してセカンダリ変換を行い、セカンダリ変換後の変換係数Coeff（セカンダリ変換係数とも称する）を導出する。つまり、セカンダリ変換部１３２は、プライマリ変換係数Coeff_Pをセカンダリ変換係数Coeffに変換する。
【００８９】
図８に示されるように、セカンダリ変換部１３２は、ラスタライズ部１４１、行列演算部１４２、スケーリング部１４３、行列化部１４４、クリップ処理部１４５、およびセカンダリ変換選択部１４６を有する。
【００９０】
ラスタライズ部１４１は、スキャン識別子scanIdxによって指定される変換係数のスキャン方法に基づいて、サブブロック単位（４ｘ４サブブロック）毎に、プライマリ変換部１３１から供給されるプライマリ変換係数Coeff_Pを１×１６次元のベクトルX1dへ変換する。ラスタライズ部１４１は、得られたベクトルX1dを行列演算部１４２に供給する。
【００９１】
セカンダリ変換選択部１４６は、セカンダリ変換識別子st_idxで指定されるセカンダリ変換の行列Ｒを、セカンダリ変換選択部１４６の内部メモリ（不図示）より読み出し、行列演算部１４２に供給する。例えば、セカンダリ変換選択部１４６は、あるセカンダリ変換識別子st_idxの値のとき、セカンダリ変換として、図５に示される１６×１６の行列Ｒを読み出し、行列演算部１４２に供給する。
【００９２】
なお、セカンダリ変換選択部１４６が、セカンダリ変換識別子st_idxおよびイントラ予測モード情報IPinfo（例えば、予測モード番号）に応じて、セカンダリ変換Ｒを選択するようにしてもよい。また、セカンダリ変換選択部１４６が、イントラ予測モード情報IPinfoの代わりに、動き予測情報MVinfoおよびセカンダリ変換識別子st_idxに応じて、変換Ｒを選択するようにしてもよい。
【００９３】
行列演算部１４２は、１次元ベクトルX1dおよびセカンダリ変換Ｒの行列を用いて、以下の式（６）に示すような行列演算を行い、その結果Y1dをスケーリング部１４３に供給する。ここで、演算子"T"は、転置行列の操作を表す。
【００９４】
Y1dT＝Ｒ・X1dT  ・・・（６）
【００９５】
スケーリング部１４３は、行列演算部１４２から供給される信号Y1dのノルムを正規化するために、以下の式（７）に示されるようなＮ（Ｎは自然数）ビットのビットシフト演算を行い、ビットシフト後の信号Z1dを求める。
【００９６】
Z1d＝（Y1d）>>Ｎ  ・・・（７）
【００９７】
なお、以下の式（８）のようにＮビットのシフト演算前に、オフセットとして、1<<(N-1)の値を、信号Z1dの各要素へ加算するようにしてもよい。
【００９８】
Z1d＝（Y1d＋（（N-1）<<1）・Ｅ）>>Ｎ  ・・・（８）
【００９９】
なお、式（８）において、Ｅは、すべての要素の値が１の１×１６次元のベクトルである。例えば、図５に示されるセカンダリ変換Ｒの行列は、８ビットスケーリングされた行列であるため、スケーリング部１４３において、ノルムの正規化に用いるＮの値は８である。一般的に、セカンダリ変換の行列Ｒが、Ｎビットスケーリングされている場合、ノルム正規化のビットシフト量は、Ｎビットである。スケーリング部１４３は、以上のように得られた信号Z1dを行列化部１４４に供給する。
【０１００】
行列化部１４４は、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、ノルム正規化後の１×１６次元のベクトルZ1dを４×４行列へ変換する。行列化部１４４は、得られた変換係数Coeffをクリップ処理部１４５に供給する。
【０１０１】
クリップ処理部１４５は、４ｘ４行列の変換係数Coeff、変換係数の最大値CoeffMax、および最小値CoeffMinを入力とする。クリップ処理部１４５は、行列化部１４４から供給される４ｘ４行列の変換係数Coeffの各要素Coeff(i,j) (i=0…3, j=0…3)に対して、以下に示す式（９）のように、変換係数の最大値CoeffMaxおよび最小値CoeffMinによってクリップ処理を行う。
【０１０２】
Coeff(i,j) = Clip3 (CoeffMin, CoeffMax, Coeff(i,j) )
・・・（９）
【０１０３】
ここで、演算子Clip3(Xmin, Xmax, X)は、入力値Xが、Xminより小さい場合、Xminの値を返し、入力値XがXmaxより大きい場合、Xmaxを返し、それ以外の場合は、入力値Ｘを返すクリップ処理である。Clip3は、Min(x,y), Max(x,y)を使って、以下の式（１０）のように表現することもできる。
【０１０４】
Clip3(Xmin, Xmax, X ) = Min(Xmin, Max(Xmax, X)) = Max(Xmax, Min(Xmin, X))
・・・（１０）
【０１０５】
なお、変換係数の最大値CoeffMax、最小値CoeffMinは、16bit精度であるとすれば、以下の値であることが望ましい。
CoeffMax = 215 - 1 = 32767
CoeffMin = -215 = -32768
【０１０６】
なお、変換係数の最大値CoeffMax、最小値CoeffMinの精度は、16bit精度に限定されず、一般的に、8bitの整数倍(M倍(M>=1))精度であるとしてもよい。この場合、以下のように、変換係数の最大値CoeffMaxは8*M-1の値に設定し、最小値CoeffMinは-8*Mに設定する。
CoeffMax = 8*M - 1
CoeffMin = -8*M
【０１０７】
また、変換係数の最大値CoeffMax、及び最小値CoeffMinは、入力信号のビット深度BitDepthと、パラメータセット（SPS/PPSなど）において通知される拡張演算精度フラグextended_precision_processing_flagに基づいて、以下の式（１１）乃至式（１３）によって導出してもよい。
【０１０８】
MaxLog2TrDynamicRange =
= extended_precision_processing_flag ? Max(15,BitDepth + 6) : 15
・・・（１１）
CoeffMax = (1<<MaxLog2TrDynamicRange) - 1
・・・（１２）
CoeffMin = - (1<<MaxLog2TrDynamicRange)
・・・（１３）
【０１０９】
ここで、拡張演算精度フラグは、フラグの値が１の場合には、変換係数の精度を拡張することを示し、フラグの値が０の場合には、変換係数の精度を拡張しないことを示す。式（１１）において、拡張演算精度フラグの値が１の場合には、入力信号のビット深度BitDepthと６の和の値と、15を比較して大きい方の値が、変数MaxLog2TrDynamicRangeに設定される。
【０１１０】
例えば、入力信号のビット深度BitDepth=10の場合、変数MaxLog2TrDynamicRangeの値は、16となる。この例の場合、変換係数の最大値CoeffMax、及び最小値CoeffMinは、式（１２）および式（１３）に従って、以下の値となる。この場合、変換係数の精度は、17bitである。
CoeffMax = (1<<16) - 1 = 65535
CoeffMin = -(1<<16) = -65536
【０１１１】
同様にして、入力信号のビット深度BitDepth=12の場合、変数MaxLog2TrDynamicRangeの値は、22となる。この例の場合、変換係数の最大値CoeffMax、及び最小値CoeffMinは、式（１２）および式（１３）に従って、以下の値となる。この場合、変換係数の精度は、23bitである。
CoeffMax = (1<<22) - 1 = 4194303
CoeffMin = -(1<<22) = -4194304
【０１１２】
式（１１）において、拡張演算精度フラグの値が０の場合、変数MaxLog2TrDynamicRangeの値は15に設定される。この場合、変換係数の最大値CoeffMax、最小値CoeffMinは、式（１２）および式（１３）に従って、以下の値となる。
CoeffMax = (1<<15) - 1 = 32767
CoeffMin = -(1<<15) = -32768
【０１１３】
以上、式（１１）乃至式（１３）によれば、入力信号のビット深度、及び拡張演算精度フラグに基づいて、変換係数の最大値CoeffMax、最大値CoeffMinを決定することができる。特に、入力信号のビット深度が大きい場合（例、16bit）には、変換係数の精度が16bitでは演算精度が不足し、符号化効率が低下する。従って、上記のように、入力信号のビット深度に応じて、変換係数の演算精度を制御できるようにしておくことが好ましい。
【０１１４】
クリップ処理部１４５は、クリップ処理を行った変換係数Coeffをセカンダリ変換係数として量子化部１１３に供給する。
【０１１５】
つまり、クリップ処理部１４５によりセカンダリ変換係数Coeffがクリップ処理され、その値が所定の最大値乃至最小値の範囲内に制限される。したがって、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができるので、符号化の負荷の増大を抑制することができる。これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。
【０１１６】
＜画像符号化処理の流れ＞
次に、画像符号化装置１００により実行される各処理の流れの例を説明する。最初に、画像符号化処理の流れの例を、図９のフローチャートを参照して説明する。
【０１１７】
画像符号化処理が開始されると、ステップＳ１０１において、制御部１０１は、符号化制御処理を行い、ブロック分割や符号化パラメータの設定等を行う。
【０１１８】
ステップＳ１０２において、予測部１１９は、予測処理を行い、最適な予測モードの予測画像等を生成する。例えば、この予測処理において、予測部１１９は、イントラ予測を行って最適なイントラ予測モードの予測画像等を生成し、インター予測を行って最適なインター予測モードの予測画像等を生成し、それらの中から、コスト関数値等に基づいて最適な予測モードを選択する。
【０１１９】
ステップＳ１０３において、演算部１１１は、入力画像と、ステップＳ１０２の予測処理により選択された最適なモードの予測画像との差分を演算する。つまり、演算部１１１は、入力画像と予測画像との予測残差Ｄを生成する。このようにして求められた予測残差Ｄは、元の画像データに比べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
【０１２０】
ステップＳ１０４において、変換部１１２は、ステップＳ１０３の処理により生成された予測残差Ｄに対して変換処理を行い、変換係数Coeffを導出する。ステップＳ１０４の処理の詳細については後述する。
【０１２１】
ステップＳ１０５において、量子化部１１３は、制御部１０１により算出された量子化パラメータを用いる等して、ステップＳ１０４の処理により得られた変換係数Coeffを量子化し、量子化変換係数レベルlevelを導出する。
【０１２２】
ステップＳ１０６において、逆量子化部１１５は、ステップＳ１０５の処理により生成された量子化変換係数レベルlevelを、そのステップＳ１０５の量子化の特性に対応する特性で逆量子化し、変換係数Coeff_IQを導出する。
【０１２３】
ステップＳ１０７において、逆変換部１１６は、ステップＳ１０６の処理により得られた変換係数Coeff_IQを、ステップＳ１０４の変換処理に対応する方法で逆変換し、予測残差Ｄ’を導出する。なお、この逆変換処理は、ステップＳ１０４の変換処理の逆処理であり、後述する画像復号処理において実行される逆変換処理と同様に実行される。そのため、この逆変換処理の説明は、復号側の説明において行う。
【０１２４】
ステップＳ１０８において、演算部１１７は、ステップＳ１０７の処理により導出された予測残差Ｄ’に、ステップＳ１０２の予測処理により得られた予測画像を加算することにより、局所的に復号された復号画像を生成する。
【０１２５】
ステップＳ１０９において、フレームメモリ１１８は、ステップＳ１０８の処理により得られた、局所的に復号された復号画像を記憶する。
【０１２６】
ステップＳ１１０において、符号化部１１４は、ステップＳ１０５の処理により得られた量子化変換係数レベルlevelを符号化する。例えば、符号化部１１４は、画像に関する情報である量子化変換係数レベルlevelを、算術符号化等により符号化し、符号化データを生成する。また、このとき、符号化部１１４は、各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo）を符号化する。さらに、符号化部１１４は、量子化変換係数レベルlevelから残差情報RInfoを導出し、その残差情報RInfoを符号化する。符号化部１１４は、このように生成した各種情報の符号化データをまとめて、ビットストリームとして画像符号化装置１００の外部に出力する。このビットストリームは、例えば、伝送路や記録媒体を介して復号側に伝送される。
【０１２７】
ステップＳ１１０の処理が終了すると、画像符号化処理が終了する。
【０１２８】
なお、これらの各処理の処理単位は任意であり、互いに同一でなくてもよい。したがって、各ステップの処理は、適宜、他のステップの処理等と並行して、または、処理順を入れ替えて実行することもできる。
【０１２９】
＜変換処理の流れ＞
次に、図９のステップＳ１０４において実行される変換処理の流れの例を、図１０のフローチャートを参照して説明する。
【０１３０】
変換処理が開始されると、ステップＳ１２１において、プライマリ変換部１３１は、プライマリ変換識別子pt_idxに基づいて、予測残差Ｄに対するプライマリ変換を行い、プライマリ変換係数Coeff_Pを導出する。
【０１３１】
ステップＳ１２２において、セカンダリ変換部１３２は、セカンダリ変換識別子st_idxがセカンダリ変換を適用するか否か（st_idx>0）を判定する。セカンダリ変換識別子st_idxが０である（セカンダリ変換識別子st_idxがセカンダリ変換のスキップを示す）と判定された場合、セカンダリ変換（ステップＳ１２３乃至ステップＳ１３０の処理）がスキップされ、変換処理が終了し、処理は図９に戻る。すなわち、セカンダリ変換部１３２は、プライマリ変換係数Coeff_Pを変換係数Coeffとして量子化部１１３に供給する。
【０１３２】
また、ステップＳ１２２において、セカンダリ変換識別子st_idxが０より大きい（セカンダリ変換識別子st_idxがセカンダリ変換の実行を示す）と判定された場合、処理はステップＳ１２３に進む。ステップＳ１２３乃至ステップＳ１３０の処理によりセカンダリ変換が実行される。
【０１３３】
ステップＳ１２３において、セカンダリ変換選択部１４６は、セカンダリ変換識別子st_idxにより指定されるセカンダリ変換Ｒを選択する。
【０１３４】
ステップＳ１２４において、セカンダリ変換部１３２は、処理対象の変換ブロックをサブブロックに分割し、未処理のサブブロックを選択する。
【０１３５】
ステップＳ１２５において、ラスタライズ部１４１は、スキャン識別子scanIdxで指定されるスキャン方法に基づいて、プライマリ変換係数Coeff_Pを１×１６次元のベクトルX1dに変換する。
【０１３６】
ステップＳ１２６において、行列演算部１４２は、ベクトルX1dとセカンダリ変換Ｒとの行列積を演算し、ベクトルY1dを求める。
【０１３７】
ステップＳ１２７において、スケーリング部１４３は、ベクトルY1dのノルムを正規化し、ベクトルZ1dを求める。
【０１３８】
ステップＳ１２８において、行列化部１４４は、スキャン識別子scanIdxで指定されるスキャン方法に基づいて、ベクトルZ1dを４×４の行列へ変換し、処理対象のサブブロックのセカンダリ変換係数Coeffを求める。
【０１３９】
ステップＳ１２９において、クリップ処理部１４５は、入力された、処理対象のサブブロックのセカンダリ変換係数Coeffの各要素に対して、最大値CoeffMaxおよび最小値CoeffMinによるクリップ処理を行う。このセカンダリ変換係数Coeffが量子化部１１３に供給される。
【０１４０】
ステップＳ１３０において、セカンダリ変換部１３２は、処理対象の変換ブロックの全てのサブブロックを処理したか否かを判定する。未処理のサブブロックが存在すると判定された場合、処理はステップＳ１２４に戻り、それ以降の処理を繰り返す。つまり、処理対象の変換ブロックの各サブブロックについて、ステップＳ１２４乃至ステップＳ１３０の各処理（セカンダリ変換）が実行される。ステップＳ１３０において、全てのサブブロックを処理した（全てのサブブロックのセカンダリ変換を行った）と判定された場合、変換処理が終了し、処理は図９に戻る。
【０１４１】
なお、変換処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップＳ１２３においてセカンダリ変換識別子st_idx＝０であると判定された場合、１６×１６の単位行列がセカンダリ変換Ｒとして選択され、ステップＳ１２４乃至ステップＳ１３０の各処理が実行されるようにしてもよい。また、ステップＳ１２７で導出されるベクトルY1dのノルム正規化後のベクトルZ1dに対して、ステップＳ１２９のクリップ処理を実行し、その後、ステップＳ１２８の行列化の処理を行ってもよい。
【０１４２】
以上のように各処理を実行することにより、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができる。つまり、符号化の負荷の増大を抑制することができる。また、これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。
【０１４３】
＜画像復号装置＞
次に、以上のように符号化された符号化データの復号について説明する。図１１は、本技術を適用した画像処理装置の一態様である画像復号装置の構成の一例を示すブロック図である。図１１に示される画像復号装置２００は、図７の画像符号化装置１００に対応する画像復号装置であり、画像符号化装置１００が生成した符号化データ（ビットストリーム）を、画像符号化装置１００による符号化方法に対応する復号方法で復号する。例えば、画像復号装置２００は、HEVCに提案された技術や、JVETにて提案された技術を実装している。
【０１４４】
なお、図１１においては、処理部やデータの流れ等の主なものを示しており、図１１に示されるものが全てとは限らない。つまり、画像復号装置２００において、図１１においてブロックとして示されていない処理部が存在したり、図１１において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【０１４５】
図１１に示されるように画像復号装置２００は、復号部２１１、逆量子化部２１２、逆変換部２１３、演算部２１４、フレームメモリ２１５、および予測部２１６を有する。画像復号装置２００には、例えば伝送媒体や記録媒体等を介して、画像符号化装置１００等が生成した符号化データが例えばビットストリーム等として供給される。
【０１４６】
復号部２１１は、供給される符号化データを、その符号化方法に対応する所定の復号方法で復号する。例えば、復号部２１１は、シンタックステーブルの定義に沿って、供給された符号化データ（ビットストリーム）のビット列から、各シンタックス要素のシンタックス値を復号する。シンタックス要素には、例えば、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfoなどの情報が含まれる。
【０１４７】
復号部２１１は、残差情報Rinfoを参照して、各変換ブロック内の各係数位置の量子化変換係数レベルlevelを導出する。復号部２１１は、復号して得た予測モード情報Pinfo、量子化変換係数レベルlevel、変換情報Tinfoを各ブロックへ供給する。例えば、復号部２１１は、予測モード情報Pinfoを予測部２１６に供給し、量子化変換係数レベルlevelを逆量子化部２１２に供給し、変換情報Tinfoを逆量子化部２１２および逆変換部２１３に供給する。
【０１４８】
逆量子化部２１２は、復号部２１１から供給される変換情報Tinfoに基づいて、復号部２１１から供給される量子化変換係数レベルlevelの値をスケーリング（逆量子化）し、逆量子化後の変換係数Coeff_IQを導出する。この逆量子化は、画像符号化装置１００の量子化部１１３（図７）により行われる量子化の逆処理である。なお、逆量子化部１１５（図７）は、この逆量子化部２１２と同様の逆量子化を行う。逆量子化部２１２は、得られた変換係数Coeff_IQを逆変換部２１３に供給する。
【０１４９】
逆変換部２１３は、復号部２１１から供給される変換情報Tinfoに基づいて、逆量子化部２１２より供給される変換係数Coeff_IQを逆変換し、予測残差Ｄ’を導出する。この逆変換は、画像符号化装置１００の変換部１１２（図７）により行われる変換処理の逆処理である。なお、逆変換部１１６は、この逆変換部２１３と同様の逆変換を行う。この逆変換の詳細については、後述する。逆変換部２１３は、得られた予測残差Ｄ’を演算部２１４に供給する。
【０１５０】
演算部２１４は、以下の式（１４）に示されるように、逆変換部２１３から供給される予測残差Ｄ’とその予測残差Ｄ’に対応する予測画像Ｐ（予測信号）とを加算し、局所的な復号画像Recを導出する。演算部２１４は、得られた局所的な復号画像Recを用いてピクチャ単位毎の復号画像を再構築し、得られた復号画像を画像復号装置２００の外部に出力する。また、演算部２１４は、その局所的な復号画像Recをフレームメモリ２１５にも供給する。
【０１５１】
Rec＝Ｄ’＋Ｐ  ・・・（１４）
【０１５２】
フレームメモリ２１５は、演算部２１４より供給される局所的な復号画像Recを用いてピクチャ単位毎の復号画像を再構築し、フレームメモリ２１５内のバッファに格納する。フレームメモリ２１５は、予測部２１６の予測モード情報Pinfoによって指定される復号画像を参照画像としてバッファより読み出し、予測部２１６に供給する。また、フレームメモリ２１５は、その復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfoなどをフレームメモリ２１５内のバッファに格納するようにしても良い。
【０１５３】
予測部２１６は、復号部２１１から供給される予測モード情報PInfoによって指定される、フレームメモリ２１５に格納された復号画像を参照画像として取得し、その参照画像を用いて、その予測モード情報Pinfoによって指定される予測方法により予測画像Ｐを生成する。予測部２１６は、生成した予測画像Ｐを、演算部２１４に供給する。
【０１５４】
このような画像復号装置２００において、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部を備えるようにする。つまり、逆変換部２１３が、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするようにする。
【０１５５】
＜逆変換部＞
図１２は、図１１の逆変換部２１３の主な構成例を示すブロック図である。図１２に示されるように、逆変換部２１３は、逆セカンダリ変換部２３１、および逆プライマリ変換部２３２を有する。
【０１５６】
逆セカンダリ変換部２３１は、逆量子化部２１２から供給される変換係数Coeff_IQ、すなわち、符号化データが復号され、逆量子化されて得られる変換係数Coeff_IQ（セカンダリ変換係数とも称する）を１次元のベクトルに変換し、その１次元のベクトルに対する行列演算を行い、その行列演算が行われた１次元のベクトルのスケーリングを行い、そのスケーリングされた１次元のベクトルを行列化する変換処理である逆セカンダリ変換を行う。
【０１５７】
逆セカンダリ変換部２３１は、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxと、変換係数のスキャン方法に関する情報であるスキャン識別子scanIdxとに基づいて、セカンダリ変換係数Coeff_IQに対して逆セカンダリ変換を行い、逆セカンダリ変換後の変換係数Coeff_IS（プライマリ変換係数とも称する）を導出する。つまり、逆セカンダリ変換部２３１は、セカンダリ変換係数Coeff_IQをプライマリ変換係数Coeff_ISに変換する。逆セカンダリ変換部２３１は、そのプライマリ変換係数Coeff_ISを、逆プライマリ変換部２３２に供給する。なお、逆セカンダリ変換部２３１の詳細については、後述する。
【０１５８】
逆プライマリ変換部２３２は、逆セカンダリ変換部２３１から供給されるプライマリ変換係数Coeff_ISに対して、例えば逆直交変換等の逆プライマリ変換を実行し、予測残差Ｄ’を導出する。すなわち、逆プライマリ変換部２３２は、プライマリ変換係数Coeff_ISを予測残差Ｄ’に変換する。逆プライマリ変換部２３２は、導出した予測残差Ｄ’を演算部２１４に供給する。
【０１５９】
次に、逆セカンダリ変換部２３１について説明する。図１２に示されるように、逆セカンダリ変換部２３１は、ラスタライズ部２４１、行列演算部２４２、スケーリング部２４３、行列化部２４４、クリップ処理部２４５、および逆セカンダリ変換選択部２４６を有する。
【０１６０】
ラスタライズ部２４１は、復号部２１１から供給されるスキャン識別子scanIdxによって指定される変換係数のスキャン方法に基づいて、サブブロック（４×４サブブロック）毎に、逆量子化部２１２から供給される変換係数Coeff_IQを１×１６次元のベクトルX1dに変換する。ラスタライズ部２４１は、得られたベクトルX1dを行列演算部２４２に供給する。
【０１６１】
逆セカンダリ変換選択部２４６は、復号部２１１から供給される、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxにより指定される逆セカンダリ変換の行列IR（＝ＲＴ）を、逆セカンダリ変換選択部２４６の内部メモリ（不図示）より読み出し、行列演算部２４２に供給する。例えば、逆セカンダリ変換選択部２４６は、あるセカンダリ変換識別子st_idxの値のとき、逆セカンダリ変換の行列IRとして、図５に示される１６×１６の行列Ｒの転置行列ＲＴを読み出し、それを行列演算部２４２に供給する。
【０１６２】
なお、逆セカンダリ変換選択部２４６が、例えば、復号部２１１から供給されるセカンダリ変換識別子st_idxやイントラ予測モード情報IPinfo（例えば、イントラ予測モード番号）に応じて、逆セカンダリ変換IR（＝ＲＴ）を選択するようにしてもよい。また、イントラ予測モード情報IPinfoの代わりに、動き予測情報MVinfoとセカンダリ変換識別子st_idxに応じて、逆変換IRが選択されるようにしてもよい。
【０１６３】
行列演算部２４２は、サブブロック（４×４サブブロック）毎に、１×１６次元のベクトルX1dおよび逆セカンダリ変換IR（＝ＲＴ）の行列を用いて、以下の式（１５）に示されるような行列演算を行い、その結果としてベクトルY1dを導出する。ここで、演算子"T"は、転置行列の操作を表す。
【０１６４】
Y1dT＝IR・X1dT＝ＲＴ・X1dT  ・・・（１５）
【０１６５】
スケーリング部２４３は、サブブロック（４×４サブブロック）毎に、行列演算部２４２から供給される信号Y1dのノルムを正規化するために、以下の式（１６）に示されるよなＮ（Ｎは自然数）ビットのビットシフト演算を信号Y1dのすべての要素に対して行い、ビットシフト後の信号Z1dを求める。
【０１６６】
Z1d＝（Y1d）>>Ｎ  ・・・（１６）
【０１６７】
なお、以下の式（１７）に示されるように、Ｎビットのシフト演算前に、オフセットとして、1<<（N-1）の値が、信号Z1dの各要素に加算されるようにしてもよい。なお、式（１７）において、ベクトルＥは、すべての要素の値が１の１×１６次元のベクトルである。
【０１６８】
Z1d＝（Y1d＋（（N-1）<<1)・E）>>Ｎ  ・・・（１７）
【０１６９】
例えば、逆セカンダリ変換IR（＝ＲＴ）の行列は、図５に示されるセカンダリ変換Ｒの行列の転置行列であり、８ビットスケーリングされた行列であるため、スケーリング部２４３において、ノルムの正規化に用いられるＮの値は８である。一般的に、逆セカンダリ変換の行列IR（＝ＲＴ）が、Ｎビットスケーリングされている場合、ノルム正規化のビットシフト量は、Ｎビットである。
【０１７０】
行列化部２４４は、サブブロック（４×４サブブロック）毎に、ノルム正規化後の信号Z1dおよびスキャン識別子scanIdxを入力とし、復号部２１１から供給されるスキャン識別子scanIdxによって指定されるスキャン方法に基づいて、スケーリング部２４３から供給される１×１６次元のベクトルZ1dを４×４行列の変換係数Coeff_ISに変換する。行列化部２４４は、得られた変換係数Coeff_ISをクリップ処理部２４５に供給する。
【０１７１】
クリップ処理部２４５は、４×４行列の変換係数Coeff_IS、変換係数の最大値CoeffMax、および最小値CoeffMinを入力とする。クリップ処理部２４５は、行列化部２４４から供給される変換係数Coeff_ISの各要素Coeff(i,j) (i=0…3, j=0…3)に対して、以下に示す式（１８）のように、変換係数の最大値CoeffMaxおよび最小値CoeffMinによってクリップ処理を行う。
【０１７２】
Coeff_IS(i,j) = Clip3 (CoeffMin, CoeffMax, Coeff_IS(i,j) )
・・・（１８）
【０１７３】
ここで、演算子Clip3(Xmin, Xmax, X)は、入力値Xが、Xminより小さい場合、Xminの値を返し、入力値XがXmaxより大きい場合、Xmaxを返し、それ以外の場合、入力値Xを返すクリップ処理である。Clip3は、Min(x,y), Max(x,y)を使って、以下の式（１９）のように表現することもできる。
【０１７４】
Clip3(Xmin, Xmax, X ) = Min(Xmin, Max(Xmax, X)) = Max(Xmax, Min(Xmin, X))
・・・（１９）
【０１７５】
なお、変換係数の最大値CoeffMax、最小値CoeffMinは、16bit精度であるとすれば、以下の値であることが望ましい。
CoeffMax = 215 - 1 = 32767
CoeffMin = -215 = -32768
【０１７６】
なお、変換係数の最大値CoeffMax、最小値CoeffMinの精度は、16bit精度に限定されず、一般的に、8bitの整数倍(M倍(M>=1))精度であるとしてもよい。この場合、変換係数の最大値CoeffMaxは、8*M-1の値に設定し、最小値CoeffMinは、-8*Mに設定する。
CoeffMax = 8*M - 1
CoeffMin = -8*M
【０１７７】
また、変換係数の最大値CoeffMax、及び最小値CoeffMinは、入力信号のビット深度BitDepthと、パラメータセット（SPS/PPSなど）において通知される拡張演算精度フラグextended_precision_processing_flagに基づいて、上述の式（１１）乃至式（１３）によって導出してもよい。
【０１７８】
式（１１）乃至式（１３）によれば、入力信号のビット深度、及び拡張演算精度フラグに基づいて、変換係数の最大値CoeffMax、最大値CoeffMinを決定することができる。特に、入力信号のビット深度が大きい場合（例、16bit）には、変換係数の精度が16bitでは演算精度が不足し、符号化効率が低下する。従って、上記のように、入力信号のビット深度に応じて、変換係数の演算精度を制御できるようにしておくことが好ましい。
【０１７９】
クリップ処理部２４５は、クリップ処理を行った変換係数Coeffをプライマリ変換係数として逆プライマリ変換部２３２に供給する。
【０１８０】
つまり、クリップ処理部２４５によりプライマリ変換係数Coeff_ISがクリップ処理され、その値が所定の最大値乃至最小値の範囲内に制限される。したがって、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができるので、復号の負荷の増大を抑制することができる。これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。
【０１８１】
＜画像復号処理の流れ＞
次に、以上のような画像復号装置２００により実行される各処理の流れについて説明する。最初に、図１３のフローチャートを参照して、画像復号処理の流れの例を説明する。
【０１８２】
画像復号処理が開始されると、ステップＳ２０１において、復号部２１１は、画像復号装置２００に供給されるビットストリーム（符号化データ）を復号し、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfo、量子化変換係数レベルlevel等の情報を得る。
【０１８３】
ステップＳ２０２において、逆量子化部２１２は、ステップＳ２０１の処理により得られた量子化変換係数レベルlevelを逆量子化して変換係数Coeff_IQを導出する。この逆量子化は、画像符号化処理のステップＳ１０５（図９）において行われる量子化の逆処理であり、画像符号化処理のステップＳ１０６（図９）において行われる逆量子化と同様の処理である。
【０１８４】
ステップＳ２０３において、逆変換部２１３は、ステップＳ２０２の処理により得られた変換係数Coeff_IQを逆変換し、予測残差Ｄ'を導出する。この逆変換は、画像符号化処理のステップＳ１０４（図９）において行われる変換処理の逆処理であり、画像符号化処理のステップＳ１０７（図９）において行われる逆変換と同様の処理である。
【０１８５】
ステップＳ２０４において、予測部２１６は、予測モード情報PInfoに基づいて、符号化の際の予測と同一の予測モードで予測を行い、予測画像生成する。
【０１８６】
ステップＳ２０５において、演算部２１４は、ステップＳ２０３の処理により得られた予測残差Ｄ’に、ステップＳ２０４の処理により得られた予測画像を加算し、復号画像を得る。
【０１８７】
ステップＳ２０５の処理が終了すると、画像復号処理が終了される。
【０１８８】
＜逆変換処理の流れ＞
次に、図１３のステップＳ２０３において実行される逆変換処理の流れの例を、図１４のフローチャートを参照して説明する。
【０１８９】
逆変換処理が開始されると、ステップＳ２２１において、逆セカンダリ変換部２３１は、セカンダリ変換識別子st_idxが逆セカンダリ変換を適用するか否か（st_idx>0）を判定する。セカンダリ変換識別子st_idxが０である（セカンダリ変換識別子st_idxが逆セカンダリ変換のスキップを示す）と判定された場合、逆セカンダリ変換（ステップＳ２２２乃至ステップＳ２２９の処理）がスキップされ、処理はステップＳ２３０に進む。つまり、逆セカンダリ変換部２３１は、変換係数Coeff_IQをプライマリ変換係数Coeff_ISとして、逆プライマリ変換部２３２に供給する。
【０１９０】
また、ステップＳ２２１において、セカンダリ変換識別子st_idxが０より大きい（セカンダリ変換識別子st_idxが逆セカンダリ変換の実行を示す）と判定された場合、処理はステップＳ２２２に進む。ステップＳ２２２乃至ステップＳ２２９の処理により逆セカンダリ変換が実行される。
【０１９１】
ステップＳ２２２において、逆セカンダリ変換選択部２４６は、セカンダリ変換識別子st_idxにより指定される逆セカンダリ変換IRを選択する。
【０１９２】
ステップＳ２２３において、逆セカンダリ変換部２３１は、処理対象の変換ブロックに含まれる未処理のサブブロックを選択する。
【０１９３】
ステップＳ２２４において、ラスタライズ部２４１は、スキャン識別子scanIdxにより指定されるスキャン方法に基づいて、変換係数Coeff_IQを１×１６次元のベクトルX1dに変換する。
【０１９４】
ステップＳ２２５において、行列演算部２４２は、ベクトルX1dと逆セカンダリ変換IRとの行列積を演算し、ベクトルY1dを求める。
【０１９５】
ステップＳ２２６において、スケーリング部２４３は、ベクトルY1dのノルムを正規化し、ベクトルZ1dを求める。
【０１９６】
ステップＳ２２７において、行列化部２４４は、スキャン識別子scanIdxにより指定されるスキャン方法に基づいて、ベクトルZ1dを４×４の行列へ変換し、処理対象のサブブロックのプライマリ変換係数Coeff_ISを求める。
【０１９７】
ステップＳ２２８において、クリップ処理部２４５は、その処理対象のサブブロックのプライマリ変換係数Coeff_ISの各要素に対して、最大値CoeffMaxおよび最小値CoeffMinによるクリップ処理を行う。このクリップ処理されたプライマリ変換係数Coeff_ISが逆プライマリ変換部２３２に供給される。
【０１９８】
ステップＳ２２９において、逆セカンダリ変換部２３１は、処理対象の変換ブロックの全てのサブブロックを処理したか否かを判定する。未処理のサブブロックが存在すると判定された場合、処理はステップＳ２２３に戻り、それ以降の処理を繰り返す。つまり、処理対象の変換ブロックの各サブブロックについて、ステップＳ２２３乃至ステップＳ２２９の各処理（逆セカンダリ変換）が実行される。ステップＳ２２９において、全てのサブブロックを処理した（全てのサブブロックの逆セカンダリ変換を行った）と判定された場合、処理はステップＳ２３０に進む。
【０１９９】
ステップＳ２３０において、逆プライマリ変換部２３２は、プライマリ変換識別子pt_idxに基づいて、プライマリ変換係数Coeff_ISに対する逆プライマリ変換を行い、予測残差Ｄ’を導出する。この予測残差Ｄ’は、演算部２１４に供給される。
【０２００】
ステップＳ２３０の処理が終了すると、逆変換処理が終了し、処理は図１３に戻る。
【０２０１】
なお、以上の逆変換処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップＳ２２１においてセカンダリ変換識別子st_idxが０であると判定された場合、１６×１６の単位行列が逆セカンダリ変換IRとして選択され、ステップＳ２２２乃至ステップＳ２２９の各処理が実行されるようにしてもよい。また、ステップＳ２２６で導出されるベクトルY1dのノルム正規化後のベクトルZ1dに対して、ステップＳ２２８のクリップ処理を実行し、その後、ステップＳ２２７の行列化の処理を行ってもよい。
【０２０２】
以上のように各処理を実行することにより、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができる。つまり、復号の負荷の増大を抑制することができる。また、これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。
【０２０３】
なお、以上においては上限値および下限値を用いて変換係数をクリップするように説明したが、上限値または下限値のいずれか一方のみを用いて変換係数をクリップするようにしてもよい。
【０２０４】
＜２．第２の実施の形態＞
＜ノルム正規化の際のビットシフト量制御＞
なお、セカンダリ変換や逆セカンダリ変換において、変換係数をクリップ処理する代わりに、１次元のベクトルのシフト量を導出し、行列演算が行われた１次元のベクトルに対して、その導出したシフト量に応じたスケーリングを行うようにしてもよい。
【０２０５】
このようにしても、第１の実施の形態の場合と同様に、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑え、符号化・復号の負荷の増大を抑制することができる。また、この場合、クリップ処理を行わずに、符号化・復号の負荷の増大を抑制することができる。
【０２０６】
＜変換部＞
この場合も画像符号化装置１００は、第１の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像符号化装置１００は、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換するラスタライズ部と、その１次元のベクトルのシフト量を導出するシフト量導出部と、その１次元のベクトルに対する行列演算を行う行列演算部と、その行列演算が行われた１次元のベクトルに対して、シフト量導出部により導出されるシフト量に応じたスケーリングを行うスケーリング部と、スケーリングされた１次元のベクトルを行列化する行列化部とを備える。つまり、この場合の変換部１１２は、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換し、その１次元のベクトルのシフト量を導出し、その１次元のベクトルに対する行列演算を行い、その行列演算が行われた１次元のベクトルに対して、導出されるシフト量に応じたスケーリングを行い、そのスケーリングされた１次元のベクトルを行列化する。
【０２０７】
図１５は、この場合の変換部１１２の主な構成例を示すブロック図である。図１５に示されるように、この場合も変換部１１２は、基本的に第１の実施の形態の場合（図８）と同様の構成を有する。ただし、この場合のセカンダリ変換部１３２は、スケーリング部１４３およびクリップ処理部１４５の代わりに、シフト量導出部３０１およびスケーリング部３０２を有する。
【０２０８】
シフト量導出部３０１は、ビット深度の最大値（最大ビット深度) bitDepthMax、中間バッファのビット深度の最大値（中間バッファ最大ビット深度）bitDepthMaxBuffer、およびセカンダリ行列Rを入力とする。シフト量導出部３０１は、上述の式（２）のようにセカンダリ変換後の変換係数Coeffのダイナミックレンジの上限値MaxValを推定する。ここで、Aには、1<<(bitDepthMax-1)の値が設定される。また、Tは、セカンダリ変換Rが設定される。
【０２０９】
次に、セカンダリ変換Rのダイナミックレンジの上限値MaxValと、中間バッファの上限値MaxValBuffer ( = 1<<(bitDepthMaxBuffer-1) = 215 - 1 = 32767 )との差DiffMaxValを以下の式（２０）により導出する。ここでは、bitDepthMaxBufferの値を１６としている。
【０２１０】
DiffMaxVal = MaxVal - MaxValBuffer
・・・（２０）
【０２１１】
続いて、差DiffMaxValの２を底とする対数値log2DiffMaxValを以下の式（２１）により導出する。なお、式（２１）では、差DiffMaxValは０以上の整数であると仮定している。また、２を底とする対数log2(・)に入力する値は、差DiffMaxValの絶対値|DiffMaxVal|であってもよい。
【０２１２】
log2DiffMaxVal = log2( DiffMaxVal )
・・・（２１）
【０２１３】
導出した対数値log2DiffMaxValに対して、天井関数Ceil(・)を適用し、スケーリング部３０２において、セカンダリ変換後の変換係数Coeffに対して、右ビットシフトするシフト量Sを以下の式（２２）に示すように導出する。また、天井関数Ceil(・)の代わりに、床関数Floor(・)を用いて、シフト量Ｓを、以下の式（２３）に示すように導出してもよい。
【０２１４】
S = Ceil ( log2DiffMaxVal )
・・・（２２）
S = Floor ( log2DiffMaxVal ) + 1
・・・（２３）
【０２１５】
シフト量導出部３０１は、以上のように求めたシフト量Sをスケーリング部３０２に供給する。なお、シフト量導出部３０１は、式（２）、式（２０）、式（２１）、式（２２）、および式（２３）を通してシフト量Ｓを導出するがこれに限定されない。例えば、シフト量導出部３０１は、各セカンダリ変換Ｒ毎に対応するシフト量Ｓを予め導出しておき、ルックアップテーブルに格納し、セカンダリ変換識別子st_idxで指定されるセカンダリ変換Ｒに該当するシフト量Ｓをルックアップテーブルからを読みだし、スケーリング部３０２に供給するようにしてもよい。この場合、シフト量Ｓを導出する処理量を低減することができる。
【０２１６】
スケーリング部３０２は、行列演算部１４２より入力された信号Y1dおよびシフト量Sを入力とする。スケーリング部３０２は、サブブロック単位（４×４サブブロック）毎に、行列演算部１４２より入力された信号Y1dのノルムの正規化およびダイナミックレンジを中間バッファのダイナミックレンジbitDepthMaxBufferに抑えるため、以下の式（２４）に示すように、(N+S) ビットのビットシフト演算を信号Y1dのすべての要素に対して行う。
【０２１７】
Z1d = ( Y1d )>>(N+S)
・・・（２４）
【０２１８】
なお、以下の式（２５）に示されるように、(N+S)ビットのシフト演算前に、オフセットとして、1<<(N-1)の値を、信号Z1dの各要素へ加算してもよい。なお、式（２５）において、ベクトルEは、すべての要素の値が１の１×１６次元のベクトルである。
【０２１９】
Z1d = (Y1d + ((N-1)<<1)・E)>>(N+S)
・・・（２５）
【０２２０】
例えば、図５に示すセカンダリ変換Rの行列は、８ビットスケーリングされた行列であるため、スケーリング部３０２において、ノルムの正規化に用いるNの値は８である。一般的に、セカンダリ変換の行列Rが、Nビットスケーリングされている場合、ノルム正規化のビットシフト量は、Nビットである。
【０２２１】
つまり、シフト量導出部３０１が、セカンダリ変換後の変換係数Coeffが中間バッファのダイナミックレンジ内に収まるようにダイナミックレンジを補正するためのシフト量Sを導出する。そして、スケーリング部３０２が、その導出されたシフト量Sとノルム正規化のシフト量Nとに基づいて、行列演算が行われた１次元のベクトルY1dに対して、(N+S)の右ビットシフトを行い、中間バッファのダイナミックレンジ内に収まるように補正する。したがって、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができるので、符号化の負荷の増大を抑制することができる。これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。この場合、クリップ処理を省略することができる。
【０２２２】
＜変換処理の流れ＞
次に、画像符号化装置１００により実行される各処理の流れの例を説明する。この場合画像符号化装置１００は、画像符号化処理を、第１の実施の形態の場合（図９）と基本的に同様に行う。この場合の変換処理の流れの例を、図１６のフローチャートを参照して説明する。
【０２２３】
変換処理が開始されると、ステップＳ３０１乃至ステップＳ３０３の各処理は、図１０のステップＳ１２１乃至ステップＳ１２３の各処理と同様に実行される。
【０２２４】
ステップＳ３０４において、シフト量導出部３０１は、ビット深度の最大値（最大ビット深度) bitDepthMax、中間バッファのビット深度の最大値（中間バッファ最大ビット深度）bitDepthMaxBuffer、およびセカンダリ変換行列Rに基づいて、シフト量Sを導出する。
【０２２５】
ステップＳ３０５乃至ステップＳ３０７の各処理は、図１０のステップＳ１２４乃至ステップＳ１２６の各処理と基本的に同様に実行される。
【０２２６】
ステップＳ３０８において、スケーリング部３０２は、シフト量Nおよびシフト量Sを用いてベクトルY1dのノルムを正規化し、ベクトルZ1dを求める。
【０２２７】
ステップＳ３０９およびステップＳ３１０の各処理は、図１０のステップＳ１２９およびステップＳ１３０の各処理と同様に実行される。
【０２２８】
ステップＳ３１０において、全てのサブブロックを処理した（全てのサブブロックのセカンダリ変換を行った）と判定された場合、変換処理が終了し、処理は図９に戻る。
【０２２９】
以上のように各処理を実行することにより、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができる。つまり、符号化の負荷の増大を抑制することができる。また、これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。また、クリップ処理を省略することができる。
【０２３０】
＜逆変換部＞
次に画像復号装置２００について説明する。この場合も画像復号装置２００は、第１の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置２００は、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換するラスタライズ部と、その１次元のベクトルのシフト量を導出するシフト量導出部と、その１次元のベクトルに対する行列演算を行う行列演算部と、その行列演算が行われた１次元のベクトルに対して、シフト量導出部により導出されるシフト量に応じたスケーリングを行うスケーリング部と、そのスケーリングされた１次元のベクトルを行列化する行列化部とを備える。つまり、逆変換部２１３は、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換し、その１次元のベクトルのシフト量を導出し、その１次元のベクトルに対する行列演算を行い、その行列演算が行われた１次元のベクトルに対して、導出されるシフト量に応じたスケーリングを行い、そのスケーリングされた１次元のベクトルを行列化する。
【０２３１】
図１７は、この場合の逆変換部２１３の主な構成例を示すブロック図である。図１７に示されるように、この場合も逆変換部２１３は、基本的に第１の実施の形態の場合（図１２）と同様の構成を有する。ただし、この場合の逆セカンダリ変換部２３１は、スケーリング部２４３およびクリップ処理部２４５の代わりに、シフト量導出部３１１およびスケーリング部３１２を有する。
【０２３２】
シフト量導出部３１１は、ビット深度の最大値（最大ビット深度) bitDepthMax、中間バッファのビット深度の最大値（中間バッファ最大ビット深度）bitDepthMaxBuffer、及び逆セカンダリ行列IRを入力とする。シフト量導出部３１１は、上述の式（２）のように逆セカンダリ変換後のプライマリ変換係数Coeff_ISのダイナミックレンジの上限値MaxValを推定する。ここで、Aには、1<<(bitDepthMax-1)の値が設定される。また、Tは、逆セカンダリ変換IRが設定される。
【０２３３】
次に、逆セカンダリ変換IRのダイナミックレンジの上限値MaxValと、中間バッファの上限値MaxValBuffer ( = 1<<(bitDepthMaxBuffer-1) = 215 - 1 = 32767 )との差DiffMaxValを以下の式（２６）により導出する。ここでは、bitDepthMaxBufferの値を１６としている。
【０２３４】
DiffMaxVal = MaxVal - MaxValBuffer
・・・（２６）
【０２３５】
続いて、差DiffMaxValの２を底とする対数値log2DiffMaxValを以下の式（２７）により導出する。なお、この式（２７）では、差DiffMaxValは０以上の整数であると仮定している。また、２を底とする対数log2(・)に入力する値は、差DiffMaxValの絶対値|DiffMaxVal|であってもよい。
【０２３６】
log2DiffMaxVal = log2( DiffMaxVal )
・・・（２７）
【０２３７】
導出した対数値log2DiffMaxValに対して、天井関数Ceil(・)を適用し、スケーリング部３１２において、逆セカンダリ変換後の変換係数Coeff_ISに対して、右ビットシフトするシフト量Sを以下の式（２８）に示すように導出する。また、天井関数Ceil(・)の代わりに、床関数Floor(・)を用いて、シフト量Ｓを、以下の式（２９）に示すように導出してもよい。
【０２３８】
S = Ceil ( log2DiffMaxVal )
・・・（２８）
S = Floor ( log2DiffMaxVal ) + 1
・・・（２９）
【０２３９】
シフト量導出部３１１は、以上のように求めたシフト量Sをスケーリング部３１２に供給する。なお、シフト量導出部３１１は、式（２）、式（２６）、式（２７）、式（２８）、および式（２９）を通してシフト量Ｓを導出するがこれに限定されない。例えば、シフト量導出部３１１は、各逆セカンダリ変換ＩＲ毎に対応するシフト量Ｓを予め導出しておき、ルックアップテーブルに格納し、セカンダリ変換識別子st_idxで指定される逆セカンダリ変換ＩＲに該当するシフト量Ｓをルックアップテーブルからを読みだし、スケーリング部３１２に供給するようにしてもよい。この場合、シフト量Ｓを導出する処理量を低減することができる。
【０２４０】
スケーリング部３１２は、行列演算部２４２より入力される信号Y1dおよびシフト量導出部３１１から供給されるシフト量Sを入力とする。スケーリング部３１２は、サブブロック単位（４×４サブブロック）毎に、行列演算部２４２より入力された信号Y1dのノルムの正規化およびダイナミックレンジを中間バッファのダイナミックレンジbitDepthMaxBufferに抑えるため、以下の式（３０）に示されるように、(N+S)ビットのビットシフト演算を信号Y1dのすべての要素に対して行う。
【０２４１】
Z1d = ( Y1d )>>(N+S)
・・・（３０）
【０２４２】
なお、以下の式（３１）に示すように、(Ｎ+S)ビットのシフト演算前に、オフセットとして、1<<(N-1)の値を、信号Z1dの各要素へ加算してもよい。なお、式（３１）において、ベクトルEは、すべての要素の値が１の１×１６次元のベクトルである。
【０２４３】
Z1d = (Y1d + ((N-1)<<1)・E)>>(N+S)
・・・（３１）
【０２４４】
例えば、図５に示されるセカンダリ変換Ｒの転置行列である逆セカンダリ変換IR(=RT)の行列は、８ビットスケーリングされた行列であるため、スケーリング部３１２において、ノルムの正規化に用いるNの値は８である。一般的に、逆セカンダリ変換の行列IR(=RT)が、Nビットスケーリングされている場合、ノルム正規化のビットシフト量は、Nビットである。
【０２４５】
つまり、シフト量導出部３１１が、逆セカンダリ変換後のプライマリ変換係数Coeff_ISが中間バッファのダイナミックレンジ内に収まるようにダイナミックレンジを補正するためのシフト量Sを導出する。そして、スケーリング部３１２が、その導出されたシフト量Sとノルム正規化のシフト量Nとに基づいて、行列演算が行われた１次元のベクトルY1dに対して、(N+S)の右ビットシフトを行い、中間バッファのダイナミックレンジ内に収まるように補正する。したがって、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができるので、復号の負荷の増大を抑制することができる。これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。この場合、クリップ処理を省略することができる。
【０２４６】
＜逆変換処理の流れ＞
次に、画像復号装置２００により実行される各処理の流れの例を説明する。この場合画像復号装置２００は、画像復号処理を、第１の実施の形態の場合（図１３）と基本的に同様に行う。この場合の逆変換処理の流れの例を、図１８のフローチャートを参照して説明する。
【０２４７】
変換処理が開始されると、ステップＳ３２１およびステップＳ３２２の各処理は、図１４のステップＳ２２１およびステップＳ２２２の各処理と同様に実行される。
【０２４８】
ステップＳ３２３において、シフト量導出部３１１は、ビット深度の最大値（最大ビット深度) bitDepthMax、中間バッファのビット深度の最大値（中間バッファ最大ビット深度）bitDepthMaxBuffer、および逆セカンダリ変換行列IRに基づいて、シフト量Sを導出する。
【０２４９】
ステップＳ３２４乃至ステップＳ３２６の各処理は、図１４のステップＳ２２３乃至ステップＳ２２５の各処理と基本的に同様に実行される。
【０２５０】
ステップＳ３２７において、スケーリング部３１２は、シフト量Nおよびシフト量Sを用いてベクトルY1dのノルムを正規化し、ベクトルZ1dを求める。
【０２５１】
ステップＳ３２８乃至ステップＳ３３０の各処理は、図１４のステップＳ２２７、ステップＳ２２９、およびステップＳ２３０の各処理と同様に実行される。
【０２５２】
ステップＳ３３０の処理が終了すると、逆変換処理が終了し、処理は図１３に戻る。
【０２５３】
以上のように各処理を実行することにより、変換係数のダイナミックレンジ幅を所定の範囲内（例えば１６ビット）に抑えることができる。つまり、復号の負荷の増大を抑制することができる。また、これにより、変換係数を格納する中間バッファのサイズの増大を抑制することができ、コストの増大を抑制することができる。また、クリップ処理を省略することができる。
【０２５４】
＜３．第３の実施の形態＞
＜行列演算＞
非特許文献１には、プライマリ変換(既存のDCT/DSTなどによる直交変換)を行った後に、さらに、エネルギーコンパクションを高める（低域に変換係数を集中させる）ために、４×４サブブロック単位で、非セパラブルなセカンダリ変換を適用することが開示されている。また、非特許文献２には、同様に、ハイパーキューブギブンズ変換（Hypercube-Givens Transform）（HyGTとも称する）ベースの非セパラブルなセカンダリ変換を４×４サブブロック単位で適用することが開示されている。なお、要素数１６に関するHyGTを１６点HyGT（または16-points HyGT）とも称する。また、要素数2Nに関するHyGTを2N点HyGT（または2N-points HyGT）とも称する。
【０２５５】
しかしながら、非特許文献１に記載の方法および非特許文献２に記載の方法のいずれにおいても、セカンダリ変換は、非セパラブルであるため、演算量が多かった。また、イントラ予測モードのクラス数と各クラスに対応するセカンダリ変換の数だけ、セカンダリ変換の行列を有しており、セカンダリ変換の行列を保持するメモリサイズが増大するおそれがあった。すなわち、符号化・復号の負荷が増大するおそれがあった。
【０２５６】
例えば、非特許文献１に記載の方法の場合、イントラ予測モードのクラス数=12であり、各クラスに対するセカンダリ変換の数= 3であり、12*3 = 36の行列が存在する。非特許文献２に記載の方法の場合、イントラ予測モードのクラス数=35であり、各クラスに対するセカンダリ変換の数= 5であり、35*5 = 175の行列が存在する。
【０２５７】
例えば、各行列の要素を9bit精度で保持するとする。非特許文献１に記載の方法において、全セカンダリ変換の行列を保持に要するメモリサイズは、9bit * 16*16 * 36 = 829944 bits = 10368 bytes = 10.125KBである。また、非特許文献２に記載の方法において、全セカンダリ変換の行列を保持に要するメモリサイズは、9bit * 16*16 * 175 = 403200 bits = 50400 bytes = 49.21875KBである。
【０２５８】
＜行列演算の分解＞
そこで、セカンダリ変換や逆セカンダリ変換において、画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換し、その１次元のベクトルに対して複数回の行列積よりなる行列演算を行うようにする。
【０２５９】
例えば、非特許文献２に記載の１６点HyGTを４つの直交行列と３つの置換行列に分解し、セパラブルな直交変換とし、このようなセパラブルな直交変換を用いてセカンダリ変換や逆セカンダリ変換を行うようにする。
【０２６０】
非特許文献２に記載の１６点HyGTの様子の例を図１９のＡに示す。この１６点HyGTの四角４０１は、図１９のＢに示されるような回転行列（ギブンズ変換（Givens Transform））である。つまり、HyGTは、このような複数の回転行列により構成される。
【０２６１】
そこで、図２０に示されるように、四角４０２で示されるような１６点HyGTのi段目の変換（または操作とも称する）を変換（操作）Tiとし、点線４０３で囲まれるような、その変換（操作）Tiのj番目の回転行列を回転行列Gi,jとする。
【０２６２】
＜１段目の操作＞
まず、１６点HyGTの１段目の操作（図２１のＡにおいて枠４１１で囲まれた部分）について説明する。図２１のＢは、この１段目の操作T1を拡大して模式化したものである。図２１のＢに示されるように、この１段目の操作T1は、G1,1乃至G1,8の８つの回転行列からなる直交変換よりなる。
【０２６３】
つまり、この１段目の操作T1は、以下の式（３２）のように、回転行列G1,jを対角成分に有し、それ以外の要素が０である疎な直交行列F1として表現することができる。なお、各回転行列Gi,jは、式（３３）のように表すことができる。
【０２６４】
【数３】
2017195666.tif 000005
・・・（３２）
【数４】
2017195666.tif 000006
・・・（３３）
【０２６５】
＜２段目の操作＞
次にHyGTの２段目の操作（図２２のＡにおいて枠４１２で囲まれた部分）について説明する。図２２のＢは、この２段目の操作T2を拡大して模式化したものである。図２２のＢに示されるように、この２段目の操作T2は、置換δ1、G2,1乃至G2,8の回転行列からなる直交変換、および逆置換δ1Tよりなる。置換δ1は、以下の式（３４）のように表すことができる。
【０２６６】
【数５】
2017195666.tif 000007
・・・（３４）
【０２６７】
また、この置換δ1は、以下の式（３５）に示されるように、行列Pを用いて置換行列P1として表すこともできる。この行列Pは、式（３６）のように表すことができる。
【０２６８】
【数６】
2017195666.tif 000008
・・・（３５）
【数７】
2017195666.tif 000009
・・・（３６）
【０２６９】
なお、逆置換δ1Tは、置換行列P1の転置行列P1Tとして表すことができる。また、２段目の直交変換は、式（３７）のように、回転行列G2,jを対角成分に有し、それ以外の要素が０である疎な直交行列F2として表現することができる。
【０２７０】
【数８】
2017195666.tif 000010
・・・（３７）
【０２７１】
つまり、２段目の操作T2は、以下の式（３８）のように、行列分解して表現することができる。
【０２７２】
T2 = P1T・F2・P1  ・・・（３８）
【０２７３】
＜３段目の操作＞
次にHyGTの３段目の操作（図２３のＡにおいて枠４１３で囲まれた部分）について説明する。図２３のＢは、この３段目の操作T3を拡大して模式化したものである。図２３のＢに示されるように、この３段目の操作T3は、置換δ2、G3,1乃至G3,8の回転行列からなる直交変換、および逆置換δ2Tよりなる。置換δ2は、以下の式（３９）のように表すことができる。
【０２７４】
【数９】
2017195666.tif 000011
・・・（３９）
【０２７５】
また、この置換δ2は、以下の式（４０）に示されるように、行列Pを用いて置換行列P2として表すこともできる。この行列Pは、式（４１）のように表すことができる。
【０２７６】
【数１０】
2017195666.tif 000012
・・・（４０）
【数１１】
2017195666.tif 000013
・・・（４１）
【０２７７】
なお、逆置換δ2Tは、置換行列P2の転置行列P2Tとして表すことができる。また、３段目の直交変換は、式（４２）のように、回転行列G3,jを対角成分に有し、それ以外の要素が０である疎な直交行列F3として表現することができる。
【０２７８】
【数１２】
2017195666.tif 000014
・・・（４２）
【０２７９】
つまり、３段目の操作T3は、以下の式（４３）のように、行列分解して表現することができる。
【０２８０】
T3 = P2T・F3・P2  ・・・（４３）
【０２８１】
＜４段目の操作＞
次にHyGTの４段目の操作（図２４のＡにおいて枠４１４で囲まれた部分）について説明する。図２４のＢは、この４段目の操作T4を拡大して模式化したものである。図２４のＢに示されるように、この４段目の操作T4は、置換δ3、G4,1乃至G4,8の回転行列からなる直交変換、および逆置換δ3Tよりなる。置換δ3は、以下の式（４４）のように表すことができる。
【０２８２】
【数１３】
2017195666.tif 000015
・・・（４４）
【０２８３】
また、この置換δ3は、以下の式（４５）に示されるように、置換行列P3として表すこともできる。
【０２８４】
【数１４】
2017195666.tif 000016
・・・（４５）
【０２８５】
なお、逆置換δ3Tは、置換行列P3の転置行列P3Tとして表すことができる。また、４段目の直交変換は、式（４６）のように、回転行列G4,jを対角成分に有し、それ以外の要素が０である疎な直交行列F4として表現することができる。
【０２８６】
【数１５】
2017195666.tif 000017
・・・（４６）
【０２８７】
つまり、４段目の操作T4は、以下の式（４７）のように、行列分解して表現することができる。
【０２８８】
T4 = P3T・F4・P3  ・・・（４７）
【０２８９】
以上のことから、１６点HyGT（セカンダリ変換の行列R）は、以下の式（４８）のように行列分解して表現することができる。同様に、inverse HyGT（逆セカンダリ変換の行列IR（= R-1））は、以下の式（４９）のように行列分解して表現することができる。
【０２９０】
R = P3T・F4・P3・P2T・F3・P2・P1T・F2・P1・F1
・・・（４８）
R-1 = ( P3T・F4・P3・P2T・F3・P2・P1T・F2・P1・F1 )-1
= F1-1・P1-1・F2-1・( P1T )-1・P2-1・F3-1・( P2T )-1・P3-1・F4-1・( P3T )-1
= F1T・P1T・F2T・P1・P2T・F3T・P2・P3T・F4T・P3
・・・（４９）
【０２９１】
非特許文献２に記載の非セパラブルなセカンダリ変換の場合と、以上のように行列分解したセパラブルなセカンダリ変換の場合とで、乗算と加算の処理数を比較した結果を図２５のＡの表に示す。図２５のＡの表に示されるように、行列分解することにより、乗算や加算の処理数を低減することができる。
【０２９２】
また、非特許文献２に記載の非セパラブルなセカンダリ変換の場合と、以上のように行列分解したセパラブルなセカンダリ変換の場合とで、セカンダリ変換の行列の情報量（１変換当たり）と、その行列を保持するのに必要なメモリサイズを比較した結果を図２５のＢの表に示す。行列分解することにより、行列分解した各直交変換の疎行列の性質および係数の対称性を利用して、セカンダリ変換として保持する係数の数を低減することができる。したがって、図２５のＢの表に示されるように、セカンダリ変換の行列の情報量を低減することができ、必要なメモリサイズの増大を抑制することができる。つまり、符号化の負荷の増大を抑制することができる。
【０２９３】
＜変換部＞
この場合も画像符号化装置１００は、第１の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像符号化装置１００は、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換するラスタライズ部と、その１次元のベクトルに対して複数回の行列積よりなる行列演算を行う行列演算部と、その行列演算が行われた１次元のベクトルに対してスケーリングを行うスケーリング部と、そのスケーリングされた１次元のベクトルを行列化する行列化部とを備える。つまり、この場合の変換部１１２は、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換し、その１次元のベクトルに対して複数回の行列積よりなる行列演算を行い、その行列演算が行われた１次元のベクトルに対してスケーリングを行い、そのスケーリングされた１次元のベクトルを行列化する。
【０２９４】
図２６は、この場合の変換部１１２の主な構成例を示すブロック図である。図２６に示されるように、この場合も変換部１１２は、基本的に第１の実施の形態の場合（図８）と同様の構成を有する。ただし、この場合のセカンダリ変換部１３２は、行列演算部１４２の代わりに、行列演算部４２１を有する。また、この場合、クリップ処理部１４５は省略することができる。なお、行列演算部４２１では、Ｎビットスケーリングされた複数の直交行列を用いて、複数回（Ｍ回）の行列積よりなる行列演算を行うため、ダイナミックレンジは、Ｍ＊Ｎビットとなる。従って、スケーリング部１４３は、ベクトルY1dのノルムを正規化するために用いるシフト量は、（Ｍ＊Ｎ）である。
【０２９５】
行列演算部４２１は、ラスタライズ部１４１から供給される１次元のベクトルに対して、セカンダリ変換Ｒの行列を行列分解した複数回の行列積よりなる行列演算を行う。
【０２９６】
＜行列演算部（１６点HyGT部）＞
図２７は、行列演算部４２１の主な構成例を示すブロック図である。図２７に示されるように、行列演算部４２１は、回転操作部４３１、置換操作部４３２、回転操作部４３３、置換操作部４３４、回転操作部４３５、置換操作部４３６、回転操作部４３７、および置換操作部４３８を有する。なお、行列演算部４２１は、１６点HyGT部４２１とも称する。
【０２９７】
回転操作部４３１は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列F1と、ラスタライズ部１４１から供給される行ベクトルX1dとの行列積A1dを求める。回転操作部４３１は、その行列積A1dを置換操作部４３２に供給する。
【０２９８】
置換操作部４３２は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる置換行列P1と、回転操作部４３１から供給される行列積A1dとの行列積B1dを求める。置換操作部４３２は、その行列積B1dを回転操作部４３３に供給する。
【０２９９】
回転操作部４３３は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列F2と、置換操作部４３２から供給される行列積B1dとの行列積C1dを求める。回転操作部４３３は、その行列積C1dを置換操作部４３４に供給する。
【０３００】
置換操作部４３４は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる置換行列P2と、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる置換行列P1の転置行列P1Tと、回転操作部４３３から供給される行列積C1dとの行列積D1dを求める。置換操作部４３４は、その行列積D1dを回転操作部４３５に供給する。
【０３０１】
回転操作部４３５は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列F3と、置換操作部４３４から供給される行列積D1dとの行列積E1dを求める。回転操作部４３５は、その行列積E1dを置換操作部４３６に供給する。
【０３０２】
置換操作部４３６は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる置換行列P3と、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる置換行列P2の転置行列P2Tと、回転操作部４３５から供給される行列積E1dとの行列積G1dを求める。置換操作部４３６は、その行列積G1dを回転操作部４３７に供給する。
【０３０３】
回転操作部４３７は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列F4と、置換操作部４３６から供給される行列積G1dとの行列積H1dを求める。回転操作部４３７は、その行列積H1dを置換操作部４３８に供給する。
【０３０４】
置換操作部４３８は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる置換行列P3の転置行列P3Tと、回転操作部４３７から供給される行列積H1dとの行列積Y1dを求める。置換操作部４３６は、その行列積Y1dをスケーリング部１４３に供給する。
【０３０５】
以上のように、行列演算部４２１は、セカンダリ変換の行列を行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、セカンダリ変換の演算量（乗算・加算）を低減することができる。また、セカンダリ変換として保持する係数の数を低減させることができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、符号化の負荷の増大を抑制することができる。
【０３０６】
＜変換処理の流れ＞
次に、画像符号化装置１００により実行される各処理の流れの例を説明する。この場合画像符号化装置１００は、画像符号化処理を、第１の実施の形態の場合（図９）と基本的に同様に行う。この場合の変換処理の流れの例を、図２８のフローチャートを参照して説明する。
【０３０７】
変換処理が開始されると、ステップＳ４０１乃至ステップＳ４０９の各処理は、図１０のステップＳ１２１乃至ステップＳ１２８、並びに、ステップＳ１３０の各処理と基本的に同様に実行される。
【０３０８】
ただし、この場合、ステップＳ４０６の処理において、行列演算は、セカンダリ変換の行列Ｒを上述したように行列分解して行われる。
【０３０９】
＜行列演算処理の流れ＞
図２９のフローチャートを参照して、図２８のステップＳ４０６において実行される行列演算処理の流れの例を説明する。
【０３１０】
行列演算処理が開始されると、ステップＳ４２１において、回転操作部４３１は、直交行列F1と行ベクトルX1dとの行列積A1dを求める。
【０３１１】
ステップＳ４２２において、置換操作部４３２は、置換行列P1と行列積A1dとの行列積B1dを求める。
【０３１２】
ステップＳ４２３において、回転操作部４３３は、直交行列F2と行列積B1dとの行列積C1dを求める。
【０３１３】
ステップＳ４２４において、置換操作部４３４は、置換行列P2と置換行列P1の転置行列P1Tと行列積C1dとの行列積D1dを求める。
【０３１４】
ステップＳ４２５において、回転操作部４３５は、直交行列F3と行列積D1dとの行列積E1dを求める。
【０３１５】
ステップＳ４２６において、置換操作部４３６は、置換行列P3と置換行列P2の転置行列P2Tと行列積E1dとの行列積G1dを求める。
【０３１６】
ステップＳ４２７において、回転操作部４３７は、直交行列F4と行列積G1dとの行列積H1dを求める。
【０３１７】
ステップＳ４２８において、置換操作部４３８は、置換行列P3の転置行列P3Tと行列積H1dとの行列積Y1dを求める。
【０３１８】
ステップＳ４２８の処理が終了すると、処理は図２８に戻る。
【０３１９】
以上のように各処理を実行することにより、セカンダリ変換の演算量（乗算・加算）を低減することができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、符号化の負荷の増大を抑制することができる。
【０３２０】
なお、本実施形態では、行列演算部４２１において、Ｎビットスケーリングされた複数の直交行列を用いて、複数回（Ｍ回）の行列積よりなる行列演算を行うため、ダイナミックレンジは、Ｍ＊Ｎビットとなる。従って、スケーリング部１４３は、ベクトルY1dのノルムを正規化するために用いるシフト量は、（Ｍ＊Ｎ）しているがこれに限定されない。例えば、図２７の行列演算部４２１において、回転操作部４３７を除いて、各回転操作部（回転操作部４３１、回転操作部４３３、回転操作部４３５）の後に、各回転操作部から得られる行列積のノルムを正規化するためのスケーリング部をそれぞれ配置してもよい。この場合、各スケーリング部（スケーリング部１４３を含む）におけるノルムを正規化するためのシフト量は、Ｎである。
【０３２１】
また、各回転操作部の後に、スケーリング部を配置する代わりに、複数の回転操作後の行列積に対して、ノルムを正規化するようにスケーリング部を配置してもよい。例えば、回転操作部４３１、置換操作部４３２、及び回転操作部４３３を通して得られる行列積を正規化するためのスケーリング部を、回転操作部４３３の後に配置し、行列積のノルムの正規化を行う。同様に、置換操作部４３４、回転操作部４３５、置換操作部４３６、及び回転操作部４３７を通して得られる行列積をスケーリング部１４３において、ノルムの正規化を行ってもよい。この場合、各スケーリング部におけるノルムを正規化するためのシフト量は、２Ｎである。
【０３２２】
＜逆変換部＞
次に画像復号装置２００について説明する。この場合も画像復号装置２００は、第１の実施の形態の場合と基本的に同様の構成を有する。ただし、この場合の画像復号装置２００は、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換するラスタライズ部と、その１次元のベクトルに対して複数回の行列積よりなる行列演算を行う行列演算部と、その行列演算が行われた１次元のベクトルに対してスケーリングを行うスケーリング部と、そのスケーリングされた１次元のベクトルを行列化する行列化部とを備える。つまり、逆変換部２１３は、逆変換処理することにより画像とその画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換し、その１次元のベクトルに対して複数回の行列積よりなる行列演算を行い、その行列演算が行われた１次元のベクトルに対してスケーリングを行い、そのスケーリングされた１次元のベクトルを行列化する。
【０３２３】
図３０は、この場合の逆変換部２１３の主な構成例を示すブロック図である。図３０に示されるように、この場合も逆変換部２１３は、基本的に第１の実施の形態の場合（図１２）と同様の構成を有する。ただし、この場合の逆セカンダリ変換部２３１は、行列演算部２４２の代わりに、行列演算部４５１を有する。また、この場合、クリップ処理部２４５は省略することができる。なお、行列演算部４５１では、Ｎビットスケーリングされた複数の直交行列を用いて、複数回（Ｍ回）の行列積よりなる行列演算を行うため、ダイナミックレンジは、Ｍ＊Ｎビットとなる。従って、スケーリング部２４３は、ベクトルY1dのノルムを正規化するために用いるシフト量は、（Ｍ＊Ｎ）である。
【０３２４】
行列演算部４５１は、ラスタライズ部２４１から供給される１次元のベクトルに対して、逆セカンダリ変換IRの行列を行列分解した複数回の行列積よりなる行列演算を行う。
【０３２５】
＜行列演算部（１６点逆HyGT部）＞
図３１は、行列演算部４５１の主な構成例を示すブロック図である。図３１に示されるように、行列演算部４５１は、置換操作部４６１、回転操作部４６２、置換操作部４６３、回転操作部４６４、置換操作部４６５、回転操作部４６６、置換操作部４６７、および回転操作部４６８を有する。なお、行列演算部４５１は、１６点逆HyGT部４５１とも称する。
【０３２６】
置換操作部４６１は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる置換行列P3と、ラスタライズ部２４１から供給される行ベクトルX1dとの行列積A1dを求める。置換操作部４６１は、その行列積A1dを回転操作部４６２に供給する。
【０３２７】
回転操作部４６２は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列F4の転置行列F4Tと、置換操作部４６１から供給される行列積A1dとの行列積B1dを求める。回転操作部４６２は、その行列積B1dを置換操作部４６３に供給する。
【０３２８】
置換操作部４６３は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる置換行列P2と、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる置換行列P3の置換行列P3Tと、回転操作部４６２から供給される行列積B1dとの行列積C1dを求める。置換操作部４６３は、その行列積C1dを回転操作部４６４に供給する。
【０３２９】
回転操作部４６４は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列F3の転置行列F3Tと、置換操作部４６２から供給される行列積C1dとの行列積D1dを求める。回転操作部４６４は、その行列積D1dを置換操作部４６５に供給する。
【０３３０】
置換操作部４６５は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる置換行列P1と、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる置換行列P2の転置行列P2Tと、回転操作部４６４から供給される行列積D1dとの行列積E1dを求める。置換操作部４６５は、その行列積E1dを回転操作部４６６に供給する。
【０３３１】
回転操作部４６６は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列F2の転置行列F2Tと、置換操作部４６５から供給される行列積E1dとの行列積G1dを求める。回転操作部４６６は、その行列積G1dを置換操作部４６７に供給する。
【０３３２】
置換操作部４６７は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる置換行列P1の転置行列P1Tと、回転操作部４６６から供給される行列積G1dとの行列積H1dを求める。置換操作部４６７は、その行列積H1dを回転操作部４６８に供給する。
【０３３３】
回転操作部４６８は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列F1の転置行列F1Tと、置換操作部４６７から供給される行列積H1dとの行列積Y1dを求める。回転操作部４６８は、その行列積Y1dをスケーリング部２４３に供給する。
【０３３４】
以上のように、行列演算部４５１は、逆セカンダリ変換の行列を行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、逆セカンダリ変換の演算量（乗算・加算）を低減することができる。また、逆セカンダリ変換として保持する係数の数を低減させることができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、復号の負荷の増大を抑制することができる。
【０３３５】
＜逆変換処理の流れ＞
次に、画像復号装置２００により実行される各処理の流れの例を説明する。この場合画像復号装置２００は、画像復号処理を、第１の実施の形態の場合（図１３）と基本的に同様に行う。この場合の逆変換処理の流れの例を、図３２のフローチャートを参照して説明する。
【０３３６】
逆変換処理が開始されると、ステップＳ４４１乃至ステップＳ４４９の各処理は、図１４のステップＳ２２１乃至ステップＳ２２７、並びに、ステップＳ２２９およびステップS２３０の各処理と基本的に同様に実行される。
【０３３７】
ただし、この場合、ステップＳ４４５の処理において、行列演算は、逆セカンダリ変換の行列IRを上述したように行列分解して行われる。
【０３３８】
＜行列演算処理の流れ＞
図３３のフローチャートを参照して、図３２のステップＳ４４５において実行される行列演算処理の流れの例を説明する。
【０３３９】
行列演算処理が開始されると、ステップＳ４６１において、置換操作部４６１は、置換行列P3と行ベクトルX1dとの行列積A1dを求める。
【０３４０】
ステップＳ４６２において、回転操作部４６２は、直交行列F4の転置行列F4Tと行列積A1dとの行列積B1dを求める。
【０３４１】
ステップＳ４６３において、置換操作部４６３は、置換行列P2と置換行列P3の転置行列P3Tと行列積B1dとの行列積C1dを求める。
【０３４２】
ステップＳ４６４において、回転操作部４６４は、直交行列F3の転置行列F3Tと行列積C1dとの行列積D1dを求める。
【０３４３】
ステップＳ４６５において、置換操作部４６５は、置換行列P1と置換行列P2の転置行列P2Tと行列積D1dとの行列積E1dを求める。
【０３４４】
ステップＳ４６６において、回転操作部４６６は、直交行列F2の転置行列F2Tと行列積E1dとの行列積G1dを求める。
【０３４５】
ステップＳ４６７において、置換操作部４６７は、置換行列P1の転置行列P1Tと行列積G1dとの行列積H1dを求める。
【０３４６】
ステップＳ４６８において、回転操作部４６８は、直交行列F1の転置行列F1Tと行列積H1dとの行列積Y1dを求める。
【０３４７】
ステップＳ４６８の処理が終了すると、処理は図３２に戻る。
【０３４８】
以上のように各処理を実行することにより、逆セカンダリ変換の演算量（乗算・加算）を低減することができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、復号の負荷の増大を抑制することができる。
【０３４９】
なお、本実施形態では、行列演算部４５１において、Ｎビットスケーリングされた複数の直交行列を用いて、複数回（Ｍ回）の行列積よりなる行列演算を行うため、ダイナミックレンジは、Ｍ＊Ｎビットとなる。従って、スケーリング部２４３は、ベクトルY1dのノルムを正規化するために用いるシフト量は、（Ｍ＊Ｎ）しているがこれに限定されない。例えば、図３１の行列演算部４５１において、回転操作部４６８を除いて、各回転操作部（回転操作部４６２、回転操作部４６４、回転操作部４６６）の後に、各回転操作部から得られる行列積のノルムを正規化するためのスケーリング部をそれぞれ配置してもよい。この場合、各スケーリング部（スケーリング部２４３を含む）におけるノルムを正規化するためのシフト量は、Ｎである。
【０３５０】
また、各回転操作部の後に、スケーリング部を配置する代わりに、複数の回転操作後の行列積に対して、ノルムを正規化するようにスケーリング部を配置してもよい。例えば、置換操作部４６１、回転操作部４６２、置換操作部４６３、及び回転操作部４６４を通して得られる行列積を正規化するためのスケーリング部を、回転操作部４６４の後に配置し、行列積のノルムの正規化を行う。同様に、置換操作部４６５、回転操作部４６６、置換操作部４６７、及び回転操作部４６８を通して得られる行列積をスケーリング部２４３において、ノルムの正規化を行う。この場合、各スケーリング部におけるノルムを正規化するためのシフト量は、２Ｎである。
【０３５１】
＜４．第４の実施の形態＞
＜１６点HyGTの別表現＞
第３の実施の形態では、１６点HyGTの１段目の操作T1（図２１のＡにおいて枠４１１で囲まれた部分）については、置換操作の表現を用いずに、G1,1乃至G1,8の８つの回転行列からなる直交変換F1からなると表現したが、入力信号の置換を行わないことを示す特殊な置換を伴う表現で表すことが可能である。
【０３５２】
便宜上、第３の実施の形態において、操作T1における置換操作を置換δ0と定義し、図２１のＢの模式図を、図３４に置き換えることができる。置換δ0は、以下の式（５０）で表される。置換δ0は、入力信号の置換を行わないことを示す置換操作である。すなわち、式（５０）において、i番目(i=0,…,15)の入力信号は、そのままi番目の出力信号として出力される。
【０３５３】
2017195666.tif 000018
・・・（５０）
【０３５４】
つまり、１段目の操作T1は、以下の式（５１）のように、置換δ0、直交変換F1、逆置換δ0Tによって表現することができる。ここで、式（５１）において置換δ0に対応する行列は、Ｐ0であり、１６×１６の単位行列に対応する。
【０３５５】
T1 = P0T・F1・P0
・・・（５１）
【０３５６】
この式（５１）の結果から、第３の実施の形態において説明した16点HyGT（セカンダリ変換Ｒ）、及び16点inverseHyGT(逆セカンダリ変換)を表すそれぞれの式（４８）は以下の式（５２）へ、式（４９）は、式（５３）へ置換δ0を導入した表現し直すことができる。ここで、置換δ0, δ1, δ2, δ3、及び対応する置換行列P0, P1, P2, P3の下付き文字のインデックスの開始番号を０から１へ置き換え、置換δ1, δ2, δ3, δ4、及び対応する置換行列P1, P2, P3, P4と定義し直せば、式（５２）は以下の式（５４）によって、式（５３）は以下の式（５５）によって表現することができる。
【０３５７】
R = T4 ・T3・T2・T1
= (P3T・F4・P3)・(P2T・F3・P2)・(P1T・F2・P1)・(P0T・F1・P0)
2017195666.tif 000019
・・・（５２）
R-1 = (T4 ・T3・T2・T1)-1
=((P3T・F4・P3)・(P2T・F3・P2)・(P1T・F2・P1)・(P0T・F1・P0))-1
=(P0-1・F1-1・(P0T)-1)・(P1-1・F2-1・(P1T)-1)・(P2-1・F3-1・( P2T)-1)・(P3-1・F4-1・(P3T)-1)
=(P0T・F1T・P0)・)P1T・F2T・P1)・(P2T・F3T・P2)・(P3T・F4T・P3)
2017195666.tif 000020
・・・（５３）
R = (P4T・F4・P4) ・(P3T・F3・P3)・(P2T・F2・P2)・(P1T・F1・P1)
2017195666.tif 000021
・・・（５４）
R-1 = ((P4T・F4・P4)・(P3T・F3・P3)・(P2T・F2・P2)・(P1T・F1・P1))-1
2017195666.tif 000022
・・・（５５）
【０３５８】
＜行列演算部（１６点HyGT部）＞
以上の式５２（式５４）の結果に基づいて、第３の実施の形態において説明したセカンダリ変換部１３２の行列演算部４２１は、図２７に示される構成の代わりに、図３５に示される構成によっても実現することができる。図３５の場合、行列演算部４２１は、図２７の場合と機能は同一であるが、16点HyGTを４つの直交行列に分解し、セパラブルな直交変換としている。従って、図３５の場合の行列演算部４２１は、図２７の場合と比較して、構成ブロックの個数を削減することができる。すなわち、回路規模を削減することができる。
【０３５９】
図３５は、行列演算部４２１の主な構成例を示すブロック図である。図３５の場合、行列演算部４２１は、回転操作部５０１−１、回転操作部５０１−２、回転操作部５０１−３、および回転操作部５０１−４を有する。
【０３６０】
回転操作部５０１−１は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列T1(=P1T・F1・P1=F1)と、ラスタライズ部１４１から供給される行ベクトルX1dとの行列積A1dを求める。回転操作部５０１−１は、その行列積A1dを置換操作部５０１−２に供給する。
【０３６１】
回転操作部５０１−２は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列T2(=P2T・F2・P2)と、回転操作部５０１−１から供給される行列積A1dとの行列積B1dを求める。回転操作部５０１−２は、その行列積B1dを回転操作部５０１−３に供給する。
【０３６２】
回転操作部５０１−３は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列T3(=P3T・F3・P3)と、回転操作部５０１−２から供給される行列積B1dとの行列積C1dを求める。回転操作部５０１−３は、その行列積C1dを回転操作部５０１−４に供給する。
【０３６３】
回転操作部５０１−４は、セカンダリ変換選択部１４６から供給されるセカンダリ変換の行列Ｒを行列分解して得られる直交行列T4(=P4T・F4・P4)と、回転操作部５０１−３から供給れる行列積C1dとの行列積D1dを求める。回転操作部５０１−４は、その行列積Y1dをスケーリング部１４３に供給する。
【０３６４】
つまり、回転操作部５０１−１乃至回転操作部５０１−４は、それぞれ、行列積を求める処理部であり、互いに同一の処理を行う。以下において、回転操作部５０１−１乃至回転操作部５０１−４を互いに区別して説明する必要が無い場合、回転操作部５０１と称する。つまり、この場合、行列演算部４２１は、４つの回転操作部５０１により構成される。
【０３６５】
以上のように、行列演算部４２１は、セカンダリ変換の行列を行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、セカンダリ変換の演算量（乗算・加算）を低減することができる。また、セカンダリ変換として保持する係数の数を低減させることができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、符号化の負荷の増大を抑制することができる。
【０３６６】
＜行列演算処理の流れ＞
図３６のフローチャートを参照して、図２８のステップＳ４０６において実行される行列演算処理の流れの例を説明する。
【０３６７】
行列演算処理が開始されると、ステップＳ５０１−１において、回転操作部５０１−１は、直交行列T1(=P1T・F1・P1=F1)と行ベクトルX1dとの行列積A1dを求める。
【０３６８】
ステップＳ５０１−２において、回転操作部５０１−２は、直交行列T2(=P2T・F2・P2)と行列積A1dとの行列積B1dを求める。
【０３６９】
ステップＳ５０１−３において、回転操作部５０１−３は、直交行列T3(=P3T・F3・P3)と行列積B1dとの行列積C1dを求める。
【０３７０】
ステップＳ５０１−４において、回転操作部５０１−４は、直交行列T4(=P4T・F4・P4)と行列積C1dとの行列積Y1dを求める。
【０３７１】
ステップＳ５０１−４の処理が終了すると、処理は図２８に戻る。
【０３７２】
以上のように各処理を実行することにより、セカンダリ変換の演算量（乗算・加算）を低減することができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、符号化の負荷の増大を抑制することができる。
【０３７３】
＜行列演算部（１６点逆HyGT部）＞
同様にして、式（５３）（式（５４））の結果に基づいて、第３の実施の形態において説明した逆セカンダリ変換部２３１の行列演算部４５１は、図３１に示される構成の代わりに、図３７に示されるような構成によっても実現することができる。図３７の場合、行列演算部４５１は、図３１の場合と機能は同一であるが、16点逆HyGTを４つの直交行列に分解し、セパラブルな直交変換としている。従って、図３７の場合の行列演算部４５１は、図３１の場合と比較して、構成ブロックの個数を削減することができる。すなわち、回路規模を削減することができる。
【０３７４】
図３７は、行列演算部４５１の主な構成例を示すブロック図である。図３７の場合、行列演算部４５１は、回転操作部５１１−１、回転操作部５１１−２、回転操作部５１１−３、および回転操作部５１１−４を有する。
【０３７５】
回転操作部５１１−１は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列T4(=P4T・F4・P4)の転置行列T4T(=P4T・F4T・P4)と、ラスタライズ部２４１から供給される行ベクトルX1dとの行列積A1dを求める。回転操作部５１１−１は、その行列積A1dを回転操作部５１１−２に供給する。
【０３７６】
回転操作部５１１−２は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列T3(=P3T・F3・P3)の転置行列T3T(=P3T・F3T・P3)と、回転操作部５１１−１から供給される行列積A1dとの行列積B1dを求める。回転操作部５１１−２は、その行列積B1dを回転操作部５１１−３に供給する。
【０３７７】
回転操作部５１１−３は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列T2(=P2T・F2・P2)の転置行列T2T(=P2T・F2T・P2)と、回転操作部５１１−４から供給される行列積B1dとの行列積C1dを求める。回転操作部５１１−３は、その行列積C1dを回転操作部５１１−４に供給する。
【０３７８】
回転操作部５１１−４は、逆セカンダリ変換選択部２４６から供給される逆セカンダリ変換の行列IRを行列分解して得られる直交行列T1(=P1T・F1・P1=F1)の転置行列T1T(=P1T・F1T・P1=F1T)と、回転操作部５１１−３から供給される行列積C1dとの行列積Y1dを求める。回転操作部５１１−４は、その行列積Y1dをスケーリング部２４３に供給する。
【０３７９】
つまり、回転操作部５１１−１乃至回転操作部５１１−４は、それぞれ、行列積を求める処理部であり、互いに同一の処理を行う。以下において、回転操作部５１１−１乃至回転操作部５１１−４を互いに区別して説明する必要が無い場合、回転操作部５１１と称する。つまり、この場合、行列演算部４５１は、４つの回転操作部５１１により構成される。
【０３８０】
以上のように、行列演算部４５１は、逆セカンダリ変換の行列を行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、逆セカンダリ変換の演算量（乗算・加算）を低減することができる。また、逆セカンダリ変換として保持する係数の数を低減させることができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、復号の負荷の増大を抑制することができる。
【０３８１】
＜行列演算処理の流れ＞
図３８のフローチャートを参照して、図３２のステップＳ４４５において実行される行列演算処理の流れの例を説明する。
【０３８２】
行列演算処理が開始されると、ステップＳ５１１−１において、回転操作部５１１−１は、直交行列直交行列T4(=P4T・F4・P4)の転置行列T4T(=P4T・F4T・P4)と行ベクトルX1dとの行列積A1dを求める。
【０３８３】
ステップＳ５１１−２において、回転操作部５１１−２は、直交行列T3(=P3T・F3・P3)の転置行列T3T(=P3T・F3T・P3)と行列積A1dとの行列積B1dを求める。
【０３８４】
ステップＳ５１１−３において、回転操作部５１１−３は、直交行列T2(=P2T・F2・P2)の転置行列T2T(=P2T・F2T・P2)と行列積B1dとの行列積C1dを求める。
【０３８５】
ステップＳ５１１−４において、回転操作部５１１−４は、直交行列T1(=P1T・F1・P1=F1)の転置行列T1T(=P1T・F1T・P1=F1T)と行列積C1dとの行列積Y1dを求める。
【０３８６】
ステップＳ５１１−４の処理が終了すると、処理は図３２に戻る。
【０３８７】
以上のように各処理を実行することにより、逆セカンダリ変換の演算量（乗算・加算）を低減することができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。すなわち、復号の負荷の増大を抑制することができる。
【０３８８】
＜５．第５の実施の形態＞
＜2N点HyGT及び2N点逆HyGTについて＞
HyGTについて一般化すると、2N点HyGTにおいて、i番目の操作Tiは、2N点の置換δi（あるいは対応する2Ｎ×2Ｎの置換行列Pi）、及び2Ｎ×2Ｎの直交行列Fi（i=1,…,N）とすると、Ti=(PiT・Fi・Pi)と表現される。従って、2Ｎ点HyGTは、以下の式（５６）のように、Ｎ個の変換Tiの行列積によって表現される。
【０３８９】
2017195666.tif 000023
・・・（５６）
【０３９０】
また、同様にして、2Ｎ点HyGTの逆変換、すなわち、2N点逆HyGT(2Ｎ点inverseHyGT)は、以下の式（５７）によって表現される。
【０３９１】
2017195666.tif 000024
・・・（５７）
【０３９２】
ここで、２N点HyGTのi番目の変換Tiにおける直交行列Fiは、以下の式（５８）に示されるように、式（３３）に示す回転行列Gi,j(j=1,…,2N-1)を対角成分に有し、それ以外の要素が０である疎な直交行列である。
【０３９３】
2017195666.tif 000025
・・・（５８）
【０３９４】
また、２N点HyGTのi番目の変換Tiにおける置換δiは、図３９に示される疑似コード５２１によって導出される。なお、この疑似コード５２１において、配列permList[i]が置換δiに対応し、permList[i][j] は、置換δiにおいて、j番目の要素と入れ替える要素番号に対応する。
【０３９５】
例えば、32点HyGT(N=5)におけるi番目の変換Tiにおける置換δiは、図４０に示す通りとなる。すなわち、2N点HyGTのi番目(i=1,…,N)の変換Tiにおける置換δiは、0,…,2**N-1までの要素を、順方向に、2i個(i=1,...,N)の要素からなるN-i+1個のサブセットに分割し、各サブセットj(j=0,…,N-i)において、それぞれ2i-1個からなる左半分の要素群{j*2i-1,..,(j+1)*2i-1/2-1}（第１のクラス）と右半分の要素群{(j+1)*2i-1/2,..,(j+1)*2i-1-1}（第２のクラス）とにおいて、第１のクラスの奇数番目の要素kを、上記第２のクラスの対応する奇数番目l(=j+2i-1)の要素の右となりの偶数番目の要素m(=j+2i-1+1)と入れ替えることで導出される。
【０３９６】
例えば、図４０に示される32点HyGT(N=5)の場合、図４１の上段に示されるように、１番目の変換δ１の要素は、２個の要素からなるサブセット５２２に分割される。図４０においては、左端のサブセットにのみ符号を付しているが、四角枠で示されるそれぞれが全てサブセット５２２である。また、各サブセット５２２において、左の１個の要素が第１のクラス５２３として設定され、右の１個の要素が第２のクラス５２４として設定される。そして変換δ１においては、要素の入れ替えは行われない。
【０３９７】
２番目の変換δ２の要素は、図４１の中段に示されるように、４個の要素からなるサブセット５２２に分割される。各サブセット５２２の左の２個の要素が第１のクラス５２３として設定され、右の２個の要素が第２のクラス５２４として設定される。そして、例えば、左端のサブセット５２２においては、第１のクラス５２３の要素「１」と、第２のクラス５２４の要素「３」とが入れ替えられる。他のサブセット５２２においても同様の位置関係で要素が入れ替えられる。
【０３９８】
３番目の変換δ３の要素は、図４１の下段に示されるように、８個の要素からなるサブセット５２２に分割される。各サブセット５２２の左の４個の要素が第１のクラス５２３として設定され、右の４個の要素が第２のクラス５２４として設定される。そして、例えば、左端のサブセット５２２においては、第１のクラス５２３の要素「１」と第２のクラス５２４の要素「４」とが入れ替えられ、第１のクラス５２３の要素「３」と第２のクラス５２４の要素「６」とが入れ替えられる。他のサブセット５２２においても同様の位置関係で要素が入れ替えられる。
【０３９９】
４番目の変換δ４の要素は、図４２の上段に示されるように、１６個の要素からなるサブセット５２２に分割される。各サブセット５２２の左の８個の要素が第１のクラス５２３として設定され、右の８個の要素が第２のクラス５２４として設定される。そして、例えば、左端のサブセット５２２においては、第１のクラス５２３の要素「１」と第２のクラス５２４の要素「８」とが入れ替えられ、第１のクラス５２３の要素「３」と第２のクラス５２４の要素「１０」とが入れ替えられ、第１のクラス５２３の要素「５」と第２のクラス５２４の要素「１２」とが入れ替えられ、第１のクラス５２３の要素「７」と第２のクラス５２４の要素「１４」とが入れ替えられる。他のサブセット５２２においても同様の位置関係で要素が入れ替えられる。
【０４００】
５番目の変換δ５の要素は、図４２の下段に示されるように、３２個の要素からなるサブセット５２２に分割される。つまり、この場合、δ５全体が１つのサブセット５２２に設定される。そしてそのサブセット５２２の左の１６個の要素が第１のクラス５２３として設定され、右の１６個の要素が第２のクラス５２４として設定される。そして、第１のクラス５２３の要素「１」と第２のクラス５２４の要素「１６」とが入れ替えられ、第１のクラス５２３の要素「３」と第２のクラス５２４の要素「１８」とが入れ替えられ、第１のクラス５２３の要素「５」と第２のクラス５２４の要素「２０」とが入れ替えられ、第１のクラス５２３の要素「７」と第２のクラス５２４の要素「２２」とが入れ替えられ、第１のクラス５２３の要素「９」と第２のクラス５２４の要素「２４」とが入れ替えられ、第１のクラス５２３の要素「１１」と第２のクラス５２４の要素「２６」とが入れ替えられ、第１のクラス５２３の要素「１３」と第２のクラス５２４の要素「２８」とが入れ替えられ、第１のクラス５２３の要素「１５」と第２のクラス５２４の要素「３０」とが入れ替えられる。
【０４０１】
また、64点HyGT(N=6)におけるi番目の変換Tiにおける置換δiは、図４３に示す通りとなる。なお、置換δiに対応する置換行列Piは、置換δiから自明であるため、説明を省略する。
【０４０２】
このように、図３９に示される疑似コード５２１によって、2N点HyGTのi番目の変換Tiにおける置換δiを導出することができる。
【０４０３】
＜2N点HyGT部＞
次に、以上のように一般化されたHyGTの構成について説明する。図４４は、このような2N点のHyGTを行う2N点HyGT部５３０の主な構成例を示すブロック図である。図４４に示されるように、2N点HyGT部５３０は、Ｎ個の回転操作部（回転操作部５３１−１、回転操作部５３１−２、・・・、回転操作部５３１−Ｎ）を有する。なお、Ｎは１以上の任意の整数をとりうる。また、以下において回転操作部５３１−１、回転操作部５３１−２、・・・、回転操作部５３１−Ｎを互いに区別して説明する必要が無い場合、回転操作部５３１と称する。
【０４０４】
回転操作部５３１−１は、以下の式（５９）に示されるように、2N点HyGT部５３０の外部より供給される2N点HyGTの行列Ｒを行列分解して得られる１番目の操作に対応する直交行列T1と、2N点HyGT部５３０の外部から供給される１×2N行ベクトルX0(=X1d)の転置行列との行列積X1（１×2Nの行ベクトル）を求める。回転操作部５３１−１は、その行列積X1を回転操作部５３１−２に供給する。
【０４０５】
X1T=T1・X0T=P1T・F1・P1・X0T
・・・（５９）
【０４０６】
回転操作部５３１−２は、以下の式（６０）に示されるように、2N点HyGT部５３０の外部より供給される2N点HyGTの行列Ｒを行列分解して得られる２番目の操作に対応する直交行列T2と、回転操作部５３１−１から供給される１×2N行ベクトルX1の転置行列との行列積X2（１×2Nの行ベクトル）を求める。回転操作部５３１−２は、その行列積X2を次の回転操作部５３１に供給する。
【０４０７】
X2T＝T2・X1T＝P2T・F2・P2・X1T
・・・（６０）
【０４０８】
以下、各回転操作部５３１において同様の処理が行われる。つまり、ｉ番目の回転操作部５３１−ｉは、2N点HyGT部５３０の外部より供給される2N点HyGTの行列Ｒを行列分解して得られるｉ番目の操作に対応する直交行列Tiと、１つ前の回転操作部５３１−（ｉ−１）から供給される１×2N行ベクトルXi-1の転置行列との行列積Xi（１×2Nの行ベクトル）を求める。回転操作部５３１−ｉは、その行列積Xiを次の回転操作部５３１−（ｉ＋１）に供給する。
【０４０９】
そして、回転操作部５３１−Ｎは、以下の式（６１）に示されるように、2N点HyGT部５３０の外部から供給される2N点HyGTの行列Ｒを行列分解して得られるN番目の操作に対応する直交行列TNと、１つ前の回転操作部５３１から供給される１×2N行ベクトルXN-1の転置行列との行列積XN（１×2Nの行ベクトル）を求める。回転操作部５３１−Ｎは、その行列積XN（=Y1d）を2N点HyGT部５３０の外部へ出力する。
【０４１０】
XNT＝TN・XN-1T＝PNT・FN・PN・XN-1T
・・・（６１）
【０４１１】
なお、Ｎ＝２の場合は、回転操作部５３１−２が求めた行列積X2を行列積Y1dとして2N点HyGT部５３０の外部へ出力する。また、Ｎ＝１の場合は、回転操作部５３１−１が求めた行列積X1を行列積Y1dとして2N点HyGT部５３０の外部へ出力する。
【０４１２】
以上のように、Ｎ個の回転操作部５３１は、互いに同様の変換処理を行う。つまり、2N点HyGT部５３０は、2N点HyGTの行列Rを行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換することができる。したがって、2N点HyGTによる変換の演算量（乗算・加算）を低減することができる。また、これにより、2N点HyGTの変換として保持する係数の数を低減させることができ、2N点HyGTの行列Rを保持するのに必要なメモリサイズを低減させることができる。
【０４１３】
なお、各回転操作部５３１の後段に、ノルム正規のためのスケーリングを行うスケーリング部を設けるようにしてもよい。
【０４１４】
＜行列演算処理の流れ＞
図４５のフローチャートを参照して、2N点HyGT部５３０により実行される行列演算処理の流れの例を説明する。
【０４１５】
行列演算処理が開始されると、ステップＳ５２１−１において、回転操作部５３１−１は、直交行列T1(=P1T・F1・P1=F1)と行ベクトルX0との行列積X1を求める。
【０４１６】
ステップＳ５２１−２において、回転操作部５３１−２は、直交行列T2(=P2T・F2・P2)と行列積X1との行列積X2を求める。
【０４１７】
同様に、ｉ番目の回転操作部５３１−ｉは、ステップＳ５２１−ｉにおいて、直交行列Ti(=PiT・Fi・Pi)と行列積Xi-1との行列積Xiを求める。
【０４１８】
そして、ステップＳ５２１−Ｎにおいて、回転操作部５３１−Ｎは、直交行列TN(=PNT・FN・PN)と行列積XN-1との行列積XN(=Y1d)を求める。ステップＳ５２１−Ｎの処理が終了すると、行列演算処理が終了する。
【０４１９】
以上のように各処理を実行することにより、2N点HyGTによる変換の演算量（乗算・加算）を低減することができる。
【０４２０】
なお、Ｎ＝２の場合、ステップＳ５２１−２の処理が終了すると行列演算処理が終了する。また、Ｎ＝１の場合、ステップＳ５２１−１の処理が終了すると行列演算処理が終了する。
【０４２１】
＜第３の実施の形態への適用＞
このような、2N点HyGT部５３０は、例えば、第３の実施の形態において上述した行列演算部４２１として適用することができる。第３の実施の形態の行列演算部４２１は、１６点HyGTを行うので、Ｎ＝４である。つまり、第４の実施の形態において説明した構成（図３５）となる。すなわち、各回転操作部５３１は、図３５の各回転操作部５０１と同様の処理を行う。したがって、この場合の行列演算処理は、図３６のフローチャートを参照して説明した場合と同様の流れとなる。
【０４２２】
＜2N点逆HyGT部）＞
次に、このような2N点HyGT部５３０に対応する（2N点HyGT部５３０が行う行列演算の逆処理を行う）2N点逆HyGT部について説明する。図４６は、そのような2N点逆HyGT部の主な構成例を示すブロック図である。図４６に示されるように、2N点逆HyGT部５４０は、Ｎ個の回転操作部（回転操作部５４１−１、回転操作部５４１−２、・・・、回転操作部５４１−Ｎ）を有する。なお、Ｎは１以上の任意の整数をとりうる。また、以下において回転操作部５４１−１、回転操作部５４１−２、・・・、回転操作部５４１−Ｎを互いに区別して説明する必要が無い場合、回転操作部５４１と称する。
【０４２３】
回転操作部５４１−１は、以下の式（６２）に示されるように、2N点逆HyGT部５４０の外部より供給される2N点逆HyGTの行列IＲを行列分解して得られる１番目の操作に対応する直交行列TNTと、2N点逆HyGT部５４０の外部から供給される１×2N行ベクトルX0(=X1d)の転置行列との行列積X1（１×2Nの行ベクトル）を求める。回転操作部５４１−１は、その行列積X1を回転操作部５４１−２に供給する。
【０４２４】
X1T＝TNT・X0T＝PNT・FNT・PN・X0T
・・・（６２）
【０４２５】
回転操作部５４１−２は、以下の式（６３）に示されるように、2N点逆HyGT部５４０の外部より供給される2N点逆HyGTの行列IRを行列分解して得られる２番目の操作に対応する直交行列TN-1Tと、回転操作部５４１−１から供給される１×2N行ベクトルX1の転置行列との行列積X2（１×2Nの行ベクトル）を求める。回転操作部５４１−２は、その行列積X2を次の回転操作部５４１に供給する。
【０４２６】
X2T＝TN-1T・X1T＝PN-1T・FN-1T・PN-1・X1T
・・・（６３）
【０４２７】
以下、各回転操作部５４１において同様の処理が行われる。つまり、ｉ番目の回転操作部５４１−ｉは、2N点逆HyGT部５４０の外部より供給される2N点逆HyGTの行列IRを行列分解して得られるｉ番目の操作に対応する直交行列TN-i+1と、１つ前の回転操作部５４１−（ｉ−１）から供給される１×2N行ベクトルXi-1の転置行列との行列積Xi（１×2Nの行ベクトル）を求める。回転操作部５４１−ｉは、その行列積Xiを次の回転操作部５４１−（ｉ＋１）に供給する。
【０４２８】
そして、回転操作部５４１−Ｎは、以下の式（６４）に示されるように、2N点逆HyGT部５４０の外部より供給される2N点逆HyGTの行列IRを行列分解して得られるN番目の操作に対応する直交行列T1Tと、１つ前の回転操作部５４１−（Ｎ−１）から供給される１×2N行ベクトルXi-1の転置行列との行列積XN（１×2Nの行ベクトル）を求める。回転操作部５４１−Ｎは、その行列積XN（= Y1d）を2N点逆HyGT部５４０の外部へ出力する。
【０４２９】
XNT＝T1T・XN-1T＝P1T・F1T・P1・XN-1T＝F1T・XN-1T
・・・（６４）
【０４３０】
なお、Ｎ＝２の場合は、回転操作部５４１−２が求めた行列積X2を行列積Y1dとして2N点逆HyGT部５４０の外部へ出力する。また、Ｎ＝１の場合は、回転操作部５４１−１が求めた行列積X1を行列積Y1dとして2N点逆HyGT部５４０の外部へ出力する。
【０４３１】
以上のように、2N点逆HyGT部５４０は、2N点逆HyGTの行列IRを行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、2N点逆HyGTによる変換の演算量（乗算・加算）を低減することができる。また、2N点逆HyGTの変換として保持する係数の数を低減させることができ、2N点逆HyGTの行列を保持するのに必要なメモリサイズを低減させることができる。
【０４３２】
なお、各回転操作部５４１の後段に、ノルム正規のためのスケーリングを行うスケーリング部を設けるようにしてもよい。
【０４３３】
＜行列演算処理の流れ＞
図４７のフローチャートを参照して、2N点逆HyGT部５４０において実行される行列演算処理の流れの例を説明する。
【０４３４】
行列演算処理が開始されると、ステップＳ５３１−１において、回転操作部５４１−１は、直交行列TNT(=PNT・FNT・PN)と行ベクトルX0との行列積X1を求める。
【０４３５】
ステップＳ５３１−２において、回転操作部５４１−２は、直交行列TN-1T(=PN-1T・FN-1T・PN-1)と行列積X1との行列積X2を求める。
【０４３６】
同様に、ｉ番目の回転操作部５４１−ｉは、ステップＳ５３１−ｉにおいて、直交行列TN-i+1T(=P N-i+1T・F N-i+1・P N-i+1i)と行列積Xi-1との行列積Xiを求める。
【０４３７】
そして、ステップＳ５３１−Ｎにおいて、回転操作部５４１−Ｎは、直交行列T1T(=P1T・F1T・P1= F1T)と行列積XN-1との行列積XN(=Y1d)を求める。ステップＳ５３１−Ｎの処理が終了すると、行列演算処理が終了する。
【０４３８】
以上のように各処理を実行することにより、2N点逆HyGTによる変換の演算量（乗算・加算）を低減することができる。
【０４３９】
なお、Ｎ＝２の場合、ステップＳ５３１−２の処理が終了すると行列演算処理が終了する。また、Ｎ＝１の場合、ステップＳ５３１−１の処理が終了すると行列演算処理が終了する。
【０４４０】
＜第３の実施の形態への適用＞
このような、2N点逆HyGT部５４０は、例えば、第３の実施の形態において上述した行列演算部４５１として適用することができる。第３の実施の形態の行列演算部４５１は、１６点HyGTを行うので、Ｎ＝４である。つまり、第４の実施の形態において説明した構成（図３７）となる。すなわち、各回転操作部５４１は、図３７の各回転操作部５１１と同様の処理を行う。したがって、この場合の行列演算処理は、図３８のフローチャートを参照して説明した場合と同様の流れとなる。
【０４４１】
＜６．第６の実施の形態＞
＜64点HyGTの場合＞
第３の実施の形態では、４×４サブブロック毎にHyGTベースのセカンダリ変換を適用する場合において、行列分解による高速演算が可能なセカンダリ変換、及び逆セカンダリ変換について説明した。また、第６の実施の形態の変形例６では、HyGTを一般化した2N点HyGT、及び2N逆点HyGTについて説明した。ところで、X.Zhao, A.Said, V.Seregin, M.Karczewicz, J.Chen, "EE2.7 related Improved non-seperable secondary secondary transform", JVET-C0063, 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, from 2016-05-26 to 2016-06-01 2016（以下、非特許文献３とも称する）には、セカンダリ変換のエナジーコンパクションの性能を向上させるために、変換ブロックサイズが８×８以上の場合に、８×８サブブロック単位に、64点HyGTベースのセカンダリ変換を適用することが開示されている。
【０４４２】
しかしながら、非特許文献３に記載の方法の64点HyGTベースのセカンダリ変換は、非セパラブルであるため、演算量が多かった。また、イントラ予測モードのクラス数と各クラスに対応するセカンダリ変換の数だけ、４×４及び８×８セカンダリ変換の行列を有しており、セカンダリ変換の行列を保持するメモリサイズが非特許文献２に記載の方法に比べてさらに増大するおそれがあった。すなわち、符号化・復号の負荷が増大するおそれがあった。
【０４４３】
例えば、非特許文献３に記載の方法の場合、イントラ予測モードのクラス数=35であり、各クラスに対するセカンダリ変換の数=5であり、35*5 = 175の行列が４×４及び８×８セカンダリ変換毎に存在する。したがって、各行列の要素を9bit精度で保持するとすると、全セカンダリ変換の行列を保持に要するメモリサイズは、9bit * 16*16 * 175 + 9bit * 64 * 64 * 175 = 6854400 bits = 856800 byte = 836.71875KBである。
【０４４４】
＜行列演算の分解＞
そこで、第３の実施の形態において説明した16点HyGTと同様に、８×８サブブロック単位のセカンダリ変換や逆セカンダリ変換において、画像とその画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換し、その１次元のベクトルに対して複数回の行列積よりなる行列演算を行うようにする。
【０４４５】
例えば、非特許文献３に記載の64点HyGTとその逆変換である64点逆HyGTに、第５の実施の形態において説明した2N点HyGTおよび2N点逆HyGTを適用することにより（Ｎ＝６）、６つの直交行列に分解されたセパラブルな直交変換を用いてそのセカンダリ変換や逆セカンダリ変換を行うことができる。
【０４４６】
この場合の64点HyGTおよび64点逆HyGTを表す行列表現は、上述した式（５６）および式（５７）において、N=6とすればよい。つまり、これらの行列表現は、以下の式（６５）および式（６６）のように表すことができる。なお、式（５６）および式（５７）における直交行列Fi(i=1,…,6)は、式（３３）に示す回転行列Gi,j(j=1,…,16)を対角成分を有し、それ以外の要素が０である疎な64×64の行列であり、置換行列Pi(i=1,…,6)は、図３９に示す疑似コード５２１においてN=6として実行することで得られる置換δi(i=1,…,6)に対応する64×64の行列である。
【０４４７】
R = (P6T・F6・P6)・(P5T・F5・P5)・(P4T・F4・P4)・
(P3T・F3・P3)・(P2T・F2・P2)・(P1T・F1・P1)
・・・（６５）
R-1 =((P6T・F6・P6)・(P5T・F5・P5)・(P4T・F4・P4)・
(P3T・F3・P3)・(P2T・F2・P2)・(P1T・F1・P1))-1
=(P1T・F1T・P1)・(P2T・F2T・P2)・(P3T・F3T・P3)・
(P4T・F4T・P4)・(P5T・F5T・P5)・(P6T・F6T・P6)
・・・（６６）
【０４４８】
非特許文献３に記載の非セパラブルな64点HyGTベースセカンダリ変換の場合と、以上のように行列分解したセパラブルな64点HyGTベースのセカンダリ変換の場合とで、乗算と加算の処理数を比較した結果を図４８のＡの表に示す。図４８のＡの表に示されるように、行列分解することにより、明らかに、乗算や加算の処理数を低減することができる。
【０４４９】
また、非特許文献３に記載の非セパラブルな64HyGTベースのセカンダリ変換の場合と、以上のように行列分解したセパラブルな64点HyGTベースのセカンダリ変換の場合とで、セカンダリ変換の行列の情報量（１変換当たり）と、その行列を保持するのに必要なメモリサイズを比較した結果を図４８のＢの表に示す。行列分解することにより、行列分解した各直交変換の疎行列の性質および係数の対称性を利用して、セカンダリ変換として保持する係数の数を低減することができる。したがって、図４８のＢの表に示されるように、明らかに、セカンダリ変換の行列の情報量を大幅に低減することができ、必要なメモリサイズの増大を抑制することができる。つまり、符号化の負荷の増大を抑制することができる。
【０４５０】
＜７．第７の実施の形態＞
＜CU,PU、およびTUの形状＞
図４９は、CU,PU、およびTUの形状について説明する図である。本技術を適用する場合のCU,PU、およびTUとして、H. Huang, K. Zhang, Y.-W. Huang, S. Lei, "EE2.1: Quadtree plus binary tree structure integration with JEM tools", JVET-C0024, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 3rd Meeting: Geneva, CH, from 2016-05-26 to 2016-06-01 2016（以下、非特許文献４とも称する）に記載されているQTBT(Quad tree plus binary tree)のCU,PU、およびTUを適用することができる。
【０４５１】
つまり、CUのブロック分割において、図４９に示される例のように、１つのブロックを４（=2x2）個だけでなく、２（=1x2,2x1）個のサブブロックにも分割することができる。即ち、この場合、CUのブロック分割は、１つのブロックを４個または２個のサブブロックへの分割を再帰的に繰り返すことにより行われ、結果として４分木（Quad-Tree）状または水平方向もしくは垂直方向の２分木（Binary-Tree）状のツリー構造が形成される。図４９において、LCU５５０の中の白地の四角で示されるCU５５１が、４分木状に分割されたCUであり、斜線模様の四角で示されるCU５５２が、２分木状に分割されたCUである。
【０４５２】
その結果、CUの形状は、正方形だけでなく、長方形である可能性がある。例えば、LCUサイズが128x128である場合、CUのサイズ（水平方向のサイズｗ×垂直方向のサイズｈ）は、図４９に示すように、128x128、64x64、32x32、16x16、8x8、4x4といった正方形のサイズだけでなく、128x64、128x32、128x16、128x8、128x4、64x128、32x128、16x128、8x128、4x128、64x32、64x16、64x8、64x4、32x64、16x64、8x64、4x64、32x16、32x8、32x4、16x32、8x32、4x32、16x8、16x4、8x16、4x16、 8x4、4x8といった長方形のサイズである可能性がある。またこの場合、PUとTUは、CUと同一である。すなわち、変換ブロックの形状は、CU同様、正方形だけでなく、長方形となりうる。
【０４５３】
＜セカンダリ変換部＞
このようなブロック（CU,PU、およびTU）を適用する場合も、画像符号化装置１００は、第３の実施の形態の場合と基本的に同様の構成を有することができる。すなわち、画像符号化装置１００は、例えば図７に示されるような構成を有し、変換部１１２は、例えば図２６に示されるような構成を有する。ただし、この場合、セカンダリ変換部１３２は、例えば図５０に示されるような構成を有する。
【０４５４】
つまり、この場合、セカンダリ変換部１３２は、図２６のラスタライズ部１４１、スケーリング部１４３、および行列化部１４４を有するが、図２６のセカンダリ変換選択部１４６の代わりに図５０のセカンダリ変換選択部５６１を有し、図２６の行列演算部４２１の代わりに図５０の行列演算部５６２を有する。なお、この場合、図２６の場合と同様にクリップ処理部１４５は省略してもよい。
【０４５５】
ラスタライズ部１４１は、スキャン識別子scanIdxによって指定される変換係数のスキャン方法に基づいて、Ｎ個の要素からなるサブグループ単位毎に、プライマリ変換部１３１から供給されるプライマリ変換係数Coeff_Pを１×Ｎ次元のベクトルX1dへ変換する。なお、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeのいずれか一方が４である場合、４×４サブブロックをサブグループとする。この場合、Ｎ＝１６である。これに対して、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeのいずれとも８以上である場合、８×８サブブロックをサブグループとする。この場合、Ｎ＝６４である。ラスタライズ部１４１は、得られたベクトルX1dを行列演算部５６２に供給する。なお、サブグループのサイズ（要素数）を示すNは、例えば以下の式（６７）に従って決定される。また、式（６７）の代わりに、各サイズの対数値を用いて以下の式（６８）に従って決定するようにしてもよい。
【０４５６】
N = min(TBHSize, TBWSize) == 4 ? 16 : 64
・・・（６７）
N = min(log2TBHSize, log2TBWSize) == 2 ? 16 : 64
・・・（６８）
【０４５７】
セカンダリ変換選択部５６１は、セカンダリ変換識別子st_idxと、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeで導出されるサブグループのサイズＮによって指定されるセカンダリ変換の行列Ｒを、セカンダリ変換選択部１４６の内部メモリ（不図示）より読み出し、行列演算部５６２に供給する。例えば、サブグループのサイズＮがＮ＝１６(４×４サブブロック)の場合、セカンダリ変換識別子st_idxに対応する行列分解された16点HyGTの変換行列Ｒが選択される。また、サブグループのサイズＮがＮ＝６４（８×８サブブロック）の場合、セカンダリ変換識別子st_idxに対応する行列分解された64点HyGTの変換行列Ｒが選択される。
【０４５８】
なお、セカンダリ変換選択部５６１が、セカンダリ変換識別子st_idxおよびイントラ予測モード情報IPinfo（例えば、予測モード番号）に応じて、サブグループのサイズ別にセカンダリ変換Ｒを選択するようにしてもよい。また、セカンダリ変換選択部５６１が、イントラ予測モード情報IPinfoの代わりに、動き予測情報MVinfoおよびセカンダリ変換識別子st_idxに応じて、変換Ｒを選択するようにしてもよい。
【０４５９】
行列演算部５６２は、16点HyGT部４２１および64点HyGT部５６３を有する。行列演算部５６２は、サブグループ毎に、１×Ｎ次元ベクトルX1d(=X0)およびセカンダリ変換Ｒの行列を、16点HyGT部４２１または64点HyGT部５６３に供給する。より具体的には、サブグループのサイズＮが１６の場合（セカンダリ変換の処理単位が４×４サブブロック）、行列演算部５６２は、１×16次元ベクトルX1d(=X0)および16点HyGTの変換行列Ｒを16点HyGT部４２１に供給する。また、サブグループのサイズＮが６４の場合（セカンダリ変換の処理単位が８×８サブブロック）、行列演算部５６２は、１×64次元ベクトルX1d(=X0)および64点HyGTの変換行列Ｒを64点HyGT部５６３に供給する。
【０４６０】
１×16次元ベクトルX1d(=X0)および16点HyGTの変換行列Ｒを供給された場合、16点HyGT部４２１は、変換行列Ｒと１×16次元ベクトルX1dとの行列積Y1dを導出し、スケーリング部１４３に供給する。また、１×64次元ベクトルX1d(=X0)および64点HyGTの変換行列Ｒを供給された場合、64点HyGT部５６３は、変換行列Ｒと１×64次元ベクトルX1dとの行列積Y1dを導出し、スケーリング部１４３に供給する。
【０４６１】
スケーリング部１４３は、行列演算部５６２から供給される信号Y1dのノルムを正規化し、正規化後の信号Z1dを求める。スケーリング部１４３は、得られた信号Z1dを行列化部１４４に供給する。行列化部１４４は、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、ノルム正規化後の１×Ｎ次元のベクトルZ1dを、サブグループのサイズＮに対応するＭ×Ｍサブブロック（Ｍ×Ｍ正方行列）へ変換する。例えば、サブグループのサイズＮ＝１６の場合、１×16次元のベクトルZ1dを４×４サブブロック（４×４正方行列）へ変換する。また、例えば、サブグループのサイズＮ＝６４の場合、１×64次元のベクトルZ1dを８×８サブブロック（８×８正方行列）へ変換する。行列化部１４４は、このようにして得られた変換係数Coeffを外部へ出力する。
【０４６２】
以上のように、行列演算部５６２は、16点HyGTまたは64点HyGTベースのセカンダリ変換の行列を行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、セカンダリ変換の演算量（乗算・加算）を低減することができる。また、セカンダリ変換として保持する係数の数を低減させることができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０４６３】
＜64点HyGT部＞
図５１は、64点HyGT部５６３の主な構成例を示すブロック図である。図５１に示されるように、64点HyGT部５６３は、回転操作部５６４−１、回転操作部５６４−２、回転操作部５６４−３、回転操作部５６４−４、回転操作部５６４−５、および回転操作部５６４−６を有する。なお、以下において回転操作部５６４−１乃至回転操作部５６４−６を互いに区別して説明する必要が無い場合、回転操作部５６４と称する。
【０４６４】
回転操作部５６４−１は、以下の式（６９）に示されるように、64点HyGT部５６３の外部（セカンダリ変換選択部５６１（図５０））より供給される64点HyGTの行列Ｒを行列分解して得られる１番目の操作に対応する直交行列T1と、64点HyGT部５６３の外部（ラスタライズ部１４１（図５０））から供給される１×64行ベクトルX0(=X1d)の転置行列との行列積X1（１×64の行ベクトル）を求める。回転操作部５６４−１は、その行列積X1を回転操作部５６４−２に供給する。
【０４６５】
X1T＝T1・X0T＝P1T・F1・P1・X0T
・・・（６９）
【０４６６】
回転操作部５６４−２は、以下の式（７０）に示されるように、64点HyGT部５６３の外部（セカンダリ変換選択部５６１（図５０））より供給される64点HyGTの行列Ｒを行列分解して得られる２番目の操作に対応する直交行列T2と、回転操作部５６４−１から供給される１×64行ベクトルX1の転置行列との行列積X2（１×64の行ベクトル）を求める。回転操作部５６４−２は、その行列積X2を回転操作部５６４−３に供給する。
【０４６７】
X2T＝T2・X1T＝P2T・F2・P2・X1T
・・・（７０）
【０４６８】
回転操作部５６４−３は、以下の式（７１）に示されるように、64点HyGT部５６３の外部（セカンダリ変換選択部５６１（図５０））より供給される64点HyGTの行列Ｒを行列分解して得られる３番目の操作に対応する直交行列T3と、外部から供給される１×64行ベクトルX2の転置行列との行列積X3（１×64の行ベクトル）を求める。回転操作部５６４−３は、その行列積X3を回転操作部５６４−４に供給する。
【０４６９】
X3T＝T3・X2T＝P3T・F3・P3・X2T
・・・（７１）
【０４７０】
回転操作部５６４−４は、以下の式（７２）に示されるように、64点HyGT部５６３の外部（セカンダリ変換選択部５６１（図５０））より供給される64点HyGTの行列Ｒを行列分解して得られる４番目の操作に対応する直交行列T4と、外部から供給される１×64行ベクトルX3の転置行列との行列積X4（１×64の行ベクトル）を求める。回転操作部５６４−４は、その行列積X4を回転操作部５６４−５に供給する。
【０４７１】
X4T＝T4・X3T＝P4T・F4・P4・X3T
・・・（７２）
【０４７２】
回転操作部５６４−５は、以下の式（７３）に示されるように、64点HyGT部５６３の外部（セカンダリ変換選択部５６１（図５０））より供給される64点HyGTの行列Ｒを行列分解して得られる５番目の操作に対応する直交行列T5と、外部から供給される１×64行ベクトルX4の転置行列との行列積X5（１×64の行ベクトル）を求める。回転操作部５６４−５は、その行列積X5を回転操作部５６４−６に供給する。
【０４７３】
X5T＝T5・X4T＝P5T・F5・P5・X4T
・・・（７３）
【０４７４】
回転操作部５６４−６は、以下の式（７４）に示されるように、64点HyGT部５６３の外部（セカンダリ変換選択部５６１（図５０））より供給される64点HyGTの行列Ｒを行列分解して得られる６番目の操作に対応する直交行列T6と、外部から供給される１×64行ベクトルX5の転置行列との行列積X6（１×64の行ベクトル）を求める。回転操作部５６４−６は、その行列積X6（=Y1d）を64点HyGT部５６３の外部（スケーリング部１４３（図５０））に供給する。
【０４７５】
X6T＝T6・X5T＝P6T・F6・P6・X5T
・・・（７４）
【０４７６】
以上のように、６個の回転操作部５６４は、互いに同様の変換処理を行う。つまり、64点HyGT部５６３は、64点HyGTの行列Rを行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、64点HyGTによる変換の演算量（乗算・加算）を低減することができる。また、64点HyGTの変換として保持する係数の数を低減させることができ、64点HyGTの行列Rを保持するのに必要なメモリサイズを低減させることができる。
【０４７７】
＜変換処理の流れ＞
次に、図９のステップＳ１０４において実行される変換処理の流れの例を、図５２のフローチャートを参照して説明する。
【０４７８】
この場合も変換処理は、図２８のフローチャートを参照して説明した場合と基本的に同様の流れで行われる。つまり、変換処理が開始されると、ステップＳ５４１乃至ステップＳ５４９の各処理は、図２８のステップＳ４０１乃至ステップＳ４０９の各処理と基本的に同様に実行される。
【０４７９】
なお、ステップＳ５４３の処理において、セカンダリ変換の行列Ｒは、セカンダリ変換識別子st_idxと、変換ブロックの縦サイズTBHSize及び横サイズTBWSizeで導出されるサブグループのサイズＮによって選択される。また、ステップＳ５４４の処理において、ステップＳ４０４におけるサブブロックを、サブグループと読み替えて実行される。さらに、ステップＳ５４５の処理において、ステップＳ４０５における１×１６次元のベクトルX1dを、1×Ｎ次元のベクトルX1d(N=16, 64)に読み替えて実行される。また、ステップＳ５４６の処理において、行列演算は、セカンダリ変換の行列Ｒを上述したように行列分解して行われる。さらに、ステップＳ５４９の処理において、ステップＳ４０９におけるサブブロックをサブグループと読み替えて実行される。
【０４８０】
なお、変換処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップＳ５４２においてセカンダリ変換識別子st_idx＝０であると判定された場合、サブグループのサイズＮに対応するＮ×Ｎの単位行列がセカンダリ変換Ｒとして選択され、ステップＳ５４４乃至ステップＳ５４９の各処理が実行されるようにしてもよい。
【０４８１】
以上のように各処理を実行することにより、セカンダリ変換の演算量（乗算・加算）を低減することができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０４８２】
＜行列演算処理の流れ＞
次に、図５３のフローチャートを参照して、図５２のステップＳ５４６において実行される、64点HyGTの行列演算処理の流れの例を説明する。
【０４８３】
64点HyGTの行列演算処理が開始されると、ステップＳ５６１において、回転操作部５６４−１は、直交行列T1(=P1T・F1・P1=F1)と行ベクトルX0との行列積X1を求める。
【０４８４】
ステップＳ５６２において、回転操作部５６４−２は、直交行列T2(=P2T・F2・P2)と行列積X1との行列積X2を求める。
【０４８５】
ステップＳ５６３において、回転操作部５６４−３は、直交行列T3(=P3T・F3・P3)と行列積X2との行列積X3を求める。
【０４８６】
ステップＳ５６４において、回転操作部５６４−４は、直交行列T4(=P4T・F4・P4)と行列積X3との行列積X4を求める。
【０４８７】
ステップＳ５６５において、回転操作部５６４−５は、直交行列T5(=P5T・F5・P5)と行列積X4との行列積X5を求める。
【０４８８】
ステップＳ５６６において、回転操作部５６４−６は、直交行列T6(=P6T・F6・P6)と行列積X5との行列積X6(=Y1d)を求める。ステップＳ５６６の処理が終了すると、処理は図５２に戻る。
【０４８９】
以上のように各処理を実行することにより、64点HyGTによる変換の演算量（乗算・加算）を低減することができる。そして、以上のように各処理を実行することにより、セカンダリ変換の演算量（乗算・加算）を低減することができ、セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０４９０】
＜逆セカンダリ変換部＞
次に画像符号化装置１００に対応する画像復号装置２００について説明する。画像復号装置２００は、図４９の例のような、４分木（Quad-Tree）状または水平方向もしくは垂直方向の２分木（Binary-Tree）状のツリー構造のブロック（CU,PU、およびTU）を適用する場合も、第３の実施の形態の場合と基本的に同様の構成を有することができる。すなわち、画像復号装置２００は、例えば図１１に示されるような構成を有し、逆変換部２１３は、例えば図３０に示されるような構成を有する。ただし、この場合、逆セカンダリ変換部２３１は、例えば図５４に示されるような構成を有する。
【０４９１】
つまり、この場合、逆セカンダリ変換部２３１は、図３０のラスタライズ部２４１、スケーリング部２４３、および行列化部２４４を有するが、図３０の逆セカンダリ変換選択部２４６の代わりに図５４の逆セカンダリ変換選択部５７１を有し、図３０の行列演算部４５１の代わりに図５４の行列演算部５７２を有する。なお、この場合、図３０の場合と同様にクリップ処理部１４５は省略してもよい。
【０４９２】
ラスタライズ部２４１は、外部から供給されるスキャン識別子scanIdxによって指定される変換係数のスキャン方法に基づいて、Ｎ個の要素からなるサブグループ単位毎に、逆量子化部２１２（図１１）から供給される変換係数Coeff_IQを１×Ｎ次元のベクトルX1dに変換する。ラスタライズ部２４１は、得られたベクトルX1dを行列演算部５７２に供給する。なお、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeのいずれか一方が４の場合、４×４サブブロックをサブグループとする。この場合、Ｎ＝１６である。これに対して、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeのいずれとも８以上の場合には、８×８サブブロックをサブグループとする。この場合、Ｎ＝６４である。ラスタライズ部２４１は、得られたベクトルX1dを行列演算部５７２に供給する。サブグループのサイズ（要素数）を示すNは、例えば上述の式(６７)によって決定される。また、式（６７）の代わりに、各サイズの対数値を用いて上述の式（６８）に従って決定するようにしてもよい。
【０４９３】
逆セカンダリ変換選択部５７１は、復号部２１１（図１１）から供給される、セカンダリ変換の内容に関する情報であるセカンダリ変換識別子st_idxと、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeで導出されるサブグループのサイズＮによって指定される逆セカンダリ変換の行列IR（＝RT）を、逆セカンダリ変換選択部５７１の内部メモリ（不図示）より読み出し、行列演算部５７２に供給する。例えば、サブグループのサイズＮがＮ＝１６(４×４サブブロック)の場合、セカンダリ変換識別子st_idxに対応する行列分解された16点逆HyGTの変換行列ＩＲが選択される。また、サブグループのサイズＮがＮ＝６４（８×８サブブロック）の場合、セカンダリ変換識別子st_idxに対応する行列分解された64点逆HyGTの変換行列ＩＲが選択される。
【０４９４】
なお、逆セカンダリ変換選択部５７１が、例えば、復号部２１１から供給されるセカンダリ変換識別子st_idxやイントラ予測モード情報IPinfo（例えば、イントラ予測モード番号）に応じて、サブグループのサイズ別に逆セカンダリ変換IR（＝RT）を選択するようにしてもよい。また、イントラ予測モード情報IPinfoの代わりに、動き予測情報MVinfoとセカンダリ変換識別子st_idxに応じて、逆変換IRが選択されるようにしてもよい。
【０４９５】
行列演算部５７２は、16点逆HyGT部４５１および64点逆HyGT部５７３を有する。行列演算部５７２は、サブグループ毎に、１×Ｎ次元のベクトルX1d(=X0)および逆セカンダリ変換IR（＝RT）の行列を、16点逆HyGT部４５１または64点逆HyGT部５７３に供給する。より具体的には、サブグループのサイズＮが１６の場合（逆セカンダリ変換の処理単位が４×４サブブロック）、行列演算部５７２は、１×16次元ベクトルX1d(=X0)および16点逆HyGTの変換行列ＩＲを16点逆HyGT部４５１に供給する。また、サブグループのサイズＮが６４の場合（逆セカンダリ変換の処理単位が８×８サブブロック）、行列演算部５７２は、１×64次元ベクトルX1d(=X0)および64点逆HyGTの変換行列ＩＲを64点逆HyGT部５７３に供給する。
【０４９６】
１×16次元ベクトルX1d(=X0)および16点逆HyGTの変換行列ＩＲを供給された場合、16点逆HyGT部４５１は、変換行列ＩＲと１×16次元ベクトルX1dとの行列積Y1dを導出し、スケーリング部２４３に供給する。また、１×64次元ベクトルX1d(=X0)および64点逆HyGTの変換行列ＩＲを供給された場合、64点逆HyGT部５７３は、変換行列ＩＲと１×64次元ベクトルX1dとの行列積Y1dを導出し、スケーリング部２４３に供給する。
【０４９７】
スケーリング部２４３は、行列演算部５７２から供給される信号Y1dのノルムを正規化し、正規化後の信号Z1dを求める。スケーリング部２４３は、得られた信号Z1dを行列化部２４４に供給する。行列化部２４４は、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、ノルム正規化後の１×Ｎ次元のベクトルZ1dを、サブグループのサイズＮに対応するＭ×Ｍサブブロック（Ｍ×Ｍ正方行列）へ変換する。例えば、サブグループのサイズＮ＝１６の場合、１×１６次元のベクトルZ1dを４×４サブブロック（４×４正方行列）へ変換する。また、サブグループのサイズＮ＝６４の場合、１×６４次元のベクトルZ1dを８×８サブブロック（８×８正方行列）へ変換する。 行列化部２４４は、得られた変換係数Coeffを外部へ出力する。
【０４９８】
以上のように、行列演算部５７２は、16点逆HyGTまたは64点逆HyGTベースの逆セカンダリ変換の行列を行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、逆セカンダリ変換の演算量（乗算・加算）を低減することができる。また、逆セカンダリ変換として保持する係数の数を低減させることができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０４９９】
＜64点逆HyGT部＞
図５５は、64点逆HyGT部５７３の主な構成例を示すブロック図である。図５５に示されるように、64点逆HyGT部５７３は、回転操作部５７４−１、回転操作部５７４−２、回転操作部５７４−３、回転操作部５７４−４、回転操作部５７４−５、および回転操作部５７４−６を有する。なお、以下において回転操作部５７４−１乃至回転操作部５７４−６を互いに区別して説明する必要が無い場合、回転操作部５７４と称する。
【０５００】
回転操作部５７４−１は、以下の式（７５）に示されるように、64点逆HyGT部５７３の外部（逆セカンダリ変換選択部５７１（図５４））より供給される64点逆HyGTの行列ＩＲを行列分解して得られる１番目の操作に対応する直交行列T6Tと、64点逆HyGT部５７３の外部（ラスタライズ部２４１（図５４））から供給される１×64行ベクトルX0(=X1d)の転置行列との行列積X1（１×64の行ベクトル）を求める。回転操作部５７４−１は、その行列積X1を回転操作部５７４−２に供給する。
X1T＝T6T・X0T＝P6T・F6T・P6・X0T
・・・（７５）
【０５０１】
回転操作部５７４−２は、以下の式（７６）に示されるように、64点逆HyGT部５７３の外部（逆セカンダリ変換選択部５７１（図５４））より供給される64点逆HyGTの行列ＩＲを行列分解して得られる２番目の操作に対応する直交行列T5Tと、回転操作部５７４−１から供給される１×64行ベクトルX1の転置行列との行列積X2（１×64の行ベクトル）を求める。回転操作部５７４−２は、その行列積X2を回転操作部５７４−３に供給する。
【０５０２】
X2T＝T5T・X1T＝P5T・F5T・P5・X1T
・・・（７６）
【０５０３】
回転操作部５７４−３は、以下の式（７７）に示されるように、64点逆HyGT部５７３の外部（逆セカンダリ変換選択部５７１（図５４））より供給される64点逆HyGTの行列ＩＲを行列分解して得られる３番目の操作に対応する直交行列T4Tと、回転操作部５７４−２から供給される１×64行ベクトルX2の転置行列との行列積X3（１×64の行ベクトル）を求める。回転操作部５７４−３は、その行列積X3を回転操作部５７４−４に供給する。
【０５０４】
X3T＝T4T・X3T＝P4T・F4T・P4・X3T
・・・（７７）
【０５０５】
回転操作部５７４−４は、以下の式（７８）に示されるように、64点逆HyGT部５７３の外部（逆セカンダリ変換選択部５７１（図５４））より供給される64点逆HyGTの行列ＩＲを行列分解して得られる４番目の操作に対応する直交行列T3Tと、回転操作部５７４−３から供給される１×64行ベクトルX3の転置行列との行列積X4（１×64の行ベクトル）を求める。回転操作部５７４−４は、その行列積X4を回転操作部５７４−５に供給する。
【０５０６】
X4T＝T3T・X3T＝P3T・F3T・P3・X4T
・・・（７８）
【０５０７】
回転操作部５７４−５は、以下の式（７９）に示されるように、64点逆HyGT部５７３の外部（逆セカンダリ変換選択部５７１（図５４））より供給される64点逆HyGTの行列ＩＲを行列分解して得られる５番目の操作に対応する直交行列T2Tと、回転操作部５７４−４から供給される１×64行ベクトルX4の転置行列との行列積X5（１×64の行ベクトル）を求める。回転操作部５７４−５は、その行列積X5を回転操作部５７４−６に供給する。
【０５０８】
X5T＝T2T・X4T＝P5T・F5T・P5・X4T
・・・（７９）
【０５０９】
回転操作部５７４−６は、以下の式（８０）に示されるように、64点逆HyGT部５７３の外部（逆セカンダリ変換選択部５７１（図５４））より供給される64点逆HyGTの行列ＩＲを行列分解して得られる６番目の操作に対応する直交行列T1Tと、回転操作部５７４−５から供給される１×64行ベクトルX5の転置行列との行列積X6（１×16の行ベクトル）を求める。回転操作部５７４−６は、その行列積X6（=Y1d）を64点逆HyGT部５７３の外部（スケーリング部２４３（図５４））に供給する。
【０５１０】
X6T＝T1T・X5T＝P1T・F1T・P1・X5T
・・・（８０）
【０５１１】
以上のように、６個の回転操作部５７４は、互いに同様の変換処理を行う。つまり、64点逆HyGT部５７３は、64点逆HyGTの行列IRを行列分解して行列演算を行い、行ベクトルX1dを行ベクトルY1dに変換するので、64点逆HyGTによる変換の演算量（乗算・加算）を低減することができる。また、64点逆HyGTの変換として保持する係数の数を低減させることができ、64点逆HyGTの行列IRを保持するのに必要なメモリサイズを低減させることができる。
【０５１２】
＜逆変換処理の流れ＞
次に、図１３のステップＳ２０３において実行される逆変換処理の流れの例を、図５６のフローチャートを参照して説明する。
【０５１３】
この場合も逆変換処理は、図３２のフローチャートを参照して説明した場合と基本的に同様の流れで行われる。つまり、逆変換処理が開始されると、ステップＳ５８１乃至ステップＳ５８９の各処理は、図３２のステップＳ４４１乃至ステップＳ４４９の各処理と基本的に同様に実行される。
【０５１４】
なお、ステップＳ５８２の処理において、逆セカンダリ変換の行列ＩＲは、セカンダリ変換識別子st_idxと、変換ブロックの縦サイズTBHSizeおよび横サイズTBWSizeで導出されるサブグループのサイズＮによって選択される。また、ステップＳ５８３の処理において、ステップＳ４４３におけるサブブロックを、サブグループと読み替えて実行される。さらに、ステップＳ５８４の処理において、ステップＳ４４４における１×１６次元のベクトルX1dを、1×Ｎ次元のベクトルX1d(N=16,64)に読み替えて実行される。また、ステップＳ５８５の処理において、行列演算は、逆セカンダリ変換の行列ＩＲを上述したように行列分解して行われる。さらに、ステップＳ５８８の処理において、ステップＳ４４８におけるサブブロックをサブグループと読み替えて実行される。
【０５１５】
なお、逆変換処理は、実施可能な範囲で、各ステップの処理順の入れ替えや、処理の内容を変更してよい。例えば、ステップＳ５８１においてセカンダリ変換識別子st_idx＝０であると判定された場合、サブグループのサイズＮに対応するＮ×Ｎの単位行列が逆セカンダリ変換ＩＲとして選択され、ステップＳ５８２乃至ステップＳ５８９の各処理が実行されるようにしてもよい。
【０５１６】
以上のように各処理を実行することにより、逆セカンダリ変換の演算量（乗算・加算）を低減することができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０５１７】
＜行列演算処理の流れ＞
次に、図５７のフローチャートを参照して、図５６のステップＳ５８５において実行される64点逆HyGTの行列演算処理の流れの例を説明する。
【０５１８】
64点逆HyGTの行列演算処理が開始されると、ステップＳ６０１において、回転操作部５７４−１は、直交行列T6T(=P6T・F6T・P6)と行ベクトルX0との行列積X1を求める。
【０５１９】
ステップＳ６０２において、回転操作部５７４−２は、直交行列T5T(=P5T・F5T・P5)と行列積X1との行列積X2を求める。
【０５２０】
ステップＳ６０３において、回転操作部５７４−３は、直交行列T4T(=P4T・F4T・P4)と行列積X2との行列積X3を求める。
【０５２１】
ステップＳ６０４において、回転操作部５７４−４は、直交行列T3T(=P3T・F3T・P3)と行列積X3との行列積X4を求める。
【０５２２】
ステップＳ６０５において、回転操作部５７４−５は、直交行列T2T(=P2T・F2T・P2)と行列積X4との行列積X5を求める。
【０５２３】
ステップＳ６０６において、回転操作部５７４−６は、直交行列T1T(=P1T・F1T・P1=F1T)と行列積X5との行列積X6(=Y1d)を求める。ステップＳ６０６の処理が終了すると、処理は図５６に戻る。
【０５２４】
以上のように各処理を実行することにより、64点逆HyGTによる変換の演算量（乗算・加算）を低減することができる。そして、以上のように各処理を実行することにより、逆セカンダリ変換の演算量（乗算・加算）を低減することができ、逆セカンダリ変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０５２５】
＜８．第８の実施の形態＞
＜セカンダリ変換の実行＞
セカンダリ変換は、図５８に示されるように、４×４サブブロック単位またはサブグループ（８×８サブブロック）単位で実行される。図５８のＡは変換ブロックが正方形の場合の例を示し、図５８のＢは変換ブロックが長方形（TBHSize < TBWSize）の場合の例を示し、図５８のＣは変換ブロックが長方形（TBHSize > TBWSize）の場合の例を示している。図５８において、実線の四角がサブグループ（８×８サブブロック）を示し、点線で区切られた領域が４×４サブブロックを示している。そして斜線模様で示される領域がセカンダリ変換が行われる領域を示している。
【０５２６】
セカンダリ変換は、図５８の例のように、変換ブロック全体について行うこともできるが、図５９の例のように、低周波成分に対してのみ行うこともできる。図５８の場合と同様に、図５９のＡは変換ブロックが正方形の場合の例を示し、図５９のＢは変換ブロックが長方形（TBHSize < TBWSize）の場合の例を示し、図５９のＣは変換ブロックが長方形（TBHSize > TBWSize）の場合の例を示している。図５９において、実線の四角がサブグループ（８×８サブブロック）を示し、点線で区切られた領域が４×４サブブロックを示している。そして斜線模様で示される領域がセカンダリ変換が行われる領域を示している。
【０５２７】
従来、低周波成分に対してのみ行う場合、セカンダリ変換は、図５９に示されるように、変換ブロックの左上の、縦２つ×横２つの４つの４×４サブブロックに対して行われていた（図５９の斜線部分）。これは、変換ブロックが正方形の場合（図５９のＡ）も、長方形（TBHSize < TBWSize）の場合（図５９のＢ）も、長方形（TBHSize > TBWSize）の場合（図５９のＣ）も同様である。
【０５２８】
しかしながら、この場合のセカンダリ変換を行う領域（斜線部分）は、復号処理順と一致していないので、この領域内の全てのサブブロックが復号されるまでセカンダリ変換を行うことができなかった。つまり、不要な待機時間が生じ、その分、処理時間が増大するおそれがあった。
【０５２９】
そこで、低周波成分に対してのみセカンダリ変換を行う際に、そのセカンダリ変換を行うサブブロックをスキャン順に応じて設定するようにしてもよい。例えば、図５９に示されるように４つの４×４サブブロックに対してセカンダリ変換を行う場合、scanIdxで示されるスキャン順に従って最初に復号される４つの４×４サブブロックに対してセカンダリ変換を行うようにしてもよい。
【０５３０】
例えば、scanIdxで示されるスキャン順が図６０のような斜め方向の場合、セカンダリ変換を、変換ブロックの左上端の４×４サブブロック、上から２段目の左端の４×４サブブロック、最上段の左から２番目の４×４サブブロック、上から３段目の左端の４×４サブブロックに対して、この順に行うようにしてもよい。図５８の場合と同様に、図６０のＡは変換ブロックが正方形の場合の例を示し、図６０のＢは変換ブロックが長方形（TBHSize < TBWSize）の場合の例を示し、図６０のＣは変換ブロックが長方形（TBHSize > TBWSize）の場合の例を示している。図６０において、実線の四角がサブグループ（８×８サブブロック）を示し、点線で区切られた領域が４×４サブブロックを示している。また、矢印は、scanIdxで指定されるスキャン順を示している。そして斜線模様で示される領域がセカンダリ変換が行われる領域を示している。図６０のＡの場合も、図６０のＢの場合も、図６０のＣの場合も、セカンダリ変換は、上述の４つの４×４サブブロック（変換ブロック内で最初に復号される４つの４×４サブブロック）に対して行われる。
【０５３１】
例えば、scanIdxで示されるスキャン順が図６１のような水平方向の場合、セカンダリ変換を、変換ブロックの左上端の４×４サブブロック、最上段の左から２番目の４×４サブブロック、最上段の左から３番目の４×４サブブロック、最上段の左から４番目の４×４サブブロックに対して、この順に行うようにしてもよい。図５８の場合と同様に、図６１のＡは変換ブロックが正方形の場合の例を示し、図６１のＢは変換ブロックが長方形（TBHSize < TBWSize）の場合の例を示し、図６１のＣは変換ブロックが長方形（TBHSize > TBWSize）の場合の例を示している。図６１において、実線の四角がサブグループ（８×８サブブロック）を示し、点線で区切られた領域が４×４サブブロックを示している。また、矢印は、scanIdxで指定されるスキャン順を示している。そして斜線模様で示される領域がセカンダリ変換が行われる領域を示している。図６１のＡの場合も、図６１のＢの場合も、図６１のＣの場合も、セカンダリ変換は、上述の４つの４×４サブブロック（変換ブロック内で最初に復号される４つの４×４サブブロック）に対して行われる。
【０５３２】
例えば、scanIdxで示されるスキャン順が図６２のような垂直方向の場合、セカンダリ変換を、変換ブロックの左上端の４×４サブブロック、上から２段目の左端の４×４サブブロック、上から３段目の左端の４×４サブブロック、上から４段目の左端の４×４サブブロックに対して、この順に行うようにしてもよい。図５８の場合と同様に、図６２のＡは変換ブロックが正方形の場合の例を示し、図６２のＢは変換ブロックが長方形（TBHSize < TBWSize）の場合の例を示し、図６２のＣは変換ブロックが長方形（TBHSize > TBWSize）の場合の例を示している。図６２において、実線の四角がサブグループ（８×８サブブロック）を示し、点線で区切られた領域が４×４サブブロックを示している。また、矢印は、scanIdxで指定されるスキャン順を示している。そして斜線模様で示される領域がセカンダリ変換が行われる領域を示している。図６２のＡの場合も、図６２のＢの場合も、図６２のＣの場合も、セカンダリ変換は、上述の４つの４×４サブブロック（変換ブロック内で最初に復号される４つの４×４サブブロック）に対して行われる。
【０５３３】
図６０乃至図６２の例のようにスキャン順に応じた４×４サブブロックをセカンダリ変換することにより、復号された４×４サブブロックを順次セカンダリ変換することができ、処理時間の増大を抑制することができる。なお、このような処理順は、任意の方法のセカンダリ変換に適用することができる。例えば、従来のように非セパラブルなHyGTを用いたセカンダリ変換にも、上述したようなセパラブルなHyGTを用いたセカンダリ変換にも適用することができる。
【０５３４】
＜９．第９の実施の形態＞
＜ＳＤＴ＞
非特許文献１には、プライマリ変換（既存のDCT（Discrete Cosine Transform）やDST（Discrete Sine Transform）などによる直交変換）を行った後に、さらに、エネルギーコンパクションを高める（低域に変換係数を集中させる）ために、４×４サブブロック単位で、16点KLT（Karhunen-Loeve transform）ベースの非セパラブルなセカンダリ変換を適用することが開示されている。また、非特許文献１には、注目する符号化対象ブロックの周辺の局所復号画像と類似する複数のパッチを、現フレームの復号済画素領域を探索して見つけ、そのパッチ群からKLTベースの直交変換を導出し、そのKLTベースの直交変換を符号化対象ブロックに対して適用するSDT（Signal Dependent Transform）という符号化モードが開示されている。
【０５３５】
非特許文献２には、16点HyGTベースの非セパラブルなセカンダリ変換を適用することが開示されている。非特許文献３には、非特許文献２に記載の４×４サブブロック単位で行う16点HyGTベースの非セパラブルなセカンダリ変換に加えて、８×８サブブロック単位で行う64点HyGTベースの非セパラブルなセカンダリ変換を適用することが開示されている。
【０５３６】
しかしながら、非特許文献３に記載の64点HyGTベースのセカンダリ変換は、非分解（非セパラブル）であるため、演算量が多かった。また、イントラ予測モードのクラス数と各クラスに対応するセカンダリ変換の数だけ、セカンダリ変換の行列を有しており、セカンダリ変換の行列を保持するメモリサイズが巨大であった。非特許文献３では、イントラ予測モードのクラス数=35であり、変換ブロックのサイズ数=2であり、各クラスに対するセカンダリ変換の数=5であり、35*5=175の行列が各変換ブロックサイズ毎に存在する。例えば、各行列の要素を9bit精度で保持する場合、全16点HyGTベースのセカンダリ変換の行列を保持に要するメモリサイズと全64点HyGTベースのセカンダリ変換の行列を保持に要するメモリサイズはそれぞれ以下の式（８１）および式（８２）のようになる。
【０５３７】
全16点HyGTベースのセカンダリ変換の行列を保持に要するメモリサイズ
= 9bit * 16*16 * 175  = 403200 bits = 50400 bytes = 49.21875KB
・・・（８１）
全64点HyGTベースのセカンダリ変換の行列を保持に要するメモリサイズ
= 9bit * 64*64 * 175  = 6451200 bits = 806400 bytes = 787.5KB
・・・（８２）
【０５３８】
つまり合計836.71875KBの容量が必要であった。
【０５３９】
また、KLTベースで直交変換を求める場合、非常に演算複雑度が高く、処理の負荷が増大するおそれがった。そのため、回路規模やコストが増大するおそれがった。例えば、N点のKLTを求める際、行列分解（Matrix Decomposition）を解くのに必要な演算複雑度のオーダーはO(N^3)である。例えば、N=16とすると、O(16**3)=O(4096)となる。
【０５４０】
そこで、2**N点HyGTベースの直交変換をN個の直交行列とN-1個の置換行列とに分解するセパラブルなHyGTベースの直交変換を、KLTベースのセカンダリ変換/逆セカンダリ変換（64点）およびSDTにおける直交変換/逆直交変換（2**N点）として適用する。このようにすることにより、行列分解した各直交変換の疎行列の性質、及び係数の対称性を利用し、直交変換としての演算量を低減することができるので、KLTベースの直交変換と比較して、直交変換/逆直交変換に必要な演算量（乗算、加算）を低減させることができる。
【０５４１】
また、2**N点HyGTの変換基底の導出は、2点HyGTへの問題を細分化することができ、行列分解の演算複雑度を低減させることができる。したがって、KLTの変換基底導出方法に比べて大幅に演算量を低減させることができる。例えば、16点HyGTベースの直交変換の場合、行列分解に必要な演算複雑度のオーダーはO(2**3) * 8* 4 = O (8) * 32 = O(256)となる。したがって、16点KLTベースの直交変換の場合の行列分解にかかる演算複雑度O(4096)と比較して、同等のエナジーコンパクションを維持しつつ、適応直交変換の変換基底を導出するのに必要な演算複雑度をO(256)に抑えることができる。
【０５４２】
一般的に、2**N点のKLTベースの直交変換の導出には、O((2**N)**3)の演算複雑度が必要であるのに対して、2**N点のHyGTベースの直交変換の導出には、O(2**3)*(2**N/2)*N = O(4*N*2**N)となり、劇的に演算量を低減させることができる。
【０５４３】
＜シンタックス＞
まず、シンタックスにおいてSDTを選択することができるようにする。例えば、シーケンスパラメータセット（sequence parameter set）において、図６３に示される斜線模様の行のように、SDT用に、sdt_enabled_flagをセットすることができるようにする。sdt_enabled_flagは、SDTを選択可能であるか否かを示すフラグである。sdt_enabled_flagが真（例えば「１」）の場合、そのシーケンス内において、SDTの選択が可能である。また、sdt_enabled_flagが偽（例えば「０」）の場合、SDTを選択することができない。
【０５４４】
そして、Residual Codingにおいて、図６４に示される斜線模様の行のように、そのsdt_enabled_flagの値に応じて、SDTAvailableFlagをセットすることができるようにする。また、そのSDTAvailableFlagの値に応じてsdt_flagをセットすることができるようにする。
【０５４５】
SDTAvailableFlagは、sdt_flagを復号するか否かを示すフラグである。SDTAvailableFlagが真（例えば「１」）の場合、sdt_flagの復号が行われる。つまり、この場合、sdt_flagが存在する（セットされている）。また、SDTAvailableFlagが偽（例えば「０」）の場合、sdt_flagの復号が省略される。つまり、その場合、sdt_flagは存在しない（セットされていない）。例えば、図６４の場合、sdt_enabled_flagが真であるとき、SDTAvailableFlagがセットされる。その際、SDTAvailableFlagは、インター予測であり、輝度信号であり、ブロックが所定の上限サイズより小さな正方形であり、変換（逆変換）をスキップするか否かを示すtransform_skip_flagが偽であり、かつ、変換（逆変換）および量子化（逆量子化）をスキップするか否かを示すcu_transquant_bypass_flagが偽である場合、真（例えば「１」）にセットされ、それ以外の場合、偽（例えば「０」）にセットされる。
【０５４６】
sdt_flagは、セカンダリ変換としてSDTを選択するか否かを示すフラグである。sdt_flagが真（例えば「１」）の場合、SDTが選択される。逆に、sdt_flagが偽（例えば「０」）の場合、SDTが選択されない。例えば、図６４の場合、SDTAvailableFlagが真のとき、sdt_flagがセットされる。
【０５４７】
なお、SDTは、イントラ予測においても選択することができるようにしてもよい。例えば、シーケンスパラメータセット（sequence parameter set）において、図６５に示される斜線模様の行のように、SDT用に、intra_sdt_enabled_flagとinter_sdt_enabled_flagとをセットすることができるようにする。intra_sdt_enabled_flagは、イントラ予測の際にSDTを選択可能であるか否かを示すフラグである。intra_sdt_enabled_flagが真（例えば「１」）の場合、そのシーケンス内のイントラ予測が行われるブロックにおいてSDTの選択が可能である。また、intra_sdt_enabled_flagが偽（例えば「０」）の場合、そのシーケンス内のイントラ予測が行われるブロックにおいてSDTを選択することができない。
【０５４８】
また、inter_sdt_enabled_flagは、インター予測の際にSDTを選択可能であるか否かを示すフラグである。inter_sdt_enabled_flagが真（例えば「１」）の場合、そのシーケンス内のインター予測が行われるブロックにおいてSDTの選択が可能である。また、inter_sdt_enabled_flagが偽（例えば「０」）の場合、そのシーケンス内のインター予測が行われるブロックにおいてSDTを選択することができない。
【０５４９】
そして、この場合、Residual Codingにおいて、図６６に示される斜線模様の行のように、intra_sdt_enabled_flagやinter_sdt_enabled_flagの値に応じて、SDTAvailableFlagをセットすることができるようにする。また、そのSDTAvailableFlagの値に応じてsdt_flagをセットすることができるようにする。
【０５５０】
例えば、図６６の場合、intra_sdt_enabled_flagまたはinter_sdt_enabled_flagが真であるとき、SDTAvailableFlagがセットされる。例えば、輝度信号であり、ブロックが所定の上限サイズより小さく所定の下限サイズより大きな正方形であり、transform_skip_flagおよびcu_transquant_bypass_flagが偽であり、かつ、イントラ予測が行われ、intra_sdt_enabled_flagが真でinter_sdt_enabled_flagが偽であるか、または、インター予測が行われ、intra_sdt_enabled_flagが偽でinter_sdt_enabled_flagが真である場合、SDTAvalableFlagは真（例えば「１」）にセットされ、それ以外の場合、SDTAvalableFlagは偽（例えば「０」）にセットされる。
【０５５１】
そして、例えば、図６６の場合、SDTAvalableFlagが真のとき、sdt_flagがセットされる。
【０５５２】
＜変換部＞
この場合も画像符号化装置１００は、第３の実施の形態の場合と基本的に同様の構成を有することができる。すなわち、画像符号化装置１００は、例えば図７に示されるような構成を有する。ただし、この場合、変換部１１２は、例えば図６７に示されるような構成を有する。つまり、この場合、変換部１１２は、図６７に示されるように、スイッチ６０１、スイッチ６０２、プライマリ変換部１３１、セカンダリ変換部１３２、およびSDT部６０３を有する。
【０５５３】
スイッチ６０１は、プライマリ変換およびセカンダリ変換の実行を制御する制御部の一実施の形態である。例えば、スイッチ６０１は、プライマリ変換をスキップさせる場合、セカンダリ変換もスキップさせるように制御する。例えば、スイッチ６０１は、変換情報Tinfoに含まれるプライマリ変換のスキップに関する変換スキップフラグts_flagの値や、変換情報Tinfoに含まれる変換量子化バイパスフラグtransquant_bypass_flagの値に応じて、演算部１１１から供給される予測残差Ｄの供給先を制御する。
【０５５４】
例えば、変換スキップフラグts_flagの値が１、または、変換量子化バイパスフラグtransquant_bypass_flagの値が１である場合、スイッチ６０１は、プライマリ変換およびセカンダリ変換をスキップさせる。つまり、この場合、スイッチ６０１は、予測残差Ｄを変換係数Coeffとして量子化部１１３に供給する。
【０５５５】
また、変換スキップフラグts_flagの値が０であり、かつ、変換量子化バイパスフラグtransquant_bypass_flagの値が０である場合、スイッチ６０１は、予測残差Ｄをスイッチ６０２に供給する。
【０５５６】
スイッチ６０２は、SDTの選択（実行）を制御する制御部の一実施の形態である。例えば、スイッチ６０２は、sdt_flagの値に応じて、スイッチ６０１から供給される予測残差Ｄの供給先を制御する。例えば、sdt_flagの値が１である場合、スイッチ６０２は、SDTを選択する。つまり、この場合、スイッチ６０２は、予測残差ＤをSDT部６０３に供給する。また、スイッチ６０２は、sdt_flagの値が０である場合、SDTを選択せずに、予測残差Ｄをプライマリ変換部１３１に供給する。
【０５５７】
SDT部６０３は、予測画像P、局所復号画像curPic、参照画像refPic等に基づいて、スイッチ６０２から供給される予測残差Ｄに対するSDTに関する処理を行う。SDT部６０３は、SDTを行って得られた変換係数Coeffを量子化部１１３に供給する。なお、予測残差Ｄは、2K×2Lのブロックサイズであり、要素数は、2N(＝2(K+L),N=K+L)であるとする。K, Lはともにに1以上の整数とする。
【０５５８】
＜SDT部＞
図６８にSDT部６０３の主な構成例を示す。図６８に示されるように、SDT部６０３は、例えば、学習サンプル導出部６１１、2N点HyGT導出部６１２、ラスタライズ部６１３、2N点HyGT部６１４、スケーリング部６１５、および行列化部６１６を有する。
【０５５９】
学習サンプル導出部６１１は、予測画像P、局所復号画像curPic、および参照画像refPic[n]を用いて、学習サンプルXtrainを導出する。学習サンプルの導出の詳細については後述する。学習サンプル導出部６１１は、導出した学習サンプルXtrainを2N点HyGT導出部６１２に供給する。
【０５６０】
2N点HyGT導出部６１２は、学習サンプル導出部６１１から供給される学習サンプルXtrainを用いて2N点HyGTの行列Rを導出する。2N点HyGT導出部６１２は、導出した2N点HyGTの行列Rを2N点HyGT部６１４に供給する。
【０５６１】
ラスタライズ部６１３は、ラスタライズ部１４１と基本的に同様の処理を行う。すなわち、ラスタライズ部６１３は、スイッチ６０２から供給される予測残差Ｄを１×2N次元のベクトルX1dへ変換する。ラスタライズ部６１３は、得られたベクトルX1dを2N点HyGT部６１４に供給する。
【０５６２】
2N点HyGT部６１４は、行列演算部４２１と基本的に同様の処理を行う。すなわち、2N点HyGT部６１４は、2N点HyGT導出部６１２から供給される2N点HyGTの行列Rと、ラスタライズ部６１３から供給されるベクトルX1dとの行列積Y1dを導出する。2N点HyGT部６１４は、導出した行列積Y1dをスケーリング部６１５に供給する。
【０５６３】
スケーリング部６１５は、スケーリング部１４３と基本的に同様の処理を行う。すなわち、スケーリング部６１５は、2N点HyGT部６１４から供給される信号Y1dのノルムを正規化し、正規化後の信号Z1dを求める。スケーリング部６１５は、得られた信号Z1dを行列化部６１６に供給する。
【０５６４】
行列化部６１６は、行列化部１４４と基本的に同様の処理を行う。すなわち、行列化部６１６は、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、ノルム正規化後の１×2N次元のベクトルZ1dを、予測残差Ｄと同一のブロックサイズである2K×2Lのブロック（2K×2L行列）へ変換する。行列化部６１６は、得られた変換係数Coeffを変換部１１２の外部（量子化部１１３）に供給する。
【０５６５】
＜学習サンプルの導出＞
2N点HyGT導出部６１２は、処理対象であるカレントブロックと似た周辺の画像を用いて行列Ｒを導出する。より具体的には、学習サンプル導出部６１１が、処理対象であるカレントブロックと似た周辺の画像を用いて学習サンプルXtrainを導出し、2N点HyGT導出部６１２は、その学習サンプルXtrainを用いて行列Ｒを導出する。
【０５６６】
上述のように、学習サンプル導出部６１１は、予測画像P、局所復号画像curPic、および参照画像refPic[n]を用いて、学習サンプルXtrainを導出する。図６８に示されるように、学習サンプル導出部６１１は、テンプレートマッチング部６２１および残差導出部６２２を有する。
【０５６７】
テンプレートマッチング部６２１は、テンプレートのマッチングに関する処理を行い、予測画像P、局所復号画像curPic、および参照画像refPic[n]を用いて、パッチ群BListを導出する。テンプレートマッチング部６２１は、導出したパッチ群BListを残差導出部６２２に供給する。
【０５６８】
残差導出部６２２は、予測画像Pと、テンプレートマッチング部６２１から供給されたパッチ群BListを用いて残差Diを導出し、学習サンプルXtrainを導出する。残差導出部６２２は、導出した学習サンプルXtrainを2N点HyGT導出部６１２に供給する。
【０５６９】
＜テンプレートマッチング＞
次に、この学習サンプルの導出におけるテンプレートマッチングについて説明する。テンプレートマッチング部６２１は、カレントブロックに似た周辺画像の検索を行う。カレントブロックに似た周辺画像は、図６９に示されるように、処理対象のカレントフレーム（Current coding frame）以外の参照フレーム（Reference frame n（nは任意の自然数））の中から検索される。この検索の対象とする参照フレームの数は任意であり、図６９に示されるように複数であってもよい。
【０５７０】
例えば、図７０において、カレントピクチャcurPicのBcurがカレントブロックである。このカレントブロックBcurの縦サイズをHTBとし、横サイズをWTBとする。また、カレントピクチャcurPicのPは、カレントブロックBcurに対応する予測画像である。また、カレントピクチャcurPicのLcurは、このカレントブロックBcurに隣接する局所復号画素群からなるL字のパッチである。このパッチLcurの幅をWLとする。カレントピクチャcurPicのTMcurは、カレントブロックBcurとパッチLcurとからなるカレントテンプレートである。このように、変換ブロックとパッチとにより構成される領域をテンプレートTMと称する。
【０５７１】
ここで類似画像の検索は、このテンプレートTMと称する変換ブロックよりも大きな所定の大きさの領域を単位として行う。テンプレートTMのサイズは、縦が（HTB＋WL）であり、横が（WTB＋WL）である。
【０５７２】
テンプレートマッチング部６２１は、予測画像Pと局所復号画像curPicを用いてカレントテンプレートTMcurを設定し、各参照画像refPic[n]にブロックBjやそのブロックBjを含むテンプレートTMjを設定する。そして、テンプレートマッチング部６２１は、カレントテンプレートTMcurと周辺の各テンプレートTMjとの間で差分（誤差Ej）を導出し、その誤差Ejが所定の閾値（ThE）より小さいテンプレートTMjを検索する。そして、テンプレートマッチング部６２１は、検出した誤差Ejが小さいテンプレートTMjのブロックBjをパッチ群リストBListに含める（追加する）。
【０５７３】
このようにして、テンプレートマッチング部６２１は、パッチ群リストBList（BList = {B1,B2,・・・,BM}（Mはパッチの数））を導出し、それを残差導出部６２２に供給する。
【０５７４】
＜残差の導出＞
次に、学習サンプルの導出における残差の導出について説明する。残差導出部６２２は、テンプレートマッチング部６２１から供給されるパッチ群リストBList（BList = {B1,B2,・・・,BM}）の要素であるパッチBiと予測画像Pとの差分（Bi−P）を導出する。このパッチBiと予測画像Pとの差分（Bi−P）を残差Diと称する。残差導出部６２２は、各パッチBiについて、この残差Diを導出し、導出したM個の残差Diを学習サンプルXtrainとする。
【０５７５】
残差導出部６２２は、以上のように導出した学習サンプルXtrain（Xtrain = {D1,D2,・・・,DM}）を2N点HyGT導出部６１２に供給する。
【０５７６】
以上のように、SDTにおける行列演算に本技術を適用したセパラブルな2N点HyGTを適用することにより、各実施の形態において説明したように、直交変換に必要な演算量を低減させることができる。また、直交変換の際に保持する係数の数を低減させることができ、直交変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０５７７】
また、以上のように、2N点HyGTを用いて2N点HyGTの行列Rを導出することにより、演算複雑度の増大を抑制することができ、演算量を低減させることができる。
【０５７８】
＜変換処理の流れ＞
次に、図９のステップＳ１０４において実行されるこの場合の変換処理の流れの例を、図７１のフローチャートを参照して説明する。
【０５７９】
この場合、スイッチ６０１は、ステップＳ６２１において、変換スキップフラグts_flagが１であるか、または、変換量子化バイパスフラグtransquant_bypass_flagの値が１であるか否かを判定する。変換スキップフラグts_flagと変換量子化バイパスフラグtransquant_bypass_flagの内、少なくとも一方の値が１であると判定された場合、変換処理が終了し、処理は図９に戻る。また、ステップＳ６２１において、変換スキップフラグts_flagと変換量子化バイパスフラグtransquant_bypass_flagの両方とも値が０であると判定された場合、処理はステップＳ６２２に進む。
【０５８０】
ステップＳ６２２において、スイッチ６０２は、sdt_flagの値が１であるか否かを判定する。sdt_flagの値が０であると判定された場合、処理はステップＳ６２３に進む。ステップＳ６２３において、プライマリ変換部１３１はプライマリ変換を行い、セカンダリ変換部１３２は、セカンダリ変換を行う。ステップＳ６２３の処理が終了すると、変換処理が終了し、処理は図９に戻る。
【０５８１】
また、ステップＳ６２２において、sdt_flagの値が１であると判定された場合、処理はステップＳ６２４に進む。ステップＳ６２４において、SDT部６０３は、SDT処理を実行する。ステップＳ６２４の処理が終了すると、変換処理が終了し、処理は図９に戻る。
【０５８２】
＜SDT処理の流れ＞
次に、図７１のステップＳ６２４において実行されるSDT処理の流れの例を、図７２のフローチャートを参照して説明する。
【０５８３】
SDT処理が開始されると、SDT部６０３の学習サンプル導出部６１１は、ステップＳ６３１において、学習サンプルXtrainの導出を行う。ステップＳ６３２において、2N点HyGT導出部６１２は、変換行列Ｒの導出を行う。これらの処理の詳細については後述する。
【０５８４】
ステップＳ６３３において、ラスタライズ部６１３乃至行列化部６１６は、ステップＳ６３２において導出された変換行列Ｒ（2N点HyGTの行列Ｒ）による直交変換を行う。この処理は、各実施の形態において上述した処理（例えば図５２のステップＳ５４３乃至ステップＳ５４９等）と同様であるので、その説明を省略する。
【０５８５】
ステップＳ６３３の処理が終了すると、SDT処理が終了し、処理は図７１に戻る。
【０５８６】
＜学習サンプル導出処理＞
次に、図７２のステップＳ６３１において実行される学習サンプル導出処理の流れの例を、図７３および図７４のフローチャートを参照して説明する。
【０５８７】
学習サンプル導出処理が開始されると、テンプレートマッチング部６２１は、ステップＳ６４１において、テンプレートTMcurを設定する。ステップＳ６４２において、テンプレートマッチング部６２１は、未処理の参照画像を選択する。ステップＳ６４３において、テンプレートマッチング部６２１は、ステップＳ６４２において選択した参照画像refPic[n]を読み込む。ステップＳ６４４において、テンプレートマッチング部６２１は、カレントブロックに類似したブロックを探索する探索範囲Sh×Swを設定する。
【０５８８】
ステップＳ６４５において、テンプレートマッチング部６２１は、検出したパッチ数Mがパッチ数の最大値maxPatchNumより少ないか否かを判定する。パッチ数MがmaxPatchNumより少ないと判定された場合、処理はステップＳ６４６に進む。
【０５８９】
ステップＳ６４６において、テンプレートマッチング部６２１は、参照画像refPic[n]上のブロックBjおよびテンプレートTMjを設定する。ステップＳ６４６の処理が終了すると処理は図７４のステップＳ６５１に進む。
【０５９０】
図７４のステップＳ６５１において、テンプレートマッチング部６２１は、誤差Ej（Ej = |TMj-TMcur|）を求める。ステップＳ６５２において、テンプレートマッチング部６２１は、ステップＳ６５１において求めた誤差Ejが所定の閾値ThEより小さいか否かを判定する。小さいと判定された場合、処理はステップＳ６５３に進む。
【０５９１】
ステップＳ６５３において、テンプレートマッチング部６２１は、テンプレートTjに対応するブロックBjをパッチ群BListに追加する。ステップＳ６５３の処理が終了すると、処理はステップＳ６５４に進む。また、ステップＳ６５２において、誤差Ejが所定の閾値ThE以上であると判定された場合、ステップＳ６５３の処理が省略され、処理はステップＳ６５４に進む。
【０５９２】
ステップＳ６５４において、テンプレートマッチング部６２１は、参照画像refPic[n]上の全てのブロックBjおよびテンプレートTMjを処理したか否かを判定する。未処理のテンプレートTMjが存在すると判定された場合、処理は図７３のステップＳ６４５に戻り、それ以降の処理が繰り返される。つまり、参照画像refPic[n]上の全てのブロックBjおよびテンプレートTMjに対してステップＳ６４５乃至ステップＳ６５４の処理が実行される。そして、ステップＳ６５４において全て処理したと判定された場合、処理はステップＳ６５５に進む。
【０５９３】
ステップＳ６５５において、テンプレートマッチング部６２１は、全ての参照画像について処理したか否かを判定する。未処理の参照画像が存在すると判定された場合、処理は図７３のステップＳ６４２に戻り、それ以降の処理が繰り返される。つまり、各参照画像の全てのブロックBjおよびテンプレートTMjに対してステップＳ６４２乃至ステップＳ６５５の処理が実行される。そして、ステップＳ６５５において全て処理したと判定された場合、処理はステップＳ６５６に進む。
【０５９４】
ステップＳ６５６において、残差導出部６２２は、以上の処理により導出されたパッチ群BList内の各ブロックBiと予測画像Pとの差分である残差Diを導出し、学習サンプルXtrain = {D0,・・・,DM}を生成する。ステップＳ６５６の処理が終了すると、学習サンプル導出処理が終了し、処理は図７２に戻る。
【０５９５】
＜変換行列Ｒ導出処理の流れ＞
次に、図７２のステップＳ６３２において実行される変換行列Ｒ導出処理の流れの例を、図７５のフローチャートを参照して説明する。
【０５９６】
変換行列導出処理が開始されると、2N点HyGT導出部６１２は、ステップＳ６６１において、全段について差分Diを用いて学習サンプルXsを設定する。ステップＳ６６２において、2N点HyGT導出部６１２は、変数sを初期化する。
【０５９７】
ステップＳ６６３において、2N点HyGT導出部６１２は、変数sをインクリメント（＋１）する。ステップＳ６６４において、2N点HyGT導出部６１２は、行列積Ps・Xsを用いて学習サンプルXsを再定義する。ステップＳ６６５において、2N点HyGT導出部６１２は、s段目の更新された学習サンプルXsを2N-1個のM×2行列Us,k（k = 1,・・・,2N-1）へ分割する。
【０５９８】
ステップＳ６６６において、2N点HyGT導出部６１２は、回転行列Gs,kを導出し、直交行列Fsを求める。ステップＳ６６７において、2N点HyGT導出部６１２は、行列積Fx・Xsを用いて学習サンプルXsを更新する。ステップＳ６６８において、2N点HyGT導出部６１２は、行列積PsT・Xsを用いて学習サンプルXs+1を求める。
【０５９９】
ステップＳ６６９において、2N点HyGT導出部６１２は、N段処理したか否かを判定する。N段処理していないと判定された場合、処理はステップＳ６６３に戻り、それ以降の処理を繰り返す。ステップＳ６６３乃至ステップＳ６６９の各処理を、各段について行い、ステップＳ６６９において、N段処理されたと判定された場合、変換行列Ｒが導出されたので、変換行列Ｒ導出処理が終了し、処理を図７２に戻す。
【０６００】
以上のように各処理を実行することにより、SDTの演算量（乗算・加算）を低減することができ、SDTの直交変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０６０１】
＜逆変換部＞
次に以上のよな変換部１１２に対応する逆変換部２１３について説明する。この場合も画像符号化装置１００に対応する画像復号装置２００は、第３の実施の形態の場合と基本的に同様の構成を有することができる。すなわち、画像復号装置２００は、例えば図１１に示されるような構成を有する。ただし、この場合、逆変換部２１３は、例えば図７６に示されるような構成を有する。つまり、この場合、逆変換部２１３は、図７６に示されるように、スイッチ６５１、スイッチ６５２、逆セカンダリ変換部２３１、逆プライマリ変換部２３２、および逆SDT部６５３を有する。
【０６０２】
スイッチ６５１は、逆セカンダリ変換および逆プライマリ変換の実行を制御する制御部の一実施の形態である。例えば、スイッチ６５１は、逆セカンダリ変換をスキップさせる場合、逆プライマリ変換もスキップさせるように制御する。例えば、スイッチ６５１は、変換情報Tinfoに含まれるプライマリ変換のスキップに関する変換スキップフラグts_flagの値や、変換情報Tinfoに含まれる変換量子化バイパスフラグtransquant_bypass_flagの値に応じて、逆量子化部２１２から供給される変換係数Coeff_IQの供給先を制御する。
【０６０３】
例えば、変換スキップフラグts_flagの値が１、または、変換量子化バイパスフラグtransquant_bypass_flagの値が１である場合、スイッチ６５１は、逆セカンダリ変換および逆プライマリ変換をスキップさせる。つまり、この場合、スイッチ６５１は、変換係数Coeff_IQを予測残差Ｄ’として演算部２１４に供給する。
【０６０４】
また、変換スキップフラグts_flagの値が０であり、かつ、変換量子化バイパスフラグtransquant_bypass_flagの値が０である場合、スイッチ６５１は、変換係数Coeff_IQをスイッチ６５２に供給する。
【０６０５】
スイッチ６５２は、SDTの逆処理である逆SDTの選択（実行）を制御する制御部の一実施の形態である。例えば、スイッチ６５２は、sdt_flagの値に応じて、スイッチ６５１から供給される変換係数Coeff_IQの供給先を制御する。例えば、sdt_flagの値が１である場合、スイッチ６５２は、逆SDTを選択する。つまり、この場合、スイッチ６５２は、変換係数Coeff_IQを逆SDT部６５３に供給する。また、スイッチ６５２は、sdt_flagの値が０である場合、逆SDTを選択せずに、変換係数Coeff_IQを逆セカンダリ変換部２３１に供給する。
【０６０６】
逆SDT部６５３は、予測画像P、局所復号画像curPic、参照画像refPic等に基づいて、スイッチ６５２から供給される変換係数Coeff_IQに対する逆SDTに関する処理を行う。逆SDT部６５３は、逆SDTを行って得られた予測残差Ｄ’を演算部２１４に供給する。なお、予測残差Ｄ'、2K×2Lのブロックサイズであり、要素数は、2N(＝2(K+L),N=K+L)であるとする。K, Lはともにに1以上の整数とする。
【０６０７】
＜逆SDT部＞
図７７に逆SDT部６５３の主な構成例を示す。図７７に示されるように、逆SDT部６５３は、例えば、学習サンプル導出部６６１、2N点逆HyGT導出部６６２、ラスタライズ部６６３、2N点逆HyGT部６６４、スケーリング部６６５、および行列化部６６６を有する。
【０６０８】
学習サンプル導出部６６１は、学習サンプル導出部６６１と同様の処理を行い、予測画像P、局所復号画像curPic、および参照画像refPic[n]を用いて、学習サンプルXtrainを導出する。学習サンプル導出部６６１は、テンプレートマッチング部６７１および残差導出部６７２を有する。テンプレートマッチング部６７１は、テンプレートマッチング部６２１と同様の処理を行い、予測画像P、局所復号画像curPic、および参照画像refPic[n]を用いて、パッチ群BListを導出する。残差導出部６７２は、残差導出部６２２と同様の処理を行い、予測画像Pと、テンプレートマッチング部６７１から供給されたパッチ群BListを用いて残差Diを導出し、学習サンプルXtrainを導出する。学習サンプル導出部６６１（残差導出部６２２）は、導出した学習サンプルXtrainを2N点逆HyGT導出部６６２に供給する。
【０６０９】
2N点逆HyGT導出部６６２は、学習サンプル導出部６６１から供給される学習サンプルXtrainを用いて2N点逆HyGTの行列IRを導出する。2N点逆HyGT導出部６６２は、導出した2N点逆HyGTの行列IRを2N点逆HyGT部６６４に供給する。
【０６１０】
ラスタライズ部６６３は、ラスタライズ部２４１と基本的に同様の処理を行う。すなわち、ラスタライズ部６６３は、スイッチ６５２から供給される変換係数Coeff_IQを１×2N次元のベクトルX1dへ変換する。ラスタライズ部６６３は、得られたベクトルX1dを2N点逆HyGT部６６４に供給する。
【０６１１】
2N点逆HyGT部６６４は、行列演算部４５１と基本的に同様の処理を行う。すなわち、2N点逆HyGT部６６４は、2N点逆HyGT導出部６６２から供給される2N点逆HyGTの行列IRと、ラスタライズ部６６３から供給されるベクトルX1dとの行列積Y1dを導出する。2N点逆HyGT部６６４は、導出した行列積Y1dをスケーリング部６６５に供給する。
【０６１２】
スケーリング部６６５は、スケーリング部２４３と基本的に同様の処理を行う。すなわち、スケーリング部６６５は、2N点逆HyGT部６６４から供給される信号Y1dのノルムを正規化し、正規化後の信号Z1dを求める。スケーリング部６６５は、得られた信号Z1dを行列化部６６６に供給する。
【０６１３】
行列化部６６６は、行列化部２４４と基本的に同様の処理を行う。すなわち、行列化部６６６は、スキャン識別子scanIdxによって指定されるスキャン方法に基づいて、ノルム正規化後の１×2N次元のベクトルZ1dを、予測残差Ｄ'と同一のブロックサイズである2K×2Lのブロック（2K×2L行列）へ変換する。行列化部６６６は、得られた予測残差Ｄ’を逆変換部２１３の外部（演算部２１４）に供給する。
【０６１４】
以上のように、逆SDTにおける行列演算にも、SDTの場合と同様に、本技術を適用したセパラブルな2N点逆HyGTを適用することができる。これにより、各実施の形態において説明したように、逆直交変換に必要な演算量を低減させることができる。また、逆直交変換の際に保持する係数の数を低減させることができ、逆直交変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０６１５】
また、以上のように、2N点逆HyGTを用いて2N点逆HyGTの行列IRを導出することにより、演算複雑度の増大を抑制することができ、演算量を低減させることができる。
【０６１６】
＜逆変換処理の流れ＞
次に、図１３のステップＳ２０３において実行される逆変換処理のこの場合の流れの例を、図７８のフローチャートを参照して説明する。
【０６１７】
この場合、スイッチ６５１は、ステップＳ６８１において、変換スキップフラグts_flagが１であるか、または、変換量子化バイパスフラグtransquant_bypass_flagの値が１であるか否かを判定する。変換スキップフラグts_flagと変換量子化バイパスフラグtransquant_bypass_flagの内、少なくとも一方の値が１であると判定された場合、逆変換処理が終了し、処理は図１３に戻る。また、ステップＳ６８１において、変換スキップフラグts_flagと変換量子化バイパスフラグtransquant_bypass_flagの両方とも値が０であると判定された場合、処理はステップＳ６８２に進む。
【０６１８】
ステップＳ６８２において、スイッチ６５２は、sdt_flagの値が１であるか否かを判定する。sdt_flagの値が０であると判定された場合、処理はステップＳ６８３に進む。ステップＳ６８３において、逆セカンダリ変換部２３１は逆セカンダリ変換を行い、逆プライマリ変換部２３２は、逆プライマリ変換を行う。ステップＳ６８３の処理が終了すると、逆変換処理が終了し、処理は図１３に戻る。
【０６１９】
また、ステップＳ６８２において、sdt_flagの値が１であると判定された場合、処理はステップＳ６８４に進む。ステップＳ６８４において、逆SDT部６５３は、逆SDT処理を実行する。ステップＳ６８４の処理が終了すると、逆変換処理が終了し、処理は図１３に戻る。
【０６２０】
＜SDT処理の流れ＞
次に、図７８のステップＳ６８４において実行される逆SDT処理の流れの例を、図７９のフローチャートを参照して説明する。
【０６２１】
逆SDT処理が開始されると、逆SDT部６５３の学習サンプル導出部６６１は、ステップＳ６９１において、学習サンプルXtrainの導出を行う。この場合の学習サンプル導出処理は、上述したSDT処理において行われる場合（図７３および図７４）と同様であるので、その説明を省略する。
【０６２２】
ステップＳ６９２において、2N点逆HyGT導出部６６２は、変換行列IR（= RT）の導出を行う。この処理の詳細については後述する。
【０６２３】
ステップＳ６９３において、ラスタライズ部６６３乃至行列化部６６６は、ステップＳ６９２において導出された変換行列IR（2N点逆HyGTの行列IR）による逆直交変換を行う。この処理は、各実施の形態において上述した処理（例えば図５６のステップＳ５８２乃至ステップＳ５８８等）と同様であるので、その説明を省略する。
【０６２４】
ステップＳ６９３の処理が終了すると、逆SDT処理が終了し、処理は図７８に戻る。
【０６２５】
＜変換行列IR導出処理の流れ＞
次に、図７９のステップＳ６９２において実行される変換行列IR導出処理の流れの例を、図８０のフローチャートを参照して説明する。
【０６２６】
変換行列IR導出処理が開始されると、2N点逆HyGT導出部６６２は、ステップＳ７０１において、全段について差分Diを用いて学習サンプルXsを設定する。ステップＳ７０２において、2N点逆HyGT導出部６６２は、変数sを初期化する。
【０６２７】
ステップＳ７０３において、2N点逆HyGT導出部６６２は、変数sをインクリメント（＋１）する。ステップＳ７０４において、2N点逆HyGT導出部６６２は、行列積Ps・Xsを用いて学習サンプルXsを再定義する。ステップＳ７０５において、2N点逆HyGT導出部６６２は、s段目の更新された学習サンプルXsを2N-1個のM×2行列Us,k（k = 1,・・・,2N-1）へ分割する。
【０６２８】
ステップＳ７０６において、2N点逆HyGT導出部６６２は、回転行列Gs,kを導出し、直交行列Fsを求める。ステップＳ７０７において、2N点逆HyGT導出部６６２は、行列積Fs・Xsを用いて学習サンプルXsを更新する。ステップＳ７０８において、2N点逆HyGT導出部６６２は、行列積PsT・Xsを用いて学習サンプルXs+1を求める。
【０６２９】
ステップＳ７０９において、2N点逆HyGT導出部６６２は、N段処理したか否かを判定する。N段処理していないと判定された場合、処理はステップＳ７０３に戻り、それ以降の処理を繰り返す。ステップＳ７０３乃至ステップＳ７０９の各処理を、各段について行い、ステップＳ７０９において、N段処理されたと判定された場合、処理はステップＳ７１０に進む。ステップＳ７１０において、2N点逆HyGT導出部６６２は、ステップＳ７０９までの処理により得られた変換行列Rの転置行列RT（= IR）を求める。このようにして変換行列IRが得られると変換行列IR導出処理が終了し、処理を図７９に戻す。
【０６３０】
以上のように各処理を実行することにより、逆SDTの演算量（乗算・加算）を低減することができ、逆SDTの逆直交変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０６３１】
＜画像符号化装置の逆変換部＞
以上においては、各実施の形態において画像復号装置２００の逆変換部２１３について説明したが、画像符号化装置１００の逆変換部１１６に対しても同様に本技術を適用することができる。つまり、上述した逆変換部２１３に関する説明は、逆変換部１１６に対しても適用することができる。
【０６３２】
ただし、逆変換部１１６は、変換部１１２において用いられた変換行列Ｒ（変換部１１２において導出されたものも含む）を用いて変換行列ＩＲを求めるようにしてもよい。例えば、逆変換部１１６の逆SDT部６５３（図７６、図７７）が、SDT部６０３（図６７、図６８）の2N点HyGT導出部６１２により導出された2N点HyGTの行列Rから、2N点逆HyGTの行列IRを求めるようにしてもよい。
【０６３３】
その場合の逆SDT部６５３の主な構成例を図８１に示す。図８１に示されるように、この場合、逆SDT部６５３は、図７７の場合と基本的に同様の構成を有するが、学習サンプル導出部６６１および2N点逆HyGT導出部６６２の代わりに、2N点逆HyGT導出部６８１を有する。
【０６３４】
2N点逆HyGT導出部６８１は、SDT部６０３（2N点HyGT導出部６１２）（図６８）から2N点HyGTの行列Rを取得する。2N点逆HyGT導出部６８１は、その2N点HyGTの行列Rから2N点逆HyGTの行列IRを導出する。2N点逆HyGT導出部６８１は、2N点HyGTの行列Rの転置行列を求めることにより、2N点逆HyGTの行列IRを導出する。2N点逆HyGT導出部６８１は、導出した2N点逆HyGTの行列IRを2N点逆HyGT部６６４に供給する。2N点逆HyGT部６６４は、その2N点逆HyGTの行列IRと、ラスタライズ部６６３から供給されるベクトルX1dとの行列積Y1dを導出する。
【０６３５】
以上のようにすることにより、逆SDT部６５３は、学習サンプルを導出する場合よりも容易に2N点逆HyGTの行列IRを導出することができる。
【０６３６】
＜逆SDT処理の流れ＞
この場合の、逆SDT処理の流れの例を、図８２のフローチャートを参照して説明する。この場合、逆SDT処理が開始されると、2N点逆HyGT導出部６８１は、ステップＳ７３１において、変換行列Ｒを用いて変換行列IR（=RT）を導出する。
【０６３７】
ステップＳ７３２において、ラスタライズ部６６３乃至行列化部６６６は、ステップＳ７３１において導出された変換行列IR（2N点逆HyGTの行列IR）による逆直交変換を行う。この処理は、各実施の形態において上述した処理（例えば図５６のステップＳ５８２乃至ステップＳ５８８等）と同様であるので、その説明を省略する。
【０６３８】
以上のように各処理を実行することにより、逆SDTの演算量（乗算・加算）を低減することができ、逆SDTの逆直交変換の行列を保持するのに必要なメモリサイズを低減させることができる。
【０６３９】
＜１０．第１０の実施の形態＞
＜情報のデータ単位＞
以上において説明した画像に関する情報や画像の符号化・復号に関する情報が設定される（または対象とするデータの）データ単位は、それぞれ任意であり、上述した例に限定されない。例えば、これらの情報が、それぞれ、TU、PU、CU、LCU、サブブロック、ブロック、タイル、スライス、ピクチャ、シーケンス、またはコンポーネント毎に設定されるようにしてもよいし、それらのデータ単位のデータを対象とするようにしてもよい。もちろん、このデータ単位は、情報毎に設定される。つまり、全ての情報が同一のデータ単位毎に設定される（または対象とする）ようにしなくてもよい。なお、これらの情報の格納場所は任意であり、上述したデータ単位のヘッダやパラメータセット等に格納されるようにしてもよい。また、複数個所に格納されるようにしてもよい。
【０６４０】
＜制御情報＞
以上の各実施の形態において説明した本技術に関する制御情報を符号化側から復号側に伝送するようにしてもよい。例えば、上述した本技術を適用することを許可（または禁止）するか否かを制御する制御情報（例えばenabled_flag）を伝送するようにしてもよい。また、例えば、上述した本技術を適用することを許可（または禁止）するブロックサイズの上限若しくは下限、またはその両方を指定する制御情報を伝送するようにしてもよい。
【０６４１】
＜符号化・復号＞
本技術は、プライマリ変換およびセカンダリ変換（逆セカンダリ変および逆プライマリ変換）を行う任意の画像符号化・復号に適用することができる。つまり、変換（逆変換）、量子化（逆量子化）、符号化（復号）、予測等の仕様は任意であり、上述した例に限定されない。例えば、変換（逆変換）において、（逆）プライマリ変換および（逆）セカンダリ変換以外の（逆）変換（すなわち３以上の（逆）変換）が行われるようにしてもよい。また、符号化（復号）は、可逆な方式であってもよいし、非可逆な方式であってもよい。さらに、量子化（逆量子化）や予測等は省略するようにしてもよい。また、フィルタ処理等の上述していない処理が行われるようにしてもよい。
【０６４２】
＜本技術の適用分野＞
本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。
【０６４３】
例えば、本技術は、鑑賞の用に供される画像を伝送するシステムやデバイスにも適用することができる。また、例えば、本技術は、交通の用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、セキュリティの用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、スポーツの用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、農業の用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、畜産業の用に供されるシステムやデバイスにも適用することができる。さらに、本技術は、例えば火山、森林、海洋等の自然の状態を監視するシステムやデバイスにも適用することができる。また、本技術は、例えば天気、気温、湿度、風速、日照時間等を観測する気象観測システムや気象観測装置に適用することができる。さらに、本技術は、例えば鳥類、魚類、ハ虫類、両生類、哺乳類、昆虫、植物等の野生生物の生態を観測するシステムやデバイス等にも適用することができる。
【０６４４】
＜多視点画像符号化・復号システムへの適用＞
上述した一連の処理は、複数の視点（ビュー（view））の画像を含む多視点画像の符号化・復号を行う多視点画像符号化・復号システムに適用することができる。その場合、各視点（ビュー（view））の符号化・復号において、本技術を適用するようにすればよい。
【０６４５】
＜階層画像符号化・復号システムへの適用＞
また、上述した一連の処理は、所定のパラメータについてスケーラビリティ（scalability）機能を有するように複数レイヤ化（階層化）された階層画像の符号化・復号を行う階層画像符号化（スケーラブル符号化）・復号システムに適用することができる。その場合、各階層（レイヤ）の符号化・復号において、本技術を適用するようにすればよい。
【０６４６】
＜コンピュータ＞
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
【０６４７】
図８３は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０６４８】
図８３に示されるコンピュータ８００において、CPU（Central Processing Unit）８０１、ROM（Read Only Memory）８０２、RAM（Random Access Memory）８０３は、バス８０４を介して相互に接続されている。
【０６４９】
バス８０４にはまた、入出力インタフェース８１０も接続されている。入出力インタフェース８１０には、入力部８１１、出力部８１２、記憶部８１３、通信部８１４、およびドライブ８１５が接続されている。
【０６５０】
入力部８１１は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部８１２は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部８１３は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部８１４は、例えば、ネットワークインタフェースよりなる。ドライブ８１５は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア８２１を駆動する。
【０６５１】
以上のように構成されるコンピュータでは、CPU８０１が、例えば、記憶部８１３に記憶されているプログラムを、入出力インタフェース８１０およびバス８０４を介して、RAM８０３にロードして実行することにより、上述した一連の処理が行われる。RAM８０３にはまた、CPU８０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０６５２】
コンピュータ（CPU８０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア８２１に記録して適用することができる。その場合、プログラムは、リムーバブルメディア８２１をドライブ８１５に装着することにより、入出力インタフェース８１０を介して、記憶部８１３にインストールすることができる。
【０６５３】
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部８１４で受信し、記憶部８１３にインストールすることができる。
【０６５４】
その他、このプログラムは、ROM８０２や記憶部８１３に、あらかじめインストールしておくこともできる。
【０６５５】
＜本技術の応用＞
上述した実施形態に係る画像符号化装置１００や画像復号装置２００は、例えば、衛星放送、ケーブルＴＶなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機や受信機、または、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置や、これら記憶媒体から画像を再生する再生装置などの、様々な電子機器に応用され得る。
【０６５６】
＜第１の応用例：テレビジョン受像機＞
図８４は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置９００は、アンテナ９０１、チューナ９０２、デマルチプレクサ９０３、デコーダ９０４、映像信号処理部９０５、表示部９０６、音声信号処理部９０７、スピーカ９０８、外部インタフェース（I/F）部９０９、制御部９１０、ユーザインタフェース（I/F）部９１１、及びバス９１２を備える。
【０６５７】
チューナ９０２は、アンテナ９０１を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ９０２は、復調により得られた符号化ビットストリームをデマルチプレクサ９０３へ出力する。即ち、チューナ９０２は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置９００における伝送部としての役割を有する。
【０６５８】
デマルチプレクサ９０３は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ９０４へ出力する。また、デマルチプレクサ９０３は、符号化ビットストリームからEPG（Electronic Program Guide）などの補助的なデータを抽出し、抽出したデータを制御部９１０に供給する。なお、デマルチプレクサ９０３は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
【０６５９】
デコーダ９０４は、デマルチプレクサ９０３から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ９０４は、復号処理により生成される映像データを映像信号処理部９０５へ出力する。また、デコーダ９０４は、復号処理により生成される音声データを音声信号処理部９０７へ出力する。
【０６６０】
映像信号処理部９０５は、デコーダ９０４から入力される映像データを再生し、表示部９０６に映像を表示させる。また、映像信号処理部９０５は、ネットワークを介して供給されるアプリケーション画面を表示部９０６に表示させてもよい。また、映像信号処理部９０５は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部９０５は、例えばメニュー、ボタン又はカーソルなどのGUI（Graphical User Interface）の画像を生成し、生成した画像を出力画像に重畳してもよい。
【０６６１】
表示部９０６は、映像信号処理部９０５から供給される駆動信号により駆動され、表示デバイス（例えば、液晶ディスプレイ、プラズマディスプレイ又はOELD（Organic ElectroLuminescence Display）（有機ELディスプレイ）など）の映像面上に映像又は画像を表示する。
【０６６２】
音声信号処理部９０７は、デコーダ９０４から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ９０８から音声を出力させる。また、音声信号処理部９０７は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
【０６６３】
外部インタフェース部９０９は、テレビジョン装置９００と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース部９０９を介して受信される映像ストリーム又は音声ストリームが、デコーダ９０４により復号されてもよい。即ち、外部インタフェース部９０９もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置９００における伝送部としての役割を有する。
【０６６４】
制御部９１０は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置９００の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース部９１１から入力される操作信号に応じて、テレビジョン装置９００の動作を制御する。
【０６６５】
ユーザインタフェース部９１１は、制御部９１０と接続される。ユーザインタフェース部９１１は、例えば、ユーザがテレビジョン装置９００を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース部９１１は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９１０へ出力する。
【０６６６】
バス９１２は、チューナ９０２、デマルチプレクサ９０３、デコーダ９０４、映像信号処理部９０５、音声信号処理部９０７、外部インタフェース部９０９及び制御部９１０を相互に接続する。
【０６６７】
このように構成されたテレビジョン装置９００において、デコーダ９０４が、上述した画像復号装置２００の機能を有するようにしてもよい。つまり、デコーダ９０４が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、テレビジョン装置９００は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０６６８】
また、このように構成されたテレビジョン装置９００において、映像信号処理部９０５が、例えば、デコーダ９０４から供給される画像データを符号化し、得られた符号化データを、外部インタフェース部９０９を介してテレビジョン装置９００の外部に出力させることができるようにしてもよい。そして、その映像信号処理部９０５が、上述した画像符号化装置１００の機能を有するようにしてもよい。つまり、映像信号処理部９０５が、デコーダ９０４から供給される画像データを、以上の各実施の形態において説明した方法で符号化するようにしてもよい。このようにすることにより、テレビジョン装置９００は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０６６９】
＜第２の応用例：携帯電話機＞
図８５は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機９２０は、アンテナ９２１、通信部９２２、音声コーデック９２３、スピーカ９２４、マイクロホン９２５、カメラ部９２６、画像処理部９２７、多重分離部９２８、記録再生部９２９、表示部９３０、制御部９３１、操作部９３２、及びバス９３３を備える。
【０６７０】
アンテナ９２１は、通信部９２２に接続される。スピーカ９２４及びマイクロホン９２５は、音声コーデック９２３に接続される。操作部９３２は、制御部９３１に接続される。バス９３３は、通信部９２２、音声コーデック９２３、カメラ部９２６、画像処理部９２７、多重分離部９２８、記録再生部９２９、表示部９３０、及び制御部９３１を相互に接続する。
【０６７１】
携帯電話機９２０は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
【０６７２】
音声通話モードにおいて、マイクロホン９２５により生成されるアナログ音声信号は、音声コーデック９２３に供給される。音声コーデック９２３は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック９２３は、圧縮後の音声データを通信部９２２へ出力する。通信部９２２は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号を、アンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部９２２は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック９２３へ出力する。音声コーデック９２３は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック９２３は、生成した音声信号をスピーカ９２４に供給して音声を出力させる。
【０６７３】
また、データ通信モードにおいて、例えば、制御部９３１は、操作部９３２を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部９３１は、文字を表示部９３０に表示させる。また、制御部９３１は、操作部９３２を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部９２２へ出力する。通信部９２２は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号を、アンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部９２２は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部９３１へ出力する。制御部９３１は、表示部９３０に電子メールの内容を表示させると共に、電子メールデータを記録再生部９２９に供給し、その記憶媒体に書き込ませる。
【０６７４】
記録再生部９２９は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USB（Universal Serial Bus）メモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
【０６７５】
また、撮影モードにおいて、例えば、カメラ部９２６は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部９２７へ出力する。画像処理部９２７は、カメラ部９２６から入力される画像データを符号化し、符号化ストリームを記録再生部９２９に供給し、その記憶媒体に書き込ませる。
【０６７６】
さらに、画像表示モードにおいて、記録再生部９２９は、記憶媒体に記録されている符号化ストリームを読み出して画像処理部９２７へ出力する。画像処理部９２７は、記録再生部９２９から入力される符号化ストリームを復号し、画像データを表示部９３０に供給し、その画像を表示させる。
【０６７７】
また、テレビ電話モードにおいて、例えば、多重分離部９２８は、画像処理部９２７により符号化された映像ストリームと、音声コーデック９２３から入力される音声ストリームとを多重化し、多重化したストリームを通信部９２２へ出力する。通信部９２２は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号を、アンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部９２２は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部９２８へ出力する。多重分離部９２８は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部９２７、音声ストリームを音声コーデック９２３へ出力する。画像処理部９２７は、映像ストリームを復号し、映像データを生成する。映像データは、表示部９３０に供給され、表示部９３０により一連の画像が表示される。音声コーデック９２３は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック９２３は、生成した音声信号をスピーカ９２４に供給して音声を出力させる。
【０６７８】
このように構成された携帯電話機９２０において、例えば画像処理部９２７が、上述した画像符号化装置１００の機能を有するようにしてもよい。つまり、画像処理部９２７が、画像データを、以上の各実施の形態において説明した方法で符号化するようにしてもよい。このようにすることにより、携帯電話機９２０は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０６７９】
また、このように構成された携帯電話機９２０において、例えば画像処理部９２７が、上述した画像復号装置２００の機能を有するようにしてもよい。つまり、画像処理部９２７が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、携帯電話機９２０は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０６８０】
＜第３の応用例：記録再生装置＞
図８６は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置９４０は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置９４０は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置９４０は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置９４０は、音声データおよび映像データを復号する。
【０６８１】
記録再生装置９４０は、チューナ９４１、外部インタフェース（I/F）部９４２、エンコーダ９４３、HDD（Hard Disk Drive）部９４４、ディスクドライブ９４５、セレクタ９４６、デコーダ９４７、OSD（On-Screen Display）部９４８、制御部９４９、およびユーザインタフェース（I/F）部９５０を備える。
【０６８２】
チューナ９４１は、アンテナ（図示せず）を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ９４１は、復調により得られた符号化ビットストリームをセレクタ９４６へ出力する。即ち、チューナ９４１は、記録再生装置９４０における伝送部としての役割を有する。
【０６８３】
外部インタフェース部９４２は、記録再生装置９４０と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース部９４２は、例えば、IEEE（Institute of Electrical and Electronic Engineers）1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース部９４２を介して受信される映像データおよび音声データは、エンコーダ９４３へ入力される。即ち、外部インタフェース部９４２は、記録再生装置９４０における伝送部としての役割を有する。
【０６８４】
エンコーダ９４３は、外部インタフェース部９４２から入力される映像データおよび音声データが符号化されていない場合に、映像データおよび音声データを符号化する。そして、エンコーダ９４３は、符号化ビットストリームをセレクタ９４６へ出力する。
【０６８５】
HDD部９４４は、映像および音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラムおよびその他のデータを内部のハードディスクに記録する。また、HDD部９４４は、映像および音声の再生時に、これらデータをハードディスクから読み出す。
【０６８６】
ディスクドライブ９４５は、装着されている記録媒体へのデータの記録および読み出しを行う。ディスクドライブ９４５に装着される記録媒体は、例えばDVD（Digital Versatile Disc）ディスク（DVD-Video、DVD-RAM（DVD - Random Access Memory）、DVD-R（DVD - Recordable）、DVD-RW（DVD - Rewritable）、DVD+R（DVD + Recordable）、DVD+RW（DVD + Rewritable）等）又はBlu-ray（登録商標）ディスクなどであってよい。
【０６８７】
セレクタ９４６は、映像および音声の記録時には、チューナ９４１又はエンコーダ９４３から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD９４４又はディスクドライブ９４５へ出力する。また、セレクタ９４６は、映像及び音声の再生時には、HDD９４４又はディスクドライブ９４５から入力される符号化ビットストリームをデコーダ９４７へ出力する。
【０６８８】
デコーダ９４７は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ９４７は、生成した映像データをOSD部９４８へ出力する。また、デコーダ９４７は、生成した音声データを外部のスピーカへ出力する。
【０６８９】
OSD部９４８は、デコーダ９４７から入力される映像データを再生し、映像を表示する。また、OSD部９４８は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
【０６９０】
制御部９４９は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置９４０の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース部９５０から入力される操作信号に応じて、記録再生装置９４０の動作を制御する。
【０６９１】
ユーザインタフェース部９５０は、制御部９４９と接続される。ユーザインタフェース部９５０は、例えば、ユーザが記録再生装置９４０を操作するためのボタンおよびスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース部９５０は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９４９へ出力する。
【０６９２】
このように構成された記録再生装置９４０において、例えばエンコーダ９４３が、上述した画像符号化装置１００の機能を有するようにしてもよい。つまり、エンコーダ９４３が、画像データを、以上の各実施の形態において説明方法で符号化するようにしてもよい。このようにすることにより、記録再生装置９４０は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０６９３】
また、このように構成された記録再生装置９４０において、例えばデコーダ９４７が、上述した画像復号装置２００の機能を有するようにしてもよい。つまり、デコーダ９４７が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、記録再生装置９４０は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０６９４】
＜第４の応用例：撮像装置＞
図８７は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置９６０は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
【０６９５】
撮像装置９６０は、光学ブロック９６１、撮像部９６２、信号処理部９６３、画像処理部９６４、表示部９６５、外部インタフェース（I/F）部９６６、メモリ部９６７、メディアドライブ９６８、OSD部９６９、制御部９７０、ユーザインタフェース（I/F）部９７１、およびバス９７２を備える。
【０６９６】
光学ブロック９６１は、撮像部９６２に接続される。撮像部９６２は、信号処理部９６３に接続される。表示部９６５は、画像処理部９６４に接続される。ユーザインタフェース部９７１は、制御部９７０に接続される。バス９７２は、画像処理部９６４、外部インタフェース部９６６、メモリ部９６７、メディアドライブ９６８、OSD部９６９、および制御部９７０を相互に接続する。
【０６９７】
光学ブロック９６１は、フォーカスレンズ及び絞り機構などを有する。光学ブロック９６１は、被写体の光学像を撮像部９６２の撮像面に結像させる。撮像部９６２は、CCD（Charge Coupled Device）又はCMOS（Complementary Metal Oxide Semiconductor）などのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部９６２は、画像信号を信号処理部９６３へ出力する。
【０６９８】
信号処理部９６３は、撮像部９６２から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部９６３は、カメラ信号処理後の画像データを画像処理部９６４へ出力する。
【０６９９】
画像処理部９６４は、信号処理部９６３から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部９６４は、生成した符号化データを外部インタフェース部９６６またはメディアドライブ９６８へ出力する。また、画像処理部９６４は、外部インタフェース部９６６またはメディアドライブ９６８から入力される符号化データを復号し、画像データを生成する。そして、画像処理部９６４は、生成した画像データを表示部９６５へ出力する。また、画像処理部９６４は、信号処理部９６３から入力される画像データを表示部９６５へ出力して画像を表示させてもよい。また、画像処理部９６４は、OSD部９６９から取得される表示用データを、表示部９６５へ出力する画像に重畳してもよい。
【０７００】
OSD部９６９は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部９６４へ出力する。
【０７０１】
外部インタフェース部９６６は、例えばUSB入出力端子として構成される。外部インタフェース部９６６は、例えば、画像の印刷時に、撮像装置９６０とプリンタとを接続する。また、外部インタフェース部９６６には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置９６０にインストールされ得る。さらに、外部インタフェース部９６６は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース部９６６は、撮像装置９６０における伝送部としての役割を有する。
【０７０２】
メディアドライブ９６８に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ９６８に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD（Solid State Drive）のような非可搬性の記憶部が構成されてもよい。
【０７０３】
制御部９７０は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置９６０の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース部９７１から入力される操作信号に応じて、撮像装置９６０の動作を制御する。
【０７０４】
ユーザインタフェース部９７１は、制御部９７０と接続される。ユーザインタフェース部９７１は、例えば、ユーザが撮像装置９６０を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース部９７１は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９７０へ出力する。
【０７０５】
このように構成された撮像装置９６０において、例えば画像処理部９６４が、上述した画像符号化装置１００の機能を有するようにしてもよい。つまり、画像処理部９６４が、画像データを、以上の各実施の形態において説明した方法で符号化するようにしてもよい。このようにすることにより、撮像装置９６０は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７０６】
また、このように構成された撮像装置９６０において、例えば画像処理部９６４が、上述した画像復号装置２００の機能を有するようにしてもよい。つまり、画像処理部９６４が、符号化データを、以上の各実施の形態において説明した方法で復号するようにしてもよい。このようにすることにより、撮像装置９６０は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７０７】
＜第５の応用例：ビデオセット＞
また、本技術は、任意の装置またはシステムを構成する装置に搭載するあらゆる構成、例えば、システムLSI（Large Scale Integration）等としてのプロセッサ、複数のプロセッサ等を用いるモジュール、複数のモジュール等を用いるユニット、ユニットにさらにその他の機能を付加したセット等（すなわち、装置の一部の構成）として実施することもできる。図８８は、本技術を適用したビデオセットの概略的な構成の一例を示している。
【０７０８】
近年、電子機器の多機能化が進んでおり、その開発や製造において、その一部の構成を販売や提供等として実施する場合、１機能を有する構成として実施を行う場合だけでなく、関連する機能を有する複数の構成を組み合わせ、複数の機能を有する１セットとして実施を行う場合も多く見られるようになってきた。
【０７０９】
図８８に示されるビデオセット１３００は、このような多機能化された構成であり、画像の符号化や復号（いずれか一方でもよいし、両方でも良い）に関する機能を有するデバイスに、その機能に関連するその他の機能を有するデバイスを組み合わせたものである。
【０７１０】
図８８に示されるように、ビデオセット１３００は、ビデオモジュール１３１１、外部メモリ１３１２、パワーマネージメントモジュール１３１３、およびフロントエンドモジュール１３１４等のモジュール群と、コネクティビティ１３２１、カメラ１３２２、およびセンサ１３２３等の関連する機能を有するデバイスとを有する。
【０７１１】
モジュールは、互いに関連するいくつかの部品的機能をまとめ、まとまりのある機能を持った部品としたものである。具体的な物理的構成は任意であるが、例えば、それぞれ機能を有する複数のプロセッサ、抵抗やコンデンサ等の電子回路素子、その他のデバイス等を配線基板等に配置して一体化したものが考えられる。また、モジュールに他のモジュールやプロセッサ等を組み合わせて新たなモジュールとすることも考えられる。
【０７１２】
図８８の例の場合、ビデオモジュール１３１１は、画像処理に関する機能を有する構成を組み合わせたものであり、アプリケーションプロセッサ、ビデオプロセッサ、ブロードバンドモデム１３３３、およびRFモジュール１３３４を有する。
【０７１３】
プロセッサは、所定の機能を有する構成をSoC（System On a Chip）により半導体チップに集積したものであり、例えばシステムLSI（Large Scale Integration）等と称されるものもある。この所定の機能を有する構成は、論理回路（ハードウエア構成）であってもよいし、CPU、ROM、RAM等と、それらを用いて実行されるプログラム（ソフトウエア構成）であってもよいし、その両方を組み合わせたものであってもよい。例えば、プロセッサが、論理回路とCPU、ROM、RAM等とを有し、機能の一部を論理回路（ハードウエア構成）により実現し、その他の機能をCPUにおいて実行されるプログラム（ソフトウエア構成）により実現するようにしてもよい。
【０７１４】
図８８のアプリケーションプロセッサ１３３１は、画像処理に関するアプリケーションを実行するプロセッサである。このアプリケーションプロセッサ１３３１において実行されるアプリケーションは、所定の機能を実現するために、演算処理を行うだけでなく、例えばビデオプロセッサ１３３２等、ビデオモジュール１３１１内外の構成を必要に応じて制御することもできる。
【０７１５】
ビデオプロセッサ１３３２は、画像の符号化・復号（その一方または両方）に関する機能を有するプロセッサである。
【０７１６】
ブロードバンドモデム１３３３は、インターネットや公衆電話回線網等の広帯域の回線を介して行われる有線若しくは無線（またはその両方）の広帯域通信により送信するデータ（デジタル信号）をデジタル変調する等してアナログ信号に変換したり、その広帯域通信により受信したアナログ信号を復調してデータ（デジタル信号）に変換したりする。ブロードバンドモデム１３３３は、例えば、ビデオプロセッサ１３３２が処理する画像データ、画像データが符号化されたストリーム、アプリケーションプログラム、設定データ等、任意の情報を処理する。
【０７１７】
RFモジュール１３３４は、アンテナを介して送受信されるRF（Radio Frequency）信号に対して、周波数変換、変復調、増幅、フィルタ処理等を行うモジュールである。例えば、RFモジュール１３３４は、ブロードバンドモデム１３３３により生成されたベースバンド信号に対して周波数変換等を行ってRF信号を生成する。また、例えば、RFモジュール１３３４は、フロントエンドモジュール１３１４を介して受信されたRF信号に対して周波数変換等を行ってベースバンド信号を生成する。
【０７１８】
なお、図８８において点線１３４１に示されるように、アプリケーションプロセッサ１３３１とビデオプロセッサ１３３２を、一体化し、１つのプロセッサとして構成されるようにしてもよい。
【０７１９】
外部メモリ１３１２は、ビデオモジュール１３１１の外部に設けられた、ビデオモジュール１３１１により利用される記憶デバイスを有するモジュールである。この外部メモリ１３１２の記憶デバイスは、どのような物理構成により実現するようにしてもよいが、一般的にフレーム単位の画像データのような大容量のデータの格納に利用されることが多いので、例えばDRAM（Dynamic Random Access Memory）のような比較的安価で大容量の半導体メモリにより実現するのが望ましい。
【０７２０】
パワーマネージメントモジュール１３１３は、ビデオモジュール１３１１（ビデオモジュール１３１１内の各構成）への電力供給を管理し、制御する。
【０７２１】
フロントエンドモジュール１３１４は、RFモジュール１３３４に対してフロントエンド機能（アンテナ側の送受信端の回路）を提供するモジュールである。図８８に示されるように、フロントエンドモジュール１３１４は、例えば、アンテナ部１３５１、フィルタ１３５２、および増幅部１３５３を有する。
【０７２２】
アンテナ部１３５１は、無線信号を送受信するアンテナおよびその周辺の構成を有する。アンテナ部１３５１は、増幅部１３５３から供給される信号を無線信号として送信し、受信した無線信号を電気信号（RF信号）としてフィルタ１３５２に供給する。フィルタ１３５２は、アンテナ部１３５１を介して受信されたRF信号に対してフィルタ処理等を行い、処理後のRF信号をRFモジュール１３３４に供給する。増幅部１３５３は、RFモジュール１３３４から供給されるRF信号を増幅し、アンテナ部１３５１に供給する。
【０７２３】
コネクティビティ１３２１は、外部との接続に関する機能を有するモジュールである。コネクティビティ１３２１の物理構成は、任意である。例えば、コネクティビティ１３２１は、ブロードバンドモデム１３３３が対応する通信規格以外の通信機能を有する構成や、外部入出力端子等を有する。
【０７２４】
例えば、コネクティビティ１３２１が、Bluetooth（登録商標）、IEEE 802.11（例えばWi-Fi（Wireless Fidelity、登録商標））、NFC（Near Field Communication）、IrDA（InfraRed Data Association）等の無線通信規格に準拠する通信機能を有するモジュールや、その規格に準拠した信号を送受信するアンテナ等を有するようにしてもよい。また、例えば、コネクティビティ１３２１が、USB（Universal Serial Bus）、HDMI（登録商標）（High-Definition Multimedia Interface）等の有線通信規格に準拠する通信機能を有するモジュールや、その規格に準拠した端子を有するようにしてもよい。さらに、例えば、コネクティビティ１３２１が、アナログ入出力端子等のその他のデータ（信号）伝送機能等を有するようにしてもよい。
【０７２５】
なお、コネクティビティ１３２１が、データ（信号）の伝送先のデバイスを含むようにしてもよい。例えば、コネクティビティ１３２１が、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等の記録媒体に対してデータの読み出しや書き込みを行うドライブ（リムーバブルメディアのドライブだけでなく、ハードディスク、SSD（Solid State Drive）、NAS（Network Attached Storage）等も含む）を有するようにしてもよい。また、コネクティビティ１３２１が、画像や音声の出力デバイス（モニタやスピーカ等）を有するようにしてもよい。
【０７２６】
カメラ１３２２は、被写体を撮像し、被写体の画像データを得る機能を有するモジュールである。カメラ１３２２の撮像により得られた画像データは、例えば、ビデオプロセッサ１３３２に供給されて符号化される。
【０７２７】
センサ１３２３は、例えば、音声センサ、超音波センサ、光センサ、照度センサ、赤外線センサ、イメージセンサ、回転センサ、角度センサ、角速度センサ、速度センサ、加速度センサ、傾斜センサ、磁気識別センサ、衝撃センサ、温度センサ等、任意のセンサ機能を有するモジュールである。センサ１３２３により検出されたデータは、例えば、アプリケーションプロセッサ１３３１に供給されてアプリケーション等により利用される。
【０７２８】
以上においてモジュールとして説明した構成をプロセッサとして実現するようにしてもよいし、逆にプロセッサとして説明した構成をモジュールとして実現するようにしてもよい。
【０７２９】
以上のような構成のビデオセット１３００において、後述するようにビデオプロセッサ１３３２に本技術を適用することができる。したがって、ビデオセット１３００は、本技術を適用したセットとして実施することができる。
【０７３０】
＜ビデオプロセッサの構成例＞
図８９は、本技術を適用したビデオプロセッサ１３３２（図８８）の概略的な構成の一例を示している。
【０７３１】
図８９の例の場合、ビデオプロセッサ１３３２は、ビデオ信号およびオーディオ信号の入力を受けてこれらを所定の方式で符号化する機能と、符号化されたビデオデータおよびオーディオデータを復号し、ビデオ信号およびオーディオ信号を再生出力する機能とを有する。
【０７３２】
図８９に示されるように、ビデオプロセッサ１３３２は、ビデオ入力処理部１４０１、第１画像拡大縮小部１４０２、第２画像拡大縮小部１４０３、ビデオ出力処理部１４０４、フレームメモリ１４０５、およびメモリ制御部１４０６を有する。また、ビデオプロセッサ１３３２は、エンコード・デコードエンジン１４０７、ビデオES（Elementary Stream）バッファ１４０８Ａおよび１４０８Ｂ、並びに、オーディオESバッファ１４０９Ａおよび１４０９Ｂを有する。さらに、ビデオプロセッサ１３３２は、オーディオエンコーダ１４１０、オーディオデコーダ１４１１、多重化部（MUX（Multiplexer））１４１２、逆多重化部（DMUX（Demultiplexer））１４１３、およびストリームバッファ１４１４を有する。
【０７３３】
ビデオ入力処理部１４０１は、例えばコネクティビティ１３２１（図８８）等から入力されたビデオ信号を取得し、デジタル画像データに変換する。第１画像拡大縮小部１４０２は、画像データに対してフォーマット変換や画像の拡大縮小処理等を行う。第２画像拡大縮小部１４０３は、画像データに対して、ビデオ出力処理部１４０４を介して出力する先でのフォーマットに応じて画像の拡大縮小処理を行ったり、第１画像拡大縮小部１４０２と同様のフォーマット変換や画像の拡大縮小処理等を行ったりする。ビデオ出力処理部１４０４は、画像データに対して、フォーマット変換やアナログ信号への変換等を行って、再生されたビデオ信号として例えばコネクティビティ１３２１等に出力する。
【０７３４】
フレームメモリ１４０５は、ビデオ入力処理部１４０１、第１画像拡大縮小部１４０２、第２画像拡大縮小部１４０３、ビデオ出力処理部１４０４、およびエンコード・デコードエンジン１４０７によって共用される画像データ用のメモリである。フレームメモリ１４０５は、例えばDRAM等の半導体メモリとして実現される。
【０７３５】
メモリ制御部１４０６は、エンコード・デコードエンジン１４０７からの同期信号を受けて、アクセス管理テーブル１４０６Ａに書き込まれたフレームメモリ１４０５へのアクセススケジュールに従ってフレームメモリ１４０５に対する書き込み・読み出しのアクセスを制御する。アクセス管理テーブル１４０６Ａは、エンコード・デコードエンジン１４０７、第１画像拡大縮小部１４０２、第２画像拡大縮小部１４０３等で実行される処理に応じて、メモリ制御部１４０６により更新される。
【０７３６】
エンコード・デコードエンジン１４０７は、画像データのエンコード処理、並びに、画像データが符号化されたデータであるビデオストリームのデコード処理を行う。例えば、エンコード・デコードエンジン１４０７は、フレームメモリ１４０５から読み出した画像データを符号化し、ビデオストリームとしてビデオESバッファ１４０８Ａに順次書き込む。また、例えば、ビデオESバッファ１４０８Ｂからビデオストリームを順次読み出して復号し、画像データとしてフレームメモリ１４０５に順次書き込む。エンコード・デコードエンジン１４０７は、これらの符号化や復号において、フレームメモリ１４０５を作業領域として使用する。また、エンコード・デコードエンジン１４０７は、例えばマクロブロック毎の処理を開始するタイミングで、メモリ制御部１４０６に対して同期信号を出力する。
【０７３７】
ビデオESバッファ１４０８Ａは、エンコード・デコードエンジン１４０７によって生成されたビデオストリームをバッファリングして、多重化部（MUX）１４１２に供給する。ビデオESバッファ１４０８Ｂは、逆多重化部（DMUX）１４１３から供給されたビデオストリームをバッファリングして、エンコード・デコードエンジン１４０７に供給する。
【０７３８】
オーディオESバッファ１４０９Ａは、オーディオエンコーダ１４１０によって生成されたオーディオストリームをバッファリングして、多重化部（MUX）１４１２に供給する。オーディオESバッファ１４０９Ｂは、逆多重化部（DMUX）１４１３から供給されたオーディオストリームをバッファリングして、オーディオデコーダ１４１１に供給する。
【０７３９】
オーディオエンコーダ１４１０は、例えばコネクティビティ１３２１等から入力されたオーディオ信号を例えばデジタル変換し、例えばMPEGオーディオ方式やAC3（AudioCode number 3）方式等の所定の方式で符号化する。オーディオエンコーダ１４１０は、オーディオ信号が符号化されたデータであるオーディオストリームをオーディオESバッファ１４０９Ａに順次書き込む。オーディオデコーダ１４１１は、オーディオESバッファ１４０９Ｂから供給されたオーディオストリームを復号し、例えばアナログ信号への変換等を行って、再生されたオーディオ信号として例えばコネクティビティ１３２１等に供給する。
【０７４０】
多重化部（MUX）１４１２は、ビデオストリームとオーディオストリームとを多重化する。この多重化の方法（すなわち、多重化により生成されるビットストリームのフォーマット）は任意である。また、この多重化の際に、多重化部（MUX）１４１２は、所定のヘッダ情報等をビットストリームに付加することもできる。つまり、多重化部（MUX）１４１２は、多重化によりストリームのフォーマットを変換することができる。例えば、多重化部（MUX）１４１２は、ビデオストリームとオーディオストリームとを多重化することにより、転送用のフォーマットのビットストリームであるトランスポートストリームに変換する。また、例えば、多重化部（MUX）１４１２は、ビデオストリームとオーディオストリームとを多重化することにより、記録用のファイルフォーマットのデータ（ファイルデータ）に変換する。
【０７４１】
逆多重化部（DMUX）１４１３は、多重化部（MUX）１４１２による多重化に対応する方法で、ビデオストリームとオーディオストリームとが多重化されたビットストリームを逆多重化する。つまり、逆多重化部（DMUX）１４１３は、ストリームバッファ１４１４から読み出されたビットストリームからビデオストリームとオーディオストリームとを抽出する（ビデオストリームとオーディオストリームとを分離する）。つまり、逆多重化部（DMUX）１４１３は、逆多重化によりストリームのフォーマットを変換（多重化部（MUX）１４１２による変換の逆変換）することができる。例えば、逆多重化部（DMUX）１４１３は、例えばコネクティビティ１３２１やブロードバンドモデム１３３３等から供給されたトランスポートストリームを、ストリームバッファ１４１４を介して取得し、逆多重化することにより、ビデオストリームとオーディオストリームとに変換することができる。また、例えば、逆多重化部（DMUX）１４１３は、例えばコネクティビティ１３２１により各種記録媒体から読み出されたファイルデータを、ストリームバッファ１４１４を介して取得し、逆多重化することにより、ビデオストリームとオーディオストリームとに変換することができる。
【０７４２】
ストリームバッファ１４１４は、ビットストリームをバッファリングする。例えば、ストリームバッファ１４１４は、多重化部（MUX）１４１２から供給されたトランスポートストリームをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、例えばコネクティビティ１３２１やブロードバンドモデム１３３３等に供給する。
【０７４３】
また、例えば、ストリームバッファ１４１４は、多重化部（MUX）１４１２から供給されたファイルデータをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、例えばコネクティビティ１３２１等に供給し、各種記録媒体に記録させる。
【０７４４】
さらに、ストリームバッファ１４１４は、例えばコネクティビティ１３２１やブロードバンドモデム１３３３等を介して取得したトランスポートストリームをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、逆多重化部（DMUX）１４１３に供給する。
【０７４５】
また、ストリームバッファ１４１４は、例えばコネクティビティ１３２１等において各種記録媒体から読み出されたファイルデータをバッファリングし、所定のタイミングにおいて、または外部からの要求等に基づいて、逆多重化部（DMUX）１４１３に供給する。
【０７４６】
次に、このような構成のビデオプロセッサ１３３２の動作の例について説明する。例えば、コネクティビティ１３２１等からビデオプロセッサ１３３２に入力されたビデオ信号は、ビデオ入力処理部１４０１において４：２：２Ｙ／Ｃｂ／Ｃｒ方式等の所定の方式のデジタル画像データに変換され、フレームメモリ１４０５に順次書き込まれる。このデジタル画像データは、第１画像拡大縮小部１４０２または第２画像拡大縮小部１４０３に読み出されて、４：２：０Ｙ／Ｃｂ／Ｃｒ方式等の所定の方式へのフォーマット変換および拡大縮小処理が行われ、再びフレームメモリ１４０５に書き込まれる。この画像データは、エンコード・デコードエンジン１４０７によって符号化され、ビデオストリームとしてビデオESバッファ１４０８Ａに書き込まれる。
【０７４７】
また、コネクティビティ１３２１等からビデオプロセッサ１３３２に入力されたオーディオ信号は、オーディオエンコーダ１４１０によって符号化され、オーディオストリームとして、オーディオESバッファ１４０９Ａに書き込まれる。
【０７４８】
ビデオESバッファ１４０８Ａのビデオストリームと、オーディオESバッファ１４０９Ａのオーディオストリームは、多重化部（MUX）１４１２に読み出されて多重化され、トランスポートストリームまたはファイルデータ等に変換される。多重化部（MUX）１４１２により生成されたトランスポートストリームは、ストリームバッファ１４１４にバッファされた後、例えばコネクティビティ１３２１やブロードバンドモデム１３３３等を介して外部ネットワークに出力される。また、多重化部（MUX）１４１２により生成されたファイルデータは、ストリームバッファ１４１４にバッファされた後、例えばコネクティビティ１３２１等に出力され、各種記録媒体に記録される。
【０７４９】
また、例えばコネクティビティ１３２１やブロードバンドモデム１３３３等を介して外部ネットワークからビデオプロセッサ１３３２に入力されたトランスポートストリームは、ストリームバッファ１４１４にバッファされた後、逆多重化部（DMUX）１４１３により逆多重化される。また、例えばコネクティビティ１３２１等において各種記録媒体から読み出され、ビデオプロセッサ１３３２に入力されたファイルデータは、ストリームバッファ１４１４にバッファされた後、逆多重化部（DMUX）１４１３により逆多重化される。つまり、ビデオプロセッサ１３３２に入力されたトランスポートストリームまたはファイルデータは、逆多重化部（DMUX）１４１３によりビデオストリームとオーディオストリームとに分離される。
【０７５０】
オーディオストリームは、オーディオESバッファ１４０９Ｂを介してオーディオデコーダ１４１１に供給され、復号されてオーディオ信号が再生される。また、ビデオストリームは、ビデオESバッファ１４０８Ｂに書き込まれた後、エンコード・デコードエンジン１４０７により順次読み出されて復号されてフレームメモリ１４０５に書き込まれる。復号された画像データは、第２画像拡大縮小部１４０３によって拡大縮小処理されて、フレームメモリ１４０５に書き込まれる。そして、復号された画像データは、ビデオ出力処理部１４０４に読み出されて、４：２：２Ｙ／Ｃｂ／Ｃｒ方式等の所定の方式にフォーマット変換され、さらにアナログ信号に変換されて、ビデオ信号が再生出力される。
【０７５１】
このように構成されるビデオプロセッサ１３３２に本技術を適用する場合、エンコード・デコードエンジン１４０７に、上述した各実施形態に係る本技術を適用すればよい。つまり、例えば、エンコード・デコードエンジン１４０７が、上述した画像符号化装置１００の機能若しくは画像復号装置２００の機能またはその両方を有するようにしてもよい。このようにすることにより、ビデオプロセッサ１３３２は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７５２】
なお、エンコード・デコードエンジン１４０７において、本技術（すなわち、画像符号化装置１００の機能若しくは画像復号装置２００の機能またはその両方）は、論理回路等のハードウエアにより実現するようにしてもよいし、組み込みプログラム等のソフトウエアにより実現するようにしてもよいし、それらの両方により実現するようにしてもよい。
【０７５３】
＜ビデオプロセッサの他の構成例＞
図９０は、本技術を適用したビデオプロセッサ１３３２の概略的な構成の他の例を示している。図９０の例の場合、ビデオプロセッサ１３３２は、ビデオデータを所定の方式で符号化・復号する機能を有する。
【０７５４】
より具体的には、図９０に示されるように、ビデオプロセッサ１３３２は、制御部１５１１、ディスプレイインタフェース１５１２、ディスプレイエンジン１５１３、画像処理エンジン１５１４、および内部メモリ１５１５を有する。また、ビデオプロセッサ１３３２は、コーデックエンジン１５１６、メモリインタフェース１５１７、多重化・逆多重化部（MUX DMUX）１５１８、ネットワークインタフェース１５１９、およびビデオインタフェース１５２０を有する。
【０７５５】
制御部１５１１は、ディスプレイインタフェース１５１２、ディスプレイエンジン１５１３、画像処理エンジン１５１４、およびコーデックエンジン１５１６等、ビデオプロセッサ１３３２内の各処理部の動作を制御する。
【０７５６】
図９０に示されるように、制御部１５１１は、例えば、メインCPU１５３１、サブCPU１５３２、およびシステムコントローラ１５３３を有する。メインCPU１５３１は、ビデオプロセッサ１３３２内の各処理部の動作を制御するためのプログラム等を実行する。メインCPU１５３１は、そのプログラム等に従って制御信号を生成し、各処理部に供給する（つまり、各処理部の動作を制御する）。サブCPU１５３２は、メインCPU１５３１の補助的な役割を果たす。例えば、サブCPU１５３２は、メインCPU１５３１が実行するプログラム等の子プロセスやサブルーチン等を実行する。システムコントローラ１５３３は、メインCPU１５３１およびサブCPU１５３２が実行するプログラムを指定する等、メインCPU１５３１およびサブCPU１５３２の動作を制御する。
【０７５７】
ディスプレイインタフェース１５１２は、制御部１５１１の制御の下、画像データを例えばコネクティビティ１３２１等に出力する。例えば、ディスプレイインタフェース１５１２は、デジタルデータの画像データをアナログ信号に変換し、再生されたビデオ信号として、またはデジタルデータの画像データのまま、コネクティビティ１３２１のモニタ装置等に出力する。
【０７５８】
ディスプレイエンジン１５１３は、制御部１５１１の制御の下、画像データに対して、その画像を表示させるモニタ装置等のハードウエアスペックに合わせるように、フォーマット変換、サイズ変換、色域変換等の各種変換処理を行う。
【０７５９】
画像処理エンジン１５１４は、制御部１５１１の制御の下、画像データに対して、例えば画質改善のためのフィルタ処理等、所定の画像処理を施す。
【０７６０】
内部メモリ１５１５は、ディスプレイエンジン１５１３、画像処理エンジン１５１４、およびコーデックエンジン１５１６により共用される、ビデオプロセッサ１３３２の内部に設けられたメモリである。内部メモリ１５１５は、例えば、ディスプレイエンジン１５１３、画像処理エンジン１５１４、およびコーデックエンジン１５１６の間で行われるデータの授受に利用される。例えば、内部メモリ１５１５は、ディスプレイエンジン１５１３、画像処理エンジン１５１４、またはコーデックエンジン１５１６から供給されるデータを格納し、必要に応じて（例えば、要求に応じて）、そのデータを、ディスプレイエンジン１５１３、画像処理エンジン１５１４、またはコーデックエンジン１５１６に供給する。この内部メモリ１５１５は、どのような記憶デバイスにより実現するようにしてもよいが、一般的にブロック単位の画像データやパラメータ等といった小容量のデータの格納に利用することが多いので、例えばSRAM（Static Random Access Memory）のような比較的（例えば外部メモリ１３１２と比較して）小容量だが応答速度が高速な半導体メモリにより実現するのが望ましい。
【０７６１】
コーデックエンジン１５１６は、画像データの符号化や復号に関する処理を行う。このコーデックエンジン１５１６が対応する符号化・復号の方式は任意であり、その数は１つであってもよいし、複数であってもよい。例えば、コーデックエンジン１５１６は、複数の符号化・復号方式のコーデック機能を備え、その中から選択されたもので画像データの符号化または符号化データの復号を行うようにしてもよい。
【０７６２】
図９０に示される例において、コーデックエンジン１５１６は、コーデックに関する処理の機能ブロックとして、例えば、MPEG-2 Video１５４１、AVC/H.264１５４２、HEVC/H.265１５４３、HEVC/H.265(Scalable)１５４４、HEVC/H.265(Multi-view)１５４５、およびMPEG-DASH１５５１を有する。
【０７６３】
MPEG-2 Video１５４１は、画像データをMPEG-2方式で符号化したり復号したりする機能ブロックである。AVC/H.264１５４２は、画像データをAVC方式で符号化したり復号したりする機能ブロックである。HEVC/H.265１５４３は、画像データをHEVC方式で符号化したり復号したりする機能ブロックである。HEVC/H.265(Scalable)１５４４は、画像データをHEVC方式でスケーラブル符号化したりスケーラブル復号したりする機能ブロックである。HEVC/H.265(Multi-view)１５４５は、画像データをHEVC方式で多視点符号化したり多視点復号したりする機能ブロックである。
【０７６４】
MPEG-DASH１５５１は、画像データをMPEG-DASH（MPEG-Dynamic Adaptive Streaming over HTTP）方式で送受信する機能ブロックである。MPEG-DASHは、HTTP（HyperText Transfer Protocol）を使ってビデオのストリーミングを行う技術であり、予め用意された解像度等が互いに異なる複数の符号化データの中から適切なものをセグメント単位で選択し伝送することを特徴の１つとする。MPEG-DASH１５５１は、規格に準拠するストリームの生成やそのストリームの伝送制御等を行い、画像データの符号化・復号については、上述したMPEG-2 Video１５４１乃至HEVC/H.265(Multi-view)１５４５を利用する。
【０７６５】
メモリインタフェース１５１７は、外部メモリ１３１２用のインタフェースである。画像処理エンジン１５１４やコーデックエンジン１５１６から供給されるデータは、メモリインタフェース１５１７を介して外部メモリ１３１２に供給される。また、外部メモリ１３１２から読み出されたデータは、メモリインタフェース１５１７を介してビデオプロセッサ１３３２（画像処理エンジン１５１４またはコーデックエンジン１５１６）に供給される。
【０７６６】
多重化・逆多重化部（MUX DMUX）１５１８は、符号化データのビットストリーム、画像データ、ビデオ信号等、画像に関する各種データの多重化や逆多重化を行う。この多重化・逆多重化の方法は任意である。例えば、多重化の際に、多重化・逆多重化部（MUX DMUX）１５１８は、複数のデータを１つにまとめるだけでなく、所定のヘッダ情報等をそのデータに付加することもできる。また、逆多重化の際に、多重化・逆多重化部（MUX DMUX）１５１８は、１つのデータを複数に分割するだけでなく、分割した各データに所定のヘッダ情報等を付加することもできる。つまり、多重化・逆多重化部（MUX DMUX）１５１８は、多重化・逆多重化によりデータのフォーマットを変換することができる。例えば、多重化・逆多重化部（MUX DMUX）１５１８は、ビットストリームを多重化することにより、転送用のフォーマットのビットストリームであるトランスポートストリームや、記録用のファイルフォーマットのデータ（ファイルデータ）に変換することができる。もちろん、逆多重化によりその逆変換も可能である。
【０７６７】
ネットワークインタフェース１５１９は、例えばブロードバンドモデム１３３３やコネクティビティ１３２１等向けのインタフェースである。ビデオインタフェース１５２０は、例えばコネクティビティ１３２１やカメラ１３２２等向けのインタフェースである。
【０７６８】
次に、このようなビデオプロセッサ１３３２の動作の例について説明する。例えば、コネクティビティ１３２１やブロードバンドモデム１３３３等を介して外部ネットワークからトランスポートストリームを受信すると、そのトランスポートストリームは、ネットワークインタフェース１５１９を介して多重化・逆多重化部（MUX DMUX）１５１８に供給されて逆多重化され、コーデックエンジン１５１６により復号される。コーデックエンジン１５１６の復号により得られた画像データは、例えば、画像処理エンジン１５１４により所定の画像処理が施され、ディスプレイエンジン１５１３により所定の変換が行われ、ディスプレイインタフェース１５１２を介して例えばコネクティビティ１３２１等に供給され、その画像がモニタに表示される。また、例えば、コーデックエンジン１５１６の復号により得られた画像データは、コーデックエンジン１５１６により再符号化され、多重化・逆多重化部（MUX DMUX）１５１８により多重化されてファイルデータに変換され、ビデオインタフェース１５２０を介して例えばコネクティビティ１３２１等に出力され、各種記録媒体に記録される。
【０７６９】
さらに、例えば、コネクティビティ１３２１等により図示せぬ記録媒体から読み出された、画像データが符号化された符号化データのファイルデータは、ビデオインタフェース１５２０を介して多重化・逆多重化部（MUX DMUX）１５１８に供給されて逆多重化され、コーデックエンジン１５１６により復号される。コーデックエンジン１５１６の復号により得られた画像データは、画像処理エンジン１５１４により所定の画像処理が施され、ディスプレイエンジン１５１３により所定の変換が行われ、ディスプレイインタフェース１５１２を介して例えばコネクティビティ１３２１等に供給され、その画像がモニタに表示される。また、例えば、コーデックエンジン１５１６の復号により得られた画像データは、コーデックエンジン１５１６により再符号化され、多重化・逆多重化部（MUX DMUX）１５１８により多重化されてトランスポートストリームに変換され、ネットワークインタフェース１５１９を介して例えばコネクティビティ１３２１やブロードバンドモデム１３３３等に供給され図示せぬ他の装置に伝送される。
【０７７０】
なお、ビデオプロセッサ１３３２内の各処理部の間での画像データやその他のデータの授受は、例えば、内部メモリ１５１５や外部メモリ１３１２を利用して行われる。また、パワーマネージメントモジュール１３１３は、例えば制御部１５１１への電力供給を制御する。
【０７７１】
このように構成されるビデオプロセッサ１３３２に本技術を適用する場合、コーデックエンジン１５１６に、上述した各実施形態に係る本技術を適用すればよい。つまり、例えば、コーデックエンジン１５１６が、上述した画像符号化装置１００の機能若しくは画像復号装置２００の機能またはその両方を有するようにすればよい。このようにすることにより、ビデオプロセッサ１３３２は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７７２】
なお、コーデックエンジン１５１６において、本技術（すなわち、画像符号化装置１００の機能）は、論理回路等のハードウエアにより実現するようにしてもよいし、組み込みプログラム等のソフトウエアにより実現するようにしてもよいし、それらの両方により実現するようにしてもよい。
【０７７３】
以上にビデオプロセッサ１３３２の構成を２例示したが、ビデオプロセッサ１３３２の構成は任意であり、上述した２例以外のものであってもよい。また、このビデオプロセッサ１３３２は、１つの半導体チップとして構成されるようにしてもよいが、複数の半導体チップとして構成されるようにしてもよい。例えば、複数の半導体を積層する３次元積層LSIとしてもよい。また、複数のLSIにより実現されるようにしてもよい。
【０７７４】
＜装置への適用例＞
ビデオセット１３００は、画像データを処理する各種装置に組み込むことができる。例えば、ビデオセット１３００は、テレビジョン装置９００（図８４）、携帯電話機９２０（図８５）、記録再生装置９４０（図８６）、撮像装置９６０（図８７）等に組み込むことができる。ビデオセット１３００を組み込むことにより、その装置は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７７５】
なお、上述したビデオセット１３００の各構成の一部であっても、ビデオプロセッサ１３３２を含むものであれば、本技術を適用した構成として実施することができる。例えば、ビデオプロセッサ１３３２のみを本技術を適用したビデオプロセッサとして実施することができる。また、例えば、上述したように点線１３４１により示されるプロセッサやビデオモジュール１３１１等を、本技術を適用したプロセッサやモジュール等として実施することができる。さらに、例えば、ビデオモジュール１３１１、外部メモリ１３１２、パワーマネージメントモジュール１３１３、およびフロントエンドモジュール１３１４を組み合わせ、本技術を適用したビデオユニット１３６１として実施することもできる。いずれの構成の場合であっても、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７７６】
つまり、ビデオプロセッサ１３３２を含むものであればどのような構成であっても、ビデオセット１３００の場合と同様に、画像データを処理する各種装置に組み込むことができる。例えば、ビデオプロセッサ１３３２、点線１３４１により示されるプロセッサ、ビデオモジュール１３１１、または、ビデオユニット１３６１を、テレビジョン装置９００（図８４）、携帯電話機９２０（図８５）、記録再生装置９４０（図８６）、撮像装置９６０（図８７）等に組み込むことができる。そして、本技術を適用したいずれかの構成を組み込むことにより、その装置は、ビデオセット１３００の場合と同様に、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７７７】
＜第６の応用例：ネットワークシステム＞
また、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。図９１は、本技術を適用したネットワークシステムの概略的な構成の一例を示している。
【０７７８】
図９１に示されるネットワークシステム１６００は、機器同士が、ネットワークを介して画像（動画像）に関する情報を授受するシステムである。このネットワークシステム１６００のクラウドサービス１６０１は、自身に通信可能に接続されるコンピュータ１６１１、AV（Audio Visual）機器１６１２、携帯型情報処理端末１６１３、IoT（Internet of Things）デバイス１６１４等の端末に対して、画像（動画像）に関するサービスを提供するシステムである。例えば、クラウドサービス１６０１は、所謂動画配信（オンデマンドやライブ配信）のような、画像（動画像）のコンテンツの供給サービスを端末に提供する。また、例えば、クラウドサービス１６０１は、端末から画像（動画像）のコンテンツを受け取って保管するバックアップサービスを提供する。また、例えば、クラウドサービス１６０１は、端末同士の画像（動画像）のコンテンツの授受を仲介するサービスを提供する。
【０７７９】
クラウドサービス１６０１の物理構成は任意である。例えば、クラウドサービス１６０１は、動画像を保存し、管理するサーバ、動画像を端末に配信するサーバ、動画像を端末から取得するサーバ、ユーザ（端末）や課金を管理するサーバ等の各種サーバや、インターネットやLAN等の任意のネットワークを有するようにしてもよい。
【０７８０】
コンピュータ１６１１は、例えば、パーソナルコンピュータ、サーバ、ワークステーション等のような情報処理装置により構成される。AV機器１６１２は、例えば、テレビジョン受像機、ハードディスクレコーダ、ゲーム機器、カメラ等のような画像処理装置により構成される。携帯型情報処理端末１６１３は、例えば、ノート型パーソナルコンピュータ、タブレット端末、携帯電話機、スマートフォン等のような携帯型の情報処理装置により構成される。IoTデバイス１６１４は、例えば、機械、家電、家具、その他の物、ICタグ、カード型デバイス等、画像に関する処理を行う任意の物体により構成される。これらの端末は、いずれも通信機能を有し、クラウドサービス１６０１に接続し（セッションを確立し）、クラウドサービス１６０１と情報の授受を行う（すなわち通信を行う）ことができる。また、各端末は、他の端末と通信を行うこともできる。端末間の通信は、クラウドサービス１６０１を介して行うようにしてもよいし、クラウドサービス１６０１を介さずに行うようにしてもよい。
【０７８１】
以上のようなネットワークシステム１６００に本技術を適用し、端末間や、端末とクラウドサービス１６０１との間で画像（動画像）のデータが授受される際に、その画像データを各実施の形態において上述したように符号化・復号するようにしてもよい。つまり、端末（コンピュータ１６１１乃至IoTデバイス１６１４）やクラウドサービス１６０１が、それぞれ、上述した画像符号化装置１００や画像復号装置２００の機能を有するようにしてもよい。このようにすることにより、画像データを授受する端末（コンピュータ１６１１乃至IoTデバイス１６１４）やクラウドサービス１６０１は、図１乃至図８２を参照して上述した各実施の形態と同様の効果を得ることができる。
【０７８２】
＜その他＞
なお、符号化データ（ビットストリーム）に関する各種情報は、符号化データに多重化されて伝送され又は記録されるようにしてもよいし、符号化データに多重化されることなく、符号化データと関連付けられた別個のデータとして伝送され又は記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る（リンクさせ得る）ようにすることを意味する。つまり、互いに関連付けられたデータは、１つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の記録媒体（又は同一の記録媒体の別の記録エリア）に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、１フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
【０７８３】
また、上述したように、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを１つのデータにまとめるといった、複数の物を１つにまとめることを意味し、上述の「関連付ける」の１つの方法を意味する。
【０７８４】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０７８５】
例えば、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０７８６】
また、例えば、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。
【０７８７】
また、例えば、本技術は、１つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０７８８】
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能（機能ブロック等）を有し、必要な情報を得ることができるようにすればよい。
【０７８９】
また、例えば、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０７９０】
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
【０７９１】
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術を、他の実施の形態において説明した本技術と組み合わせて実施することもできる。また、上述した任意の本技術を、上述していない他の技術と併用して実施することもできる。
【０７９２】
なお、本技術は以下のような構成も取ることができる。
（１）  画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部
を備える画像処理装置。
（２）  前記予測残差に対する変換処理であるプライマリ変換を行うプライマリ変換部と、
前記プライマリ変換部により前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数に対する変換処理であるセカンダリ変換を行うセカンダリ変換部と
をさらに備え、
前記クリップ処理部は、前記セカンダリ変換部により前記プライマリ変換係数が前記セカンダリ変換されて得られるセカンダリ変換係数をクリップするように構成される
（１）に記載の画像処理装置。
（３）  前記プライマリ変換は直交変換であり、
前記セカンダリ変換は、
前記プライマリ変換係数を１次元のベクトルに変換し、
前記１次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記１次元のベクトルのスケーリングを行い、
スケーリングされた前記１次元のベクトルを行列化する
変換処理である
（１）または（２）に記載の画像処理装置。
（４）  前記変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルに対する行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルのスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
をさらに備え、
前記クリップ処理部は、前記スケーリング部によりスケーリングされた前記１次元のベクトルをクリップするように構成され、
前記行列化部は、前記クリップ処理部によりクリップされた前記１次元のベクトルを行列化するように構成される
（１）乃至（３）のいずれかに記載の画像処理装置。
（５）  前記予測残差は変換ブロックのサブブロック毎に変換処理され、
前記クリップ処理部は、前記変換係数をサブブロック毎にクリップする
（１）乃至（４）のいずれかに記載の画像処理装置。
（６）  前記サブブロックは、４×４の変換係数により構成される
（１）乃至（５）のいずれかに記載の画像処理装置。
（７）  前記上限値は、215 - 1であり、
前記下限値は、-215である
（１）乃至（６）のいずれかに記載の画像処理装置。
（８）  前記クリップ処理部によりクリップされた前記変換係数に対して量子化を行う量子化部と、
前記量子化部による前記変化係数が量子化されて得られる量子化変換係数レベルを符号化する符号化部と
をさらに備える（１）乃至（７）のいずれかに記載の画像処理装置。
（９）  前記予測画像を生成する予測部
をさらに備える（１）乃至（８）のいずれかに記載の画像処理装置。
（１０）  画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする
画像処理方法。
（１１）  逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップするクリップ処理部
を備える画像処理装置。
（１２）  前記変換係数に対して逆セカンダリ変換を行う逆セカンダリ変換部と、
前記変換係数が前記逆セカンダリ変換されて得られるプライマリ変換係数に対して逆プライマリ変換を行う逆プライマリ変換部と
をさらに備え、
前記クリップ処理部は、前記逆セカンダリ変換部により前記変換係数が前記逆セカンダリ変換されて得られる前記プライマリ変換係数をクリップするように構成され、
前記プライマリ変換部は、前記クリップ処理部によりクリップされた前記プライマリ変換係数に対して前記逆プライマリ変換を行うように構成される
（１１）に記載の画像処理装置。
（１３）  前記逆セカンダリ変換は、
前記変換係数を１次元のベクトルに変換し、
前記１次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記１次元のベクトルのスケーリングを行い、
スケーリングされた前記１次元のベクトルを行列化する
変換処理であり、
前記逆プライマリ変換は逆直交変換である
（１１）または（１２）に記載の画像処理装置。
（１４）  前記変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルに対する行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルのスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
をさらに備え、
前記クリップ処理部は、前記スケーリング部によりスケーリングされた前記１次元のベクトルをクリップするように構成され、
前記行列化部は、前記クリップ処理部によりクリップされた前記１次元のベクトルを行列化するように構成される
（１１）乃至（１３）のいずれかに記載の画像処理装置。
（１５）  前記クリップ処理部は、前記変換係数を変換ブロックのサブブロック毎にクリップする
（１１）乃至（１４）のいずれかに記載の画像処理装置。
（１６）  前記サブブロックは、４×４の変換係数により構成される
（１１）乃至（１５）のいずれかに記載の画像処理装置。
（１７）  前記上限値は、215 - 1であり、
前記下限値は、-215である
（１１）乃至（１６）のいずれかに記載の画像処理装置。
（１８）  符号化データを復号する復号部と、
前記復号部により、前記符号化データが復号されて得られる量子化変換係数レベルを逆量子化して前記変換係数を得る逆量子化部と
をさらに備える（１１）乃至（１７）のいずれかに記載の画像処理装置。
（１９）  前記予測画像を生成する予測部
をさらに備える（１１）乃至（１８）のいずれかに記載の画像処理装置。
（２０）  逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を、所定の上限値若しくは下限値またはその両方でクリップする
画像処理方法。
（２１）  画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルのシフト量を導出するシフト量導出部と、
前記１次元のベクトルに対する行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルに対して、前記シフト量導出部により導出される前記シフト量に応じたスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
を備える画像処理装置。
（２２）  前記シフト量導出部は、前記変換係数のダイナミックレンジ幅と、前記行列演算部が前記行列演算に用いる行列とに基づいて、前記シフト量を導出する
（２１）に記載の画像処理装置。
（２３）  前記変換係数のダイナミックレンジ幅は１６である
（２１）または（２２）に記載の画像処理装置。
（２４）  前記シフト量導出部は、前記変換係数のダイナミックレンジ幅と、前記行列とに基づいて、前記行列化部により前記１次元のベクトルが行列化されて得られるセカンダリ変換係数のダイナミックレンジの上限値を導出する
（２１）乃至（２３）のいずれかに記載の画像処理装置。
（２５）  前記シフト量導出部は、前記セカンダリ変換係数のダイナミックレンジの上限値と、中間バッファのダイナミックレンジの上限値との差に天井関数を用いて前記シフト量を導出する
（２１）乃至（２４）のいずれかに記載の画像処理装置。
（２６）  前記中間バッファのダイナミックレンジ幅は１６である
（２１）乃至（２５）のいずれかに記載の画像処理装置。
（２７）  前記変換係数を変換ブロックのサブブロック毎に処理される
（２１）乃至（２６）のいずれかに記載の画像処理装置。
（２８）  前記サブブロックは、４×４の変換係数により構成される
（２１）乃至（２７）のいずれかに記載の画像処理装置。
（２９）  前記予測残差をプライマリ変換するプライマリ変換部と、
前記行列化部により前記１次元のベクトルが行列化されて得られるセカンダリ変換係数に対して量子化を行う量子化部と、
前記量子化部により前記セカンダリ変化係数が量子化されて得られる量子化変換係数レベルを符号化する符号化部と
をさらに備え、
前記ラスタライズ部は、前記プライマリ変換部により前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数を１次元のベクトルに変換するように構成される
（２１）乃至（２８）のいずれかに記載の画像処理装置。
（３０）  画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換し、
前記１次元のベクトルのシフト量を導出し、
前記１次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記１次元のベクトルに対して、導出される前記シフト量に応じたスケーリングを行い、
スケーリングされた前記１次元のベクトルを行列化する
画像処理方法。
（３１）  逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルのシフト量を導出するシフト量導出部と、
前記１次元のベクトルに対する行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルに対して、前記シフト量導出部により導出される前記シフト量に応じたスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
を備える画像処理装置。
（３２）  前記シフト量導出部は、前記変換係数のダイナミックレンジ幅と、前記行列演算部が前記行列演算に用いる行列とに基づいて、前記シフト量を導出する
（３１）に記載の画像処理装置。
（３３）  前記変換係数のダイナミックレンジ幅は１６である
（３１）または（３２）に記載の画像処理装置。
（３４）  前記シフト量導出部は、前記変換係数のダイナミックレンジ幅と、前記行列とに基づいて、前記行列化部により前記１次元のベクトルが行列化されて得られるプライマリ変換係数のダイナミックレンジの上限値を導出する
（３１）乃至（３３）のいずれかに記載の画像処理装置。
（３５）  前記シフト量導出部は、前記プライマリ変換係数のダイナミックレンジの上限値と、中間バッファのダイナミックレンジの上限値との差に天井関数を用いて前記シフト量を導出する
（３１）乃至（３４）のいずれかに記載の画像処理装置。
（３６）  前記中間バッファのダイナミックレンジ幅は１６である
（３１）乃至（３５）のいずれかに記載の画像処理装置。
（３７）  前記変換係数を変換ブロックのサブブロック毎に処理される
（３１）乃至（３６）のいずれかに記載の画像処理装置。
（３８）  前記サブブロックは、４×４の変換係数により構成される
（３１）乃至（３７）のいずれかに記載の画像処理装置。
（３９）  符号化データを復号する復号部と、
前記復号部により前記符号化データが復号されて得られる量子化変換係数レベルを逆量子化する逆量子化部と、
前記行列化部により前記１次元のベクトルが行列化されて得られるプライマリ変換係数を逆プライマリ変換する逆プライマリ変換部と
をさらに備え、
前記ラスタライズ部は、前記逆量子化部により前記量子化変換係数レベルが前記逆量子化されて得られるセカンダリ変換係数を１次元のベクトルに変換するように構成される
（３１）乃至（３８）のいずれかに記載の画像処理装置。
（４０）  逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換し、
前記１次元のベクトルのシフト量を導出し、
前記１次元のベクトルに対する行列演算を行い、
前記行列演算が行われた前記１次元のベクトルに対して、導出される前記シフト量に応じたスケーリングを行い、
スケーリングされた前記１次元のベクトルを行列化する
画像処理方法。
（４１）  画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルに対して複数回の行列積よりなる行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルに対してスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
を備える画像処理装置。
（４２）  前記行列演算部は、第１の直交行列乃至第４の直交行列、並びに、第１の置換行列乃至第３の置換行列を用いて、前記ラスタライズ部により前記変換係数が変換されて得られた前記１次元のベクトルである第１の行ベクトルに対して前記行列演算を行い、第２の行ベクトルを求める
（４１）に記載の画像処理装置。
（４３）  前記行列演算部は、
前記第１の直交行列と前記第１の行ベクトルとの行列積である第１の行列積を求める第１の回転操作部と、
前記第１の置換行列と前記第１の行列積との行列積である第２の行列積を求める第１の置換操作部と、
前記第２の直交行列と前記第２の行列積との行列積である第３の行列積を求める第２の回転操作部と、
前記第２の置換行列と前記第１の置換行列の転置行列と前記第３の行列積との行列積である第４の行列積を求める第２の置換操作部と、
前記第３の直交行列と前記第４の行列積との行列積である第５の行列積を求める第３の回転操作部と、
前記第３の置換行列と前記第２の置換行列の転置行列と前記第５の行列積との行列積である第６の行列積を求める第３の置換操作部と、
前記第４の直交行列と前記第６の行列積との行列積である第７の行列積を求める第４の回転操作部と、
前記第３の置換行列の転置行列と前記第７の行列積との行列積を求めることにより、前記第２の行ベクトルを求める第４の置換操作部と
を備える（４１）または（４２）に記載の画像処理装置。
（４４）  前記第１の直交行列乃至前記第４の直交行列は、それぞれ、対角成分に互いに異なる８個の２×２回転行列を有し、その他の要素は０である疎行列である
（４１）乃至（４３）のいずれかに記載の画像処理装置。
（４５）  前記第１の置換行列乃至前記第３の置換行列は、置換対象の要素を互いに異なる順に並べ替える置換行列である
（４１）乃至（４４）のいずれかに記載の画像処理装置。
（４６）  前記第１の置換行列は、前記置換対象の第０番目乃至第１５番目の各要素を、第０番目の要素、第２番目の要素、第１番目の要素、第３番目の要素、第４番目の要素、第６番目の要素、第５番目の要素、第７番目の要素、第８番目の要素、第１０番目の要素、第９番目の要素、第１１番目の要素、第１２番目の要素、第１４番目の要素、第１３番目の要素、第１５番目の要素の順に並べ替え、
前記第２の置換行列は、前記置換対象の第０番目乃至第１５番目の各要素を、第０番目の要素、第４番目の要素、第２番目の要素、第６番目の要素、第１番目の要素、第５番目の要素、第３番目の要素、第７番目の要素、第８番目の要素、第１２番目の要素、第１０番目の要素、第１４番目の要素、第９番目の要素、第１３番目の要素、第１１番目の要素、第１５番目の要素の順に並べ替え、
前記第３の置換行列は、前記置換対象の第０番目乃至第１５番目の各要素を、第０番目の要素、第８番目の要素、第２番目の要素、第１０番目の要素、第４番目の要素、第１２番目の要素、第６番目の要素、第１４番目の要素、第１番目の要素、第９番目の要素、第３番目の要素、第１１番目の要素、第５番目の要素、第１３番目の要素、第７番目の要素、第１５番目の要素の順に並べ替える
（４１）乃至（４５）のいずれかに記載の画像処理装置。
（４７）  前記予測残差をプライマリ変換するプライマリ変換部をさらに備え、
前記ラスタライズ部は、前記プライマリ変換部により前記予測残差が前記プライマリ変換されて得られるプライマリ変換係数を１次元のベクトルに変換するように構成される
（４１）乃至（４６）のいずれかに記載の画像処理装置。
（４８）  前記行列化部により前記１次元のベクトルが行列化されて得られるセカンダリ変換係数に対して量子化を行う量子化部と、
前記量子化部により前記セカンダリ変化係数が量子化されて得られる量子化変換係数レベルを符号化する符号化部と
をさらに備える（４１）乃至（４７）のいずれかに記載の画像処理装置。
（４９）  前記予測画像を生成する予測部
をさらに備える（４１）乃至（４８）のいずれかに記載の画像処理装置。
（５０）  画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を１次元のベクトルに変換し、
前記１次元のベクトルに対して複数回の行列積よりなる行列演算を行い、
前記行列演算が行われた前記１次元のベクトルに対してスケーリングを行い、
スケーリングされた前記１次元のベクトルを行列化する
画像処理方法。
（５１）  逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換するラスタライズ部と、
前記１次元のベクトルに対して複数回の行列積よりなる行列演算を行う行列演算部と、
前記行列演算が行われた前記１次元のベクトルに対してスケーリングを行うスケーリング部と、
スケーリングされた前記１次元のベクトルを行列化する行列化部と
を備える画像処理装置。
（５２）  前記行列演算部は、第１の直交行列乃至第４の直交行列、並びに、第１の置換行列乃至第３の置換行列を用いて、前記ラスタライズ部により前記変換係数が変換されて得られた前記１次元のベクトルである第１の行ベクトルに対して前記行列演算を行い、第２の行ベクトルを求める
（５１）に記載の画像処理装置。
（５３）  前記行列演算部は、
前記第４の直交行列の転置行列と前記第１の行ベクトルとの行列積である第１の行列積を求める第１の回転操作部と、
前記第２の置換行列と前記第３の置換行列の転置行列と前記第１の行列積との行列積である第２の行列積を求める第１の置換操作部と、
前記第３の直交行列の転置行列と前記第２の行列積との行列積である第３の行列積を求める第２の回転操作部と、
前記第１の置換行列と前記第２の置換行列の転置行列と前記第３の行列積との行列積である第４の行列積を求める第２の置換操作部と、
前記第２の直交行列の転置行列と前記第４の行列積との行列積である第５の行列積を求める第３の回転操作部と、
前記第１の置換行列の転置行列と前記第５の行列積との行列積である第６の行列積を求める第３の置換操作部と、
前記第１の直交行列の転置行列と前記第６の行列積との行列積を求めることにより、前記第２の行ベクトルを求める第４の回転操作部と
を備える（５１）または（５２）に記載の画像処理装置。
（５４）  前記第１の直交行列乃至前記第４の直交行列は、それぞれ、対角成分に互いに異なる８個の２×２回転行列を有し、その他の要素は０である疎行列である
（５１）乃至（５３）のいずれかに記載の画像処理装置。
（５５）  前記第１の置換行列乃至前記第３の置換行列は、置換対象の要素を互いに異なる順に並べ替える置換行列である
（５１）乃至（５４）のいずれかに記載の画像処理装置。
（５６）  前記第１の置換行列は、前記置換対象の第０番目乃至第１５番目の各要素を、第０番目の要素、第２番目の要素、第１番目の要素、第３番目の要素、第４番目の要素、第６番目の要素、第５番目の要素、第７番目の要素、第８番目の要素、第１０番目の要素、第９番目の要素、第１１番目の要素、第１２番目の要素、第１４番目の要素、第１３番目の要素、第１５番目の要素の順に並べ替え、
前記第２の置換行列は、前記置換対象の第０番目乃至第１５番目の各要素を、第０番目の要素、第４番目の要素、第２番目の要素、第６番目の要素、第１番目の要素、第５番目の要素、第３番目の要素、第７番目の要素、第８番目の要素、第１２番目の要素、第１０番目の要素、第１４番目の要素、第９番目の要素、第１３番目の要素、第１１番目の要素、第１５番目の要素の順に並べ替え、
前記第３の置換行列は、前記置換対象の第０番目乃至第１５番目の各要素を、第０番目の要素、第８番目の要素、第２番目の要素、第１０番目の要素、第４番目の要素、第１２番目の要素、第６番目の要素、第１４番目の要素、第１番目の要素、第９番目の要素、第３番目の要素、第１１番目の要素、第５番目の要素、第１３番目の要素、第７番目の要素、第１５番目の要素の順に並べ替える
（５１）乃至（５５）のいずれかに記載の画像処理装置。
（５７）  符号化データを復号する復号部と、
前記復号部により前記符号化データが復号されて得られる量子化変換係数レベルを逆量子化する逆量子化部と
をさらに備え、
前記ラスタライズ部は、前記逆量子化部により前記量子化変換係数レベルが前記逆量子化されて得られるセカンダリ変換係数を１次元のベクトルに変換するように構成される
（５１）乃至（５６）のいずれかに記載の画像処理装置。
（５８）  前記行列化部により前記１次元のベクトルが行列化されて得られるプライマリ変換係数を逆プライマリ変換する逆プライマリ変換部
をさらに備える（５１）乃至（５７）のいずれかに記載の画像処理装置。
（５９）  前記予測画像を生成する予測部
をさらに備える（５１）乃至（５８）のいずれかに記載の画像処理装置。
（６０）  逆変換処理することにより画像と前記画像の予測画像との差分である予測残差が得られる変換係数を１次元のベクトルに変換し、
前記１次元のベクトルに対して複数回の行列積よりなる行列演算を行い、
前記行列演算が行われた前記１次元のベクトルに対してスケーリングを行い、
スケーリングされた前記１次元のベクトルを行列化する
画像処理方法。
（６１）  要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに変換する変換部
を備える画像処理装置。
（６２）  前記直交行列Tiは、第iの置換行列Piの転置行列PiTと、第iの直交行列Fiと、第iの置換行列Piとの行列積（PiT・Fi・Pi）からなる
（６１）に記載の画像処理装置。
（６３）  前記変換部は、前記第iの直交行列Tiと第i-1(i>0)の行ベクトルXi-1の転置行列Xi-1Tとの行列積Xiを導出する
（６２）に記載の画像処理装置。
（６４）  前記直交行列Fiは、対角成分に互いに異なる2N-1個の２×２回転行列を有し、その他の要素は０である疎行列である
（６２）または（６３）に記載の画像処理装置。
（６５）  前記置換行列Piは、順方向に2i個の要素からなるN-i+1個のサブセットに分割し、各サブセットjの左半分の要素群を第１のクラスとし、右半分の要素群を第２のクラスとし、前記第１のクラスの奇数番目の要素Kを前記第２のクラスの対応する奇数番目Lの要素の右隣の偶数番目の要素Mと入れ替えることで導出される行列である
（６２）乃至（６４）のいずれかに記載の画像処理装置。
（６６）  前記Nは４である
（６１）乃至（６５）のいずれかに記載の画像処理装置。
（６７）  前記Nは６である
（６１）乃至（６６）のいずれかに記載の画像処理装置。
（６８）  要素数2N点の１次元のベクトルからなる前記行ベクトルX0を生成するラスタライズ部をさらに備え、
前記変換部は、前記ラスタライズ部により得られた前記行ベクトルX0と前記直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を前記行ベクトルXnに変換する
（６１）乃至（６７）のいずれかに記載の画像処理装置。
（６９）  前記ラスタライズ部は、画像と前記画像の予測画像との差分である予測残差が変換処理されて得られる変換係数を、要素数2N点の１次元のベクトルからなる前記行ベクトルX0に変換する
（６８）に記載の画像処理装置。
（７０）  前記ラスタライズ部は、画像と前記画像の予測画像との差分である予測残差を、要素数2N点の１次元のベクトルからなる前記行ベクトルX0に変換する
（６８）または（６９）に記載の画像処理装置。
（７１）  参照画像とカレントブロックの予測画像との残差の集合からなる学習サンプルを用いて、前記直交行列Ｒを導出する直交行列導出部をさらに備え、
前記変換部は、前記ラスタライズ部により得られた前記行ベクトルX0と、前記直交行列導出部により導出された前記直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を前記行ベクトルXnに変換する
（７０）に記載の画像処理装置。
（７２）  前記学習サンプルを導出する学習サンプル導出部をさらに備え、
前記直交行列導出部は、前記学習サンプル導出部により導出された前記学習サンプルを用いて前記直交行列Ｒを導出する
（７１）に記載の画像処理装置。
（７３）  前記学習サンプル導出部は、前記カレントブロックの予測画像と、前記参照画像との比較を所定のサイズのテンプレート単位で行い、前記比較において前記カレントブロックの予測画像と類似すると判定された前記参照画像と前記カレントブロックの予測画像との残差を求めることにより前記学習サンプルを導出する
（７２）に記載の画像処理装置。
（７４）  前記変換部は、変換ブロックのうちの一部のサブブロックについてのみ、前記行ベクトルX0を前記行ベクトルXnに変換する
（６１）乃至（７３）のいずれかに記載の画像処理装置。
（７５）  前記変換部は、低周波側の一部のサブブロックについてのみ、前記行ベクトルX0を前記行ベクトルXnに変換する
（７４）に記載の画像処理装置。
（７６）  前記変換部は、スキャン順において先頭から連続する一部のサブブロックについてのみ、前記行ベクトルX0を前記行ベクトルXnに変換する
（７５）に記載の画像処理装置。
（７７）  前記変換部は、前記スキャン順が斜め方向の場合、前記変換ブロックの左上端の４×４サブブロック、上から２段目の左端の４×４サブブロック、最上段の左から２番目の４×４サブブロック、上から３段目の左端の４×４サブブロックに対して、この順に、前記行ベクトルX0から前記行ベクトルXnへの変換を行う
（７６）に記載の画像処理装置。
（７８）  前記変換部は、前記スキャン順が水平方向の場合、前記変換ブロックの左上端の４×４サブブロック、最上段の左から２番目の４×４サブブロック、最上段の左から３番目の４×４サブブロック、最上段の左から４番目の４×４サブブロックに対して、この順に、前記行ベクトルX0から前記行ベクトルXnへの変換を行う
（７６）または（７７）に記載の画像処理装置。
（７９）  前記変換部は、前記スキャン順が垂直方向の場合、前記変換ブロックの左上端の４×４サブブロック、上から２段目の左端の４×４サブブロック、上から３段目の左端の４×４サブブロック、上から４段目の左端の４×４サブブロックに対して、この順に、前記行ベクトルX0から前記行ベクトルXnへの変換を行う
（７６）乃至（７８）のいずれかに記載の画像処理装置。
（８０）  要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに変換する
画像処理方法。
（８１）  要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する逆変換部
を備える画像処理装置。
（８２）  前記直交行列ＩＲは、前記直交行列Tiの転置行列TiTにより構成され、
前記直交行列TiTは、第iの置換行列Piの転置行列PiTと、第iの直交行列Fiの転置行列FiTと、第iの置換行列Piとの行列積（PiT・FiT・Pi）からなる
（８１）に記載の画像処理装置。
（８３）  前記逆変換部は、前記第iの直交行列Tiの転置行列TiTと第i-1(i>0)の行ベクトルXi-1の転置行列Xi-1Tとの行列積Xiを導出する
（８２）に記載の画像処理装置。
（８４）  前記直交行列Fiは、対角成分に互いに異なる2N-1個の２×２回転行列を有し、その他の要素は０である疎行列である
（８２）または（８３）に記載の画像処理装置。
（８５）  前記置換行列Piは、順方向に2i個の要素からなるN-i+1個のサブセットに分割し、各サブセットjの左半分の要素群を第１のクラスとし、右半分の要素群を第２のクラスとし、前記第１のクラスの奇数番目の要素Kを前記第２のクラスの対応する奇数番目Lの要素の右隣の偶数番目の要素Mと入れ替えることで導出される行列である
（８２）乃至（８４）のいずれかに記載の画像処理装置。
（８６）  前記Nは４である
（８１）乃至（８５）のいずれかに記載の画像処理装置。
（８７）  前記Nは６である
（８１）乃至（８６）のいずれかに記載の画像処理装置。
（８８）  前記逆変換部は、逆セカンダリ変換として前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する
（８１）乃至（８７）のいずれかに記載の画像処理装置。
（８９）  前記逆変換部は、SDT（Signal Dependent Transform）として前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する
（８１）乃至（８８）のいずれかに記載の画像処理装置。
（９０）  参照画像とカレントブロックの予測画像との残差の集合からなる学習サンプルを用いて、前記直交行列ＩＲを導出する直交行列導出部をさらに備え、
前記逆変換部は、前記行ベクトルX0と、前記直交行列導出部により導出された前記直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を前記行ベクトルXnに変換する
（８９）に記載の画像処理装置。
（９１）  前記学習サンプルを導出する学習サンプル導出部をさらに備え、
前記直交行列導出部は、前記学習サンプル導出部により導出された前記学習サンプルを用いて前記直交行列ＩＲを導出する
（９０）に記載の画像処理装置。
（９２）  前記学習サンプル導出部は、前記カレントブロックの予測画像と、前記参照画像との比較を所定のサイズのテンプレート単位で行い、前記比較において前記カレントブロックの予測画像と類似すると判定された前記参照画像と前記カレントブロックの予測画像との残差を求めることにより前記学習サンプルを導出する
（９１）に記載の画像処理装置。
（９３）  前記直交行列導出部は、直交行列Ｒを用いて前記直交行列ＩＲを導出する
（９０）乃至（９２）のいずれかに記載の画像処理装置。
（９４）  前記逆変換部は、変換ブロックのうちの一部のサブブロックについてのみ、前記行ベクトルX0を前記行ベクトルXnに変換する
（８１）乃至（９３）のいずれかに記載の画像処理装置。
（９５）  前記逆変換部は、低周波側の一部のサブブロックについてのみ、前記行ベクトルX0を前記行ベクトルXnに変換する
（９４）に記載の画像処理装置。
（９６）  前記逆変換部は、スキャン順において先頭から連続する一部のサブブロックについてのみ、前記行ベクトルX0を前記行ベクトルXnに変換する
（９５）に記載の画像処理装置。
（９７）  前記逆変換部は、前記スキャン順が斜め方向の場合、前記変換ブロックの左上端の４×４サブブロック、上から２段目の左端の４×４サブブロック、最上段の左から２番目の４×４サブブロック、上から３段目の左端の４×４サブブロックに対して、この順に、前記行ベクトルX0から前記行ベクトルXnへの変換を行う
（９６）に記載の画像処理装置。
（９８）  前記逆変換部は、前記スキャン順が水平方向の場合、前記変換ブロックの左上端の４×４サブブロック、最上段の左から２番目の４×４サブブロック、最上段の左から３番目の４×４サブブロック、最上段の左から４番目の４×４サブブロックに対して、この順に、前記行ベクトルX0から前記行ベクトルXnへの変換を行う
（９６）または（９７）に記載の画像処理装置。
（９９）  前記逆変換部は、前記スキャン順が垂直方向の場合、前記変換ブロックの左上端の４×４サブブロック、上から２段目の左端の４×４サブブロック、上から３段目の左端の４×４サブブロック、上から４段目の左端の４×４サブブロックに対して、この順に、前記行ベクトルX0から前記行ベクトルXnへの変換を行う
（９６）乃至（９８）のいずれかに記載の画像処理装置。
（１００）  要素数2N点の行ベクトルX0（Nは自然数）と、N個の2N×2Nの直交行列Ti（i=1,2,・・・,N）より構成される直交行列Ｒの逆行列である直交行列ＩＲとの行列積を導出することにより、前記行ベクトルX0を要素数2N点の行ベクトルXnに逆変換する
画像処理方法。
【符号の説明】
【０７９３】
１００  画像符号化装置，  １０１  制御部，  １１１  演算部，  １１２  変換部，  １１３  量子化部，  １１４  符号化部，  １１５  逆量子化部，  １１６  逆変換部，  １１７  演算部，  １１８  フレームメモリ，  １１９  予測部，  １３１  プライマリ変換部，  １３２  セカンダリ変換部，  １４１  ラスタライズ部，  １４２  行列演算部，  １４３  スケーリング部，  １４４  行列化部，  １４５  クリップ処理部，  １４６  セカンダリ変換選択部，  ２００  画像復号装置，  ２１１  復号部，  ２１２  逆量子化部，  ２１３  逆変換部，  ２１４  演算部，  ２１５  フレームメモリ，  ２１６  予測部，  ２３１  逆セカンダリ変換部，  ２３２  逆プライマリ変換部，  ２４１  ラスタライズ部，  ２４２  行列演算部，  ２４３  スケーリング部，  ２４４行列化部，  ２４５  クリップ処理部，  ２４６  逆セカンダリ変換選択部，  ３０１  シフト量導出部，  ３０２  スケーリング部，  ３１１  シフト量導出部，  ３１２  スケーリング部，  ４２１  行列演算部，  ４３１  回転操作部，  ４３２  置換操作部，  ４３３  回転操作部，  ４３４  置換操作部，  ４３５  回転操作部，  ４３６  置換操作部，  ４３７  回転操作部，  ４３８  置換操作部，  ４５１  行列演算部，  ４６１  置換操作部，  ４６２  回転操作部，  ４６３  置換操作部，  ４６４  回転操作部，  ４６５  置換操作部，  ４６６  回転操作部，  ４６７  置換操作部，  ４６８  回転操作部，  ５０１  回転操作部，  ５１１  回転操作部，  ５２１  擬似コード，  ５２２  サブセット，  ５２３  第１のクラス，  ５２４  第２のクラス，  ５３０  2N点HyGT部，  ５３１  回転操作部，  ５４０  2N点逆HyGT部，  ５４１  回転操作部，  ５６１  セカンダリ変換選択部，  ５６２  行列演算部，  ５６３  64点HyGT部，  ５６４  回転操作部，  ５７１  逆セカンダリ変換選択部，  ５７２  行列演算部，  ５７３  64点逆HyGT部，  ５７４  回転操作部，  ６０１  スイッチ，  ６０２  スイッチ，  ６０３  SDT部，  ６１１  学習サンプル導出部，  ６１２  2N点HyGT導出部，  ６１３  ラスタライズ部，  ６１４  2N点HyGT部，  ６１５  スケーリング部，  ６１６  行列化部，  ６２１  テンプレートマッチング部，  ６２２  残差導出部，  ６５１  スイッチ，  ６５２  スイッチ，  ６５３  逆SDT部，  ６６１  学習サンプル導出部，  ６６２  2N点逆HyGT導出部，  ６６３  ラスタライズ部，  ６６４  2N点逆HyGT部，  ６６５  スケーリング部，  ６６６  行列化部，  ６７１  テンプレートマッチング部，  ６７２  残差導出部，  ６８１  2N点逆HyGT導出部
【図１】
2017195666.tif 000026
【図２】
2017195666.tif 000027
【図３】
2017195666.tif 000028
【図４】
2017195666.tif 000029
【図５】
2017195666.tif 000030
【図６】
2017195666.tif 000031
【図７】
2017195666.tif 000032
【図８】
2017195666.tif 000033
【図９】
2017195666.tif 000034
【図１０】
2017195666.tif 000035
【図１１】
2017195666.tif 000036
【図１２】
2017195666.tif 000037
【図１３】
2017195666.tif 000038
【図１４】
2017195666.tif 000039
【図１５】
2017195666.tif 000040
【図１６】
2017195666.tif 000041
【図１７】
2017195666.tif 000042
【図１８】
2017195666.tif 000043
【図１９】
2017195666.tif 000044
【図２０】
2017195666.tif 000045
【図２１】
2017195666.tif 000046
【図２２】
2017195666.tif 000047
【図２３】
2017195666.tif 000048
【図２４】
2017195666.tif 000049
【図２５】
2017195666.tif 000050
【図２６】
2017195666.tif 000051
【図２７】
2017195666.tif 000052
【図２８】
2017195666.tif 000053
【図２９】
2017195666.tif 000054
【図３０】
2017195666.tif 000055
【図３１】
2017195666.tif 000056
【図３２】
2017195666.tif 000057
【図３３】
2017195666.tif 000058
【図３４】
2017195666.tif 000059
【図３５】
2017195666.tif 000060
【図３６】
2017195666.tif 000061
【図３７】
2017195666.tif 000062
【図３８】
2017195666.tif 000063
【図３９】
2017195666.tif 000064
【図４０】
2017195666.tif 000065
【図４１】
2017195666.tif 000066
【図４２】
2017195666.tif 000067
【図４３】
2017195666.tif 000068
【図４４】
2017195666.tif 000069
【図４５】
2017195666.tif 000070
【図４６】
2017195666.tif 000071
【図４７】
2017195666.tif 000072
【図４８】
2017195666.tif 000073
【図４９】
2017195666.tif 000074
【図５０】
2017195666.tif 000075
【図５１】
2017195666.tif 000076
【図５２】
2017195666.tif 000077
【図５３】
2017195666.tif 000078
【図５４】
2017195666.tif 000079
【図５５】
2017195666.tif 000080
【図５６】
2017195666.tif 000081
【図５７】
2017195666.tif 000082
【図５８】
2017195666.tif 000083
【図５９】
2017195666.tif 000084
【図６０】
2017195666.tif 000085
【図６１】
2017195666.tif 000086
【図６２】
2017195666.tif 000087
【図６３】
2017195666.tif 000088
【図６４】
2017195666.tif 000089
【図６５】
2017195666.tif 000090
【図６６】
2017195666.tif 000091
【図６７】
2017195666.tif 000092
【図６８】
2017195666.tif 000093
【図６９】
2017195666.tif 000094
【図７０】
2017195666.tif 000095
【図７１】
2017195666.tif 000096
【図７２】
2017195666.tif 000097
【図７３】
2017195666.tif 000098
【図７４】
2017195666.tif 000099
【図７５】
2017195666.tif 000100
【図７６】
2017195666.tif 000101
【図７７】
2017195666.tif 000102
【図７８】
2017195666.tif 000103
【図７９】
2017195666.tif 000104
【図８０】
2017195666.tif 000105
【図８１】
2017195666.tif 000106
【図８２】
2017195666.tif 000107
【図８３】
2017195666.tif 000108
【図８４】
2017195666.tif 000109
【図８５】
2017195666.tif 000110
【図８６】
2017195666.tif 000111
【図８７】
2017195666.tif 000112
【図８８】
2017195666.tif 000113
【図８９】
2017195666.tif 000114
【図９０】
2017195666.tif 000115
【図９１】
2017195666.tif 000116
【国際調査報告】
2017195666.tif 000117
2017195666.tif 000118
2017195666.tif 000119
2017195666.tif 000120
2017195666.tif 000121
2017195666.tif 000122
2017195666.tif 000123
2017195666.tif 000124