基于伪随机序列的扩频音频数字水印系统
项目介绍
本项目实现了一种基于扩频通信(Spread Spectrum Communication)原理的音频数字水印方案。系统利用伪随机序列(m序列)的优良相关特性,将二进制水印信息通过扩频调制并嵌入到音频信号的离散余弦变换(DCT)域中。该方案在保证音频感官质量的同时,具备较强的抗干扰能力和隐蔽性。
功能特性
- 扩频调制技术:通过将单个水印位扩展到长度为1023的伪随机序列上,提高信号的传输增益和隐蔽性。
- 频域嵌入方案:利用离散余弦变换(DCT)将信号转换至频域,并选取对人类听觉不敏感的中频区域进行操作。
- 自适应掩蔽模型:根据DCT系数的幅值动态调整嵌入强度,实现透明性与鲁棒性的平衡。
- 盲提取能力:提取过程无需原始音频参考,仅凭密钥(伪随机序列生成多项式)即可通过相关检测恢复信息。
- 综合性能评估:内置信噪比(SNR)、平均绝对误差(MAE)及提取准确率等多项评价指标。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Signal Processing Toolbox(信号处理工具箱,用于调用dct、idct等函数)。
系统实现逻辑
项目主程序严格遵循以下处理流程:
- 环境与参数初始化
设置系统采样频率为 44100Hz,定义待嵌入的 8 位二进制水印序列 [1 0 1 1 0 0 1 0]。配置嵌入强度系数 alpha,分帧长度为 2048 采样点。
- 音频载体生成
系统模拟生成一段长度为 5 秒的复合音频信号。该信号由 440Hz、880Hz 和 1320Hz 的正弦谐波叠加而成,并加入了微量的本底噪声,用以模拟真实的音频环境。
- 伪随机序列(PN)生成
采用 10 级线性反馈移位寄存器(LFSR)通过本原多项式 x^10 + x^3 + 1 产生长度为 1023 的 m 序列。生成的 0/1 序列被映射为 -1/1 极性信号,作为扩频载波。
- 水印嵌入过程
系统对音频进行等长分帧。每一帧经过 DCT 变换后,在第 200 至 1222 个频点(中频段)进行操作。若水印位为 1,则叠加正向 PN 序列;若为 0,则叠加负向 PN 序列。嵌入强度通过该频段系数的绝对值进行自适应缩放(Adaptive Gain),最后通过逆离散余弦变换(IDCT)重构音频。
- 水印提取过程
系统在含水印音频的对应位置提取 DCT 频段数据,将其与原始 PN 序列进行向量点积运算(互相关检测)。根据计算得出的检测统计量符号进行判决:相关值为正判定为 1,相关值为负判定为 0。
- 质量评价与可视化
系统计算原始音频与含水印音频之间的信噪比(SNR)和平均绝对误差(MAE),并统计水印提取的准确率。最后通过图形界面展示时域波形对比、频谱特征对比以及相关性检测的分布柱状图。
关键算法说明
- m序列生成算法
利用反馈多项式系数指导移位寄存器的状态更新。算法通过不断提取寄存器末位并利用多项式进行模2加法运算反馈至首位,生成周期长、自相关性强的伪随机比特流。
- 扩频调制与检测
扩频的核心在于将窄带的逻辑位信号乘以宽带的随机序列。这种方法使得水印信号能量被均匀分散在较宽的频带内。在接收端,利用 PN 序列的强自相关特性,通过点积运算将分散的能量重新汇聚,从而在强背景噪声中识别出水印信息。
- 频域自适应嵌入
系统并非固定强度嵌入,而是采用了简化的人类听觉掩蔽原理。公式为:C_new = C_old + alpha * |C_old| * PN。这意味着在原始信号能量较强的频段,水印嵌入强度也随之提高,从而在维持隐蔽性的同时增强了鲁棒性。
- 频谱分析
子程序通过快速傅里叶变换(FFT)分析信号的频域特性,并将其转换为分贝(dB)尺度进行展示,以便直观观察水印嵌入对音频频谱的影响。