1. Giới thiệu chung
3.2 Biến đổi Wavelet trong xử lý nén ảnh
Trong phần này sẽ giới thiệu biến đổi Wavelet cơ bản nhất, gọi là biến đổi Wavelet Haar và giải thích tại sao nó có thể được sử dụng để tạo ra các ảnh như 3 bức đầu tiên trong hình 3.1 để đưa tới hình cuối cùng, bức ảnh hoàn thiện của Rose Parks (hình ảnh này được tách ra từ một file ảnh dạng .gif tải về từ World Wide Web). Phần mềm Matlab có thểđược sử dụng để thực hiện tất cả các tính toán và tái tạo, hiển thị tất cả các bức ảnh theo dạng này [2].
Mỗi một bức ảnh số trong hình 3.1 được đại diện một cách toán học bởi một ma trận (một mảng) các số với kích thước 128x128. Giá trị của các số nằm trong dải từ 0 (đại diện cho màu đen) đến một số dương toàn bộ (đại diện cho màu trắng).
Bức ảnh cuối cùng sử dụng 32=25 độ bóng khác nhau của màu xám (gray) và do đó được gọi là ảnh 5-bit. Các số trong ma trận đặc biệt đã được sử dụng để biểu diễn ảnh này trong dải từ 0 đến 1984, trong 31 bước tăng (increment) của 64 ( những con số chính xác không quan trọng, chúng được chọn sao cho tránh các phần lẻ dư ra trong các phép tính toán sau đó).
61
Mỗi ma trận cung cấp tăng dần các ô vuông nhỏ trong đó đã được làm bóng một mức xám không đổi tùy thuộc vào giá trị số học của nó. Người ta gọi các ô vuông này là các điểm ảnh (hay còn gọi là các pixel); chúng có thể được nhận diện rõ hơn như các ô vuông riêng lẻ khi chúng ta nhìn bức ảnh ở mức phóng to hơn, ví dụ như trong hình 3.2a.
Lấy một ví dụ khác đủ chi tiết hơn, ví dụ như một ảnh 8-bit 256x256 pixel như bức hình Nelson Mandela trong hình 3.2b, chúng ta có thể nhận thấy hình ảnh (illusion) của một bức ảnh được làm bóng một cách liên tục.
Hình 3.2: Rosa Parks (1955) và Nelson Mandela (1990).
Các ma trận trong đó xác định các ảnh có tương ứng là 1282=16384 thành phần và 2562=65356 thành phần. Thực tế này cho thấy ngay các vấn đề về lưu trữ trung gian. Các ảnh màu thậm chí còn lớn hơn, mặc dù mỗi cảnh có thể được xử lý bằng cách giải nén trong 3 mảng “grayscale-like”, trong đó mỗi mảng tương ứng với một màu đỏ, xanh lá cây và xanh dương [2].
Người ta miêu tả một cơ chế cho việc biến đổi này ví dụ như những mảng lớn các số trong mảng mà có thểđược lưu trữ và truyền đi một cách hiệu quả. Sau đó, các ảnh gốc
62
(hay xấp xỉ tương đối tốt của các ảnh gốc) có thểđược khôi phục bằng máy tính một cách tương đối hiệu quả. Nói một cách đơn giản, đầu tiên có thể xem xét một ảnh 8x8=64 pixel như trong hình 3.3b, trong đó chỉ trích ra một vùng ảnh nhỏ xung quanh mũi từ bức hình 3.2. Vùng ảnh lấy ra được đánh dấu như trong hình 3.3a.
Hình 3.3. Rosa Parks – Trích dẫn một vùng ảnh nhỏ để nghiên cứu.
Hình ảnh này được biểu diễn bởi các dòng từ 60 đến 67 và các cột từ 105 đến 112 trong ma trận được xác định trong hình 3.2. Bây giờ ta có thể hiển thị và đặt tên cho ma trận con này là ma trận P: 576 704 1152 1280 1344 1472 1536 1536 704 640 1156 1088 1344 1408 1536 1600 768 832 1216 1472 1472 1536 1600 1600 832 832 960 1344 1536 1536 1600 1536 832 832 960 1216 1536 1600 1536 1536 960 896 896 1088 1600 1600 1600 1536 768 768 832 832 1280 1472 1 P= 600 1600 448 768 704 640 1280 1408 1600 1600 ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠
63
(Người ta đã đối lập trải căng ra (contrast stretched) trong hình 3.3b để đánh dấu các biến tinh tế trong số nhiều điểm thay đổi khác của hình, ví dụ như các điểm nhỏ nhất và lớn nhất của ma trận. Ởđây, đó là các điểm có giá trị 448 và 1600, tương ứng với màu đen và trắng, các điểm này không thể thấy được trong hình 3.2a).
Để mô tả làm thế nào biến đổi Wavelet sử dụng cho biến đổi này, chúng ta đầu tiên mô tả một phương pháp cho biến đổi các chuỗi dữ liệu được gọi là lấy trung bình (averaging) và tính vi phân (differencing).
Sau đó, chúng ta sẽ sử dụng kĩ thuật này cho biến đổi toàn bộ một ma trận sau: coi mỗi dòng như một chuỗi và tính trung bình và tính vi phân mỗi thành phần để đạt được một ma trận mới. Sau đó, lặp lại y hệt các bước này đối với các cột để đạt được một ma trận mới. Kết quả cuối cùng là một ma trận đã được biến đổi cả dòng và cột.
Lấy ví dụ là ma trận P ở trên, xem xét bảng sau đây. Trong bảng này, các dòng liên tiếp trong bảng chỉ ra các kết quả sau các bước biến đổi ban đầu, trung gian và cuối cùng:
576 704 1152 1280 1344 1472 1536 1536
640 1216 1408 1536 -64 -64 -64 0
928 1472 -288 -64 -64 -64 -64 0
1200 -272 -288 -64 -64 -64 -64 0
Bảng 3.1: Kết quả 3 bước biến đổi Wavelet tương ứng.
Có 3 bước trong quá trình biến đổi vì chuỗi dữ liệu có độ dài 8=23. Dòng đầu tiên của bảng là chuỗi dữ liệu gốc (lấy dòng đầu tiên của ma trận P), trong đó có thể coi như 4 cặp số. Bốn số đầu tiên trong dòng thứ 2 lần lượt là trung bình cộng của 4 cặp số trên. Tương tự, 2 sốđầu tiên của dòng thứ 3 lần lượt là trung bình cộng của 2 bộ 4 số dòng đầu tiên. Sốđầu tiên dòng thứ 4 là trung bình cộng của cả 8 số trong dòng đầu.
Các số còn lại (đã được tô đậm trong bảng) chính là thể hiện độ sai khác của cá giá trị trung bình này. Bốn giá trị in đậm trong dòng thứ 2 của bảng tương ứng là hiệu của 4 giá trị trung bình đầu tiên với 4 thành phần thứ nhất tương ứng trong mỗi cặp số; tức là
64
hiệu tương ứng của 640, 1216, 1408, 1536 với 576, 1152, 1344, 1536, cho các kết quả tương ứng là -64, -64, -64, 0. Các kết quả này được gọi là các hệ số chi tiết (detail
coefficients) và chúng được lặp lại ở các dòng tiếp theo trong bảng. Số thứ 3 và thứ 4 trong dòng 3 tương ứng là hiệu của 928, 1472 với 640, 1408 và cho kết quả tương ứng là - 288, -64. Hai hệ số chi tiết này cũng được lặp lại ở dòng cuối cùng của bảng. Cuối cùng, số thứ 2 trong dòng cuối cùng (-272) là hệ số chi tiết, chính là hiệu của 1200 và 928. Kết quả cuối cùng là một ma trận T 8x8 mới, gọi là ma trận biến đổi Wavelet Haar: 1212 -306 -146 -54 -24 -68 -40 4 30 36 -90 -2 8 -20 8 -4 -50 -10 -20 -24 0 73 -16 -16 82 38 -24 68 48 -64 32 8 8 8 -32 16 -48 -49 -16 16 20 20 -56 -16 -16 32 -16 -16 -8 8 -48 0 -16 -16 -16 -16 44 36 0 8 80 -16 -16 0 T ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠
Ma trận này có một giá trị đại diện cho giá trị trung bình tổng cộng, nằm ở góc trên, bên trái của ma trận, kèm theo đó là 63 hệ số chi tiết.
Điểm đáng lưu ý của biến đổi Wavelet là các vùng ít thay đổi trong dữ liệu gốc được thể hiện bằng các giá trị nhỏ hoặc gần như bằng 0 sau khi biến đổi Wavelet. Các giá trị 0 trong ma trận T là do có sự xuất hiện của các hệ số liền kề giống nhau trong ma trận gốc P. Các giá trị -2, -4 và 4 trong T là do có các hệ số liền kề gần giống nhau trong ma trận P.
Một ma trận có tỉ lệ các hệ số bằng 0 lớn được gọi là có độ dự trữ (sparse). Đối với rất nhiều ma trận ảnh, biến đổi Wavelet tương ứng của ảnh có độ dự trữ hơn nhiều các ảnh gốc. Rất nhiều ma trận dự trữ sẽ dễ dàng hơn trong việc lưu trữ và truyền tin so với ma trận gốc có cùng kích thước. Điều đó là do các ma trận dự trữ có thểđược đặc biệt hóa các vùng dữ liệu và vùng toàn giá trị 0. Ví dụ như sẽ dễ dàng hơn nhiều nếu mô tả một ma
65
trận 100x100 là “ma trận này có giá trị 7 tại vị trí (2,2) và (6,8), còn lại các vị trí khác có giá trị bằng 0” so với mô tả 10,000 hệ số của ma trận này.