4. 可逆圧縮と不可逆圧縮

画像ファイルの画質変更を通じて可逆圧縮と不可逆圧縮の理解を深めます.

可逆圧縮と不可逆圧縮

現在利用されているjpg圧縮のほとんどは不可逆圧縮,png形式で用いられる圧縮は可逆圧縮です.

(参考)可逆圧縮方式のjpg圧縮もありますが,広く利用されているのは不可逆圧縮です.

qualityを50と指定したファイルを作る

jpgについては
convert -quality 50 image01.jpg image01_q50.jpg
pngについては
convert -quality 50 image01.png image01_q50.png
と打ち込んで,qualityを50としたファイルを作りましょう.可逆圧縮と不可逆圧縮を試すための「元」ファイルとして利用します.

画像を確認します

ここで画像の見え方を確認してみましょう.自分のPCからSSHサーバで作業している際には,画像ファイルを自分のPCにコピーする必要があります.

ファイルサイズを小さくする

qualityの値を50として作ったファイルから,なるべくサイズを小さくしたファイルを作ります.jpg形式のqualityの値は単純に画質を示しており,低い値を指定するほど画質が落ちて,サイズが小さくなります.したがって,サイズを小さくするにはqualityの値を低くすれば良いことになります.一方,png形式におけるqualityの値は10の位が圧縮率,1の位が圧縮方法を示しています.そのため10の位の値が大きいほどファイルサイズが小さくなります.

jpgでは
convert -quality 1 image01_q50.jpg image01_q50_q1.jpg
pngでは
convert -quality 90 image01_q50.png image01_q50_q90.png
と打ち込んで,qualityをそれぞれ1, 90としたファイルを作ります.image01_q50_q1.jpg と image01_q50_q90.pngが,サイズを小さくした(圧縮された)ファイルです.

ls -l と打ち込んでファイルサイズの変化を確かめましょう.jpgではかなりサイズが小さくなっていますが,pngの場合それほどではありません.一般的に不可逆圧縮の方が圧縮率が高くなる傾向にあります.

「元に戻す」ことを試みる

圧縮したファイルから「元」のqualityが50のファイルに「戻す」ことを試みましょう.

jpgでは,
convert -quality 50 image01_q50_q1.jpg image01_q50_q1_q50.jpg
pngでは,
convert -quality 50 image01_q50_q90.png image01_q50_q90_q50.png
と打ち込んで,qualityが50のファイルに「元に戻す」ことを試みましょう.

ls -l を打ち込んで見ると分かるように,「元」のimage01_q50.jpgに比べて,「元に戻そう」と試みたimage01_q50_q1_q50.jpgのファイルサイズはかなり小さいままです.このことから「元」に戻せていないことが推測されます.このように,不可逆圧縮を施した場合は,「元」のファイルには戻せません.一方,png形式の場合には,「元」のimage01_q50.pngと「元に戻そう」と試みたimage01_q50_q90_q50.pngのファイルサイズが一致しています,このことから,可逆圧縮方式の場合には,「元」のファイルに戻ったと考えられます.

画像を比較してみる

「元」のファイルと,「元に戻そう」と試みたファイルの画像を比較してみましょう.自分のPCからSSHサーバで作業している際には,画像ファイルを自分のPCに転送する必要があります.

不可逆圧縮のjpgの場合,「元」に戻せていないことが目でも確認できます.pngではどうでしょうか? 確認してみてください.