Tải bản đầy đủ (.docx) (61 trang)

ĐỀ TÀI: “NGHIÊN CỨU” KỸ THUẬT ẨN MÃ TRONG ẢNH DỰA TRÊN BIÊN ẢNH VÀ LSB ĐỘ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 (999.01 KB, 61 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ

ĐỒ ÁN TỐT NGHIỆP

ĐỀ TÀI: “NGHIÊN CỨU” KỸ THUẬT ẨN MÃ
TRONG ẢNH DỰA TRÊN BIÊN ẢNH VÀ LSB ĐỘNG
Ngành: Công nghệ thông tin
Chuyên ngành: An toàn thông tin

Hà Nội, tháng 06 năm 2017
1


BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ

ĐỒ ÁN TỐT NGHIỆP

ĐỀ TÀI: “NGHIÊN CỨU” KỸ THUẬT ẨN MÃ
TRONG ẢNH DỰA TRÊN BIÊN ẢNH VÀ LSB
ĐỘNG
Ngành: Công nghệ thông tin
Chuyên ngành: An toàn thông tin
Họ và tên học viên:
Lớp:
Người hướng dẫn: - ThS. Hoàng Thu Phương
- Khoa An toàn Thông tin - HVKTMM

2



MỤC LỤC

3


DANH MỤC TỪ VIẾT TẮT
Từ viết tắt
BMP
DCT
DFT
DWT

Giải từ
BITMAP
Discrete Cosine
Transform/Transformation
Discrete Fourier Transformation
Discrete Wavelet

GIF

Transformation
Graphics Interchange Format

HAS

Human Auditory System

JPEG


Mô tả
Biến đổi Cosine rời rạc
Biến đổi Fourier rời rạc
Hiệu chỉnh hệ số sóng
nhỏ
Hệ thống thính giác của
con người

Joint Photographic Experts

LSB
MPD
PNG

Group
Least Significant Bit
Multi-Pixel Differencing
Portable Network Graphics

PVD

Pixel Value Differencing

TIFF

Tag Image File Format

4


Bit có trọng số thấp nhất
Vi phân đa điểm ảnh
Phương pháp vi phân
điểm ảnh


DANH MỤC HÌNH ẢNH

5


DANH MỤC BẢNG BIỂU

6


LỜI NÓI ĐẦU
Công nghệ thông tin và đặc biệt là sự phát triển của hệ thống mạng máy tính đã
tạo nên môi trường mở và là phương tiện trao đổi, phân phối tài liệu một cách tiện
lợi, nhanh chóng. Tuy nhiên, nó cũng làm tăng nguy cơ mất an toàn từ các ứng dụng
trái phép cũng như xuyên tạc bất hợp pháp các thông tin lưu truyền trên mạng, đồng
thời việc sử dụng một cách bình đẳng và an toàn các dự liệu đa phương tiện cũng
như cung cấp một cách kịp thời rất nhiều người dùng và các thiết bị cuối cũng đặt ra
nhiều vấn đề thách thức. Hơn nữa, sự bùng nổ của các phương tiện kỹ thuật số làm
cho việc sao chép, lưu trữ, sửa đổi dữ liệu càng ngày càng đơn giản. Vì vậy, việc
đảm bảo an toàn và bảo mật thông tin hiện nay luôn nhận được sự quan tâm đặc biệt
của nhiều nhà nghiên cứu trong nhiều lĩnh vực.
Để đảm bảo an toàn và bí mật cho một thông điệp truyền đi người ta thường
dùng phương pháp truyền thống là mã hóa thông điệp theo một qui tắc nào đó đã
được thỏa thuận trước giữa người gửi và người nhận. Tuy nhiên, phương thức này

thường gây sự chú ý của kẻ tấn công về tầm quan trọng của thông điệp.
Một cách tiếp cận khác để truyền các thông điệp bí mật là ẩn mã
(Steganography), đó là một kỹ thuật mà theo nhiều chuyên gia trong lĩnh vực này là một bộ môn nghệ thuật và khoa học nhằm che giấu sự tồn tại của thông tin với
mục tiêu che giấu các thông điệp cần giữ bí mật trong các dữ liệu “vô hại” khác để
đối phương không thể phát hiện được sự hiện diện của thông điệp. Ngày nay, kỹ
thuật ẩn mã được thực hiện trong nhiều môi trường khác nhau như : ảnh số, âm
thanh, video, hay các loại văn bản…
Trong những năm gần đây, có rất nhiều nghiên cứu lớn, tập trung chủ vào các
kỹ thuật ẩn mã trong ảnh số.Giữa ảnh gốc và ảnh mang tin khi nhìn bằng mắt
thường sẽ rất khó để phân biệt, do đó, thông tin gần như vô hình khi được truyền đi
trong thế giới hữu hình. Để có thể tăng khả năng đảm bảo an toàn cho thông điệp từ
người gửi tới người nhận, cần phải có một phương pháp ẩn mã hiệu quả.
7


Ẩn mã trong ảnh dựa trên biên ảnh và LSB động là một hướng nghiên cứu dựa
trên sự kết hợp của lược đồ ẩn LBS và lược đồ sai khác giá trị điểm ảnh (PVD).
PVD lợi dụng đặc tính của mắt người, mắt người sẽ nhạy cảm hơn với những thay
đổi trong vùng có giá trị điểm ảnh đồng đều so với vùng biên có giá trị điểm ảnh
chênh lêch. Kết hợp với lược đồ LSB động, chúng ta có thể nhúng một lượng lớn
dữ liệu mật vào vùng mượt của ảnh bìa, sau mỗi lần nhúng dữ liệu vào một điểm
ảnh mượt, siêu dữ liệu về vị trí nhứng dữ liệu mật cuối cùng của điểm ảnh đó sẽ
được nhúng vào 3 bit LSB của điểm ảnh biên tương ứng. Kết quả là ảnh mang tin
không có quá nhiều sai khác tới chất lượng ảnh giấu tin. Bên cạnh đó, sự kết hợp
giữa PVD và LSB động không chỉ làm hiệu suất nhúng tin mà còn tăng khả năng
bảo mật đối với thông điệp mong muốn.
Vì vậy, em chọn đề tài “Nghiên cứu kỹ thuật ẩn mã trong ảnh dựa trên biên
ảnh và LBS động” làm đồ án tốt nghiệp, nhằm tìm hiểu cụ thể hơn, sâu hơn nữa
phương thức ẩn mã này.


8


CHƯƠNG 1. TỔNG QUAN VỀ ẨN MÃ
1.1. Giới thiệu chung về ẩn mã
Ẩn mã – Steganography có nguồn gốc từ tiếng Hy Lạp: Stegos có nghĩa là
“Cover” - Che đậy và Grafia có nghĩa là “Writing” – Văn bản. Cover Writing được
hiểu là văn bản được che đậy. Do vậy, ẩn mã là khoa học và nghệ thuật về thông tin
liên lạc vô hình. Kỹ thuật này được thực hiện thông qua việc che giấu sự tồn tại của
thông tin bằng việc ẩn nó vào một thông tin khác.
Theo các tài liệu nghiên cứu ghi lại, kỹ thuật ẩn mã cổ xưa nhất và cũng là đơn
giản nhất được nhắc tới trong các tài liệu là khi vua Histiaeus (khoảng năm 440 TCN)
cạo sạch tóc xăm thông điệp lên da đầu và chờ khi tóc mọc lại, người nô lệ đó chuyển
thông tin tới người nhận. Sau đó, người ta sử dụng các vật liệu tự nhiên như bảng gỗ,
sáp ong, hổ phách cho ẩn giấu thông tin.
Khi kỹ thuật phát triển hơn, con người sử dụng chữ viết với cỡ chữ nhỏ giấu trong
các vật dụng hàng ngày (như các hộp, vali có hai đáy) để chuyển đi, hoặc dùng bồ câu
để chuyển thông tin để che mắt các nhân viên an ninh, hải quan. Sang thế kỷ 17, người
ta dùng cách đánh dấu vào các kí tự cần thiết trên một văn bản, một bài báo công khai
nào đó rồi truyền tới tay người nhận. Sau đó là thời kì phát triển rực rỡ của công nghệ
hoá học, trong thế chiến thứ hai người ta sử dụng mực vô hình để ẩn dấu thông điệp bí
mật. Loại mực vô hình này được tạo lên từ những chất liệu tự nhiên như là nước hoa
quả, sữa, giấm, thậm chí là nước tiểu, khi có tác động của nhiệt độ thì các dòng chữ sẽ
hiện ra rất rõ ràng. Cùng với sự phát triển của khoa học, con người đã tạo ra những loại
mực vô hình có khả năng che giấu thông tin cao hơn.Chẳng hạn như muốn biết được
thông điệp bị ẩn giấu thì phải kết hợp các hoá chất khác nhau để có thể hiển thị rõ
thông điệp bí mật được che giấu bên trong 6.
Giấu thông tin trong ngôn ngữ, hành văn cũng được sử dụng từ lâu, với việc lựa
chọn theo một quy luật xác định như ghép các từ đầu của mỗi câu hay nhặt các từ, các
9



chữ cái theo một quy luật nào đó. Một hình thức cũng được người Trung Hoa sử dụng
rất nhiều là sử dụng một tờ giấy mẫu có đục các lỗ làm một “mặt nạ” viết trước các nội
dung cần giấu tại các vị trí đó, tiếp theo các nội dung “vô hại” khác lên sau, cách làm
này tận dụng đặc điểm về chữ tượng hình và các từ đồng âm khác nghĩa của chữ Hán.
Ngày nay, cùng với sự phát triển của công nghệ máy tính và Internet, thì an ninh
thông tin được coi là một trong những yếu tố quan trọng nhất của Công nghệ thông tin
và truyền thông. Hơn thế, các cuộc tấn công vào trang mạng hoặc truy cập trái phép
vào những dữ liệu bí mật đã vượt quá giới hạn. Vì vậy, chúng ta cần phải thực hiện các
biện pháp nhằm bảo vệ các thông tin bí mật đó. Trong đó có hai kỹ thuật có mối liên hệ
mật thiết với ẩn mã là thuỷ vân số và vân tay1. Hai kỹ thuật này chủ yếu dùng để bảo
vệ những tài sản về sở hữu trí tuệ, do đó thuật toán của chúng cũng cần đáp ứng những
yêu cầu khác so với ẩn mã.
Đối với ẩn mã, thông tin được giấu đi là rất quan trọng và phải được bảo mật.Đối
với các thuật toán ẩn mã, người ta không chú trọng đến việc bảo vệ thông tin mật trước
sự tấn công của các đối thủ mà thay vào đó quan tâm đến tính ẩn và tính an toàn đối
với dữ liệu cần giấu.
1.2. Khái niệm ẩn mã
Theo Wikipedia: ẩn mã là nghệ thuật và khoa học cho phép giấu đi sự tồn tại của
thông tin 8. Với mật mã, kẻ thù có thể phát hiện, chặn bắt và thay đổi thông điệp ngay
cả khi không thể giải mã, nhưng mục tiêu của ẩn mã lại là giấu thông điệp vào một
thông điệp vô hại khác để kẻ thù không thể phát hiện được rằng có một thông điệp
được giấu bên trong nó.
Chính vì vậy, ẩn mã không làm thay đổi cấu trúc thông tin mà chỉ ẩn giấu sự tồn
tại của thông tin vào một phương tiện khác. Các hệ thống ẩn mã ngày nay thường sử
dụng các đối tượng đa phương tiện để ẩn giấu như là: hình ảnh, âm thanh, văn bản,
video,… vì chúng thường được gửi và nhận hàng ngày qua thư điện tử hoặc chia sẻ
10



trên mạng Internet một cách công khai, mà kẻ thù thì không có lý do để nghi ngờ khi
bắt được một thông tin vô hại trên kênh truyền không an toàn như vậy.
1.3. Một số thuật ngữ cơ bản
Khi nhắc tới một hệ thống ẩn mã, người ta thường sử dụng một số thuật ngữ sau:
-

Vật phủ: là tệp dữ liệu đa phương tiện ban đầu hay còn gọi là vật gốc. Tệp dữ

-

liệu đa phương tiện này có thể là hình ảnh, văn bản, âm thanh, video,…
Thông điệp bí mật: Là thông tin cần trao đổi, được giấu vào trong vật phủ.
Vật mang tin: Là vật phủ sau khi đã được nhúng thông điệp, hay còn gọi là vật

-

chứa thông điệp được giấu (nhúng).
Khoá ẩn mã: Là khoá được sử dụng để nhúng hoặc tách thông điệp ra khỏi vật
mang tin (khoá có thể được sử dụng hoặc không tuỳ thuộc vào từng giải pháp
của hệ thống ẩn mã).

1.4. Mô hình ẩn mã
Khi thực hiện kỹ thuật ẩn mã ta cần thực hiện các bước như sau:
-

Bước 1: Người gửi phải chọn vật phủ, khoá ẩn mã cũng như thuật toán nhúng

-


thích hợp.
Bước 2: Nhúng thông điệp vào trong vật phủ bằng thuật toán nhúng, khi đó ta

-

được một vật mang tin.
Bước 3: Người gửi sẽ gửi vật mang tin qua đường truyền không an toàn.
Bước 4: Người nhận sẽ nhận thông điệp, sau đó dùng thuật toán tách và khoá ẩn
mã để tách lấy thông điệp ẩn.

Mô hình Ẩn mã được trình bày trong Hình 1.1

11


Hình 1.1. Mô hình ẩn mã

1.5. Một số kỹ thuật ẩn mã cơ bản
Trong kỹ thuật ẩn mã có nhiều cách phân loại kỹ thuật ẩn mã khác nhau. Nhưng
khi xét theo môi trường nhúng tin thì ẩn mã được chia thành 5 kỹ thuật ẩn mã cơ bản
là: ẩn mã trong ảnh, ẩn mã trong âm thanh, ẩn mã trong video, ẩn mã trong tệp văn bản
và cuối cùng là ẩn mã trong giao thức.
1.5.1. Ẩn mã trong ảnh
Trong thời kỳ công nghệ hiện đại như hiện nay thì ẩn mã trong ảnh là một kỹ
thuật phổ biến nhất trong tất cả những kỹ thuật ẩn mã đã biết. Bởi kỹ thuật này có thể
lợi dụng những hạn chế của thị giác con người nhằm đánh lừa tư duy con người. Tất cả
các văn bản, đoạn mã hay những hình ảnh mà có thể được mã hoá thành chuỗi bit nhị
phân thì đều có thể ẩn giấu vào trong ảnh.
Khi thông điệp bí mật được giấu vào trong ảnh thì chất lượng của ảnh ít nhiều có
sự thay đổi nhưng không đáng kể và rất khó để nhận ra sự thay đổi đó nếu chỉ dựa vào

12


mắt thường.Hơn nữa ẩn mã trong ảnh sẽ ít đem tới sự chú ý của kẻ tấn công.Vì vậy mà
môi trường dữ liệu ảnh trở thành môi trường có tính ứng dụng cao trong kỹ thuật ẩn mã
và trở thành môi trường nhúng phổ biến khi cần truyền tin bí mật.
1.5.2. Ẩn mã trong âm thanh
Ẩn mã trong tệp âm thanh là kỹ thuật khó nhất trong các kỹ thuật ẩn mã. Bởi ẩn
mã trong âm thanh phụ thuộc vào hệ thống thính giác của con người (HAS – Human
Auditory System). Mà HAS có thể nghe được các tín hiệu ở các dải tần rất rộng và dải
cường độ lớn nên sẽ gây khó khăn trong việc thêm vào hoặc loại bỏ các dữ liệu ra khỏi
cấu trúc dữ liệu ban đầu. Chính vì thế, khi thực hiện ẩn mã trong âm thanh đòi hỏi yêu
cầu rất cao về tính đồng bộ và tính an toàn của thông điệp được giấu đi. May mắn hơn,
HAS lại có một điểm yếu là khó phân biệt được sự khác biệt của các dải tần và công
suất của dải âm thanh, có nghĩa là các âm thanh to, cao tần có thể che giấu được các
âm thanh nhỏ ở tần số thấp hơn một cách dễ dàng.
Nhưng kỹ thuật ẩn mã trong âm thanh này lại gặp vấn đề rắc rối khi truyền đi trên
kênh truyền. Bởi nếu kênh truyền hay băng thông bị chậm cũng sẽ ảnh hưởng đến chất
lượng của thông điệp sau khi bị giấu đi, dẫn tới thông điệp khi đến được với người
nhận sẽ bị sai lệch so với thông điệp ban đầu.
1.5.3. Ẩn mã trong video
Cũng giống như ẩn mã trong ảnh hay trong âm thanh, ẩn mã trong video cũng
được quan tâm và phát triển mạnh mẽ cho nhiều ứng dụng như: Điều khiển truy cập
thông tin, xác thực thông tin và bảo vệ quyền tác giả. Ẩn mã trong video là kỹ thuật
giấu một loại tệp và thông tin bất kỳ nào đó vào một đoạn video. Về mặt kỹ thuật cơ
bản thì video là một tập hợp những hình ảnh được xắp sếp liên tục theo thời gian. Vì
vậy có thể lấy từng khung hình, sau đó ẩn giấu những thông điệp bí mật vào từng
khung hình đó, sau đó lưu thành một tệp video mới.Hơn nữa, trong video không chỉ có
các hình ảnh, mà còn có cả âm thanh.Vì vậy ta hoàn toàn có thể kết hợp ẩn mã trong
13



ảnh và ẩn mã trong âm thanh vào kỹ thuật ẩn mã trong video này. Điều này chứng tỏ
rằng: Một tệp video có thể ẩn giấu được một lượng rất lớn thông điệp bí mật.
1.5.4. Ẩn mã trong tệp văn bản
Ẩn mã trong văn bản là kỹ thuật đòi hỏi người gửi có trình độ cũng như hiểu biết
rất rõ về ẩn mã.Bởi trong tệp văn bản có quá ít dữ liệu dư thừa để có thể thay thế.Hơn
nữa văn bản được gọi là Vật phủ cũng dễ dàng bị sửa đổi bởi những bên không liên
quan bằng cách sửa một vài ký tự hoặc thay đổi định dạng mới cho tệp.
1.5.5. Ẩn mã trong giao thức
Trong các giao thức như TCP, UDP, ICMP, IP,... đều có thể trở thành vật phủ để
ẩn mã. Trong mô hình OSI có những kênh ngầm (covert channel), người dùng có thể
mạo danh thông tin định danh trong header của TCP/IP để giấu đi định danh thật của
một hay nhiều tổ chức.
1.6. Một số ứng dụng của ẩn mã trong thực tế
Với sự hoàn hảo của các tiện ích đa phương tiện số và những tiến bộ của công
nghệ, ẩn mã ngày càng phát triển và được ứng dụng khắp nơi.Trên thực tế ẩn mã có thể
được ứng dụng trong rất nhiều trường hợp, ví dụ như:


Liên lạc bí mật: trong nhiều trường hợp, sử dụng mật mã có thể gây ra sự chú ý
ngoài mong muốn. Ngược lại, việc giấu tin trong một vật phủ nào đó rồi gửi đi
trên kênh truyền lại ít gây sự chú ý hơn. Ta có thể sử dụng ẩn mã để gửi đi một
bí mật thương mại, một bản vẽ hoặc các thông tin nhạy cảm.



Gán nhãn: tiêu đề, chú giải, nhãn thời gian và các minh họa khác có thể được
nhúng vào ảnh, khi đó việc sao chép ảnh sẽ sao chép cả các dữ liệu trong đó.
Tuy nhiên chỉ chủ sở hữu của bức ảnh này mới có thể tách ra và xem các thông

tin này vì họ có khóa mật. Ngoài ra, nhờ việc ẩn mã, họ có thể gán từ khóa vào
cơ sở dữ liệu ảnh để từ đó, việc tìm kiếm bức ảnh sẽ nhanh chóng hơn. Đối với
14


video, người ta có thể gán thời điểm diễn ra sự kiện vào một khung ảnh để có
thể đồng bộ hình ảnh với âm thanh. Đặc biệt, ta cũng có thể gán số lần ảnh được
xem để tính tiền thanh toán theo số lần xem.


Xác thực thông tin và phát hiện xuyên tạc: một tập thông tin được giấu trong
phương tiện, sau đó chính thông tin này được sử dụng để nhận biết xem dữ liệu
trên phương tiện đó có bị chỉnh sửa gì không.

15


CHƯƠNG 2. TỔNG QUAN VỀ ẨN MÃ TRONG ẢNH
2.1. Các định dạng ảnh thường dùng để ẩn mã
Cấu trúc ảnh bao gồm 3 phần chính là: Header – chứa thông tin tệp ảnh; Dữ liệu
ảnh – số liệu ảnh được mã hoá bởi kiểu mã hoá chỉ ra trong phần Header và Bảng màu.
Tuy nhiên mỗi định dạng ảnh lại có những đặc trưng khác nhau, trong đó có một số
định dạng được sử dụng phổ biến như: Định dạng ảnh JPEG; Định dạng ảnh TIFF;
Định dạng ảnh PNG; Định dạng ảnh GIF và Định dạng ảnh BMP.
2.1.1. Định dạng ảnh JPEG
JPEG (Joint Photographic Experts Group) – 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 11. Chính nhờ lý do này mà định dạng
ảnh JPEG trở thành định dạng phổ biến nhất để lưu trữ ảnh trên Web và được hỗ trợ
bởi tất cả các trình duyệt Web.
Tuy nhiên ảnh sau khi được giải nén sẽ khác với ảnh ban đầu. Chất lượng của ảnh

sẽ bị suy giảm sau khi giải nén.Cũng vì vậy nó không được các nhiếp ảnh gia sử dụng.
Trong quá trình nén dữ liệu của file JPEG, dữ liệu ảnh trên các pixel bị thay đổi, các
vùng ảnh quá nhỏ không thể nén được sẽ bị xoá vĩnh viễn. Điều này gây ảnh hưởng tới
màu sắc của bức ảnh. Hơn nữa chất lượng ảnh dẽ giảm dần trong quá trình sử dụng
khiến JPEG được gọi là định dạng file “làm mất dữ liệu”
Ưu điểm:
- Lưu trữ ảnh 24-bit màu (lên tới 16 triệu màu)
- Màu sắc đa dạng, phù hợp với các ảnh cần chú trọng tới chi tiết màu
- Được sử dụng rộng rãi nhất
- Phù hợp với tất cả các hệ điều hành (Mac, PC, Linux)
Nhược điểm:
- Thường mất thông tin nhiều
16


- Sau khi nén, màu của ảnh nhìn không được thật
- Không hỗ trợ ảnh động
- Không hỗ trợ màu trong suốt (màu nền)
2.1.2. Định dạng ảnh TIFF
TIFF (Tag Image File Format) - là một định dạng file ảnh chất lượng cao, định
dạng ảnh này “không làm mất dữ liệu” của ảnh trong quá trình lưu trữ hay giải nén.
Chính nhờ ưu điểm này giúp TIFF trở thành định dạng mẫu mực trong việc lưu trữ tư
liệu hình ảnh 12.
Cấu trúc của định dạng ảnh TIFF bao gồm 3 phần:
- Phần Header IFH (Image File Header) có trong tất cả các tệp TIFF, bao gồm 8
byte.
+ 1 word: Chỉ ra kiểu tạo tệp trên máy tính PC hay Macintosh. Hai loại này
khác nhau rất lớn ở thứ tự các byte lưu trữ trong các số dài 2 hay 4 byte. Nếu trường
này có giá trị là 4D4Dh thì đó là ảnh cho máy Macintosh, còn nếu là 4949h thì là của
máy PC.

+ 1 word: Là số phiên bản, luôn có giá trị là 42. Có thể coi đó là đặc trưng của
file TIFF vì nó không thay đổi kể cả khi được nén.
+ 2 word: Là giá trị Offset theo byte tính từ đầu file tới cấu trúc IFD.
- Phần thứ hai IFD (Image File Derictory): Nó không ở ngay sau IFH mà vị trí của
nó được xác định bởi trường Offset trong đầu tệp.
Một IFD bao gồm:
+ 2 byte: chứa các DE (Derictory Entry).
+ 12 byte: Là các DE xếp liên tiếp. Mỗi DE chiếm 12 byte.
+ 4 byte: Chứa Offset trỏ tới IFD tiếp theo.
- Cấu trúc phần dữ liệu thứ 3: Các DE có độ dài cố định 12 byte và gồm 4 phần:
+ 2 byte: Chỉ ra dấu hiệu mà ảnh đã được xây dựng.
17


+ 2 byte: Kiểu dữ liệu của tham số ảnh. Có 5 kiểu tham số cơ bản:
BYTE (1 byte)
ASCII (1 byte)
SHORT (2 byte)
LONG (4 byte)
RATIONAL (8 byte)
+ 4 byte: trường độ dài (bộ đếm) chứa số lượng chỉ mục của kiểu dữ liệu đã chỉ
ra. Nó không phải là tổng số byte cần thiết để lưu trữ.Để có số liệu này ta cần nhân số
chỉ mục với kiểu dữ liệu đã dùng.
+ 4 byte: Đó là Offset tới điểm bắt đầu dữ liệu thực liên quan tới dấu hiệu, tức
là dữ liệu liên quan với DE không phải lưu trữ vật lý cùng với nó nằm ở một vị trí nào
đó trong file. Dữ liệu chứa trong tệp thường được tổ chức thành các nhóm dòng (cột)
quét của dữ liệu ảnh.
Ưu điểm:
- Là định dạng rất linh động, hỗ trợ nhiều kiểu nén khác nhau như JPEG, LZW,
ZIP.

- Lưu trữ thông tin về màu sắc và cả thông tin về ảnh (thời gian chụp, máy chụp,
tốc độ chụp,…)
- Có thể lưu trữ dưới dạng các layers.
Nhược điểm:
- Kích thước ảnh lớn nên thời gian truyền và không gian đĩa lưu trữ lớn.
- Tốc tộ hiển thị ảnh chậm.
2.1.3. Định dạng ảnh PNG
PNG (Portable Network Graphics) – Là một định dạng hình ảnh sử dụng phương
pháp nén dữ liệu mới – không làm mất đi dữ liệu gốc. PNG được hỗ trợ bởi thư viện

18


tham chiếu Libpng, một thư viện nền độc lập bao gồm các hàm của C để quản lý các
hình ảnh PNG 13.
Một tập tin PNG bao gồm 8 – byte ký hiệu (89 50 4E 47 0D 0A 1A) được viết
trong hệ thống có cơ số 16, chứa các chữ “PNG” và 2 dấu xuống dòng, ở giữa là xếp
theo số lượng của các thành phần, mỗi thành phần đều chứa thông tin về hình ảnh. Cấu
trúc dựa trên các thành phần được thiết kế cho phép định dạng PNG có thể tương thích
với các phiên bản cũ khi sử dụng các “thành phần” trong tập tin.
PNG có cấu trúc như một chuỗi các thành phần, mỗi thành phần chứa kích thước,
kiểu, dữ liệu và mã sửa lỗi CRC ngay trong nó.
Chuỗi được gán tên bằng 4 chữ cái phân biệt chữ hoa, chữ thường.Sự phân biệt
này giúp bộ giải mã phát hiện bản chất của chuỗi khi nó không nhận dạng được.
Với chữ cái đầu, viết hoa thể hiện chuỗi này là cần thiết.Chuỗi này chứa thông tin
cần thiết để đọc được tệp và nếu bộ giải mã không nhận dạng được chuỗi này thì việc
đọc tệp sẽ được huỷ bỏ.
Về cơ bản thì định dạng PNG đem lại cho ta những ưu thế vượt trội hơn so với
các định dạng phổ thông khác hiện nay như JPG, GIF, BMP…. Những ưu thế được thể
hiện rõ sức mạnh hơn khi được sử dụng trong môi trường đồ hoạ Web.

Ưu điểm:
-

Nén không bị mất dữ liệu ảnh
Cho chất lượng ảnh tốt hơn so với GIF, PNG thậm chí còn cho ảnh kích thước

-

nhỏ hơn cả GIF
Hỗ trợ màu trong suốt (màu nền) tốt hơn GIF

Nhược điểm:
-

Không phù hợp với các ảnh kích thước lớn
Không hỗ trợ ảnh động
Chỉ được hỗ trợ bởi một số trình duyệt chứ không phải tất cả

19


2.1.4. Định dạng ảnh GIF
GIF (Graphics Interchange Format) – là một định dạng tập tin hình ảnh bitmap
cho các hình ảnh dùng ít hơn 256 màu sắc khác nhau và các hoạt hình dùng ít hơn 256
màu sắc cho mỗi khung hình.Định dạng này thường dùng cho sơ đồ, hình vẽ, nút bấm
và các hình màu.GIF là định dạng nén dữ liệu đặc biệt hữu ích cho việc truyền hình
ảnh qua đường truyền lưu lượng nhỏ 14.Đây là một giải pháp tốt cho hình ảnh trên
mạng, cho các hoạt hình nhỏ và ngắn.Định dạng được ra đời vào năm 1987 và nhanh
chóng được ứng dụng rộng rãi trên World Wide Web cho đến nay.
GIF sử dụng thuật toán nén Loss less (không bị mất dữ liệu), điều đó cho phép

chúng tạo ra kích thước nhỏ mà không bị mất hoặc mờ bất kỳ chi tiết nào của ảnh.
Có hai phiên bản của định dạng GIF, cả hai đều được phân phối rộng rãi.Phiên
bản đầu tiên là GIF87a, có rất nhiều chức năng được tạo dưới định dạng này. Phiên bản
hiện tại là GIF89a, có bổ sung thêm một số chức năng, trong đó chức năng lưu trữ các
ký tự và dữ liệu ảnh trong cùng một tệp. Hai phiên bản này có thể được phân biệt dựa
vào 6 byte đầu tiên của tập tin.
* GIF87a
Phiên bản GIF87A Là định dạng GIF đầu tiên, ra mắt vào năm 1987, tất cả các
phần mền, ứng dụng hỗ trợ định dạng GIF đều có thể đọc được GIF87a.
Hình 2.1. mô tả về cấu trúc cơ bản của GIF87a.Mỗi tệp ảnh luôn bắt đầu với một
header và một bộ mô ta hiển thị, sau bộ mô tả hiển thị là một bộ bảng màu tổng
thê.Mỗi ảnh lưu trữ trong tệp bao gồm một bộ mô tả ảnh cục bộ, một bảng màu cục bộ
và một khối dữ liệu ảnh.Trường cuối cùng của mỗi tệp GIF là một ký tự kết thúc để
biểu thị sự kết thúc chuỗi dữ liệu GIF.

20


Hình 2.1.
-

-

-

-

Cấu trúc ảnh GIF87a

Header gồm 6 byte:

+ 3 byte: ký hiệu của ảnh, luôn luôn là “GIF”
+ 3 byte: Phiên bản định dạng GIF (87a hay 89a)
Bộ mô tả hiển thị:
+ 1 word: Chiều rộng màn hình hiển thị tính theo Pixels
+ 1 word: Chiều cao màn hình hiển thị tính theo Pixels
+ 1 byte: Thông tin về màn hình và bản đồ màu
+ 1 byte: Chỉ số màu nền
+ 1 byte: Khuân dạng điểm ảnh
Bộ mô tả ảnh cục bộ:
+ 1 byte: Định dạng bộ mô tả ảnh
+ 1 word: Pixel bắt đầu ảnh tính từ trái màn hình hiển thị
+ 1 word: Pixel bắt đầu tính từ trên cùng màn hình hiển thị
+ 1 word: Độ rộng của ảnh tính theo Pixels
+ 1 word: Chiều cao của ảnh tính theo Pixels
+ 1 byte: Thông tin dữ liệu bảng màu và ảnh
Dữ liệu ảnh: Là chuỗi các giá trị có thứ tự của các điểm ảnh màu tạo nên ảnh.
Các điểm ảnh được xếp liên tục trên một dòng ảnh, từ trái qua phải.Các dòng
ảnh được viết từ trên xuống dưới.

21


Ký tự kết thúc: Là một byte được coi là ký tự cuối cùng của tệp. Giá trị của byte

-

này luôn là 3Bh và biểu thị kết thúc của chuỗi dữ liệu GIF.Mọi tệp GIF đều phải
có ký tự kết thúc.
* GIF89a:
Phiên bản 89a là phiên bản mới nhất của định dạng tệp ảnh GIF, được công bố

vào năm 1989. Về cơ bản thì nó gần giống với phiên bản trước, chỉ bổ sung thêm một
số thông tin không có trong 87a. Do đó một số thiết bị nếu chỉ đọc được tệp ảnh 87a thì
khi đọc sang ảnh 89a sẽ bị hiển thị sai thông tin trong tệp.
Ưu điểm:
-

Hỗ trợ màu trong suốt (màu nền)
Hỗ trợ ảnh động
Kích thước ảnh sau khi nén rất nhỏ (do chỉ giới hạn còn 256 màu trong ảnh)
Phù hợp với các ảnh đồ thị, ảnh hoạt hình (sô lượng màu sắc không quá nhiều)

Nhược điểm:
-

Chỉ hỗ trợ 256 màu
Là định dạng ảnh cổ nhất (tồn tại từ năm 1989) và tới nay vẫn chưa ra đời
phiên bản mới hơn

2.1.5. Định dạng ảnh BITMAP
BITMAP (BMP) là một định dạng tập tin hình ảnh khá phổ biến.Các tập tin đồ
hoạ lưu dưới dạng BMP thường có đuôi là .BMP hoặc .DIB.Các nét vẽ trong BITMAP
được thể hiện là các điểm ảnh với quy ước màu đen, trắng tương ứng với giá trị 0,1 15.
Các thuộc tính tiêu biểu của một tập tin ảnh BMP là:
- Số bit trên mỗi điểm ảnh thường được ký hiệu bởi n. Một ảnh BMP n bit có 2n
màu. Giá trị n càng lớn thì ảnh càng có nhiều màu và càng rõ nét hơn.Giá trị tiêu biểu
của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24
(ảnh 16 triệu màu). Ảnh BMP 24 bit có chất lượng hình ảnh trung thực nhất.
- Chiều cao của ảnh (height) tính bằng Pixels.
22



- Chiều rộng của ảnh (width) tính bằng Pixels.
Đặc điểm nổi bật nhất của định dạng BMP là tập tin ảnh thường không được nén
bằng bất kỳ thuật toán nào.Khi lưu ảnh, các điểm anh được ghi trực tiếp vào tập tin một
điểm ảnh sẽ được mô tả bởi một hay nhiều byte tuỳ thuộc vào giá trị n của ảnh. Do đó,
một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với các
ảnh được nén .
* Cấu trúc của ảnh BITMAP (BMP)
Gồm 4 phần chính là:
a) Header tệp BITMAP (14 bytes): Lưu trữ thông tin tổng hợp về tệp ảnh BMP.
Dùng để nhận dạng tập tin.Các ứng dụng đọc khối bytes này để kiểm tra xem đó có
đúng là tập tin BMP hay không và có bị hư hỏng hay không.
Bảng 2.1 Đưa ra địa chỉ Offset tương ứng với các khối byte của header trong tệp
bitmap và mục đích sử dụng của các khối byte đó.
Bảng 2.1.

Chi tiết các khối byte của header tệp bitmap

Offset

Size

Mục đích
Giá trị
Sử dụng để nhận dạng ‘BMP’ hay 19778

0000h

2 bytes


0002h

4 bytes

0006h

2 bytes

Dành riêng;

0008h

2 bytes

Dành riêng;

000Ah

4 bytes

tập tin BMP: 0x42 0x4D
Kích thước của tập tin Kiểu Long trong turbo C
BMP theo byte
Giá trị thực tế phụ thuộc vào
ứng dụng tạo ra hình ảnh.
Giá trị thực tế phụ thuộc vào

ứng dụng tạo ra hình ảnh.
Byte bắt đầu vùng dữ Offset của byte bắt đầu vùng
liệu


dữ liệu

b) Thông tin BITMAP (40 bytes): Lưu trữ thông tin chi tiết giúp hiển thị ảnh
Bitmap.

23


Bảng 2.2. mô tả chi tiết các khối byte trong bitmap và cho biết các thông tin chi
tiết về hình ảnh sẽ được sử dụng để hiển thị hình ảnh trên màn hình.
Bảng 2.2.

Chi tiết khối byte thông tin tệp bitmap

Offset
Eh
12h

Size
4
4

Ý nghĩa
Kích thước của tiêu đề
Chiều rộng bitmap.

16h

4


Chiều cao bitmap.

lA

2

lCh

2

lEh

4

Giá trị
40 byte
Tính bằng pixel
Tính bằng pixel

Số lượng các mặt phẳng màu sắc
được sử dụng.
Số bit trên mỗi pixel, là độ sâu màu
của hình ảnh.

Cố định là 1
Giá trị điển hình là
1,4, 8, 16, 24 và
32.
0: Không nén


Kiểu nén dữ liệu

1: Nén 8 bits/pixel

2: Nén 4 bits/pixel
Kích thước hình ảnh. Đây là kích Tính bằng byte
22h

4

26h

4

2Ah

4

2Eh

4

32h

4

thước của dữ liệu bitmap và không
nên nhầm lẫn với kích thước tập tin.
Độ phân giải theo chiều ngang của Tính


bằng

hình ảnh.
pixel/metr
Độ phân giải theo chiều dọc của Tính bằng pixel
hình ảnh.
Số màu sử dụng trong ảnh
Số màu được sử dụng khi hiển thị
ảnh.

c) Bảng màu (4*x bytes// với x là số màu của ảnh): Lưu trữ định nghĩa các màu
được sử dụng cho ảnh bitmap. Gồm nhiều bộ có kích thước bằng 4 byte xếp liền nhau
theo cấu trúc Blue – Green – Red và một byte dành riêng cho cường độ.
Kích thước của vùng bảng màu = 4*số màu của ảnh.
24


Bảng màu xuất hiện trong tập tin BMP sau tiêu đề BMP và tiêu đề DIB. Vì vậy,
địa chỉ offset là kích cỡ tiêu đề BMP cộng với kích cỡ tiêu đề DIB.
Do trong bộ nhớ máy tính thì lưu theo thứ tự Red – Green – Blue nên khi đọc màu
của ảnh BMP thì phải chuyển đổi cho phù hợp.
Số màu của ảnh biết được dựa trên số bit cho 1 pixel cụ thể là:
- 24 bits/pixel: là ảnh 24 bit màu
- 8 bits/pixel: là ảnh 256 màu
- 4 bits/pixel: là ảnh 16 màu
- 1 bit: ảnh đen trắng
Có tất cả 224 màu RGB khác nhau, nhưng các loại bitmap 1 bit (2 màu, hoặc theo
chuẩn windows là đen – trắng), 4 bits (16 màu), 8 bits (256 màu) không thể khai thác
hết nên chỉ liệt kê các màu được dùng trong tệp. Mỗi màu trong bảng màu được mô tả

bằng 4 byte (BlueByte, GreenByte, RedByte và ReservByte).
Ví dụ: Bảng màu loại 1 bit theo chuẩn windows có 8 bytes: với 4 bytes đầu là
màu thứ 0, 4 bytes sau là màu thứ 1. Do đó chỉ có 0 và 1 nên mô tả mỗi điểm ảnh chỉ
cần dùng 1 bit. Tương tự trong bảng màu của tệp 4 bits có 64 bytes, lần lượt từ màu số
0 đến số 15, bảng màu của tệp 8 bits có 1024 bytes (từ màu số 0 đến màu số 255).
Chính vì các màu được liệt kê như vật nên các màu trong tệp 1 bit, 4 bits, 8 bits
được gọi là màu chỉ số (Indexed), còn các màu trong tệp 24 bits được gọi là màu chính
xác (true).
d) Dữ liệu bitmap: Lưu trữ từng điểm ảnh của hình ảnh thực tế. Chứa các giá trị
màu của các điểm ảnh trong BMP. Dữ liệu ảnh được lưu từng điểm cho đến hết hàng
ngang (từ trái sang phải), và từng hàng ngang cho ddeeens hết ảnh (từ dưới lên trên).
Mỗi byte trong vùng BitmapData biểu diễn một hoặc nhiều điểm ảnh tuỳ theo số bits
cho một pixel.

25


×