14.4. 画像の符号化
画像には複数の表現方法があります。 目的に応じて使い分けます。
ラスタ表現とベクタ表現 #

二つの画像は、一見どちらも同じように見えますが、片方は svg
(ベクタ表現)、片方は png
(ラスタ表現) です。
どちらが png
かあててください。ラスタ表現は拡大するとぼやけます。
制御情報 #
最近の保存形式では本来の画像そのものだけでなく、以下のような拡張を含んでいます。
exif を読んでみる

圧縮表現 #
ラスタ形式の画像にはいくつかの保存方法があります。 画素の数や一つの画素の情報の豊かさを増やすと、ファイルの大きさが大きくなります。そのため圧縮技術が使われます。 圧縮には、画像の内容で得意不得意があります。
ビットマップ表現 #
最も基本的な表現が無圧縮の ビットマップ形式です。 各画素 (pixel) の情報をそのまま無圧縮で表現します。 一つの画素をどの程度の情報で表現するかは目的で変わります。
- 白黒
- 1bit で表現可能です
- グレイスケール
- 1byte 使えば、256段階で白から灰色を表現できます。2byte なら 65536段階です。
- カラー
- 光の 3 原色である赤、緑、青 (RGB)の強さを指定します。それぞれの色を1byte で表現すれば、 \(256^3=16,777,216\) (約1,600万) 種類の色 となります。
- カラー+透明
- RGBに加えて透明度を指定します。RGBA など1ピクセルあたり4次元になります。
例えば縦横ともに 1000 ピクセルの画像を最後の形式で表現すると、以下のように 3MB となります。 \( 1000 \cdot 1000 \cdot 3 \text{byte} = 3 \text{MB}\)
bmp
や xpm
などがこのような形式ですが、ファイルサイズが大きくなるので、保存にはあまり使われません。
PNG #
PNG (Portable Network Graphics) は、可逆圧縮を行う画像フォーマットです。可逆圧縮の可逆とは、圧縮表現から完全に元データを復元できることを言います。PNGの圧縮は、文字を変換したような画像の圧縮に優れています。
ラスター形式の画像に標準的に使われていて、
たとえば macOS でスクリーンショットを撮ると png
で保存されます
(
16.1. スクリーンショット
)。
可逆圧縮を行う古い表現に gif
もあります。かつては圧縮アルゴリズムの特許の問題がありました。
JPEG #
JPEG (Joint Photographic Experts Group) は、非可逆圧縮形式の画像フォーマットです。 特にこの手法は写真 (自然画像) の圧縮にすぐれ、たとえばほとんどのデジタルカメラは JPEG 形式で画像を保存するようになっています。 非可逆圧縮なので、元の画像を完全には復元できませんが、その差が人には気にならないように設計されています。 一方、文字を変換したような画像を jpeg にすると、輪郭がぼやけることがあります。