(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-19
(45)【発行日】2023-01-27
(54)【発明の名称】画像復号装置及び画像符号化装置
(51)【国際特許分類】
H04N 19/13 20140101AFI20230120BHJP
H04N 19/157 20140101ALI20230120BHJP
H04N 19/176 20140101ALI20230120BHJP
H04N 19/91 20140101ALI20230120BHJP
【FI】
H04N19/13
H04N19/157
H04N19/176
H04N19/91
(21)【出願番号】P 2018556643
(86)(22)【出願日】2017-12-08
(86)【国際出願番号】 JP2017044240
(87)【国際公開番号】W WO2018110462
(87)【国際公開日】2018-06-21
【審査請求日】2020-10-26
(31)【優先権主張番号】P 2016244900
(32)【優先日】2016-12-16
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2017051342
(32)【優先日】2017-03-16
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000005049
【氏名又は名称】シャープ株式会社
(73)【特許権者】
【識別番号】518446879
【氏名又は名称】鴻穎創新有限公司
【氏名又は名称原語表記】FG INNOVATION COMPANY LIMITED
【住所又は居所原語表記】Flat 2623,26/F Tuen Mun Central Square,22 Hoi Wing Road,Tuen Mun,New Territories,The Hong Kong Special Administrative Region of the People’s Republic of China
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】猪飼 知宏
(72)【発明者】
【氏名】八杉 将伸
(72)【発明者】
【氏名】青野 友子
【審査官】清山 昂平
(56)【参考文献】
【文献】国際公開第2013/047811(WO,A1)
【文献】High efficiency video coding,Recommendation ITU-T H.265,2013年04月,pp.164, 181-184
【文献】Jianle Chen, et al.,Algorithm Description of Joint Exploration Test Model 2,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-B1001_v3,2016年02月20日,pp.1-3
【文献】Zhao Wang, et al.,Local-Constrained Quadtree Plus Binary Tree Block Partition Structure for Enhanced Video Coding,Visual Communications and Image Processing (VCIP 2016),IEEE,2016年11月27日
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ピクチャをブロック毎に復号する画像復号装置において、
対象ブロックの第1の高さと、当該対象ブロックの左側に隣接する左側隣接ブロックの第2の高さとの第1の比較結果、及び当該対象ブロックの第1の幅と、当該対象ブロックの上側に隣接する上側隣接ブロックの第2の幅との第2の比較結果を含む分割関連情報の比較結果に基づいて、対象ブロックの分割情報のコンテキストを決定するコンテキスト決定部と、
上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を復号する分割情報復号部と
を備えていることを特徴とする画像復号装置。
【請求項2】
上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであることを特徴とする請求項1に記載の画像復号装置。
【請求項3】
ピクチャをブロック毎に符号化する画像符号化装置において、
対象ブロックの第1の高さと、当該対象ブロックの左側に隣接する左側隣接ブロックの第2の高さとの第1の比較結果、及び当該対象ブロックの第1の幅と、当該対象ブロックの上側に隣接する上側隣接ブロックの第2の幅との第2の比較結果を含む分割関連情報の比較結果に基づいて、対象ブロックの分割情報のコンテキストを決定するコンテキスト決定部と、
上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を符号化する分割情報符号化部と
を備えていることを特徴とする画像符号化装置。
【請求項4】
上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであることを特徴とする請求項
3に記載の画像符号化装置。
【請求項5】
ピクチャをブロック毎に復号する画像復号装置において、
対象ブロックの分割情報のコンテキストを、当該対象ブロックの第1の高さ及び第1の幅、当該対象ブロックの左側に隣接する左側隣接ブロックの第2の高さ、並びに当該対象ブロックの上側に隣接する上側隣接ブロックの第2の幅に基づいて特定される分割状況に基づいて決定するコンテキスト決定部と、
上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を復号する分割情報復号部と
を備えていることを特徴とする画像復号装置。
【請求項6】
上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであることを特徴とする請求項
5に記載の画像復号装置。
【請求項7】
上記分割情報は、上記対象ブロックの分割方向を示す方向フラグであることを特徴とする請求項
5に記載の画像復号装置。
【請求項8】
上記分割情報は、上記対象ブロックを水平分割するか否かを示す水平分割フラグ、及び上記対象ブロックを垂直分割するか否かを示す垂直分割フラグであることを特徴とする請求項
5に記載の画像復号装置。
【請求項9】
ピクチャをブロック毎に符号化する画像符号化装置において、
対象ブロックの分割情報のコンテキストを、当該対象ブロックの第1の高さ及び第1の幅、当該対象ブロックの左側に隣接する左側隣接ブロックの第2の高さ、並びに当該対象ブロックの上側に隣接する上側隣接ブロックの第2の幅に基づいて特定される分割状況に基づいて決定するコンテキスト決定部と、
上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を符号化する分割情報符号化部と
を備えていることを特徴とする画像符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像復号装置、及び画像符号化装置に関する。
【背景技術】
【0002】
動画像を効率的に伝送又は記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、及び、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
【0003】
具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video Coding)にて提案されている方式などが挙げられる。
【0004】
このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することにより得られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び、符号化単位を分割することより得られるブロックである予測ユニット(PU)、変換ユニット(TU)からなる階層構造により管理され、CUごとに符号化/復号される。
【0005】
また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測残差(「差分画像」又は「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、及び、画面内予測(イントラ予測)が挙げられる。
【0006】
また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。
【0007】
さらに、近年では、スライスを構成するCTUの分割方式として、CTUを四分木(quad tree)分割するQT分割に加えて、二分木(binary tree)分割するBT分割が導入されている。このBT分割には、水平分割と垂直分割とが含まれる。
【先行技術文献】
【非特許文献】
【0008】
【文献】"Algorithm Description of Joint Exploration Test Model 5", JVET-E1001-v1, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 12-20 January 2017
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、CTUの分割方式として、QT分割に加えてBT分割が導入されたことにより、CUへの分割パターンが増大し、動画像の符号化処理量又は復号処理量が増え、符号化/復号が複雑となる。QT分割及びBT分割では、QT分割フラグを符号化又は復号するとともに、BT分割フラグを符号化又は復号する必要がある。そして、これらの分割フラグの符号量が大きいという問題がある。
【0010】
本発明の一態様は、上記の問題点に鑑みてなされたものであり、その主たる目的は、画像符号化装置又は画像復号装置において、分割情報の符号量を削減できる技術を提供することである。
【課題を解決するための手段】
【0011】
上記の課題を解決するために、本発明の一態様に係る画像復号装置は、ピクチャをブロック毎に復号する画像復号装置において、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割関連情報を比較した結果を参照して、対象ブロックの分割情報のコンテキストを決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を復号する分割情報復号部とを備えている。
【0012】
上記の課題を解決するために、本発明の一態様に係る画像符号化装置は、ピクチャをブロック毎に符号化する画像符号化装置において、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割関連情報を比較した結果を参照して、対象ブロックの分割情報のコンテキストを決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を符号化する分割情報符号化部とを備えている。
【0013】
上記の課題を解決するために、本発明の一態様に係る画像復号装置は、ピクチャをブロック毎に復号する画像復号装置において、対象ブロックの分割情報のコンテキストを、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割状況を参照して決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を復号する分割情報復号部とを備えている。
【0014】
上記の課題を解決するために、本発明の一態様に係る画像符号化装置は、ピクチャをブロック毎に符号化する画像符号化装置において、対象ブロックの分割情報のコンテキストを、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割状況を参照して決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を符号化する分割情報符号化部とを備えている。
【0015】
上記の課題を解決するために、本発明の一態様に係る画像復号装置は、ピクチャをブロック毎に復号する画像復号装置において、第1の色コンポーネントに関する対象ブロックの分割情報のコンテキストを、既に復号された第2の色コンポーネントに関する対応ブロックの分割状況を参照して決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記第1の色コンポーネントに関する対象ブロックの分割情報を復号する分割情報復号部とを備えている。
【0016】
上記の課題を解決するために、本発明の一態様に係る画像符号化装置は、ピクチャをブロック毎に符号化する画像符号化装置において、第1の色コンポーネントに関する対象ブロックの分割情報のコンテキストを、既に復号された第2の色コンポーネントに関する対応ブロックの分割状況を参照して決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記第1の色コンポーネントに関する対象ブロックの分割情報を符号化する分割情報符号化部とを備えている。
【発明の効果】
【0017】
本発明の一態様によれば、画像復号装置において、分割情報の符号量を削減できる。
【図面の簡単な説明】
【0018】
【
図1】本実施形態に係る画像伝送システムの構成を示す概略図である。
【
図2】本実施形態に係る符号化ストリームのデータの階層構造を示す図である。
【
図3】PU分割モードのパターンを示す図である。(a)~(h)は、それぞれ、PU分割モードが、2Nx2N、2NxN、2NxnU、2NxnD、Nx2N、nLx2N、nRx2N、及び、NxNの場合のパーティション形状について示している。
【
図4】参照ピクチャ及び参照ピクチャリストの一例を示す概念図である。
【
図5】本実施形態に係る画像符号化装置の構成を示すブロック図である。
【
図6】本実施形態に係る画像復号装置の構成を示す概略図である。
【
図7】本実施形態に係る画像符号化装置の要部構成を示すブロック図である。
【
図8】本実施形態に係る画像符号化装置を搭載した送信装置、及び、画像復号装置を搭載した受信装置の構成について示した図である。(a)は、画像符号化装置を搭載した送信装置を示しており、(b)は、画像復号装置を搭載した受信装置を示している。
【
図9】本実施形態に係る画像符号化装置を搭載した記録装置、及び、画像復号装置を搭載した再生装置の構成について示した図である。(a)は、画像符号化装置を搭載した記録装置を示しており、(b)は、画像復号装置を搭載した再生装置を示している。
【
図10】本実施形態に係る画像復号装置の要部構成を示したブロック図である。
【
図11】(a)は、QT分割を説明するための図である。(b)は、BT分割を説明するための図である。(c)は、TT分割を説明するための図である。
【
図12】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法を説明するフローチャートである。
【
図13】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法を説明するための図である。
【
図14】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例1を説明するための図である。
【
図15】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例2を説明するための図である。
【
図16】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例3を説明するための図である。
【
図17】対象ブロックと隣接ブロックのデプスを示す図である。
【
図18】本発明の一実施形態に係るコンテキスト決定方法の具体例を説明するための図である。
【
図19】対象ブロックと隣接ブロックの分割およびデプスの関係を示す一例である。
【
図20】対象ブロックと隣接ブロックの位置を示す図である。
【
図21】本発明の一実施形態に係るコンテキスト決定方法の具体例を説明するフローチャートである。
【
図22】本発明の一実施形態に係るクリッピング処理を説明するフローチャートである。
【
図23】本発明の一実施形態に係るコンテキスト決定方法において、分割関連情報の差分値の加算結果あるいは最大値とコンテキストのマッピング表の一例である。
【
図24】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法を説明するフローチャートである。
【
図25】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例1を説明するための図である。(a)は、色差ブロックを示している。(b)は、輝度ブロックを示している。
【
図26】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例2を説明するための図である。(a)は、色差ブロックを示している。(b)は、輝度ブロックを示している。
【
図27】本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例3を説明するための図である。(a)は、色差ブロックを示している。(b)は、輝度ブロックを示している。
【
図28】本発明の一態様に係る画像復号装置によるコンテキスト決定方法を説明するフローチャートである。
【
図29】(a)~(d)は、それぞれ、本発明の一実施形態に係る画像復号装置によるコンテキスト決定方法の具体例を説明するための表である。
【
図30】本発明の一態様に係る画像復号装置によるコンテキスト決定方法を説明するフローチャートである。
【発明を実施するための形態】
【0019】
〔第1の実施形態〕
以下、図面を参照しながら本発明の実施形態について説明する。
【0020】
図1は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
【0021】
画像伝送システム1は、符号化対象画像を符号化した符号を伝送し、伝送された符号を復号し画像を表示するシステムである。画像伝送システム1は、画像符号化装置11、ネットワーク21、画像復号装置31及び画像表示装置41を含んで構成される。
【0022】
画像符号化装置11には、単一レイヤ若しくは複数レイヤの画像を示す画像Tが入力される。レイヤとは、ある時間を構成するピクチャが1つ以上ある場合に、複数のピクチャを区別するために用いられる概念である。たとえば、同一ピクチャを、画質や解像度の異なる複数のレイヤで符号化するとスケーラブル符号化になり、異なる視点のピクチャを複数のレイヤで符号化するとビュースケーラブル符号化となる。複数のレイヤのピクチャ間で予測(インターレイヤ予測、インタービュー予測)を行う場合には、符号化効率が大きく向上する。また予測を行わない場合(サイマルキャスト)の場合にも、符号化データをまとめることができる。
【0023】
ネットワーク21は、画像符号化装置11が生成した符号化ストリームTeを画像復号装置31に伝送する。ネットワーク21は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blu-ray Disc:登録商標)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
【0024】
画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した1又は複数の復号画像Tdを生成する。
【0025】
画像表示装置41は、画像復号装置31が生成した1又は複数の復号画像Tdの全部又は一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
【0026】
<演算子>
本明細書で用いる演算子を以下に記載する。
【0027】
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、|=は別の条件との和演算(OR)である。
【0028】
x ? y : zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。
【0029】
Clip3(a, b, c) は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
【0030】
<符号化ストリームTeの構造>
本実施形態に係る画像符号化装置11及び画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
【0031】
図2は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、及びシーケンスを構成する複数のピクチャを含む。
図2の(a)~(f)は、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニット(Coding Unit;CU)を示す図である。
【0032】
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、
図2の(a)に示すように、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。
図2では、#0と#1すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類及びレイヤの数はこれによらない。
【0033】
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合及び動画像に含まれる複数のレイヤ及び個々のレイヤに関連する符号化パラメータの集合が規定されている。
【0034】
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを選択する。
【0035】
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
【0036】
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、
図2の(b)に示すように、スライスS0~SNS-1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
【0037】
なお、以下、スライスS0~SNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
【0038】
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスSは、
図2の(c)に示すように、スライスヘッダSH、及び、スライスデータSDATAを含んでいる。
【0039】
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
【0040】
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライスなどが挙げられる。
【0041】
なお、スライスヘッダSHには、上記符号化ビデオシーケンスに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
【0042】
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、
図2の(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit)を含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
【0043】
(符号化ツリーユニット)
図2の(e)に示すように、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な四分木分割(QT分割)又は二分木分割(BT分割)により分割される。再帰的な四分木分割又は二分木分割により得られる木構造のノードのことを符号化ノード(CN:Coding Node)と称する。四分木及び二分木の中間ノードは、符号化ツリー(CT:Coding Tree)であり、符号化ツリーユニット自身も最上位の符号化ツリーとして規定される。
【0044】
CTUは、QT分割を行うか否かを示すQT分割フラグ(cu_split_flag)、及びBT分割の分割方法を示すBT分割モード(split_bt_mode)を含む。cu_split_flagが1の場合には、4つの符号化ノードCNに分割される。cu_split_flagが0の場合には、符号化ノードCNは分割されず、1つの符号化ユニット(CU:Coding Unit)をノードとして持つ。一方、split_bt_modeが2の場合には、2つの符号化ノードCNに水平分割(horitonzal split、水平な分割線による分割、上と下の2つ以上のブロックに分割)される。split_bt_modeが1の場合には、2つの符号化ノードCNに垂直分割(vertical split、垂直な分割線による分割、ここでは左と右の2つ以上のブロックに分割)される。split_bt_modeが0の場合には、符号化ノードCNは分割されず、1つの符号化ユニットCUをノードとして持つ。なお、水平分割は、あるブロックが垂直方向に並ぶ2つ以上のブロックに分割されるため、垂直な分割(split vertically)とも呼ぶ。同様に、垂直分割は、あるブロックが水平方向に並ぶ2つ以上のブロックに分割されるため水平な分割(split horizontally)とも呼ぶ。まとめると用語の定義は以下のとおりである。
【0045】
水平分割(horizontal split)= 垂直に分割(split vertically)= 上下に分割
垂直分割(vertical split)= 水平に分割(split horizontally)= 左右に分割
符号化ユニットCUは符号化ノードの末端ノード(リーフノード)であり、これ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
【0046】
また、符号化ツリーユニットCTUのサイズが64x64画素の場合には、符号化ユニットのサイズは、64x64画素、64x32画素、32x64画素、32x32画素、64x16画素、16x64画素、32x16画素、16x32画素、16x16画素、64x8画素、8x64画素、32x8画素、8x32画素、16x8画素、8x16画素、及び、8x8画素の何れかをとり得る。
【0047】
(符号化ユニット)
図2の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
【0048】
予測ツリーでは、符号化ユニットを1又は複数に分割した各予測ユニット(PU)の予測情報(参照ピクチャインデックス、動きベクトル等)が規定される。別の表現でいえば、予測ユニットは、符号化ユニットを構成する1又は複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1又は複数の予測ユニットを含む。なお、以下では、予測ユニットをさらに分割した予測単位を「サブブロック」と呼ぶ。サブブロックは、複数の画素によって構成されている。予測ユニットとサブブロックのサイズが等しい場合には、予測ユニット中のサブブロックは1つである。予測ユニットがサブブロックのサイズよりも大きい場合には、予測ユニットは、サブブロックに分割される。たとえば予測ユニットが8x8、サブブロックが4x4の場合には、予測ユニットは水平に2分割、垂直に2分割からなる、4つのサブブロックに分割される。
【0049】
予測処理は、この予測ユニット(サブブロック)ごとに行ってもよい。
【0050】
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
【0051】
イントラ予測の場合、分割方法は、2Nx2N(符号化ユニットと同一サイズ)と、NxNとがある。
【0052】
また、インター予測の場合、分割方法は、符号化データのPU分割モード(part_mode)により符号化され、2Nx2N(符号化ユニットと同一サイズ)、2NxN、2NxnU、2NxnD、Nx2N、nLx2N、nRx2N、及び、NxNなどがある。なお、2NxN、Nx2Nは1:1の対称分割を示し、
2NxnU、2NxnD及びnLx2N、nRx2Nは、1:3、3:1の非対称分割を示す。CUに含まれるPUを順にPU0、PU1、PU2、PU3と表現する。
【0053】
図3の(a)~(h)に、それぞれのPU分割モードにおけるパーティションの形状(PU分割の境界の位置)を具体的に図示している。
図3の(a)は、2Nx2Nのパーティションを示し、(b)、(c)、(d)は、それぞれ、2NxN、2NxnU、及び、2NxnDのパーティション(横長パーティション)を示す。(e)、(f)、(g)は、それぞれ、Nx2N、nLx2N、nRx2Nである場合のパーティション(縦長パーティション)を示し、(h)は、NxNのパーティションを示す。なお、横長パーティションと縦長パーティションを総称して長方形パーティション、2Nx2N、NxNを総称して正方形パーティションと呼ぶ。
【0054】
また、変換ツリー(TT:Transform Tree)においては、符号化ユニットが1又は複数の変換ユニット(TU:Transform Unit)に分割され、各変換ユニットの位置とサイズとが規定される。別の表現でいえば、変換ユニットは、符号化ユニットを構成する1又は複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1又は複数の変換ユニットを含む。
【0055】
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ユニットとして割り付けるものと、上述したCUの分割と同様、CUを四分木分割(TU分割)することにより変換ユニットを得るものがある。変換処理は、この変換ユニットごとに行われる。
【0056】
(予測パラメータ)
予測ユニット(PU:Prediction Unit)の予測画像は、PUに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータ若しくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、動きベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、フラグが0以外(たとえば1)をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
【0057】
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。
【0058】
(参照ピクチャリスト)
参照ピクチャリストは、参照ピクチャメモリ306に記憶された参照ピクチャからなるリストである。
図4は、参照ピクチャ及び参照ピクチャリストの一例を示す概念図である。
図4の(a)において、矩形はピクチャ、矢印はピクチャの参照関係、横軸は時間、矩形中のI、P、Bは各々イントラピクチャ、単予測ピクチャ、双予測ピクチャ、矩形中の数字は復号順を示す。図に示すように、ピクチャの復号順は、I0、P1、B2、B3、B4であり、表示順は、I0、B3、B2、B4、P1である。
図4の(b)に、参照ピクチャリストの例を示す。参照ピクチャリストは、参照ピクチャの候補を表すリストであり、1つのピクチャ(スライス)が1つ以上の参照ピクチャリストを有してもよい。図の例では、対象ピクチャB3は、L0リストRefPicList0及びL1リストRefPicList1の2つの参照ピクチャリストを持つ。対象ピクチャがB3の場合の参照ピクチャは、I0、P1、B2であり、参照ピクチャはこれらのピクチャを要素として持つ。個々の予測ユニットでは、参照ピクチャリストRefPicListX中のどのピクチャを実際に参照するかを参照ピクチャインデックスrefIdxLXで指定する。図では、refIdxL0及びrefIdxL1により参照ピクチャP1とB2が参照される例を示す。
【0059】
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードは、予測リスト利用フラグpredFlagLX(又はインター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めずに、既に処理した近傍PUの予測パラメータから導出する用いるモードであり、AMVPモードは、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXを符号化データに含めるモードである。なお、動きベクトルmvLXは、予測ベクトルmvpLXを識別する予測ベクトルインデックスmvp_LX_idxと差分ベクトルmvdLXとして符号化される。
【0060】
インター予測識別子inter_pred_idcは、参照ピクチャの種類及び数を示す値であり、PRED_L0、PRED_L1、PRED_BIの何れかの値をとる。PRED_L0、PRED_L1は、各々L0リスト、L1リストの参照ピクチャリストで管理された参照ピクチャを用いることを示し、1枚の参照ピクチャを用いること(単予測)を示す。PRED_BIは2枚の参照ピクチャを用いること(双予測BiPred)を示し、L0リストとL1リストで管理された参照ピクチャを用いる。予測ベクトルインデックスmvp_LX_idxは予測ベクトルを示すインデックスであり、参照ピクチャインデックスrefIdxLXは、参照ピクチャリストで管理された参照ピクチャを示すインデックスである。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別する。
【0061】
マージインデックスmerge_idxは、処理が完了したPUから導出される予測パラメータ候補(マージ候補)のうち、いずれかの予測パラメータを復号対象PUの予測パラメータとして用いるかを示すインデックスである。
【0062】
(動きベクトル)
動きベクトルmvLXは、異なる2つのピクチャ上のブロック間のずれ量を示す。動きベクトルmvLXに関する予測ベクトル、差分ベクトルを、それぞれ予測ベクトルmvpLX、差分ベクトルmvdLXと呼ぶ。
【0063】
(インター予測識別子inter_pred_idcと予測リスト利用フラグpredFlagLX)
インター予測識別子inter_pred_idcと、予測リスト利用フラグpredFlagL0、predFlagL1の関係は以下のとおりであり、相互に変換可能である。
【0064】
inter_pred_idc = (predFlagL1<<1) + predFlagL0
predFlagL0 = inter_pred_idc & 1
predFlagL1 = inter_pred_idc >> 1
なお、インター予測パラメータは、予測リスト利用フラグを用いても良いし、インター予測識別子を用いてもよい。また、予測リスト利用フラグを用いた判定は、インター予測識別子を用いた判定に置き替えてもよい。逆に、インター予測識別子を用いた判定は、予測リスト利用フラグを用いた判定に置き替えてもよい。
【0065】
(双予測biPredの判定)
双予測BiPredであるかのフラグbiPredは、2つの予測リスト利用フラグがともに1であるかによって導出できる。たとえば以下の式で導出できる。
【0066】
biPred = (predFlagL0 == 1 && predFlagL1 == 1)
フラグbiPredは、インター予測識別子が2つの予測リスト(参照ピクチャ)を使うことを示す値であるか否かによっても導出できる。たとえば以下の式で導出できる。
【0067】
biPred = (inter_pred_idc == PRED_BI) ? 1 : 0
上記式は、以下の式でも表現できる。
【0068】
biPred = (inter_pred_idc == PRED_BI)
なお、PRED_BIはたとえば3の値を用いることができる。
【0069】
(画像復号装置の構成)
次に、本実施形態に係る画像復号装置31の構成について説明する。
図5は、本実施形態に係る画像復号装置31の構成を示す概略図である。画像復号装置31は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆DCT部311、及び加算部312を含んで構成される。
【0070】
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
【0071】
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報及び、差分画像を生成するための残差情報などがある。
【0072】
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードpredMode、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXである。どの符号を復号するかの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部301は、量子化係数を逆量子化・逆DCT部311に出力する。この量子化係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)を行い量子化して得られる係数である。
【0073】
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してインター予測パラメータを復号する。
【0074】
インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。インター予測パラメータ復号部303の詳細については後述する。
【0075】
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータを復号する。イントラ予測パラメータとは、CUを1つのピクチャ内で予測する処理で用いるパラメータ、例えば、イントラ予測モードIntraPredModeである。イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
【0076】
イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2~34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)の何れかを用いるものである。イントラ予測パラメータ復号部304は、IntraPredModeCは輝度モードと同じモードであるか否かを示すフラグを復号し、フラグが輝度モードと同じモードであることを示せば、IntraPredModeCにIntraPredModeYを割り当て、フラグが輝度モードと異なるモードであることを示せば、IntraPredModeCとして、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)を復号しても良い。
【0077】
ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)等のフィルタを施す。
【0078】
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、復号対象のピクチャ及びCU毎に予め定めた位置に記憶する。
【0079】
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及び予測ユニット(若しくはサブブロック、固定サイズブロック、ピクセル)毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXがある。
【0080】
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャを用いてPUの予測画像を生成する。
【0081】
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャを用いてインター予測によりPUの予測画像を生成する。
【0082】
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(L0リスト、若しくはL1リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象PUを基準として動きベクトルmvLXが示す位置にある参照ピクチャブロックを参照ピクチャメモリ306から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックをもとに予測を行ってPUの予測画像を生成する。インター予測画像生成部309は、生成したPUの予測画像を加算部312に出力する。
【0083】
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたPUのうち、復号対象PUから予め定めた範囲にある隣接PUを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、復号対象PUがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接PUのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
【0084】
イントラ予測画像生成部310は、読み出した隣接PUについてイントラ予測モードIntraPredModeが示す予測モードで予測を行ってPUの予測画像を生成する。イントラ予測画像生成部310は、生成したPUの予測画像を加算部312に出力する。
【0085】
イントラ予測パラメータ復号部304において、輝度と色差で異なるイントラ予測モードを導出する場合、イントラ予測画像生成部310は、輝度予測モードIntraPredModeYに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2~34)の何れかによって輝度のPUの予測画像を生成し、色差予測モードIntraPredModeCに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)の何れかによって色差のPUの予測画像を生成する。
【0086】
逆量子化・逆DCT部311は、エントロピー復号部301から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部311は、求めたDCT係数について逆DCT(Inverse Discrete Cosine Transform、逆離散コサイン変換)を行い、残差信号を算出する。逆量子化・逆DCT部311は、算出した残差信号を加算部312に出力する。
【0087】
加算部312は、インター予測画像生成部309又はイントラ予測画像生成部310から入力されたPUの予測画像と逆量子化・逆DCT部311から入力された残差信号を画素毎に加算して、PUの復号画像を生成する。加算部312は、生成したPUの復号画像を参照ピクチャメモリ306に記憶し、生成したPUの復号画像をピクチャ毎に統合した復号画像Tdを外部に出力する。
【0088】
(画像符号化装置の構成)
次に、本実施形態に係る画像符号化装置11の構成について説明する。
図6は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
【0089】
予測画像生成部101は画像Tの各ピクチャについて、そのピクチャを分割した領域である符号化ユニットCU毎に予測ユニットPUの予測画像Pを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から復号済のブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えばインター予測の場合、動きベクトルである。予測画像生成部101は、対象PUを起点として動きベクトルが示す参照画像上の位置にあるブロックを読み出す。またイントラ予測の場合、予測パラメータとは例えばイントラ予測モードである。イントラ予測モードで使用する隣接PUの画素値を参照ピクチャメモリ109から読み出し、PUの予測画像Pを生成する。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
【0090】
なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作である。
【0091】
予測画像生成部101は、予測パラメータ符号化部から入力されたパラメータを用いて、参照ピクチャメモリから読み出した参照ブロックの画素値をもとにPUの予測画像Pを生成する。予測画像生成部101で生成した予測画像は減算部102、加算部106に出力される。
【0092】
減算部102は、予測画像生成部101から入力されたPUの予測画像Pの信号値を、画像Tの対応するPUの画素値から減算して、残差信号を生成する。減算部102は、生成した残差信号をDCT・量子化部103に出力する。
【0093】
DCT・量子化部103は、減算部102から入力された残差信号についてDCTを行い、DCT係数を算出する。DCT・量子化部103は、算出したDCT係数を量子化して量子化係数を求める。DCT・量子化部103は、求めた量子化係数をエントロピー符号化部104及び逆量子化・逆DCT部105に出力する。
【0094】
エントロピー符号化部104には、DCT・量子化部103から量子化係数が入力され、予測パラメータ符号化部111から符号化パラメータが入力される。入力される符号化パラメータには、例えば、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、予測モードpredMode、及びマージインデックスmerge_idx等の符号がある。
【0095】
エントロピー符号化部104は、入力された量子化係数と符号化パラメータをエントロピー符号化して符号化ストリームTeを生成し、生成した符号化ストリームTeを外部に出力する。
【0096】
逆量子化・逆DCT部105は、DCT・量子化部103から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部105は、求めたDCT係数について逆DCTを行い、残差信号を算出する。逆量子化・逆DCT部105は、算出した残差信号を加算部106に出力する。
【0097】
加算部106は、予測画像生成部101から入力されたPUの予測画像Pの信号値と逆量子化・逆DCT部105から入力された残差信号の信号値を画素毎に加算して、復号画像を生成する。加算部106は、生成した復号画像を参照ピクチャメモリ109に記憶する。
【0098】
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)を施す。
【0099】
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
【0100】
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
【0101】
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述した予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いてPUの予測画像Pを生成する。
【0102】
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして外部に出力し、選択されなかった符号化パラメータのセットを出力しない。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
【0103】
予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから、符号化するための形式を導出し、エントロピー符号化部104に出力する。符号化するための形式の導出とは、例えば動きベクトルと予測ベクトルから差分ベクトルを導出することである。また予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから予測画像を生成するために必要なパラメータを導出し、予測画像生成部101に出力する。予測画像を生成するために必要なパラメータとは、例えばサブブロック単位の動きベクトルである。
【0104】
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいて、差分ベクトルのようなインター予測パラメータを導出する。インター予測パラメータ符号化部112は、予測画像生成部101に出力する予測画像の生成に必要なパラメータを導出する構成として、インター予測パラメータ復号部303(
図5等、参照)がインター予測パラメータを導出する構成と一部同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
【0105】
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたイントラ予測モードIntraPredModeから、符号化するための形式(例えばMPM_idx、rem_intra_luma_pred_mode等)を導出する。
【0106】
(画像復号装置の要部構成)
図10に、本実施形態に係る画像復号装置の要部構成を示したブロック図を示す。本図では、図を簡略化するために、
図5に示したブロック図に含まれる一部の部材の図示を省略している。また、説明の便宜上、
図5に示した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
【0107】
図10に示すように、画像復号装置31は、エントロピー復号部301、予測画像生成部308、逆量子化・逆DCT変換部311、参照ピクチャメモリ306、加算部312、ループフィルタ305、を備えている。エントロピー復号部301は、復号モジュール9、CN情報復号部10(分割情報復号部)、ヘッダ復号部19、CU復号部20、及びコンテキスト決定部32を備えている。CU復号部20は、さらにPU情報復号部12及びTT情報復号部13(分割情報復号部、分割部)を備えており、TT情報復号部13は、さらにTU復号部22を備えている。
【0108】
(復号モジュール)
以下、各モジュールの概略動作を説明する。復号モジュール9は、バイナリからシンタックス値を復号する復号処理を行う。復号モジュール9は、より具体的には、供給元から供給される符号化データ及びシンタックス種別に基づいて、CABAC等の可変長符号化方式、あるいは固定長符号化方式により符号化されているシンタックス値を復号し、復号したシンタックス値を供給元に返す。
【0109】
以下に示す例では、符号化データ及びシンタックス種別の供給元は、CN情報復号部10、CU復号部20(PU情報復号部12及びTT情報復号部13)である。
【0110】
(ヘッダ復号部)
ヘッダ復号部19は、画像符号化装置11から入力された符号化データのVPS(video parameter set)、SPS、PPS、スライスヘッダを復号する。
【0111】
(CN情報復号部)
CN情報復号部10は、復号モジュール9を用いて、画像符号化装置11から入力された符号化データについて、符号化ツリーユニット(CTU)及び符号化ノード(CN)の復号処理を行う。CN情報復号部10は、具体的には、以下の手順により符号化データから、CTU情報及びCN情報を復号する。
【0112】
まず、CN情報復号部10(分割情報復号部)は、復号モジュール9を用いて、CTUに含まれるCTU情報からツリーユニットヘッダCTUHを復号する。次に、CN情報復号部10は、対象CNをQT分割するか否かを示すQT分割フラグ(分割情報)のコンテキスト(後述する)に応じて、CNに含まれるCN情報から、QT分割フラグを復号する。そして、CN情報復号部10は、QT分割フラグがさらなる分割を通知しなくなるまで対象CNを再帰的に分割し復号する。最後に、CTU情報からツリーユニットフッタCTUFを復号する。
【0113】
なお、本実施形態では、復号されるCN情報がQT分割フラグ(qt_split_flag)である例を説明しているが、復号されるCN情報は、対象CNをBT(binary tree)分割するか否かを示すBT分割フラグ(bt_split_flag)、対象CNをTT(triple tree)分割するか否かを示すTT分割フラグ(tt_split_flag)であってもよい。
図11の(a)~(c)は、それぞれ、QT分割、BT分割、及びTT分割を示す図である。本図では、矢印が指し示すブロックが分割後のブロックである。
図11の(a)が示すように、QT分割は、ブロックを4分割する分割である。また、
図11の(b)が示すように、BT分割は、ブロックを2分割する分割である。また、
図11の(c)が示すように、TT分割は、ブロックを3分割する分割である。
【0114】
また、本実施形態に係る画像復号装置31は、CNを分割しているが、同様の方法により、CU、PU、又はTU等のブロックを分割してもよい。その場合、上述の対象CNは、対象CU、対象PU、又は対象TU等であり得る。
【0115】
ツリーユニットヘッダCTUH及びツリーユニットフッタCTUFには、対象符号化ツリーユニットの復号方法を決定するために画像復号装置31が参照する符号化パラメータが含まれる。また、CN情報には、QT分割フラグの他、後述するBT方向フラグ(BT分割モード)、対象CN及び下位の符号化ノードで適用されるパラメータを含んでいてもよい。
【0116】
(コンテキスト決定部)
コンテキスト決定部32は、対象CNの分割関連情報と隣接CNの分割関連情報を取得する。なお、CNの分割関連情報とは、CNの分割状況に関連する情報であり、例えば、CNのパーティション番号、デプス、あるいは垂直デプス及び水平デプス、又はサイズ等を含む情報である。
【0117】
次に、コンテキスト決定部32は、取得した対象CN及び隣接CNの分割関連情報を比較する。
【0118】
さらに、コンテキスト決定部32は、比較結果に応じてコンテキストを決定する。コンテキスト決定部32が決定したコンテキストは、上述のCN情報復号部10に出力される。
【0119】
なお、本明細書におけるコンテキストとは、CABACにおけるコンテキストインデックスを示している。CABACでは、変換係数を表す各種のシンタックスに対して2値化処理が施され、この2値化処理によって得られた2値データが算術符号化される。ここで、上記各種のシンタックスとしては、QT分割するか否かを示すフラグqt_split_flag、変換係数が0であるか否かを示すフラグ、すなわち非0変換係数の有無を示すフラグsignificant_coeff_flag(変換係数有無フラグとも呼ぶ)、並びに、処理順で最後の非0変換係数の位置を示すシンタックスlast_significant_coeff_x及びlast_significant_coeff_yなどが挙げられる。
【0120】
また、CABACでは、シンボル(2値データの1ビット、Binとも呼ぶ)を1つ符号化する際、処理対象シンボルに対応するコンテキストインデックスが参照され、当該コンテキストインデックスによって指定される発生確率に応じた算術符号化が行われる。また、発生確率は、シンボルを1つ符号化する毎に更新される。
【0121】
本明細書において、QT分割フラグであるqt_split_flagに対応するコンテキストは、ctxIdxQT(又は、ctxIdxSplit)で示される。BT分割フラグであるbt_split_flagに対応するコンテキストは、ctxIdxBT(又は、ctxIdxSplit)で示される。TT分割フラグであるtt_split_flagに対応するコンテキストは、ctxIdxTT(又は、ctxIdxSplit)で示される。BT分割方向フラグまたはTT分割方向フラグであるbt_dir_flag、又はtt_dir_flagに対応するコンテキストは、ctxIdxDirで示される。つまりctxIdxDirは、分割方向として、水平に分割するか、または垂直に分割するかを示すコンテキストである。
【0122】
また、本明細書において、BT分割及びTT分割を区別せずに、両者を含めた分割をPT分割とすると、PT分割フラグであるpt_split_flagに対応するコンテキストは、ctxIdxPT(又は、ctxIdxSplit)で示される。PT分割方向フラグであるpt_dir_flagに対応するコンテキストは、ctxIdxDirで示される。PT分割パターンフラグであるpt_pat_flagに対応するコンテキストは、ctxIdxPatで示される。
【0123】
(CU復号部)
CU復号部20は、PU情報復号部12及びTT情報復号部13から構成され、最下位の符号化ノードCN(すなわちCU)のPUI情報及びTTI情報を復号する。
【0124】
(PU情報復号部)
PU情報復号部12では各PUのPU情報(マージフラグ(merge_flag)、マージインデックス(merge_idx)、予測ベクトルインデックス(mvp_idx)、参照画像インデックス(ref_idx)、インター予測識別子(inter_pred_flag)、及び差分ベクトル(mvd)等)を、復号モジュール9を用いて復号する。
【0125】
(TT情報復号部)
TT情報復号部13は、変換ツリーTTのTT情報(TU分割フラグSP_TU(split_transform_flag)、TU残差フラグCBP_TU(cbf_cb、cbf_cr、cbf_luma)等、及びTU)を、復号モジュール9を用いて復号する。
【0126】
また、TT情報復号部13は、TU復号部22を備えている。TU復号部22は、TUに残差が含まれている場合に、QP更新情報(量子化補正値)を復号する。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値を示す値である。またTU復号部22は、量子化予測残差(residual_coding)を復号する。
【0127】
(コンテキスト決定方法)
本実施形態に係る画像復号装置31によるコンテキスト決定方法について、
図12を参照して、詳細に説明する。
図12は、本実施形態に係る画像復号装置31によるコンテキスト決定方法の一例を説明するフローチャート図である。
【0128】
コンテキスト決定部32は、CN情報復号部10がまだ分割していない対象CN(対象ブロック)の分割関連情報と、当該対象CNに隣接し、かつ、CN情報復号部10がすでに分割し復号した隣接CN(隣接ブロック)の分割関連情報と、をCN情報復号部10から取得する。(ステップS0)。なお、本明細書では、対象ブロックとして対象CN、隣接ブロックとして隣接CNを用いた例を示すが、対象ブロック及び隣接ブロックは、CU、PU、又はTUであってもよい。対象ブロック及び隣接ブロックがCU、PU、又はTUである場合、本実施形態に係るコンテキスト決定方法を同様に実施することができ、対象CU、対象PU、又は対象TUを分割するか否かを示すQT分割フラグを復号する確率を示すコンテキストを決定することができる。
【0129】
コンテキスト決定部32は、取得した対象CN及び隣接CNを参照して、分割状況を特定することにより、対象CNの各辺(例えば、上辺又は左辺)に接している隣接CNの分割線が存在するか否かを判定する(ステップS1)。なお、ステップS1の具体的な方法については後述する。
【0130】
コンテキスト決定部32は、判定した分割状況に応じて、コンテキストを決定する(ステップS2)。なお、ステップS2の具体的な方法については後述する。
【0131】
CN情報復号部10は、コンテキスト決定部32が決定したコンテキストに応じて、CNに含まれるCN情報から、対象CNをQT分割するか否かを示すQT分割フラグを復号する(ステップS3)。
【0132】
以下で、本実施形態のコンテキスト決定方法の具体的な方法を説明する。
図13は、本実施形態のコンテキスト決定方法のステップS1を説明するための図であり、対象ブロックO、隣接ブロックWL、隣接ブロックWA及び隣接ブロックWBを示している。
図13が示すように、対象ブロックOは、左辺において、隣接ブロックWLと隣接している。また、対象ブロックOは、上辺において、隣接ブロックWA及び隣接ブロックWBと隣接している。なお、
図13における各ブロック内の番号は、パーティション番号を示している。
【0133】
なお、以下の説明で、コンテキスト決定部32は、垂直方向の分割フラグsplitVerticallyと水平方向の分割フラグsplitHorizontallyとを導出するが、これらは、各々、水平分割フラグhorSplit、垂直分割フラグverSplitと呼んでもよい。等価なフラグの関係をまとめると、以下のとおりである。
【0134】
splitVertically = horSplit
splitHorizontally = verSplit
また、垂直方向の分割フラグsplitVerticallyを左の隣接ブロックから導出する場合、splitVerticallyをsplitLeftとも呼び、水平方向の分割フラグsplitHorizonallyを上の隣接ブロックから導出する場合、splitHorizonallyをsplitAboveとも呼ぶ。
【0135】
まず、ステップS1において、コンテキスト決定部32は、ステップS0で取得した隣接ブロックWLの分割関連情報を参照して、隣接ブロックWLと対象ブロックOとが接する線分(つまり、対象ブロックOの左辺)に接する分割線があるか否かを判定する。そして、コンテキスト決定部32は、分割線の有無を判定した結果を、垂直に分割フラグsplitVertically(以下において、splitLeft、または、水平分割フラグhorSplitとしてもよい)として出力する。
図13が示すように、対象ブロックOの左辺には分割線が接していないので、コンテキスト決定部32は、分割線が存在しないことを示すsplitVertically (=splitLeft = horSplit) = 0を設定する。
【0136】
また、コンテキスト決定部32は、ステップS0で取得した隣接ブロックWA及び隣接ブロックWBの分割関連報を参照して、隣接ブロックWA及び隣接ブロックWBを合わせたブロックと対象ブロックOとが接する線分(つまり、対象ブロックOの上辺)に接する分割線があるか否かを判定する。そして、コンテキスト決定部32は、分割線の有無を判定した結果を、水平な分割フラグsplitHorizontally(以下において、splitAbove、または、垂直分割フラグverSplitとしてもよい)として出力する。
図13が示すように、対象ブロックOの上辺に接する分割線が存在するので、コンテキスト決定部32は、分割線が存在することを示すsplitHorizontally (= splitAbove = verSplit) = 1を設定する。
【0137】
次に、ステップS2において、コンテキスト決定部32は、設定したsplitVertically及びsplitHorizontallyを参照して、対象ブロックを分割するか否かのコンテキストctxIdxSplitを、例えば、以下の式により導出する。
【0138】
ctxIdxSplit = splitVertically + splitHorizontally (= splitLeft + splitAbove = horSplit + verSplit)
図13が示す隣接ブロックの例の場合、splitVertically = 0であり、splitHorizontally = 1であるため、コンテキスト決定部32は、ctxIdxSplit = 1を出力する。なお、コンテキストによって指定されるコンテキスト変数に含まれる確率状態インデックスの指し示す発生確率は、分割線があるほど高くなるように設定、更新される。つまり、CN情報復号部10は、隣接ブロックの分割線が存在するか否かで、コンテキストを切り替えることにより、隣接ブロックに分割線がある場合に、対象ブロックOで“分割あり”を示す分割フラグを復号すれば符号量を小さくすることができる。このような設定をする理由は、隣接ブロックWA又は隣接ブロックWBが分割されている場合、対象ブロックOも分割される可能性が高いためである。
【0139】
以下の各具体例で、上述のコンテキスト決定方法のステップS1及びS2の具体例を、図面を参照して詳細に説明する。
【0140】
(具体例1)
図14は、本具体例のコンテキスト決定方法のステップS1を説明するための図であり、対象ブロックO、隣接ブロックWL、隣接ブロックWA及び隣接ブロックWBを示している。
図14が示すように、対象ブロックOは、左辺において、隣接ブロックWLと隣接している。また、対象ブロックOは、上辺において、隣接ブロックWA及び隣接ブロックWBと隣接している。
【0141】
なお、
図14が示すように、対象ブロックOの左上座標を(xP,yP)、対象ブロックOの左上座標の真左に隣接する点座標を、点L(xP-1,yP)とし、対象ブロックOの左下座標の真左に隣接する点座標を、点LB(xP-1,yP+H-1)とする。また、対象ブロックOの左上座標の真上に隣接する点座標を、点A(xP,yP-1)とし、対象ブロックOの右上座標の真上に隣接する点座標を、点AR(xP+W-1,yP-1)とする。なお、Wは、対象ブロックOのX軸方向の幅であり、Hは、対象ブロックOのY軸方向の高さである。
図14における各ブロック内の番号は、パーティション番号を示している。
【0142】
まず、ステップS1において、コンテキスト決定部32がステップS0で取得した隣接ブロックWLの分割関連情報を参照して、点Lが含まれるブロックのパーティション番号partIDLと、点LBが含まれるブロックのパーティション番号partIDLBとが異なるか否かを判定する。当該判定の式を下記に示す。
【0143】
splitVertically (= splitLeft = horSplit) = partIDL != partIDLB ? 1:0
点Lが含まれるブロックのパーティション番号と、点LBが含まれるブロックのパーティション番号とが異なる場合、点Lと点LBとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線が存在していると判定する。一方、点Lが含まれるブロックのパーティション番号と、点LBが含まれるブロックのパーティション番号とが同じ場合、点Lと点LBとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線が存在しないと判定する。
【0144】
コンテキスト決定部32は、点Lが含まれるブロックのパーティション番号partIDと、点LBが含まれるブロックのパーティション番号partIDLBとが異なるか否かの判定の結果を、上述のsplitVertically(=splitLeft=horSplit)として出力する。
【0145】
一つの例では、
図14が示すように、点Lと点LBとは、同じ隣接ブロックWLに含まれるので、コンテキスト決定部32は、分割線が存在しないことを示すsplitVertically = 0を設定する。
【0146】
同様にして、コンテキスト決定部32は、ステップS0で取得した隣接ブロックWA及び隣接ブロックWBの分割関連情報を参照して、点Aが含まれるブロックのパーティション番号partIDAと、点ARが含まれるブロックのパーティション番号partIDARとが異なるか否かを判定する。当該判定の式を下記に示す。
【0147】
splitHorizontally (=splitAbove=verSplit) = partIDA ! =partIDAR ? 1:0
そして、コンテキスト決定部32は、当該判定の結果を、splitHorizontally(=splitAbove=verSplit)として出力する。
図14が示すように、点Aと点ARとは、それぞれ、異なる隣接ブロックWAと隣接ブロックWBに含まれるので、コンテキスト決定部32は、分割線が存在することを示すsplitHorizontally = 1を設定する。
【0148】
次に、ステップS2において、コンテキスト決定部32は、設定したsplitVertically及びsplitHorizontallyを参照して、コンテキストであるctxIdxSplit = splitVertically+ splitHorizontallyを決定する。本具体例の場合、splitVertically = 0であり、splitHorizontally = 1であるため、コンテキスト決定部32は、ctxIdxSplit = 1を出力する。
【0149】
(具体例2)
図15は、本具体例のコンテキスト決定方法のステップS1を説明するための図であり、対象ブロックO、隣接ブロックWL、及び隣接ブロックWAを示している。
図15が示すように、対象ブロックOは、左辺において、隣接ブロックWLと隣接している。また、対象ブロックOは、上辺において、隣接ブロックWAと隣接している。また、
図15が示すように、隣接ブロックWLは、対象ブロックOの左辺に接する点L(xPb-1,yP)を含み、隣接ブロックWAは、対象ブロックOの上辺に接する点A(xPb,yPb-1)を含む。なお、
図15における各ブロック内の(n,m)は、nが水平デプスを示し、mが垂直デプスを示す(n及びmは、整数である)。なお、水平デプスとは、あるブロックを、水平方向に並ぶ2つのブロックに分割した回数(分割階層)を示す。また、垂直デプスとは、あるブロックを、垂直方向に並ぶ2つのブロックに分割した回数(分割階層)を示す。例えば、符号化ツリーブロックCTBは、分割前において、水平デプス及び垂直デプスは、それぞれ、0である(depthHor = 0)(depthVer = 0)。QT分割においては、分割毎に、水平デプス及び垂直デプスは、それぞれ、1加算される(depthHor = depthHor + 1)(depthVer = depthVer + 1)。
【0150】
BT分割においては、分割毎に、水平デプス及び垂直デプスの何れか1つが、1加算される。あるブロックを上下に水平分割した場合(bt_split_flag = 1(BT分割フラグ)、bt_dir_flag = 0(BT分割方向フラグ))、垂直デプスが、1加算される(depthVer = depthVer + 1)。あるブロックを左右に垂直分割した場合(bt_split_flag = 1(BT分割フラグ)、bt_dir_flag = 1(BT分割方向フラグ))、水平デプスが、1加算される(depthHor = depthHor + 1)。
【0151】
TT分割においては、TT分割されたブロックの中央ブロック(パーティション番号を1とする(partIdx = 1))が、上下に水平分割された場合(pt_split_flag = 1、pt_dir_flag = 0、pt_pat_flag=1)、垂直デプスが、1加算される(depthVer = depthVer + 1)。TT分割されたブロックの中央ブロック(partIdx = 1)が、左右に垂直分割された場合(pt_split_flag = 1、pt_dir_flag = 1、pt_pat_flag=1)、水平デプスが、1加算される(depthHor = depthHor + 1)。
【0152】
また、TT分割されたブロックの中央ブロック以外のブロック(パーティション番号を0又は2とする(partIdx = 0 or 2))が、上下に水平分割された場合(pt_split_flag = 1、pt_dir_flag = 0、pt_pat_flag= 0 or 2)、垂直デプスが、2加算される(depthVer = depthVer + 2)。TT分割されたブロックの中央ブロック以外のブロック(partIdx = 0 or 2)が、左右に垂直分割された場合(pt_split_flag = 1、pt_dir_flag = 1、pt_pat_flag=1)、水平デプスが、2加算される(depthHor = depthHor + 2)。
【0153】
まず、ステップS1において、コンテキスト決定部32は、隣接ブロックWL及び対象ブロックOの分割関連情報を参照して、点Lの垂直デプスdepthVerLeft(点Lを含む隣接ブロックWLの垂直デプスdepthVerLeft)と、対象ブロックOの垂直デプスdepthVertCurrとを比較し、隣接ブロックWLの垂直デプスdepthVerLeftが対象ブロックOの垂直デプスdepthVertCurrより大きいか否かを判定する。当該判定の式を下記に示す。
【0154】
splitVertically (= splitLeft = horSplit) = depthVerLeft > depthVertCurr ? 1 : 0
対象ブロックOの左に隣接する隣接ブロックWLの垂直デプスが対象ブロックOの垂直デプスより大きい場合、隣接ブロックWLは、対象ブロックOよりも多くの回数の水平分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線が存在すると判定する。一方、隣接ブロックWLの垂直デプスが対象ブロックOの垂直デプスより小さい場合、対象ブロックOは、隣接ブロックWLよりも多くの回数の水平分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線は存在しないと判定する。なお、隣接ブロックWLの垂直デプスと対象ブロックOの垂直デプスとが等しい場合、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線は存在しないと判定する。
【0155】
そして、コンテキスト決定部32は、隣接ブロックWLの垂直デプスが対象ブロックOの垂直デプスより大きいか否かの判定の結果を、splitVerticallyとして出力する。
図15が示すように、隣接ブロックWLの垂直デプスは、対象ブロックOの垂直デプスより小さいので、コンテキスト決定部32は、分割線が存在しないことを示すsplitVertically = 0を設定する。
【0156】
また、コンテキスト決定部32は、隣接ブロックWA及び対象ブロックOの分割関連情報を参照して、点Aの水平デプスdepthHorUpper(点Aを含む隣接ブロックWAの水平デプスdepthHorUpper)と、対象ブロックOの水平デプスdepthHorCurrとを比較し、隣接ブロックWAの水平デプスdepthHorUpperが対象ブロックOの水平デプスdepthHorCurrより大きいか否かを判定する。当該判定の式を下記に示す。
【0157】
splitHorizontally (= splitAbove = verSplit) = depthHorUpper > depthHorCurr ? 1: 0
対象ブロックOの上に隣接する隣接ブロックWAの水平デプスが対象ブロックOの水平デプスより大きい場合、隣接ブロックWAは、対象ブロックOよりも多くの回数の垂直分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの上辺に接する分割線が存在すると判定する。一方、隣接ブロックWAの水平デプスが対象ブロックOの水平デプスより小さい場合、対象ブロックOは、隣接ブロックWAよりも多くの回数の垂直分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの上辺に接する分割線が存在しないと判定する。なお、隣接ブロックWAの水平デプスと対象ブロックOの水平デプスとが等しい場合、コンテキスト決定部32は、対象ブロックOの上辺に接する分割線は存在しないと判定する。
【0158】
コンテキスト決定部32は、隣接ブロックWAの水平デプスが対象ブロックOの水平デプスより大きいか否かの判定の結果を、splitHorizontallyとして出力する。
図15が示すように、隣接ブロックWAの水平デプスは、対象ブロックOの水平デプスより大きいので、コンテキスト決定部32は、分割線が存在することを示すsplitHorizontally = 1を出力する。
【0159】
次に、ステップS2において、コンテキスト決定部32は、設定したsplitVertically及びsplitHorizontallyを参照して、コンテキストであるctxIdxSplit = splitVertically+ splitHorizontallyを決定する。本具体例の場合、splitVertically = 0であり、splitHorizontally = 1であるため、コンテキスト決定部32は、ctxIdxSplit = 1を出力する。
【0160】
(具体例3)
図16は、本具体例のコンテキスト決定方法のステップS1を説明するための図であり、対象ブロックO、隣接ブロックWL、及び隣接ブロックWAを示している。
図16が示すように、対象ブロックOは、左辺において、隣接ブロックWLと隣接している。また、対象ブロックOは、上辺において、隣接ブロックWAと隣接している。また、
図16が示すように隣接ブロックWLは、対象ブロックOの左辺に接する点L(xPb-1,yP)を含み、隣接ブロックWAは、対象ブロックOの上辺に接する点A(xPb,yPb-1)を含む。なお、
図16における各ブロック内の(n,m)は、nが各ブロックの水平方向の幅を示し、mが垂直方向の高さを示す(n及びmは、整数である)。
【0161】
まず、ステップS1において、コンテキスト決定部32は、対象ブロックO及び隣接ブロックWLの分割関連情報を参照して、対象ブロックOの高さheightCurrと、点Lを含む隣接ブロックWLの高さheightLeftとを比較し、対象ブロックOの高さheightCurrが隣接ブロックWLの高さheigthLeftより大きいか否かを判定する。当該判定の式を下記に示す。
【0162】
splitVertically (= splitLeft = horSplit) = heightLeft < heightCurr ? 1 : 0
対象ブロックOの高さが隣接ブロックWLの高さより大きい場合、隣接ブロックWLは、対象ブロックOよりも多くの回数の水平分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線が存在すると判定する。一方、対象ブロックOの高さが隣接ブロックWLの高さより小さい場合、対象ブロックOは、隣接ブロックWLよりも多くの回数の水平分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの左辺に接する分割線は存在しないと判定する。なお、対象ブロックOの高さと隣接ブロックWLの高さとが等しい場合、コンテキスト決定部32は、対象ブロックOの左辺に接する水平方向の分割線は存在しないと判定する。
【0163】
コンテキスト決定部32は、対象ブロックOの高さが隣接ブロックWLの高さより大きいか否かの判定の結果を、splitVerticallyとして出力する。
図16が示すように、対象ブロックOの高さは、隣接ブロックWLの高さより小さいので、コンテキスト決定部32は、分割線が存在しないことを示すsplitVertically = 0を設定する。
【0164】
また、コンテキスト決定部32は、対象ブロックO及び隣接ブロックWAの分割関連情報を参照して、対象ブロックOの幅widthCurrと、隣接ブロックAを含む隣接ブロックWAの幅widthAboveとを比較し、対象ブロックOの幅widthCurrが隣接ブロックWAの幅widthAboveより大きいか否かを判定する。当該判定の式を下記に示す。
【0165】
splitHorizontally (= splitAbove = verSplit)= widthAbove < widthCurr ? 1 : 0
対象ブロックOの幅が隣接ブロックWAの幅より大きい場合、隣接ブロックWAは、対象ブロックOよりも多くの回数の垂直分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの上辺に接する分割線が存在すると判定する。一方、対象ブロックOの幅が隣接ブロックWAの幅より小さい場合、対象ブロックOは、隣接ブロックWAよりも多くの回数の垂直分割を経て形成されたブロックであるため、コンテキスト決定部32は、対象ブロックOの上辺に接する分割線は存在しないと判定する。なお、対象ブロックOの幅と隣接ブロックWAの幅とが等しい場合、コンテキスト決定部32は、対象ブロックOの上辺に接する分割線は存在しないと判定する。
【0166】
コンテキスト決定部32は、対象ブロックOの幅が隣接ブロックWAの幅より大きいか否かの結果を、splitHorizontallyとして出力する。
図16が示すように、対象ブロックOの幅は、隣接ブロックWAの幅より大きいので、コンテキスト決定部32は、分割線が存在することを示すsplitHorizontally = 1を設定する。
【0167】
次に、ステップS2において、コンテキスト決定部32は、設定したsplitVertically及びsplitHorizontallyを参照して、コンテキストであるctxIdxSplit = splitVertically+ splitHorizontally(= splitLeft + splitUpper)を決定する。本具体例の場合、splitVertically = 0であり、splitHorizontally = 1であるため、コンテキスト決定部32は、ctxIdxSplit = 1を出力する。
【0168】
(具体例4)
以下で、本実施形態のコンテキスト決定方法の具体的な方法を説明する。
図17は、本実施形態のコンテキスト決定方法のS1202を説明するための図であり、対象ブロックO、隣接ブロックWL、および隣接ブロックWAを示している。
図17が示すように、対象ブロックOは、左辺において、隣接ブロックWLと隣接している。また、対象ブロックOは、上辺において、隣接ブロックWAと隣接している。また、
図17が示すように、隣接ブロックWLは、対象ブロックOの左辺に接する点L(xPb-1,yP)を含み、隣接ブロックWAは、対象ブロックOの上辺に接する点A(xPb,yPb-1)を含む。なお、
図17における各ブロック内の番号は、分割関連情報(デプス)を示している。デプスは、あるブロックを水平あるいは垂直方向に並ぶ2つのブロックに分割した回数(分割階層)を示す。例えば、分割前の符号化ツリーユニットCTUのデプスは0である(depth = 0)。1回のQT分割では、水平および垂直方向に1回ずつ分割されるので、デプスは2加算される(depth = depth+2)。
【0169】
1回のBT分割では、水平または垂直方向に1回分割されるので、デプスは1加算される(depth = depth+1)。
【0170】
1回のTT分割では、TT分割されたブロックの中央ブロックが1回分割された場合、デプスは1加算される(depth = depth+1)。また、中央ブロック以外のブロックが1回分割された場合、デプスは2加算される(depth = depth+2)。
【0171】
なお、以下の説明で、コンテキスト決定部32は、垂直方向の分割(上下に分割)splitVerticallyと水平方向の分割(左右に分割)splitHorizontallyとを導出するが、これらは、各々、水平分割フラグhorSplit、垂直分割フラグverSplitと呼んでもよい。等価なフラグの関係をまとめると、以下のとおりである。
【0172】
splitVertically = horSplit
splitHorizontally = verSplit
また、垂直方向の分割splitVerticallyを左の隣接ブロックから導出する場合、splitVerticallyをsplitLeftとも呼び、水平方向の分割splitHorizonallyを上の隣接ブロックから導出する場合、splitHorizonallyをsplitAboveとも呼ぶ。
【0173】
まず、S1202において、コンテキスト決定部32は、S1201で取得した隣接ブロックWL及び対象ブロックOの分割関連情報を参照して、隣接ブロックWLのデプスdepthLeftと対象ブロックOのデプスdepthCurrとを比較し、隣接ブロックWLのデプスdepthLeftが対象ブロックOのデプスdepthCurrより大きいか否かを判定する。当該判定の式を下記に示す。
【0174】
splitLeft = depthLeft > depthCurr ? 1 : 0
隣接ブロックWLのデプスが対象ブロックOのデプスより大きい場合、コンテキスト決定部32はsplitLeft=1とする。一方、隣接ブロックWLのデプスが対象ブロックOのデプスより小さい場合、コンテキスト決定部32はsplitLeft=0とする。なお、隣接ブロックWLのデプスと対象ブロックOのデプスとが等しい場合、コンテキスト決定部32はsplitLeft=0とする。
図17では、隣接ブロックWLのデプスは、対象ブロックOのデプスより大きいので、コンテキスト決定部32はsplitLeft=1を設定する。
【0175】
また、コンテキスト決定部32は、S1201で取得した隣接ブロックWAと対象ブロックOの分割関連情報を参照して、隣接ブロックWAのデプスdepthAboveと対象ブロックOのデプスdepthCurrとを比較し、隣接ブロックWAのデプスdepthAboveが対象ブロックOのデプスdepthCurrより大きいか否かを判定する。当該判定の式を下記に示す。
【0176】
splitAbove = depthAbove > depthCurr ? 1 : 0
隣接ブロックWAのデプスが対象ブロックOのデプスより大きい場合、コンテキスト決定部32はsplitAbove=1とする。一方、隣接ブロックWAのデプスが対象ブロックOのデプスより小さい場合、コンテキスト決定部32はsplitAbove=0とする。なお、隣接ブロックWAのデプスと対象ブロックOのデプスとが等しい場合、コンテキスト決定部32はsplitAbove=0とする。
図17では、隣接ブロックWAのデプスは、対象ブロックOのデプスと同じなので、コンテキスト決定部32はsplitAbove=0を設定する。
【0177】
次に、S1203において、コンテキスト決定部32は、比較結果のsplitLeft及びsplitAboveを参照して、対象ブロックを分割するか否かのコンテキストctxIdxSplitを、例えば、以下の式により導出する。
【0178】
ctxIdxSplit = splitLeft + splitAbove
図17ではsplitLeft=1、splitAbove=0であるため、コンテキスト決定部32は、ctxIdxSplit=1を出力する。なお、分割フラグは、隣接ブロックが対象ブロックよりも分割されている(隣接ブロックのデプスが対象ブロックのデプスよりも大きい)場合に、ctxIdxSplit=1となる確率が高くなるように設定、更新される。また、隣接ブロックが対象ブロックと同じか、分割されていない(隣接ブロックのデプスが対象ブロックのデプス以下の)場合に、ctxIdxSplit=1となる確率が低くなるように設定、更新される。つまり、CN情報復
号部10は、隣接ブロックと対象ブロックのデプスを比較し、コンテキストを切り替えることにより、符号量を小さくすることができる。このような設定をする理由は、隣接ブロックWA又は隣接ブロックWLが細かく分割されている場合、対象ブロックOも分割される可能性が高いためである。
【0179】
上記では、隣接ブロックの分割関連情報(デプス)を参照して、対象ブロックの分割フラグ(qt_split_flag、bt_split_flag、pt_split_flag)を符号化あるいは復号するために必要な確率を示すコンテキストctxIdxSplitを導出する方法(以降では方法1と記す)を説明した。上記の方法は、対象ブロックと隣接ブロックのデプスを比較し、隣接ブロックのデプスが対象ブロックのデプスより大きいか否かを1と0とで表現するので、処理は簡単である。しかしながら、対象ブロックと隣接ブロックの分割回数の違い(デプスの差、デプスの異なる程度)や、ブロックサイズの差(サイズの異なる程度)を利用しないため、コンテキストの精度がよくないという課題がある。より具体的には、対象ブロックのデプスよりも隣接ブロックのデプスの方が非常に大きい場合(例えば、デプスの差が1より大きい)は、対象ブロックよりも隣接ブロックのデプスの方がやや大きい場合(例えば、デプスの差が1)よりも、対象ブロックは分割されやすい。同様に、対象ブロックのデプスよりも隣接ブロックのデプスの方が小さい場合(例えば、デプスの差が-1)は、対象ブロックと隣接ブロックのデプスが等しい場合(例えば、デプスの差が0)よりも、対象ブロックは分割されにくい。対象ブロックと隣接ブロックのデプスではなくブロックサイズを考慮した場合にも、同様の性質がある。さらに、対応するブロックサイズの差が大きい場合ほど、デプスの差も大きくなりがちであり、逆にこのような特性を活かさないとコンテキストの精度がよくない課題が生じる。
【0180】
以下では、分割関連情報の差を参照して、分割フラグのコンテキストctxIdxSplitを導出することで、上記課題を解決する方法を説明する。
【0181】
図18は、画像復号装置31あるいは画像符号化装置11によるコンテキスト決定方法の一例を示すフローチャートである。
図12との違いはS1402とS1403である。
【0182】
画像復号装置31において、S1201では、コンテキスト決定部32は、対象ブロック(対象CN)の分割関連情報と、当該対象CNに隣接した隣接ブロック(隣接CN)の分割関連情報とをCN情報復号部10から取得する。なお、本明細書では、対象ブロックとして対象CN、隣接ブロックとして隣接CNを用いた例を示すが、対象ブロック及び隣接ブロックは、CU、PU、又はTUであってもよい。S1402では、コンテキスト決定部32は、取得した対象ブロックと2つの隣接ブロックの分割関連情報から、分割関連情報の差分値を導出する。S1403では、コンテキスト決定部32は、導出した2つの差分値を加算した結果から、コンテキストを決定する。S1204では、CN情報復号部10は、コンテキスト決定部32が決定したコンテキストに応じて、CN情報から、対象ブロックを分割するか否かを示す分割フラグを復号する。
【0183】
また、画像符号化装置11において、S1201では、コンテキスト決定部32は、対象ブロック(対象CN)の分割関連情報と、当該対象CNに隣接した隣接ブロック(隣接CN)の分割関連情報とを取得する。S1402では、コンテキスト決定部32は、取得した対象ブロックと2つの隣接ブロックの分割関連情報から、分割関連情報の差分値を導出する。S1403では、コンテキスト決定部32は、導出した2つの差分値を加算した結果から、コンテキストを決定する。S1204では、CN情報符号化部1042は、コンテキスト決定部32が決定したコンテキストに応じて、対象ブロックを分割するか否かを示す分割フラグを符号化する。
【0184】
以下の各具体例で、上述のコンテキスト決定方法のS1402及びS1403の具体例を、図面を参照して詳細に説明する。
【0185】
(具体例5)分割階層(デプス)の差分を参照
具体例5では、デプスを分割関連情報とした例を説明する。
【0186】
図18のS1402では、対象ブロックのデプスdepthCurrと隣接ブロックWAのデプスdepthAboveの差分値diffDepth0、および対象ブロックのデプスdepthCurrと隣接ブロックWLのデプスdepthLeftの差分値diffDepth1を、下式を用いて導出する。
【0187】
diffDepth0 = depthAbove-depthCurr
diffDepth1 = depthLeft-depthCurr
図18のS1403では、S1402で導出した2つの差分値diffDepth0、diffDepth1から、下式でコンテキストを導出する。
【0188】
ctxIdxSplit = diffDepth0+diffDepth1
図19の(1)及び(2)は、対象ブロックOと上側の隣接ブロックWAのデプスに対し、方法1および具体例5を用いて導出したコンテキストctxIdxSplitを示した例である。
図19の各ブロック内の番号はデプスを表す。
図19では対象ブロックOと上側の隣接ブロックWAについて説明するが、対象ブロックOと左側の隣接ブロックWLについても同様であり、説明は省略する。
図19の(1)において、方法1では、隣接ブロックWAのデプスが対象ブロックOのデプスより大きい(a)、(b)はsplitAbove=1、そうではない(c)、(d)はsplitAbove=0である。具体例5では、隣接ブロックWAのデプスと対象ブロックOのデプスの差分を取るので、(a)、(b)、(c)、(d)のdiffDepth0は各々、4、2、0、-2である。従って具体例5の方が精度よくコンテキストを導出することができる。
図19の(2)において、方法1では、隣接ブロックWAのデプスが対象ブロックOのデプスより大きい(a)、(b)、(c)はsplitAbove=1、そうではない(d)はsplitAbove=0である。具体例5では、隣接ブロックWAのデプスと対象ブロックOのデプスの差分を取るので、(a)、(b)、(c)、(d)のdiffDepth0は各々、3、2、1、0である。従って具体例5の方が精度よくコンテキストを導出することができる。
【0189】
(具体例6)ブロックのサイズ(幅と高さ)の差分を参照
具体例6では、ブロックのサイズ(幅と高さ)を分割関連情報とした例を説明する。
ここで、ブロックサイズとは、ブロックの幅、又は、ブロックの高さ、もしくは、ブロックの幅と高さの両者のことを示す。またブロックの幅と高さの積もしくは和をブロックサイズとして用いても良い。
【0190】
図18のS1402では、対象ブロックの幅の対数値log2widthCurrと隣接ブロックWAの幅の対数値log2widthAboveの差分値diffSize0、および対象ブロックの高さの対数値log2heightCurrと隣接ブロックWLの高さの対数値log2heightLeftの差分値diffSize1を、下式を用いて導出する。
【0191】
diffSize0 = log2widthCurr-log2widthAbove
diffSize1 = log2heightCurr-log2heightLeft
図18のS1403では、S1402で導出した2つの差分値diffSize0、diffSize1から、下式でコンテキストを導出する。
【0192】
ctxIdxSplit = diffSize0+diffSize1
(具体例7)デプスおよびブロックのサイズ(幅と高さ)の差分を参照
具体例7では、具体例5のデプスと具体例6のブロックのサイズ(幅と高さ)を分割関連情報として使用する例を説明する。
【0193】
図18のS1402では、具体例5、具体例6と同様の方法で差分値diffDepth0、diffDepth1、diffSize0、diffSize1を導出し、下式で各々デプスとブロックのサイズの差分を求める。
【0194】
diffDepth = diffDepth0+diffDepth1
diffSize = diffSize0+diffSize1
図18のS1403では、S1402で導出した2つの差分値diffDepth、diffSizeから、以下のようにコンテキストを導出する。
【0195】
ctxIdxSplit = diffDepth+diffSize
また、コンテキストの導出は下記でもよい。
【0196】
ctxIdxSplit = (diffDepth+diffSize)>>1
また、具体例5のデプスと具体例6のブロックのサイズ(幅と高さ)を分割関連情報として使用する別の例を説明する。
【0197】
図17の(2)に示すように、デプスはブロックサイズ(幅widthと高さheight)で表現できるので、上記のデプスをサイズとして表現すると、
diffDepth0 = (log2widthCurr+log2heightCurr)-(log2widthAbove+log2heightAbove)
diffDepth1 = (log2widthCurr+log2heightCurr)-(log2widthLeft+log2heightLeft)
である。従ってコンテキストは
diffTmp = 3*log2widthCurr+3*log2heightCurr-2*log2widthAbove-log2heightAbove-log2widthLeft-2*log2heightLeft
ctxIdxSplit = diffTmp
となる。あるいは
diffTmp = (3*log2widthCurr+3*log2heightCurr-2*log2widthAbove-log2heightAbove-log2widthLeft-2*log2heightLeft)>>1
ctxIdxSplit = diffTmp
としてもよい。
【0198】
(具体例5~7の一般化)
結局のところ、隣接ブロックの幅と高さを考慮すると、「1)対象ブロックの左側に分割線があるかに関わる左側隣接ブロックの高さの対数値log2heightLeftと、対象ブロックの上側に分割線があるかに関わる上側隣接ブロックの幅の対数値log2widthAbove」がコンテキストの導出に重要であるが、「2)左側隣接ブロックの幅の対数値log2widthLeftと上側隣接ブロックの高さの対数値log2heightAbove」もコンテキストの導出に寄与する。したがって、分割関連情報の差分値を加算してコンテキストを導出する場合に、重要性を参照して重みを付けるとよい。この時、重要性の高い1)のlog2heightLeftとlog2widthAboveのウェイトをW1、重要性の低い2)のlog2widthLeftとlog2heightAboveのウェイトをW2として、重要性の高いウェイトW1をW1>=W2と設定することが適当である。この場合、分割関連情報の加算は下式で表される。
【0199】
diffTmp = ((W1+W2)*log2widthCurr+(W1+W2)*log2heightCurr-W1*log2widthAbove- W2*log2heightAbove-W2*log2widthLeft-W1*log2heightLeft)
上記の例では、W1 = 1, W2 = 1が具体例5、W1 = 1, W2 = 0が具体例6、W1 = 2, W2 =1が具体例7に対応する。そのほか、W1 = 3, W2 = 1などの構成も可能である。
【0200】
(具体例8)3つ以上の隣接ブロックの参照
具体例5~7では、対象ブロックと2つの隣接ブロックの分割関連情報を参照して、分割フラグのコンテキストを導出した。具体例8では3つ以上の隣接ブロックの分割関連情報を参照して、分割フラグのコンテキストを導出する例を説明する。なお、以下では分割関連情報はデプスとし、具体例5を拡張して説明するが、これに限らず、分割関連情報をブロックサイズや、デプスとブロックサイズ双方とし、具体例6または3を拡張した場合も同様に適用可能であるので説明を省略する。
【0201】
図20の(1)は、対象ブロックOと3つの隣接ブロックWA、WL、WARの位置関係を示す図である。
【0202】
図18のS1402では、対象ブロックのデプスdepthCurr、隣接ブロックWAのデプスdepthAbove、隣接ブロックWLのデプスdepthLeft、隣接ブロックWARのデプスdepthAboveRightの差分値diffDepth0、diffDepth1、diffDepth2を、下式を用いて導出する。
【0203】
diffDepth0 = depthAbove-depthCurr
diffDepth1 = depthLeft-depthCurr
diffDepth2 = depthAboveRight-depthCurr
図18のS1403では、S1402で導出した3つの差分値diffDepth0、diffDepth1、diffDepth2から、下式でコンテキストを導出する。
【0204】
ctxIdxSplit = diffDepth0+diffDepth1+diffDepth2
また、
図20の(2)は、対象ブロックOと4つの隣接ブロックWA、WL、WAR、WBLの位置関係を示す図である。
【0205】
図18のS1402では、対象ブロックのデプスdepthCurr、隣接ブロックWAのデプスdepthAbove、隣接ブロックWLのデプスdepthLeft、隣接ブロックWARのデプスdepthAboveRight、隣接ブロックWBLのデプスdepthBottomLeftの差分値diffDepth0、diffDepth1、diffDepth2、diffDepth3を、下式を用いて導出する。
【0206】
diffDepth0 = depthAbove-depthCurr
diffDepth1 = depthLeft-depthCurr
diffDepth2 = depthAboveRight-depthCurr
diffDepth3 = depthBottomLeft-depthCurr
図18のS1403では、S1402で導出した4つの差分値diffDepth0、diffDepth1、diffDepth2、diffDepth3から、下式でコンテキストを導出する。
【0207】
ctxIdxSplit = diffDepth0+diffDepth1+diffDepth2*diffDepth3
また、対象ブロックOと4つの隣接ブロックWA、WL、WAR、WBLのデプスを用いる場合に、別の計算方法を用いて差分値を導出してもよい。例えば一例として、
図18のS1402では下式で差分値を算出する。
【0208】
diffDepth0 = depthAbove+DepthAboveRight-2*depthCurr
diffDepth1 = depthLeft+depthBottomLeft-2*depthCurr
図18のS1403では下式でコンテキストを導出する。
【0209】
ctxIdxSplit = diffDepth0+diffDepth1
また別の一例として、
図18のS1402では下式で差分値を算出する。
【0210】
diffDepth0 = ((depthAbove+DepthAboveRight)>>1)-depthCurr
diffDepth1 = ((depthLeft+depthBottomLeft)>>1)-depthCurr
図18のS1403では下式でコンテキストを導出する。
【0211】
ctxIdxSplit = diffDepth0+diffDepth1
(具体例9)
図21は、画像復号装置31あるいは画像符号化装置11によるコンテキスト決定方法の別の一例を示すフローチャートである。
図18と
図21のフローチャートの違いはS1403とS1703である。それ以外のステップは同じであるので、説明を省略する。
【0212】
コンテキスト決定部32は、S1403では、S1402で算出した2つの差分値を加算してコンテキストを決定するが、S1703では、S1402で算出した差分値のうち、最大の差分値を用いてコンテキストを決定する。この処理を下式で表現する。
【0213】
ctxIdxSplit = max(diffDepth0,diffDepth1)
具体例9では最大の差分値を用いてコンテキストを決定するので、分割数の多い(デプスの大きい)状況が選択されやすくなる。
【0214】
(利用可能性のチェック)
上記の説明では、対象ブロックOの隣接ブロックは利用可能である(available)と仮定したが、実際には画像の端等で隣接ブロックが存在しない場合がある。隣接ブロックが利用可能でない場合は、差分値は0とする。例えば具体例5では、S1402は下記の手順になる。
【0215】
diffDepth0 = availableAbove ? (depthAbove-depthCurr) : 0
diffDepth1 = availableLeft ? (depthLeft-depthCurr) : 0
ctxIdxSplit = diffDepth0+diffDepth1
ここで、availableAboveとavailableLeftは、対象ブロックの上側の隣接ブロックと左側の隣接ブロックの利用可能性を示し、隣接ブロックがあれば1、なければ0である。なお、利用可能性のチェックはデプスの差分値を導出する具体例5に限らず、具体例6~9などサイズの差分値を導出する場合や、デプスの差分値とサイズの差分値の両者を用いる場合にも適用可能である。例えば、具体例6では下記の手順になる。
【0216】
diffSize0 = availableAbove ? log2widthCurr-log2widthAbove : 0
diffSize1 = availableLeft ? log2heightCurr-log2heightLeft : 0
ctxIdxSplit = diffSize0+diffSize1
(クリッピングとマッピング)
具体例5~8は、対象ブロックと隣接ブロックの分割関連情報の差分を利用して、分割フラグのコンテキストを細かく設定することで、コンテキストの精度を向上させる技術である。しかしながら、分割関連情報の差分値を単純に加算すると、ブロックサイズが大きい場合にコンテキストのとる値が非常に広範囲になってしまう。例えば、CTUサイズが128x128の場合、とりうるデプスの値は0(128x128に対応)~11(4x4)となり、差分値の範囲は-22~22となる。コンテキストの値の増加はエントロピー符号化および復号処理の複雑化を招き、必要なテーブルのメモリ量も大きくなるので好ましくない。また、通常コンテキストは0以上の整数に割り振られるため、負の数が生じるのは好ましくない。そこでコンテキストを導出する過程でクリッピングやマッピング、オフセットの加算、乗算、シフト演算などを行い、コンテキストの値の範囲を制限する技術について説明する。
【0217】
図18のフローチャートで説明したように、コンテキスト決定部32は、S1402で分割関連情報の差分値を計算し、S1403で複数の差分値を加算した結果からコンテキストを導出するという処理の流れである。なお、以降の説明では、分割関連情報としてデプスを用い、具体例5を拡張して説明するが、分割関連情報をブロックサイズ、あるいはデプスとブロックサイズ双方として、具体例6あるいは7を拡張する方法も同じ方法を適用できるので、説明を省略する。また、
図21で説明した最大値を用いる方法に対しても、クリッピングとマッピングは同様に適用可能であり、説明を省略する。
【0218】
まず、S1402で算出した差分値をS1403で加算した後にクリッピングを実施する例を説明する。対象ブロックOと隣接ブロックWAのデプスの差分値diffDepth0と、対象ブロックOと隣接ブロックWLのデプスの差分値diffDepth1を加算した結果に対し、下式で示すようにクリッピングを施す。
【0219】
diffTmp = clip3(0,THDmax,diffDepth0+diffDepth1+offsetD) (c1)
ctxIdxSplit = ctxTbl[diffTmp]
ここで、ctxTblはデプスの差分値の加算結果からコンテキストを導出するためのテーブルであり、詳細は後述する。offsetDはデプスの差分値のゼロ点の位置(中央)を、テーブルctxTblの中央要素付近に対応させるためのオフセットである。0からTHDmaxへのクリップは、必要なテーブルのエントリ数を低減するために行っており、THDmax+1はテーブルのエントリ数の最大値である。
【0220】
図22の(1)は、差分値を加算した後にクリッピングする動作を説明するフローチャートである。
図22の(1)は
図18のS1403の処理がS18031、S18041、S1805に変更された以外は
図18と同じであり、説明を省略する。S18031では、コンテキスト決定部32はS1402で導出した差分値を加算する。S18041では、コンテキスト決定部32は加算値を(c1)の方法でクリッピングする。S1805では、コンテキスト決定部32はクリッピング結果を用いてコンテキストを導出する。
【0221】
例えばctxTbl[]={0,1,1,2,3}、offsetD=2、THDmax=4とすると、前述のとりうる差分値-22~22をオフセットにより-20~24に変更し、クリッピングにより0~4に制限した値をテーブルに入力することで、0~2の4つの値に制限することができる。また、ctxTbl[]={0,1,2}、offsetD=1、THDmax=2とすると、前述のとりうる差分値-22~22をオフセットにより-21~23に変更し、クリッピングにより-1~1に制限した値をテーブルに入力ることで、0~2の3つの値に制限することができる。また、ctxTbl[]={0,1,1,2,3,3}、offsetD=2、THDmax=5とすると、前述のとりうる差分値をオフセットにより-20~24に変更し、クリッピングにより0~5に制限した値をテーブルに入力することで、0~3の4つの値に制限することができる。
【0222】
また、別の例として、S1402で算出した差分値をクリッピングした結果をS1403で加算する例を説明する。対象ブロックOと隣接ブロックWAのデプスの差分値diffDepth0と、対象ブロックOと隣接ブロックWLのデプスの差分値diffDepth1に対し、下式で示すようにクリッピングを施す。
【0223】
diffDepth0 = clip3(-offsetD,offsetD,depthAbove-depthCurr)
diffDepth1 = clip3(-offsetD,offsetD,depthLeft-depthCurr) (c2)
diffTmp = diffDepth0+diffDepth1+(offsetD<<1)
ctxIdxSplit = ctxTbl[diffTmp]
図22の(2)は、差分値をクリッピングした後にオフセットを加算する動作を説明するフローチャートである。
図22の(2)は
図18のS1403の処理がS18032、S18042、S1805に変更された以外は
図18と同じであり、説明を省略する。S18032では、コンテキスト決定部32はS1402で導出した差分値を(c2)の方法でクリッピングする。S18042では、コンテキスト決定部32はクリッピング値を加算する。S1805では、コンテキスト決定部32は加算結果を用いてコンテキストを導出する。
【0224】
この例では、複数のデプスの差分値ごとにクリップを行うため、あるデプスの差分値が大きく(もしくは小さく)なりすぎた場合に、その大きく(もしくは小さく)なりすぎた差分値に最終結果が影響を受けすぎないようにする効果がある。
【0225】
また、別の例として、S1402で算出した差分値をクリッピングした結果をS1403で加算し、さらにクリッピングする例を説明する。対象ブロックOと隣接ブロックWAのデプスの差分値diffDepth0と、対象ブロックOと隣接ブロックWLのデプスの差分値diffDepth1に対し、下式で示すようにクリッピングを施す。
【0226】
diffDepth0 = clip3(-offsetD1,offsetD1,depthAbove-depthCurr)
diffDepth1 = clip3(-offsetD1,offsetD1,depthLeft-depthCurr)
diffTmp = clip3(0,THDmax,diffDepth0+diffDepth1+(offsetD1<<1)) (c3)
ctxIdxSplit = ctxTbl[diffTmp]
図22の(3)は、差分値をクリッピングした後に加算し、加算値をさらにクリッピングする動作を説明するフローチャートである。
図22の(3)は、
図22の(2)のS18042とS1805の間にS1806が追加された以外は
図22の(2)と同じであり、説明を省略する。S1806では、コンテキスト決定部32は(c3)の方法でクリッピングする。
【0227】
この例では加算後にもクリップを行うため、加算結果が大きく(もしくは小さく)なりすぎても、最終結果が影響を受けすぎないようにする効果がある。
【0228】
なお、offsetD=2、THDmax=5の場合に、加算結果、あるいは最大値をコンテキストにマッピングするためのテーブルを
図23に示す。これらはシミュレーションで効果のあった加算結果とコンテキストの組み合わせの例である。例えば、0,1,2の3値にマッピングする
ctxTbl[] = {0, 0, 0, 1, 2, 2}
や、0,1,2,3の4値にマッピングする
ctxTbl[] = {0, 0, 0, 1, 2, 3}
は特に適当である。
【0229】
上記では、差分値の加算結果からコンテキスト値へのマッピングにテーブルを用いていたが、テーブルを用いたマッピング以外に、下式のように加算結果と所定の閾値との比較によってコンテキストを導出する方法でもよい。
【0230】
if (diffTmp<THD1) ctxIdx = 0
else if (diffTmp<THD2) ctxIdx = 1
else if (diffTmp<THD3) ctxIdx = 2
else ctxIdx = 3
また、下記の3つの例ように除算や、シフト演算、乗算など四則演算とシフトを用いて、加算値の値の範囲を変化させることによって適当な範囲のコンテキストを導出する方法でもよい。
【0231】
diffDepth0 = depthAbove-depthCurr
diffDepth1 = depthLeft-depthCurr
例1
diffTmp = (diffDepth0 + diffDepth1)/2
例2
diffTmp = (diffDepth0 + diffDepth1)>>1
例3
diffTmp = (diffDepth0 + diffDepth1)*3 >> 2
また、利用可能性のチェックやクリッピング、マッピング、四則演算の組み合わせを用いて、差分値の加算値からコンテキストを導出してもよい。
【0232】
下記の例では、利用可能性のチェックを用いて、上と左に隣接するデプスとサイズの差分値diffDepth0、diffDepth1、diffSize0、diffSize1を導出後、それらをクリップしている。さらに、差分値の加算から、デプスの差分値diffTmpD、サイズの差分値diffTmpSを導出、それらの平均値diffTmpをインデクスとして、テーブルを用いたマッピングによりコンテキストを導出する。
【0233】
diffDepth0 = availableAbove ? (depthAbove-depthCurr) : 0
diffDepth1 = availableLeft ? (depthLeft-depthCurr) : 0
diffDepth0 = clip3(-offsetD1,offsetD1,diffDepth0)
diffDepth1 = clip3(-offsetD1,offsetD1,diffDepth1)
diffSize0 = availableAbove ? log2widthCurr-log2widthAbove : 0
diffSize1 = availableLeft ? log2heightCurr-log2heightLeft : 0
diffSize0 = clip3(-offsetD1,offsetD1,diffSize0)
diffSize1 = clip3(-offsetD1,offsetD1,diffSize1)
diffTmpD = clip3(0, THDmax,diffDepth0 + diffDepth1 + offsetD2)
diffTmpS = clip3(0, THSmax,diffSize0 + diffSize1 + offsetD2)
diffTmp = (diffTmpD + diffTmpS)>>1
ctxIdxSplit = ctxTbl[diffTmp]
ここで例えば、ctxTbl[] = {0, 0, 1, 2, 3, 3}、offsetD1 = 1、offsetD2 = 2、THDmax = 5, THSmax = 5などが適当であるが、他の値でもよい。
【0234】
なお、上記の処理は、クリッピングにより複雑にみえるが、結局のところ、クリッピングを除去してみれば下記のようになる。すなわち、すでに説明したように、隣接ブロックの分割関連情報が利用可能な場合に、分割可能情報(ここではデプス、と、サイズ)の差分の和をテーブル引きにより適当な範囲の値のコンテキストにマッピングする処理である。
【0235】
diffDepth0 = availableAbove ? (depthAbove-depthCurr) : 0
diffDepth1 = availableLeft ? (depthLeft-depthCurr) : 0
diffSize0 = availableAbove ? log2widthCurr-log2widthAbove : 0
diffSize1 = availableLeft ? log2heightCurr-log2heightLeft : 0
diffTmpD = diffDepth0 + diffDepth1 + offsetD2
diffTmpS = diffSize0 + diffSize1 + offsetD2
diffTmp = (diffTmpD + diffTmpS)>>1
ctxIdxSplit = ctxTbl[diffTmp]
(画像符号化装置)
本実施形態に係る画像復号装置31の構成は、画像符号化装置11にも適用できる。その場合、画像符号化装置11は、CN情報復号部10に代わるCN情報符号化部(図示せず)と、コンテキスト決定部32とを備え、対象ブロックを分割するか否かを示す分割フラグ(QT分割フラグ、BT分割フラグ又はTT分割フラグ等)のコンテキストを導出する。
【0236】
上記の構成を有する画像符号化装置11において、コンテキスト決定部32は、まだ分割されていない対象ブロックの分割関連情報と、当該対象ブロックに隣接し、かつ、すでに分割された隣接ブロックの分割関連情報とを取得する。次に、コンテキスト決定部32は、対象ブロック及び隣接ブロックの分割関連情報を参照して、隣接ブロックの分割状況を特定することにより、対象ブロックの各辺に接している隣接ブロックの分割線が存在するか否かを判定する。次に、コンテキスト決定部32は、当該判定に応じて、コンテキストを決定する。次に、CN情報符号化部は、コンテキスト決定部32が決定したコンテキストに応じて、対象ブロックを分割するか否かを示す分割フラグを符号化する。
【0237】
(実施形態1のまとめ)
以上のように、本実施形態に係る画像復号装置31は、対象ブロックの分割情報(分割フラグ)のコンテキストを、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割状況を参照して決定し、当該コンテキストを用いて、対象ブロックの分割情報を復号する。また、本実施形態に係る画像復号装置31は、隣接ブロックのパーティション番号、水平デプス及び垂直デプス又はサイズを参照して、隣接ブロックの分割状況を特定することにより、隣接ブロックの分割線の有無を判定し、当該判定を参照してコンテキストを決定する。これにより、隣接ブロックのパーティション番号、水平デプス及び垂直デプス又はサイズを参照するため、隣接ブロックの分割関連情報が反映され、より適切なコンテキストを決定することができる。従って、画像復号装置において、分割情報の符号量を削減できる。
【0238】
また、本実施形態に係る画像符号化装置11および画像復号装置31では、対象ブロックの分割情報(分割フラグ)のコンテキストを、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割関連情報を参照して決定し、当該コンテキストを用いて、対象ブロックの分割情報を符号化あるいは復号する。また、本実施形態では、分割関連情報としてデプス又はブロックサイズを参照して、隣接ブロックの分割状況を判定し、当該判定を参照してコンテキストを決定する。この時に、複数の隣接ブロックの分割関連情報の差分値を用いることで、隣接ブロックの分割関連情報がより精度よく反映され、コンテキストを精度良く決定することができる。これにより、より適切なコンテキストを決定することができる。また、対象ブロックの分割関連情報と隣接ブロックの分割関連情報の差分値の符号(±)が異なる場合、つまり隣接ブロックの中に、デプスが対象ブロック以下のブロックと大きいブロックがある場合、常に分割されやすいと判定されることなく、差分値に従って分割されやすい場合とそうでない場合を判定することもできる。従って、画像符号化装置および画像復号装置において、分割情報の符号量を削減できる。
【0239】
本発明の一態様に係る画像復号装置は、ピクチャをブロック毎に復号する画像復号装置において、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割関連情報を比較した結果を参照して、対象ブロックの分割情報のコンテキストを決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を復号する分割情報復号部とを備えることを特徴とする。
【0240】
本発明の一態様に係る画像復号装置において、上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであり、上記分割関連情報はブロックのデプスである。
【0241】
本発明の一態様に係る画像復号装置において、上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであり、上記分割関連情報はブロックサイズである。
【0242】
本発明の一態様に係る画像復号装置において、上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであり、上記分割関連情報はブロックのデプスおよびブロックサイズである。
【0243】
本発明の一態様に係る画像復号装置において、上記分割関連情報の比較した結果は、対象ブロックの分割関連情報と隣接ブロックの分割関連情報の差分値の加算値である。
【0244】
本発明の一態様に係る画像復号装置において、上記分割関連情報の比較した結果は、対象ブロックの分割関連情報と隣接ブロックの分割関連情報の差分値の最大値である。
【0245】
本発明の一態様に係る画像符号化装置は、ピクチャをブロック毎に符号化する画像符号化装置において、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割関連情報を比較した結果を参照して、対象ブロックの分割情報のコンテキストを決定するコンテキスト決定部と、上記コンテキスト決定部によって決定されたコンテキストを用いて、上記対象ブロックの分割情報を符号化する分割情報符号化部とを備えることを特徴とする。
【0246】
本発明の一態様に係る画像符号化装置において、上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであり、上記分割関連情報はブロックのデプスである。
【0247】
本発明の一態様に係る画像符号化装置において、上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであり、上記分割関連情報はブロックサイズである。
【0248】
本発明の一態様に係る画像符号化装置において、上記分割情報は、上記対象ブロックを分割するか否かを示す分割フラグであり、上記分割関連情報はブロックのデプスおよびブロックサイズである。
【0249】
本発明の一態様に係る画像符号化装置において、上記分割関連情報の比較した結果は、対象ブロックの分割関連情報と隣接ブロックの分割関連情報の差分値の加算値である。
【0250】
本発明の一態様に係る画像符号化装置において、上記分割関連情報の比較した結果は、対象ブロックの分割関連情報と隣接ブロックの分割関連情報の差分値の最大値である。
【0251】
〔実施形態2〕
本発明の実施形態2について、図面に基づいて説明すれば、以下のとおりである。なお、本実施形態においても、実施形態1に係る画像復号装置31及び画像符号化装置11を同様に用いることができる。従って、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、その説明を省略する。
【0252】
本実施形態において、コンテキスト決定部32は、まだ分割されていない色差ブロックを分割するか否かを示す分割フラグのコンテキストを導出する。そのために、コンテキスト決定部32は、当該色差ブロックに対応し、かつ、すでに分割され復号された輝度ブロックを参照することによりコンテキストを導出する。
【0253】
(コンテキスト決定部)
本実施形態に係るコンテキスト決定部32は、色差ブロック(色差CB(第1の色コンポーネントに関する対象ブロック))に対応し、かつ、CN情報復号部10がすでに分割し復号した輝度ブロック(輝度CB(第2の色コンポーネントに関する対応ブロック))の分割関連情報をCN情報復号部10から取得する。なお、色差CBは、当該色差CBを分割するか否かを示す分割フラグを復号する前の対象ブロック(対象CB)であり、輝度CBは、対象ブロックに対応する対応ブロック(対応CB)である。また、上記の第1の色コンポーネントに関する対象ブロックは、輝度CBであってもよく、上記の第2の色コンポーネントに関する対応ブロックは、色差CBであってもよい。
【0254】
本実施形態に係るコンテキスト決定部32において、コンテキスト決定部32は、取得した輝度CBの分割関連情報を参照して、輝度CB対応ブロック(対応CB)の分割状況を特定することにより、対応CBに分割線が存在するか否かを判定する。
【0255】
本実施形態に係るコンテキスト決定部32において、コンテキスト決定部32は、判定した対応CBの分割の有無に応じて、対象CBのコンテキストを決定する。なお、本実施形態におけるコンテキストは、対象CBをQT分割するか否かを示すQT分割フラグを復号するか否かのコンテキストである。
【0256】
(コンテキスト決定方法)
本実施形態に係る画像復号装置31によるコンテキスト決定方法について、
図24を参照して、詳細に説明する。
図24は、本実施形態に係る画像復号装置31によるコンテキスト決定方法の一例を説明するフローチャート図である。なお、実施形態1に係るコンテキスト決定方法と同様の工程については、詳細な説明は省略する。
【0257】
コンテキスト決定部32は、色差CB(色差ブロック)に対応し、かつ、CN情報復号部10がすでに分割し復号した輝度CB(輝度ブロック)の分割関連情報をCN情報復号部10から取得する(ステップS10)。
【0258】
また、コンテキスト決定部32は、取得した輝度CBの分割関連情報を参照して、輝度CB(対応CB)の分割状況を特定することにより、対応CBに分割線が存在するか否かを判定する(ステップS11)。なお、ステップS11の具体的な方法については後述する。
【0259】
また、コンテキスト決定部32は、判定した輝度CB(対応CB)の分割の有無に応じて、色差CB(対象CB)のコンテキストを決定する(ステップS12)。なお、ステップS12の具体的な方法については後述する。
【0260】
CN情報復号部10は、コンテキスト決定部32が決定した色差CB(対象CB)のコンテキストに応じて、CNに含まれるCN情報から、対象CBをQT分割するか否かを示すQT分割フラグを復号する(ステップS13)。
【0261】
(具体例1)
図25は、本具体例のコンテキスト決定方法のステップS11を説明するための図である。
図25の(a)は、色差CBを示し、
図25の(b)は、輝度CBを示している。なお、
図25における各ブロック内の番号は、パーティション番号を示している。輝度CB(対応CB)は、ブロックKA及びブロックKBを含む。また、ブロックKAの左上の点座標を点KARとし、ブロックKBの右下の点座標を点KBRとする。
【0262】
まず、ステップS11において、コンテキスト決定部32は、輝度CBの分割関連情報を参照して、
図25の(b)が示す輝度CBの左上の点KARを含むブロックKAのパーティション番号(partId_AboveLeft)と、当該輝度CBの右下の点KBRを含むブロックKBのパーティション番号(partId_LowerRight)とが異なるか否かを判定する。そして、ステップS12において、コンテキスト決定部32は、当該判定の結果自体を、色差CBの分割フラグのコンテキストとして決定する。当該コンテキストの式を下記に示す。
【0263】
ctxIdxSplit = (partId_AboveLeft != partId_LowerRight)
なお、上記の式において、QT分割フラグのコンテキストの場合、ctxIdxSplitは、ctxIdxQTである。BT分割フラグのコンテキストの場合、ctxIdxSplitは、ctxIdxBTである。BT分割及びTT分割を区別せずに、両者を含めた分割であるPT分割のフラグのコンテキストの場合、ctxIdxSplitは、ctxIdxPTである。
【0264】
輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号とが異なる場合、点KARと点KBRとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KBRとの間には、分割線が存在していると判定する。一方、輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号とが同じ場合、点KARと点KBRとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KBRとの間には、分割線が存在しないと判定する。
【0265】
図25が示すように、点KARと点KBRとは、それぞれ、異なるブロックKAとブロックKBとに含まれており、コンテキスト決定部32は、色差CBの分割フラグのコンテキストとして、ctxIdxSplit = 1を出力する。また、点KARと点KBRとが、それぞれ、同じブロックに含まれている場合、コンテキスト決定部32は、ctxIdxSplit = 0を出力する。
【0266】
(具体例2)
図26は、本具体例のコンテキスト決定方法のステップS11を説明するための図である。
図26の(a)は、色差CB(対象CB)を示し、
図26の(b)は、輝度CB(対応CB)を示している。なお、
図26における各ブロック内の番号は、パーティション番号を示している。輝度CBは、ブロックKA及びブロックKCを含む。また、ブロックKAの左上の点座標を点KARとし、ブロックKAの左下の点座標を点KALとする。また、ブロックKCの右上の点座標を点KCRとする。
【0267】
まず、ステップS11において、コンテキスト決定部32は、
図26の(b)が示す輝度CBの左上の点KARを含む対応ブロックのパーティション番号(partId_AboveLeft)と、当該輝度CBの右上の点KCRを含む対応ブロックのパーティション番号(partId_AboveRight)とが異なるか否かを判定する。当該判定の式を下記に示す。
【0268】
splitHorizontally (=verSplit) = (partId_AboveLeft != partId_AboveRight)
また、コンテキスト決定部32は、当該輝度CBの左上の点KARを含むブロックのパーティション番号(partId_AboveLeft)と、当該輝度CBの左下の点KALを含むブロックのパーティション番号(partId_LowerLeft)とが異なるか否かを判定する。当該判定の式を下記に示す。
【0269】
splitVertically (=horSplit) = (partId_AboveLeft != partId_LowerLeft)
輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの右上の点KCRを含むブロックのパーティション番号とが異なる場合、点KARと点KCRとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KCRとの間には、分割線が存在していると判定する。一方、輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの右上の点KCRを含むブロックのパーティション番号とが同じ場合、点KARと点KCRとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KCRとの間には、分割線が存在しないと判定する。
【0270】
また、輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの左下の点KALを含むブロックのパーティション番号とが異なる場合、点KARと点KALとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KALとの間には、分割線が存在していると判定する。一方、輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの左下の点KALを含むブロックのパーティション番号とが同じ場合、点KARと点KALとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KALとの間には、分割線が存在しないと判定する。
【0271】
コンテキスト決定部32は、当該輝度CBの左上の点KARを含むブロックのパーティション番号と、右上の点KCRを含むブロックのパーティション番号とが異なるか否かの結果を、splitHorizontallyとして出力する。
図26の(b)が示すように、点KARと点KCRとは、それぞれ、異なるブロックKAとブロックKCとに含まれており、ブロックKAとブロックKCとは、パーティション番号が異なるため、コンテキスト決定部32は、splitHorizontally = 1を設定する。
【0272】
また、コンテキスト決定部32は、当該輝度CBの左上の点KARを含むブロックのパーティション番号と、左下の点KALを含むブロックのパーティション番号とが異なるか否かの結果を、splitVerticallyとして出力する。
図26の(b)が示すように、点KARと点KALとは、それぞれ、同じ対応ブロックKAに含まれており、パーティション番号が同じであるため、コンテキスト決定部32は、splitVertically = 0を設定する。
【0273】
次に、ステップS12において、コンテキスト決定部32は、設定したsplitVertically及びsplitHorizontallyを参照して、色差CBの分割フラグのコンテキストであるctxIdxSplit = splitVertically + splitHorizontallyを決定する。本具体例の場合、splitVertically = 0であり、splitHorizontally = 1であるため、コンテキスト決定部32は、ctxIdxSplit = 1を出力する。
【0274】
(具体例3)
図27は、本具体例のコンテキスト決定方法のステップS11を説明するための図である。
図27の(a)は、色差CB(対象CB)を示し、
図27の(b)は、輝度CB(対応CB)を示している。なお、
図27における各ブロック内の番号は、パーティション番号を示している。輝度CBは、ブロックKA、ブロックKB、及びブロックKCを含む。また、ブロックKAの左上の点座標を点KARとし、ブロックKAの左下の点座標を点KALとする。また、ブロックKBの右下の点座標を点KBRとする。また、ブロックKCの右上の点座標を点KCRとする。
【0275】
まず、ステップS11において、コンテキスト決定部32は、
図27の(b)が示す輝度CBの左上の点KARを含むブロックのパーティション番号(partId_AboveLeft)と、当該輝度CBの右上の点KCRを含むブロックのパーティション番号(partId_AboveRight)とが異なるか否かを判定する。また、コンテキスト決定部32は、
図27の(b)が示す輝度CBの左下の点KALを含むブロックのパーティション番号(partId_LowerLeft)と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号(partId_LowerRight)とが異なるか否かを判定する。コンテキスト決定部32は、これらの判定を参照して、下記の式で示されるsplitHorizontallyを算出する。
【0276】
splitHorizontally (=verSplit) = (partId_AboveLeft != partId_AboveRight) + (partId_LowerLeft != partId_LowerRight)
また、コンテキスト決定部32は、当該輝度CBの左上の点KARを含むブロックのパーティション番号(partId_AboveLeft)と、当該輝度CBの左下の点KALを含むブロックのパーティション番号(partId_LowerLeft)とが異なるか否かを判定する。また、コンテキスト決定部32は、当該輝度CBの右上の点KCRを含むブロックのパーティション番号(partId_AboveRight)と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号(partId_lowerRight)とが異なるか否かを判定する。コンテキスト決定部32は、これらの判定を参照して、下記の式で示されるsplitVerticallyを算出する。
【0277】
splitVertically (=horSplit) = (partId_AboveLeft != partId_LowerLeft) + (partId_AboveRight != partId_LowerRight)
輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの右上の点KCRを含むブロックのパーティション番号とが異なる場合、点KARと点KCRとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KCRとの間には、分割線が存在していると判定する。一方、輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの右上の点KCRを含むブロックのパーティション番号とが同じ場合、点KARと点KCRとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KCRとの間には、分割線が存在しないと判定する。
【0278】
また、輝度CBの左下の点KALを含むブロックのパーティション番号と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号とが異なる場合、点KALと点KBRとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、点KALと点KBRとの間には、分割線が存在していると判定する。一方、輝度CBの左下の点KALを含むブロックのパーティション番号と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号とが同じ場合、点KALと点KBRとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、点KALと点KBRとの間には、分割線が存在しないと判定する。
【0279】
また、輝度CBの左上の点KARを含むブロックのパーティション番号と、当該輝度CBの左下の点KALを含むブロックのパーティション番号とが異なる場合、点KARと点KALとは、それぞれ、異なるブロックに含まれていることになるため、コンテキスト決定部32は、点KARと点KALとの間には、分割線が存在していると判定する。一方、輝度CBの右上の点KCRを含むブロックのパーティション番号と、当該輝度CBの右下の点KBRを含むブロックのパーティション番号とが同じ場合、点KCRと点KBRとは、それぞれ、同じブロックに含まれていることになるため、コンテキスト決定部32は、点KCRと点KBRとの間には、異なる2つのブロックに挟まれた分割線が存在しないと判定する。
【0280】
図27の(b)が示すように、点KARと点KCRとは、それぞれ、異なるブロックKAとブロックKCとに含まれており、ブロックKAとブロックKCとは、パーティション番号が異なるため、コンテキスト決定部32は、(partId_AboveLeft != partId_AboveRight) = 1を設定する。また、点KALと点KBRとは、それぞれ、異なるブロックKAとブロックKBとに含まれており、ブロックKAとブロックKBとは、パーティション番号が異なため、コンテキスト決定部32は、(partId_LowerLeft != partId_LowerRight) = 1を設定する。従って、コンテキスト決定部32は、上述の式より、splitHorizontally =2を設定する。
【0281】
また、
図27の(b)が示すように、点KARと点KALとは、それぞれ、同じブロックKAに含まれており、パーティション番号が同じであるため、コンテキスト決定部32は、(partId_AboveLeft != partId_LowerLeft) = 0を設定する。また、点KCRと点KBRとは、それぞれ、異なるブロックKCとブロックKBとに含まれており、ブロックKCとブロックKBとは、パーティション番号が異なため、コンテキスト決定部32は、(partId_AboveRight != partId_LowerRight) = 1を設定する。従って、コンテキスト決定部32は、上述の式より、splitVertically = 1を設定する。
【0282】
次に、ステップS12において、コンテキスト決定部32は、設定したsplitVertically及びsplitHorizontallyを参照して、色差CBの分割フラグのコンテキストであるctxIdxSplit = splitVertically + splitHorizontallyを決定する。本具体例の場合、splitVertically = 1であり、splitHorizontally = 2であるため、コンテキスト決定部32は、ctxIdxSplit = 3を出力する。なお、本具体例のctxIdxSplitは、0~4の5つの値を取り得るが、0~2の3つの値を取ることも可能である。その場合、上述のsplitVertically又はsplitHorizontallyが1又は2である場合(つまり、少なくとも1つ以上の分割線がある場合)、splitVertically、又はsplitHorizontallyを1とする。ctxIdxSplitが0~2の3つの値を取る場合の式を下記に示す。
【0283】
ctxIdxSplit = splitVertically ? 1 : 0 + splitHorizontally ? 1 : 0
又は、下記の式のようにsplitVertically + splitHorizontallyが3以上である場合、ctxIdxSplitを2としてもよい。
【0284】
ctxIdxSplit = min(2, splitVertically + splitHorizontally)
(画像符号化装置)
本実施形態に係る画像復号装置31の構成は、画像符号化装置11にも適用できる。その場合、画像符号化装置11は、CN情報復号部10に代わるCN情報符号化部(図示せず)と、コンテキスト決定部32とを備え、対象ブロックを分割するか否かを示す分割フラグ(QT分割フラグ、BT分割フラグ又はTT分割フラグ等)のコンテキストを導出する。
【0285】
上記の構成を有する画像符号化装置11において、コンテキスト決定部32は、色差ブロック(対象ブロック)に対応し、かつ、すでに分割された輝度ブロック(対応ブロック)の分割関連情報を取得する。次に、コンテキスト決定部32は、対応ブロックの分割状況を特定することにより、対応ブロックに分割線が存在するか否かを判定する。次に、コンテキスト決定部32は、当該判定に応じて、対象ブロックの分割フラグのコンテキストを決定する。次に、CN情報符号化部は、コンテキスト決定部32が決定したコンテキストに応じて、対象ブロックを分割するか否かを示す分割フラグを符号化する。
【0286】
(実施形態2のまとめ)
以上のように、本実施形態に係る画像復号装置31は、第1の色コンポーネントに関する対象ブロックの分割情報(分割フラグ)のコンテキストを、既に復号された第2の色コンポーネントに関する対応ブロックの分割状況を参照して決定し、当該コンテキストを用いて、第1の色コンポーネントに関する対象ブロックの分割情報を復号する。これにより、対応ブロックの分割状況に応じて、対象ブロックの分割情報を復号する。
【0287】
また、本実施形態に係る画像復号装置31は、対応ブロックのパーティション番号を参照して、第2の色コンポーネントに関する対応ブロックの分割状況を特定することにより、第2の色コンポーネントに関する対応ブロックの分割線の有無を判定し、当該判定を参照して、第1の色コンポーネントに関する対象ブロックの分割フラグのコンテキストを決定する。これにより、第2の色コンポーネントに関する対応ブロックのパーティション番号を参照して、第1のコンポーネントの分割の有無を判断するため、より適切なコンテキストを決定することができる。従って、画像復号装置において、分割情報の符号量を削減できる。
【0288】
〔実施形態3〕
本発明の実施形態3について、図面に基づいて説明すれば、以下のとおりである。なお、本実施形態においても、実施形態1に係る画像復号装置31及び画像符号化装置11を同様に用いることができる。従って、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、その説明を省略する。
【0289】
<実施形態3の態様1>
本態様では、実施形態1に係るコンテキスト決定方法と同様の方法によりコンテキストを導出する。ただし、本実施形態におけるコンテキストは、対象ブロックの分割方向を示す方向フラグ(分割モード)のコンテキストである。本態様において、コンテキスト決定部32は、実施形態1と類似の方法により、隣接ブロックの分割の有無又は分割方向を判定し、当該判定に基づいて、対象ブロックに対するBT方向フラグのコンテキストを導出する。
【0290】
(CN情報復号部)
CN情報復号部10は、対象CNのBT分割の分割方法を示すBT方向フラグ(請求項における分割情報)を復号するか否かのコンテキスト(後述する)に応じて、CNに含まれるCN情報から、BT方向フラグを復号する。そして、CN情報復号部10は、BT方向フラグがさらなる分割を通知しなくなるまで、BT方向フラグが示す分割方法により、対象CNを再帰的に分割し復号する。最後に、CTU情報からツリーユニットフッタCTUFを復号する。
【0291】
(コンテキスト決定部)
本態様に係るコンテキスト決定部32は、CN情報復号部10がまだ分割していない対象CNの分割関連情報と、当該対象CNに隣接し、かつ、CN情報復号部10がすでに分割し復号した隣接CNの分割関連情報と、をCN情報復号部10から取得する。
【0292】
本態様に係るコンテキスト決定部32は、取得した隣接CNのパーティション番号、水平デプス及び垂直デプス又はサイズを参照して、隣接ブロックの分割状況を特定することにより、隣接ブロックの、分割の有無又は分割の方向を判定する。
【0293】
また、本態様に係るコンテキスト決定部32において、コンテキスト決定部32は、判定した分割の有無又は分割の方向に応じて、対象ブロックの分割方向を示す方向フラグ(分割モード)のコンテキストを決定する。コンテキスト決定部32が決定したコンテキストは、上述のCN情報復号部10に出力される。
【0294】
(コンテキスト決定方法)
本態様に係る画像復号装置31によるコンテキスト決定方法について、
図28を参照して、詳細に説明する。
図28は、本態様に係る画像復号装置31によるコンテキスト決定方法の一例を説明するフローチャート図である。なお、実施形態1及び2に係るコンテキスト決定方法と同様の工程については、詳細な説明は省略する。
【0295】
まず、コンテキスト決定部32は、CN情報復号部10がまだ分割していない対象CN(対象ブロック)と、当該対象CNに隣接し、かつ、CN情報復号部10がすでに分割し復号した隣接CN(隣接ブロック)と、をCN情報復号部10から取得する(ステップS20)。
【0296】
次に、コンテキスト決定部32は、対象CN及び隣接CNのパーティション番号、水平デプス及び垂直デプス又はサイズを参照して、隣接ブロックの分割状況を特定することにより、隣接ブロックの、分割の有無又は分割方向を判定する(ステップS21)。なお、ステップS21の具体的な方法は後述する。
【0297】
次に、コンテキスト決定部32は、判定した分割の有無又は分割方向に応じて、コンテキストを決定する(ステップS22)。なお、ステップS22の具体的な方法については後述する。
【0298】
次に、CN情報復号部10は、コンテキスト決定部32が決定したコンテキストに応じて、CNに含まれる情報から、対象CNのBT分割の分割方法を示すBT方向フラグを復号する(ステップS23)。
【0299】
(具体例1)
本態様の具体例1において、コンテキスト決定部32は、ステップS21において、実施形態1の具体例と同様に、分割線の有無を判定した結果であるsplitHorizontally及びsplitVerticallyを設定する。本態様の具体例1におけるsplitHorizontally及びsplitVerticallyは、実施形態1の各具体例におけるsplitHorizontally及びsplitVerticallyと同様の方法により求められる。そのため、ステップS21におけるsplitHorizontally及びsplitVerticallyについての工程の詳細な説明は省略する。また、コンテキスト決定部32は、分割関連情報として、対象ブロックの幅であるwidthと、対象ブロックの高さであるheightを参照する。
【0300】
まず、splitHorizontally及びsplitVerticallyを参照してコンテキストを決定する方法を説明する。
図29の(a)は、splitHorizontally及びsplitVerticallyを参照してコンテキストを決定する方法を説明するための表である。なお、以下では、簡略化のために、あるブロックが水平方向に並ぶ2つのブロックに分割されることを水平に分割(垂直分割)とし、あるブロックが垂直方向に並ぶ2つのブロックに分割されることを垂直に分割(水平分割)とする。
【0301】
ステップS22において、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定することにより、コンテキスト(ctxIdxDir)を決定する。当該判定の式を下記に示す。
【0302】
if (splitHorizontally > splitVertically) ctxIdxDir = 1
else if (splitHorizontally < splitVertically) ctxIdxDir = 2
else ctxIdxDir = 0
なお、verSplitとhorSplitを用いて表現すると、以下になる。
【0303】
if (verSplit > horSplit) ctxIdxDir = 1
else if (verSplit < horSplit) ctxIdxDir = 2
else ctxIdxDir = 0
詳細に説明すると、
図29の(a)が示すように、splitHorizontallyがsplitVerticallyよりも大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 1に決定する。ctxIdxDir = 1は、隣接ブロック(もしくは対応ブロック)が、水平に分割/split horizontally(垂直分割/verSplit、左右に分割)されており、対象ブロックも水平に分割(垂直分割)される可能性が高く、CN情報復号部10が対象ブロックの水平に分割(垂直分割)するか否かを示す方向フラグを復号する可能性が高いことを示している。
【0304】
また、splitHorizontallyがsplitVerticallyと同じである場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 0に決定する。ctxIdxDir = 0は、隣接ブロック(もしくは対応ブロック)が水平分割及び垂直分割の両方が同じ回数実行されているため、CN情報復号部10は、対象ブロックの垂直分割又は水平分割の方向フラグを等確率で復号する可能性が高いことを示している。
【0305】
また、splitHorizontallyがsplitVerticallyよりも小さい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 2に決定する。ctxIdxDir = 2は、隣接ブロック(もしくは対応ブロック)が、垂直に分割(水平分割、上下に分割)されており、対象ブロックも垂直に分割(水平分割)される可能性が高く、CN情報復号部10が対象ブロックの垂直に分割(水平分割)するか否かを示す方向フラグを復号する可能性が高いことを示している。
【0306】
次に、splitHorizontally及びsplitVerticallyを優先的に参照し、width及びheightを参照してコンテキストを決定する方法を説明する。
図29の(b)は、splitHorizontally及びsplitVerticallyを優先的に参照し、width及びheightを参照してコンテキストを決定する方法を説明するための表である。
【0307】
ステップS22において、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定することにより、コンテキスト(ctxIdxDir)を決定する。そして、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定することができなかった場合(例えばsplitHorizontallyとsplitVerticallyとが等しい場合)、widthがheightよりも大きいか否かを判定することにより、コンテキスト(ctxIdxDir)を決定する。これらの判定の式を下記に示す。
【0308】
if (splitHorizontally > splitVertically) ctxIdxDir = ctxA
else if (splitHorizontally < splitVertically) ctxIdxDir = ctxB
else if (width > height) ctxIdxDir = ctxA
else if (width < height) ctxIdxDir = ctxB
else ctxIdxDir = ctxC
ここでctxA、ctxB、ctxCは、コンテストを指定するための値である。例えば、ctxA=1, ctxB=2, ctxC=0としてもよいが、これらの値に限定されない。ctxA=0, ctxB=1, ctxC=2などでもよい。つまり、コンテキスト(コンテキストインデックス)によって指定されるコンテキスト変数は、コンテキストを区別するために用いられるので、分岐結果によって互いに値が異なれば十分であり、大小関係は異なってもよい(以下、同様)。ここでは、ctxA、ctxB、ctxCを用いることによって、splitHorizontally > splitVerticallyが真の場合と後続のwidth > heightが真の場合とのコンテキストが同じ値のctxAであること、splitHorizontally < splitVerticallyが真の場合と後続のwidth < heighが真の場合とのコンテキストが同じ値のctxBであること、および、上記2つのコンテキストctxAの値とctxBの値とが異なること、を示す。
【0309】
なお、verSplitとhorSplitを用いて表現すると、以下になる。
【0310】
if (verSplit > horSplit) ctxIdxDir = ctxA
else if (verSplit < horSplit) ctxIdxDir = ctxB
else if (width > height) ctxIdxDir = ctxA
else if (width < height) ctxIdxDir = ctxB
else ctxIdxDir = ctxC
詳細に説明すると、まず、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定し、
図29の(b)が示すように、splitHorizontallyがsplitVerticallyよりも大きい場合、コンテキストを、ctxIdxDir = 1に決定する。splitHorizontallyがsplitVerticallyよりも大きくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 2に決定する。splitHorizontallyとsplitVerticallyとが等しい場合、コンテキスト決定部32は、対象ブロックの幅であるwidthが、対象ブロックの高さであるheightよりも大きいか否かを判定する。widthがheightよりも大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 1に決定する。ここでコンテキスト決定部32がコンテキストをctxIdxDir = 1に決定する理由としては、widthがheightよりも大きい場合、つまり、対象ブロックが垂直方向よりも水平方向に長い長方形である場合、対象ブロックが水平に分割(垂直分割)される可能性が高いためである。
【0311】
また、widthがheightよりも小さい場合、コンテキスト決定部32は、コンテキストをctxIdxDir = 2に決定する。ここでコンテキスト決定部32がコンテキストをctxIdxDir = 2に決定する理由としては、widthがheightよりも小さい場合、つまり、対象ブロックが水平方向よりも垂直方向に長い長方形である場合、対象ブロックが垂直に分割(水平分割)される可能性が高いためである。
【0312】
また、widthとheightとが等しい場合、コンテキスト決定部32は、コンテキストをctxIdxDir = 0に決定する。ここでコンテキスト決定部32がコンテキストをctxIdxDir = 0に決定する理由としては、widthとheightとが等しい場合、つまり、対象ブロックが水平方向の辺と垂直方向の辺とが等しい正方形である場合、対象ブロックの分割方向が等確率で発生するためである。
【0313】
次に、width及びheightを優先的に参照し、splitHorizontally及びsplitVerticallyを参照してコンテキストを決定する方法を説明する。
図29の(c)は、width及びheightを優先的に参照し、splitHorizontally及びsplitVerticallyを参照してコンテキストを決定する方法を説明するための表である。
【0314】
ステップS22において、コンテキスト決定部32は、widthがheightよりも大きいか否かを判定することにより、コンテキスト(ctxIdxDir)を決定する。そして、コンテキスト決定部32は、widthがheightよりも大きいか否かを判定することができなかった場合(例えばwidthとheightとが等しい場合)、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定することにより、コンテキスト(ctxIdxDir)を決定する。これらの判定の式を下記に示す。
【0315】
if (width > height) ctxIdxDir = ctxA
else if (width < height) ctxIdxDir = ctxB
else if (splitHorizontally > splitVertically) ctxIdxDir = ctxA
else if (splitHorizontally < splitVertically) ctxIdxDir = ctxB
else ctxIdxDir = ctxC
なお、verSplitとhorSplitを用いて表現すると、以下になる。
【0316】
if (width > height) ctxIdxDir = ctxA
else if (width < height) ctxIdxDir = ctxB
else if (verSplit > horSplit) ctxIdxDir = ctxA
else if (verSplit < horSplit) ctxIdxDir = ctxB
else ctxIdxDir = ctxC
詳細に説明すると、コンテキスト決定部32は、widthがheightよりも大きいか否かを判定し、
図29の(c)が示すように、widthがheightよりも大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 1に決定する。widthがheightよりも小さい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 2に決定する。
【0317】
次に、widthとheightとが等しい場合、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定する。splitHorizontallyがsplitVerticallyよりも大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 1に決定する。また、splitHorizontallyがsplitVerticallyよりも小さい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir = 2に決定する。また、splitHorizontallyとsplitVerticallyとが等しい場合、コンテキスト決定部32は、コンテキストを、ctxIdxDir =0に決定する。
【0318】
上記の各方法では、コンテキストの値が0~2の3段階の値をとる例を説明したが、コンテキストの値は、0~4の5段階の値をとってもよい。
図29の(d)は、コンテキストの値が0~4の5段階の値をとる例を説明するための表である。
【0319】
まず、ステップS22において、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定する。そして、splitHorizontallyがsplitVerticallyよりも大きくない場合、コンテキスト決定部32は、splitHorizontallyとsplitVerticallyとが等しいか否かをさらに判定する。また、コンテキスト決定部32は、widthがheightよりも大きいか否かを判定する。そして、widthがheightよりも大きくない場合、widthとheightとが等しいか否かをさらに判定する。そして、コンテキスト決定部32は、splitHorizontally及びsplitVerticallyを用いた判定と、width及びheightを用いた判定とを参照することにより、コンテキスト(ctxIdxDir)を決定する。これらの判定の式を下記に示す。
【0320】
ctxIdxDir = (splitHorizontally > splitVertically) ? 2 : (splitHorizontally == splitVertically) ? 1 : 0 + (width > height) ? 2 : (width == height) ? 1 : 0
詳細に説明すると、まず、コンテキスト決定部32は、splitHorizontallyがsplitVerticallyよりも大きいか否かを判定し、splitHorizontallyがsplitVerticallyよりも大きい場合、splitHorizontally及びsplitVerticallyを用いた判定によるコンテキストの成分を、2に設定する。splitHorizontallyがsplitVerticallyよりも大きくない場合、コンテキスト決定部32は、splitHorizontallyとsplitVerticallyとが等しいか否かをさらに判定する。splitHorizontallyとsplitVerticallyとが等しい場合、コンテキスト決定部32は、splitHorizontally及びsplitVerticallyを用いた判定によるコンテキストの成分を、1に設定する。splitHorizontallyとsplitVerticallyとが等しくない場合、コンテキスト決定部32は、splitHorizontally及びsplitVerticallyを用いた判定によるコンテキストの成分を、0に設定する。
【0321】
また、コンテキスト決定部32は、widthがheightよりも大きいか否かを判定し、widthがheightよりも大きい場合、width及びheightを用いた判定によるコンテキストの成分を、2に設定する。widthがheightよりも大きくない場合、コンテキスト決定部32は、widthとheightとが等しいか否かをさらに判定する。widthとheightとが等しい場合、コンテキスト決定部32は、width及びheightを用いた判定によるコンテキストの成分を、1に設定する。widthとheightとが等しくない場合、コンテキスト決定部32は、width及びheightを用いた判定によるコンテキストの成分を、0に設定する。
【0322】
次に、コンテキスト決定部32は、splitHorizontally及びsplitVerticallyを用いた判定によるコンテキストの成分と、width及びheightを用いた判定によるコンテキストの成分とを加算することにより、ctxIdxDirを決定する。これにより決定されたctxIdxDirは、0~4の値を取り得る。そして、ctxIdxDirが4に近いほど、隣接ブロック(または対応ブロック)が水平に分割(垂直分割)されている可能性が高く、対象ブロックも水平に分割される可能性が高く、CN情報復号部10が対象ブロックを水平に分割するか否かを示す方向フラグを復号する可能性が高いことを示している。また、ctxIdxDirが0に近いほど、隣接ブロックが垂直に分割(水平分割)されている可能性が高く、対象ブロックも垂直に分割される可能性が高く、CN情報復号部10が対象ブロックの垂直に分割するか否かを示す方向フラグを復号する可能性が高いことを示している。
【0323】
また、ctxIdxDirが4に近いほど、隣接ブロックが垂直に分割(水平分割)されている可能性が高く、対象ブロックも垂直に分割(水平分割)される可能性が高く、CN情報復号部10が対象ブロックを垂直に分割するか否かを示す方向フラグを復号する可能性が高いことを示していてもよい。同様に、ctxIdxDirが0に近いほど、隣接ブロックが水平に分割(垂直分割)されている可能性が高く、対象ブロックも水平に分割(垂直分割)される可能性が高く、CN情報復号部10が、対象ブロックを水平に分割するか否かを示す方向フラグを復号する可能性が高いことを示していてもよい。その場合の判定の式を下記に示す。
【0324】
ctxIdxDir = (splitHorizontally > splitVertically) ? 0 : (splitHorizontally == splitVertically) ? 1 : 2 + (width > height) ? 0 : (width == height) ? 1 : 2
なお、verSplitとhorSplitを用いて表現すると、以下になる。
【0325】
ctxIdxDir = (verSplit > horSplit) ? 0 : (verSplit == horSplit) ? 1 : 2 + (width > height) ? 0 : (width == height) ? 1 : 2
(具体例2)
上述の具体例1では、コンテキスト決定部32がBT分割方向フラグ(bt_dir_flag)のコンテキスト(ctxIdxDir)を決定する方法を説明した。当該方法により求められたコンテキストは、本実施形態に係る画像復号装置31がBT分割フラグ(bt_split_flag)を復号した後に、BT分割方向フラグ(bt_dir_flag)を復号する際に用いることを想定したものである。つまり、BT分割バイナリゼーションでは、1ビット目で分割の有無を指定し、2ビット目で分割の方向を指定する。しかし、本実施形態に係る画像復号装置31は、BT分割フラグ(bt_split_flag)及びBT分割方向フラグ(bt_dir_flag)を復号する代わりに、垂直に分割するか否かを示す分割フラグ(bt_split_vertically_flag/bt_hor_split_flag)及び水平に分割するか否かを示す分割フラグ(bt_split_horizontally_flag/bt_ver_split_flag)を復号してもよい。つまり、BT分割バイナリゼーションにおいて、1ビット目で水平分割の有無(垂直に分割されているか否か)を指定し、2ビット目で垂直分割の有無(水平に分割されているか否か)を指定してもよい。その場合、垂直分割及び水平分割が無い場合に、分割がないものとすることができる。なお、垂直分割フラグは、対象ブロックを水平に分割するか否かを示すフラグである。また、水平分割フラグは、対象ブロックを垂直に分割するか否かを示すフラグである。下記で、水平分割フラグ(bt_split_vertically_flag)のコンテキスト(ctxIdxBTVertically)と、垂直分割フラグ(bt_split_horizontally_flag)のコンテキスト(ctxIdxBTHorizontally)とを決定する方法を説明する。
【0326】
まず、具体例1のように、splitHorizontally及びsplitVerticallyを参照してコンテキストを決定する方法を説明する。ステップS22において、コンテキスト決定部32は、splitVerticallyが0より大きいか否かを判定する。splitVerticallyが0より大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 1に決定する。ctxIdxBTVertically = 1は、対象ブロックが垂直に分割(水平分割、上下に分割)される可能性が高く、CN情報復号部10が、対象ブロックを垂直に分割するか否かを示す方向フラグを復号する可能性が高いことを示している。splitVerticallyが0より大きくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 0に決定する。ctxIdxBTVertically = 1は、対象ブロックが垂直に分割される可能性が低く、CN情報復号部10が対象ブロックの垂直に分割の方向フラグを復号する可能性が低いことを示している。当該判定の式を下記に示す。
【0327】
ctxIdxBTVertically = (splitVertically > 0)? 1 : 0
また、コンテキスト決定部32は、splitHorizontallyが0より大きいか否かを判定する。splitHorizontallyが0より大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally = 1に決定する。ctxIdxBTHorizontally = 1は、対象ブロックが水平に分割(垂直分割、左右に分割)される可能性が高く、CN情報復号部10が、対象ブロックを水平に分割するか否かを示す方向フラグを復号する可能性が高いことを示している。splitHorizontallyが0より大きくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally = 0に決定する。ctxIdxBTVHorizontally = 0は、対象ブロックが水平に分割される可能性が低く、CN情報復号部10が、対象ブロックを水平に分割するか否かを示す方向フラグを復号する可能性が低いことを示している。当該判定の式を下記に示す。
【0328】
ctxIdxBTHorizontally = (splitHorizontally > 0)? 1 : 0
次に、splitHorizontally及びsplitVerticallyを優先的に参照し、width及びheightを参照してコンテキストを決定する方法を説明する。ステップS22において、コンテキスト決定部32は、splitVerticallyが0より大きいか否かを判定する。splitVerticallyが0より大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically =1に決定する。splitVerticallytが0より大きくない場合、コンテキスト決定部32は、対象ブロックの幅であるwidthが対象ブロックの高さであるheightより小さいか否かを判
定する。widthがheightより小さい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 1に決定する。widthがheightより小さくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 0に決定する。これらの判定の式を下記に示す。
【0329】
ctxIdxBTVertically = (splitVertically > 0) ? 1 : (width < height) ? 1 : 0
また、コンテキスト決定部32は、splitHorizontallyが0より大きいか否かを判定する。splitHorizontallyが0より大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally = 1に決定する。splitHorizontallyが0より大きくない場合、コンテキスト決定部32は、対象ブロックの幅であるwidthが対象ブロックの高さであるheightより大きいか否かを判定する。widthがheightより大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally = 1に決定する。widthがheightより大きくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally= 0に決定する。これらの判定の式を下記に示す。
【0330】
ctxIdxBTHorizontally = (splitHorizontally > 0) ? 1 : (width > height) ? 1 : 0
次に、width及びheightを優先的に参照し、splitHorizontally及びsplitVerticallyを参照してコンテキストを決定する方法を説明する。ステップS22において、コンテキスト決定部32は、対象ブロックの幅であるwidthが対象ブロックの高さであるheightより小さいか否かを判定する。widthがheightより小さい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 1に決定する。widthがheightより小さくない場合、コンテキスト決定部32は、splitVerticallyが0より大きいか否かを判定する。splitVerticallyが0より大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 1に決定する。splitVerticallyが0より大きくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTVertically = 0に決定する。これらの判定の式を下記に示す。
【0331】
ctxIdxBTVertically = (width < height) ? 1 : (splitVertically > 0) ? 1 : 0
また、コンテキスト決定部32は、対象ブロックの幅であるwidthが対象ブロックの高さであるheightより大きいか否かを判定する。widthがheightより大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally = 1に決定する。widthがheightより大きくない場合、コンテキスト決定部32は、splitHorizontallyが0より大きいか否かを判定する。splitHorizontallyが0より大きい場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally = 1に決定する。splitHorizontallyが0より大きくない場合、コンテキスト決定部32は、コンテキストを、ctxIdxBTHorizontally =0に決定する。
【0332】
(実施形態3の態様1のまとめ)
以上のように、本態様に係る画像復号装置31は、対象ブロックの分割方向を示す方向フラグのコンテキストを、当該対象ブロックに隣接する1又は複数の隣接ブロックの分割状況を参照して決定し、当該コンテキストを用いて、方向フラグを復号する。これにより、隣接ブロックの分割状況に応じて、方向フラグを復号するため、隣接ブロックが分割されておらず、対象ブロックも分割されない可能性が高い場合に、不要な方向フラグを復号する可能性を減少させることができる。従って、画像復号装置において、分割情報の符号量を削減できる。
【0333】
また、本態様に係る画像復号装置31は、隣接ブロックのパーティション番号、水平デプス及び垂直デプス又はサイズを参照して、隣接ブロックの分割状況を特定することにより、隣接ブロックの分割線の有無又は分割方向を判定し、当該判定を参照してコンテキストを決定する。これにより、隣接ブロックのパーティション番号、水平デプス及び垂直デプス又はサイズを参照するため、隣接ブロックの分割関連情報が反映された判定を実行することができ、より適切なコンテキストを決定することができる。
【0334】
<実施形態3の態様2>
本態様では、実施形態2に係るコンテキスト決定方法と同様の方法によりコンテキストを導出する。ただし、本実施形態におけるコンテキストは、対象ブロックの分割方法を示す方向フラグのコンテキストである。本態様において、コンテキスト決定部32は、実施形態2と類似の方法により、対応ブロックの分割状況を特定することにより、対応ブロックの、分割の有無又は分割方向を判定し、当該判定に基づいて、対象ブロックの方向フラグのコンテキストを導出する。なお、実施形態3の態様2に係るCN情報復号部10は、上述の実施形態3の態様1の機能と同様の機能を有している。
【0335】
(コンテキスト決定部)
本態様に係るコンテキスト決定部32は、CN情報復号部10がまだ分割していない色差ブロック(色差CB(請求項における第1の色コンポーネントに関する対象ブロック))に対応し、かつ、CN情報復号部10がすでに分割し復号した輝度ブロック(輝度CB(請求項における第2の色コンポーネントに関する対応ブロック))の分割関連情報と、をCN情報復号部10から取得する。
【0336】
また、本態様に係るコンテキスト決定部32は、取得した輝度CBの分割関連情報を参照して、色差CB(対象CB)に対応する輝度CB(対応CB)の分割状況を特定することにより、対応CBの分割の有無又は分割方向を判定する。
【0337】
また、本態様に係るコンテキスト決定部32において、コンテキスト決定部32は、判定した分割状況に応じて、対象CBの分割方向を示す方向フラグのコンテキストを決定する。コンテキスト決定部32が決定したコンテキストは、上述のCN情報復号部10に出力される。
【0338】
(コンテキスト決定方法)
本態様に係る画像復号装置31によるコンテキスト決定方法について、
図30を参照して、詳細に説明する。
図30は、本態様に係る画像復号装置31によるコンテキスト決定方法の一例を説明するフローチャート図である。なお、実施形態1及び2、並びに実施形態3の態様1に係るコンテキスト決定方法と同様の工程については、詳細な説明は省略する。
【0339】
コンテキスト決定部32は、CN情報復号部10がまだ分割していない色差CB(対象CB)に対応し、かつ、CN情報復号部10がすでに分割し復号した輝度CB(対応CB)の分割関連情報、をCN情報復号部10から取得する(ステップS30)。
【0340】
コンテキスト決定部32は、取得した輝度CBの分割関連情報を参照して、色差CBに対応する輝度CBの分割状況を特定することにより、対応CBの分割の有無又は分割方向を判定する(ステップS31)。
【0341】
コンテキスト決定部32は、判定した対応CBの分割の有無又は分割方向に応じて、対象CBのコンテキストを決定する(ステップS32)。
【0342】
CN情報復号部10は、コンテキスト決定部32が決定したコンテキストに応じて、CNに含まれるCN情報から、対象CBのBT分割の分割方法を示すBT方向フラグを復号する(ステップS33)。
【0343】
(具体例)
本態様の具体例においても、コンテキスト決定部32は、実施形態3の態様1の具体例1及び具体例2と同様の方法を実行することができる。そのため、本態様の具体例についての詳細な説明は省略する。
【0344】
本態様では、ステップS31において、コンテキスト決定部32は、対応ブロックが水平に分割(垂直分割)されているか否かを示すsplitHorizontallyと、対応ブロックが垂直に分割(水平分割)されているか否かを示すsplitVerticallyとを設定する。そして、コンテキスト決定部32は、実施形態3の態様1の具体例1及び具体例2と同様の方法により、splitHorizontally及びsplitVerticallyを用い、また、必要に応じて、対象ブロックの幅であるwidthと、対象ブロックの高さであるheightとを用いることにより、対象ブロックの分割方向を示す方向フラグのコンテキスト(ctxIdxDir)を決定する。
【0345】
(実施形態3の態様2のまとめ)
以上のように、本態様に係る画像復号装置31は、第1の色コンポーネントに関する対象ブロックの分割方向を示す方向フラグのコンテキストを、既に復号された第2の色コンポーネントに関する対応ブロックの分割状況を参照して決定し、当該コンテキストを用いて、方向フラグを復号する。これにより、対応ブロックの分割状況に応じて、方向フラグを復号するため、対応ブロックが分割されておらず、対象ブロックも分割されない可能性が高い場合に、不要な方向フラグを復号する可能性を減少させることができる。従って、画像復号装置において、分割情報の符号量を削減できる。
【0346】
また、本態様に係る画像復号装置31は、対応ブロックのパーティション番号を参照して、対応ブロックの分割状況を特定することにより、対応ブロックの分割線の有無又は分割方向を判定し、当該判定を参照して、対象ブロックのコンテキストを決定する。これにより、対応ブロックのパーティション番号を参照するため、対応ブロックの分割関連情報が反映された、より適切なコンテキストを決定することができる。
【0347】
<画像符号化装置>
本実施形態に係る画像復号装置31の構成は、同様に、画像符号化装置11にも適用できる。その場合、画像符号化装置11は、CN情報復号部10に代わるCN情報符号化部(図示せず)と、コンテキスト決定部32とを備え、対象ブロックを分割するか否かを示す分割方向フラグ(BT分割方向フラグ又はTT分割方向フラグ等)のコンテキストを導出する。
【0348】
上記の構成を有する画像符号化装置11において、コンテキスト決定部32は、色差ブロック(対象ブロック)の隣接ブロック、または色差ブロックに対応し、かつ、すでに分割された輝度ブロック(対応ブロック)の分割関連情報を取得する。次に、コンテキスト決定部32は、これらの分割関連情報を参照して、隣接ブロック又は対応ブロックの分割状況を特定することにより、隣接ブロック若しくは対応ブロックの分割線が存在するか否かの判定、又は隣接ブロック若しくは対応ブロックの分割方向の判定を実行する。次に、コンテキスト決定部32は、当該判定に応じて、対象ブロックの分割方向を示す分割方向フラグのコンテキストを決定する。次に、CN情報符号化部は、コンテキスト決定部32が決定したコンテキストに応じて、対象ブロックの分割方向を示す分割方向フラグを符号化する。
【0349】
〔ソフトウェアによる実現例〕
なお、上述した実施形態における画像符号化装置11、画像復号装置31の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆DCT部311、加算部312、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、ループフィルタ107、符号化パラメータ決定部110、予測パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置11、画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0350】
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、又は全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、又は全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
【0351】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0352】
〔応用例〕
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CG及びGUIを含む)であってもよい。
【0353】
まず、上述した画像符号化装置11及び画像復号装置31を、動画像の送信及び受信に利用できることを、
図8を参照して説明する。
【0354】
図8の(a)は、画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。
図8の(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した画像符号化装置11は、この符号化部PROD_A1として利用される。
【0355】
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成又は加工する画像処理部A7を更に備えていてもよい。
図8の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
【0356】
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
【0357】
図8の(b)は、画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。
図8の(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した画像復号装置31は、この復号部PROD_B3として利用される。
【0358】
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示するディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。
図8の(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
【0359】
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
【0360】
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
【0361】
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。
【0362】
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線又は有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
【0363】
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
【0364】
次に、上述した画像符号化装置11及び画像復号装置31を、動画像の記録及び再生に利用できることを、
図9を参照して説明する。
【0365】
図9の(a)は、上述した画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。
図9の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した画像符号化装置11は、この符号化部PROD_C1として利用される。
【0366】
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
【0367】
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成又は加工する画像処理部PROD_C6を更に備えていてもよい。
図9の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
【0368】
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
【0369】
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダなどが挙げられる(この場合、入力端子PROD_C4又は受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5又は画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3又は受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_Cの一例である。
【0370】
図9の(b)は、上述した画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロック図である。
図9の(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した画像復号装置31は、この復号部PROD_D2として利用される。
【0371】
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
【0372】
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。
図9の(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
【0373】
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
【0374】
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4又は送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型又はタブレット型PC(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
【0375】
(ハードウェア的実現及びソフトウェア的実現)
また、上述した画像復号装置31及び画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
【0376】
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(RandomAccess Memory)、上記プログラム及び各種データを格納するメモリ等の記憶装置(記録
媒体)などを備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(又はCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
【0377】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc)/CD-R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory:登録商標)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
【0378】
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成又は種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【0379】
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【0380】
(関連出願の相互参照)
本出願は、2017年3月16日に出願された日本国特許出願:特願2017-051342、及び2016年12月16日に出願された日本国特許出願:特願2016-244900に対して優先権の利益を主張するものであり、それらを参照することにより、その内容の全てが本書に含まれる。
【産業上の利用可能性】
【0381】
本発明の実施形態は、画像データが符号化された符号化データを復号する画像復号装置、及び、画像データが符号化された符号化データを生成する画像符号化装置に好適に適用することができる。また、画像符号化装置によって生成され、画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
【符号の説明】
【0382】
10 CN情報復号部(分割情報復号部)
11 画像符号化装置
13 TT情報復号部
22 TU復号部
31 画像復号装置
32 コンテキスト決定部
41 画像表示装置