画像ファイルの画質変更を通じて可逆圧縮と不可逆圧縮について体験しよう.
可逆圧縮と不可逆圧縮
現在利用されている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としたファイルをつくろう.これらのファイルを「元」にして以下の操作を行う.
画像を確認してみよう.
画像の見え方を確認してみよう.
ファイルサイズを小さくしてみよう
qualityの値を50として作ったファイルから,qualityの値を変化させて,サイズを小さくしたファイルをつくろう.
jpg形式のqualityの値は単純に画質を示しているため、低い値を指定するほど画質が悪くなる.したがってサイズを小さくするにはqualityの値を低くすればよい.
一方png形式におけるqualityの値は10の位が圧縮率,1の位が圧縮方法を示している.そのため10の位に関しては値が大きいほどファイルサイズが小さくなるが,1の位については圧縮する画像に依存し一概に言うことはできない.
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)
上のようにして出来たimage01_q50_q1.jpgから「元」のqualityが50のファイルに「戻す」ことを試みてみよう.
convert -quality 50 image01_q50_q1.jpg image01_q50_q1_q50.jpg
と打ち込んで見よう.
このコマンドにより,image01_q50_q1.jpgからqualityの値を50にしたimage01_q50_q1_q50.jpgを作ろうと試みているのである.
ls -l を打ち込んで見ると分かるように,「元」のimage01_q50.jpgと,「元に戻そうと試みて」作ったimage01_q50_q1_q50.jpgのファイルサイズは異なる.つまり,「元」に戻せていない事が分かる.このように,不可逆圧縮を施した場合は,「元」のファイルには戻す事が出来ない.

画像を比較してみよう
「元」のimage01_q50.jpgと,「元に戻そうと試みて」作ったimage01_q50_q1_q50.jpgの画像を比較してみよう.「元」に戻せていない事が一目で分かるだろう.

画像を「元に戻す」事を試みる
同じような操作をpng形式のファイルに施してみよう.png形式では可逆圧縮が採用されている.どのようになるだろうか.
jpgの時と同じように
convert -quality 50 image01_q50_q90.png image01_q50_q90_q50.png
と打ち込んで,「元」のqualityが50のファイルに「戻す」事を試みてみよう.
その後, ls -l と打ち込んで「元」のファイルとのファイルサイズの違いを確認してみよう.同じであることが分かるだろうか.このように,可逆圧縮方式の場合,「元」のファイルに戻すことが出来る.
