(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-28
(45)【発行日】2024-11-06
(54)【発明の名称】画像変換装置及び画像復号装置
(51)【国際特許分類】
H04N 19/40 20140101AFI20241029BHJP
H04N 19/157 20140101ALI20241029BHJP
H04N 19/176 20140101ALI20241029BHJP
H04N 19/117 20140101ALI20241029BHJP
【FI】
H04N19/40
H04N19/157
H04N19/176
H04N19/117
(21)【出願番号】P 2021546976
(86)(22)【出願日】2020-09-18
(86)【国際出願番号】 JP2020035430
(87)【国際公開番号】W WO2021054439
(87)【国際公開日】2021-03-25
【審査請求日】2023-06-30
(31)【優先権主張番号】P 2019171791
(32)【優先日】2019-09-20
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】308036402
【氏名又は名称】株式会社JVCケンウッド
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】竹原 英樹
(72)【発明者】
【氏名】中村 博哉
(72)【発明者】
【氏名】坂爪 智
(72)【発明者】
【氏名】福島 茂
(72)【発明者】
【氏名】熊倉 徹
(72)【発明者】
【氏名】倉重 宏之
【審査官】岩井 健二
(56)【参考文献】
【文献】特表2019-526996(JP,A)
【文献】BROSS, Benjamin et al.,Versatile Video Coding (Draft 6),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 ,JVET-O2001 (version 14),2019年07月31日,pp. 21-23, 40-43, 50-54, 82-84, 97-104, 135-141
【文献】ZHOU, Minhua et al.,AHG4: Sub-stream entry points SEI message,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JCTVC-K0200 (version 2),2012年10月13日,pp. 1-8
【文献】CLARE, Gordon et al.,Wavefront and Cabac Flush: Different Degrees of Parallelism Without Transcoding,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,JCTVC-F275 (version 3),2011年07月15日,pp. 1-11
【文献】MISRA, Kiran and SEGALL, Andrew,Tiles for parallel decoding,Joint Collaborative Team on Video Coding (JCT-VC)of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,JCTVC-E412 (version 2),2011年03月19日,pp. 1-5
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
画像を所定サイズのブロックに分割して、前記ブロックを1ブロック行以上まとめた矩形領域を整数個含むスライスを含む符号化ピクチャを変換する画像変換装置であって、
前記符号化ピクチャがループフィルタを適用するか否かがスライス境界と矩形領域境界で同一であれば、前記符号化ピクチャに含まれる前記スライスと前記矩形領域の関係を再構成するように前記符号化ピクチャを変換し、前記符号化ピクチャがループフィルタを適用するか否かが前記スライス境界と前記矩形領域境界で同一でなければ、前記符号化ピクチャに含まれる前記スライスと前記矩形領域の関係を変えないように前記符号化ピクチャを変換することを特徴とする画像変換装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列処理可能な画像符号化及び復号技術に関する。
【背景技術】
【0002】
HEVCでは並列処理のツールとしてタイルとエントロピー同期符号化が定義されている。JVET(Joint Video Expert Team)にて策定中の次世代の映像符号化規格であるVVC(Versatile Video Coding)では並列処理のツールの改善が検討されている。
【先行技術文献】
【非特許文献】
【0003】
Versatile Video Coding (Draft 6)
【発明の概要】
【0004】
非特許文献1の技術には規格策定途上にあり、並列処理のツールの処理効率に課題がある。
【0005】
上記課題を解決するために、本発明のある態様の画像変換装置は、画像を所定サイズのブロックに分割して、前記ブロックを1ブロック行以上まとめた矩形領域を整数個含むスライスを含む符号化ピクチャを変換する画像変換装置であって、前記符号化ピクチャがループフィルタを適用するか否かがスライス境界と矩形領域境界で同一であれば、前記符号化ピクチャに含まれる前記スライスと前記矩形領域の関係を再構成するように前記符号化ピクチャを変換し、前記符号化ピクチャがループフィルタを適用するか否かが前記スライス境界と前記矩形領域境界で同一でなければ、前記符号化ピクチャに含まれる前記スライスと前記矩形領域の関係を変えないように前記符号化ピクチャを変換する。
【0006】
本発明の別の態様は、画像復号装置である。この装置は、画像を所定サイズのブロックに分割して、前記ブロックを1ブロック行以上まとめた矩形領域を整数個含むスライスの符号列を復号する画像復号装置であって、前記スライスの符号列はNALユニットに含まれ、前記スライスに含まれる2番目以降の前記矩形領域の開始バイト位置を示すエントリポイントを前記スライスが含まれるNALユニットとは別のNALユニットから復号する。
【0007】
本発明のさらに別の態様もまた、画像復号装置である。この装置は、画像を所定サイズのブロックに分割して、前記ブロックを1ブロック行以上まとめた矩形領域を整数個含むスライスの符号列を復号する画像復号装置であって、前記スライスが2以上の前記矩形領域を含む可能性があることを示すフラグが、前記スライスが2以上の前記矩形領域を含む可能性があることを示す場合、前記スライスに含まれる2番目以降の前記矩形領域の開始バイト位置を示すエントリポイントをスライスヘッダに含めるか否かを示すフラグを、ピクチャのパラメータを設定するピクチャパラメータセットから復号する。
【0008】
本発明によれば、並列処理のツールを高効率に実現することができる。
【図面の簡単な説明】
【0009】
【
図1】第1の実施の形態の構成を説明する図である。
【
図2】符号化ストリーム中のピクチャがブリックに分割されている例を説明する図である。
【
図3】タイルへのCTUの割り当て情報とブリックへのCTU行の割り当て情報に関するPPSのシンタックスを説明する図である。
【
図4】ブリックインデックスの例を説明する図である。
【
図5】PPSの一部のシンタックスを説明する図である。
【
図6】スライスヘッダの一部のシンタックスを説明する図である。
【
図7】変換部の動作を説明するフローチャートである。
【
図8】SEIメッセージのシンタックスを示す図である。
【
図9】SEIペイロードのシンタックスを示す図である。
【
図10】エントリポイントSEIメッセージのシンタックスを説明する図である
【
図11】変換部が出力する符号化ストリームを説明する図である。
【
図12】実施の形態1の変形例のPPSの一部のシンタックスを説明する図である。
【
図13】第2の実施の形態の構成を説明する図である。
【
図14】第1の実施の形態の符号化復号装置のハードウェア構成の一例を説明するための図である。
【発明を実施するための形態】
【0010】
本発明の実施の形態は、JVET(Joint Video Expert Team)にて策定中の次世代の映像符号化規格であるVVC(Versatile Video Coding)で検討されている技術に基づくものとする。VVCでは、従来のAVCやHEVCと同様に、ブロック分割、イントラ予測、インター予測、変換、量子化、エントロピー符号、ループフィルタ等の技術が用いられる。
【0011】
以下、本発明の実施の形態において使用する技術、及び技術用語を定義する。以降、特に断らない限り画像とピクチャは同じ意味で用いる。本発明の実施の形態において画像符号化部では符号化が実施され、画像復号部では復号が実施される。
【0012】
<符号化ツリーユニットと符号化ブロック>
所定サイズのブロックでピクチャを均等分割する。この所定サイズのブロックを符号化ツリーブロック(CTB)と定義する。各符号化ツリーブロックの内部は、再帰的な分割が可能である。符号化ツリーブロック分割後の、符号化・復号の対象となるブロックを符号化ブロック(CU)と定義する。イントラ予測やインター予測は符号化ブロック単位で符号化(復号)される。また、符号化ツリーブロック、符号化ブロックを総称してブロックと定義する。適切なブロック分割を行うことにより効率的な符号化(復号)が可能となる。符号化ツリーブロックのサイズは、エンコーダとデコーダで予め取り決めた固定値とすることもできるし、エンコーダが決定した符号化ツリーブロックのサイズをデコーダに伝送するような構成をとることもできる。
【0013】
また、ピクチャにおいて、1つの輝度の符号化ツリーブロックと2つの色差の符号化ツリーブロックを符号化の単位として符号化ツリーユニット(CTU)と定義する。CTUは、1つの輝度の符号化ツリーブロックを単位とするものや、3つのカラープレーンの符号化ツリーブロックを単位とするものがある。CTU(CTB)のサイズはSPS(Sequence Parameter Set)で符号化(復号)される。
【0014】
<タイルとブリック>
タイル(Tile)は、ピクチャ内の複数のCTUで構成された矩形領域である。ブリック(Brick)は、タイル内の1以上のCTU行で構成された矩形領域である。1つのCTUは複数のタイルに属することはなく、1つのタイルのみに属する。1つのCTUは複数のブリックに属することはなく、1つのブリックのみに属する。1つのブリックは複数のタイルに属することはなく、1つのタイルのみに属する。タイルへのCTUの割り当てと、ブリックへのCTU行の割り当ては、それぞれピクチャ単位で設定される。そして、タイルへのCTUの割り当て情報と、ブリックへのCTU行の割り当て情報はそれぞれPPS(Picture Parameter Set)で符号化(復号)される。以上のように、ピクチャは領域が重複しない複数のタイルに分割される。また、タイルは領域が重複しない複数のブリックに分割される。以降では、ピクチャ内の複数のCTUで構成された矩形領域をブリックと表現するが、タイル内の1以上のCTU行で構成された矩形領域であり、1つのCTUは複数のタイルに属することはなく、1つのタイルのみに属し、1つのCTUは複数の矩形領域に属することはなく、1つの矩形領域のみに属するような矩形領域であればよい。
【0015】
符号化ストリームのパラメータを設定するSPSや符号化ピクチャのパラメータを設定するPPSのパラメータ情報とスライスヘッダがあれば、各符号化ブリックは単独で復号が可能である。そのため、SPS、PPS、スライスヘッダがあれば、複数の符号化ブリックを同時に並列に符号化(復号)することができる。符号化ブリックはブリックを符号化して生成されるブリックの符号列であるとする。以下、符号化ピクチャはピクチャを符号化して生成されるピクチャの符号列とし、符号化スライスはスライスを符号化して生成されるスライスの符号列とする。
【0016】
図3はタイルへのCTUの割り当て情報とブリックへのCTU行の割り当て情報に関するPPSのシンタックスを説明する図である。brick_splitting_present_flagはタイルを2以上のブリックに分割するか否かを示すフラグである。brick_splitting_present_flagが1であれば、1以上のタイルが2以上のブリックに分割される。brick_splitting_present_flagが0であれば、全てのタイルは2以上のブリックに分割されない。brick_splitting_present_flagが1であれば、タイル毎にブリックへの分割情報を符号化(復号)する。
【0017】
タイルがブリックで分割されなかった場合、1タイルは1ブリックとして扱われる。タイルインデックスはピクチャ内のタイルに対してラスタスキャン順に割り当てられるインデックスである。ブリックインデックスはピクチャ内のブリックに割り当てられるインデックスである。ピクチャが複数のタイルに分割される場合、ブリックインデックスはピクチャ内のタイルに対して、タイルインデックス順のタイル内の各ブリックにラスタスキャン順に割り当てられるインデックスである。ブリックインデックスは0以上でピクチャ内のブリック数(NumBricksInPic)未満の整数値である。ラスタスキャン順とは最初に水平方向にスキャンし、その後垂直方向に移動して水平方向にスキャンする順序である。
図4はブリックインデックスの例を説明する図である。
図4(a)はピクチャ内のブリック数8、
図4(b)はピクチャ内のブリック数5の一例をそれぞれ示す。
【0018】
<CTUの処理順序>
CTUはブリック内でラスタスキャン順に処理され、ブリックはタイル内でラスタスキャン順に処理される。
【0019】
<スライスとスライスモード>
スライスは、ブリックを整数個まとめた領域となる。スライスにはブロックをまとめるモードとして、矩形スライスモードとラスタスキャンスライスモードがある。
図5はPPSの一部のシンタックスを説明する図である。
図5を用いて矩形スライスモードとラスタスキャンスライスモードを説明する。スライスが2以上のブリックを含む可能性があることを示すフラグ(single_brick_per_slice_flag)が、スライスが2以上のブリックを含む可能性があることを示す場合(single_brick_per_slice_flagが0)、rect_slice_flagが符号化(復号)される。スライスが1ブリックしか含まない場合(single_brick_per_slice_flagが1)、rect_slice_flagは0となる。rect_slice_flagが1であれば矩形スライスモード、rect_slice_flagが0であればラスタスキャンスライスモードとなる。
【0020】
<矩形スライスモード>
矩形スライスモードでは、矩形領域内のブリックをまとめてスライスとする。矩形スライスモードでは、ブリックの処理の順序がラスタスキャン順ではないため、スライスとブリックの対応関係が一意に決まらない。そこで、スライスとブリックの対応関係を示す情報をPPSで符号化(復号)することで、スライスとブリックの対応関係を取得することができる。
【0021】
ピクチャ内のスライス数から1を減算した値であるnum_slices_in_pic_minus1がPPS内で符号化(復号)されて、ピクチャ内のスライス数を取得する。ピクチャ内の各スライスに含まれる右下のブリックインデックスを示すbottom_right_brick_idx_deltaとbrick_idx_delta_sign_flagがPPS内で符号化(復号)されて、ピクチャ内のスライスとブリックの対応関係が導出される。
【0022】
以上のように、矩形スライスモードでは、スライスとブリックの対応関係を示す情報をPPSで符号化(復号)することで、ブリックの処理の順序に自由度を与えることができる。例えば、
図4(b)のように、ブリック0とブリック1が属するタイルに大画面をその他のブリックに小画面を割り当てることで、大画面の処理順序を優先することができる。
【0023】
<ラスタスキャンスライスモード>
ラスタスキャンスライスモードは、ラスタスキャン順にブリックをスライスとする。そのため、ラスタスキャンスライスモードでは、ブリックとスライスの位置の対応関係をPPSで符号化(復号)しなくてもよい。ラスタスキャンスライスモードでは、スライスとブリックの対応関係を示す情報をPPSで符号化(復号)をしないことで、スライスとブリックの対応関係に自由度を与えることができる。例えば、
図4(b)で、スライスをブリック0のみで構成するのかブリック0とブリック1の2つで構成するのか等、スライスに含まれるブリックの数をエンコード中に調整することができる。これにより、スライスの符号量を調整することが可能になる。
【0024】
<スライスID>
スライスIDはスライスを一意に識別するためのIDである。ラスタスキャンスライスモードの場合、ラスタスキャン順に並んだi番目のスライス[i]のスライスIDはiであり、スライスIDは0以上でnum_slices_in_pic_minus1以下の値となる。矩形スライスモードの場合、スライスIDはPPS内で任意の値として明示的に符号化(復号)することもできる。矩形スライスモードの場合でスライスIDはPPS内で明示的に符号化(復号)しなければ、ラスタスキャン順に並んだi番目のスライス[i]のスライスIDはiであり、スライスIDは0以上でnum_slices_in_pic_minus1以下の値となる。
【0025】
<ループフィルタの境界制御フラグ>
ここで、ループフィルタの境界制御フラグを
図5のシンタックスを用いて説明する。loop_filter_across_bricks_enabled_flagはループフィルタをブリック境界に適用するか否かを示すフラグであり、1であればループフィルタを適用し、0であればループフィルタを適用しない。loop_filter_across_slices_enabled_flagはループフィルタをスライス境界に適用するか否かを示すフラグであり、1であればループフィルタを適用し、0であればループフィルタを適用しない。ブリック境界とスライス境界が重なる場合は、両方のフラグが1であればループフィルタを適用し、いずれかのフラグまたは両方のフラグが0であればループフィルタを適用しない。
【0026】
<スライスヘッダ>
次に、スライスヘッダについて説明する。
図6はスライスヘッダの一部のシンタックスを説明する図である。矩形スライスモードであるか、又は、ピクチャ内のブリック数であるNumBricksInPicが1より大きい場合、スライスアドレス(slice_address)が符号化(復号)される。また、ラスタスキャンスライスモードであり、且つ、single_brick_per_slice_flagが0であれば、スライスに含まれるスライス数を示すnum_bricks_in_slice_minus1が符号化(復号)される。
【0027】
ラスタスキャンスライスモードの場合、スライスアドレスはスライスに含まれる最初のブリックIDを示す。ブリックIDはピクチャ内の各ブリックに含まれるCTUに対して割り当てられるIDである。同じブリックに属するCTUは同一のブリックIDを有する。ブリックIDは0以上でピクチャ内のブリック数(NumBricksInPic)未満の整数値である。ラスタスキャンスライスモードの場合、ピクチャ内のブリックの位置はPPSで定義されているため、スライスアドレスはスライスに含まれる最初のブリックIDにすることで、ピクチャ内におけるスライスの開始位置を最も早く確定することができる。slice_addressのビット長はCeil(Log2(NumBricksInPic))とし、slice_addressは0以上で(NumBricksInPic-1)以下の値となる。ここで、ラスタスキャンスライスモードの場合、スライスとブリックの対応関係を示す情報がPPSで符号化(復号)されていないため、スライスアドレスをスライスに含まれる最初のブリックIDとする。ラスタスキャンスライスモードの場合、ブリックをラスタスキャン順に連続してスライスに含めるため、最初のブリックIDとスライスに含まれるスライス数がわかれば、スライスとブリックの関係を一意に定めることができる。なお、Ceil(x)は x 以上の最小の整数値とする関数である。
【0028】
矩形スライスモードの場合、スライスとブリックの対応関係を示す情報がPPSで符号化(復号)されている。そのため、スライスIDからブリックIDを導出することができ、スライスアドレスはスライスIDを示すものとする。ここでは、矩形スライスモードの場合はスライスアドレスをスライスIDにするとしたが、ラスタスキャンスライスモードと同様にスライスに含まれる最初のブリックIDとしてもよい。矩形スライスモードの場合にもラスタスキャンスライスモードと同様にスライスアドレスをスライスに含まれる最初のブリックIDとすることで、余計な回路やモジュールなどが不要になり、エンコーダやデコーダのメモリ量や回路規模を削減できる。また、PPSのsignalled_slice_id_flagが0であれば、スライスIDの管理が不要になり、エンコーダやデコーダのメモリ量を更に削減できる。
【0029】
<エントリポイント>
次に、
図6を用いてスライスデータ中の符号化ブリックの開始バイト位置について説明する。
図6で示されるように、スライスデータ中の符号化ブリックの開始バイト位置はエントリポイント(entry_point_offset_minus1[i])として、スライスヘッダに符号化(復号)されるため、デコーダでは、スライスヘッダを復号することで符号化ブリックの開始バイト位置を取得することができる。ここで、NumEntryPointsはスライス内のブリック数から1を減算した値である。スライスデータ内の最初の符号化ブリックの開始バイト位置は0で自明であるから符号化(復号)されず、スライスデータ内の2番目以降の符号化ブリックの開始バイト位置が符号化(復号)される。entry_point_offset_present_flagはスライスヘッダにエントリポイントを符号化(復号)するか否かを判定するフラグである。entry_point_offset_present_flagが1であればエントリポイントを符号化(復号)し、entry_point_offset_present_flagが0であればエントリポイントを符号化(復号)しない。offset_len_minus1はentry_point_offset_minus1のビット長を示す値である。なお、entry_point_offset_present_flagは
図5で示すようにsingle_tile_in_pic_flagが0またはentropy_coding_sync_enabled_flagが1である時にPPSで符号化(復号)される。ここで、single_tile_in_pic_flagはピクチャが1タイルであるか否かを示すフラグである。single_tile_in_pic_flagが1であれば、ピクチャは1タイルで構成され、single_tile_in_pic_flagが0であれば、ピクチャは複数タイルで構成される。ピクチャを1タイルで構成する場合、タイルを複数のブリックで構成することを許容せず、1タイルは1ブリックで構成される。entropy_coding_sync_enabled_flagはブリック内のCTU列の並列処理を許可するか否かを示すフラグである。entropy_coding_sync_enabled_flagが1であれば、ブリック内のCTU列の並列処理を許可し、entropy_coding_sync_enabled_flagが0であれば、ブリック内の並列処理を許可しない。
【0030】
<SEI>
SEI(Supplemental enhancement information)は、復号画像の画素を生成するためのプロセスには不要な情報であるが、デコーダの動作に必要な情報である。例えば、SEIには、仮想参照デコーダであるHRD(Hypothetical Reference Decoder)を正確に動作させるための情報であるBuffering Period SEIや復号画像の出力タイミングを定めるPicture Timing SEIが含まれる。SEIはSEIメッセージとして符号化(復号)される。
【0031】
<NALユニット>
NALユニットはヘッダとペイロードで構成される。ヘッダでペイロードタイプが符号化(復号)されて、ペイロードタイプで示されるタイプの符号列がペイロードに含まれる。ペイロードタイプには、SPS、PPS、符号化スライス、SEIメッセージ等がある。例えば、ペイロードタイプがスライスを含むことを示すペイロードタイプであれば、スライスの符号列がペイロードに格納され、ペイロードタイプがSEIメッセージを含むことを示すペイロードタイプであれば、SEIメッセージの符号列がペイロードに格納される。
【0032】
<符号化ストリーム>
VVCやHEVCでは、SPS、PPS、符号化スライス、SEIメッセージ等がNALユニットに格納されて符号化ストリームとなる。符号化スライスは、スライスヘッダとスライスデータで構成される。スライスデータに符号化ツリーブロックが符号化される。符号化ストリームには1以上の符号化ピクチャが含まれる。
【0033】
<HRD>
HRDは符号化ストリームが符号化規格に適合していることを検査するための仮想参照デコーダである。HRDは符号化ストリームを復号するためのCPB(符号化ピクチャバッファ)と復号したピクチャを出力するためのDPB(復号ピクチャバッファ)が定義されている。HRDでは、符号化ストリームに符号化されたCPBとDPBの入出力タイミングに基づいて符号化ストリームを復号した場合にCPBやDPBが破綻しないことを検査する。CPBとDPBが破綻しなければ、符号化ストリームは符号化規格に適合している。HRDのタイプ1では符号化ストリームの符号化スライスの規格適合が検査される。HRDのタイプ1では、SPS、PPS、SEIメッセージが含まれるNALは検査対象外である。CPBとDPBの入出力タイミングはSEIメッセージで符号化(復号)される。
【0034】
(第1の実施の形態)
<第1の実施の形態の構成>
本発明の第1の実施の形態について説明する。最初に、本実施の形態の構成を説明する。
図1は第1の実施の形態の構成を説明する図である。本実施の形態は、データサーバ2000と画像解析装置3000で構成される。データサーバ2000は、記憶部2001、変換部2002、及び送信部2003で構成される。データサーバ2000は、符号化ストリームを変換する機能を有するため、画像変換装置とも呼ぶ。画像解析装置3000は、受信部3001、画像復号部3002及び画像解析部3003で構成される。
【0035】
記憶部2001には符号化ストリームが記憶されている。画像復号部3002は記憶部2001に記憶された符号化ストリームを復号可能である。画像復号部3002は並列に処理できるブリックの最大数(以降、最大ブリック並列処理数)は8とする。
【0036】
<第1の実施の形態の動作>
次に、本実施の形態の動作を説明する。
図1に基づいて各構成要素の動作を説明する。まず、データサーバ2000と画像解析装置3000の動作について説明する。
【0037】
データサーバ2000は、画像解析装置3000の要求に基づいて、記憶部2001から符号化ストリームと画像復号部3002の特性パラメータを読み出して変換部2002に入力する。特性パラメータは画像復号部3002がエントリポイントSEIに対応しているか否かの情報であり、特性パラメータは予め記憶部2001に保持されているものとする。変換部2002は、入力された符号化ストリームを変換し、変換した符号化ストリームを送信部2003に入力する。変換部2002の詳細な動作は後述する。送信部2003は、入力された符号化ストリームを画像解析装置3000に送信する。
【0038】
受信部3001は送信部2003から入力された符号化ストリームを画像復号部3002に入力する。画像復号部3002は入力された符号化ストリームを最大ブリック並列処理数で並列に復号して復号画像を出力し、画像解析部3003に入力する。ここで、画像復号部3002は入力された符号化ストリームに復号画像を出力するフレームレートが設定されている場合でもフレームレートにとらわれることなく復号画像を出力する。画像解析部3003は入力された復号画像を解析して解析結果を出力する。例えば、画像解析部3003は入力された復号画像について、画質の計測、顔や人物等の認識等を行う。
【0039】
以上のように、画像解析部3003で復号画像を解析するような場合、符号化ストリームのフレームレートにとらわれることなく画像復号部3002から復号画像を出力することで画像解析部3003から出力される解析結果を短時間で取得することができる。
【0040】
<符号化ストリーム>
記憶部2001に記憶されている符号化ストリームについて説明する。
図2は符号化ストリーム中のピクチャがブリックに分割されている例を説明する図である。ここでは説明を簡単にするためにピクチャをタイル分割し、タイルはブリックに分割しないものとする。つまり、1タイルが1ブリックとなる。
図2(a)は1CTU行毎に画面を水平方向にB0(T0)からB7(T7)の8つのブリック(タイル)に分割した例である。
図2(b)は1CTU列毎に画面を垂直方向にB0(T0)からB7(T7)の8つのブリック(タイル)に分割した例である。ブリックB0からブリックB7にはそれぞれブリックIDとして0から7が割り当てられる。ここでは、ピクチャ内のブリック数NumBricksInPicは8である。
【0041】
ここでは、1ピクチャは1スライスで構成されるとする。従って、スライス0にB0からB7の8つのブリックが含まれる。そのため、PPSのsingle_brick_per_slice_flagは0である。符号化ストリームはラスタスキャンスライスモードでも矩形スライスモードでもよい。ただし、スライスヘッダにエントリポイントを符号化するか否かのフラグであるentry_point_offset_present_flagは0とする。
【0042】
ここで、entry_point_offset_present_flagを0にする効果を説明する。entry_point_offset_present_flagを1にすると、スライスヘッダにブリックの符号化した結果で得られるエントリポイントを符号化する必要があり、スライス内のブリックを並列に符号化して符号化ストリームを生成したとしても、ブリックのサイズを示すバイト数が確定するまで符号化ストリームを送信できない。そのため、符号化ストリームをスライス単位で送信する必要があり、スライス単位でしか低遅延化できない。一方、entry_point_offset_present_flagを0にすると、スライスヘッダにブリックのエントリポイントを符号化する必要はなく、符号化ストリームをブリック単位で送信でき、ブリック単位で低遅延化できる。
【0043】
<変換部の詳細な動作>
続いて、変換部2002の詳細な動作を説明する。
図7は変換部の動作を説明するフローチャートである。
図7は符号化ストリームに含まれる全ての符号化ピクチャに対して実行される。
【0044】
ループフィルタを適用するか否かがスライス境界とブリック境界で同一でないかを検査する(S100)。具体的には、loop_filter_across_bricks_enabled_flagとloop_filter_across_slices_enabled_flagの値が同一でないか検査する。ループフィルタを適用するか否かがスライス境界とブリック境界で同一でない場合(S100のYES)、エントリポイントSEI対応デコーダであるか検査する(S101)。ループフィルタを適用するか否かがスライス境界とブリック境界で同一である場合(S100のNO)、スライスを再構成する(S104)。
【0045】
エントリポイントSEI対応デコーダであれば(S101のYES)、エントリポイントをエントリポイントSEIに追加する(S102)。エントリポイントをエントリポイントSEIに追加する詳細な動作は後述する。エントリポイントSEI対応デコーダでなければ(S101のNO)、エントリポイントをスライスヘッダに追加する(S103)。
【0046】
ここで、ループフィルタを適用するか否かがスライス境界とブリック境界で同一でない場合、各スライスに含まれるブリックを変更すると、復号画像が変わってしまうため、再符号化が必要となる。そのため、ループフィルタを適用するか否かがスライス境界とブリック境界で同一でない場合、各スライスに含まれるブリックの構成を変更しないように符号化ストリームを変換する。
【0047】
一方、ループフィルタを適用するか否かがスライス境界とブリック境界で同一である場合、各スライスに含まれるブリックを変更しても復号画像が変わらないため、再符号化が不要である。そのため、ループフィルタを適用するか否かがスライス境界とブリック境界で同一である場合、ブリックとスライスの構成を変更するように符号化ストリームを変換する。
【0048】
ここでは、スライスの並列処理に適したデコーダを考慮してloop_filter_across_bricks_enabled_flagとloop_filter_across_slices_enabled_flagの値が同一でないか検査する(S100)ステップを設置した。一般的なデコーダを対象とする場合、loop_filter_across_bricks_enabled_flagとloop_filter_across_slices_enabled_flagの値が同一でないか検査する(S100)処理を行わず、エントリポイントSEI対応デコーダであるか検査する(S101)処理から開始するのが良い。
【0049】
<エントリポイントのスライスヘッダへの追加>
ここで、エントリポイントをスライスヘッダに追加する動作について説明する。エントリポイントのスライスヘッダへの追加は、
図6のシンタックスに従って、ブリックB1からブリックB7のエントリポイントの情報が符号化ストリームに符号化(復号)される。
【0050】
<スライスの再構成>
続いて、スライスを再構成する詳細な動作について説明する。記憶部2001に記憶されている符号化ストリームは1つのスライスが8つのブリックを含んでいた。これを1つのスライスが1つのブリックを含むように再構成する。なお、PPSのsingle_brick_per_slice_flagを1にする。
【0051】
<エントリポイントのエントリポイントSEIへの追加>
続いて、エントリポイントをエントリポイントSEIに追加する詳細な動作について説明する。エントリポイントのエントリポイントSEIへの追加は、
図8、
図9、
図10のシンタックスに従って、ブリックB1からブリックB7のエントリポイントの情報が符号化(復号)される。
【0052】
図8はSEIメッセージのシンタックスを示す図である。ペイロードタイプ(payloadType)がpayload_type_byteから導出される。ペイロードタイプが128である場合、エントリポイントSEIメッセージがSEIペイロード(sei_payload)に符号化(復号)される。エントリポイントSEIメッセージはエントリポイントSEIと同意である。
【0053】
図9はSEIペイロードのシンタックスを示す図である。SEIペイロードにはエントリポイントSEIメッセージのほか、Buffering Period SEIメッセージやPicture Timing、Picture Timing SEIメッセージ等のSEIメッセージが符号化(復号)される。SEIメッセージを格納するNALユニットタイプは2つあり、符号化スライスよりも前に符号化(復号)するPREFIX_SEI_NUTと、符号化スライスよりも後に符号化(復号)するSUFFIX_SEI_NUTである。
【0054】
図10はエントリポイントSEIメッセージのシンタックスを説明する図である。
図10を用いてエントリポイントSEIメッセージのシンタックスを説明する。NumSlicesInPicはピクチャ内のスライス数であり、矩形スライスモードの場合はPPSで取得でき、ラスタスキャンスライスモードの場合はスライス数をカウントすることで取得できる。S番目のスライスに関するoffset_len_minus1[s]とNumEntryPoints個のentry_point_offset_minus1が符号化(復号)される。offset_len_minus1とentry_point_offset_minus1は前述と同義である。
【0055】
<変換後の符号化ストリーム>
図11は変換部2002が出力する符号化ストリームを説明する図である。
図11(i)は、入力された符号化ストリームの一例である。SPS、PPS、符号化ピクチャ0を構成する符号化スライス、符号化ピクチャ1を構成する符号化スライス0、・・・、符号化ピクチャNを構成する符号化スライスの順で符号化されている。
【0056】
図11(a)は、エントリポイントをスライスヘッダに追加した符号化ストリームの一例である。以降、
図11(a)について説明する。SPS、PPS、符号化スライス0のそれぞれのNALユニットが符号化ストリームとなる。符号化スライス0は、エントリポイントが追加されたスライスヘッダ(
図11(a)のModified S-Header)と符号化ブリック0(
図11(a)のBrick 0)から符号化ブリック7(
図11(a)のBrick 7)の8つの符号化ブリックを含むスライスデータで構成される。ここで、エントリポイントが追加されたスライスヘッダは入力された符号化ストリームのスライスヘッダとは異なる。なお、符号化ブリック0から符号化ブリック7を復号するにはエントリポイントが追加されたスライスヘッダが必要になる。
【0057】
図11(b)は、スライスを再構成した符号化ストリームの一例である。以降、
図11(b)について説明する。SPS、PPS、符号化スライス0から符号化スライス7のそれぞれのNALユニットが符号化ストリームとなる。符号化スライスi(i=0、1、・・・7)は各々スライスヘッダi(
図11(b)のNew S-Header i)と符号化ブリックi(
図11(b)のBrick i)を含むスライスデータで構成される。ここで、スライスヘッダiは入力された符号化ストリームのスライスヘッダとは異なる。なお、符号化ブリックiを復号するにはスライスヘッダiが必要になる。
【0058】
このように、1つの符号化スライスを1つの符号化ブリックを含む符号化ピクチャに変換し、PPSのsingle_brick_per_slice_flagを1とすることで、符号化スライス単位での並列化を容易に実現できる。この場合、エントリポイントは不要であり、NALユニット単位でアクセスできればよい。
【0059】
ここでは、1つの符号化スライスが1つのブリックを含むように符号化ピクチャを変換しているが、画像復号部3002の最大ブリック並列処理数に応じてスライスに含まれるブリックを再構成すればよく、これに限定されない。1つの符号化スライスが複数のブリックを含むように符号化ピクチャを変換してもよい。例えば、画像復号部3002の最大ブリック並列処理数が4である場合、1つの符号化スライスが2つのブリックを含むように符号化ピクチャを変換する。
【0060】
図11(c)は、エントリポイントをエントリポイントSEIに追加した符号化ストリームの一例である。以降、
図11(c)について説明する。SPS、PPS、符号化スライス0、SEIのそれぞれのNALユニットが符号化ストリームとなる。符号化スライス0は、スライスヘッダ(
図11(c)のS-Header)と符号化ブリック0(
図11(c)のBrick 0)から符号化ブリック7(
図11(c)のBrick 7)の8つの符号化ブリックを含むスライスデータで構成される。ここで、スライスヘッダは入力された符号化ストリームのスライスヘッダと同一である。なお、符号化ブリック0から符号化ブリック7を復号するにはスライスヘッダが必要になる。
【0061】
エントリポイントをスライスヘッダに追加した符号化ストリームの変換後の符号化ストリームの大きさは、その他の方法に比べて最小になる。ただし、スライスヘッダをビット精度で再符号化する必要があり、符号化スライスの大きさが変わる。
【0062】
符号化スライスを再構成した符号化ストリームは、8つの符号化スライスで構成されているため、変換後の符号化ストリームの大きさがその他の方法に比べて大きくなるが、エントリポイントは不要になるため符号化ストリームの構造はシンプルになる。そのため、符号化ブリック単位の並列化に対応していないが、符号化スライス単位の並列化に対応しているデコーダでも並列に復号できる。
【0063】
エントリポイントをエントリポイントSEIに追加した符号化ストリームは、入力された符号化ストリームは変更することなく、符号化ピクチャ内の最後の符号化スライスの後にエントリポイントSEIを挿入するだけでよく、変換後の符号化ストリームを用意に生成することができる。このように、エントリポイントSEIを符号化スライスの後で符号化(復号)することで、ラスタスキャンスライスモードでスライスとブリックの関係に自由度を与えながら、符号化スライス内のエントリポイントをデコーダに通知することができる。また、符号化ストリームを変更しないため、HRDのタイプ1の符号化ストリームコンフォーマンスに影響を与えない。そのため、HRDの適合性を検証しながら符号化ストリームを変換する必要がなく、確実且つ容易に符号化ストリームを変換することができる。
【0064】
<変形例>
実施の形態1の変形例について説明する。本変形例は、本実施の形態とはPPSのシンタックスが異なる。
図12は実施の形態1の変形例のPPSの一部のシンタックスを説明する図である。実施の形態1の
図5とはentry_point_offset_present_flag を符号化(復号)する条件が異なる。
図12で示すように、entry_point_offset_present_flagはスライスが2以上のブリックを含む可能性があることを示すフラグが、スライスが2以上のブリックを含む可能性があることを示す場合(single_brick_per_slice_flagが0である)またはentropy_coding_sync_enabled_flagが1である場合にPPSで符号化(復号)される。
【0065】
以上のように、single_brick_per_slice_flagが0である場合にentry_point_offset_present_flagを符号化(復号)することで、ピクチャが複数タイルで構成されている場合(single_tile_in_pic_flagが0)でもスライスが1つのブリックしか含まない場合にはentry_point_offset_present_flagを符号化する必要がなくなる。そのため、スライスが1つのブリックしか含まない場合にentry_point_offset_present_flagが1である状態を解消し、符号量を削減することができる。また、entry_point_offset_present_flagが存在しない場合には暗示的にentry_point_offset_present_flagは0であるとすることで、スライスが1つのブリックしか含まない場合にはエントリポイントが存在しないことを定義することができる。また、スライスヘッダでentry_point_offset_present_flagが0であればスライスに含まれるブリック数を検査する必要がないため処理量が削減できる。
【0066】
(第2の実施の形態)
<第2の実施の形態の構成>
本発明の第2の実施の形態について説明する。
図13は第2の実施の形態の構成を説明する図である。本発明の第2の実施の形態は、第1の実施の形態とはデータサーバ2000が画像符号化装置1000であることが異なる。以降、第1の実施の形態とはとは異なる点のみ説明する。
【0067】
画像復号部3002は画像符号化部1002で符号化された符号化ストリームを復号可能である。
【0068】
画像符号化装置1000は、画像解析装置3000の要求に基づいて、記憶部1001から画像データと画像復号部3002の特性パラメータを読み出して画像符号化部1002に入力する。画像符号化部1002は、入力された画像データを符号化し、符号化した符号化ストリームを送信部1003に入力する。
【0069】
画像符号化部1002は変換部2002とは出力する符号化ストリームを画像データから符号化することが異なる。画像符号化部1002の出力する符号化ストリームの構造は変換部2002の出力する符号化ストリームと同一である。
【0070】
以下、画像符号化部1002の動作を説明する。変換部2002では、loop_filter_across_bricks_enabled_flagとloop_filter_across_slices_enabled_flagは符号化ストリームから復号して取得するが、画像符号化部1002では、loop_filter_across_bricks_enabled_flagとloop_filter_across_slices_enabled_flagは画像符号化部1002が決定する。
【0071】
ループフィルタを適用するか否かがスライス境界とブリック境界で同一でない場合、画像復号部3002がエントリポイントSEI対応デコーダであるか検査する。ループフィルタを適用するか否かがスライス境界とブリック境界で同一である場合、1つのスライスが1つのブリックを含むように符号化ピクチャを符号化する。
【0072】
画像復号部3002がエントリポイントSEI対応デコーダであれば、エントリポイントをエントリポイントSEIとして符号化ピクチャを符号化する。画像復号部3002がエントリポイントSEI対応デコーダでなければ、エントリポイントをスライスヘッダに符号化して符号化ピクチャを符号化する。
【0073】
以上のように、画像符号化装置1000は、画像解析装置3000の要求に基づいた画像復号部3002が復号可能な符号化ストリームを出力することができる。また、符号化ストリームの構造が有する効果は実施の形態でも実施の形態1と同様である。
【0074】
以上に述べた全ての実施の形態において、画像符号化装置が出力する符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有している。符号化ストリームは、HDD、SSD、フラッシュメモリ、光ディスク等のコンピュータ等で読み解き可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良い。従って、この画像符号化装置に対応する画像復号装置は、提供手段によらず、この特定のデータフォーマットの符号化ストリームを復号することができる。
【0075】
画像符号化装置と画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いええられる場合、通信路の伝送形態に適したデータ形式に符号化ストリームを変換して伝送してもよい。その場合、画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して画像復号装置に供給する受信装置とが設けられる。 送信装置は、画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、ネットワークを介してパケット化された符号化データを送信する送信部とを含む。受信装置は、ネットワークを介してパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、画像復号装置に提供するパケット処理部とを含む。
【0076】
画像符号化装置と画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、送信装置、受信装置に加え、さらに、送信装置が送信する符号化データを受信し、受信装置に供給する中継装置が設けられても良い。中継装置は、送信装置が送信するパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、パケットされた符号化データとネットワークに送信する送信部とを含む。さらに、中継装置は、パケット化された符号化データをパケット処理して符号化ストリームを生成する受信パケット処理部と、符号化ストリームを蓄積する記録媒体と、符号化ストリームをパケット化する送信パケット処理部を含んでも良い。
【0077】
また、画像復号装置で復号された画像を表示する表示部を構成に追加することで、表示装置としても良い。
【0078】
また、撮像部を構成に追加し、撮像した画像を画像符号化装置に入力することで、撮像装置としても良い。
【0079】
図14に、本願の符号化復号装置のハードウェア構成の一例を示す。符号化復号装置は、本発明の実施の形態に係る画像符号化装置、および画像復号装置の構成を包含する。係る符号化復号装置9000は、CPU9001、コーデックIC9002、I/Oインターフェース9003、メモリ9004、光学ディスクドライブ9005、ネットワークインターフェース9006、ビデオインターフェース9009を有し、各部はバス9010により接続される。
【0080】
画像符号化部9007と画像復号部9008は、典型的にはコーデックIC9002として実装される。本発明の実施の形態に係る画像符号化装置の画像符号化処理は、画像符号化部9007により実行され、本発明の実施の形態に係る画像復号装置における画像復号処理は、画像符号化部9007により実行される。I/Oインターフェース9003は、例えばUSBインターフェースにより実現され、外部のキーボード9104、マウス9105等と接続する。CPU9001は、I/Oインターフェース9003を介して入力したユーザー操作に基づき、ユーザーの所望する動作を実行するように符号化復号装置9000を制御する。キーボード9104、マウス9105等によるユーザーの操作としては、符号化、復号のどちらの機能を実行するかの選択、符号化品質の設定、符号化ストリームの入出力先、画像の入出力先等がある。
【0081】
ユーザーがディスク記録媒体9100に記録された画像を再生する操作を所望する場合、光学ディスクドライブ9005は、挿入されたディスク記録媒体9100から符号化ビットストリームを読出し、読み出した符号化ストリームを、バス9010を介してコーデックIC9002の画像復号部9008に送る。画像復号部9008は入力した符号化ビットストリームに対して本発明の実施の形態に係る画像復号装置における画像復号処理を実行し、復号画像を、ビデオインターフェース9009を介して外部のモニタ9103へ送る。また、符号化復号装置9000は、ネットワークインターフェース9006を有し、ネットワーク9101を介して、外部の配信サーバ9106や、携帯端末9107と接続可能である。ユーザーがディスク記録媒体9100に記録された画像に変えて、配信サーバ9106や携帯端末9107に記録された画像を再生することを所望する場合は、ネットワークインターフェース9006は、入力されたディスク記録媒体9100から符号化ビットストリームを読出すことに変えて、ネットワーク9101より符号化ストリームを取得する。また、ユーザーがメモリ9004に記録された画像を再生することを所望する場合は、メモリ9004に記録された符号化ストリームに対して、本発明の実施の形態に係る画像復号装置における画像復号処理を実行する。
【0082】
ユーザーが外部のカメラ9102で撮像した画像を符号化しメモリ9004に記録する操作を所望する場合、ビデオインターフェース9009は、カメラ9102から画像を入力し、バス9010を介し、コーデックIC9002の画像符号化部9007に送る。画像符号化部9007は、ビデオインターフェース9009を介して入力した画像に対して本発明の実施の形態に係る画像符号化装置における画像符号化処理を実行し、符号化ビットストリームを作成する。そして符号化ビットストリームを、バス9010を介し、メモリ9004へ送る。ユーザーがメモリ9004に変えて、ディスク記録媒体9100に符号化ストリームを記録することを所望する場合は、光学ディスクドライブ9005は、挿入されたディスク記録媒体9100に対し符号化ストリームの書き出しを行う。
【0083】
画像符号化装置を有し画像復号装置を有さないハードウェア構成や、画像復号装置を有し画像符号化装置を有さないハードウェア構成を実現することも可能である。そのようなハードウェア構成は、例えばコーデックIC9002が、画像符号化部9007、または画像復号部9008にそれぞれ置き換わることにより実現される。
【0084】
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現しても良いのは勿論のこと、ROM(リード・オンリー・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによって実現しても良い。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良いし、地上波あるいは衛星ディジタル放送のデータ放送として提供しても良い。
【0085】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【産業上の利用可能性】
【0086】
本発明は、画像符号化及び復号技術に利用できる。
【符号の説明】
【0087】
1000 画像符号化装置、1001 記憶部、1002 画像符号化部、1003 送信部、2000 画像変換装置、2001 記憶部、2002 変換部、2003 送信部、3000 画像解析装置、3001 受信部、3002 画像復号部、3003 画像解析部