(57)【特許請求の範囲】
【請求項１】
符号化データを参照し、オフセット値域を設定するオフセット属性設定部と、
設定された上記オフセット値域に制限されたオフセットを復号するオフセット復号部と、
複数の単位領域から構成される入力画像の各画素値に、上記オフセットを加算するフィルタ処理部とを備えることを特徴とする画像フィルタ装置。
【請求項２】
上記符号化データは、少なくとも上記入力画像の画素値のビット深度を含み、
上記オフセット属性設定部は、上記画素値のビット深度に応じて、上記オフセット値域を設定することを特徴とする請求項１に記載の画像フィルタ装置。
【請求項３】
上記オフセット属性設定部は、オフセットビット深度を、上記画素値のビット深度が１０以下の場合、上記画素値のビット深度と等しい値に設定し、上記画素値のビット深度が１１以上の場合、１０に設定し、且つ、いずれの場合も上記オフセット値域の最大値が、２（オフセットビット深度−Ｋ）−１−１となるように設定し、Ｋは整数であることを特徴とする請求項２に記載の画像フィルタ装置。
【請求項４】
上記Ｋの値は、４であることを特徴とする請求項３に記載の画像フィルタ装置。
【請求項５】
符号化データを参照し、オフセット値域を設定するステップと、
設定された上記オフセット値域に制限されたオフセットを復号するステップと、
複数の単位領域から構成される入力画像の各画素値に、上記オフセットを加算するステップとを少なくとも含むことを特徴とするフィルタ方法。
【請求項６】
符号化データを参照し、オフセット値域を設定するオフセット属性設定部と、
設定された上記オフセット値域に制限されたオフセットを復号するオフセット復号部と、
複数の単位領域から構成される入力画像の各画素値に、上記オフセットを加算するフィルタ処理部とを備える動画像復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像のフィルタリングを行う画像フィルタ装置に関する。また、画像フィルタによって参照されるオフセットを復号するオフセット復号装置、および、画像フィルタによってよって参照されるオフセットを符号化するオフセット符号化装置に関する。また、符号化データのデータ構造に関する。
【背景技術】
【０００２】
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置（符号化装置）、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置（復号装置）が用いられている。具体的な動画像符号化方式としては、例えば、Ｈ．２６４／ＭＰＥＧ−４．ＡＶＣに採用されている方式、ＶＣＥＧ（Video Coding Expert Group）における共同開発用コーデックであるＫＴＡソフトウェアに採用されている方式、その後継コーデックであるＴＭｕＣ（Test Model under Consideration）ソフトウェアに採用されている方式、および、ＨＭ（HEVC TestModel）ソフトウェアに採用されている方式などが挙げられる。
【０００３】
このような符号化方式において、動画像を構成する画像（ピクチャ）は、画像を分割することにより得られるスライス、スライスを分割することにより得られる最大符号化単位（LCU:Largest Coding Unit、ツリーブロックとも呼ばれる）、最大符号化単位を分割することにより得られる符号化単位（CU:Coding Unit、符号化ノードとも呼ばれる）、および、符号化単位を分割することより得られるブロックおよびパーティションからなる階層構造により管理され、多くの場合、ブロックを最小単位として符号化される。
【０００４】
また、このような符号化方式においては、通常、入力画像を符号化／復号化することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像と入力画像との差分データが符号化される。また、予測画像の生成方法としては、画面間予測（インター予測）、および、画面内予測（イントラ予測）と呼ばれる方法が知られている。
【０００５】
イントラ予測においては、同一フレーム内の局所復号画像に基づいて、当該フレームにおける予測画像が順次生成される。具体的には、イントラ予測においては、通常、予測単位（例えば、ブロック）毎に、予め定められた予測方向（予測モード）群に含まれる予測方向から何れかの予測方向が選択されると共に、局所復号画像における参照画素の画素値を、選択された予測方向に外挿することによって、予測対象領域上の予測画素値が生成される。また、インター予測においては、フレーム全体が復号された参照フレーム（復号画像）内の参照画像に対し、動きベクトルを用いた動き補償を適用することによって、予測対象フレーム内の予測画像が予測単位（例えば、ブロック）毎に生成される。
【０００６】
非特許文献１および非特許文献２には、復号画像のブロック歪みを低減させるデブロッキングフィルタの後段であって、適応的に決定されたフィルタ係数を用いたフィルタ処理を行う適応的ループフィルタ（「適応フィルタ」とも呼ぶ）の前段に導入された適応的オフセットフィルタ（「適応オフセットフィルタ」とも呼ぶ）が開示されている。この適応オフセットフィルタは、デブロッキングフィルタから出力される画像の各画素値に対して、適応的に設定されたオフセットを加算するというものである。
【０００７】
このような適応オフセットフィルタを備えることによって、ブロック歪みをより効果的に抑制することができる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】「JCTVC-D122」,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 4th Meeting: Daegu, KR, 01/2011
【非特許文献２】「JCTVC-E049」,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 5th Meeting: Geneva, CH, 03/2011
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来の適応オフセットフィルタに用いられるオフセットは、値の範囲が設定されておらず、ビット数が大きいため、オフセットを格納しておくための大きなメモリサイズが必要になるという問題を有していた。
【００１０】
本発明は、上記の問題に鑑みてなされたものであり、メモリサイズの増大を抑制しつつ、ブロック歪みを低減することのできる画像フィルタ装置を実現することにある。
【課題を解決するための手段】
【００１１】
上記の問題を解決するために、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データを参照し、オフセット値域を設定するオフセット属性設定手段と、上記設定されたオフセット値域に制限されたフセットを復号するオフセット復号手段と、上記入力画像の各画素値に上記オフセットを加算するフィルタ手段とを備えていることを特徴としている。
【００１２】
上記のように構成された画像フィルタ装置によれば、上記オフセット属性設定手段により、オフセット値域を設定し、設定されたオフセット値域に応じたビット幅を有するオフセットを上記オフセット復号手段により復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【００１３】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【００１４】
また、本発明に係るオフセット復号装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを復号するオフセット復号装置であって、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えていることを特徴としている。
【００１５】
上記のように構成されたオフセット復号装置によれば、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えているので、各オフセットをそのまま符号化する場合に比べて、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【００１６】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって参照される画素値、または、上記算出手段によって算出された差分値を所定のシフト値だけ右ビットシフトするビットシフト手段と、上記ビットシフト手段によって右ビットシフトされた差分値と０との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【００１７】
上記のように構成された画像フィルタ装置によれば、右ビットシフトされた差分値と０との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【００１８】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって算出された差分値と、予め定められた第１及び第２の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【００１９】
上記のように構成された画像フィルタ装置は、上記算出手段によって算出された差分値と、予め定められた第１及び第２の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【００２０】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像に作用する画像フィルタ装置であって、第１及び第２のオフセットタイプのうち、入力画像における対象画素を含む対象単位領域が属するオフセットタイプを決定する決定手段と、上記対象単位領域の属するオフセットタイプ、及び上記対象画素の画素値に応じて、上記対象画素を、オフセットを加算しないオフセットクラス、及びオフセットを加算する複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記対象単位領域の属するオフセットタイプ及び上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えており、上記分類手段は、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第１及び上記第２のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類する、ことを特徴としている。
【００２１】
上記のように構成された画像フィルタ装置によれば、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第１及び上記第２のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類するので、ブロックノイズを効果的に除去することができる。したがって、上記の構成によれば、符号化効率の向上を図ることができる。
【００２２】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記オフセットタイプに応じて、異なるビット幅を有するオフセットを決定すると共に、該オフセットを符号化するオフセット符号化手段と、上記入力画像の各画素値に上記決定されたオフセットを加算するフィルタ手段とを備えていることを特徴としている。
【００２３】
上記のように構成された画像フィルタ装置によれば、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定し、決定されたオフセットタイプに応じて、異なるビット幅を有するオフセットを決定し、決定されたオフセットを、上記入力画像の各画素に加算する。また、決定されたオフセットを符号化する。
【００２４】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。また、上記の構成によれば、符号化データの符号量が削減されるので、符号化効率が向上する。
【００２５】
また、本発明に係るオフセット符号化装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを符号化するオフセット符号化装置であって、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段と、を備えていることを特徴としている。
【００２６】
上記のように構成されたオフセット符号化装置によれば、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段とを備えているので、符号化データの符号量を削減することができる。
【００２７】
また、本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、各単位領域が属するオフセットタイプを指定するオフセットタイプ指定情報と、該オフセットタイプに応じて異なるビット幅を有するオフセットとを含んでおり、上記画像フィルタは、上記符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号することを特徴としている。
【００２８】
上記のように構成された符号化データは、オフセットタイプに応じて異なるビット幅を有するオフセットを含んでいるので、符号化データの符号量が削減される。また、上記符号化データを復号する画像フィルタは、上記オフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【００２９】
なお、上記オフセットタイプ指定情報は、上記入力画像毎に定められているものであってもよいし、上記単位領域毎に定められているものであってもよい。また、上記入力画像の所定のセット毎に定められているものであってもよいし、上記単位領域の所定のセット毎に定められているものであってもよい。
【発明の効果】
【００３０】
以上のように、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データを参照し、オフセット値域を設定するオフセット属性設定手段と、上記設定されたオフセット値域に制限されたオフセットを復号するオフセット復号手段と、上記入力画像の各画素値に上記オフセットを加算するフィルタ手段とを備えている。
【００３１】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記オフセットタイプに応じて、異なるビット幅を有するオフセットを決定すると共に、該オフセットを符号化するオフセット符号化手段と、上記入力画像の各画素値に上記決定されたオフセットを加算するフィルタ手段とを備えている。
【００３２】
また、本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、各単位領域が属するオフセットタイプを指定するオフセットタイプ指定情報と、該オフセットタイプに応じて異なるビット幅を有するオフセットとを含んでおり、上記画像フィルタは、上記符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号する。
【００３３】
上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、画像フィルタに適切なオフセットフィルタ処理を行わせることができる。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施形態に係る適応オフセットフィルタの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る動画像符号化装置によって生成され、動画像復号装置によって復号される符号化データのデータ構成を示す図であり、（ａ）〜（ｄ）は、それぞれ、ピクチャレイヤ、スライスレイヤ、ツリーブロックレイヤ、およびＣＵレイヤを示しており、（ｅ）はリーフでないＱＡＯＵに関するＱＡＯＵ情報の構成を示しており、（ｆ）はリーフのＱＡＯＵに関するＱＡＯＵ情報の構成を示している。
【図３】本発明の第１の実施形態に係る符号化データのオフセット情報ＯＩに含まれる各シンタックスを示す図である。
【図４】本発明の第１の実施形態に係るオフセット単位の分割の態様を示す図であり、（ａ）はsao_curr_depth＝０、（ｂ）はsao_curr_depth＝１、（ｃ）はsao_curr_depth＝２、（ｄ）はsao_curr_depth＝３、（ｅ）はsao_curr_depth＝４の場合を示している。
【図５】本発明の第１の実施形態に係る動画像復号装置の構成を示すブロック図である。
【図６】本発明の第１の実施形態を説明するための図であって、（ａ）は、対象の処理単位を構成する分割深度３の各ＱＡＯＭＵと各ＱＡＯＭＵに割り付けられたＱＡＯＵインデックスとを示しており、（ｂ）は、ＱＡＯＵインデックス０〜９の各々に関連付けられたオフセットタイプ及び各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示している。
【図７】本発明の第１の実施形態において、対象の処理単位に含まれるＱＡＯＭＵに付されたＱＡＯＭＵ番号の一例を示す図であって、（ａ）は、分割深度が０であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｂ）は、分割深度が１であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｃ）は、分割深度が２であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｄ）は、分割深度が３であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｅ）は、分割深度が４であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示している。
【図８】本発明の第１の実施形態に係る適応オフセットフィルタ処理部による処理の流れを示すフローチャートである。
【図９】本発明の第１の実施形態に係る適応フィルタの備えるオフセット属性設定部によって設定されるオフセットのビット深度及びシフト値の例を、画素のビット深度と共に示す図であって、（ａ）〜（ｄ）は、それぞれ、パターンＳ１〜Ｓ４に対応する例を示しており、（ｅ）は、（ｄ）において、ＳＴＥＰ＝２ととったの場合を示している。
【図１０】本発明の第１の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、（ａ）〜（ｄ）は、それぞれ、sao_type_idx＝１〜４のときに参照される画素を示している。
【図１１】本発明の第１の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、（ａ）は、処理対象画素ｘの画素値ｐｉｃ［ｘ］と画素ａまたはｂの画素値との大小関係を示すグラフ、及びその大小関係に応じた関数Ｓｉｇｎの値を示しており、（ｂ）は、処理対象画素ｘの画素値と、画素ａ及びｂの画素値との大小関係を示すグラフ、及びその大小関係に応じたＥｇｄｅＴｙｐｅの値を示しており、（ｃ）は、ｂ）に示した各グラフと、ｃｌａｓｓ＿ｉｄｘとの対応を示しており、（ｄ）は、ＥｇｄｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘへの変換を表す変換テーブルを示している。
【図１２】本発明の第１の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、（ａ）は、sao_type_idx＝５であるときのクラス分類を概略的に示しており、（ｂ）sao_type_idx＝６であるときのクラス分類を概略的に示しており、（ｃ）は、バンドオフセットが指定された場合のクラス分類の一例を示す表である。
【図１３】本発明の第１の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、バンドオフセットが指定された場合のクラス分類の他の例を示す表である。
【図１４】本発明の第１の実施形態に係る動画像符号化装置の構成を示すブロック図である。
【図１５】本発明の第１の実施形態に係る動画像符号化装置の備える適応オフセットフィルタの構成を示すブロック図である。
【図１６】本発明の第１の実施形態に係る動画像符号化装置の備える適応オフセットフィルタのオフセット算出部による処理の流れを示すフローチャートである。
【図１７】本発明の第１の実施形態に係る動画像符号化装置の備える適応オフセットフィルタのオフセット情報選択部による処理の流れを示すフローチャートである。
【図１８】本発明の第１の実施形態に係る動画像符号化装置の備える適応オフセットフィルタのオフセット情報選択部による処理を説明するための図であって、（ａ）は、分割深度が０及び１である場合の分割の態様を示しており、（ｂ）は、分割深度が１である場合の分割の態様を示しており、（ｃ）は、分割深度が２である場合の分割の態様を示しており、（ｄ）は、オフセット情報選択部によって決定された分割の一例を示している。
【図１９】本発明の第２の実施形態に係る動画像復号装置の備える適応オフセットフィルタの構成を示すブロック図である。
【図２０】本発明の第２の実施形態に係る適応オフセットフィルタを説明するための図であって、（ａ）は、関数merge_tbl[sao_type_idx]の第１の具体例を示しており、（ｂ）は、関数merge_tbl[sao_type_idx]の第２の具体例を示している。
【図２１】本発明の第２の実施形態に係る動画像符号化装置の備える適応オフセットフィルタの構成を示すブロック図である。
【図２２】本発明の第３の実施の形態に係る適応オフセットフィルタの構成を示すブロック図である。
【図２３】上記第３の実施の形態に係る符号化データのオフセット情報ＯＩのシンタクスを示す図である。
【図２４】上記第３の実施の形態を説明するための図であって、（ａ）は、対象の処理単位を構成する分割深度３の各ＱＡＯＭＵと各ＱＡＯＭＵに割り付けられたＱＡＯＵインデックスとを示す図であり、（ｂ）は、ＱＡＯＵインデックス０〜９の各々に関連付けられたオフセットタイプおよび各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示す図である。
【図２５】上記第３の実施の形態に係るオフセット情報復号部が用いる変換テーブルを示す図である。
【図２６】上記第３の実施の形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、（ａ）は、処理対象画素ｘの画素値ｐｉｃ［ｘ］と画素ａまたはｂの画素値との大小関係を示すグラフ、およびその大小関係に応じた関数Ｓｉｇｎの値を示す図であり、（ｂ）は、処理対象画素ｘの画素値と、画素ａおよびｂの画素値との大小関係を示すグラフ、およびその大小関係に応じたＥｇｄｅＴｙｐｅの値を示す図であり、（ｃ）は、（ｂ）に示した各グラフと、ｃｌａｓｓ＿ｉｄｘとの対応を示す図であり、（ｄ）〜（ｆ）は、ＥｇｄｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘへの変換を表す変換テーブルを示す図である。
【図２７】上記第３の実施の形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、（ａ）は、sao_type_idx＝５であるときのクラス分類を概略的に示す図であり、（ｂ）sao_type_idx＝６であるときのクラス分類を概略的に示す図である。
【図２８】上記第３の実施の形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、（ａ）は処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合のクラス分類を概略的に示す図であり、（ｂ）は処理対象のＱＡＯＵの階層の深度が閾値以上の場合のクラス分類を概略的に示す図である。
【図２９】上記第３の実施の形態において、バンドオフセットが指定された場合のクラス分類の一例を示す図であり、（ａ）は、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合のクラス分類の一例を示す図であり、（ｂ）は処理対象のＱＡＯＵの階層の深度が閾値以上の場合のクラス分類の一例を示す図である。
【図３０】上記第３の実施形態に係る動画像符号化装置の備える適応オフセットフィルタの構成を示すブロック図である。
【図３１】上記第３の実施の形態において、ＱＡＯＵインデックスが「ｘ」のＱＡＯＵについて、オフセットタイプそれぞれについての２乗誤差を算出する概要を示す図である。
【図３２】本発明に係る第４の実施の形態において、画素値によってＥＯとＢＯとを切り換える構成を説明するための図であり、（ａ）は、画素値によってＥＯとＢＯとを切り換える構成の概要を説明するための図であり、（ｂ）は、具体的な切り換えの値を説明するための図である、（ｃ）は、オフセット情報格納部６２１に格納されるリストメモリの内容を示す図である。
【図３３】本発明に係る第５の実施の形態において、ＥＯのタイプを水平方向に限定する場合を説明するための図であり、（ａ）は効果の概要を説明するための図であり、（ｂ）は水平方向の画素の位置を説明するための図であり、（ｃ）は（ｂ）とは異なる状態を説明するための図であり、（ｄ）は（ｃ）の効果を説明するための図である。
【図３４】上記第５の実施の形態において、ＥＯのタイプを水平方向に限定する場合を説明するための図であり、（ａ）および（ｂ）は参照する画素が非対称の位置にある場合を示す図であり、（ｃ）は水平エッジの概要を示す図である。
【図３５】本発明に係る第６の実施の形態において、オフセットの精度を向上させる場合についての概要を示す図である。
【図３６】上記第６の実施の形態において、クラス分類を細分化する場合の概要を示す図であり、（ａ）は変換テーブルを示す図であり、（ｂ）〜（ｄ）はクラス分割を説明するための図である。
【図３７】上記第６の実施の形態において、色差に応じてクラス分類を行う場合を説明するための図であり、（ａ）は無彩色の画素値を考慮したクラス分類を説明するための図であり、（ｂ）は無彩色の画素値を挟む２つの値域で非対称なクラス分類を説明するための図であり、（ｃ）はおよび（ｄ）は色彩チャネル（ＣｒまたはＣｂ）毎に異なるクラス分類を説明するための図であり、（ｅ）はＢＯのクラス分類を１つにする場合を説明するための図である。
【図３８】本発明に係る第７の実施の形態において、オフセット情報復号部の構成を示すブロック図である。
【図３９】上記第７の実施の形態において、分類される画素がないクラスがある場合の概要を示す図である。
【図４０】上記第７の実施の形態において、予測候補フラグを用いる場合のシンタクスを示す図である。
【図４１】上記第５の実施の形態に係るオフセット情報復号部の構成を示すブロック図である。
【図４２】（ａ）は、上記第５の実施の形態に係る使用オフセットタイプ選択部の構成を示すブロック図であり、（ｂ）は、別の使用オフセットタイプ選択部の構成を示すブロック図である。
【図４３】上記第５の実施の形態に係るクラス分類部の構成を示すブロック図である。
【図４４】上記第３の実施形態に係るオフセット情報およびＱＡＯＵ情報のシンタクスを示す図であり、（ａ）は、オフセット情報のシンタクスを示す図であり、（ｂ）は、ＱＡＯＵ情報のシンタクスを示す図であり、（ｃ）は、（ａ）および（ｂ）に示すシンタクスを呼び出す適応オフセットフィルタ全体のシンタクスを示す図である。
【図４５】動画像復号装置および動画像符号化装置が、動画像の送受信に利用できることを説明するための図であり、（ａ）は、動画像符号化装置を搭載した送信装置の構成を示したブロック図であり、（ｂ）は、動画像復号装置を搭載した受信装置の構成を示したブロック図である。
【図４６】動画像復号装置および動画像符号化装置が、動画像の記録および再生に利用できることを説明するための図であり、（ａ）は、動画像符号化装置２を搭載した記録装置の構成を示したブロック図であり、（ｂ）は、動画像復号装置を搭載した再生装置の構成を示したブロックである。
【発明を実施するための形態】
【００３５】
〔実施の形態１〕
（符号化データ＃１）
本実施形態に係る動画像符号化装置２及び動画像復号装置１の詳細な説明に先立って、動画像符号化装置２によって生成され、動画像復号装置１によって復号される符号化データ＃１のデータ構造について説明を行う。
【００３６】
図２は、符号化データ＃１のデータ構造を示す図である。符号化データ＃１は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
【００３７】
符号化データ＃１におけるピクチャレイヤ以下の階層の構造を図２に示す。図２の（ａ）〜（ｄ）は、それぞれ、ピクチャＰＩＣＴを規定するピクチャレイヤ、スライスＳを規定するスライスレイヤ、ツリーブロック（Tree block）ＴＢＬＫを規定するツリーブロックレイヤ、ツリーブロックＴＢＬＫに含まれる符号化単位（Coding Unit；ＣＵ）を規定するＣＵレイヤを示す図である。
【００３８】
（ピクチャレイヤ）
ピクチャレイヤでは、処理対象のピクチャＰＩＣＴ（以下、対象ピクチャとも称する）を復号するために動画像復号装置１が参照するデータの集合が規定されている。ピクチャＰＩＣＴは、図２の（ａ）に示すように、ピクチャヘッダＰＨ、及び、スライスＳ1〜ＳNSを含んでいる（ＮＳはピクチャＰＩＣＴに含まれるスライスの総数）。
【００３９】
なお、以下、スライスＳ1〜ＳNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ＃１に含まれるデータであって、添え字を付している他のデータについても同様である。
【００４０】
ピクチャヘッダＰＨには、対象ピクチャの復号方法を決定するために動画像復号装置１が参照する符号化パラメータ群が含まれている。例えば、動画像符号化装置２が符号化の際に用いた可変長符号化のモードを示す符号化モード情報（entropy_coding_mode_flag）は、ピクチャヘッダＰＨに含まれる符号化パラメータの一例である。
【００４１】
entropy_coding_mode_flagが０の場合、当該ピクチャＰＩＣＴは、ＣＡＶＬＣ（Context-based Adaptive Variable Length Coding）によって符号化されている。また、entropy_coding_mode_flagが１である場合、当該ピクチャＰＩＣＴは、ＣＡＢＡＣ（Context-based Adaptive Binary Arithmetic Coding）によって符号化されている。
【００４２】
なお、ピクチャヘッダＰＨは、ピクチャー・パラメーター・セット（ＰＰＳ：Picture Parameter Set）とも称される。
【００４３】
（スライスレイヤ）
スライスレイヤでは、処理対象のスライスＳ（対象スライスとも称する）を復号するために動画像復号装置１が参照するデータの集合が規定されている。スライスＳは、図２の（ｂ）に示すように、スライスヘッダＳＨ、及び、ツリーブロックＴＢＬＫ1〜ＴＢＬＫNC（ＮＣはスライスＳに含まれるツリーブロックの総数）のシーケンスを含んでいる。
【００４４】
スライスヘッダＳＨには、対象スライスの復号方法を決定するために動画像復号装置１が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報（slice_type）は、スライスヘッダＳＨに含まれる符号化パラメータの一例である。
【００４５】
スライスタイプ指定情報により指定可能なスライスタイプとしては、（１）符号化の際にイントラ予測のみを用いるＩスライス、（２）符号化の際に単方向予測、又は、イントラ予測を用いるＰスライス、（３）符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるＢスライスなどが挙げられる。
【００４６】
また、スライスヘッダＳＨには、動画像復号装置１の備える適応フィルタによって参照されるフィルタパラメータＦＰが含まれている。なお、フィルタパラメータＦＰは、ピクチャヘッダＰＨに含まれる構成としてもよい。
【００４７】
（ツリーブロックレイヤ）
ツリーブロックレイヤでは、処理対象のツリーブロックＴＢＬＫ（以下、対象ツリーブロックとも称する）を復号するために動画像復号装置１が参照するデータの集合が規定されている。なお、ツリーブロックのことを最大符号化単位（LCU:Largest Cording Unit）と呼ぶこともある。
【００４８】
ツリーブロックＴＢＬＫは、ツリーブロックヘッダＴＢＬＫＨと、符号化単位情報ＣＵ１〜ＣＵＮＬ（ＮＬはツリーブロックＴＢＬＫに含まれる符号化単位情報の総数）とを含む。ここで、まず、ツリーブロックＴＢＬＫと、符号化単位情報ＣＵとの関係について説明すると次のとおりである。
【００４９】
ツリーブロックＴＢＬＫは、イントラ予測またはインター予測、および、変換の各処理ためのブロックサイズを特定するためのパーティションに分割される。
【００５０】
ツリーブロックＴＢＬＫの上記パーティションは、再帰的な４分木分割により分割されている。この再帰的な４分木分割により得られる木構造のことを以下、符号化ツリー（coding tree）と称する。
【００５１】
以下、符号化ツリーの末端のノードであるリーフ（leaf）に対応するパーティションを、符号化ノード（coding node）として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位（ＣＵ）とも称する。
【００５２】
つまり、符号化単位情報（以下、ＣＵ情報と称する）ＣＵ１〜ＣＵＮＬは、ツリーブロックＴＢＬＫを再帰的に４分木分割して得られる各符号化ノード（符号化単位）に対応する情報である。
【００５３】
また、符号化ツリーのルート（root）は、ツリーブロックＴＢＬＫに対応付けられる。換言すれば、ツリーブロックＴＢＬＫは、複数の符号化ノードを再帰的に含む４分木分割の木構造の最上位ノードに対応付けられる。
【００５４】
なお、各符号化ノードのサイズは、当該符号化ノードが直接に属する符号化ノード（すなわち、当該符号化ノードの１階層上位のノードのパーティション）のサイズの縦横とも半分である。
【００５５】
また、各符号化ノードのとり得るサイズは、符号化データ＃１のシーケンスパラメータセットＳＰＳに含まれる、符号化ノードのサイズ指定情報および最大階層深度（maximum hierarchical depth）に依存する。例えば、ツリーブロックＴＢＬＫのサイズが６４×６４画素であって、最大階層深度が３である場合には、当該ツリーブロックＴＢＬＫ以下の階層における符号化ノードは、３種類のサイズ、すなわち、６４×６４画素、３２×３２画素、および１６×１６画素の何れかをとり得る。
【００５６】
（ツリーブロックヘッダ）
ツリーブロックヘッダＴＢＬＫＨには、対象ツリーブロックの復号方法を決定するために動画像復号装置１が参照する符号化パラメータが含まれる。具体的には、図２の（ｃ）に示すように、対象ツリーブロックの各ＣＵへの分割パターンを指定するツリーブロック分割情報ＳＰ＿ＴＢＬＫ、および、量子化ステップの大きさを指定する量子化パラメータ差分Δｑｐ（qp_delta）が含まれる。
【００５７】
ツリーブロック分割情報ＳＰ＿ＴＢＬＫは、ツリーブロックを分割するための符号化ツリーを表す情報であり、具体的には、対象ツリーブロックに含まれる各ＣＵの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報である。
【００５８】
なお、ツリーブロック分割情報ＳＰ＿ＴＢＬＫは、ＣＵの形状やサイズを明示的に含んでいなくてもよい。例えばツリーブロック分割情報ＳＰ＿ＴＢＬＫは、対象ツリーブロック全体またはツリーブロックの部分領域を四分割するか否かを示すフラグ(split_coding_unit_flag)の集合であってもよい。その場合、ツリーブロックの形状やサイズを併用することで各ＣＵの形状やサイズを特定できる。
【００５９】
また、量子化パラメータ差分Δｑｐは、対象ツリーブロックにおける量子化パラメータｑｐと、当該対象ツリーブロックの直前に符号化されたツリーブロックにおける量子化パラメータｑｐ’との差分ｑｐ−ｑｐ’である。
【００６０】
（ＣＵレイヤ）
ＣＵレイヤでは、処理対象のＣＵ（以下、対象ＣＵとも称する）を復号するために動画像復号装置１が参照するデータの集合が規定されている。
【００６１】
ここで、ＣＵ情報ＣＵに含まれるデータの具体的な内容の説明をする前に、ＣＵに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー（prediction tree；ＰＴ）および変換ツリー（transform tree；ＴＴ）のルートのノードとなる。予測ツリーおよび変換ツリーについて説明すると次のとおりである。
【００６２】
予測ツリーにおいては、符号化ノードが１または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ノードを構成する１または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた１または複数の予測ブロックを含む。
【００６３】
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位（prediction unit；ＰＵ）とも称する。
【００６４】
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との２つがある。
【００６５】
イントラ予測の場合、分割方法は、２Ｎ×２Ｎ（符号化ノードと同一サイズ）と、Ｎ×Ｎとがある。
【００６６】
また、インター予測の場合、分割方法は、２Ｎ×２Ｎ（符号化ノードと同一サイズ）、２Ｎ×Ｎ、Ｎ×２Ｎ、および、Ｎ×Ｎなどがある。
【００６７】
また、変換ツリーにおいては、符号化ノードが１または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ノードを構成する１または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた１または複数の変換ブロックを含む。
【００６８】
変換ツリーにおける分割には、符号化ノードと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な４分木分割によるものがある。
【００６９】
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位（transform unit；ＴＵ）とも称する。
【００７０】
（ＣＵ情報のデータ構造）
続いて、図２の（ｄ）を参照しながらＣＵ情報ＣＵに含まれるデータの具体的な内容について説明する。図２の（ｄ）に示すように、ＣＵ情報ＣＵは、具体的には、スキップフラグＳＫＩＰ、ＰＴ情報ＰＴＩ、および、ＴＴ情報ＴＴＩを含む。
【００７１】
スキップフラグＳＫＩＰは、対象のＰＵについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグＳＫＩＰの値が１の場合、すなわち、対象ＣＵにスキップモードが適用されている場合、そのＣＵ情報ＣＵにおけるＰＴ情報ＰＴＩ、および、ＴＴ情報ＴＴＩは省略される。なお、スキップフラグＳＫＩＰは、Ｉスライスでは省略される。
【００７２】
ＰＴ情報ＰＴＩは、ＣＵに含まれるＰＴに関する情報である。言い換えれば、ＰＴ情報ＰＴＩは、ＰＴに含まれる１または複数のＰＵそれぞれに関する情報の集合であり、動画像復号装置１により予測画像を生成する際に参照される。ＰＴ情報ＰＴＩは、図２の（ｄ）に示すように、予測タイプ情報ＰＴｙｐｅ、および、予測情報ＰＩｎｆｏを含んでいる。
【００７３】
予測タイプ情報ＰＴｙｐｅは、対象ＰＵについての予測画像生成方法として、イントラ予測を用いるのか、または、インター予測を用いるのかを指定する情報である。
【００７４】
予測情報ＰＩｎｆｏは、予測タイプ情報ＰＴｙｐｅが何れの予測方法を指定するのかに応じて、イントラ予測情報、または、インター予測情報より構成される。以下では、イントラ予測が適用されるＰＵをイントラＰＵとも呼称し、インター予測が適用されるＰＵをインターＰＵとも呼称する。
【００７５】
また、予測情報ＰＩｎｆｏは、対象ＰＵの形状、サイズ、および、位置を指定する情報が含まれる。上述のとおり予測画像の生成は、ＰＵを単位として行われる。予測情報ＰＩｎｆｏの詳細については後述する。
【００７６】
ＴＴ情報ＴＴＩは、ＣＵに含まれるＴＴに関する情報である。言い換えれば、ＴＴ情報ＴＴＩは、ＴＴに含まれる１または複数のＴＵそれぞれに関する情報の集合であり、動画像復号装置１により残差データを復号する際に参照される。なお、以下、ＴＵのことをブロックと称することもある。
【００７７】
ＴＴ情報ＴＴＩは、図２の（ｄ）に示すように、対象ＣＵの各変換ブロックへの分割パターンを指定するＴＴ分割情報ＳＰ＿ＴＴ、および、量子化予測残差ＱＤ1〜ＱＤNT（ＮＴは、対象ＣＵに含まれるブロックの総数）を含んでいる。
【００７８】
ＴＴ分割情報ＳＰ＿ＴＴは、具体的には、対象ＣＵに含まれる各ＴＵの形状、サイズ、および、対象ＣＵ内での位置を決定するための情報である。例えば、ＴＴ分割情報ＳＰ＿ＴＴは、対象となるノードの分割を行うのか否かを示す情報（split_transform_unit_flag）と、その分割の深度を示す情報（trafoDepth）とから実現することができる。
【００７９】
また、例えば、ＣＵのサイズが、６４×６４の場合、分割により得られる各ＴＵは、３２×３２画素から２×２画素までのサイズをとり得る。
【００８０】
各量子化予測残差ＱＤは、動画像符号化装置２が以下の処理１〜３を、処理対象のブロックである対象ブロックに施すことによって生成した符号化データである。
【００８１】
処理１：符号化対象画像から予測画像を減算した予測残差をＤＣＴ変換（Discrete Cosine Transform）する；
処理２：処理１にて得られた変換係数を量子化する；
処理３：処理２にて量子化された変換係数を可変長符号化する；
なお、上述した量子化パラメータｑｐは、動画像符号化装置２が変換係数を量子化する際に用いた量子化ステップＱＰの大きさを表す（ＱＰ＝２qp/6）。
【００８２】
（予測情報ＰＩｎｆｏ）
上述のとおり、予測情報ＰＩｎｆｏには、インター予測情報およびイントラ予測情報の２種類がある。
【００８３】
インター予測情報には、動画像復号装置１が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、インター予測情報には、対象ＣＵの各インターＰＵへの分割パターンを指定するインターＰＵ分割情報、および、各インターＰＵについてのインター予測パラメータが含まれる。
【００８４】
インター予測パラメータには、参照画像インデックスと、推定動きベクトルインデックスと、動きベクトル残差とが含まれる。
【００８５】
一方、イントラ予測情報には、動画像復号装置１が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、イントラ予測情報には、対象ＣＵの各イントラＰＵへの分割パターンを指定するイントラＰＵ分割情報、および、各イントラＰＵについてのイントラ予測パラメータが含まれる。イントラ予測パラメータは、各イントラＰＵについてのイントラ予測方法（予測モード）を指定するためのパラメータである。
【００８６】
（オフセット単位）
また、本実施の形態において、各ピクチャまたは各スライスは、４分木構造によって複数のオフセット単位（ＱＡＯＵ：Quad Adaptive Offset Unitとも呼ぶ）に再帰的に分割される。ここで、ＱＡＯＵとは、本実施の形態に係る適応オフセットフィルタによるオフセットフィルタ処理の処理単位である。
【００８７】
図２（ｅ）〜（ｆ）に示すように、各ＱＡＯＵに関する情報であるＱＡＯＵ情報は、自身が更に分割されるのか否かを示すsao_split_flagを含んでいる。sao_split_flagは、より具体的には、後述する引数（sao_curr_depth、ys、xs）によって指定されるものであり、sao_split_flag[sao_curr_depth][ys][xs]とも表記する。
【００８８】
あるＱＡＯＵに含まれるsao_split_flagが、該ＱＡＯＵがさらに分割されるものであることを示している場合（すなわち、当該ＱＡＯＵがリーフではない場合）には、図２（ｅ）に示すように、該ＱＡＯＵに関するＱＡＯＵ情報には、該ＱＡＯＵに含まれる複数のＱＡＯＵの各々に関するＱＡＯＵ情報が含まれる。
【００８９】
一方で、あるＱＡＯＵに含まれるsao_split_flagが、該ＱＡＯＵがそれ以上分割されないものであることを示している場合（すなわち、当該ＱＡＯＵがリーフである場合）には、図２（ｆ）に示すように、該ＱＡＯＵに関するＱＡＯＵ情報には、該ＱＡＯＵに関するオフセット情報ＯＩが含まれる。また、オフセット情報ＯＩには、図２（ｆ）に示すように、オフセットタイプを指定するオフセットタイプ指定情報ＯＴＩ、及び、オフセットタイプに応じて定まるオフセット群が含まれている。さらに、図２（ｆ）に示すように、オフセット群には、複数のオフセットが含まれている。
【００９０】
なお、符号化データ中のオフセットは量子化された値である。また、符号化データ中のオフセットは、何らかの予測、例えば線形予測を用いることによって得られる予測残差であっても良い。また、一定の単位領域毎に後述する画素ビット深度が異なって指定される場合、画素ビット深度に応じてオフセットのビット深度、オフセット値域、及びシフト値を変更する本実施の形態においては、オフセットタイプ指定情報ＯＴＩに処理対象領域の画素ビット深度を含めることも可能である。
【００９１】
オフセット情報ＯＩについて、参照する図面を代えて説明すれば以下の通りである。
【００９２】
図３は、オフセット情報ＯＩ（図３においてsao_offset_param()と表記）に含まれる各シンタックスを示す図である。
【００９３】
図３に示すように、オフセット情報ＯＩには、シンタックスsao_type_idx[sao_curr_depth][ys][xs]が含まれている。また、sao_type_idx[sao_curr_depth][ys][xs]が０でない場合、オフセット情報ＯＩには、sao_offset[sao_curr_depth][ys][xs][i]が含まれている。
【００９４】
（sao_curr_depth、ys、xs）
sao_type_idx及びsao_offsetの引数であるsao_curr_depthは、ＱＡＯＵの分割深度を表すインデックスであり、ys及びxsは、それぞれ、ＱＡＯＵ（または後述するＱＡＯＭＵ）のｙ方向の位置及びｘ方向の位置を表すためのインデックスである。
【００９５】
図４（ａ）〜（ｅ）は、sao_curr_depthの値に応じたＱＡＯＵの分割の態様を示す図であり、（ａ）はsao_curr_depth＝０、（ｂ）はsao_curr_depth＝１、（ｃ）はsao_curr_depth＝２、（ｄ）はsao_curr_depth＝３、（ｅ）はsao_curr_depth＝４の場合を示している。図４（ａ）〜（ｅ）に示すように、各ＱＡＯＵは、sao_curr_depth、及び（xs、ys）によって指定される。
【００９６】
また、図４（ａ）に示すように、sao_curr_depth＝０であるとき、xs及びysはそれぞれ０であり、図４（ｂ）に示すように、sao_curr_depth＝１であるとき、xs及びysはそれぞれ０及び１の何れかの値をとり得る。また、図４（ｃ）に示すように、sao_curr_depth＝２であるとき、xs及びysはそれぞれ０、１、２及び３の何れかの値をとり得る。一般に、与えられたsao_curr_depthに対して、xs及びysは、それぞれ０〜２sao_curr_depth−１の値をとり得る。
【００９７】
（sao_type_idx）
sao_type_idx[sao_curr_depth][ys][xs]は、上述のオフセットタイプ指定情報ＯＴＩに対応するものであり、各ＱＡＯＵについてのオフセットタイプを指定するためのシンタックスである。以下では、sao_type_idxのことを単にオフセットタイプと呼称することもある。
【００９８】
本実施の形態において、sao_type_idx[sao_curr_depth][ys][xs]は、０から６までの整数値をとる。sao_type_idx[sao_curr_depth][ys][xs]＝０は、対象ＱＡＯＵにおけるオフセットフィルタ前画像（例えば、後述するデブロック済復号画像Ｐ＿ＤＢ）に対して、オフセットフィルタ処理を行わないことを示しており、sao_type_idx[sao_curr_depth][ys][xs]＝１〜４は、対象ＱＡＯＵにおけるオフセットフィルタ前画像に対して、エッジオフセット処理を行うことを示しており、sao_type_idx[sao_curr_depth][ys][xs]＝５〜６は、対象ＱＡＯＵにおけるオフセットフィルタ前画像に対して、バンドオフセット処理を行うことを示している。エッジオフセット処理及びバンドオフセット処理の具体的内容については後述する。
【００９９】
（sao_offset）
sao_offset[sao_curr_depth][ys][xs][i]は、本実施の形態に係る適応オフセットフィルタによるオフセットフィルタ処理において、対象ＱＡＯＵに含まれる各画素に加算されるオフセットの具体的な値を表すシンタックスである。本実施の形態では、sao_offsetのことを単にオフセットと呼称することもある。
【０１００】
sao_offset[sao_curr_depth][ys][xs][i]は、引数sao_curr_depth、ys及びxsに加えて、インデックスiによって指定される。ここで、インデックスiは、クラスを指定するためのインデックスであり、class_idxとも表記する。インデックスiは、sao_type_idx[sao_curr_depth][ys][xs]の値が１〜４の何れかである場合（すなわち、エッジオフセットの場合）、ｉ＝０〜４の何れかの整数値をとる。また、sao_type_idx[sao_curr_depth][ys][xs]の値が５〜６の何れかである場合（すなわち、バンドオフセットの場合）、ｉ＝０〜１６の何れかの整数値をとる。なお、後述するように、何れの場合もｉ＝０は、オフセットを加算しないことを表している。
【０１０１】
後述するように、本実施の形態に係る適応オフセットフィルタは、対象ＱＡＯＵに含まれる対象画素を上記複数のクラスの何れかに分類し、該対象画素に対して、該対象画素が分類されたクラスについてのオフセットOffsetを加算する。
【０１０２】
また、図３に示したDescriptor（記述子）ue(v)は、この記述子に関連付けられたシンタックスは符号なしの数値であり、値が可変長符号化されることを示しており、se(v)は、この記述子に関連付けられたシンタックスは符号付きの数値であり、符号と絶対値に分けて可変長符号化されることを意味している。
【０１０３】
（動画像復号装置１）
以下では、本実施の形態に係る動画像復号装置１について図１及び図５〜図１３を参照して説明する。動画像復号装置１は、その一部に、Ｈ．２６４／ＭＰＥＧ−４．ＡＶＣに採用されている方式、ＶＣＥＧ（Video Coding Expert Group）における共同開発用コーデックであるＫＴＡソフトウェアに採用されている方式、その後継コーデックであるＴＭｕＣ（Test Model under Consideration）ソフトウェアに採用されている方式、及び、ＨＭ（HEVC TestModel）ソフトウェアに採用されている技術を含んでいる。
【０１０４】
図５は、動画像復号装置１の構成を示すブロック図である。図５に示すように、動画像復号装置１は、可変長符号復号部１３、動きベクトル復元部１４、バッファメモリ１５、インター予測画像生成部１６、イントラ予測画像生成部１７、予測方式決定部１８、逆量子化・逆変換部１９、加算器２０、デブロッキングフィルタ４１、適応フィルタ５０、及び適応オフセットフィルタ６０を備えている。動画像復号装置１は、符号化データ＃１を復号することによって動画像＃４を生成するための装置である。
【０１０５】
可変長符号復号部１３は、各パーティションに関する予測パラメータＰＰを、符号化データ＃１から復号する。すなわち、インター予測パーティションに関しては、参照画像インデックスＲＩ、推定動きベクトルインデックスＰＭＶＩ、及び、動きベクトル残差ＭＶＤを符号化データ＃１から復号し、これらを動きベクトル復元部１４に供給する。一方、イントラ予測パーティションに関しては、（１）パーティションのサイズを指定するサイズ指定情報、および、（２）予測インデックスを指定する予測インデックス指定情報を符号化データ＃１から復号し、これをイントラ予測画像生成部１７に供給する。また、可変長符号復号部１３は、ＣＵ情報を符号化データから復号し、これを予測方式決定部１８に供給する（図示省略）。更に、可変長符号復号部１３は、各ブロックに関する量子化予測残差ＱＤ、及び、そのブロックを含むツリーブロックに関する量子化パラメータ差分Δｑｐを符号化データ＃１から復号し、これらを逆量子化・逆変換部１９に供給する。また、可変長符号復号部１３は、符号化データ＃１からＱＡＯＵ情報を抽出し、抽出したＱＡＯＵ情報を適応オフセットフィルタ６０に供給する。
【０１０６】
動きベクトル復元部１４は、各インター予測パーティションに関する動きベクトルｍｖを、そのパーティションに関する動きベクトル残差ＭＶＤと、他のパーティションに関する復元済みの動きベクトルｍｖ’とから復元する。具体的には、（１）推定動きベクトルインデックスＰＭＶＩにより指定される推定方法に従って、復元済みの動きベクトルｍｖ’から推定動きベクトルｐｍｖを導出し、（２）導出した推定動きベクトルｐｍｖと動きベクトル残差ＭＶＤとを加算することによって動きベクトルｍｖを得る。なお、他のパーティションに関する復元済みの動きベクトルｍｖ’は、バッファメモリ１５から読み出すことができる。動きベクトル復元部１４は、復元した動きベクトルｍｖを、対応する参照画像インデックスＲＩと共に、インター予測画像生成部１６に供給する。なお、双方向予測（重み付き予測）を行うインター予測パーティションについては、復元した２つの動きベクトルｍｖ１及びｍｖ２を、対応する参照画像インデックスＲＩ１及びＲＩ２と共に、インター予測画像生成部１６に供給する。
【０１０７】
インター予測画像生成部１６は、各インター予測パーティションに関する動き補償画像ｍｃを生成する。具体的には、動きベクトル復元部１４から供給された動きベクトルｍｖを用いて、同じく動きベクトル復元部１４から供給された参照画像インデックスＲＩによって指定されるフィルタ済復号画像Ｐ＿ＦＬ’から動き補償画像ｍｃを生成する。ここで、フィルタ済復号画像Ｐ＿ＦＬ’は、既に復号が完了した復号画像Ｐに対して、デブロッキングフィルタ４１によるデブロック処理、適応オフセットフィルタ６０によるオフセットフィルタ処理、及び適応フィルタ５０による適応的フィルタ処理を施すことによって得られる画像であり、インター予測画像生成部１６は、フィルタ済復号画像Ｐ＿ＦＬ’を構成する各画素の画素値をバッファメモリ１５から読み出すことができる。インター予測画像生成部１６によって生成された動き補償画像ｍｃは、インター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒとして予測方式決定部１８に供給される。なお、双方向予測（重み付き予測）を行うインター予測パーティションについては、（１）動きベクトルｍｖ１を用いて、参照画像インデックスＲＩ１によって指定されたフィルタ済復号画像Ｐ＿ＦＬ１’から動き補償画像ｍｃ１を生成し、（２）動きベクトルｍｖ２を用いて、参照画像インデックスＲＩ２によって指定されたフィルタ済復号画像Ｐ＿ＦＬ２’とから動き補償画像ｍｃ２を生成し、（３）動き補償画像ｍｃ１と動き補償画像ｍｃ２との加重平均にオフセット値を加えることによってインター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒを生成する。
【０１０８】
イントラ予測画像生成部１７は、各イントラ予測パーティションに関する予測画像Ｐｒｅｄ＿Ｉｎｔｒａを生成する。具体的には、まず、符号化データ＃１から復号された予測モードを参照し、該予測モードを対象パーティションに対して、例えば、ラスタスキャン順に割り付ける。続いて、当該予測モードの示す予測方法に従って、復号画像Ｐから予測画像Ｐｒｅｄ＿Ｉｎｔｒａを生成する。イントラ予測画像生成部１７によって生成されたイントラ予測画像Ｐｒｅｄ＿Ｉｎｔｒａは、予測方式決定部１８に供給される。
【０１０９】
また、イントラ予測画像生成部１７は、対象パーティションのサイズ、および、対象パーティションに割り付けられた予測モードを示す情報であるイントラ符号化モード情報ＩＥＭを適応フィルタ５０に供給する。
【０１１０】
予測方式決定部１８は、ＣＵ情報に基づいて、各パーティションがインター予測を行うべきインター予測パーティションであるのか、イントラ予測を行うべきイントラ予測パーティションであるのかを決定する。そして、前者の場合には、インター予測画像生成部１６にて生成されたインター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒを予測画像Ｐｒｅｄとして加算器２０に供給し、後者の場合には、イントラ予測画像生成部１７にて生成されたイントラ予測画像Ｐｒｅｄ＿Ｉｎｔｒａを予測画像Ｐｒｅｄとして加算器２０に供給する。
【０１１１】
逆量子化・逆変換部１９は、（１）量子化予測残差ＱＤを逆量子化し、（２）逆量子化によって得られたＤＣＴ係数を逆ＤＣＴ（Discrete Cosine Transform）変換し、（３）逆ＤＣＴ変換によって得られた予測残差Ｄを加算器２０に供給する。なお、量子化予測残差ＱＤを逆量子化する際に、逆量子化・逆変換部１９は、可変長符号復号部１３から供給された量子化パラメータ差分Δｑｐから量子化ステップＱＰを導出する。量子化パラメータｑｐは、直前に逆量子化／逆ＤＣＴ変換したツリーブロックに関する量子化パラメータｑｐ’に量子化パラメータ差分Δｑｐを加算することによって導出でき、量子化ステップＱＰは、量子化ステップｑｐからＱＰ＝２ｐｑ／６によって導出できる。また、逆量子化・逆変換部１９による予測残差Ｄの生成は、ブロック（変換単位）を単位として行われる。
【０１１２】
加算器２０は、予測方式決定部１８から供給された予測画像Ｐｒｅｄと、逆量子化・逆変換部１９から供給された予測残差Ｄとを加算することによって復号画像Ｐを生成する。
【０１１３】
デブロッキングフィルタ４１は、復号画像Ｐにおけるブロック境界、またはＣＵ境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、復号画像Ｐにおける当該ブロック境界、または当該ＣＵ境界に対してデブロッキング処理を施すことによって、当該ブロック境界、または当該ＣＵ境界付近の画像の平滑化を行う。デブロッキングフィルタ４１によりデブロッキング処理が施された画像は、デブロック済復号画像Ｐ＿ＤＢとして、適応オフセットフィルタ６０に出力される。
【０１１４】
適応オフセットフィルタ６０は、デブロッキングフィルタ４１から供給されるデブロック済復号画像Ｐ＿ＤＢに対して、符号化データ＃１から復号されたオフセットを用いたオフセットフィルタ処理を、ＱＡＯＵを処理単位として施すことによってオフセットフィルタ済復号画像Ｐ＿ＯＦを生成する。生成されたオフセットフィルタ済復号画像Ｐ＿ＯＦは、適応フィルタ５０に供給される。適応オフセットフィルタ６０の具体的な構成については、後述するため、ここでは説明を省略する。
【０１１５】
適応フィルタ５０は、適応オフセットフィルタ６０から供給されるオフセットフィルタ済復号画像Ｐ＿ＯＦに対して、符号化データ＃１から復号されたフィルタパラメータＦＰを用いたフィルタ処理を施すことによって、フィルタ済復号画像Ｐ＿ＦＬを生成する。適応フィルタ５０によりフィルタ処理が施された画像は、フィルタ済復号画像Ｐ＿ＦＬとして外部に出力されると共に、可変長符号復号部１３によって符号化データから復号されたＰＯＣ指定情報と関連付けてバッファメモリ１５に格納される。
【０１１６】
（適応オフセットフィルタ６０）
図１は、適応オフセットフィルタ６０の構成を示すブロック図である。図１に示すように、適応オフセットフィルタ６０は、適応オフセットフィルタ情報復号部６１及び適応オフセットフィルタ処理部６２を備えている。
【０１１７】
また、図１に示すように、適応オフセットフィルタ情報復号部６１は、オフセット情報復号部６１１、ＱＡＯＵ構造復号部６１２、及びオフセット属性設定部６１３を備えている。
【０１１８】
オフセット情報復号部６１１は、符号化データ＃１に含まれているＱＡＯＵ情報を参照し、ＱＡＯＵ情報に含まれているオフセット情報ＯＩを復号する。また、オフセット情報ＯＩを復号することによって得られたsao_type_idx[sao_curr_depth][ys][xs]及びsao_offset[sao_curr_depth][ys][xs][i]の各値を、それぞれの引数（sao_curr_depth、ys、xs）及び（sao_curr_depth、ys、xs、i）に関連付けて、オフセット情報格納部６２１に供給する。
【０１１９】
ＱＡＯＵ構造復号部６１２は、ＱＡＯＵ情報に含まれているsao_split_flag[sao_curr_depth][ys][xs]を復号することによって、ＱＡＯＵの分割構造を決定し、決定されたＱＡＯＵの分割構造を表すＱＡＯＵ構造情報を、オフセット情報格納部６２１に供給する。
【０１２０】
オフセット属性設定部６１３は、オフセットのビット深度（ＳＡＯ＿ＤＥＰＴＨとも呼称する）とオフセットの値域とを決定する。ここでは、オフセットのビット深度は、オフセット属性設定部６１３に入力される図示されない画素ビット深度（ＰＩＣ＿ＤＥＰＴＨとも呼称する）から決定する。画素ビット深度とは、適応オフセットフィルタ６０の入力画像を構成する画素値の値域をビット幅で示すものであり、画素ビット深度がＮビットのとき、画素値は０から2N-1の範囲を取る。例えば、画素ビット深度が８ビットのとき、画素値は０から２５５の範囲を取りうる。適応オフセットフィルタ６０の入力画像は、動画像復号装置１の復号画像、もしくは、動画像符号化装置２の局所復号画像である場合には、復号画像／局所復号画像のビット深度が用いられる。適応オフセットフィルタ６０の入力画像の精度及び出力画像の精度は画素ビット深度である。
【０１２１】
画素ビット深度は、符号化データ＃１中のシンタックスを用いて定められる値を復号して用いることができる。例えば、H.264/AVCの場合には、シーケンスパラメータセット中のbit_depth_luma_minus8を用いて定めることができる。さらに、別の形態として、画素ビット深度は処理対象の単位領域毎に定まってもよく、その場合は該単位領域のヘッダから画素ビット深度を復号する。単位領域の画素ビット深度は、適応オフセットフィルタ６０の入力画像を復号するための符号化データ＃１中のパラメータ情報やヘッダに含まれていても良いし、ＱＡＯＵ情報の一部として含まれていても良い。入力画像を復号するためのパラメータ情報およびヘッダとしては、ピクチャパラメータヘッダ、スライスヘッダ、ＬＣＵ、ＣＵなどに画素ビット深度を含めておいても良い。また、ＱＡＯＵ情報の一部としては、リーフＱＡＯＵに画素ビット深度を含めておいても良いし、所定の階層（例えば最上位階層のＱＡＯＵ、や、第１階層のＱＡＯＵ）のＱＡＯＵ情報に画素ビット深度を含めておいても構わない。また、画素ビット深度の符号化としては、８ビットからの差分値として符号化することが好適である。ＱＡＯＵ情報では、画素ビット深度の他、シフト値を直接符号化することも適当である。また、シフト値は８ビットを超える場合にのみ符号化することが適当である。ここでシフト値とは、逆量子化を行うために必要なビットシフト量を示す。逆量子化に用いるパラメータとしてはシフト値の他、ステップ値でも良い。この場合、オフセットの逆量子化はステップ値との積、オフセットの量子化はステップ値による除算で実行される。
【０１２２】
また、オフセットのビット深度とは、符号化データ＃１中に符号化されるオフセットの精度を示す値である。符号化データ＃１に含まれるオフセットは量子化されており、この量子化されたオフセットは復号後、後述のオフセット導出部６２５によって、画素ビット深度に合わせたビット深度に逆量子化される。また、後述のオフセット加算部６２６にて、逆量子化されたオフセットの加算が行われる。オフセットのビット深度は、画素ビット深度以下の値を持つ。オフセットのビット深度が画素ビット深度よりもｋビットだけ小さい場合には、符号化されるオフセットの値は、2kをオフセットの量子化ステップとして量子化された値を意味する。復号したビット深度（オフセットのビット深度）から画素ビット深度への変換は、後述するオフセット導出部６２５で行われる。
【０１２３】
オフセット属性設定部６１３は、さらに、決定したオフセットのビット深度によりオフセット値域を設定する。さらに、オフセットの画素ビット深度とオフセット値域とからシフト値を設定する。設定されたオフセット値域およびシフト値はオフセット情報格納部６２１およびオフセット情報復号部６１１に供給される。オフセットのビット深度の決定とシフト値の設定は後述するパターンＳ１〜Ｓ６のいずれかの形態で行われる。オフセット値域の設定は後述するパターンＣ１、パターンＣ２のいずれかの形態で行われる。オフセット値域及びシフト値などオフセットに共通する属性をオフセット属性と呼ぶ。一方で、図１に示すように、適応オフセットフィルタ処理部６２は、オフセット情報格納部６２１、ＱＡＯＵ制御部６２２、オフセットタイプ導出部６２３．クラス分類部６２４、オフセット導出部６２５、及びオフセット加算部６２６を備えている。
【０１２４】
オフセット情報格納部６２１は、ＱＡＯＵ構造情報、sao_type_idx[sao_curr_depth][ys][xs]、及びsao_offset[sao_curr_depth][ys][xs][i]に基づいて、各ＱＡＯＵについて指定されたオフセットタイプ及び該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値を管理及び格納するための構成であり、マップメモリ及びリストメモリを備えている。
【０１２５】
マップメモリには、分割深度に応じて定まる各オフセット最小単位（QAOMU:Quad Adaptive Offset Minimum Unitとも呼称する）に割り付けられた後述するＱＡＯＵインデックスが格納されている。図６（ａ）では、マップメモリについて説明をする。図６（ａ）は、マップメモリに格納されるＱＡＯＵインデックスの一例を説明するためのものであって、対象の処理単位（例えばＬＣＵ）を構成する分割深度３の各ＱＡＯＭＵと各ＱＡＯＭＵに割り付けられたＱＡＯＵインデックスとを示す図である。図６（ａ）では、簡易的にインデックス０〜９をＱＡＯＵの分割深度を考慮せずにＱＡＯＵを指定している。図６（ａ）に示す例においては、ＱＡＯＵインデックス＝Ｉによって指定されるＱＡＯＵをＱＡＯＵＩと表記している。また、図６（ａ）における細線はＱＡＯＭＵの境界を示しており、太線は、ＱＡＯＵの境界を示している。
【０１２６】
図６（ａ）に示すように、ＱＡＯＵ０は、４つのＱＡＯＭＵから構成されており、これら４つのＱＡＯＭＵには、ＱＡＯＵインデックスとして０が割り付けられている。一方で、ＱＡＯＵ３は、１つのＱＡＯＭＵから構成されており、このＱＡＯＭＵには、ＱＡＯＵインデックスとして３が割り付けられている。このように、マップメモリには、各ＱＡＯＭＵに割り付けられたＱＡＯＵインデックスが格納されている。
【０１２７】
一方で、リストメモリには、各ＱＡＯＵインデックス、該ＱＡＯＵインデックスに関連付けられたオフセットタイプ、及び該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値とが互いに関連付けられて格納されている。オフセット情報格納部６２１は、オフセット属性設定部６１３により設定されるオフセット値域に値の範囲が制限されたオフセットを格納する。
【０１２８】
図６（ｂ）は、リストメモリに格納される情報の一例を説明するためのものであって、ＱＡＯＵインデックス０〜９の各々に関連付けられたオフセットタイプ及び各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示している。図６（ｂ）における「ｘｘｘ」は、互いに異なり得る具体的な数値を表しているものとする。
【０１２９】
また、図６（ｂ）における「ＢＯ＿１」は、sao_type_idx＝５によって指定されるオフセットタイプを表している。また、「ＥＯ＿１」は、sao_type_idx＝１によって指定されるオフセットタイプを表している。このように、sao_type_idx＝１、２、３、４によって指定されるオフセットタイプであるエッジオフセットをそれぞれＥＯ＿１、２、３、４とも表記し、sao_type_idx＝５、６によって指定されるオフセットタイプであるバンドオフセットをそれぞれＢＯ＿１、２とも表記する。
【０１３０】
図６（ｂ）に示すように、オフセットタイプがバンドオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット１〜オフセット１６の合計１６個である。ここで、オフセット１〜オフセット１６は、sao_type_idx[sao_curr_depth][ys][xs]の値が５または６である場合の、sao_offset[sao_curr_depth][ys][xs][1]〜sao_offset[sao_curr_depth][ys][xs][16]によってそれぞれ指定される値のことを指す。一方で、オフセットタイプがエッジオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット１〜４の合計４個である。ここで、オフセット１〜４は、sao_type_idx[sao_curr_depth][ys][xs]の値が１、２、３、４の何れかである場合の、sao_offset[sao_curr_depth][ys][xs][1]〜sao_offset[sao_curr_depth][ys][xs][4]によってそれぞれ指定される値のことを指す。オフセット５〜１６にはなにも格納されない。
【０１３１】
また、リストメモリに格納されている各オフセットのメモリサイズは、オフセット属性設定部６１３から供給されるオフセット値域により決定される。オフセット値域が-24〜24-1である場合、オフセット１個あたり５ビットで表現が可能であり、５ビットのメモリサイズが必要である。
【０１３２】
なお、各ＱＡＯＭＵには、ＱＡＯＭＵ番号が付されており、このＱＡＯＭＵ番号によって各ＱＡＯＭＵは互いに識別可能である。以下では、ＱＡＯＭＵ番号がＮQであるＱＡＯＭＵをＱＡＯＭＵＮQとも表記する。
【０１３３】
ＱＡＯＵインデックスは分割深度０から最大の分割深度までを通して、指定されるＱＡＯＵのブロックの番号である。最大の分割深度が４の場合は、分割深度の全ブロック（１＋４＋１６＋６４＋２５６＝３４１個）に対して、図７に示すように、０〜３４０の値がＱＡＯＵインデックスによって指定される。
【０１３４】
動画像復号装置１で用いるオフセット情報格納部６２１においては、全ての分割深度の全てのＱＡＯＵのオフセットを格納する必要がないため、３４１個のメモリ領域を確保する必要がなく、入力されるＱＡＯＵ情報で指定された構造で実際に用いられるＱＡＯＵの数だけのメモリ領域があればよい。最大の分割深度が４のとき、そのブロック数は２５６以下であるため、２５６個のマップメモリ及びリストメモリがあれば十分である。この場合、オフセット情報格納部６２１で用いるＱＡＯＵインデックスは、リーフＱＡＯＵを識別するための一意のインデックス、例えば、リースＱＡＯＵを復号する度に１づつインクリメントする０から２５５以下のインデックスを用いる。また、オフセット情報格納部６２１には、最大分割深度に対応するＱＡＯＵ情報を単位として、マップリストを格納することも可能である。この場合、オフセット情報格納部６２１で用いるＱＡＯＵインデックスは０〜２５５の番号を用い、これは図７におけるＱＡＯＭＵ番号８５〜３４０に対応する。
【０１３５】
図７（ａ）〜（ｅ）は、対象の処理単位（例えばＬＣＵ）に含まれるＱＡＯＭＵに付されたＱＡＯＭＵ番号の一例を示す図であって、（ａ）は、分割深度が０であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｂ）は、分割深度が１であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｃ）は、分割深度が２であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｄ）は、分割深度が３であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示しており、（ｅ）は、分割深度が４であるＱＡＯＭＵに付されたＱＡＯＭＵ番号を示している。
【０１３６】
ＱＡＯＵ制御部６２２は、適応オフセットフィルタ処理部６２に含まれる各部を制御する。また、ＱＡＯＵ制御部６２２は、ＱＡＯＵ構造情報を参照して、デブロック済復号画像Ｐ＿ＤＢを１または複数のＱＡＯＵに分割し、各ＱＡＯＵを所定の順序でスキャンする。また、処理対象とする対象ＱＡＯＭＵを表すＱＡＯＭＵ番号をオフセットタイプ導出部６２３に供給する。
【０１３７】
オフセットタイプ導出部６２３は、オフセット情報格納部６２１のマップメモリ及びリストメモリを参照し、ＱＡＯＵ制御部６２２から供給されたＱＡＯＭＵ番号によって指定されるオフセットタイプを導出する。また、導出したオフセットタイプを、クラス分類部６２４に供給する。
【０１３８】
クラス分類部６２４は、対象ＱＡＯＵに含まれる各画素を、オフセットタイプ導出部６２３から供給されるオフセットタイプにおいて選択可能な複数のクラスの何れかに分類する。また、当該オフセットタイプと、各画素が分類されたクラスを示すクラスインデックスとをオフセット導出部６２５に供給する。なお、クラス分類部６２４による具体的な分類処理については後述するためここでは説明を省略する。
【０１３９】
オフセット導出部６２５は、オフセット情報格納部６２１のリストメモリを参照し、対象ＱＡＯＵに含まれる各画素について、クラス分類部６２４から供給されるオフセットタイプ及びクラスインデックスによって指定されるオフセットを導出する。さらにオフセット属性設定部６１３によって設定されたシフト値だけ、オフセットを左側へビットシフトするオフセット逆シフト部（不図示）を備える。オフセット逆シフト部は、オフセットのビット深度と画素ビット深度とを合わせるように、該オフセットの逆量子化を行う。このような逆量子化を行うことで、後述するオフセット加算部６２６の加算処理において、同一のビット深度にて、画素値とオフセットの加算を行うことが可能である。各画素について逆量子化したオフセットは、オフセット加算部６２６に供給される。
【０１４０】
オフセット加算部６２６は、対象ＱＡＯＵにおけるデブロック済復号画像Ｐ＿ＤＢの各画素に対して、オフセット導出部６２５から供給されるオフセットを加算する。オフセット加算部６２６は、デブロック済復号画像Ｐ＿ＤＢに含まれる全てのＱＡＯＵに対して処理を行って得られる画像をオフセットフィルタ済復号画像Ｐ＿ＯＦとして出力する。
【０１４１】
図８は、適応オフセットフィルタ処理部６２による処理の流れを示すフローチャートである。
【０１４２】
（ステップＳ１０１）
まず、ＱＡＯＵ制御部６２２は、オフセット情報格納部６２１からＱＡＯＵ構造情報を取得する。
【０１４３】
（ステップＳ１０２）
続いて、ＱＡＯＵ制御部６２２は、処理対象とする対象ＱＡＯＭＵのＱＡＯＭＵ番号をループ変数とする第１のループを開始する。
【０１４４】
（ステップＳ１０３）
ＱＡＯＵ制御部６２２は、オフセットタイプ導出部６２３にＱＡＯＭＵ番号を供給する。ＱＡＯＵ制御部６２２による制御に基づき、オフセットタイプ導出部６２３は、ＱＡＯＵ制御部６２２から供給されたＱＡＯＭＵ番号によって指定されるオフセットタイプを、オフセット情報格納部６２１のマップメモリ及びリストメモリから読み出す。また、オフセットタイプ導出部６２３は、読み出したオフセットタイプを、クラス分類部６２４に供給する。
【０１４５】
（ステップＳ１０４）
続いて、ＱＡＯＵ制御部６２２は、対象ＱＡＯＭＵに含まれる各画素の画素番号をループ変数とする第２のループを開始する。ここで、画素番号とは、対象ＱＡＯＭＵに含まれる画素を互いに識別するためのものであって、例えば、対象ＱＡＯＭＵに含まれる各画素に対して、所定のスキャン順に付されたものを用いることができる。また、そのような画素番号に代えて、対象ＱＡＯＭＵに含まれる各画素のｘ座標及びｙ座標をループ変数としてもよい。
【０１４６】
（ステップＳ１０５）
続いて、クラス分類部６２４は、ＱＡＯＵ制御部６２２による制御に基づき、処理対象の画素を、オフセットタイプ導出部６２３から供給されるオフセットタイプにおいて選択可能な複数のクラスの何れかに分類する。また、当該オフセットタイプと、処理対象の画素が分類されたクラスを示すクラスインデックスとをオフセット導出部６２５に供給する。
【０１４７】
（ステップＳ１０６）
続いて、オフセット導出部６２５は、ＱＡＯＵ制御部６２２による制御に基づき、処理対象の画素に対して加算すべきオフセットをオフセット情報格納部６２１から読み出す。すなわち、クラス分類部６２４から供給されるオフセットタイプ及びクラスインデックスによって指定されるオフセットを読み出す。また、処理対象の画素について導出されたオフセットをオフセット属性設定部６１３から供給されるシフト値だけ左側へビットシフトすることで逆量子化したオフセットを、オフセット加算部６２６に供給する。
【０１４８】
（ステップＳ１０７）
続いて、オフセット加算部６２６は、ＱＡＯＵ制御部６２２による制御に基づき、デブロック済復号画像Ｐ＿ＤＢの処理対象画素の画素値に対して、オフセット導出部６２５から供給されるオフセットを加算する。
【０１４９】
（ステップＳ１０８）
本ステップは、第２のループの終端である。
【０１５０】
（ステップＳ１０９）
本ステップは、第１のループの終端である。
【０１５１】
なお、ステップＳ１０３にて、オフセットタイプ導出部６２３が読み出したオフセットが０（オフセットタイプ＝０）であるとき、ＱＡＯＵ制御部６２２は、処理対象のＱＡＯＭＵの各画素に対してオフセットを加算しないようオフセット加算部６２６を制御する。
【０１５２】
また、ステップＳ１０５にて、対象画素がクラス０（クラスインデックス＝０）に分類された場合、該対象画素に対しては、オフセットを加算しないようオフセット加算部６２６を制御する。
【０１５３】
（オフセットの格納に必要なビット数）
続いて、オフセット（sao_offset）の格納に必要なビット数について説明する。画素ビット深度が１０ビットで、オフセットのビット深度が９ビットである場合、オフセットは-29〜29-1の値を取り、オフセット１つあたりのビット数は１０ビットと大きなビット数を有することになる。このように大きなビット数のオフセットを復号する場合、オフセット情報格納部６２１は、オフセットを格納しておくためのメモリサイズとして、１ピクチャあたり最大で、
（１ピクチャあたりのＱＡＯＭＵの総数）×（クラス数）×（オフセットあたりのビット数）＝２５６×１６×１０（ビット）＝４０９６０（ビット）
を有していることが要求される。１ピクチャあたりのＱＡＯＭＵの総数は、復号装置では２５６個であるが、後述する符号化装置では３４１個用いるため、さらに大きなメモリが必要になる。このように、オフセットの値域を制限せず、オフセットのビット深度で可能な値域を用いる場合には、オフセットのビット数が大きいため、オフセットを格納しておくための大きなメモリサイズが必要になる。
【０１５４】
（ＳＡＯ＿ＤＥＰＴＨと符号化効率の関係）
ＳＡＯ＿ＤＥＰＴＨとＰＩＣ＿ＤＥＰＴＨとは、量子化誤差の観点で互いに密接な関係がある。適応オフセットフィルタ６０の出力画像のビット深度は、画素ビット深度ＰＩＣ＿ＤＥＰＴＨであり、ＳＡＯ＿ＤＥＰＴＨは画素に加えるオフセットのビット深度であるから、画素ビット深度を超える精度のオフセットを用いても出力過程で捨てられてしまうため、オフセットの精度であるＳＡＯ＿ＤＥＰＴＨは、ＰＩＣ＿ＤＥＰＴＨ以下で設定されることが好ましい。また、ＳＡＯ＿ＤＥＰＴＨがＰＩＣ＿ＤＥＰＴＨよりも小さい場合には、入力画像をフィルタにより補正可能な精度（ＰＩＣ＿ＤＥＰＴＨ）よりも粗い補正しか行うことができないため、フィルタ効果は減少する。
【０１５５】
なお、オフセットの精度ＳＡＯ＿ＤＥＰＴＨが高い場合には、オフセットの符号量が増加する。一般に、符号化効率は符号化データの符号量Ｒ、入力画像の歪みＤ、重みλを用いて表現されるレート歪みコストＤ＋λＲを最小化することで最適化されることからも理解できるように、オフセットの精度は、歪みＤに対してマイナス、レートＲに対してプラスの影響を与えることから、精度の大きさにはトレードオフが存在し特定の最適値が存在する。
【０１５６】
さらに、本実施例において、量子化されたオフセットを一定のビット幅で表現できるオフセット値域に制限することで、オフセット情報格納部６２１で量子化されたオフセットを格納するためのビット幅を制限することができる。制限しない場合と比較して、メモリサイズ削減の効果を得ることができる。しかし、過度にオフセット値域を狭くすることは、オフセットが復号画像の歪みを補正する効果を小さくしてしまうので、オフセットの加算処理は復号画像の歪みを除去することができず、符号化効率が低下することがある。したがって、符号化効率が低下しないようにオフセット値域を最適な範囲を設定することが好ましい。
【０１５７】
本実施の形態においては、オフセット属性設定部６１３は、パターンＳ１〜Ｓ６の何れかによってオフセットビット深度及びオフセットのシフト値を設定し、パターンＣ１〜Ｃ３の何れかによってオフセット値域を設定する。
【０１５８】
（パターンＳ１）
パターンＳ１では、図９（ａ）に示すように、オフセットのビット深度ＳＡＯ＿ＤＥＰＴＨを画素ビット深度ＰＩＣ＿ＤＥＰＴＨと等しくする。オフセットの精度の最大値は画素ビット深度となることから、パターンＳ１は最大の精度でオフセットを符号化することになる。
【０１５９】
（パターンＳ２）
パターンＳ２では、図９（ｂ）に示すように、ＰＩＣ＿ＤＥＰＴＨが１０ビット以下の時は、ＳＡＯ＿ＤＥＰＴＨをＰＩＣ＿ＤＥＰＴＨと等しくし、ＰＩＣ＿ＤＥＰＴＨが１１ビット以上の時は、ＳＡＯ＿ＤＥＰＴＨを１０とする。パターンＳ２でオフセットのビット深度の上限を１０ビットとしている。発明者の知見により、復号画像の量子化ステップＱＰの値が小さいとき（ビットレートが高いとき）、オフセットのビット深度が画素ビット深度と同一である場合の方が、オフセットのビット深度を小さくする場合に比較して、符号化効率が高く、逆に、量子化ステップＱＰの値が大きいとき、オフセットのビット深度が画素ビット深度よりも小さい方が、画素ビット深度と同じ場合よりも符号化効率が高くなる。発明者の実験では、量子化パラメータｑｐが１２から２７の領域において、オフセットのビット深度をパターンＳ２のように定めることにより、画素ビット深度が９ビット以下のときにオフセットのビット深度が８ビットであり、画素ビット深度が１０ビット以上のときにオフセットのビット深度が９ビットである場合と比較して、符号化効率が向上することが確認された。したがって、パターンＳ２において、１０ビットを境に画素ビット深度への依存性を変化させることで、パターンＳ１のようにオフセットのビット深度と画素ビット深度を等しくした場合に比べて、オフセットの符号量を小さくすることができ、高い符号化効率を得ることが可能である。
【０１６０】
（パターンＳ３）
パターンＳ３にでは、図９（ｃ）に示すように、ＰＩＣ＿ＤＥＰＴＨが９ビット以下の時は、ＳＡＯ＿ＤＥＰＴＨをＰＩＣ＿ＤＥＰＴＨと等しくし、ＰＩＣ＿ＤＥＰＴＨが１０ビット以上の時は、ＳＡＯ＿ＤＥＰＴＨを９とする。パターンＳ３でオフセットのビット深度の上限を９ビットとしている。パターンＳ３においても、パターンＳ２と同様に、オフセットの符号量を小さくすることができ、高い符号化効率を得ることが可能である。
【０１６１】
（パターンＳ４）
パターンＳ４では、図９（ｄ）に示すように、ＰＩＣ＿ＤＥＰＴＨが１０ビット以下の時は、ＳＡＯ＿ＤＥＰＴＨをＰＩＣ＿ＤＥＰＴＨと等しくし、ＰＩＣ＿ＤＥＰＴＨが１１ビット以上の時は、ＳＡＯ＿ＤＥＰＴＨを10-floor((PIC_DEPTH-10)/STEP)とする。ここで関数floor(x)はｘ以下の最大の整数を与える関数である。パターンＳ４では、画素ビット深度が１１ビット以上において、画素ビットがＳＴＥＰビットだけ増加（減少）する毎にオフセットのビット深度が１ビットだけ増加（減少）することを意味する。図９（ｅ）では、パターンＳ４におけるＳＴＥＰ＝２の場合を示していて、画素ビット深度が２ビット増加する毎に、オフセットのビット深度は１ビット増加している。このような構成とすることで、画素ビット深度の大きさを考慮しつつ、ビットレートの大きさに対して、パターンＳ２及びパターンＳ３より自由度の高い対応が可能である。
【０１６２】
また、パターンＳ１〜パターンＳ４に共通して、シフト値はＰＩＣ＿ＤＥＰＴＨとＳＡＯ＿ＤＥＰＴＨとの差分値ＰＩＣ＿ＤＥＰＴＨ−ＳＡＯ＿ＤＥＰＴＨで表される。上記のパターンＳ１〜Ｓ４におけるオフセットビット深度及びシフト値の変更はメモリサイズ及び処理量の増加をすることなくオフセットビット深度及びシフト値を設定しているので、符号化効率の改善が可能である。
【０１６３】
（パターンＳ５）
パターンＳ５ではオフセットのビット深度を明示的に符号化する。具体的には、オフセットのビット深度と所定の値の差を符号化する。所定の値は８、もしくは、画素ビット深度が適当であり、前者の場合、ＳＡＯ＿ＤＥＰＴＨ−８が符号化され、後者の場合はＰＩＣ＿ＤＥＰＴＨ−ＳＡＯ＿ＤＥＰＴＨが適当である。なお、オフセットのビット深度は、符号化データの各種パラメータ情報やヘッダもしくは、ＱＡＯＵ情報の一部として符号化しても構わない。ＱＡＯＵ情報の一部としては、リーフＱＡＯＵに画素ビット深度を含めておいても良いし、所定の階層（例えば最上位階層のＱＡＯＵ、や、第１階層のＱＡＯＵ）のＱＡＯＵ情報に画素ビット深度を含めておいても構わない。符号化データの一部として符号化することにより、復号装置および符号化装置でビット深度を最適な値に設定することによって符号化効率を最大化させる効果が得られる。また、ビット深度をＱＡＯＵ情報で符号化する場合には、ＱＡＯＵの深度sao_curr_depthに応じてビット深度を変更することによりオフセットを格納するメモリの低減が可能である。多くのオフセットが出現する可能性があるのはsao_curr_depthが大きい場合であるから、sao_curr_depthが大きい場合にビット深度を小さくし、sao_curr_depthが小さい場合にビット深度を大きく設定することによって必要なメモリサイズの削減が可能である。例えば、sao_curr_depth＝０〜１の場合には、オフセットのビット深度＝画素ビット深度（パターンＳ１）とし、sao_curr_depth＝２〜４では、オフセットのビット深度に上限を設定する（パターンＳ２）などが適当であり、このようにビット深度を符号化する。また、ＱＡＯＵの深度毎にオフセットのビット深度を符号化するか、ＱＡＯＵの深度によらずオフセットのビット深度を１つ用いるかを示すフラグを符号化し、ＱＡＯＵの深度毎に符号化するか否かを切り替えることも適当である。
【０１６４】
（パターンＳ６）
パターンＳ６では、明示的な符号化なく、sao_curr_depthに応じてビット深度を決定する。例えば、sao_curr_depth＝０〜１の場合には、オフセットのビット深度＝画素ビット深度（パターンＳ１）とし、sao_curr_depth＝２〜４では、オフセットのビット深度に上限を設定する（パターンＳ２）などが適当である。
【０１６５】
（パターンＣ１）
パターンＣ１では、ＳＡＯ＿ＤＥＰＴＨに応じてオフセット値域を設定する。以下ではオフセット値域の値を表す最大のビット長をＣＬＩＰ＿ＢＩＴとする。具体的には、ＣＬＩＰ＿ＢＩＴ＝ＳＡＯ＿ＤＥＰＴＨ−Ｋの計算により、オフセット値域を-2CLIP_BIT-1〜2CLIP_BIT-1-1と定める。発明者の実験によれば、Ｋ＝４が適当であることが見出された。すなわち、Ｋ＝４の場合には、オフセット値域によりオフセットの範囲を制限しても符号化効率の低下がないことを確認した。Ｋ＝４は、最も良く使用される画素のビット深度が８の場合に適当である。画素ビット深度が８の場合、オフセットのビット深度ＳＡＯ＿ＤＥＰＴＨも８であり、ＣＬＩＰ＿ＢＩＴ＝８−Ｋ＝４となる。１つのオフセットが４ビットで格納できることは、８ビットのバイトを単位として扱うソフトウェア等で、１バイトに２つのオフセットをパッキングして格納することが可能であり、簡易にメモリサイズの削減が可能である。
【０１６６】
（パターンＣ２）
パターンＣ２では、ＳＡＯ＿ＤＥＰＴＨに依らずオフセット値域を設定する。具体的には、ＣＬＩＰ＿ＢＩＴ＝８として、オフセット値域を-27〜27-1と定める。
【０１６７】
また、一般的に、ＳＡＯ＿ＤＥＰＴＨに依らない定数Ｎを用いてＣＬＩＰ＿ＢＩＴ＝Ｎとしてもよい。ＳＡＯ＿ＤＥＰＴＨに依らずオフセット値域を設定する場合には、メモリサイズを小さくする効果を得るため、オフセットのビット深度よりも小さな値に設定することが好ましい。
【０１６８】
（パターンＣ３）
パターンＣ３では、オフセット値域を、ＱＡＯＵの階層に応じて決定する。sao_curr_depthが小さい場合（例えば０〜１）には、オフセットのビット深度によらずオフセット値域を決定とし、sao_curr_depthが大きい場合（例えば２〜４）にはオフセットのビット深度によって決定する、が適当である。例えば、前者はＣＬＩＰ＿ＢＩＴ＝８（パターンＣ２）、後者はＳＡＯ＿ＤＥＰＴＨ−Ｋビット（パターンＣ１）とする方法がある。なお、オフセットのビット深度をＱＡＯＵの階層に応じて変更する場合には、結果として固定のビット数でも構わないことがある。例えば、ＣＬＩＰ＿ＢＩＴ＝４とすることが適当である。
【０１６９】
（オフセットのビット数の具体例１）
続いて、本実施の形態に係るオフセット（sao_offset）のビット数の第１の具体例について説明する。本例においては、画素ビット深度を１０ビットとし、シフト値の設定をパターンＳ２により行い、オフセット値域の設定をパターンＣ１により行う場合を説明する。パターンＳ２ではオフセットのビット深度は１０ビットに設定され、パターンＣ１ではオフセット値域は１０−４＝６ビットに設定される。オフセット１つあたりのビット数が６ビットであるとは、オフセットのとり得る値を、−３２から３１までの値に制限することに対応する。本例の場合、オフセット情報格納部６２１は、オフセットを格納しておくためのメモリサイズとして、１ピクチャあたり最大で、
（１ピクチャあたりのＱＡＯＭＵの総数）×（クラス数）×（オフセットあたりのビット数）＝２５６×１６×６（ビット）＝２４５７６（ビット）
を有していれば足りる。
【０１７０】
したがって、オフセットが本例の値域を有する構成とすることによって、従来例に比べて、オフセット情報格納部６２１に必要なメモリサイズを略３／５に減少させることができる。
【０１７１】
符号化データ＃１に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【０１７２】
（オフセットのビット数の具体例２）
続いて、本実施の形態に係るオフセット（sao_offset）のビット数の第２の具体例について説明する。本例においては、画素ビット深度を１０ビットとし、シフト値の設定をパターンＳ２により行い、オフセット値域の設定をパターンＣ２により行う例を説明する。パターンＳ２よりオフセットのビット深度は１０ビットに設定され、パターンＣ２よりオフセット値域は８ビットに設定される。オフセット１つあたりのビット数が８ビットであるとは、オフセットのとり得る値を、例えば−１２８から１２７までの値に制限することに対応する。本例の場合、オフセット情報格納部６２１は、オフセットを格納しておくためのメモリサイズとして、１ピクチャあたり最大で、
（１ピクチャあたりのＱＡＯＭＵの総数）×（クラス数）×（オフセットあたりのビット数）＝２５６×１６×８（ビット）＝３２７６８（ビット）
を有していれば足りる。
【０１７３】
したがって、オフセットが本例のビット数を有する構成とすることによって、従来例に比べて、オフセット情報格納部６２１に必要なメモリサイズを略４／５に減少させることができる。
【０１７４】
また、符号化データ＃１に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【０１７５】
なお、オフセットのビット数を制限すれば、符号化データに含まれるオフセット情報の符号量を小さくすることができるが、過度に制限してしまうと、適応オフセットフィルタを備えることのメリットが小さくなってしまい、符号化データに含まれる残差データ（残差画像の画素値）の符号量が大きくなってしまうという問題がある。
【０１７６】
（オフセットのビット数の具体例３）
続いて、オフセット（sao_offset）のビット数の第３の具体例について説明する。本例パターンＣ１、Ｃ２何れかにおいては、オフセットタイプが、エッジオフセット（オフセットタイプ＝１〜４）であるのか、バンドオフセット（オフセットタイプ＝５〜６）であるのかに応じて、オフセットのビット数に対して異なる値を設定する。ここでは、画素ビット深度を１０ビットとする場合を例に、シフト値の設定をパターンＳ２により行い、エッジオフセットのオフセット値域の設定をパターンＣ２により行い、バンドオフセットのオフセット値域の設定をパターンＣ１により行う方法を説明する。
【０１７７】
画素ビット深度が１０ビットの場合、パターンＳ２ではオフセットのビット深度は１０ビットに設定される。エッジオフセットのオフセットタイプに属するオフセット（以下、エッジオフセットのオフセット）は、パターンＣ２から８ビットに値域が設定される。バンドオフセットのオフセットタイプに属するオフセット（以下、バンドオフセットのオフセット）はパターンＣ１から６ビットに値域が設定される。より一般には、エッジオフセットのオフセットのビット数をＮビットとし、バンドオフセットのオフセットのビット数をＭビットとしたとき、Ｎ≧Ｍが満たされるようにオフセットのビット数を定める。
【０１７８】
オフセット情報格納部６２１で確保が必要なメモリサイズは、ＱＡＯＵ単位で、オフセットタイプのクラス数×オフセットのビット数であるため、オフセットのクラス数がエッジオフセットよりも大きいバンドオフセットのビット数を小さくすれば、オフセットをオフセット情報格納部６２１で用いるメモリ領域を有効に活用することができる。
【０１７９】
このようにオフセットタイプに応じて、オフセットのビット数を異ならせることによって、オフセット情報格納部６２１に過度なメモリサイズを要求することなく、符号化効率の向上を図ることができる。メモリ領域を最も有効的に活用することができる。
【０１８０】
なお、オフセットの取り得る値を制限するための閾値ｔｈが２m-1より大きく、２m以下であるとき、当該オフセットを符号化するための符号化方式として、ｍビットの固定長符号化／復号方式を用いることができる。また、最大値とｔｈとするＴｒｕｎｃａｔｅｄ  ｕｎａｒｙ符号化や、Ｔｒｕｎｃａｔｅｄ  Ｒｉｃｅ符号化などの可変長符号化／復号方式を用いることができる。なお、上記の最大値ｔｈは、オフセット属性設定部６１３から供給されるオフセット値域によって決定される。また、動画像復号装置１は、このようにして符号化されたオフセットを復号することができる。
【０１８１】
以上の構成ではオフセット属性設定部６１３において、オフセットのビット深度、オフセット値域、及び、シフト値が設定される。適応オフセットフィルタ情報復号部６１では、オフセット値域の範囲の値を有する量子化オフセットが復号され、個々のオフセットに対して、オフセット値域以上のビット幅の格納領域を有するオフセット情報格納部６２１に格納される。本実施の形態では、オフセット値域がオフセットのビット深度に応じて決定することを特徴とする。また、オフセットのビット深度は、画素のビット深度に応じて決定する。このため、オフセットのビット深度を画素のビット深度に応じて決定することも、本実施の形態の特徴である。
【０１８２】
また、実施の形態１における適応オフセットフィルタ情報復号部６１は、復号後のオフセットを格納する格納部と該格納部から得られるオフセットを逆量子化を行う逆量子化部とを備え、オフセット導出部６２５における逆量子化処理を省略する形態としてもよい。この場合、格納部はオフセット属性設定部６１３により設定されるオフセット値域に制限されるオフセットを格納することと、逆量子化部はオフセット属性設定部６１３により設定されるシフト値に応じて左側へシフトを行って逆量子化処理を行うことを特徴とする。
【０１８３】
オフセット情報復号部６１１は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算するオフセット加算部６２６によって参照される各オフセットを符号化データ＃１から復号するものであり、図示されない画素ビット深度に応じて定められるオフセット値域及びシフト値を設定し、オフセット値域に制限されるオフセットを復号するオフセット復号手段を備えている、と表現することもできる。
【０１８４】
また、本実施の形態に係る適応オフセットフィルタ６０は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域におけるオフセット属性を設定するオフセット属性設定部６１３と、上記設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを復号するオフセット情報復号部６１１と、上記入力画像の各画素値に上記オフセットを加算するオフセット加算部６２６とを備えている画像フィルタ装置である、と表現することもできる。
【０１８５】
さらに、オフセット情報復号部６１１は、上記オフセット復号手段に加え、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記決定手段によって決定されたオフセットタイプに応じて異なるビット幅を有するオフセットを復号するオフセット復号手段を備えている、構成としてもよい。
【０１８６】
また、上記オフセットタイプ指定情報は、各単位領域における上記入力画像の画素値のビット深度を含み、オフセット情報復号部６１１は、上記画素値のビット深度に応じたビット幅を有するオフセットを復号する構成とすることができる。
【０１８７】
以下では、クラス分類部６２４による分類処理の具体例について説明する。クラス分類部６２４は、以下の分類処理例のうち、符号化データ＃１を生成する動画像符号化装置における分類処理に対応する分類処理を行うことが好ましい。
【０１８８】
（クラス分類部６２４による分類処理例１）
クラス分類部６２４による分類処理の第１の例について、図１０（ａ）〜（ｄ）から図１２を参照して説明する。
【０１８９】
（オフセットタイプ＝１〜４（エッジオフセット）のとき）
オフセットタイプ導出部６２３から供給されるオフセットタイプが１〜４の何れかであるとき、クラス分類部６２４は、処理対象の画素の近傍にエッジが存在するか否か、及びエッジが存在する場合にはエッジの種類を判定し、判定した結果に応じて、当該処理対象の画素を、複数のクラスの何れかに分類する。
【０１９０】
より具体的には、まず、クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］と、該処理対象画素に隣接するか、または頂点を共有する２つの画素ａ、ｂの画素値ｐｉｃ［ａ］、ｐｉｃ［ｂ］との差分の符号
Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）、及び
Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ｂ］）
を算出する。ここで、Ｓｉｇｎ（ｚ）は、
Ｓｉｇｎ（ｚ）＝＋１  （ｚ＞０のとき）
Ｓｉｇｎ（ｚ）＝０    （ｚ＝０のとき）
Ｓｉｇｎ（ｚ）＝−１  （ｚ＜０のとき）
の各値をとる関数である。また、何れの画素を画素ａ及び画素ｂとして用いるかは、具体的はオフセットタイプに依存し、以下のように定められる。
【０１９１】
・オフセットタイプ＝１（sao_type_idx＝１）のとき
図１０（ａ）に示すように、処理対象画素ｘの左側に隣接する画素を画素ａとし、処理対象画素の右側に隣接する画素を画素ｂとする。
【０１９２】
・オフセットタイプ＝２（sao_type_idx＝２）のとき
図１０（ｂ）に示すように、処理対象画素ｘの上側に隣接する画素を画素ａとし、処理対象画素の下側に隣接する画素を画素ｂとする。
【０１９３】
・オフセットタイプ＝３（sao_type_idx＝３）のとき
図１０（ｃ）に示すように、処理対象画素ｘの左上の頂点を共有する画素を画素ａとし、処理対象画素の右下の頂点を共有する画素を画素ｂとする。
【０１９４】
・オフセットタイプ＝４（sao_type_idx＝４）のとき
図１０（ｄ）に示すように、処理対象画素ｘの左下の頂点を共有する画素を画素ａとし、処理対象画素の右上の頂点を共有する画素を画素ｂとする。
【０１９５】
図１１（ａ）は、処理対象画素ｘの画素値ｐｉｃ［ｘ］と画素ａまたはｂの画素値との大小関係を示すグラフ、及びその大小関係に応じた関数Ｓｉｇｎの値を示す図である。図１１（ａ）に示すグラフにおいてｐｉｃ［ｘ］が付されている黒丸は、処理対象画素ｘの画素値を示すものであり、ｐｉｃ［ｘ］が付されていない黒丸は、処理対象画素ａまたはｂの画素値を示すものである。また、図１１（ａ）に示すグラフにおける上下方向は、画素値の大小を示している。
【０１９６】
続いて、クラス分類部６２４は、Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）、及びＳｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ｂ］）に基づいて、以下の数式（１−１）によってＥｇｄｅＴｙｐｅを導出する。
【０１９７】
ＥｇｄｅＴｙｐｅ＝Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）＋Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ｂ］）＋２      ・・・（１−１）
図１１（ｂ）は、処理対象画素ｘの画素値と、画素ａ及びｂの画素値との大小関係を示すグラフ、及びその大小関係に応じたＥｇｄｅＴｙｐｅの値を示す図である。図１１（ｂ）において、各グラフの中心の黒丸は、処理対象画素ｘの画素値を示しており、両端の黒丸は、画素ａ及びｂの画素値を示している。また、図１１（ｂ）に示すグラフにおける上下方向は、画素値の大小を示している。
【０１９８】
続いて、クラス分類部６２４は、導出したＥｇｄｅＴｙｐｅに基づいて、処理対象画素ｘが属するべきクラスのクラスインデックス（class_idx）を以下のように導出する。
【０１９９】
ｃｌａｓｓ＿ｉｄｘ＝ＥｏＴｂｌ［ＥｄｇｅＴｙｐｅ］
ここで、ＥｏＴｂｌ［ＥｄｇｅＴｙｐｅ］は、ＥｄｇｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルである。当該変換テーブルＥｏＴｂｌの具体例を図１１（ｄ）に示す。
【０２００】
図１１（ｄ）に示すように、クラス分類部６２４は、処理対象画素ｘ、画素ａ及び画素ｂから成る領域にエッジが存在しない場合（以下、平坦な場合とも呼ぶ）、処理対象画素ｘをクラス０（class_idx＝０）に分類する。図１１（ｃ）は、図１１（ｂ）に示した各グラフと、lass_idxとの対応を示している。
【０２０１】
（オフセットタイプ＝５〜６（バンドオフセット）のとき）
オフセットタイプ導出部６２３から供給されるオフセットタイプが５〜６の何れかであるとき、クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］に応じて、当該処理対象画素の画素値を複数のクラスの何れかに分類する。
【０２０２】
・オフセットタイプ＝５（sao_type_idx＝５）のとき
クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］が、
（ｍａｘ×１／４）≦ｐｉｃ［ｘ］≦（ｍａｘ×３／４）
を満たしている場合に、当該処理対象画素をクラス０以外のクラスに分類する。すなわち、処理対象画素の画素値が、図１２（ａ）における斜線の範囲内である場合に、当該処理対象画素をクラス０以外のクラスに分類する。なお、上記ｍａｘは、処理対象画素ｘの画素値の取り得る最大値を表しており、例えば、ｍａｘ＝２５５である。また、ｍａｘ＝２５５であるとき、上記の条件は、
８≦（ｐｉｃ［ｘ］／８）≦２３
と表現することもできる。
【０２０３】
・オフセットタイプ＝６（sao_type_idx＝６）のとき
クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］が、
ｐｉｃ［ｘ］≦（ｍａｘ×１／４）または（ｍａｘ×３／４）≦ｐｉｃ［ｘ］
を満たしている場合に、当該処理対象画素をクラス０以外のクラスに分類する。すなわち、処理対象画素の画素値が、図１２（ｂ）における斜線の範囲内である場合に、当該処理対象画素をクラス０以外のクラスに分類する。なお、上記ｍａｘは、処理対象画素ｘの画素値の取り得る最大値を表しており、例えば、ｍａｘ＝２５５である。また、ｍａｘ＝２５５であるとき、上記の条件は、
（ｐｉｃ［ｘ］／８）≦７または２４≦（ｐｉｃ［ｘ］／８）
と表現することもできる。
【０２０４】
クラス分類部６２４によるクラス分類処理をより具体的に説明すれば以下の通りである。
【０２０５】
オフセットタイプが５〜６の何れかであるとき、クラス分類部６２４は、処理対象画素ｘが属するべきクラスのクラスインデックス（class_idx）を以下のように導出する。
【０２０６】
ｃｌａｓｓ＿ｉｄｘ＝ＢｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／８］
ここで、ＢｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／８］は、処理対象画素ｘの画素値ｐｉｃ［ｘ］とｓａｏ＿ｔｙｐｅ＿ｉｄｘとから、ｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルである。当該変換テーブルＢｏＴｂｌの具体例を図１２に示す。図１２（ｃ）において「ＢＯ＿１」は、sao_type_index＝５であることを示しており、「ＢＯ＿２」は、sao_type_index＝６であることを示している。
【０２０７】
図１２（ｃ）に示すように、sao_type_index＝５のとき、クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］が８≦（ｐｉｃ［ｘ］／８）≦２３を満たすとき、ｐｉｃ［ｘ］の大きさに応じて、処理対象画素ｘをクラスインデックス１から１６までの何れかのクラスに分類する。
【０２０８】
一方で、sao_type_index＝６のとき、クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］がｐｉｃ［ｘ］／８）≦７または２４≦（ｐｉｃ［ｘ］／８）を満たすとき、ｐｉｃ［ｘ］の大きさに応じて、処理対象画素ｘをクラスインデックス１から１６までの何れかのクラスに分類する。
【０２０９】
一般的に、画像のビット深度がＰＩＣ＿ＤＥＰＴＨのとき、ｍａｘ＝２ＰＩＣ＿ＤＥＰＴＨ−１であり、図１２（ｃ）におけるｐｉｃ／８の代わりにｐｉｃ／２（ＰＩＣ＿ＤＥＰＴＨ−５)を用いてクラスの分類をおこなう。
【０２１０】
（クラス分類部６２４による分類処理例２）
続いて、クラス分類部６２４による分類処理の第２の例について説明する。
【０２１１】
本処理例においては、クラス分類部６２４は、数式（１−１）に代えて、以下の数式（１−２）を用いてＥｇｄｅＴｙｐｅを導出する。他は分類処理例１と同様である。
【０２１２】
ＥｇｄｅＴｙｐｅ＝Ｓｉｇｎ（（ｐｉｃ［ｘ］＞＞ｓｈｉｆｔ）−（ｐｉｃ［ａ］＞＞ｓｈｉｆｔ））＋Ｓｉｇｎ（（ｐｉｃ［ｘ］＞＞ｓｈｉｆｔ）−（ｐｉｃ［ｂ］＞＞ｓｈｉｆｔ））＋２      ・・・（１−２）
ここで、「＞＞」は右ビットシフトを表しており、「ｓｈｉｆｔ」は、ビットシフトの大きさを表している。「ｓｈｉｆｔ」の具体的な値は、例えば、画素値のビット深度と正の相関を有するように定めることができる。
【０２１３】
分類処理例１による分類処理においては、画素値の勾配が非常に小さい場合であっても、画素値の勾配が０でなければ、Ｓｉｇｎの値は非０となる。したがって、分類処理例１による分類処理は、ノイズの影響を受けやすいという側面を有する。
【０２１４】
本処理例においては、画素値を右シフトしてから差分をとるので、ＥｇｄｅＴｙｐｅの値がノイズの影響を受けにくくなり、符号化効率が向上するという効果がある。
【０２１５】
なお、本処理例においては、数式（１−２）に代えて、以下の数式（１−３）を用いてもよい。
【０２１６】
ＥｇｄｅＴｙｐｅ＝Ｓｉｇｎ（（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）＞＞ｓｈｉｆｔ）＋Ｓｉｇｎ（（ｐｉｃ［ｘ］−ｐｉｃ［ｂ］）＞＞ｓｈｉｆｔ））＋２  ・・・（１−３）
すなわち、画素値の差分をとった後に、右ビットシフトを行ってもよい。数式（１−３）を用いることによっても、数式（１−２）を用いた場合と同様の効果を奏する。
【０２１７】
（クラス分類部６２４による分類処理例３）
続いて、クラス分類部６２４による分類処理の第３の例について説明する。
【０２１８】
本処理例においては、クラス分類部６２４は、分類処理例１において説明した関数Ｓｉｇｎの定義を以下のように変更する。他は分類処理例１と同様である。
【０２１９】
Ｓｉｇｎ（ｚ）＝＋１  （ｚ＞ｔｈのとき）
Ｓｉｇｎ（ｚ）＝０    （−ｔｈ≦ｚ≦ｔｈのとき）
Ｓｉｇｎ（ｚ）＝−１  （ｚ＜−ｔｈのとき）
ここで、ｔｈは、予め定められた値を有する閾値である。閾値ｔｈの具体的な値は、その絶対値が、例えば、画素値のビット深度と正の相関を有するように定めることができる。
【０２２０】
本処理例においても、ＥｇｄｅＴｙｐｅの値がノイズの影響を受けにくくなり、高い符号化効率を得ることができる。
【０２２１】
（クラス分類部６２４による分類処理例４）
続いて、クラス分類部６２４による分類処理の第４の例について説明する。
【０２２２】
本処理例においては、クラス分類部６２４は、図１２（ｃ）に示したＢｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／８］に代えて、図１３に示したＢｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／８］を用いる。
【０２２３】
図１３に示すように、本処理例においては、ｐｉｃ［ｘ］／８の値が８及び９の何れかである場合、処理対象画素ｘは、sao_type_index＝５であっても、sao_type_index＝６であっても、クラスインデックスが０でないクラスに分類される。また、ｐｉｃ［ｘ］／８の値が２２及び２３の何れかである場合、処理対象画素ｘは、sao_type_index＝５であっても、sao_type_index＝６であっても、クラスインデックスが０でないクラスに分類される。
【０２２４】
また、本処理例においては、処理対象画素の画素値は、その値が１５以下である場合（ｐｉｃ［ｘ］／８＝０または１である場合）、ＭＩＮにクリップされる。また、処理対象画素の画素値は、その値が２４０以上である場合（ｐｉｃ［ｘ］／８＝３０または３１である場合）、ＭＡＸにクリップされる。ここで、ＭＩＮ及びＭＡＸとしては、
・ＭＩＮ＝１５、ＭＡＸ＝２４０
・ＭＩＮ＝１６、ＭＡＸ＝２３９
・ＭＩＮ＝１６、ＭＡＸ＝２３５
の何れかの組み合わせを用いることが好ましい。
【０２２５】
分類処理例１においては、sao_type_index＝５のときにクラス０に分類される処理対象画素は、sao_type_index＝６のときにクラス０でないクラスに分類される。また、sao_type_index＝６のときにクラス０に分類される処理対象画素は、sao_type_index＝５のときにクラス０でないクラスに分類される。
【０２２６】
したがって、分類処理例１においては、sao_type_index＝５であるのか、sao_type_index＝６であるのかに応じて、オフセットを加算した後の画素値が大きく異なり得るため、符号化効率が期待されるほど向上しないという問題が生じ得る。また、このような問題は、オフセットフィルタ前画像の画素値がｐｉｃ［ｘ］／８の値が８及び９の何れか、または、ｐｉｃ［ｘ］／８の値が２２及び２３の何れかである場合に顕著なものとなり得る。
【０２２７】
本処理例においては、ｐｉｃ［ｘ］／８の値が８及び９の何れかである場合、処理対象画素ｘは、sao_type_index＝５であっても、sao_type_index＝６であっても、クラスインデックスが０でないクラスに分類され、ｐｉｃ［ｘ］／８の値が２２及び２３の何れかである場合、処理対象画素ｘは、sao_type_index＝５であっても、sao_type_index＝６であっても、クラスインデックスが０でないクラスに分類されるので、上述の問題が生じにくい。したがって、本処理例の処理を行うことによって、符号化効率の向上を図ることができる。
【０２２８】
なお、本処理例では、ｐｉｃ［ｘ］／８の値が８及び９の何れかである場合、及び、ｐｉｃ［ｘ］／８の値が２２及び２３の何れかである場合、処理対象画素ｘは、sao_type_index＝５であっても、sao_type_index＝６であっても、クラスインデックスが０でないクラスに分類されるものとしたが、これは本処理例を限定するものではなく、ｐｉｃ［ｘ］／８の値が所定の範囲であるときに、処理対象画素ｘは、sao_type_index＝５であっても、sao_type_index＝６であっても、クラスインデックスが０でないクラスに分類される処理を行えばよい。
【０２２９】
一般的に、画像の画素ビット深度がＰＩＣ＿ＤＥＰＴＨのとき、ｍａｘ＝２ＰＩＣ＿ＤＥＰＴＨ−１であり、図１３におけるｐｉｃ／８の代わりにｐｉｃ／２（ＰＩＣ＿ＤＥＰＴＨ−５)を用いてクラスの分類をおこなう。
【０２３０】
このように、本処理例の分類処理を行うクラス分類部６２４は、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第１及び上記第２のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類する、ものであると表現することもできる。
【０２３１】
（動画像符号化装置２）
以下では、符号化対象画像を符号化することによって符号化データ＃１を生成する動画像符号化装置２について、図１４から図１８（ａ）〜（ｄ）を参照して説明する。動画像符号化装置２は、その一部に、Ｈ．２６４／ＭＰＥＧ−４．ＡＶＣに採用されている方式、ＶＣＥＧ（Video Coding Expert Group）における共同開発用コーデックであるＫＴＡソフトウェアに採用されている方式、その後継コーデックであるＴＭｕＣ（Test Model under Consideration）ソフトウェアに採用されている方式、及び、ＨＭ（HEVC TestModel）ソフトウェアに採用されている技術を含んでいる。
【０２３２】
図１４は、本実施の形態に係る動画像符号化装置２の構成を示すブロック図である。図１４に示すように、動画像符号化装置２は、変換・量子化部２１、可変長符号符号化部２２、逆量子化・逆変換部２３、バッファメモリ２４、イントラ予測画像生成部２５、インター予測画像生成部２６、動きベクトル検出部２７、予測方式制御部２８、動きベクトル冗長性削除部２９、加算器３１、減算器３２、デブロッキングフィルタ３３、適応フィルタ７０、及び適応オフセットフィルタ８０を備えている。動画像符号化装置２は、動画像＃１０（符号化対象画像）を符号化することによって、符号化データ＃３を生成する装置である。
【０２３３】
変換・量子化部２１は、（１）符号化対象画像から予測画像Ｐｒｅｄを減算した予測残差Ｄをブロック毎にＤＣＴ変換（Discrete Cosine Transform）し、（２）ＤＣＴ変換により得られたＤＣＴ係数を量子化し、（３）量子化により得られた量子化予測残差ＱＤを可変長符号符号化部２２及び逆量子化・逆変換部２３に供給する。なお、変換・量子化部２１は、（１）量子化の際に用いる量子化ステップＱＰを、ツリーブロック毎に選択し、（２）選択した量子化ステップＱＰの大きさを示す量子化パラメータ差分Δｑｐを可変長符号符号化部２２に供給し、（３）選択した量子化ステップＱＰを逆量子化・逆変換部２３に供給する。ここで、量子化パラメータ差分Δｑｐとは、ＤＣＴ変換／量子化するツリーブロックに関する量子化パラメータｑｐ（ＱＰ＝２ｐｑ／６）の値から、直前にＤＣＴ変換／量子化したツリーブロックに関する量子化パラメータｑｐ’の値を減算して得られる差分値のことを指す。
【０２３４】
可変長符号符号化部２２は、（１）変換・量子化部２１から供給された量子化予測残差ＱＤ並びにΔｑｐ、（２）後述する予測方式制御部２８から供給された予測パラメータＰＰ、および、（３）後述する適応フィルタ７０から供給されたフィルタセット番号、フィルタ係数群、領域指定情報、並びにオンオフ情報を可変長符号化することによって、符号化データ＃１を生成する。また、可変長符号符号化部２２は、適応オフセットフィルタ８０から供給されるＱＡＯＵ情報を符号化し、符号化データ＃３に含める。
【０２３５】
逆量子化・逆変換部２３は、（１）量子化予測残差ＱＤを逆量子化し、（２）逆量子化によって得られたＤＣＴ係数を逆ＤＣＴ（Discrete Cosine Transform）変換し、（３）逆ＤＣＴ変換によって得られた予測残差Ｄを加算器３１に供給する。量子化予測残差ＱＤを逆量子化する際には、変換・量子化部２１から供給された量子化ステップＱＰを利用する。なお、逆量子化・逆変換部２３から出力される予測残差Ｄは、変換・量子化部２１に入力される予測残差Ｄに量子化誤差が加わったものであるが、ここでは簡単のために共通の呼称を用いる。
【０２３６】
イントラ予測画像生成部２５は、各パーティションに関する予測画像Ｐｒｅｄ＿Ｉｎｔｒａを生成する。具体的には、（１）各パーティションついてイントラ予測に用いる予測モードを選択し、（２）選択した予測モードを用いて、復号画像Ｐから予測画像Ｐｒｅｄ＿Ｉｎｔｒａを生成する。イントラ予測画像生成部２５は、生成したイントラ予測画像Ｐｒｅｄ＿Ｉｎｔｒａを、予測方式制御部２８に供給する。
【０２３７】
また、イントラ予測画像生成部２５は、各パーティションについて選択された予測モードから、各パーティションのサイズとから各パーティションについての予測インデックスＰＩを特定し、当該予測インデックスＰＩを予測方式制御部２８に供給する。
【０２３８】
また、イントラ予測画像生成部２５は、対象パーティションのサイズ、および、対象パーティションに割り付けられた予測モードを示す情報であるイントラ符号化モード情報ＩＥＭを適応フィルタ７０に供給する。
【０２３９】
動きベクトル検出部２７は、各パーティションに関する動きベクトルｍｖを検出する。具体的には、（１）参照画像として利用するフィルタ済復号画像Ｐ＿ＦＬ’を選択し、（２）選択したフィルタ済復号画像Ｐ＿ＦＬ’において対象パーティションを最良近似する領域を探索することによって、対象パーティションに関する動きベクトルｍｖを検出する。ここで、フィルタ済復号画像Ｐ＿ＦＬ’は、既に復号が完了した復号済みの復号画像に対して、デブロッキングフィルタ３３によるデブロック処理、適応オフセットフィルタ８０による適応的オフセット処理、および、適応フィルタ７０による適応的フィルタ処理を施すことによって得られる画像であり、動きベクトル検出部２７は、フィルタ済復号画像Ｐ＿ＦＬ’を構成する各画素の画素値をバッファメモリ２４から読み出すことができる。動きベクトル検出部２７は、検出した動きベクトルｍｖを、参照画像として利用したフィルタ済復号画像Ｐ＿ＦＬ’を指定する参照画像インデックスＲＩと共に、インター予測画像生成部２６及び動きベクトル冗長性削除部２９に供給する。なお、双方向予測（重み付き予測）を行うパーティションについては、参照画像として２枚のフィルタ済復号画像Ｐ＿ＦＬ１’及びＰ＿ＦＬ２’を選択し、２枚のフィルタ済復号画像Ｐ＿ＦＬ１’及びＰ＿ＦＬ２’の各々に対応する動きベクトルｍｖ１及びｍｖ２、並びに、参照画像インデックスＲＩ１及びＲＩ２をインター予測画像生成部２６及び動きベクトル冗長性削除部２９に供給する。
【０２４０】
インター予測画像生成部２６は、各インター予測パーティションに関する動き補償画像ｍｃを生成する。具体的には、動きベクトル検出部２７から供給された動きベクトルｍｖを用いて、動きベクトル検出部２７から供給された参照画像インデックスＲＩによって指定されるフィルタ済復号画像Ｐ＿ＦＬ’から動き補償画像ｍｃを生成する。動きベクトル検出部２７と同様、インター予測画像生成部２６は、フィルタ済復号画像Ｐ＿ＦＬ’を構成する各画素の画素値をバッファメモリ２４から読み出すことができる。インター予測画像生成部２６は、生成した動き補償画像ｍｃ（インター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒ）を、動きベクトル検出部２７から供給された参照画像インデックスＲＩと共に、予測方式制御部２８に供給する。なお、双方向予測（重み付き予測）をパーティションについては、（１）動きベクトルｍｖ１を用いて、参照画像インデックスＲＩ１によって指定されたフィルタ済復号画像Ｐ＿ＦＬ１’から動き補償画像ｍｃ１を生成し、（２）動きベクトルｍｖ２を用いて、参照画像インデックスＲＩ２によって指定されたフィルタ済参照画像Ｐ＿ＦＬ２’から動き補償画像ｍｃ２を生成し、（３）動き補償画像ｍｃ１と動き補償画像ｍｃ２との加重平均にオフセット値を加えることによってインター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒを生成する。
【０２４１】
予測方式制御部２８は、イントラ予測画像Ｐｒｅｄ＿Ｉｎｔｒａ及びインター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒを符号化対象画像と比較し、イントラ予測を行うかインター予測を行うかを選択する。イントラ予測を選択した場合、予測方式制御部２８は、イントラ予測画像Ｐｒｅｄ＿Ｉｎｔｒａを予測画像Ｐｒｅｄとして加算器３１及び減算器３２に供給すると共に、イントラ予測画像生成部２５から供給された予測インデックスＰＩを予測パラメータＰＰとして可変長符号符号化部２２に供給する。一方、インター予測を選択した場合、予測方式制御部２８は、インター予測画像Ｐｒｅｄ＿Ｉｎｔｅｒを予測画像Ｐｒｅｄとして加算器３１及び減算器３２に供給すると共に、インター予測画像生成部２６から供給された参照画像インデックスＲＩ、並びに、動きベクトル冗長性削除部２９（後述）から供給された推定動きベクトルインデックスＰＭＶＩ及び動きベクトル残差ＭＶＤを予測パラメータＰＰとして可変長符号符号化部に供給する。
【０２４２】
予測方式制御部２８にて選択された予測画像Ｐｒｅｄを、符号化対象画像から減算することによって、減算器３２にて予測残差Ｄが生成される。減算器３２にて生成された予測残差Ｄは、上述したとおり、変換・量子化部２１によってＤＣＴ変換／量子化される。一方、予測方式制御部２８にて選択された予測画像Ｐｒｅｄを、逆量子化・逆変換部２３にて生成された予測残差Ｄに加算することによって、加算器３１にて局所復号画像Ｐが生成される。加算器３１にて生成された局所復号画像Ｐは、デブロッキングフィルタ３３、適応オフセットフィルタ８０および適応フィルタ７０を経由したのち、フィルタ済復号画像Ｐ＿ＦＬとしてバッファメモリ２４に格納され、インター予測における参照画像として利用される。
【０２４３】
なお、動きベクトル冗長性削除部２９は、動きベクトル検出部２７によって検出された動きベクトルｍｖにおける冗長性を削除する。具体的には、（１）動きベクトルｍｖの推定に用いる推定方法を選択し、（２）選択した推定方法に従って推定動きベクトルｐｍｖを導出し、（３）動きベクトルｍｖから推定動きベクトルｐｍｖを減算することにより動きベクトル残差ＭＶＤを生成する。動きベクトル冗長性削除部２９は、生成した動きベクトル残差ＭＶＤを、選択した推定方法を示す推定動きベクトルインデックスＰＭＶＩと共に、予測方式制御部２８に供給する。
【０２４４】
デブロッキングフィルタ３３は、復号画像Ｐにおけるブロック境界、またはＣＵ境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、復号画像Ｐにおける当該ブロック境界、または当該ＣＵ境界に対してデブロッキング処理を施すことによって、当該ブロック境界、または当該ＣＵ境界付近の画像の平滑化を行う。デブロッキングフィルタ３３によりデブロッキング処理が施された画像は、デブロック済復号画像Ｐ＿ＤＢとして、適応オフセットフィルタ８０に出力される。
【０２４５】
適応オフセットフィルタ８０は、デブロッキングフィルタ３３から供給されるデブロック済復号画像Ｐ＿ＤＢに対して、適応的オフセットフィルタ処理を施すことによってオフセットフィルタ済復号画像Ｐ＿ＯＦを生成する。生成されたオフセットフィルタ済復号画像Ｐ＿ＯＦは、適応フィルタ７０に供給される。適応オフセットフィルタ８０の具体的な構成については、後述するため、ここでは説明を省略する。
【０２４６】
適応フィルタ７０は、適応オフセットフィルタ８０から供給されるオフセットフィルタ済復号画像Ｐ＿ＯＦに対して、適応的なフィルタ処理を施すことによって、フィルタ済復号画像Ｐ＿ＦＬを生成する。適応フィルタ７０によりフィルタ処理が施されたフィルタ済復号画像Ｐ＿ＦＬは、バッファメモリ２４に格納される。適応フィルタ７０によって用いられるフィルタ係数は、フィルタ済復号画像Ｐ＿ＦＬと符号化対象画像＃１０との誤差がより小さくなるように定められたものであり、このようにして定められたフィルタ係数がフィルタパラメータＦＰとして符号化され、動画像復号装置１に伝送される。
【０２４７】
（適応オフセットフィルタ８０）
図１５は、適応オフセットフィルタ８０の構成を示すブロック図である。図１５に示すように、適応オフセットフィルタ８０は、適応オフセットフィルタ情報設定部８１及び適応オフセットフィルタ処理部８２を備えている。
【０２４８】
また、図１５に示すように、適応オフセットフィルタ情報設定部８１は、オフセット算出部８１１、オフセットシフト部８１６、オフセットクリップ部８１２、オフセット情報選択部８１３、及びオフセット属性設定部８１５を備えている。
【０２４９】
（オフセット算出部８１１）
オフセット算出部８１１は、対象の処理単位（例えばＬＣＵ）に含まれる所定の分割深度までの全てのＱＡＯＭＵに対して、全てのオフセットタイプ及び全てのクラスについてのオフセットを算出する。ここで、オフセットタイプ及びクラスは、動画像復号装置１の説明において説明したものと同じものを指す。
【０２５０】
図１６は、オフセット算出部８１１による処理の流れを示すフローチャートである。
【０２５１】
（ステップＳ２０１）
まず、オフセット算出部８１１は、処理対象とする対象ＱＡＯＭＵのＱＡＯＭＵ番号をループ変数とする第１のループを開始する。例えば、図７（ａ）〜（ｅ）に示した例の場合、当該第１のループは、ＱＡＯＭＵ番号＝０からＱＡＯＭＵ番号＝３４０までのループである。
【０２５２】
（ステップＳ２０２）
続いて、オフセット算出部８１１は、対象ＱＡＯＭＵに対して選択可能なオフセットタイプをループ変数とする第２のループを開始する。当該第２のループは、オフセットタイプ１からオフセットタイプ６までのループである。
【０２５３】
（ステップＳ２０３）
続いて、オフセット算出部８１１は、対象ＱＡＯＭＵに含まれる画素を単位とする第３のループを開始する。
【０２５４】
（ステップＳ２０４）
続いて、オフセット算出部８１１は、対象画素を複数のクラスの何れかに分類する。より具体的には、第２のループ変数であるオフセットタイプが１〜４であるとき、対象画素をクラス１〜４の何れかに分類する。本ステップにおける分類処理は、動画像復号装置１における適応オフセットフィルタ６０の備えるクラス分類部６２４による分類処理例１〜分類処理例４の何れかと同じ処理である。
【０２５５】
また、対象ＱＡＯＭＵに関して、クラス毎に、画素が分類された回数である分類回数count[part_idx][sao_type_index][class_idx]を算出する。ここで、part_idxは、ＱＡＯＭＵ番号を表す。
【０２５６】
（ステップＳ２０５）
続いて、オフセット算出部８１１は、対象画素におけるデブロック済復号画像Ｐ＿ＤＢの画素値と該対象画素における符号化対象画像＃１０の画素値との差分をとることによって該対象画素における差分画素値を算出する。より具体的には、対象画素の位置を（ｘ、ｙ）としたとき、Ｐ＿ＤＢ（ｘ、ｙ）−Ｏｒｇ（ｘ、ｙ）を算出する。ここで、Ｐ＿ＤＢ（ｘ、ｙ）は、対象画素におけるデブロック済復号画像Ｐ＿ＤＢの画素値を表しており、Ｏｒｇ（ｘ、ｙ）は、対象画素における符号化対象画像＃１０の画素値を表している。
【０２５７】
（ステップＳ２０６）
本ステップは、第３のループの終端である。本ステップが終了した時点で、対象ＱＡＯＭＵに含まれる全ての画素に関して、差分画素値が算出されていることになる。
【０２５８】
（ステップＳ２０７）
続いて、オフセット算出部８１１は、対象ＱＡＯＭＵに含まれる各画素についての差分画素値のクラス毎の総和を、該クラスの分類回数で除算することによってオフセットを算出する。より具体的には、オフセット算出部８１１は、対象ＱＡＯＭＵ、対象オフセットタイプ、及び対象クラスについてのオフセットoffset[part_idx][sao_type_idx][class_idx]を以下の式を用いて算出する。
【０２５９】
offset[part_idx][sao_type_idx][class_idx] = Σ(P_DB(x、y)-Org(x、y))/count[part_idx][sao_type_idx][class_idx]
ここで、記号Σは、part_idxによって指定される対象ＱＡＯＭＵ、及びsao_type_idxによって指定される対象オフセットタイプにおいて、class_idxによって指定される対象クラスに分類された画素についての和をとることを示している。
【０２６０】
（ステップＳ２０８）
本ステップは第２のループの終端である。
【０２６１】
（ステップＳ２０９）
本ステップは第１のループの終端である。
【０２６２】
以上の処理により、オフセット算出部８１１は、対象ＬＣＵに含まれる所定の分割深度までの全てのＱＡＯＭＵに対して、全てのオフセットタイプ及び全てのクラスについてのオフセットを算出する。例えば、図７（ａ）〜（ｅ）に示す例の場合、オフセット算出部８１１は、合計で、
（（分割深度０のＱＡＯＭＵの総数）＋．．．＋（分割深度４のＱＡＯＭＵの総数））×（（ＥＯのオフセットタイプ数）×（ＥＯのクラス数）＋（ＢＯのオフセットタイプ数）×（ＢＯのクラス数））＝（１＋４＋１６＋６４＋２５６）×（（４×４）＋（２×１６））＝１６３６８（個）
のオフセットを算出することになる。ここで、各オフセットのビット数は例えば１０ビットである。
【０２６３】
オフセット算出部８１１は、上記の処理によって算出したオフセット、オフセットタイプ、クラス、及び、ＱＡＯＵの分割構造を表すＱＡＯＵ構造情報からなるオフセット情報をオフセットシフト部８１６に供給する。
【０２６４】
なお、動画像符号化装置２は、上記ステップＳ２０４において何れの分類処理例に係る分類処理を行ったのかを示すフラグを符号化する構成とし、動画像復号装置１の備える適応オフセットフィルタ６０は、当該フラグを参照し、当該フラグの示す分類処理と同じ分類処理を行う構成とすることができる。また、そのようなフラグを用いることなく、動画像符号化装置２と動画像復号装置１とで予め定められた同じ分類処理を行う構成としてもよい。
【０２６５】
（オフセットシフト部８１６）
オフセットシフト部８１６は、オフセット算出部８１１から供給されるオフセット情報に含まれる各オフセットの量子化を行う。量子化はオフセットを右側へビットシフトすることで、オフセットを画素ビット深度の精度からオフセットのビット深度の精度へ変換する。なお、シフト処理におけるシフト量は、後述するオフセット属性設定部８１５によって供給されるシフト値により決定される。
【０２６６】
（オフセットクリップ部８１２）
オフセットクリップ部８１２は、後述するオフセット属性設定部８１５から供給されるオフセット値域へ制限するために、オフセットシフト部８１６から供給されるオフセットに対して以下に示すようなクリップ処理１、クリップ処理２の何れかの処理によってクリップの処理を行う。
【０２６７】
（クリップ処理１）
オフセットクリップ部８１２は、オフセットシフト部８１６から供給されるオフセット情報に含まれる各オフセットに対してクリップ処理を行う。オフセットクリップ部８１２は、オフセットシフト部８１６から供給される各オフセットを例えば−８から７までの値にクリップすることによって、各オフセットを４ビットで表現する。クリップされた各オフセットは、オフセット情報選択部８１３に供給される。クリップするビット幅は、動画像復号装置１と同様、画像のビット深度とオフセットのビット深度に応じて設定される。
【０２６８】
このように、各オフセットをクリップすることによって、各オフセットが格納されるメモリ（不図示）のメモリサイズを削減することができる。また、符号化データ＃１に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【０２６９】
（クリップ処理２）
また、オフセットクリップ部８１２は、オフセットシフト部８１６から供給される各オフセットのクリップ範囲を、オフセットタイプに応じて異なる値を設定する構成としてもよい。
【０２７０】
例えば、オフセットタイプがエッジオフセットである場合には、オフセットのビット数を８ビットとし、オフセットタイプがバンドオフセットである場合には、オフセットのビット数を４ビットとする。より一般には、オフセットタイプがエッジオフセットである場合のオフセットのビット数をＮビットとし、オフセットタイプがバンドオフセットである場合のオフセットのビット数をＭビットとしたとき、Ｎ＞Ｍが満たされるようにオフセットのビット数を定める。
【０２７１】
このようにオフセットタイプに応じて、オフセットのビット数を異ならせることによって、各オフセットを格納するためのメモリに過度なメモリサイズを要求することなく、符号化効率の向上を図ることができる。
【０２７２】
なお、オフセットの取り得る値を制限するための閾値ｔｈが２m-1より大きく、２m以下であるとき、当該オフセットを符号化するための符号化方式として、ｍビットの固定長符号化を用いることができる。より具体的には、最大値とｔｈとするＴｒｕｎｃａｔｅｄ  ｕｎａｒｙ符号化や、Ｔｒｕｎｃａｔｅｄ  Ｒｉｃｅ符号化を用いることができる。なお、上記の最大値ｔｈは、オフセット属性設定部８１５から供給されるオフセット値域によって決定される。
【０２７３】
また、上記クリップ処理１及び２を組み合わせて得られるクリップ処理も本実施の形態に含まれる。また、適応オフセットフィルタ８０は、オフセットクリップ部８１２を備えない構成としてもよい。
【０２７４】
（オフセット情報選択部８１３）
オフセット情報選択部８１３は、ＲＤコスト（Rate-Distorsion cost）がより小さくなるオフセットタイプ、クラス、オフセットの組み合わせ、及び、それに対応するＱＡＯＵ分割構造を決定し、決定したオフセットタイプ、クラス、オフセット及び、それに対応するＱＡＯＭ分割構造を示すＱＡＯＵ情報を可変長符号符号化部２２に供給する。また、オフセット情報選択部８１３は、決定したオフセットをＱＡＯＵ毎又はＱＡＯＭＵ毎に適応オフセットフィルタ処理部８２に供給する。
【０２７５】
オフセット情報選択部８１３の処理について図１７〜図１８を参照してより具体的に説明すれば以下の通りである。図１７は、オフセット情報選択部８１３による処理の流れを示すフローチャートである。
【０２７６】
（ステップＳ３０１）
まず、オフセット情報選択部８１３は、処理対象とする対象ＱＡＯＭＵのＱＡＯＭＵ番号をループ変数とする第１のループを開始する。
【０２７７】
（ステップＳ３０２）
続いて、オフセット情報選択部８１３は、対象ＱＡＯＭＵに対して選択可能なオフセットタイプをループ変数とする第２のループを開始する。当該第２のループは、オフセットタイプ１からオフセットタイプ６までのループである。
【０２７８】
（ステップＳ３０３）
続いて、オフセット情報選択部８１３は、対象オフセットタイプについて、対象ＱＡＯＭＵにおけるオフセットフィルタ済復号画像Ｐ＿ＯＦと符号化対象画像＃１０との二乗誤差を対算出する。
【０２７９】
（ステップＳ３０４）
本ステップは第２のループの終端である。
【０２８０】
（ステップＳ３０５）
本ステップは第１のループの終端である。第１及び第２のループが終了した時点で、各ＱＡＯＭＵに関して、全てのオフセットタイプについての二乗誤差が算出されることになる。
【０２８１】
（ステップＳ３０６）
続いて、オフセット情報選択部８１３は、対象の処理単位（例えばＬＣＵ）をＱＡＯＵに分割するＱＡＯＵ分割構造のうち、ＲＤコストがより小さくなるＱＡＯＵ分割構造を決定する。
【０２８２】
本ステップにおけるオフセット情報選択部８１３の具体的な処理例を図１８（ａ）〜（ｅ）を参照して説明すれば以下の通りである。
【０２８３】
まず、オフセット情報選択部８１３は、分割深度を０としたときのＲＤコストと分割深度を１とした場合のＲＤコストを計算する（図１８（ａ）、（ｂ））。図１８（ａ）では、分割深度１のＲＤコストが分割深度０のＲＤコストよりも小さいものとする（図１８（ｃ））。
【０２８４】
続いて、オフセット情報選択部８１３は、分割深度を２とした場合のＲＤコストを計算する（図１８（ｄ））。
【０２８５】
続いて、オフセット情報選択部８１３は、分割深度１のＱＡＯＭＵのＲＤコストと該分割深度１のＱＡＯＭＵに含まれる分割深度２のＱＡＯＭＵのＲＤコストとを比較し、分割深度２のＱＡＯＭＵのＲＤコストの方が小さい場合には、該分割深度１のＱＡＯＭＵを分割深度２のＱＡＯＭＵに更新する（図１８（ｅ））。この処理を最大の分割深度に到達するまで繰り返す。これによって、ＲＤコストがより小さくなるＱＡＯＵ分割構造が決定される。
【０２８６】
（オフセット属性設定部８１５）
オフセット属性設定部８１５は、図示されない画素ビット深度を入力としてオフセットのビット深度を決定する。決定されたオフセットのビット深度により、オフセット値域及びシフト値を設定する。オフセット値域は適応オフセットフィルタ処理部８２に供給され、シフト値はオフセットシフト部８１６に供給される。オフセット値域及びシフト値の設定は上述したオフセット属性設定部６１３と同一の処理のため、ここでは説明を省略する。
【０２８７】
（適応オフセットフィルタ処理部８２）
適応オフセットフィルタ処理部８２は、対象ＱＡＯＵにおけるデブロック済復号画像Ｐ＿ＤＢの各画素に対して、オフセット情報選択部８１３から供給されるオフセットを加算する。適応オフセットフィルタ処理部８２は、デブロック済復号画像Ｐ＿ＤＢに含まれる全てのＱＡＯＵに対して処理を行って得られる画像をオフセットフィルタ済復号画像Ｐ＿ＯＦとして出力する。なお、適応オフセットフィルタ処理部８２の構成は、適応オフセットフィルタ処理部６２と同一のため、ここでは説明を省略する。ここで図示されない適応オフセットフィルタ処理部８２に含まれるオフセット情報格納部に格納される各オフセットは、オフセット属性設定部８１５によって設定されるオフセット値域に制限される。
【０２８８】
〔実施の形態２〕
実施の形態１では、符号化データ＃１に含まれるsao_offset[sao_curr_depth][ys][xs][i]は、適応オフセットフィルタによるオフセットフィルタ処理において、対象ＱＡＯＵに含まれる各画素に加算されるオフセットの具体的な値を表すシンタックスであるものとした。
【０２８９】
一方で、発明者は、オフセットフィルタ処理に用いられるオフセットの値を予測符号化、すなわち、オフセットの値と当該オフセットの値の予測値とを用いて算出されるオフセット残差を符号化することによって、符号化データの符号量を更に削減することができるとの知見を得た。
【０２９０】
本実施の形態では、予測符号化されたオフセットし、オフセットフィルタ処理を行う動画像復号装置と、オフセットフィルタ処理に用いたオフセットを予測符号化する動画像符号化装置について、図１９〜図２１を参照して説明する。なお、実施の形態１において既に説明した部分については説明を省略する。
【０２９１】
（符号化データ）
本実施の形態に係る符号化データは、実施の形態１に係る符号化データ＃１に含まれるsao_offset[sao_curr_depth][ys][xs][i]に代えて、オフセット残差sao_offset_residual[sao_curr_depth][ys][xs][i]を含んでいる。本実施の形態に係る符号化データのその他の構成は、実施の形態１に係る符号化データ＃１の構成と同様である。以下では、本実施の形態に係る符号化データを符号化データ＃３と表記することもある。
【０２９２】
（sao_offset_residual）
オフセット残差sao_offset_residual[sao_curr_depth][ys][xs][i]は、本実施の形態に係る適応オフセットフィルタによるオフセットフィルタ処理において対象ＱＡＯＵに含まれる各画素に加算されるオフセットの値と、該オフセットの値の予測値との重みつき差分値であり、sao_offset_residual[sao_type_idx][class_idx]とも表記する。
【０２９３】
対象ＱＡＯＵに含まれる対象画素に加算されるオフセットをOffset[sao_type_idx][class_idx]と表記したとき、オフセット残差sao_offset_residual[sao_type_idx][class_idx]は、
sao_offset_residual[sao_type_idx][class_idx]
= Offset[sao_type_idx][class_idx] 
- a*pred_offset[merge_tbl[sao_type_idx]][class_idx]
によって与えられる。ここで、ａは、予測値pred_offsetに乗ぜられる重み係数であり、merge_tblは、sao_type_idxを引数とする関数である。a及びmerge_tblの具体例については後述するためここでは説明を省略する。
【０２９４】
（動画像復号装置）
本実施の形態に係る動画像復号装置は、実施の形態１に係る動画像復号装置１の備える適応オフセットフィルタ６０に代えて、適応オフセットフィルタ６０’を備えている。本実施の形態に係る動画像復号装置のその他の構成は、実施の形態１に係る動画像復号装置１の構成と同様である。
【０２９５】
図１９は、本実施の形態に係る適応オフセットフィルタ６０’の構成を示すブロック図である。図１９に示すように、適応オフセットフィルタ６０’は、適応オフセットフィルタ６０の備えるオフセット情報復号部６１１に代えて、オフセット情報復号部６１１’を備えている。
【０２９６】
（オフセット情報復号部６１１’）
オフセット情報復号部６１１’は、符号化データ＃３に含まれているＱＡＯＵ情報を参照し、ＱＡＯＵ情報に含まれているオフセット情報ＯＩを復号する。また、オフセット情報ＯＩを復号することによって得られたオフセット残差sao_offset_residual[sao_type_idx][class_idx]と、予測値pred_offset[merge_tbl[sao_type_idx]][class_idx]とを用いて、適応オフセットフィルタ処理に用いられるオフセットOffset[sao_type_idx][class_idx]を、
Offset[sao_type_idx][class_idx]
=a*pred_offset[merge_tbl[sao_type_idx]][class_idx]
+ sao_offset_residual[sao_type_idx][class_idx]
によって算出し、算出したオフセットOffset[sao_type_idx][class_idx]を、オフセット情報格納部６２１に格納する。ここで、pred_offset[merge_tbl[sao_type_idx]][class_idx]は、Offset[sao_type_idx][class_idx]の予測値である。merge_tbl[sao_type_idx]は、sao_type_idx＝１〜６に対して、インデックスが与えられるテーブルであり、１つ以上のsao_type_idxを同一のグループとしてみなすことが可能である。
【０２９７】
（pred_offsetの具体例１）
pred_offset[merge_tbl[sao_type_idx]][class_idx]の第１の具体例について説明する。本例では、予測値pred_offset[merge_tbl[sao_type_idx]][class_idx]を、
pred_offset[merge_tbl[sao_type_idx]][class_idx]
= Offset'[sao_type_idx][class_idx]
によって定める。ここで、Offset'[sao_type_idx][class_idx]は、復号済みのオフセットであって、オフセットタイプインデックスsao_type_idx、及び、クラスインデックスclass_idxに関連付けられたオフセットを表している。
【０２９８】
このように、本例では、Offset[sao_type_idx][class_idx]の予測値として、復号済みのオフセットであって、オフセットタイプインデックスsao_type_idx、及び、クラスインデックスclass_idxに関連付けられたオフセットOffset'[sao_type_idx][class_idx]を用いる。
【０２９９】
（pred_offsetの具体例２）
pred_offset[merge_tbl[sao_type_idx]][class_idx]の第２の具体例について説明する。本例では、予測値pred_offset[merge_tbl[sao_type_idx]][class_idx]を、
pred_offset[merge_tbl[sao_type_idx]][class_idx]
= (pred_offset'[merge_tbl[sao_type_idx]][class_idx]*W1
+ Offset'[sao_type_idx][class_idx]*W2) >> log2(W1+W2)
によって定める。ここで、pred_offset'[merge_tbl[sao_type_idx]][class_idx]は、復号済みのオフセットOffset'[sao_type_idx][class_idx]を算出する際に用いた予測値を表している。また、「*」は、積をとる演算記号を表しており、「>>」は右ビットシフトを表している。また、W1及びW2は、それぞれ重み係数を表しており、例えば、W1=3、W2=１ととることができる。W1及びW2の具体的な値は、符号化効率がより高くなるように定めればよい。
【０３００】
上式から明らかなように、本例では、pred_offsetを求めるために、pred_offset'及びOffset'を参照し、pred_offset'を求めるためにpred_offset''及びOffset''を参照し、．．．のように復号済みの予測値及びオフセットが再帰的に参照されるので、pred_offsetには、復号済みの複数のオフセットが寄与することになる。したがって、予測値の過度な変動が抑制される。これにより、例えば、ノイズの影響によって適切でない予測値が算出されるような場合であっても、そのような適切でない予測値の影響を抑制することができるので、符号化効率の向上を図ることが出来る。
【０３０１】
（pred_offsetの具体例３）
pred_offset[merge_tbl[sao_type_idx]][class_idx]の第３の具体例について説明する。本例では、予測値pred_offset[merge_tbl[sao_type_idx]][class_idx]を、
pred_offset[merge_tbl[sao_type_idx]][class_idx]
= clip3(-th、 th、 pred_offset[merge_tbl[sao_type_idx]][class_idx])
によって定める。ここで、clip3(A、B、C)は、値Ｃを下限値Ａ及び上限値Ｂでクリップすることを示している。また、clip3の引数のpred_offset[merge_tbl[sao_type_idx]]は、例えば、上記具体例１または２のように定められるものとする。また、閾値thは、例えば、画素値のビット深度bit_depthに依存して以下のように定められる。
【０３０２】
th = 4 (bit_depth = 8)
th = 8 (bit_depth > 8)
このように、本例では、上限値及び下限値でクリップした予測値を用いることによって、大きすぎる予測値や小さすぎる予測値が生じることがないので、符号化効率の向上を図ることが出来る。また、上限値及び下限値の絶対値は、画素値のビットが大きいときに大きくなるように設定されているので、画素値のビット深度に応じて、適切なクリップ処理を行うことができ、画質の劣化を防止することができる。
【０３０３】
（merge_tblの具体例１）
図２０（ａ）は、関数merge_tbl[sao_type_idx]の第１の具体例を示す表である。図２０（ａ）に示すように、本例に係るmerge_tbl[sao_type_idx]は、sao_type_idx＝０のときには値をとらず、sao_type_idx＝１〜６のとき、それぞれ、０〜５の値をとる。したがって、本例に係るmerge_tbl[sao_type_idx]は、
merge_tbl[sao_type_idx] = sao_type_idx - 1
と表現することもできる。
【０３０４】
本例に係るmerge_tbl[sao_type_idx]を用いることによって、オフセット情報復号部６１１’は、予測値pred_offsetを、各々のsao_type_idx及び各々のclass_idxに対して個別に定めるので、オフセット残差sao_offset_residualの符号量を削減することができる。
【０３０５】
（merge_tblの具体例２）
図２０（ｂ）は、関数merge_tbl[sao_type_idx]の第２の具体例を示す表である。図２０（ｂ）に示すように、本例に係るmerge_tbl[sao_type_idx]は、エッジオフセット（sao_type_idx＝１〜４）のとき、０の値をとり、バンドオフセット（sao_type_idx＝５〜６）のとき、１〜２の値をとる。
【０３０６】
例えば、先のオフセットの算出の際にsao_type_idx＝１（merge_tbl[sao_type_idx=1]=0）及びclass_idx＝１が指定され、次のオフセットの算出の際にsao_type_idx＝２（merge_tbl[sao_type_idx=2]=0）及びclass_idx＝１が指定されたとすると、当該次のオフセットを算出する際に用いられる予測値は、当該先のオフセットの算出の際に用いられた予測値と同じものとなる。
【０３０７】
本例に係るmerge_tbl[sao_type_idx]を用いることによって、オフセット情報復号部６１１’は、エッジオフセットが指定された場合、及びバンドオフセットが指定された場合の各々について、以下の処理を行うことになる。
【０３０８】
・エッジオフセットが指定された場合
復号対象のオフセットに関連付けられたクラスと同じクラスの復号済みのオフセットから当該復号対象のオフセットの予測値を算出する。ここで、復号対象のオフセットと予測値とはクラスが同じであれば、オフセットタイプは異なっていてもよい。したがって、あるオフセットタイプのオフセットを算出するために設定された予測値を、当該あるオフセットとは異なるオフセットタイプのオフセットを算出するために用いることができるので、予測値を設定するための処理が軽減される。
【０３０９】
・バンドオフセットが指定された場合
復号対象のオフセットに関連付けられたオフセットタイプ及びクラスと同じオフセットタイプ及びクラスのオフセットから当該復号対象のオフセットの予測値を算出する。
【０３１０】
本例に係るmerge_tbl[sao_type_idx]を用いれば、処理量を削減しつつ適切な予測値を算出することができる。
【０３１１】
（係数ａの具体例）
予測値pred_offsetに乗ぜられる重み係数ａは、オフセットタイプによらずに１を用いてもよいし、オフセットタイプに依存して異なる値を用いてもよい。
【０３１２】
例えば、
ａ＝１（エッジオフセットのとき）
ａ＝０．５（バンドオフセットのとき）
としてもよい。より一般には、エッジオフセットが指定された場合の係数ａを、ａ（ｅｄｇｅ）と表し、バンドオフセットが指定された場合の係数ａを、ａ（ｂａｎｄ）と表すことにすると、
ａ（ｅｄｇｅ）＞ａ（ｂａｎｄ）
を満たすものを用いればよい。
【０３１３】
発明者は、エッジオフセットが指定される場合の、復号済みのオフセットと復号対象のオフセットとの間の相関は、バンドオフセットが指定される場合の、復号済みのオフセットと復号対象のオフセットとの間の相関よりも大きいことを見出した。上記の具体例では、復号済みのオフセットと復号対象のオフセットとの相関の影響を適切に取り込むことができるので、オフセット残差の符号量が削減される。
【０３１４】
（動画像符号化装置）
本実施の形態に係る動画像符号化装置は、実施の形態１に係る動画像符号化装置２の備える適応オフセットフィルタ８０に代えて、適応オフセットフィルタ８０’を備えている。本実施の形態に係る動画像符号化装置のその他の構成は、実施の形態１に係る動画像符号化装置２の構成と同様である。
【０３１５】
図２１は、本実施の形態に係る適応オフセットフィルタ８０’の構成を示すブロック図である。図２１に示すように、適応オフセットフィルタ８０’は、適応オフセットフィルタ８０の備える各部に加えて、オフセット残差導出部８１４を備えている。
【０３１６】
（オフセット残差導出部８１４）
オフセット残差導出部８１４は、オフセット情報選択部８１３から供給されるオフセットと、当該オフセットの予測値との差分をとることによって、オフセット残差を算出する。当該オフセット残差は、ＱＡＯＵ情報の一部として、可変長符号符号化部２２によって符号化される。
【０３１７】
オフセット残差導出部８１４により設定される予測値は、本実施の形態に係る動画像復号装置の備えるオフセット情報復号部６１１’により設定される予測値と同様であるので、ここでは説明を省略する。
【０３１８】
（付記事項１）
本発明は以下のように記載することもできる。
【０３１９】
本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域におけるオフセット属性を設定するオフセット属性設定手段と、上記設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを復号するオフセット復号手段と、上記入力画像の各画素値に上記オフセットを加算するフィルタ手段とを備えていることを特徴としている。
【０３２０】
上記のように構成された画像フィルタ装置によれば、上記オフセット属性設定手段により、符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域におけるオフセット属性を設定し、設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを上記オフセット復号手段により復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【０３２１】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【０３２２】
なお、上記オフセットタイプ指定情報は、上記入力画像毎に定められているものであってもよいし、上記単位領域毎に定められているであってもよい。また、上記入力画像の所定のセット毎に定められているものであってもよいし、上記単位領域の所定のセット毎に定められているものであってもよい。
【０３２３】
また、上記オフセットタイプ指定情報は、各単位領域における上記入力画像の画素値のビット深度を含み、上記オフセット復号手段は、上記画素値のビット深度に応じたビット幅を有するオフセットを復号することが好ましい。
【０３２４】
上記の構成によれば、上記オフセット復号手段は、上記画素値のビット深度に応じたビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【０３２５】
なお、上記オフセットタイプ指定情報は、各単位領域における上記入力画像の画素値のビット深度を含み、上記オフセット復号手段は、上記ビット深度に応じた値域を表現可能なビット幅を有するオフセットを復号する構成としてもよい。
【０３２６】
上記の構成によれば、上記オフセット復号手段は、各単位領域における上記入力画像の画素値のビット深度に応じた値域を表現可能なビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【０３２７】
なお、上記ビット深度に応じた値域を表現可能なビット幅とは、値域の範囲に含まれる値を２進数で表現した時のビット幅を指し、例えば値域が-23〜23-1のときは表現可能なビット幅は４ビットである。
【０３２８】
また、上記復号されたオフセットは量子化された値であり、上記フィルタ手段は、上記オフセット属性に含まれるパラメータを用いて上記オフセットを逆量子化した値を上記各画素値に加算することが好ましい。
【０３２９】
上記の構成によれば、上記復号されたオフセットは量子化された値であり、上記フィルタ手段は、上記オフセット属性に含まれるパラメータを用いて上記オフセットを逆量子化した値を上記各画素値に加算するので、上記オフセット属性に含まれるパラメータに応じたオフセットが各画像値に加算される。
【０３３０】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、符号化効率を向上させることができる。
【０３３１】
なお、上記オフセットタイプ指定情報は、画素値のシフト値を含み、上記フィルタ手段は、上記オフセットに替えて、該シフト値を用いて上記オフセットを逆量子化した値を加算する構成としてもよい。
【０３３２】
上記の構成によれば、上記オフセットタイプ指定情報は、画素値のシフト値を含み、上記フィルタ手段は、上記オフセットに替えて、該シフト値を用いて上記オフセットを逆量子化した値を加算するので、画素値のシフト値に応じたオフセットを得ることができる。したがって、オフセットを格納しておくためのメモリサイズを削減しつつ、符号化効率を向上させることができる。
【０３３３】
なお、画素値のシフト値とは、画素ビット深度とオフセットのビット深度の差分値のことを指し、該シフト値を用いて上記オフセットを逆量子化するとは、上記オフセットを該シフト値だけ左側へビットシフトを行い、オフセットのビット深度から画素ビット深度へ変換することを指す。
【０３３４】
また、上記オフセットタイプ指定情報は、上記入力画像に対して定まるものであることが好ましい。
【０３３５】
上記の構成によれば、オフセットタイプ指定情報は、上記入力画像に対して定まるものであるため、上記画像フィルタ装置は、上記入力画像に対して、適切なオフセット処理を行うことができる。
【０３３６】
また、本発明に係るオフセット復号装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを復号するオフセット復号装置であって、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えていることを特徴としている。
【０３３７】
上記のように構成されたオフセット復号装置によれば、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えているので、各オフセットをそのまま符号化する場合に比べて、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【０３３８】
また、上記入力画像は、複数の単位領域から構成されており、上記オフセット残差復号手段は、各オフセット残差を、単位領域毎に定まるオフセットタイプ及び画素毎に定まるオフセットクラスに関連付けて復号し、上記予測値導出手段は、各オフセットの予測値を、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出する、ことが好ましい。
【０３３９】
上記の構成によれば、各オフセットの予測値を、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出するので、予測精度が向上する。したがって、上記の構成によれば、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【０３４０】
また、上記入力画像は、複数の単位領域から構成されており、上記オフセット残差復号手段は、各オフセット残差を、単位領域毎に定まるオフセットタイプ及び画素毎に定まるオフセットクラスに関連付けて復号し、上記予測値導出手段は、各オフセットの予測値を、該オフセットに関連付けられたオフセットタイプが第１のオフセットタイプ群に属している場合に、該オフセットと同一の第１のオフセットタイプ群及び同一のオフセットクラスに関連付けられた復号済みのオフセットから導出し、該オフセットに関連付けられたオフセットタイプが第２のオフセットタイプ群に属している場合に、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出する、ことが好ましい。
【０３４１】
上記の構成によれば、各オフセットの予測値を、該オフセットに関連付けられたオフセットタイプが第１のオフセットタイプ群に属している場合に、該オフセットと同一のオフセットタイプに関連付けられた復号済みのオフセットから導出し、該オフセットに関連付けられたオフセットタイプが第２のオフセットタイプ群に属している場合に、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出するので、処理量を削減しつつ、予測精度を向上させることができる。したがって、上記の構成によれば、処理量を削減しつつ、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【０３４２】
なお、上記第１のオフセットタイプとは、例えば、当該第１のオフセットタイプに関連付けられた単位領域における各画素が、例えば、該画素の近傍にエッジの態様に応じて、複数のクラスの何れかに分類されるものを指し、上記第２のオフセットタイプとは、当該第２のオフセットタイプに関連付けられた単位領域における各画素が、例えば、該画素の画素値に応じて、複数のクラスの何れかに分類されるものを指す。
【０３４３】
また、上記オフセット算出手段は、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差の線形関数として算出するものであり、上記予測値に乗ぜられる係数は、上記オフセットに関連付けられたオフセットタイプが第１のオフセットタイプ群に属している場合と、上記オフセットに関連付けられたオフセットタイプが第２のオフセットタイプ群に属している場合とで異なっている、ことが好ましい。
【０３４４】
上記の構成によれば、上記予測値に乗ぜられる係数は、上記オフセットに関連付けられたオフセットタイプが第１のオフセットタイプ群に属している場合と、上記オフセットに関連付けられたオフセットタイプが第２のオフセットタイプ群に属している場合とで異なっているので、オフセットタイプに応じて、より適切な係数を用いて上記オフセットを算出することができる。これにより符号化効率の向上を図ることができる。
【０３４５】
また、上記予測値導出手段は、各オフセットの予測値を、復号済みのオフセットと該復号済みのオフセットの予測値との加重平均をとることによって導出する、ことが好ましい。
【０３４６】
上記の構成によれば、各オフセットの予測値を、復号済みのオフセットと該復号済みのオフセットの予測値との加重平均をとることによって導出するので、各オフセットの予測値には、復号済みの複数のオフセットが寄与することになる。したがって、予測値の過度な変動が抑制される。これにより、例えば、ノイズの影響によって適切でない予測値が算出された場合であっても、そのような適切でない予測値の影響を抑制することができるので、符号化効率の向上を図ることが出来る。
【０３４７】
また、上記予測値導出手段は、導出した各予測値を、入力画像における各画素値のビット深度に応じた上限値及び下限値でクリップするクリップ手段を備えている、ことが好ましい。
【０３４８】
上記の構成によれば、導出した各予測値を、入力画像における各画素値のビット深度に応じた上限値及び下限値でクリップするので、大きすぎる予測値や小さすぎる予測値が生じることがなく、符号化効率の向上を図ることが出来る。
【０３４９】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって参照される画素値、または、上記算出手段によって算出された差分値を所定のシフト値だけ右ビットシフトするビットシフト手段と、上記ビットシフト手段によって右ビットシフトされた差分値と０との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【０３５０】
上記のように構成された画像フィルタ装置によれば、右ビットシフトされた差分値と０との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【０３５１】
また、上記所定のシフト値は、上記対象画素の画素値のビット深度と正の相関を有している、ことが好ましい。
【０３５２】
上記の構成によれば、上記所定のシフト値は、上記対象画素の画素値のビット深度と正の相関を有しているので、符号化効率の向上をより効果的に図ることができる。
【０３５３】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって算出された差分値と、予め定められた第１及び第２の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【０３５４】
上記のように構成された画像フィルタ装置は、上記算出手段によって算出された差分値と、予め定められた第１及び第２の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【０３５５】
また、上記第１及び第２の閾値の絶対値は、上記対象画素の画素値のビット深度と正の相関を有している、ことが好ましい。
【０３５６】
上記の構成によれば、上記第１及び第２の閾値の絶対値は、上記対象画素の画素値のビット深度と正の相関を有しているので、符号化効率の向上をより効果的に図ることができる。
【０３５７】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像に作用する画像フィルタ装置であって、第１及び第２のオフセットタイプのうち、入力画像における対象画素を含む対象単位領域が属するオフセットタイプを決定する決定手段と、上記対象単位領域の属するオフセットタイプ、及び上記対象画素の画素値に応じて、上記対象画素を、オフセットを加算しないオフセットクラス、及びオフセットを加算する複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記対象単位領域の属するオフセットタイプ及び上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えており、上記分類手段は、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第１及び上記第２のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類する、ことを特徴としている。
【０３５８】
上記のように構成された画像フィルタ装置によれば、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第１及び上記第２のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類するので、ブロックノイズを効果的に除去することができる。したがって、上記の構成によれば、符号化効率の向上を図ることができる。
【０３５９】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記オフセットタイプに応じて、異なるビット幅を有するオフセットを決定すると共に、該オフセットを符号化するオフセット符号化手段と、上記入力画像の各画素値に上記決定されたオフセットを加算するフィルタ手段とを備えていることを特徴としている。
【０３６０】
上記のように構成された画像フィルタ装置によれば、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定し、決定されたオフセットタイプに応じて、異なるビット幅を有するオフセットを決定し、決定されたオフセットを、上記入力画像の各画素に加算する。また、決定されたオフセットを符号化する。
【０３６１】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。また、上記の構成によれば、符号化データの符号量が削減されるので、符号化効率が向上する。
【０３６２】
また、本発明に係るオフセット符号化装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを符号化するオフセット符号化装置であって、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段と、を備えていることを特徴としている。
【０３６３】
上記のように構成されたオフセット符号化装置によれば、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段とを備えているので、符号化データの符号量を削減することができる。
【０３６４】
また、本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、各単位領域が属するオフセットタイプを指定するオフセットタイプ指定情報と、該オフセットタイプに応じて異なるビット幅を有するオフセットとを含んでおり、上記画像フィルタは、上記符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号することを特徴としている。
【０３６５】
上記のように構成された符号化データは、オフセットタイプに応じて異なるビット幅を有するオフセットを含んでいるので、符号化データの符号量が削減される。また、上記符号化データを復号する画像フィルタは、上記オフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【０３６６】
なお、上記オフセットタイプ指定情報は、上記入力画像毎に定められているものであってもよいし、上記単位領域毎に定められているものであってもよい。また、上記入力画像の所定のセット毎に定められているものであってもよいし、上記単位領域の所定のセット毎に定められているものであってもよい。
【０３６７】
〔実施の形態３〕
まず、本実施の形態におけるオフセット情報ＯＩについて、図２３を参照して説明する。図２３（ａ）は、オフセット情報ＯＩ（図２３（ａ）において“sao_offset_param()”と表記）のシンタクスを示す図である。
【０３６８】
図２３（ａ）に示すように、オフセット情報ＯＩには、パラメータ“sao_type_idx[sao_curr_depth][ys][xs]”が含まれている。また、パラメータ“sao_type_idx[sao_curr_depth][ys][xs]”が「０」でない場合、オフセット情報ＯＩには、パラメータ“sao_offset[sao_curr_depth][ys][xs][i]”が含まれている。
【０３６９】
（sao_curr_depth、ys、xs）
“sao_type_idx”および“sao_offset”の引数である“sao_curr_depth”は、ＱＡＯＵの分割深度を表すパラメータであり、“ys”および“xs”は、それぞれ、ＱＡＯＵ（または後述するＱＡＯＭＵ）のｙ方向の位置およびｘ方向の位置を表すためのパラメータである。
【０３７０】
“sao_curr_depth”の値に応じたＱＡＯＵの分割の態様については、図４を参照して上記で説明したとおりである。
【０３７１】
図２３（ｂ）は、ＱＡＯＵ情報（図２３（ｂ）において“sao_split_param()”と表記）のシンタクスを示す図である。図２３（ｂ）のシンタクスで示すように、分割深度“sao_curr_depth”が所定の“saoMaxDepth”で設定される最大値よりも小さければ、パラメータ“sao_split_flag”によって、ＱＡＯＵがさらに分割されるかどうかが選択される。分割される場合には、次の階層深度の“sao_split_param()”が再帰的に呼び出される。分割深度が最大値に達した（“sao_curr_depth”が“saoMaxDepth”より小さくない）場合には、“sao_split_flag[sao_curr_depth][ys][xs]”には「０」が設定され、それ以上の分割は行われない。
【０３７２】
図４４には、オフセット情報およびＱＡＯＵ情報のシンタクスの別の例を示す。
【０３７３】
図４４（ａ）は、オフセット情報のシンタクスである。図２３（ａ）と同様の構成となっているが、“sao_offset_param()”の引数および、“sao_split_flag”、“sao_type_idx”、“sao_offset”の配列の添字に、色成分を意味する値である“component”が追加されている。これにより、輝度および色差などの色成分毎に異なるＱＡＯＵ分割を行い、かつ、異なるオフセットを適用することができる。
【０３７４】
図４４（ｂ）は、ＱＡＯＵ情報のシンタクスである。図４４（ａ）と同じく、図２３（ｂ）に引数として色成分“component”を追加したシンタクスである。
【０３７５】
図４４（ｃ）は、図４４（ａ）および図４４（ｂ）のシンタクスを呼び出す、適応オフセットフィルタ全体のシンタクスである。パラメータ“sao_flag”は適応オフセットフィルタを適用するか否か選択するフラグであり、当該フラグが真である場合のみ、後続の適応オフセットフィルタに関するパラメータが用いられる。当該フラグが真である場合、各色成分に対して、シンタクス“sao_split_param()”および“sao_offset_param()”が最上位階層を指定して呼び出される。最上位階層であるため、各シンタクスに与えられる引数は、sao_curr_depth＝０、ys＝０、xs＝０ である。また、“component”の値は、輝度（Ｙ）の場合は０、色差（Ｃｂ）の場合は１、色差（Ｃｒ）の場合は２として、各色成分を区別している。なお、componentの値は、処理対象の色成分が区別できれば他の値でもよい。
【０３７６】
なお、色差（Ｃｂ）および色差（Ｃｒ）については、各々に対応するフラグ“sao_flag_cb”“sao_flag_cr”を用いて、適応オフセットフィルタを適用するか否かを選択し、適用しない場合には当該色成分に対応するＱＡＯＵ情報およびオフセット情報を格納しない。
【０３７７】
上記の図４４のシンタクスでは引数“component”が追加されているため、上記図２３を用いた説明において、引数[sao_curr_depth][ys][xs]を[sao_curr_depth][ys][xs][component]に置き換えて処理する。以降の説明でも同様である。
【０３７８】
（動画像復号装置１’）
次に、本実施の形態に係る動画像復号装置１’について、図２２および図２４〜図２９を参照して説明する。なお、上記の実施の形態において示した部材と同一の機能を有する部材には、同一の符号を付し、その説明を省略する。
【０３７９】
動画像復号装置１’は、動画像復号装置１と同様に、その一部に、Ｈ．２６４／ＭＰＥＧ−４．ＡＶＣに採用されている方式、ＶＣＥＧ（Video Coding Expert Group）における共同開発用コーデックであるＫＴＡソフトウェアに採用されている方式、その後継コーデックであるＴＭｕＣ（Test Model under Consideration）ソフトウェアに採用されている方式、および、ＨＭ（HEVC TestModel）ソフトウェアに採用されている技術を含んでいる。また、動画像復号装置１’は動画像復号装置１における適応オフセットフィルタ６０の代わりに適応オフセットフィルタ６０’が設けられている点が異なり、他の構成は同様である。
【０３８０】
（適応オフセットフィルタ６０’）
次に、適応オフセットフィルタ６０’の詳細について、図２２を参照して説明する。図２２は、適応オフセットフィルタ６０’の構成を示すブロック図である。図２２に示すように、適応オフセットフィルタ６０’は、適応オフセットフィルタ情報復号部６１’および適応オフセットフィルタ処理部６２’を含む構成である。
【０３８１】
また、図２２に示すように、適応オフセットフィルタ情報復号部６１’は、オフセット情報復号部６１１、およびＱＡＯＵ構造復号部６１２を含む構成である。
【０３８２】
オフセット情報復号部６１１は、符号化データ＃１に含まれているＱＡＯＵ情報を参照し、ＱＡＯＵ情報に含まれているオフセット情報ＯＩを復号する。また、オフセット情報ＯＩを復号することによって得られた“sao_type_idx[sao_curr_depth][ys][xs][component]”および“sao_offset[sao_curr_depth][ys][xs][i]”の各値を、それぞれの引数（sao_curr_depth、ys、xs）および（sao_curr_depth、ys、xs、i）に関連付けて、オフセット情報格納部６２１に供給する。
【０３８３】
より詳細には、オフセット情報復号部６１１は、符号化データ＃１からコードを復号し、復号したコードを“sao_type_idx”の値に変換して、引数に関連付けてオフセット情報格納部６２１に供給する。ここで、オフセット情報復号部６１１は、コードの復号方法、およびコードから“sao_type_idx”の値への変換を、処理対象のＱＡＯＵの階層の深度によって変更している。このＱＡＯＵの階層の深度などの条件をパラメータ条件と呼ぶ。一般のパラメータ条件に応じたオフセット情報の復号については、図４１、図４２を用いて後述する。
【０３８４】
コードの復号方法は、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合と処理対象のＱＡＯＵの階層の深度が閾値以上の場合とで、異なる最大値を用いて行うものであってもよいし、処理対象のＱＡＯＵの階層の深度が閾値以上の場合のみ最大値を用いるものであってもよい。また、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合と処理対象のＱＡＯＵの階層の深度が閾値以上の場合とで、異なるバイナリゼーションを用いて行うものであってもよい。さらに、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合と処理対象のＱＡＯＵの階層の深度が閾値以上の場合とで、異なるコンテキストを用いるものであってもよい。
【０３８５】
例えば、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合には、可変長符号化（ue(v)）でコードを復号し、処理対象のＱＡＯＵの階層の深度が閾値以上の場合には、オフセットタイプの数に応じたtruncated符号化（te(v)）で、コードを復号してもよい。また、オフセットタイプ数が、２のべき乗であれば、固定長符号化で、コードを復号してもよい。オフセットタイプ数が４つであれば、２ｂｉｔで表現可能であるので、２ｂｉｔで固定長符号化とすることができる。
【０３８６】
また、オフセット情報復号部６１１は、復号したコードから“sao_type_idx”の値への変換は、図２５に示すような変換テーブル８０１および変換テーブル８０２を用いて行う。図２５（ａ）の変換テーブル８０１では、２通りの変換パターンを示している。この２通りの変換パターンは、処理対象のＱＡＯＵの階層の深度によって、使い分けられる。すなわち、オフセット情報復号部６１１は、処理対象のＱＡＯＵの階層の深度が、閾値よりも小さい場合は、変換テーブル８０１Ａを用い、処理対象のＱＡＯＵの階層の深度が、閾値以上の場合は、変換テーブル８０１Ｂを用いる。
【０３８７】
図２５（ａ）の変換テーブル８０１Ａでは、コード「１」に対しオフセットタイプ「ＥＯ＿０」（“sao_type_idx”＝１）が対応付けられており、コード「２」に対しオフセットタイプ「ＥＯ＿１」（“sao_type_idx”＝２）が対応付けられており、コード「３」に対しオフセットタイプ「ＥＯ＿２」（“sao_type_idx”＝３）が対応付けられている。以下、コード４〜６についても同様である。
【０３８８】
また、図２５（ａ）の変換テーブル８０１Ｂでは、コード「１」に対しオフセットタイプ「ＥＯ＿０」（“sao_type_idx”＝１）が対応付けられており、コード「２」に対しオフセットタイプ「ＢＯ＿０」（“sao_type_idx”＝５）が対応付けられており、コード「３」に対しオフセットタイプ「ＢＯ＿１」（“sao_type_idx”＝６）が対応付けられている。そして、変換テーブル８０１Ｂでは、コード４〜６は用いられていない。
【０３８９】
このように、変換テーブル８０１Ａでは、適応オフセット（ＳＡＯ）に用いるオフセットタイプの全てが含まれているのに対し、変換テーブル８０１Ｂでは、適応オフセット（ＳＡＯ）に用いるオフセットタイプのうち、一部のオフセットタイプしか含まれていない。よって、処理対象のＱＡＯＵの階層の深度が、閾値以上の場合には、一部のオフセットタイプしか用いることができないことになる。
【０３９０】
これは、深い階層では、ＱＡＯＵの面積が小さくなるため、ＱＡＯＵ内の画素値の特性が一様に近くなり、多くのタイプを用いなくとも、適切なオフセットを導出できるためである。また、これにより、用いるオフセットタイプ数を減らすことができるので、必要なメモリ量を減らすことができるとともに、オフセットタイプを示す符号化データのデータ長等を短くすることにより、符号化効率を向上させることができる。
【０３９１】
なお、変換テーブル８０１Ｂにおけるコードとオフセットタイプとの対応付けが、変換テーブル８０１Ａにおけるコードとオフセットタイプとの対応付けの順序と同じなのであれば、変換テーブル８０１Ａのみを用いる構成であってもよい。
【０３９２】
図２５（ｂ）の変換テーブル８０２は、変換テーブル８０１Ｂに代えて用いることができる、変換テーブル８０１Ｂと同様な変換テーブルの種々の例を示している。いずれの変換テーブルも、変換テーブル８０１Ｂ同様にタイプの種類が制限されている。また、空欄は該当するコードが用いられないことを示す。
【０３９３】
変換テーブル８０２Ａは、エッジオフセットのみを用いる例でありバンドオフセットを含まない。エッジオフセットのオフセット数は通常４個であり、バンドオフセットのオフセット数は通常１６個である。このように、エッジオフセットのオフセット数はバンドオフセットのオフセット数と比べ少ない。このため、バンドオフセットの使用を制限することにより、オフセットの保持に用いるメモリ量を削減することができる。特に、階層が深い場合、オフセットが増加するためメモリ量が大きくなる。また、階層が深い場合には、バンドオフセットの選択率が低下する。そのため、階層をパラメータ条件として、階層が深い場合にエッジオフセットのみを備える変換テーブル８０２Ａを用い、階層が浅い場合には、エッジオフセットとバンドオフセットを備える変換テーブル（例えば８０１Ａ）を用いることによって、符号化効率を低下させることなくメモリ量の削減が可能となる。また、符号化装置において不要な選択肢のコスト計算を省くことができるため処理量を低減することができる。
【０３９４】
変換テーブル８０２Ｂは、バンドオフセットのみを用いる例でありエッジオフセットを含まない。バンドオフセットはエッジオフセットに比べ、演算量が小さいこと、対象画素の周囲の画素を用いないため参照画素を保持するためのラインメモリなどが不要である、という特徴を有する。そのため、パラメータ条件に応じて、変換テーブル８０２Ｂを用いることで、上記による効果を得ることができる。変換テーブル８０２Ｃは、１つのバンドオフセット「ＢＯ＿０」（“sao_type_idx”＝５）のみを用いる例である。
【０３９５】
また、変換テーブル８０２Ｄは、変換テーブル８０１Ｂと同様に１つのエッジオフセットと２つのバンドオフセットを用いる例である。具体的には、オフセットタイプ「ＥＯ＿０」（“sao_type_idx”＝１）および「ＢＯ＿０」（“sao_type_idx”＝５）、「ＢＯ＿１」（“sao_type_idx”＝６）を用い、バンドオフセットタイプに優先的に短いコード（小さいコード番号）に対応付けた例である。階層が浅い場合は、階層が深い場合に比べバンドオフセットの選択率が高くなるため、階層をパラメータ条件として、階層が浅い場合に変換テーブル８０２Ｄを用い、使用頻度の高いタイプに短いコードに対応付けることで、符号化効率を向上させることができる。
【０３９６】
なお、図２５に例示した以外にも、パラメータ条件に応じて、コードとオフセットタイプとの対応付けを変更することが可能である。変換テーブル８０１Ａのいずれのエッジオフセットともバンドオフセットとも異なるオフセットタイプを、階層深度などの条件に応じて単独あるいは他のオフセットタイプとともに使用できる。その具体例としては、後述の別の実施形態において説明する、ＥＯとＢＯの特徴を併せ持つオフセットタイプや、従来のエッジオフセット「ＥＯ＿０」と異なる水平サンプル位置でエッジを検出するエッジオフセットや、従来のバンドオフセット「ＢＯ＿０」および「ＢＯ＿１」とは異なるバンド割り当てによるバンドオフセットが挙げられる。
【０３９７】
ＱＡＯＵ構造復号部６１２は、ＱＡＯＵ情報に含まれている“sao_split_flag[sao_curr_depth][ys][xs]”を復号することによって、ＱＡＯＵの分割構造を決定し、決定されたＱＡＯＵの分割構造を表すＱＡＯＵ構造情報を、オフセット情報格納部６２１に供給する。
【０３９８】
また、次に示すようなオフセット属性設定部６１３を備えていてもよい。オフセット属性設定部６１３は、オフセットのシフト値を決定する。符号化データのオフセットは、画素ビット深度（ＰＩＣ＿ＤＥＰＴＨとも呼称する）よりも精度の低いオフセットのビット深度（ＳＡＯ＿ＤＥＰＴＨとも呼称する）で符号化される。すなわち、符号化データ中のオフセットは、量子化されている。シフト値とは、逆量子化を行うために必要なビットシフト量を示す。また、オフセット属性設定部６１３は、オフセットのビット深度とオフセットの値域とを決定する。ここでは、オフセットのビット深度は、オフセット属性設定部６１３に入力される図示されない画素ビット深度（ＰＩＣ＿ＤＥＰＴＨとも呼称する）から決定する。画素ビット深度とは、適応オフセットフィルタ６０’の入力画像を構成する画素値の値域をビット幅で示すものであり、画素ビット深度がＮビットのとき、画素値は０から2N-1の範囲を取る。
【０３９９】
ＳＡＯのビット深度およびシフト値は、以下の式を用いるが、後述するように、パラメータ条件に応じて他の値を用いても良い。
【０４００】
ＳＡＯ＿ＤＥＰＴＨ  ＝  ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、１０）
シフト値  ＝  ＰＩＣ＿ＤＥＰＴＨ―ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、１０）
また、一つの構成として、オフセットの値域（ここでは、最大値）を以下の式で決定する。
【０４０１】
オフセットの値域＝２ＳＡＯ＿ＤＥＰＴＨ−Ｋ−１
但し、Ｋは所定の定数とする（後述）。
【０４０２】
また、図２２に示すように、適応オフセットフィルタ処理部６２’は、オフセット情報格納部６２１、ＱＡＯＵ制御部６２２、オフセットタイプ導出部６２３、クラス分類部６２４、オフセット導出部６２５、およびオフセット加算部６２６を含む構成である。
【０４０３】
オフセット情報格納部６２１は、ＱＡＯＵ構造情報、“sao_type_idx[sao_curr_depth][ys][xs]”、および“sao_offset[sao_curr_depth][ys][xs][i]”に基づいて、各ＱＡＯＵについて指定されたオフセットタイプ、および該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値を管理および格納するものであり、マップメモリおよびリストメモリを備えた構成である。
【０４０４】
マップメモリ、およびリストメモリについて、図２４を参照して説明する。図２４は、マップメモリおよびリストメモリに格納される例を示す図であり、図２４（ａ）はマップメモリに格納されるＱＡＯＵインデックスの一例を説明するための図であり、図２４（ｂ）はリストメモリに格納される情報の一例を説明するための図である。
【０４０５】
マップメモリ６０１には、分割深度に応じて定まる各オフセット最小単位（ＱＡＯＭＵ:Quad Adaptive Offset Minimum Unitとも呼称する）に割り付けられた後述するＱＡＯＵインデックスが格納されている。図２４（ａ）では、対象の処理単位（例えばＬＣＵ）を構成する分割深度３の各ＱＡＯＭＵと各ＱＡＯＭＵに割り付けられたＱＡＯＵインデックスとを示している。なお、図２４（ａ）では、ＱＡＯＵの分割深度を考慮せずに、簡易的にインデックス０〜９をＱＡＯＵに割り付けている。また、図２４（ａ）に示す例においては、ＱＡＯＵインデックス＝Ｉによって指定されるＱＡＯＵをＱＡＯＵＩと表記している。また、図２４（ａ）における細線はＱＡＯＭＵの境界を示しており、太線はＱＡＯＵの境界を示している。
【０４０６】
図２４（ａ）に示すように、ＱＡＯＵ０は、４つのＱＡＯＭＵから構成されており、これら４つのＱＡＯＭＵには、ＱＡＯＵインデックスとして０が割り付けられている。一方、ＱＡＯＵ３は、１つのＱＡＯＭＵから構成されており、このＱＡＯＭＵには、ＱＡＯＵインデックスとして３が割り付けられている。このように、マップメモリには、各ＱＡＯＭＵに割り付けられたＱＡＯＵインデックスが格納されている。
【０４０７】
また、リストメモリ６０２には、各ＱＡＯＵインデックスに対し、該ＱＡＯＵインデックスに関連付けられたオフセットタイプ、および該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値が互いに関連付けられて格納されている。
【０４０８】
具体的に、図２４（ｂ）を参照して説明する。図２４（ｂ）では、ＱＡＯＵインデックス０〜９の各々に関連付けられたオフセットタイプおよび各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示している。図２４（ｂ）における「ｘｘｘ」は、互いに異なり得る具体的な数値を表している。
【０４０９】
また、図２４（ｂ）における「ＢＯ＿１」は、“sao_type_idx”＝５によって指定されるオフセットタイプを表している。また、「ＥＯ＿１」は、“sao_type_idx”＝１によって指定されるオフセットタイプを表している。このように、“sao_type_idx”＝１、２、３、４によって指定されるオフセットタイプであるエッジオフセットをそれぞれ「ＥＯ＿１、２、３、４」とも表記し、“sao_type_idx”＝５、６によって指定されるオフセットタイプであるバンドオフセットをそれぞれ「ＢＯ＿１、２」とも表記する。
【０４１０】
図２４（ｂ）に示すように、オフセットタイプがバンドオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット１〜オフセット１６の合計１６個である。ここで、オフセット１〜オフセット１６は、“sao_type_idx[sao_curr_depth][ys][xs]”の値が「５」または「６」である場合の、“sao_offset[sao_curr_depth][ys][xs][1]”〜“sao_offset[sao_curr_depth][ys][xs][16]”によってそれぞれ指定される値のことを指す。
【０４１１】
一方、オフセットタイプがエッジオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット１〜４の合計４個である。ここで、オフセット１〜４は、“sao_type_idx[sao_curr_depth][ys][xs]”の値が「１、２、３、４」の何れかである場合の、“sao_offset[sao_curr_depth][ys][xs][1]”〜“sao_offset[sao_curr_depth][ys][xs][4]”によってそれぞれ指定される値のことを指す。なお、エッジオフセットの場合、オフセット５〜１６にはなにも格納されない。
【０４１２】
なお、各ＱＡＯＭＵには、ＱＡＯＭＵ番号が付されており、このＱＡＯＭＵ番号によって各ＱＡＯＭＵは互いに識別可能である。以下では、ＱＡＯＭＵ番号がＮQであるＱＡＯＭＵをＱＡＯＭＵＮQとも表記する。
【０４１３】
また、本実施形態では、処理対象のＱＡＯＵの階層によって、オフセットの精度を異ならせるものであってもよい。オフセットの精度に応じて、逆量子化に用いるシフト値も異なる。この場合も、オフセットの精度及びシフト値は、画素ビット深度ＰＩＣ＿ＤＥＰＴＨを用いて導出する。
【０４１４】
オフセットの精度の例としては、例えば、ＱＡＯＵの階層の深度が閾値より小さい場合のオフセットの精度、シフト値を、
ＳＡＯ＿ＤＥＰＴＨ  ＝  ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、１０）
シフト値  ＝  ＰＩＣ＿ＤＥＰＴＨ―ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、１０）
として、ＱＡＯＵの階層の深度が閾値以上である場合のオフセットの精度を、
ＳＡＯ＿ＤＥＰＴＨ  ＝  ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、８）
シフト値  ＝  ＰＩＣ＿ＤＥＰＴＨ―ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、８）
のようにすれば、オフセットの精度を異なるものとすることができる。
【０４１５】
上述したように、オフセットの精度（オフセットのビット深度、ＳＡＯ＿ＤＥＰＴＨ）と、入力画像を構成する画素値の値域をビット幅で表現した画素ビット深度（ＰＩＣ＿ＤＥＰＴＨ）とは、量子化誤差の観点で互いに密接な関係がある。適応オフセットフィルタ６０の出力画像のビット深度は、画素ビット深度ＰＩＣ＿ＤＥＰＴＨであり、ＳＡＯ＿ＤＥＰＴＨは画素に加えるオフセットのビット深度であるので、画素ビット深度を超える精度のオフセットを用いても出力過程で捨てられてしまい、ＳＡＯ＿ＤＥＰＴＨをＰＩＣ＿ＤＥＰＴＨを超えて設定しても意味がない。逆に、ＳＡＯ＿ＤＥＰＴＨがＰＩＣ＿ＤＥＰＴＨよりも小さい場合には、入力画像をフィルタにより補正可能な精度（ＰＩＣ＿ＤＥＰＴＨ）よりも粗い補正しか行うことができないため、フィルタ効果は減少する。
【０４１６】
したがって、量子化されたオフセットを一定のビット幅で表現できるオフセット値域に制限することで、オフセット情報格納部６２１で量子化されたオフセットを格納するためのビット幅を制限することができる。これにより、制限しない場合と比較して、メモリサイズ削減の効果を得ることができる。一方で、過度にオフセット値域を狭くすることは、オフセットが復号画像の歪みを補正する効果を小さくしてしまい、オフセット加算処理によっても復号画像の歪みを除去することができず、符号化効率が低下してしまう。
【０４１７】
そこで、符号化効率が低下しないようにオフセット値域を最適な範囲を設定することにより、メモリの使用量を削減しつつ、フィルタの効果を維持することできる。
【０４１８】
そして、オフセット値域の値を表す最大のビット長をＣＬＩＰ＿ＢＩＴとし、ＣＬＩＰ＿ＢＩＴ＝ＳＡＯ＿ＤＥＰＴＨ−Ｋの計算により、オフセット値域を-2CLIP_BIT-1〜2CLIP_BIT-1-1と定めた場合に、発明者の実験によれば、Ｋ＝４とすると、オフセット値域によりオフセットの範囲を制限しても符号化効率の低下がないことが発見された。
【０４１９】
そして、画素ビット深度＝８の場合、オフセットのビット深度ＳＡＯ＿ＤＥＰＴＨも８であり、ＣＬＩＰ＿ＢＩＴ＝８−Ｋ＝４となる。１つのオフセットが４ビットで格納できることは、８ビットのバイトを単位として扱うソフトウェア等で、１バイトに１つのオフセットをパッキングして格納することが可能であり、簡易にメモリサイズの削減が可能となる。
【０４２０】
そして、設定されるオフセットの精度が、処理対象のＱＡＯＵの階層によって異なる場合、オフセット情報格納部６２１は、処理対象のＱＡＯＵの階層の深度に応じてオフセット格納領域の単位サイズを切り換えて確保している。
【０４２１】
具体的には、処理対象のＱＡＯＵの階層の深度が閾値より小さい場合のオフセットの精度がｎＡビット（例えば、ｎＡ＝８または６）、処理対象のＱＡＯＵの階層の深度が閾値以上の場合のオフセットの精度がｎＢビット（ｎＡ＞ｎＢ、例えば、ｎＢ＝ｎＡ−２）に設定されているとき、オフセット情報格納部６２１は、処理対象のＱＡＯＵの階層の深度が閾値より小さい場合のオフセットを格納する領域をｎＡビット単位で確保し、処理対象のＱＡＯＵの階層の深度が閾値以上の場合のオフセットを格納する領域をｎＢビット単位で確保している。
【０４２２】
なお、処理対象のＱＡＯＵの階層の深度が閾値以上の場合は、オフセット情報格納部６２１に対して、オフセットの読み書きを行うときに、書き込み時は（ｎＡ−ｎＢ）ビット切り下げ、読み出し時は（ｎＡ−ｎＢ）ビット切り上げて入出力を行う構成が好ましい。この構成によれば、他のモジュールにおいてオフセットの精度の差を考慮して処理を行う必要がなくなるためである。
【０４２３】
また、オフセット情報格納部６２１は、処理対象のＱＡＯＵの階層の深度に応じて、必要なクラス数が変わる場合、必要なクラス数に合わせて、確保するリストメモリの領域を切り換える。例えば、後述するように、処理対象のＱＡＯＵの階層の深度が閾値より小さい場合は１６クラスに分類され、処理対象のＱＡＯＵの階層の深度が閾値以上となる場合は８クラスに分類されるバンドオフセットの場合を考える。この場合、処理対象のＱＡＯＵの階層の深度が閾値以上となる場合のクラスの確保に必要なメモリの容量は、処理対象のＱＡＯＵの階層の深度が閾値より小さい場合の半分となる。そこで、オフセット情報格納部６２１は、処理対象のＱＡＯＵの階層の深度が閾値以上となる場合に確保するリストメモリの大きさを、処理対象のＱＡＯＵの階層の深度が閾値より小さい場合の半分に切り換える。
【０４２４】
ＱＡＯＵ制御部６２２は、適応オフセットフィルタ処理部６２’に含まれる各部を制御する。また、ＱＡＯＵ制御部６２２は、ＱＡＯＵ構造情報を参照して、デブロック済復号画像Ｐ＿ＤＢを１または複数のＱＡＯＵに分割し、各ＱＡＯＵを所定の順序でスキャンする。また、処理対象とする対象ＱＡＯＭＵを表すＱＡＯＭＵ番号をオフセットタイプ導出部６２３に供給する。
【０４２５】
オフセットタイプ導出部６２３は、オフセット情報格納部６２１のマップメモリおよびリストメモリを参照し、ＱＡＯＵ制御部６２２から供給されたＱＡＯＭＵ番号によって指定されるオフセットタイプを導出する。また、導出したオフセットタイプを、クラス分類部６２４に供給する。
【０４２６】
クラス分類部６２４は、対象ＱＡＯＵに含まれる各画素を、オフセットタイプ導出部６２３から供給されるオフセットタイプにおいて選択可能な複数のクラスの何れかに分類する。また、当該オフセットタイプと、各画素が分類されたクラスを示すクラスインデックスとをオフセット導出部６２５に供給する。なお、クラス分類部６２４による具体的な分類処理については後述するためここでは説明を省略する。
【０４２７】
オフセット導出部６２５は、オフセット情報格納部６２１のリストメモリを参照し、対象ＱＡＯＵに含まれる各画素について、クラス分類部６２４から供給されるオフセットタイプおよびクラスインデックスによって指定されるオフセットを導出する。さらにオフセット属性設定部６１３によって設定されたシフト値だけ、オフセットを左側へビットシフトするオフセット逆シフト部（不図示）を備える。オフセット逆シフト部は、オフセットのビット深度と画素ビット深度とを合わせるように、該オフセットの逆量子化を行う。このような逆量子化を行うことで、後述するオフセット加算部６２６の加算処理において、同一のビット深度にて、画素値とオフセットの加算を行うことが可能である。各画素について逆量子化したオフセットは、オフセット加算部６２６に供給される。
【０４２８】
オフセット加算部６２６は、対象ＱＡＯＵにおけるデブロック済復号画像Ｐ＿ＤＢの各画素に対して、オフセット導出部６２５から供給されるオフセットを加算する。オフセット加算部６２６は、デブロック済復号画像Ｐ＿ＤＢに含まれる全てのＱＡＯＵに対して処理を行って得られる画像をオフセットフィルタ済復号画像Ｐ＿ＯＦとして出力する。
【０４２９】
次に、クラス分類部６２４による分類処理について、図２６〜２９を参照して説明する。なお、以下では、ＱＡＯＵの階層の深度などの条件をパラメータ条件とする場合を説明するが、一般のパラメータ条件に応じたクラス分類部の構成については図３４を用いて後述する。
【０４３０】
図２６は、適応オフセットフィルタ６０によるオフセット処理を説明するための図であって、（ａ）は、処理対象画素ｘの画素値ｐｉｃ［ｘ］と画素ａまたはｂの画素値との大小関係を示すグラフ、およびその大小関係に応じた関数Ｓｉｇｎの値を示し、（ｂ）は、処理対象画素ｘの画素値と、画素ａおよびｂの画素値との大小関係を示すグラフ、およびその大小関係に応じたＥｇｄｅＴｙｐｅの値を示し、（ｃ）は、（ｂ）に示した各グラフと、ｃｌａｓｓ＿ｉｄｘとの対応を示し、（ｄ）〜（ｆ）は、ＥｇｄｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘへの変換を表す変換テーブルを示している。
【０４３１】
図２７は、適応オフセットフィルタ６０によるオフセット処理を説明するための図であって、（ａ）は“sao_type_idx”＝５であるときのクラス分類を概略的に示し、（ｂ）は“sao_type_idx”＝６であるときのクラス分類を概略的に示している。
【０４３２】
図２８は、適応オフセットフィルタ６０によるオフセット処理を説明するための図であって、（ａ）は処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合のクラス分類を概略的に示し、（ｂ）は処理対象のＱＡＯＵの階層の深度が閾値以上の場合のクラス分類を概略的に示している。
【０４３３】
図２９は、バンドオフセットが指定された場合のクラス分類の一例を示す図であり、（ａ）は、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合のクラス分類の一例を示し、（ｂ）は処理対象のＱＡＯＵの階層の深度が閾値以上の場合のクラス分類の一例を示している。
【０４３４】
（オフセットタイプ＝１〜４（エッジオフセット）のとき）
オフセットタイプ導出部６２３から供給されるオフセットタイプが１〜４の何れかであるときのクラス分類部６２４の処理は、上記で図１０を参照して説明した通りである。
【０４３５】
よって、図２６（ａ）に示すように、画素値ｐｉｃ［ｘ］と画素ａまたはｂの画素値との大小関係において、画素値ｐｉｃ［ｘ］の方が、画素ａまたはｂの画素値よりも小さい場合はＳｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）＝−１、同じ場合はＳｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）＝０、大きい場合はＳｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）＝１となる。なお、図２６（ａ）においてｐｉｃ［ｘ］が付されている黒丸は、処理対象画素ｘの画素値を示すものであり、ｐｉｃ［ｘ］が付されていない黒丸は、処理対象画素ａまたはｂの画素値を示すものである。また、図２６（ａ）における上下方向は、画素値の大小を示している。
【０４３６】
続いて、クラス分類部６２４は、Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）、およびＳｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ｂ］）に基づいて、以下の数式（１−１）によってＥｇｄｅＴｙｐｅを導出する。
【０４３７】
ＥｇｄｅＴｙｐｅ＝Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ａ］）＋Ｓｉｇｎ（ｐｉｃ［ｘ］−ｐｉｃ［ｂ］）＋２      ・・・（１−１）
これにより、図２６（ｂ）に示すように、画素値ｐｉｃ［ｘ］に対し、画素ａおよびｂのいずれの画素値も大きい場合は、ＥｇｄｅＴｙｐｅ＝０となる。また、画素値ｐｉｃ［ｘ］に対し、画素ａおよびｂのうち、一方の画素値が大きく、他方の画素値が同じ場合は、ＥｇｄｅＴｙｐｅ＝１となる。また、画素値ｐｉｃ［ｘ］に対し、画素ａおよびｂのうち、一方の画素値が小さく、他方の画素値が同じ場合は、ＥｇｄｅＴｙｐｅ＝３となる。
また、画素値ｐｉｃ［ｘ］に対し、画素ａおよびｂのいずれの画素値も小さい場合は、ＥｇｄｅＴｙｐｅ＝４となる。また、画素値ｐｉｃ［ｘ］に対し、画素ａおよびｂのうち、一方の画素値が小さく、他方の画素値が大きい場合、または、画素値ｐｉｃ［ｘ］に対し、画素ａおよびｂのいずれの画素値も同じ場合は、ＥｇｄｅＴｙｐｅ＝２となる。
【０４３８】
なお、図２６（ｂ）において、各グラフの中心の黒丸は、処理対象画素ｘの画素値を示しており、両端の黒丸は、画素ａおよびｂの画素値を示している。また、図２６（ｂ）における上下方向は、画素値の大小を示している。
【０４３９】
続いて、クラス分類部６２４は、導出したＥｇｄｅＴｙｐｅに基づいて、処理対象画素ｘが属するべきクラスのクラスインデックス（class_idx）を以下のように導出する。
【０４４０】
ｃｌａｓｓ＿ｉｄｘ＝ＥｏＴｂｌ［ＥｄｇｅＴｙｐｅ］
ここで、ＥｏＴｂｌ［ＥｄｇｅＴｙｐｅ］は、ＥｄｇｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルである。当該変換テーブルＥｏＴｂｌの具体例を図２６（ｄ）〜（ｆ）に示す。
【０４４１】
図２６（ｄ）に示す変換テーブル１００１Ｘは、処理対象のＱＡＯＵの階層の深度によって用いる変換テーブルを変更しない場合の変換テーブルである。
【０４４２】
また、図２６（ｅ）に示す変換テーブル１００１Ａと図２６（ｆ）に示す変換テーブル１００１Ｂとは、処理対象のＱＡＯＵの階層の深度によって用いる変換テーブルを変更する場合の変換テーブルであり、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合は変換テーブル１００１Ａを用い、処理対象のＱＡＯＵの階層の深度が閾値以上の場合は変換テーブル１００１Ｂを用いる。
【０４４３】
処理対象のＱＡＯＵの階層の深度によって用いる変換テーブルを変更しない場合、変換テーブル１００１Ｘに示すように、クラス分類部６２４は、処理対象画素ｘ、画素ａおよび画素ｂから成る領域にエッジが存在しない場合（以下、平坦な場合とも呼ぶ）、すなわち、ＥｄｇｅＴｙｐｅ＝２の場合、処理対象画素ｘをクラス０（“class_idx”＝０）に分類する。また、ＥｄｇｅＴｙｐｅ＝０、１、３、４をそれぞれｃｌａｓｓ＿ｉｄｘ＝１、２、３、４に分類する。
【０４４４】
また、処理対象のＱＡＯＵの階層の深度によって用いる変換テーブルを変更しない場合で、処理対象のＱＡＯＵの階層の深度が閾値より小さいとき、変換テーブル１００１Ａに示すように、クラス分類部６２４は、処理対象画素ｘ、画素ａおよび画素ｂから成る領域にエッジが存在しない場合（以下、平坦な場合とも呼ぶ）、すなわち、ＥｄｇｅＴｙｐｅ＝２の場合、処理対象画素ｘをクラス０（“class_idx”＝０）に分類する。また、ＥｄｇｅＴｙｐｅ＝０、１、３、４をそれぞれｃｌａｓｓ＿ｉｄｘ＝１、３、４、２に分類する。また、処理対象のＱＡＯＵの階層の深度が閾値以上のとき、変換テーブル１００１Ｂに示すように、クラス分類部６２４は、処理対象画素ｘ、画素ａおよび画素ｂから成る領域にエッジが存在しない場合（以下、平坦な場合とも呼ぶ）、すなわち、ＥｄｇｅＴｙｐｅ＝２の場合、処理対象画素ｘをクラス０（“class_idx”＝０）に分類する。また、ＥｄｇｅＴｙｐｅ＝０、１をｃｌａｓｓ＿ｉｄｘ＝１に、ＥｄｇｅＴｙｐｅ＝３、４をｃｌａｓｓ＿ｉｄｘ＝２に分類する。よって、変換テーブル１００１Ｂでは、複数のＥｄｇｅＴｙｐｅに対し、１つのｃｌａｓｓ＿ｉｄｘが対応している。
【０４４５】
なお、変換テーブル１００１Ａについては、変換テーブル１００１Ｘと同じでもよいように考えられる。しかしながら、階層に応じて２つの変換テーブルを使い分ける場合において、変換テーブル１００１Ａとして変換テーブル１００１Ｘで定義したテーブルと同じテーブルを用いると、変換テーブル１００１Ｂとの間で、同じｃｌａｓｓ＿ｉｄｘに対し、異なるＥｄｇｅｔｙｐｅが割り当てられることになり、階層によって処理が変わってしまうことになる。例えば、ｃｌａｓｓ＿ｉｄｘ＝２のときに、階層の深度が閾値より小さい場合（変換テーブル１００１Ｘを用いる場合）は、Ｅｄｇｅｔｙｐｅ＝１、階層の深度が閾値以上の場合（変換テーブル１００１Ｂを用いる場合）は、Ｅｄｇｅｔｙｐｅ＝４となり、階層によって処理が変わってしまうことになる。
【０４４６】
そこで、変換テーブル１００１Ａを図２６（ｅ）に示すようにすることで、変換テーブル１００１Ｂとの間、すなわち階層間によって、処理が変わらないようにしている。
【０４４７】
（オフセットタイプ＝５〜６（バンドオフセット）のとき）
オフセットタイプ導出部６２３から供給されるオフセットタイプが５または６であるとき、クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］に応じて、当該処理対象画素の画素値を複数のクラスの何れかに分類する。
【０４４８】
・オフセットタイプ＝５（sao_type_idx＝５）のとき
クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］が、
（ｍａｘ×１／４）≦ｐｉｃ［ｘ］≦（ｍａｘ×３／４）
を満たしている場合に、当該処理対象画素をクラス０以外のクラスに分類する。すなわち、処理対象画素の画素値が、図２７（ａ）における斜線の範囲内である場合に、当該処理対象画素をクラス０以外のクラスに分類する。なお、上記ｍａｘは、処理対象画素ｘの画素値の取り得る最大値を表しており、例えば、ｍａｘ＝２５５である。また、ｍａｘ＝２５５であるとき、上記の条件は、８≦（ｐｉｃ［ｘ］／８）≦２３と表現することもできるし、４≦（ｐｉｃ［ｘ］／１６）≦１１と表現することもできる。
【０４４９】
・オフセットタイプ＝６（sao_type_idx＝６）のとき
クラス分類部６２４は、処理対象画素ｘの画素値ｐｉｃ［ｘ］が、
ｐｉｃ［ｘ］≦（ｍａｘ×１／４）または（ｍａｘ×３／４）≦ｐｉｃ［ｘ］
を満たしている場合に、当該処理対象画素をクラス０以外のクラスに分類する。すなわち、処理対象画素の画素値が、図２７（ｂ）における斜線の範囲内である場合に、当該処理対象画素をクラス０以外のクラスに分類する。なお、上記ｍａｘは、処理対象画素ｘの画素値の取り得る最大値を表しており、例えば、ｍａｘ＝２５５である。また、ｍａｘ＝２５５であるとき、上記の条件は、（ｐｉｃ［ｘ］／８）≦７または２４≦（ｐｉｃ［ｘ］／８）と表現することもできるし、（ｐｉｃ［ｘ］／１６）≦３または１２≦（ｐｉｃ［ｘ］／１６）と表現することもできる。
【０４５０】
クラス分類部６２４によるクラス分類処理をより具体的に説明すれば以下の通りである。
【０４５１】
オフセットタイプが５〜６の何れかであるとき、クラス分類部６２４は、処理対象画素ｘが属するべきクラスのクラスインデックス（class_idx）を、処理対象のＱＡＯＵの階層の深度の応じて、以下のように導出する。
・処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合
ｃｌａｓｓ＿ｉｄｘ＝ＥｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／>>BoRefBit32］
・処理対象のＱＡＯＵの階層の深度が閾値以上の場合
ｃｌａｓｓ＿ｉｄｘ＝ＥｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／>>BoRefBit16］
ここで、ＥｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／>>BoRefBit32］、およびＥｏＴｂｌ［ｓａｏ＿ｔｙｐｅ＿ｉｄｘ］［ｐｉｃ［ｘ］／>>BoRefBit16］は、処理対象画素ｘの画素値ｐｉｃ［ｘ］とｓａｏ＿ｔｙｐｅ＿ｉｄｘとから、ｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルである。BoRefBit32とBoRefBit16は、画像ビット深度をＰＩＣ＿ＤＥＰＴＨとする場合に、各々ＰＩＣ＿ＤＥＰＴＨ−５、ＰＩＣ＿ＤＥＰＴＨ−４で導出される値であり、画素値を３２段階もしくは１６段階の値に量子化したものである。量子化された画素値はpixquantとも記述する。BoRefBit32およびBoRefBit16で右シフトすることは、1<<BoRefBit32および1<<BoRefBit16で除算することに対応する。この量子化幅は画素値のビット深度が８ビットの場合にはそれぞれ、1<<(8-5)＝８、1<<（8-4）＝１６である。以下、量子化幅が８の場合を説明する。また、この量子化幅をクラスの幅と呼ぶ。
【０４５２】
クラス分類部６２４は、処理対象のＱＡＯＵの階層の深度に応じて分類するクラスの幅を変えて、クラスの分類を行う。例えば、図２８（ａ）に示すように、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合、クラス分類部６２４は、クラスの幅を「８」として画素値を３２個に分類して、クラス分類を行う。また、図２８（ｂ）に示すように、処理対象のＱＡＯＵの階層の深度が閾値以上の場合、クラス分類部６２４は、クラスの幅を「１６」として画素値を１６個に分類し、クラス分類を行う。
【０４５３】
次に、変換テーブルＥｏＴｂｌの具体例を図２９に示す。図２９の（ａ）、（ｂ）それぞれにおいて「ＢＯ＿１」は、“sao_type_index”＝５であることを示しており、「ＢＯ＿２」は、“sao_type_index”＝６であることを示している。また、図２９（ａ）に示す変換テーブル１３０１は、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合に用いられる変換テーブルであり、図２９（ｂ）に示す変換テーブル１３０２は、処理対象のＱＡＯＵの階層の深度が閾値以上の場合に用いられる変換テーブルである。
【０４５４】
処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合で、“sao_type_index”＝５のとき、図２９（ａ）に示すように、 クラス分類部６２４は、画素値ｐｉｃ［ｘ］が８≦（ｐｉｃ［ｘ］／８）≦２３を満たす処理対象画素ｘについて、ｐｉｃ［ｘ］の大きさに応じて、クラスインデックス１から１６までの何れかのクラスに分類する。
【０４５５】
また、“sao_type_index”＝６のとき、クラス分類部６２４は、画素値ｐｉｃ［ｘ］がｐｉｃ［ｘ］／８）≦７または２４≦（ｐｉｃ［ｘ］／８）を満たす処理対象画素ｘについて、ｐｉｃ［ｘ］の大きさに応じて、クラスインデックス１から１６までの何れかのクラスに分類する。
【０４５６】
また、処理対象のＱＡＯＵの階層の深度が閾値以上の場合で、“sao_type_index”＝５のとき、図２９（ｂ）に示すように、 クラス分類部６２４は、画素値ｐｉｘ［ｘ］が４≦（ｐｉｘ［ｘ］／１６）≦１１を満たす処理対象画素ｘについて、ｐｉｘ［ｘ］の大きさに応じて、クラスインデックス１から８までの何れかのクラスに分類する。
【０４５７】
また、“sao_type_index”＝６のとき、クラス分類部６２４は、画素値ｐｉｘ［ｘ］がｐｉｘ［ｘ］／１６）≦３または１２≦（ｐｉｘ［ｘ］／１６）を満たす処理対象画素ｘについて、ｐｉｘ［ｘ］の大きさに応じて、クラスインデックス１から８までの何れかのクラスに分類する。
（オフセット情報復号部６１１の構成）
図４１は、適応オフセットのパラメータの種類（パラメータ条件）に応じて、使用するオフセットタイプを変更する、かつ／もしくは、適応オフセットのパラメータ条件に応じて、クラスの分類数を変更するオフセット情報復号部６１１のブロック図である。オフセット情報復号部６１１は、適応的オフセットタイプ復号部６１１１、使用オフセットタイプ選択部６１１２、オフセットタイプ復号部６１１３、適応的オフセット復号部６１１４、使用オフセット数選択部６１１５、オフセット復号部６１１６から構成される。なお、パラメータ条件とは、画素値から算出される値以外のパラメータであり、上記で説明した階層、オフセットタイプの他、後述の付記事項にて説明するブロックサイズ（ＱＡＯＵサイズ）、色成分（コンポーネント）、ＱＰがある。
【０４５８】
適応的オフセットタイプ復号部６１１１は、符号化データ中のＱＡＯＵ情報から、パラメータ条件に応じて適応的にオフセットタイプを復号する手段であり、使用オフセットタイプ選択部６１１２とオフセットタイプ復号部６１１３を備える。
【０４５９】
使用オフセットタイプ選択部６１１２は、パラメータ条件に応じて使用するオフセットタイプを選択する手段である。パラメータ条件の一つは、上述したように階層である。階層が浅い場合に使用するオフセットタイプの数は、階層が深い場合に使用するオフセットの数よりも小さい。使用オフセットタイプ選択部６１１２は、パラメータ条件に応じて図２５で説明したような変換テーブルをオフセットタイプ復号部６１１３に入力する。また使用可能なオフセットタイプの最大数をオフセットタイプ復号部６１１３に入力する。
【０４６０】
オフセットタイプ復号部６１１３は、入力された変換テーブルと最大数に応じて符号化データからオフセットタイプを復号する。オフセットタイプの最大数をＮとすると、コードの取り得る範囲が０からＮ−１までのＮ個に制限されることから、コードの符号化に要するビット数を低減することができる。例えば、最大数が２ｍ−１より大きく、２ｍ以下であるときｍビットの固定長符号化を用いることができる。また、最大値をＮ−１とするＴｒｕｎｃａｔｅｄ  ｕｎａｒｙ符号化や、Ｔｒｕｎｃａｔｅｄ  Ｒｉｃｅ符号化を用いることもできる。
【０４６１】
適応的オフセット復号部６１１４は、符号化データ中のＱＡＯＵ情報から、パラメータ条件に応じて適応的にオフセットを復号する手段であり、使用オフセット数選択部６１１５とオフセット復号部６１１６とを備える。使用オフセット数選択部６１１５は、パラメータ条件に応じて、使用するオフセット数の最大値とオフセットの精度を選択する手段である。パラメータ条件の一つは階層であり、階層が浅い場合に使用するオフセットの数は、階層が深い場合に使用するオフセットの数よりも大きい。例えば、階層が浅い場合には図２９（ａ）のようにオフセット数を１６個、階層が深い場合には図２９（ｂ）のようにオフセット数を８個とすることができる。また、上述したように、階層に応じて、オフセットの精度（ビット深度）を変更することも可能である。使用オフセット数選択部６１１５は、オフセット最大数とオフセット精度をオフセット復号部６１１６に入力する。オフセット復号部６１１６は、オフセットの最大数とオフセットの精度に応じてオフセットを復号する。オフセットの数を少なくする場合には、オフセットの符号量が低減する。また、オフセットタイプと同様、オフセットにおいても各オフセットの精度が決まれば、オフセットを符号化するコードの取り得る範囲も制限されることから、コードの符号化に要するビット数を低減することができる。
【０４６２】
図４２（ａ）は、使用オフセットタイプ選択部６１１２の構成を示すブロック図である。
【０４６３】
使用オフセットタイプ選択部６１１２は、オフセットタイプ変換テーブル選択部６１１７、第１オフセットタイプ変換テーブル格納部６１１８、第２オフセットタイプ変換テーブル格納部６１１９を備える。
【０４６４】
オフセットタイプ変換テーブル選択部６１１７は、パラメータ条件に応じて第１オフセットタイプ変換テーブル格納部６１１８が備える変換テーブルもしくは、第２オフセットタイプ変換テーブル格納部６１１９が備える変換テーブルを選択する。上述した例では、８０１Ａが、第１オフセットタイプ変換テーブル格納部６１１８が備える変換テーブルであり、８０１Ｂが、第２オフセットタイプ変換テーブル格納部６１１９が備える変換テーブルに対応する。
【０４６５】
図４２（ｂ）は、使用オフセットタイプ選択部の別の構成を示すブロック図である。
【０４６６】
使用オフセットタイプ選択部６１１２’は、オフセットタイプ変換テーブル選択部６１１７’、エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部６１１８’、水平エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部６１１９’を備える。
【０４６７】
（クラス分類部６２４の構成）
図４３は、クラス分類部６２４の構成を示すブロック図である。
【０４６８】
クラス分類部６２４は、適応的エッジオフセットクラス分類部６２４１、使用エッジオフセットクラス選択部６２４２、エッジオフセットクラス分類部６２４３、適応的バンドオフセットクラス分類部６２４４、使用バンドオフセットクラス・クラス幅選択部６２４５、バンドオフセットクラス分類部６２４６から構成される。
【０４６９】
クラス分類部６２４は、パラメータ条件およびオフセットタイプに応じて、各画素をクラスに分類する。オフセットタイプがエッジオフセットを示す場合には、適応的エッジオフセットクラス分類部６２４１により画素を分類し、オフセットタイプがバンドオフセットの場合には、適応的バンドオフセットクラス分類部６２４４において、画素を分類する。
【０４７０】
適応的エッジオフセットクラス分類部６２４１は、パラメータ条件に応じて適応的に、画素をクラスに分類する手段であり、使用エッジオフセットクラス選択部６２４２とエッジオフセットクラス分類部６２４３とを備える。使用エッジオフセットクラス選択部６２４２は、使用するクラスの種類を選択する。使用エッジオフセットクラス選択部６２４２は、画素値の分類方法をエッジオフセットクラス分類部６２４３に入力する。具体的には、画素値を分類する場合に一時的に導出される中間値ＥｄｇｅＴｙｐｅの導出方法と、ＥｄｇｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルを入力する。中間値ＥｄｇｅＴｙｐｅの導出方法の例は図２６（ａ）、図２６（ｂ）を用いて説明したものであり、これを基本エッジ分類方法と呼ぶ。図３３で後述するようなエッジ分類方法を用いることもできる。パラメータ条件の一つは、上述したように階層であり、階層が浅い場合に使用するクラスを、階層が深い場合に使用するクラスよりも大きい数となるように選択する。ＥｄｇｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルは、１００１Ａや１００１Ｂが例になる。また、色成分（コンポーネント）に応じて、エッジ導出方法を切り替える方法も適当である。この場合、輝度では、水平、垂直、斜め方向のエッジ分類方法を用いる基本エッジ分類方法を用い、色差では、ラインメモリを削減するためにエッジ分類で用いる参照画素の範囲を、対象画素からみて水平方向に限定した水平エッジ分類方法を用いることが適当である。エッジオフセットクラス分類部６２４３は与えられた分類方法と、ＥｄｇｅＴｙｐｅからｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルに基づいて画素を分類する。
【０４７１】
適応的バンドオフセットクラス分類部６２４４は、パラメータ条件に応じて適応的に、画素をクラスに分類する手段であり、使用バンドオフセットクラス・クラス幅選択部６２４５とバンドオフセットクラス分類部６２４６とを備える。使用バンドオフセットクラス・クラス幅選択部６２４５は、画素値の分類方法をバンドオフセットクラス分類部６２４６に入力する。具体的には、画素値を中間値に分類する場合に用いられる量子化幅であるクラス幅と、中間値からｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルを入力する。パラメータ条件の一つは、既に説明したように階層であり、階層が浅い場合に使用するクラスの幅は、階層が深い場合に使用するクラスの幅よりも小さい。バンドオフセットクラス分類部６２４６は、入力されたクラス幅と、中間値からｃｌａｓｓ＿ｉｄｘを導出するために用いられる変換テーブルに応じて画素値をクラスに分類する。入力であるクラス幅は、クラス幅自体ではなく、クラス幅に対応する整数でも構わない。例えば1<<BoRefBit32をクラス幅とする場合、その２を底とする対数である画素の量子化に用いるビット数BoRefBit32や、画素のビット深度から画素を量子化に用いるビット数を求めるための値、例えば、BoRefBit32＝ＰＩＣ＿ＤＥＰＴＨ−５であれば５を、クラス幅の代わりに用いても構わない。
【０４７２】
このように、パラメータ条件に応じて適応的に符号化データを復号し、画素のクラス分類を行う。
【０４７３】
以上のように、本実施形態では、処理対象のＱＡＯＵの階層の深度に応じて、クラスの分類数を変更している。より詳細には、処理対象のＱＡＯＵの階層の深度が大きい場合に、小さい場合と比較してより少ないクラス数に分類している。
【０４７４】
一般に、必要なメモリ量は、メモリ量＝オフセットのデータ長×クラス数×ＱＡＯＵ数であるので、クラス数を減らすことにより、メモリの使用量を削減することができる。
【０４７５】
また、深い階層では、ＱＡＯＵの面積が小さくなるとともに、ＱＡＯＵ内の画素値の特性が一様に近くなるので、クラス数を減らしてもオフセットの効果は、あまり変わらない。
【０４７６】
また、本実施形態では、処理対象のＱＡＯＵの階層の深度に応じて、オフセットの精度を変更している。より詳細には、処理対象のＱＡＯＵの階層の深度が大きい場合に、小さい場合と比較してオフセットの精度を下げている。これにより、処理対象のＱＡＯＵの階層の深度が大きい場合の符号量を減らしている。
【０４７７】
深い階層のＱＡＯＵでは、含まれる画素数が少なくなるため、ＱＡＯＵ全体でみた量子化誤差が上位の階層と比較して小さくなる。よって、深い階層において、オフセットの精度を下げても、オフセットの効果はあまり変わらない。
【０４７８】
（動画像符号化装置２’）
次に、符号化対象画像を符号化することによって符号化データ＃１を生成する動画像符号化装置２’について、図３０、３１を参照して説明する。動画像符号化装置２’は、動画像符号化装置２と同様に、その一部に、Ｈ．２６４／ＭＰＥＧ−４．ＡＶＣに採用されている方式、ＶＣＥＧ（Video Coding Expert Group）における共同開発用コーデックであるＫＴＡソフトウェアに採用されている方式、その後継コーデックであるＴＭｕＣ（Test Model under Consideration）ソフトウェアに採用されている方式、および、ＨＭ（HEVC TestModel）ソフトウェアに採用されている技術を含んでいる。
【０４７９】
また、動画像符号化装置２’は、動画像符号化装置２における適応オフセットフィルタ８０の代わりに適応オフセットフィルタ８０’が設けらている点が異なり、他の構成は同様である。
【０４８０】
（適応オフセットフィルタ８０’）
次に、適応オフセットフィルタ８０’について、図３０を参照して説明する。図３０は、適応オフセットフィルタ８０’の構成を示すブロック図である。図３０に示すように、適応オフセットフィルタ８０’は、適応オフセットフィルタ情報設定部８１’および適応オフセットフィルタ処理部８２’を含む構成である。
【０４８１】
また、図３０に示すように、適応オフセットフィルタ情報設定部８１’は、オフセット算出部８１１、オフセットクリップ部８１２、およびオフセット情報選択部８１３を含む構成である。
【０４８２】
（オフセット算出部８１１）
オフセット算出部８１１は、対象の処理単位（例えばＬＣＵ）に含まれる所定の分割深度までの全てのＱＡＯＵに対して、処理対象のＱＡＯＵの階層に応じて存在する全てのオフセットタイプおよび全てのクラスについてのオフセットを算出する。ここで、オフセットタイプおよびクラスは、動画像復号装置１の説明において説明したものと同じものを指す。
【０４８３】
オフセット算出部８１１は、上記の処理によって算出したオフセット、オフセットタイプ、クラス、および、ＱＡＯＵの分割構造を表すＱＡＯＵ構造情報からなるオフセット情報をオフセットクリップ部８１２に供給する。
【０４８４】
（オフセットクリップ部８１２）
オフセットクリップ部８１２は、オフセット算出部８１１から供給されるオフセットに対して以下に示すようなクリップ処理１、クリップ処理２の何れかの処理によってクリップの処理を行う。
【０４８５】
（クリップ処理１）
オフセットクリップ部８１２は、オフセット算出部８１１から供給される各オフセットを例えば−８から７までの値にクリップすることによって、各オフセットを４ビットで表現する。クリップされた各オフセットは、オフセット情報選択部８１３に供給される。クリップするビット幅は、動画像復号装置１と同様、画像のビット深度とオフセットのビット深度に応じて設定される。
【０４８６】
このように、各オフセットをクリップすることによって、各オフセットが格納されるメモリ（不図示）のメモリサイズを削減することができる。また、符号化データ＃１に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【０４８７】
（クリップ処理２）
また、オフセットクリップ部８１２は、オフセット算出部８１１から供給される各オフセットのクリップ範囲を、オフセットタイプに応じて異なる値を設定する構成としてもよい。
【０４８８】
例えば、オフセットタイプがエッジオフセットである場合には、オフセットのビット数を８ビットとし、オフセットタイプがバンドオフセットである場合には、オフセットのビット数を４ビットとする。より一般には、オフセットタイプがエッジオフセットである場合のオフセットのビット数をＮビットとし、オフセットタイプがバンドオフセットである場合のオフセットのビット数をＭビットとしたとき、Ｎ＞Ｍが満たされるようにオフセットのビット数を定める。
【０４８９】
このようにオフセットタイプに応じて、オフセットのビット数を異ならせることによって、各オフセットを格納するためのメモリに過度なメモリサイズを要求することなく、符号化効率の向上を図ることができる。
【０４９０】
なお、オフセットの取り得る値を制限するための閾値ｔｈが２m-1より大きく、２m以下であるとき、当該オフセットを符号化するための符号化方式として、ｍビットの固定長符号化を用いることができる。より具体的には、最大値とｔｈとするＴｒｕｎｃａｔｅｄ  ｕｎａｒｙ符号化や、Ｔｒｕｎｃａｔｅｄ  Ｒｉｃｅ符号化を用いることができる。
【０４９１】
また、上記クリップ処理１および２を組み合わせて得られるクリップ処理も本実施形態に含まれる。また、適応オフセットフィルタ８０’は、オフセットクリップ部８１２を備えない構成としてもよい。
【０４９２】
また、オフセットクリップ部８１２は、オフセットの精度に合わせ、処理対象のＱＡＯＵの階層の深度に応じて、クリップ範囲を切り換える。具体的に、オフセットの精度が、処理対象のＱＡＯＵの階層の深度が閾値よりも小さい場合はｎＡビット、処理対象のＱＡＯＵの階層の深度が閾値以上の場合はｎＢビットのときを考える。このとき、オフセットクリップ部８１２は、処理対象のＱＡＯＵの階層の深度が閾値よりも小さければ、クリップ範囲を−２ｎＡ／２〜２ｎＡ／２−１とする。また、処理対象のＱＡＯＵの階層の深度が閾値以上であれば、クリップ範囲を−２ｎＡ／２〜２ｎＡ／２−１とした上で、下位の（ｎＡ−ｎＢ）ビットを「０」とする。これにより、オフセットクリップ部８１２によって、クリップ処理されたオフセットを用いて処理を行うオフセット情報選択部８１３に対し、オフセットの精度を考慮せずに処理を行わせることができる。
【０４９３】
（オフセット情報選択部８１３）
オフセット情報選択部８１３は、ＲＤコスト（Rate-Distortion cost）がより小さくなるオフセットタイプ、クラス、オフセットの組み合わせ、および、それに対応するＱＡＯＵ分割構造を決定し、決定したオフセットタイプ、クラス、オフセットおよび、それに対応するＱＡＯＭ分割構造を示すＱＡＯＵ情報を可変長符号符号化部２２に供給する。また、オフセット情報選択部８１３は、決定したオフセットをＱＡＯＵ毎に適応オフセットフィルタ処理部８２に供給する。
【０４９４】
オフセット情報選択部８１３の処理について図３１を参照してより具体的に説明すれば以下の通りである。
【０４９５】
図３１は、ＱＡＯＵインデックスが「ｘ」のＱＡＯＵについて、オフセットタイプそれぞれについての２乗誤差を算出する概要を示す図である。図３１に示すように、オフセット情報選択部８１３は、全てのＱＡＯＭＵについて、オフセットタイプそれぞれについての２乗誤差を算出する。そして、算出した２乗誤差が最小となるオフセットタイプを当該ＱＡＯＵのオフセットタイプとする。これにより、全てのＱＡＯＭＵ（ＱＡＯＭＵ番号０〜３４０）について、オフセットタイプが決定する。
【０４９６】
次に、オフセット情報選択部８１３は、分割深度を０としたときのＲＤコストと分割深度を１とした場合のＲＤコストを計算する。具体的な計算方法は、上記で図１８を参照して説明した通りである。
【０４９７】
（適応オフセットフィルタ処理部８２’）
適応オフセットフィルタ処理部８２’は、対象ＱＡＯＵにおけるデブロック済復号画像Ｐ＿ＤＢの各画素に対して、オフセット情報選択部８１３から供給されるオフセットを加算する。適応オフセットフィルタ処理部８２’は、デブロック済復号画像Ｐ＿ＤＢに含まれる全てのＱＡＯＵに対して処理を行って得られる画像をオフセットフィルタ済復号画像Ｐ＿ＯＦとして出力する。なお、適応オフセットフィルタ処理部８２’の構成は、適応オフセットフィルタ処理部６２’と同一のため、ここでは説明を省略する。
【０４９８】
また、適応クリップタイプを用いる構成であってもよい。すなわち、オフセットタイプの１つとして、適応クリップ（ＡＣ）タイプを設けるようにしてもよい。この場合、オフセットタイプは、ＥＯ、ＢＯ、ＡＣの３種類となる。適応クリップタイプ（ＡＣ）では、オフセットを用いず、下限値ｃ１と上限値ｃ２とのクリップを用いて画素値を補正する。下限値ｃ１および上限値ｃ２の例としては、例えば、ｃ１＝１６、ｃ２＝２３５を挙げることができる。
【０４９９】
適応クリップタイプを用いることにより、オフセットの符号化処理や多数のオフセットを保持するメモリが不要となる。なお、クリップの下限値および上限値を、固定値でなく適応的に与える場合には、下限値と上限値を符号化すればよい。この場合は、それぞれ適当な固定値からの差分、たとえば下限値は１６からのオフセット、上限値は２３５からのオフセットを符号化することが好ましいとよい。特に、上限値は大きな値となるため、このようにすることで、符号化効率を下げることがない。
【０５００】
（付記事項２）
また、上述したように、ＱＡＯＵの階層の深度に応じてとは、ＱＡＯＵのサイズに応じてということもできる。すなわち、ＱＡＯＵのサイズに応じてＳＡＯのタイプ数、クラス数やオフセット精度を異ならせてもよい。
【０５０１】
例えば、ＱＡＯＵのサイズがＮ×Ｎ画素未満の場合は、ＳＡＯのタイプ数、クラス数、およびオフセット精度のうち、１または複数を、ＱＡＯＵのサイズがＮ×Ｎ画素以上の場合よりも制限する構成であってもよい。Ｎの具体例としては、例えばＮ＝６４（ＬＣＵのサイズ）を挙げることができる。
【０５０２】
また、ＳＡＯのタイプ数の制限としては、例えば、ＥＯを水平および垂直タイプに制限する、ＢＯを１種類にする（変換テーブル８０２Ｃ）、ＥＯのみを用いてＢＯを用いない（変換テーブル８０２Ａ）、水平タイプのＥＯおよびＢＯのいずれかだけを用いる（変換テーブル８０１Ｂ、変換テーブル８０２Ｄ）、などを挙げることができる。オフセット情報復号部６１１においては括弧内に示す変換テーブルを用いるなお、ＳＡＯのクラス数の制限、およびオフセット精度の制限については、上述した実施形態と同様の方法で行うことができる。
【０５０３】
このように、ＳＡＯのタイプの種類、タイプ数、クラス数、およびオフセット精度を制限することにより、メモリの使用量削減や、処理負荷の軽減を行うことができる。特に、タイプの種類をＢＯに制限する場合や、ＥＯを水平および垂直タイプに制限する場合には、符号化装置、および復号装置のクラス分類部の処理負荷を軽減することができる。また、タイプ数を制限する場合には、最適なタイプを選択するためのコスト計算を省くことができることから、符号化装置の処理負荷を軽減することができる。タイプの種類をＥＯに制限すること、クラス数およびオフセット精度を制限することによりオフセットを蓄積するメモリの使用量削減ができる。また、タイプの種類を水平タイプのＥＯおよびＢＯに制限することにより、クラス分類に用いる参照画素を保持するラインメモリなどの一時的メモリを削減することができ、また、参照画素の復号を待つ間の遅延を短くすることができる。なお、メモリの使用量の削減には、ＢＯのクラス数を制限する方が、ＥＯのクラス数を制限するよりも効果的である。
【０５０４】
このような制限は、図４１〜図４３に示す手段の構成により、パラメータ条件をＱＡＯＵのサイズとした場合に、パラメータ条件に応じて適応的にオフセット情報復号部６１１、クラス分類部６２４の動作を変更することで実現できる。
【０５０５】
（付記事項３）
また、輝度値に対してオフセットを加えるＱＡＯＵ（以下、輝度ユニットとも言う）のサイズと、色差に対してオフセットを加えるＱＡＯＵ（以下、色差ユニットとも言う）のサイズとを異ならせ、色差ユニットでは、輝度ユニットよりも、ＳＡＯのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。
【０５０６】
例えば、ＹＵＶ形式の画像フォーマットにおける４：２：０形式等、輝度と色差とで解像度が異なり、色差の解像度が輝度よりも低いデータ形式であれば、色差の分割の細かさは輝度ほどには必要なくなる。そこで、色差ユニットについて、ＳＡＯのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限することにより、メモリの使用量削減や、処理負荷の軽減を行うことができる。なお、色差ユニットの最大階層の制限は、例えば、ＳＡＯのツリー構造の最大深度を、輝度ユニットよりも浅くすることにより可能である。
【０５０７】
このような制限は、図４１〜図４３に示す手段の構成により、パラメータ条件をＱＡＯＵのサイズとした場合に、パラメータ条件に応じて適応的にオフセット情報復号部６１１、クラス分類部６２４の動作を変更することで実現できる。
【０５０８】
特に、輝度と色差のどちらにもＳＡＯ処理を行う場合には、色成分毎にクラス分類に用いる参照画素を保持するラインメモリなどの一時的メモリを備える必要がある。輝度成分は色差成分に比べ重要度が低いことから、パラメータ条件を色差成分として、タイプの種類を水平タイプのＥＯおよびＢＯに制限することにより、色差成分でのラインメモリを削減することができる。この場合、オフセット情報復号部６１１では、変換テーブル８０１Ｂ、変換テーブル８０２Ｄなどの変換テーブルを用いる。
【０５０９】
また、パラメータ条件を色差成分として、輝度成分に比べオフセットの精度を小さくすることも特に有効である。例えば、輝度成分のオフセットの精度（とシフト値）を
ＳＡＯ＿ＤＥＰＴＨ  ＝  ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、ＡＹ）
シフト値  ＝  ＰＩＣ＿ＤＥＰＴＨ―ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、ＡＹ）
として、色差成分の場合には、オフセットの精度、シフト値を、
ＳＡＯ＿ＤＥＰＴＨ  ＝  ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、ＴＨＣ）
シフト値  ＝  ＰＩＣ＿ＤＥＰＴＨ―ＭＩＮ（ＰＩＣ＿ＤＥＰＴＨ、ＡＣ）
のように求める場合に、精度を制御する変数ＡＹ、ＡＣとしてＡＹ＞ＡＣを用いることが適当である。例えば、ＡＹ＝１０もしくは９、ＡＣ＝８とする。この場合、輝度成分のオフセットの精度は、色差成分よりも大きいものとなる。シフト値については輝度成分のシフト値が、色差成分よりも小さい値となる。
【０５１０】
（付記事項４）
また、ＣＵの量子化パラメータｑｐの値（ｑｐ値）が閾値以上の場合に、ＳＡＯのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。ｑｐ値は、ピクチャの初期のＱＰ値を用いてもよいし、ＳＡＯの処理対象ＱＡＯＵがＬＣＵやＣＵの境界に沿っている場合には、ＱＡＯＵの左上座標もしくは中心座標に対応する位置のＣＵのｑｐ値を用いてもよい。
【０５１１】
ｑｐ値は、その値が高いほど予測画像の画質は低くなり、詳細な分類およびオフセットの補正が困難となるため、ＳＡＯのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限しても、画質に与える影響が小さい。そこで、ｑｐ値が閾値以上の場合に、ＳＡＯのタイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成にすれば、画質に影響を与えることなく、メモリの使用量削減や、処理負荷の軽減を行うことができる。
【０５１２】
このような制限は、図４１〜図４３に示す手段の構成により、パラメータ条件をＱＰとした場合に、パラメータ条件に応じて適応的にオフセット情報復号部６１１、クラス分類部６２４の動作を変更することで実現できる。
【０５１３】
（付記事項５）
また、特定タイプのピクチャ、例えばＢピクチャや非参照ピクチャ（ＩＤＲピクチャ）では、ＳＡＯのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。
【０５１４】
ＩピクチャやＰピクチャでは、そのピクチャの画質が、後のピクチャに大きな影響を与えるためＳＡＯの精度を高く保つ必要がある。一方で、これ以外のピクチャでは、後のピクチャに大きな影響を与えることはないので、これらのピクチャ（Ｂピクチャ、ＩＤＲピクチャ）について、ＳＡＯのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限してもよい。これにより、メモリの使用量削減や、処理負荷の軽減を行うことができる。
【０５１５】
このような制限は、図４１〜図４３に示す手段の構成により、パラメータ条件をピクチャの種類とした場合に、パラメータ条件に応じて適応的にオフセット情報復号部６１１、クラス分類部６２４の動作を変更することで実現できる。
【０５１６】
（付記事項６）
また、画面上におけるＱＡＯＵの位置に応じて、ＳＡＯのタイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。
【０５１７】
例えば、画面の周縁では、ＳＡＯのタイプ数、クラス数、オフセット精度、および分割の最大階層を制限してもよい。
【０５１８】
画面の中央付近は、ユーザが注目しやすいため、画質を下げると、そのまま主観画質が低下してしまうが、画面の周縁において画質を下げても、主観画質は画面中央付近ほどは低下しない。
【０５１９】
また、画面端を超えるサンプル点が必要となるＳＡＯタイプを用いなければ、境界判定処理を軽減することができる。
【０５２０】
このような制限は、図４１〜図４３に示す手段の構成により、パラメータ条件をＱＡＯＵの位置とした場合に、パラメータ条件に応じて適応的にオフセット情報復号部６１１、クラス分類部６２４の動作を変更することで実現できる。
【０５２１】
〔実施の形態４〕
本発明の他の実施の形態について図３２に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、画素値に応じて、ＥＯとＢＯとを切り換える点である。
【０５２２】
本願発明者等は、画素において、中間階調域では、ＢＯよりもＥＯの方が効果が高く、その他の値域（低画素値域・高画素値域）ではＢＯの方が効果が高いという特性を発見した。そこで、本実施形態では、低画素値域、および高画素値域ではＢＯを用い、中間階調域はＥＯを用いている。
【０５２３】
具体的に、図３２を参照して説明する。図３２は、画素値によってＥＯとＢＯとを切り換える構成を説明するための図であり、（ａ）は、画素値によってＥＯとＢＯとを切り換える構成の概要を説明するための図であり、（ｂ）は、具体的な切り換えの値を説明するための図である、（ｃ）は、オフセット情報格納部６２１に格納されるリストメモリの内容を示す図である。
【０５２４】
図３２（ａ）に示すように、本実施形態では、画素値（輝度値）が０近辺、および２５５近辺では、ＢＯを用い、それ以外の値域ではＥＯを用いる。すなわち、画素値によってＳＡＯタイプを分類し、画素値が０近辺、および２５５近辺では、画素値に応じたオフセットを加算し、それ以外の地域では、エッジの種類に応じたオフセットを加算する。
【０５２５】
本願発明者等の実験の結果、ＥＯとＢＯとは、用いられる画素値の範囲にそれぞれ偏りがみられた。すなわち、ＥＯは中間階調域に多いということがわかった。これは、低画素値域および高画素値域では、誤差への影響は、エッジの種類よりも画素値の方が大きい傾向があるということを意味している。
【０５２６】
そこで、本実施形態では、ＥＯとＢＯとを、画素値域に応じて決定し、１つのＳＡＯタイプでＥＯおよびＢＯの両者における誤差補正効果が高い部分を利用する構成としている。これにより、符号化効率を向上させることができる。また、ＳＡＯタイプ数や総クラス数を減少させることができるので、メモリの使用量の削減、および処理負荷を軽減することができる。
【０５２７】
次に、本実施の形態について、より詳細に説明する。まず、本実施の形態では、上記実施の形態と異なり、“sao_type_idx”について１〜４までを用い、これらを次のように定義する。
・“sao_type_idx”＝１：（ＢＯ＿ＥＯ＿０）  実施の形態１のＥＯ＿０＋ＢＯに相当
・“sao_type_idx”＝２：（ＢＯ＿ＥＯ＿１）  実施の形態１のＥＯ＿１＋ＢＯに相当
・“sao_type_idx”＝３：（ＢＯ＿ＥＯ＿２）  実施の形態１のＥＯ＿２＋ＢＯに相当
・“sao_type_idx”＝４：（ＢＯ＿ＥＯ＿３）  実施の形態１のＥＯ＿３＋ＢＯに相当
また、実施の形態１におけるＥＯ＿０〜３、および ＢＯ＿０，１は用いない。
【０５２８】
そして、クラス分類部６２４は、図３２（ｂ）に示すように、図２９の変換テーブル１３０１におけるＢｏＴｂｌ［ＢＯ＿１］を用いてクラス分類を行う。そして、画素値がｍａｘの１／４以下、およびｍａｘの３／４以上であれば、変換テーブル１３０１を用いて、クラス分類を行う。
【０５２９】
また、画素値が、ｍａｘの１／４と３／４との間であれば、上記実施の形態に説明したＥＯ＿０〜３に応じてエッジタイプを判定し、クラス分類を行う。
【０５３０】
これにより、クラス分類部６２４は、ＢＯとＥＯとを画素値によって切り換えてクラスを分類することができる。
【０５３１】
また、オフセット算出部８１１は、上記実施の形態で説明したオフセットの算出方法と同様の方法でオフセットを算出する。ただし、本実施の形態では、オフセットタイプの種類数が４つなので、この点を異ならせて算出する。
【０５３２】
また、オフセット情報格納部６２１に格納されるリストメモリ２１０１は、図３２（ｃ）に示すように、ＱＡＯＵインデックスとオフセットタイプと該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値とが互いに関連付けられて格納されている。
【０５３３】
なお、ＥＯとＢＯとの特徴を併せ持つオフセットタイプを用いる場合に、まず、ＥＯを用いてクラス分類を行い、特定のクラス（エッジが平坦なクラス）について、ＢＯを用いてさらにクラス分類する構成であってもよい。また、実施の形態に記載したＥＯおよびＢＯをそのまま併用する構成であってもよい。さらに、上記実施の形態に記載した条件（ＱＡＯＵの階層の深度が閾値より小さいか否か）によって、ＥＯとＢＯとの特徴を併せ持つオフセットタイプを設けるか否かを変更して、タイプ数やクラス数を削減する構成であってもよい。
【０５３４】
〔実施の形態５〕
本発明の他の実施の形態について図３３、３４、４２に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、ＥＯのクラス分類において、エッジの判定に用いる画素を、判定対象の画素の水平方向に存在する画素のみに限定する点である。
【０５３５】
上記実施の形態では、対象画素の上または下方向に存在する画素についても、エッジの判定に用いられていた。そのため、対象画素の上方向に存在する画素（オフセット処理済みの画素）については、当該画素のオフセット処理前の画素値を保持しておくラインバッファが必要となっていた。
【０５３６】
そこで、エッジの判定に用いる画素を、対象画素の水平方向に存在する画素に限定すれば、上方向への参照がなくなるため、ラインバッファ分のメモリの使用量を削減することができる。また、上方向の境界判定（画面端など）が不要となるので、処理量も削減できる。
【０５３７】
また、水平方向に存在する画素のみを用いる場合、前回までの処理結果を流用することが可能となるため、さらに処理量を削減することができる。図３３（ａ）を参照して説明する。図３３（ａ）は、水平方向に存在する画素を示しており、ｘ０〜ｘ３は、それぞれの画素の画素値である。
【０５３８】
まず、画素値ｘ１の画素について、両隣との差分は、以下の通りである。
ｓ１＝ｓｉｇｎ（ｘ１−ｘ０）−ｓｉｇｎ（ｘ２−ｘ１）
次に、画素値ｘ２の画素について、両隣との差分を算出すると、以下の通りとなる。
ｓ２＝ｓｉｇｎ（ｘ２−ｘ１）−ｓｉｇｎ（ｘ３−ｘ２）
ここで、ｓ１、ｓ２はｘ１、ｘ２におけるエッジのクラス分類に用いられる値である。
【０５３９】
このように、ｓ２を算出する場合に、ｓ１で用いたｓｉｇｎ（ｘ２−ｘ１）を再利用している。よって、この分だけ、処理量を減らすことができる。
【０５４０】
次に、本実施形態の詳細について説明する。本実施形態では、ＥＯのタイプを２種類にしている。すなわち、“sao_type_idx”＝１，２の場合のみを、エッジオフセット（ＥＯ）としている。そして、“sao_type_idx”＝１（ＥＯ＿０）のときは、対象画素の左右の画素と比較してエッジの種類を導出し（図３３（ｂ））、“sao_type_idx”＝２（ＥＯ’＿０）のときは、対象画素の左右で、２画素離れた位置にある画素と比較してエッジの種類を導出する（図３３（ｃ））。
【０５４１】
なお、“sao_type_idx”＝３、４の場合はバンドオフセット（ＢＯ）となる。これは、上記実施の形態１において、“sao_type_idx”＝５、６の場合をそれぞれ３、４と読み替えればよい。
【０５４２】
上記“sao_type_idx”＝２の場合に、対象画素の両隣からさらに１画素分離れた画素を用いてエッジの種類を判定するのは、水平に対して角度の浅いエッジの検出を容易にするためである。図３３（ｄ）に示すように、対象画素の両隣の画素を比較対象とした場合、画素値の差分が小さく、エッジとは判定されない場合がある。このような場合であっても、さらに１画素分隣の画素との差分をとれば、水平に対して角度の浅いエッジを検出することが可能となる。
【０５４３】
また、対象画素の両隣ではなく、左側は隣の画素、右側は１画素さらに隣の画素（図３４（ａ））との差分を用いてもよいし、この逆（図３４（ｂ））を用いてもよい。これは、参照画素が画面の端に当たる場合に特に有効である。
【０５４４】
さらに、水平方向の画素のみを用いる場合を限定する構成であってもよい。例えば、Ｂピクチャや非参照ピクチャなどの他のピクチャへの影響が小さいピクチャの場合のみ、水平方向のみの画素を参照し、これ以外の場合は、上記実施の形態１と同様とする構成であってもよいし、画面端やスライス境界付近などでは、水平方向のみの画素を参照し、これ以外は、上記実施の形態と同様とする構成であってもよい。このようにすれば、メモリの使用量を削減できるとともに、処理量の削減も可能となる。また、上方向の参照を行わないので、画面端やスライス境界付近での境界の判定処理も軽減できる。
【０５４５】
また、ピクチャやブロック単位で、フラグで明示的に指定する構成であってもよい。
例えば、水平エッジ（図３４（ｃ））)が多い場合には、上記実施の形態に記載した方法で処理を行うようにすれば、性能が低下することを防止することができる。
【０５４６】
また、上記実施の形態に記載した条件（ＱＡＯＵの階層の深度が閾値よりも小さいか否か）によって、水平方向に存在する画素のみを用いる構成とするか否かを変更してもよい。さらに、上記実施の形態に記載したような、ＢＯとＥＯとを併用する場合に限り、ＥＯについては、水平方向に存在する画素のみを用いる構成としてもよい。
【０５４７】
また、水平方向に存在する画素との差分が、閾値よりも大きい（または小さい）か否かによって、エッジの種類を導出してもよい。具体的には、以下の式にしたがって、クラスを分類してもよい。
【０５４８】
Ｓｉｇｎ（ｚ）＝＋１  （ｚ＞ｔｈのとき）
Ｓｉｇｎ（ｚ）＝０    （−ｔｈ≦ｚ≦ｔｈのとき）
Ｓｉｇｎ（ｚ）＝−１  （ｚ＜−ｔｈのとき）
ここで、ｔｈは、予め定められた値を有する閾値である。
【０５４９】
また、色差を表す画素値の場合は、エッジオフセットにおいて、水平方向に存在する画素のみを用いる構成としてもよい。
【０５５０】
水平に限定する効果は、水平エッジ分類方法が１つのみである場合、例えば、図３３（ｂ）のみの場合だけでも得ることができる。上記のように、複数の異なる水平エッジ分類方法を組み合わせる場合には、１つの水平エッジ分類方法、例えば図３３（ｂ）を用いる場合よりも、より細かいエッジの分類が可能である。なお、複数の水平エッジ分類方法を用いる場合の組み合わせは、図３３（ｂ）、（ｃ）のように、対象画素と参照画素の距離を変更して２つの例を用いる場合に限らず、エッジの種類を導出する場合に用いる閾値を２つ用いる構成でも良い。例えば、上記閾値ｔｈが０である場合と１である場合の２つの水平エッジ分類方法を備えてもよい。
【０５５１】
水平方向の画素のみを用いる場合を限定する構成は、実施形態１の図４１〜図４３に示す手段の構成により、パラメータ条件に応じて適応的にオフセット情報復号部６１１、クラス分類部６２４の動作を変更することで実現できる。例えば、図４１のオフセット情報復号部６１１において、パラメータ条件に応じて、使用オフセットタイプ選択部６１１２で選択するオフセットタイプの種類を水平エッジ分類方法のみに限定し、オフセットタイプ復号部６１１３では限定された種類のオフセットタイプを復号する。
【０５５２】
図４２（ｂ）で示すように、オフセットタイプ変換テーブル選択部６１１７’は、パラメータ条件に応じてエッジオフセットタイプ及びバンドオフセットタイプ格納部６１１８’が備える変換テーブルもしくは、水平エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部６１１９’が備える変換テーブルを選択する。一つの例では、色成分が輝度の場合に、エッジオフセットタイプ及びバンドオフセットタイプ格納部６１１８’が備える変換テーブルを選択し、色差の場合に、水平エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部６１１９’が備える変換テーブルを選択する。
【０５５３】
クラス分類部６２４では、内部の使用オフセットタイプ選択部６１１２において、パラメータ条件に応じて水平エッジ分類方法のみに限定するようなエッジ分類方法を選択し、エッジオフセットクラス分類部６２４３において画素を分類する。一つの例では、色成分が輝度の場合においては、基本エッジ分類方法を選択し、色成分が色差の場合には、水平エッジ分類方法を選択する。
【０５５４】
〔実施の形態６〕
本発明の他の実施の形態について図３５〜３７に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、色差の画素値の中央付近において、オフセット精度を向上させるか、またはクラスの分割を細かくしている点である。
【０５５５】
画像において、無彩色付近の誤差は主観画質において目立ちやすいという特性がある。各色差の画素値において、無彩色とは、値域の中央であり、ビット深度が８ビットの場合であれば、画素値１２８の画素の色である。そこで、本実施形態では、ＢＯの場合に、色差の画素値１２８近辺について、オフセット精度を上げるか、またはより小さなクラス幅を用いてクラス分割を細かくしている。お、以下では、色差の画素値について無彩色付近の値域を、無彩色値域と呼ぶ。
【０５５６】
これにより、無彩色値域のオフセット精度を上げることができるので、無彩色値域でのオフセット補正の性能が向上する。よって、無彩色値域での原画像との誤差が減少し、主観画質を向上させることができる。また、無彩色値域において、クラスの分割を他の値域よりも狭く分割することにより、無彩色値域でのオフセット補正をより精密に行うことができる。これにより、原画像との誤差を減少させることができ、主観画質を向上させることができる。
【０５５７】
なお、本実施の形態では、無彩色値域のオフセット精度の向上、およびクラス分割の細分化を行っているが、これに限らず、主観画質に影響しそうな範囲の値に対して、クラス分割を細分化したり、オフセット精度を向上させたりすれば、主観画質を向上させることができる。また、輝度の画素値においても、主観画質上、画質劣化が目立ちやすい画素値域に対して、同様にオフセット精度を上げたり、クラス分割を細分化したりする構成でも同様の効果を奏することができる。
【０５５８】
まず、オフセットの精度を向上させる場合について、図３５を参照して説明する。図３５は、オフセットの精度を向上させる場合についての概要を示す図である。図３５に示すように、オフセットの精度を向上させる場合、色差の画素値１２８付近のオフセットの精度を高精度にし、これ以外の値域のオフセットの精度を低精度とする。
【０５５９】
また、オフセット情報格納部６２１は、オフセットが高精度の値域のオフセットについては、ｎＢビット（例えばｎＢ＝８）の格納領域を確保し、オフセットが低精度の値域のオフセットについては、ｎＡビット（例えばｎＡ＝６）の格納領域を確保している。なお、記憶領域に余裕があればｎＢビット統一してもよい。この場合は、実装が容易となる。
【０５６０】
また、オフセットクリップ部８１２は、オフセットが高精度の値域と低精度の値域とで、クリップ範囲を切り換える。例えば、オフセットが低精度の値域については、クリップ範囲を、−２ｎＡ／２〜２ｎＡ／２−１とし、オフセットが高精度の値域については、クリップ範囲を、−２ｎＢ／２〜２ｎＢ／２−１とする。
【０５６１】
次に、クラス分類を細分化する場合について、図３６を参照して説明する。図３６はクラス分類を細分化する場合の概要を示す図であり、（ａ）は変換テーブルを示し、（ｂ）〜（ｄ）はクラス分割を説明するための図である。
【０５６２】
そして、クラス分類を細分化する場合は、オフセット情報格納部６２１における色差用のリストメモリにおいて、“sao_type_idx”＝５に相当するオフセット格納領域を、クラス分類数に応じて確保する。
【０５６３】
また、クラス分類部６２４において、ＢＯの場合に、画素値からクラスを導出する際に、対象画素の画素値が無彩色値域かどうかを含めて判定する。具体的には、例えば図３６（ａ）に示す変換テーブル２５０１のいずれかを用いて、クラス分類を行う。
【０５６４】
変換テーブル２５０１では、“class_idx = BoTbl[sao_type_idx][pic[x]/4]”により、クラス分類を行っており、図２９の変換テーブル１３０１、１３０２よりも、より細かい画素値に対してクラスが割り当てられている。
【０５６５】
また、変換テーブル２５０１の「ＢｏＴｂｌ［ＢＯ＿０］［ｐｉｘ／４］（ａ）」では、クラスを１６個に分け、無彩色値域を細分化し、中間階調域（ｐｉｘ／４＝１６〜２１，４２〜４７）を粗くした例を示している（図３６（ｂ））。また、「ＢｏＴｂｌ［ＢＯ＿０］［ｐｉｘ／４］（ｂ）」では、クラスを１６個に分けるとともに、オフセット有りの値域を狭め、クラス数とクラス幅の最大値を維持しつつ無彩色値域を細分化した例を示している（図３６（ｃ））。また、「ＢｏＴｂｌ［ＢＯ＿０］［ｐｉｘ／４］（ｃ）」では、クラスを１８個に分け、無彩色付近の値域を細分化するとともに、クラス幅の最大値も維持した例を示している（図３６（ｄ））。また、この他にも例を挙げれば、中間階調域のクラス幅を無彩色値域のクラス幅よりも相対的に大きくし、全体のクラス数を減らすことで、無彩色値域の補正精度を従来通り保ったまま、オフセット格納領域を削減することができる。これは、中間階調域におけるオフセット補正の使用頻度が、無彩色領域よりも低いことから可能である。
【０５６６】
また、オフセットの精度向上と、無彩色値域におけるクラス分類の細分化とを併用した構成であってもよい。
【０５６７】
また、輝度を示す画素値と色差を示す画素値とで、オフセットの精度を異ならせる構成、すなわち、色差を示す画素値に対するオフセットの精度を、輝度を示す画素値に対するオフセットの精度より粗くする構成であってもよい。
【０５６８】
（付記事項７）
また、オフセットの加算を、無彩色（＝色差の画素値１２８）に近づける方向に行う構成であってもよい。すなわち、オフセット加算部６２６は、画素値が１２８以上と１２８未満とで、加算するオフセットの符号を逆にして扱ってもよい。例えば、オフセットａ のとき、ｘ’＝ｘ＋ａ（ｘ＜１２８），ｘ’＝ｘ−ａ（ｘ≧１２８）としてもよい。
【０５６９】
また、オフセット加算後の画素値が１２８をまたぐような場合、１２８でクリップする構成であってもよい。例えば、画素値が「１２６（緑の側）」で、オフセットが「３」のときに、そのままオフセットを加算して、ｘ＝１２６＋３＝１２９とせずに、ｘ＝ｃｌｉｐ（１２６＋３，０，１２８）＝１２８としてもよい。ここで、ｃｌｉｐ（ｘ，ｙ，ｚ）は、ｘの値をｙ≦ｘ≦ｚに制限する処理を示す。
【０５７０】
また、例えば、画素値が「１２９（赤の側）」で、オフセットが「−４」のときも、そのままオフセットを加算して、ｘ＝１２９＋（−４）＝１２５とせずに、ｘ＝ｃｌｉｐ（１２９＋（−４），１２８，２５５）＝１２８としてもよい。
【０５７１】
（付記事項８）
また、色差において、中間階調域とその他の値域とに分けてオフセットを加算する構成であってもよい。例えば、図３７（ａ）に示すように、無彩色の画素値を考慮してクラス分類を行ってもよい。図３７（ａ）に示す例では、“sao_type_idx”＝５（ＢＯ＿０）の場合、中間階調域にクラスが割り当てられ、“sao_type_idx”＝６（ＢＯ＿１）の場合、中間階調域以外の値域にクラスが割り当てられている。
【０５７２】
また、図３７（ｂ）に示すように、無彩色の画素値を挟む２つの値域で非対称にクラス分類されていてもよい。図３７（ｂ）に示す例では、図３７（ａ）に示す例とクラスの幅は同じで区切りの位置が変更されている。
【０５７３】
また、図３７（ｃ）、（ｄ）に示すように、色差のチャネル（ＣｒおよびＣｂ）ごとに、異なるクラス分類を用いてもよい。図３７（ｃ）、（ｄ）に示す例では、色差（Ｃｒ）と色差（Ｃｂ）とでクラスの幅が異なっている。クラス幅の変更は、変換テーブル２５０１のようにクラス数を細分化することで可能である。
【０５７４】
また、図３７（ｅ）に示すように、色差では、ＢＯのタイプを１つにしてクラス分類を行う構成であってもよい。
【０５７５】
〔実施の形態７〕
本発明の他の実施の形態について図３８〜４０に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、オフセットの値そのものではなく、オフセットの値を予測符号化、すなわち、オフセットの値と当該オフセットの値の予測値とを用いて算出されるオフセット残差を符号化する点、およびオフセット予測値に「０」を設ける点である。
【０５７６】
一般的にＳＡＯでは、領域分類を示すクラスに応じてオフセットを符号化する。当該クラスに分類される画素が無い（クラスが空である）場合には「０」が符号化される。通常、近傍クラスおよび近傍領域のオフセットは近い値を有するため、既に復号したオフセット値を予測値とし差分を符号化すれば、符号量を削減することが可能である。しかしながら、クラスが空である場合には、逆に符号量が増加してしまう。
【０５７７】
そこで、本実施形態では、オフセットの予測値に「０」を含め、「０」を含む複数の予測値候補から１つの予測値を選択し、予測差分を符号化することによりオフセットの符号量を低減している。
【０５７８】
これにより、クラスが空であっても、当該クラスに分類される画素が有り、オフセットが符号化される場合であっても、適した予測値を割り当てることができるため、予測符号化により符号量を削減することができる。
【０５７９】
本実施形態に係るオフセット情報復号部６１１’の構成について、図３８を参照して説明する。オフセット情報復号部６１１’は、図２２のオフセット情報復号部６１１の代わりに設けられているものであり、オフセット残差復号部６５１、オフセット復元部６５２、予測値導出部６５３を含む構成である。また、予測値導出部６５３は、予測候補フラグ復号部６６１、固定予測値算出部６６２、符号化予測値算出部６６３、および予測値候補選択部６６４を含む構成である。
【０５８０】
オフセット残差復号部６５１は、符号化データ＃１に含まれるＱＡＯＵ情報からオフセット残差を復号し、復号したオフセット残差をオフセット復元部６５２へ供給する。
【０５８１】
予測値導出部６５３は、オフセットの予測値を導出する。予測候補フラグ復号部６６１は、予測候補フラグをＱＡＯＵ情報から復号し、復号した予測候補フラグを予測値候補選択部６６４に供給する。なお、予測候補フラグ復号部６６１は、以前に復号されたオフセット値が「０」である場合には、予測候補フラグを復号しない構成であってもよい。
【０５８２】
固定予測値算出部６６２は、当該クラスに分類される画素が無い場合に符号化されるオフセットである固定値（ここでは「０」）を予測値として算出し、予測値候補選択部６６４に供給する。
【０５８３】
符号化予測値算出部６６３は、既に復号されたオフセットをオフセット情報格納部６２１から読み出し予測値を算出し、予測値候補選択部６６４に供給する。
【０５８４】
予測値候補選択部６６４は、予測候補フラグに応じて、固定予測値算出部６６２から供給された予測値および符号化予測値算出部６６３から供給された予測値から、オフセット復元部６５２に供給する予測値を選択する。
【０５８５】
オフセット復元部６５２は、予測値候補選択部６６４から供給された予測値（pred）とオフセット残差復号部６５１から供給されたオフセット残差（sao_offset）とから、次の式にしたがって、オフセット（Offset）を復元する。
“Offset”＝“pred”+“sao_offset”
ここで、分類される画素がないクラス（空のクラス）がある場合に、符号量が増えてしまう理由について、図３９を参照して説明する。図３９は、空のクラスがある場合の概要を示す図である。図３９に示すように、空でないクラスには、当該クラスのオフセットが符号化されている。そして、クラス毎に、前回のオフセットを予測値として該予測値とオフセットとの差分が符号化される。しかしながら、空のクラスがあると、予測値が「０」となり、差分値が大きくなってしまう。これにより、符号量が増大してしまう。
【０５８６】
そこで、本実施形態では、予測候補フラグにより、予測値を「０」と「直前の（０以外の）オフセット」とから選択できるようにしている。
【０５８７】
予測候補フラグを用いる場合のシンタクスについて、図４０を参照して説明する。図４０は、予測候補フラグを用いる場合のシンタクス２９０１を示す図である。図４０に示すように、予測候補フラグ“sao_pred_flag”を追加し、“sao_pred_flag”＝０であれば直前に復号した（０でない）オフセットを予測値offsetpとし、“sao_pred_flag”＝１か、または最初のオフセットであれば、予測値offsetp＝０とする。なお、シンタクス２９０１において、“sao_offset_delta”は予測値からの差分ｄを表し、“sao_offset[sao_curr_depth][ys][xs]”＝“offsetp +d”となる。
【０５８８】
なお、オフセットタイプに応じて、予測候補フラグを用いない構成としてもよい。例えば、ＥＯの場合は、予測候補フラグを用いず、ＢＯの場合は、予測候補フラグを用いる構成にしてもよい。これは、ＢＯでは、画素値の分布次第で、空のクラスがしばしば発生するためである。
【０５８９】
また、オフセットタイプに応じて、予測符号化自体を行うか否か決定する構成であってもよい。例えば、ＥＯの場合は、予測符号化を行い、ＢＯの場合は予測符号化を行わない構成であってもよい。
【０５９０】
（付記事項９）
また、上記実施の形態３〜７において、イントラ予測モードを用いて、ＬＣＵ単位で、エッジオフセットのクラスを推定したり、制限したり、並べ替えを行ったりしてもよい。
【０５９１】
ＳＡＯのＥＯタイプとして選択されるエッジ方向は、イントラ予測モードと相関があると考えられる。このため、ＳＡＯのＱＡＯＵと対応する位置にあるＣＵのイントラ予測モードを参照すれば、ＥＯクラスの選択に利用することができる。
【０５９２】
例えば、イントラ予測モードにより、ＥＯクラスを推定して決定したり、ＥＯクラスの候補を制限したり、あるいは、ＥＯクラスの順序（インデックス）を、選択される可能性が高い順に並べ替えたりすることができる。
【０５９３】
これは、ＳＡＯの各階層のブＱＡＯＵのサイズがＣＵと同じサイズの場合、例えばＳＡＯのＱＡＯＵの最大サイズがＬＣＵサイズに等しくなるように画像が分割される場合であれば、特に容易に実現可能である。
【０５９４】
（付記事項１０）
従来の適応オフセットフィルタでは、オフセットの種類（タイプ、クラス）が多いため、大きなメモリサイズが必要となってしまう可能性がある。そこで、本実施の形態では、メモリサイズの増大を抑制しつつ、ブロック歪みを低減することのできる画像フィルタ装置等を実現している。
【０５９５】
本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値に、複数のオフセットの中から選択したオフセットを加算する画像フィルタ装置であって、各単位領域に含まれる画素の画素値に加算するオフセットを該単位領域ごとに決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、当該単位領域に含まれる画素の画素値に加算するフィルタ手段と、を備え、上記オフセット決定手段は、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも選択できるオフセット数が制限されたオフセットの中から当該単位領域に含まれる画素の画素値に加算するオフセットを決定することを特徴としている。
【０５９６】
上記の構成によれば、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも制限されたオフセットの中から、加算するオフセットが決定される。
【０５９７】
単位領域のサイズが小さい場合、その中に含まれる画素数は少なくなり、また、その画素同士は、近似した値を持っている可能性が高い。よって、単位領域のサイズが小さい場合は、選択可能なオフセット数を制限したとしても、オフセット適用後の画像に与える影響は小さい。また、選択可能なオフセット数を制限することで、必要なメモリの容量を減らすことができる。
【０５９８】
したがって、上記の構成によれば、オフセット適用後の画像に与える影響を低くしつつ、メモリの使用量を削減することができる。また、選択可能なオフセット数が少なくなることで、符号量が削減でき、符号化効率が向上する。
【０５９９】
上記課題を解決するために、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、各単位領域に含まれる画素の画素値に加算するオフセットを該単位領域ごとに決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、当該単位領域に含まれる画素の画素値に加算するフィルタ手段と、を備え、上記フィルタ手段は、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも精度を粗くしたオフセットを加算することを特徴としている。
【０６００】
上記の構成によれば、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも精度が粗いオフセットが加算される。
【０６０１】
単位領域のサイズが小さい場合、その中に含まれる画素数は少なくなり、また、その画素同士は、近似した値を持っている可能性が高い。よって、単位領域のサイズが小さい場合は、オフセットの精度を粗くしても、量子化誤差に与える影響が小さい。したがって、オフセット適用後の画像に与える影響も小さい。また、オフセットの精度を粗くすることで、必要なメモリの容量を減らすことができる。
【０６０２】
したがって、上記の構成によれば、オフセット適用後の画像に与える影響を低くしつつ、メモリの使用量を削減することができる。また、オフセットの精度が粗くなることで、符号量が削減でき、符号化効率が向上する。
【０６０３】
本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値に、適応オフセット（ＳＡＯ：Sample Adaptive Offset）を施す画像フィルタ装置であって、各単位領域に含まれる画素の画素値に加算するオフセットの種類を該単位領域ごとに決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットの種類に応じたオフセットを、当該単位領域に含まれる画素の画素値に加算するフィルタ手段と、を備え、上記オフセット決定手段は、オフセットを加算する対象画素の画素値が最大値および最小値の付近については、オフセットの種類をバンドオフセット（ＢＯ）に決定し、それ以外の値域の画素についてはエッジオフセット（ＥＯ）に決定することを特徴としている。
【０６０４】
上記の構成によれば、適応オフセットを施す場合に、画素値が、最大値および最小値の付近の画素に対しては、バンドオフセットが適用され、これ以外の値域の画素についてはエッジオフセットが適用される。
【０６０５】
高画素値域および低画素値域では、エッジよりも画素値の方が誤差に影響を及ぼし易いという傾向があるので、上記の構成により、誤差補正の効率が高まり、符号化効率を向上させることができる。
【０６０６】
また、１つのタイプでバンドオフセットとエッジオフセットとを併用すれば、適応オフセットのタイプ数を減らすことができ、メモリの使用量および処理量を削減することができる。
【０６０７】
なお、上記の構成において、バンドオフセットとは、処理対象の画素の画素値の大きさに応じて、当該処理対象画素の画素値に複数のオフセットの何れかを加算するオフセット処理のことをいう（以下同様）。また、上記の構成において、エッジオフセットとは、処理対象の画素の画素値と当該処理対象の画素の周辺の画素の画素値との差分に応じて、当該処理対象画素の画素値に複数のオフセットの何れかを加算するオフセット処理のことをいう（以下同様）。
【０６０８】
本発明に係る画像フィルタ装置では、上記オフセット決定手段は、画素値が最小値から最大値の４分の１までと、最大値の４分の３から最大値までの値域の画素については、バンドオフセットに決定し、これ以外の値域についてはエッジオフセットに決定するものであってもよい。
【０６０９】
上記の構成によれば、バンドオフセットが適用される画素とエッジオフセットが適用される画素とを明確に分けることができる。
【０６１０】
本発明に係る画像フィルタ装置は、入力画像に、適応オフセット（ＳＡＯ：Sample Adaptive Offset）を施す画像フィルタ装置であって、エッジオフセット（ＥＯ）を適用するときのクラスを決定するために行うエッジの判定を、対象画素の水平方向に存在する画素のみを参照して行うクラス分類手段と、エッジオフセット（ＥＯ）を適用する場合、上記クラス分類手段が分類したクラスに対応するオフセットを加算するフィルタ手段と、を備えていることを特徴としている。
【０６１１】
上記の構成によれば、エッジの判定に、水平方向の画素しか参照しないので、上方向の画素も参照する場合と比較して、必要なメモリ量を削減することができる。また、上方向の境界判定が不要となるので、処理量も削減することができる。
【０６１２】
本発明に係る画像フィルタ装置では、上記クラス分類手段は、対象画素から水平方向に２画素離れた位置にある画素を参照してエッジの判定を行うものであってもよい。
【０６１３】
上記の構成によれば、対象画素から２画素離れた画素を参照するので、エッジの角度が浅い場合であっても、エッジを検出することができる。
【０６１４】
本発明に係る画像フィルタ装置は、入力画像に、適応オフセット（ＳＡＯ：Sample Adaptive Offset）を施す画像フィルタ装置であって、色差を示す画素値が、最大値および最小値の中央の値である中央値付近のクラスの分割幅を、その他の値域よりも細分化して、バンドオフセット（ＢＯ）を適用するときのクラスを決定するクラス分類手段と、バンドオフセット（ＢＯ）を適用する場合、上記クラス分類手段が分類したクラスに対応するオフセットを加算するフィルタ手段と、を備えていることを特徴としている。
【０６１５】
上記の構成によれば、色差を示す画素値が、最大値および最小値の中央の値である中央値付近のクラスの分割幅を、その他の値域よりも細分化して、バンドオフセット（ＢＯ）を適用するときのクラスを決定される。
【０６１６】
色差の画素値が中央値のとき、当該画素は無彩色となる。無彩色の誤差は、人の目に付き易く、主観画質が低下する。そこで、上記の構成のように、中央値近辺のクラス幅を細分化すれば、中央値近辺の画素に対し、細かくオフセットを設定することができる。これにより、主観画質を向上させることができる。
【０６１７】
本発明に係る画像フィルタ装置では、上記フィルタ手段は、オフセット加算前の画素値と加算後の画素値との間に、上記中央値が存在する場合、オフセット加算後の画素値を上記中央値とするものであってもよい。
【０６１８】
上記の構成によれば、中央値を超えてオフセットが加算されることはなくなる。色差の画素値が中央値の画素は無彩色であり、中央値を挟んだ両側では、人の目で知覚できる色が変わってしまう。そこで、上記の構成によれば、オフセットが加算されたことにより、人が近くする色が変わってしまうことを防止することができる。
【０６１９】
本発明に係る画像フィルタ装置は、入力画像に、適応オフセット（ＳＡＯ：Sample Adaptive Offset）を施す画像フィルタ装置であって、色差を示す画素値が、最大値および最小値の中央の値である中央値付近の画素に対し、その他の値域の画素よりも精度が高いオフセットを加算するフィルタ手段を備えていることを特徴としている。
【０６２０】
上記の構成によれば、色差を示す画素値が、最大値および最小値の中央の値である中央値付近の画素に対し、その他の値域の画素よりも精度が高いオフセットを加算する。
【０６２１】
色差の画素値が中央値のとき、当該画素は無彩色となる。無彩色の誤差は、人の目に付き易く、主観画質が低下する。そこで、上記の構成のように、中央値近辺では、加算するオフセットの精度を向上させれば、中央値近辺の画素に対し、細かくオフセットを加算することができる。これにより、主観画質を向上させることができる。
【０６２２】
本発明に係るオフセット復号装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを復号するオフセット復号装置であって、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセット、または予め定められた値から導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、および上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えていることを特徴としている。
【０６２３】
上記の構成によれば、残差からオフセットを復号するので、オフセットをそのまま符号化する場合よりも、符号量の少なくすることができる。また、残差を求めるための予測値を復号済みのオフセットまたは予め定められた値から導出するので、復号済みのオフセットのみを用いることにより、差分データの符号量が、そのまま符号化するときよりも大きくなってしまうことを防止することができる。
【０６２４】
なお、予め定められた値としては、例えば「０」を挙げることができる。
【０６２５】
本発明に係るオフセット符号化装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを符号化するオフセット符号化装置であって、各オフセットの予測値を、符号化済みのオフセット、または予め定められた値から導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段と、を備えていることを特徴としている。
【０６２６】
上記の構成によれば、残差からオフセットを復号するので、オフセットをそのまま符号化する場合よりも、符号量の少なくすることができる。また、残差を求めるための予測値を復号済みのオフセットまたは予め定められた値から導出するので、復号済みのオフセットのみを用いることにより、差分データの符号量が、そのまま符号化するときよりも大きくなってしまうことを防止することができる。
【０６２７】
本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、予測値を、復号済みのオフセットおよび予め定められた値のいずれから導出するかを示す予測値導出情報を含み、上記画像フィルタは、上記符号化データに含まれる予測値導出情報を参照して、予測値を導出し、オフセットを復号する、ことを特徴としている。
【０６２８】
上記の構成によれば、予測値を、復号済みのオフセットとするか、または予め定められた値とするかを、予測値導出情報により決定できる。
【０６２９】
（応用例）
上述した動画像復号装置１（１’）および動画像符号化装置２（２’）は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像（ＣＧおよびＧＵＩを含む）であってもよい）。
【０６３０】
まず、上述した動画像復号装置１および動画像符号化装置２を、動画像の送信および受信に利用できることを、図４５を参照して説明する。
【０６３１】
図４５（ａ）は、動画像符号化装置２を搭載した送信装置Ａの構成を示したブロック図である。図４５（ａ）に示すように、送信装置Ａは、動画像を符号化することによって符号化データを得る符号化部Ａ１と、符号化部Ａ１が得た符号化データで搬送波を変調することによって変調信号を得る変調部Ａ２と、変調部Ａ２が得た変調信号を送信する送信部Ａ３と、を備えている。上述した動画像符号化装置２は、この符号化部Ａ１として利用される。
【０６３２】
送信装置Ａは、符号化部Ａ１に入力する動画像の供給源として、動画像を撮像するカメラＡ４、動画像を記録した記録媒体Ａ５、動画像を外部から入力するための入力端子Ａ６、および画像を生成または加工する画像処理部Ａ７を更に備えていてもよい。図４５（ａ）においては、これら全てを送信装置Ａが備えた構成を例示しているが、一部を省略しても構わない。
【０６３３】
なお、記録媒体Ａ５は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体Ａ５と符号化部Ａ１との間に、記録媒体Ａ５から読み出した符号化データを記録用の符号化方式に従って復号する復号部（不図示）を介在させるとよい。
【０６３４】
図４５（ｂ）は、動画像復号装置１を搭載した受信装置Ｂの構成を示したブロック図である。図４５（ｂ）に示すように、受信装置Ｂは、変調信号を受信する受信部Ｂ１と、受信部Ｂ１が受信した変調信号を復調することによって符号化データを得る復調部Ｂ２と、復調部Ｂ２が得た符号化データを復号することによって動画像を得る復号部Ｂ３と、を備えている。上述した動画像復号装置１は、この復号部Ｂ３として利用される。
【０６３５】
受信装置Ｂは、復号部Ｂ３が出力する動画像の供給先として、動画像を表示するディスプレイＢ４、動画像を記録するための記録媒体Ｂ５、および、動画像を外部に出力するための出力端子Ｂ６を更に備えていてもよい。図４５（ｂ）においては、これら全てを受信装置Ｂが備えた構成を例示しているが、一部を省略しても構わない。
【０６３６】
なお、記録媒体Ｂ５は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部Ｂ３と記録媒体Ｂ５との間に、復号部Ｂ３から取得した動画像を記録用の符号化方式に従って符号化する符号化部（不図示）を介在させるとよい。
【０６３７】
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送（ここでは、送信先が予め特定されていない送信態様を指す）であってもよいし、通信（ここでは、送信先が予め特定されている送信態様を指す）であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、および有線通信の何れによって実現してもよい。
【０６３８】
例えば、地上デジタル放送の放送局（放送設備など）／受信局（テレビジョン受像機など）は、変調信号を無線放送で送受信する送信装置Ａ／受信装置Ｂの一例である。また、ケーブルテレビ放送の放送局（放送設備など）／受信局（テレビジョン受像機など）は、変調信号を有線放送で送受信する送信装置Ａ／受信装置Ｂの一例である。
【０６３９】
また、インターネットを用いたＶＯＤ（Video On Demand）サービスや動画共有サービスなどのサーバ（ワークステーションなど）／クライアント（テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど）は、変調信号を通信で送受信する送信装置Ａ／受信装置Ｂの一例である（通常、ＬＡＮにおいては伝送媒体として無線または有線の何れかが用いられ、ＷＡＮにおいては伝送媒体として有線が用いられる）。ここで、パーソナルコンピュータには、デスクトップ型ＰＣ、ラップトップ型ＰＣ、およびタブレット型ＰＣが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
【０６４０】
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置Ａおよび受信装置Ｂの双方として機能する。
【０６４１】
次に、上述した動画像復号装置１および動画像符号化装置２を、動画像の記録および再生に利用できることを、図４６を参照して説明する。
【０６４２】
図４６（ａ）は、上述した動画像符号化装置２を搭載した記録装置Ｃの構成を示したブロック図である。図４６（ａ）に示すように、記録装置Ｃは、動画像を符号化することによって符号化データを得る符号化部Ｃ１と、符号化部Ｃ１が得た符号化データを記録媒体Ｍに書き込む書込部Ｃ２と、を備えている。上述した動画像符号化装置２は、この符号化部Ｃ１として利用される。
【０６４３】
なお、記録媒体Ｍは、（１）ＨＤＤ（Hard Disk Drive）やＳＳＤ(Solid State Drive)などのように、記録装置Ｃに内蔵されるタイプのものであってもよいし、（２）ＳＤメモリカードやＵＳＢ（Universal Serial Bus）フラッシュメモリなどのように、記録装置Ｃに接続されるタイプのものであってもよいし、（３）ＤＶＤ（Digital Versatile Disc）やＢＤ（Blu-ray Disc:登録商標）などのように、記録装置Ｃに内蔵されたドライブ装置（不図示）に装填されるものであってもよい。
【０６４４】
また、記録装置Ｃは、符号化部Ｃ１に入力する動画像の供給源として、動画像を撮像するカメラＣ３、動画像を外部から入力するための入力端子Ｃ４、動画像を受信するための受信部Ｃ５、および、画像を生成または加工する画像処理部Ｃ６を更に備えていてもよい。図４６（ａ）においては、これら全てを記録装置Ｃが備えた構成を例示しているが、一部を省略しても構わない。
【０６４５】
なお、受信部Ｃ５は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部Ｃ５と符号化部Ｃ１との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部（不図示）を介在させるとよい。
【０６４６】
このような記録装置Ｃとしては、例えば、ＤＶＤレコーダ、ＢＤレコーダ、ＨＤ（Hard Disk）レコーダなどが挙げられる（この場合、入力端子Ｃ４または受信部Ｃ５が動画像の主な供給源となる）。また、カムコーダ（この場合、カメラＣ３が動画像の主な供給源となる）、パーソナルコンピュータ（この場合、受信部Ｃ５または画像処理部Ｃ６が動画像の主な供給源となる）、スマートフォン（この場合、カメラＣ３または受信部Ｃ５が動画像の主な供給源となる）なども、このような記録装置Ｃの一例である。
【０６４７】
図４６（ｂ）は、上述した動画像復号装置１を搭載した再生装置Ｄの構成を示したブロックである。図４６（ｂ）に示すように、再生装置Ｄは、記録媒体Ｍに書き込まれた符号化データを読み出す読出部Ｄ１と、読出部Ｄ１が読み出した符号化データを復号することによって動画像を得る復号部Ｄ２と、を備えている。上述した動画像復号装置１は、この復号部Ｄ２として利用される。
【０６４８】
なお、記録媒体Ｍは、（１）ＨＤＤやＳＳＤなどのように、再生装置Ｄに内蔵されるタイプのものであってもよいし、（２）ＳＤメモリカードやＵＳＢフラッシュメモリなどのように、再生装置Ｄに接続されるタイプのものであってもよいし、（３）ＤＶＤやＢＤなどのように、再生装置Ｄに内蔵されたドライブ装置（不図示）に装填されるものであってもよい。
【０６４９】
また、再生装置Ｄは、復号部Ｄ２が出力する動画像の供給先として、動画像を表示するディスプレイＤ３、動画像を外部に出力するための出力端子Ｄ４、および、動画像を送信する送信部Ｄ５を更に備えていてもよい。図４６（ｂ）においては、これら全てを再生装置Ｄが備えた構成を例示しているが、一部を省略しても構わない。
【０６５０】
なお、送信部Ｄ５は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部Ｄ２と送信部Ｄ５との間に、動画像を伝送用の符号化方式で符号化する符号化部（不図示）を介在させるとよい。
【０６５１】
このような再生装置Ｄとしては、例えば、ＤＶＤプレイヤ、ＢＤプレイヤ、ＨＤＤプレイヤなどが挙げられる（この場合、テレビジョン受像機等が接続される出力端子Ｄ４が動画像の主な供給先となる）。また、テレビジョン受像機（この場合、ディスプレイＤ３が動画像の主な供給先となる）、デスクトップ型ＰＣ（この場合、出力端子Ｄ４または送信部Ｄ５が動画像の主な供給先となる）、ラップトップ型またはタブレット型ＰＣ（この場合、ディスプレイＤ３または送信部Ｄ５が動画像の主な供給先となる）、スマートフォン（この場合、ディスプレイＤ３または送信部Ｄ５が動画像の主な供給先となる）、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイＤ３または送信部Ｄ５が動画像の主な供給先となる)なども、このような再生装置Ｄの一例である。
【０６５２】
（ソフトウェアによる構成）
最後に、動画像復号装置１（１’）および動画像符号化装置２（２’）の各ブロック、特に可変長符号復号部１３、動きベクトル復元部１４、インター予測画像生成部１６、イントラ予測画像生成部１７、予測方式決定部１８、逆量子化・逆変換部１９、デブロッキングフィルタ４１、適応フィルタ５０、適応オフセットフィルタ６０（６０’）、変換・量子化部２１、可変長符号符号化部２２、逆量子化・逆変換部２３、イントラ予測画像生成部２５、インター予測画像生成部２６、動きベクトル検出部２７、予測方式制御部２８、動きベクトル冗長性削除部２９、デブロッキングフィルタ３３、適応フィルタ７０、適応オフセットフィルタ８０（８０’）は、集積回路（ＩＣチップ）上に形成された論理回路によってハードウェア的に実現していてもよいし、ＣＰＵ（central processing unit）を用いてソフトウェア的に実現してもよい。
【０６５３】
後者の場合、動画像復号装置１および動画像符号化装置２は、各機能を実現する制御プログラムの命令を実行するＣＰＵ、上記プログラムを格納したＲＯＭ（read only memory）、上記プログラムを展開するＲＡＭ（random access memory）、上記プログラムおよび各種データを格納するメモリ等の記憶装置（記録媒体）などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである動画像復号装置１および動画像符号化装置２の制御プログラムのプログラムコード（実行形式プログラム、中間コードプログラム、ソースプログラム）をコンピュータで読み取り可能に記録した記録媒体を、上記の動画像復号装置１および動画像符号化装置２に供給し、そのコンピュータ（またはＣＰＵやＭＰＵ（micro processing unit））が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
【０６５４】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー（登録商標）ディスク／ハードディスク等の磁気ディスクやＣＤ−ＲＯＭ（compact disc read-only memory）／ＭＯディスク（magneto-optical disc）／ＭＤ（Mini Disc）／ＤＶＤ（digital versatile disc）／ＣＤ−Ｒ（CD Recordable）等の光ディスクを含むディスク類、ＩＣカード（メモリカードを含む）／光カード等のカード類、マスクＲＯＭ／ＥＰＲＯＭ（erasable programmable read-only memory）／ＥＥＰＲＯＭ（electrically erasable and programmable read-only memory）（登録商標）／フラッシュＲＯＭ等の半導体メモリ類、あるいはＰＬＤ（Programmable logic device）やＦＰＧＡ（Field Programmable Gate Array）等の論理回路類などを用いることができる。
【０６５５】
また、動画像復号装置１および動画像符号化装置２を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、ＬＡＮ（local area network）、ＩＳＤＮ（integrated services digital network）、ＶＡＮ（value-added network）、ＣＡＴＶ（community antenna television/cable television）通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、ＩＥＥＥ（institute of electrical and electronic engineers）１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ（asymmetric digital subscriber loop）回線等の有線でも、ＩｒＤＡ（infrared data association）やリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＩＥＥＥ８０２．１１無線、ＨＤＲ（high data rate）、ＮＦＣ（Near Field Communication）、ＤＬＮＡ（Digital Living Network Alliance）、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【０６５６】
本発明は上述した各実施の形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０６５７】
本発明は、画像データにオフセットフィルタリングを行う画像フィルタに好適に用いることができる。また、符号化データを復号する復号装置、および、符号化データを符号化する符号化装置に好適に適用することができる。
【符号の説明】
【０６５８】
１                  動画像復号装置（復号装置）
４１                デブロッキングフィルタ
５０                適応フィルタ
６０、６０’        適応オフセットフィルタ（画像フィルタ装置）
６１１、６１１’    オフセット情報復号部（オフセット復号装置、決定手段、オフセット属性設定手段、オフセット復号手段、オフセット残差復号手段、予測値導出手段）
６１２              ＱＡＯＵ構造復号部
６１３              オフセット属性設定部（オフセット属性設定手段）
６２１              オフセット情報格納部
６２２              ＱＡＯＵ制御部
６２３              オフセットタイプ導出部
６２４              クラス分類部（算出手段、ビットシフト手段、分類手段）
６２５              オフセット導出部（オフセット逆シフト手段）
６２６              オフセット加算部（オフセット手段）
２                  動画像符号化装置（符号化装置）
３３                デブロッキングフィルタ
７０                適応フィルタ
８０、８０’        適応オフセットフィルタ（画像フィルタ装置）
８１１              オフセット算出部
８１２              オフセットクリップ部
８１３              オフセット情報選択部
８１４              オフセット残差導出部
８１５              オフセット属性設定部（オフセット属性設定手段）
８１６              オフセットシフト部（オフセットシフト手段）
【図１】
0005973434.tif 000002
【図２】
0005973434.tif 000003
【図３】
0005973434.tif 000004
【図４】
0005973434.tif 000005
【図５】
0005973434.tif 000006
【図６】
0005973434.tif 000007
【図７】
0005973434.tif 000008
【図８】
0005973434.tif 000009
【図９】
0005973434.tif 000010
【図１０】
0005973434.tif 000011
【図１１】
0005973434.tif 000012
【図１２】
0005973434.tif 000013
【図１３】
0005973434.tif 000014
【図１４】
0005973434.tif 000015
【図１５】
0005973434.tif 000016
【図１６】
0005973434.tif 000017
【図１７】
0005973434.tif 000018
【図１８】
0005973434.tif 000019
【図１９】
0005973434.tif 000020
【図２０】
0005973434.tif 000021
【図２１】
0005973434.tif 000022
【図２２】
0005973434.tif 000023
【図２３】
0005973434.tif 000024
【図２４】
0005973434.tif 000025
【図２５】
0005973434.tif 000026
【図２６】
0005973434.tif 000027
【図２７】
0005973434.tif 000028
【図２８】
0005973434.tif 000029
【図２９】
0005973434.tif 000030
【図３０】
0005973434.tif 000031
【図３１】
0005973434.tif 000032
【図３２】
0005973434.tif 000033
【図３３】
0005973434.tif 000034
【図３４】
0005973434.tif 000035
【図３５】
0005973434.tif 000036
【図３６】
0005973434.tif 000037
【図３７】
0005973434.tif 000038
【図３８】
0005973434.tif 000039
【図３９】
0005973434.tif 000040
【図４０】
0005973434.tif 000041
【図４１】
0005973434.tif 000042
【図４２】
0005973434.tif 000043
【図４３】
0005973434.tif 000044
【図４４】
0005973434.tif 000045
【図４５】
0005973434.tif 000046
【図４６】
0005973434.tif 000047