Hiệu quả nén của EZW là một mức độ nào do việc sử dụng mã số học.
Said và Pearlman đã giới thiệu một biến thể của mã hóa hệ số Wavelet bởi xấp xỉ kế tiếp, mà thậm chí không có mã số học nhanh hơn so EZW (xem hình 3.11). Họ gọi nó là phương pháp mã hoá phân cấp theo vùng (SPIHT).
Cả hai EZW và SPIHT là mã hóa không gian phân cấp dựa trên kỹ thuật khai thác tương quan độ lớn trên dải phân tách này. Mỗi tiến trình tạo ra một chuỗi bit trung thực bằng mã hoá, lần lượt, mỗi mặt phẳng bit (bit plane) của một phân giải của một băng con lượng tử hoá nhị nguyên. Cả hai đều sử dụng một tiêu chuẩn ý nghĩa về bộ (sets) hệ số hiệu quả phân lập và mã hóa các hệ số độ cao. Tuy nhiên, những phần quan trọng trong quá trình mã hóa SPIHT là cách các tập con của các hệ số Wavelet được phân vùng và truyền các thông tin quan trọng.
Một trong những tính năng chính của hệ thống này trong truyền dữ liệu sắp thứ tự là nó được dựa trên thực tế là đường dẫn thực hiện một thuật toán được xác định bởi các kết quả của sự so sánh các điểm phân nhánh của nó. Vì vậy, nếu các bộ mã hóa và giải mã có cùng một thuật toán phân loại, sau đó là bộ giải mã có thể lặp lại con đường thực hiện của bộ mã hóa nếu nó nhận
được các kết quả của sự so sánh độ lớn. Các thông tin sắp thứ tự có thể được phục hồi từ đường dẫn thực hiện.
Thuật toán phân loại chia tập các hệ số Wavelet, {Ci, j}, vào tập con phân vùng Tm và thực hiện các bài kiểm định độ lớn:
{ } 2 ?
max ,
) , (, ) (
n j i T j i j
i C
m
≥
∈ (3.5)
Nếu một bộ giải mã không nhận được câu trả lời (các tập con là không đáng kể), sau đó biết rằng tất cả các hệ số trong Tm là không đáng kể. Nếu câu trả lời là có (các tập con là đáng kể), sau đó là một quy luật nhất định được chia sẻ bởi các bộ mã hóa và giải mã được sử dụng để phân vùng Tm vào tập con mới Tm, l và tiêu chuẩn ý nghĩa sau đó được áp dụng cho các tập con mới.
Quá trình này tiếp tục cho đến khi thiết lập bộ phận kiểm tra độ lớn được thực hiện để tất cả các tập con quan trọng đơn phối hợp để xác định mỗi hệ số đáng kể.
Để giảm bớt số lượng so sánh độ lớn (bit thông báo) đặt một quy tắc phân vùng sử dụng một sắp thứ tự kỳ vọng (dự kiến) trong hệ thống phân cấp được định nghĩa bởi các băng con kim tự tháp là xác định (tương tự như hình 3.3, sử dụng mã hóa cây số không). Trong phần 3.2.2, ta đã thấy làm thế nào trong số các ảnh con của những điểm cùng hướng có thể được khai thác để tạo ra một cây định hướng không gian (spatial orientation tree - SOT). Mục tiêu tạo phân vùng mới như vậy là tập con dự kiến sẽ chứa không đáng kể một số lượng lớn các phần tử và tập con dự kiến sẽ chứa chỉ có một phần tử quan trọng.
Để làm rõ mối quan hệ giữa so sánh độ lớn bit thông báo, các hàm sau đây được sử dụng:
{ }
lại còn 0
2 max
nÕu 1
)
( ,
) , (, ) (
=
≥
=
∈
n j
i T j i j
n T i C
S
(3.6) cho biết ý nghĩa của một tập hợp các tọa độ T. Để đơn giản hóa các ký hiệu của bộ đơn điểm ảnh, Sn ({(i, j)}) được biểu diễn bởi Sn (i, j).
Để xem cách SPHIT có thể được thực hiện, ta hãy giả định O(i, j) để biểu diễn cho một tập hợp các tọa độ của tất cả các kết quả của nút (i, j). Ví dụ, ngoại trừ các cấp độ kim tự tháp cao nhất và thấp nhất, O(i, j) được xác định trong điều kiện kết quả của nó như là:
{(2 ,2 ),(2,2 1),(2 ,12 ),(2 ,12 1)}
) ,
(i j = i j i j+ i+ j i+ j+
O (3.7)
Ta cũng xác định D(i, j) như là một tập hợp các tọa độ của tất cả các hậu duệ của các nút (i, j), và H, một tập hợp các tọa độ của tất cả các gốc cây định hướng không gian (các nút kim tự tháp ở mức độ cao nhất). Cuối cùng, L(i, j) được định nghĩa là:
) , ( ) , ( ) ,
(i j D i j O i j
L = − (3.8)
O(i, j), D(i, j) và L(i, j) trong một cây định hướng không gian được thể hiện trong hình 3.4.
Hình 3.4. Cây không gian định hướng và thiết lập phân vùng trong SPIHT Với việc sử dụng các bộ phận của cây hướng không gian là tập con trong các thuật toán phân vùng, phân loại, thiết lập các quy tắc phân vùng được định nghĩa như sau:
1. Các phân vùng ban đầu được thành lập với sự tập hợp {(i, j)} và D(i,j), cho tất cả (i, j) ∈ H.
2. Nếu D(i, j) là rất lớn, sau đó nó được phân chia thành L(i, j) cộng với bốn bộ phần tử đơn với (k, l) ∈ O(i, j).
3. Nếu L(i, j) là rất lớn, sau đó nó được phân chia thành bốn bộ D(k, l), với (k, l) ∈ O(i, j).
4. Mỗi một trong bốn bộ bây giờ có định dạng của các bộ gốc và phân vùng, cùng có thể được sử dụng đệ quy.
* Thuật toán mã hoá (Coding algorithm).
Vì thứ tự mà các tập con được kiểm tra cho ý nghĩa rất quan trọng trong việc thực hiện ý nghĩa thiết thực của thông tin được lưu trữ trong ba danh sách thứ tự, được gọi là danh sách các bộ không đáng kể (list of insignificant sets - LIS), danh sách các điểm ảnh không đáng kể (list of insignificant pixels - LIP) và danh sách các điểm ảnh quan trọng (list of significant pixels - LSP). Trong tất cả các danh sách mỗi mục nhập (đầu vào) được xác định bởi một tọa độ (i, j), mà trong LIP và LSP biểu diễn cho điểm ảnh riêng lẻ, và LIS biểu diễn cho một trong hai tập D(i, j) hoặc L(i, j). Để phân biệt giữa chúng, người ta nói rằng một mục nhập (đầu vào) LIS là loại A nếu nó biểu diễn cho D(i, j), và là loại B nếu nó biểu diễn cho L(i, j).
Trong suốt quá trình phân loại, các điểm ảnh trong LIP, là không đáng kể trong bước trước, được kiểm tra, và chúng trở nên quan trọng được chuyển tới các LSP. Tương tự như vậy, bộ (sets) được đánh giá tuần tự theo thứ tự LIS, và khi bộ được tìm thấy là quan trọng đó là loại bỏ khỏi danh sách và phân vùng. Các tập con mới với nhiều hơn một yếu tố được thêm vào lại cho LIS và bộ phối hợp đơn được thêm vào cuối của LIP hay LSP phụ thuộc dù là không đáng kể hoặc đáng kể, tương ứng. LSP chứa tọa độ của các điểm ảnh được thăm trong bước làm mịn.
Vì vậy thuật toán có thể được tóm tắt như:
1. Khởi tạo: Khởi tạo đơn vị ước lượng, n, n = ⌊log2(max(i, j) {|Ci, j|})⌋. Thiết lập LSP như là một danh sách rỗng, và thêm các tọa độ (i, j) ∈ H vào LIP, và chỉ có những hậu thế cũng tới LIS, kiểu đầu vào A.
2. Bước phân loại (Sorting pass):
2.1. for each entry (i, j) in the LIP do:
2.1.1. output Sn(i, j);
2.1.2. if Sn(i, j)=1 then move (i, j) to the LSP and output the sign of Ci,j; 2.2. for each entry (i, j) in the LIS do:
2.2.1. if the entry is of type A then 2.2.1.1. output Sn(D(i, j));
2.2.1.2. if Sn(D(i, j)) = 1 then
2.2.1.2.1. for each (k, l) ∈ O(i, j) do:
2.2.1.2.1.1. output Sn(k, l);
2.2.1.2.1.2. if Sn(k, l) = 1, then add (k, l) to the LSP and output the sign of Ck,l;
2.2.1.2.1.3. if Sn(k, l) = 0 then add (k, l) to the end of the LIP;
2.2.1.2.2. if L(i, j)≠Φ then move (i, j) to the end of the LIS, as an entry of type B, and go to step 2.2.2;
otherwise, remove entry (i, j) from the LIS;
2.2.2. if the entry is of type B then 2.2.2.1. output Sn(L(i, j));
2.2.2.2. if Sn(L(i, j)) = 1 then
2.2.2.2.1. add each (k, l) ∈ O((i, j) to the end of the LIS as an entry of type A;
2.2.2.2.2. remove (i, j) from the LIS.
3. Bước làm mịn (Refinement pass): for each entry (i, j) in the LSP, ngoại trừ những thứ có trong bước phân loại cuối (tức là với cùng một n), đầu ra bit thứ n quan trọng nhất của | Ci, j |.
4. Bước lượng tử hoá cập nhật (Quantisation step update): giảm n bằng 1 và đi đến bước 2.
Một trong những đặc tính quan trọng của thuật toán là các mục thêm vào cuối của LIS ở trên được đánh giá trước khi kết thúc bước phân loại. Vì vậy, khi nó được nói cho từng mục trong LIS, nó có nghĩa là chúng đang được thêm vào cuối cùng của nó. Cũng tương tự như EZW, tỷ lệ (rate) có thể được kiểm soát chính xác bởi truyền thông tin qua theo dạng bit đơn. Bộ mã hóa có thể ước tính giảm biến dạng luỹ tiến (progressive distortion) và dừng lại ở một giá trị biến dạng mong muốn.
Lưu ý rằng, trong thuật toán này, mã hóa tất cả các đầu ra điều kiện phân nhánh dựa vào kết quả của các hệ số Wavelet. Vì vậy, để có được thuật toán giải mã mong muốn, mà con đường thực hiện của bộ mã hóa như các loại hệ số đáng kể (quan trọng) (significant coefficients), chúng tôi chỉ thay thế đơn giản thông tin trong khối (word) output với input. Các thông tin thứ tự bị thu hồi khi phối hợp của các hệ số quan trọng được thêm vào cuối của LSP.
Nhưng lưu ý rằng bất cứ khi nào các bộ giải mã dữ liệu đầu vào, ba danh sách kiểm soát của nó (LIS, LIP và LSP) là giống hệt nhau cho những người sử dụng bởi các bộ mã hóa tại thời điểm kết quả đầu ra dữ liệu đó, có nghĩa là bộ giải mã thực sự thu hồi các lệnh từ đường dẫn thực hiện .
Một nhiệm vụ khác được thực hiện bởi bộ giải mã này là để cập nhật những hình ảnh được khôi phục. Đối với các giá trị của n khi một phối hợp được chuyển đến các LSP, nó được biết rằng 2n ≤ | Ci, j | <2n +1. Vì vậy, bộ giải mã sử dụng thông tin đó, thêm bit dấu cộng ở đầu vào chỉ sau khi chèn vào LSP, để thiết lập hệ số khôi phục (reconstructed coefficients) Ĉi, j = ±1.5 ×2n.
Tương tự như vậy, trong bước làm mịn, giải mã cộng hoặc trừ 2n-1 đến Ĉi, j
khi các bit đầu vào của biểu diễn nhị phân của | Ci, j |. Theo cách này, biến dạng sự giảm dần trong cả hai bước phân loại và làm mịn.
Cuối cùng nói đến một số khác biệt giữa EZW và SPIHT. Sự khác biệt đầu tiên là chúng sử dụng một cây hướng không gian (spatial orientation tree- SOT) hơi khác nhau. Trong EZW, mỗi nút gốc trong đỉnh băng tần LL có ba con, ở mỗi băng con tần số cao ở cùng cấp độ phân giải và tất cả các hệ số khác có con trong phân giải băng con thấp dưới của cùng hướng đó. Tuy nhiên, trong SPIHT, trong một nhóm các nút 2 x 2 gốc trong đỉnh băng tần LL, nút trái không có hậu duệ và ba nút khác có bốn con trong từng băng tần cao của hướng tương ứng. Vì vậy SPIHT sử dụng cây với các yếu tố thêm cho mỗi cây ít hơn trong EZW. Một khác biệt quan trọng là ở thiết lập quy tắc phân vùng của chúng. SPIHT có bước phân vùng khác trong đó một hậu duệ (loại A) được chia thành bốn hệ số con và một hậu duệ quan trọng (grand) (loại B). EZW rõ ràng thực hiện tìm kiếm rộng đầu tiên của cây thứ bậc, di chuyển từ băng con thô đến băng con mịn. Mặc dù nó không hoàn hảo, SPIHT thực hiện một tìm kiếm thô khoảng rộng đầu tiên là tốt. Sau khi phân vùng một hậu duệ quan trọng, SPIHT thiết đạt bốn bộ hậu duệ mới vào cuối của LIS. Đây là phụ thêm vào LIS rằng kết quả trong xấp xỉ khoảng chiều rộng đầu tiên giao nhau.