(57)【特許請求の範囲】
【請求項１】
Ｙ画像、Ｃｂ画像、Ｃｒ画像のそれぞれのデータを格納するメモリと、
前記メモリからデータの読み出しおよび書き込みを行うメモリアクセス部と、
前記メモリアクセス部により読み出されたデータを与えられてデブロッキングフィルタ処理を行い、処理後のデータを前記メモリアクセス部に与えるフィルタ処理演算部とを備え、
前記フィルタ処理演算部は、前記Ｙ画像における１本のブロック境界に対するデブロッキングフィルタ処理と、前記Ｃｂ画像における１本のブロック境界に対するデブロッキングフィルタ処理又は前記Ｃｒ画像における１本のブロック境界に対するデブロッキングフィルタ処理とを交互に行う際に、前記Ｙ画像における１本のブロック境界に対するデブロッキングフィルタ処理を行っている最中にその処理が終了する前に、前記Ｃｂ画像又は前記Ｃｒ画像における１本のブロック境界に対するデブロッキングフィルタ処理を行うことを特徴とする画像処理装置。
【請求項２】
前記メモリは、水平方向並びに垂直方向に連続的読み出しが可能なメモリであることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記メモリは、
前記Ｙ画像、前記Ｃｂ画像、および前記Ｃｒ画像について、デブロッキングフィルタ処理を行う処理単位での各々の画素数を、すべて加えた画素数以上の画素数を有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記フィルタ処理演算部は、
外部から与えられたブロック境界強度を用いて、
デブロッキングフィルタ処理を行う処理単位毎に、前記Ｙ画像、前記Ｃｂ画像、および前記Ｃｒ画像をまとめてデブロッキング処理を実行することを特徴とする、請求項１乃至３のいずれか1つに記載の画像処理装置。
【請求項５】
前記フィルタ処理演算部は、１つのデブロッキングフィルタ処理をパイプライン処理するための複数ステージに分割したパイプラインを有し、
前記パイプラインのステージ数は、前記Ｙ画像の１ブロック境界にデブロッキングフィルタ処理を行う際の当該１ブロック境界に沿って存在する画素数と、前記Ｃｂ画像あるいは前記Ｃｒ画像の１ブロック境界にデブロッキングフィルタ処理を行う際の当該１ブロック境界に沿って存在する画素数とを合計した値以下であることを特徴とする請求項１乃至４のいずれか１つに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像フィルタ処理装置および画像処理装置に関する。
【背景技術】
【０００２】
画像処理において、例えば４×４画素を１つのブロック単位として圧縮処理を行うことにより、ブロックを囲む四辺の水平方向のブロック境界および垂直方向のブロック境界において、ブロックノイズが発生する。このようなブロックノイズを除去するため、デブロッキングフィルタ処理を行ってブロック境界を目立たなくすることが行われている。
【０００３】
各画素は、Ｙ画像、Ｃｂ画像、Ｃｒ画像に分けられるが、デブロッキングフィルタ処理を行う際には、Ｙ画像、Ｃｂ画像、Ｃｒ画像それぞれに対して、４×４画素から成るブロックを処理の最小単位として垂直方向のブロック境界並びに水平方向のブロック境界に対して、デブロッキングフィルタ処理を行う必要がある。
【０００４】
例えば、４×４画素から成るブロックにおける１本の垂直方向のブロック境界に対してデブロッキングフィルタ処理を行うには、垂直方向のブロック境界をまたいで左右４個ずつ配置された合計８個の画素に格納されたデータを用いる。
【０００５】
先ず、１本の垂直方向の合計８画素分のデータを加算して例えば平均値を求め、この平均値を用いて各８画素の画素データに修正を施すことにより、垂直方向のブロック境界に存在していたデータの不連続性を解消することができる。
【０００６】
このような演算を垂直方向に沿って４回行うことで、垂直方向のブロック境界に存在する４画素分のブロック境界にデブロッキングフィルタ処理を行う。
【０００７】
この後同様に、ブロックの１本の水平方向のブロック境界に対してデブロッキングフィルタ処理を行う。この場合は、水平方向のブロック境界をまたいで上下４個ずつ配置された合計８個の画素に格納されたデータを用いる。
【０００８】
次に、垂直方向におけると同様に、１本の水平方向の合計８画素分のデータから例えば平均値を求め、この平均値を用いて各８画素の画素データに修正を加えることにより、水平方向のブロック境界に存在していたデータの不連続性を解消することができる。
【０００９】
このような演算を水平方向に沿って４回行うことで、水平方向のブロック境界に存在する４画素分のブロック境界にデブロッキングフィルタ処理を行う。
【００１０】
以上の垂直方向および水平方向に沿った演算を、Ｙ画像、Ｃｂ画像、Ｃｒ画像各々に対して実行することで、４×４画素から成るブロックのデブロッキングフィルタ処理が完了する。
【００１１】
以上に記述した通り、デブロッキングフィルタ処理は処理量が多いものである。さらに、符号化規格としてＨ．２６４を用いる場合、この処理量の多いデブロッキングフィルタ処理が規格で定められている。加えて、次に例示する理由により、デブロッキングフィルタ処理量自体が既存の符号化規格と比較して多くなる。その理由とは、ブロックサイズが、例えば８×８画素のＭＰＥＧ−４と比較して、４×４画素と小さくなっていることである。これはすなわち、画像全体に施す処理としては少なくとも４倍の処理になる。さらには、例えばＴＶ画面の大画面化に向けて画素数が増え、この増えた画素数に対応する画像処理が要求される背景があり、デブロッキングフィルタ処理の処理量が増える傾向にある。
【００１２】
このため、パイプライン処理を用いることで、デブロッキングフィルタ処理の処理効率の向上を図ることが期待されている。
【００１３】
しかしながら、例えばＹ画像の垂直方向のブロック境界に連続的にデブロッキングフィルタ処理を行おうとすると、現在デブロッキングフィルタ処理を行っている垂直方向のブロック境界に対して、このブロック境界にある全画素にわたってデブロッキングフィルタ処理が終了するまでの間、次の隣接する垂直方向のブロック境界で使用する値が確定しない。これはすなわち、データの依存関係があるためであり、次の隣接する垂直方向のブロック境界のデブロッキングフィルタ処理を連続して実行することが出来ない。
【００１４】
従って、デブロッキングフィルタ処理にパイプライン処理を用いて、パイプラインのステージ数を増やしたとしても、パイプライン・ストールが生じて処理効率の低下を招いていた。
【００１５】
以上に説明した通り、Ｈ．２６４デブロッキングフィルタ処理では非常に処理量が多く、パイプライン処理による処理効率の向上が望まれているが、パイプラインステージ数を増やしたとしてもデブロッキングフィルタ処理の処理効率の向上が困難であるという課題があった。
【００１６】
さらに、画像データを格納するメモリへアクセスする場合に、画像の垂直方向又は水平方向のいずれかの方向では画像データを連続読み出しするために、煩雑な処理が必要となる。この課題を解決するためのメモリアクセス装置の開示もある（例えば特許文献１および特許文献２参照。）。
【００１７】
しかしながら、このメモリアクセス装置では、新たなレジスタを設ける必要がある上、デブロッキングフィルタ処理の処理効率の向上は解決できない。
【特許文献１】特開平６−３４２４６７号公報
【特許文献２】特開昭５９−１０９９６９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は上記事情に鑑み、デブロッキングフィルタ処理の処理効率を向上させることが可能な画像フィルタ処理装置および画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明の一態様による画像フィルタ処理装置は、Ｙ画像、Ｃｂ画像、Ｃｒ画像のそれぞれのデータを格納するメモリと、前記メモリからデータの読み出しおよび書き込みを行うメモリアクセス部と、前記メモリアクセス部により読み出されたデータを与えられてデブロッキングフィルタ処理を行い、処理後のデータを前記メモリアクセス部に与えるフィルタ処理演算部とを備え、前記フィルタ処理演算部は、前記Ｙ画像における１本のブロック境界に対するデブロッキングフィルタ処理と、前記Ｃｂ画像における１本のブロック境界に対するデブロッキングフィルタ処理又は前記Ｃｒ画像における１本のブロック境界に対するデブロッキングフィルタ処理とを交互に行う際に、前記Ｙ画像における１本のブロック境界に対するデブロッキングフィルタ処理を行っている最中にその処理が終了する前に、前記Ｃｂ画像又は前記Ｃｒ画像における１本のブロック境界に対するデブロッキングフィルタ処理を行う。
【発明の効果】
【００２０】
本発明の画像フィルタ処理装置および画像処理装置によれば、デブロッキングフィルタ処理の効率を向上させることが可能である。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態について図面を参照して説明する。
【００２２】
本実施の形態による画像フィルタ処理装置は、符号化（圧縮）された画像データに対して、デブロッキングフィルタ処理を実行する装置である。デブロッキングフィルタ処理とは、符号化（圧縮）された画像データを復号化（解凍）して得られた画像に対して実行する処理のことで、復号化して得られた画像のブロックノイズを減らす処理である。符号化（圧縮）された画像データとは、例えば、Ｈ．２６４、ＭＰＥＧ規格（ＭＰＥＧ−１、ＭＰＥＧ−２，ＭＰＥＧ−４等）、或いはその他の規格を用いて圧縮した画像である。
【００２３】
（画像フィルタ処理装置の構成）
本実施の形態による画像フィルタ処理装置、およびそれを含む画像処理装置の構成を図１に示す。画像処理装置１は、画像フィルタ処理装置１０、ＣＰＵ（Central Processing Unit）２０、メモリ３０を備え、画像フィルタ処理装置１０はフィルタ処理演算部１１、制御部１２、メモリアクセス部１４を有し、さらに制御部１２はレジスタ１３を含んでいる。
【００２４】
ＣＰＵ２０は、デブロッキングフィルタ処理を開始させる開始信号、途中で停止させるリセット信号、ブロック境界強度ＢＳ（Boundary Strength）等の各種信号を画像フィルタ処理装置１０に出力する。
【００２５】
ブロック境界強度ＢＳとはブロック境界毎に設定される値で、デブロッキングフィルタ処理における重み付けを指定する値であり、詳細は後述する。
【００２６】
画像フィルタ処理装置１０内における制御部１２は、画像フィルタ処理装置１０全体の制御を行うもので、ＣＰＵ２０から与えられた信号に基づいて行う。また、ＣＰＵ２０から与えられたブロック境界強度ＢＳを、内蔵するレジスタ１３に格納する。
【００２７】
メモリアクセス部１４は、メモリ３０をアクセスして格納されているデータを読み出してフィルタ処理演算部１１に出力し、あるいはフィルタ処理演算部１１から与えられたデータをメモリ３０に書き込みを行う。
【００２８】
フィルタ処理演算部１１は、メモリアクセス部１４から与えられたデータに対して、レジスタ１３内に格納されたブロック境界強度ＢＳを用いてフィルタ処理を行い、メモリアクセス部１４に出力する。
【００２９】
ここで、メモリ３０としては回転メモリを用いる。回転メモリは、先ず通常のメモリと同様に、図２に示されたように水平方向にデータを読み出す際に、先頭の画素１０１、１０２、１０３、…のアドレスを指定するのみで連続的に読み出すことができる。
【００３０】
さらに回転メモリでは、通常のメモリとは異なり、図３に示されたように垂直方向にデータを読み出す際に、先頭の画素２０１、２０２、２０３、…のアドレスを指定するのみで連続的に読み出すことができる。
【００３１】
即ち、回転メモリは、水平方向並びに垂直方向に連続的読み出しが可能なメモリである。従って、回転メモリを用いる場合は、水平方向および垂直方向いずれの方向に対しても、先頭の画素のアドレスを１回指定するだけで、例えば４個といった所定の個数の画素のデータを連続的に読み出すことが可能である。
【００３２】
通常のメモリでは、水平方向に対しては先頭の画素のアドレスを１回指定するだけで、４個の画素のデータを連続的に読み出すいわゆる横読みを行うことができる。ところが、垂直方向に対してはこのような連続的な縦読みを行うことができず、各画素毎に１回ずつアドレスを指定する必要があり、回転メモリを用いた場合と比較して処理速度は低下する。
【００３３】
（デブロッキングフィルタ処理と画像のメモリへの配置）
次に、本実施の形態をＨ．２６４規格で符号化した画像に用いた場合について、説明する。
【００３４】
まず、Ｈ．２６４はＹ画像、Ｃｂ画像、Ｃｒ画像を有する。このＹ画像、Ｃｂ画像、Ｃｒ画像の各々に対して、一度にデブロッキングフィルタ処理を施す画素の基本単位が定められており、その基本単位をマクロブロックという。
【００３５】
ここで、図４に、Ｙ画像を回転メモリ３０に格納するときのレイアウトの一例を示す。Ｙ画像におけるブロック境界のデブロッキングフィルタ処理を行う場合には、１６×１６画素を単位とする。この１６×１６画素の単位が、Ｙ画像のマクロブロックである。さらに、最も左に位置する垂直方向のブロック境界ＢＬ１にデブロッキングフィルタ処理を行うためにその左側に４画素分の面積が必要であり、最も上に位置する水平方向のブロック境界ＢＬ５にデブロッキングフィルタ処理を行うためその上側に４画素分の面積が必要である。その結果、全体で２０×２０画素の面積を必要とする。この２０×２０画素が、Ｙ画像に対するデブロッキングフィルタ処理を行う処理単位である。
【００３６】
次に、Ｃｂ画像を回転メモリ３０に格納するときのレイアウトの一例は、図５に示されるようである。Ｃｂ画像におけるブロック境界のデブロッキングフィルタ処理を行う場合には、８×８画素を単位とする。この８×８画素の単位が、Ｃｂ画像のマクロブロックである。さらに、最も左に位置する垂直方向のブロック境界ＢＬ１にデブロッキングフィルタ処理を行うためにその左側に４画素分の面積が必要であり、最も上に位置する水平方向のブロック境界ＢＬ３にデブロッキングフィルタ処理を行うためその上側に４画素分の面積が必要であるため、全体で１２×１２画素の面積を必要とする。この１２×１２画素が、Ｃｂ画像に対するデブロッキングフィルタ処理を行う処理単位である。
【００３７】
次に、Ｃｒ画像を回転メモリ３０に格納するときのレイアウトの一例は、図６に示されるようである。Ｃｒ画像におけるブロック境界のデブロッキングフィルタ処理を行う場合には、８×８画素を単位とする。この８×８画素の単位が、Ｃｒ画像のマクロブロックである。Ｃｒ画像はＣｂ画像と同様に、全体で１２×１２画素の面積を必要とする。この１２×１２画素が、Ｃｒ画像に対するデブロッキングフィルタ処理を行う処理単位である。
【００３８】
以上に説明した、Ｙ画像、Ｃｂ画像、およびＣｒ画像各々のマクロブロックとデブロッキングフィルタ処理を行う処理単位は、Ｈ．２６４の規格に定められた内容である。
【００３９】
また、図７に、Ｙ画像、Ｃｂ画像、およびＣｒ画像を１組として配置したときのレイアウトの一例を示す。全体で３２×３２画素の面積が必要となる。
【００４０】
図８に、１６×１６画素の画像を回転メモリに格納するときのレイアウトの一例を示す。例えば、ＭＰＥＧ−１・ＭＰＥＧ−２・ＭＰＥＧ−４といったＭＰＥＧ規格では、Ｈ．２６４と同様に、Ｙ画像のマクロブロックは最大１６×１６画素である。従って、上下左右の４つの方向いずれに対してもデブロッキングフィルタ処理を実行するとした場合、全体で３２×３２画素の面積が必要になる。
【００４１】
従って、図７および図８に示されるように、回転メモリ３０として３２×３２画素のメモリを用いた場合は、Ｈ．２６４に加えて、例えばＭＰＥＧ規格といったマクロブロックが１６×１６画素の画像に対してもデブロッキングフィルタ処理を実行することが可能である。これは、例えば、Ｈ．２６４に対応し、さらに既存のＭＰＥＧ規格との互換性を有する装置を提供する場合に用いられる。
【００４２】
（デブロッキングフィルタ処理の順序）
図９乃至図１５を用いて、Ｙ画像、Ｃｂ画像、およびＣｒ画像における全てのブロック境界にデブロッキングフィルタ処理を実行する順序を説明する。このデブロッキングフィルタ処理の手順は、Ｈ．２６４の規格で定められた手順である。
【００４３】
まず、Ｈ．２６４では、ブロック境界ノイズが出るのは４×４画素を跨ぐ境界である。この画素サイズでブロック境界にノイズが出るのは、４×４画素のサイズで符号化し、その４×４画素を復号化するため、それを跨ぐ境界に画素値に差が発生しやすいためである。従って、Ｈ．２６４にデブロッキングフィルタ処理を実行する画像処理装置では、４×４画素のサイズでデブロッキングフィルタ処理を施す必要がある。
【００４４】
すなわち、Ｈ．２６４では、マクロブロックを４×４画素のサイズに分割して、その境界に対してデブロッキングフィルタ処理を実行する。
【００４５】
ここで、図９に、Ｙ画像における全てのブロック境界にデブロッキングフィルタ処理を行っていくときの順序を示す。
【００４６】
図９に示すように、マクロブロックが１６×１６画素のＹ画像は、１ブロックが４×４画素であるブロックに分割される。すなわち、１ブロックが４×４画素であるブロックの合計１６ブロックに分割される。従って、垂直方向はＢＬ１〜ＢＬ４の４本のブロック境界に分けられ、水平方向はＢＬ５〜ＢＬ８の４本のブロック境界に分けられる。
【００４７】
この垂直方向の１本のブロック境界において左から右方向に向かってＢＬ１〜ＢＬ４の順に処理を行い、この後水平方向の１本のブロック境界において上から下方向に向かってＢＬ５〜ＢＬ８の順に処理を行う。
【００４８】
次に、図１０に、Ｃｂ画像における全てのブロック境界にデブロッキングフィルタ処理を行っていくときの順序を示す。
【００４９】
図１０に示すように、マクロブロックが８×８画素のＣｂ画像は、１ブロックが４×４画素であるブロックに分割される。すなわち、１ブロックが４×４画素であるブロックの合計４ブロックに分割される。垂直方向はＢＬ１〜ＢＬ２の２本のブロック境界に分けられ、水平方向はＢＬ３〜ＢＬ４の２本のブロック境界に分けられる。
【００５０】
この垂直方向の１本のブロック境界において左から右方向に向かってＢＬ１〜ＢＬ２の順に処理を行い、この後水平方向の１本のブロック境界において上から下方向に向かってＢＬ３〜ＢＬ４の順に処理を行う。
【００５１】
次に、図１１に、Ｃｒ画像における全てのブロック境界にデブロッキングフィルタ処理を行っていくときの順序を示す。
【００５２】
図１１に示すように、マクロブロックが８×８画素のＣｒ画像は、１ブロックが４×４画素であるブロックに分割される。すなわち、１ブロックが４×４画素であるブロックの合計４ブロックに分割される。垂直方向はＢＬ１〜ＢＬ２の２本のブロック境界に分けられ、水平方向はＢＬ３〜ＢＬ４の２本のブロック境界に分けられる。
【００５３】
次に、Ｃｂ画像と同様に、図１１にＣｒ画像における全ブロック境界にデブロッキングフィルタ処理を行っていく場合、この垂直方向の１本のブロック境界において左から右方向にＢＬ１〜ＢＬ２の順に処理を行い、この後水平方向の１本のブロック境界において上から下方向にＢＬ３〜ＢＬ４の順に処理を行う。
【００５４】
図１２に、Ｙ画像のブロック境界ＢＬ１にデブロッキングフィルタ処理を行うときに用いるデータが格納された画素について示す。
【００５５】
垂直方向のブロック境界ＢＬ１に沿って、１ブロック毎に４画素ずつの画素群が配列されており、Ａ１乃至Ａ１６に至るまで合計１６画素の画素群が存在する。先ず、ブロック境界ＢＬ１における最も上に位置した境界にデブロッキングフィルタ処理を行う。この場合は、この境界をまたぐように左右４画素ずつ合計８画素を有する画素群Ａ１に格納されたデータを用いる。
【００５６】
次に、ブロック境界ＢＬ１における上から２番目に位置した境界に対し、これをまたぐように左右４画素ずつ合計８画素を有する画素群Ａ２に格納されたデータを用いてデブロッキングフィルタ処理を行う。
【００５７】
同様に、ブロック境界ＢＬ１における上から３番目に位置した境界に対し、これをまたぐ合計８画素を有する画素群Ａ３に格納されたデータを用いてデブロッキングフィルタ処理を行い、以下同様にブロック境界ＢＬ１における４〜１６番目に位置した境界に対し、これをまたぐそれぞれ合計８画素を有する画素群Ａ４〜Ａ１６に格納されたデータを用いてデブロッキングフィルタ処理を行う。
【００５８】
図１３に、Ｙ画像の垂直方向のブロック境界ＢＬ２にデブロッキングフィルタ処理を行うときに用いるデータが格納された画素について示す。
【００５９】
ブロック境界ＢＬ２における最上位の境界にデブロッキングフィルタ処理を行う場合、これをまたぐ合計８画素を有する画素群Ａ２１に格納されたデータを用い、さらに２番目〜１６番目にそれぞれに位置した境界をまたぐ８画素を有する画素群Ａ２２〜Ａ３６に格納されたそれぞれのデータを用いてデブロッキングフィルタ処理を順に行う。
【００６０】
同様に、垂直方向のブロック境界ＢＬ３、ＢＬ４に対してデブロッキングフィルタ処理を行っていく。
【００６１】
次に、図１４に示されたように、Ｙ画像の水平ブロック境界ＢＬ５にデブロッキングフィルタ処理を行うとき、最も左の境界にデブロッキングフィルタ処理を行うため、この境界をまたぐように上下合計８画素を有する画素群Ｂ１に格納されたデータを用い、さらに２〜１６番目にそれぞれに位置した境界をまたぐ８画素を有する画素群Ｂ１〜Ｂ１６に格納されたデータを用いてデブロッキングフィルタ処理を順に行う。
【００６２】
同様に、図１５に示されたように、水平方向のブロック境界ＢＬ６にデブロッキングフィルタ処理を行うため、これをまたぐ合計８画素を有する画素群Ｂ２１に格納されたデータを用い、さらに２番目〜１６番目にそれぞれに位置した境界をまたぐ８画素を有する画素群Ｂ２２〜Ｂ３６に格納されたデータを用いてデブロッキングフィルタ処理を順に行う。同様に、水平方向のブロック境界ＢＬ７、ＢＬ８に対してデブロッキングフィルタ処理を行いＹ画像の処理を終了する。
【００６３】
次に、Ｃｂ画像のブロック境界ＢＬ１〜ＢＬ４において、同様に垂直方向のブロック境界ＢＬ１、ＢＬ２に対して境界をまたぐ８個の画素を用いてそれぞれ８回ずつ処理を行っていき、水平方向のブロック境界ＢＬ３、ＢＬ４に対して境界をまたぐ８個の画素を用いて８回ずつ処理を行い、Ｃｂ画像のデブロッキングフィルタ処理を終了する。
【００６４】
次に、Ｃｂ画像と同様に、Ｃｒ画像のブロック境界ＢＬ１〜ＢＬ４において、垂直方向のブロック境界ＢＬ１、ＢＬ２、水平方向のブロック境界ＢＬ３、ＢＬ４に対してそれぞれ境界をまたぐ８個の画素を用いて処理を８回ずつ行い、Ｃｒ画像のデブロッキングフィルタ処理を終了する。
【００６５】
（ブロック境界強度ＢＳついて）
図１６に、Ｙ画像における各ブロック境界ＢＬ１〜ＢＬ８とブロック境界強度ＢＳとの関係を示す。図１７に、Ｃｂ画像、Ｃｒ画像における各ブロック境界ＢＬ１〜ＢＬ４とブロック境界強度ＢＳとの関係を示す。
【００６６】
ブロック境界強度ＢＳは、ブロック境界にどの程度の強さのデブロッキングフィルタ処理を行うか、即ちデブロッキングフィルタ処理における重み付けを指定する値であり、ブロック境界毎に設定される。またこのブロック境界強度ＢＳは、上述したマクロブロック毎に設定される。
【００６７】
図１６に示されたように、Ｙ画像における垂直方向のブロック境界ＢＬ１に関し、図中上から順に境界位置（０）、（１）、（２）、（３）が指定される。同様に、垂直方向のブロック境界ＢＬ２について、図中上から順に境界位置（４）、（５）、（６）、（７）、垂直方向のブロック境界ＢＬ３について、図中上から下へ向かって境界位置（８）、（９）、（１０）、（１１）、垂直方向のブロック境界ＢＬ２について、図中上から順に境界位置（１２）、（１３）、（１４）、（１５）が指定される。
【００６８】
さらに、水平方向のブロック境界ＢＬ５、ＢＬ６、ＢＬ７、ＢＬ８において、図中左から右へ向かってそれぞれ境界位置（１６）〜（１９）、（２０）〜（２３）、（２４）〜（２７）、（２８）〜（３１）が指定される。
【００６９】
そして、３２個の境界位置（０）〜（３１）にそれぞれブロック境界強度ＢＳが設定される。
【００７０】
図１７に示されたように、Ｃｂ画像、Ｃｒ画像において、垂直方向のブロック境界ＢＬ１、ＢＬ２にそれぞれ図中上から順に４分割された境界位置（０）〜（３）、（８）〜（１１）が指定される。同様に、水平方向のブロック境界ＢＬ３、ＢＬ４にそれぞれ図中上から順に４分割された境界位置（１６）〜（１９）、（２４）〜（２７）が指定される。
【００７１】
ここで、Ｃｂ画像、Ｃｒ画像における境界位置（０）〜（２７）において、図１６におけるＹ画像と同一の番号が付された境界位置には、同一のブロック境界強度ＢＳが設定される。
【００７２】
以上に説明したブロック境界強度ＢＳは、Ｈ．２６４の規格で決められているものである。
【００７３】
（本実施形態によるデブロッキングフィルタ処理の手順）
図１８のフローチャートに、本実施の形態によるデブロッキングフィルタ処理の手順を示す。ここで、ステップＳ１からＳ３１まではＹ画像、Ｃｂ画像、Ｃｒ画像における垂直方向のブロック境界、ステップＳ３３からＳ６３までは水平方向のブロック境界にデブロッキングフィルタ処理を行う。
【００７４】
先ず、Ｙ画像、Ｃｂ画像、Ｃｒ画像各々のデブロッキングフィルタ処理を行う処理単位のデータがまとめてメモリ３０に格納される。メモリ３０に格納されたデータに応じて、（０）乃至（３１）のブロック境界強度ＢＳが定められ、このブロック境界強度ＢＳがレジスタ１３に格納される。次に、図１８に示すフローチャートに応じて、メモリ３０に格納されたデータにデブロッキングフィルタ処理が実行される。
【００７５】
先ずステップＳ１として、メモリ３０からメモリアクセス部１４がＹ画像におけるブロック境界ＢＬ１の最上段の８個の画素（図１２におけるＡ１）からデータの読み出しを行い、フィルタ処理演算部１１に転送する。
【００７６】
ステップＳ２として、メモリ３０から読み出されたデータと、レジスタ１３から読み出されたブロック境界強度ＢＳとが用いられて、フィルタ処理演算部１１におけるパイプライン処理によりデブロッキングフィルタ処理が行われる。このパイプライン処理については、後述する。
【００７７】
ステップＳ３として、デブロッキングフィルタ処理後のデータがメモリアクセス部１４に与えられ、メモリ３０に書き込まれる。
【００７８】
ステップＳ４において、このステップＳ１からＳ３までの動作が、ブロック境界ＢＬ１に沿った１６個の画素に対して全て行われたかどうかを判断し、全て行われるとステップＳ５へ移行する。
【００７９】
ステップＳ５からＳ７までは、Ｃｂ画像におけるブロック境界ＢＬ１のデブロッキングフィルタ処理を行う。ステップＳ５として、メモリ３０からメモリアクセス部１４がＣｂ画像におけるブロック境界ＢＬ１の最上段の８個の画素からデータの読み出しを行い、フィルタ処理演算部１１に転送する。
【００８０】
ステップＳ６として、フィルタ処理演算部１１がメモリ３０から読み出されたデータとブロック境界強度ＢＳとを用いてデブロッキングフィルタ処理を行う。
【００８１】
ステップＳ７として、デブロッキングフィルタ処理後のデータがメモリアクセス部１４に与えられ、メモリ３０に書き込まれる。
【００８２】
ステップＳ７において、このステップＳ４からＳ７までの動作が、ブロック境界ＢＬ１に沿った８個の画素に対して全て行われたかどうかを判断し、全て行われるとステップＳ９へ移行する。
【００８３】
ステップＳ９からＳ１１まではＹ画像に戻り、ブロック境界ＢＬ２における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ１３へ移行する。
【００８４】
ステップＳ１３からＳ１５までＣｂ画像に戻り、Ｃｂ画像におけるブロック境界ＢＬ２における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ１７へ移行する。
【００８５】
ステップＳ１７からＳ１９において再びＹ画像に戻り、ブロック境界ＢＬ３における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き戻し、ステップＳ２１へ移行する。
【００８６】
ステップＳ２１からＳ２３まで、Ｃｒ画像へ移行する。Ｃｒ画像におけるブロック境界ＢＬ１における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ２５へ移行する。
【００８７】
ステップＳ２５からＳ２７において再度Ｙ画像に戻り、ブロック境界ＢＬ４における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き戻し、ステップＳ２９へ移行する。
【００８８】
ステップＳ２９からＳ３１まで、Ｃｒ画像へ戻る。Ｃｒ画像におけるブロック境界ＢＬ２における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ３３へ移行する。
【００８９】
ステップＳ３３からＳ３５においてＹ画像の垂直方向のブロック境界ＢＬ５における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き戻し、ステップＳ３７へ移行する。
【００９０】
ステップＳ３７らＳ３９まで、Ｃｂ画像へ移行し、Ｃｂ画像における垂直方向のブロック境界ＢＬ３における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ４１へ移行する。
【００９１】
ステップＳ４１からＳ４３において再びＹ画像のブロック境界ＢＬ６における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き戻し、ステップＳ４５へ移行する。
【００９２】
ステップＳ４５からＳ４７までＣｂ画像へ移行し、Ｃｂ画像におけるブロック境界ＢＬ４における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ４９へ移行する。
【００９３】
ステップＳ４９からＳ５１においてＹ画像のブロック境界ＢＬ７における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き戻し、ステップＳ５３へ移行する。
【００９４】
ステップＳ５３からＳ５５までＣｒ画像へ移行し、Ｃｒ画像におけるブロック境界ＢＬ３における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、ステップＳ５７へ移行する。
【００９５】
ステップＳ５７からＳ５９においてＹ画像のブロック境界ＢＬ８における１６回分のデブロッキングフィルタ処理を行ってメモリ３０に書き戻し、ステップＳ６１へ移行する。
【００９６】
ステップＳ６１からＳ６３まで再びＣｒ画像へ移行し、Ｃｒ画像におけるブロック境界ＢＬ４における８回分のデブロッキングフィルタ処理を行ってメモリ３０に書き込み、処理を終了する。
【００９７】
以上に説明した通り、本実施形態では、相互にデータの依存関係を有していない画像の１ブロック境界におけるデブロッキングフィルタ処理を交互に実行している。例えば、Ｙ画像の１ブロック境界におけるデブロッキングフィルタ処理を実行した後に、Ｙ画像とはデータの依存関係を有していないＣｂ画像或いはＣｒ画像の１ブロック境界におけるデブロッキングフィルタ処理を交互に実行する。
【００９８】
これは、隣接するブロック境界に対するデブロッキングフィルタ処理を連続して実行する場合と比較した場合に、その効果が顕著に現れる。まず、現在デブロッキングフィルタ処理を行っている垂直方向或いは水平方向のブロック境界に対して、このブロック境界にある全画素にわたってデブロッキングフィルタ処理が終了するまでの間、次の隣接する垂直方向或いは水平方向のブロック境界で使用する値が確定しない。これがすなわち、データの依存関係を有している、ということである。従って、例えば、Ｙ画像の垂直方向のブロック境界に連続的にデブロッキングフィルタ処理を行おうとすると、データの依存関係があるため、次の隣接する垂直方向のブロック境界のデブロッキングフィルタ処理を連続して実行することが出来ない。
【００９９】
一方、本実施形態では、Ｙ画像の垂直方向におけるデブロッキングフィルタ処理が全て終了しなくとも、Ｃｂ画像あるいはＣｒ画像のデブロッキングフィルタ処理が実行可能であり、次に説明するパイプライン処理と組み合わせることで、デブロッキングフィルタ処理の処理効率の向上を図ることが可能である。
【０１００】
また、本実施形態では、Ｙ画像、Ｃｂ画像、Ｃｒ画像各々のデブロッキングフィルタ処理を行う処理単位のデータに対してデブロッキングフィルタ処理を実行している。このため、ブロック境界強度ＢＳを、Ｙ画像、Ｃｂ画像、Ｃｒ画像各々のデブロッキングフィルタ処理で共有されるため、同じブロック境界強度ＢＳをＹ画像、Ｃｂ画像、Ｃｒ画像のデブロッキングフィルタ処理毎に設定する必要がないため、デブロッキングフィルタ処理の処理効率の向上を図ることが可能である。
【０１０１】
尚、本実施形態では、Ｙ画像、Ｃｂ画像、Ｃｒ画像の順にデブロッキングフィルタ処理を実行したが、データの依存関係を有していない画像に対してデブロッキングフィルタ処理を交互に実行する形態であれば、その他の実施形態も可能である。例えば、Ｙ画像、Ｃｒ画像、Ｃｂ画像の順や、Ｃｒ画像、Ｙ画像、Ｃｂ画像の順や、その他の組み合わせの順に実行する形態も可能である。
【０１０２】
（パイプライン処理）
本実施の形態のフィルタ処理演算部１１におけるパイプライン処理について、図１９を用いて説明する。図１９は、本実施の形態による画像フィルタ処理装置におけるパイプライン構造を示す説明図である。
【０１０３】
本実施の形態のフィルタ処理演算部１１は、１つのデブロッキングフィルタ処理を２０ステージで処理する。すなわち、例えば、Ｙ画像における１つのブロック境界を含んだ８画素分のデータについて、図１８に示すステップＳ１乃至Ｓ４に示す処理（メモリ３０からの読み出し、デブロッキングフィルタ処理、メモリ３０への書き込み等）を、１つのデブロッキングフィルタ処理にて２０ステージで処理されることである。ステップＳ５以降の４ステップ毎の処理や、Ｃｂ画像やＣｒ画像についても、上記と同様に２０ステージで処理される。
【０１０４】
本実施の形態のフィルタ処理演算部１１では、図１２に示されたように、例えばＹ画像におけるブロック境界ＢＬ１における１６回のデブロッキングフィルタ処理を行う際に、最上位置の８画素の画素群Ａ１の処理を１段目のパイプラインＰＬ１を用いて開始し、このパイプラインＰＬ１における２サイクル目から２つ目の８個の画素群Ａ２の処理を２段目のパイプラインＰＬ２を用いて開始し、このパイプラインＰＬ２における２サイクル目から３つ目の８画素の画素群Ａ３の処理を３段目のパイプラインＰＬ３を用いて開始する。
【０１０５】
そして、１６個目の８画素の画素群Ａ１６の処理を１６段目のパイプラインＰＬ１６を用いて開始する。この時点では１段目のパイプラインＰＬ１は１６ステージ目に相当するため、ブロックＢＬ１における最上位置の画素群Ａ１の処理は、２０ステージに渡る処理が全て終了していない。
【０１０６】
次に、１７段目のパイプラインＰＬ１７を用いて、Ｃｂ画像のブロック境界ＢＬ１におけるデブロッキングフィルタ処理を実行する。これはすなわち、１段目のパイプライン処理が全て終了していなくとも、この処理結果に依存しないＣｂ画像の処理を１７段目のパイプラインＰＬ１７を用いて直ちに開始することができる。
【０１０７】
同様に、Ｃｂ画像におけるブロック境界ＢＬ１のデブロッキングフィルタ処理を８段のパイプラインＰＬ１７〜ＰＬ２０、ＰＬ１〜ＰＬ４を用いて処理した後、Ｙ画像のブロック境界ＢＬ２のデブロッキングフィルタ処理に移行する。
【０１０８】
以後、図１８に示すフローチャートに応じて、デブロッキングフィルタ処理が実行される。  
以上のように、本実施の形態では、Ｙ画像における１つのブロック境界にデブロッキングフィルタ処理を行っている最中に、その処理が終了する前にＣｂ画像又はＣｒ画像におけるブロック境界のデブロッキングフィルタ処理を行うことができる。このように、データ依存関係のある同じ画像におけるブロック境界のデブロッキングフィルタ処理を離し、依存関係のない他の画像におけるデブロッキングフィルタ処理を連続して行うことにより、パイプライン・ストールを発生させることなく、Ｙ画像、Ｃｂ画像、Ｃｒ画像の全体の処理速度を向上させることができる。これはすなわち、本実施の形態によれば、デブロッキングフィルタ処理におけるパイプラインステージを増加させて、周波数を高速にすることが可能である。
【０１０９】
この本実施の形態のパイプライン処理は、依存関係のある画像の処理を実行する場合と比較した場合、その効果が顕著に見られる。
【０１１０】
例えば、フィルタ処理演算部１１におけるパイプライン処理を、例えばＹ画像におけるブロック境界に連続的に行おうとすると、現在のブロック境界の全てのパイプライン処理が終了するまでは、現在のブロック境界のデブロッキングフィルタ処理と依存関係のある次のブロック境界のパイプライン処理を開始することができない。
【０１１１】
よって、同じＹ画像における隣のブロック境界ＢＬ２における最上位置の８画素の画素群Ａ２１の処理を、１７段目のパイプラインＰＬ１７を用いて開始しようとしても、ブロックＢＬ１における最上位置の画素群Ａ１の処理はまだ１７ステージ目であって、２０ステージに渡る処理が全て終了していない。
【０１１２】
ブロック境界ＢＬ２のデブロッキングフィルタ処理を行うためには、この境界にまたがる８個の画素のデータが必要であるが、ブロック境界ＢＬ２の左側に位置する４個の画素のデータは、ブロック境界ＢＬ１の処理が全て終了するまでは確定しない。
【０１１３】
よって、１段目のパイプラインＰＬ１の２０ステージの処理が全て終了するまでの間、ブロック境界ＢＬ２の処理は開始できないこととなる。即ち、１７ステージから２０ステージまでの４ステージ分、１ステージを１サイクルで実行する場合は４サイクル分、パイプラインのストールが生じる。
【０１１４】
このことは、周波数が高くなるほど影響が大きい。何故なら、周波数が高くなるにつれて１サイクルの時間が短くなり、１つのデブロッキングフィルタ処理においてより多くのサイクル数を必要とするため、１つのデブロッキングフィルタ処理をより多くのステージに分割する必要があるためである。
【０１１５】
一方、本実施の形態によれば、Ｙ画像におけるブロック境界ＢＬ１のデブロッキングフィルタ処理を１６段のパイプラインＰＬ１〜ＰＬ１６を用いて処理した後、他のＣｂ画像のブロック境界ＢＬ１に移行する。このため、１段目のパイプライン処理が全て終了していなくとも、この処理結果に依存しないＣｂ画像の処理を１７段目のパイプラインＰＬ１７を用いて直ちに開始することができる。
【０１１６】
同様に、Ｃｒ画像におけるブロック境界ＢＬ１のデブロッキングフィルタ処理を８段のパイプラインＰＬ１７〜ＰＬ２０、ＰＬ１〜ＰＬ４を用いて処理した後、Ｙ画像のブロック境界ＢＬ２に移行する。よって、いずれのパイプラインＰＬ１〜ＰＬ２０の処理の終了時期に影響されることなく、パイプラインのストールを伴うことなく連続的に処理を行うことができるので、処理効率が向上する。
【０１１７】
但し、本発明ではパイプラインのステージは２０に限定されず、例えば１６より大きく２４以下としてもよい。この１６とは、Ｙ画像の処理単位の値であり、１６より大きくなる場合は本発明としての効果がある。２４とは、Ｙ画像、Ｃｂ画像又はＣｒ画像の処理単位を合計した値であり、この２４より大きい値にした場合はパイプラインのストールが生じる。
【０１１８】
また、１つの処理を分割したパイプラインのステージ数は、パイプライン処理における最大で並行実行されるステージ数に等しく定められる。
【０１１９】
（他の実施の形態）
上述した実施の形態はいずれも一例であって、本発明を限定するものではない。
【０１２０】
例えば、本実施の形態では、メモリ３０として１つのメモリを用いたが、Ｙ画像、Ｃｂ画像、およびＣｒ画像について各々異なるメモリを用いて格納する構成も可能である。
【０１２１】
例えば、上記実施の形態では、回転メモリを用いている。しかし、回転メモリに限らず、一方向にしか連続的な読み出しができない通常のメモリを用いる場合であっても、本発明を適用することができる。
【０１２２】
また、本実施の形態では、Ｈ．２６４を用いて符号化した画像に対してデブロッキングフィルタ処理を実行する例を示したが、例えばＭＰＥＧ−４を用いた画像に対しては次の通りにデブロッキングフィルタ処理を実行する。
【０１２３】
ＭＰＥＧ−４では、マクロブロックの大きさはＨ．２６４と同じであるが、８×８画素を符合化及び復号化する。従って、ＭＰＥＧ-４規格を用いた場合には、マクロブロックを８×８画素のサイズに分割して、その境界に対してデブロッキングフィルタ処理を実行する。
【０１２４】
以下、同様に、他の規格による画像に対して本実施の形態を用いる場合は、符合化及び復号化する画素のサイズに応じてマクロブロックを分割して、その境界に対してデブロッキングフィルタ処理を実行する。
【０１２５】
また、本実施の形態は以下の態様も含まれる。
・パイプラインのステージ数が、１６より大きく２４以下である画像処理装置。
・回転メモリ３０のサイズが、３２×３２画素のメモリであること画像処理装置。
・Ｈ．２６４またはＭＰＥＧ規格のいずれかを用いて符号化された画像に対して、
デブロッキングフィルタ処理が実行可能な画像処理装置。
【図面の簡単な説明】
【０１２６】
【図１】本発明の実施の形態による画像フィルタ処理装置およびそれを含む画像処理装置の構成を示すブロック図。
【図２】回転メモリにおいて水平方向に読み出す様子を示した説明図。
【図３】回転メモリにおいて垂直方向に読み出す様子を示した説明図。
【図４】Ｙ画像を１６×１６画素を単位として回転メモリに格納するときのレイアウトを示した説明図。
【図５】Ｃｂ画像を８×８画素を単位として回転メモリに格納するときのレイアウトを示した説明図。
【図６】Ｃｒ画像を８×８画素を単位として回転メモリに格納するときのレイアウトを示した説明図。
【図７】Ｙ画像、Ｃｂ画像、Ｃｒ画像を回転メモリに格納するときのレイアウトの一例を示した説明図。
【図８】１６×１６画素の画像を回転メモリに格納するときのレイアウトの一例を示した説明図。
【図９】Ｙ画像にデブロッキングフィルタ処理を行うときのブロック境界の順序を示す説明図。
【図１０】Ｃｂ画像にデブロッキングフィルタ処理を行うときのブロック境界の順序を示す説明図。
【図１１】Ｃｒ画像にデブロッキングフィルタ処理を行うときのブロック境界の順序を示す説明図。
【図１２】Ｙ画像におけるブロック境界ＢＬ１にデブロッキングフィルタ処理を行うときの画素の順序を示した説明図。
【図１３】Ｙ画像におけるブロック境界ＢＬ２にデブロッキングフィルタ処理を行うときの画素の順序を示した説明図。
【図１４】Ｙ画像におけるブロック境界ＢＬ５にデブロッキングフィルタ処理を行うときの画素の順序を示した説明図。
【図１５】Ｙ画像におけるブロック境界ＢＬ６にデブロッキングフィルタ処理を行うときの画素の順序を示した説明図。
【図１６】Ｙ画像における各ブロック境界とブロック境界強度ＢＳとの関係を示した説明図。
【図１７】Ｃｂ画像、Ｃｒ画像における各ブロック境界とブロック境界強度ＢＳとの関係を示した説明図。
【図１８】本実施の形態による画像フィルタ処理装置が行う処理の手順を示したフローチャート。
【図１９】本実施の形態による画像フィルタ処理装置におけるパイプライン構造を示す説明図。
【符号の説明】
【０１２７】
１  画像処理装置
１０  画像フィルタ処理装置
１１  フィルタ処理演算部
１２  制御部
１３  レジスタ
１４  メモリアクセス部
２０  ＣＰＵ
３０  メモリ
【図１】
0004834446.tif 000002
【図２】
0004834446.tif 000003
【図３】
0004834446.tif 000004
【図４】
0004834446.tif 000005
【図５】
0004834446.tif 000006
【図６】
0004834446.tif 000007
【図７】
0004834446.tif 000008
【図８】
0004834446.tif 000009
【図９】
0004834446.tif 000010
【図１０】
0004834446.tif 000011
【図１１】
0004834446.tif 000012
【図１２】
0004834446.tif 000013
【図１３】
0004834446.tif 000014
【図１４】
0004834446.tif 000015
【図１５】
0004834446.tif 000016
【図１６】
0004834446.tif 000017
【図１７】
0004834446.tif 000018
【図１８】
0004834446.tif 000019
【図１９】
0004834446.tif 000020