ファイル圧縮はどのように機能しますか?


19

だから、私は今日、ファイル圧縮を当然のことと考えていることに気付きました。いくつかのファイルを1つにまとめて、どのファイルよりも小さくする機能は、事実として受け入れていますが、実際にはどのように機能しますか?

私は、その方法を縮小するために、すべての重複したエントリをポインタで置き換えることに関係するものを含む、それについての限られた知識を持っていますが、それを超えて私はかなり無知です!

私は常に新しい知識を受け入れているので、私たちのほとんどがここにいると思いますので、尋ねたいと思いました。それでは、SuperUser、圧縮は実際にどのよう機能しますか?


1
Wikipediaの記事は良いスタートですが、より具体的な説明を持っていいだろう。良い質問です(そのような質問はすでにあると確信していましたが、そうではないようです)。
グヌーピ

2
@Gnoupi:確かに、私が最初にしたことは検索でした。どうやらそうではないので、私はそれを修正しようとしました:P
Phoshi

2
写真を投稿して「wot izzit ??」に行くときに使用する「what-is」タグがあります。「how-does-it-work」タグの必要性に気付いてきましたが、それは長すぎて「how-does-it-work」タグは馬鹿げています。「説明」はそれを行うかもしれません。
いんちきキホーテ

@quack quixote:ああ、ありがとう。「plz-send-the-explanation」タイプのタグのオートコンプリートを探していましたが、見つかりませんでした。
-Phoshi

2
「how」タグを数回作成することに近づきましたが、「explain」の方がおそらく良いでしょう。「チュートリアル」および「ハウツー」および「初心者」はすべて半適用可能ですが、完全には適合しません。
いんちきのキホーテ

回答:


18

ロスレス圧縮

ロスレス圧縮は、データが失われない場所です。入力したものはすべて完全に取得できます。これは、最小のエラーに気付くテキストまたはバイナリファイルに適しています。

ファイル圧縮は、ファイルを取得してパターンをスキャンし、それらのパターンをより少ないスペースを使用する他のパターンに変換することによって機能します。

たとえば、「AAAAAAAA」は「8A」に変換できます。

確かに、「8A」が平文であった場合に問題が発生するため、正確に機能する方法ではありません。あなたはファイルを解凍し、それは間違っているでしょう。始めるのに適した場所は、WikipediaまたはLZW Data Compression Algorithmです。

以下にコピーされたこのためのいくつかの単純な擬似コードがあります:

STRING = get input character
WHILE there are still input characters DO
    CHARACTER = get input character
    IF STRING+CHARACTER is in the string table then
        STRING = STRING+character
    ELSE
        output the code for STRING
        add STRING+CHARACTER to the string table
        STRING = CHARACTER
    END of IF
END of WHILE
output the code for STRING

すべての圧縮では、ファイルの圧縮と解凍に使用されるルックアップ辞書を使用します。辞書が大きいほど、圧縮率は高くなりますが、収益の減少法則に直面します

また、圧縮によって常に小さなファイルが生成されるわけではないことにも注意してください。圧縮後に小さなファイルを取得できない状況(小さなファイルの場合、またはランダムデータを圧縮する場合)があります。ランダムデータを圧縮する機能に関して、いくつかの楽しい課題がありました。

「ロッシー」圧縮

上記は主に無損失圧縮に関係します。MP3、JPG、およびh.264などのビデオ/オーディオアプリケーションで使用される他のタイプの圧縮は、非可逆圧縮の例です。

非可逆圧縮は、気付かれそうにないデータを破棄することで機能します。オーディオでは、これは他のさまざまなものと一緒に、約30,000 Hrzおよび100 Hrz未満に聞こえます。画像(静的)では、さまざまなものを削除し、ピクセルをマージし、データを破棄します。

非可逆圧縮は、変換コーディングの一種です。データを平均化して全体のサイズを縮小します。たとえば、画像内の10ピクセルのブロックでは、わずかに異なる色がすべて1つの色にマージされて圧縮される場合があります。

ビデオ圧縮では、多くの場合、最後のフレームまたはキーフレーム以降に変更されたピクセルのみを再描画するように指示が配置されます。


これはロスレス圧縮の説明であり、正確な初期データを復元できる種類であることに注意してください(アーカイブプログラムで使用される可能性が最も高い)。などJPG、例えば使用あなたは小さいサイズのために品質を失うことにした圧縮の他の種類、MP3があります
Gnoupi

Joshの最初の例は、Run-Length Encodingと呼ばれる実際の圧縮方式の形式で、「8A」は「181A」に圧縮されます。明らかに彼の最後の段落がここに適用されます。RLEは、重複が多いデータに対して最適に機能します。
ダウハイアーチ

3
ロスレス/ロッシータイトルを追加し、もう少し詳しく説明します。これをさらに理解する最良の方法は、ウィキペディアの記事を単に読むことです。
ジョシュK

5

圧縮は、データ内のパターンを検出し、これらのパターンを特別な小さなパターンに置き換えることにより機能します。解凍は逆です。特別なパターンを見つけ、それらを表す大きなパターンに置き換えます。どのパターンがありそうかを知ることは重要です。たとえば、テキストで見つかったパターンは、画像で見つかったパターンとはまったく異なる場合があります。一部の圧縮技術は損失があります。拡張が入力を正確に回復することを保証しません。損失が十分に小さい場合、これは通常、音楽や画像などのアナログデータに適しています。ただし、テキストなどのデータは、ロスレス技術で圧縮する必要があります。

ランダムデータを1ビットでも損失することなく圧縮することは不可能であることを認識することが重要です。Nビットのバイナリデータを含むファイルを考えます。2 ^ N個の可能なファイルがあります。これらのファイルのいずれかを1ビットで圧縮すると、圧縮ファイルのサイズはN-1ビットになり、圧縮表現は2 ^(N-1)になります。つまり、可能な圧縮ファイルはそれぞれ、複数の圧縮されていないファイルを表す必要があります。一意の圧縮表現がないと、圧縮解除アルゴリズムは可逆圧縮を保証できません。


3
ファイルは非圧縮(形容詞)の場合がありますが、非圧縮(動詞)の場合はありません。代わりに解凍されます。
いんちきキホーテ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.