Các phương pháp mã hóa không mất mát thông tin – Lossless Compression Ngoài ra ta còn có mã Huffman mở rộng Extended Huffman và mã Huffman thích nghi Adaptive Huffman 3.Mã hóa dựa trên
Trang 1CHƯƠNG III NÉN ẢNH, VIDEO, AUDIO ĐỒNG BỘ DỮ LIỆU ĐA PHƯƠNG TIỆN
Trang 2Vấn đề nén dữ liệu đa phương tiện
Yêu cầu dung lượng thông tin cần lưu trữ và truyền:
+ Một trang văn bản (text): 2Kbytes
+ Một ảnh màu (800 x 600 x 24bits): 1.4Mbytes
+ 30 phút âm thanh thoại số (8 kHz, 8 bits): 14Mbytes
+ 30 phút Audio CD (44.1kHz, 16bits, stereo): 432Mbytes
+ 30 phút audio (48kHz, 20bits, stereo): 432Mbytes
+ 30 phút video (800x600x24bits, 25 ảnh/s): 64.8 Gbytes
+ Tốc độ dòng video (800x600x24bits, 25 ảnh/s): 275Mbits/s
Trang 3- Tỷ số bit/pixel đối với ảnh:
Nb = Số bit sau khi nén/Tổng số điểm ảnh (bpp)
- Tỷ số nén tốc độ dòng bit video
Chất lượng nén:
- Nén không mất mát thông tin (lossless)
- Nén có mất mát thông tin (lossy)
Trang 5Nén ảnh tĩnh
Nén dữ liệu ảnh: Biến đổi dòng thông tin thành từ mã nhằm giảm độ dư thừa thông tin theo không gian và thời gian
- Các độ dư thừa thông tin: Dư thừa thông tin về không gian, về thời gian, độ dư thừa về phổ và dư thừa do độ cảm nhận
Phân loại ảnh theo thời gian:
- Ảnh tĩnh: là ảnh tự nhiên thu nhận (chụp), ảnh đồ họa (vẽ), có dư thừa không gian và dư thừa về cảm thụ
- Ảnh động: ảnh video, ảnh động chuyên dụng, hoạt hình, ảnh động biến thiên theo thời gian, có cả 4 loại
dư thừa
Trang 6Khái quát về phương pháp nén ảnh tĩnh
Phân loại phương pháp nén ảnh:
+ Nén không mất mát thông tin: các phương pháp
Trang 7Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
1.Mã loạt dài (Run length Encoding -RLE):
2.Dùng số đếm để thay thế các điểm giống nhau lặp lại Ý tưởng của phương pháp nén này như sau:
RLE thay thế các chuỗi ký tự lặp lại nhiều lần bằng một chuỗi ngắn hơn Chuỗi ký tự được gọi là
run và thường được mã hóa (encoded) thành 2 bytes: byte đầu tiên biểu diễn số lượng các ký tự trong run và được gọi là run count
Trang 8Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Run count có thể chạy từ 1 đến 128 hoặc 256, thông thường run count = số lượng ký tự - 1
+ Byte thứ hai là ký tự trong run (từ 0 đến 255) và được gọi là run value
+ Ví dụ: Nếu không nén ta cần 15 bytes để biểu diễn chuỗi AAAAAAAAAAAAAAA (15 ký tự A), nếu sử dụng RLE ta sẽ có kết quả 15A, do đó chỉ cần 2 bytes để biểu diễn
15A được gọi là RLE packet
Một vài biến thể (variants) của RLE:
Trang 9Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Trang 10Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Trang 11Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
2 Mã hóa độ dài thay đổi (Variable-Length Coding –VLC):
Dùng các cụm bit có độ dài thay đổi để mã hóa, bao gồm mã Shannon-Fano và mã Huffman
a, Mã Shannon-Fano
+ Ý tưởng của mã Shannon-Fano:
1 Sắp xếp các ký hiệu theo tần suất xuất hiện
2 Lặp lại việc chia các ký hiệu thành 2 phần, mỗi một phần bằng số lần xuất hiện (xác suất xuất hiện) của ký hiệu đó, cho đến khi mỗi một phần chỉ còn lại một ký hiệu
Trang 12Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Ví dụ: Mã hóa từ “HELLO”
Trang 13Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Cây mã hóa của từ “HELLO” bằng mã Shannon-Fano
Trang 14Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Kết quả của mã hóa từ “HELLO” bằng mã Shannon-Fano
Trang 15Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Một cây mã hóa khác của từ “HELLO” bằng mã
Shannon-Fano
Trang 16Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Kết quả
Trang 17Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
b, Mã Huffman:
+ Ý tưởng của mã Huffman:
1 tạo một danh sách (list) gồm các ký tự đã được sắp xếp theo thứ tự giảm dần của tần suất xuất hiện.
2 Lặp lại cho đến khi danh sách chỉ còn lại một ký tự: (1) Từ danh sách đã sắp xếp lấy ra 2 ký tự có xác suất nhỏ nhất để tạo thành một cây Huffman con (subtree), cây này gồm 2 node là 2 ký tự vừa được lấy ra và tạo ra một node cha (parent node)
Trang 18Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
(2) Gán tổng xác suất của hai node con cho node cha và chèn node cha này vào danh sách sao cho không làm thay đổi thứ tự đã sắp xếp trong danh sách
(3) Xóa 2 node con khỏi danh sách
3 Gán một từ mã (codeword) cho mỗi nút lá dự trên đường đi từ gốc
Ví dụ mã hóa từ “HELLO” sử dụng mã Huffman:
Trang 19Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Cây mã hóa từ “HELLO” sử dụng mã Huffman
Trang 20Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
+ Trong sơ đồ trên các ký hiệu P1, P2, P3 được tạo
ra và được gọi là các node cha (parent node) và danh sách sẽ bao gồm:
Sau khi sắp xếp: LHEO
Sau lần lặp thứ nhất: LP1H
Sau lần lặp thứ 2: LP2
Sau lần lặp thứ 3: P3
Trang 21Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Các thuộc tính của mã Huffman:
1 Thuộc tính tiền tố (prefix) duy nhất: Không một mã
Huffman nào lại là tiền tố của một mã Huffman khác ngăn không cho giải mã “nhập nhằng”
2 Tối ưu hóa: Mã hóa dư thừa tối thiểu, đó là:
- Hai ký hiệu xuất hiện ít nhất sẽ có độ dài từ mã là như
nhau chỉ khác nhau ở bit cuối cùng
- Các ký hiệu xuất hiện nhiều hơn sẽ có độ dài mã
Huffman ngắn hơn so với các ký hiệu xuất hiện ít hơn
- Độ dài trung bình của các từ mã nhỏ hơn đó là
Trang 22Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Ngoài ra ta còn có mã Huffman mở rộng (Extended Huffman) và mã Huffman thích nghi (Adaptive Huffman)
3.Mã hóa dựa trên từ điển – Dictionary-based Coding
Phổ biến nhất là mã Lemple-Ziv, ý tưởng của phương pháp này là:
+ Sử dụng các từ mã có độ dài cố định để biểu diễn các các chuỗi có độ dài thay đổi
Trang 23Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
+ LZW encoder và LZW decoder cùng xây dựng nên một từ điển động (dictionary) khi nhận được
dữ liệu
+ LZW đặt các đầu vào (entries) dài hơn, lặp lại nhiều lần vào trong từ điển và sinh ra mã cho mỗi phần tử nếu như phần tử này đã có trong từ điển
Trang 24Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Giải thuật LZW để nén dữ liệu
Trang 25Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Ví dụ: Sử dụng LZW để nén xâu “ABABBABCABABBA” + Bắt đầu bằng một từ điển đơn giản được gọi là “string table”, ban đầu từ điển này chỉ gồm 3 ký tự với các mã như sau:
Giải thuật LZW thực hiện như sau:
Trang 26Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Trang 27Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
: + Bảng các mã sẽ là 1 2 4 5 2 3 4 6 1 Thay vì phải gửi đi xâu “ABABBABCABABBA” (14 ký tự) ta chỉ phải gửi đi 9 ký tự, do đó tỷ lệ nén là 14/9=1.56
Giải thuật LZW để giải nén như sau
Trang 28Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Ví dụ: Giải nén mã 1 2 4 5 2 3 4 6 1
Trang 29Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
4 Mã dự đoán (Prediction Coding)
Các cách tiếp cận của mã hóa vi sai các ảnh (differential coding)
Cho một ảnh gốc I(x,y), sử dụng một phép tính vi
phân đơn giản ta có thể định nghĩa một ảnh vi
sai d(x,y) như sau:
d(x,y)= I(x,y) – I(x-1,y)
Hoặc sử dụng một phép tính vi phân Laplician ta
có thể định nghĩa một ảnh sai phân như sau
Trang 30Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Do có sự dư thừa về không gian trong ảnh I nên ảnh vi sai d sẽ có một biểu đồ tần xuất hẹp hơn
và do đó sẽ có một entropy nhỏ hơn
Được sử dụng trong phương pháp nén ảnh
Ví dụ sau sẽ minh họa việc sử dụng các phép tính vi phân để tạo ra một ảnh sai phân từ ảnh ban đầu:
Trang 31Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Trang 32Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Lossless JPEG là một trường hợp đặc biệt của phương pháp nén ảnh JPEG
Phương pháp dự đoán:
1 tạo ra một dự đoán vi sai: Một bộ dự đoán sẽ kết hợp giá trị từ 1 đến 3 pixels ở cạnh như là các giá trị đã được đoán trước cho pixel hiện tại (điểm X) được minh họa như sau:
Trang 33Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Bộ dự đoán có thể sử dụng 1 trong 7 kiểu sau đây:
Trang 34Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Trang 35Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
2 Mã hóa: Bộ mã hóa sẽ so sánh giá trị của dự đoán (prediction) với giá trị thực sự của điểm X
và mã hóa sự vi sai bằng cách sử dụng một trong các kỹ thuật nén không mất mát thông tin (chẳng hạn như Huffman)
Lưu ý: các giá trị A, B,C đã được giải mã trước bên phía giải mã của một chu trình mã hóa-giải
mã khi được sử dụng bởi bộ dự đoán
Trang 36Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Ảnh của Lena Söderberg được sử dụng trong
nhiều thí nghiệm về xử lý ảnh
Trang 37Các phương pháp mã hóa không mất mát thông tin – Lossless Compression
Bảng so sánh tỷ lệ nén giữa các phương pháp nén không
mất mát thông tin
Trang 38Các phương pháp mã hóa mất mát thông tin – Lossy Compression
Các phương pháp nén không mất mát thông tin
không có được một tỷ lệ nén cao cần thiết, do
đó hầu hết các giải thuật nén ĐPT là nén có mất mát thông tin (lossy)
1 Khái niệm nén có mất mát thông tin:
- Dữ liệu được nén không giống với dữ liệu
gốc nhưng gần giống dữ liệu gốc
- Có tỷ lệ nén cao hơn nhiều so với các
phương pháp nén không mất mát thông tin
Trang 392 Đánh giá sự biến dạng của dữ liệu sau khi nén:
Có 3 đại lượng dùng đánh giá sự biến dạng của dữ liệu
trong nén ảnh
a, Bình phương trung bình sai số (Sai số quân phương) –
Mean Square Error-MSE
Trong đó: + xn là dãy dữ liệu vào
+ yn là dãy dữ liệu được xây dựng từ xn
+ N số lượng dữ liệu
Trang 40b, Tỷ lệ giữa tín hiệu và tạp nhiễu – Signal to Noise Ratio – NRS (dB):
Trong đó: là trung bình bình phương cửa dãy
dữ liệu ban đầu và là MSE
C, Đỉnh của tỷ lệ giữa tín hiệu và tạp nhiễu –Peak Signal to Noise Ratio – PNRS (dB):
Trang 413 Lượng hóa – Quantization
Giảm bớt các giá trị đầu ra sai khác
Có 3 phương pháp để lượng hóa:
+ Uniform: Bao gồm midrise quantizer và midtreat quantizer
+ Nonuniform: companded quantizer
+ Vector Quantization
Trang 42Lượng tử hóa vô hướng giống nhau – Uniform Scalar Quantization:
+ Phân chia vùng dữ liệu vào (input) thành các khoảng đều nhau, ngoại trừ hai khoảng or hai biên
+ Giá trị của dữ liệu ra (output) được lấy tại điểm giữa của mỗi khoảng
+ Độ dài của mỗi khoảng được gọi là step size và được ký hiệu là
Trang 43+ Midrise quantizer có một số lẻ các mức ra (output levels)
+ Midtreat quantizer có một số chẵn các mức ra bao gồm cả số 0 như là một mức ra
Trong trường hợp =1 ta có thể tính được các giá trị ra như sau:
Trang 44Uniform Scalar Quantizers: (a) Midrise (b) Midtreat
Trang 45Lượng tử hóa vô hướng khác nhau – Nonuniform Quantization
Phân chia vùng dữ liệu vào (input) thành các khoảng không đều nhau Các khoảng cách có thể được lựa chọn để tối ưu hóa SNR cho một kiểu cụ thể của tín hiệu
Một trong số các phương pháp lượng tử hóa của Nonuniform Quantization là Companded Quantization
Trang 46 Companded Quantization là kết hợp của hai bước: Compressed (bên phía gửi) và Expanded (bên phía nhận)
+ Compressed sẽ làm cho tín hiệu đầu vào có phân phối đều (uniform distribution) do đó có thể
sử dụng uniform quantization
+ Bên nhận khi nhận được tín hiệu (compressed)
sẽ tiến hành giải nén dữ liệu (expanded)
Trang 47Lượng tử hóa vector – Vector Quantization
Các hệ thống nén dữ liệu sẽ làm việc tốt hơn nếu nó hoạt động trên các vector hoặc các nhóm của các mẫu hơn là làm việc với các ký hiệu hay các mẫu riêng lẻ
Các vector được thành lập bằng cách đặt các mẫu đầu vào liên tiếp vào trong một vector
Trong Vector Quantization các vector mã (code vector) với n thành phần được sử dụng, các các vector mã này sẽ tạo thành một codebook
Trang 48Thủ tục lượng tử hóa vector cơ bản
Trang 49Mã hóa biến đổi – Transform
Nếu Y là kết quả của một pháp biến đổi tuyến tính T của một vector đầu vào X sao cho các thành phần của Y ít tương quan đến nhau khi đó
Y có thể được mã hóa hiệu quả hơn X
Nếu hầu hết các thông tin được mô tả một cách chính xác bởi một vài thành phần đầu tiên của một vector đã được biến đổi thì các thành phần còn lại có thể được lượng tử hóa thô hoặc được đặt bằng 0 với một chút biến dạng về tín hiệu
Trang 50Mã hóa biến đổi – Transform
Trong mã hóa biến đổi phép biến đổi Cosine rời rạc –Discrete Cosine Transform (DTC) và phép biến đổi Wavelet rời rạc là các phép biến đổi quan trọng được áp ựng nhiều trong nén ảnh (tĩnh và động)
Tần số không gian (Spatial Frequency) và DTC
Tần số không gian sẽ chỉ ra số lần giá trị của pixel thay đổi qua một block ảnh
DTC chỉ ra các nội dung của bức ảnh thay đổi bao nhiêu tương ứng với số vòng của một sóng hình cosine trên một khối ảnh
Trang 51Mã hóa biến đổi – Transform
Vai trò của DTC là phân ly tín hiệu ban đầu thành các thành phần DC và AC của nó Vai trò của IDTC là tái tạo lại tín hiệu (reconstruct)
Định nghĩa DTC:cho một hàm vào f(i,j) i,j là các
số nguyên nhận giá trị trên một phần của ảnh,
phép biến đổi 2D DTC sẽ biến đổi f vào một hàm
F(u,v) mới với u,v có cùng miền giá trị như i,j
Phép biến đổi được định nghĩa như sau
Trang 52Mã hóa biến đổi – Transform
Trong đó:
Các hằng số C(u), C(v) được định nghĩa như sau:
2D Discrete Cosine Transform (2D DTC) được định nghĩa như sau:
+Trong đó i, j, u, v =0,1, ,7, C(u), C(v) được định
nghĩa như trên
Trang 53Mã hóa biến đổi – Transform
2D Inverse Discrete Cosine Transform (2D IDTC) được định nghĩa như sau:
Trong đó i, j, u, v =0,1, ,7
DTC là phép biến đổi tuyến tính (linear) Một phép biến đổi T được gọi là tuyến tính nếu và chỉ nếu
T(αp+ßq)= αT(p)+ßT(q) Trong đó α, ß là các hằng số, p,q là các biến
Trang 54Mã hóa biến đổi – Transform
Trang 55Wavelet Transform
Mục tiêu của phép biến đổi Wavelet là phân rã tín hiệu vào thành các thành phần có thể xử lý được các thành phần này có thể biểu diễn cụ thể hay các thành phần có thể loại bỏ được để đạt được hiệu quả trong quá trình nén dữ liệu
Với những thành phần này chúng ta có thể tái tạo lại tín hiệu ban đầu (xấp xỉ)
Trang 56Nén ảnh tĩnh theo chuẩn JPEG
Chuẩn JPEG: Joint Photographic Experts Group
Là phương pháp nén có mất mát thông tin (lossy) Trình tự công nghệ nén ảnh JPEG: Phép biến đổi
cosine rời rạc (DCT) Sắp xếp zigzag Lượng tử hóaMã hóa dữ liệu
Phương thức thực hiện mã hóa:
- Mã hóa tuần tự (Sequential DTC)
- Mã hóa lũy tiến (Progressive DTC)
- Mã hóa không mất mát thông tin (Sequential lossless
- Mã hóa phân cấp (Hierarchical progressive)
Trang 57Nén ảnh tĩnh theo chuẩn JPEG
Các bước trong nén ảnh JPEG:
1 Biến đổi từ bộ màu RGB thành bộ màu YUV
2 Thực hiện biến đổi DCT trên các khối ảnh
3 Lượng tử hóa
4 Sắp xếp zigzag và thực hiện mã hóa RLE
5 Mã hóa entropy