説明

画像処理装置、フィルタ処理方法及びプログラム

【課題】ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去する。
【解決手段】画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置であって、隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定部と、設定部により設定されたパラメータを用いて、第1ブロックと第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタ部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デブロッキングフィルタ機能を有する画像処理装置、フィルタ処理方法及びプログラムに関する。
【背景技術】
【0002】
近年マルチメディア化が進み、動画像を扱う機会が多くなってきている。画像データは情報量が大きく、画像の集合である動画像は、テレビ放送の主流であるハイビジョン(1920×1080)放送で1Gbit/secを超える情報量である。
【0003】
そのため、動画像データは、H.264/AVC(Advanced Video Coding)やHEVC(High Efficiency Video Coding)などに代表される符号化標準技術によって、情報量を圧縮して伝送・蓄積が行われている。
【0004】
符号化標準技術であるH.264/AVCは、直交変換やフレーム間予測、フレーム内予測、算術符号化、デブロッキングフィルタなどのツールを利用して、動画像の1/100程度までの圧縮を実現している。ツールの一つであるデブロッキングフィルタは、マクロブロック単位の符号化によるブロック歪を抑える働きがあり、特に圧縮率を上げた場合の画質劣化を低く抑える効果がある。
【0005】
デブロッキングフィルタ処理では、はじめに2つの隣接ブロックに対して、Bs値(Boundary Strength:ブロック境界強度)を設定する。Bs値の設定では、図1に示す定義が用いられる。図1は、Bs値の定義を示す図である。図1に基づいて設定されたBs値を用いてデブロッキングフィルタ処理が行われる(非特許文献1)。
【0006】
また、このデブロッキングフィルタ処理に関して、隣接ブロックの境界にある画素の差分値が符号化歪であるか否かを、Qp値に基づいて判定する技術がある。Qp値は、符号化時の符号化クオリティ設定値である(特許文献1)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2007−336468号公報
【非特許文献】
【0008】
【非特許文献1】大久保榮監修,「改訂三版 H.264/AVC 教科書」,インプレス R&D,p.144−148,2009
【発明の概要】
【発明が解決しようとする課題】
【0009】
従来技術では、2つの隣接ブロックp、qのいずれかがイントラ・マクロブロックに属するか、マクロブロック境界に位置するか、直交変換係数を持つか、参照ピクチャや動きベクトル値が異なるかなどに基づきBs値が設定される。図1に示すように、Bs値は、ブロックp、qのいずれかがイントラ・マクロブロックに属さない場合、低い値に設定される。
【0010】
よって、ブロックp、qがともにインター・マクロブロックの場合には、動きベクトル予測に関する符号化歪が存在するにも関わらず、Bs値が低くなる。そして動きベクトル予測に関する符号化歪は、大きな動きぼやけや多くの動オブジェクトを含む高解像度画像ほど大きくなる。
【0011】
従って、従来技術では、ブロックp、qがともにインター・マクロブロックの場合にはBs値が低く設定され、動きベクトル予測に関する符号化歪を十分に除去することができないという問題点があった。
【0012】
そこで、本発明は、上記課題に鑑みてなされたものであり、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる画像処理装置、フィルタ処理方法及びプログラムを目的とする。
【課題を解決するための手段】
【0013】
本発明の一態様における画像処理装置は、画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置であって、隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定部と、前記設定部により設定されたパラメータを用いて、前記第1ブロックと前記第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタ部と、を備える。
【0014】
また、前記設定部は、前記第1ブロックの動きベクトルと前記第2ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出部と、前記第1ブロックの動きベクトルと前記第2ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出部と、前記第1ブロックと前記第2ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出部と、前記差分値及び前記平均値に基づき閾値を設定する閾値設定部と、前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定部とを備えてもよい。
【0015】
また、前記パラメータは、デブロッキングフィルタで用いるブロック境界強度であってもよい。
【0016】
また、前記設定部は、H.264/AVCの符号化技術に従って前記ブロック境界強度が設定されていた場合、前記ブロック境界強度を、前記動きベクトルの方向及び大きさに基づいて再設定してもよい。
【0017】
また、前記パラメータは、デブロッキングフィルタで用いるフィルタオフセット値であってもよい。
【0018】
また、前記閾値設定部は、前記差分値、前記平均値、及び前記第1ブロック又は前記第2ブロックのサイズに基づき前記閾値を設定してもよい。
【0019】
また、本発明の他の態様におけるフィルタ処理方法は、画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置が実行するフィルタ処理方法であって、隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、前記設定ステップにより設定されたパラメータを用いて、前記第1ブロックと前記第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップと、を有する。
【0020】
また、本発明の他の態様におけるプログラムは、画像のブロック境界の歪を除去するフィルタ処理を行うためのプログラムであって、コンピュータに、隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、前記設定ステップにより設定されたパラメータを用いて、前記第1ブロックと前記第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップを実行させる。
【発明の効果】
【0021】
本発明によれば、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【図面の簡単な説明】
【0022】
【図1】Bs値の定義を示す図。
【図2】実施例1における画像符号化装置の概略構成の一例を示すブロック図。
【図3】実施例1におけるデブロッキングフィルタ部の構成の一例を示すブロック図。
【図4】実施例1における設定部の構成の一例を示すブロック図。
【図5】実施例1におけるパラメータ設定部の構成の一例を示すブロック図。
【図6】ブロックpとブロックqとの隣接関係の一例を示す図。
【図7】水平方向に隣接するブロックが水平方向に大きな動きベクトルを持つ場合を示す図。
【図8】動きベクトル平均値と閾値との関係テーブルの一例を示す図。
【図9】動きベクトル平均値、ブロックサイズ、閾値の関係テーブルの一例を示す図。
【図10】閾値判定に用いる隣接画素の一例を示す図。
【図11】実施例1におけるフィルタ処理(その1)の一例を示すフローチャート。
【図12】実施例1におけるフィルタ処理(その2)の一例を示すフローチャート。
【図13】実施例2におけるパラメータ設定部の構成の一例を示すブロック図。
【図14】実施例2におけるフィルタ処理の一例を示すフローチャート。
【図15】実施例3におけるパラメータ設定部の構成の一例を示すブロック図。
【図16】実施例3におけるフィルタ処理の一例を示すフローチャート。
【図17】実施例4における画像符号化装置の構成の一例を示すブロック図。
【発明を実施するための形態】
【0023】
以下、添付図面を参照しながら実施例について詳細に説明する。
【0024】
[実施例1]
<構成>
図2は、実施例1における画像符号化装置10の概略構成の一例を示すブロック図である。図2に示す画像符号化装置10は、前処理部101、予測誤差信号生成部102、直交変換部103、量子化部104、エントロピー符号化部105、逆量子化部106、逆直交変換部107、復号画像生成部108、デブロッキングフィルタ部109、フレームメモリ110、動き予測部111、動き補償部112を有する。
【0025】
前処理部101は、ピクチャタイプに合わせてピクチャを並べ替え、ピクチャタイプ及びフレームごとのフレーム画像等を順次出力する。また、前処理部101は、縮小画像を生成し、動きの方向などを調査する処理などを行ってもよい。
【0026】
予測誤差信号生成部102は、入力された動画像データの符号化対象画像が16×16ピクセル(画素)のブロック(MacroBlock)に分割されたマクロブロックデータ(以降、MBデータともいう)を取得する。
【0027】
予測誤差信号生成部102は、MBデータと、動き補償部112から出力される予測画像のMBデータとにより、予測誤差信号を生成する。予測誤差信号生成部102は、生成された予測誤差信号を直交変換部103に出力する。
【0028】
直交変換部103は、入力された予測誤差信号を8×8単位や4×4単位でDCT(Discrete Cosine Transform)変換する。なお、DCT変換以外にもアダマール(Hadamard)変換などの直交変換を行ってもよい。
【0029】
直交変換部103は、直交変換処理により、水平及び垂直方向の周波数成分に分離された直交変換係数を取得する。この直交変換処理は、画像の空間相関性を用いて周波数成分に変換する事により、低周波成分にデータが集まり情報量圧縮を行う事が可能となる。
【0030】
量子化部104は、直交変換されたデータ(直交変換係数とも呼ぶ)を量子化することによって、データの符号量を低減し、この量子化された値をエントロピー符号化部105及び逆量子化部106に出力する。
【0031】
エントロピー符号化部105は、量子化部104から出力されたデータや動き予測部111から出力された動きベクトル情報をエントロピー符号化してビットストリームを出力する。エントロピー符号化とは、シンボルの出現頻度に応じて可変長の符号を割り当てる方式をいう。
【0032】
エントロピー符号化部105は、例えば、基本的には出現頻度の高い係数の組合せにはより短い符号を、出現頻度の低い係数の組合せにはより長い符号を割当てる。これにより、全体的に符号長を短くしようとする。例えば、H.264では、CAVLC(Context-Adaptive Variable Length Coding)やCABAC(Context-Adaptive Binary Arithmetic Coding)と呼ばれる方式のエントロピー符号化を選択することができる。
【0033】
逆量子化部106は、量子化部104から出力されたデータを逆量子化する。逆量子化部106は、逆量子化したデータを逆直交変換部107に出力する。
【0034】
逆直交変換部107は、逆量子化されたデータに対して、逆直交変換を行って、周波数成分から画素成分へ変換する。逆直交変換部107は、変換後のデータを復号画像生成部108に出力する。逆直交変換処理が行われることにより、符号化前の予測誤差信号と同程度の信号が得られる。
【0035】
復号画像生成部108は、動き補償部112で動き補償された画像のMBデータと、逆直交変換部107により復号処理された予測誤差信号とを加算する。これにより、復号化側と同等の処理画像を符号化側でも生成することができる。
【0036】
符号化側で生成された画像を局所復号画像と呼び、符号化側に復号化側と同一の処理画像を生成することで、次ピクチャ以降の差分符号化を行うことが可能となる。復号画像生成部108は、加算して生成した局所復号画像のMBデータを、デブロッキングフィルタ部109に出力する。
【0037】
デブロッキングフィルタ部109は、デブロッキングフィルタ条件を満たす場合に、デブロッキングフィルタ処理を行う。デブロッキングフィルタ条件は、H.264/AVCの符号化技術では次の通りである。
Bs>0 ・・・条件1
|p0−q0|<α ・・・条件2
|p1−q0|<β ・・・条件3
|q1−q0|<β ・・・条件4
この条件1〜4を全て満たす場合に、デブロッキングフィルタ処理が行われる。
【0038】
なお、Bs値は、H.264/AVCで定義されているブロック境界強度であり、0以上4以下の値を持つ。0の場合はデブロッキングフィルタ処理を行わないことを意味する。ブロックpとブロックqが水平方向に隣接する場合、p0は、ブロックqとの境界にあるブロックpの画素であり、p1は、p0に対して水平方向に隣接するブロックp内の画素である。q0は、ブロックpとの境界にあるブロックqの画素であり、q1は、q0に対して水平方向に隣接するブロックq内の画素である。また、ブロックpとqとが垂直方向に隣接する場合は、上述した説明の水平方向を垂直方向に読み替えればよい。
【0039】
ここで、動きベクトルが大きい方向では、大きな動きぼやけが発生し、エッジ成分が減少する。よって、動いている方向に隣接する2つのブロックの動きベクトルが、同じ方向を示し、その大きさが大きい場合、隣接するブロックの境界にある画素値の差分は小さいはずである。
【0040】
そこで、デブロッキングフィルタ部109は、ブロックpとブロックqとが、動きベクトルを有する場合、その動きベクトルの方向及び大きさに基づいて、デブロッキングフィルタに用いるパラメータを設定し、フィルタ処理を行う。デブロッキングフィルタ部109の詳細は後述する。
【0041】
フレームメモリ110は、デブロッキングフィルタ処理された局所復号画像のMBデータを記憶する。フレームメモリ110に記憶される局所復号画像は、参照画像となりうる。
【0042】
動き予測部111は、符号化対象画像におけるMBデータと、フレームメモリ110から取得する参照画像のMBデータとを用いて動き探索を行い、適切な動きベクトルを求める。
【0043】
動きベクトルとは、ブロック単位で参照画像から符号化対象画像のMBに最も類似している位置を探索するブロックマッチング技術を用いて求められるブロック単位の空間的なずれを示す値である。
【0044】
動きベクトルの符号化は、動きベクトルの成分そのものでなく周辺MBの動きベクトルとの差分ベクトルを符号化する。動き予測部111は、探索した動きベクトルを動き補償部112に出力し、動きベクトル、参照画像の情報などを含む動きベクトル情報をエントロピー符号化部105に出力する。
【0045】
動き補償部112は、参照画像のデータを、動き予測部111から提供される動きベクトルで動き補償する。これにより、動き補償された参照画像としてのMBデータが生成される。動き補償されたMBデータは、参照画像として予測誤差信号生成部102及び復号画像生成部108に出力される。
【0046】
(デブロッキングフィルタ部)
次に、デブロッキングフィルタ部109の構成について説明する。図3は、実施例1におけるデブロッキングフィルタ部109の構成の一例を示すブロック図である。図3に示すように、デブロッキングフィルタ部109は、設定部201、フィルタ部202を有する。
【0047】
設定部201は、隣接するブロックpとブロックqとの動きベクトルの方向及び大きさに基づいて、デブロッキングフィルタに用いるパラメータを設定する。このパラメータとして、例えばBs値がある。隣接するブロックpとブロックqとをまとめて隣接ブロックとも呼ぶ。設定部201の詳細は、図4を用いて説明する。なお、設定部201は、過去に符号化されたブロックの動きベクトルなどのデータについてはフレームメモリ110から取得する。
【0048】
フィルタ部202は、設定部201により設定されたパラメータを用いてデブロッキングフィルタ処理を行う。デブロッキングフィルタ処理については、非特許文献1を参照されたい。
【0049】
図4は、実施例1における設定部201の構成の一例を示すブロック図である。図4に示す設定部201は、動きベクトル差分値算出部301、動きベクトル平均値算出部302、隣接画素差分絶対値算出部303、パラメータ設定部304を有する。
【0050】
動きベクトル差分値算出部301は、ブロックpの動きベクトル、及びブロックqの動きベクトルを取得する。動きベクトル差分値算出部301は、ブロックpの動きベクトルと、ブロックqの動きベクトルとの水平、垂直方向それぞれの差分値を算出する。動きベクトル差分値算出部301は、算出した動きベクトルの差分値をパラメータ設定部304に出力する。差分値は、絶対値を求めてもよい。
【0051】
動きベクトル平均値算出部302は、ブロックpの動きベクトル、及びブロックqの動きベクトルを取得する。動きベクトル平均値算出部302は、ブロックpの動きベクトルと、ブロックqの動きベクトルとの水平、垂直方向それぞれの平均値を算出する。動きベクトル平均値算出部302は、算出した動きベクトルの平均値をパラメータ設定部304に出力する。
【0052】
なお、動きベクトル平均値算出部302は、ブロックpとブロックqの隣接方向と同じ方向の動きベクトル成分の平均値のみを算出してもよい。例えば、ブロックpとブロックqとが水平方向に隣接する場合、動きベクトル平均値算出部302は、ブロックpの動きベクトルの水平成分と、ブロックqの動きベクトルの水平成分との平均値のみを算出してもよい。
【0053】
隣接画素差分絶対値算出部303は、ブロックpの画素値及びブロックqの画素値を取得する。隣接画素差分絶対値算出部303は、例えばp0とq0との差分絶対値を算出する。
【0054】
また、隣接画素差分絶対値算出部303は、p1とq1との差分絶対値、又はp0及びp1の平均とq0及びq1の平均との差分絶対値などのブロックpとブロックqとに隣接する画素間の差分絶対値を求めればよい。隣接画素差分絶対値算出部303は、算出した差分絶対値をパラメータ設定部304に出力する。ブロック境界に隣接するブロックpとブロックqの画素を隣接画素と呼ぶ。
【0055】
パラメータ設定部304は、取得した動きベクトルの差分値、平均値、隣接画素間の差分絶対値に基づき、デブロッキングフィルタに用いるパラメータを設定する。パラメータ設定部304については、図5を用いて説明する。
【0056】
図5は、実施例1におけるパラメータ設定部304の構成の一例を示すブロック図である。図5に示すパラメータ設定部304は、閾値設定部401、ブロック境界強度設定部402を有する。
【0057】
閾値設定部401は、動きベクトルの差分値、平均値に基づき、水平、垂直方向の画素値の差分絶対値との判定に用いる閾値を設定する。閾値設定部401は、例えば、水平方向に隣接するブロックが、水平方向に大きな動きベクトルを持つ場合、水平方向の閾値を小さく設定する。これは、水平方向は、動きぼやけによる水平エッジ成分が低下していると判断できるため、隣接する画素値の差分絶対値に対する閾値を小さくするためである。
【0058】
図6は、ブロックpとブロックqとの隣接関係の一例を示す図である。図6(A)は、ブロックpとブロックqとが水平方向に隣接する場合を示す。閾値設定部401は、図6(A)に示すように、ブロックが水平方向に隣接する場合は、水平方向の閾値を設定する。
【0059】
図6(B)は、ブロックpとブロックqとが垂直方向に隣接する場合を示す。閾値設定部401は、図6(B)に示すように、ブロックが垂直方向に隣接する場合は、垂直方向の閾値を設定する。
【0060】
図7は、水平方向に隣接するブロックが水平方向に大きな動きベクトルを持つ場合を示す図である。閾値設定部401は、図7に示すように、水平方向に隣接するブロックが水平方向に大きな動きベクトルを持つ場合、水平方向の閾値を小さく設定する。
【0061】
閾値の設定については、閾値設定部401は、まず、隣接するブロックの動きベクトルが、ブロックの隣接方向と同じ方向を指すかどうかの判定を行う。例えば、閾値設定部401は、2つの動きベクトルの水平成分、垂直成分それぞれの大きい方の10%の値を水平閾値、垂直閾値に決定しておく。閾値設定部401は、動きベクトルの水平成分の差分値が、水平閾値よりも小さく、動きベクトルの垂直成分の差分値が、垂直閾値よりも小さい場合に、2つの動きベクトルは、同じ方向を指すと判定する。
【0062】
また、閾値設定部401は、隣接するブロックが水平方向に隣接する場合、2つの動きベクトルは水平方向を指すかどうかを判定する。閾値設定部401は、隣接するブロックが垂直方向に隣接する場合、2つの動きベクトルは垂直方向を指すかどうかを判定する。閾値設定部401は、2つの動きベクトルが水平又は垂直のどちらを指すかは、水平成分、垂直成分のどちらが大きいかを判断すればよい。閾値設定部401は、2つの動きベクトルが、ブロック間の隣接方向と同じ方向を指していない場合は、その旨をブロック境界強度設定部402に通知する。
【0063】
閾値設定部401は、2つの動きベクトルが、ブロック間の隣接方向と同じ方向を指す場合、2つの動きベクトルの大きさに応じて、画素値の差分絶対値との比較に用いる閾値を設定する。
【0064】
図8は、動きベクトル平均値と閾値との関係テーブルの一例を示す図である。図8に示す例では、閾値設定部401は、動きベクトル平均値が4以下の場合、閾値を例えば32に設定し、動きベクトルが4より大きく8以下の場合、閾値を例えば16に設定する。
【0065】
この閾値は、例えば画像解像度が1920×1080、階調数が256の場合の例である。また、画像解像度が上がった場合は、図8に示す閾値の数値を線形的な数式で表現することも可能である。
【0066】
閾値設定部401は、隣接するブロックが水平方向である場合は、水平方向の画素値の差分絶対値に対する閾値を設定する。また、閾値設定部401は、隣接するブロックが垂直方向である場合は、垂直方向の画素値の差分絶対値に対する閾値を設定する。閾値設定部401は、設定した閾値をブロック境界強度設定部402に出力する。
【0067】
なお、閾値設定部401は、閾値を設定する際に、ブロックp及び/又はブロックqのブロックサイズを考慮して閾値を設定してもよい。一般に動きベクトルが大きくなると、小さなサイズのブロックで動き検出を行った場合、動き検出確度が下がる。
【0068】
これは、動きベクトルが大きくなると、動きぼやけが大きくなり、小さなサイズのブロックでは画像の特徴を正しく捉えることができないからである。
【0069】
小さなサイズのブロックで大きな動きベクトルを検出した場合、その動き検出結果は誤りである可能性が高い。よって、ブロック境界に存在する画素値の差分が大きい場合は、画像のエッジではなくて、ブロック歪である可能性が高くなる。そこで、小さなサイズのブロックで大きな動きベクトルを検出した場合ほど、強いデブロッキングフィルタをかけるようにする。
【0070】
以上の考えを踏まえ、閾値設定部401は、図9に示す関係テーブルを用いて閾値を設定してもよい。図9は、動きベクトル平均値、ブロックサイズ、閾値の関係テーブルの一例を示す図である。
【0071】
図9に示す例では、閾値設定部401は、動きベクトルの平均値とブロックサイズとに応じて閾値を適応的に設定する。ブロックサイズが小さいほど、閾値を小さく設定することで、強いデブロッキングフィルタがかかるようにする。
【0072】
図5に戻り、ブロック境界強度設定部402は、H.264/AVCの符号化技術に従い、Bs値を設定しておく。ブロック境界強度設定部402は、閾値設定部401から、2つの動きベクトルが隣接する方向と同じ方向を指していないことを通知されると、H.264/AVCに従って設定したBs値を出力する。
【0073】
ブロック境界強度設定部402は、閾値設定部401から水平方向又は垂直方向に対する閾値を取得し、隣接画素差分絶対値算出部303から隣接画素の差分絶対値を取得した場合、以下の判定を行い、Bs値を再設定する。
【0074】
ブロック境界強度設定部402は、例えば水平方向の差分絶対値が、水平方向に対する閾値よりも大きい場合、Bs値に1を加算して、Bs値を再設定する。これにより、より強いデブロッキングフィルタがかかるようになる。
【0075】
差分絶対値が閾値を超える場合、動きぼやけによるエッジ成分が減少しているにもかかわらず、符号化歪により、ブロック境界の画素値の差分が大きくなっていると考えられる。よって、このブロック境界の画素に対し、より強いデブロッキングフィルタをかけるとよい。
【0076】
図10は、閾値判定に用いる隣接画素の一例を示す図である。図10に示す例では、ブロック境界強度設定部402は、p0とq0(n=1〜8)との画素値の差分絶対値と、水平方向の閾値とを比較する。図10に示す例では、8個の隣接画素に対してそれぞれ閾値と比較する。閾値はブロックに対して1つ設定され、ブロック境界強度(Bs)は、隣接画素ごとに設定される。
【0077】
なお、ブロック境界強度は、ブロックに対して1つ設定されるようにしてもよい。このとき、ブロック境界強度設定部402は、p0〜p0の平均値及びq0〜q0の平均値の差分値と、閾値とを比較してブロック境界強度を再設定するようにしてもよい。
【0078】
また、ブロック境界強度設定部402は、Bs値を再設定するのではなく、Bs値を設定するようにしてもよい。この場合、ブロック境界強度設定部402は、ブロックpとブロックqとがインター・マクロブロックに属する場合、例えば、以下の定義1に基づいてBs値を設定してもよい。
差分絶対値≦閾値+4であればBs=0
閾値+4<差分絶対値≦閾値+8であればBs=1
閾値+8<差分絶対値≦閾値+16であればBs=2
閾値+16<差分絶対値≦閾値+32であればBs=3
閾値+32<差分絶対値であればBs=4
これにより、ブロックpとブロックqとがインター・マクロブロックに属する場合であっても、強いデブロッキングフィルタをかけることができるようになる。
【0079】
なお、ブロック境界強度設定部402は、ブロックpとブロックqの少なくとも一方がイントラ・マクロブロックに属する場合は、H.264/AVCの定義に従ってBs値を設定すればよい。
【0080】
<動作>
次に、実施例1における画像符号化装置10の動作について説明する。図11は、実施例1におけるフィルタ処理(その1)の一例を示すフローチャートである。図11に示すフローは、フィルタに用いるパラメータであるBs値を再設定してフィルタ処理を行う例である。
【0081】
図11に示すステップS101で、設定部201は、隣接ブロックがインター・マクロブロックに属するか否かを判定する。隣接ブロックがインター・マクロブロックに属する場合(ステップS101−YES)、ステップS102に進み、隣接ブロックがインター・マクロブロックに属さない場合(ステップS101−NO)、ステップS107に進む。
【0082】
ステップS102で、動きベクトル差分値算出部301は、隣接ブロックの動きベクトルの差分値を算出する。
【0083】
ステップS103で、動きベクトル平均値算出部302は、隣接ブロックの動きベクトルの平均値を算出する。
【0084】
ステップS104で、隣接画素差分絶対値算出部303は、隣接ブロックの境界に位置する画素に対し、画素値の差分絶対値を算出する。ステップS102〜S104の処理は順不同であり、並列に処理されてもよい。
【0085】
ステップS105で、閾値設定部401は、隣接ブロックそれぞれの2つの動きベクトルの方向及び大きさに基づいて閾値を設定する。閾値は、例えば図8や図9に示すテーブルに基づいて設定される。
【0086】
ステップS106で、ブロック境界強度設定部402は、画素値の差分絶対値が閾値よりも大きい場合にBs値を再設定する。
【0087】
ステップS107で、フィルタ部202は、ブロック境界強度設定部402により設定又は再設定されたBs値を用いてデブロッキングフィルタ処理を行う。
【0088】
これにより、動きぼやけによりエッジ成分が低下している隣接ブロックに対し、隣接ブロックの境界にBs値が大きいデブロッキングフィルタをかけることができ、符号化歪を除去することができる。
【0089】
図12は、実施例1におけるフィルタ処理(その2)の一例を示すフローチャートである。図12に示すフローは、フィルタに用いるパラメータであるBs値を設定してフィルタ処理を行う例である。
【0090】
図12に示すステップS201〜S205の処理は、図11に示すステップS101〜S105の処理と同様であるため、その説明を省略する。
【0091】
ステップS206で、ブロック境界強度設定部402は、画素値の差分絶対値と閾値とにより、Bs値を設定する。ブロック境界強度設定部402は、例えば、上述した定義1に基づいてBs値を設定する。
【0092】
ステップS207で、ブロック境界強度設定部402は、H.264/AVCやHEVCなどの定義に基づいてBs値を設定する。
【0093】
ステップS208で、フィルタ部202は、ブロック境界強度設定部402に設定されたBs値を用いてデブロッキングフィルタ処理を行う。
【0094】
以上、実施例1によれば、ブロックpとブロックqとがインター・マクロブロックに属する場合に、動きベクトルを基準にして、隣接ブロックの境界の画素値差分が符号化歪であるか否かを判定し、Bs値を設定することができる。Bs値の設定により、動きぼやけによるエッジ成分が減少している境界で、画素値差分が大きい境界に対して、強いデブロッキングフィルタをかけることができるようになる。よって、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【0095】
[実施例2]
次に、実施例2における画像符号化装置について説明する。実施例2では、デブロッキングフィルタに用いるパラメータとして、フィルタオフセット値(FilterOffset)を設定する。実施例2によれば、隣接ブロックの動きベクトルの方向及び大きさに基づいて、フィルタオフセット値を適切に設定することで、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【0096】
<構成>
実施例2における画像符号化装置の構成は、図2に示す構成と同様であり、デブロッキングフィルタ部の構成は、図3に示す構成と同様であり、設定部の構成は、図4に示す構成と同様であるため、その説明を省略する。
【0097】
(パラメータ設定部)
図13は、実施例2におけるパラメータ設定部500の構成の一例を示すブロック図である。図13に示すパラメータ設定部500は、閾値設定部501、オフセット値設定部502を有する。
【0098】
閾値設定部501は、図5に示す閾値設定部401と同様であるため、その説明を省略する。
【0099】
オフセット値設定部502は、隣接画素差分絶対値算出部303から隣接画素の差分絶対値を取得し、閾値設定部501から閾値を取得した場合、差分絶対値が閾値よりも大きい場合に、その大きさの度合いに応じてフィルタオフセット値を設定する。
【0100】
例えば、差分絶対値が閾値よりも大きい場合、その大きさをxとする。オフセット値設定部502は、大きさxに対して、int(x/4)をフィルタオフセット値(FilterOffset)に設定する。このフィルタオフセット値は、Qp値に加算される。
【0101】
例えば、x=15の場合、int(15/4)=3がフィルタオフセット値となる。Qp=28とすると、Qp=28+3=31になり、Qp=31相当の強度のデブロッキングフィルタが行われることになる。オフセット値設定部502は、隣接画素ごとにフィルタオフセット値を設定する。
【0102】
オフセット値設定部502は、設定したフィルタオフセット値をフィルタ部202に出力する。これにより、フィルタ部202では、このフィルタオフセット値をQp値に加算して、加算後のQp値に相当するデブロッキングフィルタ処理を行うことができる。
【0103】
<動作>
次に、実施例2における画像符号化装置の動作について説明する。図14は、実施例2におけるフィルタ処理の一例を示すフローチャートである。図14に示すステップS301〜S305の処理は、図11に示すステップS101〜S105の処理と同様であるため、その説明を省略する。
【0104】
ステップS306で、オフセット値設定部502は、隣接ブロックの動きベクトルの方向及び大きさに基づき設定された閾値と、隣接画素の差分絶対値とを比較することで、フィルタオフセット値を設定する。
【0105】
ステップS307で、フィルタ部202は、設定されたフィルタオフセット値をQp値に加算し、加算後のQp値に相当するデブロックキングフィルタ処理を行う。
【0106】
以上、実施例2によれば、隣接ブロックの動きベクトルの方向及び大きさに基づいて、フィルタオフセット値を適切に設定することで、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。
【0107】
[実施例3]
次に、実施例3における画像符号化装置について説明する。実施例3は、実施例1と実施例2とを組み合わせた実施例である。
【0108】
<構成>
実施例3における画像符号化装置の構成は、図2に示す構成と同様であり、デブロッキングフィルタ部の構成は、図3に示す構成と同様であり、設定部の構成は、図4に示す構成と同様であるため、その説明を省略する。
【0109】
(パラメータ設定部)
図15は、実施例3におけるパラメータ設定部600の構成の一例を示すブロック図である。図15に示すパラメータ設定部600は、閾値設定部601、ブロック境界強度設定部602、オフセット値設定部603を有する。
【0110】
閾値設定部601は、図5に示す閾値設定部401と同様であるため、その説明を省略する。
【0111】
ブロック境界強度設定部602は、図5に示すブロック境界強度設定部402と同様であり、オフセット値設定部603は、図13に示すオフセット値設定部502と同様である。よって、パラメータ設定部600は、隣接ブロックの動きベクトルの方向及び大きさに基づいて、デブロッキングフィルタに用いるパラメータであるBs値、フィルタオフセット値を設定する。
【0112】
<動作>
次に、実施例3における画像符号化装置の動作について説明する。図16は、実施例3におけるフィルタ処理の一例を示すフローチャートである。図16に示すステップS401〜S406の処理は、図11に示すステップS101〜S106の処理と同様であるため、その説明を省略する。
【0113】
ステップS407の処理は、図14に示すステップS306の処理と同様である。
【0114】
ステップS408で、フィルタ部202は、再設定されたBs値、設定されたフィルタオフセット値を用いてデブロッキングフィルタ処理を行う。
【0115】
以上、実施例3によれば、ブロック境界に存在する動きベクトル予測に関する符号化歪を適切に除去することができる。なお、実施例3では、Bs値及びフィルタオフセット値の両方を設定可能な構成にしておき、ユーザによりいずれか一方を選択させて、選択された方のパラメータを設定するようにしてもよい。
【0116】
[実施例4]
図17は、実施例4における画像符号化装置700の構成の一例を示すブロック図である。画像符号化装置700は、上述した各実施例で説明した画像符号化処理をソフトウェアで実装した装置の一例である。
【0117】
図17に示すように、画像符号化装置700は、制御部701、主記憶部702、補助記憶部703、ドライブ装置704、ネットワークI/F部706、入力部707、表示部708を有する。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
【0118】
制御部701は、コンピュータの中で、各装置の制御やデータの演算、加工を行うCPUである。また、制御部701は、主記憶部702又は補助記憶部703に記憶されたフィルタ処理を含む画像符号化処理のプログラムを実行する演算装置である。制御部701は、入力部707や記憶装置からデータを受け取り、演算、加工した上で、表示部708や記憶装置などに出力する。
【0119】
制御部701は、フィルタ処理を含む画像符号化処理のプログラムを実行することで、各実施例で説明したフィルタ処理を実現することができる。
【0120】
主記憶部702は、ROM(Read Only Memory)やRAM(Random Access Memory)などであり、制御部701が実行する基本ソフトウェアであるOSやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【0121】
補助記憶部703は、HDD(Hard Disk Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【0122】
ドライブ装置704は、記録媒体705、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
【0123】
また、記録媒体705に、所定のプログラムを格納し、この記録媒体705に格納されたプログラムはドライブ装置704を介して画像符号化装置700にインストールされる。インストールされた所定のプログラムは、画像符号化装置700により実行可能となる。
【0124】
ネットワークI/F部706は、有線及び/又は無線回線などのデータ伝送路により構築されたLAN(Local Area Network)、WAN(Wide Area Network)などのネットワークを介して接続された通信機能を有する周辺機器と画像符号化装置700とのインターフェースである。
【0125】
入力部707は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部708の表示画面上でキーの選択等を行うためのマウスやスライスパット等を有する。また、入力部707は、ユーザが制御部701に操作指示を与えたり、データを入力したりするためのユーザインターフェースである。
【0126】
表示部708は、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等により構成され、制御部701から入力される表示データに応じた表示が行われる。
【0127】
なお、図2に示すフレームメモリ110は、例えば主記憶部702又は補助記憶部703により実現され、図2に示すフレームメモリ110以外の構成は、例えば制御部701及びワークメモリとしての主記憶部702により実現されうる。
【0128】
画像符号化装置700で実行されるプログラムは、実施例1〜3で説明した各部を含むモジュール構成となっている。実際のハードウェアとしては、制御部701が補助記憶部703からプログラムを読み出して実行することにより上記各部のうち1又は複数の各部が主記憶部702上にロードされ、1又は複数の各部が主記憶部702上に生成されるようになっている。
【0129】
このように、上述した各実施例で説明したフィルタ処理は、コンピュータに実行させるためのプログラムとして実現されてもよい。このプログラムをサーバ等からインストールしてコンピュータに実行させることで、前述したフィルタ処理を実現することができる。
【0130】
また、このプログラムを記録媒体705に記録し、このプログラムが記録された記録媒体705をコンピュータや携帯端末に読み取らせて、前述したフィルタ処理を実現させることも可能である。なお、記録媒体705は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。また、上述した各実施例で説明したフィルタ処理は、1つ又は複数の集積回路に実装してもよい。
【0131】
なお、実施例1〜4では、画像符号化装置を例にして説明したが、デブロッキングフィルタ機能を有する画像復号装置でも同様に適用することができる。画像符号化装置及び画像復号装置をまとめて画像処理装置と呼ぶ。また、上記各実施例では、H.264/AVCを例に説明したが、デブロッキングフィルタ処理を行う符号化技術であれば適用できる。
【0132】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記変形例以外にも種々の変形及び変更が可能である。
【符号の説明】
【0133】
10 画像符号化装置
101 前処理部
102 予測誤差信号生成部
103 直交変換部
104 量子化部
105 エントロピー符号化部
106 逆量子化部
107 逆直交変換部
108 復号画像生成部
109 フレームメモリ
110 動き予測部
111 動き補償部
201 設定部
202 フィルタ部
301 動きベクトル差分値算出部
302 動きベクトル平均値算出部
303 隣接画素差分絶対値算出部
304 パラメータ設定部
401、501、601 閾値設定部
402、602 ブロック境界強度設定部
502、603 オフセット値設定部
701 制御部
702 主記憶部
703 補助記憶部
704 ドライブ装置
706 ネットワークI/F部
707 入力部
708 表示部

【特許請求の範囲】
【請求項1】
画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置であって、
隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定部と、
前記設定部により設定されたパラメータを用いて、前記第1ブロックと前記第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタ部と、
を備える画像処理装置。
【請求項2】
前記設定部は、
前記第1ブロックの動きベクトルと前記第2ブロックの動きベクトルとの水平、垂直方向の差分値を算出する差分値算出部と、
前記第1ブロックの動きベクトルと前記第2ブロックの動きベクトルとの水平、垂直方向の平均値を算出する平均値算出部と、
前記第1ブロックと前記第2ブロックとの境界に隣接する各画素の差分絶対値を算出する差分絶対値算出部と、
前記差分値及び前記平均値に基づき閾値を設定する閾値設定部と、
前記差分絶対値と前記閾値との比較結果に基づき、前記パラメータを設定するパラメータ設定部とを備える請求項1記載の画像処理装置。
【請求項3】
前記パラメータは、デブロッキングフィルタで用いるブロック境界強度である請求項1又は2記載の画像処理装置。
【請求項4】
前記設定部は、
H.264/AVCの符号化技術に従って前記ブロック境界強度が設定されていた場合、前記ブロック境界強度を、前記動きベクトルの方向及び大きさに基づいて再設定する請求項3記載の画像処理装置。
【請求項5】
前記パラメータは、デブロッキングフィルタで用いるフィルタオフセット値である請求項1又は2記載の画像処理装置。
【請求項6】
前記閾値設定部は、
前記差分値、前記平均値、及び前記第1ブロック又は前記第2ブロックのサイズに基づき前記閾値を設定する請求項2記載の画像処理装置。
【請求項7】
画像のブロック境界の歪を除去するフィルタ処理を行う画像処理装置が実行するフィルタ処理方法であって、
隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、
前記設定ステップにより設定されたパラメータを用いて、前記第1ブロックと前記第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップと、
を有するフィルタ処理方法。
【請求項8】
画像のブロック境界の歪を除去するフィルタ処理を行うためのプログラムであって、
コンピュータに、隣接する第1ブロック及び第2ブロックの動きベクトルの方向及び大きさに基づき、デブロッキングフィルタ処理に用いるパラメータを設定する設定ステップと、
前記設定ステップにより設定されたパラメータを用いて、前記第1ブロックと前記第2ブロックとの境界でデブロッキングフィルタ処理を行うフィルタステップを実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−58935(P2013−58935A)
【公開日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願番号】特願2011−196445(P2011−196445)
【出願日】平成23年9月8日(2011.9.8)
【出願人】(000004352)日本放送協会 (2,206)
【Fターム(参考)】