Trong đó “Nén ảnh” là một phần của xử lý ảnh có ứng dụng to lớn trong truyền thông và trong lưu trữ, đã có rất nhiều phương pháp nén ảnh được ra đời và không ngừng được cải tiến để ngày
Trang 1LỜI CẢM ƠN Sau một thời gian thực hiện khóa luận tốt nghiệp, đến nay công việc liên quan đến khóa luận đã được hoàn tất Trong suốt thời gian thực hiện khóa luận em đã nhận được rất nhiều sự giúp đỡ Ở phần đầu của khóa luận này cho phép em gửi lời cảm ơn chân thành và sâu sắc đến những người đã giúp
đỡ em
Em xin cảm ơn các thầy cô giáo trong khoa Công nghệ Thông tin, trường Đại học sư phạm Hà Nội 2, những người đã giúp đỡ cho em trong suốt quá trình học tập và nghiên cứu
Em xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới thầy giáo TS.Trịnh Đình Vinh, khoa Công nghệ Thông tin, trường Đại học sư phạm Hà Nội 2 đã hướng dẫn hết sức chu đáo, nhiệt tình trong quá trình em làm khóa luận
Cuối cùng, em xin bày tỏ lòng biết ơn tới gia đình và các bạn bè đã giúp đỡ, động viên em rất nhiều trong suốt quá trình học tập để em có thể thực hiện tốt khóa luận này
Tuy đã có những cố gắng nhất định nhưng do thời gian và trình độ có hạn nên chắc chắn khóa luận này còn nhiều thiếu sót và hạn chế nhất định Kính mong nhận được sự góp ý của thầy cô và các bạn
Hà Nội, tháng 05 năm 2013
Sinh viên
Nguyễn Thị Thanh Nhã
Trang 2LỜI CAM ĐOAN Tên em là: NGUYỄN THỊ THANH NHÃ
Sinh viên lớp: K35 – Tin học, khoa Công nghệ Thông tin, trường Đại học sư phạm Hà Nội 2
Em xin cam đoan:
1 Đề tài: “MỘT SỐ PHƯƠNG PHÁP NÉN ẢNH VÀ XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHỆM” là sự nghiên cứu của riêng em, dưới sự hướng dẫn của thầy giáo TS Trịnh Đình Vinh
2 Khóa luận hoàn toàn không sao chép của tác giả nào khác
Nếu sai em xin hoàn toàn chịu trách nhiệm
Hà Nội, tháng 05 năm 2013
Người cam đoan
Nguyễn Thị Thanh Nhã
Trang 3MỤC LỤC
Trang LỜI CẢM ƠN
LỜI CAM ĐOAN
MỤC LỤC
CÁC TỪ VIẾT TẮT
DANH MỤC HÌNH
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH 4
1.1 TỔNG QUAN VỀ XỬ LÝ ẢNH 4
1.1.1 Xử lý ảnh 4
1.1.2 Giới thiệu về ảnh số và xử lý ảnh số 7
1.2 NÉN ẢNH 9
CHƯƠNG 2: CÁC PHƯƠNG PHÁP NÉN ẢNH 11
2.1 Phân loại các phương pháp nén ảnh 11
2.1.1 Phân loại dựa vào nguyên lý nén 11
2.1.2 Phân loại dựa vào cách thức thực hiện nén 11
2.1.3 Phân loại dựa vào lý thuyết mã hoá 11
2.2 Quá trình nén và giải nén 12
2.3 Phương pháp mã hoá độ dài loạt RLE 12
2.3.1 Nguyên tắc 12
2.3.2 Thuật toán 14
2.4 Phương pháp mã hoá Huffman tĩnh 15
2.4.1 Nguyên tắc 15
2.4.2 Thuật toán 16
2.5 Phương pháp mã hoá LZW 19
2.5.1 Nguyên tắc 19
2.5.2 Thuật toán 22
Trang 42.6 Phương pháp mã hoá JPEG 24
2.6.1 Nguyên tắc 24
2.6.2 Thuật toán 24
2.7 Phương pháp mã hoá JPEG2000 34
2.7.1 Lịch sử ra đời và phát triển chuẩn JPEG2000 34
2.7.2 Các tính năng của JPEG2000 34
2.7.3 Các bước thực hiện nén ảnh theo chuẩn JPEG2000 35
2.7.4 So sánh chuẩn JPEG2000 với JPEG và các chuẩn nén ảnh tĩnh khác 42
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM 46
3.1 Phát biểu bài toán 46
3.2 Phương pháp tiến hành 46
3.2.1 Phương pháp Huffman tĩnh 46
3.2.2 Phương pháp JPEG 50
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54
1 Kết luận 54
2 Hướng phát triển nghiên cứu 55
TÀI LIỆU THAM KHẢO 57
Trang 5CÁC TỪ VIẾT TẮT
Viết
ắt
Tên đầy đủ - Mô tả
CC Clear Code - mã xóa
EOB End Of Block - kết thúc khối
EOI End Of Information- kết thúc thông tin
EZW Embedded Zerotree Wavelet Encoder - phương pháp mã
hóa dựa trên cơ sở phép mã hóa lũy tiếnICT Irreversible Color Transform - biến đổi màu không thuận
nghịch JPEG Joint Photographic Expert Group - nhóm các chuyên gia đồ
hoạ phát triển chuẩn nàyLZW Lempe Ziv Welch - nén từ điển
MSE Mean Square Error - Sai số bình phương trung bình
PSNR Peak Signal To Noise Ratio - tỉ số tín hiệu trên nhiễu đỉnh RCT Reversible Color Transform - biến đổi màu thuận nghịchRGB Red Greeb Blue - không gian màu
RLE Run Length Encoding - mã hoá theo độ dài loạt
SPIHT Set Partitioning In Hierarchical Trees - phương pháp mã
hoá phân cấp theo phân vùng
Trang 6DANH MỤC HÌNH
Trang
Hình 1.1: Quá trình xử lý ảnh 4
Hình 1.2: Các bước cơ bản trong một hệ thống xử lý ảnh 5
Hình 1.3: Biểu diễn một mức xám của ảnh số 8
Hình 1.4: Các giai đoạn chính trong xử lý ảnh 9
Hình 2.1: Quá trình nén và giải nén 12
Hình 2.2: Quá trình nén ảnh theo chuẩn JPEG 24
Hình 2.3: Quá trình giải nén JPEG 25
Hình 2.4: Mô tả giải thuật biến đổi nhanh 27
Hình 2.5: Sơ đồ biến đổi Cosin ngược 29
Hình 2.6: Minh họa khối Zig-Zag 33
Hình 2.7: Các bước nén và giải nén JPEG2000 35
Hình 2.8: Ảnh hưởng của độ chói Y tới ảnh 36
Hình 2.9: Sơ đồ của phương pháp Lifting 1D áp dụng trong JPEG200 37
Hình 2.10: Cây tứ phân 41
Hình 2.11: Mã hoá theo thứ tự từ vùng tần số thấp đến vùng tần số cao 42
Hình 2.12: So sánh chất lượng ảnh được nén bởi JPEG(a) và JPEG2000(b)
43
Hình 2.13: Tính năng ROI 45
Hình 3.1: Giao diện chính của phương pháp nén Huffman tĩnh 47
Hình 3.2: Chọn ảnh nén (Huffman tĩnh) 47
Hình 3.3: Ảnh được chọn 48
Hình 3.4: Chọn vị trí lưu ảnh sau khi nén (Huffman tĩnh) 48
Hình 3.5: Chọn ảnh để giải nén phương pháp Huffman tĩnh 49
Hình 3.6: Các thông số của ảnh giải nén (Huffman tĩnh) 49
Trang 7Hình 3.7: Chọn vị trí lưu ảnh sau giải nén (Huffman tĩnh) 50
Hình 3.8: Giao diện chính của phương pháp nén JPEG 51
Hình 3.9: Chọn ảnh nén (JPEG) 51
Hình 3.10 Ảnh nén được chọn (JPEG) 52
Hình 3.11: Chọn vị trí lưu ảnh (JPEG) 52
Hình 3.12: Giao diện sau khi chọn vị trí lưu ảnh (JPEG) 53
Trang 8Trong hoàn cảnh đó, xử lý ảnh là một lĩnh vực đang được quan tâm và
đã trở thành môn học chuyên ngành của sinh viên ngành Công nghệ Thông tin trong nhiều trường đại học trên cả nước Xử lý ảnh là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh Sự ra đời của nó đã tạo ra các kỹ thuật quan trọng ảnh hưởng trực tiếp đến các lĩnh vực như: Tivi, truyền thông, kỹ xảo đồ họa…
Cùng với sự phát triển đó có những nhu cầu thực tế đặt ra thách thức đối với các nhà khoa học máy tính càng nhiều Những công việc, những bài toán được xử lý theo lối cổ truyền không theo kịp tốc độ phát triển của công nghệ ngày nay Trong đó “Nén ảnh” là một phần của xử lý ảnh có ứng dụng to lớn trong truyền thông và trong lưu trữ, đã có rất nhiều phương pháp nén ảnh được ra đời và không ngừng được cải tiến để ngày càng hoàn thiện đem lại hiệu quả nén cao và cho chất lượng ảnh tốt nhất Do đó em đã lựa chọn đề tài “MỘT SỐ PHƯƠNG PHÁP NÉN ẢNH VÀ XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM”
2 Mục đích và nhiệm vụ nghiên cứu
Mục đích nghiên cứu: tìm hiểu các phương pháp nén ảnh tĩnh nhằm
giảm đi những chi phí trong việc lưu trữ ảnh và chi phí thời gian để truyền ảnh đi xa trong truyền thông nhưng vẫn đảm bảo được chất lượng của ảnh,
Trang 92
đối với bức ảnh được nén phần thông tin quan trọng nhất trong bức ảnh sẽ được biểu diễn và truyền đi với số lượng ít bit hơn so với ảnh gốc mà vẫn đảm bảo tính đầy đủ của thông tin
Nhiệm vụ nghiên cứu: tìm hiểu một số phương pháp nén ảnh và xây
dựng chương trình thử nghiệm
3 Phương pháp và đối tượng nghiên cứu
Phương pháp nghiên cứu:
- Phương pháp khảo cứu lý thuyết: nghiên cứu lý thuyết về các phương pháp nén ảnh
- Phương pháp điều tra khảo sát: Thực hiện qua hai bước chính là nghiên cứu sơ bộ và nghiên cứu chính thức
+ Nghiên cứu sơ bộ: Thực hiện thông qua phương pháp định tính, sử dụng kỹ thuật thảo luận nhóm để bổ sung chức năng của bản demo
+ Nghiên cứu chính thức: Thực hiện thông qua phương pháp nghiên cứu định lượng, sử dụng kỹ thuật thu thập thông tin qua sách, internet…
Đối tượng nghiên cứu:
- Nghiên cứu các lý thuyết về xử lý ảnh và tìm hiểu các phương pháp nén ảnh: RLE, Huffman tĩnh, LZW, JPEG, JPEG2000
- Nghiên cứu các yếu tố thành phần liên quan đến chất lượng ảnh nén như tỉ lệ nén, mức xám, các điểm ảnh…
- Tìm hiểu phần mềm CSharp
4 Phạm vi nghiên cứu
Đề tài giới hạn trong việc nghiên cứu tìm hiểu một số phương pháp nén ảnh tĩnh: RLE, Huffman tĩnh, LZW, JPEG, JPEG2000 và xây dựng chương trình thử nghiệm với các định dạng ảnh: png, bmp, jpg, tif, tiff
5 Ý nghĩa khoa học và thực tiễn của đề tài
Ý nghĩa khoa học: lý thuyết nén ảnh ra đời, phát triển và có cơ sở khoa
học vững chắc, nghiên cứu sẽ góp phần chứng minh thêm tính đúng đắn của
Trang 103
lý thuyết nén ảnh Hiện nay nén ảnh là một lĩnh vực được các chuyên gia nghiên cứu trên thế giới quan tâm và phát triển
Ý nghĩa thực tiễn: chương trình thử nghiệm nếu thành công sẽ đóng
góp một phần nhỏ trong việc giảm dung lượng của những bức ảnh trước khi được truyền đi trên mạng internet mà vẫn giữ được chất lượng hình ảnh
6 Cấu trúc khóa luận
Ngoài phần mở đầu và kết luận khóa luận còn có những nội dung sau:
Chương 1: Tổng quan về xử lý ảnh – Chương này trình bày một số
kiến thức chung về xử lý ảnh, các bước cơ bản trong một hệ thống xử lý ảnh, một số khái niệm về nén ảnh, giải nén ảnh, mức xám, pixel…
Chương 2: Các phương pháp nén ảnh – Trong chương này khóa luận
trình bày cách phân loại các phương pháp nén ảnh, quá trình nén và giải nén Nêu nguyên tắc và thuật toán một số phương pháp nén ảnh RLE, Huffman tĩnh, LZW, JPEG, JPEG2000 là nội dung chính được trình bày trong khóa luận
Chương 3: Xây dựng chương trình thử nghiệm – Từ những kiến thức
lý thuyết đã nghiên cứu, khóa luận đã vận dụng và cài đặt thử nghiệm chương trình nén ảnh Chương trình được xây dựng trên ngôn ngữ CSharp đã hoàn thành và đạt được những thành công nhất định dựa trên thuật toán nén bằng phương pháp Huffman tĩnh, phương pháp nén JPEG với các định dạng ảnh: png, bmp, tif, tiff, jpg
7 Kết quả đạt được
Xây dựng thành công chương trình thử nghiệm với phương pháp nén, giải nén bằng thuật toán Huffman tĩnh và phương pháp nén JPEG Áp dụng nén với các định dạng ảnh tĩnh: png, bmp, tiff, tif, jpg Hướng phát triển nghiên cứu trong tương lai là: thực hiện giải nén đối với phương pháp JPEG, ứng dụng nén cho các dạng dữ liệu khác: video, âm thanh, văn bản… đi sâu nghiên cứu tìm hiểu các họ của Wavelet
Trang 114
XỬ LÝ ẢNH Ảnh
Ảnh “tốt hơn”
Kết luận
CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH 1.1 TỔNG QUAN VỀ XỬ LÝ ẢNH
1.1.1 Xử lý ảnh
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à đồ hoạ đó 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à đồ hoạ đóng một 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 ra 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, , cn) Do đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều
Trang 125
Sơ đồ tổng quát của một hệ thống xử lý ảnh:
Hình 1.2: Các bước cơ bản trong một hệ thống xử lý ảnh
Nhìn chung các hệ thống thu nhận ảnh thực hiện 1 quá trình:
- Cảm biến: biến đổi năng lượng quang học thành năng lượng điện
- Tổng hợp năng lượng điện thành ảnh
Tiền xử lý: Sau bộ thu nhận ảnh có thể nhiễu độ tương phản thấp nên cần đưa
vào bộ tiền xử lý để nâng cao chất lượng Có hai phương pháp cơ bản được sử dụng trong tiền xử lý ảnh Phương pháp thứ nhất dựa vào các kĩ thuật tiền xử
lý trong miền không gian và phương pháp thứ hai sử dụng các khái niệm trong miền tần số thông qua biến đổi Fourier
- Phương pháp tiền xử lý trong miền không gian: thuật ngữ miền không gian ở đây muốn nói đến số lượng pixel tạo nên một hình ảnh Các phương pháp tiền xử lý trong miền không gian là các thủ tục tác động trực tiếp lên các
Lưu trữ
Trang 13Chức năng chính của bộ tiền xử lý là lọc nhiễu
Trích chọn đặc điểm:
Các đặc điểm của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh Có thể nêu ra một số đặc điểm của ảnh sau đây:
+ Đặc điểm không gian: Phân bố mức xám, phân bố xác suất, biên
độ, điểm uốn
+ Đặ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 đ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 )
+ Đặ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)…
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
Trang 147
Hậu xử lý:
Các kĩ thuật hậu xử lý bao gồm: rút gọn số lượng điểm biểu diễn, xấp
xỉ đa giác bởi các hình cơ sở, biến đổi Hough
- Rút gọn số lượng điểm biểu diễn là kết quả của phần dò biên hay trích xương thu được một dãy các điểm liên tiếp và bỏ bớt các điểm thu được để giảm thiểu không gian lưu trữ và thuận tiện cho việc đối sánh
- Xấp xỉ đa giác bởi các hình ảnh cơ sở là các đối tượng hình học được phát hiện thường thông qua các kĩ thuật dò biên, kết quả tìm được này là các đường biên xác định đối tượng Đó là một dãy các điểm liên tiếp đóng kín, sử dụng các thuật toán đơn giản hóa như Douglas Peucker, Band Width, Angle… ta sẽ thu được một đa giác xác định đối tượng dấu Vấn đề là ta cần xác định xem đối tượng có phải là đối tượng cần tách hay không? Như ta đã biết một đa giác có thể có hình dạng tựa như một hình cơ sở, có thể có nhiều cách tiếp cận xấp xỉ khác nhau Cách xấp xỉ dựa trên các đặc trưng cơ bản sau: đặc trưng toàn cục, đặc trưng địa phương Việc xấp xỉ tỏ ra rất có hiệu quả đối với một số hình phẳng đặc biệt như tam giác, đường tròn, hình chữ nhật, hình vuông, hình elllipse, hình tròn và một đa giác mẫu
- Biến đổi Hough bao gồm biến đổi Hough cho đường thẳng và biến đổi Hough cho đường thẳng trong tọa độ cực
Một số khái niệm cơ bản
* Ảnh và điểm ảnh: Điểm ảnh được xem như là dấu hiệu hay cường độ
sáng tại 1 toạ độ trong không gian của đối tượng và ảnh được xem như là
Trang 15- Với ảnh đa cấp xám: Nếu dùng 8 bit (1 byte) để biểu diễn mức
xám, thì số các mức xám có thể biểu diễn được là 28 hay 256 Mỗi mức xám được biểu diễn dưới dạng là một số nguyên nằm trong khoảng từ 0 đến
255, với mức 0 biểu diễn cho mức cường độ đen nhất và 255 biểu diễn cho mức cường độ sáng nhất
- Với ảnh màu: Cách biểu diễn cũng tương tự như với ảnh đen trắng,
chỉ khác là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng
rẽ gồm: đỏ (red), lục (green) và lam (blue) Để biểu diễn cho một điểm ảnh màu cần 24 bit, 24 bit này được chia thành ba khoảng 8 bit Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính
Hình 1.3: Biểu diễn của một mức xám của ảnh số
Trang 169
của hệ thống chuyển tải, nén ảnh trong khi truyền đi hoặc lưu trữ
Các giai đoạn chính trong xử lý ảnh có thể được mô tả trong hình sau:
Hình 1.4: Các giai đoạn chính trong xử lý ảnh
1.2 NÉN ẢNH
• Pixel (picture element): phần tử ảnh
Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị
độ sáng Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hoá ảnh Như vậy một ảnh là một tập hợp các pixel Mỗi pixel là gồm một cặp toạ độ x, y và màu Cặp toạ độ x, y tạo nên độ phân giải (resolution) Màn hình máy tính có nhiều loại với độ phân giải khác nhau: 320x200, 640x350, 800x600, 1024x768,
Số hóa Phân
tích ảnh Nhận dạng
ảnh
Hệ quyết định Lưu trữ
Lưu trữ
Trang 17dữ liệu trên mạng thông tin mà lại cho phép chúng ta khôi phục lại dữ liệu ban đầu
• Tỷ lệ nén
Tỷ lệ nén là một trong các đặc trưng quan trọng của mọi phương pháp nén Tỷ lệ nén được định nghĩa như sau:
Tỷ lệ nén = (1/r)*100%
với r là tỷ số nén được định nghĩa:
r = kích thước dữ liệu gốc / kích thước dữ liệu nén
Như vậy:
hiệu suất nén = (1- tỷ lệ nén)*100%
Đối với ảnh tĩnh, kích thước chính là số bit biểu diễn toàn bộ bức ảnh Đối với ảnh video, kích thước chính là số bit để biểu diễn một khung hình video (video frame)
• Nén ảnh là một kỹ thuật mã hoá các ảnh số hoá nhằm giảm số lượng các bit dữ liệu cần thiết để biểu diễn ảnh Nén ảnh đạt được bằng cách loại bỏ các phần dư thừa trong ảnh đã được số hoá Dư thừa có thể là dư thừa thông tin về không gian, dư thừa về cấp xám:
+ Dư thừa thông tin về không gian: trong một bức ảnh luôn tồn tại
sự tương quan giữa các điểm ảnh cạnh nhau
+ Dư thừa thông tin về cấp xám: là dư thừa dựa vào sự tương quan giữa các màu sắc cạnh nhau
• Giải nén là quá trình xử lý dữ liệu nén trở về dữ liệu gốc
Trang 1811
CHƯƠNG 2: CÁC PHƯƠNG PHÁP NÉN ẢNH 2.1 Phân loại các phương pháp nén ảnh
2.1.1 Phân loại dựa vào nguyên lý nén
Nén bảo toàn thông tin (losses compression): bao gồm các phương
pháp nén mà sau khi giải nén sẽ thu đựơc chính xác dữ liệu gốc Tuy nhiên nén bảo toàn thông tin chỉ đạt hiệu quả nhỏ so với phương pháp nén không bảo toàn thông tin
Nén không bảo toàn thông tin (lossy compression): bao gồm các
phương pháp nén sau khi giải nén sẽ không thu được dữ liệu như bản gốc Các phương pháp này được gọi là “tâm lý thị giác” đó là lợi dụng tính chất của mắt người chấp nhận một số vặn xoắn trong ảnh khi khôi phục lại Phương pháp này luôn đem lại hiệu quả cao do loại bỏ đi những thông tin dư thừa không cần thiết
2.1.2 Phân loại dựa vào cách thức thực hiện nén
Phương pháp không gian (Spatial Data Compression): các phương
pháp này thực hiện nén bằng cách tác động trực tiếp lên việc lấy mẫu của ảnh trong miền không gian
Phương pháp sử dụng biến đổi (Transform Coding): gồm các phương
pháp tác động lên sự biến đổi của ảnh gốc chứ không tác động trực tiếp 2.1.3 Phân loại dựa vào lý thuyết mã hoá
Các phương pháp nén thế hệ thứ nhất: gồm các phương pháp có mức
độ tính toán đơn giản như lấy mẫu, gán từ mã,…
Các phương pháp nén thế hệ thứ hai: gồm các phương pháp dựa
vào mức độ bão hoà của tỷ lệ nén bằng cách sử dụng các phép toán tổ hợp đầu ra một cách hợp lý hoặc sử dụng biểu diễn ảnh như: phương pháp kim
tự tháp Laplace, phương pháp dựa vào vùng gia tăng, phương pháp tách hợp
Trang 1912
Quá trình nén Quá trình giải nén
2.2 Quá trình nén và giải nén
Quá trình nén và giải nén gồm 2 công đoạn:
Nén: dữ liệu gốc qua bộ mã hoá dữ liệu, bộ mã hoá này thực hiện nén
dữ liệu đến một mức thích hợp cho việc lưu trữ và truyền dẫn thông tin Quá trình này sẽ thực hiện việc loại bỏ hay cắt bớt những dư thừa của ảnh để thu được thông tin cần thiết nhưng vẫn đảm bảo được chất lượng ảnh
Giải nén: dữ liệu nén đi qua bộ giải mã dữ liệu, bộ giải mã sẽ thực hiện giải nén để thu được dữ liệu gốc ban đầu Việc giải nén này thường phải dựa vào các thông tin đi kèm theo dữ liệu nén, tuỳ thuộc vào kiểu nén hay phương pháp nén mà dữ liệu giải nén được có hoàn toàn giống với dữ liệu gốc ban đầu hay không
Tóm lại quá trình nén và giải nén dữ liệu có thể mô tả một cách tóm tắt theo sơ đồ dưới đây:
Hình 2.1: Quá trình nén và giải nén 2.3 Phương pháp mã hoá độ dài loạt RLE
Mã hoá theo độ dài loạt RLE (Run Length Encoding) là một phương pháp nén ảnh dựa trên sự cắt bớt các dư thừa về không gian (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) 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.3.1 Nguyên tắc
Nguyên tắc của phương pháp 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ụ: 110000000000000011 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á
Trang 20Ví dụ 2: Ta có một chuỗi nguồn:
d = 5 7 9 11 13 18 28 38 48 58 30 35 40 45 Chuỗi kết quả sau khi mã hoá:
1 5 1 7 1 9 1 11 1 3 1 18 1 28 1 38 1 48 1 58 1 30 1 35 1 40 1 45
Tỷ số nén = 14 / 28 = 0.2
Trang 2114
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
Ví dụ 3: Ta có chuỗi nguồn:
d = 5 8 4 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 Giả sử kí tự tiền tố là “+” ta có: 5 8 4 +8 8 + 9 10
Tỷ số nén = 19 / 9 = 2.1
Tuy nhiên trong một số trường hợp các điểm ảnh có độ tương quan với nhau vể giá trị mức xám như trong ví dụ dưới đây ta có thể tiến hành xử lý như sau
a Thuật toán nén RLE
Input: Tệp tin nguồn f
Output: Tệp tin nén fn
Bước 1: + Mở tệp tin nguồn f (để đọc)
+ Mở tệp tin nén fn (để ghi)
Bước 2: + Đặt L=1; // L là một số nguyên
Trang 2215
+ Đọc kí tự trong bản mã gán vào C1;
Bước 3: Khi nào C1 không phải là ký tự cuối cùng trong tệp f thì thực
hiện:
b1 Đọc kí tự tiếp theo trong bản mã gán vào C2
b2 Kiểm tra, nếu C1 = C2 thì:
+ Tăng L=L+1;
+ Quay lên thực hiện tiếp b1;
Ngược lại thì:
+ Ghi cặp (L, C1) ra tệp nén fn
+ Quay lên thực hiện tiếp Bước 3:
Ngược lại, nếu (C1 là ký tự cuối cùng trong tệp f mã) thì thực hiện Bước 4
Bước 4: Kết thúc
b Thuật toán giải nén RLE
Input: Tệp tin nguồn nén fn
Output: Tệp tin giải nén fg
Bước 1: + Mở tệp tin nén fn (để đọc)
+ Mở tệp tin giải nén fg (để ghi)
Bước 2: Khi nào cặp (L,C) không phải là ký tự cuối cùng trong tệp fn
thì thực hiện:
b1 Đọc cặp (L,C) trong tệp nén fn b2 + For i=1 to L do ghi ký tự C ra tệp giải nén fg
+ Quay lên thực hiện tiếp Bước 2:
Ngược lại (L, C là cặp ký tự cuối cùng trong tệp nén fc) thì thực hiện Bước 3
Trang 2316
thống kê Người ta tính tần suất xuất hiện của các ký tự bằng cách duyệt tuần
tự từ đầu tệp gốc đến cuối tệp Việc xử lý ở đây tính theo bit Trong phương pháp này các ký tự có tần suất cao một từ mã ngắn, các ký tự có tần suất thấp một từ mã dài và thỏa mãn tính chất frefix (Không có từ mã nào là tiền tố của
từ mã khác) Như vậy với cách thức này ta đã làm giảm chiều dài của từ mã bằng cách biến đổi chiều dài các bit tuy nhiên cũng có trường hợp bị thiệt một
ít bit khi tần suất xuất hiện của kí tự đó thấp
2.4.2 Thuật toán
a) Thuật toán tạo mã Huffman tĩnh
Input: Tệp tin nguồn chưa nén fn
Bước 3: Bắt đầu với một rừng các cây (coi mỗi ký tự trong bảng là 1
cây): Tìm hai cây có trọng số nhỏ nhất ghép lại làm một, trọng số của cây mới bằng tổng trọng số của hai cây con đem ghép
Bước 4: Nếu số lượng cây trong danh sách còn lớn hơn một thì
Thực hiện bước 3, ngược lại thì thực hiện bước 5
Bước 5: Xuất phát từ gốc đi tới các nút lá trên cây và tạo cây nhị phân
với qui ước đi sang trái ghi mã 0, đi bên phải ghi mã 1
Bước 6: Thực hiện nén xâu đã cho
Bước 7: Kết thúc
Trang 2518
Bước 5: Xuất phát từ gốc đi tới các nút lá trên cây và tạo cây nhị phân với qui
ước đi sang trái ghi mã 0, đi bên phải ghi mã 1 ta được
b Thuật toán giải nén Huffman tĩnh
Bước 1: Đặt u = “”, xb = “”;
Bước 2: Đọc lần lượt từng bit trong tập tin nén ->u; xb= xb + u
Bước 3: Duyệt trong bảng tần xuất đã được xác định
Nếu thấy có mã = xb thì Ghi ký tự tương ứng trong bảng tần xuất ra tệp giải nén Gán xb = “”, u = “”;
Ngược lại sang Bước 4 Bước 4: Nếu chưa hết tập tin nén thì thực hiện Bước 2
Ngược lại thực hiện Bước 5
Bước 5: Kết thúc thuật toán
Ví dụ 6: Giải nén đoạn mã: 1110011110001111000010001101000010000
Bước 1: Đặt u = “”, xb = “”;
Trang 2619
Bước 2: Đọc trong tệp tin nén u = ‘1’; xb = ‘1’; u = ‘1’; xb = ‘11’;
Bước 3: xb = ‘11’ -> mã = ‘g’ ghi ‘g’ ra tệp nén; xb = ‘’; u = ‘’;
Bước 2: Đọc trong tệp tin nén u = ‘1’; xb = ‘1’; u = ‘0’; xb = ‘10’;
Bước 3: xb = ‘10’ -> mã = ‘o’ ghi ‘o’ ra tệp nén; xb = “”; u = “”;
và được đặt tên là LZW (Lempe - Ziv - Welch) Phương pháp này 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, nó hay hơn các phương pháp 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 dùng cho tất cả các loại file nhị phân, thường được dùng để nén các loại dữ liệu như: văn bản, ảnh đen trắng, ảnh màu, ảnh
đa cấp xám… và là chuẩn nén cho các dạng ảnh GIF và TIFF Số bit/pixel không ảnh hưởng đến hiệu quả của LZW
2.5.1 Nguyên tắc
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
từ vựng) Trong đó từ vựng sẽ là các từ mã được sắp xếp theo thứ tự nhất định Nghĩa là một chuỗi con trong dữ liệu ảnh Từ điển được xây dựng
song song với quá trình đọc dữ liệu Sự xuất hiện của 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
Trang 27…
… Chuỗi
• 256 từ mã đầu tiên theo thứ tự từ 0…255 chứa các số nguyên từ 0…255 Đây là mã của 256 kí tự cơ bản trong bảng mã ASCII
• Từ mã thứ 256 chứa một mã đặc biệt là mã xoá (CC - Clear Code) Khi số mẫu lặp lớn hơn 4096 thì người ta sẽ coi ảnh gồm nhiều mảnh
ảnh và từ điển sẽ gồm nhiều từ điển con Khi hết một mảnh ảnh sẽ gửi 1
mã xoá (CC) để báo hiệu kết thúc mảnh ảnh cũ và bắt đầu mảnh ảnh mới đồng thời sẽ khởi tạo lại từ điển
• Từ mã thứ 257 chứa mã kết thúc thông tin (EOI - End Of Information)
Thông thường một file ảnh GIF có thể chứa nhiều mảnh ảnh, mỗi mảnh ảnh này sẽ được mã hoá riêng Chương trình giải mã sẽ lặp đi lặp lại thao tác giải
Trang 2821
mã từng ảnh cho đến khi gặp mã kết thúc thông tin thì dừng lại
• Các từ 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 từ điển biểu diễn bằng 9 bit Các từ mã từ
512 đến 1023 biểu diễn bởi 10 bit, từ 1024 đến 2047 biểu diễn bởi 11 bit,
và từ 2048 đến 4095 biểu diễn bởi 12 bit
Ví dụ 7: Cho chuỗi đầu vào “HELLOHELLOHELL”
Từ điền ban đầu đã gồm 256 kí tự cơ bản
Kích thước đầu vào: 14 x 8 = 112 bit
Quá trình nén
Đầu vào Đầu ra Thực hiện
H(72) H đã có trong từ điển đọc tiếp
E(69) 72 Thêm vào từ điển mã 258 đại diện cho chuỗi HE L(76) 69 Thêm vào từ điển mã 259 đại diện cho chuỗi EL
L 76 Thêm vào từ điển mã 260 đại diện cho chuỗi LL O(79) 76 Thêm vào từ điển mã 261 đại diện cho chuỗi LO
H 79 Thêm vào từ điển mã 262 đại diện cho chuỗi OH
E HE đã có trong từ điển đọc tiếp
L 258 Thêm vào từ điển mã 263 đại diện cho chuỗi HEL
L LL đã có trong từ điển đọc tiếp
O 260 Thêm vào từ điển mã 264 đại diện cho chuỗi LLO
H OH đã có trong từ điển đọc tiếp
E 262 Thêm vào từ điển mã 265 đại diện cho chuỗi OHE
L EL đã có trong từ điển đọc tiếp
L 259 Thêm vào từ điển mã 266 đại diện cho chuỗi ELL
76 Input = FALSE EOI
Bảng 2.1: Quá trình nén ví dụ 7 Chuỗi đầu ra là: 72 69 76 76 79 258 260 262 259 76
Trang 292.5.2 Thuật toán
a Thuật toán nén LZW
Bước 1: + Mở tệp tin nguồn f (để đọc)
+ Mở tệp tin nén fn (để ghi)
Bước 2: Khởi tạo từ điển gồm các kí tự trong bảng chữ cái của văn
bản được đánh chỉ số từ 0 Xâu trưng gian P rỗng
Bước 3: Đọc kí tự tiếp theo trong văn bản gán vào C
Bước 4: Kiểm tra xem xâu P + C dã có trong từ điển chưa?
- Nếu có thì gán P = P + C
- Nếu không có thì:
+ Ghi ra file nén chỉ số của P trong từ điển
+ Thêm xâu P + C vào từ điển
Trang 3023
+ Đặt P = C
Bước 5: Kiểm tra: nếu vẫn còn kí tự trong file chưa nén f thì:
Quay lại Bước 3
Ngược lại thì:
+ Ghi ra bản mã chỉ số của P vào từ điển
+ Sang Bước 6
Bước 6: Kết thúc
b Thuật toán giải nén LZW
Bước 1: Khởi tạo từ điển ban đầu (gồm các kí tự trong bảng chữ cái
của văn bản, được đánh chỉ số từ 0)
Bước 2: Đọc từ mã đầu tiên trong file nén fn gán vào cW
Bước 3: Ghi đoạn copy cW ra file giải nén fg
Bước 4: Gán pW cho cW
Bước 5: Đọc từ mã tiếp theo trong file nén fn gán cW
Bước 6: Kiểm tra đoạn cW có trong từ điển không?
- Nếu có thì:
+ Ghi đoạn copy cW ra file giải mã fg
+ Đặt p = pW
+ Đặt c = kí tự đầu tiên của đoạn copy cW
+ Thêm đoạn copy c + p vào từ điển
- Ngươc lại thì (nếu không có)
- Đặt P = pW
- Đặt c = kí tự đầu tiên của đoạn copy pW
- Ghi đoạn copy p + c ra file giải mã và thêm nó vào từ điển
Bước 7: Kiểm tra xem còn từ mã nào trong bản mã hay không?
Nếu có thì quay về Bước 5
Ngược lại (nếu không còn) thì quay sang Bước 8
Bước 8: Kết thúc
Trang 31Chuẩ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 tuần tự (Sequential DTC- Based) của chuẩn JPEG
n k h ố
i
8x8 Ảnh
Lượng
tử hóa
Mã hóa
Ảnh nén
Bảng lượng
tử
Trang 3225
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 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.3: Quá trình giải nén ảnh JPEG
a 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ố C i j Khi n = 8 chúng ta chỉ cần tính hệ số C i j cho 3 tầng (823), số các hệ số là: 4+2+1=7
Nếu với một ảnh 512x512, phép biến đổi nhanh Cosin một chiều 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ố C i j là: 256+128+64+32+16+8+4+2+1=509 Như vậy thời gian tính các
hệ số C cho ảnh 512x512 lớn gấp 72 lần so với thời gian tính toán các hệ i j
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:
DCT ngược
Ảnh giải nén
Bảng
mã
Bảng lượng tử