JPEG2000実習 ロスレス/ロッシー編 その2

本日のお題:ロッシーの時だけ使える秘密兵器がある


前々々回(http://d.hatena.ne.jp/denshikA/20100602)、JPEG2000の変換について、実習できる環境(OpenJPEG)をご紹介しました。ご自分で変換してみると、よりよく理解できるはずなので、時間の許す限り、やってみてください。*1


そして、前回、JPEG2000には、ロスレス/ロッシー境界線というものがあるんですよ、というような話をして、圧縮率との関係で、ロスレス(可逆)とロッシー(不可逆というものが、決まって来るんですよ、ということだったと思います。(ですよね?http://d.hatena.ne.jp/denshikA/20100607


前回は、どちらかというと、ロスレス側のお話だったので、今日は、どちらかというと、ロッシー側についてお話します。


いきなり、コマンドプロンプトを開いて、OpenJPEGで2つの変換をしてみましょう。

C:\image_to_j2k.exe -i C:\test.tif -o C:\100R.jp2 -r 100
C:\image_to_j2k.exe -i C:\test.tif -o C:\100I.jp2 -r 100 -I


これまでのシリーズを読んでいただいた方には、最初の変換は明々白々ですね。「100分の1に圧縮してくれ」ということですね。そして、2個目の変換は、その変換の末尾に「-I」というのが付いただけですね。


早速、できたファイルを確認してみましょう。

どちらも、107KBですので、ちゃんと100分の1に圧縮されていますね。


では、画像を開いてみて、確認してみてください。何か違いがありますか?

クリックすると、大きな画像が見られます。

  100R.jp2   100I.jp2 
 


おそらく、あまり違いがなかったと思います。


目で見て分からないときは、数値に頼るしかありません。そこで、PSNRとSSIMを測定してみましょう。*2

   100R.jp2   100I.jp2 
PSNR31.21231.654
SSIM0.97480.9760


PSNRで見ても、SSIMで見ても、100R.jp2より100I.jp2の方が高い数値ですね。これは、すでにhttp://d.hatena.ne.jp/denshikA/20090921で説明したとおり、「元の画像により近い」ということを意味しています。つまり、

100R.jp2より100I.jp2の方が画質が良い

ということですね。


このことは、100分の1だけでなく、200分の1でも、500分の1でも同じことです。以下のような変換をして、

C:\image_to_j2k.exe -i C:\test.tif -o C:\200R.jp2 -r 200
C:\image_to_j2k.exe -i C:\test.tif -o C:\200I.jp2 -r 200 -I


C:\image_to_j2k.exe -i C:\test.tif -o C:\500R.jp2 -r 500
C:\image_to_j2k.exe -i C:\test.tif -o C:\500I.jp2 -r 500 -I

PSNRとSSIMを測定してみると、

   200R.jp2   200I.jp2 
PSNR27.13827.965
SSIM0.93450.9412


   500R.jp2   500I.jp2 
PSNR23.48824.206
SSIM0.84470.8667

となります。ね、Iの方が大きいでしょ。


つまり、ここで荒っぽく結論しますと、

「-I」をつけて変換すると、画質が良くなる

ということが言えます。


ただし、注意していただきたいのは、「-I」というのは、ロッシーの場合だけ使うことができる「秘密兵器」なのです。ロスレスで使う*3とどうなるのか、と言うと、

C:\image_to_j2k.exe -i C:\test.tif -o C:\100RI.jp2 -r 1 -I


こんな感じで変換はできちゃいますが、出来上がった画像はロスレスではありません。
本物のロスレスとの比較をしてみましょう。

ニセモノ:C:\image_to_j2k.exe -i C:\test.tif -o C:\100RI.jp2 -r 1 -I
ホンモノ:C:\image_to_j2k.exe -i C:\test.tif -o C:\100RI.jp2 -r 1



ファイルサイズが1,284KBですので、本物のロスレス(1,950KB)より小さいですよね。つまり、ロスレスじゃないんです。


というわけで、ロッシーの場合に限り、「-I」というのを末尾につけることで、画質を改善することができるわけなんですが、この「-I」に関連して、いろいろと用語があるわけで、

「-I」なしの別名 :w5x3フィルタ、整数5/3、単に5/3など
「-I」ありの別名 :w9x7フィルタ、浮動小数点9/7、単に9/7など

というような表記を見つけたら、このことを言ってるのだと思ってください。

*1:でも、実際にやらなくても、わかるようにお話していきますので、ご安心を。

*2:PSNRとSSIMについては、こちら参照。http://d.hatena.ne.jp/denshikA/20100224/

*3:つまり、「-r 1 -I」を末尾につけて変換する、ということですね