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
Trang 1-o0o -
PHẠM THỊ HUẾ
THIẾT KẾ LÕI IP NÉN ẢNH SỬ DỤNG
BIẾN ĐỔI CONTOURLET
Mã số: 60 52 70
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, THÁNG 07 NĂM 2015
Trang 2Cán bộ hướng dẫn khoa học:
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 1:
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 2:
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp.HCM ngày
tháng năm
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ) 1
2
3
4
5
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA ĐIỆN-ĐIỆN TỬ
Trang 3-
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: PHẠM THỊ HUẾ MSHV: 11148001
Ngày, tháng, năm sinh: 28/03/1989 Nơi sinh: Nam Định
Chuyên ngành: Kỹ Thuật Điện Tử Mã số: 60 52 70
I TÊN ĐỀ TÀI: THIẾT KẾ LÕI IP NÉN ẢNH SỬ DỤNG BIẾN ĐỔI CONTOURLET
II NHIỆM VỤ VÀ NỘI DUNG:
Nhiệm vụ: xây dựng lõi IP nén ảnh sử dụng biến đổi Contourlet và thuật toán SPIHT cải tiến với tần số hoạt động ít nhất 50 MHz
Nội dung: cải tiến thuật toán nén ảnh SPIHT, mô phỏng đánh giá giải thuật trên Matlab, thiết
kế phần cứng IP nén ảnh, mô phỏng trên ModelSim và thẩm định trên FPGA
III NGÀY GIAO NHIỆM VỤ: 07/07/2014
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 24/06/2015
V CÁN BỘ HƯỚNG DẪN: TS Trương Quang Vinh
(Họ tên và chữ ký)
TRƯỞNG KHOA ĐIỆN ĐIỆN TỬ
(Họ tên và chữ ký)
Trang 4HVTH: Phạm Thị Huế i
LỜI CẢM ƠN
Tôi xin chân thành cám ơn quý thầy cô trường Đại Học Bách Khoa TP Hồ Chí Minh, những người đã truyền đạt cho tôi những kiến thức và kinh nghiệm quý báu trong suốt khóa học cao học tại trường
Tôi xin được gửi lời cám ơn sâu sắc đến thầy – TS.Trương Quang Vinh Thầy đã hướng đầy tận tình, tạo cho tôi cách tư duy và làm việc khoa học, và hướng cho tôi đến các đề tài khoa học mới mẽ
Tôi xin cám ơn các bạn học viên, sinh viên làm việc tại phòng Lab 116 B1 đã nhiệt tình giúp
đỡ tôi trong suốt quá trình thực hiện luận văn
Tôi xin gửi lời cảm ơn đến gia đình, bạn bè đã luôn động viên và ủng hộ, giúp tôi có thêm động lực để hoàn thành đề tài
TP Hồ Chí Minh, 25/06/2015
Học viên Phạm Thị Huế
Trang 5HVTH: Phạm Thị Huế ii
TÓM TẮT
Nén ảnh đóng vai trò rất quan trọng trong công nghệ thông tin dùng để lưu trữ các hình ảnh và video Thành quả của việc nén ảnh là giảm số bit cần thiết để biểu diễn một hình ảnh nhưng vẫn đáp ứng được chất lượng hình ảnh
Phương pháp nén ảnh truyền thống dựa trên biến đổi DCT, trong định dạng ảnh JPEG Phương pháp cải tiến hơn sử dụng biến đổi Wavelet, được sử dụng trong chuẩn JPEG 2000 Và gần đây, các nhà nghiên cứu ứng dụng biến đổi Contourlet, một phép biến đổi cải tiến hơn Wavelet, vào giải thuật nén ảnh Phương pháp dùng biến đổi Contourlet cho phép tỉ lệ nén ảnh tốt hơn, nhưng vẫn giữ được chất lượng ảnh, do phép biến đổi Contourlet có thể thông số hóa được các dạng hình học của ảnh tốt hơn Wavelet Các nghiên cứu về nén ảnh sử dụng Contourlet đều thực hiện trên phần mềm máy tính mà chưa có nghiên cứu hiện thực trên phần cứng như vi mạch hoặc FPGA Biến đổi Contourlet có độ phức tạp cao, do đó ứng dụng nén ảnh sử dụng Contourlet sẽ có thời gian thực thi lâu, đặc biệt với ảnh lớn
Đề tài này đặt ra mục tiêu nghiên cứu giải thuật nén ảnh trong miền Contourlet và hiện thực giải thuật bằng cấu trúc phần cứng trên lõi IP Lõi IP sẽ được mô tả bằng ngôn ngữ Verilog và kiểm tra trên FPGA Sản phẩm của đề tài có thể được ứng dụng trong hệ thống trên chip (SoC – System on Chip) dành cho hệ thống xử lý ảnh và video
Trang 6HVTH: Phạm Thị Huế iii
ABSTRACT
Image compression is very important in information technology for image and video storage The goal of image compression is to reduce necessary bit to express an image while the qualityof image is adapted to user demand
The conventional methods for image compression are based on DCT transform which is used
on JPEG format The improved methods are based on Wavetlet transform which is used in JPEG 2000 format Recently, many researches apply Contourlet transform, a new image transform which is more advanced than Wavelet transform, into image compression The Contoulet-based image compression methods provide better compression ratio with better image quality, because Contourlet transform can represents image better in contour and texture regions However, Contourlet transform has been implemented by software but not by hardware The Contourlet transform has high computational complexity, and thus Contourlet-based image compression algorithm will have long processing time, especially for large images
This project aims to research image compression method in Contourlet domain and implement image compression algorithm by hardware IP core The proposed IP core will be described in Verilog code and tested on FPGA The product of the project can be applied in systems on chip for image and video processing
Trang 7HVTH: Phạm Thị Huế iv
LỜI CAM ĐOAN
Tôi cam đoan các kết quả đề tài thực hiện chưa từng công bố trong bất kỳ công trình khoa học trước đây
Trang 8HVTH: Phạm Thị Huế v
MỤC LỤC
CHƯƠNG 1: CÁC CÔNG TRÌNH NGHIÊN CỨU VỀ NÉN ẢNH TRONG MIỀN
CONTOURLET 1
1.1 Tổng quan về nén ảnh trong miền Contourlet 1
1.2 Chi tiết một số công trình trên thế giới về nén ảnh bằng SPIHT trong miền Wavelet và Contourlet 3
1.2.1 Nén ảnh bằng SPIHT trong miền Wavelet [9] 3
1.2.2 Nén ảnh bằng SPIHT trong miền Contourlet 4
1.3 Biến đổi Contourlet 10
1.3.1 Phân tích Laplacian Pyramid 11
1.3.2 Phân tích DFB 12
1.4 Giải thuật nén ảnh SPIHT 14
1.4.1 Tổng quan về giải thuật nén ảnh SPIHT 14
1.4.2 Cách thực hiện thuật toán SPIHT 16
1.4.3 Ví dụ về cách thực hiện thuật toán SPIHT trong miền Wavelet 18
1.4.4 Ví dụ về cách thực hiện SPIHT trong miền Contourlet 25
CHƯƠNG 2: ĐỀ XUẤT CẢI TIẾN GIẢI THUẬT NÉN ẢNH SPIHT TRONG MIỀN CONTOURLET 33
2.1 Phân tích việc phân phối của các hệ số của các subband ở mỗi tầng của biến đổi Contourlet 33
2.2 Giải thuật đề nghị 36
2.3 Kết quả mô phỏng giải thuật 39
CHƯƠNG 3: XÂY DỰNG LÕI IP CHO PHẦN CỨNG NÉN ẢNH 44
3.1 Mô tả chung 44
3.2 Khối sink_fifo 45
3.3 Khối spiht_core 46
3.3.1 Khối raster2block 46
3.3.2 Khối Contourlet_spiht 47
3.3.3 Khối block2raster 53
3.4 Khối control_data 53
3.5 Khối source_fifo 53
CHƯƠNG 4: THẨM TRA THIẾT KẾ LÕI IP 55
4.1 Kết quả mô phỏng trên modelsim 55
4.2 Thử nghiệm thiết kế trên kit FPGA DE2 115 59
4.2.1 Mô tả hệ thống 59
Trang 9HVTH: Phạm Thị Huế vi
4.2.2 Phương pháp thử nghiệm đánh giá 65
4.2.3 Kết quả thực nghiệm 65
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 67
5.1 Kết luận 67
5.2 Hướng phát triển 67
TÀI LIỆU THAM KHẢO 69
PHỤ LỤC 70
Trang 10
HVTH: Phạm Thị Huế vii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
bpp : bit per pixel
CT : Contourlet Transform
DFB_L1 : Direction Filter Bank Decomposition Level 1
DFB_L2 : Direction Filter Bank Decomposition Level 2
DFBR_L1 : Direction Filter Bank Reconstruction Level 1
DFBR_L2 : Direction Filter Bank Reconstruction Level 2
DFBREC : Direction Filter Bank Reconstruction
DFBDEC : Direction Filter Bank Decomposition
ICT : Inverse Contourlet Transform
LP : Laplacian Pyramid
LPR : Laplacian Pyramid Reconstruction
LP_L1 : Laplacian Pyramid Decomposition Level 1
LP_L2 : Laplacian Pyramid Decomposition Level 2
LPR_L1 : Laplacian Pyramid Reconstruction Level 1
LPR_L2 : Laplacian Pyramid Reconstruction Level 2
PSNR : Peak Signal to Noise Ratio
QFBDEC : Quincunx Filter Bank Decomposition
QFBREC : Quincunx Filter Bank Reconstruction
SPIHT : Set Partitioning In Hierarchical Trees
WBCT :Wavelet-based Contourlet
Trang 11HVTH: Phạm Thị Huế viii
DANH MỤC CÁC HÌNH VẼ
Hình 1: Các bước thực hiện nén ảnh trong miền Wavelet [9] 4
Hình 2: Các bước thực hiện nén ảnh ở [3] 5
Hình 3: Cấu trúc cây Spatial Orientation Tree trong miền Contourlet [3] 6
Hình 4: Các bước thực hiện nén ảnh ở [7] 8
Hình 5: Các bước thực hiện nén ảnh ở [11] 10
Hình 6: Bộ lọc băng Contourlet 11
Hình 7: Phân tích Laplacian Pyramid 11
Hình 8: Hai tầng đầu tiên của DFB 12
Hình 9: Phân tích DFB 4 tầng 13
Hình 10: Ví dụ về 2 toán tử Q0 và Q1 13
Hình 11: Ví dụ về 4 toán tử R0, R1, R2 và R3 14
Hình 12: Ý tưởng của thuật toán nén ảnh SPIHT 16
Hình 13: Cách thực hiện thuật toán SPIHT 18
Hình 14: Sự phân phối hệ số Contourlet ở các subbandcủa ảnh Goldhill 33
Hình 15: Sự phân phối các hệ số Contourlet ở các subband của ảnh Cameraman 34
Hình 16: Sự phân phối các hệ số Contourlet ở các subband của ảnh Barbara 34
Hình 17: Sự phân phối các hệ số Contourlet ở các subband của ảnh Lena 34
Hình 18: Sự phân phối các hệ số Contourlet ở các subband của ảnh Baboon 35
Hình 19: Sự phân phối các hệ số Contourlet ở các subband của ảnh Mandrill 35
Hình 20: Sự phân phối các hệ số Contourlet ở các subband của ảnh Pepper 35
Hình 21: Sự phân phối các hệ số Contourlet ở các subband của ảnh Pirate 36
Hình 22: Sơ đồ chung của phương pháp nén ảnh đề xuất 36
Hình 23: Biến đổi Contourlet ảnh đầu vào 37
Hình 24:Xây dựng các subband lowpass ảo 37
Trang 12HVTH: Phạm Thị Huế ix
Hình 25: Cấu trúc cây Spatial Orientation Tree đề xuất 38
Hình 26Ảnh Barbara được nén ở bit-rate=0.25 bpp 40
Hình 27 Ảnh Goldhill được nén ở bit-rate = 0.25 bpp 41
Hình 28 Ảnh Mandrill được nén ở bit-rate = 0.25 bpp 41
Hình 29 Ảnh Peppers được nén ở bit-rate = 0.25 bpp 42
Hình 30 Ảnh Lena được nén ở bit-rate = 0.25 bpp 42
Hình 31: Sơ đồ tín hiệu vào ra của IP nén ảnh SPIHT 44
Hình 32: Cấu trúc khối spiht_ip 44
Hình 33: Sơ đồ tín hiệu vào ra khối sink_fifo 45
Hình 34: Sơ đồ khối chi tiết khối sink_fifo 45
Hình 35: Sơ đồ tín hiệu vào ra của khối spiht_core 46
Hình 36: Sơ đồ tín hiệu vào ra khối raster2block 46
Hình 37: Sơ đồ khối Contourlet_spiht 47
Hình 38:Sơ đồ khối của khối Contourlet Transform 48
Hình 39:Sơ đồ khối của LP_L1 48
Hình 40:Sơ đồ khối của LP_L2 48
Hình 41:Sơ đồ khối của DFB_L1 49
Hình 42:Block diagram of DFB_L2 49
Hình 43: Sơ đồ tín hiệu vào ra của khối spiht_cal 50
Hình 44: Sơ đồ khối chi tiết khối spiht_cal 50
Hình 45:Sơ đồ khối của khối ICT 51
Hình 46:Sơ đồ khối của khối DFBR_L1 51
Hình 47: Sơ đồ khối của khối DFB_L2 52
Hình 48: Sơ đồ khối của khối LPR_L1 52
Trang 13HVTH: Phạm Thị Huế x
Hình 49: Sơ đồ khối của khối LPR_L2 52
Hình 50: Sơ đồ tin hiệu khối block2raster 53
Hình 51: Sơ đồ tín hiệu vào ra khối control_data 53
Hình 52: Sơ đồ tín hiệu khối source_fifo 53
Hình 53: Khối control data, khi tín hiệu request data =1 55
Hình 54: Khối control data, khi tín hiệu request data =0 55
Hình 55: Khối spiht_core 56
Hình 56: Khối raster2block (block 8x8) 56
Hình 57: Dữ liệu hệ số đầu ra khối CT 57
Hình 58: Dữ liệu vào khối iCT (lowpass level 2 và các hệ số Contourlet) 57
Hình 59: Dữ liệu ra của khối ICT 58
Hình 60:Dữ liệu ra khối CT (lowpass level 2 và các hệ số Contourlet) 58
Hình 61: Dữ liệu vào khối spiht_cal (các hệ số Contourlet) 59
Hình 62: Sơ đồ Qsys của hệ thống 59
Hình 63: Các IP sử dụng trong Qsys 65
Hình 64: Kết quả tổng hợp trên Quartus, v13.1 65
Hình 65: Kit thực nghiệm hệ thống 66
Trang 14HVTH: Phạm Thị Huế 1
CHƯƠNG 1: CÁC CÔNG TRÌNH NGHIÊN CỨU VỀ NÉN ẢNH TRONG
MIỀN CONTOURLET 1.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
Trang 15HVTH: Phạm Thị Huế 2
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 ở 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
bit-Ở 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
Trang 16HVTH: Phạm Thị Huế 3
ả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 Pearlman
đã đề xuất thuật nén ảnh No Lists SPIHT [13].Ở thuật toán này thì các hệ số quan trọng vẫn được sắp xếp trước, nhưng các danh sách sẽ được thay thế bằng một bảng trạng thái.Điều này
sẽ giúp tránh được việc quét lặp lại
1.2 Chi tiết một số công trình trên thế giới về nén ảnh bằng SPIHT trong miền Wavelet và Contourlet
1.2.1 Nén ảnh bằng SPIHT trong miền Wavelet [9]
Hiện nay, một trong những phương pháp nén ảnh phổ biến nhất là sử dụng thuật toán nén ảnh SPIHT trong miền Wavelet Thật ra, thuật toán SPIHT do Amir Said và Pearlman tạo
ra chính là để nén trong miền Wavelet Tuy nhiên, miền Wavelet và Contourlet lại có nhiều điểm tương đồng nên ta cũng có thể dùng SPIHT để nén trong miền Contourlet.Vì vậy, muốn
áp dụng được SPIHT trong miền Contourlet thì ta phải hiểu cách SPIHT thực hiện trong miền Wavelet trước đã
Các bước thực hiện việc nén ảnh trên miền Wavelet chỉ gồm hai bước đơn giản như sau:
- Bước 1: biến đổi Wavelet ảnh đầu vào
- Bước 2: thực hiện nén bằng SPIHT các hệ số Wavelet
Trang 17Hình 1: Các bước thực hiện nén ảnh trong miền Wavelet [9]
1.2.2 Nén ảnh bằng SPIHT trong miền Contourlet
1.2.2.1 Nén ảnh bằng thuật toán SPIHT điều chỉnh trong miền Contourlet đã được bỏ bớt hệ số
Giải thuật này đề nghị bởi tác giả Tan Peipei, Wei Zhao trong bài báo "Image coding based on sparsified Contourlet and adjusted SPIHT" Signal Processing (ICSP), 2012 IEEE 11th International Conference on Vol 2.IEEE, 2012 [3]
Theo bài báo này, việc thực hiện nén ảnh bằng thuật toán SPIHT đã được điều chỉnh trong miền Contourlet được thực hiện như sau:
Trang 19HVTH: Phạm Thị Huế 6
mẫu dư thừa, biến đổi Sparsified Contourlet này chỉ cần số lượng hệ số biến đổi ít hơn rất nhiều
so với biến đổi Contourlet đơn thuần mà vẫn đạt được cùng một chất lượng hình ảnh khôi phục Hơn nữa, trong các phương pháp biến đổi Sparsified Contourlet thì itetive thresholding (phương pháp lấy ngưỡng lặp) mà các tác giả sử dụng là có độ phức tạp tính toán ít hơn hai phương pháp còn lại (greedy pursuit và linear programming based method)
Hình 3: Cấu trúc cây Spatial Orientation Tree trong miền Contourlet [3]
Phương pháp lấy ngưỡng lặp: lọc bớt các hệ số Contourlet bằng cách áp dụng phương pháp lấy ngưỡng lặp (iterative threshoding) để tạo thành biến đổi sparsified Contourlet
Trang 20HVTH: Phạm Thị Huế 7
S(x,T) là hàm lấy ngưỡng lặp: S(x,T)max(|x|T,0).x/|x| (2)
Ngưỡng T được xác định bởi một giá trị nào đó để lỗi lượng tử e có thể chấp nhận được
- Bước 3: nén các hệ số Contourlet lại bằng thuật toán SPIHT điều chỉnh: sử dụng thuật toán SPIHT với cây Spatial Orientation Tree điều chỉnh mối quan hệ cha con như hình [3]
Ưu điểm của việc dùng phương pháp này để nén ảnh trong miền SPIHT là đã loại bỏ được bớt số lượng hệ số Contourlet dư thừa mà vẫn giữ được ưu điểm của biến đổi Contourlet Tuy nhiên, cũng chính vì sử dụng thêm phương pháp lấy ngưỡng lặp để lọc bớt hệ số Contourlet, mà độ phức tạp tính toán của phương pháp mã hóa lại tập trung ở đây nên nó khiến cho phương pháp nén ảnh này có độ phức tạp cao hơn đang kể so với phương pháp nén dựa trên Wavelet và Contourlet đơn thuần [2] Điều đó dẫn đến sự không thích hợp của nó khi làm trên phần cứng
1.2.2.2 Contourlet image coding based on adjusted SPIHT [7]
Giải thuật này được đề nghị bởi tác giả Haohao Song, Songyu Yu, Li Song, Hongkai Xiong, trong bài báo “Contourlet image coding based on adjusted SPIHT”, Advances in Multimedia Information Processing (PCM), 2005
Trong công trình nghiên cứu này, Haohao Song cùng các cộng sự đã đề xuất nén ảnh bằng thuật toán SPIHT có điều chỉnh cho phù hợp với biến đổi Contourlet Có 3 sự điều chỉnh
đã được thực hiện: (i) đối với các subband bandpass, vì thuật toán SPIHT nhấn mạnh việc truyền các hệ số quan trọng đi trước nên các tác giả đã sắp xếp lại vị trí các subband theo độ quan trọng, theo đó subband nào có càng nhiều hệ số quan trọng thì càng được mã hóa trước; (ii) đối với các subband lowpass, các tác giả cũng tiến hành phân chia subband này thành các subband nhỏ với tần số ảo; và (iii) LIS process thuộc sorting pass chỉ được kiểm tra khi mức lượng tử giảm từ n1 xuống n2, với n1 là giá trị bit-plane cao nhất của các hệ số lowpass, còn n2 là giá trị bit-plane cao nhất của các hệ số bandpass
Các bước thực hiện thuật nén SPIHT điều chỉnh:
- Bước 1: ảnh đầu vào được biến đổi Contourlet sử dụng hai bộ lọc là 9/7 và pkva Biến đổi Contourlet được phân tích thành 4 tầng, mỗi tầng có 16 hướng Sau khi phân tích ta được kết quả gồm có 1 ma trận lowpass và 16 ma trận subband bandpass ở mỗi level
- Bước 2: xây dựng subband lowpass ảo Ma trận chứa các hệ số Contourlet ở ảnh lowpass sẽ được biến đổi thành 16 subband tần số thấp ảo Subband tần số thấp ảo này có cùng kích cỡ và cũng chứa các pixels giống như ma trận lowpass ban đầu, nhưng nó được phân vùng thành 16 subband con Mục đích của việc phân chia các hệ số ở lowpass thành 16 subband ảo giống vị trí của 16 bandpass là để dễ dàng tạo mối liên hệ cha-con khi lập cây spatial orientation tree Việc có cả các hệ số của lowpass tham gia tạo thành cây sẽ khiến cây càng cao, từ đó dẫn đến
độ nén càng cao
- Bước 3: sắp xếp lại các subband bandpass theo độ quan trọng Subband nào có càng nhiều hệ
số quan trọng thì subband đó càng quan trọng nên sẽ được xếp lên trước Sắp xếp lại sẽ giúp các hệ số quan trọng sẽ được mã hoá nhiều nhất có thể khi bitstream bị cắt ở bất kỳ điểm nào
Để xác định độ quan trọng của subband thì ta so sánh các hệ số trong các subband đó với một giá trị ngưỡng, nếu càng có nhiều hệ số lớn hơn giá trị ngưỡng thì subband đó càng quan trọng
Trang 21- Bước 4: nén bằng thuật toán SPIHT điều chỉnh Phần lowpass và bandpass sau khi được tách
ra xử lý xong thì sẽ được gộp lại để tạo thành cây Spatial Orientation Tree Thuật toán SPIHT điều chỉnh ở hai chỗ: (i) bước quantization có hai mức ngưỡng là n1 và n2, với n1 là giá trị bit-plane cao nhất của các hệ số lowpass, n2 là giá trị bit-plane cao nhất của các hệ số bandpass,
Trang 22HVTH: Phạm Thị Huế 9
chứ không phải chỉ có một mức ngưỡng n1 như SPIHT truyền thống; và (ii) bước sorting pass: danh sách LIS chỉ được kiểm tra khi n1 giảm đến giá trị n2, chứ không cần kiểm tra với các
mức lượng tử ở giữa n1 và n2 giống như SPIHT truyền thống
Ưu điểm của phương pháp nén ảnh này là đã xây dựng được bước tiền xử lý các hệ số Contourlet để điều chỉnh sao cho thuật toán SPIHT phù hợp hơn với biến đổi Contourlet, ví dụ như tận dụng được tất cả các hệ số Contourlet khi xây dựng cây Spatial Orientation Tree, bớt được một số bit mã hóa khi dùng đến hai mức lượng tử,… Tuy nhiên, việc cho toàn bộ các hệ
số ở ảnh lowpass vào trong danh sách các pixel không quan trọng LIP khi thực hiện thuật nén ảnh SPIHT, nếu thực hiện như vậy trên phần cứng thì sẽ không thuận lợi do phải lưu nhiều giá trị một lần và thực hiện tính toán nhiều lần với nhiều giá trị đó
1.2.2.3 Nén ảnh bằng thuật toán SPIHT điều chỉnh ở trong miền
Contourlet
Giải thuật này được đề nghị bởi Xi Zhi-hong, Xiao Yi-han, trong bài báo “An Image conpression scheme adopted for Contourlet transform”, Image and Signal processing, 2009, CISP ’09 2nd International Congress on, 2009 [11]
Ở công trình nghiên cứu này, Xi Zhi-hong và các cộng sự đã đề xuất nén ảnh bằng thuật toán SPIHT điều chỉnh
- Bước 1: biến đổi Contourlet ảnh đầu vào Biến đổi Contourlet sử dụng bộ lọc 9-7 cho phân tích LP và bộ lọc pkva cho phân tích DFB Biến đổi Contourlet được phân tích đến ba tầng với
số hướng ở mỗi tầng đều là 16 hướng
- Bước 2: xử lý các hệ số Contourlet ở ảnh lowpass như sau:
+ Bước 2-1: Rearrangement of lowpass coeffs: Việc phân vùng lại là để tạo mối liên hệ con dễ dàng cho việc tạo spartial orientation tree Việc phân vùng các hệ số lowpass vào các subband ảo được thực hiện như sau: (i) các hệ số ở những dòng chẵn được xếp thành các subband ngang, (ii) các hệ số ở những dòng lẻ thì xếp thành các subband dọc
+ Bước 2-2: Optimization of lowpass subband coeffs: Do năng lượng tập trung phần lớn ở lowpass subband nên tác giả muốn giữ nguyên giá trị các hệ số lowpass, nhưng thay vì mã hoá các biên độ lớn của lowpass thì tác giả mã hoá vị trí (location) và số dư (margin) của các hệ số này so với Hmax (là giá trị lớn nhất trong tất cả các hệ số lowpass), điều này sẽ giúp giảm số bit mã hoá
- Bước 3: Các hệ số lowpass đã được xử lý và các hệ số bandpass sẽ được gộp lại thành các hệ
số đầu vào của thuật toán nén ảnh SPIHT
Ưu điểm của phương pháp nén ảnh này là giữ lại được tối đa mức năng lượng ở phần ảnh lowpass là nơi tập trung chủ yếu năng lượng của toàn bộ hình ảnh và cũng điều chỉnh cây Spatial Orientation Tree cho phù hợp hơn với biến đổi Contourlet giống như [7] Tuy nhiên, nhược điểm của phương pháp này cũng là không thuận lợi khi xây dựng trên phần cứng giống như [7]
Trang 23HVTH: Phạm Thị Huế 10
Hình 5: Các bước thực hiện nén ảnh ở [11]
1.3 Biến đổi Contourlet
(Nội dung này được trích từ luận văn Thiết kế lõi IP triệt nhiễu ảnh sử dụng biến đổi Contourlet, Lê Quốc Bảo Trí, Đại học Bách Khoa, ĐHQG-TP.HCM, 2013 [14])
Biến đổi Contourlet rời rạc là sự kết hợp giữa Laplacian pyramid (multiscale) và băng lọc hướng (Directional filter bank) (multidirection)
Trang 24HVTH: Phạm Thị Huế 11
Hình 6: Bộ lọc băng Contourlet Biến đổi Contourlet cơ bản gồm hai bước: trước tiên, phân tích multiscale vào các băng bằng Laplacian pyramid, sau đó băng lọc hướng DFB được áp vào mỗi kênh
Biến đổi Contourlet được thực thi thông qua bộ băng lọc hai chiều để phân tích ảnh vào một số băng con định hướng ở nhiều scale Điều này được thực hiện bằng cách kết hợp Laplacian pyramid (LP) với 1 băng lọc hướng ở mỗi scale Do cấu trúc theo tầng này, mỗi tầng phân tích multiscale và hướng trong biến đổi Contourlet độc lập lẫn nhau Mỗi tầng có thểphân tích mỗi scale thành một số hướng theo hàm mũ của 2 tùy ý, nên các scale khác nhau có thể phân tích thành số các hướng khác nhau Đặc điểm này làm cho Contourlet là biến đổi duy nhất
có thể đạt được mức độ linh hoạt cao trong phân tích ảnh
1.3.1 Phân tích Laplacian Pyramid
Phân tích multiscale sử dụng Laplacian Pyramid (LP) đƣợc giới thiệu bởi Burt và Adelson.Phân tích LP ở mỗi mức sẽ tạo ra phần lowpass của ảnh gốc với kích thước bằng ½ ảnh gốc và sự khác nhau giữa phần lowpass và ảnh gốc là ảnh bandpass có kích thước bằng ảnh gốc
Hình 7: Phân tích Laplacian Pyramid Hình trên mô tả cách thực hiện việc phân tích LP: Đầu tiên, ta lấy xấp xỉ thô a của tín hiệu ban đầu x bằng cách lọc thông thấp H và hạ mẫu M Dựa trên phiên bản thô, chúng ta dự đoán tín hiệu ban đầu bằng cách tăng mẫu và lọc thông thấp, sau đó tính toán chênh lệch giữa tín hiệu ban đầu và tín hiệu dự đoán ta có được phần chi tiết b của ảnh Thông thường để xây dựng lại tín hiệu gốc, ta kết hợp phần chi tiết b với phần xấp xỉ thô a
Trang 25Bộ lọc Fan filter có thể là một trong hai bộ lọc H0 hoặc H1.Trong đó, H0 là bộ lọc phân tích thông thấp, còn H1 là bộ lọc phân tích thông cao của loại bộ lọc mà ta dùng cho phân tích DFB
Đối với DFB tầng 1 và tầng 2, sơ đồ của DFB là :
số kênh DFB ở phía trên, làm cho ảnh đầu vào quay một góc 45 độ hoặc -45 độ theo hướng dọc Còn hai loại resampling cho QFB là R2 và R3 sẽ được sử dụng cho ½ số kênh DFB ở phía dưới, làm cho ảnh đầu vào quay một góc 45 độ hoặc -45 độ theo hướng còn lại, tức là hướng ngang
Trang 27HVTH: Phạm Thị Huế 14
Hình 11: Ví dụ về 4 toán tử R0, R1, R2 và R3
1.4 Giải thuật nén ảnh SPIHT
1.4.1 Tổng quan về giải thuật nén ảnh SPIHT
Thuật toán nén ảnh SPIHT được dùng trong trường hợp nén ảnh có mất mát.Nó dùng
để nén các hệ số sau khi đã qua biến đổi unitary hierarchical subband transform, ví dụ như Wavelet Để nén ảnh ta có thể chỉ dùng thuật toán nén SPIHT, hoặc cũng có thể kết hợp SPIHT với một thuật toán nén khác, ví dụ như arithmetic coding Ưu điểm khi kết hợp 2 phương pháp nén là sẽ giúp giảm sai số bình phương trung bình MSE, tức là tăng PSNR từ 0.3-0.6 dB; tuy nhiên như vậy thì độ phức tạp tính toán sẽ tăng lên, thời gian thực hiện mã hóa và giải mã cũng
Khi ta dùng phương thức truyền lần lượt (progressive image transmission) thì điều quan trọng là làm sao truyền đi được những thông tin quan trọng nhất, nhờ thế sẽ giảm được độ méo
là nhiều nhất Việc lựa chọn thông tin quan trọng nhất có thể dựa theo một số tiêu chí khác nhau Một trong số đó là việc dựa vào việc đo độ méo theo sai số bình phương trung bình Mean
Squared-error (MSE):
2
^ , ,
N N
p p p p
D
(4)
Với N là số lượng hệ số của ảnh, p,j
là giá trị hệ số (i,j) của ảnh, p,j
^
là giá trị ước lượng của hệ số p,j
Trang 28
HVTH: Phạm Thị Huế 15
Mặt khác ta có:
2
^ , ,
N c c D p p
Điều này cho ta thấy rằng những hệ số mà biên độ càng lớn thì càng nên truyền
đi trước bởi vì chúng có khả năng giảm được độ méo nhiều hơn Mở rộng điều này, ta có thể thấy rằng đối với từng hệ số được truyền đi dưới dạng nhị phân thì ta cũng nên truyền những bit có trọng số lớn hơn đi trước (most significant bits MSB)
Như vậy, ý tưởng chính của thuật toán SPIHT gồm 2 điểm chính, đó là (1) sắp xếp lại các hệ số theo biên độ, như vậy các hệ số có biên độ lớn sẽ được mã hóa trước; và (2) mã hóa các bit MSB của các hệ số có biên độ lớn trước
Hai điểm này được diễn giải cụ thể như sau:
(1) Sắp xếp lại các hệ số theo biên độ: các hệ số sẽ được sắp xếp theo thứ tự từ biên độ lớn đến nhỏ theo từng nhóm trong nhiều lần lặp, cứ một lần lặp thì sẽ sắp một nhóm các hệ số
có biên độ từ 2 đến n 2 1 VD các hệ số sau khi biến đổi của một ảnh có biên độ dao động từ 0 đến (2 -1) thì ở lần lặp đầu tiên sẽ sắp xếp cho nhóm 1 lên trước gồm các hệ số có biên độ từ 87
2 đến (2 - 1), ở lần lặp thứ hai sẽ cho nhóm 2 xếp sau nhóm 1 gồm các hệ số có biên độ từ 86
2 đến (2 -1), và cứ sắp xếp các nhóm như vậy cho đến khi có đủ số hệ số quan trọng mà ta 7mong muốn
(2) Mã hóa các bit MSB của các hệ số có biên độ lớn trước: ta vừa sắp xếp các hệ số theo biên độ vừa mã hóa các bit MSB của các hệ số lớn trước VD các hệ số sau khi biến đổi của một ảnh có biên độ dao động từ 0-(2 - 1) thì ở lần lặp đầu tiên sẽ sắp xếp cho nhóm 1 gồm 8các hệ số có biên độ từ 2 đến (7 8
2 -1) lên trước, đồng thời truyền đi các bit thứ 8 của các hệ số
ở nhóm 1 này; ở lần lặp thứ hai sẽ cho nhóm 2 gồm các hệ số có biên độ từ 2 đến (6 2 -1) xếp 7sau nhóm 1, đồng thời truyền đi các bit thứ 7 của các hệ số ở cả nhóm 1 và 2; và cứ sắp xếp và truyền các bit MSB của các hệ số ở các nhóm như vậy cho đến khi có đủ lượng bit mà ta mong muốn
Việc sắp xếp các hệ số từ lớn đến nhỏ theo từng nhóm trong nhiều lần lặp song song với việc truyền các bit MSB đi trước dẫn đến hệ quả là ta có thể chọn tỉ lệ nén ảnh thông qua
số lần lặp cho việc sắp xếp và mã hóa số bit MSB Nếu số lần lặp càng nhiều thì số lượng nhóm của các hệ số được sắp xếp sẽ càng nhiều và càng nhiều bit MSB được mã hóa, như vậy tỉ lệ nén sẽ giảm; và ngược lại Tuy chỉ truyền một số lượng ít các bit của các hệ số ban đầu nhưng chất lượng ảnh sau khi khôi phục lại vẫn đạt chất lượng tốt do nửa số bit được truyền đi là những bit quan trọng, những bit này giúp khôi phục lại được các hệ số ban đầu với sai số MSE nhỏ
Như vậy, tóm lại thuật toán SPIH là một thuật toán nén ảnh nhanh và hiệu quả Nó có hai điểm đặc biệt là (i) mã hóa các hệ số quan trọng trước (dựa vào giá trị các hệ số, hệ số nào
Trang 29HVTH: Phạm Thị Huế 16
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; (ii) trong một lượt mã hóa thì không phải mã hóa hết hệ số này rồi mới đến hệ số kia, mà là mã hóa đồng thời bit thứ n MSB (most significant bit) của tất
cả các hệ số Khi dùng thuật toán này để nén ảnh thì ta có thể chọn tỉ lệ nén như mong muốn, tất nhiên cái giá phải trả là tỉ lệ nén càng cao thì sai số giữa ảnh khôi phục và ảnh ban đầu sẽ càng lớn Thông thường, những hình ảnh chất lượng tốt có thể được khôi phục khi chỉ cần một phần tương đối nhỏ các pixel được truyền đi, ví dụ với ảnh Barbara chuẩn 8 bpp, cỡ 512x512 thì chỉ cần nén với bit-rate = 0,25 bpp
1.4.2 Cách thực hiện thuật toán SPIHT
Thuật nén SPIHT gồm 4 bước là: khởi tạo, sorting pass, refinement pass và quantization-step update Ta có thể miêu tả tóm tắt thuật toán dưới dạng sơ đồ như sau:
Hình 12: Ý tưởng của thuật toán nén ảnh SPIHT
Ý tưởng của thuật toán nén ảnh SPIHT bắt nguồn từ thuật toán EZW [8], với bước đệm
là sử dụng một cây được gọi là spatial orientation trees, cây này dựa trên giả thuyết là nếu một
hệ số biến đổi ở mức thô (coarse scale), tức là node cha ở trên cây là không quan trọng (nhỏ
hơn giá trị ngưỡng) thì tất cả các hệ số mà ở vùng không gian giống như hệ số đó mà ở trên
subband ở mức tinh hơn (finer scale), tức là các node con, cháu, chắt,… trên cây thì cũng không
quan trọng Thực tế chỉ ra rằng giả thuyết này thường là đúng bởi vì các hệ số có sự tự tương quan giữa các subband Tức là đối với những hệ số đã qua biến đổi unitary hierarchical subband transform thì mỗi một hệ số ở scale đã cho sẽ liên quan tới một tập các hệ số ở finer scale mà
ở cùng hướng
Trang 30HVTH: Phạm Thị Huế 17
Cây Spatial Orientation Trees được tạo như sau:
Giả sử ta có các hệ số đã qua biến đổi unitary hierarchical subband transform nằm ở các subband như trong hình vẽ, hệ số nào ở mức thô nhất thì sẽ là node cha (các hệ số nằm ở subband I), hệ số nào ở mức tinh hơn thì sẽ là node con (các hệ số ở subband II, III, IV), còn các hệ số ở mức tinh hơn nữa thì sẽ là node cháu, chắt,… Mỗi node cha sẽ luôn có 2x2 node con hoặc là không có node con nào Các node sẽ được chia vào các tập hợp như sau:
+ Tập O(i,j): là tập các tọa độ của node con của hệ số có tọa độ (i,j) Mỗi node sẽ có 4 node
con hoặc không có node con nào VD tập O(0,1) bao gồm tọa độ của các hệ số b1, b2, b3 và b4
+ Tập D(i,j): là tập bao gồm tất cả các con, cháu, chắt,… của hệ số có tọa độ (i,j).VD D(0,1)
bao gồm tọa độ của các hệ số b1…b4, b11…b14…b44
+ Tập H: là tập của tất cả các node gốc – là band I trên hình vẽ
+ Tập L(i,j): là tập các cháu, chắt,… (không có con) của node có tọa độ (i,j)
Khi thực hiện thuật toán, tác giả dùng ba danh sách để biểu thị việc sắp xếp cây Spatial Orientation Trees, đó là danh sách các hệ số quan trọng LSP, danh sách các hệ số không quan trọng LIP và danh sách các nhóm hệ số không quan trọng LIS LSP và LIP sẽ chứa tọa độ của các node riêng lẻ, còn LIS sẽ chứa các tọa độ của node con cháu chắt… được biểu diễn qua tập
D của các node cha
Như vậy, ý tưởng của thuật toán nén ảnh SPIHT có thể được biểu diễn tương đương ở trên thông qua các danh sách như sau:
Trang 31HVTH: Phạm Thị Huế 18
Hình 13: Cách thực hiện thuật toán SPIHT
1.4.3 Ví dụ về cách thực hiện thuật toán SPIHT trong miền Wavelet
Giả sử ta có các hệ số biến đổi Wavelet như sau:
Trang 32LIS:
Trang 33HVTH: Phạm Thị Huế 20
Kiểm tra các con cháu chắt… của tọa độ (0,1) (tức là 13, 10, 6 và 4) tất cả đều không quan trọng truyền 1 bit 0 Tương tự, con cháu chắt… của tọa độ (1,0) và (1,1) đều không quan trọng truyền 2 bit 0
Refinement pass:
không có phần tử nào nên không làm gì
Qua bước first pass ta truyền đi 8 bit: 11 000 000
Quantization-step update: giảm n đi 1: n=3
Trang 34HVTH: Phạm Thị Huế 21
Đầu tiên kiểm tra con cháu chắt,…của tọa độ (0,1) hai hệ số 13 và 10 lớn hơn giá trị ngưỡng nên chúng quan trọng, tức là D(0,1) là quan trọng ta gửi đi 1 bit 1 và kiểm tra
con của tọa độ (0,1), tức là O(0,1) Con đầu tiên có giá trị là 13 quan trọng và dương
gửi đi 1 bit 1 và 1 bit dấu 1; con thứ 2 cũng tương tự gửi đi 1 bit 1 và 1 bit 1; ta chuyển tọa
độ của 2 con đến LSP; 2 node con tiếp theo đều không quan trọng gửi đi 2 bit 0 và chuyển chúng đến LIP Vì L ( 0 , 1 ) nên ta loại D(0,1) ra khỏi LIS Tương tự với D(1,0)và D(1,1),
ta thấy các phần tử đều không quan trọng gửi đi 2 bit 0
Refinement pass:
LSP từ pass trước: chỉ có 1 phần tử có hệ số là 26 MSB thứ 3 của 26 là 1 truyền bit
1
Qua bước second pass ta truyền đi 13 bit: 000 11111 00 1
Quantization-step update: giảm n đi 1: n=2
Third pass:
Khởi tạo:
Trang 35HVTH: Phạm Thị Huế 22
Ngưỡng n22 4
Cách làm tương tự trên, chuỗi bit sẽ là: 10111010101101100110000010
Danh sách được cập nhật lại là:
Giải mã
First pass: Khởi tạo:
Trang 36HVTH: Phạm Thị Huế 23
Giá trị được truyền đi ở first pass: n = 4 và chuỗi bit 11000000
Ta giả sử rằng giá trị ban đầu của n được truyền đến bộ giải mã (n=4), nhờ đó ta thiết lập được giá trị ngưỡng ban đầu là 16 Chuỗi bit được truyền đi ở first pass là 11 000 000, như vậy hệ số đầu tiên của LIP là quan trọng và dương, còn lại tất cả các hệ số khác đều không quan trọng Hệ số quan trọng được khôi phục sẽ có giá trị được tính là 2n 2 124 23 24
Như vậy qua first pass, các hệ số được khôi phục lại là:
Danh sách các tập hợp được cập nhật lại như sau:
Second pass:
Trang 37HVTH: Phạm Thị Huế 24
Giảm n đi 1 (n=3) và xem xét chuỗi bit được truyền đi 000 11111 00 00 1 Từ việc 3 bit đầu tiên là 0 và chỉ có 3 phần tử trong LIP nên tất cả các phần tử ở LIP đều là không quan trọng Các bit tiếp theo nói lên thông tin ở trong tập LIS
Bit tiếp theo là 1=> tập hợp có node gốc ở tọa độ (0,1) là quan trọng, theo danh sách LIS thì tập này là loại D nên giá trị hệ số được giải mã tiếp theo sẽ là node con của (0,1)
Bit tiếp theo là 111100 chứng tỏ hai con đầu tiên của (0,1) là quan trọng và dương, còn
2 con sau thì không quan trọng Do đó, ta chuyển hai con đầu tiên đến LSP và 2 con sau đến LIP Giá trị của hai hệ số quan trọng này được khôi phục đều là 2322 12 Ta chuyển
0 , 1 D ra khỏi LIS
Hai bit tiếp theo là 00 chứng tỏ là hai tập tiếp theo trong LIS là không quan trọng Bit cuối cùng tương ứng với bước refinement pass có giá trị là 1, ta cập nhật giá trị khôi phục của hệ số ở tọa độ (0,0) là 2421 28
Như vậy các hệ số khôi phục qua bước second pass là:
Và các danh sách được cập nhật lại là:
Third pass:
Giảm n đi 1 (n=2), như vậy giá trị ngưỡng là 4 Giải mã chuỗi bit được truyền ở third pass (10111010101101100110000010) ta cập nhật được các hệ số khôi phục có giá trị như sau:
Trang 38HVTH: Phạm Thị Huế 25
Và danh sách được cập nhật là:
Ở third pass, tập LIS không còn phần tử nào nên ta chỉ đơn giản cập nhật giá trị của các
hệ số
1.4.4 Ví dụ về cách thực hiện SPIHT trong miền Contourlet
Giả sử ta có các hệ số biến đổi Contourlet 2 levels, mỗi level có 4 hướng như sau:
Trang 39Tất cả mỗi hệ số Contourlet đều có 4 node con.Các hệ số Contourlet a, b, c, d là các node gốc Node a có 4 con là {a1, a2, a3, a4}, node con a1 có 4 node cháu là {a11, a12, a13, a14} Tương tự với các node khác
Mã hóa
Trang 40Sorting pass – LIP Process: giá trị ngưỡng = 128
Các hệ số ở tọa độ (0,0) và (0,1) có giá trị nhỏ hơn ngưỡng nên không quan trọng -> truyền đi một bit 0 cho mỗi tọa độ Tiếp theo hệ số ở tọa độ (1,0) quan trọng -> truyền đi một bit 1 để chứng tỏ là hệ số quan trọng và một bit 1 nữa để biểu thị hệ số này là dương; đồng thời
ta chuyển hệ số này sang LSP Hệ số cuối cùng không quan trọng -> truyền đi một bit 0 Hệ số nào không quan trọng thì vẫn để ở LIP
Sorting pass – LIS process:
Tất cả các con, cháu của cả bốn node gốc đều nhỏ hơn ngưỡng -> ta truyền đi 4 bit 0 Refinement pass: