2013-05-09 49 views
22

Tôi đã tự hỏi liệu có ai có danh sách thuật toán nén dữ liệu hay không. Tôi biết về cơ bản không có gì về nén dữ liệu và tôi đã hy vọng tìm hiểu thêm về các thuật toán khác nhau và xem những thuật toán nào là mới nhất và chưa được phát triển trên nhiều ASIC.Thuật toán nén dữ liệu

tôi hy vọng để thực hiện một ASIC nén dữ liệu mà không phụ thuộc vào loại dữ liệu đến trong (âm thanh, video, hình ảnh, vv.)

Nếu câu hỏi của tôi là quá mở kết thúc, xin vui lòng cho tôi biết và tôi sẽ sửa lại. Cảm ơn bạn

+1

Hmmmm có rất nhiều thuật toán nén mà bạn đang tìm kiếm về mặt "tốt nhất". Chẳng hạn như tốc độ hoặc tỷ lệ nén hoàn toàn thấp hơn hoặc tỷ lệ nén cao nhất? Trong đó có ASIC được thiết kế cho họ, đó là một câu hỏi nghiên cứu. Tôi chắc chắn nhất nếu không phải tất cả các thuật toán nén chính thống đều có một số dạng thực thi ASIC. – Nomad101

+1

http://www.ccs.neu.edu/home/jnl22/oldsite/cshonor/jeff.html – taocp

+0

@taocp, cảm ơn bạn! – Veridian

Trả lời

31

Có rất nhiều thuật toán nén trên mạng. Những gì bạn cần ở đây là một thuật toán nén không mất dữ liệu. Một thuật toán nén không mất dữ liệu nén dữ liệu sao cho nó có thể được giải nén để đạt được chính xác những gì đã được đưa ra trước khi nén. Ngược lại sẽ là một thuật toán nén mất dữ liệu. Nén mất dữ liệu có thể xóa dữ liệu khỏi tệp. Hình ảnh PNG sử dụng nén không mất dữ liệu trong khi hình ảnh JPEG có thể và thường sử dụng nén mất dữ liệu.

Một số thuật toán nén biết đến rộng rãi nhất bao gồm:

tài liệu lưu trữ ZIP sử dụng một sự kết hợp của Mã hóa Huffman và LZ77 để cung cấp cho nén nhanh và thời gian giải nén nén tốt hợp lý tios.

LZ77 là khá nhiều dạng RLE tổng quát và thường sẽ mang lại kết quả tốt hơn nhiều.

Huffman cho phép các byte lặp lại nhiều nhất để biểu thị số bit ít nhất. Hãy tưởng tượng một tập tin văn bản trông như thế này:

aaaaaaaabbbbbcccdd 

Một thực hiện điển hình của Huffman sẽ cho kết quả trong bản đồ sau:

Bits Character 
    0   a 
    10   b 
110   c 
1110   d 

Vì vậy, các tập tin sẽ được nén như thế này:

00000000 10101010 10110110 11011101 11000000 
             ^^^^^ 
           Padding bits required 

18 byte giảm xuống 5. Tất nhiên, bảng phải được bao gồm trong tệp. Thuật toán này hoạt động tốt hơn với nhiều dữ liệu hơn: P

Alex Allain có a nice article trên Thuật toán nén Huffman trong trường hợp Wiki không đủ.

Vui lòng hỏi thêm thông tin. Chủ đề này khá rộng.

+0

Tôi chỉ hỏi về sự tò mò - có bất kỳ thuật toán nén nào có thể nhận ra các mẫu trong dữ liệu không? Ví dụ: 'ababab'. – Novak

+0

Đó là phiên bản RLE phức tạp hơn một chút, hoặc chính xác hơn, LZ77: P (Theo đó, tôi có nghĩa là LZ77 xử lý điều đó, nhưng nó thường sẽ không làm gì trừ khi thao tác một đoạn dữ liệu sẽ thu nhỏ tệp) –

+0

@ Magtheridon96, wow, cảm ơn bạn rất nhiều. Bạn có biết bất kỳ tài nguyên nào hiển thị dấu hiệu hiệu suất của các thuật toán này trên các nền tảng khác nhau không? Ví dụ, một người nào đó có thể chạy Huffman nhanh như thế nào và nếu nó là phần mềm hay phần cứng? Tôi đang tìm cách để thực hiện một đơn vị nén dữ liệu phần cứng (nếu tôi thấy nó có ý nghĩa), điều đó sẽ cung cấp cải thiện đáng kể so với việc thực hiện phần mềm. – Veridian

3

Có rất nhiều thuật toán nén dữ liệu khủng khiếp. Nếu bạn đang tìm kiếm một thứ gì đó trong bách khoa toàn thư, tôi khuyên bạn nên sử dụng Cẩm nang nén dữ liệu của Salomon và cộng sự, bạn có thể nhận được (và có các phần tốt về nguyên tắc và thực hành nén dữ liệu, tốt).Tôi nghĩ tốt nhất là nén ASIC thường được thực hiện cho một ứng dụng cụ thể, hoặc như một phần tử chuyên biệt của SoC, chứ không phải là một chip nén độc lập. Tôi cũng nghi ngờ rằng tìm kiếm một định dạng nén "mới nhất và lớn nhất" là cách để đi tới đây - tôi mong đợi sự chuẩn hóa, trưởng thành và thể lực cho một mục đích cụ thể quan trọng hơn.

1

Dưới đây là một số thuật toán lossless (hoàn toàn có thể phục hồi dữ liệu gốc sử dụng này):

  • Huffman đang
  • LZ78 (và biến thể LZW)
  • LZ77
  • Arithmetic mã hóa
  • sequitur
  • dự đoán có khớp một phần (ppm)

Nhiều định dạng nổi tiếng như biến thể sử dụng png hoặc gif hoặc kết hợp các định dạng này.

Mặt khác cũng có thuật toán mất dữ liệu (thỏa hiệp tính chính xác để nén dữ liệu của bạn, nhưng thường hoạt động khá tốt).

Để tìm hiểu thêm về nén dữ liệu, tôi khuyên bạn nên https://www.elsevier.com/books/introduction-to-data-compression/sayood/978-0-12-809474-7. Nó là một văn bản giới thiệu rất dễ tiếp cận. Phiên bản thứ 3 hiện có trên pdf trực tuyến.

+0

Với tôi, rahilshaikh.weebly không *** không ** trông ** *** hợp pháp. Tổng quan, giá (giảm 15% tại Elsevier) và khối lượng của phiên bản bìa mềm trông ấn tượng. – greybeard

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