【图像隐写】DCT数字水印嵌入+提取(含PSNR)【含GUI Matlab源码 1671期】

发布时间:2024年01月23日

?博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
??座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

?一、离散小波变换的音频信号数字水印技术简介

0 引言
近年来, 数字水印技术的作用越来越重要。数字水印技术是将一些标识信息直接嵌入数字载体当中, 或间接表示在信号载体中, 且不影响原载体的使用价值。通过隐藏在载体中的这些信息, 可以判断信息是否被篡改, 具有防伪溯源、保护信息安全、版权保护等作用。对于广播转播台站而言, 是广播音频的中转站, 在广播信号发送至千家万户之前务必保证信号的安全可靠, 但现在的大部分台站只是利用人耳的判断, 以及不同信源之间的比较, 具有较大的局限性。若利用数字水印的特性, 应用于广播节目中可以有效地防止信号插播, 可靠地保护信号安全, 保障广播的安全播出。

1 音频数字水印技术分类
根据数字水印在音频信号中的处理技术, 可将数字水印分为时域、变换域、压缩域数字水印。

1.1 时域数字水印
在时域数字水印技术中, 直接将水印信息嵌入至音频信号中, 通常会选择隐藏在信号不重要部位, 以保证其嵌入水印不影响原音频信号的监听效果。时域水印技术的实现较为容易且运算量小, 简单直接, 但是鲁棒性差, 容易被破解, 抵抗力较差。

1.2 变换域数字水印
在变换域数字水印中, 音频信号需经过时域至变换域的转换, 通常的变换域有离散余弦变换 (DCT, Discrete Cosine Transform) 、离散傅立叶变换 (DFT, Discrete Fourier transform) 、离散小波变换 (DWT, Discrete Wavelet Transform) 等。在变换域中嵌入水印信息, 通过反变换得到嵌入水印的音频时域信号。变换域水印技术较时域水印技术复杂, 但变换域嵌入的水印信息较时域而言, 不可见性更强, 隐蔽性更好, 鲁棒性更好。本文的研究主要基于DWT的音频信号的水印信息的嵌入与提取。

1.3 压缩域数字水印
在时域和变换域的水印技术, 都是直接将水印信号嵌入未压缩的音频格式中, 但是通常在音频信号的传输或存储中需要对音频信号进行压缩编码 (例如WMA、MP3等) , 因此压缩域数字水印也是水印技术也具有较大的实用价值。压缩域数字水印技术大致可分为三类: (1) 在非压缩域嵌入水印, 将音频信号与水印信息一起压缩; (2) 在压缩域中, 直接将水印信息嵌入压缩的音频信号中; (3) 将压缩后的信号进行解压缩, 然后嵌入水印信息, 最后将水印信息和解压后的音频信号一起压缩。总的来说, 压缩域水印技术的编解码系统过于复杂, 受压缩编码格式限制大, 压缩后的音频信号已经去除了冗余, 因此加入水印的难度大, 压缩域水印技术有待进一步研究。

2 基于DWT的音频水印算法
2.1 水印嵌入
本文研究的音频水印算法是基于离散小波变换 (DWT) , 音频信号通过DWT变换, 在变换域中嵌入水印信息, 再经过逆变换 (IDWT) 从而得到嵌入水印的音频信号。水印嵌入原理框图如图1所示。

假定水印为M1×M2的二维图像bw, 由于音频信号通常为一维向量, 故水印信息在嵌入音频信号之前需要将二维降至一维向量w, 即M=M1×M2。通常我们也可以将图像进行打乱加密, 增强水印隐蔽性。

假定语音信号为s, 长度为N, 则s={s1, s2, s3, …, sN}由于语音信号较长在处理中一般需要进行分段, 每段长度设为N1, 故该语音信号分为K=fix (N/N1) 段进行处理, 每段语音均嵌入一个水印信息。

小波变换是为了解决傅立叶变换的不足而提出的一种分析变换, 傅立叶变换的基函数是铺满整个时域的正弦信号, 对于突变信号以及变化的频率成分信息均不能较准确地表示。而小波变换是时间和频率的局部变换, 更能准确地表示音频信号的频域特征, 常用的小波基有Haar小波、Daubechies (db N) 小波、Marr小波等。本文采用的小波基是Haar小波, 它是支撑域在t∈[0, 1]范围内的矩形波, 定义如下:
在这里插入图片描述
图1 音频信号水印嵌入原理框图
在这里插入图片描述
图2 音频信号水印提取原理框图
在这里插入图片描述
取定Haar小波基后, 则语音信号s可以表示为:
在这里插入图片描述
其中Cj, k为离散小波系数, 将音频信号分解为低频的近似部分和高频的细节部分, 我们在水印信息的嵌入处理中, 主要针对代表低频近似部分的系数向量处理, 即将水印信号放入低频近似部分, 高频细节部分不变, 以保证语音质量基本不变。由于嵌入的水印为二值图像, 因此如果水印信息的值为1, 则将对应的低频系数增大, 相反如果值为0, 则将对应的低频系数降低。在DWT域嵌入水印信息后, 然后通过IDWT变换, 将语音信号变换成时域信号。

2.2 水印提取
为了保证信息安全, 在发送端发送嵌入水印的音频信号, 而在接收端为了确定音频信息的准确性, 我们通常需要提取水印以确保来源的真实性, 因此水印的提取技术也尤为重要。在水印提取过程中, 需要原始音频信号与嵌入水印的音频信号同时进行DWT, 再将两者参数进行分析比较提取出水印信息。水印提取原理框图如图2所示。

在前面所述的水印嵌入过程中, 将水印信息嵌入高频的细节部分, 因此在提取水印过程中, 我们也只需比较原始语音信号S的低频小波系数向量c A与嵌入水印的音频信号s1的低频小波系数向量c A1作比较, 若c A1>c A, 则水印信息为1;反之则为0, 再通过向量平均, 如此得到水印信息的一维向量, 最后通过升维得到二值图像。

?二、部分源代码

function [embimg,p]=wtmark(im,wt)
% wtmark function performs watermarking in DCT domain
% it processes the image into 8x8 blocks.

% im = Input Image
% wt = Watermark
% embimg = Output Embedded image
% p = PSNR of Embedded image

% Checking Dimnesions
im=imread(‘b.jpg’);
if length(size(im))>2
im=rgb2gray(im);
end

im = imresize(im,[512 512]); % Resize image
watermark = imresize(im2bw((wt)),[32 32]);% Resize and Change in binary

x={}; % empty cell which will consist all blocks
dct_img=blkproc(im,[8,8],@dct2);% DCT of image using 8X8 block
m=dct_img; % Sorce image in which watermark will be inserted

k=1; dr=0; dc=0;
% dr is to address 1:8 row every time for new block in x
% dc is to address 1:8 column every time for new block in x
% k is to change the no. of cell

%%%%%%%%%%%%%%%%% To divide image in to 4096—8X8 blocks %%%%%%%%%%%%%%%%%%
for ii=1:8:512 % To address row – 8X8 blocks of image
for jj=1:8:512 % To address columns – 8X8 blocks of image
for i=ii:(ii+7) % To address rows of blocks
dr=dr+1;
for j=jj:(jj+7) % To address columns of block
dc=dc+1;
z(dr,dc)=m(i,j);
end
dc=0;
end
x{k}=z; k=k+1;
z=[]; dr=0;
end
end
nn=x;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% To insert watermark in to blocks %%%%%
i=[]; j=[]; w=1; wmrk=watermark; welem=numel(wmrk); % welem - no. of elements
for k=1:4096
kx=(x{k}); % Extracting block into kx for processing
for i=1:8 % To address row of block
for j=1:8 % To adress column of block
if (i8) && (j8) && (w<=welem) % Eligiblity condition to insert watremark
% i=1 and j=1 - means embedding element in first bit of every block
if wmrk(w)==0
kx(i,j)=kx(i,j)+35;
elseif wmrk(w)==1
kx(i,j)=kx(i,j)-35;
end
end
end
end
w=w+1;
x{k}=kx; kx=[]; % Watermark value will be replaced in block
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%% To recombine cells in to image %%%%%%%%%
i=[]; j=[]; data=[]; count=0;
embimg1={}; % Changing complete row cell of 4096 into 64 row cell
for j=1:64:4096
count=count+1;
for i=j:(j+63)
data=[data,x{i}];
end
embimg1{count}=data;
data=[];
end

% Change 64 row cell in to particular columns to form image
i=[]; j=[]; data=[];
embimg=[]; % final watermark image
for i=1:64
embimg=[embimg;embimg1{i}];
end
embimg=(uint8(blkproc(embimg,[8 8],@idct2)));
imwrite(embimg,‘out.jpg’)
p=psnr(im,embimg);

?三、运行结果

在这里插入图片描述

?四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]宋俊辉,鲁骏.彩色图像数字水印嵌入和提取模型研究——基于DWT和DCT[J].现代商贸工业. 2011,23(17)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

文章来源:https://blog.csdn.net/KeepingMatlab/article/details/135728195
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。