Thuật toán:

Một phần của tài liệu Tiểu luận môn toán học cho khoa học máy tính TÌM HIỂU GIẤU TIN TRONG ẢNH VÀ ỨNG DỤNG GIẤU TIN TRONG ẢNH BITMAP (Trang 30)

d) The Pixel Data:

3.2Thuật toán:

Sử dụng khóa K là ma trận khóa kích thước m x n (ma trận nhị phân) dùng chung bởi người gửi và người nhận kết hợp với ma trận trọng số cấp r, kích thước m x n cũng được dùng chung bởi người gửi và người nhận (do Yu-Yuan Chen, Hsiang-KangPan and Yu-Chee Tseng đề xuất: gọi tắt là CPT)

a.Thuật toán CPT

Với khối ảnh Fi, khóa K, ma trận trọng số W ta cần giấu r bit thông tin b1b2...br vào Fi bằng cách đảo nhiều nhất 2 bit của Fi. Mục đích của ta là biến đổi Fi thành F’i sao cho nó thỏa mãn yêu cầu sau:

Sum((F’i⊕ K) ⊗ W) ≡ b1b2...br (mod 2r). [6]

Mã hóa: Quá trình biến đổi gồm bốn bước sau:  Bước 1: tính ma trận T = Fi⊕ K.

Bước 2: tính Sum = Sum((Fi⊕ K) ⊗ W).

Bước 3: với ma trận T và với mọi w = 1,2,....,2r-1 ta xác định tập hợp Sw như sau:

Sw = {(j,k)|( W[j,k] = w Λ T[j,k] = 0) ∨ ( W[j,k] = 2r-w Λ T[j,k] = 1)}

Dễ nhận thấy Sw là tập hợp các tọa độ (j,k) của ma trận Fi[j,k] sao cho khi đảo bit Fi[j,k] thì Sum ở bước 2 tăng lên w. Thực vậy ta có:

- Trường hợp 1: nếu W[j,k] = w và T[j,k] = 0

Khi đó đảo bit Fi[j,k] sẽ làm cho T[j,k] = 1, do đó Sum tăng lên w - Trường hợp 2: nếu W[j,k] = 2r – w và T[j,k] = 1

Khi đó đảo bit Fi[j,k] sẽ làm cho T[j,k] = 0, do đó Sum sẽ giảm đi 2r – w, tức là tăng lên w theo mod 2r.

Quy ước rằng với mọi w’ ≡ w (mod 2r) trong đó w = 1,2,....,2r – 1, ta có Sw’ = Sw .  Bước 4: ký hiệu: d = (b1b2....br) – Sum((Fi⊕ K) ⊗ W) (mod 2r).

Ta cần thực hiện việc đảo bit trên Fi để được F’i sao cho tổng Sum tính được ở bước 2 khi thay Fi bởi F’i sẽ tăng lên d.

- Nếu d = 0: không thay đổi Fi . - Nếu d ≠ 0:

1. Chọn h bất kỳ thuộc tập {0,1,2,...,2r - 1}sao cho Shd ≠ ∅ và S-(h - 1)d ≠∅

2. Chọn (j,k) bất kỳ thuộc Shd và đảo bit Fi[j,k] (nếu là 0 thì đổi thành 1 và ngược lại, 1 đổi thành 0).

3. Chọn (j,k) bất kỳ thuộc S-(h - 1)d và đảo bit Fi[j,k].

Rõ ràng là để tăng Sum lên d, ta có thể chọn hai tập khác rỗng Shd và S-(h - 1)d. Thật vậy, hai tập hợp này chứa các vị trị bit trong khối Fi mà ta có thể đảo để tăng Sum lên hd và –(h - 1)d một cách tương ứng, kết quả cuối cùng là Sum sẽ tăng lên là hd + (-(h - 1)d)=d.

Tương tự như các tập Sw khác ta cũng có thể coi tập S0 là tập chứa các vị trí mà khi đảo những bit có vị trí này trên Fi thì sẽ tăng Sum lên 0. Kết quả này cũng đạt được nếu ta không đảo bất kỳ bit nào trên Fi. Vì vậy ta có thể coi S0 là tập trống và khi nói đảo 1 bit có vị trí thuộc tập S0 có nghĩa là không cần làm gì cả.

Khi nhận được bức ảnh kết quả, người nhận chỉ cần tách các bit ít đặc trưng nhất của từng điểm ảnh và chia thành từng khối F’i kích thước m x n.

Quá trình biến đổi gồm ba bước sau:  Bước 1: tính ma trận T = F’i⊕ K

Bước 2: tính tổng Sum = Sum((Fi⊕ K) ⊗ W)

Bước 3: sử dụng ma trận khóa và ma trận trọng số để tính giá trị của r bit thông tin được giấu trong mỗi khối ảnh bằng công thức sau:

(b1b2....br) = Sum((Fi⊕ K) ⊗ W) (mod 2r) Ví dụ:

cho F gồm (F1 F2 F3 F4), K, W như sau:

Giả sử ta cần giấu 8 bit thông tin B = 11011101 vào F. Chia F thành bốn khối kích thước 3x3 F1, F2, F3, F4, mỗi khối ta sẽ giấu r = 2 bit của B.

Thực hiện phép hoặc loại trừ Fi với K thu được Ti, nhân với W rồi tính tổng các phần tử ma trận kết quả:

Với F1 ta có S = Sum((Fi⊕ K) ⊗ W) = 14 và (S mod 2) = 2, để giấu 2 bit đầu tiên của B là 11 vào F1 ta cần biến đổi F1 sao cho Sum tăng lên 1. Vì (F1⊕ K)[3,3] = 0 và W[3,3] = 1, ta có thể sửa F1[3,3] để được F’i.

Với F2 ta có S = Sum((Fi⊕ K) ⊗ W) = 9 và (S mod 4) = 1, để giấu 2 bit tiếp theo của B là 01 thì không cần phải thực hiện biến đổi trên F2.

Với F3 ta có S = Sum((Fi⊕ K) ⊗ W) = 13 và (S mod 4) = 1, để giấu 2 bit tiếp theo của B là 11 ta cần biến đổi sao cho Sum tăng lên 2. Vì (F3⊕ K)[1,2] = 0 và W[1,2] = 2, ta có thể sửa F3[1,2] để được F’3 . (adsbygoogle = window.adsbygoogle || []).push({});

Với F4 ta có S = Sum((Fi⊕ K) ⊗ W) = 22 và (S mod 4) = 2, để giấu 2 bit tiếp theo của B là 01 ta cần biến đổi sao cho Sum tăng lên 3 hoặc Sum giảm xuống 1, việc này không thể thực hiện bằng cách đảo 1 bit trong F4 mà phải cần tới 2 bit. Ta chọn đảo 2 bit F4[1,2] và F4[3,2]..

Một phần của tài liệu Tiểu luận môn toán học cho khoa học máy tính TÌM HIỂU GIẤU TIN TRONG ẢNH VÀ ỨNG DỤNG GIẤU TIN TRONG ẢNH BITMAP (Trang 30)