説明

画像処理装置および方法

【課題】簡単な処理構造で、ラインメモリの削減を図ることができるようにする。
【解決手段】LCU境界において、デブロッキングHフィルタ部、デブロッキングVフィルタ部、適応オフセットフィルタ部、および適応ループフィルタ部は、ラインメモリを共有し、ラインメモリに保持されたリコンストラクト画素に対して、並列に各フィルタ処理を行う。演算部は、各フィルタ処理後の画素に対して加算などの演算行い、演算結果を後段に出力する。本開示は、例えば、画像処理装置に適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、画像処理装置および方法に関し、特に、簡単な処理構造で、ラインメモリの削減を図ることができるようにした画像処理装置および方法に関する。
【背景技術】
【0002】
近年、画像情報をデジタルとして取り扱い、その際、効率の高い情報の伝送、蓄積を目的とし、画像情報特有の冗長性を利用して、離散コサイン変換等の直交変換と動き補償により圧縮する符号化方式を採用して画像を圧縮符号する装置が普及しつつある。この符号化方式には、例えば、MPEG(Moving Picture Experts Group)やH.264及びMPEG-4 Part10 (Advanced Video Coding、以下H.264/AVCと記す)などがある。
【0003】
そして、現在、H.264/AVCより更なる符号化効率の向上を目的として、ITU-TとISO/IECとの共同の標準化団体であるJCTVC (Joint Collaboration Team - Video Coding) により、HEVC (High Efficiency Video Coding) と呼ばれる符号化方式の標準化が進められている。
【0004】
現時点におけるHEVCのドラフトでは、インループフィルタとして、デブロッキングフィルタ、適応ループフィルタ、および適応オフセットフィルタが採用されている。インループフィルタにおいては、デブロッキングフィルタ、適応オフセットフィルタ、適応ループフィルタの順に処理が行われるが、最大の符号化単位であるLCUの水平境界(以下、単にLCU境界とも称する)においては、それぞれラインメモリを持つ必要があり、トータルすると、大量のラインメモリが必要になる。
【0005】
そこで、この大量のラインメモリを削減するために、さまざまな提案がなされている。例えば、非特許文献1においては、デブロッキングのために保持するラインにかかる適応オフセットフィルタの処理(タップ参照画素)は、リコンストラクト画素(すなわち、デブロッキング前の画素)を利用する。これにより、デブロッキング用に保持するラインまでの適応ループフィルタ処理を行い、保持するラインメモリを削減することが提案されている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】” Line Memory Reduction for ALF Decoding”, Semih Esenlik, Matthias Narroschke, Thomas Wedi, JCTVC-E225,March 2011
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、非特許文献1において提案されている方法は、LCUベース処理に特化した処理である。したがって、ソフトウエアなどで、デブロッキングフィルタ、適応オフセットフィルタ、および適応オフセットフィルタがそれぞれフレーム処理をする場合にかなり複雑な制御になってしまう。
【0008】
本開示は、このような状況に鑑みてなされたものであり、簡単な処理構造で、ラインメモリの削減を図ることができるものである。
【課題を解決するための手段】
【0009】
本開示の第1の側面の画像処理装置は、符号化ストリームを復号処理して画像を生成する復号部と、前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部とを備える。
【0010】
前記第1のフィルタ処理と前記第2のフィルタ処理とを並列的に行うように、前記第1のフィルタと前記第2のフィルタとを制御する制御部をさらに備えることができる。
【0011】
前記制御部は、前記第1のフィルタと前記第2のフィルタとの出力位相とを合わせるように制御することができる。
【0012】
前記復号部により生成された画像のリコンストラクト画像を保持するメモリをさらに備えることができる。
【0013】
前記第1のフィルタは、ブロック境界のノイズを除去するフィルタである。
【0014】
前記第1のフィルタは、デブロッキングフィルタである。
【0015】
前記デブロックフィルタは、垂直境界の左右の画素にかけるフィルタ、および水平境界の上下の画素にかけるフィルタを含むことができる。
【0016】
前記制御部は、前記垂直境界の左右の画素にかけるフィルタの処理と前記水平境界の上下の画素にかけるフィルタの処理とを並列的に行うように制御することができる。
【0017】
前記第2のフィルタは、リンギングを除去する第3のフィルタ、およびブロックベースでクラス分類を行う第4のフィルタの少なくとも一方を含むことができる。
【0018】
前記第3のフィルタは、適応オフセットフィルタであって、前記第4のフィルタは、適応ループフィルタである。
【0019】
前記演算部は、前記第1のフィルタ処理が行われた画像と、前記第2のフィルタ処理が行われた画像とを、前記第1のフィルタ処理に対応する第1の演算係数と前記第2のフィルタ処理に対応する第2の演算係数とを用いた線形和で加算するように演算処理することができる。
【0020】
前記第1の演算係数と前記第2の演算係数とは、垂直境界および水平境界からの距離に応じて設定される。
【0021】
本開示の第1の側面の画像処理方法は、画像処理装置が、符号化ストリームを復号処理して画像を生成し、生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する。
【0022】
本開示の第2の側面の画像処理装置は、画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と、前記演算部により演算処理された結果である画像を用いて、前記画像を符号化する符号化部とを備える。
【0023】
前記第1のフィルタ処理と前記第2のフィルタ処理とを並列的に行うように、前記第1のフィルタと前記第2のフィルタとを制御する制御部をさらに備えることができる。
【0024】
前記制御部は、前記第1のフィルタと前記第2のフィルタとの出力位相とを合わせるように制御することができる。
【0025】
前記復号部により生成された画像のリコンストラクト画像を保持するメモリをさらに備えることができる。
【0026】
本開示の第2の側面の画像処理方法は、画像処理装置が、画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理し、演算処理された結果である画像を用いて、前記画像を符号化する。
【0027】
本開示の第3の側面の画像処理装置は、符号化ストリームを復号処理して画像を生成する復号部と、前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、前記第1のフィルタにより前記第1のフィルタ処理が行われた画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部とを備える。
【0028】
本開示の第3の側面の画像処理方法は、画像処理装置が、符号化ストリームを復号処理して画像を生成し、生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、前記第1のフィルタ処理が行われた画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する。
【0029】
本開示の第1の側面においては、符号化ストリームを復号処理して画像が生成され、生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理が行われる。また、生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理が行われる。そして、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理される。
【0030】
本開示の第2の側面においては、画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理が行われる。また、前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理が行われる。そして、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理され、演算処理された結果である画像を用いて、前記画像が符号化される。
【0031】
本開示の第3の側面においては、符号化ストリームを復号処理して画像が生成され、生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理が行われる。また、前記第1のフィルタ処理が行われた画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理が行われる。そして、前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理される。
【0032】
なお、上述の画像処理装置は、独立した装置であっても良いし、1つの画像符号化装置または画像復号装置を構成している内部ブロックであってもよい。
【発明の効果】
【0033】
本開示の第1の側面および第3の側面によれば、画像を復号することができる。特に、簡単な処理構造で、ラインメモリの削減を図ることができる。
【0034】
本開示の第2の側面によれば、画像を符号化することができる。特に、簡単な処理構造で、ラインメモリの削減を図ることができる。
【図面の簡単な説明】
【0035】
【図1】画像符号化装置の主な構成例を示すブロック図である。
【図2】符号化処理の流れの例を説明するフローチャートである。
【図3】画像復号装置の主な構成例を示すブロック図である。
【図4】復号処理の流れの例を説明するフローチャートである。
【図5】従来のインループフィルタのLCU境界で必要な各ラインメモリ数を説明する図である。
【図6】従来のインループフィルタの構成例を示すブロック図である。
【図7】本開示を適用したインループフィルタの構成例を示すブロック図である。
【図8】LCU境界の画素の例を示す図である。
【図9】図7のインループフィルタのさらに詳細な構成例を示すブロック図である。
【図10】図8のインループフィルタの処理を説明するフローチャートである。
【図11】加重平均のための重みの決定について説明する図である。
【図12】加重平均のための重みの一例を示す図である。
【図13】垂直境界および水平境界におけるフィルタリング要否の判定結果に応じた演算部からの出力画素値を示す図である。
【図14】インループフィルタを構成し得る並列処理のパターンを示す図である。
【図15】本開示を適用したインループフィルタの他の構成例を示すブロック図である。
【図16】輝度信号の場合のLCU境界で必要な各ラインメモリ数を説明する図である。
【図17】色差信号の場合のLCU境界で必要な各ラインメモリ数を説明する図である。
【図18】図15のインループフィルタの処理を説明するフローチャートである。
【図19】本開示を適用したインループフィルタのさらに他の構成例を示すブロック図である。
【図20】図19のインループフィルタの処理を説明するフローチャートである。
【図21】本開示を適用したインループフィルタのさらに他の構成例を示すブロック図である。
【図22】図21のインループフィルタのLCU境界における処理を説明する図である。
【図23】輝度信号の場合のLCU境界で必要な各ラインメモリ数を説明する図である。
【図24】色差信号の場合のLCU境界で必要な各ラインメモリ数を説明する図である。
【図25】図21のインループフィルタの処理を説明するフローチャートである。
【図26】パーソナルコンピュータの主な構成例を示すブロック図である。
【図27】テレビジョン装置の概略的な構成の一例を示すブロック図である。
【図28】携帯電話機の概略的な構成の一例を示すブロック図である。
【図29】記録再生装置の概略的な構成の一例を示すブロック図である。
【図30】撮像装置の概略的な構成の一例を示すブロック図である。
【発明を実施するための形態】
【0036】
以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.装置および動作の概要
2.従来の手法の説明
3.第1の実施の形態
4.第2の実施の形態
5.第3の実施の形態
6.第4の実施の形態
7.第5の実施の形態
8.応用例
【0037】
<1.装置および動作の概要>
[画像符号化装置の構成例]
図1は、本開示を適用した画像処理装置としての画像符号化装置の一実施の形態の構成を表している。
【0038】
図1に示される画像符号化装置11は、予測処理を用いて画像データを符号化する。ここで、符号化方式としては、例えば、HEVC(High Efficiency Video Coding)方式などが用いられる。
【0039】
図1の例において、画像符号化装置11は、A/D(Analog / Digital)変換部21、画面並べ替えバッファ22、演算部23、直交変換部24、量子化部25、可逆符号化部26、および蓄積バッファ27を有する。また、画像符号化装置11は、逆量子化部28、逆直交変換部29、演算部30、インループフィルタ31a、フレームメモリ32、選択部33、イントラ予測部34、動き予測・補償部35、予測画像選択部36、およびレート制御部37を有する。
【0040】
A/D変換部21は、入力された画像データをA/D変換し、画面並べ替えバッファ22に出力し、記憶させる。
【0041】
画面並べ替えバッファ22は、記憶した表示の順番のフレームの画像を、GOP(Group of Picture)構造に応じて、符号化のためのフレームの順番に並べ替える。画面並べ替えバッファ22は、フレームの順番を並び替えた画像を、演算部23に供給する。また、画面並べ替えバッファ22は、フレームの順番を並び替えた画像を、イントラ予測部34および動き予測・補償部35にも供給する。
【0042】
演算部23は、画面並べ替えバッファ22から読み出された画像から、予測画像選択部36を介してイントラ予測部34若しくは動き予測・補償部35から供給される予測画像を減算し、その差分情報を直交変換部24に出力する。
【0043】
例えば、イントラ符号化が行われる画像の場合、演算部23は、画面並べ替えバッファ22から読み出された画像から、イントラ予測部34から供給される予測画像を減算する。また、例えば、インター符号化が行われる画像の場合、演算部23は、画面並べ替えバッファ22から読み出された画像から、動き予測・補償部35から供給される予測画像を減算する。
【0044】
直交変換部24は、演算部23から供給される差分情報に対して、離散コサイン変換、カルーネン・レーベ変換等の直交変換を施し、その変換係数を量子化部25に供給する。
【0045】
量子化部25は、直交変換部24が出力する変換係数を量子化する。量子化部25は、量子化された変換係数を可逆符号化部26に供給する。
【0046】
可逆符号化部26は、その量子化された変換係数に対して、可変長符号化、算術符号化等の可逆符号化を施す。
【0047】
可逆符号化部26は、イントラ予測モードを示す情報などのパラメータをイントラ予測部34から取得し、インター予測モードを示す情報や動きベクトル情報などのパラメータを動き予測・補償部35から取得する。
【0048】
可逆符号化部26は、量子化された変換係数を符号化するとともに、取得した各パラメータ(シンタクス要素)を符号化し、符号化データのヘッダ情報の一部とする(多重化する)。可逆符号化部26は、符号化して得られた符号化データを蓄積バッファ27に供給して蓄積させる。
【0049】
例えば、可逆符号化部26においては、可変長符号化または算術符号化等の可逆符号化処理が行われる。可変長符号化としては、CAVLC(Context-Adaptive Variable Length Coding)などがあげられる。算術符号化としては、CABAC(Context-Adaptive Binary Arithmetic Coding)などがあげられる。
【0050】
蓄積バッファ27は、可逆符号化部26から供給された符号化データを、一時的に保持し、所定のタイミングにおいて、符号化された符号化画像として、例えば、後段の図示せぬ記録装置や伝送路などに出力する。
【0051】
また、量子化部25において量子化された変換係数は、逆量子化部28にも供給される。逆量子化部28は、その量子化された変換係数を、量子化部25による量子化に対応する方法で逆量子化する。逆量子化部28は、得られた変換係数を、逆直交変換部29に供給する。
【0052】
逆直交変換部29は、供給された変換係数を、直交変換部24による直交変換処理に対応する方法で逆直交変換する。逆直交変換された出力(復元された差分情報)は、演算部30に供給される。
【0053】
演算部30は、逆直交変換部29より供給された逆直交変換結果、すなわち、復元された差分情報に、予測画像選択部36を介してイントラ予測部34若しくは動き予測・補償部35から供給される予測画像を加算し、局部的に復号された画像(復号画像)を得る。
【0054】
例えば、差分情報が、イントラ符号化が行われる画像に対応する場合、演算部30は、その差分情報にイントラ予測部34から供給される予測画像を加算する。また、例えば、差分情報が、インター符号化が行われる画像に対応する場合、演算部30は、その差分情報に動き予測・補償部35から供給される予測画像を加算する。
【0055】
その加算結果である復号画像は、インループフィルタ31aおよびフレームメモリ32に供給される。
【0056】
インループフィルタ31aは、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタを含むように構成される。インループフィルタ31aは、復号画像の画素(すなわち、リコンストラクト画素)を対象として、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタの処理を施し、フィルタ処理結果を加算した画像を、フレームメモリ32に供給する。
【0057】
なお、インループフィルタ31aにおいては、デブロックフィルタの垂直および水平、適応オフセットフィルタ、並びに適応ループフィルタの少なくとも2つの処理が並列で行われる。このインループフィルタ31aの構成および動作の詳細は図7を参照して後述される。
【0058】
フレームメモリ32は、所定のタイミングにおいて、蓄積されている参照画像を、選択部33を介してイントラ予測部34または動き予測・補償部35に出力する。
【0059】
例えば、イントラ符号化が行われる画像の場合、フレームメモリ32は、参照画像を、選択部33を介してイントラ予測部34に供給する。また、例えば、インター符号化が行われる場合、フレームメモリ32は、参照画像を、選択部33を介して動き予測・補償部35に供給する。
【0060】
選択部33は、フレームメモリ32から供給される参照画像がイントラ符号化を行う画像である場合、その参照画像をイントラ予測部34に供給する。また、選択部33は、フレームメモリ32から供給される参照画像がインター符号化を行う画像である場合、その参照画像を動き予測・補償部35に供給する。
【0061】
イントラ予測部34は、画面内の画素値を用いて予測画像を生成するイントラ予測(画面内予測)を行う。イントラ予測部34は、複数のモード(イントラ予測モード)によりイントラ予測を行う。
【0062】
イントラ予測部34は、全てのイントラ予測モードで予測画像を生成し、各予測画像を評価し、最適なモードを選択する。イントラ予測部34は、最適なイントラ予測モードを選択すると、その最適なモードで生成された予測画像を、予測画像選択部36を介して演算部23や演算部30に供給する。
【0063】
また、上述したように、イントラ予測部34は、採用したイントラ予測モードを示すイントラ予測モード情報等のパラメータを、適宜可逆符号化部26に供給する。
【0064】
動き予測・補償部35は、インター符号化が行われる画像について、画面並べ替えバッファ22から供給される入力画像と、選択部33を介してフレームメモリ32から供給される参照画像とを用いて、動き予測を行い、検出された動きベクトルに応じて動き補償処理を行い、予測画像(インター予測画像情報)を生成する。
【0065】
動き予測・補償部35は、候補となる全てのインター予測モードのインター予測処理を行い、予測画像を生成する。動き予測・補償部35は、生成された予測画像を、予測画像選択部36を介して演算部23や演算部30に供給する。
【0066】
また、動き予測・補償部35は、採用されたインター予測モードを示すインター予測モード情報や、算出した動きベクトルを示す動きベクトル情報などのパラメータを可逆符号化部26に供給する。
【0067】
予測画像選択部36は、イントラ符号化を行う画像の場合、イントラ予測部34の出力を演算部23や演算部30に供給し、インター符号化を行う画像の場合、動き予測・補償部35の出力を演算部23や演算部30に供給する。
【0068】
レート制御部37は、蓄積バッファ27に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部25の量子化動作のレートを制御する。
【0069】
[画像符号化装置の動作]
図2を参照して、以上のような画像符号化装置11により実行される符号化処理の流れについて説明する。
【0070】
ステップS11において、A/D変換部21は入力された画像をA/D変換する。ステップS12において、画面並べ替えバッファ22は、A/D変換された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
【0071】
画面並べ替えバッファ22から供給される処理対象の画像がイントラ処理されるブロックの画像である場合、参照される復号済みの画像がフレームメモリ32から読み出され、選択部33を介してイントラ予測部34に供給される。
【0072】
これらの画像に基づいて、ステップS13において、イントラ予測部34は処理対象のブロックの画素を、候補となる全てのイントラ予測モードでイントラ予測する。なお、参照される復号済みの画素としては、インループフィルタ31によりフィルタされていない画素が用いられる。
【0073】
この処理により、候補となる全てのイントラ予測モードでイントラ予測が行われ、候補となる全てのイントラ予測モードに対してコスト関数値が算出される。そして、算出されたコスト関数値に基づいて、最適イントラ予測モードが選択され、最適イントラ予測モードのイントラ予測により生成された予測画像とそのコスト関数値が予測画像選択部36に供給される。
【0074】
画面並べ替えバッファ22から供給される処理対象の画像がインター処理される画像である場合、参照される画像がフレームメモリ32から読み出され、選択部33を介して動き予測・補償部35に供給される。これらの画像に基づいて、ステップS14において、動き予測・補償部35は、動き予測・補償処理を行う。
【0075】
この処理により、候補となる全てのインター予測モードで動き予測処理が行われ、候補となる全てのインター予測モードに対してコスト関数値が算出され、算出したコスト関数値に基づいて、最適インター予測モードが決定される。そして、最適インター予測モードにより生成された予測画像とそのコスト関数値が予測画像選択部36に供給される。
【0076】
ステップS15において、予測画像選択部36は、イントラ予測部34および動き予測・補償部35より出力された各コスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちの一方を、最適予測モードに決定する。そして、予測画像選択部36は、決定した最適予測モードの予測画像を選択し、演算部23,30に供給する。この予測画像は、後述するステップS16,S21の演算に利用される。
【0077】
なお、この予測画像の選択情報は、イントラ予測部34または動き予測・補償部35に供給される。最適イントラ予測モードの予測画像が選択された場合、イントラ予測部34は、最適イントラ予測モードを示す情報(すなわち、イントラ予測に関するパラメータ)を、可逆符号化部26に供給する。
【0078】
最適インター予測モードの予測画像が選択された場合、動き予測・補償部35は、最適インター予測モードを示す情報と、最適インター予測モードに応じた情報(すなわち、動き予測に関するパラメータ)を可逆符号化部26に出力する。最適インター予測モードに応じた情報としては、動きベクトル情報や参照フレーム情報などがあげられる。
【0079】
ステップS16において、演算部23は、ステップS12で並び替えられた画像と、ステップS15で選択された予測画像との差分を演算する。予測画像は、インター予測する場合は動き予測・補償部35から、イントラ予測する場合はイントラ予測部34から、それぞれ予測画像選択部36を介して演算部23に供給される。
【0080】
差分データは元の画像データに較べてデータ量が小さくなっている。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
【0081】
ステップS17において、直交変換部24は演算部23から供給された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。
【0082】
ステップS18において、量子化部25は変換係数を量子化する。この量子化に際しては、後述するステップS26の処理で説明されるように、レートが制御される。
【0083】
以上のようにして量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップS19において、逆量子化部28は、量子化部25により量子化された変換係数を量子化部25の特性に対応する特性で逆量子化する。ステップS20において、逆直交変換部29は、逆量子化部28により逆量子化された変換係数を直交変換部24の特性に対応する特性で逆直交変換する。
【0084】
ステップS21において、演算部30は、予測画像選択部36を介して入力される予測画像を局部的に復号された差分情報に加算し、局部的に復号された(すなわち、ローカルデコードされた)画像(演算部23への入力に対応する画像)を生成する。
【0085】
ステップS22においてインループフィルタ31aは、演算部30より出力された画像に対して、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタからなるフィルタ処理を行う。このとき、デブロックフィルタの垂直および水平、適応オフセットフィルタ、並びに適応ループフィルタの少なくとも2つの処理が並列で行われる。このインループフィルタ処理の詳細は、図10を参照して後述される。インループフィルタ31aからの復号画像は、フレームメモリ32に出力される。
【0086】
ステップS23においてフレームメモリ32は、フィルタリングされた画像を記憶する。なお、フレームメモリ32には、インループフィルタ31aによりフィルタされていない画像も演算部30から供給され、記憶される。
【0087】
一方、上述したステップS18において量子化された変換係数は、可逆符号化部26にも供給される。ステップS24において、可逆符号化部26は、量子化部25より出力された量子化された変換係数と、供給された各パラメータを符号化する。すなわち、差分画像が可変長符号化、算術符号化等の可逆符号化され、圧縮される。
【0088】
ステップS25において蓄積バッファ27は、符号化された差分画像(すなわち、符号化ストリーム)を、圧縮画像として蓄積する。蓄積バッファ27に蓄積された圧縮画像が適宜読み出され、伝送路を介して復号側に伝送される。
【0089】
ステップS26においてレート制御部37は、蓄積バッファ27に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部25の量子化動作のレートを制御する。
【0090】
ステップS26の処理が終了すると、符号化処理が終了される。
【0091】
[画像復号装置の構成例]
図3は、本開示を適用した画像処理装置としての画像復号装置の一実施の形態の構成を表している。図3に示される画像復号装置51は、図1の画像符号化装置11に対応する復号装置である。
【0092】
画像符号化装置11より符号化された符号化データは、所定の伝送路を介して、この画像符号化装置11に対応する画像復号装置51に伝送され、復号されるものとする。
【0093】
図3に示されるように、画像復号装置51は、蓄積バッファ61、可逆復号部62、逆量子化部63、逆直交変換部64、演算部65、インループフィルタ31b、画面並べ替えバッファ67、およびD/A変換部68を有する。また、画像復号装置51は、フレームメモリ69、選択部70、イントラ予測部71、動き予測・補償部72、および選択部73を有する。
【0094】
蓄積バッファ61は、伝送されてきた符号化データを蓄積する。この符号化データは、画像符号化装置11により符号化されたものである。可逆復号部62は、蓄積バッファ61から所定のタイミングで読み出された符号化データを、図1の可逆符号化部26の符号化方式に対応する方式で復号する。
【0095】
可逆復号部62は、復号されたイントラ予測モードを示す情報などのパラメータをイントラ予測部71に供給し、インター予測モードを示す情報や動きベクトル情報などのパラメータを動き予測・補償部72に供給する。
【0096】
逆量子化部63は、可逆復号部62により復号されて得られた係数データ(量子化係数)を、図1の量子化部25の量子化方式に対応する方式で逆量子化する。つまり、逆量子化部63は、画像符号化装置11から供給された量子化パラメータを用いて、図1の逆量子化部28と同様の方法で量子化係数の逆量子化を行う。
【0097】
逆量子化部63は、逆量子化された係数データ、つまり、直交変換係数を、逆直交変換部64に供給する。逆直交変換部64は、図1の直交変換部24の直交変換方式に対応する方式で、その直交変換係数を逆直交変換し、画像符号化装置11において直交変換される前の残差データに対応する復号残差データを得る。
【0098】
逆直交変換されて得られた復号残差データは、演算部65に供給される。また、演算部65には、選択部73を介して、イントラ予測部71若しくは動き予測・補償部72から予測画像が供給される。
【0099】
演算部65は、その復号残差データと予測画像とを加算し、画像符号化装置11の演算部23により予測画像が減算される前の画像データに対応する復号画像データを得る。演算部65は、その復号画像データをインループフィルタ31bに供給する。
【0100】
インループフィルタ31bは、画像符号化装置11のインループフィルタ31aと同様に、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタを含むように構成される。インループフィルタ31bは、復号画像の画素(すなわち、リコンストラクト画素)を対象として、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタの処理を施し、フィルタ処理結果を加算した画像を、画面並べ替えバッファ67に供給する。
【0101】
なお、インループフィルタ31bにおいては、デブロックフィルタの垂直および水平、適応オフセットフィルタ、並びに適応ループフィルタの少なくとも2つの処理が並列で行われる。このインループフィルタ31bの構成および動作の詳細は図7を参照して後述される。
【0102】
画面並べ替えバッファ67は、画像の並べ替えを行う。すなわち、図1の画面並べ替えバッファ22により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部68は、画面並べ替えバッファ67から供給された画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
【0103】
インループフィルタ31bの出力は、さらに、フレームメモリ69に供給される。
【0104】
フレームメモリ69、選択部70、イントラ予測部71、動き予測・補償部72、および選択部73は、画像符号化装置11のフレームメモリ32、選択部33、イントラ予測部34、動き予測・補償部35、および予測画像選択部36にそれぞれ対応する。
【0105】
選択部70は、インター処理される画像と参照される画像をフレームメモリ69から読み出し、動き予測・補償部72に供給する。また、選択部70は、イントラ予測に用いられる画像をフレームメモリ69から読み出し、イントラ予測部71に供給する。
【0106】
イントラ予測部71には、ヘッダ情報を復号して得られたイントラ予測モードを示す情報等が可逆復号部62から適宜供給される。イントラ予測部71は、この情報に基づいて、フレームメモリ69から取得した参照画像から予測画像を生成し、生成した予測画像を選択部73に供給する。
【0107】
動き予測・補償部72には、ヘッダ情報を復号して得られた情報(予測モード情報、動きベクトル情報、参照フレーム情報、フラグ、および各種パラメータ等)が可逆復号部62から供給される。
【0108】
動き予測・補償部72は、可逆復号部62から供給されるそれらの情報に基づいて、フレームメモリ69から取得した参照画像から予測画像を生成し、生成した予測画像を選択部73に供給する。
【0109】
選択部73は、動き予測・補償部72またはイントラ予測部71により生成された予測画像を選択し、演算部65に供給する。
【0110】
[画像復号装置の動作]
図4を参照して、以上のような画像復号装置51により実行される復号処理の流れの例を説明する。
【0111】
復号処理が開始されると、ステップS51において、蓄積バッファ61は、伝送されてきた符号化データを蓄積する。ステップS52において、可逆復号部62は、蓄積バッファ61から供給される符号化データを復号する。図1の可逆符号化部26により符号化されたIピクチャ、Pピクチャ、並びにBピクチャが復号される。
【0112】
ピクチャの復号に先立ち、動きベクトル情報、参照フレーム情報、予測モード情報(イントラ予測モード、またはインター予測モード)などのパラメータの情報も復号される。
【0113】
予測モード情報がイントラ予測モード情報である場合、予測モード情報は、イントラ予測部71に供給される。予測モード情報がインター予測モード情報である場合、予測モード情報と対応する動きベクトル情報などは、動き予測・補償部72に供給される。
【0114】
ステップS53において、イントラ予測部71または動き予測・補償部72は、可逆復号部62から供給される予測モード情報に対応して、それぞれ、予測画像生成処理を行う。
【0115】
すなわち、可逆復号部62からイントラ予測モード情報が供給された場合、イントラ予測部71は、Most Probable Modeの生成を行い、並列処理により、イントラ予測モードのイントラ予測画像を生成する。可逆復号部62からインター予測モード情報が供給された場合、動き予測・補償部72は、インター予測モードの動き予測・補償処理を行い、インター予測画像を生成する。
【0116】
この処理により、イントラ予測部71により生成された予測画像(イントラ予測画像)、または動き予測・補償部72により生成された予測画像(インター予測画像)が選択部73に供給される。
【0117】
ステップS54において、選択部73は予測画像を選択する。すなわち、イントラ予測部71により生成された予測画像、または動き予測・補償部72により生成された予測画像が供給される。したがって、供給された予測画像が選択されて演算部65に供給され、後述するステップS57において逆直交変換部64の出力と加算される。
【0118】
上述したステップS52において、可逆復号部62により復号された変換係数は、逆量子化部63にも供給される。ステップS55において、逆量子化部63は可逆復号部62により復号された変換係数を、図1の量子化部25の特性に対応する特性で逆量子化する。
【0119】
ステップS56において逆直交変換部29は、逆量子化部28により逆量子化された変換係数を、図1の直交変換部24の特性に対応する特性で逆直交変換する。これにより図1の直交変換部24の入力(演算部23の出力)に対応する差分情報が復号されたことになる。
【0120】
ステップS57において、演算部65は、上述したステップS54の処理で選択され、選択部73を介して入力される予測画像を差分情報と加算する。これにより元の画像が復号される。
【0121】
ステップS58においてインループフィルタ31bは、演算部30より出力された画像に対して、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタからなるフィルタ処理を行う。このとき、デブロックフィルタの垂直および水平、適応オフセットフィルタ、並びに適応ループフィルタの少なくとも2つの処理が並列で行われる。このインループフィルタ処理の詳細は、図10を参照して後述される。インループフィルタ31bからの復号画像は、フレームメモリ69および画面並べ替えバッファ67に出力される。
【0122】
ステップS59においてフレームメモリ69は、フィルタリングされた画像を記憶する。
【0123】
ステップS60において、画面並べ替えバッファ67は、インループフィルタ31b後の画像の並べ替えを行う。すなわち画像符号化装置11の画面並べ替えバッファ22により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
【0124】
ステップS61において、D/A変換部68は、画面並べ替えバッファ67からの画像をD/A変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
【0125】
ステップS61の処理が終了すると、復号処理が終了される。
【0126】
<従来の手法の説明>
従来のインループフィルタは、デブロッキングフィルタ、適応オフセットフィルタ、および適応ループフィルタの順に、直列で処理するため、LCU(Largest Coding Unit)の水平境界(すなわち、LCUの下部)においては、ラインメモリをそれぞれ持つ必要があった。
【0127】
ここで、LCU(Largest Coding Unit)とCU(Coding Unit)について簡単に説明する。H.264及びMPEG(Moving Picture Experts Group)4 Part10(AVC(Advanced Video Coding))(以下H.264/AVCと称する)においては、1つのマクロブロックを、複数の動き補償ブロックに分割し、それぞれに対して異なる動き情報を持たせることが可能であった。すなわち、H.264/AVC方式においては、マクロブロックとサブマクロブロックによる階層構造が規定されていた。これに対して、HEVC(High Efficiency Video Coding)方式においては、コーディングユニット(CU)が規定されている。
【0128】
CUは、Coding Tree Block(CTB)とも呼ばれ、H.264/AVC方式におけるマクロブロックと同様の役割を果たす、符号化(復号)の処理単位となる領域(ピクチャ単位の画像の部分領域)である。後者は、16×16画素の大きさに固定されているのに対し、前者の大きさは固定されておらず、それぞれのシーケンスにおいて、画像圧縮情報中において指定されることになる。
【0129】
例えば、出力となる符号化データに含まれるシーケンスパラメータセット(SPS(Sequence Parameter Set))において、CUの最大サイズ(LCU(Largest Coding Unit))と最小サイズ((SCU(Smallest Coding Unit))が規定される。
【0130】
それぞれのLCU内においては、SCUのサイズを下回らない範囲で、split-flag=1とすることにより、より小さなサイズのCUに分割することができる。例えば、後述する図5の例では、CUの分割ラインは示されていないが、LCUの大きさが16×16画素であり、その中に、8×8画素のCUが4つ含まれている例が示されている。
【0131】
以上のHEVC方式のように、CUを定義し、そのCUを単位として各種処理を行うような符号化方式の場合、H.264/AVC方式におけるマクロブロックはLCUに相当し、ブロック(サブブロック)はCUに相当すると考えることができる。ただし、CUは、階層構造を有するので、その最上位階層のLCUのサイズは、例えば128×128画素のように、H.264/AVC方式のマクロブロックより大きく設定されることが一般的である。
【0132】
よって、以下、LCUは、H.264/AVC方式におけるマクロブロックをも含むものとし、CUは、H.264/AVC方式におけるブロック(サブブロック)をも含むものとする。
【0133】
[LCU境界における従来のインループフィルタの説明]
図5を参照して、HEVC方式におけるインループフィルタを構成する各フィルタのLCUの水平境界で必要な各ラインメモリ数について説明する。なお、以下、単にLCU境界と称する場合、それは、LCUの水平境界を表すものとして説明する。また、LCU境界からのラインの数は、LCU境界からの上に向かってのラインの数を示すものとして説明する。
【0134】
図5の例においては、輝度信号の例が示されている。図5の例において、一番下がLCU境界を示しており、丸は画素を表している。
【0135】
LCU境界から1ライン目乃至3ライン目の丸は、次のLCUがデブロッキングフィルタに入力されたときに、水平境界のデブロッキングV(垂直)フィルタ処理が開始される画素を表している。なお、1ライン目乃至3ライン目のハッチングで示される丸は、LCUに含まれるCUの垂直境界において部分的にデブロッキングH(水平)フィルタ処理された画素を表している。1行目乃至3行目の丸のうち、白丸は、CUの垂直境界において、実際には、デブロッキングHフィルタ処理が施されない画素を表している。
【0136】
LCU境界から4ライン目の画素は、デブロッキングVフィルタ処理済みの画素であって、かつ、適応オフセットフィルタ(SAO: Sample adaptive offset)処理前の画素である。この4ライン目の画素は、1ライン目乃至3ライン目のデブロッキングVフィルタ処理において参照される画素でもある。LCU境界から5ライン目の画素は、デブロッキングVフィルタ処理および適応オフセットフィルタ済みの画素である。
【0137】
LCU境界から6ライン目の画素は、適応オフセットフィルタ処理済みの画素であって、かつ、適応ループフィルタ(ALF: Adaptive Loop Filter)処理がなされていない画素である。
【0138】
LCU境界から7ライン目乃至16ライン行目の丸は、適応ループフィルタ(ALF)処理後の画素を表している。
【0139】
デブロッキングフィルタは、LCU境界において、LCU境界から1ライン目乃至3ライン目の画素を処理する際、LCU境界を介して下に接するLCUの画素(次の4ライン分の画素)が入力されないとデブロッキングVフィルタ処理を開始できない。
【0140】
したがって、デブロッキングフィルタのラインメモリに、次に処理される対象の1乃至3ライン目の画素と参照画素である4ライン目の画素との計4ライン分の画素が保持された図5の状態で、デブロッキングVフィルタ処理は待機(一時停止)することになる。
【0141】
適応オフセットフィルタは、適応オフセットフィルタのラインメモリに保持されているLCU境界から5ライン目の画素のフィルタ処理を、デブロッキングフィルタのラインメモリに保持されているLCU境界から4ライン目の画素を参照して完了させる。
【0142】
しかしながら、LCU境界から3ライン目の画素のデブロッキングフィルタが完了しないために、適応オフセットフィルタは、次のLCU境界から4ライン目の画素の処理を開始することができない。したがって、適応オフセットフィルタのラインメモリにLCU境界から5ライン目の画素が保持された図5の状態で、適応オフセットフィルタの処理も待機することになる。
【0143】
適応ループフィルタは、LCU境界から7ライン目の画素のフィルタ処理(例えば、5タップ)を、LCU境界から5および6ライン目の画素と8および9ライン目の画素を参照して完了させる。このとき、適応ループフィルタは、次のLCU境界から6ライン目の画素のフィルタ処理に必要のない9ライン目の画素を、適応ループフィルタのラインメモリから手放し、ラインメモリには、LCU境界から5乃至8ライン目の4ライン分の画素が保持されている。
【0144】
しかしながら、次のLCU境界から6ライン目の画素のフィルタ処理に参照される4ライン目の画素が、3ライン目の画素のデブロッキングフィルタが完了しないためにデブロッキングフィルタが手放せず、適応ループフィルタのラインメモリに入力されない。それゆえ、適応ループフィルタは、次の処理を開始することができない。したがって、適応ループフィルタのラインメモリにLCU境界から5乃至8ライン目の4ライン分の画素が保持された図5の状態で、適応ループフィルタの処理も待機することになる。
【0145】
[従来のインループフィルタの構成]
図6は、従来のインループフィルタの構成例を示すブロック図である。
【0146】
図6に示されるインループフィルタは、デブロッキングフィルタ部101、適応オフセットフィルタ部102、および適応ループフィルタ部103を含むように構成されている。
【0147】
デブロッキングフィルタ部101は、H(水平)フィルタ111、V(垂直)フィルタ112、およびラインメモリ113を含むように構成され、入力画素に対して、ブロックCU(LCU)境界のノイズを除去するデブロッキングフィルタ処理を施す。
【0148】
Hフィルタ111は、入力画像内の左右に隣接するCU(LCU)間の垂直境界の左右(水平方向)の画素にかけるデブロッキングフィルタである。また、Vフィルタ112は、入力画像内の上下に隣接するCU(LCU)間の水平境界の上下(垂直方向)の画素にかけるデブロッキングフィルタである。ラインメモリ113は、LCU境界において、前段から入力される入力画素であるリコンストラクト画素を一旦保持する。ラインメモリ113は、図5を参照して上述したように、LCU境界において、輝度(Y)について4ライン分の画素を保持し、色差(C)について2ライン分の画素を保持する。
【0149】
デブロッキングフィルタ部101は、通常(LCU境界以外)、前段からの入力画素であるリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。デブロッキングフィルタ部101は、フィルタ処理後の画素を、適応オフセットフィルタ部102に出力する。
【0150】
LCU境界においては、デブロッキングフィルタ部101は、前段からの入力画素であるリコンストラクト画素を、一旦ラインメモリ113に保持する。そして、必要な画素が入力されると、デブロッキングフィルタ部101は、入力された画素と、ラインメモリ113に保持されている画素とを用いて、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。デブロッキングフィルタ部101は、フィルタ処理後の画素を、適応オフセットフィルタ部102に出力する。
【0151】
適応オフセットフィルタ部102は、オフセットフィルタ121およびラインメモリ122を含むように構成され、デブロッキングフィルタ部101からの復号画像に対して、主にリンギングを除去するオフセットフィルタ処理を行う。
【0152】
オフセットフィルタ121の種類は、バンドオフセット2種類、エッジオフセット6種類、オフセットなしの計9種類がある。ラインメモリ122は、図5を参照して上述したように、LCU境界において、輝度(Y)について1ライン分の画素を保持し、色差(C)について1ライン分の画素を保持する。
【0153】
適応オフセットフィルタ部102は、通常、デブロッキングフィルタ部101によりフィルタ処理が施された画素に対して、オフセットフィルタ121によるフィルタ処理を行い、フィルタ処理後の画素を、適応ループフィルタ部103に出力する。
【0154】
LCU境界においては、適応オフセットフィルタ部102は、デブロッキングフィルタ部101からの入力画素であるリコンストラクト画素を、一旦ラインメモリ122に保持する。そして、必要な画素が入力されると、適応オフセットフィルタ部102は、入力された画素とラインメモリ122に保持されている画素とを用いて、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部102は、フィルタ処理後の画素を、適応オフセットフィルタ部102に出力する。
【0155】
適応ループフィルタ部103は、ループフィルタ131およびラインメモリ132を含むように構成され、適応オフセットフィルタ部102からの復号画像に対して、ブロックベースでクラス分類を行い、適応ループフィルタ処理を行う。
【0156】
ループフィルタ131は、例えば、2次元のウィナーフィルタ(Wiener Filter)で構成される。ラインメモリ132は、図5を参照して上述したように、LCU境界において、輝度(Y)について4ライン分の画素を保持し、色差(C)について4ライン分の画素を保持する。
【0157】
適応ループフィルタ部103は、通常、適応オフセットフィルタ部102によりフィルタ処理が施された画素に対して、ループフィルタ131によるフィルタ処理を行い、フィルタ処理後の画素を、後段のフレームメモリなどに出力する。
【0158】
LCU境界においては、適応ループフィルタ部103は、適応オフセットフィルタ部102からの入力画素であるリコンストラクト画素を、一旦ラインメモリ132に保持する。そして、必要な画素が入力されると、適応ループフィルタ部103は、入力された画素とラインメモリ132に保持されている画素とを用いて、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部103は、フィルタ処理後の画素を、後段のフレームメモリなどに出力する。
【0159】
以上のように、輝度信号の場合、LCU境界において、デブロッキングフィルタには、4ライン分の画素を保持するラインメモリが必要であり、適応オフセットフィルタには、1ライン分の画素を保持するラインメモリが必要であった。さらに、適応ループフィルタには、4ライン分の画素を保持するラインメモリが必要であり、重複する画素もあるが、トータルで、9ライン分の画素を保持するラインメモリが必要であった。
【0160】
また、色差信号の場合には、その説明を省略するが、LCU境界において、デブロッキングフィルタには、2ライン分の画素を保持するラインメモリが必要であり、適応オフセットフィルタには、1ライン分の画素を保持するラインメモリが必要であった。さらに、適応ループフィルタには、4ライン分の画素を保持するラインメモリが必要であり、重複する画素もあるが、トータルで、7ライン分の画素を保持するラインメモリが必要であった。
【0161】
そこで、このような大量のラインメモリを削減するために、さまざまな提案がなされている。例えば、非特許文献1においては、デブロッキングのために保持するラインにかかる適応オフセットフィルタの処理(タップ参照画素)は、リコンストラクト画素(すなわち、デブロッキング前の画素)を利用する。これにより、デブロッキング用に保持するラインまでの適応ループフィルタ処理を行い、保持するラインメモリを削減することが提案されている。
【0162】
しかしながら、非特許文献1に記載の提案は、LCUベース処理に特化した処理である。したがって、ソフトウエアなどで、デブロッキングフィルタ、適応オフセットフィルタ、および適応オフセットフィルタがそれぞれフレーム処理をする場合にかなり複雑な制御になってしまう。
【0163】
そこで、以下に説明するインループフィルタにおいては、デブロッキングフィルタ、適応オフセットフィルタ、および適応ループフィルタの少なくとも2つを並列化して、ラインメモリを共有することにより、簡単な処理構造でラインメモリの削減を図る。
【0164】
<3.第1の実施の形態>
[インループフィルタの構成例]
図7は、本開示を適用したインループフィルタの構成例を示すブロック図である。なお、図1に示した画像符号化装置11のインループフィルタ31aおよび図3に示した画像復号装置51のインループフィルタ31bの構成は、共通であってよい。したがって、これ以降の説明においては、個々に区別する必要がない場合、インループフィルタ31aおよびインループフィルタ31bをインループフィルタ31と総称する。
【0165】
図7の例において、インループフィルタ31は、ラインメモリ151、デブロッキングH(水平)フィルタ部152、デブロッキングV(垂直)フィルタ部153、適応オフセットフィルタ部154、適応ループフィルタ部155、および演算部156を含むように構成されている。なお、図7の例においては、LCU境界におけるインループフィルタ31の構成例が示されている。
【0166】
ラインメモリ151は、LCU境界において、前段から入力されるリコンストラクト画素を一旦保持する。なお、前段とは、図1の画像符号化装置11の場合、演算部30であり、図3の画像復号装置51の場合、演算部65である。
【0167】
図7の例においては、ラインメモリ151は、輝度(Y)について、5ライン分の画素を保持し、色差(C)について、3ライン分の画素を保持する。なお、保持するライン数は、アーキテクチャなどに依存されるため、限定されない。
【0168】
LCU境界において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、リコンストラクト画素が保持されたラインメモリ151を共有している。
【0169】
デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、ラインメモリ151に保持されたリコンストラクト画素に対して、並列に各フィルタ処理を行う。そして、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、演算部156にフィルタ処理後の画素をそれぞれ出力する。
【0170】
すなわち、デブロッキングHフィルタ部152は、図6のHフィルタ111を含むように構成され、左右に隣接するブロック間の垂直境界のブロックノイズを除去するデブロッキングHフィルタ処理を施す。Hフィルタ111は、図6を参照して上述したように、入力画像内の左右に隣接するブロック間の垂直境界の左右の画素にかけるデブロッキングフィルタである。
【0171】
LCU境界において、デブロッキングHフィルタ部152は、ラインメモリ151に保持されているリコンストラクト画素を読み出し、読み出したリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施す。デブロッキングHフィルタ部152は、Hフィルタ111によるフィルタ処理後の画素を、演算部156に出力する。
【0172】
デブロッキングVフィルタ部153は、図6のVフィルタ112を含むように構成され、上下に隣接するブロック間の水平境界のブロックノイズを除去するデブロッキングVフィルタ処理を施す。Vフィルタ112は、図6を参照して上述したように、入力画像内の上下に隣接するブロック間の水平境界の上下の画素にかけるデブロッキングフィルタである。
【0173】
LCU境界において、デブロッキングVフィルタ部153は、ラインメモリ151に保持されているリコンストラクト画素を読み出し、読み出したリコンストラクト画素に対して、Vフィルタ112によるフィルタ処理を施す。デブロッキングVフィルタ部153は、Vフィルタ112によるフィルタ処理後の画素を、演算部156に出力する。
【0174】
適応オフセットフィルタ部154は、図6のオフセットフィルタ121を含むように構成され、入力画像に対して、主にリンギングを除去するオフセットフィルタ処理を行う。
【0175】
オフセットフィルタ121の種類は、図6を参照して上述したように、バンドオフセット2種類、エッジオフセット6種類、オフセットなしの計9種類がある。オフセットフィルタ121は、具体的には、分割領域毎にオフセットフィルタ121の種類が決定されたものであるquad-tree構造と分割領域毎のオフセット値を用いて施される。このquad-tree構造とオフセット値は、図1の画像符号化装置11の場合、算出されたものが用いられ、図3の画像復号装置51の場合、図1の画像符号化装置11により算出されたものが復号されて用いられる。
【0176】
LCU境界において、適応オフセットフィルタ部154は、ラインメモリ151に保持されているリコンストラクト画素を読み出し、読み出したリコンストラクト画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部154は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部156に出力する。
【0177】
適応ループフィルタ部155は、図6のループフィルタ131を含むように構成され、入力画像に対して、ブロックベースでクラス分類を行い、適応ループフィルタ処理を行う。
【0178】
ループフィルタ131は、図6を参照して上述したように、例えば、2次元のウィナーフィルタ(Wiener Filter)で構成される。ループフィルタ131は、具体的には、適応ループフィルタ係数を用いて施される。この適応ループフィルタ係数は、図1の画像符号化装置11の場合、ブロックベースでクラス分類を行い、分類されたクラス毎に、画面並べ替えバッファ22からの原画像との残差を最小とするよう算出されたものが用いられる。また、適応ループフィルタ係数は、図3の画像復号装置51の場合、図1の画像符号化装置11により算出されたものが復号されて用いられる。
【0179】
LCU境界において、適応ループフィルタ部155は、ラインメモリ151に保持されているリコンストラクト画素を読み出し、読み出したリコンストラクト画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部155は、ループフィルタ131によるフィルタ処理後の画素を、演算部156に出力する。
【0180】
演算部156は、LCU境界において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155による各フィルタ処理後の画素に対して、例えば、加算などの演算処理を行う。なお、この演算処理には、加算だけでなく、例えば、減算、乗算などの処理も含むようにしてよい。そして、演算部156は、演算結果を後段に出力する。後段とは、図1の画像符号化装置11の場合、フレームメモリ32であり、図3の画像復号装置51の場合、画面並べ替えバッファ67およびフレームメモリ69である。
【0181】
[LCU境界における各フィルタの詳細]
図8は、LCU境界の画素の例を示している。図8の例において、丸は、インループフィルタ31に入力されるリコンストラクト画素を表し、図中下のラインがLCU境界を表している。
【0182】
LCU境界においては、デブロッキングVフィルタ部153は、図5を参照して上述したように、輝度信号の場合、次のLCUの4ライン分の画素が入力されるまで、LCU境界から1ライン目乃至3ライン目の画素の処理において待機状態となる。すなわち、デブロッキングVフィルタ部153が、LCU境界から4ライン目までしか処理することができないので、並列する他のフィルタ部は、デブロッキングVフィルタ部153に出力位相を揃えることが必要となる。
【0183】
したがって、適応オフセットフィルタ部154も、適応ループフィルタ部155も、LCU境界から4ライン目までの処理を完了させ、次のLCU境界から3ライン目の画素の処理において待機状態となる。
【0184】
そして、次のLCUの4ライン分の画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、LCU境界から3ライン目の画素から出力するように処理を開始する。
【0185】
その際、デブロッキングHフィルタ部152においては、LCU境界から1乃至3ライン目の画素がラインメモリ151に保持されている必要がある。デブロッキングVフィルタ部153においては、LCU境界から1乃至4ライン目の画素がラインメモリ151に保持されている必要がある。適応オフセットフィルタ部154においては、LCU境界から1乃至4ライン目の画素がラインメモリ151に保持されている必要がある。また、適応ループフィルタ部155においては、LCU境界から1乃至5ライン目の画素がラインメモリ151に保持されている必要がある。
【0186】
以上により、輝度信号の場合、ラインメモリ151には、LCU境界から1乃至5ライン目の5ライン分の画素が保持されていればよい。
【0187】
したがって、図5を参照して上述した従来の9ライン分の画素と比して、4ライン分もラインメモリ数を減らすことが可能である。
【0188】
なお、色差信号の場合、LCU境界においては、デブロッキングVフィルタ部153は、次のLCUの2ラインの画素が入力されるまで、LCU境界から1ライン目および2ライン目の画素の処理において待機状態となる。すなわち、デブロッキングVフィルタ部153は、LCU境界から3ライン目までしか処理することができないので、デブロッキングVフィルタ部153に出力位相を揃えることが必要となる。
【0189】
したがって、適応オフセットフィルタ部154も、適応ループフィルタ部155も、LCU境界から3ライン目までの処理を完了させ、次のLCU境界から2ライン目の画素の処理において待機状態となる。
【0190】
そして、次のLCUの2ライン分の画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155も、LCU境界から2ライン目の画素から出力するように処理を開始する。
【0191】
その際、デブロッキングHフィルタ部152においては、LCU境界から1および2ライン目の画素がラインメモリ151に保持されている必要がある。デブロッキングVフィルタ部153においては、LCU境界から1および2ライン目の画素がラインメモリ151に保持されている必要がある。適応オフセットフィルタ部154においては、LCU境界から1乃至3ライン目の画素がラインメモリ151に保持されている必要がある。また、適応ループフィルタ部155においては、例えば、色差が5タップの処理である場合、LCU境界から1乃至4ライン目の画素がラインメモリ151に保持されている必要がある。
【0192】
以上により、色差信号の場合の場合、ラインメモリ151には、LCU境界から1乃至4ライン目の4ライン分の画素が保持されていればよい。
【0193】
したがって、図5を参照して上述した従来の7ライン分の画素と比して、3ライン分もラインメモリ数を減らすことが可能である。
【0194】
[インループフィルタの詳細な構成例]
図9は、図7のインループフィルタのさらに詳細な構成例を示すブロック図である。図7のインループフィルタ31が、LCU境界の場合の構成を示しているのに対して、図9の例のインループフィルタ31は、LCU境界の場合も含む詳細な構成を示している。
【0195】
図9の例において、インループフィルタ31は、ラインメモリ151、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153を含むように構成されている。また、インループフィルタ31は、適応オフセットフィルタ部154、適応ループフィルタ部155、演算部156、および係数メモリ171を含むように構成されている。
【0196】
すなわち、インループフィルタ31は、係数メモリ171が追加されたのみ点が、図7のインループフィルタ31と異なっている。
【0197】
前段からの入力画素であるリコンストラクト画素は、ラインメモリ151、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、適応ループフィルタ部155、および演算部156に入力される。
【0198】
LCU境界において、ラインメモリ151は、輝度信号について、LCU境界から5ライン分のリコンストラクト画素を保持し、色差信号について、LCU境界から3ライン分のリコンストラクト画素を保持するように構成されている。
【0199】
通常(LCU境界以外)の処理においては、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、適応ループフィルタ部155は、前段から入力されるリコンストラクト画素に対して各フィルタ処理を施す。そして、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、適応ループフィルタ部155は、フィルタ処理後の画素を、演算部156に出力する。
【0200】
LCU境界においては、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、ラインメモリ151に保持されているリコンストラクト画素に対して各フィルタ処理を施す。そして、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、フィルタ処理後の画素を、演算部156に出力する。
【0201】
なお、上述したように、LCU境界において必要なラインの画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、出力位相を揃えて処理を再開する。
【0202】
演算部156は、減算部181−1乃至181−4、乗算部182−1乃至182−4、および加算部183により構成されており、各フィルタ処理後の出力Pを線形和で演算する。なお、演算部156における入力画素としては、通常、前段からのリコンストラクト画素が用いられるが、LCU境界においては、ラインメモリ151に保持されている画素が読み出されて用いられる。
【0203】
減算部181−1は、デブロッキングHフィルタ部152からのフィルタ後の画素PDB_Hから入力画素Pinを減算し、乗算部182−1に出力する。乗算部182−1は、減算部181−1からの入力(PDB_H−Pin)に対して、係数メモリ171からのデブロッキングHフィルタ部152に対応する係数CDB_Hを乗算し、加算部183に出力する。
【0204】
減算部181−2は、デブロッキングVフィルタ部153からのフィルタ後の画素PDB_Vから入力画素Pinを減算し、乗算部182−2に出力する。乗算部182−2は、減算部181−2からの入力(PDB_H−Pin)に対して、係数メモリ171からのデブロッキングVフィルタ部153に対応する係数CDB_Vを乗算し、加算部183に出力する。
【0205】
減算部181−3は、適応オフセットフィルタ部154からのフィルタ後の画素PSAOから入力画素Pinを減算し、乗算部182−3に出力する。乗算部182−3は、減算部181−3からの入力(PSAO−Pin)に対して、係数メモリ171からの適応オフセットフィルタ部154に対応する係数CSAOを乗算し、加算部183に出力する。
【0206】
減算部181−4は、適応ループフィルタ部155からのフィルタ後の画素PALFから入力画素Pinを減算し、乗算部182−4に出力する。乗算部182−4は、減算部181−3からの入力(PALF−Pin)に対して、係数メモリ171からの適応ループフィルタ部155に対応する係数CALFを乗算し、加算部183に出力する。
【0207】
加算部183は、入力画素Pinに、乗算部182−1乃至182−4からの乗算結果を、式(1)のように加算し、加算結果であるPを、フレームメモリに出力する。
【0208】
P = Pin+CDB_H×(PDB_H−Pin)+CDB_V×(PDB_V−Pin
+CSAO×(PSAO−Pin)+CALF×(PALF−Pin
・・・(1)
【0209】
係数メモリ171は、各フィルタに対応する係数を記憶している。例えば、係数メモリ171には、デブロッキングHフィルタ部152に対応する係数CDB_H、およびデブロッキングVフィルタ部153に対応する係数CDB_Vが記憶されている。また、係数メモリ171には、適応オフセットフィルタ部154に対応する係数CSAO、および適応ループフィルタ部155に対応する係数CALFが記憶されている。
【0210】
なお、これらの係数は、図示せぬ操作入力部を介してユーザにより設定可能にしてもよい。また、これらの係数は、画像の特性に応じて設定されてもよい。
【0211】
具体的には、ブロックノイズが多めの画像であるならば、例えば、デブロッキングHフィルタ部152に対応する係数CDB_H、およびデブロッキングVフィルタ部153に対応する係数CDB_Vが、他の係数よりも大きめに設定される。
【0212】
リンギングの多い画像であるならば、例えば、適応オフセットフィルタ部154に対応する係数CSAOが、他の係数よりも大きめに設定される。
【0213】
上述したような特性が特にない画像であるならば、例えば、適応ループフィルタ部155に対応する係数CALFが、他の係数よりも大きめに設定される。
【0214】
これにより、単に決まった割合で出力するよりも、画像の特性に応じたよりよい画像を得ることが可能になる。
【0215】
[インループフィルタの処理例]
次に、図10のフローチャートを参照して、図9のインループフィルタ31の処理について説明する。なお、図10の処理は、上述した図2のステップS22のインループフィルタ処理の例であって、図4のステップS58のインループフィルタ処理の例である。
【0216】
このインループフィルタ処理は、画面内の左上のLCUから処理が開始される。通常、LCUを構成するリコンストラクト画素は、前段からインループフィルタ31の各部に入力される。これに対応して、ステップS111乃至S114の処理は、前段から入力されるリコンストラクト画素を用いて並行で実行される。
【0217】
一方、LCU境界において、LCUを構成するリコンストラクト画素は、前段からラインメモリ151に入力される。これに対応して、ステップS111乃至S114の処理は、ラインメモリ151に保持されたリコンストラクト画素を用いて並行で実行される。なお、上述したように、LCU境界において必要なラインの画素が入力された場合、ステップS111乃至S114においては、出力位相を揃えて処理が開始される。
【0218】
また、各部への入力は、インループフィルタ31の各部においてそれぞれスイッチなどで切り替えられて用いられる。
【0219】
すなわち、デブロッキングHフィルタ部152は、ステップS111において、ラインメモリ151または前段からのリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施す。デブロッキングHフィルタ部152は、Hフィルタ111によるフィルタ処理後の画素を、演算部156に出力する。
【0220】
デブロッキングVフィルタ部153は、ステップS112において、ラインメモリ151または前段からのリコンストラクト画素に対して、Vフィルタ112によるフィルタ処理を施す。デブロッキングVフィルタ部153は、Vフィルタ112によるフィルタ処理後の画素を、演算部156に出力する。
【0221】
適応オフセットフィルタ部154は、ステップS113において、ラインメモリ151または前段からのリコンストラクト画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部154は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部156に出力する。
【0222】
適応ループフィルタ部155は、ステップS114において、ラインメモリ151または前段からのリコンストラクト画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部155は、ループフィルタ131によるフィルタ処理後の画素を、演算部156に出力する。
【0223】
ステップS115において、演算部156は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155による各フィルタ処理後の4つの結果を演算する。
【0224】
演算部156は、4つのフィルタ部による4つの結果を、例えば、上述した式(1)のような線形和で演算し、演算結果を後段に出力する。
【0225】
ステップS116において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、LCU内の最後の画素であるかを判定する。ステップS116において、LCU内の最後の画素ではないと判定された場合、処理は、ステップS111に戻り、それ以降の処理が繰り返される。
【0226】
ステップS116において、LCU内の最後の画素であると判定された場合、処理は、ステップS117に進む。ステップS117において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、画面内の最後の画素であるか否かを判定する。ステップS117において、画面内の最後の画素ではないと判定された場合、処理は、ステップS118に進む。
【0227】
ステップS118において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155は、次のLCUを選択し、処理は、ステップS111に戻る。すなわち、ステップS118で選択されたLCUに対して、ステップS111以降の処理が繰り返される。
【0228】
ステップS117において、画面内の最後の画素ではないと判定された場合、インループフィルタ処理は終了される。
【0229】
以上のように、インループフィルタ31を構成する4つのフィルタ処理の入力を、リコンストラクト画素として並列処理し、LCU境界においてはラインメモリを共有するようにしたので、図8を参照して上述したように、ラインメモリ数を減らすことが可能である。
【0230】
また、インループフィルタ31は、前段からの画素またはラインメモリからの画素のどちらの画素を入力するかを切り替えるだけで、通常の処理とLCU境界の処理の切り替えを行うというシンプルな構成である。これにより、ソフトウエアなどで、デブロッキングフィルタ、適応オフセットフィルタ、および適応オフセットフィルタがそれぞれフレーム処理をする場合の制御も容易に行うことができる。
【0231】
さらに、演算部156においては、画像の特性に応じて、各フィルタに対応する係数を設定するようにしたので、単に決まった割合で出力するよりも、画像の特性に応じたよりよい画像を得ることが可能になる。
【0232】
なお、上記説明においては、演算部156は、各フィルタ出力の線形和を演算し、それを出力する例を説明したが、各フィルタ出力の単純な平均であってもよいし、各フィルタ出力の加重平均を演算するようにしてもよい。この場合、演算部156は、例えば、各画素についての加重平均の重みを、各画素のCUに対する垂直境界までの距離および水平境界までの距離に応じて決定することができる。
【0233】
図11は、演算部156による加重平均のための重みの決定について説明するための説明図である。図11の例においては、垂直境界VzについてのデブロッキングHフィルタ部152の出力および水平境界HzについてのデブロッキングVフィルタ部153の出力との加重平均を例に説明する。
【0234】
注目画素Pzと最も近くの垂直境界Vzとの間の距離Dvは、3画素である。注目画素Pzと最も近くの水平境界Hzとの間の距離Dhは2画素である。距離Dhは、距離Dvよりも小さい。この場合、演算部156は、水平境界HzについてのデブロッキングVフィルタ部153の出力についての重みを、垂直境界VzについてのデブロッキングHフィルタ部152の出力についての重みよりも大きく決定し得る。図11の例の場合、垂直境界VzについてのHフィルタ出力PDB_Hと水平境界HzについてのVフィルタ出力PDB_Vとの間の重みの比は、2:3と決定されている。
【0235】
図11から理解されるように、2つのフィルタ出力の加重平均が計算される結果として、水平方向に沿ったフィルタタップと垂直方向に沿ったフィルタタップとを有する1つの2次元フィルタが適用された場合と同等の出力画素値を、各注目画素について得ることができる。それにより、垂直境界及び水平境界についてのフィルタリング処理を並列化させた場合にも、垂直境界及び水平境界の双方に現れるブロック歪みを適切に減少させることができる。
【0236】
なお、他の例として、インループフィルタ31は、Vフィルタ、Hフィルタ、および加重平均を同時に計算する1つの2次元フィルタを有していてもよい。ただし、その場合には、フィルタ係数を画素ごとに様々に変化させる必要性が生じるため、実装が極めて複雑となる。これに対し、図11の例のように2つの1次元フィルタを並列的に実行した後に加重平均を計算することとすれば、既存のデブロッキングフィルタの仕組みを活かしながら、2次元フィルタに実質的に等しい処理を容易に実現することができる。
【0237】
図12は、図11の例に従って決定される加重平均のための重みの一例について説明するための説明図である。図12の例においては、垂直境界と水平境界との1つの交点の周囲に位置する6×6=36個の画素(上述した重複位置の画素)が示されている。これら画素のうち、垂直境界及び水平境界から等距離に位置する画素については、フィルタ出力PDB_Hとフィルタ出力PDB_Vとの間の重みの比は1対1(又は2対2若しくは3対3)である。垂直境界により近い画素については、フィルタ出力PDB_Hへの重みの方がフィルタ出力PDB_Vへの重みよりも大きく決定されている(例えば、画素P1の重みの比はPDB_H:PDB_V=3:1)。一方、水平境界により近い画素については、フィルタ出力PDB_Hへの重みの方がフィルタ出力PDB_Vへの重みよりも小さく決定されている(例えば、画素P2の重みの比はPDB_H:PDB_V=1:3)。
【0238】
このように各画素と境界との間の距離に応じて加重平均の重みを変化させることで、ブロック歪みをより効果的に抑制して画質を改善することができる。
【0239】
なお、上述した重みは一例に過ぎない。例えば、演算部156は、各画素と境界との間の距離の代わりに(又はそれに加えて)、各画素に対応する垂直境界及び水平境界のエッジの強さに応じて、各画素についての加重平均の重みを決定してもよい。この場合、よりエッジの強い境界についてのフィルタ出力の重みが、よりエッジの弱い境界についてのフィルタ出力の重みよりも大きく決定され得る。このようにエッジの強さに応じて加重平均の重みを変化させることで、ブロック歪みが強く現れている境界について適応的にデブロックフィルタの効果を高めることができる。
【0240】
図13は、垂直境界および水平境界におけるフィルタリング要否の判定結果に応じた演算部156からの出力画素値を示している。
【0241】
演算部156は、例えば、デブロッキングHフィルタ部152およびデブロッキングVフィルタ部153のいずれか一方によりフィルタリングされる画素については、実際にフィルタリングを行ったフィルタ部からの出力を選択する。また、演算部156は、デブロッキングHフィルタ部152およびデブロッキングVフィルタ部153のいずれによってもフィルタリングされない画素については、インループフィルタ31への入力画素値をそのまま出力する。
【0242】
以上の加重平均は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155の4つのフィルタについても適用することができる。
【0243】
例えば、垂直境界および水平境界においては、適応オフセットフィルタ部154および適応ループフィルタ部155への出力の加重が1とされ、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153の出力については上記加重平均が採用される。これにより、ブロック歪みが最適に除去された画像を得ることができる。
【0244】
なお、上記説明においては、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および適応ループフィルタ部155が並列に構成されるインループフィルタ31の例について説明した。
【0245】
しかしながら、インループフィルタ31の構成は、上述した4並列に限らず、図14に示されるように構成することも可能である。
【0246】
図14の例においては、インループフィルタ31を構成し得る並列処理のパターンが示されている。左から順に図14を説明する。
【0247】
インループフィルタ31は、図7を参照して上述したように、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)からなる4並列で構成される。
【0248】
この場合、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)はリコンストラクト画素を用いて処理を行う。そして、4つのフィルタ結果が位相を合わせて、演算部156に出力される。
【0249】
インループフィルタ31は、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、および適応オフセットフィルタ(SAO)→適応ループフィルタ(ALF)からなる3並列で構成される。なお、図14における→は、直列処理を表し、適応オフセットフィルタ(SAO)と適応ループフィルタ(ALF)は、従来のように直列で処理される。
【0250】
この場合、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、および適応オフセットフィルタ(SAO)はリコンストラクト画素を用いて処理を行う。適応ループフィルタ(ALF)は、適応オフセットフィルタ(SAO)によるフィルタ後の画素を用いて処理を行う。そして、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、および適応ループフィルタ(ALF)からの3つのフィルタ結果が位相を合わせて、演算部156に出力される。なお、この3並列で構成されるインループフィルタ31の構成例は、図15を参照して後述される。
【0251】
インループフィルタ31は、デブロッキングHフィルタ(D-H)→デブロッキングVフィルタ(D-V)、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)からなる3並列で構成される。なお、この場合、デブロッキングHフィルタ(D-H)およびデブロッキングVフィルタ(D-V)は、従来のように直列で処理される。
【0252】
また、この場合、デブロッキングHフィルタ(D-H)、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)はリコンストラクト画素を用いて処理を行う。デブロッキングVフィルタ(D-V)は、デブロッキングHフィルタ(D-H)によるフィルタ後の画素を用いて処理を行う。そして、デブロッキングVフィルタ(D-V)、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)からの3つのフィルタ結果が位相を合わせて、演算部156に出力される。
【0253】
インループフィルタ31は、デブロッキングHフィルタ(D-H)→デブロッキングVフィルタ(D-V)、並びに、適応オフセットフィルタ(SAO)→適応ループフィルタ(ALF)からなる2並列で構成される。この場合、デブロッキングHフィルタ(D-H)およびデブロッキングVフィルタ(D-V)は、従来のように直列で処理され、適応オフセットフィルタ(SAO)と適応ループフィルタ(ALF)は、従来のように直列で処理される。
【0254】
また、この場合、デブロッキングHフィルタ(D-H)、および適応オフセットフィルタ(SAO)はリコンストラクト画素を用いて処理を行う。デブロッキングVフィルタ(D-V)は、デブロッキングHフィルタ(D-H)によるフィルタ後の画素を用いて処理を行い、適応ループフィルタ(ALF)は、適応オフセットフィルタ(SAO)によるフィルタ後の画素を用いて処理を行う。そして、デブロッキングVフィルタ(D-V)、および適応ループフィルタ(ALF)からの2つのフィルタ結果が位相を合わせて、演算部156に出力される。
【0255】
インループフィルタ31は、デブロッキングHフィルタ(D-H)→デブロッキングVフィルタ(D-V)からの画素を入力する適応オフセットフィルタ(SAO)および適応ループフィルタ(ALF)からなる2並列で構成される。この場合、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、および適応オフセットフィルタ(SAO)は、従来のように直列で処理される。
【0256】
また、この場合、デブロッキングHフィルタ(D-H)、および適応ループフィルタ(ALF)はリコンストラクト画素を用いて処理を行う。デブロッキングVフィルタ(D-V)は、デブロッキングHフィルタ(D-H)によるフィルタ後の画素を用いて処理を行い、適応オフセットフィルタ(SAO)は、デブロッキングVフィルタ(D-V)によるフィルタ後の画素を用いて処理を行う。そして、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)からの2つのフィルタ結果が位相を合わせて、演算部156に出力される。
【0257】
インループフィルタ31は、デブロッキングフィルタ(D-H)→デブロッキングVフィルタ(D-V)→適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)からなる2並列で構成される。この場合、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)は、従来のように直列で処理される。
【0258】
また、この場合、デブロッキングHフィルタ(D-H)はリコンストラクト画素を用いて処理を行い、デブロッキングVフィルタ(D-V)は、デブロッキングHフィルタ(D-H)によるフィルタ後の画素を用いて処理を行う。適応オフセットフィルタ(SAO)および適応ループフィルタ(ALF)は、デブロッキングVフィルタ(D-V)によるフィルタ後の画素を用いて処理を行う。そして、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)からの2つのフィルタ結果が位相を合わせて、演算部156に出力される。
【0259】
なお、図中、左から5番目と6番目の構成の違いは、5番目の適応ループフィルタ(ALF)に入力される画素がリコンストラクト画素であるのに対して、6番目の適応ループフィルタ(ALF)に入力される画素がデブロッキングフィルタ後の画素であることである。
【0260】
また、図14の例において、適応オフセットフィルタ(SAO)、および適応ループフィルタ(ALF)が直列に処理されるもの(図中、左から2番目と4番目の構成)については、適応ループフィルタ(ALF)を演算部156の後に配置することも可能である。
【0261】
左から2番目の3並列の構成において、適応ループフィルタ(ALF)を演算部156の後に配置する場合、デブロッキングHフィルタ(D-H)、デブロッキングVフィルタ(D-V)、および適応オフセットフィルタ(SAO)からの3つのフィルタ結果が位相を合わせて、演算部156に出力される。そして、適応ループフィルタ(ALF)は、演算部156による演算後の画素を用いて処理を行い、後段に出力する。この場合の例としては、図19を参照して後述される。
【0262】
左から4番目の2並列の構成において、適応ループフィルタ(ALF)を演算部156の後に配置する場合、デブロッキングVフィルタ(D-V)、および適応オフセットフィルタ(SAO)からの2つのフィルタ結果が位相を合わせて、演算部156に出力される。そして、適応ループフィルタ(ALF)は、演算部156による演算後の画素を用いて処理を行い、後段に出力する。
【0263】
<4.第2の実施の形態>
[インループフィルタの詳細な構成例]
図15は、インループフィルタの構成例を示すブロック図である。図15に示されるインループフィルタ31は、図14の左から2番目に示された3並列の場合の構成例である。
【0264】
図15のインループフィルタ31は、適応オフセットフィルタ部154、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153を含む点が、図9のインループフィルタ31と共通している。
【0265】
図15のインループフィルタ31は、ラインメモリ151、適応ループフィルタ部155、演算部156、および係数メモリ171の代わりに、ラインメモリ201、適応ループフィルタ部202、演算部203、および係数メモリ204を備える点が、図9のインループフィルタ31と異なる。
【0266】
前段からの入力画素であるリコンストラクト画素は、ラインメモリ201、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、適応オフセットフィルタ部154、および演算部203に入力される。
【0267】
LCU境界において、ラインメモリ201は、輝度信号について、LCU境界から4ライン分のリコンストラクト画素を保持し、色差信号について、LCU境界から3ライン分のリコンストラクト画素を保持するように構成されている。
【0268】
LCU境界において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、リコンストラクト画素が保持されたラインメモリ201を共有している。
【0269】
通常(LCU境界以外)の処理においては、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、前段から入力されるリコンストラクト画素に対して、並列に各フィルタ処理を行う。そして、デブロッキングHフィルタ部152、およびデブロッキングVフィルタ部153は、演算部203にフィルタ処理後の画素をそれぞれ出力する。また、適応オフセットフィルタ部154は、適応ループフィルタ部202にフィルタ処理後の画素を出力する。
【0270】
LCU境界においては、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、ラインメモリ201に保持されたリコンストラクト画素に対して、並列に各フィルタ処理を行う。そして、デブロッキングHフィルタ部152、およびデブロッキングVフィルタ部153は、演算部203にフィルタ処理後の画素をそれぞれ出力する。また、適応オフセットフィルタ部154は、適応ループフィルタ部202にフィルタ処理後の画素を出力する。
【0271】
なお、LCU境界において必要なラインの画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応ループフィルタ部202は、出力位相を揃えて処理を再開する。このため、適応オフセットフィルタ部154は、適応ループフィルタ部202が他のフィルタ部と出力位相を揃えられるような出力位相で処理を再開する。
【0272】
適応ループフィルタ部202は、適応オフセットフィルタ部154と演算部203の間に設けられ、図6のループフィルタ131およびラインメモリ211を含むように構成される。
【0273】
LCU境界において、ラインメモリ211は、輝度信号について、LCU境界から4ライン分の適応オフセットフィルタ後の画素を保持し、色差信号について、LCU境界から4ライン分の適応オフセットフィルタ後画素を保持するように構成されている。
【0274】
通常、適応ループフィルタ部202は、適応オフセットフィルタ部154からの画素に対して、ブロックベースでクラス分類を行い、ループフィルタ131による適応ループフィルタ処理を行う。LCU境界において、適応ループフィルタ部202は、適応オフセットフィルタ部154からの画素をラインメモリ211に一旦保持する。そして、適応ループフィルタ部202は、ラインメモリ211の画素に対して、ブロックベースでクラス分類を行い、ループフィルタ131による適応ループフィルタ処理を行う。適応ループフィルタ部202は、ループフィルタ131によるフィルタ処理後の画素を、演算部203に出力する。
【0275】
演算部203は、減算部181−1乃至181−3、乗算部182−1乃至182−3、および加算部183により構成されており、各フィルタ処理後の出力Pを線形和で演算する。なお、演算部203における入力画素としては、通常、前段からのリコンストラクト画素が用いられるが、LCU境界においては、ラインメモリ201に保持されている画素が読み出されて用いられる。
【0276】
減算部181−1は、デブロッキングHフィルタ部152からのフィルタ後の画素PDB_Hから入力画素Pinを減算し、乗算部182−1に出力する。乗算部182−1は、減算部181−1からの入力(PDB_H−Pin)に対して、係数メモリ204からのデブロッキングHフィルタ部152に対応する係数CDB_Hを乗算し、加算部183に出力する。
【0277】
減算部181−2は、デブロッキングVフィルタ部153からのフィルタ後の画素PDB_Vから入力画素Pinを減算し、乗算部182−2に出力する。乗算部182−2は、減算部181−2からの入力(PDB_H−Pin)に対して、係数メモリ204からのデブロッキングVフィルタ部153に対応する係数CDB_Vを乗算し、加算部183に出力する。
【0278】
減算部181−3は、適応ループフィルタ部202からのフィルタ後の画素PALFから入力画素Pinを減算し、乗算部182−3に出力する。乗算部182−3は、減算部181−3からの入力(PALF−Pin)に対して、係数メモリ204からの適応オフセットフィルタ部154および適応ループフィルタ部202に対応する係数CSAO/ALFを乗算し、加算部183に出力する。
【0279】
加算部183は、入力画素Pinに、乗算部182−1乃至182−3からの乗算結果を加算し、加算結果であるPを、フレームメモリに出力する。
【0280】
係数メモリ204は、各フィルタに対応する係数を記憶している。例えば、係数メモリ204には、デブロッキングHフィルタ部152に対応する係数CDB_H、およびデブロッキングVフィルタ部153に対応する係数CDB_Vが記憶されている。また、係数メモリ204には、適応オフセットフィルタ部154および適応ループフィルタ部202に対応する係数CSAO/ALFが記憶されている。なお、これらの係数も、係数メモリ204における係数と同様に、図示せぬ操作入力部を介してユーザにより設定可能である。
【0281】
ここで、図16および図17を参照して、図15の例のインループフィルタ31の場合に必要なラインメモリ数について説明する。図16および図17の例において、丸は、画素を表し、図中下のラインがLCU境界を表している。
【0282】
図16は、輝度信号の場合のLCU境界の画素の例を示している。図16の輝度信号の場合、LCU境界から1ライン目乃至4ライン目の丸は、未デブロッキングV画素であって、LCU境界においてラインメモリ201への保持が必要な画素である。LCU境界から2ライン目乃至5ライン目の丸は、オフセットフィルタ(SAO)後画素であって、ラインメモリ211への保持が必要な画素を表している。LCU境界から4ライン目より上の丸は、ループフィルタ(ALF)後画素を表している。
【0283】
LCU境界においては、デブロッキングVフィルタ部153は、図5を参照して上述したように、輝度信号の場合、次のLCUの4ラインの画素が入力されるまで、LCU境界から1ライン目乃至3ライン目の画素の処理において待機状態となる。すなわち、デブロッキングVフィルタ部153が、LCU境界から4ライン目までしか処理することができないので、デブロッキングHフィルタ部152と適応ループフィルタ部202は、デブロッキングVフィルタ部153に出力位相を揃えることが必要となる。
【0284】
ここで、適応ループフィルタ部202は、適応オフセットフィルタ部154によるフィルタ(SAO)後の画素を処理する。したがって、適応ループフィルタ部202が3ライン目から処理できるように、適応オフセットフィルタ部154は、LCU境界から2ライン目までの処理を完了させる。そして、適応オフセットフィルタ部154は、図16のSAO後画素に示されるように、次のLCU境界から1ライン目の画素の処理において待機状態となる。
【0285】
そして、次のLCUの4ラインの画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153は、LCU境界から3ライン目の画素から出力するように処理を開始する。また、適応オフセットフィルタ部154は、LCU境界から1ライン目の画素から出力するように処理を開始する。
【0286】
その際、デブロッキングHフィルタ部152においては、LCU境界から1乃至3ライン目の画素がラインメモリ201に保持されている必要がある。デブロッキングVフィルタ部153においては、LCU境界から1乃至4ライン目の画素がラインメモリ201に保持されている必要がある。適応オフセットフィルタ部154においては、LCU境界から1および2ライン目の画素がラインメモリ201に保持されている必要がある。
【0287】
したがって、輝度信号の場合、ラインメモリ201には、LCU境界から1乃至4ライン目の4ライン分の画素が保持されていればよい。
【0288】
一方、上述したように、適応オフセットフィルタ部154においては、LCU境界から2ライン目までは処理がなされる。よって、適応ループフィルタ部202は、LCU境界から4ライン目までの処理を完了させ、次のLCU境界から3ライン目の画素の処理において待機状態となる。
【0289】
そして、処理が再開されたとき、適応ループフィルタ部202には、適応オフセットフィルタ部154によるフィルタ処理後のLCU境界から1ライン目の画素が入力されるので、適応ループフィルタ部202は、LCU境界から3ライン目の画素から出力する。
【0290】
その際、適応ループフィルタ部202においては、LCU境界から2乃至5ライン目の4ライン分の画素がラインメモリ211に保持されている必要がある。
【0291】
以上により、図15のインループフィルタ31においては、輝度信号の場合には、4ライン分のラインメモリ201および4ライン分のラインメモリ211が必要となり、従来の9ライン分の画素と比して、1ライン分のラインメモリ数を減らすことが可能である。
【0292】
図17は、色差信号の場合のLCU境界の画素の例を示している。図17の色差信号の場合、LCU境界から1ライン目乃至3ライン目の丸は、未デブロッキングV画素であって、LCU境界においてラインメモリ201への保持が必要な画素を表している。LCU境界から2ライン目乃至5ライン目の丸は、オフセットフィルタ(SAO)後画素であって、ラインメモリ211への保持が必要な画素を表している。LCU境界から4ライン目より上の丸は、ループフィルタ(ALF)後画素を表している。
【0293】
色差信号の場合のLCU境界においては、デブロッキングVフィルタ部153は、次のLCUの2ライン分の画素が入力されるまで、LCU境界から1ライン目および2ライン目の画素の処理において待機状態となる。
【0294】
このため、適応オフセットフィルタ部154は、LCU境界から2ライン目までの処理しか完了できないので、適応ループフィルタ部202は、LCU境界から4ライン目までの処理しか完了できず、LCU境界から3ライン目の画素の処理において待機状態となる。
【0295】
すなわち、デブロッキングHフィルタ部152、およびデブロッキングVフィルタ部153は、LCU境界から2ライン目の画素から処理可能である。しかしながら、適応ループフィルタ部202がLCU境界から3ライン目からしか処理することができないので、適応ループフィルタ部202に出力位相を揃えることが必要となる。
【0296】
したがって、次のLCUの2ラインの画素が入力されると、デブロッキングHフィルタ部152、およびデブロッキングVフィルタ部153は、LCU境界から3ライン目の画素から出力するように処理を開始する。また、適応オフセットフィルタ部154は、LCU境界から1ライン目の画素から出力するように処理を開始する。
【0297】
その際、デブロッキングHフィルタ部152においては、LCU境界から1および3ライン目の画素がラインメモリ201に保持されている必要がある。デブロッキングVフィルタ部153においては、LCU境界から1および3ライン目の画素がラインメモリ201に保持されている必要がある。適応オフセットフィルタ部154においては、LCU境界から1および2ライン目の画素がラインメモリ201に保持されている必要がある。
【0298】
したがって、色差信号の場合の場合、ラインメモリ201には、LCU境界から1乃至3ライン目の3ライン分の画素が保持されていればよい。
【0299】
一方、処理が再開されたとき、適応ループフィルタ部202には、適応オフセットフィルタ部154によるフィルタ処理後のLCU境界から1ライン目の画素が入力されるので、LCU境界から3ライン目の画素から出力することになる。
【0300】
その際、適応ループフィルタ部202においては、LCU境界から2乃至5ライン目の4ライン分の画素がラインメモリ211に保持されている必要がある。
【0301】
以上により、図15のインループフィルタ31においては、色差信号の場合には、3ライン分のラインメモリ201および4ライン分のラインメモリ211が必要となる。これは、従来の7ライン分の画素と同等のラインメモリであるが、輝度信号の場合にラインメモリ数が減るので、図15のインループフィルタ31の場合も、総合的に見て効果が得られる。
【0302】
[インループフィルタの処理例]
次に、図18を参照して、図15のインループフィルタ31の処理について説明する。なお、図10の処理は、上述した図2のステップS22のインループフィルタ処理の例であって、図4のステップS58のインループフィルタ処理の例である。
【0303】
このインループフィルタ処理は、画面内の左上のLCUから処理が開始される。通常、LCUを構成するリコンストラクト画素は、前段からインループフィルタ31の各部に入力される。これに対応して、ステップS201乃至S203の処理は、前段から入力されるリコンストラクト画素を用いて並行で実行される。
【0304】
一方、LCU境界において、LCUを構成するリコンストラクト画素は、前段からラインメモリ201に入力される。これに対応して、ステップS201乃至S203の処理は、ラインメモリ201に保持されたリコンストラクト画素を用いて並行で実行される。なお、上述したように、LCU境界において必要なラインの画素が入力された場合、ステップS201、S202、およびS204においては、出力位相を揃えて処理が開始される。そして、ステップS203においては、ステップS201、S202、およびS204において出力位相が揃うようなタイミングで処理が開始される。
【0305】
また、各部への入力は、インループフィルタ31の各部においてそれぞれスイッチなどで切り替えられて用いられる。
【0306】
すなわち、デブロッキングHフィルタ部152は、ステップS201において、ラインメモリ201または前段からのリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施す。デブロッキングHフィルタ部152は、Hフィルタ111によるフィルタ処理後の画素を、演算部203に出力する。
【0307】
デブロッキングVフィルタ部153は、ステップS202において、ラインメモリ201または前段からのリコンストラクト画素に対して、Vフィルタ112によるフィルタ処理を施す。デブロッキングVフィルタ部153は、Vフィルタ112によるフィルタ処理後の画素を、演算部203に出力する。
【0308】
適応オフセットフィルタ部154は、ステップS203において、ラインメモリ201または前段からのリコンストラクト画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部154は、オフセットフィルタ121によるフィルタ処理後の画素を、適応ループフィルタ部202に出力する。
【0309】
適応ループフィルタ部202は、ステップS204において、ラインメモリ211または適応オフセットフィルタ部154からのオフセットフィルタ121済みの画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部202は、ループフィルタ131によるフィルタ処理後の画素を、演算部203に出力する。
【0310】
ステップS205において、演算部203は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応ループフィルタ部202による各フィルタ処理後の3つの結果を演算する。
【0311】
演算部203は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応ループフィルタ部202による3つの結果を、例えば、線形和で演算し、演算結果を後段に出力する。
【0312】
ステップS206において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応ループフィルタ部202は、LCU内の最後の画素であるかを判定する。ステップS206において、LCU内の最後の画素ではないと判定された場合、処理は、ステップS201に戻り、それ以降の処理が繰り返される。
【0313】
ステップS206において、LCU内の最後の画素であると判定された場合、処理は、ステップS207に進む。ステップS207において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応ループフィルタ部202は、画面内の最後の画素であるか否かを判定する。ステップS207において、画面内の最後の画素ではないと判定された場合、処理は、ステップS208に進む。
【0314】
ステップS208において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応ループフィルタ部202は、次のLCUを選択し、処理は、ステップS201に戻る。すなわち、ステップS208で選択されたLCUに対して、ステップS201以降の処理が繰り返される。
【0315】
ステップS207において、画面内の最後の画素ではないと判定された場合、インループフィルタ処理は終了される。
【0316】
以上のように、図15の例の場合も、インループフィルタ31を構成する3つのフィルタ処理の入力を、リコンストラクト画素として並列処理し、LCU境界においてはラインメモリを共有するようにしたので、ラインメモリ数を減らすことが可能である。
【0317】
また、インループフィルタ31は、前段からの画素またはラインメモリからの画素のどちらの画素を入力するかを切り替えるだけで、通常の処理とLCU境界の処理の切り替えを行うというシンプルな構成である。これにより、ソフトウエアなどで、デブロッキングフィルタ、適応オフセットフィルタ、および適応オフセットフィルタがそれぞれフレーム処理をする場合の制御も容易に行うことができる。
【0318】
なお、図15の例においては、適応ループフィルタ部202を演算部203の前に配置する例を説明したが、図14を参照して上述したように、演算部203による加算後に、適応ループフィルタ部202を構成することも可能である。加算後に適応ループフィルタを構成するインループフィルタ31の例を、次の図19を参照して説明する。
【0319】
<5.第3の実施の形態>
[インループフィルタの詳細な構成例]
図19は、インループフィルタの構成例を示すブロック図である。図19に示されるインループフィルタ31は、加算後に適応ループフィルタを構成する場合の例である。
【0320】
図19のインループフィルタ31は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154を含む点が、図15のインループフィルタ31と共通している。図19のインループフィルタ31は、ラインメモリ201、演算部203、および係数メモリ204を含む点が、図15のインループフィルタ31と共通している。
【0321】
これに対して、図19のインループフィルタ31は、適応ループフィルタ部202の代わりに、適応ループフィルタ部221を備える点が、図15のインループフィルタ31と異なる。
【0322】
すなわち、適応オフセットフィルタ部154は、デブロッキングHフィルタ部152、およびデブロッキングVフィルタ部153と同様に、フィルタ処理後の画素を、演算部203に出力する。
【0323】
演算部203の減算部181−3は、適応オフセットフィルタ部154からのフィルタ後の画素PSAOから入力画素Pinを減算し、乗算部182−3に出力する。乗算部182−3は、減算部181−3からの入力(PSAO−Pin)に対して、係数メモリ204からの適応オフセットフィルタ部154に対応する係数CSAOを乗算し、加算部183に出力する。なお、図19の例においては、係数メモリ204には、適応オフセットフィルタ部154に対応する係数CSAOが記憶されている。
【0324】
加算部183は、入力画素Pinに、乗算部182−1乃至182−3からの乗算結果を加算し、加算結果であるPを、適応ループフィルタ部221に出力する。
【0325】
適応ループフィルタ部221は、演算部203の後段に設けられ、図15の適応ループフィルタ部202と同様に、図6のループフィルタ131およびラインメモリ211を含むように構成される。
【0326】
LCU境界において、ラインメモリ211は、輝度信号について、LCU境界から4ライン分の適応オフセットフィルタ後の画素を保持し、色差信号について、LCU境界から4ライン分の適応オフセットフィルタ後画素を保持するように構成されている。
【0327】
通常、適応ループフィルタ部221は、加算部183からの画素に対して、ブロックベースでクラス分類を行い、ループフィルタ131による適応ループフィルタ処理を行う。LCU境界において、適応ループフィルタ部221は、加算部183からの画素をラインメモリ211に一旦保持し、ラインメモリ211の画素に対して、ブロックベースでクラス分類を行い、ループフィルタ131による適応ループフィルタ処理を行う。適応ループフィルタ部221は、ループフィルタ131によるフィルタ処理後の画素を、後段のフレームメモリなどに出力する。
【0328】
ここで、図19の例のインループフィルタ31の場合に必要なラインメモリ数について説明する。
【0329】
LCU境界においては、デブロッキングVフィルタ部153は、図5を参照して上述したように、輝度信号の場合、次のLCUの4ラインの画素が入力されるまで、LCU境界から1ライン目乃至3ライン目の画素の処理において待機状態となる。すなわち、デブロッキングVフィルタ部153が、LCU境界から4ライン目までしか処理することができないので、並列する他のフィルタ部は、デブロッキングVフィルタ部153に出力位相を揃えることが必要となる。
【0330】
したがって、適応オフセットフィルタ部154も、LCU境界から4ライン目までの処理を完了し、次のLCU境界から3ライン目の画素の処理において待機状態となる。
【0331】
そして、次のLCUの4ラインの画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、LCU境界から3ライン目の画素から出力するように処理を開始する。
【0332】
その際、デブロッキングHフィルタ部152においては、LCU境界から1乃至3ライン目の画素がラインメモリ201に保持されている必要がある。デブロッキングVフィルタ部153においては、LCU境界から1乃至4ライン目の画素がラインメモリ201に保持されている必要がある。適応オフセットフィルタ部154においては、LCU境界から1乃至4ライン目の画素がラインメモリ201に保持されている必要がある。
【0333】
したがって、輝度信号の場合、ラインメモリ201には、LCU境界から1乃至4ライン目の4ライン分の画素が保持されていればよい。
【0334】
一方、適応ループフィルタ部202は、適応オフセットフィルタ部154によるフィルタ処理後の画素を処理するので、LCU境界から6ライン目までの処理を完了し、次のLCU境界から5ライン目の画素の処理において待機状態となる。
【0335】
そして、処理が再開されたとき、適応ループフィルタ部202には、適応オフセットフィルタ部154によるフィルタ処理後のLCU境界から3ライン目の画素が入力されるので、LCU境界から5ライン目の画素から出力することになる。
【0336】
その際、適応ループフィルタ部202においては、LCU境界から4乃至7ライン目の4ライン分の画素がラインメモリ211に保持されている必要がある。
【0337】
以上により、図15のインループフィルタ31においては、4ライン分のラインメモリ201および4ライン分のラインメモリ211が必要となり、図5を参照して上述した従来の9ライン分の画素と比して、1ライン分のラインメモリ数を減らすことが可能である。
【0338】
なお、色差信号の場合、LCU境界においては、デブロッキングVフィルタ部153は、次のLCUの2ライン分の画素が入力されるまで、LCU境界から1ライン目および2ライン目の画素の処理において待機状態となる。すなわち、デブロッキングVフィルタ部153は、LCU境界から3ライン目までしか処理することができないので、並列する他のフィルタ部は、デブロッキングVフィルタ部153に出力位相を揃えることが必要となる。
【0339】
したがって、適応オフセットフィルタ部154は、LCU境界から3ライン目までの処理を完了させ、次のLCU境界から2ライン目の画素の処理において待機状態となる。
【0340】
そして、次のLCUの2ラインの画素が入力されると、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、LCU境界から2ライン目の画素から出力するように処理を開始する。
【0341】
その際、デブロッキングHフィルタ部152においては、LCU境界から1および2ライン目の画素がラインメモリ201に保持されている必要がある。デブロッキングVフィルタ部153においては、LCU境界から1および2ライン目の画素がラインメモリ201に保持されている必要がある。適応オフセットフィルタ部154においては、LCU境界から1および2ライン目の画素がラインメモリ201に保持されている必要がある。
【0342】
したがって、色差信号の場合の場合、ラインメモリ201には、LCU境界から1乃至2ライン目の2ライン分の画素が保持されていればよい。
【0343】
一方、適応ループフィルタ部202は、適応オフセットフィルタ部154によるフィルタ処理後の画素を処理するので、LCU境界から5ライン目までの処理が完了し、次のLCU境界から4ライン目の画素の処理において待機状態となる。
【0344】
そして、処理が再開されたとき、適応ループフィルタ部202には、適応オフセットフィルタ部154によるフィルタ処理後のLCU境界から2ライン目の画素が入力されるので、LCU境界から4ライン目の画素から出力することになる。
【0345】
その際、適応ループフィルタ部202においては、LCU境界から3乃至6ライン目の4ライン分の画素がラインメモリ211に保持されている必要がある。
【0346】
以上により、図15のインループフィルタ31においては、2ライン分のラインメモリ201および4ライン分のラインメモリ211が必要となり、図5を参照して上述した従来の7ライン分の画素と比して、1ライン分のラインメモリ数を減らすことが可能である。
【0347】
すなわち、図15のインループフィルタ31においては、色差信号の場合、図5を参照して上述した従来の7ライン分の画素と比して、1ライン分ラインメモリ数を減らすことが可能である。
【0348】
[インループフィルタの処理例]
次に、図20を参照して、図19のインループフィルタ31の処理について説明する。なお、図20の処理は、上述した図2のステップS22のインループフィルタ処理の例であって、図4のステップS58のインループフィルタ処理の例である。
【0349】
このインループフィルタ処理は、画面内の左上のLCUから処理が開始される。通常、LCUを構成するリコンストラクト画素は、前段からインループフィルタ31の各部に入力される。これに対応して、ステップS231乃至S233の処理は、前段から入力されるリコンストラクト画素を用いて並行で実行される。
【0350】
一方、LCU境界において、LCUを構成するリコンストラクト画素は、前段からラインメモリ201に入力される。これに対応して、ステップS231乃至S233の処理は、ラインメモリ201に保持されたリコンストラクト画素を用いて並行で実行される。なお、上述したように、LCU境界において必要なラインの画素が入力された場合、ステップS231乃至S233においては、出力位相を揃えて処理が開始される。
【0351】
また、各部への入力は、インループフィルタ31の各部においてそれぞれスイッチなどで切り替えられて用いられる。
【0352】
すなわち、デブロッキングHフィルタ部152は、ステップS231において、ラインメモリ201または前段からのリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施す。デブロッキングHフィルタ部152は、Hフィルタ111によるフィルタ処理後の画素を、演算部203に出力する。
【0353】
デブロッキングVフィルタ部153は、ステップS232において、ラインメモリ201または前段からのリコンストラクト画素に対して、Vフィルタ112によるフィルタ処理を施す。デブロッキングVフィルタ部153は、Vフィルタ112によるフィルタ処理後の画素を、演算部203に出力する。
【0354】
適応オフセットフィルタ部154は、ステップS233において、ラインメモリ201または前段からのリコンストラクト画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部154は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部203に出力する。
【0355】
ステップS234において、演算部203は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154による各フィルタ処理後の3つの結果を演算する。
【0356】
演算部203は、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154による3つの結果を、例えば、線形和で演算し、演算結果を、適応ループフィルタ部221に出力する。
【0357】
ステップS235において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、LCU内の最後の画素であるかを判定する。ステップS235において、LCU内の最後の画素ではないと判定された場合、処理は、ステップS231に戻り、それ以降の処理が繰り返される。
【0358】
ステップS235において、LCU内の最後の画素であると判定された場合、処理は、ステップS236に進む。ステップS236において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、画面内の最後の画素であるか否かを判定する。ステップS236において、画面内の最後の画素ではないと判定された場合、処理は、ステップS237に進む。
【0359】
ステップS237において、デブロッキングHフィルタ部152、デブロッキングVフィルタ部153、および適応オフセットフィルタ部154は、次のLCUを選択し、処理は、ステップS231に戻る。すなわち、ステップS237で選択されたLCUに対して、ステップS231以降の処理が繰り返される。
【0360】
ステップS237において、画面内の最後の画素であると判定された場合、処理は、ステップS238に進む。
【0361】
適応ループフィルタ部221は、ステップS238において、ラインメモリ211または演算部203(加算部183)からのオフセットフィルタ121済みの画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部221は、ループフィルタ131によるフィルタ処理後の画素を、後段のフレームメモリなどに出力する。
【0362】
ステップS239において、適応ループフィルタ部221は、LCU内の最後の画素であるかを判定する。ステップS239において、LCU内の最後の画素ではないと判定された場合、処理は、ステップS238に戻り、それ以降の処理が繰り返される。
【0363】
ステップS239において、LCU内の最後の画素であると判定された場合、処理は、ステップS240に進む。ステップS240において、適応ループフィルタ部221は、画面内の最後の画素であるか否かを判定する。ステップS240において、画面内の最後の画素ではないと判定された場合、処理は、ステップS241に進む。
【0364】
ステップS241において、適応ループフィルタ部221は、次のLCUを選択し、処理は、ステップS238に戻る。すなわち、ステップS241で選択されたLCUに対して、ステップS238以降の処理が繰り返される。
【0365】
ステップS240において、画面内の最後の画素であると判定された場合、図20のインループフィルタ処理は終了される。
【0366】
以上のように、図19の例の場合も、インループフィルタ31を構成する3つのフィルタ処理の入力を、リコンストラクト画素として並列処理し、LCU境界においてはラインメモリを共有するようにしたので、ラインメモリ数を減らすことが可能である。
【0367】
また、インループフィルタ31は、前段からの画素またはラインメモリからの画素のどちらの画素を入力するかを切り替えるだけで、通常の処理とLCU境界の処理の切り替えを行うというシンプルな構成である。これにより、ソフトウエアなどで、デブロッキングフィルタ、適応オフセットフィルタ、および適応オフセットフィルタがそれぞれフレーム処理をする場合の制御も容易に行うことができる。
【0368】
<5.第3の実施の形態>
[インループフィルタの他の構成例]
図21は、インループフィルタの構成例を示すブロック図である。図21に示されるインループフィルタ31は、図14の左から6番目に示された2並列の場合の構成例である。
【0369】
図21のインループフィルタ31は、図6のデブロッキングフィルタ部101、並びに、ラインメモリ251、適応オフセットフィルタ部252、適応ループフィルタ部253、演算部254、および係数メモリ255を含むように構成されている。
【0370】
前段からの入力画素であるリコンストラクト画素は、デブロッキングフィルタ部101に入力される。デブロッキングフィルタ部101は、図6を参照して上述したように、H(水平)フィルタ111、V(垂直)フィルタ112、およびラインメモリ113を含むように構成されている。ラインメモリ113は、LCU境界において、輝度(Y)について4ライン分の画素を保持し、色差(C)について2ライン分の画素を保持する。
【0371】
デブロッキングフィルタ部101は、通常(LCU境界以外)、前段からの入力画素であるリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。デブロッキングフィルタ部101は、フィルタ処理後の画素を、ラインメモリ251および演算部254に出力する。
【0372】
LCU境界においては、デブロッキングフィルタ部101は、前段からの入力画素であるリコンストラクト画素を、一旦ラインメモリ113に保持する。そして、必要な画素が入力されると、デブロッキングフィルタ部101は、入力された画素と、ラインメモリ113に保持されている画素とを用いて、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。デブロッキングフィルタ部101は、フィルタ処理後の画素を、ラインメモリ251および演算部254に出力する。
【0373】
通常(LCU境界以外)の処理においては、デブロッキングフィルタ部101は、前段からの入力画素であるリコンストラクト画素を用いて、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。デブロッキングフィルタ部101は、フィルタ処理後の画素を、ラインメモリ251および演算部254に出力する。
【0374】
ラインメモリ251は、デブロッキングフィルタ部101によるフィルタ後の画素を一旦保持する。図7の例においては、ラインメモリ251は、輝度(Y)について、3ライン分の画素を保持し、色差(C)について、3ライン分の画素を保持する。なお、保持するライン数は、アーキテクチャなどに依存されるため、限定されない。
【0375】
LCU境界において、適応オフセットフィルタ部252、および適応ループフィルタ部253は、デブロッキングフィルタ部101によるフィルタ後の画素が保持されたラインメモリ251を共有している。
【0376】
適応オフセットフィルタ部252は、図6のオフセットフィルタ121を含むように、図7の適応オフセットフィルタ部154と基本的に構成される。
【0377】
LCU境界において、適応オフセットフィルタ部252は、ラインメモリ251に保持されている画素を読み出し、読み出した画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部252は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部254に出力する。
【0378】
通常(LCU境界以外)の処理においては、適応オフセットフィルタ部252は、デブロッキングフィルタ部101からの画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部252は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部254に出力する。
【0379】
適応ループフィルタ部253は、図6のループフィルタ131を含むように、図7の適応ループフィルタ部155と基本的に同様に構成される。
【0380】
LCU境界において、適応ループフィルタ部253は、ラインメモリ251に保持されている画素を読み出し、読み出した画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部253は、ループフィルタ131によるフィルタ処理後の画素を、演算部254に出力する。
【0381】
通常(LCU境界以外)の処理においては、適応ループフィルタ部253は、デブロッキングフィルタ部101からの画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部253は、ループフィルタ131によるフィルタ処理後の画素を、演算部254に出力する。
【0382】
なお、LCU境界において必要なラインの画素が入力されると、適応オフセットフィルタ部252および適応ループフィルタ部253は、出力位相を揃えて処理を再開する。
【0383】
演算部254は、減算部181−1および181−2、乗算部182−1および182−2、および加算部183により構成されており、各フィルタ処理後の出力Pを線形和で演算する。なお、演算部254における入力画素としては、通常、デブロッキングフィルタ部101からのフィルタ後の画素が用いられるが、LCU境界においては、ラインメモリ251に保持されている画素が読み出されて用いられる。
【0384】
減算部181−1は、適応オフセットフィルタ部252からのフィルタ後の画素PSAOからデブロッキングフィルタ後の画素PDBを減算し、乗算部182−1に出力する。乗算部182−1は、減算部181−1からの入力(PSAO−PDB)に対して、係数メモリ255からの適応オフセットフィルタ部252に対応する係数CSAOを乗算し、加算部183に出力する。
【0385】
減算部181−2は、適応ループフィルタ部253からのフィルタ後の画素PALFからデブロッキングフィルタ後の画素PDBを減算し、乗算部182−2に出力する。乗算部182−2は、減算部181−2からの入力(PALF−PDB)に対して、係数メモリ255からの適応ループフィルタ部PDBに対応する係数CALFを乗算し、加算部183に出力する。
【0386】
加算部183は、デブロッキングフィルタ後の画素PDBに、乗算部182−1および182−2からの乗算結果を加算し、加算結果であるPを、フレームメモリに出力する。
【0387】
係数メモリ255は、各フィルタに対応する係数を記憶している。例えば、係数メモリ255には、適応オフセットフィルタ部154に対応する係数CSAO、および適応ループフィルタ部155に対応する係数CALFが記憶されている。なお、図21の場合の係数CSAOと係数CALFは、デブロッキングフィルタ部101後の画素についてフィルタ処理された画素に乗算される係数であるので、それぞれ、デブロッキングフィルタ部101にも対応させるようにしてもよい。
【0388】
なお、これらの係数も、図示せぬ操作入力部を介してユーザにより設定可能にしてもよい。また、これらの係数も、画像の特性に応じて設定されてもよい。
【0389】
[LCU境界における各フィルタの詳細]
次に、図22を参照して、図21のインループフィルタ31のLCU境界における具体的な処理について説明する。
【0390】
デブロッキングフィルタ部101は、LCU境界では、前段からの入力画素であるリコンストラクト画素に対して、Hフィルタ111およびVフィルタ112によるフィルタ処理を順に施し、フィルタ処理後の画素を、ラインメモリ251に出力する。
【0391】
このラインメモリ251に保持されている画素に対して、適応オフセットフィルタ部252および適応ループフィルタ部253により並列でフィルタ処理が行われる。
【0392】
適応オフセットフィルタ部252は、ラインメモリ251に保持されているデブロッキングフィルタ後の画素を読み出し、読み出した画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部252は、処理対象画素の周囲8画素(図22のSAO参照画素)を用いて、処理対象画素に対してのオフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部252は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部254に出力する。
【0393】
適応ループフィルタ部253は、ラインメモリ251に保持されているデブロッキングフィルタ後の画素を読み出し、読み出した画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部253は、処理対象画素を中心とした5タップのスノーフレーク形状の16画素(図22に示されるALFタップ)を用いて、処理対象画素に対してのループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部253は、ループフィルタ131によるフィルタ処理後の画素を、演算部254に出力する。
【0394】
演算部254は、適応オフセットフィルタ部252からのフィルタ処理後の画素と、適応ループフィルタ部253からのフィルタ処理後の画素とを線形和で演算し、後段に出力する。
【0395】
ここで、図23および図24を参照して、図21の例のインループフィルタ31の場合に必要なラインメモリ数について説明する。図23および図24の例において、丸は、画素を表し、図中下のラインがLCU境界を表している。
【0396】
図23は、輝度信号の場合のLCU境界の画素の例を示している。図23の輝度信号の場合、LCU境界から1ライン目乃至3ライン目の丸は、次のLCUがデブロッキングフィルタに入力されたときに、水平境界のデブロッキングV(垂直)フィルタ処理が開始される画素を表している。
【0397】
なお、1ライン目乃至3ライン目のハッチングで示される丸は、LCUに含まれるCUの垂直境界において部分的にデブロッキングH(水平)フィルタ処理された画素を表している。1行目乃至3行目の丸のうち、白丸は、CUの垂直境界において、実際には、デブロッキングHフィルタ処理が施されない画素を表している。
【0398】
LCU境界から4乃至7ライン目の画素は、デブロッキングVフィルタ処理済みの画素である。そのうち、LCU境界から4ライン目の画素は、1ライン目乃至3ライン目のデブロッキングVフィルタ処理において参照される画素である。LCU境界から6ライン目より上の丸は、ループフィルタ(ALF)後画素を表している。
【0399】
LCU境界においては、デブロッキングフィルタ部101は、図5を参照して上述したように、輝度信号の場合、次のLCUの4ラインの画素が入力されるまで、LCU境界から1ライン目乃至3ライン目の画素の処理において待機状態となる。すなわち、デブロッキングフィルタ部101が、LCU境界から4ライン目までしか処理することができない。
【0400】
適応オフセットフィルタ部252と適応ループフィルタ部253は、デブロッキングフィルタ部101によるフィルタ(DF)後画素を処理する。したがって、適応ループフィルタ部253は、LCU境界から6ライン目までしか処理することができない。このため、適応オフセットフィルタ部252も、LCU境界から6ライン目から処理開始できるように、LCU境界から6ライン目の画素の処理において待機状態となる。
【0401】
次のLCUの4ラインの画素が入力されると、デブロッキングフィルタ部101は、LCU境界から3ライン目の画素から出力するように処理を開始する。LCU境界から3ライン目の画素がデブロッキングフィルタ部101から入力されるので、適応ループフィルタ部253は、LCU境界から5ライン目の画素から出力するように処理を開始する。適応オフセットフィルタ部252も、適応ループフィルタ部253に出力位相を合わせて、LCU境界から5ライン目の画素から出力するように処理を開始する。
【0402】
その際、デブロッキングフィルタ部101においては、LCU境界から1乃至4ライン目の画素がラインメモリ113に保持されている必要がある。
【0403】
また、適応オフセットフィルタ部252においては、LCU境界から5および6ライン目の画素がラインメモリ251に保持されている必要がある。適応ループフィルタ部253においては、LCU境界から5乃至7ライン目の画素がラインメモリ251に保持されている必要がある。
【0404】
したがって、輝度信号の場合、ラインメモリ251には、LCU境界から5乃至7ライン目の3ライン分の画素が保持されていればよい。
【0405】
以上により、図21のインループフィルタ31においては、輝度信号の場合には、4ライン分のラインメモリ113および3ライン分のラインメモリ251が必要となり、従来の9ライン分の画素と比して、2ライン分のラインメモリ数を減らすことが可能である。
【0406】
図24は、色差信号の場合のLCU境界の画素の例を示している。図24の色差信号の場合、LCU境界から1ライン目の丸は、次のLCUがデブロッキングフィルタに入力されたときに、水平境界のデブロッキングV(垂直)フィルタ処理が開始される画素を表している。
【0407】
なお、1ライン目のハッチングで示される丸は、LCUに含まれるCUの垂直境界において部分的にデブロッキングH(水平)フィルタ処理された画素を表している。1行目の丸のうち、白丸は、CUの垂直境界において、実際には、デブロッキングHフィルタ処理が施されない画素を表している。
【0408】
LCU境界から2乃至5ライン目の画素は、デブロッキングVフィルタ処理済みの画素である。そのうち、LCU境界から2ライン目の画素は、1ライン目のデブロッキングVフィルタ処理において参照される画素である。LCU境界から4ライン目より上の丸は、ループフィルタ(ALF)後画素を表している。
【0409】
LCU境界においては、デブロッキングフィルタ部101は、図5を参照して上述したように、色差信号の場合、次のLCUの2ライン分の画素が入力されるまで、LCU境界から1ライン目の画素の処理において待機状態となる。すなわち、デブロッキングフィルタ部101は、LCU境界から2ライン目までしか処理することができない。
【0410】
適応オフセットフィルタ部252と適応ループフィルタ部253は、デブロッキングフィルタ部101によるフィルタ(DF)後画素を処理する。したがって、適応ループフィルタ部253は、LCU境界から4ライン目までしか処理することができない。このため、適応オフセットフィルタ部252も、LCU境界から3ライン目から処理開始できるように、LCU境界から3ライン目の画素の処理において待機状態となる。
【0411】
次のLCUの2ライン分の画素が入力されると、デブロッキングフィルタ部101は、LCU境界から1ライン目の画素から出力するように処理を開始する。LCU境界から1ライン目の画素がデブロッキングフィルタ部101から入力されるので、適応ループフィルタ部253は、LCU境界から3ライン目の画素から出力するように処理を開始する。適応オフセットフィルタ部252も、適応ループフィルタ部253に出力位相を合わせて、LCU境界から3ライン目の画素から出力するように処理を開始する。
【0412】
その際、デブロッキングフィルタ部101においては、LCU境界から1および2ライン目の画素がラインメモリ113に保持されている必要がある。
【0413】
また、適応オフセットフィルタ部252においては、LCU境界から3および4ライン目の画素がラインメモリ251に保持されている必要がある。適応ループフィルタ部253においては、LCU境界から3乃至5ライン目の画素がラインメモリ251に保持されている必要がある。
【0414】
したがって、輝度信号の場合、ラインメモリ251には、LCU境界から3乃至5ライン目の3ライン分の画素が保持されていればよい。
【0415】
以上により、図21のインループフィルタ31においては、色差信号の場合には、2ライン分のラインメモリ113および3ライン分のラインメモリ251が必要となり、従来の7ライン分の画素と比して、2ライン分のラインメモリ数を減らすことが可能である。
【0416】
[インループフィルタの処理例]
次に、図25のフローチャートを参照して、図21のインループフィルタ31の処理について説明する。なお、図25の処理は、上述した図2のステップS22のインループフィルタ処理の例であって、図4のステップS58のインループフィルタ処理の例である。
【0417】
ステップS251において、デブロッキングフィルタ部101は、デブロッキングフィルタ処理を行う。すなわち、デブロッキングフィルタ部101は、リコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。フィルタ処理後の画素は、ラインメモリ251、適応オフセットフィルタ部252、適応ループフィルタ部253、および演算部254に出力される。
【0418】
なお、詳細には、デブロッキングフィルタ部101は、通常(LCU境界以外)、前段からの入力画素であるリコンストラクト画素に対して、Hフィルタ111によるフィルタ処理を施す。
【0419】
LCU境界においては、デブロッキングフィルタ部101は、前段からの入力画素であるリコンストラクト画素を、一旦ラインメモリ113に保持する。そして、必要な画素が入力されると、デブロッキングフィルタ部101は、入力された画素と、ラインメモリ113に保持されている画素とを用いて、Hフィルタ111によるフィルタ処理を施し、Vフィルタ112によるフィルタ処理を施す。
【0420】
ステップS252において、デブロッキングフィルタ部101は、LCU内の最後の画素であるかを判定する。ステップS252において、LCU内の最後の画素ではないと判定された場合、処理は、ステップS251に戻り、それ以降の処理が繰り返される。
【0421】
ステップS252において、LCU内の最後の画素であると判定された場合、処理は、ステップS253に進む。ステップS253において、デブロッキングフィルタ部101は、画面内の最後の画素であるか否かを判定する。ステップS253において、画面内の最後の画素ではないと判定された場合、処理は、ステップS254に進む。
【0422】
ステップS254において、デブロッキングフィルタ部101は、次のLCUを選択し、処理は、ステップS251に戻る。すなわち、ステップS254で選択されたLCUに対して、ステップS251以降の処理が繰り返される。
【0423】
ステップS253において、画面内の最後の画素ではないと判定された場合、処理は、ステップS255およびS256に進む。
【0424】
LCU境界において、ステップS255およびS256の処理は、ラインメモリ251に保持された画素を用いて並行で実行される。なお、上述したように、LCU境界において必要なラインの画素が入力された場合、ステップS255およびS256においては、出力位相を揃えて処理が開始される。
【0425】
適応オフセットフィルタ部252は、ステップS255において、ラインメモリ251またはデブロッキングフィルタ部101からの画素に対して、オフセットフィルタ121によるフィルタ処理を施す。適応オフセットフィルタ部252は、オフセットフィルタ121によるフィルタ処理後の画素を、演算部254に出力する。
【0426】
適応ループフィルタ部253は、ステップS256において、ラインメモリ251またはデブロッキングフィルタ部101からの画素に対して、ループフィルタ131によるフィルタ処理を施す。適応ループフィルタ部253は、ループフィルタ131によるフィルタ処理後の画素を、演算部254に出力する。
【0427】
ステップS257において、演算部254は、適応オフセットフィルタ部252および適応ループフィルタ部253による各フィルタ処理後の2つの結果を演算する。演算後の結果は、後段に出力される。
【0428】
ステップS258において、適応オフセットフィルタ部252および適応ループフィルタ部253は、LCU内の最後の画素であるかを判定する。ステップS258において、LCU内の最後の画素ではないと判定された場合、処理は、ステップS255およびS256に戻り、それ以降の処理が繰り返される。
【0429】
ステップS258において、LCU内の最後の画素であると判定された場合、処理は、ステップS259に進む。ステップS259において、適応オフセットフィルタ部252および適応ループフィルタ部253は、画面内の最後の画素であるか否かを判定する。ステップS259において、画面内の最後の画素ではないと判定された場合、処理は、ステップS260に進む。
【0430】
ステップS260において、適応オフセットフィルタ部252および適応ループフィルタ部253は、次のLCUを選択し、処理は、ステップS255およびS256に戻る。すなわち、ステップS260で選択されたLCUに対して、ステップS255およびS256以降の処理が繰り返される。
【0431】
ステップS259において、画面内の最後の画素ではないと判定された場合、インループフィルタ処理は終了される。
【0432】
以上のように、図21の例の場合、インループフィルタ31を構成する2つのフィルタ処理の入力を、デブロッキングフィルタ後の画素として並列処理し、LCU境界においてはラインメモリを共有するようにしたので、ラインメモリ数を減らすことが可能である。
【0433】
また、インループフィルタ31は、前段からの画素またはラインメモリからの画素のどちらの画素を入力するかを切り替えるだけで、通常の処理とLCU境界の処理の切り替えを行うというシンプルな構成である。これにより、ソフトウエアなどで、適応オフセットフィルタおよび適応オフセットフィルタがそれぞれフレーム処理をする場合の制御も容易に行うことができる。
【0434】
なお、上述したLCU境界において処理可能なライン、および必要なラインメモリ数(効果)については、アーキテクチャによって異なるため、上述した例に限定されない。
【0435】
また、上記説明においては、その図示は省略されているが、例えば、図9、図15、図19、および図21において、インループフィルタ31を、各フィルタ部を並列的に処理するように制御する制御部を備えるように構成することもできる。インループフィルタ31に制御部が含まれる場合、例えば、その制御部は、並列的に処理をする各フィルタ部からの出力位相を合わせるような制御も行うものとする。
【0436】
以上においては、符号化方式としてHEVC方式をベースに用いるようにした。ただし、本開示はこれに限らず、インループフィルタとして、デブロックフィルタ、適応オフセットフィルタ、および適応ループフィルタのうちの少なくとも2つを含む、その他の符号化方式/復号方式を適用することができる。
【0437】
なお、本開示は、例えば、HEVC方式等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本開示は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。
【0438】
<7.第5の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
【0439】
図26は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータのハードウエアの構成例を示すブロック図である。
【0440】
パーソナルコンピュータ500において、CPU(Central Processing Unit)501,ROM(Read Only Memory)502,RAM(Random Access Memory)503は、バス504により相互に接続されている。
【0441】
バス504には、さらに、入出力インタフェース505が接続されている。入出力インタフェース505には、キーボード、マウス、マイクロホンなどよりなる入力部506、ディスプレイ、スピーカなどよりなる出力部507、ハードディスクや不揮発性のメモリなどよりなる記憶部508、ネットワークインタフェースなどよりなる通信部509、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア211を駆動する及びドライブ510が接続されている。
【0442】
入力部506は、キーボード、マウス、マイクロホンなどよりなる。出力部507は、ディスプレイ、スピーカなどよりなる。記憶部508は、ハードディスクや不揮発性のメモリなどよりなる。通信部509は、ネットワークインタフェースなどよりなる。ドライブ510は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア511を駆動する。
【0443】
以上のように構成されるパーソナルコンピュータ500では、CPU501が、例えば、記憶部508に記憶されているプログラムを、入出力インタフェース505及びバス504を介して、RAM503にロードして実行することにより、上述した一連の処理が行われる。
【0444】
コンピュータ(CPU501)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディア等としてのリムーバブルメディア511に記録して提供することができる。また、あるいは、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【0445】
コンピュータではそして、プログラムは、リムーバブルメディア511をドライブ510に装着することにより、入出力インタフェース505を介して、記憶部508にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部509で受信し、記憶部508にインストールすることができる。その他、プログラムは、ROM502や記憶部508に、あらかじめインストールしておくことができる。
【0446】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【0447】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0448】
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
【0449】
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本技術は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【0450】
上述した実施形態に係る画像符号化装置及び画像復号装置は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、4つの応用例について説明する。
【0451】
<8.応用例>
[第1の応用例:テレビジョン受像機]
図27は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置900は、アンテナ901、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、表示部906、音声信号処理部907、スピーカ908、外部インタフェース909、制御部910、ユーザインタフェース911、及びバス912を備える。
【0452】
チューナ902は、アンテナ901を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ902は、復調により得られた符号化ビットストリームをデマルチプレクサ903へ出力する。即ち、チューナ902は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送手段としての役割を有する。
【0453】
デマルチプレクサ903は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ904へ出力する。また、デマルチプレクサ903は、符号化ビットストリームからEPG(Electronic Program Guide)などの補助的なデータを抽出し、抽出したデータを制御部910に供給する。なお、デマルチプレクサ903は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
【0454】
デコーダ904は、デマルチプレクサ903から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ904は、復号処理により生成される映像データを映像信号処理部905へ出力する。また、デコーダ904は、復号処理により生成される音声データを音声信号処理部907へ出力する。
【0455】
映像信号処理部905は、デコーダ904から入力される映像データを再生し、表示部906に映像を表示させる。また、映像信号処理部905は、ネットワークを介して供給されるアプリケーション画面を表示部906に表示させてもよい。また、映像信号処理部905は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部905は、例えばメニュー、ボタン又はカーソルなどのGUI(Graphical User Interface)の画像を生成し、生成した画像を出力画像に重畳してもよい。
【0456】
表示部906は、映像信号処理部905から供給される駆動信号により駆動され、表示デバイス(例えば、液晶ディスプレイ、プラズマディスプレイ又はOELD(Organic ElectroLuminescence Display)(有機ELディスプレイ)など)の映像面上に映像又は画像を表示する。
【0457】
音声信号処理部907は、デコーダ904から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ908から音声を出力させる。また、音声信号処理部907は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
【0458】
外部インタフェース909は、テレビジョン装置900と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース909を介して受信される映像ストリーム又は音声ストリームが、デコーダ904により復号されてもよい。即ち、外部インタフェース909もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送手段としての役割を有する。
【0459】
制御部910は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置900の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース911から入力される操作信号に応じて、テレビジョン装置900の動作を制御する。
【0460】
ユーザインタフェース911は、制御部910と接続される。ユーザインタフェース911は、例えば、ユーザがテレビジョン装置900を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース911は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部910へ出力する。
【0461】
バス912は、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、音声信号処理部907、外部インタフェース909及び制御部910を相互に接続する。
【0462】
このように構成されたテレビジョン装置900において、デコーダ904は、上述した実施形態に係る画像復号装置の機能を有する。それにより、テレビジョン装置900での画像の復号に際して、簡単な処理構造で、ラインメモリの削減を図ることができることができる。
【0463】
[第2の応用例:携帯電話機]
図28は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、及びバス933を備える。
【0464】
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス933は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、及び制御部931を相互に接続する。
【0465】
携帯電話機920は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
【0466】
音声通話モードにおいて、マイクロホン925により生成されるアナログ音声信号は、音声コーデック923に供給される。音声コーデック923は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック923は、圧縮後の音声データを通信部922へ出力する。通信部922は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック923へ出力する。音声コーデック923は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
【0467】
また、データ通信モードにおいて、例えば、制御部931は、操作部932を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部931は、文字を表示部930に表示させる。また、制御部931は、操作部932を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部922へ出力する。通信部922は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部931へ出力する。制御部931は、表示部930に電子メールの内容を表示させると共に、電子メールデータを記録再生部929の記憶媒体に記憶させる。
【0468】
記録再生部929は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USB(Unallocated Space Bitmap)メモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
【0469】
また、撮影モードにおいて、例えば、カメラ部926は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部927へ出力する。画像処理部927は、カメラ部926から入力される画像データを符号化し、符号化ストリームを記憶再生部929の記憶媒体に記憶させる。
【0470】
また、テレビ電話モードにおいて、例えば、多重分離部928は、画像処理部927により符号化された映像ストリームと、音声コーデック923から入力される音声ストリームとを多重化し、多重化したストリームを通信部922へ出力する。通信部922は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部922は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部928へ出力する。多重分離部928は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部927、音声ストリームを音声コーデック923へ出力する。画像処理部927は、映像ストリームを復号し、映像データを生成する。映像データは、表示部930に供給され、表示部930により一連の画像が表示される。音声コーデック923は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
【0471】
このように構成された携帯電話機920において、画像処理部927は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、携帯電話機920での画像の符号化及び復号に際して、簡単な処理構造で、ラインメモリの削減を図ることができる。
【0472】
[第3の応用例:記録再生装置]
図29は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データ及び映像データを復号する。
【0473】
記録再生装置940は、チューナ941、外部インタフェース942、エンコーダ943、HDD(Hard Disk Drive)944、ディスクドライブ945、セレクタ946、デコーダ947、OSD(On-Screen Display)948、制御部949、及びユーザインタフェース950を備える。
【0474】
チューナ941は、アンテナ(図示せず)を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ941は、復調により得られた符号化ビットストリームをセレクタ946へ出力する。即ち、チューナ941は、記録再生装置940における伝送手段としての役割を有する。
【0475】
外部インタフェース942は、記録再生装置940と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース942は、例えば、IEEE1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース942を介して受信される映像データ及び音声データは、エンコーダ943へ入力される。即ち、外部インタフェース942は、記録再生装置940における伝送手段としての役割を有する。
【0476】
エンコーダ943は、外部インタフェース942から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ943は、符号化ビットストリームをセレクタ946へ出力する。
【0477】
HDD944は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラムおよびその他のデータを内部のハードディスクに記録する。また、HDD944は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
【0478】
ディスクドライブ945は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ945に装着される記録媒体は、例えばDVDディスク(DVD-Video、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等)又はBlu-ray(登録商標)ディスクなどであってよい。
【0479】
セレクタ946は、映像及び音声の記録時には、チューナ941又はエンコーダ943から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD944又はディスクドライブ945へ出力する。また、セレクタ946は、映像及び音声の再生時には、HDD944又はディスクドライブ945から入力される符号化ビットストリームをデコーダ947へ出力する。
【0480】
デコーダ947は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ947は、生成した映像データをOSD948へ出力する。また、デコーダ904は、生成した音声データを外部のスピーカへ出力する。
【0481】
OSD948は、デコーダ947から入力される映像データを再生し、映像を表示する。また、OSD948は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
【0482】
制御部949は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置940の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース950から入力される操作信号に応じて、記録再生装置940の動作を制御する。
【0483】
ユーザインタフェース950は、制御部949と接続される。ユーザインタフェース950は、例えば、ユーザが記録再生装置940を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース950は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部949へ出力する。
【0484】
このように構成された記録再生装置940において、エンコーダ943は、上述した実施形態に係る画像符号化装置の機能を有する。また、デコーダ947は、上述した実施形態に係る画像復号装置の機能を有する。それにより、記録再生装置940での画像の符号化及び復号に際して、簡単な処理構造で、ラインメモリの削減を図ることができる。
【0485】
[第4の応用例:撮像装置]
図30は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
【0486】
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970、ユーザインタフェース971、及びバス972を備える。
【0487】
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース971は、制御部970に接続される。バス972は、画像処理部964、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、及び制御部970を相互に接続する。
【0488】
光学ブロック961は、フォーカスレンズ及び絞り機構などを有する。光学ブロック961は、被写体の光学像を撮像部962の撮像面に結像させる。撮像部962は、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部962は、画像信号を信号処理部963へ出力する。
【0489】
信号処理部963は、撮像部962から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部963は、カメラ信号処理後の画像データを画像処理部964へ出力する。
【0490】
画像処理部964は、信号処理部963から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部964は、生成した符号化データを外部インタフェース966又はメディアドライブ968へ出力する。また、画像処理部964は、外部インタフェース966又はメディアドライブ968から入力される符号化データを復号し、画像データを生成する。そして、画像処理部964は、生成した画像データを表示部965へ出力する。また、画像処理部964は、信号処理部963から入力される画像データを表示部965へ出力して画像を表示させてもよい。また、画像処理部964は、OSD969から取得される表示用データを、表示部965へ出力する画像に重畳してもよい。
【0491】
OSD969は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部964へ出力する。
【0492】
外部インタフェース966は、例えばUSB入出力端子として構成される。外部インタフェース966は、例えば、画像の印刷時に、撮像装置960とプリンタとを接続する。また、外部インタフェース966には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置960にインストールされ得る。さらに、外部インタフェース966は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース966は、撮像装置960における伝送手段としての役割を有する。
【0493】
メディアドライブ968に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ968に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD(Solid State Drive)のような非可搬性の記憶部が構成されてもよい。
【0494】
制御部970は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置960の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース971から入力される操作信号に応じて、撮像装置960の動作を制御する。
【0495】
ユーザインタフェース971は、制御部970と接続される。ユーザインタフェース971は、例えば、ユーザが撮像装置960を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース971は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部970へ出力する。
【0496】
このように構成された撮像装置960において、画像処理部964は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、撮像装置960での画像の符号化及び復号に際して、簡単な処理構造で、ラインメモリの削減を図ることができる。
【0497】
なお、本明細書においては、主に垂直境界についてのフィルタリング処理が水平境界についてのフィルタリング処理よりも先に行われる例を説明したが、水平境界についてのフィルタリング処理が先に行われる場合にも本開示に係る技術による上述した効果は同等に享受され得る。また、デブロックフィルタの処理単位のサイズ又はLCUのサイズは、本明細書で説明した例に限定されず、他のサイズであってもよい。
【0498】
また、本明細書においては、垂直境界についてのフィルタリング処理のフィルタタップは水平方向に沿って並ぶことから、垂直境界についてのフィルタリング処理のフィルタを「H(水平)フィルタ」と表現した。同様に、水平境界についてのフィルタリング処理のフィルタタップは垂直方向に沿って並ぶことから、水平境界についてのフィルタリング処理のフィルタを「V(垂直)フィルタ」と表現した。しかしながら、一般に、垂直境界についてのフィルタリング処理のフィルタをが「V(垂直)フィルタ」、水平境界についてのフィルタリング処理のフィルタが「H(水平)フィルタ」とそれぞれ呼ばれる場合もあることに留意されたい。
【0499】
なお、本明細書では、予測モード、適応オフセットフィルタ、および、適応ループフィルタの各パラメータ等の各種情報が、符号化ストリームに多重化されて、符号化側から復号側へ伝送される例について説明した。しかしながら、これら情報を伝送する手法はかかる例に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像(スライス若しくはブロックなど、画像の一部であってもよい)と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像(又はビットストリーム)とは別の伝送路上で伝送されてもよい。また、情報は、画像(又はビットストリーム)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されてもよい。さらに、情報と画像(又はビットストリーム)とは、例えば、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
【0500】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【0501】
なお、本技術は以下のような構成も取ることができる。
(1) 符号化ストリームを復号処理して画像を生成する復号部と、
前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、
前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と
を備える画像処理装置。
(2) 前記第1のフィルタ処理と前記第2のフィルタ処理とを並列的に行うように、前記第1のフィルタと前記第2のフィルタとを制御する制御部を
さらに備える前記(1)に記載の画像処理装置。
(3) 前記制御部は、前記第1のフィルタと前記第2のフィルタとの出力位相とを合わせるように制御する
前記(2)に記載の画像処理装置。
(4) 前記復号部により生成された画像のリコンストラクト画像を保持するメモリを
さらに備える前記(1)乃至(3)のいずれかに記載の画像処理装置。
(5) 前記第1のフィルタは、ブロック境界のノイズを除去するフィルタである
前記(1)乃至(4)のいずれかに記載の画像処理装置。
(6) 前記第1のフィルタは、デブロッキングフィルタである
前記(5)に記載の画像処理装置。
(7) 前記デブロックフィルタは、垂直境界の左右の画素にかけるフィルタ、および水平境界の上下の画素にかけるフィルタを含む
前記(6)に記載の画像処理装置。
(8) 前記制御部は、前記垂直境界の左右の画素にかけるフィルタの処理と前記水平境界の上下の画素にかけるフィルタの処理とを並列的に行うように制御する
前記(7)に記載の画像処理装置。
(9) 前記第2のフィルタは、リンギングを除去する第3のフィルタ、またはブロックベースでクラス分類を行う第4のフィルタを含む
前記(1)乃至(7)のいずれかに記載の画像処理装置。
(10) 前記第3のフィルタは、適応オフセットフィルタであって、前記第4のフィルタは、適応ループフィルタである
前記(9)に記載の画像処理装置。
(11) 前記演算部は、前記第1のフィルタ処理が行われた画像と、前記第2のフィルタ処理が行われた画像とを、前記第1のフィルタ処理に対応する第1の演算係数と前記第2のフィルタ処理に対応する第2の演算係数とを用いた線形和で加算するように演算処理する
前記(1)乃至(10)のいずれかに記載の画像処理装置。
(12) 前記第1の演算係数と前記第2の演算係数とは、垂直境界および水平境界からの距離に応じて設定される 前記(11)に記載の画像処理装置。
(13) 画像処理装置が、
符号化ストリームを復号処理して画像を生成し、
生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、
生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する
画像処理方法。
(14) 画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、
前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と、
前記演算部により演算処理された結果である画像を用いて、前記画像を符号化する符号化部と
を備える画像処理装置。
(15) 前記第1のフィルタ処理と前記第2のフィルタ処理とを並列的に行うように、前記第1のフィルタと前記第2のフィルタとを制御する制御部を
さらに備える前記(14)に記載の画像処理装置。
(16) 前記制御部は、前記第1のフィルタと前記第2のフィルタとの出力位相とを合わせるように制御する
前記(15)に記載の画像処理装置。
(17) 前記復号部により生成された画像のリコンストラクト画像を保持するメモリを
さらに備える前記(14)乃至(16)のいずれかに記載の画像処理装置。
(18) 画像処理装置が、
画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、
前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理し、
演算処理された結果である画像を用いて、前記画像を符号化する
画像処理方法。
(19) 符号化ストリームを復号処理して画像を生成する復号部と、
前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、
前記第1のフィルタにより前記第1のフィルタ処理が行われた画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と
を備える画像処理装置。
(20)画像処理装置が、
符号化ストリームを復号処理して画像を生成し、
生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する
画像処理方法。
【符号の説明】
【0502】
11 画像符号化装置, 26 可逆符号化部, 31,31a,31b インループフィルタ,51 画像復号装置, 62 可逆復号部, 111 Hフィルタ, 112 Vフィルタ, 121 オフセットフィルタ, 131 ループフィルタ, 151 ラインメモリ, 152 デブロッキングHフィルタ部, 153 デブロッキングVフィルタ部, 154 適応オフセットフィルタ部, 155 適応ループフィルタ部, 156 演算部, 171 係数メモリ, 201 ラインメモリ, 202 適応ループフィルタ部, 203 演算部, 204 係数メモリ, 211 ラインメモリ, 221 適応ループフィルタ部, 251 ラインメモリ, 252 適応オフセットフィルタ部, 253 適応ループフィルタ部, 254 演算部, 255 係数メモリ

【特許請求の範囲】
【請求項1】
符号化ストリームを復号処理して画像を生成する復号部と、
前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、
前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と
を備える画像処理装置。
【請求項2】
前記第1のフィルタ処理と前記第2のフィルタ処理とを並列的に行うように、前記第1のフィルタと前記第2のフィルタとを制御する制御部を
さらに備える請求項1に記載の画像処理装置。
【請求項3】
前記制御部は、前記第1のフィルタと前記第2のフィルタとの出力位相とを合わせるように制御する
請求項2に記載の画像処理装置。
【請求項4】
前記復号部により生成された画像のリコンストラクト画像を保持するメモリを
さらに備える請求項3に記載の画像処理装置。
【請求項5】
前記第1のフィルタは、ブロック境界のノイズを除去するフィルタである
請求項3に記載の画像処理装置。
【請求項6】
前記第1のフィルタは、デブロッキングフィルタである
請求項5に記載の画像処理装置。
【請求項7】
前記デブロックフィルタは、垂直境界の左右の画素にかけるフィルタ、および水平境界の上下の画素にかけるフィルタを含む
請求項6に記載の画像処理装置。
【請求項8】
前記制御部は、前記垂直境界の左右の画素にかけるフィルタの処理と前記水平境界の上下の画素にかけるフィルタの処理とを並列的に行うように制御する
請求項7に記載の画像処理装置。
【請求項9】
前記第2のフィルタは、リンギングを除去する第3のフィルタ、またはブロックベースでクラス分類を行う第4のフィルタを含む
請求項5に記載の画像処理装置。
【請求項10】
前記第3のフィルタは、適応オフセットフィルタであって、前記第4のフィルタは、適応ループフィルタである
請求項9に記載の画像処理装置。
【請求項11】
前記演算部は、前記第1のフィルタ処理が行われた画像と、前記第2のフィルタ処理が行われた画像とを、前記第1のフィルタ処理に対応する第1の演算係数と前記第2のフィルタ処理に対応する第2の演算係数とを用いた線形和で加算するように演算処理する
請求項9に記載の画像処理装置。
【請求項12】
前記第1の演算係数と前記第2の演算係数とは、垂直境界および水平境界からの距離に応じて設定される
請求項11に記載の画像処理装置。
【請求項13】
画像処理装置が、
符号化ストリームを復号処理して画像を生成し、
生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、
生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する
画像処理方法。
【請求項14】
画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、
前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と、
前記演算部により演算処理された結果である画像を用いて、前記画像を符号化する符号化部と
を備える画像処理装置。
【請求項15】
前記第1のフィルタ処理と前記第2のフィルタ処理とを並列的に行うように、前記第1のフィルタと前記第2のフィルタとを制御する制御部を
さらに備える請求項14に記載の画像処理装置。
【請求項16】
前記制御部は、前記第1のフィルタと前記第2のフィルタとの出力位相とを合わせるように制御する
請求項15に記載の画像処理装置。
【請求項17】
前記復号部により生成された画像のリコンストラクト画像を保持するメモリを
さらに備える請求項16に記載の画像処理装置。
【請求項18】
画像処理装置が、
画像を符号化する際にローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画素を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、
前記ローカル復号処理された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理し、
演算処理された結果である画像を用いて、前記画像を符号化する
画像処理方法。
【請求項19】
符号化ストリームを復号処理して画像を生成する復号部と、
前記復号部により生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行う第1のフィルタと、
前記第1のフィルタにより前記第1のフィルタ処理が行われた画像を対象として、前記第1のフィルタ処理とは異なる第2のフィルタ処理を行う第2のフィルタと、
前記第1のフィルタ処理が行われた画像と前記第2のフィルタ処理が行われた画像とを用いて、演算処理する演算部と
を備える画像処理装置。
【請求項20】
画像処理装置が、
符号化ストリームを復号処理して画像を生成し、
生成された画像のリコンストラクト画像を保持するメモリから前記リコンストラクト画像を取得し、取得したリコンストラクト画像を対象として、第1のフィルタ処理を行い、
前記第1のフィルタ処理が行われた画像を対象として、前記第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

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate


【公開番号】特開2013−74416(P2013−74416A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−211226(P2011−211226)
【出願日】平成23年9月27日(2011.9.27)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】