JPEG再考

はじめに

 分離したテクスチャなんて,既存のラスタ符号化(JPEG or JPEG2000)を適用すればいいじゃん,と浅はかにも思いこんでました.実際にやってみると,あまり高い符号化効率が望めないことが分かりました.教授の助言は正しかったと,今更ながらに反省.

 動画像符号化でイントラ符号化の符号化効率改善が流行していることもあるし,ちょいとJPEGなどの性能を定量的に見て,温故知新と行きますか.

RD性能

 レート歪み性能(Rate-Distortion; RD)でさくさく評価してみます.さくさくどころか,かなり手間がかかりました.

 対象画像は,Lenna (512x512),Barbara (512x512),Foreman001 (384x288),Mobile&Calendar001 (382x288)の4枚です.括弧の中は画素数です.全てグレースケールのみ.

 対象符号化器はJPEGJPEG2000H.264/AVCのイントラ符号化.JPEGJpeg Independent Groupのプログラムを利用しました.あと,量子化テーブルを均等量子化に変えた場合についても同時にプロットしてあります.JPEG2000はKakaduを利用して,ポスト量子化により符号量を調整しています.H.264はJM 10.1(まだKTAと呼ばれていなかった頃のソフト)を利用して,1枚だけ符号化.

 評価基準はPSNRとSSIMの2種類を利用しました.Structural SIMilarity (SSIM) indexには,Mehdi Rabahによるプログラムを利用しました(http://mehdi.rabah.free.fr/SSIM/

 これで必要なことは全部明記したかな.軸を全て揃えてあるので,逆に見にくくなっている画像もあります.特にPSNRは酷いな.考察は画像の下で.


Lenna 512x512 PSNR


Barbara 512x512 PSNR


Foreman001 352x288 PSNR


Mobile&Calendar001 352x288 PSNR


Lenna 512x512 SSIM


Barbara 512x512 SSIM


Foreman001 352x288 SSIM


Mobile&Calendar001 352x288 SSIM

考察

 Safariだと表示が崩れるな.さらに,JPEGのDC成分とAC成分の符号量内訳を示すところまで行かなかったorz 予備実験は終わっているのに,まとめる時間が……明日に持ち越しだ.

 JPEGの符号化効率は今となってはとても低いです.こんなに違うものなのか!!というほどに.これからはJPEG2000H.264を静止画像符号化として利用した方がよっぽど良さそうです.

 量子化テーブルの変更は,かなり影響ありますね.均等量子化とは,ここでは各係数を同じ量子化ステップで割り算していると言うことです.普通は高周波成分ほど量子化ステップを大きくするのですが,そうするとPSNRは低下します.パーシバルの定理がこんなところで利用できるわけです.つまり,PSNRは時間領域,量子化は周波数領域で処理をしているけど,結局エネルギー損失的には同じということです.

 ただし,均等量子化したデコード画像はかなり視覚的に汚いです.PSNRの値以上に如実に出ます.というわけで,重み付けした量子化テーブルは非常に有効であることが理解できます.さらに,SSIMで比較するとこの辺はよくわかります.均等量子化の方が評価値が低くなっているところが散見されます.SSIMはMOSとの対応が良いことも改めて確認できます.

 JPEG2000H.264はかなり良い勝負です.この4枚を比較する限りではH.264の方が優勢かな.JPEG2000は静止画像の標準画像であるLennaとBarbaraでは性能が良いですが,動画像符号化の標準シーケンスであるForemanやMobile&Calendarではかなり分が悪いです.ここまで如実に差がでるのかぁ,と嘆息.

 Barbaraの様にテクスチャ系はJPEG2000に分があって,Mobile&Calendarの様にエッジがはっきりしているものはH.264に分があるような気がします.それぞれの符号化の仕組みを考えれば,そんなもんだよなぁと思ったり.

 ところで,画像によって符号化効率にかなりばらつきがあります.Mobile&Calendarはとりわけ符号化が難しいようです.画像間で比較するには,PSNRは適さないのですが,傾向としてはよくわかります.画像間でも評価値を比較可能なSSIMを利用して考察を続けます.といっても,Mobile&Calendarはきわめて符号化が難しい,としか言いようがないです.

 符号化が難しいことを「複雑な」と表現します.どんな画像が複雑なのかは,まだデータ不足で断言できません.直感的にはBarbaraの方がよっぽど難しい感じがするんですけど,テクスチャよりもエッジのはっきりした画像の方が複雑なのかな.今回は解像度も2倍ぐらい違うので,その辺も影響があるかと思います.

 というわけで,今日はここまで.