1.2 ĐỊNH DẠNG ẢNH PNG 1.2.1 Giới thiệu và lịch sử phát triển Portable Network Graphics PNG là một phương thức mã hóa định dạng hình ảnh sử dụng thuật toán nén không mất dữ liệu.. Hình
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
TRẦN VƯƠNG NGUYÊN
ÁP DỤNG MỘT SỐ KỸ THUẬT NÉN ẢNH CHO
TRUYỀN DỮ LIỆU ẢNH ĐỘNG QUA MẠNG
MÃ SỐ: 60.48.15
Người hướng dẫn khoa học: PGS.TS Ngô Quốc Tạo
TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI - 2011
Trang 2MỞ ĐẦU
Trong thời đại phát triển ứng dụng công nghệ thông tin hiện nay, việc truyền các hình ảnh động qua mạng ngày càng có nhiều ứng dụng Khi chúng ta trò truyện với một người bạn qua mạng, chúng ta
có thể nhìn thấy người bạn đó, khi chúng ta tham gia một cuộc họp trực tuyến, chúng ta có thể nhìn thấy những thành viên khác của cuộc họp, các bác sĩ có thể tham gia theo dõi và chỉ đạo một ca mổ quan trọng mà không có điều kiện có mặt trực tiếp – bất chấp khoảng cách
về mặt địa lý Với sự phát triển của Internet, ngành công nghiệp truyền hình có thêm một phương tiện nữa để có thể truyền tải nội dung tới người xem Tất cả những điều này đều dựa trên cơ sở truyền
dữ liệu ảnh động
Một trong những yếu tố quan trọng trong truyền các hình ảnh chuyển động động là vấn đề đường truyền Nguyên do là khi truyền các hình ảnh động, chúng ta phải truyền liên tục hết khung hình này đến khung hình khác với tốc độ rất cao để đảm bảo hình ảnh liên tục
Để giải quyết vấn đề này, giải pháp đơn giản và ít tốn kém nhất là thực hiện nén hình ảnh trước khi truyền
Trang 3Chương 1 TỔNG QUAN VỀ CÁC ĐỊNH DẠNG ẢNH PHỔ BIẾN
1.1 ĐỊNH DẠNG ẢNH BMP
1.1.1 Giới thiệu và lịch sử phát triển
Định dạng tập tin BMP, còn được biết đến với tên gọi tập tin ảnh Bitmap hoặc định dạng tập tin Bitmap độc lập với thiết bị (DIB), là một định dạng tập tin ảnh đồ họa Raster được dùng để lưu trữ các hình ảnh số, độc lập với thiết bị hiển thị
1.1.2 Cấu trúc tập tin
Tập tin ảnh bitmap bao gồm phần tiêu đề là một cấu trúc có kích thước cố định miêu tả các đặc điểm của tập tin ảnh Các phiên bản
BMP khác nhau có thể có phần tiêu đề này khác nhau
Một tập tin ảnh Bitmap khi nạp vào bộ nhớ sẽ trở thành một cấu trúc dữ liệu DIB - một thành phần quan trọng của Windows GDI API Các cấu trúc dữ liệu DIB trong bộ nhớ gần như giống với định dạng tập tin BMP, nhưng nó không chứa 14 byte Tiêu đề tập tin bitmap và bắt đầu với các Tiêu đề DIB
Các byte này là phần bắt đầu của tập tin và được sử dụng để xác định các tập tin Một ứng dụng sẽ đọc phần bắt đầu này để đảm bảo rằng tập tin thực sự là một tập tin BMP và không bị lỗi Hai byte đầu tiên của định dạng tập tin BMP là ký tự ‘B’, sau đó là ký tự ‘M’ trong bảng mã 1-byte ASCII
Trang 41.1.1.4 Tiêu đề DIB (Tiêu đề Thông tin bitmap)
Các byte này báo cho các ứng dụng thông tin chi tiết về hình ảnh
sẽ được sử dụng để hiển thị trên màn hình
Bảng màu (còn gọi là Palette) lưu trữ trong tập tin ảnh BMP ngay sau Tiêu đề tập tin BMP và DIB (và có thể sau ba mặt nạ màu R, G,
B nếu sử dụng tùy chọn BI_BITFIELDS trong BITMAPINFOHEADER) Vì vậy, vị trí của nó là kích thước của BITMAPFILEHEADER cộng với kích thước của tiêu đề DIB (cộng thêm 12 byte cho ba mặt nạ bit)
Số lượng các mục trong bảng màu là 2n hoặc là một số nhỏ hơn được quy định trong phần Tiêu đề Thông thường, mỗi mục trong bảng màu cần 4 byte theo thứ tự B, G, R, 0x00
Các bit được dùng để thể hiện các Pixel được đóng gói thành các hàng Kích thước của mỗi hàng là một bội số của 4 byte Khi hình ảnh có chiều cao lớn hơn 1 (Pixel), sẽ có nhiều hàng được lưu trữ liên tục tạo thành mảng Pixel
Tổng số byte cần thiết để lưu trữ một mảng Pixel trong một hình
ảnh có Số Bit mỗi Pixel (bpp) là n, với 2n màu, có thể được tính dựa trên sự làm tròn lên kích thước của mỗi hàng là một bội số của 4 byte
Mảng Pixel là một khối các DWORD 32 bit mô tả các điểm ảnh trong hình ảnh Thông thường các pixel được lưu trữ theo thứ tự quét
từ góc dưới bên trái, đi từ trái sang phải và từ dưới lên trên Ban đầu,
độ sâu của màu là 1, 4, 8, và 24 bpp, tuy nhiên hiện nay cho phép các định đạng với 1, 2, 4, 8, 16, 24, và 32 bpp
Trang 5Nếu một bitmap 24 bit màu có độ rộng là 1, sẽ cần 3 byte dữ liệu cho mỗi hàng (R, G, B) và 1 byte đệm Nếu độ rộng là 2 sẽ có 2 byte đệm, nếu là 3 sẽ có 3 byte đệm, và nếu là 4 thì không cần byte đệm
Khi tập tin hình ảnh bitmap được lưu trên đĩa hoặc bộ nhớ, các điểm ảnh có thể được định nghĩa bằng một số bit (1bit, 2bit, 4bit, 16bit, 24bit, 32bit)
1.1.3 Ứng dụng
Sự đơn giản của định dạng BMP, cùng với sự phổ biến của hệ điều hành Windows, cộng thêm với việc miễn phí bản quyền, cũng như thực tế cho thấy nó rất hiệu quả trong việc sao chụp các tài liệu, làm cho nó trở nên phổ biến và hầu hết các chương trình xử lý ảnh đều có thể làm việc với BMP
1.2 ĐỊNH DẠNG ẢNH PNG
1.2.1 Giới thiệu và lịch sử phát triển
Portable Network Graphics (PNG) là một phương thức mã hóa định dạng hình ảnh sử dụng thuật toán nén không mất dữ liệu PNG được tạo ra để cải tiến và thay thế định dạng GIF (Graphics Interchange Format) và là một định dạng tập tin hình ảnh không yêu cầu bản quyền
PNG hỗ trợ hình ảnh dựa trên bảng màu (24 bit RGB hoặc 32 bit RGBA), ảnh xám (có hoặc không có kênh alpha), và ảnh RGB (có hoặc không có kênh alpha)
1.2.2 Cấu trúc tập tin
Mỗi tập tin PNG được khởi đầu bằng 8 byte ký hiệu, mang các giá trị theo hệ Hexa là 89 50 4E 47 0D 0A 1A 0A (hệ Decimal là
137 80 78 71 13 10 26 10)
Trang 61.2.2.2 Các khối trong tập tin
Ngay sau phần tiêu đề tập tin là đến một loạt các khối, mỗi khối này chứa một số thông tin về hình ảnh Mỗi khối sẽ xác định đó là quan trọng hay phụ trợ, và khi chương trình xử lý gặp một khối phụ trợ thì có thể bỏ qua nó Các khối được lưu trữ dựa trên cơ sở lớp cấu trúc, được thiết kế cho phép định dạng tập tin PNG có thể mở rộng trong khi vẫn duy trì khả năng tương thích với các phiên bản cũ Một khối bao gồm: mô tả chiều dài (4 byte), loại hoặc tên khối (4 byte), dữ liệu chính (một chuỗi byte), và mã kiểm tra CRC (4 byte) Phần loại hoặc tên khối chứa 4 byte tương đương 4 ký tự chữ cái trong bảng mã ASCII Các chữ cái này sẽ cung cấp thông tin về bản chất của khối
Hình ảnh PNG có thể sử dụng bảng màu lập chỉ mục hoặc được tạo thành từ một hoặc nhiều kênh (số các giá trị trực tiếp đại diện cho
số lượng các điểm ảnh) Khi có nhiều hơn một kênh trong một hình ảnh tất cả các kênh sẽ có cùng một số bit được phân bổ cho mỗi điểm
ảnh (được gọi là độ sâu bit của kênh)
PNG cung cấp các lựa chọn trong suốt Với hình ảnh màu thực và màu xám, giá trị mỗi điểm ảnh có thể được xác định là trong suốt hoặc một kênh alpha có thể được thêm vào (cho phép bất kỳ tỷ lệ phần trăm của độ trong suốt được sử dụng)
1.2.3 Ứng dụng
PNG được sử dụng rộng rãi trên mạng internet do nó hỗ trợ tính trong suốt, và nó sử dụng một thuật toán nén không mất dữ liệu
Trang 71.3 ĐỊNH DẠNG ẢNH JPG
1.3.1 Giới thiệu và lịch sử phát triển
JPEG là một phương pháp nén mất dữ liệu thường được sử dụng cho nhiếp ảnh kỹ thuật số Mức độ nén có thể được điều chỉnh, cho phép lựa chọn một sự cân bằng giữa kích thước lưu trữ và chất lượng hình ảnh Thông thường ở tỷ lệ nén 10:01, JPEG có chất lượng hình ảnh có thể mang lại cảm nhận gần như không khác so với ảnh gốc
1.3.2 Cấu trúc tập tin
Phần mở rộng tên tập tin phổ biến nhất cho các tập tin sử dụng phương pháp nén JPEG là jpg, jpeg, mặc dù jpe, jfif và jif cũng được
sử dụng
Nhiều tập tin JPEG nhúng một hồ sơ màu ICC (không gian màu) Các hồ sơ màu thường được sử dụng bao gồm sRGB và Adobe RGB
Một hình ảnh JPEG bao gồm một chuỗi các đoạn, bắt đầu với một
ký hiệu đánh dấu, mỗi ký hiệu đánh dấu đó bắt đầu với một byte 0xFF theo sau bởi một byte chỉ ra loại của ký hiệu
1.3.3 Ứng dụng
Các thuật toán nén JPEG là tốt nhất trên các bức ảnh và các bức tranh của những cảnh thực tế với các biến thể hình ảnh và màu sắc mịn Đối với việc sử dụng web, nơi dữ liệu dạng hình ảnh là quan trọng, JPEG là rất phổ biến JPEG / Exif cũng là định dạng phổ biến nhất được sử dụng bởi máy ảnh kỹ thuật số
Trang 81.4 KẾT LUẬN CHƯƠNG
Chương 1 trình bày về cấu trúc các định dạng ảnh phổ biến việc nắm vững cấu trúc các định dạng ảnh cho phép lựa chọn cách thức tốt nhất để lưu trữ và xử lý các ảnh tùy theo từng trường hợp
Chương 2 CÁC THUẬT TOÁN NÉN ẢNH
2.1 THUẬT TOÁN NÉN DỮ LIỆU HUFFMAN
2.1.1 Tổng quan
Mã hóa Huffman là một thuật toán mã hóa dữ liệu ngẫu nhiên được sử dụng để nén không mất dữ liệu Thuật ngữ này đề cập đến việc sử dụng một bảng mã có chiều dài biến đổi để mã hóa một dữ liệu nguồn (chẳng hạn như các ký tự trong một tập tin) mà bảng mã chiều dài thay đổi đã được bắt nguồn một cách cụ thể dựa trên ước tính xác suất xảy ra cho mỗi có thể giá trị của dữ liệu nguồn Nó được phát triển bởi David A Huffman trong khi ông là một nghiên cứu sinh tại MIT, và công bố năm 1952 với tên "Một phương pháp xây dựng mã hóa số dư tối thiểu "
2.1.2 Mã hóa dữ liệu
Cho biết: Một tập hợp dữ liệu và trọng số của chúng (thường là tỷ
lệ xác suất)
Cần tìm: Mã tiền tố nhị phân (một tập hợp các từ mã) với chiều dài từ mã tối thiểu
Đầu vào: Tập hợp ký tự alphabet với chiều dài n: A = {a 1 , a 2 , … ,
a }
Trang 9Đầu ra: Mã C (A, W) = {c 1 , c 2 , … , c n} là một tập hợp các từ mã
(nhị phân), trong đó c i là từ mã của a i , 1 ≤ i ≤ n
Kỹ thuật này hoạt động bằng cách tạo ra một cây nhị phân của các nút Ở đây có thể được lưu trữ trong một mảng thông thường,
kích thước trong đó phụ thuộc vào số lượng dữ liệu n Một nút có thể
là một nút lá hoặc nút nội bộ Ban đầu, tất cả các nút là nút lá, có chứa các dữ liệu riêng của mình là trọng số (tần số xuất hiện) của dữ liệu, một liên kết đến một nút cha mẹ làm cho nó dễ dàng để đọc mã (ngược lại) bắt đầu từ một nút lá Các nút nội bộ có chứa trọng số dữ liệu, các liên kết đến hai nút con và liên kết đến một nút cha Như một quy ước chung, bit “0” đại diện cho nút con trái và bit “1” đại
diện cho nút con phải Một cây hoàn thiện đã lên đến nút lá n và nút nội bộ n - 1
2.1.3 Giải mã dữ liệu
Nói chung, quá trình giải mã đơn giản chỉ là một vấn đề của dịch giá trị byte của dòng mã tiền tố, thường là bằng cách vượt qua các nút của cây Huffman như là mỗi bit được đọc từ dòng đầu vào (đạt đến một nút lá nhất thiết phải chấm dứt việc tìm kiếm giá trị byte cụ thể)
2.2 THUẬT TOÁN NÉN ẢNH JPEG
2.2.1 Tổng quan
Các phương pháp nén JPEG thường tổn hao, có nghĩa là một số thông tin hình ảnh ban đầu là bị mất và không thể phục hồi, có thể ảnh hưởng đến chất lượng hình ảnh
Trang 102.2.2 Mã hóa JPEG
Mặc dù một tập tin JPEG có thể được mã hóa trong nhiều cách khác nhau, phổ biến nhất được thực hiện với mã hóa JFIF Quá trình
mã hóa bao gồm các bước:
1 Các đại diện của các màu sắc trong hình ảnh được chuyển đổi
từ RGB sang YCbCr, bao gồm một thành phần luma (Y), đại diện cho độ sáng, và hai thành phần sắc độ (Cb và Cr), đại diện cho màu
2 Giảm độ phân giải của dữ liệu, thường là một hệ số 2 Điều này phản ánh thực tế là mắt ít nhạy cảm với các chi tiết màu sắc tốt hơn các chi tiết độ sáng tốt
3 Hình ảnh được chia thành các khối điểm ảnh 8 × 8, và với mỗi khối, mỗi dữ liệu Y, Cb, và Cr trải qua một biến đổi cosin rời rạc (DCT)
4 Biên độ của các thành phần tần số được lượng tử hóa
5 Các dữ liệu kết quả cho tất cả các khối 8 × 8 nén với một thuật toán không mất dữ liệu, một biến thể của mã hóa Huffman Quá trình giải mã đảo ngược các bước này, ngoại trừ lượng tử bởi vì
nó là không thể đảo ngược
Nhiều tùy chọn trong tiêu chuẩn JPEG không được sử dụng phổ biến, trong khi những thứ khác quy định cụ thể các phương pháp mã hóa Đây là một mô tả ngắn gọn của một trong các phương pháp mã hóa phổ biến khi áp dụng cho một đầu vào có 24 bit cho mỗi pixel
Thứ nhất, hình ảnh được chuyển đổi từ RGB thành một không gian màu khác nhau gọi là YCbCr Nó có ba thành phần Y, Cb và Cr: Y: thành phần đại diện cho độ sáng của điểm ảnh, và các thành phần
Trang 11Cb và Cr đại diện cho màu (chia thành các thành phần màu xanh và đỏ)
Do đặc điểm về nhạy cảm trong mắt người đối với mật độ của màu sắc và độ sáng, con người có thể cảm nhận tốt hơn đáng kể đối với độ sáng của một hình ảnh (thành phần Y) so với màu sắc và độ bão hòa màu sắc của một hình ảnh (các thành phần CbCr)
Sau khi lấy mẫu, mỗi kênh được chia thành các khối 8 × 8
Tiếp theo, mỗi khối 8 × 8 của mỗi thành phần (Y, Cb, Cr) chuyển đổi sang một miền tần số đại diện, thông thường là biến đổi cosin rời rạc (DCT) hai chiều
Mắt người có thể nhìn thấy sự khác biệt về độ sáng trên một trên một tần số thấp, nhưng không phân biệt chính xác mức độ của sự thay đổi
độ sáng ở tần số cao Điều này cho phép giảm đáng kể số lượng thông tin trong các thành phần tần số cao Điều này được thực hiện đơn giản là bằng cách chia mỗi thành phần trong các mức tần số với một hằng số, và sau đó làm tròn đến số nguyên gần nhất
Mã hóa entropy là một hình thức đặc biệt của nén không mất dữ liệu Nó liên quan đến việc sắp xếp các thành phần hình ảnh trong một trật tự "ngoằn ngoèo" sử dụng thuật toán mã hóa duyệt chiều dài (RLE) tính toán tần số các nhóm tương tự nhau, chèn mã đánh số chiều dài, và sau đó sử dụng mã hóa Huffman vào những gì còn lại
Trang 12Hình 2.2: Quá trình mã hóa và giải mã JPEG tuần tự
Tỉ số nén có thể được thay đổi theo nhu cầu chất lượng trong các ước lượng được sử dụng trong giai đoạn lượng tử hóa Tỉ số nén 10 :
1 thường cho kết quả hình ảnh mà không thể được phân biệt bằng mắt thường so với bản gốc Tỉ số nén 100 : 1 thường có thể phân biệt
rõ ràng so với bản gốc Mức độ thích hợp của tỉ số nén phụ thuộc vào việc sử dụng hình ảnh
2.2.3 Giải mã JPEG
Giải mã để hiển thị hình ảnh bao gồm tất cả các mã hóa theo chiều ngược lại
Quá trình mã hóa trong chuẩn JPEG không giúp khắc phục được
độ chính xác cần thiết cho việc nén hình ảnh đầu ra Tuy nhiên, chuẩn JPEG lại bao gồm một số yêu cầu nhằm tăng tính chính xác cho việc giải mã, đầu ra từ các thuật toán không được vượt quá:
Tối đa là 1 bit khác biệt cho mỗi Pixel
Chất lượng thấp có nghĩa lỗi một ô vuông trên mỗi khối 8 ×
8 Pixel
Trang 13 Chất lượng rất thấp có nghĩa là lỗi trên mỗi khối 8 x 8 Pixel
Chất lượng rất thấp có nghĩa là lỗi ô vuông trên toàn bộ hình ảnh
Chất lượng quá thấp có nghĩa là lỗi trên toàn bộ hình ảnh
2.2.4 Hiệu ứng hình ảnh thu được khi nén JPEG
Tỷ lệ nén cao ảnh hưởng nghiêm trọng đến chất lượng của hình ảnh, mặc dù màu sắc và hình thức tổng thể hình ảnh vẫn còn nhận ra
2.3 THUẬT TOÁN NÉN ẢNH FRACTAL
2.3.1 Tổng quan
Lý thuyết hình học Fractal là một ngành toán học hiện đại còn rất non trẻ Bài toán trung tâm của lý thuyết là mô tả các đối tượng tự nhiên một cách hiệu quả dựa vào các công cụ toán học Lý thuyết này do B.Mandelbrot đưa ra thông qua tác phẩm “Hình học Fractal trong tự nhiên”
2.3.2 Thuật toán nén – giải nén
Quá trình bắt đầu bằng việc phân hoạch ảnh cần nén thành các khối không lấp lên nhau gọi là các khối range, sau đó xác định một tập các khối domain
Với mỗi khối range cần phải chọn được khối domain thích hợp sao cho khi áp dụng một phép ánh xạ affirne co 3 chiều (về vị trí và độ xám), ảnh thu được có thể đối sánh tốt với khối range đang xét
Xuất phát từ dữ liệu nén chứa trong file ảnh Fractal, chúng ta xây dựng lại hệ hàm lặp tương ứng với ảnh khởi động bất kỳ và sau đó áp dụng liên tiếp hàm lặp này vào các ảnh thu được sau mỗi lần lặp cho đến khi thu được ảnh xấp xỉ tốt nhất với ảnh ban đầu