Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
678 KB
Nội dung
PHẦN 1 GIỚI THIỆU ĐỀ TÀI I.1. GIỚI THIỆU Công nghệ thông tin (CNTT-IT) được mệnh danh là ngành của mọi ngành. Thực vậy, ta có thể thấy hầu hết mọi ngành, nghề đều ít nhiều có ứng dụng CNTT vào công việc của nó. Bảo mật thông tin, nén dữ liệu là công việc cần thiết trong ngành CNTT. Từ thời xa xưa, con người đã biết gìn giữ thông tin trong quân sự, trong chiến tranh nhằm làm cho thông tin được an toàn, không lọt vào tay đối phương. Muốn vậy, con người có nhiều cách để làm cho thông tin truyền đi được gọn nhẹ và an toàn khi lưu thông. Để thông tin đến tay người nhận một cách bí mật, gọn gàng nhất thì họ phải nén thông tin lại hay dùng các ký hiệu đặc biệt có qui ước trước. Ngày nay với sự tiến bộ của khoa học kỹ thuật, CNTT được nâng lên một tầm cao mới. Mọi ngành, nghề đều phải ứng dụng CNTT một cách triệt để để phát triển một cách tốt nhât. Ngay như cả cụm từ “Chính phủ điện tử” mà ta thường nghe cho ta thấy tầm quan trọng của việc đưa CNTT vào cuộc sống. Không nằm ngoài sự phát triển có tính qui luật chung của xã hội, CNTT đã và đang làm hết sức mình để phát triển ngày một tốt hơn, nhanh hơn, nhẹ hơn, gọn hơn …. CNTT và Viễn thông có mối liên hệ tương đối chặt chẽ với nhau. Một trong những tiêu chí giúp ngành CNTT phát triển là sử dụng công nghệ bảo mật, nén dữ liệu, thông tin trong lưu trữ và truyền thông. Trong kỹ thuật truyền số liệu, bảo mật và nén dữ liệu (nguồn tin) truyền đi là 2 vấn đề quan trọng, nhiều cơ sở lý thuyết về mã hóa nguồn cho ta thấy tầm quan trọng của việc mã hóa và nén dữ liệu. Các thuật toán nén dữ liệu đã ra đời từ rất lâu như mã nén Shannon-Fano, Huffman hay Lempel Ziv Welch (LZW) được cho là kinh điển của công nghệ nén dữ liệu. Trong bài luận văn này, em sẽ trình bày đôi nét về các thuật toán nén dữ liệu thông dụng hiện nay và so sánh tính hiệu quả của việc nén một số loại dữ liệu khác nhau giữa 2 loại mã nén Shannon-Fano và Huffman. Phần mô phỏng tính hiệu quả của 2 loại mã Trang 1 nén thông dụng này em sẽ trình bày bằng chương trình được viết trên nền tảng ngôn ngữ lập trình C và C++. I.2. MỤC ĐÍCH VÀ PHẠM VI CỦA ĐỀ TÀI Đồ án này tập trung vào các vấn đề xoay quanh thuật toán Shannon-Fano và Huffman, phân tích các ưu, nhược điểm của thuật toán này so với thuật toán kia bằng hình thức mô phỏng tỉ lệ nén của nó. Các phần sẽ thực hiện trong đồ án này gồm : 1. Tìm hiểu lý thuyết nén dữ liệu, tổng hợp các kết quả trên thế giới về nén dữ liệu. Tổng quan về các phương pháp mã hóa nguồn, nguyên tắc làm việc của các phương pháp, tốc độ và tỷ lệ nén. 2. Phân loại và ứng dụng. Nhiệm vụ đặt ra là đưa ra được nội dung của các thuật toán mã hóa nguồn . 3. Nội dung thuật toán Shannon-Fano và Huffman . Trong phần này sẽ đi sâu phân tích các ưu nhược điểm của từng thuật toán, lựa chọn thuật toán Shannon-Fano và Huffman – là các thuật toán nén dữ liệu kinh điển để so sánh tính hiệu quả của từng loại với một số loại dữ liệu khác nhau. 4. Khái quát về chương trình, kết quả của thuật toán. Trong phần này sẽ nêu cấu trúc của chương trình và các vấn đề khi xây dựng chương trình. Nhiệm vụ quan trọng là phải mô phỏng được thuật toán, xây dựng lưu đồ thuật toán và coding. I.3. PHUƠNG PHÁP NGHIÊN CỨU - Đưa ra được cơ sở lý thuyết - Tiến hành nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman. - Đưa ra nguyên tắc mã hóa và bài toán mã hóa. - Chạy chương trình và kiểm thử - Đánh giá ưu điểm và nhược điểm PHẦN 2 NỘI DUNG Trang 2 CHƯƠNG 1 SƠ LƯỢC VỀ NÉN DỮ LIỆU II.1.1 TỔNG QUAN VỀ NÉN DỮ LIỆU Trong khoa học máy tính và lí thuyết thông tin, nén dữ liệu là quá trình mã hóa thông tin dùng ít bit hơn so với thông tin chưa được mã hóa bằng cách dùng một hoặc kết hợp của các phương pháp nào đó. Dựa theo nguyên tắc này giúptránh các hiện tượng kênh truyền bị quá tải và việc truyền tin trở nên kinh tế hơn. Nén dữ liệu giúp tiết kiệm các tài nguyên như dung lượng bộ nhớ, băng thông, thời gian. Ngược lại, dữ liệu đã được nén cần phải được giải nén để đọc (thực thi, nghe, xem v.v…), quá trình này cũng đòi hỏi các tài nguyên nhất định. Một ví dụ điển hình là việc nén video đòi có thể đòi hỏi phần cứng đắt tiền để quá trình giải nén đủ nhanh để ta có thể xem được. Do đó việc thiết kế một chương trình nén dữ liệu phụ thuộc nhiều yếu tố như mức độ nén, độ méo (đối với nén có tổn hao), tài nguyên hệ thống dùng để thực hiện quá trình nén và giải nén dữ liệu. II.1.2 TỔNG QUAN CÁC LOẠI MÃ NÉN II.1.1. Các chương trình nén hoạt động như thế nào Nguyên tắc của các chương trình nén nói chung giống nhau: Tận dụng sự lặp lại của dữ liệu, các chuỗi dữ liệu lặp lại được thay thế bởi con trỏ chung có độ dài bé hơn. Kỹ thuật này rất có hiệu quả đối với dữ liệu dạng text, bảng tính, hoặc file DBF (nén trên 70%), vì tính lặp lại của dữ liệu loại này cao: File chương trình (.EXE hoặc .COM) nén được ít hơn. II.1.2.2. Tốc độ và tỷ lệ nén Ngay cả khi tất cả các chương trình nén file đều dùng chung một thuật toán thì hoạt động của chúng cũng khác nhau. Mỗi hãng triển khai thuật toán một kiểu để dung hòa hai vấn đề: thời gian và tỷ lệ nén. Chương trình PKZIP thường trội hơn các chương trình nén khác về mặt tốc độ, về mặt tỷ lệ nén, nhiều khi nó cũng khá hơn. Tính ổn Trang 3 định của các chương trình nén cũng là điều cần quan tâm. Các file nén nói chung rất ít khi bị hỏng. Cũng cần lưu ý là các loại file nén không tương thích với nhau, tức là nếu gửi file nén cho người khác thì người đó cần phải có chương trình thích hợp mới giải nén ra được. Tuy nhiên để giải quyết vấn đề này, cả 3 chương trình ARC + PLUS, LHA và PKZIP đều cho phép tạo file nén tự bung - tức file nén ở dạng chương trình thực hiện, khi chạy sẽ tự động bung ra, trên thị trường cũng bắt đầu xuất hiện chương trình chuyển đổi từ dạng file nén này sang dạng file nén khác, ví dụ chương trình D'Compress for Windows chuyển các file PKZIP, ARC, LHA sang dạng ARJ. Các chương trình nén giá không cao (PKZIP: 47USD, LHA cung cấp miễn phí) nên được dùng khá rộng rãi. Hạn chế hiện nay của chúng là giao diện người dùng không thuận tiện, thường phải gõ lệnh với nhiều tham số ở dấu nhắc của DOS để thực hiện một công việc nào đó. Cải tiến theo hướng này đang được thực hiện: ARC + PLUS có giao diện kiểu menu, PKZIP cũng đã có phần bổ sung là PKZIP menu. Nhiều chương trình quản lý file trong DOS và trong Windows đã bắt đầu dùng kỹ thuật nén. Chương trình Magellan của hãng Lotus dùng PKZIP từ năm 1990, chương trình Xtree Gold đưa PKZIP vào công cụ quản lý file năm 1991. Thư mục nén rời sau đó lại phải bung ra để dùng của các chương trình nén file khá rườm rà, chính bởi lý do này mà các chương trình nén đĩa như Stacker hoặc Super Store được sử dụng tương đối rộng rãi. Các chương trình nén đĩa cũng hoạt động trên nguyên tắc giống như nén file, chỉ khác là chúng tự động nén và bung mà người dùng không phải quan tâm đến. Thời gian và tỷ lệ nén của các chương trình nén loại này khác nhau. Để bung 3,5 Mb dữ liệu, chương trình này hết 12 giây, chương trình khác 40 giây. Tỷ số nén đối với file văn bản cũng khác: từ 2:1 đến 3:1. Tóm lại khi dùng chương trình nén đĩa, người dùng yên tâm là dung lượng trống của ổ cứng dường như tăng khoảng 2 lần. Việc bung và nén khi làm việc với file sẽ làm công việc chậm lại đôi chút. Đối với các file dữ liệu lớn, điều này thể hiện khá rõ. Khi làm việc, các chương trình nén đĩa hoạt động ở dạng thường trú, bởi thế một mặt nó chiếm dụng bộ nhớ RAM, một mặt có thể gây xung đột với các chương trình thường trú khác. Các chương trình nén file khi Trang 4 có sự cố chỉ hỏng một vài file, còn chương trình nén đĩa làm hỏng cả ổ đĩa. Tuy điều này rất ít khi xảy ra nhưng nó cũng làm cho nhiều người e ngại không dám dùng. Để cài đặt chương trình nén đĩa cần phân chia lại ổ cứng vì máy tính cần được khởi động bằng đĩa nén trước khi chương trình nén hoạt động. Nếu dùng Windows thì phần không nén cần khá lớn (thông thường cần dành 10 Mb cho vùng không nén, chỉ nén vùng đĩa còn lại). Một điều có thể làm người dùng đau đầu là phải quyết định tỷ lệ nén là bao nhiêu. Với tỷ lệ nén 10:1 chẳng hạn, chương trình nén sẽ dành nhiều "con trỏ" để trỏ đến các dữ liệu, mỗi con trỏ chiếm 2 byte, khi đó dễ xảy ra trường hợp không đủ con trỏ, chương trình báo đĩa đầy mà thực ra không phải như vậy. Cuối cùng, việc loại bỏ chương trình nén đĩa khi đã cài đặt cũng là một vấn đề hơi phiền toái. Nhiều chương trình - chẳng hạn Double Density có chức năng loại bỏ. Đối với các chương trình khác cần tóm các file ẩn của chương trình nén và xóa bỏ chúng đi. Có khi phải format lại ổ cứng. Tóm lại, dù một số hạn chế, nén dữ liệu là cách thức kinh tế nhất để mở rộng dung lượng ổ cứng. Ngoài ra còn tiết kiệm được khá nhiều thời gian và kinh phí khi nén dữ liệu trước khi truyền đi Tỷ lệ nén là một trong các đặc trưng quan trọng nhất của mọi phương pháp nén. Tuy nhiên, về cách đánh giá và các kết quả công bố trong các tài liệu cũng cần được quan tầm xem xét. Nhìn chung, người ta định nghĩa tỷ lệ nén như sau : Tỷ lệ nén = 1/ r x % Với r là tỷ số nén được định nghĩa : r = kích thước dữ liệu gốc / kích thước dữ liệu thu được sau nén. Như vậy hiệu suất của nén là : ( 1 - tỷ lệ nén) x % Trong các trình bày sau khi nói đến kết quả nén, chúng ta dùng tỷ số nén, thí dụ như 10 trên 1 có nghĩa là dữ liệu gốc là 10 sau khi nén chỉ có 1 phần. Trang 5 Tuy nhiên, cũng phải thấy rằng những số đo của một phương pháp nén chỉ có giá trị với chính sự nén đó, vì rằng hiệu quả của nén còn phụ thuộc vào kiểu dữ liệu định nén. nhiều khi tỷ lệ nén cao cũng chưa thể nói rằng phương pháp đó là hiệu quả hơn các phương pháp khác, vì còn các chi phí khác như thời gian, không gian và thậm chí cả độ phức tạp tính toán nữa. Thí dụ như nén phục vị trong truyền dữ liệu : vấn đề đặt ra là hiệu quả nén có tương hợp với đường truyền không. II.1.2.3 Các loại dư thừa dữ liệu. Như trên đã nói, nén nhằm mục đích giảm kích thước dữ liệu bằng cách loại bỏ dư thừa dữ liệu. việc xác định bản chất các kiểu dư thừa dữ liệu rất có ích cho việc xây dựng các phương pháp nén dữ liệu khác nhau. Nói một cách khác, các phương pháp nén dữ liệu khác nhau là do sử dụng các kiểu dư thừa dữ liệu khác nhau. Có 4 kiểu dư thừa chính được trình bày ở các mục sau đây. II 2.3.1.1. Sự phân bố ký tự. Trong một dãy ký tự, có một số ký tự có tần suất xuất hiện nhiều hơn một số dãy khác. Do vậy, ta có thể mã hoá dữ liệu một cách cô đọng hơn. Các ký tự có tần xuất xuất hiện cao hơn được thay thế bởi một từ mã nhị phân với số bít nhỏ; ngược lại các dãy có tần xuất xuất hiện thấp sẽ được mã hóa bởi từ mã có nhiều bít hơn. Đây chính là bản chất của phương pháp mã hoá Huffman hay Shannon-Fano. II.1.2.3.2. Sự lặp lại của các ký tự Trong một số tình huống như trong ảnh, 1 ký hiệu (bít "0" hay bít "1") được lặp đi lặp lại một số lần. Kỹ thuật nén dùng trong trường hợp này là thay dãy lặp đó bởi dãy mới gồm 2 thành phần: số lần lặp và kí hiệu dùng để mã hóa. Phương pháp mã hoá kiểu này có tên là mã hóa loạt dài RLC (Run Length Coding). II.1.2.3.3. Những mẫu sử dụng tần suất Có thể có dãy ký hiệu nào đó xuất hiện với tần suất tương đối cao. Do vậy, có thể mã hoá bởi ít bít hơn. Đây là cơ sở của phương pháp mã hoá kiểu từ điển do Lempel- Trang 6 Ziv đưa ra và có cải tiến vào năm 1977, 1978 và do đó có tên gọi là phương pháp nén LZ77, LZ78. Năm 1984, Terry Welch đã cải tiến hiệu quả hơn và đặt tên là LZW (Lempel-Ziv- Welch). Thuật toán nén dữ liệu dựa vào mẫu sử dụng tần suất hiệu quả phải kể đến phương pháp nén dữ liệu của Shannon-Fano và Huffman. II 2.3.4.1 Độ dư thừa vị trí Do sự phụ thuộc lẫn nhau của dữ liệu, đôi khi biết được ký hiệu (giá trị) xuất hiện tại một vị trí, đồng thời có thể đoán trước sự xuất hiện của các giá trị ở các vị trí khác nhau một cách phù hợp. Chẳng hạn, ảnh biểu diễn trong một lưới hai chiều, một số điểm ở hàng dọc trong một khối dữ lệu lại xuất hiện trong cùng vị trí ở các hàng khác nhau. Do vậy, thay vì lưu trữ dữ liệu, ta chỉ cần lưu trữ vị trí hàng và cột. Phương pháp nén dựa trên sự dư thừa này gọi là phương pháp mã hoá dự đoán. Cách đánh giá độ dư thừa như trên hoàn toàn mang tính trực quan nhằm biểu thị một cái gì đó xuất hiện nhiều lần. Đối với dữ liệu ảnh, ngoài đặc thù chung đó, nó còn có những đặc thù riêng. Thí dụ như có ứng dụng không cần toàn bộ dữ liệu thô của ảnh mà chỉ cần các thông tin đặc trưng biểu diễn ảnh như biên ảnh hay vùng đồng nhất. Do vậy, có những phương pháp nén riêng cho ảnh dựa vào biến đổi ảnh hay dựa vào biểu diễn ảnh. II.2.2 PHÂN LOẠI VÀ ỨNG DỤNG II.1.3.11 Dựa vào nguyên lý nén: Theo cách này người ta phân thành 2 họ: II 3.1.11 Các thuật toán nén không tổn hao: Trong phương pháp nén không tổn hao, dữ liệu được nén sau khi giải nén sẽ giống y như ban đầu. Trong đó thông dụng nhất là thuật toán Lempel-Ziv (LZ). DEFLATE, là một biến thể của thuật toán LZ, được tối ưu hóa nhằm tăng tốc độ giải nén và tỉ lệ nén, bù lại thuật toán này có tốc độ của quá trình nén chậm. DEFLATE được dùng trong PKZIP, GZIP, và PNG. LZW (Lemple-Zip-Welch) được dùng trong định dạng file GIF. Hai biến thể của thuật toán LZ cũng đáng chú ý là thuật toán LZX dùng trong Trang 7 định dạng file CAB của Microsoft (Microsoft còn dùng thuật toán nén này trong file CHM, các file office 2007) và thuật toán LZMA dùng trong chương trình 7-ZIP. Các thuật toán nén không tổn hao được dùng để nén các file như file thực thi, file văn bản, word, excel, v.v… Các loại dữ liệu này không thể sai lệch dù chỉ một bit, nhất là các file chương trình. Các thuật toán nén không tổn hao cơ bản: 1. Run-length encoding (RLE). 2. Dictionary coders. 3. LZ-77 & LZ-78. 4. LZW. 5. Burrows and Wheeler transform (BWT). 6. Prediction by partial matching (PPM). 7. Context mixing (CM). 8. Entropy encoding. 9. Huffman coding (huffman động thường dùng ở bước cuối cùng của quá trình nén file gồm nhiều bước). 10.Adaptive Huffman. 11.Arithematic. 12.Shannon-Fano coding. 13.Range coding. II 3.1.2 Các thuật toán nén tổn hao: Trong các phương pháp nén tổn hao thì dữ liệu được nén khi giải nén ra sẽ không giống với dữ liệu gốc, tuy nhiên phải đảm bảo dữ liệu sau khi nén vẫn còn hữu ích. Đối với hình ảnh, âm thanh, video, do giới hạn của mắt và tai người nên một lượng lớn dung lượng có thể được tiết kiệm bằng cách loại bỏ các phần dư thừa, trong khi chất lượng hầu như không thay đổi. Trang 8 Trong thực tế, các file hình ảnh âm thanh hay là video được lưu trữ trên máy tính đều đã được nén có tổn hao để tiết kiệm dung lượng và băng thông. Đối lập với nén không tổn hao các phương pháp nén có tổn hao thường gây giảm chất lượng rất nhanh khi thực hiện nén và giải nén đệ qui nhiều lần.Các mẫu hình ảnh âm thanh sẽ được chia thành các phần nhỏ và được biến đổi qua miền khác. Các hệ số biến đổi này sẽ được lượng tử hóa sau đó được mã hóa bằng mã huffman hoặc mã hóa số học. Các mẫu hình ảnh âm thanh trước được sử dụng để dự đoán các mẫu tiếp theo. Sai số giữa dữ liệu dự đoán và dữ liệu thực sẽ được lượng tử hóa rồi mã hóa Ưu điểm của nén tổn hao so với nén không tổn hao đó là nén tổn hao trong nhiều trường hợp cho tỉ lệ nén cao hơn rất nhiều so với bất cứ thuật toán nén không tổn hao được biết, trong khi vẫn đảm bảo được chất lượng. Nén tổn hao thường được sử dụng để nén ảnh, âm thanh, video. Âm thanh có thể nén với tỉ lệ 10:1 mà hầu như không giảm chất lượng. Video có thể nén với tỉ lệ 300:1 với chất lượng giảm ít. II.1.3.2 Dựa vào cách thức thực hiện nén • Theo cách này, người ta cũng phân thành hai họ: • Phương pháp không gian (Spatial Data Compression): các phương pháp thuộc họ này thực hiện nén bằng cách tác động trực tiếp lên việc lấy mẫu của ảnh trong miền không gian. • Phương pháp sử dụng biến đổi (Transform Coding): Gồm các phương pháp tác động lên sự biến đổi của ảnh gốc mà không tác động trực tiếp như họ trên. CHUƠNG 2 CÁC PHƯƠNG PHÁP NÉN DỮ LIỆU II.2.1 PHUƠNG PHÁP NÉN KHÔNG TỔN HAO II.2.1.1. Mô hình thống kê Trang 9 II.2.1.1.1.1 Thuật toán Shannon-Fano: Các bước thực hiện mã hoá theo thuật toán Shanon-Fano: - Bước 1: Sắp xếp các ký tự theo thứ tự giảm dần. - Bước 2: Tính xác suất - Bước 3: Đệ quy làm hai phần, mỗi phần có tổng xác suất gần bằng nhau. Mã hoá phần trên bằng bit 0 (hoặc bit 1), phần dưới bằng bit 1(hoặc bit 0). - Bước 4: Vẽ sơ đồ cây. - Bước 5: Tính Entropy, số bits mã hoá trung bình và số bit mã hoá thông thường. Ví dụ mô tả thuật toán Thống kê lượng tin: Ký hiệu A B C D E Số lần xuất hiện 15 7 6 5 6 Mã hóa lượng tin: Ký hiệu Đếm P i Log 2 (1/p i ) Mã Tổng bits A 15 15/39 1.38 0 0 30 B 7 7/39 2.48 0 1 14 C 6 6/39 2.7 1 0 12 E 6 6/39 2.7 1 1 0 18 D 5 5/39 2.96 1 1 1 15 Số bits sử dụng trung bình: (tổng bits/ số lần xuất hiện). R = (30+14+12+18+15) / 39 = 2.29 bits Trang 10 [...]... về thuật toán làm cho hiệu suất nén (hệ số entropy) của Huffman và ShannonFano khác nhau Do vậy, em sẽ tập trung nghiên cứu, xây dựng mô phỏng và đánh giá 2 loại mã nén này để làm rõ ưu và nhược của 2 loại mã nén trên II.3.2 PHÂN TÍCH THUẬT TOÁN II.3.2.1 Thuật toán Shannon-Fano: Mã Shannon-Fano là một thuật toán mã hóa dùng để nén dữ liệu Nó dựa trên bảng tần suất xuất hiện các kí tự cần mã hóa để xây... 2 Mã hóa và giải mã MPEG2: MPEG channel MPEG L L0 C R0 R T3 LS T4 MPEG T5 2 2 Extension Extension encoder decoder RS Matrix + encoder 1 decoder L’ R0’ C’ T3’ 1 L0’ R’ MPEG T4’ T5’ Inverse Matrix Hình 7 Sơ đồ mã hóa và giải mã MPEG 2 CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH NÉN DỮ LIỆU BẰNG MÃ SHANNON-FANO VÀ HUFFMAN II.3.1 ĐẶC ĐIỂM CỦA CÁC THUẬT TOÁN NÉN DỮ LIỆU Trang 34 LS’ RS’ Trong giới hạn tìm hiểu nén. .. sử dụng Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các mảng bé hơn 64KB Thường được sử dụng trong các công đoạn cuối cuản nén âm thanh, hình ảnh và video Từ các đặc tính thuật toán của các loại mã nén trên, em nhận thấy rằng thuật toán mã hóa của Shannon-Fano và Huffman có nét tương đồng Tuy nhiên sự... sắp xếp lại của bộ mã hoá như sau: I3 B1 B2 P6 B4 B5 P9 B7 B8 P12 B10 B11 Cấu trúc của một GOP có thể được mô tả bởi hai tham số: N là số các ảnh trong GOP và M là khoảng cách giữa các ảnh P-pictures Nhóm GOP này được miêu tả như N = 12 và M = 3 Trang 25 SƠ ĐỒ CỦA BỘ MÃ HOÁ VÀ GIẢI MÃ DÙNG MPEG-2 Hình 1 Sơ đồ bộ mã hoá và giải mã dùng MPEG Mã hoá MPEG-2 Quá trình mã hoá cho P pictures và B pictures được... Thuật toán Huffman Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các mảng bé hơn 64KB Nhược điểm của nó là phải chứa cả bảng mã vào tập tin nén thì phía nhận mới có thể giải mã được do đó hiệu suất nén chỉ cao khi ta thực hiện nén các tập tin lớn • Nguyên lý: Nguyên lý của phương pháp Huffman là mã hóa các... trong tập tin nén không cần phải chứa bảng mã Nhược điểm của thuật toán này là tốn nhiều bộ nhớ, khó thực hiện dựa trên các mảng đơn giản (bé hơn 64KB) Các thuật toán khác như Huffman, Shannon-Fano, LZ77 và LZW… đều có thể áp dụng được để nén nhiều loại tập tin trên các máy vi tính Thuật toán Shannon-Fano có hệ số nén tương đối tốt với các file dạng text nhưng do đặc tính của thuật toán và yêu cầu khá... dùng phép biến đổi IDCT và được cộng thêm vào ảnh đứng trước để tạo nên ảnh tham khảo (ảnh tiên đoán) Vì dữ liệu ảnh trong bộ mã hoá được giải mã luôn nhờ vào bộ giải mã nội bộ ngay chính bên trong bộ mã hoá, do đó ta có thể thực hiện thay đổi thứ tự các bức ảnh và dùng các phương pháp tiên đoán như đã trình bày ở trên Giải mã MPEG-2 Quá trình khôi phục lại ảnh tại bộ giải mã là hoàn toàn ngược lại... cũng có thể chọn các từ mã sao cho thông điệp có thể được giải mã mà không cần dấu phân cách, ví dụ như: A là 11, B là 00, C là 010, D là 10 và R là 011, các từ mã này gọi là các từ mã có tính prefix (Không có từ mã nào là tiền tố của từ mã khác) Với các từ mã này ta có thể mã hoá thông điệp trên như sau : 1100011110101110110001111 Với chuỗi đã mã hoá này ta hoàn toàn có thể giải mã được mà không cần... (macroblocks) cần được mã hoá sẽ được đưa đến cả bộ trừ (Subtractor) và bộ đoán chuyển động (Motion Estimator) Bộ đoán chuyển động sẽ so sánh các khối ảnh mới được đưa vào này với các khối ảnh đã được đưa vào trước đó và được lưu lại như là các ảnh dùng để tham khảo (Reference Picture) Kết quả là bộ đoán chuyển động sẽ tìm ra các khối ảnh trong ảnh tham khảo gần giống nhất với khối ảnh mới này Bộ đoán chuyển động... tới bộ mã hoá Huffman, tại đây số bits đặc trưng cho các hệ số tiếp tục được làm giảm đi một cách đáng kể Dữ liệu từ đầu ra của mã hoá Huffman sẽ được kết hợp với vector chuyển động và các thông tin khác (thông tin về I, P, B pictures) để gửi tới bộ giải mã Đối với trường hợp P-pictures, các hệ số DCT cũng được đưa đến bộ giải mã nội bộ (nằm ngay trong bộ mã hoá) Tín hiệu dư hay sai số tiên đoán được . hành nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman. - Đưa ra nguyên tắc mã hóa và bài toán mã hóa. - Chạy chương trình và kiểm thử - Đánh giá ưu điểm và nhược điểm PHẦN 2 NỘI. thuật toán mã hóa nguồn . 3. Nội dung thuật toán Shannon-Fano và Huffman . Trong phần này sẽ đi sâu phân tích các ưu nhược điểm của từng thuật toán, lựa chọn thuật toán Shannon-Fano và Huffman. trọng của việc mã hóa và nén dữ liệu. Các thuật toán nén dữ liệu đã ra đời từ rất lâu như mã nén Shannon-Fano, Huffman hay Lempel Ziv Welch (LZW) được cho là kinh điển của công nghệ nén dữ liệu. Trong