(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024173973
(43)【公開日】2024-12-13
(54)【発明の名称】画像フィルタ装置、フィルタ方法および動画像復号装置
(51)【国際特許分類】
H04N 19/117 20140101AFI20241206BHJP
H04N 19/136 20140101ALI20241206BHJP
H04N 19/176 20140101ALI20241206BHJP
H04N 19/70 20140101ALI20241206BHJP
【FI】
H04N19/117
H04N19/136
H04N19/176
H04N19/70
【審査請求】有
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2024164139
(22)【出願日】2024-09-20
(62)【分割の表示】P 2022204706の分割
【原出願日】2012-06-22
(31)【優先権主張番号】P 2011139961
(32)【優先日】2011-06-23
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2011215476
(32)【優先日】2011-09-29
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】山崎 隆紀
(72)【発明者】
【氏名】猪飼 知宏
(72)【発明者】
【氏名】山本 智幸
(72)【発明者】
【氏名】八杉 将伸
(57)【要約】
【課題】メモリサイズの増大を抑制しつつ、ブロック歪みを低減することのできる画像フィルタ装置を実現する。
【解決手段】適応オフセットフィルタ(60)は、入力画像の各画素値にオフセットを加算するものであり、オフセットタイプ指定情報を参照し、入力画像の対象単位領域におけるオフセット属性を設定し、設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを復号し、上記入力画像の各画素値に上記オフセットを加算する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
符号化データを参照し、オフセット値域およびシフト値を設定するオフセット属性設定部と、
設定された上記オフセット値域に制限されたオフセットを復号するオフセット復号部と、
上記シフト値に応じて上記オフセットを左シフトし、複数の単位領域から構成される入力画像の各画素値に、上記左シフトされたオフセットを加算するフィルタ処理部とを備えることを特徴とする画像フィルタ装置。
【請求項2】
上記符号化データは、少なくとも上記入力画像の画素値のビット深度を含み、
上記オフセット属性設定部は、上記画素値のビット深度に応じて、上記オフセット値域を設定することを特徴とする請求項1に記載の画像フィルタ装置。
【請求項3】
上記オフセット属性設定部は、オフセットビット深度を、上記画素値のビット深度が10以下の場合、上記画素値のビット深度と等しい値に設定し、上記画素値のビット深度が11以上の場合、10に設定し、上記オフセット属性設定部は、上記オフセット値域の最大値が、-2(オフセットビット深度-K-1)から2(オフセットビット深度-K-1)-1の範囲となるように設定することを特徴とする請求項2に記載の画像フィルタ装置。
【請求項4】
上記Kの値は、4であることを特徴とする請求項3に記載の画像フィルタ装置。
【請求項5】
上記シフト値は(画素値のビット深度-(画素値のビット深度と10の小さい方))に設定されることを特徴とする請求項3または4に記載の画像フィルタ装置。
【請求項6】
符号化データを参照し、オフセット値域およびシフト値を設定するステップと、
設定された上記オフセット値域に制限されたオフセットを復号するステップと、
上記オフセットを左シフトし、複数の単位領域から構成される入力画像の各画素値に、上記左シフトされたオフセットを加算するステップとを少なくとも含むことを特徴とするフィルタ方法。
【請求項7】
上記符号化データは、少なくとも上記入力画像の画素値のビット深度を含み、
上記オフセット値域は上記画素値のビット深度に応じて設定されることを特徴とする請求項6に記載のフィルタ方法。
【請求項8】
オフセットビット深度は、上記画素値のビット深度が10以下の場合、上記画素値のビット深度と等しい値に設定され、上記画素値のビット深度が11以上の場合、10に設定され、上記オフセット値域の最大値は、-2(オフセットビット深度-K-1)から2(オフセットビット深度-K-1)-1の範囲となるように設定されることを特徴とする請求項7に記載のフィルタ方法。
【請求項9】
上記Kの値は、4であることを特徴とする請求項8に記載のフィルタ方法。
【請求項10】
上記シフト値は(画素値のビット深度-(画素値のビット深度と10の小さい方))に設定されることを特徴とする請求項8または9に記載のフィルタ方法。
【請求項11】
符号化データを参照し、オフセット値域およびシフト値を設定するオフセット属性設定部と、
設定された上記オフセット値域に制限されたオフセットを復号するオフセット復号部と、
上記シフト値に応じて上記オフセットを左シフトし、複数の単位領域から構成される入力画像の各画素値に、上記左シフトされたオフセットを加算するフィルタ処理部とを備えることを特徴とする動画像復号装置。
【請求項12】
上記符号化データは、少なくとも上記入力画像の画素値のビット深度を含み、
上記オフセット属性設定部は、上記画素値のビット深度に応じて上記オフセット値域を設定することを特徴とする請求項11に記載の動画像復号装置。
【請求項13】
上記オフセット属性設定部は、オフセットビット深度を、上記画素値のビット深度が10以下の場合、上記画素値のビット深度と等しい値に設定し、上記画素値のビット深度が11以上の場合、10に設定し、上記オフセット属性設定部は、上記オフセット値域の最大値が、-2(オフセットビット深度-K-1)から2(オフセットビット深度-K-1)-1の範囲となるように設定することを特徴とする請求項12に記載の動画像復号装置。
【請求項14】
上記Kの値は、4であることを特徴とする請求項13に記載の動画像復号装置。
【請求項15】
上記シフト値は(画素値のビット深度-(画素値のビット深度と10の小さい方))に設定されることを特徴とする請求項13または14に記載の動画像復号装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像のフィルタリングを行う画像フィルタ装置に関する。また、画像フィルタによって参照されるオフセットを復号するオフセット復号装置、および、画像フィルタによってよって参照されるオフセットを符号化するオフセット符号化装置に関する。また、符号化データのデータ構造に関する。
【背景技術】
【0002】
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置(符号化装置)、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置(復号装置)が用いられている。具体的な動画像符号化方式としては、例えば、H.264/MPEG-4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている方式などが挙げられる。
【0003】
このような符号化方式において、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる最大符号化単位(LCU:Largest Coding Unit、ツリーブロックとも呼ばれる)、最大符号化単位を分割することにより得られる符号化単位(CU:Coding Unit、符号化ノードとも呼ばれる)、および、符号化単位を分割することより得られるブロックおよびパーティションからなる階層構造により管理され、多くの場合、ブロックを最小単位として符号化される。
【0004】
また、このような符号化方式においては、通常、入力画像を符号化/復号化することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像と入力画像との差分データが符号化される。また、予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)と呼ばれる方法が知られている。
【0005】
イントラ予測においては、同一フレーム内の局所復号画像に基づいて、当該フレームにおける予測画像が順次生成される。具体的には、イントラ予測においては、通常、予測単位(例えば、ブロック)毎に、予め定められた予測方向(予測モード)群に含まれる予測方向から何れかの予測方向が選択されると共に、局所復号画像における参照画素の画素値を、選択された予測方向に外挿することによって、予測対象領域上の予測画素値が生成される。また、インター予測においては、フレーム全体が復号された参照フレーム(復号画像)内の参照画像に対し、動きベクトルを用いた動き補償を適用することによって、予測対象フレーム内の予測画像が予測単位(例えば、ブロック)毎に生成される。
【0006】
非特許文献1および非特許文献2には、復号画像のブロック歪みを低減させるデブロッキングフィルタの後段であって、適応的に決定されたフィルタ係数を用いたフィルタ処理を行う適応的ループフィルタ(「適応フィルタ」とも呼ぶ)の前段に導入された適応的オフセットフィルタ(「適応オフセットフィルタ」とも呼ぶ)が開示されている。この適応オフセットフィルタは、デブロッキングフィルタから出力される画像の各画素値に対して、適応的に設定されたオフセットを加算するというものである。
【0007】
このような適応オフセットフィルタを備えることによって、ブロック歪みをより効果的に抑制することができる。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】「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
【非特許文献2】「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
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、従来の適応オフセットフィルタに用いられるオフセットは、値の範囲が設定されておらず、ビット数が大きいため、オフセットを格納しておくための大きなメモリサイズが必要になるという問題を有していた。
【0010】
本発明は、上記の問題に鑑みてなされたものであり、メモリサイズの増大を抑制しつつ、ブロック歪みを低減することのできる画像フィルタ装置を実現することにある。
【課題を解決するための手段】
【0011】
上記の問題を解決するために、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データを参照し、オフセット値域を設定するオフセット属性設定手段と、上記設定されたオフセット値域に制限されたフセットを復号するオフセット復号手段と、上記入力画像の各画素値に上記オフセットを加算するフィルタ手段とを備えていることを特徴としている。
【0012】
上記のように構成された画像フィルタ装置によれば、上記オフセット属性設定手段により、オフセット値域を設定し、設定されたオフセット値域に応じたビット幅を有するオフセットを上記オフセット復号手段により復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【0013】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【0014】
また、本発明に係るオフセット復号装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを復号するオフセット復号装置であって、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えていることを特徴としている。
【0015】
上記のように構成されたオフセット復号装置によれば、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えているので、各オフセットをそのまま符号化する場合に比べて、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【0016】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって参照される画素値、または、上記算出手段によって算出された差分値を所定のシフト値だけ右ビットシフトするビットシフト手段と、上記ビットシフト手段によって右ビットシフトされた差分値と0との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【0017】
上記のように構成された画像フィルタ装置によれば、右ビットシフトされた差分値と0との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【0018】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって算出された差分値と、予め定められた第1及び第2の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【0019】
上記のように構成された画像フィルタ装置は、上記算出手段によって算出された差分値と、予め定められた第1及び第2の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【0020】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像に作用する画像フィルタ装置であって、第1及び第2のオフセットタイプのうち、入力画像における対象画素を含む対象単位領域が属するオフセットタイプを決定する決定手段と、上記対象単位領域の属するオフセットタイプ、及び上記対象画素の画素値に応じて、上記対象画素を、オフセットを加算しないオフセットクラス、及びオフセットを加算する複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記対象単位領域の属するオフセットタイプ及び上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えており、上記分類手段は、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第1及び上記第2のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類する、ことを特徴としている。
【0021】
上記のように構成された画像フィルタ装置によれば、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第1及び上記第2のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類するので、ブロックノイズを効果的に除去することができる。したがって、上記の構成によれば、符号化効率の向上を図ることができる。
【0022】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記オフセットタイプに応じて、異なるビット幅を有するオフセットを決定すると共に、該オフセットを符号化するオフセット符号化手段と、上記入力画像の各画素値に上記決定されたオフセットを加算するフィルタ手段とを備えていることを特徴としている。
【0023】
上記のように構成された画像フィルタ装置によれば、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定し、決定されたオフセットタイプに応じて、異なるビット幅を有するオフセットを決定し、決定されたオフセットを、上記入力画像の各画素に加算する。また、決定されたオフセットを符号化する。
【0024】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。また、上記の構成によれば、符号化データの符号量が削減されるので、符号化効率が向上する。
【0025】
また、本発明に係るオフセット符号化装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを符号化するオフセット符号化装置であって、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段と、を備えていることを特徴としている。
【0026】
上記のように構成されたオフセット符号化装置によれば、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段とを備えているので、符号化データの符号量を削減することができる。
【0027】
また、本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、各単位領域が属するオフセットタイプを指定するオフセットタイプ指定情報と、該オフセットタイプに応じて異なるビット幅を有するオフセットとを含んでおり、上記画像フィルタは、上記符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号することを特徴としている。
【0028】
上記のように構成された符号化データは、オフセットタイプに応じて異なるビット幅を有するオフセットを含んでいるので、符号化データの符号量が削減される。また、上記符号化データを復号する画像フィルタは、上記オフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【0029】
なお、上記オフセットタイプ指定情報は、上記入力画像毎に定められているものであってもよいし、上記単位領域毎に定められているものであってもよい。また、上記入力画像の所定のセット毎に定められているものであってもよいし、上記単位領域の所定のセット毎に定められているものであってもよい。
【発明の効果】
【0030】
以上のように、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データを参照し、オフセット値域を設定するオフセット属性設定手段と、上記設定されたオフセット値域に制限されたオフセットを復号するオフセット復号手段と、上記入力画像の各画素値に上記オフセットを加算するフィルタ手段とを備えている。
【0031】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記オフセットタイプに応じて、異なるビット幅を有するオフセットを決定すると共に、該オフセットを符号化するオフセット符号化手段と、上記入力画像の各画素値に上記決定されたオフセットを加算するフィルタ手段とを備えている。
【0032】
また、本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、各単位領域が属するオフセットタイプを指定するオフセットタイプ指定情報と、該オフセットタイプに応じて異なるビット幅を有するオフセットとを含んでおり、上記画像フィルタは、上記符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号する。
【0033】
上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、画像フィルタに適切なオフセットフィルタ処理を行わせることができる。
【図面の簡単な説明】
【0034】
【
図1】本発明の第1の実施形態に係る適応オフセットフィルタの構成を示すブロック図である。
【
図2】本発明の第1の実施形態に係る動画像符号化装置によって生成され、動画像復号装置によって復号される符号化データのデータ構成を示す図であり、(a)~(d)は、それぞれ、ピクチャレイヤ、スライスレイヤ、ツリーブロックレイヤ、およびCUレイヤを示しており、(e)はリーフでないQAOUに関するQAOU情報の構成を示しており、(f)はリーフのQAOUに関するQAOU情報の構成を示している。
【
図3】本発明の第1の実施形態に係る符号化データのオフセット情報OIに含まれる各シンタックスを示す図である。
【
図4】本発明の第1の実施形態に係るオフセット単位の分割の態様を示す図であり、(a)はsao_curr_depth=0、(b)はsao_curr_depth=1、(c)はsao_curr_depth=2、(d)はsao_curr_depth=3、(e)はsao_curr_depth=4の場合を示している。
【
図5】本発明の第1の実施形態に係る動画像復号装置の構成を示すブロック図である。
【
図6】本発明の第1の実施形態を説明するための図であって、(a)は、対象の処理単位を構成する分割深度3の各QAOMUと各QAOMUに割り付けられたQAOUインデックスとを示しており、(b)は、QAOUインデックス0~9の各々に関連付けられたオフセットタイプ及び各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示している。
【
図7】本発明の第1の実施形態において、対象の処理単位に含まれるQAOMUに付されたQAOMU番号の一例を示す図であって、(a)は、分割深度が0であるQAOMUに付されたQAOMU番号を示しており、(b)は、分割深度が1であるQAOMUに付されたQAOMU番号を示しており、(c)は、分割深度が2であるQAOMUに付されたQAOMU番号を示しており、(d)は、分割深度が3であるQAOMUに付されたQAOMU番号を示しており、(e)は、分割深度が4であるQAOMUに付されたQAOMU番号を示している。
【
図8】本発明の第1の実施形態に係る適応オフセットフィルタ処理部による処理の流れを示すフローチャートである。
【
図9】本発明の第1の実施形態に係る適応フィルタの備えるオフセット属性設定部によって設定されるオフセットのビット深度及びシフト値の例を、画素のビット深度と共に示す図であって、(a)~(d)は、それぞれ、パターンS1~S4に対応する例を示しており、(e)は、(d)において、STEP=2ととったの場合を示している。
【
図10】本発明の第1の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、(a)~(d)は、それぞれ、sao_type_idx=1~4のときに参照される画素を示している。
【
図11】本発明の第1の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、(a)は、処理対象画素xの画素値pic[x]と画素aまたはbの画素値との大小関係を示すグラフ、及びその大小関係に応じた関数Signの値を示しており、(b)は、処理対象画素xの画素値と、画素a及びbの画素値との大小関係を示すグラフ、及びその大小関係に応じたEgdeTypeの値を示しており、(c)は、b)に示した各グラフと、class_idxとの対応を示しており、(d)は、EgdeTypeからclass_idxへの変換を表す変換テーブルを示している。
【
図12】本発明の第1の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、(a)は、sao_type_idx=5であるときのクラス分類を概略的に示しており、(b)sao_type_idx=6であるときのクラス分類を概略的に示しており、(c)は、バンドオフセットが指定された場合のクラス分類の一例を示す表である。
【
図13】本発明の第1の実施形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、バンドオフセットが指定された場合のクラス分類の他の例を示す表である。
【
図14】本発明の第1の実施形態に係る動画像符号化装置の構成を示すブロック図である。
【
図15】本発明の第1の実施形態に係る動画像符号化装置の備える適応オフセットフィルタの構成を示すブロック図である。
【
図16】本発明の第1の実施形態に係る動画像符号化装置の備える適応オフセットフィルタのオフセット算出部による処理の流れを示すフローチャートである。
【
図17】本発明の第1の実施形態に係る動画像符号化装置の備える適応オフセットフィルタのオフセット情報選択部による処理の流れを示すフローチャートである。
【
図18】本発明の第1の実施形態に係る動画像符号化装置の備える適応オフセットフィルタのオフセット情報選択部による処理を説明するための図であって、(a)は、分割深度が0及び1である場合の分割の態様を示しており、(b)は、分割深度が1である場合の分割の態様を示しており、(c)は、分割深度が2である場合の分割の態様を示しており、(d)は、オフセット情報選択部によって決定された分割の一例を示している。
【
図19】本発明の第2の実施形態に係る動画像復号装置の備える適応オフセットフィルタの構成を示すブロック図である。
【
図20】本発明の第2の実施形態に係る適応オフセットフィルタを説明するための図であって、(a)は、関数merge_tbl[sao_type_idx]の第1の具体例を示しており、(b)は、関数merge_tbl[sao_type_idx]の第2の具体例を示している。
【
図21】本発明の第2の実施形態に係る動画像符号化装置の備える適応オフセットフィルタの構成を示すブロック図である。
【
図22】本発明の第3の実施の形態に係る適応オフセットフィルタの構成を示すブロック図である。
【
図23】上記第3の実施の形態に係る符号化データのオフセット情報OIのシンタクスを示す図である。
【
図24】上記第3の実施の形態を説明するための図であって、(a)は、対象の処理単位を構成する分割深度3の各QAOMUと各QAOMUに割り付けられたQAOUインデックスとを示す図であり、(b)は、QAOUインデックス0~9の各々に関連付けられたオフセットタイプおよび各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示す図である。
【
図25】上記第3の実施の形態に係るオフセット情報復号部が用いる変換テーブルを示す図である。
【
図26】上記第3の実施の形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、(a)は、処理対象画素xの画素値pic[x]と画素aまたはbの画素値との大小関係を示すグラフ、およびその大小関係に応じた関数Signの値を示す図であり、(b)は、処理対象画素xの画素値と、画素aおよびbの画素値との大小関係を示すグラフ、およびその大小関係に応じたEgdeTypeの値を示す図であり、(c)は、(b)に示した各グラフと、class_idxとの対応を示す図であり、(d)~(f)は、EgdeTypeからclass_idxへの変換を表す変換テーブルを示す図である。
【
図27】上記第3の実施の形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、(a)は、sao_type_idx=5であるときのクラス分類を概略的に示す図であり、(b)sao_type_idx=6であるときのクラス分類を概略的に示す図である。
【
図28】上記第3の実施の形態に係る適応オフセットフィルタによるオフセット処理を説明するための図であって、(a)は処理対象のQAOUの階層の深度が閾値よりも小さい場合のクラス分類を概略的に示す図であり、(b)は処理対象のQAOUの階層の深度が閾値以上の場合のクラス分類を概略的に示す図である。
【
図29】上記第3の実施の形態において、バンドオフセットが指定された場合のクラス分類の一例を示す図であり、(a)は、処理対象のQAOUの階層の深度が閾値よりも小さい場合のクラス分類の一例を示す図であり、(b)は処理対象のQAOUの階層の深度が閾値以上の場合のクラス分類の一例を示す図である。
【
図30】上記第3の実施形態に係る動画像符号化装置の備える適応オフセットフィルタの構成を示すブロック図である。
【
図31】上記第3の実施の形態において、QAOUインデックスが「x」のQAOUについて、オフセットタイプそれぞれについての2乗誤差を算出する概要を示す図である。
【
図32】本発明に係る第4の実施の形態において、画素値によってEOとBOとを切り換える構成を説明するための図であり、(a)は、画素値によってEOとBOとを切り換える構成の概要を説明するための図であり、(b)は、具体的な切り換えの値を説明するための図である、(c)は、オフセット情報格納部621に格納されるリストメモリの内容を示す図である。
【
図33】本発明に係る第5の実施の形態において、EOのタイプを水平方向に限定する場合を説明するための図であり、(a)は効果の概要を説明するための図であり、(b)は水平方向の画素の位置を説明するための図であり、(c)は(b)とは異なる状態を説明するための図であり、(d)は(c)の効果を説明するための図である。
【
図34】上記第5の実施の形態において、EOのタイプを水平方向に限定する場合を説明するための図であり、(a)および(b)は参照する画素が非対称の位置にある場合を示す図であり、(c)は水平エッジの概要を示す図である。
【
図35】本発明に係る第6の実施の形態において、オフセットの精度を向上させる場合についての概要を示す図である。
【
図36】上記第6の実施の形態において、クラス分類を細分化する場合の概要を示す図であり、(a)は変換テーブルを示す図であり、(b)~(d)はクラス分割を説明するための図である。
【
図37】上記第6の実施の形態において、色差に応じてクラス分類を行う場合を説明するための図であり、(a)は無彩色の画素値を考慮したクラス分類を説明するための図であり、(b)は無彩色の画素値を挟む2つの値域で非対称なクラス分類を説明するための図であり、(c)はおよび(d)は色彩チャネル(CrまたはCb)毎に異なるクラス分類を説明するための図であり、(e)はBOのクラス分類を1つにする場合を説明するための図である。
【
図38】本発明に係る第7の実施の形態において、オフセット情報復号部の構成を示すブロック図である。
【
図39】上記第7の実施の形態において、分類される画素がないクラスがある場合の概要を示す図である。
【
図40】上記第7の実施の形態において、予測候補フラグを用いる場合のシンタクスを示す図である。
【
図41】上記第5の実施の形態に係るオフセット情報復号部の構成を示すブロック図である。
【
図42】(a)は、上記第5の実施の形態に係る使用オフセットタイプ選択部の構成を示すブロック図であり、(b)は、別の使用オフセットタイプ選択部の構成を示すブロック図である。
【
図43】上記第5の実施の形態に係るクラス分類部の構成を示すブロック図である。
【
図44】上記第3の実施形態に係るオフセット情報およびQAOU情報のシンタクスを示す図であり、(a)は、オフセット情報のシンタクスを示す図であり、(b)は、QAOU情報のシンタクスを示す図であり、(c)は、(a)および(b)に示すシンタクスを呼び出す適応オフセットフィルタ全体のシンタクスを示す図である。
【
図45】動画像復号装置および動画像符号化装置が、動画像の送受信に利用できることを説明するための図であり、(a)は、動画像符号化装置を搭載した送信装置の構成を示したブロック図であり、(b)は、動画像復号装置を搭載した受信装置の構成を示したブロック図である。
【
図46】動画像復号装置および動画像符号化装置が、動画像の記録および再生に利用できることを説明するための図であり、(a)は、動画像符号化装置2を搭載した記録装置の構成を示したブロック図であり、(b)は、動画像復号装置を搭載した再生装置の構成を示したブロックである。
【発明を実施するための形態】
【0035】
〔実施の形態1〕
(符号化データ#1)
本実施形態に係る動画像符号化装置2及び動画像復号装置1の詳細な説明に先立って、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1のデータ構造について説明を行う。
【0036】
図2は、符号化データ#1のデータ構造を示す図である。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
【0037】
符号化データ#1におけるピクチャレイヤ以下の階層の構造を
図2に示す。
図2の(a)~(d)は、それぞれ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、ツリーブロック(Tree block)TBLKを規定するツリーブロックレイヤ、ツリーブロックTBLKに含まれる符号化単位(Coding Unit;CU)を規定するCUレイヤを示す図である。
【0038】
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、
図2の(a)に示すように、ピクチャヘッダPH、及び、スライスS
1~S
NSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
【0039】
なお、以下、スライスS1~SNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ#1に含まれるデータであって、添え字を付している他のデータについても同様である。
【0040】
ピクチャヘッダPHには、対象ピクチャの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれている。例えば、動画像符号化装置2が符号化の際に用いた可変長符号化のモードを示す符号化モード情報(entropy_coding_mode_flag)は、ピクチャヘッダPHに含まれる符号化パラメータの一例である。
【0041】
entropy_coding_mode_flagが0の場合、当該ピクチャPICTは、CAVLC(Context-based Adaptive Variable Length Coding)によって符号化されている。また、entropy_coding_mode_flagが1である場合、当該ピクチャPICTは、CABAC(Context-based Adaptive Binary Arithmetic Coding)によって符号化されている。
【0042】
なお、ピクチャヘッダPHは、ピクチャー・パラメーター・セット(PPS:Picture Parameter Set)とも称される。
【0043】
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、
図2の(b)に示すように、スライスヘッダSH、及び、ツリーブロックTBLK
1~TBLK
NC(NCはスライスSに含まれるツリーブロックの総数)のシーケンスを含んでいる。
【0044】
スライスヘッダSHには、対象スライスの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
【0045】
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライスなどが挙げられる。
【0046】
また、スライスヘッダSHには、動画像復号装置1の備える適応フィルタによって参照されるフィルタパラメータFPが含まれている。なお、フィルタパラメータFPは、ピクチャヘッダPHに含まれる構成としてもよい。
【0047】
(ツリーブロックレイヤ)
ツリーブロックレイヤでは、処理対象のツリーブロックTBLK(以下、対象ツリーブロックとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。なお、ツリーブロックのことを最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。
【0048】
ツリーブロックTBLKは、ツリーブロックヘッダTBLKHと、符号化単位情報CU1~CUNL(NLはツリーブロックTBLKに含まれる符号化単位情報の総数)とを含む。ここで、まず、ツリーブロックTBLKと、符号化単位情報CUとの関係について説明すると次のとおりである。
【0049】
ツリーブロックTBLKは、イントラ予測またはインター予測、および、変換の各処理ためのブロックサイズを特定するためのパーティションに分割される。
【0050】
ツリーブロックTBLKの上記パーティションは、再帰的な4分木分割により分割されている。この再帰的な4分木分割により得られる木構造のことを以下、符号化ツリー(coding tree)と称する。
【0051】
以下、符号化ツリーの末端のノードであるリーフ(leaf)に対応するパーティションを、符号化ノード(coding node)として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位(CU)とも称する。
【0052】
つまり、符号化単位情報(以下、CU情報と称する)CU1~CUNLは、ツリーブロックTBLKを再帰的に4分木分割して得られる各符号化ノード(符号化単位)に対応する情報である。
【0053】
また、符号化ツリーのルート(root)は、ツリーブロックTBLKに対応付けられる。換言すれば、ツリーブロックTBLKは、複数の符号化ノードを再帰的に含む4分木分割の木構造の最上位ノードに対応付けられる。
【0054】
なお、各符号化ノードのサイズは、当該符号化ノードが直接に属する符号化ノード(すなわち、当該符号化ノードの1階層上位のノードのパーティション)のサイズの縦横とも半分である。
【0055】
また、各符号化ノードのとり得るサイズは、符号化データ#1のシーケンスパラメータセットSPSに含まれる、符号化ノードのサイズ指定情報および最大階層深度(maximum hierarchical depth)に依存する。例えば、ツリーブロックTBLKのサイズが64×64画素であって、最大階層深度が3である場合には、当該ツリーブロックTBLK以下の階層における符号化ノードは、3種類のサイズ、すなわち、64×64画素、32×32画素、および16×16画素の何れかをとり得る。
【0056】
(ツリーブロックヘッダ)
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、
図2の(c)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
【0057】
ツリーブロック分割情報SP_TBLKは、ツリーブロックを分割するための符号化ツリーを表す情報であり、具体的には、対象ツリーブロックに含まれる各CUの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報である。
【0058】
なお、ツリーブロック分割情報SP_TBLKは、CUの形状やサイズを明示的に含んでいなくてもよい。例えばツリーブロック分割情報SP_TBLKは、対象ツリーブロック全体またはツリーブロックの部分領域を四分割するか否かを示すフラグ(split_coding_unit_flag)の集合であってもよい。その場合、ツリーブロックの形状やサイズを併用することで各CUの形状やサイズを特定できる。
【0059】
また、量子化パラメータ差分Δqpは、対象ツリーブロックにおける量子化パラメータqpと、当該対象ツリーブロックの直前に符号化されたツリーブロックにおける量子化パラメータqp’との差分qp-qp’である。
【0060】
(CUレイヤ)
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
【0061】
ここで、CU情報CUに含まれるデータの具体的な内容の説明をする前に、CUに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートのノードとなる。予測ツリーおよび変換ツリーについて説明すると次のとおりである。
【0062】
予測ツリーにおいては、符号化ノードが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ノードを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。
【0063】
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU)とも称する。
【0064】
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。
【0065】
イントラ予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)と、N×Nとがある。
【0066】
また、インター予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)、2N×N、N×2N、および、N×Nなどがある。
【0067】
また、変換ツリーにおいては、符号化ノードが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ノードを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。
【0068】
変換ツリーにおける分割には、符号化ノードと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な4分木分割によるものがある。
【0069】
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
【0070】
(CU情報のデータ構造)
続いて、
図2の(d)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。
図2の(d)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、PT情報PTI、および、TT情報TTIを含む。
【0071】
スキップフラグSKIPは、対象のPUについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグSKIPの値が1の場合、すなわち、対象CUにスキップモードが適用されている場合、そのCU情報CUにおけるPT情報PTI、および、TT情報TTIは省略される。なお、スキップフラグSKIPは、Iスライスでは省略される。
【0072】
PT情報PTIは、CUに含まれるPTに関する情報である。言い換えれば、PT情報PTIは、PTに含まれる1または複数のPUそれぞれに関する情報の集合であり、動画像復号装置1により予測画像を生成する際に参照される。PT情報PTIは、
図2の(d)に示すように、予測タイプ情報PType、および、予測情報PInfoを含んでいる。
【0073】
予測タイプ情報PTypeは、対象PUについての予測画像生成方法として、イントラ予測を用いるのか、または、インター予測を用いるのかを指定する情報である。
【0074】
予測情報PInfoは、予測タイプ情報PTypeが何れの予測方法を指定するのかに応じて、イントラ予測情報、または、インター予測情報より構成される。以下では、イントラ予測が適用されるPUをイントラPUとも呼称し、インター予測が適用されるPUをインターPUとも呼称する。
【0075】
また、予測情報PInfoは、対象PUの形状、サイズ、および、位置を指定する情報が含まれる。上述のとおり予測画像の生成は、PUを単位として行われる。予測情報PInfoの詳細については後述する。
【0076】
TT情報TTIは、CUに含まれるTTに関する情報である。言い換えれば、TT情報TTIは、TTに含まれる1または複数のTUそれぞれに関する情報の集合であり、動画像復号装置1により残差データを復号する際に参照される。なお、以下、TUのことをブロックと称することもある。
【0077】
TT情報TTIは、
図2の(d)に示すように、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TT、および、量子化予測残差QD
1~QD
NT(NTは、対象CUに含まれるブロックの総数)を含んでいる。
【0078】
TT分割情報SP_TTは、具体的には、対象CUに含まれる各TUの形状、サイズ、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TTは、対象となるノードの分割を行うのか否かを示す情報(split_transform_unit_flag)と、その分割の深度を示す情報(trafoDepth)とから実現することができる。
【0079】
また、例えば、CUのサイズが、64×64の場合、分割により得られる各TUは、32×32画素から2×2画素までのサイズをとり得る。
【0080】
各量子化予測残差QDは、動画像符号化装置2が以下の処理1~3を、処理対象のブロックである対象ブロックに施すことによって生成した符号化データである。
【0081】
処理1:符号化対象画像から予測画像を減算した予測残差をDCT変換(Discrete Cosine Transform)する;
処理2:処理1にて得られた変換係数を量子化する;
処理3:処理2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表す(QP=2qp/6)。
【0082】
(予測情報PInfo)
上述のとおり、予測情報PInfoには、インター予測情報およびイントラ予測情報の2種類がある。
【0083】
インター予測情報には、動画像復号装置1が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、インター予測情報には、対象CUの各インターPUへの分割パターンを指定するインターPU分割情報、および、各インターPUについてのインター予測パラメータが含まれる。
【0084】
インター予測パラメータには、参照画像インデックスと、推定動きベクトルインデックスと、動きベクトル残差とが含まれる。
【0085】
一方、イントラ予測情報には、動画像復号装置1が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、イントラ予測情報には、対象CUの各イントラPUへの分割パターンを指定するイントラPU分割情報、および、各イントラPUについてのイントラ予測パラメータが含まれる。イントラ予測パラメータは、各イントラPUについてのイントラ予測方法(予測モード)を指定するためのパラメータである。
【0086】
(オフセット単位)
また、本実施の形態において、各ピクチャまたは各スライスは、4分木構造によって複数のオフセット単位(QAOU:Quad Adaptive Offset Unitとも呼ぶ)に再帰的に分割される。ここで、QAOUとは、本実施の形態に係る適応オフセットフィルタによるオフセットフィルタ処理の処理単位である。
【0087】
図2(e)~(f)に示すように、各QAOUに関する情報であるQAOU情報は、自身が更に分割されるのか否かを示すsao_split_flagを含んでいる。sao_split_flagは、より具体的には、後述する引数(sao_curr_depth、ys、xs)によって指定されるものであり、sao_split_flag[sao_curr_depth][ys][xs]とも表記する。
【0088】
あるQAOUに含まれるsao_split_flagが、該QAOUがさらに分割されるものであることを示している場合(すなわち、当該QAOUがリーフではない場合)には、
図2(e)に示すように、該QAOUに関するQAOU情報には、該QAOUに含まれる複数のQAOUの各々に関するQAOU情報が含まれる。
【0089】
一方で、あるQAOUに含まれるsao_split_flagが、該QAOUがそれ以上分割されないものであることを示している場合(すなわち、当該QAOUがリーフである場合)には、
図2(f)に示すように、該QAOUに関するQAOU情報には、該QAOUに関するオフセット情報OIが含まれる。また、オフセット情報OIには、
図2(f)に示すように、オフセットタイプを指定するオフセットタイプ指定情報OTI、及び、オフセットタイプに応じて定まるオフセット群が含まれている。さらに、
図2(f)に示すように、オフセット群には、複数のオフセットが含まれている。
【0090】
なお、符号化データ中のオフセットは量子化された値である。また、符号化データ中のオフセットは、何らかの予測、例えば線形予測を用いることによって得られる予測残差であっても良い。また、一定の単位領域毎に後述する画素ビット深度が異なって指定される場合、画素ビット深度に応じてオフセットのビット深度、オフセット値域、及びシフト値を変更する本実施の形態においては、オフセットタイプ指定情報OTIに処理対象領域の画素ビット深度を含めることも可能である。
【0091】
オフセット情報OIについて、参照する図面を代えて説明すれば以下の通りである。
【0092】
図3は、オフセット情報OI(
図3においてsao_offset_param()と表記)に含まれる各シンタックスを示す図である。
【0093】
図3に示すように、オフセット情報OIには、シンタックスsao_type_idx[sao_curr_depth][ys][xs]が含まれている。また、sao_type_idx[sao_curr_depth][ys][xs]が0でない場合、オフセット情報OIには、sao_offset[sao_curr_depth][ys][xs][i]が含まれている。
【0094】
(sao_curr_depth、ys、xs)
sao_type_idx及びsao_offsetの引数であるsao_curr_depthは、QAOUの分割深度を表すインデックスであり、ys及びxsは、それぞれ、QAOU(または後述するQAOMU)のy方向の位置及びx方向の位置を表すためのインデックスである。
【0095】
図4(a)~(e)は、sao_curr_depthの値に応じたQAOUの分割の態様を示す図であり、(a)はsao_curr_depth=0、(b)はsao_curr_depth=1、(c)はsao_curr_depth=2、(d)はsao_curr_depth=3、(e)はsao_curr_depth=4の場合を示している。
図4(a)~(e)に示すように、各QAOUは、sao_curr_depth、及び(xs、ys)によって指定される。
【0096】
また、
図4(a)に示すように、sao_curr_depth=0であるとき、xs及びysはそれぞれ0であり、
図4(b)に示すように、sao_curr_depth=1であるとき、xs及びysはそれぞれ0及び1の何れかの値をとり得る。また、
図4(c)に示すように、sao_curr_depth=2であるとき、xs及びysはそれぞれ0、1、2及び3の何れかの値をとり得る。一般に、与えられたsao_curr_depthに対して、xs及びysは、それぞれ0~2
sao_curr_depth-1の値をとり得る。
【0097】
(sao_type_idx)
sao_type_idx[sao_curr_depth][ys][xs]は、上述のオフセットタイプ指定情報OTIに対応するものであり、各QAOUについてのオフセットタイプを指定するためのシンタックスである。以下では、sao_type_idxのことを単にオフセットタイプと呼称することもある。
【0098】
本実施の形態において、sao_type_idx[sao_curr_depth][ys][xs]は、0から6までの整数値をとる。sao_type_idx[sao_curr_depth][ys][xs]=0は、対象QAOUにおけるオフセットフィルタ前画像(例えば、後述するデブロック済復号画像P_DB)に対して、オフセットフィルタ処理を行わないことを示しており、sao_type_idx[sao_curr_depth][ys][xs]=1~4は、対象QAOUにおけるオフセットフィルタ前画像に対して、エッジオフセット処理を行うことを示しており、sao_type_idx[sao_curr_depth][ys][xs]=5~6は、対象QAOUにおけるオフセットフィルタ前画像に対して、バンドオフセット処理を行うことを示している。エッジオフセット処理及びバンドオフセット処理の具体的内容については後述する。
【0099】
(sao_offset)
sao_offset[sao_curr_depth][ys][xs][i]は、本実施の形態に係る適応オフセットフィルタによるオフセットフィルタ処理において、対象QAOUに含まれる各画素に加算されるオフセットの具体的な値を表すシンタックスである。本実施の形態では、sao_offsetのことを単にオフセットと呼称することもある。
【0100】
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]の値が1~4の何れかである場合(すなわち、エッジオフセットの場合)、i=0~4の何れかの整数値をとる。また、sao_type_idx[sao_curr_depth][ys][xs]の値が5~6の何れかである場合(すなわち、バンドオフセットの場合)、i=0~16の何れかの整数値をとる。なお、後述するように、何れの場合もi=0は、オフセットを加算しないことを表している。
【0101】
後述するように、本実施の形態に係る適応オフセットフィルタは、対象QAOUに含まれる対象画素を上記複数のクラスの何れかに分類し、該対象画素に対して、該対象画素が分類されたクラスについてのオフセットOffsetを加算する。
【0102】
また、
図3に示したDescriptor(記述子)ue(v)は、この記述子に関連付けられたシンタックスは符号なしの数値であり、値が可変長符号化されることを示しており、se(v)は、この記述子に関連付けられたシンタックスは符号付きの数値であり、符号と絶対値に分けて可変長符号化されることを意味している。
【0103】
(動画像復号装置1)
以下では、本実施の形態に係る動画像復号装置1について
図1及び
図5~
図13を参照して説明する。動画像復号装置1は、その一部に、H.264/MPEG-4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、及び、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
【0104】
図5は、動画像復号装置1の構成を示すブロック図である。
図5に示すように、動画像復号装置1は、可変長符号復号部13、動きベクトル復元部14、バッファメモリ15、インター予測画像生成部16、イントラ予測画像生成部17、予測方式決定部18、逆量子化・逆変換部19、加算器20、デブロッキングフィルタ41、適応フィルタ50、及び適応オフセットフィルタ60を備えている。動画像復号装置1は、符号化データ#1を復号することによって動画像#4を生成するための装置である。
【0105】
可変長符号復号部13は、各パーティションに関する予測パラメータPPを、符号化データ#1から復号する。すなわち、インター予測パーティションに関しては、参照画像インデックスRI、推定動きベクトルインデックスPMVI、及び、動きベクトル残差MVDを符号化データ#1から復号し、これらを動きベクトル復元部14に供給する。一方、イントラ予測パーティションに関しては、(1)パーティションのサイズを指定するサイズ指定情報、および、(2)予測インデックスを指定する予測インデックス指定情報を符号化データ#1から復号し、これをイントラ予測画像生成部17に供給する。また、可変長符号復号部13は、CU情報を符号化データから復号し、これを予測方式決定部18に供給する(図示省略)。更に、可変長符号復号部13は、各ブロックに関する量子化予測残差QD、及び、そのブロックを含むツリーブロックに関する量子化パラメータ差分Δqpを符号化データ#1から復号し、これらを逆量子化・逆変換部19に供給する。また、可変長符号復号部13は、符号化データ#1からQAOU情報を抽出し、抽出したQAOU情報を適応オフセットフィルタ60に供給する。
【0106】
動きベクトル復元部14は、各インター予測パーティションに関する動きベクトルmvを、そのパーティションに関する動きベクトル残差MVDと、他のパーティションに関する復元済みの動きベクトルmv’とから復元する。具体的には、(1)推定動きベクトルインデックスPMVIにより指定される推定方法に従って、復元済みの動きベクトルmv’から推定動きベクトルpmvを導出し、(2)導出した推定動きベクトルpmvと動きベクトル残差MVDとを加算することによって動きベクトルmvを得る。なお、他のパーティションに関する復元済みの動きベクトルmv’は、バッファメモリ15から読み出すことができる。動きベクトル復元部14は、復元した動きベクトルmvを、対応する参照画像インデックスRIと共に、インター予測画像生成部16に供給する。なお、双方向予測(重み付き予測)を行うインター予測パーティションについては、復元した2つの動きベクトルmv1及びmv2を、対応する参照画像インデックスRI1及びRI2と共に、インター予測画像生成部16に供給する。
【0107】
インター予測画像生成部16は、各インター予測パーティションに関する動き補償画像mcを生成する。具体的には、動きベクトル復元部14から供給された動きベクトルmvを用いて、同じく動きベクトル復元部14から供給された参照画像インデックスRIによって指定されるフィルタ済復号画像P_FL’から動き補償画像mcを生成する。ここで、フィルタ済復号画像P_FL’は、既に復号が完了した復号画像Pに対して、デブロッキングフィルタ41によるデブロック処理、適応オフセットフィルタ60によるオフセットフィルタ処理、及び適応フィルタ50による適応的フィルタ処理を施すことによって得られる画像であり、インター予測画像生成部16は、フィルタ済復号画像P_FL’を構成する各画素の画素値をバッファメモリ15から読み出すことができる。インター予測画像生成部16によって生成された動き補償画像mcは、インター予測画像Pred_Interとして予測方式決定部18に供給される。なお、双方向予測(重み付き予測)を行うインター予測パーティションについては、(1)動きベクトルmv1を用いて、参照画像インデックスRI1によって指定されたフィルタ済復号画像P_FL1’から動き補償画像mc1を生成し、(2)動きベクトルmv2を用いて、参照画像インデックスRI2によって指定されたフィルタ済復号画像P_FL2’とから動き補償画像mc2を生成し、(3)動き補償画像mc1と動き補償画像mc2との加重平均にオフセット値を加えることによってインター予測画像Pred_Interを生成する。
【0108】
イントラ予測画像生成部17は、各イントラ予測パーティションに関する予測画像Pred_Intraを生成する。具体的には、まず、符号化データ#1から復号された予測モードを参照し、該予測モードを対象パーティションに対して、例えば、ラスタスキャン順に割り付ける。続いて、当該予測モードの示す予測方法に従って、復号画像Pから予測画像Pred_Intraを生成する。イントラ予測画像生成部17によって生成されたイントラ予測画像Pred_Intraは、予測方式決定部18に供給される。
【0109】
また、イントラ予測画像生成部17は、対象パーティションのサイズ、および、対象パーティションに割り付けられた予測モードを示す情報であるイントラ符号化モード情報IEMを適応フィルタ50に供給する。
【0110】
予測方式決定部18は、CU情報に基づいて、各パーティションがインター予測を行うべきインター予測パーティションであるのか、イントラ予測を行うべきイントラ予測パーティションであるのかを決定する。そして、前者の場合には、インター予測画像生成部16にて生成されたインター予測画像Pred_Interを予測画像Predとして加算器20に供給し、後者の場合には、イントラ予測画像生成部17にて生成されたイントラ予測画像Pred_Intraを予測画像Predとして加算器20に供給する。
【0111】
逆量子化・逆変換部19は、(1)量子化予測残差QDを逆量子化し、(2)逆量子化によって得られたDCT係数を逆DCT(Discrete Cosine Transform)変換し、(3)逆DCT変換によって得られた予測残差Dを加算器20に供給する。なお、量子化予測残差QDを逆量子化する際に、逆量子化・逆変換部19は、可変長符号復号部13から供給された量子化パラメータ差分Δqpから量子化ステップQPを導出する。量子化パラメータqpは、直前に逆量子化/逆DCT変換したツリーブロックに関する量子化パラメータqp’に量子化パラメータ差分Δqpを加算することによって導出でき、量子化ステップQPは、量子化ステップqpからQP=2pq/6によって導出できる。また、逆量子化・逆変換部19による予測残差Dの生成は、ブロック(変換単位)を単位として行われる。
【0112】
加算器20は、予測方式決定部18から供給された予測画像Predと、逆量子化・逆変換部19から供給された予測残差Dとを加算することによって復号画像Pを生成する。
【0113】
デブロッキングフィルタ41は、復号画像Pにおけるブロック境界、またはCU境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、復号画像Pにおける当該ブロック境界、または当該CU境界に対してデブロッキング処理を施すことによって、当該ブロック境界、または当該CU境界付近の画像の平滑化を行う。デブロッキングフィルタ41によりデブロッキング処理が施された画像は、デブロック済復号画像P_DBとして、適応オフセットフィルタ60に出力される。
【0114】
適応オフセットフィルタ60は、デブロッキングフィルタ41から供給されるデブロック済復号画像P_DBに対して、符号化データ#1から復号されたオフセットを用いたオフセットフィルタ処理を、QAOUを処理単位として施すことによってオフセットフィルタ済復号画像P_OFを生成する。生成されたオフセットフィルタ済復号画像P_OFは、適応フィルタ50に供給される。適応オフセットフィルタ60の具体的な構成については、後述するため、ここでは説明を省略する。
【0115】
適応フィルタ50は、適応オフセットフィルタ60から供給されるオフセットフィルタ済復号画像P_OFに対して、符号化データ#1から復号されたフィルタパラメータFPを用いたフィルタ処理を施すことによって、フィルタ済復号画像P_FLを生成する。適応フィルタ50によりフィルタ処理が施された画像は、フィルタ済復号画像P_FLとして外部に出力されると共に、可変長符号復号部13によって符号化データから復号されたPOC指定情報と関連付けてバッファメモリ15に格納される。
【0116】
(適応オフセットフィルタ60)
図1は、適応オフセットフィルタ60の構成を示すブロック図である。
図1に示すように、適応オフセットフィルタ60は、適応オフセットフィルタ情報復号部61及び適応オフセットフィルタ処理部62を備えている。
【0117】
また、
図1に示すように、適応オフセットフィルタ情報復号部61は、オフセット情報復号部611、QAOU構造復号部612、及びオフセット属性設定部613を備えている。
【0118】
オフセット情報復号部611は、符号化データ#1に含まれているQAOU情報を参照し、QAOU情報に含まれているオフセット情報OIを復号する。また、オフセット情報OIを復号することによって得られた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)に関連付けて、オフセット情報格納部621に供給する。
【0119】
QAOU構造復号部612は、QAOU情報に含まれているsao_split_flag[sao_curr_depth][ys][xs]を復号することによって、QAOUの分割構造を決定し、決定されたQAOUの分割構造を表すQAOU構造情報を、オフセット情報格納部621に供給する。
【0120】
オフセット属性設定部613は、オフセットのビット深度(SAO_DEPTHとも呼称する)とオフセットの値域とを決定する。ここでは、オフセットのビット深度は、オフセット属性設定部613に入力される図示されない画素ビット深度(PIC_DEPTHとも呼称する)から決定する。画素ビット深度とは、適応オフセットフィルタ60の入力画像を構成する画素値の値域をビット幅で示すものであり、画素ビット深度がNビットのとき、画素値は0から2N-1の範囲を取る。例えば、画素ビット深度が8ビットのとき、画素値は0から255の範囲を取りうる。適応オフセットフィルタ60の入力画像は、動画像復号装置1の復号画像、もしくは、動画像符号化装置2の局所復号画像である場合には、復号画像/局所復号画像のビット深度が用いられる。適応オフセットフィルタ60の入力画像の精度及び出力画像の精度は画素ビット深度である。
【0121】
画素ビット深度は、符号化データ#1中のシンタックスを用いて定められる値を復号して用いることができる。例えば、H.264/AVCの場合には、シーケンスパラメータセット中のbit_depth_luma_minus8を用いて定めることができる。さらに、別の形態として、画素ビット深度は処理対象の単位領域毎に定まってもよく、その場合は該単位領域のヘッダから画素ビット深度を復号する。単位領域の画素ビット深度は、適応オフセットフィルタ60の入力画像を復号するための符号化データ#1中のパラメータ情報やヘッダに含まれていても良いし、QAOU情報の一部として含まれていても良い。入力画像を復号するためのパラメータ情報およびヘッダとしては、ピクチャパラメータヘッダ、スライスヘッダ、LCU、CUなどに画素ビット深度を含めておいても良い。また、QAOU情報の一部としては、リーフQAOUに画素ビット深度を含めておいても良いし、所定の階層(例えば最上位階層のQAOU、や、第1階層のQAOU)のQAOU情報に画素ビット深度を含めておいても構わない。また、画素ビット深度の符号化としては、8ビットからの差分値として符号化することが好適である。QAOU情報では、画素ビット深度の他、シフト値を直接符号化することも適当である。また、シフト値は8ビットを超える場合にのみ符号化することが適当である。ここでシフト値とは、逆量子化を行うために必要なビットシフト量を示す。逆量子化に用いるパラメータとしてはシフト値の他、ステップ値でも良い。この場合、オフセットの逆量子化はステップ値との積、オフセットの量子化はステップ値による除算で実行される。
【0122】
また、オフセットのビット深度とは、符号化データ#1中に符号化されるオフセットの精度を示す値である。符号化データ#1に含まれるオフセットは量子化されており、この量子化されたオフセットは復号後、後述のオフセット導出部625によって、画素ビット深度に合わせたビット深度に逆量子化される。また、後述のオフセット加算部626にて、逆量子化されたオフセットの加算が行われる。オフセットのビット深度は、画素ビット深度以下の値を持つ。オフセットのビット深度が画素ビット深度よりもkビットだけ小さい場合には、符号化されるオフセットの値は、2kをオフセットの量子化ステップとして量子化された値を意味する。復号したビット深度(オフセットのビット深度)から画素ビット深度への変換は、後述するオフセット導出部625で行われる。
【0123】
オフセット属性設定部613は、さらに、決定したオフセットのビット深度によりオフセット値域を設定する。さらに、オフセットの画素ビット深度とオフセット値域とからシフト値を設定する。設定されたオフセット値域およびシフト値はオフセット情報格納部621およびオフセット情報復号部611に供給される。オフセットのビット深度の決定とシフト値の設定は後述するパターンS1~S6のいずれかの形態で行われる。オフセット値域の設定は後述するパターンC1、パターンC2のいずれかの形態で行われる。オフセット値域及びシフト値などオフセットに共通する属性をオフセット属性と呼ぶ。一方で、
図1に示すように、適応オフセットフィルタ処理部62は、オフセット情報格納部621、QAOU制御部622、オフセットタイプ導出部623.クラス分類部624、オフセット導出部625、及びオフセット加算部626を備えている。
【0124】
オフセット情報格納部621は、QAOU構造情報、sao_type_idx[sao_curr_depth][ys][xs]、及びsao_offset[sao_curr_depth][ys][xs][i]に基づいて、各QAOUについて指定されたオフセットタイプ及び該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値を管理及び格納するための構成であり、マップメモリ及びリストメモリを備えている。
【0125】
マップメモリには、分割深度に応じて定まる各オフセット最小単位(QAOMU:Quad Adaptive Offset Minimum Unitとも呼称する)に割り付けられた後述するQAOUインデックスが格納されている。
図6(a)では、マップメモリについて説明をする。
図6(a)は、マップメモリに格納されるQAOUインデックスの一例を説明するためのものであって、対象の処理単位(例えばLCU)を構成する分割深度3の各QAOMUと各QAOMUに割り付けられたQAOUインデックスとを示す図である。
図6(a)では、簡易的にインデックス0~9をQAOUの分割深度を考慮せずにQAOUを指定している。
図6(a)に示す例においては、QAOUインデックス=Iによって指定されるQAOUをQAOUIと表記している。また、
図6(a)における細線はQAOMUの境界を示しており、太線は、QAOUの境界を示している。
【0126】
図6(a)に示すように、QAOU0は、4つのQAOMUから構成されており、これら4つのQAOMUには、QAOUインデックスとして0が割り付けられている。一方で、QAOU3は、1つのQAOMUから構成されており、このQAOMUには、QAOUインデックスとして3が割り付けられている。このように、マップメモリには、各QAOMUに割り付けられたQAOUインデックスが格納されている。
【0127】
一方で、リストメモリには、各QAOUインデックス、該QAOUインデックスに関連付けられたオフセットタイプ、及び該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値とが互いに関連付けられて格納されている。オフセット情報格納部621は、オフセット属性設定部613により設定されるオフセット値域に値の範囲が制限されたオフセットを格納する。
【0128】
図6(b)は、リストメモリに格納される情報の一例を説明するためのものであって、QAOUインデックス0~9の各々に関連付けられたオフセットタイプ及び各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示している。
図6(b)における「xxx」は、互いに異なり得る具体的な数値を表しているものとする。
【0129】
また、
図6(b)における「BO_1」は、sao_type_idx=5によって指定されるオフセットタイプを表している。また、「EO_1」は、sao_type_idx=1によって指定されるオフセットタイプを表している。このように、sao_type_idx=1、2、3、4によって指定されるオフセットタイプであるエッジオフセットをそれぞれEO_1、2、3、4とも表記し、sao_type_idx=5、6によって指定されるオフセットタイプであるバンドオフセットをそれぞれBO_1、2とも表記する。
【0130】
図6(b)に示すように、オフセットタイプがバンドオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット1~オフセット16の合計16個である。ここで、オフセット1~オフセット16は、sao_type_idx[sao_curr_depth][ys][xs]の値が5または6である場合の、sao_offset[sao_curr_depth][ys][xs][1]~sao_offset[sao_curr_depth][ys][xs][16]によってそれぞれ指定される値のことを指す。一方で、オフセットタイプがエッジオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット1~4の合計4個である。ここで、オフセット1~4は、sao_type_idx[sao_curr_depth][ys][xs]の値が1、2、3、4の何れかである場合の、sao_offset[sao_curr_depth][ys][xs][1]~sao_offset[sao_curr_depth][ys][xs][4]によってそれぞれ指定される値のことを指す。オフセット5~16にはなにも格納されない。
【0131】
また、リストメモリに格納されている各オフセットのメモリサイズは、オフセット属性設定部613から供給されるオフセット値域により決定される。オフセット値域が-24~24-1である場合、オフセット1個あたり5ビットで表現が可能であり、5ビットのメモリサイズが必要である。
【0132】
なお、各QAOMUには、QAOMU番号が付されており、このQAOMU番号によって各QAOMUは互いに識別可能である。以下では、QAOMU番号がNQであるQAOMUをQAOMUNQとも表記する。
【0133】
QAOUインデックスは分割深度0から最大の分割深度までを通して、指定されるQAOUのブロックの番号である。最大の分割深度が4の場合は、分割深度の全ブロック(1+4+16+64+256=341個)に対して、
図7に示すように、0~340の値がQAOUインデックスによって指定される。
【0134】
動画像復号装置1で用いるオフセット情報格納部621においては、全ての分割深度の全てのQAOUのオフセットを格納する必要がないため、341個のメモリ領域を確保する必要がなく、入力されるQAOU情報で指定された構造で実際に用いられるQAOUの数だけのメモリ領域があればよい。最大の分割深度が4のとき、そのブロック数は256以下であるため、256個のマップメモリ及びリストメモリがあれば十分である。この場合、オフセット情報格納部621で用いるQAOUインデックスは、リーフQAOUを識別するための一意のインデックス、例えば、リースQAOUを復号する度に1づつインクリメントする0から255以下のインデックスを用いる。また、オフセット情報格納部621には、最大分割深度に対応するQAOU情報を単位として、マップリストを格納することも可能である。この場合、オフセット情報格納部621で用いるQAOUインデックスは0~255の番号を用い、これは
図7におけるQAOMU番号85~340に対応する。
【0135】
図7(a)~(e)は、対象の処理単位(例えばLCU)に含まれるQAOMUに付されたQAOMU番号の一例を示す図であって、(a)は、分割深度が0であるQAOMUに付されたQAOMU番号を示しており、(b)は、分割深度が1であるQAOMUに付されたQAOMU番号を示しており、(c)は、分割深度が2であるQAOMUに付されたQAOMU番号を示しており、(d)は、分割深度が3であるQAOMUに付されたQAOMU番号を示しており、(e)は、分割深度が4であるQAOMUに付されたQAOMU番号を示している。
【0136】
QAOU制御部622は、適応オフセットフィルタ処理部62に含まれる各部を制御する。また、QAOU制御部622は、QAOU構造情報を参照して、デブロック済復号画像P_DBを1または複数のQAOUに分割し、各QAOUを所定の順序でスキャンする。また、処理対象とする対象QAOMUを表すQAOMU番号をオフセットタイプ導出部623に供給する。
【0137】
オフセットタイプ導出部623は、オフセット情報格納部621のマップメモリ及びリストメモリを参照し、QAOU制御部622から供給されたQAOMU番号によって指定されるオフセットタイプを導出する。また、導出したオフセットタイプを、クラス分類部624に供給する。
【0138】
クラス分類部624は、対象QAOUに含まれる各画素を、オフセットタイプ導出部623から供給されるオフセットタイプにおいて選択可能な複数のクラスの何れかに分類する。また、当該オフセットタイプと、各画素が分類されたクラスを示すクラスインデックスとをオフセット導出部625に供給する。なお、クラス分類部624による具体的な分類処理については後述するためここでは説明を省略する。
【0139】
オフセット導出部625は、オフセット情報格納部621のリストメモリを参照し、対象QAOUに含まれる各画素について、クラス分類部624から供給されるオフセットタイプ及びクラスインデックスによって指定されるオフセットを導出する。さらにオフセット属性設定部613によって設定されたシフト値だけ、オフセットを左側へビットシフトするオフセット逆シフト部(不図示)を備える。オフセット逆シフト部は、オフセットのビット深度と画素ビット深度とを合わせるように、該オフセットの逆量子化を行う。このような逆量子化を行うことで、後述するオフセット加算部626の加算処理において、同一のビット深度にて、画素値とオフセットの加算を行うことが可能である。各画素について逆量子化したオフセットは、オフセット加算部626に供給される。
【0140】
オフセット加算部626は、対象QAOUにおけるデブロック済復号画像P_DBの各画素に対して、オフセット導出部625から供給されるオフセットを加算する。オフセット加算部626は、デブロック済復号画像P_DBに含まれる全てのQAOUに対して処理を行って得られる画像をオフセットフィルタ済復号画像P_OFとして出力する。
【0141】
図8は、適応オフセットフィルタ処理部62による処理の流れを示すフローチャートである。
【0142】
(ステップS101)
まず、QAOU制御部622は、オフセット情報格納部621からQAOU構造情報を取得する。
【0143】
(ステップS102)
続いて、QAOU制御部622は、処理対象とする対象QAOMUのQAOMU番号をループ変数とする第1のループを開始する。
【0144】
(ステップS103)
QAOU制御部622は、オフセットタイプ導出部623にQAOMU番号を供給する。QAOU制御部622による制御に基づき、オフセットタイプ導出部623は、QAOU制御部622から供給されたQAOMU番号によって指定されるオフセットタイプを、オフセット情報格納部621のマップメモリ及びリストメモリから読み出す。また、オフセットタイプ導出部623は、読み出したオフセットタイプを、クラス分類部624に供給する。
【0145】
(ステップS104)
続いて、QAOU制御部622は、対象QAOMUに含まれる各画素の画素番号をループ変数とする第2のループを開始する。ここで、画素番号とは、対象QAOMUに含まれる画素を互いに識別するためのものであって、例えば、対象QAOMUに含まれる各画素に対して、所定のスキャン順に付されたものを用いることができる。また、そのような画素番号に代えて、対象QAOMUに含まれる各画素のx座標及びy座標をループ変数としてもよい。
【0146】
(ステップS105)
続いて、クラス分類部624は、QAOU制御部622による制御に基づき、処理対象の画素を、オフセットタイプ導出部623から供給されるオフセットタイプにおいて選択可能な複数のクラスの何れかに分類する。また、当該オフセットタイプと、処理対象の画素が分類されたクラスを示すクラスインデックスとをオフセット導出部625に供給する。
【0147】
(ステップS106)
続いて、オフセット導出部625は、QAOU制御部622による制御に基づき、処理対象の画素に対して加算すべきオフセットをオフセット情報格納部621から読み出す。すなわち、クラス分類部624から供給されるオフセットタイプ及びクラスインデックスによって指定されるオフセットを読み出す。また、処理対象の画素について導出されたオフセットをオフセット属性設定部613から供給されるシフト値だけ左側へビットシフトすることで逆量子化したオフセットを、オフセット加算部626に供給する。
【0148】
(ステップS107)
続いて、オフセット加算部626は、QAOU制御部622による制御に基づき、デブロック済復号画像P_DBの処理対象画素の画素値に対して、オフセット導出部625から供給されるオフセットを加算する。
【0149】
(ステップS108)
本ステップは、第2のループの終端である。
【0150】
(ステップS109)
本ステップは、第1のループの終端である。
【0151】
なお、ステップS103にて、オフセットタイプ導出部623が読み出したオフセットが0(オフセットタイプ=0)であるとき、QAOU制御部622は、処理対象のQAOMUの各画素に対してオフセットを加算しないようオフセット加算部626を制御する。
【0152】
また、ステップS105にて、対象画素がクラス0(クラスインデックス=0)に分類された場合、該対象画素に対しては、オフセットを加算しないようオフセット加算部626を制御する。
【0153】
(オフセットの格納に必要なビット数)
続いて、オフセット(sao_offset)の格納に必要なビット数について説明する。画素ビット深度が10ビットで、オフセットのビット深度が9ビットである場合、オフセットは-29~29-1の値を取り、オフセット1つあたりのビット数は10ビットと大きなビット数を有することになる。このように大きなビット数のオフセットを復号する場合、オフセット情報格納部621は、オフセットを格納しておくためのメモリサイズとして、1ピクチャあたり最大で、
(1ピクチャあたりのQAOMUの総数)×(クラス数)×(オフセットあたりのビット数)=256×16×10(ビット)=40960(ビット)
を有していることが要求される。1ピクチャあたりのQAOMUの総数は、復号装置では256個であるが、後述する符号化装置では341個用いるため、さらに大きなメモリが必要になる。このように、オフセットの値域を制限せず、オフセットのビット深度で可能な値域を用いる場合には、オフセットのビット数が大きいため、オフセットを格納しておくための大きなメモリサイズが必要になる。
【0154】
(SAO_DEPTHと符号化効率の関係)
SAO_DEPTHとPIC_DEPTHとは、量子化誤差の観点で互いに密接な関係がある。適応オフセットフィルタ60の出力画像のビット深度は、画素ビット深度PIC_DEPTHであり、SAO_DEPTHは画素に加えるオフセットのビット深度であるから、画素ビット深度を超える精度のオフセットを用いても出力過程で捨てられてしまうため、オフセットの精度であるSAO_DEPTHは、PIC_DEPTH以下で設定されることが好ましい。また、SAO_DEPTHがPIC_DEPTHよりも小さい場合には、入力画像をフィルタにより補正可能な精度(PIC_DEPTH)よりも粗い補正しか行うことができないため、フィルタ効果は減少する。
【0155】
なお、オフセットの精度SAO_DEPTHが高い場合には、オフセットの符号量が増加する。一般に、符号化効率は符号化データの符号量R、入力画像の歪みD、重みλを用いて表現されるレート歪みコストD+λRを最小化することで最適化されることからも理解できるように、オフセットの精度は、歪みDに対してマイナス、レートRに対してプラスの影響を与えることから、精度の大きさにはトレードオフが存在し特定の最適値が存在する。
【0156】
さらに、本実施例において、量子化されたオフセットを一定のビット幅で表現できるオフセット値域に制限することで、オフセット情報格納部621で量子化されたオフセットを格納するためのビット幅を制限することができる。制限しない場合と比較して、メモリサイズ削減の効果を得ることができる。しかし、過度にオフセット値域を狭くすることは、オフセットが復号画像の歪みを補正する効果を小さくしてしまうので、オフセットの加算処理は復号画像の歪みを除去することができず、符号化効率が低下することがある。したがって、符号化効率が低下しないようにオフセット値域を最適な範囲を設定することが好ましい。
【0157】
本実施の形態においては、オフセット属性設定部613は、パターンS1~S6の何れかによってオフセットビット深度及びオフセットのシフト値を設定し、パターンC1~C3の何れかによってオフセット値域を設定する。
【0158】
(パターンS1)
パターンS1では、
図9(a)に示すように、オフセットのビット深度SAO_DEPTHを画素ビット深度PIC_DEPTHと等しくする。オフセットの精度の最大値は画素ビット深度となることから、パターンS1は最大の精度でオフセットを符号化することになる。
【0159】
(パターンS2)
パターンS2では、
図9(b)に示すように、PIC_DEPTHが10ビット以下の時は、SAO_DEPTHをPIC_DEPTHと等しくし、PIC_DEPTHが11ビット以上の時は、SAO_DEPTHを10とする。パターンS2でオフセットのビット深度の上限を10ビットとしている。発明者の知見により、復号画像の量子化ステップQPの値が小さいとき(ビットレートが高いとき)、オフセットのビット深度が画素ビット深度と同一である場合の方が、オフセットのビット深度を小さくする場合に比較して、符号化効率が高く、逆に、量子化ステップQPの値が大きいとき、オフセットのビット深度が画素ビット深度よりも小さい方が、画素ビット深度と同じ場合よりも符号化効率が高くなる。発明者の実験では、量子化パラメータqpが12から27の領域において、オフセットのビット深度をパターンS2のように定めることにより、画素ビット深度が9ビット以下のときにオフセットのビット深度が8ビットであり、画素ビット深度が10ビット以上のときにオフセットのビット深度が9ビットである場合と比較して、符号化効率が向上することが確認された。したがって、パターンS2において、10ビットを境に画素ビット深度への依存性を変化させることで、パターンS1のようにオフセットのビット深度と画素ビット深度を等しくした場合に比べて、オフセットの符号量を小さくすることができ、高い符号化効率を得ることが可能である。
【0160】
(パターンS3)
パターンS3にでは、
図9(c)に示すように、PIC_DEPTHが9ビット以下の時は、SAO_DEPTHをPIC_DEPTHと等しくし、PIC_DEPTHが10ビット以上の時は、SAO_DEPTHを9とする。パターンS3でオフセットのビット深度の上限を9ビットとしている。パターンS3においても、パターンS2と同様に、オフセットの符号量を小さくすることができ、高い符号化効率を得ることが可能である。
【0161】
(パターンS4)
パターンS4では、
図9(d)に示すように、PIC_DEPTHが10ビット以下の時は、SAO_DEPTHをPIC_DEPTHと等しくし、PIC_DEPTHが11ビット以上の時は、SAO_DEPTHを10-floor((PIC_DEPTH-10)/STEP)とする。ここで関数floor(x)はx以下の最大の整数を与える関数である。パターンS4では、画素ビット深度が11ビット以上において、画素ビットがSTEPビットだけ増加(減少)する毎にオフセットのビット深度が1ビットだけ増加(減少)することを意味する。
図9(e)では、パターンS4におけるSTEP=2の場合を示していて、画素ビット深度が2ビット増加する毎に、オフセットのビット深度は1ビット増加している。このような構成とすることで、画素ビット深度の大きさを考慮しつつ、ビットレートの大きさに対して、パターンS2及びパターンS3より自由度の高い対応が可能である。
【0162】
また、パターンS1~パターンS4に共通して、シフト値はPIC_DEPTHとSAO_DEPTHとの差分値PIC_DEPTH-SAO_DEPTHで表される。上記のパターンS1~S4におけるオフセットビット深度及びシフト値の変更はメモリサイズ及び処理量の増加をすることなくオフセットビット深度及びシフト値を設定しているので、符号化効率の改善が可能である。
【0163】
(パターンS5)
パターンS5ではオフセットのビット深度を明示的に符号化する。具体的には、オフセットのビット深度と所定の値の差を符号化する。所定の値は8、もしくは、画素ビット深度が適当であり、前者の場合、SAO_DEPTH-8が符号化され、後者の場合はPIC_DEPTH-SAO_DEPTHが適当である。なお、オフセットのビット深度は、符号化データの各種パラメータ情報やヘッダもしくは、QAOU情報の一部として符号化しても構わない。QAOU情報の一部としては、リーフQAOUに画素ビット深度を含めておいても良いし、所定の階層(例えば最上位階層のQAOU、や、第1階層のQAOU)のQAOU情報に画素ビット深度を含めておいても構わない。符号化データの一部として符号化することにより、復号装置および符号化装置でビット深度を最適な値に設定することによって符号化効率を最大化させる効果が得られる。また、ビット深度をQAOU情報で符号化する場合には、QAOUの深度sao_curr_depthに応じてビット深度を変更することによりオフセットを格納するメモリの低減が可能である。多くのオフセットが出現する可能性があるのはsao_curr_depthが大きい場合であるから、sao_curr_depthが大きい場合にビット深度を小さくし、sao_curr_depthが小さい場合にビット深度を大きく設定することによって必要なメモリサイズの削減が可能である。例えば、sao_curr_depth=0~1の場合には、オフセットのビット深度=画素ビット深度(パターンS1)とし、sao_curr_depth=2~4では、オフセットのビット深度に上限を設定する(パターンS2)などが適当であり、このようにビット深度を符号化する。また、QAOUの深度毎にオフセットのビット深度を符号化するか、QAOUの深度によらずオフセットのビット深度を1つ用いるかを示すフラグを符号化し、QAOUの深度毎に符号化するか否かを切り替えることも適当である。
【0164】
(パターンS6)
パターンS6では、明示的な符号化なく、sao_curr_depthに応じてビット深度を決定する。例えば、sao_curr_depth=0~1の場合には、オフセットのビット深度=画素ビット深度(パターンS1)とし、sao_curr_depth=2~4では、オフセットのビット深度に上限を設定する(パターンS2)などが適当である。
【0165】
(パターンC1)
パターンC1では、SAO_DEPTHに応じてオフセット値域を設定する。以下ではオフセット値域の値を表す最大のビット長をCLIP_BITとする。具体的には、CLIP_BIT=SAO_DEPTH-Kの計算により、オフセット値域を-2CLIP_BIT-1~2CLIP_BIT-1-1と定める。発明者の実験によれば、K=4が適当であることが見出された。すなわち、K=4の場合には、オフセット値域によりオフセットの範囲を制限しても符号化効率の低下がないことを確認した。K=4は、最も良く使用される画素のビット深度が8の場合に適当である。画素ビット深度が8の場合、オフセットのビット深度SAO_DEPTHも8であり、CLIP_BIT=8-K=4となる。1つのオフセットが4ビットで格納できることは、8ビットのバイトを単位として扱うソフトウェア等で、1バイトに2つのオフセットをパッキングして格納することが可能であり、簡易にメモリサイズの削減が可能である。
【0166】
(パターンC2)
パターンC2では、SAO_DEPTHに依らずオフセット値域を設定する。具体的には、CLIP_BIT=8として、オフセット値域を-27~27-1と定める。
【0167】
また、一般的に、SAO_DEPTHに依らない定数Nを用いてCLIP_BIT=Nとしてもよい。SAO_DEPTHに依らずオフセット値域を設定する場合には、メモリサイズを小さくする効果を得るため、オフセットのビット深度よりも小さな値に設定することが好ましい。
【0168】
(パターンC3)
パターンC3では、オフセット値域を、QAOUの階層に応じて決定する。sao_curr_depthが小さい場合(例えば0~1)には、オフセットのビット深度によらずオフセット値域を決定とし、sao_curr_depthが大きい場合(例えば2~4)にはオフセットのビット深度によって決定する、が適当である。例えば、前者はCLIP_BIT=8(パターンC2)、後者はSAO_DEPTH-Kビット(パターンC1)とする方法がある。なお、オフセットのビット深度をQAOUの階層に応じて変更する場合には、結果として固定のビット数でも構わないことがある。例えば、CLIP_BIT=4とすることが適当である。
【0169】
(オフセットのビット数の具体例1)
続いて、本実施の形態に係るオフセット(sao_offset)のビット数の第1の具体例について説明する。本例においては、画素ビット深度を10ビットとし、シフト値の設定をパターンS2により行い、オフセット値域の設定をパターンC1により行う場合を説明する。パターンS2ではオフセットのビット深度は10ビットに設定され、パターンC1ではオフセット値域は10-4=6ビットに設定される。オフセット1つあたりのビット数が6ビットであるとは、オフセットのとり得る値を、-32から31までの値に制限することに対応する。本例の場合、オフセット情報格納部621は、オフセットを格納しておくためのメモリサイズとして、1ピクチャあたり最大で、
(1ピクチャあたりのQAOMUの総数)×(クラス数)×(オフセットあたりのビット数)=256×16×6(ビット)=24576(ビット)
を有していれば足りる。
【0170】
したがって、オフセットが本例の値域を有する構成とすることによって、従来例に比べて、オフセット情報格納部621に必要なメモリサイズを略3/5に減少させることができる。
【0171】
符号化データ#1に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【0172】
(オフセットのビット数の具体例2)
続いて、本実施の形態に係るオフセット(sao_offset)のビット数の第2の具体例について説明する。本例においては、画素ビット深度を10ビットとし、シフト値の設定をパターンS2により行い、オフセット値域の設定をパターンC2により行う例を説明する。パターンS2よりオフセットのビット深度は10ビットに設定され、パターンC2よりオフセット値域は8ビットに設定される。オフセット1つあたりのビット数が8ビットであるとは、オフセットのとり得る値を、例えば-128から127までの値に制限することに対応する。本例の場合、オフセット情報格納部621は、オフセットを格納しておくためのメモリサイズとして、1ピクチャあたり最大で、
(1ピクチャあたりのQAOMUの総数)×(クラス数)×(オフセットあたりのビット数)=256×16×8(ビット)=32768(ビット)
を有していれば足りる。
【0173】
したがって、オフセットが本例のビット数を有する構成とすることによって、従来例に比べて、オフセット情報格納部621に必要なメモリサイズを略4/5に減少させることができる。
【0174】
また、符号化データ#1に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【0175】
なお、オフセットのビット数を制限すれば、符号化データに含まれるオフセット情報の符号量を小さくすることができるが、過度に制限してしまうと、適応オフセットフィルタを備えることのメリットが小さくなってしまい、符号化データに含まれる残差データ(残差画像の画素値)の符号量が大きくなってしまうという問題がある。
【0176】
(オフセットのビット数の具体例3)
続いて、オフセット(sao_offset)のビット数の第3の具体例について説明する。本例パターンC1、C2何れかにおいては、オフセットタイプが、エッジオフセット(オフセットタイプ=1~4)であるのか、バンドオフセット(オフセットタイプ=5~6)であるのかに応じて、オフセットのビット数に対して異なる値を設定する。ここでは、画素ビット深度を10ビットとする場合を例に、シフト値の設定をパターンS2により行い、エッジオフセットのオフセット値域の設定をパターンC2により行い、バンドオフセットのオフセット値域の設定をパターンC1により行う方法を説明する。
【0177】
画素ビット深度が10ビットの場合、パターンS2ではオフセットのビット深度は10ビットに設定される。エッジオフセットのオフセットタイプに属するオフセット(以下、エッジオフセットのオフセット)は、パターンC2から8ビットに値域が設定される。バンドオフセットのオフセットタイプに属するオフセット(以下、バンドオフセットのオフセット)はパターンC1から6ビットに値域が設定される。より一般には、エッジオフセットのオフセットのビット数をNビットとし、バンドオフセットのオフセットのビット数をMビットとしたとき、N≧Mが満たされるようにオフセットのビット数を定める。
【0178】
オフセット情報格納部621で確保が必要なメモリサイズは、QAOU単位で、オフセットタイプのクラス数×オフセットのビット数であるため、オフセットのクラス数がエッジオフセットよりも大きいバンドオフセットのビット数を小さくすれば、オフセットをオフセット情報格納部621で用いるメモリ領域を有効に活用することができる。
【0179】
このようにオフセットタイプに応じて、オフセットのビット数を異ならせることによって、オフセット情報格納部621に過度なメモリサイズを要求することなく、符号化効率の向上を図ることができる。メモリ領域を最も有効的に活用することができる。
【0180】
なお、オフセットの取り得る値を制限するための閾値thが2m-1より大きく、2m以下であるとき、当該オフセットを符号化するための符号化方式として、mビットの固定長符号化/復号方式を用いることができる。また、最大値とthとするTruncated unary符号化や、Truncated Rice符号化などの可変長符号化/復号方式を用いることができる。なお、上記の最大値thは、オフセット属性設定部613から供給されるオフセット値域によって決定される。また、動画像復号装置1は、このようにして符号化されたオフセットを復号することができる。
【0181】
以上の構成ではオフセット属性設定部613において、オフセットのビット深度、オフセット値域、及び、シフト値が設定される。適応オフセットフィルタ情報復号部61では、オフセット値域の範囲の値を有する量子化オフセットが復号され、個々のオフセットに対して、オフセット値域以上のビット幅の格納領域を有するオフセット情報格納部621に格納される。本実施の形態では、オフセット値域がオフセットのビット深度に応じて決定することを特徴とする。また、オフセットのビット深度は、画素のビット深度に応じて決定する。このため、オフセットのビット深度を画素のビット深度に応じて決定することも、本実施の形態の特徴である。
【0182】
また、実施の形態1における適応オフセットフィルタ情報復号部61は、復号後のオフセットを格納する格納部と該格納部から得られるオフセットを逆量子化を行う逆量子化部とを備え、オフセット導出部625における逆量子化処理を省略する形態としてもよい。この場合、格納部はオフセット属性設定部613により設定されるオフセット値域に制限されるオフセットを格納することと、逆量子化部はオフセット属性設定部613により設定されるシフト値に応じて左側へシフトを行って逆量子化処理を行うことを特徴とする。
【0183】
オフセット情報復号部611は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算するオフセット加算部626によって参照される各オフセットを符号化データ#1から復号するものであり、図示されない画素ビット深度に応じて定められるオフセット値域及びシフト値を設定し、オフセット値域に制限されるオフセットを復号するオフセット復号手段を備えている、と表現することもできる。
【0184】
また、本実施の形態に係る適応オフセットフィルタ60は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域におけるオフセット属性を設定するオフセット属性設定部613と、上記設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを復号するオフセット情報復号部611と、上記入力画像の各画素値に上記オフセットを加算するオフセット加算部626とを備えている画像フィルタ装置である、と表現することもできる。
【0185】
さらに、オフセット情報復号部611は、上記オフセット復号手段に加え、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記決定手段によって決定されたオフセットタイプに応じて異なるビット幅を有するオフセットを復号するオフセット復号手段を備えている、構成としてもよい。
【0186】
また、上記オフセットタイプ指定情報は、各単位領域における上記入力画像の画素値のビット深度を含み、オフセット情報復号部611は、上記画素値のビット深度に応じたビット幅を有するオフセットを復号する構成とすることができる。
【0187】
以下では、クラス分類部624による分類処理の具体例について説明する。クラス分類部624は、以下の分類処理例のうち、符号化データ#1を生成する動画像符号化装置における分類処理に対応する分類処理を行うことが好ましい。
【0188】
(クラス分類部624による分類処理例1)
クラス分類部624による分類処理の第1の例について、
図10(a)~(d)から
図12を参照して説明する。
【0189】
(オフセットタイプ=1~4(エッジオフセット)のとき)
オフセットタイプ導出部623から供給されるオフセットタイプが1~4の何れかであるとき、クラス分類部624は、処理対象の画素の近傍にエッジが存在するか否か、及びエッジが存在する場合にはエッジの種類を判定し、判定した結果に応じて、当該処理対象の画素を、複数のクラスの何れかに分類する。
【0190】
より具体的には、まず、クラス分類部624は、処理対象画素xの画素値pic[x]と、該処理対象画素に隣接するか、または頂点を共有する2つの画素a、bの画素値pic[a]、pic[b]との差分の符号
Sign(pic[x]-pic[a])、及び
Sign(pic[x]-pic[b])
を算出する。ここで、Sign(z)は、
Sign(z)=+1 (z>0のとき)
Sign(z)=0 (z=0のとき)
Sign(z)=-1 (z<0のとき)
の各値をとる関数である。また、何れの画素を画素a及び画素bとして用いるかは、具体的はオフセットタイプに依存し、以下のように定められる。
【0191】
・オフセットタイプ=1(sao_type_idx=1)のとき
図10(a)に示すように、処理対象画素xの左側に隣接する画素を画素aとし、処理対象画素の右側に隣接する画素を画素bとする。
【0192】
・オフセットタイプ=2(sao_type_idx=2)のとき
図10(b)に示すように、処理対象画素xの上側に隣接する画素を画素aとし、処理対象画素の下側に隣接する画素を画素bとする。
【0193】
・オフセットタイプ=3(sao_type_idx=3)のとき
図10(c)に示すように、処理対象画素xの左上の頂点を共有する画素を画素aとし、処理対象画素の右下の頂点を共有する画素を画素bとする。
【0194】
・オフセットタイプ=4(sao_type_idx=4)のとき
図10(d)に示すように、処理対象画素xの左下の頂点を共有する画素を画素aとし、処理対象画素の右上の頂点を共有する画素を画素bとする。
【0195】
図11(a)は、処理対象画素xの画素値pic[x]と画素aまたはbの画素値との大小関係を示すグラフ、及びその大小関係に応じた関数Signの値を示す図である。
図11(a)に示すグラフにおいてpic[x]が付されている黒丸は、処理対象画素xの画素値を示すものであり、pic[x]が付されていない黒丸は、処理対象画素aまたはbの画素値を示すものである。また、
図11(a)に示すグラフにおける上下方向は、画素値の大小を示している。
【0196】
続いて、クラス分類部624は、Sign(pic[x]-pic[a])、及びSign(pic[x]-pic[b])に基づいて、以下の数式(1-1)によってEgdeTypeを導出する。
【0197】
EgdeType=Sign(pic[x]-pic[a])+Sign(pic[x]-pic[b])+2 ・・・(1-1)
図11(b)は、処理対象画素xの画素値と、画素a及びbの画素値との大小関係を示すグラフ、及びその大小関係に応じたEgdeTypeの値を示す図である。
図11(b)において、各グラフの中心の黒丸は、処理対象画素xの画素値を示しており、両端の黒丸は、画素a及びbの画素値を示している。また、
図11(b)に示すグラフにおける上下方向は、画素値の大小を示している。
【0198】
続いて、クラス分類部624は、導出したEgdeTypeに基づいて、処理対象画素xが属するべきクラスのクラスインデックス(class_idx)を以下のように導出する。
【0199】
class_idx=EoTbl[EdgeType]
ここで、EoTbl[EdgeType]は、EdgeTypeからclass_idxを導出するために用いられる変換テーブルである。当該変換テーブルEoTblの具体例を
図11(d)に示す。
【0200】
図11(d)に示すように、クラス分類部624は、処理対象画素x、画素a及び画素bから成る領域にエッジが存在しない場合(以下、平坦な場合とも呼ぶ)、処理対象画素xをクラス0(class_idx=0)に分類する。
図11(c)は、
図11(b)に示した各グラフと、lass_idxとの対応を示している。
【0201】
(オフセットタイプ=5~6(バンドオフセット)のとき)
オフセットタイプ導出部623から供給されるオフセットタイプが5~6の何れかであるとき、クラス分類部624は、処理対象画素xの画素値pic[x]に応じて、当該処理対象画素の画素値を複数のクラスの何れかに分類する。
【0202】
・オフセットタイプ=5(sao_type_idx=5)のとき
クラス分類部624は、処理対象画素xの画素値pic[x]が、
(max×1/4)≦pic[x]≦(max×3/4)
を満たしている場合に、当該処理対象画素をクラス0以外のクラスに分類する。すなわち、処理対象画素の画素値が、
図12(a)における斜線の範囲内である場合に、当該処理対象画素をクラス0以外のクラスに分類する。なお、上記maxは、処理対象画素xの画素値の取り得る最大値を表しており、例えば、max=255である。また、max=255であるとき、上記の条件は、
8≦(pic[x]/8)≦23
と表現することもできる。
【0203】
・オフセットタイプ=6(sao_type_idx=6)のとき
クラス分類部624は、処理対象画素xの画素値pic[x]が、
pic[x]≦(max×1/4)または(max×3/4)≦pic[x]
を満たしている場合に、当該処理対象画素をクラス0以外のクラスに分類する。すなわち、処理対象画素の画素値が、
図12(b)における斜線の範囲内である場合に、当該処理対象画素をクラス0以外のクラスに分類する。なお、上記maxは、処理対象画素xの画素値の取り得る最大値を表しており、例えば、max=255である。また、max=255であるとき、上記の条件は、
(pic[x]/8)≦7または24≦(pic[x]/8)
と表現することもできる。
【0204】
クラス分類部624によるクラス分類処理をより具体的に説明すれば以下の通りである。
【0205】
オフセットタイプが5~6の何れかであるとき、クラス分類部624は、処理対象画素xが属するべきクラスのクラスインデックス(class_idx)を以下のように導出する。
【0206】
class_idx=BoTbl[sao_type_idx][pic[x]/8]
ここで、BoTbl[sao_type_idx][pic[x]/8]は、処理対象画素xの画素値pic[x]とsao_type_idxとから、class_idxを導出するために用いられる変換テーブルである。当該変換テーブルBoTblの具体例を
図12に示す。
図12(c)において「BO_1」は、sao_type_index=5であることを示しており、「BO_2」は、sao_type_index=6であることを示している。
【0207】
図12(c)に示すように、sao_type_index=5のとき、クラス分類部624は、処理対象画素xの画素値pic[x]が8≦(pic[x]/8)≦23を満たすとき、pic[x]の大きさに応じて、処理対象画素xをクラスインデックス1から16までの何れかのクラスに分類する。
【0208】
一方で、sao_type_index=6のとき、クラス分類部624は、処理対象画素xの画素値pic[x]がpic[x]/8)≦7または24≦(pic[x]/8)を満たすとき、pic[x]の大きさに応じて、処理対象画素xをクラスインデックス1から16までの何れかのクラスに分類する。
【0209】
一般的に、画像のビット深度がPIC_DEPTHのとき、max=2
PIC_DEPTH-1であり、
図12(c)におけるpic/8の代わりにpic/2
(PIC_DEPTH-5)を用いてクラスの分類をおこなう。
【0210】
(クラス分類部624による分類処理例2)
続いて、クラス分類部624による分類処理の第2の例について説明する。
【0211】
本処理例においては、クラス分類部624は、数式(1-1)に代えて、以下の数式(1-2)を用いてEgdeTypeを導出する。他は分類処理例1と同様である。
【0212】
EgdeType=Sign((pic[x]>>shift)-(pic[a]>>shift))+Sign((pic[x]>>shift)-(pic[b]>>shift))+2 ・・・(1-2)
ここで、「>>」は右ビットシフトを表しており、「shift」は、ビットシフトの大きさを表している。「shift」の具体的な値は、例えば、画素値のビット深度と正の相関を有するように定めることができる。
【0213】
分類処理例1による分類処理においては、画素値の勾配が非常に小さい場合であっても、画素値の勾配が0でなければ、Signの値は非0となる。したがって、分類処理例1による分類処理は、ノイズの影響を受けやすいという側面を有する。
【0214】
本処理例においては、画素値を右シフトしてから差分をとるので、EgdeTypeの値がノイズの影響を受けにくくなり、符号化効率が向上するという効果がある。
【0215】
なお、本処理例においては、数式(1-2)に代えて、以下の数式(1-3)を用いてもよい。
【0216】
EgdeType=Sign((pic[x]-pic[a])>>shift)+Sign((pic[x]-pic[b])>>shift))+2 ・・・(1-3) すなわち、画素値の差分をとった後に、右ビットシフトを行ってもよい。数式(1-3)を用いることによっても、数式(1-2)を用いた場合と同様の効果を奏する。
【0217】
(クラス分類部624による分類処理例3)
続いて、クラス分類部624による分類処理の第3の例について説明する。
【0218】
本処理例においては、クラス分類部624は、分類処理例1において説明した関数Signの定義を以下のように変更する。他は分類処理例1と同様である。
【0219】
Sign(z)=+1 (z>thのとき)
Sign(z)=0 (-th≦z≦thのとき)
Sign(z)=-1 (z<-thのとき)
ここで、thは、予め定められた値を有する閾値である。閾値thの具体的な値は、その絶対値が、例えば、画素値のビット深度と正の相関を有するように定めることができる。
【0220】
本処理例においても、EgdeTypeの値がノイズの影響を受けにくくなり、高い符号化効率を得ることができる。
【0221】
(クラス分類部624による分類処理例4)
続いて、クラス分類部624による分類処理の第4の例について説明する。
【0222】
本処理例においては、クラス分類部624は、
図12(c)に示したBoTbl[sao_type_idx][pic[x]/8]に代えて、
図13に示したBoTbl[sao_type_idx][pic[x]/8]を用いる。
【0223】
図13に示すように、本処理例においては、pic[x]/8の値が8及び9の何れかである場合、処理対象画素xは、sao_type_index=5であっても、sao_type_index=6であっても、クラスインデックスが0でないクラスに分類される。また、pic[x]/8の値が22及び23の何れかである場合、処理対象画素xは、sao_type_index=5であっても、sao_type_index=6であっても、クラスインデックスが0でないクラスに分類される。
【0224】
また、本処理例においては、処理対象画素の画素値は、その値が15以下である場合(pic[x]/8=0または1である場合)、MINにクリップされる。また、処理対象画素の画素値は、その値が240以上である場合(pic[x]/8=30または31である場合)、MAXにクリップされる。ここで、MIN及びMAXとしては、
・MIN=15、MAX=240
・MIN=16、MAX=239
・MIN=16、MAX=235
の何れかの組み合わせを用いることが好ましい。
【0225】
分類処理例1においては、sao_type_index=5のときにクラス0に分類される処理対象画素は、sao_type_index=6のときにクラス0でないクラスに分類される。また、sao_type_index=6のときにクラス0に分類される処理対象画素は、sao_type_index=5のときにクラス0でないクラスに分類される。
【0226】
したがって、分類処理例1においては、sao_type_index=5であるのか、sao_type_index=6であるのかに応じて、オフセットを加算した後の画素値が大きく異なり得るため、符号化効率が期待されるほど向上しないという問題が生じ得る。また、このような問題は、オフセットフィルタ前画像の画素値がpic[x]/8の値が8及び9の何れか、または、pic[x]/8の値が22及び23の何れかである場合に顕著なものとなり得る。
【0227】
本処理例においては、pic[x]/8の値が8及び9の何れかである場合、処理対象画素xは、sao_type_index=5であっても、sao_type_index=6であっても、クラスインデックスが0でないクラスに分類され、pic[x]/8の値が22及び23の何れかである場合、処理対象画素xは、sao_type_index=5であっても、sao_type_index=6であっても、クラスインデックスが0でないクラスに分類されるので、上述の問題が生じにくい。したがって、本処理例の処理を行うことによって、符号化効率の向上を図ることができる。
【0228】
なお、本処理例では、pic[x]/8の値が8及び9の何れかである場合、及び、pic[x]/8の値が22及び23の何れかである場合、処理対象画素xは、sao_type_index=5であっても、sao_type_index=6であっても、クラスインデックスが0でないクラスに分類されるものとしたが、これは本処理例を限定するものではなく、pic[x]/8の値が所定の範囲であるときに、処理対象画素xは、sao_type_index=5であっても、sao_type_index=6であっても、クラスインデックスが0でないクラスに分類される処理を行えばよい。
【0229】
一般的に、画像の画素ビット深度がPIC_DEPTHのとき、max=2
PIC_DEPTH-1であり、
図13におけるpic/8の代わりにpic/2
(PIC_DEPTH-5)を用いてクラスの分類をおこなう。
【0230】
このように、本処理例の分類処理を行うクラス分類部624は、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第1及び上記第2のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類する、ものであると表現することもできる。
【0231】
(動画像符号化装置2)
以下では、符号化対象画像を符号化することによって符号化データ#1を生成する動画像符号化装置2について、
図14から
図18(a)~(d)を参照して説明する。動画像符号化装置2は、その一部に、H.264/MPEG-4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、及び、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
【0232】
図14は、本実施の形態に係る動画像符号化装置2の構成を示すブロック図である。
図14に示すように、動画像符号化装置2は、変換・量子化部21、可変長符号符号化部22、逆量子化・逆変換部23、バッファメモリ24、イントラ予測画像生成部25、インター予測画像生成部26、動きベクトル検出部27、予測方式制御部28、動きベクトル冗長性削除部29、加算器31、減算器32、デブロッキングフィルタ33、適応フィルタ70、及び適応オフセットフィルタ80を備えている。動画像符号化装置2は、動画像#10(符号化対象画像)を符号化することによって、符号化データ#3を生成する装置である。
【0233】
変換・量子化部21は、(1)符号化対象画像から予測画像Predを減算した予測残差Dをブロック毎にDCT変換(Discrete Cosine Transform)し、(2)DCT変換により得られたDCT係数を量子化し、(3)量子化により得られた量子化予測残差QDを可変長符号符号化部22及び逆量子化・逆変換部23に供給する。なお、変換・量子化部21は、(1)量子化の際に用いる量子化ステップQPを、ツリーブロック毎に選択し、(2)選択した量子化ステップQPの大きさを示す量子化パラメータ差分Δqpを可変長符号符号化部22に供給し、(3)選択した量子化ステップQPを逆量子化・逆変換部23に供給する。ここで、量子化パラメータ差分Δqpとは、DCT変換/量子化するツリーブロックに関する量子化パラメータqp(QP=2pq/6)の値から、直前にDCT変換/量子化したツリーブロックに関する量子化パラメータqp’の値を減算して得られる差分値のことを指す。
【0234】
可変長符号符号化部22は、(1)変換・量子化部21から供給された量子化予測残差QD並びにΔqp、(2)後述する予測方式制御部28から供給された予測パラメータPP、および、(3)後述する適応フィルタ70から供給されたフィルタセット番号、フィルタ係数群、領域指定情報、並びにオンオフ情報を可変長符号化することによって、符号化データ#1を生成する。また、可変長符号符号化部22は、適応オフセットフィルタ80から供給されるQAOU情報を符号化し、符号化データ#3に含める。
【0235】
逆量子化・逆変換部23は、(1)量子化予測残差QDを逆量子化し、(2)逆量子化によって得られたDCT係数を逆DCT(Discrete Cosine Transform)変換し、(3)逆DCT変換によって得られた予測残差Dを加算器31に供給する。量子化予測残差QDを逆量子化する際には、変換・量子化部21から供給された量子化ステップQPを利用する。なお、逆量子化・逆変換部23から出力される予測残差Dは、変換・量子化部21に入力される予測残差Dに量子化誤差が加わったものであるが、ここでは簡単のために共通の呼称を用いる。
【0236】
イントラ予測画像生成部25は、各パーティションに関する予測画像Pred_Intraを生成する。具体的には、(1)各パーティションついてイントラ予測に用いる予測モードを選択し、(2)選択した予測モードを用いて、復号画像Pから予測画像Pred_Intraを生成する。イントラ予測画像生成部25は、生成したイントラ予測画像Pred_Intraを、予測方式制御部28に供給する。
【0237】
また、イントラ予測画像生成部25は、各パーティションについて選択された予測モードから、各パーティションのサイズとから各パーティションについての予測インデックスPIを特定し、当該予測インデックスPIを予測方式制御部28に供給する。
【0238】
また、イントラ予測画像生成部25は、対象パーティションのサイズ、および、対象パーティションに割り付けられた予測モードを示す情報であるイントラ符号化モード情報IEMを適応フィルタ70に供給する。
【0239】
動きベクトル検出部27は、各パーティションに関する動きベクトルmvを検出する。具体的には、(1)参照画像として利用するフィルタ済復号画像P_FL’を選択し、(2)選択したフィルタ済復号画像P_FL’において対象パーティションを最良近似する領域を探索することによって、対象パーティションに関する動きベクトルmvを検出する。ここで、フィルタ済復号画像P_FL’は、既に復号が完了した復号済みの復号画像に対して、デブロッキングフィルタ33によるデブロック処理、適応オフセットフィルタ80による適応的オフセット処理、および、適応フィルタ70による適応的フィルタ処理を施すことによって得られる画像であり、動きベクトル検出部27は、フィルタ済復号画像P_FL’を構成する各画素の画素値をバッファメモリ24から読み出すことができる。動きベクトル検出部27は、検出した動きベクトルmvを、参照画像として利用したフィルタ済復号画像P_FL’を指定する参照画像インデックスRIと共に、インター予測画像生成部26及び動きベクトル冗長性削除部29に供給する。なお、双方向予測(重み付き予測)を行うパーティションについては、参照画像として2枚のフィルタ済復号画像P_FL1’及びP_FL2’を選択し、2枚のフィルタ済復号画像P_FL1’及びP_FL2’の各々に対応する動きベクトルmv1及びmv2、並びに、参照画像インデックスRI1及びRI2をインター予測画像生成部26及び動きベクトル冗長性削除部29に供給する。
【0240】
インター予測画像生成部26は、各インター予測パーティションに関する動き補償画像mcを生成する。具体的には、動きベクトル検出部27から供給された動きベクトルmvを用いて、動きベクトル検出部27から供給された参照画像インデックスRIによって指定されるフィルタ済復号画像P_FL’から動き補償画像mcを生成する。動きベクトル検出部27と同様、インター予測画像生成部26は、フィルタ済復号画像P_FL’を構成する各画素の画素値をバッファメモリ24から読み出すことができる。インター予測画像生成部26は、生成した動き補償画像mc(インター予測画像Pred_Inter)を、動きベクトル検出部27から供給された参照画像インデックスRIと共に、予測方式制御部28に供給する。なお、双方向予測(重み付き予測)をパーティションについては、(1)動きベクトルmv1を用いて、参照画像インデックスRI1によって指定されたフィルタ済復号画像P_FL1’から動き補償画像mc1を生成し、(2)動きベクトルmv2を用いて、参照画像インデックスRI2によって指定されたフィルタ済参照画像P_FL2’から動き補償画像mc2を生成し、(3)動き補償画像mc1と動き補償画像mc2との加重平均にオフセット値を加えることによってインター予測画像Pred_Interを生成する。
【0241】
予測方式制御部28は、イントラ予測画像Pred_Intra及びインター予測画像Pred_Interを符号化対象画像と比較し、イントラ予測を行うかインター予測を行うかを選択する。イントラ予測を選択した場合、予測方式制御部28は、イントラ予測画像Pred_Intraを予測画像Predとして加算器31及び減算器32に供給すると共に、イントラ予測画像生成部25から供給された予測インデックスPIを予測パラメータPPとして可変長符号符号化部22に供給する。一方、インター予測を選択した場合、予測方式制御部28は、インター予測画像Pred_Interを予測画像Predとして加算器31及び減算器32に供給すると共に、インター予測画像生成部26から供給された参照画像インデックスRI、並びに、動きベクトル冗長性削除部29(後述)から供給された推定動きベクトルインデックスPMVI及び動きベクトル残差MVDを予測パラメータPPとして可変長符号符号化部に供給する。
【0242】
予測方式制御部28にて選択された予測画像Predを、符号化対象画像から減算することによって、減算器32にて予測残差Dが生成される。減算器32にて生成された予測残差Dは、上述したとおり、変換・量子化部21によってDCT変換/量子化される。一方、予測方式制御部28にて選択された予測画像Predを、逆量子化・逆変換部23にて生成された予測残差Dに加算することによって、加算器31にて局所復号画像Pが生成される。加算器31にて生成された局所復号画像Pは、デブロッキングフィルタ33、適応オフセットフィルタ80および適応フィルタ70を経由したのち、フィルタ済復号画像P_FLとしてバッファメモリ24に格納され、インター予測における参照画像として利用される。
【0243】
なお、動きベクトル冗長性削除部29は、動きベクトル検出部27によって検出された動きベクトルmvにおける冗長性を削除する。具体的には、(1)動きベクトルmvの推定に用いる推定方法を選択し、(2)選択した推定方法に従って推定動きベクトルpmvを導出し、(3)動きベクトルmvから推定動きベクトルpmvを減算することにより動きベクトル残差MVDを生成する。動きベクトル冗長性削除部29は、生成した動きベクトル残差MVDを、選択した推定方法を示す推定動きベクトルインデックスPMVIと共に、予測方式制御部28に供給する。
【0244】
デブロッキングフィルタ33は、復号画像Pにおけるブロック境界、またはCU境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、復号画像Pにおける当該ブロック境界、または当該CU境界に対してデブロッキング処理を施すことによって、当該ブロック境界、または当該CU境界付近の画像の平滑化を行う。デブロッキングフィルタ33によりデブロッキング処理が施された画像は、デブロック済復号画像P_DBとして、適応オフセットフィルタ80に出力される。
【0245】
適応オフセットフィルタ80は、デブロッキングフィルタ33から供給されるデブロック済復号画像P_DBに対して、適応的オフセットフィルタ処理を施すことによってオフセットフィルタ済復号画像P_OFを生成する。生成されたオフセットフィルタ済復号画像P_OFは、適応フィルタ70に供給される。適応オフセットフィルタ80の具体的な構成については、後述するため、ここでは説明を省略する。
【0246】
適応フィルタ70は、適応オフセットフィルタ80から供給されるオフセットフィルタ済復号画像P_OFに対して、適応的なフィルタ処理を施すことによって、フィルタ済復号画像P_FLを生成する。適応フィルタ70によりフィルタ処理が施されたフィルタ済復号画像P_FLは、バッファメモリ24に格納される。適応フィルタ70によって用いられるフィルタ係数は、フィルタ済復号画像P_FLと符号化対象画像#10との誤差がより小さくなるように定められたものであり、このようにして定められたフィルタ係数がフィルタパラメータFPとして符号化され、動画像復号装置1に伝送される。
【0247】
(適応オフセットフィルタ80)
図15は、適応オフセットフィルタ80の構成を示すブロック図である。
図15に示すように、適応オフセットフィルタ80は、適応オフセットフィルタ情報設定部81及び適応オフセットフィルタ処理部82を備えている。
【0248】
また、
図15に示すように、適応オフセットフィルタ情報設定部81は、オフセット算出部811、オフセットシフト部816、オフセットクリップ部812、オフセット情報選択部813、及びオフセット属性設定部815を備えている。
【0249】
(オフセット算出部811)
オフセット算出部811は、対象の処理単位(例えばLCU)に含まれる所定の分割深度までの全てのQAOMUに対して、全てのオフセットタイプ及び全てのクラスについてのオフセットを算出する。ここで、オフセットタイプ及びクラスは、動画像復号装置1の説明において説明したものと同じものを指す。
【0250】
図16は、オフセット算出部811による処理の流れを示すフローチャートである。
【0251】
(ステップS201)
まず、オフセット算出部811は、処理対象とする対象QAOMUのQAOMU番号をループ変数とする第1のループを開始する。例えば、
図7(a)~(e)に示した例の場合、当該第1のループは、QAOMU番号=0からQAOMU番号=340までのループである。
【0252】
(ステップS202)
続いて、オフセット算出部811は、対象QAOMUに対して選択可能なオフセットタイプをループ変数とする第2のループを開始する。当該第2のループは、オフセットタイプ1からオフセットタイプ6までのループである。
【0253】
(ステップS203)
続いて、オフセット算出部811は、対象QAOMUに含まれる画素を単位とする第3のループを開始する。
【0254】
(ステップS204)
続いて、オフセット算出部811は、対象画素を複数のクラスの何れかに分類する。より具体的には、第2のループ変数であるオフセットタイプが1~4であるとき、対象画素をクラス1~4の何れかに分類する。本ステップにおける分類処理は、動画像復号装置1における適応オフセットフィルタ60の備えるクラス分類部624による分類処理例1~分類処理例4の何れかと同じ処理である。
【0255】
また、対象QAOMUに関して、クラス毎に、画素が分類された回数である分類回数count[part_idx][sao_type_index][class_idx]を算出する。ここで、part_idxは、QAOMU番号を表す。
【0256】
(ステップS205)
続いて、オフセット算出部811は、対象画素におけるデブロック済復号画像P_DBの画素値と該対象画素における符号化対象画像#10の画素値との差分をとることによって該対象画素における差分画素値を算出する。より具体的には、対象画素の位置を(x、y)としたとき、P_DB(x、y)-Org(x、y)を算出する。ここで、P_DB(x、y)は、対象画素におけるデブロック済復号画像P_DBの画素値を表しており、Org(x、y)は、対象画素における符号化対象画像#10の画素値を表している。
【0257】
(ステップS206)
本ステップは、第3のループの終端である。本ステップが終了した時点で、対象QAOMUに含まれる全ての画素に関して、差分画素値が算出されていることになる。
【0258】
(ステップS207)
続いて、オフセット算出部811は、対象QAOMUに含まれる各画素についての差分画素値のクラス毎の総和を、該クラスの分類回数で除算することによってオフセットを算出する。より具体的には、オフセット算出部811は、対象QAOMU、対象オフセットタイプ、及び対象クラスについてのオフセットoffset[part_idx][sao_type_idx][class_idx]を以下の式を用いて算出する。
【0259】
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によって指定される対象QAOMU、及びsao_type_idxによって指定される対象オフセットタイプにおいて、class_idxによって指定される対象クラスに分類された画素についての和をとることを示している。
【0260】
(ステップS208)
本ステップは第2のループの終端である。
【0261】
(ステップS209)
本ステップは第1のループの終端である。
【0262】
以上の処理により、オフセット算出部811は、対象LCUに含まれる所定の分割深度までの全てのQAOMUに対して、全てのオフセットタイプ及び全てのクラスについてのオフセットを算出する。例えば、
図7(a)~(e)に示す例の場合、オフセット算出部811は、合計で、
((分割深度0のQAOMUの総数)+...+(分割深度4のQAOMUの総数))×((EOのオフセットタイプ数)×(EOのクラス数)+(BOのオフセットタイプ数)×(BOのクラス数))=(1+4+16+64+256)×((4×4)+(2×16))=16368(個)
のオフセットを算出することになる。ここで、各オフセットのビット数は例えば10ビットである。
【0263】
オフセット算出部811は、上記の処理によって算出したオフセット、オフセットタイプ、クラス、及び、QAOUの分割構造を表すQAOU構造情報からなるオフセット情報をオフセットシフト部816に供給する。
【0264】
なお、動画像符号化装置2は、上記ステップS204において何れの分類処理例に係る分類処理を行ったのかを示すフラグを符号化する構成とし、動画像復号装置1の備える適応オフセットフィルタ60は、当該フラグを参照し、当該フラグの示す分類処理と同じ分類処理を行う構成とすることができる。また、そのようなフラグを用いることなく、動画像符号化装置2と動画像復号装置1とで予め定められた同じ分類処理を行う構成としてもよい。
【0265】
(オフセットシフト部816)
オフセットシフト部816は、オフセット算出部811から供給されるオフセット情報に含まれる各オフセットの量子化を行う。量子化はオフセットを右側へビットシフトすることで、オフセットを画素ビット深度の精度からオフセットのビット深度の精度へ変換する。なお、シフト処理におけるシフト量は、後述するオフセット属性設定部815によって供給されるシフト値により決定される。
【0266】
(オフセットクリップ部812)
オフセットクリップ部812は、後述するオフセット属性設定部815から供給されるオフセット値域へ制限するために、オフセットシフト部816から供給されるオフセットに対して以下に示すようなクリップ処理1、クリップ処理2の何れかの処理によってクリップの処理を行う。
【0267】
(クリップ処理1)
オフセットクリップ部812は、オフセットシフト部816から供給されるオフセット情報に含まれる各オフセットに対してクリップ処理を行う。オフセットクリップ部812は、オフセットシフト部816から供給される各オフセットを例えば-8から7までの値にクリップすることによって、各オフセットを4ビットで表現する。クリップされた各オフセットは、オフセット情報選択部813に供給される。クリップするビット幅は、動画像復号装置1と同様、画像のビット深度とオフセットのビット深度に応じて設定される。
【0268】
このように、各オフセットをクリップすることによって、各オフセットが格納されるメモリ(不図示)のメモリサイズを削減することができる。また、符号化データ#1に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【0269】
(クリップ処理2)
また、オフセットクリップ部812は、オフセットシフト部816から供給される各オフセットのクリップ範囲を、オフセットタイプに応じて異なる値を設定する構成としてもよい。
【0270】
例えば、オフセットタイプがエッジオフセットである場合には、オフセットのビット数を8ビットとし、オフセットタイプがバンドオフセットである場合には、オフセットのビット数を4ビットとする。より一般には、オフセットタイプがエッジオフセットである場合のオフセットのビット数をNビットとし、オフセットタイプがバンドオフセットである場合のオフセットのビット数をMビットとしたとき、N>Mが満たされるようにオフセットのビット数を定める。
【0271】
このようにオフセットタイプに応じて、オフセットのビット数を異ならせることによって、各オフセットを格納するためのメモリに過度なメモリサイズを要求することなく、符号化効率の向上を図ることができる。
【0272】
なお、オフセットの取り得る値を制限するための閾値thが2m-1より大きく、2m以下であるとき、当該オフセットを符号化するための符号化方式として、mビットの固定長符号化を用いることができる。より具体的には、最大値とthとするTruncated unary符号化や、Truncated Rice符号化を用いることができる。なお、上記の最大値thは、オフセット属性設定部815から供給されるオフセット値域によって決定される。
【0273】
また、上記クリップ処理1及び2を組み合わせて得られるクリップ処理も本実施の形態に含まれる。また、適応オフセットフィルタ80は、オフセットクリップ部812を備えない構成としてもよい。
【0274】
(オフセット情報選択部813)
オフセット情報選択部813は、RDコスト(Rate-Distorsion cost)がより小さくなるオフセットタイプ、クラス、オフセットの組み合わせ、及び、それに対応するQAOU分割構造を決定し、決定したオフセットタイプ、クラス、オフセット及び、それに対応するQAOM分割構造を示すQAOU情報を可変長符号符号化部22に供給する。また、オフセット情報選択部813は、決定したオフセットをQAOU毎又はQAOMU毎に適応オフセットフィルタ処理部82に供給する。
【0275】
オフセット情報選択部813の処理について
図17~
図18を参照してより具体的に説明すれば以下の通りである。
図17は、オフセット情報選択部813による処理の流れを示すフローチャートである。
【0276】
(ステップS301)
まず、オフセット情報選択部813は、処理対象とする対象QAOMUのQAOMU番号をループ変数とする第1のループを開始する。
【0277】
(ステップS302)
続いて、オフセット情報選択部813は、対象QAOMUに対して選択可能なオフセットタイプをループ変数とする第2のループを開始する。当該第2のループは、オフセットタイプ1からオフセットタイプ6までのループである。
【0278】
(ステップS303)
続いて、オフセット情報選択部813は、対象オフセットタイプについて、対象QAOMUにおけるオフセットフィルタ済復号画像P_OFと符号化対象画像#10との二乗誤差を対算出する。
【0279】
(ステップS304)
本ステップは第2のループの終端である。
【0280】
(ステップS305)
本ステップは第1のループの終端である。第1及び第2のループが終了した時点で、各QAOMUに関して、全てのオフセットタイプについての二乗誤差が算出されることになる。
【0281】
(ステップS306)
続いて、オフセット情報選択部813は、対象の処理単位(例えばLCU)をQAOUに分割するQAOU分割構造のうち、RDコストがより小さくなるQAOU分割構造を決定する。
【0282】
本ステップにおけるオフセット情報選択部813の具体的な処理例を
図18(a)~(e)を参照して説明すれば以下の通りである。
【0283】
まず、オフセット情報選択部813は、分割深度を0としたときのRDコストと分割深度を1とした場合のRDコストを計算する(
図18(a)、(b))。
図18(a)では、分割深度1のRDコストが分割深度0のRDコストよりも小さいものとする(
図18(c))。
【0284】
続いて、オフセット情報選択部813は、分割深度を2とした場合のRDコストを計算する(
図18(d))。
【0285】
続いて、オフセット情報選択部813は、分割深度1のQAOMUのRDコストと該分割深度1のQAOMUに含まれる分割深度2のQAOMUのRDコストとを比較し、分割深度2のQAOMUのRDコストの方が小さい場合には、該分割深度1のQAOMUを分割深度2のQAOMUに更新する(
図18(e))。この処理を最大の分割深度に到達するまで繰り返す。これによって、RDコストがより小さくなるQAOU分割構造が決定される。
【0286】
(オフセット属性設定部815)
オフセット属性設定部815は、図示されない画素ビット深度を入力としてオフセットのビット深度を決定する。決定されたオフセットのビット深度により、オフセット値域及びシフト値を設定する。オフセット値域は適応オフセットフィルタ処理部82に供給され、シフト値はオフセットシフト部816に供給される。オフセット値域及びシフト値の設定は上述したオフセット属性設定部613と同一の処理のため、ここでは説明を省略する。
【0287】
(適応オフセットフィルタ処理部82)
適応オフセットフィルタ処理部82は、対象QAOUにおけるデブロック済復号画像P_DBの各画素に対して、オフセット情報選択部813から供給されるオフセットを加算する。適応オフセットフィルタ処理部82は、デブロック済復号画像P_DBに含まれる全てのQAOUに対して処理を行って得られる画像をオフセットフィルタ済復号画像P_OFとして出力する。なお、適応オフセットフィルタ処理部82の構成は、適応オフセットフィルタ処理部62と同一のため、ここでは説明を省略する。ここで図示されない適応オフセットフィルタ処理部82に含まれるオフセット情報格納部に格納される各オフセットは、オフセット属性設定部815によって設定されるオフセット値域に制限される。
【0288】
〔実施の形態2〕
実施の形態1では、符号化データ#1に含まれるsao_offset[sao_curr_depth][ys][xs][i]は、適応オフセットフィルタによるオフセットフィルタ処理において、対象QAOUに含まれる各画素に加算されるオフセットの具体的な値を表すシンタックスであるものとした。
【0289】
一方で、発明者は、オフセットフィルタ処理に用いられるオフセットの値を予測符号化、すなわち、オフセットの値と当該オフセットの値の予測値とを用いて算出されるオフセット残差を符号化することによって、符号化データの符号量を更に削減することができるとの知見を得た。
【0290】
本実施の形態では、予測符号化されたオフセットし、オフセットフィルタ処理を行う動画像復号装置と、オフセットフィルタ処理に用いたオフセットを予測符号化する動画像符号化装置について、
図19~
図21を参照して説明する。なお、実施の形態1において既に説明した部分については説明を省略する。
【0291】
(符号化データ)
本実施の形態に係る符号化データは、実施の形態1に係る符号化データ#1に含まれるsao_offset[sao_curr_depth][ys][xs][i]に代えて、オフセット残差sao_offset_residual[sao_curr_depth][ys][xs][i]を含んでいる。本実施の形態に係る符号化データのその他の構成は、実施の形態1に係る符号化データ#1の構成と同様である。以下では、本実施の形態に係る符号化データを符号化データ#3と表記することもある。
【0292】
(sao_offset_residual)
オフセット残差sao_offset_residual[sao_curr_depth][ys][xs][i]は、本実施の形態に係る適応オフセットフィルタによるオフセットフィルタ処理において対象QAOUに含まれる各画素に加算されるオフセットの値と、該オフセットの値の予測値との重みつき差分値であり、sao_offset_residual[sao_type_idx][class_idx]とも表記する。
【0293】
対象QAOUに含まれる対象画素に加算されるオフセットを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]
によって与えられる。ここで、aは、予測値pred_offsetに乗ぜられる重み係数であり、merge_tblは、sao_type_idxを引数とする関数である。a及びmerge_tblの具体例については後述するためここでは説明を省略する。
【0294】
(動画像復号装置)
本実施の形態に係る動画像復号装置は、実施の形態1に係る動画像復号装置1の備える適応オフセットフィルタ60に代えて、適応オフセットフィルタ60’を備えている。本実施の形態に係る動画像復号装置のその他の構成は、実施の形態1に係る動画像復号装置1の構成と同様である。
【0295】
図19は、本実施の形態に係る適応オフセットフィルタ60’の構成を示すブロック図である。
図19に示すように、適応オフセットフィルタ60’は、適応オフセットフィルタ60の備えるオフセット情報復号部611に代えて、オフセット情報復号部611’を備えている。
【0296】
(オフセット情報復号部611’)
オフセット情報復号部611’は、符号化データ#3に含まれているQAOU情報を参照し、QAOU情報に含まれているオフセット情報OIを復号する。また、オフセット情報OIを復号することによって得られたオフセット残差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]を、オフセット情報格納部621に格納する。ここで、pred_offset[merge_tbl[sao_type_idx]][class_idx]は、Offset[sao_type_idx][class_idx]の予測値である。merge_tbl[sao_type_idx]は、sao_type_idx=1~6に対して、インデックスが与えられるテーブルであり、1つ以上のsao_type_idxを同一のグループとしてみなすことが可能である。
【0297】
(pred_offsetの具体例1)
pred_offset[merge_tbl[sao_type_idx]][class_idx]の第1の具体例について説明する。本例では、予測値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に関連付けられたオフセットを表している。
【0298】
このように、本例では、Offset[sao_type_idx][class_idx]の予測値として、復号済みのオフセットであって、オフセットタイプインデックスsao_type_idx、及び、クラスインデックスclass_idxに関連付けられたオフセットOffset'[sao_type_idx][class_idx]を用いる。
【0299】
(pred_offsetの具体例2)
pred_offset[merge_tbl[sao_type_idx]][class_idx]の第2の具体例について説明する。本例では、予測値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=1ととることができる。W1及びW2の具体的な値は、符号化効率がより高くなるように定めればよい。
【0300】
上式から明らかなように、本例では、pred_offsetを求めるために、pred_offset'及びOffset'を参照し、pred_offset'を求めるためにpred_offset''及びOffset''を参照し、...のように復号済みの予測値及びオフセットが再帰的に参照されるので、pred_offsetには、復号済みの複数のオフセットが寄与することになる。したがって、予測値の過度な変動が抑制される。これにより、例えば、ノイズの影響によって適切でない予測値が算出されるような場合であっても、そのような適切でない予測値の影響を抑制することができるので、符号化効率の向上を図ることが出来る。
【0301】
(pred_offsetの具体例3)
pred_offset[merge_tbl[sao_type_idx]][class_idx]の第3の具体例について説明する。本例では、予測値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)は、値Cを下限値A及び上限値Bでクリップすることを示している。また、clip3の引数のpred_offset[merge_tbl[sao_type_idx]]は、例えば、上記具体例1または2のように定められるものとする。また、閾値thは、例えば、画素値のビット深度bit_depthに依存して以下のように定められる。
【0302】
th = 4 (bit_depth = 8)
th = 8 (bit_depth > 8)
このように、本例では、上限値及び下限値でクリップした予測値を用いることによって、大きすぎる予測値や小さすぎる予測値が生じることがないので、符号化効率の向上を図ることが出来る。また、上限値及び下限値の絶対値は、画素値のビットが大きいときに大きくなるように設定されているので、画素値のビット深度に応じて、適切なクリップ処理を行うことができ、画質の劣化を防止することができる。
【0303】
(merge_tblの具体例1)
図20(a)は、関数merge_tbl[sao_type_idx]の第1の具体例を示す表である。
図20(a)に示すように、本例に係るmerge_tbl[sao_type_idx]は、sao_type_idx=0のときには値をとらず、sao_type_idx=1~6のとき、それぞれ、0~5の値をとる。したがって、本例に係るmerge_tbl[sao_type_idx]は、
merge_tbl[sao_type_idx] = sao_type_idx - 1
と表現することもできる。
【0304】
本例に係るmerge_tbl[sao_type_idx]を用いることによって、オフセット情報復号部611’は、予測値pred_offsetを、各々のsao_type_idx及び各々のclass_idxに対して個別に定めるので、オフセット残差sao_offset_residualの符号量を削減することができる。
【0305】
(merge_tblの具体例2)
図20(b)は、関数merge_tbl[sao_type_idx]の第2の具体例を示す表である。
図20(b)に示すように、本例に係るmerge_tbl[sao_type_idx]は、エッジオフセット(sao_type_idx=1~4)のとき、0の値をとり、バンドオフセット(sao_type_idx=5~6)のとき、1~2の値をとる。
【0306】
例えば、先のオフセットの算出の際にsao_type_idx=1(merge_tbl[sao_type_idx=1]=0)及びclass_idx=1が指定され、次のオフセットの算出の際にsao_type_idx=2(merge_tbl[sao_type_idx=2]=0)及びclass_idx=1が指定されたとすると、当該次のオフセットを算出する際に用いられる予測値は、当該先のオフセットの算出の際に用いられた予測値と同じものとなる。
【0307】
本例に係るmerge_tbl[sao_type_idx]を用いることによって、オフセット情報復号部611’は、エッジオフセットが指定された場合、及びバンドオフセットが指定された場合の各々について、以下の処理を行うことになる。
【0308】
・エッジオフセットが指定された場合
復号対象のオフセットに関連付けられたクラスと同じクラスの復号済みのオフセットから当該復号対象のオフセットの予測値を算出する。ここで、復号対象のオフセットと予測値とはクラスが同じであれば、オフセットタイプは異なっていてもよい。したがって、あるオフセットタイプのオフセットを算出するために設定された予測値を、当該あるオフセットとは異なるオフセットタイプのオフセットを算出するために用いることができるので、予測値を設定するための処理が軽減される。
【0309】
・バンドオフセットが指定された場合
復号対象のオフセットに関連付けられたオフセットタイプ及びクラスと同じオフセットタイプ及びクラスのオフセットから当該復号対象のオフセットの予測値を算出する。
【0310】
本例に係るmerge_tbl[sao_type_idx]を用いれば、処理量を削減しつつ適切な予測値を算出することができる。
【0311】
(係数aの具体例)
予測値pred_offsetに乗ぜられる重み係数aは、オフセットタイプによらずに1を用いてもよいし、オフセットタイプに依存して異なる値を用いてもよい。
【0312】
例えば、
a=1(エッジオフセットのとき)
a=0.5(バンドオフセットのとき)
としてもよい。より一般には、エッジオフセットが指定された場合の係数aを、a(edge)と表し、バンドオフセットが指定された場合の係数aを、a(band)と表すことにすると、
a(edge)>a(band)
を満たすものを用いればよい。
【0313】
発明者は、エッジオフセットが指定される場合の、復号済みのオフセットと復号対象のオフセットとの間の相関は、バンドオフセットが指定される場合の、復号済みのオフセットと復号対象のオフセットとの間の相関よりも大きいことを見出した。上記の具体例では、復号済みのオフセットと復号対象のオフセットとの相関の影響を適切に取り込むことができるので、オフセット残差の符号量が削減される。
【0314】
(動画像符号化装置)
本実施の形態に係る動画像符号化装置は、実施の形態1に係る動画像符号化装置2の備える適応オフセットフィルタ80に代えて、適応オフセットフィルタ80’を備えている。本実施の形態に係る動画像符号化装置のその他の構成は、実施の形態1に係る動画像符号化装置2の構成と同様である。
【0315】
図21は、本実施の形態に係る適応オフセットフィルタ80’の構成を示すブロック図である。
図21に示すように、適応オフセットフィルタ80’は、適応オフセットフィルタ80の備える各部に加えて、オフセット残差導出部814を備えている。
【0316】
(オフセット残差導出部814)
オフセット残差導出部814は、オフセット情報選択部813から供給されるオフセットと、当該オフセットの予測値との差分をとることによって、オフセット残差を算出する。当該オフセット残差は、QAOU情報の一部として、可変長符号符号化部22によって符号化される。
【0317】
オフセット残差導出部814により設定される予測値は、本実施の形態に係る動画像復号装置の備えるオフセット情報復号部611’により設定される予測値と同様であるので、ここでは説明を省略する。
【0318】
(付記事項1)
本発明は以下のように記載することもできる。
【0319】
本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域におけるオフセット属性を設定するオフセット属性設定手段と、上記設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを復号するオフセット復号手段と、上記入力画像の各画素値に上記オフセットを加算するフィルタ手段とを備えていることを特徴としている。
【0320】
上記のように構成された画像フィルタ装置によれば、上記オフセット属性設定手段により、符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域におけるオフセット属性を設定し、設定されたオフセット属性に含まれるオフセット値域に応じたビット幅を有するオフセットを上記オフセット復号手段により復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【0321】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【0322】
なお、上記オフセットタイプ指定情報は、上記入力画像毎に定められているものであってもよいし、上記単位領域毎に定められているであってもよい。また、上記入力画像の所定のセット毎に定められているものであってもよいし、上記単位領域の所定のセット毎に定められているものであってもよい。
【0323】
また、上記オフセットタイプ指定情報は、各単位領域における上記入力画像の画素値のビット深度を含み、上記オフセット復号手段は、上記画素値のビット深度に応じたビット幅を有するオフセットを復号することが好ましい。
【0324】
上記の構成によれば、上記オフセット復号手段は、上記画素値のビット深度に応じたビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【0325】
なお、上記オフセットタイプ指定情報は、各単位領域における上記入力画像の画素値のビット深度を含み、上記オフセット復号手段は、上記ビット深度に応じた値域を表現可能なビット幅を有するオフセットを復号する構成としてもよい。
【0326】
上記の構成によれば、上記オフセット復号手段は、各単位領域における上記入力画像の画素値のビット深度に応じた値域を表現可能なビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを効果的に削減することができる。
【0327】
なお、上記ビット深度に応じた値域を表現可能なビット幅とは、値域の範囲に含まれる値を2進数で表現した時のビット幅を指し、例えば値域が-23~23-1のときは表現可能なビット幅は4ビットである。
【0328】
また、上記復号されたオフセットは量子化された値であり、上記フィルタ手段は、上記オフセット属性に含まれるパラメータを用いて上記オフセットを逆量子化した値を上記各画素値に加算することが好ましい。
【0329】
上記の構成によれば、上記復号されたオフセットは量子化された値であり、上記フィルタ手段は、上記オフセット属性に含まれるパラメータを用いて上記オフセットを逆量子化した値を上記各画素値に加算するので、上記オフセット属性に含まれるパラメータに応じたオフセットが各画像値に加算される。
【0330】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、符号化効率を向上させることができる。
【0331】
なお、上記オフセットタイプ指定情報は、画素値のシフト値を含み、上記フィルタ手段は、上記オフセットに替えて、該シフト値を用いて上記オフセットを逆量子化した値を加算する構成としてもよい。
【0332】
上記の構成によれば、上記オフセットタイプ指定情報は、画素値のシフト値を含み、上記フィルタ手段は、上記オフセットに替えて、該シフト値を用いて上記オフセットを逆量子化した値を加算するので、画素値のシフト値に応じたオフセットを得ることができる。したがって、オフセットを格納しておくためのメモリサイズを削減しつつ、符号化効率を向上させることができる。
【0333】
なお、画素値のシフト値とは、画素ビット深度とオフセットのビット深度の差分値のことを指し、該シフト値を用いて上記オフセットを逆量子化するとは、上記オフセットを該シフト値だけ左側へビットシフトを行い、オフセットのビット深度から画素ビット深度へ変換することを指す。
【0334】
また、上記オフセットタイプ指定情報は、上記入力画像に対して定まるものであることが好ましい。
【0335】
上記の構成によれば、オフセットタイプ指定情報は、上記入力画像に対して定まるものであるため、上記画像フィルタ装置は、上記入力画像に対して、適切なオフセット処理を行うことができる。
【0336】
また、本発明に係るオフセット復号装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを復号するオフセット復号装置であって、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えていることを特徴としている。
【0337】
上記のように構成されたオフセット復号装置によれば、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセットから導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えているので、各オフセットをそのまま符号化する場合に比べて、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【0338】
また、上記入力画像は、複数の単位領域から構成されており、上記オフセット残差復号手段は、各オフセット残差を、単位領域毎に定まるオフセットタイプ及び画素毎に定まるオフセットクラスに関連付けて復号し、上記予測値導出手段は、各オフセットの予測値を、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出する、ことが好ましい。
【0339】
上記の構成によれば、各オフセットの予測値を、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出するので、予測精度が向上する。したがって、上記の構成によれば、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【0340】
また、上記入力画像は、複数の単位領域から構成されており、上記オフセット残差復号手段は、各オフセット残差を、単位領域毎に定まるオフセットタイプ及び画素毎に定まるオフセットクラスに関連付けて復号し、上記予測値導出手段は、各オフセットの予測値を、該オフセットに関連付けられたオフセットタイプが第1のオフセットタイプ群に属している場合に、該オフセットと同一の第1のオフセットタイプ群及び同一のオフセットクラスに関連付けられた復号済みのオフセットから導出し、該オフセットに関連付けられたオフセットタイプが第2のオフセットタイプ群に属している場合に、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出する、ことが好ましい。
【0341】
上記の構成によれば、各オフセットの予測値を、該オフセットに関連付けられたオフセットタイプが第1のオフセットタイプ群に属している場合に、該オフセットと同一のオフセットタイプに関連付けられた復号済みのオフセットから導出し、該オフセットに関連付けられたオフセットタイプが第2のオフセットタイプ群に属している場合に、該オフセットと同一のオフセットタイプ及びオフセットクラスに関連付けられた復号済みのオフセットから導出するので、処理量を削減しつつ、予測精度を向上させることができる。したがって、上記の構成によれば、処理量を削減しつつ、符号量の少ない符号化データから、オフセットを適切に復号することができる。
【0342】
なお、上記第1のオフセットタイプとは、例えば、当該第1のオフセットタイプに関連付けられた単位領域における各画素が、例えば、該画素の近傍にエッジの態様に応じて、複数のクラスの何れかに分類されるものを指し、上記第2のオフセットタイプとは、当該第2のオフセットタイプに関連付けられた単位領域における各画素が、例えば、該画素の画素値に応じて、複数のクラスの何れかに分類されるものを指す。
【0343】
また、上記オフセット算出手段は、各オフセットを、上記予測値導出手段によって導出された予測値、及び上記オフセット残差復号手段によって復号されたオフセット残差の線形関数として算出するものであり、上記予測値に乗ぜられる係数は、上記オフセットに関連付けられたオフセットタイプが第1のオフセットタイプ群に属している場合と、上記オフセットに関連付けられたオフセットタイプが第2のオフセットタイプ群に属している場合とで異なっている、ことが好ましい。
【0344】
上記の構成によれば、上記予測値に乗ぜられる係数は、上記オフセットに関連付けられたオフセットタイプが第1のオフセットタイプ群に属している場合と、上記オフセットに関連付けられたオフセットタイプが第2のオフセットタイプ群に属している場合とで異なっているので、オフセットタイプに応じて、より適切な係数を用いて上記オフセットを算出することができる。これにより符号化効率の向上を図ることができる。
【0345】
また、上記予測値導出手段は、各オフセットの予測値を、復号済みのオフセットと該復号済みのオフセットの予測値との加重平均をとることによって導出する、ことが好ましい。
【0346】
上記の構成によれば、各オフセットの予測値を、復号済みのオフセットと該復号済みのオフセットの予測値との加重平均をとることによって導出するので、各オフセットの予測値には、復号済みの複数のオフセットが寄与することになる。したがって、予測値の過度な変動が抑制される。これにより、例えば、ノイズの影響によって適切でない予測値が算出された場合であっても、そのような適切でない予測値の影響を抑制することができるので、符号化効率の向上を図ることが出来る。
【0347】
また、上記予測値導出手段は、導出した各予測値を、入力画像における各画素値のビット深度に応じた上限値及び下限値でクリップするクリップ手段を備えている、ことが好ましい。
【0348】
上記の構成によれば、導出した各予測値を、入力画像における各画素値のビット深度に応じた上限値及び下限値でクリップするので、大きすぎる予測値や小さすぎる予測値が生じることがなく、符号化効率の向上を図ることが出来る。
【0349】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって参照される画素値、または、上記算出手段によって算出された差分値を所定のシフト値だけ右ビットシフトするビットシフト手段と、上記ビットシフト手段によって右ビットシフトされた差分値と0との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【0350】
上記のように構成された画像フィルタ装置によれば、右ビットシフトされた差分値と0との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【0351】
また、上記所定のシフト値は、上記対象画素の画素値のビット深度と正の相関を有している、ことが好ましい。
【0352】
上記の構成によれば、上記所定のシフト値は、上記対象画素の画素値のビット深度と正の相関を有しているので、符号化効率の向上をより効果的に図ることができる。
【0353】
また、本発明に係る画像フィルタ装置は、入力画像に作用する画像フィルタ装置であって、入力画像における対象画素の画素値と該対象画素の周辺の画素の画素値との差分値を算出する算出手段と、上記算出手段によって算出された差分値と、予め定められた第1及び第2の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えていることを特徴としている。
【0354】
上記のように構成された画像フィルタ装置は、上記算出手段によって算出された差分値と、予め定められた第1及び第2の閾値との大小関係に応じて、上記対象画素を複数のオフセットクラスの何れかに分類し、上記対象画素の画素値に対して、上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するので、クラス分類処理が、ノイズの影響を受けにくくなり符号化効率が向上する。
【0355】
また、上記第1及び第2の閾値の絶対値は、上記対象画素の画素値のビット深度と正の相関を有している、ことが好ましい。
【0356】
上記の構成によれば、上記第1及び第2の閾値の絶対値は、上記対象画素の画素値のビット深度と正の相関を有しているので、符号化効率の向上をより効果的に図ることができる。
【0357】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像に作用する画像フィルタ装置であって、第1及び第2のオフセットタイプのうち、入力画像における対象画素を含む対象単位領域が属するオフセットタイプを決定する決定手段と、上記対象単位領域の属するオフセットタイプ、及び上記対象画素の画素値に応じて、上記対象画素を、オフセットを加算しないオフセットクラス、及びオフセットを加算する複数のオフセットクラスの何れかに分類する分類手段と、上記対象画素の画素値に対して、上記対象単位領域の属するオフセットタイプ及び上記分類手段によって分類されたオフセットクラスに関連付けられたオフセットを加算するオフセット手段と、を備えており、上記分類手段は、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第1及び上記第2のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類する、ことを特徴としている。
【0358】
上記のように構成された画像フィルタ装置によれば、上記対象画素の画素値が所定の範囲内であるとき、上記対象画素を含む単位領域が属するオフセットタイプが上記第1及び上記第2のオフセットタイプの何れの場合であっても、上記対象画素を、オフセットを加算するオフセットクラスに分類するので、ブロックノイズを効果的に除去することができる。したがって、上記の構成によれば、符号化効率の向上を図ることができる。
【0359】
また、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定する決定手段と、上記オフセットタイプに応じて、異なるビット幅を有するオフセットを決定すると共に、該オフセットを符号化するオフセット符号化手段と、上記入力画像の各画素値に上記決定されたオフセットを加算するフィルタ手段とを備えていることを特徴としている。
【0360】
上記のように構成された画像フィルタ装置によれば、複数のオフセットタイプのうち、処理対象の単位領域が属するオフセットタイプを決定し、決定されたオフセットタイプに応じて、異なるビット幅を有するオフセットを決定し、決定されたオフセットを、上記入力画像の各画素に加算する。また、決定されたオフセットを符号化する。
【0361】
したがって、上記の構成によれば、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。また、上記の構成によれば、符号化データの符号量が削減されるので、符号化効率が向上する。
【0362】
また、本発明に係るオフセット符号化装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを符号化するオフセット符号化装置であって、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段と、を備えていることを特徴としている。
【0363】
上記のように構成されたオフセット符号化装置によれば、各オフセットの予測値を、符号化済みのオフセットから導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段とを備えているので、符号化データの符号量を削減することができる。
【0364】
また、本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、各単位領域が属するオフセットタイプを指定するオフセットタイプ指定情報と、該オフセットタイプに応じて異なるビット幅を有するオフセットとを含んでおり、上記画像フィルタは、上記符号化データに含まれるオフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号することを特徴としている。
【0365】
上記のように構成された符号化データは、オフセットタイプに応じて異なるビット幅を有するオフセットを含んでいるので、符号化データの符号量が削減される。また、上記符号化データを復号する画像フィルタは、上記オフセットタイプ指定情報を参照し、処理対象の単位領域が属するオフセットタイプを決定すると共に、決定したオフセットタイプに応じて異なるビット幅を有するオフセットを復号するので、オフセットを格納しておくためのメモリサイズを削減しつつ、適切なオフセットフィルタ処理を行うことができる。
【0366】
なお、上記オフセットタイプ指定情報は、上記入力画像毎に定められているものであってもよいし、上記単位領域毎に定められているものであってもよい。また、上記入力画像の所定のセット毎に定められているものであってもよいし、上記単位領域の所定のセット毎に定められているものであってもよい。
【0367】
〔実施の形態3〕
まず、本実施の形態におけるオフセット情報OIについて、
図23を参照して説明する。
図23(a)は、オフセット情報OI(
図23(a)において“sao_offset_param()”と表記)のシンタクスを示す図である。
【0368】
図23(a)に示すように、オフセット情報OIには、パラメータ“sao_type_idx[sao_curr_depth][ys][xs]”が含まれている。また、パラメータ“sao_type_idx[sao_curr_depth][ys][xs]”が「0」でない場合、オフセット情報OIには、パラメータ“sao_offset[sao_curr_depth][ys][xs][i]”が含まれている。
【0369】
(sao_curr_depth、ys、xs)
“sao_type_idx”および“sao_offset”の引数である“sao_curr_depth”は、QAOUの分割深度を表すパラメータであり、“ys”および“xs”は、それぞれ、QAOU(または後述するQAOMU)のy方向の位置およびx方向の位置を表すためのパラメータである。
【0370】
“sao_curr_depth”の値に応じたQAOUの分割の態様については、
図4を参照して上記で説明したとおりである。
【0371】
図23(b)は、QAOU情報(
図23(b)において“sao_split_param()”と表記)のシンタクスを示す図である。
図23(b)のシンタクスで示すように、分割深度“sao_curr_depth”が所定の“saoMaxDepth”で設定される最大値よりも小さければ、パラメータ“sao_split_flag”によって、QAOUがさらに分割されるかどうかが選択される。分割される場合には、次の階層深度の“sao_split_param()”が再帰的に呼び出される。分割深度が最大値に達した(“sao_curr_depth”が“saoMaxDepth”より小さくない)場合には、“sao_split_flag[sao_curr_depth][ys][xs]”には「0」が設定され、それ以上の分割は行われない。
【0372】
図44には、オフセット情報およびQAOU情報のシンタクスの別の例を示す。
【0373】
図44(a)は、オフセット情報のシンタクスである。
図23(a)と同様の構成となっているが、“sao_offset_param()”の引数および、“sao_split_flag”、“sao_type_idx”、“sao_offset”の配列の添字に、色成分を意味する値である“component”が追加されている。これにより、輝度および色差などの色成分毎に異なるQAOU分割を行い、かつ、異なるオフセットを適用することができる。
【0374】
図44(b)は、QAOU情報のシンタクスである。
図44(a)と同じく、
図23(b)に引数として色成分“component”を追加したシンタクスである。
【0375】
図44(c)は、
図44(a)および
図44(b)のシンタクスを呼び出す、適応オフセットフィルタ全体のシンタクスである。パラメータ“sao_flag”は適応オフセットフィルタを適用するか否か選択するフラグであり、当該フラグが真である場合のみ、後続の適応オフセットフィルタに関するパラメータが用いられる。当該フラグが真である場合、各色成分に対して、シンタクス“sao_split_param()”および“sao_offset_param()”が最上位階層を指定して呼び出される。最上位階層であるため、各シンタクスに与えられる引数は、sao_curr_depth=0、ys=0、xs=0 である。また、“component”の値は、輝度(Y)の場合は0、色差(Cb)の場合は1、色差(Cr)の場合は2として、各色成分を区別している。なお、componentの値は、処理対象の色成分が区別できれば他の値でもよい。
【0376】
なお、色差(Cb)および色差(Cr)については、各々に対応するフラグ“sao_flag_cb”“sao_flag_cr”を用いて、適応オフセットフィルタを適用するか否かを選択し、適用しない場合には当該色成分に対応するQAOU情報およびオフセット情報を格納しない。
【0377】
上記の
図44のシンタクスでは引数“component”が追加されているため、上記
図23を用いた説明において、引数[sao_curr_depth][ys][xs]を[sao_curr_depth][ys][xs][component]に置き換えて処理する。以降の説明でも同様である。
【0378】
(動画像復号装置1’)
次に、本実施の形態に係る動画像復号装置1’について、
図22および
図24~
図29を参照して説明する。なお、上記の実施の形態において示した部材と同一の機能を有する部材には、同一の符号を付し、その説明を省略する。
【0379】
動画像復号装置1’は、動画像復号装置1と同様に、その一部に、H.264/MPEG-4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。また、動画像復号装置1’は動画像復号装置1における適応オフセットフィルタ60の代わりに適応オフセットフィルタ60’が設けられている点が異なり、他の構成は同様である。
【0380】
(適応オフセットフィルタ60’)
次に、適応オフセットフィルタ60’の詳細について、
図22を参照して説明する。
図22は、適応オフセットフィルタ60’の構成を示すブロック図である。
図22に示すように、適応オフセットフィルタ60’は、適応オフセットフィルタ情報復号部61’および適応オフセットフィルタ処理部62’を含む構成である。
【0381】
また、
図22に示すように、適応オフセットフィルタ情報復号部61’は、オフセット情報復号部611、およびQAOU構造復号部612を含む構成である。
【0382】
オフセット情報復号部611は、符号化データ#1に含まれているQAOU情報を参照し、QAOU情報に含まれているオフセット情報OIを復号する。また、オフセット情報OIを復号することによって得られた“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)に関連付けて、オフセット情報格納部621に供給する。
【0383】
より詳細には、オフセット情報復号部611は、符号化データ#1からコードを復号し、復号したコードを“sao_type_idx”の値に変換して、引数に関連付けてオフセット情報格納部621に供給する。ここで、オフセット情報復号部611は、コードの復号方法、およびコードから“sao_type_idx”の値への変換を、処理対象のQAOUの階層の深度によって変更している。このQAOUの階層の深度などの条件をパラメータ条件と呼ぶ。一般のパラメータ条件に応じたオフセット情報の復号については、
図41、
図42を用いて後述する。
【0384】
コードの復号方法は、処理対象のQAOUの階層の深度が閾値よりも小さい場合と処理対象のQAOUの階層の深度が閾値以上の場合とで、異なる最大値を用いて行うものであってもよいし、処理対象のQAOUの階層の深度が閾値以上の場合のみ最大値を用いるものであってもよい。また、処理対象のQAOUの階層の深度が閾値よりも小さい場合と処理対象のQAOUの階層の深度が閾値以上の場合とで、異なるバイナリゼーションを用いて行うものであってもよい。さらに、処理対象のQAOUの階層の深度が閾値よりも小さい場合と処理対象のQAOUの階層の深度が閾値以上の場合とで、異なるコンテキストを用いるものであってもよい。
【0385】
例えば、処理対象のQAOUの階層の深度が閾値よりも小さい場合には、可変長符号化(ue(v))でコードを復号し、処理対象のQAOUの階層の深度が閾値以上の場合には、オフセットタイプの数に応じたtruncated符号化(te(v))で、コードを復号してもよい。また、オフセットタイプ数が、2のべき乗であれば、固定長符号化で、コードを復号してもよい。オフセットタイプ数が4つであれば、2bitで表現可能であるので、2bitで固定長符号化とすることができる。
【0386】
また、オフセット情報復号部611は、復号したコードから“sao_type_idx”の値への変換は、
図25に示すような変換テーブル801および変換テーブル802を用いて行う。
図25(a)の変換テーブル801では、2通りの変換パターンを示している。この2通りの変換パターンは、処理対象のQAOUの階層の深度によって、使い分けられる。すなわち、オフセット情報復号部611は、処理対象のQAOUの階層の深度が、閾値よりも小さい場合は、変換テーブル801Aを用い、処理対象のQAOUの階層の深度が、閾値以上の場合は、変換テーブル801Bを用いる。
【0387】
図25(a)の変換テーブル801Aでは、コード「1」に対しオフセットタイプ「EO_0」(“sao_type_idx”=1)が対応付けられており、コード「2」に対しオフセットタイプ「EO_1」(“sao_type_idx”=2)が対応付けられており、コード「3」に対しオフセットタイプ「EO_2」(“sao_type_idx”=3)が対応付けられている。以下、コード4~6についても同様である。
【0388】
また、
図25(a)の変換テーブル801Bでは、コード「1」に対しオフセットタイプ「EO_0」(“sao_type_idx”=1)が対応付けられており、コード「2」に対しオフセットタイプ「BO_0」(“sao_type_idx”=5)が対応付けられており、コード「3」に対しオフセットタイプ「BO_1」(“sao_type_idx”=6)が対応付けられている。そして、変換テーブル801Bでは、コード4~6は用いられていない。
【0389】
このように、変換テーブル801Aでは、適応オフセット(SAO)に用いるオフセットタイプの全てが含まれているのに対し、変換テーブル801Bでは、適応オフセット(SAO)に用いるオフセットタイプのうち、一部のオフセットタイプしか含まれていない。よって、処理対象のQAOUの階層の深度が、閾値以上の場合には、一部のオフセットタイプしか用いることができないことになる。
【0390】
これは、深い階層では、QAOUの面積が小さくなるため、QAOU内の画素値の特性が一様に近くなり、多くのタイプを用いなくとも、適切なオフセットを導出できるためである。また、これにより、用いるオフセットタイプ数を減らすことができるので、必要なメモリ量を減らすことができるとともに、オフセットタイプを示す符号化データのデータ長等を短くすることにより、符号化効率を向上させることができる。
【0391】
なお、変換テーブル801Bにおけるコードとオフセットタイプとの対応付けが、変換テーブル801Aにおけるコードとオフセットタイプとの対応付けの順序と同じなのであれば、変換テーブル801Aのみを用いる構成であってもよい。
【0392】
図25(b)の変換テーブル802は、変換テーブル801Bに代えて用いることができる、変換テーブル801Bと同様な変換テーブルの種々の例を示している。いずれの変換テーブルも、変換テーブル801B同様にタイプの種類が制限されている。また、空欄は該当するコードが用いられないことを示す。
【0393】
変換テーブル802Aは、エッジオフセットのみを用いる例でありバンドオフセットを含まない。エッジオフセットのオフセット数は通常4個であり、バンドオフセットのオフセット数は通常16個である。このように、エッジオフセットのオフセット数はバンドオフセットのオフセット数と比べ少ない。このため、バンドオフセットの使用を制限することにより、オフセットの保持に用いるメモリ量を削減することができる。特に、階層が深い場合、オフセットが増加するためメモリ量が大きくなる。また、階層が深い場合には、バンドオフセットの選択率が低下する。そのため、階層をパラメータ条件として、階層が深い場合にエッジオフセットのみを備える変換テーブル802Aを用い、階層が浅い場合には、エッジオフセットとバンドオフセットを備える変換テーブル(例えば801A)を用いることによって、符号化効率を低下させることなくメモリ量の削減が可能となる。また、符号化装置において不要な選択肢のコスト計算を省くことができるため処理量を低減することができる。
【0394】
変換テーブル802Bは、バンドオフセットのみを用いる例でありエッジオフセットを含まない。バンドオフセットはエッジオフセットに比べ、演算量が小さいこと、対象画素の周囲の画素を用いないため参照画素を保持するためのラインメモリなどが不要である、という特徴を有する。そのため、パラメータ条件に応じて、変換テーブル802Bを用いることで、上記による効果を得ることができる。変換テーブル802Cは、1つのバンドオフセット「BO_0」(“sao_type_idx”=5)のみを用いる例である。
【0395】
また、変換テーブル802Dは、変換テーブル801Bと同様に1つのエッジオフセットと2つのバンドオフセットを用いる例である。具体的には、オフセットタイプ「EO_0」(“sao_type_idx”=1)および「BO_0」(“sao_type_idx”=5)、「BO_1」(“sao_type_idx”=6)を用い、バンドオフセットタイプに優先的に短いコード(小さいコード番号)に対応付けた例である。階層が浅い場合は、階層が深い場合に比べバンドオフセットの選択率が高くなるため、階層をパラメータ条件として、階層が浅い場合に変換テーブル802Dを用い、使用頻度の高いタイプに短いコードに対応付けることで、符号化効率を向上させることができる。
【0396】
なお、
図25に例示した以外にも、パラメータ条件に応じて、コードとオフセットタイプとの対応付けを変更することが可能である。変換テーブル801Aのいずれのエッジオフセットともバンドオフセットとも異なるオフセットタイプを、階層深度などの条件に応じて単独あるいは他のオフセットタイプとともに使用できる。その具体例としては、後述の別の実施形態において説明する、EOとBOの特徴を併せ持つオフセットタイプや、従来のエッジオフセット「EO_0」と異なる水平サンプル位置でエッジを検出するエッジオフセットや、従来のバンドオフセット「BO_0」および「BO_1」とは異なるバンド割り当てによるバンドオフセットが挙げられる。
【0397】
QAOU構造復号部612は、QAOU情報に含まれている“sao_split_flag[sao_curr_depth][ys][xs]”を復号することによって、QAOUの分割構造を決定し、決定されたQAOUの分割構造を表すQAOU構造情報を、オフセット情報格納部621に供給する。
【0398】
また、次に示すようなオフセット属性設定部613を備えていてもよい。オフセット属性設定部613は、オフセットのシフト値を決定する。符号化データのオフセットは、画素ビット深度(PIC_DEPTHとも呼称する)よりも精度の低いオフセットのビット深度(SAO_DEPTHとも呼称する)で符号化される。すなわち、符号化データ中のオフセットは、量子化されている。シフト値とは、逆量子化を行うために必要なビットシフト量を示す。また、オフセット属性設定部613は、オフセットのビット深度とオフセットの値域とを決定する。ここでは、オフセットのビット深度は、オフセット属性設定部613に入力される図示されない画素ビット深度(PIC_DEPTHとも呼称する)から決定する。画素ビット深度とは、適応オフセットフィルタ60’の入力画像を構成する画素値の値域をビット幅で示すものであり、画素ビット深度がNビットのとき、画素値は0から2N-1の範囲を取る。
【0399】
SAOのビット深度およびシフト値は、以下の式を用いるが、後述するように、パラメータ条件に応じて他の値を用いても良い。
【0400】
SAO_DEPTH = MIN(PIC_DEPTH、10)
シフト値 = PIC_DEPTH―MIN(PIC_DEPTH、10)
また、一つの構成として、オフセットの値域(ここでは、最大値)を以下の式で決定する。
【0401】
オフセットの値域=2SAO_DEPTH-K-1
但し、Kは所定の定数とする(後述)。
【0402】
また、
図22に示すように、適応オフセットフィルタ処理部62’は、オフセット情報格納部621、QAOU制御部622、オフセットタイプ導出部623、クラス分類部624、オフセット導出部625、およびオフセット加算部626を含む構成である。
【0403】
オフセット情報格納部621は、QAOU構造情報、“sao_type_idx[sao_curr_depth][ys][xs]”、および“sao_offset[sao_curr_depth][ys][xs][i]”に基づいて、各QAOUについて指定されたオフセットタイプ、および該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値を管理および格納するものであり、マップメモリおよびリストメモリを備えた構成である。
【0404】
マップメモリ、およびリストメモリについて、
図24を参照して説明する。
図24は、マップメモリおよびリストメモリに格納される例を示す図であり、
図24(a)はマップメモリに格納されるQAOUインデックスの一例を説明するための図であり、
図24(b)はリストメモリに格納される情報の一例を説明するための図である。
【0405】
マップメモリ601には、分割深度に応じて定まる各オフセット最小単位(QAOMU:Quad Adaptive Offset Minimum Unitとも呼称する)に割り付けられた後述するQAOUインデックスが格納されている。
図24(a)では、対象の処理単位(例えばLCU)を構成する分割深度3の各QAOMUと各QAOMUに割り付けられたQAOUインデックスとを示している。なお、
図24(a)では、QAOUの分割深度を考慮せずに、簡易的にインデックス0~9をQAOUに割り付けている。また、
図24(a)に示す例においては、QAOUインデックス=Iによって指定されるQAOUをQAOUIと表記している。また、
図24(a)における細線はQAOMUの境界を示しており、太線はQAOUの境界を示している。
【0406】
図24(a)に示すように、QAOU0は、4つのQAOMUから構成されており、これら4つのQAOMUには、QAOUインデックスとして0が割り付けられている。一方、QAOU3は、1つのQAOMUから構成されており、このQAOMUには、QAOUインデックスとして3が割り付けられている。このように、マップメモリには、各QAOMUに割り付けられたQAOUインデックスが格納されている。
【0407】
また、リストメモリ602には、各QAOUインデックスに対し、該QAOUインデックスに関連付けられたオフセットタイプ、および該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値が互いに関連付けられて格納されている。
【0408】
具体的に、
図24(b)を参照して説明する。
図24(b)では、QAOUインデックス0~9の各々に関連付けられたオフセットタイプおよび各オフセットタイプにおいて選択可能な各クラスに関するオフセットを示している。
図24(b)における「xxx」は、互いに異なり得る具体的な数値を表している。
【0409】
また、
図24(b)における「BO_1」は、“sao_type_idx”=5によって指定されるオフセットタイプを表している。また、「EO_1」は、“sao_type_idx”=1によって指定されるオフセットタイプを表している。このように、“sao_type_idx”=1、2、3、4によって指定されるオフセットタイプであるエッジオフセットをそれぞれ「EO_1、2、3、4」とも表記し、“sao_type_idx”=5、6によって指定されるオフセットタイプであるバンドオフセットをそれぞれ「BO_1、2」とも表記する。
【0410】
図24(b)に示すように、オフセットタイプがバンドオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット1~オフセット16の合計16個である。ここで、オフセット1~オフセット16は、“sao_type_idx[sao_curr_depth][ys][xs]”の値が「5」または「6」である場合の、“sao_offset[sao_curr_depth][ys][xs][1]”~“sao_offset[sao_curr_depth][ys][xs][16]”によってそれぞれ指定される値のことを指す。
【0411】
一方、オフセットタイプがエッジオフセットである場合、該オフセットタイプに関してリストメモリに格納されるオフセットは、オフセット1~4の合計4個である。ここで、オフセット1~4は、“sao_type_idx[sao_curr_depth][ys][xs]”の値が「1、2、3、4」の何れかである場合の、“sao_offset[sao_curr_depth][ys][xs][1]”~“sao_offset[sao_curr_depth][ys][xs][4]”によってそれぞれ指定される値のことを指す。なお、エッジオフセットの場合、オフセット5~16にはなにも格納されない。
【0412】
なお、各QAOMUには、QAOMU番号が付されており、このQAOMU番号によって各QAOMUは互いに識別可能である。以下では、QAOMU番号がNQであるQAOMUをQAOMUNQとも表記する。
【0413】
また、本実施形態では、処理対象のQAOUの階層によって、オフセットの精度を異ならせるものであってもよい。オフセットの精度に応じて、逆量子化に用いるシフト値も異なる。この場合も、オフセットの精度及びシフト値は、画素ビット深度PIC_DEPTHを用いて導出する。
【0414】
オフセットの精度の例としては、例えば、QAOUの階層の深度が閾値より小さい場合のオフセットの精度、シフト値を、
SAO_DEPTH = MIN(PIC_DEPTH、10)
シフト値 = PIC_DEPTH―MIN(PIC_DEPTH、10)
として、QAOUの階層の深度が閾値以上である場合のオフセットの精度を、
SAO_DEPTH = MIN(PIC_DEPTH、8)
シフト値 = PIC_DEPTH―MIN(PIC_DEPTH、8)
のようにすれば、オフセットの精度を異なるものとすることができる。
【0415】
上述したように、オフセットの精度(オフセットのビット深度、SAO_DEPTH)と、入力画像を構成する画素値の値域をビット幅で表現した画素ビット深度(PIC_DEPTH)とは、量子化誤差の観点で互いに密接な関係がある。適応オフセットフィルタ60の出力画像のビット深度は、画素ビット深度PIC_DEPTHであり、SAO_DEPTHは画素に加えるオフセットのビット深度であるので、画素ビット深度を超える精度のオフセットを用いても出力過程で捨てられてしまい、SAO_DEPTHをPIC_DEPTHを超えて設定しても意味がない。逆に、SAO_DEPTHがPIC_DEPTHよりも小さい場合には、入力画像をフィルタにより補正可能な精度(PIC_DEPTH)よりも粗い補正しか行うことができないため、フィルタ効果は減少する。
【0416】
したがって、量子化されたオフセットを一定のビット幅で表現できるオフセット値域に制限することで、オフセット情報格納部621で量子化されたオフセットを格納するためのビット幅を制限することができる。これにより、制限しない場合と比較して、メモリサイズ削減の効果を得ることができる。一方で、過度にオフセット値域を狭くすることは、オフセットが復号画像の歪みを補正する効果を小さくしてしまい、オフセット加算処理によっても復号画像の歪みを除去することができず、符号化効率が低下してしまう。
【0417】
そこで、符号化効率が低下しないようにオフセット値域を最適な範囲を設定することにより、メモリの使用量を削減しつつ、フィルタの効果を維持することできる。
【0418】
そして、オフセット値域の値を表す最大のビット長をCLIP_BITとし、CLIP_BIT=SAO_DEPTH-Kの計算により、オフセット値域を-2CLIP_BIT-1~2CLIP_BIT-1-1と定めた場合に、発明者の実験によれば、K=4とすると、オフセット値域によりオフセットの範囲を制限しても符号化効率の低下がないことが発見された。
【0419】
そして、画素ビット深度=8の場合、オフセットのビット深度SAO_DEPTHも8であり、CLIP_BIT=8-K=4となる。1つのオフセットが4ビットで格納できることは、8ビットのバイトを単位として扱うソフトウェア等で、1バイトに1つのオフセットをパッキングして格納することが可能であり、簡易にメモリサイズの削減が可能となる。
【0420】
そして、設定されるオフセットの精度が、処理対象のQAOUの階層によって異なる場合、オフセット情報格納部621は、処理対象のQAOUの階層の深度に応じてオフセット格納領域の単位サイズを切り換えて確保している。
【0421】
具体的には、処理対象のQAOUの階層の深度が閾値より小さい場合のオフセットの精度がnAビット(例えば、nA=8または6)、処理対象のQAOUの階層の深度が閾値以上の場合のオフセットの精度がnBビット(nA>nB、例えば、nB=nA-2)に設定されているとき、オフセット情報格納部621は、処理対象のQAOUの階層の深度が閾値より小さい場合のオフセットを格納する領域をnAビット単位で確保し、処理対象のQAOUの階層の深度が閾値以上の場合のオフセットを格納する領域をnBビット単位で確保している。
【0422】
なお、処理対象のQAOUの階層の深度が閾値以上の場合は、オフセット情報格納部621に対して、オフセットの読み書きを行うときに、書き込み時は(nA-nB)ビット切り下げ、読み出し時は(nA-nB)ビット切り上げて入出力を行う構成が好ましい。この構成によれば、他のモジュールにおいてオフセットの精度の差を考慮して処理を行う必要がなくなるためである。
【0423】
また、オフセット情報格納部621は、処理対象のQAOUの階層の深度に応じて、必要なクラス数が変わる場合、必要なクラス数に合わせて、確保するリストメモリの領域を切り換える。例えば、後述するように、処理対象のQAOUの階層の深度が閾値より小さい場合は16クラスに分類され、処理対象のQAOUの階層の深度が閾値以上となる場合は8クラスに分類されるバンドオフセットの場合を考える。この場合、処理対象のQAOUの階層の深度が閾値以上となる場合のクラスの確保に必要なメモリの容量は、処理対象のQAOUの階層の深度が閾値より小さい場合の半分となる。そこで、オフセット情報格納部621は、処理対象のQAOUの階層の深度が閾値以上となる場合に確保するリストメモリの大きさを、処理対象のQAOUの階層の深度が閾値より小さい場合の半分に切り換える。
【0424】
QAOU制御部622は、適応オフセットフィルタ処理部62’に含まれる各部を制御する。また、QAOU制御部622は、QAOU構造情報を参照して、デブロック済復号画像P_DBを1または複数のQAOUに分割し、各QAOUを所定の順序でスキャンする。また、処理対象とする対象QAOMUを表すQAOMU番号をオフセットタイプ導出部623に供給する。
【0425】
オフセットタイプ導出部623は、オフセット情報格納部621のマップメモリおよびリストメモリを参照し、QAOU制御部622から供給されたQAOMU番号によって指定されるオフセットタイプを導出する。また、導出したオフセットタイプを、クラス分類部624に供給する。
【0426】
クラス分類部624は、対象QAOUに含まれる各画素を、オフセットタイプ導出部623から供給されるオフセットタイプにおいて選択可能な複数のクラスの何れかに分類する。また、当該オフセットタイプと、各画素が分類されたクラスを示すクラスインデックスとをオフセット導出部625に供給する。なお、クラス分類部624による具体的な分類処理については後述するためここでは説明を省略する。
【0427】
オフセット導出部625は、オフセット情報格納部621のリストメモリを参照し、対象QAOUに含まれる各画素について、クラス分類部624から供給されるオフセットタイプおよびクラスインデックスによって指定されるオフセットを導出する。さらにオフセット属性設定部613によって設定されたシフト値だけ、オフセットを左側へビットシフトするオフセット逆シフト部(不図示)を備える。オフセット逆シフト部は、オフセットのビット深度と画素ビット深度とを合わせるように、該オフセットの逆量子化を行う。このような逆量子化を行うことで、後述するオフセット加算部626の加算処理において、同一のビット深度にて、画素値とオフセットの加算を行うことが可能である。各画素について逆量子化したオフセットは、オフセット加算部626に供給される。
【0428】
オフセット加算部626は、対象QAOUにおけるデブロック済復号画像P_DBの各画素に対して、オフセット導出部625から供給されるオフセットを加算する。オフセット加算部626は、デブロック済復号画像P_DBに含まれる全てのQAOUに対して処理を行って得られる画像をオフセットフィルタ済復号画像P_OFとして出力する。
【0429】
次に、クラス分類部624による分類処理について、
図26~29を参照して説明する。なお、以下では、QAOUの階層の深度などの条件をパラメータ条件とする場合を説明するが、一般のパラメータ条件に応じたクラス分類部の構成については
図34を用いて後述する。
【0430】
図26は、適応オフセットフィルタ60によるオフセット処理を説明するための図であって、(a)は、処理対象画素xの画素値pic[x]と画素aまたはbの画素値との大小関係を示すグラフ、およびその大小関係に応じた関数Signの値を示し、(b)は、処理対象画素xの画素値と、画素aおよびbの画素値との大小関係を示すグラフ、およびその大小関係に応じたEgdeTypeの値を示し、(c)は、(b)に示した各グラフと、class_idxとの対応を示し、(d)~(f)は、EgdeTypeからclass_idxへの変換を表す変換テーブルを示している。
【0431】
図27は、適応オフセットフィルタ60によるオフセット処理を説明するための図であって、(a)は“sao_type_idx”=5であるときのクラス分類を概略的に示し、(b)は“sao_type_idx”=6であるときのクラス分類を概略的に示している。
【0432】
図28は、適応オフセットフィルタ60によるオフセット処理を説明するための図であって、(a)は処理対象のQAOUの階層の深度が閾値よりも小さい場合のクラス分類を概略的に示し、(b)は処理対象のQAOUの階層の深度が閾値以上の場合のクラス分類を概略的に示している。
【0433】
図29は、バンドオフセットが指定された場合のクラス分類の一例を示す図であり、(a)は、処理対象のQAOUの階層の深度が閾値よりも小さい場合のクラス分類の一例を示し、(b)は処理対象のQAOUの階層の深度が閾値以上の場合のクラス分類の一例を示している。
【0434】
(オフセットタイプ=1~4(エッジオフセット)のとき)
オフセットタイプ導出部623から供給されるオフセットタイプが1~4の何れかであるときのクラス分類部624の処理は、上記で
図10を参照して説明した通りである。
【0435】
よって、
図26(a)に示すように、画素値pic[x]と画素aまたはbの画素値との大小関係において、画素値pic[x]の方が、画素aまたはbの画素値よりも小さい場合はSign(pic[x]-pic[a])=-1、同じ場合はSign(pic[x]-pic[a])=0、大きい場合はSign(pic[x]-pic[a])=1となる。なお、
図26(a)においてpic[x]が付されている黒丸は、処理対象画素xの画素値を示すものであり、pic[x]が付されていない黒丸は、処理対象画素aまたはbの画素値を示すものである。また、
図26(a)における上下方向は、画素値の大小を示している。
【0436】
続いて、クラス分類部624は、Sign(pic[x]-pic[a])、およびSign(pic[x]-pic[b])に基づいて、以下の数式(1-1)によってEgdeTypeを導出する。
【0437】
EgdeType=Sign(pic[x]-pic[a])+Sign(pic[x]-pic[b])+2 ・・・(1-1)
これにより、
図26(b)に示すように、画素値pic[x]に対し、画素aおよびbのいずれの画素値も大きい場合は、EgdeType=0となる。また、画素値pic[x]に対し、画素aおよびbのうち、一方の画素値が大きく、他方の画素値が同じ場合は、EgdeType=1となる。また、画素値pic[x]に対し、画素aおよびbのうち、一方の画素値が小さく、他方の画素値が同じ場合は、EgdeType=3となる。また、画素値pic[x]に対し、画素aおよびbのいずれの画素値も小さい場合は、EgdeType=4となる。また、画素値pic[x]に対し、画素aおよびbのうち、一方の画素値が小さく、他方の画素値が大きい場合、または、画素値pic[x]に対し、画素aおよびbのいずれの画素値も同じ場合は、EgdeType=2となる。
【0438】
なお、
図26(b)において、各グラフの中心の黒丸は、処理対象画素xの画素値を示しており、両端の黒丸は、画素aおよびbの画素値を示している。また、
図26(b)における上下方向は、画素値の大小を示している。
【0439】
続いて、クラス分類部624は、導出したEgdeTypeに基づいて、処理対象画素xが属するべきクラスのクラスインデックス(class_idx)を以下のように導出する。
【0440】
class_idx=EoTbl[EdgeType]
ここで、EoTbl[EdgeType]は、EdgeTypeからclass_idxを導出するために用いられる変換テーブルである。当該変換テーブルEoTblの具体例を
図26(d)~(f)に示す。
【0441】
図26(d)に示す変換テーブル1001Xは、処理対象のQAOUの階層の深度によって用いる変換テーブルを変更しない場合の変換テーブルである。
【0442】
また、
図26(e)に示す変換テーブル1001Aと
図26(f)に示す変換テーブル1001Bとは、処理対象のQAOUの階層の深度によって用いる変換テーブルを変更する場合の変換テーブルであり、処理対象のQAOUの階層の深度が閾値よりも小さい場合は変換テーブル1001Aを用い、処理対象のQAOUの階層の深度が閾値以上の場合は変換テーブル1001Bを用いる。
【0443】
処理対象のQAOUの階層の深度によって用いる変換テーブルを変更しない場合、変換テーブル1001Xに示すように、クラス分類部624は、処理対象画素x、画素aおよび画素bから成る領域にエッジが存在しない場合(以下、平坦な場合とも呼ぶ)、すなわち、EdgeType=2の場合、処理対象画素xをクラス0(“class_idx”=0)に分類する。また、EdgeType=0、1、3、4をそれぞれclass_idx=1、2、3、4に分類する。
【0444】
また、処理対象のQAOUの階層の深度によって用いる変換テーブルを変更しない場合で、処理対象のQAOUの階層の深度が閾値より小さいとき、変換テーブル1001Aに示すように、クラス分類部624は、処理対象画素x、画素aおよび画素bから成る領域にエッジが存在しない場合(以下、平坦な場合とも呼ぶ)、すなわち、EdgeType=2の場合、処理対象画素xをクラス0(“class_idx”=0)に分類する。また、EdgeType=0、1、3、4をそれぞれclass_idx=1、3、4、2に分類する。また、処理対象のQAOUの階層の深度が閾値以上のとき、変換テーブル1001Bに示すように、クラス分類部624は、処理対象画素x、画素aおよび画素bから成る領域にエッジが存在しない場合(以下、平坦な場合とも呼ぶ)、すなわち、EdgeType=2の場合、処理対象画素xをクラス0(“class_idx”=0)に分類する。また、EdgeType=0、1をclass_idx=1に、EdgeType=3、4をclass_idx=2に分類する。よって、変換テーブル1001Bでは、複数のEdgeTypeに対し、1つのclass_idxが対応している。
【0445】
なお、変換テーブル1001Aについては、変換テーブル1001Xと同じでもよいように考えられる。しかしながら、階層に応じて2つの変換テーブルを使い分ける場合において、変換テーブル1001Aとして変換テーブル1001Xで定義したテーブルと同じテーブルを用いると、変換テーブル1001Bとの間で、同じclass_idxに対し、異なるEdgetypeが割り当てられることになり、階層によって処理が変わってしまうことになる。例えば、class_idx=2のときに、階層の深度が閾値より小さい場合(変換テーブル1001Xを用いる場合)は、Edgetype=1、階層の深度が閾値以上の場合(変換テーブル1001Bを用いる場合)は、Edgetype=4となり、階層によって処理が変わってしまうことになる。
【0446】
そこで、変換テーブル1001Aを
図26(e)に示すようにすることで、変換テーブル1001Bとの間、すなわち階層間によって、処理が変わらないようにしている。
【0447】
(オフセットタイプ=5~6(バンドオフセット)のとき)
オフセットタイプ導出部623から供給されるオフセットタイプが5または6であるとき、クラス分類部624は、処理対象画素xの画素値pic[x]に応じて、当該処理対象画素の画素値を複数のクラスの何れかに分類する。
【0448】
・オフセットタイプ=5(sao_type_idx=5)のとき
クラス分類部624は、処理対象画素xの画素値pic[x]が、
(max×1/4)≦pic[x]≦(max×3/4)
を満たしている場合に、当該処理対象画素をクラス0以外のクラスに分類する。すなわち、処理対象画素の画素値が、
図27(a)における斜線の範囲内である場合に、当該処理対象画素をクラス0以外のクラスに分類する。なお、上記maxは、処理対象画素xの画素値の取り得る最大値を表しており、例えば、max=255である。また、max=255であるとき、上記の条件は、8≦(pic[x]/8)≦23と表現することもできるし、4≦(pic[x]/16)≦11と表現することもできる。
【0449】
・オフセットタイプ=6(sao_type_idx=6)のとき
クラス分類部624は、処理対象画素xの画素値pic[x]が、
pic[x]≦(max×1/4)または(max×3/4)≦pic[x]
を満たしている場合に、当該処理対象画素をクラス0以外のクラスに分類する。すなわち、処理対象画素の画素値が、
図27(b)における斜線の範囲内である場合に、当該処理対象画素をクラス0以外のクラスに分類する。なお、上記maxは、処理対象画素xの画素値の取り得る最大値を表しており、例えば、max=255である。また、max=255であるとき、上記の条件は、(pic[x]/8)≦7または24≦(pic[x]/8)と表現することもできるし、(pic[x]/16)≦3または12≦(pic[x]/16)と表現することもできる。
【0450】
クラス分類部624によるクラス分類処理をより具体的に説明すれば以下の通りである。
【0451】
オフセットタイプが5~6の何れかであるとき、クラス分類部624は、処理対象画素xが属するべきクラスのクラスインデックス(class_idx)を、処理対象のQAOUの階層の深度の応じて、以下のように導出する。
・処理対象のQAOUの階層の深度が閾値よりも小さい場合
class_idx=EoTbl[sao_type_idx][pic[x]/>>BoRefBit32]
・処理対象のQAOUの階層の深度が閾値以上の場合
class_idx=EoTbl[sao_type_idx][pic[x]/>>BoRefBit16]
ここで、EoTbl[sao_type_idx][pic[x]/>>BoRefBit32]、およびEoTbl[sao_type_idx][pic[x]/>>BoRefBit16]は、処理対象画素xの画素値pic[x]とsao_type_idxとから、class_idxを導出するために用いられる変換テーブルである。BoRefBit32とBoRefBit16は、画像ビット深度をPIC_DEPTHとする場合に、各々PIC_DEPTH-5、PIC_DEPTH-4で導出される値であり、画素値を32段階もしくは16段階の値に量子化したものである。量子化された画素値はpixquantとも記述する。BoRefBit32およびBoRefBit16で右シフトすることは、1<<BoRefBit32および1<<BoRefBit16で除算することに対応する。この量子化幅は画素値のビット深度が8ビットの場合にはそれぞれ、1<<(8-5)=8、1<<(8-4)=16である。以下、量子化幅が8の場合を説明する。また、この量子化幅をクラスの幅と呼ぶ。
【0452】
クラス分類部624は、処理対象のQAOUの階層の深度に応じて分類するクラスの幅を変えて、クラスの分類を行う。例えば、
図28(a)に示すように、処理対象のQAOUの階層の深度が閾値よりも小さい場合、クラス分類部624は、クラスの幅を「8」として画素値を32個に分類して、クラス分類を行う。また、
図28(b)に示すように、処理対象のQAOUの階層の深度が閾値以上の場合、クラス分類部624は、クラスの幅を「16」として画素値を16個に分類し、クラス分類を行う。
【0453】
次に、変換テーブルEoTblの具体例を
図29に示す。
図29の(a)、(b)それぞれにおいて「BO_1」は、“sao_type_index”=5であることを示しており、「BO_2」は、“sao_type_index”=6であることを示している。また、
図29(a)に示す変換テーブル1301は、処理対象のQAOUの階層の深度が閾値よりも小さい場合に用いられる変換テーブルであり、
図29(b)に示す変換テーブル1302は、処理対象のQAOUの階層の深度が閾値以上の場合に用いられる変換テーブルである。
【0454】
処理対象のQAOUの階層の深度が閾値よりも小さい場合で、“sao_type_index”=5のとき、
図29(a)に示すように、 クラス分類部624は、画素値pic[x]が8≦(pic[x]/8)≦23を満たす処理対象画素xについて、pic[x]の大きさに応じて、クラスインデックス1から16までの何れかのクラスに分類する。
【0455】
また、“sao_type_index”=6のとき、クラス分類部624は、画素値pic[x]がpic[x]/8)≦7または24≦(pic[x]/8)を満たす処理対象画素xについて、pic[x]の大きさに応じて、クラスインデックス1から16までの何れかのクラスに分類する。
【0456】
また、処理対象のQAOUの階層の深度が閾値以上の場合で、“sao_type_index”=5のとき、
図29(b)に示すように、 クラス分類部624は、画素値pix[x]が4≦(pix[x]/16)≦11を満たす処理対象画素xについて、pix[x]の大きさに応じて、クラスインデックス1から8までの何れかのクラスに分類する。
【0457】
また、“sao_type_index”=6のとき、クラス分類部624は、画素値pix[x]がpix[x]/16)≦3または12≦(pix[x]/16)を満たす処理対象画素xについて、pix[x]の大きさに応じて、クラスインデックス1から8までの何れかのクラスに分類する。
(オフセット情報復号部611の構成)
図41は、適応オフセットのパラメータの種類(パラメータ条件)に応じて、使用するオフセットタイプを変更する、かつ/もしくは、適応オフセットのパラメータ条件に応じて、クラスの分類数を変更するオフセット情報復号部611のブロック図である。オフセット情報復号部611は、適応的オフセットタイプ復号部6111、使用オフセットタイプ選択部6112、オフセットタイプ復号部6113、適応的オフセット復号部6114、使用オフセット数選択部6115、オフセット復号部6116から構成される。なお、パラメータ条件とは、画素値から算出される値以外のパラメータであり、上記で説明した階層、オフセットタイプの他、後述の付記事項にて説明するブロックサイズ(QAOUサイズ)、色成分(コンポーネント)、QPがある。
【0458】
適応的オフセットタイプ復号部6111は、符号化データ中のQAOU情報から、パラメータ条件に応じて適応的にオフセットタイプを復号する手段であり、使用オフセットタイプ選択部6112とオフセットタイプ復号部6113を備える。
【0459】
使用オフセットタイプ選択部6112は、パラメータ条件に応じて使用するオフセットタイプを選択する手段である。パラメータ条件の一つは、上述したように階層である。階層が浅い場合に使用するオフセットタイプの数は、階層が深い場合に使用するオフセットの数よりも小さい。使用オフセットタイプ選択部6112は、パラメータ条件に応じて
図25で説明したような変換テーブルをオフセットタイプ復号部6113に入力する。また使用可能なオフセットタイプの最大数をオフセットタイプ復号部6113に入力する。
【0460】
オフセットタイプ復号部6113は、入力された変換テーブルと最大数に応じて符号化データからオフセットタイプを復号する。オフセットタイプの最大数をNとすると、コードの取り得る範囲が0からN-1までのN個に制限されることから、コードの符号化に要するビット数を低減することができる。例えば、最大数が2m-1より大きく、2m以下であるときmビットの固定長符号化を用いることができる。また、最大値をN-1とするTruncated unary符号化や、Truncated Rice符号化を用いることもできる。
【0461】
適応的オフセット復号部6114は、符号化データ中のQAOU情報から、パラメータ条件に応じて適応的にオフセットを復号する手段であり、使用オフセット数選択部6115とオフセット復号部6116とを備える。使用オフセット数選択部6115は、パラメータ条件に応じて、使用するオフセット数の最大値とオフセットの精度を選択する手段である。パラメータ条件の一つは階層であり、階層が浅い場合に使用するオフセットの数は、階層が深い場合に使用するオフセットの数よりも大きい。例えば、階層が浅い場合には
図29(a)のようにオフセット数を16個、階層が深い場合には
図29(b)のようにオフセット数を8個とすることができる。また、上述したように、階層に応じて、オフセットの精度(ビット深度)を変更することも可能である。使用オフセット数選択部6115は、オフセット最大数とオフセット精度をオフセット復号部6116に入力する。オフセット復号部6116は、オフセットの最大数とオフセットの精度に応じてオフセットを復号する。オフセットの数を少なくする場合には、オフセットの符号量が低減する。また、オフセットタイプと同様、オフセットにおいても各オフセットの精度が決まれば、オフセットを符号化するコードの取り得る範囲も制限されることから、コードの符号化に要するビット数を低減することができる。
【0462】
図42(a)は、使用オフセットタイプ選択部6112の構成を示すブロック図である。
【0463】
使用オフセットタイプ選択部6112は、オフセットタイプ変換テーブル選択部6117、第1オフセットタイプ変換テーブル格納部6118、第2オフセットタイプ変換テーブル格納部6119を備える。
【0464】
オフセットタイプ変換テーブル選択部6117は、パラメータ条件に応じて第1オフセットタイプ変換テーブル格納部6118が備える変換テーブルもしくは、第2オフセットタイプ変換テーブル格納部6119が備える変換テーブルを選択する。上述した例では、801Aが、第1オフセットタイプ変換テーブル格納部6118が備える変換テーブルであり、801Bが、第2オフセットタイプ変換テーブル格納部6119が備える変換テーブルに対応する。
【0465】
図42(b)は、使用オフセットタイプ選択部の別の構成を示すブロック図である。
【0466】
使用オフセットタイプ選択部6112’は、オフセットタイプ変換テーブル選択部6117’、エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部6118’、水平エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部6119’を備える。
【0467】
(クラス分類部624の構成)
図43は、クラス分類部624の構成を示すブロック図である。
【0468】
クラス分類部624は、適応的エッジオフセットクラス分類部6241、使用エッジオフセットクラス選択部6242、エッジオフセットクラス分類部6243、適応的バンドオフセットクラス分類部6244、使用バンドオフセットクラス・クラス幅選択部6245、バンドオフセットクラス分類部6246から構成される。
【0469】
クラス分類部624は、パラメータ条件およびオフセットタイプに応じて、各画素をクラスに分類する。オフセットタイプがエッジオフセットを示す場合には、適応的エッジオフセットクラス分類部6241により画素を分類し、オフセットタイプがバンドオフセットの場合には、適応的バンドオフセットクラス分類部6244において、画素を分類する。
【0470】
適応的エッジオフセットクラス分類部6241は、パラメータ条件に応じて適応的に、画素をクラスに分類する手段であり、使用エッジオフセットクラス選択部6242とエッジオフセットクラス分類部6243とを備える。使用エッジオフセットクラス選択部6242は、使用するクラスの種類を選択する。使用エッジオフセットクラス選択部6242は、画素値の分類方法をエッジオフセットクラス分類部6243に入力する。具体的には、画素値を分類する場合に一時的に導出される中間値EdgeTypeの導出方法と、EdgeTypeからclass_idxを導出するために用いられる変換テーブルを入力する。中間値EdgeTypeの導出方法の例は
図26(a)、
図26(b)を用いて説明したものであり、これを基本エッジ分類方法と呼ぶ。
図33で後述するようなエッジ分類方法を用いることもできる。パラメータ条件の一つは、上述したように階層であり、階層が浅い場合に使用するクラスを、階層が深い場合に使用するクラスよりも大きい数となるように選択する。EdgeTypeからclass_idxを導出するために用いられる変換テーブルは、1001Aや1001Bが例になる。また、色成分(コンポーネント)に応じて、エッジ導出方法を切り替える方法も適当である。この場合、輝度では、水平、垂直、斜め方向のエッジ分類方法を用いる基本エッジ分類方法を用い、色差では、ラインメモリを削減するためにエッジ分類で用いる参照画素の範囲を、対象画素からみて水平方向に限定した水平エッジ分類方法を用いることが適当である。エッジオフセットクラス分類部6243は与えられた分類方法と、EdgeTypeからclass_idxを導出するために用いられる変換テーブルに基づいて画素を分類する。
【0471】
適応的バンドオフセットクラス分類部6244は、パラメータ条件に応じて適応的に、画素をクラスに分類する手段であり、使用バンドオフセットクラス・クラス幅選択部6245とバンドオフセットクラス分類部6246とを備える。使用バンドオフセットクラス・クラス幅選択部6245は、画素値の分類方法をバンドオフセットクラス分類部6246に入力する。具体的には、画素値を中間値に分類する場合に用いられる量子化幅であるクラス幅と、中間値からclass_idxを導出するために用いられる変換テーブルを入力する。パラメータ条件の一つは、既に説明したように階層であり、階層が浅い場合に使用するクラスの幅は、階層が深い場合に使用するクラスの幅よりも小さい。バンドオフセットクラス分類部6246は、入力されたクラス幅と、中間値からclass_idxを導出するために用いられる変換テーブルに応じて画素値をクラスに分類する。入力であるクラス幅は、クラス幅自体ではなく、クラス幅に対応する整数でも構わない。例えば1<<BoRefBit32をクラス幅とする場合、その2を底とする対数である画素の量子化に用いるビット数BoRefBit32や、画素のビット深度から画素を量子化に用いるビット数を求めるための値、例えば、BoRefBit32=PIC_DEPTH-5であれば5を、クラス幅の代わりに用いても構わない。
【0472】
このように、パラメータ条件に応じて適応的に符号化データを復号し、画素のクラス分類を行う。
【0473】
以上のように、本実施形態では、処理対象のQAOUの階層の深度に応じて、クラスの分類数を変更している。より詳細には、処理対象のQAOUの階層の深度が大きい場合に、小さい場合と比較してより少ないクラス数に分類している。
【0474】
一般に、必要なメモリ量は、メモリ量=オフセットのデータ長×クラス数×QAOU数であるので、クラス数を減らすことにより、メモリの使用量を削減することができる。
【0475】
また、深い階層では、QAOUの面積が小さくなるとともに、QAOU内の画素値の特性が一様に近くなるので、クラス数を減らしてもオフセットの効果は、あまり変わらない。
【0476】
また、本実施形態では、処理対象のQAOUの階層の深度に応じて、オフセットの精度を変更している。より詳細には、処理対象のQAOUの階層の深度が大きい場合に、小さい場合と比較してオフセットの精度を下げている。これにより、処理対象のQAOUの階層の深度が大きい場合の符号量を減らしている。
【0477】
深い階層のQAOUでは、含まれる画素数が少なくなるため、QAOU全体でみた量子化誤差が上位の階層と比較して小さくなる。よって、深い階層において、オフセットの精度を下げても、オフセットの効果はあまり変わらない。
【0478】
(動画像符号化装置2’)
次に、符号化対象画像を符号化することによって符号化データ#1を生成する動画像符号化装置2’について、
図30、31を参照して説明する。動画像符号化装置2’は、動画像符号化装置2と同様に、その一部に、H.264/MPEG-4.AVCに採用されている方式、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている方式、その後継コーデックであるTMuC(Test Model under Consideration)ソフトウェアに採用されている方式、および、HM(HEVC TestModel)ソフトウェアに採用されている技術を含んでいる。
【0479】
また、動画像符号化装置2’は、動画像符号化装置2における適応オフセットフィルタ80の代わりに適応オフセットフィルタ80’が設けらている点が異なり、他の構成は同様である。
【0480】
(適応オフセットフィルタ80’)
次に、適応オフセットフィルタ80’について、
図30を参照して説明する。
図30は、適応オフセットフィルタ80’の構成を示すブロック図である。
図30に示すように、適応オフセットフィルタ80’は、適応オフセットフィルタ情報設定部81’および適応オフセットフィルタ処理部82’を含む構成である。
【0481】
また、
図30に示すように、適応オフセットフィルタ情報設定部81’は、オフセット算出部811、オフセットクリップ部812、およびオフセット情報選択部813を含む構成である。
【0482】
(オフセット算出部811)
オフセット算出部811は、対象の処理単位(例えばLCU)に含まれる所定の分割深度までの全てのQAOUに対して、処理対象のQAOUの階層に応じて存在する全てのオフセットタイプおよび全てのクラスについてのオフセットを算出する。ここで、オフセットタイプおよびクラスは、動画像復号装置1の説明において説明したものと同じものを指す。
【0483】
オフセット算出部811は、上記の処理によって算出したオフセット、オフセットタイプ、クラス、および、QAOUの分割構造を表すQAOU構造情報からなるオフセット情報をオフセットクリップ部812に供給する。
【0484】
(オフセットクリップ部812)
オフセットクリップ部812は、オフセット算出部811から供給されるオフセットに対して以下に示すようなクリップ処理1、クリップ処理2の何れかの処理によってクリップの処理を行う。
【0485】
(クリップ処理1)
オフセットクリップ部812は、オフセット算出部811から供給される各オフセットを例えば-8から7までの値にクリップすることによって、各オフセットを4ビットで表現する。クリップされた各オフセットは、オフセット情報選択部813に供給される。クリップするビット幅は、動画像復号装置1と同様、画像のビット深度とオフセットのビット深度に応じて設定される。
【0486】
このように、各オフセットをクリップすることによって、各オフセットが格納されるメモリ(不図示)のメモリサイズを削減することができる。また、符号化データ#1に含まれるオフセットの符号量を削減することができるので、符号化効率の向上を図ることができる。また、過度なオフセットが加算されることが抑制されるので、適切な画質が保証される。
【0487】
(クリップ処理2)
また、オフセットクリップ部812は、オフセット算出部811から供給される各オフセットのクリップ範囲を、オフセットタイプに応じて異なる値を設定する構成としてもよい。
【0488】
例えば、オフセットタイプがエッジオフセットである場合には、オフセットのビット数を8ビットとし、オフセットタイプがバンドオフセットである場合には、オフセットのビット数を4ビットとする。より一般には、オフセットタイプがエッジオフセットである場合のオフセットのビット数をNビットとし、オフセットタイプがバンドオフセットである場合のオフセットのビット数をMビットとしたとき、N>Mが満たされるようにオフセットのビット数を定める。
【0489】
このようにオフセットタイプに応じて、オフセットのビット数を異ならせることによって、各オフセットを格納するためのメモリに過度なメモリサイズを要求することなく、符号化効率の向上を図ることができる。
【0490】
なお、オフセットの取り得る値を制限するための閾値thが2m-1より大きく、2m以下であるとき、当該オフセットを符号化するための符号化方式として、mビットの固定長符号化を用いることができる。より具体的には、最大値とthとするTruncated unary符号化や、Truncated Rice符号化を用いることができる。
【0491】
また、上記クリップ処理1および2を組み合わせて得られるクリップ処理も本実施形態に含まれる。また、適応オフセットフィルタ80’は、オフセットクリップ部812を備えない構成としてもよい。
【0492】
また、オフセットクリップ部812は、オフセットの精度に合わせ、処理対象のQAOUの階層の深度に応じて、クリップ範囲を切り換える。具体的に、オフセットの精度が、処理対象のQAOUの階層の深度が閾値よりも小さい場合はnAビット、処理対象のQAOUの階層の深度が閾値以上の場合はnBビットのときを考える。このとき、オフセットクリップ部812は、処理対象のQAOUの階層の深度が閾値よりも小さければ、クリップ範囲を-2nA/2~2nA/2-1とする。また、処理対象のQAOUの階層の深度が閾値以上であれば、クリップ範囲を-2nA/2~2nA/2-1とした上で、下位の(nA-nB)ビットを「0」とする。これにより、オフセットクリップ部812によって、クリップ処理されたオフセットを用いて処理を行うオフセット情報選択部813に対し、オフセットの精度を考慮せずに処理を行わせることができる。
【0493】
(オフセット情報選択部813)
オフセット情報選択部813は、RDコスト(Rate-Distortion cost)がより小さくなるオフセットタイプ、クラス、オフセットの組み合わせ、および、それに対応するQAOU分割構造を決定し、決定したオフセットタイプ、クラス、オフセットおよび、それに対応するQAOM分割構造を示すQAOU情報を可変長符号符号化部22に供給する。また、オフセット情報選択部813は、決定したオフセットをQAOU毎に適応オフセットフィルタ処理部82に供給する。
【0494】
オフセット情報選択部813の処理について
図31を参照してより具体的に説明すれば以下の通りである。
【0495】
図31は、QAOUインデックスが「x」のQAOUについて、オフセットタイプそれぞれについての2乗誤差を算出する概要を示す図である。
図31に示すように、オフセット情報選択部813は、全てのQAOMUについて、オフセットタイプそれぞれについての2乗誤差を算出する。そして、算出した2乗誤差が最小となるオフセットタイプを当該QAOUのオフセットタイプとする。これにより、全てのQAOMU(QAOMU番号0~340)について、オフセットタイプが決定する。
【0496】
次に、オフセット情報選択部813は、分割深度を0としたときのRDコストと分割深度を1とした場合のRDコストを計算する。具体的な計算方法は、上記で
図18を参照して説明した通りである。
【0497】
(適応オフセットフィルタ処理部82’)
適応オフセットフィルタ処理部82’は、対象QAOUにおけるデブロック済復号画像P_DBの各画素に対して、オフセット情報選択部813から供給されるオフセットを加算する。適応オフセットフィルタ処理部82’は、デブロック済復号画像P_DBに含まれる全てのQAOUに対して処理を行って得られる画像をオフセットフィルタ済復号画像P_OFとして出力する。なお、適応オフセットフィルタ処理部82’の構成は、適応オフセットフィルタ処理部62’と同一のため、ここでは説明を省略する。
【0498】
また、適応クリップタイプを用いる構成であってもよい。すなわち、オフセットタイプの1つとして、適応クリップ(AC)タイプを設けるようにしてもよい。この場合、オフセットタイプは、EO、BO、ACの3種類となる。適応クリップタイプ(AC)では、オフセットを用いず、下限値c1と上限値c2とのクリップを用いて画素値を補正する。下限値c1および上限値c2の例としては、例えば、c1=16、c2=235を挙げることができる。
【0499】
適応クリップタイプを用いることにより、オフセットの符号化処理や多数のオフセットを保持するメモリが不要となる。なお、クリップの下限値および上限値を、固定値でなく適応的に与える場合には、下限値と上限値を符号化すればよい。この場合は、それぞれ適当な固定値からの差分、たとえば下限値は16からのオフセット、上限値は235からのオフセットを符号化することが好ましいとよい。特に、上限値は大きな値となるため、このようにすることで、符号化効率を下げることがない。
【0500】
(付記事項2)
また、上述したように、QAOUの階層の深度に応じてとは、QAOUのサイズに応じてということもできる。すなわち、QAOUのサイズに応じてSAOのタイプ数、クラス数やオフセット精度を異ならせてもよい。
【0501】
例えば、QAOUのサイズがN×N画素未満の場合は、SAOのタイプ数、クラス数、およびオフセット精度のうち、1または複数を、QAOUのサイズがN×N画素以上の場合よりも制限する構成であってもよい。Nの具体例としては、例えばN=64(LCUのサイズ)を挙げることができる。
【0502】
また、SAOのタイプ数の制限としては、例えば、EOを水平および垂直タイプに制限する、BOを1種類にする(変換テーブル802C)、EOのみを用いてBOを用いない(変換テーブル802A)、水平タイプのEOおよびBOのいずれかだけを用いる(変換テーブル801B、変換テーブル802D)、などを挙げることができる。オフセット情報復号部611においては括弧内に示す変換テーブルを用いるなお、SAOのクラス数の制限、およびオフセット精度の制限については、上述した実施形態と同様の方法で行うことができる。
【0503】
このように、SAOのタイプの種類、タイプ数、クラス数、およびオフセット精度を制限することにより、メモリの使用量削減や、処理負荷の軽減を行うことができる。特に、タイプの種類をBOに制限する場合や、EOを水平および垂直タイプに制限する場合には、符号化装置、および復号装置のクラス分類部の処理負荷を軽減することができる。また、タイプ数を制限する場合には、最適なタイプを選択するためのコスト計算を省くことができることから、符号化装置の処理負荷を軽減することができる。タイプの種類をEOに制限すること、クラス数およびオフセット精度を制限することによりオフセットを蓄積するメモリの使用量削減ができる。また、タイプの種類を水平タイプのEOおよびBOに制限することにより、クラス分類に用いる参照画素を保持するラインメモリなどの一時的メモリを削減することができ、また、参照画素の復号を待つ間の遅延を短くすることができる。なお、メモリの使用量の削減には、BOのクラス数を制限する方が、EOのクラス数を制限するよりも効果的である。
【0504】
このような制限は、
図41~
図43に示す手段の構成により、パラメータ条件をQAOUのサイズとした場合に、パラメータ条件に応じて適応的にオフセット情報復号部611、クラス分類部624の動作を変更することで実現できる。
【0505】
(付記事項3)
また、輝度値に対してオフセットを加えるQAOU(以下、輝度ユニットとも言う)のサイズと、色差に対してオフセットを加えるQAOU(以下、色差ユニットとも言う)のサイズとを異ならせ、色差ユニットでは、輝度ユニットよりも、SAOのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。
【0506】
例えば、YUV形式の画像フォーマットにおける4:2:0形式等、輝度と色差とで解像度が異なり、色差の解像度が輝度よりも低いデータ形式であれば、色差の分割の細かさは輝度ほどには必要なくなる。そこで、色差ユニットについて、SAOのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限することにより、メモリの使用量削減や、処理負荷の軽減を行うことができる。なお、色差ユニットの最大階層の制限は、例えば、SAOのツリー構造の最大深度を、輝度ユニットよりも浅くすることにより可能である。
【0507】
このような制限は、
図41~
図43に示す手段の構成により、パラメータ条件をQAOUのサイズとした場合に、パラメータ条件に応じて適応的にオフセット情報復号部611、クラス分類部624の動作を変更することで実現できる。
【0508】
特に、輝度と色差のどちらにもSAO処理を行う場合には、色成分毎にクラス分類に用いる参照画素を保持するラインメモリなどの一時的メモリを備える必要がある。輝度成分は色差成分に比べ重要度が低いことから、パラメータ条件を色差成分として、タイプの種類を水平タイプのEOおよびBOに制限することにより、色差成分でのラインメモリを削減することができる。この場合、オフセット情報復号部611では、変換テーブル801B、変換テーブル802Dなどの変換テーブルを用いる。
【0509】
また、パラメータ条件を色差成分として、輝度成分に比べオフセットの精度を小さくすることも特に有効である。例えば、輝度成分のオフセットの精度(とシフト値)を
SAO_DEPTH = MIN(PIC_DEPTH、AY)
シフト値 = PIC_DEPTH―MIN(PIC_DEPTH、AY)
として、色差成分の場合には、オフセットの精度、シフト値を、
SAO_DEPTH = MIN(PIC_DEPTH、THC)
シフト値 = PIC_DEPTH―MIN(PIC_DEPTH、AC)
のように求める場合に、精度を制御する変数AY、ACとしてAY>ACを用いることが適当である。例えば、AY=10もしくは9、AC=8とする。この場合、輝度成分のオフセットの精度は、色差成分よりも大きいものとなる。シフト値については輝度成分のシフト値が、色差成分よりも小さい値となる。
【0510】
(付記事項4)
また、CUの量子化パラメータqpの値(qp値)が閾値以上の場合に、SAOのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。qp値は、ピクチャの初期のQP値を用いてもよいし、SAOの処理対象QAOUがLCUやCUの境界に沿っている場合には、QAOUの左上座標もしくは中心座標に対応する位置のCUのqp値を用いてもよい。
【0511】
qp値は、その値が高いほど予測画像の画質は低くなり、詳細な分類およびオフセットの補正が困難となるため、SAOのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限しても、画質に与える影響が小さい。そこで、qp値が閾値以上の場合に、SAOのタイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成にすれば、画質に影響を与えることなく、メモリの使用量削減や、処理負荷の軽減を行うことができる。
【0512】
このような制限は、
図41~
図43に示す手段の構成により、パラメータ条件をQPとした場合に、パラメータ条件に応じて適応的にオフセット情報復号部611、クラス分類部624の動作を変更することで実現できる。
【0513】
(付記事項5)
また、特定タイプのピクチャ、例えばBピクチャや非参照ピクチャ(IDRピクチャ)では、SAOのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。
【0514】
IピクチャやPピクチャでは、そのピクチャの画質が、後のピクチャに大きな影響を与えるためSAOの精度を高く保つ必要がある。一方で、これ以外のピクチャでは、後のピクチャに大きな影響を与えることはないので、これらのピクチャ(Bピクチャ、IDRピクチャ)について、SAOのタイプの種類、タイプ数、クラス数、オフセット精度、および分割の最大階層を制限してもよい。これにより、メモリの使用量削減や、処理負荷の軽減を行うことができる。
【0515】
このような制限は、
図41~
図43に示す手段の構成により、パラメータ条件をピクチャの種類とした場合に、パラメータ条件に応じて適応的にオフセット情報復号部611、クラス分類部624の動作を変更することで実現できる。
【0516】
(付記事項6)
また、画面上におけるQAOUの位置に応じて、SAOのタイプ数、クラス数、オフセット精度、および分割の最大階層を制限する構成であってもよい。
【0517】
例えば、画面の周縁では、SAOのタイプ数、クラス数、オフセット精度、および分割の最大階層を制限してもよい。
【0518】
画面の中央付近は、ユーザが注目しやすいため、画質を下げると、そのまま主観画質が低下してしまうが、画面の周縁において画質を下げても、主観画質は画面中央付近ほどは低下しない。
【0519】
また、画面端を超えるサンプル点が必要となるSAOタイプを用いなければ、境界判定処理を軽減することができる。
【0520】
このような制限は、
図41~
図43に示す手段の構成により、パラメータ条件をQAOUの位置とした場合に、パラメータ条件に応じて適応的にオフセット情報復号部611、クラス分類部624の動作を変更することで実現できる。
【0521】
〔実施の形態4〕
本発明の他の実施の形態について
図32に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、画素値に応じて、EOとBOとを切り換える点である。
【0522】
本願発明者等は、画素において、中間階調域では、BOよりもEOの方が効果が高く、その他の値域(低画素値域・高画素値域)ではBOの方が効果が高いという特性を発見した。そこで、本実施形態では、低画素値域、および高画素値域ではBOを用い、中間階調域はEOを用いている。
【0523】
具体的に、
図32を参照して説明する。
図32は、画素値によってEOとBOとを切り換える構成を説明するための図であり、(a)は、画素値によってEOとBOとを切り換える構成の概要を説明するための図であり、(b)は、具体的な切り換えの値を説明するための図である、(c)は、オフセット情報格納部621に格納されるリストメモリの内容を示す図である。
【0524】
図32(a)に示すように、本実施形態では、画素値(輝度値)が0近辺、および255近辺では、BOを用い、それ以外の値域ではEOを用いる。すなわち、画素値によってSAOタイプを分類し、画素値が0近辺、および255近辺では、画素値に応じたオフセットを加算し、それ以外の地域では、エッジの種類に応じたオフセットを加算する。
【0525】
本願発明者等の実験の結果、EOとBOとは、用いられる画素値の範囲にそれぞれ偏りがみられた。すなわち、EOは中間階調域に多いということがわかった。これは、低画素値域および高画素値域では、誤差への影響は、エッジの種類よりも画素値の方が大きい傾向があるということを意味している。
【0526】
そこで、本実施形態では、EOとBOとを、画素値域に応じて決定し、1つのSAOタイプでEOおよびBOの両者における誤差補正効果が高い部分を利用する構成としている。これにより、符号化効率を向上させることができる。また、SAOタイプ数や総クラス数を減少させることができるので、メモリの使用量の削減、および処理負荷を軽減することができる。
【0527】
次に、本実施の形態について、より詳細に説明する。まず、本実施の形態では、上記実施の形態と異なり、“sao_type_idx”について1~4までを用い、これらを次のように定義する。
・“sao_type_idx”=1:(BO_EO_0) 実施の形態1のEO_0+BOに相当
・“sao_type_idx”=2:(BO_EO_1) 実施の形態1のEO_1+BOに相当
・“sao_type_idx”=3:(BO_EO_2) 実施の形態1のEO_2+BOに相当
・“sao_type_idx”=4:(BO_EO_3) 実施の形態1のEO_3+BOに相当
また、実施の形態1におけるEO_0~3、および BO_0,1は用いない。
【0528】
そして、クラス分類部624は、
図32(b)に示すように、
図29の変換テーブル1301におけるBoTbl[BO_1]を用いてクラス分類を行う。そして、画素値がmaxの1/4以下、およびmaxの3/4以上であれば、変換テーブル1301を用いて、クラス分類を行う。
【0529】
また、画素値が、maxの1/4と3/4との間であれば、上記実施の形態に説明したEO_0~3に応じてエッジタイプを判定し、クラス分類を行う。
【0530】
これにより、クラス分類部624は、BOとEOとを画素値によって切り換えてクラスを分類することができる。
【0531】
また、オフセット算出部811は、上記実施の形態で説明したオフセットの算出方法と同様の方法でオフセットを算出する。ただし、本実施の形態では、オフセットタイプの種類数が4つなので、この点を異ならせて算出する。
【0532】
また、オフセット情報格納部621に格納されるリストメモリ2101は、
図32(c)に示すように、QAOUインデックスとオフセットタイプと該オフセットタイプにおいて選択可能な各クラスに関するオフセットの具体的な値とが互いに関連付けられて格納されている。
【0533】
なお、EOとBOとの特徴を併せ持つオフセットタイプを用いる場合に、まず、EOを用いてクラス分類を行い、特定のクラス(エッジが平坦なクラス)について、BOを用いてさらにクラス分類する構成であってもよい。また、実施の形態に記載したEOおよびBOをそのまま併用する構成であってもよい。さらに、上記実施の形態に記載した条件(QAOUの階層の深度が閾値より小さいか否か)によって、EOとBOとの特徴を併せ持つオフセットタイプを設けるか否かを変更して、タイプ数やクラス数を削減する構成であってもよい。
【0534】
〔実施の形態5〕
本発明の他の実施の形態について
図33、34、42に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、EOのクラス分類において、エッジの判定に用いる画素を、判定対象の画素の水平方向に存在する画素のみに限定する点である。
【0535】
上記実施の形態では、対象画素の上または下方向に存在する画素についても、エッジの判定に用いられていた。そのため、対象画素の上方向に存在する画素(オフセット処理済みの画素)については、当該画素のオフセット処理前の画素値を保持しておくラインバッファが必要となっていた。
【0536】
そこで、エッジの判定に用いる画素を、対象画素の水平方向に存在する画素に限定すれば、上方向への参照がなくなるため、ラインバッファ分のメモリの使用量を削減することができる。また、上方向の境界判定(画面端など)が不要となるので、処理量も削減できる。
【0537】
また、水平方向に存在する画素のみを用いる場合、前回までの処理結果を流用することが可能となるため、さらに処理量を削減することができる。
図33(a)を参照して説明する。
図33(a)は、水平方向に存在する画素を示しており、x0~x3は、それぞれの画素の画素値である。
【0538】
まず、画素値x1の画素について、両隣との差分は、以下の通りである。
s1=sign(x1-x0)-sign(x2-x1)
次に、画素値x2の画素について、両隣との差分を算出すると、以下の通りとなる。
s2=sign(x2-x1)-sign(x3-x2)
ここで、s1、s2はx1、x2におけるエッジのクラス分類に用いられる値である。
【0539】
このように、s2を算出する場合に、s1で用いたsign(x2-x1)を再利用している。よって、この分だけ、処理量を減らすことができる。
【0540】
次に、本実施形態の詳細について説明する。本実施形態では、EOのタイプを2種類にしている。すなわち、“sao_type_idx”=1,2の場合のみを、エッジオフセット(EO)としている。そして、“sao_type_idx”=1(EO_0)のときは、対象画素の左右の画素と比較してエッジの種類を導出し(
図33(b))、“sao_type_idx”=2(EO’_0)のときは、対象画素の左右で、2画素離れた位置にある画素と比較してエッジの種類を導出する(
図33(c))。
【0541】
なお、“sao_type_idx”=3、4の場合はバンドオフセット(BO)となる。これは、上記実施の形態1において、“sao_type_idx”=5、6の場合をそれぞれ3、4と読み替えればよい。
【0542】
上記“sao_type_idx”=2の場合に、対象画素の両隣からさらに1画素分離れた画素を用いてエッジの種類を判定するのは、水平に対して角度の浅いエッジの検出を容易にするためである。
図33(d)に示すように、対象画素の両隣の画素を比較対象とした場合、画素値の差分が小さく、エッジとは判定されない場合がある。このような場合であっても、さらに1画素分隣の画素との差分をとれば、水平に対して角度の浅いエッジを検出することが可能となる。
【0543】
また、対象画素の両隣ではなく、左側は隣の画素、右側は1画素さらに隣の画素(
図34(a))との差分を用いてもよいし、この逆(
図34(b))を用いてもよい。これは、参照画素が画面の端に当たる場合に特に有効である。
【0544】
さらに、水平方向の画素のみを用いる場合を限定する構成であってもよい。例えば、Bピクチャや非参照ピクチャなどの他のピクチャへの影響が小さいピクチャの場合のみ、水平方向のみの画素を参照し、これ以外の場合は、上記実施の形態1と同様とする構成であってもよいし、画面端やスライス境界付近などでは、水平方向のみの画素を参照し、これ以外は、上記実施の形態と同様とする構成であってもよい。このようにすれば、メモリの使用量を削減できるとともに、処理量の削減も可能となる。また、上方向の参照を行わないので、画面端やスライス境界付近での境界の判定処理も軽減できる。
【0545】
また、ピクチャやブロック単位で、フラグで明示的に指定する構成であってもよい。例えば、水平エッジ(
図34(c)))が多い場合には、上記実施の形態に記載した方法で処理を行うようにすれば、性能が低下することを防止することができる。
【0546】
また、上記実施の形態に記載した条件(QAOUの階層の深度が閾値よりも小さいか否か)によって、水平方向に存在する画素のみを用いる構成とするか否かを変更してもよい。さらに、上記実施の形態に記載したような、BOとEOとを併用する場合に限り、EOについては、水平方向に存在する画素のみを用いる構成としてもよい。
【0547】
また、水平方向に存在する画素との差分が、閾値よりも大きい(または小さい)か否かによって、エッジの種類を導出してもよい。具体的には、以下の式にしたがって、クラスを分類してもよい。
【0548】
Sign(z)=+1 (z>thのとき)
Sign(z)=0 (-th≦z≦thのとき)
Sign(z)=-1 (z<-thのとき)
ここで、thは、予め定められた値を有する閾値である。
【0549】
また、色差を表す画素値の場合は、エッジオフセットにおいて、水平方向に存在する画素のみを用いる構成としてもよい。
【0550】
水平に限定する効果は、水平エッジ分類方法が1つのみである場合、例えば、
図33(b)のみの場合だけでも得ることができる。上記のように、複数の異なる水平エッジ分類方法を組み合わせる場合には、1つの水平エッジ分類方法、例えば
図33(b)を用いる場合よりも、より細かいエッジの分類が可能である。なお、複数の水平エッジ分類方法を用いる場合の組み合わせは、
図33(b)、(c)のように、対象画素と参照画素の距離を変更して2つの例を用いる場合に限らず、エッジの種類を導出する場合に用いる閾値を2つ用いる構成でも良い。例えば、上記閾値thが0である場合と1である場合の2つの水平エッジ分類方法を備えてもよい。
【0551】
水平方向の画素のみを用いる場合を限定する構成は、実施形態1の
図41~
図43に示す手段の構成により、パラメータ条件に応じて適応的にオフセット情報復号部611、クラス分類部624の動作を変更することで実現できる。例えば、
図41のオフセット情報復号部611において、パラメータ条件に応じて、使用オフセットタイプ選択部6112で選択するオフセットタイプの種類を水平エッジ分類方法のみに限定し、オフセットタイプ復号部6113では限定された種類のオフセットタイプを復号する。
【0552】
図42(b)で示すように、オフセットタイプ変換テーブル選択部6117’は、パラメータ条件に応じてエッジオフセットタイプ及びバンドオフセットタイプ格納部6118’が備える変換テーブルもしくは、水平エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部6119’が備える変換テーブルを選択する。一つの例では、色成分が輝度の場合に、エッジオフセットタイプ及びバンドオフセットタイプ格納部6118’が備える変換テーブルを選択し、色差の場合に、水平エッジオフセットタイプ及びバンドオフセットタイプ変換テーブル格納部6119’が備える変換テーブルを選択する。
【0553】
クラス分類部624では、内部の使用オフセットタイプ選択部6112において、パラメータ条件に応じて水平エッジ分類方法のみに限定するようなエッジ分類方法を選択し、エッジオフセットクラス分類部6243において画素を分類する。一つの例では、色成分が輝度の場合においては、基本エッジ分類方法を選択し、色成分が色差の場合には、水平エッジ分類方法を選択する。
【0554】
〔実施の形態6〕
本発明の他の実施の形態について
図35~37に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、色差の画素値の中央付近において、オフセット精度を向上させるか、またはクラスの分割を細かくしている点である。
【0555】
画像において、無彩色付近の誤差は主観画質において目立ちやすいという特性がある。各色差の画素値において、無彩色とは、値域の中央であり、ビット深度が8ビットの場合であれば、画素値128の画素の色である。そこで、本実施形態では、BOの場合に、色差の画素値128近辺について、オフセット精度を上げるか、またはより小さなクラス幅を用いてクラス分割を細かくしている。お、以下では、色差の画素値について無彩色付近の値域を、無彩色値域と呼ぶ。
【0556】
これにより、無彩色値域のオフセット精度を上げることができるので、無彩色値域でのオフセット補正の性能が向上する。よって、無彩色値域での原画像との誤差が減少し、主観画質を向上させることができる。また、無彩色値域において、クラスの分割を他の値域よりも狭く分割することにより、無彩色値域でのオフセット補正をより精密に行うことができる。これにより、原画像との誤差を減少させることができ、主観画質を向上させることができる。
【0557】
なお、本実施の形態では、無彩色値域のオフセット精度の向上、およびクラス分割の細分化を行っているが、これに限らず、主観画質に影響しそうな範囲の値に対して、クラス分割を細分化したり、オフセット精度を向上させたりすれば、主観画質を向上させることができる。また、輝度の画素値においても、主観画質上、画質劣化が目立ちやすい画素値域に対して、同様にオフセット精度を上げたり、クラス分割を細分化したりする構成でも同様の効果を奏することができる。
【0558】
まず、オフセットの精度を向上させる場合について、
図35を参照して説明する。
図35は、オフセットの精度を向上させる場合についての概要を示す図である。
図35に示すように、オフセットの精度を向上させる場合、色差の画素値128付近のオフセットの精度を高精度にし、これ以外の値域のオフセットの精度を低精度とする。
【0559】
また、オフセット情報格納部621は、オフセットが高精度の値域のオフセットについては、nBビット(例えばnB=8)の格納領域を確保し、オフセットが低精度の値域のオフセットについては、nAビット(例えばnA=6)の格納領域を確保している。なお、記憶領域に余裕があればnBビット統一してもよい。この場合は、実装が容易となる。
【0560】
また、オフセットクリップ部812は、オフセットが高精度の値域と低精度の値域とで、クリップ範囲を切り換える。例えば、オフセットが低精度の値域については、クリップ範囲を、-2nA/2~2nA/2-1とし、オフセットが高精度の値域については、クリップ範囲を、-2nB/2~2nB/2-1とする。
【0561】
次に、クラス分類を細分化する場合について、
図36を参照して説明する。
図36はクラス分類を細分化する場合の概要を示す図であり、(a)は変換テーブルを示し、(b)~(d)はクラス分割を説明するための図である。
【0562】
そして、クラス分類を細分化する場合は、オフセット情報格納部621における色差用のリストメモリにおいて、“sao_type_idx”=5に相当するオフセット格納領域を、クラス分類数に応じて確保する。
【0563】
また、クラス分類部624において、BOの場合に、画素値からクラスを導出する際に、対象画素の画素値が無彩色値域かどうかを含めて判定する。具体的には、例えば
図36(a)に示す変換テーブル2501のいずれかを用いて、クラス分類を行う。
【0564】
変換テーブル2501では、“class_idx = BoTbl[sao_type_idx][pic[x]/4]”により、クラス分類を行っており、
図29の変換テーブル1301、1302よりも、より細かい画素値に対してクラスが割り当てられている。
【0565】
また、変換テーブル2501の「BoTbl[BO_0][pix/4](a)」では、クラスを16個に分け、無彩色値域を細分化し、中間階調域(pix/4=16~21,42~47)を粗くした例を示している(
図36(b))。また、「BoTbl[BO_0][pix/4](b)」では、クラスを16個に分けるとともに、オフセット有りの値域を狭め、クラス数とクラス幅の最大値を維持しつつ無彩色値域を細分化した例を示している(
図36(c))。また、「BoTbl[BO_0][pix/4](c)」では、クラスを18個に分け、無彩色付近の値域を細分化するとともに、クラス幅の最大値も維持した例を示している(
図36(d))。また、この他にも例を挙げれば、中間階調域のクラス幅を無彩色値域のクラス幅よりも相対的に大きくし、全体のクラス数を減らすことで、無彩色値域の補正精度を従来通り保ったまま、オフセット格納領域を削減することができる。これは、中間階調域におけるオフセット補正の使用頻度が、無彩色領域よりも低いことから可能である。
【0566】
また、オフセットの精度向上と、無彩色値域におけるクラス分類の細分化とを併用した構成であってもよい。
【0567】
また、輝度を示す画素値と色差を示す画素値とで、オフセットの精度を異ならせる構成、すなわち、色差を示す画素値に対するオフセットの精度を、輝度を示す画素値に対するオフセットの精度より粗くする構成であってもよい。
【0568】
(付記事項7)
また、オフセットの加算を、無彩色(=色差の画素値128)に近づける方向に行う構成であってもよい。すなわち、オフセット加算部626は、画素値が128以上と128未満とで、加算するオフセットの符号を逆にして扱ってもよい。例えば、オフセットa のとき、x’=x+a(x<128),x’=x-a(x≧128)としてもよい。
【0569】
また、オフセット加算後の画素値が128をまたぐような場合、128でクリップする構成であってもよい。例えば、画素値が「126(緑の側)」で、オフセットが「3」のときに、そのままオフセットを加算して、x=126+3=129とせずに、x=clip(126+3,0,128)=128としてもよい。ここで、clip(x,y,z)は、xの値をy≦x≦zに制限する処理を示す。
【0570】
また、例えば、画素値が「129(赤の側)」で、オフセットが「-4」のときも、そのままオフセットを加算して、x=129+(-4)=125とせずに、x=clip(129+(-4),128,255)=128としてもよい。
【0571】
(付記事項8)
また、色差において、中間階調域とその他の値域とに分けてオフセットを加算する構成であってもよい。例えば、
図37(a)に示すように、無彩色の画素値を考慮してクラス分類を行ってもよい。
図37(a)に示す例では、“sao_type_idx”=5(BO_0)の場合、中間階調域にクラスが割り当てられ、“sao_type_idx”=6(BO_1)の場合、中間階調域以外の値域にクラスが割り当てられている。
【0572】
また、
図37(b)に示すように、無彩色の画素値を挟む2つの値域で非対称にクラス分類されていてもよい。
図37(b)に示す例では、
図37(a)に示す例とクラスの幅は同じで区切りの位置が変更されている。
【0573】
また、
図37(c)、(d)に示すように、色差のチャネル(CrおよびCb)ごとに、異なるクラス分類を用いてもよい。
図37(c)、(d)に示す例では、色差(Cr)と色差(Cb)とでクラスの幅が異なっている。クラス幅の変更は、変換テーブル2501のようにクラス数を細分化することで可能である。
【0574】
また、
図37(e)に示すように、色差では、BOのタイプを1つにしてクラス分類を行う構成であってもよい。
【0575】
〔実施の形態7〕
本発明の他の実施の形態について
図38~40に基づいて説明すれば、以下のとおりである。本実施形態において、上記実施形態と異なるのは、オフセットの値そのものではなく、オフセットの値を予測符号化、すなわち、オフセットの値と当該オフセットの値の予測値とを用いて算出されるオフセット残差を符号化する点、およびオフセット予測値に「0」を設ける点である。
【0576】
一般的にSAOでは、領域分類を示すクラスに応じてオフセットを符号化する。当該クラスに分類される画素が無い(クラスが空である)場合には「0」が符号化される。通常、近傍クラスおよび近傍領域のオフセットは近い値を有するため、既に復号したオフセット値を予測値とし差分を符号化すれば、符号量を削減することが可能である。しかしながら、クラスが空である場合には、逆に符号量が増加してしまう。
【0577】
そこで、本実施形態では、オフセットの予測値に「0」を含め、「0」を含む複数の予測値候補から1つの予測値を選択し、予測差分を符号化することによりオフセットの符号量を低減している。
【0578】
これにより、クラスが空であっても、当該クラスに分類される画素が有り、オフセットが符号化される場合であっても、適した予測値を割り当てることができるため、予測符号化により符号量を削減することができる。
【0579】
本実施形態に係るオフセット情報復号部611’の構成について、
図38を参照して説明する。オフセット情報復号部611’は、
図22のオフセット情報復号部611の代わりに設けられているものであり、オフセット残差復号部651、オフセット復元部652、予測値導出部653を含む構成である。また、予測値導出部653は、予測候補フラグ復号部661、固定予測値算出部662、符号化予測値算出部663、および予測値候補選択部664を含む構成である。
【0580】
オフセット残差復号部651は、符号化データ#1に含まれるQAOU情報からオフセット残差を復号し、復号したオフセット残差をオフセット復元部652へ供給する。
【0581】
予測値導出部653は、オフセットの予測値を導出する。予測候補フラグ復号部661は、予測候補フラグをQAOU情報から復号し、復号した予測候補フラグを予測値候補選択部664に供給する。なお、予測候補フラグ復号部661は、以前に復号されたオフセット値が「0」である場合には、予測候補フラグを復号しない構成であってもよい。
【0582】
固定予測値算出部662は、当該クラスに分類される画素が無い場合に符号化されるオフセットである固定値(ここでは「0」)を予測値として算出し、予測値候補選択部664に供給する。
【0583】
符号化予測値算出部663は、既に復号されたオフセットをオフセット情報格納部621から読み出し予測値を算出し、予測値候補選択部664に供給する。
【0584】
予測値候補選択部664は、予測候補フラグに応じて、固定予測値算出部662から供
給された予測値および符号化予測値算出部663から供給された予測値から、オフセット復元部652に供給する予測値を選択する。
【0585】
オフセット復元部652は、予測値候補選択部664から供給された予測値(pred)とオフセット残差復号部651から供給されたオフセット残差(sao_offset)とから、次の式にしたがって、オフセット(Offset)を復元する。
“Offset”=“pred”+“sao_offset”
ここで、分類される画素がないクラス(空のクラス)がある場合に、符号量が増えてしまう理由について、
図39を参照して説明する。
図39は、空のクラスがある場合の概要を示す図である。
図39に示すように、空でないクラスには、当該クラスのオフセットが符号化されている。そして、クラス毎に、前回のオフセットを予測値として該予測値とオフセットとの差分が符号化される。しかしながら、空のクラスがあると、予測値が「0」となり、差分値が大きくなってしまう。これにより、符号量が増大してしまう。
【0586】
そこで、本実施形態では、予測候補フラグにより、予測値を「0」と「直前の(0以外の)オフセット」とから選択できるようにしている。
【0587】
予測候補フラグを用いる場合のシンタクスについて、
図40を参照して説明する。
図40は、予測候補フラグを用いる場合のシンタクス2901を示す図である。
図40に示すように、予測候補フラグ“sao_pred_flag”を追加し、“sao_pred_flag”=0であれば直前に復号した(0でない)オフセットを予測値offsetpとし、“sao_pred_flag”=1か、または最初のオフセットであれば、予測値offsetp=0とする。なお、シンタクス2901において、“sao_offset_delta”は予測値からの差分dを表し、“sao_offset[sao_curr_depth][ys][xs]”=“offsetp +d”となる。
【0588】
なお、オフセットタイプに応じて、予測候補フラグを用いない構成としてもよい。例えば、EOの場合は、予測候補フラグを用いず、BOの場合は、予測候補フラグを用いる構成にしてもよい。これは、BOでは、画素値の分布次第で、空のクラスがしばしば発生するためである。
【0589】
また、オフセットタイプに応じて、予測符号化自体を行うか否か決定する構成であってもよい。例えば、EOの場合は、予測符号化を行い、BOの場合は予測符号化を行わない構成であってもよい。
【0590】
(付記事項9)
また、上記実施の形態3~7において、イントラ予測モードを用いて、LCU単位で、エッジオフセットのクラスを推定したり、制限したり、並べ替えを行ったりしてもよい。
【0591】
SAOのEOタイプとして選択されるエッジ方向は、イントラ予測モードと相関があると考えられる。このため、SAOのQAOUと対応する位置にあるCUのイントラ予測モードを参照すれば、EOクラスの選択に利用することができる。
【0592】
例えば、イントラ予測モードにより、EOクラスを推定して決定したり、EOクラスの候補を制限したり、あるいは、EOクラスの順序(インデックス)を、選択される可能性が高い順に並べ替えたりすることができる。
【0593】
これは、SAOの各階層のブQAOUのサイズがCUと同じサイズの場合、例えばSAOのQAOUの最大サイズがLCUサイズに等しくなるように画像が分割される場合であれば、特に容易に実現可能である。
【0594】
(付記事項10)
従来の適応オフセットフィルタでは、オフセットの種類(タイプ、クラス)が多いため、大きなメモリサイズが必要となってしまう可能性がある。そこで、本実施の形態では、メモリサイズの増大を抑制しつつ、ブロック歪みを低減することのできる画像フィルタ装置等を実現している。
【0595】
本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値に、複数のオフセットの中から選択したオフセットを加算する画像フィルタ装置であって、各単位領域に含まれる画素の画素値に加算するオフセットを該単位領域ごとに決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、当該単位領域に含まれる画素の画素値に加算するフィルタ手段と、を備え、上記オフセット決定手段は、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも選択できるオフセット数が制限されたオフセットの中から当該単位領域に含まれる画素の画素値に加算するオフセットを決定することを特徴としている。
【0596】
上記の構成によれば、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも制限されたオフセットの中から、加算するオフセットが決定される。
【0597】
単位領域のサイズが小さい場合、その中に含まれる画素数は少なくなり、また、その画素同士は、近似した値を持っている可能性が高い。よって、単位領域のサイズが小さい場合は、選択可能なオフセット数を制限したとしても、オフセット適用後の画像に与える影響は小さい。また、選択可能なオフセット数を制限することで、必要なメモリの容量を減らすことができる。
【0598】
したがって、上記の構成によれば、オフセット適用後の画像に与える影響を低くしつつ、メモリの使用量を削減することができる。また、選択可能なオフセット数が少なくなることで、符号量が削減でき、符号化効率が向上する。
【0599】
上記課題を解決するために、本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタ装置であって、各単位領域に含まれる画素の画素値に加算するオフセットを該単位領域ごとに決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットを、当該単位領域に含まれる画素の画素値に加算するフィルタ手段と、を備え、上記フィルタ手段は、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも精度を粗くしたオフセットを加算することを特徴としている。
【0600】
上記の構成によれば、オフセットの決定対象となる単位領域のサイズが所定の大きさよりも小さい場合、単位領域のサイズが所定の大きさ以上の場合よりも精度が粗いオフセットが加算される。
【0601】
単位領域のサイズが小さい場合、その中に含まれる画素数は少なくなり、また、その画素同士は、近似した値を持っている可能性が高い。よって、単位領域のサイズが小さい場合は、オフセットの精度を粗くしても、量子化誤差に与える影響が小さい。したがって、オフセット適用後の画像に与える影響も小さい。また、オフセットの精度を粗くすることで、必要なメモリの容量を減らすことができる。
【0602】
したがって、上記の構成によれば、オフセット適用後の画像に与える影響を低くしつつ、メモリの使用量を削減することができる。また、オフセットの精度が粗くなることで、符号量が削減でき、符号化効率が向上する。
【0603】
本発明に係る画像フィルタ装置は、複数の単位領域から構成される入力画像の各画素値に、適応オフセット(SAO:Sample Adaptive Offset)を施す画像フィルタ装置であって、各単位領域に含まれる画素の画素値に加算するオフセットの種類を該単位領域ごとに決定するオフセット決定手段と、上記オフセット決定手段が決定したオフセットの種類に応じたオフセットを、当該単位領域に含まれる画素の画素値に加算するフィルタ手段と、を備え、上記オフセット決定手段は、オフセットを加算する対象画素の画素値が最大値および最小値の付近については、オフセットの種類をバンドオフセット(BO)に決定し、それ以外の値域の画素についてはエッジオフセット(EO)に決定することを特徴としている。
【0604】
上記の構成によれば、適応オフセットを施す場合に、画素値が、最大値および最小値の付近の画素に対しては、バンドオフセットが適用され、これ以外の値域の画素についてはエッジオフセットが適用される。
【0605】
高画素値域および低画素値域では、エッジよりも画素値の方が誤差に影響を及ぼし易いという傾向があるので、上記の構成により、誤差補正の効率が高まり、符号化効率を向上させることができる。
【0606】
また、1つのタイプでバンドオフセットとエッジオフセットとを併用すれば、適応オフセットのタイプ数を減らすことができ、メモリの使用量および処理量を削減することができる。
【0607】
なお、上記の構成において、バンドオフセットとは、処理対象の画素の画素値の大きさに応じて、当該処理対象画素の画素値に複数のオフセットの何れかを加算するオフセット処理のことをいう(以下同様)。また、上記の構成において、エッジオフセットとは、処理対象の画素の画素値と当該処理対象の画素の周辺の画素の画素値との差分に応じて、当該処理対象画素の画素値に複数のオフセットの何れかを加算するオフセット処理のことをいう(以下同様)。
【0608】
本発明に係る画像フィルタ装置では、上記オフセット決定手段は、画素値が最小値から最大値の4分の1までと、最大値の4分の3から最大値までの値域の画素については、バンドオフセットに決定し、これ以外の値域についてはエッジオフセットに決定するものであってもよい。
【0609】
上記の構成によれば、バンドオフセットが適用される画素とエッジオフセットが適用される画素とを明確に分けることができる。
【0610】
本発明に係る画像フィルタ装置は、入力画像に、適応オフセット(SAO:Sample Adaptive Offset)を施す画像フィルタ装置であって、エッジオフセット(EO)を適用するときのクラスを決定するために行うエッジの判定を、対象画素の水平方向に存在する画素のみを参照して行うクラス分類手段と、エッジオフセット(EO)を適用する場合、上記クラス分類手段が分類したクラスに対応するオフセットを加算するフィルタ手段と、を備えていることを特徴としている。
【0611】
上記の構成によれば、エッジの判定に、水平方向の画素しか参照しないので、上方向の画素も参照する場合と比較して、必要なメモリ量を削減することができる。また、上方向の境界判定が不要となるので、処理量も削減することができる。
【0612】
本発明に係る画像フィルタ装置では、上記クラス分類手段は、対象画素から水平方向に2画素離れた位置にある画素を参照してエッジの判定を行うものであってもよい。
【0613】
上記の構成によれば、対象画素から2画素離れた画素を参照するので、エッジの角度が浅い場合であっても、エッジを検出することができる。
【0614】
本発明に係る画像フィルタ装置は、入力画像に、適応オフセット(SAO:Sample Adaptive Offset)を施す画像フィルタ装置であって、色差を示す画素値が、最大値および最小値の中央の値である中央値付近のクラスの分割幅を、その他の値域よりも細分化して、バンドオフセット(BO)を適用するときのクラスを決定するクラス分類手段と、バンドオフセット(BO)を適用する場合、上記クラス分類手段が分類したクラスに対応するオフセットを加算するフィルタ手段と、を備えていることを特徴としている。
【0615】
上記の構成によれば、色差を示す画素値が、最大値および最小値の中央の値である中央値付近のクラスの分割幅を、その他の値域よりも細分化して、バンドオフセット(BO)を適用するときのクラスを決定される。
【0616】
色差の画素値が中央値のとき、当該画素は無彩色となる。無彩色の誤差は、人の目に付き易く、主観画質が低下する。そこで、上記の構成のように、中央値近辺のクラス幅を細分化すれば、中央値近辺の画素に対し、細かくオフセットを設定することができる。これにより、主観画質を向上させることができる。
【0617】
本発明に係る画像フィルタ装置では、上記フィルタ手段は、オフセット加算前の画素値と加算後の画素値との間に、上記中央値が存在する場合、オフセット加算後の画素値を上記中央値とするものであってもよい。
【0618】
上記の構成によれば、中央値を超えてオフセットが加算されることはなくなる。色差の画素値が中央値の画素は無彩色であり、中央値を挟んだ両側では、人の目で知覚できる色が変わってしまう。そこで、上記の構成によれば、オフセットが加算されたことにより、人が近くする色が変わってしまうことを防止することができる。
【0619】
本発明に係る画像フィルタ装置は、入力画像に、適応オフセット(SAO:Sample Adaptive Offset)を施す画像フィルタ装置であって、色差を示す画素値が、最大値および最小値の中央の値である中央値付近の画素に対し、その他の値域の画素よりも精度が高いオフセットを加算するフィルタ手段を備えていることを特徴としている。
【0620】
上記の構成によれば、色差を示す画素値が、最大値および最小値の中央の値である中央値付近の画素に対し、その他の値域の画素よりも精度が高いオフセットを加算する。
【0621】
色差の画素値が中央値のとき、当該画素は無彩色となる。無彩色の誤差は、人の目に付き易く、主観画質が低下する。そこで、上記の構成のように、中央値近辺では、加算するオフセットの精度を向上させれば、中央値近辺の画素に対し、細かくオフセットを加算することができる。これにより、主観画質を向上させることができる。
【0622】
本発明に係るオフセット復号装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを復号するオフセット復号装置であって、各オフセット残差を、符号化データから復号するオフセット残差復号手段と、各オフセットの予測値を、復号済みのオフセット、または予め定められた値から導出する予測値導出手段と、各オフセットを、上記予測値導出手段によって導出された予測値、および上記オフセット残差復号手段によって復号されたオフセット残差から算出するオフセット算出手段と、を備えていることを特徴としている。
【0623】
上記の構成によれば、残差からオフセットを復号するので、オフセットをそのまま符号化する場合よりも、符号量の少なくすることができる。また、残差を求めるための予測値を復号済みのオフセットまたは予め定められた値から導出するので、復号済みのオフセットのみを用いることにより、差分データの符号量が、そのまま符号化するときよりも大きくなってしまうことを防止することができる。
【0624】
なお、予め定められた値としては、例えば「0」を挙げることができる。
【0625】
本発明に係るオフセット符号化装置は、入力画像の各画素値にオフセットを加算する画像フィルタによって参照される各オフセットを符号化するオフセット符号化装置であって、各オフセットの予測値を、符号化済みのオフセット、または予め定められた値から導出する予測値導出手段と、各オフセットと上記予測値導出手段によって導出された予測値とからオフセット残差を算出するオフセット残差算出手段と、上記オフセット残差算出手段によって算出されたオフセット残差を符号化するオフセット残差符号化手段と、を備えていることを特徴としている。
【0626】
上記の構成によれば、残差からオフセットを復号するので、オフセットをそのまま符号化する場合よりも、符号量の少なくすることができる。また、残差を求めるための予測値を復号済みのオフセットまたは予め定められた値から導出するので、復号済みのオフセットのみを用いることにより、差分データの符号量が、そのまま符号化するときよりも大きくなってしまうことを防止することができる。
【0627】
本発明に係る符号化データのデータ構造は、複数の単位領域から構成される入力画像の各画素値にオフセットを加算する画像フィルタによって参照される符号化データのデータ構造であって、予測値を、復号済みのオフセットおよび予め定められた値のいずれから導出するかを示す予測値導出情報を含み、上記画像フィルタは、上記符号化データに含まれる予測値導出情報を参照して、予測値を導出し、オフセットを復号する、ことを特徴としている。
【0628】
上記の構成によれば、予測値を、復号済みのオフセットとするか、または予め定められた値とするかを、予測値導出情報により決定できる。
【0629】
(応用例)
上述した動画像復号装置1(1’)および動画像符号化装置2(2’)は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい)。
【0630】
まず、上述した動画像復号装置1および動画像符号化装置2を、動画像の送信および受信に利用できることを、
図45を参照して説明する。
【0631】
図45(a)は、動画像符号化装置2を搭載した送信装置Aの構成を示したブロック図である。
図45(a)に示すように、送信装置Aは、動画像を符号化することによって符号化データを得る符号化部A1と、符号化部A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部A2と、変調部A2が得た変調信号を送信する送信部A3と、を備えている。上述した動画像符号化装置2は、この符号化部A1として利用される。
【0632】
送信装置Aは、符号化部A1に入力する動画像の供給源として、動画像を撮像するカメラA4、動画像を記録した記録媒体A5、動画像を外部から入力するための入力端子A6、および画像を生成または加工する画像処理部A7を更に備えていてもよい。
図45(a)においては、これら全てを送信装置Aが備えた構成を例示しているが、一部を省略しても構わない。
【0633】
なお、記録媒体A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体A5と符号化部A1との間に、記録媒体A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
【0634】
図45(b)は、動画像復号装置1を搭載した受信装置Bの構成を示したブロック図である。
図45(b)に示すように、受信装置Bは、変調信号を受信する受信部B1と、受信部B1が受信した変調信号を復調することによって符号化データを得る復調部B2と、復調部B2が得た符号化データを復号することによって動画像を得る復号部B3と、を備えている。上述した動画像復号装置1は、この復号部B3として利用される。
【0635】
受信装置Bは、復号部B3が出力する動画像の供給先として、動画像を表示するディスプレイB4、動画像を記録するための記録媒体B5、および、動画像を外部に出力するための出力端子B6を更に備えていてもよい。
図45(b)においては、これら全てを受信装置Bが備えた構成を例示しているが、一部を省略しても構わない。
【0636】
なお、記録媒体B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部B3と記録媒体B5との間に、復号部B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
【0637】
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、および有線通信の何れによって実現してもよい。
【0638】
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置A/受信装置Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置A/受信装置Bの一例である。
【0639】
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置A/受信装置Bの一例である(通常、LANにおいては伝送媒体として無線または有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、およびタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
【0640】
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置Aおよび受信装置Bの双方として機能する。
【0641】
次に、上述した動画像復号装置1および動画像符号化装置2を、動画像の記録および再生に利用できることを、
図46を参照して説明する。
【0642】
図46(a)は、上述した動画像符号化装置2を搭載した記録装置Cの構成を示したブロック図である。
図46(a)に示すように、記録装置Cは、動画像を符号化することによって符号化データを得る符号化部C1と、符号化部C1が得た符号化データを記録媒体Mに書き込む書込部C2と、を備えている。上述した動画像符号化装置2は、この符号化部C1として利用される。
【0643】
なお、記録媒体Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
【0644】
また、記録装置Cは、符号化部C1に入力する動画像の供給源として、動画像を撮像するカメラC3、動画像を外部から入力するための入力端子C4、動画像を受信するための受信部C5、および、画像を生成または加工する画像処理部C6を更に備えていてもよい。
図46(a)においては、これら全てを記録装置Cが備えた構成を例示しているが、一部を省略しても構わない。
【0645】
なお、受信部C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部C5と符号化部C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
【0646】
このような記録装置Cとしては、例えば、DVDレコーダ、BDレコーダ、HD(Hard Disk)レコーダなどが挙げられる(この場合、入力端子C4または受信部C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラC3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部C5または画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラC3または受信部C5が動画像の主な供給源となる)なども、このような記録装置Cの一例である。
【0647】
図46(b)は、上述した動画像復号装置1を搭載した再生装置Dの構成を示したブロックである。
図46(b)に示すように、再生装置Dは、記録媒体Mに書き込まれた符号化データを読み出す読出部D1と、読出部D1が読み出した符号化データを復号することによって動画像を得る復号部D2と、を備えている。上述した動画像復号装置1は、この復号部D2として利用される。
【0648】
なお、記録媒体Mは、(1)HDDやSSDなどのように、再生装置Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
【0649】
また、再生装置Dは、復号部D2が出力する動画像の供給先として、動画像を表示するディスプレイD3、動画像を外部に出力するための出力端子D4、および、動画像を送信する送信部D5を更に備えていてもよい。
図46(b)においては、これら全てを再生装置Dが備えた構成を例示しているが、一部を省略しても構わない。
【0650】
なお、送信部D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部D2と送信部D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
【0651】
このような再生装置Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイD3が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子D4または送信部D5が動画像の主な供給先となる)、ラップトップ型またはタブレット型PC(この場合、ディスプレイD3または送信部D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイD3または送信部D5が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイD3または送信部D5が動画像の主な供給先となる)なども、このような再生装置Dの一例である。
【0652】
(ソフトウェアによる構成)
最後に、動画像復号装置1(1’)および動画像符号化装置2(2’)の各ブロック、特に可変長符号復号部13、動きベクトル復元部14、インター予測画像生成部16、イントラ予測画像生成部17、予測方式決定部18、逆量子化・逆変換部19、デブロッキングフィルタ41、適応フィルタ50、適応オフセットフィルタ60(60’)、変換・量子化部21、可変長符号符号化部22、逆量子化・逆変換部23、イントラ予測画像生成部25、インター予測画像生成部26、動きベクトル検出部27、予測方式制御部28、動きベクトル冗長性削除部29、デブロッキングフィルタ33、適応フィルタ70、適応オフセットフィルタ80(80’)は、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現していてもよいし、CPU(central processing unit)を用いてソフトウェア的に実現してもよい。
【0653】
後者の場合、動画像復号装置1および動画像符号化装置2は、各機能を実現する制御プログラムの命令を実行するCPU、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである動画像復号装置1および動画像符号化装置2の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記の動画像復号装置1および動画像符号化装置2に供給し、そのコンピュータ(またはCPUやMPU(micro processing unit))が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
【0654】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(compact disc read-only memory)/MOディスク(magneto-optical disc)/MD(Mini Disc)/DVD(digital versatile disc)/CD-R(CD Recordable)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(erasable programmable read-only memory)/EEPROM(electrically erasable and programmable read-only memory)(登録商標)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
【0655】
また、動画像復号装置1および動画像符号化装置2を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(local area network)、ISDN(integrated services digital network)、VAN(value-added network)、CATV(community antenna television/cable television)通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(institute of electrical and electronic engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(asymmetric digital subscriber loop)回線等の有線でも、IrDA(infrared data association)やリモコンのような赤外線、Bluetooth(登録商標)、IEEE802.11無線、HDR(high data rate)、NFC(Near Field Communication)、DLNA(登録商標)(Digital Living Network Alliance)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【0656】
本発明は上述した各実施の形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0657】
本発明は、画像データにオフセットフィルタリングを行う画像フィルタに好適に用いることができる。また、符号化データを復号する復号装置、および、符号化データを符号化する符号化装置に好適に適用することができる。
【符号の説明】
【0658】
1 動画像復号装置(復号装置)
41 デブロッキングフィルタ
50 適応フィルタ
60、60’ 適応オフセットフィルタ(画像フィルタ装置)
611、611’ オフセット情報復号部(オフセット復号装置、決定手段、オフセット属性設定手段、オフセット復号手段、オフセット残差復号手段、予測値導出手段)
612 QAOU構造復号部
613 オフセット属性設定部(オフセット属性設定手段)
621 オフセット情報格納部
622 QAOU制御部
623 オフセットタイプ導出部
624 クラス分類部(算出手段、ビットシフト手段、分類手段)
625 オフセット導出部(オフセット逆シフト手段)
626 オフセット加算部(オフセット手段)
2 動画像符号化装置(符号化装置)
33 デブロッキングフィルタ
70 適応フィルタ
80、80’ 適応オフセットフィルタ(画像フィルタ装置)
811 オフセット算出部
812 オフセットクリップ部
813 オフセット情報選択部
814 オフセット残差導出部
815 オフセット属性設定部(オフセット属性設定手段)
816 オフセットシフト部(オフセットシフト手段)
【手続補正書】
【提出日】2024-10-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
符号化データを記憶するための装置であって、少なくとも1つの記憶媒体と、少なくとも1つの通信インターフェースとを備え、
前記少なくとも1つの通信インターフェースは、前記符号化データを受信または送信するように構成され、
前記少なくとも1つの記憶媒体は、前記符号化データを記憶するように構成され、前記符号化データは、
複数の単位領域から構成される入力画像の単位領域の画素ビット深度(PIC_DEPTH)と、
複数のオフセットを含むオフセットグループであって、符号および絶対値が各オフセットを指定する、オフセットグループと
を含み、
前記画素ビット深度(PIC_DEPTH)が10ビット以下の場合、前記絶対値の最大ビット数はPIC_DEPTH-K-1に等しく、前記Kの値は4に等しく、
前記画素ビット深度(PIC_DEPTH)が11ビット以上の場合、前記絶対値の最大ビット数は5に等しい、装置。
【請求項2】
前記符号化データは、単位領域が属するオフセットタイプを指定する情報を含む、請求項1に記載の装置。
【請求項3】
前記オフセットタイプは、エッジオフセットまたはバンドオフセットである、請求項2に記載の装置。
【請求項4】
各オフセットは、符号付きの数値である、請求項1から3のいずれか一項に記載の装置。
【請求項5】
前記オフセットを形成する前記符号および前記絶対値に対して、可変長符号化が行われる、請求項4に記載の装置。
【請求項6】
各オフセットに対して、ビット単位の右シフトが行われる、請求項1から5のいずれか一項に記載の装置。
【請求項7】
前記ビット単位の右シフトのシフト値は、前記画素ビット深度(PIC_DEPTH)に基づいて決定される、請求項6に記載の装置。
【請求項8】
動画像符号化方法であって、
入力画像のオフセットを決定するステップであって、符号および絶対値が各オフセットを指定する、ステップ
を含み、
前記入力画像の画素ビット深度(PIC_DEPTH)が10ビット以下の場合、前記絶対値の最大ビット数はPIC_DEPTH-K-1に等しく、前記Kの値は4に等しく、
前記入力画像の前記画素ビット深度(PIC_DEPTH)が11ビット以上の場合、前記絶対値の最大ビット数は5に等しく、
符号化データを生成するステップであって、前記符号化データは、前記画素ビット深度(PIC_DEPTH)および前記オフセットを含む、ステップ
を含む、動画像符号化方法。
【請求項9】
前記符号化データは、単位領域が属するオフセットタイプを指定する情報を含む、請求項8に記載の方法。
【請求項10】
前記オフセットタイプは、エッジオフセットまたはバンドオフセットである、請求項9に記載の方法。
【請求項11】
各オフセットは、符号付きの数値である、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記オフセットを形成する前記符号および前記絶対値に対して、可変長符号化が行われる、請求項11に記載の方法。
【請求項13】
各オフセットに対して、ビット単位の右シフトが行われる、請求項8から12のいずれか一項に記載の方法。
【請求項14】
前記ビット単位の右シフトのシフト値は、前記画素ビット深度(PIC_DEPTH)に基づいて決定される、請求項13に記載の方法。
【請求項15】
請求項8から14のいずれか一項に記載の方法を実施するための処理回路を備える、符号化装置。
【請求項16】
符号化装置であって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合され、前記1つまたは複数のプロセッサによる実行のためのプログラムを記憶する非一時的なコンピュータ可読記憶媒体であって、前記プログラムは、前記1つまたは複数のプロセッサによって実行されたとき、請求項8から14のいずれか一項に記載の方法を実施するように前記符号化装置を構成する、非一時的なコンピュータ可読記憶媒体と
を備える、符号化装置。
【請求項17】
コンピュータまたはプロセッサ上で実行されたとき、請求項8から14のいずれか一項に記載の方法を行うためのプログラムコードを含む、コンピュータプログラム。
【請求項18】
コンピュータ装置によって実行されたとき、請求項8から14のいずれか一項に記載の方法を前記コンピュータ装置に行わせるプログラムコードを記憶した、非一時的なコンピュータ可読媒体。