biến đổi súng nhỏ rời rạc:
í tưởng cơ bản của phộp biến đổi súng con là khai triển hàm ƒ(t) bất kỳ như một xếp chồng của cỏc súng con (wavelets) hay cỏc hàm cơ sở (Wavelets là cỏc hàm đựoc định nghĩa trong khoảng hữu hạn và cú giỏ trị trung bỡnh bằng 0)
Watermark được tạo ra từ bộ tạo số giả ngẫu nhiờn (PRN) với một khoỏ bớ mật Key. Chiều dài của Watermark chớnh là độ trải Watermark vào dữ liệu, nếu chiều dài của Watermark càng lớn thỡ độ mạnh Watermark đũi hỏi càng nhẹ. Nhưng núi chung khụng cú chiều dài Watermark thớch hợp cho tất cả cỏc ảnh.
Trong quỏ trỡnh thuỷ võn ta xử dụng khoỏ K làm trạng thỏi cho bộ sinh chuỗi giả ngẫu nhiờn. Bằng thực nghiệp cho thấy: Nếu giỏ trị khoỏ K càng lớn thỡ chất lượng ảnh sau khi nhỳng thuỷ võn càng kộm.
Hỡnh 2.10 Quỏ trỡnh nhỳng Watermark C C’’ Y’ X Key W W’ d
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
Hỡnh 2.11 Quỏ trỡnh trớch Watermark
Giờ ta sẽ thay đổi giỏ trị khỏc nhau của khoỏ K trờn cựng một ảnh chủ và watermark để thấy sự khỏc nhau của chất lượng ảnh sau khi thuỷ võn bằng cỏch quan sỏt trực quan và qua giỏ trị độ lớn của nhiễu nền psnr (tiờu chuẩn để đỏnh giỏ chất lượng của ảnh được thuỷ võn và cỏc ảnh bị tấn cụng dựa vào tỷ số giữa giỏ trị cực đại của tớn hiệu và độ lớn của nhiễu nền PSNR – Peak Signal To Noise) Hỡnh 2.11.1 Ảnh chủ Hỡnh 2.11.2 Ảnh thuỷ võn X Key W Y C’
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
Ảnh sau khi thuỷ võn:
K = 2; psnr = 626.6289 dB Thuỷ võn sau khi tỏch
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
K = 20; psnr = 10.0984 dB Thuỷ võn sau khi tỏch
K=30; psnr = 6.8736 dB Thuỷ võn sau khi tỏch
Hỡnh 2.12: Ảnh sau khi thuỷ võn ứng với cỏc giỏ trị khỏc nhau của khoỏ K
Trong quỏ trỡnh nhỳng Watermark, ta thực hiện DWT cho ảnh. Một tập cỏc hệ số lớn nhất (cú chiều dài bằng chiều dài watermark) trong băng tần thớch hợp được trớch ra và cộng với watermark theo biểu thức (1).
C‟ = C + * W (1)
Trong đú là độ mạnh của watermark nhỳng. Quỏ trỡnh trớch Watermark được thực hiện như sau:
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
Trong đú C‟‟ là N hệ số DWT lớn nhất của ảnh nhỳng sau cỏc tấn cụng (nếu cú).
Khi cú Watermark trớch, ta so sỏnh nú với Watermark gốc bằng cỏch đỏnh giỏ hệ số tương quan d. d = N i N j N i N j 1 1 2 j 2 i 1 1 j i W W ) W W (
Giỏ trị của d trong khoảng từ -1 đến 1. Giỏ trị này càng gần thỡ mức độ tương quan giữa hai Watermark càng tốt. Bằng cỏch so sỏnh d với ngưỡng cỏc định trước cú thể xỏc định liệu Watermark cú tồn tại hay khụng.
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
Chƣơng 3:
THIẾT KẾ VÀ PHÁT TRIỂN CHƢƠNG TRèNH THUỶ VÂN THỬ NGHIỆM
3.1 Cài đặt một số thuật toỏn thủy võn dựa vào phộp biến đổi súng nhỏ rời rạc:
Chương trỡnh thuỷ võn ảnh là một chương trỡnh thực nghiệm thuật toỏn, chương trỡnh viết bằng MATLAB7.
Chức năng chớnh của chương trỡnh là thuỷ võn ảnh và giải thuỷ võn.
Chương trỡnh thực nghiệm trờn MATLAB7
Chƣơng trỡnh nhỳng
%Mục đớch: Nhỳng thuỷ võn vào ảnh chủ bằng DWT clear all;
% ghi lai thời gian bắt đầu tgbd=cputime; k=2; % đặt hệ số nhỳng % đọc ảnh chủ tentep='_lena_std_bw.bmp'; anhchu=double(imread(tentep)); % xỏc định cỡ của ảnh chủ Mc=size(anhchu,1); Nc=size(anhchu,2);
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
% đọc ảnh thuỷ võn và chuyển thành một vector tentep='_copyright.bmp';
thuyvan=double(imread(tentep)); Mm=size(thuyvan,1);
Nm=size(thuyvan,2);
thuyvan_vector=round(reshape(thuyvan,Mm*Nm,1)./256);
% đọc khoỏ làm trạng thỏi cho bộ sinh số giả ngẫu nhiờn tentep='_key.bmp';
key=double(imread(tentep))./256;
% đặt trạng thỏi cho bọ sing số giả ngẫu nhiờn về trạng thỏi "key" rand('state',key);
% biến đổi DWT một mức cho ảnh chủ [cA1,cH1,cV1,cD1] = dwt2(anhchu,'haar');
% cộng thờm dóy số giả ngẫu nhiờn vào cỏc băng H1 và V1 khi thuyvan = 0 for (kk=1:length(thuyvan_vector)) pn_sequence_h=round(2*(rand(Mc/2,Nc/2)-0.5)); pn_sequence_v=round(2*(rand(Mc/2,Nc/2)-0.5)); if (thuyvan_vector(kk) == 0) cH1=cH1+k*pn_sequence_h; cV1=cV1+k*pn_sequence_v; end end
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
% biến đổi ngược (tổng hợp) IDWT
anhchu_thuyvan= idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);
% chuyển sang dạng uint8
anhchu_thuyvan_uint8=uint8(anhchu_thuyvan);
% ghi ảnh chủ đó thuỷ võn lờn đĩa
imwrite(anhchu_thuyvan_uint8,'anhchu_thuyvan_dwt.bmp','bmp');
% hiện thời gian thực hiện
elapsed_time=cputime-start_time,
% hiện ảnh đó thuỷ võn figure(1)
imshow(anhchu_thuyvan_uint8,[ ]) title(„Anh da duoc thuy van‟)
Chƣơng trỡnh giải
%Mục đớch: Giải thuỷ võn từ ảnh đó được nhỳng thuỷ võn bằng DWT
clear all;
% ghi lại thời gian bắt đầu tgbd=cputime;
% đọc ảnh đó thuỷ võn bằng DWT tentep='anhchu_thuyvan_dwt.bmp';
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 anhchu_thuyvan=double(imread(tentep)); %xỏc định cỡ của ảnh chủ Mw=size(anhchu_thuyvan,1); Nw=size(anhchu_thuyvan,2); % đọc ảnh thuỷ võn gốc tentep='_copyright.bmp'; thuyvan_goc=double(imread(tentep)); Mo=size(thuyvan_goc,1); No=size(thuyvan_goc,2);
% đọc khoỏ cho bộ sinh số giả ngẫu nhiờn tentep='_key.bmp';
key=double(imread(tentep))./256;
rand('state',key);
% khởi tạo thuỷ võn tất cả bằng 1 thuyvan_vector=ones(1,Mo*No);
[cA1,cH1,cV1,cD1] = dwt2(anhchu_thuyvan,'haar');
% Tớnh cỏc hệ số đồng tương quan giữa cỏc băng cH1, cV1 với cỏc dóy giả ngẫu nhiờn
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 pn_sequence_h=round(2*(rand(Mw/2,Nw/2)-0.5)); pn_sequence_v=round(2*(rand(Mw/2,Nw/2)-0.5)); correlation_h(kk)=corr2(cH1,pn_sequence_h); correlation_v(kk)=corr2(cV1,pn_sequence_v); correlation(kk)=(correlation_h(kk)+correlation_v(kk))/2; end for (kk=1:length(thuyvan_vector)) if (correlation(kk) > mean(correlation)) thuyvan_vector(kk)=0; end end
% hiệu chỉnh thuyvan_vector và hiện thuỷ võn đó tỡm thấy . figure(2)
thuyvan=reshape(thuyvan_vector,Mo,No); imshow(thuyvan,[ ])
title('Thuy van da tim thay')
% hiện thời gian thực hiện tgth=cputime - tgbd,