Cõy zero cung cấp mụ tả ng n g n vắ ọ ề vị trớ c a cỏc giỏ tr khụng quan ủ ị
trọng (insignificant) bởi vỡ nú chỉ cần mó húa một ký hi u (R) để ỏnh d u v ệ đ ấ ị
trớ nỳt gốc. Bộ giải mó cú thể suy luận ra t t c cỏc vấ ả ị trớ khỏc trong cõy zero
cú giỏ trị khụng quan trọng. Do vậy, cỏc vị trớ của chỳng khụng cần mó húa. Với ngưỡng T=32, hai ký hiệu R là đủ để chỉ ra 26 vị trớ trong hai cõy zero.
Cõy zero chỉ cú ý nghĩa nộn lớn khi chỳng xuất hiện thường xuyờn. May mắn là với biến đổi wavelet cỏc nh tự nhiờn, cả ấu trỳc đa phõn giải t o ra ạ
nhiều cõy zero (đặc biệt là ở cỏc ngưỡng giỏ trị cao).
3.2.3.Thuật toỏn mó húa
Kết hợp mó húa nhỳng và cõy zero sẽ cho ta cơ chế EZW. Thuật toỏn EZW đơn giản thực hiện việc thay thế cỏc tớnh toỏn trong bước Significance của thủ tục mó húa mặt phẳng bit bằng những thao tỏc sau:
Bước 3 (Significance):Quột qua cỏc giỏ trị khụng quan tr ng s dụng khuụn ọ ử
quột nhất định. Kiểm tra mỗi giỏ trị w(m) như sau:
ắ Nếu |w(m)|≥Tk thỡ
Đưa ra dấu c a w(m) là + ho c - ủ ặ
Gỏn wQ(m)=Tk
Ngược lại nếu |w(m)|<Tk thỡ
Để wQ(m) giữ giỏ trị 0
Nếu m ở mức phõn giải 1 thỡ
Đưa ra giỏ trị I (Isolated Zero)
Ngược lại thỡ
Kiểm tra cõy t phõn cú nỳt g c là m ứ ố
Nếu cõy tứ phõn là cõy zero thỡ
• Đưa ra giỏ trị R (Root)
Ngược lại thỡ
Trong quỏ trỡnh quột cõy tứ phõn, giỏ trị quan trọng cỏc ở
ngưỡng cao hơn sẽ được tớnh là giỏ trị 0 tại ngưỡng này. Tất cả cỏc nỳt con chỏu ứng v i nỳt gốc của cõy zero sẽ ị ỏớ b b qua trong quỏ trỡnh quột cũn lại tại ngưỡng này.
Xột một vớ dụ minh họa EZW với cỏc giỏ trị wavelet như hỡnh 3.3.b. Gi sả ử giỏ trị ngưỡng khởi tạo là T0=64.
Tại vũng lặp đầu tiờn, ngưỡng là T1=32. Kết quả của bước Significance
được chỉ ra trong hỡnh 3.3.c. Đầu ra bộ mó húa sau vũng l p đầu tiờn là: ặ
Tương ứng với một biến đổi đó lượng tử chỉ cú hai giỏ trị ±32. Với +32
ở cỏc v trớ ỏnh d u b i d u c ng trong hỡnh 8.c, -32 ỏnh d u b i d u -, 0 ị đ ấ ở ấ ộ đ ấ ở ấ ở
tất cả cỏc vị trớ khỏc.
Trong vũng lặp thứ 2, với ngưỡng T2=16, kết quả của bước
Significance được chỉ ra trong hỡnh 3.3.d. C n l u ý r ng cú m t ký hi u R ầ ư ằ ộ ệ ở
vị trớ 10 theo trật tự quột. Đú là bởi vỡ dấu +, nằm tại vị trớ nỳt con là từ vũng lặp trước đú), được xem như giỏ trị 0. Do đú vị trớ 10 là gốc của cõy zero. Bước Refinement cũng hi n di n trong vũng l p 2. V i quy t c là cỏc giỏ tr + ệ ệ ặ ớ ắ ị
- của vũng lặp trước, trong vũng lặp này được xem như là giỏ trị 0, đầu ra của vũng lặp 2 là:
với giỏ trị biến đổi wavelet lượng tử húa tương ứng được chỉ ra trong
Hỡnh 3.4: Lượng tử húa:MSE=48,68755 (a). Làm trũn: MSE=39,6875 (b)
Người ta thường sử dụng 2 bit để mó húa cỏc ký hi u c a thu t toỏn ệ ủ ậ
EZW: +, -, R, I. Cỏc bộ mó húa EZW thực tế khụng nộn dữ liệu mà chỉ thực hiện sắp xếp lại giỏ trị wavelet theo một trỡnh t nh t ự ấ định giỳp cho chỳng được nộn một cỏch hi u qu . Do v y, bộ mó húa EZW cầệ ả ậ n được b sung theo ổ
sau bởi m t bộ ộ mó húa entropy như bộ mó húa Huffman để đạt hi u qu nộn ệ ả
mong muốn.
Trong quỏ trỡnh giải mó, bộ giải mó thực hiện đảo ngược cỏc bước
trong bộ mó húa và tạo ra cỏc giỏ trị wavelet được lượng tử.
Trong thực tế, để trỏnh sai số lượng tử quỏ l n, b gi i mó sau ú làm ớ ộ ả đ
trũn cỏc giỏ trị lượng tử về đ ể i m gi a c a cỏc kho ng cỏch mà chỳng ữ ủ ả được
tỡm thấy cuối cựng thuộc tiến trỡnh mó húa (vớ dụ cộng m t n a ngưỡng cu i ộ ử ố
cựng thờm vào giỏ trị biờn độ). Phương phỏp này làm giảm MSE. Xột với vớ dụ trờn, người ta làm trũn cỏc giỏ trị lượng tử ở hỡnh 3.4.a và k t qu hỡnh ế ả ở
3.3.Thuật toỏn SPIHT
Thuật toỏn SPIHT là một phiờn bản phỏt triển của EZW, được giới
thiệu bởi Said và Pearlman. EZW phụ thuộc vào việc sử dụng b mó húa s ộ ố
học thớch ứng để mó húa cõy zero và cỏc thụng tin phụ khỏc. SPIHT tỏ ra vượt trội so với EZW khi sử dụng m t b mó húa s họộ ộ ố c thớch ng. Tuy ứ
nhiờn, ngay cả khi thuật toỏn khụng sử dụng b mó húa entropy (thu t toỏn ộ ậ
trở thành binary-uncoded SPIHT), nú vẫn vượt trội hơn EZW khoảng 0.5 dB với cựng tốc độ bit [2].
SPIHT là viết t t cắ ủa Set Partitioning in Hierarchical Tree. Thu t ngữ ậ
Hierarchical Tree mang ý nghĩa là cõy tứ phõn xột trong phần EZW, trong lý
thuyết SPIHT, cấu trỳc cõy này được gọi là cõy hướng khụng gian (Spatial Orientation Tree). Set Partitioning đề cập t i cỏch nh ng cõy này chia nh , ớ ữ ỏ
phõn vựng cỏc giỏ trị biến đổi wavelet tại một ngưỡng xỏc định. Bằng cỏch
phõn tớch cẩn thận việc phõn vựng giỏ trị biến đổi này, Said và Pearlman đó cải tiến thuật toỏn nộn EZW, tăng hiệu năng nộn lờn đỏng kể.
3.3.1.Thủ tục sắp xếp phõn chia tập hợp
Một lưu ý quan trọng khi thiết kết thuật toỏn sắp xếp là ta khụng cần sắp xếp tất cả cỏc hệ số. Ta ch cầỉ n m t thu t toỏn ộ ậ đơn giản là l a ch n cỏc ự ọ
giỏ trị thỏa món Tk≤|w(m)|≤Tk+1 với k giảm sau mỗi chặng. Như đó biết với k đó cho, m t giỏ tr gọộ ị i là quan trọng (significant) n u |w(m)|≥Tế k, ngược lại là
khụng quan trọng (insignificant).
Thuật toỏn sắp xếp chia tập cỏc pixel vào cỏc tập con thành phần I và thực hiện tiến trỡnh kiểm tra biờn độ:
Nếu b gi i mó nh n được cõu tr lờộ ả ậ ả i cho bi u th c trờn là “sai” (t p ể ứ ậ
con I là khụng quan trọng) thỡ tất cả cỏc giỏ trị trong I là khụng quan trọng. Nếu cõu trả lời là “ ỳng” (t p con là quan tr ng), khi ú c n cú m t quy lu t đ ậ ọ đ ầ ộ ậ
nhất định được thống nhất giữa bộ mó húa và giải mó để phõn chia I thành cỏc
tập con mới Ii. Sau đú, cỏc bước kiểm tra lại được tiến hành với những t p ậ
con mới Ii này. Tiến trỡnh phõn chia tập hợp được tiếp tục cho đến khi việc
kiểm tra hoàn thành, kết quả thu được là những tập con một phần tử quan trọng tương ứng với từng giỏ trị quan trọng.
Để giảm số lần so sỏnh biờn độ (cỏc bit bản tin), người ta xõy dựng một
quy tắc phõn chia tập h p sợ ắp xếp theo cấu trỳc cõy phõn cấp hướng khụng
gian. Mục tiờu chủ yếu là t o ra phõn chia m i sao cho cỏc t p con khụng ạ ớ ậ
quan trọng chứa đựng nhiều phần tử, trong khi đú mỗi tập con quan trọng
mang chỉ ộ m t phần tử.
Để làm rừ mối quan h gi a s lầệ ữ ố n so sỏnh và s bit b n tin, người ta ố ả định nghĩa hàm sau: v i m t t p I cỏc ch sốớ ộ ậ ỉ trong tr t t quột, Hàm ậ ự
Significance ST[I] của I ng với ngưỡng T định nghĩa bởi: ứ
Một chỳ ý quan tr ng là v i ngưỡng kh i t o Tọ ớ ở ạ 0, Ta cú ST0[I]=0 với tất
cả cỏc tập chỉ số. N u I là m t t p ch a đựng m t ch số đơn m, người ta ký ế ộ ậ ứ ộ ỉ
hi u ệ ST[m] thay thế cho ST[{m}].
3.3.2.Cấu trỳc cõy hướng khụng gian
Tương tự nh định ngh a cõy zero trong EZW, SPIHT định ngh a m t ư ĩ ĩ ộ
khụng gian (Spatial Orientation Tree), cấu trỳc cõy này định nghĩa mối quan hệ khụng gian dựa trờn hỡnh chúp phõn cấp.
Cõy hướng khụng gian khỏc với cõy zero ở chỗ chỳng khụng được hỡnh thành dựa trờn cơ sở gồm cỏc giỏ tr khụng quan tr ng ho c quan tr ng. M i ị ọ ặ ọ ỗ
nỳt của cõy tương ứng với một pixel. Cỏc pixel trong cựng một cõy được định nghĩa là nỳt con chỏu (descendant) của nỳt cha (parent node). Nỳt con
(offspring) cần hiểu là nỳt con trực tiếp của nỳt cha. Như vậy, m i nỳt ho c ỗ ặ
khụng cú nỳt con hoặc cú bốn nỳt con biểu di n bễ ởi khối 2x2. Gốc của cõy
(tree root) là cỏc pixel ở mức phõn gi i thụ nh t và m i nỳt nh vậy cú nỳt ả ấ ỗ ư
con của riờng mỡnh ngoại trừ những nỳt ở phớa gúc đỉnh bờn trỏi (thuộc băng
con toàn thụng thấp).
Cỏc cõy này được sử dụng để phõn vựng cỏc pixel thành m t s tập ộ ố
hợp. Người ta ký hiệu:
D(m) = {cỏc chỉ ố s con chỏu h u du c a ch s m} ậ ệ ủ ỉ ố
O(m) = {cỏc chỉ ố s con tr c ti p c a ch s m} ự ế ủ ỉ ố
L(m) = D(m) - O(m) = {cỏc chỉ ố s chỏu ch t c a m} ắ ủ
Ngoại trừ mức th p nh t và cao nh t c a c u trỳc phõn c p, g i [i,j] là ấ ấ ấ ủ ấ ấ ọ
tọa độ của chỉ số m, ta cú tập cỏc chỉ số con trực tiếp của m như sau: O(i,j)={[2i,2j], [2i+1,2j], [2i,2j+1], [2i+1, 2j+1]}
Ngoài ra, người ta định nghĩa H là tập chứa đựng cỏc ch số củỉ a m c L ứ
với L là số mức trong bi n ế đổi wavelet (bao g m t t c cỏc v trớ trong b ng ồ ấ ả ị ă
lọc toàn thụng thấp cũng như cỏc băng con theo phương ngang, thẳng đứng, đường chộo của m c L). ứ
Một chỳ ý quan trọng là cỏc chỉ số trong b ng l c toàn thụng th p ă ọ ấ
khụng cú con chỏu. Nếu m chỉ thị ộ m t vị trớ trong băng lọc toàn thụng thấp thỡ
D(m)=ỉ
Ta sử dụng cỏc thành ph n c a cõy hướng khụng gian nh là cỏc t p ầ ủ ư ậ
con phõn chia trong thuật toỏn sắp xếp. Quy tắc sắp x p t p hế ậ ợp như sau:
1. Phần khởi tạ được hỡnh thành bởi cỏc tập {m} và D(m) với mọi m o thuộc tập hợp H.
2. Nếu D(m) là quan trọng (significant) thỡ được phõn chia thành 5 tập hợp: L(m) và bốn tập hợp gồm những phần tử đơn nhất thuộc O(m).
3. Nếu L(m) là quan trọng, tiếp tục chia thành 4 tập con D(k) với k thuộc O(m)
3.3.3.Thuật toỏn mó húa
SPIHT theo dừi trạng thỏi c a tập cỏc chỉ ốủ s trong ba danh sỏch:
ắ Danh sỏch cỏc tập h p khụng quan tr ngợ ọ LIS (List of Insignificance Sets): tập cỏc hệ số wavelet được xỏc định b i c u trỳc cõy cú ở ấ độ lớn
nhỏ hơn ngưỡng nhất định.
ắ Danh sỏch cỏc pixel khụng quan trọng LIP (List of Insignificance Pixels): bao gồm cỏc hệ ố s đơn l cú độ lớn nhỏ ơẻ h n ngưỡng.
ắ Danh sỏch cỏc pixel quan trọng LSP (List of Significance Pixels): bao
gồm cỏc pixel cú biờn độ lớn hơn mức ngưỡng.
Mỗi phần tử trong danh sỏch ứng với một chỉ số m, trong LIP và LSP mỗi chỉ số này biểu diễn phần tử duy nhất {m} với m là chỉ số nhận dạng, LIS biểu diễn hoặc tập D(m) hoặc tập L(m). Như vậy v i LIS, ch sốớ ỉ m th hi n ể ệ
Một chỉ số m được g i là quan tr ng hay khụng quan tr ng ph thu c ọ ọ ọ ụ ộ
vào giỏ trị wavelet w(m) là quan trọng hay khụng quan trọng so với một ngưỡng nhất định.
Áp dụng qui luật sắp x p t p hế ậ ợp ở phần trờn, cỏc pixel ở trong LIP – là
khụng quan trọng trong bước xử lý trước đú - được kiểm tra, những pixel nào bõy giờ trở thành quan trọng v i ngưỡng mớớ i sẽ được chuyển vào LSP.
Tương tự, cỏc tập hợp trong LIS lần lượt được đỏnh giỏ, khi phỏt hiện mộ ật t p hợp là tập hợp quan trọng thỡ tập hợp đú sẽ được loại bỏ khỏi LIS và thực hiện phõn tỏch tập hợ đú. Cỏc tập hợp thu được sau khi phõn tỏch được xử lý p như sau:
Cỏc tập h p m i v i s ph n t l n h n m t s được đưa tr l i LIS ợ ớ ớ ố ầ ử ớ ơ ộ ẽ ở ạ
Cỏc tập h p g m ch gồợ ồ ỉ m m t ph n t sẽộ ầ ử được đưa vào cu i LIP ố
hoặc LSP tựy thuộc vào việc phần tử đ ú là khụng quan trọng hay quan trọng. Cỏc pixel trong LSP sẽ được xử lý trong bước
Refinement.
Dưới đõy thu t toỏn SPIHT s dụậ ử ng phương phỏp phõn chia t p h p ậ ợ
trong bước sắp xếp. Để đơn giản ta viết hàm Significance STk là SK
Bước 1(Khởi tạo): Chọn m t ngưỡng kh i t o, T=T0, sao cho tộ ở ạ ất cả cỏc giỏ trị biến đổi thỏa món |w(m)|<T0 và ớt nhất một giỏ trị biến đổi thỏa món|w(m)|≥T0/2. Thiết lõp LIP bằng H, LSP bằng ỉ, gỏn LIS bằng tất cả cỏc chỉ số trong H mà H cú nỳt con chỏu (kiểu A)
Bước 2(Cập nhật ngưỡng): Gỏn Tk=Tk-1/2
Bước 3(Sắp xếp): Thực hi n nh sau: ệ ư
Với mỗi giỏ trị m trong LIP:
ắ Nếu SK[m]=1 thỡ
• Chuyển m vào cu i danh sỏch LSP ố
• Đưa ra dấu c a w(m); gỏn wQ(m)=TK ủ
Với mỗi m trong LIS:
1. Nếu m cú kiểu A thỡ
ắ Đưa ra SK[D(m)]
ắ Nếu SK[D(m)]=1 thỡ
Với mỗi n thuộc O(m) thực hiện:
9 Đưa ra SK[n] 9 Nếu SK[n]=1 thỡ:
• Bổ sung n vào LSP
• Đưa ra dấu c a w(n) ủ
• Gỏn wQ(n)=TK
Ngược lại nếu SK[n]=0 thỡ bổ sung n vào LIP
Nếu L(m)≠ỉ thỡ chuyển m về cuối LIS với kiểu B
Ngược lại lo i m kh i LIS ạ ỏ
2. Ngược lại nếu m cú kiểu B thỡ:
ắ Đưa ra SK[L(m)] ắ Nếu SK[L(m)]=1 thỡ
Đưa cỏc phầ ửn t thu c O(m) vào cu i danh sỏch LIS, cỏc ộ ố phần tử này cú kiểu A
Bước 4 (Refinement): Quột hết cỏc ch sốỉ m trong LSP tỡm được v i giỏ tr ớ ị
ngưỡng Tj cao hơn, với j<k (nếu k=1 thỡ bỏ qua bước này). Với mỗi giỏ trị
w(m) thực hiện như sau:
ắ Nếu |w(m)| trong khoảng [wQ(m), wQ(m)+Tk) thỡ đưa ra bit 0
ắ Nếu |w(m)| nằm trong khoảng [wQ(m)+Tk, wQ(m)+2Tk) thỡ
Đưa ra bit 1
Thay giỏ trị wQ(m) bằng wQ(m)+Tk
Bước 5: Lặ ạ ừp l i t bước 2 t i bước 4. ớ
Một đặc tr ng quan tr ng c a thu t toỏn là cỏc ph n t thờm vào cu i ư ọ ủ ậ ầ ử ố
danh sỏch LIS trong bước 3 được xử lý trước khi bước sắp xếp đú kết thỳc.
Do đú khi núi với mỗi m trong LIS bao gồm cả cỏc phần đang được thờm vào trong LIS.
Trong thuật toỏn trờn, tất c cỏc ả đ ềi u ki n rệ ẽ nhỏnh đều dựa trờn dữ ệu li Sk (tớnh toỏn dựa trờn cỏc giỏ tr w(m)) – đưa ra đầu ra của bộ mó húa. Do đú, ị để giải mó chớnh xỏc, ch cầỉ n thay th cụế m t “đưừ a ra” (output) bằng “ a đư
vào” (input).
Tương tự nh vớư i cỏc thu t toỏn mó húa khỏc, hi u qu củậ ệ ả a thu t toỏn ậ
cú thể được cải tiến bằng cỏch mó húa entropy đầu ra. Tuy nhiờn do tiờu tốn
thời gian mó húa/giải mó lớn, thực nghiệm chỉ ra rằng mó húa entropy dấu của giỏ trị hoặc cỏc bit đầu ra trong bước Refinement mang lại r t ớt ấ độ lợi.
Mặt khỏc, cỏc giỏ trị quan trọng khụng xuất hiện với xỏc xuất như nhau, cú sự phụ thuộc thống kờ giữa S(m) và S[D(m)] và giữa cỏc pixel gần kề nhau. Người ta khai thỏc sự phụ thuộc này sử dụng thu t toỏn mó húa s ậ ố
học thớch ứng. Để tăng hi u n ng nộn, nhúm cỏc 2x2 v trớ ệ ă ị được gom l i v i ạ ớ
ký hiệu đơn bởi bộ mó húa số học. Do b gi i mó ch cầộ ả ỉ n bi t s chuy n đổi ế ự ể
từ khụng quan trọng thành quan trọng, lượng thụng tin cần được mó húa thay
đổi theo số lượng n cỏc pixel khụng quan trọng trong nhúm. Trong t ng ừ
trường hợp, nú được chuyển bởi bảng mó húa entropy 2n ký hiệu. Như vậy cú thể sử dụng cỏc mụ hỡnh s họố c thớch ng, v i 2ứ ớ n ký hiệu (n thuộc {1,2,3,4})
để mó húa thụng tin trong một nhúm 4 pixel.
Hỡnh 3.5 là đồ thị giữa tỷ số tớn hi u trờn nhi u đỉnh PSNR và t lệ nộn ệ ễ ỷ
CR sử dụng thu t toỏn nộn SPIHT v i b lọậ ớ ộ c wavelet Db7, nh nộn là Lena ả
256x256. Cỏc ảnh giải nộn tương ng ứ được minh họa trờn hỡnh 3.6.