1.6 KỸ THUẬT THỦY VÂN TRÊN ẢNH
1.6.2 Một số kỹ thuật thủy vân trên ảnh
Nghệ thuật của thủy vân số chính là lựa chọn công nghệ tùy theo ứng dụng. Có nhiều yếu tố liên quan đến việc lựa chọn giải pháp cho thủy vân nhƣ: bảo mật, yếu tố tri giác, độ bền vững, độ phức tạp, ta cần phải cân bằng giữa các yếu tố. Nhƣ trong chương một đã trình bày, có hai hướng tiếp cận của các kỹ thuật giấu tin nói chung và kỹ thuật thủy vân nói riêng đó là hướng tiếp cận trên miền không gian rời rạc các điểm ảnh và trong miền tần số ảnh. Đối với cách tiếp cận trên miền tần số ảnh ta có nhiều phép biến đổi khác nhau để chuyển từ miền tín hiệu rời rạc sang miền tần số nhƣ DFT, DCT, DWT. Trong chương này luận văn trình bày kỹ thuật thủy vân trên ảnh bằng cách tác động lên miền tần số ảnh thông qua phép biến đổi DCT.
1.6.2.1 Phép biến đổi cosin rời rạc
Biến đổi coisin rời rạc DCT (Discrete Cosine Transform) do Ahmed và các đồng nghiệp đƣa ra năm 1974. Từ đó nó đƣợc ứng dụng rộng rãi nhất là trong kỹ thuật xử lí ảnh số. Trong kỹ thuật thủy vân ảnh dựa trên miền tần số ảnh, thì phép biến đổi DCT đƣợc sử dụng nhiều nhất.
Định nghĩa 1.9:
Biến đổi DCT hai chiều tổng quát là biến đổi trên khối MxN đƣợc định nghĩa nhƣ sau
1
0 1
0 2
) 1 2 cos ( 2
) 1 2 cos ( ) , ( ) ( ) 1 ( ) , (
M
x N
y N
v y M
u y x
x f v C u NC v M
u
I
I(u,v) đƣợc gọi là hệ số DCT và là số thực.
Định nghĩa 1.10:
Phép biến đổi ngƣợc IDCT đƣợc định nghĩa nhƣ sau:
1 1
0 0
( ) ( ) (2 1) (2 1)
( , ) ( , ) cos cos
2 2
M N
u v
C u C v x u y v
f x y I u v
M N
M N
Trong đó
1
2 1 ) (k
c Nếu k=0
Nếu k > 0
Trên ảnh hai chiều, các khối thường sử dụng là 8x8, 16x16.
(a) (b) (c)
Hình 1.9. Phân chia ba miền tần số của khối ảnh 8x8 theo phép biến đổi DCT (a) miền tần số thấp (b) miền tần số giữa (c) miền tần số cao
Đặc điểm của phép biến đổi DCT trên ảnh hai chiều:
- Thể hiện đặc tính nội dung về tần số của thông tin ảnh. Hệ số góc trên là lớn và đặc trƣng cho giá trị trung bình thành phần một chiều gọi là hệ số DC, các hệ số khác có giá trị nhỏ hơn biểu diễn cho các thành phần tần số cao theo hướng ngang và dọc gọi là hệ số AC.
- Bản thân biến đổi DCT không nén đƣợc dữ liệu vì sinh ra 64 hệ số.
- 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, dọc hoặc 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 ảnh.
Đ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 khối. 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ã hóa phù hợp, chỉ các hệ số DCT quan trọng nhất mới đƣợc mã hóa để chuyển đổi.
Khối hệ số DCT có thể chia làm 3 miền: miền tần số thấp, miền tần số cao và miền tần số giữa. 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ố cao thường không mang tính tri giác cao, khi nén JPEG thường loại
Trong các thuật toán thủy 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ố thấp 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ố ở giữa thường hay được sử dụng nhất và cũng cho kết quả tốt nhất.
1.6.2.2 Kỹ thuật thủy vân sử dụng phép biến đổi DCT 1) Ý tưởng
Thuật toán dưới đây sử dụng phương pháp nhúng thủy 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 thủy vân là miền tần số ở giữa của các 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 từ ảnh ban đầu và đƣợc áp dụng phép DCT để chuyển sang miền tần số. Mỗi bit tín hiệu thủy vân sẽ đƣợc nhúng trong một khối [8].
Trong thuật toán có sử dụng một số hàm tính toán sau:
Max(x,y): hàm cho số lớn nhất trong hai số x và y.
Min(x,y): hàm cho số nhỏ nhất trong hai số x và y.
INT(x): là hàm lấy phần nguyên của số thực x.
| x | : cho giá trị tuyệt đối của x.
2) Quá trình nhúng thủy vân Input
- Thủy vân W: là một chuỗi các bit hoặc một ảnh nhị phân.
- Ảnh F kích thước mxn.
Output
- Ảnh F’ đã nhúng thủy vân.
Thuật toán:
Bước 1: Ảnh F có kích thước mxn sẽ được chia thành (mxn)/64 khối 8x8, mỗi bit của thủy vân sẽ đƣợc giấu trong một 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à C[i,j] và C[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 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 bất biến sau:
1 2
1 2
t d
t d
Bước 6: Nếu d<2t+1 và bk = 1 thì 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 d≥2t + 1 theo công thức (1.6.1) hoặc (1.6.2):
Max(|Ck[i,j]|, | Ck[p,q]|) + (INT(0.75a) - d) (1.6.1) 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.25a) + d) (1.6.2) Hệ số đƣợc chọn sẽ bị trừ đi một lƣợng là (INT(0.25a) + 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 d<2t + 1 theo công thức (1.6.3) hoặc (1.6.4) nhƣ sau:
Max(|Ck[i,j]|, |Ck[p,q]|) - (d – INT(0.25a)) (1.6.3) Hệ số đƣợc chọn sẽ bị trừ đi một lƣợng là (d – INT(0.25a).
Min(|Ck[i,j]|, | Ck[p,q]|) + (INT(0.25a) – d) (1.6.4) Hệ số đƣợc chọn sẽ đƣợc cộng thêm một lƣợng là INT(0.25a) – 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 Bk' để được ảnh chứa thủy vân F’.
Nếu bk=1 Nếu bk= 0
Thí dụ (1.6.3.1.a):
Giả sử ta cần giấu một bit thủy vân b =0 vào khối B 8x8 được cho dưới đây.
Ta chọn a = 26 = 2(2x6 + 1), do đó t = 6.
33 84 66 58 15 159 183 146 28 75 15 37 161 157 136 134 29 59 44 65 192 166 144 139 B= 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
Biến đổi DCT(B) ta thu đƣợc khối C:
Ta tính C[u, v] nhƣ sau:
7 7
0 0
1 (2 1) (2 1)
( , ) ( ) ( ) ( , ) cos cos
16 16
8 8 x y
x u y v
C u v C u C v B x y
Trong đó:
1
2 1 ) (k
c Nếu k=0
Nếu k > 0
869 -439 -101 114 19 6 -61 -42 -110 65 143 -18 -78 -62 -2 38
31 -4 -37 -7 -67 8 55 -43 C = -8 28 23 -10 -2 57 -26 -56 -2 -3 109 -69 -33 41 6 9 -24 -27 -26 9 -29 33 6 -10
13 4 -8 -46 -13 33 38 -43 41 34 6 29 5 -31 -24 40
Trong miền tần số giữa của khối C, ta chọn hai hệ số bất kỳ là C[4, 2]=-18 và C[2, 5] = -3.
Tính độ lệch d = | |-18| + |-3| | mod 26 = 21 mod 26 = 21.
Với bit thủy vân b = 0 thì ta phải thay đổi một trong hai hệ số C[4, 2] =-18 hoặc C[2, 5] = -3 đã chọn để thu đƣợc d <2t+1.
Vì C[4, 2]= -18 có giá trị tuyệt đối lớn hơn C[2, 5], theo công thức (1.6.3) ta tính giá trị mới của C[4, 21] là:
C[4, 2] = C[4, 2] – (d - INT(0.25a))
= -18 – (21 – INT(0.25 x 26) = -33.
Khi đã thay đổi hệ số C[4, 2] = -33 ta thực hiện phép biến đổi ngƣợc IDCT(C) và thu đƣợc khối B’:
Tính B’[x,y] nhƣ sau:
7 7
0 0
( ) ( ) (2 1) (2 1)
'( , ) ( , ) cos cos
2 2
u v
C u C v x u y v
B x y C u v
M N
M N
Trong đó:
1
2 1 ) (k c
30 85 70 60 13 155 183 149 26 76 18 39 160 154 136 137 27 60 46 66 190 164 144 141 B’= 14 15 16 67 113 122 192 171 89 76 14 102 169 105 199 176 20 9 13 217 141 200 164 140 18 15 12 177 243 238 190 105 18 17 85 179 170 238 191 187 Nếu k=0
Nếu k > 0
3) Quá trình tách thủy vân
Input - Ảnh đã nhúng thủy vân F’.
- Khóa K (nếu có).
Output - Thủy vân đã nhúng W biểu diễn qua dãy bit bk. Thuật toán:
Bước 1: Chia ảnh F’ đã nhúng thủy vân thành các khối Bk'. Bước 2: Biến đổi DCT các khối Bk'
Bk = DCT(Bk')
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
Bước 6: Ghép các bit bk tách được từ các khối để được thủy vân đầy đủ W.
Thí dụ (1.6.3.1.b):
Với khối B’ có đƣợc trong thí dụ (1.6.3.1.a), quá trình tách thủy vân nhƣ sau.
Ta thực hiện phép biến đổi DCT của khối B’ để thu đƣợc khối B sau
869 -439 -101 114 19 6 -61 -42 -110 65 143 -33 -78 -62 -2 38 31 -4 -37 -7 -67 8 55 -43 B = -8 28 23 -10 -2 57 -26 -56 -2 -3 109 -69 -33 41 6 9 -24 -27 -26 9 -29 33 6 -10
13 4 -8 -46 -13 33 38 -43 41 34 6 29 5 -31 -24 40
Ta lấy ra hai hệ số B[4, 2] = -33 và B[2, 5] = -3.
Tính độ lệch d = | |B[4, 2] – |B[2, 5]| | mod 26 = 10.
Ta thấy d < 2t +1 = 13, vậy bit b = 0 đã đƣợc giấu vào khối.
4) Phân tích thuật toán
Kích thước khối ảnh nêu trong kỹ thuật là 8x8, tuy nhiên có thể chọn kích thước khác nhau tùy theo kích thước từng ảnh gốc và kích thước thực tế của thủy vân.
Việc chọn một cặp hệ số trong miền tần số giữa có thể đƣợc chọn cố định cho tất cả các khối trong quá trình nhúng thủy vân. Khi đó, thủy vân có thể rất dễ bị phát hiện thông qua việc thử lần lƣợt các cặp hệ số trong miền tần số giữa. Có thể làm tăng độ an toàn và khó bị phát hiện thủy vân bằng cách đƣa ra một thuật toán có sử dụng khóa cho sự lựa chọn cặp hệ số trong miền tần số giữa cho từng khối DCT. Khi đó, vị trí của các cặp hệ số đƣợc chọn cho quá trình nhúng thủy vân trong từng khối sẽ đƣợc sử dụng phụ thuộc vào khóa của quá trình tách thủy vân.
Trong kỹ thuật, quá trình tách thủy vân không cần sử dụng ảnh gốc.
Tham số a trong kỹ thuật đóng vai trò như là hệ số tương quan giữa tính ẩn và tính bền vững của thủy vân. Khi tăng hệ số a lên thì độ sai lệch của thủy vân giảm đi và nhƣ vậy nó bền vững hơn. Tuy nhiên, nếu tăng a thì chất lƣợng ảnh sau khi giấu sẽ giảm. Điều này rất dễ hiểu vì a lớn, nghĩa là phân lớp khoảng cách hai hệ số lớn nên khoảng cách biến đổi của một hệ số để thỏa mãn điều kiện giấu lớn dẫn đến ảnh hưởng nhiều đến chất lƣợng ảnh.
1.6.2.3 Cải tiến kỹ thuật thủy vân sử dụng phép biến đổi DCT 1) Ý tưởng
Kỹ thuật thủy vân ở trên phụ thuộc vào việc chọn cặp hệ số thuộc miền tần số giữa của khối biến đổi DCT để biến đổi, sao cho thỏa mãn điều kiện nhúng thủy vân.
Các hệ số này đƣợc chọn cố định ở tất cả các khối hoặc chọn ngẫu nhiên. Tuy nhiên, các cách chọn đều có những hạn chế của nó.
Thứ nhất, nếu chọn cố định các cặp hệ số thì việc dò tìm và gỡ thủy vân của những người sử dụng ảnh bất hợp pháp là khá dễ dàng và do đó hệ thống không đảm bảo an toàn cho thủy vân.
Thứ hai, trong cả hai cách chọn đều dẫn đến khả năng phải biến đổi cặp hệ số cho phù hợp với điều kiện nhúng bit thủy vân tương ứng. Thao tác này dẫn đến chất lượng ảnh sau khi nhúng thủy vân bị ảnh hưởng đáng kể.
Kỹ thuật sau đƣa ra cách khắc phục các hạn chế trên bằng cách xác định các cặp hệ số trong miền tần số giữa thỏa mãn điều kiện nhúng thủy vân, việc biến đổi cặp hệ số chỉ diễn ra khi trong khối không có cặp hệ số nào thỏa mãn, điều này làm giảm đáng kể sự thay đổi giá trị các điểm ảnh. Hơn nữa trong các cặp hệ số đã tìm đƣợc thỏa mãn điều kiện nhúng, phương pháp chọn ngẫu nhiên cho từng khối làm tăng tính bí mật của thủy vân trong ảnh, việc phát hiện thủy vân khi không biết thông tin khóa là phức tạp.
2) Quá trình nhúng thủy vân Input
- Thủy vân W: là một chuỗi các bit hoặc một ảnh nhị phân.
- Một ảnh F kích thước mxn.
Output
- Ảnh đã nhúng thủy vân F’.
- Khóa K để tách thủy vân.
Thuật toán:
Bước 1: Ảnh F có kích thước mxn sẽ được chia thành (mxn)/64 khối 8x8, mỗi bit của thủy vân sẽ đƣợc giấu trong một 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.
Bước 3: Trong miền tần số giữa của khối Ck. Xác định Ck[i, j] là phần tử nhỏ nhất
Ck[p, q] là phần tử lớn nhất Bước 4: Gọi bit thủy vân cần nhúng là bk.
if bk = 0 then
maxk = [p, q]; mink = [i, j]
else
maxk = [i, j]; mink = [p, q];
endif;
Bước 5: Khóa K =K {maxk, mink} Bước 6: Tính d = Ck[p, q]-Ck[i, j]
Bước 7: Với t nguyên dương chọn trước If d<t then
Ck[p, q] = Ck[p, q] + (t - d)/2;
Ck[i, j] = Ck[i, j] – (t - d)/2;
Bước 8: Thực hiện phép biến đổi ngược IDCT Bk' = IDCT(Ck)
Bước 9: Ghép các khối ảnh Bk' để được ảnh chứa thủy vân F’.
Thí dụ 1.6.3.2.a
Giả sử ta cần nhúng bit thủy vân b=0 vào khối B nhƣ trong thí dụ 1.6.3.1a. Quá trình nhúng thủy vân nhƣ sau:
Biến đổi DCT(B) để thu đƣợc khối C nhƣ trong thí dụ 1.6.3.1a.
Trong miền tần số giữa của C ta có:
- Phần tử lớn nhất là C[2, 3] = 143 - Phần tử nhỏ nhất là C[2, 5] = -78
Theo bước 4 của thuật toán, với b = 0 thì max = [2, 3] và min =[2, 5].
Khóa K = {[2, 3]; [2, 5]}
Độ lệch d = C[2, 3] - C[2, 5] = 143 – (-78) = 221.
Chọn t = 235, khi đó d < t.
Ta thực hiện phép biến đổi sau:
C[2, 3] = C[2, 3] + (t-d)/2 = 143 + (235-221)/2 = 150.
C[2, 5] = C[2, 5] - (t-d)/2 = -78 – (235-221)/2 = -85.
Khối C mới sẽ là
869 -439 -101 114 19 6 -61 -42 -110 65 150 -18 -85 -62 -2 38 31 -4 -37 -7 -67 8 55 -43 C = -8 28 23 -10 -2 57 -26 -56 -2 -3 109 -69 -33 41 6 9 -24 -27 -26 9 -29 33 6 -10
13 4 -8 -46 -13 33 38 -43
41 34 6 29 5 -31 -24 40
Thực hiện biến đổi ngƣợc IDCT(C) ta thu đƣợc khối B’ nhƣ sau
34 86 67 55 12 160 185 146 28 77 16 35 159 157 138 135 29 60 44 63 190 167 145 139 B'= 15 15 15 66 113 123 192 170 88 76 14 102 169 104 199 177 19 8 15 220 142 198 163 141 15 14 15 181 243 234 188 107 14 16 88 184 171 234 188 190
3) Quá trình tách thủy vân
Input - Ảnh đã nhúng thủy vân F’.
- Khóa K để tách thủy vân.
Output - Thủy vân W: là một chuỗi các bit.
Thuật toán:
Bước 1: Chia ảnh F’ đã nhúng thủy vân thành các khối Bk'. Bước 2: Biến đổi DCT các khối Bk'
Bk = DCT(Bk')
Bước 3: Đọc các hệ số tương ứng với các khối Bk trong các biến maxk và mink của khóa K.
Bước 4:
If Bk(maxk) - Bk(mink) >0 then bk = 0
else
bk = 1
Bước 5: Ghép các bit bk để thu được thủy vân W.
Thí dụ 1.6.3.2.b:
Thực hiện phép biến đổi ngƣợc khối B’ đã có trong thí dụ 1.6.3.2.a ta thu đƣợc khối B. Khối B này thực chất là khối C đã mô tả trong thí dụ 1.6.3.2.a.
Với Khóa K = {[1, 2]; [1, 4]} ta lấy ra hai hệ số B[1, 2] = 136 và B[1, 4] = -85.
B[1,2] – B[1,4] = 136 – (-85) = 221>0 ta tách đƣợc bit thủy vân b = 0 đã nhúng.
4) Phân tích thuật toán
Theo bước 3 và bước 4 của quá trình nhúng thủy vân vào từng khối Ck thì việc nhúng thủy vân luôn thỏa tính chất nếu bit cần nhúng là bit 0 thì Ck(max)>Ck(min), ngƣợc lại nếu bit cần nhúng là bit 1 thì Ck(max)<Ck(min).
Theo bước 6 của quá trình nhúng thủy vân, độ lệch giữa hai hệ số được chọn sau khi nhúng được đảm bảo tối thiểu là t, đồng thời công thức biến đổi hệ số trọng bước 5 cũng thể hiện khi độ lệch giữa hai hệ số đƣợc chọn còn nhỏ hơn t thì cả hai hệ số sẽ đều đƣợc biến đổi tăng và giảm một lƣợng bằng (t - d)/2. Về khoảng cách thì việc thay đổi này cũng tương đương với việc chỉ tăng (hoặc giảm) Ck[p, q] lên (t - d). Như vậy, hệ số bị thay đổi lớn, gây ảnh hưởng đến thị giác của ảnh chứa thủy vân.
Với quá trình tách thủy vân không cần ảnh gốc, cũng không liên quan đến số nguyên dương t đã chọn trong quá trình nhúng thủy vân.
1.6.2.4 Giải pháp nâng cao độ an toàn cho thủy vân
Trong quá trình nhúng thủy vân đã trình bày ở mục trên, các khối DCT sau khi nhúng luôn thỏa tính chất hai hệ số đƣợc chọn trong miền tần số giữa có độ lệch cao nhất. Điều này dẫn đến việc một người bất kỳ có thể dò tìm thủy vân bằng cách đọc vào các khối DCT rồi tìm ra cặp hệ số có độ lệch lớn nhất trong khối. Trong mục này trình bày giải pháp bổ sung cho kỹ thuật nhúng thủy vân ở trên để đƣợc hệ thủy vân có độ an toàn cao.
1) Quá trình nhúng thủy vân Input
- Thủy vân W: là một chuỗi các bit hoặc một ảnh nhị phân.
- Một ảnh F kích thước mxn.
Output
- Ảnh đã nhúng thủy vân F’.
Thuật toán:
Bước 1: Ảnh F có kích thước mxn sẽ được chia thành (mxn)/64 khối 8x8, mỗi bit của thủy vân sẽ đƣợc giấu trong một 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: Với mỗi khối Ck
Gọi MID(k) = {xik}i =1,2,…,22 với xi thuộc vào miền tần số giữa của khối Ck. Gọi DM(k)là ma trận kích thước 22x22. Mỗi phần tử xác định như sau :
k j k i
k i j x x
DM()[, ] trong đó xik và xkj là các phần tử của MID(k).
Gọi TK là dãy gồm t phần tử trong DM có giá trị lớn hơn hoặc bằng ( là hệ số dương đã chọn trước).
Bước 4:
If t = 0 then
thực hiện bước 5 else
Chọn ngẫu nhiên một số tự nhiên nt [1, t]
Tính cặp hệ số có độ lệch tương ứng bằng TK(nt).
Xác định
Ck[u,v] là phần tử nhỏ hơn trong cặp hệ số Ck[p,q] là phần tử lớn hơn trong cặp hệ số Thực hiện bước 6.
Endif;
Bước 5: Trong miền tần số giữa của các khối Ck. Xác định Ck[u,v] là phần tử nhỏ nhất trong cặp hệ số Ck[p,q] là phần tử lớn nhất trong cặp hệ số Tính d = Ck[p,q] - Ck[u,v]
If d< then
Ck[p,q] = Ck[p,q] + (-d)/2;
Ck[u,v] = Ck[u,v] – (-d)/2;
Endif ;
Bước 6: Gọi bit thủy vân cần nhúng là bk. if bk = 0 then
maxk = [p,q]; mink = [u,v]
else
maxk = [u,v]; mink = [p,q];
endif;
Bước 7: Khóa K = {maxk, mink}
Bước 8: Thực hiện phép biến đổi ngược IDCT Bk' = IDCT(Ck)
Bước 9: Ghép các khối ảnh Bk' để được ảnh chứa thủy vân F’.
Thí dụ 1.6.3.3.a:
Giả sử ta có khối B và khối C =DCT(B) nhƣ trong thí dụ 1.6.3.1.a.
MID là dãy gồm 22 phần tử thuộc miền tần số giữa của C theo một thứ tự nào đó.
i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
MID(i) -7 -4 143 115 -3 27 -37 -18 18 -23 -2 22 -7 -78 7 12 -27
i 18 19 20 21 22
MID(i) 109 -10 -67 -62 -62
Ma trận độ lệch DM22x22 có các phần tử đối xứng nhau qua đường chéo chính nhƣ sau
0 3 150 122 4 34 30 11 25 16 5 29 0 71 14 19 20 116 3 60 55 55 0 147 119 1 31 33 14 22 19 2 26 3 74 11 16 23 113 6 63 58 58 0 28 146 116 180 161 125 166 145 121 150 221 136 131 170 34 153 210 205 205 0 118 88 152 133 97 138 117 93 122 193 108 103 142 6 125 182 177 177 0 30 34 15 21 20 1 25 4 75 10 15 24 112 7 64 59 59 0 64 45 9 50 29 5 34 105 20 15 54 82 37 94 89 89 0 19 55 14 35 59 30 41 44 49 10 146 27 30 25 25 0 36 5 16 40 11 60 25 30 9 127 8 49 44 44 0 41 20 4 25 96 11 6 45 91 28 85 80 80 0 21 45 16 55 30 35 4 132 13 44 39 39 0 24 5 76 9 14 25 111 8 65 60 60 0 29 100 15 10 49 87 32 89 84 84 0 71 14 19 20 116 3 60 55 55 0 85 90 51 187 68 11 16 16 0 5 34 102 17 74 69 69 0 39 97 22 79 74 74 0 136 17 40 35 35 0 119 176 171 171 0 57 52 52
0 5 5
0 0 0
Trường hợp 1:
Giả sử với =170, dãy TK đƣợc xây dựng từ DM (các phần tử trong ma trận DM
≥ 170 đƣợc đánh dấu trong bảng trên).
i 1 2 3 4 5 6 7 8 9 10 11 12 13 14
TK(i) 180 221 170 210 205 205 193 182 177 177 187 176 171 171
Số lƣợng phần tử trong TK là t = 14>0.
Chọn ngẫu nhiên số nt [1, 14], chẳng hạn nt = 7. Khi đó, cặp hệ số trong khối sẽ được chọn tương ứng với TK[7] = 193 = DM[4, 14]. Phần tử DM[4, 14] ứng với phần tử MID[4] và MID[14]. Từ đó ta có cặp hệ số ứng với MID[4] = 115 = C[1, 4] và MID[14] = -78 = C[2, 5].
Bit thủy vân cần nhúng là b = 0, khi đó Max = [1, 4], min = [2, 5];
Khóa K ={[1, 4], [2, 5]}
Trong trường hợp này, ta có thể chọn một trong 14 cặp hệ số đương nhiên đã thỏa mãn điều kiện nhúng bit thủy vân mà không cần biến đổi.
Trường hợp 2:
Giả sử với = 235, khi đó không tồn tại phần tử nào trong ma trận DM thỏa điều kiện lớn hơn hoặc bằng . Tức là t = 0. Ta thực hiện bước 5 trong thuật toán.
Trong miền tần số giữa của khối C, chọn cặp hệ số C[p, q] = C[2, 3] = 143, C[u, v]= C[2, 5] = -78.
Tính độ lệch d = C[2,3] – C[2,5] = 143 – (-78) = 221
Vì d < =235 nên tính giá trị mới cho cặp hệ số đã chọn giống nhƣ trong thí dụ 1.6.3.2. Với bit thủy vân cần nhúng b=0, ta có khóa K ={max = [2, 3]; min = [2, 5]}
Thực hiện phép biến đổi ngƣợc IDCT với khối C, ta thu đƣợc khối B’.
2) Quá trình tách thủy vân
Quá trình tách thủy vân đƣợc thực hiện nhƣ trong 1.6.3.2.