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  PSNR 31.212 31.654 SSIM 0.9748 0.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  PSNR 27.138 27.965 SSIM 0.9345 0.9412
    500R.jp2    500I.jp2  PSNR 23.488 24.206 SSIM 0.8447 0.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」を末尾につけて変換する、ということですね