【信号隐藏】基于离散余弦变换DCT-SVD变换音频数字水印嵌入提取matlab源码

1 模型

提出了一种基于离散余弦变换及奇异值分解的音频水印算法.首先对二值水印图像进行奇异值分解求出奇异值,然后对所得奇异值进行基于音频信号变换域性质的调制,并对音频信号进行离散余弦变换并计算水印嵌入点,最后将经过调制的水印信号嵌入.仿真试验证明这种自适应音频数字水印算法具有稳健性和不可觉察性.

2 部分代码

%% 基于DCT-SVD实现信号数字水印嵌入提取

clear all;
close all
warning off
clc;
key=15;
%Arnold置换次数,作为密钥
Orignalmark=imread('1.bmp');  %读入64*64的水印图片
[wrow,wcol,mm]=size(Orignalmark);
if mm~=1
   Orignalmark=rgb2gray(Orignalmark);
end
if wrow~=wcol
   Orignalmark=imresize(Orignalmark,[wrow wrow]);
end
[wrow,wcol]=size(Orignalmark);
%--- 测试密钥key是否超出范围---------
n=check_arnold(wrow);
if (key+1)>n
   error('arnold key error');
end


MarkedX=idct(ca2);%反DCT变换
figure(1);
subplot(3,1,1);
plot(X);     %显示音频文件波形
title('原始音频信号');
ylim([-2, 2])
subplot(3,1,2);
plot(MarkedX);
title('嵌入水印后音频');
ylim([-2, 2])
%% 攻击
%将含水印图像f归一化,以便于攻击处理。
%攻击----------------------------------------------------------------------
attack=2;
switch attack
   case 0,
       attackf=MarkedX;
       att='未攻击';
   case 1,
       % %1. 高通滤波
       f1=10000;   % f 1:通带截止频率
       f2=20000;% f 3:阻带截止频率
       rp=0.1;%rp:边带区衰减DB数设置
       rs=2;%rs:截止区衰减DB数设置
       attackf=lowp(MarkedX,f1,f2,rp,rs,fs);
       att='低通滤波';
   case 2,
       %%2. 添加高斯噪声
       attackf=MarkedX+0.1*rand(1);
       att='添加高斯噪声';
   case 3,
       %%%4.部分信号丢失
       xx=randperm(length(MarkedX));
      
       attackf=MarkedX;
         attackf(xx(1:100))=1;%部分信号丢失
%         attackf=WienerScalart96(MarkedX,fs,1);
       att='部分信号丢失';
end
figure(1);
subplot(3,1,3);
plot(attackf);
title([att,'后音频']);
ylim([-2, 2])

% 显示结果
figure;
subplot(211);
imshow(Orignalmark),title('水印');
attackmark=arnold(exteredmark,wrow,n-key);
subplot(212);
imshow(attackmark),title('重新提取水印');
%% 计算PSNR\NC\BER
psnrvalue=psnr(Orignalmark,attackmark);
[number,BER] = biterr(water_vector1,water_vector2);% 比特错误数和比特错误率(BER)
Nc=nc(Orignalmark,attackmark);%NC系数
disp(['比特错误率(BER)=',num2str(BER)])
disp(['NC系数=',num2str(Nc)])

3 仿真结果

4 参考文献

[1]柏玉保, 柏森, 暴晋飞,等. 一种基于DWT和DCT域的音频信息隐藏算法[J]. 微型机与应用, 2010(01):37-40.

[2]赵静, 周明全. 基于DCT变换及SVD处理的音频数字水印算法[J]. 计算机技术与发展, 2005(02):50-52.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值