L ỜI CAM ĐOAN
2.2.5. Thuật toán 3 (PCT)
Thuật toán này đƣợc đƣa ra bởi 3 tác giả Hsiang-Kuang Pan, Yu-Yuan Chen, and Yu-Chee Tseng [14]. Thuật toán cho phép nhúng nhiều bit vào 1 khối bằng cách có thể đảo 2 bit trong 1 khối. Trong thuật toán có sử dụng khóa K và ma trận trọng số W nhằm bảo đảm an toàn cho thủy vân đƣợc nhúng
- Khóa bí mật K: là một ma trận nhị phân có cùng kích thƣớc mxn với kích thƣớc của khối ảnh. Khóa đƣợc dùng một cách bí mật giữa ngƣời gửi và ngƣời nhận.
- Ma trận trọng số W cấp r: ma trận này có kích thƣớc bằng kích thƣớc của một khối ảnh (mxn) và thỏa mãn các điều kiện sau:
+ W là một ma trận số nguyên có các phần tử nằm trong khoảng (0..2r-1) với r cho trƣớc thỏa mãn điều kiện 2r<(mxn)
+ Mỗi phần tử có giá trị từ (1..2r-1) phải xuất hiện ít nhất 1 lần trong W. Với mỗi n,m,r thỏa mãn 2r-1<=mxn sẽ có:
(2 1) 1 2r 2r 1!(2r 1)mn r mn C Khả năng chọn W là rất lớn. Ví dụ với m=n=4, r=2 có 5.356.925.280 khả năng lựa chọn W. Con số này đủ lớn để làm giảm nguy cơ thủy vân bị phát hiện.
a/ Quá trình nhúng thủy vân:
- Input:
+ F: là một ma trận ảnh gốc mà ta dùng để nhúng thông tin. F đƣợc chia thành các khối nhỏ Fi, mỗi ma trận điểm ảnh Fi có kích thƣớc là (mxn), để đơn giản ta giả sử rằng F là bội của các Fi.
+ K: là một ma trận khóa ngẫu nhiên có kích thƣớc mxn
+ W: là một ma trận trọng số ngẫu nhiên, cùng kích thƣớc của K + r: số lƣợng bit có thể dấu trong mỗi khối ảnh mxn
+ B: là lƣợng thông tin cần dấu, B=b1b2…bz (mỗi bi có r bit) + d: độ chênh lệch trọng số
- Output:
Các ma trận điểm ảnh Fi’ đƣợc thay đổi từ Fi. Các Fi’ cho ra ảnh F’ đã có thông tin thủy vân.
Thuật toán sẽ thực hiện việc biến đổi mỗi Fi thành Fi’ sao cho luôn thỏa mãn điều kiện SUM((Fi’K) W ) b1b2…br(mod 2r)
Mỗi Fi bị biến đổi nhiều nhất là 2 bit. Quá trình biến đổi gồm 4 bƣớc sau:
Bước 1: Tính ma trận T=FiK
Bước 2: Tính tổng SUM(TW)
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 sau: Sw={(x,y)|(W[x,y]=w T[x,y]=0)(W[x,y]=2r-w T[x,y]=1)}
Dễ nhận thấy Sw là tập hợp các tọa độ (x,y) của ma trận Fi[x,y] sao cho khi đảo bit Fi[x,y] thì Sum ở bƣớc 2 tăng lên w. Thực vậy, ta có:
+ Trường hợp 1: nếu W[x,y]=w và T[x,y]=0
Khi đó đảo bit Fi[x,y] sẽ làm cho T[x,y]=1, do đó Sum tăng lên w
+ Trường hợp 2: Nếu W[x,y] = 2r-w và T[x,y]=1.
Khi đó đảo bit Fi[x,y] sẽ làm T[x,y] =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
Đảo bit trên Fi để đƣợc Fi’sao cho tổng Sum tính đƣợc ở bƣớc 2 khi thay Fi bởi Fi’ sẽ tăng lên d.
+ Nếu d=0, không cần thay đổi Fi
+ Nếu d0 ta thực hiện các công việc sau:
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 (x,y) bất kỳ thuộc Shd và đảo bit Fi[x,y] 3. Chọn (x,y) bất kỳ thuộc S-(h-1)d và đảo bit Fi[x,y]
Rõ ràng, để tăng Sum lên d, ta có thể chọn 2 tập khác rỗng Shd và S-(h-1)d.
Thật vậy, hai tậ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 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 rỗng và khi nói đảo một bit có vị trí thuộc tập S0 có nghĩa là không cần làm gì cả.
* Ví dụ minh họa:
Giả sử cần nhúng 12 bit thông tin “001010000001” vào F. Tiến hành: Ta chia F thành 4 khối (F1, F2 , F3 , F4 ) kích thƣớc mỗi khối 4x4.
Mỗi khối giấu 3 bit (r=3) tạo ma trận trọng số W thỏa mãn các điều kiện. Thực hiện phép cộng loại trừ từng khối với Fi K thu đƣợc ảnh T
Với mỗi khối ảnh trên ảnh T thực hiện:
Với F1 : có SUM(T1W) mod 8= 0, để giấu 3 bit đầu tiên là “001” vào F1 cần biến đổi F1 sao cho SUM(T1W) tăng lên 1. Nhận thấy T1[2,4]=0 và W[2,4]=1 nên ta có thể đảo giá trị bit F1[2,4] để đƣợc F1’
Với F2 : có SUM(T2W) mod 8 =2 và 3 bit tiếp theo cần giấu là “010” nên hiển nhiên đƣợc F2’ đã giấu bit mà không cần biến đổi.
Với F3 : có SUM(T3W) mod 8 =2, để giấu 3 bit tiếp theo là “000” vào F3 cần biến đổi F3 sao cho SUM(T3W) tăng lên 6 bằng cách đảo bit.
Với F4 : có SUM(T1W) mod 8 =4 , để giấu 3 bit cuối là “001” vào F4
cần biến đổi F4 sao cho SUM(T1W) tăng lên 1. Việc này không thể thực hiện đƣợc khi đảo 1 bit trong F4 mà phải đảo 2 bit. Chọn S10=S2=(2,2) và S5=S3={(1,3),(2,1),(3,2),(3,4)} rồi đảo 2 bit S4[2,2] và S4[3,2].
F1 F2 0 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 F3 F4
Hình 2.4. Minh họa thuật toán 3 (TCP): nhúng đoạn bit “001010000001”
b/ Quá trình tách tin
Chia ảnh kết quả F’ thành các khối Fi’ có kích thƣớc m*n. Tại mỗi khối Fi’ thực hiện các bƣớc:
Bước 1: tính ma trận Ti=Fi’^K
Bước 2: tính tổng SUM((TiW)
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 bít thủy vân đƣợc nhúng vào trong mỗi khối ảnh bằng công thức:
(b1b2....br)= [SUM((TiW)] mod 2 K= 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 W= 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 T1 T2 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 T3 T4 F1’ F2’ 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 F3’ F4’
Bước 4: chuyển đối bit thành ký tự.
c/ Nhận xét
- Thuật toán cho phép nhúng đƣợc tới log2(mn+1) bit dữ liệu vào trong mỗi khối ảnh mxn với điều kiện là 2r<mxn, bằng cách thay đổi nhiều nhất là 2 bit của một khối ảnh. Nhƣ vậy, thuật toán đã có cải tiến nhiều so với những thuật toán khác chỉ nhúng đƣợc một bit tin vào mỗi khối ảnh.
- Độ an toàn của thuật toán đƣợc nâng cao thông qua việc sử dụng hai ma trận: ma trận khóa và ma trận trọng số để nhúng và tách thủy vân.
- Thuật toán tƣơng đối dễ cài đặt
- Đây là thuật toán nhúng thủy vân vào ảnh đen trắng nên ta cũng có thể tính toán hệ số phân bố bit d để cải thiện chất lƣợng ảnh sau khi nhúng thủy vân. Thực nghiệm cho thấy nếu kết hợp với phần cải tiến này thì chất lƣợng ảnh đƣợc nâng lên đáng kể.
- Sau cải tiến có thể áp dụng thuật toán cho ảnh màu và ảnh đa cấp xám. Ngƣời ta sử dụng kỹ thuật chọn ra bit ít quan trọng nhất (LBS) của mỗi điểm ảnh để xây dựng ma trận hai chiều các bit 0, 1 nhƣ với ảnh đen trắng. Nếu áp dụng tốt thuật toán này cho ảnh màu thì có thể nói thuật toán đã đạt yêu cầu cơ bản của một ứng dụng thủy vân, nhƣ đảm bảo tính ẩn, số lƣợng thủy vân dấu đƣợc cao và an toàn.