首页 > 行业资讯 > 【信号隐藏】基于小波变换算法DWT和LSB实现音频数字水印嵌入提取附matlab代码

【信号隐藏】基于小波变换算法DWT和LSB实现音频数字水印嵌入提取附matlab代码

时间:2022-04-11 来源: 浏览:

【信号隐藏】基于小波变换算法DWT和LSB实现音频数字水印嵌入提取附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于话题 #信号处理应用matlab源码 182个

1 简介

主要研究了在数字语音信号中加入数字水印的方法,提出了一种基于小波变换和LSB的数字水印隐藏与检测算法,用这种算法隐藏水印具有很强的隐藏性,对原始语音的影响基本上察觉不出来.叠加了水印的语音在经过多种强干扰及各种信号处理的变换之后,使用本算法仍能正确检测出水印的存在,如它可以抵抗噪声干扰,去噪算法对信号进行去噪处理,语音信号的有损压缩以及信号的重新采样等.

2 部分代码

function varargout = untitled(varargin) % UNTITLED MATLAB code for untitled.fig % UNTITLED, by itself, creates a new UNTITLED or raises the existing % singleton*. % % H = UNTITLED returns the handle to a new UNTITLED or the handle to % the existing singleton*. % % UNTITLED(’CALLBACK’,hObject,eventData,handles,...) calls the local % function named CALLBACK in UNTITLED.M with the given input arguments. % % UNTITLED(’Property’,’Value’,...) creates a new UNTITLED or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before untitled_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to untitled_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 untitled % Last Modified by GUIDE v2.5 28-Dec-2020 19:45:23 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct(’gui_Name’, mfilename, ... ’gui_Singleton’, gui_Singleton, ... ’gui_OpeningFcn’, @untitled_OpeningFcn, ... ’gui_OutputFcn’, @untitled_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 untitled is made visible. function untitled_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 untitled (see VARARGIN) % Choose default command line output for untitled handles.output = hObject; ha = axes(’units’,’normalized’,’pos’,[0 0 1 1]); uistack(ha,’down’); ii = imread(’beijing.jpg’); %设置程序的背景图为beijing.jpg image(ii); colormap gray set(ha,’handlevisibility’,’off’,’visible’,’off’); % Update handles structure guidata(hObject, handles); % UIWAIT makes untitled wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = untitled_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 pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear sound; cla (handles.axes1,’reset’); cla (handles.axes2,’reset’); global fs; global x1; global xmax; global xmin; global t; global l1; fs = 8000; %采样频率为8000HZ [x1,fs] = audioread(’Rihanna - Take A Bow.wav’); %音频信号x1,采样率fs xmax = max(abs(x1)); %计算最大幅度 xmin = min(abs(x1)); %计算最小幅度 l1 = size(x1); %l1计算出载频的总长度,便于FFT分析 t = (0:length(x1)-1)/fs; y1 = fft(x1,fs); %对信号做FFT变换 f = fs*(0:900)/fs; axes(handles.axes1); plot(t,x1) %做原始语音信号的时域图形 grid on;axis tight; title(’原始语音信号时域波形’); xlabel(’time(s)’); ylabel(’幅度’); axes(handles.axes2); plot(f,abs(y1(1 : 901))) %做原始语音信号的FFT频谱图 grid on;axis tight; title(’原始语音信号频域波形’) xlabel(’HZ’); ylabel(’幅度’); sound(x1,fs); %回放原始信号 % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear sound; cla (handles.axes1,’reset’); cla (handles.axes2,’reset’); global fs; global sy; global symax; global symin; global syfft; global f; global l2; global t1; %-----------读取水印信号并显示 fs = 8000; %设定采样频率为8000HZ [sy,fs] = audioread(’test_new.wav’); %水印信号sy,采样率fs symax = max(abs(sy)); %计算最大幅度 symin = min(abs(sy)); %计算最小幅度 l2 = size(sy); %l2计算出载频的总长度,便于FFT分析 t1 = (0:length(sy)-1)/fs; syfft = fft(sy,fs); f = fs*(0:900)/fs; y2 = fft(sy,fs); %对水印信号做FFT变换 f = fs*(0:900)/fs; axes(handles.axes1); %做原始水印信号的时域图形 plot(t1,sy) grid on;axis tight; title(’原始水印信号时域波形’); xlabel(’time(s)’); ylabel(’幅度’); axes(handles.axes2); %做原始水印信号的FFT频谱图 plot(f,abs(y2(1 : 901))) grid on;axis tight; title(’原始水印信号频域波形’) xlabel(’Hz’); ylabel(’幅度’); sound(sy,fs); %回放水印信号 % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear sound; cla (handles.axes1,’reset’); cla (handles.axes2,’reset’); global fs; global xmax; global xmin; global x1; global sy; global l1; global t global y1; global f; global symax; global symin; global t1; global syfft; global y2; global lhsy; global lhx1; global fdsy; global xx1; global qrh; global QRH; global l2; global t2; %-------------读入原始信号 fs = 8000; %采样频率为8000HZ [x1,fs] = audioread(’Rihanna - Take A Bow.wav’); %音频信号x1,采样率fs xmax = max(abs(x1)); %计算最大幅度 xmin = min(abs(x1)); %计算最小幅度 l1 = size(x1); %l1计算出载频的总长度,便于FFT分析 t = (0:length(x1)-1)/fs; y1 = fft(x1,fs); %对信号做FFT变换 f = fs*(0:900)/fs; %-----------读取水印信号 [sy,fs] = audioread(’test_new.wav’); %水印信号sy,采样率fs symax = max(abs(sy)); %计算最大幅度 symin = min(abs(sy)); %计算最小幅度 l2 = size(sy); %l2计算出载频的总长度,便于FFT分析 t1 = (0:length(sy)-1)/fs;

3 仿真结果

4 参考文献

[1]杨立东. "基于提升小波变换的音频数字水印隐藏与检测算法." 中国通信学会学术年会 2008.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐