Định dạng tệp ảnh bitmap

Một phần của tài liệu Kỹ thuật giấu tin thuận nghịch (Trang 32)

Ảnh Bitmap được lưu trữ dưới dạng nhị phân, một tệp định dạng bitmap được chia thành các phần cơ bản như:

+ Bitmap File Header gồm 14 byte + Bitmap Info gồm 40 byte

+ Color Palette - Bảng màu (đối với ảnh đen trắng, ảnh 16 bit, 24 bit, 32 bit thì không có bảng mầu)

+ Bitmap Data: Đây chính là vùng sẽ được dùng để giấu tin (hình 2.1). BITMAP HEADER

BITMAP INFORMATION COLOR PALETTE

BITMAP DATA

Hình 2.1. Minh hoạ cấu trúc tệp ảnh bitmap

2.2.2.1.Ý nghĩa các phần trong tệp ảnh bitmap

Bitmap Header: mô tả thông tin chung về định dạng tệp bitmap, kích thước

của phần này là cố định với mọi tệp ảnh bitmap.

Bitmap Information: mô tả thông tin về ảnh được lưu trữ, độ dài của phần này

cũng cố định.

Color Palette: chính là bảng màu của ảnh bitmap, độ dài của phần này có thể

bằng không (không có bảng màu) đối với ảnh đen trắng và ảnh màu có số lượng màu lớn hơn 256 màu.

Bitmap Data: Thông tin của từng điểm ảnh, lưu trữ ảnh theo hướng từ dưới lên

2.2.2.2. Kích thước và giá trị các trường trong tệp ảnh bitmap

Bitmap Header

Phần bitmap header có độ dài cố định là: 14 byte, phần này dùng để mô tả thông tin chung về tệp như: Kiểu tệp, độ dài của tệp và một số thông tin liên quan đến tệp ảnh.

Ý nghĩa của từng trường được mô tả trong bảng 2.1

Bảng 2.1. Ý nghĩa các trường trong vùng Bitmap Header

Byte Dữ liệu Giá trị Độ tin cậy Dùng để

hiện ảnh

1 Kiểu tệp „B‟ Có Cần

2 Kiểu tệp „M‟ Có Cần

3-6 Size of the file Unsigned long Không Cần

7-10 Reserved zero Không

11-14 Byte offset to bitmap data

Số TT (tính từ 0) byte đầu của BMP data

Có Cần

Trong phần Bitmap Header có lưu trữ thông tin về kích thước của tệp, thông tin này thực sự cần thiết đối với mọi chương trình. Nhưng qua quá trình thực nghiệm đối với một số tệp thì thông tin này lại không chính xác, và trong luận văn đưa ra cách tính kích thước tệp thông qua công thức:

FileSize = Sizeof(Bitmap Header) + Sizeof(Bitmap Information)

+ Sizeof(Color Palette) + Sizeof(Bitmap Data) (2.1)

Địa chỉ vị trí (offset) của vùng dữ liệu được xác định thông qua công thức:

Đối với ảnh đen trắng và ảnh màu có số lượng màu lớn hơn 256 màu thì giá trị địa chỉ vùng data cố định là 54, vì các loại ảnh này không tổ chức bảng màu cho các điểm ảnh.

Bitmap Information

Bitmap Informaion dùng để mô tả thông tin về ảnh đang được lưu trữ trong tệp, kích thước của phần này cố định là 40 byte.

Ý nghĩa và giá trị của từng trường trong vùng Bitmap Informaion được mô tả chi tiết trong bảng 2.2.

Bảng 2.2. Ý nghĩa các trường trong vùng Bitmap Information

Byte Dữ liệu Giá trị Độ tin

cậy

Dùng để hiện

ảnh 1-4 Number of bytes in Bitmap Info 40 Không

5-8 Width of bitmap In pixels Có Cần

9-12 Height of bitmap In pixels Có Cần

13-14 Number of color planes 1 Không

15-16 Number of bits per pixels 1, 4, 8 hoặc 24

Có Cần

17-20 Type of compression Không

21-24 Size of image In bytes Không Không

25-28 Horizontal resolution Không

29-32 Vertical resolution Không

33-36 Number of colors in color Palette

Ảnh 24 bit là 0

Có Cần

Color Palette

Bảng màu là tập các màu được sử dụng trong ảnh (ảnh 8 bit màu), mỗi một màu trong bảng màu được gọi là một Entry và được lưu trữ bởi 4

byte, mỗi thành phần màu được lưu trữ bởi một byte còn một byte để dữ trữ (Reserver) và thứ tự lưu trữ là B, G, R, Reserved.

Bảng 2.3. Cấu trúc và nội dung của color palette Byte Dữ liệu Giá trị Entry - chỉ số mầu

1 Blue color value 0 – 255 0

2 Green color value 0 – 255 0

3 Red color value 0 - 255 0

4 Reserved 0 0

5 Blue color value 0 – 255 1

6 Green color value 0 – 255 1

7 Red color value 0 – 255 1

8 Reserved 0 1

9 …

Như vậy kích thước của bảng màu của ảnh n bit có thể được tính theo công thức:

Bitmap Data

Vùng dữ liệu ảnh là giá trị của các điểm ảnh, kích thước của vùng dữ liệu ảnh phụ thuộc vào độ rộng, chiều cao và kiểu ảnh. Tốc độ truy xuất bộ nhớ đối với những dữ liệu được sắp xếp trong các địa chỉ được chia ngang nhau theo cấp số 2, sẽ nhanh hơn so với những dữ liệu không được sắp xếp như vậy. Do đó dữ liệu ảnh được đóng gói theo từng hàng (rows) với kích thước là bội của dword (32-bit). Kích thước một hàng được tính như sau:

     32 * * 4 n Rowsize (2.4) Kích thước vùng ảnh có thể được tính theo công thức (2.5):

Height Rowsize

BitmapData

Sizeof( ) * (2.5) Với ảnh 8 bit màu giá trị của mỗi điểm ảnh trong vùng Data là chỉ số của màu trong bảng màu, chỉ số màu của điểm ảnh là một số nguyên có giá trị từ 0 đến

255 và được lưu trữ trong một byte. Với ảnh có số lượng màu lớn hơn 256 màu thì giá trị trong vùng Data chính là giá trị của các thành phần màu cơ bản, số lượng bit dùng để biểu diễn giá trị cho từng thành phần màu có thể sẽ khác nhau phụ thuộc vào chất lượng ảnh. Đối với ảnh 24 bit màu, mỗi thành phần màu được lưu trữ bởi

8 bit và thứ tự lưu trữ là B, G, R. Kích thước của tệp ảnh BMP được lưu trên bộ nhớ được tính bằng công thức (2.6):

Height Rowsize

n

Một phần của tài liệu Kỹ thuật giấu tin thuận nghịch (Trang 32)