Tải bản đầy đủ (.pdf) (13 trang)

Áp dụng một số kĩ thuật nén ảnh ccho truyền dữ liệu ảnh động qua mạng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (475.92 KB, 13 trang )


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



LUẬN VĂN THẠC SĨ KỸ THUẬT




ÁP DỤNG MỘT SỐ KỸ THUẬT NÉN ẢNH CHO
TRUYỀN DỮ LIỆU ẢNH ĐỘNG QUA MẠNG



CHUYÊN NGÀNH : TRUYỀN DỮ LIỆU VÀ MẠNG MÁY TÍNH

MÃ SỐ: 60.48.15



TRẦN VƯƠNG NGUYÊN



NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS. TS. NGÔ QUỐC TẠO


HÀ NỘI - 2011






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 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.
Chươ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
1.1.1.1 Cấu trúc chung
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.
1.1.1.2 Lưu DIB trong bộ nhớ
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.
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.


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 màu cần 4 byte theo thứ tự B, G, R, 0x00.
1.1.1.6 Lưu trữ Pixel
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 2
n
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.
1.1.1.7 Mảng Pixel (dữ liệu bitmap)
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.
Nế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.
1.1.1.8 Định dạng Pixel
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
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)
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 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.
1.2.2.3 Độ sâu của màu
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).
1.2.2.4 Độ trong suốt của hình ả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.
1.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
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ố.
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

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
2.1.2.1 Định nghĩa một số vấn đề
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
n
}
Đầ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

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ể).
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.
2.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.
2.2.2.1 Mã hóa
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.
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 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 một hằng số, và sau đó
làm tròn đến số nguyên gần nhất.
2.2.2.7 Mã hóa Entropy
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.










Hình 2.2: Quá trình mã hóa và giải mã JPEG tuần tự

2.2.2.8 Tỷ số nén JPEG
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
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
 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
2.3.2.1 Thuật toán nén ảnh Fractal
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.
2.3.2.2 Thuật toán giải nén Fractal
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.
2.3.3 Các cách phân hoạch ảnh
2.3.3.1 Phân hoạch quadtree
2.3.3.2 Phân hoạch HV
2.3.3.3 Phân hoạch tam giác
2.3.4 Phân loại
Bước so sánh domain-range của nén ảnh Fractal có cường độ tính toán rất lớn. Để có thể
giảm thời gian nén ảnh, chúng ta tạo sẵn các domain và đưa chúng vào một thư viện domain
gọi là domain pool. Trước khi mã hóa, tất cả các domain trong thư viện domain được phân
loại. Điều này tránh sự phân loại lại của các domain.
2.3.5 Kết luận
Dựa vào lý thuyết và các kiểm nhiệm thực tế, phương pháp nén ảnh này cho thấy:
 Tỉ số nén cao: Điểm nổi bật nhất mà thuật toán nén và giải 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à 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, thì ta mới truyền hình ảnh đi. Nhược điểm của cách
tiếp cận này là các hình ảnh truyền đi không liên tục, do những ảnh mà có sự sai khác không
đủ lớn sẽ không được truyền đi, và trong một số trường hợp đặc biệt có thể gây ra sự thiếu hụt
dữ liệu.
 Ta sẽ truyền đi toàn bộ các ảnh liên tục, dù cho mức độ khác biệt của chúng là thế
nào. Tuy nhiên, thay vì truyền đi toàn bộ dữ liệu hình ảnh, ta chỉ truyền đi dữ liệu của những
điểm ảnh có sự thay đổi. Tuy nhiên, do phép trừ số học có thể mang lại kết quả là số âm,
trong khi đó giá trị màu sắc các điểm ảnh thường được lưu trữ trong các byte và giá trị số học
của chúng là luôn dương. Do đó, sử dụng phép trừ số học có thể gây ra những rắc rối khi xử
lý dữ liệu. Điều này dẫn đến việc ta cần tìm một phép toán khác thay thế.
2.4.3 Phát hiện sai lệch giữa hai ảnh liên tiếp bằng phép toán XOR
Ta nhận thấy dữ liệu lưu thông tin các điểm ảnh là các byte nhị phân, và trong các phép
toán nhị phân cơ bản, phép toán XOR cho phép ta nhận được kết quả là 0 khi 2 giá trị đầu vào
là giống nhau, và là 1 khi 2 giá trị đầu vào là khác nhau. Như vậy nghĩa là phép toán XOR
cho phép ta phát hiện được sự khác nhau giữa các giá trị điểm ảnh ở cùng tọa độ (x, y) tại các
hình ảnh liên tiếp nhau.

Ta chứng minh được rằng A XOR B XOR A = B
2.4.4 Thực hiện thuật toán
Như vậy ta nhận thấy ở ma trận điểm ảnh B XOR A số phần tử có giá trị bằng 0 là rất lớn
(do có nhiều điểm giống nhau). Điều này giúp ta có thể nén khối dữ liệu này với thuật toán
Huffman và cho một kết quả vô cùng thuận lợi.
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 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
Ứng dụng truyền hình ảnh qua mạng có sử dụng thuật toán nén ảnh chuyển động được
chia thành 2 ứng dụng nhỏ như sau:
Ứng dụng 1: có nhiệm vụ thu các hình ảnh từ camera, chuyển đổi hình ảnh thành mảng

byte, thực hiện xử lý với các mảng byte này và truyền sang ứng dụng số 2.
Ứng dụng 2: có nhiệm vụ nhận các mảng byte từ ứng dụng 1, thực hiện giải mã các dữ liệu
thu được, và hiển thị trên màn hình.
3.2 XÂY DỰNG ỨNG DỤNG
3.2.1 Thu hình ảnh và gửi dữ liệu
Đối với ứng dụng thu hình ảnh và gửi dữ liệu, ta cần quan tâm đến các vấn đề sau:
Thu hình ảnh từ camera: Điều này được thực hiện bằng cách xử dụng bộ thư viện Direct
X. Cứ mỗi khoảng thời gian nhất định, ứng dụng sẽ thu một hình từ camera.
Xử lý hình ảnh: Điều này được thực hiện bằng cách đọc chuỗi byte nội dung của hình ảnh.
Tính toán chuỗi byte thu được: Đối với mỗi chuỗi byte thu được, ta sẽ so sánh nó bằng
phép toán XOR với chuỗi byte trước đó. Trong việc thực hiện phép toán XOR, ta có thể đưa
vào đó các giá trị sai số tối đa cho phép để đạt được hiệu quả nén tốt hơn.
Truyền chuỗi byte đã xử lý: Sử dụng TcpIP.
3.2.2 Nhận dữ liệu và phát hình ảnh
Đối với ứng dụng Nhận dữ liệu và phát hình ảnh ta cần quan tâm đến các vấn đề sau:
Nhận dữ liệu: Là việc nhận mảng byte được truyền từ ứng dụng Thu hình ảnh.
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.
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.
3.4 KẾT LUẬN CHƯƠNG
Chương 3 mô tả cách thức cài đặt thuật toán nén ảnh chuyển động cũng như các con số
thống kê kết quả thực hiện bài toán.
Dựa vào các kết quả thu được giữa việc nén ảnh bằng phương pháp nén ảnh chuyển động
và nén ảnh bằng thuật toán JPEG, ta nhận thấy phương pháp nén ảnh bằng thuật toán JPEG
cho kết quả tốt hơn. Tuy nhiên khi nén một ảnh bằng thuật toán JPEG sẽ khiến ảnh bị mất mát
dữ liệu và làm giảm chất lượng ảnh, điều này sẽ không phù hợp với các ảnh cần giữ nguyên
chất lượng. Trong khi đó thuật toán nén ảnh chuyển động đảm bảo giữ nguyên chất lượng
hình ảnh, và có thể phối hợp với các thuật toán nén không mất dữ liệu khác để nâng cao hiệu
suất nén.
KẾT LUẬN

Truyền hình ảnh và hình ảnh chuyển động qua mạng là bài toán đã và đang thu hút được
sự quan tâm của nhiều nhà phát triển phần mềm. Trong khuôn khổ của luân văn, học viên đã
nghiên cứu một số định dạng ảnh phổ biến, một số phương pháp nén ảnh phổ biến, cũng như
phương pháp nén ảnh khi truyền qua mạng dựa trên phát hiện sự khác biệt giữa các hình ảnh
liên tiếp. Các nội dung nghiên cứu chính bao gồm:
- Các định dạng ảnh phổ biến: Nhằm nắm được cấu trúc của các định dạng ảnh cơ bản.
- Các phương pháp nén ảnh phổ biến: Nhằm nắm được các phương pháp mã hóa ảnh
cơ bản.
- Phương pháp nén ảnh khi truyền qua mạng dựa trên việc tính 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ý.



×