CHƯƠNG 1: CÁC CÔNG TRÌNH NGHIÊN CỨU VỀ NÉN ẢNH TRONG MIỀN CONTOURLET 1. Tổng quan về nén ảnh trong miền Contourlet Nén ảnh được chia thành hai loại chính là nén ảnh có mất dữ liệu và nén ảnh không mất dữ liệu. Ở nén ảnh không mất dữ liệu thì hình ảnh ban đầu có thể được khôi phục một cách chính xác mà không có bất kỳ sự mất mát nào, nhưng nó lại có nhược điểm là tỉ lệ nén thấp. Còn nén ảnh có mất dữ liệu thì ngược lại là có tỉ lệ nén cao nhưng cũng có một số lỗi.Vì vậy những thuật toán của nén ảnh có mất dữ liệu cố gắng loại bỏ những thông tin không quan trọng trong hình ảnh, những thông tin này được loại bỏ thường dựa vào khả năng nhìn của mắt người.
Đối với nén ảnh có mất dữ liệu, hình ảnh được phân tích bằng cách sử dụng những biến đổi khác nhau, mục đích là để biểu diễn hình ảnh ban đầu theo một cách hiệu quả hơn. Biến đổi Contourlet là một trong những biến đổi có định hướng (directional) phổ biến nhất giúp biểu diễn tốt những đường cong trơn. Mã hóa hình ảnh với tốc độ bit thấp mà sử dụng biến đổi Contourlet sẽ giúp cho hình ảnh giữ lại được những đặc điểm phù hợp với mắt người hơn Wavelet. Tuy nhiên, biến đổi Contourlet lại là một biến đổi dư thừa với cận trên là 4/3.
Vì vậy để giảm dư thừa, người ta đã đề xuất ra biến đổi Wavelet-based Contourlet (WBCT) [1] với sự kết hợp của các băng con Wavelet và dàn lọc định hướng DFB, điều này giúp loại bỏ được sự dư thừa nhưng vẫn giữ được khả năng định hướng của biến đổi Contourlet. Tuy nhiên, chính vì có sự kết hợp với biến đổi Wavelet nên biến đổi WBCT này cũng có nhược điểm của Wavelet, đó là sự chồng phổ khi giảm mẫu (downsampling) ở những subband có tần số cao.Vì thế, hình ảnh khôi phục lại sau khi qua biến đổi WBCT này có thể bị méo nhiều hơn so với biến đổi Contoutlet ở những vùng hình ảnh đường viền (contour) và hoa văn (texture) [7]. Ngoài ra chúng ta có thể sử dụng cách khác để loại bỏ sự dư thừa của Contourlet, đó là lọc bớt các mẫu không quan trọng đi [3] bằng cách sử dụng một trong ba phương pháp, đó là phương pháp ngưỡng lặp lại (iterative thresholding method), phương pháp theo đuổi tham lam (greedy pursuit method) và phương pháp dựa trên chương trình tuyến tính (linear programming based method). Trong ba phương pháp này thì lấy ngưỡng lặp lại là tốt nhất cả về độ phức tạp tính toán và khả năng loại bỏ các mẫu không quan trọng.
Contourlet tuy tốt về mặt xấp xỉ không tuyến tính, tức là sử dụng những hệ số quan trọng nhất để khôi phục lại hình ảnh; nhưng chính khả năng xấp xỉ không tuyến tính này lại gây ra pseudo-Gibbs artifacts [4]. Về giải thuật nén ảnh trong miền Contourlet, hiện nay có nhiều công trình nghiên cứu về vấn đề này.Ở công trình nghiên cứu [5], các tác giả đề xuất một giải thuật nén ảnh trong miền Contourlet dành riêng cho ảnh siêu âm trong y học (medical ultrasound image). Các bước nén ảnh được thực hiện như sau: (i) ảnh siêu âm sẽ được biến đổi Contourlet, (ii) các hệ số Contourlet sẽ được lọc bớt đi bằng cách so sánh với một giá trị ngưỡng, để tối thiểu hóa việc mất thông tin quan trọng thì việc chọn ngưỡng chính là giá trị của hệ số Contourlet xuất hiện nhiều nhất, (iii) lượng tử hóa các hệ số Contourlet đã được lọc bớt đó theo kiểu scalar quantization, tức là mỗi hệ số Contourlet sẽ được lượng tử hóa riêng rẽ với nhau, và (iv) nén các hệ số Contourlet đã được lượng tử hóa bằng thuật toán Huffman. Ưu điểm lớn nhất của phương pháp được đề xuất này với trọng tâm là sử dụng một ngưỡng lọc bớt các hệ số Contourlet giúp giảm được nhiễu lốm đốm trên ảnh siêu âm vừa đảm bảo được chất lượng nén.
Tuy nhiên, khi tiến hành thí nghiệm, tác giả so sánh phương pháp đề xuất trong miền Contourlet với phương pháp nén bằng thuật toán SPIHT trong miền Wavelet, tác giả sử dụng hình ảnh HVTH: Phạm Thị Huế 1 Thiết kế lõi IP nén ảnh sử dụng biến đổi Contourlet GVHD: TS. Trương Quang Vinh siêu âm chứa nhiều đường cong trơn mà bản thân nó đã phù hợp với biến đổi Contourlet hơn là biến đổi Wavelet nên việc tăng PSNR của phương pháp đề xuất trong miền Contourlet hơn so với thuật toán SPIHT trong miền Wavelet cũng chưa thể kết luận ngay được là phương pháp đề xuất này tốt hơn thuật toán SPIHT trong điều kiện hình ảnh không bị nhiễu lốm đốm. Hơn nữa, tỉ lệ nén ở đây chỉ khoảng 4-8 lần, tác giả chưa đánh giá được tại những tỉ lệ nén cao hơn thì chất lượng nén của phương pháp đề xuất sẽ như thế nào. Ở công trình nghiên cứu [4], các tác giả thực hiện nén ảnh trong miền Contourlet.
Phương pháp nén ảnh được thực hiện cơ bản dựa trên việc thay đổi các hệ số Contourlet sao cho entropy của các hệ số là nhỏ nhất. Các bước nén ảnh được thực hiện như sau: (i) biến đổi Contourlet ảnh đầu vào, (ii) xây dựng histogram H của các hệ số Contourlet đã được làm tròn xuống thành số nguyên, (iii) histogram H của các hệ số này sẽ được biến đổi thành histogram H’ khác bằng cách sử dụng thuật toán Viterbi, mục đích là để entropy của các hệ số là nhỏ nhất, (iv) các hệ số đã được biến đổi thành histogram H’ này sẽ được chia thành hai phần, đó là (iv- 1) các hệ số có cùng giá trị mà có số lượng nhiều nhất sẽ được lưu lại vị trí bằng một mask, mask này sẽ được nén bằng Run Length Encoding và tiếp theo là adaptive arimetic coding; và (iv-2) các hệ số còn lại được nén bằng arithmetic coding, (v) gộp lại các giá trị của các hệ số có histogram lớn nhất và các dữ liệu đã được nén. Ưu điểm lớn nhất của phương pháp này là từ việc thay đổi histogram của các hệ số sẽ giúp giữ lại những chi tiết nhỏ trong hình ảnh, mặt khác cũng khắc phục được hạn chế của thuật nén ảnh dựa trên việc xấp xỉ không tuyến tính (non-linear approximation), đó là hiệu ứng pseudo-Gibbs artifacts ở những chi tiết mà có tần số thấp và vùng smooth của hình ảnh. Tuy nhiên, để đạt được PSNR cao hơn 1,31 dB ở bit- rate = 0,25 bpp thì tác giả phải dùng đến biến đổi Contourlet 6 tầng, với số hướng tăng lên gấp đôi ở mỗi tầng tinh hơn (tức là số tầng cao hơn).
Với số tầng nhiều như trên thì sẽ tốn thêm nhiều tài nguyên, đặc biệt là tốn nhiều bộ nhớ khi xây dựng trên phần cứng. Ở công trình nghiên cứu [2],sau khi loại bỏ một số mẫu Contourlet dư thừa bằng phương pháp lấy ngưỡng lặp lại thì các hệ số trong mỗi subband sẽ được mã hóa bằng bộ mã hóa TCE. Trong 3 loại phụ thuộc giữa các hệ số biến đổi Contourlet (sự phụ thuộc giữa các subband, bên trong mỗi subband và các scale với nhau) thì sự phụ thuộc giữa các hệ số bên trong mỗi subband là lớn nhất, do đó việc dùng bộ mã hóa TCE để mã hóa mỗi subband sẽ giúp tăng tỉ lệ nén. Những thuật toán nén ảnh ở trên không thể tạo ra được chuỗi bit nhúng (embedded bit stream), tức là chuỗi bit mã hóa có thể được cắt ở bất kỳ bit nào mà vẫn có khả năng cho chất lượng ảnh khôi phục là tốt nhất có thể.
Trong khi hiện nay, nhiều loại thiết bị đầu cuối (terminal) và các node ở những mạng không đồng nhất (heterogeneous network) lại khác nhau về bộ xử lý, bộ nhớ, khả năng hiển thị, phân giải,…; cho nên chất lượng SNR của chuỗi bit mã hóa được cần cũng là khác nhau. Muốn tùy chọn khả năng SNR thì ta có thể thực hiện bằng cách truyền lần lượt (progressive transmission) và nhúng thông tin (embedded information) [7]. Điều này dẫn đến việc phải tính toán và phân vùng những thông tin quan trọng theo kiểu phân cấp, tức là thông tin nào càng quan trọng thì càng nên ở cấp cao hơn. Một số thuật toán thực hiện nén ảnh kiểu này là EZW [8], SPIHT [9], EBCOT [10].Cần chú ý là những thuật toán này đều được xây dựng dựa trên biến đổi Wavelet.
Như ta đã biết, biến đổi Contourlet và biến đổi Wavelet có những điểm tương đồng nhất định, chúng đều là biến đổi tạo ra những subband phân cấp.Vì vậy, một số thuật toán nén ảnh sử dụng ở miền Wavelet cũng có khả năng sử dụng được ở miền Contourlet với một số điều chỉnh nhỏ cho phù hợp hơn với Contourlet. Chính vì vậy, hiện nay có nhiều công trình nghiên cứu trên thế giới về nén ảnh trong miền Contourlet đi theo xu hướng điều chỉnh thuật toán nén HVTH: Phạm Thị Huế 2 Thiết kế lõi IP nén ảnh sử dụng biến đổi Contourlet GVHD: TS. Trương Quang Vinh ảnh trong Wavelet. Trong các thuật toán này thì SPIHT được lựa chọn khá nhiều do nó là thuật toán cải tiến của EZW và có độ phức tạp tính toán nhỏ hơn EBCOT.Một số công trình tiêu biểu như [3], [7] và [11].
SPIHT là một thuật toán nén ảnh nhanh và hiệu quả dựa trên phương pháp phân vùng trên cây phân lớp (Set Partitioning In Hierarchical Trees, viết tắt là SPIHT). Nó chú trọng vào quá trình truyền các hệ số đi, các hệ số quan trọng sẽ được truyền đi trước (mức độ quan trọng dựa vào giá trị các hệ số, hệ số nào có giá trị càng lớn thì càng quan trọng).Nhờ vậy mà dù chỉ có một số lượng ít các hệ số ta vẫn có thể khôi phục lại được hình ảnh. Để việc truyền các hệ số quan trọng đi trước được thuận lợi thì các hệ số được sắp xếp theo biên độ. Các hệ số này sẽ được phân vùng bằng cách sử dụng một cây được gọi là spatial orientation trees để giữ các hệ số không quan trọng lại cùng nhau trong các tập phụ.
Thuật toán SPIHT dễ dàng thực hiện trên phần mềm nhưng lại không phù hợp khi thực thi phần cứng [12] do phải sử dụng nhiều danh sách (list), điều này gây ra hậu quả là phải phụ thuộc vào biến và dữ liệu, đòi hỏi nhiều bộ nhớ, lại cần phải quản lý bộ nhớ như danh sách các node được thêm vào, di chuyển hay loại bỏ đi. Mặt khác, SPIHT cũng có nhiều toán tử lặp trong mỗi một lần quét, đó là do các tập hợp cần phải được kiểm tra xem có phải là tập hợp chứa các pixel quan trọng hay không.Khi giá trị ngưỡng thay đổi thì việc kiểm tra cũng cần phải được tiến hành lại. Để khắc phục nhược điểm của SPIHT, Frederick W. Wheder và William A.