(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024107494
(43)【公開日】2024-08-08
(54)【発明の名称】画像復号装置、画像復号方法及びプログラム
(51)【国際特許分類】
H04N 19/70 20140101AFI20240801BHJP
H04N 19/513 20140101ALI20240801BHJP
H04N 19/61 20140101ALI20240801BHJP
【FI】
H04N19/70
H04N19/513
H04N19/61
【審査請求】有
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2024098855
(22)【出願日】2024-06-19
(62)【分割の表示】P 2020099715の分割
【原出願日】2020-06-08
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和元年度、総務省、「多様な用途、環境下での高精細映像の活用に資する次世代映像伝送・通信技術の研究開発」委託事業、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】110001564
【氏名又は名称】フェリシテ弁理士法人
(72)【発明者】
【氏名】海野 恭平
(72)【発明者】
【氏名】河村 圭
(57)【要約】
【課題】変換スキップの最大ブロックサイズを制御するシンタックスを固定長符号とすることで、復号処理を簡素化すること。
【解決手段】本発明に係る画像復号装置200は、ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義するように構成されている復号部210を備える。
【選択図】
図4
【特許請求の範囲】
【請求項1】
画像復号装置であって、
ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義するように構成されている復号部を備えることを特徴とする画像復号装置。
【請求項2】
画像復号方法であって、
ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義する工程を有する画像復号方法。
【請求項3】
画像復号装置で用いるプログラムであって、コンピュータに、
ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義する工程を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像復号装置、画像復号方法及びプログラムに関する。
【背景技術】
【0002】
非特許文献1では、変換スキップの最大ブロックサイズを制御するシンタックスを備え、かかるシンタックスを指数ゴロム符号として復号する構成が開示されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Versatile Video Coding (Draft 9)、JVET-R2001
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、非特許文献1では、変換スキップの最大ブロックサイズの取り得る値は、4種類である。4種類の値を指数ゴロム符号とした場合、かかる4種類の値のうちの一番小さな値以外は、固定長符号を用いる場合より符号長が大きくなってしまうという問題点があった。
【0005】
そこで、本発明は、上述の課題に鑑みてなされたものであり、変換スキップの最大ブロックサイズを制御するシンタックスを固定長符号とすることで、復号処理を簡素化することができる画像復号装置、画像復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の特徴は、画像復号装置であって、ピクチャ内でDMVRを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でDMVRを使用不可とするか否かを制御するフラグの値をDMVRが使用不可であることを意味する値と暗黙的に定義するように構成されている復号部を備えることを要旨とする。
【0007】
本発明の第2の特徴は、画像復号方法であって、ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義する工程とを有することを要旨とする。
【0008】
本発明の第3の特徴は、画像復号装置で用いるプログラムであって、コンピュータに、ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、前記ピクチャにおいて双予測が適用不可の時は、前記ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義する工程を実行させることを要旨とする。
【発明の効果】
【0009】
本発明によれば、変換スキップの最大ブロックサイズを制御するシンタックスを固定長符号とすることで、復号処理を簡素化することができる画像復号装置、画像復号方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施形態に係る画像処理システム10の構成の一例を示す図である。
【
図2】一実施形態に係る画像復号装置200の機能ブロックの一例を示す図である。
【
図3】一実施形態に係る画像復号装置200の復号部210によって受信される符号化データ(ビットストリーム)の構成の一例である。
【
図4】SPS211に含まれる制御データの一例である。
【
図5】PPS212に含まれる制御データの一例である。
【
図6】ピクチャヘッダ213に含まれる制御データの一例である。
【
図7】スライスヘッダ214A/214Bに含まれる制御データの一例である。
【
図8】一実施形態に係る画像復号装置200のインループフィルタ処理部250の機能ブロックの一例について示す図である。
【
図9】一実施形態に係る画像復号装置200のインループフィルタ処理部250のデブロッキングフィルタ部250Aの機能ブロックの一例を示す図である。
【
図10】一実施形態に係る画像復号装置200のインループフィルタ処理部250のフィルタ決定部254A/254Bの処理フローの一例を示すフローチャートである。
【
図11】一実施形態に係る画像復号装置200のインループフィルタ処理部250のフィルタ決定部254A/254Bの処理フローで用いられる表の一例を示す図である。
【
図12】一実施形態に係る画像符号化装置100の機能ブロックの一例を示す図である。
【
図13】変換スキップを適用する最大ブロックサイズを制御するシンタックスの値の一例を示す図である。
【
図14】一実施形態に係る画像復号装置200のインター予測部241の機能ブロックの一例について示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0012】
(第1実施形態)
以下、
図1~
図14を参照して、本発明の第1実施形態に係る画像処理システム10について説明する。
図1は、本実施形態に係る実施形態に係る画像処理システム10を示す図である。
【0013】
図1に示すように、画像処理システム10は、画像符号化装置100及び画像復号装置200を有する。
【0014】
画像符号化装置100は、入力画像信号を符号化することによって符号化データを生成するように構成されている。画像復号装置200は、符号化データを復号することによって出力画像信号を生成するように構成されている。
【0015】
ここで、かかる符号化データは、画像符号化装置100から画像復号装置200に対して伝送路を介して送信されてもよい。また、符号化データは、記憶媒体に格納された上で、画像符号化装置100から画像復号装置200に提供されてもよい。
【0016】
(画像復号装置200)
以下、
図2を参照して、本実施形態に係る画像復号装置200について説明する。
図2は、本実施形態に係る画像復号装置200の機能ブロックの一例について示す図である。
【0017】
図2に示すように、画像復号装置200は、復号部210と、逆変換・逆量子化部220と、加算器230と、インター予測部241と、イントラ予測部242と、インループフィルタ処理部250と、フレームバッファ260とを有する。
【0018】
復号部210は、画像符号化装置100によって生成される符号化データを復号し、係数レベル値を復号するように構成されている。
【0019】
ここで、例えば、復号は、係数レベル値の発生確率に基づいて異なる長さの符号を割り当てるエントロピー符号化されたデータの復号である。
【0020】
復号部210は、符号化データの復号処理によって制御データを取得するように構成されていてもよい。
【0021】
ここで、制御データは、符号化ブロック(CU:Coding Unit)サイズや、予測ブロック(PU:Prediction Unit)サイズや、変換ブロック(TU:Transform Unit)サイズ等のサイズデータを含んでもよい。
【0022】
逆変換・逆量子化部220は、復号部210から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部220は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
【0023】
加算器230は、逆変換・逆量子化部220から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、フィルタ処理前復号信号をイントラ予測部242及びインループフィルタ処理部250に出力するように構成されている。
【0024】
ここで、フィルタ処理前復号信号は、イントラ予測部242で用いる参照ブロックを構成する。
【0025】
インター予測部241は、インター予測(フレーム間予測)によって予測信号を生成するように構成されている。
【0026】
具体的には、インター予測部241は、符号化データから復号した動きベクトルと参照フレームに含まれる参照信号に基づいて予測信号を予測ブロック毎に生成するように構成されている。インター予測部241は、予測信号を加算器230に出力するように構成されている。
【0027】
イントラ予測部242は、イントラ予測(フレーム内予測)によって予測信号を生成するように構成されている。
【0028】
具体的には、イントラ予測部242は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。イントラ予測部242は、予測信号を加算器230に出力するように構成されている。
【0029】
インループフィルタ処理部250は、加算器230から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ260に出力するように構成されている。
【0030】
ここで、インループフィルタ処理は、複数のフィルタ処理から構成されていてもよい。例えば、フィルタ処理は、ブロック(符号化ブロック、予測ブロック、変換ブロック或いはそれらを分割したサブブロック)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理や、画像符号化装置100から伝送されるフィルタ係数やフィルタ選択情報や画像の絵柄の局所的な性質等に基づいてフィルタを切り替える適応ループフィルタ処理である。
【0031】
フレームバッファ260は、インター予測部241で用いる参照フレームを蓄積するように構成されている。
【0032】
ここで、フィルタ処理後復号信号は、インター予測部241で用いる参照フレームを構成する。
【0033】
(復号部210)
以下、
図3~
図7を用いて、復号部210によって復号される制御データについて説明する。
【0034】
図3は、復号部210で受信する符号化データ(ビットストリーム)の構成の一例である。
【0035】
かかるビットストリームの先頭に、SPS211が含まれていてもよい。SPS211は、シーケンス(ピクチャの集合)単位での制御データの集合である。具体例については後述する。各SPS211は、複数のSPS211が存在する場合に個々を識別するためのSPS id情報を少なくとも含む。
【0036】
かかるビットストリームにおいて、SPS211の次に、PPS212が含まれていてもよい。PPS212は、ピクチャ(スライスの集合)単位での制御データの集合である。各PPS212は、複数のPPS212が存在する場合に個々を識別するためのPPS id情報を少なくとも含む。また、各PPS212は、各PPS212に対応するSPS211を指定するためのSPS id情報を少なくとも含む。
【0037】
かかるビットストリームにおいて、PPS212の次に、ピクチャヘッダ213が含まれていてもよい。ピクチャヘッダ213も、ピクチャ(スライスの集合)単位での制御データの集合である。PPS212は、複数のピクチャに対して単一のPPS212を共有することができる。一方、ピクチャヘッダ213は、ピクチャ毎に必ず伝送される。ピクチャヘッダ213は、各ピクチャに対応するPPS212を指定するためのPPS id情報を少なくとも含む。
【0038】
かかるビットストリームにおいて、ピクチャヘッダ213の次に、スライスヘッダ214Aが含まれていてもよい。スライスヘッダ214Aは、スライス単位での制御データの集合である。具体例については後述する。スライスヘッダ214Aの一部として、上述のピクチャヘッダ213の情報が含まれていてもよい。
【0039】
かかるビットストリームにおいて、スライスヘッダ214Aの次に、スライスデータ215Aが含まれていてもよい。スライスデータ215Aは、上述の係数レベル値やサイズデータ等を含んでもよい。
【0040】
以上のように、各スライスデータ214A/215Aに、1つずつスライスヘッダ215A/215B、ピクチャヘッダ213、PPS212及びSPS211が対応する構成となる。上述のように、ピクチャヘッダ213にて、どのPPS212を参照するかをPPS idで指定し、さらに、かかるPPS212にて、どのSPS211を参照するかをSPS idで指定するため、複数のスライスデータ215A/215Bに対して共通のSPS211及びPPS212を用いることができる。
【0041】
言い換えると、SPS211及びPPS211は、ピクチャごと及びスライスごとに必ずしも伝送する必要がない。例えば、
図3のように、スライスヘッダ214A/214Bの直前では、SPS211及びPPS212を符号化しないようなビットストリームの構成とすることもできる。
【0042】
なお、
図3の構成は、あくまで一例である。各スライスデータ215A/215Bに、スライスヘッダ214A/214B、ピクチャヘッダ213、PPS212及びSPS211で指定された制御データが対応する構成となっていれば、ビットストリームの構成要素として、上述以外の要素が追加されてもよい。また、同様に、伝送に際して
図3と異なる構成に整形されてもよい。
【0043】
図4は、SPS211内に含まれる制御データの一例である。
【0044】
SPS211は、上述の通り、少なくとも各SPS211を識別するためのSPS id情報 (sps_seq_parameter_set_id)を含む。
【0045】
SPS211は、当該シーケンスの色差フォーマット情報(chroma_format_idc)を含んでもよい。例えば、chroma_format_idcの値が「0」の場合は、4:0:0フォーマット(モノクロ)を意味し、chroma_format_idcの値が「1」の場合は、4:2:0フォーマットを意味し、chroma_format_idcの値が「2」の場合は、4:2:2フォーマットを意味し、chroma_format_idcの値が「3」の場合は、4:4:4フォーマットを意味するように定義することができる。
【0046】
また、chroma_format_idcの値が「3」の場合、すなわち、4:4:4フォーマットの場合には、SPS211は、追加で、セパレートプレーン適否情報(separate_colour_plane_flag)を含んでもよい。
【0047】
例えば、separate_colour_plane_flagの値が「0」の場合は、復号部210は、3つあるカラープレーン間(例えば、YCbCrやRGB等)の相関を利用して復号を行い、separate_colour_plane_flagの値が「1」の場合は、かかるカラープレーンを独立に(それぞれモノクロ画像とみなして)復号するように構成されていてもよい。
【0048】
なお、SPS211に、separate_colour_plane_flagが含まれていなかった場合、復号部210は、separate_colour_plane_flagの値を「0」とみなしてもよい。
【0049】
さらに、復号部210は、上述のchroma_format_idcの値及びseparate_colour_plane_flagの値を参照して、変数ChromaArrayTypeの値を設定してもよい。
【0050】
例えば、復号部210は、separate_colour_plane_flagの値が「0」の場合は、ChromaArrayTypeの値をchroma_format_idcの値と同じ値に設定してもよい。
【0051】
また、復号部210は、separate_colour_plane_flagの値が「1」の場合は、chroma_format_idcの値を「0」に設定してもよい。
【0052】
以上のような定義とすることで、ChromaArrayType=0の場合は、4:0:0フォーマット(モノクロ)である場合か、4:4:4フォーマットで各カラープレーンがモノクロ画像とみなして復号される場合を意味する。
【0053】
言い換えると、ChromaArrayType=0の場合は、当該シーケンスに色差データが存在しない場合と解釈し、ChromaArrayType!=0の場合は、当該シーケンスに色差データが存在する場合と解釈することができる。
【0054】
SPS211は、当該シーケンスにおける変換スキップの適用可否を制御するフラグ(sps_transform_skip_enabled_flag)を含んでもよい。例えば、かかるフラグの値が「1」の時は、変換スキップを適用可と定義し、かかるフラグの値が「0」の時は、変換スキップを適用不可と定義してもよい。
【0055】
SPS211は、当該シーケンスにおいて変換スキップが適用可能である場合、変換スキップを適用する最大ブロックサイズを制御するシンタックス(sps_log2_transform_skip_max_size_minus2)を含んでもよい。かかるシンタックスの値は、「0」~「3」のうちのいずれかの整数値を取ることとして、2ビットの固定長符号で表現されていてもよい。ここで、かかるシンタックスの値が「0」、「1」、「2」、「3」の場合、それぞれ最大ブロックサイズは、「4」、「8」、「16」、「32」と規定されていてもよい。
【0056】
以上のように、復号部210は、変換スキップの最大ブロックサイズを制御するシンタックスが取り得る値を「0」、「1」、「2」、「3」の4種類とし、2ビットの固定長符号として復号するように構成されていてもよい。
【0057】
ここで、指数ゴロム符号等の可変長符号ではなく、固定長符号として復号することで、復号処理を簡素化することができる。
【0058】
また、かかるシンタックスの値は、「0」~「3」の4種類のみであるため、
図13に示すように、固定長符号の場合2ビットで表現できる。この時、例えば、最大ブロックサイズを「8」や「16」や「32」に設定したい場合、指数ゴロム符号を用いる場合と比較して、少ないビット数で表現することができる。
【0059】
また、変換スキップの最大ブロックサイズが取り得る最大値(上述の例では「32」)は、変換スキップ以外の処理の仕様や設計にも影響するため、あえて2ビットの固定長として拡張性を排することで、仕様やそれに基づいて設計された装置の安定性を確保することができる。
【0060】
SPS211は、当該シーケンスにおいてBDOF(Bi-Directional Optical-Flow)を使用可とするか否かを制御するフラグ(sps_bdof_enabled_flag)を含んでもよい。
【0061】
SPS211は、sps_bdof_enabled_flagの値が「1」の時、すなわち、当該シーケンスにおいてBDOFを有効とするとき、ピクチャ単位でBDOFを使用不可とするか否かを示すフラグを、後述するピクチャヘッダに含むかどうかを制御するフラグ(sps_bdof_control_present_in_ph_flag)を含んでもよい。
【0062】
SPS211は、当該シーケンスにおいてDMVR(Decoder-side Motion Vector Refinement)を使用可とするか否かを制御するフラグ(sps_dmvr_enabled_flag)を含んでもよい。
【0063】
SPS211は、sps_dmvr_enabled_flagの値が「1」の時、すなわち、当該シーケンスにおいてDMVRを有効とするとき、ピクチャ単位でDMVRを使用不可とするか否かを示すフラグを、後述するピクチャヘッダに含むかどうかを制御するフラグ(sps_dmvr_control_present_in_ph_flag)を含んでもよい。
【0064】
図5は、PPS212に含まれる制御データの一例である。
【0065】
PPS212は、上述の通り、少なくとも各PPS212を識別するためのPPS id情報(pps_pic_parameter_set_id)を含む。また、PPS212は、上述の通り、少なくとも当該PPS212に対応するSPS211を指定するためのSPS id情報であるpps_seq_parameter_set_idを含む。
【0066】
PPS212は、当該PPS212内に色差関連のシンタックスを含むかどうかを示すフラグ(pps_chroma_tool_offsets_present_flag)を含んでもよい。
【0067】
例えば、pps_chroma_tool_offsets_present_flagの値が「0」の場合は、色差関連のシンタックスを含まないと定義し、pps_chroma_tool_offsets_present_flagの値が「1」の場合は、色差関連のシンタックスを含むと定義してもよい。
【0068】
なお、ChromaArrayType=0の場合、すなわち、当該シーケンスに色差データが存在しない場合は、pps_chroma_tool_offsets_present_flagの値が「0」であることと制約されていてもよい。
【0069】
或いは、separate_colour_plane_flagが存在しない場合は、chroma_format_idcの値が「0」の時、すなわち、当該シーケンスに色差データが存在しない場合は、pps_chroma_tool_offsets_present_flagの値が「0」であることと制約されていてもよい。
【0070】
PPS212は、後述するデブロッキングフィルタ処理を制御するシンタックスを当該PPS212に含むかどうかを示すフラグ(deblocking_filter_control_present_flag)を含んでもよい。
【0071】
例えば、deblocking_filter_control_present_flagの値が「0」の場合は、デブロッキングフィルタ処理を制御するシンタックスを含まないと定義し、deblocking_filter_control_present_flagの値が「1」の場合は、デブロッキングフィルタ処理を制御するシンタックスを含むと定義してもよい。
【0072】
また、deblocking_filter_control_present_flagの値が「1」の場合は、PPS212は、デブロッキングフィルタ処理を制御するシンタックスとして、deblocking_filter_override_enabled_flagを含んでもよい。
【0073】
例えば、deblocking_filter_override_enabled_flagの値が「1」の場合、後述するピクチャヘッダ213又はスライスヘッダ214A/214Bに含まれる情報にて、PPS212に含まれるデブロッキングフィルタ処理制御情報の上書きを許可すると定義し、deblocking_filter_override_enabled_flagの値が「0」の場合、かかるデブロッキングフィルタ処理制御情報の上書きを許可しない、と定義してもよい。
【0074】
また、復号部210は、PPS212に、deblocking_filter_override_enabled_flagが含まれていなかった場合、deblocking_filter_override_enabled_flagの値を「0」とみなしてよい。
【0075】
PPS212は、ピクチャ単位でデブロッキングフィルタ処理を使用可とするか或いは使用不可とするかを定義するフラグ(pps_deblocking_filter_disabled_flag)を含んでもよい。
【0076】
例えば、pps_deblocking_filter_disabled_flag=0の場合は、デブロッキングフィルタ処理を使用可とすると定義し、pps_deblocking_filter_disabled_flag=1の場合は、デブロッキングフィルタ処理を使用不可とすると定義してもよい。
【0077】
また、PPS212に、pps_deblocking_filter_disabled_flagが含まれていなかった場合、復号部210は、pps_deblocking_filter_disabled_flagの値を「0(デブロッキングフィルタ処理を使用可とする)」とみなしてよい。
【0078】
PPS212は、pps_deblocking_filter_disabled_flagの値が「0」の場合(デブロッキングフィルタ処理を使用可とする場合)、pps_beta_offset_div2及びpps_tc_offset_div2を含んでもよい。
【0079】
pps_beta_offset_div2の値及びpps_tc_offset_div2の値は、後述する輝度信号(Y信号)のデブロッキングフィルタ処理に用いる変数βと変数tCの値を算出する際に用いられる。
【0080】
PPS212に、pps_beta_offset_div2及びpps_tc_offset_div2が含まれていなかった場合、復号部210は、それぞれの値を「0」とみなしてもよい。
【0081】
さらに、pps_chroma_tool_offsets_present_flagの値が「1」の場合、PPS212は、色差信号(Cb信号及びCr信号)のそれぞれのデブロッキングフィルタ処理に用いる変数β及び変数tCの算出に用いるpps_cb_beta_offset_div2、pps_cb_tc_offset_div2、pps_cr_beta_offset_div2及びpps_cb_tc_offset_div2を含んでもよい。
【0082】
PPS212に、pps_cb_beta_offset_div2、pps_cb_tc_offset_div2、pps_cr_beta_offset_div2及びpps_cb_tc_offset_div2が含まれていなかった場合、復号部210は、それぞれの値を0とみなしてもよい。
【0083】
以上のように、pps_chroma_tool_offsets_present_flagの値が、PPS212内に色差関連のシンタックスを含むことを示している場合のみ、色差信号のデブロッキングフィルタ処理を制御するシンタックス(pps_cb_beta_offset_div2、pps_cb_tc_offset_div2、pps_cr_beta_offset_div2及びpps_cb_tc_offset_div2)をPPS212内に含めるようにすることで、例えば、当該ピクチャが4:0:0フォーマットである場合や、当該ピクチャが4:4:4フォーマットで各カラープレーンをモノクロ画像とみなして復号される場合、すなわち、色差データが存在しない場合に、不要なシンタックスがPP212Sに含まれることを防ぐことができる。これにより、無駄な復号処理を削減することができ、また、PPS212のビット量を削減することができる。
【0084】
また、deblocking_filter_override_enabled_flagの値が「1」の場合、PPS212は、後述するピクチャヘッダ213にデブロッキングフィルタ処理を制御する情報が含まれているかどうかを示すフラグ(dbf_info_in_ph_flag)を含んでもよい。
【0085】
例えば、dbf_info_in_ph_flag=0の場合は、ピクチャヘッダ213にデブロッキングフィルタ処理制御情報が含まれないと定義し、dbf_info_in_ph_flag=1の場合は、ピクチャヘッダ213にデブロッキングフィルタ処理制御情報が含まれると定義してもよい。
【0086】
また、PPS212に、dbf_info_in_ph_flagが含まれていない場合、復号部210は、dbf_info_in_ph_flagの値を「0」とみなしてもよい。
【0087】
PPS212は、当該PPSを参照するピクチャが、複数のスライス又はタイルに分割され得るかどうかを制御するフラグ(pps_no_pic_partition_flag)を含んでもよい。
【0088】
例えば、pps_no_pic_partition_flagの値が「1」の際は、当該PPSを参照するピクチャが複数のスライス又はタイルに分割されないと定義してもよい。
【0089】
同様に、例えば、pps_no_pic_partition_flagの値が「0」の際は、当該PPSを参照するピクチャが複数のスライス又はタイルに分割され得ると定義してもよい。
【0090】
PPS212は、参照ピクチャリスト情報を後述するピクチャヘッダに含むか否かを制御するフラグ(pps_rpl_info_in_ph_flag)を含んでもよい。
【0091】
例えば、pps_rpl_info_in_ph_flagの値が「1」の時は、ピクチャヘッダに参照ピクチャリスト情報を含み、pps_rpl_info_in_ph_flagの値が「0」の時は、ピクチャヘッダに参照ピクチャリスト情報を含まないと定義してもよい。
【0092】
図6は、ピクチャヘッダ213に含まれる制御データの一例である。
【0093】
ピクチャヘッダ213は、上述の通り、少なくとも当該ピクチャヘッダ213に対応するPPS212を指定するためのPPS id情報であるph_pic_parameter_set_idを含む。
【0094】
ピクチャヘッダ213は、当該ピクチャ内にインター予測を使用可能なスライスを含んでよいか否かを制御するフラグ(ph_inter_slice_allowed_flag)を含んでもよい。
【0095】
例えば、ph_inter_slice_allowed_flagの値が「0」の時は、当該ピクチャ内ではインター予測を使用可能なスライスを含むことを禁止し、ph_inter_slice_allowed_flagの値が「1」の時は、当該ピクチャ内ではインター予測を使用可能なスライスを含むことを許可すると定義してもよい。
【0096】
ピクチャヘッダ213の復号処理に際して、当該ピクチャ内で双予測が適用可能かどうかを示すフラグ(BiPredEnabledFlag)を定義してもよい。
【0097】
当該フラグの値が「1」の時は、当該ピクチャ内で双予測が適用可能を意味し、当該フラグの値が「0」の時は、当該ピクチャ内で双予測が適用不可を意味するように定義してもよい。
【0098】
当該ピクチャ内で双予測が適用可能かどうかは、例えば、pps_rpl_info_in_ph_flagの値や、参照ピクチャリストのエントリ数(num_ref_entries[1][RplsIdx[1]])等の情報を基に判断してもよい。
【0099】
BiPredEnabledFlagの値が「1」の時、かつ、sps_bdof_control_present_in_ph_flagの値が「1」の時、ピクチャヘッダ213は、当該ピクチャ内でBDOFを使用不可とするか否かを制御するフラグ(ph_bdof_disabled_flag)を含んでよい。
【0100】
例えば、ph_bdof_disabled_flagの値が「0」の時は、当該ピクチャでBDOFを使用可と定義し、ph_bdof_disabled_flagの値が「1」の時は、当該ピクチャでBDOFを使用不可と定義してもよい。
【0101】
また、ピクチャヘッダ213に、ph_bdof_disabled_flagが含まれていなかった時、すなわち、ph_bdof_disabled_flagが復号されない場合、ph_bdof_disabled_flagの値を、以下のように暗黙的に定義してもよい。
【0102】
ピクチャヘッダ213に、ph_bdof_disabled_flagが含まれておらず、BiPredEnabledFlagの値が「0」の時、すなわち、当該ピクチャにおいて双予測が適用不可の時、復号部210は、ph_bdof_disabled_flagの値を「1」、すなわち、BDOF使用不可とみなしてもよい。
【0103】
また、ピクチャヘッダ213に、ph_bdof_disabled_flagが含まれておらず、sps_bdof_control_present_in_ph_flagの値が「1」の時、復号部210は、ph_bdof_disabled_flagの値を「1」、すなわち、BDOFが使用不可であるとみなしてもよい。
【0104】
また、ピクチャヘッダ213に、ph_bdof_disabled_flagが含まれておらず、sps_bdof_control_present_in_ph_flagの値が「0」で、かつ、BiPredEnabledFlagの値が「1」の時(すなわち、当該ピクチャにおいて双予測が適用可の時)、復号部210は、ph_bdof_disabled_flagの値を「1-sps_bdof_enabled_flag」とみなしてもよい。
【0105】
すなわち、当該ピクチャ内でBDOFを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、当該ピクチャにおいて双予測が適用不可の時は、復号部210は、当該ピクチャ内でBDOFを使用不可とするか否かを制御するフラグの値をBDOFが使用不可であることを意味する値と暗黙的に定義するように構成されていてもよい。
【0106】
なお、BDOFは、当該ブロックが双予測を行うブロックの場合にのみ適用可能な処理である。
【0107】
以上のような構成とすることで、後述のように、ブロック毎に複数の適用条件に基づいてBDOFを適用するか否かを判定する際、判定条件の一つとしてph_bdof_disabled_flagの値が「0」であることという条件を含めておくことで、BDOFが適用できない双予測が適用不可のピクチャにおいては、ph_bdof_disabled_flagの値が「1」になるので、瞬時にBDOFを適用しないと判定できる。これにより、他の適用条件を確認する必要が無くなり、処理量を削減できる。
【0108】
BiPredEnabledFlagの値が「1」の時、かつ、sps_dmvr_control_present_in_ph_flagの値が「1」の時、ピクチャヘッダ213は、当該ピクチャ内でDMVRを使用不可とするか否かを制御するフラグ(ph_dmvr_disabled_flag)を含んでよい。
【0109】
例えば、ph_dmvr_disabled_flagの値が「0」の時は、当該ピクチャでDMVRを使用可と定義し、ph_dmvr_disabled_flagの値が「1」の時は、当該ピクチャでDMVRを使用不可と定義してもよい。
【0110】
また、ピクチャヘッダ213に、ph_dmvr_disabled_flagが含まれていなかった時、すなわち、ph_dmvr_disabled_flagが復号されない場合、ph_dmvr_disabled_flagの値を、以下のように暗黙的に定義してもよい。
【0111】
ピクチャヘッダ213に、ph_dmvr_disabled_flagが含まれておらず、BiPredEnabledFlagの値が「0」の時、すなわち、当該ピクチャにおいて双予測が適用不可の時、復号部210は、ph_dmvr_disabled_flagの値を「1」、すなわち、DMVR使用不可とみなしてもよい。
【0112】
また、ピクチャヘッダ213に、ph_dmvr_disabled_flagが含まれておらず、sps_dmvr_control_present_in_ph_flagの値が「1」の時、復号部210は、ph_dmvr_disabled_flagの値を「1」、すなわち。DMVR使用不可とみなしてもよい。
【0113】
また、ピクチャヘッダ213に、ph_dmvr_disabled_flagが含まれておらず、sps_dmvr_control_present_in_ph_flagの値が「0」で、かつ、BiPredEnabledFlagの値が「1」の時(すなわち、当該ピクチャにおいて双予測が適用可の時)、復号部210は、ph_dmvr_disabled_flagの値を「1-sps_dmvr_enabled_flag」とみなしてもよい。
【0114】
すなわち、当該ピクチャ内でDMVRを使用不可とするか否かを制御するフラグがピクチャヘッダに含まれていなかった場合、当該ピクチャにおいて双予測が適用不可の時は、復号部210は、当該ピクチャ内でDMVRを使用不可とするか否かを制御するフラグの値をDMVRが使用不可であることを意味する値と暗黙的に定義するように構成されていてもよい。
【0115】
なお、DMVRは、当該ブロックが双予測を行うブロックの場合にのみ適用可能な処理である。
【0116】
以上のような構成とすることで、後述のように、ブロック毎に複数の適用条件に基づいてDMVRを適用するか否かを判定する際、判定条件の一つとしてph_dmvr_disabled_flagの値が「0」であることという条件を含めておくことで、DMVRが適用できない双予測が適用不可のピクチャにおいては、ph_dmvr_disabled_flagの値が「1」になるので、瞬時にDMVRを適用しないと判定できる。これにより、他の適用条件を確認する必要が無くなり、処理量を削減できる。
【0117】
また、ph_pic_parameter__set_idによって指定されたPPS212に関連するdeblocking_filter_override_enabled_flagの値及びdbf_info_in_ph_flagの値がいずれも「1」の場合、ピクチャヘッダ213は、ph_deblocking_filter_override_flagを含んでもよい。
【0118】
ピクチャヘッダ213に、ph_deblocking_filter_override_flagが含まれない場合、復号部210は、ph_deblocking_filter_override_flagの値を「0」とみなしてもよい。
【0119】
ph_deblocking_filter_override_flagの値が「1」の場合、ピクチャヘッダ213は、ph_deblocking_filter_disabled_flagを含んでもよい。
【0120】
ph_deblocking_filter_disabled_flag=1の場合は、当該ピクチャヘッダ213に対応するスライス内で、デブロッキングフィルタ処理が使用不可であることを意味する。
【0121】
一方、ph_deblocking_filter_disabled_flag=0の場合は、当該ピクチャヘッダ213に対応するスライス内で、デブロッキングフィルタ処理が使用可であることを意味する。
【0122】
ピクチャヘッダ213に、ph_deblocking_filter_disabled_flagが含まれない場合、復号部210は、ph_deblocking_filter_disabled_flagの値をpps_deblocking_filter_disabled_flagと同じ値であるとみなしてもよい。
【0123】
ph_deblocking_filter_disabled_flagの値が「0」の場合(デブロッキングフィルタ処理が使用可である場合)、ピクチャヘッダ213は、ph_beta_offset_div2及びph_tc_offset_div2を含んでもよい。
【0124】
ph_beta_offset_div2の値及びph_tc_offset_div2の値は、後述する輝度信号(Y信号)のデブロッキングフィルタ処理に用いる変数βと変数tCの値を算出する際に用いられる。
【0125】
ピクチャヘッダ213に、ph_beta_offset_div2及びph_tc_offset_div2が含まれていなかった場合、復号部210は、それぞれの値をpps_beta_offset_div2及びpps_tc_offset_div2と同じ値とみなしてもよい。
【0126】
さらに、pps_chroma_tool_offsets_present_flagの値が「1」の場合、ピクチャヘッダ213は、色差信号(Cb信号及びCr信号)のそれぞれのデブロッキングフィルタ処理に用いる変数β及び変数tCの算出に用いられるph_cb_beta_offset_div2、ph_cb_tc_offset_div2、ph_cr_beta_offset_div2及びph_cr_tc_offset_div2を含んでもよい。
【0127】
ピクチャヘッダ213に、ph_cb_beta_offset_div2、ph_cb_tc_offset_div2、ph_cr_beta_offset_div2及びph_cr_tc_offset_div2が含まれていなかった場合、かつ、pps_chroma_tool_offsets_present_flagの値が「1」の場合、復号部210は、それぞれの値を、pps_cb_beta_offset_div2、PPSで伝送された色差信号のデブロッキングフィルタ処理に用いる変数β及び変数tCの算出に用いられるpps_cb_tc_offset_div2、pps_cr_beta_offset_div2及びpps_cr_tc_offset_div2と同じ値とみなしてもよい。
【0128】
ピクチャヘッダ213に、ph_cb_beta_offset_div2、ph_cb_tc_offset_div2、ph_cr_beta_offset_div2及びph_cr_tc_offset_div2が含まれていなかった場合、かつ、pps_chroma_tool_offsets_present_flagの値が「0」の場合、復号部210は、それぞれの値を、輝度信号(Y信号)のデブロッキングフィルタ処理に用いる変数βと変数tCの値を算出する際に用いられるph_beta_offset_div2、ph_tc_offset_div2と同じ値とみなしてもよい。
【0129】
以上のように、復号部210は、ピクチャヘッダにおいて、Cb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されなかった場合、ピクチャパラメータセットにおいて、Cb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されていた場合は、ピクチャヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックス値をピクチャパラメータセットの当該シンタックスの値とみなすように構成されてもよい。
【0130】
また、復号部210は、ピクチャパラメータセットにおいて、Cb信号又はCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されなかった場合は、ピクチャヘッダにおけるCb信号又はCr信号のデブロッキングフィルタ処理を制御するシンタックス値をピクチャヘッダにおけるY信号のデブロッキングフィルタ処理を制御するシンタックスの値とみなすように構成されていてもよい。
【0131】
また、以上のように、復号部210は、pps_chroma_tool_offsets_present_flagの値によってピクチャパラメータセットにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されるか否かを制御し、ピクチャヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されなかった場合、pps_chroma_tool_offsets_present_flagの値が「1」の時は、ピクチャヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックス値をピクチャパラメータセットの当該シンタックスの値とみなし、pps_chroma_tool_の値が「0」の時は、ピクチャヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックス値をピクチャヘッダにおけるY信号のデブロッキングフィルタ処理を制御するシンタックスの値とみなすように構成されていてもよい。
【0132】
このように、ピクチャパラメータセットにおいて輝度信号と色差信号用のシンタックスが異なる値に設定されている場合は、ピクチャヘッダにおいても輝度と色差でそれぞれ異なる値を用い、ピクチャパラメータセットにおいて色差信号用のシンタックスが存在しない場合、すなわち、輝度信号と色差信号とで同じシンタックス値を用いる場合は、ピクチャヘッダにおいても輝度信号と色差信号とで同じ値を用いることで、ピクチャヘッダにおけるシンタックスの伝送を省略して処理量及びかかるビット量を削減しつつ、画質に応じた細かなパラメータ制御を実現できる。
【0133】
ChromaArrayTypeの値が、色差データが存在することを示しているときにのみ、色差信号のデブロッキングフィルタ処理を制御するシンタックス(ph_cb_beta_offset_div2、ph_cb_tc_offset_div2、ph_cr_beta_offset_div2及びph_cr_tc_offset_div2)をピクチャヘッダ213内に含めるようにすることで、例えば、当該ピクチャが4:0:0フォーマットである場合や、当該ピクチャが4:4:4フォーマットで各カラープレーンをモノクロ画像とみなして復号される場合、すなわち、色差データが存在しない場合に、不要なシンタックスをピクチャヘッダ213に含めることを防ぐことができる。これにより、無駄な復号処理を削減することができ、また、ピクチャヘッダ213のビット量を削減することができる。
【0134】
図7は、スライスヘッダ214A/214Bに含まれる制御データの一例である。
【0135】
スライスヘッダ214A/214Bは、picture_header_in_slice_header_flagを含んでもよい。
【0136】
picture_header_in_slice_header_flagの値が「1」の場合、スライスヘッダ214A/214Bは、
図7に示すpicture_header_structure( )の位置に、
図6で説明したピクチャヘッダ213のシンタックスを含むことができる。
【0137】
また、当該スライスヘッダ214A/214Bが対応するピクチャヘッダ213にてph_pic_parameter_set_idで指定されたPPS212に関連するdeblocking_filter_override_enabled_flagの値及びdbf_info_in_ph_flagの値がいずれも「1」の場合、スライスヘッダ214A/214Bは、slice_deblocking_filter_override_flagを含んでもよい。
【0138】
スライスヘッダ214A/214Bに、slice_deblocking_filter_override_flagが含まれない場合、復号部210は、slice_deblocking_filter_override_flagの値を「0」とみなしてもよい。
【0139】
slice_deblocking_filter_override_flagの値が「1」の場合、ピクチャヘッダ214A/214Bは、
slice_deblockling_filter_disabled_flagを含んでもよい。
【0140】
ここで、slice_deblockling_filter_disabled_flag=1の場合は、当該スライス内で、デブロッキングフィルタ処理が使用不可であることを意味する。一方、slice_deblockling_filter_disabled_flag=0の場合は、当該スライス内で、デブロッキングフィルタ処理が使用可であることを意味する。
【0141】
スライスヘッダ214A/214Bに、slice_deblockling_filter_disabled_flagが含まれない場合、復号部210は、slice_deblockling_filter_disabled_flagの値をph_deblockling_filter_disabled_flagと同じ値であるとみなしてもよい。
【0142】
slice_deblockling_filter_disabled_flagの値が「0」の場合(デブロッキングフィルタ処理が使用可である場合)、スライスヘッダ214A/214Bは、slice_beta_offset_div2及びslice_tc_offset_div2を含んでもよい。
【0143】
slice_beta_offset_div2の値及びslice_tc_offset_div2の値は、後述する輝度信号(Y信号)のデブロッキングフィルタ処理に用いる変数βと変数tCの値を算出する際に用いられる。
【0144】
スライスヘッダ214A/214Bに、slice_beta_offset_div2及びslice_tc_offset_div2が含まれていなかった場合、復号部210は、それぞれの値を、ph_beta_offset_div2及びph_tc_offset_div2と同じ値とみなしてもよい。
【0145】
さらに、pps_chroma_tool_offsets_present_flagの値が「1」の場合、スライスヘッダ214A/214Bは、色差信号(Cb信号及びCr信号)のそれぞれのデブロッキングフィルタ処理に用いる変数β及び変数tCの算出に用いられるslice_cb_beta_offset_div2、slice_cb_tc_offset_div2、slice_cr_beta_offset_div2及びslice_cr_tc_offset_div2を含んでもよい。
【0146】
スライスヘッダ214A/214Bに、slice_cb_beta_offset_div2、slice_cb_tc_offset_div2、slice_cr_beta_offset_div2及びslice_cr_tc_offset_div2が含まれていなかった場合、かつ、pps_chroma_tool_offsets_present_flagの値が「1」の場合、復号部210は、それぞれの値を、色差信号(Cb信号及びCr信号)のそれぞれのデブロッキングフィルタ処理に用いる変数β及び変数tCの算出に用いられるph_cb_beta_offset_div2、ph_cb_tc_offset_div2、ph_cr_beta_offset_div2及びph_cr_tc_offset_div2と同じ値とみなしてもよい。
【0147】
スライスヘッダ214A/214Bに、slice_cb_beta_offset_div2、slice_cb_tc_offset_div2、slice_cr_beta_offset_div2及びslice_cr_tc_offset_div2が含まれていなかった場合、かつ、pps_chroma_tool_offsets_present_flagの値が「0」の場合、復号部210は、それぞれの値を、輝度信号(Y信号)のデブロッキングフィルタ処理に用いる変数βと変数tCの値を算出する際に用いられるslice_beta_offset_div2、slice_tc_offset_div2と同じ値とみなしてもよい。
【0148】
以上のように、復号部210は、スライスヘッダにおいて、Cb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されなかった場合、ピクチャパラメータセットにおいて、Cb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されていた場合は、スライスヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックス値をピクチャパラメータセットの当該シンタックスの値とみなすように構成されていてもよい。
【0149】
また、復号部210は、、ピクチャパラメータセットにおいて、Cb信号又はCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されなかった場合は、スライスヘッダにおけるCb信号又はCr信号のデブロッキングフィルタ処理を制御するシンタックス値をスライスヘッダにおけるY信号のデブロッキングフィルタ処理を制御するシンタックスの値とみなすように構成されていてもよい。
【0150】
また、以上のように、復号部210は、pps_chroma_tool_offsets_present_flagの値によってピクチャパラメータセットにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されるか否かを制御し、スライスヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックスが復号されなかった場合、pps_chroma_tool_offsets_present_flagの値が「1」の時は、スライスヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックス値をピクチャパラメータセットの当該シンタックスの値とみなし、pps_chroma_tool_offsets_present_flagの値が「0」の時は、スライスヘッダにおけるCb信号及びCr信号のデブロッキングフィルタ処理を制御するシンタックス値をスライスヘッダにおけるY信号のデブロッキングフィルタ処理を制御するシンタックスの値とみなすように構成されていてもよい。
【0151】
このように、ピクチャパラメータセットにおいて輝度信号用のシンタックスと色差信号用のシンタックスとが異なる値に設定されている場合は、スライスヘッダにおいても輝度寝具と色差信号とでそれぞれ異なる値を用い、ピクチャパラメータセットにおいて色差信号用のシンタックスが存在しない場合、すなわち、輝度信号と色差信号とで同じシンタックス値を用いる場合は、スライスヘッダにおいても輝度信号と色差信号とで同じ値を用いることで、ピクチャヘッダにおけるシンタックスの伝送を省略して処理量及びかかるビット量を削減しつつ、画質に応じた細かなパラメータ制御を実現できる。
【0152】
以上で説明したフラグの値は、あくまでも一例である。フラグの値(「0」及び「1」)に与える意味を逆転させた場合、対応する処理もそれに応じて逆転させることで等価な処理を実現可能である。また、シンタックス間の参照関係が存在しないシンタックス同士については、復号する順番が入れ替わってもよい。更に、上述以外のシンタックスが、SPS211、PPS212、ピクチャヘッダ213、スライスヘッダ214A/214Bに、それぞれ含まれていてもよい。
【0153】
(インター予測部241)
以下、
図14を参照して、本実施形態に係るインター予測部241について説明する。
図14は、本実施形態に係る画像復号装置200のインター予測部241の機能ブロックの一例について示す図である。
【0154】
図14に示すように、インター予測部231は、動きベクトル復号部241Bと、洗練化部241Cと、予測信号生成部241Dとを有する。
【0155】
動きベクトル復号部241Bは、ブロック毎に符号化データから動きベクトルを復号するように構成されている。具体的な処理については、例えば、非特許文献1に記載の処理が適用できるため、詳細については省略する。
【0156】
洗練化部241Cは、前記動きベクトル復号部241Bで復号した動きベクトルを初期値として動きベクトルを洗練化するように構成されている。ここで、洗練化処理とは、例えば、上述のDMVRである。
【0157】
洗練化部241Cは、ブロック毎に複数の適用条件を判定し、かかる適用条件を全て満たす場合のみ、洗練化処理を行うように構成されていてもよい。
【0158】
ここで、上述の適用条件の一つとして、当該ブロックが双予測を行うブロックであることという条件を含む。また、上述の適用条件の一つとして、ph_dmvr_disabled_flagの値が「0」(すなわち、DMVR使用可)であることという条件を含んでもよい。
【0159】
洗練化処理の具体的な処理内容については、例えば、非特許文献1に記載の処理を適用できるため、詳細は省略する。
【0160】
予測信号生成部241Dは、動きベクトル241Bで復号された動きベクトル或いは洗練化部241Cで洗練化された動きベクトルを用いて、当該ブロックの予測信号を生成するように構成されている。
【0161】
予測信号生成部241Dは、予測信号生成処理の一部として、BDOF処理を行うように構成されていてもよい。
【0162】
また、予測信号生成部241Dは、ブロック毎に複数の適用条件を判定し、かかる適用条件を全て満たす場合のみ、BDOF処理を行うように構成されていてもよい。
【0163】
ここで、上述の適用条件の一つとして、当該ブロックが双予測を行うブロックであることという条件を含む。また、上述の適用条件の一つとして、ph_bdof_disabled_flagの値が「0」(すなわち、BDOF使用可)であることという条件を含んでもよい。
【0164】
BDOF処理及び予測信号生成処理の具体的な処理内容については、例えば、非特許文献1に記載の処理を適用できるため、詳細は省略する。
【0165】
(インループフィルタ処理部250)
以下、
図8を参照して、本実施形態に係るインループフィルタ処理部250について説明する。
図8は、本実施形態に係る画像復号装置200のインループフィルタ処理部250の機能ブロックの一例について示す図である。
【0166】
図8に示すように、インループフィルタ処理部250は、デブロッキングフィルタ部250Aと、SAO部250Bと、適応ループフィルタ部250Cとを有する。
【0167】
SAO部250Bは、サンプルアダプティブオフセット処理を行うブロックであり、公知の処理を用いることができるため、具体的な処理内容の説明は省略する。
【0168】
同様に、適応ループフィルタ部250Cは、適応ループフィルタ処理を行うブロックであり、公知の処理を用いることができるため、具体的な処理内容の説明は省略する。
【0169】
以下、デブロッキングフィルタ部250Aの処理内容の一例について説明する。
【0170】
図9に示すように、デブロッキングフィルタ部250Aは、ブロック境界検出部251と、境界強度判定部253と、フィルタ決定部254と、フィルタ処理部255とを有する。
【0171】
ここで、末尾に「A」が付されている構成は、垂直方向のブロック境界に対するデブロッキングフィルタ処理に関する構成であり、末尾に「B」が付されている構成は、水平方向のブロック境界に対するデブロッキングフィルタ処理に関する構成である。
【0172】
以下、垂直方向のブロック境界に対するデブロッキングフィルタ処理が行われた後に、水平方向のブロック境界に対するデブロッキングフィルタ処理が行われるケースについて例示する。
【0173】
デブロッキングフィルタ処理は、上述したように、符号化ブロックに対して適用されてもよく、予測ブロックに対して適用されてもよく、変換ブロックに対して適用されてもよい。また、デブロッキングフィルタ処理は、上記の各ブロックを分割したサブブロックに適用されてもよい。すなわち、対象ブロック及び隣接ブロックは、符号化ブロックであってもよく、予測ブロックであってもよく、変換ブロックであってもよく、これらを分割したサブブロックでもよい。
【0174】
サブブロックにデブロッキングフィルタを適用する場合は、適宜、以下の説明のブロックをサブブロックに読み替えることができる。
【0175】
垂直方向のブロック境界に対するデブロッキングフィルタ処理及び水平方向のブロック境界に対するデブロッキングフィルタ処理は、同様の処理であるため、以下においては、垂直方向のブロック境界に対するデブロッキングフィルタ処理について説明する。
【0176】
ブロック境界検出部251Aは、ブロックサイズを示す制御データに基づいて、ブロックの境界を検出するように構成されている。ここで、ブロックは、符号化ブロック(CU)、予測ブロック(PU)、変換ブロック(TU)である。具体的な検出方法は、既知の手法が適用可能なため、詳細の説明は省略する。
【0177】
境界強度判定部253Aは、対象ブロックと隣接ブロックとのブロック境界の境界強度を判定するように構成されている。例えば、境界強度は、「0」、「1」及び「2」の3種類の整数値のうちいずれかをとると定義してもよい。境界強度の具体的な算出方法は、既知の手法が適用可能なため、詳細な説明は省略する。
【0178】
フィルタ決定部254Aは、ブロック境界に適用するフィルタ処理(例えば、デブロッキングフィルタ処理)の種類を決定するように構成されている。
【0179】
例えば、フィルタ決定部254Aは、ブロック境界の境界強度や、対象ブロック及び隣接ブロックに含まれる量子化パラメータ等に基づいて、ブロック境界に対して、フィルタ処理を適用するか否か、弱フィルタ処理及び強フィルタ処理のいずれのフィルタ処理を適用するかについて決定するように構成されていてもよい。
【0180】
また、フィルタ決定部254Aは、輝度信号のブロック境界及び色差信号(Cb信号又はCr信号)のブロック境界について、それぞれ異なる手順でフィルタ処理の適否及びフィルタ強度(弱フィルタまたは強フィルタ)を決定してもよい。
【0181】
フィルタ決定部254Aは、ブロック境界の境界強度が「0」である場合に、フィルタ処理を適用しないと決定するように構成されていてもよい。
【0182】
以下、
図10を用いて、フィルタ決定部254Aにおける色差信号(Cb信号又はCr信号)のブロック境界における具体的な処理手順の一例について説明する。以下では、Cb信号における処理手順を説明するが、Cr信号も同様な手順で処理可能である。
【0183】
ステップS101において、フィルタ決定部254Aは、当該ブロック境界の境界強度を確認する。かかる境界強度が「0」の場合は、本処理は、ステップS109へ進み、フィルタ決定部254Aは、当該ブロック境界には、デブロッキングフィルタを適用しないと決定する。かかる境界強度が「0」より大きい場合は、本処理は、ステップS102へ進む。
【0184】
ステップS102において、フィルタ決定部254Aは、変数βの値及び変数tCの値を算出する。
【0185】
まず、変数βの算出法について説明する。
【0186】
第1に、フィルタ決定部254Aは、以下の通り、変数Qの値を算出する。
【0187】
Q=Clip3(0,63,QpC+(slice_cb_beta_offset_div2<<1))
ここで、QpCは、例えば、当該ブロック境界に隣接する2つのブロックの量子化パラメータの平均値である。
【0188】
第2に、フィルタ決定部254Aは、前記Qの値と
図11に示す表を用いて、β′を決定する。
【0189】
第3に、フィルタ決定部254Aは、上記で決めたβ′に基づいて、以下の式によって、変数βを算出する。
【0190】
β=β′×(1<<(BitDepth-8))
ここで、BitDepthは、画素値の内部ビット深度である。
【0191】
次に、変数tCの算出法について説明する。
【0192】
第1に、フィルタ決定部254Aは、以下の通り、変数Qの値を算出する。
【0193】
Q=Clip3(0,65,QpC+2×(bS-1)+(slice_cb_tc_offset_div2<<1))
ここで、bSは、境界強度の値である。
【0194】
第2に、フィルタ決定部254Aは、上述のQの値及び
図11に示す表を用いて、tC’を決定する。
【0195】
第3に、フィルタ決定部254Aは、上記で決めたtC’に基づいて、以下の式によって、変数tCを算出する。
【0196】
tC=(BitDeapth<10)?(tC’+2)>>(10-BitDeapth):tC’×(1<<(BitDeapth-10))
以上のように、フィルタ決定部254Aは、変数βの値及び変数tCの値を算出し、本処理は、ステップS103へ進む。
【0197】
ステップS103において、フィルタ決定部254Aは、フィルタ適用有無を判定する。
【0198】
例えば、当該ブロック境界に隣接する2つのブロック(便宜上、片方を「ブロックP」と呼び、もう片方を「ブロックQ」と呼ぶ)の最大フィルタ長がいずれも「1」で且つ境界強度が「2」でない場合、本処理は、ステップS109へ進み、フィルタ決定部254Aは、フィルタを適用しないと決定する。それ以外の場合は、本処理は、ステップS104へ進む。
【0199】
なお、最大フィルタ長(maxFilterLengthP、maxFilterLengthQ)は、例えば、非特許文献1に記載の方法で予め算出しておくことができる。
【0200】
ステップS104において、フィルタ決定部254Aは、ブロックQに対応する最大フィルタ長(maxFilterLengthQ)が「3」であるかを確認する。
【0201】
ブロックQに対応する最大フィルタ長(maxFilterLengthQ)が「3」でない場合は、本処理は、ステップS108へ進み、フィルタ決定部254Aは、弱フィルタを適用すると決定する。それ以外の場合は、本処理は、ステップS105へ進む。
【0202】
ステップS105において、フィルタ決定部254Aは、第1に、当該ブロック境界のブロックノイズらしさを示す変数dを算出する。変数dは、例えば、非特許文献1に記載の方法で算出できる。
【0203】
フィルタ決定部254Aは、第2に、変数dが、上述の変数βより小さいかどうかを確認する。変数dが変数βより小さい場合は、本処理は、ステップS106へ進む。そうでない場合は、本処理は、ステップS108へ進み、フィルタ決定部254Aは、弱フィルタを適用すると決定する。
【0204】
ステップS106では、フィルタ決定部254Aは、以下の3つの所定条件全てを満足するかどうかを確認する。
【0205】
dpq<(β>>2)
(Abs(p3-P0)+Abs(q0-q3))<(β>>3)
Abs(p0-q0)<((5×tC+1))
ここで、dpqは、上述の変数dと同様に、当該ブロック境界のブロックノイズらしさを示す変数である。具体的には、dpqは、例えば、非特許文献1に記載の方法で算出できる。
【0206】
また、p0及びq0は、ブロックP及びブロックQにおいて、ブロック境界に隣接する画素の画素値である。同様に、p3及びq3は、ブロックP及びブロックQにおいてブロック境界から4画素離れた場所に位置する画素の画素値である。更に、Abs()は、引数の絶対値を返す関数である。
【0207】
上述の3つの条件の全てを満足する場合、本処理は、ステップS107へ進み、フィルタ決定部254Aは、強フィルタを適用すると決定する。そうでない場合、本処理は、ステップS108へ進み、フィルタ決定部254Aは、弱フィルタを適用すると決定する。
【0208】
以上のように、フィルタ決定部254Aでは、例えば、変数β及び変数tCの値を用いて、当該ブロック境界にフィルタを適用するか否か、適用する場合は、弱フィルタにするか強フィルタにするかを決定することができる。
【0209】
上述の例では、変数βの値及び変数tCの値が大きくなるほど、フィルタが適用されやすくなり、また、フィルタの種類としては強フィルタが適用されやすくなることがわかる。
【0210】
また、変数βの値及び変数tCの値は、例えば、Cb信号については、slice_cb_beta_offset_div2及びslice_cb_tc_offset_div2で調整可能であり、ピクチャ単位及びスライス単位で、当該シンタックスの値を設定することで、フィルタのかかりやすさ及びフィルタの強度を調整することができる。
【0211】
フィルタ処理部255Aは、フィルタ決定部254Aの決定に基づいて、デブロッキング前画像に対する処理を行うように構成されている。デブロッキング前画像に対する処理は、フィルタ処理無し、弱フィルタ処理、強フィルタ処理等である。
【0212】
(画像符号化装置100)
以下、
図12を参照して、本実施形態に係る画像符号化装置100について説明する。
図12は、本実施形態に係る画像符号化装置100の機能ブロックの一例について示す図である。
【0213】
図12に示すように、画像符号化装置100は、インター予測部111と、イントラ予測部112と、減算器121と、加算器122と、変換・量子化部131と、逆変換・逆量子化部132と、符号化部140と、インループフィルタ処理部150と、フレームバッファ160とを有する。
【0214】
インター予測部111は、インター予測部241と同様に、インター予測(フレーム間予測)によって予測信号を生成するように構成されている。
【0215】
具体的には、インター予測部111は、符号化対象のフレーム(以下、対象フレーム)とフレームバッファ160に格納される参照フレームとの比較によって、参照フレームに含まれる参照ブロックを特定し、特定された参照ブロックに対する動きベクトルを決定するように構成されている。
【0216】
また、インター予測部111は、参照ブロック及び動きベクトルに基づいて予測ブロックに含まれる予測信号を予測ブロック毎に生成するように構成されている。インター予測部111は、予測信号を減算器121及び加算器122に出力するように構成されている。ここで、参照フレームは、対象フレームとは異なるフレームである。
【0217】
イントラ予測部112は、イントラ予測部242と同様に、イントラ予測(フレーム内予測)によって予測信号を生成するように構成されている。
【0218】
具体的には、イントラ予測部112は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。また、イントラ予測部112は、予測信号を減算器121及び加算器122に出力するように構成されている。
【0219】
ここで、参照ブロックは、予測対象のブロック(以下、対象ブロック)について参照されるブロックである。例えば、参照ブロックは、対象ブロックに隣接するブロックである。
【0220】
減算器121は、入力画像信号から予測信号を減算し、予測残差信号を変換・量子化部131に出力するように構成されている。ここで、減算器121は、イントラ予測又はインター予測によって生成される予測信号と入力画像信号との差分である予測残差信号を生成するように構成されている。
【0221】
加算器122は、逆変換・逆量子化部132から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、かかるフィルタ処理前復号信号をイントラ予測部112及びインループフィルタ処理部150に出力するように構成されている。
【0222】
ここで、フィルタ処理前復号信号は、イントラ予測部112で用いる参照ブロックを構成する。
【0223】
変換・量子化部131は、予測残差信号の変換処理を行うとともに、係数レベル値を取得するように構成されている。さらに、変換・量子化部131は、係数レベル値の量子化を行うように構成されていてもよい。
【0224】
ここで、変換処理は、予測残差信号を周波数成分信号に変換する処理である。かかる変換処理では、離散コサイン変換(DCT;Discrete Cosine Transform)に対応する基底パターン(変換行列)が用いられてもよく、離散サイン変換(DST;Discrete Sine Transform)に対応する基底パターン(変換行列)が用いられてもよい。
【0225】
逆変換・逆量子化部132は、逆変換・逆量子化部220と同様に、変換・量子化部131から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部132は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
【0226】
ここで、逆変換処理及び逆量子化は、変換・量子化部131で行われる変換処理及び量子化とは逆の手順で行われる。
【0227】
符号化部140は、変換・量子化部131から出力された係数レベル値を符号化し、符号化データを出力するように構成されている。
【0228】
ここで、例えば、符号化は、係数レベル値の発生確率に基づいて異なる長さの符号を割り当てるエントロピー符号化である。
【0229】
また、符号化部140は、係数レベル値に加えて、復号処理で用いる制御データを符号化するように構成されている。
【0230】
なお、上述したように、制御データは、符号化ブロックサイズや予測ブロックサイズや変換ブロックサイズ等のサイズデータを含んでもよい。
【0231】
インループフィルタ処理部150は、インループフィルタ処理部250と同様に、加算器122から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ160に出力するように構成されている。
【0232】
フレームバッファ160は、インター予測部111で用いる参照フレームを蓄積するように構成されている。
【0233】
ここで、フィルタ処理後復号信号は、インター予測部111で用いる参照フレームを構成する。
【0234】
また、上述の画像符号化装置100及び画像復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
【0235】
なお、上記の各実施形態では、本発明を画像符号化装置100及び画像復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、画像符号化装置100及び画像復号装置200の各機能を備えた画像符号化/復号システムにも同様に適用できる。
【0236】
本実施形態によれば、変換スキップの最大ブロックサイズを制御するシンタックスを固定長符号とすることで、復号処理を簡素化することができる。
【0237】
また、本実施形態によれば、かかるシンタックスの値が「0」~「3」の4種類のみであるため、固定長符号の場合、2ビットで表現できる。この時、例えば、最大ブロックサイズを「16」や「32」に設定したい場合、指数ゴロム符号を用いる場合と比較して、少ないビット数で表現することができる。
【0238】
また、本実施形態によれば、変換スキップの最大ブロックサイズが取り得る最大値は、変換スキップ以外の処理の仕様や設計にも影響するため、あえて固定長符号として拡張性を排することで、仕様やそれに基づいて設計された装置の安定性を確保することができる。
【符号の説明】
【0239】
10…画像処理システム
100…画像符号化装置
111、241…インター予測部
112、242…イントラ予測部
121…減算器
122、230…加算器
131…変換・量子化部
132、220…逆変換・逆量子化部
140…符号化部
150、250…インループフィルタ処理部
160、260…フレームバッファ
200…画像復号装置
210…復号部
211…SPS
212…PPS
213…ピクチャヘッダ
214A、214B…スライスヘッダ
215A、215B…スライスデータ
250A…デブロッキングフィルタ部
251、251A、251B…ブロック境界検出部
253、253A、253B…境界強度判定部
254、254A、254B…フィルタ決定部
255、255A、255B…フィルタ処理部
250B…SAO部
250C…適応ループフィルタ部