2016-04-26 8 views
0

現在、ハフマンコーディングをテストしています。ハフマンベースの圧縮を受けると、どのタイプのファイル(.txt、.jpg、.mp3など)が良好な圧縮を受けるかを知りたかったのです。私はハフマンのJavaでのコーディングを実装しました。私は、.txtファイル(通常の英語テキストのもの)のサイズを約40%縮小し、.jpg、.mp3、および.mp4のほぼ0%〜1%私のプログラムは非常に遅いため、1MB以上の巨大なファイルではテストしていません。ハフマンコーディングは、より頻繁に出現するシンボルを持つファイルには最適ですが、ビデオ、オーディオ、画像ファイルにはどのようなシンボルが存在するのかわからないため、質問があります。私はこのプログラムを設計して以来(私は学校で私のプロジェクトのためにしました、私はそれを否定しません、私はそれを自分で行い、私は研究のためのいくつかの指針を求めています)、私はそれがうまくできた。教科書のハフマン符号化アルゴリズムを使用して、どのファイルの圧縮率が良いですか?

ありがとうございました。

注:このプロジェクトは、最初は.txtファイル用にのみ作成されていましたが、他のすべての種類のファイルでも動作していたため、テストしたいので、この質問をしなければなりませんでした。画像ファイルの場合、シンボル自体をエンコードするのではなく、RGB値をエンコードしていることがわかりましたか?私が間違っているなら、私を訂正してください。

答えて

3

これは、ファイル内の冗長性に関するすべてです。

いずれのファイルでも、各バイトは8ビットを占有し、1バイトあたり256個の異なるシンボルが可能です。テキストファイルでは、実際には比較的少数のシンボルが使用され、シンボルの分布はフラットではありません(qよりもが多い)。したがって、情報「密度」は、1バイトあたり5ビットに似ています。

JPEG、MP3、MP4はすでに圧縮されており、冗長性はほとんどありません。すべての256の記号が使用され、ほぼ同じ頻度であるので、情報「密度」はバイトあたり8ビットに非常に近い。さらに圧縮することはできません。

+0

私は、ビデオ、オーディオ、画像ファイルをほとんど圧縮していない理由を知っています。テキストファイル以外に、ハフマンアルゴリズムが優れているファイルはありますか? – theprogrammer094

関連する問題