本出願は、2016年1月29日に中国特許庁に出願された、「ブロッキングアーティファクトを除去するためのフィルタリング方法および装置」と題する中国特許出願第201610064753.8号に基づく優先権を主張し、当該出願はその全体が参照により本明細書に組み込まれている。
本発明は、ビデオ画像処理の分野に関し、特に、ブロッキングアーティファクトを除去するためのフィルタリング方法および装置に関する。
ビデオ符号化圧縮技術において、ブロックベースのハイブリッドビデオ符号化が主に実行され、1つのフレームのビデオ画像を複数のブロック(block)に分割し、ブロック毎に、(フレーム内予測およびフレーム間予測を含む)予測、変換、量子化、エントロピ符号化、および他の段階によってビデオ符号化圧縮を実装する。具体的には、ブロックの動き情報がまずブロックベースの動き補償予測(Motion Compensation Prediction、MCP)によって取得され、ブロックの予測画素値が動き情報に基づき決定され、そして、ブロックの元の画素値と予測画素値との間の残差に対して変換および量子化が実行され、最後に、量子化された変換係数および(コードブロックサイズ、予測モード、動きベクトル、および他の情報などの)符号化モード情報が、エントロピ符号化処理によってビットストリームに変換され、当該ビットストリームは、デコーダへ送信される。
ブロックベースのハイブリッドビデオ符号化は、各画像を異なるサイズのブロックに分割し、そして、ブロック予測、ブロック変換、およびブロック量子化を実行するためのものであるので、ブロック間の相関が考慮されず、ブロックの境界上の画素値の再構築精度がブロックの中間の画素値の再構築精度より低く、ブロックインコヒーレンス、すなわち、「ブロッキングアーティファクト」をもたらす。その結果、復号および再構築後に取得された画像は見るからに、ブロック同士を共に継ぎ合わせたように示される。従って、復号および再構築後、画像に対して、「ブロッキングアーティファクト除去」処理を実行する必要がある。
現在、ブロッキングアーティファクトを除去するための一般的な方法は、オーバーラップブロック動き補償(Overlapped Block Motion Compensation、OBMC)である。この方法は、全ての動きベクトルを連続するフィールドと見なし、内部画素が現在のブロックの動きベクトルに影響されるのみならず、周囲の動きベクトルにも大いに影響されることを示唆する。現在のブロックに隣接する、上、下、左、および右方向におけるサブブロックの動きベクトルが取得される。動きベクトルが存在し、現在のサブブロックの動きベクトルと異なる場合、動き補償は現在のブロックに対して当該動きベクトルを用いることによって実行され、現在のブロックの新たな予測信号を取得し、現在のブロックの元の予測信号および現在のブロックの新たな予測信号が、重み付けされてフィルタリングされ、「ブロッキングアーティファクト」を除去する。
上述の方法は、並進モデルに基づき実行され、言い換えれば、画像ブロックにおける全ての運動が並進運動である場合に限る。従って、既存のOBMCは、上境界および左境界上に位置するブロックのみがフィルタリングされることを示唆する。このケースにおいて、予測単位が非並進モード(例えば、アフィン運動モデル)の予測単位を含み、これらの予測単位ブロックの動きベクトルが異なる場合、フィルタリング処理は、上述の方法が依然として用いられた場合、単位の内部予測単位に対して実行できない。従って、「ブロッキングアーティファクト」は依然として、ブロック間に存在し、符号化精度ならびに主観的および客観的効果に影響を与える。
本発明の主な目的は、ブロッキングアーティファクトを除去するためのフィルタリング方法および装置を提供し、内部予測単位ブロック間の「ブロッキングアーティファクト」が処理できず、符号化精度ならびに主観的および客観的効果が影響を受けるといった問題を解決することである。
上述の目的を達成するために、以下の技術的解決手段が本発明の実施形態において用いられる。
第1の態様によると、本発明の実施形態では、ブロッキングアーティファクトを除去するためのフィルタリング方法が提供され、画像ブロックに対してフィルタリング処理を実行するために用いられ、ここで、画像ブロックは、少なくとも1つの予測単位および少なくとも1つの変換単位に分割され、予測単位は、非並進運動予測単位を含む。当該方法は、各予測単位を少なくとも2つのサブ単位に分割する段階であって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、段階と、少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定する段階と、少なくとも1つのフィルタリング境界のうち任意の1つに対して、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得する段階であって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、段階と、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する段階とを備えてよい。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
このように、予測単位内の全てのフィルタリング境界が決定され、フィルタリング処理はフィルタリング境界に隣接する画素に対して実行され、これにより、異なる動きベクトルを有する単位ブロック間の「ブロッキングアーティファクト」が除去され、画像の予測精度および主観的品質が向上する。
任意選択的に、第1の態様の実装可能な方式において、少なくとも2つのサブ単位における第1のサブ単位に対して、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、または、サブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界はフィルタリング境界であると決定され、ここで、第1の境界は、サブ単位の任意の境界である。加えて、サブ単位が非並進運動予測単位に含まれる場合、第1のサブ単位の各境界はフィルタリング境界であると決定される。
このように、予測単位における、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する境界がフィルタリング境界であると決定され、後続のフィルタリング処理が当該境界に対して実行されるのみならず、非並進運動予測単位の境界がフィルタリング境界であると決定されることもでき、予測単位における非並進運動予測単位の当該境界に対してフィルタリング処理が実行され、これにより、予測単位における非並進運動予測単位間のブロッキングアーティファクトが除去される。
任意選択的に、第1の態様の別の実装可能な方式において、フィルタリング境界に隣接する第1のサブ単位の第1の画素値を取得する段階は、第1のサブ単位の第1の予測画素値を取得する段階と、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算する段階と、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得する段階と、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得する段階とを含んでよく、ここで、Mは1から4の範囲にある任意の整数である。
第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、右サブ単位のそれぞれの動きベクトルを計算する段階は、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを導出する段階、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出する段階、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いる段階、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、上サブ単位の動きベクトルを導出する段階、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出する段階、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いる段階、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出する段階とを含む。
任意選択的に、第1の態様のさらに別の実装可能な方式において、フィルタリング境界に隣接する第1のサブ単位の第1の画素値を取得する段階はさらに、第1のサブ単位(P)の第1の予測画素値を取得する段階と、予め設定された非並進運動モデルに基づき、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、および右座標(2.4)におけるM組の座標の動きベクトルとを導出する段階であって、第1の頂点(1)および第2の頂点(2)は、第1のサブ単位(P)の任意の2つの異なる頂点であり、Mは1から4の範囲にある任意の整数である、段階と、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、および右座標(2.4)におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得する段階であって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位(P)の第1の頂点(1)に隣接する第1の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する第1の座標の動きベクトルとを含み、第1の座標は、上座標であり、または下座標であり、または左座標であり、または右座標である、段階と、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位(P)のM個の動きベクトルを取得する段階と、第1のサブ単位(P)のM個の動きベクトルに基づき、第1のサブ単位(P)のM個の第2の予測画素値を取得する段階と、第1のサブ単位(P)の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位(P)の第1の画素値を取得する段階とを含んでよい。
このように、異なるサブ単位の動きベクトルの相関を考慮し、第1のサブ単位に隣接するサブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償が実行されるか、または、第1のサブ単位に隣接する座標点に基づき、第1の単位の動きベクトルが計算され、第1のサブ単位に対して動き補償を実行する。従って、データ冗長性およびデータ符号化長さが低減され、第1のサブ単位の予測精度が向上する。
任意選択的に、第1の態様のさらに別の実装可能な方式において、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する段階は、フィルタリング境界の境界強度値を決定する段階と、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき、フィルタリング境界に対応する閾値βおよびtを取得する段階と、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する段階であって、Mは1より大きいかまたはそれに等しい整数である、段階とを含んでよい。
このように、フィルタリング処理は、フィルタリング境界の強度に基づき、フィルタリング境界に隣接する画素に対して実行されることができ、変換単位および予測単位の分割により引き起こされるブロッキングアーティファクトを低減する。
第2の態様によると、本発明の実施形態はさらに、第1の態様において説明されている方法を実行するように構成されるフィルタリング装置を提供する。フィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割するように構成される分割ユニットであって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、分割ユニットと、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定するように構成される決定ユニットと、決定ユニットにより決定された少なくとも1つのフィルタリング境界のうち任意の1つに対して、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得するように構成される取得ユニットであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得ユニットと、取得ユニットにより取得された、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されるフィルタリングユニットとを備えてよい。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
このように、予測単位における全てのフィルタリング境界が決定され、フィルタリング処理は、フィルタリング境界に隣接する画素に対して実行され、これにより、異なる動きベクトルを有する単位ブロック間の「ブロッキングアーティファクト」が除去され、画像の予測精度および主観的品質が向上する。
任意選択的に、第2の態様の実装可能な方式において、少なくとも2つのサブ単位のうち任意の1つに対して、決定ユニットは具体的に、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界がフィルタリング境界であると決定するか、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界がフィルタリング境界であると決定するように構成され、ここで、第1の境界は、サブ単位の任意の境界である。
このように、予測単位における、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する境界がフィルタリング境界であると決定され、後続のフィルタリング処理が当該境界に対して実行されるのみならず、非並進運動予測単位の境界がフィルタリング境界であることが決定されることもでき、フィルタリング処理が予測単位における非並進運動予測単位の当該境界に対して実行され、これにより、予測単位における非並進運動予測単位間のブロッキングアーティファクトが除去される。
任意選択的に、第2の態様の別の実装可能な方式において、取得ユニットは具体的に、第1のサブ単位の第1の予測画素値を取得すること、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することであって、Mは1から4の範囲にある任意の整数である、計算すること、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することを行うように構成されてよい。
第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出することを含む。
任意選択的に、第2の態様のさらに別の実装可能な方式において、取得ユニットはさらに具体的に、第1のサブ単位(P)の第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、右座標(2.4)におけるM組の座標の動きベクトルとを導出することであって、第1の頂点(1)および第2の頂点(2)は第1のサブ単位(P)の任意の2つの異なる頂点であり、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、右座標(2.4)におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位(P)の第1の頂点(1)に隣接する第1の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する第1の座標の動きベクトルとを含み、第1の座標は上座標であり、または下座標であり、または左座標であり、または右座標である、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位(P)のM個の動きベクトルを取得すること、第1のサブ単位(P)のM個の動きベクトルに基づき、第1のサブ単位(P)のM個の第2の予測画素値を取得すること、および、第1のサブ単位(P)の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位(P)の第1の画素値を取得することを行うように構成されてよい。
このように、異なるサブ単位の動きベクトルの相関を考慮し、第1のサブ単位に隣接するサブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償が実行されるか、または、第1のサブ単位に隣接する座標点に基づき、第1の単位の動きベクトルが計算され、第1のサブ単位に対して動き補償を実行する。従って、データ冗長性およびデータ符号化長さが低減され、第1のサブ単位の予測精度が向上する。
任意選択的に、第2の態様のさらに別の実装可能な方式において、決定ユニットはさらに、フィルタリング境界の境界強度値を決定するように構成され、フィルタリングユニットは具体的には、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき、フィルタリング境界に対応する閾値βおよびtを取得し、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成され、ここで、Mは、1より大きいかまたはそれに等しい整数である。
このように、フィルタリング処理は、フィルタリング境界の強度に基づき、フィルタリング境界に隣接する画素に対して実行されることができ、変換単位および予測単位の分割により引き起こされるブロッキングアーティファクトを低減する。
第2の態様において説明されている機能モジュールは、ハードウェアを用いることによって実装され得て、またはハードウェアにより、対応するソフトウェアを実行することによって実装され得ることに留意すべきである。ハードウェアまたはソフトウェアは、上述の機能に対応する1つまたは複数のモジュール、例えば、外部ネットワーク要素と通信するように構成される通信ユニット、分割ユニット、決定ユニット、取得ユニット、およびフィルタリングユニットの機能を実装するように構成されるプロセッサ、および対応するアプリケーションプログラムを記憶するように構成されるメモリを含む。プロセッサ、通信ユニット、およびメモリは、バスを用いることによって接続され、互いに通信する。具体的な実装方式は以下の通りである。
第3の態様によると、本発明の実施形態はさらに、第1の態様において説明される方法を実行するように構成されるフィルタリング装置を提供する。フィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割するように構成される分割ユニットであって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、分割ユニットと、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定するように構成される決定ユニットと、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得するように構成される取得ユニットであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得ユニットと、取得ユニットにより取得された、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されるフィルタリングユニットとを備えてよい。
具体的には、プロセッサにより実行される機能については、第2の態様において提供されているフィルタリングユニットにおける分割ユニット、決定ユニット、取得ユニット、およびフィルタリングユニットにより実行される機能を参照されたい。
以上から、本発明の実施形態はブロッキングアーティファクトを除去するためのフィルタリング方法およびフィルタリング装置を提供することが分かる。各予測単位は、少なくとも2つのサブ単位に分割される。分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれは、トラバースされ、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界は、予め設定された規則に基づき、決定される。第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値は取得され、ここで、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する。第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理が実行される。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトが除去され、画像の予測精度および主観的品質が向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを完全に除去できないといった問題を回避する。
本発明の実施形態における、または従来技術における技術的解決手段をより明確に説明するために、以下では、実施形態または従来技術を説明するために必要とされる添付の図面を簡潔に説明する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示しているに過ぎず、当業者は、創造努力なく、これらの添付の図面から、他の図面をさらに導出し得る。
本発明の実施形態に係るフィルタリング装置の構造図である。
本発明の実施形態に係る、ブロッキングアーティファクトを除去するためのフィルタリング方法のフローチャートである。
本発明の実施形態に係る画像ブロックの模式図である。
本発明の実施形態に係る画像ブロックの模式図である。
本発明の実施形態に係る画像ブロックの模式図である。
本発明の実施形態に係るフィルタリング装置の構造図である。
本発明の主な原理は以下の通りである。予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、非並進運動予測単位も発見され、フィルタリング処理が予測単位における非並進運動予測単位の境界に対して実行され、これにより、予測単位におけるブロッキングアーティファクトが除去され、画像の予測精度および主観的品質が向上し、非並進運動モジュールを用いることによって動き補償が実行される予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを完全に除去できないといった問題を回避する。従って、画像の予測精度および主観的品質が向上する。
本発明の明細書、特許請求の範囲、および添付の図面における「第1」、「第2」、「第3」、および「第4」等(存在する場合)の用語は、類似するものを区別することを意図するものであるが、必ずしも特定の順序を示すものではないことに留意すべきである。そのように称されるデータは、適切な状況において交換可能であり、これにより、本明細書において説明されている本発明の実施形態は、本明細書において示されまたは説明されている順序と異なる順序において実装できることが理解されるべきである。加えて、「中心」、「上」、「下」、「左」、「右」、「頂部」、「底部」、「内側」、および「外側」等の用語により示される方向または位置関係は、添付の図面に基づき示される方向または位置関係であり、本発明を容易に説明し、説明を簡略化するために用いられるに過ぎず、示されているシステムまたは構成要素は特定の向きを有する必要があること、または特定の向きにおいて構成されて操作される必要があることを示すまたは暗示するものではなく、従って、本発明に対する限定として理解されることができない。
以下では、本発明の実施形態における添付の図面を参照し、本発明の実施形態における技術的解決手段を明確に、かつ十分に説明する。明らかに、説明されている実施形態は、本発明の実施形態の全部ではなく一部に過ぎない。当業者により、本発明の実施形態に基づき、創造努力なく取得される他の全ての実施形態は、本発明の保護範囲内に含まれるものとする。
図1は、本発明において提供される方法を実行できるフィルタリング装置の構造図である。フィルタリング装置は、画像ブロックに対してフィルタリング処理を実行するように構成される。画像ブロックは、少なくとも1つの予測単位、少なくとも1つの非並進運動予測単位、および少なくとも1つの変換単位に分割される。予測単位は、非並進運動予測単位を含む。フィルタリング装置は、ビデオ符号化装置またはビデオ復号装置であってよい。ビデオ符号化装置またはビデオ復号装置は、例えば、ノートブックコンピュータ、タブレットコンピュータ、パーソナルコンピュータ、携帯電話、またはビデオサーバなどの、ビデオを出力または記憶する必要がある任意の装置であってよい。図1を参照すると、フィルタリング装置は、通信インタフェース1001、プロセッサ1002、メモリ1003、および、これらの構成要素の間の接続および相互通信を実装するように構成される少なくとも1つの通信バス1004を備えてよい。
通信インタフェース1001は、外部ネットワーク要素とのデータ通信を実行するように構成されてよい。
プロセッサ1002は、中央処理装置(central processing unit、略してCPU)であってよく、または、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、または、例えば、1つまたは複数のマイクロプロセッサ(digital signal processor、DSP)、もしくは1つまたは複数のフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)のような、本発明の本実施形態を実装するように構成される1つまたは複数の集積回路であってよい。
メモリ1003は、ランダムアクセスメモリ(random−access memory、RAM)などの揮発性メモリ(volatile memory)、または、リードオンリメモリ(read−only memory、ROM)、フラッシュメモリ(flash memory)、ハードディスクドライブ(hard disk drive、HDD)、もしくはソリッドステートドライブ(solid−state drive、SSD)などの不揮発性メモリ(non−volatile memory)、または、上述の種類のメモリの組み合わせであってよく、本発明において提供されているフィルタリング方法を実装できるアプリケーションプログラムを記憶するように構成される。
通信バス1004は、アドレスバス、データバス、制御バス、および同様のものに分類されてよく、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、ペリフェラルコンポーネントインターコネクト(Peripheral Component、PCI)バス、拡張型業界標準アーキテクチャ(Extended Industry Standard Architecture、EISA)バス、または同様のものであってよい。表記を容易にするために、通信バスは、図1において1本の太線のみを用いることによって表わされるが、1つのバスのみ、または1種類のバスのみが存在することを示すわけではない。
具体的には、プロセッサ1002は、各予測単位を少なくとも2つのサブ単位に分割することであって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、分割すること、少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定すること、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得することであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得すること、および、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することを行うように構成される。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
少なくとも2つのサブ単位のうち任意の1つに対して、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界はフィルタリング境界であると決定されるか、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界はフィルタリング境界であると決定され、ここで、第1の境界は、サブ単位の任意の境界である。
任意選択的に、プロセッサ1002は、第1のサブ単位の第1の予測画素値を取得し、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算し、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得し、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化し、第1のサブ単位の第1の画素値を取得するように構成されてよく、ここで、Mは、1から4の範囲にある任意の整数である。
プロセッサ1002が、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって左サブ単位の動きベクトルを導出することであってよい。
任意選択的に、プロセッサ1002はさらに、第1のサブ単位の第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルとを導出することであって、第1の頂点および第2の頂点は第1のサブ単位の任意の2つの異なる頂点であり、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する第1の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する第1の座標の動きベクトルとを含み、第1の座標は上座標であり、または下座標であり、または左座標であり、または右座標である、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位のM個の動きベクトルを取得すること、第1のサブ単位のM個の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することを行うように構成されてよい。
任意選択的に、プロセッサ1002はさらに、フィルタリング境界の境界強度値を決定し、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されてよい。
以上から、本発明の本実施形態において提供されているフィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割すること、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定すること、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得することであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得すること、および、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することを行うことが分かる。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトが除去され、画像の予測精度および主観的品質が向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを完全に除去できないといった問題を回避する。
説明しやすくするために、実施形態1は、段階の形式で、本発明において提供されている、ブロッキングアーティファクトを除去するためのフィルタリング方法を示して詳細に説明する。示されている段階は、例えば、図1において示されている装置以外の、実行可能な命令のセットを含むコンピュータシステムにおいて実行されてもよい。加えて、論理的な順序が図面において示されているが、示されているまたは説明されている段階は、いくつかの場合において異なる順序において実行されてよい。
[実施形態1]
図2は、本発明の実施形態に係る、ブロッキングアーティファクトを除去するためのフィルタリング方法のフローチャートである。方法は、図1において示されているフィルタリング装置によって実行され、画像ブロックに対してフィルタリング処理を実行するために用いられる。画像ブロックは、少なくとも1つの予測単位および少なくとも1つの変換単位に分割される。予測単位は、非並進運動予測単位を含む。
画像ブロックは、符号化画像ブロックであってよく、または復号画像ブロックであってよい。フィルタリング装置がビデオ符号化装置であるとき、画像ブロックは、符号化画像ブロックである。フィルタリング装置がビデオ復号装置であるとき、画像ブロックは、復号画像ブロックである。
高効率ビデオ符号化(High Efficiency Video Coding、HEVC)規格において、画像ブロックのサイズは、64×64、32×32、16×16、および8×8という4つのレベルに分類され得る。各レベルの画像ブロックは、フレーム内予測およびフレーム間予測に基づき、異なるサイズの予測単位に分割され得る。各予測単位は、並進運動モデルベースの動き補償予測および非並進運動モデルベースの動き補償予測に基づき、並進運動予測単位および非並進運動予測単位に分類され得る。各レベルの画像ブロックは、異なる変換方法に基づき、異なるサイズの変換単位に分割されてよい。
本発明において説明されている非並進運動は、アフィン運動、スケール運動(scale motion)、回転運動、または透視運動(perspecive motion)などの任意の不規則な運動を含んでよいことに留意すべきである。予測単位が非並進運動予測単位を含むことは、予測単位が非並進運動予測単位と交差することを意味する。任意選択的に、予測単位は、並進運動予測単位および非並進運動予測単位を含んでよい。
例えば、図3に示されているように、フレーム間予測が32×32の画像ブロックに対して実行される場合、32×32の画像ブロックは、1つの予測単位として単独で用いられ得る。動き補償予測が非並進運動モジュールを用いることによって予測単位に対して実行される場合、予測単位は、各非並進運動予測単位に基づき、異なるサイズの非並進運動予測単位に分割され得る。異なる変換モードが32×32の画像ブロックにおける異なるサイズの単位のために用いられる場合、32×32の画像ブロックは、各変換単位に基づき、異なるサイズの変換単位に分割され得る。
非並進運動モデルに基づき取得された隣接する単位の動きベクトルは異なる。従って、動き補償予測が非並進運動モデルに基づき実行される、予測単位における隣接する単位の間のブロッキングアーティファクトを除去するために、隣接する単位間の境界を発見することがさらに必要であり、これにより、境界に近い画素に対してフィルタリング処理を実行することができる。図2において示されているように、方法は、以下の段階を備えてよい。
S101.各予測単位を少なくとも2つのサブ単位に分割し、ここで、各サブ単位は、N×N個の画素を含み、Nは、1より大きいかまたはそれに等しい整数である。
Nの値は、必要に応じて設定されてよく、このことは本発明の本実施形態において限定されない。任意選択的に、Nは、デフォルトで4である。
例えば、w×hの予測単位は、複数の4×4のサブ単位に分割されてよい。本発明の本実施形態において、4×4のサブ単位は、4×4の画素を含むサブ単位を表わし得る。
S102.少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定する。
任意選択的に、少なくとも2つのサブ単位の任意の1つに対して、予め設定された規則に基づき、サブ単位のフィルタリング境界を決定する段階は、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界がフィルタリング境界であると決定する段階、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界がフィルタリング境界であると決定する段階を含んでよく、ここで、第1の境界は、サブ単位の任意の境界である。
このように、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する、予測単位における画素が発見されるのみならず、動き補償予測が非並進運動モデルに基づき実行される、予測単位における隣接する単位間の境界も取得できる。
例えば、図3において示されているように、32×32の予測単位は、(図3の影1により示されているように)64個の4×4のサブ単位に分割されてよい。各サブ単位は、上境界、下境界、左境界、および右境界という4つの境界を有してよい。図3の影2により示されているサブ単位は、予測単位の内部サブ単位である。動き補償予測が非並進運動モデルを用いることによって実行されるので、サブ単位の動きベクトルは、その隣接するサブ単位の動きベクトルと異なる。サブ単位が予測単位の内部サブ単位であるので、既存のフィルタリング方式が用いられる場合、サブ単位に対してフィルタリング処理が実行されず、その結果、サブ単位とその隣接するサブ単位との間の「ブロッキングアーティファクト」は除去されない。しかし、サブ単位の境界は、フィルタリング境界であると段階S102において決定され得て、フィルタリング処理は、後続の段階における処理によってサブ単位の境界の近くの画素に対して実行され得て、サブ単位とその隣接するサブ単位との間の「ブロッキングアーティファクト」を可能な限り除去し、それにより、予測単位の内部サブ単位に対してフィルタリング処理を実装し、ビデオ画像の主観的および客観的品質を向上させる。
図3において示されているサブ単位の上、下、左、および右境界は単に、説明のための例であり、サブ単位の境界は、本例のネーミング方式を含むが、それに限定されないことに留意すべきである。
S103.第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得し、ここで、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
垂直フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが水平に配置されている変換単位または非並進運動予測単位のサブブロック境界であり、水平フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが垂直に配置されている変換単位または非並進運動予測単位のサブブロック境界であることに留意すべきである。本発明において、画像ブロックは、x軸(すなわち、水平方向)およびy軸(垂直方向)を含む平面であることが理解され得る。従って、「水平」は、x軸に平行であることを意味し、「垂直」は、y軸に平行であることを意味する。例えば、図3において示されているように、変換単位のサブブロックがx軸に平行に配置された変換単位のサブブロック境界は、垂直フィルタリング境界である。
例えば、第1のサブ単位または第2のサブ単位の第1の画素値は、以下の方式1または方式2で取得されてよい。第1のサブ単位の第1の画素値を取得する方式は第2のサブ単位の第1の画素値を取得する方式と同じであるので、説明しやすくするために、第1のサブ単位の第1の画素値を取得することのみを例として用いて、方式1または方式2を説明する。
方式1:第1のサブ単位の第1の予測画素値を取得すること、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することであって、Mは1から4の範囲にある任意の整数である、計算すること、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することである。
本発明の本実施形態において、動きベクトルは、水平成分および垂直成分を含むことに留意すべきである。水平成分は、x軸に平行な成分であり、垂直成分は、y軸に平行な成分である。
第1のサブ単位の第1の予測画素値は、動きモデルに基づき導出された元の画素値であってよい。例えば、第1のサブ単位がアフィン運動単位であるとき、第1のサブ単位における各画素の動きベクトルは、以下のアフィン運動モデル(1)に基づき取得されてよい。そして、第1のサブ単位における各画素をトラバースし、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見する。参照フレームにおける画素の画素値は、第1のサブ単位における画素の予測画素値として用いられる。全ての画素をトラバースすることによって取得された予測画素値は、第1のサブ単位の第1の予測画素値となるよう組み合わせられる。第1のサブ単位がN×N個の画素を含む場合、第1のサブ単位の取得された第1の予測画素値は、N×N個のマトリックスであることが理解され得る。加えて、既存の補間フィルタリングアルゴリズムが、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見するために用いられてよく、このことはここでは詳細に説明されない。本発明の本実施形態において、参照フレームは、前方参照フレームであってよく、または後方参照フレームであってよいことに留意すべきである。
アフィン運動モデル(1)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(V1x,V1y)は通常、第1のサブ単位の右頂点(w,0)の動きベクトルであってよく、ここで、wは、第1のサブ単位の幅であってよく、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである。
第1のサブ単位に隣接する上サブ単位は、第1のサブ単位の上境界に隣接するサブ単位であり、第1のサブ単位に隣接する下サブ単位は、第1のサブ単位の下境界に隣接するサブ単位であり、第1のサブ単位に隣接する左サブ単位は、第1のサブ単位の左境界に隣接するサブ単位であり、第1のサブ単位に隣接する右サブ単位は、第1のサブ単位の右境界に隣接するサブ単位である。
例えば、図3において示されているように、第1のサブ単位がサブ単位2である場合、サブ単位aは、第1のサブ単位の上サブ単位であり、サブ単位bは、第1のサブ単位の下サブ単位であり、サブ単位cは、第1のサブ単位の左サブ単位であり、サブ単位dは、第1のサブ単位の右サブ単位である。
任意選択的に、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出することを含んでよい。
本発明の本実施形態において、非並進運動は、アフィン運動、スケール運動、回転運動、または透視運動などの任意の不規則な運動であってよい。 従って、異なる非並進運動に対応し、予め設定された非並進運動モデルを用いることによって、サブ単位の動きベクトルを導出することは、アフィン運動モデル(1)に基づき、サブ単位の動きベクトルを導出すること、または、スケール運動モデル(2)
に基づき、サブ単位の動きベクトルを導出することであって、スケール運動モデル(2)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(a0,a1)は、1組の予め設定されたスケール因子であり、a0は、水平方向におけるスケール因子であり、a1は、垂直方向におけるスケール因子であり、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである、導出すること、または、回転運動モデル(3)
に基づき、サブ単位の動きベクトルを導出することであって、回転運動モデル(3)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである、導出すること、または、透視運動モデル(4)
に基づき、サブ単位の動きベクトルを導出することであって、透視運動モデル(4)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(V1x,V1y)は通常、第1のサブ単位の右頂点(w,0)の動きベクトルであってよく、(V2x,V2y)は通常、第1のサブ単位の左下の頂点(0,h)の動きベクトルであってよく、(V3x,V3y)は通常、第1のサブ単位の右下の頂点(w,h)の動きベクトルであってよく、wは、第1のサブ単位の幅であってよく、hは、第1のサブ単位の高さであり、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである、導出することを含んでよい。
第2の画素値は、第1のサブ単位に隣接するサブ単位を用いて第1のサブ単位に対して動き補償を実行することによって取得された新たな画素値であってよい。
任意選択的に、Mが4であるとき、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得することは、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得すること、第1のサブ単位に隣接する下サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得すること、第1のサブ単位に隣接する左サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得すること、および、第1のサブ単位に隣接する右サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得することを含んでよい。
第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式は基本的に、第1のサブ単位に隣接する下サブ単位または左サブ単位または右サブ単位に基づく動き補償を実行する実装方式と同じであることに留意すべきである。説明しやすくするために、ここでは、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式のみが、説明のための例として用いられる。
例えば、第1のサブ単位に隣接する上サブ単位の動きベクトルは、第1のサブ単位の動きベクトルとして用いられてよく、そして、動きベクトルに基づき、指定された参照フレームにおいて、第1のサブ単位にマッチする単位が発見され、参照フレームにおけるマッチした単位の画素値が、第1のサブ単位の第2の予測画素値として用いられる。
任意選択的に、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することは、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化し、第1のサブ単位の第1の画素値を取得することを含んでよい。
具体的には、第1のサブ単位の第1の予測画素値および各第2の予測画素値はまず、以下の式(5)に基づき、重み付けされ得て、M個の重み付けされた画素値を取得し、当該M個の重み付けされた画素値は平均化され、第1のサブ単位の第1の画素値を取得する。
式(5)において、PC(i,j)は、第1のサブ単位の第1の予測画素値であり、PN(i,j)は、第1のサブ単位の第2の予測画素値であり、WN(i,j)は、第2の予測画素値PN(i,j)に対応する重み付けマトリックスであり、P'C(i,j)は、第1のサブ単位の第1の画素値および第2の画素値に対して重み付けを行った後に取得された画素値であり、Mの値は、1から4の範囲にあってよい。
例えば、第1のサブ単位が4×4の画素を含む場合、第1のサブ単位の第1の予測画素値および第2の予測画素値は両方とも、4×4のマトリックスである。 概して、上、下、左、および右サブ単位という4つのサブ単位を用いることによって動き補償を実行することによって取得された予測画素値P1、P2、P3、およびP4に対応する重み付けマトリックスW1、W2、W3、およびW4は、
および、
である。
方式2:第1のサブ単位Pの第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとを導出することであって、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位Pの第1の頂点1に隣接する第1の座標の動きベクトルおよび第1のサブ単位Pの第2の頂点2に隣接する第1の座標の動きベクトルを含み、第1の座標は、上座標であり、または下座標であり、または左座標であり、または右座標であり、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位PのM個の動きベクトルを取得すること、第1のサブ単位PのM個の動きベクトルに基づき、第1のサブ単位PのM個の第2の予測画素値を取得すること、および、第1のサブ単位Pの第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位Pの第1の画素値を取得することである。
第1のサブ単位Pの第1の頂点1に隣接する上座標1.1は、第1のサブ単位の上境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点1に隣接する下座標1.2は、第1のサブ単位Pの下境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する左座標1.3は、第1のサブ単位の左境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する右座標1.4は、第1のサブ単位の右境界に隣接するサブ単位の第1の頂点の座標であってよい。
第1のサブ単位Pの第2の頂点2に隣接する上座標2.1は、第1のサブ単位の上境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する下座標2.2は、第1のサブ単位の下境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する左座標2.3は、第1のサブ単位の左境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する右座標2.4は、第1のサブ単位の右境界に隣接するサブ単位の第2の頂点の座標であってよい。本発明の本実施形態において、サブ単位の第1の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点のうち任意の1つであってよく、サブ単位の第2の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点において、第1の頂点以外の頂点のうち任意の1つであってよいことに留意すべきである。サブ単位の頂点は、頂点の位置における画素の座標点であってよい。概して、第1のサブ単位Pの左上の頂点は、原点(0,0)に設定され、他の頂点の座標は、原点の位置に基づき、それに対応して設定される。
例えば、図4において示されているように、第1のサブ単位Pは、4×4のサブ単位である。4×4は、画素の数量であり、水平方向または垂直方向における隣接する画素の間の間隔が1である。第1のサブ単位Pの第1の頂点1は左上の頂点における画素(0,0)であると仮定する。第1のサブ単位の左上の頂点および右上の頂点は、3つの画素だけ離間されている。従って、第1のサブ単位Pの第2の頂点2は、右上の頂点における画素(3,0)であり、第1の頂点1に隣接する上座標1.1は、第1のサブ単位Pの上境界に隣接する上サブ単位の左上の頂点における画素(0,−4)であり、第1の頂点1に隣接する下座標1.2は、第1のサブ単位Pの下境界に隣接する下サブ単位の左上の頂点における画素(0,4)であり、第1の頂点1に隣接する左座標1.3は、第1のサブ単位Pの左境界に隣接する左サブ単位の左上の頂点における画素(−4,0)であり、第1の頂点1に隣接する右座標1.4は、第1のサブ単位Pの右境界に隣接する右サブ単位の左上の頂点における画素(4,0)である。同様に、図4において示されているように、画素(3,0)である第2の頂点2に隣接する上座標2.1は、第1のサブ単位Pの上境界に隣接する上サブ単位の右上の頂点における画素(3,−4)であり、第2の頂点2に隣接する下座標2.2は、第1のサブ単位Pの下境界に隣接する下サブ単位の右上の頂点における画素(3,4)であり、第2の頂点2に隣接する左座標2.3は、第1のサブ単位Pの左境界に隣接する左サブ単位の右上の頂点における画素(−1,0)であり、第2の頂点2に隣接する右座標2.4は、第1のサブ単位Pの右境界に隣接する右サブ単位の右上の頂点における画素(7,0)である。
例えば、M=4であるとき、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトル、および第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトルは、予め設定された非並進運動モデルに基づき、導出されてよい。
第1の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する上座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標の動きベクトルとを含む。第2の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する下座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する下座標の動きベクトルとを含む。第3の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する左座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する左座標の動きベクトルとを含む。第4の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する右座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する右座標の動きベクトルとを含む。
計算は、予め設定された非並進運動モデルに基づき、第1の動きベクトルペア、第2の動きベクトルペア、第3の動きベクトル、および第4の動きベクトルペアに対して別々に実行され、第1のサブ単位の4つの動きベクトルを取得する。第1のサブ単位の4つの第2の予測画素値は、第1のサブ単位の4つの動きベクトルに基づき、取得される。第1のサブ単位の第1の予測画素値および4つの第2の予測画素値は、別々に重み付けされる。重み付け後の結果が平均化され、第1のサブ単位の第1の画素値を取得する。
方式2で第1のサブ単位の第1の予測画素値を取得するための方法は、方式1で第1のサブ単位の第1の予測画素値を取得するための方法と同じであり、詳細は、ここでは再び説明されない。
加えて、方式2において、第1のサブ単位のM個の第2の予測画素値が第1のサブ単位のM個の動きベクトルに基づき取得され、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値が別々に重み付けされ、重み付け後の結果が平均化され、第1のサブ単位の第1の画素値を取得するという方式も、方式1における方式と同じであり、詳細はここでは再び説明されない。
第1のサブ単位の第1の頂点または第2の頂点に隣接する上、下、左、および右座標の動きベクトルは、予め設定された非並進運動モデル(1)、または(2)、または(3)、または(4)に基づき導出され得ることが理解され得る。
S104.第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する。
任意選択的に、フィルタリング境界の境界強度値が設定されてよく、フィルタリング処理は、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対して、第2の予め設定されたアルゴリズムを用いることによって実行されてよく、ここで、Mは、1より大きいかまたはそれに等しい整数である。
例えば、フィルタリング境界に対応する閾値βおよびtは、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき取得され得る。
フィルタリング処理は、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対して実行され、ここで、Mは、1より大きいかまたはそれに等しい整数である。
フィルタリング境界の境界強度値は、以下の方式で設定されてよい。少なくとも1つのフレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在する場合、フィルタリング境界の境界強度値を2に設定するか、または、フレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在せず、フィルタリング境界が変換単位のサブブロック境界であり、かつ、第1のサブ単位もしくは第2のサブ単位が位置する変換単位が、少なくとも1つの非ゼロ係数を有する場合、フィルタリング境界の境界強度値を1に設定するか、または、フレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在しない場合、かつ、以下の条件(1)から(3)のうち任意の1つが真の条件であるとき、フィルタリング境界の境界強度値を1に設定し、そうでなければ、フィルタリング境界の境界強度値を0に設定する。(1)第1のサブ単位および第2のサブ単位が位置する予測単位の参照画像または動きベクトルの数量は同じであり、第1のサブ単位が位置する予測単位は1つの動きベクトルを有し、第2のサブ単位が位置する予測単位は1つの動きベクトルを有し、第1のサブ単位の動きベクトルおよび第2のサブ単位の動きベクトルの水平成分または垂直成分間の動きベクトル差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、(2)第1のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、第2のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、同じ予測画像を示す2つの動きベクトルの水平成分または垂直成分間の動きベクトル差は動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(3)第1のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、第2のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、かつ、以下の2つの条件aおよびbが真の条件である。(a)前方参照候補リストlist0を示す2つの動きベクトルの水平成分もしくは垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す2つの動きベクトルの水平成分もしくは垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(b)前方参照候補リストlist0を示す、第1のサブ単位が位置する予測単位の動きベクトル、および後方参照候補リストlist1を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分もしくは垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す、第1のサブ単位が位置する予測単位の動きベクトル、および前方参照候補リストlist0を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しい。
動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度であってよく、または、第1のサブ単位および第2のサブ単位が位置する予測単位の動きモデルが異なる場合、動きベクトル差閾値Tは、1/4の輝度サンプリング精度であり、もしくは、第1の単位および第2のサブ単位が位置する予測単位の動きモデルが同じである場合、動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度である。
初期閾値β0およびt0は、必要に応じて設定されるが、このことは、本発明の本実施形態において限定されない。
例えば、閾値βおよびtは、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき取得される。
βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することは、まず、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとを、式
に代入し、qPLを取得し、ここで、QpQは、第1のサブ単位の量子化パラメータであり、QpPは、第2のサブ単位の量子化パラメータであり、そして、式
、および式
に基づき、2つのQ値を取得し、予め設定された表を照会し、式
に基づき、取得されたQ値に対応するβ'を取得し、かつ、式
に基づき、取得されたQ値に対応するt'Cを取得すること、表を照会することによって取得されたβ'を式
に代入し、閾値βを取得することであって、BitDepthは、画素のビット幅を示す、取得すること、表を照会することによって取得されたt'Cを式
に代入し、閾値tを取得すること、および、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差をβおよびtと比較し、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する必要があるかを決定することを含んでよい。
例えば、図5は、水平フィルタリング境界に隣接するサブ単位の構造図である。図5において示されているように、第1のサブ単位Pおよび第2のサブ単位Qはそれぞれ、4×4の画素を含む。PおよびQにおける画素の画素値が以下の式を満たした場合、水平フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することが決定される。
Pの第1行および第4行における画素と、Qの第1行および第4行における画素とが以下の式
および、
を満たした場合、水平フィルタリング境界に隣接する画素に対して強いフィルタリングが実行されるか、または、上述の条件が満たされなかった場合、弱いフィルタリングが実行され、ここで、iの値は、0または3である。
任意選択的に、水平フィルタリング境界に隣接する画素に対して強いフィルタリングを実行することは、水平フィルタリング境界に隣接する8つの画素を取得し、5つのタップを有するフィルタを用いることによってフィルタリングを実行することであってよい。例えば、Pの第1行における4つの画素と、Qの第1行における4つの画素とが選択されてよく、当該8つの画素は、5つのタップを有するフィルタを用いることによってフィルタリングされる。
水平フィルタリング境界に隣接する画素に対して弱いフィルタリングを実行することは、水平フィルタリング境界に隣接する6つの画素を取得し、3つのタップを有するフィルタを用いることによってフィルタリングを実行することであってよい。本発明の本実施形態において、6つの画素は、Pの第1行における4つの画素およびQの第1行における4つの画素からランダムに選択されてよく、3つのタップを有するフィルタを用いることによってフィルタリングされることに留意すべきである。
上述の表は、必要に応じて設定されてよいが、このことは本発明の本実施形態において限定されない。例えば、表が表1であり、式
に基づき取得されたQ値は11であり、式
に基づき、取得されたQ値が24である場合、表1から、β'は0であり、t'
Cは1であることが分かる。
以上から、本発明の本実施形態において提供されている、ブロッキングアーティファクトを除去するためのフィルタリング方法によれば、各予測単位は、少なくとも2つのサブ単位に分割され、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれはトラバースされ、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界は予め設定された規則に基づき決定され、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値は取得され、ここで、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接し、フィルタリング処理は、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対して実行されることが分かる。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトは除去され、画像の予測精度および主観的品質は向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを完全に除去できないといった問題を回避する。
[実施形態2]
図6は、本発明の実施形態に係るフィルタリング装置10の構造図である。フィルタリング装置10は、画像ブロックに対してフィルタリング処理を実行するように構成される。画像ブロックは、少なくとも1つの予測単位および少なくとも1つの変換単位に分割される。予測単位は、非並進運動予測単位を含む。フィルタリング装置は、ビデオ符号化装置またはビデオ復号装置であってよい。ビデオ符号化装置またはビデオ復号装置は、例えば、ノートブックコンピュータ、タブレットコンピュータ、パーソナルコンピュータ、携帯電話、またはビデオサーバなどの、ビデオを出力または記憶する必要がある任意の装置であってよい。図6において示されているように、フィルタリング装置10は、各予測単位を少なくとも2つのサブ単位に分割するように構成される分割ユニット101であって、各サブ単位は、N×N個の画素を含み、Nは、1より大きいかまたはそれに等しい整数である、分割ユニット101と、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定するように構成される決定ユニット102と、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得するように構成される取得ユニット103であって、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する、取得ユニット103と、取得ユニット103により取得された第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されるフィルタリングユニット104とを備えてよい。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
垂直フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが水平に配置された変換単位または非並進運動予測単位のサブブロック境界であり、水平フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが垂直に配置された変換単位または非並進運動予測単位のサブブロック境界であることに留意すべきである。本発明において、画像ブロックは、x軸(すなわち、水平方向)およびy軸(垂直方向)を含む平面であることが理解され得る。従って、「水平」は、x軸に平行であることを意味し、「垂直」は、y軸に平行であることを意味する。例えば、図3において示されているように、変換単位のサブブロックがx軸に平行に配置された変換単位のサブブロック境界は、垂直フィルタリング境界である。
さらに、少なくとも2つのサブ単位のうち任意の1つに対して、決定ユニット102は具体的に、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界がフィルタリング境界であると決定するか、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界がフィルタリング境界であると決定するように構成され、ここで、第1の境界は、サブ単位の任意の境界である。
このように、予測単位における、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する境界がフィルタリング境界であると決定され、後続のフィルタリング処理が境界に対して実行されるのみならず、非並進運動予測単位の境界がフィルタリング境界であることも決定でき、フィルタリング処理は、予測単位における非並進運動予測単位の当該境界に対して実行され、これにより、予測単位における非並進運動予測単位間のブロッキングアーティファクトが除去される。
さらに、取得ユニット103は、以下の方式1または方式2で第1のサブ単位の第1の画素値を取得するように構成されてよい。
方式1:第1のサブ単位の第1の予測画素値を取得すること、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することであって、Mは1から4の範囲にある任意の整数である、計算すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することである。
本発明の本実施形態において、動きベクトルは、水平成分および垂直成分を含むことに留意すべきである。水平成分は、x軸に平行な成分であり、垂直成分は、y軸に平行な成分である。
第1のサブ単位の第1の予測画素値は、動きモデルに基づき導出された元の画素値であってよい。例えば、第1のサブ単位がアフィン運動単位であるとき、第1のサブ単位における各画素の動きベクトルは、上述のアフィン運動モデル(1)に基づき取得されてよい。そして、第1のサブ単位における各画素はトラバースされ、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見する。参照フレームにおける画素の画素値は、第1のサブ単位における画素の予測画素値として用いられる。全ての画素をトラバースすることによって取得された予測画素値は、第1のサブ単位の第1の予測画素値となるよう組み合わせられる。第1のサブ単位がN×Nの画素を含む場合、第1のサブ単位の取得された第1の予測画素値は、N×Nのマトリックスであることが理解され得る。加えて、既存の補間フィルタリングアルゴリズムは、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見するために用いられてよく、このことは、ここでは詳細に説明されない。
第1のサブ単位に隣接する上サブ単位は、第1のサブ単位の上境界に隣接するサブ単位であり、第1のサブ単位に隣接する下サブ単位は、第1のサブ単位の下境界に隣接するサブ単位であり、第1のサブ単位に隣接する左サブ単位は、第1のサブ単位の左境界に隣接するサブ単位であり、第1のサブ単位に隣接する右サブ単位は、第1のサブ単位の右境界に隣接するサブ単位である。
例えば、図3において示されているように、第1のサブ単位がサブ単位2である場合、サブ単位aは、第1のサブ単位の上サブ単位であり、サブ単位bは、第1のサブ単位の下サブ単位であり、サブ単位cは、第1のサブ単位の左サブ単位であり、サブ単位dは、第1のサブ単位の右サブ単位である。
任意選択的に、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出することを含んでよい。
本発明の本実施形態において、非並進運動は、アフィン運動、スケール運動、回転運動、または透視運動などの任意の不規則な運動であってよい。従って、異なる非並進運動に対応し、予め設定された非並進運動モデルを用いることによって、サブ単位の動きベクトルを導出することは、アフィン運動モデル(1)に基づき、サブ単位の動きベクトルを導出すること、または、スケール運動モデル(2)に基づき、サブ単位の動きベクトルを導出すること、または、回転運動モデル(3)に基づき、サブ単位の動きベクトルを導出すること、または、透視運動モデル(4)に基づき、サブ単位の動きベクトルを導出することを含んでよい。
第2の画素値は、第1のサブ単位に対して、第1のサブ単位に隣接するサブ単位を用いることによって動き補償を実行することによって取得された新たな画素値であってよい。具体的には、Mが4であるとき、取得ユニット103は、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位に隣接する下サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位に隣接する左サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位に隣接する右サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位の第1の予測画素値および4つの第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化して第1のサブ単位の第1の画素値を取得するように構成されてよい。
第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式は基本的に、第1のサブ単位に隣接する下サブ単位または左サブ単位または右サブ単位に基づき、動き補償を実行する実装方式と同じであることに留意すべきである。説明しやすくするために、ここでは、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式のみを、説明のための例として用いる。
例えば、取得ユニット103は、第1のサブ単位に隣接する上サブ単位の動きベクトルを第1のサブ単位の動きベクトルとして用い、そして、動きベクトルに基づき、指定された参照フレームにおいて、第1のサブ単位にマッチする単位を発見し、参照フレームにおけるマッチした単位の画素値を第1のサブ単位の第2の予測画素値として用いてよい。
任意選択的に、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化し、第1のサブ単位の第1の画素値を取得することは、まず、式(5)に基づき、第1のサブ単位の第1の予測画素値および各第2の予測画素値に対して重み付けを行い、M個の重み付けされた画素値を取得し、M個の重み付けされた画素値を平均化し、第1のサブ単位の第1の画素値を取得することを含んでよい。
方式2:第1のサブ単位Pの第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとを導出することであって、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位Pの第1の頂点1に隣接する第1の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する第1の座標の動きベクトルとを含み、第1の座標は、上座標であり、または下座標であり、または左座標であり、または右座標である、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位PのM個の動きベクトルを取得すること、第1のサブ単位PのM個の動きベクトルに基づき、第1のサブ単位PのM個の第2の予測画素値を取得すること、および、第1のサブ単位Pの第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位Pの第1の画素値を取得することである。
例えば、Mが4であるとき、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトルとが、予め設定された非並進運動モデルに基づき、導出され得る。
第1の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する上座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標の動きベクトルとを含む。第2の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する下座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する下座標の動きベクトルとを含む。第3の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する左座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する左座標の動きベクトルとを含む。第4の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する右座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する右座標の動きベクトルとを含む。
計算は、予め設定された非並進運動モデルに基づき、第1の動きベクトルペア、第2の動きベクトルペア、第3の動きベクトル、および第4の動きベクトルペアに対して別々に実行され、第1のサブ単位の4つの動きベクトルを取得する。第1のサブ単位の4つの第2の予測画素値は、第1のサブ単位の4つの動きベクトルに基づき、取得される。第1のサブ単位の第1の予測画素値および4つの第2の予測画素値は、別々に重み付けされる。重み付け後の結果は平均化され、第1のサブ単位の第1の画素値を取得する。
方式2で第1のサブ単位の第1の予測画素値を取得するための方法は、方式1で第1のサブ単位の第1の予測画素値を取得するための方法と同じであり、詳細は、ここでは再び説明されない。
加えて、方式2において、第1のサブ単位のM個の第2の予測画素値が第1のサブ単位のM個の動きベクトルに基づき取得され、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値が別々に重み付けされ、重み付け後の結果が平均化され、第1のサブ単位の第1の画素値を取得する方式も、方式1における方式と同じであり、詳細はここでは再び説明されない。
第1のサブ単位Pの第1の頂点1に隣接する上座標1.1は、第1のサブ単位の上境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点1に隣接する下座標1.2は、第1のサブ単位Pの下境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する左座標1.3は、第1のサブ単位の左境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する右座標1.4は、第1のサブ単位の右境界に隣接するサブ単位の第1の頂点の座標であってよい。
第1のサブ単位Pの第2の頂点2に隣接する上座標2.1は、第1のサブ単位の上境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する下座標2.2は、第1のサブ単位の下境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する左座標2.3は、第1のサブ単位の左境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する右座標2.4は、第1のサブ単位の右境界に隣接するサブ単位の第2の頂点の座標であってよい。本発明の本実施形態において、サブ単位の第1の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点のうち任意の1つであってよく、サブ単位の第2の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点において第1の頂点以外の頂点のうち任意の1つであってよいことに留意すべきである。サブ単位の頂点は、頂点の位置における画素の座標点であってよい。概して、第1のサブ単位Pの左上の頂点は、原点(0,0)として設定され、他の頂点の座標は、原点の位置に基づき、それに対応して設定される。
第1のサブ単位の第1の頂点または第2の頂点に隣接する上、下、左、および右座標の動きベクトルは、予め設定された非並進運動モデル(1)、または(2)、または(3)、または(4)に基づき、導出され得ることが理解され得る。
決定ユニット102はさらに、フィルタリングユニット104が、取得ユニット103により取得された第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する前に、フィルタリング境界の境界強度値を決定するように構成される。
フィルタリングユニット104は具体的に、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき、閾値βおよびtを取得し、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されてよく、ここで、Mは1より大きいかまたはそれに等しい整数である。
決定ユニット102は具体的に、少なくとも1つのフレーム内予測単位が、第1のサブ単位または第2のサブ単位が位置する画像ブロックに存在する場合、フィルタリング境界の境界強度値を2に設定するか、または、フレーム内予測単位が、第1のサブ単位または第2のサブ単位が位置する画像ブロックに存在せず、フィルタリング境界が変換単位のサブブロック境界であり、かつ、第1のサブ単位もしくは第2のサブ単位が位置する変換単位が、少なくとも1つの非ゼロ係数を有する場合、フィルタリング境界の境界強度値を1に設定するか、または、フレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在しない場合、かつ、以下の条件(1)から(3)のうち任意の1つが真の条件であるとき、フィルタリング境界の境界強度値を1に設定し、そうでなければ、フィルタリング境界の境界強度値を0に設定するように構成される。(1)第1のサブ単位および第2のサブ単位が位置する予測単位の参照画像または動きベクトルの数量は異なり、第1のサブ単位が位置する予測単位は、1つの動きベクトルを有し、第2のサブ単位が位置する予測単位は、1つの動きベクトルを有し、第1のサブ単位の動きベクトルおよび第2のサブ単位の動きベクトルの水平成分または垂直成分間の動きベクトル差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、(2)第1のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、第2のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、同じ予測画像を示す2つの動きベクトルの水平成分または垂直成分間の動きベクトル差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(3)第1のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、第2のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、かつ、以下の2つの条件aおよびbが真の条件である。(a)前方参照候補リストlist0を示す2つの動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す2つの動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(b)前方参照候補リストlist0を示す、第1のサブ単位が位置する予測単位の動きベクトル、および、後方参照候補リストlist1を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す、第1のサブ単位が位置する予測単位の動きベクトル、および前方参照候補リストlist0を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しい。
動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度であってよく、または、第1のサブ単位および第2のサブ単位が位置する予測単位の動きモデルが異なる場合、動きベクトル差閾値Tは、1/4の輝度サンプリング精度であり、もしくは、第1の単位および第2のサブ単位が位置する予測単位の動きモデルが同じである場合、動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度である。
初期閾値β0およびt0は、必要に応じて設定され、このことは、本発明の本実施形態において限定されない。
さらに、フィルタリングユニット104が具体的に、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されることは、まず、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとを、式
に代入し、qPLを取得し、ここで、QpQは、第1のサブ単位の量子化パラメータであり、QpPは、第2のサブ単位の量子化パラメータであり、そして、式
、および式
に基づき、2つのQ値を取得し、予め設定された表を照会し、式
に基づき、取得されたQ値に対応するβ'を取得し、式
に基づき、取得されたQ値に対応するt'Cを取得すること、表を照会することによって取得されたβ'を式
に代入し、閾値βを取得することであって、BitDepthは、画素ビット幅を示す、取得すること、表を照会することによって取得されたt'Cを式
に代入し、閾値tを取得すること、および、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差を、βおよびtと比較し、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する必要があるかを決定することを含んでよい。
図6において示されているフィルタリング装置における分割ユニット、取得ユニット、決定ユニット、およびフィルタリングユニットは、図1において示されているフィルタリング装置に単独で配置されるプロセッサであってよく、または、実装のためにフィルタリング装置におけるプロセッサに統合されてよいことに留意すべきである。加えて、分割ユニット、取得ユニット、決定ユニット、およびフィルタリングユニットの実行処理は、図1において示されているフィルタリング装置におけるメモリにおいてプログラムコードの形式で記憶されてよく、フィルタリング装置のプロセッサは、プログラムコードを呼び出し、照会ユニットおよび置換ユニットの実行処理を実装する。ここで説明されているプロセッサは、中央処理装置(Central Processing Unit、CPU)、または、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、または、本発明の本実施形態を実装するように構成される1つまたは複数の集積回路であってよい。
以上から、本発明の本実施形態において提供されているフィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割すること、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定すること、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得することであって、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する、取得すること、および、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することを行うことが分かる。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトは除去され、画像の予測精度および主観的品質は向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを完全に除去できないといった問題を回避する。
簡便かつ簡潔な説明のために、上述のユニットおよびシステムの具体的な作業処理について、上述の方法の実施形態における対応する処理を参照することは、当業者により明確に理解され得て、詳細は、ここでは再び説明されない。
本出願において提供されているいくつかの実施形態において、開示されているシステム、デバイス、および方法は、他の方式で実装され得ることが理解されるべきである。例えば、上で説明されているデバイスの実施形態は単に例である。例えば、ユニットの区分は単に論理的な機能区分であり、実際の実装方式において、他の区分であり得る。例えば、複数のユニットまたは構成要素は、組み合わせられてよく、もしくは別のシステムに統合されてよく、または、いくつかの特徴が無視されてよく、もしくは実行されなくてよい。
別個の部分として説明されているユニットは、物理的に別個であってもよく、またはそうでなくてもよく、ユニットとして表示されている部分は、物理ユニットであってもよく、またはそうでなくてもよく、一箇所に位置してよく、または複数のネットワークユニット上に分散されてよい。ユニットの一部または全ては、実施形態の解決手段の目的を達成するために実際の要求に応じて選択されてよい。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてよく、または、ユニットのそれぞれは、物理的に単独で存在してよく、または、2つまたはそれより多いユニットは、1つのユニットに統合されてよい。統合されたユニットは、ハードウェアの形式で実装されてよく、またはソフトウェア機能ユニットに加え、ハードウェアの形式で実装されてよい。
上述の統合されたユニットがソフトウェア機能ユニットの形式で実装されたとき、統合されたユニットは、コンピュータ可読記憶媒体において記憶されてよい。ソフトウェア機能ユニットは、記憶媒体において記憶され、(パーソナルコンピュータ、サーバ、またはネットワークデバイスであり得る)コンピュータデバイスに、本発明の実施形態において説明されている方法の段階のいくつかを実行するように命令するためのいくつかの命令を含む。上述の記憶媒体は、USBフラッシュドライブ、取り外し可能なハードディスク、リードオンリメモリ(Read−Only Memory、略してROM)、ランダムアクセスメモリ(Random Access Memory、略してRAM)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶できる任意の媒体を含む。
実施形態における方法の段階の全部または一部は、(プロセッサなどの)関連ハードウェアに命令するプログラムによって実装され得ることが当業者により理解され得る。プログラムは、コンピュータ可読記憶媒体において記憶され得る。記憶媒体は、リードオンリメモリ、ランダムアクセスメモリ、磁気ディスク、または光ディスクなどを含んでよい。
最後に、上述の実施形態は、本発明の技術的解決手段を説明することを意図するものに過ぎず、本発明を限定するものではないことに留意すべきである。本発明は上述の実施形態を参照して詳細に説明されているが、当業者は、彼らが本発明の実施形態の技術的解決手段の精神および範囲から逸脱することなく、上述の実施形態において説明されている技術的解決手段に対してさらに変更してよく、またはこれらのいくつかの技術的な特徴に対して同等の置き換えを行ってよいことを理解すべきである。
本出願は、2016年1月29日に中国特許庁に出願された、「ブロッキングアーティファクトを除去するためのフィルタリング方法および装置」と題する中国特許出願第201610064753.8号に基づく優先権を主張し、当該出願はその全体が参照により本明細書に組み込まれている。
本発明は、ビデオ画像処理の分野に関し、特に、ブロッキングアーティファクトを除去するためのフィルタリング方法および装置に関する。
ビデオ符号化圧縮技術において、ブロックベースのハイブリッドビデオ符号化が主に実行され、1つのフレームのビデオ画像を複数のブロックに分割し、ブロック毎に、(フレーム内予測およびフレーム間予測を含む)予測、変換、量子化、エントロピ符号化、および他の段階によってビデオ符号化圧縮を実装する。具体的には、ブロックの動き情報がまずブロックベースの動き補償予測によって取得され、ブロックの予測画素値が動き情報に基づき決定され、そして、ブロックの元の画素値と予測画素値との間の残差に対して変換および量子化が実行され、最後に、量子化された変換係数および(コードブロックサイズ、予測モード、動きベクトル、および他の情報などの)符号化モード情報が、エントロピ符号化処理によってビットストリームに変換され、当該ビットストリームは、デコーダへ送信される。
ブロックベースのハイブリッドビデオ符号化は、各画像を異なるサイズのブロックに分割し、そして、ブロック予測、ブロック変換、およびブロック量子化を実行するためのものであるので、ブロック間の相関が考慮されず、ブロックの境界上の画素値の再構築精度がブロックの中間の画素値の再構築精度より低く、ブロックインコヒーレンス、すなわち、「ブロッキングアーティファクト」をもたらす。その結果、復号および再構築後に取得された画像は見るからに、ブロック同士を共に継ぎ合わせたように示される。従って、復号および再構築後、画像に対して、「ブロッキングアーティファクト除去」処理を実行する必要がある。
現在、ブロッキングアーティファクトを除去するための一般的な方法は、オーバーラップブロック動き補償である。この方法は、全ての動きベクトルを連続するフィールドと見なし、内部画素が現在のブロックの動きベクトルに影響されるのみならず、周囲の動きベクトルにも大いに影響されることを示唆する。現在のブロックに隣接する、上、下、左、および右方向におけるサブブロックの動きベクトルが取得される。動きベクトルが存在し、現在のブロックの動きベクトルと異なる場合、動き補償は現在のブロックに対して当該動きベクトルを用いることによって実行され、現在のブロックの新たな予測信号を取得し、現在のブロックの元の予測信号および現在のブロックの新たな予測信号が、重み付けされてフィルタリングされ、「ブロッキングアーティファクト」を除去する。
上述の方法は、並進運動モデルに基づき実行され、言い換えれば、画像ブロックにおける全ての運動が並進運動である場合に限る。従って、既存のOBMCは、上境界および左境界上に位置するブロックのみがフィルタリングされることを示唆する。このケースにおいて、画像ブロックが非並進モード(例えば、アフィン運動モデル)のサブ単位を含み、これらのサブ単位の動きベクトルが異なる場合、フィルタリング処理は、上述の方法が依然として用いられた場合、画像ブロックの内部サブ単位に対して実行できない。従って、「ブロッキングアーティファクト」は依然として、ブロック間に存在し、符号化精度ならびに主観的および客観的効果に影響を与える。
本発明の主な目的は、ブロッキングアーティファクトを除去するためのフィルタリング方法および装置を提供し、内部予測単位ブロック間の「ブロッキングアーティファクト」が処理できず、符号化精度ならびに主観的および客観的効果が影響を受けるといった問題を解決することである。
上述の目的を達成するために、以下の技術的解決手段が本発明の実施形態において用いられる。
第1の態様によると、本発明の実施形態では、ブロッキングアーティファクトを除去するためのフィルタリング方法が提供され、画像ブロックに対してフィルタリング処理を実行するために用いられ、ここで、画像ブロックは、少なくとも1つの予測単位および少なくとも1つの変換単位に分割され、予測単位は、非並進運動予測単位を含む。当該方法は、各予測単位を少なくとも2つのサブ単位に分割する段階であって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、段階と、少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定する段階と、少なくとも1つのフィルタリング境界のうち任意の1つに対して、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得する段階であって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、段階と、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する段階とを備えてよい。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
このように、予測単位内の全てのフィルタリング境界が決定され、フィルタリング処理はフィルタリング境界に隣接する画素に対して実行され、これにより、異なる動きベクトルを有する単位ブロック間の「ブロッキングアーティファクト」が除去され、画像の予測精度および主観的品質が向上する。
任意選択的に、第1の態様の実装可能な方式において、少なくとも2つのサブ単位におけるサブ単位に対して、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、または、サブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界はフィルタリング境界であると決定され、ここで、第1の境界は、サブ単位の任意の境界である。加えて、サブ単位が非並進運動予測単位に含まれる場合、第1のサブ単位の各境界はフィルタリング境界であると決定される。
このように、予測単位における、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する境界がフィルタリング境界であると決定され、後続のフィルタリング処理が当該境界に対して実行されるのみならず、非並進運動予測単位の境界がフィルタリング境界であると決定されることもでき、予測単位における非並進運動予測単位の当該境界に対してフィルタリング処理が実行され、これにより、予測単位における非並進運動予測単位間のブロッキングアーティファクトが除去される。
任意選択的に、第1の態様の別の実装可能な方式において、フィルタリング境界に隣接する第1のサブ単位の第1の画素値を取得する段階は、第1のサブ単位の第1の予測画素値を取得する段階と、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算する段階と、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得する段階と、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得する段階とを含んでよく、ここで、Mは1から4の範囲にある任意の整数である。
第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、右サブ単位のそれぞれの動きベクトルを計算する段階は、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを導出する段階、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出する段階、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いる段階、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、上サブ単位の動きベクトルを導出する段階、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出する段階、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いる段階、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出する段階とを含む。
任意選択的に、第1の態様のさらに別の実装可能な方式において、フィルタリング境界に隣接する第1のサブ単位の第1の画素値を取得する段階はさらに、第1のサブ単位(P)の第1の予測画素値を取得する段階と、予め設定された非並進運動モデルに基づき、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、および右座標(2.4)におけるM組の座標の動きベクトルとを導出する段階であって、第1の頂点(1)および第2の頂点(2)は、第1のサブ単位(P)の任意の2つの異なる頂点であり、Mは1から4の範囲にある任意の整数である、段階と、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、および右座標(2.4)におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得する段階であって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位(P)の第1の頂点(1)に隣接する第1の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する第1の座標の動きベクトルとを含み、第1の座標は、上座標であり、または下座標であり、または左座標であり、または右座標である、段階と、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位(P)のM個の動きベクトルを取得する段階と、第1のサブ単位(P)のM個の動きベクトルに基づき、第1のサブ単位(P)のM個の第2の予測画素値を取得する段階と、第1のサブ単位(P)の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位(P)の第1の画素値を取得する段階とを含んでよい。
このように、異なるサブ単位の動きベクトルの相関を考慮し、第1のサブ単位に隣接するサブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償が実行されるか、または、第1のサブ単位に隣接する座標点に基づき、第1の単位の動きベクトルが計算され、第1のサブ単位に対して動き補償を実行する。従って、データ冗長性およびデータ符号化長さが低減され、第1のサブ単位の予測精度が向上する。
任意選択的に、第1の態様のさらに別の実装可能な方式において、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する段階は、フィルタリング境界の境界強度値を決定する段階と、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき、フィルタリング境界に対応する閾値βおよびtを取得する段階と、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する段階であって、Mは1より大きいかまたはそれに等しい整数である、段階とを含んでよい。
このように、フィルタリング処理は、フィルタリング境界の強度に基づき、フィルタリング境界に隣接する画素に対して実行されることができ、変換単位および予測単位の分割により引き起こされるブロッキングアーティファクトを低減する。
第2の態様によると、本発明の実施形態はさらに、第1の態様において説明されている方法を実行するように構成されるフィルタリング装置を提供する。フィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割するように構成される分割ユニットであって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、分割ユニットと、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定するように構成される決定ユニットと、決定ユニットにより決定された少なくとも1つのフィルタリング境界のうち任意の1つに対して、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得するように構成される取得ユニットであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得ユニットと、取得ユニットにより取得された、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されるフィルタリングユニットとを備えてよい。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
このように、予測単位における全てのフィルタリング境界が決定され、フィルタリング処理は、フィルタリング境界に隣接する画素に対して実行され、これにより、異なる動きベクトルを有する単位ブロック間の「ブロッキングアーティファクト」が除去され、画像の予測精度および主観的品質が向上する。
任意選択的に、第2の態様の実装可能な方式において、少なくとも2つのサブ単位のうち任意の1つに対して、決定ユニットは具体的に、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界がフィルタリング境界であると決定するか、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界がフィルタリング境界であると決定するように構成され、ここで、第1の境界は、サブ単位の任意の境界である。
このように、予測単位における、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する境界がフィルタリング境界であると決定され、後続のフィルタリング処理が当該境界に対して実行されるのみならず、非並進運動予測単位の境界がフィルタリング境界であることが決定されることもでき、フィルタリング処理が予測単位における非並進運動予測単位の当該境界に対して実行され、これにより、予測単位における非並進運動予測単位間のブロッキングアーティファクトが除去される。
任意選択的に、第2の態様の別の実装可能な方式において、取得ユニットは具体的に、第1のサブ単位の第1の予測画素値を取得すること、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することであって、Mは1から4の範囲にある任意の整数である、計算すること、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することを行うように構成されてよい。
取得ユニットは具体的に、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出することを行うように構成される。
任意選択的に、第2の態様のさらに別の実装可能な方式において、取得ユニットはさらに具体的に、第1のサブ単位(P)の第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、右座標(2.4)におけるM組の座標の動きベクトルとを導出することであって、第1の頂点(1)および第2の頂点(2)は第1のサブ単位(P)の任意の2つの異なる頂点であり、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位(P)の第1の頂点(1)に隣接する上座標(1.1)、下座標(1.2)、左座標(1.3)、および右座標(1.4)におけるM組の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する上座標(2.1)、下座標(2.2)、左座標(2.3)、右座標(2.4)におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位(P)の第1の頂点(1)に隣接する第1の座標の動きベクトルと、第1のサブ単位(P)の第2の頂点(2)に隣接する第1の座標の動きベクトルとを含み、第1の座標は上座標であり、または下座標であり、または左座標であり、または右座標である、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位(P)のM個の動きベクトルを取得すること、第1のサブ単位(P)のM個の動きベクトルに基づき、第1のサブ単位(P)のM個の第2の予測画素値を取得すること、および、第1のサブ単位(P)の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位(P)の第1の画素値を取得することを行うように構成されてよい。
このように、異なるサブ単位の動きベクトルの相関を考慮し、第1のサブ単位に隣接するサブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償が実行されるか、または、第1のサブ単位に隣接する座標点に基づき、第1の単位の動きベクトルが計算され、第1のサブ単位に対して動き補償を実行する。従って、データ冗長性およびデータ符号化長さが低減され、第1のサブ単位の予測精度が向上する。
任意選択的に、第2の態様のさらに別の実装可能な方式において、決定ユニットはさらに、フィルタリング境界の境界強度値を決定するように構成され、フィルタリングユニットは具体的には、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき、フィルタリング境界に対応する閾値βおよびtを取得し、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成され、ここで、Mは、1より大きいかまたはそれに等しい整数である。
このように、フィルタリング処理は、フィルタリング境界の強度に基づき、フィルタリング境界に隣接する画素に対して実行されることができ、変換単位および予測単位の分割により引き起こされるブロッキングアーティファクトを低減する。
第2の態様において説明されている機能モジュールは、ハードウェアを用いることによって実装され得て、またはハードウェアにより、対応するソフトウェアを実行することによって実装され得ることに留意すべきである。ハードウェアまたはソフトウェアは、上述の機能に対応する1つまたは複数のモジュール、例えば、外部ネットワーク要素と通信するように構成される通信ユニット、分割ユニット、決定ユニット、取得ユニット、およびフィルタリングユニットの機能を実装するように構成されるプロセッサ、および対応するアプリケーションプログラムを記憶するように構成されるメモリを含む。プロセッサ、通信ユニット、およびメモリは、バスを用いることによって接続され、互いに通信する。具体的な実装方式は以下の通りである。
第3の態様によると、本発明の実施形態はさらに、第1の態様において説明される方法を実行するように構成されるフィルタリング装置を提供する。フィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割するように構成される分割ユニットであって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、分割ユニットと、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定するように構成される決定ユニットと、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得するように構成される取得ユニットであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得ユニットと、取得ユニットにより取得された、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されるフィルタリングユニットとを備えてよい。
具体的には、プロセッサにより実行される機能については、第2の態様において提供されているフィルタリング装置における分割ユニット、決定ユニット、取得ユニット、およびフィルタリングユニットにより実行される機能を参照されたい。
以上から、本発明の実施形態はブロッキングアーティファクトを除去するためのフィルタリング方法およびフィルタリング装置を提供することが分かる。各予測単位は、少なくとも2つのサブ単位に分割される。分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれは、トラバースされ、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界は、予め設定された規則に基づき、決定される。第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値は取得され、ここで、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する。第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理が実行される。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトが除去され、画像の予測精度および主観的品質が向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを除去できないといった問題を回避する。
本発明の実施形態における技術的解決手段をより明確に説明するために、以下では、実施形態または従来技術を説明するために必要とされる添付の図面を簡潔に説明する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示しているに過ぎず、当業者は、創造努力なく、これらの添付の図面から、他の図面をさらに導出し得る。
本発明の実施形態に係るフィルタリング装置の構造図である。
本発明の実施形態に係る、ブロッキングアーティファクトを除去するためのフィルタリング方法のフローチャートである。
本発明の実施形態に係る画像ブロックの模式図である。
本発明の実施形態に係る画像ブロックの模式図である。
本発明の実施形態に係る画像ブロックの模式図である。
本発明の実施形態に係るフィルタリング装置の構造図である。
本発明の主な原理は以下の通りである。予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、非並進運動予測単位も発見され、フィルタリング処理が予測単位における非並進運動予測単位の境界に対して実行され、これにより、予測単位におけるブロッキングアーティファクトが除去され、画像の予測精度および主観的品質が向上し、非並進運動モデルを用いることによって動き補償が実行される予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを除去できないといった問題を回避する。従って、画像の予測精度および主観的品質が向上する。
本発明の明細書、特許請求の範囲、および添付の図面における「第1」、「第2」、「第3」、および「第4」等(存在する場合)の用語は、類似するものを区別することを意図するものであるが、必ずしも特定の順序を示すものではないことに留意すべきである。そのように称されるデータは、適切な状況において交換可能であり、これにより、本明細書において説明されている本発明の実施形態は、本明細書において示されまたは説明されている順序と異なる順序において実装できることが理解されるべきである。加えて、「中心」、「上」、「下」、「左」、「右」、「頂部」、「底部」、「内側」、および「外側」等の用語により示される方向または位置関係は、添付の図面に基づき示される方向または位置関係であり、本発明を容易に説明し、説明を簡略化するために用いられるに過ぎず、示されているシステムまたは構成要素は特定の向きを有する必要があること、または特定の向きにおいて構成されて操作される必要があることを示すまたは暗示するものではなく、従って、本発明に対する限定として理解されることができない。
以下では、本発明の実施形態における添付の図面を参照し、本発明の実施形態における技術的解決手段を明確に説明する。明らかに、説明されている実施形態は、本発明の実施形態の全部ではなく一部に過ぎない。当業者により、本発明の実施形態に基づき、創造努力なく取得される他の全ての実施形態は、本発明の保護範囲内に含まれるものとする。
図1は、本発明において提供される方法を実行できるフィルタリング装置の構造図である。フィルタリング装置は、画像ブロックに対してフィルタリング処理を実行するように構成される。画像ブロックは、少なくとも1つの予測単位、少なくとも1つの非並進運動予測単位、および少なくとも1つの変換単位に分割される。予測単位は、非並進運動予測単位を含む。フィルタリング装置は、ビデオ符号化装置またはビデオ復号装置であってよい。ビデオ符号化装置またはビデオ復号装置は、例えば、ノートブックコンピュータ、タブレットコンピュータ、パーソナルコンピュータ、携帯電話、またはビデオサーバなどの、ビデオを出力または記憶する必要がある任意の装置であってよい。図1を参照すると、フィルタリング装置は、通信インタフェース1001、プロセッサ1002、メモリ1003、および、これらの構成要素の間の接続および相互通信を実装するように構成される少なくとも1つの通信バス1004を備えてよい。
通信インタフェース1001は、外部ネットワーク要素とのデータ通信を実行するように構成されてよい。
プロセッサ1002は、中央処理装置(略してCPU)であってよく、または、特定用途向け集積回路(ASIC)、または、例えば、1つまたは複数のマイクロプロセッサ(DSP)、もしくは1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)のような、本発明の本実施形態を実装するように構成される1つまたは複数の集積回路であってよい。
メモリ1003は、ランダムアクセスメモリ(RAM)などの揮発性メモリ、または、リードオンリメモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、もしくはソリッドステートドライブ(SSD)などの不揮発性メモリ、または、上述の種類のメモリの組み合わせであってよく、本発明において提供されているフィルタリング方法を実装できるアプリケーションプログラムを記憶するように構成される。
通信バス1004は、アドレスバス、データバス、制御バス、および同様のものに分類されてよく、業界標準アーキテクチャ(ISA)バス、ペリフェラルコンポーネントインターコネクト(PCI)バス、拡張型業界標準アーキテクチャ(EISA)バス、または同様のものであってよい。表記を容易にするために、通信バスは、図1において1本の太線のみを用いることによって表わされるが、1つのバスのみ、または1種類のバスのみが存在することを示すわけではない。
具体的には、プロセッサ1002は、各予測単位を少なくとも2つのサブ単位に分割することであって、各サブ単位はN×N個の画素を含み、Nは1より大きいかまたはそれに等しい整数である、分割すること、少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定すること、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得することであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得すること、および、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することを行うように構成される。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
少なくとも2つのサブ単位のうち任意の1つに対して、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界はフィルタリング境界であると決定されるか、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界はフィルタリング境界であると決定され、ここで、第1の境界は、サブ単位の任意の境界である。
任意選択的に、プロセッサ1002は、第1のサブ単位の第1の予測画素値を取得し、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算し、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得し、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化し、第1のサブ単位の第1の画素値を取得するように構成されてよく、ここで、Mは、1から4の範囲にある任意の整数である。
プロセッサ1002が、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位のそれぞれの動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって左サブ単位の動きベクトルを導出することであってよい。
任意選択的に、プロセッサ1002はさらに、第1のサブ単位の第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルとを導出することであって、第1の頂点および第2の頂点は第1のサブ単位の任意の2つの異なる頂点であり、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する第1の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する第1の座標の動きベクトルとを含み、第1の座標は上座標であり、または下座標であり、または左座標であり、または右座標である、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位のM個の動きベクトルを取得すること、第1のサブ単位のM個の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することを行うように構成されてよい。
任意選択的に、プロセッサ1002はさらに、フィルタリング境界の境界強度値を決定し、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されてよい。
以上から、本発明の本実施形態において提供されているフィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割すること、プロセッサにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定すること、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得することであって、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接する、取得すること、および、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することを行うことが分かる。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトが除去され、画像の予測精度および主観的品質が向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを除去できないといった問題を回避する。
説明しやすくするために、実施形態1は、段階の形式で、本発明において提供されている、ブロッキングアーティファクトを除去するためのフィルタリング方法を示して詳細に説明する。示されている段階は、例えば、図1において示されている装置以外の、実行可能な命令のセットを含むコンピュータシステムにおいて実行されてもよい。加えて、論理的な順序が図面において示されているが、示されているまたは説明されている段階は、いくつかの場合において異なる順序において実行されてよい。
[実施形態1]
図2は、本発明の実施形態に係る、ブロッキングアーティファクトを除去するためのフィルタリング方法のフローチャートである。方法は、図1において示されているフィルタリング装置によって実行され、画像ブロックに対してフィルタリング処理を実行するために用いられる。画像ブロックは、少なくとも1つの予測単位および少なくとも1つの変換単位に分割される。予測単位は、非並進運動予測単位を含む。
画像ブロックは、符号化画像ブロックであってよく、または復号画像ブロックであってよい。フィルタリング装置がビデオ符号化装置であるとき、画像ブロックは、符号化画像ブロックである。フィルタリング装置がビデオ復号装置であるとき、画像ブロックは、復号画像ブロックである。
高効率ビデオ符号化(HEVC)規格において、画像ブロックのサイズは、64×64、32×32、16×16、および8×8という4つのレベルに分類され得る。各レベルの画像ブロックは、フレーム内予測およびフレーム間予測に基づき、異なるサイズの予測単位に分割され得る。各予測単位は、並進運動モデルベースの動き補償予測および非並進運動モデルベースの動き補償予測に基づき、並進運動予測単位および非並進運動予測単位に分類され得る。各レベルの画像ブロックは、異なる変換モードに基づき、異なるサイズの変換単位に分割されてよい。
本発明において説明されている非並進運動は、アフィン運動、スケール運動(scale motion)、回転運動、または透視運動(perspecive motion)などの任意の不規則な運動を含んでよいことに留意すべきである。予測単位が非並進運動予測単位を含むことは、予測単位が非並進運動予測単位と交差することを意味する。任意選択的に、予測単位は、並進運動予測単位および非並進運動予測単位を含んでよい。
例えば、図3に示されているように、フレーム間予測が32×32の画像ブロックに対して実行される場合、32×32の画像ブロックは、1つの予測単位として単独で用いられ得る。動き補償予測が非並進運動モデルを用いることによって予測単位に対して実行される場合、予測単位は、各非並進運動予測単位に基づき、異なるサイズの非並進運動予測単位に分割され得る。異なる変換モードが32×32の画像ブロックにおける異なるサイズの単位のために用いられる場合、32×32の画像ブロックは、各変換単位に基づき、異なるサイズの変換単位に分割され得る。
非並進運動モデルに基づき取得された隣接する単位の動きベクトルは異なる。従って、動き補償予測が非並進運動モデルに基づき実行される、予測単位における隣接する単位の間のブロッキングアーティファクトを除去するために、隣接する単位間の境界を発見することがさらに必要であり、これにより、境界に近い画素に対してフィルタリング処理を実行することができる。図2において示されているように、方法は、以下の段階を備えてよい。
S101.各予測単位を少なくとも2つのサブ単位に分割し、ここで、各サブ単位は、N×N個の画素を含み、Nは、1より大きいかまたはそれに等しい整数である。
Nの値は、必要に応じて設定されてよく、このことは本発明の本実施形態において限定されない。任意選択的に、Nは、デフォルトで4である。
例えば、w×hの予測単位は、複数の4×4のサブ単位に分割されてよい。本発明の本実施形態において、4×4のサブ単位は、4×4の画素を含むサブ単位を表わし得る。
S102.少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定する。
任意選択的に、少なくとも2つのサブ単位の任意の1つに対して、予め設定された規則に基づき、サブ単位のフィルタリング境界を決定する段階は、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界がフィルタリング境界であると決定する段階、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界がフィルタリング境界であると決定する段階を含んでよく、ここで、第1の境界は、サブ単位の任意の境界である。
このように、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する、予測単位における画素が発見されるのみならず、動き補償予測が非並進運動モデルに基づき実行される、予測単位における隣接する単位間の境界も取得できる。
例えば、図3において示されているように、32×32の予測単位は、(図3の影1により示されているように)64個の4×4のサブ単位に分割されてよい。各サブ単位は、上境界、下境界、左境界、および右境界という4つの境界を有してよい。図3の影2により示されているサブ単位は、予測単位の内部サブ単位である。動き補償予測が非並進運動モデルを用いることによって実行されるので、サブ単位の動きベクトルは、その隣接するサブ単位の動きベクトルと異なる。サブ単位が予測単位の内部サブ単位であるので、既存のフィルタリング方式が用いられる場合、サブ単位に対してフィルタリング処理が実行されず、その結果、サブ単位とその隣接するサブ単位との間の「ブロッキングアーティファクト」は除去されない。しかし、サブ単位の境界は、フィルタリング境界であると段階S102において決定され得て、フィルタリング処理は、後続の段階における処理によってサブ単位の境界の近くの画素に対して実行され得て、サブ単位とその隣接するサブ単位との間の「ブロッキングアーティファクト」を可能な限り除去し、それにより、予測単位の内部サブ単位に対してフィルタリング処理を実装し、ビデオ画像の主観的および客観的品質を向上させる。
図3において示されているサブ単位の上、下、左、および右境界は単に、説明のための例であり、サブ単位の境界は、本例のネーミング方式を含むが、それに限定されないことに留意すべきである。
S103.第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得し、ここで、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
垂直フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが水平に配置されている変換単位または非並進運動予測単位のサブブロック境界であり、水平フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが垂直に配置されている変換単位または非並進運動予測単位のサブブロック境界であることに留意すべきである。本発明において、画像ブロックは、x軸(すなわち、水平方向)およびy軸(垂直方向)を含む平面であることが理解され得る。従って、「水平」は、x軸に平行であることを意味し、「垂直」は、y軸に平行であることを意味する。例えば、図3において示されているように、変換単位のサブブロックがx軸に平行に配置された変換単位のサブブロック境界は、垂直フィルタリング境界である。
例えば、第1のサブ単位または第2のサブ単位の第1の画素値は、以下の方式1または方式2で取得されてよい。第1のサブ単位の第1の画素値を取得する方式は第2のサブ単位の第1の画素値を取得する方式と同じであるので、説明しやすくするために、第1のサブ単位の第1の画素値を取得することのみを例として用いて、方式1または方式2を説明する。
方式1:第1のサブ単位の第1の予測画素値を取得すること、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することであって、Mは1から4の範囲にある任意の整数である、計算すること、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することである。
本発明の本実施形態において、動きベクトルは、水平成分および垂直成分を含むことに留意すべきである。水平成分は、x軸に平行な成分であり、垂直成分は、y軸に平行な成分である。
第1のサブ単位の第1の予測画素値は、動きモデルに基づき導出された元の画素値であってよい。例えば、第1のサブ単位がアフィン運動単位であるとき、第1のサブ単位における各画素の動きベクトルは、以下のアフィン運動モデル(1)に基づき取得されてよい。そして、第1のサブ単位における各画素をトラバースし、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見する。参照フレームにおける画素の画素値は、第1のサブ単位における画素の予測画素値として用いられる。全ての画素をトラバースすることによって取得された予測画素値は、第1のサブ単位の第1の予測画素値となるよう組み合わせられる。第1のサブ単位がN×N個の画素を含む場合、第1のサブ単位の取得された第1の予測画素値は、N×N個のマトリックスであることが理解され得る。加えて、既存の補間フィルタリングアルゴリズムが、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見するために用いられてよく、このことはここでは詳細に説明されない。本発明の本実施形態において、参照フレームは、前方参照フレームであってよく、または後方参照フレームであってよいことに留意すべきである。
アフィン運動モデル(1)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(V1x,V1y)は通常、第1のサブ単位の右頂点(w,0)の動きベクトルであってよく、ここで、wは、第1のサブ単位の幅であってよく、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである。
第1のサブ単位に隣接する上サブ単位は、第1のサブ単位の上境界に隣接するサブ単位であり、第1のサブ単位に隣接する下サブ単位は、第1のサブ単位の下境界に隣接するサブ単位であり、第1のサブ単位に隣接する左サブ単位は、第1のサブ単位の左境界に隣接するサブ単位であり、第1のサブ単位に隣接する右サブ単位は、第1のサブ単位の右境界に隣接するサブ単位である。
例えば、図3において示されているように、第1のサブ単位がサブ単位2である場合、サブ単位aは、第1のサブ単位の上サブ単位であり、サブ単位bは、第1のサブ単位の下サブ単位であり、サブ単位cは、第1のサブ単位の左サブ単位であり、サブ単位dは、第1のサブ単位の右サブ単位である。
任意選択的に、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出することを含んでよい。
本発明の本実施形態において、非並進運動は、アフィン運動、スケール運動、回転運動、または透視運動などの任意の不規則な運動であってよい。 従って、異なる非並進運動に対応し、予め設定された非並進運動モデルを用いることによって、サブ単位の動きベクトルを導出することは、アフィン運動モデル(1)に基づき、サブ単位の動きベクトルを導出すること、または、スケール運動モデル(2)
に基づき、サブ単位の動きベクトルを導出することであって、スケール運動モデル(2)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(a0,a1)は、1組の予め設定されたスケール因子であり、a0は、水平方向におけるスケール因子であり、a1は、垂直方向におけるスケール因子であり、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである、導出すること、または、回転運動モデル(3)
に基づき、サブ単位の動きベクトルを導出することであって、回転運動モデル(3)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである、導出すること、または、透視運動モデル(4)
に基づき、サブ単位の動きベクトルを導出することであって、透視運動モデル(4)において、(V0x,V0y)は通常、第1のサブ単位の左頂点(0,0)の動きベクトルであってよく、(V1x,V1y)は通常、第1のサブ単位の右頂点(w,0)の動きベクトルであってよく、(V2x,V2y)は通常、第1のサブ単位の左下の頂点(0,h)の動きベクトルであってよく、(V3x,V3y)は通常、第1のサブ単位の右下の頂点(w,h)の動きベクトルであってよく、wは、第1のサブ単位の幅であってよく、hは、第1のサブ単位の高さであり、(Vx,Vy)は、第1のサブ単位における画素(x,y)の動きベクトルである、導出することを含んでよい。
第2の予測画素値は、第1のサブ単位に隣接するサブ単位を用いて第1のサブ単位に対して動き補償を実行することによって取得された新たな画素値であってよい。
任意選択的に、Mが4であるとき、M個のサブ単位の動きベクトルに基づき、第1のサブ単位のM個の第2の予測画素値を取得することは、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得すること、第1のサブ単位に隣接する下サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得すること、第1のサブ単位に隣接する左サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得すること、および、第1のサブ単位に隣接する右サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得することを含んでよい。
第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式は基本的に、第1のサブ単位に隣接する下サブ単位または左サブ単位または右サブ単位に基づく動き補償を実行する実装方式と同じであることに留意すべきである。説明しやすくするために、ここでは、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式のみが、説明のための例として用いられる。
例えば、第1のサブ単位に隣接する上サブ単位の動きベクトルは、第1のサブ単位の動きベクトルとして用いられてよく、そして、動きベクトルに基づき、指定された参照フレームにおいて、第1のサブ単位にマッチする単位が発見され、参照フレームにおけるマッチした単位の画素値が、第1のサブ単位の第2の予測画素値として用いられる。
任意選択的に、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することは、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化し、第1のサブ単位の第1の画素値を取得することを含んでよい。
具体的には、第1のサブ単位の第1の予測画素値および各第2の予測画素値はまず、以下の式(5)に基づき、重み付けされ得て、M個の重み付けされた画素値を取得し、当該M個の重み付けされた画素値は平均化され、第1のサブ単位の第1の画素値を取得する。
式(5)において、PC(i,j)は、第1のサブ単位の第1の予測画素値であり、PN(i,j)は、第1のサブ単位の第2の予測画素値であり、WN(i,j)は、第2の予測画素値PN(i,j)に対応する重み付けマトリックスであり、P'C(i,j)は、第1のサブ単位の第1の画素値および第2の予測画素値に対して重み付けを行った後に取得された画素値であり、Mの値は、1から4の範囲にあってよい。
例えば、第1のサブ単位が4×4の画素を含む場合、第1のサブ単位の第1の予測画素値および第2の予測画素値は両方とも、4×4のマトリックスである。 概して、上、下、左、および右サブ単位という4つのサブ単位を用いることによって動き補償を実行することによって取得された予測画素値P1、P2、P3、およびP4に対応する重み付けマトリックスW1、W2、W3、およびW4は、
および、
である。
方式2:第1のサブ単位Pの第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとを導出することであって、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位Pの第1の頂点1に隣接する第1の座標の動きベクトルおよび第1のサブ単位Pの第2の頂点2に隣接する第1の座標の動きベクトルを含み、第1の座標は、上座標であり、または下座標であり、または左座標であり、または右座標であり、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位PのM個の動きベクトルを取得すること、第1のサブ単位PのM個の動きベクトルに基づき、第1のサブ単位PのM個の第2の予測画素値を取得すること、および、第1のサブ単位Pの第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位Pの第1の画素値を取得することである。
第1のサブ単位Pの第1の頂点1に隣接する上座標1.1は、第1のサブ単位の上境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点1に隣接する下座標1.2は、第1のサブ単位Pの下境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する左座標1.3は、第1のサブ単位の左境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する右座標1.4は、第1のサブ単位の右境界に隣接するサブ単位の第1の頂点の座標であってよい。
第1のサブ単位Pの第2の頂点2に隣接する上座標2.1は、第1のサブ単位の上境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する下座標2.2は、第1のサブ単位の下境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する左座標2.3は、第1のサブ単位の左境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する右座標2.4は、第1のサブ単位の右境界に隣接するサブ単位の第2の頂点の座標であってよい。本発明の本実施形態において、サブ単位の第1の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点のうち任意の1つであってよく、サブ単位の第2の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点において、第1の頂点以外の頂点のうち任意の1つであってよいことに留意すべきである。サブ単位の頂点は、頂点の位置における画素の座標点であってよい。概して、第1のサブ単位Pの左上の頂点は、原点(0,0)に設定され、他の頂点の座標は、原点の位置に基づき、それに対応して設定される。
例えば、図4において示されているように、第1のサブ単位Pは、4×4のサブ単位である。4×4は、画素の数量であり、水平方向または垂直方向における隣接する画素の間の間隔が1である。第1のサブ単位Pの第1の頂点1は左上の頂点における画素(0,0)であると仮定する。第1のサブ単位の左上の頂点および右上の頂点は、3つの画素だけ離間されている。従って、第1のサブ単位Pの第2の頂点2は、右上の頂点における画素(3,0)であり、第1の頂点1に隣接する上座標1.1は、第1のサブ単位Pの上境界に隣接する上サブ単位の左上の頂点における画素(0,−4)であり、第1の頂点1に隣接する下座標1.2は、第1のサブ単位Pの下境界に隣接する下サブ単位の左上の頂点における画素(0,4)であり、第1の頂点1に隣接する左座標1.3は、第1のサブ単位Pの左境界に隣接する左サブ単位の左上の頂点における画素(−4,0)であり、第1の頂点1に隣接する右座標1.4は、第1のサブ単位Pの右境界に隣接する右サブ単位の左上の頂点における画素(4,0)である。同様に、図4において示されているように、画素(3,0)である第2の頂点2に隣接する上座標2.1は、第1のサブ単位Pの上境界に隣接する上サブ単位の右上の頂点における画素(3,−4)であり、第2の頂点2に隣接する下座標2.2は、第1のサブ単位Pの下境界に隣接する下サブ単位の右上の頂点における画素(3,4)であり、第2の頂点2に隣接する左座標2.3は、第1のサブ単位Pの左境界に隣接する左サブ単位の右上の頂点における画素(−1,0)であり、第2の頂点2に隣接する右座標2.4は、第1のサブ単位Pの右境界に隣接する右サブ単位の右上の頂点における画素(7,0)である。
例えば、M=4であるとき、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトル、および第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトルは、予め設定された非並進運動モデルに基づき、導出されてよい。
第1の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する上座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標の動きベクトルとを含む。第2の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する下座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する下座標の動きベクトルとを含む。第3の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する左座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する左座標の動きベクトルとを含む。第4の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する右座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する右座標の動きベクトルとを含む。
計算は、予め設定された非並進運動モデルに基づき、第1の動きベクトルペア、第2の動きベクトルペア、第3の動きベクトルペア、および第4の動きベクトルペアに対して別々に実行され、第1のサブ単位の4つの動きベクトルを取得する。第1のサブ単位の4つの第2の予測画素値は、第1のサブ単位の4つの動きベクトルに基づき、取得される。第1のサブ単位の第1の予測画素値および4つの第2の予測画素値は、別々に重み付けされる。重み付け後の結果が平均化され、第1のサブ単位の第1の画素値を取得する。
方式2で第1のサブ単位の第1の予測画素値を取得するための方法は、方式1で第1のサブ単位の第1の予測画素値を取得するための方法と同じであり、詳細は、ここでは再び説明されない。
加えて、方式2において、第1のサブ単位のM個の第2の予測画素値が第1のサブ単位のM個の動きベクトルに基づき取得され、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値が別々に重み付けされ、重み付け後の結果が平均化され、第1のサブ単位の第1の画素値を取得するという方式も、方式1における方式と同じであり、詳細はここでは再び説明されない。
第1のサブ単位の第1の頂点または第2の頂点に隣接する上、下、左、および右座標の動きベクトルは、予め設定された非並進運動モデル(1)、または(2)、または(3)、または(4)に基づき導出され得ることが理解され得る。
S104.第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する。
任意選択的に、フィルタリング境界の境界強度値が設定されてよく、フィルタリング処理は、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対して、第2の予め設定されたアルゴリズムを用いることによって実行されてよく、ここで、Mは、1より大きいかまたはそれに等しい整数である。
例えば、フィルタリング境界に対応する閾値βおよびtは、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき取得され得る。
フィルタリング処理は、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対して実行され、ここで、Mは、1より大きいかまたはそれに等しい整数である。
フィルタリング境界の境界強度値は、以下の方式で設定されてよい。少なくとも1つのフレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在する場合、フィルタリング境界の境界強度値を2に設定するか、または、フレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在せず、フィルタリング境界が変換単位のサブブロック境界であり、かつ、第1のサブ単位もしくは第2のサブ単位が位置する変換単位が、少なくとも1つの非ゼロ係数を有する場合、フィルタリング境界の境界強度値を1に設定するか、または、フレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在しない場合、かつ、以下の条件(1)から(3)のうち任意の1つが真の条件であるとき、フィルタリング境界の境界強度値を1に設定し、そうでなければ、フィルタリング境界の境界強度値を0に設定する。(1)第1のサブ単位および第2のサブ単位が位置する予測単位の参照画像または動きベクトルの数量は同じであり、第1のサブ単位が位置する予測単位は1つの動きベクトルを有し、第2のサブ単位が位置する予測単位は1つの動きベクトルを有し、第1のサブ単位の動きベクトルおよび第2のサブ単位の動きベクトルの水平成分または垂直成分間の動きベクトル差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、(2)第1のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、第2のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、同じ予測画像を示す2つの動きベクトルの水平成分または垂直成分間の動きベクトル差は動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(3)第1のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、第2のサブ単位が位置する予測単位は2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、かつ、以下の2つの条件aおよびbが真の条件である。(a)前方参照候補リストlist0を示す2つの動きベクトルの水平成分もしくは垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す2つの動きベクトルの水平成分もしくは垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(b)前方参照候補リストlist0を示す、第1のサブ単位が位置する予測単位の動きベクトル、および後方参照候補リストlist1を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分もしくは垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す、第1のサブ単位が位置する予測単位の動きベクトル、および前方参照候補リストlist0を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しい。
動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度であってよく、または、第1のサブ単位および第2のサブ単位が位置する予測単位の動きモデルが異なる場合、動きベクトル差閾値Tは、1/4の輝度サンプリング精度であり、もしくは、第1の単位および第2のサブ単位が位置する予測単位の動きモデルが同じである場合、動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度である。
初期閾値β0およびt0は、必要に応じて設定されるが、このことは、本発明の本実施形態において限定されない。
例えば、閾値βおよびtは、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき取得される。
βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することは、まず、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとを、式
に代入し、qPLを取得し、ここで、QpQは、第1のサブ単位の量子化パラメータであり、QpPは、第2のサブ単位の量子化パラメータであり、そして、式
、および式
に基づき、2つのQ値を取得し、予め設定された表を照会し、式
に基づき、取得されたQ値に対応するβ'を取得し、かつ、式
に基づき、取得されたQ値に対応するt'Cを取得すること、表を照会することによって取得されたβ'を式
に代入し、閾値βを取得することであって、BitDepthは、画素のビット幅を示す、取得すること、表を照会することによって取得されたt'Cを式
に代入し、閾値tを取得すること、および、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差をβおよびtと比較し、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する必要があるかを決定することを含んでよい。
例えば、図5は、水平フィルタリング境界に隣接するサブ単位の構造図である。図5において示されているように、第1のサブ単位Pおよび第2のサブ単位Qはそれぞれ、4×4の画素を含む。PおよびQにおける画素の画素値が以下の式を満たした場合、水平フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することが決定される。
Pの第1行および第4行における画素と、Qの第1行および第4行における画素とが以下の式
および、
を満たした場合、水平フィルタリング境界に隣接する画素に対して強いフィルタリングが実行されるか、または、上述の条件が満たされなかった場合、弱いフィルタリングが実行され、ここで、iの値は、0または3である。
任意選択的に、水平フィルタリング境界に隣接する画素に対して強いフィルタリングを実行することは、水平フィルタリング境界に隣接する8つの画素を取得し、5つのタップを有するフィルタを用いることによってフィルタリングを実行することであってよい。例えば、Pの第1行における4つの画素と、Qの第1行における4つの画素とが選択されてよく、当該8つの画素は、5つのタップを有するフィルタを用いることによってフィルタリングされる。
水平フィルタリング境界に隣接する画素に対して弱いフィルタリングを実行することは、水平フィルタリング境界に隣接する6つの画素を取得し、3つのタップを有するフィルタを用いることによってフィルタリングを実行することであってよい。本発明の本実施形態において、6つの画素は、Pの第1行における4つの画素およびQの第1行における4つの画素からランダムに選択されてよく、3つのタップを有するフィルタを用いることによってフィルタリングされることに留意すべきである。
上述の表は、必要に応じて設定されてよいが、このことは本発明の本実施形態において限定されない。例えば、表が表1であり、式
に基づき取得されたQ値は11であり、式
に基づき、取得されたQ値が24である場合、表1から、β'は0であり、t'
Cは1であることが分かる。
以上から、本発明の本実施形態において提供されている、ブロッキングアーティファクトを除去するためのフィルタリング方法によれば、各予測単位は、少なくとも2つのサブ単位に分割され、少なくとも2つのサブ単位のそれぞれはトラバースされ、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界は予め設定された規則に基づき決定され、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値は取得され、ここで、第1のサブ単位および第2のサブ単位はフィルタリング境界に隣接し、フィルタリング処理は、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対して実行されることが分かる。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトは除去され、画像の予測精度および主観的品質は向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを除去できないといった問題を回避する。
[実施形態2]
図6は、本発明の実施形態に係るフィルタリング装置10の構造図である。フィルタリング装置10は、画像ブロックに対してフィルタリング処理を実行するように構成される。画像ブロックは、少なくとも1つの予測単位および少なくとも1つの変換単位に分割される。予測単位は、非並進運動予測単位を含む。フィルタリング装置は、ビデオ符号化装置またはビデオ復号装置であってよい。ビデオ符号化装置またはビデオ復号装置は、例えば、ノートブックコンピュータ、タブレットコンピュータ、パーソナルコンピュータ、携帯電話、またはビデオサーバなどの、ビデオを出力または記憶する必要がある任意の装置であってよい。図6において示されているように、フィルタリング装置10は、各予測単位を少なくとも2つのサブ単位に分割するように構成される分割ユニット101であって、各サブ単位は、N×N個の画素を含み、Nは、1より大きいかまたはそれに等しい整数である、分割ユニット101と、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定するように構成される決定ユニット102と、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得するように構成される取得ユニット103であって、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する、取得ユニット103と、取得ユニット103により取得された第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されるフィルタリングユニット104とを備えてよい。
フィルタリング境界が垂直フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する上サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する下サブ単位であり、または、フィルタリング境界が水平フィルタリング境界であるとき、第1のサブ単位は、フィルタリング境界に隣接する左サブ単位であり、第2のサブ単位は、フィルタリング境界に隣接する右サブ単位である。
垂直フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが水平に配置された変換単位または非並進運動予測単位のサブブロック境界であり、水平フィルタリング境界は、変換単位または非並進運動予測単位のサブブロックが垂直に配置された変換単位または非並進運動予測単位のサブブロック境界であることに留意すべきである。本発明において、画像ブロックは、x軸(すなわち、水平方向)およびy軸(垂直方向)を含む平面であることが理解され得る。従って、「水平」は、x軸に平行であることを意味し、「垂直」は、y軸に平行であることを意味する。例えば、図3において示されているように、変換単位のサブブロックがx軸に平行に配置された変換単位のサブブロック境界は、垂直フィルタリング境界である。
さらに、少なくとも2つのサブ単位のうち任意の1つに対して、決定ユニット102は具体的に、サブ単位が非並進運動予測単位に含まれる場合、サブ単位の各境界がフィルタリング境界であると決定するか、または、サブ単位の第1の境界が画像ブロックにおける予測単位のサブブロック境界である場合、もしくはサブ単位の第1の境界が画像ブロックにおける変換単位のサブブロック境界である場合、サブ単位の第1の境界がフィルタリング境界であると決定するように構成され、ここで、第1の境界は、サブ単位の任意の境界である。
このように、予測単位における、予測単位のサブブロック境界または変換単位のサブブロック境界上に位置する境界がフィルタリング境界であると決定され、後続のフィルタリング処理が境界に対して実行されるのみならず、非並進運動予測単位の境界がフィルタリング境界であることも決定でき、フィルタリング処理は、予測単位における非並進運動予測単位の当該境界に対して実行され、これにより、予測単位における非並進運動予測単位間のブロッキングアーティファクトが除去される。
さらに、取得ユニット103は、以下の方式1または方式2で第1のサブ単位の第1の画素値を取得するように構成されてよい。
方式1:第1のサブ単位の第1の予測画素値を取得すること、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することであって、Mは1から4の範囲にある任意の整数である、計算すること、および、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位の第1の画素値を取得することである。
本発明の本実施形態において、動きベクトルは、水平成分および垂直成分を含むことに留意すべきである。水平成分は、x軸に平行な成分であり、垂直成分は、y軸に平行な成分である。
第1のサブ単位の第1の予測画素値は、動きモデルに基づき導出された元の画素値であってよい。例えば、第1のサブ単位がアフィン運動単位であるとき、第1のサブ単位における各画素の動きベクトルは、上述のアフィン運動モデル(1)に基づき取得されてよい。そして、第1のサブ単位における各画素はトラバースされ、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見する。参照フレームにおける画素の画素値は、第1のサブ単位における画素の予測画素値として用いられる。全ての画素をトラバースすることによって取得された予測画素値は、第1のサブ単位の第1の予測画素値となるよう組み合わせられる。第1のサブ単位がN×Nの画素を含む場合、第1のサブ単位の取得された第1の予測画素値は、N×Nのマトリックスであることが理解され得る。加えて、既存の補間フィルタリングアルゴリズムは、画素の動きベクトルに基づき、指定された参照フレームにおいて、当該画素にマッチする画素を発見するために用いられてよく、このことは、ここでは詳細に説明されない。
第1のサブ単位に隣接する上サブ単位は、第1のサブ単位の上境界に隣接するサブ単位であり、第1のサブ単位に隣接する下サブ単位は、第1のサブ単位の下境界に隣接するサブ単位であり、第1のサブ単位に隣接する左サブ単位は、第1のサブ単位の左境界に隣接するサブ単位であり、第1のサブ単位に隣接する右サブ単位は、第1のサブ単位の右境界に隣接するサブ単位である。
例えば、図3において示されているように、第1のサブ単位がサブ単位2である場合、サブ単位aは、第1のサブ単位の上サブ単位であり、サブ単位bは、第1のサブ単位の下サブ単位であり、サブ単位cは、第1のサブ単位の左サブ単位であり、サブ単位dは、第1のサブ単位の右サブ単位である。
任意選択的に、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを計算することは、第1のサブ単位が非並進運動予測単位に含まれる場合、または第1のサブ単位が非並進運動予測単位の下境界もしくは右境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する上サブ単位、下サブ単位、左サブ単位、および右サブ単位におけるM個のサブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の上境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、左サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する上サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを上サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって上サブ単位の動きベクトルを導出すること、または、第1のサブ単位が非並進運動予測単位の左境界に隣接するサブ単位である場合、予め設定された非並進運動モデルに基づき、第1のサブ単位に隣接する下サブ単位、上サブ単位、および右サブ単位という3つのサブ単位の動きベクトルを導出すること、および、第1のサブ単位に隣接する左サブ単位が位置する予測単位の動きベクトルが存在する場合、第1のサブ単位の動きベクトルを左サブ単位の動きベクトルとして用いること、または、フレーム内符号化モードが第1のサブ単位のために用いられる場合、もしくは第1のサブ単位の動きベクトルが存在しない場合、予め設定された非並進運動モデルを用いることによって、左サブ単位の動きベクトルを導出することを含んでよい。
本発明の本実施形態において、非並進運動は、アフィン運動、スケール運動、回転運動、または透視運動などの任意の不規則な運動であってよい。従って、異なる非並進運動に対応し、予め設定された非並進運動モデルを用いることによって、サブ単位の動きベクトルを導出することは、アフィン運動モデル(1)に基づき、サブ単位の動きベクトルを導出すること、または、スケール運動モデル(2)に基づき、サブ単位の動きベクトルを導出すること、または、回転運動モデル(3)に基づき、サブ単位の動きベクトルを導出すること、または、透視運動モデル(4)に基づき、サブ単位の動きベクトルを導出することを含んでよい。
第2の予測画素値は、第1のサブ単位に対して、第1のサブ単位に隣接するサブ単位を用いることによって動き補償を実行することによって取得された新たな画素値であってよい。具体的には、Mが4であるとき、取得ユニット103は、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位に隣接する下サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位に隣接する左サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位に隣接する右サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行して1つの第2の予測画素値を取得し、第1のサブ単位の第1の予測画素値および4つの第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化して第1のサブ単位の第1の画素値を取得するように構成されてよい。
第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式は基本的に、第1のサブ単位に隣接する下サブ単位または左サブ単位または右サブ単位に基づき、動き補償を実行する実装方式と同じであることに留意すべきである。説明しやすくするために、ここでは、第1のサブ単位に隣接する上サブ単位の動きベクトルに基づき、第1のサブ単位に対して動き補償を実行し、1つの第2の予測画素値を取得する実装方式のみを、説明のための例として用いる。
例えば、取得ユニット103は、第1のサブ単位に隣接する上サブ単位の動きベクトルを第1のサブ単位の動きベクトルとして用い、そして、動きベクトルに基づき、指定された参照フレームにおいて、第1のサブ単位にマッチする単位を発見し、参照フレームにおけるマッチした単位の画素値を第1のサブ単位の第2の予測画素値として用いてよい。
任意選択的に、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値に対して別々に重み付けを行い、重み付け後の結果を平均化し、第1のサブ単位の第1の画素値を取得することは、まず、式(5)に基づき、第1のサブ単位の第1の予測画素値および各第2の予測画素値に対して重み付けを行い、M個の重み付けされた画素値を取得し、M個の重み付けされた画素値を平均化し、第1のサブ単位の第1の画素値を取得することを含んでよい。
方式2:第1のサブ単位Pの第1の予測画素値を取得すること、予め設定された非並進運動モデルに基づき、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとを導出することであって、Mは1から4の範囲にある任意の整数である、導出すること、第1のサブ単位Pの第1の頂点1に隣接する上座標1.1、下座標1.2、左座標1.3、および右座標1.4におけるM組の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する上座標2.1、下座標2.2、左座標2.3、および右座標2.4におけるM組の座標の動きベクトルとをグループ化することによって、M個の動きベクトルペアを取得することであって、M個の動きベクトルペアにおける第1の動きベクトルペアは、第1のサブ単位Pの第1の頂点1に隣接する第1の座標の動きベクトルと、第1のサブ単位Pの第2の頂点2に隣接する第1の座標の動きベクトルとを含み、第1の座標は、上座標であり、または下座標であり、または左座標であり、または右座標である、取得すること、予め設定された非並進運動モデルに基づき、M個の動きベクトルペアに対して計算を別々に実行し、第1のサブ単位PのM個の動きベクトルを取得すること、第1のサブ単位PのM個の動きベクトルに基づき、第1のサブ単位PのM個の第2の予測画素値を取得すること、および、第1のサブ単位Pの第1の予測画素値およびM個の第2の予測画素値に基づき、第1の予め設定されたアルゴリズムを用いることによって第1のサブ単位Pの第1の画素値を取得することである。
例えば、Mが4であるとき、第1のサブ単位の第1の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標、下座標、左座標、および右座標という4組の座標の動きベクトルとが、予め設定された非並進運動モデルに基づき、導出され得る。
第1の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する上座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する上座標の動きベクトルとを含む。第2の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する下座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する下座標の動きベクトルとを含む。第3の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する左座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する左座標の動きベクトルとを含む。第4の動きベクトルペアは、第1のサブ単位の第1の頂点に隣接する右座標の動きベクトルと、第1のサブ単位の第2の頂点に隣接する右座標の動きベクトルとを含む。
計算は、予め設定された非並進運動モデルに基づき、第1の動きベクトルペア、第2の動きベクトルペア、第3の動きベクトルペア、および第4の動きベクトルペアに対して別々に実行され、第1のサブ単位の4つの動きベクトルを取得する。第1のサブ単位の4つの第2の予測画素値は、第1のサブ単位の4つの動きベクトルに基づき、取得される。第1のサブ単位の第1の予測画素値および4つの第2の予測画素値は、別々に重み付けされる。重み付け後の結果は平均化され、第1のサブ単位の第1の画素値を取得する。
方式2で第1のサブ単位の第1の予測画素値を取得するための方法は、方式1で第1のサブ単位の第1の予測画素値を取得するための方法と同じであり、詳細は、ここでは再び説明されない。
加えて、方式2において、第1のサブ単位のM個の第2の予測画素値が第1のサブ単位のM個の動きベクトルに基づき取得され、第1のサブ単位の第1の予測画素値およびM個の第2の予測画素値が別々に重み付けされ、重み付け後の結果が平均化され、第1のサブ単位の第1の画素値を取得する方式も、方式1における方式と同じであり、詳細はここでは再び説明されない。
第1のサブ単位Pの第1の頂点1に隣接する上座標1.1は、第1のサブ単位の上境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点1に隣接する下座標1.2は、第1のサブ単位Pの下境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する左座標1.3は、第1のサブ単位の左境界に隣接するサブ単位の第1の頂点の座標であってよい。第1のサブ単位Pの第1の頂点に隣接する右座標1.4は、第1のサブ単位の右境界に隣接するサブ単位の第1の頂点の座標であってよい。
第1のサブ単位Pの第2の頂点2に隣接する上座標2.1は、第1のサブ単位の上境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する下座標2.2は、第1のサブ単位の下境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する左座標2.3は、第1のサブ単位の左境界に隣接するサブ単位の第2の頂点の座標であってよい。第1のサブ単位Pの第2の頂点2に隣接する右座標2.4は、第1のサブ単位の右境界に隣接するサブ単位の第2の頂点の座標であってよい。本発明の本実施形態において、サブ単位の第1の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点のうち任意の1つであってよく、サブ単位の第2の頂点は、サブ単位の左上の頂点、左下の頂点、右上の頂点、および右下の頂点という4つの頂点において第1の頂点以外の頂点のうち任意の1つであってよいことに留意すべきである。サブ単位の頂点は、頂点の位置における画素の座標点であってよい。概して、第1のサブ単位Pの左上の頂点は、原点(0,0)として設定され、他の頂点の座標は、原点の位置に基づき、それに対応して設定される。
第1のサブ単位の第1の頂点または第2の頂点に隣接する上、下、左、および右座標の動きベクトルは、予め設定された非並進運動モデル(1)、または(2)、または(3)、または(4)に基づき、導出され得ることが理解され得る。
決定ユニット102はさらに、フィルタリングユニット104が、取得ユニット103により取得された第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する前に、フィルタリング境界の境界強度値を決定するように構成される。
フィルタリングユニット104は具体的に、フィルタリング境界の境界強度値と、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとに基づき、閾値βおよびtを取得し、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されてよく、ここで、Mは1より大きいかまたはそれに等しい整数である。
決定ユニット102は具体的に、少なくとも1つのフレーム内予測単位が、第1のサブ単位または第2のサブ単位が位置する画像ブロックに存在する場合、フィルタリング境界の境界強度値を2に設定するか、または、フレーム内予測単位が、第1のサブ単位または第2のサブ単位が位置する画像ブロックに存在せず、フィルタリング境界が変換単位のサブブロック境界であり、かつ、第1のサブ単位もしくは第2のサブ単位が位置する変換単位が、少なくとも1つの非ゼロ係数を有する場合、フィルタリング境界の境界強度値を1に設定するか、または、フレーム内予測単位が、第1のサブ単位もしくは第2のサブ単位が位置する画像ブロックに存在しない場合、かつ、以下の条件(1)から(3)のうち任意の1つが真の条件であるとき、フィルタリング境界の境界強度値を1に設定し、そうでなければ、フィルタリング境界の境界強度値を0に設定するように構成される。(1)第1のサブ単位および第2のサブ単位が位置する予測単位の参照画像または動きベクトルの数量は異なり、第1のサブ単位が位置する予測単位は、1つの動きベクトルを有し、第2のサブ単位が位置する予測単位は、1つの動きベクトルを有し、第1のサブ単位の動きベクトルおよび第2のサブ単位の動きベクトルの水平成分または垂直成分間の動きベクトル差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、(2)第1のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、第2のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は異なり、同じ予測画像を示す2つの動きベクトルの水平成分または垂直成分間の動きベクトル差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(3)第1のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、第2のサブ単位が位置する予測単位は、2つの動きベクトルを有し、当該2つの動きベクトルにより示された参照画像は同じであり、かつ、以下の2つの条件aおよびbが真の条件である。(a)前方参照候補リストlist0を示す2つの動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す2つの動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しく、および、(b)前方参照候補リストlist0を示す、第1のサブ単位が位置する予測単位の動きベクトル、および、後方参照候補リストlist1を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しいか、または、後方参照候補リストlist1を示す、第1のサブ単位が位置する予測単位の動きベクトル、および前方参照候補リストlist0を示す、第2のサブ単位が位置する予測単位の動きベクトルの水平成分または垂直成分間の差は、動きベクトル差閾値Tより大きいかまたはそれに等しい。
動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度であってよく、または、第1のサブ単位および第2のサブ単位が位置する予測単位の動きモデルが異なる場合、動きベクトル差閾値Tは、1/4の輝度サンプリング精度であり、もしくは、第1の単位および第2のサブ単位が位置する予測単位の動きモデルが同じである場合、動きベクトル差閾値Tは、4個の1/4の輝度サンプリング精度である。
初期閾値β0およびt0は、必要に応じて設定され、このことは、本発明の本実施形態において限定されない。
さらに、フィルタリングユニット104が具体的に、βと、tと、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差とに基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行するように構成されることは、まず、初期閾値β0およびt0と、第1のサブ単位の量子化パラメータと、第2のサブ単位の量子化パラメータとを、式
に代入し、qPLを取得し、ここで、QpQは、第1のサブ単位の量子化パラメータであり、QpPは、第2のサブ単位の量子化パラメータであり、そして、式
、および式
に基づき、2つのQ値を取得し、予め設定された表を照会し、式
に基づき、取得されたQ値に対応するβ'を取得し、式
に基づき、取得されたQ値に対応するt'Cを取得すること、表を照会することによって取得されたβ'を式
に代入し、閾値βを取得することであって、BitDepthは、画素ビット幅を示す、取得すること、表を照会することによって取得されたt'Cを式
に代入し、閾値tを取得すること、および、フィルタリング境界に隣接する、第1のサブ単位および第2のサブ単位におけるM個の画素の画素値間の画素差を、βおよびtと比較し、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行する必要があるかを決定することを含んでよい。
図6において示されているフィルタリング装置における分割ユニット、取得ユニット、決定ユニット、およびフィルタリングユニットは、図1において示されているフィルタリング装置に単独で配置されるプロセッサであってよく、または、実装のためにフィルタリング装置におけるプロセッサに統合されてよいことに留意すべきである。加えて、分割ユニット、取得ユニット、決定ユニット、およびフィルタリングユニットの実行処理は、図1において示されているフィルタリング装置におけるメモリにおいてプログラムコードの形式で記憶されてよく、フィルタリング装置のプロセッサは、プログラムコードを呼び出し、分割ユニット、取得ユニット、決定ユニット、およびフィルタリングユニットの実行処理を実装する。ここで説明されているプロセッサは、中央処理装置(Central Processing Unit、CPU)、または、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、または、本発明の本実施形態を実装するように構成される1つまたは複数の集積回路であってよい。
以上から、本発明の本実施形態において提供されているフィルタリング装置は、各予測単位を少なくとも2つのサブ単位に分割すること、分割ユニットにより分割によって取得された少なくとも2つのサブ単位のそれぞれをトラバースし、予め設定された規則に基づき、少なくとも2つのサブ単位の少なくとも1つのフィルタリング境界を決定すること、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値を取得することであって、第1のサブ単位および第2のサブ単位は、フィルタリング境界に隣接する、取得すること、および、第1のサブ単位の第1の画素値および第2のサブ単位の第1の画素値に基づき、フィルタリング境界に隣接する画素に対してフィルタリング処理を実行することを行うことが分かる。このように、予測単位のサブブロック境界または変換単位のサブブロック境界の2つの側に位置する、予測単位における単位の画素がフィルタリングされるのみならず、予測単位における非並進運動予測単位の境界に対してもフィルタリング処理を実行することができ、これにより、予測単位におけるブロッキングアーティファクトは除去され、画像の予測精度および主観的品質は向上し、予測単位の上境界および左境界のみに対してフィルタリング動作が実行され、予測単位の内部動き補償ブロックの境界に対してフィルタリング処理が実行されないため、ブロッキングアーティファクトを除去できないといった問題を回避する。
簡便かつ簡潔な説明のために、上述のユニットおよびシステムの具体的な作業処理について、上述の方法の実施形態における対応する処理を参照することは、当業者により明確に理解され得て、詳細は、ここでは再び説明されない。
本出願において提供されているいくつかの実施形態において、開示されているシステム、デバイス、および方法は、他の方式で実装され得ることが理解されるべきである。例えば、上で説明されているデバイスの実施形態は単に例である。例えば、ユニットの区分は単に論理的な機能区分であり、実際の実装方式において、他の区分であり得る。例えば、複数のユニットまたは構成要素は、組み合わせられてよく、もしくは別のシステムに統合されてよく、または、いくつかの特徴が無視されてよく、もしくは実行されなくてよい。
別個の部分として説明されているユニットは、物理的に別個であってもよく、またはそうでなくてもよく、ユニットとして表示されている部分は、物理ユニットであってもよく、またはそうでなくてもよく、一箇所に位置してよく、または複数のネットワークユニット上に分散されてよい。ユニットの一部または全ては、実施形態の解決手段の目的を達成するために実際の要求に応じて選択されてよい。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてよく、または、ユニットのそれぞれは、物理的に単独で存在してよく、または、2つまたはそれより多いユニットは、1つのユニットに統合されてよい。統合されたユニットは、ハードウェアの形式で実装されてよく、またはソフトウェア機能ユニットに加え、ハードウェアの形式で実装されてよい。
上述の統合されたユニットがソフトウェア機能ユニットの形式で実装されたとき、統合されたユニットは、コンピュータ可読記憶媒体において記憶されてよい。ソフトウェア機能ユニットは、記憶媒体において記憶され、(パーソナルコンピュータ、サーバ、またはネットワークデバイスであり得る)コンピュータデバイスに、本発明の実施形態において説明されている方法の段階のいくつかを実行するように命令するためのいくつかの命令を含む。上述の記憶媒体は、USBフラッシュドライブ、取り外し可能なハードディスク、リードオンリメモリ(Read−Only Memory、略してROM)、ランダムアクセスメモリ(Random Access Memory、略してRAM)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶できる任意の媒体を含む。
実施形態における方法の段階の全部または一部は、(プロセッサなどの)関連ハードウェアに命令するプログラムによって実装され得ることが当業者により理解され得る。プログラムは、コンピュータ可読記憶媒体において記憶され得る。記憶媒体は、リードオンリメモリ、ランダムアクセスメモリ、磁気ディスク、または光ディスクなどを含んでよい。
最後に、上述の実施形態は、本発明の技術的解決手段を説明することを意図するものに過ぎず、本発明を限定するものではないことに留意すべきである。本発明は上述の実施形態を参照して詳細に説明されているが、当業者は、彼らが本発明の実施形態の技術的解決手段の範囲から逸脱することなく、上述の実施形態において説明されている技術的解決手段に対してさらに変更してよく、またはこれらのいくつかの技術的な特徴に対して同等の置き換えを行ってよいことを理解すべきである。