ピクシブ百科事典は2024年5月28日付でプライバシーポリシーを改定しました。改訂履歴

JPEGの編集履歴

2012-09-18 22:45:46 バージョン

JPEG

じぇいぺぐ

静止画像データの圧縮方式。画像を周波数領域に変換することが特徴。非可逆。拡張子は.jpgまたは.jpeg。

コンピュータなどで扱われる静止画像のデジタルデータを圧縮する方式のひとつ。またはそれをつくった組織(ISO/IEC JTC 1/SC 29/WG 1、Joint Photographic Experts Group)の略称。JPEG方式による画像ファイルにつけられる拡張子は jpg が多く使われているが、 jpeg 等が使われる場合もある。


非可逆圧縮であり、元データをJPEGに変換すると劣化は避けられない。特に高い圧縮率で圧縮したり、何度も編集して上書きを繰り返したりすると画質の荒れが激しくなる。圧縮率を上げると、有り得ない色(「偽色」という)やノイズが出たりする。


ベタ塗りしたイラストなど、色の境がくっきりしている画像を圧縮すると、ノイズが目立ってしまうため、PNGGIFを使用したほうがよい。その代わり写真などのデータでは、PNGなどよりJPEGのほうが軽量となる。


アニメーション再生を可能にしたMotion JPEGという拡張規格もある(プレイステーション動画再生はこれ)。後継規格としてJPEG 2000およびJPEG XRがあるが、あまり普及していない。


概要

JPEGの圧縮は次のように行われる。

前処理

色空間をYCrCb(Y=明るさ、Cr・Cb=色成分)に変換する(あるいはCMYKもある)。この際2つのCについては縦横1/2や横のみ1/2に間引くことが一般的。これをカラーサブサンプリングなどと呼ぶ。これによりベタ塗りの絵では色にじみが発生するため、画質を保ちたい場合はカラーサブサンプリングをしないようにするとよい。

画像を8×8のブロックに分割する。8×8に足りない部分は適当に埋める。

周波数領域に変換

離散コサイン変換(DCT)を行い、画像を周波数領域に変換する。

これにより8×8個の明度/色強度データは8×8種類の波の振幅データに変換される。

勘違いされやすいところだが、この段階で数値は0~255ではなくもっと大きくなっているため、次段階で(一般的には)最大255で除するが必ずしも0にはならない。

量子化

量子化とは、割り算である。

例えば0~255の数値を表すには8bitが必要だが、これを16で割(って切り捨て)ると0~15になり4bitで表せる。

同様に、DCT後のブロック内の64個のデータに対してそれぞれ決められた値で除算を行う。この除数は量子化テーブルと呼ばれ、JPEGのヘッダにはY成分とC成分に対する2つのテーブルにそれぞれ64個の数値(一般的なフォーマットでは1~255)が用意されている。

ジグザグスキャンおよびハフマン符号化

ハフマン符号とは頻度の高いデータに短い符号語を割り当てることにより圧縮するエントロピー符号の一つである。

JPEGではデータそのものに対してハフマン符号化を行うのではなく、データの桁数それまでに連続した0の数に対して行う。

例えば16,0,0,0,40であれば「5桁、0個」「6桁、3個」となる(桁数は2進法で)。実際のデータは符号語のあとに最少のbit数で表す。

またこの時8×8のデータを読み出す順番は、左上から右下に向かうジグザグの経路を辿る。画像自体をジグザグスキャンすると勘違いするもの(昔の筆者含む)がいるが、注意されたい。この時点のデータは周波数領域である。

なお、このハフマン符号のテーブルは普通に考えれば画像1枚ごとに最適なものを生成する必要があるが、どんな画像もそこそこ圧縮できるテーブルがあり、それを固定で使うものも多い。横着をせず画像1枚ごとに最適なハフマンテーブルを生成することを一般にJPEGの最適化と呼ぶ。


関連タグ

ファイル形式 CG

問題を報告

0/3000

編集可能な部分に問題がある場合について 記事本文などに問題がある場合、ご自身での調整をお願いいたします。
問題のある行動が繰り返される場合、対象ユーザーのプロフィールページ内の「問題を報告」からご連絡ください。

報告を送信しました

見出し単位で編集できるようになりました