お絵描き研究室:JPEG(原理編1)

画像フォーマットのひとつである JPEG について最も基本的な事項を解説しています。

1. JPEG とは

 JPEG はフルカラー(RGB 24bit)の画像フォーマットであり、非常に高い圧縮率を持つが圧縮時に細部情報が破壊される(不可逆圧縮)性質があり、圧縮率を上げすぎると目に見えて画質が劣化する、写真のような自然画に向くがベタ塗りのイラストなどにはあまり向かない(再生時に色ムラが出やすい)…と言われています。この解説は基本的には正しいのですが、いくつかの誤解を含んでいます。

 まず厳密に言うと、JPEG とは画像フォーマット標準化団体である Joint Photographic Experts Group の名称です。JPEG によって定義された「JPEG フォーマット」は画像フォーマットの外枠を規定しているだけであり、何種類もの派生が存在し得ます。インターネットでよく使われている「(いわゆる)JPEG」とは、JPEG フォーマットの一種である JFIF(JPEG File Interchange Format)を指しています。しかし JFIF という言葉は(不幸にして)いまひとつ馴染みが薄いので、以下の記述では 「JPEG」という単語を「JFIF」と同じ意味で使用することにします。

 「不可逆圧縮」は JPEG の欠点であると同時に特長でもあります。情報を効率的に切り捨てることによって、他の圧縮方式では得られない高圧縮率を得ています。しかし JPEG の生成・再生プロセスには意図的な情報切り捨て(量子化処理)以外に、意図しない情報の切り捨て(コンピュータの演算誤差、いわゆる桁落ち)も発生します。ですから、どんなに画質を高く設定しても原画像を 100% 再生することはできません。
 JPEG がどのように情報を切り捨てるのか、それを説明するのはちょっと厄介です。DCT・量子化などについては後の章でじっくり説明します。

 JPEG には白黒(Grayscale)とカラーの二種類があります。白黒のほうは文字どおりなのですが、カラーは RGB 色モデルではなく YCbCr という色モデルを使っています。色空間を赤・緑・青のスカラではなく輝度スカラ(Y)・色相ベクトル(CbCr)で表現するのです。RGB と YCbCr の変換は CCIR601 という規格で次のように定義されています。

Y=0.299R+0.587G+0.114B
Cb=0.1687R+0.3313G+0.5B
Cr=0.5R+0.4187G+0.0813B

式1−1 RGB→YCbCr 変換(CCIR601)

 YCbCr は原理的にカラーテレビの YUV 変調と同じで、特に新しい技術ではありません。しかしコンピュータ上で RGB との相互変換を行った場合、桁落ちによる演算誤差を免れないという欠点があります(JPEG 不可逆性の一要因)。しかしこの YCbCr 色空間の採用が、JPEG の高圧縮率を実現する一つの鍵になっているのです。

2. YCbCr 色空間

 カラー画像をそれぞれ RGB, YCbCr 成分に分解した例を示します。素材はうちの看板娘の彩華です(^_^;)。

原画像RGB
Src(4.3K) RGB 分解→ Red(2.5K) Green(2.5K) Blue(2.5K)
原画像YCbCr
Src(4.3K) YCbCr 分解→ Y(3.5K) Cb(1.3K) Cr(0.7K)

図2−1 RGB と YCbCr 色空間

 人間の目には R,G,B は文字どおり毛色が少し異なるだけで、よく似た三姉妹のように見えます。しかし Y,Cb,Cr はそれぞれまるっきり違って見えます。Y が原画像のイメージを強く残しているのに対し、Cb,Cr はまるで出来損ないのネガのように見えます。
 しかし前述した CCIR601 の係数は、全部足せばどの項も 1.0 になることに注意してください。すなわち原画像に含まれていた情報量は Y,Cb,Cr それぞれに均等に割り当てられており、RGB とは配分の基準が異なるだけです。それなのに図2−1で Y>Cb>Cr の順に情報量が偏っているのは、原画に含まれていた色情報の傾向を示しています(画像上での色変化が少なく、使われている色が寒色系に偏っている)。


3. ダウンサンプリング

 一般に使われる画像では狭い範囲で色が急激に変化することは少なく、寒色系(Cb)と暖色系(Cr)が入り乱れることは更に希です。また人間の視覚は色変化よりも輝度変化に敏感で、Cb,Cr よりも Y 情報を支配的なものとして見る傾向があります。そこで JPEG では、Cb,Cr の情報を意図的に削減する「ダウンサンプリング(Down sampling)」処理をかけることがよく行われます。規格書には「偶数の係数を持つ対称型デジタルフィルタを応用することで帯域を削減し…」という難しい表現で書かれていますが、要するに隣り合った要素同士を平均化して画像サイズを 1/2 または 1/4 に縮小することです。前述の Y,Cb,Cr に対してそれぞれ 2x2 のフィルタ処理を施した結果を示します。
YCbCr
Y(4.3K) Cb(1.3K) Cr(0.7K)
2x2フィルタ処理
2x2フィルタ処理
2x2フィルタ処理
Y2(2.8K) Cb2(1.1K) Cr2(0.6K)
拡大
拡大
拡大
Y2(2.8K) Cb2(1.1K) Cr2(0.6K)

図3−1 対称型フィルタ処理(ダウンサンプリング)の結果

 Y の画質劣化は明確に識別できますが、Cb,Cr の画質劣化は判断しづらいですね。これは原画における色変化が緩やかなため Cb,Cr に鋭い変化点(=高周波成分)が少なく、フィルタ処理(=高周波成分削減)の影響を受けにくいためです。このようにして色情報の削減を行うことをダウンサンプリング、またはサブサンプリングと呼びます。なお、白黒画像は Y 成分だけで構成されるのでダウンサンプリングという概念はありません。
 JPEG では Cb, Cr に対し 1x1(ダウンサンプリングなし)、2x1 または 2x2 のダウンサンプリングを適用することができます。ダウンサンプリングの効果(識別できる画質の劣化なしに圧縮率を上げること)は画像の性質によって異なり、常に有効に働くわけではありません。

 例えば図3−2は意図的に背景と前景の輝度を一致させ、情報を Cb,Cr に偏重させた画像です。それぞれ同じ画質パラメータで圧縮してありますが、ダウンサンプリングによるファイルサイズ削減と画質への悪影響がはっきり見て取れます。一般に「白黒に変換したときコントラストが低い」画像は、このようにダウンサンプリングによる画質劣化を起こしやすい傾向があります。

ダウンサンプル比1:11:21:4
1 1:1(2.3K) 1 1:2(1.3K) 1 1:4(0.9K)
ファイルサイズ2.3K1.3K0.9K

図3−2 ダウンサンプリングの悪影響(1)

 図3−3は 8x8 単位に色を並べたモザイク画像で、これにダウンサンプリングをかけると画質が悪くなるばかりかファイルサイズまで増大してしまいます。もっともこれは非常に特殊な例であり、JPEG が 8x8 のブロック単位で圧縮を行っていることと深い関係があります。詳しくは次の章を参照してください。

ダウンサンプル比1:11:21:4
2 1:1(337) 2 1:2(358) 2 1:4(369)
ファイルサイズ337358369

図3−3 ダウンサンプリングの悪影響(2)

[JPEG(原理編2)]へ続く…

[研究室] [目次]
Copyright by 'Crazy' Y.Sasaki
Web Hostingweb hostingdedicated serversSSL Certificatedomain namesweb hosting