理由も含めて教えてください。
jpegの圧縮方式を一言で言うとどんな感じなんでしょうか?
こんな感じでいかがでしょうか。
グラデーションに強いのがjpegで、
アニメのようなベタ塗りに強いのがgif等。
gifは透過が可能ですが、jpegはできません。
不可逆圧縮といって、圧縮すると元に戻せません。
http://www.htmq.com/gazo/index.shtml
WEB画像について−GIF・JPEG・PNGの特徴
URLのページのように他の形式と比べると解りやすいです。
JPGは自分で圧縮率を決められるのでサイズは任意です。
しかし、圧縮率を高めると見栄えが悪くなります。
また、ベタ塗りで色数の少ないアニメのような画像はJPGだと汚くなるばかりで圧縮する意味がありません。
そういった画像の場合はGIFの方が小さいサイズになります。
一言で言うとJPEGはごちゃごちゃした画像向きですね。
ありがとうございます!
jpegのデータサイズが大きくなる場合はどんな画像でしょうか?
画像全体のピクセルのうち、連続性の高いピクセルが多い画像は圧縮率が高くなります。同じ色が多くある画像は圧縮が効きます。例えば空の画像など。逆に圧縮率が稼げないのはそういう連続した同色のピクセルが並んでいないものです。例えばアイスやチョコバナナに掛けるカラースプレー(さまざまな色の甘いチョコみたいな奴)のように小さないろいろな色が画面中を埋め尽くしているようなものは余り圧縮されません。そういう理由から、セピア色の画像なども比較的小さく出来ます。
ありがとうございます!
例えばアイスやチョコバナナに掛けるカラースプレー(さまざまな色の甘いチョコみたいな奴)のように小さないろいろな色が画面中を埋め尽くしているようなものは余り圧縮されません。
http://www.hatena.ne.jp/1093324469#
jpegで画像データサイズが大きくなる画像はどんな画像でしょうか? 理由も含めて教えてください。 jpegの圧縮方式を一言で言うとどんな感じなんでしょうか?.. - 人力検索はてな
URLはダミーです。
先ほどのリンク先にもあったんですが、
「jpegのデータサイズが大きくなる場合」は
1.画像の面積が大きい場合
2.画像の中で色や明るさが急激に変化する場所が多い場合
3.圧縮率が低い場合
ですね。
ありがとうございます!
画像の中で色や明るさが急激に変化する場所が多い場合
JPEGはハフマンテーブルを用いたハフマン圧縮を使用します
つまり、よく使う色を短いビットの識別符号に置き換え圧縮するわけです
ですから、全く色の異なる色がたくさん、分布しているような画像ではあまり圧縮されません
さらに、ブロック単位で連鎖したデータを圧縮するので局地的に色の変化の多い画像も不得手です
JPEGはRGBではなくYCrCb成分に対して圧縮されるのでもともと CrCbの変位が少ない画像に対しても高圧縮にすると画像の劣化が激しくなります
(YCrCbとは 画像の輝度(明るさ)チャンネル(Y) に関係づけられた二つの色差(色)チャンネル 赤/緑(Cr)と青/黄(Cb)です)
ありがとうございます!
ブロック単位で連鎖したデータを圧縮するので局地的に色の変化の多い画像も不得手
4.2.2. 1.の図、The 64 (8 x 8) DCT basis functionsをご覧ください。
JPEGは、画像をタイル状に区切り、タイルごとに図のような「ぼやけた市松模様」の組み合わせに変換します。
細い線やランダムノイズなどの、市松模様に変換しにくい画像はデータサイズが大きくなります。
また、JPEGに以外の圧縮方式でも共通ですが、明るい画像は色を表す数字の有効な桁数が多くなるため、データサイズが大きくなる傾向があります。
ありがとうございます!
URLはダミーです。
毎日食事の写真をデジカメのjpg方式で撮っています。
データサイズが大きい画像はカラフルな食事の写真で、データサイズが小さい画像は色が単調なもの(たとえば豆腐とかご飯とか)のような気がします。
ありがとうございます!
データサイズが大きい画像はカラフルな食事の写真
みんないい加減な事言いすぎです(笑)
まず、jpegは非可逆ですから、常に一定の圧縮率があると思って下さい。つまり、画像がjpegの圧縮に向いていない場合、無理矢理jpegに向いた画像に変換されているのです。
jpegは、
1)ブロックに分割
2)RGB->YCrCbに変換
3)CrCbデータを間引き
4)DCT変換
5)量子化
6)ハフマン符号化
の順で圧縮します。
まず、Cb/Crデータは色彩、Yは彩度です。
JPEGはCb/Cr値を1/4に間引きます(圧縮率が通常の場合)。これは、人間の目は色相の変化より彩度の変化の方に敏感だからです。
CbCrデータは圧縮前に既に約1/4程度にデータは減らされていますから、色の変化より、彩度の変化の方が、圧縮するときには影響がでます。
このあと、DCT(離散コサイン変換)をします。
lounieさんの言う市松模様の組み合わせに変換するのです。
ここでは、まだ圧縮率はわかりません(ただの変換ですから、データのサイズは変わりません)。
このあと、量子化して(簡単に言えばデータを圧縮しやすいように単純に直す。ここがjpegのqualityの部分になります)、ハフマン符号化します。
ハフマン符号化は、エントロピー圧縮なので、明るい色が圧縮しにくいなどと言うことはありません(また、既に周波数成分に変換されていますから、明るい色が大きい数とも限りません)。数の多いものは短いビット列になります。
この、「量子化した時点で」データにばらつきが有ると圧縮の効かない画像になります。
上記URLの
[確かめてみよう] − 2次元離散コサイン変換 −
の項にあるJavaアプレットの中の、「変換係数」のグラフにばらつきが有るほど、またそのばらつきが大きいほど圧縮率が低くなります。
このように複雑な手順を踏んで圧縮するので、一概にどのような画像がデータサイズが大きくなるかは言いにくいのですが、
8x8ブロックの中で、
隣接したピクセルで極端に彩度、色相が変化し、
尚かつ規則性の全くない画像
は圧縮しにくいと思われます。
とはいえ、具体的にどんな画像とは言えないような物ですから、基本的にはjpegは特に不得意なものは無いと思って良いと思います。
ただし、jpegの特性に合わないため、大幅に画像が劣化してしまう物があります。これらを綺麗に圧縮するためには圧縮率を上げないといけません。これらの画像は結果的にはデータサイズが大きくなります。これらの画像は
・1ピクセル単位で色相が変わる画像。
このような画像の場合1:1:1でサンプリングしなければなりません(つまり、CbCrを間引きしません)。従ってデータサイズは大きくなります。
・原色赤を含むグラデーション、または赤色にシフトしている画像
Y = 0.299×R + 0.587×G + 0.114×B
Cb = 0.564×(B - Y)
Cr = 0.713×(R - Y)
の式でわかるように、画像の赤成分は輝度成分に最も含まれます。人間が敏感なのはY成分ですから、Yを多く含む赤色っぽい画像はjpegによって丸められた結果が目立つことになります。もちろん、輝度の低い赤色でも変化しますが、モニタの特性により、高輝度の方が色の変化が激しいので、高輝度の成分を持つ画像の方が粗が目立つことになります。
・アニメ調の画像
アニメ調の画像はURL先でも述べているように高周波成分が多くなります。これを丸めている以上、色の変化する部分で目立つ劣化が起こります。
ありがとうございます!
URLはダミーです。また、2度目の解凍ですし、間違いの修正なのでポイントは必要ありません。
YCrCb は、Y(明度)Cr(赤色差)Cb(青色差)です。彩度ではありません。
赤はYには余り反映されません。原色赤を含む
画像が劣化しやすいのは、Yに反映されにくいからで、Yに反映されるからではありません。逆の事を言っていました。ごめんなさい。
これは勿論緑や青の原色にも言えることです。
つまり、原色は、計算式からはあまり輝度に反映されませんが、他の自然色などに比べると輝度が高いために、jpegが行った丸め処理や間引き処理が他よりも目立つと言うことです(原色青でも目立ちますが、青自体の輝度が元々さほど高いわけでもないので赤より目立ちません。また、原色緑はそれなりに輝度に反映されていますから、さほど目立ちません)。
jpegが得意な圧縮は写真画像
jpegが不得意な圧縮は原色の画像、アニメ調の画像、極端なノイズの多い画像
になります。
jpegの圧縮方式は一言で言えません。実際の圧縮はハフマン符号化ですが、データを周波数成分に変換しているので、ハフマン符号化の特徴にそのまま当てはまりません。強いて言うなら非可逆圧縮になると思います。
ありがとうございます!
まず、jpgですが、jpgは主に、写真等に使われます。
データサイズが大きくなるデータですが、やはりサイズが大きい画像がデータサイズが大きくなります
理由は、単純に写真を構成しているドットの数が増えるからです。
なおURLはダミーです
ありがとうございます!
ふーん
http://white.sakura.ne.jp/~piro/pics/tips/p0011_20000507.html#da...
Pictures > Tips > 「解像度」とは? - outsider reflex
単純計算で (一つのドットのデータ量)×(全体のドット数)=(画像全体のデータ量)となります。つまりドット数が多いほど大きいデータになる(ファイルのデータサイズが大きくなる)わけです。
とのことです。
http://www.jah.ne.jp/~dnebuya/DietPage/chapter2-2.html
N's -- Let's diet your homepage chapter 2-2
画像データを大きくする原因の一つとして挙げられるのが「色」です。画像の中でたくさんの色を使うと、ドット1つあたりの色情報を大きくしなければならなくなります。例えば、16色しか使わない場合は1ドットあたりの色情報は4ビット(2進数で4桁、つまり0から15)あれば表すことができます。しかし256色使った場合は8ビット(2進数で8桁=1バイト、つまり0から255)必要になります。これがフルカラーになると、色情報が実に24ビットにもなり、16色の場合と比べて実に6倍となります。
とのことです。
本当は圧縮など他にもさまざまな要素が絡むので単純にそうとは言い切れませんが、色数が多い画像はデータサイズが大きくなることがこれでお分かりいただけるかと思います。
JPEGのノイズは画像輪郭部に集中します。人間が視覚的に注視する領域に集中してしまうのです。人は輪郭部以外は実際は詳細に見ていませんので、おそらく平均的には画像の5%以下であろう輪郭部で画像の劣化を評価する必要があります。
JPEGはあくまでも非可逆圧縮です。1pixelどころか最大16x8pixel単位で画像は劣化します。とくに画像輪郭部はJPEGの苦手なところです。JPEG画像にpixel単位の精度は求めません。状況の許す限りはRAWで撮影しております。
との意見があります。
http://www.vector.co.jp/soft/win95/art/se181338.html
32bitコマンド jpgxy(Windows95/98/Me / 画像&サウンド)
JPGファイルの、色ビット数などの情報を表示するソフトです。
ありがとうございます!
ひとことで言うと、モザイク式の圧縮です。
一箇所の点について考えた場合、その周囲8方向に広がる点の色があったとします。その隣り合う点の微妙な違いが人間にはわからないようなものである場合、その情報を省略します。人間の視覚的にはあまりわからないが、格納されている情報量を落としたものがjpegです。
ちなみに画質のコントロールによりこの点の情報を範囲を広くすることによりファイルのサイズを落とすことができます。
ただし、広い範囲でモザイクされたら内容がわからなくなるようなものの場合、画質を落とすことはできないので、必然的にファイルサイズも大きくせざるを得ません。
ちなみにGIFは使用する色の情報を256色に絞込み、類似色に置き換えることにより情報量を削減します。イラストなどの方がGIF向きなのはそのためです。
ありがとうございます!
モザイク式の圧縮
その隣り合う点の微妙な違いが人間にはわからないようなものである場合、その情報を省略します。
ありがとうございます!
jpegの弱いときはどんな時でしょうか?