こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

画像ファイルの圧縮

あるテキストで、
....上記で、BMP以外の形式はデータ容量を小さくするために圧縮ができる形式であり、そのうち、Tiff GIF PNG は一度圧縮しても元に戻すことができる可逆圧縮方式ですが、JPEGは一度圧縮すると元に度せない、非可逆圧縮方式です。
----------------------
という説明がありました。
ここでの圧縮というのは、zipなどのことを言っているのではないと思うのですが、そうすると、
画像処理ソフトで、そのファイルを開き、保存(変換)する際に、何段階か、品質と、容量のサイズの小ささのトレードオフで、選べたりすると思います。
可逆というのは、その際に、サイズを例えば小さくして保存して、またあとで開きなおして高品質な容量の大きなファイルにすることもできる、といったことを意味しているのでしょうか。それはそれで信じにくいのですが。

投稿日時 - 2018-07-29 17:39:34

QNo.9523072

困ってます

質問者が選んだベストアンサー

#5です。
> ポイントとしては、画像ファイルについて「圧縮」といったばあい、結局、何の操作もせずに、ソフト側で勝手に圧縮されていることを言っているのか、という点です。zipなど、手動で意識的に行う作業としての圧縮でもなく、またフルサイズの画像を、web用などに縮小変換することを言っているのでもなく、あくまで自動的に最小化される処理としての圧縮のことを言っているのか、という点です。

失礼しました。質問の真意を読み落としていたようです。上のポイントに関して言うと、アプリケーション内での圧縮やWebへのポストのときは、特に圧縮方法に関して説明がなければアプリやWebの表示に最適化したように非可逆に圧縮を勝手にやることが多いと思います。実際には元の画像が圧縮されていることがほとんどなのでそれに対して再圧縮かけても効果は低く表示に最適なように画素数を間引くことでサイズを小さくすると思います。2Kのディスプレイに全画面表示しても2Mピクセル程度なので、それに10Mピクセルのカメラでとった画像を表示するのは無駄。それに対して、画像編集ソフトなどで加工した場合は保存時に各圧縮フォーマットを選択でき、ユーザーが元データを保持したいか圧縮率を上げてファイルサイズを小さくしたいか選べるようになっているのが通常と思います。

>本質的に、それを数式化して保存するなどということは、基本、不可能ではないでしょうか。どれだけ隣同士の色が近くても、1ドットごと、24bit フルカラー(1677万色)であれば、各ドットの色はかなり違っているはずで、連続性や法則性を見つけることは基本不可能と思われます。となると、ある程度の大雑把さは許容範囲とし、どこまでを可逆圧縮とよび、どこからを不可逆圧縮とよぶのかで、何らかの人為的な線引きをしているのだろうと思うのですが、どうなのでしょう。

非可逆圧縮はデータ列に特定のパターンの繰り返しや出現頻度のばらつきに着目して出現頻度が低いパターンには多くのビットを割り振ったり、特定のデータの繰り返しはその繰り返しパターンをデータ化したり、隣り合うドットの値の差分をデータ化したりして圧縮します。だから特定のパターンが無い、隣接するドットの差分をとっても意味がないような画像の場合(例えば、極端な例ですが白(R:G:B 100%)のドットと黒(R:G:B 0%)のドットがチェッカー板の目の様にまだら模様になっているような画像を非可逆圧縮しようとすると圧縮どころかデータが膨れ上がります。
青空の場合それぞれのピクセルが全く同じ色でなかったとしても、RGBに分解してそれぞれの値の隣接の差分がそんなに大きく触れるわけではなく、RGBそれぞれの隣接ピクセルの差分で表せばフルのビット数を使わなくてすみます。自然界の画像は概ね隣接の空間内がそれほど大きな変化が無いパターンで構成されているので非可逆圧縮してもそれなりに大きなファイルサイズの圧縮が可能です。なんで自然がそうなっているかと言われればもはや神様に聞いてくれとしか言いようが無いです。それから、前の回答にも書いたようにもともとカメラで写した自然界の画像そのものが撮像素子の数やそれぞれのビット数に制限されているので(しかもたいていJPEG圧縮された状態で保存される)、元データが無限ではなく、すでにフィルターが多少かかった状態です。
ちなみにJPEGなどの非可逆圧縮は全く別の方式を使っています。ピクセルの色差(RGBではなく、より人間の目の間隔にわせた色の変化を表すデータ)の変化をコサイン数列で表して高い周波数成分(隣接のピクセル間のデータの変化が激しく変化するようなパターン)を切り落とす、離散コサイン変換と言う手法をメインで使っていますが、簡単に言うとあんまり細かい色差の変化は人間の目には感じられないしノイズの可能性もあるので無視することによって圧縮します。更にそのデータをPNGのようなピクセルデータの出現頻度や繰り返しパターンなどによって圧縮します。そう言う画像データがカメラから出力されてくるので、それをいったんビットマップに展開しても細かい変化のパターンはすでにフィルターされて落とされているので、上で極端な例で非可逆圧縮したら容量が増えてしまうようなパターンのデータはそもそも通常の使用では排除されていると言って良いと思います。ただ、圧縮技術は上だけでなく考えられる限りの手法が取られているので、圧縮されたデータを別の方法で再圧縮してもデータ容量を減らすことは期待できず、一般ユーザーが使う段では画素数を落としたり、細かいデータの変化をよりたくさん無視することによってデータ容量を減らすと言うのが主な作業になると思います。

投稿日時 - 2018-08-01 08:48:42

お礼

いろいろと大変参考になりました。
>RGBに分解してそれぞれの値の隣接の差分がそんなに大きく触れるわけではなく、RGBそれぞれの隣接ピクセルの差分で表せばフルのビット数を使わなくてすみます
→完全にランダムな画面に比べたら、隣の差がずっと、小さいという性質はずいぶんデータの節約に役立つわけですね。これを使うのが、可逆圧縮なわけですね。
前回いただいたご回答にも改めて、その辺の、非可逆のjpegとの違いが書かれており、きちんと読んでみてよく分かりました。失礼しました。ありがとうございました。

投稿日時 - 2018-08-01 21:47:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(6)

ANo.5

ZIPなどのファイル圧縮は圧縮前のファイルを解凍後に100%もと通りにできます。ビジネス文書でてにをはを少しでも落としたら意味が変わって大変なことになります。なぜ圧縮できるかと言うと、ビジネス文書であってもスペースが多かったらスペースのコードを個数分だけ残すので無くあるポイントからいくつスペースが続くか記号化した方が効率が良いから。
一方で画像となるとだいぶ話が変わります。我々の馴染みのある画像は同じパターンの繰り返しがとても多いです。例えば空が写っている写真だとその部分は青が全面青で埋められているのでどこからどこまで青かを指定すれば相当容量を節約できます。でも青空でも場所によって微妙に色合いや濃淡が違います。ほかの風景や人の顔、服、建物も似通った輝度、色味のパターンの繰り返しが多いです。であれば1ドットずつ記録するのでは無く隣のドット(画素あるいはピクセルと呼びます)との差分を記録すれば容量の節約が出来ます。こう言う圧縮技術を使えば元の画像データを損なう事なく可逆的に(ロスレスとも呼びます)大幅に容量を減らすことができます。
それがPNGなどの可逆的な圧縮。でも人間の目はそんなに細かい輝度や色合いの変化に気付きません。であればあまり細かいピクセルの変化を端折ってしまえば見た目には変わらないけれどさらに大幅な圧縮率を得ることが可能です。それがJPEGに代表される様な非可逆圧縮。
ところで今のデジカメやスマホのカメラは10
メガピクセルを超える様になってきていて4Kテレビにも写せないほどのデータ量になっています。人間の目にはもはや不必要。だからほとんどの場合カメラのデータは元々JPEG圧縮されています。とは言え元のデータ(ローデータとか呼びますが)が巨大なのでJPEGデータそのものがでかいのですが(ざっくり言うとx メガピクセルのカメラのデータはx/2 メガバイト)写真に他の話をする場合、そもそも出発点が非可逆圧縮されたものにあることがほとんど。それをそれ以上詳細を落とさない様にするのがPNGなどへの変換で、さらに圧縮率を上げるために詳細を削ってJPEGなどで保存するという事です。

投稿日時 - 2018-07-30 23:27:37

補足

ありがとうございます。その圧縮の仕組み自体は、よく分かっているつもりです。可逆、非可逆、そのしかた自体は大丈夫です。
ポイントとしては、画像ファイルについて「圧縮」といったばあい、結局、何の操作もせずに、ソフト側で勝手に圧縮されていることを言っているのか、という点です。zipなど、手動で意識的に行う作業としての圧縮でもなく、またフルサイズの画像を、web用などに縮小変換することを言っているのでもなく、あくまで自動的に最小化される処理としての圧縮のことを言っているのか、という点です。

また、別の視点で原理的なところでは、もとの何らかの画像があるとして、それはドットのデータの集合だと思います。そしてそれは、アナログデータではなく、デジタルデータとして存在するとします。(アナログデータを基準にすれば、すべては不可逆圧縮になるはずなので)
本質的に、それを数式化して保存するなどということは、基本、不可能ではないでしょうか。どれだけ隣同士の色が近くても、1ドットごと、24bit フルカラー(1677万色)であれば、各ドットの色はかなり違っているはずで、連続性や法則性を見つけることは基本不可能と思われます。となると、ある程度の大雑把さは許容範囲とし、どこまでを可逆圧縮とよび、どこからを不可逆圧縮とよぶのかで、何らかの人為的な線引きをしているのだろうと思うのですが、どうなのでしょう。

投稿日時 - 2018-07-31 20:53:50

それと、BMPも圧縮型です。
といっても、RLE方式の圧縮は、もう使ってる人はいませんが。
パレットモードの時だけランレングスモードにできるってだけですが。

投稿日時 - 2018-07-29 18:59:41

ANo.3

手前味噌ですが、同様の質問に過去回答していますので、そちらを一度ご覧ください。

参考URL:https://okwave.jp/qa/q9498792.html

投稿日時 - 2018-07-29 18:37:49

ANo.2

画像で可逆圧縮と言うと目的は元の画像情報を壊さずファイル容量の縮小って事になります。
元の画像によりますがファイル容量が1/2とか2/3とまで下げられます。1枚なら大した事は無いですがこれが数万ファイルとかなると差は大きいです。

非可逆圧縮もファイル容量の縮小が目的ですがこちらは元の画像情報を一部で人間の見た目で問題の無い程度には破壊と言うか省略することでファイル容量を小さくします。
元の画像によりますがファイル容量が1/10近くまで下げられるような事もあります。

投稿日時 - 2018-07-29 18:20:00

ANo.1

可逆というのは画像のサイズはそのままなのに
ファイルの大きさが小さい状態を指します。
なので開いた際は同じ大きさで読み込めますよ。

画像サイズを小さくして保存してしまったら
情報は失われてしまいます。

投稿日時 - 2018-07-29 17:46:12

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-