1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman

61 1K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án
Định dạng
Số trang 61
Dung lượng 678 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Công nghệ thông tin (CNTT-IT) được mệnh danh là ngành của mọi ngành

Trang 1

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ựcvậ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ôngviệ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 xaxưa, con người đã biết gìn giữ thông tin trong quân sự, trong chiến tranh nhằm làm chothô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ềucá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 haydù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 caomớ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áchtố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ầmquan 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ínhqui 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ốthơ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 đốichặ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ụngcô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ủaviệ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énShannon-Fano, Huffman hay Lempel Ziv Welch (LZW) được cho là kinh điển của côngnghệ 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ôngdụ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 2loại mã nén Shannon-Fano và Huffman Phần mô phỏng tính hiệu quả của 2 loại mã nén

Trang 2

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ậptrì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ằnghì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ươngphá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ậttoá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âuphâ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ạivớ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ấutrú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 3

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 tindù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ủacá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àinguyên như dung lượng bộ nhớ, băng thông, thời gian Ngược lại, dữ liệu đã được néncầ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ỏicá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ầncứ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ớiné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ạicủ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ên70%), 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òahai 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ìnhné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 định củacá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ị

Trang 4

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 filené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 forWindows 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ôngthuậ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ộtcông việc nào đó Cải tiến theo hướng này đang được thực hiện: ARC + PLUS có giaodiệ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ươngtrì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êntắ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ôngphả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ớicá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 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 ítkhi xảy ra nhưng nó cũng làm cho nhiều người e ngại không dám dùng

Trang 5

Để 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ầnkhô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énvù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ươngtrì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ơiphiền toái Nhiều chương trình - chẳng hạn Double Density có chức năng loại bỏ Đốivớ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 dunglượ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 Tuynhiê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 quantầ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ệuthu đượ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

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

Trang 6

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âydự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ừachí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ãykhác Do vâ ̣y, ta có thể mã hoá dữ liê ̣u mô ̣t cách cô đo ̣ng hơn Các ký tự có tần xuất xuấthiện cao hơn đươ ̣c thay thế bởi mô ̣t từ mã nhi ̣ phân với số bít nhỏ; ngược la ̣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ấtcủ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 la ̣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ãymớ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ểunày có tên là mã hóa loa ̣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-Zivđưa ra và có cải tiến vào năm 1977, 1978 và do đó có tên go ̣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-

Trang 7

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ể đếnphương pháp nén dữ liệu của Shannon-Fano và Huffman.

II 2.3.4.1Độ dư thừa vị tri

Do sự phu ̣ thuô ̣c lẫn nhau của dữ liê ̣u, đôi khi biết được ký hiê ̣u (giá tri ̣) xuất hiê ̣n ta ̣i

mô ̣t vi ̣ trí, đồng thời có thể đoán trước sự xuất hiê ̣n của các giá tri ̣ ở các vi ̣ trí khác nhau

mô ̣t cách phù hợp Chẳng ha ̣n, ảnh biểu diễn trong mô ̣t lưới hai chiều, mô ̣t số điểm ởhàng do ̣c trong mô ̣t khối dữ lê ̣u la ̣i xuất hiê ̣n trong cùng vi ̣ 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ữ vi ̣ trí hàng và cô ̣t Phương pháp nén dựatrên sự dư thừa này go ̣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 thi ̣ mô ̣tcá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í du ̣ như có ứng du ̣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

Theo cách này người ta phân thành 2 họ:

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 trongPKZIP, 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 định dạngfile CAB của Microsoft (Microsoft còn dùng thuật toán nén này trong file CHM, các fileoffice 2007) và thuật toán LZMA dùng trong chương trình 7-ZIP

Trang 8

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, filevă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

5 Burrows and Wheeler transform (BWT)

6 Prediction by partial matching (PPM)

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ônggiố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 Đốivớ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 dunglượ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ượnghầu như không thay đổi

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

Trang 9

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ựchiệ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ácphầ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óasau đó đượ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ườnghợ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 ho ̣:

• Phương pháp không gian (Spatial Data Compression): các phương pháp thuô ̣c

ho ̣ 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ềnkhông gian

• Phương pháp sử du ̣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ư ho ̣ trên

CHUƠNG 2 CÁC PHƯƠNG PHÁP NÉN DỮ LIỆU

Trang 10

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ôngthường

 Ví dụ mô tả thuật toán

Thống kê lượng tin:

Mã hóa lượng tin:

Ký hiệu Đếm Pi Log2(1/pi) Mã Tổng bits

Trang 11

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ệntươ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 bytes trong tệp dữ liệunguồn bằng biến nhị phân Nó tạo mã độ dài biến thiên là một tập hợp các bits Đây làphương pháp nén kiểu thống kê, những ký tự xuất hiện nhiều hơn sẽ có mã ngắn hơn(gần giống Shannon-Fano)

Mã hóa lượng tin:

Trang 12

- Số bit trung bình: 87/39 =2.23 (<2.28) Hiệu quả hơn Shannon – Fano.

Thuật toán giải nén:

- Bước 1: Đọc lần lượt từng bit trong tập tin nén và duyệt cây nhị phân đãđược xác định cho đến khi hết một lá Lấy ký tự ở lá đó ghi ra tệp giải nén

- Bước 2: Trong khi chưa hết tập tin nén thì quay lại thực hiện bước một,ngược lại thì thực hiện bước tiếp theo

- Bước 3: Khi hết tập tin, kết thúc thuật toán

Loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồm các kí tự lặplại, điều này thường thấy trong các tập tin đồ họa bitmap, các vùng dữ liệu hằng của cáctập tin chương trình, một số tập tin văn bản

 Ví dụ, xét chuỗi sau:

AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD

Chuỗi này có thể được mã hoá một cách cô đọng hơn bằng cách thay thế chuỗi kí tựlặp lại bằng một thể hiện duy nhất của kí tự lặp lại cùng với một biến đếm số lần kí tự đóđược lặp lại Ta muốn nói rằng chuỗi này gồm bốn chữ A theo sau bởi ba chữ B rồi lạitheo sau bởi hai chữ A, rồi lại theo sau bởi năm chữ B Việc nén một chuỗi theo

110

Trang 13

phương pháp này được gọi là mã hoá độ dài loạt Khi có những loạt dài, việc tiết kiệm

có thể là đáng kể Có nhiều cách để thực hiện ý tưởng này, tuỳ thuộc vào các đặc trưngcủa ứng dụng (các loạt chạy có khuynh hướng tương đối dài hay không ? Có bao nhiêubit được dùng để mã hoá các kí tự đang được mã ?)

Nếu ta biết rằng chuỗi của chúng ta chỉ chứa các chữ cái, thì ta có thể mã hoá biếnđếm một cách đơn giản bằng cách xen kẻ các con số với các chữ cái Vì vậy chuỗi kí tựtrên được mã hoá lại như sau: 4A3BAA5B8CDABCB3A4B3CD

Ở đây "4A" có nghĩa là "bốn chữ A" Chú ý là không đáng để mã hoá các loạt chạy

có độ dài 1 hoặc 2 vì cần đến hai kí tự để mã hoá

Ðối với các tập tin nhị phân một phiên bản được tinh chế của phương pháp này đượcdùng để thu được sự tiết kiệm đáng kể Ý tưởng ở đây là lưu lại các độ dài loạt, tận dụng

sự kiện các loạt chạy thay đổi giữa 0 và 1 để tránh phải lưu chính các số 0 và 1 đó Ðiềunày giả định rằng có một vài loạt chạy ngắn (Ta tiết kiệm các bit trên một loạt chạy chỉkhi độ dài của đường chạy là lớn hơn số bit cần để biễu diễn chính nó trong dạng nhịphân), nhưng khó có phương pháp mã hoá độ dài loạt nào hoạt động thật tốt trừ phi hầuhết các loạt chạy đều dài

Việc mã hoá độ dài loạt cần đến các biễu diễn riêng biệt cho tập tin và cho bản đãđược mã hoá của nó, vì vậy nó không thể dùng cho mọi tập tin, điều này có thể hoàntoàn bất lợi, ví dụ, phương pháp nén tập tin kí tự đã được đề nghị ở trên sẽ không dùngđược đối với các chuỗi kí tự có chứa số Nếu những kí tự khác được sử dụng để mã hoácác số đếm, thì nó sẽ không làm việc với các chuỗi chứa các kí tự đó Giả sử ta phải mãhoá bất kì kí tự nào từ một bảng chữ cái cố định bằng cách chỉ dùng các kí tự từ bảngchữ cái đó Ðể minh hoạ, giả sử ta phải mã hoá bất kì một chuỗi nào từ một chữ cái đó,

ta sẽ giả định rằng ta chỉ có 26 chữ cái trong bảng chữ cái (và cả khoảng trống) để làmviệc

Ðể có thể dùng vài chữ cái để biểu diễn các số và các kí tự khác biểu diễn các phần

tử của chuỗi sẽ được mã hoá, ta phải chọn một kí tự được gọi là kí tự "Escape" Mỗi một

sự xuất hiện của kí tự đó báo hiệu rằng hai chữ cái tiếp theo sẽ tạo thành một cặp (số

Trang 14

đếm, kí tự) với các số đếm được biểu diễn bằng cách dùng kí tự thứ i của bảng chữ cái

để biểu diễn số i Vì vậy, chuỗi ví dụ của chúng ta sẽ được biểu diễn như sau với Q đượcxem là các kí tự

Escape"QDABBBAABQHCDABCBAAAQDBCCCD

Tổ hợp của kí tự "Escape", số đếm và một kí tự lặp lại được gọi là một dãy Escape Chú

ý rằng không đáng để mã hoá các đường chạy có chiều dài ít hơn bốn kí tự, vì ít nhất làcần đến ba kí tự để mã hoá bất kì một loạt chạy nào

Trong trường hợp bản thân kí tự "Escape" xuất hiện trong dãy kí tự cần mã hoá ta sửdụng một dãy "Escape" với số đếm là 0 (kí tự space) để biểu diễn kí tự "Escape" Nhưvậy trong trường hợp kí tự "Escape" xuất hiện nhiều thì có thể làm cho tập tin nén phình

to hơn trước

Các loạt chạy dài có thể được cắt ra để mã hoá bằng nhiều dãy Escape, ví dụ, mộtloạt chạy gồm 51 chữ A sẽ được mã hoá như QZAQYA bằng cách dùng trên

Phương pháp mã hoá độ dài loạt thường được áp dụng cho các tập tin đồ hoạ bitmap

vì ở đó thường có các mảng lớn cùng màu được biểu diễn dưới dạng bitmap là các chuỗibit có đường chạy dài Trên thực tế, nó được dùng trong các tập tin PCX, RLE

Thay vì thông báo vị trí đoạn văn lặp lại trong quá khứ, mã LZ78 đánh số tất cảcác đoạn văn sao cho mỗi đoạn ghi nhận số hiệu đoạn văn lặp lại trong quá khứ cộng vớimột ký tự mà nó làm cho đoạn đó khác với đoạn trong quá khứ Như vậy mỗi đoạn mới

là một đoạn ký tự trong quá khứ cộng với một ký tự trong quá khứ Chính vì thế đoạnmới khác với đoạn cũ trong quá khứ

Ví dụ: Giả sứ ta có đoạn văn bản sau:” aaabbabaabaaabab”

Theo thuật toán LZ78 thì chúng được phân đoạn như sau:

Trang 15

Như vậy bản nén của chúng ta là: (0,a); (1,a); (0,b); (3,a); (4,a); (5,a); (4,b)

Đọc tiếp ký tự tiếp theo w:= ww+ch;

If w thuộc từ điển then ww:=w;

Else begin

Code(w,j);

Ghi j và ch vào tệp nén

Thêm w vào từ điển

Trang 16

End;

Bước 3: Dừng chương trình

Thuật toán giải nén

Bước 1: Đọc thông tin về từ điển đã được lưu trong tệp nén, tl:=false;

Bước 2: while not eof(f) do

Begin

Đọc byte tiếp theo -> b

Decode(b,s,t);

If tl=false then w:=w+s Else w:=ww+s;

Trang 17

Giải thuật nén LZW xây dựng một từ điển lưu các mẫu có tần suất xuất hiện caotrong ảnh Từ điển là tập hợp những cặp từ vựng và nghĩa của nó Trong đó, từ vựng sẽ

là các từ mã được sắp xếp theo thứ tự nhất định Nghĩa là một chuỗi con trong dữ liệuảnh Từ điển được xây dựng đồng thời với quá trình đọc dữ liệu Sự có mặt của mộtchuỗi con trong từ điển khẳng định rằng chuỗi đó đã từng xuất hiện trong phần dữ liệu

đã đọc Thuật toán liên tục “tra cứu” và cập nhật từ điển sau mỗi lần đọc một ký tự dữliệu đầu vào

Do kích thước bộ nhớ không phải vô hạn và để đảm bảo tốc độ tìm kiếm, từ điển chỉgiới hạn 4096 ở phần tử dùng để lưu lớn nhất là 4096 giá trị của các từ mã Như vậy độdài lớn nhất của từ mã là 12 bits (4096 = 212 ) Cấu trúc từ điển như sau

Eoi: Báo hiệu hết một phần nén

- 256 từ mã đầu tiên theo thứ tự từ 0…255 chứa các số nguyên từ 0…255 Đây là

mã của 256 ký tự cơ bản trong bảng mã ASCII

- Từ mã thứ 256 chứa một mã đặc biệt là “mã xoá” (CC- Clear Code) Mụcđích việc dùng mã xoá nhằm khắc phục tình trạng số mẫu lặp trong ảnh lớn hơn 4096.Khi đó một ảnh được quan niệm là nhiều mảnh ảnh, và từ điển là một bộ từ điển gồm

Trang 18

nhiều từ điển con Cứ hêt một mảnh ảnh người ta lại gửi một mã xoá để báo hiệu kếtthúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới đồng thời khởi tạo lại từ điển cho mảnh ảnhmới Mã xoá có giá trị là 256.

- Từ mã thứ 257 chứa mã kết thúc thông tin (EOI – End of information) Mãnày có giá trị là 257 Như chúng ta đã biết, một file ảnh GIF có thể có chứa nhiềuảnh.Mỗi một ảnh sẽ được mã hoá riêng.Chương trình giải mã sẽ lặp lại thao tác giải mãtừng ảnh cho đến khi gặp mã kết thúc thông tin thì dừng lại

- Các từ mã còn lại (từ 258 đến 4095) chứa các mẫu thường lặp lại trong ảnh

512 phần tử đầu tiên của từ điển biểu diễn bằng 9 bit Các từ mã từ 512 đến 1023 biểudiễn bởi 10 bit, từ 1024 đến 2047 biểu diễn bởi 11 bit và từ 2048 đến 4095 biểu diễn bởi

12 bit

Nguyên tắc hoạt động của nó như sau:

- Một xâu kí tự là một tập hợp từ hai kí tự trở lên

- Nhớ tất cả các xâu kí tự đã gặp và gán cho nó một dấu hiệu (token) riêng

- Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự sẽ được thay thế bằng dấu hiệu củanó

- Phần quan trọng nhất của phương pháp nén này là phải tạo một mảng rất lớndùng để lưu giữ các xâu kí tự đã gặp (Mảng này được gọi là "Từ điển") Khi các byte dữliệu cần nén được đem đến, chúng liền được giữ lại trong một bộ đệm chứa(Accumulator) và đem so sánh với các chuỗi đã có trong "từ điển" Nếu chuỗi dữ liệutrong bộ đệm chứa không có trong "từ điển" thì nó được bổ sung thêm vào "từ điển" vàchỉ số của chuỗi ở trong "từ điển" chính là dấu hiệu của chuỗi Nếu chuỗi trong bộ đệmchứa đã có trong "từ điển" thì dấu hiệu của chuỗi được đem ra thay cho chuỗi ở dòng dữliệu ra

Quá trình nén:

Trang 19

LZW bắt đầu bởi 1 từ điển 256 kí tự (trong trường hợp sử dụng bảng mã 8 bits) và sửdụng chúng như tập kí tự chuẩn Sau đó mỗi lần đọc nó đọc 8 bits (ví dụ 't', 'r', ) và mãhóa thành con số tương ứng với chỉ mục của kí tự đó trong từ điển.

Mỗi khi LZW đi qua 1 chuỗi con mới (giả sử "tr") thì nó thêm chuỗi con đó vào từđiển;

Mỗi khi nó đi qua 1 chuỗi con mà nó đã thấy trước đó, nó chỉ đọc thêm 1 kí tự mớinữa và cộng với chuỗi con đã biết để tạo ra 1 chuỗi con mới Lần tiếp theo LZW bắt gặpmột chuỗi con đã có, nó chỉ có việc sử dụng số chỉ mục tương ứng trong từ điển

Thường thì người ta sẽ định sẵn số lượng lớn nhất các từ trong từ điển (giả sử 4096),

vì thế việc nén LZW không làm tiêu tốn hết toàn bộ bộ nhớ Vì vậy mã của các chuỗicon trong ví dụ này là 12 bits (2 ^ 12 = 4096) Cần thiết phải lập mã dài hơn số bits củamột kí tự (12 vs 8 bits), do đo khi rất nhiều chuỗi con lặp lại sẽ được thay thế bởi một

mã duy nhất thì việc nén được thực hiện

Ví dụ: Các bước để mã hoá chuỗi "ABCBCABCABCD" như sau:

• Các bước thực hiện

- Bươc 1: w = NIL;

- Bước 2: Trong khi đọc được ký tự thứ k trong chuỗi:

- Bước 3: Nếu wk đã tồn tại trong từ điển thì w=wk

- Bước 4: Còn không thì thêm wk vào trong từ điển, mã hoá ngõ ra cho w,w=k

- k=k+1

Trang 20

Count W K wk symbol index output

Chuỗi ra: 65- 66- 67- 259 -258- 67 (output)

• Đầu vào kích thước: 12 x 8 = 96 bits

• Đầu ra kích thước là: 5 x 8 + 3 x 9 = 67 bits

• Tỉ lệ nén là: 96 /67 =1.43

Trang 21

MPEG (Moving Picture Expert Group) được ra đời vào năm 1988 nhằm mục đíchchuẩn hoá cho nén tín hiệu âm thanh và video MPEG - 1 có thể nén tín hiệu video tới1.5Mbit/s với chất lượng VHS và âm thanh lập thể (stereo audio) với tốc độ 192 bit/s.

Nó được dùng để lưu trữ video và âm thanh trên CD-ROM

Vào những năm 1990, MPEG-2 đã ra đời nhằm đáp ứng các tiêu chuẩn nén videocho truyền hình MPEG-2 có khả năng mã hoá tín hiệu truyền hình ở tốc độ 3-15Mbit/s

và truyền hình độ nét cao ở tốc độ tới 15-30Mbit/s MPEG-2 cho phép mã hoá tín hiệuvideo với nhiều mức độ phân giải khác nhau, chúng có khả năng đáp ứng cho nhiều ứngdụng khác nhau Nhiều thuật toán tương ứng với nhiều các ứng dụng khác nhau đã pháttriển và được tập hợp lại thành một bộ tiêu chuẩn đầy đủ của MPEG Việc áp dụng toàn

bộ các đặc điểm của chuẩn MPEG-2 trong tất cả các bộ mã hoá và giải mã là không cầnthiết do sự phức tạp của thiết bị cũng như sự tốn kém về dải thông của đường truyền Vìvậy trong hầu hết các trường hợp ta chỉ sử dụng một phần nhất định trong toàn bộ cácđặc điểm của chuẩn MPEG-2, chúng thường được gọi là profiles và levels Một profile

sẽ xác định một thuật toán (điều chỉnh bitstream và độ phân giải màu) và một level sẽxác định một số tiêu chí bắt buộc cho các tham số của bức ảnh (ví dụ như kích thứơc ảnh

và số lượng bit)

MPEG-4 trở thành một tiêu chuẩn cho nén ảnh kỹ thuật truyền hình số, các ứngdụng về đồ hoạ và video tương tác hai chiều (games, videoconferencing) và các ứngdụng multimedia tương tác hai chiều (World Wide Web hoặc các ứng dụng nhằm phânphát dữ liệu video như truyền hình cáp, Internet video ) vào năm 1999 Ngày nay,MPEG-4 đã trở thành một tiêu chuẩn công nghệ trong quá trình sản xuất, phân phối vàtruy cập vào các hệ thống video Nó đã góp phần giải quyết vấn đề về dung lượng chocác thiết bị lưu trữ, giải quyết vấn đề về băng thông của đường truyền tín hiệu videohoặc kết hợp cả hai vấn đề trên

MPEG không phải là một công cụ nén đơn lẻ mà ưu điểm của nén ảnh dùngMPEG chính là ở chỗ MPEG có một tập hợp các công cụ mã hoá chuẩn, chúng có thểđược kết hợp vói nhau một cách linh động để phục vụ cho một loạt các ứng dụng khácnhau

Trang 22

Nén MPEG là sự kết hợp hài hoà của bốn kỹ thuật cơ bản: Tiền xử lý(Preprocessing), đoán trước sự chuyển động của các frame ở bộ mã hoá (temporalprediction), bù chuyển động ở bộ giải mã (motion compensation) và mã lượng tử hoá(quatisation coding) Các bộ lọc tiền xử lý sẽ lọc ra những thông tin không cần thiết từtín hiệu video và những thông tin khó mã hoá nhưng không quan trọng cho sự cảm thụcủa mắt người Kỹ thuật đoán chuyển động dựa trên nguyên tắc là các ảnh trong chuỗivideo dường như có liên quan mật thiết với nhau theo thời gian: Mỗi frame tại một thờiđiểm nhất định sẽ có nhiều khả năng giống với các frame đứng ngay phía trước và ngayphía sau nó Các bộ mã hoá sẽ tiến hành quét lần lượt từng phần nhỏ trong mỗi frame gọi

là macro blocks, sau đó nó sẽ phát hiện macro block nào không thay đổi từ frame này tớiframe khác Bộ mã hoá sẽ tiên đoán trước sự xuất hiện của các macro blocks khi biết vịtrí và hướng chuyển động của nó Do đó chỉ những sự thay đổi giữa các khối trong framehiện tại (motion compesated residual) và các khối được tiên đoán mới được truyền tớibên phía thu Phía bên thu tức bộ giải mã đã lưu trữ sẵn những thông tin mà không thayđổi từ frame này tới frame khác trong bộ nhớ đệm của nó và chúng được dùng để điềnthêm một cách đều đặn vào các vị trí trống trong ảnh được khôi phục

Như chúng ta đều biết, nén tín hiệu video được thực hiện nhờ việc loại bỏ cả sự

dư thừa về không gian (spatial coding) và thời gian (temporal coding) Trong MPEG,việc loại bỏ dư thừa về thời gian (nén liên ảnh) được thực hiện trước hết nhờ sử dụngcác tính chất giống nhau giữa các ảnh liên tiếp (Inter-frame techniques) Chúng ta có thể

sử dụng tính chất này để tạo ra các bức ảnh mới nhờ vào những thông tin từ những ảnh

đã gửi trước nó (“predicted”) Do vậy ở phía bộ mã hoá, ta chỉ cần gửi những bức ảnh cóthay đổi so với những ảnh trước, sau đó ta lại dùng phương pháp nén về không gian đểloại bỏ sự dư thừa về không gian trong chính bức ảnh sai khác này Nén về không giandựa trên nguyên tắc là phát hiện sự giống nhau của các điểm ảnh (pixels) lân cận nhau(Intra-frame coding techniques) JPEG chỉ áp dụng phương pháp nén theo không gian vì

nó được thiết kế để xử lý và truyền các ảnh tĩnh Tuy nhiên nén tín hiệu theo phươngpháp của JPEG cũng có thể được dùng để nén các bức ảnh một cách độc lập trong dãytín hiệu video ứng dụng này thường được gọi là JPEG động (Motion JPEG) Trong mộtchu kỳ gửi một dãy các bức ảnh theo kiểu JPEG động, ảnh đầu tiên được nén nhờ sự loại

bỏ độ dư thừa về không gian, sau đó các ảnh tiếp theo được nén nhờ sự loại bỏ độ dư

Trang 23

thừa về thời gian (nén liên ảnh) Quá trình được lặp đi lặp lại cho một dãy các bức ảnhtrong tín hiệu video.

Thuật toán nén MPEG cũng dựa trên phép biến đổi DCT cho các khối ảnh 8x8picxels để tìm ra sự thừa về không gian một cách có hiệu quả giữa các điểm ảnh trongcùng một bức ảnh Tuy nhiên, trong trường hợp có mối tương quan chặt chẽ giữa cácđiểm ảnh trong các bức ảnh kế tiếp nhau tức là trong trường hợp hai bức ảnh liên tiếp cónội dung trùng nhau, kỹ thuật Inter-frame coding techniques sẽ được dùng cùng với việctiên đoán sự dư thừa về không gian để tạo thành kỹ thuật tiên đoán bù chuyển động giữacác bức ảnh (Motion compesated prediction between frames) Trong nhiều sơ đồ nénMPEG, người ta thường kết hợp cả việc tiên đoán bù chuyển động theo thời gian vàphép biến đổi thông tin theo không gian để đạt hiệu quả nén cao (Hybrid DPCM/DCTcoding of video)

Hầu hết các sơ đồ nén MPEG đều dùng kỹ thuật lấy mẫu bổ xung (Subsampling)

và lượng tử hoá (Quantization) trước khi mã hoá Lấy mẫu bổ xung nhằm mục đích đểlàm giảm kích thước bức ảnh đầu vào theo cả theo chiều ngang và chiều dọc, như vậy sẽgiảm số lượng các điểm ảnh trước mã hoá Cũng nên nhớ rằng trong một số trường hợpngười ta còn lấy mẫu bổ xung theo thời gian để làm giảm số lượng các bức ảnh trongdãy ảnh trước khi mã hoá Đây được xem như là một kỹ thuật rất cơ bản nhằm loại bỏ sự

dư thừa dựa vào khả năng lưu ảnh của mắt người cảm thụ Thường thường, chúng ta cóthể phân biệt sự thay đổi về độ sáng của ảnh (changes in Brightness) tốt hơn so với sựthay đổi về màu (Chromaticity changes) Do đó trước hết các sơ đồ nén MPEG sẽ tiếnhành chia bức ảnh thành các thành phần Y (Luminance hay brightness plane) và UV(Chrominance hay color planes) tức là một thành phần về độ sáng và hai thành phần về

độ màu Các tín hiệu video thành phần này sẽ được lấy mẫu (samples) và số hoá(digitised) để tạo nên các điểm ảnh rời rạc theo tỷ lệ 4 : 2 : 2 và 4 : 2 : 0

Kỹ thuật tiên đoán bù chuyển động được sử dụng như là một trong những công cụ mạnh

để làm giảm sự dư thừa về không gian giữa các bức ảnh Khái niệm về bù chuyển động

là dựa trên sự phán đoán hướng chuyển động của các bức ảnh tức là các ảnh thành phầntrong dãy video sẽ được thay thế gần đúng Kỹ thuật tiên đoán bù chuyển động giữa các

Trang 24

bức ảnh được xem như là biện pháp để hạn chế bớt các thông số của chuyển động bởiviệc dùng các vector chuyển động để mô tả sự dịch chuyển của các điểm ảnh Kết quảtiên đoán tốt nhất của một điểm ảnh là dựa trên sự tiên đoán bù chuyển động từ một bứcảnh đã mã hoá được truyền phía trước của nó Cả hai thông số, sai số chuyển động (biênđộ) và các vectors chuyển động (hướng chuyển động) đều được truyền tới phía bênnhận Tuy nhiên do có mối quan hệ tương quan chặt chẽ giữa các điểm ảnh về khônggian (trùng về không gian), một vector chuyển động có thể được dùng cho một khối cácđiểm ảnh gồm các pixels lân cận nhau (MPEG -1 và MPEG -2 dùng các khối 16 x16pixels).

Trong MPEG-2, có nhiều phương pháp để tiên đoán sự chuyển động Ví dụ mộtkhối ảnh có thể được tiên đoán xuôi từ những ảnh đã được truyền trước nó (ForwardPredicted), có thể đoán ngược từ những ảnh truyền sau nó (Backward Predicted) hoặctheo cả hai chiều (Bidirectionally Predicted) Các phương pháp dùng để tiên đoán cáckhối trong cùng một ảnh cũng có thể không giống nhau, chúng có thể thay đổi từ khối nọsang khối kia Hơn nữa, hai trường (fields) trong cùng một khối cũng có thể được tiênđoán theo hai cách khác nhau dùng các vector độc lập nhau hoặc chúng có thể dùngchung một vector Đối với mỗi khối ảnh, bộ mã hoá sẽ chọn các phương pháp tiên đoánthích hợp, cố gắng đảm bảo chất lượng ảnh tốt nhất khi được giải mã trong điều kiện yêucầu khắt khe về số bit Các thông số liên quan tới chọn phương pháp tiên đoán cũngđược truyền tới bộ giải mã cùng với dự đoán sai số nhằm khôi phục gần chính xác ảnhgốc

Trong MPEG, có 3 kiểu ảnh khác nhau được dùng để mã hoá cho các khối ảnh.Kiểu ảnh ‘Intra’ (I-pictures) là ảnh được mã hoá một cách độc lập mà không cần thamkhảo tới các ảnh khác Hiệu quả nén tín hiệu đạt được do loại bỏ sự thừa về không gian

mà không có yếu tố thời gian tham gia vào quá trình I-pictures được dùng một cách tuầnhoàn để tạo thành các điểm tựa cho dòng dữ liệu trong quá trình giải mã

Ảnh ‘Predictive’ (P-pictures) có thể sử dụng các ảnh I hoặc P ngay sát phía trước

nó để bù chuyển động và chính nó cũng có thể được dùng để tham khảo cho việc tiênđoán các ảnh khác tiếp theo Mỗi khối ảnh trong P-picture có thể hoặc được mã theo

Trang 25

kiểu tiên đoán (predicted) hoặc được mã một cách độc lập (intra-coded) Do sử dụng cảnén theo không gian và thời gian, hiệu quả nén của P-pictures được tăng lên một cáchđáng kể so với I-pictures.

Ảnh ‘Bidirectionally-Predictive’ pictures hay B- Pictures có thể sử dụng các ảnh Ihoặc P phía trước hoặc phía sau nó cho việc bù chuyển động và do vậy cho kết quả néncao nhất Mỗi khối trong B-pictures có thể được tiên đoán theo chiều ngược, xuôi, cả haihướng hoặc được mã một cách độc lập Để có thể tiên đoán ngược từ một bức ảnh phíasau nó, bộ mã hoá sẽ tiến hành sắp xếp lại các bức ảnh từ thứ tự xuất hiện một cách tựnhiên sang một thứ tự khác của các ảnh trên đường truyền Do vậy từ đầu ra của bộ mãhoá, B-pictures được truyền sau các ảnh dùng để tham khảo ở phía trước và phía sau của

nó Điều này sẽ tạo ra độ trễ do phải sắp xếp lại thông tin, độ trễ này lớn hay nhỏ là tuỳthuộc vào số các bức ảnh B-pictures liên tiếp nhau được truyền

Các ảnh I, P, B-pictures thường xuất hiện theo một thứ tự lặp đi lặp lại một cáchtuần hoàn, do đó ta có khái niệm về nhóm các bức ảnh GOP (Group of Pictures) Một ví

dụ của GOP ở dạng ảnh tự nhiên xuất hiện theo thứ tự như sau:

B1 B2 I3 B4 B5 B7 B8 P9 B10 B11 P12

Thứ tự xuất hiện của chúng trên đường truyền bị thay đổi do sự sắp xếp lại của bộ

mã hoá như sau:

Trang 26

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 giải thích như sau:

Dữ liệu từ các khối ảnh (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 sau đó sẽ tính toán vector chuyển động (MotionVector), vector này sẽ đặc trưng cho sự dịch chuyển theo cả hai chiều dọc và ngang củakhối ảnh mới cần mã hoá so với ảnh tham khảo Chúng ta lưu ý rằng vector chuyển động

có độ phân giải bằng một nửa do thực hiện quét xen kẽ

Trang 27

Bộ đoán chuyển động cũng đồng thời gửi các khối ảnh tham khảo này mà chúngthường được gọi là các khối tiên đoán (Predicted macroblock) tới bộ trừ để trừ với khốiảnh mới cần mã hoá (thực hiện trừ từng điểm ảnh tương ứng tức là Pixel by pixel) Kếtquả là ta sẽ được các sai số tiên đoán (Error Prediction) hoặc tín hiệu dư, chúng sẽ đặctrưng cho sự sai khác giữa khối ảnh cần tiên đoán và khối ảnh thực tế cần mã hoá.

Tín hiệu dư hay sai số tiên đoán này sẽ được biến đổi DCT, các hệ số nhận đượcsau biến đổi DCT sẽ được lượng tử hoá để làm giảm số lượng các bits cần truyền Các

hệ số này sẽ được đưa 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 biến đổi ngượclại dùng phép biến đổi IDCT và được cộng thêm vào ảnh đứng trước để tạo nên ảnhtham 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 Từ luồng dữliệu nhận được ở đầu vào, vector chuyển động được tách ra và đưa vào bộ bù chuyểnđộng (Motion Compensator), các hệ số DCT được đưa vào bộ biến đổi ngược IDCT đểbiến tín hiệu từ miền tần số thành tín hiệu ở miền không gian Đối với P pictures và Bpictures, vector chuyển động sẽ được kết hợp với các khối tiên đoán (predictedmacroblock) để tạo thành các ảnh tham khảo

Mục đích:

Trang 28

Biểu diễn chuỗi số ngắn gọn.

Tốc độ bit thấp

Chất lượng cao

Động cơ:

Giảm tốc độ dữ liệu

Giảm chi phí truyền dẫn (BW)

Giảm các yêu cầu lưu trữ

Trang 29

Lớp I Lớp II Lớp III

Dùng cho thiết bị dân dụng Dùng cho thiết bị chuyên

dụng, đa môi trường

Dùng cho thiết bị chuyên dụng, đa môi trường

Tốc độ dòng số liệu từ

32-448kbps

Tốc độ dòng số liệu từ 384kbps

Tốc độ dòng số liệu từ 320kbps

32-384mẫu/khung/kênh 1152mẫu/khung/kênh 1152mẫu/khung/kênh

32 băng con đều nhau, mỗi

băng con gồm block 12 mẫu

32 băng con đều nhau, mỗi băng con gồm block 36 mẫu

32 băng con tới hạnthành 18 MDCT

Chu kỳ một khung 8ms cho

Hệ số tỷ lệ 6 bits/băng, phân phối bit theo phương thức ứng trước.

Lọc băng con 0Lọc băng con 1

12 mẫu 12 mẫu 12 mẫu

12 mẫu 12 mẫu 12 mẫu

12 mẫu 12 mẫu 12 mẫu

12 mẫu 12 mẫu 12 mẫu

Khung Khung lớp II

Được phát triển trên cơ sở phối hợp chuẩn ISO/IEC 11172

Sử dụng tần số lấy mẫu của CD-DA, với fs=32;44.1;48kHz, mã hoá 16bits/mẫutín hiệu

Tốc độ bít: 32 - 768 kbps/channel

Các kiểu: Mono, dual-mono, dual-stereo, joint-stereo

Xác định các tham số khác nhau về tốc độ, dòng số sau khi nén, số mẫu trongheader cho một kênh, cấu trúc thời gian khung, phương pháp mã hoá dự đoán và các chế

độ làm việc

• Đặc tính:

Trang 29

Trang 30

Lýợng tử hoá

Mã hoá

U X

FFT LI: 512 LII: 1024

Phân tích tâm sinh lý

âm học

Phân phối bit động

32

Dữ liệu

Thông tin thêm

32

s(n)

Băng lọc phân tích đa

Ngày đăng: 26/04/2013, 09:50

HÌNH ẢNH LIÊN QUAN

Hình 1. Sơ đồ bộ mã hoá và giải mã dùng MPEG - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 1. Sơ đồ bộ mã hoá và giải mã dùng MPEG (Trang 26)
Hình 2. Phân lớp mã hóa MPEG 1 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 2. Phân lớp mã hóa MPEG 1 (Trang 28)
Hình 3. Các mẫu Audio - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 3. Các mẫu Audio (Trang 30)
Hình 5. Cấu trúc khung MPEG - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 5. Cấu trúc khung MPEG (Trang 32)
Hình 7. Sơ đồ mã hóa và giải mã MPEG 2 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 7. Sơ đồ mã hóa và giải mã MPEG 2 (Trang 34)
Hình 10.         Bước 5 Như vậy bộ mã tối ưu tương ứng là: - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 10. Bước 5 Như vậy bộ mã tối ưu tương ứng là: (Trang 42)
Hình 12. Thống kê tần suất xuất hiện và bảng mã của Shannon-Fano trong ví dụ 1 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 12. Thống kê tần suất xuất hiện và bảng mã của Shannon-Fano trong ví dụ 1 (Trang 50)
Hình 13. Hiển thị tỉ lệ nén của mã Shannon-Fano trong ví dụ 1 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 13. Hiển thị tỉ lệ nén của mã Shannon-Fano trong ví dụ 1 (Trang 51)
Hình 14. Giới thiệu đề tài dùng mã Huffman - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 14. Giới thiệu đề tài dùng mã Huffman (Trang 51)
Hình 15. Menu điều khiển chương trình nén mã Huffman - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 15. Menu điều khiển chương trình nén mã Huffman (Trang 52)
Hình 16. Hiển thị trực quan thông tin nén của mã Huffman trong ví dụ 1 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 16. Hiển thị trực quan thông tin nén của mã Huffman trong ví dụ 1 (Trang 52)
Hình 18. Thống kê dữ liệu trong ví dụ 7 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 18. Thống kê dữ liệu trong ví dụ 7 (Trang 53)
Hình 19. Kết quả nén Shannon-Fano với ví dụ 7 - nghiên cứu thuật toán của các loại mã nén Shannon-Fano và Huffman
Hình 19. Kết quả nén Shannon-Fano với ví dụ 7 (Trang 54)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w