(57)【特許請求の範囲】
【請求項１】
画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置であって、
隣接する第１ブロック及び第２ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定部と、
前記設定部により設定されたパラメータを用いて、前記第１ブロックと前記第２ブロックとの境界でデブロッキングフィルタ処理を行うフィルタ部と、
を備え、
前記設定部は、
前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出部と、
前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出部と、
前記第１ブロックと前記第２ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出部と、
前記差分値及び前記平均値に基づき閾値を設定する閾値設定部と、
前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定部とを備える画像処理装置。
【請求項２】
前記閾値設定部は、
前記差分値、前記平均値、及び前記第１ブロック又は前記第２ブロックのサイズに基づき前記閾値を設定する請求項１記載の画像処理装置。
【請求項３】
画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置が実行するフィルタ処理方法であって、
隣接する第１ブロック及び第２ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、
前記設定ステップにより設定されたパラメータを用いて、前記第１ブロックと前記第２ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップと、
を有し、
前記設定ステップは、
前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出ステップと、
前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出ステップと、
前記第１ブロックと前記第２ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出ステップと、
前記差分値及び前記平均値に基づき閾値を設定する閾値設定ステップと、
前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定ステップとを有するフィルタ処理方法。
【請求項４】
画像のブロック境界の歪を除去するフィルタ処理を行うためのプログラムであって、
コンピュータに、隣接する第１ブロック及び第２ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、
前記設定ステップにより設定されたパラメータを用いて、前記第１ブロックと前記第２ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップとを実行させ、
前記設定ステップは、
前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出ステップと、
前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出ステップと、
前記第１ブロックと前記第２ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出ステップと、
前記差分値及び前記平均値に基づき閾値を設定する閾値設定ステップと、
前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定ステップとを有するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デブロッキングフィルタ機能を有する画像処理装置、フィルタ処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年マルチメディア化が進み、動画像を扱う機会が多くなってきている。画像データは情報量が大きく、画像の集合である動画像は、テレビ放送の主流であるハイビジョン（１９２０×１０８０）放送で１Ｇｂｉｔ／ｓｅｃを超える情報量である。
【０００３】
そのため、動画像データは、Ｈ．２６４／ＡＶＣ（Advanced Video Coding）やＨＥＶＣ（High Efficiency Video Coding）などに代表される符号化標準技術によって、情報量を圧縮して伝送・蓄積が行われている。
【０００４】
符号化標準技術であるＨ．２６４／ＡＶＣは、直交変換やフレーム間予測、フレーム内予測、算術符号化、デブロッキングフィルタなどのツールを利用して、動画像の１／１００程度までの圧縮を実現している。ツールの一つであるデブロッキングフィルタは、マクロブロック単位の符号化によるブロック歪を抑える働きがあり、特に圧縮率を上げた場合の画質劣化を低く抑える効果がある。
【０００５】
デブロッキングフィルタ処理では、はじめに２つの隣接ブロックに対して、Ｂｓ値（Boundary Strength：ブロック境界強度）を設定する。Ｂｓ値の設定では、図１に示す定義が用いられる。図１は、Ｂｓ値の定義を示す図である。図１に基づいて設定されたＢｓ値を用いてデブロッキングフィルタ処理が行われる（非特許文献１）。
【０００６】
また、このデブロッキングフィルタ処理に関して、隣接ブロックの境界にある画素の差分値が符号化歪であるか否かを、Ｑｐ値に基づいて判定する技術がある。Ｑｐ値は、符号化時の符号化クオリティ設定値である（特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３３６４６８号公報
【非特許文献】
【０００８】
【非特許文献１】大久保榮監修，「改訂三版  Ｈ．２６４／ＡＶＣ  教科書」，インプレス  Ｒ＆Ｄ，ｐ．１４４−１４８，２００９
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来技術では、２つの隣接ブロックｐ、ｑのいずれかがイントラ・マクロブロックに属するか、マクロブロック境界に位置するか、直交変換係数を持つか、参照ピクチャや動きベクトル値が異なるかなどに基づきＢｓ値が設定される。図１に示すように、Ｂｓ値は、ブロックｐ、ｑのいずれかがイントラ・マクロブロックに属さない場合、低い値に設定される。
【００１０】
よって、ブロックｐ、ｑがともにインター・マクロブロックの場合には、動きベクトル予測に関する符号化歪が存在するにも関わらず、Ｂｓ値が低くなる。そして動きベクトル予測に関する符号化歪は、大きな動きぼやけや多くの動オブジェクトを含む高解像度画像ほど大きくなる。
【００１１】
従って、従来技術では、ブロックｐ、ｑがともにインター・マクロブロックの場合にはＢｓ値が低く設定され、動きベクトル予測に関する符号化歪を十分に除去することができないという問題点があった。
【００１２】
そこで、本発明は、上記課題に鑑みてなされたものであり、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる画像処理装置、フィルタ処理方法及びプログラムを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一態様における画像処理装置は、画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置であって、隣接する第１ブロック及び第２ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定部と、前記設定部により設定されたパラメータを用いて、前記第１ブロックと前記第２ブロックとの境界でデブロッキングフィルタ処理を行うフィルタ部と、を備え、前記設定部は、前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出部と、前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出部と、前記第１ブロックと前記第２ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出部と、前記差分値及び前記平均値に基づき閾値を設定する閾値設定部と、前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定部とを備える。
【００１８】
また、前記閾値設定部は、前記差分値、前記平均値、及び前記第１ブロック又は前記第２ブロックのサイズに基づき前記閾値を設定してもよい。
【００１９】
また、本発明の他の態様におけるフィルタ処理方法は、画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置が実行するフィルタ処理方法であって、隣接する第１ブロック及び第２ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、前記設定ステップにより設定されたパラメータを用いて、前記第１ブロックと前記第２ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップと、を有し、前記設定ステップは、前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出ステップと、前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出ステップと、前記第１ブロックと前記第２ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出ステップと、前記差分値及び前記平均値に基づき閾値を設定する閾値設定ステップと、前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定ステップとを有する。
【００２０】
また、本発明の他の態様におけるプログラムは、画像のブロック境界の歪を除去するフィルタ処理を行うためのプログラムであって、コンピュータに、隣接する第１ブロック及び第２ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、前記設定ステップにより設定されたパラメータを用いて、前記第１ブロックと前記第２ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップを実行させ、前記設定ステップは、前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出ステップと、前記第１ブロックの動きベクトルと前記第２ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出ステップと、前記第１ブロックと前記第２ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出ステップと、前記差分値及び前記平均値に基づき閾値を設定する閾値設定ステップと、前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定ステップとを有する。
【発明の効果】
【００２１】
本発明によれば、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【図面の簡単な説明】
【００２２】
【図１】Ｂｓ値の定義を示す図。
【図２】実施例１における画像符号化装置の概略構成の一例を示すブロック図。
【図３】実施例１におけるデブロッキングフィルタ部の構成の一例を示すブロック図。
【図４】実施例１における設定部の構成の一例を示すブロック図。
【図５】実施例１におけるパラメータ設定部の構成の一例を示すブロック図。
【図６】ブロックｐとブロックｑとの隣接関係の一例を示す図。
【図７】水平方向に隣接するブロックが水平方向に大きな動きベクトルを持つ場合を示す図。
【図８】動きベクトル平均値と閾値との関係テーブルの一例を示す図。
【図９】動きベクトル平均値、ブロックサイズ、閾値の関係テーブルの一例を示す図。
【図１０】閾値判定に用いる隣接画素の一例を示す図。
【図１１】実施例１におけるフィルタ処理（その１）の一例を示すフローチャート。
【図１２】実施例１におけるフィルタ処理（その２）の一例を示すフローチャート。
【図１３】実施例２におけるパラメータ設定部の構成の一例を示すブロック図。
【図１４】実施例２におけるフィルタ処理の一例を示すフローチャート。
【図１５】実施例３におけるパラメータ設定部の構成の一例を示すブロック図。
【図１６】実施例３におけるフィルタ処理の一例を示すフローチャート。
【図１７】実施例４における画像符号化装置の構成の一例を示すブロック図。
【発明を実施するための形態】
【００２３】
以下、添付図面を参照しながら実施例について詳細に説明する。
【００２４】
［実施例１］
＜構成＞
図２は、実施例１における画像符号化装置１０の概略構成の一例を示すブロック図である。図２に示す画像符号化装置１０は、前処理部１０１、予測誤差信号生成部１０２、直交変換部１０３、量子化部１０４、エントロピー符号化部１０５、逆量子化部１０６、逆直交変換部１０７、復号画像生成部１０８、デブロッキングフィルタ部１０９、フレームメモリ１１０、動き予測部１１１、動き補償部１１２を有する。
【００２５】
前処理部１０１は、ピクチャタイプに合わせてピクチャを並べ替え、ピクチャタイプ及びフレームごとのフレーム画像等を順次出力する。また、前処理部１０１は、縮小画像を生成し、動きの方向などを調査する処理などを行ってもよい。
【００２６】
予測誤差信号生成部１０２は、入力された動画像データの符号化対象画像が１６×１６ピクセル（画素）のブロック（MacroBlock）に分割されたマクロブロックデータ（以降、ＭＢデータともいう）を取得する。
【００２７】
予測誤差信号生成部１０２は、ＭＢデータと、動き補償部１１２から出力される予測画像のＭＢデータとにより、予測誤差信号を生成する。予測誤差信号生成部１０２は、生成された予測誤差信号を直交変換部１０３に出力する。
【００２８】
直交変換部１０３は、入力された予測誤差信号を８×８単位や４×４単位でＤＣＴ（Discrete Cosine Transform）変換する。なお、ＤＣＴ変換以外にもアダマール（Hadamard）変換などの直交変換を行ってもよい。
【００２９】
直交変換部１０３は、直交変換処理により、水平及び垂直方向の周波数成分に分離された直交変換係数を取得する。この直交変換処理は、画像の空間相関性を用いて周波数成分に変換する事により、低周波成分にデータが集まり情報量圧縮を行う事が可能となる。
【００３０】
量子化部１０４は、直交変換されたデータ（直交変換係数とも呼ぶ）を量子化することによって、データの符号量を低減し、この量子化された値をエントロピー符号化部１０５及び逆量子化部１０６に出力する。
【００３１】
エントロピー符号化部１０５は、量子化部１０４から出力されたデータや動き予測部１１１から出力された動きベクトル情報をエントロピー符号化してビットストリームを出力する。エントロピー符号化とは、シンボルの出現頻度に応じて可変長の符号を割り当てる方式をいう。
【００３２】
エントロピー符号化部１０５は、例えば、基本的には出現頻度の高い係数の組合せにはより短い符号を、出現頻度の低い係数の組合せにはより長い符号を割当てる。これにより、全体的に符号長を短くしようとする。例えば、Ｈ．２６４では、ＣＡＶＬＣ（Context-Adaptive Variable Length Coding）やＣＡＢＡＣ（Context-Adaptive Binary Arithmetic Coding）と呼ばれる方式のエントロピー符号化を選択することができる。
【００３３】
逆量子化部１０６は、量子化部１０４から出力されたデータを逆量子化する。逆量子化部１０６は、逆量子化したデータを逆直交変換部１０７に出力する。
【００３４】
逆直交変換部１０７は、逆量子化されたデータに対して、逆直交変換を行って、周波数成分から画素成分へ変換する。逆直交変換部１０７は、変換後のデータを復号画像生成部１０８に出力する。逆直交変換処理が行われることにより、符号化前の予測誤差信号と同程度の信号が得られる。
【００３５】
復号画像生成部１０８は、動き補償部１１２で動き補償された画像のＭＢデータと、逆直交変換部１０７により復号処理された予測誤差信号とを加算する。これにより、復号化側と同等の処理画像を符号化側でも生成することができる。
【００３６】
符号化側で生成された画像を局所復号画像と呼び、符号化側に復号化側と同一の処理画像を生成することで、次ピクチャ以降の差分符号化を行うことが可能となる。復号画像生成部１０８は、加算して生成した局所復号画像のＭＢデータを、デブロッキングフィルタ部１０９に出力する。
【００３７】
デブロッキングフィルタ部１０９は、デブロッキングフィルタ条件を満たす場合に、デブロッキングフィルタ処理を行う。デブロッキングフィルタ条件は、Ｈ．２６４／ＡＶＣの符号化技術では次の通りである。
Ｂｓ＞０  ・・・条件１
｜ｐ０−ｑ０｜＜α  ・・・条件２
｜ｐ１−ｑ０｜＜β  ・・・条件３
｜ｑ１−ｑ０｜＜β  ・・・条件４
この条件１〜４を全て満たす場合に、デブロッキングフィルタ処理が行われる。
【００３８】
なお、Ｂｓ値は、Ｈ．２６４／ＡＶＣで定義されているブロック境界強度であり、０以上４以下の値を持つ。０の場合はデブロッキングフィルタ処理を行わないことを意味する。ブロックｐとブロックｑが水平方向に隣接する場合、ｐ０は、ブロックｑとの境界にあるブロックｐの画素であり、ｐ１は、ｐ０に対して水平方向に隣接するブロックｐ内の画素である。ｑ０は、ブロックｐとの境界にあるブロックｑの画素であり、ｑ１は、ｑ０に対して水平方向に隣接するブロックｑ内の画素である。また、ブロックｐとｑとが垂直方向に隣接する場合は、上述した説明の水平方向を垂直方向に読み替えればよい。
【００３９】
ここで、動きベクトルが大きい方向では、大きな動きぼやけが発生し、エッジ成分が減少する。よって、動いている方向に隣接する２つのブロックの動きベクトルが、同じ方向を示し、その大きさが大きい場合、隣接するブロックの境界にある画素値の差分は小さいはずである。
【００４０】
そこで、デブロッキングフィルタ部１０９は、ブロックｐとブロックｑとが、動きベクトルを有する場合、その動きベクトルの方向及び大きさに基づいて、デブロッキングフィルタに用いるパラメータを設定し、フィルタ処理を行う。デブロッキングフィルタ部１０９の詳細は後述する。
【００４１】
フレームメモリ１１０は、デブロッキングフィルタ処理された局所復号画像のＭＢデータを記憶する。フレームメモリ１１０に記憶される局所復号画像は、参照画像となりうる。
【００４２】
動き予測部１１１は、符号化対象画像におけるＭＢデータと、フレームメモリ１１０から取得する参照画像のＭＢデータとを用いて動き探索を行い、適切な動きベクトルを求める。
【００４３】
動きベクトルとは、ブロック単位で参照画像から符号化対象画像のＭＢに最も類似している位置を探索するブロックマッチング技術を用いて求められるブロック単位の空間的なずれを示す値である。
【００４４】
動きベクトルの符号化は、動きベクトルの成分そのものでなく周辺ＭＢの動きベクトルとの差分ベクトルを符号化する。動き予測部１１１は、探索した動きベクトルを動き補償部１１２に出力し、動きベクトル、参照画像の情報などを含む動きベクトル情報をエントロピー符号化部１０５に出力する。
【００４５】
動き補償部１１２は、参照画像のデータを、動き予測部１１１から提供される動きベクトルで動き補償する。これにより、動き補償された参照画像としてのＭＢデータが生成される。動き補償されたＭＢデータは、参照画像として予測誤差信号生成部１０２及び復号画像生成部１０８に出力される。
【００４６】
（デブロッキングフィルタ部）
次に、デブロッキングフィルタ部１０９の構成について説明する。図３は、実施例１におけるデブロッキングフィルタ部１０９の構成の一例を示すブロック図である。図３に示すように、デブロッキングフィルタ部１０９は、設定部２０１、フィルタ部２０２を有する。
【００４７】
設定部２０１は、隣接するブロックｐとブロックｑとの動きベクトルの方向及び大きさに基づいて、デブロッキングフィルタに用いるパラメータを設定する。このパラメータとして、例えばＢｓ値がある。隣接するブロックｐとブロックｑとをまとめて隣接ブロックとも呼ぶ。設定部２０１の詳細は、図４を用いて説明する。なお、設定部２０１は、過去に符号化されたブロックの動きベクトルなどのデータについてはフレームメモリ１１０から取得する。
【００４８】
フィルタ部２０２は、設定部２０１により設定されたパラメータを用いてデブロッキングフィルタ処理を行う。デブロッキングフィルタ処理については、非特許文献１を参照されたい。
【００４９】
図４は、実施例１における設定部２０１の構成の一例を示すブロック図である。図４に示す設定部２０１は、動きベクトル差分値算出部３０１、動きベクトル平均値算出部３０２、隣接画素差分絶対値算出部３０３、パラメータ設定部３０４を有する。
【００５０】
動きベクトル差分値算出部３０１は、ブロックｐの動きベクトル、及びブロックｑの動きベクトルを取得する。動きベクトル差分値算出部３０１は、ブロックｐの動きベクトルと、ブロックｑの動きベクトルとの水平、垂直方向それぞれの差分値を算出する。動きベクトル差分値算出部３０１は、算出した動きベクトルの差分値をパラメータ設定部３０４に出力する。差分値は、絶対値を求めてもよい。
【００５１】
動きベクトル平均値算出部３０２は、ブロックｐの動きベクトル、及びブロックｑの動きベクトルを取得する。動きベクトル平均値算出部３０２は、ブロックｐの動きベクトルと、ブロックｑの動きベクトルとの水平、垂直方向それぞれの平均値を算出する。動きベクトル平均値算出部３０２は、算出した動きベクトルの平均値をパラメータ設定部３０４に出力する。
【００５２】
なお、動きベクトル平均値算出部３０２は、ブロックｐとブロックｑの隣接方向と同じ方向の動きベクトル成分の平均値のみを算出してもよい。例えば、ブロックｐとブロックｑとが水平方向に隣接する場合、動きベクトル平均値算出部３０２は、ブロックｐの動きベクトルの水平成分と、ブロックｑの動きベクトルの水平成分との平均値のみを算出してもよい。
【００５３】
隣接画素差分絶対値算出部３０３は、ブロックｐの画素値及びブロックｑの画素値を取得する。隣接画素差分絶対値算出部３０３は、例えばｐ０とｑ０との差分絶対値を算出する。
【００５４】
また、隣接画素差分絶対値算出部３０３は、ｐ１とｑ１との差分絶対値、又はｐ０及びｐ１の平均とｑ０及びｑ１の平均との差分絶対値などのブロックｐとブロックｑとに隣接する画素間の差分絶対値を求めればよい。隣接画素差分絶対値算出部３０３は、算出した差分絶対値をパラメータ設定部３０４に出力する。ブロック境界に隣接するブロックｐとブロックｑの画素を隣接画素と呼ぶ。
【００５５】
パラメータ設定部３０４は、取得した動きベクトルの差分値、平均値、隣接画素間の差分絶対値に基づき、デブロッキングフィルタに用いるパラメータを設定する。パラメータ設定部３０４については、図５を用いて説明する。
【００５６】
図５は、実施例１におけるパラメータ設定部３０４の構成の一例を示すブロック図である。図５に示すパラメータ設定部３０４は、閾値設定部４０１、ブロック境界強度設定部４０２を有する。
【００５７】
閾値設定部４０１は、動きベクトルの差分値、平均値に基づき、水平、垂直方向の画素値の差分絶対値との判定に用いる閾値を設定する。閾値設定部４０１は、例えば、水平方向に隣接するブロックが、水平方向に大きな動きベクトルを持つ場合、水平方向の閾値を小さく設定する。これは、水平方向は、動きぼやけによる水平エッジ成分が低下していると判断できるため、隣接する画素値の差分絶対値に対する閾値を小さくするためである。
【００５８】
図６は、ブロックｐとブロックｑとの隣接関係の一例を示す図である。図６（Ａ）は、ブロックｐとブロックｑとが水平方向に隣接する場合を示す。閾値設定部４０１は、図６（Ａ）に示すように、ブロックが水平方向に隣接する場合は、水平方向の閾値を設定する。
【００５９】
図６（Ｂ）は、ブロックｐとブロックｑとが垂直方向に隣接する場合を示す。閾値設定部４０１は、図６（Ｂ）に示すように、ブロックが垂直方向に隣接する場合は、垂直方向の閾値を設定する。
【００６０】
図７は、水平方向に隣接するブロックが水平方向に大きな動きベクトルを持つ場合を示す図である。閾値設定部４０１は、図７に示すように、水平方向に隣接するブロックが水平方向に大きな動きベクトルを持つ場合、水平方向の閾値を小さく設定する。
【００６１】
閾値の設定については、閾値設定部４０１は、まず、隣接するブロックの動きベクトルが、ブロックの隣接方向と同じ方向を指すかどうかの判定を行う。例えば、閾値設定部４０１は、２つの動きベクトルの水平成分、垂直成分それぞれの大きい方の１０％の値を水平閾値、垂直閾値に決定しておく。閾値設定部４０１は、動きベクトルの水平成分の差分値が、水平閾値よりも小さく、動きベクトルの垂直成分の差分値が、垂直閾値よりも小さい場合に、２つの動きベクトルは、同じ方向を指すと判定する。
【００６２】
また、閾値設定部４０１は、隣接するブロックが水平方向に隣接する場合、２つの動きベクトルは水平方向を指すかどうかを判定する。閾値設定部４０１は、隣接するブロックが垂直方向に隣接する場合、２つの動きベクトルは垂直方向を指すかどうかを判定する。閾値設定部４０１は、２つの動きベクトルが水平又は垂直のどちらを指すかは、水平成分、垂直成分のどちらが大きいかを判断すればよい。閾値設定部４０１は、２つの動きベクトルが、ブロック間の隣接方向と同じ方向を指していない場合は、その旨をブロック境界強度設定部４０２に通知する。
【００６３】
閾値設定部４０１は、２つの動きベクトルが、ブロック間の隣接方向と同じ方向を指す場合、２つの動きベクトルの大きさに応じて、画素値の差分絶対値との比較に用いる閾値を設定する。
【００６４】
図８は、動きベクトル平均値と閾値との関係テーブルの一例を示す図である。図８に示す例では、閾値設定部４０１は、動きベクトル平均値が４以下の場合、閾値を例えば３２に設定し、動きベクトルが４より大きく８以下の場合、閾値を例えば１６に設定する。
【００６５】
この閾値は、例えば画像解像度が１９２０×１０８０、階調数が２５６の場合の例である。また、画像解像度が上がった場合は、図８に示す閾値の数値を線形的な数式で表現することも可能である。
【００６６】
閾値設定部４０１は、隣接するブロックが水平方向である場合は、水平方向の画素値の差分絶対値に対する閾値を設定する。また、閾値設定部４０１は、隣接するブロックが垂直方向である場合は、垂直方向の画素値の差分絶対値に対する閾値を設定する。閾値設定部４０１は、設定した閾値をブロック境界強度設定部４０２に出力する。
【００６７】
なお、閾値設定部４０１は、閾値を設定する際に、ブロックｐ及び／又はブロックｑのブロックサイズを考慮して閾値を設定してもよい。一般に動きベクトルが大きくなると、小さなサイズのブロックで動き検出を行った場合、動き検出確度が下がる。
【００６８】
これは、動きベクトルが大きくなると、動きぼやけが大きくなり、小さなサイズのブロックでは画像の特徴を正しく捉えることができないからである。
【００６９】
小さなサイズのブロックで大きな動きベクトルを検出した場合、その動き検出結果は誤りである可能性が高い。よって、ブロック境界に存在する画素値の差分が大きい場合は、画像のエッジではなくて、ブロック歪である可能性が高くなる。そこで、小さなサイズのブロックで大きな動きベクトルを検出した場合ほど、強いデブロッキングフィルタをかけるようにする。
【００７０】
以上の考えを踏まえ、閾値設定部４０１は、図９に示す関係テーブルを用いて閾値を設定してもよい。図９は、動きベクトル平均値、ブロックサイズ、閾値の関係テーブルの一例を示す図である。
【００７１】
図９に示す例では、閾値設定部４０１は、動きベクトルの平均値とブロックサイズとに応じて閾値を適応的に設定する。ブロックサイズが小さいほど、閾値を小さく設定することで、強いデブロッキングフィルタがかかるようにする。
【００７２】
図５に戻り、ブロック境界強度設定部４０２は、Ｈ．２６４／ＡＶＣの符号化技術に従い、Ｂｓ値を設定しておく。ブロック境界強度設定部４０２は、閾値設定部４０１から、２つの動きベクトルが隣接する方向と同じ方向を指していないことを通知されると、Ｈ．２６４／ＡＶＣに従って設定したＢｓ値を出力する。
【００７３】
ブロック境界強度設定部４０２は、閾値設定部４０１から水平方向又は垂直方向に対する閾値を取得し、隣接画素差分絶対値算出部３０３から隣接画素の差分絶対値を取得した場合、以下の判定を行い、Ｂｓ値を再設定する。
【００７４】
ブロック境界強度設定部４０２は、例えば水平方向の差分絶対値が、水平方向に対する閾値よりも大きい場合、Ｂｓ値に１を加算して、Ｂｓ値を再設定する。これにより、より強いデブロッキングフィルタがかかるようになる。
【００７５】
差分絶対値が閾値を超える場合、動きぼやけによるエッジ成分が減少しているにもかかわらず、符号化歪により、ブロック境界の画素値の差分が大きくなっていると考えられる。よって、このブロック境界の画素に対し、より強いデブロッキングフィルタをかけるとよい。
【００７６】
図１０は、閾値判定に用いる隣接画素の一例を示す図である。図１０に示す例では、ブロック境界強度設定部４０２は、ｐｎ０とｑｎ０（ｎ＝１〜８）との画素値の差分絶対値と、水平方向の閾値とを比較する。図１０に示す例では、８個の隣接画素に対してそれぞれ閾値と比較する。閾値はブロックに対して１つ設定され、ブロック境界強度（Ｂｓ）は、隣接画素ごとに設定される。
【００７７】
なお、ブロック境界強度は、ブロックに対して１つ設定されるようにしてもよい。このとき、ブロック境界強度設定部４０２は、ｐ１０〜ｐ８０の平均値及びｑ１０〜ｑ８０の平均値の差分値と、閾値とを比較してブロック境界強度を再設定するようにしてもよい。
【００７８】
また、ブロック境界強度設定部４０２は、Ｂｓ値を再設定するのではなく、Ｂｓ値を設定するようにしてもよい。この場合、ブロック境界強度設定部４０２は、ブロックｐとブロックｑとがインター・マクロブロックに属する場合、例えば、以下の定義１に基づいてＢｓ値を設定してもよい。
差分絶対値≦閾値＋４であればＢｓ＝０
閾値＋４＜差分絶対値≦閾値＋８であればＢｓ＝１
閾値＋８＜差分絶対値≦閾値＋１６であればＢｓ＝２
閾値＋１６＜差分絶対値≦閾値＋３２であればＢｓ＝３
閾値＋３２＜差分絶対値であればＢｓ＝４
これにより、ブロックｐとブロックｑとがインター・マクロブロックに属する場合であっても、強いデブロッキングフィルタをかけることができるようになる。
【００７９】
なお、ブロック境界強度設定部４０２は、ブロックｐとブロックｑの少なくとも一方がイントラ・マクロブロックに属する場合は、Ｈ．２６４／ＡＶＣの定義に従ってＢｓ値を設定すればよい。
【００８０】
＜動作＞
次に、実施例１における画像符号化装置１０の動作について説明する。図１１は、実施例１におけるフィルタ処理（その１）の一例を示すフローチャートである。図１１に示すフローは、フィルタに用いるパラメータであるＢｓ値を再設定してフィルタ処理を行う例である。
【００８１】
図１１に示すステップＳ１０１で、設定部２０１は、隣接ブロックがインター・マクロブロックに属するか否かを判定する。隣接ブロックがインター・マクロブロックに属する場合（ステップＳ１０１−ＹＥＳ）、ステップＳ１０２に進み、隣接ブロックがインター・マクロブロックに属さない場合（ステップＳ１０１−ＮＯ）、ステップＳ１０７に進む。
【００８２】
ステップＳ１０２で、動きベクトル差分値算出部３０１は、隣接ブロックの動きベクトルの差分値を算出する。
【００８３】
ステップＳ１０３で、動きベクトル平均値算出部３０２は、隣接ブロックの動きベクトルの平均値を算出する。
【００８４】
ステップＳ１０４で、隣接画素差分絶対値算出部３０３は、隣接ブロックの境界に位置する画素に対し、画素値の差分絶対値を算出する。ステップＳ１０２〜Ｓ１０４の処理は順不同であり、並列に処理されてもよい。
【００８５】
ステップＳ１０５で、閾値設定部４０１は、隣接ブロックそれぞれの２つの動きベクトルの方向及び大きさに基づいて閾値を設定する。閾値は、例えば図８や図９に示すテーブルに基づいて設定される。
【００８６】
ステップＳ１０６で、ブロック境界強度設定部４０２は、画素値の差分絶対値が閾値よりも大きい場合にＢｓ値を再設定する。
【００８７】
ステップＳ１０７で、フィルタ部２０２は、ブロック境界強度設定部４０２により設定又は再設定されたＢｓ値を用いてデブロッキングフィルタ処理を行う。
【００８８】
これにより、動きぼやけによりエッジ成分が低下している隣接ブロックに対し、隣接ブロックの境界にＢｓ値が大きいデブロッキングフィルタをかけることができ、符号化歪を除去することができる。
【００８９】
図１２は、実施例１におけるフィルタ処理（その２）の一例を示すフローチャートである。図１２に示すフローは、フィルタに用いるパラメータであるＢｓ値を設定してフィルタ処理を行う例である。
【００９０】
図１２に示すステップＳ２０１〜Ｓ２０５の処理は、図１１に示すステップＳ１０１〜Ｓ１０５の処理と同様であるため、その説明を省略する。
【００９１】
ステップＳ２０６で、ブロック境界強度設定部４０２は、画素値の差分絶対値と閾値とにより、Ｂｓ値を設定する。ブロック境界強度設定部４０２は、例えば、上述した定義１に基づいてＢｓ値を設定する。
【００９２】
ステップＳ２０７で、ブロック境界強度設定部４０２は、Ｈ．２６４／ＡＶＣやＨＥＶＣなどの定義に基づいてＢｓ値を設定する。
【００９３】
ステップＳ２０８で、フィルタ部２０２は、ブロック境界強度設定部４０２に設定されたＢｓ値を用いてデブロッキングフィルタ処理を行う。
【００９４】
以上、実施例１によれば、ブロックｐとブロックｑとがインター・マクロブロックに属する場合に、動きベクトルを基準にして、隣接ブロックの境界の画素値差分が符号化歪であるか否かを判定し、Ｂｓ値を設定することができる。Ｂｓ値の設定により、動きぼやけによるエッジ成分が減少している境界で、画素値差分が大きい境界に対して、強いデブロッキングフィルタをかけることができるようになる。よって、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【００９５】
［実施例２］
次に、実施例２における画像符号化装置について説明する。実施例２では、デブロッキングフィルタに用いるパラメータとして、フィルタオフセット値（FilterOffset）を設定する。実施例２によれば、隣接ブロックの動きベクトルの方向及び大きさに基づいて、フィルタオフセット値を適切に設定することで、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【００９６】
＜構成＞
実施例２における画像符号化装置の構成は、図２に示す構成と同様であり、デブロッキングフィルタ部の構成は、図３に示す構成と同様であり、設定部の構成は、図４に示す構成と同様であるため、その説明を省略する。
【００９７】
（パラメータ設定部）
図１３は、実施例２におけるパラメータ設定部５００の構成の一例を示すブロック図である。図１３に示すパラメータ設定部５００は、閾値設定部５０１、オフセット値設定部５０２を有する。
【００９８】
閾値設定部５０１は、図５に示す閾値設定部４０１と同様であるため、その説明を省略する。
【００９９】
オフセット値設定部５０２は、隣接画素差分絶対値算出部３０３から隣接画素の差分絶対値を取得し、閾値設定部５０１から閾値を取得した場合、差分絶対値が閾値よりも大きい場合に、その大きさの度合いに応じてフィルタオフセット値を設定する。
【０１００】
例えば、差分絶対値が閾値よりも大きい場合、その大きさをｘとする。オフセット値設定部５０２は、大きさｘに対して、ｉｎｔ（ｘ／４）をフィルタオフセット値（FilterOffset）に設定する。このフィルタオフセット値は、Ｑｐ値に加算される。
【０１０１】
例えば、ｘ＝１５の場合、ｉｎｔ（１５／４）＝３がフィルタオフセット値となる。Ｑｐ＝２８とすると、Ｑｐ＝２８＋３＝３１になり、Ｑｐ＝３１相当の強度のデブロッキングフィルタが行われることになる。オフセット値設定部５０２は、隣接画素ごとにフィルタオフセット値を設定する。
【０１０２】
オフセット値設定部５０２は、設定したフィルタオフセット値をフィルタ部２０２に出力する。これにより、フィルタ部２０２では、このフィルタオフセット値をＱｐ値に加算して、加算後のＱｐ値に相当するデブロッキングフィルタ処理を行うことができる。
【０１０３】
＜動作＞
次に、実施例２における画像符号化装置の動作について説明する。図１４は、実施例２におけるフィルタ処理の一例を示すフローチャートである。図１４に示すステップＳ３０１〜Ｓ３０５の処理は、図１１に示すステップＳ１０１〜Ｓ１０５の処理と同様であるため、その説明を省略する。
【０１０４】
ステップＳ３０６で、オフセット値設定部５０２は、隣接ブロックの動きベクトルの方向及び大きさに基づき設定された閾値と、隣接画素の差分絶対値とを比較することで、フィルタオフセット値を設定する。
【０１０５】
ステップＳ３０７で、フィルタ部２０２は、設定されたフィルタオフセット値をＱｐ値に加算し、加算後のＱｐ値に相当するデブロックキングフィルタ処理を行う。
【０１０６】
以上、実施例２によれば、隣接ブロックの動きベクトルの方向及び大きさに基づいて、フィルタオフセット値を適切に設定することで、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【０１０７】
［実施例３］
次に、実施例３における画像符号化装置について説明する。実施例３は、実施例１と実施例２とを組み合わせた実施例である。
【０１０８】
＜構成＞
実施例３における画像符号化装置の構成は、図２に示す構成と同様であり、デブロッキングフィルタ部の構成は、図３に示す構成と同様であり、設定部の構成は、図４に示す構成と同様であるため、その説明を省略する。
【０１０９】
（パラメータ設定部）
図１５は、実施例３におけるパラメータ設定部６００の構成の一例を示すブロック図である。図１５に示すパラメータ設定部６００は、閾値設定部６０１、ブロック境界強度設定部６０２、オフセット値設定部６０３を有する。
【０１１０】
閾値設定部６０１は、図５に示す閾値設定部４０１と同様であるため、その説明を省略する。
【０１１１】
ブロック境界強度設定部６０２は、図５に示すブロック境界強度設定部４０２と同様であり、オフセット値設定部６０３は、図１３に示すオフセット値設定部５０２と同様である。よって、パラメータ設定部６００は、隣接ブロックの動きベクトルの方向及び大きさに基づいて、デブロッキングフィルタに用いるパラメータであるＢｓ値、フィルタオフセット値を設定する。
【０１１２】
＜動作＞
次に、実施例３における画像符号化装置の動作について説明する。図１６は、実施例３におけるフィルタ処理の一例を示すフローチャートである。図１６に示すステップＳ４０１〜Ｓ４０６の処理は、図１１に示すステップＳ１０１〜Ｓ１０６の処理と同様であるため、その説明を省略する。
【０１１３】
ステップＳ４０７の処理は、図１４に示すステップＳ３０６の処理と同様である。
【０１１４】
ステップＳ４０８で、フィルタ部２０２は、再設定されたＢｓ値、設定されたフィルタオフセット値を用いてデブロッキングフィルタ処理を行う。
【０１１５】
以上、実施例３によれば、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。なお、実施例３では、Ｂｓ値及びフィルタオフセット値の両方を設定可能な構成にしておき、ユーザによりいずれか一方を選択させて、選択された方のパラメータを設定するようにしてもよい。
【０１１６】
［実施例４］
図１７は、実施例４における画像符号化装置７００の構成の一例を示すブロック図である。画像符号化装置７００は、上述した各実施例で説明した画像符号化処理をソフトウェアで実装した装置の一例である。
【０１１７】
図１７に示すように、画像符号化装置７００は、制御部７０１、主記憶部７０２、補助記憶部７０３、ドライブ装置７０４、ネットワークＩ／Ｆ部７０６、入力部７０７、表示部７０８を有する。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
【０１１８】
制御部７０１は、コンピュータの中で、各装置の制御やデータの演算、加工を行うＣＰＵである。また、制御部７０１は、主記憶部７０２又は補助記憶部７０３に記憶されたフィルタ処理を含む画像符号化処理のプログラムを実行する演算装置である。制御部７０１は、入力部７０７や記憶装置からデータを受け取り、演算、加工した上で、表示部７０８や記憶装置などに出力する。
【０１１９】
制御部７０１は、フィルタ処理を含む画像符号化処理のプログラムを実行することで、各実施例で説明したフィルタ処理を実現することができる。
【０１２０】
主記憶部７０２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などであり、制御部７０１が実行する基本ソフトウェアであるＯＳやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【０１２１】
補助記憶部７０３は、ＨＤＤ（Hard Disk Drive）などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【０１２２】
ドライブ装置７０４は、記録媒体７０５、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
【０１２３】
また、記録媒体７０５に、所定のプログラムを格納し、この記録媒体７０５に格納されたプログラムはドライブ装置７０４を介して画像符号化装置７００にインストールされる。インストールされた所定のプログラムは、画像符号化装置７００により実行可能となる。
【０１２４】
ネットワークＩ／Ｆ部７０６は、有線及び／又は無線回線などのデータ伝送路により構築されたＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などのネットワークを介して接続された通信機能を有する周辺機器と画像符号化装置７００とのインターフェースである。
【０１２５】
入力部７０７は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部７０８の表示画面上でキーの選択等を行うためのマウスやスライスパット等を有する。また、入力部７０７は、ユーザが制御部７０１に操作指示を与えたり、データを入力したりするためのユーザインターフェースである。
【０１２６】
表示部７０８は、ＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）等により構成され、制御部７０１から入力される表示データに応じた表示が行われる。
【０１２７】
なお、図２に示すフレームメモリ１１０は、例えば主記憶部７０２又は補助記憶部７０３により実現され、図２に示すフレームメモリ１１０以外の構成は、例えば制御部７０１及びワークメモリとしての主記憶部７０２により実現されうる。
【０１２８】
画像符号化装置７００で実行されるプログラムは、実施例１〜３で説明した各部を含むモジュール構成となっている。実際のハードウェアとしては、制御部７０１が補助記憶部７０３からプログラムを読み出して実行することにより上記各部のうち１又は複数の各部が主記憶部７０２上にロードされ、１又は複数の各部が主記憶部７０２上に生成されるようになっている。
【０１２９】
このように、上述した各実施例で説明したフィルタ処理は、コンピュータに実行させるためのプログラムとして実現されてもよい。このプログラムをサーバ等からインストールしてコンピュータに実行させることで、前述したフィルタ処理を実現することができる。
【０１３０】
また、このプログラムを記録媒体７０５に記録し、このプログラムが記録された記録媒体７０５をコンピュータや携帯端末に読み取らせて、前述したフィルタ処理を実現させることも可能である。なお、記録媒体７０５は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。また、上述した各実施例で説明したフィルタ処理は、１つ又は複数の集積回路に実装してもよい。
【０１３１】
なお、実施例１〜４では、画像符号化装置を例にして説明したが、デブロッキングフィルタ機能を有する画像復号装置でも同様に適用することができる。画像符号化装置及び画像復号装置をまとめて画像処理装置と呼ぶ。また、上記各実施例では、Ｈ．２６４／ＡＶＣを例に説明したが、デブロッキングフィルタ処理を行う符号化技術であれば適用できる。
【０１３２】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記変形例以外にも種々の変形及び変更が可能である。
【符号の説明】
【０１３３】
１０  画像符号化装置
１０１  前処理部
１０２  予測誤差信号生成部
１０３  直交変換部
１０４  量子化部
１０５  エントロピー符号化部
１０６  逆量子化部
１０７  逆直交変換部
１０８  復号画像生成部
１０９  フレームメモリ
１１０  動き予測部
１１１  動き補償部
２０１  設定部
２０２  フィルタ部
３０１  動きベクトル差分値算出部
３０２  動きベクトル平均値算出部
３０３  隣接画素差分絶対値算出部
３０４  パラメータ設定部
４０１、５０１、６０１  閾値設定部
４０２、６０２  ブロック境界強度設定部
５０２、６０３  オフセット値設定部
７０１  制御部
７０２  主記憶部
７０３  補助記憶部
７０４  ドライブ装置
７０６  ネットワークＩ／Ｆ部
７０７  入力部
７０８  表示部
【図１】
0005698629.tif 000002
【図２】
0005698629.tif 000003
【図３】
0005698629.tif 000004
【図４】
0005698629.tif 000005
【図５】
0005698629.tif 000006
【図６】
0005698629.tif 000007
【図７】
0005698629.tif 000008
【図８】
0005698629.tif 000009
【図９】
0005698629.tif 000010
【図１０】
0005698629.tif 000011
【図１１】
0005698629.tif 000012
【図１２】
0005698629.tif 000013
【図１３】
0005698629.tif 000014
【図１４】
0005698629.tif 000015
【図１５】
0005698629.tif 000016
【図１６】
0005698629.tif 000017
【図１７】
0005698629.tif 000018