当前位置: 首页 > article >正文

基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

(完整程序运行后无水印)

2.算法运行软件版本

vivado2019.2

matlab2022a

3.部分核心程序

(完整版代码包含详细中文注释和操作步骤视频)

..................................................................
top_LSB UUT(
.i_clk       (i_clk),
.i_rst       (i_rst),
.i_ywav      (i_ywav),
.i_mark      (i_mark),
.o_ywavLSB   (o_ywavLSB),
.o_ywav0     (o_ywav0),
.o_mark      (o_mark)
);
	
 
	initial begin
	    i_ywav=0;
	    i_mark=0;
 
		// Initialize Inputs
		i_clk = 1;
		i_rst = 1;

		// Wait 100 ns for global reset to finish
		#100 
      i_rst = 0;  
      
		// Add stimulus here

	end
     
	  
   always #5 i_clk=~i_clk;
   
   
parameter LEN = 65536;//导入数据的长度
 
reg signed[9:0]ywav[LEN:1];  
integer fids1;
integer idx1=0,idx12=0;




initial 
begin
    //D:\code2\project_1
	fids1 = $fopen("D:\\code2\\project_1\\ywav2.txt","r");//导入数据的路径
	idx1=0;
	idx12=0;
	while(!$feof(fids1))
	@(posedge i_clk)
	begin
	$fscanf(fids1,"%d",ywav[idx1+1]);
	idx1=idx1+1;
	end
	$fclose(fids1);
end
 
 
reg signed[3:0]mark[LEN:1]; 
integer fids2;
integer idx2=0,idx22=0;

initial 
begin
	fids2 = $fopen("D:\\code2\\project_1\\Wmark.txt","r");//导入数据的路径
	idx2=0;
	idx22=0;
	while(!$feof(fids2))
	@(posedge i_clk)
	begin
	$fscanf(fids2,"%d",mark[idx2+1]);
	idx2=idx2+1;
	end
	$fclose(fids2);
end
 
 
 
 always @ (posedge i_clk)
 begin
	  if(idx1 >= LEN+1)
	  begin
	       if(idx12==2*LEN+1)
	       idx12<=0;
	       else
	       idx12<=idx12+1;
	  end
	  
	  if(idx12<=LEN&idx22>=1)
	  i_ywav<=ywav[idx12];
	  else
	  i_ywav<=0;
end

 always @ (posedge i_clk)
 begin
	  if(idx2 >= LEN+1)
	  begin
	       if(idx22==2*LEN+1)
	       idx22<=0;
	       else
	       idx22<=idx22+1;
	  end
	  
	  if(idx22<=LEN&idx22>=1)
	  i_mark<=mark[idx22];
	  else
	  i_mark<=0;
end

 

endmodule
195

4.算法理论概述

       音频水印技术是信息隐藏领域的一个重要分支,它通过在音频信号中嵌入特定的水印信息来实现版权保护、内容认证、数据追踪等功能。基于 LSB(Least Significant Bit,最低有效位)的音频水印算法因其简单高效而被广泛应用。现场可编程门阵列(FPGA)具有灵活性高、可重构性强、并行处理能力突出等优点,非常适合用于实现音频水印算法,能够满足不同应用场景下的实时性和性能要求。

       LSB 算法的核心思想是利用音频信号采样点的最低有效位来隐藏水印信息。对于音频信号的每一个采样点si,其在二进制表示下可以表示为:

       通过这种方式,将水印信息隐藏在音频信号中,人耳难以察觉音频信号在嵌入水印前后的差异,因为最低有效位的改变对音频信号的感知影响较小。

      音频信号在传输或处理过程中可能会经过各种滤波器,如低通滤波器、高通滤波器等。滤波操作可能会改变音频信号的频率特性,从而影响水印信息的提取。对于 LSB 算法,由于其嵌入位置在最低有效位,相对来说对滤波攻击具有一定的抵抗能力。但一些强烈的滤波操作仍可能导致水印信息丢失或错误提取。例如,在经过低通滤波器后,音频信号的高频部分被削弱,如果水印信息恰好嵌入在与高频相关的采样点最低有效位,可能会影响提取的准确性。

        音频压缩是常见的音频处理方式,如 MP3 压缩。在压缩过程中,音频信号的一些冗余信息被去除,可能会对水印信息造成破坏。LSB 算法在抗压缩攻击方面表现相对较弱,因为压缩算法可能会改变音频信号的采样点值,导致嵌入在最低有效位的水印信息丢失或错误。例如,MP3 压缩采用了心理声学模型,根据人耳听觉特性对音频信号进行压缩,可能会将一些对听觉影响较小的采样点进行较大幅度的量化处理,从而破坏水印信息。

        基于 LSB 的音频水印嵌入提取算法的复杂度相对较低。嵌入过程主要涉及音频信号的分帧、水印信息的预处理和 LSB 位替换操作,提取过程主要包括音频信号分帧、LSB 位提取、纠错解码和解密操作。这些操作在计算上相对简单,主要是一些基本的逻辑运算和位操作,因此算法的时间复杂度较低。

5.算法完整程序工程

OOOOO

OOO

O


http://www.kler.cn/a/445196.html

相关文章:

  • MySQL数据库——门诊管理系统数据库数据表
  • C语言经典100例
  • python经典概念:装饰器
  • ECharts 饼图:数据可视化的重要工具
  • 【前端】NodeJS:MongoDB
  • 【长城杯】Web题 hello_web 解题思路
  • ADOADO.NET基础
  • OpenGL ES 03 加载3张图片并做混合处理
  • 四相机设计实现全向视觉感知的开源空中机器人无人机
  • 共创共建!葡萄城 SpreadJS 完成 HarmonyOS NEXT 操作系统兼容认证
  • tcp_ack函数
  • 前端模块化
  • 【ETCD】ETCD Leader 节点写入数据流程概览
  • 计算机基础知识复习12.20
  • LCD1602显示模块详解
  • 数说故事聚焦“卖车”场景,推出AI汽车销售转化解决方案
  • 【优选算法篇】揭秘快速排序:分治算法如何突破性能瓶颈
  • 完整微服务设计 功能实现
  • 【Spring】配置文件的使用
  • D99【python 接口自动化学习】- pytest进阶之fixture用法
  • 将4G太阳能无线监控的视频接入电子监控大屏,要考虑哪些方面?
  • Altair: 轻松创建交互式数据可视化
  • Hexo Next主题集成百度统计
  • 进网许可认证、交换路由设备检测项目更新25年1月起
  • 占个坑:利用工作以外的时间,用numpy实现MLP-手写识别
  • Springboot 学习 之 logback-spring.xml 日志压缩 .tmp 临时文件问题