1
BỘ 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 2 MỞ ĐẦ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
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.
1.1.1.3 Tiêu đề tập tin bitmap
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.
4
1.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.
1.1.1.5 Bảng màu
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à 2
n
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
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
1.2.2.1 Tiêu đề 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) 6
1.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
ả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
1.3.2.1 Phần mở rộng tên tập tin JPEG
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.
1.3.2.2 Hồ sơ màu
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.
1.3.2.3 Cú pháp và cấu trúc
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ố. 8
1.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
Đầ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
2.1.2.2 Mã hóa
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ể).
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.
2.2.2.2 Không gian biến đối màu
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 11
Cb và Cr đại diện cho màu (chia thành các thành phần màu xanh và
đỏ).
2.2.2.3 Lấy mẫu sắc độ
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).
2.2.2.4 Phân tách khối
Sau khi lấy mẫu, mỗi kênh được chia thành các khối 8 × 8.
2.2.2.5 Biến đổi Cosin rời rạc
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.
2.2.2.6 Lượng tử hóa
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
2.2.3.1 Các bước giải mã
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.
2.2.3.2 Yêu cầu về độ chính xác
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 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
nén bằng kỹ thuật Fractal cung cấp được là tỉ số nén cực cao với
chất lượng ảnh nén không thay đổi.
Tốc độ giải nén ảnh nhanh: Thuật toán được trình bày là một
thuật toán không đối xứng vì các tính toán trong việc nén ảnh đòi
hỏi một lượng thời gian lớn hơn rất nhiều lần so với thời gian giải
nén.
Tính độc lập về độ phân giải giữa ảnh nén và ảnh gốc: Thuật
toán nén ảnh và giải nén bằng kỹ thuật Fractal về thực chất đã
cung cấp một bộ tạo sinh để vẽ lại ảnh gốc dựa trên một số cực
nhỏ thông tin cần thiết ban đầu.
2.4 THUẬT TOÁN NÉN ẢNH CHUYỂN ĐỘNG
2.4.1 Tổng quan
Với các hình ảnh liên tục trong tự nhiên, ta thấy giữa các ảnh liên
tục nhau độ sai khác là rất nhỏ. Điều đó gợi cho ta một ý tưởng là 15
trong những trường hợp phải truyền các hình ảnh liên tục, thay vì ta
phải truyền đầy đủ các hình ảnh này, ta chỉ cần truyền những sự khác
nhau giữa chúng.
2.4.2 Phát hiện sai lệch giữa hai ảnh liên tiếp bằng phép toán
trừ
Điều quan trọng nhất là ta phải làm sao để phát hiện ra sự thay
đổi giữa các hình ảnh liên tục và truyền chúng, đồng thời sau khi
nhận được những dữ liệu miêu tả sự thay đổi này làm sao để có thể
khôi phục thành hình ảnh ban đầu.
Ta có hai cách để tiếp cận bài toán này.
Khi ta thực hiện phép trừ điểm ảnh giữa hai ảnh liên tiếp,
nếu giữa hai ảnh có sự khác biệt đủ lớn hơn một ngưỡng quy định,
Tuy nhiên vì dữ liệu thực tế là một mảng byte, vì vậy, thay vì
thực hiện phép toán XOR với một ma trận, ta sẽ thực hiện phép toán
này với một chuỗi nhị phân.
2.4.5 Xử lý hình ảnh liên tiếp có độ thay đổi không đáng kể
Như ta đã biết, giữa 2 hình ảnh liên tiếp nhau có sự thay đổi
không đáng kể. Tuy nhiên ngay cả với các điểm ảnh có sự thay đổi,
ta cũng có thể thiết lập một mức giới hạn sai số mà nếu những thay
đổi nằm trong giới hạn đó thì ta coi như không có thay đổi.
Trong bài toán này, ta có hai hướng phát triển như sau.
Thứ nhất, đó là ta có thể tính tổng giá trị các sai lệch của các
điểm ảnh, và nếu chúng nhỏ hơn một ngưỡng cho phép nào đó, thì ta
coi như không có sự sai lệch nào cả, và bỏ qua ảnh đó.
Hướng thứ hai là thay vì bỏ qua cả một hình ảnh, ta sẽ bỏ
qua những điểm ảnh có sự sai biệt nhỏ hơn một ngưỡng cho phép
nào đó.
2.5 KẾT LUẬN CHƯƠNG
Chương 2 trình bày thuật toán nén không mất dữ liệu Huffman và
các thuật toán nén ảnh JPEG, Fractal, nén ảnh chuyển động. Từ các 17
kiến thức này giúp ta lựa chọn và phối hợp các phương pháp nén
khác nhau sao cho đảm bảo dữ liệu cần truyền là nhỏ nhất.
Chương 3
XÂY DỰNG ỨNG DỤNG TRUYỀN ẢNH QUA MẠNG SỬ
DỤNG THUẬT TOÁN NÉN ẢNH CHUYỂN ĐỘNG
3.1 TỔNG QUAN
Xử lý chuỗi byte thu được: Sau khi thu được chuỗi byte, ứng
dụng Nhận dữ liệu cần giải nén chuỗi byte, tiếp theo sử dụng phép
toán XOR với chuỗi dữ liệu thu được ở lần trước đó, và sẽ có được
chuỗi byte là nội dung hình ảnh cần hiển thị.
Hiển thị hình ảnh: Chuyển chuỗi byte thu được thành đối tượng
dạng Image và hiển thị.
3.3 THỐNG KÊ KẾT QUẢ CỦA QUÁ TRÌNH XỬ LÝ DỮ LIỆU
3.3.1 Các hình ảnh liên tục thu được
Ta có thể nhận thấy giữa 2 ảnh liên tiếp nhau không có sự khác
biệt đáng kể.
3.3.2 Các hình ảnh tương ứng giữa phía Gửi dữ liệu và nhận
dữ liệu
Ta có thể thấy, khi giới hạn sai lệch cho phép lên tới 3 bit, thì chất
lượng xuống rõ rệt, và khi mức độ sai lệch cho phép ở mức 1 bit thì
gần như không có sự thay đổi giữa hình ảnh ở ứng dụng Gửi và ứng
dụng Nhận dữ liệu.
3.3.3 Thống kê quá trình truyền dữ liệu
Khi thu hình trong điều kiện trời sáng với ánh sáng Mặt trời, ta
thấy kết quả là giữa các ảnh liên tiếp có tỷ lệ trùng lặp cao hơn. Điều
này có thể lý giải là do ánh sáng Mặt trời có độ ổn định cao hơn ánh
sáng đèn neon, điều đó giúp các ảnh liên tiếp có độ tương đồng cao
hơn. 19
Khi giới hạn sai lệch cho phép càng lớn, chất lượng hình ảnh thu
được càng kém (như đã nói ở mục trên), tuy nhiên, tỉ lệ trùng lặp dữ
liệu giữa các điểm ảnh tương ứng ở 2 hình ảnh liên tiếp nhau càng
lớn, và giúp cho việc nén dữ liệu thực hiện tốt hơn.
toán các sai lệch giữa các hình ảnh liên tiếp: Nhằm giảm tối đa dung
lượng dữ liệu cẩn truyền.
Với các kết quả này luận văn hi vọng có thể cung cấp thêm một
cách thức khi cần truyền các hình ảnh liên tiếp với thuật toán đơn
giản và cài đặt chương trình hợp lý.