ロスレス圧縮
ロスレス圧縮は、データが失われない場所です。入力したものはすべて完全に取得できます。これは、最小のエラーに気付くテキストまたはバイナリファイルに適しています。
ファイル圧縮は、ファイルを取得してパターンをスキャンし、それらのパターンをより少ないスペースを使用する他のパターンに変換することによって機能します。
たとえば、「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つの色にマージされて圧縮される場合があります。
ビデオ圧縮では、多くの場合、最後のフレームまたはキーフレーム以降に変更されたピクセルのみを再描画するように指示が配置されます。