Nén ảnh là một kỹ thuật mã hoá hiệu suất cao ảnh số nhằm làm giảm số bit cần cho biểu diễn ảnh. Chức năng của kỹ thuật này là giảm độ lớn dữ liệu phải lưu trữ cùng với thời gian truyền trong khi vẫn giữ nguyên chất lượng của ảnh. Để đánh giá sự cần thiết của nén ảnh, chúng ta xem xét về yêu cầu bộ nhớ và thời gian truyền khi dùng một modem 9600 baud (bits) cho các ảnh sau đây:
Trang 1II.Nén ảnh theo chuẩn JPEG:
2.1 Biến đổi Cosin rời rạc:
Trang 21.1.1 Sự cần thiết phải nén dữ liệu ảnh:
Nén ảnh là một kỹ thuật mã hoá hiệu suất cao ảnh số nhằm làm giảm
số bit cần cho biểu diễn ảnh Chức năng của kỹ thuật này là giảm độ lớndữ liệu phải lu trữ cùng với thời gian truyền trong khi vẫn giữ nguyênchất lợng của ảnh Để đánh giá sự cần thiết của nén ảnh, chúng ta xemxét về yêu cầu bộ nhớ và thời gian truyền khi dùng một modem 9600baud (bit/s) cho các ảnh sau đây:
Trang 3■ Một ảnh 512 ì 512 điểm, 8 bit cho một điểm, ảnh mức xám yêu cầu2,097,152 bit cho lu giữ và mất 3.64 phút để truyền.
■ Một ảnh màu RGB có cùng các bớc xử lý nh trờng hợp trên yêu cầuxấp xỉ 6 triệu bít cho lu trữ và mất gần 11 phút để truyền
■ Một phim âm bản có kích thớc 24 ì 36 mm (35 mm) chia bằng cáckhoảng cách nhau 12 àm, vào khoảng 3000 ì 2000 điểm, 8 bit cho một
điểm, yêu cầu 48 triệu bit cho lu giữ ảnh và 83 phút để truyền Một phim
âm bản màu sẽ yêu cầu một số lớn gấp ba lần cho lu giữ và truyền
Rõ ràng, việc truyền và lu giữ các ảnh sẽ có nhiều vấn đề Có rất nhiều
ví dụ khác mà sẽ dễ dàng làm sáng tỏ vai trò của nén ảnh, và rất có nhiềunghiên cứu tập trung vào lĩnh vực này Fax, một tài liệu đồ hoạ đợctruyền qua đờng dây điện thoại, nén dữ liệu ảnh y học, truyền hình làmột vài trong số nhiều ứng dụng tiềm tàng của nén ảnh Sự phát triển của
kỹ thuật vi điện tử và sự phát triển của rất nhiều ứng dụng thơng mại dẫndắt sự phát triển cho các tiêu chuẩn và phần cứng của bộ nén ảnh theothời gian thực
Trang 4Các tham số chất lợng nén ảnh
*Tỷ số nén :
-Tỷ số: CR=-Tỷ số bít:
-Tốc độ dòng bít(đối với ảnh động):bit/s
-Mã Lemple-Ziv:Dựa trên việc xây dựng và tra từ điển
-Mã dự đoán (prediction): Dựa trên quá trình tạo điểm tuần tự vàluật dự đoán
1.3.2.Nén ảnh tĩnh dựa trên phép biến đổi ảnh
-Phép biến đổi Cosin rời rạc (DCT):biểu diễn các giá trị điểm ảnhtrên miền tần số, tập trung năng lợng vào một số hệ số, DCT cho phép ápdụng trong các chuẩn JPEG va MPEG
-Phép biến đổi Wavelet rời rạc (DWT):Sử dụng các bộ lọc thônggiải xử lý đa phân giải trong phép DWt
Trang 5- Phép biến đổi dựa trên hình học Fractal (Phép biến đổi Fractal):
Sử dụng các phép biến đổi hình học
1.3.Kĩ thuật nén ảnh JPEG :
1.3.1.Chuẩn JPEG :
Trong chuẩn JPEG ảnh đợc nén nh sau:
1 Khối điểm kích thớc 8 ì 8 của DCT trên ảnh nguyên gốc đợc tính
2 Hệ số chuyển đổi đợc tiêu chuẩn hoá bằng cách áp dụng mộtmảng do ngời sử dụng định nghĩa nó đợc định trớc cho tất cả cáckhối
3 Hệ số DC đợc mã hóa với lợc đồ DPCM
4 Mỗi khối đợc sắp xếp lại sử dụng mã zigzag (xem hình 13.21)
Điều này là theo RLC và lợc đồ mã Huffman
Để nén một ảnh màu, JPEG đề xuất rằng mỗi thành phần đợc mã hoámột cách độc lập với nhau
1.2.1.1 Biến đổi Cosin rời rạc:
Trang 746 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a
73 74 75
76 77 78 79 7a 83 84 85 86 87 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3
a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9
ca d2 d3 d4 d5 d6 d7 d8 d9 da e1 e2 e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4
xx xx
xx xx xx xx xx xx xx xx xx xx xx xx ff d9
II.Nén ảnh theo chuẩn JPEG:
2.1 Biến đổi Cosin rời rạc:
Biến đổi cosin
Biến đổi một chiều cosin rời rạc (DCT-Discrete Cosin Transform) chobởi
2 )
x N k
Trang 8Có rất nhiều bớc (các thao tác bớm, dịch chuyển bít, và cộng truy hồi)bây giờ có thể nằm trong một bớc trong hình 13.10 Từ sơ đồ này, chơngtrình FCT có thể phát triển Chơng trình này dùng các thuật toán pháttriển cho FFT Chơng trình dùng một bảng tra cứu để chứa các giá trịcosin, một bảng cho dịch chuyển bit Chi tiết của chơng trình này để lạicho ngời dùng nh một bài tập.
Thuật toán cho 2-D FCT có thể phát triển dùng phơng pháp hàng-cộtbình thờng nh thuật toán 2-D FFT Chơng trình 13.5 rút ra biến đổi FCTcủa các khối ngời dùng tự xác định kích thớc, thông thờng là 8 ì 8 hoặc
là 16 ì 16, bằng các chia nhỏ các khối của ảnh
ảnh đợc giả sử là có chiều dài bằng chiều rộng với cac chiều là bội của
2 Chơng trình sử dụng thuật toán 1-D FCT và tận dụng các bảng tra cứu(LUT) nh các trạng thái trớc
Hình 13.10 Biểu đồ chuyển đổi cosin nhanh.
Biến đổi ngợc DCT đợc cho bỏi
X n
-1 -1 -1
-1
-1 -1
-1 -1 -1
-1
-1 -1 -1 -1
2C
9 16
2C
Trang 9= k cho 1
0
= k cho 2
1
k
ε
Thay vì lập lại cả một chơng trình để tính biến đổi ngợc FCT, chúng ta
sẽ dùng lu đồ của FCT tiến (forward) Để rút ra FCT ngợc, tất cả các việc
mà chúng ta cần làm là đảo ngợc biểu đồ ở hình 13.10 Hình 13.11 giớithiệu phép biến đổi ngợc của một bớm Kết quả của thuật toán biến đổingợc của lu đồ FCT cho trong hình 13.12 Từ lu đồ của hình 13.11 biến
đổi ngợc của FCT có thể phát triển bình thờng từ FCT tiến Chơng trìnhtính 2-D FCT ngợc cho trong chơng trình 13.6 Giá trị của khối ảnh gốcphải đợc cho trớc bởi ngời dùng
Hình 13.11 Phép đổi ngợc của một bớm.
9
1/2CX
0.5 A
B
C
-1 A=C+D
-1 -1
-1 -1
1
C
4 2
(1) x~
(2) x~
(3) x~
(4) x~
Trang 10Hình 13.12 Biểu đồ đảo ngợc giải thuật FCT.
Tiếp theo tôi sẽ giới thiệu một chơng trình mà sẽ hiển thị các khối 8 ì
8 của kết quả đã chuyển đổi trên màn hình văn bản Chú ý rằng giá trị sẽgiảm xuống một cách nhanh chóng kể từ góc trái của màn hình, hay là
điểm tần số (0,0) Để thoát khỏi chơng trình này, bấm ESC
Chơng trình 13.7 "DISPFCT.C" Chơng trình hiển thị khối 2-D FCT.
Một mẫu của 2-D FCT từ một khối rút ra từ ảnh IKRAM.IMG giớithiệu trong hình 13.13 Các thành phần một chiều (các khối có tần số0,0) có giá trị lớn nhất Thành phần này biểu diễn giá trị trung bình củakhối Các thành phần khác (đợc hiểu là các thành phần xoay chiều) phải
có các giá trị nhỏ hơn
2.2 Sắp xếp Zigzag:
Trang 11cho đến giá trị lớn nhất yu, thì hàm lợng tử hoá sẽ chia tín hiệu ra thành
N miền và gán cho mỗi miền một giá trị nhị phân nh trong hình 13.14.
Sự biểu diễn này không có ý nghĩa gì về mặt vật lý, và chức năng của sựbiểu diễn này, nh chúng ta muốn, chỉ dùng trong lĩnh vực xử lý tín hiệu
số Tất cả các tín hiệu số này gọi là điều mã xung (Pulse Code Modulated
- PCM) Để có thể thực sự thấy giá trị các mức xám chúng ta cần l ợng tửhoá ngợc Trong bớc này, các giá trị nhị phân biểu diễn một độ chói cụthể Các bớc thực sự của quá trình này biểu diễn trong hình 13.15 Tronglĩnh vực tơng tự và lĩnh vực số quá trình này gọi là chuyển đổi từ tơng tự
sang số (A/D) và chuyển đổi từ số sang tơng tự (D/A).
Trong các ứng dụng nh trờng hợp biến đổi cosin 2-D thì có một chútkhác biệt Cái mà chúng ta cần làm trong trờng hợp này là biến đổi từmột tập hợp các dấu phẩy động sang một tập hợp các bít nhị phân và ng-
Trang 12nên quá trình này không thể tiến hành một cách thông thờng đợc Maymắn thay, có một số phơng pháp để lợng tử hoá và lợng tử hoá ngợc.Chúng ta sẽ nghiên cứu các phơng pháp này ở phần dới đây
3
d2d
1
d0
N-1 N-2 4
3 2 1 0
11111111 11111110 00000100 00000011 00000010 00000001 00000000
Trang 13hình 13.14) Các giá trị từ d0 đến dN đợc gọi là các mức chia Các mức ợng tử biểu diễn giá trị thực của các mức chia trong khoảng từ di đến di+1
l-dới dạng số nhị phân bằng i
Vì vậy, nếu nh di+1 < y ≤ d i thì giá trị của lợng tử đầu ra = i
Mức lợng tử đầu ra có thể biểu diễn theo công thức:
y y i
L v L
ở đây dấu có nghĩa là làm tròn thành số nguyên gần nhất
Lợng tử hoá ngợc dùng một bảng biến đổi ngợc giữa giá trị lợng tử i
và biến đổi ngợc của nó ri
2
1 + +
= i i
i d d r
Tuy nhiên lợng tử hoá đồng đều không quan tâm đến khả năng xảy racủa sự kiện với các giá trị đợc đa ra Tổng quát, quá trình lợng tử hoá này
áp dụng cho trờng hợp tất cả các mức có khả năng xuất hiện bằng nhau
Điều này, trong hầu hết các trờng hợp là không đúng Dễ nhận thấy làcác mức lợng tử hoá tập trung nhiều nhất vào miền mà khả năng xuấthiện của các mức xám nhiều nhất Điều này dẫn chúng ta đến phơngpháp thiết kế lợng tử hoá dới đây
số sang
t ơng tự.
Bộ lọc thông thấp.
Trang 14Hình 13.15 Lợng tử hoá ngợc.
Lợng tử hoá không đồng đều
Trong phần này chúng ta sẽ xem xét phơng pháp lợng tử hoá không
đồng đều tối u nhất trong hệ thống PCM Các nghiên cứu cho phơngpháp này đã đợc Panter và Dite đa ra trong một cuốn sách xuất bản vàonăm 1949 Trong cuốn sách này họ đã đa giải thuật cho lợng tử hoákhông đồng đều Họ đa ra một phơng pháp xấp xỉ tối u cho lợng tử hoákhông đồng đều Giải thuật này sẽ không đúng cho các trờng hợp quátrình lợng tử hoá có quá ít mức chia Tuy nhiên các giải thuật này đợcphát triển một các trọn vẹn trong một báo cáo cha đợc xuất bản củaLloyd vào năm 1957 và đợc Max kiểm nghiệm vào năm 1960 Một ph-
ơng pháp lợng tử hoá kết hợp cả hai phơng pháp của Lloyd và Max thờng
đợc gọi là phơng pháp lợng tử hoá Lloyd-Max Trong phần báo cáo xuấtbản sau đó của Lloyd xuất bản vào năm 1982 đã cho thấy có rất nhiềuứng dụng rất thú vị của phơng pháp này Bản báo cáo này có hai phơngpháp thiết kế, một phơng pháp trong đó giống phơng pháp của Max Ph-
ơng pháp này gọi là phơng pháp II Phơng pháp I tỏ ra có nhiều ứngdụng và dễ tính toán hơn phơng pháp II Cả hai phơng pháp thiết kế này
đều đợc trình bày ở phần dới đây
Nếu chúng ta coi rằng các mức lợng tử hoá đợc cho bởi
d i , i = 0 N(xem hình 13.16) và các mức khôi phục cho bởi
r i , i = 0 N
Trang 15vµ gi¸ trÞ ®o cña tÊt c¶ c¸c møc nµy cho bëi:
k
k
k
dy y p r y E
0
2
1
) ( )
ë ®©y y lµ tÝn hiÖu ®Çu vµo cßn p(y) lµ kh¶ n¨ng xuÊt hiÖn cña y
H×nh 13.16 C¸c møc lÊy mÉu vµ kh«i phôc.
i ri
r0 N-1 rN-1LUT cho l îng
tö ho¸ ng îc.
Trang 16Hình 13.17 Các xử lý lấy mẫu và khôi phục.
Hình 13.17 cung cấp sơ đồ khối của quá trình lợng tử hoá và lợng tửhoá ngợc Tín hiệu vào y(t) phải đợc coi là đã biết khả năng xuất hiện.Vấn đề đặt ra là phải xác định các mức lấy mẫu và các mức khôi phụcsao cho méo tín hiệu là nhỏ nhất
Viết lại biểu thức (13.49 ):
+
− +
i d
d
dy y p r y dy
y p r y E
1
1
0
) ( ) (
) ( )
i
d
d
N d
i i
dy y p r y r
) (
) (
dy y p
dy y yp
Trang 17Phơng pháp Lloyd-Max Lloyd và Max đã phát triển độc lập thuật
toán để giải quyết biểu thức (13.50) và (13.51) Các chi tiết của thuậttoán này vẫn cha đợc cung cấp Trong phần này tôi sẽ cung cấp cho bạnmột thuật toán dựa trên thuật toán Lloyd-Max nhng có các chi tiết cụ thểhơn Tôi cũng sẽ cung cấp cho bạn phần mềm thiết kế N mức lấy mẫu vàkhôi phục
Thuật toán này gồm các bớc sau:
1 Chọn một giá trị cho r0 d 0 và dN đợc coi là đã biết
2 Cho i = 1,2, ,N - 1
a Tính di từ
Trang 18d d
d
d i
dy y p
dy y yp r
1
1
) (
) ( 1
d d
dy y p
dy y yp r
1
1
) (
) ( /
4 Nếu rN-1 ≠ r/, thay đổi lại r0 và lặp lại các bớc từ bớc 2 cho đến bớc4
Bây giờ tôi sẽ cung cấp cho bạn các chi tiết cần thiết để tạo ra thuậttoán trên
Chi tiết cho việc tính di trong bớc 2a của thuật toán Lloyd-Max di cóthể tính theo hàm sau đây:
d
d i i
dy y p
dy y yp r
d f
1
1
) (
) ( )
Có thể rút ra biểu thức gốc theo công thức lặp Newton-Raphon đợccho bởi:
Trang 19) (
) ( /
1
l i
l i l
i
l i
d f
d f d
i
d d
d
d i d
d
i i
dy y p
dy y yp d
dy y p
d p d
) (
) (
) ( )
(
d 0
i là giá trị ban đầu Phép lặp diễn ra cho đến khi f d( )i < ε
Giá trị ban đầu cho d1 là d0 + ∆, cho d2 là d1 + ∆, , ở đây ∆ là một giátrị nhỏ Giá trị gốc của f(di ) có thể tính theo dùng phơng pháp nửa lặp
(bisection) Ưu điểm của phơng pháp Newton-Raphson là khả năng hội
tụ nhanh Nhợc điểm là đạo hàm của một hàm thờng có giá trị rất nhỏ và
dễ dẫn đến giá trị zero gây nên sự không ổn định của các số
Các chi tiết cho việc thay đổi r0 Giá trị r0 có thể thay đổi lại nếuchúng ta nhận thấy rằng giá trị gốc của hàm:
0
1 0
0 0
+ = − ( )
( )
Đạo hàm của g(r0 ) có thể rất khó khăn cho việc phân tích Trong trờng
hợp này cần có một công cụ tính toán khác Chúng ta có thể thay thế đạo
Trang 20hàm bằng một giá trị hằng số có cùng dấu nh biểu thức trong dấu ngoặc(xem hình 13.8) Trong trờng hợp này thì tích phân lâu hội tụ hơn.
Tiếp theo là một chơng trình cho tính các mức lợng tử hoá theo phơngpháp Lloyd-Max Tích phân đợc đa ra dùng phơng pháp tích phânRomberg bởi vì nó chính xác hơn phơng pháp tích phân Simpson Chơngtrình cho phép bạn thiết kế lợng tử hoá đồng đều, Gauss hoặc là Laplace
Gauss 2 ( 2/2 2)
2
1 )
πσ
y
e y
lại còn hợp
tr ờng các
y p
và thứ ba cũng là lựa chọn cuối cùng là lựa chon trong khi tính biểu thứctrong ngoặc của g(r0 ) Lựa chọn của g(r 0 ) có thể là lựa chọn cho một số,
một giá trị hoặc là một giá trị tăng dần Lý do của sự lựa chọn này là kếtquả của phơng pháp tính toán có thể là một số không thể tính đợc, ví dụkhi ta chia cho một số quá nhỏ Qua kinh nghiệm tôi nhận thấy rằngphân bố Gauss và phân bố đồng đều thờng cho kết quả tính toán rất tốt
Trang 21Còn cho phân bố Laplace, khi dùng tăng giá trị của biểu thức trongngoặc sẽ không gặp một khó khăn nào việc tạo mã 6 bit.
Chơng trình 13.9 “MAXQ1.C“ Chơng trình cho tính các mức ợng tử Lloyd-Max.
l-Phơng pháp Lloyd Lloyd cũng đa ra một phơng pháp thứ hai cho
phép xác định các mức lợng tử mà ông gọi là phơng pháp Lloyd I Phơngpháp này có nhiều u điểm hơn phơng pháp II (giải thuật Lloyd-Max), vì
nó dễ dàng cho tính toán và các vector lợng tử hoá có thể mở rộng Chú ý
là vấn đề mà chúng ta quan tâm ở đây là khoảng cách lợng tử hoá, lợng
tử hoá của hàm một biến đã biết đợc phân tán Vector lợng tử hoá là mộtvector của nhiều biến mà với các biến này ta đã biết đợc phân tán
Thuật toán Lloyd theo các bớc sau:
1 Rút ra ớc lợng cho phạm vi của các biến
di {i = 0, 1, 2, , N}
(Một ớc lợng có thể rút ra bằng cách dùng các giá trị từ lợng tử hoá
đồng đều hoặc từ các mức lợng tử trớc mà ta cần một kết quả tốt hơn)
2 Đặt một biến D1= 0 D1 dùng để lu lại tình trạng không chính xáclúc trớc
) (
) (
d d i
dy y p
dy y yp r
i = 0, 1, , N - 1
Trang 222 2
1
) ( ) (
N k
d d
k
k
k
dy y p r y D
Cã thÓ dÔ dµng më réng biÓu thøc tr¹ng th¸i kh«ng chÝnh x¸c theo
d d
k k
k k
dy y p r
dy y yp r
y p y
k
d d
d
k k
k
Trang 23Lợng tử hoá các hệ số của FCT
Trong phần 13.4 chúng ta đã bắt đầu vấn đề của biến đổi cho mã hoá.Phơng pháp chúng ta áp dụng là chia ảnh thành các khối hình vuông;mỗi khối có kích thớc 8 ì 8 và 16 ì 16 Biến đổi cosin nhanh cho mỗikhối này đã đợc rút ra Chúng ta nhận thấy rằng hầu hết các hệ số này cóbiên độ rất nhỏ so với các giá trị xung quanh khối (một chiều) DC Câuhỏi đặt ra lúc này là các hệ số nào chúng ta cần lu giữ và bằng phơngpháp nào chúng ta có thể lu giữ tốt nhất các giá trị này? Câu trả lời chovấn đề này có thể tìm thấy trong phần lợng tử hoá mà chúng ta đã nghiêncứu ở trên
Chú ý là các hệ số của FCT xác định một dạng biến dạng Cho ví dụ,một ảnh có 256 ì 256 điểm và kích thớc của các khối là 8 ì 8 điểm, cótất cả 64 hệ số cho mỗi khối và 32 ì 32 khối Mỗi hệ số có 1024 giá trịkhi chúng ta xem xét tất cả các khối, và tạo nên một biến dạng riêng
Đánh giá biến dạng cho hệ số thứ j có thể cho bởi
j k
N k
d
d
j j k
D
Làm theo các bớc trong phần 13.5 chúng ta đợc
Trang 24
dy y p
dy y yp r
j d
j k
) (
) (
, 1
,j k j k j k
r r
có cùng một số các bit Trớc khi đa ra các mức lợng tử chúng ta có thể bỏbớt một số hệ số Nếu hệ số (0, 0) hay còn gọi là thành phần một chiều
DC biểu diễn cho giá trị trung bình của độ sáng của một khối, chúng takhông thể bỏ điểm này đi đợc Các hệ số khác trong một khối (còn gọi là
các hệ số xoay chiều AC) mang các thông tin về các chi tiết của ảnh Có
thể nhận thấy là các chi tiết có độ lệch lớn hơn độ lệch chuẩn thì mangnhiều tin tức hơn các chi tiết có độ lệch ít hơn độ lệch chuẩn Vì vậy màchúng ta bắt đầu lợc bỏ các hệ số bắt đầu từ vùng có trải rộng ít nhất.Vậy bao nhiêu hệ số sẽ đợc chúng ta giữ lại? Điều này phụ thuộc vàomức độ mà chúng ta muốn nén ảnh và phụ thuộc vào bao nhiêu các chitiết bị mất trên ảnh mà chúng ta có thể chấp nhận đợc
Trang 25Dựa trên các giả thiết trên chúng ta có thể phát triển một thuật toáncho nén ảnh và lợng tử hoá Các bớc sau mô tả cho cả việc lợng tử hoácác hệ số FCT.
1 Tính à và σ cho tất cả các hệ số FCT (Chú ý là độ lệch chuẩn vàtrung bình có thể tính trong một dải thông của ảnh dùng biểu thức saucho σ:
) 1 (
2 2
x x
σ
ở đây xi biểu diễn các giá trị cho một trong các hệ số) à đợc tính từtổng của xi
2 áp dụng các hệ số cho các chi tiết đợc giữ lại cụ thể là 0.25 , 0.5
3 Giữ lại các hệ số đã nhân thêm phân số chia có sai lệch cao hơn sailệch chuẩn
tr ờng các 0
mất không j)
(i, số hệ nếu 1
ij
T
5 Chia khoảng cách các hệ số cij (cụ thể một cho các giá trị mà Tij = 1)trong tất cả các khối, ngoại trừ các giá trị một chiều cho mỗi khối, nhsau:
ij ij