JPG

JPG は自然画像 ( 写真 ) を扱うのに最適な特徴を持つフォーマットです。Joint Photo. Expert Group と言う団体が規格化したので、その頭文字を取って JPEG ( ジェイペグ ) と呼ばれています。拡張子は JPG や JPEG が使われています。静止画フォーマットの中でも非常にメジャーな形式です。

特徴

■非可逆圧縮でファイルサイズを大幅に小さくする事もできる。

■ファイルサイズは使われている色数に大きく左右される事は殆どない。

■保存時に圧縮率のコントロールが可能で画質優先、ファイルサイズの小ささ優先の選択が出来る。

■対応色数はフルカラー ( 正確には16,777,216色 )で、写真などの画像に適している。

■イラストなどには色むらが出易いので割合と不向き。

推奨用途 ファイルサイズの小ささ 圧縮方法 対応色数 ブラウザ表示
観賞用
( 写真 )
ユーザーの任意設定
サイズ<>画質
非可逆圧縮 1677 万色
その他の特徴 プログレッシブ表示、一部動画にも対応。



JPG のあれこれ



JPG
ベースライン プログレッシブ JPG2000
一番基本的な仕様で、JPEG に対応していると謳っているツールはこちらの形式にはすべて対応していますので、互換性の問題は存在しないでしょう。

GIF の場合は単位が 1 ピクセルのラインでしたが、JPG は8ピクセル四方を1つの単位として画像を上から順に読み込み、表示していきます。
ホームページ向けに最適化された JPG 形式。画像を表示する時は全ての情報を読み出さず、まずはそのブロックを代表する色のみを読み込み、まずはその色を8ピクセル四方の大きさで表示していきます。一番下まで表示が終わったら、もう一度一番上に戻り、各ブロックの詳細なデータを展開して表示します。つまり、いきなり全部読み出すのではなく、各ブロックを少しずつ読み出しているのです。
これにより画像はまず大きなモザイク状で表示され、読み込みが進むに従って徐々に細部が表示されて行くという形式で、画像全体が徐々に表示されていくことで読み込みが終わらない段階でも全体像が掴みやすいと言う特徴があります。
データの格納展開の方法がベースラインとは違いますので、互換性の問題がありますが、現在では殆どのブラウザが対応しているので特に問題はないでしょう。ホームページ上で大きな画面サイズの画像 ( 写真 ) を表示させるのに適している形式だと思います。
2000 年に JPG の規格の一部として認められた認められた新しい JPG 形式。かなり新しい形式なのでネイティブで対応しているビュアー、ブラウザはかなり少ないでしょう。Netscape などのメジャーなブラウザではプラグインを追加することで表示させることは出来ます。
今のところはホームページ上で使用するならば「多くの方が見るページや重要な画像には使用しない」、「表示にはプラグインが必要」と但し書きを明記するなどの対応が必要でしょう。
JPG は画像を記録するときに [ 画像を量子化 ] - [ データの一部を切り捨て ] - [ データの圧縮 ] - [ データの書き込み ] と言うプロセスを踏みますが、JPG2000 は量子化の方法が従来の JPG とは違うので互換性がありません。
JPG2000 は 8x8 のブロック単位で画質をコントロール出来る仕様になっていますので、人物写真などでは人物の部分は高画質に、背景の部分は低画質に設定して「積極的に見せたい部分は高画質でもファイルサイズは抑え目に」などと言ったような使い方も出来ると思います。


プログレッシブ

さて、サブフォーマットの項でプログレッシブは 「GIF のインターレース形式に似たフォーマット」 と書きましたが
徐々に表示されるのが 「似てる」 だけです(おいおい^^;
まあ、プログレッシブもインターレースも同じ効果を狙った物なので混同されている場合もありますが。

GIF では画像を1ラインごとに格納して記録していますが、JPG は画像を縦横数ピクセルのブロックに分け、
そのブロックを基本単位として格納していきます。
基本的には一番左上のブロックから右方向に、右はじまで行ったら次の段へと格納するのですが、
標準的なフォーマットであるベースラインとプログレッシブではデータの格納展開方法が若干違います。

ベースラインではブロックを1つづつ順番に格納していきます。
展開時は1つのブロックの展開が総て終わったら次のブロックを展開していきます。
これにより画像は上の方から表示されていき、最後のブロックまで処理が進むと展開が終了します。

それに対してプログレッシブの場合は、データを格納する時にはそのブロックを代表する色をまず優先して格納、
そしてもう少し細かい情報を格納、さらに細かい情報を格納・・・と言う風に
1つのブロックのデータを段階的に記録しています。
展開時には1ブロックをすべて展開せず、まずはそのブロックの代表的な色だけを読み出します。
そして、そのブロックはその代表的な色で「塗りつぶし」てしまいます。(補完する)
そこまで実行したら今度は処理を次のブロックへ移します。これを繰り返し、最後のブロックまで
それぞれの代表的な色で塗りつぶす(補完する)処理が進むと、一番最初のブロックに戻り、
今度はもう少し詳細なデータを読み出して展開します。
このプロセスを繰り返すことですべてのブロックを段階的に展開していきます。
何段階に分けて格納するかはユーザが保存時のオプションの [スキャン] で設定することが出来ます。

これによってまずは全体のサイズや大雑把なイメージをつかむことが出来、さらに展開が進むと
細かい部分が見えて来るようになります。

プログレッシブ形式は、それぞれのブロックが段々と細かく見えてくるために、
見る側はまるでモザイクが晴れてくるように画像を見ることができます。
プログレッシブ JPG 形式は、転送速度がそう速くないオンラインでも表示までの待ち時間が「心理的」に短くなるように
感じさせることの出来る JPG の拡張フォーマットなのです。



非可逆圧縮って?

非可逆圧縮とは、圧縮前のデータと圧縮後解凍したデータが同一にならない圧縮方法です。
それに対して、圧縮後解凍したデータが同一になる圧縮方法は可逆圧縮法と言います。( GIF 形式などで採用 )

文字データやアプリケーションなどは解凍後にデータが同一に戻らないと、判読できなかったり動かなくなってしまって
非常に困るのですが、写真のピクセルは多少のデータ変化があっても人の目では判別が付かない事が多いので
ある程度の詳細なデータを切り捨てる ( *1 ) ことでファイルサイズを小さくしてしまいます。

ある程度のデータを切り捨てて記録するので、記録前のデータと記録後のデータでは写真として表示されたときには
人間の見た目では殆ど同じように見えますが、データ的にはまったく同一のデータにはなりません。

これは、身近な例で例えると、消費税抜き 198,253 円で売っていたパソコンが有ったとしましょう。
それを見たあなたが、誰かに「パソコンが198,000円で売っていたよ」と話すのに似ています。
本来は税抜きで 198,253 円なのに「198,000 円」と、消費税の部分と 100 円単位を切り捨てて話しても
多くの場合、さほどの支障は出ないでしょう?
でも、正確に言うと売っていた値段とあなたが話した値段には違いが有りますよね。

JPG 形式で記録する場合、このように有る程度のデータを省略(「丸める」とも言う)処理をします。
さて、画像でこのような処理をすれば、画質が劣化すると言う形になって現れます。

JPG はなぜこういう方法をとるのでしょうか?
それはイラストと写真を拡大してみるとよくわかります。

典型的なイラストと写真、どちらも同じ色が使われていそうな部分をそれぞれを4倍まで拡大してみました。
こちらはイラスト。
全く同一の色のピクセルが続き、
急激に違う色が出てくると言う
パターンです。
こちらは写真。
隣り合うピクセル同士は
色の変化は割合と少ないのですが、
全く同一ではない
と言う特徴があります。

そう。写真は隣り合うピクセルは似てはいますが同一ではないと言う傾向が強いのです。
変化が少ないと写真らしくなくなってしまいます。
GIF は同一ピクセルが続くときに圧縮効率が上がる特徴があるのですが、
写真ではこの圧縮方法ではあまりデータが小さくなりませんので、
同じ方法では不向きなので、別の方法を取る必要があります。
JPG では数学の手法を使ってこれを解決しています。
具体的には・・・・難しいのでアプリケーションを作る方以外は知る必要はないです(笑)

さて、この「非可逆圧縮法」はデータの一部を切り捨ててしまうために、データの完全性を維持しながらデータを圧縮する
「可逆圧縮形式」に比べてデータのファイルサイズを非常に小さくする事が出来るのが特徴です。
JPG 形式はこの非可逆圧縮法を使った代表的なものです。

反対に可逆圧縮の代表的なものは LHA や ZIP などです。圧縮率は非可逆圧縮法ほどは高くはありませんが
圧縮解凍してもデータは変化(劣化)しないため、実行ファイルやテキストファイルなどの
わずかな変化が起きては困るデータを圧縮するときに使われます。

JPG の非可逆圧縮にはもう一つ特徴があります。
それは、データの詳細な部分を省いて記録するのですが、どこまでを残し、どこからを切り捨てるかです。
沢山のデータを残せばファイルサイズは大きくなり、細かい部分も記録される事で画質も良くなります。
反対に多くを切り捨てればファイルサイズは小さくなりますが、画質は低下します。

つまり、その画像を書き出す人自身がファイルサイズと画質を (ある程度の範囲ですが) 決定することが出来るのです。

前出のパソコンの値段の話で言えば消費税抜き 198,253 円 のパソコンを 198,200 円と言うか、
税抜き198,000 円と言うか、ただ198,000 円と言うか、20 万円と言うかの様な違いです。
詳しく言えばオリジナルに近い情報(画質)になりますがデータ量は大きいまま、
アバウトに言えばデータ量は少なく済みますが、情報(画質)は精度の低い物になります。

Photoshop 4.0 では 0 ( 低画質 ) 〜 10 ( 高画質 ) までの11段階で記録することができます。

*1 正確に言うと JPG には可逆圧縮を使った方法もありますが一般的ではありません。




デジカメの JPG ?

デジタルカメラが出力する画像形式には TIFF や独自の形式など幾つか種類が有りますが、
最近発売になった機種で一般的なものは DCF ( EXIF ) 形式かもしれません。

EXIF ( エグジフ ) は富士フィルムが中心になって作られたフォーマットで、JPG 形式にコメントなどのテキスト情報が
格納できる様に拡張したフォーマットです。データ構造は JPG と全く一緒なので画像を表示するだけならば
専用のアプリケーションは必要なく、一般的なブラウザや CG ビュアーでそのまま表示できる様になっています。

DCF は JEIDA ( 社団法人日本電子工業振興協会 ) が規格化したデジタルカメラ用の規格です。
この規格は画像フォーマットだけでなく、記録媒体の種類や記録媒体上の配置、音声ファイルの扱いなど、
デジカメにおける様々なデータの扱いについてまでもをトータルにまとめた規格です。

EXIF と同時期にキャノンが中心となって作られた CIFF ( シフ ) と言う同様のフォーマットがあります。
後にこれらの2つは画像フォーマット部分は EXIF 、画像ファイルのファイル管理部分は CIFF をベースに拡張して
統合され、DCF と言う規格としてまとめられました。
DCF は画像フォーマットだけでなく、ファイルの扱いなども規定されているので、DCF をサポートしているデジカメでは、
カメラ同士で直接データを受け渡しが出来、受け渡された側のデジカメでも撮影した画像をデジカメ上でそのまま
表示 ( 再生 ) する事が出来るようになっています。

実は DCF に規定されている画像フォーマットには幾つかの種類があるのですが、一般的なのは JPG フォーマットを
独自に拡張した画像フォーマットで、拡張子は JPG ですが、本来 JPG ではサポートされていない機能があります。
例えばその画像の撮影日時、撮影データ、カメラのファームウエアのバージョンなどの情報が
画像データのヘッダ部分に無圧縮で記録されています。

これらの拡張された部分と画像データ部分をパソコン上で同時に読み込むには対応したアプリケーションが必要 ( *2 )
ですが、撮影したままのデータをデジタルのアルバムとして保存したり、撮影したデータを整理するときなどには
膨大な枚数の画像一覧を見たい場合にも、本来のサイズを読み込み縮小してんで一覧表示させるより、
保存されているサムネイルを呼び出して画像一覧を作った方が速度的にずっと有利です。
また、画像を見て「これ、何時撮ったんだっけ?」なんてはよくあることですが、こういう場合も撮影日時が記録されているので判断がしやすく、なかなか便利な機能かもしれません。

ただし、一端 Photoshop など、EXIF に対応していない ( ベースラインとプログレッシブ にしか対応してない ) アプリケーションで上書き保存してしまうとこれらの EXIF 固有のデータは消えてしまいます。 ( 対応していないので当たり前ですが )
現在の所、EXIF 固有の情報を維持したまま加工が行えるソフトには Photoshop Elements が有ります。( Photoshop 6.0 や Photoshop LE では対応していません )

*2 これらの情報は無圧縮のテキストデータとして格納されている場合が多いので、おすすめは出来ませんが
  メモ帳などのテキストエディタで無理矢理閲覧することも可能です。



ヘッダは不要の場合もある

EXIF 形式に格納される情報は後々の整理などには確かに便利です。しかし HP に載せるなど、
オンラインでやりとりする場合はどうでしょう?
この様な場合では一般的には画像が表示されるだけで十分な場合が殆どですし、サムネイル画像や撮影日などの
付加情報も HP で閲覧する場合には画像の中に埋め込まれている必要は特にないはずです。
便利さとは逆に、ヘッダ部分に埋め込まれているデータがファイルサイズを増大させてしまい、転送完了まで
無駄に時間が掛かると言うデメリットがあって、EXIF は一般の JPG 形式よりもオンラインには不向きです。

ちなみに Photoshop も EXIF の様に JPG のヘッダ部分を独自にを拡張しており、Ver. 4.0 では Photoshop の
バージョン名などが格納されています。その他にユーザーが任意で著作権情報やコメントなどを埋め込むことも
出来るようになっています。
( Ver.5.5 では adobe と言う文字列が格納されているだけでしたが詳細は不明です^^; )
やはりこれも少しでも転送時間を短くしたいオンラインでのやりとりにはやや不向きと言えるでしょう。

話をヘッダ部に戻します。オンライン用にはヘッダ部分は特に必要とされない、どちらかと言うと無駄な存在に
なることが多いのですが、通常はアプリケーションが自動的に書き込むので削除したくてもできません。
リンクバナーなどの小さな画像ではこれらの必要とされないデータの比率が高くなってしまうので困りものでした。
もし、これらの無駄な情報を削除したいのであれば、一端 BMP などに変換してからヘッダ部分に何も格納しない
アプリケーションを使って改めて JPG に書き出すのが一般的ですが、JPG は非可逆圧縮の為に
上書き保存しようとすると画質は落ちてしまい、画質を維持しようとすると圧縮率を下げるしかなく、
また、一端 JPG として書き込まれた画像はそのまま上書きしても効率の良い圧縮率が確保出来なかったりするので、
データを小さくしようとすると画質が大幅に犠牲になり、その割にはファイルサイズは大して小さくならなかったのです。

JPEG Cleaner と言うオンラインソフトは JPG に含まれているこれらのデータを削除してくれるツールです。
ヘッダやサムネイル画像のデータを削除するときに画像を展開や再圧縮をせずに書き直すために、画質はそのままで
ファイルサイズだけを小さく出来る便利なツールです。
伊月めい さん作の Windows 95/98/2000 用フリーウエアで、 同氏の HP "SMALL CALL " で入手できます。


GIFの解説に戻る
メニューへ戻る
PSDの解説へ