画像ファイルのフォーマット - png, JPEG など
概略
png 画像
- png は画像の劣化がありません ( 可逆圧縮)。
- テキストや表、グラフなどの画像の保存に適します。
色数が少なく、輪郭線のはっきりしている画像に向いてます。 - 写真などの画像保存には適していません。
png 保存するとファイルサイズが大きくなります。
JPEG 画像
- JPEG は画像圧縮のときに劣化が生じます ( 非可逆圧縮)。
- 写真などの画像の保存に適します。
色数が多く、模様が複雑な画像に向いてます。 - テキストや表・グラフなどの画像の保存には適していません。
圧縮率が高いと輪郭線のノイズが目立ちやすくなり、圧縮率を 低くするとファイルサイズが大きくなります。
PNG JPEG --------------------------------------- 画像の劣化 なし あり 用途 図表など 写真など
PNG
特徴
- png 画像は 単純なビットマップファイルに比べると小さなファイルサイズになります。
- 画像の劣化がない圧縮です (可逆圧縮)。
zip ファイルなどと似たような考え方でデータ圧縮します。 デコードすると元の画像データに戻ります。
参考で、JPEG などの画像は圧縮のときに劣化が生じ、デコードし たときに元の画像データには戻りません。
参考: 単純なビットマップ画像、bmp など
データ圧縮をしていない単純なビットマップ画像のファイルサイズは 以下のように計算できます。
画素数 × 24bitカラー(3byte) + ヘッダーなどの情報
・例: 400×300画素、24bitカラーの bmp では 400 x 300 x 3 = 360k (1k=1,000換算) 1k = 1,024 換算で 352kB ほどのファイルになります。 (補足) 470kB のファイルになっている場合は 24bit ではなくて 1画素 = 32bit (4byte)で保存されています。 400 x 300 x 4 = 480k (1k=1,000換算) = 469kB (1k=1,024換算)
png と JPEG の比較
png ファイルは、テキストや図表などの画像の保存に適しています。
具体的には
- 色数の少ない画像。
写真や CG のグラデーションのように多くの色を含まない画像。 - 単一色の領域が多い画像。
細かい模様があまりない変化の少ない画像。 - 文字や図形など輪郭線のはっきりしている画像。
写真のように細部がぼやけていない画像。
下は JPEG で保存した画像です。
JPEG 画像は png 画像に比べてファイルサイズが大きいですが、 フォントや図形の周囲のにじみなどノイズが目立ちます。 JPEG の圧縮率を下げるとノイズが目立たなくなりますが、 ファイルサイズはさらに大きくなります。 このような画像では JPEG 保存は適していません。
png ファイルのサイズ
png ファイルのサイズは 同じ画像でも保存するアプリケーションによって多少変わります。
- 保存する png が 24bit png か、32bit png か?。
アルファの情報を含むか、含まないか。
アルファのない画像でも 32bit png で保存するとファイルサイズが大きめになります。 - png も圧縮方法の違いでいくつか段階があり、
これでサイズが変わります。
画像処理ソフト IfranView などに png 保存で段階設定があります。
減色によるファイルサイズの削減
色数の少ない画像では、256色や 16色などに減色することで、 24bitフルカラー (約1600万色) の png に比べてさらに数割ほどファイルサイズを小さくすることができます。
- IrfanViewで画像ファイルを自動加工処理
画像ファイルの自動変換、減色によるファイルサイズ削減など。
JPEG
特徴
- JPEGは、写真など画像では png に比べてあまり品質を落とさずに小さなファイルサイズにすることができます。
- ただし、圧縮のときに画像の劣化が生じます (非可逆圧縮)。
元画像を JPEG で圧縮しデコードしても完全に元の画像に戻りません。 画像の細かい情報が欠落し、劣化した画像になります。
JPEG 圧縮の仕組み
JPEG 圧縮は、- 画像データを 8x8 画素のブロックに分割します。
- 8x8 画素のブロック内で、
離散コサイン変換と呼ばれる方法を使って三角関数の成分に変換します。
離散コサイン変換 - 2.で得た成分のうち、高い周波数成分のデータを除去して、低い
周波数成分のデータだけを符号化して画像データにします。
この処理で、画像の細かい成分のデータがなくなるので、png など 圧縮に比べても非常に小さなデータサイズにすることができます。 高周波数成分を削るほど、データサイズは小さくなります。
非常に高い周波数成分は 人間の目で見ると細かいノイズぐらいにしか見えないので、 このあたりの画像情報が抜け落ちてもあまり劣化が目立ちません。 ただし、高周波数成分を削りすぎると人間の目で見ても劣化が目立つようになります。
(工事中) サンプル : テキスト画像を JPEG 圧縮したときに出るブロックノ イズ。高周波成分を削りすぎると、もわもわしたノイズ模様が目立 つようになる。
JPEG は仕組み上、 細かい部分で輪郭のぼやけている写真などの画像の圧縮に適しています。 輪郭線のはっきりしたテキストフォントや図表などの画像の保存には適していません。 こちらは PNG 画像が適しています。
圧縮率と画像品質 (Quality Factor)
・Quality Factor : 0 以上、1以下 Q値 小さい 大きい ------------------------------ 画像品質 悪い 良い 圧縮率 高い 低い データサイズ 小さい 大きい ・カメラの写真などで、Q = 0.9-0.98 ぐらいが使われます。 ・0.8 以下になると、画像の種類によってはかなり劣化が目立つ ようになります。 ・昔の WindowsXP のペイントで、0.8 ぐらい。 時代相応に圧縮率が高い目。ファイルサイズが小さくなるが、 画像品質はあまり良くない。 ・Windows7 のペイントで、0.9以上ぐらい。 ファイルサイズは大き目だけど画像品質は良い。
JPEG 保存が適さない画像
下の画像は JPEG 圧縮には適さない画像のサンプルです。
JPEG の圧縮率を上げると 高周波数の成分が失われて輪郭線の周囲にもやもやしたノイズ (ブロックノイズ、モスキートノイズと呼ばれる) が発生します。 圧縮率を下げると失われる成分が少なくなり ノイズも目立たなくなりますが、ファイルサイズが大きくなります。
下は64色に減色した png 画像です。サイズは 9.0kB です。 64色以下の画像であれば劣化はありません。
◎ 上のサンプルのファイルサイズの例 png 6bit 9.0kB 64色 png 24bit 11.4kB 約1,600万色 JPEG Q=50 23.0kB ブロックノイズがとても目立つ。 JPEG Q=80 33.5kB ブロックノイズが目立つ、劣化が分かる水準。 JPEG Q=95 80.3kB ブロックノイズが目立たないが、ファイルサイズが大きい。 (注意) ファイルサイズは、保存するアプリケーションによって多少変わります。
高周波成分の有無の話
画像で高周波成分の有無と言われても分かりにくいので、 三角関数のグラフで説明します。
右の絵はウィキペディアの フーリエ級数 の記事にあるグラフです。 矩形波を三角関数で近似したグラフを表しています。
JPEG 画像もこのような仕組みで 画像データを三角関数の成分に分解して近似しています。
高い周波数成分がない (図の上の方のグラフ) ほど矩形波とは大きく異なる波形になり、 高い周波数成分を含む (図の下の方のグラフ) ほど矩形波に近い波形になります。
元の矩形波と三角関数のグラフとの差がノイズになります。 JPEG 画像では元画像に対して誤差が発生します。 誤差が小さい間はノイズが目立ちませんが、 高周波成分を多く除去するほど元画像との誤差が大きくなり、 人間の目で見ても分かるぐらいのノイズとなって現れます。
輪郭のはっきりした画像ほど 高い周波数成分のデータが必要になります。 これを削りすぎてしまうと、 もやもやしたノイズがとても目立つにようになります。