Ảnh mành

Một phần của tài liệu luận văn thạc sĩ tìm hiểu các kỹ thuật giấu tin trong ảnh (Trang 31)

Ảnh Bitmap đƣợc xây dựng từ các điểm ảnh màu (pixels) là một khối nhỏ màu hình chữ nhật. Tất cả các điểm màu đƣợc sắp xếp với nhau theo một trật tự tạo thành ảnh. Có hai phƣơng pháp để tạo ra các điểm ảnh:

- Phƣơng pháp thứ nhất, dùng phần mềm vẽ trực tiếp từng điểm ảnh một, ví sử dụng phần mềm Paint.

- Phƣơng pháp thứ hai là số hoá các ảnh thu từ thiết bị quang học, ví dụ sử dụng phần mềm Photo shop. Các định dạng ảnh BMP, PCX, TIFF có cấu trúc theo kiểu này.

Thành phần cơ bản của ảnh mành gồm:

 Tiêu đề đầu (Header): thông tin về ảnh (kích thƣớc, định dạng, ...)  Bảng màu (Palette): cho những ảnh nhỏ hơn hoặc bằng 8 bit màu.

 Dữ liệu (Data): nằm ngay sau phần bảng màu của ảnh, chứa giá trị màu của điểm ảnh.

 Tiêu đề cuối (Footer)

Tiêu đề đầu: lƣu cấu trúc của ảnh dƣới dạng nhị phân hay mã ASCII.

Bảng màu: là mảng một chiều, chứa chỉ mục các màu của ảnh. Mỗi điểm ảnh có lƣu con trỏ đến chỉ mục trên bảng màu. Kích thƣớc của bảng màu đƣợc tính từ độ sâu điểm ảnh (pixel depth), ví dụ:

4 bit pixel: 3 byte /màu x 24 màu = 48 B 8 bit pixel: 3 byte /màu x 28 màu = 768 B

16 bit pixel : 3 byte /màu x 216 màu = 196608 B = 192 KB Bảng màu có thể đƣợc bố trí:

- Theo điểm ảnh (pixel orientiert): (RGB) (RGB) (RGB) ...

Dòng quét 0 Dòng quét 1 Dòng quét 2

Bảng màu có thể không sắp xếp hay đƣợc sắp xếp thứ tự theo gam màu, theo độ chói.

Hình 16. Bảng màu cơ sở của Paint Shop Pro 8 đã sắp thứ tự

- Kích thƣớc bảng màu: 48 b

- Cột đầu tiên chứa các màu gốc và màu bù (R Y G C B M) - Cột cuối cùng chứa 6 mức xám

Dữ liệu: nội dung của ảnh, đƣợc lƣu theo hai phƣơng pháp - Dòng quét (scan line).

- Mặt phẳng màu riêng (Planar data).

Phƣơng pháp chung để lấy mẫu là quét ảnh theo hàng và mã hoá từng hàng. Điểm ảnh có thể đƣợc lƣu theo cách nhƣ mô tả ở hình 17 và 18.

Hình 18. Quét dải các dòng liên tiếp (2 dòng 1 dải)

Tiêu đề cuối: chứa các thông tin đặc biệt nhƣ tính tƣơng thích với các phiên bản cũ 2.5. Các định dạng ảnh thông dụng.

Ảnh thu đƣợc sau quá trình số hoá có nhiều loại khác nhau, phụ thuộc vào kỹ thuật số hoá ảnh. Đƣợc chia thành 2 loại: ảnh đen trắng và ảnh màu. Sau đây là một số định dạng ảnh thông dụng hay dùng trong quá trình xử lý ảnh hiện nay.

2.5.1. Định dạng ảnh IMG

Ảnh IMG là ảnh đen trắng. Phần đầu của ảnh IMG có 16 bytes chứa các thông tin cần thiết :

+ 6 bytes đầu: dùng để đánh dấu định dạng ảnh IMG. Giá trị của 6 bytes này viết dƣới dạng Hexa: 0x0001 0x0008 0x0001.

+ 2 bytes tiếp theo: chứa độ dài mẫu tin. Đó là độ dài của dãy các bytes kề liền nhau mà dãy này sẽ đƣợc lặp lại một số lần nào đó. Số lần lặp này sẽ đƣợc lƣu trong byte đếm. Nhiều dãy giống nhau đƣợc lƣu trong một byte. Đó là cách lƣu trữ nén.

+ 4 bytes tiếp: mô tả kích cỡ pixel

+ 2 bytes tiếp : số pixel trên một dòng ảnh + 2 bytes cuối: số dòng ảnh trong ảnh.

Ảnh IMG đƣợc nén theo từng dòng. Mỗi dòng bao gồm các gói (pack). Các dòng giống nhau cũng đƣợc nén thành một gói. Có 4 loại gói sau:

Loại 1: Gói các dòng giống nhau

Quy cách gói tin này nhƣ sau: 0x00 0x00 0xFF Count. Ba byte đầu cho biết Dòng quét 1

Dòng quét 2 Dòng quét 3 Dải 1

Loại 2: Gói các dãy giống nhau

Quy cách gói tin này nhƣ sau: 0x00 Count. Byte thứ hai cho biết số các dãy giống nhau đƣợc nén trong gói. Độ dài của dãy ghi ở đầu tệp.

Loại3: Dãy các pixel không giống nhau, không lặp lại và không nén được.

Qui cách nhƣ sau: 0x80 Count. Byte thứ hai cho biết độ dài dãy các pixel không giống nhau không nén đƣợc.

Loại 4: Dãy các pixel giống nhau

Tuỳ theo các bit cao của byte đầu đƣợc bật hay tắt. Nếu bit cao đƣợc bật (giá trị 1) thì đây là gói nén các bytes chỉ gồm bit 0, số các byte đƣợc nén đƣợc tính bởi 7 bit thấp còn lại. Nếu bit cao tắt (giá trị 0) thì đây là gói nén các byte gồm toàn bit 1. Số các byte đƣợc nén đƣợc tính bởi 7 bit thấp còn lại.

Các gói tin của file IMG phong phú nhƣ vậy là do ảnh IMG là ảnh đen trắng, do vậy chỉ cần 1 bit cho 1 pixel thay vì 4 hoặc 8 nhƣ đã nói ở trên. Toàn bộ ảnh chỉ có những điểm sáng và tối tƣơng ứng với giá trị 1 hoặc giá trị 0. Tỷ lệ nén của kiểu định dạng này là khá cao.

2.5.2. Định dạng ảnh PCX

Định dạng ảnh PCX là một trong những định dạng loại cổ điển nhất. Nó sử dụng phƣơng pháp mã hoá loạt dài RLC (Run-Length-Encoded) để nén dữ liệu ảnh. Quá trình nén và giải nén đƣợc thực hiện trên từng dòng ảnh. Tệp PCX gồm 3 phần: đầu tệp (header), dữ liệu ảnh (image data) và bảng màu mở rộng. Thực tế, phƣơng pháp giải nén PCX kém hiệu quả hơn so với kiểu IMG.

Định dạng ảnh PCX thƣờng đƣợc dùng để lƣu trữ ảnh vì thao tác đơn giản, cho phép nén và giải nén nhanh. Tuy nhiên vì cấu trúc của nó cố định nên trong một số trƣờng hợp nó làm tăng kích thƣớc lƣu trữ.

2.5.3. Định dạng ảnh TIFF (Targed Image File Format)

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. Cách tổ chức này làm giảm bộ nhớ cần thiết cho việc đọc tệp. Việc giải nén đƣợc thực hiện theo bốn kiểu khác nhau đƣợc lƣu trữ trong byte dấu hiệu nén. Mặc dù file ảnh TIFF là dùng để giải quyết vấn đề khó mở rộng của file PCX. Tuy nhiên, với cùng một ảnh thì việc dùng file PCX chiếm ít không gian nhớ hơn.

2.5.4. Định dạng ảnh GIF (Graphics Interchanger Format)

Cách lƣu trữ kiểu PCX có lợi về không gian lƣu trữ: với ảnh đen trắng kích thƣớc tệp có thể nhỏ hơn bản gốc từ 5 đến 7 lần; với ảnh 16 màu, kích thƣớc ảnh nhỏ hơn kích thƣớc ảnh gốc 2 - 3 lần, có trƣờng hợp kích thƣớc ảnh xấp xỉ bằng ảnh gốc; với ảnh 256 màu thì nó bộc lộ rõ khả năng nén rất kém. Điều này có thể lý giải nhƣ sau: khi số màu tăng lên, các loạt dài xuất hiện ít hơn và vì thế, lƣu trữ theo kiểu PCX không còn lợi nữa.

Định dạng ảnh GIF do hãng Computer Incorporated (Mỹ) đề xuất lần đầu tiên vào năm 1990. Với định dạng GIF, khi số màu trong ảnh càng tăng thì ƣu thế của định dạng GIF càng nổi trội. Những ƣu thế này có đƣợc là do GIF tiếp cận các thuật toán nén LZW. Dạng ảnh GIF cho chất lƣợng cao, độ phân giải đồ hoạ tốt, cho phép hiển thị trên hầu hết các phần cứng đồ hoạ.

2.5.5. Định dạng ảnh JPEG (Joint Photographic Experts Group)

JPEG viết tắt của Joint Photographic Experts Group, một tổ chức tạo ra định dạng ảnh đồ họa. JPEG sử dụng thuật toán nén mất thông tin. Ảnh JPEG có tối đa 16 triệu màu (24-bit), cung cấp thông tin định rõ tỷ lệ, mức độ nén, cho phép lƣu lại từng phần trên trang Web gọi là một "progressive JPEG."

2.6. Nén ảnh

Sau bƣớc số hoá, ảnh sẽ đƣợc lƣu trữ hay chuyển sang giai đoạn phân tích. Để tiết kiệm bộ nhớ máy tính, ngƣời ta chỉ lƣu các đặc tả đặc trƣng của ảnh nhƣ biên ảnh (boundary) hay các vùng ảnh (region). Công việc này đƣợc gọi là "nén dữ liệu" hay giảm độ dƣ thừa, mã hoá ảnh gốc.

% 100   r 1 nÐn lÖ TØ

Nén dữ liệu là quá trình làm giảm lƣợng thông tin "dƣ thừa" trong dữ liệu gốc, do vậy lƣợng thông tin thu đƣợc sau nén thƣờng nhỏ hơn dữ liệu gốc rất nhiều (khoảng 10%), những kỹ thuật nén mới nhƣ fratal cho tỉ lệ nén đến 30%. Tuỳ thuộc vào ứng dụng để chọn thuật toán nén theo một số các chỉ tiêu nhƣ:

- Tỉ lệ nén cao.

- Đảm bảo chất lƣợng, không làm mất thông tin ảnh. - Tốc độ nén và tải nén cao.

- Phù hợp với các qui cách nén hiện có.

2.6.1. Tỉ lệ nén (Compression rate)

r là tỉ số nén = kích thƣớc dữ liệu gốc / kích thƣớc dữ liệu thu đƣợc.

2.6.2. Một số phương pháp nén ảnh

Kích thƣớc ảnh gốc = Số phần tử x độ dài bit tối đa

- Phƣơng pháp Huffman:

Nguyên tắc

Phƣơng pháp mã hoá Huffman là phƣơng pháp dựa vào mô hình thống kê. Dựa vào dữ liệu gốc, ta tính tần suất xuất hiện của các ký tự. Việc tính tần xuất đƣợc thực hiện bằng cách duyệt tuần tự tệp gốc từ đầu đến cuối. Việc xử lý ở đây tính theo bit. Trong phƣơng pháp này, ta gán cho các ký tự có tần suất cao một từ mã ngắn, các ký tự có tần xuất thấp từ mã dài. Nói một cách khác, các ký tự có tần xuất càng cao đƣợc gán mã càng ngắn và ngƣợc lại. Rõ ràng với cách thức này, ta đã làm giảm chiều dài trung bình của từ mã hoá bằng cách dùng chiều dài biến đổi. Tuy nhiên, trong một số tình huống khi tần suất là rất thấp, ta có thể không đƣợc lợi một chút nào, thậm chí còn bị thiệt một ít bit.

Kích thƣớc ảnh sau nén = Tổng (số phần tử x độ dài bit tƣơng ứng)

Thuật toán 100% - 1        r 1 nÐn qu¶ HiÖu

Thuật toán bao gồm 2 bƣớc chính:

- Giai đoạn tính tần suất của các ký tự trong dữ liệu gốc: Duyệt tệp gốc một cách tuần tự từ đầu đến cuối để xây dựng bảng mã. Tiếp sau đó là sắp xếp lại bảng mã theo thứ tự tần suất giảm dần.

- Giai đoạn thứ hai: mã hoá. Duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép 2 phần tử có tần suất thấp nhất thành một phần tử duy nhất. Phần tử này có tần xuất bằng tổng 2 tần suất thành phần. Tiến hành cập nhật lại bảng và đƣơng nhiên loại bỏ 2 phần tử đã xét. Quá trình đƣợc lặp lại cho đến khi bảng chỉ có một phần tử. Quá trình này gọi là quá trình tạo cây mã Huffman vì việc tập hợp đƣợc tiến hành nhờ một cây nhị phân với 2 nhánh. Phần tử có tần suất thấp ở bên phải, phần tử kia ở bên trái. Với cách tạo cây này, tất cả các bit dữ liệu/ ký tự là nút lá; các nút trong là các nút tổng hợp. Sau khi cây đã tạo xong, ngƣời ta tiến hành gán mã cho các nút lá. Việc mã hoá rất đơn giản: mỗi lần xuống bên phải ta thêm 1 bit "1" vào từ mã; mỗi lần xuống bên trái ta thêm 1 bit "0". Tất nhiên có thể làm ngƣợc lại, chỉ có giá trị mã thay đổi còn tổng chiều dài là không đổi. Cũng chính do lý do này mà cây có tên gọi là cây mã Huffman nhƣ trên đã gọi.

Giải nén:

Quá trình giải nén tiến hành theo chiều ngƣợc lại khá đơn giản. Ngƣời ta cũng phải dựa vào bảng mã tạo ra trong giai đoạn nén (bảng này đƣợc giữ lại trong cấu trúc đầu của tệp nén cùng với dữ liệu nén).

- Phƣơng pháp nén loạt dài RLC (Run Length Coding):

Phƣơng pháp mã hoá loạt dài lúc đầu đƣợc phát triển dành cho ảnh số 2 mức: mức đen (1) và mức trắng (0) nhƣ các văn bản trên nền trắng, trang in, các bức vẽ kỹ thuật.

Nguyên tắc của phƣơng pháp là phát hiện một loạt các bít lặp lại, thí dụ nhƣ một loạt các bit 0 nằm giữa hai bit 1, hay ngƣợc lại, một loạt bit 1 nằm giữa hai bit 0. Phƣơng pháp này chỉ có hiệu quả khi chiều dài dãy lặp lớn hơn một ngƣỡng nào đó. Dãy các bit lặp gọi là loạt hay mạch (run). Tiếp theo, thay thế chuỗi đó bởi một

chuỗi mới gồm 2 thông tin: chiều dài chuỗi và bit lặp (ký tự lặp). Nhƣ vậy, chuỗi thay thế sẽ có chiều dài ngắn hơn chuỗi cần thay.

Cần lƣu ý rằng, đối với ảnh, chiều dài của chuỗi lặp có thể lớn hơn 255. Nếu ta dùng 1 byte để mã hoá thì sẽ không đủ. Giải pháp đƣợc dùng là tách chuỗi đó thành 2 chuỗi: một chuỗi có chiều dài 255, chuỗi kia là số bit còn lại.

Kích thƣớc ảnh sau nén = Số loạt x Kích thƣớc cực đại của các loạt

Phƣơng pháp RLC đƣợc dùng cho ảnh loại PCX, BMP. Thuật toán RLC thuộc loại nén bảo toàn dữ liệu.

- Phƣơng pháp LZW (Lempel Ziv Welch):

Khái niệm nén từ điển đƣợc Jacob Lempel và Abraham Ziv đƣa ra lần đầu tiên vào năm 1977, sau đó phát triển thành một họ giải thuật nén từ điển LZ. Năm 1984, Terry Welch đã cải tiến giải thuật LZ thành một giải thuật mới hiệu quả hơn và đặt tên là LZW

Bản chất của kỹ thuật nén LZW là dựa vào sự lặp lại của một nhóm điểm chứ không phải loạt dài giống nhau. Ngƣời ta xây dựng từ điển lƣu các chuỗi ký tự có tần suất lặp lại cao và thay thế bằng từ mã tƣơng ứng mỗi khi gặp lại chúng. Do vậy, dữ liệu càng lớn thì sự lặp lại càng nhiều, hiệu quả nén càng cao. Mức độ hiệu quả của nén LZW không phụ thuộc vào số bit màu của ảnh.

Kích thƣớc ảnh sau nén = Tổng (số phần tử x độ dài bit bằng nhau)

Thuật toán nén LZW hay hơn các thuật toán trƣớc ở kỹ thuật tổ chức từ điển, cho phép nâng cao tỉ lệ nén. Kỹ thuật này áp dụng đƣợc cho tất cả các loại tập tin nhị phân, là chuẩn nén của ảnh loại TIFF, GIF.

Nén ảnh vừa giúp giảm thiểu kích thƣớc ảnh, đồng thời cũng đang đƣợc nghiên cứu cho hƣớng ứng dụng giấu thông tin.

2.7. Một số tiêu chí đánh giá kỹ thuật giấu thông tin trong ảnh số

2.7.1 Tính vô hình

Nhƣ đã nêu, kỹ thuật giấu thông tin trong ảnh phụ thuộc rất nhiều vào hệ thống thị giác của con ngƣời. Tính vô hình hay không cảm nhận đƣợc (imperceptible) của mắt ngƣời thƣờng giảm dần ở những vùng ảnh có màu xanh tím, thuỷ vân ẩn thƣờng đƣợc chọn giấu trong vùng này.

2.7.2. Khả năng giấu thông tin

Khả năng giấu thông tin (Hiding Capacity) hay lƣợng thông tin giấu đƣợc (dung lƣợng) trong một ảnh đƣợc tính bằng tỉ lệ giữa lƣợng thông tin giấu và kích thƣớc của ảnh. Các thuật toán giấu tin đều cố gắng đạt đƣợc mục tiêu giấu đƣợc nhiều tin và gây nhiễu không đáng kể. Thực tế, ngƣời ta luôn phải cân nhắc giữa dung lƣợng tin cần giấu với các tiêu chí khác nhƣ chất lƣợng (Quality), tính bền vững (Robustness) [13] của thông tin giấu.

2.7.3. Chất lượng của ảnh có giấu thông tin

Chất lƣợng của ảnh có giấu tin đƣợc đánh giá qua sự cảm nhận của mắt ngƣời. Nên chọn những ảnh có nhiễu, có những vùng góc cạnh hoặc có cấu trúc, làm ảnh môi trƣờng vì mắt thƣờng ít nhận biết đƣợc sự biến đổi, khi có tin giấu, trên những ảnh này.

Chất lƣợng ảnh có giấu thông tin còn đƣợc đánh giá một cách chính xác thông qua một tỷ lệ đƣợc viết tắt là PSNR (Peak Signal to Noise Ratio).

Trong đó MSE (Mean Squared Error ) là sai số bình phƣơng trung bình đƣợc tính bằng công thức

Trong đó I là ảnh gốc và K là ảnh sau khi giấu thông tin; m và n là kích thƣớc của ảnh. Nếu giá trị của PSNR giữa ảnh gốc và ảnh sau khi giấu nằm trong khoảng từ 30 đến 50 dB, thì bức ảnh sau khi giấu đƣợc đánh giá là đạt chất lƣợng. Tuy nhiên giá trị dB càng cao thì càng tốt.

2.7.4. Tính bền vững của thông tin được giấu

Tính bền vững thể hiện qua việc các thông tin giấu không bị thay đổi khi ảnh mang tin phải chịu tác động của các phép xử lý ảnh nhƣ nén, lọc, biến đổi tỉ lệ, …

Hình 19. Quan hệ giữa chất lƣợng, dung lƣợng và tính bền vững

2.7.5. Thuật toán và độ phức tạp tính toán

Cần nắm đƣợc một số kiến thức cơ bản về cấu trúc của ảnh để chọn ra thuật

Một phần của tài liệu luận văn thạc sĩ tìm hiểu các kỹ thuật giấu tin trong ảnh (Trang 31)