画像ファイル形式

画像ファイル形式
------------------- BMP ---------------------------
BMP(Microsoft Windows Bitmap Image)
またはDIB(Device Independent Bitmap、デバイス独立ビットマップ)は、
マイクロソフトとIBMがWindowsとOS/2にわかれる前のOSを
共同で開発していた頃に作られた画像ファイル形式。
圧縮の方法についても定義されているが、
Windowsが標準では無圧縮のファイルを生成するため、
他のアプリケーションにおいても無指定時は、圧縮はされていない場合が多い。
ファイル形式の細部の変更が何度か行われており、
その結果としてWindowsとOS/2で多少ファイル形式が異なることがある。
機械独立のファイル形式として設計されたため、
実際に存在する画像表示装置(ディスプレイ)や印刷装置(プリンター)が、
画像を上方から処理するものがほぼ全てであるにもかかわらず、
幾何学的なX軸、Y軸方向に座標を指定する形式となっている。
その結果、画像を下から上に向かって記録するボトムアップ形式 (bottom-up)
となっていることが特徴であるが、
後に高さに負の値を指定することでその他大多数の画像ファイル形式と同じように
画像を上から下へ向かって記録するトップダウン形式 (top-down)
を使用することもできるようになった。
しかし互換性の面からProgramming Windowsでは
トップダウン形式のビットマップの作成を推奨していない。
また、トップダウン形式では後述の圧縮をすることができない。
なお、ビットマップという呼称は画像データの表現方式のひとつであり、
本項で述べているマイクロソフト独自のファイル形式を必ずしも指すわけではない。
ファイル構造
ビットマップファイルは、以下のブロックに分かれている。
ファイルヘッダ
ビットマップファイルについての一般的な情報が格納されている。
情報ヘッダ
ビットマップイメージについての詳細な情報が格納されている。
カラーマスク
ビットフィールド形式のビットマップで使用されるデータが格納される。
カラーパレット
インデックスカラービットマップの場合に使用される色の定義が格納されている。
ダイレクトカラービットマップの場合は減色時に優先される色が格納される。
ビットマップデータ
実際のイメージがピクセルごとに格納されている。
カラープロファイル
ICCプロファイルデータそのものか、プロファイルデータのファイルパスが格納される。
------------------------ JPEG --------------------------------
JPEG(Joint Photographic Experts Group)は、
コンピュータなどで扱われる静止画像のデジタルデータを圧縮する方式のひとつ。
またはそれをつくった組織 (Joint Photographic Experts Group) の略称であり、
アクロニムである。
JPEG方式による画像ファイルにつけられる拡張子はjpgが多く使われるほか、
jpeg等が使われる場合もある。
一般的に非可逆圧縮の画像フォーマットとして知られている。
可逆圧縮形式もサポートしているが、
可逆圧縮は特許などの関係でほとんど利用されていない。
1992年9月18日に最初のリリースが行われた比較的古いフォーマットである。
JPEGの欠点を克服すべく数々の後継規格が提案されてきたが、
企業間の思惑なども絡み、いずれも主流になるには至らず、
JPEGが現在も静止画像規格の主流である。
標準では、特定の種類の画像の正式なフォーマットがなく、
JFIF形式が事実上の標準ファイルフォーマットとなっている。
動画を記録可能にしたものにMotion JPEGがある。
立体視 (3D) 用には、ステレオJPEG (JPS) フォーマットがある。
デジタルカメラの記録方式としてもよく利用されているが、
デジタルカメラでは様々なオプション機能を使い、
JFIFを拡張したExchangeable image file format (EXIF)
などのフォーマットとしてまとめられている。
JPEGでは、画像を固定サイズ(8×8画素)のブロックに分割し、そのブロック単位で、
離散コサイン変換 (DCT: discrete cosine transform) を用いて、
空間領域から周波数領域へ変換する。
この変換自体では情報量は削減されない。
変換されたデータは、量子化ビット数の低減によって情報量を落としてから、
ハフマン符号によるエントロピー符号化がなされ圧縮が行われる。
エントロピー符号化とは、
データの生起確率の高低に応じて異なる長さの符号を割り当てることで圧縮を行うものである。
------------------------ PNG -------------------------------
PNG Portable Network Graphics
Portable Network Graphicsはコンピュータでビットマップ画像を扱う
ファイルフォーマットである。
圧縮アルゴリズムとしてDeflateを採用している、圧縮による画質の劣化のない
可逆圧縮の画像ファイルフォーマットである。
1996年に登場し、可逆圧縮の画像フォーマットとして既に普及していたGIF
の後継フォーマットとなることを目指し、
ネットワーク経由での使用を想定した機能や透過処理など、
多くの機能をサポートした。
ウェブブラウザやグラフィックソフトでのサポートも進み、
インターネットを中心に普及した。
画像の色モデル(英語版)として、
最大16ビットのグレースケール、24ビットと 48ビットのRGB、
または8ビットまでのインデックスカラーモード(パレットカラー)
を利用することができる。
透過についてはクロマキーによる透過指定、
および8ビットから16ビットのアルファチャンネルをサポートする。
また、画像に付属するテキストなどのメタデータやガンマ値
なども画像ごとに記録できる。
GIFと異なり、PNGにはアニメーション機能はない。
ただし、PNGはチャンク(データのブロック)で自由に拡張できるようになっていて、
1ファイルに複数の画像を含めることができる。
これを使ってアニメーション機能を追加した MNG と APNG が
別のフォーマットとして開発されている。
他の拡張として、立体視用にステレオPNG (PNS) フォーマットがある。
JPEGは、主に写真的なイメージデータを非可逆圧縮することで
PNGよりも小さなファイルサイズに収めることができる。
そのため、高画質に設定したJPEGと比較すると、
ファイルサイズはJPEGの数倍(大抵は5 - 10倍程度)になる。
-- JPEGとの比較 --
PNGは、テキストや線画など色の境界がはっきりしたイメージに適している。
線画と写真が混在している場合では、目的に応じて
シャープな部分を重視する場合はPNG、
ファイルサイズを重視する場合はJPEGを選ぶことができる。
JPEGは、非可逆圧縮方式でありジェネレーションロスが生じるため、
編集中の一時データの保存には向かない。
JPEGで保存をする段階で画像は劣化し、それを繰り返すたびに更に画像は劣化していく。
-- GIF との比較 --
GIF の代替物として開発された経緯があるため、GIFと比較されることが多い。
主な差異は以下の通り。
ほとんどの画像でPNGはGIFより圧縮率が高い。
GIFは1色透過だが、PNGはアルファチャンネルを持ち半透明の表現が可能。
PNGはフルカラーが可能なため256色のGIFより精細な色表現が可能。
GIFはアニメーションをサポートしているが、PNGはサポートしていない[。
GIFと比較すると圧縮・展開に多少時間が掛かる。
サーバ側のプログラムが動的に画像を生成するような使用法では注意を要する)。