(57)【要約】【課題】画像の特性に応じてフィルタ処理を行うことによって、効率よく適切に画像を符号化することができる画像符号化装置及び画像を復号することができる画像復号装置を提供すること。【解決手段】復号された画像データに対して、フィルタパラメータを利用してフィルタ処理を行う場合に、フィルタ処理の対象となる画素付近の勾配値を算出し、算出された勾配に応じて、フィルタパラメータの組から１つのフィルタパラメータを選択し、選択されたフィルタパラメータからフィルタ処理の重み係数を算出する。そして、処理対象となる画素値と、その周辺の画素値と、前記算出された重み係数を用いて、処理対象画素の補正後の画素値を算出する。【選択図】図１
2010154264.tif 000002
【特許請求の範囲】
【請求項１】
符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置であって、
フィルタパラメータの組を保存するフィルタパラメータ保存手段と、
前記フィルタパラメータ保存部に保存されたフィルタパラメータを利用して前記画像データにフィルタ処理を行うフィルタ手段と、
を備え、
前記フィルタ手段は、
フィルタ処理の対象となる画素付近の勾配値を算出する勾配値算出手段と、
算出された勾配に応じて、フィルタパラメータの組から１つのフィルタパラメータを選択する選択手段と、
前記選択手段により選択されたフィルタパラメータからフィルタ処理の重み係数を算出する重み係数算出手段と、
処理対象となる画素値と、その周辺の画素値と、前記算出された重み係数を用いて、処理対象画素の補正後の画素値を算出する画素値算出手段と、
を備えることを特徴とする画像復号装置。
【請求項２】
前記復号手段は、前記符号化データからフィルタパラメータの組を更に復号し、
前記フィルタ手段は、前記復号手段により復号されたフィルタパラメータを利用して前記画像データにフィルタ処理を行うことを特徴とする請求項１に記載の画像復号装置。
【請求項３】
前記復号手段は、前記符号化データからサイズの異なる複数のブロックに関する情報を更に復号し、
前記フィルタ手段は、前記ブロック毎に画像データにフィルタ処理を行うことを特徴とする請求項１又は２に記載の画像復号装置。
【請求項４】
前記勾配値算出手段は、フィルタ処理の対象となるブロックの変換係数の大きさと、フィルタ対象画素とその周囲の画素の差分の大きさを用いて、勾配値を算出することを特徴とする請求項１から３の何れかに記載の画像復号装置。
【請求項５】
前記勾配値算出手段は、ブロックのサイズが、所定のサイズ以上の場合において、フィルタ処理の対象となるブロックの変換係数の大きさと、フィルタ対象画素とその周囲の画素の差分の大きさを用いて、勾配値を算出することを特徴とする請求項１から３の何れかに記載の画像復号装置。
【請求項６】
前記画素値算出手段は、ブロックに分割して符号化された画像情報を復号する際に、あるブロックと当該あるブロックに隣接する隣接ブロックとの境界近傍に位置する上記あるブロックに属する処理対象画素の画素値を補正する手段であって、
前記勾配値算出手段は、ブロックのサイズが、所定のサイズ以上の場合において、あるブロックに属する２つ以上の画素の画素値間の差分の大きさと、また、隣接ブロックに属する２つ以上の画素の画素値間の差分の大きさから、勾配値を算出することを特徴とする請求項１から３の何れかに記載の画像復号装置。
【請求項７】
符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置であって、
前記復号手段は、予測残差信号の可変長符号化方法を切り替えるフラグを復号する復号手段を備え、
前記予測残差信号は、サイズの異なる複数のブロックに分割して符号化された信号であって、
前記復号手段は、所定のサイズよりも大きいブロックサイズに対しては、逆変換手段に入力する変換係数の数よりも、前記符号化データに含める変換係数の数の方が小さくなることを特徴とする復号手段であって、可変長符号化方法を切り替えるフラグによって、前記変換係数の数を変更する復号手段を備えることを特徴とする画像復号装置。
【請求項８】
符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置であって、
前記予測残差信号は、サイズの異なる複数のブロックに分割して符号化された信号であって、
前記復号手段は、所定のサイズよりも大きいブロックサイズに対しては、逆変換手段に入力する変換係数の数よりも、前記符号化データに含める変換係数の数の方が小さくなることを特徴とする復号手段であって、前記変換係数の数を変更する復号手段を備えることを特徴とする画像復号装置。
【請求項９】
前記予測残差信号の復号において、前記復号手段は、所定の数以上の予測残差信号を復号する時点で、復号された予測残差信号の値の線形和により算出される指数を算出する手段を備え、前記指数が所定の値よりも大きいかに応じて、前記符号化データに含める変換係数の位置を変更する手段を備えることを特徴とする請求項７又は８に記載の画像復号装置。
【請求項１０】
局所復号画像を生成する復号画像生成手段を備える画像符号化装置であって、
前記局所復号画像上のある算出対象画素付近の勾配値を算出する勾配値算出手段と、
前記算出対象となる画素値と、その周辺の画素値と、入力画像の対象画素と同じ位置の画素値から、学習データを算出し、勾配毎に保存する学習データ算出保存手段と、
前記学習データ算出保存手段により保存された勾配毎の学習データを用いて、勾配毎のフィルタパラメータを算出するフィルタパラメータ算出手段と、
を備えることを特徴とする画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置等に関する。
【背景技術】
【０００２】
画像符号化技術は、テレビジョン受像機から画像処理の可能な携帯電話まで、身近にある多くの映像機器に応用されている。
【０００３】
画像符号化技術の分野では、一般に、画像データ（画像情報）を複数のブロックに分割し、分割したブロック単位で直交変換を行い、得られた変換係数を量子化した上で、量子化された変換係数の可変長符号化により符号化する。このような符号化方法では、量子化において情報が損失することにより、画像の劣化が生じる。特に、直交変換を実行する単位である各ブロックの境界において生じる大きな歪み（いわゆる、ブロックノイズ）により、画像に大きな劣化が生じやすい。画像符号化処理において各ブロックの境界にブロックノイズが生じると、符号化された画像を復号した際にもブロックノイズが生じるため、画像を視聴するユーザーが不自然さを感じ易くなる。したがって、一般的な画像復号装置（または画像符号化装置）では、ブロックノイズを除去するために、各ブロックの境界に生じるブロックノイズをフィルタ処理する。
【０００４】
例えば、非特許文献１には、基本的なフィルタ処理技術について開示されている。非特許文献１に記載のフィルタ処理技術について、図２２を参照しつつ以下に説明する。図２２は、ブロック境界における画素および当該画素の画素値を模式的に示した図である。
【０００５】
図２２では、画素値ｐ０である画素Ｐ０と、画素値ｑ０である画素Ｑ０との間がブロックの境界であるとし、境界から離れるに従って、画素Ｐ１、Ｐ２、Ｐ３、および、画素Ｑ１、Ｑ２、Ｑ３としている。また、各画素における画素値を、それぞれ、画素値ｐ１、ｐ２、ｐ３、および、画素値ｑ１、ｑ２、ｑ３としている。
【０００６】
すなわち、図２２では、ブロック境界において隣接する２つのブロックのうち、一方のブロックの画素値を画素値ｐｋ（ｋは境界からの距離により定められる値）、他方のブロックの画素値を画素値ｑｋ（ｋは境界からの距離により定められる値）として表している。なお、図２２では、境界が水平方向の境界であるのか、または垂直方向の境界であるのかについては区別していない。
【０００７】
また、非特許文献１には、複数のフィルタ処理について開示されているが、本明細書等においては、ＢＳ＝４と称されるモードを利用したフィルタ処理を例に挙げて説明する。
【０００８】
ＢＳ＝４では、下記の式（０−１）および式（０−２）を用いて、境界の状態を示す値「ｄ」および「ａｐ」を算出する。
ｄ＝ＡＢＳ（ｐ０−ｑ０）      ・・・（０−１）
ａｐ＝ＡＢＳ（ｐ２−ｐ０）    ・・・（０−２）
【０００９】
次に、算出された「ｄ」および「ａｐ」が、所定の閾値α、βに対して、ｄ＜α、かつ、ａｐ＜βである場合に以下のフィルタ処理を施す。
ｐ０´＝（ｐ２＋２×ｐ１＋２×ｐ０＋２×ｑ０＋ｑ１）／８
ｐ１´＝（ｐ２＋ｐ１＋ｐ０＋ｑ０）／４
ｐ２´＝（２×ｐ３＋３×ｐ２＋ｐ１＋ｐ０＋ｑ０）／８
【００１０】
そうではない場合には、以下のフィルタを施す。
ｐ０´＝（２×ｐ１＋ｐ０＋ｑ０）／４
【００１１】
このように、この技術では、ブロック境界付近の勾配の大きさａｐに応じて、フィルタのタップ数や係数、フィルタのかかる範囲を変えることによって、適応的に強度を変えることができる。
【００１２】
デブロッキングフィルタは基本的にローパスフィルタであるので、フィルタのタップ数が大きいほど、また、フィルタのかかる範囲が広いほど、ブロック歪みを除去する効果は大きい。しかし、この場合逆に、画像がぼけるという性質がある。そのため、動画像の作成者や視聴者の好みによって、フィルタの強さを制御できることが望まれている。
【００１３】
また、非特許文献１の技術では、フィルタ処理の切り替えを制御する閾値α、βを、複数のマクロブロックを束ねたスライスを制御するための情報であるスライスヘッダに付加して伝送することによって、フィルタのかかり具合を制御することができる。
【非特許文献１】ＩＳＯ／ＩＥＣ１４４９６−１０
【発明の開示】
【発明が解決しようとする課題】
【００１４】
非特許文献１では、勾配の大きさに応じてフィルタ処理の切り替え方法を制御することができるため、ボケ具合とブロックノイズ除去効果の配分を制御することはできる。しかし、フィルタ係数を変更できないために、符号化効率を向上させることは困難であった。
【００１５】
また、勾配の大きさの評価値の算出に、境界周辺の画素のうち、フィルタがかかる側の画素だけを用いているため、ブロックサイズが大きくなった場合において、適切なフィルタがかからないという問題があった。
【００１６】
上述した課題に鑑み、本発明が目的とするところは、画像の特性に応じてフィルタ処理を行うことによって、効率よく適切に画像を符号化することができる画像符号化装置及び画像を復号することができる画像復号装置を提供することである。
【課題を解決するための手段】
【００１７】
上述した課題を解決するために、本発明の画像復号装置は、符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置であって、
フィルタパラメータの組を保存するフィルタパラメータ保存手段と、
前記フィルタパラメータ保存部に保存されたフィルタパラメータを利用して前記画像データにフィルタ処理を行うフィルタ手段と、
を備え、
前記フィルタ手段は、
フィルタ処理の対象となる画素付近の勾配値を算出する勾配値算出手段と、
算出された勾配に応じて、フィルタパラメータの組から１つのフィルタパラメータを選択する選択手段と、
前記選択手段により選択されたフィルタパラメータからフィルタ処理の重み係数を算出する重み係数算出手段と、
処理対象となる画素値と、その周辺の画素値と、前記算出された重み係数を用いて、処理対象画素の補正後の画素値を算出する画素値算出手段と、
を備えることを特徴とする。
【００１８】
また、本発明の画像復号装置において、
前記復号手段は、前記符号化データからフィルタパラメータの組を更に復号し、
前記フィルタ手段は、前記復号手段により復号されたフィルタパラメータを利用して前記画像データにフィルタ処理を行うことを特徴とする。
【００１９】
また、本発明の画像復号装置において、
前記復号手段は、前記符号化データからサイズの異なる複数のブロックに関する情報を更に復号し、
前記フィルタ手段は、前記ブロック毎に画像データにフィルタ処理を行うことを特徴とする。
【００２０】
また、本発明の画像復号装置において、
前記勾配値算出手段は、フィルタ処理の対象となるブロックの変換係数の大きさと、フィルタ対象画素とその周囲の画素の差分の大きさを用いて、勾配値を算出することを特徴とする。
【００２１】
また、本発明の画像復号装置において、
前記勾配値算出手段は、ブロックのサイズが、所定のサイズ以上の場合において、フィルタ処理の対象となるブロックの変換係数の大きさと、フィルタ対象画素とその周囲の画素の差分の大きさを用いて、勾配値を算出することを特徴とする。
【００２２】
また、本発明の画像復号装置において、
前記画素値算出手段は、ブロックに分割して符号化された画像情報を復号する際に、あるブロックと当該あるブロックに隣接する隣接ブロックとの境界近傍に位置する上記あるブロックに属する処理対象画素の画素値を補正する手段であって、
前記勾配値算出手段は、ブロックのサイズが、所定のサイズ以上の場合において、あるブロックに属する２つ以上の画素の画素値間の差分の大きさと、また、隣接ブロックに属する２つ以上の画素の画素値間の差分の大きさから、勾配値を算出することを特徴とする。
【００２３】
本発明の画像復号装置は、符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置であって、
前記復号手段は、予測残差信号の可変長符号化方法を切り替えるフラグを復号する復号手段を備え、
前記予測残差信号は、サイズの異なる複数のブロックに分割して符号化された信号であって、
前記復号手段は、所定のサイズよりも大きいブロックサイズに対しては、逆変換手段に入力する変換係数の数よりも、前記符号化データに含める変換係数の数の方が小さくなることを特徴とする復号手段であって、可変長符号化方法を切り替えるフラグによって、前記変換係数の数を変更する復号手段を備えることを特徴とする。
【００２４】
本発明の画像復号装置は、符号化データから、予測残差信号及び予測信号を復号する復号手段と、前記復号手段により復号された予測残差信号を逆量子化及び逆変換することにより予測残差を生成する生成手段と、を有し、前記予測残差と、予測信号とから画像データを復号する画像復号装置であって、
前記予測残差信号は、サイズの異なる複数のブロックに分割して符号化された信号であって、
前記復号手段は、所定のサイズよりも大きいブロックサイズに対しては、逆変換手段に入力する変換係数の数よりも、前記符号化データに含める変換係数の数の方が小さくなることを特徴とする復号手段であって、前記変換係数の数を変更する復号手段を備えることを特徴とする。
【００２５】
また、本発明の画像復号装置は、前記予測残差信号の復号において、前記復号手段は、所定の数以上の予測残差信号を復号する時点で、復号された予測残差信号の値の線形和により算出される指数を算出する手段を備え、前記指数が所定の値よりも大きいかに応じて、前記符号化データに含める変換係数の位置を変更する手段を備えることを特徴とする。
【００２６】
本発明の画像符号化装置は、局所復号画像を生成する復号画像生成手段を備える画像符号化装置であって、
前記局所復号画像上のある算出対象画素付近の勾配値を算出する勾配値算出手段と、
前記算出対象となる画素値と、その周辺の画素値と、入力画像の対象画素と同じ位置の画素値から、学習データを算出し、勾配毎に保存する学習データ算出保存手段と、
前記学習データ算出保存手段により保存された勾配毎の学習データを用いて、勾配毎のフィルタパラメータを算出するフィルタパラメータ算出手段と、
を備えることを特徴とする。
【発明の効果】
【００２７】
画像の特性に応じたフィルタパラメータを、勾配値の大きさに応じて定め、フィルタパラメータからフィルタ処理の重み係数を制御することにより、画像を符号化する際の符号化効率を向上させることができる。また、効率的に符号化された画像を復号することができる。
【００２８】
また、勾配の大きさの評価値（勾配値）の算出に、変換係数を用いる、もしくは、境界周辺の画素のうち、フィルタがかかる側のブロックの画素だけではなく、その隣接画素も用いることにより、フィルタ対象画素周辺のブロックの特性を正確に測定し、フィルタ処理の精度を高めることができる。
【００２９】
また、逆変換手段に入力する変換係数の数よりも、画像情報に含める変換係数の数の方が小さくすることによって、符号化変換効率を高めることができる。また、画像情報に含める変換係数の数を、変換係数の可変長符号化方法により切り替える、もしくは、フレームヘッダ、スライスヘッダ、マクロブロックヘッダ、ブロックヘッダなどのフラグにより切り替えることによって、さらに符号化効率を高めることができる。また、復号対象ブロックの復号済みの低周波成分の値によって、高周波成分の変換係数の位置を切り替えることによって符号化効率を高めることができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施形態を図面を参照して説明する。
［１．第１実施形態］
まず、第１実施形態として、本発明を適用した画像復号装置について説明する。
【００３１】
［１．１  画像復号装置の構成］
本発明を適用した画像復号装置について、図１を参照しつつ以下に説明する。図１は、第１実施形態に係る画像復号装置１００の構成を示すブロック図である。
【００３２】
図１に示すように、画像復号装置１００は、予測部１１１と、可変長符号化復号部１１４と、逆量子化部１１５と、逆変換部１１６と、フレームメモリ１１７と、フィルタパラメータ保存部１１９と、フィルタ部１２０と、加算部１０９とを備えて構成されている。画像復号装置１００の動作について以下に説明する。
【００３３】
［１．２  画像復号装置の動作］
画像復号装置１００に入力された符号化データは、まず、可変長符号化復号部１１４に入力される。可変長符号化復号部１１４は、符号化データの可変長復号により、フィルタ処理に用いる重み係数を指定するためのパラメータであるフィルタパラメータ及び予測方法を示す予測信号、変換・量子化された予測残差信号を復号する。
【００３４】
逆量子化部１１５は、可変長符号化復号部１１４より入力された変換・量子化された予測残差信号を逆量子化する。逆変換部１１６は、逆量子化部１１５より入力された逆量子化された信号を逆変換し、予測残差を生成する。
【００３５】
予測部１１１は、可変長符号化復号部１１４より復号された予測信号が入力され、当該予測信号に従って、フレームメモリ１１７に格納された復号済みの画像を用いて、予測信号を生成する。
【００３６】
加算部１０９は、予測部１１１より入力された予測信号と、逆変換部１１６より入力された予測残差の加算により、復号画像を生成し、フレームメモリ１１７に格納する。
【００３７】
フィルタパラメータ保存部１１９は、可変長符号化復号部１１４で復号されたフィルタパラメータが入力され、保存される。フィルタ部１２０は、フィルタパラメータ保存部１１９に保存されたフィルタパラメータを読み出し、フレームメモリ１１７に格納された画像のフィルタ処理を行う。
【００３８】
［１．３  フィルタ部の説明］
ここで、フィルタ部１２０について詳細に説明する。
【００３９】
図２は、ブロックの境界部分における画素を模式的に示した図である。図２では、互いに隣接するブロックのうち、一方のブロックの画素を画素Ｐｉとし、もう一方のブロックの画素を画素Ｑｉとしている（ｉは０〜ｎまでの整数）。なお、画素Ｐｉおよび画素Ｑｉにおけるｉは、ブロック境界からの距離に相当する。
【００４０】
また、図２では、画素Ｐｉおよび画素Ｑｉに対応する画素値をそれぞれ画素値ｐｉおよび画素値ｑｉとして示しており、処理対象画素Ｐｋにおける処理前の画素値ｐｋに対応する処理後の画素値をｐｋ´として示している。ここで、ｋは０からブロックサイズ以下の値をとる整数である（ｋは０〜ｎ）。
【００４１】
図３は、フィルタ部１２０の内部構成を示す図である。フィルタ部１２０は、差分値算出部４０１と、勾配評価部４０２と、重み係数算出部４０３と、画素値算出部４０４とを備えて構成される。
【００４２】
差分値算出部４０１は、対象ブロックの境界画素Ｐ０の画素値ｐ０と、隣接ブロックの隣接画素Ｑ０の画素値ｑ０との差分値絶対値ｄを算出する。すなわち、差分値算出部４０１は、
ｄ＝ＡＢＳ（ｐ０−ｑ０）    ・・・（１−１）
を用いて差分値絶対値ｄを算出する。
【００４３】
以上は、ブロック歪みの低減を考慮して、ブロック境界に垂直な方向（１次元）画素を参照してフィルタ処理を行う場合を説明したが、フィルタ対象画素周辺の２次元の画素を参照してフィルタ処理を行っても良い。
【００４４】
図４は、２次元のフィルタ対象画素を説明する図である。フィルタ対象画素の画素値ｒ２２に対し、
差分値算出部４０１は、
ｄ＝ＡＢＳ（ｒ２２−ｒ３２）＋ＡＢＳ（ｒ２２−ｒ１２）
＋ＡＢＳ（ｒ２２−ｒ２３）＋ＡＢＳ（ｒ２２−ｒ２１）    ・・・（１−２）
を用いて差分値絶対値ｄを算出する。
【００４５】
［１．４  画素値算出部の説明］
画素値算出部４０４は、差分値算出部４０１において算出した差分値絶対値ｄが閾値Ｔｈ１未満であるか否かを判定する。すなわち、ｄ＜αであるか否かを判定する（α＝閾値Ｔｈ１）。差分値絶対値ｄが閾値Ｔｈ１未満である場合、すなわちｄ＜αである場合、画素値算出部４０４は、フィルタ対象画素の画素値ｐｋと、境界画素値ｑ０から、フィルタ処理後の画素値ｐｋ´を算出する。
【００４６】
より具体的には、
ｐｋ´＝  Ｗｋ×ｐｋ＋（１―Ｗｋ）×ｑ０              ・・・（１−３）
を用いて処理後の画素値ｐｋ´を算出する。Ｗｋは、距離ｋにより定まる重み係数である。重み係数Ｗｋは、後述の重み係数算出部４０３から出力された値を用いる。
【００４７】
なお、重み係数Ｗｋは小数ではなく整数で扱ってもかまわない。この場合、重み係数は２のＮ乗倍（例えば、３２倍）して整数化した値を用いる。より具体的には、
式（１−３）を変形した以下の式によって算出する。
ｐｋ´＝  （Ｗｋ×ｐｋ＋（３２―Ｗｋ）×ｑ０）／３２  ・・・（１−４）
なお、上記説明では、フィルタ処理後の画素値ｐｋ´を、２つの画素値ｐｋとｑ０のみから計算しているが、より多くの画素を用いる構成でも構わない。
【００４８】
この場合、フィルタ対象画素Ｐｋのフィルタ処理後の画素値をｐｋ´は、画素値ｐｘ（ｋ＝０〜ｌ−１）、画素値ｑｘ（ｘ＝０〜ｍ−１）と、画素値ｐｘに対する重み係数αｋｘ（ｘ＝０〜ｌ−１）、画素値ｑｘに対する重み係数βｋｘ（ｘ＝０〜ｍ−１）と、γｋを用いて、フィルタ処理は、
ｐｋ´＝  Σαｋｘ×ｐｘ＋Σβｋｘ×ｑｘ＋γｋ          ・・・（１−５）
のように表現される。この場合、重み係数の数は、境界からの距離ｋ毎に（ｌ＋ｍ＋１）個必要になる。
【００４９】
もっとも適当な場合は、画素値として、ｐｋとｐ０、ｑ０を用いる場合であり、
この場合、
ｐｋ´＝  αｋｋ×ｐｋ＋αｋ０×ｐ０＋βｋ０×ｑ０＋γｋ  ・・・（１−６）
で表現される。
【００５０】
また、重み係数の和（αｋｋ＋αｋ０＋βｋ０）を１とし、γｋ＝０とすれば
ｐｋ´＝  αｋｋ×ｐｋ＋（１−αｋｋ―β０）×ｐ０＋βｋ０×ｑ０
・・・（１−７）
となる。重み係数の数は、各ｐｋに対し、２つ（αｋｋ、βｋ０）である。
【００５１】
図４のようにフィルタ参照画素が２次元的な場合には、画素値算出部４０４は、フィルタ対象画素周辺の画素値ｒｉｊと重み係数αｉｊの線形和より、フィルタ処理後の画素値ｒ２２´を定める（ここでｉ、ｊは０から４の整数）。
【００５２】
具体的には、
ｒ２２´＝  Σαｉｊ×ｒｉｊ＋γ
を用いて算出する。
【００５３】
この場合、重み係数αｉｊの数は２５個になるが、画素位置の対称性を利用して、
α４ｊ＝α０ｊ
α３ｊ＝α１ｊ
αｉ４＝αｉ０
αｉ３＝αｉ１
とすることも可能である。この場合、重み係数の数は９個に減らすことができる。
【００５４】
［１．５  勾配評価部の説明］
図５は、勾配評価部４０２の内部の構成を示すブロック図である。勾配評価部４０２は、差分算出部６０１と、勾配値算出部６０２と、勾配インデックス算出部６０３とを備えて構成されており、場合によって、周波数成分量算出部６０４を備えることとする。周波数成分量算出部６０４については、第２実施形態で説明するため、ここでは説明しない。
【００５５】
本実施形態の勾配評価部４０２は、フレームメモリ１１７より読み出した画素値を用いて、勾配の大きさを示す情報である勾配インデックスを算出するものである。
【００５６】
差分算出部６０１は、フィルタ対象画素とその周辺画素の画素値を利用して勾配値算出に必要な差分値を算出する。本実施形態では、差分値ｄ＿ｐ０ｐ２を算出する。
ｄ＿ｐ０ｐ２＝ＡＢＳ（ｐ２−ｐ０）
【００５７】
次に、勾配値算出部６０２は、差分算出部６０１で得られた差分値を用いて、勾配値ｇを算出する。より具体的には、
ｇ＝ｄ＿ｐ０ｐ２
により算出する。
【００５８】
図４のようにフィルタ参照画素が２次元的な場合には、差分算出部６０１は、
ｄ＿ｒｉｊ＝ＡＢＳ（ｒｉｊ）―ＡＢＳ（ｒ２２）
を算出し、勾配値算出部６０２は、差分算出部６０１で得られた差分値を用いて、勾配値ｇを
ｇ＝ｄ＿ｒ４２＋ｄ＿ｒ０２＋ｄ＿ｒ２４＋ｄ＿ｒ２０
により算出する。
【００５９】
勾配インデックス算出部６０３は、勾配値算出部６０２で得られた勾配値から、勾配インデックスｇｉを算出する。より具体的には、以下の式により、勾配インデックスｇｉを算出する。
【００６０】
ｇｉ  ＝  ０  （ｇ＝Ｔ０）
＝  １  （ｇ＞Ｔ１  かつ  ｇ＜＝Ｔ２）
＝  ２  （ｇ＞Ｔ２  かつ  ｇ＜＝Ｔ３）
＝  ３  （ｇ＞Ｔ３）
Ｔ０、Ｔ１、Ｔ２、Ｔ３は判定の閾値を定める所定の定数であり、本実施形態では、
｛Ｔ０、Ｔ１、Ｔ２、Ｔ３｝＝｛０、２、４、６｝
を用いる。
【００６１】
［１．６  重み係数算出部の説明］
重み係数算出部４０３は、勾配の大きさ毎に格納されたフィルタパラメータをフィルタパラメータ保存部１１９から読み出す。より、具体的には、勾配インデックスｇｉ毎のフィルタパラメータＫ１、Ｋ２、・・・、Ｋｎ（ｎはパラメータ数を表す定数）を読み出す。
【００６２】
重み係数算出部４０３は、読み出したフィルタパラメータからフィルタ処理に用いる重み係数を算出する。重み係数の算出の仕方は、フィルタパラメータの表現形式によって異なる。フィルタパラメータの表現形式は、本実施形態では、下記の表現形式ａもしくは表現形式ｂを用いる。
（表現形式ａ）フィルタパラメータは、フィルタ処理の重み係数を表す
（表現形式ｂ）フィルタパラメータは、フィルタ処理の重み係数を算出する式のパラメータを表す。
【００６３】
なお、フィルタパラメータを表現形式ａで表すか、表現形式ｂで表すかは、符号化装置、復号装置であらかじめ同じ方法を使うものとして決定しておいても構わないし、符号化データ中のフラグ、例えば、シーケンスヘッダ、ピクチャヘッダ、スライスヘッダで指定する方法でも構わない。符号化データ中のフラグで指定する場合には、可変長符号化復号部１１４は、符号化データから、表現形式を示すフラグを復号し、画素値算出部４０４に出力する。
【００６４】
図６は、表現形式ａの場合における、重みパラメータＫ１、・・・、Ｋｎから境界からの距離ｋにおける重み係数Ｗｋを求める方法を示すものである。重み係数算出部４０３は、
Ｗｋ  ＝  Ｋ１  （ｋ＝０）
＝  Ｋ２  （ｋ＝１）
＝  ０    （ｋ＞２）
によって求める。
【００６５】
また、重みパラメータの数がｎの場合には、
Ｗｋ  ＝  Ｋｎ  （ｋ＝ｎ−１）
＝  ０    （ｋ＞ｎ）
によって求める。
【００６６】
図７は、表現形式ｂの場合における、重みパラメータＫ１、・・・、Ｋｎから画素Ｐｋのフィルタ処理に用いる重み係数Ｗｋを求める方法を示すものである。この場合、重み係数算出部４０３は、
Ｗｋ  ＝  Ｋ１  −  Ｋ２  ＊  ｋ  （ｋ＜Ｋ１／Ｋ２）
＝  ０                      （ｋ＞＝Ｋ１／Ｋ２）
によって求める。
【００６７】
なお、式（１−３）のように画素Ｐｋに対する重み係数がＷｋ１つに定まる場合を説明したが、式（１−５）式（１−７）のように画素Ｐｋに対する重み係数が複数必要な場合もある。例えば、重み係数が、画素値ｐｋに対しαｋｘ（ｘ＝０〜ｌ−１）、画素値ｑｋに対しβｋｘ（ｘ＝０〜ｍ−１）とγｋという（ｌ＋ｍ＋１）個である場合がある。この場合、重み係数算出部４０３は、フィルタパラメータから（ｌ＋ｍ＋１）個の重み係数を定める。
【００６８】
より具体的には、表現形式ａでは、重み係数算出部４０３はフィルタパラメータＫαｘ１、Ｋαｘ２、Ｋβｘ１、Ｋβｘ２、Ｋγｘ１、Ｋγｘ２から、重み係数を
αｘｋ  ＝  Ｋαｘ１  （ｋ＝０）
＝  Ｋαｘ２  （ｋ＝１）
＝  ０        （ｋ＞１）
βｘｋ  ＝  Ｋβｘ１  （ｋ＝０）
＝  Ｋβｘ２  （ｋ＝１）
＝  ０        （ｋ＞１）
γｋ    ＝  Ｋγ１    （ｋ＝０）
＝  Ｋγ２    （ｋ＝１）
＝  ０        （ｋ＞１）
により求める。
【００６９】
表現形式ｂでは、重み係数算出部４０３は、フィルタパラメータＫαｘ１、Ｋαｘ２、Ｋβｘ１、Ｋβｘ２、Ｋγｘ１、Ｋγｘ２から、重み係数を
αｋｘ  ＝  Ｋαｘ１＋Ｋαｘ２×ｋ        （ｋ＜Ｋαｘ１／Ｋαｘ２）
＝  ０                            （ｋ＞＝Ｋαｘ１／Ｋαｘ２）
βｋｘ  ＝  Ｋβｘ１＋Ｋβｘ２×ｋ        （ｋ＜Ｋβｘ１／Ｋβｘ２）
＝  ０                            （ｋ＞＝Ｋβｘ１／Ｋβｘ２）
γｋ    ＝  Ｋγｘ１＋Ｋγｘ２×ｋ        （ｋ＜Ｋγｘ１／Ｋγｘ２）
＝  ０                            （ｋ＞＝Ｋγｘ１／Ｋγｘ２）
により求める。
【００７０】
図４のようにフィルタ参照画素が５×５の２次元的な場合には、表現形式ａでは、ｚ＝ｉ＋５×ｊとして、フィルタパラメータＫｚから重み係数αｉｊを
αｉｊ  ＝  Ｋｚ  （ｚ＝ｉ＋５×ｊ、ｉ、ｊは０から４の整数）
＝  ０    （上記以外）
により求める。
【００７１】
表現形式ｂでは、フィルタパラメータＫ１、Ｋ２から重み係数αｉｊを
αｉｊ＝Ｋ１  −  Ｋ２  ＊  ｋ      （ｋ＜Ｋ１／Ｋ２）
＝０                          （ｋ＞＝Ｋ１／Ｋ２）
により求める。但しｋ＝ＡＢＳ（ｉ）＋ＡＢＳ（ｊ）。
【００７２】
［１．７  重み係数算出部の説明補足］
ところで、上記の説明では、表現形式ａの場合には、画素Ｐｋの重み係数に対応するフィルタパラメータが存在することを仮定している。しかし、画素Ｐｋの重み係数に対応するフィルタパラメータが存在するわけではない。
【００７３】
例えば、距離ｋが０、１、２、３、４、５の場合にフィルタ処理を実行するには、距離ｋが０、１、２、３、４、５の重み係数を必要とするが、フィルタパラメータは、距離１、３の場合のみにしか与えられていない場合がある。
【００７４】
この場合、距離ｋに最も近いフィルタパラメータの線形近似により重み係数を補間する。例えば、境界からの距離ｋが１、３のフィルタパラメータＷ１、Ｗ３が得られている場合には、境界からの距離０、２、４、５については、フィルタパラメータの値を用いて線形近似を行う。より具体的には、
境界からの距離ｋの重み係数Ｗｋは、フィルタパラメータＫ１、Ｋ３及び所定の定数ＷＷ０、ＷＷ６を用いて、
Ｗ０  ＝  ＷＷ０                    （Ｋ＝０）
Ｗ１  ＝  Ｋ１                      （Ｋ＝１）
Ｗ２  ＝  （Ｋ１＋Ｋ３）／２        （Ｋ＝２）
Ｗ３  ＝  Ｋ３                      （Ｋ＝３）
Ｗ４  ＝  （２＊Ｋ３＋ＷＷ６）／３  （Ｋ＝４）
Ｗ５  ＝  （Ｋ３＋２＊ＷＷ６）／３  （Ｋ＝５）
に定める。なお、所定の定数ＷＷ０、ＷＷ６は、例えば０．４５、０．０が適当である。
【００７５】
［１．８  フィルタパラメータ保存部の説明］
図８、図９、図１０は、フィルタパラメータ保存部１１９における、フィルタパラメータの格納方法を説明するための図である。図８に示すとおり、フィルタパラメータ保存部１１９は、勾配インデックス毎にフィルタパラメータを格納する。フィルタパラメータは、複数の値からなるベクトルであり、Ｋ１、Ｋ２、・・・、Ｋｎで与えられる。フィルタパラメータ保存部１１９は、内部に格納された勾配インデックス毎のフィルタパラメータをフィルタ部１２０に出力する。
【００７６】
フィルタパラメータ保存部１１９は、また、ブロックサイズ管理部２０１の出力に従い、ブロックサイズ毎に、学習用データを保存することが好適である。この場合、図９に示す通り、ブロックサイズ別及び勾配インデックス別に対応するフィルタパラメータを保存する。
【００７７】
また、図１０に示す通り、水平境界と垂直境界毎にさらに分けて、フィルタパラメータを保存することも好適である。特に、ブロックサイズが大きい場合や、ブロックの横サイズと縦サイズとが異なる場合に、水平境界と垂直境界で分けて、フィルタパラメータを保存すると好適である。
【００７８】
以上説明したとおり第１実施形態の画像復号装置は、符号化データから、フィルタパラメータを復号し、境界の画素値から計算される勾配値の大きさに従って、復号されたフィルタパラメータを読み出し、読み出されたフィルタパラメータから算出される重み係数に応じて、フィルタ処理を行うことによって、符号化されたときの画像に近い画像を復号することが可能になる。
【００７９】
［２．第２実施形態］
図１１は、第２実施形態に係る画像復号装置２００の構成を示すブロック図である。なお、第１実施形態と同様の部材に関しては、同一の符号を付し、その説明を省略する。図２に示すように、画像復号装置２００は、予測部１１１と、可変長符号化復号部１１４と、逆量子化部１１５と、逆変換部１１６と、フレームメモリ１１７と、ブロックサイズ管理部２１２と、フィルタパラメータ保存部１１９と、フィルタ部１２０とを備えて構成されている。画像復号装置２００の動作について以下に説明する。
【００８０】
画像復号装置２００に入力された符号化データは、まず、可変長符号化復号部１１４に入力される。可変長符号化復号部１１４は、符号化データの可変長復号により、フィルタパラメータ、及び、予測方法を示す予測信号、予測及び変換に用いられるブロックサイズ、変換・量子化された予測残差信号を復号する。復号されたブロックサイズは、ブロックサイズ管理部２１２に格納される。
【００８１】
第２実施形態に係る画像復号装置は、ブロックサイズ管理部２１２に格納されたブロックサイズに応じて、予測部１１１、逆量子化部１１５、逆変換部１１６、フィルタ部１２０の動作を変える。なお、第１実施形態では説明の簡略化のためブロックサイズ管理部２１２を図示していないが、ブロックサイズを可変にする方法（可変ブロックサイズ）を用いて符号化された符号化データの復号及びフィルタ処理を損なうものではない。
【００８２】
本実施形態の復号装置ではブロックサイズとして４ｘ４、８ｘ８、３２ｘ３２、６４ｘ１６を用いる。ブロックサイズＭ×Ｎとは、横Ｍ画素、縦Ｎ画素のブロックを意味する。
【００８３】
［２．１  変換係数の数を制限する手法］
可変長符号化復号部１１４は予測残差信号を復号する。ブロックサイズが４ｘ４、８ｘ８、３２ｘ３２の場合は、ブロックサイズ分の変換係数を復号する。ブロックサイズ６４ｘ１６の場合には、１０２４個の変換係数のうち所定の数（ここでは３２個）のみを復号する。なお、本実施形態で復号可能な符号化データを符号化する符号化装置においてもブロックサイズが６４ｘ１６の場合には変換係数のうち所定の数のみを符号化する。
【００８４】
逆量子化部１１５、逆変換部１１６の動作は第１実施形態で説明した通りである。一般に、ブロックサイズが大きい場合の逆変換の処理量は大きいものになるが、ブロックサイズが６４ｘ１６の場合には、所定の数（本実施形態では３２個）の変換係数のみを処理できれば良いので逆量子化部１１５及び逆変換部１１６の処理量を削減できる。
【００８５】
高い符号化効率を達成するために適当なブロックサイズは、画像の特性に応じて異なる。一般に、画像サイズが大きいほど画素間相関が高まるため、画像サイズが大きいほど最大ブロックサイズも大きくしたほうが良い。実際、大きなブロックサイズは、平坦部の符号化効率向上に効果がある。
【００８６】
しかし、ブロックサイズの位置に制約がある場合、例えば、フレーム内の位置として、ブロックサイズの整数倍の位置にのみ、当該ブロックを用いることが出来る場合には、ブロックサイズが大きくなるほど、この制約が厳しくなる。この場合、ブロックサイズが大きくなるほど、ブロック位置の制約から、平坦部をカバーすることが困難になる。そのため、平坦部領域が長く連続していない場合には、ブロックサイズの一辺が３２画素を超えることは適当ではない。従って、最大ブロックサイズは３２ｘ３２程度が良い。平坦部領域が長く連続している場合には、最大ブロックサイズは６４ｘ６４などが良い。
【００８７】
一部の変換係数のみを符号化する方法における、適当な変換係数の数は、画像の特性に応じて異なる。エッジ部以外の領域（画素値が急峻に変化する部分のない領域）における変化の勾配が大きい画像ほど、高次の変換係数が必要であるため、変換係数の数を多くする方が良く（例えば４８個）、勾配が小さい場合には、変換係数の数は少なくて良い（例えば１６個）。
【００８８】
また、適当な変換係数の数は、変換係数を符号化する可変長符号化の方法によっても異なる。符号化効率の高い算術符号を用いる場合には、変換係数の数を多くする方が良く（例えば４０個）、算術符号を用いない場合には、変換係数の数を小さくする方が良い（例えば１６個）。
【００８９】
一つの方法では、可変長符号化の方法がフラグ（以下、ＶＬＣモードフラグと呼ぶ）として符号化データに備える場合には、可変長符号化復号部１１４は、可変長符号化の方法を示すＶＬＣモードフラグを復号し、ＶＬＣモードフラグが算術符号など高効率な可変長符号化方式を示す場合には、一部の変換係数のみを符号化する方法における変換係数の数をＮｍ個とし、ＶＬＣモードフラグがそれ以外の場合にはＮｎ個（＜Ｎｍ）とする。
【００９０】
図１２は、以上説明した、可変長符号化方式により切り替えられる符号化する変換係数の位置を説明する図である。算術符号化の場合には、図２６（ａ）に示すように４０個、それ以外の場合には図２６（ｂ）に示すように算術符号の場合よりも少ない１６個の変換係数を復号する。
【００９１】
図１３は、符号化する変換係数の位置を説明するための図である。図１３に示すように、変換係数の位置は切り替えられ、デフォルトと水平方向優先、垂直方向優先がある。この場合、エッジ以外の領域の変換係数が、水平方向に広がっている場合には、符号化する変換係数の位置を水平方向優先とし、垂直方向に広がっている場合には、垂直方向優先とすることが望ましい。どちらでもない場合、もしくはどちらの方向にも広がっている場合には、デフォルトの位置を使うのが良い。また、水平方向優先、垂直方向優先の他に、対角方向優先を用いても良い。
【００９２】
なお、変換係数の水平位置をｈ、垂直位置をｖで表すと、水平方向優先とは、ｈ＞ｖである係数の数Ｎｈの方が、ｈ＞ｖである係数の数Ｎｖよりも所定の数Ｔｈ以上大きい場合、すなわち
Ｎｈ−Ｎｖ  ＞＝  Ｔｈ
を指す。
【００９３】
垂直方向優先とは、ｖ＞ｈである係数の数Ｎｖの方が、ｖ＞ｈである係数の数Ｎｈよりも所定の数Ｔｖ以上大きい場合、すなわち
Ｎｖ−Ｎｈ  ＞＝  Ｔｖ
を指す。
【００９４】
対角成分優先とは、ｈ＝ｖである係数の数Ｎｄが所定の数Ｎｄ以上大きい場合、すなわち
Ｎｖ−Ｎｈ  ＞＝  Ｔｄ
を指す。
【００９５】
図１４は、ブロックサイズ、変換係数の個数、変換係数の位置を符号化するヘッダの構成を示す図である。size_of_max_blockは、最大ブロックサイズを示すインデックスであり０からＮ−１の値をとる。size_of_max_blockを最大ブロックサイズに変換する式は、
ブロックサイズの横は１６×size_of_max_block、縦は１６とする。とする。
【００９６】
size_of_max_blockから最大ブロックサイズを求める式は、上記に限らず、ブロックサイズの横は１６×size_of_max_block、縦は１６×size_of_max_block等としても良い。
【００９７】
numidx_coeff_of_max_blockは、最大ブロックにおける変換係数の個数を示すインデックスであり、numidx_coeff_of_max_block×８個の変換係数を符号化する。
【００９８】
scanidx_mode_of_max_blockは、変換係数の位置を示すインデックスであり０、１、２の値をとる。０はデフォルト、１は水平方向優先、２は垂直方向優先を示す。なお、３種の値とせず、２種とし、デフォルトと水平方向優先、もしくは、デフォルトと垂直方向を切り替える方法でも良い。また、４種とし、デフォルトと水平方向優先、垂直方向優先、対角方向優先の４種を切り替えても良い。
【００９９】
図１４に示すとおりブロックサイズ（特に最大ブロックサイズ）、変換係数の個数、変換係数の位置（例えば、デフォルト、水平方向優先、垂直方向優先の３種を示すフラグ）についての情報は、シーケンスを規定するヘッダ、フレームを規定するヘッダ、スライスヘッダ、マクロブロックのヘッダ、ブロックのヘッダ、で符号化することが望ましい。画像復号装置２００の可変長符号化復号部１１４は、それらヘッダに符号化された、変換係数の個数と、変換係数の位置を復号し、変換係数の復号に利用する。
【０１００】
なお、変換係数の位置は、ヘッダにおいて明示的に符号化するのではなく、低周波数成分から高周波数成分の順に変換係数を符号化する可変長符号化方法を用いる場合において、低周波数成分の値に応じて、高周波数成分の変換係数の位置を変更する方法がある。
【０１０１】
図１５は、変換係数の位置（＝スキャン方法）とスキャン順を説明する図である。図中の番号は、変換係数が復号される順序（スキャン順）を示す。また順序ｍにおいて復号される変換係数の値をＣｍとする。図１５（ａ）は低周波数成分、（ｂ）はデフォルト、（ｃ）は水平方向優先、（ｄ）は垂直方向優先、（ｅ）は対角方向優先を示す。
【０１０２】
可変長符号化復号部１１４は、所定の数（ここでは１０個）の変換係数を復号する。図１５（ａ）は、所定の数の変換係数の位置の例が示されている。可変長符号化復号部１１４は、所定の数以上の変換係数が復号された時点で、水平方向に近い（ｈ＜ｖとなる）変換係数の絶対値と、垂直方向に近い（ｖ＜ｈとなる）変換係数の絶対値の重み付きの差で算出される水平方向優先指数Ｈ、垂直方向優先指数Ｖを算出する。より具体的には、以下の値を算出する。
【０１０３】
水平方向優先指数Ｈ＝
ＡＢＳ（Ｃ３）＋ＡＢＳ（Ｃ６）−２×（ＡＢＳ（Ｃ５）＋ＡＢＳ（Ｃ９））
垂直方向優先指数Ｖ＝
ＡＢＳ（Ｃ５）＋ＡＢＳ（Ｃ９）−２×（ＡＢＳ（Ｃ３）＋ＡＢＳ（Ｃ６））
【０１０４】
なお、最低次数の変換係数は、高次の変換係数が存在しない場合にも大きな値を有するなど、高次の変換係数との相関が小さいことが多いため、水平方向優先指数Ｈ、垂直方向優先指数Ｖの算出には、最低次数の変換係数以外、すなわち、Ｃ１とＣ２以外の変換係数を用いることが好適である。
【０１０５】
なお、ブロックの横のサイズと縦のサイズが異なる場合には、水平方向優先指数Ｈの算出に用いる重みと、垂直方向優先指数Ｖの算出に用いる重みを、水平方向に近い変換係数の絶対値と、垂直方向に近い変換係数の絶対値の間で対称とせず、異なるものとすることが好適である。
【０１０６】
例えば、ブロックの横のサイズが縦のサイズよりも大きい場合には、水平方向優先指数Ｈの算出に用いる、垂直方向に近い変換係数の重みの和ＨＳｕｍＶと水平方向に近い変換係数の重みの和ＨＳｕｍＨの比ＨＲ（＝ＨＳｕｍＶ／ＨＳｕｍＨ）よりも、垂直方向優先指数Ｖの算出に用いる、垂直方向に近い変換係数の重みの和ＶＳｕｍＶと水平方向に近い変換係数の重みの和ＶＳｕｍＶの比ＶＲ（ＶＳｕｍＨ／ＶＳｕｍＶ）よりも、大きくすることが好適である。ブロックの横のサイズが縦のサイズよりも小さい場合は、この逆とする。
【０１０７】
より、具体的には、ブロックのサイズが６４×１６の場合、
水平方向優先指数Ｈ＝
ＡＢＳ（Ｃ３）＋ＡＢＳ（Ｃ６）−４×（ＡＢＳ（Ｃ５）＋ＡＢＳ（Ｃ９））
垂直方向優先指数Ｖ＝
ＡＢＳ（Ｃ５）＋ＡＢＳ（Ｃ９）−（ＡＢＳ（Ｃ３）＋ＡＢＳ（Ｃ６））
とすることが好適である。
【０１０８】
このときＨＲ＝ＨＳｕｍＶ／ＨＳｕｍＨ＝（４＋４）／（１＋１）＝４、ＶＲ＝（１＋１）／（１＋１）＝１であり、上記説明を満たす。
【０１０９】
可変長符号化復号部１１４は、水平方向優先指数Ｈが０よりも大きい場合には、高周波数成分の変換係数の位置として、水平方向優先を選択する。垂直方向優先指数Ｖが０よりも大きい場合には、高周波数成分の変換係数の位置として、垂直方向優先を選択する。それ以外の場合にはデフォルトを用いる。
【０１１０】
可変長符号化復号部１１４は、変換係数の位置を、選択されたスキャン方法で定まる位置に並び替えた上で、逆量子化部１１５に変換係数を出力する。
【０１１１】
図１６は、上記の可変長符号化復号部１１４の動作を説明する図である。可変長符号化復号部１１４は、まず変換係数の数ｎＣを復号し、さらに、変換係数の位置を示す情報であるランＲと、変換係数の値を示すレベルＬを復号するものとする。
【０１１２】
ラストＬａｓｔと呼ばれる値を復号することにより、変換係数の数ｎＣを最初に復号しない方法も可能である。その場合、以下のステップにおいて、最後の変換係数であるかの判定が、Ｒｅｍが０であるかから、Ｌａｓｔが真であるかの判定に変わる。
【０１１３】
Ｓ２５０１：変換係数の残数ＲｅｍにｎＣ、スキャン方法Ｓにデフォルト、スキャン位置Ｉに０を設定する。
Ｓ２５０２：最後の変換係数である場合（Ｒｅｍ＝０）には、Ｓ２５２０に遷移し復号を終了する。最後の変換係数ではない場合（Ｒｅｍ＞０）には、Ｓ２５０３に遷移する。
Ｓ２５０３：変換係数のランＲとレベルＬを復号し、スキャン位置Ｉと、変換係数の残数ＲｅｍをＩ＝Ｉ＋Ｒ及びＲｅｍ＝Ｒｅｍ−１により更新する。
Ｓ２５０４：変換係数の位置Ｉが所定の数Ｔ以上である場合には、Ｓ２５１１に遷移する。所定の数Ｔ未満の場合には、Ｓ２５０５に遷移する。
Ｓ２５０５：水平方向優先指数Ｈを算出する。
【０１１４】
Ｓ２５０６：水平方向優先指数Ｈが０より大きい場合には、Ｓ２５０７に遷移する。それ以外の場合にはＳ２５１１に遷移する。
Ｓ２５０７：スキャン方法Ｓを水平方向優先に設定する。
Ｓ２５０８：垂直方向優先指数Ｖを算出する。
Ｓ２５０９：垂直方向優先指数Ｖが０より大きい場合には、Ｓ２５１０に遷移する。それ以外の場合にはＳ２５１１に遷移する。
Ｓ２５１０：スキャン方法Ｓを垂直方向優先に設定する。
Ｓ２５１１：スキャン方法Ｓとスキャン位置Ｉで定まる変換係数の位置にＳ２５０３で得られたレベルＬを格納する。なお、スキャン方法Ｓの選択肢として、水平方向優先、垂直方向に加え、対角方向優先を追加する方法も好適である。
【０１１５】
［２．２  ブロックサイズの設定方法］
図１７、図１８、図１９は、ブロックサイズの設定方法を示す図である。図１３、図１４に示す方法では、使用するブロックサイズ４ｘ４、８ｘ８、３２ｘ３２、６４ｘ１６の最小公倍数となるブロックサイズ（ここでは６４ｘ３２）の定数倍のブロックをマクロブロックとして扱う。この場合には、図１８に示すように画面をマクロブロックに分割し、マクロブロック単位で処理を行う。
【０１１６】
図１８中の網掛け部分が入力画面であり、マクロブロックは画面を覆うようにする。画面の端などで、マクロブロックの領域が、画面を越える場合には、復号は、マクロブロック全体で覆われる領域で行い。画像復号装置から出力する時点で、画面の範囲だけを切り出して外部に出力する。図１８には、マクロブロックの左上座標を黒点で示してある。
【０１１７】
図１７に示すように、分割した６４ｘ３２のマクロブロックの中では、さらに、３２ｘ３２、６４ｘ１６に分割する。分割された３２ｘ３２及び６４ｘ１６のブロックはさらに小さなブロックに分割する。最終的に、４ｘ４、８ｘ８、３２ｘ３２、６４ｘ１６のブロックに分割される。これをツリー分解による方法と呼ぶ。
【０１１８】
図１９に示す方法は、ツリー分解とは異なる方法である。使用するブロックサイズの最小公倍数となるブロックサイズの定数倍によらず、あるブロックサイズを、マクロブロックサイズとして設定する。ここでは例えば３２ｘ１６をマクロブロックとする。このマクロブロック単位で、画面をラスタ順に走査し、この単位で、６４ｘ３２ブロック、３２ｘ３２ブロック、マクロブロック（３２ｘ１６）を選択する。マクロブロックとして選択された領域については、さらに４ｘ４もしくは８ｘ８に分割される。
【０１１９】
一度、ブロックサイズの選択がなされると、すでに選択された領域（６４ｘ１６もしくは３２ｘ３２もしくは３２ｘ１６）をスキップした上で、さらに画面をラスタ順に走査し、再度６４ｘ３２ブロック、３２ｘ３２ブロック、マクロブロック（３２ｘ１６）からブロックサイズを選択する。この走査を画面内で繰り返すことで、画面全体を各ブロックに分割する。この方法は、ツリー分割による方法よりも小さな単位で、大きなブロックサイズのブロックの位置を定めることができるので、大ブロック優先手法と呼ぶ。
【０１２０】
このように、ツリー分割よりも大ブロック優先の方が、ブロックの分割方法を定める自由度は大きくなるが、ブロック分割方法を定める符号量は大きくなる。
【０１２１】
［２．３  フィルタ部の説明］
第２実施形態のフィルタ部１２０も、第１実施形態と同じく図３の通りであり、差分値算出部４０１と、勾配評価部４０２と、重み係数算出部４０３と、画素値算出部４０４とを備えて構成される。
【０１２２】
第２実施形態の勾配評価部４０２は、ブロックサイズ管理部２１２から読み出したブロックサイズ毎に異なる方法で、フレームメモリ１１７より読み出した画素値を用いて、勾配値を算出する。
【０１２３】
勾配評価部４０２の構成要素である差分算出部６０１は、勾配値算出に必要な差分値を算出する。より具体的には以下の差分値を算出する。
【０１２４】
ｄ＿ｐ０ｐ２  ＝  ＡＢＳ（ｐ０−ｐ２）
ｄ＿ｐ０ｐ４  ＝  ＡＢＳ（ｐ０−ｐ４）
ｄ＿ｐ０ｐ８  ＝  ＡＢＳ（ｐ０−ｐ８）
ｄ＿ｐ２ｐ４  ＝  ＡＢＳ（ｐ２−ｐ４）
ｄ＿ｐ４ｐ８  ＝  ＡＢＳ（ｐ４−ｐ８）
ｄ＿ｑ０ｑ８  ＝  ＡＢＳ（ｑ０−ｑ８）
勾配値算出部６０２は、差分値を用いて、ブロックサイズ毎に異なる方法で、勾配値を算出する。
【０１２５】
より具体的には、
ブロックサイズが４ｘ４、８ｘ８の場合には、
ｇ＝ｄ＿ｐ０ｐ２
ブロックサイズが３２ｘ３２の場合には、
ｇ＝ｄ＿ｐ０ｐ４＋ｄ＿ｐ４ｐ８
ブロックサイズが６４ｘ１６の場合には、水平境界の場合には、
ｇ＝ｄ＿ｐ０ｐ２＋ｄ＿ｐ２ｐ４
を用い、垂直境界の場合には、
ｇ＝ｄ＿ｐ０ｐ８＋ｄ＿ｑ０ｑ８
を用いる。
【０１２６】
上記、算出方法で行われている通り、ブロックサイズが大きくなるほど、より離れた画素同士の差分値を用いて勾配値を算出する。これは、ブロックサイズが大きいほどより平坦部に用いられる可能性が高くなるためであり、平坦部の場合、所定の距離以上、離れた画素を用いないと差分値が生じないことに対応する。ブロックの横のサイズと縦のサイズが異なる場合には、垂直境界の処理を行う場合には、横のサイズに応じて勾配値を算出し、水平境界の処理を行う場合には、縦のサイズに応じて勾配値を算出する。
【０１２７】
また、ブロックサイズが所定の値以上となった場合、本実施形態では６４以上の場合には、フィルタ対象画素の側のブロックの画素値（ｐｋ）だけでなく、隣接ブロックの画素値（ｑｋ）も参照する。これはブロックサイズが特に大きい場合には、平坦度が極めて高い領域に用いられる場合が多く、境界に隣接するブロックのうち、片方を参照するだけでは十分にブロックの特性を測定できないためである。
【０１２８】
なお、フィルタ対象ブロックと隣接ブロックの画素値を参照して勾配値を算出する際には、フィルタ対象ブロックの側の参照する画素値の数を大きくすることは好適である。すなわち、勾配値の算出において、フィルタ対象ブロックから算出される差分値の数を隣接ブロックから算出される差分値の数よりも大きくすることは好適である。この場合、例えば、以下の式により、勾配値を算出する。
ｇ＝ｄ＿ｐ０ｐ４＋ｄ＿ｐ４ｐ８＋ｄ＿ｑ０ｑ８
【０１２９】
また、ブロックサイズ６４ｘ１６の場合には、復号する変換係数の数を所定の数に制限している。変換係数の数を制限したブロックについても、平坦度が極めて高い領域に用いられる場合が多いため、フィルタ対象画素の反対側のブロックの画素値も参照し、勾配値を算出することが好適である。
【０１３０】
勾配評価部４０２は、勾配値ｇから勾配インデックスを算出する。例えば、以下の式により、勾配インデックスｇｉを算出する。
【０１３１】
ｇｉ  ＝  ０  （ｇ＝Ｔ０）
＝  １  （ｇ＞Ｔ０＆＆ｇ＜＝Ｔ１）
＝  ２  （ｇ＞Ｔ１＆＆ｇ＜＝Ｔ２）
＝  ３  （ｇ＞Ｔ３）
Ｔ０、Ｔ１、Ｔ２、Ｔ３は判定の閾値を与える所定の定数である。
【０１３２】
なお、Ｔ０、Ｔ１、Ｔ２、Ｔ３の値は、ブロックサイズに応じて変更しても良く、本実施形態では、
｛Ｔ０、Ｔ１、Ｔ２、Ｔ３｝＝｛０、３、６、１２｝
・・・ブロックサイズ４ｘ４、８ｘ８
｛Ｔ０、Ｔ１、Ｔ２、Ｔ３｝＝｛０、２、４、６｝
・・・ブロックサイズ３２ｘ３２、６４ｘ１６
を用いる。
【０１３３】
［２．４  変換係数を利用した勾配値算出］
勾配評価部４０２は、フレームメモリ１１７より読み出した画素値を用いて勾配値を算出するだけでなく、図５に示すように周波数成分量算出部６０４をさらに備え、逆変換部１１６から出力された変換係数の情報を用いても良い。
【０１３４】
図２０は周波数成分量算出部６０４の動作を説明するための図である。周波数成分量算出部６０４は、逆変換部１１６から出力された変換係数を用いて、変換係数の領域ごとに変換係数の絶対値和を計算し、低周波成分量、高周波成分量を計算する。より具体的には、図２０の斜線部で示す位置の変換係数を用いて低周波成分量を計算し、図２０の網がけ部で示す位置の変換係数を用いて高周波成分量を計算する。低周波成分量、高周波成分量の計算は、絶対値和に限らず、２乗和や絶対値の最大値、２乗値の最大値など他の値でも良い。
【０１３５】
勾配値算出部６０２は、低周波成分量、高周波成分量、差分値に基づき勾配インデックスを算出する。より具体的には、以下の式により勾配インデックスｇｉを算出する。
ｇｉ  ＝  ０  （低周波成分量＜＝ＴＬ０かつ、高周波成分量＜＝ＴＨ０）
＝  １  （上記以外かつ、低周波成分量＜＝ＴＬ１かつ、
高周波成分量＜＝  ＴＨ１）
＝  ２  （上記以外かつ、ｄ＿ｐ０ｐ２＜＝Ｔ１かつ、ｄ＿ｐ０ｐ２＜＝Ｔ２）
＝  ３  （上記以外）
なお、ＴＬ０、ＴＨ０、ＴＬ１、ＴＨ１は判定の閾値を定める所定の定数であり、例えば、ＴＬ０＝５０、ＴＨ０＝５０、ＴＬ１＝２００、ＴＨ１＝５０などがある。
【０１３６】
この方法は、低周波成分量及び高周波成分量が小さい場合には、変換係数の大きさで勾配インデックスを決定し、大きい場合は、変換係数の大きさによらず、画素値の差を用いて勾配インデックスを決定する。
【０１３７】
なお、変換係数を用いた勾配の大きさを決める方法（上記説明では勾配インデックスの決定）は、ブロックサイズが大きい場合に有効である。そのため、ブロックサイズが大きい場合、例えば３２ｘ３２、６４ｘ１６の場合に上記方法を用い、それ以外の場合は、変換係数を用いない方法を用いることが好適である。その理由は、ブロックサイズが大きい場合は、主に画素間相関が大きい領域に使用されることが多く、その場合、変換係数の大きさがそのブロックの特性を良く表すからである。
【０１３８】
ところで、ブロックサイズが大きい場合は、画素間相関が大きい画像領域だけでなく、繰り返しパターンのある領域に使用されることもある。このような場合には、変換係数だけではそのブロックの局所領域の勾配を十分に表現できない。しかし、繰り返しパターンのある領域では通常高周波成分量が大きく、この場合、上記の方法では、勾配インデックスの算出に差分値が用いられるため、この問題は生じない。
【０１３９】
変換係数を利用する方法は、勾配値の算出に用いる差分値を増加させることなく、広い範囲の特性を利用できる。
【０１４０】
また、ブロックサイズが６４ｘ１６など所定のサイズを超える場合には、下記のように、変換係数のみを用いた勾配値の大きさ測定方法が有効である。
ｇｉ  ＝  ０（低周波成分量＜＝ＴＬ０かつ、高周波成分量＜＝ＴＨ０）
＝  １（上記以外かつ、低周波成分量＜＝ＴＬ１かつ、高周波成分量＜＝ＴＨ１）
＝  ２（上記以外かつ、高周波成分量＜＝ＴＨ１）
＝  ３（上記以外）
【０１４１】
［２．５  予測方法と変換係数を用いた勾配値算出］
勾配評価部４０２は、また予測部１１１から出力された予測方法を示す予測信号を用いても良い。
【０１４２】
具体的に、予測部１１１の出力された予測信号が周辺の既に復号済み画素値の平均値から予測するＤＣ予測である場合、それ以外の予測信号の場合について説明する。予測信号が、ＤＣ予測の場合には、変換係数の大きさを利用した勾配値方法で勾配インデックスｇｉを算出する。例えば、以下の予測方法を用いる。
【０１４３】
ｇｉ  ＝  ０  （低周波成分量  ＜＝  ＴＬ０  かつ  高周波成分量  ＜＝  ＴＨ０）
＝  １  （低周波成分量  ＜＝  ＴＬ１  かつ  高周波成分量  ＜＝  ＴＨ１）
＝  ２  （ｇ＞Ｔ１＆＆＜＝Ｔ２）
＝  ３  （ｇ＞Ｔ３）
予測信号がＤＣ予測でない場合には、変換係数の大きさによらず、画素値の差を用いて勾配インデックスｇｉを決定する。
【０１４４】
ここで、フィルタ部１２０の動作は、第１の実施形態と等しい。以下、第１の実施形態と異なる点のみを説明する。
【０１４５】
［２．６  重み係数算出部の説明］
第１実施形態で説明したとおり、重み係数算出部４０３は、フィルタパラメータＫ１、・・・、Ｋ２、Ｋｎにより重み係数を求める。フィルタパラメータの表現形式も、第１実施形態で説明したとおり、表現形式ａと表現形式ｂを用いる。第２実施形態の重み係数算出部４０３は、ブロックサイズ管理部２１２から入力されたブロックサイズを用いて、ブロックサイズに応じて表現形式を変更する。
【０１４６】
より具体的には、
ブロックサイズが４ｘ４、８ｘ８の場合には、表現形式ａ
ブロックサイズが３２ｘ３２、６４ｘ１６の場合には、表現形式ｂ
を用いる。
【０１４７】
このように定める理由は、以下の通りである。例えば、ブロックサイズが小さい場合には、境界からの距離が近い場合のみのフィルタ処理で十分であるので、その場合の重み係数があれば良い。そのため表現形式ａが適する。ブロックサイズが大きい場合は、境界からの距離が大きい場合の重み係数が必要になるが、境界からの距離毎にフィルタパラメータを定める場合には、フィルタパラメータの数が多くなる問題が発生するため、表現形式ｂが適する。
【０１４８】
以上説明したとおり第２実施形態の画像復号装置は、符号化データから、ブロックサイズとフィルタパラメータを復号し、境界の画素値及び変換係数から算出される勾配の大きさに従って、ブロックサイズ毎に復号されたフィルタパラメータを読み出し、読み出されたフィルタパラメータから算出される重み係数に応じて、フィルタ処理を行うことによって、符号化されたときの画像に近い画像を復号することが可能になる。
【０１４９】
［３．第３実施形態］
つづいて、本発明を適用した画像符号化装置について、第３実施形態として図を参照して説明する。
［３．１  画像符号化装置の構成］
図２１は、第３実施形態に係る画像符号化装置３００の構成を示すブロック図である。なお、第１実施形態、第２実施形態と同様の部材に関しては、同一の符号を付し、その説明を省略する。
【０１５０】
図２１に示すように、画像符号化装置３００は、予測部１１１と、変換部３１２と、量子化部３１３と、可変長符号化部３１４と、逆量子化部１１５と、逆変換部１１６と、フレームメモリ１１７と、フィルタパラメータ算出部１１８とを備えて構成される。
【０１５１】
画像符号化装置３００が、フレームメモリ１１７に格納された局所復号画像の歪みを低減するループフィルタ処理を行う場合には、画像符号化装置はフィルタ部１２０を備える。この場合、フィルタ部１２０を制御するためのフィルタパラメータを格納するフィルタパラメータ保存部１１９を備える。以下、画像符号化装置３００の動作について説明する。
【０１５２】
［３．２  画像符号化装置の動作］
画像符号化装置３００に画像が入力された画像はブロックに分解され、以下の処理がなさせる。予測部１１１は、入力ブロックに近い予測ブロックを生成する。減算部１０７は、入力ブロックと予測部１１１から出力される予測ブロックの差分値である差分値ブロックを計算する。
【０１５３】
変換部３１２は、減算部１０７から入力された差分値ブロックに対しＤＣＴ変換などにより変換係数を算出する。量子化部３１３は、量子化ステップにより定まるステップに従い、変換係数を量子化する。量子化された変換係数は、可変長符号化部３１４により符号化し外部に出力される。
【０１５４】
逆量子化部１１５は、量子化された変換係数を逆量子化する。逆変換部１１６は、逆量子化された変換係数を逆変換し、残差ブロックを算出する。加算部１０９は、残差ブロックと予測ブロックの和を計算し、入力ブロックを再生する。再生されたブロックは、フレームメモリ１１７に格納される。
【０１５５】
フィルタパラメータ算出部１１８は、フィルタパラメータを算出する。算出されたフィルタパラメータは、可変長符号化部３１４に出力される。可変長符号化部３１４は、予測方法を示す情報と変換係数だけでなく、フィルタパラメータの可変長符号化も行い出力する。
【０１５６】
フィルタパラメータ保存部１１９が存在する場合には、算出されたフィルタパラメータはフィルタパラメータ保存部１１９に格納される。フィルタ部１２０が存在する場合は、フィルタ部１２０は、フィルタパラメータ保存部１１９に保存されたフィルタパラメータを読み出し、その値に従って、フレームメモリ１１７に格納された局所復号画像にフィルタ処理を行う。フィルタ処理された画像はフレームメモリ１１７に再度格納される。
【０１５７】
フィルタパラメータ保存部１１９、フィルタ部１２０の動作は、第１実施形態、及び、第２実施形態と同一であるので、説明を省略する。
【０１５８】
［３．３  フィルタパラメータ算出部の説明］
以下、フィルタパラメータ算出部１１８の動作を説明する。図２２は、フィルタパラメータ算出部１１８の構成を示す図である。フィルタパラメータ算出部１１８は、差分値算出部４０１、勾配評価部４０２、学習用データ保存部５０１、パラメータ推定部５０２を備えて構成される。
【０１５９】
差分値算出部４０１は、第１実施形態で説明した通り、対象ブロックと隣接ブロックの画素値の差分値である差分値絶対値ｄを算出する。勾配評価部４０２は、第１実施形態及び第２実施形態で説明したとおり、フレームメモリ１１７より読み出した画素値もしくは逆量子化部１１５から出力された変換係数を用いて勾配値の大きさを示す情報である勾配インデックスを算出する。
【０１６０】
学習用データ保存部５０１は、差分値算出部４０１において算出した差分値絶対値ｄが閾値Ｔｈ１未満であるか否かを判定する。すなわち、ｄ＜αであるか否かを判定する（α＝閾値Ｔｈ１）。差分値絶対値ｄが閾値Ｔｈ１未満である場合、すなわちｄ＜αである場合、学習用データ保存部５０３は、勾配インデックス毎に学習用データを保存する。
【０１６１】
［３．４  線形予測パラメータ推定の説明］
学習用データ保存部５０３の動作を説明する前に、線形予測のパラメータを推定する方法について説明する。
【０１６２】
一般に、ｍ個の値（ｘ１、ｘ２、・・・、ｘｍ）であるベクトルｘとｍ個の重み係数（ａ０、ａ１、・・・、ａｍ）を用いて値ｙを線形予測する場合、
ｙ  ＝  ａ１＊ｘ１＋ａ２＊ｘ２・・・・ａｍ＊ｘｍ＋ε
と表現できる（εは予測残差である）。
【０１６３】
ベクトルｘと、ｙの組がｎ個、収集された場合において、ｎ個のεの２乗和を最小とする重み係数ｍを求めることを考える。ｎ個のデータを、あるインデックスｔ（ｔ＝１〜ｎ）を用いて、（ｘ１ｔ、ｘ２ｔ、・・・、ｘｍｔ）、ｙｔで表し、ｎ行ｍ列の行列Ｘとｍ列のベクトルＹ、Ａ、Ｅを以下のように定義する。
【数１】
2010154264.tif 000003
・・・（３−１）
【数２】
2010154264.tif 000004
・・・（３−２）
【０１６４】
上記、行列とベクトルを用いると、線形予測の式は
Ｙ＝ＸＡ＋Ｅ
で表される。この式における残差Ｅ、より具体的にはεの二乗和を最小化するＡ（＝Ａ＾）を求める問題は、正規方程式として一般に知られており、
ＸＴＸＡ＾＝ＸＴＹ
である。
【０１６５】
この式から、パラメータＡ＾を求めるために、学習データとして必要なのは、ｍ行ｍ列行列ＸＴＸとｍ行ベクトルＸＴＹであることが分かる。よって、フィルタパラメータ算出部１１８はこれを保存する。
【０１６６】
行列データの保存は、具体的には、行列の各成分を保存することにより行われる。すなわち、ｍ×ｍ個のデータとｍ個のデータ（合計ｍ×ｍ＋ｍ個のデータ）を保存する。
【０１６７】
ところで、ＸＴＸのｉ行ｊ列成分ＸＸｉｊは、
【数３】
2010154264.tif 000005
・・・（３−３）
ＸＴＹのｉ行成分ＸＹｉは、
【数４】
2010154264.tif 000006
・・・（３−４）
と表現される。上記式は、Σの中の値についてｔ＝１からｎまでの和を求めることを意味する。式中の値がｔの時点で決まることを考えると、ｎの時点を待たず、ｔ（ｔ＝１〜ｎ）の各時点で逐次的に計算することができる。
【０１６８】
より具体的には、
データがｔ個の時点のＸＸｉｊをＸＸｉｊｔ、ＸＹｉをＸＹｉｔとおけば、
データが１個である場合（ｔ＝１）のときのＸＸ、ＸＹを
ＸＸｉｊ１＝ｘｉ１ｘｊ１
ＸＹｉ１＝ｘｉ１ｙ１
と計算しておき、データｔ（ｔは２からｎの整数）が得られた時点で、逐次的に
ＸＸｉｊｔ＝ＸＸｉｊｔ−１＋ｘｉｔｘｊｔ                    ・・・（３−５）
ＸＹｉｔ＝ＸＹｉｔ−１＋ｘｉｔｙｔ                        ・・・（３−６）
のように、ＸＸ、ＸＹの値を更新する。
【０１６９】
最終的な行列ＸＸｉｊおよび逐次的な計算に用いるＸＸｉｊｔはｍ行ｍ列行列であり、最終的なベクトルＸＹｉおよび逐次的な計算に用いるベクトルＸＹｉｔはｍ行ベクトルであるから、保存領域としては、パラメータ数がｍ個の場合に対し（ｍ×ｍ＋ｍ）個が必要となる。
【０１７０】
［３．５  フィルタ処理の学習データ］
次にフィルタ処理の場合の具体的な学習データについて説明する。境界からの距離ｋにおけるフィルタ対象画素Ｐｋのフィルタ処理後の画素値をｐｋ´とし、フィルタ対象画素と同じ側のブロックの境界からの距離ｉの画素の画素値ｐｉ（ｋ＝０〜ｌ−１）、フィルタ対象画素の反対側のブロックの境界からの距離ｉの画素の画素値ｑｉ（ｉ＝０〜ｍ−１）と、境界からの距離ｋのフィルタ対象画素に対する重み係数αｋｉ（ｉ＝０〜ｌ−１）、βｋｉ（ｋ＝０〜ｍ−１）、γｋを用いて、
フィルタ処理は、
ｐｋ´＝  Σαｋｉ×ｐｉ＋Σβｋｉ×ｑｉ＋γｋ    ・・・（３−７）
で表現される。
【０１７１】
フィルタ処理後の画素値はｐｋ´であるが、これが入力画像の画素値ｐｐｋに最も近い場合が適当と考えられる。そのため、（ｌ＋ｍ＋１）個パラメータαｋｉ、βｋｉ、γを求めることが求められる。この場合、学習用データは、（ｌ＋ｍ＋１）行（ｌ＋ｍ＋１）列の行列と、（ｌ＋ｍ＋１）列のベクトルを逐次的に求めておけば良い。
【０１７２】
［３．６  本実施形態における学習データ］
本実施形態のフィルタパラメータは、第１実施形態で説明したとおり、表現形式ａと表現形式ｂで表現される。学習用データ保存部５０１は、フィルタパラメータがどの表現形式であるかによって、異なる学習用データを保存する。
【０１７３】
表現形式ａの場合、フィルタパラメータは、フィルタ処理における重み係数を表す。そのため、重み係数を求めるための学習用データを保存する。
【０１７４】
境界からの距離がｋの場合における重み係数をＷｋであるとすると、フィルタ処理は、
ｐｋ´＝  Ｗｋ×ｐｋ＋（１―Ｗｋ）×ｑ０  ・・・（３−８）
で表現される。表現を変更すると
ｐｋ´―ｑ０＝  Ｗｋ×（ｐｋ―ｑ０）      ・・・（３−９）
である。
【０１７５】
この線形予測では、求めるパラメータｍは１個であるから、境界からの距離がｋの場合の行列ＸＸ（ｋ）、ベクトルＸＹ（ｋ）はともにスカラーとなり、フィルタ対象画素ｐｋに対応する入力画像がｐｐｋであるとすると、式（３−３）、式（３−４）から、データのインデックスｔ（ｔは１からｎの整数）に対して、
【数５】
2010154264.tif 000007
・・・（３−１０）
【数６】
2010154264.tif 000008
・・・（３−１１）
で求める。
【０１７６】
学習用データ保存部５０１は、勾配値パラメータ別に、また、境界からの距離ｋ別にＸＸ（ｋ）とＸＹ（ｋ）の値を算出しこれを保存する。
【０１７７】
表現形式ｂの場合、フィルタパラメータは、フィルタ処理の重み係数を算出する式のパラメータを表す。第１実施形態で説明したとおり、
重み係数は
Ｗｋ  ＝  Ｋ１  −  Ｋ２  ＊  ｋ      （ｋ＜Ｋ２）
＝  ０                          （ｋ＞＝Ｋ２）
により求める。
【０１７８】
このパラメータを用いると、フィルタ処理の式は、
ｐｋ´＝  （Ｋ１−Ｋ２×ｋ）ｐｋ＋（１―Ｋ１＋Ｋ２×ｋ）ｑ０
＝  Ｋ１（ｐｋ―ｑ０）＋Ｋ２（ｋ×ｑ０−ｋ×ｐｋ）＋ｑ０
と表現される。
【０１７９】
変形すると、
ｐｐｋ  ―  ｑ０  ＝  ａ１（ｐｋ―ｑ０）＋ａ２（ｋ×ｑ０−ｋ×ｐｋ）＋ε
となる。
【０１８０】
従って、フィルタパラメータＫ１及びＫ２を求める学習用データとしては、
ｘ１＝ｐｋ―ｑ０
ｘ２＝ｋ×ｑ０−ｋ×ｐｋ
として、式（３−５）、式（３−６）に示すとおりＸＸとＸＹを算出し保存すれば良い。
【０１８１】
学習用データとしては、表現形式ａ、表現形式ｂともに勾配値別の値を保存する。学習用データの数としては、線形予測のパラメータをｍ個とすると、表現形式ａの場合で（ｍ×ｍ＋ｍ）×勾配インデックスの数×境界からの距離ｋの数の学習用データが必要となる。
【０１８２】
上記の説明では、パラメータ数ｍは１であるから、例えば、勾配インデックスの数を４、境界からの距離ｋを８とすると、（１×１＋１）×４×８＝６４個になる。
【０１８３】
表現形式ｂの場合には（ｍ×ｍ＋ｍ）×勾配インデックスの数の学習用データが必要となる。上記の説明では、パラメータ数ｍは２であるから、例えば、勾配インデックスの数を４とすると、（２×２＋２）×４＝４８個になる。
【０１８４】
図２３、図２４、図２５は学習用データ保存部５０１で保存されるデータを模式的に示すものである。図２３に示されるとおり、学習用データ保存部５０１は、勾配インデックス別に対応する学習用データを保存する。学習用データは先に説明したとおり、表現形式ａでは、勾配別距離ｋ毎のＸＸ（ｋ）とＸＹ（ｋ）の値であり、表現形式ｂでは、勾配別のＸＸとＸＹである。
【０１８５】
学習用データ保存部５０１は、また、ブロックサイズ管理部２１２の出力に従い、ブロックサイズ毎に、学習用データを保存することが好適である。この場合、図２４に示すとおり、ブロックサイズ別および勾配インデックス別に対応する学習用データを保存する。
【０１８６】
また、図２５に示すとおり、水平境界と垂直境界ごとにさらに分けて、学習用データを保存することも好適である。特にブロックサイズが大きい場合、及び、ブロックの横サイズと縦サイズが異なる場合に、水平境界と垂直境界で分けて、学習データを保存すると好適である。
【０１８７】
［３．７  パラメータ推定部の説明］
パラメータ推定部５０２は、学習用データ保存部５０１に保存されたデータを用いて、線形予測のパラメータを推定する。本実施形態の説明では最小二乗法による推定を用いる。
【０１８８】
［３．８  最小二乗法による線形予測パラメータ推定］
既に説明したｍ行ｍ列の学習用データＸＸ、ｍ行の学習用データＸＹとした場合、誤差の２乗和を最小とする線形予測のパラメータＡは、以下の正規方程式で示すことができる。
【０１８９】
ＸＴＸＡ＾＝ＸＴＹ
この正規方程式の解となるパラメータＡ＾は、一般的にはＸＸの逆行列を求めることで算出可能である。
【０１９０】
具体的には、パラメータの数が１の場合逆行列は、除算により求まる１／ＸＸであり容易に求められる。パラメータの数が２個、３個の場合も簡単な式により算出は容易である。
【０１９１】
パラメータ数が多くなるにつれて逆行列を求めることは困難になる。この場合、既存の手法であるＬＵ分解を用いて、逆量列を用いずにＡを求めることが演算量の上から最適である。
【０１９２】
ＬＵ分解においては、ＸＸをｍ行ｍ列の下三角行列Ｌと、ｍ行ｍ列の上三角行列Ｕに分解する。この分解には、既存の手法であるドゥーリトル法もしくはクラウト法を用いる。
この分解により、正規方程式は、
ＬＵＡ＝ＸＹ
と表現される。
【０１９３】
まず、既存の手法であるガウスの消去法を用いて、ＵＺ＝ＸＹを満たす行列Ｚを求める。続いて、同じくガウスの消去法を用いて、ＬＡ＝Ｚを満たすＡを求める。この計算により、１００個を超えるパラメータを持つ場合においても容易に計算することができる。
【０１９４】
なお、ＬＵ分解を用いず、ガウスの消去法を直接用いることにより、ＸＸＡ＝ＸＹを満たすＡを解くことも可能である。この場合の演算量は、逆量列を求めて解く場合よりも小さく、ＬＵ分解を用いる場合よりも大きくなる。
【０１９５】
パラメータ推定部１０５は、勾配値別の学習データを用いて、学習用データからパラメータを求める。
【０１９６】
パラメータが距離ｋに応じて決まる１つの重み係数の場合は、既に式（３−８）、式（３−９）で示したような学習データの場合であり、除算により重み係数Ｗｋを求める。
【０１９７】
Ｗｋ＝ＸＹ／ＸＸ
なお、学習用データが、ブロックサイズ別である場合にはブロックサイズ別にパラメータを求める。
【０１９８】
また、学習用データ保存部５０１に保存された学習データのパラメータの数が２つ、もしくは３つの場合には、ＸＸの逆行列を求めることにより、
Ａ＾＝（ＸＴＸ）−１ＸＴＹ
により、パラメータを求める。パラメータの数が３つ以上の場合には、ＬＵ分解もしくはガウスの消去法を利用した方法によってパラメータを求める。なお、パラメータ数が１〜３の場合もＬＵ分解もしくはガウスの消去法を用いた方法を用いても構わない。
【０１９９】
算出したフィルタパラメータは、可変長符号化部３１４に出力される。可変長符号化部３１４に出力されたフィルタパラメータは、可変長符号化され符号化データとして、画像符号化装置３００外に出力される。フィルタパラメータが実数の場合には、例えば２のｎ乗をかけた上で整数化し、ｎビットの整数として符号化することが適当である。なお、ｎは、所定の定数である。
【０２００】
なお、上記の説明では、フィルタパラメータを可変長符号化しているが、算出したフィルタパラメータは、可変長符号化することなく、画像符号化装置と画像復号装置に同じ値を備える構成としても良い。
【０２０１】
以上説明したとおり第３実施形態の画像符号化装置は、フィルタ対象画素とその周辺の画素値と入力画像から算出される値である学習用データを勾配値別に保存し、保存した学習用データを用いて、勾配値別のフィルタパラメータを算出することによって、フィルタ処理に最適な重み係数を求めるフィルタパラメータを得ることができる。また、そのフィルタパラメータを可変長符号化することにより、画像復号装置で、最適な重み係数を用いたフィルタ処理が可能になり、符号化効率が向上する。
【図面の簡単な説明】
【０２０２】
【図１】第１実施形態の画像復号装置１００の構成を示すブロック図である。
【図２】第１実施形態における境界を説明する図である。
【図３】第１実施形態におけるフィルタ部の構成を示すブロック図である。
【図４】第１実施形態におけるフィルタ画素を説明する図である。
【図５】第１実施形態における勾配算出部の構成を示すブロック図である。
【図６】第１実施形態における表現形式ａのフィルタパラメータを説明する図である。
【図７】第１実施形態における表現形式ｂのフィルタパラメータを説明する図である。
【図８】第１実施形態におけるフィルタパラメータ保存部の動作を説明する図である。
【図９】第１実施形態におけるフィルタパラメータ保存部の動作を説明する図である。
【図１０】第１実施形態におけるフィルタパラメータ保存部の動作を説明する図である。
【図１１】第２実施形態の画像復号装置の構成を示すブロック図である。
【図１２】第２実施形態において可変長符号化方式により切り替えられる符号化する変換係数の位置を説明する図である。
【図１３】第２実施形態において、符号化する変換係数の位置を説明するための図である。
【図１４】第２実施形態においてヘッダの構成を説明する図である。
【図１５】第２実施形態において符号化する変換係数の位置を説明するための図である。
【図１６】第２実施形態において符号化する変換係数の位置の選択方法を説明する図である。
【図１７】第２実施形態におけるブロックサイズの設定方法を示す図である。
【図１８】第２実施形態におけるブロックサイズの設定方法を示す図である。
【図１９】第２実施形態におけるブロックサイズの設定方法を示す図である。
【図２０】第２実施形態における周波数成分算出部の動作を説明する図である。
【図２１】第３実施形態の画像符号化装置の構成を示すブロック図である。
【図２２】第３実施形態のフィルタパラメータ算出部の構成を示すブロック図である。
【図２３】第３実施形態における学習用データ保存部の動作を説明する図である。
【図２４】第３実施形態における学習用データ保存部の動作を説明する図である。
【図２５】第３実施形態における学習用データ保存部の動作を説明する図である。
【図２６】従来における境界を説明する図である。
【符号の説明】
【０２０３】
１００  画像復号装置
２００  画像復号装置
３００  画像符号化装置
１１１  予測部
１１４  可変長符号化復号部
１１５  逆量子化部
１１６  逆変換部
１１７  フレームメモリ
１１８  フィルタパラメータ算出部
５０１  学習用データ保存部
５０２  パラメータ推定部
１１９  フィルタパラメータ保存部
１２０  フィルタ部
４０１  差分値算出部
４０２  勾配評価部
６０１  差分算出部
６０２  勾配値算出部
６０３  勾配インデックス算出部
６０４  周波数成分量算出部
４０３  重み係数算出部
４０４  画素値算出部
２０１  ブロックサイズ管理部
３１２  変換部
３１３  量子化部
３１４  可変長符号化部
【図１】
2010154264.tif 000009
【図２】
2010154264.tif 000010
【図３】
2010154264.tif 000011
【図４】
2010154264.tif 000012
【図５】
2010154264.tif 000013
【図６】
2010154264.tif 000014
【図７】
2010154264.tif 000015
【図８】
2010154264.tif 000016
【図９】
2010154264.tif 000017
【図１０】
2010154264.tif 000018
【図１１】
2010154264.tif 000019
【図１２】
2010154264.tif 000020
【図１３】
2010154264.tif 000021
【図１４】
2010154264.tif 000022
【図１５】
2010154264.tif 000023
【図１６】
2010154264.tif 000024
【図１７】
2010154264.tif 000025
【図１８】
2010154264.tif 000026
【図１９】
2010154264.tif 000027
【図２０】
2010154264.tif 000028
【図２１】
2010154264.tif 000029
【図２２】
2010154264.tif 000030
【図２３】
2010154264.tif 000031
【図２４】
2010154264.tif 000032
【図２５】
2010154264.tif 000033
【図２６】
2010154264.tif 000034