画像の圧縮(その2)

1.自然画像のための圧縮法:JPEG

 自然画像を圧縮するための方法として、国際的な規格協議機構であるITUとISOが合同で構成したJPEG(Joint Photographic Expert Group)という委員会で検討されてまとめられたアルゴリズムがあります。この委員会名をそのまま圧縮法の名前としてJPEGと呼んでいます。
 JPEGアルゴリズムの特色は、人間の目の特性を利用して、
(1) 輝度の変化に比較して色の変化を認知する能力が低いことを利用し、色差情報を間引く
(2) 緩やかに変化するところの輝度/色の階調差には敏感だが、細かく変化する箇所では少ない階調でも不自然に感じないことを利用し、空間周波数分析を行って高周波数領域(細かく変化している箇所)のデータを間引く ことによって、大きな圧縮率を実現することにあります。
 しかしながら、いずれも元の情報を間引いて圧縮するので、圧縮前後では完全に元の画像には戻りません(不可逆圧縮)。

2.色の情報の圧縮

 JPEGでは、カラーの画像をR,G,Bの三原色に分けて取り扱うのではなく、R,G,Bの各成分を、輝度Yと色を表すCb,Crの成分に変換して取り扱います。RGB→YCrCbへの変換は、色の変換のページを参考にしてください。

 ここで、人の目が色の変化に弱いということを利用し、色の成分だけデータを間引きます。具体的には以下の図を参考にしてください。
輝度成分色成分
輝度(Y)成分色(Cb,Cr)成分
 輝度(Y)成分では、図中のすべての緑色の点を有効なデータとして利用します。
 一方、色(Cb,Cr)成分では、図中の点のうち、緑色の点を基準としてその右、下、右下の4点(たとえば図中左上角の水色の背景の範囲)のデータを平均し、それを元データとして利用します。従って、色の各成分は元のデータの4分の1の量に圧縮されることになり、画像全体では2分の1(=(1+0.25+0.25)÷(1+1+1))の量まで圧縮されることになります。

 実際に、元の画像から上記の方法で色の成分のみ4分の1に間引いて合成した画像を以下に示します。画像をクリックすると大きく表示されます。
画像名オリジナル画像色の成分を4分の1に間引いた画像
lenna lenna original lenna ycc420
mandrill mandrill original mandrill ycc420

 よほどよく見比べない限り、これらの画像の違いを見つけることは困難であることがおわかりでしょう。

注:上記のカラー画像は、PPM形式の元画像を処理した結果を、不可逆圧縮をおこなうPNG形式を用いて表示しています。

3.空間周波数成分分析による圧縮

 2.で述べたように、元の画像のRGB成分を輝度と色の成分に変換した後、色の成分を間引いてできたデータを、今度は空間周波数分析という手法を用いて、さらに圧縮します。
 これは、音の世界に言い換えるとCDをMDに録音するとき、音の周波数成分に分解した後で、耳が感知できない部分を削って圧縮することに似ています。
 JPEGでは、離散コサイン変換(DCT)という手法を用いて、空間周波数分析を行います。具体的には、元画像の各成分について、8×8画素ごとの小ブロックに分割し、各小ブロックについてDCT演算を行います。
 DCTについての詳しい解説は専門書に譲りますが、簡単にいえば、8×8の画像を、以下に示す各種の空間周波数を持つ画像の重ね合わせにより表現するための変換方法ということができます。
   
低 ← 水平方向周波数成分 → 高

 

 









 

 

DCTの空間周波数分析の基本画像

 上記の画像で、左上の方ほど空間周波数が低く(変化が少ない)、右下の方ほど空間周波数が高い(変化が細かい)ことがおわかりでしょうか。

 DCTを行った結果、元の8×8の画像は、上記の64個の基本画像のそれぞれがどの程度の割合で含まれるか、を表す数値に変換されます。それらの数値で、低い空間周波数の部分(左上に近い成分)を多く残し、高い空間周波数の成分(右下に近い部分)は間引くか取り去ってしまうという処理を行うことによって、人の目にはあまり圧縮の影響を感じさせず大幅にデータ量を削減することが可能になっています。

4.JPEGのまとめ

 JPEGは人の目の特性を利用して、完全には元の画像に戻らない代わりに高圧縮率を達成している圧縮方法です。
 しかしながら、高い圧縮率でJPEG圧縮をすると、8×8で圧縮処理を行う弊害として、以下の画像のように8×8のモザイク状のノイズ(ブロックノイズ)が生じてしまったり、高い空間周波数成分を間引いてしまったために、明るさや色が急激に変わる輪郭周辺でもやもやしたノイズ(モスキートノイズ)が現れたりすることがあります。
 また、圧縮するたびにデータの一部分が必ず劣化していきますので、画像処理を続けて行うときに、途中経過をJPEG形式で保存することはおすすめできません。
 少しでも画像劣化を避けたい場合、あるいは画像処理を続けて行う際の途中経過の保存などのためには、可逆圧縮方式を利用したPNGなどの別の形式を用いるか、データ量は少々多くなりますが圧縮しないでそのまま保存するなどの方法をとることがのぞましいです。
High-compressed lenna JPEG image
高圧縮のため劣化したJPEG画像の例
(クリックで拡大します)

もどる


katahira@med.akita-u.ac.jp