JPEG画像生成時の圧縮率を高くするとブロックノイズやモスキートノイズ等の歪みが目立ち画像の品位を損ねる結果を招く。
図9〜図11を用いて、これら歪みの発生する様子を説明する。
図9の画像は、あるコンピュータアプリケーションソフトを用いて作成した画像である。元は水平16画素、垂直16画素の大きさであったが、説明のため水平垂直ともに8倍に拡大している。
図9(a)は、JPEG変換前の非圧縮ビットマップ画像で、画像の右下寄りに明るい灰色のパッチを配置している。厳密には画像全体の左上頂点を基点して((0,0)画素とする)パッチの左上頂点が(7,7)画素となるように配置し、パッチの幅および高さはともに8画素である。またパッチの明るさレベルは191であり、パッチを除く周辺の明るさレベルは127である。図9(b)は、図9(a)の画像データ値である。
図9(a)に示した原画像をアプリケーションソフトが備えるJPEGエンコーダにかけ、さらにJPEGデコーダをかけた出力が図10(a)および図11(a)の画像である。なお、図10(a)および図11(a)は、説明のため、さらにビットマップ画像へ変換している。
図10(a)は、低圧縮率での図9(a)の変換出力である。図10(b)は、図10(a)の画像データ値である。
また、図11(a)は、高圧縮率での図9(a)の変換出力である。図11(b)は、図11(a)の画像データ値である。
図11では、圧縮率を上げたために発生した歪みが顕著に表れている。DCTの処理単位である水平8画素、垂直8画素単位で歪みの現れ方が異なるためブロックノイズとして観察できる。また変換前はパッチ部分と背景部分で一様であった画像レベル値が、変換後では大きく変動している。
一方、図10では、圧縮率は低いので一見歪みは表れていないように見える。画像品位としても問題ないレベルではあるが、図10(b)に示す通り画像を精査すると厳密にはデータ値が変異しており、わずかではあるが歪みが発生している。
一般的に、JPEG画像を生成する上ではこれらの歪みは避けては通れない。これはDCTを行い画像情報を周波数成分に変換して、その後の量子化で画像情報の高調波成分を除去するためであり、圧縮率を高くすることは可能だが歪みの発生は避けられない。特に、2値画像やアニメーション画像のような強コントラスト画像では、この強コントラストの境界部分に周波数の高い成分が多く含まれ、これらが量子化によって除去されてしまうため歪みが発生しやすい。JPEG画像が2値画像やアニメーション画像に適していない理由がここにある。
DCT、量子化についてさらに説明する。
DCT処理は空間上に分散する画像のデータ値(エネルギー値)を周波数上のエネルギー値に変換する直交変換である。特に微少区間に区切って行うと、その変換エネルギーが低周波側に大きく偏ることが知られている。一般的に微少区間に区切ってDCTを行うと最低次数(0,0)の係数(エネルギー)が最も大きな値となり、高次の係数に向かって順次値が小さくなる、いわゆる裾広がり様相を呈す。なお、エネルギーとして捉えるので、正負の別は考慮されない。
これは画像を特徴づける情報が低周波側に集中することを意味し、微少区間に限定すれば隣接する画素の値は近い値を取る画像の一般的特性と合致する。
DCTにより得られたコサイン係数は次段で量子化処理を受けるが、このとき用いる量子化係数テーブルには傾向が見られる。基本的にはアプリケーション依存で任意に設定可能であるが、コサイン係数の低周波側を大きな量子化係数で量子化すると、画像の重要な情報が大きく除去されてしまうため、低周波側よりも高周波側により大きな量子化係数を用いるのが一般的である。大きな量子化係数を用いることは圧縮率を確保するためにも必要であるが、低周波側よりも高周波側を、より大きな量子化係数で量子化した方が画像に与える影響が小さくなる。一般的にはコサイン係数の傾向とは逆に、最高次数(7,7)の係数値が最も大きく、低次に向かって順次小さな値が設定される。
このような傾向を持つDCTおよび量子化により圧縮符号化されたJPEG画像データを、復号時に逆量子化まで行ったコサイン係数に着目すると、ある特徴が現れる。それはDCT時に見られる低次から高次に向かう、いわゆる裾広がりの逆転現象である。
例えば、本発明の説明図である図3(a)の例では、(1,2),(2,1),(2,2)の係数が隣の低次の係数よりも大きな値となって逆量子化されている。(0,6),(6,0)の係数は隣の低次の係数と同じ値となっていて、逆転までは行かないが、いわゆる裾広がりの一般的特性から反する。
これらは量子化処理により除去されるわけではないが、量子化時の係数の丸め処理による誤差である。量子化時に“0”側に丸められると除去されるが、“1”側に丸められた結果であり、最も丸め誤差が大きくなる。高次側の隣の係数は傾向的に“0”となる。量子化により除去された情報(すなわち、逆量子化で復元できない高次の“0”となった係数)を元に戻すことはできない。しかし、前述の係数は逆量子化の復元時に誤差を含む可能性が高く、この誤差も最終的な画像歪みにつながる。
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、コサイン変換および量子化により情報量を削減された非可逆圧縮画像を復号する復号器であって、符号化時の量子化誤差を補正し画質の劣化を抑えることができる画像復号器、画像復号方法、画像復号プログラムおよびそれを記録したコンピュータ読み取り可能な記録媒体を提供することにある。
上記課題を解決するために、本発明に係る画像復号器は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数のうち、2次元の周波数領域の低周波側の周波数領域に偏ってある、0でない領域の高周波側の端部のコサイン係数を、2次元離散コサイン逆変換する前に補正するコサイン係数補正手段を備えることを特徴としている。
また、本発明に係る画像復号方法は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器の画像復号方法であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数のうち、2次元の周波数領域の低周波側の周波数領域に偏ってある、0でない領域の高周波側の端部のコサイン係数を、2次元離散コサイン逆変換する前に補正することを特徴としている。
コサイン変換により低周波側にエネルギーが集中するという画像の特性を考慮すると、逆量子化後のコサイン係数で、“0”と隣接する“0”でないコサイン係数に量子化による丸め誤差が多く含まれる。
そこで、上記の構成によれば、量子化による丸め誤差が多く含まれる“0”と隣接する“0”でないコサイン係数を補正できるため、復号画像の歪みを抑制することが可能となる。また、逆量子化の後かつコサイン逆変換の前で補正することにより、量子化による丸め誤差をコサイン係数のまま補正することができる。
さらに、本発明に係る画像復号器は、上記コサイン係数補正手段は、上記2次元の周波数領域を規定する一方の空間軸の次数を固定し、他方の空間軸に沿って高周波側から低周波側に順次探査して、0でない最初のコサイン係数を補正対象として特定する係数探査手段を有することを特徴としている。
上記の構成によれば、さらに、補正すべき“0”と隣接する“0”でないコサイン係数を効率よく特定できる。
さらに、本発明に係る画像復号器は、上記係数探査手段は、上記一方の空間軸の固定した次数よりも低い次数まで、上記他方の空間軸の次数を下げて探索しないことを特徴としている。
上記の構成によれば、さらに、2次元の周波数領域では、一つのコサイン係数は二つの空間軸についての意味を持つ。よって、探査の際に、固定した空間軸の次数と一致するまで探査する方向の空間軸の次数を下げながら探査し、それ以上低次までは探査しないことにより、補正すべき“0”と隣接する“0”でないコサイン係数を効率よく特定できる。
さらに、本発明に係る画像復号器は、上記コサイン係数補正手段は、上記2次元の周波数領域を規定する2つの空間軸の両方の直流成分を表す次数のコサイン係数を補正対象としないことを特徴としている。
上記の構成によれば、さらに、画像を特徴づける情報が集中している低周波成分を、不要に補正することを防止できる。
さらに、本発明に係る画像復号器は、上記コサイン係数補正手段は、上記2次元の周波数領域を規定する2つの空間軸の最高次の次数のコサイン係数を補正対象としないことを特徴としている。
上記の構成によれば、さらに、誤差がどの程度含まれているか予測できない、最高次の次数のコサイン係数を補正対象から除外することができる。
さらに、本発明に係る画像復号器は、上記係数探査手段が特定した補正対象のコサイン係数を逆量子化する際に用いた量子化係数に、0より大きく、かつ、1より小さい一定値を乗じて補正値を導出する補正値導出手段と、上記補正値を上記コサイン係数の絶対値から減じるとともに、符号は維持することにより補正後のコサイン係数を演算する補正演算手段と、を備えることを特徴としている。
量子化誤差はコサイン係数に最大で量子化係数の±(1/2)含まれる。そこで、上記の構成によれば、さらに、量子化誤差を0に近づけるように補正することができる。
本発明に係る画像復号器は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数を、2次元離散コサイン逆変換する前に補正値によって補正するコサイン係数補正手段と、上記補正値を、補正対象のコサイン係数を逆量子化する際に用いた量子化係数に基づいて導出する補正値導出手段と、を備えることを特徴としている。
また、本発明に係る画像復号方法は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器の画像復号方法であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数を、逆量子化する際に用いた量子化係数に基づいて導出した補正値によって、2次元離散コサイン逆変換する前に補正することを特徴としている。
よって、逆量子化の後かつコサイン逆変換の前で補正することにより、量子化による丸め誤差をコサイン係数のまま補正することができる。
なお、上記画像復号器は、コンピュータによって実現してもよく、この場合には、コンピュータを上記各手段として動作させることにより上記画像復号器をコンピュータにて実現させる画像復号器の画像復号プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
以上のように、本発明に係る画像復号器は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数のうち、2次元の周波数領域の低周波側の周波数領域に偏ってある、0でない領域の高周波側の端部のコサイン係数を、2次元離散コサイン逆変換する前に補正するコサイン係数補正手段を備える構成である。
また、本発明に係る画像復号方法は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器の画像復号方法であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数のうち、2次元の周波数領域の低周波側の周波数領域に偏ってある、0でない領域の高周波側の端部のコサイン係数を、2次元離散コサイン逆変換する前に補正する方法である。
それゆえ、量子化による丸め誤差が多く含まれる“0”と隣接する“0”でないコサイン係数を補正できるため、復号画像の歪みを抑制することが可能となるという効果を奏する。また、逆量子化の後かつコサイン逆変換の前で補正することにより、量子化による丸め誤差をコサイン係数のまま補正することができるという効果を奏する。
本発明に係る画像復号器は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数を、2次元離散コサイン逆変換する前に補正値によって補正するコサイン係数補正手段と、上記補正値を、補正対象のコサイン係数を逆量子化する際に用いた量子化係数に基づいて導出する補正値導出手段と、を備える構成である。
また、本発明に係る画像復号方法は、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去した非可逆圧縮画像を復号する画像復号器の画像復号方法であって、上記非可逆圧縮画像を逆量子化して得られたコサイン係数を、逆量子化する際に用いた量子化係数に基づいて導出した補正値によって、2次元離散コサイン逆変換する前に補正する方法である。
それゆえ、逆量子化の後かつコサイン逆変換の前で補正することにより、量子化による丸め誤差をコサイン係数のまま補正することができるという効果を奏する。
本発明の一実施の形態について図1から図6、図12から図21に基づいて説明すれば、以下のとおりである。
なお、本実施の形態では、JPEG画像を例に説明するが、本発明は、コサイン変換および量子化により情報量が削減された非可逆圧縮画像または映像であれば、任意の形式のデータに適用できる。例えば、MPEG(Moving Pictures Experts Group)映像は水平8画素垂直8画素の微小部分を対象に直行変換として2次元離散コサイン変換を用いること、また、直行変換後に量子化を行い、高周波成分を除去することにおいて、JPEG画像と同じ技術を用いているので、本発明を適用できる。すなわち、本発明はコサイン逆変換および量子化による圧縮映像を復号するアプリケーションにも適用可能である。なお、JPEG画像の詳細はISO/IEC 10918−1規格書を参照されたい。またMPEG映像の詳細についてもその規格書を参照されたい。
図1は、本実施の形態に係るJPEG復号器(画像復号器)20の構成の概略を示す機能ブロック図である。
図1に示すように、上記JPEG復号器20は、JPEG符号化器10で符号化されたJPEG画像データD2を復号してJPEG画像復号データD3を出力する。
まず、JPEG符号化器10について説明する。なお、JPEG符号化器10は、従来技術に係るものが利用できる。
JPEG符号化器10は、レベルシフト部11、2次元離散コサイン変換部12、量子化部13、ハフマン符号化部14を備えて構成されている。
JPEG符号化器10では、まずレベルシフト部11においてレベルシフト処理を行う。具体的には、原画像データD1の明暗を表す画素レベル値から所定値(例えば、128)を減算する。次に、2次元離散コサイン変換部12において、画像空間を所定の微少区間(例えば、水平8画素、垂直8画素)に区切ってこれを処理単位とし、DCTを施す。これにより微少区間内の画素データ値は微少区間内の水平および垂直方向の周波数領域の基本波とその高調波のコサイン係数に変換される。次に、変換されたコサイン係数に、量子化部13において量子化処理を施す。量子化は微少区間内の各コサイン成分それぞれに設定でき、JPEG符号化器10では量子化ステップを変更することで圧縮率を制御する。量子化ステップは復号時にも使用するので、通常JPEG画像データD2内にテーブル化され埋め込まれる(量子化テーブルTq)。量子化によりコサイン係数の高調波成分が除去され圧縮が可能になる。量子化された“0”でない有効なコサイン係数は、ハフマン符号化部14でハフマン符号化される。ハフマン符号化に用いるハフマンテーブルThは復号時にも使用されるためJPEG画像データD2内に埋め込まれる。こうして符号化された画像データは各種マーカと共にJPEG画像データD2を構成する。
つづいて、JPEG復号器20について説明する。
JPEG復号器20は、JPEG符号化器10において、2次元離散コサイン変換で得られたコサイン係数の高周波成分を量子化により除去して生成されたJPEG画像(非可逆圧縮画像)を復号する。そのため、JPEG復号器20は、ハフマン復号部24、逆量子化部23、2次元離散コサイン逆変換部22、逆レベルシフト部21に加えて、逆量子化部23と2次元離散コサイン逆変換部22との間にコサイン係数補正部(コサイン係数補正手段)30を備えて構成されている。
JPEG復号器20では、JPEG符号化器10の逆の処理を行う。JPEG復号器20は、入力されたJPEG画像データD2に対して、ハフマン復号部24においてハフマン復号、逆量子化部23において逆量子化、2次元離散コサイン逆変換部22において2次元離散コサイン逆変換、逆レベルシフト部21において逆レベルシフト処理を施して、JPEG画像復号データD3を生成する。
ここで、JPEG復号器20では、特に、逆量子化部23において逆量子化されたコサイン係数データDiqから補正すべきコサイン係数を導出し、量子化係数(量子化テーブルTq)から補正量を導出して、コサイン係数を補正するコサイン係数補正部30を備えている。
以下、上記コサイン係数補正部30について詳細に説明する。
コサイン係数補正部30は、JPEG画像データD2を逆量子化して得られたコサイン係数のうち、2次元の周波数領域の低周波側の周波数領域に偏ってある、0でない領域の高周波側の端部のコサイン係数を、2次元離散コサイン逆変換する前に補正する。そのため、コサイン係数補正部30は、係数探査部(係数探査手段)31、補正値導出部(補正値導出手段)32、補正演算部(補正値演算手段)33を備えて構成されている。
上記係数探査部31は、逆量子化後のコサイン係数から、丸め誤差が大きく含まれるコサイン係数を特定する。具体的には、係数探査部31は、2次元の周波数領域を規定する一方の空間軸(水平方向および垂直方向の一方)の次数を固定し、他方の空間軸に沿って高周波側から低周波側に順次探査して、0でない最初のコサイン係数を補正対象として特定する。ただし、係数探査部31は、上記一方の空間軸の固定した次数よりも低い次数まで、上記他方の空間軸の次数を下げて探索しない。また、上記2次元の周波数領域を規定する2つの空間軸の両方の直流成分を表す次数のコサイン係数を補正対象としない。さらに、上記2次元の周波数領域を規定する2つの空間軸の最高次の次数のコサイン係数を補正対象としない。
上記補正値導出部32は、量子化テーブルTqと係数探査部31にて特定されたコサイン係数の位置情報に対応する量子化係数を量子化テーブルTqから抽出し、丸め誤差に相当する補正値を導出する。具体的には、補正値導出部32は、係数探査部31が特定した補正対象のコサイン係数を逆量子化する際に用いた量子化係数に、0より大きく、かつ、1より小さい一定値を乗じて補正値を導出する。
上記補正演算部33は、係数探査部31にて特定されたコサイン係数から、補正値導出部32にて導出された丸め誤差相当の補正値を減算する。具体的には、補正演算部33は、上記補正値をコサイン係数の絶対値から減じるとともに、符号は維持することにより補正後のコサイン係数を演算する。
つづいて、コサイン係数補正部30の動作を説明する。
まず、係数探査部31が、補正対象のコサイン係数を特定する。具体的には、処理単位(例えば、水平8個、垂直8個)内で、水平方向または垂直方向の高調波成分側から0でない最初のコサイン係数を探査する。この探査は、水平方向であれば、垂直の次数を固定して行う。一方、垂直方向であれば、水平の次数を固定して行う。また、最高次である7次高調波成分は探査対象としない。また水平垂直共に最低次である0次の係数は探査対象としない。(具体的には、図3(a)の(0,0)を探索対象から除外する。なお、(0,6)等は探索対象とする。)さらに、探査方向次数と固定している方向の次数を比較して、固定方向の次数より低い次数の係数は探査対象としない。係数探査部31は、このような条件の下にコサイン係数を探査して補正すべきコサイン係数を特定する。
次に、補正値導出部32が、逆量子化されたコサイン係数Diqの補正値を導出する。具体的には、補正値導出部32は、係数探査部31にて特定された補正対象のコサイン係数の周波数上の位置情報(後述する(0,6)等)に基づき、当該コサイン係数に逆量子化処理を行った際に用いた量子化係数を量子化テーブルTqから抽出する。そして、補正値導出部32は、抽出した量子化係数に1以下の一定値を乗じ、小数点以下を切り捨てて補正値を導出する。
次に、補正演算部33が、補正値導出部32にて導出された補正値を、補正対象のコサイン係数の絶対値から減じ、コサイン係数の符号はそのまま維持する。つまり、コサイン係数が正値ならば減算処理、負値であれば加算処理を行う。
このように、コサイン係数補正部30に逆量子化部23から入力された、逆量子化されたコサイン係数Diqは、係数探査部31にて補正対象であるか否かが判定され、補正対象であれば補正演算部33にて補正された後、2次元離散コサイン逆変換部22に入力される。一方、係数探査部31にて補正対象と特定されなかった、逆量子化されたコサイン係数Diqは、そのまま2次元離散コサイン逆変換部22に入力される。
ここで、図2は、係数探査部31による、補正対象のコサイン係数の探査方法を示す説明図である。なお、図2は、処理単位が水平8個、垂直8個である場合の例である。
図2に示すように、微少区間内にコサイン係数は64個存在する。(水平方向次数,垂直方向次数)と表記することとして、各微小区間に(0,0)から(7,7)と名前を付ける。
図の枠外に示す矢印は探査を行う方向を示す。また各微小区間を示す枠内の下段の○または×印は、当該微小区間のコサイン係数が探査対象かどうかを表す。○印が探査対象、×印が非探査対象であることを示す。○印および×印は、左側が水平方向、右側が垂直方向の探査についての表示である。
図3は、係数探査部31の動作を示す説明図である。図3(a)は、補正対象として特定されたコサイン係数を示す。図3(b)は、補正対象のコサイン係数が補正された状態を示す。
上述した探査方法によれば、図3(a)の場合、図中太枠が付された5個のコサイン係数が補正対象として特定できる。ここで、(0,6),(1,2)のコサイン係数は水平方向から、(2,1),(6,0)のコサイン係数は垂直方向から、(2,2)のコサイン係数は水平および垂直方向からの探査によって特定される。
そして、図3(a)のように特定されたコサイン係数に対して、量子化テーブル(図8(c))および一定値(0.25)を用いて導出した補正値によって補正すると、図3(b)となる。具体的には、(0,6)のコサイン係数71を逆量子化で用いた量子化係数は71であるから、一定値0.25をかけると、補正値は17となる。そして、この補正値17をコサイン係数71から減算して、補正されたコサイン係数54を得る。同様にして、(1,2)(2,1)のコサイン係数は29、(6,0)のコサイン係数は54と補正される。また、(2,2)のコサイン係数は水平および垂直両方向から補正されるため、補正処理を2回受ける。当該コサイン係数-47の量子化係数は47なので補正値は11、コサイン係数-47は負値なので11を2回加算処理され、-25に補正される。
図9の画像は、あるコンピュータアプリケーションソフトを用いて作成した画像である。元は水平16画素、垂直16画素の大きさであったが、説明のため水平垂直ともに8倍に拡大している。
図9(a)は、JPEG変換前の非圧縮ビットマップ画像で、画像の右下寄りに明るい灰色のパッチを配置している。厳密には画像全体の左上頂点を基点して((0,0)画素とする)パッチの左上頂点が(7,7)画素となるように配置し、パッチの幅および高さはともに8画素である。またパッチの明るさレベルは191であり、パッチを除く周辺の明るさレベルは127である。図9(b)は、図9(a)の画像データ値である。
図4(a)は、図9(a)に示した圧縮符号化されたJPEG画像を、上述したJPEG復号器20により、コサイン係数を補正して復号した画像である。なお、圧縮率は従来技術において示した図11と同じ(高圧縮率)である。また、図4(a)は、説明のため、ビットマップ画像へ変換するとともに、8倍に拡大している。図4(b)は、図4(a)の画像データ値である。
図4(a)を従来技術による図11(a)と比較すると、図4(a)の方が歪みが減少している。また、図4(b)と図11(b)との画素ごとのデータ値を比較すると、図4(b)の方が画像データの誤差が小さくなっている。
さらに、図5は、原画像である図9(a)を元に求めた、図4(a)および図11(a)の画像データの標準偏差およびPSNR(Peak Signal-to-Noise Ratio)である。図5から、JPEG復号器20を用いてコサイン係数を補正すると、画質が改善されることが数値上でも明らかである。
なお、JPEG復号器20を例えば図10のような元々歪みの少ない画像に適用した場合、補正すべきコサイン係数が探査で特定されなかったり、また特定されても、量子化係数からの導出した補正値が“0”であったりして、結果として無補正となり復号時の画像に対して過補正等の影響を与えることはない。
例えば、後述する例のように、低圧縮時の量子化テーブル(図14(b))の場合の逆量子化後のコサイン係数(図16(b))のように、コサイン係数自体に“0”の値が出現しなかったり、量子化テーブルから補正値を算出する上でその補正値が“0”になったりする。それゆえ、JPEG復号器20は、任意の画像に対して一様に適用することができる。
以上のように、上記JPEG復号器20は、コサイン変換および量子化により情報量を削減された非可逆圧縮画像を復号する復号器であって、歪みを抑えるために、量子化処理時の丸め誤差に着目して、これを補正するためのコサイン係数補正部30を備える。このコサイン係数補正部30は、逆量子化部23と2次元離散コサイン逆変換部22との間に設けられる。コサイン係数補正部30では、係数探査部31にて逆量子化後のコサイン係数に対して丸め誤差が大きく含まれるコサイン係数を特定し、補正値導出部32および補正演算部33にて前記特定されたコサイン係数から丸め誤差相当の情報量を除去する。
以下、本発明の特徴について補足する。
(a)補正の時期
JPEG復号器20では、図1に示すように、コサイン係数を2次元離散コサイン逆変換する前に補正する。このように逆量子化の後かつコサイン逆変換の前で補正することにより、符号化時の量子化および復号時の逆量子化の過程で生じるコサイン係数(DCT係数)上の誤差を、コサイン係数のまま補正することができる。これは、逆コサイン変換を行うと、量子化誤差が変換単位(例えば8x8画素)内で散らばってしまうが、逆コサイン変換前であれば、コサイン係数列上“0”と接する“0”でない係数値に誤差が最も強く発生する傾向があることを利用したものである(図12参照)。
(b)補正するコサイン係数を探査するアルゴリズム
上記説明では、コサイン係数に対して、水平方向および垂直方向の一方を固定して、高周波成分側から低周波成分側に順次、0でない最初の係数を探査するアルゴリズムを示した。しかし、探査の目的が、図3(a)の(1,2),(2,1),(2,2),(0,6),(6,0)のような、“0”でない画素領域の端部を特定することであるため、他のアルゴリズムに従って探査してもよい。具体的には、例えば、低周波成分側から高周波成分側に探査するアルゴリズムを採用してもよい。
ただし、コサイン係数列の途中に“0”が含まれる場合、すなわち、“0”の高周波側に“0”でない係数が存在する場合があり、この“0”の低周波側を特定しないようにする必要がある。例えば、“-270,-156,164,-130,132,0,71,0”(先頭が低周波側)のような係数列の場合、特定すべきは132ではなく、71である。よって、低周波側から探査すると最高次数まで確認しないと71が特定できないアルゴリズムは、処理が遅くなる可能性がある。
(c)補正対象から最高次の高調波成分を除く
補正対象から最高次の高調波成分を除外するのは、そこに誤差がどの程度含まれるか見込めないためである。
一般に、量子化誤差は最大で量子化係数の±(1/2)まで発生する。量子化で“0”になってしまった係数は、補正しようにも符号さえ判断できない。また、最高次数の“0”でない係数もプラスの誤差が含まれるか、マイナスの誤差が含まれるか、判断ができない。一方、“0”の低周波側の“0”でない係数には、“0”から離れるように誤差が強く含まれる傾向がある。よって、本発明ではこれを“0”に近づくように補正する。
図6を用いて、より詳細に説明する。図6は、元の数に量子化係数4を適用して量子化、逆量子化を行ったときの誤差および補正値を示す表である。
(1)逆量子化で“0”となった数からは元の数は特定できない。(2)逆量子化で“4”となった数の元の数もやはり特定はできない。なお、一般的に量子化された数を逆量子化すると誤差が含まれる。(3)図6のように元の数が分かっていて計算すれば、“6”,“2”,“-2”に誤差が大きく含まれることは容易に判別できる。
しかし、画像復号時のように、分かるのは逆量子化されたコサイン係数と量子化係数である場合、どの程度量子化誤差が含まれるのかは判断できない。
ただし、コサイン変換により低周波側にエネルギーが集中するという画像の特性を考慮すると、逆量子化後のコサイン係数で、“0”と隣接する“0”でないコサイン係数に量子化誤差が多く含まれることは推測できる。図6では、それが元の数で“2”と“-2”である。そして、本発明の処理では、元の数が“2”と“-2”である逆量子化後のコサイン係数が特定可能であり、その補正値は“1”、補正後の逆量子化された数はそれぞれ“3”と“-3”になる。
(d)探査の制限
画像、映像は空間軸として2次元(映像は時間軸もある)であり、一つのコサイン係数は水平方向と垂直方向の2方向の意味合いを持つ。例えば、(0,5)の係数は垂直方向に0次(垂直方向にはDC(直流)成分)、水平方向に5次の高周波成分を含む係数と解釈できる。値の大きい係数が低周波側に偏る画像の一般的特性からすると、水平方向の誤差の方が大きく、かつ、(0,6)の係数よりは誤差が小さいと推測できる。それゆえ、本発明では、係数の探査方向を決めたとき固定される方向の次数と比較して、より低次までは探査しないように制限を設けてある。
(e)量子化係数に乗じる値
上記説明では、コサイン係数の補正値を、量子化係数に一定値を乗じて求める場合について示した。
既述のように、量子化誤差は最大で量子化係数の±(1/2)含まれる。よって、補正値はその半分の量子化係数の±(1/4)とし、値として“0”に近づくように補正する。それゆえ、量子化係数に乗じる値としては、例えば一定値の“0.25”に設定できる。しかし、この値は、“0.25”でなくてもよく、また、一定値でなくてもよい(例えば、乗じる量子化係数の絶対値に応じて決定される可変値であってもよい)。
(f)処理単位、
上記説明では、8×8を処理単位とした例を示したが、本発明は他の形状の処理単位(例えば、16×16や8×16)にも適用できる。
処理単位は、符号化時と同じことが要求される。つまり、符号化時に8x8で離散コサイン変換が行われれば、コサイン係数の特定や補正も8x8の処理単位で行う必要がある。例えばH.264等の符号化で、8x4で符号化が行われれば、8x4の処理単位で補正することになる。
(g)歪みの少ない画像に対する補正
JPEG復号器20で歪みの少ない画像を処理した場合、逆量子化後のコサイン係数が“0”になることが少なくなる。また、量子化係数も“3”などの小さい数字が適用されるため、補正値自体が“0”になることが多くなる。よって、本発明を適用しても結果として補正されない。
ここで、図13〜図21を参照して、JPEG復号器20の動作を説明する。以下の例では、逆量子化されたコサイン係数をコサイン係数補正部30を用いて補正する場合と補正しない場合との比較、ならびに、高圧縮時の量子化テーブルを使用した場合と低圧縮時の量子化テーブルを使用した場合の比較を行う。
まず、図13(a)は、原画像データの例である。また、図13(b)は、図13(a)をコサイン変換したコサイン係数である。
次に、量子化テーブルの例である。具体的には、図14(a)は、高圧縮時に使用される量子化テーブルの例である。図14(b)は、低圧縮時に使用される量子化テーブルの第1例である。図14(c)は、低圧縮時に使用される量子化テーブルの第2例である。
次に、図15は、コサイン係数を量子化テーブルを用いて量子化したデータである。詳細には、図15(a)は、図13(b)に示したコサイン係数を、図13(a)に示した高圧縮時の量子化テーブルを用いて量子化したデータである。図15(b)は、図13(b)に示したコサイン係数を、図13(b)に示した低圧縮時の量子化テーブル(第1例)を用いて量子化したデータである。図15(c)は、図13(b)に示したコサイン係数を、図13(c)に示した低圧縮時の量子化テーブル(第2例)を用いて量子化したデータである。
次に、図16は、量子化テーブルを用いて量子化したデータを、該量子化テーブルを用いて逆量子化したデータである。詳細には、図16(a)は、図14(a)に示した高圧縮時の量子化テーブルを用いて量子化した、図15(a)に示したデータを、該量子化テーブルを用いて逆量子化したデータである。図16(b)は、図14(b)に示した低圧縮時の量子化テーブル(第1例)を用いて量子化した、図15(b)に示したデータを、該量子化テーブルを用いて逆量子化したデータである。図16(c)は、図14(c)に示した低圧縮時の量子化テーブル(第2例)を用いて量子化した、図15(c)に示したデータを、該量子化テーブルを用いて逆量子化したデータである。
次に、図17は、量子化テーブルを用いて量子化および逆量子化したデータを、本発明のコサイン係数補正部30によって補正したデータである。詳細には、図17(a)は、図14(a)に示した高圧縮時の量子化テーブルを用いて量子化および逆量子化した、図16(a)に示したデータを、本発明のコサイン係数補正部30によって補正したデータである。図17(b)は、図14(b)に示した低圧縮時の量子化テーブル(第1例)を用いて量子化および逆量子化した、図16(b)に示したデータを、本発明のコサイン係数補正部30によって補正したデータである。このデータは、結果的に無補正である。図17(c)は、図14(c)に示した低圧縮時の量子化テーブル(第2例)を用いて量子化および逆量子化した、図16(c)に示したデータを、本発明のコサイン係数補正部30によって補正したデータである。
次に、図18は、量子化テーブルを用いて量子化および逆量子化したデータを、逆コサイン変換した復元画像のデータである。すなわち、従来技術による復元画像のデータである。詳細には、図18(a)は、図14(a)に示した高圧縮時の量子化テーブルを用いて量子化および逆量子化した、図16(a)に示したデータを、逆コサイン変換した復元画像のデータである。図18(b)は、図14(b)に示した低圧縮時の量子化テーブル(第1例)を用いて量子化および逆量子化した、図16(b)に示したデータを、逆コサイン変換した復元画像のデータである。図18(c)は、図14(c)に示した低圧縮時の量子化テーブル(第2例)を用いて量子化および逆量子化した、図16(c)に示したデータを、逆コサイン変換した復元画像のデータである。
次に、図19は、量子化テーブルを用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正したデータを、逆コサイン変換した復元画像のデータである。すなわち、本発明による復元画像のデータである。詳細には、図19(a)は、図14(a)に示した高圧縮時の量子化テーブルを用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正した、図17(a)に示したデータを、逆コサイン変換した復元画像のデータである。図19(b)は、図14(b)に示した低高圧縮時の量子化テーブル(第1例)を用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正した、図17(b)に示したデータを、逆コサイン変換した復元画像のデータである。図19(c)は、図14(c)に示した低高圧縮時の量子化テーブル(第2例)を用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正した、図17(c)に示したデータを、逆コサイン変換した復元画像のデータである。
次に、図20は、従来技術による復元画像と原画像間のデータ差の分散である。詳細には、図20(a)は、図14(a)に示した高圧縮時の量子化テーブルを用いて量子化および逆量子化した後、逆コサイン変換した、図18(a)に示した復元画像のデータの、図13(a)に示した原画像データとの分散である。図20(b)は、図14(b)に示した低圧縮時の量子化テーブル(第1例)を用いて量子化および逆量子化した後、逆コサイン変換した、図18(b)に示した復元画像のデータの、図13(a)に示した原画像データとの分散である。図20(c)は、図14(c)に示した低圧縮時の量子化テーブル(第2例)を用いて量子化および逆量子化した後、逆コサイン変換した、図18(c)に示した復元画像のデータの、図13(a)に示した原画像データとの分散である。
次に、図21は、本発明による復元画像と原画像間のデータ差の分散である。詳細には、図21(a)は、図14(a)に示した高圧縮時の量子化テーブルを用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正したデータを、逆コサイン変換した、図19(a)に示した復元画像のデータの、図13(a)に示した原画像データとの分散である。図21(b)は、図14(b)に示した低圧縮時の量子化テーブル(第1例)を用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正したデータを、逆コサイン変換した、図19(b)に示した復元画像のデータの、図13(a)に示した原画像データとの分散である。図21(c)は、図14(c)に示した低圧縮時の量子化テーブル(第2例)を用いて量子化および逆量子化した後、本発明のコサイン係数補正部30によって補正したデータを、逆コサイン変換した、図19(c)に示した復元画像のデータの、図13(a)に示した原画像データとの分散である。
図20、図21の分散値は小さい方が、復元画像が元画像により近いことを示す。よって、図20、図21から分かるように、本発明は高圧縮時に効果が大きい。
ここで、上述したように、図14(b)および図14(c)は共に低圧縮量子化テーブルであるが、図14(b)は本発明の補正を行っても結果として無補正となり、図14(c)は本発明の補正を行うとわずかな効果が得られる点が異なっている。また、図14(c)の量子化テーブルを適用した方が圧縮率が高くなるが、復号時のひずみが大きくなる。このひずみの大きくについては、図20(b)(c)図21(b)(c)に示した、復号画像と元画像の分散値から読み取ることができる。すなわち、この分散値が小さい方がよりひずみが小さくなるため、図20(c)と図21(c)の分散値から本発明の効果が数値で比較できる。
なお、本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。例えば、本発明は以下のように構成することができる。
本発明に係る復号器は、画像または映像の水平方向および垂直方向に空間的な微小部分を処理単位として、直交変換に2次元離散コサイン変換を用い、変換後のコサイン変換係数の高周波成分を量子化により除去することで情報量を削減する圧縮画像または圧縮映像を、2次元離散コサイン逆変換で復元する復号器であって、前記微小部分のコサイン係数を2次元離散コサイン逆変換する前に補正する構成であってもよい。
さらに、上記復号器は、補正の方法として、補正すべきコサイン係数を微少部分内で特定する手段を有し、コサイン係数を水平方向または垂直方向の高周波成分側から低周波成分側に順次探査して、係数値が“0”でない最初の係数に対して補正を行うように構成されていてもよい。
また、上記復号器は、補正すべきコサイン係数を探査の際に、探査方向でない方向の次数を固定して探査し、かつ探査は固定した方向の次数と探査する方向の次数が一致するまで探査し、それ以上低次までは探査しないように構成されていてもよい。
また、上記復号器は、コサイン係数のうち水平方向および垂直方向共に直流成分を表す次数のコサイン係数は、これを補正対象としないように構成されていてもよい。
また、上記復号器は、コサイン係数のうち最高次の高調波成分を補正対象としないように構成されていてもよい。
さらに、上記復号器は、補正の方法として、補正対象のコサイン係数の絶対値に対して、その当該コサイン係数を逆量子化する際に用いた量子化係数に一定割合を乗じた値を減算することで補正を行うように構成されていてもよい。
最後に、JPEG復号器20の各ブロック、特にコサイン係数補正部30の係数探査部31、補正値導出部32および補正演算部33は、ハードウェアロジックによって構成してもよいし、次のようにCPUを用いてソフトウェアによって実現してもよい。
すなわち、JPEG復号器20は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアであるJPEG復号器20の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記JPEG復号器20に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、JPEG復号器20を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。