Nghiên cứu và thử nghiệm giải thuật nén ảnh tiên tiến Advanced Image conding trong truyền thông Nghiên cứu và thử nghiệm giải thuật nén ảnh tiên tiến Advanced Image conding trong truyền thông Nghiên cứu và thử nghiệm giải thuật nén ảnh tiên tiến Advanced Image conding trong truyền thông luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Trang 2bộ giáo dục và đào tạo trường đại học bách khoa hà nội
Trang 3MỤC LỤC
LỜI CẢM ƠN 4
LỜI CAM ĐOAN 5
LỜI NÓI ĐẦU 6
TÓM T ẮT LUẬN VĂN 8
ABSTRACT 9
BẢNG CÁC CHỮ VIẾT TẮT 10
DANH SÁCH CÁC HÌNH V À BẢNG BIỂU 11
CHƯƠNG 1: TỔNG QUAN VỀ NÉN ẢNH TRONG TRUYỀN THÔNG 14
1.1 Khái quát về phương pháp nén ảnh 14
1.1.1 Phân loại ảnh số 14
1.1.1.1 Phân loại ảnh theo dữ liệu 14
1.1.1.2 Phân loại ảnh theo tông màu 14
1.1.2 Nhu cầu nén ảnh trong truyền thông 15
1.1.3 Các phương pháp nén ảnh 16
1.1.4 Các bước xử lý của một hệ thống nén ảnh trong truyền thông 16
1.1.4.1 Các bước xử lý cơ bản của quá trình nén ảnh trong truyền thông 17
1.1.4.2 Các bước xử lý của quá trình giải nén trong truyền thông 18
1.2 Một số độ đo về chất lượng nén ảnh 19
1.2.1 Tỷ số nén và tốc độ bit 19
1.2.2 Độ phức tạp và thời gian thực hiện 20
1.2.3 Các độ đo tổn hao 20
1.3 Phương pháp nén ảnh theo chuẩn JPEG 22
1.3.1 Giới thiệu chung về chuẩn nén ảnh JPEG 22
1.3.2 Các kiểu nén ảnh theo chuẩn JPEG 23
1.3.3 Kỹ thuật nén ảnh JPEG cơ sở (Baseline JPEG) 26
1.3.3.1 Chuyển đổi không gian màu 26
1.3.3.2 Sắp xếp dữ liệu ảnh gốc 27
1.3.3.3 Thuật toán nén ảnh JPEG cơ sở 28
1.3.3.4 Ví dụ minh họa thuật toán nén ảnh JPEG cơ sở 33
1.3.4 Nén và chất lượng ảnh JPEG 37
1.4 Phương pháp nén ảnh theo chuẩn JPEG2000 38
1.4.1 Giới thiệu chung về chuẩn nén ảnh JPEG2000 38
1.4.2 Các phần của chuẩn JPEG2000 (JPEG2000 part) 40
1.4.3 Tìm hiểu kỹ thuật nén theo chuẩn JPEG2000 Phần 1 41
1.4.3.1 Biến đổi wavelet 42
1.4.3.2 Lượng tử hoá 45
1.4.3.3 Mã hóa Entropy 45
1.4.4 Nén và chất lượng ảnh JPEG2000 46
1.5 Phương pháp nén ảnh theo chuẩn H.264 47
1.5.1 Giới thiệu chung về chuẩn nén ảnh H.264 47
Trang 41.5.2 Tìm hiểu thuật toán nén ảnh theo chuẩn H.264 48
1.5.2.1 Quá trình nén theo chuẩn H.264 48
1.5.2.2 Quá trình giải nén theo chuẩn H.264 50
1.5.3 Nén và chất lượng nén theo chuẩn H.264 50
CHƯƠNG 2: PHƯƠNG PHÁP NÉN ẢNH TIẾN TIẾN (ADVANCED IMAGE CODING) 51
2.1 Giới thiệu phương pháp nén ảnh tiên tiến (Advanced Image Coding) 51
2.1.1 Khái niệm 51
2.1.2 Đặc điểm của phương pháp nén ảnh tiên tiến 52
2.2 Nghiên cứu thuật toán nén ảnh theo phương pháp tiên tiến 52
2.2.1 Giới thiệu thuật toán được nghiên cứu 52
2.2.1.1 Đặc điểm của thuật toán AIC 52
2.2.1.2 Sơ đồ khối của thuật toán AIC 53
2.2.2 AIC – Chuyển đổi màu (Color conversion) 54
2.2.3 AIC – Dự đoán khối (Block Prediction) 56
2.2.3.1 Các kiểu dự đoán khối (Prediction mode) 57
2.2.3.2 Các khối phần dư (Residual Blocks) 60
2.2.4 AIC – Biến đổi Cosine rời rạc và lượng hóa 61
2.2.4.1 DCT một chiều (1-Dimensional DCT) 61
2.2.4.2 DCT 2-Chiều (2-Dimensional DCT) 64
2.2.4.3 Lượng hóa (Quantisation) 65
2.2.5 AIC – Mã hóa số học nhị phân thích nghi ngữ cảnh 65
2.2.5.1 cabAC – mã hóa số học (Arithmetic Coding) 65
2.2.5.2 caBac – nhị phân (Binary) 69
2.2.5.3 CAbac – Thích nghi ngữ cảnh (Context Adaptive) 70
2.3 N én và chất lượng ảnh AIC 71
CHƯƠNG 3: THỬ NGHIỆM, CÀI ĐẶT VÀ ĐÁNH GIÁ THUẬT TOÁN NÉN ẢNH TIÊN TIẾN 73
3.1 Tìm hiểu công cụ thử nghiệm 73
3.1.1 Môi trường và công cụ phát triển chương trình 73
3.1.1.1 Ngôn ngữ lập trình Delphi 73
3.1.1.2 Môi trường lập trình tích hợp Borland Delphi Enterprise 7 74
3.1.2 Đặc tả chức năng gốc của chương trình “AIC.exe” 74
3.1.3 Tìm hiểu kiến trúc cài đặt của chương trình 77
3.1.4 Tìm hiểu cài đặt chi tiêt dự đoán khối 82
3.2 Thử nghiệm và phân tích kết quả thực hiện các thuật toán 88
3.2.1 Tiêu chí đánh giá các thuật toán được thử nghiệm 88
3.2.2 Kịch bản thử nghiệm 94
3.2.2.1 Kịch bản 1 94
3.2.2.2 Kịch bản 2 95
3.2.2.3 Kịch bản 3 96
3.2.2.4 Kịch bản 4 98
3.2.2.5 Kịch bản 5 98
Trang 53.2.3 Tiến hành cài đặt chương trình để thực hiện theo các kịch bản thử nghiệm 99
3.2.3.1 Yêu cầu cài đặt để thử nghiệm chương trình theo kịch bản 99
3.2.3.2 Cài đặt chương trình theo yêu cầu thử nghiệm 100
3.2.4 Tiến hành thử nghiệm theo các kịch bản 103
3.2.4.1 Các file ảnh gốc dùng để thử nghiệm 103
3.2.4.2 Thử nghiệm theo kịch bản 1 105
3.2.4.3 Thử nghiệm theo kịch bản 2 107
3.2.4.4 Thử nghiệm theo kịch bản 3 110
3.2.4.5 Thử nghiệm theo kịch bản 4 112
3.2.4.6 Thử nghiệm theo kịch bản 5 116
3.2.5 Tổng hợp kết quả phân tích, đánh giá 120
KẾT LUẬN 123
TÀI LIỆU THAM KHẢO 125
Trang 6LỜI CẢM ƠN
Luận văn “Nghiên cứu và thử nghiệm giải thuật nén ảnh tiên tiến (Advanced Image Coding) trong truyền thông” đã hoàn theo theo đúng nội dung và kế hoạch
đề ra với sự giúp đỡ, góp ý và động viên của nhiều cá nhân, đoàn thể
Trước hết, em xin bày tỏ lòng biết ơn chân thành đối với PGS.TS Nguyễn Thị Hoàng Lan, giảng viên khoa Công nghệ thông tin, Trường Đại học Bách Khoa Hà Nội, đã hướng dẫn, chỉ bảo, động viên và khích lệ em tận tình trong quá trình học tập, nghiên cứu để hoàn thành luận văn này Những kiến thức mà cô bổ sung, những định hướng mà cô chỉ dẫn và cả những lời động viên, khích lệ của cô trong thời gian làm luận văn đã giúp em đạt được thành quả ngày hôm nay Em xin chân thành cảm ơn cô!
Em cũng xin chân thành cảm ơn các thầy cô khoa Công nghệ thông tin, Trường Đại học Bách Khoa Hà Nội, đã chỉ dạy và giúp đỡ em hoàn thành nhiệm vụ học tập của mình
Cuối cùng, mình xin cảm ơn những người bạn, những người đồng nghiệp thân thiết đã thường xuyên động viên, khích lệ và tạo điều kiện cho mình trong thời gian làm luận văn
Mặc dù đã có nhiều cố gắng hoàn thành luận văn, tuy nhiên, do thời gian và kiến thức có hạn của bản thân tác giả nên chắc chắn trong bản luận văn không tránh khỏi thiếu sót Rất mong các thầy cô và bạn đọc góp ý để tác giả có thể tiếp tục hoàn thiện và phát triển bản luận văn khi có điều kiện
Tác giả
Trang 7LỜI CAM ĐOAN
Tôi xin cam đoan tất cả nội dung của luận văn là kết quả của quá trình nghiên cứu và tìm hiểu của bản thân tôi, dưới sự chỉ bảo của giáo viên hướng dẫn là
PSG.TS Nguyễn Thị Hoàng Lan, bộ môn Mạng và truyền thông, khoa Công nghệ
thông tin, trường Đại học Bách Khoa Hà Nội Các kết quả nêu trong luận văn là trung thực, không sao chép toàn văn của bất kỳ công trình nào khác
Hà Nội, ngày 12 tháng 11 năm 2009 Tác giả
Nguyễn Thị Hoa
Trang 8LỜI NÓI ĐẦU
Đúng như tên gọi của luận văn “Nghiên cứu và thử nghiệm giải thuật nén ảnh
tiên tiến (Advanced Image Coding) trong truyền thông”, mục đích của luận văn này
là tìm hiểu, nghiên cứu thuật toán nén ảnh tiên tiến một thuật toán nén ảnh mới đang được phát triển, chưa trở thành chuẩn nén ảnh được sử dụng rộng rãi, nhưng
có nhiều ưu điểm phù hợp với lĩnh vực truyền thông
Ngày nay, sự ra đời của các chuẩn nén ảnh nổi tiếng như JPEG, JPEG2000, H.264 đã phần nào đáp ứng được nhu cầu lưu trữ, trao đổi ảnh trong truyền thông đang ngày càng lớn mạnh Tuy nhiên, bản thân các phương pháp nén ảnh theo các chuẩn này vẫn còn một số hạn chế, chưa hoàn toàn phù hợp với nén ảnh trong truyền thông Chẳng hạn như JPEG thì có ưu điểm thuật toán đơn giản, dễ cài đặt, nhưng lại hạn chế ở khả năng nén thấp, và chất lượng ảnh cũng chưa tốt JPEG2000
là một chuẩn nén mới ra đời, đã khắc phục được các hạn chế của JPEG nhưng bản thân nó lại có hạn chế rất lớn là thuật toán quá phức tạp và không ổn định Do đó, lĩnh vực nén ảnh vẫn đang tiếp tục phát triển để đưa ra được các phương pháp nén ảnh phù hợp hơn cho truyền thông Đây cũng là nguyên nhân ra đời phương pháp
nén ảnh tiên tiến AIC (Advanced Image Coding) mà luận văn tìm hiểu và cũng là cơ
sở thực tiễn của luận văn
Nội dung của luận văn được trình bày theo các chương như sau:
Chương 1 – Tổng quan về nén ảnh trong truyền thông: trình bày các kiến
thức nền tảng về ảnh và nén ảnh trong truyền thông, cũng như trình bày kỹ các phương pháp nén ảnh theo ba chuẩn nén ảnh nổi tiếng hiện nay là JPEG, JPEG2000
và H.264
Chương 2 – Phương pháp nén ảnh tiên tiến: trình bày nội dung lý thuyết
chính của phương pháp nén ảnh tiên tiến và đi sâu tìm hiểu một thuật toán nén ảnh tiên tiến AIC
Chương 3 – Thử nghiệm cài đặt và đánh giá thuật toán nén ảnh tiên tiến:
trình bày các kết quả tìm hiểu công cụ thử nghiệm, xây dựng, cài đặt các kịch bản
Trang 9thử nghiệm, đánh giá thuật toán nén ảnh AIC và so sánh nó với các thuật toán nén ảnh JPEG, JPEG2000
Tác giả
Nguyễn Thị Hoa
Trang 10TÓM T ẮT LUẬN VĂN
Luận văn “Nghiên cứu và thử nghiệm giải thuật nén ảnh tiên tiến (Advanced Image Coding) trong truyền thông” xuất phát từ yêu cầu tìm hiểu, đánh giá một phương pháp nén ảnh mới, có khả năng ứng dụng cao trong truyền thông Do đó, luận văn trình bày một số lý thuyết cơ bản về nén ảnh và một số chuẩn nén ảnh được dùng phổ biến như JPEG, JPEG2000 và H.264 để cung cấp cái nhìn tổng quan
về nén ảnh và các phương pháp nén ảnh trong truyền thông hiện nay Phần nội dung chính của luận văn đi sâu tìm hiểu kỹ lý thuyết của phương pháp nén ảnh tiên tiến
và một thuật toán nén ảnh theo phương pháp này Luận văn cũng đã so sánh, phân tích, đánh giá hiệu quả nén của phương pháp nén ảnh tiên tiến dựa trên kết quả thử nghiệm nén ảnh theo các kịch bản mà luận văn xây dựng Công cụ để tiến hành các thử nghiệm trong luận văn này là chương trình được tác giả luận văn phát triển thêm
từ phần mềm mã nguồn mở “AIC”, một phần mềm cài đặt thuật toán nén ảnh tiên tiến được tải về từ trang web http://www.bilsen.com/aic/
Trang 11ABSTRACT
The thesis “Research and experiment Advanced Image Coding algorithm in communication network” originate from the need of researching and evaluating a new image coding which has high ability to apply in network communication So, this thesis will present some basis knowledge about image compression and some popular image coding standard such as JPEG, JPEG2000 and H.264 With this way, the thesis provide to readers the overview of image compression and its methods in communication nowadays The main contents of this thesis presents detail about theory of Advanced Image Coding method and a specific algorithm of this method named AIC This thesis also compare, analyze and evaluate the compression performance of AIC algorithm by some scenarios that created by the thesis’s author Application to experiment in this thesis is “AIC.exe” that implemented AIC algorithm following the theory of AIC method This application is an open source and can be downloaded from website http://www.bilsen.com/aic/
Trang 12BẢNG CÁC CHỮ VIẾT TẮT
1 AIC Advanced Image Coding
2 BPC Fractional bit-plane
3 BPP Bit Per Pixel
C
Context Adaptive Binary Arithmetic Coding algorithms
5 DCT Discrete Cosine Transform
6 DWT Discrete Wavelet Transform
7 EBCOT Embedded Block Coding with Optimized Truncation
8 FDCT Forward DCT
9 FIR Finite Impulse Response filter
10 IDCT Inverse DCT
11 ISO International Standards Organization
12 ITU-T International Telecommunication Union -
Telecommunication Standardization Sector
13 JPEG Joint Photographic Expert Group
14 MCU Minimum Coded Unit
15 MPEG Motion Picture Experts Group
Trang 13DANH SÁCH CÁC H ÌNH VÀ BẢNG BIỂU
Hình 1- 1: Sơ đồ khối một hệ thống nén ảnh truyền thông: nén (a) và giải nén (b) 17
Hình 1- 2: Nén JPEG tuần tự không tổn hao [8] 23
Hình 1-3: Nén JPEG lũy tiến chọn phổ (a) và xấp xỉ dần (b) [8] 25
Hình 1- 4: Nén JPEG đa phân giải phân cấp [8] 26
Hình 1-5: Thứ tự MCU: YCbCr 4:4:4 (a), YCbCr 4:2:2 (b), YCbCr 4:2:0 (c) [8] 28
Hình 1- 6: JPEG cơ sở: nén (a) và giải nén (b) [8] 28
Hình 1-7: Hiệu các hệ số DC [8] 32
Hình 1-8: Chuỗi zig-zag [8] 32
Hình 1-9: Dữ liệu ảnh gốc [1] 33
Hình 1-10: Các hệ số DCT thuận [1] 34
Hình 1-11: Bảng lượng hóa [1] 34
Hình 1-12: Các hệ số DCT đã lượng hóa [1] 34
Bảng 1-1: Bảng mã Huffman cho sai phân của hệ số DC [10] 35
Bảng 1-2: Dải độ lớn hệ số AC tương ứng với kích thước bit [10] 36
Bảng 1-3: Tính toán giá trị VLC và VLI cho sai phân DC và các hệ số AC [10] 36
Hình 1- 13: Khối dữ liệu giải mã đã lượng tử [1] 36
Hình 1-14: Khối dữ liệu khôi phục từ bộ giải nén JPEG [1] 37
Hình 1- 15: Sơ đồ khối của thuật toán nén ảnh JPEG2000 Nén (a) và Giải nén (b) [6] 41
Hình 1-16: Thực hiện chia ô (tilling) và dịch mức DC trước khi biến đổi Wavelet [6] 42
Hình 1-17: Mức phân giải đầu tiên áp dụng DWT hai chiều [8] 43
Hình 1-18: Các hệ số của bộ lọc cho quá trình nén có tổn thất [6] 44
Hình 1-19: Các hệ số của bộ lọc cho quá trình nén không tổn hao [6] 44
Hình 1- 20: Sơ đồ khối nén và giải nén theo chuẩn H.264 [11] 48
Hình 1-21: Dự đoán trong khối và liên khối theo chuẩn H.264 [11] 49
Hình 2- 1: Sơ đồ khối nén và giải nén AIC 53
Hình 2-2: Ảnh RGB và các thành phần màu RGB của nó 54
Hình 2-3: Ảnh YCbCr và các thành phần màu Y, Cb, Cr của nó 55
Hình 2- 4: Vị trí khối hiện tại trong dự đoán khối AIC [3] 56
Hình 2-5: Khối hiện tại và 25 điểm ảnh dùng để dự đoán khối [3] 57
Hình 2- 6: Dự đoán khối AIC mode 0 [3] 57
Hình 2-7: Dự đoán khối AIC mode 1 [3] 57
Hình 2- 8: Dự đoán khối AIC mode 2 [3] 57
Hình 2-9: Dự đoán khối AIC mode 3 [3] 58
Hình 2-10: Dự đoán khối AIC mode 4 [3] 58
Hình 2- 11: Dự đoán khối AIC mode 5 [3] 58
Hình 2-12: Dự đoán khối AIC mode 6 [3] 58
Hình 2- 13: Dự đoán khối AIC mode 7 [3] 59
Hình 2-14: Dự đoán khối AIC mode 8 [3] 59
Hình 2- 15: Ảnh gốc (trái) và ảnh dự đoán (phải) [3] 60
Hình 2- 16: Ảnh phần dư độ chói [3] 61
Hình 2-17: Kết quả biến đổi FDCT theo phương pháp AIC [3] 62
Trang 14Hình 2-18: Khôi phục mẫu từ các hệ số DCT [3] 63
Hình 2- 19: Cây Huffman cho mã hóa từ "SQUEEZE" [3] 66
Hình 2- 20: Bit mã hóa Huffmancủa từ "SQUEEZE" [3] 67
Hình 2-21: Chia đoạn cấp 1 các ký hiệu trong từ "SQUEEZE" theo mã hóa số học [3] 67
Hình 2- 22: Chia đoạn cấp 2 các ký hiệu trong từ "SQUEEZE" theo mã hóa số học [3] 67
Hình 2-23: Chia đoạn các ký hiệu trong từ "SQUEEZE" theo mã hóa số học [3] 68
Hình 2- 24: Cây mã Huffman của từ chỉ gồm 2 ký hiệu [3] 69
Hình 2-25: Bit mã của mã hóa Huffman cho từ gồm hai ký hiệu [3] 69
Hình 3-1: Môi trường lập trình Borland Delphi 7 74
Hình 3- 2: Sơ đồ phân cấp chức năng của chương trình AIC.exe 75
Hình 3-3: Chức năng điều chỉnh tốc độ nén ảnh 76
Hình 3- 4: Chức năng lựa chọn thuật toán kiểm thử 76
Hình 3-5: Chức năng tự động chạy các thuật toán muốn so sánh 77
Hình 3- 6: Chức năng vẽ đồ thị quan hệ chất lượng và độ nén 77
Hình 3-7: Sơ đồ lớp dùng để đọc, ghi các định dạng file ảnh khác nhau 78
Hình 3-9: Biểu đồ tuần tự của quá trình nén, giải nén một ảnh ở định dạng bất kỳ 79
Hình 3- 10: Biểu đồ lớp của khối thực hiện nén ảnh AIC 80
Hình 3-11: Biểu đồ lớp của khối thực hiện thuật toán giải nén ảnh AIC 81
Hình 3- 12: Cài đặt dự đoán khối Mode 0 [3] 82
Hình 3-13: Cài đặt dự đoán khối Mode 1 [3] 82
Hình 3- 14: Cài đặt dự đoán khối Mode 2 [3] 83
Hình 3-15: Cài đặt dự đoán khối Mode 3 [3] 83
Hình 3-16: Cài đặt dự đoán khối Mode 4 [3] 84
Hình 3- 17: Cài đặt dự đoán khối Mode 5 [3] 85
Hình 3-18: Cài đặt dự đoán khối Mode 6 [3] 86
Hình 3- 19: Cài đặt dự đoán khối Mode 7 [3] 86
Hình 3-20: : Cài đặt dự đoán khối Mode 8 [3] 87
Hình 3- 21: Sơ đồ tính độ nén BPP bằng chương trình AIC.exe 89
Hình 3- 22: Mối quan hệ giữa hệ số Quality và BPP 90
Hình 3-23: Sơ đồ tính độ đo PSNR bằng chương trình AIC.exe 92
Hình 3- 24: Sơ đồ khối tính độ đo phức tạp thuật toán 93
Hình 3-25: Sơ đồ thực hiện kịch bản 1 95
Hình 3- 26: Sơ đồ thực hiện kịch bản 2 96
Hình 3-27: Sơ đồ thực hiện kịch bản 3 97
Hình 3- 28: Sơ đồ thự hiện kịch bản 4 98
Hình 3- 29: Sơ đồ thực hiện kịch bản 5 99
Hình 3-30: Cài đặt thêm giao diện hiển thị độ đo thời gian thực hiện thuật toán 100
Hình 3- 31: Giao diện lựa chọn và vẽ đồ thị độ đo tương ứng 100
Hình 3-32: Cài đặt tính toán và hiển thị thời gian thực hiện thuật toán 101
Hình 3- 33: Cài đặt vẽ đồ thị theo độ đo đã chọn 103
Hình 3-34: Kết quả thử nghiệm theo kịch bản 1 với ảnh lena.bmp 512x512, 64x64, 32x32 105
Hình 3-35: Kết quả thử nghiệm theo kịch bản 1 với ảnh house.bmp 512x512, 64x64, 32x32 105
Hình 3- 36: Kết quả thử nghiệm theo kịch bản 1 với ảnh lena.pgm 512x512 106
Hình 3-37: Kết quả thử nghiệm theo kịch bản 1 với ảnh simple.bmp 512x512, 64x64, 32x32 106
Trang 15Bảng 3-1: Dải tốc độ bit (bpp) của ba thuật toán 106
Hình 3- 39: Đồ thị PSNR-BPP của ba thuật toán với ảnh lena.bmp 512x512, 64x64, 32x32 108
Hình 3- 40: Đồ thị độ đo PSNR-BPP của ba thuật toán với ảnh house.bmp 512x512, 64x64, 32x32 108
Hình 3-41: Đồ thị độ đo PSNR-BPP của ba thuật toán với ảnh lena.pmg 512x512 108
Hình 3- 42: Đồ thị độ đo PSNR-BPP của ba thuật toán với ảnh simple.bmp 512x512, 64x64, 32x32 108
Bảng 3-2: Dải độ đo PSNR của ba thuật toán 109
Hình 3- 43: Đồ thị Total Time - PSNR của ba thuật toán cho ảnh lena.bmp 512x512, 64x64, 32x32 110
Hình 3-44: Đồ thị Total Time - PSNR của ba thuật toán cho ảnh house.bmp 512x512, 64x64, 32x32 111 Hình 3-45: Đồ thị Total Time - PSNR của ba thuật toán cho ảnh lena.pgm 512x512 111
Hình 3- 46: Đồ thị Total Time - PSNR của ba thuật toán cho ảnh simple.bmp 512x512, 64x64, 32x32 111 Hình 3-47: Ảnh khôi phục của các thuật toán trên ảnh lena.bmp 512x512, tốc độ bit 0.5 bpp 112
Bảng 3-4: Các độ đo của ba thuật toán với ảnh lena.bmp 512x512 ở tốc độ bit 0.5 bpp 113
Hình 3-48: Ảnh khôi của các thuật toán trên ảnh lena.bmp 512x512, tốc độ bit 9.8 bpp 113
Bảng 3-5: Các độ đo của ba thuật toán với ảnh lena.bmp 512x512 ở tốc độ bit 9.8 bpp 114
Hình 3-49: Ảnh khôi phục của các thuật toán trên ảnh lena.bmp 64x64, tốc độ bit 1.4 bpp 114
Bảng 3-6: Các độ đo của ba thuật toán với ảnh lena.bmp 64x64 ở tốc độ bit 1.4 bpp 115
Hình 3- 50: Ảnh khôi phục của các thuật toán trên ảnh lena.bmp 64x64, tốc độ bit 4.1 bpp 115
Bảng 3-7: Các độ đo của ba thuật toán với ảnh lena.bmp 64x64 ở tốc độ bit 4.1 bpp 115
Hình 3- 51: Ảnh khôi phục của các thuật toán trên ảnh house.bmp 512x512, tốc độ bit 0.25 bpp 117
Bảng 3-8: Các độ đo của ba thuật toán với ảnh house.bmp 512x512 ở tốc độ bit 0.25 bpp 117
Hình 3- 52: Ảnh khôi phục của các thuật toán trên ảnh simple.bmp 512x512, tốc độ bit 0.25 bpp 118
Bảng 3-9: Các độ đo của ba thuật toán với ảnh simple.bmp 512x512 ở tốc độ bit 0.25 bpp 118
Hình 3-53: Ảnh khôi phục của các thuật toán trên ảnh lena.pgm 512x512, tốc độ bit 0.25 bpp 119
Bảng 3-10: Các độ đo của ba thuật toán với ảnh lena.pgm 512x512 ở tốc độ bit 0.25 bpp 119
Trang 16Chương 1: TỔNG QUAN VỀ NÉN ẢNH TRONG
TRUYỀN THÔNG 1.1 Khái quát về phương pháp nén ảnh
1.1.1 Phân loại ảnh số
1.1.1.1 Phân loại ảnh theo dữ liệu
Ảnh nhị phân (bi-level image/ binary image): mỗi điểm ảnh chỉ biểu diễn bởi
một bit và chỉ cho phép phân biệt 2 màu khác nhau Ví dụ: các ảnh được quét bởi máy scanner sử dụng mức mật độ chỉ là hai: một cho thông tin và một cho nền Các ứng dụng thường bao gồm:
• Văn bản, các đường kẻ hay hình minh họa
• Các tài liệu FAX
• Đôi khi là các ảnh đồ họa với các sắc xám
Ảnh đa mức xám (greyscale image): mỗi điểm ảnh biểu diễn bởi 8 bit màu và
một điểm ảnh biểu diễn 256 mức giá trị của độ xám cho một màu Ví dụ: các ảnh được quét bằng máy scanner sử dụng mức mật độ đa mức để chụp được các sắc khác nhau giữa màu đen và màu trắng Ảnh xám phù hợp cho ảnh y học và ảnh đồ họa đen trắng
Ảnh màu (color image): ảnh được chụp bởi máy scanner màu, sử dụng nhiều
mức cường độ và lọc để chụp các mức sáng khác nhau cho các màu chính: đỏ (R – Red ), xanh dương (G – Green), xanh lục (B – Blue) Một số hệ thống máy tính sử
dụng 16 bit, 24 bit, 36 bit hay 48 bit để biểu diễn các giá trị màu Thông dụng nhất
là dùng 24 bit để biểu diễn các giá trị màu
1.1.1.2 Phân loại ảnh theo tông màu
Ảnh có tông màu liên tục (continuous-tone image): Loại ảnh này tương tự
ảnh tự nhiên có chứa các vùng màu Các màu này được coi như liên tục khi mắt người di chuyển theo các vùng của ảnh Điều này là do ảnh thường có nhiều màu hay các mức xám tương tự nhau và mắt người không dễ dàng phân biệt những thay
Trang 17đổi nhỏ về màu sắc của các điểm ảnh kề nhau Các ví dụ về loại ảnh này là ảnh chụp bởi máy ảnh số hay các ảnh đồ họa hay ảnh vẽ được quét từ máy scanner
Ảnh có tông màu rời rạc (discrete-tone image): còn gọi là ảnh đồ họa
(graphical image) hay ảnh nhân tạo (synthetic image) Ảnh thường không có nhiễu
và mờ như ảnh tự nhiên Các điểm ảnh kề nhau thường hoặc là giống hệt nhau hoặc
là khác nhau đáng kể về giá trị Loại ảnh này có thể chứa các đặc điểm hay điểm ảnh giống nhau lặp đi lặp lại trong ảnh Ví dụ cho loại ảnh này là các đối tượng đồ họa hay ảnh nhân tạo, một trang văn bản, một biểu đồ hay nội dung của màn hình máy tính
Ảnh tựa hoạt hình (cartoon-like image): Loại ảnh này bao gồm các vùng
màu đồng nhất nhưng các vùng liền kề có thể có màu rất khác nhau Các vùng màu đồng nhất này là đặc điểm rất tốt cho nén ảnh
1.1.2 Nhu cầu nén ảnh trong truyền thông
Các file ảnh thường có kích thước lớn do một ảnh là hai chiều và có thể hiển thị quá nhiều màu Trong một ảnh bitmap, mỗi điểm ảnh yêu cầu 24 bit để biểu diễn cho các màu của nó Vấn đề ảnh kích thước lớn sẽ dẫn đến tốn kém dung lượng để lưu trữ và đặc biệt là gặp khó khăn khi truyền tải qua mạng do hạn chế của băng thông đường truyền Chẳng hạn, một file ảnh kích thước 4”x4” được quét ở độ phân
giải 300dpi (dot per inch) với 24bits/pixel thì sẽ yêu cầu lớn lơn 4MB dung lượng
bộ nhớ Ảnh này, khi truyền trên đường truyền điển hình (64k bit/giây) thì cần đến hơn một phút để truyền Trong khi đó, nhu cầu lưu trữ và truyền các file ảnh là rất lớn Do đó, nhu cầu tìm ra các phương pháp nén để giảm kích thước các file ảnh trở thành vấn đề quan trọng của truyền thông
Các phương pháp nén ảnh có thể lưu trữ, biểu diễn các file ảnh với kích thước nhỏ hơn ảnh gốc là do hai nguyên nhân chính sau:
• Trong file ảnh tồn tại dữ liệu dư thừa Nếu ta loại bỏ được các dư thừa này thì có thể giảm kích thước file ảnh mà không ảnh hưởng đến nội dung thông tin trong ảnh
• Khả năng cảm nhận của mắt người là có giới hạn và trong một giới hạn sai số cho phép, mắt người không thể phân biệt được sự khác biệt giữa ảnh nén và ảnh gốc dù cho ảnh nén có mất mát một lượng thông
Trang 18tin so với ảnh gốc Mà ảnh trong truyền thông chủ yếu là để con người nhìn nên có thể chấp nhận nén mất mát thông tin
Mỗi loại ảnh chứa một lượng dư thừa nhất định nhưng nguyên nhân dư thừa khác nhau và điều này dẫn đến các phương pháp nén ảnh khác nhau Đó là lý do vì sao có nhiều phương pháp nén khác nhau được phát triển
1.1.3 Các phương pháp nén ảnh
Căn cứ vào đặc điểm ảnh khôi phục sau khi nén, người ta chia thành hai phương pháp nén ảnh chính sau:
Nén không tổn hao (lossless compression): Một phương pháp nén ảnh là
không tổn hao khi có thể khôi phục lại chính xác ảnh gốc từ ảnh nén, không bị mất mát thông tin Hạn chế của nén không tổn hao là chỉ thu được hiệu quả nén nhỏ Nén không tổn hao được sử dụng trong trường hợp thông tin trong ảnh gốc là quá quan trọng và việc mất mát thông tin là không chấp nhận được, chẳng hạn như ảnh
y tế, ảnh các văn bản
khi không thể khôi phục lại chính xác ảnh gốc từ ảnh nén Nén có tổn hao có thể cho hiệu quả nén cao hơn nhiều so với nén không tổn hao mà vẫn đảm bảo sự mất mát thông tin là chấp nhận được do mắt người không cảm nhận được sự khác biệt giữa ảnh gốc và ảnh nén Với hiệu quả nén cao, nén ảnh có tổn hao phù hợp với môi trường truyền thông như các ảnh trên web
1.1.4 Các bước xử lý của một hệ thống nén ảnh trong truyền thông
Hình dưới đây mô tả các bước xử lý của một hệ thống nén ảnh trong truyền thông bao gồm hai quá trình nén (compression) và giải nén (de-compression):
Trang 19Hình 1-1: Sơ đồ khối một hệ thống nén ảnh truyền thông: nén (a) và giải nén (b)
Hình (a) mô tả quá trình nén ảnh điển hình, hình (b) mô tả quá trình giải nén điển hình Trong quá trình nén, đầu tiên, dữ liệu ảnh được chia thành các khối có kích thước nhỏ hơn (thường các khối có kích thước 8x8 điểm ảnh), từng khối dữ liệu ảnh này sẽ được đưa vào khối biến đổi để bắt đầu thực hiện quá trình nén ảnh Trong sơ đồ khối trên, chỉ có bước xử lý lượng hóa là gây mất mát thông tin, do đó, phương pháp mã hóa không tổn hao sẽ bỏ qua xử lý này khi nén ảnh và bỏ qua xử
lý giải lượng hóa khi giải nén ảnh
1.1.4.1 Các bước xử lý cơ bản của quá trình nén ảnh trong truyền thông Biến đổi (Transform): Mục đích của khối biến đổi là thực hiện phép biến đổi
trên dữ liệu đầu vào trong không gian quan sát để thu được không gian dữ liệu khác cho hiệu quả nén tốt hơn Tính chất của phép biến đổi sử dụng cho mục đích nén ảnh bao gồm:
• Bảo toàn thông tin: thông tin của ảnh trong không gian trước và sau phép biến đổi là như nhau, không có sự mất mát thông tin nào cả Phép biến đổi là một song ánh, có phép biến đổi ngược tương ứng để
Trang 20thu được dữ liệu chính xác như trong miền không gian ban đầu từ dữ liệu trong miền không gian đã qua biến đổi
• Giảm tương quan trong dữ liệu ảnh để giảm dư thừa dữ liệu
• Tập trung năng lượng thông tin của ảnh vào một số phần tử dữ liệu trong miền không gian mới mà không dàn trải năng lượng thông tin như trong miền không gian ban đầu của ảnh
Với các tính chất phép biến đổi ở trên, quá trình nén ảnh hay dùng các phép biến đổi sau: biến đổi cosin rời rạc (DCT - Discrete Cosine Transform), biến đổi
wavelet (DWT - Discrete Wavelet Transform) Tính chất của phép biến đổi được sử
dụng là thuận nghịch, nghĩa là quá trình biến đổi này không làm mất thông tin của ảnh Đồng thời, quá trình biến đổi cũng là quá trình quyết định chính đến khả năng nén của phương pháp nén ảnh
Lượng hóa (Quantize): Kết quả của quá trình biến đổi là các dữ liệu dưới
dạng số thực hay các số có giá trị lớn nên cần nhiều bộ nhớ để lưu trữ Quá trình lượng hóa thực hiện các phép lượng hóa vec tơ hay các phép lượng hóa vô hướng trên các kết quả dữ liệu biến đổi để thu được dữ liệu mới cần ít bit để biểu diễn hơn Đây là quá trình cho phép điều chỉnh độ nén trong khoảng khả năng nén của ảnh và cũng là quá trình gây mất mát thông tin duy nhất trong quá trình nén ảnh
biểu diễn dữ liệu hiệu quả hơn Các giá trị dữ liệu được biểu diễn ở dạng dòng bit
(bitstream) để đưa lên đường truyền hay lưu trữ Các loại mã hóa thông dụng trong nén ảnh bao gồm: mã hóa loạt dài (run-length), mã hóa Huffman và mã hóa số học
1.1.4.2 Các bước xử lý của quá trình giải nén trong truyền thông
Giải mã (De-code): Dòng bit dữ liệu của ảnh mã hóa được thực hiện giải mã
bằng bộ giải mã tương ứng với loại mã hóa đã dùng khi nén ảnh Kết quả của quá trình giải mã sẽ tạo ra các khối dữ liệu tương ứng với đầu ra của bộ lượng hóa
Giải lượng hóa (De-quantize): Các khối dữ liệu được giải mã sẽ được áp dụng
phép biến đổi ngược của phép lượng hóa đã dùng để thu được dữ liệu đã giải lượng hóa
Trang 21Biến đổi ngược (Inverse Transform): Các khối dữ liệu đã giải lượng hóa được
thực hiện phép biến đổi ngược của phép biến đổi đã dùng khi mã hóa và cho kết quả
1.2.1 Tỷ số nén và tốc độ bit
Tỷ số nén (compression ratio): là độ đo thông dụng nhất để đánh giá hiệu
năng của thuật toán nén ảnh Nó được tính bằng tỉ số giữa số bit biểu diễn ảnh gốc
so với số bit biểu diễn ảnh nén theo công thức sau:
o c
CC
R= ( 1-1 ) Trong đó, R: tỷ số nén
Co: Số bít biểu diễn ảnh gốc
Cc: Số bit biểu diễn ảnh nén
Chẳng hạn, lưu trữ một ảnh kích thước 256x256 dùng 1 byte để biểu diễn mỗi điểm ảnh, cần 65536 Byte Nếu ảnh nén chỉ cần 4096 Byte để biểu diễn thì tỷ số nén là 16:1
Tỷ số nén của phương pháp nén không tổn hao hoàn toàn phụ thuộc vào tính chất của ảnh đầu vào: cùng một thuật toán nén không tổn hao, nếu ảnh đầu vào khác nhau thì sẽ thu được các tỉ số nén khác nhau
Tốc độ bit (bit rate hay bit per sample): là một biến thể của tỉ số nén Độ đo
này cho biết số bit trung bình cần để biểu một điểm ảnh Nó được tính theo công thức sau:
c
CS
Br= (bpp) ( 1-2 )
Trang 22Trong đó, Br: Tốc độ bit Đơn vị: bpp (bit per pixel)
Cc: Số bit biểu diễn ảnh
1.2.2 Độ phức tạp và thời gian thực hiện
Độ phức tạp của thuật toán nén ảnh thường được đo bằng số phép toán số học
và yêu cầu bộ nhớ để thực hiện thuật toán Số phép toán số học được đo bằng đơn vị
triệu phép toán trên giây MOPS (Million of Operatrions Per Second), nhưng trong nén ảnh thường dùng thuật ngữ triệu lệnh trên giây MIPS (Million of Instructions Per Second) Thông thường, khi độ phức tạp thuật toán càng lớn thì hiệu quả nén càng cao, nhưng giá thành và thời gian thực hiện lại tăng
Thời gian thực hiện thuật toán nén và giải nén ảnh cũng là một độ đo hiệu quả nén và độ đo này đặc biệt có ý nghĩa đối với các ứng dụng thời gian thực như tương tác hội thảo truyền hình, duyệt ảnh trực tuyến, truyền thông thoại thời gian thực Một thuật toán nén phức tạp có thể cung cấp một tỉ số nén tốt hơn, nhưng có thể dẫn đến tăng thời gian thực hiện thuật toán và làm cho hiệu năng của hệ thống nén giảm
1.2.3 Các độ đo tổn hao
Mục tiêu của nén ảnh có tổn hao là nhằm đạt được tỉ số nén tốt, tuy nhiên cái giá phải trả cho mục tiêu này là mất một số thông tin so với ảnh gốc Độ đo của các thuật toán hay các hệ thống nén có tổn hao thường bao gồm một độ đo chất lượng của ảnh khôi phục so với ảnh gốc ban đầu
Mặc dù thước đo tốt nhất của sự trung thực của ảnh khôi phục là hỏi một người quen với việc quan sát ảnh và đưa ra ý kiến, nhưng cách này không thực tế về mặt toán học
Trang 23Các công cụ toán học để đo sai số giá trị của hai biến được gọi là độ đo méo
hiệu (difference distortion measure) Xem một ảnh như một ma trận các giá trị, độ
đo của thuật toán nén ảnh có tổn hao thường sử dụng một ma trận chuẩn để đo sự sai khác giữa ảnh khôi phục và ảnh gốc Thông thường, giá trị sai khác nhỏ thì chất lượng ảnh sẽ tốt
Gọi Pi là các điểm ảnh khôi phục và Qi là các điểm ảnh gốc, trong đó i = 1, ,
N Chúng ta có các độ đo hay được dùng sau [7]:
Ma trận độ đo sai số bình phương (squared error measure matrix): đây là
P Q N
σ
=
= ∑ ( 1-6 )
Tỷ số tín hiệu trên nhiễu (SNR – Signal-to-noise-ratio): là tỉ số của giá trị
bình phương trung bình của đầu ra và MSE:
2 2
x d
SNR σσ
Tỷ số tín hiệu mức đỉnh trên nhiễu (PSNR – Peak-signal-to-noise-ratio):
đo sai số liên quan đến giá trị bình phương trung bình của tín hiệu và cũng thường được đo theo thang đo decibel (dB):
σ
Trang 24Ma trận sai phân tuyệt đối trung bình:
1.3.1 Giới thiệu chung về chuẩn nén ảnh JPEG
JPEG là một chuẩn quốc tế đầu tiên cho nén ảnh tĩnh màu và đa mức xám JPEG là chữ viết tắt của Joint Photographic Expert Group, tổ chức đã xây dựng nên chuẩn này vào năm 1991 JPEG được thiết kế phù hợp với ảnh quang cảnh tự nhiên, không thích hợp với các ảnh nhân tạo như ảnh hoạt hình hay ảnh vẽ JPEG thực
hiện tốt nhất với các ảnh có tông màu liên tục (continuous tone) Nó cũng không xử
Các đặc điểm của thuật toán nén ảnh theo chuẩn JPEG:
• Là một công nghệ tiên tiến quan tâm đến tốc độ nén (compression rate) cùng với độ trung thực của ảnh và đặc biệt là trong khoảng độ trung thực so với ảnh gốc được đánh giá “rất tốt”; đồng thời quá trình
mã hóa cần phải được tham số hóa để ứng dụng (hay người dùng) có thể tự thiết đặt độ thỏa hiệp giữa độ nén và chất lượng ảnh
• Có khả năng áp dụng thực tế cho bất cứ loại ảnh số có tông màu liên tục nào, nghĩa là không bị hạn chế bởi chiều của ảnh, không gian màu
Trang 25và cũng không giới hạn cho các loại ảnh có sự hạn chế về nội dung cảnh như độ phức tạp, khoảng màu hay các đặc điểm thống kê
• Có một độ phức tạp tính toán dễ kiểm soát được để có thể cài đặt được
dễ dàng với hiệu năng có thể thực hiện được trong khả năng của CPU cũng như cài đặt phần cứng được với chi phí khả thi cho các ứng dụng yêu cầu hiệu năng cao
1.3.2 Các kiểu nén ảnh theo chuẩn JPEG
JPEG định nghĩa bốn kiểu hay kỹ thuật nén ảnh sau:
lần quét và ảnh khôi phục chính xác như ảnh gốc (mặc dù kết quả nén thấp hơn so với nén có mất mát thông tin) Phương pháp này sử dụng mã hóa dự đoán để giảm
dư thừa không gian của dữ liệu ảnh, kết hợp với mã hóa Huffman (một loại mã hóa entropy) giúp giảm dư thừa trong biểu diễn dữ liệu dòng bit của ảnh Trong phương pháp này không sử dụng khối xử lý lượng tử hóa nên không gây mất mát thông tin
dữ liệu ảnh
Hình 1-2: Nén JPEG tuần tự không tổn hao [8]
Trang 26Nén tuần tự dựa trên DCT (Sequential DCT-based Mode): Nén ảnh trong
một lần quét sử dụng kỹ thuật nén có tổn hao dựa trên biến đổi cosin rời rạc - DCT Kết quả là ảnh giải mã không hoàn toán chính xác giống hệt ảnh gốc mà là một xấp
xỉ của ảnh gốc Kiểu nén này được ứng dụng cài đặt rộng rãi nhất trong các kiểu nén ảnh JPEG và còn được gọi là nén JPEG cơ sở (Baseline JPEG)
nhiều lần quét và cũng giải nén trong nhiều lần quét với mỗi lần quét liên tiếp thì tạo ra ảnh có chất lượng cao hơn Phương pháp này có thể hiển thị ảnh mà không phải đợi cho đến khi thu được toàn bộ dòng bit ảnh đã nén và giải mã như các phương pháp nén ảnh chỉ trong một lần quét Do đó, phương pháp này phù hợp với các ứng dụng xem ảnh cho phép người dùng xem ảnh từ thô đến tinh và có thể lựa chọn dừng việc hiển thị ảnh ở mức độ mong muốn hay chuyển sang ảnh khác mà không phải chờ toàn bộ dữ liệu ảnh được giải nén Trong phương pháp này, ảnh được mã hóa liên tục trong nhiều lần quét Phiên bản thô của lần quét đầu tiên được truyền đi sau đó chất lượng ảnh ở phía nhận sẽ được cải thiện bằng cách truyền thêm dữ liệu bit nén của các lần quét sau Phương pháp này thực hiện tính toán các khối DCT của toàn bộ ảnh, sau đó, từng khối DCT mới được mã hóa entropy Có hai cách mã hóa bổ sung cho các khối DCT là chọn phổ (các thành phần tần số của các hệ số DCT được truyền theo thứ tự ý nghĩa cảm thụ tăng dần) và xấp xỉ dần (các bit của tất cả các hệ số DCT được truyền dần theo thứ tự giảm dần của ý nghĩa) Phương pháp xấp xỉ dần thường cho ảnh đầu tiên có chất lượng cao hơn so với phương pháp chọn phổ Chuẩn JPEG định nghĩa tổng cộng tám loại nén lũy tiến dựa trên DCT
Trang 27Hình 1-3: Nén JPEG lũy tiến chọn phổ (a) và xấp xỉ dần (b) [8]
có thể hiển thị trên các thiết bị khác nhau Phương pháp này cho phép hiển thị các phiên bản có độ phân giải thấp hơn mà không cần phải giải nén ảnh ở độ phân giải đầy đủ Do đó, nó phù hợp với các ứng dụng mà ảnh có độ phân giải cao hiển thị trên thiết bị có độ phần giải thấp hơn Theo phương pháp này, ảnh gốc được lọc và giảm mẫu theo một bội số của hai để thu được độ phân giải mong muốn và ảnh có
độ phân giải thấp hơn này sẽ được mã hóa bằng một trong ba kiểu mã hóa còn lại của chuẩn JPEG Ảnh nén có độ phân giải thấp hơn này lại được giải mã và nội suy lên độ phân giải cao hơn Phần bù của ảnh nội suy này so với ảnh có độ phân giải cao hơn ở mức tiếp theo sẽ được mã hóa bằng một trong ba phương pháp của chuẩn JPEG Quá trình này lặp lại cho đến khi tất cả các độ phân giải được mã hóa Chuẩn JPEG định nghĩa 14 phương pháp khác nhau cho nén phân cấp các ảnh khác nhau Phương pháp đa phân giải hình tháp cho việc cài đặt nén phân cấp được minh họa trong hình sau:
Trang 28Hình 1-4: Nén JPEG đa phân giải phân cấp [8]
1.3.3 Kỹ thuật nén ảnh JPEG cơ sở (Baseline JPEG)
Kỹ thuật nén ảnh JPEG cơ sở là kiểu nén ảnh JPEG được cài đặt và ứng dụng rộng rãi nhất trong truyền thông do các ưu điểm dễ cài đặt và cho chất lượng ảnh nén tương đối tốt Kỹ thuật này được định nghĩa để nén các ảnh có từ một đến bốn thành phần màu có tông màu liên tiếp Nó hỗ trợ nén ảnh xám với một thành phần màu, ảnh màu ở các hệ màu có đến tối đa bốn thành phần màu như RGB (ba thành phần màu), CMYK (bốn thành phần màu) Trong kỹ thuật nén ảnh JPEG cơ sở này, một ảnh ba thành phần màu RGB trước tiên sẽ được chuyển đổi sang không gian độ chói – màu như YCbCr, YUB hay CIELAB Việc chuyển đổi không gian màu này
sẽ giúp tăng hiệu quả nén do tính chất cảm thụ của mắt người trong không gian độ chói – màu Mắt người cảm thụ sự khác biệt trong độ chói tốt hơn sự khác biệt trong thành phần màu nên có thể giảm mẫu thành phần màu mà không ảnh hưởng đến chất lượng ảnh do mắt người không cảm nhận được
Công thức chuyển đổi không gian màu từ RGB sang YCbCr như sau:
Trang 29hỗ trợ tiến hành giảm mẫu (subsampling) hai thành phần màu này theo chiều ngang
và/hoặc theo chiều dọc mà chỉ làm mất mát rất ít thông tin, tạo ra các định dạng màu 4:4:4, 4:2:2, 4:2:0 Định dạng màu 4:4:4 nghĩa là không có thành phần màu nào bị giảm mẫu Định dạng màu 4:2:2 nghĩa là các thành phần màu có cùng độ phân giải với thành phần chói theo chiều dọc, nhưng có độ phân giải theo chiều ngang chỉ bằng một nửa Định dạng màu 4:2:0 nghĩa là các thành phần màu có độ phân giải theo cả chiều dọc và chiều ngang chỉ bằng một nửa thành phần độ chói Khi giảm mẫu thì sẽ làm mất mát thông tin, nên đối với ảnh màu thì đây là bước đầu tiên làm mất mát thông tin Đối với ảnh xám, chỉ có một thành phần màu thì không phải chuyển đổi không gian màu
1.3.3.2 Sắp xếp dữ liệu ảnh gốc
Sau bước chuyển đổi không gian màu thì kích thước các chiều của các thành phần Y, Cb, Cr có thể khác nhau, tùy thuộc vào định dạng lấy mẫu màu Mỗi thành phần màu được chia thành các khối dữ liệu 8x8 và một đơn vị mã hóa nhỏ nhất
MCU (Minimum Coded Unit) trong mã hóa JPEG được hình thành từ cách chọn một hay nhiều khối dữ liệu trong thứ tự quét xen kẽ (interleave) hay không xen kẽ (non-interleave) Khi quét không xen kẽ, các khối dữ liệu của mỗi thành phần màu được lưu trữ và xử lý riêng theo thứ tự quét mành (raster scan order), từ trái sang
phải, từ trên xuống dưới Khi quét xen kẽ, khối dữ liệu của tất cả các thành phần màu sẽ thuộc cùng một MCU
Trang 30Hình 1-5: Thứ tự MCU: YCbCr 4:4:4 (a), YCbCr 4:2:2 (b), YCbCr 4:2:0 (c) [8]
1.3.3.3 Thuật toán nén ảnh JPEG cơ sở
Hình 1-6: JPEG cơ sở: nén (a) và giải nén (b) [8]
Trang 31Hình 1-6 mô tả các bước xử lý chính của kỹ thuật nén JPEG cơ sở, minh họa trường hợp đặc biệt của nén ảnh một thành phần màu (ảnh đa mức xám) Ta có thể nắm được phần cốt lõi của nén ảnh JPEG cơ sở với tư tưởng đây là phần cơ bản của quá trình nén một dòng các khối 8x8 các điểm ảnh xám Nén ảnh màu có thể được xấp xỉ như là nén nhiều ảnh xám, bằng cách nén toàn bộ từng ảnh một hay nén xen
kẽ từng khối 8x8 điểm ảnh của mỗi ảnh
Biến đổi cosine rời rạc (FDCT và IDCT)
Ở đầu vào của bộ mã hóa, các điểm ảnh nguồn được nhóm thành các khối 8x8, dịch chuyển giá trị từ các số nguyên không dấu trong khoảng [0, 2p – 1] thành các
số nguyên có dấu trong khoảng [-2p-1, 2p-1 – 1] và đưa vào biến đổi cosin rời rạc
thuận (Forward DCT – FDCT) Ở đầu ra của của trình giải mã, biến đổi cosin rời rạc đảo (Inverse DCT - IDCT) đưa ra các khối 8x8 điểm ảnh để tạo ra ảnh khôi
phục Các biểu thức sau là định nghĩa toán học lý thuyết của 8x8 FDCT và 8x8 IDCT:
DCT (DCT coefficients) mà giá trị của chúng là được quyết định duy nhất bởi tín hiệu dầu vào 64 điểm xác định
Do đó, các giá trị hệ số DCT có thể được xem như định lượng tương đối của tần số không gian hai chiều được chứa trong tín hiệu đầu vào 64 điểm Các hệ số
Trang 32với tần số bằng 0 theo cả hai chiều được gọi là hệ số DC và 63 hệ số còn lại được gọi là các hệ số AC Do giá trị các điểm ảnh thường biến đổi chậm giữa các điểm trong ảnh nên bước xử lý DCT thuận đóng vai trò cơ bản trong việc nén dữ liệu bằng cách tập trung hầu hết tín hiệu trong miền tần số không gian thấp hơn Với một khối 8x8 của một ảnh bình thường thì hầu hết các tần số có biên độ bằng 0 hoặc gần bằng 0 và không cần phải mã hóa
Khi giải mã, DCT ngược đảo ngược bước xử lý này Nó lấy đầu vào là 64 hệ
số DCT (lúc này đã được lượng hóa) và khôi phục lại tín hiệu ảnh đầu ra 64 điểm bằng cách cộng các tín hiệu cơ sở Về mặt toán học, DCT là ánh xạ một-một giữa các vectơ 64 điểm giữa miền ảnh và miền tần số Nếu DCT thuận và đảo có thể được tính với độ chính xác hoàn hảo và nếu các hệ số DCT không bị lượng tử hóa, thì tín hiệu vectơ 64 điểm có thể khôi phục lại một cách chính xác Về nguyên lý, DCT không tạo ra mất mát thông tin đối với các điểm ảnh trong ảnh gốc, nó chỉ đơn thuần biến đổi chúng sang miền biểu diễn thích hợp cho việc mã hóa
Một số đặc điểm của việc cài dặt DCT thuận và DCT đảo dẫn đến vấn đề về
độ chính xác mà chuẩn JPEG yêu cầu Một đặc điểm cơ bản là các biểu thức DCT thuận và đảo chứa các hàm siêu việt Do đó, không có cài đặt vật lý nào có thể tính toán một cách chính xác hoàn toàn Do tính quan trọng của việc ứng dụng DCT và
mối liên hệ của nó đối với biến đổi Furier rời rạc (DFT - Discrete Fourier Transform) , nhiều thuật toán khác nhau của DCT thuận và đảo đã được tính toán xấp xỉ được phát minh ra Thực tế, việc nghiên cứu các thuật toán DCT nhanh vẫn đang tiếp tục phát triển và không có thuật toán cụ thể nào là tối ưu cho mọi cài đặt Thậm chí với độ chính xác hạn chế của đầu vào và đầu ra của DCT, các cài đặt được thiết kế riêng biệt của chính cùng một thuật toán DCT thuận và đảo cũng có thể khác biệt một chút trong độ chính xác mà chúng biểu diễn hệ số cosin hay các kết quả trung gian, hay cách chúng tính tổng và làm tròn các giá trị phân số, cũng sẽ tạo ra sự khác biệt một chút ở kết quả đầu ra của cùng dữ liệu đầu vào
Để duy trì sự tự do đổi mới và tùy biến trong các cài đặt, JPEG đã lựa chọn không đặc tả thuật toán duy nhất cho DCT thuận và đảo trong chuẩn Điều này làm cho việc xác nhận tuân theo chuẩn có phần khó hơn một chút, bởi vì hai mã hóa (hay giải mã) tuân theo chuẩn thường đưa ra cùng một đầu ra với đầu vào xác định Chuẩn JPEG giải quyết vấn đề này bằng cách đặc tả một chuẩn kiểm tra độ chính
Trang 33xác như là một phần trong các kiểm tra của các cài đặt tuân theo chuẩn cho tất cả các mã hóa và giải mã dựa trên DCT, điều này đảm bảo chống lại sự sai khác của các hàm cơ sở cosin sẽ dẫn đến giảm chất lượng ảnh
Ở đầu ra của DCT thuận, từng hệ số của 64 hệ số sẽ được lượng hóa đồng bộ bằng cách liên kết với một bảng lượng hóa 64 phần tử, được định nghĩa bởi ứng dụng (hay người dùng) như đầu vào của quá trình mã hóa Mỗi phần tử thì có thể là một số nguyên nhận giá trị trong khoảng từ 1 đến 255, để xác định kích thước bước của bộ lượng hóa cho hệ số DCT tương ứng với nó Mục đích của lượng hóa là để
có thể đạt được độ nén tốt hơn bằng cách biểu diễn các hệ số DCT với độ chính xác không lớn hơn mức độ cần thiết cho chất lượng ảnh như mong muốn Nói cách khác, mục đích của bước xử lý này là bỏ đi những thông tin không ảnh hưởng đến trực quan Lượng hóa là một ánh xạ nhiều-một, do đó, nó gây mất mát thông tin Nó chính là nguồn gốc của sự tổn hao trong nén dựa trên DCT nói chung và nén JPEG
cơ sở nói riêng
Lượng hóa được định nghĩa bởi phép chia mỗi hệ số DCT cho kích thước bước lượng tử tương ứng của nó, sau đó làm tròn tới số nguyên gần nhất
' ( , ) ( , ) * ( , )
F u v =F u v Q u v ( 1-17 ) Khi mục tiêu để nén ảnh càng nhiều càng tốt mà không tạo ra nhiễu cảm nhận được, độ lớn mỗi bước lượng tử lý tưởng nên được chọn như một ngưỡng cảm nhận hay sự khác biệt vừa đủ chú ý cho phần đóng góp của hàm cosin cơ sở tương ứng với nó Các ngưỡng này cũng là các hàm của đặc tính của ảnh gốc, các đặc tính hiển thị và khoảng cách quan sát Đối với các ứng dụng có thể định nghĩa các biến số này khá tốt, thực tế tâm lý nhìn có thể được dùng để quyết định ngưỡng tốt nhất Những thông số này được thử nghiệm bởi các thành viên của tố chức JPEG và xuất
Trang 34hiện trong chuẩn ISO (International Standards Organization) như nội dung thông
tin, chứ không phải là yêu cầu bắt buộc
Mã hóa DC và chuỗi zig-zag
Sau khi lượng hóa, hệ số DC được xử lý tách riêng khỏi 63 hệ số AC Hệ số
DC là thước đo giá trị trung bình của 64 điểm ảnh Do giá trị DC giữa các khối 8x8 liền kề thường có mối tương quan với nhau nên hệ số DC đã lượng hóa được mã hóa bằng sự sai khác so với khối đã được mã hóa trước đó Việc xử lý đặc biệt này
là đáng giá vì các hệ số DC thường chứa một lượng đáng kể trong tổng năng lượng của ảnh
Trang 35Bước xử lý cuối cùng của quá trình nén JPEG cơ sở là mã hóa entropy Bước này đạt được thêm độ nén không tổn hao bằng cách mã hóa các hệ số DCT đã lượng hóa dựa trên đặc điểm thống kê của chúng JPEG đề xuất đặc tả cho hai phương pháp mã hóa entropy: mã hóa Huffman và mã hóa toán học Bộ mã tuần tự cơ sở sử dụng mã hóa Huffman, còn các bộ mã với cả hai phương pháp này được đặc tả cho tất cả các kiểu thực hiện
Ta có thể xem xét mã hóa entropy như một quá trình gồm 2 bước Bước đầu tiên là biến đổi chuỗi zig-zag các hệ số đã lượng hóa thành một chuỗi trung gian gồm các ký hiệu Bước thứ hai là biến đổi các ký hiệu này thành dòng dữ liệu liên tục
Mã hóa Huffman yêu cầu một hoặc nhiều tập hợp bảng mã được định nghĩa bởi ứng dụng JPEG yêu cầu sử dụng cùng một tập hợp bảng mã đã dùng để mã hóa
để giải mã Các bảng mã Huffman có thể được định nghĩa trước và được dùng trong ứng dụng như mặc định hoặc có thể được tính toán riêng cho từng ảnh đầu vào trong quá trình thu thập thống kê ban đầu trước quá trình nén Những lựa chọn này
là nhiệm vụ của ứng dụng sử dụng JPEG, JPEG không đặc tả cho các bảng mã Huffman
1.3.3.4 Ví dụ minh họa thuật toán nén ảnh JPEG cơ sở
Phần dưới đây sẽ xem xét một ví dụ mô tả quá trình nén và giải nén theo kiểu JPEG cơ sở cho một khối 8x8 bit để minh họa cho các lý thuyết đã nói ở trên
Đầu vào của quá trình nén là khối 8x8 điểm ảnh, trích từ một ảnh thật Tính chất của khối dữ liệu này là sự biến đổi giá trị của các điểm ảnh nhỏ, điều này thể hiện sự vượt trội của các tần số không gian thấp
Hình 1-9: Dữ liệu ảnh gốc [1]
Trang 36Sau khi trừ từng giá trị điểm ảnh cho 128, khối dữ liệu được thực hiện phép biến đổi DCT thuận và cho kết quả như sau:
Trang 37Sau đó, các hệ số DCT đã lượng hóa này được mã hóa Huffman trước khi truyền đến quá trình giải mã Hệ số DC (15) phải được mã hóa sai phân Chẳng hạn, nếu hệ số DC của khối trước là 12 thì giá trị sai khác +3 sẽ được mã hóa Do đó, biểu diễn trung gian sẽ là (2)(3), thể hiện SIZE = 2 và AMPLITUDE = 3
Tiếp theo các hệ số AC cũng được mã hóa theo thứ tự zig-zag Giá trị khác 0 đầu tiên là -2, trước đó là 1 giá trị 0 Do đó, biểu diễn trung gian sẽ là (1,2)(-2) Tiếp theo của thứ tự zig-zag là ba giá trị khác 0 và đều bằng -1 Điều này có nghĩa là mỗi một giá trị đứng trước một dải không có giá trị 0 nào, nên biểu diễn trung gian của
nó là (0,1)(-1) Hệ số khác 0 cuối cùng là -1, đứng trước bởi hai giá trị 0, nên biểu diễn trung gian sẽ là (2,1)(-1) Vì đây là hệ số khác 0 cuối cùng, nên biểu diễn cuối cùng của khối 8x8 này là EOB hay (0,0)
Kết quả cuối cùng của chuỗi ký hiệu trung gian cho mã Huffman này là:
(2)(3), (1,2)(-2), (0,1)(-1), (0,1)(-1) , (0,1)(-1), (2,1)(-1), (0,0)
Ở bước tiếp theo, mã Huffman sẽ được sử dụng để mã hóa giá trị của sai khác
DC theo bảng mã Huffman như sau:
Bảng 1-1: Bảng mã Huffman cho sai phân của hệ số DC [10]
Trang 38Bảng 1-2: Dải độ lớn hệ số AC tương ứng với kích thước bit [10]
Kết quả của mã hóa sai phân hệ số DC và các hệ số AC là
Bảng 1-3: Tính toán giá trị VLC và VLI cho sai phân DC và các hệ số AC [10]
Từ kết quả trên, dòng bit của khối dữ liệu 8x8 trong ví dụ trên như sau:
0111111011010000000001110001010
Quá trình giải mã sẽ thực hiện ngược lại quá trình mã hóa Đầu tiên, dòng bit
mã hóa Huffman trên sẽ được giải mã Huffman và thu được khối dữ liệu các hệ số được giải lượng tử như sau:
Hình 1-13: Khối dữ liệu giải mã đã lượng tử [1]
Trang 39Khối dữ liệu này sẽ được biến đổi DCT ngược để thu được khối dữ liệu ảnh khôi phục như sau:
Hình 1-14: Khối dữ liệu khôi phục từ bộ giải nén JPEG [1]
1.3.4 Nén và chất lượng ảnh JPEG
Đối với các ảnh màu có nội dung cảnh không phức tạp lắm, hầu hết các phương pháp nén ảnh JPEG dựa trên DCT thường cung cấp các mức độ chất lượng như sau đối với một dải độ nén cụ thể Các mức độ này chỉ mang tính tham khảo, chất lượng và độ nén có thể khác biệt đáng kể tùy thuộc vào đặc tính và nội dung cảnh của ảnh gốc
• 0.25 - 0.5 bit/pixel: chất lượng từ khá cho đến tốt, phù hợp cho một số ứng dụng
• 0.5 - 0.75 bit/pixel: chất lượng từ tốt đến rất tốt, phù hợp cho nhiều ứng dụng
• 0.75 – 1.5 bit/pixel: chất lượng xuất sắc, phù hợp cho hầu hết các ứng dụng
• 2.0 bit/pixel: thường không phân biệt nổi với ảnh gốc, phù hợp cho các ứng dụng đòi hỏi khắt khe nhất
Độ chính xác của ảnh tăng lên khi tăng tốc độ bit bằng cách giảm các hệ số trong bảng lượng hóa Tuy nhiên do tốc độ bit tăng lên nên độ nén của ảnh sẽ giảm, dung lượng ảnh nén sẽ tăng
Khi tỉ số nén cao, chất lượng ảnh JPEG sẽ xuất hiện các khối vuông
Trang 401.4 Phương pháp nén ảnh theo chuẩn JPEG2000
1.4.1 Giới thiệu chung về chuẩn nén ảnh JPEG2000
JPEG2000 là một chuẩn nén ảnh tĩnh mới được tổ chức JPEG công bố vào năm 2000 và khuyến cáo người dùng và ứng dụng sử dụng chuẩn này thay thế chuẩn JPEG JPEG2000 không nén ảnh dựa trên biến đổi DCT như JPEG mà dựa trên biến đổi wavelet Mục tiêu của JPEG2000 không chỉ là cải thiện hiệu năng nén
so với JPEG mà còn nhằm thêm hay cải thiện một số chức năng như khả năng co dãn và điều chỉnh Nó cung cấp cho người dùng khả năng điều khiển chuỗi xử lý ảnh một cách linh động Một ví dụ điển hình về khả năng mới của JPEG2000 so với
JPEG là nó cho phép truyền một ảnh đã được chia thành các cấp (layers) để người
dùng cuối có thể lựa chọn một cấp để tải về, tùy theo dung lượng băng thông của người dùng: ảnh có thể co dãn theo cả độ phân giải và chất lượng
Thực tế, việc cải thiện khả năng hỗ trợ tốc độ bit từ rất nhỏ đến rất lớn của JPEG2000 so với JPEG là một trong những thế mạnh quan trọng của JPEG2000 JPEG2000 hỗ trợ một số chức năng quan trọng sau [6]:
hiện tại như JPEG khi thực hiện nén ở tốc độ bit thấp (nghĩa là tốc độ bit khoảng 0.25 bpp đối với ảnh xám có đặc điểm nhiều chi tiết) Các ứng dụng cần đến chức năng này bao gồm truyền ảnh qua mạng và cảm biến điều khiển từ xa Đây là tính năng quan trọng nhất của JPEG2000
• Nén ảnh có tông màu liên tục (continuous-tone) và ảnh nhị phân (bi-level) Các ứng dụng sử dụng tính năng này bao gồm: các tài liệu kết hợp cả ảnh và văn bản, các ảnh y tế có các ghi chú kèm theo, các ảnh đồ họa và các ảnh do máy tính tạo ra với các vùng nhị phân hay
gần nhị phân, sao chép
mã hóa cho cả nén có tổn hao và nén không tổn hao Điều này cho phép JPEG2000 có thể sử dụng cả hai dạng nén này cho cùng một ứng dụng Tính năng này phù hợp với các ứng dụng ảnh y tế yêu cầu không được phép sai sót, các ứng dụng mà chất lượng ảnh cao nhất là