【文献】
Ya Chen et al.,Optimization of Sample Adaptive Band Offset in HEVC,2017 Data Compression Conference,IEEE,2017年04月,p.434
【文献】
Chih-Ming Fu et al.,Sample Adaptive Offset in the HEVC Standard,IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY,IEEE,2012年12月,VOL.22, NO.12,pp.1755-1764
(58)【調査した分野】(Int.Cl.,DB名)
前記第1サブブロックは、前記複数のサブブロックのうち、前記符号化単位のブロックの4つの頂点のうち、左上の頂点と左下の頂点をそれぞれ含む2つのサブブロック、または、左上の頂点と右上の頂点と左下の頂点をそれぞれ含む3つのサブブロックであることを特徴とする請求項1に記載の符号化方法。
前記算出工程は、2つの前記第1サブブロックそれぞれのバンドポジションを用いて補間処理することで、該2つの第1サブブロックの間に位置する第2サブブロックのバンドポジションを算出することを特徴とする請求項2に記載の符号化方法。
前記符号化単位のブロックについて画素適応オフセット処理が実行される際に用いられる画素適応オフセットパラメータに、決定された前記少なくとも2つの第1サブブロックのバンドポジションを含めてシグナリングするシグナリング工程を更に有することを特徴とする請求項1乃至5のいずれか1項に記載の符号化方法。
前記複数のサブブロックのうち、前記第1サブブロック及び第2サブブロックそれぞれについて、1のオフセット値を用いて、サブブロックごとにバンドオフセットを実行した場合、前記シグナリング工程は、前記画素適応オフセットパラメータに、該1のオフセット値を含めてシグナリングすることを特徴とする請求項6に記載の符号化方法。
前記複数のサブブロックのうち、前記第1サブブロック及び第2サブブロックそれぞれについて、複数の異なるオフセット値を用いて、サブブロックごとにバンドオフセットを実行した場合、前記シグナリング工程は、前記画素適応オフセットパラメータに、前記第1サブブロック及び第2サブブロックそれぞれの、複数の異なるオフセット値を含めてシグナリングすることを特徴とする請求項6に記載の符号化方法。
前記第1サブブロックは、前記複数のサブブロックのうち、前記復号単位のブロックの4つの頂点のうち、左上の頂点と左下の頂点をそれぞれ含む2つのサブブロック、または、左上の頂点と右上の頂点と左下の頂点をそれぞれ含む3つのサブブロックであることを特徴とする請求項9に記載の復号方法。
前記算出工程は、2つの前記第1サブブロックそれぞれのバンドポジションを用いて補間処理することで、該2つの第1サブブロックの間に位置する第2サブブロックのバンドポジションを算出することを特徴とする請求項10に記載の復号方法。
前記複数のサブブロックのうち、前記第1サブブロック及び第2サブブロックそれぞれについて、1のオフセット値を用いて、サブブロックごとにバンドオフセットを実行することを特徴とする請求項9乃至13のいずれか1項に記載の復号方法。
前記複数のサブブロックのうち、前記第1サブブロック及び第2サブブロックそれぞれについて、複数の異なるオフセット値を用いて、サブブロックごとにバンドオフセットを実行することを特徴とする請求項9乃至13のいずれか1項に記載の復号方法。
【発明を実施するための形態】
【0012】
以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
【0013】
[第1の実施形態]
<1.エンコーダ及びデコーダの適用例>
はじめに、エンコーダ(符号化装置)及びデコーダ(復号装置)の適用例について説明する。
図1は、エンコーダ及びデコーダの適用例を示す図である。
【0014】
図1に示すように、エンコーダ110を送信装置に、デコーダ120を受信装置にそれぞれ配し、ネットワーク160を介して接続することで、画像処理システム100を形成することができる。
【0015】
画像処理システム100において、送信装置に配されたエンコーダ110は、入力された画像データを符号化することでデータストリームを生成する。また、送信装置は生成されたデータストリームを、ネットワーク160を介して受信装置に送信する。
【0016】
受信装置はデータストリームを受信する。また、受信装置に配されたデコーダ120は、データストリームを復号することで画像データを生成し、表示する。
【0017】
かかる画像処理システム100を形成することで、エンコーダ110及びデコーダ120は、例えば、インタネット分野、放送分野、通信分野等の種々の分野に適用することができる。
【0018】
適用例100aは、画像処理システム100をインタネット分野に適用した例を示している。適用例100aの場合、送信装置110の一例であるサーバ装置111より送信されたデータストリームを、受信装置110の一例であるパーソナルコンピュータ121a、スマート端末121b等が受信し、表示する。これにより、パーソナルコンピュータ121aやスマート端末121bのユーザは、サーバ装置111が保持する動画像データをインタネットを介して視聴することができる。
【0019】
適用例100bは、画像処理システム100を放送分野に適用した例を示している。適用例100bの場合、送信装置110の一例である放送用送信機112より送信されたデータストリームを、受信装置110の一例であるテレビ122が受信し、表示する。これにより、例えば、テレビ122のユーザは、放送用送信機112が送信する放送内容を視聴することができる。
【0020】
適用例100cは、画像処理システム100を通信分野に適用した例を示している。適用例100cの場合、送信装置110の一例であるテレビ電話機113より送信されたデータストリームを、受信装置110の一例であるテレビ電話機123が受信し、表示する。これにより、テレビ電話機123のユーザは、通話相手の顔を見ながら通話することができる。
【0021】
図2は、エンコーダ及びデコーダの他の適用例を示す図である。
図2に示すように、エンコーダ110とデコーダ120とを一体的に構成することで、蓄積装置200を形成することができる。
【0022】
蓄積装置200は、入力された画像データをエンコーダ110が符号化し、生成したデータストリームを記録媒体に格納する。また、蓄積装置200は、記録媒体に格納されたデータストリームを、デコーダ120が復号することで画像データを生成し、表示する。
【0023】
かかる蓄積装置200を形成することで、エンコーダ110及びデコーダ120は、例えば、蓄積分野に適用することができる。適用例200aは蓄積装置200を蓄積分野に適用した例を示している。適用例200aの場合、蓄積装置200の一例であるビデオレコーダ211は、内蔵するエンコーダ110が、画像データを符号化することで生成したデータストリームを記録媒体212に格納する。また、ビデオレコーダ211は、内蔵するデコーダ120が、記録媒体212より読み出したデータストリームを復号することで生成した画像データを、モニタ213に表示する。これにより、ビデオレコーダ211のユーザは、取得した動画像データを効率的に蓄積することができる。
【0024】
<2.エンコーダ及びデコーダのハードウェア構成>
次に、エンコーダ及びデコーダのハードウェア構成について説明する。なお、エンコーダ110及びデコーダ120は、同様のハードウェア構成を有していることから、ここでは、エンコーダ110のハードウェア構成について説明する。
【0025】
図3は、エンコーダのハードウェア構成の一例を示す図である。
図3に示すように、エンコーダ110は、CPU(Central Processing Unit)301、ROM(Read Only Memory)302、RAM(Random Access Memory)303を有する。CPU301、ROM302、RAM303は、いわゆるコンピュータを形成する。また、エンコーダ110は、補助記憶装置304、入力装置305、表示装置306、接続装置307、ドライブ装置308を有する。なお、エンコーダ110の各ハードウェアは、バス309を介して相互に接続される。
【0026】
CPU301は、補助記憶装置304にインストールされた各種プログラム(例えば、符号化プログラム等)を実行する。
【0027】
ROM302は、不揮発性メモリである。ROM302は、補助記憶装置304にインストールされた各種プログラムをCPU301が実行するために必要な各種プログラム、データ等を記憶する、主記憶デバイスとして機能する。具体的には、ROM302はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を記憶する。
【0028】
RAM303は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリである。RAM303は、補助記憶装置304にインストールされた各種プログラムがCPU301によって実行される際に展開される作業領域を提供する、主記憶デバイスとして機能する。
【0029】
補助記憶装置304は、インストールされた各種プログラムや、各種プログラムを実行する際に用いる情報を記憶する補助記憶デバイスである。
【0030】
入力装置305は、エンコーダ110に対して各種指示を入力する際に用いる入力デバイスである。
【0031】
表示装置306は、エンコーダ110の内部情報を表示する表示デバイスである。接続装置307は、エンコーダ110が、デコーダ120と接続し、通信を行うための通信デバイスである。
【0032】
ドライブ装置308はコンピュータ読み取り可能な記録媒体310をセットするためのデバイスである。ここでいう記録媒体310には、CD−ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。あるいは、記録媒体310には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等が含まれていてもよい。
【0033】
なお、補助記憶装置304にインストールされる各種プログラムは、例えば、配布された記録媒体310がドライブ装置308にセットされ、該記録媒体310に記録された各種プログラムがドライブ装置308により読み出されることでインストールされてもよい。あるいは、補助記憶装置304にインストールされる各種プログラムは、接続装置307を介してネットワーク160からダウンロードされることでインストールされてもよい。
【0034】
なお、
図3に示すハードウェア構成は、あくまで一例にすぎず、適用形態によっては、
図3に示すハードウェアの一部を除外して、あるいは他のハードウェアに置き換えて適用してもよいことはいうまでもない。
【0035】
<3.エンコーダの機能構成>
次に、符号化プログラムが実行されることで実現される、エンコーダ110の機能構成について説明する。
図4は、エンコーダの機能構成の一例を示す図である。
図4に示すように、エンコーダ110は、ブロック分割部401、直交変換部402、量子化部403、エントロピ符号化部404を有する。また、エンコーダ110は、逆量子化部405、逆直交変換部406、ループフィルタ部407、復号画像記憶部408、イントラ/インタ予測部409を有する。
【0036】
ブロック分割部401は、入力された画像データを符号化ツリーユニット(CTU(Coding Tree Unit))のブロックごとに、再帰的に、符号化ユニット(CU(Coding Unit))のブロックに分割する。なお、一般的な(H.265/HEVCにおける)ブロック分割部では、更に、各CUを予測ユニット(PU(Prediction Unit))と変換ユニット(TU(Transform Unit))のブロックに分割する。しかしながら、圧縮符号化に関する次世代の国際標準では、PU、TUを廃止し、全てCUに分割することから、本実施形態において、ブロック分割部401は、CTUのブロックを、全てCUに分割するものとして説明する。なお、圧縮符号化に関する次世代の国際標準では、CTUのサイズは、最大128画素×128画素以上であるので、以下では、CTUのサイズは、128画素×128画素として説明する。
【0037】
直交変換部402は、入力された予測残差信号に対して直交変換処理を行う。量子化部403は、直交変換処理された予測残差信号を量子化することで量子化信号を生成し、エントロピ符号化部404及び逆量子化部405に出力する。
【0038】
エントロピ符号化部404は、量子化信号をエントロピ符号化することで、データストリームを生成し、出力する。
【0039】
逆量子化部405は、量子化信号を逆量子化し、逆直交変換部406に出力する。逆直交変換部406は、逆量子化された量子化信号に対して逆直交変換処理を行うことで、入力された予測残差信号と同程度の信号を得る。
【0040】
逆直交変換部406により得られた信号は、例えば、イントラ/インタ予測部409により動き補償された予測画像に加算されることで復号画像が生成され、ループフィルタ部407に入力される。
【0041】
ループフィルタ部407は、復号画像の符号化ノイズを低減するフィルタ処理を行う。ループフィルタ部407がフィルタ処理を行うことで、復号画像のフレーム間で画質劣化が伝播することを防ぐことができる。なお、ループフィルタ部407は、更に、
・デブロッキングフィルタ(Deblocking Filter)部、
・画素適応オフセット(Sample Adaptive Offset)処理部、
・適応ループフィルタ(Adaptive Loop Filter)部、
を有する(詳細は後述)。ループフィルタ部407が有するこれらの各部が処理を実行する際に用いるパラメータ(例えば、画素適応オフセット処理部が画素適応オフセット処理を実行する際に用いる画素適応オフセットパラメータ等)はシグナリングされる。ループフィルタ部407によりシグナリングされたパラメータは、付帯情報としてエントロピ符号化部404によりデータストリームに組み込まれる。
【0042】
復号画像記憶部408は、フィルタ処理された復号画像を記憶する。
【0043】
イントラ/インタ予測部409は、復号画像の各ブロックを用いて予測画像のブロックを生成するイントラ予測を行う。また、イントラ/インタ予測部409は、復号画像の各フレームのブロックに基づいて動き補償を行い、予測画像のブロックを生成するインタ予測を行う。
【0044】
更に、イントラ/インタ予測部409は、イントラ予測により生成されたブロックまたはインタ予測により生成されたブロックのいずれか一方を含む予測画像を出力する。
【0045】
イントラ/インタ予測部409より出力された予測画像は、入力された画像データとの残差計算に用いられ、予測残差信号として、直交変換部402に入力される。また、イントラ/インタ予測部409より出力された予測画像に対しては、ブロックごとに逆直交変換部406により得られた予測残差信号と同程度の信号が加算され、復号画像としてループフィルタ部407に入力される。
【0046】
<4.ループフィルタ部の説明>
続いて、エンコーダ110のループフィルタ部407の詳細について説明する。なお、以下、エンコーダ110のループフィルタ部407の詳細を説明するにあたっては、比較対象として、まず、一般的な(H.265/HEVCにおける)エンコーダのループフィルタ部について詳細を説明する。以下、「4.1」〜「4.4」までは、一般的なエンコーダのループフィルタ部について詳細を説明する。その後、「4.5」〜「4.8」において、第1の実施形態に係るエンコーダ110のループフィルタ部407について詳細を説明する。
【0047】
<4.1 一般的なエンコーダのループフィルタ部の機能構成>
図5は、一般的なエンコーダのループフィルタ部の機能構成の一例を示す図である。
図5に示すように、ループフィルタ部は、デブロッキングフィルタ部510、画素適応オフセット処理部520を有する。
【0048】
デブロッキングフィルタ部510は、復号画像の各ブロックをフィルタ処理することで、画像データの各ブロックを符号化した際にブロック境界で生じた歪を減少させる。画素適応オフセット処理部520は、デブロッキングフィルタ部510によりフィルタ処理された復号画像の各ブロックを、画素単位で分類し、各画素に対して分類に応じたオフセット値を加算する。
【0049】
なお、画素適応オフセット処理部520は、更に、エッジオフセット処理部521、バンドオフセット処理部522、選択部523を有する。
【0050】
エッジオフセット処理部521は、エッジオフセットクラスとして指定された方向に連続する3画素の大小関係によりエッジ状態を分類する。また、エッジオフセット処理部521は、エッジ状態の分類に対応するオフセット値を復号画像の各ブロックの画素値に加算する。更に、エッジオフセット処理部521は、画素値にオフセット値が加算された各ブロックを、選択部523に通知する。
【0051】
なお、エッジオフセット処理部521は、これらの処理(エッジオフセット処理)を、エッジオフセット処理に関わるSAOパラメータを変更しながら、それぞれのSAOパラメータについて実行する。
【0052】
バンドオフセット処理部522は、復号画像が取り得る画素値の階調を32個のバンドに分割し、その中から階調が連続する4個のバンドを選択したうえで、該4個のバンドに属する画素値に対して、オフセット値を加算(または減算)する。
【0053】
具体的には、バンドオフセット処理部522は、
図5に示すように、ブロック取得部541、SAOパラメータ変更部542、画素値変更部543を有する。ブロック取得部541は、画素適応オフセット処理部520が取得した処理対象のブロックを読み出し、画素値変更部543に通知する。SAOパラメータ変更部542は、バンドオフセット処理に関わるSAOパラメータを決定し、画素値変更部543に出力する。
【0054】
画素値変更部543は、処理対象のブロックの画素値を、SAOパラメータ変更部542より出力されたバンドオフセット処理に関わるSAOパラメータを用いて変更する。また、画素値変更部543は画素値を変更したブロックを、バンドオフセット処理に関わるSAOパラメータとともに選択部523に通知する。
【0055】
なお、バンドオフセット処理部522は、これらの処理(バンドオフセット処理)を、バンドオフセット処理に関わるSAOパラメータを変更しながら、それぞれのSAOパラメータについて実行する。
【0056】
選択部523は、処理対象のブロックに対して、エッジオフセット処理部521が行った処理結果、及び、バンドオフセット処理部522が行った処理結果をそれぞれ取得し、レート歪(RD(Rate Distortion))コストを算出する。また、選択部523は、算出したRDコストが最も低い処理結果を判定し、判定した処理結果の算出に用いられたSAOパラメータをシグナリングする。
【0057】
<4.2 一般的なエンコーダの画素適応オフセット処理部による画素適応オフセット処理の流れ>
次に、一般的なエンコーダの画素適応オフセット処理部520による画素適応オフセット処理の流れについて説明する。
図6は、一般的なエンコーダによる画素適応オフセット処理の流れを示すフローチャートである。
【0058】
処理対象のブロックについてデブロッキングフィルタ部510によるデブロッキングフィルタ処理が完了すると、画素適応オフセット処理部520は、
図6に示す画素適応オフセット処理を開始する。
【0059】
ステップS601において、画素適応オフセット処理部520は、処理対象のブロックを取得する。
【0060】
ステップS602において、エッジオフセット処理部521は、取得された処理対象のブロックを読み出し、エッジオフセット処理に関わる所定のSAOパラメータを用いて、エッジオフセット処理を行う。
【0061】
ステップS603において、選択部523は、ステップS602におけるエッジオフセット処理の処理結果について、RDコストを算出する。
【0062】
ステップS604において、エッジオフセット処理部521は、処理対象のブロックに対して、予め定められた範囲内の全てのSAOパラメータ(エッジオフセット処理に関わるSAOパラメータ)を用いてエッジオフセット処理を実行したか否かを判定する。
【0063】
ステップS604において、エッジオフセット処理の実行に用いられていないSAOパラメータがあると判定した場合には(ステップS604においてNoの場合には)、ステップS602に戻る。
【0064】
一方、ステップS604において、予め定められた範囲内の全てのSAOパラメータを用いてエッジオフセット処理を実行したと判定した場合には、ステップS605に進む。
【0065】
ステップS605において、バンドオフセット処理部522は、処理対象のブロックに対して、バンドオフセット処理に関わる所定のSAOパラメータを用いて、バンドオフセット処理(詳細は後述)を行う。
【0066】
ステップS606において、選択部523は、ステップS606におけるバンドオフセット処理の処理結果について、RDコストを算出する。
【0067】
ステップS607において、バンドオフセット処理部522は、処理対象のブロックに対して、予め定められた範囲内の全てのSAOパラメータ(バンドオフセット処理に関わるSAOパラメータ)を用いてバンドオフセット処理を実行したか否かを判定する。
【0068】
ステップS607において、バンドオフセット処理の実行に用いられていないSAOパラメータがあると判定した場合には(ステップS607においてNoの場合には)、ステップS605に戻る。
【0069】
一方、ステップS607において、予め定められた範囲内の全てのSAOパラメータを用いてバンドオフセット処理を実行したと判定した場合には、ステップS608に進む。
【0070】
ステップS608において、選択部523は、エッジオフセット処理部521が行った各処理結果、及び、バンドオフセット処理部522が行った各処理結果について、それぞれのRDコストを比較し、RDコストが最も低い処理結果を判定する。また、選択部523は、判定した処理結果の算出に用いられたSAOパラメータを特定する。
【0071】
ステップS609において、選択部523は、判定した処理結果を、画素適応オフセット処理の処理結果として選択して出力する。
【0072】
ステップS610において、選択部523は、特定したSAOパラメータについてシグナリング処理(詳細は後述)を行う。
【0073】
<4.3 一般的なエンコーダにおけるバンドオフセット処理(ステップS605)の詳細>
次に、一般的なエンコーダにおけるバンドオフセット処理(ステップS605)の詳細について説明する。
【0074】
(1)バンドオフセット処理の処理内容
はじめに、バンドオフセット処理の処理内容について説明する。
図7は、一般的なエンコーダにおけるバンドオフセット処理の処理内容を説明するための図である。このうち、
図7の700aは、処理対象のブロックを示している。
図7の700aに示すように、一般的なエンコーダの場合、バンドオフセット処理は、復号画像710においてCTU単位のブロックに対して実行される。
図7の700aの例は、64画素×64画素のCTU720のブロックに対してバンドオフセット処理が実行され、処理結果として、CTU720'のブロックが生成された様子を示している。
【0075】
図7の700bは、バンドオフセット処理の具体例を示している。
図7の700bに示すように、復号画像710が0〜255の256階調の画素値を有していた場合、32個のバンドが設定されることで、1バンドあたりの階調数は8階調となる。
【0076】
ここで、SAOパラメータ変更部542が、CTU720用のバンドポジションとして、矢印730で示すバンドポジションを出力したとする。この場合、画素値変更部543は、連続する4個のバンドとして、バンド731〜734を認識する。
【0077】
そして、画素値変更部543は、CTU720のブロックに含まれる各画素のうち、画素値が、バンド731に属する画素について、オフセット値V
1を加算する。同様に、画素値変更部543は、CTU720のブロックに含まれる各画素のうち、画素値が、バンド732に属する画素について、オフセット値V
2を加算する。同様に、画素値変更部543は、CTU720のブロックに含まれる各画素のうち、画素値が、バンド733に属する画素について、オフセット値V
3を加算する。同様に、画素値変更部543は、CTU720のブロックに含まれる各画素のうち、画素値が、バンド734に属する画素について、オフセット値V
4を加算する。
【0078】
このように、画素値変更部543は、バンドオフセット処理に関わるSAOパラメータ=(矢印730で示すバンドポジション、オフセット値V
1〜V
4)を用いて、CTU720のブロックに対してバンドオフセット処理を行う。これにより、画素値変更部543は、バンドオフセット処理の処理結果として、CTU720'のブロックを生成する。
【0079】
なお、連続する4つのバンドそれぞれに加算(または減算)するオフセット値V
1〜V
4は、異なる値であっても同じ値(1つの値)であってもよい。
【0080】
(2)バンドオフセット処理の流れ
続いて、一般的なエンコーダによるバンドオフセット処理(ステップS605)の詳細なフローチャートについて説明する。
図8は、一般的なエンコーダによるバンドオフセット処理の流れを示すフローチャートである。
【0081】
ステップS801において、ブロック取得部541は、画素適応オフセット処理部520が取得した処理対象のブロックを読み出す。
【0082】
ステップS802において、SAOパラメータ変更部542は、バンドオフセット処理に関わるSAOパラメータとして、"バンドポジション"、連続する4つのバンドの"オフセットの絶対値"及び"オフセットの符号"を決定する。なお、SAOパラメータ変更部542によって決定されるバンドオフセット処理に関わるSAOパラメータの範囲は予め定められているものとし、SAOパラメータ変更部542は、当該範囲内のSAOパラメータを順次決定していく。また、SAOパラメータ変更部542は、決定したバンドオフセット処理に関わるSAOパラメータを、順次、画素値変更部543に出力していく。
【0083】
ステップS803において、画素値変更部543は、ブロック取得部541により読み出された処理対象のブロックの画素値を、SAOパラメータ変更部542により出力された、バンドオフセット処理に関わるSAOパラメータを用いて変更する。
【0084】
<4.4 一般的なエンコーダによるシグナリング処理(ステップS610)の詳細>
次に、一般的なエンコーダによるシグナリング処理(ステップS610)の詳細について説明する。
図9は、一般的なエンコーダによるシグナリング処理の流れを示すフローチャートである。なお、ここでは、RDコスト比較により、バンドオフセット処理に関わる所定のSAOパラメータを用いたバンドオフセット処理の処理結果が、最もRDコストが低い処理結果であると判定されたものとして説明する。
【0085】
ステップS901において、選択部523は、画素適応オフセット処理において、バンドオフセット処理の処理結果が選択されたことを示す情報をシグナリングする。
【0086】
ステップS902において、選択部523は、最もRDコストが低い処理結果が算出された際の、バンドオフセット処理に関わるSAOパラメータである4つのオフセット絶対値をシグナリングする。
【0087】
ステップS903において、選択部523は、最もRDコストが低い処理結果が算出された際の、バンドオフセット処理に関わるSAOパラメータである4つのオフセット符号をシグナリングする。
【0088】
ステップS904において、選択部523は、最もRDコストが低い処理結果が算出された際の、バンドオフセット処理に関わるSAOパラメータであるバンドポジションをシグナリングする。
【0089】
<4.5 第1の実施形態に係るエンコーダのループフィルタ部の機能構成>
続いて、第1の実施形態に係るエンコーダ110のループフィルタ部407の機能構成について説明する。
【0090】
図10は、第1の実施形態に係るエンコーダのループフィルタ部の機能構成の一例を示す図である。なお、
図5を用いて説明した、一般的なエンコーダのループフィルタ部と同様の機能については同じ符号を付すこととし、ここでは説明を省略する。
【0091】
図5との相違点は、画素適応オフセット処理部520が、領域バンドオフセット処理部1001、選択部1002、適応ループフィルタ部1003を有する点である。領域バンドオフセット処理部1001は、バンドオフセット処理部522のように、CTU単位のブロックでバンドオフセット処理を行うのではなく、CTUを更に複数の領域に分割し、領域単位(サブブロック単位)でバンドオフセット処理を行う。領域単位のバンドオフセット処理を「領域バンドオフセット処理」と称す。
【0092】
領域単位でバンドオフセット処理を行うために、領域バンドオフセット処理部1001は、ブロック取得部541、領域分割部1011、SAOパラメータ変更部1012、SAOパラメータ算出部1013、画素値変更部1014を有する。
【0093】
このうち、領域分割部1011は分割手段の一例であり、ブロック取得部541が読み出した処理対象のブロックを、16個の正方形の領域(サブブロック)に分割する。なお、処理対象のブロックの分割数は、16個より多くても少なくてもよい。また、領域分割部1011は、分割により得られた領域を、順次、画素値変更部1014に出力する。
【0094】
SAOパラメータ変更部1012は決定手段の一例であり、領域バンドオフセット処理に関わるSAOパラメータを順次決定し、決定した領域バンドオフセット処理に関わるSAOパラメータを、順次、SAOパラメータ算出部1013に出力する。なお、本実施形態のSAOパラメータ変更部1012は、領域分割部1011により分割される16個の領域のうち、左上隅に位置する領域と左下隅に位置する領域の2つの領域について、領域バンドオフセット処理に関わるSAOパラメータを決定するものとする。つまり、SAOパラメータ変更部1012は、処理対象のブロックの4つの頂点のうちの左上の頂点を含む領域と、左下の頂点を含む領域の2つの領域(第1サブブロック)についてのSAOパラメータを決定するものとする。
【0095】
SAOパラメータ算出部1013は算出手段の一例である。SAOパラメータ算出部1013は、2つの領域以外(第1サブブロック以外)の残りの領域(第2サブブロック)の領域バンドオフセット処理に関わるSAOパラメータを算出する。具体的には、SAOパラメータ算出部1013は、決定された2つの領域の領域バンドオフセット処理に関わるSAOパラメータを用いて補間処理することで算出する。SAOパラメータ算出部1013は、補間処理を行うにあたり、処理対象のブロック内における2つの領域と残りの領域それぞれとの位置関係を用いる。
【0096】
また、SAOパラメータ算出部1013は、決定された、または、算出した16個の領域それぞれの、領域バンドオフセット処理に関わるSAOパラメータを、画素値変更部1014に出力する。
【0097】
画素値変更部1014は、SAOパラメータ算出部1013より出力された、領域バンドオフセット処理に関わるSAOパラメータを用いて、処理対象のブロックの各領域の画素値を変更する。また、画素値変更部1014は、画素値が変更された16個の領域を含む処理対象のブロックを、領域バンドオフセット処理の処理結果として選択部1002に出力する。
【0098】
なお、画素値変更部1014は、SAOパラメータ変更部1012より、決定された領域バンドオフセット処理に関わるSAOパラメータが出力されるごとに、16個の領域の画素値を変更する。そして、画素値変更部1014は、画素値を変更した16個の領域を含む処理対象のブロックを、領域バンドオフセット処理の処理結果として選択部1002に出力する。
【0099】
選択部1002は、処理対象のブロックに対して、エッジオフセット処理部521が行った各処理結果、バンドオフセット処理部522が行った各処理結果、及び、領域バンドオフセット処理部1001が行った各処理結果を取得し、RDコストを算出する。また、選択部1002は、算出したRDコストが最も低い処理結果を判定し、判定した処理結果を選択して、適応ループフィルタ部1003に出力する。更に、選択部1002は、判定した処理結果の算出に用いられたSAOパラメータをシグナリングする。
【0100】
適応ループフィルタ部1003は、画素適応オフセット処理部520によりオフセット処理された復号画像の各ブロックをフィルタ処理することで、入力画像との誤差を低減させる。
【0101】
<4.6 第1の実施形態に係るエンコーダの画素適応オフセット処理部による画素適応オフセット処理の流れ>
次に、第1の実施形態に係るエンコーダ110の画素適応オフセット処理部520による画素適応オフセット処理の流れについて説明する。
図11は、第1の実施形態に係るエンコーダによる画素適応オフセット処理の流れを示すフローチャートである。なお、
図6を用いて説明した、一般的なエンコーダによる画素適応オフセット処理のフローチャートと同様の工程については同じ符号を付すこととし、ここでは説明を省略する。
【0102】
図6との相違点は、ステップS1101〜S1103、S1104である。ステップS1101において、領域バンドオフセット処理部1001は、処理対象のブロックに対して、領域バンドオフセット処理に関わる所定のSAOパラメータを用いて、領域バンドオフセット処理(詳細は後述)を行う。
【0103】
ステップS1102において、選択部523は、ステップS1101における領域バンドオフセット処理の処理結果について、RDコストを算出する。
【0104】
ステップS1103において、領域バンドオフセット処理部1001は、処理対象のブロックに対して、予め定められた範囲内の全てのSAOパラメータを用いて領域バンドオフセット処理を実行したか否かを判定する。
【0105】
ステップS1103において、領域バンドオフセット処理の実行に用いられていないSAOパラメータがあると判定した場合には(ステップS1103においてNoの場合には)、ステップS1101に戻る。
【0106】
一方、ステップS1103において、予め定められた範囲内の全てのSAOパラメータを用いて領域バンドオフセット処理を実行したと判定した場合には、ステップS608に進む。
【0107】
また、ステップS1104において、選択部1002は、特定したSAOパラメータについてシグナリング処理(詳細は後述)を行う。なお、領域バンドオフセット処理の処理結果が最もRDコストが低いと判定された場合、選択部1002は、領域バンドオフセット処理に関わるSAOパラメータをシグナリングする。ただし、選択部1002は、領域バンドオフセット処理に関わるSAOパラメータのうち、SAOパラメータ変更部1012より出力される2つの領域についての領域バンドオフセット処理に関わるSAOパラメータをシグナリングする。
【0108】
<4.7 第1の実施形態に係るエンコーダにおける領域バンドオフセット処理(ステップS1101)の詳細>
次に、第1の実施形態に係るエンコーダ110における領域バンドオフセット処理(ステップS1101)の詳細について説明する。
【0109】
(1)領域バンドオフセット処理の処理内容
はじめに、バンドオフセット処理の処理内容について説明する。
図12は、第1の実施形態に係るエンコーダにおける領域バンドオフセット処理の処理内容を説明するための第1の図である。
【0110】
図12に示すように、第1の実施形態に係るエンコーダ110の場合、領域バンドオフセット処理は、復号画像710に含まれるCTU720のブロックを16個の領域に分割し、領域単位で実行される。CTU720のブロックの分割数は、16個より多くても少なくてもよい。
【0111】
図12の例では、128画素×128画素のCTU720のブロックが、領域1〜領域16の16個の領域に分割されることで、CTU1210のブロックが生成され、領域1から、順次、領域バンドオフセット処理が実行される。
【0112】
そして、領域16に対する領域バンドオフセット処理が完了することで、CTU1210'のブロックが生成される。領域バンドオフセット処理部1001は、生成したCTU1210'のブロックを、CTU720のブロックに対する領域バンドオフセット処理の処理結果(CTU720'のブロック)として、選択部1002に出力する。
【0113】
(2)領域バンドオフセット処理の具体例
図13は、第1の実施形態に係るエンコーダにおける領域バンドオフセット処理の処理内容を説明するための第2の図である。
図13に示すように、復号画像710が0〜255の256階調の画素値を有していた場合、32個のバンドが設定されることで、1バンドあたりの階調数は8階調となる。
【0114】
図13の1301_1は、SAOパラメータ変更部1012が、CTU1210のブロックの領域1用のバンドポジションとして、矢印1310_1で示すバンドポジションを出力した様子を示している。この場合、画素値変更部1014は、連続する4個のバンドとして、バンド1311_1〜1314_1を認識する。
【0115】
そして、画素値変更部1014は、CTU1210のブロックの領域1に含まれる各画素のうち、画素値が、バンド1311_1に属する画素について、オフセット値V
1_1を加算する。同様に、画素値変更部1014は、CTU1210のブロックの領域1に含まれる各画素のうち、画素値が、バンド1312_1に属する画素について、オフセット値V
2_1を加算する。同様に、画素値変更部1014は、CTU1210のブロックの領域1に含まれる各画素のうち、画素値が、バンド1313_1に属する画素について、オフセット値V
3_1を加算する。同様に、画素値変更部1014は、CTU1210のブロックの領域1に含まれる各画素のうち、画素値が、バンド1314_1に属する画素について、オフセット値V
4_1を加算する。
【0116】
なお、領域バンドオフセット処理部1001は、領域2〜16についても同様の処理を行う。
図13の1301_16は、このうち、SAOパラメータ変更部1012が、CTU1210のブロックの領域16用のバンドポジションとして、矢印1310_16で示すバンドポジションを出力した様子を示している。この場合、画素値変更部1014は、連続する4個のバンドとして、バンド1311_16〜1314_16を認識する。
【0117】
そして、画素値変更部1014は、CTU1210のブロックの領域16に含まれる各画素のうち、画素値が、バンド1311_16に属する画素について、オフセット値V
1_16を加算する。同様に、画素値変更部1014は、CTU1210のブロックの領域16に含まれる各画素のうち、画素値が、バンド1312_16に属する画素について、オフセット値V
2_16を加算する。同様に、画素値変更部1014は、CTU1210のブロックの領域16に含まれる各画素のうち、画素値が、バンド1313_16に属する画素について、オフセット値V
3_16を加算する。同様に、画素値変更部1014は、CTU1210のブロックの領域16に含まれる各画素のうち、画素値が、バンド1314_16に属する画素について、オフセット値V
4_16を加算する。
【0118】
このように、画素値変更部1014は、領域バンドオフセット処理に関わるSAOパラメータとして、
・矢印1310_1〜1310_16で示すバンドポジション、
・オフセット値V
1_1〜V
4_16のオフセット絶対値
・オフセット値V
1_1〜V
4_16のオフセット符号、
を用いて、CTU1210のブロックに対して領域バンドオフセット処理を行う。これにより、画素値変更部1014は、領域バンドオフセット処理の処理結果として、CTU1210'のブロックを生成することができる。
【0119】
(3)SAOパラメータ算出部の処理内容
続いて、SAOパラメータ算出部1013の処理内容について説明する。上述したように、SAOパラメータ算出部1013は、SAOパラメータ変更部1012から出力される2つの領域以外の残りの領域の領域バンドオフセット処理に関わるSAOパラメータを算出する。具体的には、SAOパラメータ算出部1013は、2つの領域の領域バンドオフセット処理に関わるSAOパラメータを用いて補間処理することで算出する。SAOパラメータ算出部1013は、補間処理を行うにあたり、処理対象のブロック内における2つの領域と残りの領域それぞれとの位置関係を用いる。
【0120】
図14は、第1の実施形態に係るエンコーダによる領域バンドオフセット処理において、各領域のバンドポジションを算出するための算出方法を示す図である。
図14に示すように、CTU1210のブロックの領域1〜領域16の16個の領域のうち、SAOパラメータ変更部1012は、領域1と領域13についてのバンドポジション"BP
1"、"BP
2"を出力する。
【0121】
SAOパラメータ算出部1013は、SAOパラメータ変更部1012より出力された、領域1についてのバンドポジション="BP
1"に基づいて、領域2、領域3、領域4のバンドポジションを算出する(下式(1))。
【0122】
また、SAOパラメータ算出部1013は、SAOパラメータ変更部1012より出力された、領域13についてのバンドポジション="BP
2"に基づいて、領域14、領域15、領域16のバンドポジションを算出する(下式(2))。
【0123】
また、SAOパラメータ算出部1013は、バンドポジション="BP
1"、"BP
2"に基づいて、領域5、領域6、領域7、領域8のバンドポジションを算出する(下式(3))。
【0124】
更に、SAOパラメータ算出部1013は、バンドポジション="BP
1"、"BP
2"に基づいて、領域9、領域10、領域11、領域12のバンドポジションを算出する(下式(4))。
【0125】
【数1】
(4)領域バンドオフセット処理の流れ
続いて、第1の実施形態に係るエンコーダ110による領域バンドオフセット処理(ステップS1101)の詳細なフローチャートについて説明する。
図15は、第1の実施形態に係るエンコーダによる領域バンドオフセット処理の流れを示すフローチャートである。
【0126】
ステップS1501において、ブロック取得部541は、処理対象のブロックを読み出す。
【0127】
ステップS1502において、領域分割部1011は、処理対象のブロックを、領域1〜領域16の16個の領域に分割する。
【0128】
ステップS1503において、SAOパラメータ変更部1012は、領域1と領域13それぞれについて、領域バンドオフセット処理に関わるSAOパラメータを決定する。具体的には、SAOパラメータ変更部1012は、領域1と領域13それぞれについて、バンドポジション、4つのオフセット絶対値、4つのオフセット符号を決定する。SAOパラメータ変更部1012は、決定した領域1と領域13の領域バンドオフセット処理に関わるSAOパラメータをSAOパラメータ算出部1013に出力する。
【0129】
ステップS1504において、SAOパラメータ算出部1013は、領域2〜12、領域14〜16それぞれについてバンドポジションを算出する。なお、領域2〜12、領域14〜16それぞれについての、4つのオフセット絶対値、4つのオフセット符号は、ここでは、領域1または領域13と同じ値(1つの値)に決定するものとする。
【0130】
ステップS1505において、画素値変更部1014は、決定された、または、算出された、領域バンドオフセット処理に関わるSAOパラメータを用いて、16個の領域それぞれの画素値を変更する。
【0131】
<4.8 第1の実施形態に係るエンコーダによるシグナリング処理(ステップS1104)の詳細>
次に、第1の実施形態に係るエンコーダ110によるシグナリング処理(ステップS1104)の詳細について説明する。
図16は、第1の実施形態に係るエンコーダによるシグナリング処理の流れを示すフローチャートである。なお、ここでは、選択部1002におけるRDコスト比較により、領域バンドオフセット処理に関わる所定のSAOパラメータを用いた領域バンドオフセット処理の処理結果が、最もRDコストが低い処理結果であると判定されたものとして説明する。
【0132】
ステップS1601において、選択部1002は、画素適応オフセット処理において、領域バンドオフセット処理の処理結果が選択されたことを示す情報をシグナリングする。
【0133】
ステップS1602において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータのうち、領域1の4つのオフセット絶対値をシグナリングする。
【0134】
ステップS1603において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータのうち、領域1の4つのオフセット符号をシグナリングする。
【0135】
ステップS1604において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータのうち、領域1のバンドポジションをシグナリングする。
【0136】
ステップS1605において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータのうち、領域13の4つのオフセット絶対値をシグナリングする。
【0137】
ステップS1606において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータのうち、領域13の4つのオフセット符号をシグナリングする。
【0138】
ステップS1607において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータのうち、領域13のバンドポジションをシグナリングする。
【0139】
<5.デコーダの機能構成>
次に、復号プログラムを実行することで実現される、デコーダ120の機能構成について説明する。
図17は、デコーダの機能構成の一例を示す図である。
図17に示すように、デコーダ120は、エントロピ復号部1701、逆量子化部1702、逆直交変換部1703、ループフィルタ部1704、復号画像記憶部1705、イントラ/インタ予測部1706を有する。
【0140】
エントロピ復号部1701は、受信したデータストリームを復号し、量子化信号を出力する。また、エントロピ復号部1701は、データストリームより付帯情報(ループフィルタ部1704において用いられるSAOパラメータ等を含む)を抽出し、ループフィルタ部1704に通知する。
【0141】
逆量子化部1702は、量子化信号を逆量子化し、逆直交変換部1703に出力する。逆直交変換部1703は、逆量子化された量子化信号に対して逆直交変換処理を行うことで、予測残差信号を得る。
【0142】
逆直交変換部1703により得られた予測残差信号は、例えば、イントラ/インタ予測部1706により動き補償された予測画像のブロックに加算されることで復号画像が生成され、ループフィルタ部1704に入力される。
【0143】
ループフィルタ部1704は、通知された付帯情報を用いて、入力された復号画像の符号化ノイズを低減するフィルタ処理を行う。ループフィルタ部1704がフィルタ処理を行うことで、復号画像のフレーム間で画質劣化が伝播することを防ぐことができる。なお、ループフィルタ部1704は、更に、デブロッキングフィルタ部と、画素適応オフセット処理部と、適応ループフィルタ部とを有する(詳細は後述)。
【0144】
また、ループフィルタ部1704は、フィルタ処理した復号画像を復号結果として出力するとともに、復号画像記憶部1705に記憶する。
【0145】
イントラ/インタ予測部1706は、復号画像の各ブロックを用いて予測画像のブロックを生成するイントラ予測を行う。また、イントラ/インタ予測部1706は、復号画像の各フレーム間のブロックに基づいて動き補償を行い、予測画像のブロックを生成するインタ予測を行う。
【0146】
更に、イントラ/インタ予測部1706は、イントラ予測により生成されたブロックまたはインタ予測により生成されたブロックのいずれか一方を含む予測画像を出力する。出力された予測画像に対しては、逆直交変換部1703により得られた予測残差信号が加算され、復号画像として、ループフィルタ部1704に入力される。
【0147】
<6.ループフィルタの説明>
続いて、デコーダ120のループフィルタ部1704の詳細について説明する。なお、以下、デコーダ120のループフィルタ部1704の詳細を説明するにあたっては、比較対象として、まず、一般的な(H.265/HEVCにおける)デコーダのループフィルタ部について詳細を説明する。以下、「6.1」〜「6.2」までは、一般的なデコーダのループフィルタ部について詳細を説明する。その後、「6.3」〜「6.5」において、第1の実施形態に係るデコーダ120のループフィルタ部1704について詳細を説明する。
【0148】
<6.1 一般的なデコーダのループフィルタ部の機能構成>
図18は、一般的なデコーダのループフィルタ部の機能構成の一例を示す図である。
図18に示すように、ループフィルタ部は、デブロッキングフィルタ部1810、画素適応オフセット処理部1820を有する。
【0149】
デブロッキングフィルタ部1810は、復号画像の各ブロックをフィルタ処理することで、エンコーダ110が、画像データの各ブロックを符号化した際にブロック境界で生じた歪を減少させる。画素適応オフセット処理部1820は、デブロッキングフィルタ部1810によりフィルタ処理された復号画像の各ブロックを、画素単位で分類し、各画素に対して分類に応じたオフセット値を加算する。
【0150】
なお、画素適応オフセット処理部1820は、更に、エッジオフセット処理部1821、バンドオフセット処理部1822を有しており、エントロピ復号部1701より通知された付帯情報に基づいて、いずれかの処理部を実行させる。
【0151】
エッジオフセット処理部1821は、エッジオフセットクラスとして指定された方向に連続する3画素の大小関係によりエッジ状態を分類する。また、エッジオフセット処理部1821は、エッジ状態の分類に対応するオフセット値を復号画像の各ブロックの画素値に加算する。
【0152】
バンドオフセット処理部1822は、復号画像が取り得る画素値の階調を32個のバンドに分割し、その中から階調が連続する4個のバンドを選択したうえで、該4個のバンドに属する画素値に対して、所定のオフセット値を加算(または減算)する。
【0153】
具体的には、バンドオフセット処理部1822は、更に、ブロック取得部1841、SAOパラメータ取得部1842、画素値変更部1843を有する。ブロック取得部1841は、画素適応オフセット処理部1820が取得した処理対象のブロックを読み出し、画素値変更部1843に通知する。SAOパラメータ取得部1842は、付帯情報に含まれるバンドオフセット処理に関わるSAOパラメータを取得し、画素値変更部1843に出力する。
【0154】
画素値変更部1843は、処理対象のブロックの画素値を、SAOパラメータ取得部1842より出力された、バンドオフセット処理に関わるSAOパラメータを用いて変更する。また、画素値変更部1843は画素値を変更したブロックを出力する。
【0155】
<6.2 一般的なデコーダの画素適応オフセット処理部による画素適応オフセット処理の流れ>
次に、一般的なデコーダの画素適応オフセット処理部1820による画素適応オフセット処理の流れについて説明する。
図19は、一般的なデコーダによる画素適応オフセット処理の流れを示すフローチャートである。
【0156】
処理対象のブロックについてデブロッキングフィルタ部1810によるデブロッキングフィルタ処理が完了すると、画素適応オフセット処理部1820は、
図19に示す画素適応オフセット処理を開始する。
【0157】
ステップS1901において、画素適応オフセット処理部1820は、処理対象のブロックを取得する。
【0158】
ステップS1902において、画素適応オフセット処理部1820は、エントロピ復号部1701より付帯情報を取得する。
【0159】
ステップS1903において、画素適応オフセット処理部1820は、取得した付帯情報に基づいて、オフセットモードがバンドオフセットモードか否かを判定する。ステップS1903においてバンドオフセットモードであると判定した場合には(ステップS1903においてYesの場合には)、ステップS1904に進む。
【0160】
ステップS1904において、バンドオフセット処理部1822は、付帯情報に含まれるバンドオフセット処理に関わるSAOパラメータを用いて、バンドオフセット処理を実行する。具体的には、SAOパラメータ取得部1842が、付帯情報に含まれるバンドオフセット処理に関わるSAOパラメータを取得し、ブロック取得部1841が、取得された処理対象のブロックを読み出す。更に、画素値変更部1843が処理対象のブロックの画素値を変更する。
【0161】
一方、ステップS1903においてバンドオフセットモードではないと判定した場合には(ステップS1903においてNoの場合には)、ステップS1905に進む。
【0162】
ステップS1905において、画素適応オフセット処理部1820は、オフセットモードがエッジオフセットモードか否かを判定する。ステップS1905においてエッジオフセットモードであると判定した場合には(ステップS1905においてYesの場合には)、ステップS1908に進む。
【0163】
ステップS1908において、エッジオフセット処理部1821は、付帯情報に含まれるエッジオフセット処理に関わるSAOパラメータを用いてエッジオフセット処理を実行する。
【0164】
一方、ステップS1905において、エッジオフセットモードでないと判定した場合には(ステップS1905においてNoの場合には)、オフセットモードがオフであると判定して、処理対象のブロックに対する画素適応オフセット処理を終了する。
【0165】
<6.3 第1の実施形態に係るデコーダのループフィルタ部の機能構成>
次に、第1の実施形態に係るデコーダ120のループフィルタ部1704の機能構成について説明する。
【0166】
図20は、第1の実施形態に係るデコーダのループフィルタ部の機能構成の一例を示す図である。なお、
図18を用いて説明した、一般的なデコーダのループフィルタ部と同様の機能については同じ符号を付すこととし、ここでは説明を省略する。
【0167】
図18との相違点は、画素適応オフセット処理部1820が、領域バンドオフセット処理部2001、適応ループフィルタ部2002を有する点である。画素適応オフセット処理部1820は、エントロピ復号部1701より通知された付帯情報に基づいて、エッジオフセット処理部1821、バンドオフセット処理部1822、領域バンドオフセット処理部2001のいずれかの処理部を実行させる。
【0168】
領域バンドオフセット処理部2001は、バンドオフセット処理部1822のように、CTU単位のブロックではなく、CTUのブロックを更に複数の領域(サブブロック)に分割した領域単位(サブブロック単位)でバンドオフセット処理を行う。
【0169】
領域単位で行うために、領域バンドオフセット処理部2001は、ブロック取得部1841、領域分割部2011、SAOパラメータ取得部1842、SAOパラメータ算出部2012、画素値変更部1843を有する。
【0170】
このうち、領域分割部2011は、ブロック取得部1841が読み出した処理対象のブロックを、16個の正方形の領域(サブブロック)に分割する。なお、処理対象のブロックの分割数は、16個より多くても少なくてもよい。また、領域分割部2011は、分割により得られた領域を、順次、画素値変更部1843に出力する。
【0171】
SAOパラメータ取得部1842は、領域バンドオフセット処理に関わるSAOパラメータを取得する。なお、本実施形態において、SAOパラメータ取得部1842は、領域分割部2011により分割される16個の領域のうち、左上隅に位置する領域と、左下隅に位置する領域の2つの領域について、領域バンドオフセット処理に関わるSAOパラメータを取得する。つまり、SAOパラメータ取得部1842は、処理対象のブロックの4つの頂点のうちの左上の頂点を含む領域と、左下の頂点を含む領域の2つの領域(第1サブブロック)について、領域バンドオフセット処理に関わるSAOパラメータを取得する。
【0172】
SAOパラメータ算出部2012は、2つの領域以外(第1サブブロック以外)の残りの領域(第2サブブロック)の領域バンドオフセット処理に関わるSAOパラメータを算出する。具体的には、SAOパラメータ算出部2012は、2つの領域の領域バンドオフセット処理に関わるSAOパラメータを用いて補間処理することで算出する。SAOパラメータ算出部2012は、補間処理を行うにあたり、処理対象のブロック内における2つの領域と残りの領域それぞれとの位置関係を用いる。SAOパラメータ算出部2012は、取得または算出した16個の領域それぞれの、領域バンドオフセット処理に関わるSAOパラメータを、画素値変更部1843に出力する。
【0173】
画素値変更部1843は、処理対象のブロックの各領域の画素値を、SAOパラメータ算出部2012より出力された、領域バンドオフセット処理に関わるSAOパラメータを用いて変更する。また、画素値変更部1843は、16個の領域それぞれの画素値を変更したブロックを、適応ループフィルタ部2002に出力する。
【0174】
適応ループフィルタ部2002は、画素適応オフセット処理部520によりオフセット処理された復号画像の各ブロックをフィルタ処理することで、入力画像との誤差を低減させる。
【0175】
<6.4 第1の実施形態に係るデコーダの画素適応オフセット処理部による画素適応オフセット処理の流れ>
次に、第1の実施形態に係るデコーダ120の画素適応オフセット処理部1820による画素適応オフセット処理の流れについて説明する。
図21は、第1の実施形態に係るデコーダによる画素適応オフセット処理の流れを示すフローチャートである。なお、
図19を用いて説明した、一般的なデコーダによる画素適応オフセット処理のフローチャートと同様の工程については同じ符号を付すこととし、ここでは説明を省略する。
【0176】
図19との相違点は、ステップS2101〜2102である。ステップS2101において、画素適応オフセット処理部1820は、取得した付帯情報に基づいて、オフセットモードが領域バンドオフセットモードか否かを判定する。ステップS2101において、領域バンドオフセットモードであると判定した場合には(ステップS2101においてYesの場合には)、ステップS2102に進む。
【0177】
ステップS2102において、領域バンドオフセット処理部2001は、処理対象のブロックに対して、領域バンドオフセット処理を行う。なお、デコーダ120による領域バンドオフセット処理については、以下に詳説する。
【0178】
<6.5 第1の実施形態に係るデコーダによる領域バンドオフセット処理(ステップS2102)の詳細>
図22は、第1の実施形態に係るデコーダによる領域バンドオフセット処理の流れを示すフローチャートである。
【0179】
ステップS2201において、ブロック取得部1841は、処理対象のブロックを読み出す。
【0180】
ステップS2202において、領域分割部2011は、処理対象のブロックを、領域1〜領域16の16個の領域に分割する。
【0181】
ステップS2203において、SAOパラメータ取得部1842は、付帯情報に含まれる領域バンドオフセット処理に関わるSAOパラメータを取得する。具体的には、SAOパラメータ取得部1842は、処理対象のブロックの領域1、13のバンドポジションと、4つのオフセット絶対値、4つのオフセット符号を取得する。
【0182】
ステップS2204において、SAOパラメータ算出部2012は、取得した領域1、13のバンドポジションに基づいて、領域2〜12、14〜16のバンドポジションを算出する。また、SAOパラメータ算出部2012は、取得した領域1または領域13の4つのオフセット絶対値、4つのオフセット符号を用いて、領域2〜12、14〜16それぞれの、4つのオフセット絶対値、4つのオフセット符号を決定する。
【0183】
ステップS2205において、画素値変更部1843は、領域1〜16それぞれのバンドポジション、4つのオフセット絶対値、4つのオフセット符号を用いて、処理対象のブロックの領域1〜16それぞれの画素値を変更する。
【0184】
<7.まとめ>
以上の説明から明らかなように、第1の実施形態に係るエンコーダ110の画素適応オフセット処理部は、エッジオフセット処理部、バンドオフセット処理部に加えて、領域バンドオフセット処理部を有しており、
・符号化単位のブロックを16個の領域(サブブロック)に分割し、2つの領域(左上隅の領域と左下隅の領域)についてバンドポジションを決定する。
・残りの領域のバンドポジションは、決定した2つの領域のバンドポジションを用いて補間処理を行うことで算出する。
・決定または算出した16個の領域それぞれのバンドポジションを用いて、16個の領域それぞれについてバンドオフセット処理(領域バンドオフセット処理)を実行する。
・領域バンドオフセット処理の処理結果についてのRDコストが最も低いと判定した場合、判定した処理結果の算出に用いられた16個の領域のバンドポジションのうち、2つの領域のバンドポジションについてシグナリングを行う。そして、シグナリングしたバンドポジションを含む領域バンドオフセット処理に関わるSAOパラメータを、付帯情報としてデコーダ120に送信する。
【0185】
また、第1の実施形態に係るデコーダ120の画素適応オフセット処理部は、エッジオフセット処理部、バンドオフセット処理部に加えて、領域バンドオフセット処理部を有しており、
・復号単位のブロックを16個の領域に分割するとともに、付帯情報に含まれる2つの領域のバンドポジションを取得する。
・残りの領域のバンドポジションを、取得した2つの領域のバンドポジションを用いて補間処理を行うことで算出する。
・取得または算出した16個の領域それぞれのバンドポジションを用いて、16個の領域それぞれについてバンドオフセット処理(領域バンドオフセット処理)を実行する。
【0186】
このように、第1の実施形態に係るエンコーダ及びデコーダは、領域単位でバンドオフセット処理(領域バンドオフセット処理)を実行する。これにより、第1の実施形態に係るエンコーダ及びデコーダによれば、一般的なエンコーダ及びデコーダと比較して、CTUのブロックのサイズが大きい場合でも、画素適応オフセット処理部において画質の改善効果を向上させることができる。
【0187】
また、第1の実施形態に係るエンコーダは、16個の領域のバンドポジション全てをシグナリングする代わりに、2つの領域のバンドポジションをシグナリングする。これにより、第1の実施形態に係るエンコーダによれば、領域単位でバンドオフセット処理を行った場合でも、付帯情報の情報量の増大を抑制することができる。
【0188】
[第2の実施形態]
上記第1の実施形態では、符号化単位のブロックを16個の領域に分割した際、SAOパラメータ変更部1012が2つの領域(左上隅の領域と左下隅の領域)についてバンドポジションを決定するものとして説明した。
【0189】
しかしながら、バンドポジションの決定方法はこれに限定されず、3つの領域(左上隅の領域と左下隅の領域と右上隅の領域)についてバンドポジションを決定するように構成してもよい。つまり、処理対象のブロックの4つの頂点のうちの左上の頂点を含む領域と、右上の頂点を含む領域と、左下の頂点を含む領域の3つの領域(第1サブブロック)についてバンドポジションを決定するように構成してもよい。
【0190】
以下、第2の実施形態について、第1の実施形態との相違点である、エンコーダ110における領域バンドオフセット処理(ステップS1101)を中心に説明する(デコーダ120側の相違点については説明を省略する)。
【0191】
<1.第2の実施形態に係るエンコーダにおける領域バンドオフセット処理(ステップS1101)の詳細>
(1)SAOパラメータ算出部の処理内容
第2の実施形態において、SAOパラメータ変更部1012は、3つの領域のバンドポジションを決定する。また、SAOパラメータ算出部1013は、SAOパラメータ変更部1012より出力された3つの領域のバンドポジションを用いて、残りの領域のバンドポジションを算出する。
【0192】
具体的には、SAOパラメータ算出部1013は、3つの領域のバンドポジションを用いて補間処理することで算出する。SAOパラメータ算出部1013は、補間処理を行うにあたり、処理対象のブロック内における3つの領域と、残りの領域それぞれとの位置関係を用いる。
【0193】
図23は、第2の実施形態に係るエンコーダによる領域バンドオフセット処理において、各領域のバンドポジションを算出するための算出方法を示す図である。
図23に示すように、SAOパラメータ変更部1012は、CTU1210のブロックの領域1〜領域16の16個の領域のうち、領域1、領域4、領域13について、バンドポジション"BP
1"、"BP
2"、"BP
3"を決定する。
【0194】
SAOパラメータ算出部1013は、SAOパラメータ変更部1012より出力された、バンドポジション"BP
1"、"BP
2"、"BP
3"に基づいて、残りの領域(領域2、領域3、領域5〜領域12、領域14〜領域16)のバンドポジションを算出する。
【0195】
【数2】
(2)領域バンドオフセット処理の流れ
続いて、第2の実施形態に係るエンコーダ110による領域バンドオフセット処理(ステップS1101)の詳細なフローチャートについて説明する。
図24は、第2の実施形態に係るエンコーダによる領域バンドオフセット処理の流れを示すフローチャートである。なお、
図15を用いて説明した、第1の実施形態に係るエンコーダ110による領域バンドオフセット処理との相違点は、ステップS2401、S2402である。
【0196】
ステップS2401において、SAOパラメータ変更部1012は、領域1、領域4、領域13それぞれについて、領域バンドオフセット処理に関わるSAOパラメータを決定する。具体的には、SAOパラメータ変更部1012は、領域1、領域4、領域13それぞれについて、バンドポジション、4つオフセット絶対値、4つのオフセット符号を決定する。SAOパラメータ変更部1012は、決定した、領域バンドオフセット処理に関わるSAOパラメータをSAOパラメータ算出部1013に出力する。
【0197】
ステップS2402において、SAOパラメータ算出部1013は、領域2、3、5〜12、14〜16それぞれについて、"バンドポジション"を算出する。なお、領域2、3、5〜12、14〜16それぞれについての、4つのオフセット絶対値、4つのオフセット符号は、ここでは、領域1、領域4または領域13のいずれかと同じ値(1つの値)に決定するものとする。
【0198】
<2.第2の実施形態に係るエンコーダによるシグナリング処理(ステップS1104)の詳細>
次に、第2の実施形態に係るエンコーダ110によるシグナリング処理(ステップS1104)の詳細について説明する。
図25は、第2の実施形態に係るエンコーダによるシグナリング処理の流れを示すフローチャートである。
【0199】
なお、ここでは、RDコスト比較により、領域バンドオフセット処理に関わる所定のSAOパラメータを用いた領域バンドオフセット処理の処理結果が、最もRDコストが低い処理結果であると判定されたものとして説明する。
図16を用いて説明した、第1の実施形態に係るエンコーダ110によるシグナリング処理(ステップS1104)との相違点は、ステップS2501〜S2503である。そこで、以下では、ステップS2501〜S2503について説明する。
【0200】
ステップS2501において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータである、領域4の4つのオフセット絶対値をシグナリングする。
【0201】
ステップS2502において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータである、領域4の4つのオフセット符号をシグナリングする。
【0202】
ステップS2503において、選択部1002は、最もRDコストが低い処理結果が算出された際の、領域バンドオフセット処理に関わるSAOパラメータである、領域4のバンドポジションをシグナリングする。
【0203】
<3.まとめ>
以上の説明から明らかなように、第2の実施形態に係るエンコーダ110の画素適応オフセット処理部は、エッジオフセット処理部、バンドオフセット処理部に加えて、領域バンドオフセット処理部を有しており、
・符号化単位のブロックを16個の領域(サブブロック)に分割し、3つの領域(左上隅の領域、右上隅の領域、左下隅の領域)についてバンドポジションを決定する。
・残りの領域のバンドポジションは、決定した3つの領域のバンドポジションを用いて補間処理を行うことで算出する。
・決定または算出した16個の領域それぞれのバンドポジションを用いて、16個の領域それぞれについてバンドオフセット処理(領域バンドオフセット処理)を実行する。
・16個の領域のバンドポジションのうち、3つの領域(左上隅の領域、右上隅の領域、左下隅の領域)のバンドポジションについてシグナリングを行う。そして、シグナリングしたバンドポジションを含む領域バンドオフセット処理に関わるSAOパラメータを、付帯情報としてデコーダ120に送信する。
【0204】
このように、第2の実施形態に係るエンコーダは、16個の領域のバンドポジション全てをシグナリングする代わりに、3つの領域のバンドポジションをシグナリングする。これにより、第2の実施形態に係るエンコーダによれば、領域単位でバンドオフセット処理を行った場合でも(つまり、領域バンドオフセット処理を行った場合でも)、付帯情報の情報量の増大を抑制することができる。
【0205】
なお、上記説明では、デコーダ120の画素適応オフセット処理部については説明を省略したが、3つの領域のバンドポジションを用いて残りの領域のバンドポジションを算出するほかは、上記第1実施形態と同様である。つまり、第2の実施形態に係るエンコーダ及びデコーダの場合も、上記第1の実施形態に係るエンコーダ及びデコーダの場合と同様の効果を享受することができる。また、上記第1及び第2の実施形態では、符号化単位のブロックを16個の領域(サブブロック)に分割し、2つの領域または3つの領域についてバンドポジションを決定するものとして説明した。しかしながら、バンドポジションを決定する領域の数は、3つ以上であってもよい。
【0206】
[第3の実施形態]
上記第1及び第2の実施形態では、領域バンドオフセット処理を実行するにあたり、16個の領域のうちの2つまたは3つの領域のバンドポジションを、処理対象のブロックごとに、別々に決定する場合について説明した。
【0207】
しかしながら、バンドポジションの決定方法はこれに限定されず、例えば、上側または左側に隣接するCTUのブロックに対して領域バンドオフセット処理を行った際に用いたバンドポジションを利用するように構成してもよい。
【0208】
なお、上側または下側に隣接するCTUのブロックに対して領域バンドオフセット処理を行った際に用いたバンドポジションを利用するモードを、"マージモード"と称する。以下、第3の実施形態について、第2の実施形態との相違点を中心説明する。
【0209】
なお、以下、マージモードによる領域バンドオフセット処理の詳細を説明するにあたっては、比較対象として、まず、一般的な(H.265/HEVCにおける)エンコーダのマージモードによるバンドオフセット処理について詳細を説明する。以下、「1」〜「3」までは一般的なエンコーダにおけるマージモードによるバンドオフセット処理について詳細を説明する。その後、「4」〜「6」において第3の実施形態に係るエンコーダ110におけるマージモードによる領域バンドオフセット処理について詳細を説明する。
【0210】
<1.一般的なエンコーダにおけるマージモードによるバンドオフセット処理(ステップS605)の詳細>
(1)一般的なエンコーダにおけるマージモードによるバンドオフセット処理の具体例
図26は、一般的なエンコーダにおけるマージモードによるバンドオフセット処理において、バンドポジションを決定するための決定方法を示す図である。
図26に示すように、SAOパラメータ変更部542が、CTU720のブロックのバンドポジションを決定したとする。また、画素値変更部543が、決定されたCTU720のブロックのバンドポジションを用いてバンドオフセット処理を実行し、処理結果についてのRDコストが最小になったとする。
【0211】
この場合、選択部523は、SAOパラメータ変更部542が決定した、CTU720のブロックのバンドポジションをシグナリングする。
【0212】
続いて、処理対象がCTU2600のブロックに移行したとする。このとき、SAOパラメータ変更部542がCTU2600のブロックのバンドポジションの決定に際して、マージモードを適用したとする。
【0213】
この場合、SAOパラメータ変更部542では、CTU2600のブロックのバンドポジションとして、CTU720のブロックのバンドポジションをコピーして出力する。
【0214】
(2)マージモードを含むバンドオフセット処理の流れ
次に、一般的なエンコーダによるマージモードを含むバンドオフセット処理(ステップS605)の詳細なフローチャートについて説明する。
図27は、一般的なエンコーダによるマージモードを含むバンドオフセット処理の流れを示すフローチャートである。なお、
図8を用いて説明した、一般的なエンコーダによるバンドオフセット処理との相違点は、ステップS2701〜S2703である。
【0215】
ステップS2701において、SAOパラメータ変更部542は、処理対象のブロックについて、マージモードによるバンドオフセット処理を実行するか否かを判定する。ステップS2701において実行すると判定した場合には(ステップS2701においてYesの場合には)、ステップS2702に進む。
【0216】
ステップS2702において、SAOパラメータ変更部542は、上側に隣接するCTUのブロックまたは左側に隣接するCTUのブロックのバンドオフセット処理に関わるSAOパラメータをコピーする。
【0217】
ステップS2703において、SAOパラメータ変更部542は、コピーしたバンドオフセット処理に関わるSAOパラメータにより、処理対象のブロックのバンドオフセット処理に関わるSAOパラメータを決定する。具体的には、SAOパラメータ変更部542は、処理対象のブロックのバンドポジション、4つのオフセット絶対値、4つのオフセット符号を決定する。
【0218】
なお、マージモードによるバンドオフセット処理を実行する場合、
図6の画素適応オフセット処理に示したステップS602〜S604、S606〜S608は実行されず、マージモードによるバンドオフセット処理の処理結果が出力される。
【0219】
<2.一般的なエンコーダによるマージモードを含むシグナリング処理(ステップS610)の詳細>
次に、一般的なエンコーダ110によるマージモードを含むシグナリング処理(ステップS610)の詳細について説明する。なお、ここでは、説明の簡略化のため、マージモードが適用されなかった場合、バンドオフセット処理に関わるSAOパラメータをシグナリングする処理が実行されるものとする。
【0220】
図28は、一般的なエンコーダによるマージモードを含むシグナリング処理の流れを示すフローチャートである。第1の実施形態において
図9を用いて説明したシグナリング処理との相違点は、ステップS2801〜S2802である。
【0221】
ステップS2801において、選択部523は、マージモードが適用されたか否かを判定する。
【0222】
ステップS2801において、マージモードが適用されたと判定した場合には、ステップS2802に進む。ステップS2802において、選択部523は、マージモードを適用したことを示す情報をシグナリングする。
【0223】
<3.一般的なデコーダの画素適応オフセット処理部による、マージモードを含む画素適応オフセット処理の流れ>
次に、一般的な(H.265/HEVCにおける)デコーダの画素適応オフセット処理部1820による、マージモードを含む画素適応オフセット処理について説明する。
図29は、一般的なデコーダによるマージモードを含む画素適応オフセット処理の流れを示すフローチャートである。
図19を用いて説明した、一般的なデコーダによる画素適応オフセット処理との相違点は、ステップS2901及びS2902である。
【0224】
ステップS2901において、画素適応オフセット処理部1820は、取得した付帯情報に基づいて、処理対象のブロックについてマージモードが適用されているか否かを判定する。ステップS2901においてマージモードが適用されていると判定した場合には(ステップS2901においてYesの場合には)、ステップS2902に進む。
【0225】
ステップS2902において、バンドオフセット処理部1822は、バンドオフセット(マージモードの場合)処理を実行する。なお、バンドオフセット(マージモードの場合)処理の詳細は以下に説明する。
【0226】
<4.一般的なデコーダにおける、マージモードによるバンドオフセット処理の流れ>
次に、一般的なデコーダにおける、マージモードによるバンドオフセット処理(ステップS2902)の詳細について説明する。
図30は、一般的なデコーダにおける、マージモードによるバンドオフセット処理の詳細を示すフローチャートである。
【0227】
ステップS2201において、ブロック取得部1841は、処理対象のブロックを読み出す。
【0228】
ステップS3001において、SAOパラメータ取得部1842は、上側または左側に隣接するCTUのブロックのバンドオフセット処理に関わるSAOパラメータを取得する。
【0229】
ステップS3002において、SAOパラメータ取得部1842は、取得したバンドオフセット処理に関わるSAOパラメータを用いて、処理対象のブロックのバンドポジション、4つのオフセット絶対値、4つのオフセット符号を決定する。
【0230】
ステップS3003において、画素値変更部1843は、バンドポジション、4つのオフセット絶対値、4つのオフセット符号を用いて、処理対象のブロックの画素値を変更する。
【0231】
<5.第3の実施形態に係るエンコーダにおけるマージモードによる領域バンドオフセット処理(ステップS1101)の詳細>
(1)マージモードによる領域バンドオフセット処理の処理内容
次に、第3の実施形態に係るエンコーダ110における、マージモードによる領域バンドオフセット処理(ステップS1101)の詳細について説明する。
図31は、第3の実施形態に係るエンコーダにおける、マージモードによる領域バンドオフセット処理において各領域のバンドポジションを算出するための算出方法を示す図である。
【0232】
なお、
図31の例は、2つのCTU(CTU1210とCTU3100)のブロックのうち、CTU1210のブロックについては、マージモードによらずに領域バンドオフセット処理が実行されたものとする。
【0233】
具体的には、
・SAOパラメータ変更部1012によりCTU1210のブロックの領域1、4、13のバンドポジションが決定され、
・SAOパラメータ算出部1013によりCTU1210のブロックの領域2、3、5〜12、14〜16のバンドポジションが算出され、
・これらのバンドポジションを用いて領域バンドオフセット処理された処理結果が、最もRDコストが低い処理結果であると判定され、
・領域1、4、13のバンドポジションがシグナリングされている、
状態にあるとする。
【0234】
このような状態において、CTU3100に対して、マージモードによる領域バンドオフセット処理を実行する場合について説明する。
図31に示すように、SAOパラメータ変更部1012は、CTU3100のブロックの領域1、4、13のバンドポジションを、CTU1210のブロックの領域1、4、13のバンドポジションに基づいて算出する。
【0235】
具体的には、SAOパラメータ変更部1012は、CTU3100のブロックの領域1のバンドポジションを、以下の手順で算出する。
・CTU1210のブロックの領域1のバンドポジションと領域4のバンドポジションとの間の傾斜(領域間(隣接するサブブロック同士)のバンドポジションの差分の平均値)を算出する。
・算出した傾斜に、CTU1210のブロックの領域4のバンドポジションを加算する。
【0236】
また、SAOパラメータ変更部1012は、CTU3100のブロックの領域4のバンドポジションを、以下の手順で算出する。
・CTU1210のブロックの領域1のバンドポジションと領域4のバンドポジションとの差分を算出する。
・算出した差分に、CTU3100のブロックの領域1のバンドポジションを加算する。
【0237】
また、SAOパラメータ変更部1012は、CTU3100の領域13のバンドポジションを、以下の手順で算出する。
・CTU1210のブロックの領域1のバンドポジションと領域13のバンドポジションとの差分を算出する。
・算出した差分に、CTU3100のブロックの領域1のバンドポジションを加算する。
【0238】
SAOパラメータ変更部1012により、CTU3100のブロックの領域1、4、13のバンドポジションが算出されると、SAOパラメータ算出部1013は、CTU3100のブロックの残りの領域2〜3、5〜12、14〜16のバンドポジションを算出する。なお、CTU3100のブロックの残りの領域2〜3、5〜12、14〜16のバンドポジションの算出方法は、CTU1210の領域2〜3、5〜12、14〜16のバンドポジションの算出方法と同様であるため、ここでは説明を省略する。
【0239】
(2)マージモードを含む領域バンドオフセット処理の流れ
続いて、第3の実施形態に係るエンコーダ110による、マージモードを含む領域バンドオフセット処理(ステップS1101)の詳細なフローチャートについて説明する。
図32は、第3の実施形態に係るエンコーダによる、マージモードを含む領域バンドオフセット処理の流れを示すフローチャートである。なお、
図24を用いて説明した、第2の実施形態に係るエンコーダ110による領域バンドオフセット処理との相違点は、ステップS3201〜S3204である。
【0240】
ステップS3201において、SAOパラメータ変更部1012は、処理対象のブロックにおいてマージモードを適用するか否かを判定する。ステップS3201において、マージモードを適用すると判定した場合には、ステップS3202に進む。
【0241】
ステップS3202において、SAOパラメータ変更部1012は、上側に隣接するCTUのブロックまたは左側に隣接するCTUのブロックの、領域バンドオフセット処理に関わるSAOパラメータをコピーする。
【0242】
ステップS3203において、SAOパラメータ変更部1012は、コピーした領域バンドオフセット処理に関わるSAOパラメータに含まれる、領域1、4、13のバンドポジションを取得する。そして、SAOパラメータ変更部1012は、取得した領域1、4、13のバンドポジションに基づいて、処理対象のブロックの領域1、4、13のバンドポジションを算出する。
【0243】
ステップS3204において、SAOパラメータ算出部1013は、算出された領域1、4、13のバンドポジションに基づいて、処理対象のブロックの領域2、3、5〜12、14〜16のバンドポジションを算出する。また、SAOパラメータ算出部1013は、コピーした領域バンドオフセット処理に関わるSAOパラメータに含まれる、領域1(または領域4、領域13)の4つのオフセット絶対値、オフセット符号を取得する。そして、SAOパラメータ算出部1013は、取得した領域1(または領域4、領域13)の4つのオフセット絶対値、オフセット符号を、処理対象のブロックの領域1〜16の4つのオフセット絶対値、オフセット符号に決定する。
【0244】
なお、マージモードのよる領域バンドオフセット処理を実行する場合、
図11の適応オフセット処理に示したステップS602〜S607、S1102〜S608は実行されず、マージモードによる領域バンドオフセット処理の処理結果が出力される。
【0245】
<6.第3の実施形態に係るエンコーダによる、マージモードを含むシグナリング処理(ステップS1104)の詳細>
次に、第3の実施形態に係るエンコーダ110による、マージモードを含むシグナリング処理(ステップS1104)の詳細について説明する。なお、ここでは、説明の簡略化のため、マージモードが適用されなかった場合、領域バンドオフセット処理に関わるSAOパラメータをシグナリングする処理が実行されるものとする。
【0246】
図33は、第3の実施形態に係るエンコーダによる、マージモードを含むシグナリング処理の流れを示すフローチャートである。
【0247】
ステップS3301において、選択部1002は、マージモードが適用されたか否かを判定する。ステップ3301においてマージモードが適用されたと判定した場合には、ステップS3302に進む。
【0248】
ステップS3302において、選択部1002は、マージモードが適用されたことを示す情報をシグナリングする。
【0249】
<7.第3の実施形態に係るデコーダの画素適応オフセット処理部によるマージモードを含む画素適応オフセット処理の流れ>
次に、第3の実施形態に係るデコーダ120の画素適応オフセット処理部1820による、マージモードを含む画素適応オフセット処理の流れについて説明する。
図34は、第3の実施形態に係るデコーダによる、マージモードを含む画素適応オフセット処理の流れを示すフローチャートである。なお、第1の実施形態に係るデコーダによる、マージモードを含む画素適応オフセット処理(
図21)及び一般的なデコーダによる画素適応オフセット処理(
図29)と同様の工程については同じ符号を付すこととし、ここでは説明を省略する。
【0250】
図21及び
図29との相違点は、ステップS3401及びS3402である。ステップS3401において、画素適応オフセット処理部1820は、取得した付帯情報に基づいて、上側または左側に隣接するCTUのブロックのオフセットモードが領域バンドオフセットモードか否かを判定する。ステップS3401において、領域バンドオフセットモードであると判定した場合には(ステップS3401においてYesの場合には)、ステップS3402に進む。
【0251】
ステップS3402において、領域バンドオフセット処理部2001は、処理対象のブロックに対して、マージモードによる領域バンドオフセット処理を行う。なお、マージモードによる領域バンドオフセット処理の詳細は、以下に説明する。
【0252】
<8.第3の実施形態に係るデコーダにおける、マージモードによる領域バンドオフセット処理(ステップS3402)の詳細>
図35は、第3の実施形態に係るデコーダにおける、マージモードによる領域バンドオフセット処理の流れ示すフローチャートである。なお、
図22を用いて説明した、領域バンドオフセット処理との相違点は、ステップS3501〜S3503である。
【0253】
ステップS3501において、SAOパラメータ取得部1842は、上側または左側に隣接するCTUのブロックについての付帯情報に含まれる、領域バンドオフセット処理に関わるSAOパラメータを取得する。具体的には、SAOパラメータ取得部1842は、隣接するCTUのブロックの領域1、4、13のバンドポジションと、4つのオフセット絶対値、4つのオフセット符号を取得する。
【0254】
ステップS3502において、SAOパラメータ算出部2012は、隣接するCTUのブロックの領域1、4、13のバンドポジションに基づいて、処理対象のブロックの領域1、4、13のバンドポジションを算出する。
【0255】
ステップS3503において、SAOパラメータ算出部2012は、処理対象のブロックの領域1、4、13のバンドポジションに基づいて、処理対象のブロックの領域2、3、5〜12、14〜16のバンドポジションを算出する。また、SAOパラメータ算出部2012は、領域1(または領域4、13)の4つのオフセット絶対値、オフセット符号を、処理対象のブロックの領域1〜16の4つのオフセット絶対値、オフセット符号に決定する。
【0256】
これにより、画素値変更部1843では、算出または決定された、領域1〜16それぞれのバンドポジション、4つのオフセット絶対値、4つのオフセット符号を用いて、処理対象のブロックの領域1〜16それぞれの画素値を変更する。
【0257】
<9.まとめ>
以上の説明から明らかなように、第3の実施形態に係るエンコーダ110の画素適応オフセット処理部は、上記第2の実施形態に加えて、マージモードによる領域バンドオフセット処理が適用可能であり、マージモードを適用した場合、
・処理対象のブロックに隣接するブロックの3つの領域(左上隅の領域、右上隅の領域、左下隅の領域)のバンドポジションを取得する。
・処理対象のブロックを16個の領域に分割し、3つの領域(左上隅の領域、右上隅の領域、左下隅の領域)のバンドポジションを、取得した3つの領域のバンドポジションに基づいて算出する。
・残りの領域のバンドポジションは、算出した3つの領域のバンドポジションを用いて補間処理を行うことで算出する。
・算出した16個の領域それぞれのバンドポジションを用いて、16個の領域それぞれについてバンドオフセット処理(領域バンドオフセット処理)を実行する。
・マージモードによる領域バンドオフセット処理が実行されたことを示す情報をシグナリングし、付帯情報としてデコーダ120に送信する。
【0258】
また、第3の実施形態に係るデコーダ120の画素適応オフセット処理部は、上記第2の実施形態に加えて、マージモードによる領域バンドオフセット処理に対応可能であり、
・マージモードによる領域バンドオフセット処理が適用されたと判定した場合に、処理対象のブロックに隣接するブロックの3つの領域(左上隅の領域、右上隅の領域、左下隅の領域)のバンドポジションを取得する。
・処理対象のブロックを16個の領域に分割し、3つの領域(左上隅の領域、右上隅の領域、左下隅の領域)のバンドポジションを、取得した3つの領域のバンドポジションに基づいて算出する。
・残りの領域のバンドポジションを、算出した3つの領域のバンドポジションを用いて補間処理を行うことで算出する。
・算出した16個の領域それぞれのバンドポジションを用いて、16個の領域それぞれについてバンドオフセット処理(領域バンドオフセット処理)を実行する。
【0259】
このように、第3の実施形態に係るエンコーダは、3つの領域のバンドポジションをシグナリングする代わりに、マージモードによる領域バンドオフセット処理が実行されたことを示す情報をシグナリングする。これにより、第3の実施形態に係るエンコーダによれば、領域単位でバンドオフセット処理を行った場合でも、付帯情報の情報量の増大を抑制することができる。
【0260】
[その他の実施形態]
上記第1及び第2の実施形態では、領域バンドオフセット処理に関わるSAOパラメータのうち、4つのオフセット絶対値及び4つのオフセット符号についても、領域1、13(または領域1、4、13)についてのみシグナリングするものとして説明した。しかしながら、シグナリング対象の領域バンドオフセット処理に関わるSAOパラメータはこれに限定されない。
【0261】
例えば、領域1〜16それぞれについて、4つのオフセット絶対値及び4つのオフセット符号として互いに異なる値を用いたとする。この場合、領域1〜領域16すべてについて4つのオフセット絶対値及び4つのオフセット符号をシグナリングするように構成してもよい。
【0262】
この場合、デコーダ120では、シグナリングされた領域1〜領域16それぞれの4つのオフセット絶対値及び4つのオフセット符号を用いて、領域バンドオフセット処理を実行するものとする。
【0263】
あるいは、領域2〜16と、領域1とで1つの値(4つのオフセット絶対値が同じ値及び4つのオフセット符号が同じ符号)を用いたとする。この場合、領域1の4つのオフセット絶対値及び4つのオフセット符号のみをシグナリングするように構成してもよい。
【0264】
この場合、デコーダ120では、シグナリングされた領域1の4つのオフセット絶対値及び4つのオフセット符号を用いて、領域1〜領域16の領域バンドオフセット処理を実行するものとする。
【0265】
また、上記第1及び第2の実施形態では、領域バンドオフセット処理に関わるSAOパラメータとして、4つのオフセット絶対値及び4つのオフセット符号をシグナリングするものとして説明した。しかしながら、シグナリング対象の領域バンドオフセット処理に関わるSAOパラメータは、これに限定されない。例えば、4つのオフセット絶対値及び4つのオフセット符号をシグナリングする代わりに、1つのオフセット絶対値及び1つのオフセット符号のみをシグナリングするように構成してもよい。ただし、この場合、選択部1002は、処理対象のブロックにおいて決定された各領域のバンドポジションのうち、最大のバンドポジションと、最小のバンドポジションとを特定する。そして、選択部1002は、特定した最大のバンドポジションと最小のバンドポジションとの間に含まれる各バンドそれぞれについて、1つのオフセット絶対値及び1つのオフセット符号をシグナリングする。
【0266】
この場合、デコーダ120では、シグナリングされた各バンドのオフセット絶対値及びオフセット符号を参照し、各領域のバンドポジションに対応するバンドのオフセット絶対値及びオフセット符号を抽出する。これにより、デコーダ120では、各領域のオフセット絶対値及びオフセット符号を決定することができる。
【0267】
また、上記第1及び第2の実施形態では、領域バンドオフセット処理部1001をバンドオフセット処理部522とは別個に設ける構成としたが、例えば、領域バンドオフセット処理部1001は、バンドオフセット処理部522に代えて設ける構成としてもよい。
【0268】
この場合、領域バンドオフセット処理部1001は、例えば、処理対象のブロックを16個の領域に分割してから領域ごとにバンドオフセット処理を行うモードと、分割せずにバンドオフセット処理を行うモードとを切り替えて実行するように構成してもよい。つまり、処理対象のブロックを領域に分割する際の分割数を切り替えることで、バンドオフセット処理を行うモードと領域バンドオフセット処理を行うモードとを切り替えるように構成してもよい。
【0269】
なお、画素適応オフセット処理部520において、バンドオフセット処理と領域バンドオフセット処理とを、常に両方実行する必要はなく、いずれか一方のみを実行させる場合があってもよいし、両方実行しない場合があってもよいことはいうまでもない。
【0270】
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。