Chương 2 MÃ HÓA NGUỒN2.2 Đo lượng tin của nguồn tin tt: Lượng tin trung bình: lượng tin trung bình chứa trong một ký hiệu bất kỳ của nguồn Nhận xét: lượng tin trung bình phản ánh
Trang 1Chương 2
MÃ HÓA NGUỒN
Nội dung:
2.1 Mô hình toán học của nguồn tin
2.2 Đo lượng tin của nguồn tin
2.3 Các kỹ thuật mã hóa nguồn rời rạc
2.4 Các kỹ thuật mã hóa nguồn tương tự
2.5.Lấy mẫu và điều chế xung
2.6 Điều chế xung mã
Bài tập
Trang 2Chương 2 MÃ HÓA NGUỒN
2.1 Mô hình toán học của nguồn tin:
Nguồn tin: Nguồn tương tự: tín hiệu ngõ ra có dạng liên tục
Nguồn rời rạc: tín hiệu ngõ ra có dạng rời rạc
Nguồn tin tạo ra các bản tin một cách ngẫu nhiên Với nguồn rời rạc (Discrete source), ngõ ra là chuỗi các biến ngẫu nhiên rời rạc
Mô hình cho nguồn rời rạc:
Giả sử nguồn rời rạc gồm L ký hiệu :{x1, x2,…, xL}, với xác suất tương ứng là
{p1,p2,…,pL} Lúc đó:
Ví dụ: Nguồn rời rạc nhị phân X sẽ gồm hai ký hiệu: {0,1} và P(X=0)+ P(X=1)=1.
Nguồn rời rạc không nhớ DMS (Discrete Memoryless Source): phát ra chuỗi
ký hiệu là độc lập thống kê, nghĩa là:
Trang 3Chương 2 MÃ HÓA NGUỒN
2.2 Đo lượng tin của nguồn tin:
2.2.1 Lượng tin của nguồn rời rạc:
Tin tức liên quan đến sự ngạc nhiên mà chúng ta cảm nhận khi nhận được bản tin Bản tin ít có khả năng xảy ra sẽ mang nhiều tin tức hơn Từ đó, người ta đưa ra khái niệm lượng tin
Lượng tin:
lượng tin riêng có được khi xuất hiện bản tin x i (xảy ra sự kiện X= x i )
• Đơn vị của lượng tin: Tùy vào cơ số hàm logarit (cơ số 2: đơn vị là bit, cơ số e: đơn vị là nat, cơ số 10: Hartley)
• Tính chất: i/
ii/
1( ) log log ( )
Trang 4Chương 2 MÃ HÓA NGUỒN
2.2 Đo lượng tin của nguồn tin (tt):
Lượng tin có điều kiện:
lượng tin có được khi sự kiện X = x i xảy ra sau khi quan sát sự kiện Y = y j đã
xảy ra.
Lượng tin tương hỗ:
lượng tin có được về sự kiện X =x i từ việc xảy ra sự kiện Y=y i
Nhận xét: i/ Khi X, Y độc lập thống kê: I(xi,yj) = 0
ii/ I(xi,yj) = I(yj,xi) lượng tin về sự kiện X = xi có được từ việc xảy ra sự kiện Y = yj giống với lượng tin về sự kiện Y = yj có được
từ việc xảy ra sự kiện X = xi
Trang 5Chương 2 MÃ HÓA NGUỒN
2.2 Đo lượng tin của nguồn tin (tt):
Lượng tin trung bình:
lượng tin trung bình chứa trong một ký hiệu bất kỳ của nguồn
Nhận xét: lượng tin trung bình phản ánh được giá trị tin tức của cả nguồn tin.
Ví dụ: Một nguồn DMS gồm 2 ký hiệu {x 0 ,x 1 } với xác suất xuất hiện các ký hiệu
tương ứng là 0.99 và 0.01
Lượng tin riêng của x 1 :
Lượng tin trung bình của nguồn:
Lượng tin tương hỗ trung bình:
Trang 6Chương 2 MÃ HÓA NGUỒN
2.2 Đo lượng tin của nguồn tin (tt):
Ví dụ: Cho mô hình như sau Trong đó:
X, Y là các nguồn rời rạc nhị phân.
( 0)
P Y X I
1
0
p 1
p 0 1- p 1
Trang 7Chương 2 MÃ HÓA NGUỒN
2.2.2 Entropy của nguồn rời rạc:
Giả sử nguồn rời rạc X gồm L ký hiệu {x1, x2,…, xL}, Entropy của nguồn X được định nghĩa là:
Nhận xét:
• Entropy của nguồn chính là lượng tin trung bình của nguồn đó.
• Nếu các ký hiệu của nguồn có xác suất xuất hiện
bằng nhau thì Entropy sẽ đạt giá trị cực đại
• Dấu = xảy ra khi một ký hiệu có xác suất xuất hiện bằng
1, còn xác suất xuất hiện của các ký hiệu còn lại là 0
Trang 8Chương 2 MÃ HÓA NGUỒN
2.2.2 Entropy của nguồn rời rạc (tt):
Trang 9Chương 2 MÃ HÓA NGUỒN
2.2 Đo lượng tin của nguồn tin (tt):
Ví dụ: Cho hai nguồn rời rạc X, Y có
xác suất xuất hiện đồng thời các ký hiệu
được mô tả như bảng sau.
Tính H(X), H(Y|X), H(X,Y) [bits]
Trang 10Chương 2 MÃ HÓA NGUỒN
2.2 Đo lượng tin của nguồn tin (tt):
( , ) ( , ) log ( , )
( 0, 0) log ( 0, 0) ( 0, 1) log ( 0, 1) ( 1, 0) log ( 1, 0) ( 1, 1) log ( 1, 1)
Trang 11Chương 2 MÃ HÓA NGUỒN
2.2.3 Entropy của nguồn liên tục:
Giả sử nguồn liên tục X(t) có hàm mật độ phân bố xác suất của hàm mẫu x(t)
là p(x) Lúc đó, Entropy của nguồn X được định nghĩa là:
Ví dụ: Cho nguồn liên tục X có :
Tìm H(X) khi a=1; a=4
Lời giải:
Entropy của nguồn:
Khi a= 1: H(X)=log21=0 [bits]
Khi a= 4: H(X)=log24=2 [bits]
1/ , 0 ( )
Trang 12Chương 2 MÃ HÓA NGUỒN
2.3 Các phương pháp mã hóa nguồn rời rạc (Nén dữ liệu)
Giả sử nguồn rời rạc X gồm L ký hiệu {x1, x2,…, xL}, với xác suất xuất hiện các ký hiệu tương ứng là {p1,p2,…,pL} Mã hóa nguồn X chính là quá trình biểu diễn các
ký hiệu xi của nguồn bởi các chuỗi bi có chiều dài Ri (bi = [b1,b2,…,bRi], bi = 0/1)
Yêu cầu của bộ mã hóa nguồn:
• Các từ mã biểu diễn ở dạng nhị phân
• Quá trình mã hóa sao cho việc giải mã là duy nhất
Đánh giá hiệu quả của bộ mã hóa nguồn:
• Thông qua việc so sánh số lượng bit trung bình dùng để biểu diễn từ mã
• Hiệu suất mã hóa:
H(X): entropy của nguồn X
: chiều dài trung bình của từ mã
12
( )
H X R
η =
Nguồn rời rạc X
=
R
Trang 13Chương 2 MÃ HÓA NGUỒN
2.3 Các phương pháp mã hóa nguồn rời rạc (tt)
2.3.1 Phương pháp mã hóa với từ mã có chiều dài bằng nhau:
Tất cả các ký hiệu của nguồn được mã hóa bằng các từ mã có chiều dài bằng nhau [từ mã R bit]
Quá trình mã hóa không tổn hao, và việc giải mã là dể dàng và duy nhất
Ví dụ: mã ASCII, mã EBCDIC, mã Baudot,vv…
Quá trình mã hóa:
• Giả sử nguồn gồm L ký hiệu đồng xác suất Ta muốn mã hóa dùng R bit ?
• Chọn giá trị của R:
• Lúc đó, hiệu suất mã hóa:
o Khi L lũy thừa của 2:
Trang 14Chương 2 MÃ HÓA NGUỒN
2.3.1 Phương pháp mã hóa với từ mã có chiều dài bằng nhau (tt):
o Khi L không phải là lũy thừa của 2:
Khi L lớn thì log2L lớn hiệu suất cao Ngược lại, khi L nhỏ, hiệu suất
sẽ rất thấp mã hóa từng khối J ký hiệu một lúc
Quá trình mã hóa J ký hiệu cùng một lúc:
• Số ký hiệu có thể có của nguồn: LJ
• Chọn chiều dài từ mã mã hóa: N Yêu cầu giá trị của N phải thỏa:
2N ≥ LJ N ≥ log2LJ = Jlog2L
Do N phải là số nguyên, nên:
• Hiệu suất mã hóa:
Trang 15Chương 2 MÃ HÓA NGUỒN
2.3.1 Phương pháp mã hóa với từ mã có chiều dài bằng nhau (tt)
Ví dụ: Cho nguồn DMS có 100 ký hiệu đồng xác suất.
a Khi mỗi một ký hiệu được mã hóa tại một thời điểm Tìm R=? η =?
• Chiều dài của từ mã:
Mỗi ký hiệu được biểu diễn bằng từ mã có chiều dài 7 bit.
• Hiệu suất mã hóa:
b Khi 3 ký hiệu được mã hóa cùng một lúc Tìm N=? η =?
• Chiều dài của từ mã:
• Hiệu suất mã hóa:
Nhận xét: khi xác suất xuất hiện các ký hiệu không bằng nhau, hiệu suất sẽ thấp
hơn (do lúc đó H(X) < log2L) dùng phương pháp mã hóa khác
log log 100 ( )
Trang 16Chương 2 MÃ HÓA NGUỒN
2.3.1 Phương pháp mã hóa với từ mã có chiều dài thay đổi (còn gọi là
phương pháp mã hóa thống kê tối ưu hay mã hóa entropy)
Các ký hiệu của nguồn được mã hóa bằng các từ mã có chiều dài thay đổi
Các ký hiệu có xác suất xuất hiện lớn sẽ được mã hóa bằng từ mã có chiều dài nhỏ, và ngược lại Kết quả là, chiều dài trung bình của từ mã sẽ nhỏ η cao
Ví dụ: mã Morse, mã Huffman, mã Shannon-Fano,vv…
Vấn đề giải mã khi từ mã có chiều dài thay đổi:
Ví dụ: Nguồn DMS có 4 ký hiệu, được mã hóa theo bảng sau:
Giả sử chuỗi thu được: 001001… Xác định ký hiệu đã mã hóa ?????
1 00 01 10
0 10 110 111
Trang 17Chương 2 MÃ HÓA NGUỒN
Mã có tính prefix: không có từ mã nào có chiều dài n giống với n bit đầu tiên
của từ mã có chiều dài m (m>n)
Trang 18Chương 2 MÃ HÓA NGUỒN
2.3.2 Phương pháp mã hóa với từ mã có chiều dài thay đổi (tt)
a Phương pháp mã hóa Shannon-Fano:
Các bước thực hiện:
Liệt kê các ký hiệu theo thứ tự xác suất giảm dần
Chia các ký hiệu làm hai nhóm sao cho tổng xác suất của mỗi nhóm là gần
bằng nhau nhất Ký hiệu nhóm đầu là 0, nhóm sau là 1.
Trong mỗi nhóm lại lại chia thành hai nhóm nhỏ có xác suất gần bằng nhau
nhất Quá trình cứ tiếp tục cho đến khi chỉ còn một ký hiệu thì kết thúc.
Ví dụ: Nguồn DMS có 7 ký hiệu với xác suất xuất hiện như sau:
Hãy thực hiện quá trình mã hóa Fano và tính hiệu suất mã hóa?
18
ui u1 u2 u3 u4 u5 u6 u7
pi 0.34 0.23 0.19 0.1 0.07 0.06 0.01
Trang 19Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 20Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 21Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 22Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 23Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 24Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 25Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Trang 26Chương 2 MÃ HÓA NGUỒN
a Phương pháp mã hóa Shannon-Fano (tt):
Lời giải (tt):
Kết quả giải mã: u 1 : 00 u 4 : 110
u 2 : 01 u 5 : 1110
u 3 : 10 u 6 : 11110u 7 : 11111
Hiệu suất mã hóa:
• Entropy của nguồn:
= -[0.34log20.34 + 0.23log20.23 + … + 0.01log20.01]
H U R
H
Trang 27Chương 2 MÃ HÓA NGUỒN
2.3.2 Phương pháp mã hóa với từ mã có chiều dài thay đổi (tt)
b Phương pháp mã hóa Huffman:
Các bước thực hiện:
Liệt kê các ký hiệu theo thứ tự xác suất giảm dần
Hai ký hiệu cuối có xác suất bé nhất được hợp thành ký hiệu mới có xác
suất mới bằng tổng hai xác suất.
Các ký hiệu còn lại cùng với ký hiệu mới lại được liệt kê theo thứ tự xác
suất giảm dần.
Quá trình cứ tiếp tục cho đến khi hợp thành một ký hiệu mới có xác suất
xuất hiện bằng 1.
Ví dụ: Nguồn DMS có 7 ký hiệu với xác suất xuất hiện như sau:
Hãy thực hiện quá trình mã hóa Huffman và tính hiệu suất mã hóa?
ui u1 u2 u3 u4 u5 u6 u7
pi 0.34 0.23 0.19 0.1 0.07 0.06 0.01
Trang 28Chương 2 MÃ HÓA NGUỒN
b Phương pháp mã hóa Huffman:
Lời giải:
Quá trình được thực hiện như sau:
28
Trang 29Chương 2 MÃ HÓA NGUỒN
b Phương pháp mã hóa Huffman (tt):
Lời giải (tt):
Kết quả giải mã:
Hiệu suất mã hóa:
• Entropy của nguồn:
= - [0.34log20.34 + 0.23log20.23 + … + 0.01log20.01]
H U R
H
T o mã ạ 00 10 11 011 0100 01010 01011
Trang 30c Mã hóa số học (Arithmetic Coding)
05/14/15 30
Arithmetic Coding là gì Điểm khác biệt với mã Huffman Các bước tiến hành mã hóa
Ví dụ
4
1 2 3
Trang 31c Arithmetic Coding
Ngày càng được
sử dụng phổ biến
Ngày càng được
sử dụng phổ biến
Được
sử dụng trong phương pháp Lossless data compression
Được
sử dụng trong phương pháp Lossless data compression
Phương pháp
mã hóa dữ liệu tạo ra mã có chiều dài thay
đổi
Arithmetic Coding
Trang 32Mã hóa Huffman có thể được tối ưu nếu xác suất kí hiê êu là mô êt số nguyên lũy thừa của
½, nhưng không phải lúc nào cũng như vâ êy Mã hóa số học là kĩ thuâ êt nén dữ liê êu mà cho phép mã hóa dữ liê êu bằng cách tạo ra mô êt chuỗi mã (code string) Chuỗi này biểu diễn mô êt giá trị thâ êp phân nằm trong khoảng giữa 0 và 1
Mô hình là cách tính toán phân bố các xác suất cho kí hiệu tiếp theo sẽ được mã hóa, sao cho bô ê giải mã tìm ra được phân bố xác suất y hê êt như thế Có hai loại mô hình được sử dụng trong mã hóa số học:
1 Mô hình cố định: Trong mô hình này, cả bô ê mã hóa và bô ê giải mã biết được xác suất
đã gán cho mỗi kí hiê êu Những xác suất này có thể được xác định bằng cách đo đạc các tần số trong các mẫu đại diê ên sắp được mã và các tần số kí hiê êu
2 Mô hình thích nghi: xác suất được gán có thể thay đổi khi mỗi kí hiê êu được mã hóa, dựa trên các tần số kí hiê êu thấy được.
Nguyên ly
Ý tưởng cơ bản của mã hóa số học là sử dụng khoảng chia giữa 0 và 1 để biểu diễn các khoảng mã hóa Rõ ràng hàm mâ êt đô ê xác xuất tích lũy của tất cả các kí hiê êu sẽ bằng 1 Khi bản tin càng dài thì các khoảng để biểu diễn bản tin đó càng ngắn, và số các bít cần để xác định khoảng đó càng tăng.
c MÃ HÓA SỐ HỌC
Trang 33[0,1)
Phân tích các số giới hạn trong khoảng
[0,1)
Bước 1 Bước 2
Trang 34c Arithmetic Coding
05/14/15 34
Huffman coding
Arithmetic coding
sử dụng mỗi từ mã
để mã cho cả chuỗi
Trang 35Thuật toán mã hóa
Trang 36Thuật toán giải mã
Trang 4605/14/15 46
Trang 4805/14/15 48
Trang 5005/14/15 50
Trang 5205/14/15 52
Trang 5405/14/15 54
Trang 5605/14/15 56
Trang 57d Lempel-Zip Coding
Thuật toán LZ (Lempel-Zip) là thuật toán nén dữ liệu theo từ điển cơ sở (Dictionary-based compression)
Sử dụng một bảng chứa tất cả các chuỗi ký tự có thể xuất hiện trong văn bản và được chứa trên cả bộ mã hóa và giải mã.
Bộ mã hóa thay vì gửi các từ riêng lẻ, nó chỉ gửi chỉ
số của từ được lưu trong bảng Bộ giải mã sẽ truy cập vào bảng xử lý để tái tạo lại văn bản đó.
Trang 58 Được Jacob Braham Ziv đưa ra lần đầu tiên năm 1977, sau
đó phát triển thành một họ giải thuật nén từ điển là LZ.
Năm 1984, Terry Welch cải tiến giải thuật LZ thành một
giải thuật tốt hơn :LZW
Dùng để giảm dư thừa trong pixel
Không cần biết trước xác suất phân bố của các pixel
Được ứng dụng rộng rãi trong nén số liệu các file máy tính, các tiện ích nén/giãn trong UNIX.
Thường được dùng để nén các loại văn bản, ảnh đen trắng, ảnh màu, ảnh đa mức xám Và là chuẩn nén cho các dạng ảnh GIF và TIFF
d Lempel-Zip Coding
Trang 60d Lempel-Zip Coding
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ột chuỗ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.
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 mã là 12 bít(4096= 212).
Trang 61Thuật toán mã hóa Lempel-Zip
1 Initialize table with single character strings
2 P = first input character
3 WHILE not end of input stream
4 C = next input character
5 IF P + C is in the string table
6 P = P + C
7 ELSE
8 output the code for P
9 add P + C to the string table
10 P = C
11 END WHILE
12 output code for P
Trang 62Thuật toán giải nén Lempel-Zip
1 Initialize table with single character strings
2 OLD = first input code
3 output translation of OLD
4 WHILE not end of input stream
5 NEW = next input code
6 IF NEW is not in the string table
Trang 63Ví dụ
In practice, the alphabet may be the 256 character ASCII set.
code key
0 a
1 b
Trang 640 a
1 b
2 ab
Trang 65Nén LZW
code key
0 a
1 b
2 ab
3 ba
Trang 66Nén LZW
code key
0 a
1 b
2 ab
3 ba
Trang 67Nén LZW
code key
0 a
1 b
2 ab
3 ba
5 abb
Trang 68Nén LZW
code key
0 a
1 b
2 ab
3 ba
5 abb
6 bab
Trang 69Nén LZW
code key
0 a
1 b
2 ab
3 ba
5 abb
6 bab
7 baa
Trang 70Nén LZW
code key
0 a
1 b
2 ab
3 ba
5 abb
6 bab
7 baa
8 abba
Trang 711 b
2 ab
3 ba
5 abb
6 bab
7 baa
8 abba
9
abbaa
Trang 721 b
2 ab
3 ba
5 abb
6 bab
7 baa
8 abba
9
abbaa
Trang 73Bảng mã
Pairs are (key, element) = (key,code).
Operations are : get(key) and put(key, code)
code
key
0 a
1 b
2 ab
3 ba
4 aba
5 abb
6 bab
7 baa
8 abba
9
abbaa
Trang 74• p = a followed by next text character (c) is entered
into the code table.
code key
0 a
1 b
Trang 75• lastP = a followed by first character of p is entered
into the code table.
code key
0 a
1 b
2 ab
Trang 76Giải nén LZW
• 2 represents ab.
• Decompressed text = abab
• pCode = 2 and p = ab.
• lastP = b followed by first character of p is entered
into the code table.
code key
0 a
1 b
2 ab
3 ba
Trang 77into the code table.
code key
0 a
1 b
2 ab
3 ba
4 aba
Trang 78into the code table.
code key
0 a
1 b
2 ab
3 ba
4 aba
5 abb
78
Trang 79into the code table.
code
key
0 a
1 b
2 ab
3 ba
4 aba
5 abb
6 bab
Trang 80Giải nén LZW
• 5 represents abb
• Decompressed text = abababbabaabb .
into the code table.
code
key
0 a
1 b
2 ab
3 ba
4 aba
5 abb
6 bab
7 baa
80
Trang 811 b
2 ab
3 ba
4 aba
5 abb
6 bab
7 baa
• When a code is not in the table, its key is
• So 8 represents abba .
8 abba
Trang 82Giải nén LZW
• 8 represents abba
• Decompressed text = abababbabaabbabbaabba .
entered into the code table.
code
key
0 a
1 b
2 ab
3 ba
4 aba
5 abb
6 bab
7 baa
8 abba
9
abbaa
82
Trang 83Pseudo code:
Input: ABABABA
while (input not exhausted)
a.Load Input Register IN with next
input value b.Append IN to string in PREFIX
c.If (PREFIX not in table T)
(i) Output INDEX
(ii) Insert PREFIX in table T
(iii) Set PREFIX = IN
d.Set INDEX = position of