Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 79 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
79
Dung lượng
2,73 MB
Nội dung
i ii ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN NAM PHƯƠNG XÂY DỰNG CÁC LƯỢC ĐỒ THỦY VÂN BỀN VỮNG BẰNG CÁCH KẾT HỢP PHÉP BIẾN ĐỔI DWT VÀ SVD LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN – 2016 iii LỜI CAM ĐOAN Tơi xin cam đoan tồn nội dung luận văn tự sưu tầm, biên soạn nghiên cứu Nội dung luận văn chưa khác công bố hay xuất hình thức không chép từ công trình nghiên cứu Tồn mã nguồn chương trình hồn tồn tơi tự tay viết chỉnh sửa hướng dẫn thầy giáo hướng dẫn, kết thử nghiệm hồn tồn tơi tìm hiểu thực Nếu sai tơi xin hồn tồn chịu trách nhiệm Thái Nguyên, ngày 10 tháng năm 2016 Học viên Nguyễn Nam Phương iv LỜI CẢM ƠN Tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy giáo PGS.TS.Nguyễn Bá Tường - Trường Học viện Kĩ thuật Quân người trực tiếp hướng dẫn, bảo tận tình hết lịng giúp đỡ tơi suốt thời gian làm luận văn Xin cảm ơn anh, chị bạn đồng nghiệp nhóm nghiên cứu an tồn bảo mật thơng tin thầy Nguyễn Bá Tường hướng dẫn có góp ý quý báu trình nghiên cứu trình bày luận văn Tôi chân thành cảm ơn người thân gia đình, bạn bè động viên tạo điều kiện giúp tơi q trình học tập, công tác sống Cuối xin gửi lời chúc sức khỏe thành công tới tất q thầy gia đình toàn thể bạn Thái Nguyên, ngày 10 tháng năm 2016 Học viên Nguyễn Nam Phương v MỤC LỤC LỜI CAM ĐOAN ii LỜI CẢM ƠN iv MỤC LỤC v DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT vi DANH MỤC BẢNG viii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ix LỜI MỞ ĐẦU Chương CÁC KHÁI NIỆM CƠ SỞ 1.1 Ảnh số 1.1.1.Khái niệm phân loại ảnh số 1.1.2.Điểm ảnh 1.1.3.Màu mơ hình màu 1.1.4.Histogram 1.1.5.Định dạng ảnh 10 1.2 Các phép biến đổi ma trận 12 1.2.1.Biến đổi Cosine rời rạc DCT 12 1.2.2.Biến đổi Wavelet rời rạc DWT 15 1.2.3.Biến đổi SVD 16 1.3 Giấu tin 18 1.3.1.Khái niệm giấu tin 18 1.3.2.Giấu tin miền không gian 20 1.3.3.Giấu tin miền biến đổi 21 1.4 Thủy vân số 22 1.4.1.Khái niệm 22 1.4.2.Phân loại 22 1.4.3.Các yêu cầu hệ thống thủy vân 25 1.4.4.Mơ hình thủy vân 25 1.4.5.Tấn công thủy vân 27 1.4.6.Đánh giá chất lượng thủy vân 27 1.4.7.Ứng dụng thủy vân 29 vi Chương THỦY VÂN BỀN VỮNG DỰA TRÊN CÁC PHÉPBIẾN ĐỔI DWT VÀ SVD 31 2.1 Giới thiệu chung 31 2.2 Khai triển SVD 31 2.2.1 Khái niệm khai triển SVD 31 2.2.2 Một số tính chất khai triển SVD 32 2.3 Thủy vân miền SVD 34 2.4 Phương pháp DMA [5]: Thủy vân kết hợp SVD DWT ba mức 37 2.4.1 Thuật toán chuyểnđổi sang dãy nhị phân 37 2.4.2 Thuật toán nhúng thủy vân 37 2.4.3 Thuật tốn trích thủy vân 39 2.4.4 Nhận xét đánh giá 40 2.5 Phương pháp TDD [6]: Thủy vân sử dụng SVD DWT hai mức 41 2.5.1 Giới thiệu 41 2.5.2 Thuật toánnhúng thủy vân 41 2.5.3 Thuật tốn trích 42 2.5.4 Nhận xét đánh giá 43 Chương THỰC NGHIỆM, PHÂN TÍCH VÀ SO SÁNHCÁC LƯỢC ĐỒ THỦY VÂN 44 3.1 Các Độ đo xác định chất lượng tính bền vững 44 3.2 Giới thiệu chương trình 44 3.3 Kết thử nghiệm 49 3.3.1 Kết lược đồ DMA 49 3.3.2 Kết lược đồ TDD so sánh lược đồ với DMA 51 KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 54 DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Chữ viết tắt Diễn giải Ý nghĩa vii SVD QR NMF Singular Value Decomposition Biến đổi SVD QR Decomposition Biến đổi QR Non-negative Matrix Factorization Thừa số hóa ma trận khơng âm DCT Discrete Cosine Transform Biến đổi Cosine rời rạc IDCT Invert Discrete Cosine Transform Biến đổi ngược DCT DFT Discrete Fourier Transform Biến đổi Forier rời rạc IDFT Invert Discrete Fourier Transform Biến đổi ngược DFT DWT Discrete Wavelet Transform Biến đổi Wavelet rời rạc IDWT Invert Discrete Wavelet Transform Biến đổi ngược DWT FT Fourier Transfer Biến đổi Fourier viii DANH MỤC BẢNG Bảng 3.1: Kết thử nghiệm chất lượng ảnh sau 49 nhúng thủy vân: 49 Bảng 3.2: Kết thử nghiệm tính bền vững lược đồ thủy vân: 49 Bảng 3.3: Kết thử nghiệm tính bền vững lược đồ thủy vân 50 sau ảnh thủy vân bị công: 50 Bảng 3.4: So sánh chất lượng ảnh lược đồ DMA TDD 51 Bảng 3.5: Bảng So sánh tính bền vững lược đồ DMA TDD 52 dựa độ đo hệ số tương quan r 52 ix DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1.1: Biểu diễn điểm ảnh ảnh số Hình 1.2: Tổ hợp màu Red-Green-Blue hệ màu RGB Hình 1.3: Tổ hợp màu mơ hình màu CMYK Hình 1.4: Mặt phẳng màu U-V giá trị Y = 0.5 Hình 1.5: Biểu đồ histogram ảnh đa cấp xám Lena Hình 1.6: Cấu trúc tệp ảnh bitmap 10 Hình 1.7: Sơ đồ trình giấu tin 19 Hình 1.8: Sơ đồ trình giải mã tin giấu 20 Hình 1.9: Phân loại kỹ thuật thủy vân 23 Hình 1.10: Mơ hình hệ thống thủy vân 26 Hình 2.1: Một khối ảnh ảnh Baboon 32 Hình 2.2: Kết phân tích SVD ma trận A 33 Hình 2.3: Sơ đồ nhúng thủy vân DMA 39 Hình 2.4: Sơ đồ nhúng thủy vân TDD 42 Hình 2.5: Sơ đồ Trích thủy vân 43 LỜI MỞ ĐẦU Ngày nay, với phát triển mạnh mẽ công nghệ thông tin truyền thông, mạng Internet trở thành phương tiện truyền tải, chia sẻ thông tin, tài liệu cách thuận tiện, hiệu Thông tin ln sẵn sàng trực tuyến, người kết nối vào Internet để tìm kiếm cách dễ dàng thơng tin cần thiết Bên cạnh đó, cơng ty, nhà cung cấp sản phẩm bán sản phẩm thơng qua mạng Internet sẵn sàng cung cấp liệu, thông tin sản phẩm, dịch vụ cho người dùng thông qua hệ thống mạng Internet cách hiệu Với lượng thông tin truyền qua mạng ngày nhiều vấn nạn chép sử dụng không hợp pháp liệu số ngày tăng Tuy nhiên việc quản lý khai thác thông tin lại đơi nằm ngồi tầm kiểm sốt cá nhân, tổ chức vấn nạn chép bất hợp pháp, vi phạm quyền ngày gia tăng Từ cần thiết phải có giải pháp chống chép để hạn chế việc vi phạm quyền sản phẩm liệu số Một giải pháp hữu hiệu để bảo vệ quyền kỹ thuật thủy vân số Thủy vân số dựa kết nghiên cứu nhiều lĩnh vực khác như: Mật mã học, kỹ thuật giấu tin, lý thuyết thống kê xử lý tín hiệu số Mục đích phương pháp nhúng lượng thông tin có ích vào sản phẩm số (lượng thơng tin gọi thủy vân) Dựa mục đích sử dụng lược đồ thủy vân chia thành hai nhóm gồm thủy vân bền vững thủy vân dễ vỡ Thủy vân dễ vỡ kỹ thuật nhúng thủy vân vào ảnh, có can thiệp hay thay đổi tới ảnh gốc dấu thủy vân khơng cịn ngun vẹn; kỹ thuật thủy vân ứng dụng toán xác thực tính tồn vẹn liệu số Trong thủy vân bền vững ứng dụng toán bảo vệ quyền sản phẩm số 56 resizePos = get(handles.Image,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Image); cla reset hold off imshow(anh); set(handles.Image,'Units','normalized'); % Update handles structure handles.anhgoc='Lena.bmp'; W1=imread('Logo128.bmp'); set(handles.Watermark,'Units','pixels'); resizePos = get(handles.Watermark,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark); cla reset hold off imshow(W1); set(handles.Watermark,'Units','normalized'); % Update handles structure handles.W='Logo128.bmp'; % Update handles structure guidata(hObject, handles); % UIWAIT makes DMA wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = DMA_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in pshNhungTrich function pshNhungTrich_Callback(hObject, eventdata, handles) handles.output = hObject; anhgoc=handles.anhgoc; Watermark=handles.W; I=imread(anhgoc); W=imread(Watermark); [Anhw,Iw] = ThuyVan(I,W); [Wa] = TrichThuyVan(Iw, W); anh=imread(Wa); set(handles.Wextract,'Units','pixels'); 57 resizePos = get(handles.Wextract,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wextract); cla reset hold off imshow(anh); set(handles.Wextract,'Units','normalized'); anh1=imread(Anhw); set(handles.WImage,'Units','pixels'); resizePos = get(handles.WImage,'Position'); anh1 = imresize(anh1,[resizePos(3) resizePos(3)]); axes(handles.WImage); cla reset hold off imshow(anh1); set(handles.WImage,'Units','normalized'); guidata(hObject, handles); % - Executes on button press in pshTanCong function pshTanCong_Callback(hObject, eventdata, handles) handles.output = hObject; anhtancong=uigetfile('*.bmp','Select the bmp image'); anhtancong1 = imread(anhtancong); set(handles.ImageAttack,'Units','pixels'); resizePos = get(handles.ImageAttack,'Position'); anhtancong1 = imresize(anhtancong1,[resizePos(3) resizePos(3)]); axes(handles.ImageAttack); cla reset hold off imshow(anhtancong1); set(handles.ImageAttack,'Units','normalized'); handles.anhtancong=anhtancong; guidata(hObject,handles); % - Executes on button press in pstTrichTanCong function pstTrichTanCong_Callback(hObject, eventdata, handles) handles.output = hObject; anhwa=handles.anhtancong; I=imread(anhwa); Ww=handles.W; W=imread(Ww); [Wa] = TrichThuyVan(I, W); anh=imread(Wa); set(handles.Wattack,'Units','pixels'); resizePos = get(handles.Wattack,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wattack); cla reset 58 hold off imshow(anh); set(handles.Wattack,'Units','normalized'); guidata(hObject,handles); % - Executes on button press in pshChonGoc function pshChonGoc_Callback(hObject, eventdata, handles) anhgoc=uigetfile('*.bmp','Select the bmp image'); anhgoc1 = imread(anhgoc); set(handles.Image,'Units','pixels'); resizePos = get(handles.Image,'Position'); anhgoc1 = imresize(anhgoc1,[resizePos(3) resizePos(3)]); axes(handles.Image); cla reset hold off imshow(anhgoc1); set(handles.Image,'Units','normalized'); handles.anhgoc=anhgoc; guidata(hObject,handles); % - Executes on button press in pshChonW function pshChonW_Callback(hObject, eventdata, handles) W=uigetfile('*.bmp','Select the bmp image'); W1 = imread(W); set(handles.Watermark,'Units','pixels'); resizePos = get(handles.Watermark,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark); cla reset hold off imshow(W1); set(handles.Watermark,'Units','normalized'); handles.W=W; guidata(hObject,handles); % - Executes during object creation, after setting all properties function figure1_CreateFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called Mã Nguồn TDD function varargout = TDD(varargin) % DMA MATLAB code for DMA.fig % DMA, by itself, creates a new DMA or raises the existing % singleton* % % H = DMA returns the handle to a new DMA or the handle to % the existing singleton* % 59 % DMA('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in DMA.M with the given input arguments % % DMA('Property','Value', ) creates a new DMA or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before DMA_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to DMA_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help DMA % Last Modified by GUIDE v2.5 11-May-2016 22:54:56 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @DMA_OpeningFcn, 'gui_OutputFcn', @DMA_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before DMA is made visible function DMA_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; anh=imread('Lena.bmp'); set(handles.Image,'Units','pixels'); resizePos = get(handles.Image,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Image); cla reset hold off imshow(anh); set(handles.Image,'Units','normalized'); % Update handles structure handles.anhgoc='Lena.bmp'; 60 W1=imread('Logo128.bmp'); set(handles.Watermark,'Units','pixels'); resizePos = get(handles.Watermark,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark); cla reset hold off imshow(W1); set(handles.Watermark,'Units','normalized'); % Update handles structure handles.W='Logo128.bmp'; % Update handles structure guidata(hObject, handles); % UIWAIT makes DMA wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = DMA_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in pshNhungTrich function pshNhungTrich_Callback(hObject, eventdata, handles) handles.output = hObject; anhgoc=handles.anhgoc; Watermark=handles.W; I=imread(anhgoc); W=imread(Watermark); [Anhw,k1,a1,J] = ThuyVanDTT(I, W); [Wa] = TrichThuyVanDTT(J, W,k1,a1); anh=imread(Wa); set(handles.Wextract,'Units','pixels'); resizePos = get(handles.Wextract,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wextract); cla reset hold off imshow(anh); set(handles.Wextract,'Units','normalized'); anh1=imread(Anhw); 61 set(handles.WImage,'Units','pixels'); resizePos = get(handles.WImage,'Position'); anh1 = imresize(anh1,[resizePos(3) resizePos(3)]); axes(handles.WImage); cla reset hold off imshow(anh1); set(handles.WImage,'Units','normalized'); guidata(hObject, handles); % - Executes on button press in pshTanCong function pshTanCong_Callback(hObject, eventdata, handles) handles.output = hObject; anhtancong=uigetfile('*.bmp','Select the bmp image'); anhtancong1 = imread(anhtancong); set(handles.ImageAttack,'Units','pixels'); resizePos = get(handles.ImageAttack,'Position'); anhtancong1 = imresize(anhtancong1,[resizePos(3) resizePos(3)]); axes(handles.ImageAttack); cla reset hold off imshow(anhtancong1); set(handles.ImageAttack,'Units','normalized'); handles.anhtancong=anhtancong; guidata(hObject,handles); % - Executes on button press in pstTrichTanCong function pstTrichTanCong_Callback(hObject, eventdata, handles) handles.output = hObject; anhwa=handles.anhtancong; I=imread(anhwa); Ww=handles.W; W=imread(Ww); k1 = 193; a1 = 0.0021; [Wa] = TrichThuyVanDTT(I, W,k1,a1); anh=imread(Wa); set(handles.Wattack,'Units','pixels'); resizePos = get(handles.Wattack,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wattack); cla reset hold off imshow(anh); set(handles.Wattack,'Units','normalized'); guidata(hObject,handles); % - Executes on button press in pshChonGoc function pshChonGoc_Callback(hObject, eventdata, handles) 62 anhgoc=uigetfile('*.bmp','Select the bmp image'); anhgoc1 = imread(anhgoc); set(handles.Image,'Units','pixels'); resizePos = get(handles.Image,'Position'); anhgoc1 = imresize(anhgoc1,[resizePos(3) resizePos(3)]); axes(handles.Image); cla reset hold off imshow(anhgoc1); set(handles.Image,'Units','normalized'); handles.anhgoc=anhgoc; guidata(hObject,handles); % - Executes on button press in pshChonW function pshChonW_Callback(hObject, eventdata, handles) W=uigetfile('*.bmp','Select the bmp image'); W1 = imread(W); set(handles.Watermark,'Units','pixels'); resizePos = get(handles.Watermark,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark); cla reset hold off imshow(W1); set(handles.Watermark,'Units','normalized'); handles.W=W; guidata(hObject,handles); Mã nguồn TDD2 function varargout = TDD2(varargin) %TDD2 M-file for TDD2.fig % TDD2, by itself, creates a new TDD2 or raises the existing % singleton* % % H = TDD2 returns the handle to a new TDD2 or the handle to % the existing singleton* % % TDD2('Property','Value', ) creates a new TDD2 using the % given property value pairs Unrecognized properties are passed via % varargin to TDD2_OpeningFcn This calling syntax produces a % warning when there is an existing singleton* % % TDD2('CALLBACK') and TDD2('CALLBACK',hObject, ) call the % local function named CALLBACK in TDD2.M with the given input % arguments % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES 63 % Edit the above text to modify the response to help TDD2 % Last Modified by GUIDE v2.5 13-May-2016 00:37:40 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @TDD2_OpeningFcn, 'gui_OutputFcn', @TDD2_OutputFcn, 'gui_LayoutFcn', [], 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before TDD2 is made visible function TDD2_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; anh=imread('Lena.bmp'); set(handles.Image,'Units','pixels'); resizePos = get(handles.Image,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Image); cla reset hold off imshow(anh); set(handles.Image,'Units','normalized'); % Update handles structure handles.anhgoc='Lena.bmp'; W1=imread('Logo64.bmp'); set(handles.Watermark1,'Units','pixels'); resizePos = get(handles.Watermark1,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark1); cla reset hold off imshow(W1); set(handles.Watermark1,'Units','normalized'); handles.W1='Logo64.bmp'; W2=imread('MaVach64.bmp'); set(handles.Watermark2,'Units','pixels'); resizePos = get(handles.Watermark2,'Position'); W2 = imresize(W2,[resizePos(3) resizePos(3)]); 64 axes(handles.Watermark2); cla reset hold off imshow(W2); set(handles.Watermark2,'Units','normalized'); handles.W2='MaVach64.bmp'; % Update handles structure guidata(hObject, handles); % UIWAIT makes TDD2 wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = TDD2_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in pshNhungTrich function pshNhungTrich_Callback(hObject, eventdata, handles) handles.output = hObject; anhgoc=handles.anhgoc; Watermark1=handles.W1; Watermark2=handles.W2; I=imread(anhgoc); W1=imread(Watermark1); W2=imread(Watermark2); [Anhw,k1,a1,k2,a2,J] = ThuyVanDTT2(I, W1,W2); [Wa1,Wa2] = TrichThuyVanDTT2(J, W1,W2,k1,k2,a1,a2); anh=imread(Wa1); set(handles.Wextract1,'Units','pixels'); resizePos = get(handles.Wextract1,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wextract1); cla reset hold off imshow(anh); set(handles.Wextract1,'Units','normalized'); anh=imread(Wa2); set(handles.Wextract2,'Units','pixels'); resizePos = get(handles.Wextract2,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wextract2); cla reset hold off imshow(anh); 65 set(handles.Wextract2,'Units','normalized'); anh1=imread(Anhw); set(handles.WImage,'Units','pixels'); resizePos = get(handles.WImage,'Position'); anh1 = imresize(anh1,[resizePos(3) resizePos(3)]); axes(handles.WImage); cla reset hold off imshow(anh1); set(handles.WImage,'Units','normalized'); guidata(hObject, handles); % - Executes on button press in pshTanCong function pshTanCong_Callback(hObject, eventdata, handles) handles.output = hObject; anhtancong=uigetfile('*.bmp','Select the bmp image'); anhtancong1 = imread(anhtancong); set(handles.ImageAttack,'Units','pixels'); resizePos = get(handles.ImageAttack,'Position'); anhtancong1 = imresize(anhtancong1,[resizePos(3) resizePos(3)]); axes(handles.ImageAttack); cla reset hold off imshow(anhtancong1); set(handles.ImageAttack,'Units','normalized'); handles.anhtancong=anhtancong; guidata(hObject,handles); % - Executes on button press in pstTrichTanCong function pstTrichTanCong_Callback(hObject, eventdata, handles) handles.output = hObject; anhwa=handles.anhtancong; I=imread(anhwa); W1=imread('Logo64.bmp'); W2=imread('MaVach64.bmp'); k1 = 193; a1 = 0.0021; k2 = 65; a2 = 0.0113; [Wa1,Wa2] = TrichThuyVanDTT2(I, W1,W2,k1,k2,a1,a2); anh=imread(Wa1); set(handles.Wattack1,'Units','pixels'); resizePos = get(handles.Wattack1,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wattack1); cla reset hold off imshow(anh); set(handles.Wattack1,'Units','normalized'); 66 anh=imread(Wa2); set(handles.Wattack2,'Units','pixels'); resizePos = get(handles.Wattack2,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Wattack2); cla reset hold off imshow(anh); set(handles.Wattack2,'Units','normalized'); guidata(hObject,handles); % - Executes on button press in pshChonGoc function pshChonGoc_Callback(hObject, eventdata, handles) anhgoc=uigetfile('*.bmp','Select the bmp image'); anhgoc1 = imread(anhgoc); set(handles.Image,'Units','pixels'); resizePos = get(handles.Image,'Position'); anhgoc1 = imresize(anhgoc1,[resizePos(3) resizePos(3)]); axes(handles.Image); cla reset hold off imshow(anhgoc1); set(handles.Image,'Units','normalized'); handles.anhgoc=anhgoc; guidata(hObject,handles); % - Executes on button press in pshChonW2 function pshChonW2_Callback(hObject, eventdata, handles) W=uigetfile('*.bmp','Select the bmp image'); W1 = imread(W); set(handles.Watermark,'Units','pixels'); resizePos = get(handles.Watermark,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark); cla reset hold off imshow(W1); set(handles.Watermark,'Units','normalized'); handles.W2=W; guidata(hObject,handles); % - Executes on button press in pshChonW1 function pshChonW1_Callback(hObject, eventdata, handles) W=uigetfile('*.bmp','Select the bmp image'); W1 = imread(W); set(handles.Watermark,'Units','pixels'); 67 resizePos = get(handles.Watermark,'Position'); W1 = imresize(W1,[resizePos(3) resizePos(3)]); axes(handles.Watermark); cla reset hold off imshow(W1); set(handles.Watermark,'Units','normalized'); handles.W1=W; guidata(hObject,handles); Mã nguồn độ đo function varargout = DoDo(varargin) % DODO MATLAB code for DoDo.fig % DODO, by itself, creates a new DODO or raises the existing % singleton* % % H = DODO returns the handle to a new DODO or the handle to % the existing singleton* % % DODO('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in DODO.M with the given input arguments % % DODO('Property','Value', ) creates a new DODO or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before DoDo_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to DoDo_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help DoDo % Last Modified by GUIDE v2.5 13-May-2016 01:15:28 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @DoDo_OpeningFcn, 'gui_OutputFcn', @DoDo_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else 68 gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before DoDo is made visible function DoDo_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to DoDo (see VARARGIN) % Choose default command line output for DoDo handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes DoDo wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = DoDo_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; function editCor_Callback(hObject, eventdata, handles) % hObject handle to editCor (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of editCor as text % str2double(get(hObject,'String')) returns contents of editCor as a double % - Executes during object creation, after setting all properties function editCor_CreateFcn(hObject, eventdata, handles) % hObject handle to editCor (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER 69 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function editPSNR_Callback(hObject, eventdata, handles) % hObject handle to editPSNR (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of editPSNR as text % str2double(get(hObject,'String')) returns contents of editPSNR as a double % - Executes during object creation, after setting all properties function editPSNR_CreateFcn(hObject, eventdata, handles) % hObject handle to editPSNR (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes on button press in pshPSNR function pshPSNR_Callback(hObject, eventdata, handles) anh1=handles.anh1; anh2=handles.anh2; set(handles.editPSNR, 'String',PSNR(anh1,anh2)); % - Executes on button press in pshTinhToan function pshTinhToan_Callback(hObject, eventdata, handles) anh1=handles.anh1; anh2=handles.anh2; set(handles.editPSNR, 'String',PSNR(anh1,anh2)); set(handles.editCor, 'String',TuongQuan(anh1,anh2)); % - Executes on button press in pshChonAnh2 function pshChonAnh1_Callback(hObject, eventdata, handles) anh11=uigetfile('*.bmp','Select the bmp image'); anh = imread(anh11); set(handles.Image1,'Units','pixels'); resizePos = get(handles.Image1,'Position'); 70 anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Image1); cla reset hold off imshow(anh); set(handles.Image1,'Units','normalized'); handles.anh1=anh11; guidata(hObject,handles); % - Executes on button press in pshChonAnh2 function pshChonAnh2_Callback(hObject, eventdata, handles) anh22=uigetfile('*.bmp','Select the bmp image'); anh = imread(anh22); set(handles.Image2,'Units','pixels'); resizePos = get(handles.Image2,'Position'); anh = imresize(anh,[resizePos(3) resizePos(3)]); axes(handles.Image2); cla reset hold off imshow(anh); set(handles.Image2,'Units','normalized'); handles.anh2=anh22; guidata(hObject,handles); ... [6]: Thủy vân sử dụng SVD DWT hai mức 2.5.1 Giới thiệu Cũng [5], tác giả [6] đưa lược đồ thủy vân kết hợp phép biến đổi SVD DWT, có cách kết hợp nhúng thủy vân khác Ở sử dụng vùng tần số mức biến. .. số phép biến đổi ma trận, khái niệm giấu tin thủy vân số Chương 2: Trình bày kết nghiên cứu thủy vân số dựa kết phép biến đổi SVD DWT công bố đề xuất hai lược đồ thủy vân sử dụng kết hợp phếp biến. .. NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN NAM PHƯƠNG XÂY DỰNG CÁC LƯỢC ĐỒ THỦY VÂN BỀN VỮNG BẰNG CÁCH KẾT HỢP PHÉP BIẾN ĐỔI DWT VÀ SVD LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI