(57)【特許請求の範囲】
【請求項１】
離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、
前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ7'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」、「ｖ4'＝(ｖ4＋ｖ5)／２」、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」及び「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、
前記閾値として定数値を用いるようになっていることを特徴とする画像処理装置。
【請求項３】
請求項２において、
前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値よりも大きく設定したことを特徴とする画像処理装置。
【請求項４】
請求項２及び３のいずれかにおいて、
前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、画素の値の最大値を「２n−１」（ｎ≧４）として「２n-3」に相当する値又はその近似値に設定し、
前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値を、「２n-4」に相当する値又はその近似値に設定したことを特徴とする画像処理装置。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記フィルタ処理は、画素について前記フィルタ演算を行うか否かの判定を、前記境界画素と隣接する隣接画素から順次前記境界線より遠ざかる方向に行い、画素について前記フィルタ演算を行わないと判定したときは、当該画素及びこれよりも後段の画素については前記フィルタ演算を行わないようになっていることを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記展開画像を格納するための画像記憶手段に利用可能に接続し、
互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、
前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっていることを特徴とする画像処理装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ4'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」及び「ｖ4'＝(ｖ4＋ｖ5)／２」のフィルタ演算式により算出し、
フィルタ後の各画素の値ｖ5'〜ｖ7'を、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3及びｖ2として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項８】
請求項１乃至６のいずれかにおいて、
前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ5'〜ｖ7'を、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」及び「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出し、
フィルタ後の各画素の値ｖ2'〜ｖ4'を、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5及びｖ4として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＪＰＥＧ（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号公報に記載されている技術（以下、第２の従来例という。）も知られている。第２の従来例においては、図２０に示されている垂直方向および水平方向のブロック境界について、デフォルトモードかＤＣオフセットモードかを判定し、それぞれの処理を行う。
【０００８】
この場合、ブロックの境界Ｂ１，Ｂ２を基点としてピクセルセットＳ０，Ｓ１，Ｓ２を定義し、モード決定値からブロック歪現象の程度に基づいて選択的にデブロッキングモードをデフォルトモードかＤＣオフセットモードかに決める。そして、デフォルトモードと決定されると、４ポイントＤＣＴカーネルを用いて各ピクセルに対するブロック境界周辺の周波数情報を求める。モード決定段階でＤＣオフセットモードと決定されると、ＤＣオフセットモードの実行が必要であるかどうかを判断し、必要であればブロック歪み現象を除去する。
【０００９】
【発明が解決しようとする課題】
しかしながら、第１の従来例では、境界画素のみを補正しているので、ブロック歪みを除去する処理として充分ではないという欠点がある。また、ＶＭや第２の従来例では、処理が複雑で計算負荷が大きすぎるという欠点がある。
また、これらの技術をハードウェアにより実現しようとすると、処理が比較的複雑であるため、回路規模を小型化するのが困難であるという問題がある。小型化を図る観点からは、多少画質を犠牲にしても処理をできるだけ簡略化することが望ましい。また、搭載できるメモリの容量にも一定の制限があるため、フィルタ処理において演算のために占有するメモリ容量もできるだけ最小限に抑えることが望ましい。
【００１０】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、画像復号化時のフィルタ処理の簡素化および高速化を図るとともに、効果的なフィルタ効果を実現するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法を提供することを第１の目的としている。また、画像復号化時のフィルタ処理において演算のために占有するメモリ容量を低減するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法を提供することを第２の目的としている。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、発明１の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっている。
【００１２】
このような構成であれば、圧縮画像データに基づいてブロック単位で画像を展開する際または展開した後には、フィルタ処理により、ブロック内の一の画素についてのフィルタ演算が、その一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行われる。
さらに、発明２の画像処理装置は、発明１の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素の値と、同一画素列の画素であって隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっている。
【００１３】
このような構成であれば、フィルタ処理により、境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算が、その一の画素の値と、同一画素列の画素であって隣接ブロック内のいずれかの画素の値とにのみ基づいて行われる。
さらに、発明３の画像処理装置は、発明１および２のいずれか１の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素の値と、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素の値とにのみ基づいて行うようになっている。
【００１４】
このような構成であれば、フィルタ処理により、境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算が、その一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とにのみ基づいて行われる。
さらに、発明４の画像処理装置は、発明１ないし３のいずれか１の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ7'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」、「ｖ4'＝(ｖ4＋ｖ5)／２」、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」および「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出するようになっている。
【００１５】
このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値ｖ2'〜ｖ7'が上記各フィルタ演算式により算出される。
さらに、発明５の画像処理装置は、発明１ないし４のいずれか１の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっている。
【００１６】
このような構成であれば、境界線と交差する画素列の画素のうち一の画素から、同一画素列の画素であって隣接ブロック内の境界画素までの各画素の相互の差分値がいずれも閾値を超えていないと、フィルタ処理により、その一の画素についてのフィルタ演算が行われる。ここで、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。
【００１７】
さらに、発明６の画像処理装置は、発明５の画像処理装置において、前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値よりも大きく設定した。
このような構成であれば、境界画素と隣接画素との差分値を比較するときは、境界画素と、隣接画素以外の画素との差分値を比較するときの閾値よりも大きい閾値に基づいて行われる。境界画素と隣接画素とは、それぞれ異なるブロックの境界を構成し、輝度の値が大きく異なることがあるため、それらを比較するときの閾値を、他の画素を比較するときの閾値よりも大きく設定した方が、フィルタ処理を比較的確実に行うことができる。
【００１８】
さらに、発明７の画像処理装置は、発明５および６のいずれか１の画像処理装置において、前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、画素の値の最大値を「２n−１」（ｎ≧４）として「２n-3」に相当する値またはその近似値に設定し、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値を、「２n-4」に相当する値またはその近似値に設定した。
【００１９】
このような構成であれば、境界画素と隣接画素との差分値を比較するときは、画素の値の最大値を「２n−１」として「２n-3」に相当する値またはその近似値を閾値とし、これに基づいて行われる。ここで、閾値は、「２n-3」に相当する値またはその近似値よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「２n-3」に相当する値またはその近似値よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できない。
【００２０】
また、境界画素と、隣接画素以外の画素との差分値を比較するときは、画素の値の最大値を「２n−１」として「２n-4」に相当する値またはその近似値を閾値とし、これに基づいて行われる。ここで、閾値は、「２n-4」に相当する値またはその近似値よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「２n-4」に相当する値またはその近似値よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できない。
【００２１】
さらに、発明８の画像処理装置は、発明５ないし７のいずれか１の画像処理装置において、前記フィルタ処理は、画素について前記フィルタ演算を行うか否かの判定を、前記境界画素と隣接する隣接画素から順次前記境界線より遠ざかる方向に行い、画素について前記フィルタ演算を行わないと判定したときは、当該画素およびこれよりも後段の画素については前記フィルタ演算を行わないようになっている。
【００２２】
このような構成であれば、画素についてフィルタ演算を行うか否かの判定が、境界画素と隣接する隣接画素から順次境界線より遠ざかる方向に行われる。そして、その判定において、画素についてフィルタ演算を行わないと判定されると、その画素およびこれよりも後段の画素についてはフィルタ演算が行われない。
本来、一の画素についてフィルタ演算を行うか否かの判定は、その一の画素から境界画素までの各画素の相互の差分値が閾値を超えたか否かを判定しなければならない。例えば、判定の対象となる判定対象画素から境界画素までの間に４個の画素（判定対象画素および境界画素を含む）が存在する場合は、３回の判定を行う必要がある。しかし、上記の順序で判定を行っていけば、判定対象画素と境界画素との判定以外のものについては、前段の画素についての判定で既に行われているので、後段のその画素については判定を省略することができる。したがって、判定対象画素のうち境界画素より最も遠いものから境界画素までの間に４個の画素が存在する場合は、通常ではその画素列全体として３！回の判定を要するところ最大３回の判定ですむ。
【００２３】
さらに、発明９の画像処理装置は、発明１ないし８のいずれか１の画像処理装置において、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっている。
【００２４】
このような構成であれば、フィルタ処理により、画素列のうち一の画素から境界画素までの全画素データが、画像記憶手段から作業用記憶手段にまとめて読み込まれ、作業用記憶手段の画素データに基づいてフィルタ演算が行われる。
ここで、作業用記憶手段は、画素データをあらゆる手段でかつあらゆる時期に記憶するものであり、画素データをあらかじめ記憶してあるものであってもよいし、画素データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によって画素データを記憶するようになっていてもよい。このことは、画像記憶手段に展開画像を格納する場合についても同じである。以下、発明１９の画像処理装置、発明２７の画像処理プログラム、および発明３５の画像処理方法において同じである。
【００２５】
さらに、発明１０の画像処理装置は、発明１ないし９のいずれか１の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ4'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」および「ｖ4'＝(ｖ4＋ｖ5)／２」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ5'〜ｖ7'を、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3およびｖ2として前記各フィルタ演算式により算出するようになっている。
【００２６】
このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値ｖ2'〜ｖ4'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値ｖ5'〜ｖ7'が、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3およびｖ2として上記各フィルタ演算式により算出される。
さらに、発明１１の画像処理装置は、発明１ないし９のいずれか１の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ5'〜ｖ7'を、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」および「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ2'〜ｖ4'を、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5およびｖ4として前記各フィルタ演算式により算出するようになっている。
【００２７】
このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値ｖ5'〜ｖ7'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値ｖ2'〜ｖ4'が、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5およびｖ4として上記各フィルタ演算式により算出される。
さらに、発明１２の画像処理装置は、発明１ないし１１のいずれか１の画像処理装置において、前記フィルタ処理は、前記ブロック内の水平方向の画素列および垂直方向の画素列の一方に対して前記フィルタ演算を行った後、他方に対して前記フィルタ演算を行うようになっている。
【００２８】
このような構成であれば、フィルタ処理により、ブロック内の水平方向の画素列および垂直方向の画素列の一方に対してフィルタ演算が行われた後、他方に対してフィルタ演算が行われる。
さらに、発明１３の画像処理装置は、発明１ないし１２のいずれか１の画像処理装置において、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっている。
【００２９】
このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と隣接画素の値とに基づいて行われる。そして、フィルタ演算では、隣接画素のうち一の画素と対象画素との差分値が閾値を超えていると、その一の画素の値に代えて対象画素の値が用いられる。
さらに、発明１４の画像処理装置は、発明１３の画像処理装置において、前記フィルタ処理は、前記閾値として定数値を用いるようになっている。
【００３０】
このような構成であれば、隣接画素のうち一の画素と対象画素との差分値を比較するときは、定数値を閾値とし、これに基づいて行われれる。ここで、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。
さらに、発明１５の画像処理装置は、発明１４の画像処理装置において、前記フィルタ処理は、前記閾値を、画素の値の最大値を「２n−１」（ｎ≧４）として「２n-4」に相当する値またはその近似値に設定した。
【００３１】
このような構成であれば、隣接画素のうち一の画素と対象画素との差分値を比較するときは、画素の値の最大値を「２n−１」として「２n-4」に相当する値またはその近似値を閾値とし、これに基づいて行われる。ここで、閾値は、「２n-4」に相当する値またはその近似値よりも大きく設定し過ぎると、隣接画素の値を対象画素の値に置き換えるべきなのに置き換えられず、効果的なフィルタ効果が期待できず、逆に、「２n-4」に相当する値またはその近似値よりも小さく設定し過ぎると、隣接画素の値を対象画素の値に置き換えなくてもよいのに置き換えてしまい、効果的なフィルタ効果が期待できない。
【００３２】
さらに、発明１６の画像処理装置は、発明１ないし１５のいずれか１の画像処理装置において、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する４、２または１つの隣接画素の値とに基づいて行うようになっている。
【００３３】
このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と、対象画素と隣接する４、２または１つの隣接画素の値とに基づいて行われる。
さらに、発明１７の画像処理装置は、発明１ないし１６のいずれか１の画像処理装置において、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっている。
【００３４】
このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値を所定値で除算し、隣接画素の値を所定値で除算し、それら除算結果を加算することにより行われる。
さらに、発明１８の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっている。
【００３５】
このような構成であれば、境界線と交差する画素列の画素のうち一の画素から、同一画素列の画素であって隣接ブロック内の境界画素までの各画素の相互の差分値がいずれも閾値を超えていないと、フィルタ処理により、その一の画素についてのフィルタ演算が行われる。ここで、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。
【００３６】
さらに、発明１９の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっている。
【００３７】
このような構成であれば、フィルタ処理により、画素列のうち一の画素から境界画素までの全画素データが、画像記憶手段から作業用記憶手段にまとめて読み込まれ、作業用記憶手段の画素データに基づいてフィルタ演算が行われる。
さらに、発明２０の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ4'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」および「ｖ4'＝(ｖ4＋ｖ5)／２」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ5'〜ｖ7'を、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3およびｖ2として前記各フィルタ演算式により算出するようになっている。
【００３８】
このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値ｖ2'〜ｖ4'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値ｖ5'〜ｖ7'が、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3およびｖ2として上記各フィルタ演算式により算出される。
さらに、発明２１の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ5'〜ｖ7'を、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」および「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ2'〜ｖ4'を、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5およびｖ4として前記各フィルタ演算式により算出するようになっている。
【００３９】
このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値ｖ5'〜ｖ7'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値ｖ2'〜ｖ4'が、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5およびｖ4として上記各フィルタ演算式により算出される。
さらに、発明２２の画像処理装置は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっている。
【００４０】
このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と隣接画素の値とに基づいて行われる。そして、フィルタ演算では、隣接画素のうち一の画素と対象画素との差分値が閾値を超えていると、その一の画素の値に代えて対象画素の値が用いられる。
さらに、発明２３の画像処理装置は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する４、２または１つの隣接画素の値とに基づいて行うようになっている。
【００４１】
このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と、対象画素と隣接する４、２または１つの隣接画素の値とに基づいて行われる。
さらに、発明２４の画像処理装置は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっている。
【００４２】
このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値を所定値で除算し、隣接画素の値を所定値で除算し、それら除算結果を加算することにより行われる。
一方、上記目的を達成するために、発明２５の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっている。
【００４３】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明１の画像処理装置と同等の作用が得られる。
さらに、発明２６の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっている。
【００４４】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明１８の画像処理装置と同等の作用が得られる。
さらに、発明２７の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記コンピュータは、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっている。
【００４５】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明１９の画像処理装置と同等の作用が得られる。
さらに、発明２８の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ4'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」および「ｖ4'＝(ｖ4＋ｖ5)／２」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ5'〜ｖ7'を、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3およびｖ2として前記各フィルタ演算式により算出するようになっている。
【００４６】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明２０の画像処理装置と同等の作用が得られる。
さらに、発明２９の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ5'〜ｖ7'を、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」および「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ2'〜ｖ4'を、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5およびｖ4として前記各フィルタ演算式により算出するようになっている。
【００４７】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明２１の画像処理装置と同等の作用が得られる。
さらに、発明３０の画像処理プログラムは、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっている。
【００４８】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明２２の画像処理装置と同等の作用が得られる。
さらに、発明３１の画像処理プログラムは、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する４、２または１つの隣接画素の値とに基づいて行うようになっている。
【００４９】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明２３の画像処理装置と同等の作用が得られる。
さらに、発明３２の画像処理プログラムは、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっている。
【００５０】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、発明２４の画像処理装置と同等の作用が得られる。
一方、上記目的を達成するために、発明３３の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行う。
【００５１】
さらに、発明３４の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いる。
【００５２】
さらに、発明３５の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記展開画像を格納するための画像記憶手段に利用可能に接続し、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段に、前記画素列のうち一の画素から前記境界画素までの全画素データを前記画像記憶手段からまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行う。
【００５３】
さらに、発明３６の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ2'〜ｖ4'を、「ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４」、「ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８」および「ｖ4'＝(ｖ4＋ｖ5)／２」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ5'〜ｖ7'を、ｖ4〜ｖ7をそれぞれｖ5、ｖ4、ｖ3およびｖ2として前記各フィルタ演算式により算出する。
【００５４】
さらに、発明３７の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にｖ4、ｖ3、ｖ2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にｖ5、ｖ6、ｖ7とした場合に、フィルタ後の各画素の値ｖ5'〜ｖ7'を、「ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８」、「ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４」および「ｖ7'＝ｖ7−（ｖ7−ｖ4）／８」のフィルタ演算式により算出し、フィルタ後の各画素の値ｖ2'〜ｖ4'を、ｖ2〜ｖ5をそれぞれｖ7、ｖ6、ｖ5およびｖ4として前記各フィルタ演算式により算出する。
【００５５】
さらに、発明３８の画像処理方法は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いる。
【００５６】
さらに、発明３９の画像処理方法は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する４、２または１つの隣接画素の値とに基づいて行う。
【００５７】
さらに、発明４０の画像処理方法は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行う。
【００５８】
【発明の実施の形態】
以下、本発明の第１の実施の形態を図面を参照しながら説明する。図１ないし図８は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の第１の実施の形態を示す図である。
本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図１に示すように、コンピュータ１００において、マルチタスクで動作するＯＳ（Operating System）により、ＭＰＥＧ形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対して、ブロックノイズを低減するフィルタ処理およびモスキートノイズを低減するフィルタ処理を行う場合について適用したものである。以下、前者のフィルタ処理をデブロックフィルタ処理といい、後者のフィルタ処理をデリンギングフィルタ処理という。
【００５９】
まず、本発明を適用するコンピュータシステムの構成を図１を参照しながら説明する。図１は、本発明を適用するコンピュータシステムの構成を示すブロック図である。
コンピュータ１００は、図１に示すように、制御プログラムに基づいて演算およびシステム全体を制御するＣＰＵ３０と、所定領域にあらかじめＣＰＵ３０の制御プログラム等を格納しているＲＯＭ３２と、ＲＯＭ３２等から読み出したデータやＣＰＵ３０の演算過程で必要な演算結果を格納するためのＲＡＭ３４と、ＲＡＭ３４の特定領域のデータを画像信号に変換してＬＣＤ（Liquid Crystal Display）４４に出力するＬＣＤＣ３６と、動画データをデコードするデコーダ３８と、ＲＡＭ３４の特定領域のデータを読み出してデブロックフィルタ処理およびデリンギングフィルタ処理を行うポストフィルタ部４０と、ポストフィルタ部４０からのデータに対して色素変換を行うＲＧＢ変換部４２と、ＲＧＢ変換部４２からのデータに基づいて表示を行うＬＣＤ４４とで構成されている。そして、ＣＰＵ３０、ＲＯＭ３２、ＲＡＭ３４、ＬＣＤＣ３６およびデコーダ３８は、データを転送するための信号線であるバス３９で相互にかつデータ授受可能に接続されている。
【００６０】
ＲＡＭ３４は、特定領域として、ＬＣＤ４４に表示するデータを格納するためのＶＲＡＭ３５を有しており、ＶＲＡＭ３５は、ＣＰＵ３０等のバス３９に接続された機器とポストフィルタ部４０とで独立にアクセスが可能となっている。また、ＶＲＡＭ３５は、ＬＣＤ４４の１画面分の画像データを格納可能な領域を少なくとも２つ有し、一方の領域を、デコーダ３８が動画データを展開するためのものとし、他方の領域を、ポストフィルタ部４０が読み出すためのものとし、それら領域は、所定周期で交互に切り換えて使用される。
【００６１】
ＬＣＤＣ３６は、ポストフィルタ部４０およびＲＧＢ変換部４２を制御することにより、ＶＲＡＭ３５のデータを先頭アドレスから所定周期で順次読み出し、読み出したデータを画像信号に変換してＬＣＤ４４に出力するようになっている。すなわち、ポストフィルタ部４０は、ＬＣＤＣ３６の制御により、ＶＲＡＭ３５からデータを読み出し、読み出したデータに対してデブロックフィルタ処理およびデリンギングフィルタ処理を行ってＲＧＢ変換部４２に出力し、ＲＧＢ変換部４２は、ＬＣＤＣ３６の制御により、ポストフィルタ部４０からのデータに対してＲＧＢ変換を行ってＬＣＤ４４に出力する。
【００６２】
デコーダ３８は、所定時間Ｔ（例えば、２０[ｍｓ]）ごとに動画データに含まれている画像データを順次デコードするようになっており、具体的には、ＣＰＵ３０からのデコード開始命令により、ＭＰＥＧ形式で圧縮された動画データをＲＡＭ３４から読み出し、読み出した動画データに基づいて、ＭＰＥＧ形式で画像データをＶＲＡＭ３５にデコードする。ＶＲＡＭ３５には、ＬＣＤ４４の一画素の色度合いを示す画素データ（ＹＵＶデータ）を単位として画像データが展開される。また、デコーダ３８では、ＭＰＥＧ形式による復号化処理のうちＩＤＣＴ（Inverse Discrete Cosine Transorm：逆離散コサイン変換）処理および動き補償処理を行う。なお、ＭＰＥＧ形式による圧縮処理および復号化処理については、従来の例による。
【００６３】
次に、ポストフィルタ部４０の構成を詳細に説明する。
ポストフィルタ部４０は、その構成および内部処理をハードウェアにより実現するものであって、１７画素分の画素データを格納可能なバッファを有し、ＶＲＡＭ３５からバッファに画素データを読み込みながら、読み出した画素データに基づいて所定のブロック（本実施の形態では、水平方向８画素および垂直方向８画素の正方行列からなる６４画素）単位で画素を処理するようになっている。具体的には、ＶＲＡＭ３５から読み出した画素データに対してデブロックフィルタ処理を行い、デブロックフィルタ処理した画素データに対してデリンギングフィルタ処理を行う。なお、これらフィルタ処理を行う順序は、特に限定されるものでなく、また、両方を行うようにしてもよいし、いずれかを選択的に行うようにしてもよい。選択的に行う場合は、ソフトウェア若しくはハードウェアによる設定、または画像の再生速度、質若しくはデータ容量に基づく動的な設定により選択を行うことができる。
【００６４】
本発明に係るデブロックフィルタ処理の原理を図２および図３を参照しながら詳細に説明する。図２および図３は、デブロックフィルタ処理の原理を説明するための図である。
図２において、互いに隣接するブロック間の境界線Ｂ１と直交する画素列ＰＧ１については、境界線Ｂ１を挟んで図面左側の画素の値を、境界線Ｂ１から近い順にｖ4、ｖ3、ｖ2、ｖ1とし、境界線Ｂ１を挟んで図面右側の画素の値を、境界線Ｂ１から近い順にｖ5、ｖ6、ｖ7、ｖ8とする。また、同様に、互いに隣接するブロック間の境界線Ｂ２と直交する画素列ＰＧ２については、境界線Ｂ２を挟んで図面上側の画素の値を、境界線Ｂ２から近い順にｖ4、ｖ3、ｖ2、ｖ1とし、境界線Ｂ２を挟んで図面下側の画素の値を、境界線Ｂ２から近い順にｖ5、ｖ6、ｖ7、ｖ8とする。
【００６５】
この場合に、画素列ＰＧ１，ＰＧ２について、デブロックフィルタ処理後の各画素の値ｖ1'〜ｖ8'は、下式（１）〜（８）のフィルタ演算式により算出する。
ｖ1'＝ｖ1                                                    …（１）
ｖ2'＝(ｖ2＋ｖ5)／２＋(ｖ2−ｖ5)／４                          …（２）
ｖ3'＝(ｖ3＋ｖ5)／２＋(ｖ3−ｖ5)／８                          …（３）
ｖ4'＝(ｖ4＋ｖ5)／２                                          …（４）
ｖ5'＝(ｖ5＋ｖ4)／２＋(ｖ5−ｖ4)／８                          …（５）
ｖ6'＝(ｖ6＋ｖ4)／２＋(ｖ6−ｖ4)／４                          …（６）
ｖ7'＝ｖ7−（ｖ7−ｖ4）／８                                  …（７）
ｖ8'＝ｖ8                                                    …（８）
上式（１）〜（８）のフィルタ演算式は、次のように導出される。図３は、画素列ＰＧ１，ＰＧ２の各画素の値を示した棒グラフである。
【００６６】
互いに隣接するブロック間Ａ，Ｂでは、図３（ａ）に示すように、圧縮時のＤＣＴ処理により画像の空間的な周波数成分のうち直流成分に相当するものが除去されることから、輝度の平均値が異なることによる段差が発生している。この段差がブロックノイズとなる。そこで、ブロックノイズを低減するために、ブロックＡ，Ｂの画像を滑らかに接続する場合を考える。ブロックＡ内の４画素の平均値ＶA、およびブロックＢ内の４画素の平均値ＶBは、下式（９），（10）により算出することができる。
ＶA＝(ｖ1＋ｖ2＋ｖ3＋ｖ4)／４                                …（９）
ＶB＝(ｖ5＋ｖ6＋ｖ7＋ｖ8)／４                                …（10）
各画素の値ｖiの平均値ＶA，ＶBからのずれ量をδｖiとすると、各画素の値ｖiは、下式（11），（12）により表すことができる。
ｖi＝ＶA＋δｖi  （ｉ＝１〜４）                              …（11）
ｖi＝ＶB＋δｖi  （ｉ＝５〜８）                              …（12）
さて、ブロックＡ，Ｂの画像を滑らかに接続するためには、平均値ＶA，ＶBの差を「０」にすればよく、図３（ｂ）に示すように、階段状に各画素の値ｖiを補正してやればよい。各階段の段差Δは、
Δ＝(ＶB−ＶA)／８                                            …（13）
なので、例えば、画素の値ｖ5の補正後の値ｖ5'は、下式（14）により算出することができる。
ｖ5'＝(ＶB＋ＶA)／２＋Δ＋δｖ5
＝(５ＶB＋３ＶA)／８＋δｖ5
＝{５(ｖ5−δｖ5)＋３(ｖ4−δｖ4)}／８＋δｖ5
＝{５ｖ5＋３ｖ4＋３(δｖ5−δｖ4)}／８                    …（14）
ここで、正確な値を算出するためには、上式（14）に従わなければならないが、上式（14）において、(δｖ5−δｖ4)が小さいと仮定して省略し、下式（15）の近似式を得る。
ｖ5'＝(５ｖ5＋３ｖ4)／８                                      …（15）
また、ブロックＢ内の他の画素についても同様に、補正後の値ｖ6'〜ｖ8'は、下式（16）〜（18）により算出することができる。
ｖ6'＝(ＶB＋ＶA)／２＋２Δ＋δｖ6
＝{６ｖ6＋２ｖ4＋２(δｖ6−δｖ4)}／８                    …（16）
ｖ7'＝(ＶB＋ＶA)／２＋３Δ＋δｖ7
＝{７ｖ7＋ｖ4＋(δｖ7−δｖ4)}／８                        …（17）
ｖ8'＝(ＶB＋ＶA)／２＋４Δ＋δｖ8
＝ｖ8                                                    …（18）
これにより、下式（19），（20）の近似式を得る。
ｖ6'＝(３ｖ6＋ｖ4)／４                                        …（19）
ｖ7'＝(７ｖ7＋ｖ4)／８                                        …（20）
また、ブロックＡ内の画素については、参照する画素の値がｖ5となる点で異なる以外は同様であり、補正後の値ｖ1'〜ｖ4'は、下式（21）〜（24）により算出することができる。
ｖ1'＝(ＶB＋ＶA)／２−３Δ＋δｖ1
＝{７ｖ1＋ｖ5＋(δｖ1−δｖ5)}／８                        …（21）
ｖ2'＝(ＶB＋ＶA)／２−２Δ＋δｖ2
＝{６ｖ2＋２ｖ5＋２(δｖ2−δｖ5)}／８                    …（22）
ｖ3'＝(ＶB＋ＶA)／２−Δ＋δｖ3
＝{５ｖ3＋３ｖ5＋(δｖ3−δｖ5)}／８                      …（23）
ｖ4'＝(ＶB＋ＶA)／２＋δｖ4
＝(ｖ4＋ｖ5＋２δｖ4)／２                                …（24）
これにより、下式（25）〜（28）の近似式を得る。
ｖ1'＝ｖ1                                                    …（25）
ｖ2'＝(３ｖ2＋ｖ5)／４                                        …（26）
ｖ3'＝(５ｖ3＋３ｖ5)／８                                      …（27）
ｖ4'＝(ｖ4＋ｖ5)／２                                          …（28）
また、実際の演算では、除算演算よりもビットシフトの方が処理を高速化することができるため、上式（25）〜（28），（15），（19），（20），（18）を上式（１）〜（８）に変形して用いる。このデブロックフィルタ処理を水平方向の画素列および垂直方向の画素列に対してそれぞれ行う。演算量としては、１画素に対して、加算および減算がそれぞれ２回、ビットシフトが４回ですむ。ビットシフトは、ハードウェア化する際にはさほど負荷にならない。従来のポストフィルタでは、１画素について最大７×７画素分の重み付け平均をとっていたので、それと比べて大幅に演算量を減らすことができる。
【００６７】
本発明に係るデブロックフィルタ処理は、図４のフローチャートに示す処理により実現することができる。図４は、デブロックフィルタ処理を示すフローチャートである。
デブロックフィルタ処理は、ポストフィルタ部４０において実行されると、図４に示すように、まず、ステップＳ１００に移行するようになっている。
【００６８】
ステップＳ１００では、先頭ブロックの開始アドレスをＬＣＤＣ３６から取得し、ステップＳ１０２に移行して、ブロックの右上部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップＳ１０４に移行して、ブロックの左上部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップＳ１０６に移行して、ブロックの右下部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップＳ１０８に移行して、ブロックの左下部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップＳ１１０に移行する。
【００６９】
ステップＳ１１０では、１面分の画像を構成するすべてのブロックについてステップＳ１０２からＳ１０８までの処理が終了したか否かを判定し、すべてのブロックについて処理が終了したと判定したとき(Yes)は、一連の処理を終了するが、そうでないと判定したとき(No)は、ステップＳ１１２に移行して、次のブロックの開始アドレスをＬＣＤＣ３６から取得し、ステップＳ１０２に移行する。
【００７０】
次に、上記ステップＳ１０２のフィルタ処理を図５を参照しながら詳細に説明する。図５は、ステップＳ１０２のフィルタ処理を示すフローチャートである。
上記ステップＳ１０２のフィルタ処理は、ブロックの右上部分の領域に属する画素列についてのデブロックフィルタ処理であり、上記ステップＳ１０２において実行されると、図５に示すように、まず、ステップＳ２００に移行する。
【００７１】
ステップＳ２００では、ステップＳ１００，Ｓ１１２で取得した開始アドレスに基づいて、ブロックの右上部分の領域に属する画素列のうち先頭のもののアドレスを算出し、ステップＳ２０２に移行して、算出した画素列のアドレスに基づいて、デブロックフィルタ処理の対象となる画素列について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データをまとめてバッファに読み込み、ステップＳ２０４に移行する。例えば、デブロックフィルタ処理の対象となる画素列が上から３段目である場合は、ブロック内の右上の画素から左に連続する４つの画素、およびその４つの画素からなる画素列の下２段にある８つの画素、上側に隣接するブロック内の右下の画素から左に連続する４つの画素、並びに右側に隣接するブロック内の左上の画素から数えて２つ下にある画素からなる合計１７個の画素についての画素データを読み込む。
【００７２】
次いで、ステップＳ２０４，Ｓ２０８，Ｓ２１２では、各画素についてデブロックフィルタ処理を行うか否かを判定する。各画素についてデブロックフィルタ処理を行うか否かは、隣接画素との差分値に基づいて判定する。本発明に係るデブロックフィルタ処理は、隣接するブロックの境界画素の値に基づいて行うが、ブロック境界までの間に大きなエッジが存在すると、補正後に輪郭のボケやかげが発生する。これを防止するために、ブロック境界までの間に大きなデータの差がないことを調べる。もし段差がある場合には、その画素についてはデブロックフィルタ処理は行わない。この判定は水平方向および垂直方向それぞれについて行う。
【００７３】
ステップＳ２０４では、ｖ4とｖ5との差分の絶対値が定数値Ｃ2よりも大きいか否かを判定し、ｖ4とｖ5との差分の絶対値が定数値Ｃ2以下であると判定したとき(No)は、ステップＳ２０６に移行する。ここで、定数値Ｃ2は、画素の値の最大値を「２５５」として「３２」に設定する。その理由としては、定数値Ｃ2は、「３２」よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「３２」よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できないからである。
【００７４】
ステップＳ２０６では、ｖ4，ｖ5に基づいて上式（４）によりフィルタ演算を行ってｖ4'を算出し、ステップＳ２０８に移行して、ｖ3とｖ4との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｖ3とｖ4との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ２１０に移行する。ここで、定数値Ｃ1は、画素の値の最大値を「２５５」として「１６」に設定する。その理由としては、定数値Ｃ1は、「１６」よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「１６」よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できないからである。
【００７５】
ステップＳ２１０では、ｖ3，ｖ5に基づいて上式（３）によりフィルタ演算を行ってｖ3'を算出し、ステップＳ２１２に移行して、ｖ2とｖ3との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｖ2とｖ3との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ２１４に移行して、ｖ2，ｖ5に基づいて上式（２）によりフィルタ演算を行ってｖ2'を算出し、ステップＳ２１６に移行する。
【００７６】
ステップＳ２１６では、垂直方向の画素列についてのデブロックフィルタ処理を行うが、このデブロックフィルタ処理は、後段で詳述するように、ステップＳ３０６〜Ｓ３１４と同様の要領で演算を行うことができる。
次いで、ステップＳ２１８に移行して、バッファの画素データのうちブロックの右上部分の領域に属する画素に係るものをＲＧＢ変換部４２に出力し、ステップＳ２２０に移行して、ブロックの右上部分の領域に属するすべての画素列についてステップＳ２０４からＳ２１８までの処理が終了したか否かを判定し、すべての画素列について処理が終了したと判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させるが、そうでないと判定したとき(No)は、ステップＳ２２２に移行して、ステップＳ１００，Ｓ１１２で取得した開始アドレスに基づいて、ブロックの右上部分の領域に属する画素列のうち次のもののアドレスを算出し、ステップＳ２０２に移行する。
【００７７】
一方、ステップＳ２０４でｖ4とｖ5との差分の絶対値が定数値Ｃ2よりも大きいと判定したとき(Yes)、ステップＳ２０８でｖ3とｖ4との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)、およびステップＳ２１２でｖ2とｖ3との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)はいずれも、ステップＳ２１６に移行する。
【００７８】
なお、上記ステップＳ１０６のフィルタ処理のうち水平方向の処理は、上記ステップＳ２０４〜Ｓ２１４と同様であり、上記ステップＳ１０４のフィルタ処理のうち垂直方向の処理は、上記ステップＳ２１６と同様である。
次に、上記ステップＳ１０４のフィルタ処理を図６を参照しながら詳細に説明する。図６は、ステップＳ１０４のフィルタ処理を示すフローチャートである。
【００７９】
上記ステップＳ１０４のフィルタ処理は、ブロックの左上部分の領域に属する画素列についてのデブロックフィルタ処理であり、上記ステップＳ１０４において実行されると、図６に示すように、まず、ステップＳ３００に移行する。
ステップＳ３００では、ステップＳ１００，Ｓ１１２で取得した開始アドレスに基づいて、ブロックの左上部分の領域に属する画素列のうち先頭のもののアドレスを算出し、ステップＳ３０２に移行して、算出した画素列のアドレスに基づいて、デブロックフィルタ処理の対象となる画素列について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データをバッファに読み込み、ステップＳ３０４に移行する。
【００８０】
ステップＳ３０４では、ｖ5とｖ4との差分の絶対値が定数値Ｃ2よりも大きいか否かを判定し、ｖ5とｖ4との差分の絶対値が定数値Ｃ2以下であると判定したとき(No)は、ステップＳ３０６に移行して、ｖ5，ｖ4に基づいて上式（５）によりフィルタ演算を行ってｖ5'を算出し、ステップＳ３０８に移行して、ｖ6とｖ5との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｖ6とｖ5との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ３１０に移行する。
【００８１】
ステップＳ３１０では、ｖ6，ｖ4に基づいて上式（６）によりフィルタ演算を行ってｖ6'を算出し、ステップＳ３１２に移行して、ｖ7とｖ6との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｖ7とｖ6との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ３１４に移行して、ｖ7，ｖ4に基づいて上式（７）によりフィルタ演算を行ってｖ7'を算出し、ステップＳ３１６に移行する。
【００８２】
ステップＳ３１６では、垂直方向の画素列についてのデブロックフィルタ処理を行うが、このデブロックフィルタ処理は、上記ステップＳ３０６〜Ｓ３１４と同様の要領で演算を行うことができる。
次いで、ステップＳ３１８に移行して、バッファの画素データのうちブロックの左上部分の領域に属する画素に係るものをＲＧＢ変換部４２に出力し、ステップＳ３２０に移行して、ブロックの左上部分の領域に属するすべての画素列についてステップＳ３０４からＳ３１８までの処理が終了したか否かを判定し、すべての画素列について処理が終了したと判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させるが、そうでないと判定したとき(No)は、ステップＳ３２２に移行して、ステップＳ１００，Ｓ１１２で取得した開始アドレスに基づいて、ブロックの左上部分の領域に属する画素列のうち次のもののアドレスを算出し、ステップＳ３０２に移行する。
【００８３】
一方、ステップＳ３０４でｖ5とｖ4との差分の絶対値が定数値Ｃ2よりも大きいと判定したとき(Yes)、ステップＳ３０８でｖ6とｖ5との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)、およびステップＳ３１２でｖ7とｖ6との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)はいずれも、ステップＳ３１６に移行する。
【００８４】
なお、上記ステップＳ１０８のフィルタ処理のうち水平方向の処理は、上記ステップＳ３０４〜Ｓ３１４と同様であり、上記ステップＳ１０６，Ｓ１０８のフィルタ処理のうち垂直方向の処理は、上記ステップＳ２０４〜Ｓ２１４と同様の要領で演算を行うことができる。
本発明に係るデリンギングフィルタ処理の原理を図７を参照しながら詳細に説明する。図７は、デリンギングフィルタ処理の原理を説明するための図である。
【００８５】
図７において、デリンギングフィルタ処理の対象となる対象画素の値をｖ0とし、対象画素と隣接する隣接画素の値を、対象画素からみて左上、上、右上、左、右、左下、下、右下の順にｖ1〜ｖ8とする。
この場合に、対象画素についてデリンギングフィルタ処理後の値ｖ0'は、下式（30）のフィルタ演算式により算出する。
Ｖ＝(ｖ1＋ｖ2＋ｖ3＋ｖ4＋ｖ5＋ｖ6＋ｖ7＋ｖ8)／８              …（29）
ｖ0'＝(ｖ0＋Ｖ）／２                                          …（30）
ただし、エッジが検出された場合にはｖi（ｉ＝１〜８）をｖ0に置き換える。ｖiをｖ0に置き換える趣旨は、エッジが検出された場合にはデブロックフィルタ処理を行わないこととする趣旨と同様である。図７の例では、ｖ7およびｖ8がそれぞれｖ0に置き換えられる。
【００８６】
本発明に係るデリンギングフィルタ処理は、図８のフローチャートに示す処理により実現することができる。図８は、デリンギングフィルタ処理を示すフローチャートである。
デリンギングフィルタ処理は、ポストフィルタ部４０において実行されると、図８に示すように、まず、ステップＳ４００に移行するようになっている。
【００８７】
ステップＳ４００では、先頭の対象画素のアドレスをＬＣＤＣ３６から取得し、ステップＳ４０２に移行して、取得した対象画素のアドレスに基づいて対象画素および隣接画素の値ｖ0〜ｖ8をバッファに読み込み、ステップＳ４０４に移行して、変数Ｖに「０」を、変数ｉに「１」を設定し、ステップＳ４０６に移行する。
【００８８】
ステップＳ４０６では、ｖi（ｖの添字ｉは変数ｉの値により特定される）とｖ0との差分の絶対値が定数値Ｃ3よりも大きいか否かを判定し、ｖiとｖ0との差分の絶対値が定数値Ｃ3よりも大きいと判定したとき(Yes)は、ステップＳ４０８に移行する。ここで、定数値Ｃ3は、画素の値の最大値を「２５５」として「１６」に設定する。その理由としては、定数値Ｃ3は、「１６」よりも大きく設定し過ぎると、隣接画素の値ｖiを対象画素の値ｖ0に置き換えるべきなのに置き換えられず、効果的なフィルタ効果が期待できず、逆に、「１６」よりも小さく設定し過ぎると、隣接画素の値ｖiを対象画素の値ｖ0に置き換えなくてもよいのに置き換えてしまい、効果的なフィルタ効果が期待できないからである。
【００８９】
ステップＳ４０８では、隣接画素の値ｖiを対象画素の値ｖ0に置き換え、ステップＳ４１０に移行して、「８」で除算するために隣接画素の値ｖiを３ビット右シフトし、ステップＳ４１２に移行して、変数Ｖの値に隣接画素の値ｖiを加算したものを変数Ｖの新たな値として設定し、ステップＳ４１４に移行して、変数ｉの値に「１」を加算したものを変数ｉの新たな値として設定し、ステップＳ４１６に移行する。
【００９０】
ステップＳ４１６では、変数ｉの値が「９」未満であるか否かを判定し、変数ｉの値が「９」以上であると判定したとき(No)は、ステップＳ４１８に移行して、変数Ｖの値に対象画素の値ｖ0を加算し、その加算値を１ビット右シフトしたものを、対象画素についてデリンギングフィルタ処理後の値ｖ0'として算出し、ステップＳ４２０に移行して、算出した値ｖ0'をＲＧＢ変換部４２に出力し、ステップＳ４２２に移行する。
【００９１】
ステップＳ４２２では、１面分の画像を構成するすべての画素についてステップＳ４０２からＳ４２０までの処理が終了したか否かを判定し、すべての画素について処理が終了したと判定したとき(Yes)は、一連の処理を終了するが、そうでないと判定したとき(No)は、ステップＳ４２４に移行して、次の対象画素のアドレスをＬＣＤＣ３６から取得し、ステップＳ４０２に移行する。
【００９２】
一方、ステップＳ４１６で、変数ｉの値が「９」未満であると判定したとき(Yes)は、ステップＳ４０６に移行する。
一方、ステップＳ４０６で、ｖiとｖ0との差分の絶対値が定数値Ｃ3以下であると判定したとき(No)は、ステップＳ４１０に移行する。
次に、上記第１の実施の形態の動作を説明する。
【００９３】
初めに、図１における画素列ＰＧ１の各画素に対してデブロックフィルタ処理を行う場合を例にとって、デブロックフィルタ処理を行う場合を説明する。
画素列ＰＧ１の各画素に対してデブロックフィルタ処理を行う場合は、まず、ステップＳ１００，Ｓ１０２，Ｓ２００，Ｓ２０２を経て、ブロックの右上部分の領域に属する画素列のうち画素列ＰＧ１のアドレスが算出され、算出された画素列ＰＧ１のアドレスに基づいて、画素列ＰＧ１について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれる。ここで、画素列ＰＧ１が上から３段目であるので、ブロック内の右上の画素から左に連続する４つの画素、およびその４つの画素からなる画素列の下２段にある８つの画素、上側に隣接するブロック内の右下の画素から左に連続する４つの画素、並びに右側に隣接するブロック内の左上の画素から数えて２つ下にある画素からなる合計１７個の画素についての画素データが読み込まれる。
【００９４】
そして、まず、ステップＳ２０４を経て、画素値ｖ4についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｖ4とｖ5との差分の絶対値が定数値Ｃ2以下であれば、ステップＳ２０６を経て、ｖ4，ｖ5に基づいて上式（４）によりフィルタ演算が行われてｖ4'が算出される。なお、画素値ｖ4についてデブロックフィルタ処理を行わないと判定された場合には、画素値ｖ2，ｖ3についてもデブロックフィルタ処理は行われない。
【００９５】
次いで、画素値ｖ4についてデブロックフィルタ処理が行われた場合には、ステップＳ２０８を経て、画素値ｖ3についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｖ3とｖ4との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ２１０を経て、ｖ3，ｖ5に基づいて上式（３）によりフィルタ演算が行われてｖ3'が算出される。なお、画素値ｖ3についてデブロックフィルタ処理を行わないと判定された場合には、画素値ｖ2についてもデブロックフィルタ処理は行われない。
【００９６】
次いで、画素値ｖ3についてデブロックフィルタ処理が行われた場合には、ステップＳ２１２を経て、画素値ｖ2についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｖ2とｖ3との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ２１４を経て、ｖ2，ｖ5に基づいて上式（２）によりフィルタ演算が行われてｖ2'が算出される。
【００９７】
そして、ステップＳ２１６，Ｓ２１８を経て、画素列ＰＧ１の画素のうち左半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、バッファの画素データのうちブロックの右上部分の領域に属する画素に係るものがＲＧＢ変換部４２に出力される。
これにより、画素列ＰＧ１のうち左半分の画素についてデブロックフィルタ処理が完了する。
【００９８】
次に、ステップＳ１００，Ｓ１０４，Ｓ３００，Ｓ３０２を経て、ブロックの左上部分の領域に属する画素列のうち画素列ＰＧ１のアドレスが算出され、算出された画素列ＰＧ１のアドレスに基づいて、画素列ＰＧ１について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれる。ここで、画素列ＰＧ１が上から３段目であるので、ブロック内の左上の画素から右に連続する４つの画素、およびその４つの画素からなる画素列の下２段にある８つの画素、上側に隣接するブロック内の左下の画素から右に連続する４つの画素、並びに左側に隣接するブロック内の右上の画素から数えて２つ下にある画素からなる合計１７個の画素についての画素データが読み込まれる。
【００９９】
そして、まず、ステップＳ３０４を経て、画素値ｖ5についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｖ5とｖ4との差分の絶対値が定数値Ｃ2以下であれば、ステップＳ３０６を経て、ｖ5，ｖ4に基づいて上式（５）によりフィルタ演算が行われてｖ5'が算出される。なお、画素値ｖ5についてデブロックフィルタ処理を行わないと判定された場合には、画素値ｖ6，ｖ7についてもデブロックフィルタ処理は行われない。
【０１００】
次いで、画素値ｖ5についてデブロックフィルタ処理が行われた場合には、ステップＳ３０８を経て、画素値ｖ6についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｖ6とｖ5との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ３１０を経て、ｖ6，ｖ4に基づいて上式（６）によりフィルタ演算が行われてｖ6'が算出される。なお、画素値ｖ6についてデブロックフィルタ処理を行わないと判定された場合には、画素値ｖ7についてもデブロックフィルタ処理は行われない。
【０１０１】
次いで、画素値ｖ6についてデブロックフィルタ処理が行われた場合には、ステップＳ３１２を経て、画素値ｖ7についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｖ7とｖ6との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ３１４を経て、ｖ7，ｖ4に基づいて上式（７）によりフィルタ演算が行われてｖ7'が算出される。
【０１０２】
そして、ステップＳ３１６，Ｓ３１８を経て、画素列ＰＧ１の画素のうち右半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、バッファの画素データのうちブロックの左上部分の領域に属する画素に係るものがＲＧＢ変換部４２に出力される。
これにより、画素列ＰＧ１のうち右半分の画素についてデブロックフィルタ処理が完了する。
【０１０３】
次に、デリンギングフィルタ処理を行う場合を説明する。
デリンギングフィルタ処理を行う場合は、まず、ステップＳ４００〜Ｓ４０４を経て、対象画素のアドレスに基づいて対象画素および隣接画素の値ｖ0〜ｖ8がバッファに読み込まれる。
次いで、ステップＳ４０６〜Ｓ４１６を繰り返し経て、各隣接画素の値ｖiについて、ｖiとｖ0との差分の絶対値が定数値Ｃ3よりも大きければ、隣接画素の値ｖiが対象画素の値ｖ0に置き換えられ、そうでなければ、隣接画素の値ｖiがそのまま採用され、隣接画素の値ｖiが３ビット右シフトされ、変数Ｖの値に隣接画素の値ｖiを加算したものが変数Ｖの新たな値として設定される。すなわち、各隣接画素の値ｖiをそれぞれ「８」で除算し、その除算結果を加算するという演算過程を経て、隣接画素の平均値Ｖが算出される。
【０１０４】
そして、ステップＳ４１８，Ｓ４２０を経て、変数Ｖの値に対象画素の値ｖ0が加算され、その加算値を１ビット右シフトしたものが、対象画素のフィルタ処理後の値ｖ0'として算出され、算出された値ｖ0'がＲＧＢ変換部４２に出力される。
このようにして、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、デブロックフィルタ後の各画素の値ｖ2'〜ｖ7'を、上式（２）〜（７）のフィルタ演算式により算出するようになっている。
【０１０５】
これにより、一の画素についてのフィルタ演算を行うにあたって、多数の画素の平均値を用いず、２つの画素の値のみを用いるので、従来に比して、デブロックフィルタ処理を比較的簡素化することができる。例えば、本実施の形態のように、デブロックフィルタ処理をハードウェアにより実現する場合には、回路規模を小型化することができるし、デブロックフィルタ処理をソフトウェアにより実現する場合には、プログラムサイズを低減することができる。また、一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とを用いた加減算およびビットシフト（除数が２の整数倍となる除算）により演算を行うので、デブロックフィルタ処理をさらに簡素化することができるのに加え、効果的なフィルタ効果をある程度実現することができる。
【０１０６】
さらに、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列の画素のうち一の画素についてのフィルタ演算を、その一の画素から、同一画素列の画素であって隣接ブロック内の境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値Ｃ1，Ｃ2を超えていないときに行い、閾値Ｃ1，Ｃ2として定数値を用いるようになっている。
【０１０７】
これにより、閾値Ｃ1，Ｃ2が定数値であるので、デブロックフィルタ処理の過程において閾値Ｃ1，Ｃ2を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値Ｃ1，Ｃ2を超えていれば、フィルタ演算が行われない。したがって、デブロックフィルタ処理をさらに簡素化することができるのに加え、従来に比して、デブロックフィルタ処理を比較的高速化することができる。
【０１０８】
さらに、本実施の形態では、境界画素と、境界画素と隣接する隣接画素との差分値を比較するときの閾値Ｃ2を、境界画素と、隣接画素以外の画素との差分値を比較するときの閾値Ｃ1よりも大きく設定した。
これにより、ブロック間の輝度の平均値が異なるという特性を考慮したデブロックフィルタ処理を行うことができるので、さらに効果的なフィルタ効果を実現することができる。
【０１０９】
さらに、本実施の形態では、境界画素と、境界画素と隣接する隣接画素との差分値を比較するときの閾値Ｃ2を、画素の値の最大値を「２５５」として「３２」に設定し、境界画素と、隣接画素以外の画素との差分値を比較するときの閾値Ｃ1を、「１６」に設定した。
これにより、ブロック間の輝度の平均値が異なるという特性をより考慮したデブロックフィルタ処理を行うことができるので、さらに効果的なフィルタ効果を実現することができる。
【０１１０】
さらに、本実施の形態では、デブロックフィルタ処理は、画素についてフィルタ演算を行うか否かの判定を、境界画素と隣接する隣接画素から順次境界線より遠ざかる方向に行い、画素についてフィルタ演算を行わないと判定したときは、その画素およびこれよりも後段の画素についてはフィルタ演算を行わないようになっている。
【０１１１】
これにより、画素についてフィルタ演算を行うか否かの判定回数を低減することができるので、デブロックフィルタ処理をさらに高速化することができる。
さらに、本実施の形態では、ポストフィルタ部４０は、１７画素分の画素データを格納可能なバッファを有し、デブロックフィルタ処理は、画素列のうち一の画素から境界画素までの全画素データを、ＶＲＡＭ３５からバッファにまとめて読み込み、バッファの画素データに基づいてフィルタ演算を行うようになっている。
【０１１２】
これにより、画素列の各画素についてデブロックフィルタ処理を行うに必要な画素データをバッファにまとめて読み込み一括で処理するので、デブロックフィルタ処理をさらに高速化することができる。
さらに、本実施の形態では、デブロックフィルタ処理は、ブロック内の水平方向の画素列および垂直方向の画素列の一方に対してフィルタ演算を行った後、他方に対してフィルタ演算を行うようになっている。
【０１１３】
これにより、ブロック内の水平方向の画素列および垂直方向の画素列の両方に対してデブロックフィルタ処理を行うので、さらに効果的なフィルタ効果を実現することができる。
さらに、本実施の形態では、デリンギングフィルタ処理は、一の画素についてのフィルタ演算を、その演算の対象となる対象画素の値と、対象画素と隣接する隣接画素の値とに基づいて行い、フィルタ演算では、隣接画素のうち一の画素と対象画素との差分値が閾値Ｃ3を超えているときは、その一の画素の値に代えて対象画素の値を用いるようになっている。
【０１１４】
これにより、各隣接画素と対象画素との差分値が閾値Ｃ3を超えている否かにかかわらず、隣接画素の平均値を算出するときの除数が一定（「８」）となり、その除数が２の整数倍であるのでビットシフトにより演算を行うことができる。したがって、従来に比して、デリンギングフィルタ処理を比較的簡素化することができる。例えば、本実施の形態のように、デリンギングフィルタ処理をハードウェアにより実現する場合には、回路規模を小型化することができるし、デリンギングフィルタ処理をソフトウェアにより実現する場合には、プログラムサイズを低減することができる。
【０１１５】
さらに、本実施の形態では、デリンギングフィルタ処理は、閾値Ｃ3として定数値を用いるようになっている。
これにより、閾値Ｃ3が定数値であるので、デリンギングフィルタ処理の過程において閾値Ｃ3を算出する必要がない。したがって、デリンギングフィルタ処理をさらに簡素化することができる。
【０１１６】
さらに、本実施の形態では、デリンギングフィルタ処理は、閾値Ｃ3を、画素の値の最大値を「２５５」として「１６」に設定した。
これにより、効果的なフィルタ効果をある程度実現することができる。
さらに、本実施の形態では、デリンギングフィルタ処理は、一の画素についてのフィルタ演算を、その演算の対象となる対象画素の値を「８」で除算し、対象画素と隣接する隣接画素の値を「８」で除算し、それら除算結果を加算することにより行うようになっている。
【０１１７】
これにより、除算してから加算を行うので、従来に比して、デリンギングフィルタ処理において演算のために占有するメモリ容量を比較的低減することができる。
上記第１の実施の形態において、ＭＰＥＧ形式の動画データは、発明１、１８、１９、２２、２４ないし２７、３０、３２ないし３５、３８または４０の圧縮画像データに対応し、ＶＲＡＭ３５は、発明９、１９、２７または３５の画像記憶手段に対応し、ポストフィルタ部４０のバッファは、発明９、１９、２７または３５の作業用記憶手段に対応している。
【０１１８】
次に、本発明の第２の実施の形態を図面を参照しながら説明する。図９ないし図１３は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の第２の実施の形態を示す図である。以下、上記第１の実施の形態と異なる部分についてのみ説明をし、重複する部分については同一の符号を付して説明を省略する。
【０１１９】
本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図１に示すように、コンピュータ１００において、マルチタスクで動作するＯＳにより、ＭＰＥＧ形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対してデブロックフィルタ処理を行う場合について適用したものであり、上記第１の実施の形態と異なるのは、上式（１）〜（４）のフィルタ演算式のみを用いてデブロックフィルタ処理を行う点にある。
【０１２０】
ポストフィルタ部４０は、上記ステップＳ２０２〜Ｓ２１４の処理に代えて、図９のフローチャートに示す画素値読込処理を、上記ステップＳ３０２〜Ｓ３１４の処理に代えて、図１０のフローチャートに示す画素値読込処理をそれぞれ実行するようになっている。
初めに、ブロックの右上部分の領域についての画素値読込処理を図９を参照しながら詳細に説明する。図９は、ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【０１２１】
ブロックの右上部分の領域についての画素値読込処理は、ポストフィルタ部４０において実行されると、図９に示すように、まず、ステップＳ２３０に移行するようになっている。なお、以下の説明において、ｓ(０)〜ｓ(４)は、配列型の変数であり、バッファ上に割り当てたものであってもよいし、バッファとは別の領域に確保したものであってもよい。
【０１２２】
ステップＳ２３０では、画素値ｖ1をｓ(０)に読み込み、ステップＳ２３２に移行して、画素値ｖ2をｓ(１)に読み込み、ステップＳ２３４に移行して、画素値ｖ3をｓ(２)に読み込み、ステップＳ２３６に移行して、画素値ｖ4をｓ(３)に読み込み、ステップＳ２３８に移行して、画素値ｖ5をｓ(４)に読み込み、ステップＳ２４０に移行する。
【０１２３】
ステップＳ２４０では、ｓ(０)〜ｓ(４)の値に基づいて上式（１）〜（４）によりフィルタ演算を行うフィルタ演算処理を実行し、一連の処理を終了して元の処理に復帰させる。
次に、ブロックの左上部分の領域についての画素値読込処理を図１０を参照しながら詳細に説明する。図１０は、ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【０１２４】
ブロックの左上部分の領域についての画素値読込処理は、ポストフィルタ部４０において実行されると、図１０に示すように、まず、ステップＳ３３０に移行するようになっている。
ステップＳ３３０では、画素値ｖ4をｓ(４)に読み込み、ステップＳ３３２に移行して、画素値ｖ5をｓ(３)に読み込み、ステップＳ３３４に移行して、画素値ｖ6をｓ(２)に読み込み、ステップＳ３３６に移行して、画素値ｖ7をｓ(１)に読み込み、ステップＳ３３８に移行して、画素値ｖ8をｓ(０)に読み込み、ステップＳ２４０に移行する。
【０１２５】
次に、上記ステップＳ２４０のフィルタ演算処理を図１１を参照しながら詳細に説明する。図１１は、ステップＳ２４０のフィルタ演算処理を示すフローチャートである。
フィルタ演算処理は、上記ステップＳ２４０において実行されると、図１１に示すように、まず、ステップＳ５００に移行するようになっている。
【０１２６】
ステップＳ５００では、ｓ(３)とｓ(４)との差分の絶対値が定数値Ｃ2よりも大きいか否かを判定し、ｓ(３)とｓ(４)との差分の絶対値が定数値Ｃ2以下であると判定したとき(No)は、ステップＳ５０２に移行して、ｓ(３)，ｓ(４)の値に基づいて上式（４）によりフィルタ演算を行ってｓ'(３)を算出し、ステップＳ５０４に移行する。
【０１２７】
ステップＳ５０４では、ｓ(２)とｓ(３)との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｓ(２)とｓ(３)との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ５０６に移行して、ｓ(２)，ｓ(４)の値に基づいて上式（３）によりフィルタ演算を行ってｓ'(２)を算出し、ステップＳ５０８に移行する。
【０１２８】
ステップＳ５０８では、ｓ(１)とｓ(２)との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｓ(１)とｓ(２)との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ５１０に移行して、ｓ(１)，ｓ(４)の値に基づいて上式（２）によりフィルタ演算を行ってｓ'(１)を算出し、一連の処理を終了して元の処理に復帰させる。
【０１２９】
一方、ステップＳ５００でｓ(３)とｓ(４)との差分の絶対値が定数値Ｃ2よりも大きいと判定したとき(Yes)、ステップＳ５０４でｓ(２)とｓ(３)との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)、およびステップＳ５０８でｓ(１)とｓ(２)との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)はいずれも、一連の処理を終了して元の処理に復帰させる。
【０１３０】
次に、上記第２の実施の形態の動作を図１２および図１３を参照しながら説明する。図１２は、画素値ｖ1〜ｖ8を並べ換えて演算する場合を示す図である。図１３は、画素列ＰＧ１の各画素の値を示した棒グラフである。
初めに、図１における画素列ＰＧ１の各画素に対してデブロックフィルタ処理を行う場合を例にとって、デブロックフィルタ処理を行う場合を説明する。
【０１３１】
画素列ＰＧ１の各画素に対してデブロックフィルタ処理を行う場合は、まず、ステップＳ２００，Ｓ２０２，Ｓ２３０〜Ｓ２３８を経て、画素列ＰＧ１のアドレスに基づいて、画素列ＰＧ１について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図１２（ａ）に示すように、画素値ｖ1〜ｖ5がｓ(０)〜ｓ(４)にその順で読み込まれる。
【０１３２】
そして、まず、ステップＳ５００を経て、ｓ(３)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(３)とｓ(４)との差分の絶対値が定数値Ｃ2以下であれば、ステップＳ５０２を経て、ｓ(３)，ｓ(４)の値に基づいて上式（４）によりフィルタ演算が行われてｓ'(３)が算出される。なお、ｓ(３)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(１)，ｓ(２)についてもデブロックフィルタ処理は行われない。
【０１３３】
次いで、ｓ(３)についてデブロックフィルタ処理が行われた場合には、ステップＳ５０４を経て、ｓ(２)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(２)とｓ(３)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５０６を経て、ｓ(２)，ｓ(４)に基づいて上式（３）によりフィルタ演算が行われてｓ'(２)が算出される。なお、ｓ(２)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(１)についてもデブロックフィルタ処理は行われない。
【０１３４】
次いで、ｓ(２)についてデブロックフィルタ処理が行われた場合には、ステップＳ５０８を経て、ｓ(１)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(１)とｓ(２)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５１０を経て、ｓ(１)，ｓ(４)に基づいて上式（２）によりフィルタ演算が行われてｓ'(１)が算出される。
【０１３５】
そして、ステップＳ２１６，Ｓ２１８を経て、画素列ＰＧ１の画素のうち左半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、ｓ'(１)〜ｓ'(３)の値がＲＧＢ変換部４２に出力される。
これにより、画素列ＰＧ１のうち左半分の画素についてデブロックフィルタ処理が完了する。
【０１３６】
次に、ステップＳ３００，Ｓ３０２，Ｓ３３０〜Ｓ３３８を経て、画素列ＰＧ１のアドレスに基づいて、画素列ＰＧ１について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図１２（ｂ）に示すように、画素値ｖ4〜ｖ8がｓ(４)〜ｓ(０)にその順で読み込まれる。
【０１３７】
そして、まず、ステップＳ５００を経て、ｓ(３)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(３)とｓ(４)との差分の絶対値が定数値Ｃ2以下であれば、ステップＳ５０２を経て、ｓ(３)，ｓ(４)の値に基づいて上式（４）によりフィルタ演算が行われてｓ'(３)が算出される。なお、ｓ(３)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(１)，ｓ(２)についてもデブロックフィルタ処理は行われない。
【０１３８】
次いで、ｓ(３)についてデブロックフィルタ処理が行われた場合には、ステップＳ５０４を経て、ｓ(２)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(２)とｓ(３)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５０６を経て、ｓ(２)，ｓ(４)に基づいて上式（３）によりフィルタ演算が行われてｓ'(２)が算出される。なお、ｓ(２)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(１)についてもデブロックフィルタ処理は行われない。
【０１３９】
次いで、ｓ(２)についてデブロックフィルタ処理が行われた場合には、ステップＳ５０８を経て、ｓ(１)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(１)とｓ(２)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５１０を経て、ｓ(１)，ｓ(４)に基づいて上式（２）によりフィルタ演算が行われてｓ'(１)が算出される。
【０１４０】
そして、ステップＳ３１６，Ｓ３１８を経て、画素列ＰＧ１の画素のうち右半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、ｓ'(１)〜ｓ'(３)の値がＲＧＢ変換部４２に出力される。このとき、図１２（ｂ）に示すように、ｓ'(０)〜ｓ'(４)の内容が反対の順列となるように並べ換えられてから、ｓ'(１)〜ｓ'(３)の値がＲＧＢ変換部４２に出力される。
【０１４１】
これにより、画素列ＰＧ１のうち右半分の画素についてデブロックフィルタ処理が完了する。
本実施の形態に係るデブロックフィルタ処理によれば、上記第１の実施の形態では、図１３（ａ）に示すように各画素値ｖ1〜ｖ8が補正されるところ、図１３（ｂ）に示すように補正される。
【０１４２】
このようにして、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、画素値ｖ2〜ｖ5をそれぞれｓ(１)〜ｓ(４)に読み込んで、フィルタ後の各画素の値ｖ2'〜ｖ4'を上式（２）〜（４）のフィルタ演算式により算出し、画素値ｖ4〜ｖ7をそれぞれｓ(４)〜ｓ(１)に読み込んで、フィルタ後の各画素の値ｖ5'〜ｖ7'を上式（２）〜（４）のフィルタ演算式により算出するようになっている。
【０１４３】
これにより、６つの画素についてデブロックフィルタ処理を行うのに３つのフィルタ演算式を用意しておけばよいので、デブロックフィルタ処理をさらに簡素化することができる。
上記第２の実施の形態において、ＭＰＥＧ形式の動画データは、発明２０、２８または３６の圧縮画像データに対応している。
【０１４４】
次に、本発明の第３の実施の形態を図面を参照しながら説明する。図１４ないし図１７は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の第３の実施の形態を示す図である。以下、上記第１の実施の形態と異なる部分についてのみ説明をし、重複する部分については同一の符号を付して説明を省略する。
【０１４５】
本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図１に示すように、コンピュータ１００において、マルチタスクで動作するＯＳにより、ＭＰＥＧ形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対してデブロックフィルタ処理を行う場合について適用したものであり、上記第１の実施の形態と異なるのは、上式（５）〜（８）のフィルタ演算式のみを用いてデブロックフィルタ処理を行う点にある。
【０１４６】
ポストフィルタ部４０は、上記ステップＳ２０２〜Ｓ２１４の処理に代えて、図１４のフローチャートに示す画素値読込処理を、上記ステップＳ３０２〜Ｓ３１４の処理に代えて、図１５のフローチャートに示す画素値読込処理をそれぞれ実行するようになっている。
初めに、ブロックの右上部分の領域についての画素値読込処理を図１４を参照しながら詳細に説明する。図１４は、ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【０１４７】
ブロックの右上部分の領域についての画素値読込処理は、ポストフィルタ部４０において実行されると、図１４に示すように、まず、ステップＳ２６０に移行するようになっている。なお、以下の説明において、ｓ(０)〜ｓ(４)は、配列型の変数であり、バッファ上に割り当てたものであってもよいし、バッファとは別の領域に確保したものであってもよい。
【０１４８】
ステップＳ２６０では、画素値ｖ1をｓ(４)に読み込み、ステップＳ２６２に移行して、画素値ｖ2をｓ(３)に読み込み、ステップＳ２６４に移行して、画素値ｖ3をｓ(２)に読み込み、ステップＳ２６６に移行して、画素値ｖ4をｓ(１)に読み込み、ステップＳ２６８に移行して、画素値ｖ5をｓ(０)に読み込み、ステップＳ２７０に移行する。
【０１４９】
ステップＳ２７０では、ｓ(０)〜ｓ(４)の値に基づいて上式（５）〜（８）によりフィルタ演算を行うフィルタ演算処理を実行し、一連の処理を終了して元の処理に復帰させる。
次に、ブロックの左上部分の領域についての画素値読込処理を図１５を参照しながら詳細に説明する。図１５は、ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【０１５０】
ブロックの左上部分の領域についての画素値読込処理は、ポストフィルタ部４０において実行されると、図１５に示すように、まず、ステップＳ３６０に移行するようになっている。
ステップＳ３６０では、画素値ｖ4をｓ(０)に読み込み、ステップＳ３６２に移行して、画素値ｖ5をｓ(１)に読み込み、ステップＳ３６４に移行して、画素値ｖ6をｓ(２)に読み込み、ステップＳ３６６に移行して、画素値ｖ7をｓ(３)に読み込み、ステップＳ３６８に移行して、画素値ｖ8をｓ(４)に読み込み、ステップＳ２７０に移行する。
【０１５１】
次に、上記ステップＳ２７０のフィルタ演算処理を図１６を参照しながら詳細に説明する。図１６は、ステップＳ２７０のフィルタ演算処理を示すフローチャートである。
フィルタ演算処理は、上記ステップＳ２７０において実行されると、図１６に示すように、まず、ステップＳ５３０に移行するようになっている。
【０１５２】
ステップＳ５３０では、ｓ(１)とｓ(０)との差分の絶対値が定数値Ｃ2よりも大きいか否かを判定し、ｓ(１)とｓ(０)との差分の絶対値が定数値Ｃ2以下であると判定したとき(No)は、ステップＳ５３２に移行して、ｓ(１)，ｓ(０)の値に基づいて上式（５）によりフィルタ演算を行ってｓ'(１)を算出し、ステップＳ５３４に移行する。
【０１５３】
ステップＳ５３４では、ｓ(２)とｓ(１)との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｓ(２)とｓ(１)との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ５３６に移行して、ｓ(２)，ｓ(０)の値に基づいて上式（６）によりフィルタ演算を行ってｓ'(２)を算出し、ステップＳ５３８に移行する。
【０１５４】
ステップＳ５３８では、ｓ(３)とｓ(２)との差分の絶対値が定数値Ｃ1よりも大きいか否かを判定し、ｓ(３)とｓ(２)との差分の絶対値が定数値Ｃ1以下であると判定したとき(No)は、ステップＳ５４０に移行して、ｓ(３)，ｓ(０)の値に基づいて上式（７）によりフィルタ演算を行ってｓ'(３)を算出し、一連の処理を終了して元の処理に復帰させる。
【０１５５】
一方、ステップＳ５３０でｓ(１)とｓ(０)との差分の絶対値が定数値Ｃ2よりも大きいと判定したとき(Yes)、ステップＳ５３４でｓ(２)とｓ(１)との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)、およびステップＳ５３８でｓ(３)とｓ(２)との差分の絶対値が定数値Ｃ1よりも大きいと判定したとき(Yes)はいずれも、一連の処理を終了して元の処理に復帰させる。
【０１５６】
次に、上記第３の実施の形態の動作を図１７を参照しながら説明する。図１７は、画素列ＰＧ１の各画素の値を示した棒グラフである。
初めに、図１における画素列ＰＧ１の各画素に対してデブロックフィルタ処理を行う場合を例にとって、デブロックフィルタ処理を行う場合を説明する。
画素列ＰＧ１の各画素に対してデブロックフィルタ処理を行う場合は、まず、ステップＳ２００，Ｓ２０２，Ｓ２６０〜Ｓ２６８を経て、画素列ＰＧ１のアドレスに基づいて、画素列ＰＧ１について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図１２（ｂ）に示すように、画素値ｖ1〜ｖ5がｓ(４)〜ｓ(０)にその順で読み込まれる。
【０１５７】
そして、まず、ステップＳ５３０を経て、ｓ(１)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(１)とｓ(０)との差分の絶対値が定数値Ｃ2以下であれば、ステップＳ５３２を経て、ｓ(１)，ｓ(０)の値に基づいて上式（５）によりフィルタ演算が行われてｓ'(１)が算出される。なお、ｓ(１)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(２)，ｓ(３)についてもデブロックフィルタ処理は行われない。
【０１５８】
次いで、ｓ(２)についてデブロックフィルタ処理が行われた場合には、ステップＳ５３４を経て、ｓ(２)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(２)とｓ(１)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５３６を経て、ｓ(２)，ｓ(０)に基づいて上式（６）によりフィルタ演算が行われてｓ'(２)が算出される。なお、ｓ(２)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(３)についてもデブロックフィルタ処理は行われない。
【０１５９】
次いで、ｓ(２)についてデブロックフィルタ処理が行われた場合には、ステップＳ５３８を経て、ｓ(３)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(３)とｓ(２)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５４０を経て、ｓ(３)，ｓ(０)に基づいて上式（７）によりフィルタ演算が行われてｓ'(３)が算出される。
【０１６０】
そして、ステップＳ２１６，Ｓ２１８を経て、画素列ＰＧ１の画素のうち左半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、ｓ'(１)〜ｓ'(３)の値がＲＧＢ変換部４２に出力される。このとき、図１２（ｂ）に示すように、ｓ'(０)〜ｓ'(４)の内容が反対の順列となるように並べ換えられてから、ｓ'(１)〜ｓ'(３)の値がＲＧＢ変換部４２に出力される。
【０１６１】
これにより、画素列ＰＧ１のうち左半分の画素についてデブロックフィルタ処理が完了する。
次に、ステップＳ３００，Ｓ３０２，Ｓ３６０〜Ｓ３６８を経て、画素列ＰＧ１のアドレスに基づいて、画素列ＰＧ１について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図１２（ａ）に示すように、画素値ｖ4〜ｖ8がｓ(０)〜ｓ(４)にその順で読み込まれる。
【０１６２】
そして、まず、ステップＳ５３０を経て、ｓ(１)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(１)とｓ(０)との差分の絶対値が定数値Ｃ2以下であれば、ステップＳ５３２を経て、ｓ(１)，ｓ(０)の値に基づいて上式（５）によりフィルタ演算が行われてｓ'(１)が算出される。なお、ｓ(１)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(２)，ｓ(３)についてもデブロックフィルタ処理は行われない。
【０１６３】
次いで、ｓ(２)についてデブロックフィルタ処理が行われた場合には、ステップＳ５３４を経て、ｓ(２)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(２)とｓ(１)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５３６を経て、ｓ(２)，ｓ(０)に基づいて上式（６）によりフィルタ演算が行われてｓ'(２)が算出される。なお、ｓ(２)についてデブロックフィルタ処理を行わないと判定された場合には、ｓ(３)についてもデブロックフィルタ処理は行われない。
【０１６４】
次いで、ｓ(２)についてデブロックフィルタ処理が行われた場合には、ステップＳ５３８を経て、ｓ(３)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、ｓ(３)とｓ(２)との差分の絶対値が定数値Ｃ1以下であれば、ステップＳ５４０を経て、ｓ(３)，ｓ(０)に基づいて上式（７）によりフィルタ演算が行われてｓ'(３)が算出される。
【０１６５】
そして、ステップＳ３１６，Ｓ３１８を経て、画素列ＰＧ１の画素のうち右半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、ｓ'(１)〜ｓ'(３)の値がＲＧＢ変換部４２に出力される。
これにより、画素列ＰＧ１のうち右半分の画素についてデブロックフィルタ処理が完了する。
【０１６６】
本実施の形態に係るデブロックフィルタ処理によれば、上記第１の実施の形態では、図１７（ａ）に示すように各画素値ｖ1〜ｖ8が補正されるところ、図１７（ｂ）に示すように補正される。本実施の形態に係るデブロックフィルタ処理は、デリンギングフィルタ処理を併用しない場合には、上記第２の実施の形態に係るデブロックフィルタ処理よりも高画質な画像が得られるが、デリンギングフィルタ処理を併用した場合には、上記第２の実施の形態に係るデブロックフィルタ処理の方が高画質な画像が得られる。したがって、デリンギングフィルタ処理の有無に応じてこれらを選択するのが好ましい。
【０１６７】
このようにして、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、画素値ｖ4〜ｖ7をそれぞれｓ(０)〜ｓ(３)に読み込んで、フィルタ後の各画素の値ｖ5'〜ｖ7'を上式（５）〜（７）のフィルタ演算式により算出し、画素値ｖ2〜ｖ5をそれぞれｓ(３)〜ｓ(０)に読み込んで、フィルタ後の各画素の値ｖ2'〜ｖ4'を上式（５）〜（７）のフィルタ演算式により算出するようになっている。
【０１６８】
これにより、６つの画素についてデブロックフィルタ処理を行うのに３つのフィルタ演算式を用意しておけばよいので、デブロックフィルタ処理をさらに簡素化することができる。
上記第３の実施の形態において、ＭＰＥＧ形式の動画データは、発明２１、２９または３７の圧縮画像データに対応している。
【０１６９】
なお、上記第１の実施の形態において、デリンギングフィルタ処理は、対象画素と８つの隣接画素との値に基づいてフィルタ演算を行うように構成したが、これに限らず、図１８に示すように、対象画素と４つの隣接画素との値に基づいてフィルタ演算を行うように構成してもよい。図１８は、デリンギングフィルタ処理の原理を説明するための図である。
【０１７０】
図１８において、デリンギングフィルタ処理の対象となる対象画素の値をｖ0とし、対象画素と隣接する隣接画素の値を、対象画素からみて上、左、右、下の順にｖ2，ｖ4，ｖ5，ｖ7とする。
この場合に、対象画素についてデリンギングフィルタ処理後の値ｖ0'は、下式（30）のフィルタ演算式により算出する。
Ｖ＝(ｖ2＋ｖ4＋ｖ5＋ｖ7)／４                                  …（31）
ｖ0'＝(ｖ0＋Ｖ）／２                                          …（32）
ただし、エッジが検出された場合にはｖi（ｉ＝２，４，５，７）をｖ0に置き換える。ｖiをｖ0に置き換える趣旨は、エッジが検出された場合にはデブロックフィルタ処理を行わないこととする趣旨と同様である。図１８の例では、ｖ7がｖ0に置き換えられる。
【０１７１】
これにより、隣接画素の平均値を算出するときの除数が２の整数倍であるので、ビットシフトにより演算を行うことができる。また、隣接画素のすべての値を用いないので、処理負荷を低減することもできる。したがって、デリンギングフィルタ処理をさらに簡素化することができる。
なお、隣接画素として上下左右の４つの画素を選択したが、これに限らず、例えば、左上、右上、左下、右下の４つの画素など、隣接画素であればどのような組み合わせで選択してもよい。また、ビットシフトにより演算を行うことにより処理負荷の低減を図る観点からは、フィルタ演算に用いる隣接画素は、２つまたは１つであってもよい。
【０１７２】
この場合において、ＭＰＥＧ形式の動画データは、発明２３、３１または３９の圧縮画像データに対応している。
また、上記第１の実施の形態において、図４、図５、図６および図８のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部４０のハードウェアによる処理で行う場合について説明したが、これに限らず、ＣＰＵ３０がこれらの処理を実行するようにしてもよく、この場合、上記第１の実施の形態のように、ＲＯＭ３２にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ３４に読み込んで実行するようにしてもよい。
【０１７３】
また、上記第２の実施の形態において、図９ないし図１１のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部４０のハードウェアによる処理で行う場合について説明したが、これに限らず、ＣＰＵ３０がこれらの処理を実行するようにしてもよく、この場合、上記第２の実施の形態のように、ＲＯＭ３２にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ３４に読み込んで実行するようにしてもよい。
【０１７４】
また、上記第３の実施の形態において、図１４ないし図１６のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部４０のハードウェアによる処理で行う場合について説明したが、これに限らず、ＣＰＵ３０がこれらの処理を実行するようにしてもよく、この場合、上記第３の実施の形態のように、ＲＯＭ３２にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ３４に読み込んで実行するようにしてもよい。
【０１７５】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【０１７６】
また、上記第１、第２および第３の実施の形態においては、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図１に示すように、コンピュータ１００において、マルチタスクで動作するＯＳにより、ＭＰＥＧ形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対して、デブロックフィルタ処理およびデリンギングフィルタ処理を行う場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。例えば、ＪＰＥＧ形式で圧縮された画像データに基づいて画像を表示する場合や、その他離散コサイン変換処理および量子化変換処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいてブロック単位で画像を展開する場合に適用することができる。
【０１７７】
【発明の効果】
以上説明したように、発明１ないし１７の画像処理装置によれば、一の画素についてのフィルタ演算を行うにあたって、多数の画素の平均値を用いず、２つの画素の値のみを用いるので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【０１７８】
さらに、発明３の画像処理装置によれば、一の画素についてのフィルタ演算を行うにあたって、その一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とを用いるので、効果的なフィルタ効果をある程度実現することができるという効果も得られる。
さらに、発明４の画像処理装置によれば、一の画素についてのフィルタ演算を行うにあたって、その一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とを用いた加減算およびビットシフト（除数が２の整数倍となる除算）により演算を行うので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるのに加え、発明３の画像処理装置に比して、さらに効果的なフィルタ効果を実現することができるという効果も得られる。
【０１７９】
さらに、発明５ないし８の画像処理装置によれば、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値を超えていれば、フィルタ演算が行われない。したがって、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるのに加え、従来に比して、当該フィルタ処理を比較的高速化することができるという効果も得られる。
【０１８０】
さらに、発明６の画像処理装置によれば、ブロック間の輝度の平均値が異なるという特性を考慮したフィルタ処理を行うことができるので、効果的なフィルタ効果をある程度実現することができるという効果も得られる。
さらに、発明７の画像処理装置によれば、ブロック間の輝度の平均値が異なるという特性を考慮したフィルタ処理を行うことができるので、発明６の画像処理装置に比して、さらに効果的なフィルタ効果を実現することができるという効果も得られる。
【０１８１】
さらに、発明８の画像処理装置によれば、画素についてフィルタ演算を行うか否かの判定回数を低減することができるので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに高速化することができるという効果も得られる。
さらに、発明９の画像処理装置によれば、画素列の各画素についてフィルタ処理を行うに必要な画素データを作業用記憶手段にまとめて読み込み一括で処理するので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的高速化することができるという効果も得られる。
【０１８２】
さらに、発明１０の画像処理装置によれば、６つの画素についてフィルタ処理を行うのに３つのフィルタ演算式を用意しておけばよいので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるという効果も得られる。
さらに、発明１１の画像処理装置によれば、６つの画素についてフィルタ処理を行うのに３つのフィルタ演算式を用意しておけばよいので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるという効果も得られる。
【０１８３】
さらに、発明１２の画像処理装置によれば、ブロック内の水平方向の画素列および垂直方向の画素列の両方に対してフィルタ処理を行うので、効果的なフィルタ効果をある程度実現することができるという効果も得られる。
さらに、発明１３ないし１５の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、各隣接画素と対象画素との差分値が閾値を超えている否かにかかわらず、隣接画素の平均値を算出するときの除数が一定となり、その除数が２の整数倍であればビットシフトにより演算を行うことができる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果も得られる。
【０１８４】
さらに、発明１４または１５の画像処理装置によれば、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。したがって、画像復号化時においてモスキートノイズを低減するフィルタ処理をさらに簡素化することができるという効果も得られる。
さらに、発明１５の画像処理装置によれば、効果的なフィルタ効果をある程度実現することができるという効果も得られる。
【０１８５】
さらに、発明１６の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、隣接画素の平均値を算出するときの除数が２の整数倍であるので、ビットシフトにより演算を行うことができる。また、隣接画素のすべての値を用いないので、処理負荷を低減することもできる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果も得られる。
【０１８６】
さらに、発明１７の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、除算してから加算を行うので、従来に比して、画像復号化時におけるモスキートノイズを低減するフィルタ処理において演算のために占有するメモリ容量を比較的低減することができるという効果も得られる。
【０１８７】
さらに、発明１８の画像処理装置によれば、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値を超えていれば、フィルタ演算が行われない。したがって、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるのに加え、当該フィルタ処理を比較的高速化することができるという効果が得られる。
【０１８８】
さらに、発明１９の画像処理装置によれば、画素列の各画素についてフィルタ処理を行うに必要な画素データを作業用記憶手段にまとめて読み込み一括で処理するので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的高速化することができるという効果が得られる。
【０１８９】
さらに、発明２０の画像処理装置によれば、６つの画素についてフィルタ処理を行うのに３つのフィルタ演算式を用意しておけばよいので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
さらに、発明２１の画像処理装置によれば、６つの画素についてフィルタ処理を行うのに３つのフィルタ演算式を用意しておけばよいので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【０１９０】
さらに、発明２２の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、各隣接画素と対象画素との差分値が閾値を超えている否かにかかわらず、隣接画素の平均値を算出するときの除数が一定となり、その除数が２の整数倍であればビットシフトにより演算を行うことができる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【０１９１】
さらに、発明２３の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、隣接画素の平均値を算出するときの除数が２の整数倍であるので、ビットシフトにより演算を行うことができる。また、隣接画素のすべての値を用いないので、処理負荷を低減することもできる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【０１９２】
さらに、発明２４の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、除算してから加算を行うので、従来に比して、画像復号化時におけるモスキートノイズを低減するフィルタ処理において演算のために占有するメモリ容量を比較的低減することができるという効果が得られる。
【０１９３】
一方、発明２５の画像処理プログラムによれば、発明１の画像処理装置と同等の効果が得られる。
さらに、発明２６の画像処理プログラムによれば、発明１８の画像処理装置と同等の効果が得られる。
さらに、発明２７の画像処理プログラムによれば、発明１９の画像処理装置と同等の効果が得られる。
【０１９４】
さらに、発明２８の画像処理プログラムによれば、発明２０の画像処理装置と同等の効果が得られる。
さらに、発明２９の画像処理プログラムによれば、発明２１の画像処理装置と同等の効果が得られる。
さらに、発明３０の画像処理プログラムによれば、発明２２の画像処理装置と同等の効果が得られる。
【０１９５】
さらに、発明３１の画像処理プログラムによれば、発明２３の画像処理装置と同等の効果が得られる。
さらに、発明３２の画像処理プログラムによれば、発明２４の画像処理装置と同等の効果が得られる。
一方、発明３３の画像処理方法によれば、発明１の画像処理装置と同等の効果が得られる。
【０１９６】
さらに、発明３４の画像処理方法によれば、発明１８の画像処理装置と同等の効果が得られる。
さらに、発明３５の画像処理方法によれば、発明１９の画像処理装置と同等の効果が得られる。
さらに、発明３６の画像処理方法によれば、発明２０の画像処理装置と同等の効果が得られる。
【０１９７】
さらに、発明３７の画像処理方法によれば、発明２１の画像処理装置と同等の効果が得られる。
さらに、発明３８の画像処理方法によれば、発明２２の画像処理装置と同等の効果が得られる。
さらに、発明３９の画像処理方法によれば、発明２３の画像処理装置と同等の効果が得られる。
【０１９８】
さらに、発明４０の画像処理方法によれば、発明２４の画像処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図１】  本発明を適用するコンピュータシステムの構成を示すブロック図である。
【図２】  デブロックフィルタ処理の原理を説明するための図である。
【図３】  画素列ＰＧ１，ＰＧ２の各画素の値を示した棒グラフである。
【図４】  デブロックフィルタ処理を示すフローチャートである。
【図５】  ステップＳ１０２のフィルタ処理を示すフローチャートである。
【図６】  ステップＳ１０４のフィルタ処理を示すフローチャートである。
【図７】  デリンギングフィルタ処理の原理を説明するための図である。
【図８】  デリンギングフィルタ処理を示すフローチャートである。
【図９】  ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【図１０】  ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【図１１】  ステップＳ２４０のフィルタ演算処理を示すフローチャートである。
【図１２】  画素値ｖ1〜ｖ8を並べ換えて演算する場合を示す図である。
【図１３】  画素列ＰＧ１の各画素の値を示した棒グラフである。
【図１４】  ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【図１５】  ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【図１６】  ステップＳ２７０のフィルタ演算処理を示すフローチャートである。
【図１７】  画素列ＰＧ１の各画素の値を示した棒グラフである。
【図１８】  デリンギングフィルタ処理の原理を説明するための図である。
【図１９】  従来の画像処理システムによるフィルタ処理を示す図である。
【図２０】  従来の画像処理システムにおいて参照する画素を示す図である。
【符号の説明】
１００…コンピュータ，３０…ＣＰＵ，３２…ＲＯＭ，３４…ＲＡＭ，３５…ＶＲＡＭ，３６…ＬＣＤＣ，３８…デコーダ、４０…ポストフィルタ部，４２…ＲＧＢ変換部，４４…ＬＣＤ
【図１】
0004145586.tif 000002
【図２】
0004145586.tif 000003
【図３】
0004145586.tif 000004
【図４】
0004145586.tif 000005
【図５】
0004145586.tif 000006
【図６】
0004145586.tif 000007
【図７】
0004145586.tif 000008
【図８】
0004145586.tif 000009
【図９】
0004145586.tif 000010
【図１０】
0004145586.tif 000011
【図１１】
0004145586.tif 000012
【図１２】
0004145586.tif 000013
【図１３】
0004145586.tif 000014
【図１４】
0004145586.tif 000015
【図１５】
0004145586.tif 000016
【図１６】
0004145586.tif 000017
【図１７】
0004145586.tif 000018
【図１８】
0004145586.tif 000019
【図１９】
0004145586.tif 000020
【図２０】
0004145586.tif 000021