(57)【特許請求の範囲】
【請求項１】
ブロック境界周辺の互いに隣接する第１ないし第８の画素データに対し、ブロックノイズ除去のためのフィルタリング処理演算を行うデブロッキングフィルタ演算装置において、
上記第１ないし第８の画素データのうちの各一対を入力とし、該各一対の入力データ、上記第１及び第８の画素データとこれらの画素データの外側に隣接する画素データと量子化パラメータの値とを比較して求めた２つの値、または丸めなしを示す任意の値のうちのいずれか１つを、それぞれ選択する第１、及び第２の選択回路と、
累算するための演算結果、または丸めを行うための任意の値を選択する第３の選択回路と、
上記第１、及び第２の選択回路の出力を入力とし、それぞれを上記フィルタリング処理演算のサイクルに応じてシフトさせる第１、第２のシフタと、
上記第１のシフタの出力、上記第２のシフタの出力、および上記第３の選択回路の出力を加算する加算器と、
上記加算器の出力を入力とし、該加算器の出力を上記累算するための演算結果として上記第３の選択回路へ出力するレジスタと、
上記レジスタの出力を入力とし、該レジスタの出力を上記フィルタリング処理演算のサイクルに応じてシフトさせ、演算結果として上記第３の選択回路に出力する第３のシフタとを、それぞれ有する、上記第１ないし第８の画素データに対応して並列に設けられた第１ないし第８の演算ブロックと、
上記第１ないし第８の演算ブロックからの出力を選択して出力する出力選択回路と、
上記演算ブロックのうちの、第１及び第２の演算ブロック、第３及び第４の演算ブロック、第５及び第６の演算ブロック、並びに第７及び第８の演算ブロックでそれぞれ構成される演算ブロックの組の、各組内におけるそれぞれのフィルタリング処理が終了するまでの処理演算のサイクルが同じとなり、かつ各組間において、それぞれの組のフィルタリング処理が順次連続して終了するように、上記処理演算のサイクルに応じて、上記各演算ブロックの処理演算を制御するとともに、上記出力選択回路を制御して上記演算ブロックからの出力を上記演算ブロックの組単位で選択してパイプライン出力させる制御回路とを備えたことを特徴とするデブロッキングフィルタ演算装置。
【請求項２】
ブロック境界周辺の連続する第１ないし第８の画素データに対し、ブロックノイズ除去のためのフィルタリング処理演算を行うデブロッキングフィルタ演算方法において、
上記第１ないし第８の画素データの各一対を入力とし、該各一対の入力データ、上記第１及び第８の画素データとこれらの画素データの外側に隣接する画素データと量子化パラメータの値とを比較して求めた２つの値、または丸めなしを示す任意の値のうちのいずれか１つを、それぞれ選択し、上記フィルタリング処理演算のサイクルに応じてシフトさせる第１、第２の処理と、
累算するための演算結果、または丸めを行うための任意の値を選択する第３の処理と、
上記第１、第２、及び第３の処理で得られた値を加算する第４の処理と、
上記第４の処理で得られた加算値を上記累算するための演算結果とするとともに、該加算値を、上記フィルタリング処理演算のサイクルに応じてシフトさせる第５の処理とを、含み、
上記第１ないし第８の画素データに対応するフィルタリング処理演算を、
上記画素データのうちの、第１及び第２の画素データ、第３及び第４の画素データ、第５及び第６の画素データ、並びに第７及び第８の画素データのそれぞれの組の、各組の画素データに対するフィルタリング処理演算が終了するまでの処理演算のサイクルが同じとなり、かつ各組間において、それぞれの組の画素データに対するフィルタリング処理が順次連続して終了するように、並列に実行するステップと、
該ステップにより得られたフィルタリング処理済みの画素データを、上記画素データのそれぞれの組毎に順次連続してパイプライン出力させるステップとを備えたことを特徴とするデブロッキングフィルタ演算方法。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、画像信号処理等で用いられる復元画素データのポスト処理の１つであるブロックノイズ除去のためのデブロッキングフィルタ演算装置及びデブロッキングフィルタ演算方法に関し、ＭＰＥＧ４で規格化されているデブロッキングフィルタ演算のＤＣオフセットモードにおける演算を実行するデブロッキングフィルタ演算装置及びデブロッキングフィルタ演算方法に関するものである。
【０００２】
背景技術
動画像データを帯域圧縮技術を用いて符号化及び復号化する方式として、ＩＳＯ−ＩＥＣ／ＪＴＣＩ／ＳＣ２／ＷＧ１１にて議論され標準化されたＭＰＥＧ(Moving Picture Coding Experts Group)方式がある。これらＭＰＥＧ方式は、画面内の相関を利用し、画面内を複数画素から構成されるブロックに分割し、このブロック内データを直交変換方式の１つである離散コサイン変換を行い、量子化、ハフマン符号化を行う処理を施し、画像データの圧縮を実現することを基本としている。これらの処理を施した画素は、逆の処理を行っても元の画素を忠実に再現できず、その結果２つの隣り合うブロックの境界部分の画素は異なった値を持つことになる。そして、これによりブロックノイズが発生する。
【０００３】
ＭＰＥＧ４ではこの対策としてデブロッキングフィルタが規定されている。このフィルタは、ブロック境界を中心とした１次元のウインドウを例えば図４のようにとる場合に２種類の動作モードから構成される。図４において、g(ｎ)(ｎは０から９までの整数)はブロック境界を中心として互いに隣接する１０個の画素の画素データを示している。そして、このフィルタは、ブロック境界近傍画素のアクティビティーによりそれらの動作モードを適応的スイッチする。動作モードのスイッチには次の評価関数を用いる。
【０００４】
0003757116.tif 000002
なお、Thはしきい値を示す。そして、評価関数を用いて動作モードは次のようにスイッチされる。
【０００５】
0003757116.tif 000003
ここで示されるＤＣオフセットモードは、ブロック境界の画素データの変化が穏やかな場合の動作モードであり、デフォルトモードは変化が激しい場合の動作モードであり、ＤＣオフセットモードに関しては以下に示すフィルタが定義されている。
【０００６】
coef(１)＝１；
coef(２)＝１；
coef(３)＝２；
coef(４)＝２；
coef(５)＝４；
coef(６)＝２；
coef(７)＝２；
coef(８)＝１；
coef(９)＝１；
【０００７】
そして、次のようなフィルタリング処理を行い、処理画素g'(ｍ)(ｍ＝１，２，３，４，５，６，７，８)を得る。
0003757116.tif 000004
【０００８】
なお、ＱＰはg(５)の画素値が属するマクロブロックの量子化パラメータである。また、min_padding及びmax_paddingは、上記の式で定義されるように、第１の画素データg(１)及び第８の画素データg(８)とこれらの画素データの外側に隣接する画素データg(０)及びg(９)とからそれぞれ求められた値である。このフィルタリングは全ての水平エッジに沿って行い、次に垂直エッジに沿って行う。このフィルタリングにおいて
0003757116.tif 000005
をプロセッサー内の汎用演算器でソフトウエア的に実行すると図３に示すフローとなる。
【０００９】
以下、図３に示すフローについて説明する。スタート命令によりまず演算処理する８つの画素g(ｍ)のうちの一つのｍの値のセットを行う(ステップＳ１)。次に、ｉの値をセットする(ステップＳ２)ｉの初期値としては、ｉ＝−４とする。次にｉが５であるかどうかを比較し(ステップＳ３)、５でなければｍとｉを加算する(ステップＳ４)。そしてステップＳ５によりｍ＋ｉが１よりも小さい場合はmin_paddingデータをメモリにライトし、ｉに１を加算する(ステップＳ６)。また、ｍ＋ｉが１以上の場合は、ステップＳ７によりｍ＋ｉと８を比較し、８よりも大きい場合はmax_paddingデータをメモリにライトし、ｉに１を加算する(ステップＳ８)。また、ｍ＋ｉが８以下の場合は、g(ｍ＋ｉ)データをメモリにライトし、ｉに１を加算する(ステップＳ９)。１つのｍの値に対しては、これらの動作をｉが−４〜４に変化するまで計９回繰り返し、ｉが５の時に今までメモリへライトした９つのデータに対しその積和を行い(ステップＳ１０)、結果をステップＳ１１により４ビットシフトすることで、フィルタリング処理した１つの結果，即ちフィルタリング処理した画素データを出力する。
【００１０】
しかしながら、従来の汎用演算器によるフィルタリング処理においては、１つのｍの値に対し、ｉを−４〜４の計９回繰り返し１つの結果を出力する。この１つの結果を出力するには最大で６７サイクル必要である。またｍの値は１〜８の計８個あるため６７サイクル×８の５３６サイクル必要となり、演算サイクル数が増加して処理が遅くなるという問題があった。
本発明は上記のような問題点を解決するためになされたものであり、演算サイクルの少ないデブロッキングフィルタ演算装置を提供することを目的とする。
【００１１】
発明の開示
本発明に係るデブロッキングフィルタ演算装置は、ブロック境界周辺の互いに隣接する第１ないし第８の画素データに対し、ブロックノイズ除去のためのフィルタリング処理演算を行うデブロッキングフィルタ演算装置において、上記第１ないし第８の画素データのうちの各一対を入力とし、該各一対の入力データ、上記第１及び第８の画素データとこれらの画素データの外側に隣接する画素データと量子化パラメータの値とを比較して求めた２つの値、または丸めなしを示す任意の値のうちのいずれか１つを、それぞれ選択する第１、及び第２の選択回路と、累算するための演算結果、または丸めを行うための任意の値を選択する第３の選択回路と、上記第１、及び第２の選択回路の出力を入力とし、それぞれを上記フィルタリング処理演算のサイクルに応じてシフトさせる第１、第２のシフタと、上記第１のシフタの出力、上記第２のシフタの出力、および上記第３の選択回路の出力を加算する加算器と、上記加算器の出力を入力とし、該加算器の出力を上記累算するための演算結果として上記第３の選択回路へ出力するレジスタと、上記レジスタの出力を入力とし、該レジスタの出力を上記フィルタリング処理演算のサイクルに応じてシフトさせ、演算結果として上記第３の選択回路に出力する第３のシフタとを、それぞれ有する、上記第１ないし第８の画素データに対応して並列に設けられた第１ないし第８の演算ブロックと、上記第１ないし第８の演算ブロックからの出力を選択して出力する出力選択回路と、上記演算ブロックのうちの、第１及び第２の演算ブロック、第３及び第４の演算ブロック、第５及び第６の演算ブロック、並びに第７及び第８の演算ブロックでそれぞれ構成される演算ブロックの組の、各組内におけるそれぞれのフィルタリング処理が終了するまでの処理演算のサイクルが同じとなり、かつ各組間において、それぞれの組のフィルタリング処理が順次連続して終了するように、上記処理演算のサイクルに応じて、上記各演算ブロックの処理演算を制御するとともに、上記出力選択回路を制御して上記演算ブロックからの出力を上記演算ブロックの組単位で選択してパイプライン出力させる制御回路とを備えている。これにより、各演算ブロックによる演算の処理サイクルを削減できるとともに、演算ブロックの各組の演算結果をパイプライン出力することができ、演算処理のサイクルの削減を図ることができる。
【００１３】
また、本発明に係るデブロッキングフィルタ演算方法は、ブロック境界周辺の連続する第１ないし第８の画素データに対し、ブロックノイズ除去のためのフィルタリング処理演算を行うデブロッキングフィルタ演算方法において、上記第１ないし第８の画素データの各一対を入力とし、該各一対の入力データ、上記第１及び第８の画素データとこれらの画素データの外側に隣接する画素データと量子化パラメータの値とを比較して求めた２つの値、または丸めなしを示す任意の値のうちのいずれか１つを、それぞれ選択し、上フィルタリング記処理演算のサイクルに応じてシフトさせる第１、第２の処理と、累算するための演算結果、または丸めを行うための任意の値を選択する第３の処理と、上記第１、第２、及び第３の処理で得られた値を加算する第４の処理と、上記第４の処理で得られた加算値を上記累算するための演算結果とするとともに、該加算値を、上記フィルタリング処理演算のサイクルに応じてシフトさせる第５の処理とを、含み、上記第１ないし第８の画素データに対応するフィルタリング処理演算を、上記画素データのうちの、第１及び第２の画素データ、第３及び第４の画素データ、第５及び第６の画素データ、並びに第７及び第８の画素データのそれぞれの組の、各組の画素データに対するフィルタリング処理演算が終了するまでの処理演算のサイクルが同じとなり、かつ各組間において、それぞれの組の画素データに対するフィルタリング処理が順次連続して終了するように、並列に実行するステップと、該ステップにより得られたフィルタリング処理済みの画素データを、上記画素データのそれぞれの組毎に順次連続してパイプライン出力させるステップとを備えている。これにより、各演算ブロックによる演算の処理サイクルを削減できるとともに、演算ブロックの各組の演算結果をパイプライン出力することができ、演算処理のサイクルの削減を図ることができる。
【００１４】
発明を実施するための最良の形態
図１は、本発明の実施の形態に係るデブロッキングフィルタ演算装置の構造を示すブロック図であり、本実施の形態に係るデブロッキングフィルタ演算装置は、デブロッキングフィルタ演算のうちの一部である、
0003757116.tif 000006
という演算を行うものである。図において、制御回路１は０から７までの処理サイクルのカウントを行い、そのカウント値を、フィルタリングの対象となる第１ないし第８の画素ｍ(ｍは１から８までの整数)に対応する第１ないし第８の演算ブロック１０１〜１０８、およびこの演算ブロック１０１〜１０８の出力を選択する出力選択回路７に出力する。演算ブロック１０１は、外部において予め作成され、入力されるデータであるmax_padding３，min_padding４，実際の８ビットの画素データであるg(ｘ)５，g(ｘ+１)６のうちの少なくとも２つを入力とする第１及び第２の選択回路１１１，１２１と、データ“８"及び後述するレジスタ１７１の出力を入力とする第３の選択回路１３１と、第１及び第２の選択回路１１１，１２１の選択結果をそれぞれシフトさせる第１、第２のシフタ１４１，１５１、これらの第１、第２のシフタ１４１，１５１の出力と第３の選択回路１３１の出力とを加算する加算器１６１、加算器１６１の出力が入力されるレジスタ１７１、レジスタ１７１の出力を入力としてこれをシフトさせて出力選択回路７に出力する第３のシフタ１８１とを備えている。g(ｘ)５と，g(ｘ+１)６とは１６ビットのバスを介して入力される。max_padding３，min_padding４は、従来の技術において式で示したように、フィルタリング対象となる第１ないし第８の画素データg(ｍ)のうちの第１の画素データg(１)及び第８の画素データg(８)と、これらの画素データの外側に隣接する画素データg(０)及びg(９)と量子化パラメータの値とを比較して求められた値である。演算ブロック１０２〜１０８も、演算ブロック１０１と同様の構成を有しており、max_padding３，min_padding４，実際の８ビットの画素データであるg(ｘ)５，g(ｘ+１)６、値０のうちの少なくとも２つを入力とし、該入力した２つの値のうちのいずれかを演算処理サイクルに応じて選択する第１の選択回路１１２〜１１８、及び第２の選択回路１２２〜１２８と、演算処理サイクルに応じて、累算するための演算結果（第３のシフタの出力）または値８を選択する第３の選択回路１３２〜１３８と、上記第１の選択回路１１２〜１１８の各出力を、演算処理サイクルに応じてシフトさせる第１のシフタ１４２〜１４８と、上記第２の選択回路１２２〜１２８の各出力を、演算処理サイクルに応じてシフトさせる第２のシフタ１５２〜１５８と、上記第１のシフタ１４２〜１４８の出力、上記第２のシフタ１５２〜１５８の出力、および上記第３の選択回路１３２〜１３８の出力をそれぞれ加算する加算器１６２〜１６８と、上記加算器１６２〜１６８の各出力を、演算サイクルに応じて上記累算するための演算結果として上記第３の選択回路１３２〜１３８にそれぞれ出力するレジスタ１７２〜１７８と、上記レジスタ１７２〜１７８の各出力を演算結果として上記出力選択回路７に出力する第３のシフタ１８２〜１８８とを備えている。出力選択回路７は第１ないし第８の演算ブロック１０１〜１０８の出力を選択して出力８として出力する。
【００１５】
また、図２，図５及び図６は本実施の形態に係るデブロッキングフィルタ演算装置の動作を説明するための図であり、図２は演算ブロック１０１〜１０４の演算処理結果と制御回路１のカウント値との関係を示し、図５は演算ブロック１０５〜１０８の演算処理結果と制御回路１のカウント値との関係を示し、図６は各演算ブロック１０１〜１０８から出力演算回路７への出力と、カウント値との関係を示している。図において、ｍ＝１〜８はそれぞれ演算ブロック１０１〜１０８に対応し、Ｍ〜Ｕは演算ブロック１０１〜１０８の演算結果を示している。また、黒丸は入力データであるg(ｘ)５、g(ｘ+１)６、max_padding３，min_padding４が入力されることを示している。また、AUはg(ｘ)５を示し、ALはg(ｘ+１)６を示し、CRLはmin_padding４を示し、CRUはmax_padding３を示している。また、記号“＜＜”はビットシフトを示している。
以上のように構成されたデブロッキングフィルタ演算装置の動作について図１，図２，図５及び図６を用いて説明する。
【００１６】
図１に示す制御回路１は、スタート信号２によりカウントアップを行い０〜７までカウントした後は２〜７を繰り返し、図２及び図５に示すようにカウンタ値ＣＮＴの値が０の場合は画素信号g(１)、g(２)、ＣＮＴの値が１の場合は画素信号g(３)、g(４)、ＣＮＴの値が２の場合は画素信号g(５)、g(６)、ＣＮＴの値が３の場合は画素信号g(７)、g(８)、ＣＮＴの値が４の場合は画素信号g(７)、g(８)、ＣＮＴの値が５の場合は画素信号g(７)、g(８)、ＣＮＴの値が６の場合は画素信号g(９)、g(１０)、ＣＮＴの値が７の場合は画素信号g(１１)、g(１２)を随時入力させる。
【００１７】
演算ブロック１０１においては、図２に示すように、ＣＮＴ＝０の場合、g(２)、g(１)が第１，第２の選択回路１１１，１２１で選択され、第３の選択回路１３１では"８"が選択され、第２のシフタ１５１により入力データが２ビットシフトされ、第１のシフタ１４１により１ビットシフトされ、第１のシフタ１４１と第２のシフタ１５１と第３の選択回路１３１の出力とが加算器１６１で加算されて、レジスタ１７１に格納される。この処理サイクルの演算結果として得られるデータＭは図２に示されているように、Ｍ＝AU＜＜２+AL＜＜１+８となる。
【００１８】
次にＣＮＴ＝１となると、g(４)、g(３)が第１，第２の選択回路１１１，１２１で選択され、第３の選択回路１３１ではＣＮＴ＝０の際の演算結果であるＭがレジスタ１７１から入力されるのでこれを選択し、第２のシフタ１５１により入力データが１ビットシフトされ、第１のシフタ１４１ではビットシフトされず、第１のシフタ１４１と第２のシフタ１５１と第３の選択回路１３１の出力とが加算器１６１で加算されて、レジスタ１７１に格納され、この処理サイクルの演算結果として得られるデータＭは図２に示されているように、Ｍ＝AU＜＜１+AL+Ｍ(但しＭはＣＮＴ＝０の場合の演算結果)となる。
【００１９】
次にＣＮＴ＝２となると、min_padding、g(５)が第１，第２の選択回路１１１，１２１で選択され、第３の選択回路１３１ではＣＮＴ＝１の際の演算結果であるＭがレジスタ１７１から入力されるのでこれを選択し、第２のシフタ１５１により入力データがビットシフトされず、第１のシフタ１４１では１ビットシフトされ、第１のシフタ１４１と第２のシフタ１５１と第３の選択回路１３１の出力とが加算器１６１で加算されて、レジスタ１７１に格納され、この処理サイクルの演算結果として得られるデータＭは図２に示されているように、Ｍ＝AU+CRL＜＜１+Ｍ(但しＭはＣＮＴ＝１の場合の演算結果)となる。
【００２０】
次にＣＮＴ＝３となると、min_padding、min_paddingが第１，第２の選択回路１１１，１２１で選択され、第３の選択回路１３１ではＣＮＴ＝２の際の演算結果であるＭがレジスタ１７１から入力されるのでこれを選択し、第２のシフタ１５１により入力データが１ビットシフトされ、第１のシフタ１４１では１ビットシフトされ、第１のシフタ１４１と第２のシフタ１５１と第３の選択回路１３１の出力とが加算器１６１で加算されて、レジスタ１７１に格納され、この処理サイクルの演算結果として得られるデータＭは図２に示されているように、Ｍ＝CRL＜＜１＋CRL＜＜１＋Ｍ(但しＭはＣＮＴ＝２の場合の演算結果)となる。
【００２１】
このように、図２に示されているような演算をＣＮＴ＝３となるまで繰り返し行うことにより、演算ブロック１０１の合計４サイクルからなる演算の最終的な演算結果である、８+min_padding+min_padding+min_padding＜＜１+min_padding＜＜１+g(１)＜＜２+g(２)＜＜１+g(３)＜＜１+g(４)+g(５)を第３のシフタ１８１により４ビット右シフトさせて出力する。
この演算ブロック１０１はその後、カウンタが２処理サイクルをカウントした時点（ＣＮＴ＝６）から上記と同様の処理を繰り返す。すなわち、図２に示しているように、ＣＮＴ＝６の演算結果は、Ｍ＝ＡＵ＜＜２＋ＡＬ＜＜１＋８となり、上記ＣＮＴ＝０の演算結果と同じになり、ＣＮＴ＝７の演算結果は、Ｍ＝ＡＵ＜＜１＋ＡＬ＋Ｍ（ＭはＣＮＴ＝６の場合の演算結果）となり、上記ＣＮＴ＝１の演算結果と同じになる。同様に、ＣＮＴ＝８以降の処理演算はそれぞれ、ＣＮＴの値が２、３、４、５、０、１の場合の処理演算を繰り返すこととなる。
【００２２】
以下、同様にｍ＝２〜８においても同様の構成を有する演算ブロック１０２〜１０８により、カウント値に基づいて、図２及び図５に示すような動作を行う。  ここで、上記各演算ブロック１０１〜１０８の動作について詳細に説明する。  まず、ｍ＝１に対応する演算ブロックである演算ブロック１０１において、ｉの値を−４〜４まで変化させた場合の上述した式(１)の値は、ｉ＝−４の場合は１×min_padding、ｉ＝−３の場合は１×min_padding、ｉ＝−２の場合は２×min_padding，ｉ＝−１の場合は２×min_padding，ｉ＝０の場合は４×g(１)、ｉ＝１の場合は２×g(２)、ｉ＝２の場合は２×g(３)、ｉ＝３の場合は１×g(４)、ｉ＝４の場合には１×g(５)となる。
【００２３】
この中でｉ＝−４とｉ＝−３の場合はまとめて２×min_paddingで表されｉ＝４のg(５)との加算を行う。これが、図２のＣＮＴ＝２の結果である、AU＋CRL＜＜１に相当する。ｉ＝−２とｉ＝−１の場合はまとめて２×min_padding＋２×min_padding、即ち図２のＣＮＴ＝３、CRL＜＜１＋CRL＜＜１で表され、ｉ＝０とｉ＝１の場合はまとめて４×g(１)＋２×g(２)、即ち、図２のＣＮＴ＝０、AU＜＜２＋AL＜＜１で表され、ｉ＝２とｉ＝３の場合はまとめて２×g(３)＋１×g(４)、即ち図２のＣＮＴ＝１、AU＜＜１＋ALで表される。但し図２のＭはレジスタ１７１の出力であり、またＣＮＴ＝０の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。このようにＣＮＴの値によりセレクタ１１１、１２１、１３１およびシフタ１４１、１５１を制御し、上記の演算を実行し、最後であるＣＮＴ＝４の時にシフタ１８１をシフトすることで演算結果としてｍ＝１の画素にフィルタリング処理を行った結果を出力する。このように、演算ブロック１０１において図２に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝１について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。
【００２４】
また、ｍ＝２に対応する演算ブロックである演算ブロック１０２において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000007
【００２５】
となる。この中で、ｉ＝−１とｉ＝０とをまとめると２×g(１)＋４×g(２)となり、図２のＣＮＴ＝０のサイクルにおけるAU＜＜１＋AL＜＜２で表わされ、ｉ＝１とｉ＝２とをまとめると２×g(３)＋２×g(４)となり、図２のＣＮＴ＝１のサイクルにおけるAU＜＜１＋AL＜＜１で表わされ、ｉ＝３とｉ＝４とをまとめると１×g(５)＋１×g(６)となり、図２のＣＮＴ＝２のサイクルにおけるAU＋ALで表わされ、ｉ＝−２とｉ＝−３とｉ＝−４とをまとめると２×min_padding＋２×min_paddingとなり、図２のＣＮＴ＝３のサイクルにおけるCRL＜＜１＋CRL＜＜１で表わされる。
但し図２のＮはレジスタ１７２の直前のサイクルの出力であり、またＣＮＴ＝０の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。
【００２６】
このようにＣＮＴの値によりセレクタ１１２、１２２、１３２およびシフタ１４２、１５２を制御し、演算ブロック１０２において図２に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝２について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。さらに、演算が終了するまでのサイクル数を、ｍ＝１の画素データに対応した演算ブロック１０１による演算処理のサイクル数と同じサイクル数とし、かつ演算処理が終了するサイクルを演算ブロック１０１と同じとすることができる。
【００２７】
また、ｍ＝３に対応する演算ブロックである演算ブロック１０３において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000008
【００２８】
となる。この中で、ｉ＝−２とｉ＝−１とをまとめると２×g(１)＋２×g(２)となり、図２のＣＮＴ＝０のサイクルにおけるAU＜＜１＋AL＜＜１で表わされ、ｉ＝０とｉ＝１とをまとめると４×g(３)＋２×g(４)となり、図２のＣＮＴ＝１のサイクルにおけるAU＜＜２＋AL＜＜１で表わされ、ｉ＝２とｉ＝３とをまとめると２×g(５)＋１×g(６)となり、図２のＣＮＴ＝２のサイクルにおけるAU＜＜２＋ALで表わされ、ｉ＝４とｉ＝−４とをまとめると１×g(７)＋１×min_paddingとなり、図２のＣＮＴ＝３のサイクルにおけるAU＋CRLで表わされ、ｉ＝−３は１×min_paddingで、図２のＣＮＴ＝４のサイクルにおけるCRLで表わされる。但し図２のＰはレジスタ１７３の直前のサイクルの出力であり、またＣＮＴ＝０の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。
【００２９】
このようにＣＮＴの値によりセレクタ１１３、１２３、１３３およびシフタ１４３、１５３を制御し、演算ブロック１０３において図２に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝３について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。
【００３０】
また、ｍ＝４に対応する演算ブロックである演算ブロック１０４において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000009
【００３１】
となる。この中で、ｉ＝−３とｉ＝−２とをまとめると１×g(１)＋２×g(２)となり、図２のＣＮＴ＝０のサイクルにおけるAU＋AL＜＜１で表わされ、ｉ＝−１とｉ＝０とをまとめると２×g(３)＋４×g(４)となり、図２のＣＮＴ＝１のサイクルにおけるAU＜＜１＋AL＜＜２で表わされ、ｉ＝１とｉ＝２とをまとめると２×g(５)＋２×g(６)となり、図２のＣＮＴ＝２のサイクルにおけるAU＜＜１＋AL＜＜１で表わされ、ｉ＝３とｉ＝４とをまとめると１×g(７)＋１×g(８)となり、図２のＣＮＴ＝３のサイクルにおけるAU＋ALで表わされ、ｉ＝−４は１×min_paddingで、図２のＣＮＴ＝４のサイクルにおけるCRLで表わされる。但し図２のＱはレジスタ１７４の直前のサイクルの出力であり、またＣＮＴ＝０の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。
【００３２】
このようにＣＮＴの値によりセレクタ１１４、１２４、１３４およびシフタ１４４、１５４を制御し、演算ブロック１０４において図２に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝４について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。さらに、演算が終了するまでのサイクル数を、ｍ＝３の画素データに対応した演算ブロック１０３による演算処理のサイクル数と同じサイクル数とし、かつ演算処理が終了するサイクルを演算ブロック１０３と同じとすることができる。
【００３３】
また、ｍ＝５に対応する演算ブロックである演算ブロック１０５において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000010
【００３４】
となる。この中で、ｉ＝−４とｉ＝−３とをまとめると１×g(１)＋１×g(２)となり、図５のＣＮＴ＝０のサイクルにおけるAU＋ALで表わされ、ｉ＝−２とｉ＝−１とをまとめると２×g(３)＋２×g(４)となり、図５のＣＮＴ＝１のサイクルにおけるAU＜＜１＋AL＜＜１で表わされ、ｉ＝０とｉ＝１とをまとめると４×g(５)＋２×g(６)となり、図５のＣＮＴ＝２のサイクルにおけるAU＜＜２＋AL＜＜１で表わされ、ｉ＝２とｉ＝３とをまとめると２×g(７)＋１×g(８)となり、図５のＣＮＴ＝３のサイクルにおけるAU＜＜１＋ALで表わされ、ｉ＝４は１×max_paddingで、図５のＣＮＴ＝４のサイクルにおけるCRUで表わされる。但し図５のＰはレジスタ１７５の直前のサイクルの出力であり、またＣＮＴ＝０の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。このようにＣＮＴの値によりセレクタ１１５、１２５、１３５およびシフタ１４５、１５５を制御し、演算ブロック１０５において図５に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝５について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。
【００３５】
また、ｍ＝６に対応する演算ブロックである演算ブロック１０６において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000011
【００３６】
となる。この中で、ｉ＝−４は１×g(２)で、図５のＣＮＴ＝０のサイクルにおけるALで表わされ、ｉ＝−３とｉ＝−２とをまとめると１×g(３)＋２×g(４)となり、図５のＣＮＴ＝１のサイクルにおけるAU＋AL＜＜１で表わされ、ｉ＝−１とｉ＝０とをまとめると２×g(５)＋４×g(６)となり、図５のＣＮＴ＝２のサイクルにおけるAU＜＜１＋AL＜＜２で表わされ、ｉ＝１とｉ＝２とをまとめると２×g(７)＋２×g(８)となり、図５のＣＮＴ＝３のサイクルにおけるAU＜＜１＋AL＜＜１で表わされ、ｉ＝３とｉ＝４とをまとめると１×max_padding＋１×max_paddingとなり、図５のＣＮＴ＝４のサイクルにおけるCRU＋CRUで表わされる。但し図５のＳはレジスタ１７６の直前のサイクルの出力であり、またＣＮＴ＝０の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。
【００３７】
このようにＣＮＴの値によりセレクタ１６１、１６２、１６３およびシフタ１６４、１６５を制御し、演算ブロック１０６において図５に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝６について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。さらに、演算が終了するまでのサイクル数を、ｍ＝５の画素データに対応した演算ブロック１０５による演算処理のサイクル数と同じサイクル数とし、かつ演算処理が終了するサイクルを演算ブロック１０５と同じとすることができる。
【００３８】
また、ｍ＝７に対応する演算ブロックである演算ブロック１０７において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000012
【００３９】
となる。この中で、ｉ＝−４とｉ＝−３とをまとめると１×g(３)＋１×g(４)となり、図５のＣＮＴ＝１のサイクルにおけるAU＋ALで表わされ、ｉ＝−２とｉ＝−１とをまとめると２×g(５)＋２×g(６)となり、図５のＣＮＴ＝２のサイクルにおけるAU＜＜１＋AL＜＜１で表わされ、ｉ＝０とｉ＝１とをまとめると４×g(７)＋２×g(８)となり、図５のＣＮＴ＝３のサイクルにおけるAU＜＜２＋AL＜＜１で表わされ、ｉ＝２とｉ＝３とをまとめると２×max_padding＋１×max_paddingとなり、図５のＣＮＴ＝４のサイクルにおけるCRU＜＜１＋CRUで表わされ、ｉ＝４は１×max_paddingとなり、図５のＣＮＴ＝５のサイクルにおけるCRUで表わされる。但し図５のＴはレジスタ１７７の直前のサイクルの出力であり、またＣＮＴ＝１の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。このようにＣＮＴの値によりセレクタ１１７、１２７、１３７およびシフタ１４７、１５７を制御し、演算ブロック１０７において図５に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝７について９サイクルの演算を行う場合よりも、少ないサイクルで本来の演算結果と同じ結果を得ることができる。
【００４０】
また、ｍ＝８に対応する演算ブロックである演算ブロック１０８において、ｉの値を−４〜４まで変化させた場合の式(１)の値は、
0003757116.tif 000013
【００４１】
となる。この中で、ｉ＝−４は１×g(４)となり、図５のＣＮＴ＝１のサイクルにおけるALで表わされ、ｉ＝−３とｉ＝−２とをまとめると１×g(５)＋２×g(６)となり、図５のＣＮＴ＝２のサイクルにおけるAU＋AL＜＜１で表わされ、ｉ＝−１とｉ＝０とをまとめると２×g(７)＋４×g(８)となり、図５のＣＮＴ＝３のサイクルにおけるAU＜＜１＋AL＜＜２で表わされ、ｉ＝１とｉ＝２とをまとめると２×max_padding＋２×max_paddingとなり、図５のＣＮＴ＝４のサイクルにおけるCRU＜＜１＋CRU＜＜１で表わされ、ｉ＝３とｉ＝４とをまとめると１×max_padding＋１×max_paddingとなり、図５のＣＮＴ＝５のサイクルにおけるCRU＋CRUで表わされる。但し図５のＵはレジスタ１７８の直前のサイクルの出力であり、またＣＮＴ＝１の＋８は丸めを行うための値であり、丸めなしの場合は０を入力すれば良い。
【００４２】
このようにＣＮＴの値によりセレクタ１１８、１２８、１３８およびシフタ１４８、１５８を制御し、演算ブロック１０８において図５に示すような演算を行う結果、ｉを−４から４まで順次変化させてｍ＝８について９サイクルの演算を行う場合よりも、少ないサイクルでｍ＝８についての演算結果と同じ結果を得ることができる。さらに、演算が終了するまでのサイクル数を、ｍ＝７の画素データに対応した演算ブロック１０７による演算処理のサイクル数と同じサイクル数とし、かつ演算処理が終了するサイクルを演算ブロック１０７と同じとすることができる。
【００４３】
そして、図６に示すように、出力選択回路７により、各演算ブロック１０１〜１０８の演算結果については、ＣＮＴ＝４の時に演算ブロック１０１，１０２から得られるｎ＝１とｎ＝２の値を同時に出力し、ＣＮＴ＝５の時に演算ブロック１０３，１０４から得られるｎ＝３とｎ＝４の値を同時に出力し、ＣＮＴ＝６の時に演算ブロック１０５，１０６から得られるｎ＝５とｎ＝６の値を同時に出力し、ＣＮＴ＝７の時に演算ブロック１０７，１０８から得られるｎ＝７とｎ＝８の値を同時に出力することで、演算ブロック１０１〜１０８の演算結果を、２つの演算ブロック毎に、パイプライン方式で出力させている。これによりデブロッキングフィルタリング処理した画素データを得ることができる。
【００４４】
以上のようにして、演算ブロック１０１〜１０８においては、図２及び図５に示すように演算処理をおこなうことにより、ｍ＝１〜８のそれぞれの場合について、従来の技術において同様の演算を行った場合の結果と同じ演算結果を、従来の技術よりも少ないサイクルで得ることができる。
【００４５】
さらに、本実施の形態においては、第１ないし第８の演算ブロック１０１〜１０８のうちの、第１の演算ブロック１０１及び第２の演算ブロック１０２の組、第３の演算ブロック１０３及び第４の演算ブロック１０４の組、第５の演算ブロック１０５及び第６の演算ブロック１０６の組、並びに第７の演算ブロック１０７及び第８の演算ブロック１０８の組の、各組内におけるそれぞれのフィルタリング処理が終了するまでの処理演算のサイクルが同じとなり、かつ各組間において、それぞれの組のフィルタリング処理が順次連続して終了するように、上記処理演算のサイクルに応じて、上記各演算ブロック１０１〜１０８の処理演算の内容を制御回路１により制御し、そして、図６に示すように、上記出力選択回路７を制御して演算ブロック１０１〜１０８からの出力を上記の演算ブロックの組単位で選択してパイプライン出力させているため、連続して各演算ブロック１０１〜１０８からフィルタリング処理結果が出力されることとなり、フィルタリング処理のサイクル数を更に減少させることができる。
【００４６】
このように、本実施の形態においては、上述した式(１)に示す各画素ｍについてのｉ＝-４〜４まで変化させる演算を、各演算ブロック１０１〜１０８によって、従来のサイクル数に比べて大幅に少ないサイクルで行うことができるとともに、２つの演算ブロックにより演算を同時に行い、２つの演算ブロックの演算結果をパイプライン方式で出力するようにしたことにより、結果的にサイクル数の大幅な削減が可能となる。
【００４７】
なお、本実施の形態においては、１サイクルに２つの画素データg(ｘ），g(ｘ+１)が入力される場合について説明したが、本発明においては、第１の演算ブロック１０１及び第２の演算ブロック１０２の組、第３の演算ブロック１０３及び第４の演算ブロック１０４の組、第５の演算ブロック１０５及び第６の演算ブロック１０６の組、並びに第７の演算ブロック１０７及び第８の演算ブロック１０８の組の、各組内におけるそれぞれのフィルタリング処理が終了するまでの処理演算のサイクルが同じとなり、かつ各組間において、それぞれの組のフィルタリング処理が順次連続して終了するように、上記処理演算のサイクルに応じて、上記各演算ブロック１０１〜１０８の処理演算の内容を制御可能であれば、複数の画素データが伝送されるバスの幅を１６ビットよりも広くして、１サイクルに入力される画素データ数は３つ以上、例えば４つとしてもよく、上記実施の形態と同様の効果を奏する。
【００４８】
産業上の利用可能性
以上のように、本発明に係るデブロッキングフィルタ演算装置及びデブロッキングフィルタ演算方法は、符号化された映像データを復号して再生するための装置における、復号画素データに対するフィルタ処理部及び処理方法として有用であり、特に符号化された映像データがＭＰＥＧ４方式で符号化されたものである場合に適している。
【図面の簡単な説明】
【図１】本発明に係るデブロッキングフィルタ演算装置のブロック図
【図２】本発明に係るデブロッキングフィルタ演算装置の、ｍ＝１〜４に対応した演算ブロックによる動作を説明するための図
【図３】従来のデブロッキングフィルタ演算装置の動作を示すフロー図
【図４】従来のデブロッキングフィルタ演算装置の動作を説明するための、ブロック境界を中心とした画素データの配列を示す図
【図５】本発明に係るデブロッキングフィルタ演算装置のｍ＝５〜８に対応した演算ブロックによる動作を説明するための図
【図６】本発明に係るデブロッキングフィルタ演算装置の出力動作を説明するための図
【図１】
0003757116.tif 000014
【図２】
0003757116.tif 000015
【図３】
0003757116.tif 000016
【図４】
0003757116.tif 000017
【図５】
0003757116.tif 000018
【図６】
0003757116.tif 000019