IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-24
(45)【発行日】2024-10-02
(54)【発明の名称】画像処理装置および方法
(51)【国際特許分類】
   H04N 19/115 20140101AFI20240925BHJP
   H04N 19/136 20140101ALI20240925BHJP
   H04N 19/18 20140101ALI20240925BHJP
   H04N 19/70 20140101ALI20240925BHJP
【FI】
H04N19/115
H04N19/136
H04N19/18
H04N19/70
【請求項の数】 28
(21)【出願番号】P 2023218038
(22)【出願日】2023-12-25
(62)【分割の表示】P 2020571259の分割
【原出願日】2020-02-06
(65)【公開番号】P2024023856
(43)【公開日】2024-02-21
【審査請求日】2023-12-26
(31)【優先権主張番号】62/802,477
(32)【優先日】2019-02-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】100121131
【弁理士】
【氏名又は名称】西川 孝
(74)【代理人】
【氏名又は名称】稲本 義雄
(74)【代理人】
【識別番号】100168686
【弁理士】
【氏名又は名称】三浦 勇介
(72)【発明者】
【氏名】大和 敦
(72)【発明者】
【氏名】筑波 健史
【審査官】岩井 健二
(56)【参考文献】
【文献】Tzu-Der Chuang, et al.,CE7-related: Constraints on context-coded bins for coefficient coding,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L0145-v4,12th Meeting: Macao, CN,2018年10月,pp.1-19
【文献】Tzu-Der Chuang, et al.,CE7 (Tests 7.1, 7.2, 7.3, and 7.4): Constraints on context-coded bins for coefficient coding,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-M0173-v1,13th Meeting: Marrakech, MA,2019年01月,pp.1-12
【文献】Tzu-Der Chuang, et al.,CE7-related: TB-level constraints on context-coded bins for coefficient coding,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-N0091-v2,14th Meeting: Geneva, CH,2019年03月,pp.1-5
【文献】Muhammed Coban, and Marta Karczewicz,CE7-related: TU level limits on context-coded bins for coefficient coding,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-N0106,14th Meeting: Geneva, CH,2019年03月,pp.1-3
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、画像データから導出された係数データを用いてシンタックスエレメント値を導出するシンタックスエレメント値導出部と、
導出された前記シンタックスエレメント値を符号化して符号化データを生成する符号化部と
を備える画像処理装置。
【請求項2】
前記シンタックスエレメント値導出部は、前記処理対象ブロックのサイズに基づいて、前記第1の上限値を設定する
請求項1に記載の画像処理装置。
【請求項3】
前記シンタックスエレメント値導出部は、さらに、前記サブブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第2の上限値に基づいて、前記第1の上限値を設定する
請求項2に記載の画像処理装置。
【請求項4】
前記第2の上限値は28である
請求項3に記載の画像処理装置。
【請求項5】
前記処理対象ブロックは、TU(Transform Unit)である
請求項1に記載の画像処理装置。
【請求項6】
前記処理対象ブロックは、CU(Coding Unit)である
請求項1に記載の画像処理装置。
【請求項7】
前記シンタックスエレメント値導出部は、前記処理対象ブロックの前記サブブロックのそれぞれを順次処理対象として選択し、処理対象として選択した前記サブブロックについての前記シンタックスエレメント値を導出する
請求項1に記載の画像処理装置。
【請求項8】
複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、画像データから導出された係数データを用いてシンタックスエレメント値を導出し、
導出された前記シンタックスエレメント値を符号化して符号化データを生成する
画像処理方法。
【請求項9】
前記処理対象ブロックのサイズに基づいて、前記第1の上限値を設定する
請求項8に記載の画像処理方法。
【請求項10】
さらに、前記サブブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第2の上限値に基づいて、前記第1の上限値を設定する
請求項9に記載の画像処理方法。
【請求項11】
前記第2の上限値は28である
請求項10に記載の画像処理方法。
【請求項12】
前記処理対象ブロックは、TU(Transform Unit)である
請求項8に記載の画像処理方法。
【請求項13】
前記処理対象ブロックは、CU(Coding Unit)である
請求項8に記載の画像処理方法。
【請求項14】
前記処理対象ブロックの前記サブブロックのそれぞれを順次処理対象として選択し、処理対象として選択した前記サブブロックについての前記シンタックスエレメント値を導出する
請求項8に記載の画像処理方法。
【請求項15】
符号化データを復号してシンタックスエレメント値を生成する復号部と、
複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、生成された前記シンタックスエレメント値をパースし、画像データに対応する係数データを導出する係数データ導出部と
を備える画像処理装置。
【請求項16】
前記係数データ導出部は、前記処理対象ブロックのサイズに基づいて、前記第1の上限値を設定する
請求項15に記載の画像処理装置。
【請求項17】
前記係数データ導出部は、さらに、前記サブブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第2の上限値に基づいて、前記第1の上限値を設定する
請求項16に記載の画像処理装置。
【請求項18】
前記第2の上限値は28である
請求項17に記載の画像処理装置。
【請求項19】
前記処理対象ブロックは、TU(Transform Unit)である
請求項15に記載の画像処理装置。
【請求項20】
前記処理対象ブロックは、CU(Coding Unit)である
請求項15に記載の画像処理装置。
【請求項21】
前記係数データ導出部は、前記処理対象ブロックの前記サブブロックのそれぞれを順次処理対象として選択し、処理対象として選択した前記サブブロックについての前記係数データを導出する
請求項15に記載の画像処理装置。
【請求項22】
符号化データを復号してシンタックスエレメント値を生成し、
複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、生成された前記シンタックスエレメント値をパースし、画像データに対応する係数データを導出する
画像処理方法。
【請求項23】
前記処理対象ブロックのサイズに基づいて、前記第1の上限値を設定する
請求項22に記載の画像処理方法。
【請求項24】
さらに、前記サブブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第2の上限値に基づいて、前記第1の上限値を設定する
請求項23に記載の画像処理方法。
【請求項25】
前記第2の上限値は28である
請求項24に記載の画像処理方法。
【請求項26】
前記処理対象ブロックは、TU(Transform Unit)である
請求項22に記載の画像処理方法。
【請求項27】
前記処理対象ブロックは、CU(Coding Unit)である
請求項22に記載の画像処理方法。
【請求項28】
前記処理対象ブロックの前記サブブロックのそれぞれを順次処理対象として選択し、処理対象として選択した前記サブブロックについての前記係数データを導出する
請求項22に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、画像処理装置および方法に関し、特に、符号化効率の低減を抑制することができるようにした画像処理装置および方法に関する。
【背景技術】
【0002】
従来、画像符号化のCABACにおいて、シンタックスエレメント値表現する際のcontext-coded bin数が多い程、符号化効率が向上し、画質の低減を抑制することができる。しかしながら、context-coded bin数が多い程、処理量が増大するため、サブブロック(sub block)単位でcontext-coded bin数に制約をかける方法が提案された(例えば、非特許文献1)。
【先行技術文献】
【非特許文献】
【0003】
【文献】T.-D. Chuang, S.-T. Hsiang, Z.-Y. Lin, C.-Y. Chen, Y.-W. Huang, S.-M. Lei (MediaTek), "CE7(Tests 7.1, 7.2, 7.3, and 7.4): Constraints on context-coded bins for coefficient coding", JVET-M0173, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan 2019
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、この方法の場合、一律にcontext-coded bin数が制約されるので、画像の特徴に合わせて局所的に係数データを増減させることができず、不要に符号化効率を低減させるおそれがあった。
【0005】
本開示は、このような状況に鑑みてなされたものであり、符号化効率の低減を抑制することができるようにするものである。
【課題を解決するための手段】
【0006】
本技術の一側面の画像処理装置は、複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、画像データから導出された係数データを用いてシンタックスエレメント値を導出するシンタックスエレメント値導出部と、導出された前記シンタックスエレメント値を符号化して符号化データを生成する符号化部とを備える画像処理装置である。
【0007】
本技術の一側面の画像処理方法は、複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、画像データから導出された係数データを用いてシンタックスエレメント値を導出し、導出された前記シンタックスエレメント値を符号化して符号化データを生成する画像処理方法である。
【0008】
本技術の他の側面の画像処理装置は、符号化データを復号してシンタックスエレメント値を生成する復号部と、複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、生成された前記シンタックスエレメント値をパースし、画像データに対応する係数データを導出する係数データ導出部とを備える画像処理装置である。
【0009】
本技術の他の側面の画像処理方法は、符号化データを復号してシンタックスエレメント値を生成し、複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値を設定し、処理対象の前記サブブロックについて、前記処理対象ブロックに割り当てられた前記コンテキスト符号化ビン数が前記第1の上限値を超えないように、生成された前記シンタックスエレメント値をパースし、画像データに対応する係数データを導出する画像処理方法である。
【0010】
本技術の一側面の画像処理装置および方法においては、複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値が設定され、処理対象のサブブロックについて、処理対象ブロックに割り当てられたコンテキスト符号化ビン数が第1の上限値を超えないように、画像データから導出された係数データを用いてシンタックスエレメント値が導出され、その導出されたシンタックスエレメント値が符号化されて符号化データが生成される。
【0011】
本技術の他の側面の画像処理装置および方法においては、符号化データが復号されてシンタックスエレメント値が生成され、複数のサブブロックを含む処理対象ブロックに割り当て可能なコンテキスト符号化ビン数の上限値である第1の上限値が設定され、処理対象のサブブロックについて、処理対象ブロックに割り当てられたコンテキスト符号化ビン数が第1の上限値を超えないように、その生成されたシンタックスエレメント値がパースされ、画像データに対応する係数データが導出される。
【図面の簡単な説明】
【0012】
図1】サブブロックについて説明する図である。
図2】方法#1について説明する図である。
図3】方法#1の適用例について説明する図である。
図4】符号化装置の主な構成例を示すブロック図である。
図5】CABACの主な構成例を示すブロック図である。
図6】符号化処理の流れの例を説明するフローチャートである。
図7】シンタックスエレメント値導出処理の流れの例を説明するフローチャートである。
図8】シンタックスの例を示す図である。
図9】シンタックスの例を示す、図8に続く図である。
図10】シンタックスの例を示す、図9に続く図である。
図11】シンタックスの例を示す、図10に続く図である。
図12】CABAC処理の流れの例を説明するフローチャートである。
図13】復号装置の主な構成例を示すブロック図である。
図14】CABACの主な構成例を示すブロック図である。
図15】復号処理の流れの例を説明するフローチャートである。
図16】CABAC処理の流れの例を説明するフローチャートである。
図17】係数データ導出処理の流れの例を説明するフローチャートである。
図18】方法#2について説明する図である。
図19】方法#2の適用例について説明する図である。
図20】シンタックスエレメント値導出処理の流れの例を説明するフローチャートである。
図21】シンタックスの例を示す図である。
図22】シンタックスの例を示す、図21に続く図である。
図23】シンタックスの例を示す、図22に続く図である。
図24】シンタックスの例を示す、図23に続く図である。
図25】係数データ導出処理の流れの例を説明するフローチャートである。
図26】方法#3について説明する図である。
図27】方法#3の適用例について説明する図である。
図28】シンタックスエレメント値導出処理の流れの例を説明するフローチャートである。
図29】シンタックスの例を示す図である。
図30】シンタックスの例を示す、図29に続く図である。
図31】シンタックスの例を示す、図30に続く図である。
図32】シンタックスの例を示す、図31に続く図である。
図33】係数データ導出処理の流れの例を説明するフローチャートである。
図34】方法#4について説明する図である。
図35】方法#4の適用例について説明する図である。
図36】シンタックスエレメント値導出処理の流れの例を説明するフローチャートである。
図37】シンタックスエレメント値導出処理の流れの例を説明する、図36に続くフローチャートである。
図38】シンタックスの例を示す図である。
図39】シンタックスの例を示す、図38に続く図である。
図40】シンタックスの例を示す、図39に続く図である。
図41】シンタックスの例を示す、図40に続く図である。
図42】係数データ導出処理の流れの例を説明するフローチャートである。
図43】係数データ導出処理の流れの例を説明する、図42に続くフローチャートである。
図44】方法#5について説明する図である。
図45】方法#5の適用例について説明する図である。
図46】方法#6について説明する図である。
図47】方法#6の適用例について説明する図である。
図48】方法#7について説明する図である。
図49】方法#7の適用例について説明する図である。
図50】シンタックスエレメント値導出処理の流れの例を説明するフローチャートである。
図51】シンタックスの例を示す図である。
図52】シンタックスの例を示す、図51に続く図である。
図53】シンタックスの例を示す、図52に続く図である。
図54】係数データ導出処理の流れの例を説明するフローチャートである。
図55】方法#8について説明する図である。
図56】方法#8の適用例について説明する図である。
図57】シンタックスエレメント値導出処理の流れの例を説明するフローチャートである。
図58】係数データ導出処理の流れの例を説明するフローチャートである。
図59】画像符号化装置の主な構成例を示すブロック図である。
図60】画像符号化処理の流れの例を示すフローチャートである。
図61】画像復号装置の主な構成例を示すブロック図である。
図62】画像復号処理の流れの例を示すフローチャートである。
図63】コンピュータの主な構成例を示すブロック図である。
【発明を実施するための形態】
【0013】
以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.CABAC
2.第1の実施の形態(zero subblockのbin数をnonzero subblockにまわす)
3.第2の実施の形態(nonzero subblock内で最大binをシェアする)
4.第3の実施の形態(nonzero subblock内の余剰binを他のnonzero subblockで使用する)
5.第4の実施の形態(#1、#2、#3の複合)
6.第5の実施の形態(#1の応用)
7.第6の実施の形態(コンテキスト符号化bin数を管理する単位をTUより大きいサイズに拡張する(CU,VPDU,CTU等))
8.第7の実施の形態(syntax構造でのコンテキスト符号化bin数の最大値の上限をなくす)
9.第8の実施の形態(zero subblockの次のnonzero subblockのbin数を最大化する)
10.第9の実施の形態(画像符号化装置・画像復号装置への適用)
11.付記
【0014】
<1.CABAC>
<技術内容・技術用語をサポートする文献等>
本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献等に記載されている内容や以下の非特許文献において参照されている他の文献の内容等も含まれる。
【0015】
非特許文献1:(上述)
非特許文献2:Recommendation ITU-T H.264 (04/2017) "Advanced video coding for generic audiovisual services", April 2017
非特許文献3:Recommendation ITU-T H.265 (12/2016) "High efficiency video coding", December 2016
非特許文献4:J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce,"Algorithm Description of Joint Exploration Test Model (JEM7)", JVET-G1001, 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
非特許文献5:B. Bross, J. Chen, S. Liu , "Versatile Video Coding (Draft 3), " JVET-L1001, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Macau, CN, 3-12 Oct. 2018
非特許文献6:J. J. Chen, Y. Ye, S. Kim,"Algorithm description for Versatile Video Coding and Test Model 3 (VTM 3)", JVET-L1002, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Macau, CN, 3-12 Oct. 2018
非特許文献7:J. Boyce (Intel), Y. Ye (InterDigital), Y.-W. Huang (Mediatek), M. Karczewicz (Qualcomm), E. Francois (Technicolor), W. Husak (Dolby), J. Ridge (Nokia), A. Abbas (GoPro),"Two tier test model", JVET- J0093 , Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018
非特許文献8:S. Yoo, J. Choi, J. Heo, J. Choi, L. Li, J. Lim, S. Kim (LGE),"Non-CE7 : Residual rearrangement for transform skipped blocks", JVET-M0278, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan. 2019
非特許文献9:B. Bross, T. Nguyen, P. Keydel, H. Schwarz, D. Marpe, T. Wiegand (HHI), "Non-CE8: Unified Transform Type Signalling and Residual Coding for Transform Skip", JVET-M0464, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan. 2019
非特許文献10:Y. Zhao, H. Gao, H. Yang, J. Chen (Huawei), "CE6: Sub-block transform for inter blocks (Test 6.4.1)", JVET-M0140, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan. 2019
非特許文献11:S. De-Luxan-Hernandez, V. George, J. Ma, T. Nguyen, H. Schwarz, D. Marpe, T. Wiegand (HHI), "CE3: Intra Sub-Partitions Coding Mode (Tests 1.1.1 and 1.1.2)", JVET-M0102, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan. 2019
非特許文献12:B. Bross, J. Chen, S. Liu , "Versatile Video Coding (Draft 4), " JVET-M1001, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Macau, CN, 3-12 Oct. 2018
【0016】
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、上述の非特許文献に記載されているQuad-Tree Block Structure、QTBT(Quad Tree Plus Binary Tree) Block Structureが実施例において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。また、例えば、パース(Parsing)、シンタックス(Syntax)、セマンティクス(Semantics)等の技術用語についても同様に、実施例において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。
【0017】
また、本明細書において、画像(ピクチャ)の部分領域や処理単位として説明に用いる「ブロック」(処理部を示すブロックではない)は、特に言及しない限り、ピクチャ内の任意の部分領域を示し、その大きさ、形状、および特性等は限定されない。例えば、「ブロック」には、上述の非特許文献に記載されている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)、変換ブロック、サブブロック、マクロブロック、タイル、またはスライス等、任意の部分領域(処理単位)が含まれるものとする。
【0018】
また、このようなブロックのサイズを指定するに当たって、直接的にブロックサイズを指定するだけでなく、間接的にブロックサイズを指定するようにしてもよい。例えばサイズを識別する識別情報を用いてブロックサイズを指定するようにしてもよい。また、例えば、基準となるブロック(例えばLCUやSCU等)のサイズとの比または差分によってブロックサイズを指定するようにしてもよい。例えば、シンタックス要素等としてブロックサイズを指定する情報を伝送する場合に、その情報として、上述のような間接的にサイズを指定する情報を用いるようにしてもよい。このようにすることにより、その情報の情報量を低減させることができ、符号化効率を向上させることができる場合もある。また、このブロックサイズの指定には、ブロックサイズの範囲の指定(例えば、許容されるブロックサイズの範囲の指定等)も含む。
【0019】
また、本明細書において、符号化とは、画像をビットストリームに変換する全体の処理だけではなく、一部の処理も含む。例えば、予測処理、直交変換、量子化、算術符号化等を包括した処理を含むだけではなく、量子化と算術符号化とを総称した処理、予測処理と量子化と算術符号化とを包括した処理、などを含む。同様に、復号とは、ビットストリームを画像に変換する全体の処理だけではなく、一部の処理も含む。例えば、逆算術復号、逆量子化、逆直交変換、予測処理等を包括した処理を含むだけではなく、逆算術復号と逆量子化とを包括した処理、逆算術復号と逆量子化と予測処理とを包括した処理、などを含む。
【0020】
<コンテキスト符号化bin数>
HEVC(High Efficiency Video Coding)等の画像符号化に用いられるCABAC(Context-based Adaptive Binary Arithmetic Code)は、画像データから導出される係数データを表現するシンタックスエレメント値を所定の方法により2値化(Binarize)し、2値化ビット列のビット毎に出現頻度モデル(コンテキスト)を切り替えて算術符号化する符号化方法である。係数データは、例えば、係数の符号を示すsig_flag、係数の絶対値が1であるか否かを示すgt1_flag、係数が奇数であるか偶数であるかを示すpar_flag、および、係数の絶対値が2であるか否かを示すgt2_flag等のシンタックス要素で表現される。
【0021】
一般的に、シンタックスエレメント値を表現する際のコンテキスト符号化bin数(context-coded bin数)が多い程、符号化効率が向上し、画質の低減を抑制することができる。ただし、コンテキスト符号化bin数が多い程、処理量が増大する。そこで、例えば非特許文献1において、サブブロック(sub block)単位でコンテキスト符号化bin数に制約をかける方法が提案された。
【0022】
しかしながら、この方法の場合、一律にコンテキスト符号化bin数が制約されるので、画像の特徴に合わせて局所的に係数データを増減させることができず、不要に符号化効率を低減させるおそれがあった。換言するに、復号画像の画質を低減させるおそれがあった。
【0023】
<コンテキスト符号化bin数の制約の可変化>
そこで、各サブブロックのコンテキスト符号化bin数の制約を可変とする。このようにすることにより、より画像の特徴に合わせて局所的に係数データを増減させることができるので、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0024】
その際、例えば、ブロック(ピクチャ、スライス、CTU、VPDU(Virtual pipeline data Unit)、CU、AU(Access Unit)、またはTU等)単位のbin数を、各サブブロックに固定のコンテキスト符号化bin数がある場合と同様としてもよい。このようにすることにより、処理量の増大を抑制しながら符号化効率の低減を抑制することができる。
【0025】
例えば、ブロック内の非ゼロサブブロック同士でコンテキスト符号化bin数を分配して、各サブブロックに割り当てられるコンテキスト符号化bin数の上限値を設定してもよい。そして処理対象サブブロックについて、コンテキスト符号化bin数がその上限値を超えないようにしながら、画像データに対応する係数データからシンタックスエレメント値を導出してもよい。
【0026】
また、例えば、処理対象サブブロックについて、コンテキスト符号化bin数がその上限値を超えないようにしながら、シンタックスエレメント値をパースして画像データに対応する係数データを導出してもよい。
【0027】
さらに、例えば、ブロック内のゼロサブブロックに割り当てられるbin数を非ゼロサブブロックに分配して、各サブブロックに割り当てられるコンテキスト符号化bin数の上限値を設定してもよい。そして処理対象サブブロックについて、コンテキスト符号化bin数がその上限値を超えないようにしながら、画像データに対応する係数データからシンタックスエレメント値を導出してもよい。
【0028】
また、例えば、処理対象サブブロックについて、コンテキスト符号化bin数がその上限値を超えないようにしながら、シンタックスエレメント値をパースして画像データに対応する係数データを導出してもよい。
【0029】
<ブロック>
例えば、図1のAに示されるようなブロック10を処理対象ブロックとする。ブロック10は、例えば、8x8画素(pixel)のTUであり、4つのサブブロック(subblock)(サブブロック11-1、サブブロック11-2、サブブロック11-3、およびサブブロック11-4)により構成される。以下において、各サブブロック(subblock)を互いに区別して説明する必要がない場合、サブブロック11と称する。つまり、図1のAの例において、ブロック10は、2x2のサブブロック11により構成される。したがって、各サブブロック11は、4x4画素により構成される。
【0030】
図1のAにおいて、各サブブロック11内の数値は、そのサブブロック11において発生するコンテキスト符号化bin数を示す。例えば、1つのサブブロック11当たりのコンテキスト符号化bin数が30binの制約が設けられると、各サブブロック11において発生するコンテキスト符号化bin数は、30bin以下に制限される。
【0031】
なお、各サブブロック11の処理順は、図1のBに示されるようにモートンコード順(Z階数曲線)とする。
【0032】
<2.第1の実施の形態>
<方法#1>
例えば、図2の表の一番上の段に示されるように、ゼロサブブロック(zero subblock)のコンテキスト符号化bin数を非ゼロサブブロック(nonzero subblock)に回すようにしてもよい。
【0033】
ゼロサブブロック(zero subblock)は、係数が全てゼロ(0)のサブブロックである。また、非ゼロサブブロック(nonzero subblock)は、少なくとも1つはゼロでない係数が存在するサブブロックである。つまり、非特許文献1に記載の方法のように各サブブロックに対して一律にコンテキスト符号化bin数の上限値を設定する場合にゼロサブブロックに割り当てられるコンテキスト符号化bin数を、非ゼロサブブロックに割り当てるようにする。
【0034】
例えば、図2に示される表の上から2段目に示されるように、サブブロック係数フラグ(coded_sub_block_flag)を既存のループの外に出し、独立させる。
【0035】
サブブロック係数フラグは、そのサブブロックに非ゼロ係数が含まれるか否かを示すフラグである。例えばcoded_sub_block_flag=1の場合、そのフラグに対応するサブブロックが非ゼロサブブロックであることを示し、coded_sub_block_flag=0の場合、そのフラグに対応するサブブロックがゼロサブブロックであることを示す。シンタックスエレメント値の導出に関する処理は、サブブロック毎にループ処理されるが、本手法では、サブブロック係数フラグに関する処理をそのループ処理の外で行う。つまり、最初にTU内の全サブブロックについてのサブブロック係数フラグをパースする。
【0036】
そして、coded_sub_block_flag=0のサブブロック、すなわちゼロサブブロックをカウントする。そして、そのゼロサブブロック数×サブブロック1つ分のコンテキスト符号化bin数を非ゼロサブブロックに回す(追加する)。ゼロサブブロックにおいてコンテキスト符号化bin数を消費することはないので、その分を非ゼロサブブロックに回す。
【0037】
また、コンテキスト符号化bin数の管理は、TU(所定単位)内で閉じる。つまり、ブロック毎に上述のようなコンテキスト符号化bin数の分配を行う。
【0038】
このようにすることにより、図2に示される表の上から3段目に示されるように、ゼロサブブロックの余剰コンテキスト符号化bin数を、非ゼロサブブロックのコンテキスト符号化bin数として使えるため、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0039】
例えば、図3のAに示されるように、1サブブロック毎に30binの制約を設定する場合、サブブロック11-2およびサブブロック11-3がゼロサブブロックであっても、それらの余剰コンテキスト符号化bin数を、非ゼロサブブロックであるサブブロック11-1やサブブロック11-4において利用することができない。つまり、サブブロック11-1やサブブロック11-4のコンテキスト符号化bin数を30binより多くすることができない。
【0040】
これに対して、方法#1の場合、図3のBに示されるように、サブブロック11-2およびサブブロック11-3がゼロサブブロックであっても、それらの余剰コンテキスト符号化bin数を、非ゼロサブブロックであるサブブロック11-1やサブブロック11-4に割り当てることができる。つまり、それらのサブブロックにおいて、30bin以上のシンタックスエレメント値を発生させることができる。したがって符号化効率の低減を抑制することができる。
【0041】
<符号化装置>
図4は、本技術を適用した画像処理装置の一態様である符号化装置の構成の一例を示すブロック図である。図4に示される符号化装置100は、画像データから導出される係数データをCABACにより符号化し、符号化データを生成する装置である。
【0042】
なお、図4においては、処理部やデータの流れ等の主なものを示しており、図4に示されるものが全てとは限らない。つまり、符号化装置100において、図4においてブロックとして示されていない処理部が存在したり、図4において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【0043】
図4に示されるように、符号化装置100は、シーケンサ101およびCABAC102を有する。シーケンサ101は、画像データから導出される係数データ等を取得する。また、シーケンサ101は、フラグ情報等の制御情報を適宜取得する。シーケンサ101は、それらを用いてシンタックスエレメント値を導出する。また、シーケンサ101は、導出したシンタックスエレメント値等をCABAC102に供給する。CABAC102は、シーケンサ101から供給されるシンタックスエレメント値等を取得する。CABAC102は、そのシンタックスエレメント値を所定の方法により2値化(Binarize)し、2値化ビット列のビット毎にコンテキストを切り替えて算術符号化し、符号化データを生成する。CABAC102は、生成した符号化データを符号化装置100の外部に出力する。
【0044】
なお、これらの処理部(シーケンサ101およびCABAC102)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【0045】
<CABAC>
図5は、CABAC102の主な構成例を示すブロック図である。なお、図5においては、処理部やデータの流れ等の主なものを示しており、図5に示されるものが全てとは限らない。つまり、CABAC102において、図5においてブロックとして示されていない処理部が存在したり、図5において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【0046】
図5に示されるように、CABAC102は、2値化部121、選択部122、コンテキストモデル123、算術符号化部124、算術符号化部125、および選択部126を有する。
【0047】
2値化部121は、シーケンサ101から供給されるシンタックスエレメント値を取得し、そのシンタックスエレメント毎に定義された方法で2値化し、2値化ビット列を生成する。2値化部121は、その2値化ビット列を選択部122に供給する。
【0048】
選択部122は、2値化部121から供給された2値化ビット列とフラグ情報isBypassを取得する。選択部122は、そのisBypassの値に基づいて、2値化ビット列の供給先を選択する。例えば、isBypass=0の場合、選択部122は、通常モードと判定し、2値化ビット列をコンテキストモデル123に供給する。また、isBypass=1の場合、選択部122は、バイパス(bypass)モードと判定し、2値化ビット列を算術符号化部125に供給する。
【0049】
コンテキストモデル123は、符号化対象および周囲の状況に応じて、適用するコンテキストモデルを動的に切り替える。例えば、コンテキストモデル123は、コンテキスト変数ctxを保持し、選択部122から2値化ビット列を取得すると、シンタックスエレメント毎に定義されたbin列の各ビン位置(binIdx)に対応するコンテキスト変数ctxを読み出す。コンテキストモデル123は、2値化ビット列と読みだしたコンテキスト変数ctxを算術符号化部124に供給する。
【0050】
算術符号化部124は、コンテキストモデル123から供給される2値化ビット列およびコンテキスト変数ctxを取得すると、そのコンテキスト変数ctxの確率状態を参照し、2値化ビット列のbinIdxにあるビンの値を、CABACの通常モードにより算術符号化する(コンテキスト符号化を行う)。算術符号化部124は、そのコンテキスト符号化により生成した符号化データを選択部126に供給する。また、算術符号化部124は、コンテキスト符号化処理後のコンテキスト変数ctxをコンテキストモデル123に供給し、保持させる。
【0051】
算術符号化部125は、選択部122から供給される2値化ビット列を、CABACのバイパスモードにより算術符号化する(バイパス符号化を行う)。算術符号化部125は、そのバイパス符号化により生成した符号化データを選択部126に供給する。
【0052】
選択部126は、フラグ情報isBypassを取得し、そのisBypassの値に基づいて、出力する符号化データを選択する。例えば、isBypass=0の場合、選択部126は、通常モードと判定し、算術符号化部124から供給される符号化データを取得し、CABAC102(符号化装置100)の外部に出力する。また、isBypass=1の場合、選択部126は、バイパス(bypass)モードと判定し、算術符号化部125から供給される符号化データを取得し、CABAC102(符号化装置100)の外部に出力する。
【0053】
なお、これらの処理部(2値化部121乃至選択部126)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【0054】
<符号化処理の流れ>
次に、この符号化装置100により実行される符号化処理の流れの例を、図6のフローチャートを参照して説明する。
【0055】
符号化処理が開始されると、符号化装置100のシーケンサ101は、ステップS101において、シンタックスエレメント値導出処理を実行し、符号化装置100に入力される係数データ(画像データから導出される係数データ)からシンタックスエレメント値を導出する。
【0056】
ステップS102において、CABAC102は、CABAC処理を行い、ステップS101において導出されたシンタックスエレメント値をCABACにより符号化し、符号化データを生成する。CABAC102は、生成した符号化データを符号化装置100の外部に出力する。
【0057】
ステップS102の処理が終了すると、符号化処理が終了する。
【0058】
<シンタックスエレメント値導出処理の流れ>
次に、図7のフローチャートを参照して、図6のステップS101において実行されるシンタックスエレメント値導出処理の流れの例を説明する。図8乃至図11は、residual codingのシンタックスの例を示す図である。必要に応じてこれらの図を用いて説明する。なお、図8乃至図11のシンタックスにおいて、閾値(TH1乃至TH4)は、それぞれ、例えば以下のような値を取り得る。
【0059】
TH1 = 6, TH2 = 28, TH3 = 2, TH4 = 4
【0060】
もちろん各閾値の値は任意であり、この例に限定されない。
【0061】
シンタックスエレメント値導出処理が開始されると、シーケンサ101は、ステップS121において、例えば図9の上から2段目乃至11段目に示されるように、処理対象ブロック内のサブブロック係数フラグ(coded_sub_block_flag)を符号化する。
【0062】
ステップS122において、シーケンサ101は、例えば図9の上から13段目乃至16段目に示されるように、そのサブブロック係数フラグの値に基づいて、非ゼロサブブロック数(numNonZeroSbk)をカウントする。つまり、シーケンサ101は、処理対象のブロックについて、coded_sub_block_flag=1のサブブロックの数をカウントする。
【0063】
ステップS123において、シーケンサ101は、例えば図9の上から18段目および19段目に示されるように、サブブロック1つ当たりのコンテキスト符号化ビン数(context-coded bin数)の仮の上限値(remBinPass1Tmp)を設定する。例えば、図3の場合、サブブロックは4x4の係数データよりなり、sig_flag、gt1_flag、par_flag、およびgt2_flagを導出するので、サブブロック1つ当たりのコンテキスト符号化ビン数は、最大64binとなる。シーケンサ101は、この64binを上述の仮の上限値(remBinPass1Tmp)に設定する。つまり、この仮の上限値(remBinPass1Tmp)は、サブブロックのサイズに基づいて設定され得る。
【0064】
ステップS124において、シーケンサ101は、例えば図9の上から20段目および21段目に示されるように、ゼロサブブロック数(numZeroSBk)に基づいて、ゼロサブブロック全体の余剰コンテキスト符号化ビン数(remBinPass1InZeroSbk)を設定する。処理対象ブロック内のサブブロックの数はサブブロック係数フラグの数等から既知であるので、ゼロサブブロック数(numZeroSBk)は、ステップS122においてカウントされた非ゼロサブブロック数(numNonZeroSbk)から求めることができる。ゼロサブブロックに必要なビン数は0であるので、ステップS123において設定された仮の上限値(remBinPass1Tmp)が余剰コンテキスト符号化ビン数となる。したがって、ゼロサブブロック全体の余剰コンテキスト符号化ビン数(remBinPass1InZeroSbk)は、ゼロサブブロック数(numZeroSBk)と仮の上限値(remBinPass1Tmp)との積により導出される。
【0065】
ステップS125において、シーケンサ101は、例えば図9の上から22段目および23段目に示されるように、非ゼロサブブロック1つ当たりに追加で割り当て可能な平均余剰コンテキスト符号化ビン数(remBinPass1Extra)を設定する。この平均余剰コンテキスト符号化ビン数(remBinPass1Extra)は、ステップS124において導出されたゼロサブブロック全体の余剰コンテキスト符号化ビン数(remBinPass1InZeroSbk)をゼロサブブロック数(numZeroSBk)で除算することにより、導出することができる。なお、除算を回避するためにルックアップテーブルを用いて平均余剰コンテキスト符号化ビン数(remBinPass1Extra)を導出するようにしてもよい。
【0066】
次にサブブロック毎の処理に移る。すなわち、シンタックスにおけるサブブロック毎のfor文のループ内の処理に移る。ステップS126において、シーケンサ101は、処理対象ブロック内のサブブロックの中から処理対象サブブロック(subSetId=i)を選択する。
【0067】
ステップS127において、シーケンサ101は、例えば図9の上から29段目および30段目に示されるように、その処理対象サブブロックについて、コンテキスト符号化ビン数の上限値(remBinPass1)を、仮の上限値(remBinPass1Tmp)と、ゼロサブブロックから追加で割り当て可能な平均余剰コンテキスト符号化ビン数(remBinPass1Extra)とに基づいて設定する。図9の例の場合、コンテキスト符号化ビン数の上限値(remBinPass1)は、仮の上限値(remBinPass1Tmp)とゼロサブブロックから追加で割り当て可能な平均余剰コンテキスト符号化ビン数(remBinPass1Extra)とを加算することにより導出される。
【0068】
ステップS128において、シーケンサ101は、処理対象サブブロックについて、コンテキスト符号化ビン数の上限値を越えないように、シンタックスエレメントの値を導出する。この処理は、図10以降のシンタックスに対応する。
【0069】
ステップS129において、シーケンサ101は、全てのサブブロックを処理したか否かを判定する。処理対象ブロック内に未処理のサブブロックが存在すると判定された場合、処理はステップS126に戻り、それ以降の処理が繰り返される。つまり、ステップS126乃至ステップS129の各処理が処理対象ブロック内の各サブブロックについて実行される。そして、ステップS129において、処理対象ブロック内の全てのサブブロックを処理したと判定された場合、シンタックスエレメント値導出処理が終了し、処理は図6に戻る。
【0070】
以上のように各ステップの処理を実行することにより、シーケンサ101は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えば、処理対象ブロック内のゼロサブブロックに割り当てられるコンテキスト符号化bin数を非ゼロサブブロックに分配することができる。したがって、ゼロサブブロックに割り当てられるコンテキスト符号化bin数も利用することができる。したがって、符号化効率の低減を抑制することができる。
【0071】
なお、サブブロック係数フラグ(coded_sub_block_flag)の符号化を、サブブロック毎の処理の前に行い、ゼロサブブロック数や非ゼロサブブロック数をカウントすることにより、余剰コンテキスト符号化ビン数の分配をより自由に行うことができる(分配の制約を少なくすることができる)。
【0072】
また、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばTU)内で閉じることにより、処理量の増大を抑制することができる。
【0073】
<CABAC処理の流れ>
次に、図6のステップS102において実行されるCABAC処理の流れの例を、図12のフローチャートを参照して説明する。
【0074】
CABAC処理が開始されると、CABAC102の2値化部121は、ステップS151において、処理対象のシンタックスエレメント値(syncVal)を入力する。
【0075】
ステップS152において、2値化部121は、シンタックスエレメント毎に定義された2値化処理を行い、シンタックスエレメント値(syncVal)のビン列(synBins)を導出する。
【0076】
ステップS153において、選択部122は、シンタックスエレメント毎に定義されたbin列の各ビン位置(binIdx)に対応するコンテキスト変数ctxと、bypassモードであるか否かを示すフラグisBypassとを読み出す。
【0077】
ステップS154において、選択部122は、bypassモードであるか否かを判定する。isBypass=0であり、通常モードであると判定された場合、処理はステップS155に進む。
【0078】
ステップS155において、算術符号化部124は、コンテキスト符号化を行う。つまり、算術符号化部124は、コンテキスト変数ctxの確率状態を参照してbin列(synBins)のビン位置(binIdx)にあるビンの値をCABACの通常モードにより符号化する。ステップS155の処理が終了すると、処理はステップS157に進む。
【0079】
また、ステップS154においてisBypass=1であり、バイパスモードであると判定された場合、処理はステップS156に進む。
【0080】
ステップS156において、算術符号化部125は、バイパス符号化を行う。つまり、算術符号化部125は、CABACのバイパスモードによりbin列(synBins)のビン位置(binIdx)にあるビンの値を符号化する。ステップS156の処理が終了すると、処理はステップS157に進む。
【0081】
ステップS157において、選択部126は、所定のブレーク条件Aを満たすか否かを判定する。ブレーク条件Aは、binIdx=0からbinIdx=k(現在のbinIdxの位置k)までのビン列の値や、シンタックスエレメント毎の2値化方法に基づいて定義される。
【0082】
ブレーク条件Aを満たさないと判定された場合処理はステップS153に戻り、次のビン位置(binIdx)に対して、それ以降の処理が実行される。つまり、ビン位置(binIdx)毎にステップS153乃至ステップS157の処理が実行される。
【0083】
そして、ステップS157において、ブレーク条件Aを満たすと判定された場合、CABAC処理が終了し、処理は図6に戻る。
【0084】
このようにCABAC処理を行うことにより、シンタックスエレメント値を符号化し、符号化データを生成することができる。
【0085】
<復号装置>
図13は、本技術を適用した画像処理装置の一態様である復号装置の構成の一例を示すブロック図である。図13に示される復号装置200は、符号化データを復号して、画像データに対応する係数データを生成する装置である。
【0086】
なお、図13においては、処理部やデータの流れ等の主なものを示しており、図13に示されるものが全てとは限らない。つまり、復号装置200において、図13においてブロックとして示されていない処理部が存在したり、図13において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【0087】
図13に示されるように、復号装置200は、CABAC201およびパーサ202を有する。CABAC201は、符号化データを取得し、その符号化データに対して2値化ビット列のビット毎にコンテキストを切り替えて算術復号して2値化ビット列を生成し、その2値化ビット列を所定の方法により多値化してシンタックスエレメント値を生成する。CABAC201は、生成したシンタックスエレメント値をパーサ202に供給する。パーサ202は、そのシンタックスエレメント値を取得し、それをパースして画像データに対応する係数データを導出する。パーサ202は、導出した係数データを復号装置200の外部に出力する。
【0088】
なお、これらの処理部(CABAC201およびパーサ202)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【0089】
<CABAC>
図14は、CABAC201の主な構成例を示すブロック図である。なお、図14においては、処理部やデータの流れ等の主なものを示しており、図14に示されるものが全てとは限らない。つまり、CABAC201において、図14においてブロックとして示されていない処理部が存在したり、図14において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【0090】
図14に示されるように、CABAC201は、選択部221、コンテキストモデル222、算術復号部223、算術復号部224、選択部225、および多値化部226を有する。
【0091】
選択部221は、復号装置200に入力される符号化データとフラグ情報isBypassを取得する。選択部221は、そのisBypassの値に基づいて、符号化データの供給先を選択する。例えば、isBypass=0の場合、選択部221は、通常モードと判定し、符号化データをコンテキストモデル222に供給する。また、isBypass=1の場合、選択部221は、バイパス(bypass)モードと判定し、2値化ビット列を算術復号部224に供給する。
【0092】
コンテキストモデル222は、復号対象および周囲の状況に応じて、適用するコンテキストモデルを動的に切り替える。例えば、コンテキストモデル222は、コンテキスト変数ctxを保持し、選択部221から符号化データを取得すると、シンタックスエレメント毎に定義されたbin列の各ビン位置(binIdx)に対応するコンテキスト変数ctxを読み出す。コンテキストモデル222は、符号化データと読みだしたコンテキスト変数ctxを算術復号部223に供給する。
【0093】
算術復号部223は、コンテキストモデル222から供給される符号化データおよびコンテキスト変数ctxを取得すると、そのコンテキスト変数ctxの確率状態を参照し、2値化ビット列のbinIdxにあるビンの値を、CABACの通常モードにより算術復号する(コンテキスト復号を行う)。算術復号部223は、そのコンテキスト復号により生成した2値化ビット列を選択部225に供給する。また、算術復号部223は、コンテキスト復号処理後のコンテキスト変数ctxをコンテキストモデル222に供給し、保持させる。
【0094】
算術復号部224は、選択部221から供給される符号化データを、CABACのバイパスモードにより算術復号する(バイパス復号を行う)。算術復号部224は、そのバイパス復号により生成した2値化ビット列を選択部225に供給する。
【0095】
選択部225は、フラグ情報isBypassを取得し、そのisBypassの値に基づいて、多値化部226に供給する2値化ビット列を選択する。例えば、isBypass=0の場合、選択部225は、通常モードと判定し、算術復号部223から供給される2値化ビット列を取得し、多値化部226に供給する。また、isBypass=1の場合、選択部225は、バイパス(bypass)モードと判定し、算術復号部224から供給される2値化ビット列を取得し、多値化部226に供給する。
【0096】
多値化部226は、選択部225から供給される2値化ビット列を取得し、シンタックスエレメント毎に定義された方法で多値化し、シンタックスエレメント値を生成する。多値化部226は、そのシンタックスエレメント値をパーサ202に供給する。
【0097】
なお、これらの処理部(選択部221乃至多値化部226)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【0098】
<復号処理の流れ>
次に、この復号装置200により実行される復号処理の流れの例を、図15のフローチャートを参照して説明する。
【0099】
復号処理が開始されると、復号装置200のCABAC201は、ステップS201において、CABAC処理を行い、復号装置200に入力される符号化データをCABACにより復号し、シンタックスエレメント値を生成する。ステップS202において、パーサ202は、係数データ導出処理を実行し、そのシンタックスエレメント値をパースして画像データに対応する係数データを導出する。パーサ202は、導出した係数データを復号装置200の外部に出力する。
【0100】
ステップS202の処理が終了すると、復号処理が終了する。
【0101】
<CABAC処理の流れ>
次に、図15のステップS201において実行されるCABAC処理の流れの例を、図16のフローチャートを参照して説明する。
【0102】
CABAC処理が開始されると、CABAC201の選択部221は、ステップS221において、シンタックスエレメント毎に定義されたbin列の各ビン位置(binIdx)に対応するコンテキスト変数ctxと、bypassモードであるか否かを示すフラグisBypassとを読み出す。
【0103】
ステップS222において、選択部221は、bypassモードであるか否かを判定する。isBypass=0であり、通常モードであると判定された場合、処理はステップS223に進む。
【0104】
ステップS223において、算術復号部223は、コンテキスト復号を行う。つまり、算術復号部223は、コンテキスト変数ctxの確率状態を参照して符号化データをCABACの通常モードにより復号し、bin列(synBins)のビン位置(binIdx)にあるビンの値を生成する。ステップS223の処理が終了すると処理はステップS225に進む。
【0105】
また、ステップS222においてisBypass=1であり、バイパスモードであると判定された場合、処理はステップS224に進む。
【0106】
ステップS224において、算術復号部224は、バイパス復号を行う。つまり、算術復号部224は、CABACのバイパスモードにより符号化データを復号し、bin列(synBins)のビン位置(binIdx)にあるビンの値を生成する。ステップS224の処理が終了すると、処理はステップS225に進む。
【0107】
ステップS225において、選択部225は、所定のブレーク条件Aを満たすか否かを判定する。ブレーク条件Aは、binIdx=0からbinIdx=k(現在のbinIdxの位置k)までのビン列の値や、シンタックスエレメント毎の2値化方法に基づいて定義される。
【0108】
ブレーク条件Aを満たさないと判定された場合、処理はステップS221に戻り、次のビン位置(binIdx)の値を生成するための、それ以降の処理が実行される。つまり、ビン位置(binIdx)毎にステップS221乃至ステップS225の処理が実行される。
【0109】
そして、ステップS225において、ブレーク条件Aを満たすと判定された場合、処理はステップS226に進む。
【0110】
ステップS226において、多値化部226は、シンタックスエレメント毎に定義された多値化処理により、ビン列(synBins)からシンタックスエレメント値(syncVal)を導出する。
【0111】
ステップS227において、多値化部226は、導出したシンタックスエレメント値(syncVal)をパーサ202に供給する。
【0112】
このようにCABAC処理を行うことにより、符号化データを復号し、シンタックスエレメント値を生成することができる。
【0113】
<係数データ導出処理の流れ>
次に、図17のフローチャートを参照して、図15のステップS202において実行される係数データ導出処理の流れの例を説明する。この係数データ導出処理は、シンタックスエレメント値導出処理(図7)と略同様の流れで実行される。つまり、係数データ導出処理の各ステップの処理(図17のステップS251乃至ステップS259)は、シンタックスエレメント値導出処理(図7のステップS121乃至ステップS129)の各処理と略同様に実行される。
【0114】
ただし、ステップS251において、パーサ202は、例えば図9の上から2段目乃至11段目に示されるように、処理対象ブロック内のサブブロック係数フラグ(coded_sub_block_flag)を復号する。ステップS251の処理が終了すると、処理はステップS252に進む。
【0115】
また、ステップS258において、パーサ202は、処理対象サブブロックについて、コンテキスト符号化ビン数の上限値を越えないように、シンタックスエレメントの値をパースし、係数データを導出する。この処理は、図10以降のシンタックスに対応する。ステップS258の処理が終了すると、処理はステップS259に進む。
【0116】
以上のように各ステップの処理を実行することにより、パーサ202は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えば、処理対象ブロック内のゼロサブブロックに割り当てられるコンテキスト符号化bin数を非ゼロサブブロックに分配することができる。したがって、ゼロサブブロックに割り当てられるコンテキスト符号化bin数も利用することができる。したがって、符号化効率の低減を抑制することができる。
【0117】
なお、サブブロック係数フラグ(coded_sub_block_flag)の復号を、サブブロック毎の処理の前に行い、ゼロサブブロック数や非ゼロサブブロック数をカウントすることにより、余剰コンテキスト符号化ビン数の分配をより自由に行うことができる(分配の制約を少なくすることができる)。
【0118】
また、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばTU)内で閉じることにより、処理量の増大を抑制することができる。
【0119】
<3.第2の実施の形態>
<方法#2>
第1の実施の形態においては、方法#1について説明したが、本技術は、この方法に限定されない。例えば、図18の表の一番上の段に示されるように、非ゼロサブブロック(nonzero subblock)内で最大コンテキスト符号化bin数をシェアするようにしてもよい。
【0120】
つまり、非特許文献1に記載の方法のように各サブブロックに対して一律にコンテキスト符号化bin数の上限値を設定する場合に各非ゼロサブブロックに割り当てられるコンテキスト符号化bin数を、シェアするようにする。
【0121】
例えば、図18に示される表の上から2段目に示されるように、サブブロック係数フラグ(coded_sub_block_flag)を既存のループの外に出し、独立させる。つまり、最初にTU内の全サブブロックについてのサブブロック係数フラグをパースする。
【0122】
そして、coded_sub_block_flag=1のサブブロック、すなわち非ゼロサブブロックをカウントする。そして、その非ゼロサブブロック数×サブブロック1つ分のコンテキスト符号化bin数をシェアする。
【0123】
また、コンテキスト符号化bin数の管理は、TU(所定単位)内で閉じる。つまり、ブロック毎に上述のようなコンテキスト符号化bin数の分配を行う。
【0124】
このようにすることにより、図18に示される表の上から3段目に示されるように、非ゼロサブブロックの余剰コンテキスト符号化bin数を、その他の非ゼロサブブロックのコンテキスト符号化bin数として使えるため、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0125】
例えば、図19のAに示されるように、1サブブロック毎に30binの制約を設定する場合、非ゼロサブブロックであるサブブロック11-1において24binしか発生しなかったときも、上限値までの6binを他の非ゼロサブブロックに回すことはできなかった。したがって、非ゼロサブブロックであるサブブロック11ー4においても、コンテキスト符号化bin数を上限値の30binより多くすることができなかった。
【0126】
これに対して、方法#2の場合、図19のBに示されるように、非ゼロサブブロックであるサブブロック11-1における余剰コンテキスト符号化bin数(この例の場合「6」)を、非ゼロサブブロックであるサブブロック11-4に割り当てることができる。つまり、それらの非ゼロサブブロックにおいて、コンテキスト符号化bin数をシェアすることができ、その配分によっては、30bin以上のシンタックスエレメント値を発生させることができる。したがって符号化効率の低減を抑制することができる。
【0127】
<シンタックスエレメント値導出処理の流れ>
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0128】
この場合のシンタックスエレメント値導出処理の流れの例を、図20のフローチャートを参照して説明する。図21乃至図24は、residual codingのシンタックスの例を示す図である。必要に応じてこれらの図を用いて説明する。なお、図21乃至図24のシンタックスにおいて、閾値(TH1乃至TH3)は、それぞれ、例えば以下のような値を取り得る。
【0129】
TH1 = 6, TH2 = 28, TH3 = 3
【0130】
もちろん各閾値の値は任意であり、この例に限定されない。
【0131】
シンタックスエレメント値導出処理が開始されると、シーケンサ101は、ステップS301において、例えば図22の上から1段目乃至10段目に示されるように、処理対象ブロック内のサブブロック係数フラグ(coded_sub_block_flag)を符号化する。
【0132】
ステップS302において、シーケンサ101は、例えば図22の上から12段目乃至15段目に示されるように、そのサブブロック係数フラグの値に基づいて、非ゼロサブブロック数(numNonZeroSbk)をカウントする。つまり、シーケンサ101は、処理対象のブロックについて、coded_sub_block_flag=1のサブブロックの数をカウントする。
【0133】
ステップS303において、シーケンサ101は、例えば図22の上から17段目および18段目に示されるように、サブブロック1つ当たりのコンテキスト符号化ビン数(context-coded bin数)の仮の上限値(remBinPass1Tmp)を設定する。例えば、図19の場合、サブブロック1つ当たりのコンテキスト符号化ビン数は、図3の場合と同様に最大64binとなる。シーケンサ101は、この64binを上述の仮の上限値(remBinPass1Tmp)に設定する。つまり、この仮の上限値(remBinPass1Tmp)は、サブブロックのサイズに基づいて設定され得る。
【0134】
ステップS304において、シーケンサ101は、例えば図22の上から19段目および20段目に示されるように、非ゼロサブブロック数(numNonZeroSbk)に基づいて、非ゼロサブブロック全体で割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1)を設定する。この非ゼロサブブロック全体で割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1)は、ステップS302においてカウントされた非ゼロサブブロック数(numNonZeroSbk)と、ステップS303において設定された仮の上限値(remBinPass1Tmp)との積、つまり、各非ゼロサブブロックに割り当てられる仮の上限値(remBinPass1Tmp)の総和により導出される。
【0135】
次にサブブロック毎の処理に移る。すなわち、シンタックスにおけるサブブロック毎のfor文のループ内の処理に移る。ステップS305において、シーケンサ101は、処理対象ブロック内のサブブロックの中から処理対象サブブロック(subSetId=i)を選択する。
【0136】
ステップS306において、シーケンサ101は、処理対象ブロックの各サブブロックにおける発生ビン数の総和が、ステップS304において導出した非ゼロサブブロック全体で割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1)を越えないように、処理対象サブブロックについて、シンタックスエレメントの値を導出する。この処理は、図23以降のシンタックスに対応する。
【0137】
ステップS307において、シーケンサ101は、全てのサブブロックを処理したか否かを判定する。処理対象ブロック内に未処理のサブブロックが存在すると判定された場合、処理はステップS305に戻り、それ以降の処理が繰り返される。つまり、ステップS305乃至ステップS307の各処理が処理対象ブロック内の各サブブロックについて実行される。そして、ステップS307において、処理対象ブロック内の全てのサブブロックを処理したと判定された場合、シンタックスエレメント値導出処理が終了し、処理は図6に戻る。
【0138】
以上のように各ステップの処理を実行することにより、シーケンサ101は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えば、処理対象ブロック内の非ゼロサブブロック同士でコンテキスト符号化bin数を分配することができる。したがって、符号化効率の低減を抑制することができる。
【0139】
なお、サブブロック係数フラグ(coded_sub_block_flag)の符号化を、サブブロック毎の処理の前に行い、ゼロサブブロック数や非ゼロサブブロック数をカウントすることにより、余剰コンテキスト符号化ビン数の分配をより自由に行うことができる(分配の制約を少なくすることができる)。
【0140】
また、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばTU)内で閉じることにより、処理量の増大を抑制することができる。
【0141】
<係数データ導出処理の流れ>
この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0142】
この場合の係数データ導出処理の流れの例を、図25のフローチャートを参照して説明する。この係数データ導出処理は、シンタックスエレメント値導出処理(図20)と略同様の流れで実行される。つまり、係数データ導出処理の各ステップの処理(図25のステップS321乃至ステップS327)は、シンタックスエレメント値導出処理(図20のステップS301乃至ステップS307)の各処理と略同様に実行される。
【0143】
ただし、ステップS321において、パーサ202は、例えば図22の上から1段目乃至10段目に示されるように、処理対象ブロック内のサブブロック係数フラグ(coded_sub_block_flag)を復号する。ステップS321の処理が終了すると、処理はステップS322に進む。
【0144】
また、ステップS326において、パーサ202は、処理対象ブロックの各サブブロックにおける発生ビン数の総和が、ステップS324において導出した非ゼロサブブロック全体で割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1)を越えないように、処理対象サブブロックについて、シンタックスエレメント値をパースし、係数データを導出する。この処理は、図23以降のシンタックスに対応する。ステップS326の処理が終了すると、処理はステップS327に進む。
【0145】
以上のように各ステップの処理を実行することにより、パーサ202は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えば、処理対象ブロック内の非ゼロサブブロック同士でコンテキスト符号化bin数を分配することができる。したがって、符号化効率の低減を抑制することができる。処理対象ブロック内のゼロサブブロックに割り当てられるコンテキスト符号化bin数を非ゼロサブブロックに分配することができる。したがって、ゼロサブブロックに割り当てられるコンテキスト符号化bin数も利用することができる。したがって、符号化効率の低減を抑制することができる。
【0146】
なお、サブブロック係数フラグ(coded_sub_block_flag)の復号を、サブブロック毎の処理の前に行い、ゼロサブブロック数や非ゼロサブブロック数をカウントすることにより、余剰コンテキスト符号化ビン数の分配をより自由に行うことができる(分配の制約を少なくすることができる)。
【0147】
また、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばTU)内で閉じることにより、処理量の増大を抑制することができる。
【0148】
<4.第3の実施の形態>
<方法#3>
また例えば、図26の表の一番上の段に示されるように、非ゼロサブブロック(nonzero subblock)内の余剰コンテキスト符号化bin数を、他の非ゼロサブブロックで使用するようにしてもよい。
【0149】
例えば、図26に示される表の上から2段目に示されるように、1つのサブブロックあたりのコンテキスト符号化ビン数の最大値に満たないサブブロックがあった場合、その余剰コンテキスト符号化ビン数をプールして次以降のサブブロックに使うようにする。
【0150】
このようにすることにより、図26に示される表の上から3段目に示されるように、サブブロック係数フラグを既存のループから出さずに適用することができる。つまり、シンタックスの変更量の増大を抑制することができ、本技術をより容易に適用することができるようになる。
【0151】
また、非ゼロサブブロックの余剰コンテキスト符号化bin数を、その他の非ゼロサブブロックのコンテキスト符号化bin数として使えるため、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0152】
例えば、図27のAに示されるように、1サブブロック毎に30binの制約を設定する場合、サブブロック11-3において16binしか発生しなかったときも、サブブロック11-4においては30binの制約を受ける。つまり、上限値までの14binを次以降のサブブロックに回すことはできなかった。
【0153】
これに対して、方法#3の場合、図27のBに示されるように、サブブロック11-3における余剰コンテキスト符号化bin数(この例の場合「14」)を、次に処理されるサブブロック11-4に割り当てることができる。つまり、サブブロック11-4において30bin以上のシンタックスエレメント値を発生させることができる。したがって符号化効率の低減を抑制することができる。
【0154】
<シンタックスエレメント値導出処理の流れ>
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0155】
この場合のシンタックスエレメント値導出処理の流れの例を、図28のフローチャートを参照して説明する。図29乃至図32は、residual codingのシンタックスの例を示す図である。必要に応じてこれらの図を用いて説明する。なお、図29乃至図32のシンタックスにおいて、閾値(TH1乃至TH3)は、それぞれ、例えば以下のような値を取り得る。
【0156】
TH1 = 6, TH2 = 28, TH3 = 3
【0157】
もちろん各閾値の値は任意であり、この例に限定されない。
【0158】
シンタックスエレメント値導出処理が開始されると、シーケンサ101は、ステップS341において、例えば図30の上から1段目および2段目に示されるように、次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)を初期化する(例えばremBinPass1Next = 0)。つまり、初期値においては、余剰コンテキスト符号化ビン数が0であり、次のサブブロックにビン数を追加することができないことが示される。
【0159】
次にサブブロック毎の処理に移る。すなわち、シンタックスにおけるサブブロック毎のfor文のループ内の処理に移る。ステップS342において、シーケンサ101は、処理対象ブロック内のサブブロックの中から処理対象サブブロック(subSetId=i)を選択する。
【0160】
ステップS343において、シーケンサ101は、例えば図30の上から3段目乃至11段目に示されるように、処理対象サブブロックについて、サブブロック係数フラグ(coded_sub_block_flag)を符号化する。
【0161】
ステップS344において、シーケンサ101は、例えば図30の上から14段目および15段目に示されるように、処理対象サブブロックについて、コンテキスト符号化ビン数(context-coded bin数)の仮の上限値(remBinPass1Tmp)を設定する。例えば、図27の場合、サブブロック1つ当たりのコンテキスト符号化ビン数は、図3の場合と同様に最大64binとなる。シーケンサ101は、この64binを上述の仮の上限値(remBinPass1Tmp)に設定する。つまり、この仮の上限値(remBinPass1Tmp)は、サブブロックのサイズに基づいて設定され得る。
【0162】
ステップS345において、シーケンサ101は、例えば図30の上から16段目および17段目に示されるように、処理対象サブブロックについて、ステップS344において設定した仮の上限値(remBinPass1Tmp)と、直前に処理されたサブブロックにおける、次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)とに基づいて、コンテキスト符号化ビン数の上限値(remBinPass1)を設定する。例えば、この処理対象サブブロックのコンテキスト符号化ビン数の上限値(remBinPass1)は、仮の上限値(remBinPass1Tmp)と次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)との和により導出される。
【0163】
ステップS346において、シーケンサ101は、処理対象サブブロックについて、ステップS345において設定されたコンテキスト符号化ビン数の上限値(remBinPass1)を越えないように、シンタックスエレメント値を導出する。
【0164】
ステップS347において、シーケンサ101は、例えば図31の上から21段目および22段目に示されるように、処理対象サブブロックの余剰コンテキスト符号化ビン数(シンタックスエレメント値導出後のremBinPass1)を、次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)に設定する。
【0165】
ステップS348において、シーケンサ101は、全てのサブブロックを処理したか否かを判定する。処理対象ブロック内に未処理のサブブロックが存在すると判定された場合、処理はステップS342に戻り、それ以降の処理が繰り返される。つまり、ステップS342乃至ステップS348の各処理が処理対象ブロック内の各サブブロックについて実行される。そして、ステップS348において、処理対象ブロック内の全てのサブブロックを処理したと判定された場合、シンタックスエレメント値導出処理が終了し、処理は図6に戻る。
【0166】
以上のように各ステップの処理を実行することにより、シーケンサ101は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えば、処理対象サブブロックの余剰コンテキスト符号化bin数を、次以降に処理されるサブブロックのコンテキスト符号化bin数として使うことができる。したがって、符号化効率の低減を抑制することができる。
【0167】
なお、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばTU)内で閉じることにより、処理量の増大を抑制することができる。
【0168】
<係数データ導出処理の流れ>
この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0169】
この場合の係数データ導出処理の流れの例を、図33のフローチャートを参照して説明する。この係数データ導出処理は、シンタックスエレメント値導出処理(図28)と略同様の流れで実行される。つまり、係数データ導出処理の各ステップの処理(図33のステップS361乃至ステップS368)は、シンタックスエレメント値導出処理(図28のステップS341乃至ステップS348)の各処理と略同様に実行される。
【0170】
ただし、ステップS363において、パーサ202は、例えば図30の上から3段目乃至11段目に示されるように、処理対象サブブロックについて、サブブロック係数フラグ(coded_sub_block_flag)を復号する。ステップS363の処理が終了すると、処理はステップS364に進む。
【0171】
また、ステップS366において、パーサ202は、処理対象サブブロックについて、ステップS365において設定されたコンテキスト符号化ビン数の上限値(remBinPass1)を越えないように、シンタックスエレメント値をパースし、係数データを導出する。ステップS366の処理が終了すると、処理はステップS367に進む。
【0172】
以上のように各ステップの処理を実行することにより、パーサ202は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えば、処理対象サブブロックの余剰コンテキスト符号化bin数を、次以降に処理されるサブブロックのコンテキスト符号化bin数として使うことができる。したがって、符号化効率の低減を抑制することができる。
【0173】
なお、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばTU)内で閉じることにより、処理量の増大を抑制することができる。
【0174】
<5.第4の実施の形態>
<方法#4>
上述した各方法は、矛盾が生じない限り、任意に組み合わせることができる。例えば、図34の表の一番上の段に示されるように、上述した方法#1乃至方法#3を組み合わせて用いてもよい。
【0175】
例えば、図34に示される表の上から2段目に示されるように、サブブロック係数フラグ(coded_sub_block_flag)を既存のループの外に出し、独立させる。つまり、方法#1や方法#2のように、最初にTU内の全サブブロックについてのサブブロック係数フラグをパースする。
【0176】
そして、方法#1や方法#2のように、coded_sub_block_flag=0のサブブロック、すなわちゼロサブブロックをカウントする。
【0177】
そして、方法#1のように、ゼロサブブロック数×サブブロック1つ分のコンテキスト符号化bin数を非ゼロサブブロックに回す(追加する)。また、方法#2のように、各非ゼロサブブロックに割り当てられるコンテキスト符号化bin数を、シェアするようにする。さらに、方法#3のように、処理対象サブブロックにおいて発生した余剰コンテキスト符号化ビン数をプールして次以降のサブブロックに使うようにする。
【0178】
また、方法#1乃至方法#3のように、コンテキスト符号化bin数の管理は、TU(所定単位)内で閉じる。つまり、ブロック毎に上述のようなコンテキスト符号化bin数の分配を行う。
【0179】
このようにすることにより、図34に示される表の上から3段目に示されるように、上述した方法#1乃至方法#3の各方法における効果を得ることができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0180】
例えば、図35のAに示されるように、1サブブロック毎に30binの制約を設定する場合、サブブロック11-2およびサブブロック11-3がゼロサブブロックであっても、それらの余剰コンテキスト符号化bin数を、非ゼロサブブロックであるサブブロック11-1やサブブロック11-4において利用することができなかった。また、非ゼロサブブロック同士で余剰コンテキスト符号化ビン数をシェアすることもできなかった。さらに、非ゼロサブブロックであるサブブロック11-1において20binしか発生しなかったときも、上限値までの10binを次以降に処理される他の非ゼロサブブロックであるサブブロック11-4に回すことはできなかった。したがって、サブブロック11-4においては30binの制約を受け、コンテキスト符号化bin数を上限値の30binより多くすることができなかった。
【0181】
これに対して、方法#4の場合、図35のBに示されるように、ゼロサブブロックであるサブブロック11-2およびサブブロック11-3の余剰コンテキスト符号化bin数を、非ゼロサブブロックであるサブブロック11-1やサブブロック11-4に割り当てることができる。また、非ゼロサブブロックであるサブブロック11-1とサブブロック11-4とでコンテキスト符号化bin数をシェアすることができる。さらに、サブブロック11-1の余剰コンテキスト符号化ビン数(図35のAの例の場合10bin)を、サブブロック11-4に割り当てることができる。つまり、サブブロックにおいて30bin以上のシンタックスエレメント値を発生させることができる。したがって符号化効率の低減を抑制することができる。
【0182】
<シンタックスエレメント値導出処理の流れ>
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0183】
この場合のシンタックスエレメント値導出処理の流れの例を、図36および図37のフローチャートを参照して説明する。図38乃至図41は、residual codingのシンタックスの例を示す図である。必要に応じてこれらの図を用いて説明する。なお、図38乃至図41のシンタックスにおいて、閾値(TH1乃至TH4)は、それぞれ、例えば以下のような値を取り得る。
【0184】
TH1 = 6, TH2 = 28, TH3 = 2, TH4 = 4
【0185】
もちろん各閾値の値は任意であり、この例に限定されない。
【0186】
シンタックスエレメント値導出処理が開始されると、シーケンサ101は、図36のステップS381において、例えば図39の上から1段目乃至10段目に示されるように、処理対象ブロック内のサブブロック係数フラグ(coded_sub_block_flag)を符号化する。
【0187】
ステップS382において、シーケンサ101は、例えば図39の上から12段目乃至15段目に示されるように、そのサブブロック係数フラグの値に基づいて、非ゼロサブブロック数(numNonZeroSbk)をカウントする。つまり、シーケンサ101は、処理対象のブロックについて、coded_sub_block_flag=1のサブブロックの数をカウントする。
【0188】
ステップS383において、シーケンサ101は、例えば図39の上から17段目および18段目に示されるように、サブブロック1つ当たりのコンテキスト符号化ビン数(context-coded bin数)の仮の上限値(remBinPass1Tmp)を設定する。方法#1の場合と同様に、この仮の上限値(remBinPass1Tmp)は、サブブロックのサイズに基づいて設定され得る。
【0189】
ステップS384において、シーケンサ101は、例えば図39の上から19段目および20段目に示されるように、ゼロサブブロック数(numZeroSBk)に基づいて、ゼロサブブロック全体の余剰コンテキスト符号化ビン数(remBinPass1InZeroSbk)を設定する。方法#1の場合と同様に、ゼロサブブロック数(numZeroSBk)は、ステップS382においてカウントされた非ゼロサブブロック数(numNonZeroSbk)から求めることができ、ゼロサブブロック全体の余剰コンテキスト符号化ビン数(remBinPass1InZeroSbk)は、ゼロサブブロック数(numZeroSBk)と仮の上限値(remBinPass1Tmp)との積により導出される。
【0190】
ステップS385において、シーケンサ101は、例えば図39の上から21段目および22段目に示されるように、非ゼロサブブロック1つ当たりに追加で割り当て可能な平均余剰コンテキスト符号化ビン数(remBinPass1Extra)を設定する。この平均余剰コンテキスト符号化ビン数(remBinPass1Extra)は、ステップS384において導出されたゼロサブブロック全体の余剰コンテキスト符号化ビン数(remBinPass1InZeroSbk)をゼロサブブロック数(numZeroSBk)で除算することにより、導出することができる。なお、除算を回避するためにルックアップテーブルを用いて平均余剰コンテキスト符号化ビン数(remBinPass1Extra)を導出するようにしてもよい。
【0191】
ステップS386において、シーケンサ101は、例えば図39の上から24段目および25段目に示されるように、次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)を初期化する(例えばremBinPass1Next = 0)。つまり、初期値においては、余剰コンテキスト符号化ビン数が0であり、次のサブブロックにビン数を追加することができないことが示される。
【0192】
ステップS386の処理が終了すると、処理は図37に進む。
【0193】
次にサブブロック毎の処理に移る。すなわち、シンタックスにおけるサブブロック毎のfor文のループ内の処理に移る。ステップS391において、シーケンサ101は、処理対象ブロック内のサブブロックの中から処理対象サブブロック(subSetId=i)を選択する。
【0194】
ステップS392において、シーケンサ101は、例えば図40の上から5段目および6段目に示されるように、処理対象サブブロックについて、コンテキスト符号化ビン数の上限値(remBinPass1)を、仮の上限値(remBinPass1Tmp)と、ゼロサブブロックから追加で割り当て可能な平均余剰コンテキスト符号化ビン数(remBinPass1Extra)と、1つ前のサブブロックの余剰コンテキスト符号化ビン数とに基づいて設定する。図40の例の場合、コンテキスト符号化ビン数の上限値(remBinPass1)は、仮の上限値(remBinPass1Tmp)と、ゼロサブブロックから追加で割り当て可能な平均余剰コンテキスト符号化ビン数(remBinPass1Extra)と、次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)との和により導出される。
【0195】
ステップS393において、シーケンサ101は、処理対象サブブロックについて、コンテキスト符号化ビン数の上限値(remBinPass1)を越えないように、シンタックスエレメント値を導出する。
【0196】
ステップS394において、シーケンサ101は、例えば図40の上から40段目および41段目に示されるように、処理対象サブブロックの余剰コンテキスト符号化ビン数(シンタックスエレメント値導出後のremBinPass1)を、次のサブブロックに割り当て可能な余剰コンテキスト符号化ビン数(remBinPass1Next)に設定する。
【0197】
ステップS395において、シーケンサ101は、全てのサブブロックを処理したか否かを判定する。処理対象ブロック内に未処理のサブブロックが存在すると判定された場合、処理はステップS391に戻り、それ以降の処理が繰り返される。つまり、ステップS391乃至ステップS395の各処理が処理対象ブロック内の各サブブロックについて実行される。そして、ステップS395において、処理対象ブロック内の全てのサブブロックを処理したと判定された場合、シンタックスエレメント値導出処理が終了し、処理は図6に戻る。
【0198】
以上のように各ステップの処理を実行することにより、シーケンサ101は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。つまり、上述した方法#1乃至方法#3の各方法における効果を得ることができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0199】
<係数データ導出処理の流れ>
この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0200】
この場合の係数データ導出処理の流れの例を、図42および図43のフローチャートを参照して説明する。この係数データ導出処理は、シンタックスエレメント値導出処理(図36および図37)と略同様の流れで実行される。つまり、係数データ導出処理の各ステップの処理(図42のステップS411乃至ステップS416、並びに、図43のステップS421乃至ステップS425)は、シンタックスエレメント値導出処理(図36のステップS381乃至ステップS386、並びに、図37のステップS391乃至ステップS395)の各処理と略同様に実行される。
【0201】
ただし、図42のステップS411において、パーサ202は、例えば図39の上から1段目乃至10段目に示されるように、処理対象サブブロックについて、サブブロック係数フラグ(coded_sub_block_flag)を復号する。ステップS411の処理が終了すると、処理はステップS412に進む。
【0202】
また、図43のステップS423において、パーサ202は、処理対象サブブロックについて、ステップS422において設定されたコンテキスト符号化ビン数の上限値(remBinPass1)を越えないように、シンタックスエレメント値をパースし、係数データを導出する。ステップS423の処理が終了すると、処理はステップS424に進む。
【0203】
以上のように各ステップの処理を実行することにより、パーサ202は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。つまり、上述した方法#1乃至方法#3の各方法における効果を得ることができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0204】
<6.第5の実施の形態>
<方法#5>
また例えば、図44の表の一番上の段に示されるように方法#1の応用として、余剰コンテキスト符号化bin数を割り当てる優先度を、サブブロックの位置に応じて設定するようにしてもよい。
【0205】
例えば、図44に示される表の上から2段目に示されるように、低域のサブブロックの場合、より多くの余剰コンテキスト符号化ビン数を割り当て、高域のサブブロックの場合、より少ない余剰コンテキスト符号化ビン数を割り当てるようにしてもよい。また、逆に、高域のサブブロックの場合、より多くの余剰コンテキスト符号化ビン数を割り当て、低域のサブブロックの場合、より少ない余剰コンテキスト符号化ビン数を割り当てるようにしてもよい。
【0206】
このようにすることにより、図44に示される表の上から3段目に示されるように、余剰コンテキスト符号化bin数を、その他のサブブロックのコンテキスト符号化bin数として使えるため、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0207】
例えば、図45のAの場合、低域のサブブロックであるサブブロック11-1に対して、高域のサブブロックであるサブブロック11-4よりも多くの余剰コンテキスト符号化ビン数が割り当てられている。一般的に、画像データが直交変換された係数データは、高域よりも低域に集まる。したがって、このような場合に、図45のAの例のように低域のサブブロックに対して余剰コンテキスト符号化ビン数を多く割り当てることにより、より符号化効率の低減を抑制することができる。
【0208】
また、例えば、図45のBの場合、高域のサブブロックであるサブブロック11-4に対して、低域のサブブロックであるサブブロック11-1よりも多くの余剰コンテキスト符号化ビン数が割り当てられている。例えばロスレス符号化のように、直交変換がスキップされる場合、高域の係数データは、一般的に、直交変換が行われる場合よりも多くなりやすい。また、例えばエッジ成分が多い画像の場合、高域の係数データが多くなりやすい。このような場合に、図45のBの例のように高域のサブブロックに対して余剰コンテキスト符号化ビン数を多く割り当てることにより、より符号化効率の低減を抑制することができる。
【0209】
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0210】
さらに、シンタックスエレメント値導出処理も、基本的に第1の実施の形態の場合(図7)と同様である。ステップS127において、処理対象サブブロックに対してコンテキスト符号化ビン数の上限値を設定する際に、上述のように、処理対象サブブロックの位置を考慮して設定すればよい。
【0211】
また、この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0212】
さらに、係数データ導出処理も、基本的に第1の実施の形態の場合(図17)と同様である。ステップS257において、処理対象サブブロックに対してコンテキスト符号化ビン数の上限値を設定する際に、上述のように、処理対象サブブロックの位置を考慮して設定すればよい。
【0213】
<7.第6の実施の形態>
<方法#6>
また例えば、図46の表の一番上の段に示されるように、コンテキスト符号化ビン数を管理する単位をTUより大きいサイズに拡張するようにしてもよい。
【0214】
例えば、図46に示される表の上から2段目に示されるように、例えば、CU、VPDU、またはCTU毎に、余剰コンテキスト符号化ビン数を管理するようにしてもよい。つまり、CU、VPDU、またはCTU内の非ゼロサブブロック同士でbin数を分配して処理対象サブブロックに割り当てられるbin数の上限値を設定してもよい。
【0215】
このようにすることにより、より広い範囲で余剰コンテキスト符号化ビン数をシェアすることができる。つまり、図46に示される表の上から3段目に示されるように、より自由度の高いコンテキスト符号化ビン数の割り当てを行うことができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0216】
例えば、図47のAに示されるように、CU400が、4x4のサブブロック401(サブブロック401-1乃至サブブロック401-16)からなるとする。また、各サブブロックが、図中矢印のようにモートンコード順に処理されるものとする。
【0217】
図47のBのように1サブブロック毎に30binの制約が存在する場合、ゼロサブブロックが存在しても、その余剰コンテキスト符号化ビン数を次以降のサブブロックにおいて利用することができなかった。そのため、全サブブロックにおいて、コンテキスト符号化ビン数が30bin以下に制限されていた。
【0218】
そこで、方法#6を適用し、CU400内で余剰コンテキスト符号化ビン数をシェアするようにする。この場合、図47のCに示されるように、処理対象サブブロックにおいて発生した余剰コンテキスト符号化ビン数を次以降に処理されるサブブロックに割り当てることができる。したがって、サブブロック401において30bin以上のシンタックスエレメント値を発生させることができる。したがって符号化効率の低減を抑制することができる。特に方法#6の場合、余剰コンテキスト符号化ビン数をシェアする範囲が、TUよりも広いので、より自由度の高いコンテキスト符号化ビン数の割り当てを行うことができる。
【0219】
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0220】
さらに、シンタックスエレメント値導出処理も、基本的に第1の実施の形態の場合(図7)と同様である。処理対象ブロックをTUよりも大きなデータ単位(例えばCU、VPDU、またはCTU等)にすればよい。
【0221】
また、この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0222】
さらに、係数データ導出処理も、基本的に第1の実施の形態の場合(図17)と同様である。処理対象ブロックをTUよりも大きなデータ単位(例えばCU、VPDU、またはCTU等)にすればよい。
【0223】
<8.第7の実施の形態>
<方法#7>
また例えば、図48の表の一番上の段に示されるように、シンタックス構造でのコンテキスト符号化ビン数の最大値の上限を省略する(設定しない)ようにしてもよい。
【0224】
例えば、図48に示される表の上から2段目に示されるように、ビン数の発生量にはLevel制約や条件式等により制限をかけるようにしてもよい。また、サブブロック単位ではなく、サブブロックよりも大きなデータ単位(例えば、TU単位、CU単位、VPDU単位、CTU単位、スライス単位、またはピクチャ単位等)で発生量の制限をかけるようにしてもよい。
【0225】
このようにすることにより、図48に示される表の上から3段目に示されるように、局所的な係数データの発生時に、多くの係数をflagで表現することができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0226】
例えば、図49のAに示されるように、1サブブロック毎に28binの制約を設定する場合、余剰コンテキスト符号化ビン数が発生しても、それを他のサブブロックにおいて利用することができなかった。したがって、例えば、サブブロック11ー4においても、コンテキスト符号化bin数を上限値の28binより多くすることができなかった。
【0227】
これに対して、方法#7の場合、図49のBに示されるように、例えばCU単位でコンテキスト符号化ビン数をシェアすることができる。したがって、サブブロックに対して28bin以上のコンテキスト符号化ビン数を割り当てることもできる。したがって符号化効率の低減を抑制することができる。
【0228】
<シンタックスエレメント値導出処理の流れ>
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0229】
この場合のシンタックスエレメント値導出処理の流れの例を、図50のフローチャートを参照して説明する。なお、ここでは、CU単位でコンテキスト符号化ビン数をシェアする場合を例に説明する。また、図51乃至図53は、residual codingのシンタックスの例を示す図である。必要に応じてこれらの図を用いて説明する。
【0230】
シンタックスエレメント値導出処理が開始されると、シーケンサ101は、ステップS441において、例えば図51の上から21段目に示されるように、1係数当たりの割り当て可能なコンテキスト符号化ビン数(「*7)>>2」)と、CUサイズ(log2TbWidth, log2TbHeight)とに基づいて、CU全体で割り当て可能なコンテキスト符号化ビン数の上限値(remBinsPass1)を設定する。
【0231】
次にサブブロック毎の処理に移る。ステップS442において、シーケンサ101は、処理対象CU内のサブブロックの中から処理対象サブブロックを選択する。
【0232】
ステップS443において、シーケンサ101は、ステップS441において設定したCU全体で割り当て可能なコンテキスト符号化ビン数の上限値(remBinsPass1)を越えないように、処理対象サブブロックについて、シンタックスエレメント値を導出する。
【0233】
ステップS444において、シーケンサ101は、全てのサブブロックを処理したか否かを判定する。処理対象CU内に未処理のサブブロックが存在すると判定された場合、処理はステップS442に戻り、それ以降の処理が繰り返される。つまり、ステップS442乃至ステップS444の各処理が処理対象CU内の各サブブロックについて実行される。そして、ステップS444において、処理対象CU内の全てのサブブロックを処理したと判定された場合、シンタックスエレメント値導出処理が終了し、処理は図6に戻る。
【0234】
以上のように各ステップの処理を実行することにより、シーケンサ101は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えばCU単位でコンテキスト符号化ビン数をシェアすることができる。したがって、符号化効率の低減を抑制することができる。
【0235】
なお、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばCU)内で閉じることにより、処理量の増大を抑制することができる。
【0236】
<係数データ導出処理の流れ>
この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0237】
この場合の係数データ導出処理の流れの例を、図54のフローチャートを参照して説明する。この係数データ導出処理は、シンタックスエレメント値導出処理(図50)と略同様の流れで実行される。つまり、係数データ導出処理の各ステップの処理(図54のステップS461乃至ステップS464)は、シンタックスエレメント値導出処理(図50のステップS441乃至ステップS444)の各処理と略同様に実行される。
【0238】
ただし、ステップS463において、パーサ202は、ステップS461において設定したCU全体で割り当て可能なコンテキスト符号化ビン数の上限値(remBinsPass1)を越えないように、処理対象サブブロックについて、シンタックスエレメント値をパースし、係数データを導出する。ステップS463の処理が終了すると、処理はステップS464に進む。
【0239】
以上のように各ステップの処理を実行することにより、パーサ202は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。例えばCU単位でコンテキスト符号化ビン数をシェアすることができる。したがって、符号化効率の低減を抑制することができる。
【0240】
なお、上述のようにコンテキスト符号化ビン数の管理をブロック(例えばCU)内で閉じることにより、処理量の増大を抑制することができる。
【0241】
<9.第8の実施の形態>
<方法#8>
また例えば、図55の表の一番上の段に示されるように、シンタックス構造でのコンテキスト符号化ビン数の最大値の上限を省略する(設定しない)ようにしてもよい。
【0242】
その際、例えば、図55に示される表の上から2段目に示されるように、ゼロサブブロックの次の非ゼロサブブロックにおいて、発生可能なビン数の最大値を上限値としてもよい。また、ゼロサブブロックが連続する場合は、同数の非ゼロサブブロックにおいて、発生可能なビン数の最大値を上限値としてもよい。つまり、ゼロサブブロックと同数の非ゼロサブブロックにおいて、発生可能なビン数の最大値を上限値としてもよい。
【0243】
このようにすることにより、図55に示される表の上から3段目に示されるように、局所的な係数データの発生時に、多くの係数をflagで表現することができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0244】
例えば、図56のAの場合、1サブブロック毎に28binの制約がある。サブブロック11-1およびサブブロック11-3はゼロサブブロックであり、余剰コンテキスト符号化ビン数(28bin)が発生する。しかしながら、この場合、その余剰コンテキスト符号化ビン数を他のサブブロックにおいて利用することができなかった。つまり、非ゼロサブブロックであるサブブロック11-2やサブブロック11-4においては、上限値の28binより多くのビン数を割り当てることができなかった。
【0245】
これに対して、方法#8の場合、ゼロサブブロックの次の非ゼロサブブロックにおいて、発生可能なビン数の最大値を上限値とすることができる。例えば、図56のBに示されるように、サブブロック11-1がゼロサブブロックであるので、次に処理される非ゼロサブブロックであるサブブロック11-2には、1つのサブブロックにおいて発生するビン数の最大値(48bin)を上限値として割り当てることができる。同様に、サブブロック11-3がゼロサブブロックであるので、次に処理される非ゼロサブブロックであるサブブロック11-4には、1つのサブブロックにおいて発生するビン数の最大値(48bin)を上限値として割り当てることができる。
【0246】
また、1サブブロック毎に28binの制約がある場合、図56のCのように、サブブロック11-1およびサブブロック11-2がゼロサブブロックである場合も、それらのサブブロック11において発生する余剰コンテキスト符号化ビン数を、非ゼロサブブロックであるサブブロック11-3やサブブロック11-4において利用することができなかった。
【0247】
これに対して、方法#8の場合、このようなサブブロックの並びのときは、図56のDに示されるように、サブブロック11-1およびサブブロック11-2が連続してゼロサブブロックであるので、次以降に処理される2つの非ゼロサブブロックにおいて、1つのサブブロックにおいて発生するビン数の最大値を上限値として割り当てることができる。つまり、サブブロック11-3およびサブブロック11-4において、1つのサブブロックにおいて発生するビン数の最大値(48bin)を上限値として割り当てることができる。
【0248】
<シンタックスエレメント値導出処理の流れ>
この場合も符号化装置100の構成は、第1の実施の形態の場合(図4)と同様である。また、CABAC102の構成も第1の実施の形態の場合(図5)と同様である。さらに、その符号化装置100により実行される符号化処理の流れも、第1の実施の形態の場合(図6)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図12)と同様である。
【0249】
この場合のシンタックスエレメント値導出処理の流れの例を、図57のフローチャートを参照して説明する。
【0250】
シンタックスエレメント値導出処理が開始されると、シーケンサ101は、ステップS481において、ゼロサブブロックのカウント値を初期化する。例えば、シーケンサ101は、ゼロサブブロックのカウント値を「0」に設定する。
【0251】
次にサブブロック毎の処理に移る。ステップS482において、シーケンサ101は、処理対象サブブロックを選択する。
【0252】
ステップS483において、シーケンサ101は、処理対象サブブロックについて、サブブロック係数フラグ(coded_sub_block_flag)を符号化する。
【0253】
ステップS484において、シーケンサ101は、そのサブブロック係数フラグの値に基づいて、処理対象サブブロックが非ゼロブロックか否かを判定する。coded_sub_block_flag=1であり、非ゼロサブブロックであると判定された場合、処理はステップS485に進む。
【0254】
ステップS485において、シーケンサ101は、ゼロサブブロックのカウント値が「0」であるか否かを判定する。カウント値が「0」であると判定された場合、処理はステップS486に進む。この場合、処理対象サブブロックについてビン数の制約が適用される。
【0255】
したがって、ステップS486において、シーケンサ101は、処理対象サブブロックについて、コンテキスト符号化ビン数の上限値(remBinPass1)を設定する。つまり、処理対象サブブロックについてビン数の制約に基づいて、コンテキスト符号化ビン数の上限値(remBinPass1)が設定される。
【0256】
ステップS487において、シーケンサ101は、処理対象サブブロックについて、ステップS486において設定されたコンテキスト符号化ビン数の上限値(remBinPass1)を越えないように、シンタックスエレメント値を導出する。ステップS487の処理が終了すると、処理はステップS491に進む。
【0257】
また、ステップS485において、ゼロサブブロックのカウント値が「1」以上であると判定された場合、処理はステップS488に進む。
【0258】
ステップS488において、シーケンサ101は、処理対象サブブロックについて、シンタックスエレメント値を導出する。この場合、ゼロサブブロックからの余剰コンテキスト符号化ビン数の追加が可能であり、処理対象サブブロックについてビン数の制約が適用されない。つまり、コンテキスト符号化ビン数の上限値(remBinPass1)は設定されずに、シンタックスエレメント値が導出される。
【0259】
ステップS489において、シーケンサ101は、ゼロサブブロックのカウント値をデクリメントする(例えばカウント値から「1」を減算する)。ステップS489の処理が終了すると、処理はステップS491に進む。
【0260】
また、ステップS484において、処理対象ブロックがゼロサブブロックであると判定された場合、処理はステップS490に進む。この場合、シンタックスエレメント値の導出は省略される。ステップS490において、シーケンサ101は、ゼロサブブロックのカウント値をインクリメントする(例えばカウント値に「1」を加算する)。ステップS490の処理が終了すると、処理はステップS491に進む。
【0261】
ステップS491において、シーケンサ101は、全てのサブブロックを処理したか否かを判定する。処理対象ブロック内に未処理のサブブロックが存在すると判定された場合、処理はステップS482に戻り、それ以降の処理が繰り返される。つまり、ステップS482乃至ステップS491の各処理が処理対象ブロック内の各サブブロックについて実行される。そして、ステップS491において、処理対象ブロック内の全てのサブブロックを処理したと判定された場合、シンタックスエレメント値導出処理が終了し、処理は図6に戻る。
【0262】
以上のように、ゼロサブブロックのカウント値を用いることにより、ゼロサブブロックと同数の非ゼロサブブロックについて、コンテキスト符号化ビン数の上限値(remBinPass1)の設定を省略することができる。つまり、以上のように各ステップの処理を実行することにより、シーケンサ101は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0263】
<係数データ導出処理の流れ>
この場合も復号装置200の構成は、第1の実施の形態の場合(図13)と同様である。また、CABAC201の構成も第1の実施の形態の場合(図14)と同様である。さらに、その復号装置200により実行される復号処理の流れも、第1の実施の形態の場合(図15)と同様である。また、CABAC処理の流れも、第1の実施の形態の場合(図16)と同様である。
【0264】
この場合の係数データ導出処理の流れの例を、図58のフローチャートを参照して説明する。この係数データ導出処理は、シンタックスエレメント値導出処理(図57)と略同様の流れで実行される。つまり、係数データ導出処理の各ステップの処理(図58のステップS521乃至ステップS531)は、シンタックスエレメント値導出処理(図57のステップS481乃至ステップS491)の各処理と略同様に実行される。
【0265】
ただし、図58のステップS523において、パーサ202は、処理対象サブブロックについて、サブブロック係数フラグ(coded_sub_block_flag)を復号する。ステップS523の処理が終了すると、処理はステップS524に進む。
【0266】
また、図58のステップS527において、パーサ202は、処理対象サブブロックについて、ステップS526において設定されたコンテキスト符号化ビン数の上限値(remBinPass1)を越えないように、シンタックスエレメント値をパースし、係数データを導出する。ステップS527の処理が終了すると、処理はステップS531に進む。
【0267】
さらに、図58のステップS528において、パーサ202は、処理対象サブブロックについて、シンタックスエレメント値をパースし、係数データを導出する。ステップS528の処理が終了すると、処理はステップS529に進む。
【0268】
以上のように、ゼロサブブロックのカウント値を用いることにより、ゼロサブブロックと同数の非ゼロサブブロックについて、コンテキスト符号化ビン数の上限値(remBinPass1)の設定を省略することができる。つまり、以上のように各ステップの処理を実行することにより、パーサ202は、各サブブロックのコンテキスト符号化bin数の制約を可変とすることができる。したがって、符号化効率の低減を抑制することができる。換言するに、復号画像の画質の低減を抑制することができる。
【0269】
<10.第9の実施の形態>
<画像符号化装置>
以上においては、符号化装置100や復号装置200に本技術を適用する例について説明したが、本技術は、これらに限らず、任意の装置、デバイス、システム等に適用することができる。例えば、画像データを符号化する画像符号化装置に、本技術を適用することができる。
【0270】
図59は、本技術を適用した画像処理装置の一態様である画像符号化装置の構成の一例を示すブロック図である。図59に示される画像符号化装置600は、動画像の画像データを符号化する装置である。例えば、画像符号化装置600は、非特許文献1乃至非特許文献12のいずれかに記載の符号化方式で動画像の画像データを符号化する。
【0271】
なお、図59においては、処理部(ブロック)やデータの流れ等の主なものを示しており、図59に示されるものが全てとは限らない。つまり、画像符号化装置600において、図59においてブロックとして示されていない処理部が存在したり、図59において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【0272】
図59に示されるように画像符号化装置600は、制御部601、並べ替えバッファ611、演算部612、直交変換部613、量子化部614、符号化部615、蓄積バッファ616、逆量子化部617、逆直交変換部618、演算部619、インループフィルタ部620、フレームメモリ621、予測部622、およびレート制御部623を有する。
【0273】
<制御部>
制御部601は、外部、または予め指定された処理単位のブロックサイズに基づいて、並べ替えバッファ611により保持されている動画像データを処理単位のブロック(CU, PU, 変換ブロックなど)へ分割する。また、制御部601は、各ブロックへ供給する符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfo等)を、例えば、RDO(Rate-Distortion Optimization)に基づいて、決定する。
【0274】
これらの符号化パラメータの詳細については後述する。制御部601は、以上のような符号化パラメータを決定すると、それを各ブロックへ供給する。具体的には、以下の通りである。
【0275】
ヘッダ情報Hinfoは、各ブロックに供給される。
予測モード情報Pinfoは、符号化部615と予測部622とに供給される。
変換情報Tinfoは、符号化部615、直交変換部613、量子化部614、逆量子化部617、および逆直交変換部618に供給される。
フィルタ情報Finfoは、インループフィルタ部620に供給される。
【0276】
<並べ替えバッファ>
画像符号化装置600には、動画像データの各フィールド(入力画像)がその再生順(表示順)に入力される。並べ替えバッファ611は、各入力画像をその再生順(表示順)に取得し、保持(記憶)する。並べ替えバッファ611は、制御部601の制御に基づいて、その入力画像を符号化順(復号順)に並べ替えたり、処理単位のブロックに分割したりする。並べ替えバッファ611は、処理後の各入力画像を演算部612に供給する。また、並べ替えバッファ611は、その各入力画像(元画像)を、予測部622やインループフィルタ部620にも供給する。
【0277】
<演算部>
演算部612は、処理単位のブロックに対応する画像I、および予測部622より供給される予測画像Pを入力とし、画像Iから予測画像Pを以下の式に示されるように減算して、予測残差Dを導出し、それを直交変換部613に供給する。
【0278】
D = I - P
【0279】
<直交変換部>
直交変換部613は、演算部612から供給される予測残差Dと、制御部601から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、予測残差Dに対して直交変換を行い、変換係数Coeffを導出する。なお、直交変換部613は、直交変換のタイプ(変換係数)を適応的に選択する適応直交変換(AMT)を行うことができる。直交変換部613は、その得られた変換係数Coeffを量子化部614に供給する。
【0280】
<量子化部>
量子化部614は、直交変換部613から供給される変換係数Coeffと、制御部601から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、変換係数Coeffをスケーリング(量子化)する。なお、この量子化のレートは、レート制御部623により制御される。量子化部614は、このような量子化により得られた量子化後の変換係数、すなわち量子化変換係数レベルlevelを、符号化部615および逆量子化部617に供給する。
【0281】
<符号化部>
符号化部615は、量子化部614から供給された量子化変換係数レベルlevelと、制御部601から供給される各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど)と、インループフィルタ部620から供給されるフィルタ係数等のフィルタに関する情報と、予測部622から供給される最適な予測モードに関する情報とを入力とする。符号化部615は、量子化変換係数レベルlevelを可変長符号化(例えば、算術符号化)し、ビット列(符号化データ)を生成する。
【0282】
また、符号化部615は、その量子化変換係数レベルlevelから残差情報Rinfoを導出し、残差情報Rinfoを符号化し、ビット列を生成する。
【0283】
さらに、符号化部615は、インループフィルタ部620から供給されるフィルタに関する情報をフィルタ情報Finfoに含め、予測部622から供給される最適な予測モードに関する情報を予測モード情報Pinfoに含める。そして、符号化部615は、上述した各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなど)を符号化し、ビット列を生成する。
【0284】
また、符号化部615は、以上のように生成された各種情報のビット列を多重化し、符号化データを生成する。符号化部615は、その符号化データを蓄積バッファ616に供給する。
【0285】
<蓄積バッファ>
蓄積バッファ616は、符号化部615において得られた符号化データを、一時的に保持する。蓄積バッファ616は、所定のタイミングにおいて、保持している符号化データを、例えばビットストリーム等として画像符号化装置600の外部に出力する。例えば、この符号化データは、任意の記録媒体、任意の伝送媒体、任意の情報処理装置等を介して復号側に伝送される。すなわち、蓄積バッファ616は、符号化データ(ビットストリーム)を伝送する伝送部でもある。
【0286】
<逆量子化部>
逆量子化部617は、逆量子化に関する処理を行う。例えば、逆量子化部617は、量子化部614から供給される量子化変換係数レベルlevelと、制御部601から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、量子化変換係数レベルlevelの値をスケーリング(逆量子化)する。なお、この逆量子化は、量子化部614において行われる量子化の逆処理である。逆量子化部617は、このような逆量子化により得られた変換係数Coeff_IQを、逆直交変換部618に供給する。
【0287】
<逆直交変換部>
逆直交変換部618は、逆直交変換に関する処理を行う。例えば、逆直交変換部618は、逆量子化部617から供給される変換係数Coeff_IQと、制御部601から供給される変換情報Tinfoとを入力とし、その変換情報Tinfoに基づいて、変換係数Coeff_IQに対して逆直交変換を行い、予測残差D'を導出する。なお、この逆直交変換は、直交変換部613において行われる直交変換の逆処理である。つまり、逆直交変換部618は、逆直交変換のタイプ(変換係数)を適応的に選択する適応逆直交変換(AMT)を行うことができる。
【0288】
逆直交変換部618は、このような逆直交変換により得られた予測残差D'を演算部619に供給する。なお、逆直交変換部618は、復号側の逆直交変換部(後述する)と同様であるので、逆直交変換部618については、復号側について行う説明(後述する)を適用することができる。
【0289】
<演算部>
演算部619は、逆直交変換部618から供給される予測残差D'と、予測部622から供給される予測画像Pとを入力とする。演算部619は、その予測残差D'と、その予測残差D'に対応する予測画像Pとを加算し、局所復号画像Rlocalを導出する。演算部619は、導出した局所復号画像Rlocalをインループフィルタ部620およびフレームメモリ621に供給する。
【0290】
<インループフィルタ部>
インループフィルタ部620は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部620は、演算部619から供給される局所復号画像Rlocalと、制御部601から供給されるフィルタ情報Finfoと、並べ替えバッファ611から供給される入力画像(元画像)とを入力とする。なお、インループフィルタ部620に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。例えば、必要に応じて、予測モード、動き情報、符号量目標値、量子化パラメータQP、ピクチャタイプ、ブロック(CU、CTU等)の情報等がインループフィルタ部620に入力されるようにしてもよい。
【0291】
インループフィルタ部620は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。インループフィルタ部620は、必要に応じて入力画像(元画像)や、その他の入力情報もそのフィルタ処理に用いる。
【0292】
例えば、インループフィルタ部620は、非特許文献11に記載のように、バイラテラルフィルタ、デブロッキングフィルタ(DBF(DeBlocking Filter))、適応オフセットフィルタ(SAO(Sample Adaptive Offset))、および適応ループフィルタ(ALF(Adaptive Loop Filter))の4つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
【0293】
もちろん、インループフィルタ部620が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部620がウィーナーフィルタ等を適用するようにしてもよい。
【0294】
インループフィルタ部620は、フィルタ処理された局所復号画像Rlocalをフレームメモリ621に供給する。なお、例えばフィルタ係数等のフィルタに関する情報を復号側に伝送する場合、インループフィルタ部620は、そのフィルタに関する情報を符号化部615に供給する。
【0295】
<フレームメモリ>
フレームメモリ621は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ621は、演算部619から供給される局所復号画像Rlocalや、インループフィルタ部620から供給されるフィルタ処理された局所復号画像Rlocalを入力とし、それを保持(記憶)する。また、フレームメモリ621は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する(フレームメモリ621内のバッファへ格納する)。フレームメモリ621は、予測部622の要求に応じて、その復号画像R(またはその一部)を予測部622に供給する。
【0296】
<予測部>
予測部622は、予測画像の生成に関する処理を行う。例えば、予測部622は、制御部601から供給される予測モード情報Pinfoと、並べ替えバッファ611から供給される入力画像(元画像)と、フレームメモリ621から読み出す復号画像R(またはその一部)を入力とする。予測部622は、予測モード情報Pinfoや入力画像(元画像)を用い、インター予測やイントラ予測等の予測処理を行い、復号画像Rを参照画像として参照して予測を行い、その予測結果に基づいて動き補償処理を行い、予測画像Pを生成する。予測部622は、生成した予測画像Pを演算部612および演算部619に供給する。また、予測部622は、以上の処理により選択した予測モード、すなわち最適な予測モードに関する情報を、必要に応じて符号化部615に供給する。
【0297】
<レート制御部>
レート制御部623は、レート制御に関する処理を行う。例えば、レート制御部623は、蓄積バッファ616に蓄積された符号化データの符号量に基づいて、オーバフローあるいはアンダーフローが発生しないように、量子化部614の量子化動作のレートを制御する。
【0298】
なお、これらの処理部(制御部601、並べ替えバッファ611乃至レート制御部623)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【0299】
以上のような構成の画像符号化装置600において、符号化部615に本技術を適用する。つまり、符号化部615が図4に示される符号化装置100と同様の構成を有し、同様の処理を行うようにする。つまり、符号化部615が、上述した方法#1乃至方法#8のいずれかを行うようにする。このようにすることにより、画像符号化装置600は、第1の実施の形態乃至第8の実施の形態のいずれかにおいて上述したのと同様の効果をえることができる。したがって、画像符号化装置600は、符号化効率の低減を抑制する(符号化効率を改善する)ことができる。換言するに、画像符号化装置600は、復号画像の画質の低減を抑制することができる。
【0300】
<画像符号化処理の流れ>
次に、以上のような構成の画像符号化装置600により実行される画像符号化処理の流れの例を、図60のフローチャートを参照して説明する。
【0301】
画像符号化処理が開始されると、ステップS601において、並べ替えバッファ611は、制御部601に制御されて、入力された動画像データのフレームの順を表示順から符号化順に並べ替える。
【0302】
ステップS602において、制御部601は、並べ替えバッファ611が保持する入力画像に対して、処理単位を設定する(ブロック分割を行う)。
【0303】
ステップS603において、制御部601は、並べ替えバッファ611が保持する入力画像についての符号化パラメータを決定(設定)する。
【0304】
ステップS604において、予測部622は、予測処理を行い、最適な予測モードの予測画像等を生成する。例えば、この予測処理において、予測部622は、イントラ予測を行って最適なイントラ予測モードの予測画像等を生成し、インター予測を行って最適なインター予測モードの予測画像等を生成し、それらの中から、コスト関数値等に基づいて最適な予測モードを選択する。
【0305】
ステップS605において、演算部612は、入力画像と、ステップS604の予測処理により選択された最適なモードの予測画像との差分を演算する。つまり、演算部612は、入力画像と予測画像との予測残差Dを生成する。このようにして求められた予測残差Dは、元の画像データに比べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
【0306】
ステップS606において、直交変換部613は、ステップS605の処理により生成された予測残差Dに対する直交変換処理を行い、変換係数Coeffを導出する。
【0307】
ステップS607において、量子化部614は、制御部601により算出された量子化パラメータを用いる等して、ステップS606の処理により得られた変換係数Coeffを量子化し、量子化変換係数レベルlevelを導出する。
【0308】
ステップS608において、逆量子化部617は、ステップS607の処理により生成された量子化変換係数レベルlevelを、そのステップS607の量子化の特性に対応する特性で逆量子化し、変換係数Coeff_IQを導出する。
【0309】
ステップS609において、逆直交変換部618は、ステップS608の処理により得られた変換係数Coeff_IQを、ステップS606の直交変換処理に対応する方法で逆直交変換し、予測残差D'を導出する。なお、この逆直交変換処理は、復号側において行われる逆直交変換処理(後述する)と同様であるので、このステップS609の逆直交変換処理については、復号側について行う説明(後述する)を適用することができる。
【0310】
ステップS610において、演算部619は、ステップS609の処理により導出された予測残差D'に、ステップS604の予測処理により得られた予測画像を加算することにより、局所的に復号された復号画像を生成する。
【0311】
ステップS611において、インループフィルタ部620は、ステップS610の処理により導出された、局所的に復号された復号画像に対して、インループフィルタ処理を行う。
【0312】
ステップS612において、フレームメモリ621は、ステップS610の処理により導出された、局所的に復号された復号画像や、ステップS611においてフィルタ処理された、局所的に復号された復号画像を記憶する。
【0313】
ステップS613において、符号化部615は、ステップS607の処理により得られた量子化変換係数レベルlevelを符号化する。例えば、符号化部615は、画像に関する情報である量子化変換係数レベルlevelを、算術符号化等により符号化し、符号化データを生成する。また、このとき、符号化部615は、各種符号化パラメータ(ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo)を符号化する。さらに、符号化部615は、量子化変換係数レベルlevelから残差情報RInfoを導出し、その残差情報RInfoを符号化する。
【0314】
ステップS614において、蓄積バッファ616は、このようにして得られた符号化データを蓄積し、例えばビットストリームとして、それを画像符号化装置600の外部に出力する。このビットストリームは、例えば、伝送路や記録媒体を介して復号側に伝送される。また、レート制御部623は、必要に応じてレート制御を行う。
【0315】
ステップS614の処理が終了すると、画像符号化処理が終了する。
【0316】
以上のような流れの画像符号化処理において、ステップS613の符号化処理に本技術を適用する。つまり、このステップS613において、図6と同様の流れの符号化処理が行われるようにする。つまり、符号化部615が、上述した方法#1乃至方法#8のいずれかの方法を適用した符号化処理を行うようにする。このようにすることにより、画像符号化装置600は、第1の実施の形態乃至第8の実施の形態のいずれかにおいて上述したのと同様の効果をえることができる。したがって、画像符号化装置600は、符号化効率の低減を抑制する(符号化効率を改善する)ことができる。換言するに、画像符号化装置600は、復号画像の画質の低減を抑制することができる。
【0317】
<画像復号装置>
また例えば、画像データの符号化データを復号する画像復号装置に、本技術を適用することができる。図61は、本技術を適用した画像処理装置の一態様である画像復号装置の構成の一例を示すブロック図である。図61に示される画像復号装置700は、動画像の符号化データを符号化する装置である。例えば、画像復号装置700は、非特許文献1乃至非特許文献12のいずれかに記載の復号方式で符号化データを復号する。例えば、画像復号装置700は、上述の画像符号化装置600により生成された符号化データ(ビットストリーム)を復号する。
【0318】
なお、図61においては、処理部やデータの流れ等の主なものを示しており、図61に示されるものが全てとは限らない。つまり、画像復号装置700において、図61においてブロックとして示されていない処理部が存在したり、図61において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
【0319】
図61において、画像復号装置700は、蓄積バッファ711、復号部712、逆量子化部713、逆直交変換部714、演算部715、インループフィルタ部716、並べ替えバッファ717、フレームメモリ718、および予測部719を備えている。なお、予測部719は、不図示のイントラ予測部、およびインター予測部を備えている。画像復号装置700は、符号化データ(ビットストリーム)を復号することによって、動画像データを生成するための装置である。
【0320】
<蓄積バッファ>
蓄積バッファ711は、画像復号装置700に入力されたビットストリームを取得し、保持(記憶)する。蓄積バッファ711は、所定のタイミングにおいて、または、所定の条件が整う等した場合、蓄積しているビットストリームを復号部712に供給する。
【0321】
<復号部>
復号部712は、画像の復号に関する処理を行う。例えば、復号部712は、蓄積バッファ711から供給されるビットストリームを入力とし、シンタックステーブルの定義に沿って、そのビット列から、各シンタックス要素のシンタックス値を可変長復号し、パラメータを導出する。
【0322】
シンタックス要素およびシンタックス要素のシンタックス値から導出されるパラメータには、例えば、ヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、残差情報Rinfo、フィルタ情報Finfoなどの情報が含まれる。つまり、復号部712は、ビットストリームから、これらの情報をパースする(解析して取得する)。これらの情報について以下に説明する。
【0323】
<ヘッダ情報Hinfo>
ヘッダ情報Hinfoは、例えば、VPS(Video Parameter Set)/SPS(Sequence Parameter Set)/PPS(Picture Parameter Set)/SH(スライスヘッダ)などのヘッダ情報を含む。ヘッダ情報Hinfoには、例えば、画像サイズ(横幅PicWidth、縦幅PicHeight)、ビット深度(輝度bitDepthY, 色差bitDepthC)、色差アレイタイプChromaArrayType、CUサイズの最大値MaxCUSize/最小値MinCUSize、4分木分割(Quad-tree分割ともいう)の最大深度MaxQTDepth/最小深度MinQTDepth、2分木分割(Binary-tree分割)の最大深度MaxBTDepth/最小深度MinBTDepth、変換スキップブロックの最大値MaxTSSize(最大変換スキップブロックサイズともいう)、各符号化ツールのオンオフフラグ(有効フラグともいう)などを規定する情報が含まれる。
【0324】
例えば、ヘッダ情報Hinfoに含まれる符号化ツールのオンオフフラグとしては、以下に示す変換、量子化処理に関わるオンオフフラグがある。なお、符号化ツールのオンオフフラグは、該符号化ツールに関わるシンタックスが符号化データ中に存在するか否かを示すフラグとも解釈することができる。また、オンオフフラグの値が1(真)の場合、該符号化ツールが使用可能であることを示し、オンオフフラグの値が0(偽)の場合、該符号化ツールが使用不可であることを示す。なお、フラグ値の解釈は逆であってもよい。
【0325】
コンポーネント間予測有効フラグ(ccp_enabled_flag):コンポーネント間予測(CCP(Cross-Component Prediction),CC予測とも称する)が使用可能であるか否かを示すフラグ情報である。例えば、このフラグ情報が「1」(真)の場合、使用可能であることが示され、「0」(偽)の場合、使用不可であることが示される。
【0326】
なお、このCCPは、コンポーネント間線形予測(CCLMまたはCCLMP)とも称する。
【0327】
<予測モード情報Pinfo>
予測モード情報Pinfoには、例えば、処理対象PB(予測ブロック)のサイズ情報PBSize(予測ブロックサイズ)、イントラ予測モード情報IPinfo、動き予測情報MVinfo等の情報が含まれる。
【0328】
イントラ予測モード情報IPinfoには、例えば、JCTVC-W1005, 7.3.8.5 Coding Unit syntax中のprev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode、およびそのシンタックスから導出される輝度イントラ予測モードIntraPredModeY等が含まれる。
【0329】
また、イントラ予測モード情報IPinfoには、例えば、コンポーネント間予測フラグ(ccp_flag(cclmp_flag))、多クラス線形予測モードフラグ(mclm_flag)、色差サンプル位置タイプ識別子(chroma_sample_loc_type_idx)、色差MPM識別子(chroma_mpm_idx)、および、これらのシンタックスから導出される輝度イントラ予測モード(IntraPredModeC)等が含まれる。
【0330】
コンポーネント間予測フラグ(ccp_flag(cclmp_flag))は、コンポーネント間線形予測を適用するか否かを示すフラグ情報である。例えば、ccp_flag==1のとき、コンポーネント間予測を適用することを示し、ccp_flag==0のとき、コンポーネント間予測を適用しないことを示す。
【0331】
多クラス線形予測モードフラグ(mclm_flag)は、線形予測のモードに関する情報(線形予測モード情報)である。より具体的には、多クラス線形予測モードフラグ(mclm_flag)は、多クラス線形予測モードにするか否かを示すフラグ情報である。例えば、「0」の場合、1クラスモード(単一クラスモード)(例えばCCLMP)であることを示し、「1」の場合、2クラスモード(多クラスモード)(例えばMCLMP)であることを示す。
【0332】
色差サンプル位置タイプ識別子(chroma_sample_loc_type_idx)は、色差コンポーネントの画素位置のタイプ(色差サンプル位置タイプとも称する)を識別する識別子である。例えば色フォーマットに関する情報である色差アレイタイプ(ChromaArrayType)が420形式を示す場合、色差サンプル位置タイプ識別子は、以下の式のような割り当て方となる。
【0333】
chroma_sample_loc_type_idx == 0:Type2
chroma_sample_loc_type_idx == 1:Type3
chroma_sample_loc_type_idx == 2:Type0
chroma_sample_loc_type_idx == 3:Type1
【0334】
なお、この色差サンプル位置タイプ識別子(chroma_sample_loc_type_idx)は、色差コンポーネントの画素位置に関する情報(chroma_sample_loc_info())として(に格納されて)伝送される。
【0335】
色差MPM識別子(chroma_mpm_idx)は、色差イントラ予測モード候補リスト(intraPredModeCandListC)の中のどの予測モード候補を色差イントラ予測モードとして指定するかを表す識別子である。
【0336】
動き予測情報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を参照)。
【0337】
もちろん、予測モード情報Pinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【0338】
<変換情報Tinfo>
変換情報Tinfoには、例えば、以下の情報が含まれる。もちろん、変換情報Tinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【0339】
処理対象変換ブロックの横幅サイズTBWSizeおよび縦幅TBHSize(または、2を底とする各TBWSize、TBHSizeの対数値log2TBWSize、log2TBHSizeであってもよい)。
変換スキップフラグ(ts_flag):(逆)プライマリ変換および(逆)セカンダリ変換をスキップか否かを示すフラグである。
スキャン識別子(scanIdx)
量子化パラメータ(qp)
量子化マトリックス(scaling_matrix(例えば、JCTVC-W1005, 7.3.4 Scaling list data syntax))
【0340】
<残差情報Rinfo>
残差情報Rinfo(例えば、JCTVC-W1005の7.3.8.11 Residual Coding syntaxを参照)には、例えば以下のシンタックスが含まれる。
【0341】
cbf(coded_block_flag):残差データ有無フラグ
last_sig_coeff_x_pos:ラスト非ゼロ係数X座標
last_sig_coeff_y_pos:ラスト非ゼロ係数Y座標
coded_sub_block_flag:サブブロック非ゼロ係数有無フラグ
sig_coeff_flag:非ゼロ係数有無フラグ
gr1_flag:非ゼロ係数のレベルが1より大きいかを示すフラグ(GR1フラグとも呼ぶ)
gr2_flag:非ゼロ係数のレベルが2より大きいかを示すフラグ(GR2フラグとも呼ぶ) sign_flag:非ゼロ係数の正負を示す符号(サイン符号とも呼ぶ)
coeff_abs_level_remaining:非ゼロ係数の残余レベル(非ゼロ係数残余レベルとも呼ぶ)
など。
【0342】
もちろん、残差情報Rinfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【0343】
<フィルタ情報Finfo>
フィルタ情報Finfoには、例えば、以下に示す各フィルタ処理に関する制御情報が含まれる。
【0344】
デブロッキングフィルタ(DBF)に関する制御情報
画素適応オフセット(SAO)に関する制御情報
適応ループフィルタ(ALF)に関する制御情報
その他の線形・非線形フィルタに関する制御情報
【0345】
より具体的には、例えば、各フィルタを適用するピクチャや、ピクチャ内の領域を指定する情報や、CU単位のフィルタOn/Off制御情報、スライス、タイルの境界に関するフィルタOn/Off制御情報などが含まれる。もちろん、フィルタ情報Finfoに含まれる情報は任意であり、これらの情報以外の情報が含まれるようにしてもよい。
【0346】
復号部712の説明に戻る。復号部712は、残差情報Rinfoを参照して、各変換ブロック内の各係数位置の量子化変換係数レベルlevelを導出する。復号部712は、その量子化変換係数レベルlevelを、逆量子化部713に供給する。
【0347】
また、復号部712は、パースしたヘッダ情報Hinfo、予測モード情報Pinfo、量子化変換係数レベルlevel、変換情報Tinfo、フィルタ情報Finfoを各ブロックへ供給する。具体的には以下の通りである。
【0348】
ヘッダ情報Hinfoは、逆量子化部713、逆直交変換部714、予測部719、インループフィルタ部716に供給される。
予測モード情報Pinfoは、逆量子化部713および予測部719に供給される。
変換情報Tinfoは、逆量子化部713および逆直交変換部714に供給される。
フィルタ情報Finfoは、インループフィルタ部716に供給される。
【0349】
もちろん、上述の例は一例であり、この例に限定されない。例えば、各符号化パラメータが任意の処理部に供給されるようにしてもよい。また、その他の情報が、任意の処理部に供給されるようにしてもよい。
【0350】
<逆量子化部>
逆量子化部713は、少なくとも、逆量子化に関する処理を行うために必要な構成を有する。例えば、逆量子化部713は、復号部712から供給される変換情報Tinfoおよび量子化変換係数レベルlevelを入力とし、その変換情報Tinfoに基づいて、量子化変換係数レベルlevelの値をスケーリング(逆量子化)し、逆量子化後の変換係数Coeff_IQを導出する。
【0351】
なお、この逆量子化は、量子化部614による量子化の逆処理として行われる。また、この逆量子化は、逆量子化部617による逆量子化と同様の処理である。つまり、逆量子化部617は、逆量子化部713と同様の処理(逆量子化)を行う。
【0352】
逆量子化部713は、導出した変換係数Coeff_IQを逆直交変換部714に供給する。
【0353】
<逆直交変換部>
逆直交変換部714は、逆直交変換に関する処理を行う。例えば、逆直交変換部714は、逆量子化部713から供給される変換係数Coeff_IQ、および、復号部712から供給される変換情報Tinfoを入力とし、その変換情報Tinfoに基づいて、変換係数Coeff_IQに対して逆直交変換処理を行い、予測残差D'を導出する。
【0354】
なお、この逆直交変換は、直交変換部613による直交変換の逆処理として行われる。また、この逆直交変換は、逆直交変換部618による逆直交変換と同様の処理である。つまり、逆直交変換部618は、逆直交変換部714と同様の処理(逆直交変換)を行う。
【0355】
逆直交変換部714は、導出した予測残差D'を演算部715に供給する。
【0356】
<演算部>
演算部715は、画像に関する情報の加算に関する処理を行う。例えば、演算部715は、逆直交変換部714から供給される予測残差D'と、予測部719から供給される予測画像Pとを入力とする。演算部715は、以下の式に示されるように、予測残差D'とその予測残差D'に対応する予測画像P(予測信号)とを加算し、局所復号画像Rlocalを導出する。
【0357】
Rlocal = D' + P
【0358】
演算部715は、導出した局所復号画像Rlocalを、インループフィルタ部716およびフレームメモリ718に供給する。
【0359】
<インループフィルタ部>
インループフィルタ部716は、インループフィルタ処理に関する処理を行う。例えば、インループフィルタ部716は、演算部715から供給される局所復号画像Rlocalと、復号部712から供給されるフィルタ情報Finfoとを入力とする。なお、インループフィルタ部716に入力される情報は任意であり、これらの情報以外の情報が入力されてもよい。
【0360】
インループフィルタ部716は、そのフィルタ情報Finfoに基づいて、局所復号画像Rlocalに対して適宜フィルタ処理を行う。
【0361】
例えば、インループフィルタ部716は、非特許文献11に記載のように、バイラテラルフィルタ、デブロッキングフィルタ(DBF(DeBlocking Filter))、適応オフセットフィルタ(SAO(Sample Adaptive Offset))、および適応ループフィルタ(ALF(Adaptive Loop Filter))の4つのインループフィルタをこの順に適用する。なお、どのフィルタを適用するか、どの順で適用するかは任意であり、適宜選択可能である。
【0362】
インループフィルタ部716は、符号化側(例えば画像符号化装置600のインループフィルタ部620)により行われたフィルタ処理に対応するフィルタ処理を行う。もちろん、インループフィルタ部716が行うフィルタ処理は任意であり、上述の例に限定されない。例えば、インループフィルタ部716がウィーナーフィルタ等を適用するようにしてもよい。
【0363】
インループフィルタ部716は、フィルタ処理された局所復号画像Rlocalを並べ替えバッファ717およびフレームメモリ718に供給する。
【0364】
<並べ替えバッファ>
並べ替えバッファ717は、インループフィルタ部716から供給された局所復号画像Rlocalを入力とし、それを保持(記憶)する。並べ替えバッファ717は、その局所復号画像Rlocalを用いてピクチャ単位毎の復号画像Rを再構築し、保持する(バッファ内に格納する)。並べ替えバッファ717は、得られた復号画像Rを、復号順から再生順に並べ替える。並べ替えバッファ717は、並べ替えた復号画像R群を動画像データとして画像復号装置700の外部に出力する。
【0365】
<フレームメモリ>
フレームメモリ718は、画像に関するデータの記憶に関する処理を行う。例えば、フレームメモリ718は、演算部715より供給される局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ718内のバッファへ格納する。
【0366】
また、フレームメモリ718は、インループフィルタ部716から供給される、インループフィルタ処理された局所復号画像Rlocalを入力とし、ピクチャ単位毎の復号画像Rを再構築して、フレームメモリ718内のバッファへ格納する。フレームメモリ718は、適宜、その記憶している復号画像R(またはその一部)を参照画像として予測部719に供給する。
【0367】
なお、フレームメモリ718が、復号画像の生成に係るヘッダ情報Hinfo、予測モード情報Pinfo、変換情報Tinfo、フィルタ情報Finfoなどを記憶するようにしても良い。
【0368】
<予測部>
予測部719は、予測画像の生成に関する処理を行う。例えば、予測部719は、復号部712から供給される予測モード情報Pinfoを入力とし、その予測モード情報Pinfoによって指定される予測方法により予測を行い、予測画像Pを導出する。その導出の際、予測部719は、その予測モード情報Pinfoによって指定される、フレームメモリ718に格納されたフィルタ前またはフィルタ後の復号画像R(またはその一部)を、参照画像として利用する。予測部719は、導出した予測画像Pを、演算部715に供給する。
【0369】
なお、これらの処理部(蓄積バッファ711乃至予測部719)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【0370】
以上のような構成の画像復号装置700において、復号部712に本技術を適用する。つまり、復号部712が図13に示される復号装置200と同様の構成を有し、同様の処理を行うようにする。つまり、復号部712が、上述した方法#1乃至方法#8のいずれかを行うようにする。このようにすることにより、画像復号装置700は、第1の実施の形態乃至第8の実施の形態のいずれかにおいて上述したのと同様の効果を得ることができる。したがって、画像復号装置700は、符号化効率の低減を抑制する(符号化効率を改善する)ことができる。換言するに、画像復号装置700は、復号画像の画質の低減を抑制することができる。
【0371】
<画像復号処理の流れ>
次に、以上のような構成の画像復号装置700により実行される各処理の流れについて説明する。最初に、図62のフローチャートを参照して、画像符号化処理の流れの例を説明する。
【0372】
画像復号処理が開始されると、蓄積バッファ711は、ステップS701において、画像復号装置700の外部から供給される符号化データ(ビットストリーム)を取得して保持する(蓄積する)。
【0373】
ステップS702において、復号部712は、その符号化データ(ビットストリーム)を復号し、量子化変換係数レベルlevelを得る。また、復号部712は、この復号により、符号化データ(ビットストリーム)から各種符号化パラメータをパースする(解析して取得する)。
【0374】
ステップS703において、逆量子化部713は、ステップS702の処理により得られた量子化変換係数レベルlevelに対して、符号化側で行われた量子化の逆処理である逆量子化を行い、変換係数Coeff_IQを得る。
【0375】
ステップS704において、逆直交変換部714は、ステップS703において得られた変換係数Coeff_IQに対して、符号化側で行われた直交変換処理の逆処理である逆直交変換処理を行い、予測残差D'を得る。
【0376】
ステップS705において、予測部719は、ステップS702においてパースされた情報に基づいて、符号化側より指定される予測方法で予測処理を実行し、フレームメモリ718に記憶されている参照画像を参照する等して、予測画像Pを生成する。
【0377】
ステップS706において、演算部715は、ステップS704において得られた予測残差D'と、ステップS705において得られた予測画像Pとを加算し、局所復号画像Rlocalを導出する。
【0378】
ステップS707において、インループフィルタ部716は、ステップS706の処理により得られた局所復号画像Rlocalに対して、インループフィルタ処理を行う。
【0379】
ステップS708において、並べ替えバッファ717は、ステップS707の処理により得られたフィルタ処理された局所復号画像Rlocalを用いて復号画像Rを導出し、その復号画像R群の順序を復号順から再生順に並べ替える。再生順に並べ替えられた復号画像R群は、動画像として画像復号装置700の外部に出力される。
【0380】
また、ステップS709において、フレームメモリ718は、ステップS706の処理により得られた局所復号画像Rlocal、および、ステップS707の処理により得られたフィルタ処理後の局所復号画像Rlocalの内、少なくとも一方を記憶する。
【0381】
ステップS709の処理が終了すると、画像復号処理が終了する。
【0382】
以上のような流れの画像復号処理において、ステップS703の復号処理に本技術を適用する。つまり、このステップS703において、図15と同様の流れの復号処理が行われるようにする。つまり、復号部712が、上述した方法#1乃至方法#8のいずれかの方法を適用した復号処理を行うようにする。このようにすることにより、画像復号装置700は、第1の実施の形態乃至第8の実施の形態のいずれかにおいて上述したのと同様の効果を得ることができる。したがって、画像復号装置700は、符号化効率の低減を抑制する(符号化効率を改善する)ことができる。換言するに、画像復号装置700は、復号画像の画質の低減を抑制することができる。
【0383】
<11.付記>
<コンピュータ>
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
【0384】
図63は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【0385】
図63に示されるコンピュータ800において、CPU(Central Processing Unit)801、ROM(Read Only Memory)802、RAM(Random Access Memory)803は、バス804を介して相互に接続されている。
【0386】
バス804にはまた、入出力インタフェース810も接続されている。入出力インタフェース810には、入力部811、出力部812、記憶部813、通信部814、およびドライブ815が接続されている。
【0387】
入力部811は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部812は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部813は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部814は、例えば、ネットワークインタフェースよりなる。ドライブ815は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア821を駆動する。
【0388】
以上のように構成されるコンピュータでは、CPU801が、例えば、記憶部813に記憶されているプログラムを、入出力インタフェース810およびバス804を介して、RAM803にロードして実行することにより、上述した一連の処理が行われる。RAM803にはまた、CPU801が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0389】
コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア821に記録して適用することができる。その場合、プログラムは、リムーバブルメディア821をドライブ815に装着することにより、入出力インタフェース810を介して、記憶部813にインストールすることができる。
【0390】
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部814で受信し、記憶部813にインストールすることができる。
【0391】
その他、このプログラムは、ROM802や記憶部813に、あらかじめインストールしておくこともできる。
【0392】
<情報・処理の単位>
以上において説明した各種情報が設定されるデータ単位や、各種処理が対象とするデータ単位は、それぞれ任意であり上述した例に限定されない。例えば、これらの情報や処理が、それぞれ、TU(Transform Unit)、TB(Transform Block)、PU(Prediction Unit)、PB(Prediction Block)、CU(Coding Unit)、LCU(Largest Coding Unit)、サブブロック、ブロック、タイル、スライス、ピクチャ、シーケンス、またはコンポーネント毎に設定されるようにしてもよいし、それらのデータ単位のデータを対象とするようにしてもよい。もちろん、このデータ単位は、情報や処理毎に設定され得るものであり、全ての情報や処理のデータ単位が統一されている必要はない。なお、これらの情報の格納場所は任意であり、上述したデータ単位のヘッダやパラメータセット等に格納されるようにしてもよい。また、複数個所に格納されるようにしてもよい。
【0393】
<制御情報>
以上の各実施の形態において説明した本技術に関する制御情報を符号化側から復号側に伝送するようにしてもよい。例えば、上述した本技術を適用することを許可(または禁止)するか否かを制御する制御情報(例えばenabled_flag)を伝送するようにしてもよい。また、例えば、上述した本技術を適用する対象(または適用しない対象)を示す制御情報(例えばpresent_flag)を伝送するようにしてもよい。例えば、本技術を適用する(または、適用を許可若しくは禁止する)ブロックサイズ(上限若しくは下限、またはその両方)、フレーム、コンポーネント、またはレイヤ等を指定する制御情報を伝送するようにしてもよい。
【0394】
<本技術の適用対象>
本技術は、任意の画像符号化・復号方式に適用することができる。つまり、上述した本技術と矛盾しない限り、変換(逆変換)、量子化(逆量子化)、符号化(復号)、予測等、画像符号化・復号に関する各種処理の仕様は任意であり、上述した例に限定されない。また、上述した本技術と矛盾しない限り、これらの処理の内の一部を省略してもよい。
【0395】
また本技術は、複数の視点(ビュー(view))の画像を含む多視点画像の符号化・復号を行う多視点画像符号化・復号システムに適用することができる。その場合、各視点(ビュー(view))の符号化・復号において、本技術を適用するようにすればよい。
【0396】
さらに本技術は、所定のパラメータについてスケーラビリティ(scalability)機能を有するように複数レイヤ化(階層化)された階層画像の符号化・復号を行う階層画像符号化(スケーラブル符号化)・復号システムに適用することができる。その場合、各階層(レイヤ)の符号化・復号において、本技術を適用するようにすればよい。
【0397】
また、以上においては、本技術の適用例として、符号化装置100、復号装置200,画像符号化装置600、および画像復号装置700について説明したが、本技術は、任意の構成に適用することができる。
【0398】
例えば、本技術は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機(例えばテレビジョン受像機や携帯電話機)、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置(例えばハードディスクレコーダやカメラ)などの、様々な電子機器に応用され得る。
【0399】
また、例えば、本技術は、システムLSI(Large Scale Integration)等としてのプロセッサ(例えばビデオプロセッサ)、複数のプロセッサ等を用いるモジュール(例えばビデオモジュール)、複数のモジュール等を用いるユニット(例えばビデオユニット)、または、ユニットにさらにその他の機能を付加したセット(例えばビデオセット)等、装置の一部の構成として実施することもできる。
【0400】
また、例えば、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、本技術を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングとして実施するようにしてもよい。例えば、コンピュータ、AV(Audio Visual)機器、携帯型情報処理端末、IoT(Internet of Things)デバイス等の任意の端末に対して、画像(動画像)に関するサービスを提供するクラウドサービスにおいて本技術を実施するようにしてもよい。
【0401】
なお、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
【0402】
<本技術を適用可能な分野・用途>
本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
【0403】
例えば、本技術は、観賞用コンテンツ等の提供の用に供されるシステムやデバイスに適用することができる。また、例えば、本技術は、交通状況の監理や自動運転制御等、交通の用に供されるシステムやデバイスにも適用することができる。さらに、例えば、本技術は、セキュリティの用に供されるシステムやデバイスにも適用することができる。また、例えば、本技術は、機械等の自動制御の用に供されるシステムやデバイスに適用することができる。さらに、例えば、本技術は、農業や畜産業の用に供されるシステムやデバイスにも適用することができる。また、本技術は、例えば火山、森林、海洋等の自然の状態や野生生物等を監視するシステムやデバイスにも適用することができる。さらに、例えば、本技術は、スポーツの用に供されるシステムやデバイスにも適用することができる。
【0404】
<その他>
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の2状態を識別する際に用いる情報だけでなく、3以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の2値であってもよいし、3値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報(フラグも含む)は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
【0405】
また、符号化データ(ビットストリーム)に関する各種情報(メタデータ等)は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の記録媒体(または同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、1フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
【0406】
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを1つのデータにまとめるといった、複数の物を1つにまとめることを意味し、上述の「関連付ける」の1つの方法を意味する。
【0407】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【0408】
例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
【0409】
また、例えば、上述したプログラムは、任意の装置において実行されるようにしてもよい。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
【0410】
また、例えば、1つのフローチャートの各ステップを、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。さらに、1つのステップに複数の処理が含まれる場合、その複数の処理を、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
【0411】
また、例えば、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
【0412】
また、例えば、本技術に関する複数の技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
【0413】
なお、本技術は以下のような構成も取ることができる。
(1) 非ゼロサブブロック同士でbin数を分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、画像データから導出された係数データを用いて、bin数が前記上限値を越えないように、シンタックスエレメント値を導出するシンタックスエレメント値導出部と、
導出された前記シンタックスエレメント値を符号化して符号化データを生成する符号化部と
を備える画像処理装置。
(2) 前記シンタックスエレメント値導出部は、直前の非ゼロサブブロックの余剰bin数と、前記処理対象サブブロックに割り当てられるbin数の仮の上限値とに基づいて、前記処理対象サブブロックに割り当てられるbin数の上限値を設定する
(1)に記載の画像処理装置。
(3) 前記シンタックスエレメント値導出部は、CU内の非ゼロサブブロック同士でbin数を分配して前記処理対象サブブロックに割り当てられるbin数の上限値を設定する
(1)または(2)に記載の画像処理装置。
(4) 前記シンタックスエレメント値導出部は、ブロック内の全非ゼロサブブロックに割り当てられるbin数の総和が、前記ブロック内の各非ゼロサブブロックに割り当てられるbin数の仮の上限値の総和を越えないように、前記処理対象サブブロックについて、前記シンタックスエレメント値を導出する
(1)乃至(3)のいずれかに記載の画像処理装置。
(5) 前記シンタックスエレメント値導出部は、さらに、前記ブロック内のゼロサブブロックの余剰bin数を分配する
(4)に記載の画像処理装置。
(6) 前記シンタックスエレメント値導出部は、ブロックに割り当てられるbin数の上限値を設定し、前記ブロックについて、画像データから導出された係数データを用いて、bin数が前記上限値を越えないように、シンタックスエレメント値を導出する
(1)乃至(5)のいずれかに記載の画像処理装置。
(7) 非ゼロサブブロック同士でbin数を分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、画像データから導出された係数データを用いて、bin数が前記上限値を越えないように、シンタックスエレメント値を導出し、
導出された前記シンタックスエレメント値を符号化して符号化データを生成する
画像処理方法。
【0414】
(8) 符号化データを復号してシンタックスエレメント値を生成する復号部と、
非ゼロサブブロック同士でbin数を分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、生成された前記シンタックスエレメント値を用いて、bin数が前記上限値を越えないように、画像データに対応する係数データを導出する係数データ導出部と
を備える画像処理装置。
(9) 符号化データを復号してシンタックスエレメント値を生成し、
非ゼロサブブロック同士でbin数を分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、生成された前記シンタックスエレメント値を用いて、bin数が前記上限値を越えないように、画像データに対応する係数データを導出する
画像処理方法。
【0415】
(10) ゼロサブブロックに割り当てられるbin数を非ゼロサブブロックに分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、画像データから導出された係数データを用いて、bin数が前記上限値を越えないように、シンタックスエレメント値を導出するシンタックスエレメント値導出部と、
導出された前記シンタックスエレメント値を符号化して符号化データを生成する符号化部と
を備える画像処理装置。
(11) 前記シンタックスエレメント値導出部は、ゼロサブブロックの平均余剰bin数と、前記処理対象サブブロックに割り当てられるbin数の仮の上限値とに基づいて、前記処理対象サブブロックに割り当てられるbin数の上限値を設定する
(10)に記載の画像処理装置。
(12) 前記シンタックスエレメント値導出部は、さらに、前記処理対象サブブロックの位置に応じた優先度に基づいて、前記処理対象サブブロックに割り当てられるbin数の上限値を設定する
(11)に記載の画像処理装置。
(13) ゼロサブブロックに割り当てられるbin数を非ゼロサブブロックに分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、画像データから導出された係数データを用いて、bin数が前記上限値を越えないように、シンタックスエレメント値を導出し、
導出された前記シンタックスエレメント値を符号化して符号化データを生成する
画像処理方法。
【0416】
(14) 符号化データを復号してシンタックスエレメント値を生成する復号部と、
ゼロサブブロックに割り当てられるbin数を非ゼロサブブロックに分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、生成された前記シンタックスエレメント値を用いて、bin数が前記上限値を越えないように、画像データに対応する係数データを導出する係数データ導出部と
を備える画像処理装置。
(15) 符号化データを復号してシンタックスエレメント値を生成し、
ゼロサブブロックに割り当てられるbin数を非ゼロサブブロックに分配して処理対象サブブロックに割り当てられるbin数の上限値を設定し、前記処理対象サブブロックについて、生成された前記シンタックスエレメント値を用いて、bin数が前記上限値を越えないように、画像データに対応する係数データを導出する
画像処理方法。
【符号の説明】
【0417】
100 符号化装置, 101 シーケンサ, 102 CABAC, 121 2値化部, 122 選択部, 123 コンテキストモデル, 124 算術符号化部, 125 算術符号化部, 126 選択部, 200 復号装置, 201 CABAC, 202 パーサ, 221 選択部, 222 コンテキストモデル, 223 算術復号部, 224 算術復号部, 225 選択部, 226 多値化部, 600 画像符号化装置, 615 符号化部, 700 画像復号装置, 712 復号部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52
図53
図54
図55
図56
図57
図58
図59
図60
図61
図62
図63