LỜI MỞ ĐẦU
- Công nghệ thông tin ngày càng phát triển đem đến cho con người nhiều tiện nghi hơn. Hầu hết mọi dữ liệu đều được chúng ta số hóa để tiện cho việc lưu trữ và tìm lại sau này.
- Không những giúp con người lưu trữ mà mạng Internet còn giúp con người truyền tải những thông điệp đến người khác một cách nhanh chóng. Đây là cuộc cách mạng về công nghệ đem con người đến gần nhau hơn, mở ra một kỷ nguyên mới để chinh phục thế giới và vũ trụ.
- Cùng với những tiện nghi mà Internet mang lại thì phải kể đến những rắc rối của nó. Ví dụ: dữ liệu của bạn bị tấn công, bị trộm tài khoản, vv… Hàng loạt những vấn đề có thể xảy ra và các chuyên viên an ninh mạng đã phải nhập cuộc.
- Những dữ liệu được truyền đi trên mạng đa phần là: hình ảnh, âm thanh, video… Đó là những dữ liệu rất quen thuộc trong cuộc sống hằng ngày của chúng ta. Nó có thể được xem là tài sản của mỗi người trong chúng ta. Vậy chúng ta phải làm gì đề bảo vệ nó ?
- Với những suy nghĩ đó, nhóm chúng em quyết định tìm hiểu đề tài: ”Đọc thông số kỹ thuật của một ảnh bất kỳ”. Chúng em mong muốn qua việc tìm hiểu đề tài này có thể nâng cao sự hiểu biết của mình và xây dựng chương trình giấu thông tin trong ảnh, một giải pháp giúp mọi người có thể truyền đi những thông điệp của mình đến tận tay người nhận một cách an toàn.
- Chúng em xin chân thành cảm ơn thầy Nguyễn Quốc Huy đã tận tình hướng dẫn trong suốt thới gian tìm hiểu đề tài này.
- Tuy nhiên, do thời gian có hạn nên việc tìm hiểu đề tài không tránh khỏi sự thiếu sót. Rất mong nhận được những ý kiến đóng góp quý báu .
Xin chân thành cảm ơn
MỤC LỤC
Lời mở đầu ......................................................................................... Trang 4
Mục lục .................................................................................................... 5
- TÌM HIỂU VÀ ĐỌC CẤU TRÚC FILE ẢNH................. 7
- Giới thiệu cấu trúc các file ảnh: .................................................................... 8
- Giới thiệu sơ lược 8
- Giới thiệu ảnh Bitmap ............................................................................ 13
- Giới thiệu ảnh Icon .................................................................................. 19
- Giới thiệu ảnh Gif ................................................................................... 39
- Giới thiệu ảnh Jpg.................................................................................... 45
- Giới thiệu ảnh Png.................................................................................... 48
- Giới thiệu ảnh Pcx.................................................................................... 49
- Giới thiệu ảnh Tiff.................................................................................... 51
- KỸ THUẬT GIẤU THÔNG TIN TRONG ẢNH........... 53
- Giới thiệu kỹ thuật giấu thông tin.............................................................. 54
- Thế nào là thông tin?............................................................................... 54
- Bảo mật thông tin..................................................................................... 54
- Mục đích bảo mật thông tin................................................................... 55
- Phương pháp bảo vệ thông tin............................................................... 55
- Tổng quan về độ an toàn thông tin....................................................... 55
- Giới thiệu phương pháp mã hóa và các thuật toán........................... 56
- Giấu thông tin trong đa phương tiện.................................................... 59
- Thuật toán LSB......................................................................................... 64
- Thuật toán CPT cho ảnh nhị phân........................................................ 65
- Thuật Toán cải tiến ( từ CPT ) để ........................................................ 66
áp dụng cho ảnh màu ảnh đa mức xám
- DEMO........................................................................ 81
- Demo............................................................................................................. 82
- KẾT LUẬN................................................................ 84
- Kết luận........................................................................................................ 85
TÀI LIỆU VÀ TÀI NGUYÊN SỬ DỤNG......................................... 87
TÌM HIỂU VÀ ĐỌC CẤU TRÚC CÁC FILE ẢNH
-
Giới thiệu cấu trúc các file ảnh:
- Giới thiệu sơ lược:
- Một số khái niệm:
- Pixel (Picture Element): phần tử ảnh.
- Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sang. Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hóa ảnh.
- Trong quá trình số hóa, người ta biến đổi tín hiệu liên tục sang tín hiệu rời rạc thông qua quá trình lấy mẫu (rời rạc hóa về không gian) và lượng hóa thành phần giá trị (rời rạc hóa biên độ giá trị) mà về nguyên tắc bằng mắt thường không phân biệt được hai mức kề nhau.
- Trong quá trình này, người ta sử dụng khái niệm Picture element mà ta quen gọi hay viết tắt là Pixel-phần tử ảnh.
- Ở đây cũng cần phân biệt khái niệm pixel hay đề cập đến trong các hệ thống đồ họa máy tính. Để tránh nhầm lẫn ta tạm gọi khái niệm pixel này là pixel thiết bị.
- Khái niệm pixel thiết bị có thể xem xét như sau: khi ta quan sát màn hình (trong chế độ đồ họa) màn hình không liên tục mà gồm nhiều điểm nhỏ gọi là pixel. Mỗi pixel gồm một cặp tọa độ x, y và màu.
- Cặp tọa độ x, y tạo nên độ phân giải (resolution). Như màn hình máy tính có nhiều loại với độ phân giải khác nhau: màn hình CGA có độ phân giải là 320 x 200; màn hình VGA là 640 x 350…
- Như vậy, một ảnh là tập hợp các điểm ảnh. Khi được số hóa, nó thường được biểu diễn bởi bảng hai chiều I(n,p): n dòng và p cột. Ta nói ảnh gồm n x p pixels. Người ta thường ký hiệu I(x,y) để chỉ một pixel. Thường giá trị của n chọn bằng p và bằng 256. Hình 1.1 cho thấy việc biểu diễn một ảnh với độ phân giải khác nhau. Một pixel có thể lưu trữ trên 1, 4, 8 hay 24 bit.
- Gray level: Mức xám
- Mức xám là kết quả sự mã hóa tương ứng một cường độ sang của mỗi điểm ảnh với một giá trị số - kết quả của quá trình lượng hóa.
- Cách mã hóa kinh điển thường dùng 16, 32 hay 64 mức. Mã hóa 256 mức là phổ dụng nhất do lý di kỹ thuật. Vì 28 =256 (0,1,…,255), nên với 255 mức, mỗi pixel sẽ được mã hóa bởi 8 bit.
- Biểu diễn ảnh:
- Trong biểu diễn ảnh, người ta thường dùng các phần tử đặc trưng của ảnh là pixel. Nhìn chung có thể xem một hàm hai biến chứa các thông tin như biểu diễn của một ảnh.
- Các mô hình biểu diễn của một ảnh cho ta một mô tả logic hay định lượng các tính chất của hàm này. Trong biểu diễn ảnh cần chú ý đến tính trung thực của ảnh hoặc các tiêu chuẩn “thông minh” để đo chất lượng ảnh hoặc tính hiệu quả của kỹ thuật xử lý.
- Việc xử lý ảnh số yêu cầu phải được mã hóa và lượng tử hóa. Thí dụ một ảnh ma trận 512 dòng gồm khoảng 512 x 512 pixel. Việc lượng tử hóa ảnh là chuyển đổi tín hiệu tương tự sang tín hiệu số (Analog Digital Convert) của một ảnh đã lấy mẫu sang một số hữu hạn mức xám.
- Một số mô hình thường được dùng trong biểu diễn ảnh: Mô hình toán, mô hình thống kê. Trong mô hình toán, ảnh hai chiều được biểu diễn nhờ các hàm hai biến trực giao gọi là các hàm cơ sở.
- Với mô hình thống kê, một ảnh được coi như một phần tử của một tập hợp đặc trưng bởi các đại lượng như: kỳ vọng toán học, hiệp biến, phương sai, moment.
- Phân tích ảnh:
- Phân tích ảnh liên qua đến việc xác định các độ đo định lượng của một ảnh để đưa một mô tả đầy đủ về ảnh. Các kỹ thuật được sử dụng ở đây nhằm mục đích xác định biên của ảnh. Có nhiều kỹ thuật khác nhau như lọc vi phân hay dò theo quy hoạch động.
- Người ta cũng dùng các kỹ thuật để phân vùng ảnh. Từ ảnh thu được, người ta tiến hành kỹ thuật tách (split) hay hợp (fusion) dựa theo các tiêu chuẩn đánh giá như: màu sắc, cường độ, v….v.
- Các phương pháp được biết đến như Quad-Tree, mảnh hóa biên, nhị phân hóa đường biên. Cuối cùng phải kể đến các kỹ thuật phân lớp dựa theo cấu trúc.
- Nhận dạng ảnh:
- Nhận dạng ảnh là quá trình liên quan đến các mô tả đối tượng mà người ta muốn đặc tả nó. Quá trình nhận dạng thường đi sau quá trình trích chọn các đặc tính chủ yếu của đối tượng. Có hai kiểu mô tả đối tượng:
- Mô tả tham số (nhận dạn theo tham số).
- Mô tả theo cấu trúc (nhận dạng theo cấu trúc).
- Trên thực tế người ta đã áp dụng kỹ thuật nhận dạng khá thành công với nhiều với nhiều đối tượng khác nhau như: nhận dạng ảnh vân tay, nhận dạng chữ (chữ cái, chữ số, chữ có dấu).
- Nhận dạng chữ in hoặc đánh máy phục vụ cho việc tự động hóa quá trình đọc tài liệu, tăng nhanh tốc độ và chất lượng thu nhận thông tin từ máy tính.
- Nhận dạng chữ viết tay (với mức độ ràng buộc khác nhau về cách viết, kiểu chữ, v.v…) phục vụ cho nhiều lĩnh vực.
- Ngoài hai kỹ thuật nhận dạng trên, hiện nay một kỹ thuật nhận dạng mới dựa vào kỹ thuật mạng nơron đang được áp dụng và cho kết quả khả quan.
- Khái niệm ảnh đen trắng, đa cấp xám, ảnh màu:
- Có xu hướng hay nhầm lẫn giữa các khái niệm ảnh nhị phân, ảnh đen trắng cũng như ảnh đơn sắc (một màu –monochrome) với ảnh màu.
- Thực tế ảnh đen trắng bao gồm ảnh nhị phân và ảnh đa cấp xám. Khái niệm cấp xám hay mức xám (grey level) đã đề cập ở phần trên.
- Ảnh đen trắng
- Ảnh đen trắng chỉ bao gồm hai màu: màu đen và màu trắng. Người ta phân sự biến đổi đó thành L mức. Nếu L=2 nghĩa là chỉ có hai mức: mức 0 và mức 1 và còn gọi là ảnh nhị phân.
- Mức 1 ứng với màu sáng, còn mức 0 ứng với màu tối. Nếu L lớn hơn 2 ta có ảnh đa cấp xám. Việc xác định số mức là phụ thuộc vào tiêu chí lượng hóa. L thường chọn 32, 64, 128 và 256. Ảnh 256 mức là ảnh có chất lượng cao và thường được sử dụng.
- Với ảnh nhị phân, mỗi pixel mã hóa trên 1 bit, còn với ảnh 256 mức, mỗi pixel mã hóa trên 8 bit. Ví dụ với một ảnh 256 mức xám, kích thước 512 x 512 cần không gian lưu trữ là 512 x 512 bytes hay 256 Kbytes.
- Ảnh nhị phân khá đơn giản, các phần tử ảnh coi như các phần tử logic. Ứng dụng chính của nó được dùng theo tính logic, để phân biệt đối tượng ảnh với nền hay để phân biệt điểm biên với điểm khác.
- Ảnh màu
- Ảnh màu là tổ hợp từ 3 màu cơ bản: đỏ (R), lục (Green) và lơ (Blue) và thường thu nhận trên các gải băng tần khác nhau. Mỗi màu cũng phân thành L cấp khác nhau (L thường là 256).
- Do vậy, để lưu trữ ảnh màu, người ta có thể lưu trữ từng mặt màu riêng biệt, mỗi màu lưu trữ như một ảnh đa cấp xám. Do đó, không gian nhớ giành cho một ảnh màu lớn gấp 3 lần một ảnh đa cấp xám cùng kích thước.
- Khái niệm chung:
- Ảnh thu được sau quá trình số hóa thường được lưu lại cho các quá trình xử lý tiếp theo hay truyền đi. Trong quá trình phát triển của kỹ thuật xử lý ảnh, tồn tại nhiều định dạng khác nhau từ ảnh đen trắng IMG, ảnh đa cấp xám/ảnh màu: BMP, GIF, JPG, …
- Tuy các định dạng này là khác nhau, song chúng cũng tuân theo một cấu trúc chung nhất. Dưới đây là cấu trúc chung và ý nghĩa của các phần cấu trúc đó:
-
Nhìn chung, một tệp ảnh gồm 3 phần:
- Đầu tệp (Header)
- Dữ liệu nén (Data Compression)
- Bảng màu (Palette Color)
Đầu tệp (Header) |
Dữ liệu nén (Data Compression) |
Bảng màu (Palette Color) |
Hình 1: Một tệp ảnh
- Đầu tệp: Chứa các thông tin về kiểu ảnh, kích thước, độ phân giải, số bit dùng cho 1 pixel, cách mã hóa, vị trí bảng màu,… Kích thước phần Header rất khác nhau, phụ thuộc kiểu định dạng ảnh.
- Dữ liệu nén: Số liệu ảnh đã được mã hóa bởi kiểu mã hóa chỉ ra trong phần Header.
- Bảng màu: Không nhất thiết phải có. Nếu có, nó chỉ ra số màu dùng trong ảnh và sử dụng để hiện ảnh.
- Quy trình đọc một File ảnh:
- Khi lưu trữ dưới dạng tệp, ảnh là một khối các byte. Để đọc đúng, ta cần hiểu ý nghĩa các phần trong cấu trúc của tệp ảnh như đã nêu trên. Trước tiên, ta cần đọc Header để lấy các thông tin điều khiển.
- Việc đọc này sẽ dừng ngay khi ta không gặp được chữ ký mong muốn ( thường là 6 bytes đầu). Dựa vào thông tin điều khiển này, ta xác định được vị trí bảng màu (nếu có) và đọc nó vào bộ nhớ. Cuối cùng là ta đọc phần dữ liệu nén.
- Sau khi đã đọc xong các khối vào bộ nhớ, ta tiến hành giải nén số liệu ảnh. Căn cứ vào phương pháp nén chỉ ra trong Header (có thể có các bảng phụ) ta giải mã được ảnh.
- Cuối cùng là khâu hiện ảnh. Dựa vào số liệu ảnh đã giải nén, vị trí và kích thước ảnh, cùng với sự trợ giúp của bảng màu ảnh được hiện lên màn hình.
- Giới thiệu ảnh Bitmap:
- Bitmap-File Formats:
- Các tập tin windows bitmap được lưu trữ trong device-independent cho phép hiển thị các ảnh bitmap trên tất cà các thiết bị hiển thị.
- Thuật ngữ device-independent là xác định điểm ảnh trong color_bitmap bằng một phương thức từ màn hình dùng để hiển thị chúng. Phần mở rộng mặc định là “.bmp”.
- Bitmap-File Structures:
- Một bitmap gồm có: một bitmap-file header, một bitmap-information header, một color table và một mảng byte bitmap data chứa các bit.Nó bao gồm các thành phần sau đây:
BITMAPFILEHEADER bmfh;BITMAPINFOHEADER bmih;RGBQUAD aColors[]; BYTE aBitmapBits[]; |
Hình 2: Cấu trúc file bitmap
- BITMAPINFOHEADER:
- Xác định kích thước, định dạng loại nén và màu sắc cho bitmap.
- RGBQUAD:
- Xác định các yếu tố màu sắc trong bitmap. Điều này giúp vẽ lại bitmap và hiển thị nó ra trên thiết bị. Tuy nhiên không thể hiển thị bang màu 24 bit.
- Nếu ảnh được định dạng bằng DIB trong Windows 3.0 hoặc các phiên bản về sau thì sử dụng biClrImportant trong bitmapinfoheader để xác định số màu quan trọng được sử dụng trong bitmap.
- BITMAPINFO:
- Sử dụng để miêu tả thông tin header của bitmap và bảng màu của nó. Bảng màu là một mảng Byte, các giá trị được tra cứu trên từng dòng.
- Mỗi dòng được quét từ trái sang phải tùy thuộc vào màu sắc định dạng và độ rộng của pixel trong bitmap. Nếu cần thiết, một dòng quét phải bằng không đến kết thúc ranh giới 32-bit.
- Tuy nhiên, phân ranh giới có thể xuất hiện ở bất kỳ nơi nào trong bitmap. Các dòng quét trong bitmap được lưu trữ từ dưới lên.
- Điều này có nghĩa là lần đầu tiên trong mảng byte đại diện cho pixel trong góc dưới bên trái của bitmap và cuối cùng đại diện cho byte các điểm ảnh trong góc trên bên phải.
- biBitCount:
- Xác định số bit trong mỗi điểm ảnh và số lượng tối đa các màu sắc trong bitmap. Các giá trị và ý nghĩa như sau:
- 1: Bitmap là monochrome và bảng màu chỉ có 2 màu. Mỗi bit trong mảng bitmap miêu tả một pixel. Nếu bit là 0 thì pixel hiển thị với màu đầu tiên trong bảng màu. Nếu bit là 1 thì pixel hiển thị màu thứ 2 trong bảng màu.
- 4: Bitmap có tối đa 16 màu. Mỗi điểm ảnh trong bitmap là đại diện cho 4 bit, được hiển thị dựa vào các chỉ mục trong bảng màu. Ví dụ nếu byte đầu tiên trong bitmap là 0x1F, byte hiển thị từ pixel thứ hai. Byte đầu tiên chứa bảng màu trong pixel thứ 2 và byte thứ hai chứa bảng màu thứ 16.
- 8: Bitmap có tối đa 256 màu. Mỗi pixel trong bitmap hiển thị một byte chỉ mục vào các bảng màu. Nếu byte đầu tiên của bitmap là 0x1F, pixel đầu tiên chứa bảng màu thứ 32.
- 24: Bitmap chứa tốt đa 224 màu. bmiColors (hoặc bmciColors) bằng Null. Mỗi 3 byte trong mảng bitmap chứa các màu đỏ, xanh lá cây, xanh dương cho một điểm ảnh.
- biClrUsed:
- Xác định số các màu sắc đánh chỉ mục trong bảng màu sắc thật sự được sử dụng bởi các bitmap. NếubiClrUsed thành viên được đặt thành số không, các bitmap sử dụng số lượng tối đa màu sắc tương ứng với giá trị của biBitCount thành viên.
- Một hình thức thay thế bitmap sử dụng các tập tin BITMAPCOREINFO, BITMAPCOREHEADER, và RGBTRIPLE kết cấu.
- Bitmap Compression:
- Windows phiên bản 3.0 và sau này hỗ trợ dãy mã hóa dài (RLE) cho các định dạng compressing bitmaps có sử dụng 4 bit cho mỗi điểm ảnh và 8 bit cho mỗi điểm ảnh.
- Khi biCompression thành viên của BITMAPINFOHEADER cấu trúc được thiết lập để BI_RLE8, các DIB là nén-chạy bằng cách sử dụng một định dạng mã hóa chiều dài cho một 256-màu bitmap. Định dạng này sử dụng hai chế độ: chế độ mã hóa và các chế độ tuyệt đối. Cả hai chế độ có thể xảy ra bất cứ nơi nào trong suốt một bitmap.
- Chế độ mã hóa :
- Một đơn vị thông tin trong chế độ mã hóa bao gồm hai byte. Đầu tiên byte xác định số lượng điểm ảnh liên tiếp được rút ra bằng cách sử dụng màu sắc chỉ mục trong các thứ hai byte.
- Byte đầu tiên của các cặp ngôn ngữ có thể được đặt để không để cho biết rằng bắt buộc thoát ra khỏi một kết thúc của một dòng, ngày cuối cùng của bitmap, hoặc một delta.
- Việc giải thích của chế độ mã hóa phụ thuộc vào giá trị của byte thứ hai của các cặp ngôn ngữ, mà cần phải có trong phạm vi 0x00 đến 0x02. Sau đây là những ý nghĩa của sự thoát ra khỏi các giá trị có thể được sử dụng trong byte thứ hai:
- Ý nghĩa hai byte 0 cuối cùng của dòng.
- 1 Cuối bitmap.
- 2 Delta. Hai byte sau khi thoát ra khỏi các giá trị chứa unsigned cho biết ngang và dọc offsets của các điểm ảnh từ các trang kế tiếp trang vị trí hiện tại.
- Absolute Mode:
- Chế độ tuyệt đối là signaled của byte đầu tiên trong cặp được thiết lập và không thứ hai byte vào một giá trị giữa 0x03 và 0xFF. Thứ hai, đại diện cho byte số của byte theo sau, mỗi trong đó có chứa các chỉ mục màu sắc của một một điểm ảnh.
- Mỗi aligned phải được chạy trên một từ ranh giới. Sau đây là một ví dụ của một 8-bit, RLE bitmap (hai chữ số trong các giá trị hexadecimal cột thứ hai đại diện cho một màu chỉ mục cho một điểm ảnh):
- Compressed data:
03 04 04 04 04
05 06 06 06 06 06 06
00 03 45 56 67 00 45 56 67
02 78 78 78
00 02 05 01 Move 5 right and 1 down
02 78 78 78
00 00 End of line
09 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E
End of RLE bitmap
Hình 3: Expanded data
- Compression of 4-Bits-per-Pixel Bitmaps:
- Khi biCompression thành viên của BITMAPINFOHEADER
cấu trúc được thiết lập để BI_RLE4, các DIB là nén-chạy bằng cách sử dụng một định dạng mã hóa chiều dài cho một 16-màu bitmap. Định dạng này sử dụng hai chế độ: chế độ mã hóa và các chế độ tuyệt đối.
- Ví dụ: Một văn bản 16-màu bitmap (4 bit cho mỗi điểm ảnh):
Win3DIBFile
BitmapFileHeader
Type 19778
Size 3118
Reserved1 0
Reserved2 0
OffsetBits 118
BitmapInfoHeader
Size 40
Width 80
Height 75
Planes 1
BitCount 4
Compression 0
SizeImage 3000
XPelsPerMeter 0
YPelsPerMeter 0
ColorsUsed 16
ColorsImportant 16
Win3ColorTable
Hình 4: Bitmap header
Blue Green Red Unused
[00000000] 84 252 84 0
[00000001] 252 252 84 0
[00000002] 84 84 252 0
[00000003] 252 84 252 0
[00000004] 84 252 252 0
[00000005] 252 252 252 0
[00000006] 0 0 0 0
[00000007] 168 0 0 0
[00000008] 0 168 0 0
[00000009] 168 168 0 0
[0000000A] 0 0 168 0
[0000000B] 168 0 168 0
[0000000C] 0 168 168 0
[0000000D] 168 168 168 0
[0000000E] 84 84 84 0
[0000000F] 252 84 84 0
Hình 5: Bảng màu
- Giới thiệu ảnh Icon:
- Icon-Resource File Format :
- Một biểu tượng nguyên tập tin hình ảnh có chứa dữ liệu được sử dụng trong các ứng dụng của Windows.
- Tập tin bao gồm một biểu tượng thư mục xác định số và các loại biểu tượng của hình ảnh trong tập tin, cộng thêm một hoặc nhiều biểu tượng hình ảnh. Phần mở rộng cho tên tập tin là tentaptin.ico.
- Icon Directory:
- Mỗi icon resource bắt đầu với một icon directory được định nghĩa là một cấu trúc ICONDIR. Nó bao gồm các thành phần sau đây:
typedef struct ICONDIR
{
WORD idReserved; //phải bằng 0
WORD idType; //đặt bằng một
WORD idCount; //số lượng icondirectory
ICONDIRENTRY idEntries[1]; //thông tin icondirentry
} ICONHEADER;
Hình 6: Cấu trúc ICONDIR
- ICONDIRENTRY:
- Xác định kích thước và màu sắc cho một định dạng cho ảnh. Bao gồm các thông tin sau đây:
struct IconDirectoryEntry
{
BYTE bWidth; ‘các giá trị 16,32,64
BYTE bHeight; ‘các giá trị 16,32,64
BYTE bColorCount; ‘các giá trị 2,8,16
BYTE bReserved; ‘giá trị 0
WORD wPlanes; ‘số bảng màu trong bitmap
WORD wBitCount; ‘số bit trong bitmap
DWORD dwBytesInRes; ‘độ lưu trữ
DWORD dwImageOffset; ‘vị trí byte bắt đầu tập tin ảnh
};
Hình 7: Cấu trúc IconDirectoryEntry
- Icon Image:
- Mỗi icon_resource chứa một icon image được xác định trong icon directory.Icon image bao gồm: icon-image header, color table, XOR mask, và AND mask.
BITMAPINFOHEADER icHeader;
RGBQUAD icColors [];
BYTE icXOR [];
BYTE icAND [];
Hình 8: Icon Image
- Icon-image header:
- Định nghĩa như là một cấu trúc BITMAPINFOHEADER để xác định kích thước và định dạng màu sắc của các biểu tượng bitmap. Chỉ có biSize thông qua biBitCount thành viên và các biSizeImage các thành viên được sử dụng. Tất cả các thành viên khác (chẳng hạn như biCompression và biClrImportant) phải được đặt không.
- Các bảng màu sắc, định nghĩa như là một mảng của RGBQUAD cấu trúc, xác định màu sắc được sử dụng trong các XOR mask. Như với các bảng màu trong một tập tin bitmap, các biBitCount các thành viên trong các biểu tượng hình ảnh tiêu đề xác định số lượng các yếu tố trong mảng đó.
- Các XOR mask, ngay lập tức sau khi bảng màu sắc, là một mảng của BYTE giá trị đại diện cho các hàng liên tiếp của một bitmap. Việc xác định bitmap cơ bản hình dáng và màu sắc của các biểu tượng hình ảnh. Như với bitmap bit trong một tập tin bitmap, các dữ liệu bitmap trong-một biểu tượng tập tin tài nguyên được tổ chức trong dòng quét, với mỗi byte đại diện cho một hoặc nhiều pixel, như được định nghĩa của màu sắc định dạng.
- Các AND mask, ngay lập tức sau khi XOR mask, là một mảng của BYTE giá trị đơn sắc đại diện cho một bitmap với cùng một chiều rộng và chiều cao là XOR mask. Các mảng được tổ chức trong dòng quét, với mỗi byte đại diện cho 8 pixel.
- Khi Windows rút ra một biểu tượng, nó sử dụng và mặt nạ và XOR để kết hợp các biểu tượng hình ảnh với các điểm ảnh đã được hiển thị trên bề mặt.
- Windows lần đầu tiên áp dụng và các mask bằng cách sử dụng một bitwise và hoạt động này giữ hoặc loại bỏ hiện tại điểm ảnh màu. Cửa sổ sau đó áp dụng XOR mask bằng cách sử dụng một bitwise XOR hoạt động. Điều này đặt ra cuối cùng màu cho mỗi điểm ảnh.
- Sau đây minh hoạ cho thấy XOR và mặt nạ đó tạo ra một đơn sắc biểu tượng (đo 8 điểm ảnh của 8 pixel) thực hiện dưới hình thức một chữ hoa K.
- Windows Icon Selection:
- Windows sẽ phát hiện các nghị quyết của hiện tại và hiển thị kết quả phù hợp chống lại nó chiều rộng và chiều cao được chỉ định cho mỗi phiên bản của biểu tượng hình ảnh.
- Nếu Windows xác định rằng có một đối sánh chính xác giữa một biểu tượng hình ảnh và điện thoại, nó sử dụng phù hợp với hình ảnh. Nếu không, nó lựa chọn phù hợp với gần nhất stretches và những hình ảnh đúng kích cỡ.
- Nếu một biểu tượng nguyên tập tin chứa nhiều hơn một hình ảnh cho một giải quyết việc làm, Windows sử dụng các biểu tượng hình ảnh mà hầu hết các kết quả phù hợp chặt chẽ với các màu sắc khả năng hiện tại của màn hình.
- Nếu không có hình ảnh phù hợp với điện thoại khả năng chính xác, Windows chọn hình ảnh đó có sốlớn nhất về màu sắc mà không vượt quá số lượng hiển thị màu sắc.
- Nếu tất cả các hình ảnh vượt quá khả năng của màu sắc hiển thị hiện nay, Windows sử dụng các biểu tượng hình ảnh với số lượng ít màu sắc.
- Cursor-Resource File Format:
- Đáp trỏ nguyên tập tin chứa dữ liệu hình ảnh cho cursors được sử dụng bởi Windows ứng dụng.
- Các tập tin trỏ bao gồm một thư mục xác định số và các loại trỏ hình ảnh trong tập tin, cộng thêm một hoặc nhiều hình ảnh trỏ. Cái tên tập tin mặc định mở rộng cho một tập tin trỏ-là nguồn lực.
- Cursor Directory:
- Mỗi trỏ nguyên tập tin bắt đầu với một thư mục trỏ. Con trỏ thư mục, được định nghĩa như là một CURSORDIR cấu trúc, xác định số lượng cursors trong các tập tin và kích thước và màu sắc của từng trỏ định dạng hình ảnh. CURSORDIR cấu trúc có các hình thức sau đây:
typedef struct _CURSORDIR (
WORD cdReserved;
WORD cdType;
WORD cdCount;
CURSORDIRENTRY cdEntries [];
CURSORDIR);
Hình 9: CURSORDIR
- Các thành viên trong cơ cấu CURSORDIR: cdReserved Reserved; phải bằng không. cdType xác định nguồn lực loại. Điều này thành viên phải được đặt là 2.
- cdCount xác định số lượng cursors trong tập tin này. cdEntries chỉ định một mảng của cấu trúc có chứa CURSORDIRENTRY thông tin về cá nhân cursors. Các thành viên cdCount xác định số của cấu trúc trong mảng đó.
- CURSORDIRENTRY:
- Cấu trúc xác định kích thước và định dạng màu sắc của một trỏ hình ảnh. Các cấu trúc có các hình thức sau đây:
typedef struct _CURSORDIRENTRY (
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wXHotspot;
WORD wYHotspot;
DWORD lBytesInRes;
DWORD dwImageOffset;
CURSORDIRENTRY);
Hình 10: CURSORDIRENTRY
- Sau đây là các thành viên trong cơ cấu CURSORDIRENTRY:
- bWidth xác định chiều rộng của con trỏ, trong pixel.
- bHeight xác định chiều cao của con trỏ, trong pixel.
- bColorCount Reserved: phải bằng không.
- bReserved Reserved: phải bằng không.
- wXHotspot xác định x-phối hợp trong pixel.
- wYHotspot xác định y phối hợp trong pixel.
- lBytesInRes xác định kích thước của các nguồn bên trong.
- dwImageOffset xác định bù đắp, trong byte, từ đầu của tập tin để hình ảnh con trỏ.
- Cursor Image:
- Mỗi trỏ nguyên trỏ tập tin có chứa một hình ảnh cho mỗi hình ảnh được xác định trong thư mục con trỏ. Một hình ảnh trỏ trỏ bao gồm một hình ảnh tiêu đề, một bảng màu sắc, một XOR mask, và một AND mask. Con trỏ có hình ảnh sau đây :
- Hình thức:
BITMAPINFOHEADER crHeader;
RGBQUAD crColors [];
BYTE crXOR [];
BYTE crAND [];
Hinh 11: Cursor Image
- Con trỏ nóng tại chỗ là một điểm ảnh con trỏ trong bitmap mà Windows sử dụng để theo dõi con trỏ. Các crXHotspot và crYHotspot thành viên xác định và x - y-tọa độ của con trỏ nóng tại chỗ. Các tọa độ là 16-bit integers.
- Con trỏ hình ảnh tiêu đề, định nghĩa một BITMAPINFOHEADER cấu trúc, quy định các kích thước định dạng và màu sắc của con trỏ bitmap. Chỉ có biSize thông qua biBitCount thành viên và các biSizeImage các thành viên được sử dụng.
- Các thành viên biHeight xác định được kết hợp chiều cao của các XOR và mặt nạ và cho con trỏ. Cái này giá trị gấp đôi chiều cao của các XOR mask. Các biPlanes và biBitCount các thành viên phải được 1. Tất cả các thành viên khác (chẳng hạn như biCompression và biClrImportant) phải được đặt để không.
- Các bảng màu sắc, định nghĩa như là một mảng của RGBQUAD cấu trúc, xác định màu sắc được sử dụng trong các XOR mask. Để có một trỏ hình ảnh, bảng chứa chính xác hai cấu trúc, từ những thành viên trong biBitCount con trỏ-hình ảnh tiêu đề là luôn luôn 1.
- Các XOR mask, ngay lập tức sau khi bảng màu sắc, là một mảng của BYTE giá trị đại diện cho các hàng liên tiếp của một bitmap. Việc xác định bitmap cơ bản hình dáng và màu sắc hình ảnh của con trỏ.
- Như với bitmap bit trong một bitmap tập tin, các dữ liệu trong một bitmap trỏ nguyên tập tin được tổ chức trong quét dòng, với mỗi byte đại diện cho một hoặc nhiều pixel, như được định nghĩa bởi các định dạng màu sắc.
- Các AND mask, ngay lập tức sau khi XOR mask, là một mảng các giá trị của BYTE đơn sắc đại diện cho một bitmap với cùng một chiều rộng và chiều cao là XOR mask. Các mảng được tổ chức trong dòng quét, với mỗi byte đại diện cho 8 pixel.
- Khi Windows rút ra một trỏ, nó sử dụng và mặt nạ và XOR để kết hợp các trỏ hình ảnh với các điểm ảnh đã được hiển thị trên bề mặt.
- Cửa sổ đầu tiên áp dụng và mask bằng cách sử dụng một bitwise và hoạt động; này giữ hoặc loại bỏ hiện có điểm ảnh màu. Cửa sổ sau đó áp dụng XOR mask bằng cách sử dụng một bitwise XOR hoạt động. Điều này đặt ra cuối cùng màu cho mỗi điểm ảnh.
- Sau đây minh hoạ cho thấy XOR và các mặt nạ đó và tạo ra một trỏ (đo 8 điểm ảnh của 8 pixel) thực hiện dưới hình thức một mũi tên:
- Sau đây là những mask-bit, các giá trị cần thiết để sản xuất màu đen, trắng, inverted, và minh bạch các kết quả:
- Độ phân giải và kết quả maskXOR mask Black 0 0 0 1 trắng Minh bạch 1 0 Inverted1 1.
- Lựa chọn cửa sổ trỏ. Nếu một tập tin trỏ nguyên chứa nhiều hơn một hình ảnh trỏ, Windows sẽ xác định kết hợp tốt nhất cho một màn hình theo chiều rộng và kiểm tra chiều cao của con trỏ hình ảnh.
typedef struct tagBITMAPFILEHEADER (/ * bmfh * /
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
BITMAPFILEHEADER);
Hình 12: BITMAPFILEHEADER
-
Các BITMAPFILEHEADER cấu trúc chứa thông tin về loại, kích cỡ, và bố trí một thiết bị độc lập-bitmap (DIB) tập tin.
Mô tả thành viên :
- bfType xác định loại tập tin. Chứa kí tự BM.
- bfSize xác định kích cỡ của tập tin, trong byte.
- bfReserved1 Reserved: phải được đặt để không.
- bfReserved2 Reserved: phải được đặt để không.
- bfOffBits xác định byte bù đắp từ các cơ cấu BITMAPFILEHEADER vào thực tế bitmap dữ liệu trong tập tin này.
- Các ý kiến: BITMAPINFO hoặc cấu trúc BITMAPCOREINFO ngay lập tức sau những BITMAPFILEHEADER cơ cấu trong các tập tin DIB.
typedef struct tagBITMAPINFO (/ BMI, thanh * * /
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors [1];
BITMAPINFO);
Hình 13: BITMAPINFO
- Các BITMAPINFO cấu trúc định nghĩa đầy đủ các thông tin về kích thước và màu sắc cho Windows sau 3.0 hoặc thiết bị độc lập- bitmap (DIB).
- Mô tả các thành viên bmiHeader xác định một cấu trúc có chứa BITMAPINFOHEADER thông tin về các định dạng kích thước và màu sắc của một DIB.
- bmiColors chỉ định một mảng của cấu trúc RGBQUAD mà xác định màu sắc trong bitmap.
- Windows 3.0 hoặc sau DIB biệt bao gồm hai phần: một BITMAPINFO cơ cấu, trong đó mô tả các kích thước và màu sắc của các bitmap, và một mảng byte xác định các điểm ảnh bitmap.
- Các bit trong mảng là đóng gói lại với nhau, nhưng mỗi dòng quét phải không-thêm để kết thúc trên một Long ranh giới. Phân ranh giới, tuy nhiên, có thể xuất hiện ở bất kỳ nơi nào trong bitmap. Cái nguồn gốc của các bitmap là thấp hơn ở góc bên trái.
- Các biBitCount thành viên của BITMAPINFOHEADER cấu trúc sẽ xác định số bit đó xác định mỗi điểm ảnh và số lượng tối đa trong các màu sắc bitmap. Điều này thành viên có thể được đặt để bất kỳ giá trị sau đây:
- Giá trị ý nghĩa :
- 1: bitmap là đơn sắc, và các thành viên phải có các nội dung bmciColors hai mục. Mỗi bit trong bitmap mảng đại diện cho một điểm ảnh. Nếu các bit, là rõ ràng, những điểm ảnh sẽ được hiển thị với màu sắc của các mục đầu tiên trong bmciColors bảng. Nếu các bit, được thiết lập, các điểm ảnh có màu sắc của thứ hai mục nhập trong bảng.
.........................................................
KẾT LUẬN
- KẾT LUẬN
- GIẤU THÔNG TIN TRONG ẢNH:
Phương pháp giấu tin trong ảnh em đã thu rất nhiều kiến thức trong lĩnh vực này, cũng như trong thực tế hiện nay, biết được nhiều vấn đề có liên quan, và đặc biệt rút ra được những ý nghĩa của việc che dấu thông tin trong ảnh, nó thực sự đáp ứng nhu cầu an toàn bảo mật thông tin hiện nay. Vì như đã nêu phương pháp ngoài việc đảm bảo an toàn do mã hóa thông tin và tăng cường thêm một lớp bảo vệ bên ngoài nữa. Tuy nhiên với phương pháp này thì tin được giấu sẽ có thể bị mất trên đường truyền nếu file ảnh giấu tin bị nén hay bị biến dạng, để khắc phục vấn đề này còn phải nghiên cứu thêm.
Qua demo này em thấy chưa hoạn thiện lắm, chỉ đảm bảo một số kỹ thuật giấu thông tin cơ bản, chúng em chưa thực hiện được những kỹ thuật mã hóa cao. Chúng em có mục đích sẽ phát triển tiếp phần giấu thông tin này, theo hướng đó là viết một chương trình giấu thông tin ảnh hỗ trợ một số định dạng ảnh trên trang web, và chương trình sẽ chạy trực tiếp trên web, để tiện cho việc gửi thông tin bí mật cũng như đảm bảo an toàn thông tin cần thiết, em mong được sự giúp đỡ của thầy cô và các bạn đặc biệt là những góp ý phần giấu thông tin ảnh này được hoàn thiện hơn.
- ĐỌC THÔNG TIN HEADER FILE ẢNH
Header là một phần quan trọng của ảnh, chứa tất cả các thông tin của ảnh giúp cho người ta có thể khai thác chỉnh sửa ảnh một cách dễ dàng. Mỗi ảnh chứa những thông tin khác nhau, ở đề tài này chúng em thai khác các thông tin header của ảnh. Tuy nhiên vì thời gian có hạn nên chỉ thực hiện được đối với một số ảnh nhất định như GIF, BMP, ICON, JPG, PNG, PCX, TIFF.
Qua đề tài này còn một số vấn đề quan trọng chưa thực hiện được như tính khả khi và thuật toán sử dụng chưa tối ưu. Trong tương lai chúng em sẽ cải thiện thuật toán, giúp cho chương trình chạy nhanh hơn, load ảnh nhanh hơn. Chúng em sẽ phát triển trên ứng dụng này trên web, là tài liệu giúp cho các sinh viên bạn đọc có thể nghiên cứu sâu hơn về header của ảnh, giúp cho việc khai thác phân tích ảnh, xử lý ảnh dựa trên những thông số đó càng tốt hơn.
Do thời gian có hạn nên khi thực hiện đồ án này sẽ không tránh khỏi thiếu sót, rất mong sự đóng góp của bạn đọc và tất cả quý thầy cô cho quá trình thực hiện tốt hơn cũng như hướng phát triển về sau.
- HƯỚNG MỞ RỘNG VÀ PHÁT TRIỂN
Như đã đề cập thì chương trình vẫn còn mắc phải một số khuyết điểm. Trong tương lai, ngoài việc khắc phục những hạn chế đó, chương trình cũng cần được mở rộng và phát triển thêm theo nhiều hướng nhằm đạt đến sự hoàn hảo.
- Hiện tại, mã nguồn của chương trình được viết theo phong cách cấu trúc truyền thống nên có phần rắc rối và phức tạp, ít có khả năng mở rộng sau này. Vì vậy, mục tiêu đầu tiên được đặt ra là chuyển đổi hoàn toàn mã nguồn theo phong cách lập trình hướng đối tượng.
- Cải thiện chức năng mã hóa và giải mã thông tin. Người dùng có thể sử dụng các chức năng một cách dễ dàng.
TÀI LIỆU VÀ TÀI NGUYÊN SỬ DỤNG
- NHẬP MÔN XỬ LÝ ẢNH SỐ
LƯƠNG MẠNH BÁ-DƯƠNG THANH THỦY
- TECHNIQUES FOR DATA HIDING
W.BENDER – D.GRUHL.
N.MORIMOTO – A.LU.
- TRANG WEB WWW.WIKIPEDIA.COM.