6. Cấu trúc của luận văn
3.2.3. Thuật toán nhúng thuỷ vân
Thuỷ vân là một bộ l bít W=bl-1, . . . , b0 được nhúng vào các phần dữ liệuS0,...,Sm1.
Để việc nhúng thuỷ vân được nhiều lần trong bộ dữ liệu, độ dài thuỷ vân l được chọn sao cho: lm.
Thuật toán nhúng thuỷ vân sẽ nhúng bít bi vào phần Sk sao cho
i l
kmod . Kỹ thuật này đảm bảo mỗi bít thuỷ vân được nhúng l
m
lần trong bộ dữ liệu D.
Thuật toán nhúng thuỷ vân được mô tả như sau: Algorithm: embed_watermark
Input: Tập dữ liệu D, khoá bí mật Ks, số phân vùng m, thuỷ vân W = {b0, …, bl-1}
Output: Tập dữ liệu đã nhúng thuỷ vân Dw, ngưỡng tối ưu giải mã T*
1. Dw, Xmax, Xmin {}
2. S0, …., Sm-1 get_partition(D, Ks, m) 3. for each Partition Sk
) ( i
ij
g =
0 Nếu i thoả mãn ràng buộc gij
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
4. i k mod l
5. w
k
S encode_single_bit(bi, Sk, c, Xmax, Xmin) 6. insert w
k
S Dw
7. T* get_optimal_thershold(Xmax, Xmin) 8. return Dw, T*
Thuật toán nhúng thuỷ vân sẽ sinh ra các phần S0,...,Sm1 bằng cách gọi hàm get_partitions, sau đó với mỗi phần Sk bít thuỷ vân biđược mã hoá bằng cách sử dụng thuật toán mã hoá bít đơn (encode_single_bit). Phần thay đổi sinh ra W
k
S được chèn vào bộ dữ liệu đã nhúng thuỷ vân.
Các thống kê (Xmax, Xmin) được thu thập sau mỗi bít nhúng và được sử dụng bằng thuật toán get_optimal_threshold để tính toán ngưỡng giải mã tối ưu.
*) Các giá trị thực nghiệm mà tác giả áp dụng trong luận văn này là :
Watermark = 10101 ; //Chuỗi bit thuỷ vân dùng để nhúng
c = 0.75; // Tham số bí mật c
= 10; // Kích thƣớc nhỏ nhất của một phân vùng
l = 5 // Độ dài thuỷ vân