Thông thường chúng ta thường gì nhận thông tin ở dạng văn bản, các văn bản này đươc mã hóa và lưu trữ trên máy tính, khi đó chúng ta có dữ liệu dạng văn bản. Một câu hỏi đặt ra nếu thông tin chúng ta thu nhận được ở một dạng khác như âm thanh (voice), hình ảnh (image) thì dữ liệu của nó ở dạng nào? Chính những điều này đã dẫn đến một khái niệm mới ta gọi đó là dữ liệu đa phương tiện.Dữ liệu đa phương tiện là dữ liệu biểu diễn thông tin đa phương tiện.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
*
BÁO CÁO XỬ LÍ DỮ LIỆU ĐA PHƯƠNG TIỆN
ĐỀ TÀI 6 : CÁC PHƯƠNG PHÁP MÃ HÓA NÉN ẢNHGIẢNG VIÊN HƯỚNG DẪN : PGS.TS Nguyễn Thị Hoàng Lan SINH VIÊN THỰC HIỆN : Phan Minh Tân 20104834
Trần Khánh Duy 20111350
Hà nội 5/2015
Trang 2M c L c ục Lục ục Lục
Phân công công việc 2
Phần 1 : Các loại dữ liệu đa phương tiện, dữ liệu ảnh số 4
Các phương pháp mã hóa nén ảnh 4
1 Dữ liệu đa phương tiện 4
1.1 Dữ liệu đa phương tiện là gì? 4
1.2 Các loại dữ liệu đa phương tiện 4
2 Dữ liệu ảnh số 5
3 Tìm hiểu chung về phương pháp nén ảnh trong truyền thông 6
Phần 2 : Phương pháp nén ảnh JPEG và PNG 7
I.Phương pháp nén ảnh JPEG 7
1 Giới thiệu về JPEG 7
2 Quy trình nén ảnh JPEG 7
2.1 Chuyển đổi không gian màu 8
2.2 Phân phối 9
2.3 Biến đổi DCT 10
2.4 Lượng tử hóa 13
2.5 Mã hóa 15
3 Quy trình giải nén JPEG 18
A Khuôn dạng ảnh JPEG 20
II Phương pháp nén ảnh PNG 21
1 Tổng quan 21
2 Quá trình nén ảnh PNG 21
2.1 Lọc 21
2.2 Nén: Deflate 22
Phần 3 : Thử nghiệm ứng dụng so sánh hiệu năng phương pháp nén ảnh JPEG và PNG 24
1 Tóm tắt 24
2 Tiến hành 24
3 Kết quả 27
Phần 4 : Tài liệu tham khảo và phần mềm thực nghiệm 29
Trang 3Phân công công việc
Trần Khánh Duy -Tìm hiểu khái quát các loại dữ liệu đa phương tiện
- Tìm hiểu phương pháp má hóa nén ảnh
- Tổng hợp làm slide, báo cáoPhan Minh Tân -Tìm hiểu phương pháp nén ảnh JPEG và PNG
- So sánh định dạng dữ liệu ảnh JPEG và PNGĐặng Anh Minh -Thử nghiệm ứng dụng, so sánh hiệu năng và giải thích
Trang 4Phần 1 : Các loại dữ liệu đa phương tiện, dữ liệu ảnh số
Các phương pháp mã hóa nén ảnh.
1 Dữ liệu đa phương tiện.
1.1 Dữ liệu đa phương tiện là gì?
Thông thường chúng ta thường gì nhận thông tin ở dạng văn bản, các văn bản này đươc mã hóa và lưu trữ trên máy tính, khi đó chúng ta có dữ liệu dạng văn bản Một câu hỏi đặt ra nếu thông tin chúng ta thu nhận được ở một dạng khác như âm thanh (voice), hình ảnh (image) thì dữ liệu của nó ở dạng nào? Chính những điều này
đã dẫn đến một khái niệm mới ta gọi đó là dữ liệu đa phương tiện.
Dữ liệu đa phương tiện là dữ liệu biểu diễn thông tin đa phương tiện
Ví dụ dữ liệu đa phương tiện là các dữ liệu ở dạng thông tin như
- Âm thanh
- Hình ảnh
- Văn bản
- Kết hợp của 3 dạng trên
1.2 Các loại dữ liệu đa phương tiện.
Khi nghiên cứu các dữ liệu ở dạng thông tin trên, người ta nhận ra rằng cần phải phân chia dữ liệu đa phương tiện nhỏ hơn nữa Bởi vì dữ liệu ở các dạng âm thanh, hình ảnh trong quá trình “vận động” theo thời gian có những tính chất rất khác so với dạng tĩnh Điều này đòi hỏi kĩ thuật, công nghệ xử lý rất khác nhau
Người ta chia các loại dữ liệu đa phương tiện thành :
Dữ liệu không phụ thuộc thời gian :
- Văn bản ( text)
- Đồ thị (graphic)
- Ảnh đồ họa
Trang 5 Dữ liệu phụ thuộc thời gian- tín hiệu số :
- Âm thanh (audio) , tiếng nói, ấm nhạc
- Ảnh (image) , video, ảnh động (motion)
- Hoạt hình (nimation)
2 Dữ liệu ảnh số
Dữ liệu ảnh số: là giá trị các điểm ảnh x ∈ (0,1,2,…)
Cấu trúc ảnh số: là ma trận các phần tử ảnh (pixel), mỗi pixel được đặc trưng bởi tọa độ (vị trí), trong mặt phẳng (m,n) và giá trị điểm ảnh tại vị trí đó I(m,n)Cấu trúc dữ liệu ảnh số: chia làm ba loại :
- Ảnh xám (đa mức xám )
- Ảnh màu
- Ảnh nhị phân
Trang 63 Tìm hiểu chung về phương pháp nén ảnh trong truyền thông.
Nén không mất mát thông tin : các phương pháp mã hóa dữ liệu
Nén có tổn hao : mã hóa nén dựa trên phép biến đổi ảnh
Phân tích sơ đồ khối nén
Khối FDCT : là khối biến đổi cosin rời rạc, biến đổi dữ liệu từ miền
số nguyên sang miền số thực
Khối lượng tử hóa : là khối biến đổi dữ liệu sau DCT thành số nguyên, đây là khối gây mất mát thông tin
Khối mã hóa : thực hiện biến đổi dữ liệu sau lượng tử hóa thành cách từ mã
Bảng lượng tử hóa: là ma trận 8x8 được sử dụng cho việc biến đổi
dữ liệu từ số thực sang số nguyên, bảng này cũng được mã hóa kèm với dữ liệu sau lượng tử hóa
Bảng mã hóa : là luật mã hóa các dữ liệu số nguyên sau lượng tử hóathành các từ mã
Trang 7Phần 2 : Phương pháp nén ảnh JPEG và PNG
I.Phương pháp nén ảnh JPEG
1 Giới thiệu về JPEG
JPEG là viết tắt của Joint Photographic Expert Group( nhóm các chuyên gia phát triển chuẩn ảnh này) Chuẩn JPEG được công nhận là chuẩn ảnh quốc tế năm 1990 phục vụ các ứng dụng truyền ảnh cho các lĩnh vực như y học, khoa học kỹ thuật, ảnh nghệ thuật…vv
Phương pháp nén ảnh JPEG là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục lần tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu chất lượng ảnh bị suy giảm sau khi nén, sự suy giảm này tăng dần theo hệ số nén Nhưng sự mất mát thông tin này là có thể chấp nhận được và việc loại bỏ những thông tin không cần thiết được dựa trên những nghiên cứu về hệ nhãn thị của mắt người
Nguyên lý của phương pháp nén JPEG là: cắt hình ảnh thành từng khối nhỏ, phân tích tất
cả các dữ liệu về màu sắc, độ sáng mà các khối đó chứa bằng các phương trình ma trận Ảnh màu trong không gian RGB( red, green, blue) được chuyển đổi qua hệ YCbCr Trong khi thị giác con người lại rất nhạy cảm với hệ Y, ít nhạy cảm hơn nhiều với hệ Cb,Cr Dẫn đến hệ thống sẽ nén thành phần Y của ảnh ở mức độ ít hơn nhiều so với Cb
và Cr kế tiếp là dụng biến đổi Cosin rời rạc, sau nữa là quá trình lượng tử hóa và mã hóa.Khi giải nén ảnh các bước thực thi sẽ làm ngược lại quá trình nói trên
2 Quy trình nén ảnh JPEG
Trước biến đổi ảnh được xử lý phân tích thành các ảnh đơn sắc và được số hóatheo một trong những tiêu chuẩn hiện hành.Sau đó ảnh được chuyển đổi khônggian màu : RGB sang YUV hoặc CrYCb tùy vào thiết bị hiển thị
Chuẩn nén JPEG ban đầu phân ảnh ra các khối 8 x 8 Việc xử lý trên các khối dữliệu nhỏ này sẽ làm tăng độ chính xác trong tính toán cũng như giảm thiểu đượcmột phần của tính toán
Trang 8 Tiếp đến các khối này qua giai đoạn biến đổi Cosin( DCT ) phép biến đổi Cosinerời rạc biến đổi thông tin ảnh từ miền không gian sang miền tần số để có thể biểudiễn dưới dạng gọn hơn.
Tiếp sau quá trình biến đổi Cosine rời rạc là quá trình lượng tử hóa: quá trình nàylàm giảm số lượng bít cần để lưu trữ các hệ số biến đổi bằng việc giảm độ chínhxác của hệ số ( quá trình mất mát thông tin)
Tiếp đến là quá trình mã hóa, quá trình này sẽ tách biệt việc xử lý hai thành phầnđặc trưng: thành phần các hệ số một chiều DC đặc trưng cho phần lớn tín hiệu củaảnh và thành phần các hệ số xoay chiều đặc trưng cho các thông tin chi tiết củaảnh
2.1 Chuyển đổi không gian màu.
- Đầu vào là ảnh được phân tích thành các ảnh đơn sắc và được số hóa theo một trong những tiêu chuẩn hiện hành
- Đầu ra là ảnh đã được chuyển không gian màu từ RGB sang YUV hoặc CrYCb tùy vào thiết bị hiển thị
Trang 9Trước tiên ảnh được chuyển đổi từ RGB tới một không gian màu khác gọi làYCbCr Nó có 3 thành phần Y, Cb,Cr, thành phần Y miêu tả ánh sáng của điểm ảnh,thành phần Cb và Cr miêu tả “ chrominance”(phân loại thành phần xanh lá cây và đỏ) Sựchuyển đổi không gian màu YcbCr cho phép nén ảnh lớn nhất và cho ra cùng một chấtlượng ảnh Tuy nhiên nhiều ảnh JPEG chất lượng cao không áp dụng trường hợp này vàthay vì giữ chúng trong không gian màu RGB, mỗi vùng màu được nén và lượng tử hóatách biệt với những giới hạn cùng chất lượng.
Trang 10Miêu tả hàm truyền cosine
8x8 ảnh nhỏ trình bầy trong mặt xám 8bitViệc phân ảnh ra các khối 8x8 đem lại nhiều thuận lợi trong quy trình Nó giúp cho côngđoạn biến đổi nhanh hai chiều cho các khối 8x8 hiệu quả hơn, biến đổi Cosine cho cáckhối có cùng kích cỡ có thể giảm được một phần các tính toán chung Ngoài ra biến đổiCosine đối với các khối có kích thước nhỏ sẽ làm tăng độ chính xác khi tính toán với sốdấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra
Mặt khác, do các điểm ảnh hàng xóm có độ tương quan cao hơn do đó phép biến đổiCosine cho từng khối nhỏ sẽ tập trung năng lượng thấp trong các khối nên chỉ tạo ra mấtmát thông tin cục bộ giúp nâng cao chất lượng ảnh.
Chuẩn JPEG sử dụng biến đổi Cosin Phép biến đổi Cosin tập trung năng lượng của khối ảnh vào 1 hệ số tương ứng với vùng tần số thấp Dẫn đến có thể cho các hệ số vùng tần số cao về gần 0 và bằng 0 mà ảnh hưởng không đáng kể đến chất lượng ảnh
Mỗi thành phần (Y,Cb,Cr) của mỗi khối 8x8 được chuyển đến vùng tần số sử dụng biến đổi Cosine rời rạc 2-D(DCT) Nguyên tắc chính của phương pháp mã hóa này
là biến đổi tập các giá trị pixel của ảnh trong miền không gian sang một tập các giá trị
Trang 11khác trong miền tần số sao cho các hệ số trong tập giá trị mới này có tương quan giữa cácđiểm ảnh gần nhau nhỏ hơn.
Phép biến đổi Cosin rời rạc một chiều được định nghĩa bởi:
Biến đổi là một công đoạn lớn trong 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 biến đổi là tập trung năng lượng vào một số ít các hệ số biến đổi công thức biến đổi cho mỗi khối:
Trang 12Mỗi khối 64 điểm ảnh sau biến đổi DCT thuận sẽ nhận được 64 hệ số thực mỗi hệ
số này có chứa một trong 64 thành phần tần số không gian hai chiều Hệ số với tần số bằng không theo cả hai hướng ( tương ứng với k1 và k2 bằng 0) được gọi là hệ số một chiều DC, hệ số này chính là giá trị trung bình của 64 điểm ảnh trong khối 63 hệ số còn lại gọi là các hệ số xoay chiều AC Hệ số một chiều DC tập trung phần lớn năng lượng của ảnh
8x8 bit ảnh nhỏ
Sau khi trừ mỗi phần tử cho 128
Sau khi lấy DCT và nhóm các số nguyên gần nhất
Giá trị lớn nhất ở đầu gốc trái gọi là hệ số DC, 63 giá trị còn lại gọi là hệ số AC Biến đổiCosine rời rạc làm tăng kích cỡ ảnh
Trang 13Thuật toán biến đổi nhanh Cosine hai chiều cho mỗi khối trong trường hợp này sẽ bao gồm 16 phép biến đổi nhanh Cosin một chiều đầu tiên người ta biến đổi nhanh Cosin một chiều cho các dãy điểm ảnh trên mỗi hàng Lần lượt thực hiện cho 8 hàng Sau đó đem biến đổi nhanh Cosin một chiều theo từng cột của ma trận vừa thu được sau 8 phép biến đổi trên Cũng lẩn lượt thực hiện cho 8 cột ma trận cuối cùng sẽ là ma trận hệ số biến đổi của khối tượng ứng giải thuật biến đổi nhanh được mô tả như sau:
Trên thực tế nếu cài đặt thuật toán nhanh tổng quoát thì chúng ta phải sử dụng nhiều vòng lặp, nhiều phép so sánh và số lượng phép toán mà máy cần thực hiện thực tế nhiều hơn thuật toán thông thường Qua thử nghiệm cài đặt cả 2 thuật toán trên và cho chạy trên cùng một ảnh thì thuật toán thông thường thường nhanh hơn so với thuật toán FCT Vì vậy người ta vẫn thường sử dụng thuật toán thông thường Một nguyên nhân nữa
là vì phép biến đổi chỉ thực hiện trên các khối ảnh 8x8 nên độ phức tạp của thuật toán không phải là điều quyết định trong tốc độ tính toán
Khối lượng tử hóa 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, nhiệm vụ chính của công đoạn này là mã hóa ma trận đầu vào sau biến đổi DCT thành các giá trị mức xám đặc trưng cho các cường độ sáng của ảnh Đầu vào của khối lượng tử hóa là các ma trận hệ số biến đổi Cosin của các khối điểm ảnh
Sau khi thực hiện biến đối DCT, 64 hệ số sẽ được lượng tử hoá dựa trên một bảng
lượng tử gồm 64 phần tử Q(u,v) với 0≤u, v≤7 Bảng này được định nghĩa bởi từng ứng
dụng cụ thể Các phần tử trong bảng lượng tử có giá trị từ 1 đến 255 được gọi là các bướcnhảy cho các hệ số DCT Quá trình lượng tử được coi như là việc chia các hệ số DCT chobước nhảy lượng tử tương ứng, kết quả này sau đó sẽ được làm tròn xuống số nguyên gần
-1 -1 -1 -1
-1 -1
-1 -1
-1 -1 -1 -1
-1
-1 -1 -1 -1
C4 C4 C4 C4
X(7)
X(3) X(4) X(5) X(6)
Trang 14nhất Công thức (3) thể hiện việc lượng tử với F(u,v) là các hệ số DCT, F Q (u,v) là các hệ
số sau lượng tử, các hệ số này sẽ được đưa vào bộ mã hoá Entropy
F Q (u , v )=IntegerRound[F (u , v )
Q (u , v )]
Ở giai đoạn này người ta sử dụng một bảng lượng tử hóa Q(u,v) tùy thuộc vào từng mục đích hay từng ứng dụng cụ thể người ta có thể sử dụng các bảng lượng tử khá nhau
Giả sử ở đây ta dùng bảng lượng tử Q(u,v) được định nghĩa như sau:
Sử dụng bảng lượng tử Q(u,v) này ta thực hiện với ma trận DCT ở trên:
Vd: round (−41516 )=¿round(−25.9375)=¿ -26
Ta được kết quả:
Trang 15Kết thúc quá trình lượng tử hóa ta được ma trận hệ số, ma trận hệ số này chính là đầu vào của bước mã hóa.
Nhận xét: với phương pháp lượng tử hóa ta có thể sử dụng lượng tử hóa đều, khi
đó tất cả các hệ số sau quá trình DCT đều được chia chung cho một hệ số Song với ảnh, phần tần số thấp chứa nhiều thông tin hơn phần tần số cao vì vậy để đạt độ nén cao ta có thể dùng nhiều bit để lưu giữ các giá trị thành phần tần số thấp và dùng ít bit hơn để lưu trữ hệ số tần số cao Điều này dẫn tới việc thiết kế một bảng lượng tử với các hệ số khác nhau
Một bảng lượng tử hóa tốt cần phải có các tính chất sau:
Giá trị Q(m,n) có thể nhỏ nhất bằng 2 Khi đó các hệ số X(m,n) sau khi được làm tròn tới số nguyên gần nhất có thể chứa trong 1 byte
Hệ số X(0,0) là trung bình của ô ảnh vì thế không được để sai lệch quá nhiều
Khi ảnh là ảnh đồ họa thì có các vùng lớn giá trị điểm ảnh như nhau nên các hệ số AC=0 Còn những ô chứa biên thì giá trị AC khá lớn Q(m,n) nên lấy nhỏ để độ nén vẫn cao và đường biên không bị nhòe
Đầu vào của quá trình mã hóa người ta chia tách biệt ra hai thành phần để xử lý Với thành phần các hệ số 1 chiều DC người ta mã hóa hệ số theo phương pháp DPCM Còn với thành phần xoay chiều AC người ta sẽ sắp xếp lại theo phương pháp Zigzag và
mã hóa Huffman
2.5.1 Mã hóa thành phần DC.
Thành phần DC được mã hóa DPCM sau đó mã hóa Huffman
Trang 16Tất cả các hệ số DC của các khối 8x8 được sắp xếp thành chuỗi để mã hóa dự đoán.Hệ số
DC tiếp theo được dự đoán theo sự sai khác với thành phần trước nó:
DiffDC(blocki) = DC(blocki) – DC(blocki–1)
Ví dụ:giả sử các thành phần DC như bảng dưới
1216
1248
1232 1248
1224 1208
Trước mã hóa: 1216 ® 1232 ® 1224 ® 1248 ® 1248 ® 1208
Sau mã hóa :1216 ® +16 ® -8 ® +24 ® 0 ® -40
Sau quá trình mã hóa dự đoán là quá trình mã hóa Huffman
Các hệ số DC (sau DPCM) được phân nhóm Ví dụ, -7 đến -4 và 4-7 được xếp vào nhóm (mã số "00").Dưới đây là bảng mã Huffman
Trang 17Sau đó các hệ số AC được mã hóa Huffman
Ví dụ 5 0 2 0 0 –1 được mã hóa thành: 100101 11100110 110110
Trang 185 0/3 100 6 100 101
3 Quy trình giải nén JPEG.
Thực chất quá trình giải mã hiển thị ảnh là quá trình ngược của mã hóa JPEG
Sơ đồ giải mã JPEG
Để có thể giải nén được, chúng ta phải ghi lại thông tin như: kích thước ảnh, kích thước khối, ma trận T, độ lệch tiêu chuẩn, các mức tạo lại, hai bảng mã Huffman, kích thước khối nén một chiều, kích thước khối nén xoay chiều… và ghi nối tiếp vào hai file nén củahai thành phần hệ số
Quá trình được bắt đầu với công đoạn giải mã Entropy, sau quá trình này ta được ma trận 8x8 Lấy ma trận hệ số DCT ( sau khi cộng hệ số DC khác):
Trang 19Quá trình giải lượng tử ở phía bộ giải mã được thực hiên ngược lại Các hệ số sau bộ giải
mã entropy sẽ nhân với các bước nhảy trong bảng lượng tử (bảng lượng tử được đặt trongphần header của ảnh JPEG) Kết quả này sau đó sẽ được đưa vào biến đổi DCT ngược
Kết quả sau giải mã lượng tử
Nó gần giống với ma trận hệ số DCT nguyên thủy cho nửa trên phía trái
Tiếp đến là quá trình biến đổi ngược DCT,áp dụng công thức biến đổi ngược cho khối 8x8: