0

コンピュータが面白い方法で画像を保存することがあると聞いたのを覚えています。たとえば、隣接するいくつかのピクセルがまったく同じ色である画像の場合、これらのピクセルは、次の 30 個またはいくつかのピクセルがすべて「赤」であるという情報として保存されます。赤色。

サイズがギガバイトの大きなプログラムをダウンロードすることがありますが、最初は 900 kb のファイルです。これらは単に、ftp に接続するための単なるツールであり、通常は特にいくつかのデータを提供するものだと思います。

では、たとえば長期保存など、情報にすぐにアクセスする必要がない場合、ギガバイトの情報をキロバイトとして保存できないのはなぜでしょうか?

この例では、プログラムはサイズが 1024 キロバイトのファイルを圧縮するよう求められています。この情報を圧縮するために使用されるプログラムは、メモリ内のバイトが単純に {1,0,0,1,0,0,...} のパターンを形成していることを検出します。プログラムは、後で情報を解凍するように求められた場合に認識できるアルゴリズムを作成し、このパターンが占めるメモリの長さを保存します。元の情報が占めていたデータは、今でははるかに小さくなっています。

必要なアルゴリズムが複雑すぎてファイル全体を圧縮できない場合、圧縮解除が要求されたときに、コンピューターはデータを別のアルゴリズムに分割して、より短い長さのデータを出力することができます。

これはデータを圧縮するための現実的なアプローチですか? Windows 7などのプログラムがデータを「展開」することが時々あるため、これはすでに使用されている可能性があると思いました。これは、プログラムが実際に行っていることですか?

4

1 に答える 1

1

LZW は、ビット文字列の辞書を作成し、文字列の代わりにその辞書への参照を使用することで機能します。他の圧縮アルゴリズムはさまざまな方法で機能しますが、アイデアは常により小さな表現を見つけることです。jpeg などの一部の圧縮ではデータが失われますが、これは、目や耳で失われたデータを埋めることができるメディアでは問題ありません。LZW などの他のものは「ロスレス」であり、データを失うことはありません。

pkzip や winzip などの一部の圧縮プログラムは、データに基づいてさまざまなアルゴリズムを使用します。このアプローチはストリーミングには使用できませんが、ファイルには適しています。

エリア全体は非常に複雑で、一生かけてもすべてを知ることはできません。あなたの追求に幸運を。

于 2013-01-08T01:25:36.273 に答える