7.1 Tổng quan về nén dữ liệu ảnh. 7.2 Các loại nén ảnh dữ liệu. 7.3 Phương pháp nén ảnh dữ liệu. 7.4 Phương pháp mã hóa nén thế hệ thứ 2. 7.5 Tổng kết các phương pháp nén.
Trang 1dư thừa không cần thiết ñể việc xử lý ñược nhanh hơn
Khái niện ảnh BMP (Bitmap)
Ảnh BMP sử dụng 3 bytes cho các pixel của ba màu R, G, B ðược mô tả
224=16.7 triệu màu Kích thước file = 3*chiềudài*chiều cao, sẽ rất lớn, chúng ta
có thể sử dụng ít hơn 8 bit cho một màu, nhưng chúng ta cần lưu với loại màu khác Có thể thực hiện tốt với kiểu ZIP, RAR, …
Hình 7.1 Ảnh BMP
Trang 2Chương 7: Nén Ảnh
Khái niện ảnh GIF (Graphics Interchange Format)
Ảnh GIF sử dụng 256 màu từ 24-bit màu trong không gian RGB, nếu ảnh chứa hơn 256 màu thì cần xử lý lại ñể giảm bớt số lượng màu ñi Một số ảnh ñơn giản như ảnh ñồ họa loại kết cấu, biểu tượng thì ít màu hơn ảnh phong cảnh Sử dụng nén ảnh có suy hao (LZW)
Hình 7.2 Ảnh GIF
Khái niện ảnh JPEG (Joint Photographic Experts Group)
ðây là loại ảnh thường dùng nhất Kiểu ảnh này có kích thước file giảm 10% so với ảnh BMP tùy theo chất lượng Không giống kiểu GIF, JPEG phù hợp cho ảnh cảnh quan hơn ảnh kết cấu hay ảnh biểu tượng
Trang 3Chương 7: Nén Ảnh
Hình 7.3 Ảnh JPEG
Dữ liệu nén (Data Compression):
Là dữ liệu ñược giảm lượng thông tin dư thừa trong ảnh gốc, còn gọi là mã hoá ảnh gốc
Trang 4Chương 7: Nén Ảnh
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 so với các dãy khác Các dãy ký tự cĩ tần suất cao được thay bởi một từ mã nhị phân với số bit nhỏ; ngược lại các dãy cĩ tần suất xuất hiện thấp sẽ được mã hĩa bởi từ
mã cĩ nhiều bit hơn ðây chính là bản chất của phương pháp mã hĩa từ hĩa Huffman
Các ký tự lặp lại:
Một ký hiệu (bit “0” hoặc “1”) lặp lại nhiều lần Cĩ thể thay dãy ký tự lặp bằng dãy mới cĩ 2 thành phần (số lần lặp và ký hiệu mã) ðây là đặc tính của mã hố loạt dài RLC (Run Length Coding)
Những mẫu sử dụng tần suất:
Cĩ thể mã hố các ký tự cĩ tần suất cao bằng từ mã nhị phân cĩ số bit nhỏ Cịn các ký tự cĩ tần suất thấp bằng từ mã cĩ số bit lớn hơn ðây là đặc tính của phương pháp mã hố Huffman, LZW (Lampel -Ziv-Welch), LZ77, LZ78
Dư thừa vị trí:
Các giá trị dữ liệu giống nhau xuất hiện ở các hàng khác nhau Cĩ thể thay thế bằng cách chỉ lưu trữ vị trí hàng và cột của cùng 1 giá trị Do đĩ cĩ thể dự đốn trước sự xuất hiện giá trị dữ liệu ở các vị trí khác
7.1.3 ðộ dư thừa
a Entropy của nguồn tin:
ðộ dư thừa các pixels do các pixel trên ảnh (hay nhiều ảnh liên tiếp) cĩ độ tương quan cao với nhau sẽ cĩ độ dư thừa giữa các pixels:
o ðộ dư thừa giữa các pixels trong 1 frame: là độ dư thừa khơng gian (spatial redundancy), dư thừa trong khung (intraframe redundancy)
o ðộ dư thừa giữa các pixels trong các frame liên tiếp: Dư thừa thời gian (temporal redundancy), hoặc độ dư thừa giữa các frame (interframe redundancy)
b ðộ dư thừa giữa các pixels (ảnh tĩnh)
Trang 5Chương 7: Nén Ảnh
ðối với ảnh tĩnh ñộ dư thừa giữa các pixel khi thực hiện cũng cần ñược quan tâm ñến, việc nén ảnh bằng cách loại bỏ dư thừa giữa các pixel trong ảnh tĩnh nhằm:
o Bỏ bớt các thông tin về màu so với thông tin chói (mắt người nhạy với thông tin chói hơn)
o Bỏ bớt các thành phần tần số không gian quá cao (nằm ngoài vùng nhìn thấy của mắt)
o Giảm ñộ phân giải không gian của ảnh Cắt bớt ảnh
o Bỏ bớt các thông tin ít quan trọng (số lượng màu biểu diễn ảnh (ảnh màu 24 bit có 16,7 triệu màu, ảnh màu 15 bit, ảnh màu 8 bit có 256 màu), ảnh ñen trắng, ảnh nhị phân): Giảm ñộ phân giải màu và chói
c ðộ dư thừa của ảnh ñộng
ðối với ảnh ñộng ñộ dư thừa gồm ñộ dư thừa không gian và thời gian, khi thực hiện cũng cần ñược quan tâm ñến, việc nén ảnh bằng cách loại bỏ dư thừa không gian trong ảnh ñộng nhằm:
o Bỏ bớt ñộ dư thừa không gian (spatial redundancy): Các pixels lân cận trong không gian có ñộ tương phản cao
o Bỏ bớt ñộ dư thừa thời gian (temporal redundancy): Các ảnh liên tiếp nhau
có ñộ tương quan cao
o ðộ dư thừa phổ (spectral redundancy): Các thành phần màu (biểu diễn từng pixel) có ñộ tương quan cao
o ðộ dư thừa thống kê (statistical redundancy) các ký hiệu (symbol) xuất hiện trong dòng bit với xác suất xuất hiện không ñồng ñều
o ðộ dư thừa tâm lý thị giác (psychovisual redundancy): Các thông tin không phù hợp với thị giác, giảm thành phần tần số không gian cao (giảm ñộ nét)
o Giảm ñộ phân giải không gian (giảm số lượng pixels trên ảnh, → giảm kích thước ảnh)
Trang 6Chương 7: Nén Ảnh
o Giảm bớt ñộ phân giải màu: Giảm số bit biểu diễn màu (giảm số thành phần màu biểu diễn 1 pixel,→ màu sắc kém trung thực)
d Nén sẽ tạo ra sái dạng nhân tạo (artifact)
Khi thực hiện nén thường sẽ tạo ra các sái dạng do thực hiện gọi là sái dạng nhân tạo như sau:
o Tạo hiệu ứng khối (các ô lưới vuông trên ảnh)
o Tạo ñường xiên răng cưa
o Tạo nhiễu
o Tạo lệch vị trí giáp nối các phần ảnh trong 1 ảnh (do có các chuyển ñộng nhanh của các ñối tượng)
e Nén video phụ thuộc vào nội dung
Có hai trường hợp nén video phụ thuộc vào nội dung:
o Nén video tốc ñộ bit thay ñổi nên chất lượng thay ñổi theo nội dung
o Nén video tốc ñộ bit không ñổi còn chất lượng không ñổi theo nội dung 7.1.4 Mục ñích của việc nén tính hiệu
Nén tín hiệu ảnh có hai mục ñích chính ñó là làm:
o Giảm dung lượng lưu trữ
o Giảm băng thông (bandwidth) truyền dẫn
7.1.5 Bản chất của việc nén tín hiệu
Thông tin của 1 tín hiệu gồm 2 phần:
o Phần lượng tin (entropy), hay ñộ bất ñịnh (uncertainty)
o Phần dư thừa (redundancy)
Phần entropy ñược chia thành 2 phần:
+ Thông tin không phù hợp (irrelevancy)
+ Thông tin cốt lõi của entropy
Trang 7các biến ngẫu nhiên X
hiệu A chứa 1 lượng h
Hai mô hình toán học
Hình 7.5 Sơ ñồ hệ thống nén ảnh học về nén dữ liệu
tín hiệu có bộ kí hiệu A = 1 quá trình ngẫu nhiên X = x1, x2, x3,… = xi ; i =1, 2,…), A = {aợng hữu hạn M ký hiệu
ọc cho nguồn tín hiệu
ng nhớ rời rạc (discrete memoryless source) rkov - K
Chương 7: Nén Ảnh
g ñến chữ, ñặc biệt khi tỉ
ần thông tin không phù
ẫu nhiên rời rạc (chuỗi = {a1, a2 ,…, aM}, bộ ký
Trang 9a ðịnh lý mã hoá không tổn hao (Shannon 1948)
o Tốc ñộ min Khi mã hoá không tổn hao (nén không tổn hao) của 1 nguồn không nhớ rời rạc X là:
+ H(X) - entropy của nguồn
mã hoá mỗi lần M ký hiệu)
o Trong mã hoá có tổn hao (nén có tổn hao), R tối thiểu có thể ñạt ñược là 1 hàm theo ñộ méo cho phép Quan hệ giữa R và méo ñược ñặc trưng bằng hàm tốc ñộ bit- ñộ méo:
b ðịnh lý mã hóa nguồn
Trang 107.3.1 Giới thiệu các phươ
a Dựa theo nguyên l
t ánh xạ từ các ký hiệu nguồn sao cho ñối vớ
ệu ñủ ñể khối phục lại nguồn với ∆ trung bì
ức nén
ng gian: tác ñộng trực tiếp lên việc lấy mẫu ảnh
ng mã biến ñổi: (transform coding) tác ñộng l
ẫu ảnh trong miền không
ộng lên sự biến ñổi ảnh
Trang 11dãy bit lặp gọi là
o Sau đĩ thay loạt b
(ký tự lặp)), do đĩ
hệ 2: Dựa vào mức bảo hồ tỉ lệ nén
Jain pháp điểm pháp dự đốn pháp dùng biến đổi pháp kết hợp (hybrid)
Trang 13Ví dụ 2:
23W 4B 6W 1B 2W 1
Hay ñơn giản lại: 23 4
Chiều dài mã chạy ñ
3 1 1
4 3 1
1 2 1 I
Ảnh: 24 pixels
o Biểu diễn giá trị
Hình 7.9 ðặc tuyến tỉ lệ nén
2W 1B 6W 4B 9W 1B 9W 1B 6W 4B 23W ại: 23 4 6 1 2 1 6 4 9 1 9 1 6 4 23
ạy ñơn giản: 15 ký tự
5 3 3 3
4 4 4 4
1 1 1 1
iá trị ảnh gốc:
Chương 7: Nén Ảnh
Trang 14mã cho các nút lá, mã hoá
o Mỗi lần xuống bên trái, ta thêm 1 bit “0” vào từ mã
o Mỗi lần xuống bên phải, ta thêm 1 bit “1” vào từ mã
→ Chỉ có giá trị mã là thay ñổi, còn tổng chiều dài thì không ñổi Ghi lại giá trị từ mã tính từ nút ñến các ký hiệu
(ββββ) Giải nén: thực hiện ngược lại khi nén
Trang 15Chương 7: Nén Ảnh
o Bảng mã khi nén ñược giữ lại cùng với dữ liệu nén trong cấu trúc ñầu
o Mã của ký tự là duy nhất, không có mã nào là bắt ñầu của mã khác (trong Huffman) Khi ñọc tập nén từng bit từ ñầu ñến cuối, có thể duyệt cây mã cho ñến 1 lá (tức là ký tự ñã ñược giải nén)
Ví dụ 1:
Mã nhị phân: Mỗi ký hiệu ñược mô tả bằng chuỗi nhị phân riêng
o Một tập dữ liệu có thể ñược mô tả theo 2 cách
Trang 16o Cây ñược biểu di
ải mã: Sử dụng từ mã trong bảng sau ñể mã h: abc = 0.101.100 = 0101100 (chỉ khoảng cáchã: 001011101 = 0.0.101.1101 = aabe
Trang 17ất hiện (xác suất): số lần các ký hiệu xuất hiện tcây và sau mỗi lần kết hợp hai giá trị ta lại sắptính từ trên xuống theo cột) ta ñược bảng
ừ mã cho cây Huffman theo như qui ñịnh: t
ng Các giá trị có tần suất xuất hiện nhiều sẽ c
Trang 18cây Huffman theo giá trị cho trước
Hình 7.12 Cây Huffman cho ví dụ 4 ằng cách ghi nhận giá trị trên các nhánh t
Chương 7: Nén Ảnh
ất 0,161; D có tần suất
hánh từ nút ñến từng ký
Trang 19Dùng cho các file nhị phân: (nén văn bản, ảnh ñen trắng, ảnh ña mức xám),
là chuẩn nén cho các dạng ảnh GIF, TIFF
Nguyên tắc:
Xây dựng 1 từ ñiển lưu các mẫu có tần suất cao trong ảnh (từ ñiển: tập hợp các cặp từ vựng và nghĩa; Từ vựng: các từ mã sắp xếp theo 1 trình tự; Nghĩa: chuỗi con trong dữ liệu ảnh)
Thuật toán:
Từ ñiển ñược xây dựng cùng ñồng thời với quá trình ñọc dữ liệu
o 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 1 ký tự vào
Bộ nhớ giới hạn ñến 4046 = 212 giá trị các từ mã (ñộ dài lớn nhất của từ mã
Trang 20Chương 7: Nén Ảnh
Hình 7.13 Cấu trúc của phương pháp mã hóa từ ñiển
Cách chèn mẫu không có trong từ ñiển
o Nếu chỉ có một mẫu không có trong từ ñiển thì chèn vào (0,Ký tự)
o Nếu có nhiều mẫu không có trong từ ñiển thì chèn vào (chỉ số cố ñịnh trong
từ ñiển, mẫu ký tự sau ñó)
o Nếu một ký tự vào hay mẫu ra cuối cùng có trong từ ñiển thì (chỉ số cố ñịnh trong từ ñiển, )
Trang 21Chương 7: Nén Ảnh
o Các bước chèn từ mã
1 A thì không có trong từ ñiển nên chèn vào
2 B thì không có trong từ ñiển nên chèn vào
BCA ñã có trong từ ñiển
BCAA thì không có trong từ ñiển nên chèn vào
7 B ñã có trong từ ñiển
BC ñã có trong từ ñiển
BCA ñã có trong từ ñiển
BCAA ñã có trong từ ñiển
BCAAB thì không có trong từ ñiển nên chèn vào
Ví dụ 2:
o Giải mã chuỗi (0, A) (0, B) (2, C) (3, A) (2, A) (4, A) (6, B)
Trang 22Chương 7: Nén Ảnh
o Chuỗi ñược giải nén là: ABBCBCABABCAABCAAB
d Mã hóa khối: (Block coding)
Nguyên tắc:
Dùng mã Huffman cho từng khối con (=gán cho mỗi từ khối bằng 1 từ mã nhị phân) Các từ mã gán cho khối kxl là “0” bằng các ñiểm trắng; các từ mã gán cho các khối kxl khác gồm kxl bit màu (“1” cho ñen, “0” cho trắng) ñi tiếp sau 1 bit tiền tố “1”
e Mã hóa phương pháp thích nghi: Mã hóa Huffman thích nghi (Adaptive Huffman Coding)
o Thuật ngữ “thích nghi” thường dùng ñể chỉ sự thích hợp của các từ mã theo một nghĩa nào ñó Như trong phương pháp RLC ở trên, thay vì dùng chiều dài từ mã cố ñịnh m bit, người ta dùng chiều dài biến ñổi và trên cơ sở ñó có phương pháp RLC thích hợp
o Mã ñoạn (khối kxl) tự ñộng thích nghi với tác ñộng cục bộ
o Mã ñoạn khối (kxl) tự ñộng thích nghi một chiều
Trang 23Chương 7: Nén Ảnh
o Mã khối (kxl) tự ñộng thích nghi 2 chiều
o Khi sử dụng phương pháp mã hóa Huffman sẽ không ñược nén tốt nếu ta không quan tâm ñến ñặc tính của ký hiệu trong các file nén
+ Vì thế sẽ làm tăng số bit mã hóa
+ Nếu thông tin này không thay ñổi khi nén thì nó yêu cầu thực thi 2 phần
Phần 1: Tìm tần suất của mỗi ký hiệu và cấu trúc trên cây Huffman
Phần 2: Nén file
o Ý tưởng chính là xây dựng cây Huffman tối ưu ñể phần tin thấy ñược rõ ràng
và dễ nhận ra nó khi cần thiết và ñồng thời ñể duy trì ñặc tính tối ưu của nó
o Mã hóa Huffman thích nghi ñược Faller (1973) và Gallager (1978) thực hiện ñầu tiên
o Knuth (1985) kết hợp và cải tiến thuật toán nên thuật toán có tên là thuật toán FGK
o Sau ñó (1987) một phiên bản mới của thuật toán thích nghi Huffman ñược
mô tả bởi Vitter nên ñược gọi là thuật toán V
o Một ñiểm vượt trội hơn của mã hóa Huffman thích nghi so với mã hóa Huffman cố ñịnh là ñôi khi một phần thông tin của phương pháp mã hóa Huffman thích nghi cố ñịnh có dữ liệu nén lớn hơn lúc chưa nén
o Như vậy chúng ta ñánh giá thế nào về việc giảm dư thừa tối thiểu của dữ liệu
và tính tối ưu của thuật toán Huffman cố ñịnh
ðặc tính của phương pháp
o ðặc tính cơ bản của thuật toán FGK là thuộc tính giống nhau (Gallager 1978)
o Một mã nhị phân cố ñịnh ñược chấp nhận là một mã Huffman nếu mã của cây có cùng thuộc tính
Trang 24Chương 7: Nén Ảnh
o Trong thuật toán FGK, cả mã hóa và giải mã luôn ñược duy trì ñể thay ñổi cây Mỗi ký hiệu mã hóa ñược gắn một từ mã cho ký hiệu ñó trên cây hiện tại và sau mỗi lần ta cập nhật lại cây ñó
o Vấn ñề là ñể thay ñổi cây tối ưu một cách nhanh chóng từ ký hiệu t sang ký hiệu t+1
o Nếu chúng ta ñơn giản ñộ lớn trọng số ký hiệu thứ t+1 của tất cả các ký hiệu ban ñầu, thì các ñặc tính giống nhau có thể không dài hơn Từ ñó chúng ta mới xây dựng cây
ðể giải quyết có thể mô tả quá trình này ta thực hiện qua hai giai ñoạn
o Giai ñoạn ñầu: Biến ñổi cây Huffman gốc thành cây Huffman khác phù hợp cho ký hiệu t, mà quá trình gia tăng một trọng số có thể áp dụng ñúng
o Giai ñoạn 2: Gia tăng trọng số, mô tả lại như giai ñoạn ñầu
Giai ñoạn ñầu tiên ñược bắt ñầu tại lá của ký hiệu thứ t+1 Chúng ta hoán ñổi nút này cho các nhánh con nhưng không thay ñổi số của nút, còn thành phần nút lớn nhất có trọng ñược giữ nguyên Nút mới hiện tại sẽ là nút cha của nút sau
ñó quá trình ñược lặp lại ñến khi hoàn chỉnh lại cây thì dừng
f Mã hóa phương pháp DCT: (Discrete Cosin Transform 1974, Ahmed)
Mã hóa dùng biến ñổi cosin rời rạc thường sử dụng trong nén ảnh JPEG Nguyên tắc chính của phương pháp mã hoá này là biến ñổi tập các giá trị pixel của ảnh trong miền không gian sang một tập các giá trị khác trong miền tần số sao cho các hệ số trong tập giá trị mới này có tương quan giữa các ñiểm ảnh gần nhau nhỏ hơn
( ) ( )cos
2
N k n
n k
X k x n
Trang 25ực hiện trên chuỗi vào x(n), mà thực hiện tr x(n))
ình 7.14 Khôi phục ảnh dùng biến ñổi DCT cần tính FCT là N = 2M
(7.11)
Trang 27Hình 7.15 Các bước của quá trình mã hóa biến ñổi DCT ñối với 1 khối
Chú ý rằng bản thân biến ñổi DCT không làm mất thông tin vì DCT là một biến ñổi tuyến tính chuyển các giá trị của ñiểm ảnh từ miền không gian thành các
hệ số trong miền tần số Nếu biến ñổi DCT thuận và nghịch ñược tính toán với ñộ chính xác tuyệt ñối và nếu các hệ số DCT không phải qua bước lượng tử và mã hoá thì ảnh thu ñược sau biến ñổi DCT ngược sẽ giống hệt ảnh gốc
a Lượng tử và giải lượng tử
Sau khi thực hiện biến ñổi DCT, 64 hệ số sẽ ñược lượng tử hoá dựa trên một bảng lượng tử gồm 64 phần tử Q(u,v) với 0≤u, v≤7 Bảng này ñược ñịnh
Trang 28Chương 7: Nén Ảnh
nghĩa bởi từng ứng dụng cụ thể Các phần tử trong bảng lượng tử có giá trị từ 1 ñến 255 ñược gọi là các bước nhảy cho các hệ số DCT Quá trình lượng tử ñược coi như là việc chia các hệ số DCT cho bước nhảy lượng tử tương ứng, kết quả này sau ñó sẽ ñược làm tròn xuống số nguyên gần nhất Công thức (3) thể hiện việc lượng tử với F(u,v) là các hệ số DCT, FQ(u,v) là các hệ số sau lượng tử, các
hệ số này sẽ ñược ñưa vào bộ mã hoá Entropy
(, ) = !"#"$%&' ((,*))(,*)+ (7.16) Mục ñích của việc lượng tử hoá là giảm số lượng bit cần ñể lưu trữ các hệ
số biến ñổi bằng việc giảm ñộ chính xác của các hệ số này cho nên lượng tử là quá trình xử lý có mất thông tin
Quá trình giải lượng tử ở phía bộ giải mã ñược thực hiện ngược lại Các hệ
số sau bộ giải mã entropy sẽ nhân với các bước nhảy trong bảng lượng tử (bảng lượng tử ñược ñặt trong phần header của ảnh JPEG) Kết quả này sau ñó sẽ ñược ñưa vào biến ñổi DCT ngược
hệ số có tần suất cao ñược gán cho một từ mã ngắn, các hệ số có tần suất thấp ñược gán một từ mã dài Với cách thức này chiều dài trung bình của từ mã ñã giảm xuống
Các hệ số thu ñược sau khi lượng tử hoá sẽ ñược sắp xếp thành một chuỗi các ký hiệu theo kiểu “zig-zag” (theo ñường zig-zag trong bảng 1) ñể ñặt các hệ
số có tần số thấp lên trước các hệ số tần số cao Các hệ số này sẽ ñược mã hoá dựa trên bảng mã Huffman sao cho chiều dài trung bình của từ mã là nhỏ nhất