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 13
MỤC LỤC
1 MỤC TIÊU, NỘI DUNG, VÀ SẢN PHẨM CỦA ĐỀ TÀI 14
1.1 Mục tiêu đề tài 14
1.2 Nội dung đề tài 14
1.3 Sản phẩm của đề tài 14
2 CÁC CÔNG TRÌNH NGHIÊN CỨU VỀ NÉN ẢNH TRONG MIỀN CONTOURLET 15 2.1 Tổng quan về nén ảnh trong miền Contourlet 15
2.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 17
2.2.1 Nén ảnh bằng SPIHT trong miền Wavelet [9] 17
2.2.2 Nén ảnh bằng SPIHT trong miền Contourlet 19
3 TỔNG QUAN VỀ BIẾN ĐỔI CONTOURLET 26
3.1 Biến đổi Contourlet 26
3.1.1 Phân tích Laplacian Pyramid 26
3.1.2 Phân tích DFB 27
3.2 Giải thuật nén ảnh SPIHT 30
3.2.1 Tổng quan về giải thuật nén ảnh SPIHT 30
3.2.2 Cách thực hiện thuật toán SPIHT 32
3.2.3 Ví dụ về cách thực hiện thuật toán SPIHT trong miền Wavelet 35
3.2.4 Ví dụ về cách thực hiện SPIHT trong miền Contourlet 44
4 ĐỀ XUẤT CẢI TIẾN GIẢI THUẬT NÉN ẢNH SPIHT TRONG MIỀN CONTOURLET 56
4.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 56
4.2 Giải thuật đề nghị 59
4.3 Kết quả mô phỏng giải thuật 62
5 XÂY DỰNG LÕI IP CHO PHẦN CỨNG NÉN ẢNH 68
5.1 Mô tả chung 68
5.2 Khối sink_fifo 69
5.3 Khối spiht_core 70
5.3.1 Khối raster2block 71
5.3.2 Khối Contourlet_spiht 71
5.3.3 Khối block2raster 78
5.4 Khối control_data 78
Trang 24
5.5 Khối source_fifo 79
6 THẨM TRA THIẾT KẾ LÕI IP 80
6.1 Kết quả mô phỏng trên modelsim 80
6.2 Thử nghiệm thiết kế trên kit FPGA DE2 115 85
6.2.1 Mô tả hệ thống 85
6.2.2 Phương pháp thử nghiệm đánh giá 95
6.2.3 Kết quả thực nghiệm 95
7 KẾT LUẬN VÀ KIẾN NGHỊ 98
8 TÀI LIỆU THAM KHẢO 100
Trang 35
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 46
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 Wavelet 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 57
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮTWBCT :Wavelet-based Contourlet
SPIHT : Set Partitioning In Hierarchical Trees
PSNR : Peak Signal to Noise Ratio
bpp : bit per pixel
LP : Laplacian Pyramid
DFBDEC : Direction Filter Bank Decomposition
QFBDEC : Quincunx Filter Bank Decomposition
LPR : Laplacian Pyramid Reconstruction
DFBREC : Direction Filter Bank Reconstruction
QFBREC : Quincunx Filter Bank Reconstruction
CT : Contourlet Transform
ICT : Inverse Contourlet Transform
LP_L1 : Laplacian Pyramid Decomposition Level 1
LP_L2 : Laplacian Pyramid Decomposition Level 2
DFB_L1 : Direction Filter Bank Decomposition Level 1
DFB_L2 : Direction Filter Bank Decomposition Level 2
ATD_L1 : Apdaptive Threshold Denoising Level 1
ATD_L2 : Apdaptive Threshold Denoising Level 2
DFBR_L1 : Direction Filter Bank Reconstruction Level 1
DFBR_L2 : Direction Filter Bank Reconstruction Level 2
LPR_L1 : Laplacian Pyramid Reconstruction Level 1
LPR_L2 : Laplacian Pyramid Reconstruction Level 2
Trang 68
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] 18
Hình 2: Các bước thực hiện nén ảnh ở [3] 19
Hình 3: Cấu trúc cây Spatial Orientation Tree trong miền Contourlet [3] 21
Hình 4: Các bước thực hiện nén ảnh ở [7] 22
Hình 5: Các bước thực hiện nén ảnh ở [11] 24
Hình 6: Bộ lọc băng Contourlet 26
Hình 7: Phân tích Laplacian Pyramid 27
Hình 8: Hai tầng đầu tiên của DFB 28
Hình 9: Phân tích DFB 4 tầng 29
Hình 10: Ví dụ về 2 toán tử Q0 và Q1 30
Hình 11: Ví dụ về 4 toán tử R0, R1, R2 và R3 30
Hình 12: Spatial Orientation Trees 34
Hình 13: Minh họa hệ số biến đổi Wavelet 36
Hình 14: Minh họa bước khởi tạo 36
Hình 15: Minh họa LIP Process 36
Hình 16: Minh họa LIS 37
Hình 17: Minh họa LSP 37
Hình 18: Minh họa khởi tạo Second Pass 38
Hình 19: Minh họa tiến trình Second Pass 38
Hình 20: Minh họa Refinement pass 39
Hình 21: Minh họa khởi tạo Thirdpass 39
Hình 22: Minh họa tiến trình Third pass 40
Hình 23: Minh họa kết quả tiến trình Third pass 40
Trang 79
Hình 24: Minh họa khởi tạo First Pass 41
Hình 25: Minh họa tiến trình First Pass 41
Hình 26: Minh họa hệ số được khôi phục của First Pass 41
Hình 27: Minh họa danh sách các tập hợp sau cập nhật 42
Hình 28: Minh họa tiến trình Second pass 42
Hình 29: Minh họa các hệ số khôi phục qua bước second pass 43
Hình 30: Minh họa các danh sách được cập nhật lại 43
Hình 31: Minh họa các hệ số khôi phục Third pass 43
Hình 32: Minh họa danh sách được cập nhật 44
Hình 33: Minh họa các hệ số biến đổi Contourlet 2 levels, mỗi level có 4 hướng 45
Hình 34: Minh họa Spatial Orientation Tree 46
Hình 35: Minh họa khởi phát First Pass 46
Hình 36: Minh họa Sorting pass – LIP Process 47
Hình 37: Minh họa Sorting pass – LIS process 47
Hình 38: Minh họa Refinement pass 47
Hình 39: Minh họa khởi tạo Second pass 48
Hình 40: Minh họa Sorting pass – LIP 48
Hình 41: Minh họa Sorting pass – LIS process 49
Hình 42: Minh họa ba tập phụ còn lại 49
Hình 43: Minh họa tiến trình Sorting pass – LIS process 50
Hình 44: Minh họa khởi tạo First pass 51
Hình 45: Minh họa Sorting pass – LIP process 51
Hình 46: Minh họa danh sách được cập nhật second pass 51
Hình 47: Minh họa Sorting pass - LIP Process 52
Hình 48: Minh họa Sorting pass – LIS process 52
Trang 810
Hình 49: Minh họa tiến trình Sorting pass – LIS process 53
Hình 50: Minh họa tiến trình Sorting pass – LIS process 53
Hình 51: Minh họa tiến trình Sorting pass – LIS process 54
Hình 52: Minh họa tiến trình Sorting pass – LIS process 55
Hình 53: Minh họa tiến trình Sorting pass – LIS process 55
Hình 54: Sự phân phối hệ số Contourlet ở các subbandcủa ảnh Goldhill 56
Hình 55: Sự phân phối các hệ số Contourlet ở các subband của ảnh Cameraman 57
Hình 56: Sự phân phối các hệ số Contourlet ở các subband của ảnh Barbara 57
Hình 57: Sự phân phối các hệ số Contourlet ở các subband của ảnh Lena 57
Hình 58: Sự phân phối các hệ số Contourlet ở các subband của ảnh Baboon 58
Hình 59: Sự phân phối các hệ số Contourlet ở các subband của ảnh Mandrill 58
Hình 60: Sự phân phối các hệ số Contourlet ở các subband của ảnh Pepper 58
Hình 61: Sự phân phối các hệ số Contourlet ở các subband của ảnh Pirate 59
Hình 62: Sơ đồ chung của phương pháp nén ảnh đề xuất 59
Hình 63: Biến đổi Contourlet ảnh đầu vào 60
Hình 64:Xây dựng các subband lowpass ảo 61
Hình 65 Ảnh Barbara được nén ở bit-rate=0.25 bpp 64
Hình 66 Ảnh Goldhill được nén ở bit-rate = 0.25 bpp 65
Hình 67 Ảnh Mandrill được nén ở bit-rate = 0.25 bpp 65
Hình 68 Ảnh Peppers được nén ở bit-rate = 0.25 bpp 66
Hình 69 Ảnh Lena được nén ở bit-rate = 0.25 bpp 67
Hình 70: Sơ đồ tín hiệu vào ra của IP nén ảnh SPIHT 68
Hình 71 Cấu trúc khối spiht_ip 69
Hình 72: Sơ đồ tín hiệu vào ra khối sink_fifo 69
Hình 73: Sơ đồ khối chi tiết khối sink_fifo 70
Trang 911
Hình 74: Sơ đồ tín hiệu vào ra của khối spiht_core 70
Hình 75: Sơ đồ tín hiệu vào ra khối raster2block 71
Hình 76: Sơ đồ khối Contourlet_spiht 71
Hình 77: Sơ đồ khối của khối Contourlet Transform 72
Hình 78: Sơ đồ khối của LP_L1 73
Hình 79: Sơ đồ khối của LP_L2 73
Hình 80: Sơ đồ khối của DFB_L1 74
Hình 81: Block diagram of DFB_L2 74
Hình 82: Sơ đồ tín hiệu vào ra của khối spiht_cal 75
Hình 83: Sơ đồ khối chi tiết khối spiht_cal 75
Hình 84: Sơ đồ khối của khối ICT 76
Hình 85: Sơ đồ khối của khối DFBR_L1 76
Hình 86: Sơ đồ khối của khối DFB_L2 77
Hình 87: Sơ đồ khối của khối LPR_L1 77
Hình 88: Sơ đồ khối của khối LPR_L2 78
Hình 89: Sơ đồ tin hiệu khối block2raster 78
Hình 90: Sơ đồ tín hiệu vào ra khối control_data 78
Hình 91: Sơ đồ tín hiệu khối source_fifo 79
Hình 92: Khối control data, khi tín hiệu request data =1 80
Hình 93: Khối control data, khi tín hiệu request data =0 80
Hình 94: Khối spiht_core 81
Hình 95: Khối raster2block (block 8x8) 81
Hình 96: Dữ liệu hệ số đầu ra khối CT 82
Hình 97: Dữ liệu vào khối iCT (lowpass level 2 và các hệ số Contourlet) 83
Hình 98: Dữ liệu ra của khối ICT 83
Trang 1012
Hình 99: Dữ liệu ra khối CT (lowpass level 2 và các hệ số Contourlet) 84
Hình 100: Dữ liệu vào khối spiht_cal (các hệ số Contourlet) 84
Hình 101: Sơ đồ Qsys của hệ thống 85
Hình 102: SDcard_controller 86
Hình 103 Khối SRAM_controller 89
Hình 104: Pixel_buffer_DMA_controller 90
Hình 105: Pixel_buffer_DMA_controller 90
Hình 106: Khối RESAMPLE 91
Hình 107: Khối DUAL_CLOCK_BUFFER 92
Hình 108: VGA_controller 93
Hình 109: Khối Source_data 93
Hình 110: Khối Sink_data 94
Hình 111: Các IP sử dụng trong Qsys 95
Hình 112: Kết quả tổng hợp trên Quartus, v13.1 95
Hình 113: Kết quả tổng hợp trên Quartus, v13.1 96
Hình 114: Kit thực nghiệm hệ thống Error! Bookmark not defined.
Trang 1113
DANH MỤC CÁC BẢNG
Bảng 1: So sánh PSNR của phương pháp đề xuất với 2 phương pháp khác 63
Bảng 1: Các hàm được sử dụng 86
Bảng 3: Kết quả giải thuật đề nghị 98
Bảng 4: Kết quả thiết kế lõi IP nén ảnh: 98
Trang 12 Thiết kế cấu trúc phần cứng và xây dựng lõi IP cho giải thuật nén ảnh đã đề ra
- Với tỉ lệ nén 0.1bpp , cho chất lượng ảnh trên 20dB
- Với tỉ lệ nén 0.2bpp, cho chất lượng ảnh trên 24dB
- Với tỉ lệ nén 0.3bpp, cho chất lượng ảnh trên 26dB
mô phỏng trên ModelSim
Xây dựng lõi IP cho phần
cứng nén ảnh đã đề ra 01/03/2015-30/05/2015
- Sản phẩm là mô tả cấu trúc lõi IP đã được kiểm tra trên FPGA
- Có khả năng chạy với tần
số 50MHz
1 Bài báo khoa học 1 Đăng trong tạp chí trong nước
2 Lõi IP nén ảnh sử dụng biến đổi
4 Đào tạo thạc sỹ 1 Đề tài liên quan nén ảnh
Trang 1315
2 CÁC CÔNG TRÌNH NGHIÊN CỨU 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
Trang 1416
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 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
Trang 1517
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 ả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
Wavelet và Contourlet
2.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 đã
Trang 16Hình 1: Các bước thực hiện nén ảnh trong miền Wavelet [9]
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 1719
2.2.2 Nén ảnh bằng SPIHT trong miền Contourlet
2.2.2.1.Image coding based on sparsified Contourlet and adjusted SPIHT [3]
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
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:
Hình 2: Các bước thực hiện nén ảnh ở [3]
- Bước 1: Biến đổi Contourlet ảnh đầu vào Biến đổi này thực hiện với 3 tầng và số hướng ở mỗi mức là 4, 8 và 16 hướng tương ứng với mỗi tầng đầu vào
Trang 1820
- Bước 2: Sparse Contourlet using Itetive thresholding: Do biến đổi Contourlet là một biến đổi quá mẫu nên việc các tác giả dùng biến đổi Sparsified Contourlet sẽ giúp giảm đi một số lượng 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) 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
là ma trận biến đổi Contourlet ngược
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 bên dưới
Trang 1921
Hình 3: Cấu trúc cây Spatial Orientation Tree trong miền Contourlet [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, khi dùng thuật toán SPIHT để nén ảnh thì tác giả xây dựng cây Spatial Orientation Tree với mối quan hệ cha con không dùng hết mà chỉ dùng một phần số subband của ảnh bandpass, mà số subband được sử dụng này lại cố định khi nén bất kỳ một ảnh nào
đó Điều này dẫn đến việc giảm chất lượng hình ảnh khôi phục khi số lượng các hệ số có biên
độ lớn lại tập trung ở những subband không tham gia vào quá trình xây dựng cây Spatial Orientation Tree
2.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
Trang 2022
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
Contourlet
4 levels 16,16,16.16 directions
Sắp xếp lại các bandpass theo độ quan trọng
construction of virtual lowpass subband
Adjust spiht
I_Spiht
Sắp xếp lại vị trí các bandpass
Original Image
Lowpass coeffs Bandpass coeffs
16 virtual lowpass subbands
compression bitstream
Reconstructed image
Rearranged 64 bandpass subbands
Vị trí của 15/16 bandpass ở mỗi level
&
I_Contourlet
Hình 4: Các bước thực hiện nén ảnh ở [7]
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
Trang 21có 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 Về giá trị chọn làm ngưỡng thì thông thường, khi so sánh với một giá trị ngưỡng cao, nếu một subband có nhiều hệ số quan trọng hơn subband khác thì khi so với một giá trị ngưỡng thấp, nó cũng sẽ có nhiều hệ
số quan trọng hơn các subband khác Bằng việc test nhiều hình ảnh, các tác giả đã chỉ
ra rằng với ngưỡng = 32 thì thứ tự quan trọng của các subband là không thay đổi
- 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, 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ị đó
2.2.2.3.An Image conpression scheme adopted for Contourlet transform [11]
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
Ở 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
Trang 22- 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
Trang 2325
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 2426
3 TỔNG QUAN VỀ 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)
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
3.1.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
Trang 2527
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
Bộ 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à :
Trang 26Level 2
Hình 8: Hai tầng đầu tiên của DFB Phân tích DFB từ mức thứ ba, để đạt được mức phân chia tần số nhỏ hơn, dàn lọc quincunx
sẽ được kết hợp với toán tử resampling R Có bốn loại resampling cho QFB, đó là R0, R1, R2
và R3.Trong đó, hai loại resampling cho QFB là R0 và R1 sẽ được sử dụng cho ½ 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 2830
Hình 10: Ví dụ về 2 toán tử Q0 và Q1
Hình 11: Ví dụ về 4 toán tử R0, R1, R2 và R3
3.2.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 sẽ lâu hơn [4]
Trang 2931
Về cơ bản thì thuật toán nén SPIHT sẽ nén các hệ số đã qua biến đổi bằng cách loại
bỏ bớt các hệ số mà có biên độ nhỏ, đồng thời bỏ bớt những bit có trọng số thấp (LSB) của các hệ số có biên độ cao Như vậy, khi khôi phục lại thì tất cả các hệ số được khôi phục sẽ có giá trị xấp xỉ giá trị ban đầu Việc loại bỏ bao nhiêu số hệ số có biên độ nhỏ và bỏ bao nhiêu
số bit có trọng số thấp là do ta lựa chọn, như vậy tức là ta có thể chọn tỉ lệ nén như mong muốn
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
Mặt khác ta có:
2
^ , ,
N c c D p p D
Đ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 2n1 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ừ 8
7
2 đến ( 8
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ừ
Trang 30số ở 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) 7xếp sau 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 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
3.2.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:
Trang 3133
Hình 12: Ý tưởng của thuật toán nén ảnh SPIHT
Để hiện thực hóa ý tưởng của thuật toán nén ảnh SPIHT, tác giả đã 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 [8]
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
Trang 3234
+ 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)
Hình 13:Spatial Orientation Trees
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 tea độ 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 3335
Hình 14: Cách thực hiện thuật toán SPIHT
3.2.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 3436
Hình 15: Minh họahệ số biến đổi Wavelet
Ta tiến hành mã hóa qua 3 pass và tạo ra chuỗi bit để truyền đi; sau đó tiến hành giải mã từ các bit này
Trang 3537
Hệ số ở tọa độ (0,0) = 26 >2 hệ số ở tọa độ này là quan trọng truyền bit 1, tiếp theo
là bit 1 để chứng tỏ hệ số này là dương và chuyển tọa độ đến LSP Ba hệ số còn lại là không quan trọng truyền 3 bit 0 và vẫn để chúng ở LIP
LIS:
Hình 18: Minh họa LIS
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:
Hình 19: Minh họa LSP
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
Second pass:
Khởi tạo:
Trang 36Hình 21: Minh họa tiến trình Second Pass
Đầ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:
Trang 3739
Hình 22: Minh họa 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:
Hình 23: Minh họa khởi tạo Thirdpass
Ngưỡng n22 4
Trang 3840
Hình 24: Minh họa tiến trình Third pass
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à:
Hình 25: Minh họa kết quả tiến trình Third pass
Giải mã
First pass:
Khởi tạo:
Trang 3941
Hình 26: Minh họa khởi tạo First Pass
Giá trị được truyền đi ở first pass: n = 4 và chuỗi bit 11000000
Hình 27: Minh họa tiến trình First Pass
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à
2422
2
2n n1 4 3
Như vậy qua first pass, các hệ số được khôi phục lại là:
Hình 28: Minh họa hệ số được khôi phục của First Pass
Danh sách các tập hợp được cập nhật lại như sau:
Trang 4042
Hình 29: Minh họa danh sách các tập hợp sau cập nhật
Second pass:
Hình 30: Minh họa tiến trình Second pass
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à 23 22 12 Ta chuyển 0,1D
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à 2423128
Như vậy các hệ số khôi phục qua bước second pass là: