Tôi nghe nói rằng Jpeg sử dụng mã Hufman. Mã Huffman là gì?Kỹ thuật mã hóa Jpeg
Trả lời
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
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ì? –
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:
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:
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.
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ữ.
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.
- 1. Thông số kỹ thuật mã hóa iOS
- 2. Kỹ thuật mã hóa JavaScript hoặc mã xấu?
- 3. Kỹ thuật tối ưu hóa mã trong extjs?
- 4. Thông số kỹ thuật cho Motion JPEG là gì?
- 5. Kỹ thuật tối ưu hóa trong C#
- 6. Kỹ thuật để nhóm mã javascript
- 7. Titanium: Kỹ thuật mã hóa và giải mã dữ liệu trên thiết bị Android
- 8. Công cụ để thực hành kỹ thuật mã hóa và mật mã
- 9. Thư viện mã hóa JPEG nhanh
- 10. Nhập mã vạch video kỹ thuật số mã nguồn mở
- 11. Bộ mã hóa/bộ giải mã JPEG phân cấp
- 12. Kỹ thuật đảo ngược?
- 13. Cách sử dụng kỹ thuật mã hóa khóa công khai và riêng tư trong C#
- 14. Đặc điểm kỹ thuật mã hóa nguồn charset trong MSVC++, như gcc "-finput-charset = charset"
- 15. tiêu chuẩn C: Character thiết và mã hóa chuỗi đặc điểm kỹ thuật
- 16. Vô hiệu hóa mã bảo vệ cho thông số kỹ thuật bảo vệ chạy
- 17. Các kỹ thuật để trực quan hóa dữ liệu
- 18. Kỹ thuật đảo ngược Mã nguồn C từ lắp ráp
- 19. Kỹ thuật ẩn SQL?
- 20. Thuật toán mã hóa mới?
- 21. Thuật toán kỹ thuật Facebook Bigpipe
- 22. Kỹ thuật in Delphi
- 23. Kỹ thuật đảo ngược C++
- 24. nhanh hoặc không đồng bộ JPEG AS3 mã hóa
- 25. Kỹ thuật thông báo nhẹ
- 26. Kỹ thuật đảo ngược Flash
- 27. Phân tích cú pháp định dạng tệp JPEG: Định dạng phân đoạn mã hóa entropy (ECS)?
- 28. Thuật toán mã hóa khóa đối xứng
- 29. Thiết kế Thuật toán Mã hóa Tricky
- 30. Xác định thuật toán mã hóa GSM
Đó 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