Cải tiến kỹ thuật thủy vân sử dụng phép biến đổi DCT

Một phần của tài liệu Kỹ thuật giấu tin trong ảnh và nghiên cứu khả năng có thể để phát hiện ảnh có giấu tin (Trang 44)

2.2.3.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.2.3.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.

Cách thức thực hiệ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: 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

'

k

B = IDCT(Ck) (adsbygoogle = window.adsbygoogle || []).push({});

Bước 9: Ghép các khối ảnh '

k

B để được ảnh chứa thủy vân F’.

Thí dụ 2.2.3a

Giả sử ta cần nhúng bit thủy vân b=0 vào khối B như trong thí dụ 2.2.2a. 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ụ 2.2.2a. 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 -438 -102 115 18 7 -62 -41 -110 64 150 -18 -85 -62 -2 38 30 -4 -37 -7 -67 8 55 -42 C = -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 Thực hiện biến đổi ngược IDCT(C) ta thu được khối B’ như sau

33 86 67 55 12 160 186 146 28 77 16 34 159 157 138 134 29 60 44 63 191 166 146 139 B'= 15 15 15 66 113 123 193 169 88 76 15 103 169 104 199 177 19 9 15 219 142 197 163 140 15 13 15 182 244 235 189 107 15 15 88 183 171 232 188 187

2.2.3.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.

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 '

k

B . Bước 2: Biến đổi DCT các khối '

k

B

Bk = DCT( '

k

B )

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 (adsbygoogle = window.adsbygoogle || []).push({});

bk = 1

Bước 5: Ghép các bit bk để thu được thủy vân W.

Thí dụ 2.2.3b:

Thực hiện phép biến đổi ngược khối B’ đã có trong thí dụ 2.2.3a ta thu được khối B. Khối B này thực chất là khối C đã mô tả trong thí dụ 2.2.3a.

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.

2.2.3.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.

Một phần của tài liệu Kỹ thuật giấu tin trong ảnh và nghiên cứu khả năng có thể để phát hiện ảnh có giấu tin (Trang 44)