(実施形態1)
本発明の一実施形態に係る動画像符号化装置について図面を参照しながら説明する。
図1は、動画像符号化装置の要部構成を示すブロック図である。
(動画像符号化装置1)
動画像符号化装置1は、その一部に、H.264/AVC規格、および、VCEGで検討されている技術を用いている動画像符号化装置である。
図1に示すように、動画像符号化装置1は、変換・量子化部11、可変長符号化部12、逆量子化・逆変換部13、バッファメモリ14、イントラ予測画像生成部15、インター予測画像生成部16、予測方式制御部18、動きベクトル冗長性削減部19、加算器21、減算器22、デブロッキングフィルタ50、および、適応フィルタ部100を備えている。
動画像符号化装置1には、隣接する複数の画素から構成されるブロック画像(以下「マクロブロック」と呼ぶ)に分割された入力画像#1が入力される。
動画像符号化装置1は、入力画像#1の符号化処理を行い、符号化データ#2を出力する。
変換・量子化部11は、マクロブロックに分割された入力画像#1と、後述する予測方式制御部18から出力される予測画像#18aとの差分画像#22を、DCT(Discrete Cosine Transform)変換により、周波数成分へ変換した後、当該周波数成分の量子化を行い、量子化予測残差データ#11を生成する。ここで、上記量子化とは、上記周波数成分を整数値に対応付ける演算のことである。また、上記DCT変換、および、量子化は、マクロブロックを分割したブロック単位で行われる。以下では、処理の対象となるマクロブロックを「対象マクロブロック」と呼び、処理の対象となるブロックを「対象ブロック」と呼ぶ。
逆量子化・逆変換部13は、量子化予測残差データ#11の復号を行い、予測残差#13を生成する。具体的には、逆量子化・逆変換部13は、量子化予測残差データ#11の逆量子化、すなわち、量子化予測残差データ#11を構成する整数値の周波数成分への対応付け、および、当該周波数成分の逆DCT変換、すなわち、当該周波数成分に基づいた対象マクロブロックの画素成分への逆変換を行い、予測残差#13を生成する。
加算器21は、予測残差#13と、予測画像#18aとを加算し、復号画像#21を生成する。生成された復号画像#21は、デブロッキングフィルタ50に供給される。
デブロッキングフィルタ50は、復号画像#21におけるブロック境界、またはマクロブロック境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、復号画像#21における当該ブロック境界、またはマクロブロック境界に対してデブロッキング処理を施す。デブロッキング処理が施された画像データは、デブロック画像#50として出力される。
適応フィルタ部100は、入力される画像データ#50の各画素値について、一定の領域に含まれる画素値の、フィルタ係数に基づいた加重線形和をとることによって、出力画像データ#110aを生成し、出力する。
また、適応フィルタ部100には、教師データ#1が入力される。ここで、教師データ#1とは、後述するように、上記フィルタ係数を決定する際に参照される画像データのことである。教師データ#1の具体的な例としては、例えば、適応フィルタ部100を備える画像符号化装置に入力される入力画像データが挙げられる。
適応フィルタ部100は、画像データ#50の各画素値について、一定の領域に含まれる画素値の、フィルタ係数に基づいた加重線形和及びオフセット値の加算などをとることによって、出力画像データ#110aを算出する。
より具体的には、適応フィルタ部100は、出力画像データ#110aの座標(x’、y’)における画素値SO(x’、y’)を式(1)によって表される加重線形和によって算出する。
ここで、SI(x、y)は、画像データ#50の座標(x、y)における画素値を表しており、h(i、j)は、画素値SI(x+i、y+j)に乗ぜられるフィルタ係数を表している。また、Rは、上記加重線形和をとる画素の領域(以下、フィルタ参照領域と呼ぶ)を表している。より具体的には、Rは、上記加重線形和の対象となる相対座標のセットを表している。例えば、座標(x、y)における画素を中心とした3×3タップのフィルタリングを行う場合には、R={(−1、−1)、(−1、0)、(−1、1)、(0、−1)、(0、0)、(0、1)、(1、−1)、(1、0)、(1、1)}である。また、hoffsetは、画素値に加算するオフセット値を表している。なお、座標(x’、y’)と座標(x、y)とは同一の座標であってもよいし、1対1の対応を有していれば、異なった座標であってもよい。また、座標(x’、y’)と座標(x、y)との具体的な対応関係は、本発明を限定するものではなく、適応フィルタ部100が実装される画像処理装置の具体的な構成により定められる。
一般に、M×Nタップのフィルタリングは、フィルタ係数h(i、j)を各成分に持つM×N行列である2次元のフィルタ係数行列Hと、上記オフセットhoffsetとによって特徴付けることができる。フィルタリング処理に用いるフィルタ係数のうち、参照画素にかかるフィルタ係数については、フィルタ係数が掛かる参照画素の位置に応じて、2次元的な位置が対応づけられる。これによって個々のフィルタ係数の間には、相対的な位置関係が定められる。
なお、以下では、フィルタ参照領域が、M×Nタップの矩形状の領域である場合を例に挙げて説明を行うが、本発明はこれに限定されるものではなく、ひし形、円形、垂直/水平線分、斜め線分又はその他任意の形状を有するフィルタ参照領域Rに対しても適用することができる。
具体的には、以下の式(2)
によって表されるフィルタ係数行列H、および、オフセットhoffsetを、以下の式(3)によって定義されるM×N+1次元のフィルタ係数ベクトルVにマップする。なお、フィルタ係数ベクトルVを、フィルタ係数セットと呼ぶことにする。
式(3)に示すように、フィルタ係数ベクトルVの1からM×N番目の成分は、フィルタ係数h(i、j)を表しており、フィルタ係数ベクトルVの最後の成分(以下オフセット成分と呼ぶ)は、オフセットhoffsetを表している。
このような記法を用いることによって、フィルタ係数h(i、j)、および、オフセットhoffsetを統一的に表わすことができる。
適応フィルタ部100は、出力画像データ#110aと教師データ#1との相違を最小化するようにフィルタ係数を算出する。具体的には、最小二乗法を用いてフィルタ係数ベクトルVを算出する。算出されたフィルタ係数は量子化が行われる。量子化は小数として求められたフィルタ係数に、整数を割り当てる処理であり、例えば、フィルタ量子化係数をFQPとすると、FQP倍して小数点以下を四捨五入することで量子化後のフィルタ係数が求められる。すなわち、量子化前のフィルタ係数をV(i)、量子化後のフィルタ係数をDV(i)とすると、DV(i)=floor(V(i)×FQP)と表現される。
また、この場合、フィルタ係数の逆量子化は量子化後のフィルタ係数をFQPで割ることで行われる。すなわち、逆量子化後のフィルタ係数V´(i)は、V´(i)=DV(i)/FQPと表現される。
なお、量子化及び逆量子化の前後で、参照画素の重みとして作用するフィルタ係数の和ができるだけ変化しないように量子化後のフィルタ係数を調整することが適当である。具体的には、量子化前のオフセットを除くフィルタ係数の各成分の和を量子化して得られた値をQSUM0、量子化後のオフセットを除くフィルタ係数の各成分の和をQSUM1とし、その差D(=QSUM1−QSUM0)を算出する。次に、量子化後のオフセットを除くフィルタ係数のうち最大であるものに対して、その差Dを引くことで、量子化後のフィルタ係数を補正する。
適応フィルタ部100は、量子化されたフィルタ係数を用いて、フィルタリング処理を施し、出力画像データ#110aをバッファメモリ14に対して出力する。
量子化されたフィルタ係数をDV(i)とし、フィルタリング処理のために参照する画素値をSI(i)とし、オフセットの要素の番号iをn+1とすると、この処理は、式A[Σ(DV(i)×SI(i))]+DV(n+1)]/FQPと示すことができる。ここでは、フィルタリング処理後に逆量子化に対応する処理を行うことで演算量を削減しているが、逆量子化後の係数V(i)´を算出した後にフィルタリング演算を行っても構わない。
また、適応フィルタ部100は、フィルタリング処理に用いたフィルタ係数ベクトルを示す情報であるフィルタ係数情報#101を出力する。フィルタ係数情報#101は量子化された値とする。
なお、本実施形態における適応フィルタ部100は、ほぼ、KTAにおけるALF(Adaptive Loop Filter:適応ループフィルタ)に対応している。すなわち、本使用例における適応フィルタ部100は、整数座標の画素(以下、整数画素と呼ぶ)の画素値を入力として、整数画素の画素値を出力する。
イントラ予測画像生成部15は、バッファメモリ14に格納された復号画像#21から局所復号画像#14a(対象マクロブロックと同じフレームの既復号領域)を抽出し、局所復号画像#14aに基づいてフレーム内予測を行い、イントラ予測画像#15を生成する。
インター予測画像生成部16は、入力画像#1上の対象ブロックに対し、既にフレーム全体が復号され、バッファメモリ14に格納された参照画像#14bを用いて、動きベクトル#17を算出し、割り付ける。算出された動きベクトル#17は、予測画像生成部16、動きベクトル冗長性削減部19に対して出力されると共に、バッファメモリ14に格納される。また、インター予測画像生成部16は、参照画像#14bに対し、ブロックごとに、動きベクトル#17に基づいた動き補償を行い、インター予測画像#16を生成する。
予測方式制御部18は、マクロブロック単位で、イントラ予測画像#15と、インター予測画像#16と、入力画像#1とを比較し、イントラ予測画像#15、または、インター予測画像#16のうち、何れか一方を選択し、予測画像#18aとして出力する。また、予測方式制御部18は、イントラ予測画像#15、または、インター予測画像#16のうち、何れを選択したのかを表す情報である予測モード#18bを出力する。予測画像#18aは減算器22に入力される。
予測モード#18bは、バッファメモリ14に格納されると共に、可変長符号化部12に入力される。
動きベクトル冗長性削減部19は、インター予測画像生成部16において上記対象ブロックに動きベクトル#17が割り付けられた後、他のブロックに割り付けられ、バッファメモリ14に格納された動きベクトル群#14cに基づいて予測ベクトルを算出する。また、動きベクトル冗長性削減部19は、当該予測ベクトルと、動きベクトル#17との差分をとり、差分動きベクトル#19を生成する。生成された差分動きベクトル#19は、可変長符号化部12に出力される。
減算器22は、対象マクロブロックに対し、入力画像#1と、予測画像#18aとの差分をとり、差分画像#22を出力する。
可変長符号化部12は、量子化予測残差データ#11、差分動きベクトル#19、予測モード#18b、および、フィルタ係数情報#101に対して可変長符号化を行い、符号化データ#2を生成する。
なお、動画像符号化装置1は、デブロッキングフィルタ50を備えない構成でも良い。この場合、適応フィルタ部100はデブロック画像#50ではなく、復号画像#21に対してフィルタリング処理を行う。
(可変長符号化部12について)
本実施形態に係る動画像符号化装置1は、可変長符号化部12が備えるフィルタ係数符号化部1152の符号化処理にその特徴がある。そこで、フィルタ係数符号化部1152が行う符号化について、図面を参照しながら以下に詳細に説明する。
まず、フィルタ係数符号化部1152の構成について図2を参照しながら以下に説明する。
(フィルタ係数符号化部1152の構成)
図2は、フィルタ係数符号化部1152の要部構成を示すブロック図である。
図2に示すように、フィルタ係数符号化部1152は、ソート部1152a、コンテキスト決定部1152b、状態保持部1152c、シンボル化部1152d、符号化部1152eおよび状態更新部1152fを備えている。
ソート部1152aは、入力されたフィルタ係数情報#101に含まれる各フィルタ係数の一部をフィルタリング処理で参照する参照画素の相対座標に基づいてソート処理を施し、ソート処理を施したフィルタ係数情報#101aをシンボル化部1152dに供給する。
なお、オフセットに対応するフィルタ係数を除くと、各フィルタ係数の相対座標は、参照画素の相対座標と基本的には1対1で対応するため、具体的なソート処理は、各フィルタ係数の位置に基づいて行われる。
ここで、「ソート処理」とは、n個のフィルタ係数(a1〜an:添え字はフィルタ係数情報#101に含まれるフィルタ係数の並び順)を、その絶対値が完全に昇順または降順になるようにソートする処理(∀i(|ai|≦|ai+1|)または∀i(|ai|≧|ai+1|)を満たすようにソートする処理)を意味するのではない。すなわち、ここでの「ソート処理」とは、適応フィルタ部100が適用するフィルタ係数セットの性質を利用することにより、各フィルタ係数について、その絶対値が準ソートされるようにする処理(|ai|≦|ai+1|を満たすiの数と|ai|≧|ai+1|を満たすiの数との差が非常に大きくなるようにする処理)のことを意味するのであるが、詳細については後述することとする。
なお、オフセットに対応するフィルタ係数についてはソート処理を行わない。具体的には、オフセットに対応するフィルタ係数をn+1番目のフィルタ係数としソート処理を行わない。
また、ソート部1152aがフィルタ係数情報#101aを供給する処理は、フィルタ係数情報#101aに含まれているフィルタ係数の並び順で(a1、a2、a3・・の順に)、フィルタ係数ai(i∈n)を1つずつ供給することにより行われる。
シンボル化部1152dは、ソート部1152aから供給されたフィルタ係数aiを、フィルタ係数aiの絶対値に応じた数のシンボル「1」を含むシンボル列に変換する。より具体的には、シンボル化部1152dは、フィルタ係数aiの絶対値が表わす数だけ連続する「1」の末尾に「0」を付加し、さらに、フィルタ係数の正負を表わすシンボル(正の場合「0」、負の場合「1」)を付加することによりシンボル列に変換する。従って、例えば、フィルタ係数aiが「−4」である場合、「111101」というシンボル列に変換されることとなる。
そして、シンボル化部1152dは、シンボル列の先頭からシンボルを1つずつ符号化部1152eおよび状態更新部1152fに供給する。
コンテキスト決定部1152bは、ソート処理済みのフィルタ係数セットにおいて符号化対象係数が何番目の何番目の係数であるか、および、符号化対象シンボル列において符号化対象シンボルが何ビット目のシンボルであるかに応じて、シンボル列中の符号化対象ビット(シンボル)を符号化するために用いるコンテキストを決定する。コンテキストとは、同種の特徴(ここでは「1」「0」の確率)を持つ符号化対象ビットをグループ化したもので、同一グループに対し同様の確率を用いて符号化するために用いられる。具体的には、コンテキスト決定部1152bは、フィルタ係数aiのシンボル列のビット毎に、シンボル列の何ビット目を符号化するかを示すシンボル位置の情報を符号化部1152eから受け取り、符号化部1152eで用いるコンテキストを示すインデックスを出力する。ここでは、i>=1かつi<=9の場合のインデックスを1、9<i<=nの場合のインデックスを2、i=n+1、すなわち、オフセットに対応する係数のインデックスは3とする。また、iによらずシンボル列のM個目(ここではM=8)以降のビットのインデックスを4とする。また上記に依らず、正負の符号を表わすシンボルのインデックスを5とする。
状態保持部1152cは、コンテキスト毎に、符号化部1152eで使う符号化処理パラメータ(「1」「0」の確率、もしくは確率に対応する状態)を記憶しており、コンテキストインデックスの値に対応する符号化処理パラメータを出力する。
符号化部1152eは、シンボル化部1152dから供給されたシンボル列の各ビットを状態保持部1152cが保持する符号化処理パラメータに基づいて符号化する。
具体的には、状態保持部1152bに入力されたコンテキストインデックスに対応する、状態保持部1152bに保持されている符号化処理パラメータに基づいて符号化する。本実施形態は、シンボル列を適応的に符号化する点、すなわち、シンボル列の各ビットを符号化するたびに、状態保持部1152bに保持されている符号化処理パラメータを更新していく点に特徴がある。
状態更新部1152fは、前回符号化したシンボル列のビット(前回ビット)の値に応じて、前回ビットの値がより短く符号化されやすいように、次のビットの符号化に用いる符号化パラメータを更新する。ここでは「1」が入力されたら「1」の確率を増加させ、「0」が入力されたら「1」の確率を減少させる。
状態更新部1152fを上記のように動作させると、算術符号において、先に符号化したフィルタ係数の値の大きさ(絶対値)に応じて、次のフィルタ係数を符号化することが可能になり、高い符号化効率でフィルタ係数を符号化することができる。
図11は、符号化データの構成の一例である。この図を参照し、符号化部1152eに入力されるシンボル列が「111101」である場合を例として適応的な符号化を説明する。なお、前記入力されるシンボル列に対応するフィルタ係数の位置iは12であるとする。
コンテキスト決定部1152bは、フィルタ係数の位置i=12からコンテキストインデックスの値として2を出力する。状態保持部1152cは、コンテキスト2の「1」の確率を出力する。ここではP1であるものとする。
符号化部1152eは、確率P1を用いて「111101」の1ビット目「1」を符号化する。そして、符号化部1152eは、使用した確率P1を状態更新部1152fに出力する。状態更新部1152fは、符号化部1152eから確率P1が入力され、シンボル化部1152dから符号化ビット「1」が入力されると、コンテキスト2の「1」の確率をP2に更新する。更新後の確率は、状態保持部1152cで保持される。
次に、符号化部1152eは、確率P2を用いて「111101」の2ビット目「1」を符号化する。そして、符号化部1152eは、使用した確率P2を状態更新部1152fに出力する。状態更新部1152fは、符号化部1152eから確率P2が入力され、シンボル化部1152dから符号化ビット「1」が入力されると、コンテキスト2の「1」の確率をP3に更新する。
同様に、「111101」の3、4ビット目の「1」を符号化し、コンテキスト2の確率をP5に更新する。
次に、符号化部1152eは、確率1−P5を用いて「111101」の5ビット目「0」を符号化する。そして、符号化部1152eは、使用した確率P5を状態更新部1152fに出力する。状態更新部1152fは、符号化部1152eから確率P5が入力され、シンボル化部1152dから符号化ビット「0」が入力されると、コンテキスト2の「1」の確率をP6に更新する。
フィルタ係数の絶対値が復号されると、最後に、正負の符号を符号化するためのコンテキストインデックス5に対応する確率を状態保持部1152cから読み出し、正負の符号を符号化する。この確率をPsignとする。
結局、符号化部1152eは、確率P1、P2、P3、P4、1−P5、Psignで「111101」を符号化して得られた符号化データを出力する。
次に、フィルタ係数の位置i+1(ここでは=13)のシンボル列を符号化する際には、コンテキスト2に保持された確率P6が用いられる。
以上の処理によって、符号化部1152eは、フィルタ係数ai-1の絶対値が大きいほど「1」の確率が大きく「0」の確率が小さい出現確率を用いて、フィルタ係数aiから生成されたシンボル列を算術符号化することになる。また、フィルタ係数情報#101aは準ソートされているので、全くソートされていない場合に比べ、フィルタ係数ai-1の絶対値とフィルタ係数aiの絶対値との差は小さくなり、符号化するシンボル列の中に「1」が実際に出現する確率と算術符号化に用いる「1」の出現確率とが近くなる傾向が強くなる。
符号化部1152eは、フィルタ係数a1〜anのすべてについてシンボル列の符号化処理を終えると、各シンボル列を符号化した順序で格納したデータを外部に出力する。
フィルタ係数符号化部1152は、動きベクトルと同様、フィルタ係数をその予測値との差分として符号化しても良い。この場合、フィルタ係数符号化部1152は、内部に、フィルタ係数を予測するフィルタ係数予測部と、フィルタ係数と予測値との差分を算出する手段を備える。差分値を符号化する場合にも、中心位置に近いほど絶対値が大きく、また、近い距離にあるフィルタ係数の絶対値は近い値をとるという性質があるため、同様の効果を奏する。フィルタ係数予測部は、例えば、前フレームでの符号化に用いたフィルタ係数を保持しておき、その値を予測値とすることで、フィルタ係数の予測を行う。
図23は、外部に出力される上記データを模式的に示した図である。図23に示すように、上記データはスライスごとにスライスヘッダに格納される。また、中心位置に近いフィルタ係数ほど符号化されたシンボルがスライスヘッダの先頭に近い位置に格納され、中心位置から遠いフィルタ係数ほど符号化されたシンボルがスライスヘッダの末尾に近い位置に格納されるようになっている。つまり、動画像復号装置で符号化データを復号してフィルタ係数セットを生成する際に、スライスヘッダにおける符号化されたシンボルの位置を、生成するフィルタ係数セットにおけるフィルタ係数の位置を示す位置情報として利用することができるようになっている。
なお、フィルタ係数符号化部1152が符号化に用いるアルゴリズムは算術符号である必要はなく、ハフマン符号やゴロム符号などの他の可変長符号化アルゴリズムを用いても良い。ハフマン符号を用いる場合には、フィルタ係数符号化部1152が、複数のハフマン符号表を備え、さらに、各ハフマン符号表が、フィルタ係数符号化部1152が絶対値からハフマン符号表を選択するために参照する選択テーブルを備えるようにする。これにより、フィルタ係数符号化部1152は、符号化順序iで符号化したフィルタ係数の値から、選択テーブルを用いて、次の(符号化順序i+1の)符号化に用いるハフマン符号表を選択することにより、同じような絶対値が連続する場合に適した符号化データを生成することができる。なお、符号化アルゴリズムとしてゴロム符号を用いる例については後で詳細に説明することにする。
(ソート部1152aが行うソート処理について)
ここでは、ソート部1152aが行うソート処理について以下に説明する。
前述したように、適応フィルタ部100が適用するフィルタ係数ベクトルは、その中心位置からの距離が大きいフィルタ係数ほどその絶対値が小さくなり、中心位置に近いフィルタ係数ほどその絶対値が大きくなる傾向がある。
ここで、中心位置は、フィルタリング処理で用いる参照画素の重心、もしくは、その付近とする。例えば、M×Nの矩形の2次元フィルタであれば。(M/2、N/2)を中心とする。中心位置は小数座標でも良いし、切り捨て、切り上げなどにより整数座標としても良い。
本実施形態において、ソート部1152aが行うソート処理は、フィルタ係数に対応する参照画素の相対位置に応じてフィルタ係数を2次元的に配置した場合に中心位置に近いフィルタ係数が中心位置から遠いフィルタ係数よりも先になるような並び順に、あるいは、中心位置から遠いフィルタ係数が中心位置に近いフィルタ係数よりも先になるような並び順に、入力されたフィルタ係数情報#101に含まれる各フィルタ係数を並び替える処理である。このソート処理により、フィルタ係数は、その絶対値の大きさの大きい順または小さい順に、準ソートされることになる。
このように、ソートを行うと、2次元的に表現されるフィルタ係数をラスタ順に符号化するよりもフィルタ係数間の相関が高くなることから、先に符号化したフィルタ係数の値の大きさ(絶対値)に応じて、次のフィルタ係数を符号化する方法において、一層、符号化効率を向上させることができる。
なお、1つのフィルタ係数が複数の参照画素の重みとして用いられる場合には、そのフィルタ係数の配置は、重みが最大の参照画素の相対位置に応じて行われる。また、中心位置から対称の位置に存在する2つの参照画素の重み係数に同一のフィルタ係数を用いる場合などでは、重みが最大の参照画素の位置が複数存在することになるが、この場合、X座標が0以上である参照画素の相対位置に応じてフィルタ係数の配置を行う、などのルールを定めておくことより、フィルタ係数を配置することができる。
また、ソート処理にはいくつかのバリエーションがあるが、その具体例について図面を参照しながら、説明する。なお、ここでのソート処理の具体例は、ソート部1152aが中心位置に近いフィルタ係数が中心位置から遠いフィルタ係数よりも先になるような並び順で行う場合のものである。また、適応フィルタ部100が適用するフィルタ係数セットの各フィルタ係数が2次元的に配置される例として、以下の式(4)に示すフィルタ係数セットM1、式(5)に示すフィルタ係数セットM2、および式(6)に示すフィルタ係数セットM3を挙げて説明する。式(4)〜式(6)から分かるように、適応フィルタ部100が適用するフィルタ係数セットは、中心位置のフィルタ係数程、その絶対値が大きくなり、中心から遠いフィルタ係数程、その絶対値が小さくなる傾向が強い。
(ソート処理の具体例1)
ソート処理の具体例について図3を参照しながら以下に説明する。
図3(a)はフィルタ係数の2次元配置上の中心位置と中心位置からの相対位置との距離の定義を模式的に示した図であり、図3(b)は図2のフィルタ係数符号化部が各要素を符号化する順序を模式的に示した図である。
図3(a)に示すように、本ソート処理において、フィルタ係数の2次元配置上の相対位置と中心位置との距離は、ユークリッド距離の2乗、d=(k-i)2+(l-j)2として定義される。ここで、中心位置はi行j列目の位置であり、各要素の位置はk行l列目の位置である。なお、距離としては、ユークリッド距離、すなわち、dの平方根を用いても良い。
本ソート処理は、フィルタ係数セットの各フィルタ係数を、2次元配置上の中心位置からの距離dが小さい順に並べる処理である。本ソート処理によって、フィルタ係数符号化部1152が各要素を符号化する順序は図3(b)のようになる。
従って、本ソート処理をフィルタ係数セットM1に適用すると、フィルタ係数セットM1の各フィルタ係数は、a1=16、a2=−8、a3=−8、a4=−9、a5=−9、a6=3、・・・、a49=0のように並び替えられることになる。すなわち、a3とa4とのように、|a3|<|a4|となるものも存在するものの、概々、|ai|≧|ai+1|が成立している。
なお、中心位置からの距離dが等しい複数のフィルタ係数については、それらを任意の順序に並べて構わないが、例えば、(l-j)2<(k-i)2を満たすフィルタ係数を優先して並べる、あるいは、(l-j)2が同一である場合にlが小さいほうを優先して並べるなどの規則を設けてもよい。
なお、図12、図13は、矩形以外の2次元配置の例を示すものであり、図12では菱形の例を、図13では斜め線分の例を示している。図12(a)、図13(a)は距離の定義を模式的に示した図であり、図12(b)、図13(b)は符号化する順序の定義を模式的に示した図である。図12(a)、図13(a)からわかるように、菱形や斜め線分の2次元配置においても、距離の定義としてユークリッド距離の2乗を用いることができる。
(ソート処理の具体例2)
ソート処理の別の具体例について図4を参照しながら以下に説明する。
図4(a)はフィルタ係数の2次元配置上の相対位置と中心位置との距離の定義を模式的に示した図であり、図4(b)は図2のフィルタ係数符号化部が各要素を符号化する順序を模式的に示した図である。
図4(a)に示すように、本ソート処理において、フィルタ係数の2次元配置上の相対位置と中心位置との距離は、d=|k-i|+|l-j|として定義される。中心位置は(i、j)であり、各要素の位置は(k、l)である。
本ソート処理も、具体例1のソート処理と同様、フィルタ係数の2次元配置上の中心位置からの距離dが小さい順にフィルタ係数を並べる処理であるが、さらに、最後に並べたフィルタ係数の近傍に位置するフィルタ係数を近傍に位置しないフィルタ係数よりも優先的に並べていくことを特徴としている。ここで、ある位置に対する近傍とは、当該位置から最も近いフィルタ係数への距離をdとしたとき、d+δ以内の位置を表わす。δは適当な閾値であり、近傍に含まれるフィルタ係数を選択する場合に、選択される係数の個数が必要にして最小となるよう設定する。適応フィルタ部100が適用するフィルタ係数セットの各フィルタ係数を2次元的に配置した場合、フィルタ係数セットM2のように、近傍に位置するフィルタ係数同士の絶対値の差が近傍に位置しないフィルタ係数同士の絶対値の差よりも小さい傾向が強いものも多く存在するため、このような順序でソート処理を行っても、フィルタ係数を準ソートすることができる場合が多い。
本ソート処理によって、フィルタ係数符号化部が各要素を符号化する順序は図4(b)のようになる。
従って、本ソート処理をフィルタ係数セットM2に適用すると、フィルタ係数セットM2の各フィルタ係数は、a1=16、a2=−9、a3=−9、a4=−8、a5=−8、a6=6、a7=6、a8=8、・・・、a49=0のように並び替えられることになる。すなわち、a7とa8とのように、|a7|<|a8|となるものも存在するものの、概々、|ai|≧|ai+1|が成立している。
(ソート処理の具体例3)
ソート処理のさらに別の具体例について図5を参照しながら以下に説明する。
図5(a)はフィルタ係数の2次元配置上の相対位置と中心位置との距離の定義を模式的に示した図であり、図5(b)は図2のフィルタ係数符号化部が各要素を符号化する順序を模式的に示した図である。
図5(a)に示すように、本ソート処理において、係数の2次元配置上の相対位置の各要素と中心の要素との距離は、d=max(|k-i|,|l-j|)として定義される。中心位置は(i、j)であり、各要素の位置は(k、l)で示される。
本ソート処理も、具体例2のソート処理と同様、フィルタ係数の2次元配置上の中心位置からの距離dが小さい順にフィルタ係数を並べる処理であり、さらに、最後に並べたフィルタ係数に近傍に位置するフィルタ係数を近傍に位置しないフィルタ係数よりも優先的に並べていくことを特徴としている。
本ソート処理によって、フィルタ係数符号化部が各要素を符号化する順序は図5(b)のようになる。
従って、本ソート処理をフィルタ係数セットM3に適用すると、フィルタ係数セットM3の各フィルタ係数は、a1=16、a2=−9、a3=9、a4=−7、a5=−8、・・・、a49=0のように並び替えられることになる。すなわち、a4とa5とのように、|a4|<|a5|となるものも存在するものの、概々、|ai|≧|ai+1|が成立している。
なお、上記ソート処理の具体例1〜3では、すべてのフィルタ係数についてソート処理を適用しているが、ソート部1152aは、必ずしも、フィルタ係数情報#101に含まれるすべてのフィルタ係数にソート処理を施す必要はない。すなわち、距離dが一定の閾値以上であるフィルタ係数についてはソート処理を施さず、フィルタ係数情報#101に格納されている順序でそのまま後段に供給するようにしてもよい。これは、距離dが一定の閾値以上であるフィルタ係数は0または十分小さい値であるという性質をフィルタ係数セットが備えているため、そのようにしてもフィルタ係数情報#101に含まれている各フィルタ係数を準ソートできるからである。また、中心位置のフィルタ係数とオフセットとを最後に符号化するなど、一部のフィルタ係数を固定的な順序で符号化する場合には、該一部のフィルタ係数以外のフィルタ係数についてソートを行う。
なお、距離が少々異なっても、フィルタ係数の値はそれほど変化しないことがある。そのため、ソートに用いる距離としては具体例1〜3をそのまま用いるのではなく、上記の距離を粗く表した値(量子化した値)を用いても良い。量子化する関数Qと上記dを用いてQ(d)のような値を用いる。ここでQには、任意の単調増加関数(例えば、floor(d/dQ)、但し、floorは小数点未満を切り捨てた整数を出力する関数でありdQは2以上の整数)を使うことができる。また、中心位置からの距離が大きければ、距離が異なる2つのフィルタ係数は、その絶対値の差が小さくなることから、距離としてlog(d+1)やdの1/2乗を用いることも適当である。
(符号化アルゴリズムとしてゴロム符号を用いる例)
ここでは、符号化アルゴリズムに算術符号ではなく可変長符号であるゴロム符号を用いる例について説明する。
ゴロム符号は、小さい値に短い符号、大きい値に長い符号を割り当てるものであり、値が0に集中する分布に従って出現するフィルタ係数の符号化に適している。また、状態値m(mは1以上の整数)をパラメータとして符号を変化させることが可能であり、0への集中の度合いが異なる様々な分布に従って出現するフィルタ係数を、好適に符号化することが可能である。
以下、ゴロム符号の生成方法を説明するが、ゴロム符号は、状態値mが1か2以上かで符号化の方法が異なっている。状態値m=1のときは、アルファ符号(unary)を行う。アルファ符号では、符号化対象とする整数値xの数だけ1を出力し、最後に1個の0を出力する。
一方、mが2以上の場合には、符号化対象とする整数値xをmで割った商であるqと、余りrを求める。商qは、アルファ符号を用いて符号化する。次にb0=log2(m)と、b1=ceil(b0)を求める。ここで、ceilは小数点以下を切り上げた整数を出力する関数である。b0が整数の場合には、rをb1ビットで固定長符号化する。b1が整数ではない場合には、b2=2b−mを求め、r<b2である場合には、余りrをb1−1ビットの固定長符号化を行う。逆にr≧b2である場合にはr+b2をb1ビットの固定長符号化を行う。なお、アルファ符号において、符号化対象とする整数値xの数だけ0を出力し、最後に1個の1を出力するようにしてもよい。また、ゴロム符号についても、商qについてqの値が示す数だけ0を出力し、最後に1個の1を出力するようにしてもよい。
以下、図24〜図27を参照しながら、符号化アルゴリズムとしてゴロム符号を用いる場合の動画像符号化装置1の動作を説明する。
なお、符号化アルゴリズムとしてゴロム符号を用いる場合には、算術符号を用いる場合と異なり、シンボル化部1152dはフィルタ係数をシンボルに変換せずに直接、符号化部1152eおよび状態更新部1152fに出力するようになっている。従って、フィルタ係数符号化部1152は、シンボルの符号化毎ではなく、フィルタ係数の符号化毎に状態を更新することになる。より具体的には、状態更新部1152fは、前回符号化したフィルタ係数の絶対値(前回絶対値)に応じて、前回絶対値の値がより短く符号化されやすいように、次のフィルタ係数の符号化に用いる符号化パラメータを更新する。例えば、前回符号化された値を最も短く符号化できるような状態に更新する。
図24は、状態値m=1、2、3に対応するゴロム符号の例である。
図25は、前回符号化/復号したフィルタ係数について、その絶対値から符号化に用いる状態値mを選択する選択テーブルの例である。
図26は、従来の動画像符号化装置が状態値mを更新せずにゴロム符号を用いて符号化した場合における累積符号量を示す表と符号化データとを示した図であり、フィルタ係数セットM1を、状態値m=3に固定されたゴロム符号を用いてラスタ順に符号化する場合の例を示している。
図26の上段に示す表は、左の列から順に、符号化の順番を示す番号、ゴロム符号に用いる状態値m、符号化対象のフィルタ係数、フィルタ係数の絶対値を符号化して得られるシンボル列、フィルタ係数の正負を示す正負シンボル、および累積符号量を示している。また、図26の下段には従来の動画像符号化装置が生成する符号化データを示しているが、符号化データは2進数列になる。すなわち、図26の下段において、符号化データに「|」という区切りを記しているが、フィルタ係数のシンボル間を示す便宜的なものであり、「|」というデータは符号化データに含まれていない。
図26の例では、1番目に、フィルタ係数の値0を、シンボル列「00」と正負シンボルの「空」とを連結したシンボル列「00」に符号化しており、累積符号量は2ビットとなる。2番目に、フィルタ係数の値0を、シンボル列「00」と正負シンボルの「空」とを連結したシンボル列「00」に符号化しており、累積符号量は4ビットとなる。49個の全フィルタ係数を符号化すると、最終的な累積符号量(フィルタ係数セットの符号化データの符号量)は166ビットとなる。なお、この例において最小の符号量を実現する値として状態値m=3を選んでいるので、状態を固定化するゴロム符号ではこれ以上の符号化効率を達成することはできない。
図27(a)(b)は、動画像符号化装置1が、状態値mを更新しながらゴロム符号を用いて符号化した場合における累積符号量を示す表および符号化データの例を示した図である。図27(a)(b)の表の読み方及び符号化データの記述の仕方は、図26と同じである。
図27(a)は、ソート処理を施さない場合の図であり、図27(b)は、図3(b)に示す順序でソート処理を施した場合の図である。
図27(a)の例では、初期状態ではm=5であり、符号化部1152eは、1番目に、状態値m=5のゴロム符号を用いて3ビットで符号化する。そして、状態更新部1152fは、図25に示した選択テーブルを用いてゴロム符号の状態値mを選択し、状態保持部1152cが保持する状態値mを更新する。具体的には、選択テーブルを参照し、前回符号化した値0から状態の値1を得ることにより、状態値mを1に更新する。
2番目に、符号化部1152eは、状態更新部1152fから更新後の状態値(符号化処理パラメータ)1を得ることにより、状態値m=1のゴロム符号を用いて、フィルタ係数の値0を、シンボル列「0」と正負シンボルの「空」とを連結したシンボル列「0」に符号化している。このようにしてすべてのフィルタ係数を符号化すると、最終的な符号量は141ビットになり、状態値mを更新しない場合に比べ、フィルタ係数セットの符号化データの符号量をより大きく削減している。
図27(b)の例では、動画像符号化装置1は、図3(b)の順序によりフィルタ係数にソート処理を施した上で、前回符号化したフィルタ係数の絶対値に応じて、状態保持部1152cが保持する状態を更新することにより符号化を行う。ソート処理後のフィルタ係数の並びは、符号化順に16、−8、−8、−9、−9、3、4、3、4、5、5、3、4、−1、−1、−1、−1、−1、−1、−1、0、0、0、0、−1、−1、−1、−1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0である。
図27(b)の例でも、初期状態ではm=5である。符号化部1152eは、1番目に、フィルタ係数の値16を、シンボル列「111001」と正負シンボルの「0」とを連結したシンボル列「1110010」に符号化するので、累積符号量は7ビットである。そして、状態更新部1152fは、図25に示した選択テーブルを用いてゴロム符号の状態値mを選択し、状態保持部1152cが保持する状態値mを更新する。具体的には、選択テーブルを参照し、前回符号化したフィルタ係数の絶対値16から状態の値5を得ることにより、状態値mを5に更新する。
2番目に、符号化部1152eは、状態更新部1152fから更新後の状態値(符号化処理パラメータ)5を得ることにより、状態値m=5のゴロム符号を用いて、フィルタ係数の値8を、シンボル列「10110」と正負シンボルの「1」とを連結したシンボル列「101101」に符号化する。このようにしてすべてのフィルタ係数を符号化すると、最終的な符号量は128ビットになり、状態値mを更新する場合であっても、ソート処理を施す場合のほうがソート処理を施さない場合よりも、フィルタ係数セットの符号化データの符号量を削減できることがわかる。
なお、この例の状態更新部1152fでは、前回符号化したフィルタ係数の絶対値のみに応じて状態を更新しているが、絶対値に加えて前回の状態を用いることも好適である。より具体的には、状態の更新値を、選択テーブルで得られる状態と前回の状態との平均を用いると、状態の急激な変化を抑えることができ、絶対値が単調的に減少・増加しない場合にも符号量が増加することを防ぐことができる。
(動画像符号化装置1の利点)
以上のように、動画像符号化装置1は、適応ループフィルタを入力画像に適用する適応フィルタ部100と、入力画像に適用するフィルタを表わすフィルタ係数セットの各フィルタ係数について、フィルタ係数の絶対値を符号化する可変長符号化部12と、を備えている。
そして、可変長符号化部12は、フィルタ係数セットの2次元配置上、中心位置からの距離が近いフィルタ係数から順に、かつ/または、近い距離にあるフィルタ係数から順に、
各フィルタ係数の絶対値を、すでに符号化されたフィルタ係数の絶対値に応じて符号化する。
また、適応フィルタ部100が適用する適応ループフィルタのフィルタ係数は、2次元配置上の中心位置からの距離が大きいフィルタ係数ほどその絶対値が小さくなり、中心位置に近いフィルタ係数ほどその絶対値が大きくなる傾向がある。また、近い距離にあるフィルタ係数の絶対値は近い値をとる傾向がある。
したがって、動画像符号化装置1では、符号化する際に適用するフィルタ係数間の相関、すなわち、フィルタ係数の絶対値が、前回符号化されたフィルタ係数の絶対値に近いことを利用して、フィルタ係数の符号化効率を高めることができる。
これにより、符号化装置は、復号装置に伝送するフィルタ係数の符号量を従来に比べ効果的に削減可能であるという効果を奏する。
なお、特に算術符号を利用する場合には、フィルタ係数の絶対値に応じた数の規定のシンボルを含むシンボル列を生成するとともに生成したシンボル列を、すでに符号化されたシンボル列におけるシンボルの出現確率に応じて算術符号化する。このようにすれば、出現確率が実際に出現するシンボルの出現確率と近くなることになり、特に有効に動作する。
(動画像復号装置)
次に、本実施形態に係る動画像復号装置について、図6を参照しながら以下に説明する。
図6は、動画像復号装置の要部構成を示すブロック図である。
動画像復号装置2は、その一部に、H.264/AVC規格、および、VCEGで検討されている技術を用いている動画像復号装置である。
図6に示すように、動画像復号装置2は、可変長符号復号部23、動きベクトル復元部24、バッファメモリ25、予測画像生成部26、イントラ予測画像生成部27、予測方式決定部28、逆量子化・逆変換部29、加算器30、デブロッキングフィルタ50、および、適応フィルタ部100を備えている。
動画像復号装置2は、符号化データ#2を受け、出力画像#3を出力する。
可変長符号復号部23は、符号化データ#2を可変長復号し、差分動きベクトル#23a、サイド情報#23b、量子化予測残差データ#23c、および、フィルタ係数情報#23dを出力する。
動きベクトル復元部24は、差分動きベクトル#23a、および、すでに復号され、バッファメモリ25に格納された動きベクトル#25aから対象パーティションの動きベクトル#24を復号する。
バッファメモリ25には、適応フィルタ部100から出力される出力画像データ#110a、動きベクトル#24、および、サイド情報#23bが格納される。
インター予測画像生成部26は、動きベクトル復元部24によって復号され、バッファメモリ25を経由した動きベクトル#25c、および、バッファメモリ25に格納された参照画像#25dに基づいて、インター予測画像#26を生成する。なお、動きベクトル#25cは、動きベクトル#24と同一の動きベクトルを含む。また、参照画像#25dは、後述する適応フィルタ部100から出力される出力画像データ#110aに対応している。
イントラ予測画像生成部27は、バッファメモリ25に格納された、対象マクロブロックと同じ画像内の局所復号画像#25bから、イントラ予測画像#27を生成する。
予測方式決定部28は、サイド情報#23bに含まれる予測モード情報に基づいて、イントラ予測画像#27、または、インター予測画像#26のうち、何れか一方を選択し、予測画像#28として出力する。
逆量子化・逆変換部29は、量子化予測残差データ#23cに対し、逆量子化、および、逆DCT変換を行い、予測残差#29を出力する。
加算器30は、予測残差#29、および、予測画像#28を加算し、復号画像#3として出力する。また、出力された復号画像#3は、デブロッキングフィルタ50に供給される。
デブロッキングフィルタ50は、復号画像#3におけるブロック境界、またはマクロブロック境界を介して互いに隣接する画素の画素値の差が予め定められた閾値よりも小さい場合に、復号画像#3における当該ブロック境界、またはマクロブロック境界に対してデブロッキング処理を施す。デブロッキング処理が施された画像データは、デブロック画像#50として出力される。
適応フィルタ部100は、デブロック画像#50に対してフィルタリング処理を施す。
(可変長符号復号部23について)
本実施形態に係る動画像符号化装置2は、可変長符号復号部23が備えるフィルタ係数復号部2352の復号処理にその特徴がある。
まず、フィルタ係数復号部2352の構成について図14を参照しながら以下に説明する。
(フィルタ係数復号部2352の構成)
図14は、フィルタ係数復号部2352の要部構成を示すブロック図である。
図14に示すように、フィルタ係数復号部2352は、逆ソート部2352a、コンテキスト決定部1152b、状態保持部1152c、シンボル復元部2352d、復号部2352e、および状態更新部1152fを備えている。既に説明した部材であるコンテキスト決定部1152b、状態保持部1152cおよび状態更新部1152fについては説明を省略する。
復号部2352eは、コンテキスト決定部1152bから出力されたコンテキストインデックスに応じて状態保持部1152cから出力された復号パラメータ(確率もしくは状態)と、符号化データ#2を入力として、算術符号の復号を行い2進数から構成されるシンボル列を、シンボル復元部2352dに出力する。
シンボル復元部2352dは、シンボル列の各シンボルをフィルタ係数に変換し、逆ソート部2352aに出力する。
逆ソート部2352aは、入力された各フィルタ係数の復号順序に基づいて、適応フィルタ部100が必要とするフィルタ係数の順序に並べ替える。すなわち、各フィルタ係数の復号順序と、フィルタ係数に対応する参照画素の相対位置に基づいて2次元配置した場合の位置と、が1対1に対応していることを利用して、2次元配置された各フィルタ係数をラスタスキャンする場合の順序に各フィルタ係数を並びかえる。適応フィルタ部100が、フィルタリング時に用いる参照画素はラスタスキャン順に読みだされるため、処理に用いるフィルタ係数もラスタスキャン順に並べることが適当である。
フィルタ係数に対応する参照画素については既に説明したとおりである。また、フィルタ係数の復号順序は、既に説明したフィルタ係数の符号化順序と同一である。すなわち、フィルタ係数の2次元配置上の位置が、中心位置に近いほど(もしくは遠いほど)先に復号される。さらに/あるいは、前回復号したフィルタ係数と近い距離にあるフィルタ係数が連続して復号される。
なお、オフセットなどの対応する参照画素がないフィルタ係数や、中心位置に存在し、オフセットの前に符号化されたフィルタ係数など、固定的な順序で符号化したフィルタ係数については固定的な順序で復号する。
フィルタ係数復号部2352においても、フィルタ係数符号化部1152と同様、フィルタ係数ai-1の絶対値とフィルタ係数aiの絶対値との差は小さくなるという性質に基づいて符号化された符号化データ#2を復号するため、符号化された符号化データ#2を高効率で復号することができる。既に説明したように、上記性質を有する準ソートされたフィルタ係数は、逆ソート部2352aにより、準ソートされる前の元の位置に戻される。
フィルタ係数復号部2352は、動きベクトルと同様、予測値との差分として符号化されたフィルタ係数を復号しても良い。この場合、フィルタ係数復号部2352は、内部にフィルタ係数予測部、と、差分値と予測値を加算する手段を備える。差分値の場合にも、中心位置に近いほど絶対値が大きく、また、近い距離にあるフィルタ係数の絶対値は近い値をとるという性質があるため、同様の効果を奏する。フィルタ係数予測部は、例えば、前フレームでの符号化に用いたフィルタ係数を保持しておき、その値を予測値とすることで、フィルタ係数の予測を行う。
なお、フィルタ係数復号部2352が復号するために用いる復号アルゴリズムは、算術復号に限らず、ハフマン復号やゴロム復号などの可変長復号であってもよい。ハフマン復号を用いる場合には、フィルタ係数復号部2352は、複数のハフマン符号表を備え、さらに、各ハフマン符号表は、フィルタ係数の絶対値からハフマン符号表を選択するための選択テーブルを備える。これにより、復号順序iでの復号結果から、選択テーブルを用いて、次に(復号順序i+1で)復号に用いるハフマン符号表を選択することにより、ハフマン符号表を参照して符号化された符号化データを復号することができる。
以下では、再び図24〜図27を参照しながら、本実施形態の動画像復号装置2が復号アルゴリズムとして算術復号ではなくゴロム復号を用いる例について詳細に説明する。なお、復号アルゴリズムとしてゴロム復号を用いる場合には、算術復号を用いる場合と異なり、復号部2352eは、シンボルでなくフィルタ係数を状態更新部1152fおよびシンボル復元部2352dに出力するようになっている。また、シンボル復元部2352dは、シンボルでなくフィルタ係数を復号部2352dから受け取り、受け取ったフィルタ係数をそのまま逆ソート部2352aに出力するようになっている。従って、フィルタ係数復号部2352は、シンボルの復号毎ではなく、フィルタ係数の復号毎に状態を更新することになる。
動画像復号装置2では、前回復号したフィルタ係数の絶対値に応じて、状態保持部1152cが保持する状態を更新することにより復号を行う。動画像符号化装置1と同様、動画像復号装置2も、図25に示した選択テーブルを保持しており、状態更新部1152fは、選択テーブルを用いてゴロム符号の状態値mを選択する。なお、状態保持部1152cが保持する状態の初期値は、動画像符号化装置1と同じ初期値であり、ここでは初期値5であるものとする。
以下、動画像符号化装置1においてソート処理が施されずに符号化された符号化データを復号する例と、動画像符号化装置1においてソート処理が施され、符号化された符号化データを復号するとともに逆ソート処理を施す例について、それぞれ、図27(a)および図27(b)を参照しながら説明する。
最初に動画像符号化装置1においてソート処理が施されずに符号化された符号化データを復号する例(すなわち、逆ソート処理を施さない例)について説明する。
図27(a)に示すように、復号部2352eは、1番目に、状態値m=5のゴロム符号を用いてシンボルの「000」を復号し、フィルタ係数の絶対値0を得る。フィルタ係数の絶対値が0であるので正負シンボルは「空」である。そして、状態更新部1152fは、復号部2352eからフィルタ係数0を受け取り、選択テーブルを参照して得た状態の値1に、状態保持部1152cが保持する状態を更新する。
2番目に、復号部2352eは、状態保持部1152cから状態の値(符号化処理パラメータ)1を受け取り、状態値m=1のゴロム符号を用いてシンボルの「0」を復号し、フィルタ係数の絶対値0を得る。同様にして最後まで復号を行うことにより、141ビットの符号化データを復号できる。図26に示すように状態値m=3に固定した場合の符号化データが166ビットであるので、動画像復号装置2は、より効率的に符号化された符号化データを復号できている。なお、復号によりフィルタ係数は、0、0、0、−1、0、0、0、0、0、−1、5、−1、0、0、0、−1、3、−8、3、−1、0、−1、3、−9、16、−9、4、−1、0、−1、4、−8、4、−1、0、0、0、−1、5、−1、0、0、0、0、0、−1、0、0、0の順序で得られる。すなわち、2次元的に配置されたフィルタ係数をラスタスキャンする順序となる。
次に、動画像符号化装置1においてソート処理が施され、符号化された符号化データを復号するとともに逆ソート処理を施す例について説明する。
図27(b)に示すように、逆ソート処理を施さない場合と同様、動画像符号化装置2は、前回符号化したフィルタ係数の絶対値に応じて状態を更新することにより復号を行う。復号部2352eは、1番目に、状態値m=5のゴロム符号を用いてシンボルの「111001」を復号し、フィルタ係数の絶対値16を得る。正負シンボルが「0」であるので、フィルタ係数は正であり、復号部2352eは、フィルタ係数の値を16と復号できる。そして、状態更新部1152fは、復号部2352eからフィルタ係数16を受け取り、選択テーブルを参照して得た状態の値5に、状態保持部1152cが保持する状態を更新する。
2番目に、復号部2352eは、状態保持部1152cから状態の値(符号化処理パラメータ)5を受け取り、状態値m=5のゴロム符号を用いてシンボルの「10110」を復号し、フィルタ係数の絶対値8を得る。正負シンボルが「1」であるので、フィルタ係数は負であり、値は―8と復号できる。同様にして最後まで復号を行うことにより、128ビットの符号化データを復号できる。図27(a)に示すように逆ソート処理を行わない場合の符号化データが141ビットであるので、動画像復号装置2は、逆ソート処理を行わない場合よりもさらに効率的に符号化された符号化データを復号できている。なお、復号によりフィルタ係数は、16、−8、−8、−9、−9、3、4、3、4、5、5、3、4、−1、−1、−1、−1、−1、−1、−1、−1、0、0、0、0、−1、−1、−1、−1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0の順序で得られる。逆ソート部2352aは、このような順序で得られたフィルタ係数を、フィルタ処理に適当な順序、例えばラスタスキャン順に並べるために逆ソート処理を行う。
(適応フィルタ部100の構成)
適応フィルタ部100は、フィルタ係数復号部2352により復号されたフィルタ係数情報#23dに基づいてフィルタ係数セットを生成し、生成したフィルタ係数セットを用いてフィルタリング処理を行う。
適応フィルタ部100は、デブロック画像#50に対しフィルタリング処理を施すことによって生成した出力画像データ#110aをバッファメモリ25に対して出力する。
なお、本使用例における適応フィルタ部100は、ほぼ、KTAにおけるALF(Adaptive Loop Filter)に対応している。すなわち、本使用例における適応フィルタ部100は、整数画素の画素値を入力として、整数画素の画素値を出力する。これは、式(1)において、x、y、x’、および、y’を何れも整数にとることに対応している。
(動画像復号装置1の利点)
以上のことから、動画像復号装置1は、フィルタ係数間に存在する相関を有効利用することにより高効率に符号化されたフィルタ係数を復号することにより、高効率に符号化された符号化データから復号画像を生成することができる。
(実施形態2)
次に、本発明の別の実施形態に係る動画像符号化装置について図面を参照しながら説明する。本実施形態に係る動画像符号化装置も、実施形態1に係る動画像符号化装置1と同様に、その一部に、H.264/AVC規格、および、VCEGで検討されている技術を用いている動画像符号化装置である。
図7は、本実施形態に係る動画像符号化装置1’の要部構成を示すブロック図である。
(動画像符号化装置1’の構成)
図7に示すように、動画像符号化装置1’は、動画像符号化装置1と同様に、変換・量子化部11、逆量子化・逆変換部13、バッファメモリ14、イントラ予測画像生成部15、インター予測画像生成部16、予測方式制御部18、動きベクトル冗長性削減部19、加算器21、減算器22、デブロッキングフィルタ50、および、適応フィルタ部100を備えているが、可変長符号化部12’が備えるフィルタ係数符号化部1152’の構成および機能が、実施形態1における可変長符号化部12が備えるフィルタ係数符号化部1152と異なっている。
そこで、ここでは、フィルタ係数符号化部1152’について詳細に説明を行い、他の部材については説明を省略することとする。
(フィルタ係数符号化部1152’の構成)
フィルタ係数符号化部1152’の構成について、図8を参照しながら以下に説明する。
図8は、可変長符号化部12’が備えるフィルタ係数符号化部1152’の要部構成を示すブロック図である。
図8に示すように、フィルタ係数符号化部1152’は、ソート部1152a、2進化部1152d、符号化部1152e、およびLASTフラグ生成部1152gを備えている。
ソート部1152aは、実施形態1のフィルタ係数符号化部1152が備えるソート部1152aと同様のソート処理を行う。すなわち、本実施形態でのソート処理は、入力されたフィルタ係数情報#101に含まれる各フィルタ係数を中心位置に近いフィルタ係数が中心位置から遠いフィルタ係数よりも先になるような並び順に並び替える処理である。
2進化部1152dは、ソート部1152aから供給されたフィルタ係数aiを、「0」「1」の2進数のシンボルからなるシンボル列に変換し、シンボル列を符号化部1152eに供給する。
LASTフラグ生成部1152gは、ソート部1152aから供給されたフィルタ係数aiの絶対値が最後の0以外の係数であるか否かを判定し、最後の0以外の係数でなければ、LASTフラグの値を「0」に設定し、そうでない場合には、「1」に設定する。そして、LASTフラグ生成部1152gは、LASTフラグを符号化部1152eに供給する。
符号化部1152eは、すでに受け付けたフィルタ係数ai-1のシンボル列とLASTフラグとを関連付けたデータを符号化する。なお、符号化部1152eは値が「1」であるLASTフラグを受け付け、シンボル列と値が「1」のLASTフラグとを関連付けたデータを符号化した後は、フィルタ係数情報#101’に含まれる残りのフィルタ係数(ai、ai+1・・・)については符号化を行わず、符号化した上記全データを符号化した順序に並べて外部に出力する。以下に具体例を示す。
図9は、フィルタ係数情報#101’にa1〜a26の順でフィルタ係数が格納されており、フィルタ係数a1〜a6の絶対値が0以外であり、フィルタ係数a7以降の絶対値が0である場合に、動画像符号化装置が符号化する情報を模式的に示した図である。図9(a)(c)は、動画像符号化装置が本実施形態の動画像符号化装置1’である場合の図であり、図9(b)は、動画像符号化装置が従来の装置である場合の図である。
図9(a)に示すように、動画像符号化装置2’の符号化部1152eは、a1、LASTフラグ「0」、a2、LASTフラグ「0」・・・a6、LASTフラグ「1」の符号化を行うが、a3〜a25の符号化は行わない。一方、図9(b)に示すように、従来の動画像符号化装置は、a1〜a25のすべてのフィルタ係数を符号化することになる。
なお、オフセット値を表わすフィルタ係数a26についてはLASTフラグを付加せずにそのまま符号化する。また、図9(c)に示すように、各フィルタ係数についてフィルタ係数の後ではなく先にLASTフラグを付加したシンボル列の組により符号化しても構わない。
したがって、符号化部1152eには、従来に比べLASTフラグの符号量分のオーバーヘッドがあるものの、適応フィルタ部100が適用するフィルタ係数には値が0であるフィルタ係数が多く含まれているので、全体としてフィルタ係数の符号量を削減することができる。
以上、フィルタ係数符号化部1152’が備える各部の動作について説明したが、LASTフラグ生成部1152gは、n個のフィルタ係数(a1〜an:添え字はフィルタ係数情報#101に含まれるフィルタ係数の並び順)のうち、特定のフィルタ係数、例えば、an/2以降のフィルタ係数についてのみLASTフラグを符号化部1152eに供給するようにしてもよい。図16は、このように特定のフィルタ係数のみにLASTフラグを付加する場合において動画像符号化装置1’が出力する符号化データの例である。この例では、n=13以降にLASTフラグを付加している。LASTフラグの符号化によりn=16からn=25までのフィルタ係数の符号化を省くことができている。なお、n=26のフィルタ係数はオフセット係数であるので、LASTフラグの値によらず符号化する。
あるいは、絶対値が所定の定数TH以下となる最初のフィルタ係数より後の位置のフィルタ係数についてのみLASTフラグを符号化部1152eに供給するようにしてもよい。図17は、TH=5である場合に動画像符号化装置1’が出力する符号化データの例である。図17の例ではTH=5以下となる最初のフィルタ係数の位置及びそれ以前に位置するフィルタ係数についてはLASTフラグを符号化しない。TH=5以下となる最初のフィルタ係数より後のフィルタ係数についてはLASTフラグを符号化する。図16、図17の例では、ともに、n=26の係数はオフセット係数であるので、LASTフラグの値によらず符号化する。
次に、フィルタ係数符号化部1152’が行う処理のバリエーションについて説明する。
(フィルタ係数符号化部1152’が行う処理のバリエーション)
LASTフラグ生成部1152gはLASTフラグに値を格納して符号化部1152eに供給することを説明したが、LASTフラグの代わりにLAST1フラグに値を格納して符号化部1152eに供給するようにしてもよい。
この場合、LASTフラグ生成部1152gは、ソート部1152aから供給されたフィルタ係数aiの絶対値が一定の閾値(例えば、0)より大きいか否かを判定し、一定の閾値より大きい場合にはLAST1フラグの値を「0」に設定し、そうでない場合には、「1」に設定する。そして、LASTフラグ生成部1152gは、LAST1フラグを符号化部1152eに供給する。また、LASTフラグ生成部1152gは、すでに受け付けたフィルタ係数の総和を保持する。LASTフラグ生成部1152gは、フィルタ係数aiの絶対値が一定の閾値より大きい場合には、aiを総和(a1+a2+・・・+ai-1)に加算する。一方、フィルタ係数aiの絶対値が一定の閾値以下である場合には、総和(a1+a2+・・・+ai-1)から最後に加算したフィルタ係数ai-1を減じた値を総和(a1+a2+・・・+ai-2)として符号化部1152eに供給する。
符号化部1152eは、受け付けたLAST1フラグの値が「0」であるか「1」であるかを判定する。そして、符号化部1152eは、「0」であると判定した場合、すでに受け付けたフィルタ係数ai-2のシンボル列とLAST1フラグとを関連づけたデータを符号化する。
一方、符号化部1152eは、「1」であると判定された場合、LASTフラグ生成部1152gから受け付けた総和(a1+a2+・・・+ai-2)の値を1から減じた値を、フィルタ係数ai-1の予測値とし、予測値を2進化部1152dに供給する。ここで、LASTフラグ生成部1152gから受け付けた総和の値を1から減じた値を予測値とする理由は、適応フィルタ部100が適用するフィルタのフィルタ係数のうちオフセット値を除く総和が一般的に1程度の値になるためである。
符号化部1152eは、その後、2進化部1152dから差分値のシンボル列を受け取り、符号化する。なお、差分値を符号化した後、符号化部1152eは、フィルタ係数情報#101’に含まれる残りのフィルタ係数については符号化を行わず、今までに符号化した全データを符号化した順序に並べて外部に出力する。
2進化部1152dは、実施形態1の場合と同様の方法で、ソート部1152aから供給されたフィルタ係数aiを、「0」「1」の2進数のシンボルからなるシンボル列に変換し、シンボル列を符号化部1152eに供給するが、フィルタ係数aiを符号化部1152eに供給した後に予測値を符号化部1152eから受け取った場合、予測値とフィルタ係数ai-1との差分値を算出し、差分値をシンボル列に変換して符号化部1152eに供給する。
以上のようにLAST1フラグを用いると、符号化対象となる全フィルタ係数のうち最後に符号化するフィルタ係数については、既に復号したフィルタ係数を利用して予測値を算出しその差分値を符号化することになるため、その分さらに符号量を削減することができる。
なお、最後に符号化するフィルタ係数以外のフィルタ係数についても、予測値を算出しその差分値を符号化してもよい。
また、ソート部1152aが行うソート処理は、中心のフィルタ係数についてはフィルタ係数情報#101’の先頭ではなく末尾に配置されるようにしてもよい。
このようにすると、最も大きな絶対値をもつ中心のフィルタ係数は直接符号化されなくなる(すなわち、予測値が大きくなる)ため、差分を符号化することによる符号量の削減効果を高めることができる。
また、ソート部1152aはソート処理をフィルタ係数の絶対値の大小に基づいて行わなくてもよい。すなわち、ソート部1152aは、フィルタ係数に対応する基底(例えば、PCA基底)の固有値が大きい順にフィルタ係数のソート処理を行うようにしてもよい。この場合、LASTフラグ生成部1152gは、ソート部1152aから供給されたフィルタ係数に対応する基底の固有値が一定の閾値より大きいか否かに基づいて、LASTフラグまたはLAST1フラグの値を設定することになる。
(動画像符号化装置1’の利点)
以上のように、動画像符号化装置1’は、2次元的に配置された各フィルタ係数のうち中心位置からの距離が遠い(距離が一定値以上であるような)フィルタ係数の値が0である場合において、ソート処理が施されたフィルタ係数のうち、値が0であるような最初のフィルタ係数以降のフィルタ係数の符号化を省略することができる。
従って、動画像符号化装置1’は、すべてのフィルタ係数を符号化する場合に比べ、フィルタ係数の符号量を削減することができる。
(動画像復号装置)
次に、本実施形態に係る動画像復号装置について、図10を参照しながら以下に説明する。
図10は、動画像復号装置の要部構成を示すブロック図である。
動画像復号装置2’は、実施形態1と同様に、その一部に、H.264/AVC規格、および、VCEGで検討されている技術を用いている動画像復号装置である。動画像復号装置2’は、動画像符号化装置1’から送られてきたLASTフラグまたはLAST1フラグを参照して適応フィルタを生成する点に特徴がある。
図10に示すように、動画像復号装置2’は、動画像復号装置2と同様、動きベクトル復元部24、バッファメモリ25、予測画像生成部26、イントラ予測画像生成部27、予測方式決定部28、逆量子化・逆変換部29、加算器30、およびデブロッキングフィルタ50を備えているが、可変長符号復号部23’および適応フィルタ部100’の動作が、それぞれ、可変長符号復号部23および適応フィルタ部100と異なっている。
そこで、以下では、可変長符号復号部23’および適応フィルタ部100’についてのみ説明し、その他の部材については説明を省略することにする。
可変長符号復号部23’は、符号化データ#2aを可変長復号し、差分動きベクトル#23a、サイド情報#23b、量子化予測残差データ#23c、および、フィルタ係数情報#23d’を出力する。
適応フィルタ部100’は、デブロック画像#50に対してフィルタリング処理を施す。
また、本使用例における適応フィルタ部100’は、符号化データ#2から復号されたフィルタ係数情報#23d’に基づいてフィルタを生成し、フィルタリング処理を行う。
適応フィルタ部100’は、デブロック画像#50に対しフィルタリング処理を施すことによって生成した出力画像データ#110aをバッファメモリ25に対して出力する。
なお、本使用例における適応フィルタ部100’も、ほぼ、KTAにおけるALF(Adaptive Loop Filter)に対応している。すなわち、本使用例における適応フィルタ部100’は、整数画素の画素値を入力として、整数画素の画素値を出力する。これは、式(1)において、x、y、x’、および、y’を何れも整数の値をとることに対応している。
(可変長符号復号部23´について)
本実施形態に係る動画像復号装置2´は、可変長符号復号部23’が備えるフィルタ係数復号部2352´の復号処理にその特徴がある。
(フィルタ係数復号部2352´の構成)
図15は、フィルタ係数復号部2352´の要部構成を示すブロック図である。
図15に示すように、フィルタ係数復号部2352は、逆ソート部2352a´、コンテキスト決定部1152b、状態保持部1152c、シンボル復元部2352d、復号部2352e´、状態更新部1152f、およびLASTフラグ復号部2352gを備えている。既に説明した部材であるコンテキスト決定部1152b、状態保持部1152c、状態更新部1152f、シンボル復元部2352dについては説明を省略する。
LASTフラグ復号部2352gは、符号化データ#2を入力として、LASTフラグもしくはLAST1フラグの復号を行う。
復号部2352e´は、復号部2352eと同様、符号化データ#2を入力として、算術符号の復号を行い2進数から構成されるシンボル列を、シンボル復元部2352dに出力する。復号部2352e´が復号部2352eと異なる点は、LASTフラグまたはLAST1フラグの値に応じて復号処理を停止する処理を含む点である。
逆ソート部2352a´は、逆ソート部2352aと同様、各フィルタ係数の復号順序に基づいて、フィルタ係数の順序を適応フィルタ部100´が必要とするフィルタ係数の順序に並べ替える。逆ソート部2352a´が逆ソート部2352aと異なる点は、全てのフィルタ係数が揃った時点で並び替えるのではなく、フィルタ係数を復号する度に、復号した順序に基づいてフィルタ係数のフィルタ係数セットにおける位置を算出して当該位置にフィルタ係数をセットする点である。
なお、フィルタ係数復号部2352´は、フィルタ係数復号部2352と同様、算術符号ではなく、ハフマン符号を用いることもできる。また、LASTフラグ及びLAST1フラグを用いて符号化効率を向上させているので、ハフマン符号を用いる場合も、単一のハフマン符号表を用いても良い。すなわち、必ずしも前回復号した値を元に、次の復号に用いるハフマン符号表を切り替える必要はない。
フィルタ係数復号部2352´もフィルタ係数復号部2352と同様、予測値との差分として符号化されたフィルタ係数を復号しても良い。
(可変長符号復号部23’の動作の詳細)
以下、符号化データがLASTフラグおよびLAST1フラグを両方とも含まない場合、LASTフラグを含む場合、並びに、LAST1フラグを含む場合のそれぞれにおける可変長符号復号部23’の動作について図18〜図20を参照しながら説明する。
図18は、符号化データがLASTフラグおよびLAST1フラグを含まない場合における可変長符号復号部23’の動作フローを説明する図である。
(ステップS101)ループ1:1≦ループ変数i(初期値1)≦25を満たしている間、S102からS105の処理を行う。
(ステップS102)フィルタ係数を復号する。なお、フィルタ係数が予測値との差分値として符号化されている場合には、差分値を復号し、予測値に加算することでフィルタ係数を復号する。
(ステップS103)復号順序iからフィルタ係数の位置を算出する。
(ステップS104)フィルタ係数セットにおける算出されたフィルタ係数の位置に復号したフィルタ係数をセットする。
(ステップS105)ループ1終端:ループ変数iが25であるか否かを判定し、iが25でなければiをインクリメントしてS102の処理に戻る。一方、ループ変数iが25である場合、S106の処理に進む。
(ステップS106)オフセットを復号しフィルタ係数セットの最後の成分の値としてセットする。
以上のようにして可変長符号復号部23’が復号するフィルタ係数は式(7)のセットM4のようになる。
式(7)を見るとわかるように、フィルタ係数セットM4は、動画像符号化装置1’の適応フィルタ部100が適用するフィルタのフィルタ係数セット(式(1)のフィルタ係数セットM1)と同一のものとなる。
図19は、符号化データがLASTフラグを含む場合における可変長符号化復号部23の動作フローを説明する図である。両者ともフィルタ係数とLASTフラグとが組として符号化されていることに特徴があるが、図19(a)は、符号化データの構成として、LASTフラグがフィルタ係数の後に符号化される場合、図19(b)は、LASTフラグがフィルタ係数の前に符号化される場合を示している。
LASTフラグがフィルタ係数の後に符号化される場合の動作フローについて以下に示す。
(ステップS201)ループ1:1≦ループ変数i(初期値1)≦25を満たしている間、S202からS205の処理を行う。
(ステップS202)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットする。
(ステップS203)LASTフラグを復号する。
(ステップS204)LASTフラグが1であるか否かを判定する。LASTフラグが1である場合には、S206に進む。それ以外の場合にはS205に進む。
(ステップS205)ループ1終端:ループ変数iが25であるか否かを判定し、iが25でなければiをインクリメントしてS202に戻る。一方、ループ変数iが25である場合、S206に進む。
(ステップS206)LASTフラグを用いていないフィルタ係数を復号し、フィルタ係数セットにセットする。ここでは、オフセットを復号し、フィルタ係数セットの最後の成分の値としてセットする。
また、LASTフラグがフィルタ係数の前に符号化される場合の動作フローについて以下に示す。
(ステップS251)ループ1:1≦ループ変数i(初期値1)≦25を満たしている間、S252からS254、およびS256の処理を行う。
(ステップS252)LASTフラグを復号する。
(ステップS253)LASTフラグが1であるか否かを判定する。LASTフラグが1である場合には、S255に進む。それ以外の場合にはS254に進む。
(ステップS254)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットした上で、S256に進む。
(ステップS255)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットした上で、S257に進む。
(ステップS256)ループ1終端:ループ変数iが25であるか否かを判定し、iが25でなければiをインクリメントしてS252に戻る。一方、ループ変数iが25である場合、S257に進む。
(ステップS257)LASTフラグを用いていないフィルタ係数を復号し、フィルタ係数セットにセットする。ここでは、オフセットを復号し、フィルタ係数セットの最後の成分の値としてセットする。
図20は、符号化データの構成としてLAST1フラグを含む場合の可変長符号化復号部23の動作フローを説明する図である。この例では、符号化データの構成として、LAST1フラグがフィルタ係数の後に符号化される場合を示す。なお、図19(b)と同様、S302におけるフィルタ係数の復号処理と、S303およびS304のLAST1フラグに関する処理の順序を入れ替えることにより、可変長符号化復号部23は、LAST1フラグがフィルタ係数の後に符号化される場合についても処理が可能である。
(ステップS301)ループ1:2≦ループ変数i(初期値2)≦25を満たしている間、S302からS305の処理を行う。
(ステップS302)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットする。
(ステップS303)LAST1フラグを復号する。
(ステップS304)LAST1フラグが1であるか否かを判定する。LASTフラグが1である場合には、S306に進む。それ以外の場合にはS305に進む。
(ステップS305)ループ1終端:ループ変数iが25であるか否かを判定し、iが25でなければiをインクリメントしてS302に戻る。一方、ループ変数iが25である場合、S306に進む。
(ステップS306)最終要素の予測値を算出する。これまでにセットしたフィルタ係数の総和(a2〜ai)を算出し、1から総和を減じた値を、復号順序1に対応するフィルタ係数の予測値としておく。
(ステップS307)符号化データから復号した差分値と、予測値とを加算することで、最終要素を復号し、復号順序1に対応する位置にフィルタ係数をセットする。
(ステップS308)LAST1フラグを用いていないフィルタ係数を復号し、フィルタ係数セットにセットする。ここでは、オフセットを復号し、フィルタ係数セットの最後の成分の値としてセットする。
最後に、値がセットされていないすべての成分の値を「0」にセットする。
以上のようにして可変長符号復号部23’が復号するフィルタ係数は式(8)のセットM5のようになる。
したがって、LAST1フラグを用いた場合も、適応フィルタ部100’が適用するフィルタの特性は、動画像符号化装置1’の適応フィルタ部100が適用するフィルタの特性と同一のものとなることになる。
図21は、符号化データが、復号順序で所定の順番以降に位置するフィルタ係数においてLASTフラグを含むような構成である場合の、可変長符号化復号部23の動作フローを示す図である。ここでは、符号化データが図16に示すようなデータである場合の動作を示す。
(ステップS401)ループ1:1≦ループ変数i(初期値1)≦12を満たしている間、S402、S403の処理を行う。
(ステップS402)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットする。
(ステップS403)ループ1終端:ループ変数iが12であるか否かを判定し、iが12でなければiをインクリメントしてS402に戻る。一方、ループ変数iが12である場合、iをインクリメントしてS404に進む。
(ステップS404)ループ2:13≦ループ変数i≦25を満たしている間、S405からS408の処理を行う。
(ステップS405)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットする。
(ステップS406)LASTフラグを復号する。
(ステップS407)LASTフラグが1であるか否かを判定する。LASTフラグが1である場合には、S409に進む。それ以外の場合にはS408に進む。
(ステップS408)ループ2終端:ループ変数iが25であるか否かを判定し、iが25でなければiをインクリメントしてS405に戻る。一方、ループ変数iが25である場合、S409に進む。
(ステップS409)LASTフラグを用いていないフィルタ係数を復号しフィルタ係数セットにセットする。ここでは、オフセットを復号しフィルタ係数セットの最後の成分の値としてセットする。
最後に、値がセットされていないすべての成分の値を「0」にセットする。
なお、図19(b)と同様、S405のフィルタ係数の復号処理と、S406、S407のLAST1フラグに関する処理の順序を入れ替えることにより、可変長符号化復号部23’は、LASTフラグがフィルタ係数の後に符号化される場合についても復号処理が可能である。
また、図21のフローチャートにおいてS406、S407のLASTフラグをLAST1フラグに読み変え、S409の前に図20のS306、S307の処理を付加したフローチャートに従った動作を行うことにより、可変長符号復号部23’は、LAST1フラグを用いて符号化した符号化データの復号処理も可能である。
図22は、絶対値が所定の定数TH以下であるような最初のフィルタ係数より後に位置するフィルタ係数において符号化データがLASTフラグを含む場合の、可変長符号化復号部23’の動作フローを示す図である。ここでは符号化データが図17に示すようなデータである場合の動作を示す。
(ステップS500)LASTチェックフラグを0とする。
(ステップS501)ループ1:1≦ループ変数i(初期値1)≦25を満たしている間、S502からS508の処理を行う。
(ステップS502)フィルタ係数を復号し、復号順序iから算出される、フィルタ係数の位置に復号した係数をセットする。
(ステップS503)LASTチェックフラグが1であるか否かを判定する。LASTチェックフラグが1の場合にはS506に進む。それ以外の場合はS504に進む。
(ステップS504)フィルタ係数の絶対値が所定の閾値TH以下であるか否かを判定する。所定の閾値以下である場合にはS505に進む。それ以外の場合はS508に進む。
(ステップS505)LASTチェックフラグを1とする。
(ステップS506)LASTフラグを復号する。
(ステップS507)LASTフラグが1であるか否かを判定する。LASTフラグが1である場合には、S509に進む。それ以外の場合にはS508に進む。
(ステップS508)ループ2終端:ループ変数iが25であるか否かを判定し、iが25でなければiをインクリメントしてS502に戻る。一方、ループ変数iが25である場合、S509に進む。
(ステップS509)LASTフラグを用いていないフィルタ係数を復号し、フィルタ係数セットにセットする。ここでは、オフセットを復号し、フィルタ係数セットの最後の成分としてセットする。
最後に、値がセットされていないすべての成分の値を「0」にセットする。
なお、図19(b)と同様、S505のフィルタ係数復号と、S506、S507のLAST1フラグに関する処理の順序を入れ替えることにより、可変長符号復号部23’は、LASTフラグがフィルタ係数の後に符号化される場合についても復号処理が可能である。
また、LASTフラグをLAST1フラグに読み変え、S306、S307の処理をS509の前に付加することにより、可変長符号復号部23’は、LAST1フラグを用いて符号化した符号化データの復号処理も可能である。
(動画像復号装置2’の利点)
以上のことから、動画像復号装置2’は、LASTフラグまたはLAST1フラグを参照することにより、復号する復号画像に影響が及ぼさず、かつ、全フィルタ係数について復号処理を行うことなく、復号画像を生成することができる。
(付記事項)
各実施形態では、適応フィルタ部100(ALF)が使用するフィルタのフィルタ係数の符号化処理について説明したが、本発明は、適応補償フィルタ(AIF)が使用するフィルタのフィルタ係数の符号化処理にも同様に適用することができる。また、AIFおよびALFだけでなく、フィルタリング処理に用いるフィルタ係数に、中心位置から近い要素の絶対値が中心位置から遠い要素の絶対値よりも大きい(あるいは小さい)という特徴があれば、どのようなフィルタにも本発明のフィルタ係数の符号化処理を適用することができる。
また、実施形態1において、符号化部1152eは、適応フィルタ部100が使用するフィルタのフィルタ係数セットのうち、中心位置に最も近いフィルタ係数(最近傍のフィルタ係数(中心位置からのδ=0の近傍に位置するフィルタ係数であり複数存在する可能性がある))の算術符号化に用いるコンテキストを、他のフィルタ係数の算術符号化に用いるコンテキストとは別のコンテキストにしてもよい。また、最近傍のフィルタ係数と他のフィルタ係数とでコンテキストを分けた上で、さらに他のフィルタ係数について、中心位置からの距離d(d=|k-i|+|l-j|、中心位置は(i,j)であり、各要素の位置は(k,l)で示される)が1または2であるフィルタ係数と、中心位置からの距離が3以上であるフィルタ係数とでコンテキストを分けるようにしてもよい。これは、一般的に、中心位置からの距離dが1または2のフィルタ係数は中心位置からの距離dが3以上のフィルタ係数よりも大きくなる傾向が強いという性質を適応フィルタ部100(ALF)が使用するフィルタが備えているからである。
また、符号化部1152eは、最近傍のフィルタ係数のみ固定長符号化するようにしてもよい。さらに、実施形態2の場合と同様に、符号化部1152eは、最近傍のフィルタ係数を符号化する代わりに、他のフィルタ係数の総和を1から減じた予測値と中心位置のフィルタ係数との差分値を符号化するようにしてもよい。
また、以上説明したそれぞれの実施形態において、動画像符号化装置または動画像復号装置の各機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより動画像符号化装置または動画像復号装置の制御を行っても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上のように、本発明に係る符号化装置において、上記符号化手段は、上記フィルタ係数セットに含まれる各フィルタ係数を、すでに符号化されたフィルタ係数に対応するシンボル列における各シンボルの出現確率に応じて算術符号化するものである、ことが望ましい。
上記の構成によれば、符号化装置は、高頻度で、フィルタ係数の絶対値の大きい順または小さい順に、フィルタ係数の絶対値に応じた数の規定のシンボルを含むシンボル列を生成するとともに生成したシンボル列を算術符号化する。すなわち、符号化装置が算術符号化するシンボル列に含まれる規定のシンボルの数は、各フィルタ係数の算術符号化を行う過程で少しずつ多くなっていくか、あるいは、少しずつ小さくなっていく傾向がある。また、符号化装置は、すでに算術符号化したシンボル列におけるシンボルの出現確率に応じて算術符号化する。
従って、フィルタ行列の各フィルタ係数をラスタスキャンにより読み出して算術符号化する従来の符号化装置に比べ、本発明の符号化装置では、算術符号化する際に適用する規定のシンボルの出現確率が実際に出現する規定のシンボルの出現確率と近くなることになる。
上記符号化装置では、上記符号化手段が、上記2次元フィルタの中心位置からの距離が等しい複数のフィルタ係数について、自身が最後に符号化したフィルタ係数の上記2次元フィルタにおける位置と最も近い位置のフィルタ係数を他のフィルタ係数よりも優先して算術符号化することが望ましい。
適応補間フィルタまたは適応ループフィルタとして用いられる2次元フィルタには、近傍に位置するフィルタ係数同士は近い値を持つという傾向がある。
したがって、上記の構成によれば、符号化装置が算術符号化するシンボル列に含まれる規定のシンボルの数が、各フィルタ係数の算術符号化を行う過程で少しずつ多くなっていくか、あるいは、少しずつ少なくなっていくという傾向がより強まることとなり、算術符号化する際に適用する規定のシンボルの出現確率が実際に出現する規定のシンボルの出現確率とより近くなることになる。これにより、符号化装置は、復号装置に伝送するフィルタ係数の符号量をより効果的に削減可能であるというさらなる効果を奏する。
上記符号化装置では、上記符号化手段が、複数のコンテキストに基づいて上記各フィルタ係数を算術符号化するものであり、上記2次元フィルタの中心位置のフィルタ係数を、他のフィルタ係数の算術符号化に用いるコンテキストとは別のコンテキストに基づいて算術符号化することが望ましい。
また、上記符号化装置では、上記符号化手段が、複数のコンテキストに基づいて上記各フィルタ係数を算術符号化するものであり、上記2次元フィルタの中心位置からの距離が3以上のフィルタ係数の算術符号化に用いるコンテキストとは別のコンテキストに基づいて、中心位置からの距離が2以下のフィルタ係数を算術符号化することが望ましい。
なお、本発明に係る符号化装置において、上記符号化手段は、上記フィルタ係数セットに含まれる各フィルタ係数を、すでに符号化が行われたフィルタ係数に応じたハフマン符号表を用いてハフマン符号化するものであってもよい。
この場合にも、絶対値の昇順または降順に整列されたフィルタ係数を順に符号化することになるので、所定の順序(例えばラスタスキャン順)で配列されたフィルタ係数を順に符号化する場合と比べて、符号量を低下させることができるという効果を奏する。
また、上記復号装置では、上記復号手段が、上記フィルタ係数セットに含まれる各フィルタ係数を、すでに復号されたフィルタ係数に対応するシンボル列における各シンボルの出現確率に応じて算術復号するものである、ことが望ましい。
上記の構成によれば、上記の符号化装置によって得られた符号化データが算術符号化により得られた符号化データである場合に、所定の順序(例えばラスタスキャン順)で配列されたフィルタ係数セットを復号することができる。
上記復号装置では、上記復号手段が、上記フィルタ係数セットに含まれる各フィルタ係数を、すでに復号されたフィルタ係数に応じたハフマン符号表を用いてハフマン符号化するものである、ことが望ましい。
上記の構成によれば、上記の符号化装置によって得られた符号化データがハフマン符号化により得られた符号化データである場合に、所定の順序(例えばラスタスキャン順)で配列されたフィルタ係数セットを復号することができる。
なお、上記の符号化装置により生成される符号化データのデータ構造も本発明の範疇に含まれる。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。