luận văn 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

77 244 0
luận văn 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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

i LỜI CAM ĐOAN Tôi xin cam đoan toà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 Toàn mã nguồn chương trình hoàn toàn 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 hoàn toàn tìm hiểu thực Nếu sai xin hoàn toà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 ii 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 đỡ 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 toàn bảo mật thông tin thầy Nguyễn Bá Tườnghướ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 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 quý thầy cô 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 iii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT v DANH MỤC BẢNG vi DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vii 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 iv 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 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 toá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 toá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 v DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Chữ viết tắt SVD QR NMF Diễn giải Ý nghĩa 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 vi 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 vii 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 8 ả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 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 nằm tầm kiểm soá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 nguyên vẹn; kỹ thuật thủy vân ứng dụng toán xác thực tính toà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ố Luận văn trình bày số lược đồ thủy vân bền vững dựa trêncác phép biến đổi SVD,DWTứng dụng việc bảo vệbản quyền liệu ảnh số Đây hướng nghiên cứu giới, có ý nghĩa khoa học ứng dụng thực tiễn Nội dung luận văn tổ chức thành ba chương sau: Chương 1:Trìnhbàytổngquanvềcác kiến thức ảnh số, 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 đổi SVD DWT Chương 3: Trình bày phântích,đánhgiá so sánh lược đồ thủy vân trình bày chương 2.Đồng thời tác giả đưa kết chương trình thử nghiệm cho lược đồ Chương CÁC KHÁI NIỆM CƠ SỞ Chương trình bày khái niệm cơbản ảnh số, ảnh nhị phân, ảnh đa mức xám, ảnh mầu, điểm ảnh, mầu mô hình mầu, định dạng ảnh, phép biến đổi ma trận thường dùng xử lý ảnh, khái niệm giấu tin, thủy vân số 1.1 Ảnh số 1.1.1 Khái niệm phân loại ảnh số Ảnh số tập hợp bao gồm hữu hạn phần tử gọi điểm ảnh (pixel), điểm ảnh biểu diễn số hữu hạn bit Trên phương diện toán học, ảnh số xem ma trận nguyên dương gồm m hàng n cột, phần tử ma trận đại diện cho điểm ảnh Dựa theo màu sắc ta chia ảnh số thành loại bản: Ảnh nhị phân, ảnh đa cấp xám ảnh màu (true color) Ảnh nhị phân Ảnh nhị phân ảnh có hai màu, màu đại diện cho màu màu lại cho đối tượng ảnh.Nếu hai màu đen trắng gọi ảnh đen trắng.Như vậy, ảnh nhị phân xem ma trận nhị phân Ảnh đa mức xám Ảnh đa cấp xám ảnh nhận tối đa 256 mức sáng khác khoảng màu đen - màu trắng Như vậy, ảnh đa mức xám xem ma trận không âm có giá trị tối đa 255 Mỗi điểm ảnh ảnh đa cấp xám biểu diễn cường độ sáng ảnh điểm Ảnh màu Ảnh màu hay gọi ảnh true color, điểm ảnh biểu diễn số byte (thường byte)đại diện cho thành phần màu vậy, ảnh màu xem ma trận nguyên ứng với thành phần màu 56 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('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); 57 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); 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)]); 58 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) 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 59 % the existing singleton* % % 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'); 60 % 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,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'); 61 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); 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'); 62 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); 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)" 63 % % See also: GUIDE, GUIDATA, GUIHANDLES % 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'); 64 set(handles.Watermark2,'Units','pixels'); resizePos = get(handles.Watermark2,'Position'); W2 = imresize(W2,[resizePos(3) resizePos(3)]); 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); 65 cla reset hold off imshow(anh); 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 66 imshow(anh); set(handles.Wattack1,'Units','normalized'); 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'); 67 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.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 68 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 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 69 % 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 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); 70 set(handles.Image1,'Units','pixels'); resizePos = get(handles.Image1,'Position'); 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); ... gọi thủy vân Thủy vân chuỗi ký tự, hình ảnh, hay logo Có thể chia thủy vân số thành hai nhóm thủy vân dễ vỡ thủy vân bền vững Thủy vân dễ vỡ kỹ thuật nhúng thủy vân vào ảnh, cho có phép biến đổi. .. vân. Một yêu cầu lý tưởng thủy vân bền vững muốn loại bỏ thủy vân có cách phá hủy sản phẩm .Thủy vân bền vững lại chia thành hai loại thủy vân ẩn thủy vân Thủy vân loại thủy vân lên sản phẩm người... 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

Ngày đăng: 16/04/2017, 17:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan