JPEGハフマンブロックを復号化する(表)
-
21-09-2019 - |
質問
次のブロックはハフマンブロック・マーカーによってネストされている
-HUFF---------------------------------------------------------------------0084-
10 0 1 2 4 3 4 6 5 6 8 a 9 4 2 3
0 1 2 11 0 3 4 21 5 12 31 6 41 51 61 13
22 71 81 91 a1 14 32 b1 d1 f0 15 23 35 42 b2 c1
7 16 24 33 52 72 73 e1 25 34 43 53 62 74 82 94
a2 f1 26 44 54 63 64 92 93 c2 d2 55 56 84 b3 45
83 46 a3 e2
-------------------------------------------------------------------------------
0084の整数として、テーブルの長さであり、ここで、ブロックに含まれていない
JPEG規格に従って、最初のアドレスはaparentlyそれ宛先0(0×10)でACテーブルなる
とaparently以降、それはハフマンテーブルがありますから。
だから、どのようにそれはデコードのですか?
解決
0x10の後の次の16のバイトは、それぞれ長さのどのように多くのコードを教えてくれ。あなたの例では、長さ1ビットの0のコード、長さ2ビットの1つのコード、長さ3ビットの2つのコード、長さ4ビットの4つのコード、長さ5ビットの3つのコード、があるように。
次いで、これらを順に、これらのコードにより符号化された値が続きます。再びあなたの例から:
Code length | Number | Symbol(s)
------------+--------+----------
1 bit | 0 |
2 bits | 1 | 0x01
3 bits | 2 | 0x02 0x11
4 bits | 4 | 0x00 0x03 0x04 0x21
5 bits | 3 | 0x05 0x12 0x31
... etc
あなたはその後、順番にシンボルを割り当て、トップダウンからのバイナリツリーを構築します。この例では、次のようになります。
Symbol | Code
-------+------
0x01 | 00
0x02 | 010
0x11 | 011
0x00 | 1000
0x03 | 1001
0x04 | 1010
0x21 | 1011
...etc
所属していません StackOverflow