2011-02-08 77 views
6

Tôi nghe nói rằng Jpeg sử dụng mã Hufman. Mã Huffman là gì?Kỹ thuật mã hóa Jpeg

+3

Đó là mã Huffman ** **. Nếu bạn googled nó, câu trả lời đầu tiên sẽ đưa bạn đến [Wikipedia của trang] (http://en.wikipedia.org/wiki/Huffman_coding). – darioo

Trả lời

8

Mã hóa Huffman là một phương thức có ký hiệu (ví dụ: byte, hệ số DCT, v.v.) và mã hóa chúng với các mã có độ dài thay đổi được gán theo xác suất thống kê. Một biểu tượng thường được sử dụng sẽ được mã hóa bằng mã chỉ chiếm một vài bit, trong khi các ký hiệu hiếm khi được sử dụng được biểu diễn bằng các biểu tượng mất nhiều bit hơn để mã hóa.

Tệp JPEG chứa tối đa 4 bảng huffman xác định ánh xạ giữa các mã có độ dài biến đổi này (mất từ ​​1 đến 16 bit) và giá trị mã (là byte 8 bit). Tạo các bảng này thường bao gồm việc đếm tần suất mỗi biểu tượng (từ mã DCT) xuất hiện trong một hình ảnh và phân bổ các chuỗi bit cho phù hợp. Tuy nhiên, hầu hết các bộ mã hóa JPEG chỉ đơn giản là sử dụng các bảng huffman được trình bày trong tiêu chuẩn JPEG. Một số bộ mã hóa cho phép một để tối ưu hóa các bảng này, có nghĩa là một cây nhị phân tối ưu được tạo ra cho phép tạo ra một bảng huffman hiệu quả hơn.

Có một cái nhìn tại http://www.cs.duke.edu/csed/poop/huff/info/ cho một lời giải thích sâu hơn nhiều

+1

Cảm ơn rất nhiều, một câu hỏi khác, các hệ số DCT mà bạn đã đề cập là gì? –

7

Chỉ cần để hoàn thành câu trả lời được đưa ra bởi david99world:

Huffman mã hóa chỉ là một bước cuối cùng trong nén jpeg. Nén quan trọng xuất phát từ Ma trận lượng tử được áp dụng cho DCT. Cái gì thế này? Vâng, việc chuyển đổi DCT chỉ là một cách để hiển thị thông tin hình ảnh theo tần số. Thay vì có một ma trận với các giá trị điểm ảnh như thế này:

enter image description here

bạn sẽ có một ma trận với hệ số DCT, hiển thị thông tin tần số, tập trung thông tin nhất ở góc cao bên trái:

enter image description here

Bây giờ bạn có các hệ số DCT ở đây, nó thực sự là bước nén thực sự, phân chia tất cả các giá trị của Ma trận lượng tử dựa trên thị lực mắt người. Ma trận này sẽ làm cho không những hệ số chứa thông tin không liên quan đến mắt người và sẽ gần như giống với những cái quan trọng.

enter image description here

Tại sao bước này quan trọng để nén? Bởi vì bây giờ bạn có rất nhiều số 0, Mã hóa Huffman sẽ nhóm số lượng lớn số không bằng các từ mã nhỏ, vì vậy bạn đang tiết kiệm bộ nhớ lưu trữ.

enter image description here

Bạn có thể thử chương trình trong Matlab toàn bộ thuật toán và bạn sẽ hiểu nó tốt hơn. Lưu ý rằng nếu bạn áp dụng ma trận Q nhiều lần, bạn sẽ có nhiều nén hơn (nhiều số không) hơn, nhưng cũng có hình ảnh chất lượng thấp hơn.

Tôi hy vọng điều này sẽ giúp mọi thứ rõ ràng hơn cho bạn.

Các vấn đề liên quan