chơng 4: mã hoá ảnh 185 hớng 2 mức lợng tử khi xét từng vô hớng riêng rẽ và cũng chỉ có 2 mức lợng tử cho cả hai vô hớng. Trong trờng hợp này tỷ lệ bit là 1 2 bit cho mỗi vô hớng. Nếu ta định mã hoá cờng độ pixe l và mỗi cờng độ pixel tối thiểu phải đợc biểu diễn bằng 2 mức lợng tử thì phơng pháp lợng tử hoá vectơ là cách tiếp cận để cho tỷ lệ bit thấp hơn 1 bit/pixel. Ưu thế của lợng tử hoá vectơ so với lợng tử hoá vô hớng cũng phải trả giá : giá thành về tính toán và lu trữ khi lợng tử hoá vectơ đắt hơn nhiều so với lợng tử hoá vô hớng . Phần lớn yêu cầu tính toán và lu trữ là để thiết kế và lu trữ sách mã và để tra sách mã để nhận ra mức lợng tử phảI gán cho một vectơ. Hình 4.13. Minh hoạ khả nă ng khai thác sự tăng thứ nguyên của phép lợng tử. Trong trờng hợp này bên lợng tử hoá vectơ ít hơn bên lợng tử hoá vô hớng 4%. a) Lợng tử hoá vô hớng f 1 và f 2 . b) Lợng tử hoá vectơ f 1 và f 2 chơng 4: mã hoá ảnh 186 1.3. Thiết kế sách mã và algorit K -means. Khi lợng tử hoá vectơ cần xác định các mức lợng tử r i và các tế bào C i . Bảng liệt kê các mức lợng tử gọi là sách mã lợng tử hay gọi tắt là sách mã. Nếu trong sách có L mức kợng tử thì ta gọi nó là sách mã L mức. Sách mã ở đầu máy phát dùng để lợng tử hoá một nguồn vectơ thành 1 trong L mức lợng tử , còn ở đầu máy thu dùng để xác định mức lợng tử theo từ mã nhận đợc. Theo sự thoả thuận trớc của bên phát và bên thu, hai bên dùng sách mã nh nhau. Thiết kế sách mã cho lợng tử hoá vectơ là một bàI toán khó. Không giống trờng hợp lợng tử hoá vô hớng, các mức lợng tử bên lợng tử hoá vectơ là những vectơ, còn bờ các tế bào cũng không còn là điểm nữa. Sự khó khăn về thiết kế sách mã là một lý do để những năm 70 về trớc lợng tử hoá vectơ không đợc xét đến khi mã hoá ảnh và tiếng nói. Cách xác định r i và C I tối u phụ thuộc tiêu chuẩn sai số đợc sử dụng. Tiêu chuẩn MSE thờng dùng có thể biểu diễn nh độ méo trung bình )] ,([ ffdED với ) () () ,( ffffffd T . Thiết kế tối u sách mã là bài toán phi tuyến cao độ. Muốn giải bài toán đó nên khai thác 2 điều kiện cần cho lời giải bài toán sau đây : Điều kiện 1 . Để 1 vectơ f có thể lợng tử hoá về 1 trong những mức lợng tử, bộ lợng tử hoá tối u phải chọn mức lợng tử r i có méo nhỏ nhất giữa f và r i : VQ(f ) = r i nếu và chỉ nếu d( f,r i ) d(f,r j ) , i j 1 j L (4.21) Điều kiện 2 . Mỗi mức lợng tử r i phải tối thiểu hoá đợc méo trung bình D trong C i : Tối thiểu hoá E[d( f,r i ) | f C i ] đối với r i . (4.22) Mức r i thoả mãn (4.22) gọi là tâm quay của C i . Nếu (4.21) không tho ả mãn, thì có thể làm giảm méo trung bình D bằng cách áp đặt (4.21). Nếu (4.22) không thoả mãn, có thể làm giảm D bằng cách áp đặt (4.22). Hai điều kiện trên là điều kiện cần cho lời giải tối u. Điều kiện 1 định ra 1 quy tắc để lợng tử hoá f mà không sử dụng C i một cách tờng minh. Nói cách khác độ méo ffd , cùng với tất cả mức lợng tử r i , với 1 i chơng 4: mã hoá ảnh 187 L, định ra mọi tế bào C i cho 1 i L. Điều kiện 2 chỉ ra một con đờng để xác định r i từ C i và ffd , . Hai điều kiện này cho thấy rằng khi đã cho ffd , thì các mức lợng tử và tế bào không độc lập với nhau. Quả thực là các mức lợng tử định ra các tế bào và các tế bào định ra các mức lợng tử. Do đó chỉ riêng các mức lợng tử cũng đã đủ cho sách mã, các tin tức rõ về các tế bào không cần lu trữ. Hai điều kiện cần gợi ý ra một quy trình lặp để thiết kế một sách mã tối u. Giả sử ta bắt đầu bằng một ớc lợng ban đầu của r i . Cho r i và độ méo ffd , ta xác định C i , ít ra là bằng lý thuyết, bằng cách xác định giá trị r i ứng với mọi giá trị có thể của f, dùng điều kiện 1 trong (4.21). Cho một ớc lợng của C i có thể xác định ra r i bằng cách tính tâm quay của C i , dùng điều kiện 2 trong (4.22). Giá trị r i tìm ra là một ớc lợng mới của các mức lợng tử và quá trình cứ thế tiếp tục. Quy trình lặp lại có hai khó khăn thực tế. Trớc hết, nó yêu cầu xác định r i với mọi giá trị có thể của f. Thứ nữa, hàm p r (f 0 ) cần để tính tâm quay của C i thì trong thực tế khôn g cho biết. Thay vào đó chúng ta có những vectơ huấn luyện đại biểu cho số liệu phải mã hoá. Một biến dạng của quy trình lặp trên đây, có tính đến hai khó khăn vừa nói, là algorit K_means đợc Lloyd tìm ra năm 1957 cho trờng hợp vô hớng (N = 1). Năm 1965 Forgy triển khai phơng pháp này cho trờng hợp vectơ. Algorit này còn gọi là algorit LBG, vì Y.Linde, A.Bufo và R.M.Gray đã chứng minh rằng algorit này có thể dùng với nhiều độ đo cự ly khác nhau và đã đợc dùng phổ biến trong những ứng dụng lợng tử hoá vectơ vào mã hoá tiếng nói và ảnh. Để mô tả algorit K_means ta giả thiết là có M vectơ huấn luyện biểu thị bởi f i cho 1 i M. Bởi vì chúng ta ớc lợng L mức lợng tử từ M vectơ huấn luyện, ta giả thiết là M >> L. Trong những ứng dụng điển hình M cỡ 10L đến 50L hay hơn. Các mức lợng tử r i đợc xác định bằng cách tối thiểu hoá méo trung bình, định nghĩa theo : M i ii ffd M D 1 ) ,( 1 (4.23) Trong algorit K_means, chúng ta bắt đầu bằng một giá trị ớc lợng ban đầu của r i khi 1 i L. Sau đó ta xếp lớp M vectơ huấn luyện thành L nhóm (hay lớp), mỗi lớp ứng với một mức lợng tử (dùng công thức 21). Điều này có thể thực hiện đợc bằng cách so sánh một vectơ huấn luyện với từng mức lợng tử và chọn ra mức ứng với méo bé nhất. Lu ý là ta chỉ lợng tử hoá những vectơ huấn luyện đã cho chứ không phải mọi vectơ có thể có của f. Từ những vectơ trong mỗi lớp xác định ra một mức lợng tử mới. chơng 4: mã hoá ảnh 188 Để thuận tiện trong kí hiệu giả thiết f i 1 i M 1 là M 1 vectơ huấn luyện lợng tử hoá về mức lợng tử r 1 . Ước lợng mới của r 1 nhận đợc bằng cách tối thiểu hoá 1 1 11 /),( M i i Mrfd . Nếu nh ) ,( ffd đợc dùng là sai số bì nh phơng ) () ( ffff T thì ớc lợng mới của r 1 vừa đúng là trung bình của M 1 vectơ f i ; 1 i M 1 . Các ớc lợng mới của mọi mức lợng tử r i với 2 i L cũng nhận đợc bằng cách tơng tự. Đó là một biến tớng của (4.22), đợc thực hiện để phù hợp với D trong (4.23). Nh vậy là hoàn thành một bớc lặp trong chu trình, và đến khi méo trung bình D ở bớc sau không khác bớc trớc mấy thì có thể ngừng chu trình lặp. Hình 4.14 biểu diễn algorit K_means. Vì có sự xếp đám cho nên algorit này còn gọi là algorit xếp đám, thờng gặp trong các tài liệu về nhận dạng. Ngời ta đã chứng minh là algorit K_means hội tụ về một cực tiểu tại chỗ của D trong (4.23). Để xác định r i với D gần cực tiểu tuyệt đối có thể lặp lại algo rit này với những ớc lợng ban đầu khác nhau của r i và chọn lấy tập cho D bé nhất . Phần tính toán tốn kém nhất trong algorit K_means là việc lợng tử hoá các vectơ huấn luyện trong mỗi chu trình lặp. Với mỗi vectơ trong M vectơ huấn luyện độ méo phải đợc ớc lợng L lần (cứ 1 mức lợng tử 1 lần). Nh vậy trong mỗi chu trình lặp phải tính ML lần độ méo. Nếu giả thiết có N vô hớng trong vectơ, mỗi vô hớng dùng R bit và mỗi mức lợng tử đợc gán một từ mã có chiều dài nh nhau thì quan hệ giữa L với N và R là : L = 2 B = 2 NR (4.24) B là tổng số bit dùng cho mỗi vectơ. Nếu giả thiết độ méo đợc dùng là sai số bình phơng ee T thì mỗi lần tính độ méo cần đến N phép tính số học ( N phép nhân và N phép cộng). Số lợng phép tính số học cần cho bớc lợng tử hoá vectơ huấn luyện trong mỗi chu trình là : Số lợng phép tính số học = NML = NM.2 NR (4.25) Từ (4.25) thấy chi phí tính toán tăng theo hàm mũ N (số vô hớng trong mỗi vectơ) và R (số bit trong mỗi vô hớng). Khi N = 10 và R = 2 và ML =10L = 10.2 NR = 10.2 20 , số lợng phép toán số học theo (.25) là 100 nghìn tỉ cho mỗi bớc lặp. chơng 4: mã hoá ảnh 189 Hinh 4.14. Thiết kế sách mã bằng algorit K_means cho lợng tử hoá vectơ . Ngoài chi phí tính toán còn chi phí lu trữ. Giả sử mỗi vô hớng cần 1 đơn vị bộ nhớ, việc lu trữ các vectơ huấn luyện cần đến MN đơn vị nhớ và việc lu trữ các mức lợng tử cần đến LN đơn vị nhớ. Nh vậy : Tổng số đơn vị bộ nhớ cần sử dụng = (M+L)N = (M+2 NR )N (4.26) Vì M >> N cho nên yêu cầu về bộ nhớ chủ yếu để lu trữ các vectơ huấn luyện khi N = 10, R = 2, M = 10L =10.2 20 , tính theo (4.26) số lợ ng đơn vị nhớ cần dùng phải cỡ 100 triệu . Vì con số tính theo (4.26) tăng theo hàm mũ N và R do đó cả yêu cầu về tính toán và lu trữ buộc ta chỉ sử dụng lợng tử hoá vectơ khi vectơ có số vô hớng ít, và số vô hớng có số bit ít. Trên đây thảo luận về y êu cầu về tính toán và lu trữ khi thiết kế sách D c ò n th ay đ ổ i g iá trị n hiề u ? k hô n g Sto p c ó Vectơ sách mã ban đầu r j , 1 Lj Xếp lớp M vectơ huấn luyện thành L đám bằng lợ ng tử hoá Ước lợng r j bằng cách tính tâm quay của các vectơ cùng đám chơng 4: mã hoá ảnh 190 mã. Khi thiết kế xong sách mã phải lu trữ nó ở cả đầu máy phát và đầu máy thu.Vì sau khi thiết kế xong sách mã thì không cần đến vectơ huấn luyện nữa cho nên chỉ cần lu trữ các mức lợng tử. Tuy thế số mức lợng tử phải lu trữ cũng còn lớn. Trong trờng hợp ở đây : Số đơn vị bộ nhớ cần cho sách mã = NL = N2 NR . (4.27) Khi N = 10, R = 2, con số tính theo (4.27) cỡ 10 triệu. Để lợng tử hoá mỗi vectơ f phải tính độ méo d (f,r i ) cho từng bớc lợng tử của L mức ở máy phát. Vì thế cho mỗi vectơ : Số phép tính số học = NL = N.2 NR (4.28) Khi N = 10, R = 2, con số tính theo (4.28) cũng cỡ 10 triệu. Theo (4.27) và (4.2 8) cả số đơn vị trong bộ nhớ sách mã lẫn số thuật toán số học để lợng tử hoá 1 vectơ f đều tăng theo hàm mũ N (số vô hớng trong mỗi vectơ) và R (số bit ở mỗi vô hớng). Số thuật toán số học trên chỉ cần ở đầu phát. ở đầu thu chỉ cần thuật toán tra bảng đ ơn giản. 1.4. Sách mã cây và tìm kiếm nhị phân. Khối lợng tính toán chủ yếu khi thiết kế sách mã bằng algorit K_means nằm ở khâu lợng tử hoá các vectơ huấn luyện. Cũng cần phải lợng tử hoá vectơ khi sách mã đợc dùng ở đầu phát. Nếu sách mã đợc th iết kế bằng thuật toán K_means thì việc lợng tử hoá vectơ lúc thiết kế và việc truyền số liệu yêu cầu phải ớc lợng độ méo giữa vectơ với từng mức trong L mức lợng tử. Quá trình này gọi là tìm kiếm đầy đủ và dẫn đến số phép tính tăng theo hàm mũ N và R (số vô hớng trong vectơ và số bit trong mỗi vô hớng). Nhiều phơng pháp đã đợc phát triển để loại bỏ sự phụ thuộc theo hàm mũ này. Chúng làm giảm số lợng phép tính bằng cách thay đổi sách mã, bằng sự hi sinh phần nào chất lợng và cả sự tăng dung lợng bộ nhớ. Một trong những phơng pháp gọi là sách mã cây. ý cơ bản trong sách mã cây là đem chia không gian N chiều của f ra thành hai miền và dùng algorit K_means với K = 2, sau đó lại đem chia mỗi miền ra làm hai và lại dùng algorit K_means, cứ thế tiếp t ục. Đặc biệt là khi L có thể biểu thị thành luỹ thừa của 2 thì thoạt tiên thiết kế sách mã có 2 mức lợng tử r 1 và r 2 , chơng 4: mã hoá ảnh 191 dùng algorit K_means. Sau đó ta xếp lớp tất cả các vectơ huấn luyện thành hai lớp, một lớp ứng với r 1 và lớp kia ứng với r 2 . Mỗi lớp đợc xử lý một cách độc lập và sách mã với hai mức lợng tử đợc thiết kế cho từng đám. Quá trình này cứ thế lặp đi lặp lại cho đến khi chúng ta có tất cả L mức lợng tử ở giai đoạn chót (tầng chót). Điều này đợc biểu diễn ở hình 4.15 cho trờng hợp L = 8. Th eo quy trình này thiết kế ra sách mã cây. Thoạt tiên ta hãy xét về yêu cầu tính toán và lu trữ khi thiết kế sách mã. Ta vẫn giả thiết rằng mỗi lần tính độ đo độ méo phải mất N phép tính số học. Vì cả thảy có log 2 N giai đoạn và độ méo chỉ xác định hai lần cho mỗi cái trong M vectơ huấn luyện ở mỗi giai đoạn mỗi chu trình lặp của algorit K_means. Tổng số phép tính số học/chu trình lặp = 2NM log 2 L (4.29) Đem con số này so sánh với số lợng tơng ứng khi tính theo công thức (4.25 ) trong trờng hợp tìm kiếm đầy đủ, thấy số phép tính giảm đi L/(2.log 2 L) = 2 NR /(2NR) lần. Khi N = 10, R = 2 thì giảm đợc 26000 lần. Nhu cầu lu trữ khi thiết kế sách mã câyđòi hỏi lớn hơn trờng hợp algorit K_means một ít, bởi vì trong cả hai trờng hợp đều phải lu trữ toàn bộ vectơ huấn luyện . Bây giờ ta xét về số lợng phép tính khi lợng tử hoá 1 vectơ f bằng phơng pháp sách mã cây. ở giai đoạn thứ nhất ta tính độ méo giữa f và hai mức lợng tử r 1 và r 2 trên hình 4.15. Giả sử d( f,r 2 ) < d(f,r 1 ) thì ta chọn ra. ở giai đoạn hai ta tính độ méo giữa f và hai mức lợng tử r 5 , r 6 trên hình 4.15 và chọn ra mức lợng tử nào cho độ méo nhỏ hơn. Giả sử chọn r 5 ở giai đoạn 3, ta lại so sánh f với r 11 và r 12 . Quá trình này cứ thế tiếp diễn cho đến giai đoạn ch ót. Mức lợng tử đợc chọn ở giai đoạn chót chính là mức lợng tử của f. Ví dụ trên nếu L = 8 và r 12 đợc chọn ở giai đoạn ba thì r 12 là mức lợng tử của f .Trong quy trình này chúng ta cứ lần đi theo cây và tiến hành tìm kiếm giữa hai mức lợng tử ở điểm nút của cây. Sự tìm kiếm tiến hành giữa hai một lúc cho nên ta gọi là tìm kiếm nhị nguyên. Vì tất cả có log 2 L giai đoạn và ở mỗi giai đoạn tính độ méo hai lần cho nên số phép tính số học cần thực hiện khi lợng tử hoá f theo phơng pháp sách mã cây là : Số phép tính số học = 2N log 2 L = 2N 2 R (4.30) Theo công thức (4.30) thì chi phí tính toán không tăng theo hàm mũ N và R. Nếu so kết quả tính theo (4.30) với kết quả tính theo (4.28) trong trờng hợp tìm kiế m đầy đủ thì chi phí cũng giảm 2 NR /(2NR) lần. Khi N = 10 và R = 2 thì giảm đợc 26000 lần. Việc giảm bớt số lần tính toán phải trả giá. Sách mã dùng ở máy phát phải lu trữ cả các mức chơng 4: mã hoá ảnh 192 lợng tử trung gian lẫn các mức cuối cùng, bởi vì cần phải sử dụng các m ức trung gian khi tìm kiếm. Hinh 4.15. Ví dụ về sách mã cây. Vì thế cách mã trong trờng hợp này có kích thớc gấp đôi sách mã thiết kế theo algorit K - means. Ngoài ra trong nhiều trờng hợp ứng dụng xét về độ méo trung bình thì tính năng sách mã cũng kém hơn sách mã thiết kế bằng algorit K - means. Nhng trong nhiều trờng hợp u điểm về giảm số phép tính có thể bù lại một cách hào phóng, nhợc điểm làm tăng gấp đôi bộ nhớ và làm giảm chất lợng phần nào. Sự tìm kiếm nhị nguyên là trờng hợp riêng của một loạt phơng pháp gọi là lợng tử hoá vectơ bằng tìm kiếm cây. Chẳng hạn có thể chia mỗi nút ra nhiều hơn hai nhánh. Ngoài ra khi thiết kế sách mã chúng ta có thể kết thúc một nút đặc biệt sớm hơn nếu chỉ có ít vectơ huấn luyện gán cho nút đó. Trong tiết này ta thảo luận về lợng tử hoá vectơ. Ưu điểm của lợng tử hoá vectơ so với lợng tử hoá vô hớng là cải thiện chất lợng. Mức độ cải thiện phụ thuộc vào nhiều yếu tố, chẳng hạn mức độ sự phụ thuộc thống kê giữa các vô hớng trong vectơ. Sự cải thiện chất lợng này phải trả giá bằng chi phí cao cho tính toán và lu trữ. Có đáng trả giá hay không là tuỳ theo từng trờng hợp cụ thể. Lợng tử hoá vectơ chỉ có ích trong những ứng dụng mà tỷ lệ bit thấp, và sự cải thiện tính năng rất quan trọng, còn việc tăng chi phí thì không lớn lắm nhờ tỷ lệ bit thấp. Lợng tử hoá vectơ cũng có ích trong trờng hợp quảng bá, khi mà số máy thu lớn gấp bội số máy phát và cho phép dùng máy phát đắt tiền. Máy thu vẫn cần lu trữ sách mã, nhng nó chỉ phải làm thao tác đơn giản là tra bảng để phục hồi 1 vectơ lợng tử hoá. r 1 r 2 r 3 r 4 r 5 r 6 r 7 r 8 r 9 r 10 r 11 r 12 r 13 r 14 chơng 4: mã hoá ảnh 193 2. gán từ mã. 2.1 Gán từ mã có chiều dài đều . Tiết 1 đã thảo luận vấn đề lợng tử hoá 1 nguồn vô hớng hoặc vectơ, kết quả của lợng tử hoá là đem lại một mức lợng tử nào đó. Để truyền cho máy thu mứ c lợng tử đã đợc chọn trong số L mức, phải gán cho mỗi mức này 1 từ mã (một chuỗi 0 và 1). Khi máy thu nhận đợc từ mã nó nhận ra mức lợng tử tơng ứng nhờ tra sách mã. Để cho máy thu có thể nhận ra 1 mức lợng tử duy nhất, phải gán cho mỗi mức 1 từ mã riêng. Ngoài ra, vì lúc truyền trong một dãy có thể chứa nhiều mức lợng tử, phải thiết kế từ mã sao cho máy thu nhận ra đợc từng từ khi truyền cả dãy. Một mã có những đặc tính nh vậy gọi là có tính giải mã duy nhất. Khi L=4, gán 00 cho r 1 , 01 cho r 2 , 10 cho r 3 và 11 cho r 4 thì nhận đợc một mã không có tính giải mã duy nhất, bởi vì khi nhận đợc 1000 thì có thể hiểu ra r 3 r 1 hoặc r 2 r 1 r 1 . Sẽ rất thuận tiện nếu nghĩ rằng kết quả lợng tử hoá 1 vô hớng hoặc 1 vectơ có thể coi nh một thông báo có L khả n ăng a i khác nhau, (1 i L) mà mỗi khả năng ứng với một lợng tử. Phơng pháp đơn giản nhất để chọn từ mã là dùng từ mã có độ dài không đổi. Trong phơng pháp này mỗi khả năng của thông báo đợc mã hoá 2bằng một từ mã có chiều dài giống nh các khả năng khác. Một ví dụ về chọn từ mã có độ dài không đổi với L=8 đợc biểu diễn trên bảng 4.2. Chiều dài của mỗi từ mã trong ví dụ này là log 2 L = log 2 8 = 3bit. Số bit cần thiết để mã hoá 1 thông báo gọi là tỷ lệ bit. Trong ví dụ của chúng ta ở đây tỷ lệ bit là 3bit/thông báo. Nếu ta mã hoá nhiều hơn 1 thông báo thì tỷ lệ bit bình quân là tổng số bit cần thiết chia cho số thông báo. Trong trờng hợp từ mã có chiều dài không đổi thì tỷ lệ bit bình quân cũng bằng tỷ lệ bit. 2.2 Entropy và việc gán từ mã có chiề u dài biến đổi. Gán từ mã có chiều dài không đổi tuy đơn giản nhng thờng là không tối u về mặt tỷ lệ bit trung bình. Giả sử có 1 vài khả năng của thông báo có xác suất đợc truyền nhiều hơn các khả năng khác. Vậy thì cái nào hay đợc truyền đi ta gán c ho nó từ mã ngắn, còn cái nào ít truyền đi thi gán từ mã dài và nh vậy sẽ giảm đợc tỷ lệ bit bình quân. . mã, nhng nó chỉ phải làm thao tác đơn giản là tra bảng để phục hồi 1 vectơ lợng tử hoá. r 1 r 2 r 3 r 4 r 5 r 6 r 7 r 8 r 9 r 10 r 11 r 12 r 13 r 14 chơng 4: mã hoá ảnh 1 93 2. gán từ mã. 2.1. chơng 4: mã hoá ảnh 186 1 .3. Thiết kế sách mã và algorit K -means. Khi lợng tử hoá vectơ cần xác định các mức lợng tử r i và các tế bào C i . Bảng liệt kê các mức lợng tử gọi là sách mã lợng. với lợng tử hoá vô hớng . Phần lớn yêu cầu tính toán và lu trữ là để thiết kế và lu trữ sách mã và để tra sách mã để nhận ra mức lợng tử phảI gán cho một vectơ. Hình 4. 13. Minh hoạ khả nă ng khai