JP2013236358A - 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 - Google Patents
画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 Download PDFInfo
- Publication number
- JP2013236358A JP2013236358A JP2012147920A JP2012147920A JP2013236358A JP 2013236358 A JP2013236358 A JP 2013236358A JP 2012147920 A JP2012147920 A JP 2012147920A JP 2012147920 A JP2012147920 A JP 2012147920A JP 2013236358 A JP2013236358 A JP 2013236358A
- Authority
- JP
- Japan
- Prior art keywords
- filter
- offset
- unit
- parameter
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】適応オフセットフィルタのパラメータの符号化を改善する。
【解決手段】動画像復号装置1の適応オフセットフィルタ60が用いるオフセットを含むフィルタパラメータは、第1単位領域および第1単位領域の集合とは独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかの格納方法で符号化データに格納されている。
【選択図】図1
【解決手段】動画像復号装置1の適応オフセットフィルタ60が用いるオフセットを含むフィルタパラメータは、第1単位領域および第1単位領域の集合とは独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかの格納方法で符号化データに格納されている。
【選択図】図1
Description
本発明は、画像のフィルタリングを行う画像フィルタ装置に関する。また、そのような画像フィルタを備えている符号化装置、および、復号装置に関する。また、そのような復号装置によって復号される符号化データのデータ構造に関する。
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置(符号化装置)、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置(復号装置)が用いられている。具体的な動画像符号化方式としては、例えば、H.264/MPEG−4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている方式などが挙げられる。
このような符号化方式において、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる最大符号化単位(LCU:Largest Coding Unit、ツリーブロックとも呼ばれる)、最大符号化単位を分割することにより得られる符号化単位(CU:Coding Unit、符号化ノードとも呼ばれる)、および、符号化単位を分割することにより得られるブロックおよびパーティションからなる階層構造により管理され、多くの場合、ブロックを最小単位として符号化される。
また、このような符号化方式においては、通常、入力画像を符号化し、復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像と入力画像との差分データが符号化される。また、予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)と呼ばれる方法が知られている。
イントラ予測においては、同一フレーム内の局所復号画像に基づいて、当該フレームにおける予測画像が順次生成される。具体的には、イントラ予測においては、通常、予測単位(例えば、ブロック)毎に、予め定められた予測方向(予測モード)群に含まれる予測方向から何れかの予測方向が選択されると共に、局所復号画像における参照画素の画素値を、選択された予測方向に外挿することによって、予測対象領域上の予測画素値が生成される。また、インター予測においては、フレーム全体が復号された参照フレーム(復号画像)内の参照画像に対し、動きベクトルを用いた動き補償を適用することによって、予測対象フレーム内の予測画像が予測単位(例えば、ブロック)毎に生成される。
非特許文献1には、復号画像のブロック歪みを低減させるデブロッキングフィルタの後段であって、適応的に決定され符号化データ中に符号化されたパラメータを用いてフィルタ処理を行うループフィルタが2つ開示されている。一つは、フィルタパラメータとしてフィルタ係数を用いたフィルタ処理を行う適応的ループフィルタ(「適応フィルタ」、ALFとも呼ぶ)であり、もう一つは適応的オフセットフィルタ(「適応オフセットフィルタ」「SAO (Sample Adaptive Offset)」とも呼ぶ)である。この適応オフセットフィルタは、デブロッキングフィルタから出力される画像の各画素値に対して、適応的に設定されたオフセットを加算するというものである。
このような適応オフセットフィルタを備えることによって、符号化歪みをより効果的に抑制することができる。
また、非特許文献2には、適応オフセットフィルタのパラメータをツリーブロック単位で格納することが記載されている。
「High efficiency video coding (HEVC) text specification draft 6」,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 7th Meeting: Geneva, CH, 21‐30 November, 2011, JCTVC-H1003dK
「High Efficiency Video Coding (HEVC) text specification draft 7」,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 9th Meeting: Geneva, CH, 27 April ‐ 7 May 2012, 2012, JCTVC-I1003_d5
上述した適応オフセットフィルタは、複数のオフセット値を含むパラメータを適応的に決定し、符号化する。しかしながら、非特許文献1に開示された方法では、オフセット値の符号化データの長さ(符号長)が長くなる場合があり、復号時および符号化時の処理量が増加する。
例えば、非特許文献1では、オフセット値を適応パラメータセット(APS)に格納する場合、ピクチャ内で用いられるオフセット値をメモリに保持しておく必要がある。このとき、メモリはオフセット値の最大ビット長および使われうるオフセットの数に比例した量で確保する必要があるため、オフセット値の最大ビット長が大きくなると必要メモリ量が増大してしまう。
また、非特許文献1では、適応オフセットフィルタのパラメータをツリーブロック単位に格納することも可能である。その場合、適応オフセットフィルタのパラメータは各ツリーブロックの符号化データの前に格納される。しかしながら、符号化装置においては、適応オフセットフィルタのパラメータの導出および符号化は各ツリーブロックの符号化処理の後である。したがって、適応オフセットフィルタのパラメータを符号化する際には、符号化データを遡って再符号化および再度挿入する処理をしなければならなくなる。同様に、適応ループフィルタのパラメータをツリーブロック単位で格納する場合を仮定した場合も、非特許文献1に開示された方法では、符号化データを遡って再符号化及び再度挿入する処理をしなければならなくなる。
また、非特許文献2に開示された方法では、適応オフセットフィルタのパラメータをツリーブロック単位に格納する。この場合、ツリーブロックのサイズが小さくなると、単位面積当たりのパラメータの符号量のオーバーヘッドが大きくなるため、符号化効率が低下してしまう。
本発明は、上記の問題に鑑みてなされたものであり、その目的は適応オフセットフィルタのパラメータの符号化方法を改善し、パラメータに用いるメモリ使用量あるいは符号化の処理量を低減することにある。
上記課題を解決するために本発明に係る画像復号装置は、1つ以上のツリーブロックの組から構成される符号化データであるスライスデータから、ツリーブロックを構成する符号化単位に含まれる予測パラメータと量子化予測残差を復号して生成される予測残差と、予測画像とを加算して復号画像を生成する画像復号装置であって、上記符号化データから、上記ツリーブロックに対応するフィルタ領域のフィルタパラメータを復号する復号手段と、上記復号手段が復号したフィルタパラメータを用いて、フィルタ処理を行うフィルタ手段と、を備え、上記符号化データは、上記ツリーブロックのデータと上記フィルタパラメータとが交互に格納される格納方法によりフィルタパラメータを格納していることを特徴としている。
上記の構成によれば、ツリーブロックのデータとフィルタパラメータとが交互に格納された符号化データを用いるので、フィルタパラメータを効率的に利用することができ、処理量の低減を図り、符号化効率を向上させることができる。
上記復号手段は、上記ツリーブロックの集合の水平方向のサイズを復号すると共に該復号の対象となる対象ツリーブロックの座標が該水平方向のサイズの整数倍以外の場合、対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータからコピーするか否かを示す左マージフラグを復号せずに導出し、該左マージフラグが1の場合、該対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータをコピーして導出するものであってもよい。
上記の構成によれば、復号対象のツリーブロックの座標が、当該ツリーブロックを含むツリーブロックの集合の水平方向のサイズの整数倍以外の場合に、対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータからコピーするか否かを示す左マージフラグを復号せずに導出する。これにより、左マージフラグのオーバーヘッドを低減させることができ、符号化効率を向上させることができる。
上記復号手段は、上記対象ツリーブロックの座標が上記水平方向のサイズの整数倍以外の場合、上記対象ツリーブロックの左に隣接するツリーブロックが、上記対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックではないとき、上記左マージフラグを1として導出し、上記対象ツリーブロックの左に隣接するツリーブロックが、上記対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックであるとき、上記左マージフラグを0として導出するものであってもよい。
上記の構成によれば、復号対象のツリーブロックと、該ツリーブロックの左に隣接しているツリーブロックとが、同じスライスまたはタイルに含まれるか否かによって、左マージフラグを導出するので、左マージフラグを適切に導出することができる。
上記復号手段は、上記対象ツリーブロックの座標が上記水平方向のサイズの整数倍で、かつ、対象ツリーブロックの左に隣接するツリーブロックが対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックではない場合、上記左マージフラグを符号化データから復号するものであってもよい。
上記の構成によれば、ツリーブロックの集合の左端に位置するツリーブロックでは、左マージフラグによりツリーブロックの集合をさらにマージすることが可能である。符号化装置で適切に設定されたマージフラグを符号化データから復号するため高い符号化効率を得る効果を奏する。
本発明に係る画像復号装置では、上記フィルタパラメータは、上記ツリーブロックに含まれる符号化単位の後に格納されていてもよい。
上記の構成によれば、フィルタパラメータを決定後、予測パラメータや量子化予測残差を含む符号化単位を再符号化する必要がないため、処理量を低減することができる。
本発明に係る画像復号装置では、上記フィルタパラメータは、スライス終端を示すフラグの前に格納されていてもよい。
上記の構成によれば、フィルタパラメータを決定後、符号化ツリーブロックCTBを構成する符号化ユニットに含まれる予測パラメータおよび量子化予測残差を再符号化する必要がないため、処理量を低減することができる。
なお、上記スライス終端を示すフラグは、end_of_sliceと標記されることもある。
本発明に係る画像復号装置では、上記フィルタパラメータは、上記ツリーブロックに含まれる符号化ツリーが分割されない場合、かつ、該符号化ツリーの位置が、符号化ツリーブロックCTBの境界に位置する場合、該符号化ツリーにおいて格納されてもよい。
上記の構成によれば、符号化ツリーブロックCTB単位でフィルタパラメータが符号化されるため、CTB単位より細かくフィルタパラメータを符号化する場合に比べ、符号量を低減させることができる。また、フィルタ領域の単位がCTB単位に対応する単位となるため、より細かい単位でフィルタ処理を行う場合に比べフィルタ処理が簡単になる。
本発明に係る画像復号装置では、上記フィルタパラメータは、符号化単位のX座標に符号化ツリーの横幅を加えた座標が符号化ツリーブロックCTBサイズの倍数であり、かつ、符号化単位のY座標に符号化ツリーの縦幅を加えた座標が符号化ツリーブロックCTBサイズの倍数である場合に、該符号化ツリーに格納するものであってもよい。
上記の構成によれば、符号化ツリーブロックCTB単位でフィルタパラメータが符号化されるため、CTB単位より細かくフィルタパラメータを符号化する場合に比べ、符号量を低減させることができる。また、フィルタ領域の単位がCTB単位に対応する単位となるため、より細かい単位でフィルタ処理を行う場合に比べフィルタ処理が簡単になる。
本発明に係る画像復号装置では、上記フィルタ手段は、上記ツリーブロックを含むスライスが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合、該フィルタパラメータを含まないツリーブロックに対応する領域のフィルタ処理を行わないものであってもよい。
上記の構成によれば、符号化ツリーブロックCTBの途中でスライス分割が行われる場合においても、非完了TBを含む分割CTBに関するスライスの復号処理を遅らせることなく、適応ループフィルタ処理を行うことができるため、スループットを向上させることができる。また、処理を遅らせる必要がないため、処理を簡略化することができる。
本発明に係る画像復号装置では、上記フィルタ手段は、上記ツリーブロックを含むスライスが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合、上記ツリーブロックを含むCTBに対応する、該ツリーブロック以外のツリーブロックに含まれるフィルタパラメータを用いて、該ツリーブロックに対応する領域のフィルタ処理を行うものであってもよい。
上記の構成によれば、符号化ツリーブロックCTBの途中でスライス分割が行われる場合においても、適応ループフィルタ処理を行うことができるため、符号化効率を向上させることができる。
本発明に係る画像復号装置では、上記フィルタ手段は、上記スライスの境界にループフィルタを適用するか否かを示すフラグが、適用することを示す場合、上記ツリーブロックを含むスライスが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合も、上記ツリーブロックに対応する領域のフィルタ処理を行い、上記フラグが、スライス境界にループフィルタを適用しないことを示す場合、上記ツリーブロックに対応する領域のフィルタ処理を行わないものであってもよい。
上記の構成によれば、スライス境界にループフィルタ処理を行わない場合には、適応ループフィルタ処理を行わないように制限することでスループットを向上させることができる。また、スライス境界にループフィルタ処理を行う場合には、適応ループフィルタ処理を行うことで符号化効率を向上させることができる。
本発明に係る画像復号装置では、上記フィルタ手段は、上記フィルタパラメータがツリーブロックにインターリーブされている場合、上記ツリーブロックを含むスライスデータが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合も、該ツリーブロックに対応する領域のフィルタ処理を行い、上記フィルタパラメータがツリーブロックとインターリーブされていていない場合、上記ツリーブロックに対応する領域のフィルタ処理を行わないものであってもよい。
上記の構成によれば、LCUモードの場合には適応ループフィルタ処理を行わないように制限することでスループットを向上させることができる。また、APSモードもしくはSHモードの場合には、適応ループフィルタ処理を行うことで符号化効率を向上させることができる。
本発明に係る画像復号装置では、符号化ツリーブロックCTBの途中でスライス分割される分割CTBの場合には、該分割CTBに対応する全てのツリーブロックでフィルタパラメータが含まれておらず、上記フィルタ手段は、上記分割CTBにはフィルタパラメータを用いたフィルタ処理を行わないものであってもよい。
上記の構成によれば、分割CTBにおける適応ループフィルタ処理を簡略化することができるとともに、スループットを向上させることができる。
なお、slice_loop_filter_across_slices_enabled_flagに応じて処理を変更することも可能である。すなわち、slice_loop_filter_across_slices_enabled_flagが1の場合には、分割CTBに対して適応ループフィルタ処理を適用せず、一方、slice_loop_filter_across_slices_enabled_flagが0の場合には、分割CTBに対して適応ループフィルタ処理を適用する。適応ループフィルタパラメータの復号は、LCUモードであり、かつ、slice_loop_filter_across_slices_enabled_flagが1であり、かつ、非分割CTBの完了TBの場合に行う。非分割CTBは、スライスの先頭CTB以外で、かつCTBの途中でスライス分割されない場合、もしくは、スライス先頭CTBかつスライス先頭アドレスがCTBの途中でない場合である。
本発明に係る画像復号装置では、上記フィルタパラメータは、適応オフセットフィルタのフィルタパラメータと、適応空間フィルタのフィルタパラメータとを含むとともに、適応オフセットフィルタと適応空間フィルタとに共通のオンオフフラグを含むものであってもよい。
上記の構成によれば、オンオフフラグlf_lcu_onoff_flagおよびマージフラグlf_merge_left_flagを適応オフセットフィルタ552、適応空間フィルタ553に共通のフラグとすることができ、フラグの符号量を低減することができる。
本発明に係る画像復号装置では、上記フィルタパラメータは、適応オフセットフィルタのフィルタパラメータと、適応空間フィルタのフィルタパラメータとを含み、上記フィルタ手段は、上記符号化ツリーブロックCTBに対応するフィルタ領域に対して、適応オフセットフィルタもしくは適応空間フィルタを選択的に選択してフィルタ処理を行うものであってもよい。
上記の構成によれば、適応オフセットフィルタと適応空間フィルタとを選択的に用いることができ、適応オフセットフィルタの処理後の画像を格納するメモリおよび処理値の画像を転送する転送量を低減することができる。
本発明に係る画像復号装置では、上記符号化データは、上記フィルタパラメータが、適応パラメータセットAPSまたはスライスヘッダに格納される第3の格納方法により、フィルタパラメータを格納しており、上記フィルタ手段は、上記フィルタパラメータが上記第3の格納方法により格納されている場合、上記適応オフセットフィルタの後段で上記適応空間フィルタを適用するものであってもよい。
上記の構成によれば、適応オフセットフィルタの処理後の画像を格納するメモリおよび処理値の画像を転送する転送量を低減することができる。
本発明に係る画像復号装置では、上記フィルタ手段が行うフィルタ処理では、適応オフセットフィルタのY軸方向の参照範囲と、適応空間フィルタのY軸方向の参照範囲が等しいものであってもよい。
上記の構成によれば、上記適応オフセットフィルタのY軸方向の参照範囲と、上記適応空間フィルタのY軸方向の参照範囲が等しいので、インターリーブモードで適応フィルタ処理を行う場合に必要なメモリサイズおよび、転送量を低減することができる。
本発明に係る画像復号装置では、上記符号化データは、上記フィルタパラメータが、適応パラメータセットAPSまたはスライスヘッダに格納される第3の格納方法により、フィルタパラメータを格納しており、フィルタパラメータが上記第3の格納方法により格納されている場合、上記フィルタ手段が行うフィルタ処理では、上記適応空間フィルタのY軸方向の参照範囲を、上記適応オフセットフィルタのY軸方向の参照範囲よりも大きくするものであってもよい。
上記の構成によれば、インターリーブモードでは、適応オフセットフィルタと同じ参照範囲を用い(例えば上下1画素)、非インターリーブモードでは適応オフセットフィルタよりも広い参照範囲(例えば上下3画素)を用いることができ、インターリーブモードにおけるメモリおよび転送量の低減と、非インターリーブモードにおける効果の向上を同時に実現することができる。
本発明に係る画像復号装置では、上記フィルタ手段は、上記適応空間フィルタの参照範囲を決定するバーチャルバウンダリの相対位置を、デブロッキングフィルタの参照範囲により導出するものであってもよい。
上記の構成によれば、インターリーブモードにおける適応空間フィルタのバーチャルバウンダリの位置をDFの参照範囲(distDF、例えば、2もしくは3)に設定することができ、参照画素の制限を必要最小限に抑え符号化効率を向上させることができる。
本発明に係る画像復号装置では、上記フィルタ手段は、上記適応オフセットフィルタと上記適応空間フィルタを選択的に用いてフィルタ処理を行う場合、上記適応空間フィルタの参照範囲を決定するバーチャルバウンダリの相対位置をデブロッキングフィルタの参照範囲から導出し、上記適応オフセットフィルタのフィルタ処理の後段で上記適応空間フィルタのフィルタ処理を行う場合、上記適応空間フィルタの参照範囲を決定するバーチャルバウンダリの相対位置をデブロッキングフィルタの参照範囲と上記適応空間フィルタの参照範囲の和から導出するものであってもよい。
上記の構成によれば、非インターリーブモードのバーチャルバウンダリの位置を、インターリーブモードのバーチャルバウンダリの位置よりもLCUに近づくことになる。これにより、適応オフセットフィルタと適応空間フィルタを選択的に用いる場合と、適応オフセットフィルタと適応空間フィルタを順次実行する場合の両者で、必要なメモリ量を低減させること、および転送量を低減させることができる。
本発明に係る画像復号装置では、上記復号手段は、復号画像のビット深度と、量子化パラメータに依存した閾値とを用いて、適応オフセットフィルタの逆量子化を行うものであってもよい。
上記の構成によれば、ビット深度bitDepthと量子化パラメータqpに依存した閾値bitDepthTh1を用いて、適応オフセットフィルタのオフセットの逆量子化を行う。
これにより、オフセットの符号化に必要な符号量と、オフセットの精度のバランスを最適化することができ符号化効率を向上させることができる。
これにより、オフセットの符号化に必要な符号量と、オフセットの精度のバランスを最適化することができ符号化効率を向上させることができる。
本発明に係る画像復号装置では、上記復号手段は、復号画像のビット深度と、符号化ツリーブロックCTBサイズに依存した閾値を用いて、適応オフセットフィルタの逆量子化を行うものであってもよい。
上記の構成によれば、ビット深度bitDepthとSAOユニットのサイズに依存した閾値bitDepthTh2を用いて、適応オフセットフィルタのオフセットの逆量子化を行うことになる。これにより、オフセットの符号化に必要な符号量と、オフセットの精度のバランスを最適化することができ符号化効率を向上させることができる。
本発明に係る画像復号装置では、上記復号手段は、上記フィルタパラメータがツリーブロックにインターリーブされている場合と、上記フィルタパラメータがツリーブロックにインターリーブされている場合とに依存した閾値を用いて、適応オフセットフィルタの逆量子化を行うものであってもよい。
上記の構成によれば、フィルタパラメータがツリーブロックにインターリーブされている場合と、インターリーブされていない場合とで異なるオフセットの逆量子化方法を用いる。これにより、インターリーブモードでは量子化精度をより適応的に変更することができ、符号化効率を向上させることができる。また、処理量と符号化効率のバランスを向上させることができる。
上記課題を解決するために、本発明に係る画像フィルタ装置は、複数の第1単位領域から構成される入力画像の各画素値に、複数のオフセットの中から選択したオフセットを加算する画像フィルタ装置であって、上記第1単位領域に含まれる画素において、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記第1単位領域毎に決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、上記第1単位領域に含まれる画素の画素値に加算するフィルタ手段と、上記符号化データからフィルタパラメータを復号する復号手段と、を備え、上記フィルタパラメータは、上記フィルタ手段が用いるオフセットを含むオフセット情報を第2単位領域毎に含むとともに、上記フィルタパラメータは、上記第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で符号化データに格納されていることを特徴としている。
上記の構成によれば、フィルタパラメータの格納方法が、第1単位領域および該第1単位領域の集合とは独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかとなる。これにより、フィルタパラメータに応じて格納方法を異ならせることができ、フィルタパラメータに用いるメモリ使用量あるいは符号化の処理量を低減することができる。
本発明に係る画像フィルタ装置では、上記フィルタ手段が、上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合よりも狭い値域で表現されるオフセットを用いるものであってもよい。
第1の格納方法の場合、ピクチャあるいはスライス内のSAOパラメータを多数保持するために、第2の格納方法の場合よりも多くのメモリが必要となる。しかしながら、上記の構成によれば、第1の格納方法において個々のオフセットの表現に要するビット長を小さくすることができるので、SAOパラメータを保持するためのメモリ量を削減することができる。
本発明に係る画像フィルタ装置では、上記フィルタ手段が、上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合よりも狭い値域で表現されるオフセットを用いるものであってもよい。
第2の格納方法の場合、各ツリーブロック符号化時には第2単位領域およびフィルタパラメータ情報の挿入処理、すなわち、先に生成された符号化データの途中に、別の符号化データを挿入し、以降の符号化データの位置を繰り下げる処理を実行する必要が生じる。しかしながら、上記の構成によれば、挿入する符号量を小さくすることでき、処理量を軽減することができる。
本発明に係る画像フィルタ装置では、上記クラス分類方法には、対象画素について、該画素周辺のエッジの状態に基づいてクラス分類を行う第1のクラス分類方法と、対象画素の画素値に基づいてクラス分類を行う第2のクラス分類方法とが含まれており、上記フィルタ手段が加算するオフセットの値域は、上記第2のクラス分類方法を用いて加算するオフセットを決定された場合と、上記第1のクラス分類方法を用いて加算するオフセット決定された場合とで同じ幅であってもよい。
オフセットを保持するメモリ領域を、値域が広いバンドオフセットのビット長に合わせて確保される。よって、上記の構成によれば、バンドオフセットとエッジオフセットとにおけるオフセットの値域のビット長が揃えられるので、メモリ領域を最大限に活用することができる。
本発明に係る画像フィルタ装置では、上記クラス分類方法には、上記クラス毎にオフセットの値域が異なるクラス分類方法が含まれていてもよい。
上記の構成によれば、クラス毎のオフセット値の範囲の傾向が異なる場合であっても適切な値域を割り当てることができ、フィルタパラメータの符号量を削減することができる。
本発明に係る画像フィルタ装置では、上記フィルタ手段が加算するオフセットの値域の最大値は、2のべき乗から2を引いた数となっていてもよい。
上記の構成によれば、オフセットの値域を(2^n)-1の形で表せる値域とする。これにより、拡張ゴロム符号を用いたビット列の最大長を抑制することができる。したがって、符号化データの格納に要するメモリ量および最終的な符号化データの符号量を削減することができる。
本発明に係る画像フィルタ装置では、上記フィルタパラメータには、上記第2単位領域の大きさを表す第2単位領域サイズが含まれていてもよい。
上記の構成によれば、第2単位領域のサイズを用いてオフセットの加算処理を行うことができる。
本発明に係る画像フィルタ装置では、上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2単位領域サイズは、水平方向の大きさおよび垂直方向の大きさを表す値を含み、上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2単位領域サイズは、少なくとも水平方向の大きさを表す値を含んでいてもよい。
上記の構成によれば、フィルタパラメータの格納方法に応じて第2単位領域のサイズが設定される。これにより、オフセット情報とツリーブロックとの対応関係を適切にして、必要なメモリ量を低減することができる。
本発明に係る画像フィルタ装置では、上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合と前記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合とのいずれの場合でも参照可能なパラメータセットに、上記第2単位領域サイズとして、水平方向の大きさおよび垂直方向の大きさを表す値が含まれていてもよい。
上記の構成によれば、第2単位領域のサイズ指定を、スライスヘッダや適応フィルタパラメータセットではなく、上位のパラメータセット、例えば、シーケンスパラメータセットに格納することができる。
本発明に係る画像フィルタ装置では、符号化データで使用可能な技術要素を定義するプロファイル、または、符号化データを復号する際に必須となる諸性能を定義するレベルに基づいて上記第2単位領域のサイズが決定されてもよい。
上記の構成によれば、第2単位領域のサイズ指定を、符号化データに直接含めず、プロファイルまたはレベルに基づいて設定するように構成することができる。
本発明に係る画像フィルタ装置では、上記プロファイルまたは上記レベルに基づいて定められた第2単位領域サイズを、上記第2単位領域のサイズの最小値または初期値とするものであってもよい。
上記の構成によれば、プロファイルまたはレベルに基づいて設定される第2単位領域のサイズを設定可能な最小値または初期値とすることができる。
本発明に係る画像フィルタ装置では、上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2単位領域の垂直方向の大きさは上記第1単位領域の垂直方向の大きさと等しいものであってもよい。
上記の構成によれば、第2単位領域のサイズを適切に決定することができる。
上記課題を解決するために、本発明に係る画像復号装置は、符号化データから復号した予測残差に、生成した予測画像を加算して復号画像を生成する画像復号装置であって、上記予測残差に上記予測画像を加算した加算画像に対し、単位領域毎にオフセットを加算するオフセット加算手段と、上記オフセット加算手段がオフセットを加算した画像を復号画像として出力する出力手段と、を備え、上記オフセット加算手段には、上記単位領域に含まれる画素において、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記単位領域毎に決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、上記単位領域に含まれる画素の画素値に加算するフィルタ手段と、上記符号化データからフィルタパラメータを復号する復号手段と、が備えられており、上記フィルタパラメータは、上記フィルタ手段が用いるオフセットを含むオフセット情報を第2単位領域毎に含んでいるとともに、上記フィルタパラメータは、第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で符号化データに格納されていることを特徴としている。
上記の構成によれば、フィルタパラメータの格納方法が、第1単位領域および該第1単位領域の集合とは独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかとなる。これにより、フィルタパラメータに応じて格納方法を異ならせることができ、フィルタパラメータに用いるメモリ使用量あるいは符号化の処理量を低減することができる。
上記課題を解決するために、本発明に係る画像符号化装置は、生成した予測画像と原画像との差分である予測残差を符号化することによって符号化データを生成する画像符号化装置であって、原画像を符号化し、復号した復号画像に対し、単位領域毎にオフセットを加算するオフセット加算手段と、上記オフセット加算手段がオフセットを加算した画像から上記予測画像を生成する予測画像生成手段と、上記予測画像生成手段が生成した予測画像と原画像との差分である予測残差を符号化する符号化手段と、を備え、上記オフセット加算手段には、上記単位領域に含まれる画素において、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記単位領域毎に決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、上記単位領域に含まれる画素の画素値に加算するフィルタ手段と、が備えられており、上記符号化手段は、上記フィルタ手段が加算するオフセットを含むオフセット情報が、第2単位領域毎に含まれているフィルタパラメータを符号化するとともに、該フィルタパラメータは、第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で符号化データに格納することを特徴としている。
上記の構成によれば、フィルタパラメータの格納方法が、第1単位領域および該第1単位領域の集合とは独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかとなる。これにより、フィルタパラメータに応じて格納方法を異ならせることができ、フィルタパラメータに用いるメモリ使用量あるいは符号化の処理量を低減することができる。
上記課題を解決するために、本発明に係る符号化データのデータ構造は、画像復号装置において復号される、予測画像と原画像との差分である予測残差が符号化された符号化データのデータ構造であって、画素値データと、上記画素値データが示す画素値に加算するオフセットを決定するためのクラス分類方法を選択するためのクラス分類方法選択データと、上記画像復号装置におけるフィルタ手段で用いられる上記オフセットを含むフィルタパラメータと、を含み、上記フィルタパラメータは、第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で格納されていることを特徴としている。
上記の構成によれば、フィルタパラメータの格納方法が、第1単位領域および該第1単位領域の集合とは独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかとなる。これにより、フィルタパラメータに応じて格納方法を異ならせることができ、フィルタパラメータに用いるメモリ使用量あるいは符号化の処理量を低減することができる。
以上のように、本発明に係る画像フィルタ装置は、第1単位領域に含まれる画素を、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記第1単位領域毎に決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、上記第1単位領域に含まれる画素の画素値に加算するフィルタ手段と、上記符号化データからフィルタパラメータを復号する復号手段と、を備え、上記フィルタパラメータは、上記フィルタ手段が用いるオフセットを含むオフセット情報を第2単位領域毎に含んでいるとともに、上記フィルタパラメータは、上記第1単位領域からも該第1単位領域の集合からも独立したパラメータセットに格納される第1のパラメータ格納方法か、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法か、の何れかの格納方法で符号化データに格納されている構成である。
これにより、フィルタパラメータに応じて格納方法を異ならせることができ、フィルタパラメータに用いるメモリ使用量あるいは符号化の処理量を低減することができるという効果を奏する。
<第1の実施形態>
(符号化データ#1)
本実施形態に係る動画像符号化装置2および動画像復号装置1の詳細な説明に先立って、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1のデータ構造について説明する。
(符号化データ#1)
本実施形態に係る動画像符号化装置2および動画像復号装置1の詳細な説明に先立って、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1のデータ構造について説明する。
図2は、符号化データ#1におけるデータの階層構造を示す図である。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図2の(a)〜(e)は、それぞれ、シーケンスSEQを既定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、ツリーブロック(Tree block)TBLKを規定するツリーブロックレイヤ、ツリーブロックTBLKに含まれる符号化単位(Coding Unit;CU)を規定するCUレイヤを示す図である。
(シーケンスレイヤ)
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図2の(a)に示すように、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、適応パラメータセットAPS(Adaptation Parameter Set)、ピクチャPICT1〜PICTNP(NPはシーケンスSEQに含まれるピクチャの総数)、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図2の(a)に示すように、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、適応パラメータセットAPS(Adaptation Parameter Set)、ピクチャPICT1〜PICTNP(NPはシーケンスSEQに含まれるピクチャの総数)、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装置1が参照する符号化パラメータの集合が規定されている。SPSの詳細については後述する。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために動画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
適応パラメータセットAPSは、対象シーケンス内の各スライスを復号するために動画像復号装置1が参照する符号化パラメータの集合が規定されている。APSの詳細については後述する。なお、APSは複数存在してもよい。その場合、対象シーケンス内の各スライスから複数のAPSの何れかを選択する。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図2の(b)に示すように、ピクチャヘッダPH、および、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図2の(b)に示すように、ピクチャヘッダPH、および、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS1〜SNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ#1に含まれるデータであって、添え字を付している他のデータについても同様である。
ピクチャヘッダPHには、対象ピクチャの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれている。なお、符号化パラメータ群は、必ずしもピクチャヘッダPH内に直接含んでいる必要はなく、例えばピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含むことで、間接的に含めても良い。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図2の(c)に示すように、スライスヘッダSH、および、ツリーブロックTBLK1〜TBLKNC(NCはスライスSに含まれるツリーブロックの総数)のシーケンスを含んでいる。
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図2の(c)に示すように、スライスヘッダSH、および、ツリーブロックTBLK1〜TBLKNC(NCはスライスSに含まれるツリーブロックの総数)のシーケンスを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記シーケンスレイヤに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)、適応パラメータセットAPSへの参照(aps_id)を含んでいても良い。
また、スライスヘッダSHには、動画像復号装置1の備える適応オフセットフィルタによって参照されるSAOパラメータSAOPが含まれている。SAOパラメータSAOPの詳細については後述する。
なお、スライスはピクチャの組(シーケンス)から構成され、スライスは符号化ツリーブロック(CTB:Coding Tree block)の組から構成される。CTBは、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。スライスレイヤを構成する符号化データの粒度は、CTBよりも小さい単位とすることができる。すなわち、スライスレイヤはCTBの途中から開始すること、及び、CTBの途中で終了することができる。以下、CTBの途中にスライス境界がないCTBを非分割CTB、CTBの途中にスライス境界があるCTBを分割CTBと呼ぶ。スライスレイヤの粒度は、SliceGranularityにより定まる。
(ツリーブロックレイヤ)
ツリーブロックレイヤでは、処理対象の符号化ツリーブロックを復号するために動画像復号装置1が参照するデータの集合が規定されている。ツリーブロックレイヤの符号化データは、ツリーブロックTBLK(以下、対象ツリーブロックとも称する)から構成される。
ツリーブロックレイヤでは、処理対象の符号化ツリーブロックを復号するために動画像復号装置1が参照するデータの集合が規定されている。ツリーブロックレイヤの符号化データは、ツリーブロックTBLK(以下、対象ツリーブロックとも称する)から構成される。
ツリーブロックTBLKは、ツリーブロックヘッダTBLKHと、符号化単位情報CU1〜CUNL(NLはツリーブロックTBLKに含まれる符号化単位情報の総数)とを含む。ここで、まず、ツリーブロックTBLKと、符号化単位情報CUとの関係について説明すると次のとおりである。
ツリーブロックTBLKは、イントラ予測またはインター予測、および、変換の各処理で用いるブロックサイズを特定するためのユニットに分割される。
ツリーブロックTBLKの上記ユニットは、再帰的な4分木分割により分割されている。この再帰的な4分木分割により得られる木構造のノードのことを符号化ツリー(coding tree)と称する。
以下、符号化ツリーは、中間ノードの場合には、さらに符号化ツリーを含む形で再帰的に分割される。符号化ツリーが末端のノードであるリーフ(leaf)の場合には、符号化ノード(coding node)として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位(CU)とも称する。
つまり、符号化単位情報(以下、CU情報と称する)CU1〜CUNLは、ツリーブロックTBLKを再帰的に4分木分割して得られる各符号化ノード(符号化単位)に対応する情報である。
また、符号化ツリーのルート(root)は、ツリーブロックTBLKに対応付けられる。換言すれば、ツリーブロックTBLKは、複数の符号化ノードを再帰的に含む4分木分割の木構造の最上位ノードに対応付けられる。
なお、各符号化ノードに対応する画像領域のサイズは、当該符号化ノードが直接に属する符号化ノード(すなわち、当該符号化ノードの1階層上位のノードのユニット)のサイズの縦横とも半分である。
また、ツリーブロックTBLKのサイズ、および、各符号化ノードのとり得るサイズは、符号化データ#1のシーケンスパラメータセットSPSに含まれる、最小符号化ノードのサイズ指定情報(log2_min_coding_block_size_minus3)および最大符号化ノードと最小符号化ノードの階層深度の差分(log2_diff_max_min_coding_block_size)に依存する。例えば、最小符号化ノードのサイズが8×8画素であって、最大符号化ノードと最小符号化ノードの階層深度の差分が3である場合、ツリーブロックTBLKのサイズが64×64画素であって、符号化ノードのサイズは、4種類のサイズ、すなわち、64×64画素、32×32画素、16×16画素、および、8×8画素の何れかをとり得る。
(ツリーブロックヘッダ)
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、図2の(d)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、図2の(d)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
ツリーブロック分割情報SP_TBLKは、ツリーブロックを分割するための符号化ツリーを表す情報であり、具体的には、対象ツリーブロックに含まれる各CUの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報である。
なお、ツリーブロック分割情報SP_TBLKは、CUの形状やサイズを明示的に含んでいなくてもよい。例えばツリーブロック分割情報SP_TBLKは、対象ツリーブロック全体またはツリーブロックの部分領域を四分割するか否かを示すフラグ(split_coding_unit_flag)の集合であってもよい。この場合、ツリーブロックの形状やサイズを併用することで各CUの形状やサイズを特定できる。
また、量子化パラメータ差分Δqpは、対象ツリーブロックにおける量子化パラメータqpと、当該対象ツリーブロックの直前に符号化されたツリーブロックにおける量子化パラメータqp’との差分qp−qp’である。
(CUレイヤ)
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ここで、CU情報CUに含まれるデータの具体的な内容の説明をする前に、CUに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートとなる。予測ツリーおよび変換ツリーについて説明すると次のとおりである。
予測ツリーにおいては、符号化ノードが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ノードを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU)とも称する。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。
イントラ予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)と、N×Nとがある。
また、インター予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)、2N×N、2N×nU、2N×nD、N×2N、nL×2N、nR×2N、および、N×Nなどがある。なお、2N×nUは、2N×2Nの符号化ノードを上から順に2N×0.5Nと2N×1.5Nの2領域に分割することを示す。2N×nDは、2N×2Nの符号化ノードを上から順に2N×1.5Nと2N×0.5Nの2領域に分割することを示す。nL×2Nは、2N×2Nの符号化ノードを左から順に0.5N×2Nと1.5N×2Nの2領域に分割することを示す。nR×2Nは、2N×2Nの符号化ノードを左から順に1.5N×2Nと0.5N×1.5Nの2領域に分割することを示す。
また、変換ツリーにおいては、符号化ノードが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ノードを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。
変換ツリーにおける分割には、符号化ノードと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
(CU情報のデータ構造)
続いて、図2の(e)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。図2の(e)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、PT情報PTI、および、TT情報TTIを含んでいる。
続いて、図2の(e)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。図2の(e)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、PT情報PTI、および、TT情報TTIを含んでいる。
スキップフラグSKIPは、対象のCUについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグSKIPの値が1の場合、すなわち、対象CUにスキップモードが適用されている場合、そのCU情報CUにおけるPT情報PTIの一部、および、TT情報TTIは省略される。なお、スキップフラグSKIPは、Iスライスでは省略される。
PT情報PTIは、CUに含まれるPTに関する情報である。換言すれば、PT情報PTIは、PTに含まれる1または複数のPUそれぞれに関する情報の集合であり、動画像復号装置1により予測画像を生成する際に参照される。PT情報PTIは、図2の(e)に示すように、予測タイプ情報PType、および、予測情報PInfoを含んでいる。
予測タイプ情報PTypeは、対象PUについての予測画像生成方法として、イントラ予測を用いるのか、または、インター予測を用いるのかを指定する情報である。
予測情報PInfoは、予測タイプ情報PTypeが何れの予測方法を指定するのかに応じて、イントラ予測情報、または、インター予測情報より構成される。以下では、イントラ予測が適用されるPUをイントラPUとも呼称し、インター予測が適用されるPUをインターPUとも呼称する。
また、予測情報PInfoは、対象PUの形状、サイズ、および、位置を指定する情報が含まれる。上述のとおり予測画像の生成は、PUを単位として行われる。予測情報PInfoの詳細については後述する。
TT情報TTIは、CUに含まれるTTに関する情報である。換言すれば、TT情報TTIは、TTに含まれる1または複数のTUそれぞれに関する情報の集合であり、動画像復号装置1により残差データを復号する際に参照される。なお、以下、TUのことをブロックと称することもある。
TT情報TTIは、図2の(e)に示すように、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TT、および、量子化予測残差QD1〜QDNT(NTは、対象CUに含まれるブロックの総数)を含んでいる。
TT分割情報SP_TTは、具体的には、対象CUに含まれる各TUの形状、サイズ、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TTは、対象となるノードの分割を行うのか否かを示す情報(split_transform_unit_flag)の集合により構成できる。
また、例えば、CUのサイズが、64×64の場合、分割により得られる各TUは、32×32画素から4×4画素までのサイズをとり得る。
各量子化予測残差QDは、動画像符号化装置2が以下の処理1〜3を、処理対象のブロックである対象ブロックに施すことによって生成した符号化データである。
処理1:符号化対象画像から予測画像を減算した予測残差を周波数領域に直交変換(DCT変換(Discrete Cosine Transform)またはDST変換(Discrete Sine Transform)する;
処理2:処理1にて得られた変換係数を量子化する;
処理3:処理2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表す(QP=2^(qp/6))。
処理2:処理1にて得られた変換係数を量子化する;
処理3:処理2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表す(QP=2^(qp/6))。
(予測情報PInfo)
上述のとおり、予測情報PInfoには、インター予測情報およびイントラ予測情報の2種類がある。
上述のとおり、予測情報PInfoには、インター予測情報およびイントラ予測情報の2種類がある。
インター予測情報には、動画像復号装置1が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、インター予測情報には、対象CUの各インターPUへの分割パターンを指定するインターPU分割情報、および、各インターPUについてのインター予測パラメータが含まれる。
インター予測パラメータには、参照画像インデックスと、推定動きベクトルインデックスと、動きベクトル残差とが含まれる。
一方、イントラ予測情報には、動画像復号装置1が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、イントラ予測情報には、対象CUの各イントラPUへの分割パターンを指定するイントラPU分割情報、および、各イントラPUについてのイントラ予測パラメータが含まれる。イントラ予測パラメータは、各イントラPUについてのイントラ予測方法(予測モード)を指定するためのパラメータである。
(シーケンスパラメータセットSPS)
図4は、本実施形態に係る符号化データ#1のシーケンスパラメータセットSPS(図4においてsequence_parameter_set_rbsp()と表記)に含まれるシンタックス要素の一部を示す。
図4は、本実施形態に係る符号化データ#1のシーケンスパラメータセットSPS(図4においてsequence_parameter_set_rbsp()と表記)に含まれるシンタックス要素の一部を示す。
profile_idx、level_idxはそれぞれビットストリームが適合するプロファイルとレベルを示す。seq_parameter_set_idは、パラメータセットの識別子を示す。chroma_format_idcは、対象シーケンスのカラーフォーマットを示す。pic_width_inluma_samplesとpic_height_in_luma_samplesはそれぞれ対象シーケンスに含まれるピクチャサイズの輝度画素単位での縦または横の長さを示す。sample_adaptive_offset_enable_flagは、対象シーケンスの復号時に適応オフセットフィルタを適用するか否かを示す。adaptive_loop_filter_enable_flagは、対象シーケンスの復号時に適応フィルタを適用するか否かを示す。
(適応パラメータセットAPS)
図5は、本実施形態に係る符号化データ#1の適応パラメータセットAPS(図5においてaps_rbsp()と表記)に含まれるシンタックス要素の一部を示す。aps_idは、APSの識別子である。
図5は、本実施形態に係る符号化データ#1の適応パラメータセットAPS(図5においてaps_rbsp()と表記)に含まれるシンタックス要素の一部を示す。aps_idは、APSの識別子である。
aps_sao_interleaving_flagは、適応オフセットフィルタにより参照されるパラメータ(SAOパラメータ)がツリーブロック(LCU)の符号化データにインターリーブして符号化されているか否かを示す。つまり、aps_sao_interleaving_flagの値が偽であれば、SAOパラメータはツリーブロックの符号化データにインターリーブされておらず、APS内に存在することを示す。aps_sao_interleaving_flagの値が真であれば、SAOパラメータはツリーブロックの符号化データにインターリーブされて符号化されており、対象APS内には存在しないことを示す。なお、データをインターリーブするとは、複数種類のデータを小単位に分割し、所定の順序で配置することを意味する。例えば、SAOのパラメータとツリーブロックの符号化データとが交互に配置されるように符号化する場合を言う。
aps_sample_adaptive_offset_flagは、SAOパラメータがインターリーブされていない場合に符号化されるフラグであり、APSを参照するスライスにおいて適応オフセットフィルタが適用されるか否かを示す。aps_sao_param()は、SAOパラメータに対応するシンタックスである。
(APSSAOパラメータSAOP_A)
図6は、本実施形態に係る符号化データ#1のAPSSAOパラメータSAOP_A(図6においてaps_sao_param()と表記)に含まれる各シンタックス要素を示す図である。
図6は、本実施形態に係る符号化データ#1のAPSSAOパラメータSAOP_A(図6においてaps_sao_param()と表記)に含まれる各シンタックス要素を示す図である。
APSSAOパラメータSAOP_Aは、概略的には、所定の領域内(ピクチャまたはスライス)の各ツリーブロックにおけるAPSSAOユニットの集合を含む。ここで、APSSAOユニットは適応オフセットフィルタ処理に用いられるフィルタの情報を含むシンタックスであり、詳細は後述する。
なお、上記所定の領域内の必ずしも全てのツリーブロックに対するAPSSAOユニットおよびAPSSAOオフセットがAPSSAOパラメータSAOP_Aに含まれるわけではなく、一部のツリーブロックについては他のツリーブロックに適用されたAPSSAOユニットおよびAPSSAOオフセットから複製あるいは参照して適用してもよい。例えば、図6のシンタックスにおいて、sao_one_luma_unit_flag、sao_one_cb_unit_flag、sao_one_cr_unit_flagは、それぞれ、対応するプレーン(順に輝度プレーン、色差Cbプレーン、色差Crプレーン)において、対象領域内の全ツリーブロックで共通のAPSSAOオフセットを適用するか否かを示す。また、sao_repeat_row_flagは、同一ツリーブロックライン内の全てのツリーブロックに適用するAPSSAOユニットが、各ツリーブロックの上方隣接ツリーブロックにおけるAPSSAOユニットと同一であり、複製あるいは参照して適用されることを示す。
その他、sao_cb_enable_flagとsao_cr_enable_flagは、それぞれ、ピクチャの対応する色差プレーン(CbプレーンとCrプレーン)において適応フィルタを適用するか否かを示すフラグである。また、ピクチャの幅と高さにそれぞれ含まれるツリーブロックの数は、sao_num_lcu_in_width_minus1とsao_num_lcu_in_height_minus1に基づいて導出される。
(APSSAOユニット)
図7は、本実施形態に係る符号化データ#1のAPSSAOユニット(図7においてsao_unit_vlc()と表記)のシンタックスを示す図である。APSSAOユニットは、SAOの処理単位を表し、1つ以上のツリーブロックと同じ領域に関連付けられるシンタックスである。APSSAOユニットが処理対象とする画像上の領域は、対応するツリーブロックが示す領域となる。APSSAOユニットは、概略的には、APSSAOオフセット情報(sao_offset_vlc())、および、APSSAOオフセット情報のマージ制御情報(sao_merge_up_flag, sao_run_diff)をシンタックス要素として含む。sao_merge_up_flagは、対象ツリーブロックのAPSSAOオフセット情報を、対象ツリーブロックの上方隣接ツリーブロックから複製または参照するか否かを示すフラグである。また、sao_run_diffは、同一ツリーブロックライン内で対象ツリーブロックと同一のAPSSAOオフセットを適用する、対象ツリーブロックに後続するツリーブロックの数を導出する際に用いられる。
図7は、本実施形態に係る符号化データ#1のAPSSAOユニット(図7においてsao_unit_vlc()と表記)のシンタックスを示す図である。APSSAOユニットは、SAOの処理単位を表し、1つ以上のツリーブロックと同じ領域に関連付けられるシンタックスである。APSSAOユニットが処理対象とする画像上の領域は、対応するツリーブロックが示す領域となる。APSSAOユニットは、概略的には、APSSAOオフセット情報(sao_offset_vlc())、および、APSSAOオフセット情報のマージ制御情報(sao_merge_up_flag, sao_run_diff)をシンタックス要素として含む。sao_merge_up_flagは、対象ツリーブロックのAPSSAOオフセット情報を、対象ツリーブロックの上方隣接ツリーブロックから複製または参照するか否かを示すフラグである。また、sao_run_diffは、同一ツリーブロックライン内で対象ツリーブロックと同一のAPSSAOオフセットを適用する、対象ツリーブロックに後続するツリーブロックの数を導出する際に用いられる。
(APSSAOオフセット情報)
図8は、本実施形態に係る符号化データ#1のAPSSAOオフセット情報(図8においてsao_offset_vlc()と表記)のシンタックスを示す図である。APSSAOオフセット情報は、オフセットタイプを示すインデックス(オフセットタイプ、sao_type_idx)、画素値域内でオフセットを適用するバンドの位置を示すインデックス(バンドオフセット位置、sao_band_position)、オフセットの値(sao_offset)をシンタックス要素として含む。sao_band_positionは、SAOのタイプがバンドオフセット(BO)である場合に用いられる。なお、符号化データ中のオフセットの値は、量子化された値や、線形予測等の予測を用いてオフセット値が導出できる予測残差として符号化されていても良い。sao_type_idxとsao_offsetについては後述する。
図8は、本実施形態に係る符号化データ#1のAPSSAOオフセット情報(図8においてsao_offset_vlc()と表記)のシンタックスを示す図である。APSSAOオフセット情報は、オフセットタイプを示すインデックス(オフセットタイプ、sao_type_idx)、画素値域内でオフセットを適用するバンドの位置を示すインデックス(バンドオフセット位置、sao_band_position)、オフセットの値(sao_offset)をシンタックス要素として含む。sao_band_positionは、SAOのタイプがバンドオフセット(BO)である場合に用いられる。なお、符号化データ中のオフセットの値は、量子化された値や、線形予測等の予測を用いてオフセット値が導出できる予測残差として符号化されていても良い。sao_type_idxとsao_offsetについては後述する。
(SHSAOパラメータSAOP_S)
図9は、本実施形態に係る符号化データ#1のスライスヘッダSH(図9においてslice_header()と表記)の一部として含まれる、SHSAOパラメータSAOP_Sのシンタックス要素を示す図である。SHSAOパラメータSAOP_Sは、概略的には、各ツリーブロックに対する適応オフセットフィルタ処理のパラメータの格納方法を示す情報である。slice_sao_interleaving_flagは、各ツリーブロックに対して適用する適応オフセットフィルタのパラメータを、スライスデータ内の各ツリーブロックの符号化データにインターリーブして格納しているか否かを示す。このとき、インターリーブして格納される適応オフセットフィルタのパラメータを、CTBSAOパラメータSAOP_Cと呼ぶ。slice_sao_interleaving_flagの値が偽であれば、SAOパラメータはツリーブロックの符号化データにインターリーブされていないことを示す。slice_sao_interleaving_flagの値が真であれば、SAOパラメータはツリーブロックの符号化データにインターリーブされて符号化されていることを示す。slice_sao_interleaving_flagの値が偽の場合には、SAOパラメータを参照すべきAPSが、対象スライスヘッダSH内のシンタックスaps_idによって指定される。
図9は、本実施形態に係る符号化データ#1のスライスヘッダSH(図9においてslice_header()と表記)の一部として含まれる、SHSAOパラメータSAOP_Sのシンタックス要素を示す図である。SHSAOパラメータSAOP_Sは、概略的には、各ツリーブロックに対する適応オフセットフィルタ処理のパラメータの格納方法を示す情報である。slice_sao_interleaving_flagは、各ツリーブロックに対して適用する適応オフセットフィルタのパラメータを、スライスデータ内の各ツリーブロックの符号化データにインターリーブして格納しているか否かを示す。このとき、インターリーブして格納される適応オフセットフィルタのパラメータを、CTBSAOパラメータSAOP_Cと呼ぶ。slice_sao_interleaving_flagの値が偽であれば、SAOパラメータはツリーブロックの符号化データにインターリーブされていないことを示す。slice_sao_interleaving_flagの値が真であれば、SAOパラメータはツリーブロックの符号化データにインターリーブされて符号化されていることを示す。slice_sao_interleaving_flagの値が偽の場合には、SAOパラメータを参照すべきAPSが、対象スライスヘッダSH内のシンタックスaps_idによって指定される。
slice_sample_adaptiveoffset_flagは、対象スライスにおいて、適応オフセットフィルタ処理が有効か否かを示す。sao_cb_enable_flagとsao_cr_enable_flagは、APSSAOパラメータSAOP_Aに含まれる同名のシンタックスと同一である。
(CTBSAOパラメータSAOP_C)
図10は、本実施形態に係る符号化データ#1のスライスデータSD(図10においてslice_data()と表記)の一部として含まれる、CTBSAOパラメータSAOP_Cの各シンタックス要素を示す図である。CTBSAOパラメータSAOP_Cは、概略的には、CTBSAOユニット情報(sao_unit_cabac())およびCTBSAOオフセット情報(sao_unit_cabac())をシンタックス要素として含む。
図10は、本実施形態に係る符号化データ#1のスライスデータSD(図10においてslice_data()と表記)の一部として含まれる、CTBSAOパラメータSAOP_Cの各シンタックス要素を示す図である。CTBSAOパラメータSAOP_Cは、概略的には、CTBSAOユニット情報(sao_unit_cabac())およびCTBSAOオフセット情報(sao_unit_cabac())をシンタックス要素として含む。
(CTBSAOユニット)
図11は、本実施形態に係る符号化データ#1のCTBSAOユニット(図11においてsao_unit_cabac()と表記)のシンタックスを示す図である。CTBSAOユニットはSAOの処理単位を表し、1つ以上のツリーブロックに関連付けられるシンタックスであり、対応するツリーブロックの符号化データの付近に配置される。CTBSAOユニットが処理対象とする画像上の領域は、対応するツリーブロックが示す領域となる。図30は、本実施形態に係る符号化データ#1のツリーブロック(図30においてcoding_tree()と表記)のシンタックスを示す図である。CTBSAOユニットは、概略的には、CTBSAOオフセット情報(sao_offset_cabac())、および、CTBSAOオフセット情報のマージ制御情報(sao_merge_left_flag, sao_merge_up_flag)をシンタックス要素として含む。左マージフラグsao_merge_left_flagは、対象ツリーブロックのCTBSAOオフセット情報を、対象ツリーブロックの左方隣接ツリーブロックから複製するか否かを示すフラグである。上マージフラグsao_merge_up_flagは、APSSAOユニットに含まれる同名のシンタックスと同一である。
図11は、本実施形態に係る符号化データ#1のCTBSAOユニット(図11においてsao_unit_cabac()と表記)のシンタックスを示す図である。CTBSAOユニットはSAOの処理単位を表し、1つ以上のツリーブロックに関連付けられるシンタックスであり、対応するツリーブロックの符号化データの付近に配置される。CTBSAOユニットが処理対象とする画像上の領域は、対応するツリーブロックが示す領域となる。図30は、本実施形態に係る符号化データ#1のツリーブロック(図30においてcoding_tree()と表記)のシンタックスを示す図である。CTBSAOユニットは、概略的には、CTBSAOオフセット情報(sao_offset_cabac())、および、CTBSAOオフセット情報のマージ制御情報(sao_merge_left_flag, sao_merge_up_flag)をシンタックス要素として含む。左マージフラグsao_merge_left_flagは、対象ツリーブロックのCTBSAOオフセット情報を、対象ツリーブロックの左方隣接ツリーブロックから複製するか否かを示すフラグである。上マージフラグsao_merge_up_flagは、APSSAOユニットに含まれる同名のシンタックスと同一である。
(CTBSAOオフセット情報)
図12は、本実施形態に係る符号化データ#1のCTBSAOオフセット情報(図12においてsao_offset_cabac()と表記)のシンタックスを示す図である。CTBSAOオフセット情報は、シンタックス要素としてsao_type_idx、sao_band_position、sao_offsetを含み、それぞれ、APSSAOオフセット情報に含まれる同名のシンタックスと同一である。
図12は、本実施形態に係る符号化データ#1のCTBSAOオフセット情報(図12においてsao_offset_cabac()と表記)のシンタックスを示す図である。CTBSAOオフセット情報は、シンタックス要素としてsao_type_idx、sao_band_position、sao_offsetを含み、それぞれ、APSSAOオフセット情報に含まれる同名のシンタックスと同一である。
なお、図6〜図12に示したDescriptor(記述子)ue(v)は、この記述子に関連付けられたシンタックスは符号なしの数値であり、値が可変長符号化されることを示している。se(v)は、この記述子に関連付けられたシンタックスは符号付きの数値であり、符号と絶対値に分けて可変長符号化されることを示している。ae(v)は、この記述子に関連づけられたシンタックスが算術符号を用いて可変長符号化されることを示している。u(n)は、この記述子に関連付けられたシンタックスは符号なしの数値であり、nビットの固定長符号化が用いられることを示している。f(n)は、固定値のビットパターンが用いられることを示している。
ここで説明したAPSSAOユニット(sao_unit_vlc())およびCTBSAOユニット(sao_unit_cabac())を合わせて、SAOユニットU(第2単位領域)と呼び、APSSAOオフセット情報(sao_offset_vlc())およびCTBSAOオフセット情報(sao_offset_cabac())を合わせて、SAOオフセット情報OIと呼ぶ。また、APSSAOパラメータSAOP_AとSHSAOパラメータSAOP_SとCTBSAOパラメータSAOP_C、および、それらが含むSAOユニットUおよびSAOオフセット情報OIを総称して、SAOパラメータSAOPと呼称する。
以上で説明したように、適応オフセットフィルタに関するパラメータは、適応パラメータセットAPSまたはスライスのいずれかに格納される。特に、SAOユニットUおよびSAOオフセット情報OIは、適応パラメータセットAPS内に一括して符号化されるか、またはスライスデータSDの各ツリーブロックの符号化データにインターリーブして符号化され、その格納方法はスライスあるいはピクチャ毎に選択される。ここでは、適応パラメータセットAPS内に一括して符号化される場合を「APSモード」と呼び、スライスデータSDの各ツリーブロックの符号化データにインターリーブして符号化される場合を「LCUモード(インターリーブモード)」と呼ぶ。APSモードとLCUモードの選択は、前述のように、slice_sao_interleaving_flagおよびaps_sao_interleaving_flagを用いて制御される。APSモードは、ピクチャやスライスなど広い範囲を大域的に最適化してオフセットを設定することに優れており、LCUモードは、ツリーブロックなどの比較的小さな処理単位での並列処理との親和性が高く、処理スループットの向上に適している。
次に、オフセットタイプsao_type_idxとオフセットsao_offsetについて、さらに詳細に説明する。
(sao_type_idx)
sao_type_idxは、適応オフセットフィルタのタイプを表す識別子である。sao_type_idxは、カラー成分毎に、所定の単位(例えばツリーブロック)に対して割り当てられる。したがって、所定の単位の各々におけるタイプの値は、sao_type_idx[component][rx][ry]と添字を用いて表される。添字componentは輝度、色差Cr、色差Cbのいずれかを示すインデックスであり、rxおよびryはそれぞれ、対象となる所定の単位(例えばSAOユニットあるいはツリーブロック)のxおよびy座標を示す。本実施形態では、sao_type_idx[component][rx][ry]を、単にsao_type_idxやオフセットタイプと呼称することもある。単にsao_type_idxと呼称する場合においても、必要な個々の値はsao_type_idx[component][rx][ry]として参照することが可能である。
sao_type_idxは、適応オフセットフィルタのタイプを表す識別子である。sao_type_idxは、カラー成分毎に、所定の単位(例えばツリーブロック)に対して割り当てられる。したがって、所定の単位の各々におけるタイプの値は、sao_type_idx[component][rx][ry]と添字を用いて表される。添字componentは輝度、色差Cr、色差Cbのいずれかを示すインデックスであり、rxおよびryはそれぞれ、対象となる所定の単位(例えばSAOユニットあるいはツリーブロック)のxおよびy座標を示す。本実施形態では、sao_type_idx[component][rx][ry]を、単にsao_type_idxやオフセットタイプと呼称することもある。単にsao_type_idxと呼称する場合においても、必要な個々の値はsao_type_idx[component][rx][ry]として参照することが可能である。
オフセットタイプには大きく分けてエッジオフセット処理(EO)とバンドオフセット処理(BO)と呼ばれる2種類がある。エッジオフセット処理とは、処理対象画素の画素値とその周辺画素の画素値との差分に応じて、当該処理対象画素の画素値に複数のオフセットの何れかを加算する処理のことをいう。また、バンドオフセット処理とは、処理対象の各画素値の値に応じて、当該処理対象画素の画素値に複数のオフセットの何れかを加算する処理のことをいう。エッジオフセット処理およびバンドオフセット処理の具体的内容については後述する。
本実施形態において、sao_type_idxは、0から5までの整数値をとり、オフセットフィルタ前画像(例えば、後述するデブロック済復号画像P_DB)に対して、どのようなフィルタ処理を行うか、あるいはフィルタ処理を行わないかを示す。具体的には以下の通りである。
・sao_type_idx=0は、対象ツリーブロックにおけるオフセットフィルタ前画像に対して、オフセットフィルタ処理を行わないことを示す。
・sao_type_idx=1〜4は、対象ツリーブロックにおけるオフセットフィルタ前画像に対して、エッジオフセット処理(EO)を行うことを示す。
・sao_type_idx=5は、対象ツリーブロックにおけるオフセットフィルタ前画像に対して、バンドオフセット処理(BO)を行うことを示す。
・sao_type_idx=0は、対象ツリーブロックにおけるオフセットフィルタ前画像に対して、オフセットフィルタ処理を行わないことを示す。
・sao_type_idx=1〜4は、対象ツリーブロックにおけるオフセットフィルタ前画像に対して、エッジオフセット処理(EO)を行うことを示す。
・sao_type_idx=5は、対象ツリーブロックにおけるオフセットフィルタ前画像に対して、バンドオフセット処理(BO)を行うことを示す。
なお、エッジオフセットおよびバンドオフセットに対し、上記で説明したのと異なる数のオフセットタイプが用いられる場合がある。オフセットタイプの個数が本実施形態と異なる場合には、sao_type_idxの値の範囲は、オフセットタイプの総数に応じて変化する。たとえば、オフセットタイプの総数がオフセット処理をしない場合を含めて4個である場合には、sao_type_idxは0から3までの整数値をとる。
(sao_offset)
sao_offset[component][rx][ry][i]は、本実施形態に係る適応オフセットフィルタ処理において、対象ツリーブロックに含まれる各画素に加算されるオフセットの値を導出するために用いられるパラメータである。本実施形態では、sao_offset[component][rx][ry][i]のことを単にsao_offsetあるいはオフセットもしくはオフセット値と呼称することもある。単にsao_offsetと呼称する場合においても、必要な個々の値はsao_offset[component][rx][ry][i]として参照することが可能である。
sao_offset[component][rx][ry][i]は、本実施形態に係る適応オフセットフィルタ処理において、対象ツリーブロックに含まれる各画素に加算されるオフセットの値を導出するために用いられるパラメータである。本実施形態では、sao_offset[component][rx][ry][i]のことを単にsao_offsetあるいはオフセットもしくはオフセット値と呼称することもある。単にsao_offsetと呼称する場合においても、必要な個々の値はsao_offset[component][rx][ry][i]として参照することが可能である。
sao_offset[component][rx][ry][i]は、上述の引数component、rx、ryに加えて、インデックスiによって指定される。ここで、インデックスiは、オフセットに対応するクラスを指定するためのインデックスである。インデックスiは、適用するオフセットタイプに属するクラスがN個であれば、0〜N−1の値をとる。
なお、本実施形態における適応オフセットフィルタの処理では、sao_offsetの値から実際に用いられるオフセット値(以下では、実オフセット値と呼ぶ)を導出して用いる。導出の詳細については後述する。
次に、sao_offsetとして符号化される値の範囲について説明する。
オフセットタイプsao_type_idxが5でない場合、すなわちエッジオフセットのオフセットsao_offsetにおいては、値域は、
0 から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) ) − 1
である。ここで、bitDepthはオフセット適用対象となる画素値のビット深度を表す値、bitDepthThはオフセット値を量子化する下限のビット深度、bitDepthDはオフセット値の値域のビット数を調整する値である。また、<<は左シフト、Min()は引数のうち最小のものを選択する関数を表す。一方、オフセットタイプsao_type_idxが5である場合、すなわちバンドオフセットのオフセットsao_offsetにおいては、値域は、
−( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) ) から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) − 1
である。以上から、例えば、bitDepth=8、bitDepthTh=10、 bitDepthD=5 である場合、オフセットsao_offsetの値域は、エッジオフセットの場合は0から7となり、バンドオフセットの場合は−7から7となる。
0 から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) ) − 1
である。ここで、bitDepthはオフセット適用対象となる画素値のビット深度を表す値、bitDepthThはオフセット値を量子化する下限のビット深度、bitDepthDはオフセット値の値域のビット数を調整する値である。また、<<は左シフト、Min()は引数のうち最小のものを選択する関数を表す。一方、オフセットタイプsao_type_idxが5である場合、すなわちバンドオフセットのオフセットsao_offsetにおいては、値域は、
−( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) ) から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) − 1
である。以上から、例えば、bitDepth=8、bitDepthTh=10、 bitDepthD=5 である場合、オフセットsao_offsetの値域は、エッジオフセットの場合は0から7となり、バンドオフセットの場合は−7から7となる。
〔オフセット値域の制限1(APSモードで狭くする)〕
本実施形態に係る符号化データ#1においては、APSモードにおけるbitDepthDの値(bitDepthD_A)を、LCUモードにおけるbitDepthDの値(bitDepthD_L)よりも大きくなるように構成する。そのように構成された符号化データ#1は、例えばbitDepth=8、bitDepthTh=10、 bitDepthD=6 とすれば、オフセットsao_offsetの値域はエッジオフセットの場合は0から3であり、バンドオフセットの場合は−3から3である。この値域はbitDepthD=5とした場合の値域のそれぞれ半分であり、各オフセットのビット長を1ビット短くできる。
本実施形態に係る符号化データ#1においては、APSモードにおけるbitDepthDの値(bitDepthD_A)を、LCUモードにおけるbitDepthDの値(bitDepthD_L)よりも大きくなるように構成する。そのように構成された符号化データ#1は、例えばbitDepth=8、bitDepthTh=10、 bitDepthD=6 とすれば、オフセットsao_offsetの値域はエッジオフセットの場合は0から3であり、バンドオフセットの場合は−3から3である。この値域はbitDepthD=5とした場合の値域のそれぞれ半分であり、各オフセットのビット長を1ビット短くできる。
APSモードにおいては、ピクチャあるいはスライス内のSAOパラメータSAOPを多数保持するために、LCUモードよりも多くのメモリが必要となるが、このようにAPSモードにおいて個々のオフセットの表現に要するビット長を小さくすることにより、SAOパラメータSAOPを保持するためのメモリ量を削減することができる。
なお、オフセットの値域の制限は、コンフォーマンスビットストリームが満たさなければならない範囲として定義することが適当である。コンフォーマンスとは、流通上もしくは規格上で正しく復号できることを保証するために設けるビットストリームが満たすべき条件のことである。本条件で制限されたビットストリームを用いることによって、限られたメモリ量もしくは処理性能の復号装置で復号可能であることを保証することができる。以下のオフセットの値域の制限においても同様にコンフォーマンスビットストリームとして制限することが適当である。
上記制限では、定数THD=( Min( bitDepth, bitDepthTh ) − bitDepthD )とした場合、エッジオフセットの範囲は、THD−1ビットで表現可能な範囲に制限され(符号を入れるとTHDビット)、バンドオフセットの範囲は、THDビットで表現可能な範囲に制限される。この制限により、オフセットを格納するメモリとして限られたメモリを用いる復号装置においても正常に復号が可能である。
また、変形例では、本実施形態に係る符号化データ#1においては、オフセットタイプsao_type_idxが5である場合、すなわちバンドオフセットのオフセットsao_offsetにおいては、値域を、所定の閾値THDを用いて、
−THD+1 からTHD−1
のように設定する。すなわち、オフセットの値の最小値の絶対値(THD−1)と、オフセットの最大値(THD−1)が同じとなるようなオフセットの値域を設定する。
この場合、オフセットの絶対値は、
0 からTHD− 1
に制限することと等価である。THDとしては、例えば、( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) )が適当である。
−THD+1 からTHD−1
のように設定する。すなわち、オフセットの値の最小値の絶対値(THD−1)と、オフセットの最大値(THD−1)が同じとなるようなオフセットの値域を設定する。
この場合、オフセットの絶対値は、
0 からTHD− 1
に制限することと等価である。THDとしては、例えば、( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) )が適当である。
エッジオフセットでは、絶対値の範囲でオフセットが制限されている。バンドオフセットにおいても絶対値の範囲でオフセットを制限できるようにできれば、オフセットの閾値を制限する符号化装置の処理が簡略化される。また、コンフォーマンスビットストリームかどうかを判定する場合に必要な復号装置の処理が簡略化される。
[変形例1] 〔オフセット値域の制限2(LCUモードで狭くする)〕
上記オフセット値域の制限1で説明した例とは逆に、LCUモードにおけるbitDepthDの値(bitDepthD_L)を、APSモードにおけるbitDepthDの値(bitDepthD_A)よりも大きくなるように構成すれば、LCUモードにおけるオフセットの値域をより狭め、オフセットsao_offsetの保持に必要なメモリ量を削減できる。LCUモードにおける各ツリーブロック符号化時にはSAOユニットUおよびSAOオフセット情報OIの挿入処理(先に生成された符号化データの途中に、別の符号化データを挿入し、以降の符号化データ、例えば、ツリーブロックに含まれる予測パラメータ(PUのデータ)や量子化予測残差QD(TUのデータ)を再符号化する処理)が生じる。挿入する(再符号化する)符号量を小さくすることで、処理量を軽減することができる。例えば、挿入処理を回避する方法として、SAOユニットUおよびSAOオフセット情報OIの挿入に備えて一定サイズの空白データを符号化データ#1に含めておくことが考えられる。SAOユニットUおよびSAOオフセット情報OIのサイズが空白データのサイズよりも小さければ、挿入処理は不要で空白データを上書きするだけでよい。SAOユニットUおよびSAOオフセット情報OIのサイズが空白データのサイズよりも大きければ、挿入処理が発生する。ただし、空白データを常に大きくとることは、処理に必要なメモリ使用量が増加したり、無駄な符号量が発生したりするなどの弊害がある。オフセットの値域をより狭めることで、SAOユニットUおよびSAOオフセット情報OIのサイズを小さくし、小さな空白データであっても挿入処理を発生しにくくすることができる。したがって、符号化データ#1を生成する動画像符号化装置においては、符号化データ#1の生成の際に大きな空白データでメモリを消費することを回避できる。
上記オフセット値域の制限1で説明した例とは逆に、LCUモードにおけるbitDepthDの値(bitDepthD_L)を、APSモードにおけるbitDepthDの値(bitDepthD_A)よりも大きくなるように構成すれば、LCUモードにおけるオフセットの値域をより狭め、オフセットsao_offsetの保持に必要なメモリ量を削減できる。LCUモードにおける各ツリーブロック符号化時にはSAOユニットUおよびSAOオフセット情報OIの挿入処理(先に生成された符号化データの途中に、別の符号化データを挿入し、以降の符号化データ、例えば、ツリーブロックに含まれる予測パラメータ(PUのデータ)や量子化予測残差QD(TUのデータ)を再符号化する処理)が生じる。挿入する(再符号化する)符号量を小さくすることで、処理量を軽減することができる。例えば、挿入処理を回避する方法として、SAOユニットUおよびSAOオフセット情報OIの挿入に備えて一定サイズの空白データを符号化データ#1に含めておくことが考えられる。SAOユニットUおよびSAOオフセット情報OIのサイズが空白データのサイズよりも小さければ、挿入処理は不要で空白データを上書きするだけでよい。SAOユニットUおよびSAOオフセット情報OIのサイズが空白データのサイズよりも大きければ、挿入処理が発生する。ただし、空白データを常に大きくとることは、処理に必要なメモリ使用量が増加したり、無駄な符号量が発生したりするなどの弊害がある。オフセットの値域をより狭めることで、SAOユニットUおよびSAOオフセット情報OIのサイズを小さくし、小さな空白データであっても挿入処理を発生しにくくすることができる。したがって、符号化データ#1を生成する動画像符号化装置においては、符号化データ#1の生成の際に大きな空白データでメモリを消費することを回避できる。
[変形例2] 〔オフセット値域の制限3(バンドオフセットで狭くする)〕
バンドオフセットに対するbitDepthD(bitDepthD_b)とエッジオフセットに対するbitDepthD(bitDepthD_e)を、
bitDepthD_b = bitDepthD_e − 1
となるようにする。前記の値域から明らかなようにエッジオフセットには符号が必要ないため、エッジオフセットのオフセットsao_offsetの保持に必要なビット長は、バンドオフセットの場合よりも1ビット少ない。しかしながら、オフセットsao_offsetを保持するメモリ領域は、値域が広いバンドオフセットのビット長に合わせて確保されるため、バンドオフセットとエッジオフセットにおけるオフセットの値域のビット長を揃えることで、メモリ領域を最大限に活用することができる。
バンドオフセットに対するbitDepthD(bitDepthD_b)とエッジオフセットに対するbitDepthD(bitDepthD_e)を、
bitDepthD_b = bitDepthD_e − 1
となるようにする。前記の値域から明らかなようにエッジオフセットには符号が必要ないため、エッジオフセットのオフセットsao_offsetの保持に必要なビット長は、バンドオフセットの場合よりも1ビット少ない。しかしながら、オフセットsao_offsetを保持するメモリ領域は、値域が広いバンドオフセットのビット長に合わせて確保されるため、バンドオフセットとエッジオフセットにおけるオフセットの値域のビット長を揃えることで、メモリ領域を最大限に活用することができる。
[変形例3] 〔オフセット値域の制限4(クラス毎に変更する)〕
bitDepthDの値をインデックスiまたはクラスインデックスclass_idxに基づいて変更することもできる。例えば、オフセットの絶対値が比較的小さいクラスCiについては、クラスCiにおけるbitDepthD[i]を相対的に小さな値とする。具体的には、エッジオフセットのオフセットsao_offsetについては、値域を、
0 から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD_E[i] ) ) − 1
とし、バンドオフセットのオフセットsao_offsetについては、値域を、
−( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD_B[i] ) ) から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD_B[i] ) − 1
と定める。ここで、bitDepthD_E[i]およびbitDepthD_B[i]は、各クラスのクラス毎のオフセット値の範囲の傾向に基づいて定められる所定の値である。例えば、インデックスiが0から3のクラスに対し、それぞれ bitDepthD_E[0] = 5, bitDepthD_E[1] = 6, bitDepthD_E[2] = 6, bitDepthD_E[3] = 5 とすれば、インデックスiが1および2のクラスの値域だけを他のクラスに対して相対的に狭く制限できる。これにより、クラス毎のオフセット値の範囲の傾向が異なる場合であっても適切な値域が割り当てられ、SAOパラメータSAOPの符号量を削減することが可能である。
bitDepthDの値をインデックスiまたはクラスインデックスclass_idxに基づいて変更することもできる。例えば、オフセットの絶対値が比較的小さいクラスCiについては、クラスCiにおけるbitDepthD[i]を相対的に小さな値とする。具体的には、エッジオフセットのオフセットsao_offsetについては、値域を、
0 から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD_E[i] ) ) − 1
とし、バンドオフセットのオフセットsao_offsetについては、値域を、
−( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD_B[i] ) ) から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD_B[i] ) − 1
と定める。ここで、bitDepthD_E[i]およびbitDepthD_B[i]は、各クラスのクラス毎のオフセット値の範囲の傾向に基づいて定められる所定の値である。例えば、インデックスiが0から3のクラスに対し、それぞれ bitDepthD_E[0] = 5, bitDepthD_E[1] = 6, bitDepthD_E[2] = 6, bitDepthD_E[3] = 5 とすれば、インデックスiが1および2のクラスの値域だけを他のクラスに対して相対的に狭く制限できる。これにより、クラス毎のオフセット値の範囲の傾向が異なる場合であっても適切な値域が割り当てられ、SAOパラメータSAOPの符号量を削減することが可能である。
[変形例4] 〔オフセット値域の変更(拡張ゴロム符号のビット列を考慮した値域とする)〕
オフセットの値域を次のように制限してもよい。エッジオフセットのオフセットsao_offsetにおいては、値域を、
0 から ( 1<< ( Min( bitDepth, bitDepthTh ) − (bitDepthD-1) ) ) − 2
とし、バンドオフセットのオフセットsao_offsetにおいては、値域を、
−( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) ) + 1 から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) − 1
とする。上記ではエッジオフセットの範囲の幅(最大値と最小値の差)、バンドオフセットの範囲の幅(最大値と最小値の差)は、ともに、( 1<< ( Min( bitDepth, bitDepthTh ) − (bitDepthD-1) ) ) − 1となる。すなわち、オフセットの範囲は(2^n)-1と表現できる値とする。特に、エッジオフセットについてのオフセットの最大値は、(2^n)-2 と表現できる値である。エッジオフセットに用いられる非負の値の符号化において、オフセットsao_offsetの符号化に用いられる拡張ゴロム符号においては、値(2^n)-1 の符号長は、値(2^n)-2 よりも2ビット長くなる(拡張ゴロム符号の説明は省略する)。この場合、ビット長は、2*n+1となる。
オフセットの値域を次のように制限してもよい。エッジオフセットのオフセットsao_offsetにおいては、値域を、
0 から ( 1<< ( Min( bitDepth, bitDepthTh ) − (bitDepthD-1) ) ) − 2
とし、バンドオフセットのオフセットsao_offsetにおいては、値域を、
−( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) ) + 1 から ( 1<< ( Min( bitDepth, bitDepthTh ) − bitDepthD ) − 1
とする。上記ではエッジオフセットの範囲の幅(最大値と最小値の差)、バンドオフセットの範囲の幅(最大値と最小値の差)は、ともに、( 1<< ( Min( bitDepth, bitDepthTh ) − (bitDepthD-1) ) ) − 1となる。すなわち、オフセットの範囲は(2^n)-1と表現できる値とする。特に、エッジオフセットについてのオフセットの最大値は、(2^n)-2 と表現できる値である。エッジオフセットに用いられる非負の値の符号化において、オフセットsao_offsetの符号化に用いられる拡張ゴロム符号においては、値(2^n)-1 の符号長は、値(2^n)-2 よりも2ビット長くなる(拡張ゴロム符号の説明は省略する)。この場合、ビット長は、2*n+1となる。
例えば、符号無し整数値7は、拡張ゴロム符号では、前半のプレフィクス部に“0”、分離ビットに“1”を用いれば、“0001000”(7ビット)と表される。同様に、符号無し整数値6を拡張ゴロム符号で表せば、“00100”(5ビット)である。別の例を挙げれば、符号無し整数値31は拡張ゴロム符号では “00000100000”(11ビット)と表され、符号無し整数値30は “000010000”(9ビット)と表される。このように、符号の種類が(2^n)-1 個の形で表せる値域とすることで、拡張ゴロム符号を用いたビット列の最大長を抑制することができる。
拡張ゴロム符号のビット列の最大長を16ビットあるいは32ビットに制限すると復号処理および符号化処理が簡略化される。よって、2*n+1<=16を満たすn、すなわち、n=7。もしくは2*n+1<=32を満たすn、すなわちn=15が適当である。この時、範囲は、各々以下のとなる。
0 から 2^7-2 (=126)
0 から 2^15-2 (=32766)
一方、上記のバンドオフセットの値域は符号つき整数の範囲であるが、この範囲に含まれる整数は(2^n)-1 個の形で表すことができ、エッジオフセットの場合と同様に、拡張ゴロム符号のビット列の最大長を抑制することができる。したがって、符号化データの復号する際に一度に読み出すデータを確保するメモリを減らすことができ、復号処理が簡略化される。また、符号化データの符号化処理において一度に符号化されるメモリを減らすことができ、符号化処理が簡略化される。このような一度に読み出し、符号化されるメモリはCPUのレジスタなどの高速なメモリが利用される。そのためレジスタサイズに収まる16ビットあるいは32ビットに制限することが適当である。
0 から 2^15-2 (=32766)
一方、上記のバンドオフセットの値域は符号つき整数の範囲であるが、この範囲に含まれる整数は(2^n)-1 個の形で表すことができ、エッジオフセットの場合と同様に、拡張ゴロム符号のビット列の最大長を抑制することができる。したがって、符号化データの復号する際に一度に読み出すデータを確保するメモリを減らすことができ、復号処理が簡略化される。また、符号化データの符号化処理において一度に符号化されるメモリを減らすことができ、符号化処理が簡略化される。このような一度に読み出し、符号化されるメモリはCPUのレジスタなどの高速なメモリが利用される。そのためレジスタサイズに収まる16ビットあるいは32ビットに制限することが適当である。
[変形例5] (CTBSAOパラメータの別の例)
図10で説明したスライスデータSDでは、CTBSAOパラメータSAOP_Cが、ツリーブロックの符号化データ(図10においてcoding_tree()と表記)の直前に配置されていた。しかし、符号化装置において、適応フィルタのフィルタパラメータ(例えば、オフセット値)の決定は、当該ツリーブロックの局所復号画像が得られた後に行われるため、符号化データを遡ってCTBSAOユニットSAOP_Cの生成済みの符号化データへの挿入処理を行う必要がある。図21は、前記挿入処理(再符号化処理)を不要とする、スライスデータSDにおけるCTBSAOユニットSAOP_Cの別の配置を示したものである。動画像復号装置1では、可変長符号復号部13は、符号化データ#1から当該ツリーブロック、すなわち、各パーティションに関する予測パラメータPP(図40のprediction_unit())と、各ブロックに関する量子化予測残差QD(図40のtransform_unit())を復号した後に、適応ループフィルタに関するパラメータ)(ここではSAOパラメータSAOP)を復号する。図21に示すように、ツリーブロックの後にCTBSAOパラメータSAOP_Cを配置することで、符号化装置はツリーブロックの予測処理と適応フィルタのパラメータ決定と同じ順序で、符号化データ#1を出力すればよく、挿入処理(再符号化処理)が不要となるという効果を奏する。
図10で説明したスライスデータSDでは、CTBSAOパラメータSAOP_Cが、ツリーブロックの符号化データ(図10においてcoding_tree()と表記)の直前に配置されていた。しかし、符号化装置において、適応フィルタのフィルタパラメータ(例えば、オフセット値)の決定は、当該ツリーブロックの局所復号画像が得られた後に行われるため、符号化データを遡ってCTBSAOユニットSAOP_Cの生成済みの符号化データへの挿入処理を行う必要がある。図21は、前記挿入処理(再符号化処理)を不要とする、スライスデータSDにおけるCTBSAOユニットSAOP_Cの別の配置を示したものである。動画像復号装置1では、可変長符号復号部13は、符号化データ#1から当該ツリーブロック、すなわち、各パーティションに関する予測パラメータPP(図40のprediction_unit())と、各ブロックに関する量子化予測残差QD(図40のtransform_unit())を復号した後に、適応ループフィルタに関するパラメータ)(ここではSAOパラメータSAOP)を復号する。図21に示すように、ツリーブロックの後にCTBSAOパラメータSAOP_Cを配置することで、符号化装置はツリーブロックの予測処理と適応フィルタのパラメータ決定と同じ順序で、符号化データ#1を出力すればよく、挿入処理(再符号化処理)が不要となるという効果を奏する。
[変形例6] (CTBSAOパラメータのさらに別の例)
さらに、CTBSAOパラメータを、ツリーブロックを構成する符号化ツリー内に配置することもできる。図31は、本実施形態に係る符号化データ#1における符号化ツリー(図31においてcoding_tree()と表記)のシンタックスを示す図である(図30と同一の部分は一部省略している)。
さらに、CTBSAOパラメータを、ツリーブロックを構成する符号化ツリー内に配置することもできる。図31は、本実施形態に係る符号化データ#1における符号化ツリー(図31においてcoding_tree()と表記)のシンタックスを示す図である(図30と同一の部分は一部省略している)。
図31では、CTBSAOユニットSAOP_C8は、ツリーブロックの最後に符号化される、スライスが終端するか否かを示すフラグend_of_slice_flagの前に符号化される。また、CTBSAOユニットSAOP_C8が符号化されるのは、対象符号化ツリーがそれ以上分割されない場合(符号化ツリーを分割するか否かを示すフラグsplit_coding_unit_flagが0の場合)である。すなわち、コーディングユニット(もしくはコーディングユニットに対応するPCMユニット)が符号化される場合である。interleave_loop_filter_param()は、ツリーブロックに対応して格納される適応フィルタの符号化パラメータを示すシンタックス要素である。例えば適応オフセットフィルタの場合は、ツリーブロックに対応する画素にかかる適応オフセットフィルタのオフセットタイプ及びオフセットを導出するためのシンタックス要素である。既に説明したCTBSAOユニットに相当する。
また、例えば、適応ループフィルタ(適応空間フィルタ)の場合でも、ツリーブロックに対応する画素にかかる適応フィルタのフィルタ係数を導出するためのシンタックス要素である。CTBSAOユニットに似たCTBALFユニットを用いることができる。CTBALFユニットでは、既に説明したCTBSAOユニットと同様に、既に復号済みのフィルタ係数を利用するか否かを示すフラグとしてsao_merge_left_flagに相当するalf_merge_left_flag、sao_merge_up_flagに相当するalf_merge_up_flagを用いることができる。
また、CTBALFユニットとして、フィルタ係数を配置するalf_filter_cabacを用いることができる。
図33(a)は、ツリーブロックにインターリーブする適応フィルタ情報interleave_loop_filter_param()に適応オフセットフィルタに用いるCTBSAOユニットと適応空間フィルタに用いるCTBALFユニットを含む例を示す図である。図33(b)は、適応空間フィルタに用いるCTBALFユニットを含む例を示す図であり、図33(c)は、interleave_loop_filter_param()に適応オフセットフィルタに用いるCTBSAOユニットのみを含む例を示す図である。
図34は、CTBALFユニットに含まれるalf_info_cabac()の符号化データ構造を示す図である。alf_info_cabac()は適応空間フィルタのフィルタ係数を配置する。
図35は、ツリーブロックにインターリーブする適応フィルタ情報interleave_loop_filter_param()として、適応空間フィルタを適用するか否かを示すオンオフフラグalf_lcu_enable_flagのみを配置する例を示す図である。図35(a)は、interleave_loop_filter_param()に適応オフセットフィルタに用いるCTBSAOユニットと適応空間フィルタに用いるCTBALFユニットを含む例を示す図であり、図35(b)は、適応空間フィルタに用いるCTBALFユニットを含む例を示す図である。
図36は、適応空間フィルタに用いるフィルタ係数を、ツリーブロックとインターリーブしないで符号化する場合の符号化データの例を示す図である。フィルタ係数は、スライスヘッダもしくはパラメータセット(例えばAPS)で符号化する。図36(a)は、APSにおいて、フィルタ係数を含む情報であるalf_param()を格納する例を示す図である。図36(b)は、alf_param()の具体的構成を示す図である。
ツリーブロックにインターリーブする適応フィルタ情報interleave_loop_filter_param()の符号化位置に対応する対象符号化ツリーの位置がCTBの境界にあることが望ましい。具体的には、図31に示すCTBSAOユニットSAOP_C8の条件判定の例では、対象符号化ツリーがその属する最上位の符号化ツリー(CTB)内において最も右下に位置するかどうかによりCTBの境界判定を行う。ここで、x0およびy0は対象符号化ツリーの画素単位の左上座標、(1<<log2CbSize)は対象符号化ツリーの大きさ、CTBサイズCtbSizeは対象符号化ツリーが属する符号化ツリーブロックの大きさを、それぞれ表している。
対象符号化ツリーがCTBの最も右下に位置しているとき、すなわち、ツリーブロックの末尾の符号化ツリーでのみ、適応フィルタに関するパラメータが復号の対象となる。
より具体的には、以下に示すように、対象符号化ツリーの右下の座標がCTBの境界に位置する場合でのみ、適応フィルタに関するパラメータが復号の対象となる。
x0+(1<<log2CbSize)、y0+(1<<log2CbSize)
CTBの境界に位置する場合は、位置がCTBサイズの倍数になる場合であるから、結局、対象符号化ツリーのX座標と対象符号化ツリーのサイズの和のCTサイズの剰余が0かつ、対象符号化ツリーのY座標と対象符号化ツリーのサイズの和のCTサイズの剰余が0の場合、すなわち、以下の2つ(図31の判定式)が成り立つ場合である。
CTBの境界に位置する場合は、位置がCTBサイズの倍数になる場合であるから、結局、対象符号化ツリーのX座標と対象符号化ツリーのサイズの和のCTサイズの剰余が0かつ、対象符号化ツリーのY座標と対象符号化ツリーのサイズの和のCTサイズの剰余が0の場合、すなわち、以下の2つ(図31の判定式)が成り立つ場合である。
!(x0+(1<<log2CbSize) % CtbSize) かつ
!(y0+(1<<log2CbSize) % CtbSize)
また、対象符号化ツリーのX座標と対象符号化ツリーのサイズの和のCTサイズの倍数である適応フィルタのユニットサイズ(LFUnitWidth)の剰余が0であるような、図32の判定式が成り立つ場合でも良い。
!(y0+(1<<log2CbSize) % CtbSize)
また、対象符号化ツリーのX座標と対象符号化ツリーのサイズの和のCTサイズの倍数である適応フィルタのユニットサイズ(LFUnitWidth)の剰余が0であるような、図32の判定式が成り立つ場合でも良い。
!(x0+(1<<log2CbSize) % LFUnitWidth) かつ
!(y0+(1<<log2CbSize) % CtbSize)
以上の構成では、CTB単位でフィルタパラメータが符号化されるため、CTB単位より細かくフィルタパラメータを符号化する場合に比べ、符号量を低減させることができる。また、フィルタ領域の単位がCTB単位に対応する単位となるため、より細かい単位でフィルタ処理を行う場合に比べフィルタ処理が簡単になる。
!(y0+(1<<log2CbSize) % CtbSize)
以上の構成では、CTB単位でフィルタパラメータが符号化されるため、CTB単位より細かくフィルタパラメータを符号化する場合に比べ、符号量を低減させることができる。また、フィルタ領域の単位がCTB単位に対応する単位となるため、より細かい単位でフィルタ処理を行う場合に比べフィルタ処理が簡単になる。
また、以上のデータ構成では、ツリーブロックの最後にCTBSAOパラメータSAOP_Cを配置することで、符号化装置はツリーブロックの符号化処理と適応フィルタのパラメータ決定と同じ順序で、符号化データ#1を出力すればよく、再符号化処理が不要となるという効果を奏する。また、スライス終端であるか否かを示すシンタックス要素であるend_of_slice_flag前に復号することで、当該ツリーブロックを復号するために必要な情報の全てがend_of_slice_flagの復号前に復号される(すなわち、end_of_slice_flagが当該ツリーブロックに関わるデータの最後に位置する)ため、データ構造に一貫性を持たせることができる。また、end_of_slice_flagを復号した後の符号化データ上の位置がバイトアライン(8ビット境界にある)させることが容易となるという効果を奏する。
なお、対象符号化ツリーの位置だけでなく、スライス終端であるか否かを示すシンタックス要素であるend_of_slice_flagの復号値に基づいて、適応フィルタのパラメータを復号するようにしてもよい。ツリーブロックの末尾で符号化する場合には、ツリーブロックの途中でスライス終端が生じた場合には、当該ツリーブロックに対応する適応ループフィルタパラメータinterleave_loop_filter_param()は復号されない。そのため、適応ループフィルタパラメータinterleave_loop_filter_param()が復号されないツリーブロックにおける復号処理を決定するデフォルトの適応フィルタパラメータを定めておくとよい。
例えば、end_of_slice_flagが1となる符号化ツリーにおいては、interleave_loop_filter_param()において、適応フィルタをオフするよう。具体的には、SAOのタイプ(sao_type_idx)を0(フィルタ適用なし)と設定するなどの方法で可能である。
以上のように、ツリーブロックの末尾以外でスライス終端が生じる場合、すなわちシンタックス要素であるend_of_slice_flagが1がツリーブロックの末尾以外で復号された場合には、対応する適応ループフィルタ(ALF,SAO)をオフとすることによって、適応ループフィルタパラメータinterleave_loop_filter_param()が復号されないツリーブロックにおけるフィルタ処理が確定するという効果を奏する。
[変形例7] (CTBSAOユニットの別の例)
CTBSAOユニットのシンタックスの別の例を、図28および図29を用いて説明する。
CTBSAOユニットのシンタックスの別の例を、図28および図29を用いて説明する。
図28は、CTBSAOユニット(図28においてsao_unit_cabac()と表記)内で指定される、オフセット情報のマージ方法を、輝度と色差で異ならせる例を示している。sao_merge_luma_flagは、対象符号化ツリーのCTBSAOオフセット情報を、対象色差符号化ツリーに対応する輝度符号化ツリーから複製または参照するか否かを示すフラグである。また、cIdxは、処理対象の画素値の成分を表すインデックスである。インデックスcIdxは、値0が輝度、値1が色差Cb、値2が色差Crを表す。図28のCTBSAOユニットを用いる場合、輝度に対しては左方向のオフセット情報および上方向のオフセット情報のどちらとマージするか、あるいはマージをしないかを選択が可能であり、色差に対しては、左方向のオフセット情報および輝度のオフセット情報のどちらとマージするか、あるいはマージをしないかの選択が可能である。
図29は、CTBSAOユニット(図29においてsao_unit_cabac()と表記)内で指定される、オフセット情報のマージ方法を、輝度と色差で異ならせる、別の例を示している。図29のCTBSAOユニットを用いる場合、輝度に対しては左方向のオフセット情報および上方向のオフセット情報のどちらとマージするか、あるいはマージをしないかを選択するためのマージ情報が格納されるが、色差に対しては、左方向のオフセット情報とマージするか否かのみが選択可能である。
なお、輝度に対しては上方向のマージを用い、色差に対しては上方向のマージを用いない上記処理は、適応オフセットフィルタの他、適応フィルタにおいても用いることができる。
このように、LCUモードにおける色差の適応フィルタ処理において上方向のマージを用いないようにすることで、色差の適応フィルタ処理において、対象ツリーブロックの1つ上のツリーブロックラインに対するパラメータを保持する必要がなくなり、使用メモリ量が削減できる。
(動画像復号装置1)
次に、本実施形態に係る動画像復号装置1について、図1および図3を参照して説明する。動画像復号装置1は、その一部に、H.264/MPEG−4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
次に、本実施形態に係る動画像復号装置1について、図1および図3を参照して説明する。動画像復号装置1は、その一部に、H.264/MPEG−4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
図3は、動画像復号装置1の構成を示すブロック図である。図3に示すように、動画像復号装置1は、可変長符号復号部13、動きベクトル復元部14、バッファメモリ15、インター予測画像生成部16、イントラ予測画像生成部17、予測方式決定部18、逆量子化・逆変換部19、加算器20、デブロッキングフィルタ41、適応フィルタ50、および適応オフセットフィルタ60を含む構成である。動画像復号装置1は、符号化データ#1を復号することによって動画像#4を生成するための装置である。
可変長符号復号部13は、各パーティションに関する予測パラメータPPを、符号化データ#1から復号する。すなわち、インター予測パーティションに関しては、参照画像インデックスRI、推定動きベクトルインデックスPMVI、および、動きベクトル残差MVDを符号化データ#1から復号し、これらを動きベクトル復元部14に供給する。一方、イントラ予測パーティションに関しては、(1)パーティションのサイズを指定するサイズ指定情報、および、(2)予測インデックスを指定する予測インデックス指定情報を符号化データ#1から復号し、これをイントラ予測画像生成部17に供給する。また、可変長符号復号部13は、CU情報を符号化データから復号し、これを予測方式決定部18に供給する(不図示)。更に、可変長符号復号部13は、各ブロックに関する量子化予測残差QD、および、そのブロックを含むツリーブロックに関する量子化パラメータ差分Δqpを符号化データ#1から復号し、これらを逆量子化・逆変換部19に供給する。また、可変長符号復号部13は、符号化データ#1からSAOパラメータSAOPを復号し、それらを適応オフセットフィルタ60に供給する。SAOパラメータSAOPは、少なくとも、オフセット情報OIを含む。
動きベクトル復元部14は、各インター予測パーティションに関する動きベクトルmvを、そのパーティションに関する動きベクトル残差MVDと、他のパーティションに関する復元済みの動きベクトルmv’とから復元する。具体的には、(1)推定動きベクトルインデックスPMVIにより指定される推定方法に従って、復元済みの動きベクトルmv’から推定動きベクトルpmvを導出し、(2)導出した推定動きベクトルpmvと動きベクトル残差MVDとを加算することによって動きベクトルmvを得る。なお、他のパーティションに関する復元済みの動きベクトルmv’は、バッファメモリ15から読み出すことができる。動きベクトル復元部14は、復元した動きベクトルmvを、対応する参照画像インデックスRIと共に、インター予測画像生成部16に供給する。なお、双方向予測(重み付き予測)を行うインター予測パーティションについては、復元した2つの動きベクトルmv1およびmv2を、対応する参照画像インデックスRI1およびRI2と共に、インター予測画像生成部16に供給する。
インター予測画像生成部16は、各インター予測パーティションに関する動き補償画像mcを生成する。具体的には、動きベクトル復元部14から供給された動きベクトルmvを用いて、同じく動きベクトル復元部14から供給された参照画像インデックスRIによって指定されるフィルタ済復号画像P_FL’から動き補償画像mcを生成する。ここで、フィルタ済復号画像P_FL’は、局所復号画像Pに対して、デブロッキングフィルタ41によるデブロック処理、適応オフセットフィルタ60によるオフセットフィルタ処理、および適応フィルタ50による適応的フィルタ処理を施すことによって得られる画像であり、インター予測画像生成部16は、フィルタ済復号画像P_FL’を構成する各画素の画素値をバッファメモリ15から読み出すことができる。インター予測画像生成部16によって生成された動き補償画像mcは、インター予測画像Pred_Interとして予測方式決定部18に供給される。なお、双方向予測(重み付き予測)を行うインター予測パーティションについては、(1)動きベクトルmv1を用いて、参照画像インデックスRI1によって指定されたフィルタ済復号画像P_FL1’から動き補償画像mc1を生成し、(2)動きベクトルmv2を用いて、参照画像インデックスRI2によって指定されたフィルタ済復号画像P_FL2’から動き補償画像mc2を生成し、(3)動き補償画像mc1と動き補償画像mc2との加重平均にオフセット値を加えることによってインター予測画像Pred_Interを生成する。
イントラ予測画像生成部17は、各イントラ予測パーティションに関する予測画像Pred_Intraを生成する。具体的には、まず、符号化データ#1から復号された予測インデックス指定情報およびサイズ指定情報を参照して予測モードを導出し、該予測モードを対象パーティションに対して、例えば、ラスタスキャン順に割り付ける。続いて、当該予測モードの示す予測方法に従って、バッファメモリから読み出した(不図示)局所復号画像Pから予測画像Pred_Intraを生成する。イントラ予測画像生成部17によって生成されたイントラ予測画像Pred_Intraは、予測方式決定部18に供給される。
また、イントラ予測画像生成部17は、対象パーティションのサイズ、および、対象パーティションに割り付けられた予測モードを示す情報であるイントラ符号化モード情報IEMを適応フィルタ50に供給する(不図示)。
予測方式決定部18は、CU情報に基づいて、各パーティションがインター予測を行うべきインター予測パーティションであるのか、イントラ予測を行うべきイントラ予測パーティションであるのかを決定する。そして、前者の場合には、インター予測画像生成部16にて生成されたインター予測画像Pred_Interを予測画像Predとして加算器20に供給し、後者の場合には、イントラ予測画像生成部17にて生成されたイントラ予測画像Pred_Intraを予測画像Predとして加算器20に供給する。
逆量子化・逆変換部19は、(1)量子化予測残差QDを逆量子化し、(2)逆量子化によって得られたDCT(Discrete Cosine Transform)係数またはDST(Discrete Sine Transform)係数を逆DCT変換または逆DST変換し、(3)逆DCT変換または逆DST変換によって得られた予測残差Dを加算器20に供給する。なお、量子化予測残差QDを逆量子化する際に、逆量子化・逆変換部19は、可変長符号復号部13から供給された量子化パラメータ差分Δqpから量子化ステップQPを導出する。量子化パラメータqpは、直前に逆量子化/逆DCT(またはDST)変換したツリーブロックに関する量子化パラメータqp’に量子化パラメータ差分Δqpを加算することによって導出でき、量子化ステップQPは、量子化ステップqpからQP=2pq/6によって導出できる。また、逆量子化・逆変換部19による予測残差Dの生成は、ブロック(変換単位)を単位として行われる。
加算器20は、予測方式決定部18から供給された予測画像Predと、逆量子化・逆変換部19から供給された予測残差Dとを加算することによって局所復号画像Pを生成する。
デブロッキングフィルタ41は、局所復号画像Pにおけるブロック境界、またはCU境界を介して互いに隣接する画素の画素値の差が予め定められた範囲内である場合にはブロック歪みが存在すると判定し、局所復号画像Pにおける当該ブロック境界、または当該CU境界に対してデブロッキング処理を施すことによって、当該ブロック境界、または当該CU境界付近の画像の平滑化を行う。デブロッキングフィルタ41によりデブロッキング処理が施された画像は、デブロック済復号画像P_DBとして、適応オフセットフィルタ60に出力される。
適応オフセットフィルタ60は、デブロッキングフィルタ41から供給されるデブロック済復号画像P_DBに対して、符号化データ#1から復号されたオフセットを用いたオフセットフィルタ処理を、QAOU(第1単位領域)を処理単位として施すことによってオフセットフィルタ済復号画像P_OFを生成する。生成されたオフセットフィルタ済復号画像P_OFは、適応オフセットフィルタ60に供給される。適応オフセットフィルタ60の具体的な構成については、後述するため、ここでは説明を省略する。
適応フィルタ50は、適応オフセットフィルタ60から供給されるオフセットフィルタ済復号画像P_OFに対して、符号化データ#1から復号されたフィルタパラメータFP(フィルタセット番号、フィルタ係数群、領域指定情報、並びにオンオフ情報)を用いたフィルタ処理を施すことによって、フィルタ済復号画像P_FLを生成する。フィルタ済復号画像P_FLは、動画像#4として外部に出力されると共に、可変長符号復号部13によって符号化データから復号されたPOC指定情報と関連付けてバッファメモリ15に格納される。
なお、上記の説明では、SAOユニットUを第2単位領域とし、QAOUを第1単位領域とする場合を例に挙げたが、本実施形態はこれに限定されるものではなく、これらの単位領域として他のユニットを用いてもよい。
(適応オフセットフィルタ60の詳細)
次に、適応オフセットフィルタ60の詳細について図1を参照して説明する。図1は、適応オフセットフィルタ60の構成を示すブロック図である。図1に示すように、適応オフセットフィルタ60は、オフセットタイプ復号部61、適応フィルタ部62、オフセット復号部63、および、オフセット格納部64を含む。
(オフセットタイプ復号部61)
オフセットタイプ復号部61は、入力されるSAOパラメータSAOPからオフセットタイプsao_type_idxを抽出する。オフセットタイプsao_type_idxは、オフセット復号部63、特性値算出部621、および、オフセット割り付け部624に出力される。
(オフセット復号部63)
オフセット復号部63は、入力されるSAOパラメータSAOPに含まれるオフセットsao_offsetを抽出する。さらに、オフセット復号部は、sao_type_idxおよびsao_offsetに基づいて、実オフセット値sao_offset’を導出し、オフセット格納部64に出力する。また、オフセットタイプsao_type_idxがバンドオフセットであれば、バンドオフセット位置sao_band_positionも抽出し、出力する。sao_offsetからの実オフセット値sao_offset’の導出は次の通りである。
次に、適応オフセットフィルタ60の詳細について図1を参照して説明する。図1は、適応オフセットフィルタ60の構成を示すブロック図である。図1に示すように、適応オフセットフィルタ60は、オフセットタイプ復号部61、適応フィルタ部62、オフセット復号部63、および、オフセット格納部64を含む。
(オフセットタイプ復号部61)
オフセットタイプ復号部61は、入力されるSAOパラメータSAOPからオフセットタイプsao_type_idxを抽出する。オフセットタイプsao_type_idxは、オフセット復号部63、特性値算出部621、および、オフセット割り付け部624に出力される。
(オフセット復号部63)
オフセット復号部63は、入力されるSAOパラメータSAOPに含まれるオフセットsao_offsetを抽出する。さらに、オフセット復号部は、sao_type_idxおよびsao_offsetに基づいて、実オフセット値sao_offset’を導出し、オフセット格納部64に出力する。また、オフセットタイプsao_type_idxがバンドオフセットであれば、バンドオフセット位置sao_band_positionも抽出し、出力する。sao_offsetからの実オフセット値sao_offset’の導出は次の通りである。
オフセットタイプsao_type_idxがエッジオフセットを示している場合には、sao_offsetの値としては符号なしの値が符号化されているが、実オフセット値は、class_idxの値に応じて正負の符号を変更する。より具体的には、class_idx=1または2の場合には実オフセット値は負の値としてフィルタ処理に適用され、class_idx=3または4の場合には、実オフセット値は正の値としてフィルタ処理に適用される。
オフセットタイプsao_type_idxがバンドオフセットを示している場合には、sao_offsetの値としては符号つきの値が符号化されているため、実オフセット値には、sao_offsetと同じ符号を適用する。
このほか、実オフセット値sao_offset’の導出時に、画素値のビット深度に応じた逆量子化が行われることもある。例えば、ビット深度が12bitである画像に対する適応オフセットフィルタのオフセット値が、ビット深度10bit相当に量子化されて符号化されている場合、sao_offsetは2bit分桁上げされて実オフセット値が導出される。例えばビット深度が10bit以下である場合など、sao_offsetに対して量子化が行われていない場合には、逆量子化も行われない。
なお、動画像復号装置1が、符号化データ#1における各変形例に対応して復号動作を行う場合には、既に説明した各変形例に応じた値域に基づいて、符号化データ#1からオフセットsao_offsetを復号する。
逆量子化は、具体的には以下の式で導出される。
sao_offset << (bitDepth ‐Min( bitDepth, bitDepthTh ) )
ここで、bitDepthはオフセット適用対象となる画素値のビット深度を表す値、bitDepthThはオフセット値を量子化する下限のビット深度である。
ここで、bitDepthはオフセット適用対象となる画素値のビット深度を表す値、bitDepthThはオフセット値を量子化する下限のビット深度である。
実オフセットは、以下の式で導出される。
sao_offset’= offetSign*sao_offset << (bitDepth ‐Min( bitDepth, bitDepthTh ) )
ここでoffsetSignはオフセットの符号である。
ここでoffsetSignはオフセットの符号である。
また、オフセットが予測符号化されている場合には、予測値sao_predを用いて、以下の式により実オフセット値sao_offset’を導出する。
sao_offset’=sao_pred + offetSign*sao_offset << (bitDepth ‐Min( bitDepth, bitDepthTh ) )
(オフセット復号部63の別の構成1)
オフセット復号部63の別の構成1では、オフセット復号部63とは逆量子化の方法が異なる。図37(a)は、オフセット復号部63の別の構成1の構成を示すブロック図である。オフセット復号部63では、オフセット量子化ステップ導出部632で、以下の式により量子化ステップを示す値(ここではシフト値のsao_qshift)を導出する。
(オフセット復号部63の別の構成1)
オフセット復号部63の別の構成1では、オフセット復号部63とは逆量子化の方法が異なる。図37(a)は、オフセット復号部63の別の構成1の構成を示すブロック図である。オフセット復号部63では、オフセット量子化ステップ導出部632で、以下の式により量子化ステップを示す値(ここではシフト値のsao_qshift)を導出する。
sao_qshift = (bitDepth -Min( bitDepth, bitDepthTh1 ) )
さらにオフセット逆量子化部631は以下の式により逆量子化を行う。
さらにオフセット逆量子化部631は以下の式により逆量子化を行う。
SaoOffsetVal = offsetSign*sao_offset << sao_qshift
ここで量子化精度の上限を定める閾値bitDepthTh1には量子化パラメータqpに依存した値を用いる。
ここで量子化精度の上限を定める閾値bitDepthTh1には量子化パラメータqpに依存した値を用いる。
図37(b)は、閾値の例である。この例では、
bitDepthTh1 = 10 (0 <= QP < 27)
bitDepthTh1 = 9 (27 <= QP < 37)
bitDepthTh1 = 8 (QP >= 37)
ここで、量子化パラメータqpとしては、対応するオフセットが適用される領域、すなわち、対象SAOユニットUの左上座標の量子化パラメータqpを用いることができる。また、対象SAOユニットUの左上座標が属するスライスの初期量子化パラメータqpを用いることができる。
bitDepthTh1 = 10 (0 <= QP < 27)
bitDepthTh1 = 9 (27 <= QP < 37)
bitDepthTh1 = 8 (QP >= 37)
ここで、量子化パラメータqpとしては、対応するオフセットが適用される領域、すなわち、対象SAOユニットUの左上座標の量子化パラメータqpを用いることができる。また、対象SAOユニットUの左上座標が属するスライスの初期量子化パラメータqpを用いることができる。
以上では、量子化パラメータqpが大きいほど、量子化精度の上限を定める閾値bitDepthTh1を小さな値に設定することにより、量子化パラメータqpが大きいほど量子化の精度が低くなるように設定する。量子化パラメータqp依存のパラメータはこれに限らず、図37(c)などのように設定も良い。
bitDepthTh1 = 12 (0 <= QP < 7)
bitDepthTh1 = 12 ( 7 <= QP < 17)
bitDepthTh1 = 10 (17 <= QP < 27)
bitDepthTh1 = 9 (27 <= QP < 37)
bitDepthTh1 = 8 (QP >= 37)
オフセットの量子化ステップ(ここでは1<<(bitDepth -Min( bitDepth, bitDepthTh1 ) )が大きいと、オフセットの精度は低くなり適応オフセットフィルタによる符号化歪み低減効果が小さくなるが、オフセットの符号化に必要な符号量が低下する。符号化効率を最大化するためには、オフセットの精度のバランスを取ることが必要である。
bitDepthTh1 = 12 ( 7 <= QP < 17)
bitDepthTh1 = 10 (17 <= QP < 27)
bitDepthTh1 = 9 (27 <= QP < 37)
bitDepthTh1 = 8 (QP >= 37)
オフセットの量子化ステップ(ここでは1<<(bitDepth -Min( bitDepth, bitDepthTh1 ) )が大きいと、オフセットの精度は低くなり適応オフセットフィルタによる符号化歪み低減効果が小さくなるが、オフセットの符号化に必要な符号量が低下する。符号化効率を最大化するためには、オフセットの精度のバランスを取ることが必要である。
以上では、ビット深度bitDepthと量子化パラメータqpに依存した閾値bitDepthTh1を用いて、適応オフセットフィルタのオフセットの逆量子化を行う。具体的には、量子化パラメータqpが大きいほど量子化の精度が低くなるように設定する。このように、オフセットの符号化精度を、ビット深度bitDepthと量子化パラメータqpに基づいて定めることにより、オフセットの符号化に必要な符号量と、オフセットの精度のバランスを最適化することができ符号化効率を向上させる効果を奏する。
(オフセット復号部63の別の構成2)
オフセット復号部63の別の構成2では、オフセット復号部63とは逆量子化の方法が異なる。オフセット復号部63では、SAOユニットUのサイズを用いて以下のように逆量子化を行う。図38(a)は、オフセット復号部63の別の構成2の構成を示すブロック図である。オフセット復号部63では、オフセット量子化ステップ導出部633で、以下の式により量子化ステップを示す値(ここではシフト値のsao_qshift)を導出する。
(オフセット復号部63の別の構成2)
オフセット復号部63の別の構成2では、オフセット復号部63とは逆量子化の方法が異なる。オフセット復号部63では、SAOユニットUのサイズを用いて以下のように逆量子化を行う。図38(a)は、オフセット復号部63の別の構成2の構成を示すブロック図である。オフセット復号部63では、オフセット量子化ステップ導出部633で、以下の式により量子化ステップを示す値(ここではシフト値のsao_qshift)を導出する。
sao_qshift = (bitDepth -Min( bitDepth, bitDepthTh1 ) )
さらにオフセット逆量子化部631は以下の式により逆量子化を行う。
さらにオフセット逆量子化部631は以下の式により逆量子化を行う。
SaoOffsetVal = offsetSign*sao_offset << sao_qshift
ここで量子化精度の上限を定める閾値bitDepthTh2にはSAOユニットUのサイズに依存した値を用いる。
ここで量子化精度の上限を定める閾値bitDepthTh2にはSAOユニットUのサイズに依存した値を用いる。
図38(b)は、閾値の例である。この例では、
bitDepthTh1 = 10 (0 <=SAOユニットUのサイズ < 32*32)
bitDepthTh1 = 9 (32*32 <=SAOユニットUのサイズ < 64*64)
bitDepthTh1 = 8 (SAOユニットUのサイズ >= 64)
ここで、SAOユニットUのサイズとしては、対応するオフセットが適用される領域、すなわち、対象SAOユニットUの面積を用いることができる。また、スライス内で面積が変化すると、オフセット復号部が複雑になるため、対象SAOユニットUの左上座標が属するスライスの左上SAOユニットUの面積を用いることもできる。
bitDepthTh1 = 10 (0 <=SAOユニットUのサイズ < 32*32)
bitDepthTh1 = 9 (32*32 <=SAOユニットUのサイズ < 64*64)
bitDepthTh1 = 8 (SAOユニットUのサイズ >= 64)
ここで、SAOユニットUのサイズとしては、対応するオフセットが適用される領域、すなわち、対象SAOユニットUの面積を用いることができる。また、スライス内で面積が変化すると、オフセット復号部が複雑になるため、対象SAOユニットUの左上座標が属するスライスの左上SAOユニットUの面積を用いることもできる。
オフセットの量子化ステップ(ここでは1<<(bitDepth -Min( bitDepth, bitDepthTh2 ) )が大きいと、オフセットの精度は低くなり適応オフセットフィルタによる符号化歪み低減効果が小さくなるが、オフセットの符号化に必要な符号量が低下する。符号化効率を最大化するためには、オフセットの精度のバランスを取ることが必要である。
以上ではSAOユニットのサイズが小さいほど、量子化精度の上限を定める閾値bitDepthTh1を小さな値に設定することにより、SAOユニットのサイズが小さいほど量子化の精度が低くなるように設定する。
以上では、ビット深度bitDepthとSAOユニットのサイズに依存した閾値bitDepthTh2を用いて、適応オフセットフィルタのオフセットの逆量子化を行う。これにより、オフセットの符号化に必要な符号量と、オフセットの精度のバランスを最適化することができ符号化効率を向上させる効果を奏する。
(オフセット復号部63の別の構成3)
オフセット復号部63の別の構成1では、オフセット復号部63とは逆量子化の方法が異なる。図39(a)は、オフセット復号部63の別の構成3の構成を示すブロック図である。オフセット復号部63では、適応オフセットもモードがインターリーブモードであるかAPSモードであるかによって、異なる量子化ステップの導出方法を用いる。
(オフセット復号部63の別の構成3)
オフセット復号部63の別の構成1では、オフセット復号部63とは逆量子化の方法が異なる。図39(a)は、オフセット復号部63の別の構成3の構成を示すブロック図である。オフセット復号部63では、適応オフセットもモードがインターリーブモードであるかAPSモードであるかによって、異なる量子化ステップの導出方法を用いる。
APSモードの場合には、非インターリーブモードオフセット量子化ステップ導出部634は、以下の式によりsao_qshiftを導出する。
sao_qshift = (bitDepth -Min( bitDepth, bitDepthTh ) )
ここで、bitDepthThは固定値(例えば10とする)。
ここで、bitDepthThは固定値(例えば10とする)。
インターリーブモードである場合には、インターリーブモードオフセット量子化ステップ導出部635は、既に説明した。オフセット量子化ステップ導出部632もしくはオフセット量子化ステップ導出部633を用いる。すなわち、以下の式によりsao_qshiftを導出する。
sao_qshift = (bitDepth -Min( bitDepth, bitDepthThX ) )
ここでbitDepthThXは、量子化パラメータqpに依存する値、もしくは、SAOユニットのサイズに依存する値を用いる。
ここでbitDepthThXは、量子化パラメータqpに依存する値、もしくは、SAOユニットのサイズに依存する値を用いる。
以上では、フィルタパラメータがツリーブロックにインターリーブされている場合と、インターリーブされていない場合とで異なるオフセットの逆量子化方法を用いる。APSモードでは、オフセットの符号量が、符号化効率に与える影響は比較的小さいため、処理が単純となる方が好ましい。インターリーブモードでは量子化精度をより適応的に変更することでやや処理量が増加するが、符号化効率を向上させることができる。以上の構成では、処理量と符号化効率のバランスを向上させることができる。
(オフセット格納部64)
オフセット格納部64は、各オフセットタイプsao_type_idxに応じた各特性値に対して適用される実オフセット値sao_offset’およびバンドオフセット位置sao_band_offsetを記録する。
(オフセット格納部64)
オフセット格納部64は、各オフセットタイプsao_type_idxに応じた各特性値に対して適用される実オフセット値sao_offset’およびバンドオフセット位置sao_band_offsetを記録する。
あるいは、sao_offsetを格納し、被参照時に実オフセット値sao_offset’を導出して出力するようにしてもよい。
(適応フィルタ部62)
適応フィルタ部62は、図1に示すように、特性値算出部621、オフセット割り付け部624、および、オフセット適用部625をさらに含む。
(適応フィルタ部62)
適応フィルタ部62は、図1に示すように、特性値算出部621、オフセット割り付け部624、および、オフセット適用部625をさらに含む。
(特性値算出部621)
特性値算出部621は、入力されるデブロック済復号画像P_DBの画素値に基づいて、オフセットタイプsao_type_idxに対応する特性値を算出する。特性値の算出は各画素位置において実行される。sao_type_idxが0の場合、特性値は算出しない。sao_type_idxが1〜4の場合は、エッジ分類を表す特性値edgeIdxを算出する。特性値edgeIdxはsao_type_idxに応じた特定方向に対する、対象画素と隣接画素の間の画素値変化に基づき設定される。sao_type_idxが5の場合は、画素値の大きさを表す特性値bandIdxを算出する。特性値bandIdxは、対象画素の画素値を量子化した値として計算される。
特性値算出部621は、入力されるデブロック済復号画像P_DBの画素値に基づいて、オフセットタイプsao_type_idxに対応する特性値を算出する。特性値の算出は各画素位置において実行される。sao_type_idxが0の場合、特性値は算出しない。sao_type_idxが1〜4の場合は、エッジ分類を表す特性値edgeIdxを算出する。特性値edgeIdxはsao_type_idxに応じた特定方向に対する、対象画素と隣接画素の間の画素値変化に基づき設定される。sao_type_idxが5の場合は、画素値の大きさを表す特性値bandIdxを算出する。特性値bandIdxは、対象画素の画素値を量子化した値として計算される。
(オフセット割り付け部624)
オフセット割り付け部624は、各画素に対して、オフセットタイプ復号部61より入力されるオフセットタイプsao_type_idx、オフセット特性値算出部621より入力される特性値edgeIdxまたは特性値bandIdxの示すオフセットを、オフセット格納部64から読み出して設定する。特性値がbandIdxである場合には、オフセット格納部64からバンドオフセット位置sao_band_positionも読み出して設定する。
オフセット割り付け部624は、各画素に対して、オフセットタイプ復号部61より入力されるオフセットタイプsao_type_idx、オフセット特性値算出部621より入力される特性値edgeIdxまたは特性値bandIdxの示すオフセットを、オフセット格納部64から読み出して設定する。特性値がbandIdxである場合には、オフセット格納部64からバンドオフセット位置sao_band_positionも読み出して設定する。
(オフセット適用部625)
オフセット適用部625は、各画素に対してオフセット割り付け部624で設定されたオフセットをデブロック済復号画像P_DBの画素値に加算してフィルタ済復号画像P_FLの画素値として設定する。
[変形例8] 〔パラメータの格納方法に応じて、サイズ設定値を切り換える〕
上記非特許文献1の技術では、SAOユニットUの数が非常に多くなり、メモリ使用量増加の一因となる場合がある。例えば、4K2Kと呼ばれる高解像度画像(4096×2160画素)に対して16×16画素単位のツリーブロックを用いたとき、ツリーブロックの総数は1ラインあたり256個であり、ピクチャ全体では34560個となる。したがって、ツリーブロックに対応するSAOユニットUの数は、最高時には34560個となり、マージ(複製または参照によるオフセット情報の省略)が全く生じない場合には、オフセット情報OIも34560個となるため、これらを最大数格納可能なメモリ量が必要となる。LCUモードにおいても、マージ処理によってオフセット情報OIを上方隣接ツリーブロックに対応するオフセット情報OIから参照するためには、1ツリーブロックライン分、すなわち256個のオフセット情報OIを格納するメモリが必要となる。
オフセット適用部625は、各画素に対してオフセット割り付け部624で設定されたオフセットをデブロック済復号画像P_DBの画素値に加算してフィルタ済復号画像P_FLの画素値として設定する。
[変形例8] 〔パラメータの格納方法に応じて、サイズ設定値を切り換える〕
上記非特許文献1の技術では、SAOユニットUの数が非常に多くなり、メモリ使用量増加の一因となる場合がある。例えば、4K2Kと呼ばれる高解像度画像(4096×2160画素)に対して16×16画素単位のツリーブロックを用いたとき、ツリーブロックの総数は1ラインあたり256個であり、ピクチャ全体では34560個となる。したがって、ツリーブロックに対応するSAOユニットUの数は、最高時には34560個となり、マージ(複製または参照によるオフセット情報の省略)が全く生じない場合には、オフセット情報OIも34560個となるため、これらを最大数格納可能なメモリ量が必要となる。LCUモードにおいても、マージ処理によってオフセット情報OIを上方隣接ツリーブロックに対応するオフセット情報OIから参照するためには、1ツリーブロックライン分、すなわち256個のオフセット情報OIを格納するメモリが必要となる。
このような問題を防ぐため、本実施形態に係る符号化データおよび動画像復号装置は、以下のような構成をとってもよい。
(格納方法に基づくSAOユニットUのサイズ設定)
複数のツリーブロックが1個のSAOユニットUに対応するように、SAOユニットUのサイズを定めることで、上記の問題を軽減できる。複数のツリーブロックに対応するサイズのSAOユニットUでは、対応する各ツリーブロックに対して、同一のオフセット情報OIを適用する。別の表現をすれば、SAOユニットUに含まれる複数のツリーブロックに対応するオフセット情報OIは、暗黙的にマージされている。
複数のツリーブロックが1個のSAOユニットUに対応するように、SAOユニットUのサイズを定めることで、上記の問題を軽減できる。複数のツリーブロックに対応するサイズのSAOユニットUでは、対応する各ツリーブロックに対して、同一のオフセット情報OIを適用する。別の表現をすれば、SAOユニットUに含まれる複数のツリーブロックに対応するオフセット情報OIは、暗黙的にマージされている。
まず、APSモードにおけるSAOユニットUのサイズの設定方法について、図14を用いて説明する。
(APSSAOパラメータSAOP_A2)
図14は、変形例8における、APSSAOパラメータSAOP_A2の各シンタックス要素を示す図である。APSSAOパラメータSAOP_A2に含まれるシンタックス要素sao_unit_width_minus1およびsao_unit_height_minus1は、それぞれ、APSSAOユニットの水平方向におけるサイズおよび垂直方向におけるサイズを、ツリーブロックの数に基づいて表した値である。つまり、変形例8のAPSモードにおける適応オフセットフィルタの処理単位は、ここで指定されたSAOユニットサイズである。したがって、図14に含まれるループ変数rxおよびryも、この処理単位に基づいた値となる。
図14は、変形例8における、APSSAOパラメータSAOP_A2の各シンタックス要素を示す図である。APSSAOパラメータSAOP_A2に含まれるシンタックス要素sao_unit_width_minus1およびsao_unit_height_minus1は、それぞれ、APSSAOユニットの水平方向におけるサイズおよび垂直方向におけるサイズを、ツリーブロックの数に基づいて表した値である。つまり、変形例8のAPSモードにおける適応オフセットフィルタの処理単位は、ここで指定されたSAOユニットサイズである。したがって、図14に含まれるループ変数rxおよびryも、この処理単位に基づいた値となる。
また、ピクチャ内のSAOユニット数に応じた回数でループを制御するために用いられている変数sao_num_unit_in_width_minus1およびsao_num_unit_in_height_minus1は、それぞれ次の式で求められる。
PicNumLcuInW = sao_num_lcu_in_width_minus1 + 1
PicNumLcuInH = sao_num_lcu_in_height_minus1 + 1
SaoNumLcuInUnitW = sao_unit_width_minus1 + 1
SaoNumLcuInUnitH = sao_unit_height_minus1 + 1
sao_num_unit_in_width_minus1 = PicNumLcuInW / SaoNumLcuInUnitW + Mod0(PicNumLcuInW, SaoNumLcuInUnitW)
sao_num_unit_in_height_minus1 = PicNumLcuInH / SaoNumLcuInUnitH + Mod0(PicNumLcuInH, SaoNumLcuInUnitH)
ここで、関数Mod0(x,y)は、引数xをyで割った剰余が0であれば0を返し、剰余が0でなければ1を返す関数である。
PicNumLcuInH = sao_num_lcu_in_height_minus1 + 1
SaoNumLcuInUnitW = sao_unit_width_minus1 + 1
SaoNumLcuInUnitH = sao_unit_height_minus1 + 1
sao_num_unit_in_width_minus1 = PicNumLcuInW / SaoNumLcuInUnitW + Mod0(PicNumLcuInW, SaoNumLcuInUnitW)
sao_num_unit_in_height_minus1 = PicNumLcuInH / SaoNumLcuInUnitH + Mod0(PicNumLcuInH, SaoNumLcuInUnitH)
ここで、関数Mod0(x,y)は、引数xをyで割った剰余が0であれば0を返し、剰余が0でなければ1を返す関数である。
なお、APSSAOパラメータSAOP_A2における他のシンタックス要素については、APSSAOパラメータSAOP_Aと同一であるため、説明を省略する。
次に、LCUモードにおけるSAOユニットUのサイズの設定方法について、図15を用いて説明する。
(SHSAOパラメータSAOP_S2)
図15は、変形例8における、SHSAOパラメータSAOP_S2の各シンタックス要素を示す図である。SHSAOパラメータSAOP_S2に含まれるシンタックス要素sao_unit_width_minus1は、CTBSAOユニットに対応するフィルタ対象領域の水平方向におけるサイズ(以下、CTBSAOユニットの水平方向のサイズと称する)を、ツリーブロックの数に基づいて表した値である。SHSAOパラメータSAOP_S2における他のシンタックス要素については、SHSAOパラメータSAOP_Sと同一であるため、説明を省略する。
図15は、変形例8における、SHSAOパラメータSAOP_S2の各シンタックス要素を示す図である。SHSAOパラメータSAOP_S2に含まれるシンタックス要素sao_unit_width_minus1は、CTBSAOユニットに対応するフィルタ対象領域の水平方向におけるサイズ(以下、CTBSAOユニットの水平方向のサイズと称する)を、ツリーブロックの数に基づいて表した値である。SHSAOパラメータSAOP_S2における他のシンタックス要素については、SHSAOパラメータSAOP_Sと同一であるため、説明を省略する。
LCUモードにおいては前述のAPSモードとは異なり、CTBSAOユニットに対応するフィルタ対象領域の垂直方向のサイズ(以下、CTBSAOユニットの垂直方向のサイズと称する)は明示的に符号化データに含めず、暗黙的に所定の値に固定する。例えば、LCUモードにおいてはCTBSAOユニットの垂直方向のサイズを1と固定すれば、ツリーブロックのライン単位の処理は常に同一に保たれ、簡潔に装置を構成できる。
適応オフセットフィルタの処理の単位(SAOユニットのサイズ)は、CTBSAOユニットの水平方向のサイズ×CTBSAOユニットの垂直方向のサイズとなる。具体的には、sao_unit_width_minus1が0の場合にはツリーブロック単位で処理が行われ、0以上とする場合には複数のツリーブロック単位で実行することができる。符号化データの構造においても、sao_unit_width_minus1が0の場合にはツリーブロック単位で適応フィルタ情報が符号化され、0以上とする場合には複数のツリーブロック単位で適応フィルタ情報が符号化される。
(CTBSAOパラメータSAOP_C2)
図16は、変形例8における、CTBSAOパラメータSAOP_C2の各シンタックス要素を示す図である。CTBSAOパラメータSAOP_C2は、概略的には、CTBSAOユニット情報(sao_unit_cabac())およびCTBSAOオフセット情報(sao_unit_cabac())をシンタックス要素として含む。CTBSAOユニット情報(sao_unit_cabac())およびCTBSAOオフセット情報(sao_unit_cabac())については既に説明したため省略する。CTBSAOパラメータSAOP_C2のシンタックス冒頭の条件分岐は、sao_interleaving_flagが真、すなわちLCUモードであり、かつ、( xCtb % SaoNumLcuInUnitW == 0)である場合(%は剰余を表す)すなわちCTBSAOユニットに対応するフィルタ対象領域の左端に対応するツリーブロックについてのみ、sao_unit_cabac()が符号化データに含まれることを示している。ここで、xCtbは処理対象ツリーブロックの水平方向の位置をツリーブロック単位で表した値であり、SaoNumLcuInUnitWはSAOユニットの水平方向のサイズをツリーブロック単位で表した値であり、APSモードの場合と同様に、sao_unit_width_minus1に基づいて導出される。また、xCtbは処理対象ツリーブロックの水平方向の位置を画素単位で表す場合には、( xCtb % SaoNumLcuInUnitW == 0)の代わりに、( xCtb % (SaoNumLcuInUnitW*CtbSize) == 0)を用いる。
図16は、変形例8における、CTBSAOパラメータSAOP_C2の各シンタックス要素を示す図である。CTBSAOパラメータSAOP_C2は、概略的には、CTBSAOユニット情報(sao_unit_cabac())およびCTBSAOオフセット情報(sao_unit_cabac())をシンタックス要素として含む。CTBSAOユニット情報(sao_unit_cabac())およびCTBSAOオフセット情報(sao_unit_cabac())については既に説明したため省略する。CTBSAOパラメータSAOP_C2のシンタックス冒頭の条件分岐は、sao_interleaving_flagが真、すなわちLCUモードであり、かつ、( xCtb % SaoNumLcuInUnitW == 0)である場合(%は剰余を表す)すなわちCTBSAOユニットに対応するフィルタ対象領域の左端に対応するツリーブロックについてのみ、sao_unit_cabac()が符号化データに含まれることを示している。ここで、xCtbは処理対象ツリーブロックの水平方向の位置をツリーブロック単位で表した値であり、SaoNumLcuInUnitWはSAOユニットの水平方向のサイズをツリーブロック単位で表した値であり、APSモードの場合と同様に、sao_unit_width_minus1に基づいて導出される。また、xCtbは処理対象ツリーブロックの水平方向の位置を画素単位で表す場合には、( xCtb % SaoNumLcuInUnitW == 0)の代わりに、( xCtb % (SaoNumLcuInUnitW*CtbSize) == 0)を用いる。
なお、CTBSAOユニットに対応するフィルタ対象領域の左端に対応するツリーブロックについてのみではなく、CTBSAOユニットに対応するフィルタ対象領域の右端に対応するツリーブロックで、適応フィルタパラメータを復号することも好適である。この場合には、( xCtb % SaoNumLcuInUnitW == SaoNumLcuInUnitW-1)の条件分岐を用いる。
なお、シンタックス冒頭の条件分岐は、sao_interleaving_flagが真、すなわちLCUモードであり、かつ、( xCtb % SaoNumLcuInUnitW == 0)である場合(%は剰余を表す)すなわちCTBSAOユニットに対応するフィルタ対象領域の左端に対応するツリーブロックについてのみ、sao_unit_cabac()が符号化データに含まれることを示している。
このように、SAOパラメータSAOPの格納方法に応じて適応フィルタ処理の単位(SAOユニット)のサイズを設定することにより、1個のオフセット情報OIを複数のツリーブロックに対応させるようにすれば、オフセット情報OIの最大数を抑制して、必要なメモリ量を低減することができる。
なお、ピクチャ、タイルおよびスライスなどによって規定される所定の領域の境界を内部に含むようにSAOユニットUが位置する場合には、処理対象SAOユニットUの実質的な水平方向のサイズ(処理対象となる画素が実際に含まれる領域のサイズ)は、指定されたSaoNumLcuInUnitWよりも小さくなる。このような対象SAOユニットUに対しては、適応フィルタを適用しないものとして、オフセット情報OIの符号化を省略してもよい。例えば、当該SAOユニットUに対するオフセット情報として、sao_type_idx=0(フィルタを適用しない)を割り当てるとよい。
また、輝度と色差のSAOユニットのサイズを異ならせてもよい。図22は、その場合における、SHSAOパラメータSAOP_S3の各シンタックス要素を示す図である。SHSAOパラメータSAOP_S3に含まれるシンタックス要素sao_luma_unit_width_minus1は、輝度画素に対するCTBSAOユニットの水平方向におけるサイズを、ツリーブロックの数に基づいて表した値である。また、sao_cb_unit_width_minus1およびsao_cr_unit_width_minus1は、それぞれ、色差Cbおよび色差Cr画素に対するCTBSAOユニットの水平方向におけるサイズを、ツリーブロックの数に基づいて表した値である。SHSAOパラメータSAOP_S3における他のシンタックス要素については、SHSAOパラメータSAOP_Sと同一であるため、説明を省略する。
このとき、SAOのユニットサイズを表す変数SaoNumLcuInUnitWおよびSaoNumLcuInUnitHは画素値の成分によって異なる。変数SaoNumLcuInUnitWおよびSaoNumLcuInUnitHの値は、例えば、処理対象の画素値の成分を示すインデックスcIdxを用いて、次のように導出できる。
SaoNumLcuInUnitW = ( cIdx == 0 ) ? sao_luma_unit_width_minus1 + 1 :
( cIdx == 1 ) ? sao_cb_unit_width_minus1 + 1 :
( cIdx == 2 ) ? sao_cr_unit_width_minus1 + 1
SaoNumLcuInUnitH = ( cIdx == 0 ) ? sao_luma_unit_height_minus1 + 1 :
( cIdx == 1 ) ? sao_cb_unit_height_minus1 + 1 :
( cIdx == 2 ) ? sao_cr_unit_height_minus1 + 1
なお、“ ? : ”は三項演算子であり、例えば式 x?y:z においてxが真の場合には式yの値、xが偽の場合には式zの値が、演算結果の値となる。
( cIdx == 1 ) ? sao_cb_unit_width_minus1 + 1 :
( cIdx == 2 ) ? sao_cr_unit_width_minus1 + 1
SaoNumLcuInUnitH = ( cIdx == 0 ) ? sao_luma_unit_height_minus1 + 1 :
( cIdx == 1 ) ? sao_cb_unit_height_minus1 + 1 :
( cIdx == 2 ) ? sao_cr_unit_height_minus1 + 1
なお、“ ? : ”は三項演算子であり、例えば式 x?y:z においてxが真の場合には式yの値、xが偽の場合には式zの値が、演算結果の値となる。
このように、画素値の成分毎にSAOユニットのサイズを異ならせることで、各画素値の成分に応じた効率的な適応フィルタの適用が可能となる。
[変形例9]
上記変形例8で説明したようなSAOユニットのサイズ指定を、スライスヘッダSHや適応フィルタパラメータAPSではなく、さらに上位のパラメータセット(例えば、シーケンスパラメータセット)に格納して共用することもできる。これについて図13を用いて説明する。
[変形例9]
上記変形例8で説明したようなSAOユニットのサイズ指定を、スライスヘッダSHや適応フィルタパラメータAPSではなく、さらに上位のパラメータセット(例えば、シーケンスパラメータセット)に格納して共用することもできる。これについて図13を用いて説明する。
図13は、符号化データ#1のシーケンスパラメータセットSPSのシンタックス要素の別の構成を示す図である。なお、図4と同じシンタックス要素については説明を省略する。シンタックス要素sao_unit_width_minus1およびsao_height_minus1は、既に説明した同名のシンタックス要素と同じく、それぞれ、SAOユニットの水平方向におけるサイズおよび垂直方向におけるサイズを、ツリーブロックの数に基づいて表した値である。図13に示したシーケンスパラメータセットSPSを用いる場合には、APSSAOパラメータSAOP_A2およびSHSAOパラメータSAO_S2は、sao_unit_width_minus1およびsao_unit_height_minus1を含まず、シーケンスパラメータセットSPSに格納されている各々の値を必要に応じて参照すればよい。
[変形例10]
さらに、SAOユニットのサイズ指定を、符号化データ#1に直接含めず、プロファイルまたはレベルに基づいてSAOユニットのサイズを所定の値に設定するように構成することもできる。なお、プロファイルとは、符号化データの構成要素の組み合わせを示すものであり、レベルとは、画像データやメモリサイズなどデコーダが満たすべき量的な要件を示すものである。符号化データ#1を復号可能な動画像復号装置に要求されるプロファイルとレベルは、シーケンスパラメータセットSPSに含まれるシンタックス要素profile_idcおよびlevel_idcによって特定される。
[変形例10]
さらに、SAOユニットのサイズ指定を、符号化データ#1に直接含めず、プロファイルまたはレベルに基づいてSAOユニットのサイズを所定の値に設定するように構成することもできる。なお、プロファイルとは、符号化データの構成要素の組み合わせを示すものであり、レベルとは、画像データやメモリサイズなどデコーダが満たすべき量的な要件を示すものである。符号化データ#1を復号可能な動画像復号装置に要求されるプロファイルとレベルは、シーケンスパラメータセットSPSに含まれるシンタックス要素profile_idcおよびlevel_idcによって特定される。
プロファイルに基づいて設定する例として、プロファイルProfAおよびプロファイルProfBが規定されているとき、プロファイルProfAではSAOユニットの水平方向のサイズSaoNumLcuInUnitWの値が1、垂直方向のサイズSaoNumLcuInUnitHの値が1であるとする。また、プロファイルProfBではSAOユニットの水平方向のサイズSaoNumLcuInUnitWの値が4、垂直方向のサイズSaoNumLcuInUnitHの値が2であるとする。profile_idcがプロファイルProfAを適用することを示していれば、SAOユニットUの大きさは、1×1ツリーブロックと設定され、プロファイルProfBを適用することを示していれば、SAOユニットUの大きさは、4×2ツリーブロックと設定される。これはプロファイルが2個以外の場合でも同様である。
レベルに基づいて設定する例も同様に、レベルLvAおよびレベルLvBが規定されているとき、レベルLvAではSAOユニットの水平方向のサイズSaoNumLcuInUnitWの値が1、垂直方向のサイズSaoNumLcuInUnitHの値が1であるとする。また、レベルLvBではSAOユニットの水平方向のサイズSaoNumLcuInUnitWの値が4、垂直方向のサイズSaoNumLcuInUnitHの値が2であるとする。level_idcがレベルLvAを適用することを示していれば、SAOユニットUの大きさは、1×1ツリーブロックと設定され、レベルLvBを適用することを示していれば、SAOユニットUの大きさは、4×2ツリーブロックと設定される。これはレベルが2個以外の場合でも同様である。
プロファイルまたはレベルに基づいてSAOユニットのサイズを設定する場合も、変形例9と同様に、APSSAOパラメータSAOP_A2およびSHSAOパラメータSAO_S2は、sao_unit_width_minus1およびsao_unit_height_minus1を含まず、シーケンスパラメータセットSPSに格納されている各々の値を必要に応じて参照すればよい。また、シーケンスパラメータセットSPSのシンタックスとしては、図4で説明したものを用いればよい。
あるいは、プロファイルまたはレベルに基づいて設定されるサイズを設定可能な最小値または初期値として、変形例8および変形例9で説明したように、符号化データ#1にSAOユニットのサイズを含めても構わない。
[変形例11]
上記変形例で説明したように、動画像復号装置1では、SAOユニットのサイズを指定する実施の形態も可能である。これらのサイズ指定方法と、変形例5のCTBSAOパラメータSAOP_Cの別の配置を組み合わせた変形例を、図22から図25を用いて説明する。図23から図25は、いずれも、スライスデータSDのシンタックス要素を示している。なお、既に説明したものと同名のシンタックス要素については、説明を省略する。
[変形例11]
上記変形例で説明したように、動画像復号装置1では、SAOユニットのサイズを指定する実施の形態も可能である。これらのサイズ指定方法と、変形例5のCTBSAOパラメータSAOP_Cの別の配置を組み合わせた変形例を、図22から図25を用いて説明する。図23から図25は、いずれも、スライスデータSDのシンタックス要素を示している。なお、既に説明したものと同名のシンタックス要素については、説明を省略する。
図23は、LCUモードにおいてSAOユニットのサイズを指定し、さらに、CTBSAOパラメータをツリーブロックの後に配置する場合のシンタックスの例を示した図である。図23に示すCTBSAOパラメータSAOP_C3においては、冒頭の条件分岐によって、水平方向にSaoNumLcuInUnitW個のツリーブロックを単位とするSAOユニットを用いる場合に、SaoNumLcuInUnitW個毎のツリーブロックの直後、すなわちSAOユニットの終端に位置するツリーブロックにのみ、SAOユニットUおよびSAOオフセット情報OIが符号化される。
図24は、LCUモードにおいてSAOユニットのサイズを指定し、さらに、CTBSAOパラメータをツリーブロックの後に配置する場合のシンタックスの別の例を示した図である。図24に示すCTBSAOパラメータSAOP_C4においては、先頭の条件判定によって、SaoNumLcuInUnitW個毎のツリーブロックの直後だけでなく、スライスの終端に伴ってSaoNumLcuInUnitW個未満のツリーブロックで終端したSAOユニットに対しても、最後のツリーブロックの直後にSAOユニットUおよびSAOオフセット情報OIが格納される。ここで、moreDataFlagは、ツリーブロックの処理をする際に得られる値で、対象ツリーブロックがスライス終端であるかどうかを示すフラグである。moreDataFlagは、対象ツリーブロック直後にSAOユニットUおよびSAOオフセット情報OIを挿入するか否かの判定に用いられる。
図25は、LCUモードにおいてSAOユニットのサイズを指定し、さらに、CTBSAOパラメータをツリーブロックの後に配置する場合のシンタックスの第2の別の例を示した図である。図25に示すCTBSAOパラメータSAOP_C5においては、冒頭の条件判定によって、SaoNumLcuInUnitW個毎のツリーブロックの直後およびスライスの終端に加え、ピクチャ右端にかかるSAOユニットにおいても、SAOユニットUおよびSAOオフセット情報OIが格納される。対象ツリーブロックがピクチャ右端か否かは、ツリーブロックの水平方向の位置を表すxCtbと、ピクチャの幅をツリーブロック単位で表した値であるPicWidthInCtbsとに基づいて判定される。
図26は、LCUモードにおいてSAOユニットのサイズを指定し、さらに、CTBSAOパラメータをツリーブロックの後に配置する場合のシンタックスの第3の別の例を示した図である。図26に示すCTBSAOパラメータSAOP_C6においては、冒頭の条件判定によって、対象スライス先頭のツリーブロックから数えてSaoNumLcuInUnitW個毎のツリーブロックの直後に、SAOユニットUおよびSAOオフセット情報OIが格納される。
図27は、LCUモードにおいてSAOユニットのサイズを輝度と色差で個々に指定し、さらに、CTBSAOパラメータをツリーブロックの後に配置する場合のシンタックスの例を示した図である。図27に示すCTBSAOパラメータSAOP_C7においては、各画素成分に対応するSAOユニットUのシンタックス直前に配置された条件判定によって、各画素成分に対応するSAOユニットUのサイズに応じた頻度で、SAOユニットUおよびSAOオフセット情報OIが符号化される。
図32は、適応フィルタパラメータ(CTBSAOパラメータ、CTBALFパラメータ)を、ツリーブロック(図32においてcoding_tree()と表記)の内部に配置するシンタックスの、別の例である。変形例6における図31と異なり、図32に示す例では、SAOユニットの横幅を指定した場合の例を示している。水平方向の位置を判定する際に、最上位のツリーブロックサイズCtbSizeではなく、適応フィルタユニット(SAOユニット)の横幅LFUnitWidth(LFUnitWidth=CtbSize * (sao_unit_width_minus1 + 1))を用いることで、複数(SaoNumLcuInUnitW個)のツリーブロックの末尾、すなわち適応フィルタユニット(SAOユニット)の終端に位置するツリーブロックの末尾にのみ、適応フィルタユニット(SAOユニットUおよびSAOオフセット情報OI)が符号化される。
以上のように、本実施形態に係る動画像復号装置1では、入力される符号化データより復号される復号済の復号画素値に基づいて生成される予測画像に基づいてフィルタ前復号画像を生成し、上記フィルタ前復号画像に一以上のループ内フィルタを適用して復号画像を生成するものであり、上記符号化データ#1より復号される、所定の値域をもったオフセット情報に基づいて、オフセット値を局所復号画像に加算する適応オフセットフィルタを備えている。
また、適応オフセットフィルタの処理単位を、オフセット情報の格納方法に基づいて設定することで、各々の格納方法に適した処理単位を設定しながらオフセット情報の最大数を低減することができる。
このように、値域を制限したオフセットを含む符号化データ#1を用いて適応オフセットフィルタ処理を行うことで、SAOパラメータSAOPの格納に要するメモリ量を低減することができる。
[変形例12]
Fine Granularity Sliceと呼ばれるCTBの途中でスライス境界が生じる(スライスが終端する、もしくは、スライスが開始する)場合において、適応ループフィルタのフィルタ処理(適応オフセットの適応フィルタ部62の処理)を変更することもできる。スライス境界の粒度(SliceGranularity)は、PPSで符号化されるslice_granularityに応じて以下の式で定まる。
[変形例12]
Fine Granularity Sliceと呼ばれるCTBの途中でスライス境界が生じる(スライスが終端する、もしくは、スライスが開始する)場合において、適応ループフィルタのフィルタ処理(適応オフセットの適応フィルタ部62の処理)を変更することもできる。スライス境界の粒度(SliceGranularity)は、PPSで符号化されるslice_granularityに応じて以下の式で定まる。
SliceGranularity=(slice_granularity<<1)
スライスを構成する最小単位(以下スライス境界ユニット)のサイズは、CTBサイズとslice_granularityにより以下のように定まる。
スライスを構成する最小単位(以下スライス境界ユニット)のサイズは、CTBサイズとslice_granularityにより以下のように定まる。
スライス境界ユニットのサイズ=CTBのサイズ>> slice_granularity
例えば、CTBサイズが64×64、slice_granularityが1の場合には、スライス境界ユニットのサイズは32×32となる。
例えば、CTBサイズが64×64、slice_granularityが1の場合には、スライス境界ユニットのサイズは32×32となる。
スライスの開始位置(slice_address)は、CTBをSliceGranularityで定まるスライス境界ユニットの位置として復号される。スライスの開始位置に対応するCTBのラスタスキャン上の開始位置SliceCtbAddrRSは、以下の式で求めることができる。
SliceCtbAddrRS = (slice_address>>SliceGranularity)
スライスの終端は、スライス終端を示すフラグend_of_sliceが1により導出される。end_of_sliceが1の直前の符号化ツリーの位置が、スライスの終端位置となる。
スライスの終端は、スライス終端を示すフラグend_of_sliceが1により導出される。end_of_sliceが1の直前の符号化ツリーの位置が、スライスの終端位置となる。
分割CTBは、当該CTBからスライスからスライスが開始され、その開始位置がCTBの境界でない場合、もしくは、当該CTBでスライスが終端し、その終端位置がCTBの境界にない場合である。非分割CTBは上記以外の場合である。
スライスのアドレスslice_addressが1<<SliceGranularityの倍数である場合、すなわちslice_addressの(1<<SliceGranularity)による剰余が0である場合、スライスの位置はCTBの境界にある。つまり、slice_address%(1<<SliceGranularity)==0はスライス境界を意味する。
本変形例では、LCUモードの場合においてツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
図41(a)は、スライス境界の例を示す図である。スライス#1は2つのツリーブロック、TB#1とTB#2Aから構成され、スライス#2は、TB#2BとTB#3から構成される。TB#1、TB#3は、CTBの途中にスライス境界がない非分割CTBを構成するツリーブロック(以下、単に非分割CTBと呼ぶ)であり、TB#2は、CTBの途中にスライス境界がある分割CTBを構成するツリーブロック(以下、単に分割CTBと呼ぶ)を示す。さらに、CTBの終端を構成するリーフを含むツリーブロックTBを完了TBと呼ぶ。CTBの途中でスライスが終端しないツリーブロックは完了TBである。CTBの途中でスライスが終端するツリーブロックは非完了TBと呼ぶ。TB#2Aは、分割CTBの非完了TBであり、TB#2Bは、分割CTBの完了TBである。
図41(b)には、適応ループフィルタパラメータがLCUモード(インタリーブモード)の場合のスライス#1とスライス#2の符号化データの構成を示す。スライス#1は、スライスヘッダSH、TB#1、LFparam#1(ここでLF paramはinterleave_loop_filter_paramを示す)、eos#1(ここでeosはend_of_sliceを示す)、TB#2A、eos#2Aから構成され、スライス#2は、スライスヘッダSH、TB#2B、LFparam#2B、eos#2B、TB#3A、LFparam#3、eos#3から構成される。図31のように、対象符号化ツリーがそれ以上分割されない場合(符号化ツリーが末端のノードであるリーフ(leaf)の場合)、かつ、CTBを構成する最後の符号化ツリーを含む場合のみである。CTB終端を含むリーフのみ符号化される場合には、分割CTBの非完了TBでは適応ループフィルタパラメータが符号化されない(LFparam#2Aは符号化されない)。
図41(c)は、適応ループフィルタのフィルタ処理を示す図である。図41(c)に示すように、非分割CTBと分割CTBの完了TBでは、適応フィルタを適用する。逆に、分割CTBの非完了TBでは対応する適応ループフィルタパラメータが符号化されないためフィルタ処理を行わない。分割TB#2の適応ループフィルタパラメータにはLFparam#2Bがありえる。しかし、スライス#1(非完了TBを含むスライス)のフィルタ処理で、スライス#2(非終端TBのCTBの終端を含む完了TBを含むスライス)で復号されるLFparam#2Bを用いる場合、スライス#1の復号処理をスライス#2の到達時点まで遅らせる必要が生じる。図41(a)はフィルタ適用可能性がyesの領域をグレーとし、noの領域を白にしている。
以上の構成により、CTBの途中でスライス分割が行われる場合においても、非完了TBを含む分割CTBに関するスライスの復号処理を遅らせることなく、適応ループフィルタ処理を行うことができるため、スループットが向上する。また、処理を遅らせる必要がなく処理が簡略化される。
[変形例13]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、LCUモードの場合においてツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
[変形例13]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、LCUモードの場合においてツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
図42(a)は、スライス境界の例を示す図である。図42(b)には、適応ループフィルタパラメータがLCUモード(インタリーブモード)の場合のスライス#1とスライス#2の符号化データの構成を示す。図42(a)、(b)は各々図41(a)、(b)と構成が同一であるため説明を省略する。
図42(c)は、適応ループフィルタのフィルタ処理を示す図である。図42(c)に示すように、非分割CTBと分割CTBの完了TBの両者とも適応フィルタを適用する。分割CTBの非完了TBでは対応する分割CTBの完了TBの後に符号化される適応ループフィルタパラメータ(本例ではLFparam#2B)を用いて適応ループフィルタ処理を行う。
以上の構成により、CTBの途中でスライス分割が行われる場合においても、適応ループフィルタ処理を行うことができるため、符号化効率が向上する。
[変形例14]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、LCUモードの場合においてツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
[変形例14]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、LCUモードの場合においてツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
図43(a)は、スライス境界の例を示す図である。図43(b)には、適応ループフィルタパラメータがLCUモード(インタリーブモード)の場合のスライス#1とスライス#2の符号化データの構成を示す。図43(a)、(b)は各々図41(a)、(b)と構成が同一であるため説明を省略する。
図43(c)は、適応ループフィルタのフィルタ処理を示す図である。図43(c)に示すように、スライス境界にループフィルタ処理を行うことを示すslice_loop_filter_across_slices_enabled_flagが1の場合には、分割CTBの非完了TBでは適応フィルタを適用せず、逆に、スライス境界にループフィルタ処理を行わない場合には、分割CTBの非完了TBでも適応フィルタを適用する。なお、slice_loop_filter_across_slices_enabled_flagは、シーケンス単位でループフィルタ処理を制御するフラグseq_loop_filter_across_slices_enabled_flagが1の場合に符号化される。seq_loop_filter_across_slices_enabled_flagが0の場合には、スライス境界にループフィルタ処理を行わない、すなわち、slice_loop_filter_across_slices_enabled_flag=0とする。
本例のように適応ループフィルタ処理を行わないように制限する処理をLCUモードのみに適用し、APSモードおよびSHモードには適用しないことも好適である。すなわち、LCUモードかつslice_loop_filter_across_slices_enabled_flagが1の場合に、分割CTBの非完了TBでは適応フィルタを適用せず、それ以外の場合には適用する。
以上の構成により、スライス境界にループフィルタ処理を行わない場合には、非完了TBに対して適応ループフィルタ処理を行わないように制限することでスループット向上の効果を奏し、スライス境界にループフィルタ処理を行う場合には、非完了TBに対して適応ループフィルタ処理を行うことで符号化効率が向上する効果を奏する。
[変形例15]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、APSモードもしくはSHモードの場合と、LCUモードの場合において処理を変える構成も可能である。LCUモードの場合においてはツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
[変形例15]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、APSモードもしくはSHモードの場合と、LCUモードの場合において処理を変える構成も可能である。LCUモードの場合においてはツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
図44(a)は、スライス境界の例を示す図である。図44(b)には、適応ループフィルタパラメータがLCUモード(インタリーブモード)の場合のスライス#1とスライス#2の符号化データの構成を示す。図44(a)、(b)は各々図41(a)、(b)と構成が同一であるため説明を省略する。
図44(c)は、適応ループフィルタのフィルタ処理を示す図である。図44(c)に示すように、LCUモードの場合には、分割CTBの非完了TBでは適応フィルタを適用せず、逆に、APSモードおよびSHモードでは、分割CTBの非完了TBでも適応フィルタを適用する。
以上の構成により、LCUモードの場合には非完了TBに対して適応ループフィルタ処理を行わないように制限することでスループット向上の効果を奏し、APSモードもしくはSHモードの場合には、非完了TBに対して適応ループフィルタ処理を行うことで符号化効率が向上する効果を奏する。
[変形例16]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、APSモードもしくはSHモードの場合と、LCUモードの場合において処理を変える構成も可能である。LCUモードの場合においてはツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
[変形例16]
CTBの途中でスライス境界が生じる場合の適応ループフィルタのフィルタ処理の別の例である。本変形例では、APSモードもしくはSHモードの場合と、LCUモードの場合において処理を変える構成も可能である。LCUモードの場合においてはツリーブロックの最後に、適応フィルタパラメータinterleave_loop_filter_param()を符号化する図31に示すようなデータ構成を用いる。
図45(a)は、スライス境界の例を示す図である。図45(b)には、適応ループフィルタパラメータがLCUモード(インタリーブモード)の場合のスライス#1とスライス#2の符号化データの構成を示す。
図45(b)には、適応ループフィルタパラメータがLCUモード(インタリーブモード)の場合のスライス#1とスライス#2の符号化データの構成を示す。スライス#1は、スライスヘッダSH、TB#1、LFparam#1(ここでLF paramはinterleave_loop_filter_paramを示す)、eos#1(ここでeosはend_of_sliceを示す)、TB#2A、eos#2Aから構成され、スライス#2は、スライスヘッダSH、TB#2B、eos#2B、TB#3A、LFparam#3、eos#3から構成される。本例は、図41(b)の符号化データと異なり、分割CTBでは、適応ループフィルタパラメータを含まない(図41(b)では符号化していたLF param#2Bを符号化しない)。より具体的には、スライスヘッダで符号化されるスライス先頭アドレスが、CTB境界以外にある場合には、その先頭スライスに対応するCTBのツリーブロックでは、たとえ完了TBであっても、適応ループフィルタパラメータを符号化しない。
図45(c)は、適応ループフィルタのフィルタ処理を示す図である。図45(c)に示すように、分割CTBの場合には、適応ループフィルタ処理を省略する。
以上の構成により、分割CTBにおける適応ループフィルタ処理を簡略化する効果とさらにスループット向上の効果を奏する。
なお、スライス境界にループフィルタ処理を行うか否かに応じて処理を変更することも可能である。すなわち、スライス境界にループフィルタ処理を行わない場合(seq_loop_filter_across_slices_enabled_flagが0もしくはslice_loop_filter_across_slices_enabled_flagが0の場合)には、分割CTBに対して適応ループフィルタ処理を適用せず、逆に、スライス境界にループフィルタ処理を行う場合(slice_loop_filter_across_slices_enabled_flagが1の場合)には、分割CTBに対して適応ループフィルタ処理を適用する。適応ループフィルタパラメータの復号は、LCUモードであり、かつ、slice_loop_filter_across_slices_enabled_flagが1であり、でかつ、非分割CTBの完了TBの場合に行う。非分割CTBは、スライスの先頭CTB以外かつCTBの途中でスライス分割されない場合、もしくは、スライス先頭CTBかつスライス先頭アドレスがCTBの途中でない場合である。
[変形例17] 〔左マージ情報によるCTBSAOユニット〕
上記非特許文献2の技術では、SAOユニットUサイズはCTBサイズと等しい。そのため、CTBサイズが小さい場合、例えば32×32、16×16の場合、単位面積当たりのパラメータの符号量のオーバーヘッドが大きくなり、符号化効率が低下するという問題がある。
[変形例17] 〔左マージ情報によるCTBSAOユニット〕
上記非特許文献2の技術では、SAOユニットUサイズはCTBサイズと等しい。そのため、CTBサイズが小さい場合、例えば32×32、16×16の場合、単位面積当たりのパラメータの符号量のオーバーヘッドが大きくなり、符号化効率が低下するという問題がある。
図62は、従来技術における符号化データ#1の、ツリーブロック単位で符号化されるCTBSAOパラメータSAOP_C10のシンタックスを示す図である。パラメータは、マージ制御情報(sao_merge_left_flag, sao_merge_up_flag)と、CTBSAOユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)とをシンタックス要素として含む。従来技術では、対象CTBの左に隣接するCTBが同じスライスに属するか否かを示すフラグleftCtbInSliceと、対象CTBの左に隣接するCTBが同じタイルに属するか否かを示すフラグleftCtbInTileを導出し、それらフラグの値に応じて、対象CTBの左に隣接するCTBとマージするか否かを示すフラグsao_merge_left_flag(左マージフラグ)の導出方法を変更する。
図63は、従来技術における左マージフラグsao_merge_left_flagの導出方法を示す図である。leftCtbInSliceが1かつleftCtbInTileが1の場合、すなわち、対象CTBの左に隣接するCTBが同じスライスに属し、さらに同じタイルに属する場合に、フラグsao_merge_left_flagを符号化データから復号する。それ以外の場合、すなわち、対象CTBの左に隣接するCTBが同じスライスに属さない、もしくは、同じタイルに属さない場合には、フラグsao_merge_left_flagを復号せずに、0を設定する。
さらに、従来技術では、フラグsao_merge_left_flagで設定されたフラグが1の場合、対象CTBの左に隣接するCTBSAOユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)を対象CTBのユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)としてコピーする。
図57は、本変形例における、CTBSAOユニットの構成を示す図である。本変形例では、水平方向に連続したツリーブロック(CTB)の集合を1つのCTBSAOユニットとする。CTBSAOユニットの幅は、sao_unit_width個のCTBの幅であり、高さは1個のCTBの高さである。また、本変形例の動画像復号装置は、各CTBを復号する時点で、左マージフラグsao_merge_left_flagを復号および導出する。図57では、左マージフラグsao_merge_left_flagがCTBSAOユニットの左端のCTBで符号化(復号)され、CTBSAOユニットの左端以外のCTBでは符号化(復号)されずに、導出(infer)されることが図示されている。
図58は、本変形例における、符号化データ#1のツリーブロック(CTB)の集合から構成されるCTBSAOユニットの水平方向のサイズを示すシンタックスを示す図である。図58(a)はピクチャパラメータセットの例を示し、図58(b)はスライスヘッダの例を示す図である。CTBSAOユニットのサイズはCTBの整数倍であり、シンタックス要素sao_unit_width_minus1は、CTBの数から1を引いた数を示す。なお、シンタックス要素としてsao_unit_width_minus1ではなく、CTBの数の底2の対数であるlog2_sao_unit_widthを符号化しても良い。また、輝度と色差の各々に対してCTBSAOユニットのサイズのパラメータを設け、CTBSAOユニットのサイズを輝度と色差で異なるものとしても良い。
図59は、本変形例における、符号化データ#1のスライスデータslice_dataの構成を示す図である。スライスデータ中で、CTBSAOパラメータが符号化される。
図60は、本変形例における、符号化データ#1の、ツリーブロック単位で符号化されるCTBSAOパラメータSAOP_C9のシンタックスを示す図である。パラメータは、マージ制御情報(sao_merge_left_flag, sao_merge_up_flag)と、CTBSAOユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)とをシンタックス要素として含む。本変形例の符号化データ#1は、対象CTBが、CTBの集合(CTBSAOユニット)の左端に位置する場合のみ、対象CTBの左に隣接するCTBとマージするか否かを示すフラグsao_merge_left_flagを含む。また、対象CTBが、CTBSAOユニットの左端に位置しない場合には、符号化データはフラグsao_merge_left_flagを含まない。より詳細には、図60に示すように、対象CTBの左に隣接するCTBが同じスライスに属するか否かを示すフラグleftCtbInSliceと、対象CTBの左に隣接するCTBが同じタイルに属するか否かを示すフラグleftCtbInTileにも依存してフラグsao_merge_left_flagを含むか否かを切り換える。
図61は、本変形例における、左マージフラグsao_merge_left_flagの導出方法を示す図である。図61に示すように、CTB座標が、CTBSAOユニットの左端に位置するか否かを示すフラグHeadOfSaoUnitが1で、leftCtbInSliceが1、かつleftCtbInTileが1の場合に、符号化データはフラグsao_merge_left_flagを含む。また、CTBSAOユニットの左端に位置するか否かを示すフラグHeadOfSaoUnitが1であっても、leftCtbInSliceまたはleftCtbInTileの少なくとも何れかが0の場合には、符号化データはフラグsao_merge_left_flagを含まない。
本変形例において、可変長符号符号化部22は、以下のように、マージ制御情報と、CTBのSAOユニット情報を復号する。まず、パラメータセット(シーケンスパラメータセット、ピクチャパラメータセット、APS)もしくはスライスヘッダから、CTBSAOユニットのサイズを示すシンタックス要素を復号する。図58に示す例では、sao_unit_width_minus1を復号し1を加えることで、CTBSAOユニットのサイズを復号する。続いて、可変長符号符号化部22は、スライスデータ中の各CTBの符号化データを復号する時点で、各CTBに付随するフィルタパラメータを以下のように復号、導出する。以下、各CTBにおける動作を説明する。
CTB座標がCTBSAOユニットの左端に位置するか否かのフラグHeadOfSaoUnitを以下の式により導出する。
headOfSaoUnit = ((rx % ((sao_unit_width_minus1 + 1)*CtbSize) ) == 0)
ここで、rxはCTBの左上座標、%は剰余、CtbSizeはCTBのサイズ(幅および高さ)である。なお、座標rxがCTB単位の座標である場合には、以下の式を用いる。
ここで、rxはCTBの左上座標、%は剰余、CtbSizeはCTBのサイズ(幅および高さ)である。なお、座標rxがCTB単位の座標である場合には、以下の式を用いる。
headOfSaoUnit = ((rx % (sao_unit_width_minus1 + 1) ) == 0)
また、水平方向のサイズが対数値log2_sao_unit_widthで符号化されている場合には、以下の式を用いる。
また、水平方向のサイズが対数値log2_sao_unit_widthで符号化されている場合には、以下の式を用いる。
headOfSaoUnit = ((rx % ((1<<log2_sao_unit_width)*CtbSize) ) == 0)
さらに、可変長符号符号化部22は、対象CTBの左に隣接するCTBが同じスライスに属するか否かを示すフラグleftCtbInSliceと、対象CTBの左に隣接するCTBが同じタイルに属するか否かを示すフラグleftCtbInTileを各々以下の式により導出する。
さらに、可変長符号符号化部22は、対象CTBの左に隣接するCTBが同じスライスに属するか否かを示すフラグleftCtbInSliceと、対象CTBの左に隣接するCTBが同じタイルに属するか否かを示すフラグleftCtbInTileを各々以下の式により導出する。
leftCtbInSlice = CtbAddrInSlice > 0
leftCtbInTile = TileId[ CtbAddrTS ] = = TileId[ CtbAddrRStoTS[ CtbAddrRS ‐ 1 ] ]
ここで、CtbAddrInSliceはスライス先頭のCTBのスライス先頭をベースとしたアドレスを示し、TileId[TS]は、CTBアドレスTSにおけるタイル識別子を示し、CtbAddrRStoTS[RS]は、CTBアドレスRSにおけるCTBアドレスTSを示す。
leftCtbInTile = TileId[ CtbAddrTS ] = = TileId[ CtbAddrRStoTS[ CtbAddrRS ‐ 1 ] ]
ここで、CtbAddrInSliceはスライス先頭のCTBのスライス先頭をベースとしたアドレスを示し、TileId[TS]は、CTBアドレスTSにおけるタイル識別子を示し、CtbAddrRStoTS[RS]は、CTBアドレスRSにおけるCTBアドレスTSを示す。
可変長符号符号化部22は、CTB座標が、CTBSAOユニットの左端に位置するか否かを示すフラグHeadOfSaoUnitが1で、leftCtbInSliceが1、かつleftCtbInTileが1の場合に、符号化データから、フラグsao_merge_left_flagを復号する。それ以外の場合には、上述した図61に従い、フラグsao_merge_left_flagを設定する。
可変長符号符号化部22は、フラグsao_merge_left_flagが1の場合には、対象CTBの左に隣接するCTBSAOユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)を対象CTBのユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)としてコピーして、適応オフセットフィルタ60に供給する。
可変長符号符号化部22は、フラグsao_merge_left_flagが0の場合に、上に隣接するツリーブロックのフィルタパラメータからコピーするか否かを示すフラグsao_upper_merge_flagを導出する。フラグsao_merge_upper_flagが1の場合には、対象CTBの上に隣接するCTBSAOユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)を対象CTBのユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)としてコピーして、適応オフセットフィルタ60に供給する。
可変長符号符号化部22は、いずれのマージフラグ(フラグsao_merge_left_flagとフラグsao_merge_upper_flag)も0の場合には、CTBのユニット情報(sao_type_idx, sao_band_posision, sao_offset_sign, sao_abs_offset)を復号する。
適応オフセットフィルタ60は上記したとおりであるので、説明を省略する。
以上のように、本変形例によれば、CTB座標の位置に応じて、左に隣接するツリーブロックからコピーするか否かを示すフラグsao_merge_left_flagを復号することによって、CTBの集合であるCTBSAOユニット単位で、CTBのSAOユニット情報を復号する。これによって、パラメータの符号量のオーバーヘッドを低減されることができ、符号化効率を向上させることができる。特に、CTBサイズが小さい場合、例えば、32×32、16×16の場合の符号化効率を向上させる効果が大きい。本変形例では、CTB座標の座標が、CTBSAOユニット単位の整数以外の場合には、符号化データは、フラグsao_merge_left_flagを含まず、可変長符号符号化部22で導出するため、フラグsao_merge_left_flagの符号量を削減することができる。特に、複数のCTBの集合を作る場合、例えばCTB4つを1つ集合とする場合、フラグsao_merge_left_flagは1、0、0、0、…のように符号化する。フラグの値が1、0の両者をとる場合、CABACなどの算術符号化を用いたとしても1つのフラグ当たりの符号量は1ビットに近くなり、オーバーヘッドは非常に大きくなってしまう。
上記のように、可変長符号符号化部22は、ツリーブロックの集合の水平方向のサイズを復号し、さらに、対象ツリーブロックの座標が水平方向のサイズの整数倍以外の場合、対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータからコピーするか否かを示す左マージフラグを復号せずに導出し、該左マージフラグが1の場合、対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータをコピーして導出する。
上記の構成によれば、復号対象のツリーブロックの座標が、当該ツリーブロックを含むツリーブロックの集合の水平方向のサイズの整数倍以外の場合に、対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータからコピーするか否かを示す左マージフラグを復号せずに導出する。これにより、左マージフラグのオーバーヘッドを低減させることができ、符号化効率を向上させることができる。
なお、可変長符号符号化部22では、CTBの座標が、CTBSAOユニット単位の整数以外の場合で、対象CTBがスライス境界もしくはタイル境界に位置するとき、すなわち、leftCtbInSliceが0もしくはleftCtbInTileが0のとき、フラグsao_merge_left_flagを0として導出する。よって、スライス境界外もしくはタイル境界外のCTBの符号化データをコピーする問題は生じない。可変長符号符号化部22では、CTBの座標が、CTBSAOユニット単位の整数以外の場合で、leftCtbInSliceが1、かつleftCtbInTileが1のとき、フラグsao_merge_left_flagを1として導出する。
上記のように、可変長符号符号化部22は、対象ツリーブロックの座標が水平方向のサイズの整数倍以外の場合、対象ツリーブロックの左に隣接するツリーブロックが、対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックではないとき、左マージフラグを1として導出し、対象ツリーブロックの左に隣接するツリーブロックが、対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックであるとき、左マージフラグを0として導出する。
上記の構成によれば、復号対象のツリーブロックと、該ツリーブロックの左に隣接しているツリーブロックとが、同じスライスまたはタイルに含まれるか否かによって、左マージフラグを導出するので、対象ツリーブロックがスライス境界に係る場合において別スライスに属するSAOユニット情報をマージすることのないように、左マージフラグを適切に導出することができる。
上記のように、可変長符号符号化部22は、対象ツリーブロックの座標が上記水平方向のサイズの整数倍で、かつ、対象ツリーブロックの左に隣接するツリーブロックが対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックではない場合、上記左マージフラグを符号化データから復号する。
上記の構成によれば、CTBSAOユニット(ツリーブロックの集合)の左端に位置するツリーブロックでは、左マージフラグによりツリーブロックの集合をさらにマージすることが可能であり高い符号化効率を得る効果を奏する。
(動画像符号化装置2)
次に、符号化対象画像を符号化することによって符号化データ#1を生成する動画像符号化装置2について、図17、および図18を参照して説明する。動画像符号化装置2は、その一部に、H.264/MPEG−4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
次に、符号化対象画像を符号化することによって符号化データ#1を生成する動画像符号化装置2について、図17、および図18を参照して説明する。動画像符号化装置2は、その一部に、H.264/MPEG−4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
図17は、本実施形態に係る動画像符号化装置2の構成を示すブロック図である。図17に示すように、動画像符号化装置2は、変換・量子化部21、可変長符号符号化部22、逆量子化・逆変換部23、バッファメモリ24、イントラ予測画像生成部25、インター予測画像生成部26、動きベクトル検出部27、予測方式制御部28、動きベクトル冗長性削除部29、加算器31、減算器32、デブロッキングフィルタ33、適応フィルタ70、および適応オフセットフィルタ80を含む構成である。動画像符号化装置2は、動画像#10(符号化対象画像)を符号化することによって、符号化データ#1を生成する装置である。
変換・量子化部21は、(1)符号化対象画像から予測画像Predを減算した予測残差Dをブロック毎にDCT変換(Discrete Cosine Transform)またはDST変換(Discrete Sine Transform)し、(2)DCT変換により得られたDCT係数またはDST変換により得られたDST係数を量子化し、(3)量子化により得られた量子化予測残差QDを可変長符号符号化部22および逆量子化・逆変換部23に供給する。なお、変換・量子化部21は、(1)量子化の際に用いる量子化ステップQPを、ツリーブロック毎に選択し、(2)選択した量子化ステップQPの大きさを示す量子化パラメータ差分Δqpを可変長符号符号化部22に供給し、(3)選択した量子化ステップQPを逆量子化・逆変換部23に供給する。ここで、量子化パラメータ差分Δqpとは、DCT(またはDST)変換/量子化するツリーブロックに関する量子化パラメータqp(QP=2^(qp/6))の値から、直前にDCT(またはDST)変換/量子化したツリーブロックに関する量子化パラメータqp’の値を減算して得られる差分値のことを指す。
可変長符号符号化部22は、(1)変換・量子化部21から供給された量子化予測残差QD並びにΔqp、(2)後述する予測方式制御部28から供給された予測パラメータPP、および、(3)後述する適応フィルタ70から供給されたフィルタパラメータFP(フィルタセット番号、フィルタ係数群、領域指定情報、並びにオンオフ情報)を可変長符号化することによって、符号化データ#1を生成する。また、可変長符号符号化部22は、適応オフセットフィルタ80から供給されるSAOパラメータSAOPを可変長符号化し、符号化データ#1に含める。SAOパラメータSAOPは、少なくとも、オフセット情報OIを含む。
逆量子化・逆変換部23は、(1)量子化予測残差QDを逆量子化し、(2)逆量子化によって得られたDCT係数あるいはDST係数を逆DCT(Discrete Cosine Transform)変換あるいは逆DST(Discrete Sine Transform)変換し、(3)逆DCT変換あるいは逆DST変換によって得られた予測残差Dを加算器31に供給する。量子化予測残差QDを逆量子化する際には、変換・量子化部21から供給された量子化ステップQPを利用する。なお、逆量子化・逆変換部23から出力される予測残差Dは、変換・量子化部21に入力される予測残差Dに量子化誤差が加わったものであるが、ここでは簡単のために共通の呼称を用いる。
イントラ予測画像生成部25は、各パーティションに関する予測画像Pred_Intraを生成する。具体的には、(1)各パーティションついてイントラ予測に用いる予測モードを選択し、(2)選択した予測モードを用いて、局所復号画像Pから予測画像Pred_Intraを生成する。イントラ予測画像生成部25は、生成したイントラ予測画像Pred_Intraを、予測方式制御部28に供給する。
また、イントラ予測画像生成部25は、各パーティションについて選択された予測モードと、各パーティションのサイズから各パーティションについての予測インデックスPIを特定し、当該予測インデックスPIを予測方式制御部28に供給する。
また、イントラ予測画像生成部25は、対象パーティションのサイズ、および、対象パーティションに割り付けられた予測モードを示す情報であるイントラ符号化モード情報IEMを適応フィルタ70に供給する(不図示)。
動きベクトル検出部27は、各パーティションに関する動きベクトルmvを検出する。具体的には、(1)参照画像として利用するフィルタ済復号画像P_FL’を選択し、(2)選択したフィルタ済復号画像P_FL’において対象パーティションを最良近似する領域を探索することによって、対象パーティションに関する動きベクトルmvを検出する。ここで、フィルタ済復号画像P_FL’は、復号済みの復号画像に対して、デブロッキングフィルタ33によるデブロック処理、適応オフセットフィルタ80による適応的オフセット処理、および、適応フィルタ70による適応的フィルタ処理を施すことによって得られる画像であり、動きベクトル検出部27は、フィルタ済復号画像P_FL’を構成する各画素の画素値をバッファメモリ24から読み出すことができる。動きベクトル検出部27は、検出した動きベクトルmvを、参照画像として利用したフィルタ済復号画像P_FL’を指定する参照画像インデックスRIと共に、インター予測画像生成部26および動きベクトル冗長性削除部29に供給する。なお、双方向予測(重み付き予測)を行うパーティションについては、参照画像として2枚のフィルタ済復号画像P_FL1’およびP_FL2’を選択し、2枚のフィルタ済復号画像P_FL1’およびP_FL2’の各々に対応する動きベクトルmv1およびmv2、並びに、参照画像インデックスRI1およびRI2をインター予測画像生成部26および動きベクトル冗長性削除部29に供給する。
インター予測画像生成部26は、各インター予測パーティションに関する動き補償画像mcを生成する。具体的には、動きベクトル検出部27から供給された動きベクトルmvを用いて、動きベクトル検出部27から供給された参照画像インデックスRIによって指定されるフィルタ済復号画像P_FL’から動き補償画像mcを生成する。動きベクトル検出部27と同様、インター予測画像生成部26は、フィルタ済復号画像P_FL’を構成する各画素の画素値をバッファメモリ24から読み出すことができる。インター予測画像生成部26は、生成した動き補償画像mc(インター予測画像Pred_Inter)を、動きベクトル検出部27から供給された参照画像インデックスRIと共に、予測方式制御部28に供給する。なお、双方向予測(重み付き予測)をパーティションについては、(1)動きベクトルmv1を用いて、参照画像インデックスRI1によって指定されたフィルタ済復号画像P_FL1’から動き補償画像mc1を生成し、(2)動きベクトルmv2を用いて、参照画像インデックスRI2によって指定されたフィルタ済参照画像P_FL2’から動き補償画像mc2を生成し、(3)動き補償画像mc1と動き補償画像mc2との加重平均にオフセット値を加えることによってインター予測画像Pred_Interを生成する。
予測方式制御部28は、イントラ予測画像Pred_Intraおよびインター予測画像Pred_Interを符号化対象画像と比較し、イントラ予測を行うかインター予測を行うかを選択する。イントラ予測を選択した場合、予測方式制御部28は、イントラ予測画像Pred_Intraを予測画像Predとして加算器31および減算器32に供給すると共に、イントラ予測画像生成部25から供給された予測インデックスPIを予測パラメータPPとして可変長符号符号化部22に供給する。一方、インター予測を選択した場合、予測方式制御部28は、インター予測画像Pred_Interを予測画像Predとして加算器31および減算器32に供給すると共に、インター予測画像生成部26から供給された参照画像インデックスRI、並びに、動きベクトル冗長性削除部29(後述)から供給された推定動きベクトルインデックスPMVIおよび動きベクトル残差MVDを予測パラメータPPとして可変長符号符号化部22に供給する。
予測方式制御部28にて選択された予測画像Predを、符号化対象画像から減算することによって、減算器32にて予測残差Dが生成される。減算器32にて生成された予測残差Dは、上述したとおり、変換・量子化部21によってDCT(またはDST)変換/量子化される。一方、予測方式制御部28にて選択された予測画像Predを、逆量子化・逆変換部23にて生成された予測残差Dに加算することによって、加算器31にて局所復号画像Pが生成される。加算器31にて生成された局所復号画像Pは、デブロッキングフィルタ33、適応オフセットフィルタ80および適応フィルタ70を経由したのち、フィルタ済復号画像P_FLとしてバッファメモリ24に格納され、インター予測における参照画像として利用される。
なお、動きベクトル冗長性削除部29は、動きベクトル検出部27によって検出された動きベクトルmvにおける冗長性を削除する。具体的には、(1)動きベクトルmvの推定に用いる推定方法を選択し、(2)選択した推定方法に従って推定動きベクトルpmvを導出し、(3)動きベクトルmvから推定動きベクトルpmvを減算することにより動きベクトル残差MVDを生成する。動きベクトル冗長性削除部29は、生成した動きベクトル残差MVDを、選択した推定方法を示す推定動きベクトルインデックスPMVIと共に、予測方式制御部28に供給する。
デブロッキングフィルタ33は、局所復号画像Pにおけるブロック境界、またはCU境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、局所復号画像Pにおける当該ブロック境界、または当該CU境界に対してデブロッキング処理を施すことによって、当該ブロック境界、または当該CU境界付近の画像の平滑化を行う。デブロッキングフィルタ33によりデブロッキング処理が施された画像は、デブロック済復号画像P_DBとして、適応オフセットフィルタ80に出力される。
適応オフセットフィルタ80は、デブロッキングフィルタ33から供給されるデブロック済復号画像P_DBに対して、適応的オフセットフィルタ処理を施すことによってオフセットフィルタ済復号画像P_OFを生成する。生成されたオフセットフィルタ済復号画像P_OFは、適応フィルタ70に供給される。適応オフセットフィルタ80の具体的な構成については、後述するため、ここでは説明を省略する。
適応フィルタ70は、適応オフセットフィルタ80から供給されるオフセットフィルタ済復号画像P_OFに対して、適応的なフィルタ処理を施すことによって、フィルタ済復号画像P_FLを生成する。適応フィルタ70によりフィルタ処理が施されたフィルタ済復号画像P_FLは、バッファメモリ24に格納される。適応フィルタ70によって用いられるフィルタ係数は、フィルタ済復号画像P_FLと符号化対象画像#10との誤差がより小さくなるように定められたものであり、このようにして定められたフィルタ係数がフィルタパラメータFPとして符号化され、動画像復号装置1に伝送される。
(適応オフセットフィルタ80)
次に、適応オフセットフィルタ80について、図16を参照して説明する。図16は、適応オフセットフィルタ80の構成を示すブロック図である。図16に示すように、適応オフセットフィルタ80は、オフセット設定部81、オフセット情報符号化部82、および適応フィルタ部62を含む構成である。
次に、適応オフセットフィルタ80について、図16を参照して説明する。図16は、適応オフセットフィルタ80の構成を示すブロック図である。図16に示すように、適応オフセットフィルタ80は、オフセット設定部81、オフセット情報符号化部82、および適応フィルタ部62を含む構成である。
(オフセット設定部81)
オフセット設定部81は、対象となる処理単位(例えばツリーブロック)について、入力される動画像#10とデブロック済復号画像P_DBに基づいて、各処理単位に対して適用するSAOオフセット情報OIを設定して出力する。SAOオフセット情報OIは、オフセットタイプsao_type_idxおよびオフセットsao_offset[component][rx][ry][i]を含む。オフセットタイプsao_type_idxがバンドオフセットの場合には、バンドオフセット位置sao_band_positionも設定して出力する。
SAOオフセット情報OIの各パラメータの値は、符号化効率がより向上するよう設定するとよい。特に、オフセットsao_offsetの値は、符号化データ#1についての種々の変形例に対応する動画像符号化装置においては、既に説明したような値域の条件を満たす範囲で設定する。
オフセット設定部81は、対象となる処理単位(例えばツリーブロック)について、入力される動画像#10とデブロック済復号画像P_DBに基づいて、各処理単位に対して適用するSAOオフセット情報OIを設定して出力する。SAOオフセット情報OIは、オフセットタイプsao_type_idxおよびオフセットsao_offset[component][rx][ry][i]を含む。オフセットタイプsao_type_idxがバンドオフセットの場合には、バンドオフセット位置sao_band_positionも設定して出力する。
SAOオフセット情報OIの各パラメータの値は、符号化効率がより向上するよう設定するとよい。特に、オフセットsao_offsetの値は、符号化データ#1についての種々の変形例に対応する動画像符号化装置においては、既に説明したような値域の条件を満たす範囲で設定する。
また、オフセット設定部は、各処理単位に対応するSAOオフセット情報OIに基づいて同一のSAOオフセット情報を共用する領域を決定し、SAOユニットUのマージ制御情報(sao_merge_up_flag, sao_merge_left_flag, sao_run_diffのいずれかまたは複数)として設定する。
オフセット設定部81は、SAOユニットUおよびSAOオフセット情報OIを含むSAOパラメータSAOPを、オフセット情報符号化部に出力する。
(オフセット情報符号化部82)
オフセット情報符号化部82は、オフセット設定部81で設定されたSAOパラメータSAOPを符号化する。APSモードの場合、SAOユニットUおよびSAOオフセット情報OIの符号化データは可変長符号化によって生成され、適応パラメータセットAPSに格納される。LCUモードの場合には、SAOユニットUおよびSAOオフセット情報OIの符号化データは処理単位(例えばツリーブロック)毎に、算術符号を用いた可変長符号化によって生成され、スライスデータSD内の各処理単位の前に格納される。
オフセット情報符号化部82は、オフセット設定部81で設定されたSAOパラメータSAOPを符号化する。APSモードの場合、SAOユニットUおよびSAOオフセット情報OIの符号化データは可変長符号化によって生成され、適応パラメータセットAPSに格納される。LCUモードの場合には、SAOユニットUおよびSAOオフセット情報OIの符号化データは処理単位(例えばツリーブロック)毎に、算術符号を用いた可変長符号化によって生成され、スライスデータSD内の各処理単位の前に格納される。
なお、上述した実施形態では、適応オフセットフィルタ60、80において実行される処理として記載したが、加算するオフセットの値域を限定する処理以外の処理については、適応オフセットフィルタ60、80以外のブロックが実行する構成であってもよい。
<第2の実施形態>
(動画像復号装置1´)
次に、本実施形態に係る動画像復号装置1´について、図46および図47を参照して説明する。動画像復号装置1´は、既に説明した動画像復号装置1の一部構成が異なるものである。
(動画像復号装置1´)
次に、本実施形態に係る動画像復号装置1´について、図46および図47を参照して説明する。動画像復号装置1´は、既に説明した動画像復号装置1の一部構成が異なるものである。
図46は、動画像復号装置1´の構成を示すブロック図である。図46に示すように、動画像復号装置1´は、可変長符号復号部13、動きベクトル復元部14、バッファメモリ15、インター予測画像生成部16、イントラ予測画像生成部17、予測方式決定部18、逆量子化・逆変換部19、加算器20、デブロッキングフィルタ41、統合適応フィルタ55を含む構成である。
図47は、統合適応フィルタ55の構成を示すブロック図である。図47に示すように、統合適応フィルタ55は、フィルタ情報復号部551、適応オフセットフィルタ552、適応空間フィルタ553、切り替え部554を含む。フィルタ情報復号部551は、オンオフフラグ復号部551a、マージフラグ復号部551b、フィルタタイプ復号部551c、オフセット復号部551d、フィルタ係数復号部551eを含む。適応オフセットフィルタ552は、特性値算出部552a、オフセット割付部552b、オフセット加算部552cを含む。適応空間フィルタ553は、空間フィルタ部553aを含む。図50は、本構成を模式的に示す図である。
図48は、統合適応フィルタ55を用いる場合の、符号化データの構成を示す図である。適応フィルタパラメータinterleave_loop_filter_paramは、CTB単位で符号化されるパラメータであり、既に図31において説明した適応フィルタパラメータに対応する。図48に示すように、適応フィルタパラメータは、オンオフフラグlf_lcu_enable_flag、マージフラグlf_merge_left_flagおよびsao_offset_cabac、alf_info_cabacを含む。
(フィルタ情報復号部551)
フィルタ情報復号部551において、オンオフフラグ復号部551aは、当該CTBの適応フィルタのオンオフを制御するlf_lcu_enable_flagを復号する。lf_lcu_enable_flagが0の場合には、フィルタ処理をオフとし、lf_lcu_enable_flagが1の場合に、適応オフセットフィルタ552、適応空間フィルタ553においてフィルタ処理を行う。フィルタ処理がオンの場合で、CTBのX座標が0より大きい場合、かつ、スライスの先頭CTB以外の場合には、マージフラグ復号部551bは、既に適用したオフセットもしくはフィルタ係数を用いるか否かを指定するマージフラグlf_merge_left_flagを復号する。マージフラグが1の場合には、左のCTBで適用したフィルタのフィルタタイプlf_filter_typeおよびオフセット情報もしくはフィルタ係数を用いてフィルタ処理を行う。マージフラグが0の場合には、フィルタタイプ復号部551cはフィルタタイプlf_filter_typeを復号する。フィルタタイプlf_filter_typeは適応フィルタの種別を示す情報であり、0の場合には、オフセット復号部551dにおいて図48(b)に示すsao_offset_cabacの情報、すなわち、sao_type_idxおよびsao_band_posisionおよびsao_offsetを復号する。さらに、適応オフセットフィルタ552において適応オフセットフィルタを適用する。なお、オンオフフラグlf_lcu_onoff_flagおよびマージフラグlf_merge_left_flagを適応オフセットフィルタ552、適応空間フィルタ553に共通のフラグとすることにより、フラグの符号量を低減する効果を奏する。
フィルタ情報復号部551において、オンオフフラグ復号部551aは、当該CTBの適応フィルタのオンオフを制御するlf_lcu_enable_flagを復号する。lf_lcu_enable_flagが0の場合には、フィルタ処理をオフとし、lf_lcu_enable_flagが1の場合に、適応オフセットフィルタ552、適応空間フィルタ553においてフィルタ処理を行う。フィルタ処理がオンの場合で、CTBのX座標が0より大きい場合、かつ、スライスの先頭CTB以外の場合には、マージフラグ復号部551bは、既に適用したオフセットもしくはフィルタ係数を用いるか否かを指定するマージフラグlf_merge_left_flagを復号する。マージフラグが1の場合には、左のCTBで適用したフィルタのフィルタタイプlf_filter_typeおよびオフセット情報もしくはフィルタ係数を用いてフィルタ処理を行う。マージフラグが0の場合には、フィルタタイプ復号部551cはフィルタタイプlf_filter_typeを復号する。フィルタタイプlf_filter_typeは適応フィルタの種別を示す情報であり、0の場合には、オフセット復号部551dにおいて図48(b)に示すsao_offset_cabacの情報、すなわち、sao_type_idxおよびsao_band_posisionおよびsao_offsetを復号する。さらに、適応オフセットフィルタ552において適応オフセットフィルタを適用する。なお、オンオフフラグlf_lcu_onoff_flagおよびマージフラグlf_merge_left_flagを適応オフセットフィルタ552、適応空間フィルタ553に共通のフラグとすることにより、フラグの符号量を低減する効果を奏する。
フィルタタイプlf_filter_typeが1の場合には、フィルタ係数復号部551eにおいて、図48(c)に示すalf_info_cabacの情報、すなわち、フィルタバッファのフィルタ係数を使用するか否かを示すフラグalf_new_filter_set_flagおよびフィルタバッファのフィルタ係数のインデックスalf_filtered_filter_set_idxおよびフィルタ係数alf_filt_coeffを復号する。さらに、適応空間フィルタ553において適応空間フィルタを適用する。
図49は、統合適応フィルタ55の動作を説明する図である。図49(a)には、LCUに適応フィルタパラメータをインターリーブするインターリーブモードの場合の動作を示し、図49(b)にはインターリーブモード以外の場合の動作を示す。インターリーブモードでは、適応オフセットフィルタと適応空間フィルタを選択的に用いる。非インターリーブモードでは、適応オフセットフィルタの後に、適応空間フィルタを用いる。適応するフィルタの選択は、LCU単位の適応フィルタパラメータinterleave_loop_filter_paramに含まれるフィルタタイプlf_filter_typeに基づいて行われる。適応オフセットフィルタの後に、適応空間フィルタを用いる場合には、適応オフセットフィルタ処理後の画像を一時的にメモリ(フレームメモリもしくはラインメモリ)に格納する必要があるため、メモリの必要量が大きくなる。またメモリとプロセッサ間でデータを転送する場合には、転送量が大きくなる。インターリーブモードでは高いスループットを実現するユースケースで使用されるため、メモリ量およびデータ転送量が低くなる構成が好ましい。
図49に示す構成のように、適応フィルタパラメータをLCU単位でインターリーブし、適応オフセットフィルタ552と適応空間フィルタ553を選択的に用いる統合適応フィルタ55を用いることにより、適応オフセットフィルタの処理後の画像を格納するメモリおよび処理値の画像を転送する転送量を低減する効果を奏する。
(適応オフセットフィルタ552)
適応オフセットフィルタ552の動作は、適応オフセットフィルタ60と同様であるので説明の詳細は省略する。特性値算出部552aが特性値算出部621、オフセット割り付け部552bがオフセット割り付け部624、オフセット加算部552cがオフセット適用部625に相当し、各々、画素の分類、画素の分類に応じたオフセットの割り付け、オフセットの加算を行う。
適応オフセットフィルタ552の動作は、適応オフセットフィルタ60と同様であるので説明の詳細は省略する。特性値算出部552aが特性値算出部621、オフセット割り付け部552bがオフセット割り付け部624、オフセット加算部552cがオフセット適用部625に相当し、各々、画素の分類、画素の分類に応じたオフセットの割り付け、オフセットの加算を行う。
図51(c)では、適応オフセットフィルタがエッジオフセットEOである場合に特性値算出部552aで参照する画素を示す。適応オフセットフィルタでは、上下1画素の画素値を参照するため、LCU単位でフィルタ処理を行う場合には、フィルタ対象領域であるLCUに加え、LCUの上下1ライン分の画像も復号し格納する必要がある。格納するメモリとしてフレームバッファもしくはラインバッファを必要とする。
(適応空間フィルタ553)
適応空間フィルタ553は、空間フィルタ部553aにおいて対象画素の周囲の画素値と重み係数alf_flt_coeffの積和から導出される空間フィルタにより、フィルタ処理を行う。
適応空間フィルタ553は、空間フィルタ部553aにおいて対象画素の周囲の画素値と重み係数alf_flt_coeffの積和から導出される空間フィルタにより、フィルタ処理を行う。
(適応空間フィルタ554)
切り替え部554は、適応オフセットフィルタ552と適応空間フィルタ553の出力の何れかを選択する。本実施形態のインターリーブモードのように、適応オフセットフィルタ552と適応空間フィルタ553を選択的に用いる場合には、統合適応フィルタ55を1つのピクチャに1回のみ適用する。適応オフセットフィルタ552の後段に適応空間フィルタ553を用いる場合には、統合適応フィルタ55を1つのピクチャに2回のみ適用し、1回目の適用では切り替え部554は、適応オフセットフィルタ552を選択し、2回目の適用では切り替え部554は、適応空間フィルタ553を選択する。
切り替え部554は、適応オフセットフィルタ552と適応空間フィルタ553の出力の何れかを選択する。本実施形態のインターリーブモードのように、適応オフセットフィルタ552と適応空間フィルタ553を選択的に用いる場合には、統合適応フィルタ55を1つのピクチャに1回のみ適用する。適応オフセットフィルタ552の後段に適応空間フィルタ553を用いる場合には、統合適応フィルタ55を1つのピクチャに2回のみ適用し、1回目の適用では切り替え部554は、適応オフセットフィルタ552を選択し、2回目の適用では切り替え部554は、適応空間フィルタ553を選択する。
図51(a)は、インターリーブモードの適応空間フィルタ553において参照する画素の範囲を示す。図51(b)に示すように、フィルタ対象画素の座標に対して参照画素の座標はY軸方向では1画素異なる範囲(上下1画素の画素値)を参照する。例えば、図51(c)のような、適応オフセットフィルタよりもY軸方向に大きい参照画素の範囲を用いると、適応空間フィルタのために多くのメモリを必要とするため、ハードが複雑となる。
以上、図51(b)で説明したようにY軸方向に対して適応オフセットフィルタと同じ参照範囲とすることにより、インターリーブモードで適応フィルタ処理を行う場合に必要なメモリサイズ及び、転送量を低減する効果を奏する。
図51(c)は、非インターリーブモードの適応空間フィルタ553において参照する画素の範囲を示す。図49で説明したように非インターリーブモードの場合、適応オフセットフィルタ552でフィルタ処理した画像に対して、適応空間フィルタ553でフィルタ処理を行う。この場合インターリーブモードのようなスループットおよび転送量の制限はないため、2つのフィルタのY軸方向の参照範囲が等しい必要はない。適応空間フィルタ553では、大きな参照範囲を用いた方が符号化歪み低減の効果が大きいことから、適応空間フィルタ553では図51(c)に示すように上下1ラインよりも大きい参照範囲を用いる。図52(a)(b)は各々、インターリーブモードにおける適応空間フィルタの参照範囲の別の例である。この例のようにY軸方向に対して適応オフセットフィルタと同じ参照範囲であればX軸方向の範囲は異なっても良い。
以上のように、インターリーブモードでは、適応オフセットフィルタと同じ参照範囲を用い(例えば上下1画素)、非インターリーブモードでは適応オフセットフィルタよりも広い参照範囲(例えば上下3画素)を用いることによって、インターリーブモードにおけるメモリおよび転送量の低減と、非インターリーブモードにおける効果の向上を同時に実現することができる。
(適応空間フィルタ553の別の構成)
適応空間フィルタ553の別の構成として、バーチャルバウンダリと呼ばれる参照範囲を適応的に変更する方法がある。
適応空間フィルタ553の別の構成として、バーチャルバウンダリと呼ばれる参照範囲を適応的に変更する方法がある。
図53(b)はバーチャルバウンダリにおける参照範囲を示す図である。バーチャルバウンダリでは、LCUの下4ライン目にバーチャルバウンダリと呼ぶ仮想的なラインを設定する。フィルタの適用対象画素のY座標がLCU内のバーチャルバウンダリよりも上の領域においては、バーチャルバウンダリの下の画素を参照しない。図53(b)はこのような例を示す。さらに、フィルタの適用対象画素のY座標がLCU内のバーチャルバウンダリよりも下の領域においては、バーチャルバウンダリよりも上の画素を参照しない。デブロッキングフィルタ、適応オフセットフィルタ、適応空間フィルタの順にフィルタ処理を行う場合、適応空間フィルタの参照画素は、デブロッキングフィルタ、適応オフセットフィルタがかかる範囲になる。LCU単位でフィルタ処理を行う場合、LCUの境界にデブロッキングフィルタを適用することになるが、この場合デブロッキングフィルタでY軸方向にdistDF(例えば、3画素)、適応オフセットフィルタでさらにY軸方向にdistSAO(例えば1画素)、画素を参照する必要が生じる。このため2つのフィルタをあわせて4画素分が処理対象になる。今のバーチャルバウンダリの上の領域で適応空間フィルタ処理を行う場合、下の4画素はデブロッキングフィルタと適応オフセットフィルタで影響を受ける。この4画素を参照する場合、適応空間処理の実行を、下の4画素がフィルタ処理されるまで遅延させる必要が生じる。処理を遅延させる場合、その間、デブロッキングフィルタ及び適応オフセットフィルタが適用された画素値をメモリ(フレームメモリ及びラインメモリ)に格納する必要が生じ、多くのメモリ及び転送量を必要とする。バーチャルバウンダリはこの問題にバーチャルバウンダリの下の画素を参照しないことにより、メモリ及び転送量を低減する効果を奏する。
図54(b)は、具体的なバーチャルバウンダリの動作を説明する図である。まずバーチャルバウンダリの位置を示すvbLineをLCUの高さ−(distDF+distDF)として導出する。さらに、バーチャルバウンダリとの相対位置をdist2VBとして導出する。
図55(a)は、適応空間フィルタ553のフィルタ処理を示す図である。適応空間フィルタ553では、図55(b)で定義される参照画素のX軸方向の相対座標hosPos[i] と図55(c)で定義される参照画素のY軸方向の相対座標verPos[j]で示される座標の画素値を参照することにより線形和によりフィルタ処理を行う。図55(c)の定義においてバーチャルバウンダリとの距離をdist2VBに応じて参照画素のY軸方向の相対座標を制限することにより、バーチャルバウンダリを超える位置の参照画素を参照しないでフィルタ処理を行う。
図53(a)は、本実施形態のインターリーブモードにおける適応空間フィルタのバーチャルバウンダリにかかる参照画素を示す図である。本実施形態のインターリーブモードにおいては、図49(a)で説明したように、適応オフセットフィルタと適応空間フィルタを選択的に切り替える。そのため、適応空間フィルタはデブロックフィルタ後の画素値になる。デブロックフィルタの参照範囲はdistDF(ここではdistDF=3)画素である場合、バーチャルバウンダリの位置はLCUの下限―distDFの位置になる。これは、図49(b)で説明した場合によりも、1画素だけLCU境界に近い位置になる。バーチャルバウンダリの位置をLCU境界に近づけると、参照範囲の制限にかかる範囲が低減するため符号化効率が高まる。
図54(a)は、具体的なバーチャルバウンダリの設定方法を示す図である。図54(b)に示すように、本実施形態の統合適応フィルタ75のように、適応オフセットフィルタと適応空間フィルタを選択的に用いる場合のバーチャルバウンダリは、適応オフセットフィルタの後段に適応空間フィルタを用いる場合によりも、distSAO(具体的には1ライン)だけ上の位置にvbLineを設定する。
以上の構成では、インターリーブモードにおける適応空間フィルタのバーチャルバウンダリの位置をDFの参照範囲(distDF、具体的には2もしくは3)に設定することにより、参照画素の制限を必要最小限に抑え符号化効率を向上させる効果を奏する。
再度、図53(b)、図54(b)を参照する。これらは、非インターリーブモードなど、適応空間フィルタを適応オフセットフィルタの後段に位置する場合のバーチャルバウンダリにかかる適応空間フィルタの処理である。この構成では、適応オフセットフィルタの参照範囲(distSAO、例えば1)を考慮し、バーチャルバウンダリの位置をDFの参照範囲と適応オフセットフィルタの参照範囲の和(distDF+distSAO)に設定する。このように、非インターリーブモードのバーチャルバウンダリの位置を、インターリーブモードのバーチャルバウンダリの位置よりも1画素だけLCUに近づける。vbLineを1だけ小さくすることによって、適応オフセットフィルタと適応空間フィルタを選択的に用いる場合と、適応オフセットフィルタと適応空間フィルタを順次実行する場合の両者で、メモリ低減および転送量低減の効果を奏する。
(動画像符号化装置2´)
次に、本実施形態に係る動画像符号化装置2´について、図56を参照して説明する。動画像符号化装置2´は、既に説明した動画像符号化装置2の一部構成が異なるものである。
次に、本実施形態に係る動画像符号化装置2´について、図56を参照して説明する。動画像符号化装置2´は、既に説明した動画像符号化装置2の一部構成が異なるものである。
図56は、動画像符号化装置2´の構成を示すブロック図である。図56に示すように、動画像符号化装置2´は、変換・量子化部21、可変長符号符号化部22、逆量子化・逆変換部23、バッファメモリ24、イントラ予測画像生成部25、インター予測画像生成部26、動きベクトル検出部27、予測方式制御部28、動きベクトル冗長性削除部29、加算器31、減算器32、デブロッキングフィルタ33、および統合適応フィルタ75を含む構成である。なお、動画像符号化装置2と同様の機能をもつブロックは同じ部材番号を付し、その説明を省略する。
統合適応フィルタ75は、上述した統合適応フィルタ55と同様の機能を有するものであるので、その説明は省略する。
(応用例)
上述した動画像復号装置1および動画像符号化装置2は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい)。
上述した動画像復号装置1および動画像符号化装置2は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい)。
まず、上述した動画像復号装置1および動画像符号化装置2を、動画像の送信および受信に利用できることを、図19を参照して説明する。
図19(a)は、動画像符号化装置2を搭載した送信装置Aの構成を示したブロック図である。図19(a)に示すように、送信装置Aは、動画像を符号化することによって符号化データを得る符号化部A1と、符号化部A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部A2と、変調部A2が得た変調信号を送信する送信部A3と、を備えている。上述した動画像符号化装置2は、この符号化部A1として利用される。
送信装置Aは、符号化部A1に入力する動画像の供給源として、動画像を撮像するカメラA4、動画像を記録した記録媒体A5、動画像を外部から入力するための入力端子A6、および画像を生成または加工する画像処理部A7を更に備えていてもよい。図19(a)においては、これら全てを送信装置Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体A5と符号化部A1との間に、記録媒体A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図19(b)は、動画像復号装置1を搭載した受信装置Bの構成を示したブロック図である。図19(b)に示すように、受信装置Bは、変調信号を受信する受信部B1と、受信部B1が受信した変調信号を復調することによって符号化データを得る復調部B2と、復調部B2が得た符号化データを復号することによって動画像を得る復号部B3と、を備えている。上述した動画像復号装置1は、この復号部B3として利用される。
受信装置Bは、復号部B3が出力する動画像の供給先として、動画像を表示するディスプレイB4、動画像を記録するための記録媒体B5、および、動画像を外部に出力するための出力端子B6を更に備えていてもよい。図19(b)においては、これら全てを受信装置Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部B3と記録媒体B5との間に、復号部B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、および有線通信の何れによって実現してもよい。
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置A/受信装置Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置A/受信装置Bの一例である。
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置A/受信装置Bの一例である(通常、LANにおいては伝送媒体として無線または有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、およびタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置Aおよび受信装置Bの双方として機能する。
次に、上述した動画像復号装置1および動画像符号化装置2を、動画像の記録および再生に利用できることを、図20を参照して説明する。
図20(a)は、上述した動画像復号装置1を搭載した記録装置Cの構成を示したブロック図である。図20(a)に示すように、記録装置Cは、動画像を符号化することによって符号化データを得る符号化部C1と、符号化部C1が得た符号化データを記録媒体Mに書き込む書込部C2と、を備えている。上述した動画像符号化装置2は、この符号化部C1として利用される。
なお、記録媒体Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、記録装置Cは、符号化部C1に入力する動画像の供給源として、動画像を撮像するカメラC3、動画像を外部から入力するための入力端子C4、動画像を受信するための受信部C5、および、画像を生成または加工する画像処理部C6を更に備えていてもよい。図20(a)においては、これら全てを記録装置Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部C5と符号化部C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
このような記録装置Cとしては、例えば、DVDレコーダ、BDレコーダ、HD(Hard Disk)レコーダなどが挙げられる(この場合、入力端子C4または受信部C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラC3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部C5または画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラC3または受信部C5が動画像の主な供給源となる)なども、このような記録装置Cの一例である。
図20(b)は、上述した動画像復号装置1を搭載した再生装置Dの構成を示したブロックである。図20(b)に示すように、再生装置Dは、記録媒体Mに書き込まれた符号化データを読み出す読出部D1と、読出部D1が読み出した符号化データを復号することによって動画像を得る復号部D2と、を備えている。上述した動画像復号装置1は、この復号部D2として利用される。
なお、記録媒体Mは、(1)HDDやSSDなどのように、再生装置Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置Dは、復号部D2が出力する動画像の供給先として、動画像を表示するディスプレイD3、動画像を外部に出力するための出力端子D4、および、動画像を送信する送信部D5を更に備えていてもよい。図20(b)においては、これら全てを再生装置Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部D2と送信部D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
このような再生装置Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイD3が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子D4または送信部D5が動画像の主な供給先となる)、ラップトップ型またはタブレット型PC(この場合、ディスプレイD3または送信部D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイD3または送信部D5が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイD3または送信部D5が動画像の主な供給先となる)なども、このような再生装置Dの一例である。
(ソフトウェアによる構成)
最後に、動画像復号装置1および動画像符号化装置2の各ブロック、特に可変長符号復号部13、動きベクトル復元部14、インター予測画像生成部16、イントラ予測画像生成部17、予測方式決定部18、逆量子化・逆変換部19、デブロッキングフィルタ41、適応フィルタ50、適応オフセットフィルタ60、変換・量子化部21、可変長符号符号化部22、逆量子化・逆変換部23、イントラ予測画像生成部25、インター予測画像生成部26、動きベクトル検出部27、予測方式制御部28、動きベクトル冗長性削除部29、デブロッキングフィルタ33、適応フィルタ70、適応オフセットフィルタ80は、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現していてもよいし、CPU(central processing unit)を用いてソフトウェア的に実現してもよい。
最後に、動画像復号装置1および動画像符号化装置2の各ブロック、特に可変長符号復号部13、動きベクトル復元部14、インター予測画像生成部16、イントラ予測画像生成部17、予測方式決定部18、逆量子化・逆変換部19、デブロッキングフィルタ41、適応フィルタ50、適応オフセットフィルタ60、変換・量子化部21、可変長符号符号化部22、逆量子化・逆変換部23、イントラ予測画像生成部25、インター予測画像生成部26、動きベクトル検出部27、予測方式制御部28、動きベクトル冗長性削除部29、デブロッキングフィルタ33、適応フィルタ70、適応オフセットフィルタ80は、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現していてもよいし、CPU(central processing unit)を用いてソフトウェア的に実現してもよい。
後者の場合、動画像復号装置1および動画像符号化装置2は、各機能を実現する制御プログラムの命令を実行するCPU、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである動画像復号装置1および動画像符号化装置2の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記の動画像復号装置1および動画像符号化装置2に供給し、そのコンピュータ(またはCPUやMPU(micro processing unit))が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM(compact disc read-only memory)/MOディスク(magneto-optical disc)/MD(Mini Disc)/DVD(digital versatile disc)/CD−R(CD Recordable)等の光ディスクを含むディスク類、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)等の論理回路類などを用いることができる。
また、動画像復号装置1および動画像符号化装置2を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、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 loop)回線等の有線でも、IrDA(infrared data association)やリモコンのような赤外線、Bluetooth(登録商標)、IEEE802.11無線、HDR(high data rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明は上述した各実施の形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
本発明は、画像データにオフセットフィルタリングを行う画像フィルタに好適に用いることができる。また、符号化データを復号する復号装置、および、符号化データを符号化する符号化装置に好適に適用することができる。
1 動画像復号装置(画像復号装置)
2 動画像符号化装置(画像符号化装置)
16 インター予測画像生成部(予測画像生成手段)
17 イントラ予測画像生成部(予測画像生成手段)
22 可変長符号符号化部(符号化手段)
25 イントラ予測画像生成部(予測画像生成手段)
26 インター予測画像生成部(予測画像生成手段)
60 適応オフセットフィルタ(画像フィルタ装置、オフセット加算手段)
61 オフセットタイプ復号部(復号手段)
63 オフセット復号部(復号手段)
80 適応オフセットフィルタ(画像フィルタ装置、オフセット加算手段)
621 特性値算出部
624 オフセット割り付け部(クラス分類方法選択手段、クラス分類手段、オフセット決定手段)
625 オフセット適用部(フィルタ手段)
2 動画像符号化装置(画像符号化装置)
16 インター予測画像生成部(予測画像生成手段)
17 イントラ予測画像生成部(予測画像生成手段)
22 可変長符号符号化部(符号化手段)
25 イントラ予測画像生成部(予測画像生成手段)
26 インター予測画像生成部(予測画像生成手段)
60 適応オフセットフィルタ(画像フィルタ装置、オフセット加算手段)
61 オフセットタイプ復号部(復号手段)
63 オフセット復号部(復号手段)
80 適応オフセットフィルタ(画像フィルタ装置、オフセット加算手段)
621 特性値算出部
624 オフセット割り付け部(クラス分類方法選択手段、クラス分類手段、オフセット決定手段)
625 オフセット適用部(フィルタ手段)
Claims (38)
- 1つ以上のツリーブロックの組から構成される符号化データであるスライスデータから、ツリーブロックを構成する符号化単位に含まれる予測パラメータと量子化予測残差を復号して生成される予測残差と、予測画像とを加算して復号画像を生成する画像復号装置であって、
上記符号化データから、上記ツリーブロックに対応するフィルタ領域のフィルタパラメータを復号する復号手段と、
上記復号手段が復号したフィルタパラメータを用いて、フィルタ処理を行うフィルタ手段と、を備え、
上記符号化データは、上記ツリーブロックのデータと上記フィルタパラメータとが交互に格納される格納方法によりフィルタパラメータを格納していることを特徴とする画像復号装置。 - 上記復号手段は、上記ツリーブロックの集合の水平方向のサイズを復号すると共に、該復号の対象となる対象ツリーブロックの座標が該水平方向のサイズの整数倍以外の場合、該対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータからコピーするか否かを示す左マージフラグを復号せずに導出し、該左マージフラグが1の場合、該対象ツリーブロックのフィルタパラメータを、左に隣接するツリーブロックのフィルタパラメータをコピーして導出することを特徴とする請求項1に記載の画像復号装置。
- 上記復号手段は、上記対象ツリーブロックの座標が上記水平方向のサイズの整数倍以外の場合、
上記対象ツリーブロックの左に隣接するツリーブロックが、上記対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックではないとき、上記左マージフラグを1として導出し、
上記対象ツリーブロックの左に隣接するツリーブロックが、上記対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックであるとき、上記左マージフラグを0として導出することを特徴とする請求項2に記載の画像復号装置。 - 上記復号手段は、上記対象ツリーブロックの座標が上記水平方向のサイズの整数倍で、かつ、対象ツリーブロックの左に隣接するツリーブロックが対象ツリーブロックが含まれているスライスまたはタイルとは異なるスライスまたはタイルに含まれるツリーブロックではない場合、上記左マージフラグを符号化データから復号することを特徴とする請求項2または3に記載の画像復号装置。
- 上記フィルタパラメータは、上記ツリーブロックに含まれる符号化単位の後に格納されていることを特徴とする請求項1に記載の画像復号装置。
- 上記フィルタパラメータは、スライス終端を示すフラグの前に格納されていることを特徴とする請求項5に記載の画像復号装置。
- 上記フィルタパラメータは、上記ツリーブロックに含まれる符号化ツリーが分割されない場合、かつ、該符号化ツリーの位置が、符号化ツリーブロックCTBの境界に位置する場合、該符号化ツリーにおいて格納されることを特徴とする請求項5または6に記載の画像復号装置。
- 上記フィルタパラメータは、符号化単位のX座標に符号化ツリーの横幅を加えた座標が符号化ツリーブロックCTBサイズの倍数であり、かつ、符号化単位のY座標に符号化ツリーの縦幅を加えた座標が符号化ツリーブロックCTBサイズの倍数である場合に、該符号化ツリーに格納することを特徴とする請求項7に記載の画像復号装置。
- 上記フィルタ手段は、上記ツリーブロックを含むスライスが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合、該フィルタパラメータを含まないツリーブロックに対応する領域のフィルタ処理を行わないことを特徴とする請求項6〜8のいずれか1項に記載の画像復号装置。
- 上記フィルタ手段は、上記ツリーブロックを含むスライスが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合、上記ツリーブロックを含むCTBに対応する、該ツリーブロック以外のツリーブロックに含まれるフィルタパラメータを用いて、該ツリーブロックに対応する領域のフィルタ処理を行うことを特徴とする請求項6〜8のいずれか1項に記載の画像復号装置。
- 上記フィルタ手段は、
上記スライスの境界にループフィルタを適用するか否かを示すフラグが、適用することを示す場合、上記ツリーブロックを含むスライスが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合も、上記ツリーブロックに対応する領域のフィルタ処理を行い、
上記フラグが、スライス境界にループフィルタを適用しないことを示す場合、上記ツリーブロックに対応する領域のフィルタ処理を行わないことを特徴とする請求項6〜8のいずれか1項に記載の画像復号装置。 - 上記フィルタ手段は、
上記フィルタパラメータがツリーブロックにインターリーブされている場合、上記ツリーブロックを含むスライスデータが、該ツリーブロックに対応する領域にかかるフィルタ処理に用いるフィルタパラメータを含まない場合も、該ツリーブロックに対応する領域のフィルタ処理を行い、
上記フィルタパラメータがツリーブロックとインターリーブされていていない場合、上記ツリーブロックに対応する領域のフィルタ処理を行わないことを特徴とする請求項6〜8のいずれか1項に記載の画像復号装置。 - 符号化ツリーブロックCTBの途中でスライス分割される分割CTBの場合には、該分割CTBに対応する全てのツリーブロックでフィルタパラメータが含まれておらず、
上記フィルタ手段は、上記分割CTBにはフィルタパラメータを用いたフィルタ処理を行わないことを特徴とする請求項6〜8のいずれか1項に記載の画像復号装置。 - 上記フィルタパラメータは、適応オフセットフィルタのフィルタパラメータと、適応空間フィルタのフィルタパラメータとを含むとともに、適応オフセットフィルタと適応空間フィルタとに共通のオンオフフラグを含むことを特徴とする請求項1、5〜13のいずれか1項に記載の画像復号装置。
- 上記フィルタパラメータは、適応オフセットフィルタのフィルタパラメータと、適応空間フィルタのフィルタパラメータとを含み、
上記フィルタ手段は、符号化ツリーブロックCTBに対応するフィルタ領域に対して、上記適応オフセットフィルタもしくは上記適応空間フィルタを選択的に選択してフィルタ処理を行うことを特徴とする請求項1、5〜14のいずれか1項に記載の画像復号装置。 - 上記符号化データは、上記フィルタパラメータが、適応パラメータセットAPSまたはスライスヘッダに格納される第3の格納方法により、フィルタパラメータを格納しており、
上記フィルタ手段は、上記フィルタパラメータが上記第3の格納方法により格納されている場合、上記適応オフセットフィルタの後段で上記適応空間フィルタを適用することを特徴とする請求項15に記載の画像復号装置。 - 上記フィルタ手段が行うフィルタ処理では、上記適応オフセットフィルタのY軸方向の参照範囲と、上記適応空間フィルタのY軸方向の参照範囲が等しいことを特徴とする請求項15に記載の画像復号装置。
- 上記符号化データは、上記フィルタパラメータが、適応パラメータセットAPSまたはスライスヘッダに格納される第3の格納方法により、フィルタパラメータを格納しており、
フィルタパラメータが上記第3の格納方法により格納されている場合、上記フィルタ手段が行うフィルタ処理では、上記適応空間フィルタのY軸方向の参照範囲を、上記適応オフセットフィルタのY軸方向の参照範囲よりも大きくすることを特徴とする請求項17に記載の画像復号装置。 - 上記フィルタ手段は、上記適応空間フィルタの参照範囲を決定するバーチャルバウンダリの相対位置を、デブロッキングフィルタの参照範囲により導出することを特徴とする請求項15に記載の画像復号装置。
- 上記フィルタ手段は、
上記適応オフセットフィルタと上記適応空間フィルタを選択的に用いてフィルタ処理を行う場合、上記適応空間フィルタの参照範囲を決定するバーチャルバウンダリの相対位置をデブロッキングフィルタの参照範囲から導出し、
上記適応オフセットフィルタのフィルタ処理の後段で上記適応空間フィルタのフィルタ処理を行う場合、上記適応空間フィルタの参照範囲を決定するバーチャルバウンダリの相対位置をデブロッキングフィルタの参照範囲と上記適応空間フィルタの参照範囲の和から導出することを特徴とする請求項16に記載の画像復号装置。 - 上記復号手段は、復号画像のビット深度と、量子化パラメータに依存した閾値を用いて、適応オフセットフィルタの逆量子化を行うことを特徴とする請求項1に記載の画像復号装置。
- 上記復号手段は、復号画像のビット深度と、符号化ツリーブロックCTBサイズに依存した閾値とを用いて、適応オフセットフィルタの逆量子化を行うことを特徴とする請求項1に記載の画像復号装置。
- 上記復号手段は、上記フィルタパラメータがツリーブロックにインターリーブされている場合と、上記フィルタパラメータがツリーブロックにインターリーブされている場合とに依存した閾値を用いて、適応オフセットフィルタの逆量子化を行うことを特徴とする請求項1に記載の画像復号装置。
- 複数の第1単位領域から構成される入力画像の各画素値に、複数のオフセットの中から選択したオフセットを加算する画像フィルタ装置であって、
上記第1単位領域に含まれる画素において、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、
上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、
上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記第1単位領域毎に決定するオフセット決定手段と、
上記オフセット決定手段が決定したオフセットを、上記第1単位領域に含まれる画素の画素値に加算するフィルタ手段と、
上記符号化データからフィルタパラメータを復号する復号手段と、を備え、
上記フィルタパラメータは、上記フィルタ手段が用いるオフセットを含むオフセット情報を第2単位領域毎に含むとともに、
上記フィルタパラメータは、上記第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、上記第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で符号化データに格納されていることを特徴とする画像フィルタ装置。 - 上記フィルタ手段が、上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合よりも狭い値域で表現されるオフセットを用いることを特徴とする請求項24に記載の画像フィルタ装置。
- 上記フィルタ手段が、上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合よりも狭い値域で表現されるオフセットを用いることを特徴とする請求項24に記載の画像フィルタ装置。
- 上記クラス分類方法には、対象画素について、該画素周辺のエッジの状態に基づいてクラス分類を行う第1のクラス分類方法と、対象画素の画素値に基づいてクラス分類を行う第2のクラス分類方法とが含まれており、
上記フィルタ手段が加算するオフセットの値域は、上記第2のクラス分類方法を用いて加算するオフセットを決定された場合と、上記第1のクラス分類方法を用いて加算するオフセット決定された場合とで同じ幅であることを特徴とする請求項25に記載の画像フィルタ装置。 - 上記クラス分類方法には、上記クラス毎にオフセットの値域が異なるクラス分類方法が含まれていることを特徴とする、請求項24〜27のいずれか1項に記載の画像フィルタ装置。
- 上記フィルタ手段が加算するオフセットの値域の最大値は、2のべき乗から2を引いた数となっていることを特徴とする請求項24〜28のいずれか1項に記載の画像フィルタ装置。
- 上記フィルタパラメータには、上記第2単位領域の大きさを表す第2単位領域サイズが含まれていることを特徴とする請求項24に記載の画像フィルタ装置。
- 上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2単位領域サイズは、水平方向の大きさおよび垂直方向の大きさを表す値を含み、
上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2単位領域サイズは、少なくとも水平方向の大きさを表す値を含むことを特徴とする請求項30に記載の画像フィルタ装置。 - 上記第1のパラメータ格納方法により格納されているフィルタパラメータを用いる場合と前記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合とのいずれの場合でも参照可能なパラメータセットに、上記第2単位領域サイズとして、水平方向の大きさおよび垂直方向の大きさを表す値が含まれていることを特徴とする請求項30に記載の画像フィルタ装置。
- 符号化データで使用可能な技術要素を定義するプロファイル、または、符号化データを復号する際に必須となる諸性能を定義するレベルに基づいて上記第2単位領域のサイズが決定されることを特徴とする請求項30に記載の画像フィルタ装置。
- 上記プロファイルまたは上記レベルに基づいて定められた第2単位領域サイズを、上記第2単位領域のサイズの最小値または初期値とすることを特徴とする請求項33に記載の画像フィルタ装置。
- 上記第2のパラメータ格納方法により格納されているフィルタパラメータを用いる場合、上記第2単位領域の垂直方向の大きさは上記第1単位領域の垂直方向の大きさと等しいことを特徴とする、請求項30〜34のいずれか1項に記載の画像フィルタ装置。
- 符号化データから復号した予測残差に、生成した予測画像を加算して復号画像を生成する画像復号装置であって、
上記予測残差に上記予測画像を加算した加算画像に対し、単位領域毎にオフセットを加算するオフセット加算手段と、
上記オフセット加算手段がオフセットを加算した画像を復号画像として出力する出力手段と、を備え、
上記オフセット加算手段には、
上記単位領域に含まれる画素において、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、
上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、
上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記単位領域毎に決定するオフセット決定手段と、
上記オフセット決定手段が決定したオフセットを、上記単位領域に含まれる画素の画素値に加算するフィルタ手段と、
上記符号化データからフィルタパラメータを復号する復号手段と、が備えられており、
上記フィルタパラメータは、上記フィルタ手段が用いるオフセットを含むオフセット情報を第2単位領域毎に含んでいるとともに、
上記フィルタパラメータは、第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で符号化データに格納されていることを特徴とする画像復号装置。 - 生成した予測画像と原画像との差分である予測残差を符号化することによって符号化データを生成する画像符号化装置であって、
原画像を符号化し、復号した復号画像に対し、単位領域毎にオフセットを加算するオフセット加算手段と、
上記オフセット加算手段がオフセットを加算した画像から上記予測画像を生成する予測画像生成手段と、
上記予測画像生成手段が生成した予測画像と原画像との差分である予測残差を符号化する符号化手段と、を備え、
上記オフセット加算手段には、
上記単位領域に含まれる画素もおいて、複数のクラスの何れに分類するかを決定する方法であるクラス分類方法を、複数の候補の中から選択するクラス分類方法選択手段と、
上記クラス分類方法選択手段が選択したクラス分類方法に従って、上記画素のクラス分類を行うクラス分類手段と、
上記クラス分類手段がクラス分類した画素の画素値に加算するオフセットを、該画素が分類されたクラスに応じて、上記単位領域毎に決定するオフセット決定手段と、
上記オフセット決定手段が決定したオフセットを、上記単位領域に含まれる画素の画素値に加算するフィルタ手段と、が備えられており、
上記符号化手段は、上記フィルタ手段が加算するオフセットを含むオフセット情報が、第2単位領域毎に含まれているフィルタパラメータを符号化するとともに、該フィルタパラメータは、第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で符号化データに格納することを特徴とする画像符号化装置。 - 画像復号装置において復号される、予測画像と原画像との差分である予測残差が符号化された符号化データのデータ構造であって、
画素値データと、
上記画素値データが示す画素値に加算するオフセットを決定するためのクラス分類方法を選択するためのクラス分類方法選択データと、
上記画像復号装置におけるフィルタ手段で用いられる上記オフセットを含むフィルタパラメータと、を含み、
上記フィルタパラメータは、第1単位領域および該第1単位領域の集合から独立したパラメータセットに格納される第1のパラメータ格納方法、あるいは、第1単位領域の符号化データと交互に格納される第2のパラメータ格納方法、の何れかの格納方法で格納されていることを特徴とする符号化データのデータ構造。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012147920A JP2013236358A (ja) | 2012-03-14 | 2012-06-29 | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012058006 | 2012-03-14 | ||
JP2012058006 | 2012-03-14 | ||
JP2012091433 | 2012-04-12 | ||
JP2012091433 | 2012-04-12 | ||
JP2012147920A JP2013236358A (ja) | 2012-03-14 | 2012-06-29 | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013236358A true JP2013236358A (ja) | 2013-11-21 |
Family
ID=49762085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012147920A Pending JP2013236358A (ja) | 2012-03-14 | 2012-06-29 | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013236358A (ja) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014204584A1 (en) * | 2013-06-19 | 2014-12-24 | Apple Inc. | Sample adaptive offset control |
WO2015163046A1 (ja) * | 2014-04-23 | 2015-10-29 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
WO2015163047A1 (ja) * | 2014-04-23 | 2015-10-29 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
US9300967B2 (en) | 2013-06-19 | 2016-03-29 | Apple Inc. | Sample adaptive offset control |
KR101650324B1 (ko) * | 2015-02-27 | 2016-08-24 | 한밭대학교 산학협력단 | Hevc의 적응적 루프 필터 |
EP3343919A1 (en) * | 2016-12-28 | 2018-07-04 | Fujitsu Limited | Video encoding apparatus, video encoding method, video decoding apparatus, and video decoding method |
WO2018130400A1 (en) * | 2017-01-11 | 2018-07-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Encoder and decoder and methods thereof |
EP3364656A1 (en) * | 2017-02-15 | 2018-08-22 | Thomson Licensing | Method for sample adaptive offset coding |
US10097827B2 (en) | 2016-04-05 | 2018-10-09 | Fujitsu Limited | Apparatus and method for image encoding, apparatus and method for image decoding, and image transmission system |
KR20200034504A (ko) * | 2018-09-21 | 2020-03-31 | 삼성전자주식회사 | 이미지 신호 프로세서, 상기 이미지 신호 프로세서의 동작 방법 및 상기 이미지 신호 프로세서를 포함하는 애플리케이션 프로세서 |
CN111866507A (zh) * | 2020-06-07 | 2020-10-30 | 咪咕文化科技有限公司 | 图像滤波方法、装置、设备及存储介质 |
CN111866502A (zh) * | 2019-04-25 | 2020-10-30 | 华为技术有限公司 | 图像预测方法、装置和计算机可读存储介质 |
CN112840659A (zh) * | 2018-09-14 | 2021-05-25 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、编码方法和解码方法 |
WO2021173552A1 (en) * | 2020-02-24 | 2021-09-02 | Bytedance Inc. | Interaction between subpicture and tile row signaling |
US11936865B2 (en) | 2020-03-03 | 2024-03-19 | Bytedance Inc. | Low frequency non-separable transform signaling in video coding |
-
2012
- 2012-06-29 JP JP2012147920A patent/JP2013236358A/ja active Pending
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014204584A1 (en) * | 2013-06-19 | 2014-12-24 | Apple Inc. | Sample adaptive offset control |
US11363264B2 (en) | 2013-06-19 | 2022-06-14 | Apple Inc. | Sample adaptive offset control |
US10708588B2 (en) | 2013-06-19 | 2020-07-07 | Apple Inc. | Sample adaptive offset control |
US9300967B2 (en) | 2013-06-19 | 2016-03-29 | Apple Inc. | Sample adaptive offset control |
US10666975B2 (en) | 2014-04-23 | 2020-05-26 | Sony Corporation | Image processing apparatus and image processing method |
US10477207B2 (en) | 2014-04-23 | 2019-11-12 | Sony Corporation | Image processing apparatus and image processing method |
WO2015163046A1 (ja) * | 2014-04-23 | 2015-10-29 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
WO2015163047A1 (ja) * | 2014-04-23 | 2015-10-29 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
KR101650324B1 (ko) * | 2015-02-27 | 2016-08-24 | 한밭대학교 산학협력단 | Hevc의 적응적 루프 필터 |
US10097827B2 (en) | 2016-04-05 | 2018-10-09 | Fujitsu Limited | Apparatus and method for image encoding, apparatus and method for image decoding, and image transmission system |
US10375392B2 (en) | 2016-12-28 | 2019-08-06 | Fujitsu Limited | Video encoding apparatus, video encoding method, video decoding apparatus, and video decoding method |
JP2018110313A (ja) * | 2016-12-28 | 2018-07-12 | 富士通株式会社 | 動画像符号化装置、動画像符号化方法、動画像符号化用コンピュータプログラム、動画像復号装置及び動画像復号方法ならびに動画像復号用コンピュータプログラム |
EP3343919A1 (en) * | 2016-12-28 | 2018-07-04 | Fujitsu Limited | Video encoding apparatus, video encoding method, video decoding apparatus, and video decoding method |
WO2018130400A1 (en) * | 2017-01-11 | 2018-07-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Encoder and decoder and methods thereof |
US10944967B2 (en) | 2017-01-11 | 2021-03-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Encoder and decoder and methods thereof |
EP3364656A1 (en) * | 2017-02-15 | 2018-08-22 | Thomson Licensing | Method for sample adaptive offset coding |
WO2018149685A1 (en) * | 2017-02-15 | 2018-08-23 | Thomson Licensing | Coding and decoding methods and corresponding devices |
CN112840659A (zh) * | 2018-09-14 | 2021-05-25 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、编码方法和解码方法 |
KR20200034504A (ko) * | 2018-09-21 | 2020-03-31 | 삼성전자주식회사 | 이미지 신호 프로세서, 상기 이미지 신호 프로세서의 동작 방법 및 상기 이미지 신호 프로세서를 포함하는 애플리케이션 프로세서 |
KR102637732B1 (ko) | 2018-09-21 | 2024-02-19 | 삼성전자주식회사 | 이미지 신호 프로세서, 상기 이미지 신호 프로세서의 동작 방법 및 상기 이미지 신호 프로세서를 포함하는 애플리케이션 프로세서 |
CN111866502A (zh) * | 2019-04-25 | 2020-10-30 | 华为技术有限公司 | 图像预测方法、装置和计算机可读存储介质 |
WO2021173552A1 (en) * | 2020-02-24 | 2021-09-02 | Bytedance Inc. | Interaction between subpicture and tile row signaling |
US11778183B2 (en) | 2020-02-24 | 2023-10-03 | Bytedance Inc. | Partition calculation based on subpicture level |
US11856234B2 (en) | 2020-02-24 | 2023-12-26 | Bytedance Inc. | Interaction between sub picture and tile row signaling |
US11863794B2 (en) | 2020-02-24 | 2024-01-02 | Bytedance Inc. | Derivation of the height of a subpicture |
US11863793B2 (en) | 2020-02-24 | 2024-01-02 | Bytedance Inc. | Using picture level slice index in video coding |
US11936865B2 (en) | 2020-03-03 | 2024-03-19 | Bytedance Inc. | Low frequency non-separable transform signaling in video coding |
CN111866507A (zh) * | 2020-06-07 | 2020-10-30 | 咪咕文化科技有限公司 | 图像滤波方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6957715B2 (ja) | 画像フィルタ装置、フィルタ方法および動画像復号装置 | |
US10547861B2 (en) | Image decoding device | |
JP2013236358A (ja) | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 | |
JP5972888B2 (ja) | 画像復号装置、画像復号方法および画像符号化装置 | |
US20180192076A1 (en) | Image decoding device image coding device | |
WO2017195532A1 (ja) | 画像復号装置及び画像符号化装置 | |
WO2013046990A1 (ja) | オフセット復号装置、オフセット符号化装置、画像フィルタ装置、および、データ構造 | |
JP2013138395A (ja) | 画像フィルタ装置、画像復号装置、画像符号化装置、および、データ構造 | |
JP2013223050A (ja) | フィルタ装置、復号装置、および符号化装置 | |
JP2013141094A (ja) | 画像復号装置、画像符号化装置、画像フィルタ装置、および符号化データのデータ構造 | |
WO2012121352A1 (ja) | 動画像復号装置、動画像符号化装置、および、データ構造 | |
JP2013187868A (ja) | 画像復号装置、画像符号化装置、およびデータ構造 | |
JP2014176039A (ja) | 画像復号装置、および画像符号化装置 | |
JP6162289B2 (ja) | 画像復号装置および画像復号方法 | |
JP2013251827A (ja) | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 | |
WO2014050554A1 (ja) | 画像復号装置、および画像符号化装置 | |
JP2014082729A (ja) | 画像復号装置、および画像符号化装置 | |
WO2012081636A1 (ja) | 画像復号装置、画像符号化装置、および符号化データのデータ構造 |