(57)【要約】【課題】１次元変換または逆１次元変換をより容易に行うことができるようにする。【解決手段】係数データの１次元信号列に対して符号反転操作を行い、その符号反転操作された１次元信号列に対して、第１の変換タイプの１次元変換を実現する場合、FTS操作により第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、第３の変換タイプの１次元変換を実現する場合、FTS操作により第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、そのベース変換行列を用いて行列演算を行い、その行列演算が行われた１次元信号列に対してフリップ操作を行う。本開示は、例えば、画像処理装置、画像符号化装置、または画像復号装置等に適用することができる。【選択図】図６
2022002352.tif 000002
【特許請求の範囲】
【請求項１】
ビットストリームを復号して、画像に関する係数データを生成する復号部と、
前記復号部により生成された前記係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行うフリップ部と、
前記フリップ部により前記フリップ操作された前記１次元信号列に対して、
第１の変換タイプの逆１次元変換を実現する場合、STF操作により前記第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの逆１次元変換を実現する場合、FTS操作により前記第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
前記ベース変換行列の転置行列を用いて行列演算を行う行列演算部と、
前記行列演算部により前記行列演算が行われた前記１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行う符号反転部と
を備える画像処理装置。
【請求項２】
前記第２の変換タイプまたは前記第４の変換タイプの逆１次元変換を実現する場合、
前記フリップ部は、前記フリップ操作をスキップし、
前記行列演算部は、前記復号部により生成された前記係数データの１次元信号列に対して、前記第２の変換タイプまたは前記第４の変換タイプの変換行列をベース変換行列として、前記行列演算を行い、
前記符号反転部は、前記符号反転操作をスキップする
請求項１に記載の画像処理装置。
【請求項３】
指定された逆１次元変換の変換タイプに基づいて、前記フリップ操作を行うか否かを示すフリップフラグを設定するフリップフラグ設定部と、
前記変換タイプに基づいて、前記符号反転操作を行うか否かを示す符号反転フラグを設定する符号反転フラグ設定部と
をさらに備え、
前記フリップ部は、前記フリップフラグ設定部により設定された前記フリップフラグに基づいて、前記フリップ操作を行うかスキップし、
前記符号反転部は、前記符号反転フラグ設定部により設定された前記符号反転フラグに基づいて、前記符号反転操作を行うかスキップする
請求項２に記載の画像処理装置。
【請求項４】
指定された逆１次元変換の変換タイプに基づいて、前記第２の変換タイプの変換行列と前記第４の変換タイプの変換行列とのいずれを前記ベース変換行列とするかを選択するベース変換行列選択部をさらに備え、
前記行列演算部は、前記ベース変換行列選択部により選択された前記ベース変換行列を用いて、前記行列演算を行う
請求項１に記載の画像処理装置。
【請求項５】
指定された逆１次元変換の変換タイプに基づいて、前記ベース変換行列を導出するベース変換行列導出部をさらに備え、
前記行列演算部は、前記ベース変換行列導出部により導出された前記ベース変換行列を用いて、前記行列演算を行う
請求項１に記載の画像処理装置。
【請求項６】
前記ベース変換行列導出部は、前記ベース変換行列以上のサイズの前記第２の変換タイプの導出元変換行列を用いて、前記ベース変換行列を導出する
請求項５に記載の画像処理装置。
【請求項７】
前記ベース変換行列導出部は、前記導出元変換行列をサンプリングすることにより、前記第２の変換タイプまたは前記第４の変換タイプの前記ベース変換行列を導出する
請求項６に記載の画像処理装置。
【請求項８】
前記復号部により生成された前記係数データより１次元信号列を抽出する１次元信号列抽出部と、
前記符号反転部により前記符号反転操作が行われた前記１次元信号列を用いて２次元データ列を生成する２次元データ列生成部と
をさらに備え、
前記フリップ部は、前記１次元信号列抽出部により抽出された前記１次元信号列に対して、前記フリップ操作を行う
請求項１に記載の画像処理装置。
【請求項９】
前記第１の変換タイプはDST2であり、
前記第２の変換タイプはDCT2であり、
前記第３の変換タイプはDST4であり、
前記第４の変換タイプはDCT4である
請求項１に記載の画像処理装置。
【請求項１０】
ビットストリームを復号して、画像に関する係数データを生成し、
生成された前記係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行い、
前記フリップ操作された前記１次元信号列に対して、
第１の変換タイプの逆１次元変換を実現する場合、STF操作により前記第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの逆１次元変換を実現する場合、FTS操作により前記第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
前記ベース変換行列の転置行列を用いて行列演算を行い、
前記行列演算が行われた前記１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行う
画像処理方法。
【請求項１１】
画像に関する係数データの１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行う符号反転部と、
前記符号反転部により前記符号反転操作された前記１次元信号列に対して、
第１の変換タイプの１次元変換を実現する場合、FTS操作により前記第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの１次元変換を実現する場合、STF操作により前記第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
前記ベース変換行列を用いて行列演算を行う行列演算部と、
前記行列演算部により前記行列演算が行われた前記１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行うフリップ部と、
前記フリップ部により前記フリップ操作が行われた前記１次元信号列を含む係数データを符号化し、ビットストリームを生成する符号化部と
を備える画像処理装置。
【請求項１２】
前記第２の変換タイプまたは前記第４の変換タイプの１次元変換を実現する場合、
前記符号反転部は、前記符号反転操作をスキップし、
前記行列演算部は、前記係数データの前記１次元信号列に対して、前記第２の変換タイプまたは前記第４の変換タイプの変換行列をベース変換行列として、前記行列演算を行い、
前記フリップ部は、前記フリップ操作をスキップする
請求項１１に記載の画像処理装置。
【請求項１３】
指定された１次元変換の変換タイプに基づいて、前記符号反転操作を行うか否かを示す符号反転フラグを設定する符号反転フラグ設定部と、
前記変換タイプに基づいて、前記フリップ操作を行うか否かを示すフリップフラグを設定するフリップフラグ設定部と
をさらに備え、
前記符号反転部は、前記符号反転フラグ設定部により設定された前記符号反転フラグに基づいて、前記符号反転操作を行うかスキップし、
前記フリップ部は、前記フリップフラグ設定部により設定された前記フリップフラグに基づいて、前記フリップ操作を行うかスキップする
請求項１２に記載の画像処理装置。
【請求項１４】
指定された１次元変換の変換タイプに基づいて、前記第２の変換タイプの変換行列と前記第４の変換タイプの変換行列とのいずれを前記ベース変換行列とするかを選択するベース変換行列選択部をさらに備え、
前記行列演算部は、前記ベース変換行列選択部により選択された前記ベース変換行列を用いて、前記行列演算を行う
請求項１１に記載の画像処理装置。
【請求項１５】
指定された１次元変換の変換タイプに基づいて、前記ベース変換行列を導出するベース変換行列導出部をさらに備え、
前記行列演算部は、前記ベース変換行列導出部により導出された前記ベース変換行列を用いて、前記行列演算を行う
請求項１１に記載の画像処理装置。
【請求項１６】
前記ベース変換行列導出部は、前記ベース変換行列以上のサイズの前記第２の変換タイプの導出元変換行列を用いて、前記ベース変換行列を導出する
請求項１５に記載の画像処理装置。
【請求項１７】
前記ベース変換行列導出部は、前記導出元変換行列をサンプリングすることにより、前記第２の変換タイプまたは前記第４の変換タイプの前記ベース変換行列を導出する
請求項１６に記載の画像処理装置。
【請求項１８】
前記係数データより１次元信号列を抽出する１次元信号列抽出部と、
前記フリップ部により前記フリップ操作が行われた前記１次元信号列を用いて２次元データ列を生成する２次元データ列生成部と
をさらに備え、
前記符号反転部は、前記１次元信号列抽出部により抽出された前記１次元信号列に対して、前記符号反転操作を行う
請求項１１に記載の画像処理装置。
【請求項１９】
前記第１の変換タイプはDST2であり、
前記第２の変換タイプはDCT2であり、
前記第３の変換タイプはDST4であり、
前記第４の変換タイプはDCT4である
請求項１１に記載の画像処理装置。
【請求項２０】
画像に関する係数データの１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行い、
前記符号反転操作された前記１次元信号列に対して、
第１の変換タイプの１次元変換を実現する場合、FTS操作により前記第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの１次元変換を実現する場合、STF操作により前記第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
前記ベース変換行列を用いて行列演算を行い、
前記行列演算が行われた前記１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行い、
前記フリップ操作が行われた前記１次元信号列を含む係数データを符号化し、ビットストリームを生成する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および方法に関し、特に、１次元変換または逆１次元変換をより容易に行うことができるようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
従来、輝度について、TU（Transform Unit）単位毎の、水平方向のプライマリ変換PThor（プライマリ水平変換とも称する）および垂直方向のプライマリ変換PTver（プライマリ垂直変換とも称する）毎に、適応的に複数の異なる直交変換から、プライマリ変換を選択する適応プライマリ変換（AMT: Adaptive Multiple Core Transforms）が開示された（例えば、非特許文献１参照）。非特許文献１では、プライマリ変換の候補として、DCT-II, DST-VII, DCT-VIII, DST-I, DST-VIIの５つの１次元変換（１次元直交変換とも称する）がある。
【０００３】
また、さらに、DST-IVおよびIDT（Identity Transform: １次元変換スキップ）の２つの１次元直交変換を追加し、計７つの１次元直交変換をプライマリ変換の候補とすることが提案された（例えば、非特許文献２参照）。
【０００４】
また、AMTで用いる直交変換を{DCT4/DST4/DCT2/DST2}とするtype2/type4 AMTが提案された（例えば、非特許文献３参照）。非特許文献３においては、さらに、2^N-pt DCT2の変換行列をサンプリング/符号反転/フリップにより、2^N-ptより小さい2^M-ptの DCT4/DST4/DCT2/DST2の変換行列を導出することが提案された。
【０００５】
さらに、DST4をDCT4のSTF操作、DST2をDCT2のFTS操作により実現することが提案された（例えば、非特許文献４参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 4", JVET-G1001_v1, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 7th Meeting: Torino, IT, 13-21 July 2017
【非特許文献２】V. Lorcy, P. Philippe, "Proposed improvements to the Adaptive multiple Core transform", JVET-C0022, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 3rd Meeting: Geneva, CH, 26 May -1 June 2016
【非特許文献３】Takeshi Tsukuba, Masaru Ikeda, Teruhiko Suzuki, "CE6-related: AMT with only type2/type4 DCT/DST", JVET-K0394-v2, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC29/WG11 11th Meeting: Ljubljana, SI, 10-18 July 2018
【非特許文献４】K. Naser, F. Le Leannec, E. Francois, "CE6-related: Reduction of the number of core transforms in AMT", JVET-K0265, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、非特許文献４に記載のFTS操作やSTF操作を用いて実現するDST2やDST4を、非特許文献３に記載のtype2/type4 AMTに適用することにより、FTS操作やSTF操作を用いたプライマリ変換（逆プライマリ変換）を実現することができる。
【０００８】
しかしながら、その場合、行列演算の入力側のプリ処理と出力側のポスト処理の両方において、フリップ操作と符号反転操作とを行うことができるようにする必要があり、１次元変換（または逆１次元変換）の処理や回路の構成がより複雑になってしまうおそれがあった。
【０００９】
本開示は、このような状況に鑑みてなされたものであり、１次元変換または逆１次元変換をより容易に行うことができるようにするものである。
【課題を解決するための手段】
【００１０】
本技術の一側面の画像処理装置は、ビットストリームを復号して、画像に関する係数データを生成する復号部と、前記復号部により生成された前記係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行うフリップ部と、前記フリップ部により前記フリップ操作された前記１次元信号列に対して、第１の変換タイプの逆１次元変換を実現する場合、STF操作により前記第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、第３の変換タイプの逆１次元変換を実現する場合、FTS操作により前記第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、前記ベース変換行列の転置行列を用いて行列演算を行う行列演算部と、前記行列演算部により前記行列演算が行われた前記１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行う符号反転部とを備える画像処理装置である。
【００１１】
本技術の一側面の画像処理方法は、ビットストリームを復号して、画像に関する係数データを生成し、生成された前記係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行い、前記フリップ操作された前記１次元信号列に対して、第１の変換タイプの逆１次元変換を実現する場合、STF操作により前記第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、第３の変換タイプの逆１次元変換を実現する場合、FTS操作により前記第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、前記ベース変換行列の転置行列を用いて行列演算を行い、前記行列演算が行われた前記１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行う画像処理方法である。
【００１２】
本技術の他の側面の画像処理装置は、画像に関する係数データの１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行う符号反転部と、前記符号反転部により前記符号反転操作された前記１次元信号列に対して、第１の変換タイプの１次元変換を実現する場合、FTS操作により前記第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、第３の変換タイプの１次元変換を実現する場合、STF操作により前記第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、前記ベース変換行列を用いて行列演算を行う行列演算部と、前記行列演算部により前記行列演算が行われた前記１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行うフリップ部と、前記フリップ部により前記フリップ操作が行われた前記１次元信号列を含む係数データを符号化し、ビットストリームを生成する符号化部とを備える画像処理装置である。
【００１３】
本技術の他の側面の画像処理方法は、画像に関する係数データの１次元信号列に対して、前記１次元信号列の奇数番目の信号の符号を反転する符号反転操作を行い、前記符号反転操作された前記１次元信号列に対して、第１の変換タイプの１次元変換を実現する場合、FTS操作により前記第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、第３の変換タイプの１次元変換を実現する場合、STF操作により前記第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、前記ベース変換行列を用いて行列演算を行い、前記行列演算が行われた前記１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行い、前記フリップ操作が行われた前記１次元信号列を含む係数データを符号化し、ビットストリームを生成する画像処理方法である。
【００１４】
本技術の一側面の画像処理装置および方法においては、ビットストリームを復号して、画像に関する係数データが生成され、その生成された係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作が行われ、そのフリップ操作された１次元信号列に対して、第１の変換タイプの逆１次元変換を実現する場合、STF操作により第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列がベース変換行列とされ、第３の変換タイプの逆１次元変換を実現する場合、FTS操作により第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列がベース変換行列とされ、そのベース変換行列の転置行列を用いて行列演算が行われ、その行列演算が行われた１次元信号列に対して、その１次元信号列の奇数番目の信号の符号を反転する符号反転操作が行われる。
【００１５】
本技術の他の側面の画像処理装置および方法においては、画像に関する係数データの１次元信号列に対して、その１次元信号列の奇数番目の信号の符号を反転する符号反転操作が行われ、その符号反転操作された１次元信号列に対して、第１の変換タイプの１次元変換を実現する場合、FTS操作により第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列がベース変換行列とされ、第３の変換タイプの１次元変換を実現する場合、STF操作により第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列がベース変換行列とされ、そのベース変換行列を用いて行列演算が行われ、その行列演算が行われた１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作が行われ、そのフリップ操作が行われた１次元信号列を含む係数データが符号化され、ビットストリームが生成される。
【図面の簡単な説明】
【００１６】
【図１】DST2の１次元変換の例について説明する図である。
【図２】DST4の１次元変換の例について説明する図である。
【図３】STF操作・FTS操作を用いた１次元変換の例について説明する図である。
【図４】変換装置の主な構成例を示すブロック図である。
【図５】変換処理の流れの例を説明するフローチャートである。
【図６】FTS操作を用いた１次元変換の例について説明する図である。
【図７】変換装置の主な構成例を示すブロック図である。
【図８】変換処理の流れの例を説明するフローチャートである。
【図９】STF操作を用いた逆１次元変換の例について説明する図である。
【図１０】逆変換装置の主な構成例を示すブロック図である。
【図１１】逆変換処理の流れの例を説明するフローチャートである。
【図１２】ベース変換行列の導出の例について説明する図である。
【図１３】DCT2のベース変換行列の導出の例について説明する図である。
【図１４】DCT4のベース変換行列の導出の例について説明する図である。
【図１５】変換装置の主な構成例を示すブロック図である。
【図１６】ベース変換行列導出部の主な構成例を示すブロック図である。
【図１７】変換処理の流れの例を説明するフローチャートである。
【図１８】ベース変換行列導出処理の流れの例を説明するフローチャートである。
【図１９】逆変換装置の主な構成例を示すブロック図である。
【図２０】逆変換処理の流れの例を説明するフローチャートである。
【図２１】画像符号化装置の主な構成例を示すブロック図である。
【図２２】直交変換部の主な構成例を示すブロック図である。
【図２３】プライマリ変換部の主な構成例を示すブロック図である。
【図２４】プライマリ水平変換部の主な構成例を示すブロック図である。
【図２５】プライマリ垂直変換部の主な構成例を示すブロック図である。
【図２６】画像符号化処理の流れの例を示すフローチャートである。
【図２７】直交変換処理の流れの例を説明するフローチャートである。
【図２８】プライマリ変換処理の流れの例を説明するフローチャートである。
【図２９】プライマリ水平変換処理の流れの例を説明するフローチャートである。
【図３０】プライマリ垂直変換処理の流れの例を説明するフローチャートである。
【図３１】画像復号装置の主な構成例を示すブロック図である。
【図３２】逆直交変換部の主な構成例を示すブロック図である。
【図３３】逆プライマリ変換部の主な構成例を示すブロック図である。
【図３４】逆プライマリ垂直変換部の主な構成例を示すブロック図である。
【図３５】逆プライマリ水平変換部の主な構成例を示すブロック図である。
【図３６】画像復号処理の流れの例を説明するフローチャートである。
【図３７】逆直交変換処理の流れの例を説明するフローチャートである。
【図３８】逆プライマリ変換処理の流れの例を説明するフローチャートである。
【図３９】逆プライマリ垂直変換処理の流れの例を説明するフローチャートである。
【図４０】逆プライマリ水平変換処理の流れの例を説明するフローチャートである。
【図４１】コンピュータの主な構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本開示を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．技術内容・技術用語をサポートする文献等
２．適応プライマリ変換
３．コンセプト
４．第１の実施の形態（変換装置）
５．第２の実施の形態（逆変換装置）
６．第３の実施の形態（変換装置（ベース変換行列導出））
７．第４の実施の形態（逆変換装置（ベース変換行列導出））
８．第５の実施の形態（応用例）
９．第６の実施の形態（画像符号化装置）
１０．第７の実施の形態（画像復号装置）
１１．付記
【００１８】
＜１．技術内容・技術用語をサポートする文献等＞
本技術で開示される範囲は、実施例に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
【００１９】
非特許文献１：（上述）
非特許文献２：（上述）
非特許文献３：（上述）
非特許文献４：（上述）
非特許文献５：TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU（International Telecommunication Union）, "Advanced video coding for generic audiovisual services", H.264, 04/2017
非特許文献６：TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU（International Telecommunication Union）, "High efficiency video coding", H.265, 12/2016
【００２０】
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、非特許文献６に記載されているQuad-Tree Block Structure、非特許文献１に記載されているQTBT（Quad Tree Plus Binary Tree） Block Structureが実施例において直接的な記載がない場合でも、本技術の開示範囲内であり、特許請求の範囲のサポート要件を満たすものとする。また、例えば、パース（Parsing）、シンタックス（Syntax）、セマンティクス（Semantics）等の技術用語についても同様に、実施例において直接的な記載がない場合でも、本技術の開示範囲内であり、特許請求の範囲のサポート要件を満たすものとする。
【００２１】
また、本明細書において、画像（ピクチャ）の部分領域や処理単位として説明に用いる「ブロック」（処理部を示すブロックではない）は、特に言及しない限り、ピクチャ内の任意の部分領域を示し、その大きさ、形状、および特性等は限定されない。例えば、「ブロック」には、上述の非特許文献１、非特許文献５、および非特許文献６に記載のTB（Transform Block）、TU（Transform Unit）、PB（Prediction Block）、PU（Prediction Unit）、SCU（Smallest Coding Unit）、CU（Coding Unit）、LCU（Largest Coding Unit）、CTB（Coding Tree Block）、CTU（Coding Tree Unit）、変換ブロック、サブブロック、マクロブロック、タイル、またはスライス等、任意の部分領域（処理単位）が含まれるものとする。
【００２２】
また、このようなブロックのサイズを指定するに当たって、直接的にブロックサイズを指定するだけでなく、間接的にブロックサイズを指定するようにしてもよい。例えばサイズを識別する識別情報を用いてブロックサイズを指定するようにしてもよい。また、例えば、基準となるブロック（例えばLCUやSCU等）のサイズとの比または差分によってブロックサイズを指定するようにしてもよい。例えば、シンタックス要素等としてブロックサイズを指定する情報を伝送する場合に、その情報として、上述のような間接的にサイズを指定する情報を用いるようにしてもよい。このようにすることにより、その情報の情報量を低減させることができ、符号化効率を向上させることができる場合もある。また、このブロックサイズの指定には、ブロックサイズの範囲の指定（例えば、許容されるブロックサイズの範囲の指定等）も含む。
【００２３】
また、本明細書において、符号化とは、画像をビットストリームに変換する全体の処理だけではなく、一部の処理も含む。例えば、予測処理、直交変換、量子化、算術符号化等を包括した処理を含むだけではなく、量子化と算術符号化とを総称した処理、予測処理と量子化と算術符号化とを包括した処理、などを含む。同様に、復号とは、ビットストリームを画像に変換する全体の処理だけではなく、一部の処理も含む。例えば、逆算術復号、逆量子化、逆直交変換、予測処理等を包括した処理を含むだけではなく、逆算術復号と逆量子化とを包括した処理、逆算術復号と逆量子化と予測処理とを包括した処理、などを含む。
【００２４】
＜２．適応プライマリ変換＞
＜変換タイプの設定＞
非特許文献１に記載のテストモデル（JEM4（Joint Exploration Test Model 4））においては、輝度の変換ブロックについて、水平方向のプライマリ変換PThor（プライマリ水平変換とも称する）、および垂直方向のプライマリ変換PTver（プライマリ垂直変換とも称する）毎に、適応的に複数の異なる１次元直交変換から、プライマリ変換を選択する適応プライマリ変換（AMT（Adaptive Multiple core Transforms））が開示されている。なお、AMTは、EMT（Explicit Multiple core Transforms）とも称する。
【００２５】
具体的には、輝度の変換ブロックについて、適応プライマリ変換を実施するか否かを示す適応プライマリ変換フラグapt_flagが０（偽）の場合には、プライマリ変換として、DCT（Discrete Cosine Transform）-II、またはDST（Discrete Sine Transform）-VIIがモード情報によって一意に決定される（TrSetIdx = 4）。
【００２６】
適応プライマリ変換フラグapt_flagが１（真）の場合であって、処理対象の輝度の変換ブロックを含むカレントCU（Coding Unit）がイントラCUである場合、水平方向（x方向）と垂直方向（y方向）のそれぞれについてのプライマリ変換の候補となる直交変換を含む変換セットTrSetが、３つの変換セットTrSet（TrSetIdx = 0,1,2）の中から選択される。なお、上述したDST-VIIやDCT-VIII等は、直交変換のタイプを示している。
【００２７】
この変換セットTrSetは、モード情報と変換セットの対応表（のイントラ予測モード情報）に基づいて一意に決定される。例えば、以下の式（１）および式（２）のように、各変換セットTrSetH, TrSetVに対して、対応する変換セットTrSetを指定する変換セット識別子TrSetIdxを設定するように実施される。
【００２８】
【数１】
2022002352.tif 000003
【００２９】
ここで、TrSetHは、プライマリ水平変換PThorの変換セットを示し、TrSetVは、プライマリ垂直変換PTverの変換セットを示し、ルックアップテーブルLUT_IntraModeToTrSetは、モード情報と変換セットの対応表である。ルックアップテーブルLUT_IntraModeToTrSet[][]の１番目の配列は、イントラ予測モードIntraModeを引数とし、２番目の配列は、{H=0, V=1}を引数とする。
【００３０】
例えば、イントラ予測モード番号19（IntraMode == 19）の場合、プライマリ水平変換PThorの変換セットTrSetH（プライマリ水平変換セットとも称する）として、変換セット識別子TrSetIdx = 0の変換セットが選択され、プライマリ垂直変換PTverの変換セットTrSetV（プライマリ垂直変換セットとも称する）として、変換セット識別子TrSetIdx=2の変換セットが選択される。
【００３１】
なお、適応プライマリ変換フラグapt_flagが１（真）の場合であって、処理対象の輝度の変換ブロックを含むカレントCUがインターCUである場合、プライマリ水平変換の変換セットTrSetHおよびプライマリ垂直変換の変換セットTrSetVには、インターCU専用の変換セットInterTrSet（TrSetIdx = 3）を割り当てる。
【００３２】
続いて、水平方向と垂直方向のそれぞれについて、選択された変換セットTrSetのうち、どの直交変換を適用するかを、プライマリ水平変換指定フラグpt_hor_flagおよびプライマリ垂直変換指定フラグpt_ver_flagの内の対応する方によって選択する。
【００３３】
例えば、以下の式（３）および式（４）のように、プライマリ{水平，垂直}変換セットTrSet{H,V}と、プライマリ{水平，垂直}変換指定フラグpt_{hor,ver}_flagとを引数として、所定の変換セットの定義表(LUT_TrSetToTrTypeIdx)から導出する。
【００３４】
【数２】
2022002352.tif 000004
【００３５】
なお、プライマリ水平変換指定フラグpt_hor_flagおよびプライマリ垂直変換指定フラグpt_ver_flagからプライマリ変換識別子pt_idxが、以下の式（５）に基づいて導出される。すなわち、プライマリ変換識別子pt_idxの上位１bitは、プライマリ垂直変換指定フラグの値に対応し、下位１bitは、プライマリ水平変換指定フラグの値に対応する。
【００３６】
【数３】
2022002352.tif 000005
【００３７】
導出されたプライマリ変換識別子pt_idxのbin列に対して、算術符号化を適用して、ビット列を生成することで、符号化が実施される。なお、適応プライマリ変換フラグapt_flag、およびプライマリ変換識別子pt_idxは、輝度の変換ブロックにおいてシグナルされる。
【００３８】
以上のように、非特許文献１では、プライマリ変換の候補として、DCT-II（DCT2）, DST-VII（DST7）, DCT-VIII（DCT8）, DST-I（DST1）, DCT-V（DCT5）の５つの１次元直交変換が提案された。この方法においては、AMTが適用される場合、予測モードで決まる変換セットの中から、水平／垂直にどの直交変換を適用するかを表す２ビットのインデックスがシグナルされ、方向毎に２つの候補から１つの変換が選択される。
【００３９】
また、非特許文献２では、それらに加えて、さらに、DST-IV（DST4）およびIDT（Identity Transform：１次元変換スキップ）の２つの１次元直交変換が追加され、計７つの１次元直交変換をプライマリ変換の候補とすることが提案された。
【００４０】
＜type2/type4 AMT＞
また、非特許文献３では、そのAMTで用いる直交変換を{DCT4/DST4/DCT2/DST2}とするtype2/type4 AMTが提案された。さらに、2^N-pt DCT2の変換行列をサンプリング/符号反転/フリップにより、2^N-ptより小さい2^M-ptの DCT4/DST4/DCT2/DST2の変換行列を導出することも提案された。
【００４１】
＜FTS操作・STF操作＞
さらに、非特許文献４では、DST4をDCT4のSTF操作、DST2をDCT2のFTS操作により実現することが提案された。
【００４２】
FTS操作とは、入力信号の奇数位置にある信号を符号反転する符号反転操作（S）、符号反転操作後の入力信号の直交変換（T）、および、直交変換後の変換係数の順序を逆順に並び替えるフリップ操作（F）の３つの処理（S→T→Fの順に処理）を行うことを示す。
【００４３】
例えば図１のＡに示されるような、入力信号Xに対して、変換タイプDST（Discrete Sine Transform）2の直交変換処理１１を行い、出力信号Yを出力する処理は、図１のＢに示されるように、変換タイプDCT（Discrete Cosine Transform）2の直交変換処理１３を用いたFTS操作により実現することができる。つまり、入力信号Xに対して符号反転操作（S）１２を行い、その符号反転操作された入力信号Xに対して変換タイプDCT2の直交変換処理（T）１３を行い、得られた直交変換係数に対してフリップ操作（F）１４を行うことにより、変換タイプDST2の直交変換処理１１と等価の処理を行うことができる。
【００４４】
したがって、変換タイプDST2の直交変換を表す変換行列TDST2（以下において、変換タイプDST2の変換行列とも称する）は、符号反転操作を表す符号反転行列S、変換タイプDCT2の直交変換を表す変換行列TDCT2（以下において、変換タイプDCT2の変換行列とも称する）、およびフリップ操作を表すフリップ行列Fを用いて以下の式（６）のように表すことができる。
【００４５】
【数４】
2022002352.tif 000006
【００４６】
STF操作とは、入力信号の順序を逆順に並び替えるフリップ操作（F）、フリップ操作後の入力信号の直交変換（T）、および、直交変換後の奇数位置にある変換係数を符号反転する符号反転操作（S）の３つの処理（F→T→Sの順に処理）を行うことを示す。
【００４７】
例えば図２のＡに示されるような、入力信号Xに対して、変換タイプDST（Discrete Sine Transform）4の直交変換処理２１を行い、出力信号Yを出力する処理は、図２のＢに示されるように、変換タイプDCT（Discrete Cosine Transform）4の直交変換処理２３を用いたSTF操作により実現することができる。つまり、入力信号Xに対してフリップ操作（F）２２を行い、そのフリップ操作された入力信号Xに対して変換タイプDCT4の直交変換処理（T）２３を行い、得られた直交変換係数に対して符号反転操作（S）２４を行うことにより、変換タイプDST4の直交変換処理２１と等価の処理を行うことができる。
【００４８】
したがって、変換タイプDST4の直交変換を表す変換行列TDST4（以下において、変換タイプDST4の変換行列とも称する）は、符号反転操作を表す符号反転行列S、変換タイプDCT4の直交変換を表す変換行列TDCT4（以下において、変換タイプDCT4の変換行列とも称する）、およびフリップ操作を表すフリップ行列Fを用いて以下の式（７）のように表すことができる。
【００４９】
【数５】
2022002352.tif 000007
【００５０】
なお、フリップ行列Fは、以下の式（８）のように表すことができる。符号反転行列Sは、以下の式（９）のように表すことができる。
【００５１】
【数６】
2022002352.tif 000008
【００５２】
＜FTS操作やSTF操作を用いたtype2/type4 AMT＞
このような非特許文献４に記載のFTS操作やSTF操作を用いて実現する変換タイプDST2やDST4の1次元直交変換を、非特許文献３に記載のtype2/type4 AMTに適用することにより、FTS操作やSTF操作を用いたプライマリ変換（逆プライマリ変換）を実現することができる。例えば、プライマリ変換において、図３の表に示されるように制御する。
【００５３】
図３の表において、例えば、１次元変換（１次元直交変換）の変換タイプを指定する変換タイプ識別子trTypeIdxが０、すなわち、変換タイプDCT2の１次元変換が指定される場合、入力信号に対するプリ処理（入力側の処理）としても、変換係数に対するポスト処理（出力側の処理）としても、フリップ操作（F）も符号反転操作（S）もスキップ（省略）され（False）、変換タイプがDCT2でサイズがnTbSの変換行列transMatrixnTbS,DCT2をベース変換行列Tbaseとして用いた行列演算（１次元変換）のみが行われる。
【００５４】
同様に、変換タイプ識別子trTypeIdxが１、すなわち、変換タイプDCT4の１次元変換が指定される場合、プリ処理としてもポスト処理としても、フリップ操作（F）も符号反転操作（S）もスキップ（省略）され（False）、変換タイプがDCT4でサイズがnTbSの変換行列transMatrixnTbS,DCT4をベース変換行列Tbaseとして用いた行列演算（１次元変換）のみが行われる。
【００５５】
これに対して、変換タイプ識別子trTypeIdxが２、すなわち、変換タイプDST4の１次元変換が指定される場合、プリ処理として、入力信号に対してフリップ操作（F）が実行され（True）、符号反転操作（S）がスキップ（省略）される（False）。そして、フリップ操作された入力信号に対して、変換タイプがDCT4でサイズがnTbSの変換行列transMatrixnTbS,DCT4をベース変換行列Tbaseとして用いた行列演算（１次元変換）が行われる。さらに、ポスト処理として、その行列演算により得られた変換係数に対して符号反転操作（S）が実行され（True）、フリップ操作（F）がスキップ（省略）される（False）。
【００５６】
同様に、変換タイプ識別子trTypeIdxが３、すなわち、変換タイプDST2の１次元変換が指定される場合、プリ処理として、入力信号に対して入力反転操作（S）が実行され（True）、フリップ操作（F）がスキップ（省略）される（False）。そして、入力反転操作された入力信号に対して、変換タイプがDCT2でサイズがnTbSの変換行列transMatrixnTbS,DCT2をベース変換行列Tbaseとして用いた行列演算（１次元変換）が行われる。さらに、ポスト処理として、その行列演算により得られた変換係数に対してフリップ操作（F）が実行され（True）、符号反転操作（S）がスキップ（省略）される（False）。
【００５７】
このような処理を実現するハードウエアの構成例を図４に示す。図４の場合、変換装置５０は、制御部５１、プリ処理部５２、行列演算部５３、およびポスト処理部５４を有する。
【００５８】
制御部５１は、変換タイプ識別子trTypeIdx、入力信号の処理対象ブロックの幅log2TBWidth、および入力信号の処理対象ブロックの高さlog2TBHeight等のパラメータに基づいて、プリ処理やポスト処理として実行する処理や、１次元変換に用いるベース変換行列（つまり変換タイプ）を選択する。制御部５１は、プリ処理の選択結果を示すプリ処理選択情報をプリ処理部５２に供給する。また、制御部５１は、ベース変換行列の選択結果を示すベース変換行列選択情報を行列演算部５３に供給する。さらに、制御部５１は、ポスト処理の選択結果を示すポスト処理選択情報をポスト処理部５４に供給する。
【００５９】
プリ処理部５２は、符号反転操作を行う符号反転部６１と、フリップ操作を行うフリップ部６２とを有し、プリ処理選択情報に従っていずれか一方の処理部を選択し、入力係数データXinに対して符号反転操作またはフリップ操作を行い、係数データX'を生成する（X' = S・Xin、または、X' = F・Xin）。
【００６０】
行列演算部５３は、ベース変換行列LUT（Look Up Table）７０を有する。ベース変換行列LUT７０は、ベース変換行列の候補である変換タイプDCT2の変換行列７１と、変換タイプDCT4の変換行列７２とを記憶する。行列演算部５３は、それらの候補のうち、ベース変換行列選択情報により指定される変換行列をベース変換行列LUT７０より読み出し、そのベース変換行列Tbaseを用いて係数データX'に対する行列演算（１次元変換）を行い、係数データX''を生成する（X'' = Tbase・X'）。
【００６１】
ポスト処理部５４は、フリップ操作を行うフリップ部８１と、符号反転操作を行う符号反転部８２とを有し、ポスト処理選択情報に従っていずれか一方の処理部を選択し、係数データX''に対してフリップ操作または符号反転操作を行い、出力係数データXoutを生成する（Xout = F・X''、または、Xout = S・X''）。
【００６２】
つまり、上述のような１次元変換を行う変換装置５０をハードウエアで構成する場合、プリ処理部５２として、符号反転部６１およびフリップ部６２の両方の構成が必要になる。同様に、ポスト処理部５４として、フリップ部８１および符号反転部８２の両方の構成が必要になる。そのため、回路規模が増大し、実装コストが増大するおそれがあった。
【００６３】
また、このような変換処理の流れの例を図５のフローチャートを参照して説明する。変換処理が開始されると、制御部５１は、指定された変換タイプやサイズ（つまり、trTypeIdx, log2TBWidth, log2TBHeight）等に基づいて、ベース変換行列選択情報、プリ処理選択情報、およびポスト処理選択情報を設定する（ステップＳ５１）。
【００６４】
プリ処理部５２は、プリ処理選択情報に基づいてプリ処理を行うか否かを判定し（ステップＳ５２）、プリ処理を行う場合は、さらにその処理内容（符号反転操作かフリップ操作か）を判定する（ステップＳ５３）。プリ処理部５２は、これらの判定結果に従って、入力係数データXinに対して符号反転操作を行う（ステップＳ５４）か、フリップ操作を行う（ステップＳ５５）か、プリ処理をスキップする。
【００６５】
行列演算部５３は、ベース変換行列選択情報に従って、選択したベース変換行列Tbaseを用いて係数データX'に対する行列演算（１次元変換）を行う（ステップＳ５６）。
【００６６】
ポスト処理部５４は、ポスト処理選択情報に基づいてポスト処理を行うか否かを判定し（ステップＳ５７）、ポスト処理を行う場合は、さらにその処理内容（フリップ操作か符号反転操作か）を判定する（ステップＳ５８）。ポスト処理部５４は、これらの判定結果に従って、係数データX''に対してフリップ操作を行う（ステップＳ５９）か、符号反転操作を行う（ステップＳ６０）か、ポスト処理をスキップする。
【００６７】
以上のように、プリ処理およびポスト処理について、実行するか否かを判定し、実行する場合は、その処理内容（符号反転操作を行うかフリップ操作を行うか）を判定しなければならなかった。そのため、上述のような１次元変換をソフトウエアにより実現する場合も、プリ処理やポスト処理の制御が複雑になり、処理の負荷が増大し、実装コストが増大するおそれがあった。
【００６８】
なお、逆プライマリ変換の場合も、上述したプライマリ変換の場合と同様の制御が必要になる。つまり、プリ処理およびポスト処理としてフリップ操作および符号反転操作の両方を候補とする必要がある。そのため上述したプライマリ変換の場合と同様に、回路規模や処理の負荷が増大し、実装コストが増大するおそれがあった。
【００６９】
＜３．コンセプト＞
そこで、FTS操作やSTF操作を用いたtype2/type4 AMTを簡略化することにより、実装コストの増大を抑制させる。
【００７０】
変換タイプDCT4の変換行列TDCT4、変換タイプDST4の変換行列TDST4、フリップ行列F、および符号反転行列Sは、以下の式（１０）乃至式（１３）に示されるような特性を有する。つまり、変換タイプDCT4の変換行列TDCT4、変換タイプDST4の変換行列TDST4、フリップ行列F、および符号反転行列Sは、対称行列である。
【００７１】
【数７】
2022002352.tif 000009
【００７２】
したがって、例えば図２のＡに示されるような、入力信号Xに対して、変換タイプDST4の直交変換処理２１を行い、出力信号Yを出力する処理は、図２のＣに示されるように、変換タイプDCT4の直交変換処理２６を用いたFTS操作により実現することができる。つまり、入力信号Xに対して符号反転操作（S）２５を行い、その符号反転操作された入力信号Xに対して変換タイプDCT4の直交変換処理（T）２６を行い、得られた直交変換係数に対してフリップ操作（F）２７を行うことにより、変換タイプDST4の直交変換処理２１と等価の処理を行うことができる。なお、直交変換処理２６と直交変換処理２３は等価である。つまり、変換タイプDST4の変換行列TDST4は、フリップ操作を表すフリップ行列F、変換タイプDCT4の変換行列TDCT4、および符号反転操作を表す符号反転行列Sを用いて以下の式（１４）のように表すことができる。
【００７３】
【数８】
2022002352.tif 000010
【００７４】
このようにすることにより、変換タイプDST4の１次元変換と変換タイプDST2の１次元変換とを選択的に行う場合に、符号反転操作（S）１２（図１のＢ）と、符号反転操作（S）２５（図２のＣ）とを共通化することができる。同様に、フリップ操作（F）１４（図１のＢ）と、フリップ操作（F）２７（図２のＣ）とを共通化することができる。換言するに、直交変換処理の前に行われるプリ処理を（符号反転操作（S）に）統一し、直交変換処理の後に行われるポスト処理を（フリップ操作（F）に）統一することができる。
【００７５】
逆１次元変換の場合も基本的に同様である。例えば、変換タイプDST2の変換行列の転置行列TDST2tは、上述した式（６）、式（１２）、および式（１３）等から、符号反転行列S、変換タイプDCT2の変換行列の転置行列TDCT2t、およびフリップ行列Fを用いて以下の式（１５）のように表すことができる。
【００７６】
【数９】
2022002352.tif 000011
【００７７】
また、変換タイプDST4の変換行列の転置行列TDST4tは、上述した式（７）、式（１２）、および式（１３）等から、符号反転行列S、変換タイプDCT4の変換行列の転置行列TDCT4t、およびフリップ行列Fを用いて以下の式（１６）のように表すことができる。
【００７８】
【数１０】
2022002352.tif 000012
【００７９】
したがって、式（１４）の場合と同様に、以下の式（１７）のように変形することができる。
【００８０】
【数１１】
2022002352.tif 000013
【００８１】
式（１５）および式（１７）に示されるように、逆１次元変換の場合も、変換タイプDST4の逆１次元変換と変換タイプDST2の逆１次元変換とを選択的に行う場合に、符号反転操作（S）とフリップ操作（F）とをそれぞれ共通化することができる。換言するに、逆直交変換処理の前に行われるプリ処理を（フリップ操作（F）に）統一し、逆直交変換処理の後に行われるポスト処理を（符号反転操作（S）に）統一することができる。
【００８２】
以上のように、プリ処理およびポスト処理における処理内容の選択（符号反転操作（S）を行うかフリップ操作（F）を行うか）を省略することができるので、１次元変換または逆１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができ、１次元変換または逆１次元変換をより容易に行うことができる。つまり、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【００８３】
＜４．第１の実施の形態＞
＜変換装置＞
図６は、本技術を適用した画像処理装置の一態様である変換装置の主な構成の一例を示すブロック図である。図６に示される変換装置１００は、入力された係数データに対して、変換タイプDCT2、DST2、DCT4、およびDST4の１次元変換を行う装置である。図６に示されるように、変換装置１００は、制御部１０１、符号反転部１０２、行列演算部１０３、およびフリップ部１０４を有する。
【００８４】
制御部１０１は、１次元変換の制御に関する処理を行う。例えば、制御部１０１は、入力された変換タイプ識別子trTypeIdx等のパラメータに基づいて、符号反転を行うか否かを示すフラグ情報である符号反転フラグ（signChangeFlag）を設定し、それを符号反転部１０２に供給することにより、符号反転操作（S）を制御する。また、例えば、制御部１０１は、入力された変換タイプ識別子trTypeIdx、入力信号の処理対象ブロックの幅log2TBWidth、および入力信号の処理対象ブロックの高さlog2TBHeight等のパラメータに基づいて、行列演算に用いるベース変換行列Tbaseを指定するベース変換行列選択情報を設定し、それを行列演算部１０３に供給することにより、ベース変換行列Tbaseを用いた行列演算を制御する。さらに、例えば、制御部１０１は、入力された変換タイプ識別子trTypeIdx等のパラメータに基づいて、フリップ操作（F）を行うか否かを示すフラグ情報であるフリップフラグ（flipFlag）を設定し、それをフリップ部１０４に供給することにより、フリップ操作（F）を制御する。
【００８５】
制御部１０１は、符号反転フラグ設定部１１１、ベース変換行列選択部１１２、およびフリップフラグ設定部１１３を有する。符号反転フラグ設定部１１１は、変換タイプ識別子trTypeIdx等のパラメータに基づいて、符号反転フラグ（signChangeFlag）を設定する。ベース変換行列選択部１１２は、変換タイプ識別子trTypeIdx、入力信号の処理対象ブロックの幅log2TBWidth、および入力信号の処理対象ブロックの高さlog2TBHeight等のパラメータに基づいて、ベース変換行列選択情報を設定する。フリップフラグ設定部１１３は、変換タイプ識別子trTypeIdx等のパラメータに基づいて、フリップフラグ（flipFlag）を設定する。
【００８６】
制御部１０１は、任意の構成を有する。例えば、制御部１０１が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、制御部１０１が、例えばCPU（Central Processing Unit）、ROM（Read Only Memory）、RAM（Random Access Memory）等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、制御部１０１が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【００８７】
符号反転フラグ設定部１１１、ベース変換行列選択部１１２、およびフリップフラグ設定部１１３の各処理部は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【００８８】
符号反転部１０２は、符号反転操作（S）に関する処理を行う。例えば、符号反転部１０２は、入力係数データXinに対して、奇数位置の係数データを符号反転する符号反転操作（S）を行い、係数データX'を生成する。なお、符号反転部１０２は、符号反転操作（S）をスキップ（省略）することもできる。その場合、入力係数データXinは、そのまま係数データX'とされる。符号反転部１０２は、制御部１０１から供給される符号反転フラグ（signChangeFlag）に基づいて、符号反転操作（S）を実行するか否かを選択する。いずれの場合も、符号反転部１０２は、その係数データX'を行列演算部１０３に供給する。
【００８９】
符号反転部１０２は、任意の構成を有する。例えば、符号反転部１０２が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、符号反転部１０２が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、符号反転部１０２が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【００９０】
行列演算部１０３は、行列演算に関する処理を行う。例えば、行列演算部１０３は、符号反転部１０２から供給される係数データX'に対して、ベース変換行列Tbaseを用いた行列演算（１次元変換）を行い、係数データX''を生成する。行列演算部１０３は、制御部１０１から供給されるベース変換行列選択情報により指定される変換タイプの変換行列を用いて行列演算を行う。行列演算部１０３は、ベース変換行列LUT１２０を有する。ベース変換行列LUT１２０には、変換タイプDCT2の変換行列１２１と、変換タイプDCT4の変換行列１２２とが登録されている（記憶されている）。ベース変換行列LUT１２０には、さらに、変換行列１２１および変換行列１２２以外の変換行列が登録されていてもよい。行列演算部１０３は、ベース変換行列選択情報により指定される変換タイプの変換行列を、そのベース変換行列LUT１２０から読み出し、ベース変換行列として、係数データX'に対する行列演算に用いる。行列演算部１０３は、生成した係数データX''をフリップ部１０４に供給する。
【００９１】
行列演算部１０３は、任意の構成を有する。例えば、行列演算部１０３が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、行列演算部１０３が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、行列演算部１０３が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。いずれの場合も、行列演算部１０３は、例えばRAM等の記憶領域を有し、それによりベース変換行列LUT１２０を形成する。
【００９２】
フリップ部１０４は、フリップ操作（F）に関する処理を行う。例えば、フリップ部１０４は、係数データX''に対して、係数データの順序を逆順に並び替えるフリップ操作（F）を行い、出力係数データXoutを生成する。なお、フリップ部１０４は、フリップ操作（F）をスキップ（省略）することもできる。その場合、係数データX''は、そのまま出力係数データXoutとされる。フリップ部１０４は、制御部１０１から供給されるフリップフラグ（flipFlag）に基づいて、フリップ操作（F）を実行するか否かを選択する。いずれの場合も、フリップ部１０４は、その出力係数データXoutを変換装置１００の外部に出力する。
【００９３】
フリップ部１０４は、任意の構成を有する。例えば、フリップ部１０４が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、フリップ部１０４が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、フリップ部１０４が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【００９４】
＜制御例＞
このような変換装置１００において、例えば、制御部１０１は、図７に示される表のように制御を行う。例えば、入力された変換タイプ識別子trTypeIdxが０の場合、制御部１０１は、変換タイプ（trType）がDCT2の１次元変換を行うように制御する。すなわち、制御部１０１は、符号反転フラグ設定部１１１を用いて、符号反転フラグ（signChangeFlag）を偽（False）（例えば０）に設定する。また、制御部１０１は、ベース変換行列選択部１１２を用いて、変換タイプDCT2であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT2を指定するベース変換行列選択情報を生成する。さらに、制御部１０１は、フリップフラグ設定部１１３を用いて、フリップフラグ（flipFlag）を偽（False）（例えば０）に設定する。つまり、この場合、変換タイプDCT2の変換行列を用いた行列演算のみが行われ、入力係数データXinに対する符号反転操作（S）や、直交変換係数である係数データX''に対するフリップ操作（F）はスキップされる。
【００９５】
例えば、入力された変換タイプ識別子trTypeIdxが１の場合、制御部１０１は、変換タイプ（trType）がDCT4の１次元変換を行うように制御する。すなわち、制御部１０１は、符号反転フラグ設定部１１１を用いて、符号反転フラグを偽（False）（例えば０）に設定する。また、制御部１０１は、ベース変換行列選択部１１２を用いて、変換タイプDCT4であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT4を指定するベース変換行列選択情報を生成する。さらに、制御部１０１は、フリップフラグ設定部１１３を用いて、フリップフラグを偽（False）（例えば０）に設定する。つまり、この場合、変換タイプDCT4の変換行列を用いた行列演算のみが行われ、入力係数データXinに対する符号反転操作（S）や、直交変換係数である係数データX''に対するフリップ操作（F）はスキップされる。
【００９６】
例えば、入力された変換タイプ識別子trTypeIdxが２の場合、制御部１０１は、変換タイプ（trType）がDST4の１次元変換を行うように制御する。すなわち、制御部１０１は、符号反転フラグ設定部１１１を用いて、符号反転フラグを真（True）（例えば１）に設定する。また、制御部１０１は、ベース変換行列選択部１１２を用いて、変換タイプDCT4であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT4を指定するベース変換行列選択情報を生成する。さらに、制御部１０１は、フリップフラグ設定部１１３を用いて、フリップフラグを真（True）（例えば１）に設定する。つまり、この場合、入力係数データXinに対する符号反転操作（S）、変換タイプDCT4の変換行列を用いた行列演算、および、直交変換係数である係数データX''に対するフリップ操作（F）が実行される。
【００９７】
例えば、入力された変換タイプ識別子trTypeIdxが３の場合、制御部１０１は、変換タイプ（trType）がDST2の１次元変換を行うように制御する。すなわち、制御部１０１は、符号反転フラグ設定部１１１を用いて、符号反転フラグを真（True）（例えば１）に設定する。また、制御部１０１は、ベース変換行列選択部１１２を用いて、変換タイプDCT2であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT2を指定するベース変換行列選択情報を生成する。さらに、制御部１０１は、フリップフラグ設定部１１３を用いて、フリップフラグを真（True）（例えば１）に設定する。つまり、この場合、入力係数データXinに対する符号反転操作（S）、変換タイプDCT2の変換行列を用いた行列演算、および、直交変換係数である係数データX''に対するフリップ操作（F）が実行される。
【００９８】
以上のように、変換装置１００は、符号反転操作（S）およびフリップ操作（F）をスキップすることにより、変換タイプDCT2またはDCT4の１次元変換を行うことができる。また、変換装置１００は、符号反転操作（S）およびフリップ操作（F）を実行し、FTS操作によって、変換タイプDST2またはDST4の１次元変換を行うことができる。
【００９９】
つまり、図６に示されるように、変換装置１００は、変換タイプDST2用のプリ処理部と変換タイプDST4用のプリ処理部とを符号反転部１０２に共通化することができる。同様に、変換タイプDST2用のポスト処理部と変換タイプDST4用のポスト処理部とをフリップ部１０４に共通化することができる。したがって、回路規模の増大を抑制し、実装コストの増大を抑制することができる（回路規模を低減させ、実装コストを低減させることができる）。
【０１００】
＜変換処理の流れ＞
次に、この変換装置１００により実行される変換処理の流れの例を、図８のフローチャートを参照して説明する。
【０１０１】
変換処理が開始されると、制御部１０１（符号反転フラグ設定部１１１、ベース変換行列選択部１１２、およびフリップフラグ設定部１１３）は、ステップＳ１０１において、変換装置１００の外部から供給される変換タイプtrTypeIdxや、サイズ（log2TBWidth, log2TBHeight）に基づいて、ベース変換行列選択情報、符号反転フラグ（signChangeFlag）、およびフリップフラグ（flipFlag）を上述のように設定する。
【０１０２】
ステップＳ１０２において、符号反転部１０２は、ステップＳ１０１において設定された符号反転フラグに基づいて、符号反転操作（S）を行うか否かを判定する（signChangeFlag == True ?）。符号反転フラグの値が真（True）であり、符号反転操作（S）を行うと判定された場合、処理はステップＳ１０３に進む。
【０１０３】
ステップＳ１０３において、符号反転部１０２は、１次元信号列である入力係数データXinに対して符号反転操作（S）を行い、１次元信号列である係数データX'を生成する。この符号反転操作（S）は、例えば、以下の式（１８）のように表すことができる。
【０１０４】
【数１２】
2022002352.tif 000014
【０１０５】
ステップＳ１０３の処理が終了すると処理はステップＳ１０４に進む。また、ステップＳ１０２において、符号反転フラグの値が偽（False）であり、符号反転操作（S）を行わないと判定された場合、ステップＳ１０３の処理はスキップされ、入力係数データXinがそのまま係数データX'とされ、処理はステップＳ１０４に進む。
【０１０６】
ステップＳ１０４において、行列演算部１０３は、選択されたベース変換行列Tbase、すなわち、ステップＳ１０１において設定されたベース変換行列選択情報により指定されるベース変換行列Tbaseをベース変換行列LUT１２０から取得し、それを用いて１次元信号列である係数データX'に対する行列演算（１次元変換）を行い、１次元信号列である係数データX''を生成する。この行列演算は、例えば、以下の式（１９）のように表すことができる。
【０１０７】
【数１３】
2022002352.tif 000015
【０１０８】
ステップＳ１０５において、フリップ部１０４は、ステップＳ１０１において設定されたフリップフラグに基づいて、フリップ操作（F）を行うか否かを判定する（FlipFlag == True ?）。フリップフラグの値が真（True）であり、フリップ操作（F）を行うと判定された場合、処理はステップＳ１０６に進む。
【０１０９】
ステップＳ１０６において、フリップ部１０４は、ステップＳ１０４において得られた１次元信号列である係数データX''に対してフリップ操作（F）を行い、１次元信号列である出力係数データXoutを生成する。このフリップ操作（F）は、例えば、以下の式（２０）のように表すことができる。
【０１１０】
【数１４】
2022002352.tif 000016
【０１１１】
フリップ部１０４は、生成された出力係数データXoutを変換装置１００の外部に出力する。ステップＳ１０６の処理が終了すると変換処理が終了する。また、ステップＳ１０５において、フリップフラグの値が偽（False）であり、フリップ操作（F）を行わないと判定された場合、ステップＳ１０６の処理はスキップされ、係数データX''がそのまま出力係数データXoutとされ、変換装置１００の外部に出力される。出力係数データXoutが出力されると変換処理が終了する。
【０１１２】
つまり、この場合、プリ処理およびポスト処理の内容を確認する必要がなく、符号反転操作（S）およびフリップ操作（F）を実行するか否かのみを制御すればよい。したがって、プリ処理やポスト処理の制御の複雑化を抑制することができる。したがって、処理の負荷の増大を抑制し、実装コストの増大を抑制することができる（処理の負荷を低減させ、実装コストを低減させることができる）。
【０１１３】
以上のように、変換装置１００は、１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができ、１次元変換をより容易に行うことができる。
【０１１４】
＜変換タイプ＞
以上においては、変換装置１００が、変換タイプDCT2の１次元変換を含むFTS操作により変換タイプDST2の１次元変換を実現する例と、変換タイプDCT4の１次元変換を含むFTS操作により変換タイプDST4の１次元変換を実現する例について説明したが、変換装置１００に適用可能な変換タイプは、上述の例に限定されない。
【０１１５】
例えば、第１の変換タイプの変換行列を用いた１次元変換と、その第１の変換タイプとは異なる第２の変換タイプの変換行列を用いた１次元変換を含むFTS操作とが等価である、第１の変換タイプおよび第２の変換タイプを変換装置１００に適用することができる。上述の例では、変換タイプDST2が第１の変換タイプであり、変換タイプDCT2が第２の変換タイプである。
【０１１６】
このように、第２の変換タイプの変換行列を用いた１次元変換を含むFTS操作により、第１の変換タイプの変換行列を用いた１次元変換を実現することができる関係を「FTS操作により対になる関係」とも称する。また、このような関係の第１の変換タイプと第２の変換タイプのことを、「FTS操作により対になる変換タイプ」とも称する。例えば、第１の変換タイプの、FTS操作により対になる変換タイプは、第２の変換タイプである。したがって、第１の変換タイプの変換行列を用いた１次元変換は、FTS操作により対になる変換タイプである第２の変換タイプの変換行列を用いた１次元変換を含むFTS操作により実現することができる。
【０１１７】
また、例えば、第１の変換タイプおよび第２の変換タイプとは異なる第３の変換タイプの変換行列を用いた１次元変換と、第１の変換タイプ乃至第３の変換タイプとは異なる第４の変換タイプの変換行列を用いた１次元変換を含むSTF操作とが等価であり、かつ、第４の変換タイプの変換行列が対称行列である、第３の変換タイプおよび第４の変換タイプも変換装置１００に適用することができる。上述の例では、変換タイプDST4が第３の変換タイプであり、変換タイプDCT4が第４の変換タイプである。
【０１１８】
このように、第４の変換タイプの変換行列を用いた１次元変換を含むSTF操作により、第３の変換タイプの変換行列を用いた１次元変換を実現することができる関係を「STF操作により対になる関係」とも称する。また、このような関係の第３の変換タイプと第４の変換タイプのことを、「STF操作により対になる変換タイプ」とも称する。例えば、第３の変換タイプの、STF操作により対になる変換タイプは、第４の変換タイプである。したがって、第３の変換タイプの変換行列を用いた１次元変換は、STF操作により対になる変換タイプである第４の変換タイプの、対称行列である変換行列を用いた１次元変換を含むFTS操作により実現することができる。
【０１１９】
付言するに、上述した例のように、変換タイプDST4の変換行列を用いた１次元変換は、変換タイプDCT4の変換行列を用いた１次元変換を含むFTS操作により実現することができる。つまり、第３の変換タイプの変換行列を用いた１次元変換は、第４の変換タイプの変換行列を用いた１次元変換を含むFTS操作により実現することができる。すなわち、第４の変換タイプは、第３の変換タイプの、「STF操作により対になる変換タイプ」および「FTS操作により対になる変換タイプ」である。
【０１２０】
以上のように変換装置１００は、
画像に関する係数データの１次元信号列に対して、１次元信号列の奇数番目の信号の符号を反転する符号反転操作（S）を行う符号反転部と、
その符号反転部により符号反転操作された１次元信号列に対して、
第１の変換タイプの１次元変換を実現する場合、FTS操作により第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの１次元変換を実現する場合、STF操作により第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
そのベース変換行列を用いて行列演算を行う行列演算部と、
その行列演算部により行列演算が行われた１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作（F）を行うフリップ部と
を備えていればよい。
【０１２１】
換言するに、
画像に関する係数データの１次元信号列に対して、その１次元信号列の奇数番目の信号の符号を反転する符号反転操作（S）を行い、
その符号反転操作された１次元信号列に対して、
第１の変換タイプの１次元変換を実現する場合、FTS操作により第１の変換タイプの１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの１次元変換を実現する場合、STF操作により第３の変換タイプの１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
そのベース変換行列を用いて行列演算を行い、
その行列演算が行われた１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作（F）を行えばよい。
【０１２２】
このようにすることにより、変換装置１００は、１次元変換をより容易に行うことができる。
【０１２３】
なお、「STF操作により対になる変換タイプ」および「FTS操作により対になる変換タイプ」を互いに区別しないで説明する場合、「対になる変換タイプ」とも称する。
【０１２４】
なお、第２の変換タイプまたは第４の変換タイプの１次元変換を実現する場合、変換装置１００は、符号反転操作およびフリップ操作（F）をスキップし、係数データの１次元信号列に対して、第２の変換タイプまたは第４の変換タイプの変換行列をベース変換行列として行列演算を行うようにすればよい。このようにすることにより、変換装置１００は、第２の変換タイプまたは第４の変換タイプの１次元変換も容易に実現することができる。
【０１２５】
また、変換装置１００は、指定された１次元変換の変換タイプに基づいて、符号反転操作（S）を行うか否かを示す符号反転フラグを設定する符号反転フラグ設定部を備え、符号反転部が、その符号反転フラグ設定部により設定された符号反転フラグに基づいて、符号反転操作（S）を行うかスキップする（いずれかを選択し、実行する）ようにしてもよい。
【０１２６】
また、変換装置１００は、指定された１次元変換の変換タイプに基づいて、フリップ操作（F）を行うか否かを示すフリップフラグを設定するフリップフラグ設定部を備え、フリップ部が、そのフリップフラグ設定部により設定されたフリップフラグに基づいて、フリップ操作（F）を行うかスキップする（いずれかを選択、実行する）ようにしてもよい。
【０１２７】
このようにすることにより、変換装置１００は、１次元変換の変換タイプの指定に基づいて、符号反転操作およびフリップ操作（F）を実行するか、スキップするかを容易に制御することができる。したがって、変換装置１００は、第１の変換タイプ乃至第４の変換タイプのそれぞれの１次元変換を、より容易に実現することができる。
【０１２８】
また、変換装置１００は、指定された１次元変換の変換タイプに基づいて、第２の変換タイプの変換行列と第４の変換タイプの変換行列とのいずれをベース変換行列とするかを選択するベース変換行列選択部を備え、そのベース変換行列選択部により選択されたベース変換行列を用いて、行列演算を行うようにしてもよい。このようにすることにより、変換装置１００は、１次元変換の変換タイプの指定に基づいて、使用するベース変換行列を容易に選択することができる。したがって、変換装置１００は、第１の変換タイプ乃至第４の変換タイプのそれぞれの１次元変換を、より容易に実現することができる。
【０１２９】
＜５．第２の実施の形態＞
＜逆変換装置＞
図９は、本技術を適用した画像処理装置の一態様である逆変換装置の主な構成の一例を示すブロック図である。図６に示される逆変換装置１５０は、入力された係数データ（直交変換係数）に対して、変換タイプDCT2、DST2、DCT4、およびDST4の逆１次元変換を行う装置である。逆変換装置１５０は、第１の実施の形態において上述した変換装置１００に対応する装置であり、変換装置１００が行う１次元変換の逆処理である逆１次元変換を行う。図９に示されるように、逆変換装置１５０は、制御部１５１、フリップ部１５２、行列演算部１５３、および符号反転部１５４を有する。
【０１３０】
制御部１５１は、逆１次元変換の制御に関する処理を行う。例えば、制御部１５１は、入力された変換タイプ識別子trTypeIdx等のパラメータに基づいて、フリップ操作（F）を行うか否かを示すフラグ情報であるフリップフラグ（flipFlag）を設定し、それをフリップ部１５２に供給することにより、フリップ操作（F）を制御する。また、例えば、制御部１５１は、入力された変換タイプ識別子trTypeIdx、入力信号の処理対象ブロックの幅log2TBWidth、および入力信号の処理対象ブロックの高さlog2TBHeight等のパラメータに基づいて、行列演算に用いるベース変換行列Tbaseを指定するベース変換行列選択情報を設定し、それを行列演算部１５３に供給することにより、ベース変換行列Tbaseを用いた行列演算を制御する。さらに、例えば、制御部１５１は、入力された変換タイプ識別子trTypeIdx等のパラメータに基づいて、符号反転を行うか否かを示すフラグ情報である符号反転フラグ（signChangeFlag）を設定し、それを符号反転部１５４に供給することにより、符号反転操作（S）を制御する。
【０１３１】
制御部１５１は、フリップフラグ設定部１６１、ベース変換行列選択部１６２、および符号反転フラグ設定部１６３を有する。フリップフラグ設定部１６１は、変換タイプ識別子trTypeIdx等のパラメータに基づいて、フリップフラグ（flipFlag）を設定する。ベース変換行列選択部１６２は、変換タイプ識別子trTypeIdx、入力信号の処理対象ブロックの幅log2TBWidth、および入力信号の処理対象ブロックの高さlog2TBHeight等のパラメータに基づいて、ベース変換行列選択情報を設定する。符号反転フラグ設定部１６３は、変換タイプ識別子trTypeIdx等のパラメータに基づいて、符号反転フラグ（signChangeFlag）を設定する。
【０１３２】
制御部１５１は、任意の構成を有する。例えば、制御部１５１が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、制御部１５１が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、制御部１５１が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０１３３】
フリップフラグ設定部１６１、ベース変換行列選択部１６２、および符号反転フラグ設定部１６３の各処理部は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０１３４】
フリップ部１５２は、フリップ操作（F）に関する処理を行う。例えば、フリップ部１５２は、入力係数データXinに対して、係数データの順序を逆順に並び替えるフリップ操作（F）を行い、係数データX'を生成する。なお、フリップ部１５２は、フリップ操作（F）をスキップ（省略）することもできる。その場合、入力係数データXinは、そのまま係数データX'とされる。フリップ部１５２は、制御部１５１から供給されるフリップフラグ（flipFlag）に基づいて、フリップ操作（F）を実行するか否かを選択する。いずれの場合も、フリップ部１５２は、その係数データX'を行列演算部１５３に供給する。
【０１３５】
フリップ部１５２は、任意の構成を有する。例えば、フリップ部１５２が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、フリップ部１５２が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、フリップ部１５２が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０１３６】
行列演算部１５３は、行列演算に関する処理を行う。例えば、行列演算部１５３は、フリップ部１５２から供給される係数データX'に対して、ベース変換行列の転置行列Tbasetを用いた行列演算（逆１次元変換）を行い、係数データX''を生成する。行列演算部１５３は、制御部１５１から供給されるベース変換行列選択情報により指定される変換タイプのベース変換行列の転置行列Tbasetを用いて行列演算を行う。行列演算部１５３は、ベース変換行列LUT１７０を有する。ベース変換行列LUT１７０には、変換タイプDCT2の変換行列１７１と、変換タイプDCT4の変換行列１７２とが登録されている（記憶されている）。ベース変換行列LUT１７０には、さらに、変換行列１７１および変換行列１７２以外の変換行列が登録されていてもよい。行列演算部１５３は、ベース変換行列選択情報により指定される変換タイプの変換行列を、そのベース変換行列LUT１７０から読み出し、ベース変換行列として、係数データX'に対する行列演算に用いる。つまり、行列演算部１５３は、ベース変換行列LUT１７０から読み出したベース変換行列の転置行列Tbasetを用いて係数データX'に対する行列演算を行う。行列演算部１５３は、生成した係数データX''を符号反転部１５４に供給する。
【０１３７】
行列演算部１５３は、任意の構成を有する。例えば、行列演算部１５３が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、行列演算部１５３が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、行列演算部１５３が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。いずれの場合も、行列演算部１５３は、例えばRAM等の記憶領域を有し、それによりベース変換行列LUT１７０を形成する。
【０１３８】
符号反転部１５４は、符号反転操作（S）に関する処理を行う。例えば、符号反転部１５４は、係数データX''に対して、奇数位置の係数データを符号反転する符号反転操作（S）を行い、出力係数データXoutを生成する。なお、符号反転部１５４は、符号反転操作（S）をスキップ（省略）することもできる。その場合、係数データX''は、そのまま出力係数データXoutとされる。符号反転部１５４は、制御部１５１から供給される符号反転フラグ（signChangeFlag）に基づいて、符号反転操作（S）を実行するか否かを選択する。いずれの場合も、符号反転部１５４は、その出力係数データXoutを逆変換装置１５０の外部に出力する。
【０１３９】
符号反転部１５４は、任意の構成を有する。例えば、符号反転部１５４が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、符号反転部１５４が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、符号反転部１５４が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０１４０】
＜制御例＞
このような逆変換装置１５０において、例えば、制御部１５１は、図１０に示される表のように制御を行う。例えば、入力された変換タイプ識別子trTypeIdxが０の場合、制御部１５１は、変換タイプ（trType）がDCT2の逆１次元変換を行うように制御する。すなわち、制御部１５１は、フリップフラグ設定部１６１を用いて、フリップフラグ（flipFlag）を偽（False）（例えば０）に設定する。また、制御部１５１は、ベース変換行列選択部１６２を用いて、変換タイプDCT2であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT2を指定するベース変換行列選択情報を生成する。さらに、制御部１５１は、符号反転フラグ設定部１６３を用いて、符号反転フラグ（signChangeFlag）を偽（False）（例えば０）に設定する。つまり、この場合、変換タイプDCT2の変換行列の転置行列（transMatrixnTbS,DCT2）tを用いた行列演算のみが行われ、入力係数データXinに対するフリップ操作（F）や、係数データX''に対する符号反転操作（S）はスキップされる。
【０１４１】
例えば、入力された変換タイプ識別子trTypeIdxが１の場合、制御部１５１は、変換タイプ（trType）がDCT4の逆１次元変換を行うように制御する。すなわち、制御部１５１は、フリップフラグ設定部１６１を用いて、フリップフラグを偽（False）（例えば０）に設定する。また、制御部１５１は、ベース変換行列選択部１６２を用いて、変換タイプDCT4であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT4を指定するベース変換行列選択情報を生成する。さらに、制御部１５１は、符号反転フラグ設定部１６３を用いて、符号反転フラグを偽（False）（例えば０）に設定する。つまり、この場合、変換タイプDCT4の変換行列の転置行列（transMatrixnTbS,DCT4）tを用いた行列演算のみが行われ、入力係数データXinに対するフリップ操作（F）や、係数データX''に対する符号反転操作（S）はスキップされる。
【０１４２】
例えば、入力された変換タイプ識別子trTypeIdxが２の場合、制御部１５１は、変換タイプ（trType）がDST4の逆１次元変換を行うように制御する。すなわち、制御部１５１は、フリップフラグ設定部１６１を用いて、フリップフラグを真（True）（例えば１）に設定する。また、制御部１５１は、ベース変換行列選択部１６２を用いて、変換タイプDCT4であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT4を指定するベース変換行列選択情報を生成する。さらに、制御部１５１は、符号反転フラグ設定部１６３を用いて、符号反転フラグを真（True）（例えば１）に設定する。つまり、この場合、入力係数データXinに対するフリップ操作（F）、変換タイプDCT4の変換行列の転置行列（transMatrixnTbS,DCT4）tを用いた行列演算、および、係数データX''に対する符号反転操作（S）が実行される。
【０１４３】
例えば、入力された変換タイプ識別子trTypeIdxが３の場合、制御部１５１は、変換タイプ（trType）がDST2の逆１次元変換を行うように制御する。すなわち、制御部１５１は、フリップフラグ設定部１６１を用いて、フリップフラグを真（True）（例えば１）に設定する。また、制御部１５１は、ベース変換行列選択部１６２を用いて、変換タイプDCT2であり、サイズがnTbS×nTbSであるベース変換行列transMatrixnTbS,DCT2を指定するベース変換行列選択情報を生成する。さらに、制御部１５１は、符号反転フラグ設定部１６３を用いて、符号反転フラグを真（True）（例えば１）に設定する。つまり、この場合、入力係数データXinに対するフリップ操作（F）、変換タイプDCT2の変換行列の転置行列（transMatrixnTbS,DCT2）tを用いた行列演算、および、係数データX''に対する符号反転操作（S）が実行される。
【０１４４】
以上のように、逆変換装置１５０は、フリップ操作（F）および符号反転操作（S）をスキップすることにより、変換タイプDCT2またはDCT4の逆1次元変換を行うことができる。また、逆変換装置１５０は、フリップ操作（F）および符号反転操作（S）を実行し、STF操作によって、変換タイプDST2またはDST4の逆１次元変換を行うことができる。
【０１４５】
つまり、図９に示されるように、逆変換装置１５０は、変換タイプDST2用のプリ処理部と変換タイプDST4用のプリ処理部とをフリップ部１５２に共通化することができる。同様に、変換タイプDST2用のポスト処理部と変換タイプDST4用のポスト処理部とを符号反転部１５４に共通化することができる。したがって、回路規模の増大を抑制し、実装コストの増大を抑制することができる（回路規模を低減させ、実装コストを低減させることができる）。
【０１４６】
＜逆変換処理の流れ＞
次に、この逆変換装置１５０により実行される変換処理の流れの例を、図１１のフローチャートを参照して説明する。
【０１４７】
逆変換処理が開始されると、制御部１５１（フリップフラグ設定部１６１、ベース変換行列選択部１６２、および符号反転フラグ設定部１６３）は、ステップＳ１５１において、変換タイプtrTypeIdxや、サイズ（log2TBWidth, log2TBHeight）に基づいて、ベース変換行列選択情報、フリップフラグ（flipFlag）、および符号反転フラグ（signChangeFlag）を上述のように設定する。
【０１４８】
ステップＳ１５２において、フリップ部１５２は、ステップＳ１５１において設定されたフリップフラグに基づいて、フリップ操作（F）を行うか否かを判定する（FlipFlag == True ?）。フリップフラグの値が真（True）であり、フリップ操作（F）を行うと判定された場合、処理はステップＳ１５３に進む。
【０１４９】
ステップＳ１５３において、フリップ部１５２は、１次元信号列である入力係数データXinに対してフリップ操作（F）を行い、１次元信号列である係数データX'を生成する。このフリップ操作（F）は、例えば、以下の式（２１）のように表すことができる。
【０１５０】
【数１５】
2022002352.tif 000017
【０１５１】
ステップＳ１５３の処理が終了すると処理はステップＳ１５４に進む。また、ステップＳ１５２において、フリップフラグの値が偽（False）であり、フリップ操作（F）を行わないと判定された場合、ステップＳ１５３の処理はスキップされ、入力係数データXinがそのまま係数データX'とされ、処理はステップＳ１５４に進む。
【０１５２】
ステップＳ１５４において、行列演算部１５３は、選択されたベース変換行列Tbase、すなわち、ステップＳ１５１において設定されたベース変換行列選択情報により指定されるベース変換行列Tbaseをベース変換行列LUT１７０から取得し、その転置行列を用いて、１次元信号列である係数データX'に対する行列演算（逆１次元変換）を行い、１次元信号列である係数データX''を生成する。この行列演算は、例えば、以下の式（２２）のように表すことができる。
【０１５３】
【数１６】
2022002352.tif 000018
【０１５４】
ステップＳ１５５において、符号反転部１５４は、ステップＳ１５１において設定された符号反転フラグに基づいて、符号反転操作（S）を行うか否かを判定する（signChangeFlag == True ?）。符号反転フラグの値が真（True）であり、符号反転操作（S）を行うと判定された場合、処理はステップＳ１５６に進む。
【０１５５】
ステップＳ１５６において、符号反転部１５４は、ステップＳ１５４において得られた１次元信号列である係数データX''に対して符号反転操作（S）を行い、１次元信号列である出力係数データXoutを生成する。この符号反転操作（S）は、例えば、以下の式（２３）のように表すことができる。
【０１５６】
【数１７】
2022002352.tif 000019
【０１５７】
符号反転部１５４は、生成された出力係数データXoutを逆変換装置１５０の外部に出力する。ステップＳ１５６の処理が終了すると変換処理が終了する。また、ステップＳ１５５において、符号反転フラグの値が偽（False）であり、符号反転操作（S）を行わないと判定された場合、ステップＳ１５６の処理はスキップされ、係数データX''がそのまま出力係数データXoutとされ、逆変換装置１５０の外部に出力される。出力係数データXoutが出力されると逆変換処理が終了する。
【０１５８】
つまり、この場合、プリ処理およびポスト処理の内容を確認する必要がなく、フリップ操作（F）および符号反転操作（S）を実行するか否かのみを制御すればよい。したがって、プリ処理やポスト処理の制御の複雑化を抑制することができる。したがって、処理の負荷の増大を抑制し、実装コストの増大を抑制することができる（処理の負荷を低減させ、実装コストを低減させることができる）。
【０１５９】
以上のように、逆変換装置１５０は、逆１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができ、逆１次元変換をより容易に行うことができる。
【０１６０】
＜変換タイプ＞
以上においては、逆変換装置１５０が、変換タイプDCT2の逆１次元変換を含むSTF操作により変換タイプDST2の逆１次元変換を実現する例と、変換タイプDCT4の逆１次元変換を含むSTF操作により変換タイプDST4の逆１次元変換を実現する例について説明したが、逆変換装置１５０に適用可能な変換タイプは、上述の例に限定されない。
【０１６１】
例えば、第１の変換タイプの変換行列を用いた逆１次元変換と、その第１の変換タイプとは異なる第２の変換タイプの変換行列を用いた逆１次元変換を含むSTF操作とが等価である、第１の変換タイプおよび第２の変換タイプを逆変換装置１５０に適用することができる。上述の例では、変換タイプDST2が第１の変換タイプであり、変換タイプDCT2が第２の変換タイプである。
【０１６２】
この逆１次元変換の場合も第１の実施の形態において説明した１次元変換の場合と同様に、第２の変換タイプの変換行列を用いた逆１次元変換を含むSTF操作により、第１の変換タイプの変換行列を用いた逆１次元変換を実現することができる関係を「STF操作により対になる関係」とも称する。また、このような関係の第１の変換タイプと第２の変換タイプのことを、「STF操作により対になる変換タイプ」とも称する。例えば、この逆１次元変換の場合、第１の変換タイプの、STF操作により対になる変換タイプは、第２の変換タイプである。したがって、第１の変換タイプの変換行列を用いた逆１次元変換は、STF操作により対になる変換タイプである第２の変換タイプの変換行列を用いた逆１次元変換を含むSTF操作により実現することができる。
【０１６３】
また、例えば、第１の変換タイプおよび第２の変換タイプとは異なる第３の変換タイプの変換行列を用いた逆１次元変換と、第１の変換タイプ乃至第３の変換タイプとは異なる第４の変換タイプの変換行列を用いた逆１次元変換を含むFTS操作とが等価であり、かつ、第４の変換タイプの変換行列が対称行列である、第３の変換タイプおよび第４の変換タイプも逆変換装置１５０に適用することができる。上述の例では、変換タイプDST4が第３の変換タイプであり、変換タイプDCT4が第４の変換タイプである。
【０１６４】
この逆１次元変換の場合も第１の実施の形態において説明した１次元変換の場合と同様に、第４の変換タイプの変換行列を用いた逆１次元変換を含むFTS操作により、第３の変換タイプの変換行列を用いた逆１次元変換を実現することができる関係を「FTS操作により対になる関係」とも称する。また、このような関係の第３の変換タイプと第４の変換タイプのことを、「FTS操作により対になる変換タイプ」とも称する。例えば、この逆１次元変換の場合、第３の変換タイプの、FTS操作により対になる変換タイプは、第４の変換タイプである。したがって、第３の変換タイプの変換行列を用いた逆１次元変換は、FTS操作により対になる変換タイプである第４の変換タイプの、対称行列である変換行列を用いた逆１次元変換を含むFTS操作により実現することができる。
【０１６５】
付言するに、上述した例のように、変換タイプDST4の変換行列を用いた逆１次元変換は、変換タイプDCT4の変換行列を用いた逆１次元変換を含むSTF操作により実現することができる。つまり、第３の変換タイプの変換行列を用いた逆１次元変換は、第４の変換タイプの変換行列を用いた１次元変換を含むSTF操作により実現することができる。すなわち、第４の変換タイプは、第３の変換タイプの、「FTS操作により対になる変換タイプ」および「STF操作により対になる変換タイプ」である。
【０１６６】
以上のように逆変換装置１５０は、画像に関する係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行うフリップ部と、
そのフリップ部によりフリップ操作された１次元信号列に対して、
第１の変換タイプの逆１次元変換を実現する場合、STF操作により第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの逆１次元変換を実現する場合、FTS操作により第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
そのベース変換行列の転置行列を用いて行列演算を行う行列演算部と、
その行列演算部により行列演算が行われた１次元信号列に対して、１次元信号列の奇数番目の信号の符号を反転する符号反転操作（S）を行う符号反転部と
を備えていればよい。
【０１６７】
換言するに、
画像に関する係数データの１次元信号列に対して、各係数の順序を逆順に並び替えるフリップ操作を行い、
そのフリップ操作された１次元信号列に対して、
第１の変換タイプの逆１次元変換を実現する場合、STF操作により第１の変換タイプの逆１次元変換を実現する第２の変換タイプの変換行列をベース変換行列とし、
第３の変換タイプの逆１次元変換を実現する場合、FTS操作により第３の変換タイプの逆１次元変換を実現する第４の変換タイプの、かつ、対称行列である変換行列をベース変換行列とし、
そのベース変換行列の転置行列を用いて行列演算を行い、
その行列演算が行われた１次元信号列に対して、１次元信号列の奇数番目の信号の符号を反転する符号反転操作（S）を行えばよい。
【０１６８】
このようにすることにより、逆変換装置１５０は、逆１次元変換をより容易に行うことができる。
【０１６９】
なお、逆１次元変換の場合も、「STF操作により対になる変換タイプ」および「FTS操作により対になる変換タイプ」を互いに区別しないで説明する場合、「対になる変換タイプ」とも称する。
【０１７０】
なお、第２の変換タイプまたは第４の変換タイプの逆１次元変換を実現する場合、逆変換装置１５０は、フリップ操作（F）および符号反転操作（S）をスキップし、係数データの１次元信号列に対して、第２の変換タイプまたは第４の変換タイプの変換行列をベース変換行列として行列演算を行うようにすればよい。このようにすることにより、逆変換装置１５０は、第２の変換タイプまたは第４の変換タイプの逆１次元変換も容易に実現することができる。
【０１７１】
また、逆変換装置１５０は、指定された逆１次元変換の変換タイプに基づいて、フリップ操作を行うか否かを示すフリップフラグを設定するフリップフラグ設定部を備え、フリップ部が、そのフリップフラグ設定部により設定されたフリップフラグに基づいて、フリップ操作を行うかスキップする（いずれかを選択、実行する）ようにしてもよい。
【０１７２】
また、逆変換装置１５０は、指定された逆１次元変換の変換タイプに基づいて、符号反転操作（S）を行うか否かを示す符号反転フラグを設定する符号反転フラグ設定部を備え、符号反転部が、その符号反転フラグ設定部により設定された符号反転フラグに基づいて、符号反転操作（S）を行うかスキップする（いずれかを選択し、実行する）ようにしてもよい。
【０１７３】
このようにすることにより、逆変換装置１５０は、逆１次元変換の変換タイプの指定に基づいて、フリップ操作（F）および符号反転操作（S）を実行するか、スキップするかを容易に制御することができる。したがって、逆変換装置１５０は、第１の変換タイプ乃至第４の変換タイプのそれぞれの逆１次元変換を、より容易に実現することができる。
【０１７４】
また、逆変換装置１５０は、指定された逆１次元変換の変換タイプに基づいて、第２の変換タイプの変換行列と第４の変換タイプの変換行列とのいずれをベース変換行列とするかを選択するベース変換行列選択部を備え、そのベース変換行列選択部により選択されたベース変換行列を用いて、行列演算を行うようにしてもよい。このようにすることにより、逆変換装置１５０は、逆１次元変換の変換タイプの指定に基づいて、使用するベース変換行列を容易に選択することができる。したがって、逆変換装置１５０は、第１の変換タイプ乃至第４の変換タイプのそれぞれの逆１次元変換を、より容易に実現することができる。
【０１７５】
＜６．第３の実施の形態＞
＜ベース変換行列の導出＞
第１の実施の形態および第２の実施の形態においては、ベース変換行列LUTに登録されている変換タイプDCT2の変換行列と、変換タイプDCT4の変換行列とのいずれかが選択されて行列演算に用いられるように説明したが、これに限らず、ベース変換行列を導出するようにしてもよい。
【０１７６】
例えば、変換タイプDCT2の変換行列および変換タイプDCT4の変換行列は、それぞれ、それらよりも大きなサイズの変換タイプDCT2の変換行列から、所定の方法で行列要素をサンプリングする（抽出する）ことにより、導出することができる。したがって、この大きなサイズの変換タイプDCT2の変換行列を予め記憶しておけば、その変換行列から、行列演算に用いるベース変換行列（変換タイプDCT2の変換行列または変換タイプDCT4の変換行列）を導出することができる。
【０１７７】
例えば、変換ブロックの最大サイズ（例えば６４）をmaxTbSとし、AMTが適用可能な変換ブロックの最大サイズ（例えば３２）をmaxTbAMTとし、１次元変換（1D変換とも称する）のサイズnTbSがnTbS<=maxTbAMT<maxTbSであるとする。この場合、導出するベース変換行列のサイズは(nTbS)×(nTbS)であり、(maxTbS)×(maxTbS)の変換タイプDCT2の変換行列を予め記憶する（用意する）ようにすればよい。
【０１７８】
このように用意した(maxTbS)×(maxTbS)の変換タイプDCT2の変換行列（導出元変換行列maxTbS-pt DCT2）を、所定のサンプリングパラメータに基づいてサンプリングすることにより、行列演算に用いるベース変換行列（(nTbS)×(nTbS)の変換タイプDCT2または変換タイプDCT4の変換行列）を部分行列として導出することができる。
【０１７９】
＜サンプリングパラメータ＞
ここでサンプリングパラメータについて説明する。サンプリングパラメータは、どのようなものであってもよい。例えば、サンプリングする行間隔を示すサンプリング間隔stepsizeと、サンプリングのオフセット（行位置）を示す行オフセットoffsetColと、サンプリングのオフセット（列位置）を示す列オフセットoffsetRowとを含むようにしてもよい。
【０１８０】
このサンプリング間隔stepsizeは、何行おきにサンプリングするかを示すパラメータである。また、行オフセットoffsetColは、サンプリングを開始する最初の行の位置（何行目にするか）を表すパラメータである。また、列オフセットoffsetRowは、サンプリングを開始する最初の列の位置（何列目にするか）を表すパラメータである。なお、本明細書において、変換行列の行番号および列番号は、「０」（つまり、０行、０列）から開始される。
【０１８１】
＜変換タイプ毎の導出例＞
サンプリングの方法（すなわち、サンプリングパラメータの値）は、図１２に示される表のように、導出する変換行列の変換タイプによって決まる。例えば、図１２に示される表の下から２番目の行のように、用意した導出元変換行列maxTbS-pt DCT2から、変換タイプtrTypeがDCT2のベース変換行列nTbS-pt DCT2を導出する場合、サンプリング間隔stepsizeは「1 << (Log2(maxTbS)-Log2(nTbS))」に、行オフセットoffsetColは「０」に、列オフセットoffsetRowは「０（低次）」に、それぞれ設定すればよい。このようにすることにより、ベース変換行列maxTbS-pt DCT2から、変換行列nTbS-pt DCT2を導出することができる。
【０１８２】
また、例えば、図１２に示される表の下から１番目の行のように、用意した導出元変換行列maxTbS-pt DCT2から、変換タイプtrTypeがDCT4のベース変換行列nTbS-pt DCT4を導出する場合、サンプリング間隔stepsizeは「1 << (Log2(maxTbS)-Log2(nTbS))」に、行オフセットoffsetColは「stepsize >> 1（つまり、stepsizeの２分の１）」に、列オフセットoffsetRowは「０（低次）」に、それぞれ設定すればよい。このようにすることにより、ベース変換行列maxTbS-pt DCT2から、変換行列nTbS-pt DCT4を導出することができる。
【０１８３】
＜各導出方法の詳細＞
＜変換タイプDCT2の場合＞
次に、各変換タイプの変換行列の導出方法について、より具体的に説明する。まず変換タイプtrTypeがDCT2のベース変換行列nTbS-pt DCT2の導出方法について説明する。図１３のＡに示されるように、用意した導出元変換行列maxTbS-pt DCT2のサイズを１６×１６とする。
【０１８４】
この場合、図１３のＡに示される導出元変換行列maxTbS-pt DCT2のグレーの部分の行列要素をサンプリングすることにより、図１３のＢに示されるような変換タイプDCT2、サイズ８×８の変換行列（8-pt DCT2）が得られる。また、図１３のＡに示される導出元変換行列maxTbS-pt DCT2の太線枠で囲まれた行列要素をサンプリングすることにより、図１３のＣに示されるような変換タイプDCT2、サイズ４×４の変換行列（4-pt DCT2）が得られる。
【０１８５】
このように、DCT2の変換行列の導出方法の場合、サンプリング間隔stepsizeは、８×８の場合２行おきとなり（２行毎に１行がサンプリングされる）、４×４の場合４行おきとなる（４行毎に１行がサンプリングされる）。つまり、サンプリング間隔stepsizeは、変換ブロックの最大サイズmaxTbSの２を底とする対数値と、導出対象の変換行列のサイズnTbSの２を底とする対数値との差分でべき乗した値である。なお、行オフセットoffsetColと列オフセットoffsetRowは、どちらの場合も「０」である。
【０１８６】
つまり、図１３のＤの式(X1)により表されるような導出処理により、変換行列nTbS-pt DCT2を導出することができる。以下にもこの式(X1)を示す。
【０１８７】
transMatrixDCT2,nTbS[j][i]
= transMatrixDCT2,maxTbS[j * stepsize + offsetCol][i + offsetRow]
= transMatrixDCT2,maxTbS[j * stepsize][i]                         ・・・(X1)
ただし、
stepsize = 1 << (log2(maxTbS) - log2(nTbS))
offsetCol = 0
offsetRow = 0
【０１８８】
すなわち、(nTbS)x(nTbS)のDCT2変換行列の第j行第i列の要素は、(maxTbS)x(maxTbS)のDCT2変換行列の第(j * stepsize)行第i列の要素である。換言するに、(maxTbS)x(maxTbS)のDCT2変換行列を、サンプリング間隔stepsize = (1 << (log2(maxTbS) - log2(nTbS)))、行オフセットoffsetCol = 0、列オフセットoffsetRow = 0でサンプリングして得られる部分行列は、(nTbS)x(nTbS)のDCT2変換行列である。
【０１８９】
このように導出処理を行うことにより、ベース変換行列maxTbS-pt DCT2から、変換行列nTbS-pt DCT2を導出することができる。
【０１９０】
＜変換タイプDCT4の場合＞
次に、変換タイプtrTypeがDCT4のベース変換行列nTbS-pt DCT4の導出方法について説明する。図１４のＡに示されるように、用意した導出元変換行列maxTbS-pt DCT2のサイズを１６×１６とする。
【０１９１】
この場合、図１４のＡに示される導出元変換行列maxTbS-pt DCT2のグレーの部分の行列要素をサンプリングすることにより、図１４のＢに示されるような変換タイプDCT4、サイズ８×８の変換行列（8-pt DCT4）が得られる。また、図１４のＡに示される導出元変換行列maxTbS-pt DCT2の太線枠で囲まれた行列要素をサンプリングすることにより、図１４のＣに示されるような変換タイプDCT4、サイズ４×４の変換行列（4-pt DCT4）が得られる。
【０１９２】
このように、DCT4の変換行列の導出方法の場合、サンプリング間隔stepsizeは、８×８の場合２行おきとなり（２行毎に１行がサンプリングされる）、４×４の場合４行おきとなる（４行毎に１行がサンプリングされる）。つまり、サンプリング間隔stepsizeは、変換ブロックの最大サイズmaxTbSの２を底とする対数値と、導出対象の変換行列のサイズnTbSの２を底とする対数値との差分でべき乗した値である。また、行オフセットoffsetColは、８×８の場合「１」（すなわち１行）となり、４×４の場合「２」（すなわち２行）となる。つまり、図中垂直方向については、８×８の場合２行目（行番号「１」の行）からサンプリングが開始され、４×４の場合３行目（行番号「２」の行）からサンプリングが開始される。つまり、行オフセットoffsetColは、サンプリング間隔stepsizeの２分の１となる。なお、列オフセットoffsetRowは、どちらの場合も「０」である。
【０１９３】
つまり、図１４のＤの式(X2)で表されるような導出処理により、変換行列nTbS-pt DCT4を導出することができる。以下にもこの式(X2)を示す。
【０１９４】
transMatrixDCT4,nTbS[j][i]
= transMatrixDCT2,maxTbS[j * stepsize + offsetCol][i + offsetRow]
= transMatrixDCT2,maxTbS[j * stepsize + offsetCol][i]             ・・・(X2)
ただし、
stepsize = 1 << (log2(maxTbS) - log2(nTbS))
offsetCol = stepsize >> 1
offsetRow = 0
【０１９５】
すなわち、(nTbS)x(nTbS)のDCT4変換行列の第j行第i列の要素は、(maxTbS)x(maxTbS)のDCT2変換行列の第(j * stepsize + offsetCol)行第i列の要素である。換言するに、(maxTbS)x(maxTbS)のDCT2変換行列を、サンプリング間隔stepsize = (1 << (log2(maxTbS) - log2(nTbS)))、行オフセットoffsetCol = (stepsize >> 1)、列オフセットoffsetRow = 0でサンプリングして得られる部分行列は、(nTbS)x(nTbS)のDCT4変換行列である。
【０１９６】
このように導出処理を行うことにより、ベース変換行列maxTbS-pt DCT2から、変換行列nTbS-pt DCT4を導出することができる。
【０１９７】
＜変換装置＞
次に、このようにベース変換行列を導出する場合の変換装置１００について説明する。図１５は、この場合の変換装置１００の主な構成例を示すブロック図である。図１５に示されるように、この場合も変換装置１００は、第１の実施の形態の場合（図６）と基本的に同様の構成を有する。ただし、この場合、行列演算部１０３は、ベース変換行列導出部２２０を有する。
【０１９８】
ベース変換行列導出部２２０は、ベース変換行列の導出に関する処理を行う。例えば、ベース変換行列導出部２２０は、制御部１０１から供給されるベース変換行列選択情報により指定される変換行列（行列演算に用いられるベース変換行列）を、予め用意された変換行列（導出元変換行列）をサンプリングすることにより導出する。行列演算部１０３は、ベース変換行列導出部２２０により導出されたベース変換行列を用いて、例えば上述した式（１９）のような、係数データX'に対する行列演算を行う。
【０１９９】
つまり、ベース変換行列導出部２２０は、指定された逆１次元変換の変換タイプに基づいて、ベース変換行列を導出する。行列演算部１０３は、そのベース変換行列導出部２２０により導出されたベース変換行列を用いて、行列演算を行う。
【０２００】
例えば、ベース変換行列導出部２２０は、導出するベース変換行列以上のサイズの第２の変換タイプ（例えばDCT2）の導出元変換行列を用いて、そのベース変換行列を導出する。
【０２０１】
例えば、ベース変換行列導出部２２０は、その導出するベース変換行列以上のサイズの第２の変換タイプ（例えばDCT2）の導出元変換行列をサンプリングすることにより、第２の変換タイプ（例えばDCT2）または第４の変換タイプ（例えばDCT4）のベース変換行列を導出する。
【０２０２】
なお、ベース変換行列導出部２２０は、任意の構成を有する。例えば、ベース変換行列導出部２２０が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、ベース変換行列導出部２２０が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、ベース変換行列導出部２２０が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０２０３】
＜ベース変換行列導出部＞
図１６は、図１５のベース変換行列導出部２２０の主な構成例を示すブロック図である。図１６に示されるように、ベース変換行列導出部２２０は、サンプリング部２３１および導出元変換行列LUT２３２を有する。
【０２０４】
サンプリング部２３１は、サンプリングに関する処理を行う。例えば、サンプリング部２３１は、ベース変換行列選択情報に応じてサンプリングパラメータを設定し、そのサンプリングパラメータに応じた方法で、導出元変換行列maxTbS-pt DCT2から変換タイプtrTypeサイズ（nTbS）×（nTbS）のベース変換行列Tbaseを導出し、それを行列演算部１０３に供給する。また、サンプリング部２３１は、サンプリングパラメータ導出部２４１および部分行列抽出部２４２を有する。
【０２０５】
サンプリングパラメータ導出部２４１は、サンプリングパラメータの導出に関する処理を行う。例えば、サンプリングパラメータ導出部２４１は、ベース変換行列選択情報を取得する。ベース変換行列選択情報は、行列演算に使用するベース変換行列を指定する情報である。つまり、ベース変換行列選択情報により、変換タイプtrType、変換ブロックの最大サイズmaxTbS、導出対象のベース変換行列のサイズnTbS等が指定される。サンプリングパラメータ導出部２４１は、このようなベース変換行列選択情報により指定されるこれらの情報に基づいて、サンプリング間隔stepsize、行オフセットoffsetCol、列オフセットoffsetRow等のサンプリングパラメータを設定する。例えば、サンプリングパラメータ導出部２４１は、図１２の表を参照して説明したように、サンプリングパラメータを設定する。サンプリングパラメータ導出部２４１は、導出したサンプリングパラメータを部分行列抽出部２４２に供給する。
【０２０６】
部分行列抽出部２４２は、部分行列の抽出に関する処理を行う。例えば、部分行列抽出部２４２は、サンプリングパラメータ導出部２４１により導出されたサンプリングパラメータを取得する。また、部分行列抽出部２４２は、導出元変換行列LUT２３２に登録されている導出元変換行列（maxTbS-pt DCT2）２５１を取得する。そして、部分行列抽出部２４２は、そのサンプリングパラメータに応じた方法で、導出元変換行列（maxTbS-pt DCT2）２５１をサンプリングする。部分行列抽出部２４２は、このサンプリングにより、ベース変換行列選択情報により指定される変換タイプtrType、サイズ（nTbS）×（nTbS）の部分行列を得る。部分行列抽出部２４２は、その部分行列を、ベース変換行列Tbaseとして行列演算部１０３に供給する。
【０２０７】
導出元変換行列LUT２３２には、変換タイプDCT2、サイズ（maxTbS）×（maxTbS）の導出元変換行列（maxTbS-pt DCT2）２５１が登録されている（記憶されている）。導出元変換行列LUT２３２は、部分行列抽出部２４２の要求に応じて、その導出元変換行列（maxTbS-pt DCT2）２５１を部分行列抽出部２４２に供給する。
【０２０８】
サンプリング部２３１は、任意の構成を有する。例えば、サンプリング部２３１が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、サンプリング部２３１が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、サンプリング部２３１が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０２０９】
導出元変換行列LUT２３２は、RAM等により形成される記憶領域を有し、そこに導出元変換行列（maxTbS-pt DCT2）２５１を記憶する。
【０２１０】
サンプリングパラメータ導出部２４１は、任意の構成を有する。例えば、サンプリングパラメータ導出部２４１が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、サンプリングパラメータ導出部２４１が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、サンプリングパラメータ導出部２４１が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０２１１】
部分行列抽出部２４２は、任意の構成を有する。例えば、部分行列抽出部２４２が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、部分行列抽出部２４２が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、部分行列抽出部２４２が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。
【０２１２】
このような構成とすることにより、ベース変換行列導出部２２０は、ベース変換行列選択情報により指定されるベース変換行列を導出することができる。つまり、導出元変換行列LUT２３２に１つの導出元変換行列（maxTbS-pt DCT2）２５１を記憶すればよいので、このLUTのサイズの増大を抑制する（LUTのサイズを削減する）ことができる。また、(maxTbS)×(maxTbS)の変換行列の行列演算と、変換タイプtrTypeの(nTbS)×(nTbS)の変換行列の行列演算とを共有することができる。つまり、行列演算部１０３は、各変換タイプtrTypeのベース変換行列を用いた行列演算を、同一の演算回路を用いて行うことができる。したがって、回路規模の増大を抑制する（回路規模を削減する）ことができる。
【０２１３】
＜変換処理の流れ＞
次に、この場合の変換処理の流れの例を、図１７のフローチャートを参照して説明する。
【０２１４】
変換処理が開始されると、制御部１０１（符号反転フラグ設定部１１１、ベース変換行列選択部１１２、およびフリップフラグ設定部１１３）は、ステップＳ２０１において、変換装置１００の外部から供給される変換タイプtrTypeIdxや、サイズ（log2TBWidth, log2TBHeight）に基づいて、ベース変換行列選択情報、符号反転フラグ（signChangeFlag）、およびフリップフラグ（flipFlag）を上述のように設定する。
【０２１５】
ステップＳ２０２において、符号反転部１０２は、ステップＳ２０１において設定された符号反転フラグに基づいて、符号反転操作を行うか否かを判定する（signChangeFlag == True ?）。符号反転フラグの値が真（True）であり、符号反転操作を行うと判定された場合、処理はステップＳ２０３に進む。
【０２１６】
ステップＳ２０３において、符号反転部１０２は、例えば上述した式（１８）のように、１次元信号列である入力係数データXinに対して符号反転操作（S）を行い、１次元信号列である係数データX'を生成する。
【０２１７】
ステップＳ２０３の処理が終了すると処理はステップＳ２０４に進む。また、ステップＳ２０２において、符号反転フラグの値が偽（False）であり、符号反転操作を行わないと判定された場合、ステップＳ２０３の処理はスキップされ、入力係数データXinがそのまま係数データX'とされ、処理はステップＳ２０４に進む。
【０２１８】
ステップＳ２０４において、ベース変換行列導出部２２０は、ベース変換行列導出処理を実行し、ステップＳ２０１において設定されたベース変換行列選択情報に基づいて、ベース変換行列Tbaseを導出する。
【０２１９】
ステップＳ２０５において、行列演算部１０３は、例えば上述した式（１９）のように、ステップＳ２０４において導出されたベース変換行列Tbaseを用いて１次元信号列である係数データX'に対する行列演算（１次元変換）を行い、１次元信号列である係数データX''を生成する。
【０２２０】
ステップＳ２０６において、フリップ部１０４は、ステップＳ２０１において設定されたフリップフラグに基づいて、フリップ操作を行うか否かを判定する（FlipFlag == True ?）。フリップフラグの値が真（True）であり、フリップ操作を行うと判定された場合、処理はステップＳ２０７に進む。
【０２２１】
ステップＳ２０７において、フリップ部１０４は、例えば上述した式（２０）のように、ステップＳ２０５において得られた１次元信号列である係数データX''に対してフリップ操作（F）を行い、１次元信号列である出力係数データXoutを生成する。
【０２２２】
フリップ部１０４は、生成した出力係数データXoutを変換装置１００の外部に出力する。ステップＳ２０７の処理が終了すると変換処理が終了する。また、ステップＳ２０６において、フリップフラグの値が偽（False）であり、フリップ操作を行わないと判定された場合、ステップＳ２０７の処理はスキップされ、係数データX''がそのまま出力係数データXoutとされ、変換装置１００の外部に出力される。出力係数データXoutが出力されると変換処理が終了する。
【０２２３】
＜ベース変換行列導出処理の流れ＞
次に、図１７のステップＳ２０４において実行されるベース変換行列導出処理の流れの例を、図１８のフローチャートを参照して説明する。
【０２２４】
ベース変換行列導出処理が開始されると、ベース変換行列導出部２２０のサンプリングパラメータ導出部２４１は、ステップＳ２２１において、ベース変換行列選択情報により指定される変換タイプtrTypeとブロックサイズ（nTbS）とに対応するサンプリングパラメータを導出する。
【０２２５】
ステップＳ２２２において、部分行列抽出部２４２は、導出元変換行列LUT２３２から導出元変換行列（maxTbS-pt DCT2）２５１を読み出す。
【０２２６】
ステップＳ２２３において、部分行列抽出部２４２は、ステップＳ２２１において導出したサンプリングパラメータを用いて、ステップＳ２２２において読み出した導出元変換行列（maxTbS-pt DCT2）２５１から部分行列を抽出する。
【０２２７】
ステップＳ２２４において、部分行列抽出部２４２は、ステップＳ２２３において抽出した部分行列をベース変換行列として行列演算部１０３に供給する。
【０２２８】
ステップＳ２２４の処理が終了すると、ベース変換行列導出処理が終了し、処理は図１７に戻る。
【０２２９】
以上のように各処理を実行することにより、ベース変換行列選択情報により指定されるベース変換行列を導出することができる。つまり、導出元変換行列LUT２３２に１つの導出元変換行列（maxTbS-pt DCT2）２５１を記憶すればよいので、このLUTのサイズの増大を抑制する（LUTのサイズを削減する）ことができる。また、(maxTbS)×(maxTbS)の変換行列の行列演算と、変換タイプtrTypeの(nTbS)×(nTbS)の変換行列の行列演算とを共有することができる。つまり、行列演算部１０３は、各変換タイプtrTypeのベース変換行列を用いた行列演算を、同一の演算回路を用いて行うことができる。したがって、回路規模の増大を抑制する（回路規模を削減する）ことができる。
【０２３０】
＜７．第４の実施の形態＞
＜逆変換装置＞
第３の実施の形態において説明したベース変換行列の導出は、第２の実施の形態において説明した逆１次元変換にも同様に適用することができる。
【０２３１】
図１９は、この場合の逆変換装置１５０の主な構成例を示すブロック図である。図１５に示されるように、この場合も逆変換装置１５０は、第２の実施の形態の場合（図９）と基本的に同様の構成を有する。ただし、この場合、行列演算部１５３は、ベース変換行列導出部２７０を有する。
【０２３２】
このベース変換行列導出部２７０は、第３の実施の形態において説明したベース変換行列導出部２２０と同様の構成を有し、同様の処理を行う。したがって、図１６を参照して説明したベース変換行列導出部２２０の構成例は、このベース変換行列導出部２７０の説明にも適用することができる。
【０２３３】
つまり、ベース変換行列導出部２７０は、指定された逆１次元変換の変換タイプに基づいて、ベース変換行列を導出する。行列演算部１５３は、そのベース変換行列導出部２７０により導出されたベース変換行列を用いて、行列演算を行う。
【０２３４】
例えば、ベース変換行列導出部２７０は、導出するベース変換行列以上のサイズの第２の変換タイプ（例えばDCT2）の導出元変換行列を用いて、そのベース変換行列を導出する。
【０２３５】
例えば、ベース変換行列導出部２７０は、その導出するベース変換行列以上のサイズの第２の変換タイプ（例えばDCT2）の導出元変換行列をサンプリングすることにより、第２の変換タイプ（例えばDCT2）または第４の変換タイプ（例えばDCT4）のベース変換行列を導出する。
【０２３６】
このような構成とすることにより、ベース変換行列導出部２７０は、ベース変換行列選択情報により指定されるベース変換行列を導出することができる。つまり、導出元変換行列LUT２３２に１つの導出元変換行列（maxTbS-pt DCT2）２５１を記憶すればよいので、このLUTのサイズの増大を抑制する（LUTのサイズを削減する）ことができる。また、(maxTbS)×(maxTbS)の変換行列の行列演算と、変換タイプtrTypeの(nTbS)×(nTbS)の変換行列の行列演算とを共有することができる。つまり、行列演算部１５３は、各変換タイプtrTypeのベース変換行列を用いた行列演算を、同一の演算回路を用いて行うことができる。したがって、回路規模の増大を抑制する（回路規模を削減する）ことができる。
【０２３７】
＜逆変換処理の流れ＞
次に、この場合の逆変換処理の流れの例を、図２０のフローチャートを参照して説明する。
【０２３８】
逆変換処理が開始されると、制御部１５１（フリップフラグ設定部１６１、ベース変換行列選択部１６２、および符号反転フラグ設定部１６３）は、ステップＳ２５１において、変換タイプtrTypeIdxや、サイズ（log2TBWidth, log2TBHeight）に基づいて、ベース変換行列選択情報、フリップフラグ（flipFlag）、および符号反転フラグ（signChangeFlag）を上述のように設定する。
【０２３９】
ステップＳ２５２において、フリップ部１５２は、ステップＳ２５１において設定されたフリップフラグに基づいて、フリップ操作（F）を行うか否かを判定する（FlipFlag == True ?）。フリップフラグの値が真（True）であり、フリップ操作（F）を行うと判定された場合、処理はステップＳ２５３に進む。
【０２４０】
ステップＳ２５３において、フリップ部１５２は、例えば上述した式（２１）のように、１次元信号列である入力係数データXinに対してフリップ操作（F）を行い、１次元信号列である係数データX'を生成する。
【０２４１】
ステップＳ２５３の処理が終了すると処理はステップＳ２５４に進む。また、ステップＳ２５２において、フリップフラグの値が偽（False）であり、フリップ操作（F）を行わないと判定された場合、ステップＳ２５３の処理はスキップされ、入力係数データXinがそのまま係数データX'とされ、処理はステップＳ２５４に進む。
【０２４２】
ステップＳ２５４において、ベース変換行列導出部２７０は、ベース変換行列導出処理を実行し、ステップＳ２５１において設定されたベース変換行列選択情報に基づいて、ベース変換行列Tbaseを導出する。このベース変換行列導出処理は、図１８のフローチャートの場合と同様の流れで実行される。したがって、その説明を省略する。
【０２４３】
ステップＳ２５５において、行列演算部１５３は、例えば上述した式（２２）のように、ステップＳ２５４において導出したベース変換行列Tbase、すなわち、ステップＳ２５１において設定されたベース変換行列選択情報により指定されるベース変換行列Tbaseの転置行列を用いて、１次元信号列である係数データX'に対する行列演算（逆１次元変換）を行い、１次元信号列である係数データX''を生成する。
【０２４４】
ステップＳ２５６において、符号反転部１５４は、ステップＳ２５１において設定された符号反転フラグに基づいて、符号反転操作（S）を行うか否かを判定する（signChangeFlag == True ?）。符号反転フラグの値が真（True）であり、符号反転操作（S）を行うと判定された場合、処理はステップＳ２５７に進む。
【０２４５】
ステップＳ２５７において、符号反転部１５４は、例えば上述した式（２３）のように、ステップＳ２５５において得られた１次元信号列である係数データX''に対して符号反転操作（S）を行い、１次元信号列である出力係数データXoutを生成する。符号反転部１５４は、生成された出力係数データXoutを逆変換装置１５０の外部に出力する。ステップＳ２５７の処理が終了すると変換処理が終了する。
【０２４６】
また、ステップＳ２５６において、符号反転フラグの値が偽（False）であり、符号反転操作（S）を行わないと判定された場合、ステップＳ２５７の処理はスキップされ、係数データX''がそのまま出力係数データXoutとされ、逆変換装置１５０の外部に出力される。出力係数データXoutが出力されると逆変換処理が終了する。
【０２４７】
以上のように各処理を実行することにより、ベース変換行列選択情報により指定されるベース変換行列を導出することができる。つまり、導出元変換行列LUT２３２に１つの導出元変換行列（maxTbS-pt DCT2）２５１を記憶すればよいので、このLUTのサイズの増大を抑制する（LUTのサイズを削減する）ことができる。また、(maxTbS)×(maxTbS)の変換行列の行列演算と、変換タイプtrTypeの(nTbS)×(nTbS)の変換行列の行列演算とを共有することができる。つまり、行列演算部１５３は、各変換タイプtrTypeのベース変換行列を用いた行列演算を、同一の演算回路を用いて行うことができる。したがって、回路規模の増大を抑制する（回路規模を削減する）ことができる。
【０２４８】
＜８．第５の実施の形態＞
＜応用例＞
以上においては、変換タイプDST2およびDST4の（逆）１次元変換を、変換タイプDCT2およびDCT4の１次元変換を含むFTS操作またはSTF操作により実現する例について説明した。本技術はこれ以外の例にも適用することができる。
【０２４９】
例えば、変換タイプDCT2およびDCT4の（逆）１次元変換を、変換タイプDST2およびDST4の（逆）１次元変換を含むFTS操作またはSTF操作により実現するようにしてもよい。
【０２５０】
１次元変換に用いられる変換タイプDCT2の変換行列TDCT2は、変換タイプDST2の変換行列TDST2、フリップ行列F、および符号反転行列Sを用いて、以下の式（２４）のように表すことができる。
【０２５１】
【数１８】
2022002352.tif 000020
【０２５２】
同様に、１次元変換に用いられる変換タイプDCT4の変換行列TDCT4は、変換タイプDST4の変換行列TDST4、フリップ行列F、および符号反転行列Sを用いて、以下の式（２５）のように表すことができる。
【０２５３】
【数１９】
2022002352.tif 000021
【０２５４】
したがって、変換タイプDCT2およびDCT4の1次元変換は、変換タイプDST2およびDST4の１次元変換を含むSTF操作により実現することができる。例えば、第１の実施の形態において説明した変換装置１００（図６）において、符号反転部１０２とフリップ部１０４とを入れ替え、ベース変換行列LUT１２０が変換タイプDST2の変換行列と変換タイプDST4の変換行列を記憶し、行列演算部１０３が、それらの変換行列をベース変換行列として用いて行列演算を行うようにすればよい。また、例えば、第３の実施の形態において説明した変換装置１００（図１５）において、符号反転部１０２とフリップ部１０４とを入れ替え、ベース変換行列導出部２２０が変換タイプDST2のベース変換行列または変換タイプDST4のベース変換行列を導出し、行列演算部１０３が、その導出されたベース変換行列を用いて行列演算を行うようにすればよい。
【０２５５】
このようにすることにより、変換タイプDCT4の１次元変換と変換タイプDCT2の１次元変換とを選択的に行う場合に、直交変換処理の前に行われるプリ処理を（符号反転操作（S）に）統一し、直交変換処理の後に行われるポスト処理を（フリップ操作（F）に）統一することができる。
【０２５６】
また、逆１次元変換に用いられる変換タイプDCT2の変換行列の転置行列TDCT2tは、変換タイプDST2の変換行列の転置行列TDST2t、フリップ行列F、および符号反転行列Sを用いて、以下の式（２６）のように表すことができる。
【０２５７】
【数２０】
2022002352.tif 000022
【０２５８】
同様に、逆1次元変換に用いられる変換タイプDCT4の変換行列TDCT4は、変換タイプDST4の変換行列の転置行列TDST4t、フリップ行列F、および符号反転行列Sを用いて、以下の式（２７）のように表すことができる。
【０２５９】
【数２１】
2022002352.tif 000023
【０２６０】
したがって、変換タイプDCT2およびDCT4の逆１次元変換は、変換タイプDST2およびDST4の逆１次元変換を含むFTS操作により実現することができる。例えば、第２の実施の形態において説明した逆変換装置１５０（図９）において、フリップ部１５２と符号反転部１５４とを入れ替え、ベース変換行列LUT１７０が変換タイプDST2の変換行列と変換タイプDST4の変換行列を記憶し、行列演算部１５３が、それらの変換行列をベース変換行列とし、そのベース変換行列の転置行列を用いて行列演算を行うようにすればよい。また、例えば、第４の実施の形態において説明した変換装置１００（図１９）において、フリップ部１５２と符号反転部１５４とを入れ替え、ベース変換行列導出部２７０が変換タイプDST2のベース変換行列または変換タイプDST4のベース変換行列を導出し、行列演算部１０３が、その導出されたベース変換行列を用いて行列演算を行うようにすればよい。
【０２６１】
このようにすることにより、変換タイプDCT4の逆１次元変換と変換タイプDCT2の逆１次元変換とを選択的に行う場合に、逆直交変換処理の前に行われるプリ処理を（フリップ操作（F）に）統一し、逆直交変換処理の後に行われるポスト処理を（符号反転操作（S）に）統一することができる。
【０２６２】
このようにすることにより、プリ処理およびポスト処理における処理内容の選択（符号反転操作（S）を行うかフリップ操作（F）を行うか）を省略することができるので、１次元変換または逆１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができ、１次元変換または逆１次元変換をより容易に行うことができる。つまり、この場合も、第１の実施の形態乃至第４の実施の形態の場合と同様に、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【０２６３】
＜９．第６の実施の形態＞
＜画像符号化装置＞
以上に説明した本技術は、任意の装置、デバイス、システム等に適用することができる。例えば、画像データを符号化する画像符号化装置に、上述した本技術を適用することができる。
【０２６４】
図２１は、本技術を適用した画像処理装置の一態様である画像符号化装置の構成の一例を示すブロック図である。図２１に示される画像符号化装置３００は、動画像の画像データを符号化する装置である。例えば、画像符号化装置３００は、非特許文献１、非特許文献５、または非特許文献６に記載されている技術を実装し、それらの文献のいずれかに記載された規格に準拠した方法で動画像の画像データを符号化する。
【０２６５】
なお、図２１においては、処理部やデータの流れ等の主なものを示しており、図２１に示されるものが全てとは限らない。つまり、画像符号化装置３００において、図２１においてブロックとして示されていない処理部が存在したり、図２１において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、画像符号化装置３００内の処理部等を説明する他の図においても同様である。
【０２６６】
図２１に示されるように画像符号化装置３００は、制御部３０１、並べ替えバッファ３１１、演算部３１２、直交変換部３１３、量子化部３１４、符号化部３１５、蓄積バッファ３１６、逆量子化部３１７、逆直交変換部３１８、演算部３１９、インループフィルタ部３２０、フレームメモリ３２１、予測部３２２、およびレート制御部３２３を有する。
【０２６７】
＜制御部＞
制御部３０１は、外部、または予め指定された処理単位のブロックサイズに基づいて、並べ替えバッファ３１１により保持されている動画像データを処理単位のブロック（CU,PU, 変換ブロックなど）へ分割する。また、制御部３０１は、各ブロックへ供給する符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど）を、例えば、RDO(Rate-Distortion Optimization)に基づいて、決定する。
【０２６８】
これらの符号化パラメータの詳細については後述する。制御部３０１は、以上のような符号化パラメータを決定すると、それを各ブロックへ供給する。具体的には、以下の通りである。
【０２６９】
ヘッダ情報Hinfoは、各ブロックに供給される。予測モード情報Pinfoは、符号化部３１５と予測部３２２とに供給される。変換情報Tinfoは、符号化部３１５、直交変換部３１３、量子化部３１４、逆量子化部３１７、および逆直交変換部３１８に供給される。フィルタ情報Finfoは、インループフィルタ部３２０に供給される。
【０２７０】
＜並べ替えバッファ＞
画像符号化装置３００には、動画像データの各フィールド（入力画像）がその再生順（表示順）に入力される。並べ替えバッファ３１１は、各入力画像をその再生順（表示順）に取得し、保持（記憶）する。並べ替えバッファ３１１は、制御部３０１の制御に基づいて、その入力画像を符号化順（復号順）に並べ替えたり、処理単位のブロックに分割したりする。並べ替えバッファ３１１は、処理後の各入力画像を演算部３１２に供給する。また、並べ替えバッファ３１１は、その各入力画像（元画像）を、予測部３２２やインループフィルタ部３２０にも供給する。
【０２７１】
＜演算部＞
演算部３１２は、処理単位のブロックに対応する画像I、および予測部３２２より供給される予測画像Pを入力とし、画像Iから予測画像Pを以下の式（２８）に示されるように減算して、予測残差Dを導出し、それを直交変換部３１３に供給する。
【０２７２】
【数２２】
2022002352.tif 000024
【０２７３】
＜直交変換部＞
直交変換部３１３は、演算部３１２から供給される予測残差Dと、制御部３０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、予測残差Dに対して直交変換を行い、変換係数Coeffを導出する。直交変換部３１３は、その得られた変換係数Coeffを量子化部３１４に供給する。
【０２７４】
＜量子化部＞
量子化部３１４は、直交変換部３１３から供給される変換係数Coeffと、制御部３０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、変換係数Coeffをスケーリング（量子化）する。なお、この量子化のレートは、レート制御部３２３により制御される。量子化部３１４は、このような量子化により得られた量子化後の変換係数、すなわち量子化変換係数レベルlevelを、符号化部３１５および逆量子化部３１７に供給する。
【０２７５】
＜符号化部＞
符号化部３１５は、量子化部３１４から供給された量子化変換係数レベルlevelと、制御部３０１から供給される各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど）と、インループフィルタ部３２０から供給されるフィルタ係数等のフィルタに関する情報と、予測部３２２から供給される最適な予測モードに関する情報とを入力とする。符号化部３１５は、量子化変換係数レベルlevelを可変長符号化（例えば、算術符号化）し、ビット列（符号化データ）を生成する。
【０２７６】
また、符号化部３１５は、その量子化変換係数レベルlevelから残差情報Rinfoを導出し、残差情報Rinfoを符号化し、ビット列を生成する。
【０２７７】
さらに、符号化部３１５は、インループフィルタ部３２０から供給されるフィルタに関する情報をフィルタ情報Finfoに含め、予測部３２２から供給される最適な予測モードに関する情報を予測モード情報Pinfoに含める。そして、符号化部３１５は、上述した各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど）を符号化し、ビット列を生成する。
【０２７８】
また、符号化部３１５は、以上のように生成された各種情報のビット列を多重化し、符号化データを生成する。符号化部３１５は、その符号化データを蓄積バッファ３１６に供給する。
【０２７９】
＜蓄積バッファ＞
蓄積バッファ３１６は、符号化部３１５において得られた符号化データを、一時的に保持する。蓄積バッファ３１６は、所定のタイミングにおいて、保持している符号化データを、例えばビットストリーム等として画像符号化装置３００の外部に出力する。例えば、この符号化データは、任意の記録媒体、任意の伝送媒体、任意の情報処理装置等を介して復号側に伝送される。すなわち、蓄積バッファ３１６は、符号化データ（ビットストリーム）を伝送する伝送部でもある。
【０２８０】
＜逆量子化部＞
逆量子化部３１７は、逆量子化に関する処理を行う。例えば、逆量子化部３１７は、量子化部３１４から供給される量子化変換係数レベルlevelと、制御部３０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、量子化変換係数レベルlevelの値をスケーリング（逆量子化）する。なお、この逆量子化は、量子化部３１４において行われる量子化の逆処理である。逆量子化部３１７は、このような逆量子化により得られた変換係数Coeff_IQを、逆直交変換部３１８に供給する。
【０２８１】
＜逆直交変換部＞
逆直交変換部３１８は、逆直交変換に関する処理を行う。例えば、逆直交変換部３１８は、逆量子化部３１７から供給される変換係数Coeff_IQと、制御部１０１から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、変換係数Coeff_IQに対して逆直交変換を行い、予測残差D'を導出する。なお、この逆直交変換は、直交変換部３１３において行われる直交変換の逆処理である。逆直交変換部３１８は、このような逆直交変換により得られた予測残差D'を演算部３１９に供給する。なお、逆直交変換部３１８は、復号側の逆直交変換部（後述する）と同様であるので、逆直交変換部３１８については、復号側について行う説明（後述する）を適用することができる。
【０２８２】
＜演算部＞
演算部３１９は、逆直交変換部３１８から供給される予測残差D’と、予測部３２２から供給される予測画像Pとを入力とする。演算部３１９は、その予測残差D’と、その予測残差D’に対応する予測画像Pとを加算し、局所復号画像Rlocalを導出する。演算部３１９は、導出した局所復号画像Rlocalをインループフィルタ部３２０およびフレームメモリ３２１に供給する。
【０２８３】
＜インループフィルタ部＞
インループフィルタ部３２０は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部３２０は、演算部３１９から供給される局所復号画像Rlocalと、制御部３０１から供給されるフィルタ情報Finfoと、並べ替えバッファ３１１から供給される入力画像（元画像）とを入力とする。なお、インループフィルタ部３２０に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。例えば、必要に応じて、予測モード、動き情報、符号量目標値、量子化パラメータQP、ピクチャタイプ、ブロック（CU、CTU等）の情報等がインループフィルタ部３２０に入力されるようにしてもよい。
【０２８４】
インループフィルタ部３２０は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。インループフィルタ部３２０は、必要に応じて入力画像（元画像）や、その他の入力情報もそのフィルタ処理に用いる。
【０２８５】
例えば、インループフィルタ部３２０は、非特許文献１に記載のように、バイラテラルフィルタ、デブロッキングフィルタ（DBF（DeBlocking Filter））、適応オフセットフィルタ（SAO（Sample Adaptive Offset））、および適応ループフィルタ（ALF(Adaptive Loop Filter)）の４つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
【０２８６】
もちろん、インループフィルタ部３２０が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部３２０がウィーナーフィルタ等を適用するようにしてもよい。
【０２８７】
インループフィルタ部３２０は、フィルタ処理された局所復号画像Rlocalをフレームメモリ３２１に供給する。なお、例えばフィルタ係数等のフィルタに関する情報を復号側に伝送する場合、インループフィルタ部３２０は、そのフィルタに関する情報を符号化部３１５に供給する。
【０２８８】
＜フレームメモリ＞
フレームメモリ３２１は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ３２１は、演算部３１９から供給される局所復号画像Rlocalや、インループフィルタ部３２０から供給されるフィルタ処理された局所復号画像Rlocalを入力とし、それを保持（記憶）する。また、フレームメモリ３２１は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する（フレームメモリ３２１内のバッファへ格納する）。フレームメモリ３２１は、予測部３２２の要求に応じて、その復号画像R（またはその一部）を予測部３２２に供給する。
【０２８９】
＜予測部＞
予測部３２２は、予測画像の生成に関する処理を行う。例えば、予測部３２２は、制御部３０１から供給される予測モード情報Pinfoと、並べ替えバッファ３１１から供給される入力画像（元画像）と、フレームメモリ３２１から読み出す復号画像R（またはその一部）を入力とする。予測部３２２は、予測モード情報Pinfoや入力画像（元画像）を用い、インター予測やイントラ予測等の予測処理を行い、復号画像Rを参照画像として参照して予測を行い、その予測結果に基づいて動き補償処理を行い、予測画像Pを生成する。予測部３２２は、生成した予測画像Pを演算部３１２および演算部３１９に供給する。また、予測部３２２は、以上の処理により選択した予測モード、すなわち最適な予測モードに関する情報を、必要に応じて符号化部３１５に供給する。
【０２９０】
＜レート制御部＞
レート制御部３２３は、レート制御に関する処理を行う。例えば、レート制御部３２３は、蓄積バッファ３１６に蓄積された符号化データの符号量に基づいて、オーバフローあるいはアンダーフローが発生しないように、量子化部３１４の量子化動作のレートを制御する。
【０２９１】
＜直交変換部の詳細＞
図２２は、直交変換部３１３の主な構成例を示すブロック図である。図２２に示されるように、直交変換部３１３は、スイッチ３５１、プライマリ変換部３５２、およびセカンダリ変換部３５３を有する。
【０２９２】
スイッチ３５１は、予測残差Dおよびコンポーネント識別子compIDに対応する変換スキップフラグts_flag[compID]を入力とし、変換スキップフラグts_flag[compID]の値がNO_TS(=0)の場合（変換スキップを適用しない場合）、プライマリ変換部３５２へ予測残差Dを供給する。また、変換スキップフラグts_flag[compID]の値が2D_TS(=1)の場合（２次元変換スキップを適用することを示す場合）、プライマリ変換部３５２およびセカンダリ変換部３５３をスキップし、予測残差Dを変換係数Coeffとして直交変換部３１３の外部に出力する（量子化部３１４に供給する）。
【０２９３】
プライマリ変換部３５２は、例えば直交変換等の所定の変換処理であるプライマリ変換に関する処理を行う。例えば、プライマリ変換部３５２は、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、コンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]、予測モード情報PInfo、変換ブロックのサイズ（横幅の対数値log2TBWSize, 縦幅の対数値log2TBHSize）、および予測残差Dを入力とする。なお、変換ブロックの横幅TBWSizeをTBWidthとも称し、その対数値をlog2TBWidthとも称する。同様に、変換ブロックの縦幅TBHSizeをTBHeightとも称し、その対数値をlog2TBHeightとも称する。
【０２９４】
プライマリ変換部３５２は、その予測モード情報PInfo、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、およびコンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]を参照して、コンポーネント識別子compIDに対応するプライマリ水平変換の変換タイプTrTypeH（および該変換タイプを示すプライマリ水平変換タイプ識別子TrTypeIdxH）、およびプライマリ垂直変換の変換タイプTrTypeV（および該変換タイプを示すプライマリ垂直変換タイプ識別子TrTypeIdxV）を選択する。
【０２９５】
また、プライマリ変換部３５２は、予測残差Dに対して、そのプライマリ水平変換タイプ識別子TrTypeIdxH（または、プライマリ水平変換タイプTrTypeH）と変換ブロックの横幅log2TBWSizeで定まるプライマリ水平変換と、プライマリ垂直変換タイプ識別子TrTypeIdxV（または、プライマリ垂直変換タイプTrTypeV）と変換ブロックの縦幅log2TBHSizeで定まるプライマリ垂直変換と行い、プライマリ変換後の変換係数Coeff_Pを導出する。プライマリ水平変換は、水平方向の１次元直交変換であり、プライマリ垂直変換は、垂直方向の１次元直交変換である。
【０２９６】
プライマリ変換部３５２は、導出した変換係数Coeff_Pをセカンダリ変換部３５３に供給する。
【０２９７】
セカンダリ変換部３５３は、例えば直交変換等の所定の変換処理であるセカンダリ変換に関する処理を行う。例えばセカンダリ変換部３５３は、セカンダリ変換識別子st_idx、変換係数のスキャン方法を示すスキャン識別子scanIdx、および変換係数Coeff_Pを入力とする。セカンダリ変換部３５３は、セカンダリ変換識別子st_idxおよびスキャン識別子scanIdxに基づいて、変換係数Coeff_Pに対してセカンダリ変換を行い、セカンダリ変換後の変換係数Coeff_Sを導出する。
【０２９８】
より具体的には、セカンダリ変換識別子st_idxが、セカンダリ変換を適用することを示す場合（st_idx>0）、セカンダリ変換部３５３は、変換係数Coeff_Pに対して、セカンダリ変換識別子st_idxに対応するセカンダリ変換の処理を実行し、セカンダリ変換後の変換係数Coeff_Sを導出する。
【０２９９】
セカンダリ変換部３５３は、そのセカンダリ変換係数Coeff_Sを、変換係数Coeffとして直交変換部３１３の外部に出力する（量子化部３１４に供給する）。
【０３００】
また、セカンダリ変換識別子st_idxが、セカンダリ変換を適用しないことを示す場合（st_idx==0）、セカンダリ変換部３５３は、セカンダリ変換をスキップし、プライマリ変換後の変換係数Coeff_Pを変換係数Coeff（セカンダリ変換後の変換係数Coeff_S）として直交変換部３１３の外部に出力する（量子化部３１４に供給する）。
【０３０１】
＜プライマリ変換部＞
図２３は、図２２のプライマリ変換部３５２の主な構成例を示すブロック図である。図２３に示されるように、プライマリ変換部３５２は、プライマリ変換選択部３６１、プライマリ水平変換部３６２、およびプライマリ垂直変換部３６３を有する。
【０３０２】
プライマリ変換選択部３６１は、予測モード情報PInfo、コンポーネント識別子compID、適応プライマリ変換フラグapt_flag[compID]、およびプライマリ変換識別子pt_idx[compID]を入力とする。プライマリ変換選択部３６１は、それらの情報を参照して、プライマリ水平変換の変換タイプ識別子TrTypeIdxHおよびプライマリ垂直変換の変換タイプ識別子TrTypeIdxVを導出する。プライマリ変換選択部３６１は、導出したプライマリ水平変換の変換タイプ識別子TrTypeIdxHをプライマリ水平変換部３６２に供給する。また、プライマリ変換選択部３６１は、導出したプライマリ垂直変換の変換タイプ識別子TrTypeIdxVをプライマリ垂直変換部３６３に供給する。
【０３０３】
プライマリ水平変換部３６２は、予測残差D、プライマリ水平変換の変換タイプ識別子TrTypeIdxH、および変換ブロックのサイズに関する情報（図示せず）を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの横幅を示すlog2TBWSize（横幅の対数値）であってもよい（N = 1 << log2TBWSize）。プライマリ水平変換部３６２は、予測残差Dに対して、変換タイプ識別子TrTypeIdxHと変換ブロックのサイズで定まるプライマリ水平変換Phorを実行し、プライマリ水平変換後の変換係数Coeff_Phorを導出する。プライマリ水平変換部３６２は、そのプライマリ水平変換後の変換係数Coeff_Phorをプライマリ垂直変換部３６３に供給する。
【０３０４】
プライマリ垂直変換部３６３は、プライマリ水平変換後の変換係数Coeff_Phor、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV、および変換ブロックのサイズに関する情報（図示せず）を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの縦幅を示すlog2TBHSize（縦幅の対数値）であってもよい（N = 1 << log2TBHSize）。プライマリ垂直変換部３６３は、プライマリ水平変換後の変換係数Coeff_Phorに対して、変換タイプ識別子TrTypeIdxVと変換ブロックのサイズで定まるプライマリ垂直変換Pverを実行し、そのプライマリ垂直変換後の変換係数Coeff_Pverを導出する。プライマリ垂直変換部３６３は、そのプライマリ垂直変換後の変換係数Coeff_Pverを、プライマリ変換後の変換係数Coeff_Pとして、プライマリ変換部３５２の外部に出力する（セカンダリ変換部３５３に供給する）。
【０３０５】
＜プライマリ水平変換部＞
図２４は、図２３のプライマリ水平変換部３６２の主な構成例を示すブロック図である。図２４に示されるように、プライマリ水平変換部３６２は、信号列抽出部３７１、１次元変換部３７２、スケーリング部３７３、クリップ部３７４、および２次元データ列生成部３７５を有する。
【０３０６】
信号列抽出部３７１は、信号列抽出に関する処理を行う。例えば、信号列抽出部３７１は、プライマリ水平変換部３６２に入力される２次元データ列（行列）の入力係数データXin（予測残差D）を取得し、記憶する。信号列抽出部３７１は、その入力係数データXinの各行を１行ずつ抽出し、１次元信号列X1として１次元変換部３７２に供給する。
【０３０７】
１次元変換部３７２は、１次元変換に関する処理を行う。例えば、１次元変換部３７２は、プライマリ変換選択部３６１から供給される、プライマリ水平変換の変換タイプ識別子TrTypeIdxH、および変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）を取得する。また、１次元変換部３７２は、信号列抽出部３７１から供給される１次元信号列X1を取得する。１次元変換部３７２は、その１次元信号列X1に対して、プライマリ水平変換の変換タイプ識別子TrTypeIdxHや、変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）に対応する１次元変換を行い、１次元信号列X2を生成する。１次元変換部３７２は、その１次元信号列X2をスケーリング部３７３に供給する。
【０３０８】
例えば、信号列抽出部３７１は、係数データの処理対象ブロックより１次元信号列X1を抽出する。１次元変換部３７２の符号反転部１０２は、信号列抽出部３７１により抽出された１次元信号列X1に対して、符号反転操作を行う。
【０３０９】
また、例えば、２次元データ列生成部３７５は、１次元変換部３７２のフリップ部１０４によりフリップ操作が行われた１次元信号列X2（に対応する１次元信号列X4）を用いて２次元データ列を生成する。
【０３１０】
スケーリング部３７３は、スケーリングに関する処理を行う。例えば、スケーリング部３７３は、１次元変換部３７２から供給される１次元信号列X2を取得する。スケーリング部３７３は、その１次元信号列X2の各係数を、所定のシフト量fwdShift1でスケーリングして１次元信号列X3を生成する。スケーリング部３７３は、その１次元信号列X3をクリップ部３７４に供給する。
【０３１１】
クリップ部３７４は、クリップ処理に関する処理を行う。例えば、クリップ部３７４は、スケーリング部３７３から供給される１次元信号列X3を取得する。クリップ部３７４は、その１次元信号列X3の各係数を、最小値minCoefValおよび最大値maxCoefValを用いてクリップし、１次元信号列X4を生成する。クリップ部３７４は、その１次元信号列X4を２次元データ列生成部３７５に供給する。
【０３１２】
２次元データ列生成部３７５は、２次元データ列の生成に関する処理を行う。例えば、２次元データ列生成部３７５は、クリップ部３７４から供給される１次元信号列X4を記憶する。２次元データ列生成部３７５は、その１次元信号列X4を所定数ずつまとめて２次元データ列である出力係数データXoutを生成する。２次元データ列生成部３７５は、その出力係数データXout（プライマリ水平変換後の変換係数Coeff_Phor）をプライマリ水平変換部３６２の外部に出力する（プライマリ垂直変換部３６３に供給する）。
【０３１３】
信号列抽出部３７１乃至２次元データ列生成部３７５の各処理部は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０３１４】
＜プライマリ垂直変換部＞
図２５は、図２３のプライマリ垂直変換部３６３の主な構成例を示すブロック図である。図２５に示されるように、プライマリ垂直変換部３６３は、信号列抽出部３８１、１次元変換部３８２、スケーリング部３８３、クリップ部３８４、および２次元データ列生成部３８５を有する。
【０３１５】
信号列抽出部３８１は、信号列抽出に関する処理を行う。例えば、信号列抽出部３８１は、プライマリ垂直変換部３６３に入力される２次元データ列（行列）の入力係数データXin（プライマリ水平変換後の変換係数Coeff_Phor）を取得し、記憶する。信号列抽出部３８１は、その入力係数データXinの各列を１列ずつ抽出し、１次元信号列X1として１次元変換部３８２に供給する。
【０３１６】
１次元変換部３８２は、１次元変換に関する処理を行う。例えば、１次元変換部３８２は、プライマリ変換選択部３６１から供給される、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV、および変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）を取得する。また、１次元変換部３８２は、信号列抽出部３８１から供給される１次元信号列X1を取得する。１次元変換部３８２は、その１次元信号列X1に対して、プライマリ垂直変換の変換タイプ識別子TrTypeIdxVや、変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）に対応する１次元変換を行い、１次元信号列X2を生成する。１次元変換部３８２は、その１次元信号列X2をスケーリング部３８３に供給する。
【０３１７】
スケーリング部３８３は、スケーリングに関する処理を行う。例えば、スケーリング部３８３は、１次元変換部３８２から供給される１次元信号列X2を取得する。スケーリング部３８３は、その１次元信号列X2の各係数を、所定のシフト量fwdShift2でスケーリングして１次元信号列X3を生成する。スケーリング部３８３は、その１次元信号列X3をクリップ部３８４に供給する。
【０３１８】
クリップ部３８４は、クリップ処理に関する処理を行う。例えば、クリップ部３８４は、スケーリング部３８３から供給される１次元信号列X3を取得する。クリップ部３８４は、その１次元信号列X3の各係数を、最小値minCoefValおよび最大値maxCoefValを用いてクリップし、１次元信号列X4を生成する。クリップ部３８４は、その１次元信号列X4を２次元データ列生成部３８５に供給する。
【０３１９】
２次元データ列生成部３８５は、２次元データ列の生成に関する処理を行う。例えば、２次元データ列生成部３８５は、クリップ部３８４から供給される１次元信号列X4を記憶する。２次元データ列生成部３８５は、その１次元信号列X4を所定数ずつまとめて２次元データ列である出力係数データXoutを生成する。２次元データ列生成部３８５は、その出力係数データXout（プライマリ変換後の変換係数Coeff_P（プライマリ垂直変換後の変換係数Coeff_Pver））をプライマリ垂直変換部３６３の外部に出力する（セカンダリ変換部３５３に供給する）。
【０３２０】
信号列抽出部３８１乃至２次元データ列生成部３８５の各処理部は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０３２１】
＜本技術の適用＞
以上のような構成の画像符号化装置３００において、例えば、１次元変換部３７２（図２４）や１次元変換部３８２（図２５）として、第１の実施の形態において説明した変換装置１００（図６）を適用するようにしてもよい。また、１次元変換部３７２（図２４）や１次元変換部３８２（図２５）として、第３の実施の形態において説明した変換装置１００（図１５）を適用するようにしてもよい。さらに、１次元変換部３７２（図２４）や１次元変換部３８２（図２５）として、第５の実施の形態において説明した変換装置１００を適用するようにしてもよい。
【０３２２】
つまり、例えば、１次元変換部３７２や１次元変換部３８２は、１次元信号列X1に対して、図７の表等を参照して説明したように、各変換タイプの１次元変換を行うようにする。また、例えば、１次元変換部３７２や１次元変換部３８２は、図１２の表等を参照して説明したように、行列演算に用いるベース変換行列を導出するようにする。
【０３２３】
このような構成とすることにより、１次元変換部３７２や１次元変換部３８２は、符号化される画像データ（の予測残差D）に対するプライマリ変換（における水平方向または垂直方向の１次元変換）において、第１の実施の形態、第３の実施の形態、または第５の実施の形態の場合と同様の効果を得ることができる。つまり、画像符号化装置３００は、その１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができる。すなわち、画像符号化装置３００は、その１次元変換をより容易に行うことができる。したがって、画像符号化装置３００は、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【０３２４】
＜画像符号化処理の流れ＞
次に、以上のような画像符号化装置３００により実行される各処理の流れについて説明する。最初に、図２６のフローチャートを参照して、画像符号化処理の流れの例を説明する。
【０３２５】
画像符号化処理が開始されると、ステップＳ３０１において、並べ替えバッファ３１１は、制御部３０１に制御されて、入力された動画像データのフレームの順を表示順から符号化順に並べ替える。
【０３２６】
ステップＳ３０２において、制御部３０１は、並べ替えバッファ３１１が保持する入力画像に対して、処理単位を設定する（ブロック分割を行う）。
【０３２７】
ステップＳ３０３において、制御部３０１は、並べ替えバッファ３１１が保持する入力画像についての符号化パラメータを決定（設定）する。
【０３２８】
ステップＳ３０４において、予測部３２２は、予測処理を行い、最適な予測モードの予測画像等を生成する。例えば、この予測処理において、予測部３２２は、イントラ予測を行って最適なイントラ予測モードの予測画像等を生成し、インター予測を行って最適なインター予測モードの予測画像等を生成し、それらの中から、コスト関数値等に基づいて最適な予測モードを選択する。
【０３２９】
ステップＳ３０５において、演算部３１２は、入力画像と、ステップＳ３０４の予測処理により選択された最適なモードの予測画像との差分を演算する。つまり、演算部３１２は、入力画像と予測画像との予測残差Dを生成する。このようにして求められた予測残差Dは、元の画像データに比べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
【０３３０】
ステップＳ３０６において、直交変換部３１３は、ステップＳ３０５の処理により生成された予測残差Dに対して直交変換処理を行い、変換係数Coeffを導出する。
【０３３１】
ステップＳ３０７において、量子化部３１４は、制御部３０１により算出された量子化パラメータを用いる等して、ステップＳ３０６の処理により得られた変換係数Coeffを量子化し、量子化変換係数レベルlevelを導出する。
【０３３２】
ステップＳ３０８において、逆量子化部３１７は、ステップＳ３０７の処理により生成された量子化変換係数レベルlevelを、そのステップＳ３０７の量子化の特性に対応する特性で逆量子化し、変換係数Coeff_IQを導出する。
【０３３３】
ステップＳ３０９において、逆直交変換部３１８は、ステップＳ３０８の処理により得られた変換係数Coeff_IQを、ステップＳ３０６の直交変換処理に対応する方法で逆直交変換し、予測残差D'を導出する。なお、この逆直交変換処理は、復号側において行われる逆直交変換処理（後述する）と同様であるので、このステップＳ３０９の逆直交変換処理については、復号側について行う説明（後述する）を適用することができる。
【０３３４】
ステップＳ３１０において、演算部３１９は、ステップＳ３０９の処理により導出された予測残差D'に、ステップＳ３０４の予測処理により得られた予測画像を加算することにより、局所的に復号された復号画像を生成する。
【０３３５】
ステップＳ３１１において、インループフィルタ部３２０は、ステップＳ３１０の処理により導出された、局所的に復号された復号画像に対して、インループフィルタ処理を行う。
【０３３６】
ステップＳ３１２において、フレームメモリ３２１は、ステップＳ３１０の処理により導出された、局所的に復号された復号画像や、ステップＳ３１２においてフィルタ処理された、局所的に復号された復号画像を記憶する。
【０３３７】
ステップＳ３１３において、符号化部３１５は、ステップＳ３０７の処理により得られた量子化変換係数レベルlevelを符号化する。例えば、符号化部３１５は、画像に関する情報である量子化変換係数レベルlevelを、算術符号化等により符号化し、符号化データを生成する。また、このとき、符号化部３１５は、各種符号化パラメータ（ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo）を符号化する。さらに、符号化部３１５は、量子化変換係数レベルlevelから残差情報RInfoを導出し、その残差情報RInfoを符号化する。
【０３３８】
ステップＳ３１４において、蓄積バッファ３１６は、このようにして得られた符号化データを蓄積し、例えばビットストリームとして、それを画像符号化装置３００の外部に出力する。このビットストリームは、例えば、伝送路や記録媒体を介して復号側に伝送される。また、レート制御部３２３は、必要に応じてレート制御を行う。
【０３３９】
ステップＳ３１４の処理が終了すると、画像符号化処理が終了する。
【０３４０】
＜直交変換処理の流れ＞
次に図２６のステップＳ３０６において実行される直交変換処理の流れの例を、図２７のフローチャートを参照して説明する。
【０３４１】
直交変換処理が開始されると、スイッチ３５１は、ステップＳ３３１において、変換スキップフラグts_flagが2D_TS（２次元変換スキップを示す場合）（例えば１（真））、または、変換量子化バイパスフラグtransquant_bypass_flagが１（真）、であるか否かを判定する。変換スキップフラグts_flagが2D_TS（例えば１（真））、または、変換量子化バイパスフラグが１（真）であると判定された場合、直交変換処理が終了し、処理は図２６に戻る。この場合、直交変換処理（プライマリ変換やセカンダリ変換）が省略され、入力された予測残差Dが変換係数Coeffとされる。
【０３４２】
また、図２７のステップＳ３３１において、変換スキップフラグts_flagが2D_TSでなく（２次元変換スキップでなく）（例えば０（偽））、かつ、変換量子化バイパスフラグtransquant_bypass_flagが０（偽）であると判定された場合、処理はステップＳ３３２に進む。この場合、プライマリ変換処理およびセカンダリ変換処理が行われる。
【０３４３】
ステップＳ３３２において、プライマリ変換部３５２は、入力された予測残差Dに対して、コンポーネント識別子compIDで指定される適応プライマリ変換情報に基づいてプライマリ変換処理を行い、プライマリ変換後の変換係数Coeff_Pを導出する。
【０３４４】
ステップＳ３３３において、セカンダリ変換部３５３は、変換係数Coeff_Pに対してセカンダリ変換処理を行い、セカンダリ変換後の変換係数Coeff_S（変換係数Coeff）を導出する。
【０３４５】
ステップＳ３３３の処理が終了すると直交変換処理が終了する。
【０３４６】
＜プライマリ変換処理の流れ＞
次に、図２７のステップＳ３３２において実行されるプライマリ変換処理の流れの例を、図２８のフローチャートを参照して説明する。
【０３４７】
プライマリ変換処理が開始されると、プライマリ変換部３５２のプライマリ変換選択部３６１（図２３）は、ステップＳ３４１において、プライマリ水平変換の変換タイプ識別子TrTypeIdxH（および該識別子で指定される変換タイプTrTypeH）と、プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（および該識別子で指定される変換タイプTrTypeV）とを、それぞれ、上述したように選択する。
【０３４８】
ステップＳ３４２において、プライマリ水平変換部３６２は、ステップＳ３４１において得られたプライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応するプライマリ水平変換処理を予測残差Dに対して行い、プライマリ水平変換後の変換係数Coeff_Phorを導出する。
【０３４９】
ステップＳ３４３において、プライマリ垂直変換部３６３は、ステップＳ３４１において得られたプライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応するプライマリ垂直変換処理をプライマリ水平変換結果（プライマリ水平変換後の変換係数Coeff_Phor）に対して行い、プライマリ垂直変換後の変換係数Coeff_Pver（プライマリ変換後の変換係数Coeff_P）を導出する。
【０３５０】
ステップＳ３４３の処理が終了すると、プライマリ変換処理が終了し、処理は図２７に戻る。
【０３５１】
＜プライマリ水平変換処理の流れ＞
次に、図２８のステップＳ３４２において実行されるプライマリ水平変換処理の流れの例を、図２９のフローチャートを参照して説明する。
【０３５２】
プライマリ水平変換処理が開始されると、プライマリ水平変換部３６２の信号列抽出部３７１（図２４）は、ステップＳ３５１において、２次元データ列である入力係数データXin（予測残差D）を取得し、記憶する（保持する）。
【０３５３】
ステップＳ３５２において、信号列抽出部３７１は、例えば以下の式（２９）のように、保持している入力係数データXinの処理対象の行（j）を１次元信号列X1として抽出する。
【０３５４】
【数２３】
2022002352.tif 000025
【０３５５】
ステップＳ３５３において、１次元変換部３７２は、変換処理を実行し、変換タイプ識別子trTypeIdxHと変換サイズ（nTbS）に応じたベース変換行列Tbaseを用いて、１次元信号列X1に対する１次元変換を行う。
【０３５６】
ステップＳ３５４において、スケーリング部３７３は、例えば、以下の式（３０）のように、１次元信号列X2の各係数X2[i]をシフト量fwdShift1でスケーリングし、１次元信号列X3を導出する。
【０３５７】
【数２４】
2022002352.tif 000026
【０３５８】
ステップＳ３５５において、クリップ部３７４は、例えば、以下の式（３１）のように、１次元信号列X3の各係数X3[i]を、最小値minCoefValと最大値maxCoefValとの間にクリップし、１次元信号列X4を導出する。
【０３５９】
【数２５】
2022002352.tif 000027
【０３６０】
ステップＳ３５６において、２次元データ列生成部３７５は、１次元信号列X4を用いて２次元データ列Xoutを生成する。つまり、２次元データ列生成部３７５は、１次元信号列X4を保持（記憶）し、所定の列数分の１次元信号列X4をまとめることにより、２次元データ列Xoutを生成する。この処理は、例えば、以下の式（３２）のように表すことができる。
【０３６１】
【数２６】
2022002352.tif 000028
【０３６２】
ステップＳ３５７において、２次元データ列生成部３７５は、ステップＳ３５２乃至ステップＳ３５７の各処理を、全ての行に対して行ったか否かを判定する。すなわち、ステップＳ３５２乃至ステップＳ３５７の各処理は、ステップＳ３５１において保持された入力データXinの各行について行われる。２次元データ列生成部３７５は、その全ての行を処理したか否かを判定する。
【０３６３】
未処理の行が存在すると判定された場合、処理はステップＳ３５２に戻り、次の未処理の行を処理対象として、それ以降の処理を繰り返す。また、ステップＳ３５７において全ての行を処理したと判定された場合、２次元データ列生成部３７５は、生成した２次元データ列Xout（プライマリ水平変換後の変換係数Coeff_Phor）をプライマリ垂直変換部３６３の外部に出力する（プライマリ垂直変換部３６３に供給する）。２次元データ列Xoutが出力されると、プライマリ水平変換処理が終了し、処理は図２８に戻る。
【０３６４】
＜プライマリ垂直変換処理の流れ＞
次に、図２８のステップＳ３４３において実行されるプライマリ垂直変換処理の流れの例を、図３０のフローチャートを参照して説明する。
【０３６５】
プライマリ垂直変換処理が開始されると、プライマリ垂直変換部３６３の信号列抽出部３８１（図２５）は、ステップＳ３６１において、２次元データ列である入力係数データXin（プライマリ水平変換後の変換係数Coeff_Phor）を取得し、記憶する（保持する）。
【０３６６】
ステップＳ３６２において、信号列抽出部３８１は、例えば以下の式（３３）のように、保持している入力係数データXinの処理対象の列（j）を１次元信号列X1として抽出する。
【０３６７】
【数２７】
2022002352.tif 000029
【０３６８】
ステップＳ３６３において、１次元変換部３８２は、変換処理を実行し、変換タイプ識別子trTypeIdxVと変換サイズ（nTbS）に応じたベース変換行列Tbaseを用いて、１次元信号列X1に対する１次元変換を行う。
【０３６９】
ステップＳ３６４において、スケーリング部３８３は、例えば、以下の式（３４）のように、１次元信号列X2の各係数X2[i]をシフト量fwdShift2でスケーリングし、１次元信号列X3を導出する。
【０３７０】
【数２８】
2022002352.tif 000030
【０３７１】
ステップＳ３６５において、クリップ部３８４は、例えば、上述の式（３１）のように、１次元信号列X3の各係数X3[i]を、最小値minCoefValと最大値maxCoefValとの間にクリップし、１次元信号列X4を導出する。
【０３７２】
ステップＳ３６６において、２次元データ列生成部３８５は、１次元信号列X4を用いて２次元データ列Xoutを生成する。つまり、２次元データ列生成部３８５は、１次元信号列X4を保持（記憶）し、所定の列数分の１次元信号列X4をまとめることにより、２次元データ列Xoutを生成する。この処理は、例えば、以下の式（３５）のように表すことができる。
【０３７３】
【数２９】
2022002352.tif 000031
【０３７４】
ステップＳ３６７において、２次元データ列生成部３８５は、ステップＳ３６２乃至ステップＳ３６７の各処理を、全ての列に対して行ったか否かを判定する。すなわち、ステップＳ３６２乃至ステップＳ３６７の各処理は、ステップＳ３６１において保持された入力データXinの各列について行われる。２次元データ列生成部３８５は、その全ての列を処理したか否かを判定する。
【０３７５】
未処理の列が存在すると判定された場合、処理はステップＳ３６２に戻り、次の未処理の列を処理対象として、それ以降の処理を繰り返す。また、ステップＳ３６７において全ての列を処理したと判定された場合、プライマリ垂直変換処理が終了し、処理は図２８に戻る。
【０３７６】
＜本技術の適用＞
以上のようなプライマリ水平変換処理（図２９）のステップＳ３５３において、例えば、１次元変換部３７２は、第１の実施の形態の場合（図８）と同様の流れで変換処理を実行するようにしてもよい。また、１次元変換部３７２は、第３の実施の形態の場合（図１７）と同様の流れで変換処理を実行するようにしてもよい。さらに、１次元変換部３７２は、第５の実施の形態の場合と同様の流れで変換処理を実行するようにしてもよい。
【０３７７】
また、以上のようなプライマリ垂直変換処理（図３０）のステップＳ３６３において、例えば、１次元変換部３８２は、第１の実施の形態の場合（図８）と同様の流れで変換処理を実行するようにしてもよい。また、１次元変換部３８２は、第３の実施の形態の場合（図１７）と同様の流れで変換処理を実行するようにしてもよい。さらに、１次元変換部３８２は、第５の実施の形態の場合と同様の流れで変換処理を実行するようにしてもよい。
【０３７８】
このように各処理を実行することにより、１次元変換部３７２や１次元変換部３８２は、符号化される画像データ（の予測残差D）に対するプライマリ変換（における水平方向または垂直方向の１次元変換）において、第１の実施の形態、第３の実施の形態、または第５の実施の形態の場合と同様の効果を得ることができる。つまり、画像符号化装置３００は、その１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができる。すなわち、画像符号化装置３００は、その１次元変換をより容易に行うことができる。したがって、画像符号化装置３００は、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【０３７９】
＜１０．第７の実施の形態＞
＜画像復号装置＞
図３１は、本技術を適用した画像処理装置の一態様である画像復号装置の構成の一例を示すブロック図である。図３１に示される画像復号装置４００は、AVCやHEVCのように、画像とその予測画像との予測残差が符号化された符号化データを復号する装置である。例えば、画像復号装置４００は、非特許文献１、非特許文献５、または非特許文献６に記載されている技術を実装し、それらの文献のいずれかに記載された規格に準拠した方法で動画像の画像データが符号化された符号化データを復号する。例えば、画像復号装置４００は、上述の画像符号化装置３００により生成された符号化データ（ビットストリーム）を復号する。
【０３８０】
なお、図３１においては、処理部やデータの流れ等の主なものを示しており、図３１に示されるものが全てとは限らない。つまり、画像復号装置４００において、図３１においてブロックとして示されていない処理部が存在したり、図３１において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、画像復号装置４００内の処理部等を説明する他の図においても同様である。
【０３８１】
図３１において、画像復号装置４００は、蓄積バッファ４１１、復号部４１２、逆量子化部４１３、逆直交変換部４１４、演算部４１５、インループフィルタ部４１６、並べ替えバッファ４１７、フレームメモリ４１８、および予測部４１９を備えている。なお、予測部４１９は、不図示のイントラ予測部、およびインター予測部を備えている。画像復号装置４００は、符号化データ（ビットストリーム）を復号することによって、動画像データを生成するための装置である。
【０３８２】
＜蓄積バッファ＞
蓄積バッファ４１１は、画像復号装置４００に入力されたビットストリームを取得し、保持（記憶）する。蓄積バッファ４１１は、所定のタイミングにおいて、または、所定の条件が整う等した場合、蓄積しているビットストリームを復号部４１２に供給する。
【０３８３】
＜復号部＞
復号部４１２は、画像の復号に関する処理を行う。例えば、復号部４１２は、蓄積バッファ４１１から供給されるビットストリームを入力とし、シンタックステーブルの定義に沿って、そのビット列から、各シンタックス要素のシンタックス値を可変長復号し、パラメータを導出する。
【０３８４】
シンタックス要素およびシンタックス要素のシンタックス値から導出されるパラメータには、例えば、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfo、フィルタ情報Finfoなどの情報が含まれる。つまり、復号部４１２は、ビットストリームから、これらの情報をパースする（解析して取得する）。これらの情報について以下に説明する。
【０３８５】
＜ヘッダ情報Hinfo＞
ヘッダ情報Hinfoは、例えば、VPS（Video Parameter Set）／SPS（Sequence ParameterSet）／PPS（Picture Parameter Set）／SH（スライスヘッダ）などのヘッダ情報を含む。ヘッダ情報Hinfoには、例えば、画像サイズ（横幅PicWidth、縦幅PicHeight）、ビット深度（輝度bitDepthY, 色差bitDepthC）、色差アレイタイプChromaArrayType、CUサイズの最大値MaxCUSize／最小値MinCUSize、４分木分割（Quad-tree分割ともいう）の最大深度MaxQTDepth/最小深度MinQTDepth、２分木分割（Binary-tree分割）の最大深度MaxBTDepth/最小深度MinBTDepth、変換スキップブロックの最大値MaxTSSize（最大変換スキップブロックサイズともいう）、各符号化ツールのオンオフフラグ（有効フラグともいう）などを規定する情報が含まれる。
【０３８６】
例えば、ヘッダ情報Hinfoに含まれる符号化ツールのオンオフフラグとしては、以下に示す変換、量子化処理に関わるオンオフフラグがある。なお、符号化ツールのオンオフフラグは、該符号化ツールに関わるシンタックスが符号化データ中に存在するか否かを示すフラグとも解釈することができる。また、オンオフフラグの値が１（真）の場合、該符号化ツールが使用可能であることを示し、オンオフフラグの値が０（偽）の場合、該符号化ツールが使用不可であることを示す。なお、フラグ値の解釈は逆であってもよい。
【０３８７】
コンポーネント間予測有効フラグ（ccp_enabled_flag）:コンポーネント間予測（CCP（Cross-Component Prediction），CC予測とも称する）が使用可能であるか否かを示すフラグ情報である。例えば、このフラグ情報が「１」（真）の場合、使用可能であることが示され、「０」（偽）の場合、使用不可であることが示される。
【０３８８】
なお、このCCPは、コンポーネント間線形予測（CCLMまたはCCLMP）とも称する。
【０３８９】
＜予測モード情報Pinfo＞
予測モード情報Pinfoには、例えば、処理対象PB（予測ブロック）のサイズ情報PBSize（予測ブロックサイズ）、イントラ予測モード情報IPinfo、動き予測情報MVinfo等の情報が含まれる。
【０３９０】
イントラ予測モード情報IPinfoには、例えば、JCTVC-W1005, 7.3.8.5 Coding Unit syntax中のprev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode、およびそのシンタックスから導出される輝度イントラ予測モードIntraPredModeY等が含まれる。
【０３９１】
また、イントラ予測モード情報IPinfoには、例えば、コンポーネント間予測フラグ（ccp_flag（cclmp_flag））、多クラス線形予測モードフラグ（mclm_flag）、色差サンプル位置タイプ識別子（chroma_sample_loc_type_idx）、色差MPM識別子（chroma_mpm_idx）、および、これらのシンタックスから導出される輝度イントラ予測モード（IntraPredModeC）等が含まれる。
【０３９２】
コンポーネント間予測フラグ（ccp_flag（cclmp_flag））は、コンポーネント間線形予測を適用するか否かを示すフラグ情報である。例えば、ccp_flag==1のとき、コンポーネント間予測を適用することを示し、ccp_flag==0のとき、コンポーネント間予測を適用しないことを示す。
【０３９３】
多クラス線形予測モードフラグ（mclm_flag）は、線形予測のモードに関する情報（線形予測モード情報）である。より具体的には、多クラス線形予測モードフラグ（mclm_flag）は、多クラス線形予測モードにするか否かを示すフラグ情報である。例えば、「０」の場合、１クラスモード（単一クラスモード）（例えばCCLMP）であることを示し、「１」の場合、２クラスモード（多クラスモード）（例えばMCLMP）であることを示す。
【０３９４】
色差サンプル位置タイプ識別子（chroma_sample_loc_type_idx）は、色差コンポーネントの画素位置のタイプ（色差サンプル位置タイプとも称する）を識別する識別子である。例えば色フォーマットに関する情報である色差アレイタイプ（ChromaArrayType）が420形式を示す場合、色差サンプル位置タイプ識別子は、以下の式（３６）のような割り当て方となる。
【０３９５】
【数３０】
2022002352.tif 000032
【０３９６】
なお、この色差サンプル位置タイプ識別子（chroma_sample_loc_type_idx）は、色差コンポーネントの画素位置に関する情報（chroma_sample_loc_info()）として（に格納されて）伝送される。
【０３９７】
色差MPM識別子（chroma_mpm_idx）は、色差イントラ予測モード候補リスト（intraPredModeCandListC）の中のどの予測モード候補を色差イントラ予測モードとして指定するかを表す識別子である。
【０３９８】
動き予測情報MVinfoには、例えば、merge_idx, merge_flag, inter_pred_idc, ref_idx_LX, mvp_lX_flag, X={0,1}, mvd等の情報が含まれる（例えば、JCTVC-W1005, 7.3.8.6 Prediction Unit Syntaxを参照）。
【０３９９】
もちろん、予測モード情報Pinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【０４００】
＜変換情報Tinfo＞
変換情報Tinfoには、例えば、以下の情報が含まれる。もちろん、変換情報Tinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【０４０１】
処理対象変換ブロックの横幅サイズTBWSizeおよび縦幅TBHSize（または、２を底とする各TBWSize、TBHSizeの対数値log2TBWSize、log2TBHSizeであってもよい）。変換スキップフラグ（ts_flag）:（逆）プライマリ変換および（逆）セカンダリ変換をスキップか否かを示すフラグである。
スキャン識別子（scanIdx）
量子化パラメータ（qp）
量子化マトリックス（scaling_matrix（例えば、JCTVC-W1005, 7.3.4 Scaling list data syntax））
【０４０２】
＜残差情報Rinfo＞
残差情報Rinfo（例えば、JCTVC-W1005の7.3.8.11 Residual Coding syntaxを参照）には、例えば以下のシンタックスが含まれる。
【０４０３】
cbf（coded_block_flag）：残差データ有無フラグ
last_sig_coeff_x_pos：ラスト非ゼロ係数X座標
last_sig_coeff_y_pos：ラスト非ゼロ係数Y座標
coded_sub_block_flag：サブブロック非ゼロ係数有無フラグ
sig_coeff_flag：非ゼロ係数有無フラグ
gr1_flag：非ゼロ係数のレベルが１より大きいかを示すフラグ(GR1フラグとも呼ぶ)
gr2_flag：非ゼロ係数のレベルが２より大きいかを示すフラグ(GR2フラグとも呼ぶ)
sign_flag：非ゼロ係数の正負を示す符号（サイン符号とも呼ぶ）
coeff_abs_level_remaining:非ゼロ係数の残余レベル(非ゼロ係数残余レベルとも呼ぶ)
など。
【０４０４】
もちろん、残差情報Rinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【０４０５】
＜フィルタ情報Finfo＞
フィルタ情報Finfoには、例えば、以下に示す各フィルタ処理に関する制御情報が含まれる。
【０４０６】
デブロッキングフィルタ(DBF)に関する制御情報
画素適応オフセット(SAO)に関する制御情報
適応ループフィルタ(ALF)に関する制御情報
その他の線形・非線形フィルタに関する制御情報
【０４０７】
より具体的には、例えば、各フィルタを適用するピクチャや、ピクチャ内の領域を指定する情報や、CU単位のフィルタOn/Off制御情報、スライス、タイルの境界に関するフィルタOn/Off制御情報などが含まれる。もちろん、フィルタ情報Finfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【０４０８】
復号部２１２の説明に戻り、復号部２１２は、残差情報Rinfoを参照して、各変換ブロック内の各係数位置の量子化変換係数レベルlevelを導出する。復号部２１２は、その量子化変換係数レベルlevelを、逆量子化部２１３に供給する。
【０４０９】
また、復号部４１２は、パースしたヘッダ情報Hinfo、予測モード情報Pinfo、量子化変換係数レベルlevel、変換情報Tinfo、フィルタ情報Finfoを各ブロックへ供給する。具体的には以下の通りである。
【０４１０】
ヘッダ情報Hinfoは、逆量子化部４１３、逆直交変換部４１４、予測部４１９、インループフィルタ部４１６に供給される。予測モード情報Pinfoは、逆量子化部４１３および予測部４１９に供給される。変換情報Tinfoは、逆量子化部４１３および逆直交変換部４１４に供給される。フィルタ情報Finfoは、インループフィルタ部４１６に供給される。
【０４１１】
もちろん、上述の例は一例であり、この例に限定されない。例えば、各符号化パラメータが任意の処理部に供給されるようにしてもよい。また、その他の情報が、任意の処理部に供給されるようにしてもよい。
【０４１２】
＜逆量子化部＞
逆量子化部４１３は、逆量子化に関する処理を行う。例えば、逆量子化部４１３は、復号部４１２から供給される変換情報Tinfoおよび量子化変換係数レベルlevelを入力とし、その変換情報Tinfoに基づいて、量子化変換係数レベルlevelの値をスケーリング（逆量子化）し、逆量子化後の変換係数Coeff_IQを導出する。
【０４１３】
なお、この逆量子化は、量子化部３１４による量子化の逆処理として行われる。また、この逆量子化は、逆量子化部３１７による逆量子化と同様の処理である。つまり、逆量子化部３１７は、逆量子化部４１３と同様の処理（逆量子化）を行う。
【０４１４】
逆量子化部４１３は、導出した変換係数Coeff_IQを逆直交変換部４１４に供給する。
【０４１５】
＜逆直交変換部＞
逆直交変換部４１４は、逆直交変換に関する処理を行う。例えば、逆直交変換部４１４は、逆量子化部４１３から供給される変換係数Coeff_IQ、および、復号部４１２から供給される変換情報Tinfoを入力とし、その変換情報Tinfoに基づいて、変換係数Coeff_IQに対して逆直交変換処理を行い、予測残差D'を導出する。
【０４１６】
なお、この逆直交変換は、直交変換部３１３による直交変換の逆処理として行われる。また、この逆直交変換は、逆直交変換部３１８による逆直交変換と同様の処理である。つまり、逆直交変換部３１８は、逆直交変換部４１４と同様の処理（逆直交変換）を行う。
【０４１７】
逆直交変換部４１４は、導出した予測残差D'を演算部４１５に供給する。
【０４１８】
＜演算部＞
演算部４１５は、画像に関する情報の加算に関する処理を行う。例えば、演算部４１５は、逆直交変換部４１４から供給される予測残差D'と、予測部４１９から供給される予測画像Pとを入力とする。演算部４１５は、以下の式（３７）に示されるように、予測残差D'とその予測残差D'に対応する予測画像P（予測信号）とを加算し、局所復号画像Rlocalを導出する。
【０４１９】
【数３１】
2022002352.tif 000033
【０４２０】
演算部４１５は、導出した局所復号画像Rlocalを、インループフィルタ部４１６およびフレームメモリ４１８に供給する。
【０４２１】
＜インループフィルタ部＞
インループフィルタ部４１６は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部４１６は、演算部４１５から供給される局所復号画像Rlocalと、復号部４１２から供給されるフィルタ情報Finfoとを入力とする。なお、インループフィルタ部４１６に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。
【０４２２】
インループフィルタ部４１６は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。
【０４２３】
例えば、インループフィルタ部４１６は、非特許文献１に記載のように、バイラテラルフィルタ、デブロッキングフィルタ（DBF（DeBlocking Filter））、適応オフセットフィルタ（SAO（Sample Adaptive Offset））、および適応ループフィルタ（ALF(Adaptive Loop Filter)）の４つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
【０４２４】
インループフィルタ部４１６は、符号化側（例えば画像符号化装置３００のインループフィルタ部３２０）により行われたフィルタ処理に対応するフィルタ処理を行う。もちろん、インループフィルタ部４１６が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部４１６がウィーナーフィルタ等を適用するようにしてもよい。
【０４２５】
インループフィルタ部４１６は、フィルタ処理された局所復号画像Rlocalを並べ替えバッファ４１７およびフレームメモリ４１８に供給する。
【０４２６】
＜並べ替えバッファ＞
並べ替えバッファ４１７は、インループフィルタ部４１６から供給された局所復号画像Rlocalを入力とし、それを保持（記憶）する。並べ替えバッファ４１７は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する（バッファ内に格納する）。並べ替えバッファ４１７は、得られた復号画像Rを、復号順から再生順に並べ替える。並べ替えバッファ４１７は、並べ替えた復号画像R群を動画像データとして画像復号装置２００の外部に出力する。
【０４２７】
＜フレームメモリ＞
フレームメモリ４１８は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ４１８は、演算部４１５より供給される局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ４１８内のバッファへ格納する。
【０４２８】
また、フレームメモリ４１８は、インループフィルタ部４１６から供給される、インループフィルタ処理された局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ４１８内のバッファへ格納する。フレームメモリ４１８は、適宜、その記憶している復号画像R（またはその一部）を参照画像として予測部４１９に供給する。
【０４２９】
なお、フレームメモリ４１８が、復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなどを記憶するようにしても良い。
【０４３０】
＜予測部＞
予測部４１９は、予測画像の生成に関する処理を行う。例えば、予測部４１９は、復号部４１２から供給される予測モード情報Pinfoを入力とし、その予測モード情報Pinfoによって指定される予測方法により予測を行い、予測画像Pを導出する。その導出の際、予測部４１９は、その予測モード情報Pinfoによって指定される、フレームメモリ４１８に格納されたフィルタ前またはフィルタ後の復号画像R（またはその一部）を、参照画像として利用する。予測部４１９は、導出した予測画像Pを、演算部４１５に供給する。
【０４３１】
＜逆直交変換部の詳細＞
図３２は、図３１の逆直交変換部４１４の主な構成例を示すブロック図である。図３２に示されるように、逆直交変換部４１４は、スイッチ４５１、逆セカンダリ変換部４５２、および逆プライマリ変換部４５３を有する。
【０４３２】
スイッチ４５１は、変換係数Coeff_IQ、および変換スキップフラグts_flag[compID]を入力とする。変換スキップフラグts_flag[compID]の値がNO_TS(=0)の場合、すなわち、変換スキップを適用しない場合、スイッチ４５１は、変換係数Coeff_IQを、逆セカンダリ変換部４５２に供給する。また、変換スキップフラグts_flag[compID]の値が2D_TS(=1)の場合、すなわち、２次元変換スキップを適用することを示す場合、スイッチ４５１は、逆セカンダリ変換部４５２および逆プライマリ変換部４５３をスキップし、変換係数Coeff_IQを予測残差D'として逆直交変換部４１４の外部に出力する（演算部４１５に供給する）。
【０４３３】
逆セカンダリ変換部４５２は、符号化側（例えば、画像符号化装置３００のセカンダリ変換部３５３）において行われるセカンダリ変換の逆処理である逆セカンダリ変換に関する処理を行う。例えば、逆セカンダリ変換部４５２は、セカンダリ変換識別子st_idx、変換係数のスキャン方法を示すスキャン識別子scanIdx、および、スイッチ４５１から供給される変換係数Coeff_IQを入力とする。
【０４３４】
逆セカンダリ変換部４５２は、セカンダリ変換識別子st_idxおよびスキャン識別子scanIdxに基づいて、変換係数Coeff_IQに対して逆セカンダリ変換を行い、逆セカンダリ変換後の変換係数Coeff_ISを導出する。
【０４３５】
より具体的には、セカンダリ変換識別子st_idxが、逆セカンダリ変換を適用することを示す場合（st_idx>0）、逆セカンダリ変換部４５２は、変換係数Coeff_IQに対して、セカンダリ変換識別子st_idxに対応する逆セカンダリ変換の処理を実行し、逆セカンダリ変換後の変換係数Coeff_ISを導出する。逆セカンダリ変換部４５２は、その逆セカンダリ変換係数Coeff_ISを逆プライマリ変換部４５３に供給する。
【０４３６】
なお、セカンダリ変換識別子st_idxが、逆セカンダリ変換を適用しないことを示す場合（st_idx==0）、逆セカンダリ変換部４５２は、逆セカンダリ変換をスキップし、変換係数Coeff_IQを逆セカンダリ変換後の変換係数Coeff_ISとして逆プライマリ変換部４５３に供給する。
【０４３７】
逆プライマリ変換部４５３は、符号化側（例えば、画像符号化装置３００のプライマリ変換部３５２）において行われるプライマリ変換の逆処理である逆プライマリ変換に関する処理を行う。例えば、逆プライマリ変換部４５３は、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、コンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]、予測モード情報PInfo、変換ブロックのサイズ（横幅の対数値log2TBWSize, 縦幅の対数値log2TBHSize）および逆セカンダリ変換後の変換係数Coeff_ISを入力とする。
【０４３８】
逆プライマリ変換部４５３は、その予測モード情報PInfo、コンポーネント識別子compID、コンポーネント識別子compIDの適応プライマリ変換フラグapt_flag[compID]、およびコンポーネント識別子compIDのプライマリ変換識別子pt_idx[compID]を参照して、コンポーネント識別子compIDに対応する逆プライマリ水平変換の変換タイプTrTypeH（および該変換タイプを示す逆プライマリ水平変換タイプ識別子TrTypeIdxH）、および逆プライマリ垂直変換の変換タイプTrTypeV（および該変換タイプを示す逆プライマリ垂直変換タイプ識別子TrTypeIdxV）を選択する。
【０４３９】
また、逆プライマリ変換部４５３は、逆セカンダリ後の変換係数Coeff_ISに対して、その逆プライマリ垂直変換タイプ識別子TrTypeIdxV（または、逆プライマリ垂直変換タイプTrTypeV）と変換ブロックの縦幅log2TBHSizeとで定まる逆プライマリ垂直変換と、逆プライマリ水平変換タイプ識別子TrTypeIdxH（または、逆プライマリ水平変換タイプTrTypeH）と変換ブロックの横幅log2TBWSizeとで定まる逆プライマリ水平変換とを行い、逆プライマリ変換後の変換係数Coeff_IPを導出する。逆プライマリ垂直変換は、垂直方向の逆１次元直交変換であり、逆プライマリ水平変換は、水平方向の逆１次元直交変換である。
【０４４０】
逆プライマリ変換部４５３は、その逆プライマリ変換後の変換係数Coeff_IPを、予測残差D'として逆直交変換部４１４の外部に出力する（演算部４１５に供給する）。
【０４４１】
＜逆プライマリ変換部＞
図３３は、この場合の逆プライマリ変換部４５３（図３２）の主な構成例を示すブロック図である。図３３に示されるように、逆プライマリ変換部４５３は、逆プライマリ変換選択部４６１、逆プライマリ垂直変換部４６２、および逆プライマリ水平変換部４６３を有する。
【０４４２】
逆プライマリ変換選択部４６１は、予測モード情報PInfo、コンポーネント識別子compID、適応プライマリ変換フラグapt_flag[compID]、およびプライマリ変換識別子pt_idx[compID]を入力とする。逆プライマリ変換選択部４６１は、それらの情報を参照して、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVおよび逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxHを導出する。逆プライマリ変換選択部４６１は、導出した逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVを逆プライマリ垂直変換部４６２に供給する。また、逆プライマリ変換選択部４６１は、導出した逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHを逆プライマリ水平変換部４６３に供給する。
【０４４３】
逆プライマリ垂直変換部４６２は、逆セカンダリ変換後の変換係数Coeff_IS、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxV、および変換ブロックのサイズに関する情報を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの縦幅を示すlog2TBHSize（縦幅の対数値）であってもよい（N = 1 << log2TBHSize）。逆プライマリ垂直変換部４６２は、逆セカンダリ変換後の変換係数Coeff_ISに対して、変換タイプ識別子TrTypeIdxVと変換ブロックのサイズで定まる逆プライマリ垂直変換IPverを実行し、逆プライマリ垂直変換後の変換係数Coeff_IPverを導出する。逆プライマリ垂直変換部４６２は、その逆プライマリ垂直変換後の変換係数Coeff_IPverを逆プライマリ水平変換部４６３に供給する。
【０４４４】
逆プライマリ水平変換部４６３は、逆プライマリ垂直変換後の変換係数Coeff_IPver、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxH、および変換ブロックのサイズに関する情報を入力とする。この変換ブロックのサイズに関する情報は、変換ブロックの水平方向または垂直方向の大きさ（係数の数）を示す自然数Nであってもよいし、変換ブロックの横幅を示すlog2TBWSize（横幅の対数値）であってもよい（N = 1 << log2TBWSize）。逆プライマリ水平変換部４６３は、逆プライマリ垂直変換部４６２から供給される逆プライマリ垂直変換後の変換係数Coeff_IPverに対して、変換タイプ識別子TrTypeIdxHと変換ブロックのサイズで定まる逆プライマリ水平変換IPhorを実行し、その逆プライマリ水平変換後の変換係数Coeff_IPhor（すなわち逆プライマリ変換後の変換係数Coeff_IP）を導出する。逆プライマリ水平変換部４６３は、その逆プライマリ水平変換後の変換係数Coeff_IPhorを予測残差D'として逆プライマリ変換部４５３の外部に出力する（演算部４１５に供給する）。
【０４４５】
＜逆プライマリ垂直変換部＞
図３４は、図３３の逆プライマリ垂直変換部４６２の主な構成例を示すブロック図である。図３４に示されるように、逆プライマリ垂直変換部４６２は、信号列抽出部４７１、逆１次元変換部４７２、スケーリング部４７３、クリップ部４７４、および２次元データ列生成部４７５を有する。
【０４４６】
信号列抽出部４７１は、信号列抽出に関する処理を行う。例えば、信号列抽出部４７１は、逆プライマリ垂直変換部４６２に入力される２次元データ列（行列）の入力係数データXin（逆セカンダリ変換後の変換係数Coeff_IS）を取得し、記憶する。信号列抽出部４７１は、その入力係数データXinの各列を１列ずつ抽出し、１次元信号列X1として逆１次元変換部４７２に供給する。
【０４４７】
例えば、信号列抽出部４７１は、復号部４１２によりビットストリームが復号されて生成された係数データである量子化変換係数レベルlevel（に対応する変換係数Coeff_IS）の処理対象ブロックより１次元信号列X1を抽出する。逆１次元変換部４７２のフリップ部１５２は、その信号列抽出部４７１により抽出された１次元信号列に対して、フリップ操作を行う。
【０４４８】
逆１次元変換部４７２は、逆１次元変換に関する処理を行う。例えば、逆１次元変換部４７２は、逆プライマリ変換選択部４６１から供給される、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxV、および変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）を取得する。また、逆１次元変換部４７２は、信号列抽出部４７１から供給される１次元信号列X1を取得する。逆１次元変換部４７２は、その１次元信号列X1に対して、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVや、変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）に対応する逆１次元変換を行い、１次元信号列X2を生成する。逆１次元変換部４７２は、その１次元信号列X2をスケーリング部４７３に供給する。
【０４４９】
スケーリング部４７３は、スケーリングに関する処理を行う。例えば、スケーリング部４７３は、逆１次元変換部４７２から供給される１次元信号列X2を取得する。スケーリング部４７３は、その１次元信号列X2の各係数を、所定のシフト量invShift1でスケーリングして１次元信号列X3を生成する。スケーリング部４７３は、その１次元信号列X3をクリップ部４７４に供給する。
【０４５０】
クリップ部４７４は、クリップ処理に関する処理を行う。例えば、クリップ部４７４は、スケーリング部４７３から供給される１次元信号列X3を取得する。クリップ部４７４は、その１次元信号列X3の各係数を、最小値minCoefValおよび最大値maxCoefValを用いてクリップし、１次元信号列X4を生成する。クリップ部４７４は、その１次元信号列X4を２次元データ列生成部４７５に供給する。
【０４５１】
２次元データ列生成部４７５は、２次元データ列の生成に関する処理を行う。例えば、２次元データ列生成部４７５は、クリップ部４７４から供給される１次元信号列X4を記憶する。２次元データ列生成部４７５は、その１次元信号列X4を所定数ずつまとめて２次元データ列である出力係数データXoutを生成する。２次元データ列生成部４７５は、その出力係数データXout（逆プライマリ垂直変換後の変換係数Coeff_IPver）を逆プライマリ垂直変換部４６２の外部に出力する（逆プライマリ水平変換部４６３に供給する）。
【０４５２】
例えば、２次元データ列生成部４７５は、逆１次元変換部４７２の符号反転部１５４により符号反転操作が行われた１次元信号列X2（に対応する１次元信号列X4）を用いて２次元データ列を生成する。
【０４５３】
信号列抽出部４７１乃至２次元データ列生成部４７５の各処理部は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０４５４】
＜逆プライマリ水平変換部＞
図３５は、図３３の逆プライマリ水平変換部４６３の主な構成例を示すブロック図である。図３５に示されるように、逆プライマリ水平変換部４６３は、信号列抽出部４８１、逆１次元変換部４８２、スケーリング部４８３、クリップ部４８４、および２次元データ列生成部４８５を有する。
【０４５５】
信号列抽出部４８１は、信号列抽出に関する処理を行う。例えば、信号列抽出部４８１は、逆プライマリ水平変換部４６３に入力される２次元データ列（行列）の入力係数データXin（逆プライマリ垂直変換後の変換係数Coeff_IPver）を取得し、記憶する。信号列抽出部４８１は、その入力係数データXinの各行を１行ずつ抽出し、１次元信号列X1として逆１次元変換部４８２に供給する。
【０４５６】
逆１次元変換部４８２は、逆１次元変換に関する処理を行う。例えば、逆１次元変換部４８２は、逆プライマリ変換選択部４６１から供給される、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxH、および変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）を取得する。また、逆１次元変換部４８２は、信号列抽出部４８１から供給される１次元信号列X1を取得する。逆１次元変換部４８２は、その１次元信号列X1に対して、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHや、変換ブロックのサイズに関する情報（log2TBWSizeおよびlog2TBHSize）に対応する逆１次元変換を行い、１次元信号列X2を生成する。逆１次元変換部４８２は、その１次元信号列X2をスケーリング部４８３に供給する。
【０４５７】
スケーリング部４８３は、スケーリングに関する処理を行う。例えば、スケーリング部４８３は、逆１次元変換部４８２から供給される１次元信号列X2を取得する。スケーリング部４８３は、その１次元信号列X2の各係数を、所定のシフト量invShift2でスケーリングして１次元信号列X3を生成する。スケーリング部４８３は、その１次元信号列X3をクリップ部４８４に供給する。
【０４５８】
クリップ部４８４は、クリップ処理に関する処理を行う。例えば、クリップ部４８４は、スケーリング部４８３から供給される１次元信号列X3を取得する。クリップ部４８４は、その１次元信号列X3の各係数を、最小値minCoefValおよび最大値maxCoefValを用いてクリップし、１次元信号列X4を生成する。クリップ部４８４は、その１次元信号列X4を２次元データ列生成部４８５に供給する。
【０４５９】
２次元データ列生成部４８５は、２次元データ列の生成に関する処理を行う。例えば、２次元データ列生成部４８５は、クリップ部４８４から供給される１次元信号列X4を記憶する。２次元データ列生成部４８５は、その１次元信号列X4を所定数ずつまとめて２次元データ列である出力係数データXoutを生成する。２次元データ列生成部４８５は、その出力係数データXout（予測残差D'、逆プライマリ水平変換後の変換係数Coeff_IPhor、または、逆プライマリ変換後の変換係数Coeff_IP）を逆プライマリ水平変換部４６３の外部に出力する（演算部４１５に供給する）。
【０４６０】
信号列抽出部４８１乃至２次元データ列生成部４８５の各処理部は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０４６１】
＜本技術の適用＞
以上のような構成の画像復号装置４００において、例えば、逆１次元変換部４７２（図３４）や逆１次元変換部４８２（図３５）として、第２の実施の形態において説明した逆変換装置１５０（図９）を適用するようにしてもよい。また、逆１次元変換部４７２（図３４）や逆１次元変換部４８２（図３５）として、第４の実施の形態において説明した逆変換装置１５０（図１９）を適用するようにしてもよい。さらに、逆１次元変換部４７２（図３４）や逆１次元変換部４８２（図３５）として、第５の実施の形態において説明した逆変換装置１５０を適用するようにしてもよい。
【０４６２】
つまり、例えば、逆１次元変換部４７２や逆１次元変換部４８２は、１次元信号列X1に対して、図１０の表等を参照して説明したように、各変換タイプの逆１次元変換を行う。また、例えば、逆１次元変換部４７２や逆１次元変換部４８２は、図１２の表等を参照して説明したように、行列演算に用いるベース変換行列を導出する。
【０４６３】
このような構成とすることにより、逆１次元変換部４７２や逆１次元変換部４８２は、画像データが符号化されたビットストリームを復号して得られる係数データ（逆セカンダリ変換後の変換係数Coeff_IS）に対する逆プライマリ変換（における水平方向または垂直方向の逆１次元変換）において、第２の実施の形態、第４の実施の形態、または第５の実施の形態の場合と同様の効果を得ることができる。つまり、画像復号装置４００は、その逆１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができる。すなわち、画像復号装置４００は、その逆１次元変換をより容易に行うことができる。したがって、画像復号装置４００は、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【０４６４】
＜画像復号処理の流れ＞
次に、以上のような画像復号装置４００により実行される各処理の流れについて説明する。最初に、図３６のフローチャートを参照して、画像復号処理の流れの例を説明する。
【０４６５】
画像復号処理が開始されると、蓄積バッファ４１１は、ステップＳ４０１において、画像復号装置４００の外部から供給される符号化データ（ビットストリーム）を取得して保持する（蓄積する）。
【０４６６】
ステップＳ４０２において、復号部４１２は、その符号化データ（ビットストリーム）を復号し、量子化変換係数レベルlevelを得る。また、復号部４１２は、この復号により、符号化データ（ビットストリーム）から各種符号化パラメータをパースする（解析して取得する）。
【０４６７】
ステップＳ４０３において、逆量子化部４１３は、ステップＳ４０２の処理により得られた量子化変換係数レベルlevelに対して、符号化側で行われた量子化の逆処理である逆量子化を行い、変換係数Coeff_IQを得る。
【０４６８】
ステップＳ４０４において、逆直交変換部４１４は、ステップＳ４０３の処理により得られた変換係数Coeff_IQに対して、符号化側で行われた直交変換処理の逆処理である逆直交変換処理を行い、予測残差D'を得る。
【０４６９】
ステップＳ４０５において、予測部４１９は、ステップＳ４０２においてパースされた情報に基づいて、符号化側より指定される予測方法で予測処理を実行し、フレームメモリ４１８に記憶されている参照画像を参照する等して、予測画像Pを生成する。
【０４７０】
ステップＳ４０６において、演算部４１５は、ステップＳ４０４の処理により得られた予測残差D'と、ステップＳ４０５の処理により得られた予測画像Pとを加算し、局所復号画像Rlocalを導出する。
【０４７１】
ステップＳ４０７において、インループフィルタ部４１６は、ステップＳ４０６の処理により得られた局所復号画像Rlocalに対して、インループフィルタ処理を行う。
【０４７２】
ステップＳ４０８において、並べ替えバッファ４１７は、ステップＳ４０７の処理により得られたフィルタ処理された局所復号画像Rlocalを用いて復号画像Rを導出し、その復号画像R群の順序を復号順から再生順に並べ替える。再生順に並べ替えられた復号画像R群は、動画像として画像復号装置４００の外部に出力される。
【０４７３】
また、ステップＳ４０９において、フレームメモリ４１８は、ステップＳ４０６の処理により得られた局所復号画像Rlocal、および、ステップＳ４０７の処理により得られたフィルタ処理後の局所復号画像Rlocalの内、少なくとも一方を記憶する。
【０４７４】
ステップＳ４０９の処理が終了すると、画像復号処理が終了する。
【０４７５】
＜逆直交変換の処理の流れ＞
次に、図３６のステップＳ４０４において実行される逆直交変換処理の流れの例を、図３７のフローチャートを参照して説明する。逆直交変換処理が開始されると、スイッチ４５１は、ステップＳ４３１において、変換スキップフラグts_flagが2D_TS（２次元変換スキップのモード）（例えば１（真））である、または、変換量子化バイパスフラグtransquant_bypass_flagが１（真）である、か否かを判定する。変換スキップ識別子ts_idxが2D_TSである、または、変換量子化バイパスフラグが１（真）であると判定された場合、逆直交変換処理が終了し、処理は図３６に戻る。この場合、逆直交変換処理（逆プライマリ変換や逆セカンダリ変換）が省略され、変換係数Coeff_IQが予測残差D'とされる。
【０４７６】
また、ステップＳ４３１において、変換スキップ識別子ts_idxが2D_TSでない（２次元変換スキップ以外のモード）（例えば０（偽））であり、かつ、変換量子化バイパスフラグが０（偽）である、と判定された場合、処理はステップＳ４３２に進む。この場合、逆セカンダリ変換処理および逆プライマリ変換処理が行われる。
【０４７７】
ステップＳ４３２において、逆セカンダリ変換部４５２は、変換係数Coeff_IQに対して、セカンダリ変換識別子st_idxに基づいて逆セカンダリ変換処理を行い、変換係数Coeff_ISを導出し、出力する。
【０４７８】
ステップＳ４３３において、逆プライマリ変換部４５３は、変換係数Coeff_ISに対して逆プライマリ変換処理を行い、逆プライマリ変換後の変換係数Coeff_IP（予測残差D'）を導出する。
【０４７９】
ステップＳ４３３の処理が終了すると逆直交変換処理が終了し、処理は図３６に戻る。
【０４８０】
＜逆プライマリ変換処理の流れ＞
次に、図３７のステップＳ４３３において実行される逆プライマリ変換処理の流れの例を、図３８のフローチャートを参照して説明する。
【０４８１】
逆プライマリ変換処理が開始されると、逆プライマリ変換部４５３の逆プライマリ変換選択部４６１（図３３）は、ステップＳ４４１において、逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxV（または変換タイプTrTypeV）と、逆プライマリ水平変換の変換タイプ識別子TrTypeIdxH（または変換タイプTrTypeH）とを、それぞれ選択する。
【０４８２】
ステップＳ４４２において、逆プライマリ垂直変換部４６２は、ステップＳ４４１において得られた逆プライマリ垂直変換の変換タイプ識別子TrTypeIdxVに対応する逆プライマリ垂直変換処理を逆セカンダリ変換後の変換係数Coeff_ISに対して行い、逆プライマリ垂直変換後の変換係数Coeff_IPverを導出する。
【０４８３】
ステップＳ４４３において、逆プライマリ水平変換部４６３は、ステップＳ４４１において得られた逆プライマリ水平変換の変換タイプ識別子TrTypeIdxHに対応する逆プライマリ水平変換処理を逆プライマリ垂直変換後の変換係数Coeff_IPverに対して行い、逆プライマリ水平変換後の変換係数Coeff_IPhor（すなわち、逆プライマリ変換後の変換係数Coeff_IP（予測残差D'））を導出する。
【０４８４】
ステップＳ４４３の処理が終了すると、逆プライマリ変換処理が終了し、処理は図３７に戻る。
【０４８５】
＜逆プライマリ垂直変換処理の流れ＞
次に、図３８のステップＳ４４２において実行される逆プライマリ垂直変換処理の流れの例を、図３９のフローチャートを参照して説明する。
【０４８６】
逆プライマリ垂直変換処理が開始されると、逆プライマリ垂直変換部４６２の信号列抽出部４７１（図３４）は、ステップＳ４５１において、２次元データ列である入力係数データXin（逆セカンダリ変換後の変換係数Coeff_IS）を取得し、記憶する（保持する）。
【０４８７】
ステップＳ４５２において、信号列抽出部４７１は、例えば上述した式（３３）のように、保持している入力係数データXinの処理対象の列（j）を１次元信号列X1として抽出する。
【０４８８】
ステップＳ４５３において、逆１次元変換部４７２は、逆変換処理を実行し、変換タイプ識別子trTypeIdxVと変換サイズ（nTbS）に応じたベース変換行列Tbaseを用いて、１次元信号列X1に対する逆１次元変換を行う。
【０４８９】
ステップＳ４５４において、スケーリング部４７３は、例えば、以下の式（３８）のように、１次元信号列X2の各係数X2[i]をシフト量invShift1でスケーリングし、１次元信号列X3を導出する。
【０４９０】
【数３２】
2022002352.tif 000034
【０４９１】
ステップＳ４５５において、クリップ部４７４は、例えば、上述の式（３１）のように、１次元信号列X3の各係数X3[i]を、最小値minCoefValと最大値maxCoefValとの間にクリップし、１次元信号列X4を導出する。
【０４９２】
ステップＳ４５６において、２次元データ列生成部４７５は、１次元信号列X4を用いて２次元データ列Xoutを生成する。つまり、２次元データ列生成部４７５は、１次元信号列X4を保持（記憶）し、上述した式（３５）のように、所定の列数分の１次元信号列X4をまとめることにより、２次元データ列Xoutを生成する。
【０４９３】
ステップＳ４５７において、２次元データ列生成部４７５は、ステップＳ４５２乃至ステップＳ４５７の各処理を、全ての列に対して行ったか否かを判定する。すなわち、ステップＳ４５２乃至ステップＳ４５７の各処理は、ステップＳ４５１において保持された入力データXinの各列について行われる。２次元データ列生成部４７５は、その全ての列を処理したか否かを判定する。
【０４９４】
未処理の列が存在すると判定された場合、処理はステップＳ４５２に戻り、次の未処理の列を処理対象として、それ以降の処理を繰り返す。また、ステップＳ４５７において全ての列を処理したと判定された場合、プライマリ垂直変換処理が終了し、処理は図３８に戻る。
【０４９５】
＜逆プライマリ水平変換処理の流れ＞
次に、図３８のステップＳ４４３において実行される逆プライマリ水平変換処理の流れの例を、図４０のフローチャートを参照して説明する。
【０４９６】
逆プライマリ水平変換処理が開始されると、逆プライマリ水平変換部４６３の信号列抽出部４８１（図３５）は、ステップＳ４６１において、２次元データ列である入力係数データXin（逆プライマリ垂直変換後の変換係数Coeff_IPver）を取得し、記憶する（保持する）。
【０４９７】
ステップＳ４６２において、信号列抽出部４８１は、例えば上述した式（２９）のように、保持している入力係数データXinの処理対象の行（j）を１次元信号列X1として抽出する。
【０４９８】
ステップＳ４６３において、逆１次元変換部４８２は、逆変換処理を実行し、変換タイプ識別子trTypeIdxHと変換サイズ（nTbS）に応じたベース変換行列の転置行列Tbasetを用いて、１次元信号列X1に対する逆１次元変換を行う。
【０４９９】
ステップＳ４６４において、スケーリング部４８３は、例えば、以下の式（３９）のように、１次元信号列X2の各係数X2[i]をシフト量invShift2でスケーリングし、１次元信号列X3を導出する。
【０５００】
【数３３】
2022002352.tif 000035
【０５０１】
ステップＳ４６５において、クリップ部４８４は、例えば、上述の式（３１）のように、１次元信号列X3の各係数X3[i]を、最小値minCoefValと最大値maxCoefValとの間にクリップし、１次元信号列X4を導出する。
【０５０２】
ステップＳ４６６において、２次元データ列生成部４８５は、１次元信号列X4を用いて２次元データ列Xoutを生成する。つまり、２次元データ列生成部４８５は、上述した式（３２）のように、１次元信号列X4を保持（記憶）し、所定の列数分の１次元信号列X4をまとめることにより、２次元データ列Xoutを生成する。
【０５０３】
ステップＳ４６７において、２次元データ列生成部４８５は、ステップＳ４６２乃至ステップＳ４６７の各処理を、全ての行に対して行ったか否かを判定する。すなわち、ステップＳ４６２乃至ステップＳ４６７の各処理は、ステップＳ４６１において保持された入力データXinの各行について行われる。２次元データ列生成部４８５は、その全ての行を処理したか否かを判定する。
【０５０４】
未処理の行が存在すると判定された場合、処理はステップＳ４６２に戻り、次の未処理の行を処理対象として、それ以降の処理を繰り返す。また、ステップＳ４６７において全ての行を処理したと判定された場合、２次元データ列生成部４８５は、生成した２次元データ列Xout（予測残差D'、逆プライマリ水平変換後の変換係数Coeff_IPhor、または、逆プライマリ変換後の変換係数Coeff_IP）を逆プライマリ水平変換部４６３の外部に出力する（演算部４１５に供給する）。２次元データ列Xoutが出力されると、逆プライマリ水平変換処理が終了し、処理は図３８に戻る。
【０５０５】
＜本技術の適用＞
以上のような逆プライマリ垂直変換処理（図３９）のステップＳ４５３において、例えば、逆１次元変換部４７２は、第２の実施の形態の場合（図１１）と同様の流れで逆変換処理を実行するようにしてもよい。また、逆１次元変換部４７２は、第４の実施の形態の場合（図２０）と同様の流れで逆変換処理を実行するようにしてもよい。さらに、逆１次元変換部４７２は、第５の実施の形態の場合と同様の流れで逆変換処理を実行するようにしてもよい。
【０５０６】
また、以上のような逆プライマリ水平変換処理（図４０）のステップＳ４６３において、例えば、逆１次元変換部４８２は、第２の実施の形態の場合（図１１）と同様の流れで逆変換処理を実行するようにしてもよい。また、逆１次元変換部４８２は、第４の実施の形態の場合（図２０）と同様の流れで逆変換処理を実行するようにしてもよい。さらに、逆１次元変換部４８２は、第５の実施の形態の場合と同様の流れで逆変換処理を実行するようにしてもよい。
【０５０７】
このように各処理を実行することにより、逆１次元変換部４７２や逆１次元変換部４８２は、画像データが符号化されたビットストリームを復号して得られる係数データに対する逆プライマリ変換（における水平方向または垂直方向の逆１次元変換）において、第２の実施の形態や第４の実施の形態の場合と同様の効果を得ることができる。つまり、画像復号装置４００は、その逆１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができる。すなわち、画像復号装置４００は、その逆１次元変換をより容易に行うことができる。したがって、画像復号装置４００は、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【０５０８】
なお、上述したように、画像符号化装置３００も、逆直交変換部３１８を有し、画像復号装置４００の逆直交変換部４１４と同様の構成を有し、同様の処理を行う。つまり、その逆直交変換部３１８も、逆量子化後の変換係数Coeff_IQに対する逆プライマリ変換（における水平方向または垂直方向の逆１次元変換）において、第２の実施の形態、第４の実施の形態、または第５の実施の形態の場合と同様の効果を得ることができる。つまり、画像符号化装置３００は、その逆１次元変換の構成の複雑化を抑制する（構成をより簡易化する）ことができる。すなわち、画像符号化装置３００は、その逆１次元変換をより容易に行うことができる。したがって、画像符号化装置３００は、回路規模や処理の負荷の増大を抑制し、実装コストの増大を抑制することができる。
【０５０９】
＜１１．付記＞
＜コンピュータ＞
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
【０５１０】
図４１は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０５１１】
図４１に示されるコンピュータ８００において、CPU（Central Processing Unit）８０１、ROM（Read Only Memory）８０２、RAM（Random Access Memory）８０３は、バス８０４を介して相互に接続されている。
【０５１２】
バス８０４にはまた、入出力インタフェース８１０も接続されている。入出力インタフェース８１０には、入力部８１１、出力部８１２、記憶部８１３、通信部８１４、およびドライブ８１５が接続されている。
【０５１３】
入力部８１１は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部８１２は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部８１３は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部８１４は、例えば、ネットワークインタフェースよりなる。ドライブ８１５は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア８２１を駆動する。
【０５１４】
以上のように構成されるコンピュータでは、CPU８０１が、例えば、記憶部８１３に記憶されているプログラムを、入出力インタフェース８１０およびバス８０４を介して、RAM８０３にロードして実行することにより、上述した一連の処理が行われる。RAM８０３にはまた、CPU８０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０５１５】
コンピュータ（CPU８０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア８２１に記録して適用することができる。その場合、プログラムは、リムーバブルメディア８２１をドライブ８１５に装着することにより、入出力インタフェース８１０を介して、記憶部８１３にインストールすることができる。
【０５１６】
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部８１４で受信し、記憶部８１３にインストールすることができる。
【０５１７】
その他、このプログラムは、ROM８０２や記憶部８１３に、あらかじめインストールしておくこともできる。
【０５１８】
＜情報・処理の単位＞
以上において説明した各種情報が設定されるデータ単位や、各種処理が対象とするデータ単位は、それぞれ任意であり上述した例に限定されない。例えば、これらの情報や処理が、それぞれ、TU（Transform Unit）、TB(Transform Block)、PU（Prediction Unit）、PB(Prediction Block)、CU（Coding Unit）、LCU（Largest Coding Unit）、サブブロック、ブロック、タイル、スライス、ピクチャ、シーケンス、またはコンポーネント毎に設定されるようにしてもよいし、それらのデータ単位のデータを対象とするようにしてもよい。もちろん、このデータ単位は、情報や処理毎に設定され得るものであり、全ての情報や処理のデータ単位が統一されている必要はない。なお、これらの情報の格納場所は任意であり、上述したデータ単位のヘッダやパラメータセット等に格納されるようにしてもよい。また、複数個所に格納されるようにしてもよい。
【０５１９】
＜制御情報＞
以上の各実施の形態において説明した本技術に関する制御情報を符号化側から復号側に伝送するようにしてもよい。例えば、上述した本技術を適用することを許可（または禁止）するか否かを制御する制御情報（例えばenabled_flag）を伝送するようにしてもよい。また、例えば、上述した本技術を適用する対象（または適用しない対象）を示す制御情報を伝送するようにしてもよい。例えば、本技術を適用する（または、適用を許可若しくは禁止する）ブロックサイズ（上限若しくは下限、またはその両方）、フレーム、コンポーネント、またはレイヤ等を指定する制御情報を伝送するようにしてもよい。
【０５２０】
＜本技術の適用対象＞
本技術は、任意の画像符号化・復号方式に適用することができる。つまり、上述した本技術と矛盾しない限り、変換（逆変換）、量子化（逆量子化）、符号化（復号）、予測等、画像符号化・復号に関する各種処理の仕様は任意であり、上述した例に限定されない。また、上述した本技術と矛盾しない限り、これらの処理の内の一部を省略してもよい。
【０５２１】
また本技術は、複数の視点（ビュー（view））の画像を含む多視点画像の符号化・復号を行う多視点画像符号化・復号システムに適用することができる。その場合、各視点（ビュー（view））の符号化・復号において、本技術を適用するようにすればよい。
【０５２２】
さらに本技術は、所定のパラメータについてスケーラビリティ（scalability）機能を有するように複数レイヤ化（階層化）された階層画像の符号化・復号を行う階層画像符号化（スケーラブル符号化）・復号システムに適用することができる。その場合、各階層（レイヤ）の符号化・復号において、本技術を適用するようにすればよい。
【０５２３】
上述した実施の形態に係る画像処理装置、画像符号化装置、および画像復号装置は、例えば、衛星放送、ケーブルＴＶなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機（例えばテレビジョン受像機や携帯電話機）、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置（例えばハードディスクレコーダやカメラ）などの、様々な電子機器に応用され得る。
【０５２４】
また、本技術は、任意の装置またはシステムを構成する装置に搭載するあらゆる構成、例えば、システムLSI（Large Scale Integration）等としてのプロセッサ（例えばビデオプロセッサ）、複数のプロセッサ等を用いるモジュール（例えばビデオモジュール）、複数のモジュール等を用いるユニット（例えばビデオユニット）、ユニットにさらにその他の機能を付加したセット（例えばビデオセット）等（すなわち、装置の一部の構成）として実施することもできる。
【０５２５】
さらに、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、コンピュータ、AV（Audio Visual）機器、携帯型情報処理端末、IoT（Internet of Things）デバイス等の任意の端末に対して、画像（動画像）に関するサービスを提供するクラウドサービスに適用することもできる。
【０５２６】
なお、本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
【０５２７】
例えば、本技術は、観賞用コンテンツ等の提供の用に供されるシステムやデバイスに適用することができる。また、例えば、本技術は、交通状況の監理や自動運転制御等、交通の用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、セキュリティの用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、機械等の自動制御の用に供されるシステムやデバイスに適用することができる。さらに、例えば、本技術は、農業や畜産業の用に供されるシステムやデバイスにも適用することができる。また、本技術は、例えば火山、森林、海洋等の自然の状態や野生生物等を監視するシステムやデバイスにも適用することができる。さらに、例えば、本技術は、スポーツの用に供されるシステムやデバイスにも適用することができる。
【０５２８】
＜その他＞
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の２状態を識別する際に用いる情報だけでなく、３以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の２値であってもよいし、３値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報（フラグも含む）は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
【０５２９】
また、符号化データ（ビットストリーム）に関する各種情報（メタデータ等）は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る（リンクさせ得る）ようにすることを意味する。つまり、互いに関連付けられたデータは、１つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の記録媒体（または同一の記録媒体の別の記録エリア）に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、１フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
【０５３０】
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを１つのデータにまとめるといった、複数の物を１つにまとめることを意味し、上述の「関連付ける」の１つの方法を意味する。
【０５３１】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０５３２】
また、例えば、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。
【０５３３】
なお、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０５３４】
また、例えば、本技術は、１つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０５３５】
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能（機能ブロック等）を有し、必要な情報を得ることができるようにすればよい。
【０５３６】
また、例えば、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、１つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を１つのステップとしてまとめて実行することもできる。
【０５３７】
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
【０５３８】
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
【符号の説明】
【０５３９】
１００  変換装置，  １０１  制御部，  １０２  符号反転部,  １０３  行列演算部，  １０４  フリップ部，  １１１  符号反転フラグ設定部，  １１２  ベース変換行列選択部，  １１３  フリップフラグ設定部，  １２０  ベース変換行列LUT，  １５０  逆変換装置，  １５１  制御部，  １５２  フリップ部,  １５３  行列演算部，  １５４  符号反転部，  １６１  フリップフラグ設定部，  １６２  ベース変換行列選択部，  １６３  符号反転フラグ設定部，  １７０  ベース変換行列LUT，  ２２０  ベース変換行列導出部，  ２３１  サンプリング部，  ２３２  導出元変換行列LUT，  ２４１  サンプリングパラメータ導出部，  ２４２  部分行列抽出部，  ２７０  ベース変換行列導出部，  ３００  画像符号化装置，  ３０１  制御部,  ３１３  直交変換部，  ３１５  符号化部，  ３１８  逆直交変換部，  ３５２  プライマリ変換部，  ３５３  セカンダリ変換部，  ３６２  プライマリ水平変換部，  ３６３  プライマリ垂直変換部，  ３７１  信号列抽出部，  ３７２  １次元変換部，  ３７３  スケーリング部，  ３７４  クリップ部，  ３７５  ２次元データ列生成部，  ３８１  信号列抽出部，  ３８２  １次元変換部，  ３８３  スケーリング部，  ３８４  クリップ部，  ３８５  ２次元データ列生成部，  ４００  画像復号装置，  ４１２  復号部，  ４１４  逆直交変換部，  ４５２  逆セカンダリ変換部，  ４５３  逆プライマリ変換部，  ４６１  逆プライマリ変換選択部，  ４６２  逆プライマリ垂直変換部，  ４６３  逆プライマリ水平変換部，  ４７１  信号列抽出部，  ４７２  逆１次元変換部，  ４７３  スケーリング部，  ４７４  クリップ部，  ４７５  ２次元データ列生成部，  ４８１  信号列抽出部，  ４８２  逆１次元変換部，  ４８３  スケーリング部，  ４８４  クリップ部，  ４８５  ２次元データ列生成部
【図１】
2022002352.tif 000036
【図２】
2022002352.tif 000037
【図３】
2022002352.tif 000038
【図４】
2022002352.tif 000039
【図５】
2022002352.tif 000040
【図６】
2022002352.tif 000041
【図７】
2022002352.tif 000042
【図８】
2022002352.tif 000043
【図９】
2022002352.tif 000044
【図１０】
2022002352.tif 000045
【図１１】
2022002352.tif 000046
【図１２】
2022002352.tif 000047
【図１３】
2022002352.tif 000048
【図１４】
2022002352.tif 000049
【図１５】
2022002352.tif 000050
【図１６】
2022002352.tif 000051
【図１７】
2022002352.tif 000052
【図１８】
2022002352.tif 000053
【図１９】
2022002352.tif 000054
【図２０】
2022002352.tif 000055
【図２１】
2022002352.tif 000056
【図２２】
2022002352.tif 000057
【図２３】
2022002352.tif 000058
【図２４】
2022002352.tif 000059
【図２５】
2022002352.tif 000060
【図２６】
2022002352.tif 000061
【図２７】
2022002352.tif 000062
【図２８】
2022002352.tif 000063
【図２９】
2022002352.tif 000064
【図３０】
2022002352.tif 000065
【図３１】
2022002352.tif 000066
【図３２】
2022002352.tif 000067
【図３３】
2022002352.tif 000068
【図３４】
2022002352.tif 000069
【図３５】
2022002352.tif 000070
【図３６】
2022002352.tif 000071
【図３７】
2022002352.tif 000072
【図３８】
2022002352.tif 000073
【図３９】
2022002352.tif 000074
【図４０】
2022002352.tif 000075
【図４１】
2022002352.tif 000076