2011-02-08 9 views
6

Jpegがヒューフマンのコードを使用していると聞きました。ハフマンコードとは何ですか?JPEGエンコーディングのテクニック

+3

ハフマン**コーディング**です。もしあなたがそれをgoogledすれば、最初の答えはあなたを[Wikipediaのページ](http://ja.wikipedia.org/wiki/Huffman_coding)に連れて行きます。 – darioo

答えて

8

ハフマン符号化は、シンボル(例えば、バイト、DCT係数など)を取り、それらを統計的確率に従って割り当てられる可変長符号で符号化する方法である。頻繁に使用されるシンボルは、わずかに2ビットを取るコードでエンコードされます。ほとんど使用されないシンボルは、エンコードするためにより多くのビットを持つシンボルで表されます。

JPEGファイルには、これらの可変長コード(1〜16ビットの間)とコード値(8ビットバイト)との間のマッピングを定義する最大4つのハフマンテーブルがあります。これらのテーブルを作成することは、一般に、各シンボル(DCTコードワード)が画像に現れる頻度をカウントし、それに応じてビットストリングを割り当てることを含む。しかし、ほとんどのJPEGエンコーダは、単にJPEG標準で提示されたハフマンテーブルを使用します。いくつかのエンコーダでは、これらのテーブルを最適化することができます。つまり、より効率的なハフマンテーブルを生成できる最適なバイナリツリーが作成されます。

ちょうどdavid99worldによって与えられた答えを完了するために、より深い説明

+1

ありがとう、別の質問、あなたが言及したDCT係数は何ですか? –

7

ためhttp://www.cs.duke.edu/csed/poop/huff/info/を見てください:

ハフマン符号化は、JPEG圧縮でちょうど最後のステップです。重要な圧縮は、量子化マトリックスからDCTに適用されます。これは何ですか? DCT変換は、周波数別に画像情報を表示する単なる方法です。左優れ隅にほとんどの情報を集中、頻度情報を示す、あなたはDCT係数の行列を持つことになります

enter image description here

enter image description here

をする代わりに、このようなピクセル値を持つ行列を持ちます

ここでDCT係数が得られたので、人間の視覚に基づく量子化マトリックスですべての値を除算する実際の圧縮ステップになります。この行列は、人間の目には関係のない情報を含む係数をゼロにし、重要なものとほぼ同じにする。

enter image description here

なぜこのステップは、圧縮のために重要なのですか? ハーフマン符号化は、小さなコードワードで大量のゼロをグループ化するので、記憶メモリを節約します。

enter image description here

あなたは、MATLABでアルゴリズム全体をプログラムしようとすることができ、あなたはそれをよりよく理解します。 Q行列を複数回適用すると、より多くの圧縮(より多くのゼロ)が得られますが、より低品質の画像も得られます。

これがあなたのために明確になることを願っています。

関連する問題