説明

画像処理装置及び画像処理プログラム、並びに画像処理方法

【課題】 画像復号化時のフィルタ処理の簡素化および高速化を図るとともに、効果的なフィルタ効果を実現するのに好適な画像処理装置を提供する。
【解決手段】 デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、デブロックフィルタ後の各画素の値v2'〜v7'を、下式のフィルタ演算式により算出する。
2'=(v2+v5)/2+(v2−v5)/4v3'=(v3+v5)/2+(v3−v5)/8v4'=(v4+v5)/2v5'=(v5+v4)/2+(v5−v4)/8v6'=(v6+v4)/2+(v6−v4)/4v7'=v7−(v7−v4)/8

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、JPEG(Joint Photographic coding Experts Group)またはMPEG(Moving Picture Experts Group)等により圧縮された圧縮画像データに基づいてブロック単位で画像を展開する際に、展開画像に対してフィルタ処理を行う装置およびプログラム、並びに方法に係り、特に、画像復号化時のフィルタ処理の簡素化および高速化を図るとともに、効果的なフィルタ効果を実現するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法に関する。
【0002】
【従来の技術】静止画像についての圧縮技術としてJPEG方式が、動画像についての圧縮技術としてMPEG方式が広く知られている。これらの画像圧縮方式においては、8画素×8画素のブロックを処理の1単位として扱い、DCT(Discrete Cosine Transform:離散コサイン変換)処理を行う。DCT処理は、元の画像を空間的な周波数成分に分解する処理であり、空間的に冗長な情報を削減することによって、画像を圧縮することができる。
【0003】ところで、JPEG方式またはMPEG方式を採用する場合、次のような2種類のノイズが発生し、このノイズが画質を劣化させる原因となる。すなわち、JPEG方式およびMPEG方式においては、8画素×8画素のブロックを処理の単位としているので、画像によっては、このブロックの境界がノイズとして見えてしまう。これは、DCT処理が、画像の空間的な周波数成分のうち直流成分に相当するものを除去する処理であり、それを各ブロックごとに行うため、各ブロックの輝度の平均値が異なってしまうことが原因である。この境界部分のノイズは、ブロックノイズと呼ばれている。
【0004】また、JPEG方式およびMPEG方式におけるDCT処理では、画像の空間的な周波数成分のうち高調波成分ほど冗長な情報として除去する結果、周辺との輝度差が大きい部分にノイズが表れる。例えば、自然画の背景に文字が存在する場合等、ブロック内に輝度の大きな変化がある場合、DCT処理を行うと、本来の境界部分を構成するデータから高調波成分が除去され、境界周辺にモヤモヤとしたノイズが表れる。このノイズは、モスキートノイズと呼ばれている。
【0005】ブロックノイズおよびモスキートノイズを軽減するための技術が特開平3-46482号公報に記載されている。同公報に記載されている技術(以下、第1の従来例という。)においては、互いに隣接するブロック間の境界線を挟んで位置する境界画素間の信号レベル差が第1の閾値より大きく、ブロックの各々において境界画素と列上の画素のうちその境界画素に同一ブロック内で隣接する画素との間の信号レベル差がそれぞれ第2の閾値より小さい場合に、フィルタ処理をする。
【0006】このとき、図19において、ブロック境界の両側に位置する画素配置X1およびX0、画素配置X’0およびX’1についての信号レベルS1、S0、S’0、S’1の差分値d0,d1,d2に基づいて、画素配置X0、X’0についての信号レベルを修正する。すなわち新たな信号レベルS0-new、S’0-newは、S0-new=(S1+2・S0+S’0)/4S’0-new=(S0+2・S’0+S’1)/4となる。
【0007】また、ブロックノイズおよびモスキートノイズを軽減する他の方法として、MPEG4についてのVM(Verification Model)や特開平11-98505号公報に記載されている技術(以下、第2の従来例という。)も知られている。第2の従来例においては、図20に示されている垂直方向および水平方向のブロック境界について、デフォルトモードかDCオフセットモードかを判定し、それぞれの処理を行う。
【0008】この場合、ブロックの境界B1,B2を基点としてピクセルセットS0,S1,S2を定義し、モード決定値からブロック歪現象の程度に基づいて選択的にデブロッキングモードをデフォルトモードかDCオフセットモードかに決める。そして、デフォルトモードと決定されると、4ポイントDCTカーネルを用いて各ピクセルに対するブロック境界周辺の周波数情報を求める。モード決定段階でDCオフセットモードと決定されると、DCオフセットモードの実行が必要であるかどうかを判断し、必要であればブロック歪み現象を除去する。
【0009】
【発明が解決しようとする課題】しかしながら、第1の従来例では、境界画素のみを補正しているので、ブロック歪みを除去する処理として充分ではないという欠点がある。また、VMや第2の従来例では、処理が複雑で計算負荷が大きすぎるという欠点がある。また、これらの技術をハードウェアにより実現しようとすると、処理が比較的複雑であるため、回路規模を小型化するのが困難であるという問題がある。小型化を図る観点からは、多少画質を犠牲にしても処理をできるだけ簡略化することが望ましい。また、搭載できるメモリの容量にも一定の制限があるため、フィルタ処理において演算のために占有するメモリ容量もできるだけ最小限に抑えることが望ましい。
【0010】そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、画像復号化時のフィルタ処理の簡素化および高速化を図るとともに、効果的なフィルタ効果を実現するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法を提供することを第1の目的としている。また、画像復号化時のフィルタ処理において演算のために占有するメモリ容量を低減するのに好適な画像処理装置および画像処理プログラム、並びに画像処理方法を提供することを第2の目的としている。
【0011】
【課題を解決するための手段】上記目的を達成するために、本発明に係る請求項1記載の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっている。
【0012】このような構成であれば、圧縮画像データに基づいてブロック単位で画像を展開する際または展開した後には、フィルタ処理により、ブロック内の一の画素についてのフィルタ演算が、その一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行われる。さらに、本発明に係る請求項2記載の画像処理装置は、請求項1記載の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素の値と、同一画素列の画素であって隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっている。
【0013】このような構成であれば、フィルタ処理により、境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算が、その一の画素の値と、同一画素列の画素であって隣接ブロック内のいずれかの画素の値とにのみ基づいて行われる。さらに、本発明に係る請求項3記載の画像処理装置は、請求項1および2のいずれかに記載の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素の値と、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素の値とにのみ基づいて行うようになっている。
【0014】このような構成であれば、フィルタ処理により、境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算が、その一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とにのみ基づいて行われる。さらに、本発明に係る請求項4記載の画像処理装置は、請求項1ないし3のいずれかに記載の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v7'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」、「v4'=(v4+v5)/2」、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」および「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出するようになっている。
【0015】このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値v2'〜v7'が上記各フィルタ演算式により算出される。さらに、本発明に係る請求項5記載の画像処理装置は、請求項1ないし4のいずれかに記載の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっている。
【0016】このような構成であれば、境界線と交差する画素列の画素のうち一の画素から、同一画素列の画素であって隣接ブロック内の境界画素までの各画素の相互の差分値がいずれも閾値を超えていないと、フィルタ処理により、その一の画素についてのフィルタ演算が行われる。ここで、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。
【0017】さらに、本発明に係る請求項6記載の画像処理装置は、請求項5記載の画像処理装置において、前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値よりも大きく設定した。このような構成であれば、境界画素と隣接画素との差分値を比較するときは、境界画素と、隣接画素以外の画素との差分値を比較するときの閾値よりも大きい閾値に基づいて行われる。境界画素と隣接画素とは、それぞれ異なるブロックの境界を構成し、輝度の値が大きく異なることがあるため、それらを比較するときの閾値を、他の画素を比較するときの閾値よりも大きく設定した方が、フィルタ処理を比較的確実に行うことができる。
【0018】さらに、本発明に係る請求項7記載の画像処理装置は、請求項5および6のいずれかに記載の画像処理装置において、前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、画素の値の最大値を「2n−1」(n≧4)として「2n-3」に相当する値またはその近似値に設定し、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値を、「2n-4」に相当する値またはその近似値に設定した。
【0019】このような構成であれば、境界画素と隣接画素との差分値を比較するときは、画素の値の最大値を「2n−1」として「2n-3」に相当する値またはその近似値を閾値とし、これに基づいて行われる。ここで、閾値は、「2n-3」に相当する値またはその近似値よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「2n-3」に相当する値またはその近似値よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できない。
【0020】また、境界画素と、隣接画素以外の画素との差分値を比較するときは、画素の値の最大値を「2n−1」として「2n-4」に相当する値またはその近似値を閾値とし、これに基づいて行われる。ここで、閾値は、「2n-4」に相当する値またはその近似値よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「2n-4」に相当する値またはその近似値よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できない。
【0021】さらに、本発明に係る請求項8記載の画像処理装置は、請求項5ないし7のいずれかに記載の画像処理装置において、前記フィルタ処理は、画素について前記フィルタ演算を行うか否かの判定を、前記境界画素と隣接する隣接画素から順次前記境界線より遠ざかる方向に行い、画素について前記フィルタ演算を行わないと判定したときは、当該画素およびこれよりも後段の画素については前記フィルタ演算を行わないようになっている。
【0022】このような構成であれば、画素についてフィルタ演算を行うか否かの判定が、境界画素と隣接する隣接画素から順次境界線より遠ざかる方向に行われる。そして、その判定において、画素についてフィルタ演算を行わないと判定されると、その画素およびこれよりも後段の画素についてはフィルタ演算が行われない。本来、一の画素についてフィルタ演算を行うか否かの判定は、その一の画素から境界画素までの各画素の相互の差分値が閾値を超えたか否かを判定しなければならない。例えば、判定の対象となる判定対象画素から境界画素までの間に4個の画素(判定対象画素および境界画素を含む)が存在する場合は、3回の判定を行う必要がある。しかし、上記の順序で判定を行っていけば、判定対象画素と境界画素との判定以外のものについては、前段の画素についての判定で既に行われているので、後段のその画素については判定を省略することができる。したがって、判定対象画素のうち境界画素より最も遠いものから境界画素までの間に4個の画素が存在する場合は、通常ではその画素列全体として3!回の判定を要するところ最大3回の判定ですむ。
【0023】さらに、本発明に係る請求項9記載の画像処理装置は、請求項1ないし8のいずれかに記載の画像処理装置において、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっている。
【0024】このような構成であれば、フィルタ処理により、画素列のうち一の画素から境界画素までの全画素データが、画像記憶手段から作業用記憶手段にまとめて読み込まれ、作業用記憶手段の画素データに基づいてフィルタ演算が行われる。ここで、作業用記憶手段は、画素データをあらゆる手段でかつあらゆる時期に記憶するものであり、画素データをあらかじめ記憶してあるものであってもよいし、画素データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によって画素データを記憶するようになっていてもよい。このことは、画像記憶手段に展開画像を格納する場合についても同じである。以下、請求項19記載の画像処理装置、請求項27記載の画像処理プログラム、および請求項35記載の画像処理方法において同じである。
【0025】さらに、本発明に係る請求項10記載の画像処理装置は、請求項1ないし9のいずれかに記載の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」および「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3およびv2として前記各フィルタ演算式により算出するようになっている。
【0026】このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値v2'〜v4'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値v5'〜v7'が、v4〜v7をそれぞれv5、v4、v3およびv2として上記各フィルタ演算式により算出される。さらに、本発明に係る請求項11記載の画像処理装置は、請求項1ないし9のいずれかに記載の画像処理装置において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」および「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5およびv4として前記各フィルタ演算式により算出するようになっている。
【0027】このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値v5'〜v7'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値v2'〜v4'が、v2〜v5をそれぞれv7、v6、v5およびv4として上記各フィルタ演算式により算出される。さらに、本発明に係る請求項12記載の画像処理装置は、請求項1ないし11のいずれかに記載の画像処理装置において、前記フィルタ処理は、前記ブロック内の水平方向の画素列および垂直方向の画素列の一方に対して前記フィルタ演算を行った後、他方に対して前記フィルタ演算を行うようになっている。
【0028】このような構成であれば、フィルタ処理により、ブロック内の水平方向の画素列および垂直方向の画素列の一方に対してフィルタ演算が行われた後、他方に対してフィルタ演算が行われる。さらに、本発明に係る請求項13記載の画像処理装置は、請求項1ないし12のいずれかに記載の画像処理装置において、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっている。
【0029】このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と隣接画素の値とに基づいて行われる。そして、フィルタ演算では、隣接画素のうち一の画素と対象画素との差分値が閾値を超えていると、その一の画素の値に代えて対象画素の値が用いられる。さらに、本発明に係る請求項14記載の画像処理装置は、請求項13記載の画像処理装置において、前記フィルタ処理は、前記閾値として定数値を用いるようになっている。
【0030】このような構成であれば、隣接画素のうち一の画素と対象画素との差分値を比較するときは、定数値を閾値とし、これに基づいて行われれる。ここで、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。さらに、本発明に係る請求項15記載の画像処理装置は、請求項14記載の画像処理装置において、前記フィルタ処理は、前記閾値を、画素の値の最大値を「2n−1」(n≧4)として「2n-4」に相当する値またはその近似値に設定した。
【0031】このような構成であれば、隣接画素のうち一の画素と対象画素との差分値を比較するときは、画素の値の最大値を「2n−1」として「2n-4」に相当する値またはその近似値を閾値とし、これに基づいて行われる。ここで、閾値は、「2n-4」に相当する値またはその近似値よりも大きく設定し過ぎると、隣接画素の値を対象画素の値に置き換えるべきなのに置き換えられず、効果的なフィルタ効果が期待できず、逆に、「2n-4」に相当する値またはその近似値よりも小さく設定し過ぎると、隣接画素の値を対象画素の値に置き換えなくてもよいのに置き換えてしまい、効果的なフィルタ効果が期待できない。
【0032】さらに、本発明に係る請求項16記載の画像処理装置は、請求項1ないし15のいずれかに記載の画像処理装置において、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2または1つの隣接画素の値とに基づいて行うようになっている。
【0033】このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と、対象画素と隣接する4、2または1つの隣接画素の値とに基づいて行われる。さらに、本発明に係る請求項17記載の画像処理装置は、請求項1ないし16のいずれかに記載の画像処理装置において、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっている。
【0034】このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値を所定値で除算し、隣接画素の値を所定値で除算し、それら除算結果を加算することにより行われる。さらに、本発明に係る請求項18記載の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっている。
【0035】このような構成であれば、境界線と交差する画素列の画素のうち一の画素から、同一画素列の画素であって隣接ブロック内の境界画素までの各画素の相互の差分値がいずれも閾値を超えていないと、フィルタ処理により、その一の画素についてのフィルタ演算が行われる。ここで、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。
【0036】さらに、本発明に係る請求項19記載の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっている。
【0037】このような構成であれば、フィルタ処理により、画素列のうち一の画素から境界画素までの全画素データが、画像記憶手段から作業用記憶手段にまとめて読み込まれ、作業用記憶手段の画素データに基づいてフィルタ演算が行われる。さらに、本発明に係る請求項20記載の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」および「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3およびv2として前記各フィルタ演算式により算出するようになっている。
【0038】このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値v2'〜v4'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値v5'〜v7'が、v4〜v7をそれぞれv5、v4、v3およびv2として上記各フィルタ演算式により算出される。さらに、本発明に係る請求項21記載の画像処理装置は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」および「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5およびv4として前記各フィルタ演算式により算出するようになっている。
【0039】このような構成であれば、フィルタ処理により、境界線と交差する画素列について、フィルタ後の各画素の値v5'〜v7'が上記各フィルタ演算式により算出される。また、フィルタ後の各画素の値v2'〜v4'が、v2〜v5をそれぞれv7、v6、v5およびv4として上記各フィルタ演算式により算出される。さらに、本発明に係る請求項22記載の画像処理装置は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっている。
【0040】このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と隣接画素の値とに基づいて行われる。そして、フィルタ演算では、隣接画素のうち一の画素と対象画素との差分値が閾値を超えていると、その一の画素の値に代えて対象画素の値が用いられる。さらに、本発明に係る請求項23記載の画像処理装置は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2または1つの隣接画素の値とに基づいて行うようになっている。
【0041】このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値と、対象画素と隣接する4、2または1つの隣接画素の値とに基づいて行われる。さらに、本発明に係る請求項24記載の画像処理装置は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっている。
【0042】このような構成であれば、フィルタ処理により、一の画素についてのフィルタ演算が、対象画素の値を所定値で除算し、隣接画素の値を所定値で除算し、それら除算結果を加算することにより行われる。一方、上記目的を達成するために、本発明に係る請求項25記載の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっている。
【0043】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項1記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項26記載の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっている。
【0044】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項18記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項27記載の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記コンピュータは、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっている。
【0045】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項19記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項28記載の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」および「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3およびv2として前記各フィルタ演算式により算出するようになっている。
【0046】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項20記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項29記載の画像処理プログラムは、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」および「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5およびv4として前記各フィルタ演算式により算出するようになっている。
【0047】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項21記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項30記載の画像処理プログラムは、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっている。
【0048】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項22記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項31記載の画像処理プログラムは、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2または1つの隣接画素の値とに基づいて行うようになっている。
【0049】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項23記載の画像処理装置と同等の作用が得られる。さらに、本発明に係る請求項32記載の画像処理プログラムは、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっている。
【0050】このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項24記載の画像処理装置と同等の作用が得られる。一方、上記目的を達成するために、本発明に係る請求項33記載の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行う。
【0051】さらに、本発明に係る請求項34記載の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いる。
【0052】さらに、本発明に係る請求項35記載の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記展開画像を格納するための画像記憶手段に利用可能に接続し、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段に、前記画素列のうち一の画素から前記境界画素までの全画素データを前記画像記憶手段からまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行う。
【0053】さらに、本発明に係る請求項36記載の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」および「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3およびv2として前記各フィルタ演算式により算出する。
【0054】さらに、本発明に係る請求項37記載の画像処理方法は、離散コサイン変換処理および量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」および「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5およびv4として前記各フィルタ演算式により算出する。
【0055】さらに、本発明に係る請求項38記載の画像処理方法は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いる。
【0056】さらに、本発明に係る請求項39記載の画像処理方法は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2または1つの隣接画素の値とに基づいて行う。
【0057】さらに、本発明に係る請求項40記載の画像処理方法は、離散コサイン変換処理および前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際または展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行う。
【0058】
【発明の実施の形態】以下、本発明の第1の実施の形態を図面を参照しながら説明する。図1ないし図8は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の第1の実施の形態を示す図である。本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図1に示すように、コンピュータ100において、マルチタスクで動作するOS(Operating System)により、MPEG形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対して、ブロックノイズを低減するフィルタ処理およびモスキートノイズを低減するフィルタ処理を行う場合について適用したものである。以下、前者のフィルタ処理をデブロックフィルタ処理といい、後者のフィルタ処理をデリンギングフィルタ処理という。
【0059】まず、本発明を適用するコンピュータシステムの構成を図1を参照しながら説明する。図1は、本発明を適用するコンピュータシステムの構成を示すブロック図である。コンピュータ100は、図1に示すように、制御プログラムに基づいて演算およびシステム全体を制御するCPU30と、所定領域にあらかじめCPU30の制御プログラム等を格納しているROM32と、ROM32等から読み出したデータやCPU30の演算過程で必要な演算結果を格納するためのRAM34と、RAM34の特定領域のデータを画像信号に変換してLCD(Liquid Crystal Display)44に出力するLCDC36と、動画データをデコードするデコーダ38と、RAM34の特定領域のデータを読み出してデブロックフィルタ処理およびデリンギングフィルタ処理を行うポストフィルタ部40と、ポストフィルタ部40からのデータに対して色素変換を行うRGB変換部42と、RGB変換部42からのデータに基づいて表示を行うLCD44とで構成されている。そして、CPU30、ROM32、RAM34、LCDC36およびデコーダ38は、データを転送するための信号線であるバス39で相互にかつデータ授受可能に接続されている。
【0060】RAM34は、特定領域として、LCD44に表示するデータを格納するためのVRAM35を有しており、VRAM35は、CPU30等のバス39に接続された機器とポストフィルタ部40とで独立にアクセスが可能となっている。また、VRAM35は、LCD44の1画面分の画像データを格納可能な領域を少なくとも2つ有し、一方の領域を、デコーダ38が動画データを展開するためのものとし、他方の領域を、ポストフィルタ部40が読み出すためのものとし、それら領域は、所定周期で交互に切り換えて使用される。
【0061】LCDC36は、ポストフィルタ部40およびRGB変換部42を制御することにより、VRAM35のデータを先頭アドレスから所定周期で順次読み出し、読み出したデータを画像信号に変換してLCD44に出力するようになっている。すなわち、ポストフィルタ部40は、LCDC36の制御により、VRAM35からデータを読み出し、読み出したデータに対してデブロックフィルタ処理およびデリンギングフィルタ処理を行ってRGB変換部42に出力し、RGB変換部42は、LCDC36の制御により、ポストフィルタ部40からのデータに対してRGB変換を行ってLCD44に出力する。
【0062】デコーダ38は、所定時間T(例えば、20[ms])ごとに動画データに含まれている画像データを順次デコードするようになっており、具体的には、CPU30からのデコード開始命令により、MPEG形式で圧縮された動画データをRAM34から読み出し、読み出した動画データに基づいて、MPEG形式で画像データをVRAM35にデコードする。VRAM35には、LCD44の一画素の色度合いを示す画素データ(YUVデータ)を単位として画像データが展開される。また、デコーダ38では、MPEG形式による復号化処理のうちIDCT(Inverse Discrete Cosine Transorm:逆離散コサイン変換)処理および動き補償処理を行う。なお、MPEG形式による圧縮処理および復号化処理については、従来の例による。
【0063】次に、ポストフィルタ部40の構成を詳細に説明する。ポストフィルタ部40は、その構成および内部処理をハードウェアにより実現するものであって、17画素分の画素データを格納可能なバッファを有し、VRAM35からバッファに画素データを読み込みながら、読み出した画素データに基づいて所定のブロック(本実施の形態では、水平方向8画素および垂直方向8画素の正方行列からなる64画素)単位で画素を処理するようになっている。具体的には、VRAM35から読み出した画素データに対してデブロックフィルタ処理を行い、デブロックフィルタ処理した画素データに対してデリンギングフィルタ処理を行う。なお、これらフィルタ処理を行う順序は、特に限定されるものでなく、また、両方を行うようにしてもよいし、いずれかを選択的に行うようにしてもよい。選択的に行う場合は、ソフトウェア若しくはハードウェアによる設定、または画像の再生速度、質若しくはデータ容量に基づく動的な設定により選択を行うことができる。
【0064】本発明に係るデブロックフィルタ処理の原理を図2および図3を参照しながら詳細に説明する。図2R>2および図3は、デブロックフィルタ処理の原理を説明するための図である。図2において、互いに隣接するブロック間の境界線B1と直交する画素列PG1については、境界線B1を挟んで図面左側の画素の値を、境界線B1から近い順にv4、v3、v2、v1とし、境界線B1を挟んで図面右側の画素の値を、境界線B1から近い順にv5、v6、v7、v8とする。また、同様に、互いに隣接するブロック間の境界線B2と直交する画素列PG2については、境界線B2を挟んで図面上側の画素の値を、境界線B2から近い順にv4、v3、v2、v1とし、境界線B2を挟んで図面下側の画素の値を、境界線B2から近い順にv5、v6、v7、v8とする。
【0065】この場合に、画素列PG1,PG2について、デブロックフィルタ処理後の各画素の値v1'〜v8'は、下式(1)〜(8)のフィルタ演算式により算出する。
1'=v1 …(1)
2'=(v2+v5)/2+(v2−v5)/4 …(2)
3'=(v3+v5)/2+(v3−v5)/8 …(3)
4'=(v4+v5)/2 …(4)
5'=(v5+v4)/2+(v5−v4)/8 …(5)
6'=(v6+v4)/2+(v6−v4)/4 …(6)
7'=v7−(v7−v4)/8 …(7)
8'=v8 …(8)
上式(1)〜(8)のフィルタ演算式は、次のように導出される。図3は、画素列PG1,PG2の各画素の値を示した棒グラフである。
【0066】互いに隣接するブロック間A,Bでは、図3R>3(a)に示すように、圧縮時のDCT処理により画像の空間的な周波数成分のうち直流成分に相当するものが除去されることから、輝度の平均値が異なることによる段差が発生している。この段差がブロックノイズとなる。そこで、ブロックノイズを低減するために、ブロックA,Bの画像を滑らかに接続する場合を考える。ブロックA内の4画素の平均値VA、およびブロックB内の4画素の平均値VBは、下式(9),(10)により算出することができる。
A=(v1+v2+v3+v4)/4 …(9)
B=(v5+v6+v7+v8)/4 …(10)
各画素の値viの平均値VA,VBからのずれ量をδviとすると、各画素の値viは、下式(11),(12)により表すことができる。
i=VA+δvi (i=1〜4) …(11)
i=VB+δvi (i=5〜8) …(12)
さて、ブロックA,Bの画像を滑らかに接続するためには、平均値VA,VBの差を「0」にすればよく、図3(b)に示すように、階段状に各画素の値viを補正してやればよい。各階段の段差Δは、 Δ=(VB−VA)/8 …(13)
なので、例えば、画素の値v5の補正後の値v5'は、下式(14)により算出することができる。
5'=(VB+VA)/2+Δ+δv5 =(5VB+3VA)/8+δv5 ={5(v5−δv5)+3(v4−δv4)}/8+δv5 ={5v5+3v4+3(δv5−δv4)}/8 …(14)
ここで、正確な値を算出するためには、上式(14)に従わなければならないが、上式(14)において、(δv5−δv4)が小さいと仮定して省略し、下式(15)の近似式を得る。
5'=(5v5+3v4)/8 …(15)
また、ブロックB内の他の画素についても同様に、補正後の値v6'〜v8'は、下式(16)〜(18)により算出することができる。
6'=(VB+VA)/2+2Δ+δv6 ={6v6+2v4+2(δv6−δv4)}/8 …(16)
7'=(VB+VA)/2+3Δ+δv7 ={7v7+v4+(δv7−δv4)}/8 …(17)
8'=(VB+VA)/2+4Δ+δv8 =v8 …(18)
これにより、下式(19),(20)の近似式を得る。
6'=(3v6+v4)/4 …(19)
7'=(7v7+v4)/8 …(20)
また、ブロックA内の画素については、参照する画素の値がv5となる点で異なる以外は同様であり、補正後の値v1'〜v4'は、下式(21)〜(24)により算出することができる。
1'=(VB+VA)/2−3Δ+δv1 ={7v1+v5+(δv1−δv5)}/8 …(21)
2'=(VB+VA)/2−2Δ+δv2 ={6v2+2v5+2(δv2−δv5)}/8 …(22)
3'=(VB+VA)/2−Δ+δv3 ={5v3+3v5+(δv3−δv5)}/8 …(23)
4'=(VB+VA)/2+δv4 =(v4+v5+2δv4)/2 …(24)
これにより、下式(25)〜(28)の近似式を得る。
1'=v1 …(25)
2'=(3v2+v5)/4 …(26)
3'=(5v3+3v5)/8 …(27)
4'=(v4+v5)/2 …(28)
また、実際の演算では、除算演算よりもビットシフトの方が処理を高速化することができるため、上式(25)〜(28),(15),(19),(20),(18)を上式(1)〜(8)に変形して用いる。このデブロックフィルタ処理を水平方向の画素列および垂直方向の画素列に対してそれぞれ行う。演算量としては、1画素に対して、加算および減算がそれぞれ2回、ビットシフトが4回ですむ。ビットシフトは、ハードウェア化する際にはさほど負荷にならない。従来のポストフィルタでは、1画素について最大7×7画素分の重み付け平均をとっていたので、それと比べて大幅に演算量を減らすことができる。
【0067】本発明に係るデブロックフィルタ処理は、図4のフローチャートに示す処理により実現することができる。図4は、デブロックフィルタ処理を示すフローチャートである。デブロックフィルタ処理は、ポストフィルタ部40において実行されると、図4に示すように、まず、ステップS100に移行するようになっている。
【0068】ステップS100では、先頭ブロックの開始アドレスをLCDC36から取得し、ステップS102に移行して、ブロックの右上部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップS104に移行して、ブロックの左上部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップS106に移行して、ブロックの右下部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップS108に移行して、ブロックの左下部分の領域に属する画素列についてデブロックフィルタ処理を行い、ステップS110に移行する。
【0069】ステップS110では、1面分の画像を構成するすべてのブロックについてステップS102からS108までの処理が終了したか否かを判定し、すべてのブロックについて処理が終了したと判定したとき(Yes)は、一連の処理を終了するが、そうでないと判定したとき(No)は、ステップS112に移行して、次のブロックの開始アドレスをLCDC36から取得し、ステップS102に移行する。
【0070】次に、上記ステップS102のフィルタ処理を図5を参照しながら詳細に説明する。図5は、ステップS102のフィルタ処理を示すフローチャートである。上記ステップS102のフィルタ処理は、ブロックの右上部分の領域に属する画素列についてのデブロックフィルタ処理であり、上記ステップS102において実行されると、図5に示すように、まず、ステップS200に移行する。
【0071】ステップS200では、ステップS100,S112で取得した開始アドレスに基づいて、ブロックの右上部分の領域に属する画素列のうち先頭のもののアドレスを算出し、ステップS202に移行して、算出した画素列のアドレスに基づいて、デブロックフィルタ処理の対象となる画素列について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データをまとめてバッファに読み込み、ステップS204に移行する。例えば、デブロックフィルタ処理の対象となる画素列が上から3段目である場合は、ブロック内の右上の画素から左に連続する4つの画素、およびその4つの画素からなる画素列の下2段にある8つの画素、上側に隣接するブロック内の右下の画素から左に連続する4つの画素、並びに右側に隣接するブロック内の左上の画素から数えて2つ下にある画素からなる合計17個の画素についての画素データを読み込む。
【0072】次いで、ステップS204,S208,S212では、各画素についてデブロックフィルタ処理を行うか否かを判定する。各画素についてデブロックフィルタ処理を行うか否かは、隣接画素との差分値に基づいて判定する。本発明に係るデブロックフィルタ処理は、隣接するブロックの境界画素の値に基づいて行うが、ブロック境界までの間に大きなエッジが存在すると、補正後に輪郭のボケやかげが発生する。これを防止するために、ブロック境界までの間に大きなデータの差がないことを調べる。もし段差がある場合には、その画素についてはデブロックフィルタ処理は行わない。この判定は水平方向および垂直方向それぞれについて行う。
【0073】ステップS204では、v4とv5との差分の絶対値が定数値C2よりも大きいか否かを判定し、v4とv5との差分の絶対値が定数値C2以下であると判定したとき(No)は、ステップS206に移行する。ここで、定数値C2は、画素の値の最大値を「255」として「32」に設定する。その理由としては、定数値C2は、「32」よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「32」よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できないからである。
【0074】ステップS206では、v4,v5に基づいて上式(4)によりフィルタ演算を行ってv4'を算出し、ステップS208に移行して、v3とv4との差分の絶対値が定数値C1よりも大きいか否かを判定し、v3とv4との差分の絶対値が定数値C1以下であると判定したとき(Yes)は、ステップS210に移行する。ここで、定数値C1は、画素の値の最大値を「255」として「16」に設定する。その理由としては、定数値C1は、「16」よりも大きく設定し過ぎると、フィルタ処理を行わなくてもよいのに行ってしまい、処理負荷が増加し、フィルタ処理の高速化を図ることができなくなり、逆に、「16」よりも小さく設定し過ぎると、フィルタ処理を行うべきなのに行われず、効果的なフィルタ効果が期待できないからである。
【0075】ステップS210では、v3,v5に基づいて上式(3)によりフィルタ演算を行ってv3'を算出し、ステップS212に移行して、v2とv3との差分の絶対値が定数値C1よりも大きいか否かを判定し、v2とv3との差分の絶対値が定数値C1以下であると判定したとき(Yes)は、ステップS214に移行して、v2,v5に基づいて上式(2)によりフィルタ演算を行ってv2'を算出し、ステップS216に移行する。
【0076】ステップS216では、垂直方向の画素列についてのデブロックフィルタ処理を行うが、このデブロックフィルタ処理は、後段で詳述するように、ステップS306〜S314と同様の要領で演算を行うことができる。次いで、ステップS218に移行して、バッファの画素データのうちブロックの右上部分の領域に属する画素に係るものをRGB変換部42に出力し、ステップS220に移行して、ブロックの右上部分の領域に属するすべての画素列についてステップS204からS218までの処理が終了したか否かを判定し、すべての画素列について処理が終了したと判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させるが、そうでないと判定したとき(No)は、ステップS222に移行して、ステップS100,S112で取得した開始アドレスに基づいて、ブロックの右上部分の領域に属する画素列のうち次のもののアドレスを算出し、ステップS202に移行する。
【0077】一方、ステップS204でv4とv5との差分の絶対値が定数値C2よりも大きいと判定したとき(Yes)、ステップS208でv3とv4との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)、およびステップS212でv2とv3との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)はいずれも、ステップS216に移行する。
【0078】なお、上記ステップS106のフィルタ処理のうち水平方向の処理は、上記ステップS204〜S214と同様であり、上記ステップS104のフィルタ処理のうち垂直方向の処理は、上記ステップS216と同様である。次に、上記ステップS104のフィルタ処理を図6を参照しながら詳細に説明する。図6は、ステップS104のフィルタ処理を示すフローチャートである。
【0079】上記ステップS104のフィルタ処理は、ブロックの左上部分の領域に属する画素列についてのデブロックフィルタ処理であり、上記ステップS104において実行されると、図6に示すように、まず、ステップS300に移行する。ステップS300では、ステップS100,S112で取得した開始アドレスに基づいて、ブロックの左上部分の領域に属する画素列のうち先頭のもののアドレスを算出し、ステップS302に移行して、算出した画素列のアドレスに基づいて、デブロックフィルタ処理の対象となる画素列について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データをバッファに読み込み、ステップS304に移行する。
【0080】ステップS304では、v5とv4との差分の絶対値が定数値C2よりも大きいか否かを判定し、v5とv4との差分の絶対値が定数値C2以下であると判定したとき(No)は、ステップS306に移行して、v5,v4に基づいて上式(5)によりフィルタ演算を行ってv5'を算出し、ステップS308に移行して、v6とv5との差分の絶対値が定数値C1よりも大きいか否かを判定し、v6とv5との差分の絶対値が定数値C1以下であると判定したとき(Yes)は、ステップS310に移行する。
【0081】ステップS310では、v6,v4に基づいて上式(6)によりフィルタ演算を行ってv6'を算出し、ステップS312に移行して、v7とv6との差分の絶対値が定数値C1よりも大きいか否かを判定し、v7とv6との差分の絶対値が定数値C1以下であると判定したとき(Yes)は、ステップS314に移行して、v7,v4に基づいて上式(7)によりフィルタ演算を行ってv7'を算出し、ステップS316に移行する。
【0082】ステップS316では、垂直方向の画素列についてのデブロックフィルタ処理を行うが、このデブロックフィルタ処理は、上記ステップS306〜S314と同様の要領で演算を行うことができる。次いで、ステップS318に移行して、バッファの画素データのうちブロックの左上部分の領域に属する画素に係るものをRGB変換部42に出力し、ステップS320に移行して、ブロックの左上部分の領域に属するすべての画素列についてステップS304からS318までの処理が終了したか否かを判定し、すべての画素列について処理が終了したと判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させるが、そうでないと判定したとき(No)は、ステップS322に移行して、ステップS100,S112で取得した開始アドレスに基づいて、ブロックの左上部分の領域に属する画素列のうち次のもののアドレスを算出し、ステップS302に移行する。
【0083】一方、ステップS304でv5とv4との差分の絶対値が定数値C2よりも大きいと判定したとき(Yes)、ステップS308でv6とv5との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)、およびステップS312でv7とv6との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)はいずれも、ステップS316に移行する。
【0084】なお、上記ステップS108のフィルタ処理のうち水平方向の処理は、上記ステップS304〜S314と同様であり、上記ステップS106,S108のフィルタ処理のうち垂直方向の処理は、上記ステップS204〜S214と同様の要領で演算を行うことができる。本発明に係るデリンギングフィルタ処理の原理を図7を参照しながら詳細に説明する。図7は、デリンギングフィルタ処理の原理を説明するための図である。
【0085】図7において、デリンギングフィルタ処理の対象となる対象画素の値をv0とし、対象画素と隣接する隣接画素の値を、対象画素からみて左上、上、右上、左、右、左下、下、右下の順にv1〜v8とする。この場合に、対象画素についてデリンギングフィルタ処理後の値v0'は、下式(30)のフィルタ演算式により算出する。
V=(v1+v2+v3+v4+v5+v6+v7+v8)/8 …(29)
0'=(v0+V)/2 …(30)
ただし、エッジが検出された場合にはvi(i=1〜8)をv0に置き換える。viをv0に置き換える趣旨は、エッジが検出された場合にはデブロックフィルタ処理を行わないこととする趣旨と同様である。図7の例では、v7およびv8がそれぞれv0に置き換えられる。
【0086】本発明に係るデリンギングフィルタ処理は、図8のフローチャートに示す処理により実現することができる。図8は、デリンギングフィルタ処理を示すフローチャートである。デリンギングフィルタ処理は、ポストフィルタ部40において実行されると、図8に示すように、まず、ステップS400に移行するようになっている。
【0087】ステップS400では、先頭の対象画素のアドレスをLCDC36から取得し、ステップS402に移行して、取得した対象画素のアドレスに基づいて対象画素および隣接画素の値v0〜v8をバッファに読み込み、ステップS404に移行して、変数Vに「0」を、変数iに「1」を設定し、ステップS406に移行する。
【0088】ステップS406では、vi(vの添字iは変数iの値により特定される)とv0との差分の絶対値が定数値C3よりも大きいか否かを判定し、viとv0との差分の絶対値が定数値C3よりも大きいと判定したとき(Yes)は、ステップS408に移行する。ここで、定数値C3は、画素の値の最大値を「255」として「16」に設定する。その理由としては、定数値C3は、「16」よりも大きく設定し過ぎると、隣接画素の値viを対象画素の値v0に置き換えるべきなのに置き換えられず、効果的なフィルタ効果が期待できず、逆に、「16」よりも小さく設定し過ぎると、隣接画素の値viを対象画素の値v0に置き換えなくてもよいのに置き換えてしまい、効果的なフィルタ効果が期待できないからである。
【0089】ステップS408では、隣接画素の値viを対象画素の値v0に置き換え、ステップS410に移行して、「8」で除算するために隣接画素の値viを3ビット右シフトし、ステップS412に移行して、変数Vの値に隣接画素の値viを加算したものを変数Vの新たな値として設定し、ステップS414に移行して、変数iの値に「1」を加算したものを変数iの新たな値として設定し、ステップS416に移行する。
【0090】ステップS416では、変数iの値が「9」未満であるか否かを判定し、変数iの値が「9」以上であると判定したとき(No)は、ステップS418に移行して、変数Vの値に対象画素の値v0を加算し、その加算値を1ビット右シフトしたものを、対象画素についてデリンギングフィルタ処理後の値v0'として算出し、ステップS420に移行して、算出した値v0'をRGB変換部42に出力し、ステップS422に移行する。
【0091】ステップS422では、1面分の画像を構成するすべての画素についてステップS402からS420までの処理が終了したか否かを判定し、すべての画素について処理が終了したと判定したとき(Yes)は、一連の処理を終了するが、そうでないと判定したとき(No)は、ステップS424に移行して、次の対象画素のアドレスをLCDC36から取得し、ステップS402に移行する。
【0092】一方、ステップS416で、変数iの値が「9」未満であると判定したとき(Yes)は、ステップS406に移行する。一方、ステップS406で、viとv0との差分の絶対値が定数値C3以下であると判定したとき(No)は、ステップS410に移行する。次に、上記第1の実施の形態の動作を説明する。
【0093】初めに、図1における画素列PG1の各画素に対してデブロックフィルタ処理を行う場合を例にとって、デブロックフィルタ処理を行う場合を説明する。画素列PG1の各画素に対してデブロックフィルタ処理を行う場合は、まず、ステップS100,S102,S200,S202を経て、ブロックの右上部分の領域に属する画素列のうち画素列PG1のアドレスが算出され、算出された画素列PG1のアドレスに基づいて、画素列PG1について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれる。ここで、画素列PG1が上から3段目であるので、ブロック内の右上の画素から左に連続する4つの画素、およびその4つの画素からなる画素列の下2段にある8つの画素、上側に隣接するブロック内の右下の画素から左に連続する4つの画素、並びに右側に隣接するブロック内の左上の画素から数えて2つ下にある画素からなる合計17個の画素についての画素データが読み込まれる。
【0094】そして、まず、ステップS204を経て、画素値v4についてデブロックフィルタ処理を行うか否かが判定される。すなわち、v4とv5との差分の絶対値が定数値C2以下であれば、ステップS206を経て、v4,v5に基づいて上式(4)によりフィルタ演算が行われてv4'が算出される。なお、画素値v4についてデブロックフィルタ処理を行わないと判定された場合には、画素値v2,v3についてもデブロックフィルタ処理は行われない。
【0095】次いで、画素値v4についてデブロックフィルタ処理が行われた場合には、ステップS208を経て、画素値v3についてデブロックフィルタ処理を行うか否かが判定される。すなわち、v3とv4との差分の絶対値が定数値C1以下であれば、ステップS210を経て、v3,v5に基づいて上式(3)によりフィルタ演算が行われてv3'が算出される。なお、画素値v3についてデブロックフィルタ処理を行わないと判定された場合には、画素値v2についてもデブロックフィルタ処理は行われない。
【0096】次いで、画素値v3についてデブロックフィルタ処理が行われた場合には、ステップS212を経て、画素値v2についてデブロックフィルタ処理を行うか否かが判定される。すなわち、v2とv3との差分の絶対値が定数値C1以下であれば、ステップS214を経て、v2,v5に基づいて上式(2)によりフィルタ演算が行われてv2'が算出される。
【0097】そして、ステップS216,S218を経て、画素列PG1の画素のうち左半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、バッファの画素データのうちブロックの右上部分の領域に属する画素に係るものがRGB変換部42に出力される。これにより、画素列PG1のうち左半分の画素についてデブロックフィルタ処理が完了する。
【0098】次に、ステップS100,S104,S300,S302を経て、ブロックの左上部分の領域に属する画素列のうち画素列PG1のアドレスが算出され、算出された画素列PG1のアドレスに基づいて、画素列PG1について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれる。ここで、画素列PG1が上から3段目であるので、ブロック内の左上の画素から右に連続する4つの画素、およびその4つの画素からなる画素列の下2段にある8つの画素、上側に隣接するブロック内の左下の画素から右に連続する4つの画素、並びに左側に隣接するブロック内の右上の画素から数えて2つ下にある画素からなる合計17個の画素についての画素データが読み込まれる。
【0099】そして、まず、ステップS304を経て、画素値v5についてデブロックフィルタ処理を行うか否かが判定される。すなわち、v5とv4との差分の絶対値が定数値C2以下であれば、ステップS306を経て、v5,v4に基づいて上式(5)によりフィルタ演算が行われてv5'が算出される。なお、画素値v5についてデブロックフィルタ処理を行わないと判定された場合には、画素値v6,v7についてもデブロックフィルタ処理は行われない。
【0100】次いで、画素値v5についてデブロックフィルタ処理が行われた場合には、ステップS308を経て、画素値v6についてデブロックフィルタ処理を行うか否かが判定される。すなわち、v6とv5との差分の絶対値が定数値C1以下であれば、ステップS310を経て、v6,v4に基づいて上式(6)によりフィルタ演算が行われてv6'が算出される。なお、画素値v6についてデブロックフィルタ処理を行わないと判定された場合には、画素値v7についてもデブロックフィルタ処理は行われない。
【0101】次いで、画素値v6についてデブロックフィルタ処理が行われた場合には、ステップS312を経て、画素値v7についてデブロックフィルタ処理を行うか否かが判定される。すなわち、v7とv6との差分の絶対値が定数値C1以下であれば、ステップS314を経て、v7,v4に基づいて上式(7)によりフィルタ演算が行われてv7'が算出される。
【0102】そして、ステップS316,S318を経て、画素列PG1の画素のうち右半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、バッファの画素データのうちブロックの左上部分の領域に属する画素に係るものがRGB変換部42に出力される。これにより、画素列PG1のうち右半分の画素についてデブロックフィルタ処理が完了する。
【0103】次に、デリンギングフィルタ処理を行う場合を説明する。デリンギングフィルタ処理を行う場合は、まず、ステップS400〜S404を経て、対象画素のアドレスに基づいて対象画素および隣接画素の値v0〜v8がバッファに読み込まれる。次いで、ステップS406〜S416を繰り返し経て、各隣接画素の値viについて、viとv0との差分の絶対値が定数値C3よりも大きければ、隣接画素の値viが対象画素の値v0に置き換えられ、そうでなければ、隣接画素の値viがそのまま採用され、隣接画素の値viが3ビット右シフトされ、変数Vの値に隣接画素の値viを加算したものが変数Vの新たな値として設定される。すなわち、各隣接画素の値viをそれぞれ「8」で除算し、その除算結果を加算するという演算過程を経て、隣接画素の平均値Vが算出される。
【0104】そして、ステップS418,S420を経て、変数Vの値に対象画素の値v0が加算され、その加算値を1ビット右シフトしたものが、対象画素のフィルタ処理後の値v0'として算出され、算出された値v0'がRGB変換部42に出力される。このようにして、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、デブロックフィルタ後の各画素の値v2'〜v7'を、上式(2)〜(7)のフィルタ演算式により算出するようになっている。
【0105】これにより、一の画素についてのフィルタ演算を行うにあたって、多数の画素の平均値を用いず、2つの画素の値のみを用いるので、従来に比して、デブロックフィルタ処理を比較的簡素化することができる。例えば、本実施の形態のように、デブロックフィルタ処理をハードウェアにより実現する場合には、回路規模を小型化することができるし、デブロックフィルタ処理をソフトウェアにより実現する場合には、プログラムサイズを低減することができる。また、一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とを用いた加減算およびビットシフト(除数が2の整数倍となる除算)により演算を行うので、デブロックフィルタ処理をさらに簡素化することができるのに加え、効果的なフィルタ効果をある程度実現することができる。
【0106】さらに、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列の画素のうち一の画素についてのフィルタ演算を、その一の画素から、同一画素列の画素であって隣接ブロック内の境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値C1,C2を超えていないときに行い、閾値C1,C2として定数値を用いるようになっている。
【0107】これにより、閾値C1,C2が定数値であるので、デブロックフィルタ処理の過程において閾値C1,C2を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値C1,C2を超えていれば、フィルタ演算が行われない。したがって、デブロックフィルタ処理をさらに簡素化することができるのに加え、従来に比して、デブロックフィルタ処理を比較的高速化することができる。
【0108】さらに、本実施の形態では、境界画素と、境界画素と隣接する隣接画素との差分値を比較するときの閾値C2を、境界画素と、隣接画素以外の画素との差分値を比較するときの閾値C1よりも大きく設定した。これにより、ブロック間の輝度の平均値が異なるという特性を考慮したデブロックフィルタ処理を行うことができるので、さらに効果的なフィルタ効果を実現することができる。
【0109】さらに、本実施の形態では、境界画素と、境界画素と隣接する隣接画素との差分値を比較するときの閾値C2を、画素の値の最大値を「255」として「32」に設定し、境界画素と、隣接画素以外の画素との差分値を比較するときの閾値C1を、「16」に設定した。これにより、ブロック間の輝度の平均値が異なるという特性をより考慮したデブロックフィルタ処理を行うことができるので、さらに効果的なフィルタ効果を実現することができる。
【0110】さらに、本実施の形態では、デブロックフィルタ処理は、画素についてフィルタ演算を行うか否かの判定を、境界画素と隣接する隣接画素から順次境界線より遠ざかる方向に行い、画素についてフィルタ演算を行わないと判定したときは、その画素およびこれよりも後段の画素についてはフィルタ演算を行わないようになっている。
【0111】これにより、画素についてフィルタ演算を行うか否かの判定回数を低減することができるので、デブロックフィルタ処理をさらに高速化することができる。さらに、本実施の形態では、ポストフィルタ部40は、17画素分の画素データを格納可能なバッファを有し、デブロックフィルタ処理は、画素列のうち一の画素から境界画素までの全画素データを、VRAM35からバッファにまとめて読み込み、バッファの画素データに基づいてフィルタ演算を行うようになっている。
【0112】これにより、画素列の各画素についてデブロックフィルタ処理を行うに必要な画素データをバッファにまとめて読み込み一括で処理するので、デブロックフィルタ処理をさらに高速化することができる。さらに、本実施の形態では、デブロックフィルタ処理は、ブロック内の水平方向の画素列および垂直方向の画素列の一方に対してフィルタ演算を行った後、他方に対してフィルタ演算を行うようになっている。
【0113】これにより、ブロック内の水平方向の画素列および垂直方向の画素列の両方に対してデブロックフィルタ処理を行うので、さらに効果的なフィルタ効果を実現することができる。さらに、本実施の形態では、デリンギングフィルタ処理は、一の画素についてのフィルタ演算を、その演算の対象となる対象画素の値と、対象画素と隣接する隣接画素の値とに基づいて行い、フィルタ演算では、隣接画素のうち一の画素と対象画素との差分値が閾値C3を超えているときは、その一の画素の値に代えて対象画素の値を用いるようになっている。
【0114】これにより、各隣接画素と対象画素との差分値が閾値C3を超えている否かにかかわらず、隣接画素の平均値を算出するときの除数が一定(「8」)となり、その除数が2の整数倍であるのでビットシフトにより演算を行うことができる。したがって、従来に比して、デリンギングフィルタ処理を比較的簡素化することができる。例えば、本実施の形態のように、デリンギングフィルタ処理をハードウェアにより実現する場合には、回路規模を小型化することができるし、デリンギングフィルタ処理をソフトウェアにより実現する場合には、プログラムサイズを低減することができる。
【0115】さらに、本実施の形態では、デリンギングフィルタ処理は、閾値C3として定数値を用いるようになっている。これにより、閾値C3が定数値であるので、デリンギングフィルタ処理の過程において閾値C3を算出する必要がない。したがって、デリンギングフィルタ処理をさらに簡素化することができる。
【0116】さらに、本実施の形態では、デリンギングフィルタ処理は、閾値C3を、画素の値の最大値を「255」として「16」に設定した。これにより、効果的なフィルタ効果をある程度実現することができる。さらに、本実施の形態では、デリンギングフィルタ処理は、一の画素についてのフィルタ演算を、その演算の対象となる対象画素の値を「8」で除算し、対象画素と隣接する隣接画素の値を「8」で除算し、それら除算結果を加算することにより行うようになっている。
【0117】これにより、除算してから加算を行うので、従来に比して、デリンギングフィルタ処理において演算のために占有するメモリ容量を比較的低減することができる。上記第1の実施の形態において、MPEG形式の動画データは、請求項1、18、19、22、24ないし27、30、32ないし35、38または40記載の圧縮画像データに対応し、VRAM35は、請求項9、19、27または35記載の画像記憶手段に対応し、ポストフィルタ部40のバッファは、請求項9、19、27または35記載の作業用記憶手段に対応している。
【0118】次に、本発明の第2の実施の形態を図面を参照しながら説明する。図9ないし図13は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の第2の実施の形態を示す図である。以下、上記第1の実施の形態と異なる部分についてのみ説明をし、重複する部分については同一の符号を付して説明を省略する。
【0119】本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図1に示すように、コンピュータ100において、マルチタスクで動作するOSにより、MPEG形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対してデブロックフィルタ処理を行う場合について適用したものであり、上記第1の実施の形態と異なるのは、上式(1)〜(4)のフィルタ演算式のみを用いてデブロックフィルタ処理を行う点にある。
【0120】ポストフィルタ部40は、上記ステップS202〜S214の処理に代えて、図9のフローチャートに示す画素値読込処理を、上記ステップS302〜S314の処理に代えて、図10のフローチャートに示す画素値読込処理をそれぞれ実行するようになっている。初めに、ブロックの右上部分の領域についての画素値読込処理を図9を参照しながら詳細に説明する。図9は、ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【0121】ブロックの右上部分の領域についての画素値読込処理は、ポストフィルタ部40において実行されると、図9に示すように、まず、ステップS230に移行するようになっている。なお、以下の説明において、s(0)〜s(4)は、配列型の変数であり、バッファ上に割り当てたものであってもよいし、バッファとは別の領域に確保したものであってもよい。
【0122】ステップS230では、画素値v1をs(0)に読み込み、ステップS232に移行して、画素値v2をs(1)に読み込み、ステップS234に移行して、画素値v3をs(2)に読み込み、ステップS236に移行して、画素値v4をs(3)に読み込み、ステップS238に移行して、画素値v5をs(4)に読み込み、ステップS240に移行する。
【0123】ステップS240では、s(0)〜s(4)の値に基づいて上式(1)〜(4)によりフィルタ演算を行うフィルタ演算処理を実行し、一連の処理を終了して元の処理に復帰させる。次に、ブロックの左上部分の領域についての画素値読込処理を図10を参照しながら詳細に説明する。図10は、ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【0124】ブロックの左上部分の領域についての画素値読込処理は、ポストフィルタ部40において実行されると、図10に示すように、まず、ステップS330に移行するようになっている。ステップS330では、画素値v4をs(4)に読み込み、ステップS332に移行して、画素値v5をs(3)に読み込み、ステップS334に移行して、画素値v6をs(2)に読み込み、ステップS336に移行して、画素値v7をs(1)に読み込み、ステップS338に移行して、画素値v8をs(0)に読み込み、ステップS240に移行する。
【0125】次に、上記ステップS240のフィルタ演算処理を図11を参照しながら詳細に説明する。図11は、ステップS240のフィルタ演算処理を示すフローチャートである。フィルタ演算処理は、上記ステップS240において実行されると、図11に示すように、まず、ステップS500に移行するようになっている。
【0126】ステップS500では、s(3)とs(4)との差分の絶対値が定数値C2よりも大きいか否かを判定し、s(3)とs(4)との差分の絶対値が定数値C2以下であると判定したとき(No)は、ステップS502に移行して、s(3),s(4)の値に基づいて上式(4)によりフィルタ演算を行ってs'(3)を算出し、ステップS504に移行する。
【0127】ステップS504では、s(2)とs(3)との差分の絶対値が定数値C1よりも大きいか否かを判定し、s(2)とs(3)との差分の絶対値が定数値C1以下であると判定したとき(No)は、ステップS506に移行して、s(2),s(4)の値に基づいて上式(3)によりフィルタ演算を行ってs'(2)を算出し、ステップS508に移行する。
【0128】ステップS508では、s(1)とs(2)との差分の絶対値が定数値C1よりも大きいか否かを判定し、s(1)とs(2)との差分の絶対値が定数値C1以下であると判定したとき(No)は、ステップS510に移行して、s(1),s(4)の値に基づいて上式(2)によりフィルタ演算を行ってs'(1)を算出し、一連の処理を終了して元の処理に復帰させる。
【0129】一方、ステップS500でs(3)とs(4)との差分の絶対値が定数値C2よりも大きいと判定したとき(Yes)、ステップS504でs(2)とs(3)との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)、およびステップS508でs(1)とs(2)との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)はいずれも、一連の処理を終了して元の処理に復帰させる。
【0130】次に、上記第2の実施の形態の動作を図12R>2および図13を参照しながら説明する。図12は、画素値v1〜v8を並べ換えて演算する場合を示す図である。図13は、画素列PG1の各画素の値を示した棒グラフである。初めに、図1における画素列PG1の各画素に対してデブロックフィルタ処理を行う場合を例にとって、デブロックフィルタ処理を行う場合を説明する。
【0131】画素列PG1の各画素に対してデブロックフィルタ処理を行う場合は、まず、ステップS200,S202,S230〜S238を経て、画素列PG1のアドレスに基づいて、画素列PG1について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図12(a)に示すように、画素値v1〜v5がs(0)〜s(4)にその順で読み込まれる。
【0132】そして、まず、ステップS500を経て、s(3)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(3)とs(4)との差分の絶対値が定数値C2以下であれば、ステップS502を経て、s(3),s(4)の値に基づいて上式(4)によりフィルタ演算が行われてs'(3)が算出される。なお、s(3)についてデブロックフィルタ処理を行わないと判定された場合には、s(1),s(2)についてもデブロックフィルタ処理は行われない。
【0133】次いで、s(3)についてデブロックフィルタ処理が行われた場合には、ステップS504を経て、s(2)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(2)とs(3)との差分の絶対値が定数値C1以下であれば、ステップS506を経て、s(2),s(4)に基づいて上式(3)によりフィルタ演算が行われてs'(2)が算出される。なお、s(2)についてデブロックフィルタ処理を行わないと判定された場合には、s(1)についてもデブロックフィルタ処理は行われない。
【0134】次いで、s(2)についてデブロックフィルタ処理が行われた場合には、ステップS508を経て、s(1)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(1)とs(2)との差分の絶対値が定数値C1以下であれば、ステップS510を経て、s(1),s(4)に基づいて上式(2)によりフィルタ演算が行われてs'(1)が算出される。
【0135】そして、ステップS216,S218を経て、画素列PG1の画素のうち左半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、s'(1)〜s'(3)の値がRGB変換部42に出力される。これにより、画素列PG1のうち左半分の画素についてデブロックフィルタ処理が完了する。
【0136】次に、ステップS300,S302,S330〜S338を経て、画素列PG1のアドレスに基づいて、画素列PG1について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図12(b)に示すように、画素値v4〜v8がs(4)〜s(0)にその順で読み込まれる。
【0137】そして、まず、ステップS500を経て、s(3)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(3)とs(4)との差分の絶対値が定数値C2以下であれば、ステップS502を経て、s(3),s(4)の値に基づいて上式(4)によりフィルタ演算が行われてs'(3)が算出される。なお、s(3)についてデブロックフィルタ処理を行わないと判定された場合には、s(1),s(2)についてもデブロックフィルタ処理は行われない。
【0138】次いで、s(3)についてデブロックフィルタ処理が行われた場合には、ステップS504を経て、s(2)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(2)とs(3)との差分の絶対値が定数値C1以下であれば、ステップS506を経て、s(2),s(4)に基づいて上式(3)によりフィルタ演算が行われてs'(2)が算出される。なお、s(2)についてデブロックフィルタ処理を行わないと判定された場合には、s(1)についてもデブロックフィルタ処理は行われない。
【0139】次いで、s(2)についてデブロックフィルタ処理が行われた場合には、ステップS508を経て、s(1)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(1)とs(2)との差分の絶対値が定数値C1以下であれば、ステップS510を経て、s(1),s(4)に基づいて上式(2)によりフィルタ演算が行われてs'(1)が算出される。
【0140】そして、ステップS316,S318を経て、画素列PG1の画素のうち右半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、s'(1)〜s'(3)の値がRGB変換部42に出力される。このとき、図12(b)に示すように、s'(0)〜s'(4)の内容が反対の順列となるように並べ換えられてから、s'(1)〜s'(3)の値がRGB変換部42に出力される。
【0141】これにより、画素列PG1のうち右半分の画素についてデブロックフィルタ処理が完了する。本実施の形態に係るデブロックフィルタ処理によれば、上記第1の実施の形態では、図13(a)に示すように各画素値v1〜v8が補正されるところ、図13(b)に示すように補正される。
【0142】このようにして、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、画素値v2〜v5をそれぞれs(1)〜s(4)に読み込んで、フィルタ後の各画素の値v2'〜v4'を上式(2)〜(4)のフィルタ演算式により算出し、画素値v4〜v7をそれぞれs(4)〜s(1)に読み込んで、フィルタ後の各画素の値v5'〜v7'を上式(2)〜(4)のフィルタ演算式により算出するようになっている。
【0143】これにより、6つの画素についてデブロックフィルタ処理を行うのに3つのフィルタ演算式を用意しておけばよいので、デブロックフィルタ処理をさらに簡素化することができる。上記第2の実施の形態において、MPEG形式の動画データは、請求項20、28または36記載の圧縮画像データに対応している。
【0144】次に、本発明の第3の実施の形態を図面を参照しながら説明する。図14ないし図17は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法の第3の実施の形態を示す図である。以下、上記第1の実施の形態と異なる部分についてのみ説明をし、重複する部分については同一の符号を付して説明を省略する。
【0145】本実施の形態は、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図1に示すように、コンピュータ100において、マルチタスクで動作するOSにより、MPEG形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対してデブロックフィルタ処理を行う場合について適用したものであり、上記第1の実施の形態と異なるのは、上式(5)〜(8)のフィルタ演算式のみを用いてデブロックフィルタ処理を行う点にある。
【0146】ポストフィルタ部40は、上記ステップS202〜S214の処理に代えて、図14のフローチャートに示す画素値読込処理を、上記ステップS302〜S314の処理に代えて、図15のフローチャートに示す画素値読込処理をそれぞれ実行するようになっている。初めに、ブロックの右上部分の領域についての画素値読込処理を図14を参照しながら詳細に説明する。図1414は、ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【0147】ブロックの右上部分の領域についての画素値読込処理は、ポストフィルタ部40において実行されると、図14に示すように、まず、ステップS260に移行するようになっている。なお、以下の説明において、s(0)〜s(4)は、配列型の変数であり、バッファ上に割り当てたものであってもよいし、バッファとは別の領域に確保したものであってもよい。
【0148】ステップS260では、画素値v1をs(4)に読み込み、ステップS262に移行して、画素値v2をs(3)に読み込み、ステップS264に移行して、画素値v3をs(2)に読み込み、ステップS266に移行して、画素値v4をs(1)に読み込み、ステップS268に移行して、画素値v5をs(0)に読み込み、ステップS270に移行する。
【0149】ステップS270では、s(0)〜s(4)の値に基づいて上式(5)〜(8)によりフィルタ演算を行うフィルタ演算処理を実行し、一連の処理を終了して元の処理に復帰させる。次に、ブロックの左上部分の領域についての画素値読込処理を図15を参照しながら詳細に説明する。図15は、ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【0150】ブロックの左上部分の領域についての画素値読込処理は、ポストフィルタ部40において実行されると、図15に示すように、まず、ステップS360に移行するようになっている。ステップS360では、画素値v4をs(0)に読み込み、ステップS362に移行して、画素値v5をs(1)に読み込み、ステップS364に移行して、画素値v6をs(2)に読み込み、ステップS366に移行して、画素値v7をs(3)に読み込み、ステップS368に移行して、画素値v8をs(4)に読み込み、ステップS270に移行する。
【0151】次に、上記ステップS270のフィルタ演算処理を図16を参照しながら詳細に説明する。図16は、ステップS270のフィルタ演算処理を示すフローチャートである。フィルタ演算処理は、上記ステップS270において実行されると、図16に示すように、まず、ステップS530に移行するようになっている。
【0152】ステップS530では、s(1)とs(0)との差分の絶対値が定数値C2よりも大きいか否かを判定し、s(1)とs(0)との差分の絶対値が定数値C2以下であると判定したとき(No)は、ステップS532に移行して、s(1),s(0)の値に基づいて上式(5)によりフィルタ演算を行ってs'(1)を算出し、ステップS534に移行する。
【0153】ステップS534では、s(2)とs(1)との差分の絶対値が定数値C1よりも大きいか否かを判定し、s(2)とs(1)との差分の絶対値が定数値C1以下であると判定したとき(No)は、ステップS536に移行して、s(2),s(0)の値に基づいて上式(6)によりフィルタ演算を行ってs'(2)を算出し、ステップS538に移行する。
【0154】ステップS538では、s(3)とs(2)との差分の絶対値が定数値C1よりも大きいか否かを判定し、s(3)とs(2)との差分の絶対値が定数値C1以下であると判定したとき(No)は、ステップS540に移行して、s(3),s(0)の値に基づいて上式(7)によりフィルタ演算を行ってs'(3)を算出し、一連の処理を終了して元の処理に復帰させる。
【0155】一方、ステップS530でs(1)とs(0)との差分の絶対値が定数値C2よりも大きいと判定したとき(Yes)、ステップS534でs(2)とs(1)との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)、およびステップS538でs(3)とs(2)との差分の絶対値が定数値C1よりも大きいと判定したとき(Yes)はいずれも、一連の処理を終了して元の処理に復帰させる。
【0156】次に、上記第3の実施の形態の動作を図17R>7を参照しながら説明する。図17は、画素列PG1の各画素の値を示した棒グラフである。初めに、図1における画素列PG1の各画素に対してデブロックフィルタ処理を行う場合を例にとって、デブロックフィルタ処理を行う場合を説明する。画素列PG1の各画素に対してデブロックフィルタ処理を行う場合は、まず、ステップS200,S202,S260〜S268を経て、画素列PG1のアドレスに基づいて、画素列PG1について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図12(b)に示すように、画素値v1〜v5がs(4)〜s(0)にその順で読み込まれる。
【0157】そして、まず、ステップS530を経て、s(1)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(1)とs(0)との差分の絶対値が定数値C2以下であれば、ステップS532を経て、s(1),s(0)の値に基づいて上式(5)によりフィルタ演算が行われてs'(1)が算出される。なお、s(1)についてデブロックフィルタ処理を行わないと判定された場合には、s(2),s(3)についてもデブロックフィルタ処理は行われない。
【0158】次いで、s(2)についてデブロックフィルタ処理が行われた場合には、ステップS534を経て、s(2)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(2)とs(1)との差分の絶対値が定数値C1以下であれば、ステップS536を経て、s(2),s(0)に基づいて上式(6)によりフィルタ演算が行われてs'(2)が算出される。なお、s(2)についてデブロックフィルタ処理を行わないと判定された場合には、s(3)についてもデブロックフィルタ処理は行われない。
【0159】次いで、s(2)についてデブロックフィルタ処理が行われた場合には、ステップS538を経て、s(3)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(3)とs(2)との差分の絶対値が定数値C1以下であれば、ステップS540を経て、s(3),s(0)に基づいて上式(7)によりフィルタ演算が行われてs'(3)が算出される。
【0160】そして、ステップS216,S218を経て、画素列PG1の画素のうち左半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、s'(1)〜s'(3)の値がRGB変換部42に出力される。このとき、図12(b)に示すように、s'(0)〜s'(4)の内容が反対の順列となるように並べ換えられてから、s'(1)〜s'(3)の値がRGB変換部42に出力される。
【0161】これにより、画素列PG1のうち左半分の画素についてデブロックフィルタ処理が完了する。次に、ステップS300,S302,S360〜S368を経て、画素列PG1のアドレスに基づいて、画素列PG1について、水平方向の演算に必要な画素データおよび垂直方向の演算に必要な画素データがまとめてバッファに読み込まれ、図12(a)に示すように、画素値v4〜v8がs(0)〜s(4)にその順で読み込まれる。
【0162】そして、まず、ステップS530を経て、s(1)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(1)とs(0)との差分の絶対値が定数値C2以下であれば、ステップS532を経て、s(1),s(0)の値に基づいて上式(5)によりフィルタ演算が行われてs'(1)が算出される。なお、s(1)についてデブロックフィルタ処理を行わないと判定された場合には、s(2),s(3)についてもデブロックフィルタ処理は行われない。
【0163】次いで、s(2)についてデブロックフィルタ処理が行われた場合には、ステップS534を経て、s(2)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(2)とs(1)との差分の絶対値が定数値C1以下であれば、ステップS536を経て、s(2),s(0)に基づいて上式(6)によりフィルタ演算が行われてs'(2)が算出される。なお、s(2)についてデブロックフィルタ処理を行わないと判定された場合には、s(3)についてもデブロックフィルタ処理は行われない。
【0164】次いで、s(2)についてデブロックフィルタ処理が行われた場合には、ステップS538を経て、s(3)についてデブロックフィルタ処理を行うか否かが判定される。すなわち、s(3)とs(2)との差分の絶対値が定数値C1以下であれば、ステップS540を経て、s(3),s(0)に基づいて上式(7)によりフィルタ演算が行われてs'(3)が算出される。
【0165】そして、ステップS316,S318を経て、画素列PG1の画素のうち右半分の画素に対して垂直方向にデブロックフィルタ処理が行われ、水平方向および垂直方向の処理が終了すると、s'(1)〜s'(3)の値がRGB変換部42に出力される。これにより、画素列PG1のうち右半分の画素についてデブロックフィルタ処理が完了する。
【0166】本実施の形態に係るデブロックフィルタ処理によれば、上記第1の実施の形態では、図17(a)に示すように各画素値v1〜v8が補正されるところ、図1717(b)に示すように補正される。本実施の形態に係るデブロックフィルタ処理は、デリンギングフィルタ処理を併用しない場合には、上記第2の実施の形態に係るデブロックフィルタ処理よりも高画質な画像が得られるが、デリンギングフィルタ処理を併用した場合には、上記第2の実施の形態に係るデブロックフィルタ処理の方が高画質な画像が得られる。したがって、デリンギングフィルタ処理の有無に応じてこれらを選択するのが好ましい。
【0167】このようにして、本実施の形態では、デブロックフィルタ処理は、互いに隣接するブロック間の境界線と直交する画素列について、画素値v4〜v7をそれぞれs(0)〜s(3)に読み込んで、フィルタ後の各画素の値v5'〜v7'を上式(5)〜(7)のフィルタ演算式により算出し、画素値v2〜v5をそれぞれs(3)〜s(0)に読み込んで、フィルタ後の各画素の値v2'〜v4'を上式(5)〜(7)のフィルタ演算式により算出するようになっている。
【0168】これにより、6つの画素についてデブロックフィルタ処理を行うのに3つのフィルタ演算式を用意しておけばよいので、デブロックフィルタ処理をさらに簡素化することができる。上記第3の実施の形態において、MPEG形式の動画データは、請求項21、29または37記載の圧縮画像データに対応している。
【0169】なお、上記第1の実施の形態において、デリンギングフィルタ処理は、対象画素と8つの隣接画素との値に基づいてフィルタ演算を行うように構成したが、これに限らず、図18に示すように、対象画素と4つの隣接画素との値に基づいてフィルタ演算を行うように構成してもよい。図18は、デリンギングフィルタ処理の原理を説明するための図である。
【0170】図18において、デリンギングフィルタ処理の対象となる対象画素の値をv0とし、対象画素と隣接する隣接画素の値を、対象画素からみて上、左、右、下の順にv2,v4,v5,v7とする。この場合に、対象画素についてデリンギングフィルタ処理後の値v0'は、下式(30)のフィルタ演算式により算出する。
V=(v2+v4+v5+v7)/4 …(31)
0'=(v0+V)/2 …(32)
ただし、エッジが検出された場合にはvi(i=2,4,5,7)をv0に置き換える。viをv0に置き換える趣旨は、エッジが検出された場合にはデブロックフィルタ処理を行わないこととする趣旨と同様である。図18R>8の例では、v7がv0に置き換えられる。
【0171】これにより、隣接画素の平均値を算出するときの除数が2の整数倍であるので、ビットシフトにより演算を行うことができる。また、隣接画素のすべての値を用いないので、処理負荷を低減することもできる。したがって、デリンギングフィルタ処理をさらに簡素化することができる。なお、隣接画素として上下左右の4つの画素を選択したが、これに限らず、例えば、左上、右上、左下、右下の4つの画素など、隣接画素であればどのような組み合わせで選択してもよい。また、ビットシフトにより演算を行うことにより処理負荷の低減を図る観点からは、フィルタ演算に用いる隣接画素は、2つまたは1つであってもよい。
【0172】この場合において、MPEG形式の動画データは、請求項23、31または39記載の圧縮画像データに対応している。また、上記第1の実施の形態において、図4、図5、図6および図8のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部40のハードウェアによる処理で行う場合について説明したが、これに限らず、CPU30がこれらの処理を実行するようにしてもよく、この場合、上記第1の実施の形態のように、ROM32にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAM34に読み込んで実行するようにしてもよい。
【0173】また、上記第2の実施の形態において、図9R>9ないし図11のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部40のハードウェアによる処理で行う場合について説明したが、これに限らず、CPU30がこれらの処理を実行するようにしてもよく、この場合、上記第2の実施の形態のように、ROM32にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAM34に読み込んで実行するようにしてもよい。
【0174】また、上記第3の実施の形態において、図14ないし図16のフローチャートに示す処理を実行するにあたってはいずれも、ポストフィルタ部40のハードウェアによる処理で行う場合について説明したが、これに限らず、CPU30がこれらの処理を実行するようにしてもよく、この場合、上記第3の実施の形態のように、ROM32にあらかじめ格納されている制御プログラムを実行するように構成してもよいが、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAM34に読み込んで実行するようにしてもよい。
【0175】ここで、記憶媒体とは、RAM、ROM等の半導体記憶媒体、FD、HD等の磁気記憶型記憶媒体、CD、CDV、LD、DVD等の光学的読取方式記憶媒体、MO等の磁気記憶型/光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【0176】また、上記第1、第2および第3の実施の形態においては、本発明に係る画像処理装置および画像処理プログラム、並びに画像処理方法を、図1に示すように、コンピュータ100において、マルチタスクで動作するOSにより、MPEG形式で圧縮された動画データをデコードして動画を再生する際に、再生画像に対して、デブロックフィルタ処理およびデリンギングフィルタ処理を行う場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。例えば、JPEG形式で圧縮された画像データに基づいて画像を表示する場合や、その他離散コサイン変換処理および量子化変換処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいてブロック単位で画像を展開する場合に適用することができる。
【0177】
【発明の効果】以上説明したように、本発明に係る請求項1ないし17記載の画像処理装置によれば、一の画素についてのフィルタ演算を行うにあたって、多数の画素の平均値を用いず、2つの画素の値のみを用いるので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【0178】さらに、本発明に係る請求項3記載の画像処理装置によれば、一の画素についてのフィルタ演算を行うにあたって、その一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とを用いるので、効果的なフィルタ効果をある程度実現することができるという効果も得られる。さらに、本発明に係る請求項4記載の画像処理装置によれば、一の画素についてのフィルタ演算を行うにあたって、その一の画素の値と、同一画素列の画素であって隣接ブロック内の境界画素の値とを用いた加減算およびビットシフト(除数が2の整数倍となる除算)により演算を行うので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるのに加え、請求項3記載の画像処理装置に比して、さらに効果的なフィルタ効果を実現することができるという効果も得られる。
【0179】さらに、本発明に係る請求項5ないし8記載の画像処理装置によれば、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値を超えていれば、フィルタ演算が行われない。したがって、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるのに加え、従来に比して、当該フィルタ処理を比較的高速化することができるという効果も得られる。
【0180】さらに、本発明に係る請求項6記載の画像処理装置によれば、ブロック間の輝度の平均値が異なるという特性を考慮したフィルタ処理を行うことができるので、効果的なフィルタ効果をある程度実現することができるという効果も得られる。さらに、本発明に係る請求項7記載の画像処理装置によれば、ブロック間の輝度の平均値が異なるという特性を考慮したフィルタ処理を行うことができるので、請求項6記載の画像処理装置に比して、さらに効果的なフィルタ効果を実現することができるという効果も得られる。
【0181】さらに、本発明に係る請求項8記載の画像処理装置によれば、画素についてフィルタ演算を行うか否かの判定回数を低減することができるので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに高速化することができるという効果も得られる。さらに、本発明に係る請求項9記載の画像処理装置によれば、画素列の各画素についてフィルタ処理を行うに必要な画素データを作業用記憶手段にまとめて読み込み一括で処理するので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的高速化することができるという効果も得られる。
【0182】さらに、本発明に係る請求項10記載の画像処理装置によれば、6つの画素についてフィルタ処理を行うのに3つのフィルタ演算式を用意しておけばよいので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるという効果も得られる。さらに、本発明に係る請求項11記載の画像処理装置によれば、6つの画素についてフィルタ処理を行うのに3つのフィルタ演算式を用意しておけばよいので、画像復号化時においてブロックノイズを低減するフィルタ処理をさらに簡素化することができるという効果も得られる。
【0183】さらに、本発明に係る請求項12記載の画像処理装置によれば、ブロック内の水平方向の画素列および垂直方向の画素列の両方に対してフィルタ処理を行うので、効果的なフィルタ効果をある程度実現することができるという効果も得られる。さらに、本発明に係る請求項13ないし15記載の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、各隣接画素と対象画素との差分値が閾値を超えている否かにかかわらず、隣接画素の平均値を算出するときの除数が一定となり、その除数が2の整数倍であればビットシフトにより演算を行うことができる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果も得られる。
【0184】さらに、本発明に係る請求項14または15記載の画像処理装置によれば、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がない。したがって、画像復号化時においてモスキートノイズを低減するフィルタ処理をさらに簡素化することができるという効果も得られる。さらに、本発明に係る請求項15記載の画像処理装置によれば、効果的なフィルタ効果をある程度実現することができるという効果も得られる。
【0185】さらに、本発明に係る請求項16記載の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、隣接画素の平均値を算出するときの除数が2の整数倍であるので、ビットシフトにより演算を行うことができる。また、隣接画素のすべての値を用いないので、処理負荷を低減することもできる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果も得られる。
【0186】さらに、本発明に係る請求項17記載の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、除算してから加算を行うので、従来に比して、画像復号化時におけるモスキートノイズを低減するフィルタ処理において演算のために占有するメモリ容量を比較的低減することができるという効果も得られる。
【0187】さらに、本発明に係る請求項18記載の画像処理装置によれば、閾値が定数値であるので、フィルタ処理の過程において閾値を算出する必要がなく、また、各画素の相互の差分値のいずれかが閾値を超えていれば、フィルタ演算が行われない。したがって、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるのに加え、当該フィルタ処理を比較的高速化することができるという効果が得られる。
【0188】さらに、本発明に係る請求項19記載の画像処理装置によれば、画素列の各画素についてフィルタ処理を行うに必要な画素データを作業用記憶手段にまとめて読み込み一括で処理するので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的高速化することができるという効果が得られる。
【0189】さらに、本発明に係る請求項20記載の画像処理装置によれば、6つの画素についてフィルタ処理を行うのに3つのフィルタ演算式を用意しておけばよいので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。さらに、本発明に係る請求項21記載の画像処理装置によれば、6つの画素についてフィルタ処理を行うのに3つのフィルタ演算式を用意しておけばよいので、従来に比して、画像復号化時においてブロックノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【0190】さらに、本発明に係る請求項22記載の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、各隣接画素と対象画素との差分値が閾値を超えている否かにかかわらず、隣接画素の平均値を算出するときの除数が一定となり、その除数が2の整数倍であればビットシフトにより演算を行うことができる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【0191】さらに、本発明に係る請求項23記載の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、隣接画素の平均値を算出するときの除数が2の整数倍であるので、ビットシフトにより演算を行うことができる。また、隣接画素のすべての値を用いないので、処理負荷を低減することもできる。したがって、従来に比して、画像復号化時においてモスキートノイズを低減するフィルタ処理を比較的簡素化することができるという効果が得られる。
【0192】さらに、本発明に係る請求項24記載の画像処理装置によれば、フィルタ演算に隣接画素の平均値を用いる場合、除算してから加算を行うので、従来に比して、画像復号化時におけるモスキートノイズを低減するフィルタ処理において演算のために占有するメモリ容量を比較的低減することができるという効果が得られる。
【0193】一方、本発明に係る請求項25記載の画像処理プログラムによれば、請求項1記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項26記載の画像処理プログラムによれば、請求項18記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項27記載の画像処理プログラムによれば、請求項19記載の画像処理装置と同等の効果が得られる。
【0194】さらに、本発明に係る請求項28記載の画像処理プログラムによれば、請求項20記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項29記載の画像処理プログラムによれば、請求項21記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項30記載の画像処理プログラムによれば、請求項22記載の画像処理装置と同等の効果が得られる。
【0195】さらに、本発明に係る請求項31記載の画像処理プログラムによれば、請求項23記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項32記載の画像処理プログラムによれば、請求項24記載の画像処理装置と同等の効果が得られる。一方、本発明に係る請求項33記載の画像処理方法によれば、請求項1記載の画像処理装置と同等の効果が得られる。
【0196】さらに、本発明に係る請求項34記載の画像処理方法によれば、請求項18記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項35記載の画像処理方法によれば、請求項19記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項36記載の画像処理方法によれば、請求項20記載の画像処理装置と同等の効果が得られる。
【0197】さらに、本発明に係る請求項37記載の画像処理方法によれば、請求項21記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項38記載の画像処理方法によれば、請求項22記載の画像処理装置と同等の効果が得られる。さらに、本発明に係る請求項39記載の画像処理方法によれば、請求項23記載の画像処理装置と同等の効果が得られる。
【0198】さらに、本発明に係る請求項40記載の画像処理方法によれば、請求項24記載の画像処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図1】 本発明を適用するコンピュータシステムの構成を示すブロック図である。
【図2】 デブロックフィルタ処理の原理を説明するための図である。
【図3】 画素列PG1,PG2の各画素の値を示した棒グラフである。
【図4】 デブロックフィルタ処理を示すフローチャートである。
【図5】 ステップS102のフィルタ処理を示すフローチャートである。
【図6】 ステップS104のフィルタ処理を示すフローチャートである。
【図7】 デリンギングフィルタ処理の原理を説明するための図である。
【図8】 デリンギングフィルタ処理を示すフローチャートである。
【図9】 ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【図10】 ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【図11】 ステップS240のフィルタ演算処理を示すフローチャートである。
【図12】 画素値v1〜v8を並べ換えて演算する場合を示す図である。
【図13】 画素列PG1の各画素の値を示した棒グラフである。
【図14】 ブロックの右上部分の領域についての画素値読込処理を示すフローチャートである。
【図15】 ブロックの左上部分の領域についての画素値読込処理を示すフローチャートである。
【図16】 ステップS270のフィルタ演算処理を示すフローチャートである。
【図17】 画素列PG1の各画素の値を示した棒グラフである。
【図18】 デリンギングフィルタ処理の原理を説明するための図である。
【図19】 従来の画像処理システムによるフィルタ処理を示す図である。
【図20】 従来の画像処理システムにおいて参照する画素を示す図である。
【符号の説明】
100…コンピュータ,30…CPU,32…ROM,34…RAM,35…VRAM,36…LCDC,38…デコーダ、40…ポストフィルタ部,42…RGB変換部,44…LCD

【特許請求の範囲】
【請求項1】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっていることを特徴とする画像処理装置。
【請求項2】 請求項1において、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素の値と、同一画素列の画素であって隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっていることを特徴とする画像処理装置。
【請求項3】 請求項1及び2のいずれかにおいて、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素の値と、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素の値とにのみ基づいて行うようになっていることを特徴とする画像処理装置。
【請求項4】 請求項1乃至3のいずれかにおいて、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v7'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」、「v4'=(v4+v5)/2」、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」及び「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項5】 請求項1乃至4のいずれかにおいて、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっていることを特徴とする画像処理装置。
【請求項6】 請求項5において、前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値よりも大きく設定したことを特徴とする画像処理装置。
【請求項7】 請求項5及び6のいずれかにおいて、前記境界画素と、前記境界画素と隣接する隣接画素との差分値を比較するときの閾値を、画素の値の最大値を「2n−1」(n≧4)として「2n-3」に相当する値又はその近似値に設定し、前記境界画素と、前記隣接画素以外の画素との差分値を比較するときの閾値を、「2n-4」に相当する値又はその近似値に設定したことを特徴とする画像処理装置。
【請求項8】 請求項5乃至7のいずれかにおいて、前記フィルタ処理は、画素について前記フィルタ演算を行うか否かの判定を、前記境界画素と隣接する隣接画素から順次前記境界線より遠ざかる方向に行い、画素について前記フィルタ演算を行わないと判定したときは、当該画素及びこれよりも後段の画素については前記フィルタ演算を行わないようになっていることを特徴とする画像処理装置。
【請求項9】 請求項1乃至8のいずれかにおいて、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっていることを特徴とする画像処理装置。
【請求項10】 請求項1乃至9のいずれかにおいて、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」及び「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3及びv2として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項11】 請求項1乃至9のいずれかにおいて、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」及び「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5及びv4として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項12】 請求項1乃至11のいずれかにおいて、前記フィルタ処理は、前記ブロック内の水平方向の画素列及び垂直方向の画素列の一方に対して前記フィルタ演算を行った後、他方に対して前記フィルタ演算を行うようになっていることを特徴とする画像処理装置。
【請求項13】 請求項1乃至12のいずれかにおいて、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっていることを特徴とする画像処理装置。
【請求項14】 請求項13において、前記フィルタ処理は、前記閾値として定数値を用いるようになっていることを特徴とする画像処理装置。
【請求項15】 請求項14において、前記フィルタ処理は、前記閾値を、画素の値の最大値を「2n−1」(n≧4)として「2n-4」に相当する値又はその近似値に設定したことを特徴とする画像処理装置。
【請求項16】 請求項1乃至15のいずれかにおいて、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2又は1つの隣接画素の値とに基づいて行うようになっていることを特徴とする画像処理装置。
【請求項17】 請求項1乃至16のいずれかにおいて、前記量子化処理は、前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する処理であり、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっていることを特徴とする画像処理装置。
【請求項18】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっていることを特徴とする画像処理装置。
【請求項19】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっていることを特徴とする画像処理装置。
【請求項20】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」及び「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3及びv2として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項21】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」及び「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5及びv4として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理装置。
【請求項22】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっていることを特徴とする画像処理装置。
【請求項23】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2又は1つの隣接画素の値とに基づいて行うようになっていることを特徴とする画像処理装置。
【請求項24】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う装置であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっていることを特徴とする画像処理装置。
【請求項25】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うようになっていることを特徴とする画像処理プログラム。
【請求項26】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いるようになっていることを特徴とする画像処理プログラム。
【請求項27】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記コンピュータは、前記展開画像を格納するための画像記憶手段に利用可能に接続し、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段を備え、前記フィルタ処理は、前記画素列のうち一の画素から前記境界画素までの全画素データを、前記画像記憶手段から前記作業用記憶手段にまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うようになっていることを特徴とする画像処理プログラム。
【請求項28】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」及び「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3及びv2として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理プログラム。
【請求項29】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」及び「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5及びv4として前記各フィルタ演算式により算出するようになっていることを特徴とする画像処理プログラム。
【請求項30】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いるようになっていることを特徴とする画像処理プログラム。
【請求項31】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2又は1つの隣接画素の値とに基づいて行うようになっていることを特徴とする画像処理プログラム。
【請求項32】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対して行うフィルタ処理をコンピュータに実行させるためのプログラムであって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うようになっていることを特徴とする画像処理プログラム。
【請求項33】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、前記ブロック内の一の画素についてのフィルタ演算を、当該一の画素の値と、隣接ブロック内のいずれかの画素の値とにのみ基づいて行うことを特徴とする画像処理方法。
【請求項34】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち一の画素についてのフィルタ演算を、当該一の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの各画素の相互の差分値がいずれも閾値を超えていないときに行い、前記閾値として定数値を用いることを特徴とする画像処理方法。
【請求項35】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記展開画像を格納するための画像記憶手段に利用可能に接続し、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列の画素のうち前記境界線から最も離れた前記ブロック内の画素から、同一画素列の画素であって隣接ブロック内の前記境界線に位置する境界画素までの全画素データを格納するに必要十分な記憶容量を有する作業用記憶手段に、前記画素列のうち一の画素から前記境界画素までの全画素データを前記画像記憶手段からまとめて読み込み、前記作業用記憶手段の画素データに基づいて前記フィルタ演算を行うことを特徴とする画像処理方法。
【請求項36】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v2'〜v4'を、「v2'=(v2+v5)/2+(v2−v5)/4」、「v3'=(v3+v5)/2+(v3−v5)/8」及び「v4'=(v4+v5)/2」のフィルタ演算式により算出し、フィルタ後の各画素の値v5'〜v7'を、v4〜v7をそれぞれv5、v4、v3及びv2として前記各フィルタ演算式により算出することを特徴とする画像処理方法。
【請求項37】 離散コサイン変換処理及び量子化処理を所定のブロック単位で行う画像圧縮処理により圧縮された圧縮画像データに基づいて前記ブロック単位で画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、互いに隣接するブロック間の境界線と交差する画素列について、前記境界線を挟んで片側の画素の値を前記境界線から近い順にv4、v3、v2とし、前記境界線を挟んで逆片側の画素の値を前記境界線から近い順にv5、v6、v7とした場合に、フィルタ後の各画素の値v5'〜v7'を、「v5'=(v5+v4)/2+(v5−v4)/8」、「v6'=(v6+v4)/2+(v6−v4)/4」及び「v7'=v7−(v7−v4)/8」のフィルタ演算式により算出し、フィルタ後の各画素の値v2'〜v4'を、v2〜v5をそれぞれv7、v6、v5及びv4として前記各フィルタ演算式により算出することを特徴とする画像処理方法。
【請求項38】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する隣接画素の値とに基づいて行い、前記フィルタ演算では、前記隣接画素のうち一の画素と前記対象画素との差分値が閾値を超えているときは、当該一の画素の値に代えて前記対象画素の値を用いることを特徴とする画像処理方法。
【請求項39】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値と、前記対象画素と隣接する4、2又は1つの隣接画素の値とに基づいて行うことを特徴とする画像処理方法。
【請求項40】 離散コサイン変換処理及び前記離散コサイン変換処理の結果を高周波成分ほど粗く量子化する量子化処理を行う画像圧縮処理により圧縮された圧縮画像データに基づいて画像を展開する際又は展開した後に、展開画像に対してフィルタ処理を行う方法であって、前記フィルタ処理は、一の画素についてのフィルタ演算を、当該演算の対象となる対象画素の値を所定値で除算し、前記対象画素と隣接する隣接画素の値を前記所定値で除算し、それら除算結果を加算することにより行うことを特徴とする画像処理方法。

【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図4】
image rotate


【図7】
image rotate


【図5】
image rotate


【図6】
image rotate


【図8】
image rotate


【図9】
image rotate


【図10】
image rotate


【図14】
image rotate


【図18】
image rotate


【図11】
image rotate


【図12】
image rotate


【図13】
image rotate


【図15】
image rotate


【図16】
image rotate


【図17】
image rotate


【図20】
image rotate


【図19】
image rotate


【公開番号】特開2003−116134(P2003−116134A)
【公開日】平成15年4月18日(2003.4.18)
【国際特許分類】
【出願番号】特願2002−200577(P2002−200577)
【出願日】平成14年7月9日(2002.7.9)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】