Kỹ thuật thủy vân trên miền tần số sử dụng các phƣơng pháp biến đổi nhƣ Cosine rời rạc, biến đổi Fourier rời rạc, biến đổi sóng con (wavelet)… để chuyển miền không gian ảnh sang miền tần số. Thủy vân sẽ đƣợc nhúng trong miền tần số của ảnh theo kỹ thuật trải phổ trong truyền thông, kỹ thuật này đƣợc đề xuất lần đầu tiên bởi Cox cùng cộng sự trong bài báo về "Thủy vân dựa trên trải phổ bảo vệ cho dữ liệu đa phƣơng tiện" [E22], và đã đƣợc trích dẫn trong nhiều tài liệu (34.200 lần trích dẫn tính đến tháng 12 năm 2010). Đây là kỹ thuật phổ biến nhất với nhiều thuật toán đƣợc đề xuất và là phƣơng pháp tốt giải quyết vấn đề về tính bền vững của thủy vân.
Ba công thức khác nhau đƣợc đề xuất bởi Cox cùng cộng sự cho việc nhúng thủy vân thƣờng đƣợc sử dụng là: ) 1 )( ( ) ( ' i f i wi f i w i f i f'( ) () i w e i f i f '( ) ( )
Trong đó, i= 1…N, thuỷ vân là một dãy số wi độ dài N đƣợc nhúng vào một tập con các hệ số thích hợp các hệ số f1,f2,..,fN trong miền tần số của ảnh gốc. f' là giá trị các hệ số của ảnh mang chứa kết quả sau khi thay đổi để chứa thuỷ ấn. là hệ số năng lƣợng của thủy vân, hệ số này quyết định tính bền vững và vô hình của thủy vân.
Quá trình trích xuất thủy vân đƣợc tính bởi công thức sau: ) ( . ) ( ) ( * * i f i f i f wi
Trong đó, w* là thuỷ vân tách đƣợc từ ảnh f * đã trải qua các phép xử lý ảnh. Ta so sánh với thuỷ ấn ban đầu bằng cách sử dụng tƣơng quan chuẩn của dãy số làm thƣớc đo || || . || || . * * w w w w
Nếu dƣơng và gần 1 thì có thể kết luận ảnh ban đầu đã đƣợc nhúng thuỷ vân
w. Một ngƣỡng có thể đƣợc thiết lập hoặc bằng sự quan sát tƣơng quan giữa các dãy ngẫu nhiên hoặc bằng cách phân tích. Một ngƣỡng có thể chấp nhận đƣợc là
N f N S. | |' 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 F’ = S’ = SUM ((F’ + K) x W) = 10 b = S’ mod 24 = 10
41 Với S là độ lệch chuẩn (Độ lệch chuẩn đo tính biến động của giá trị mang tính thống kê. Nó cho thấy sự chênh lệch về giá trị của từng thời điểm giá so với giá trung bình, thƣờng với ảnh số có giá trị là 2 hoặc 3). Hệ số năng lƣợng thủy vân không nhất thiết phải là hằng số trên toàn bộ ảnh mà có thể biến thiên theo tính chất địa phƣơng của tín hiệu. Ta có thể áp dụng mô hình HVS (Human Visual System) với các tính chất nhƣ hiệu ứng mặt nạ,.. để có thể tìm các hệ số thích hợp cho từng vùng ảnh, do đó có thể tăng thêm lƣợng tin đƣợc giấu và tăng chất lƣợng của phƣơng pháp.
Ví dụ:
Một ví dụ đơn giản về quy trình thủy vân số đƣợc mô tả sau đây. Đây là ví dụ rất cơ bản để minh họa quy trình làm việc của thủy vân số. Biến đổi cosin rời rạc (DCT) đƣợc áp dụng trên hình ảnh gốc, biểu diễn khối đầu tiên (8x8 điểm ảnh) của hình ảnh thể hiện trong hình 2.7 Khối này đƣợc cho bởi:
Hình 2.7 Hình ảnh minh họa với khối 8x8 đầu tiên
42
Chú ý rằng hầu hết năng lƣợng của DCT của B1 là tập trung tại giá trị DC hệ số = 5,7656. Thủy vân là một chuỗi số thực giả ngẫu nhiên, đƣợc tạo ra bằng cách sử dụng bộ sinh số ngẫu nhiên và giá trị lõi (khóa), đƣợc cho bởi:
Áp dụng biến đổi DCT trên W kết quả là:
Quá trình nhúng thủy vân W nhƣ trong sơ đồ khối trong hình sau:
43 Trong đó thủy vân đƣợc nhúng theo thuật toán cộng tính:
Trong lƣợc đồ trên f là hệ số DCT của tín hiệu gốc (B1), w là một hệ số DCT tín hiệu thủy vân (W) và là năng lƣợng thủy vân, đƣợc gán bằng 0.1 ( = 0,1). Giá trị DC của tín hiệu gốc không đƣợc sửa đổi nhằm giảm thiểu việc bóp méo hình ảnh thủy vân. Do đó, thủy vân sẽ không đƣợc nhúng vào các giá trị DC. Công thức trên có thể đƣợc viết lại dƣới dạng nhƣ sau:
Trong đó B1w là tín hiệu đã đƣợc thủy vân của B, kết quả sau khi áp dụng công thức tính toán trên là:
Chú ý rằng giá trị DC của DCT (B1w) bằng với giá trị DC của DCT (B1). Để xây dựng hình ảnh thủy vân, thực hiện biến đổi ngƣợc DCT trên ma trận hai chiều vừa tính toán đƣợc:
Chúng ta dễ dàng so sánh B1w với B1 và nhận thấy có sự thay đổi rất nhỏ để nhúng thủy vân [E23].
44
2.2.2.1 Kỹ thuật thủy vân sử dụng biến đổi DCT
1). Phép biến đổi cosin rời rạc
Biến đổi cosin rời rạc viết tắt là DCT - Discrete Cosine Transform đƣợc đƣa ra bởi Ahmed và đồng nghiệp của ông vào năm 1974. Từ đó cho đến nay, nó đƣợc sử dụng rất phổ biến trong nhiều các kỹ thuật xử lý ảnh số nói riêng và các kỹ thuật xử lý tín hiệu số nói chung. Trong các kỹ thuật thuỷ vân ảnh dựa trên phép biến đổi dữ liệu ảnh sang miền tần số thì phép biến đổi DCT đƣợc sử dụng nhiều nhất. Lý do ở đây là phép biến đổi DCT đã đƣợc dùng trong dạng chuẩn ảnh JPEG. Do vậy, nếu áp dụng biến đổi DCT cho lƣợc đồ thủy vân sẽ tránh đƣợc mất thuỷ ấn do phép nén ảnh theo chuẩn JPEG.
a). Biến đổi DCT một chiều
DCT một chiều biến đổi biên độ tín hiệu tại các điểm rời rạc theo thời gian hoặc không gian thành chuỗi các hệ số rời rạc, mỗi hệ số biểu diễn biên độ của một thành phần tần số nhất định có trong tín hiệu gốc. Hệ số đầu tiên biểu diễn mức DC trung bình của tín hiệu.
Từ trái sang phải, các hệ số thể hiện các thành phần tần số không gian cao hơn của tín hiệu và đƣợc gọi là các hệ số AC. Thông thƣờng, nhiều hệ số AC có giá trị sẽ gần hoặc bằng 0.
Quá trình biến đổi DCT thuận đƣợc định nghĩa nhƣ sau:
Hàm biến đổi DCT ngƣợc một chiều đƣợc định nghĩa bởi:
Trong đó: X(k) là chuỗi kết quả của phép biến đổi. x(m) là giá trị của mẫu m ban đầu.
k làchỉ số của hệ số khai triển. m-chỉ số của mẫu. N là số mẫu có trong tín hiệu.
45
b). Biến đổi DCT hai chiều
Để tách tƣơng quan nội dung ảnh cao hơn, biến đổi DCT hai chiều (2-D) dùng cho các khối 88 giá trị các điểm chói. Quá trình biến đổi DCT thuận FDCT (forward DCT) dùng trong tiêu chuẩn JPEG đƣợc định nghĩa nhƣ sau:
Trong đó:
f(j,k) là các mẫu gốc trong khối 88 pixel. F(u,v) là các hệ số của khối DCT 88.
Phƣơng trình trên là một liên kết của hai phƣơng trình DCT một chiều, một cho tần số ngang và một cho tần số dọc. Giá trị trung bình của block 8x8 chính là hệ số thứ nhất (khi u,v= 0)
Phƣơng trình này cộng tất cả các giá trị pixel trong khối 8×8 và chia kết quả cho 8. Kết quả phép tính bằng 8 lần giá trị pixel trung bình trong khối. Do đó hệ số thứ nhất đƣợc gọi là hệ số DC. Các hệ số khác, dƣới giá trị thành phần một chiều, biểu diễn các tần số cao hơn theo chiều dọc.
Các hệ số ở về phía bên phải của thành phần một chiều biểu thị các tần số cao hơn theo chiều ngang. Hệ số trên cùng ở cận phải (0,7) sẽ đặc trƣng cho tín hiệu có tần số cao nhất theo phƣơng nằm ngang của ma trận 8×8, và hệ số hàng cuối bên trái (7,0) sẽ đặc trƣng cho tín hiệu có tần số cao nhất theo phƣơng thẳng đứng. Còn các hệ số khác ứng với những phối hợp khác nhau của các tần số theo chiều dọc và chiều ngang.
Phép biến đổi DCT hai chiều là biến đổi đối xứng và biến đổi nghịch có thể tạo lại các giá trị mẫu f(j,k) trên cơ sở các hệ số F(u,v) theo công thức sau:
46 Biến đổi DCT giống nhƣ biến đổi Fourier và các hệ số F(u,v) cũng giống nhau về ý nghĩa. Nó biểu diễn phổ tần tín hiệu đƣợc biễu diễn bằng các mẫu f(j,k). Bản thân phép biến đổi DCT không nén đƣợc số liệu, từ 64 mẫu ta nhận đƣợc 64 hệ số. Tuy nhiên, phép biến đổi DCT thay đổi phân bố giá trị các hệ số so với phân bố các giá trị mẫu.
Do bản chất của tín hiệu ảnh, phép biến đổi DCT cho ta giá trị DC tức F(0,0) thƣờng lớn nhất và các hệ số trực tiếp kề nó ứng với tần số thấp có giá trị nhỏ hơn, các hệ số còn lại ứng với tần số cao có giá trị rất nhỏ. Hình 2.9 mô tả biến đổi DCT một bức ảnh và sự phân bố năng lƣợng của ảnh với các hệ số có giá trị lớn là các điểm màu đỏ.
(a) (b)
Hình 2.9 a) ảnh gốc Lena.bmp b) Phân bố năng lượng của ảnh Lena
Theo nguyên lý chung, khi biến đổi chi tiết giữa các điểm ảnh càng lớn theo một hƣớng nào đó trong khối các điểm ảnh , hƣớng ngang, hƣớng thẳng đứng hay theo đƣờng chéo, thì tƣớng ứng theo các hƣớng đó, các hệ số biến đổi DCT cũng lớn.
Tóm lại, DCT làm giảm độ tƣơng quan không gian của thông tin trong khối. Điều đó cho phép biểu diễn thích hợp ở miền DCT do các hệ số DCT có xu hƣớng có phần dƣ thừa ít hơn. Hơn nữa, các hệ số DCT chứa thông tin về nội dung tần số không gian của thông tin trong block. Nhờ các đặc tính tần số không gian của hệ thống nhìn của mắt ngƣời, các hệ số DCT có thể đƣợc mã hoá phù hợp, chỉ các hệ số DCT quan trọng nhất mới đƣợc mã hoá để truyền đi.
Khối hệ số DCT có thể chia thành 3 miền, miền tần số thấp, chứa các thông tin quan trọng ảnh hƣởng đến tri giác, miền tần số giữa, và miền tần số cao. Các thông tin trong miền tần số cao thƣờng không mang tính tri giác cao, khi nén JPEG thì thƣờng loại bỏ thông tin trong miền này [E25, 26].
47
Hình 2.10 Phân chia 3 miền tần số ảnh của phép biến đổi DCT
Trong các thuật toán thuỷ vân, miền hệ số DCT tần số cao thƣờng không đƣợc sử dụng do nó thƣờng không bền vững với các phép xử lý ảnh, hoặc nén ảnh JPEG. Miền tần số cao cũng khó đƣợc sử dụng do một sự thay đổi dù nhỏ trong miền này cũng dẫn đến chất lƣợng tri giác của ảnh. Vì vậy, miền tần số trung bình thƣờng hay đƣợc sử dụng nhất và cũng cho kết quả tốt nhất. Trong thuật toán sau đây cũng sử dụng miền tần số trung bình ( phần đƣợc bôi đen trong hình vẽ ) để nhúng thủy vân.
2). Lược đồ thủy vân sử dụng biến đổi DCT
a). Quá trình nhúng thủy vân
Thuật toán dƣới đây sẽ sử dụng phƣơng pháp nhúng thuỷ vân trong miền tần số của ảnh, giải tần đƣợc sử dụng để chứa tín hiệu thuỷ vân là miền tần số ở giữa của một khối DCT 8x8.
Trong đó, các khối DCT 8x8 là những khối ảnh cùng kích thƣớc đã đƣợc chọn ra ngẫu nhiên từ ảnh ban đầu và đƣợc áp dụng phép biến đổi cosin rời rạc DCT để chuyển sang miền tần số. Mỗi tín hiệu thuỷ vân sẽ đƣợc chứa trong một khối.
Input:
+ Một chuỗi các bit thể hiện bản quyền.
+ Một ảnh.
Output:
+ Một ảnh sau khi thủy vân.
+ Khóa để tách thủy vân. Low
Middle band
48
Các bước thực hiện
Bước 1: Ảnh F có kích thƣớc m × n sẽ đƣợc chia thành (m × n) / 64 khối 8 ×8, mỗi bit
của thủy vân sẽ đƣợc giấu trong khối Bk
Bước 2: Chọn một khối bất kì Bk và biến đổi DCT khối đó thu đƣợc Ck
Ck = DCT(Bk)
Bước 3: Chọn hai hệ số ở vị trí bất kì trong miền tần số giữa của khối Ck, gọi hai hệ số
đó là Ck[i, j] = Ck[p, q].
Bước 4: Tính độ lệch d = ||Ck[i, j]| - |Ck[p, q]|| mod a.
Trong đó a là một tham số thỏa mãn a = 2 (2t + 1), với t là một số nguyên dƣơng.
Bước 5: Bit bk sẽ đƣợc nhúng vào khối Ck sao cho thỏa mãn điều kiện:
1 2 1 2 t d t d
Bước 6: Nếu d < 2t + 1 và bk = 1 thì trong hệ số DCT Ck[i,j] hoặc Ck[p,q] có giá trị
tuyệt đối lớn hơn sẽ bị thay đổi để thỏa d ≥ 2t + 1 theo công thức: Max (|Ck[i, j]|, |Ck[p, q]|) + (INT(0.75a) – d)
Hệ số đƣợc chọn sẽ đƣợc cộng thêm một lƣợng là (INT(0.75a) – d) Min (|Ck[i, j]|, |Ck[p, q]|) - (INT(0.75a) + d)
Hệ số đƣợc chọn sẽ đƣợc trừ đi lƣợng là (INT(0.75a) + d)
Bước 7: Nếu d ≥ 2t + 1 và bk = 0 thì một trong hai hệ số DCT Ck[i, j] hoặc Ck[p, q] có
giá trị tuyệt đối lớn hơn sẽ bị thay đổi để thỏa mãn d < 2t + 1 theo công thức: Max (|Ck[i, j]|, |Ck[p, q]|) - (d - INT(0.75a))
Hệ số đƣợc chọn sẽ bị trừ đi một lƣợng là (d - INT(0.75a) Min (|Ck[i, j]|, |Ck[p, q]|) + (INT(0.75a) - d)
Hệ số đƣợc chọn sẽ đƣợc cộng thêm một lƣợng là (INT(0.75a) - d)
Bước 8: Thực hiện phép biến đổi ngƣợc IDCT đối với khối Ck, Bk = IDCT(Ck).
Bước 9: Ghép các khối ảnh B’k để đƣợc ảnh chứa thủy vân F’.
Quá trình nhúng thủy vân đƣợc mô tả qua sơ đồ sau: Nếu bk = 1 Nếu bk = 0
49
Hình 2.11 Qui trình nhúng thủy vân DCT
Ví dụ:
Giả sử ta cần giấu một bit thủy vân b = 0 vào khối B 8 × 8 đƣợc cho dƣới đây. Ta chọn a = 26 = 2(2 × 6 + 1), do đó t = 6.
B =
Biến đổi DCT(B) ta thu đƣợc khối nhƣ sau:
C = 33 84 66 58 15 159 183 146 28 75 15 37 161 157 136 134 29 59 44 65 192 166 144 139 15 15 15 67 113 123 192 170 88 76 15 102 168 104 199 177 19 10 15 218 140 198 164 141 15 15 15 179 241 235 190 107 15 17 89 181 168 234 190 190 869 -438 -102 115 18 7 -62 -41 -110 64 143 -18 -78 -62 -2 38 30 -4 -37 -7 -67 8 55 -42 -7 27 22 -10 -3 57 -26 -57 -3 -2 109 -69 -33 41 6 9 -23 -27 -26 9 -29 33 6 -10 12 5 -8 -46 -13 33 38 -42 42 33 5 28 5 -31 -24 40
50
+ Trong miền tần số trung bình của khối C, ta chọn hai hệ số bất kỳ, giả sử là C[2,3] = 143 và C[6,2] = -27.
+ Tính độ lệch d = ||143| - |-27|| mod 26 = 116 mod 26 = 12.
+ Với bit thủy vân b = 0 thì ta phải thay đổi một trong hai hệ số C[2,3] = 143 hoặc C[6,2] = -27 đã chọn để thu đƣợc d < 2t + 1. Vì C[2,3] = 143 có giá trị tuyệt đối lớn hơn C[6,2], theo công thức (2,7) ta tính giá trị mới của C[2,3] là:
+ C[2,3] = C[2,3] – (d – INT(0.25a)) = 143 – (14 – INT(0.25 × 26)) = 135
+ Khi đã thay đổi hệ số C[2,3] = 135 ta thực hiện phép biến đổi ngƣợc IDCT(C) và thu đƣợc khối B’ nhƣ sau:
31 83 67 60 17 160 183 143 27 74 16 38 163 158 136 132 28 59 48 66 193 167 144 138 B’ = 15 15 15 67 114 123 192 169 88 76 15 102 168 104 200 177 20 10 15 27 139 197 165 141 17 16 15 178 240 235 191 109 17 18 88 178 166 232 191 190
b). Quá trình tách thủy vân
Input
+ Ảnh F’ đã nhúng thủy vân.
+ Khóa tách thủy vân K.
Output
+ Thủy vân W đã nhúng biểu diễn qua dãy bit bk.
Các bước thực hiện
Bước 1: Chia ảnh F’ (đã nhúng thủy vân) thành các khối B’k.
Bước 2: Biến đổi DCT các khối B’k.
Bk = DCT(B’k.)
Bước 3: Lấy ra vị trí hai hệ số đã biến đổi Bk[i,j] và Bk[p,q]
Bước 4: Tính d = | Bk[i,j] - Bk[p,q |mod a với a = 2(2t+1) chọn khi nhúng thủy vân.
Bước 5: Nếu d ≥ 2t + 1 thì đƣợc bit bk = 1 ngƣợc lại bk = 0.
51
Hình 2.12 Qui trình trích xuất thủy vân
Ví dụ:
Với khối B’ ở ví dụ trên, quá trình tách thủy vân nhƣ sau:
Ta thực hiện phép biến đổi ngƣợc IDCT của khối B’ để thu đƣợc khối B: 869 -438 -102 115 18 7 -62 -41