Nén ảnh là một bộ phận chiếm tỉ lệ lớn nhất trong các chương trình ứng dụng, các phần mềm nén dữ liệu sử dụng nhiều trong dữ liệu đa phương tiện bởi lượng thông tin được trao đổi bằng hì
Trang 1Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYÊN THÔNG
NGUYỄN HÀ AN
MỘT SỐ KĨ THUẬT NÉN ẢNH VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ: CÔNG NGHỆ THÔNG TIN
Thái Nguyên, năm 2014
Trang 2Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
LỜI CẢM ƠN
Trên thực tế không có thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác Trong suốt thời gian học tập tại trường Đại học Công nghệ thông tin và Truyền thông – Đại học Thái Nguyên tôi đã nhận được rất nhiều sự giúp đỡ của thầy cô, bố mẹ, bạn bè và những người thân
Với lòng biết ơn sâu sắc tôi xin chân thành cảm ơn đến quý thầy cô trong trường Đại Học Công nghệ thông tin và Truyền thông – Đại học Thái Nguyên, đặc biệt thày PGS.TS Phạm Việt Bình, cùng với các quý thầy cô ở Viện Công nghệ thông tin, đặc biệt thày PGS.TS Đỗ Năng Toàn, PGS.TS Đặng Văn Đức, PGS.TSKH Nguyễn Xuân Huy, đã truyền đạt vốn kiến thức quý báu cho tôi Và đặc biệt các thầy cô đã tạo điều kiện cho tôi làm luận văn tốt nghiệp với đề tài: “Một số kỹ thuật nén ảnh và ứng dụng”
Xin chân thành cám ơn các thầy cô công tác tại Phòng Đào tạo, trường Đại học công nghệ thông tin và truyền thông, Đại học Thái Nguyên, đặc biệt thầy Lê Hùng Linh và cô Vân đã tạo điều kiện để các học viên Hải Phòng hoàn thành khóa đào tạo sau đại học về công nghệ thông tin
Tôi xin chân thành cảm ơn thầy Đỗ Trung Tuấn đã tận tình giúp đỡ hướng dẫn tôi qua từng buổi học trên lớp cũng như nhưng buổi nói chuyện thảo luận nghiên cứu
đề tài Nếu không có sự hướng dẫn, chỉ bảo tận tình của thầy thì thiết nghĩ bài báo cáo này sẽ khó có thể hoàn thành được
Với đề tài còn khá mới mẻ và vốn kiến thức còn hạn chế nên bài tiểu luận còn có nhiều sai sót trong quá trình tiếp cận đề tài Tôi rất mong sự góp ý của các quý thầy
cô và các bạn để bài tiểu luận được hoàn thiện hơn nữa Một lần nữa tôi xin chân thành cảm ơn thầy cô và các bạn
Học viên gửi lời biết ơn đến gia đình và người thân, đã chia sẻ những khó khăn trong việc hoàn thành khóa học và viết luận văn này
Trang 3Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
MỤC LỤC
LỜI CẢM ƠN ii
DANH MỤC TỪ VIẾT TẮT VÀ NGHĨA CỦA TỪ VIẾT TẮT v
DANH MỤC CÁC BẢNG, HÌNH VẼ vi
PHẦN MỞ ĐẦU 1
CHƯƠNG 1 3
KHÁI QUÁT VỀ XỬ LÝ ẢNH VÀ BÀI TOÁN NÉN ẢNH 3
1.1 Khái quát về xử lý ảnh 3
1.1.1 Giới thiệu 3
1.1.2 Một số vấn đề trong xử lý ảnh 4
1.1.2.1 Một số khái niệm cơ bản 4
1.1.2.2 Nắn chỉnh biến dạng 4
1.1.2.3 Khử nhiễu 5
1.1.2.6 Nhận dạng 6
1.1.2.7 Nén ảnh 7
1.2 Bài toán nén ảnh 8
1.2.1 Giới thiệu 8
1.2.2 Các cách tiếp cận bài toán nén ảnh 10
1.3 Kết luận chương 10
CHƯƠNG 2 11
MỘT SỐ KĨ THUẬT NÉN ẢNH 11
2.1 Nén bảo toàn 11
(Run-Length Encoding) 12
2.1.1.1 Ý tưởng của thuật toán 12
2.1.1.2 Thuật toán 14
Trang 4Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
14
2.1.3 Đánh giá thuật toán 20
2.2 Nén không bảo toàn 21
2.2.1 Nén JPEG 22
2.2.1.1 Ý tưởng của thuật toán 22
2.2.1.2 Thuật toán nén ảnh JPEG 22
2.2.2 Kỹ thuật nén AIC (Advanced Image Coding) 28
2.2.2.1 Giới thiệu 29
2.2.2.2 Nén và chất lượng ảnh AIC khi so sánh với JPEG và JPEG-2000 30
2.2.2.3 Thuật toán AIC 30
2.2.2.4 Các kết quả - AIC 42
1.3 Kết luận chương 42
CHƯƠNG 3 43
CHƯƠNG TRÌNH ỨNG DỤNG TRUYỀN ẢNH QUA MẠNG 43
3.1 Bài toán truyền ảnh qua mạng 43
3.2 Lựa chọn chương trình nén ảnh trên JPEG 43
3.3 Thử nghiệm nén ảnh JPEG 44
3.3.1 Sơ đồ thực hiện bài toán ứng dụng 44
3.3.2 Các tham số thử nghiệm 45
3.3.3 Một số kết quả thử nghiệm 46
3.3.4 Đánh giá chương trình thử nghiệm 51
3.4 Kết luận chương 51
KẾT LUẬN 52
52
2 Một số hạn chế 52
53
Trang 5Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
TÀI LIỆU THAM KHẢO 54 PHỤ LỤC 55
DANH MỤC TỪ VIẾT TẮT VÀ NGHĨA CỦA TỪ VIẾT TẮT
DTC Disrete Cosine Transformation
FDCT Forward Disrete Cosine Transformation
IDCT Inverse Disrete Cosine Transformation
FORTRAN Ngôn ngữ lập trình FORTRAN
Fourier Tên nhà toán học, đề xuất phép biến đổi tín hiệu
PSNR Peak Signal to Noise Ratio
RGB Ba màu đỏ, lục, xanh lam
CABAC Context adaptive binary arithmetic coding
ITU-T Liên hiệp viễn thông quốc tế
ISO/IEC Tổ chức tiêu chuẩn hóa quốc tế và Ủy ban kỹ thuật
điện tử quốc tế PSNR tỉ số tín hiệu đỉnh trên nhiễu
Trang 6Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
DANH MỤC CÁC BẢNG, HÌNH VẼ
Hình 1 1 Quá trình xử lý ảnh 3
Hình 1 2 Các bước cơ bản trong một hệ thống xử lý ảnh 4
Hình 1 3 Ảnh thu nhận và ảnh mong muốn 4
Hình 1 4 Quá trình hiển thị và chỉnh sửa, lưu trữ ảnh thông qua DIB 9
Hình 1.5 Sự chuyển đổi giữa các mô hình biểu diễn ảnh 9
Bảng 2.1 Cấu trúc từ điển của các phần tử mã 15
Bảng 2.2 Ví dụ cơ chế nén LZW 16
Hình 2.3 Sơ đồ thuật toán nén LZW 18
Hình 2.5: Quá trình nén ảnh theo chuẩn JPEG 22
Hình 2.6 Quá trình giải nén ảnh theo chuẩn JPEG 23
Hình 2.7: Hình minh họa về khối Zig-Zag 28
Hình 2.8 So sánh ảnh gốc và ảnh nén 30
Hình 2.9 Sơ đồ khối nén AIC và giải nén AIC 31
Hình 2.10 Ảnh chuyển đổi sang kênh RGB 31
Hình 2.11 Ảnh chuyển đổi sang kênh YCbCr 32
Hình 2.12 Hình ảnh khi chia thành các khối 33
Hình 2.13 Khối 8x8 với 25 điểm ảnh 34
Hình 2.14 Các chế độ dự đoán khối 36
Hình 2.15 Quá trình dự đoán 37
Hình 2.16 Ảnh độ chói dư thừa 38
Hình 2.17 Hình so sánh các kỹ thuật nén ảnh khác nhau 42
Trang 7Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 3.1 Sơ đồ nén ảnh bằng JPEG 44
Hình 3.2 Sơ đồ thực hiện bài toán ứng dụng 45
Hình 3.3 Giao diện chương trình ứng dụng 46
Hình 3.4 Giao diện chương trình chạy thử 47
Hình 3.5 Cửa sổ thông báo hoàn tất quy trình nén ảnh 47
Hình 3.6 Kết quả sau khi thử nghiệm với ảnh *.gif 48
Hình 3.7 Thử nghiệm với ảnh JPEG 50
Trang 8Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Cuộc cách mạng thông tin kỹ thuật số đã đem lại những thay đổi sâu sắc trong xã hội và trong cuộc sống của chúng ta Bên cạnh những thuận lợi mà thông tin kỹ thuật số mang lại cũng nảy sinh những thách thức mới cho quá trình đổi mới này Sự ra đời những phần mềm có tính năng rất mạnh, các thiết bị mới như máy ảnh kỹ thuật số, máy quét chất lượng cao, máy in, máy ghi âm kỹ thuật số…đã giúp con người có thể sáng tạo, xử lý và thưởng thức các dữ liệu đa phương tiện (multimedia data) Mạng Internet toàn cầu đã biến thành một xã hội ảo, nơi diễn ra quá trình trao đổi thông tin trong mọi lĩnh vực chính trị, quân sự, quốc phòng, kinh tế, thương mại vv Trao đổi thông tin qua các kênh truyền thông công khai đã, đang và sẽ được sử dụng phổ biến trong kỷ nguyên công nghệ số hiện đại này Và chính trong môi trường mở và tiện nghi như thế xuất hiện những khó khăn trong việc truyền tải một lượng lớn các file ảnh, file text, các file dữ liệu đa phương tiện… đi cùng một lúc Do vậy đã có rất nhiều phần mềm nén và giải nén dữ liệu ra đời
Hiện nay, phổ biến và được sử dụng nhiều nhất là phần mềm nén và giải nén
„WinRAR ZIP archive‟ Phần mềm này bổ trợ và hữu ích tiện lợi cho người sử dụng Dù dung lượng các file có lớn đến đâu chỉ cần nhấp chuột là nó trở nên nhỏ gọn và dễ dàng gửi đi một cách nhanh chóng Phần mềm nay rất dễ cài đặt và dễ sử dụng Bên cạch đó phần mềm Matlab cũng khá phổ biến và tiện ích trong các bài toán số học, logic … ngoài ra phần mềm Matlab cũng được ứng dụng rộng dãi trong xử lý ảnh số (Indexed Images), ảnh cường độ (Intensity Images), ảnh nhị phân (Binary Images), ảnh RGB (RGB Images)…
Nén ảnh là một bộ phận chiếm tỉ lệ lớn nhất trong các chương trình ứng dụng, các phần mềm nén dữ liệu sử dụng nhiều trong dữ liệu đa phương tiện bởi lượng thông tin được trao đổi bằng hình ảnh và video là rất lớn và hơn nữa nén ảnh cũng đóng vai trò hết sức quan trọng trong hầu hết các ứng dụng thông tin trên mạng internet cũng như trong các trang web quản cáo Chính vì thế mà vấn đề này đã nhận được sự quan tâm rất lớn của các cá nhân, tổ chức, trường đại học, và viện nghiên cứu trên thế giới vv
Trang 9Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Tôi tin rằng lĩnh vực nghiên cứu này có nhiều hứa hẹn trong tương lai gần và dần trở thành một hướng đi mới trong lĩnh vực nén ảnh trên ngôn ngữ lập trình C Sharp 2010 Trong luận văn này chúng ta sẽ đi sâu vào nghiên cứu các kĩ thuật nén ảnh và sử dụng ngôn ngữ lập trình C Sharp 2010 để giải quyết bài toán ứng dụng nén ảnh của mình Cấu trúc luận văn
Luận văn gồm có các chương:
Chương 1: Khái quát về xử lý ảnh và bài toán nén ảnh
Chương 2: Một số kĩ thuật nén ảnh
Chương 3: Chương trình ứng dụng truyền ảnh qua mạng
Cuối khóa luận là phần kết luận và danh sách các tài liệu tham khảo, phụ lục chương trình
Trang 10Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
CHƯƠNG 1 KHÁI QUÁT VỀ XỬ LÝ ẢNH VÀ BÀI TOÁN NÉN ẢNH 1.1 Khái quát về xử lý ảnh
1.1.1 Giới thiệu
Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng nhất Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý ảnh và đồ họa đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống
Xử lý ảnh và đồ họa đóng vai trò quan trọng trong tương tác người máy
Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho kết quả mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh „tốt hơn‟ hoặc một kết luận
Hình 1 1 Quá trình xử lý ảnh
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c1, c2, c3, … , cn) Do đó, ảnh trong
xử lý ảnh có thể xem như ảnh n chiều
Sơ đồ tổng quát của một hệ thống xử lý ảnh:
Trang 11Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 1.2 Các bước cơ bản trong một hệ thống xử lý ảnh 1.1.2 Một số vấn đề trong xử lý ảnh
1.1.2.1 Một số khái niệm cơ bản
Ảnh thu nhận thường bị biến dạng do các thiết bị quang học và điện tử
Hình 1.3 Ảnh thu nhận và ảnh mong muốn
Để khắc phục người ta sử dụng các phép chiếu, các phép chiếu thường được xây dựng trên tập các điểm điều khiển
Giả sử (P i,P i')i 1 ,n có n các tập điều khiển
Trang 12Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Giả sử ảnh bị biến đổi chỉ bao gồm: Tịnh tiến, quay, tỷ lệ, biến dạng bậc nhất tuyến tính Khi đó hàm f có dạng:
i i
i i i
n
i
P f
1
2 , 2 2 2 2 , 1 1 1 2
'
1
)(
))((
i i
i i i
x nc
y b x
a
x y y
c y
b y
x a
x x x
c y x b x
1 1
1
, 1
2 1 1
, 1
1 2
Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh
Nhiễu hệ thống: là nhiễu có quy luật có thể khử bằng các phép biến đổi
Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân → khắc phục bằng các phép lọc
1.1.2.4 Chỉnh mức xám
Nhằm khắc phục tính không đồng đều của hệ thống gây ra Thông thường có 2 hướng tiếp cận:
Giảm số mức xám: Thực hiện bằng cách nhóm các mức xám gần nhau thành một
bó Trường hợp chỉ có 2 mức xám thì chính là chuyển về ảnh đen trắng Ứng dụng: In ảnh màu ra máy in đen trắng
Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy Kỹ thuật này nhằm tăng cường độ mịn cho ảnh
Trang 13Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc thực hiện
lọc vùng (zonal filtering) Các bộ vùng được gọi là “mặt nạ đặc 10 điểm” (feature mask) thường là các khe hẹp với hình dạng khác nhau (chữ nhật, tam giác, cung tròn v.v )
Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng và do
vậy rất hữu ích trong việc trích trọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng Các đặc điểm này có thể được trích chọn nhờ toán tử gradient, toán tử la bàn, toán tử Laplace, toán tử “chéo không” (zero crossing) v.v
Việc trích chọn hiệu quả các đặc điểm giúp cho việc nhận dạng các đối tượng ảnh chính xác, với tốc độ tính toán cao và dung lượng nhớ lưu trữ giảm xuống
1.1.2.6 Nhận dạng
Nhận dạng tự động (automatic recognition), mô tả đối tượng, phân loại và phân nhóm các mẫu là những vấn đề quan trọng trong thị giác máy, được ứng dụng trong nhiều ngành khoa học khác nhau Tuy nhiên, một câu hỏi đặt ra là: mẫu (pattern) là gì? Watanabe, một trong những người đi đầu trong lĩnh vực này đã định nghĩa: “Ngược lại với hỗn loạn (chaos), mẫu là một thực thể (entity), được xác định một cách ang áng (vaguely defined) và có thể gán cho nó một tên gọi nào đó” Ví dụ mẫu có thể là ảnh của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, khuôn mặt người hoặc một ký
đồ tín hiệu tiếng nói Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại mẫu đó có thể:
Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân
biệt (discriminant analyis), trong đó mẫu đầu vào được định danh như một thành phần của một lớp đã xác định
Hoặc phân loại không có mẫu (unsupervised classification hay clustering) trong
đó các mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh
Trang 14Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:
Thu nhận dữ liệu và tiền xử lý
Biểu diễn dữ liệu
Nhận dạng, ra quyết định
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
Đối sánh mẫu dựa trên các đặc trưng được trích chọn
Phân loại thống kê
Đối sánh cấu trúc
Phân loại dựa trên mạng nơ-ron nhân tạo
Trong các ứng dụng rõ ràng là không thể chỉ dùng có một cách tiếp cận đơn lẻ để phân loại “tối ưu” do vậy cần sử dụng cùng một lúc nhiều phương pháp và cách tiếp cận khác nhau Do vậy, các phương thức phân loại tổ hợp hay được sử dụng khi nhận dạng
và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp
Việc giải quyết bài toán nhận dạng trong những ứng dụng mới, nảy sinh trong cuộc sống không chỉ tạo ra những thách thức về thuật giải, mà còn đặt ra những yêu cầu về tốc độ tính toán Đặc điểm chung của tất cả những ứng dụng đó là những đặc điểm đặc trưng cần thiết thường là nhiều, không thể do chuyên gia đề xuất, mà phải được trích chọn dựa trên các thủ tục phân tích dữ liệu
1.1.2.7 Nén ảnh
Nhằm giảm thiểu không gian lưu trữ Thường được tiến hành theo cả hai cách khuynh hướng là nén có bảo toàn và không bảo toàn thông tin Nén không bảo toàn thì thường có khả năng nén cao hơn nhưng khả năng phục hồi thì kém hơn Trên cơ sở hai khuynh hướng, có 4 cách tiếp cận cơ bản trong nén ảnh:
Nén ảnh thống kê: Kỹ thuật nén này dựa vào việc thống kê tần xuất xuất hiện của giá trị các điểm ảnh, trên cơ sở đó mà có chiến lược mã hóa thích hợp Một ví dụ điển hình cho kỹ thuật mã hóa này là *.TIF
Trang 15Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Nén ảnh không gian: Kỹ thuật này dựa vào vị trí không gian của các điểm ảnh để tiến hành mã hóa Kỹ thuật lợi dụng sự giống nhau của các điểm ảnh trong các vùng gần nhau Ví dụ cho kỹ thuật này là mã nén *.PCX
Nén ảnh sử dụng phép biến đổi: Đây là kỹ thuật tiếp cận theo hướng nén không bảo toàn và do vậy, kỹ thuật thướng nến hiệu quả hơn *.JPG chính là tiếp cận theo kỹ thuật nén này
Nén ảnh Fractal: Sử dụng tính chất Fractal của các đối tượng ảnh, thể hiện sự lặp lại của các chi tiết Kỹ thuật nén sẽ tính toán để chỉ cần lưu trữ phần gốc ảnh và quy luật sinh ra ảnh theo nguyên lý Fractal
Giảm thời gian xử lý
Việc lưu trữ thông tin trong bộ nhớ có ảnh hưởng rất lớn đến việc hiển thị, in ấn và
xử lý ảnh được xem như là 1 tập hợp các điểm với cùng kích thước nếu sử dụng càng nhiều điểm ảnh thì bức ảnh càng đẹp, càng mịn và càng thể hiện rõ hơn chi tiết của ảnh người ta gọi đặc điểm này là độ phân giải
Việc lựa chọn độ phân giải thích hợp tuỳ thuộc vào nhu cầu sử dụng và đặc trưng của mỗi ảnh cụ thể, trên cơ sở đó các ảnh thường được biểu diễn theo 2 mô hình cơ bản
1.2.1.1 Mô hình Raster
Đây là cách biểu diễn ảnh thông dụng nhất hiện nay, ảnh được biểu diễn dưới dạng ma trận các điểm (điểm ảnh) Thường thu nhận qua các thiết bị như camera,
scanner Tuỳ theo yêu cầu thực thế mà mỗi điểm ảnh được biểu diễn qua 1 hay nhiều bít
Mô hình Raster thuận lợi cho hiển thị và in ấn Ngày nay công nghệ phần cứng cung cấp những thiết bị thu nhận ảnh Raster phù hợp với tốc độ nhanh và chất lượng cao cho cả đầu vào và đầu ra Một thuận lợi cho việc hiển thị trong môi trường Windows là
Trang 16Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Microsoft đưa ra khuôn dạng ảnh DIB (Device Independent Bitmap) làm trung gian Hình 1.4 thể hiện quy trình chung để hiển thị ảnh Raster thông qua DIB
Một trong những hướng nghiên cứu cơ bản trên mô hình biểu diễn này là kỹ thuật nén ảnh các kỹ thuật nén ảnh lại chia ra theo 2 khuynh hướng là nén bảo toàn và không bảo toàn thông tin nén bảo toàn có khả năng phục hồi hoàn toàn dữ liệu ban đầu còn nén không bảo toàn chỉ có khả năng phục hồi độ sai số cho phép nào đó Theo cách tiếp cận này người ta đã đề ra nhiều quy cách khác nhau như BMP, TIF, GIF, PCX…
Hiện nay trên thế giới có trên 50 khuôn dạng ảnh thông dụng bao gồm cả trong
đó các kỹ thuật nén có khả năng phục hồi dữ liệu 100% và nén có khả năng phục hồi với
độ sai số nhận được
Hình 1.4 Quá trình hiển thị và chỉnh sửa, lưu trữ ảnh thông qua DIB
1.2.1.2 Mô hình Vector
Biểu diễn ảnh ngoài mục đích tiết kiệm không gian lưu trữ dễ dàng cho hiển thị
và in ấn còn đảm bảo dễ dàng trong lựa chọn sao chép di chuyển tìm kiếm… Theo những yêu cầu này kỹ thuật biểu diễn vector tỏ ra ưu việt hơn
Trong mô hình vector người ta sử dụng hướng giữa các vector của điểm ảnh lân cận để mã hoá và tái tạo hình ảnh ban đầu ảnh vector được thu nhận trực tiếp từ các thiết
bị số hoá như Digital hoặc được chuyển đổi từ ảnh Raster thông qua các chương trình số hoá
Công nghệ phần cứng cung cấp những thiết bị xử lý với tốc độ nhanh và chất lượng cho cả đầu vào và ra nhưng lại chỉ hỗ trợ cho ảnh Raster Do vậy, những nghiên cứu về biểu diễn vectơ đều tập trung từ chuyển đổi từ ảnh Raster
Hình 1.5 Sự chuyển đổi giữa các mô hình biểu diễn ảnh
Trang 17Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
1.2.2 Các cách tiếp cận bài toán nén ảnh
1.2.2.1 Bài toán nén ảnh
Cho đầu vào một bức ảnh chụp em bé có dạng ảnh *.jpeg có size: 160KB Ta cần nén bức ảnh này thành một bức ảnh mới có kích thước không đổi và có size nhỏ hơn rất nhiều so với file ảnh ban đầu, bức ảnh có độ nét có thể chấp nhận được Sau đó ta có thể gửi bức ảnh cho bạn bè, người thân của em bé qua mạng cũng như qua các thiết bị lưu trữ dữ liệu Từ bài toán trên ta có 2 cách tiếp cận bài toán như sau:
1.2.2.2 Tiếp cận nén bảo toàn
Bức ảnh sau khi nén cho kích thước ảnh giống như kích thước ban đầu ảnh mới
có dạng ảnh *.jpeg có size: 138KB Trong khi ảnh cũ có size: 160KB Sau khi giải nén cho ảnh mới có size như size ảnh ban đầu Cách tiếp cận bảo toàn cho ta bức ảnh mới có
độ nén thấp chỉ vài chục phần trăm Nhưng ảnh sau khi giải nén không bị mất mát dữ liệu, điều này rất cần cho nén ảnh chụp X – quang hay các loại ảnh chụp trong ngành y
tế, cũng như các ảnh chụp trong ngành thiên văn học các ngành này đòi hỏi độ chính xác cao
1.2.2.3 Tiếp cận nén không bảo toàn
Bức ảnh sau khi nén cho kích thước ảnh giống như kích thước ban đầu ảnh mới
có dạng ảnh *.jpeg có size: 36,1KB Trong khi ảnh cũ có size: 160KB Sau khi giải nén cho ảnh mới có size mới là 155KB nhỏ hơn size ban đầu là 5KB Sai số này có thể chấp nhận được cho các ảnh chụp phong cảnh cũng như các ảnh nghệ thuật Phương pháp này không đòi hỏi độ chính xác cao Ảnh mới cho chất lượng ảnh có độ nét cao có thể chấp nhận được và phương pháp này được sử dụng rộng dãi trong các lĩnh vục nén ảnh số cũng như nén các loại video số,…
1.3 Kết luận chương
Chương này đã trình bày khái quát về xử lý ảnh Các cách biểu diễn ảnh cũng như các cách nén ảnh từ đó đặt ra bài toán nén ảnh và đưa ra cách thức giải quyết bài toán nén ảnh Từ đó em chọn cách nén ảnh không bảo toàn để giải quyết bài toán ứng dụng nén ảnh rồi truyền qua mạng đều này được thể hiện ở chương 3
Trang 18Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
CHƯƠNG 2 MỘT SỐ KĨ THUẬT NÉN ẢNH 2.1 Nén bảo toàn
Dữ liệu, đặc biệt là văn bản, đồ họa luôn chứa trong nó những chuỗi thông tin giống hệt nhau lặp đi lặp lại Việc nén dữ liệu được thực hiện bằng cách thay thế nhiều ký tự thông tin lặp đi lặp lại bằng các ký tự khác, và tạo ra chỉ một bản sao của những đoạn dữ liệu bị lặp lại này Cũng có cách khác tỉ mỉ hơn dùng những mã có độ dài khác nhau mã hóa cho các ký tự khác nhau giúp cho các ký tự này chiếm ít chỗ hơn Cách gì thì cách nhưng phải làm sao vừa thu nhỏ được kích thước file vừa giữ được sự toàn vẹn của dữ
Trang 19Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
liệu
(Run-Length Encoding)
Mã hoá theo độ dài loạt RLE (Run-Length Encoding) là một thuật toán nén dựa trên
sự cắt bớt các dư thừa về không gian (loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồm các kí tự lặp lại, một vài hình ảnh có vùng màu lớn không đổi đặc biệt đối với ảnh nhị phân), các vùng dữ liệu hằng của các tập tin chương trình, một số tập tin văn bản, Loạt được định nghĩa là dãy các phần tử điểm ảnh (pixel) liên tiếp có cùng chung một giá trị
2.1.1.1 Ý tưởng của thuật toán
Ý tưởng của thuật toán này là phát hiện một loạt các điểm ảnh lặp lại liên tiếp, ví dụ:
11000011 Ta thấy điểm ảnh có giá trị 0 xuất hiện nhiều lần liên tiếp thay vì phải lưu trữ toàn bộ các điểm ảnh có giá trị 0 ta chỉ cần lưu trữ chúng bằng cách sử dụng các cặp (độ dài loạt, giá trị)
Trang 20Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
không thể hiện giá trị loạt vì ảnh đen trắng chỉ có 2 giá trị bit là 0 hoặc là 1)
Chú ý: đối với ảnh chiều dài của một dãy lặp có thể lớn hơn 255, nếu ta dùng 1
byte để lưu trữ chiều dài thì sẽ không đủ Giải pháp được dùng là tách chuỗi đó thành 2 chuỗi: một chuỗi có chiều dài là 255, chuỗi kia có chiều dài còn lại
Như vậy chuỗi sau khi mã hoá đã lớn hơn nhiều chuỗi nguồn ban đầu
Do đó cần phương pháp cải tiến để xử lý những trường hợp như trên tránh làm
mở rộng chuỗi dữ liệu nguồn nghĩa là chỉ mã hoá độ dài loạt dữ liệu lặp lại Người ta đã đưa ra cách đó là thêm kí tự tiền tố vào trước độ dài loạt, việc giải mã được thực hiện nếu gặp kí tự tiền tố với độ dài loạt và giá trị điểm ảnh theo sau
Trang 21Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
dụng e(i) = d(i) – d(i-1) sẽ thu được:
Thuật toán như sau:
Tiến hành duyệt trên từng hàng cho đến khi kết thúc vùng dữ liệu ảnh, trong quá trình duyệt tiến hành kiểm tra để tìm ra những loạt có cùng giá trị đồng thời chú ý những kí hiệu xuống dòng (hay kết thúc dòng), kết thúc ảnh Bitmap, …
Khi gặp loạt có độ dài > 1 thì nhảy đến chế độ nén, ngược lại nhảy đến chế độ không nén tuy nhiên nếu loạt > 255 thì sẽ tách ra chỉ mã < 255 sau đó mã tiếp phần còn lại
Kết thúc khi gặp kí hiệu kết thúc file
Ưu điểm: Thuật toán RLE đạt hiệu quả khi chuỗi lặp lớn hơn 1 ngưỡng nhất định nào đó hay nói các khác trong ảnh cần nén phải có nhiều điểm ảnh kề nhau có cùng giá trị màu
Nhược điểm: Thuật toán này không đem lại cho ta kết quả một cách ổn định vì nó phụ thuộc hoàn toàn vào ảnh nén và chỉ thích hợp cho những ảnh đen trắng hay ảnh đa cấp xám
2.1.2
2.1.2
Khái niệm nén từ điển được Jacob và Abraham Ziv đưa ra đầu tiên vào năm 1997, sau đó phát triển thành họ giải thuật nén từ điển LZ Năm 1984, Terry Welch đã cải tiến thuật giải LZ thành một giải thuật mới hiệu quả hơn và đặt tên là LZW Phương pháp
Trang 22Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
nén từ điển dựa trên việc xây dựng từ điển lưu các chuỗi ký tự có tần suất lặp lại cao và thay thế bằng từ mã tương ứng mỗi khi gặp lại chúng Giải thuật LZW hay hơn các giải thuật trước đó ở kỹ thuật tổ chức từ điển cho phép nâng cao tỷ lệ nén
Giải thuật LZW được sử dụng cho tất cả các file nhị phân Nó thường được dùng để nén các loại văn bản, ảnh đen trắng ảnh màu, ảnh đa mức xám… Và là chuẩn nén các dạng ảnh GIF và TIFF Mức độ hiệu quả của LZW không phụ thuộc vào số bit màu của ảnh
2.1.2.2 Phương pháp
Giải thuật nén LZW xây dụng một từ điển lưu các mẫu có tần suất xuất hiện cao
trong ảnh Từ điển là tập hợp những cặp từ vựng và nghĩa của nó Trong đó, từ vựng sẽ
là các từ mã được sắp xếp theo thứ tự nhận định Nghĩa là một chuỗi con trong dữ liệu
ảnh Từ điển được xây dụng đồng thời với quá trình đọc dữ liệu Sự có mặt của một chuỗi con trong từ điển khẳng định rằng chuỗi đó đã từng xuất hiện trong phần dữ liệu
đã đọc Thuật toán liên tục “tra cứu” và cập nhật từ điển sau mỗi lần đọc một kí tự ở dữ liệu đầu vào
Do kích thước bộ nhớ không phải vô hạn và để đảm bảo tốc độ tìm kiếm, từ điển chỉ giới hạn 4096 ở phần tử dùng để lưu lớn nhất là 4096 giái trị của các phần từ mã Như vậy độ dài lớn nhất của từ mã là 12 bít (4096 = 1212) Cấu trúc từ điển như sau:
Bảng 2.1 Cấu trúc từ điển của các phần tử mã
(End Of Information)
Trang 23Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
256 mã đầu tiên cho kí tự từ 0 …255 chữ các số nguyên từ 0…255 Đây là
mã của 256 ký tự cơ bản trong bản mã ASCII
Từ mã thứ 256 chứa một mã đặc biệt là “mã xoá” (CC – Clear Code) Mục đích việc dùng mã xoá nhằm khắc phục tình trạng mẫu lặp trong ảnh lớn hơn
4096 Khi đó một ảnh được quan niệm là nhiều mảnh ảnh, và từ điển là một
bộ từ điển gồm nhiều từ điển con Cứ hết một mảnh ảnh người ta lại gửi một
mã xoá để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới đồng thời khởi tạo lại từ điển cho mảnh ảnh mới Mã xoá có giá trị là 256
Từ mã thứ 257 chứa mã kết thúc thông tin (EOI – End Of Information) Mã này có giá trị là 257 Như chúng ta đã biết, một file ảnh có thể chứa nhiều ảnh cho đến khi gặp mã kết thúc thông tin mới dừng lại
Các mã còn lại (từ 258 đến 4095) chứa các mẫu thường lặp lại trong ảnh 512 phần tử đầu tiên cùa các từ điển biểu diễn bằng 9 bít Các từ mã từ 512 đến
1023 biểu diễn bởi 10 bít, từ 1024 đến 2047 biểu diễn bởi 11 bít và từ 2048 đến 4095 biểu diễn bởi 12 bít
Ví dụ cơ chế nén LZW: Cho chuỗi đầu vào là “ABCBCABCABCD” (Mã ASII của
A là 65, B là 66,C là 67) Từ điển ban đầu là 256 kí tự cơ bản
Bảng 2.2 Ví dụ cơ chế nén LZW
Trang 24Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Đầu vào Đầu ra Thực hiện
A (65) A đã có trong từ điển => Đọc tiếp
B(66) 65 Thêm vào từ điển mã 258 đại diện cho chuỗi AB
C(67) 66 Thêm vào từ điển mã 259 đại diện cho chuỗi BC
B 67 Thêm vào từ điển mã 260 đại diện cho chuỗi CB
C BC đã có trong từ điển => Đọc tiếp
A 259 Thêm vào từ điển mã 261 đại diện cho chuỗi BCA
B AB đã có trong từ điển => Đọc tiếp
C 258 Thêm vào từ điển mã 262 đại diện cho chuỗi ABC
A 67 Thêm vào từ điển mã 263 đại diện cho chuỗi CA
B AB đã có trong từ điển => Đọc tiếp
C ABC đã có trong từ điển => Đọc tiếp
D 262 Thêm vào từ điển mã 263 đại diện cho chuỗi ABCD
Chuỗi đầu sẽ là: 65 – 66 – 67 – 259 – 258 – 67 – 262 Đầu vào có kích thước: 12*8 =96 bít Đầu ra có kích thước là: 4*8 + 3*9 = 59 bít Tỷ lệ nén là: 96:59 = 1,63 Thuật toán:
Trang 25Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.3 Sơ đồ thuật toán nén LZW
Giá trị cờ INPUT = TRUE khi vẫn còn giữ liệu đầu vào và ngược lại
Chức năng của hàm
Hàm InitDictionary(): Hàm này có chức năng khởi tạo từ điển Đạt giá trị cho
256 phần tử đầu tiên Gán mã xoá (Clear Code) cho phần tử thứ 256 và mã kết thúc thông tin (End Of Information) cho phần tử thứ 257 Xoá giá trị tất
cả các phần tử còn lại
Hàm Output(): gửi mỗi bít ra file Chuỗi này có độ dài là 9, 10, 11 hoặc 12
tuỳ thuộc vào vị trí trong từ điển của từ mã gửi ra Các chuỗi bít này được nối tiếp vào với nhau
Hàm GetNextChar(): Trả về kí tự từ chuỗi kí tự đầu vào Hàm này cập nhật
giá trị của cò INPUT xác định xem còn dữ liệu đầu vào nữa hay không
Hàm AddtoDictionary: sẽ được gọi khi có một mẫu mới xuất hiện Hàm này
sẽ cập nhật mẫu này vào phần tử tiếp theo trong từ điển Nếu từ điển này đã
đầy nó sẽ gửi ra mã xoá (Clear Code) và gọi đến hàm InDictionary() để khởi
tạo lại từ điển
Hàm Code(): trả về từ mã ứng với một chuỗi
Tư tưởng của đoạn mã trên có thể hiểu như sau: nếu còn dữ liệu đẩy vào thì tiếp tục đọc Một chuỗi mới sẽ được tạo ra từ chuỗi cũ (chuỗi này ban đầu trống, chuỗi này phải là chuỗi đã tồn tại trong từ điển) và kí tự vừa đọc vào Sau đó kiểm tra xem chuỗi
có số kí tự lớn nhất đã tồn tại trong từ điển Nếu tồn tại ta lại tiếp tục đọc một kí tự tiếp theo và lặp lại công việc Nếu chưa có trong từ điển, thì gửi chuỗi cũ ra ngoài và thêm chuỗi mới vào từ điển
Giải nén LZW: Thuật toán giải nén gần như ngược lại với thuật toán nén Với giải thuật nén, một từ mã ứng với một chuỗi được ghi ra tệp khi chuỗi ghép bởi chuỗi trên với kí tự vừa đọc chưa có mặt trong từ điển Người ta cũng cập nhật ngay vào từ điển từ mã ứng với chuỗi tạo bởi chuỗi cũ với kí tự vừa đọc Kí tự này đồng thời là kí tự
Trang 26Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
đầu tiên trong chuỗi tương ứng với từ mã sẽ được ghi ra tiếp theo Đây là điểm mấu chốt cho phép xây dựng thuật toán giải nén
Thuật toán được mô tả như sau:
Giá trị cờ FIRST_CODE = TRUE chỉ mã vừa đọc là mã đầu tiên của mỗi mảnh ảnh
Mã đầu tiên có cách xử lí hơi khác so với mã tiếp theo Mã CC báo hiệu hết một mảnh ảnh Mã EOF báo hiệu hết toàn bộ thông tin ảnh
Trang 27Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Chức năng của hàm:
GetNextCode(): hàm này đọc thông tin đầu vào (dữ liệu nén) trả về mã tương
ứng Để biết được tại thời điểm hiện thời, từ mã dài bao nhiêu bít ra phải luôn theo dõi từ điển và cập nhật độ dài từ mã tại các phần tử thứ 512, 1024, 2048
OutBuff(): hàm này gửi chuỗi giá trị đã giải mã ra vùng nhớ đệm
DeCode(): hàm này tra cứu từ điển và trả về chuỗi kí tự tương ứng với từ mã FristChar(): lấy kí tự đầu tiên của một chuỗi Kí tự vừa xác nhận nối tiếp vào
chuối kí tự cũ ta được chuỗi kí tự có mặt trong từ điển khi nén Chuỗi này sẽ được thêm vào từ điển giải nén
OutPut(): gửi chuỗi bít ra file Chuỗi bít này có độ dài là 9, 10, 11 hoặc 12
tuỳ thuộc vào vị trí trong từ điển của từ mã gửi ra Các chuỗi bít này được nối với nhau
Đối với thuật giải LZW tồn tại một trường hợp được sinh ra nhưng chương trình giải nén có thể không giải mã được Giải sử c là một kí tự, S là một chuỗi có độ dài lớn hơn 0 Nếu mã k là từ điển chứa giái trị là cS Ngay khi đó k‟dược dùng thay thế cho cSc Trong chương trình giải nén, k‟sẽ xuất hiện trước khi nó được định nghĩa Rất may
là từ mã vừa đọc bao giờ cũng có nội dung trùng với tổ hợp của từ mã cũ với kí tự đầu tiên của nó Điều này giúp cho quá trình cài đặt chương trình khắc phục được trường hợp ngoại lệ một cách dễ dàng
2.1.3 Đánh giá thuật toán
Qua hai thuật toán nén được tìm hiểu bên trên, ta thấy thuật toán nén độ dài loạt RLE không thể áp dụng cho nhiều loại tập tin được, ví dụ như tập tin chương trình, tập tin cơ sở dữ liệu, vì ở đó các loạt chạy là rất ngắn, do đó nếu áp dụng thuật toán này không những không làm bé tập tin mà còn làm lớn tập tin đó
Phương pháp RLE cho kết quả mã hóa trả về là bộ đôi <i,S>; i là một con trỏ chỉ số nguyên, S là một chuỗi Vậy cách trả về này khá dư thừa, không hiệu quả LZW khắc phục được bằng cách: Kết quả mã hóa trả về chỉ chứa duy nhất con trỏ chỉ số nguyên,
Trang 28Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
loại bỏ chuỗi S theo sau Thuật toán LZW đã khắc phục được sự lãng phí về bộ nhớ mà các thuật toán trước không tận dụng được hết Đồng thời khắc phục được sự cứng nhắc của thuật toán nén, góp phần làm thuật toán nén trở nên mềm dẻo hơn, có sức hấp dẫn hơn đối với người sử dụng
2.2 Nén không bảo toàn
Hay gặp nhất trong công nghệ thông tin là nén hình ảnh và âm thanh Có nhiều giải thuật được đặt ra để đáp ứng yêu cầu giảm thiểu kích thước của file ảnh sao cho vẫn duy trì được chất lượng ở mức độ chấp nhận được Những giải thuật này đều dựa trên nền tảng là loại bớt những màu mà mắt người không hoặc khó cảm nhận được, chỉ giữ lại những màu chủ yếu thực sự ảnh hưởng tích cực lên khả năng cảm nhận màu của mắt Nếu đã từng biên tập hình ảnh bằng Photoshop, bạn sẽ dễ dàng nhận thấy sự khác biệt khá lớn giữa bảng màu chuẩn và bảng màu dùng cho hình ảnh tải lên web, tức là hình nén đấy Trong bảng màu web, các màu trung gian, chuyển tiếp đã bị lược bỏ mất, thay vào đó là các màu tương đương cận kề Tuy hai bảng màu này dễ phân biệt như vậy nhưng khi xem một hình ảnh bạn không dễ dàng nhận biết được đó là file.bmp (chưa nén), gif hay jpg (ảnh nén) Còn một cách nữa cũng sử dụng kiểu mất dữ liệu để nén hình là giảm độ phân giải, tức là bớt số điểm ảnh trên một inch (dots per inch - dpi) Cách này khi được sử dụng, tùy trường hợp mà phải gia giảm cho phù hợp Độ phân giải cao quá thì phí chỗ, nhưng giảm đi nhiều quá thì bị “bể hình”
Trang 29Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.4 Ví dụ minh họa nén tổn thất (nén DTC)
2.2.1 Nén JPEG
JPEG là viết tắt của Joint Photographic Expert Group (nhóm các chuyên gia đồ hoạ
phát triển chuẩn này) Chuẩn này được phát triển từ giữa thập niên 80 bởi sự hợp tác của
tổ chức ISO và ITU và đến 1992 được công nhận là chuẩn ảnh quốc tế, phục vụ các ứng dụng về ảnh cho các lĩnh vực như mạng, y học, khoa học kỹ thuật, ảnh nghệ thuật, …
2.2.1.1 Ý tưởng của thuật toán
Chuẩn JPEG được sử dụng để mã hoá ảnh đa mức xám, ảnh màu JPEG không cho kết quả ổn định lắm với ảnh đen trắng, nó cung cấp cả 2 chế độ nén: nén mất mát thông tin và nén không tổn thất Do độ phức tạp và hiệu suất nén của JPEG không mất mát thông tin mà nó không được sử dụng phổ biến Dưới đây chỉ trình bày chi tiết về một trong các dạng nén biến đổi chấp nhận mất mát thông tin dùng biến đổi Cosin rời rạc (DTC - Discrete Cosin Transform) của chuẩn JPEG
2.2.1.2 Thuật toán nén ảnh JPEG
Nén ảnh JPEG bao gồm nhiều công đoạn, sơ đồ thuật toán nén và giải nén được
mô tả như dưới đây:
Hình 2.5: Quá trình nén ảnh theo chuẩn JPEG
Quá trình giải nén sẽ được thực hiện ngược lại, người ta dựa vào các thông tin liên quan ghi trong phần Header của file nén để giải mã từng phần ảnh nén ứng với phương
Trang 30Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
B
M l
N k
M
' '
pháp nén Kết quả thu được là hệ số đã lượng tử
Căn cứ vào bảng lượng tử sẽ khôi phục lại giá trị trước khi lượng tử hoá của các hệ
số này Cuối cùng là biến đổi Cosin ngược để thu lại được ảnh như ban đầu
Hình 2.6 Quá trình giải nén ảnh theo chuẩn JPEG
* Chia ảnh thành khối
Chuẩn nén JPEG phân ảnh ra các khối 8x8 Biến đổi nhanh Cosin 2 chiều cho các khối 8x8 sẽ đạt hiệu quả hơn, việc biến đổi Cosin cho các khối có cùng kích cỡ có thể giảm được một phần các tính toán chung như việc tính hệ số Cij Khi n = 8 chúng ta chỉ cần tính hệ số Cij cho 3 tầng (8 = 23),
số các hệ số là: 4 + 2 + 1 = 7
Nếu với một ảnh 512x512, phép biến đổi Cosin nhanh theo hàng ngang hoặc hàng dọc ta phải cần qua 9 tầng (512 = 29) Số các hệ số Cij là: 256 + 128 + 64 + 32 + 16 + 8
+ 4 + 2 +1 =509 Như vậy thời gian tính các hệ số Cij cho ảnh 512x512 lớn gấp 72 lần
so với thời gian tính toán các hệ số này cho từng khối 8x8, nếu kích thước ảnh lớn hơn thì chi phí thời gian sẽ còn tăng gấp nhiều lần đồng thời còn giúp việc tính toán trong khi biến đổi Cosin chính xác hơn
Ảnh sẽ chia làm B khối với:
Các khối được xác định bởi bộ số (m,n) với m = [0 MB-1] và n=[0 NB-1]
Trong đó: m: thứ tự của khối theo chiều rộng n: thứ tự của khối theo chiều dài
Trang 31Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Phân khối thực chất là xác định tương quan giữa toạ độ riêng trong khối với tạo độ thực của điểm ảnh trong ảnh ban đầu Nếu ảnh ban đầu ký hiệu Image[i,j] thì ma trận biểu diễn khối (m,n) là x[u,v] được tính: x[u,v] = Image[mk + u, nl + v]
* Biến đổi
Đây là công đoạn quan trọng của các phương pháp nén sử dụng phép biến đổi, nhiệm vụ của công đoạn này là tập trung năng lượng vào một số ít các hệ số biến đổi Trước khi vào phần chính của phương pháp biến đổi em xin trình bày phần biến đổi Cosin rời rạc (DCT) như sau:
Biến đổi Cosin rời rạc (DCT) thuận và ngược một chiều gồm N mẫu được định
nghĩa như sau:
Cả DCT và IDCT đều là biến đổi trực giao, tách biệt và thực Tính chất phân tách
(separable) ở đây nghĩa là biến đổi nhiều chiều của nó có thể phân tách thành các biến
đổi một chiều Tính chất trực giao ở đây nghĩa là nếu các ma trận của DCT và IDCT là không bất thường (non-singular) và thực thì biến đổi ngược của chúng có thể đạt được bằng cách áp dụng toán tử hoán vị Cũng như biến đổi FT, DCT cũng coi dữ liệu đầu
vào là tín hiệu ổn định (bất biến)
Trong các chuẩn nén ảnh tĩnh vào video, người ta thường sử dụng DCT và IDCT có kích thước 8 mẫu Bức ảnh hoặc khung ảnh video kích thước NxN được chia thành các
khối không chồng chéo nhau hai chiều gọi là các ảnh con kích thước 8x8 rồi áp dụng
biến đổi DCT hai chiều ở bộ mã hoá và áp dụng biến đổi IDCT ở bộ giải mã
Biến đổi DCT và IDCT 8 mẫu tạo thành các ma trận 8x8 theo công thức:
Trang 32Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Thuật toán để tính 2-D DCT và IDCT là: thực hiện phép biến đổi 1-D lần lượt cho
hàng rồi đến cột của ma trận
Như vậy ở mỗi khối ảnh hai chiều kích thước 8x8, áp dụng biến đổi DCT để tạo ra mảng hai chiều các hệ số biến đổi Hệ số có tương ứng với tần số không gian thấp nhất nhưng lại có giá trị lớn nhất được gọi là hệ số DC (một chiều), nó tỉ lệ với độ chói trung bình của cả khối ảnh 8x8 Các hệ số còn lại gọi là các hệ số AC (xoay chiều) Theo lý thuyết, biến đổi DCT không đem lại sự mất mát thông tin ảnh, mà đơn giản nó chỉ chuyển thông tin ảnh sang miền không gian mới thuật lợi hơn cho mã hoá ở bước tiếp theo
* Lượng tử hóa
Khối lượng tử hoá trong sơ đồ nén đóng vai trò quan trọng và quyết định tỷ lệ nén của chuẩn nén JPEG Đầu vào của khối lượng tử hoá là các ma trận hệ số biến đổi Cosin của các khối điểm ảnh Như ta đã biết ảnh được chia làm nhiều khối, ứng mỗi khối là các hệ số xác định Trước khi thực hiện bước lượng tử hoá ta có thể loại bỏ vài hệ số Ngoài hệ số (0,0) (được coi là thành phần DC) biểu diễn mức sáng trung bình của một khối ta có thể loại một số hệ số khác trong khối mang thông tin chi tiết về ảnh Ta có thể bắt đầu loại bỏ từ hệ số có độ lệch chuẩn thấp nhất Việc nên giữ lại bao nhiêu hệ số còn tuỳ thuộc vào việc ta muốn tỷ lệ nén cao hay thấp và những yêu cầu về chất lượng của ảnh nén
Để giảm số bộ lượng tử, người ta tìm cách quy các hệ số ở các khối về cùng một
Trang 33Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
n
y j j
)1(
)
2
n n
y y
j
khoảng phân bố Chuẩn nén JPEG chỉ sử dụng một bộ lượng tử hoá Giả sử rằng các hệ
số đều có hàm tính xác suất xuất hiện như nhau Ta sẽ căn chỉnh lại hệ số yj bằng phép gán:
Với: μj là trung bình cộng của hệ số thứ j ; j là độ lệch cơ bản của hệ số thứ j
Như vậy chúng ta sẽ đồng nhất được mức quyết định và mức tạo lại cho tất cả các
hệ số Do đó, các hệ số sẽ được biểu diễn bằng cùng một số lượng bit Có nhiều cách tiếp cận để tính được các mức quyết và mức tạo lại Lloyd – Max đưa ra giải thuật sau:
Bước 1: Chọn giá trị khởi tạo: d0 = yL ; dn = yH ; r0 = d0 ; N là số mức lượng tử
Bước 2: Cho i biến thiên từ 1 đến N-1 thực hiện các công việc sau:
dy y
p
dy y
p y r
1
1
)(
)(
Bước 3: Nếu rN-1 ≠ r‟ điều chỉnh lại r0 và lặp lại từ bước 2 đến bước 3
Trong quá trình cài đặt thủ tục tạo ra bộ lượng tử hoá, Lloyd và Max đã có nhiều cải tiến để tính toán dễ dàng hơn
Sau đây là các bước mô tả toàn bộ công việc của khối lượng tử hoá tác động lên các
hệ số biến đổi Cosin:
Bước 1: Tính trung bình cộng μ và độ lệch cơ bản σ cho từng hệ số ở mỗi
vị trí trong khối:
Bước 2: Lựa chọn tỷ lệ hệ số giữ lại trong mỗi khối
Bước 3: Giữ lại các hệ số có độ lệch cơ bản lớn hơn