gorogoronyan FC2

画像ファイルのフォーマット - png, JPEG など

概略

png 画像

JPEG 画像

                  PNG        JPEG
  ---------------------------------------
  画像の劣化      なし       あり
  用途            図表など   写真など

PNG

特徴

参考: 単純なビットマップ画像、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 ファイルは、テキストや図表などの画像の保存に適しています。

具体的には

  1. 色数の少ない画像。
    写真や CG のグラデーションのように多くの色を含まない画像。
  2. 単一色の領域が多い画像。
    細かい模様があまりない変化の少ない画像。
  3. 文字や図形など輪郭線のはっきりしている画像。
    写真のように細部がぼやけていない画像。

上:png画像 24bitカラー, 11.4kB
上:png画像 24bitカラー, 11.4kB
png なので劣化のない画像。

下は JPEG で保存した画像です。

上:JPEG画像, Q=80, 33.5kB
上:JPEG画像, Q=80, 33.5kB
フォントや図形の周囲にぼやけたノイズが出る

JPEG 画像は png 画像に比べてファイルサイズが大きいですが、 フォントや図形の周囲のにじみなどノイズが目立ちます。 JPEG の圧縮率を下げるとノイズが目立たなくなりますが、 ファイルサイズはさらに大きくなります。 このような画像では JPEG 保存は適していません。

png ファイルのサイズ

png ファイルのサイズは 同じ画像でも保存するアプリケーションによって多少変わります。

  1. 保存する png が 24bit png か、32bit png か?。
    アルファの情報を含むか、含まないか。
    アルファのない画像でも 32bit png で保存するとファイルサイズが大きめになります。
  2. png も圧縮方法の違いでいくつか段階があり、 これでサイズが変わります。
    画像処理ソフト IfranView などに png 保存で段階設定があります。

減色によるファイルサイズの削減

色数の少ない画像では、256色や 16色などに減色することで、 24bitフルカラー (約1600万色) の png に比べてさらに数割ほどファイルサイズを小さくすることができます。

上: png 24bitカラー(1600万色), 11.4kB
上: png 24bitカラー(1600万色), 11.4kB
上: png 6bit(64色) 9.0kB
上: png 6bit(64色) 9.0kB
24bit png に比べて 2割小さいファイルサイズ

JPEG

特徴

JPEG 圧縮の仕組み

JPEG 圧縮は、
  1. 画像データを 8x8 画素のブロックに分割します。
  2. 8x8 画素のブロック内で、 離散コサイン変換と呼ばれる方法を使って三角関数の成分に変換します。
    離散コサイン変換
  3. 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画像, Q=50, 23kB
上:JPEG画像, Q=50, 23kB

JPEG の圧縮率を上げると 高周波数の成分が失われて輪郭線の周囲にもやもやしたノイズ (ブロックノイズ、モスキートノイズと呼ばれる) が発生します。 圧縮率を下げると失われる成分が少なくなり ノイズも目立たなくなりますが、ファイルサイズが大きくなります。

下は64色に減色した png 画像です。サイズは 9.0kB です。 64色以下の画像であれば劣化はありません。

上: png 6bit(64色) 9.0kB
上: png 6bit(64色) 9.0kB
◎ 上のサンプルのファイルサイズの例

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 画像では元画像に対して誤差が発生します。 誤差が小さい間はノイズが目立ちませんが、 高周波成分を多く除去するほど元画像との誤差が大きくなり、 人間の目で見ても分かるぐらいのノイズとなって現れます。

輪郭のはっきりした画像ほど 高い周波数成分のデータが必要になります。 これを削りすぎてしまうと、 もやもやしたノイズがとても目立つにようになります。

関連

inserted by FC2 system