0
Tải bản đầy đủ (.pdf) (69 trang)

Quá trình mã hĩa

Một phần của tài liệu NÉN DỮ LIỆU KẾT HỢP VỚI CÁC PHƯƠNG PHÁP BIẾN ĐỔI SƠ BỘ DỮ LIỆU (Trang 54 -54 )

Quá trình mã hĩa, ta cĩ thể hình dung quá trình qua hình 2.6 sau:

Hình 2.6: Quá trình mã hĩa MTF (cải tiến)

Code quá trình mã hĩa

void InitCode() {

for (int i = 0; i <= 255; ++i) mtfcode[i] = i;

}

void MTF(int W[], int U[], int n){ for(i=0; i<n; i++){

int c = W[i]; int a = mtfcode[c]; U[i] = a; if(a!=0){ for(k=0; k <= 255 ; k++) if(mtfcode[k]<a ) mtfcode[k]++; mtfcode[c] = 0; } }

4

4

4

4

2.2.2 Quá tr nh giải mã

Quá trình giải mã đƣợc thể hiện qua hình 2.7:

Hình 2.7: Quá trình giải mã MTF (cải tiến)

Code:

void MTF(int W[], int U[], int n){ InitCode();

for(i=0; i<n; i++){ if(U[i] == 0) W[i] = W[i-1]; else{ int c; for(k=0; k <= 255 ; k++) if(mtfcode[k] == U[i]) c = k;

else if(mtfcode[k] < U[i])

mtfcode[k]++;

W[i] = c ;

mtfcode[c] = 0; }

2.3 Mơ hình nén kết hợp với BWT&MTF

Lƣợc đồ nén dữ liệu dựa trên kết hợp các kỹ thuật biến đổi BWT & MTF làm thay đổi tính chất của dữ liệu đầu vào để cĩ thể cho kết quả nén tốt hơn cĩ 3 giai đoạn. Mỗi giai đoạn sẽ xử lý và biến đổi khối dữ liệu để tạo dữ liệu đầu vào cho giai đoạn tiếp theo.

2.3.1 Quá trình nén

Hình 2.8: Lược đồ n n dữ liệu B T_MTF_EC

Giai đoạn đầu tiên của thuật tốn nén là phép biến đổi BWT. Mục đích của giai đoạn này là sắp xếp dữ liệu theo cách mà các ký tự cĩ cùng ngữ cảnh nhĩm lại gần nhau hơn. BWT khơng làm thay đổi số lƣợng các ký hiệu cĩ trong khối dữ liệu, mà chỉ thêm 1 giá trị là chỉ số của phần tử đầu tiên của dữ liệu đầu vào ở bảng kết quả. Dựa vào chỉ số này mà ta cĩ thể phục hồi lại đƣợc khối dữ liệu ban đầu. Chỉ số này là một số nguyên cĩ giá trị từ 0 đến n-1 (n là số lƣợng ký tự trong khối dữ liệu nguồn), và nĩ đƣợc đặt tại vị trí đầu tiên của khối dữ liệu đầu ra đƣợc mã hĩa bằng BWT.

Giai đoạn thứ hai là phƣơng pháp dịch chuyển MTF. MTF là một thuật tốn thay thế lại nội dung khối dữ liệu bằng chỉ số của dữ liệu trên mảng trung gian đƣợc dùng để thực hiện thuật tốn, sau đĩ phần tử này đƣợc chuyển về đầu mảng. Chính vì vậy các dữ liệu giống nhau đi sát với nhau sẽ nhận giá trị 0. MTF cũng khơng làm thay đổi kích thƣớc khối dữ liệu. Vì MTF đƣợc áp dụng ngay sau BWT nên trong dãy kết quả của MTF sẽ cĩ rất nhiều số 0.

Giai đoạn cuối cùng là giai đoạn EC, giai đoạn này nén luồng chỉ số từ giai đoạn MTF thành luồng bit cĩ kích thƣớc nhỏ.

Ta cĩ thể hình dung các giai đoạn qua các quá trình sau: Giả sử dữ liệu cần nén là: "1213112301"

BWT MTF EC

Biểu diễn dữ liệu dƣới dạng mã ASCII : 49 50 49 51 49 49 50 51 48 49

 BWT thuận

Quá trình thực hiện BWT qua bảng sau:

Hình 2.9: Kết quả thực nghiệm v i B T (quá trình thuận)

Output: 51 48 51 49 49 50 49 49 50 49; K = 6

 MTF thuận

Quá trình chuyển đổi đƣợc thực hiện qua bảng sau:

Hình 2.10: Kết quả thực nghiệm v i MTF (quá trình thuận)

 Với HUFFMAN Cây Huffman

Bộ mã tối ƣu tƣơng ứng là:

2 0 3 1 000 001 01 1

Output: 01110000 01011001 11

2.3.2 Quá tr nh giải nén

Hình 2.11: Lược đồ giải n n dữ liệu B T_MTF_EC

 De_Huff: dữ liệu đầu vào dãy bit 01110000 01011001 11 giải nén ta đƣợc dãy: 3 1 1 2 0 3 1 0 1 1

 InvMTF: quá trình giải mã đƣợc thể hiện qua bảng sau:

Hình 2.12: Kết quả thực nghiệm MTF (quá trình nghịch)

De_EC InvMTF InvBWT

Input Output 0 10 5 1 3 3 2 0 1 2 2 5 0 0 1 1 1

 InvBWT:

Dữ liệu đầu vào là dãy kết quả từ InvMTF và chỉ số K=6, quá trình biến đổi nghịch thể hiện qua hình 2.13.

Hình 2.13: Kết quả thực nghiệm B T (quá trình nghịch)

CHƢƠNG III: KẾT QUẢ CÀI ĐẶT THỬ NGHIỆM

Chƣơng 2 đã tìm hiểu về các kỹ thuật biến đổi sơ bộ BWT, MTF và mơ hình nén kết hợp với BWT&MTF. Dựa trên cơ sở lý thuyết, xây dựng cài đặt chuyển đổi trên dữ liệu thực.

Chƣơng trình cài đặt thử nghiệm:

Hình 3.1: Chương trình cài đặt thử nghiệm

Chƣơng trình cài đặt thử nghiệm đƣợc xây dựng trên ngơn ngữ lập trình C và chạy đƣợc trên hệ điều hành Windows. Chƣơng trình sử dụng giao diện giao tiếp chung cho cả hai quá trình nén và giải nén thơng qua việc lựa chọn các nút đài.

Chƣơng trình bao gồm nhiều tùy chọn khác nhau để thuận lợi cho việc so sánh, đánh giá kết quả nén và giải nén theo các mơ hình khác nhau.

Chƣơng trình bao gồm hai tùy chọn chính sau đây:

 Phƣơng pháp biến đổi sơ bộ:

-

Burrows-Wheeler

-

Move-To-Front

-

Kết hợp BWT&MTF  Thuật tốn nén - Mã hĩa Huffman - Mã hĩa số học

Sau mỗi quá trình nén và giải nén chƣơng trình đều đƣa ra các thơng tin: Độ lớn file nguồn; Độ lớn file đích; Thời gian thực hiện; Tỷ lệ nén; Hiệu suất nén; Tỷ lệ nguồn / đích.

3.1 Dữ liệu mẫu

Để thực hiện nén dữ liệu theo các mơ hình nén khác nhau, tác giả sử dụng các file tƣơng ứng cĩ đƣợc từ hai bộ sƣu tập Canterbury CorpusCanterbury Corpus l n chứa các kiểu file khác nhau và là các tập file phổ biến nhất cho các tiêu chí nén khơng tổn hao, tất cả đƣợc cung cấp tại http://www.data- compression.info/Corpora/. Mơ tả của các tệp tin đĩ nhƣ sau:

Bảng 3.1: Mơ tả các tệp tin mẫu để thực nghiệm v i The Canterbury Corpus

File Abbrev Category Size

alice29.txt text English text 152089 asyoulik.txt play Shakespeare 125179 cp.html html HTML source 24603

fields.c Csrc C source 11150

grammar.lsp list LISP source 3721 kennedy.xls Excl Excel Spreadsheet 1029744 lcet10.txt tech Technical writing 426754 plrabn12.txt poem Poetry 481861

sum SPRC SPARC Executable 38240 xargs.1 man GNU manual page 4227

Bảng 3.2: Mơ tả các tệp tin mẫu để thực nghiệm v i The Large Corpus

File Abbrev Category Size

E.coli E.coli Complete genome of the E. Coli bacterium 4638690 bible.txt bible The King James version of the bible 4047392 world192.txt world The CIA world fact book 2473400

Ngồi ra, tác giả cịn sử dụng nhiều kiểu file khác nhau thƣờng đƣợc sử dụng trong cơng việc hàng ngày để thử nghiệm.

Bảng 3.3: Mơ tả các tệp tin mẫu để thực nghiệm

TT Tệp tin Kiểu Kích thước

(bytes)

1 File1.docx Microsoft Word Document 28949 2 File2.doc Microsoft Word 97-2003 Document 104448 3 File3.xls Microsoft Excel 97-2003 Worksheet 793573 4 File4.ppt Microsoft PowerPoint 97-2003 Presentation 1075200 5 File5.chm Compiled HTML Help file 65126 6 File6.pdf Adobe Acrobat Document 158395 7 File7.cpp C++ Source File 35945 8 File8.jpg JPEG Image 61365 9 File9.bmp Bitmap Image 1440054 10 File10.exe Application 261,632 11 File11.xlsx Microsoft Excel Worksheet 793573

3.2 Kết quả thực nghiệm

Sau khi xây dựng chƣơng trình, ta tiến hành thực nghiệm đánh giá hiệu suất nén giữa các mơ hình nén khác nhau theo lƣợc đồ BWT→MTF→ARC; BWT→MTF→HUFFMAN và so sánh với trƣờng hợp khơng sử dụng BWT và MTF. Bên cạnh đĩ, tác giả sử dụng phần mềm nén thƣơng mại hiện nay là WinRAR 4.01 để từ đĩ cĩ những so sánh và nhận xét khách quan.

Việc tiến hành thực nghiệm đƣợc tiến hành trên cùng một máy PC, thời gian đo đƣợc chỉ mang tính chất tƣơng đối.

Tỷ lệ nén

Trong bảng 3.4, các kết quả về tỷ lệ nén với Canterbury Corpus đƣợc so sánh giữa các mơ hình và trình nén thƣơng mại Winrar.

Bảng 3.4: T lệ n n theo % v i Canterbury Corpus

Mơ hình

File HUFFMAN AC BW_MTF_H BW_MTF_AC WINRAR alice29.txt 58.1619 57.2927 32.7540 32.2081 33 asyoulik.txt 61.1492 60.3336 36.5846 35.9053 37 cp.html 69.2151 66.2398 38.1017 34.9266 32 fields.c 70.6367 64.2331 36.8189 29.4349 27 grammar.ls p 79.2797 61.8919 50.1252 36.7374 33 kennedy.xls 45.0803 44.6964 25.6958 25.3119 4 lcet10.txt 58.9063 58.4435 29.8658 29.5312 29 plrabn12.txt 57.3588 56.7155 35.7009 35.0576 36 sum 71.4435 67.0397 40.9519 36.5481 30 xargs.1 79.7728 64.8450 52.1736 43.2458 41 T un nh 65.1004 60.1731 37.8772 33.8906 28.27

Các kết quả cho thấy rằng, mơ hình nén BW_MTF_AC cĩ tỷ lệ nén trung bình tốt nhất trong 4 mơ hình và đạt xấp xỉ với Winrar.

Đối với các file văn bản (file alice29.txt, asyoulik.txt, lcet10.txt, plrabn12.txt) đạt đƣợc kết quả tốt nhất với BW_MTF_AC, tốt hơn cả trình nén thƣơng mại Winrar và cĩ hiệu suất nén cao hơn các file (*.c, *.html)…

Bảng 3.5: T lệ n n theo % v i Canterbury Corpus l n

Mơ hình

File HUFFMAN AC BW_MTF_H BW_MTF_AC WINRAR E.coli 25.0090 25.0277 24.9104 24.8917 28 bible.txt 54.8295 54.3122 25.2365 24.7192 24 world192.txt 63.0494 62.5052 22.5349 21.9907 21

T un nh 47.6293 47.2817 24.2272 23.8672 24.33

Với các file lớn của Lukas Corpus, mơ hình BW_MTF_AC đạt đƣợc tỷ lệ nén trung bình tốt nhất, tiếp theo là BW_MTF_H. Với các file lớn, hiệu suất nén của các file càng cao bởi BWT khơng giống nhƣ các mơ hình nén dữ liệu khác là xử lý văn bản theo từng ký tự một. Ở đây, BWT thƣờng đọc một khối văn bản (thƣờng là hàng trăm KB đến hàng nghìn KB) và sau đĩ biến đổi nĩ để nén.

Bảng 3.6: T lệ n n theo

Mơ hình

File HUFFMAN AC BW_MTF_H BW_MTF_AC WINRAR File1.docx 102.7082 97.0119 96.2747 95.5784 90 File2.doc 74.3805 72.0952 49.3474 48.0621 38 File3.xls 50.6575 48.2646 23.5166 22.1237 17 File4.ppt 87.9730 87.3938 64.7343 64.1551 51 File5.chm 95.5532 92.6450 88.6876 86.7794 77 File6.pdf 100.0006 98.6217 95.6779 94.2990 88 File7.cpp 61.0432 59.0402 27.0495 25.0465 23

File8.jpg 102.4900 99.7800 99.5907 99.3807 98 File9.bmp 96.8112 96.3841 44.5747 44.1476 28 File10.exe 74.3842 73.5097 47.4448 46.5703 36 File11.xlsx 100.1437 99.8892 99.6104 99.3559 97

T un nh 86.0132 84.0577 66.9553 65.9544 58.4545

Với kết quả thực nghiệm trong bảng 3.6, ta dễ dàng nhận thấy các file Powerpoint, CHM, PDF, JPG cho hiệu suất nén rất thấp. Đặc biệt là file JPG kết quả nén gần nhƣ khơng giảm.

Đối với những file văn bản mà tần số xuất hiện của các kí tự khơng quá chênh lệch và cĩ bộ kí tự nguồn lớn thì tác dụng nén dữ liệu của mã Huffman là khơng đáng kể.

Kết quả thực nghiệm từ 3 bảng 3.4, 3.5, 3.6 đều cho ta một kết quả duy nhất là dữ liệu sau khi qua các phép biến đổi sơ bộ rồi mới thực hiện thuật tốn nén đạt tỷ lệ nén tốt hơn nhiều lần so với thực hiện riêng thuật tốn nén và đạt xấp xỉ so với trình nén thƣơng mại Winrar.

Th i gian nén và giải nén

Các kết quả thời gian chạy đƣợc tính bình quân trên lần 10 thực hiện đƣợc đo theo giây trên chip Intel® Core™2 Duo Processor T6570 (2M Cache, 2.10 GHz, 800 MHz FSB); RAM 2 GB chạy trên WINDOWS XP SP3.

Bảng 3. : Th i gian n n và giải n n theo giây v i Canterbury Corpus

Mơ hình File

Nén Giải nén

HUFF AC B_M_H B_M_A HUFF AC B_M_H B_M_A

alice29.txt 0.3593 0.1093 0.1249 0.0156 0.0781 0.1093 0.0558 0.0781

asyoulik.txt 0.3281 0.0937 0.1249 0.0312 0.0625 0.0937 0.0521 0.0781

cp.html 0.0937 0.0156 0.0321 0.0000 0.0312 0.0156 0.0624 0.0312

fields.c 0.0625 0.0000 0.0156 0.0156 0.0156 0.0156 0.0156 0.0156

kennedy.xls 1.9687 0.2656 0.2062 0.1406 0.2031 0.3281 0.1837 0.2968 lcet10.txt 0.8750 0.1875 0.1343 0.0468 0.1093 0.3437 0.0497 0.1562 plrabn12.txt 1.0000 0.2500 0.1968 0.0468 0.125 0.25 0.1094 0.2187 sum 0.1875 0.0156 0.0312 0.0156 0.0156 0.0312 0.0078 0.0156 xargs.1 0.0312 0.0000 0.0156 0.0000 0.0000 0.0000 0.0000 0.0000 Tổn 4.9372 0.9373 0.8941 0.3122 0.6404 1.1872 0.5364 0.8903

Các kết quả thực nghiệm trong bảng 3.7 cho thấy rằng thời gian nén và giải nén của các phƣơng pháp mã hĩa dữ liệu là tƣơng đối nhanh (hầu hết đều chƣa đến 1 giây).

Bảng 3. : Th i gian n n và giải n n theo giây v i Canterbury Corpus l n

Mơ hình File

Nén Giải nén

HUFF AC B_M_H B_M_A HUFF AC B_M_H B_M_A

E.coli 8.1718 2.1406 1.9093 0.4687 0.4062 1.8906 0.3089 1.4375

bible.txt 7.7031 1.9062 1.5655 0.3593 0.5156 1.6406 0.3437 1.0937

world192.txt 4.7812 1.1406 1.1437 0.2031 0.4062 1.0000 0.2729 0.6718

Tổn 20.656 5.1874 4.6185 1.0311 1.328 4.5312 0.9255 3.203

Với file cĩ dung lƣợng lớn thì mã hĩa Huffman mất nhiều thời gian do việc tìm bộ kí tự nguồn và tần suất xuất hiện của chúng tốn nhiều chi phí.

Bảng 3. : Th i gian n n và giải n n theo giây

Mơ hình File

Nén Giải nén

HUFF AC B_M_H B_M_A HUFF AC B_M_H B_M_A

File1.docx 0.1250 0.0312 0.0468 0.0156 0.0312 0.0156 0.0936 0.0468 File2.doc 0.2812 0.0625 0.0781 0.0156 0.0468 0.0781 0.0468 0.0781 File3.xls 0.2031 0.0312 0.0312 0.0000 0.0468 0.0312 0.0468 0.0312 File4.ppt 2.2187 0.5781 0.758 0.3593 0.2656 0.5625 0.3172 0.6718 File5.chm 0.2187 0.0625 0.0937 0.0312 0.0312 0.0468 0.0625 0.0937 File6.pdf 0.4218 0.1875 0.1656 0.0781 0.0625 0.1562 0.0875 0.2187 File7.cpp 0.1250 0.0312 0.0312 0.0000 0.0312 0.0156 0.0936 0.0468 File8.jpg 0.2031 0.0781 0.1406 0.0625 0.0312 0.0781 0.0437 0.1093

File9.bmp 2.9843 0.8906 0.7337 0.2187 0.3125 0.875 0.1506 0.4218

File10.exe 0.5937 0.1875 0.1875 0.0468 0.25 0.1718 0.3182 0.2187

File11.xlsx 1.6718 0.5625 0.3581 0.4531 0.2187 0.5312 0.2959 0.7187

Tổn 9.0464 2.7029 2.6245 1.2809 1.3277 2.5621 1.5564 2.6556

- Trong hầu hết các trƣờng hợp, BW_MTF_AC đạt đƣợc tốc độ nén tốt nhất.

- Tốc độ giải nén của mã hĩa Huffman tốt hơn nhiều lần so với tốc độ giải nén của mã hĩa số học.

3.3 So sánh và đánh giá kết quả thử nghiệm

Từ các bảng kết quả trên, cĩ một s nhận xét nhƣ sau:

 Mơ hình nén kết hợp đạt đƣợc tỷ lệ nén tốt, tốc độ cao.

 Các file text cĩ tỉ lệ nén tốt nhất.

 Các file pdf, jpg cho tỷ lệ nén rất ít, kết quả nén gần nhƣ khơng giảm;

 Với các file lớn, nhiều dữ liệu nên tìm thấy nhiều sự dƣ thừa d n đến chiếm nhiều bộ nhớ tạm trong quá trình nén và giải nén nên hiệu suất kém hơn.

 Nén Huffman, AC chỉ đạt đƣợc 40 so với nén kết hợp.

 Nén kết hợp đạt đƣợc 95 so với trình nén thƣơng mại Winrar.

 Với các dữ liệu lớn đạt hiệu suất nén cao nhƣng mất nhiều thời gian nén và giải nén hơn.

3.4 Kết luận và hƣớng phát triển tiếp

4 Kết luận:

Với việc áp dụng thuật tốn BWT rồi MTF để sơ chế dữ liệu trƣớc khi áp dụng thuật tốn nén để cĩ kết quả nén tốt hơn. Từ đĩ ta thấy tính chất của dữ liệu đầu vào đĩng vai trị quan trọng đối với các thuật tốn nén.

Kết quả nén theo lƣợc đồ BWT-MTF-EC cĩ kết quả gần tƣơng đƣơng với phần mềm thƣơng mại Winrar đang đƣợc sử dụng tƣơng đối rộng rãi hiện nay.

Việc cải tiến thuật tốn MTF làm giảm đƣợc chi phí tính tốn trong quá trình thực hiện phép chuyển đổi MTF đặc biệt là quá trình mã hĩa.

Tuy nhiên, lƣợc đồ nén dữ liệu BWT-MTF-EC sẽ rất mất thời gian do phép biến đổi BWT, bởi vì thuật tốn này cần phải xét từng khối dữ liệu và sắp xếp trong khối dữ liệu.

4 Hƣớng phát triển c a đề tài

Tiếp tục nghiên cứu để cải tiến các thuật tốn liên quan đến phép biến đổi BWT nhằm giảm thời gian thực hiện thuật tốn nén dữ liệu.

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] Đặng Văn Chuyết, Nguyễn Tuấn Anh, “Cơ sở lý thuyết truyền tin” - Tập 1 và 2, Nhà xuất bản Giáo dục, 1998

[2] Vũ Vinh Quang, “Giáo trình Lý thuyết thơng tin”, Khoa CNTT, Đại học Thái Nguyên, 2010

Tiếng Anh:

[3] Ida Mengyi Pu, “Fundamental Data Compression, Butterworth-Heinemann, 2006

[4] M. Burrows and D.J. Wheeler. “A Block-sorting Lossless Data Compression Algorithm”. Technical Report 124, Digital Equipment Corporation, Palo Alto, California, May 1994.

[5] Christopher Mattern, Mixing Strategies in Data Compression, Proc. 22'nd IEEE Data Compression Conference, 2012.

[6] Fenwick, P., 2002. “Burrows Wheeler Compression with Variable-Length Integer Codes”, Software – Practice and Experience, Vol 32, No 13, Nov 2002.

[7] G. Manzini, “The Burrows-Wheeler Transform: Theory and Practice” inProceedings 24th International Symposium (Lecture Notes in Computer Science Vol.1672), Szklarska Poreba, Poland, Sept. 1999.

[8] Juergen Abel, Improvements to the Burrows-Wheeler Compression Algorithm: After BWT Stages, University Duisburg-Essen.

Các trang web:

[9] http://www.data-compression.info/Algorithms/index.htm

[10] http://nuwen.net/bwtzip.html

Một phần của tài liệu NÉN DỮ LIỆU KẾT HỢP VỚI CÁC PHƯƠNG PHÁP BIẾN ĐỔI SƠ BỘ DỮ LIỆU (Trang 54 -54 )

×