Nhiều thuật toán thuỷ vân thuận nghịch được đề xuất đến nay sử dụng hướng tiếp cận này, đó là cách nhúng thông tin vào miền không gian nén. Một ví dụ điển hình cho kỹ thuật này có thể được tìm thấy trong nghiên cứu của Fridich. Thuật toán nhúng sẽ hiệu quả hơn nếu ảnh được chia
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
thành các block để nhúng. Tuy nhiên, kỹ thuật nén bảo toàn thông tin nên được sử dụng để khôi phục ảnh gốc.
2.3.4.Sử dụng phép biến đổi mở rộng hiệu 2.3.4.1Xét ví dụ về mở rộng hiệu
Giả sử chúng ta có hai giá trị x = 206, y = 201, bít cần nhúng b = 1. Đầu tiên chúng ta tính giá trị nguyên trung bình l và hiệu h của x và y:
Việc nhúng bít b =1 vào hiệu h được thực hiện:
Khi đó, cặp điểm ảnh được xác định theo công thức:
Để trích bít b và khôi phục cặp điểm ảnh gốc từ cặp điểm ảnh đã
nhúng tin ta thực hiện như sau:
Trích bít tin đã nhúng:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Qua ví dụ trên ta thấy, có thể nhúng một bít vào mỗi cặp điểm ảnh để nhận được cặp điểm ảnh chứa tin . Từ cặp điểm ảnh có thể trích được bít đã nhúng và khôi phục được cặp điểm ảnh Tuy nhiên có thể thấy rằng: sau khi nhúng có bít b vào cặp điểm thuộc miền giá trị [0..255] theo cách thức trên thì có thể vượt ra ngoài miền giá trị [0..255]. Do vậy, không phải mọi cặp điểm ảnh
đều có thể sử dụng cách nhúng như trên.
2.3.4.2 Khả mở và khả biến
Theo [2], mỗi cặp điểm ảnh (x,y) với thuộc một trong 3
nhóm: khả mở (expandable) khả biến (changeable) và không khả biến. Để tiện theo dõi, trước tiên luận văn trình bày một số định nghĩa sử dụng trong nhóm phương pháp mở rộng hiệu.
Định nghĩa 1: Cặp điểm ảnh (x,y) với được gọi là khả mở nếu thỏa mãn điều kiện:
và Trong đó:
và
Điều kiện khả mở trên cũng tương đương với điều kiện: với
Định nghĩa 2: Cặp điểm ảnh (x,y) được gọi là khả biến nếu thỏa mãn điều kiện:
với
Các cặp điểm ảnh không thỏa mãn điều kiện khả biến thì được gọi là khả biến.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Nhận xét 1: Nếu (x,y) khả mở thì (x,y) cũng thỏa mãn điều kiện khả biến nhưng (x,y) khả biến thì chưa chắc đã khả mở.
2.3.4.3 Nhúng tin và khôi phục theo khả mở, khả biến
Đối với phương pháp mở rộng hiệu, việc nhúng bít b và khôi phục cặp điểm ảnh gốc (x,y) thực hiện theo các công thức khác nhau tùy theo (x,y) là khả mở hay khả biến. Để tiện theo dõi, trước tiên luận văn trình bày thuật toán nhúng và khôi phục ứng với từng trường hợp khác nhau.
a) Nhúng tin và khôi phục đối với (x,y) khả mở
Thuật toán nhúng
Việc nhúng bít b vào cặp điểm ảnh khả mở (x,y) để nhận được cặp
điểm ảnh được thực hiện theo các bước sau:
Bƣớc 1: tính
Bƣớc 2: Nhúng tin
Thuật toán trích tin và khôi phục cặp ảnh gốc
Để trích bít đã nhúng b và khôi phục cặp điểm ảnh gốc (x,y) từ cặp
điểm ảnh được thực hiện theo các bước:
Bƣớc 1: Tính
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Bƣớc 3: Khôi phục cặp điểm ảnh (x,y)
b) Nhúng tin và khôi phục đối với (x,y) khả biến
Với cặp điểm ảnh (x,y) không khả mở nhưng khả biến thì thuật toán nhúng tin là không thuận nghịch. Để thuật toán thành thuận nghịch thì ta cần lưu lại bít thấp của hiệu (h) trong quá trình nhúng tin.
Thuật toán nhúng
Việc nhúng bít b vào cặp điểm ảnh khả biến (x,y) để nhận được cặp
điểm ảnh được thực hiện theo các bước sau:
Bƣớc 1: tính
, lưu lại bít thấp của h
Bƣớc 2: Nhúng tin
Thuật toán trích tin và khôi phục cặp ảnh gốc
Để trích bít đã nhúng b và khôi phục cặp điểm ảnh gốc (x,y) từ cặp
điểm ảnh được thực hiện theo các bước:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Bƣớc 2: trích bít dữ liệu
Bƣớc 3: Khôi phục cặp điểm ảnh (x,y)
Nhận xét 2: Nếu (x,y) khả mở và nhúng theo thuật toán khả mở thì khả biến
Nhận xét 3: Nếu (x,y) khả biến và nhúng theo thuật toán khả biến thì cũng khả biến
2.3.5 Lƣợc đồ thủy vân thuận nghịch Tian
Trong thủy vân thuận nghịch, lược đồ Tian [2] là một trong những lược đồ nhận được nhiều sự quan tâm của các nhà nghiên cứu. Nội dung lược đồ gồm hai thuật toán: thuật toán thủy vân, thuật toán trích dấu thủy vân và khôi phục ảnh gốc.
a) Thuật toán nhúng thủy vân
Thuật toán nhúng dấu thủy vân P (dãy bít) vào ảnh đa cấp xám I để nhận được ảnh thủy vân gồm các bước sau:
Bƣớc 1:Phân hoạch ảnh I thành n cặp điểm ảnh
Bƣớc 2: Xây dựng bản đồ M theo
Bƣớc 3: Nén bản đồ M để nhận được dãy bít nén MN (MN có độ dài ngắn hơn M)
Bƣớc 4: Gọi C là dãy bít thấp của các hiệu ứng với các cặp khả biến
Bƣớc 5:Gọi H dãy bít thông tin phù trợ bao gồm: độ dài của MN, độ dài của C và độ dài của P. Độ dài của H là cố định.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Bƣớc 6: Tạo dãy bít cần nhúng
Bƣớc 7: Nhúng tin
Duyệt từng cặp điểm ảnh và xét các trường hợp sau:
Nếu khả mở thì nhúng bít B(i) vào theo thuật toán
nhúng khả mở để nhận được (
Nếu không khả mở nhưng khả biến thì nhúng bít B(i) vào theo thuật toán nhúng khả biến để nhận được (
Nếu không khả biến (
Ảnh là tập hợp các cặp điểm ảnh ( theo đúng thứ tự phân hoạch .
b) Thuật toán trích tin và khôi phục ảnh gốc
Để trích dãy bít thủy vân P và khôi phục ảnh gốc I từ ảnh thủy vân thuật toán thực hiện các bước:
Bƣớc 1: Phân hoạch ảnh thành các cặp điểm ảnh ( theo cùng thứ tự trong thuật toán nhúng
Bƣớc 2: Trích bít thấp từ các cặp ( khả biến
Bƣớc 3: Xác định dấu thủy vân
Từ dãy bít B, với thông tin phụ H cố định ta có thể xác định được bản đồ (MN), dãy bít thấp của hiệu khả biến ( C ) và dấu thủy vân P.
Bƣớc 4: Khôi phục ảnh gốc
Giải nén MN để nhận được bản đồ M
Duyệt toàn bộ bản đồ với i =1..n và xét các trường hợp sau
Nếu ( khả biến và thì
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ - - - - Nếu ( khả biến và thì - - - , lấy từ dãy bít C - -
Nếu ( không khả biến thì
- -
Các kết quả thực nghiệm trong [2] khẳng định thuật toán có khả năng nhúng cao tuy nhiên chất lượng ảnh chưa tốt.
2.3.6 Một số cải tiến của phƣơng pháp mở rộng hiệu
Để nâng cao khả năng nhúng tin cho phương pháp mở rộng hiệu, trong [4] và [vectơ] các tác giả xét nhiều điểm ảnh thay cho việc xét trên cặp 2 điểm ảnh (x,y). Khi đó, các lược đồ cần định nghĩa lại điều kiện khả nhúng, khả mở và công thức nhúng tin.
Theo [3], các tác giả sử dụng 3 điểm ảnh (x,y,z) để tạo ra hai hiệu và , mỗi hiệu nhúng tối đa 1 bít (mở rộng hiệu trong bộ 3 điểm ảnh).
Trong [7], các tác giả sử dụng véc tơ V gồm n điểm ảnh để tạo ra n-1
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
nhúng n -1 bít vào véc tơ V (mở rộng hiệu của phép biến đổi nguyên tổng quát). Dưới đây sẽ trình tóm tắt hai cải tiến trong [4] và [7].
2.3.6.1Mở rộng hiệu trong bộ 3 điểm ảnh
Đối với kỹ thuật của Tian thì giấu được 1 bit vào trong bộ 2 điểm ảnh, còn với phương pháp này giấu 2 bit trong bộ 3 điểm ảnh.
Ưu điểm của phương: giấu được 2 bit trong bộ 3 điểm ảnh, trong khi đó phương pháp của Tian thì giấu 1 bit trong bộ 2 điểm ảnh, tức là phải dùng bộ 4 điểm ảnh để giấu 2 bít.
Nhược điểm của phương pháp: số bộ 3 điểm ảnh thoả mãn không bị tràn sau khi nhúng là ít hơn số bộ 2 điểm ảnh.
Ở đây, chỉ xét thuật toán nhúng và trích được áp dụng cho bộ 3 điểm ảnh và 2 bit giấu, còn chi tiết các bước khác giống Tian:
Thuật toán nhúng:
Đầu vào: 1 bộ 3 điểm ảnh (x,y,z) và 2 bit giấu b=b1b2 Đầu ra: (x',y',z') đã nhúng b nếu được.
Thuật toán:
1) Tính h1 = x-y, h2 = z-y (lấy y làm trung tâm) 2) Tính h1' = 2h1+b1, h2' = 2h2+b2
Kiểm tra nếu 0≤y + h1', y + h2'≤255 thì
Tính x' = y + h1', y' = y, z'= y + h2'. Thoát.
3) Tính h1' = 2 +b1, h2' = 2 +b2. Lưu bit thấp của h1 và h2. Kiểm tra nếu 0≤y + h1', y + h2'≤255 thì
Tính x' = y + h1', y' = y, z'= y + h2'. Thoát.
4) Nếu không thoả mãn (2) và (3) thì bỏ qua không nhúng.
Thuật toán trích tin và khôi phục ảnh gốc:
Đầu vào: 1 bộ 3 điểm ảnh (x',y',z') có giấu tin Đầu ra: b và (x,y,z).
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
1) Dựa vào bản đồ như Tian, để phân biệt giấu chèn bít thấp hay mở rộng hiệu.
2) Khôi phục tin: b1 = (x'-y') mod 2, b2 = (z'-y') mod 2. 3) Khôi phục ảnh gốc (x,y,z):
Tính h1' = x'-y', h2' = z'-y'
Nếu giấu theo chèn bit thấp thì:
h1=2 +lsb(h1), h2=2 +lsb(h2) Nếu giấu tin theo mở rộng hiệu thì:
h1= , h2=
Tính (x,y,z): x = y + h1, y = y', z = y + h2.
2.3.6.2 Mở rộng hiệu của phép biến đổi nguyên tổng quát
Phương pháp này là sự tổng quát của 2 phương pháp đã trình bày, đó là của Tian 1 hiệu giấu được 1 bit, bộ 3 điểm ảnh cho 2 hiệu giấu được 2 bit. Phương pháp này xét bộ gồm n điểm ảnh kề nhau liên tiếp, sẽ sinh ra n-1 hiệu, do đó sẽ giấu được n-1 bit.
Để đơn giản trình bày, ta chỉ xét thuật toán áp dụng cho bộ n điểm ảnh của ảnh xám u = (u0, u1, ..., un-1) và dãy bit giấu: b1b2...bn-1:
Thuật toán nhúng tin:
Đầu vào: u = (u0, u1, ..., un-1) và dãy bit giấu: b=b1b2...bn-1 Đầu ra: u' = (u'0, u'1, ..., u'n-1)
Thuật toán:
1) Tính các hiệu:
(lấy v0 làm trung tâm) vi = ui - v0, trong đó: i = 1,..., n-1
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
, trong đó: i = 1,..., n-1 Kiểm tra n điều kiện sau:
, j =1..n-1 Nếu thoả mãn thì tính:
Thoát.
3) Kiểm tra điều kiện khả biến và nhúng chèn bit thấp: Lưu bit thấp của v1...vn-1.
, trong đó: i = 1,..., n-1 Kiểm tra n điều kiện sau:
, j =1..n-1 Nếu thoả mãn thì tính:
Thoát.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Thuật toán khôi phục tin và ảnh gốc:
Đầu vào: u' = (u'0, u'1, ..., u'n) có giấu tin Đầu ra: u và b
Thuật toán:
1) Dựa vào bản đồ như Tian, để phân biệt giấu chèn bít thấp hay mở rộng hiệu.
2) Khôi phục tin:
Tính và các hiệu v'i = u'i - v'0, trong đó: i = 1,..., n-1
bi = v'i mod 2
3) Các hiệu v'i = u'i - v'0, trong đó: i = 1,..., n-1 đã tính ở bước (2) 4) Khôi phục ảnh gốc u:
v0 = v'0
Nếu giấu theo chèn bit thấp thì:
vi=2 +lsb(vi), trong đó: i = 1,..., n-1 Nếu giấu tin theo mở rộng hiệu thì:
vi= , trong đó: i = 1,..., n-1 Ảnh gốc được khôi phục:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
CHƢƠNG 3
CHƢƠNG TRÌNH THỬ NGHIỆM
Để khảo sát và đánh giá khả năng nhúng tin của phương pháp mở rộng hiệu, luận văn đã tiến hành cài đặt lược đồ thủy vân thuận nghịch Tian [2] bằng ngôn ngữ Matlab trên ảnh đa cấp xám. Quá trình nén và giải nén bản đồ định vị sử dụng phương pháp nén loạt dài (Run-length). Nội dung lược đồ gồm thuật toán nhúng thùy vân và thuật toán trích dấu thủy vân.
3.1. Thuật toán nhúng dấu thủy vân
Đầu vào của thuật toán nhúng dấu thủy vân gồm ảnh đa cấp xám I kích thước (256x256) và ảnh dấu thủy vân nhị phân W kích thước 160x160 (logo của Trường Đại học Thái Nguyên). Đầu ra của thuật toán là ảnh Thủy vân nhận được bằng cách nhúng W vào ảnh gốc I. Nội dung thuật toán gồm các hàm:
- Hàm [kq] = PhanLoai(x,y), dùng để phân loại cặp điểm ảnh (x,y)
- Hàm [MN] = Nen(M), sử dụng thuật toán nén Run-length, với M là dãy bít cần nén và MN là dãy byte nén. Mỗi byte của MN được tổ chức như sau:
+ Bít đầu tiên có giá trị 0 hoặc 1
+ Bảy bít tiếp theo là số lượng của bít đầu tiên
- Hàm [u,v] = nhung(x,y,b,t), nhúng bít b vào cặp điểm (x,y) theo dạng phương pháp chèn bít thấp ( ) hoặc mở rộng hiệu ( ) để nhận được cặp điểm ảnh mới (u,v).
- Hàm [G]=nhungDE(I,W), thực hiện nhúng ảnh nhị phân W vào ảnh đa cấp xám gốc I để nhận được ảnh thủy vân G. Trong quá trình nhúng, phần thông tin phụ (H) có độ dài 48 bít với ý nghĩa như sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
+ 16 bít đầu tiên lưu trữ độ dài mã nén MN
+ 16 bít tiếp theo lưu trữ độ dài của C (bít thấp của hiệu khả biến) + 16 bít cuối cùng lưu trữ độ dài của ảnh thủy vân
Dãy bít cần nhúng vào ảnh được sắp xếp theo thứ tự:
B = H MN C W
Trong đó:
- H là phần thông tin phụ
- MN là dãy bít mã nén của bản đồ - C là dãy bít thấp của các hiệu khả biến -W là dãy bít của ảnh thủy vân
3.2. Thuật toán trích dấu thủy vân
Đầu vào của thuật toán là ảnh thủy vân , đầu ra là ảnh dấu thủy vân W và ảnh gốc I (ảnh I được khôi phục từ ). Nội dung gồm các hàm:
- Hàm [M] = giainen(MN), MN là mã nén theo phương pháp Run- Length và M là dãy bít sau khi giải nén (Bản đồ).
- Hàm [x,y] = khoiphuc(u,v,t), khôi phục cặp điểm ảnh gốc (x,y) từ cặp điểm ảnh thủy vân (u,v). Nếu (u,v) là khả mở thì t là giá trị bít thấp của hiệu được lấy từ C.
- Hàm [W,I] = khoiphucDE ( ), khôi phục ảnh gốc I và trích dấu thủy vân W từ ảnh thủy vân .
3.3. Kết quả thực nghiệm
Trong thực nghiệm, luận văn sử dụng 4 các ảnh gốc khác nhau dùng để nhúng ảnh dấu thủy vân (Logo Đại học Thái Nguyên) như Hình 3.1.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
(a)Lena (b)Baboon
(c)Airplane (d)Logo
Hình 3.1. Các ảnh gốc và dấu thủy vân sử dụng trong thử nghiệm Kết quả nhúng ảnh dấu thủy vân (Logo) vào các ảnh gốc trên Hình 3.1 ((a), (b) và (c)) để nhận được ảnh thủy vân tương ứng như Hình 3.2.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
(a)Lena (b)Baboon
(c)Airplane
Hình 3.2. Các ảnh thủy vân tương ứng với ảnh gốc Hình 3.1
Kết quả trích dấu thuỷ vân và khôi phục ảnh gốc từ ảnh thuỷ vân trên hình 3.2 như sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
(a)Lena (b)Baboon
(c)Airplane (d)Logo
Hình 3.3. Ảnh dấu thuỷ vân trích được và khôi phục các ảnh gốc từ ảnh thuỷ vân trên Hình 3.2
3.4. Mã nguồn chƣơng trình ////// Hàm Phân loại function [kq] = phanloai(x,y) h=x-y; l=floor((x+y)/2); m = min(2*(255-l),2*l+1);
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
if(h>= 0 && 2*h+1<=m)||(h<0 && abs(2*h)<=m) kq=0;
else
if(h>=0 && 2*floor(h/2)+1<=m)||(h<0 && abs(2*floor(h/2))) kq =1; else kq=-1; end end end
//////// Chương trình nhúng dấu thủy vân
function [ G ] = nhungDE( I,P )
[m,n] = size(I); M=[]; C=[]; I =int32(I); G = I; for i=1:2:m for j=1:n x=I(i,j); y=I(i+1,j); h=x-y; t=phanloai(x,y); if(t>=0) M=[M,t]; if(t==1) C=[C,mod(abs(h),2)];
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ end end end end dc=size(C,2); de=size(M,2)-dc; dp=size(P,2); dh=48; MN=nen(M); dmn=size(MN,2)*8; if(dh+dmn+dp>de)
display('Khong nhung duoc');
return;
end;
B=[de2bi(dmn,16,'left-msb'),de2bi(dc,16,'left- msb'),de2bi(dp,16,'left-msb')]; for i=1:dmn/8 B=[B,de2bi(MN(i),8,'left-msb')]; end B=[B,C,P]; B = int32(B); db=size(B,2); k=0; for i=1:2:m
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ for j=1:n x=I(i,j); y=I(i+1,j); t = phanloai(x,y); if t>=0 k=k+1; if k> db G = uint8(G); return; end [u,v]=nhung(x,y,B(k),t); G(i,j)=u; G(i+1,j)=v; end end end G = uint8(G); end
function [u,v] = nhung(x,y,b,t)
x = double(x); y = double(y); h = x-y; l=floor((x+y)/2); if(t==0) hp = 2*h+ b; else hp=2*floor(h/2)+b;
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ end hp = double(hp); u=l+floor((hp+1)/2);