(57)【特許請求の範囲】
【請求項１】
離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、
対象ブロックに対し水平方向に隣接するブロックを水平参照ブロックとし、前記対象ブロックに対し垂直方向に隣接するブロックを垂直参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記水平参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置し且つ前記対象画素と垂直方向の位置が同一のものを水平参照画素とし、前記垂直参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置し且つ前記対象画素と水平方向の位置が同一のものを垂直参照画素とした場合に、
前記フィルタ処理は、前記対象画素の値と前記垂直参照画素の値との差分値が閾値を超えているか否かを判定し、
前記対象画素についての水平方向のフィルタ演算を、前記対象画素の値と前記水平参照画素の値とにのみ基づいて行い、
前記対象画素について垂直方向のフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についての垂直方向のフィルタ演算を、前記対象画素の値と前記垂直参照画素の値とにのみ基づいて行い、
前記展開画像を記憶する画像記憶手段に利用可能に接続し、
前記フィルタ処理を行うための画素データを記憶する作業用記憶手段を備え、
前記対象ブロック内の画素であって前記水平参照ブロックとの境界線から水平方向に連続する複数の画素を前記対象画素とした場合に、
前記フィルタ処理は、前記複数の対象画素及び前記水平参照画素からなる第１画素列の画素データ、並びに前記各対象画素に対応する垂直参照画素からなる第２画素列の画素データを前記作業用記憶手段に一括で読み込み、前記作業用記憶手段の画素データに基づいて前記各対象画素ごとに前記判定を行い、
前記各対象画素についての水平方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記水平参照画素の値とにのみ基づいて行い、
前記各対象画素について垂直方向のフィルタ演算を行うか否かを、当該対象画素に対応する前記判定結果にのみ基づいて決定するとともに、前記各対象画素についての垂直方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記垂直参照画素の値とにのみ基づいて行うことを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記各ブロックを、水平方向２ｎ（ｎ≧１）個の画素で且つ垂直方向２ｍ（ｍ≧１）個の画素からなる矩形の画素領域として構成するとともに、水平方向ｎ個の画素で且つ垂直方向ｍ個の画素からなる左上、右上、左下及び右下の４つの領域に区分し、さらに、前記第１画素列を、前記４つの領域のうち同一の領域に属する画素及び前記水平参照画素で構成し、
前記フィルタ処理は、前記画素データの読込、前記判定及び前記フィルタ演算を一連の処理として繰り返し行いながら前記展開画像のすべての画素に対して前記フィルタ演算を試み、
前記対象ブロックの左上の領域に属する対象画素については、前記対象ブロックの左及び上に隣接する水平参照ブロック及び垂直参照ブロックの参照画素の値を、前記判定及び前記フィルタ演算に用い、
前記対象ブロックの右上の領域に属する対象画素については、前記対象ブロックの右及び上に隣接する水平参照ブロック及び垂直参照ブロックの参照画素の値を、前記判定及び前記フィルタ演算に用い、
前記対象ブロックの左下の領域に属する対象画素については、前記対象ブロックの左及び下に隣接する水平参照ブロック及び垂直参照ブロックの参照画素の値を、前記判定及び前記フィルタ演算に用い、
前記対象ブロックの右下の領域に属する対象画素については、前記対象ブロックの右及び下に隣接する水平参照ブロック及び垂直参照ブロックの参照画素の値を、前記判定及び前記フィルタ演算に用いることを特徴とする画像処理装置。
【請求項３】
請求項２において、
前記画像記憶手段は、前記展開画像を構成する各画素の画素データを左から右の順序及び上から下の順序で格納するようになっており、
前記フィルタ処理は、前記画像記憶手段における前記第２画素列の画素データの格納アドレスを指し示す垂直参照画素用ポインタを参照して前記第２画素列の画素データを前記作業用記憶手段に読み込み、
さらに、前記展開画像の水平方向の画素数をＸとし、前記対象ブロックにおける対象画素の垂直方向の座標をｙとした場合に、
前記一連の処理ごとに、当該処理で一括に処理する対象画素の数に相当する値を前記垂直参照画素用ポインタの値に加算し、
次に処理すべき対象ブロックが前記展開画像における左端のブロックで、且つｙを２ｍで除算したときの余数が「０」であるときは、前記垂直参照画素用ポインタの値から２Ｘを減算し、
次に処理すべき対象ブロックが前記展開画像における左端のブロックで、且つｙを２ｍで除算したときの余数がｍであるときは、前記垂直参照画素用ポインタの値に２ｍＸを加算し、
次に処理すべき対象ブロックが前記展開画像における左端のブロックで、且つｙを２ｍで除算したときの余数が「０」又はｍ以外の値であるときは、前記垂直参照画素用ポインタの値からＸを減算することを特徴とする画像処理装置。
【請求項４】
請求項３において、
前記対象ブロック内の同一水平線上の画素のうち左半分のものからなる画素列を第１対象画素列とし、右半分のものからなる画素列を第２対象画素列とし、さらに、前記水平参照ブロック内の画素列であって前記第１対象画素列に左に隣接し且つ前記第２対象画素列の画素数と同数の画素からなるものを第１水平参照画素列とし、前記水平参照ブロック内の画素列であって前記第２対象画素列に右に隣接し且つ前記第１対象画素列の画素数と同数の画素からなるものを第２水平参照画素列とし、さらに、前記第１対象画素列の各対象画素に対応する垂直参照画素からなる画素列を第１垂直参照画素列とし、前記第２対象画素列の各対象画素に対応する垂直参照画素からなる画素列を第２垂直参照画素列とした場合に、
前記フィルタ処理は、前記各一連の処理ごとに、前記第２対象画素列、前記第２水平参照画素列、前記第１垂直参照画素列及び前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込むとともに、一つ前の処理において読み込んだ前記第２対象画素列及び前記第２水平参照画素列の画素データを前記第１水平参照画素列及び前記第１対象画素列の画素データとしてそれぞれ再利用し、前記第１対象画素列及び前記第２対象画素列のすべての対象画素について前記判定及び前記フィルタ演算を行うことを特徴とする画像処理装置。
【請求項５】
請求項４において、
前記展開画像について最初に行う前記一連の処理は、前記第１対象画素列、前記第２対象画素列、前記第２水平参照画素列、前記第１垂直参照画素列及び前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込み、
前記展開画像について２回目以降に行う前記一連の処理は、前記第２対象画素列、前記第２水平参照画素列、前記第１垂直参照画素列及び前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込むとともに、一つ前の処理において読み込んだ前記第２対象画素列及び前記第２水平参照画素列の画素データを前記第１水平参照画素列及び前記第１対象画素列の画素データとしてそれぞれ再利用することを特徴とする画像処理装置。
【請求項６】
請求項４及び５のいずれかにおいて、
一つ前の処理において読み込んだ前記第２対象画素列及び前記第２水平参照画素列の画素データを前記第１水平参照画素列及び前記第１対象画素列の画素データとしてそれぞれコピーする処理を第１フェーズとし、
前記第１垂直参照画素列の画素データを前記作業用記憶手段に読み込む処理を第２フェーズとし、
前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込む処理を第３フェーズとし、
前記第２対象画素列の画素データを前記作業用記憶手段に読み込む処理を第４フェーズとし、
前記第２水平参照画素列の画素データを前記作業用記憶手段に読み込む処理を第５フェーズとし、
前記第１水平参照画素列の画素データに基づいて、前記第１対象画素列の各対象画素について水平方向の前記フィルタ演算を行う処理を第６フェーズとし、  前記第６フェーズの処理結果及び前記第１垂直参照画素列の画素データに基づいて、前記第１対象画素列の各対象画素について前記判定及び垂直方向の前記フィルタ演算を行う処理を第７フェーズとし、
前記第２水平参照画素列の画素データに基づいて、前記第２対象画素列の各対象画素について水平方向の前記フィルタ演算を行う処理を第８フェーズとし、  前記第８フェーズの処理結果及び前記第２垂直参照画素列の画素データに基づいて、前記第２対象画素列の各対象画素について前記判定及び垂直方向の前記フィルタ演算を行う処理を第９フェーズとした場合に、
前記一連の処理は、前記第１フェーズ、前記第２フェーズ、前記第３フェーズ、前記第４フェーズ及び前記第５フェーズをその順序で実行し、前記第６フェーズ及び前記第７フェーズをその順序で実行し、前記第５フェーズ、前記第８フェーズ及び前記第９フェーズをその順序で実行するとともに、前記第２フェーズ及び前記第６フェーズの実行を同時に、前記第３フェーズ及び前記第７フェーズの実行を同時に開始することを特徴とする画像処理装置。
【請求項７】
離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理をコンピュータに実行させるためのプログラムであって、
対象ブロックに対し水平方向に隣接するブロックを水平参照ブロックとし、前記対象ブロックに対し垂直方向に隣接するブロックを垂直参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記水平参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置し且つ前記対象画素と垂直方向の位置が同一のものを水平参照画素とし、前記垂直参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置し且つ前記対象画素と水平方向の位置が同一のものを垂直参照画素とした場合に、
前記フィルタ処理は、前記対象画素の値と前記垂直参照画素の値との差分値が閾値を超えているか否かを判定し、
前記対象画素についての水平方向のフィルタ演算を、前記対象画素の値と前記水平参照画素の値とにのみ基づいて行い、
前記対象画素について垂直方向のフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についての垂直方向のフィルタ演算を、前記対象画素の値と前記垂直参照画素の値とにのみ基づいて行い、
前記展開画像を記憶する画像記憶機能と、
前記フィルタ処理を行うための画素データを記憶する作業用記憶機能とをコンピュータに実現させ、
前記対象ブロック内の画素であって前記水平参照ブロックとの境界線から水平方向に連続する複数の画素を前記対象画素とした場合に、
前記フィルタ処理は、前記複数の対象画素及び前記水平参照画素からなる第１画素列の画素データ、並びに前記各対象画素に対応する垂直参照画素からなる第２画素列の画素データを前記作業用記憶手段に一括で読み込み、前記作業用記憶手段の画素データに基づいて前記各対象画素ごとに前記判定を行い、
前記各対象画素についての水平方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記水平参照画素の値とにのみ基づいて行い、
前記各対象画素について垂直方向のフィルタ演算を行うか否かを、当該対象画素に対応する前記判定結果にのみ基づいて決定するとともに、前記各対象画素についての垂直方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記垂直参照画素の値とにのみ基づいて行うことを特徴とする画像処理プログラム。
【請求項８】
離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、
対象ブロックに対し水平方向に隣接するブロックを水平参照ブロックとし、前記対象ブロックに対し垂直方向に隣接するブロックを垂直参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記水平参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置し且つ前記対象画素と垂直方向の位置が同一のものを水平参照画素とし、前記垂直参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置し且つ前記対象画素と水平方向の位置が同一のものを垂直参照画素とした場合に、
前記フィルタ処理は、前記対象画素の値と前記垂直参照画素の値との差分値が閾値を超えているか否かを判定し、
前記対象画素についての水平方向のフィルタ演算を、前記対象画素の値と前記水平参照画素の値とにのみ基づいて行い、
前記対象画素について垂直方向のフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についての垂直方向のフィルタ演算を、前記対象画素の値と前記垂直参照画素の値とにのみ基づいて行い、
前記展開画像を記憶する画像記憶ステップと、
前記フィルタ処理を行うための画素データを記憶する作業用記憶ステップを含み、
前記対象ブロック内の画素であって前記水平参照ブロックとの境界線から水平方向に連続する複数の画素を前記対象画素とした場合に、
前記フィルタ処理は、前記複数の対象画素及び前記水平参照画素からなる第１画素列の画素データ、並びに前記各対象画素に対応する垂直参照画素からなる第２画素列の画素データを前記作業用記憶手段に一括で読み込み、前記作業用記憶手段の画素データに基づいて前記各対象画素ごとに前記判定を行い、
前記各対象画素についての水平方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記水平参照画素の値とにのみ基づいて行い、
前記各対象画素について垂直方向のフィルタ演算を行うか否かを、当該対象画素に対応する前記判定結果にのみ基づいて決定するとともに、前記各対象画素についての垂直方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記垂直参照画素の値とにのみ基づいて行うことを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＪＰＥＧ（Joint Photographic coding Experts Group）またはＭＰＥＧ（Moving Picture Experts Group）等により圧縮された圧縮画像データに基づいてブロック単位で画像を展開する際に、展開画像に対してフィルタ処理を行う装置およびプログラム、並びに方法に係り、特に、画像復号化時のフィルタ処理の簡素化および高速化を図るとともに、効果的なフィルタ効果を実現するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法に関する。
【０００２】
【従来の技術】
静止画像についての圧縮技術としてＪＰＥＧ方式が、動画像についての圧縮技術としてＭＰＥＧ方式が広く知られている。これらの画像圧縮方式においては、８画素×８画素のブロックを処理の１単位として扱い、ＤＣＴ（Discrete Cosine Transform：離散コサイン変換）処理を行う。ＤＣＴ処理は、元の画像を空間的な周波数成分に分解する処理であり、空間的に冗長な情報を削減することによって、画像を圧縮することができる。
【０００３】
ところで、ＪＰＥＧ方式またはＭＰＥＧ方式を採用する場合、次のような２種類のノイズが発生し、このノイズが画質を劣化させる原因となる。すなわち、ＪＰＥＧ方式およびＭＰＥＧ方式においては、８画素×８画素のブロックを処理の単位としているので、画像によっては、このブロックの境界がノイズとして見えてしまう。これは、ＤＣＴ処理が、画像の空間的な周波数成分のうち直流成分に相当するものを除去する処理であり、それを各ブロックごとに行うため、各ブロックの輝度の平均値が異なってしまうことが原因である。この境界部分のノイズは、ブロックノイズと呼ばれている。
【０００４】
また、ＪＰＥＧ方式およびＭＰＥＧ方式におけるＤＣＴ処理では、画像の空間的な周波数成分のうち高調波成分ほど冗長な情報として除去する結果、周辺との輝度差が大きい部分にノイズが表れる。例えば、自然画の背景に文字が存在する場合等、ブロック内に輝度の大きな変化がある場合、ＤＣＴ処理を行うと、本来の境界部分を構成するデータから高調波成分が除去され、境界周辺にモヤモヤとしたノイズが表れる。このノイズは、モスキートノイズと呼ばれている。
【０００５】
ブロックノイズおよびモスキートノイズを軽減するための技術が特開平3-46482号公報に記載されている。同公報に記載されている技術（以下、第１の従来例という。）においては、互いに隣接するブロック間の境界線を挟んで位置する境界画素間の信号レベル差が第１の閾値より大きく、ブロックの各々において境界画素と列上の画素のうちその境界画素に同一ブロック内で隣接する画素との間の信号レベル差がそれぞれ第２の閾値より小さい場合に、フィルタ処理をする。
【０００６】
このとき、図１４において、ブロック境界の両側に位置する画素配置Ｘ１およびＸ０、画素配置Ｘ’０およびＸ’１についての信号レベルＳ1、Ｓ0、Ｓ’0、Ｓ’1の差分値ｄ０，ｄ１，ｄ２に基づいて、画素配置Ｘ０、Ｘ’０についての信号レベルを修正する。すなわち新たな信号レベルＳ0-new、Ｓ’0-newは、
Ｓ0-new＝（Ｓ1＋２・Ｓ0＋Ｓ’0）／４
Ｓ’0-new＝（Ｓ0＋２・Ｓ’0＋Ｓ’1）／４
となる。
【０００７】
また、ブロックノイズおよびモスキートノイズを軽減する他の方法として、ＭＰＥＧ４についてのＶＭ(Verification Model)や特開平11-98505号公報に記載されている技術（以下、第２の従来例という。）も知られている。第２の従来例においては、図１５に示されている垂直方向および水平方向のブロック境界について、デフォルトモードかＤＣオフセットモードかを判定し、それぞれの処理を行う。
【０００８】
この場合、ブロックの境界Ｂ１，Ｂ２を基点としてピクセルセットＳ０，Ｓ１，Ｓ２を定義し、モード決定値からブロック歪現象の程度に基づいて選択的にデブロッキングモードをデフォルトモードかＤＣオフセットモードかに決める。そして、デフォルトモードと決定されると、４ポイントＤＣＴカーネルを用いて各ピクセルに対するブロック境界周辺の周波数情報を求める。モード決定段階でＤＣオフセットモードと決定されると、ＤＣオフセットモードの実行が必要であるかどうかを判断し、必要であればブロック歪み現象を除去する。
【０００９】
【発明が解決しようとする課題】
しかしながら、第１の従来例では、境界画素のみを補正しているので、ブロック歪みを除去する処理として充分ではないという欠点がある。また、ＶＭや第２の従来例では、処理が複雑で計算負荷が大きすぎるという欠点がある。
また、これらの技術をハードウェアにより実現しようとすると、処理が比較的複雑であるため、回路規模を小型化するのが困難であるという問題がある。小型化を図る観点からは、多少画質を犠牲にしても処理をできるだけ簡略化することが望ましい。また、搭載できるメモリの容量にも一定の制限があるため、フィルタ処理において演算のために占有するメモリ容量もできるだけ最小限に抑えることが望ましい。
【００１０】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、画像復号化時のフィルタ処理の簡素化および高速化を図るとともに、効果的なフィルタ効果を実現するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法を提供することを第１の目的としている。また、画像復号化時のフィルタ処理において演算のために占有するメモリ容量を低減するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法を提供することを第２の目的としている。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、対象ブロックに対し水平方向に隣接するブロックを水平参照ブロックとし、前記対象ブロックに対し垂直方向に隣接するブロックを垂直参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記水平参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置しかつ前記対象画素と垂直方向の位置が同一のものを水平参照画素とし、前記垂直参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置しかつ前記対象画素と水平方向の位置が同一のものを垂直参照画素とした場合に、前記フィルタ処理は、前記対象画素の値と前記垂直参照画素の値との差分値が閾値を超えているか否かを判定し、前記対象画素についての水平方向のフィルタ演算を、前記対象画素の値と前記水平参照画素の値とにみ基づいて行い、前記対象画素について垂直方向のフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についての垂直方向のフィルタ演算を、前記対象画素の値と前記垂直参照画素の値とにのみ基づいて行うようになっている。
【００１６】
このような構成であれば、圧縮画像データに基づいてブロック単位で画像を展開する際または展開した後には、フィルタ処理により、対象画素についての水平方向のフィルタ演算が、対象画素の値と水平参照画素の値とにのみ基づいて行われる。また、対象画素の値と垂直参照画素の値との差分値が閾値を超えているか否かが判定され、対象画素について垂直方向のフィルタ演算を行うか否かが、その判定結果にのみ基づいて決定される。そして、対象画素について垂直方向のフィルタ処理を行うことが決定されると、対象画素についての垂直方向のフィルタ演算が、対象画素の値と垂直参照画素の値とにのみ基づいて行われる。
以下、画像処理プログラム、画像処理方法において同じである。
【００１７】
さらに、本発明の画像処理装置は、請求項２記載の画像処理装置において、前記展開画像を記憶する画像記憶手段に利用可能に接続し、前記フィルタ処理を行うための画素データを記憶する作業用記憶手段を備え、前記対象ブロック内の画素であって前記水平参照ブロックとの境界線から水平方向に連続する複数の画素を前記対象画素とした場合に、前記フィルタ処理は、前記複数の対象画素および前記水平参照画素からなる第１画素列の画素データ、並びに前記各対象画素に対応する垂直参照画素からなる第２画素列の画素データを前記作業用記憶手段に一括で読み込み、前記作業用記憶手段の画素データに基づいて前記各対象画素ごとに前記判定を行い、前記各対象画素についての水平方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記水平参照画素の値とにのみ基づいて行い、前記各対象画素について垂直方向のフィルタ演算を行うか否かを、当該対象画素に対応する前記判定結果にのみ基づいて決定するとともに、前記各対象画素についての垂直方向のフィルタ演算を、前記作業用記憶手段の画素データを参照し当該対象画素の値と前記垂直参照画素の値とにのみ基づいて行うようになっている。
【００１８】
このような構成であれば、フィルタ処理により、第１画素列の画素データおよび第２画素列の画素データが作業用記憶手段に一括で読み込まれ、各対象画素についての水平方向のフィルタ演算が、作業用記憶手段の画素データが参照されその対象画素の値と水平参照画素の値とにのみ基づいて行われる。また、作業用記憶手段の画素データに基づいて、各対象画素ごとに、その対象画素の値と垂直参照画素の値との差分値が閾値を超えているか否かが判定され、各対象画素について垂直方向のフィルタ演算を行うか否かが、その対象画素に対応する判定結果にのみ基づいて決定される。そして、対象画素について垂直方向のフィルタ演算を行うことが決定されると、その対象画素についての垂直方向のフィルタ演算が、作業用記憶手段の画素データが参照されその対象画素の値と垂直参照画素の値とにのみ基づいて行われる。
【００１９】
ここで、作業用記憶手段は、画素データをあらゆる手段でかつあらゆる時期に記憶するものであり、画素データをあらかじめ記憶してあるものであってもよいし、画素データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によって画素データを記憶するようになっていてもよい。このことは、画像記憶手段に展開画像を格納する場合についても同じである。
【００２０】
さらに、本発明の画像処理装置は、請求項３記載の画像処理装置において、前記各ブロックを、水平方向２ｎ（ｎ≧１）個の画素でかつ垂直方向２ｍ（ｍ≧１）個の画素からなる矩形の画素領域として構成するとともに、水平方向ｎ個の画素でかつ垂直方向ｍ個の画素からなる左上、右上、左下および右下の４つの領域に区分し、さらに、前記第１画素列を、前記４つの領域のうち同一の領域に属する画素および前記水平参照画素で構成し、前記フィルタ処理は、前記画素データの読込、前記判定および前記フィルタ演算を一連の処理として繰り返し行いながら前記展開画像のすべての画素に対して前記フィルタ演算を試み、前記対象ブロックの左上の領域に属する対象画素については、前記対象ブロックの左および上に隣接する水平参照ブロックおよび垂直参照ブロックの参照画素の値を、前記判定および前記フィルタ演算に用い、前記対象ブロックの右上の領域に属する対象画素については、前記対象ブロックの右および上に隣接する水平参照ブロックおよび垂直参照ブロックの参照画素の値を、前記判定および前記フィルタ演算に用い、前記対象ブロックの左下の領域に属する対象画素については、前記対象ブロックの左および下に隣接する水平参照ブロックおよび垂直参照ブロックの参照画素の値を、前記判定および前記フィルタ演算に用い、前記対象ブロックの右下の領域に属する対象画素については、前記対象ブロックの右および下に隣接する水平参照ブロックおよび垂直参照ブロックの参照画素の値を、前記判定および前記フィルタ演算に用いるようになっている。
【００２１】
このような構成であれば、フィルタ処理により、画素データの読込、判定およびフィルタ演算が一連の処理として繰り返し行われながら展開画像のすべての画素に対してフィルタ処理が行われる。
具体的に、対象ブロックの左上の領域に属する対象画素については、対象ブロックの左に隣接する水平参照ブロックの参照画素の値、および対象ブロックの上に隣接する垂直参照ブロックの参照画素の値が、判定およびフィルタ演算に用いられる。
【００２２】
また、対象ブロックの右上の領域に属する対象画素については、対象ブロックの右に隣接する水平参照ブロックの参照画素の値、および対象ブロックの上に隣接する垂直参照ブロックの参照画素の値が、判定およびフィルタ演算に用いられる。
また、対象ブロックの左下の領域に属する対象画素については、対象ブロックの左に隣接する水平参照ブロックの参照画素の値、および対象ブロックの下に隣接する垂直参照ブロックの参照画素の値が、判定およびフィルタ演算に用いられる。
【００２３】
また、対象ブロックの右下の領域に属する対象画素については、対象ブロックの右に隣接する水平参照ブロックの参照画素の値、および対象ブロックの下に隣接する垂直参照ブロックの参照画素の値が、判定およびフィルタ演算に用いられる。
ここで、ｎは、ｎ≧１の条件を満たすことが必要であるが、発明の性質上小数点の値をとることはないので、ｎは、ｎ≧１でかつ整数である。また、ｍは、ｎとは独立の値をとり、ｍ≧１の条件を満たすことが必要であるが、発明の性質上小数点の値をとることはないので、ｍ≧１でかつ整数である。
【００２４】
さらに、本発明の画像処理装置は、前記画像記憶手段は、前記展開画像を構成する各画素の画素データを左から右の順序および上から下の順序で格納するようになっており、前記フィルタ処理は、前記画像記憶手段における前記第２画素列の画素データの格納アドレスを指し示す垂直参照画素用ポインタを参照して前記第２画素列の画素データを前記作業用記憶手段に読み込み、さらに、前記展開画像の水平方向の画素数をＸとし、前記対象ブロックにおける対象画素の垂直方向の座標をｙとした場合に、前記一連の処理ごとに、当該処理で一括に処理する対象画素の数に相当する値を前記垂直参照画素用ポインタの値に加算し、次に処理すべき対象ブロックが前記展開画像における左端のブロックで、かつｙを２ｍで除算したときの余数が「０」であるときは、前記垂直参照画素用ポインタの値から２Ｘを減算し、次に処理すべき対象ブロックが前記展開画像における左端のブロックで、かつｙを２ｍで除算したときの余数がｍであるときは、前記垂直参照画素用ポインタの値に２ｍＸを加算し、次に処理すべき対象ブロックが前記展開画像における左端のブロックで、かつｙを２ｍで除算したときの余数が「０」またはｍ以外の値であるときは、前記垂直参照画素用ポインタの値からＸを減算するようになっている。
【００２５】
このような構成であれば、フィルタ処理により、垂直参照画素用ポインタが参照されて第２画素列の画素データが作業用記憶手段に読み込まれる。垂直参照画素用ポインタの更新は、次の条件に従って行われる。
第１に、一連の処理ごとに、その処理で一括に処理する対象画素の数に相当する値が垂直参照画素用ポインタの値に加算される。したがって、垂直参照画素用ポインタは、一連の処理ごとに、その処理で一括に処理する対象画素の数だけ右に移動していく。この移動は、所定数を加算するだけなので、ハードウェアで構成する場合は加算器だけで実現できる。
【００２６】
第２に、次に処理すべき対象ブロックが展開画像における左端のブロックで、かつｙを２ｍで除算したときの余数が「０」またはｍ以外の値であると、垂直参照画素用ポインタの値からＸが減算される。したがって、展開画像における同一水平線上のすべての画素について一連の処理が完了すると、垂直参照画素用ポインタは、対象ブロックの上に隣接する垂直参照ブロックの最下段に移動する。この移動は、Ｘを減算するだけなので、ハードウェアで構成する場合は加算器だけで実現できる。
【００２７】
第３に、次に処理すべき対象ブロックが展開画像における左端のブロックで、かつｙを２ｍで除算したときの余数がｍであると、垂直参照画素用ポインタの値に２ｍＸが加算される。したがって、展開画像における同一水平線上のすべての画素について一連の処理が完了し、対象ブロック内の下半分の領域に処理が移行すると、垂直参照画素用ポインタは、対象ブロックの下に隣接する垂直参照ブロックの最上段に移動する。この移動は、Ｘを２ｍ倍しそれを加算するだけなので、ハードウェアで構成する場合はシフタおよび加算器だけで実現できる。
【００２８】
第４に、次に処理すべき対象ブロックが展開画像における左端のブロックで、かつｙを２ｍで除算したときの余数が「０」であると、垂直参照画素用ポインタの値から２Ｘが減算される。したがって、展開画像における同一水平線上のすべての画素について一連の処理が完了し、下の段のブロックに処理が移行すると、垂直参照画素用ポインタは、対象ブロックの上に隣接する垂直参照ブロックの最下段に移動する。この移動は、Ｘを２倍しそれを減算するだけなので、ハードウェアで構成する場合はシフタおよび加算器だけで実現できる。
【００２９】
さらに、本発明の画像処理装置は、画像処前記対象ブロック内の同一水平線上の画素のうち左半分のものからなる画素列を第１対象画素列とし、右半分のものからなる画素列を第２対象画素列とし、さらに、前記水平参照ブロック内の画素列であって前記第１対象画素列に左に隣接しかつ前記第２対象画素列の画素数と同数の画素からなるものを第１水平参照画素列とし、前記水平参照ブロック内の画素列であって前記第２対象画素列に右に隣接しかつ前記第１対象画素列の画素数と同数の画素からなるものを第２水平参照画素列とし、さらに、前記第１対象画素列の各対象画素に対応する垂直参照画素からなる画素列を第１垂直参照画素列とし、前記第２対象画素列の各対象画素に対応する垂直参照画素からなる画素列を第２垂直参照画素列とした場合に、前記フィルタ処理は、前記各一連の処理ごとに、前記第２対象画素列、前記第２水平参照画素列、前記第１垂直参照画素列および前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込むとともに、一つ前の処理において読み込んだ前記第２対象画素列および前記第２水平参照画素列の画素データを前記第１水平参照画素列および前記第１対象画素列の画素データとしてそれぞれ再利用し、前記第１対象画素列および前記第２対象画素列のすべての対象画素について前記判定および前記フィルタ演算を行うようになっている。
【００３０】
このような構成であれば、フィルタ処理により、各一連の処理ごとに、第２対象画素列、第２水平参照画素列、第１垂直参照画素列および第２垂直参照画素列の画素データが作業用記憶手段に読み込まれるとともに、一つ前の処理において読み込まれた第２対象画素列および第２水平参照画素列の画素データが第１水平参照画素列および第１対象画素列の画素データとしてそれぞれ再利用される。そして、第１対象画素列および第２対象画素列のすべての対象画素について判定およびフィルタ演算が行われる。
【００３１】
ここで、読込と再利用は、どちらを先に行ってもよいが、１つ前の処理において読み込んだ第２対象画素列および第２水平参照画素列の画素データを格納する記憶領域と、今回の処理において読み込むべき第２対象画素列および第２水平参照画素列の画素データを格納する記憶領域とを作業用記憶手段において共用する場合は、再利用の後に読込を行う必要がある。
【００３２】
また、再利用とは、一つ前の処理において読み込んだ第２対象画素列および第２水平参照画素列の画素データの一部または全部を第１水平参照画素列および第１対象画素列の画素データの一部または全部としてそれぞれ再利用することをいい、一部を利用する場合は、第１水平参照画素列として利用される画素データのなかに参照画素となり得る画素のデータを含む必要がある。
【００３３】
また、再利用とは、作業用記憶手段において、１つ前の処理において読み込んだ第２対象画素列および第２水平参照画素列の画素データを第１水平参照画素列および第１対象画素列の画素データとしてそのまま利用することのほか、作業用記憶手段において、１つ前の処理において読み込んだ第２対象画素列および第２水平参照画素列の画素データに基づいて第１水平参照画素列および第１対象画素列の画素データを生成（コピーを含む。）することをいう。
【００３４】
さらに、本発明の画像処理装置は、前記展開画像について最初に行う前記一連の処理は、前記第１対象画素列、前記第２対象画素列、前記第２水平参照画素列、前記第１垂直参照画素列および前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込み、前記展開画像について２回目以降に行う前記一連の処理は、前記第２対象画素列、前記第２水平参照画素列、前記第１垂直参照画素列および前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込むとともに、一つ前の処理において読み込んだ前記第２対象画素列および前記第２水平参照画素列の画素データを前記第１水平参照画素列および前記第１対象画素列の画素データとしてそれぞれ再利用するようになっている。
【００３５】
このような構成であれば、展開画像について最初にあっては、一連の処理により、第１対象画素列、第２対象画素列、第２水平参照画素列、第１垂直参照画素列および第２垂直参照画素列の画素データが作業用記憶手段に読み込まれる。
展開画像について２回目以降にあっては、一連の処理により、第２対象画素列、第２水平参照画素列、第１垂直参照画素列および第２垂直参照画素列の画素データが作業用記憶手段に読み込まれるとともに、一つ前の処理において読み込まれた第２対象画素列および第２水平参照画素列の画素データが第１水平参照画素列および第１対象画素列の画素データとしてそれぞれ再利用される。
【００３６】
したがって、最初だけ５つの画素列の画素データが読み込まれるが、２回目以降は、４つの画素列の画素データが読み込まれる。
さらに、本発明に係る請求項８記載の画像処理装置は、請求項６および７のいずれかに記載の画像処理装置において、一つ前の処理において読み込んだ前記第２対象画素列および前記第２水平参照画素列の画素データを前記第１水平参照画素列および前記第１対象画素列の画素データとしてそれぞれコピーする処理を第１フェーズとし、前記第１垂直参照画素列の画素データを前記作業用記憶手段に読み込む処理を第２フェーズとし、前記第２垂直参照画素列の画素データを前記作業用記憶手段に読み込む処理を第３フェーズとし、前記第２対象画素列の画素データを前記作業用記憶手段に読み込む処理を第４フェーズとし、前記第２水平参照画素列の画素データを前記作業用記憶手段に読み込む処理を第５フェーズとし、前記第１水平参照画素列の画素データに基づいて、前記第１対象画素列の各対象画素について水平方向の前記フィルタ演算を行う処理を第６フェーズとし、前記第６フェーズの処理結果および前記第１垂直参照画素列の画素データに基づいて、前記第１対象画素列の各対象画素について前記判定および垂直方向の前記フィルタ演算を行う処理を第７フェーズとし、前記第２水平参照画素列の画素データに基づいて、前記第２対象画素列の各対象画素について水平方向の前記フィルタ演算を行う処理を第８フェーズとし、前記第８フェーズの処理結果および前記第２垂直参照画素列の画素データに基づいて、前記第２対象画素列の各対象画素について前記判定および垂直方向の前記フィルタ演算を行う処理を第９フェーズとした場合に、前記一連の処理は、前記第１フェーズ、前記第２フェーズ、前記第３フェーズ、前記第４フェーズおよび前記第５フェーズをその順序で実行し、前記第６フェーズおよび前記第７フェーズをその順序で実行し、前記第５フェーズ、前記第８フェーズおよび前記第９フェーズをその順序で実行するとともに、前記第２フェーズおよび前記第６フェーズの実行を同時に、前記第３フェーズおよび前記第７フェーズの実行を同時に開始するようになっている。
【００３７】
このような構成であれば、一連の処理により、第１フェーズが実行されることにより、一つ前の処理において読み込まれた第２対象画素列および第２水平参照画素列の画素データが第１水平参照画素列および第１対象画素列の画素データとしてコピーされる。
第１対象画素列の各対象画素について水平方向のフィルタ演算を行うには、第１水平参照画素列および第１対象画素列の画素データが必要となるが、これらは、第１フェーズの実行により利用可能となっているため、第２フェーズの実行開始時点で第６フェーズを実行することができる。したがって、第２フェーズおよび第６フェーズの実行が同時に開始される。これにより、第１垂直参照画素列の画素データが作業用記憶手段に読み込まれるとともに、第１水平参照画素列の画素データに基づいて、第１対象画素列の各対象画素について水平方向のフィルタ演算が行われる。
【００３８】
さらに、第１対象画素列の各対象画素について判定および垂直方向のフィルタ演算を行うには、水平方向のフィルタ演算結果および第１垂直参照画素列の画素データが必要となるが、これらは、第２フェーズおよび第６フェーズの実行により利用可能となっているため、第３フェーズの実行開始時点で第７フェーズを実行することができる。したがって、第３フェーズおよび第７フェーズの実行が同時に開始される。これにより、第２垂直参照画素列の画素データが作業用記憶手段に読み込まれるとともに、第６フェーズの処理結果および第１垂直参照画素列の画素データに基づいて、第１対象画素列の各対象画素について判定および垂直方向のフィルタ演算が行われる。
【００３９】
そして、第４フェーズおよび第５フェーズがその順序で実行されることにより、第２対象画素列および第２水平参照画素列の画素データが作業用記憶手段に読み込まれる。
第２対象画素列の各対象画素について水平方向のフィルタ演算を行うには、第２水平参照画素列および第２対象画素列の画素データが必要となるが、これらは、第４フェーズおよび第５フェーズの実行により利用可能となっているため、第５フェーズの終了に続けて第８フェーズを実行することができる。これにより、第２水平参照画素列の画素データに基づいて、第２対象画素列の各対象画素について水平方向のフィルタ演算が行われる。
【００４０】
さらに、第２対象画素列の各対象画素について判定および垂直方向のフィルタ演算を行うには、水平方向のフィルタ演算結果および第２垂直参照画素列の画素データが必要となるが、これらは、第３フェーズおよび第８フェーズの実行により利用可能となっているため、第８フェーズの終了に続けて第９フェーズを実行することができる。これにより、第８フェーズの処理結果および第２垂直参照画素列の画素データに基づいて、第２対象画素列の各対象画素について判定および垂直方向のフィルタ演算が行われる。
【００４１】
一方、上記目的を達成するために、本発明に係る請求項９記載の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理をコンピュータに実行させるためのプログラムであって、対象ブロックに隣接するブロックを参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記参照ブロック内の一の画素を参照画素とした場合に、前記フィルタ処理は、前記対象画素の値と前記参照画素の値との差分値が閾値を超えているか否かを判定し、前記対象画素についてフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についてのフィルタ演算を、前記対象画素の値と前記参照画素の値とにのみ基づいて行うようになっている。
【００４２】
本発明の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理をコンピュータに実行させるためのプログラムであって、対象ブロックに対し水平方向に隣接するブロックを水平参照ブロックとし、前記対象ブロックに対し垂直方向に隣接するブロックを垂直参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記水平参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置しかつ前記対象画素と垂直方向の位置が同一のものを水平参照画素とし、前記垂直参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置しかつ前記対象画素と水平方向の位置が同一のものを垂直参照画素とした場合に、前記フィルタ処理は、前記対象画素の値と前記垂直参照画素の値との差分値が閾値を超えているか否かを判定し、前記対象画素についての水平方向のフィルタ演算を、前記対象画素の値と前記水平参照画素の値とにのみ基づいて行い、前記対象画素について垂直方向のフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についての垂直方向のフィルタ演算を、前記対象画素の値と前記垂直参照画素の値とにのみ基づいて行うようになっている。
【００４４】
本発明の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、対象ブロックに対し水平方向に隣接するブロックを水平参照ブロックとし、前記対象ブロックに対し垂直方向に隣接するブロックを垂直参照ブロックとし、さらに、前記対象ブロック内の一の画素を対象画素とし、前記水平参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置しかつ前記対象画素と垂直方向の位置が同一のものを水平参照画素とし、前記垂直参照ブロック内の一の画素であって前記対象ブロックとの境界線に位置しかつ前記対象画素と水平方向の位置が同一のものを垂直参照画素とした場合に、前記フィルタ処理は、前記対象画素の値と前記垂直参照画素の値との差分値が閾値を超えているか否かを判定し、前記対象画素についての水平方向のフィルタ演算を、前記対象画素の値と前記水平参照画素の値とにのみ基づいて行い、前記対象画素について垂直方向のフィルタ演算を行うか否かを、前記判定結果にのみ基づいて決定するとともに、前記対象画素についての垂直方向のフィルタ演算を、前記対象画素の値と前記垂直参照画素の値とにのみ基づいて行う。
【００４５】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図１ないし図１３は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の実施の形態を示す図である。
本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図１に示すように、コンピュータ１００において、マルチタスクで動作するＯＳ（Operating System）により、ＭＰＥＧ形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対して、ブロックノイズを低減するフィルタ処理（以下、デブロックフィルタ処理という。）を行う場合について適用したものである。
【００４６】
まず、本発明を適用するコンピュータシステムの構成を図１を参照しながら説明する。図１は、本発明を適用するコンピュータシステムの構成を示すブロック図である。
コンピュータ１００は、図１に示すように、制御プログラムに基づいて演算およびシステム全体を制御するＣＰＵ３０と、所定領域にあらかじめＣＰＵ３０の制御プログラム等を格納しているＲＯＭ３２と、ＲＯＭ３２等から読み出したデータやＣＰＵ３０の演算過程で必要な演算結果を格納するためのＲＡＭ３４と、ＲＡＭ３４の特定領域のデータを画像信号に変換してＬＣＤ（Liquid Crystal Display）４４に出力するＬＣＤＣ３６と、動画データをデコードするデコーダ３８と、ＲＡＭ３４の特定領域のデータを読み出してデブロックフィルタ処理を行うポストフィルタ部４０と、ポストフィルタ部４０からのデータに対して色素変換を行うＲＧＢ変換部４２と、ＲＧＢ変換部４２からのデータに基づいて表示を行うＬＣＤ４４とで構成されている。そして、ＣＰＵ３０、ＲＯＭ３２、ＲＡＭ３４、ＬＣＤＣ３６およびデコーダ３８は、データを転送するための信号線であるバス３９で相互にかつデータ授受可能に接続されている。
【００４７】
ＲＡＭ３４は、特定領域として、ＬＣＤ４４に表示するデータを格納するためのＶＲＡＭ３５を有しており、ＶＲＡＭ３５は、ＣＰＵ３０等のバス３９に接続された機器とポストフィルタ部４０とで独立にアクセスが可能となっている。また、ＶＲＡＭ３５は、ＬＣＤ４４の１画面分の画像データを格納可能な領域を少なくとも２つ有し、一方の領域を、デコーダ３８が動画データを展開するためのものとし、他方の領域を、ポストフィルタ部４０が読み出すためのものとし、それら領域は、所定周期で交互に切り換えて使用される。
【００４８】
ＬＣＤＣ３６は、ポストフィルタ部４０およびＲＧＢ変換部４２を制御することにより、ＶＲＡＭ３５のデータを先頭アドレスから所定周期で順次読み出し、読み出したデータを画像信号に変換してＬＣＤ４４に出力するようになっている。すなわち、ポストフィルタ部４０は、ＬＣＤＣ３６の制御により、ＶＲＡＭ３５からデータを読み出し、読み出したデータに対してデブロックフィルタ処理を行ってＲＧＢ変換部４２に出力し、ＲＧＢ変換部４２は、ＬＣＤＣ３６の制御により、ポストフィルタ部４０からのデータに対してＲＧＢ変換を行ってＬＣＤ４４に出力する。
【００４９】
デコーダ３８は、所定時間Ｔ（例えば、２０[ｍｓ]）ごとに動画データに含まれている画像データを順次デコードするようになっており、具体的には、ＣＰＵ３０からのデコード開始命令により、ＭＰＥＧ形式で圧縮された動画データをＲＡＭ３４から読み出し、読み出した動画データに基づいて、ＭＰＥＧ形式で画像データをＶＲＡＭ３５にデコードする。ＶＲＡＭ３５には、ＬＣＤ４４の一画素の色度合いを示す画素データ（ＹＵＶデータ）を単位として画像データが展開される。また、デコーダ３８では、ＭＰＥＧ形式による復号化処理のうちＩＤＣＴ（Inverse Discrete Cosine Transorm：逆離散コサイン変換）処理および動き補償処理を行う。なお、ＭＰＥＧ形式による圧縮処理および復号化処理については、従来の例による。
【００５０】
次に、ポストフィルタ部４０の構成を詳細に説明する。
ポストフィルタ部４０は、その構成および内部処理をハードウェアにより実現するものであって、２１画素分の画素データを格納可能なバッファを有し、再生画像を複数のブロックに区分し、ＶＲＡＭ３５からバッファに画素データを読み込みながら、読み込んだ画素データに基づいてブロック単位でデブロックフィルタ処理を行う。各ブロックは、水平方向８画素でかつ垂直方向８画素からなる矩形の画素領域として構成するとともに、さらに、水平方向４画素でかつ垂直方向４画素からなる左上、右上、左下および右下の４つの領域に区分する。
【００５１】
本発明に係るデブロックフィルタ処理の原理を図２ないし図４を参照しながら詳細に説明する。図２および図４は、再生画像においてデブロックフィルタ処理の対象となる対象ブロックおよびその隣接ブロックを示す図である。
図２において、対象ブロック１０の左右には、境界線BL0を挟んで水平参照ブロック１２が、境界線BL1を挟んで水平参照ブロック１４がそれぞれ隣接している。また、対象ブロック１０の上下には、境界線BL2を挟んで垂直参照ブロック１６が、境界線BL3を挟んで垂直参照ブロック１８がそれぞれ隣接している。
【００５２】
本発明に係るデブロックフィルタ処理は、対象ブロック１０内の同一水平線上の画素を対象画素とし、それら８画素分の対象画素を一括でフィルタ処理する。図２の例では、対象ブロック１０の上半分の領域に属する同一水平線上の画素を対象画素ｖ0〜ｖ7としている。ここで、その同一水平線上の画素のうち左半分の４画素からなる画素列を第１対象画素列ＬSLとし、右半分の４画素からなる画素列を第２対象画素列ＬSRとした場合、第１対象画素列ＬSLには、対象画素ｖ0〜ｖ3が左から順に含まれ、第２対象画素列ＬSRには、対象画素ｖ4〜ｖ7が左から順に含まれる。
【００５３】
また、水平参照ブロック１２内の画素列であって第１対象画素列ＬSLに左に隣接しかつ４画素からなるものを第１水平参照画素列ＬXLとし、水平参照ブロック１４内の画素列であって第２対象画素列ＬSRに右に隣接しかつ４画素からなるものを第２水平参照画素列ＬXRとした場合、第１水平参照画素列ＬXLには、その右端に参照画素ｒx0が含まれ、第２水平参照画素列ＬXRには、その左端に参照画素ｒx1が含まれる。参照画素ｒx0は、対象画素ｖ0〜ｖ3について水平方向のフィルタ演算に用いられ、参照画素ｒx1は、対象画素ｖ4〜ｖ7について水平方向のフィルタ演算に用いられる。
【００５４】
また、垂直参照ブロック１６の最下段の画素列であって第１対象画素列ＬSLの上方に位置しかつ４画素からなるものを第１垂直参照画素列ＬYLとし、垂直参照ブロック１６の最下段のものであって第２対象画素列ＬSRの上方に位置しかつ４画素からなる画素列を第２垂直参照画素列ＬYRとしとした場合、第１垂直参照画素列ＬYLには、参照画素ｒy0〜ｒy3が左から順に含まれ、第２垂直参照画素列ＬYRには、参照画素ｒy4〜ｒy7が左から順に含まれる。参照画素ｒy0〜ｒy3は、対象画素ｖ0〜ｖ3について垂直方向のフィルタ演算に用いられ、参照画素ｒy4〜ｒy7は、対象画素ｖ4〜ｖ7について垂直方向のフィルタ演算に用いられる。
【００５５】
図２の例において、本発明に係るデブロックフィルタ処理により、対象画素ｖ0〜ｖ7について水平方向のフィルタ演算を行った場合、デブロックフィルタ処理後の各対象画素の値ｖx0'〜ｖx7'は、下式（１）〜（８）のフィルタ演算式により算出する。なお、下式（１）〜（８）において、ｖ0〜ｖ7は、対象画素の値を示し、ｒx0，ｒx1は、参照画素の値を示している。
ｖx0'＝(ｖ0＋ｒx0)／２＋(ｖ0−ｒx0)／８                      …（１）
ｖx1'＝(ｖ1＋ｒx0)／２＋(ｖ1−ｒx0)／４                      …（２）
ｖx2'＝ｖ2−(ｖ2−ｒx0)／８                                  …（３）
ｖx3'＝ｖ3                                                  …（４）
ｖx4'＝ｖ4                                                  …（５）
ｖx5'＝(ｖ5＋ｒx1)／２＋(ｖ5−ｒx1)／４                      …（６）
ｖx6'＝(ｖ6＋ｒx1)／２＋(ｖ6−ｒx1)／８                      …（７）
ｖx7'＝(ｖ7＋ｒx1)／２                                      …（８）
上式（１）〜（８）のフィルタ演算式は、次のように導出される。図３は、互いに隣接するブロックＡ，Ｂにおいて同一水平線上の対象画素の値ｖ0〜ｖ7を示した棒グラフである。
【００５６】
互いに隣接するブロック間Ａ，Ｂでは、図３（ａ）に示すように、圧縮時のＤＣＴ処理により画像の空間的な周波数成分のうち直流成分に相当するものが除去されることから、輝度の平均値が異なることによる段差が発生している。この段差がブロックノイズとなる。そこで、ブロックノイズを低減するために、ブロックＡ，Ｂの画像を滑らかに接続する場合を考える。ブロックＡ内の４画素の平均値ＶA、およびブロックＢ内の４画素の平均値ＶBは、下式（９），（10）により算出することができる。
ＶA＝(ｖ4＋ｖ5＋ｖ6＋ｖ7)／４                                …（９）
ＶB＝(ｖ0＋ｖ1＋ｖ2＋ｖ3)／４                                …（10）
各対象画素の値ｖiの平均値ＶA，ＶBからのずれ量をδｖiとすると、各対象画素の値ｖiは、下式（11），（12）により表すことができる。
ｖi＝ＶA＋δｖi  （ｉ＝４〜７）                             …（11）
ｖi＝ＶB＋δｖi  （ｉ＝０〜３）                             …（12）
さて、ブロックＡ，Ｂの画像を滑らかに接続するためには、平均値ＶA，ＶBの差を「０」にすればよく、図３（ｂ）に示すように、階段状に各対象画素の値ｖiを補正してやればよい。各階段の段差Δは、
Δ＝(ＶB−ＶA)／８                                          …（13）
なので、例えば、対象画素の値ｖ0の補正後の値ｖx0'は、下式（14）により算出することができる。
0004114494.tif 000002
ここで、正確な値を算出するためには、上式（14）に従わなければならないが、上式（14）において、(δｖ0−δｖ7)が小さいと仮定して省略し、下式（15）の近似式を得る。
ｖx0'＝(５ｖ0＋３ｖ7)／８                                    …（15）
また、ブロックＢ内の他の対象画素についても同様に、補正後の値ｖx1'〜ｖx3'は、下式（16）〜（18）により算出することができる。
0004114494.tif 000003
これにより、下式（19），（20）の近似式を得る。
ｖx1'＝(３ｖ1＋ｖ7)／４                                       …（19）
ｖx2'＝(７ｖ2＋ｖ7)／８                                       …（20）
また、ブロックＡ内の対象画素については、参照画素の値がｖ0となる点で異なる以外は同様であり、補正後の値ｖx4'〜ｖx7'は、下式（21）〜（24）により算出することができる。
0004114494.tif 000004
これにより、下式（25）〜（28）の近似式を得る。
ｖx4'＝ｖ4                                                    …（25）
ｖx5'＝(３ｖ5＋ｖ0)／４                                       …（26）
ｖx6'＝(５ｖ6＋３ｖ0)／８                                     …（27）
ｖx7'＝(ｖ7＋ｖ0)／２                                         …（28）
また、実際の演算では、除算演算よりもビットシフトの方が処理を高速化することができるため、上式（15），（19），（20），（18），（25）〜（28）を上式（１）〜（８）に変形して用いる。このデブロックフィルタ処理を水平方向の画素列および垂直方向の画素列に対してそれぞれ行う。演算量としては、１画素に対して、加算および減算がそれぞれ２回、ビットシフトが４回ですむ。ビットシフトは、ハードウェア化する際にはさほど負荷にならない。従来のポストフィルタでは、１画素について最大７×７画素分の重み付け平均をとっていたので、それと比べて大幅に演算量を減らすことができる。
【００５７】
同様にして、図２の例において、本発明に係るデブロックフィルタ処理により、対象画素ｖx0'〜ｖx7'について垂直方向のフィルタ演算を行った場合、デブロックフィルタ処理後の各対象画素の値ｖyi'（ｉ＝０〜７）は、下式（29）のフィルタ演算式により算出することができる。なお、下式（29）〜（36）において、ｒyiは、参照画素の値を示している。
ｖyi'＝ｖxi−(ｖxi'−ｒyi)／８                                …（29）
図２の例では、対象画素ｖ0〜ｖ7は、対象ブロック１０において３段目に位置しているので、上式（29）のフィルタ演算式は、上式（３）に対応するものとなる。したがって、対象画素ｖ0〜ｖ7が１，２，４段目に位置するときは、フィルタ演算式は、下式（30）〜（32）に示すように、上式（１），（２），（４）に対応したものとなり、対象画素ｖ0〜ｖ7が５〜８段目に位置するときは、フィルタ演算式は、下式（33）〜（36）に示すように、上式（５）〜（８）に対応したものとなる。ただし、対象画素ｖ0〜ｖ7が５〜８段目に位置するときは、図４に示すように、第１垂直参照画素列ＬYLは、垂直参照ブロック１８の最上段の画素列であって第１対象画素列ＬSLの下方に位置しかつ４画素からなるものとなり、第２垂直参照画素列ＬYRは、垂直参照ブロック１８の最上段の画素列であって第２対象画素列ＬSRの下方に位置しかつ４画素からなるものとなる。
ｖyi'＝(ｖxi'＋ｒyi)／２＋(ｖxi'−ｒyi)／８                  …（30）
ｖyi'＝(ｖxi'＋ｒyi)／２＋(ｖxi'−ｒyi)／４                  …（31）
ｖyi'＝ｖxi'                                                …（32）
ｖyi'＝ｖxi'                                                …（33）
ｖyi'＝(ｖxi'＋ｒyi)／２＋(ｖxi'−ｒyi)／４                  …（34）
ｖyi'＝(ｖxi'＋ｒyi)／２＋(ｖxi'−ｒyi)／８                  …（35）
ｖyi'＝(ｖxi'＋ｒyi)／２                                    …（36）
本発明に係るデブロックフィルタ処理は、具体的に、図５ないし図１０のフローチャートに示す主制御処理、画素データ読込処理、第１水平フィルタ処理、第１垂直フィルタ処理、第２水平フィルタ処理および第２垂直フィルタ処理により実現することができる。
【００５８】
まず、主制御処理を図５を参照しながら詳細に説明する。図５は、主制御処理を示すフローチャートである。
主制御処理は、ポストフィルタ部４０において実行されると、図５に示すように、まず、ステップＳ１００に移行するようになっている。
ステップＳ１００では、ＶＲＡＭ３５において最初に処理すべき第１対象画素列ＬSLの左端画素の画素データが格納されているアドレスを対象画素用ポインタ*sxに、ＶＲＡＭ３５において最初に処理すべき第１垂直参照画素列ＬYLの左端画素の画素データが格納されているアドレスを垂直参照画素用ポインタ*cyにそれぞれ設定する。ここで、対象画素用ポインタ*sxは、第１対象画素列ＬSL、第２対象画素列ＬSRおよび第２水平参照画素列ＬXRの画素データをＶＲＡＭ３５から読み込むのに用いられる。また、垂直参照画素用ポインタ*cyは、第１垂直参照画素列ＬYLおよび第２垂直参照画素列ＬYRをＶＲＡＭ３５から読み込むのに用いられる。
【００５９】
次いで、ステップＳ１０２に移行して、対象画素用ポインタ*sxおよび垂直参照画素用ポインタ*cyを参照して、第１対象画素列ＬSL、第２対象画素列ＬSR、第２水平参照画素列ＬXR、第１垂直参照画素列ＬYLおよび第２垂直参照画素列ＬYRをＶＲＡＭ３５から読み込むべき読込要求を出力し、ステップＳ１０４に移行する。
【００６０】
ステップＳ１０４では、後述する第１垂直フィルタ処理および第２垂直フィルタ処理により、第１対象画素列ＬSLおよび第２対象画素列ＬSRの対象画素についてフィルタ処理後の画素データがすべてＲＧＢ変換部４２に出力されたか否かを判定し、フィルタ処理後の画素データがすべてＲＧＢ変換部４２に出力されたと判定したとき(Yes)は、ステップＳ１０６に移行するが、そうでないと判定したとき(No)は、フィルタ処理後の画素データがすべてＲＧＢ変換部４２に出力されるまでステップＳ１０４で待機する。
【００６１】
ステップＳ１０６では、対象画素用ポインタ*sxおよび垂直参照画素用ポインタ*cyを更新するポインタ更新処理を実行し、ステップＳ１０８に移行して、再生画像のすべての画素についてフィルタ処理が終了したか否かを判定し、再生画像のすべての画素についてフィルタ処理が終了したと判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させる。
【００６２】
一方、ステップＳ１０８で、再生画像のすべての画素についてフィルタ処理が終了していないと判定したとき(No)は、ステップＳ１０２に移行する。
次に、画素データ読込処理を図６を参照しながら詳細に説明する。図６は、画素データ読込処理を示すフローチャートである。
画素データ読込処理は、読込要求に応じて、第１対象画素列ＬSL、第２対象画素列ＬSR、第２水平参照画素列ＬXR、第１垂直参照画素列ＬYLおよび第２垂直参照画素列ＬYRをＶＲＡＭ３５からバッファに読み込む処理であって、ポストフィルタ部４０において実行されると、図６に示すように、まず、ステップＳ２００に移行するようになっている。
【００６３】
ステップＳ２００では、読込要求が出力されたか否かを判定し、読込要求が出力されたと判定したとき(Yes)は、ステップＳ２０２に移行するが、そうでないと判定したとき(No)は、読込要求が出力されるまでステップＳ２００で待機する。
ステップＳ２０２では、対象画素用ポインタ*sxを参照して、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3の画素データのうちＵ成分を示すＵデータを読み込む。本実施の形態では、Ｕデータを、２画素ごとに１つのデータとして構成しているため、ステップＳ２０２では、対象画素ｖ0，ｖ1のＵデータ、および対象画素ｖ2，ｖ3のＵデータを読み込む。なお、Ｕデータについては、フィルタ処理を行ってもさほどフィルタ効果が得られないことから、処理の高速化を優先してデブロックフィルタ処理は行わない。
【００６４】
次いで、ステップＳ２０４に移行して、対象画素用ポインタ*sxを参照して、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7の画素データのうちＵデータを読み込み、ステップＳ２０６に移行する。
次いで、ステップＳ２０６に移行して、対象画素用ポインタ*sxを参照して、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3の画素データのうちＶ成分を示すＶデータを読み込む。本実施の形態では、Ｖデータを、２画素ごとに１つのデータとして構成しているため、ステップＳ２０６では、対象画素ｖ0，ｖ1のＶデータ、および対象画素ｖ2，ｖ3のＶデータを読み込む。なお、Ｖデータについては、フィルタ処理を行ってもさほどフィルタ効果が得られないことから、処理の高速化を優先してデブロックフィルタ処理は行わない。
【００６５】
次いで、ステップＳ２０８に移行して、対象画素用ポインタ*sxを参照して、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7の画素データのうちＶデータを読み込み、ステップＳ２１０に移行する。
ステップＳ２１０では、再生画像について最初の読込であるか否かを判定し、最初の読込であると判定したとき(Yes)は、ステップＳ２１２に移行して、対象画素用ポインタ*sxを参照して、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3の画素データのうちＹ成分を示すＹデータを読み込む。本実施の形態では、Ｙデータを、１画素ごとに１つのデータとして構成しているため、ステップＳ２１２では、対象画素ｖ0〜ｖ3のそれぞれのＶデータを読み込む。
【００６６】
次いで、ステップＳ２１４に移行して、垂直参照画素用ポインタ*cyを参照して、第１垂直参照画素列ＬYLの各参照画素ｒy0〜ｒy3の画素データのうちＹデータを読み込み、ステップＳ２１６に移行して、垂直参照画素用ポインタ*cyを参照して、第２垂直参照画素列ＬYRの各参照画素ｒy4〜ｒy7の画素データのうちＹデータを読み込み、ステップＳ２１８に移行する。
【００６７】
ステップＳ２１８では、対象画素用ポインタ*sxを参照して、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7の画素データのうちＹデータを読み込み、ステップＳ２２０に移行して、対象画素用ポインタ*sxを参照して、第２水平参照画素列ＬXRの各画素（参照画素ｒx1を含む。）の画素データのうちＹデータを読み込み、一連の処理を終了して元の処理に復帰させる。
【００６８】
一方、ステップＳ２１０で、再生画像について２回目以降の読込であると判定したとき(No)は、ステップＳ２２２に移行して、ステップＳ２２０で前回読み込んだ第２水平参照画素列ＬXRの画素データを、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3の画素データとしてバッファ内でコピーし、ステップＳ２２４に移行して、ステップＳ２２０で前回読み込んだ第２対象画素列ＬSRの画素データのうち右端画素に係るものを、第１水平参照画素列ＬXLの参照画素ｒx0の画素データとしてバッファ内でコピーし、ステップＳ２１４に移行する。
【００６９】
次に、第１水平フィルタ処理を図７を参照しながら詳細に説明する。図７は、第１水平フィルタ処理を示すフローチャートである。
第１水平フィルタ処理は、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3について水平方向のフィルタ演算を行う処理であって、ポストフィルタ部４０において実行されると、図７に示すように、まず、ステップＳ３００に移行するようになっている。
【００７０】
ステップＳ３００では、画素データ読込処理により、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3および第１水平参照画素列ＬXLの参照画素ｒx0のＹデータがバッファにおいて利用可能となったか否かを判定し、読込またはコピーにより画素データが利用可能となったと判定したとき(Yes)は、ステップＳ３０２〜Ｓ３１２に移行するが、そうでないと判定したとき(No)は、画素データが利用可能となるまでステップＳ３００で待機する。
【００７１】
ステップＳ３０２〜Ｓ３１２は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ３０２では、対象画素ｖ0の値と参照画素ｒx0の値との差分の絶対値が定数値Ｃ1を超えているか否かの判定値Ｌ0を下式（37）により算出し、ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２に移行する。ここで、定数値Ｃ1は、画素の値の最大値を「２５５」として「３２」に設定する。その理由としては、定数値Ｃ1は、「３２」よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「３２」よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できないからである。
Ｌ0＝(｜ｖ0−ｒx0｜≦Ｃ1)                                    …（37）
上式（37）において、Ｌ0は、括弧内の演算式が成立したときは「１」となり、括弧内の演算式が成立しないときは「０」となる。以下、ステップＳ３０４，Ｓ３０６，Ｓ４０４，Ｓ４１３，Ｓ４２０，Ｓ４２９，Ｓ５０２，Ｓ５０４，Ｓ５０６，Ｓ６０４，Ｓ６１３，Ｓ６２０，Ｓ６２９において同じである。
【００７２】
ステップＳ３０４では、対象画素ｖ1の値と対象画素ｖ0の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ1を下式（38）により算出し、ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２に移行する。ここで、定数値Ｃ2は、画素の値の最大値を「２５５」として「１６」に設定する。その理由としては、定数値Ｃ2は、「１６」よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「１６」よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できないからである。
Ｌ1＝(｜ｖ1−ｖ0｜≦Ｃ2)                                     …（38）
ステップＳ３０６では、対象画素ｖ2の値と対象画素ｖ1の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ2を下式（39）により算出し、ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２に移行する。
Ｌ2＝(｜ｖ2−ｖ1｜≦Ｃ2)                                     …（39）
ステップＳ３０８では、対象画素ｖ0について水平方向のフィルタ演算後の値ｖx0''を上式（１）により算出し、ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２に移行する。ステップＳ３０８では、上式（１）のｖx0'に設定すべき値をｖx0''に設定する。
【００７３】
ステップＳ３１０では、対象画素ｖ1について水平方向のフィルタ演算後の値ｖx1''を上式（２）により算出し、ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２に移行する。ステップＳ３１０では、上式（２）のｖx1'に設定すべき値をｖx1''に設定する。
ステップＳ３１２では、対象画素ｖ2について水平方向のフィルタ演算後の値ｖx2''を上式（３）により算出し、ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２に移行する。ステップＳ３１２では、上式（３）のｖx2'に設定すべき値をｖx2''に設定する。
【００７４】
ステップＳ３１４，Ｓ３２０，Ｓ３２６，Ｓ３３２は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ３１４では、判定値Ｌ0が「１」であるか否かを判定し、判定値Ｌ0が「１」であると判定したとき(Yes)は、ステップＳ３１６に移行して、対象画素ｖ0の新たな値ｖx0'としてｖx0''を設定し、一連の処理を終了して元の処理に復帰させる。
【００７５】
ステップＳ３２０では、判定値Ｌ0，Ｌ1の論理積が「１」であるか否かを判定し、判定値Ｌ0，Ｌ1の論理積が「１」であると判定したとき(Yes)は、ステップＳ３２２に移行して、対象画素ｖ1の新たな値ｖx1'としてｖx1''を設定し、一連の処理を終了して元の処理に復帰させる。
ステップＳ３２６では、判定値Ｌ0〜Ｌ2の論理積が「１」であるか否かを判定し、判定値Ｌ0〜Ｌ2の論理積が「１」であると判定したとき(Yes)は、ステップＳ３２８に移行して、対象画素ｖ2の新たな値ｖx2'としてｖx2''を設定し、一連の処理を終了して元の処理に復帰させる。
【００７６】
ステップＳ３３２では、対象画素ｖ3の新たな値ｖx3'としてｖ3を設定し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ３１４で、判定値Ｌ0が「０」であると判定したとき(No)は、ステップＳ３１８に移行して、対象画素ｖ0の新たな値ｖx0'としてｖ0を設定し、一連の処理を終了して元の処理に復帰させる。
【００７７】
一方、ステップＳ３２０で、判定値Ｌ0，Ｌ1の論理積が「０」であると判定したとき(No)は、ステップＳ３２４に移行して、対象画素ｖ1の新たな値ｖx1'としてｖ1を設定し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ３２６で、判定値Ｌ0〜Ｌ2の論理積が「０」であると判定したとき(No)は、ステップＳ３３０に移行して、対象画素ｖ2の新たな値ｖx2'としてｖ2を設定し、一連の処理を終了して元の処理に復帰させる。
【００７８】
次に、第１垂直フィルタ処理を図８を参照しながら詳細に説明する。図８は、第１垂直フィルタ処理を示すフローチャートである。
第１垂直フィルタ処理は、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3について垂直方向のフィルタ演算を行う処理であって、ポストフィルタ部４０において実行されると、図８に示すように、まず、ステップＳ４００に移行するようになっている。
【００７９】
ステップＳ４００では、画素データ読込処理により、第１垂直参照画素列ＬYLの参照画素ｒy0〜ｒy3のＹデータがバッファにおいて利用可能となったか否かを判定し、読込またはコピーにより画素データが利用可能となったと判定したとき(Yes)は、ステップＳ４０２に移行するが、そうでないと判定したとき(No)は、画素データが利用可能となるまでステップＳ４００で待機する。
【００８０】
ステップＳ４０２では、第１水平フィルタ処理により、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3について水平方向のフィルタ処理が完了しているか否かを判定し、フィルタ処理が完了していると判定したとき(Yes)は、ステップＳ４０４，Ｓ４０６に移行するが、そうでないと判定したとき(No)は、ステップＳ４００に移行する。
【００８１】
ステップＳ４０４，Ｓ４０６は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ４０４では、対象画素ｖx0'の値と参照画素ｒy0の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ0を下式（40）により算出し、ステップＳ４０８に移行する。ここで、定数値Ｃ2を用いているが、対象ブロック１０において第１対象画素列ＬSLが最上段または最下段に位置している場合は、これに代えて定数値Ｃ1を用いる。以下、ステップＳ４１３，Ｓ４２０，Ｓ４２９において同じである。
Ｌ0＝(｜ｖx0'−ｒy0｜≦Ｃ2)                                   …（40）
ステップＳ４０６では、対象画素ｖx0'について垂直方向のフィルタ演算後の値ｖy0''を、対象ブロック１０における第１対象画素列ＬSLの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ４０８に移行する。ステップＳ４０６では、上式（29）〜（36）のｖy0'に設定すべき値をｖy0''に設定する。
【００８２】
ステップＳ４０８では、判定値Ｌ0が「１」であるか否かを判定し、判定値Ｌ0が「１」であると判定したとき(Yes)は、ステップＳ４１０に移行して、対象画素ｖ0の新たな値ｖy0'としてｖy0''を設定し、ステップＳ４１１に移行して、対象画素ｖ0，ｖ1のＵデータおよびＶデータをＲＧＢ変換部４２に出力し、ステップＳ４１２に移行して、対象画素ｖ0のＹデータｖy0''をＲＧＢ変換部４２に出力し、ステップＳ４１３，Ｓ４１４に移行する。
【００８３】
ステップＳ４１３，Ｓ４１４は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ４１３では、対象画素ｖx1'の値と参照画素ｒy1の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ1を下式（41）により算出し、ステップＳ４１６に移行する。
Ｌ1＝(｜ｖx1'−ｒy1｜≦Ｃ2)                                   …（41）
ステップＳ４１４では、対象画素ｖx1'について垂直方向のフィルタ演算後の値ｖy1''を、対象ブロック１０における第１対象画素列ＬSLの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ４１６に移行する。ステップＳ４１４では、上式（29）〜（36）のｖy1'に設定すべき値をｖy1''に設定する。
【００８４】
ステップＳ４１６では、判定値Ｌ1が「１」であるか否かを判定し、判定値Ｌ1が「１」であると判定したとき(Yes)は、ステップＳ４１８に移行して、対象画素ｖ1の新たな値ｖy1'としてｖy1''を設定し、ステップＳ４１９に移行して、対象画素ｖ1のＹデータｖy1''をＲＧＢ変換部４２に出力し、ステップＳ４２０，Ｓ４２２に移行する。
【００８５】
ステップＳ４２０，Ｓ４２２は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ４２０では、対象画素ｖx2'の値と参照画素ｒy2の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ2を下式（42）により算出し、ステップＳ４２４に移行する。
Ｌ2＝(｜ｖx2'−ｒy2｜≦Ｃ2)                                   …（42）
ステップＳ４２２では、対象画素ｖx2'について垂直方向のフィルタ演算後の値ｖy2''を、対象ブロック１０における第１対象画素列ＬSLの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ４２４に移行する。ステップＳ４２２では、上式（29）〜（36）のｖy2'に設定すべき値をｖy2''に設定する。
【００８６】
ステップＳ４２４では、判定値Ｌ2が「１」であるか否かを判定し、判定値Ｌ2が「１」であると判定したとき(Yes)は、ステップＳ４２６に移行して、対象画素ｖ2の新たな値ｖy2'としてｖy2''を設定し、ステップＳ４２７に移行して、対象画素ｖ2，ｖ3のＵデータおよびＶデータをＲＧＢ変換部４２に出力し、ステップＳ４２８に移行して、対象画素ｖ2のＹデータｖy2''をＲＧＢ変換部４２に出力し、ステップＳ４２９，Ｓ４３０に移行する。
【００８７】
ステップＳ４２９，Ｓ４３０は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ４２９では、対象画素ｖx3'の値と参照画素ｒy3の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ3を下式（43）により算出し、ステップＳ４３２に移行する。
Ｌ3＝(｜ｖx3'−ｒy3｜≦Ｃ2)                                   …（43）
ステップＳ４３０では、対象画素ｖx3'について垂直方向のフィルタ演算後の値ｖy3''を、対象ブロック１０における第１対象画素列ＬSLの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ４３２に移行する。ステップＳ４３０では、上式（29）〜（36）のｖy3'に設定すべき値をｖy3''に設定する。
【００８８】
ステップＳ４３２では、判定値Ｌ3が「１」であるか否かを判定し、判定値Ｌ3が「１」であると判定したとき(Yes)は、ステップＳ４３４に移行して、対象画素ｖ3の新たな値ｖy3'としてｖy3''を設定し、ステップＳ４４６に移行して、対象画素ｖ3のＹデータｖy3''をＲＧＢ変換部４２に出力し、一連の処理を終了して元の処理に復帰させる。
【００８９】
一方、ステップＳ４３２で、判定値Ｌ3が「０」であると判定したとき(No)は、ステップＳ４４８に移行して、対象画素ｖ3の新たな値ｖy3'としてｖx3'を設定し、ステップＳ４４６に移行する。
一方、ステップＳ４２４で、判定値Ｌ2が「０」であると判定したとき(No)は、ステップＳ４５０に移行して、対象画素ｖ2の新たな値ｖy2'としてｖx2'を設定し、ステップＳ４２７に移行する。
【００９０】
一方、ステップＳ４１６で、判定値Ｌ1が「０」であると判定したとき(No)は、ステップＳ４５２に移行して、対象画素ｖ1の新たな値ｖy1'としてｖx1'を設定し、ステップＳ４１９に移行する。
一方、ステップＳ４０８で、判定値Ｌ0が「０」であると判定したとき(No)は、ステップＳ４５４に移行して、対象画素ｖ0の新たな値ｖy0'としてｖx0'を設定し、ステップＳ４１１に移行する。
【００９１】
次に、第２水平フィルタ処理を図９を参照しながら詳細に説明する。図９は、第２水平フィルタ処理を示すフローチャートである。
第２水平フィルタ処理は、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7について水平方向のフィルタ演算を行う処理であって、ポストフィルタ部４０において実行されると、図９に示すように、まず、ステップＳ５００に移行するようになっている。
【００９２】
ステップＳ５００では、画素データ読込処理により、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7および第２水平参照画素列ＬXRの参照画素ｒx1のＹデータがバッファにおいて利用可能となったか否かを判定し、読込またはコピーにより画素データが利用可能となったと判定したとき(Yes)は、ステップＳ５０２〜Ｓ５１２に移行するが、そうでないと判定したとき(No)は、画素データが利用可能となるまでステップＳ５００で待機する。
【００９３】
ステップＳ５０２〜Ｓ５１２は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ５０２では、対象画素ｖ7の値と参照画素ｒx1の値との差分の絶対値が定数値Ｃ1を超えているか否かの判定値Ｌ7を下式（44）により算出し、ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２に移行する。
Ｌ7＝(｜ｖ7−ｒx1｜≦Ｃ1)                                     …（44）
ステップＳ５０４では、対象画素ｖ6の値と対象画素ｖ7の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ6を下式（45）により算出し、ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２に移行する。
Ｌ6＝(｜ｖ6−ｖ7｜≦Ｃ2)                                      …（45）
ステップＳ５０６では、対象画素ｖ5の値と対象画素ｖ6の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ5を下式（46）により算出し、ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２に移行する。
Ｌ5＝(｜ｖ5−ｖ6｜≦Ｃ2)                                      …（46）
ステップＳ５０８では、対象画素ｖ7について水平方向のフィルタ演算後の値ｖx7''を上式（８）により算出し、ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２に移行する。ステップＳ５０８では、上式（８）のｖx7'に設定すべき値をｖx7''に設定する。
【００９４】
ステップＳ５１０では、対象画素ｖ6について水平方向のフィルタ演算後の値ｖx6''を上式（７）により算出し、ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２に移行する。ステップＳ５１０では、上式（７）のｖx6'に設定すべき値をｖx6''に設定する。
ステップＳ５１２では、対象画素ｖ5について水平方向のフィルタ演算後の値ｖx5''を上式（６）により算出し、ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２に移行する。ステップＳ５１２では、上式（６）のｖx5'に設定すべき値をｖx5''に設定する。
【００９５】
ステップＳ５１４，Ｓ５２０，Ｓ５２６，Ｓ５３２は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ５１４では、判定値Ｌ7が「１」であるか否かを判定し、判定値Ｌ7が「１」であると判定したとき(Yes)は、ステップＳ５１６に移行して、対象画素ｖ7の新たな値ｖx7'としてｖx7''を設定し、一連の処理を終了して元の処理に復帰させる。
【００９６】
ステップＳ５２０では、判定値Ｌ7，Ｌ6の論理積が「１」であるか否かを判定し、判定値Ｌ7，Ｌ6の論理積が「１」であると判定したとき(Yes)は、ステップＳ５２２に移行して、対象画素ｖ6の新たな値ｖx6'としてｖx6''を設定し、一連の処理を終了して元の処理に復帰させる。
ステップＳ５２６では、判定値Ｌ7〜Ｌ5の論理積が「１」であるか否かを判定し、判定値Ｌ7〜Ｌ5の論理積が「１」であると判定したとき(Yes)は、ステップＳ５２８に移行して、対象画素ｖ5の新たな値ｖx5'としてｖx5''を設定し、一連の処理を終了して元の処理に復帰させる。
【００９７】
ステップＳ５３２では、対象画素ｖ4の新たな値ｖx4'としてｖ4を設定し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ５１４で、判定値Ｌ7が「０」であると判定したとき(No)は、ステップＳ５１８に移行して、対象画素ｖ7の新たな値ｖx7'としてｖ7を設定し、一連の処理を終了して元の処理に復帰させる。
【００９８】
一方、ステップＳ５２０で、判定値Ｌ7，Ｌ6の論理積が「０」であると判定したとき(No)は、ステップＳ５２４に移行して、対象画素ｖ6の新たな値ｖx6'としてｖ6を設定し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ５２６で、判定値Ｌ7〜Ｌ5の論理積が「０」であると判定したとき(No)は、ステップＳ５３０に移行して、対象画素ｖ5の新たな値ｖx5'としてｖ5を設定し、一連の処理を終了して元の処理に復帰させる。
【００９９】
次に、第２垂直フィルタ処理を図１０を参照しながら詳細に説明する。図１０は、第２垂直フィルタ処理を示すフローチャートである。
第２垂直フィルタ処理は、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7について垂直方向のフィルタ演算を行う処理であって、ポストフィルタ部４０において実行されると、図１０に示すように、まず、ステップＳ６００に移行するようになっている。
【０１００】
ステップＳ６００では、画素データ読込処理により、第２垂直参照画素列ＬYRの参照画素ｒy4〜ｒy7のＹデータがバッファにおいて利用可能となったか否かを判定し、読込またはコピーにより画素データが利用可能となったと判定したとき(Yes)は、ステップＳ６０２に移行するが、そうでないと判定したとき(No)は、画素データが利用可能となるまでステップＳ６００で待機する。
【０１０１】
ステップＳ６０２では、第２水平フィルタ処理により、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7について水平方向のフィルタ処理が完了しているか否かを判定し、フィルタ処理が完了していると判定したとき(Yes)は、ステップＳ６０４，Ｓ６０６に移行するが、そうでないと判定したとき(No)は、ステップＳ６００に移行する。
【０１０２】
ステップＳ６０４，Ｓ６０６は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ６０４では、対象画素ｖx7'の値と参照画素ｒy7の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ7を下式（47）により算出し、ステップＳ６０８に移行する。ここで、定数値Ｃ2を用いているが、対象ブロック１０において第２対象画素列ＬSRが最上段または最下段に位置している場合は、これに代えて定数値Ｃ1を用いる。以下、ステップＳ６１３，Ｓ６２０，Ｓ６２９において同じである。
Ｌ7＝(｜ｖx7'−ｒy7｜≦Ｃ2)                                   …（47）
ステップＳ６０６では、対象画素ｖx7'について垂直方向のフィルタ演算後の値ｖy7''を、対象ブロック１０における第２対象画素列ＬSRの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ６０８に移行する。ステップＳ６０６では、上式（29）〜（36）のｖy7'に設定すべき値をｖy7''に設定する。
【０１０３】
ステップＳ６０８では、判定値Ｌ7が「１」であるか否かを判定し、判定値Ｌ7が「１」であると判定したとき(Yes)は、ステップＳ６１０に移行して、対象画素ｖ7の新たな値ｖy7'としてｖy7''を設定し、ステップＳ６１１に移行して、対象画素ｖ7，ｖ6のＵデータおよびＶデータをＲＧＢ変換部４２に出力し、ステップＳ６１２に移行して、対象画素ｖ7のＹデータｖy7''をＲＧＢ変換部４２に出力し、ステップＳ６１３，Ｓ６１４に移行する。
【０１０４】
ステップＳ６１３，Ｓ６１４は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ６１３では、対象画素ｖx6'の値と参照画素ｒy6の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ6を下式（48）により算出し、ステップＳ６１６に移行する。
Ｌ6＝(｜ｖx6'−ｒy6｜≦Ｃ2)                                   …（48）
ステップＳ６１４では、対象画素ｖx6'について垂直方向のフィルタ演算後の値ｖy6''を、対象ブロック１０における第２対象画素列ＬSRの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ６１６に移行する。ステップＳ６１４では、上式（29）〜（36）のｖy6'に設定すべき値をｖy6''に設定する。
【０１０５】
ステップＳ６１６では、判定値Ｌ6が「１」であるか否かを判定し、判定値Ｌ6が「１」であると判定したとき(Yes)は、ステップＳ６１８に移行して、対象画素ｖ6の新たな値ｖy6'としてｖy6''を設定し、ステップＳ６１９に移行して、対象画素ｖ6のＹデータｖy6''をＲＧＢ変換部４２に出力し、ステップＳ６２０，Ｓ６２２に移行する。
【０１０６】
ステップＳ６２０，Ｓ６２２は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ６２０では、対象画素ｖx5'の値と参照画素ｒy5の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ5を下式（49）により算出し、ステップＳ６２４に移行する。
Ｌ5＝(｜ｖx5'−ｒy5｜≦Ｃ2)                                   …（49）
ステップＳ６２２では、対象画素ｖx5'について垂直方向のフィルタ演算後の値ｖy5''を、対象ブロック１０における第２対象画素列ＬSRの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ６２４に移行する。ステップＳ６２２では、上式（29）〜（36）のｖy5'に設定すべき値をｖy5''に設定する。
【０１０７】
ステップＳ６２４では、判定値Ｌ5が「１」であるか否かを判定し、判定値Ｌ5が「１」であると判定したとき(Yes)は、ステップＳ６２６に移行して、対象画素ｖ5の新たな値ｖy5'としてｖy5''を設定し、ステップＳ６２７に移行して、対象画素ｖ5，ｖ4のＵデータおよびＶデータをＲＧＢ変換部４２に出力し、ステップＳ６２８に移行して、対象画素ｖ5のＹデータｖy5''をＲＧＢ変換部４２に出力し、ステップＳ６２９，Ｓ６３０に移行する。
【０１０８】
ステップＳ６２９，Ｓ６３０は、ポストフィルタ部４０においてパイプライン処理として同時に実行される処理である。
ステップＳ６２９では、対象画素ｖx4'の値と参照画素ｒy4の値との差分の絶対値が定数値Ｃ2を超えているか否かの判定値Ｌ4を下式（50）により算出し、ステップＳ６３２に移行する。
Ｌ4＝(｜ｖx4'−ｒy4｜≦Ｃ2)                                   …（50）
ステップＳ６３０では、対象画素ｖx4'について垂直方向のフィルタ演算後の値ｖy4''を、対象ブロック１０における第２対象画素列ＬSRの垂直方向の位置に応じて上式（29）〜（36）により算出し、ステップＳ６３２に移行する。ステップＳ６３０では、上式（29）〜（36）のｖy4'に設定すべき値をｖy4''に設定する。
【０１０９】
ステップＳ６３２では、判定値Ｌ4が「１」であるか否かを判定し、判定値Ｌ4が「１」であると判定したとき(Yes)は、ステップＳ６３４に移行して、対象画素ｖ4の新たな値ｖy4'としてｖy4''を設定し、ステップＳ６４６に移行して、対象画素ｖ4のＹデータｖy4''をＲＧＢ変換部４２に出力し、一連の処理を終了して元の処理に復帰させる。
【０１１０】
一方、ステップＳ６３２で、判定値Ｌ4が「０」であると判定したとき(No)は、ステップＳ６４８に移行して、対象画素ｖ4の新たな値ｖy4'としてｖx4'を設定し、ステップＳ６４６に移行する。
一方、ステップＳ６２４で、判定値Ｌ5が「０」であると判定したとき(No)は、ステップＳ６５０に移行して、対象画素ｖ5の新たな値ｖy5'としてｖx5'を設定し、ステップＳ６２７に移行する。
【０１１１】
一方、ステップＳ６１６で、判定値Ｌ6が「０」であると判定したとき(No)は、ステップＳ６５２に移行して、対象画素ｖ6の新たな値ｖy6'としてｖx6'を設定し、ステップＳ６１９に移行する。
一方、ステップＳ６０８で、判定値Ｌ7が「０」であると判定したとき(No)は、ステップＳ６５４に移行して、対象画素ｖ7の新たな値ｖy7'としてｖx7'を設定し、ステップＳ６１１に移行する。
【０１１２】
次に、上記ステップＳ１０６のポインタ更新処理を図１１を参照しながら詳細に説明する。図１１は、ポインタ更新処理を示すフローチャートである。
ポインタ更新処理は、上記ステップＳ１０６において実行されると、図１１に示すように、まず、ステップＳ７００に移行するようになっている。なお、以下のステップにおいて、再生画素の水平方向の画素数をＸとし、対象ブロック１０における第１対象画素列ＬSLおよび第２対象画素列ＬSRの垂直方向の座標をｙとする。
【０１１３】
ステップＳ７００では、対象画素用ポインタ*sxおよび垂直参照画素用ポインタ*cyの値に８画素分加算する。この加算により、対象ブロック１０および垂直参照画素用ポインタ*cyは、一つ右のブロックに移動する。ただし、加算前の対象ブロック１０が再生画像において右端のブロックである場合は、一つ下段の左端のブロックに移動する。この移動は、所定数を加算するだけなので、ハードウェアで構成する場合は加算器だけで実現できる。
【０１１４】
次いで、ステップＳ７０２では、再生画像において右端のブロックの対象画素についてフィルタ処理が終了したか否かを判定し、フィルタ処理が終了したと判定したとき(Yes)は、ステップＳ７０４に移行するが、そうでないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
ステップＳ７０４では、ｙを「８」で除算したときの余数を算出し、ステップＳ７０６に移行して、算出した余数が「０」であるか否かを判定し、余数が「０」であると判定したとき(Yes)は、ステップＳ７０８に移行して、垂直参照画素用ポインタ*cyの値から２Ｘを減算し、一連の処理を終了して元の処理に復帰させる。この減算により、垂直参照画素用ポインタ*cyは、対象ブロック１０の上に隣接する垂直参照ブロック１６の最下段に移動する。この移動は、Ｘを２倍しそれを減算するだけなので、ハードウェアで構成する場合はシフタおよび加算器だけで実現できる。
【０１１５】
一方、ステップＳ７０６で、算出した余数が「０」でないと判定したとき(No)は、ステップＳ７１０に移行して、算出した余数が「４」であるか否かを判定し、余数が「４」であると判定したとき(Yes)は、ステップＳ７１２に移行して、垂直参照画素用ポインタ*cyの値に８Ｘを加算し、一連の処理を終了して元の処理に復帰させる。この加算により、垂直参照画素用ポインタ*cyは、対象ブロック１０の下に隣接する垂直参照ブロック１８の最上段に移動する。この移動は、Ｘを８倍しそれを加算するだけなので、ハードウェアで構成する場合はシフタおよび加算器だけで実現できる。
【０１１６】
一方、ステップＳ７１０で、算出した余数が「４」でないと判定したとき(No)は、ステップＳ７１４に移行して、垂直参照画素用ポインタ*cyの値からＸを減算し、一連の処理を終了して元の処理に復帰させる。この減算により、垂直参照画素用ポインタ*cyは、対象ブロック１０の上に隣接する垂直参照ブロック１６の最下段に移動する。この移動は、Ｘを減算するだけなので、ハードウェアで構成する場合は加算器だけで実現できる。
【０１１７】
次に、本実施の形態の動作を図面を参照しながら説明する。図１２は、デブロックフィルタ処理の実行過程を示すタイムチャートである。以下、時刻ｔ0〜ｔ12は、ポストフィルタ部４０の１クロックに相当する所定時間Ｔ経過ごとの時刻を示したものであり、すなわち、各時刻ｔ0〜ｔ12は、一つ前の時刻から所定時間Ｔ経過した時刻を表している。
【０１１８】
まず、時刻ｔ0において、ステップＳ１００を経て、ポストフィルタ部４０により、ＶＲＡＭ３５において最初に処理すべき第１対象画素列ＬSLの左端画素の画素データが格納されているアドレスが、対象画素用ポインタ*sxに設定され、ＶＲＡＭ３５において最初に処理すべき第１垂直参照画素列ＬYLの左端画素の画素データが格納されているアドレスが、垂直参照画素用ポインタ*cyに設定される。そして、ステップＳ１０２を経て、対象画素用ポインタ*sxおよび垂直参照画素用ポインタ*cyが参照されて、第１対象画素列ＬSL、第２対象画素列ＬSR、第２水平参照画素列ＬXR、第１垂直参照画素列ＬYLおよび第２垂直参照画素列ＬYRを読み込むべき読込要求が出力される。
【０１１９】
読込要求が出力されると、時刻ｔ1において、ステップＳ２０２，Ｓ２０４を経て、対象画素ｖ0，ｖ1のＵデータ、対象画素ｖ2，ｖ3のＵデータ、対象画素ｖ4，ｖ5のＵデータ、および対象画素ｖ6，ｖ7のＵデータがＶＲＡＭ３５に読み込まれる。
次いで、時刻ｔ2において、ステップＳ２０６，Ｓ２０８を経て、対象画素ｖ0，ｖ1のＶデータ、対象画素ｖ2，ｖ3のＶデータ、対象画素ｖ4，ｖ5のＶデータ、および対象画素ｖ6，ｖ7のＶデータがＶＲＡＭ３５に読み込まれる。
【０１２０】
一方、同時刻ｔ2においては、ステップＳ２２２，Ｓ２２４を経て、図１３に示すように、前回読み込んだ第２水平参照画素列ＬXRの画素データが、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3の画素データとしてバッファ内でコピーされ、前回読み込んだ第２対象画素列ＬSRの画素データのうち右端画素に係るものが、第１水平参照画素列ＬXLの参照画素ｒx0の画素データとしてバッファ内でコピーされる。図１３は、画素データをコピーして再利用する場合を説明するための図である。
【０１２１】
次いで、時刻ｔ3において、ステップＳ２１４を経て、垂直参照画素用ポインタ*cyが参照されて、第１垂直参照画素列ＬYLの各参照画素ｒy0〜ｒy3の画素データのうちＹデータがＶＲＡＭ３５に読み込まれる。
一方、同時刻ｔ3において、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3および第１水平参照画素列ＬXLの参照画素ｒx0のＹデータがバッファにおいて利用可能となっているので、ステップＳ３０２〜Ｓ３１２を経て、判定値Ｌ0〜Ｌ2が上式（37）〜（39）により算出されるとともに、ｖx0''〜ｖx2''が上式（１）〜（３）により算出される。このとき、判定値Ｌ0が「１」であれば、ステップＳ３１６を経て、対象画素ｖ0の新たな値ｖx0'としてｖx0''が設定され、判定値Ｌ0が「０」であれば、ステップＳ３１８を経て、対象画素ｖ0の新たな値ｖx0'としてｖ0が設定される。また、判定値Ｌ0，Ｌ1の論理積が「１」であれば、ステップＳ３２２を経て、対象画素ｖ1の新たな値ｖx1'としてｖx1''が設定され、論理積が「０」であれば、ステップＳ３２４を経て、対象画素ｖ1の新たな値ｖx1'としてｖ1が設定される。また、判定値Ｌ0〜Ｌ2の論理積が「１」であれば、ステップＳ３２８を経て、対象画素ｖ2の新たな値ｖx2'としてｖx2''が設定され、論理積が「０」であれば、ステップＳ３３０を経て、対象画素ｖ2の新たな値ｖx2'としてｖ2が設定される。また、ステップＳ３３２を経て、対象画素ｖ3の新たな値ｖx3'としてｖ3が設定される。
【０１２２】
次いで、時刻ｔ4において、ステップＳ２１６を経て、垂直参照画素用ポインタ*cyが参照されて、第２垂直参照画素列ＬYRの各参照画素ｒy4〜ｒy7の画素データのうちＹデータがＶＲＡＭ３５に読み込まれる。
一方、同時刻ｔ4において、第１垂直参照画素列ＬYLの参照画素ｒy0〜ｒy3のＹデータがバッファにおいて利用可能となり、かつ、第１対象画素列ＬSLの各対象画素ｖ0〜ｖ3について水平方向のフィルタ処理が完了しているので、ステップＳ４０４，Ｓ４０６を経て、判定値Ｌ0が上式（40）により算出されるとともに、ｖy0''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ0が「１」であれば、ステップＳ４１０を経て、対象画素ｖ0の新たな値ｖy0'としてｖy0''が設定され、判定値Ｌ0が「０」であれば、ステップＳ４５４を経て、対象画素ｖ0の新たな値ｖy0'としてｖx0'が設定される。そして、ステップＳ４１１，Ｓ４１２を経て、対象画素ｖ0，ｖ1のＵデータおよびＶデータがＲＧＢ変換部４２に出力され、対象画素ｖ0のＹデータｖy0''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ0についてデブロックフィルタ処理が完了する。
【０１２３】
次いで、時刻ｔ5において、ステップＳ２１８を経て、対象画素用ポインタ*sxが参照されて、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7の画素データのうちＹデータがＶＲＡＭ３５に読み込まれる。
一方、同時刻ｔ5においては、ステップＳ４１３，Ｓ４１４を経て、判定値Ｌ1が上式（41）により算出されるとともに、ｖy1''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ1が「１」であれば、ステップＳ４１８を経て、対象画素ｖ1の新たな値ｖy1'としてｖy1''が設定され、判定値Ｌ1が「０」であれば、ステップＳ４５２を経て、対象画素ｖ1の新たな値ｖy1'としてｖx1'が設定される。そして、ステップＳ４１９を経て、対象画素ｖ1のＹデータｖy1''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ1についてデブロックフィルタ処理が完了する。
【０１２４】
次いで、時刻ｔ6において、ステップＳ２２０を経て、対象画素用ポインタ*sxが参照されて、第２水平参照画素列ＬXRの各画素（参照画素ｒx1を含む。）の画素データのうちＹデータがＶＲＡＭ３５に読み込まれる。
一方、同時刻ｔ6においては、ステップＳ４２０，Ｓ４２２を経て、判定値Ｌ2が上式（42）により算出されるとともに、ｖy2''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ2が「１」であれば、ステップＳ４２６を経て、対象画素ｖ2の新たな値ｖy2'としてｖy2''が設定され、判定値Ｌ2が「０」であれば、ステップＳ４５０を経て、対象画素ｖ2の新たな値ｖy2'としてｖx2'が設定される。そして、ステップＳ４２７，Ｓ４２８を経て、対象画素ｖ2，ｖ3のＵデータおよびＶデータがＲＧＢ変換部４２に出力され、対象画素ｖ2のＹデータｖy2''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ2についてデブロックフィルタ処理が完了する。
【０１２５】
次いで、時刻ｔ7においては、ステップＳ４２９，Ｓ４３０を経て、判定値Ｌ3が上式（43）により算出されるとともに、ｖy3''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ3が「１」であれば、ステップＳ４３４を経て、対象画素ｖ3の新たな値ｖy3'としてｖy3''が設定され、判定値Ｌ3が「０」であれば、ステップＳ４４８を経て、対象画素ｖ3の新たな値ｖy3'としてｖx3'が設定される。そして、ステップＳ４４６を経て、対象画素ｖ3のＹデータｖy3''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ3についてデブロックフィルタ処理が完了する。
【０１２６】
一方、同時刻ｔ7において、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7および第２水平参照画素列ＬXRの参照画素ｒx1のＹデータがバッファにおいて利用可能となっているので、ステップＳ５０２〜Ｓ５１２を経て、判定値Ｌ7〜Ｌ5が上式（44）〜（46）により算出されるとともに、ｖx7''〜ｖx5''が上式（８）〜（６）により算出される。このとき、判定値Ｌ7が「１」であれば、ステップＳ５１６を経て、対象画素ｖ7の新たな値ｖx7'としてｖx7''が設定され、判定値Ｌ7が「０」であれば、ステップＳ５１８を経て、対象画素ｖ7の新たな値ｖx7'としてｖ7が設定される。また、判定値Ｌ7，Ｌ6の論理積が「１」であれば、ステップＳ５２２を経て、対象画素ｖ6の新たな値ｖx6'としてｖx6''が設定され、論理積が「０」であれば、ステップＳ５２４を経て、対象画素ｖ6の新たな値ｖx6'としてｖ6が設定される。また、判定値Ｌ7〜Ｌ5の論理積が「１」であれば、ステップＳ５２８を経て、対象画素ｖ5の新たな値ｖx5'としてｖx5''が設定され、論理積が「０」であれば、ステップＳ５３０を経て、対象画素ｖ5の新たな値ｖx5'としてｖ5が設定される。また、ステップＳ５３２を経て、対象画素ｖ4の新たな値ｖx4'としてｖ4が設定される。
【０１２７】
次いで、時刻ｔ8において、第２垂直参照画素列ＬYRの参照画素ｒy4〜ｒy7のＹデータがバッファにおいて利用可能となり、かつ、第２対象画素列ＬSRの各対象画素ｖ4〜ｖ7について水平方向のフィルタ処理が完了しているので、ステップＳ６０４，Ｓ６０６を経て、判定値Ｌ7が上式（47）により算出されるとともに、ｖy7''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ7が「１」であれば、ステップＳ６１０を経て、対象画素ｖ7の新たな値ｖy7'としてｖy7''が設定され、判定値Ｌ7が「０」であれば、ステップＳ６５４を経て、対象画素ｖ7の新たな値ｖy7'としてｖx7'が設定される。そして、ステップＳ６１１，Ｓ６１２を経て、対象画素ｖ7，ｖ6のＵデータおよびＶデータがＲＧＢ変換部４２に出力され、対象画素ｖ7のＹデータｖy7''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ7についてデブロックフィルタ処理が完了する。
【０１２８】
なお、同時刻ｔ8においては、ステップＳ７００〜Ｓ７１４を経て、対象ブロック１０の右に隣接するブロックに対象画素用ポインタ*sxおよび垂直参照画素用ポインタ*cyが移動し、そのブロックに対して時刻ｔ0における処理と同様の処理が行われる。
次いで、時刻ｔ9においては、ステップＳ６１３，Ｓ６１４を経て、判定値Ｌ6が上式（48）により算出されるとともに、ｖy6''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ6が「１」であれば、ステップＳ６１８を経て、対象画素ｖ6の新たな値ｖy6'としてｖy6''が設定され、判定値Ｌ6が「０」であれば、ステップＳ６５２を経て、対象画素ｖ6の新たな値ｖy6'としてｖx6'が設定される。そして、ステップＳ６１９を経て、対象画素ｖ6のＹデータｖy6''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ6についてデブロックフィルタ処理が完了する。
【０１２９】
なお、同時刻ｔ9においては、対象ブロック１０の右に隣接するブロックに対して時刻ｔ1における処理と同様の処理が行われる。
次いで、時刻ｔ10においては、ステップＳ６２０，Ｓ６２２を経て、判定値Ｌ5が上式（49）により算出されるとともに、ｖy5''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ5が「１」であれば、ステップＳ６２６を経て、対象画素ｖ5の新たな値ｖy5'としてｖy5''が設定され、判定値Ｌ5が「０」であれば、ステップＳ６５０を経て、対象画素ｖ5の新たな値ｖy5'としてｖx5'が設定される。そして、ステップＳ６２７，Ｓ６２８を経て、対象画素ｖ5，ｖ4のＵデータおよびＶデータがＲＧＢ変換部４２に出力され、対象画素ｖ5のＹデータｖy5''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ5についてデブロックフィルタ処理が完了する。
【０１３０】
なお、同時刻ｔ10においては、対象ブロック１０の右に隣接するブロックに対して時刻ｔ2における処理と同様の処理が行われる。
次いで、時刻ｔ11においては、ステップＳ６２９，Ｓ６３０を経て、判定値Ｌ4が上式（50）により算出されるとともに、ｖy4''が上式（29）〜（36）のいずれかにより算出される。このとき、判定値Ｌ4が「１」であれば、ステップＳ６３４を経て、対象画素ｖ4の新たな値ｖy4'としてｖy4''が設定され、判定値Ｌ4が「０」であれば、ステップＳ６４８を経て、対象画素ｖ4の新たな値ｖy4'としてｖx4'が設定される。そして、ステップＳ６４６を経て、対象画素ｖ4のＹデータｖy4''がＲＧＢ変換部４２に出力される。これにより、対象画素ｖ4についてデブロックフィルタ処理が完了する。
【０１３１】
なお、同時刻ｔ11においては、対象ブロック１０の右に隣接するブロックに対して時刻ｔ3における処理と同様の処理が行われる。
このようにして、本実施の形態では、デブロックフィルタ処理は、対象画素ｖ0〜ｖ7の値と参照画素ｒy0〜ｒy7の値との差分値が閾値を超えているか否かを判定し、対象画素ｖ0〜ｖ7についての水平方向のフィルタ演算を、対象画素ｖ0〜ｖ7の値と参照画素ｒx0，ｒx1の値とにのみ基づいて行い、対象画素ｖ0〜ｖ7について垂直方向のフィルタ演算を行うか否かを、上記判定結果にのみ基づいて決定するとともに、対象画素ｖ0〜ｖ7についての垂直方向のフィルタ演算を、対象画素ｖ0〜ｖ7の値と参照画素ｒy0〜ｒy7の値とにのみ基づいて行うようになっている。
【０１３２】
これにより、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、対象画素ｖ0〜ｖ7、参照画素ｒx0，ｒx1および参照画素ｒy0〜ｒy7だけを参照すればよいので、従来に比して、デブロックフィルタ処理を簡素化することができる。例えば、本実施の形態のように、デブロックフィルタ処理をハードウェアにより実現する場合には、回路規模を小型化することができるし、デブロックフィルタ処理をソフトウェアにより実現する場合には、プログラムサイズを低減することができる。特に、参照画素ｒx0，ｒx1および参照画素ｒy0〜ｒy7として水平参照ブロック１２，１４および垂直参照ブロック１６，１８内の境界線に位置する画素を用いるので、フィルタ効果をさほど低減することなく、デブロックフィルタ処理を簡素化することができる。さらに、ＶＲＡＭ３５に対するアクセス回数を低減することができるので、処理の高速化が期待できる。
【０１３３】
さらに、本実施の形態では、デブロックフィルタ処理は、画素データの読込、判定およびフィルタ演算を一連の処理として繰り返し行いながら再生画像のすべての画素に対してフィルタ演算を試み、対象ブロック１０の左上の領域に属する対象画素については、対象ブロック１０の左および上に隣接する水平参照ブロック１２および垂直参照ブロック１６の参照画素の値を、判定およびフィルタ演算に用い、対象ブロック１０の右上の領域に属する対象画素については、対象ブロック１０の右および上に隣接する水平参照ブロック１４および垂直参照ブロック１６の参照画素の値を、判定およびフィルタ演算に用い、対象ブロック１０の左下の領域に属する対象画素については、対象ブロック１０の左および下に隣接する水平参照ブロック１２および垂直参照ブロック１８の参照画素の値を、判定およびフィルタ演算に用い、対象ブロック１０の右下の領域に属する対象画素については、対象ブロック１０の右および下に隣接する水平参照ブロック１４および垂直参照ブロック１８の参照画素の値を、判定およびフィルタ演算に用いるようになっている。
【０１３４】
これにより、４個の対象画素ｖ0〜ｖ3をデブロックフィルタ処理するにあたり、高々、９個の画素をＶＲＡＭ３５から読み込めばよいので、ＶＲＡＭ３５への読込回数を低減することができる。また、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、対象画素ｖ0〜ｖ3が属する領域に応じて比較的適切な参照画素が用いられるので、フィルタ効果を向上することができる。
【０１３５】
さらに、本実施の形態では、デブロックフィルタ処理は、垂直参照画素用ポインタ*cyを参照して画素データをバッファに読み込み、さらに、各一連の処理ごとに、垂直参照画素用ポインタ*cyの値に８画素分加算し、次に処理すべき対象ブロック１０が再生画像における左端のブロックで、かつｙを「８」で除算したときの余数が「０」であるときは、垂直参照画素用ポインタ*cyの値から２Ｘを減算し、次に処理すべき対象ブロック１０が再生画像における左端のブロックで、かつｙを「８」で除算したときの余数が「４」であるときは、垂直参照画素用ポインタ*cyの値に８Ｘを加算し、次に処理すべき対象ブロック１０が再生画像における左端のブロックで、かつｙを「８」で除算したときの余数が「０」または「４」以外の値であるときは、垂直参照画素用ポインタ*cyの値からＸを減算するようになっている。
【０１３６】
これにより、垂直参照画素用ポインタ*cyの更新をシフタおよび加算器だけで実現することができるので、負荷を低減し比較的簡素な構成とすることができる。
さらに、本実施の形態では、デブロックフィルタ処理は、各一連の処理ごとに、第２対象画素列ＬSR、第２水平参照画素列ＬXR、第１垂直参照画素列ＬYLおよび第２垂直参照画素列ＬYRの画素データをバッファに読み込むとともに、一つ前の処理において読み込んだ第２対象画素列ＬSRおよび第２水平参照画素列ＬXRの画素データを第１水平参照画素列ＬXLおよび第１対象画素列ＬSLの画素データとしてそれぞれ再利用し、第１対象画素列ＬSLおよび第２対象画素列ＬSRのすべての対象画素ｖ0〜ｖ7について判定およびフィルタ演算を行うようになっている。
【０１３７】
これにより、第１水平参照画素列ＬXLおよび第１対象画素列ＬSLの画素データをＶＲＡＭ３５から再読込しなくてすむので、ＶＲＡＭ３５への読込回数をさらに低減することができる。
さらに、本実施の形態では、一つ前の処理において読み込んだ第２対象画素列ＬSRおよび第２水平参照画素列ＬXRの画素データを第１水平参照画素列ＬXLおよび第１対象画素列ＬSLの画素データとしてそれぞれコピーする処理を第１フェーズとし、第１垂直参照画素列ＬYLの画素データをバッファに読み込む処理を第２フェーズとし、第２垂直参照画素列ＬYRの画素データをバッファに読み込む処理を第３フェーズとし、第２対象画素列ＬSRの画素データをバッファに読み込む処理を第４フェーズとし、第２水平参照画素列ＬXRの画素データをバッファに読み込む処理を第５フェーズとし、第１水平参照画素列ＬXLの画素データに基づいて、第１対象画素列ＬSLの各対象画素について水平方向のフィルタ演算を行う処理を第６フェーズとし、第６フェーズの処理結果および第１垂直参照画素列ＬYLの画素データに基づいて、第１対象画素列ＬSLの各対象画素について判定および垂直方向のフィルタ演算を行う処理を第７フェーズとし、第２水平参照画素列ＬXRの画素データに基づいて、第２対象画素列ＬSRの各対象画素について水平方向のフィルタ演算を行う処理を第８フェーズとし、第８フェーズの処理結果および第２垂直参照画素列ＬYRの画素データに基づいて、第２対象画素列ＬSRの各対象画素について判定および垂直方向のフィルタ演算を行う処理を第９フェーズとした場合に、一連の処理は、第１フェーズ、第２フェーズ、第３フェーズ、第４フェーズおよび第５フェーズをその順序で実行し、第６フェーズおよび第７フェーズをその順序で実行し、第５フェーズ、第８フェーズおよび第９フェーズをその順序で実行するとともに、第２フェーズおよび第６フェーズの実行を同時に、第３フェーズおよび第７フェーズの実行を同時に開始するようになっている。
【０１３８】
これにより、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、効率的なパイプライン処理を実現することができるので、処理の高速化が期待できる。また、画素データの読込を、第１垂直参照画素列ＬYL、第２垂直参照画素列ＬYR、第２対象画素列ＬSRおよび第２水平参照画素列ＬXRの画素データの順序で行うことから、第１垂直参照画素列ＬYLおよび第２垂直参照画素列ＬYRの画素データの読込、並びに第２対象画素列ＬSRおよび第２水平参照画素列ＬXRの画素データの読込を連続して行うことができるので、画素データの読込処理を簡単にすることができる。
【０１３９】
さらに、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、デブロックフィルタ後の各画素の値ｖ0'〜ｖ2'，ｖ5'〜ｖ7'を、上式（１）〜（３），（６）〜（８）のフィルタ演算式により算出するようになっている。
これにより、一の画素についてのフィルタ演算を行うにあたって、多数の画素の平均値を用いず、２つの画素の値のみを用いるので、デブロックフィルタ処理をさらに簡素化することができる。また、一の画素の値と、同一画素列の画素であって隣接ブロック内の参照画素の値とを用いた加減算およびビットシフト（除数が２の整数倍となる除算）により演算を行うので、デブロックフィルタ処理をさらに簡素化することができるのに加え、効果的なフィルタ効果を実現することができる。
【０１４０】
さらに、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列の画素のうち一の画素についてのフィルタ演算を、その一の画素から、同一画素列の画素であって隣接ブロック内の境界線に位置する参照画素までの各画素の相互の差分値がいずれも閾値Ｃ1，Ｃ2を超えていないときに行い、閾値Ｃ1，Ｃ2として定数値を用いるようになっている。
【０１４１】
これにより、閾値Ｃ1，Ｃ2が定数値であるので、デブロックフィルタ処理の過程において閾値Ｃ1，Ｃ2を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値Ｃ1，Ｃ2を超えていれば、フィルタ演算が行われない。したがって、デブロックフィルタ処理をさらに簡素化することができるのに加え、従来に比して、デブロックフィルタ処理を比較的高速化することができる。
【０１４２】
さらに、本実施の形態では、参照画素と、参照画素と隣接する隣接画素との差分値を比較するときの閾値Ｃ1を、参照画素と、隣接画素以外の画素との差分値を比較するときの閾値Ｃ2よりも大きく設定した。
これにより、ブロック間の輝度の平均値が異なるという特性を考慮したデブロックフィルタ処理を行うことができるので、さらに効果的なフィルタ効果を実現することができる。
【０１４３】
さらに、本実施の形態では、参照画素と、参照画素と隣接する隣接画素との差分値を比較するときの閾値Ｃ1を、画素の値の最大値を「２５５」として「３２」に設定し、参照画素と、隣接画素以外の画素との差分値を比較するときの閾値Ｃ2を、「１６」に設定した。
これにより、ブロック間の輝度の平均値が異なるという特性をより考慮したデブロックフィルタ処理を行うことができるので、さらに効果的なフィルタ効果を実現することができる。
【０１４４】
さらに、本実施の形態では、デブロックフィルタ処理は、画素についてフィルタ演算を行うか否かの判定を、参照画素と隣接する隣接画素から順次境界線より遠ざかる方向に行い、画素についてフィルタ演算を行わないと判定したときは、その画素およびこれよりも後段の画素についてはフィルタ演算を行わないようになっている。
【０１４５】
これにより、画素についてフィルタ演算を行うか否かの判定回数を低減することができるので、デブロックフィルタ処理をさらに高速化することができる。
さらに、本実施の形態では、ポストフィルタ部４０は、２１画素分の画素データを格納可能なバッファを有し、デブロックフィルタ処理は、画素列のうち一の画素から参照画素までの全画素データを、ＶＲＡＭ３５からバッファにまとめて読み込み、バッファの画素データに基づいてフィルタ演算を行うようになっている。
【０１４６】
これにより、画素列の各画素についてデブロックフィルタ処理を行うに必要な画素データをバッファにまとめて読み込み一括で処理するので、デブロックフィルタ処理をさらに高速化することができる。
さらに、本実施の形態では、デブロックフィルタ処理は、ブロック内の水平方向の画素列および垂直方向の画素列の一方に対してフィルタ演算を行った後、他方に対してフィルタ演算を行うようになっている。
【０１４７】
これにより、ブロック内の水平方向の画素列および垂直方向の画素列の両方に対してデブロックフィルタ処理を行うので、さらに効果的なフィルタ効果を実現することができる。
上記実施の形態において、ＭＰＥＧ形式の動画データは、請求項１、２、９ないし１２記載の圧縮画像データに対応し、ＶＲＡＭ３５は、請求項３または５記載の画像記憶手段に対応し、ポストフィルタ部４０のバッファは、請求項３、５ないし８記載の作業用記憶手段に対応している。また、参照画素ｒx0，ｒx1は、請求項２ないし４、１０または１２記載の水平参照画素に対応し、参照画素ｒy0〜ｒy7は、請求項２、３、６、１０または１２記載の垂直参照画素に対応し、参照画素ｒx0，ｒx1および対象画素ｖ0〜ｖ7は、請求項３または４記載の第１画素列に対応している。
【０１４８】
また、上記実施の形態において、参照画素ｒy0〜ｒy7は、請求項３または５記載の第２画素列に対応している。
なお、上記実施の形態においては、対象画素ｖ0〜ｖ7についての水平方向のフィルタ演算を、その一の画素から、同一画素列の画素であって隣接ブロック内の境界線に位置する参照画素ｒx0，ｒx1までの各画素の相互の差分値がいずれも閾値Ｃ1，Ｃ2を超えていないときに行うように構成したが、これに限らず、対象画素ｖ0〜ｖ7についての水平方向のフィルタ演算を行うか否かを、垂直方向のフィルタ演算と同様に、その一の画素の値および参照画素ｒx0，ｒx1の値とにのみ基づいて決定するように構成してもよい。
【０１４９】
また、上記実施の形態において、図５ないし図１１のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部４０のハードウェアによる処理で行う場合について説明したが、これに限らず、ＣＰＵ３０がこれらの処理を実行するようにしてもよく、この場合、上記実施の形態のように、ＲＯＭ３２にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ３４に読み込んで実行するようにしてもよい。
【０１５０】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【０１５１】
また、上記実施の形態においては、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図１に示すように、コンピュータ１００において、マルチタスクで動作するＯＳにより、ＭＰＥＧ形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対してデブロックフィルタ処理を行う場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。例えば、ＪＰＥＧ形式で圧縮された画像データに基づいて画像を表示する場合や、その他離散コサイン変換処理および量子化変換処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいてブロック単位で画像を展開する場合に適用することができる。
【０１５２】
【発明の効果】
以上説明したように、本発明に係る請求項１記載の画像処理装置によれば、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、対象画素および参照画素だけを参照すればよいので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を簡素化することができるという効果が得られる。また、展開画像がメモリ等の記憶手段に格納されている場合は、記憶手段に対するアクセス回数を低減することができるので、記憶手段に対するアクセスがクリティカルパスとなっている画像処理装置では、処理の高速化が期待できるという効果も得られる。
【０１５３】
さらに、本発明に係る請求項２ないし８記載の画像処理装置によれば、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、対象画素、水平参照画素および垂直参照画素だけを参照すればよいので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を簡素化することができるという効果が得られる。特に、水平参照画素および垂直参照画素として水平参照ブロックおよび垂直参照ブロック内の境界線に位置する画素を用いるので、フィルタ効果をさほど低減することなく、フィルタ処理を簡素化することができるという効果も得られる。さらに、展開画像がメモリ等の記憶手段に格納されている場合は、記憶手段に対するアクセス回数を低減することができるので、記憶手段に対するアクセスがクリティカルパスとなっている画像処理装置では、処理の高速化が期待できるという効果も得られる。
【０１５４】
さらに、本発明に係る請求項３ないし８記載の画像処理装置によれば、第１画素列の対象画素をフィルタ処理するにあたり、高々、第１画素列および第２画素列の画素を画像記憶手段から読み込めばよいので、画像記憶手段への読込回数を低減することができるという効果も得られる。
さらに、本発明に係る請求項４ないし８記載の画像処理装置によれば、ｎ個の対象画素をフィルタ処理するにあたり、高々、２ｎ＋１個の画素を画像記憶手段から読み込めばよいので、画像記憶手段への読込回数を低減することができるという効果も得られる。また、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、対象画素が属する領域に応じて比較的適切な参照画素が用いられるので、フィルタ効果を向上することができるという効果も得られる。
【０１５５】
さらに、本発明に係る請求項５ないし８記載の画像処理装置によれば、ハードウェアで構成する場合は、垂直参照画素用ポインタの更新をシフタおよび加算器だけで実現することができるので、負荷を低減し比較的簡素な構成とすることができるという効果も得られる。
さらに、本発明に係る請求項６ないし８記載の画像処理装置によれば、第１水平参照画素列および第１対象画素列の画素データを画像記憶手段から再読込しなくてすむので、画像記憶手段への読込回数をさらに低減することができるという効果も得られる。
【０１５６】
さらに、本発明に係る請求項８記載の画像処理装置によれば、フィルタ演算を行うかの判定およびフィルタ演算を行うにあたって、効率的なパイプライン処理を実現することができるので、処理の高速化が期待できるという効果も得られる。また、画素データの読込を、第１垂直参照画素列、第２垂直参照画素列、第２対象画素列および第２水平参照画素列の画素データの順序で行うことから、第１垂直参照画素列および第２垂直参照画素列の画素データの読込、並びに第２対象画素列および第２水平参照画素列の画素データの読込を連続して行うことができるので、画素データの読込処理を簡単にすることができるという効果も得られる。さらに、従来、作業用に少なくとも１フレーム分の作業メモリを使用していたが、５ｎ＋１画素分の作業メモリで処理できるため、ハードウェアとして構成したときに回路規模を比較的削減することができるという効果も得られる。
【０１５７】
一方、本発明に係る請求項９記載の画像処理プログラムによれば、請求項１記載の画像処理装置と同等の効果が得られる。
さらに、本発明に係る請求項１０記載の画像処理プログラムによれば、請求項２記載の画像処理装置と同等の効果が得られる。
一方、本発明に係る請求項１１記載の画像処理方法によれば、請求項１記載の画像処理装置と同等の効果が得られる。
【０１５８】
さらに、本発明に係る請求項１２記載の画像処理方法によれば、請求項２記載の画像処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図１】本発明を適用するコンピュータシステムの構成を示すブロック図である。
【図２】再生画像においてデブロックフィルタ処理の対象となる対象ブロックおよびその隣接ブロックを示す図である。
【図３】互いに隣接するブロックＡ，Ｂにおいて同一水平線上の対象画素の値ｖ0〜ｖ7を示した棒グラフである。
【図４】再生画像においてデブロックフィルタ処理の対象となる対象ブロックおよびその隣接ブロックを示す図である。
【図５】主制御処理を示すフローチャートである。
【図６】画素データ読込処理を示すフローチャートである。
【図７】第１水平フィルタ処理を示すフローチャートである。
【図８】第１垂直フィルタ処理を示すフローチャートである。
【図９】第２水平フィルタ処理を示すフローチャートである。
【図１０】第２垂直フィルタ処理を示すフローチャートである。
【図１１】ポインタ更新処理を示すフローチャートである。
【図１２】デブロックフィルタ処理の実行過程を示すタイムチャートである。
【図１３】画素データをコピーして再利用する場合を説明するための図である。
【図１４】従来の画像処理システムによるフィルタ処理を示す図である。
【図１５】従来の画像処理システムにおいて参照する画素を示す図である。
【符号の説明】
１０                      対象ブロック
１２，１４                水平参照ブロック
１６，１８                垂直参照ブロック
１００                    コンピュータ
３０                      ＣＰＵ
３２                      ＲＯＭ
３４                      ＲＡＭ
３５                      ＶＲＡＭ
３６                      ＬＣＤＣ
３８                      デコーダ
４０                      ポストフィルタ部
４２                      ＲＧＢ変換部
４４                      ＬＣＤ
ｖ0〜ｖ7                    対象画素
ｒx0，ｒx1                  参照画素
ｒy0〜ｒy7                  参照画素
ＬSL                        第１対象画素列
ＬSR                        第２対象画素列
ＬXL                        第１水平参照画素列
ＬXR                        第２水平参照画素列
ＬYL                        第１垂直参照画素列
ＬYR                        第２垂直参照画素列
【図１】
0004114494.tif 000005
【図２】
0004114494.tif 000006
【図３】
0004114494.tif 000007
【図４】
0004114494.tif 000008
【図５】
0004114494.tif 000009
【図６】
0004114494.tif 000010
【図７】
0004114494.tif 000011
【図８】
0004114494.tif 000012
【図９】
0004114494.tif 000013
【図１０】
0004114494.tif 000014
【図１１】
0004114494.tif 000015
【図１２】
0004114494.tif 000016
【図１３】
0004114494.tif 000017
【図１４】
0004114494.tif 000018
【図１５】
0004114494.tif 000019