一、简介

数字水印将标识信息直接嵌入数字载体,而不影响原载体的使用价值,使用者不易察觉但可以被生产方识别和辨认,可以保护信息安全,实现防伪溯源,也是信息隐藏技术的研究领域之一。LSB(least significant bits)是最为简单的数字水印制造方法,可以保证水印不被使用人所见,但可以被制造者辨认。
1 LSB算法简介
LSB全称为 Least Significant Bit(最低有效位),是一种简单而有效的数据隐藏技术。LSB隐写的基本方法是用欲嵌入的秘密信息取代载体图像的最低比特位,原来的图像的高位平面与代表秘密信息的最低平面组成含隐蔽信息的新图像。

灰度化的图像为单通道格式存储像素,每个像素值在0~255内,而像素的位平面则是对应二进制的像素的各个位。以上图为例,某个像素的值为78,其二进制01001110,从左到右位权依次降低,最左边为最高有效位(MSB,其位权为 2 7 2^72
7
),最右边位最低有效位(LSB,位权为2 0 2^02
0
)。把每个像素的相同位抽取出来组成一个新的平面,就是所谓的图的位平面。而LSB隐写算法,如其名字,是在LSB也就是最低位平面进行信息嵌入/隐藏。

需要注意的一点是,LSB嵌入的时候,载体图像格式应该为灰度图格式

以著名的Lena图为例,一下是灰度图Lena原图:

下面是其各个位平面图,从左到右、从上到下位平面依次降低:

可以看到,位平面越高包含的原图像信息越多,对图像的灰度值贡献越大,并且相邻比特的相关性也越强,反之则相反。LSB最低位平面基本上不包含图像信息了,类似随机的噪点/噪声,因此,可以在此处填入水印/秘密信息。

嵌入示意图如下:

选取不同位平面嵌入时,LSB算法的保真度:
2 算法原理
通俗来讲我们看到的图片都是由一个个小的像素点来构成的,所有像素点摆在一起,构成一个大方块,这个大方块就是我们所见的图像。灰度图像(也就是我们平时所说的黑白图像)是由一层像素点组成的,而彩色图像是由三层这样的灰度图像组成的。这里拿灰度图像举例,我们之所以能在图像上看到黑色和白色,是因为每个像素点的像素值不同。0表示纯黑,255表示纯白,灰色就是由这两个数字之间的值构成。越靠近0越黑,越靠近255越白。那为什么是0和255呢?因为计算机是二进制,它会用8个比特来表示一个像素点(也可以用更多的比特,这样图像的颜色分级就越多,同时图像也会占用更大的空间,但是普通人的眼睛并不能辨认这么多的颜色,除非你异于常人),所以最大值是255,最小是0。lsb就是基于2进制这一特点来隐藏信息的,因为人眼并不是很精密的颜色或亮度的感知器,所以把像素灰度上下微调1是不会被人眼察觉的,也就是修改8位二进制码中最小的一位。当我们把图片每个像素的最后一位按照我们的想法改变,使他表现为我们想要的信息,但用户却不能看出,也不会影响图片的内容。这就是lsb数字水印。
3 LSB算法的基本特点:
LSB是一种大容量的数据隐藏算法
LSB的鲁棒性相对较差(当stego图像遇到信号处理,比如:加噪声,有损压缩等,在提取嵌入信息时会丢失)
4 常见LSB算法的嵌入方法:
秘密信息在最低位平面连续嵌入至结束,余下部分不作任何处理(典型软件MandelSteg)
秘密信息在最低位平面连续嵌入至结束,余下部分随机化处理(也称沙化处理,典型软件PGMStealth)
秘密信息在最低位平面和次低位平面连续嵌入,并且是同时嵌入最低位平面和次低位平面
秘密信息在最低位平面嵌入,等最低位平面嵌入完全嵌入之后,再嵌入次低位平面
秘密信息在最低位平面随机嵌入
以上五种方式,当嵌入容量不同时,鲁棒性不同

二、部分源代码

clear all;
clc;
% 读取语音数据
[x_org,fs,bits]=wavread('C8_1_y.wav');
% 无符号化语音数据
if (bits==16)x=uint16((x_org+1)*2^(bits-1));
elseif (bits==8)x=uint8((x_org+1)*2^(bits-1));
end
% 载入隐秘数据
load  'C8_1_y.DAT' -mat;
nBits=1;
% 嵌入隐秘信息
[x_embed,m_len]=hide_LSBEmbed(x,message,nBits);% 提取隐秘信息
[message_rec]=hide_LSBExtract(x_embed,m_len,nBits);% 结果分析与对比
% Step 1  波形分析
figure(1);
subplot(311);
plot(x);title('原始语音');
xlabel('采样点')
ylabel('幅度')
subplot(312);
plot(x_embed);title('嵌入隐秘信息语音');
xlabel('采样点')
ylabel('幅度')
subplot(313);
plot(x-x_embed);title('两者之差');
xlabel('采样点')
ylabel('幅度')
ylim([-10 10]);% Step 2  恢复率分析
figure(2);
subplot(211);
imshow(reshape(message,m_mess,n_mess),[0 1]);
title('原始隐秘信息');
subplot(212);
len_mess=length(message);
message_rec=message(1:len_mess);
err_rate=sum(abs(message-message_rec))/len_mess;
imshow(reshape(message_rec,m_mess,n_mess),[0 1]);

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

【语音隐藏】基于matlab LSB语音信息隐藏【含Matlab源码 577期】相关推荐

  1. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  2. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  3. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  4. 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  5. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  6. 基于JAVA学术会议信息网站计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学术会议信息网站计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学术会议信息网站计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. 基于JAVA网上家教信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA网上家教信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA网上家教信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

  8. 基于JAVA高校科研信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA高校科研信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA高校科研信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

  9. 基于JAVA毕业生就业信息管理系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA毕业生就业信息管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA毕业生就业信息管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  10. 基于JAVA印染公司信息管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA印染公司信息管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA印染公司信息管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. mybatis使用注解替代xml配置,动态生成Sql
  2. 第一章 SDN介绍 (附件3)【云计算,SDN,虚拟化三者关系】
  3. HTML 表格中的行合并与列合并
  4. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(NumPy科学计算库<1>python)
  5. nodejs+nginx获取真实ip
  6. ThreadLocal初识
  7. 机器视觉专用照明光源
  8. c++语言取整为什么要加0.5_蛋鸡饲料要加石粉,那你知道为什么加?要加什么石粉?我来告诉你...
  9. linux es数据库 head,Elasticsearch可视化插件ES-HEAD安装启动步骤
  10. thinkpad E40 Windows7下安装Ubuntu
  11. 个人网站怎么申请支付接口?
  12. java解决兔子_JAVA编程题-用java解决兔子问题
  13. 25岁就死了,75才埋,程序员们的中年危机:有点懵
  14. Cadence Allegro使用过程中出现的常见问题-原理图和PCB
  15. 书中内力图如何用计算机绘制,计算机绘图制图基础.doc
  16. 以太网帧格式 IP数据报格式 TCP数据报格式 MTU MSS
  17. 超级经典,绝对好的第三方控件网
  18. JAVA与C、C++比较
  19. Laradock Mac下的环境配置和安装
  20. 友友球捕获率_口袋妖怪精灵球大科普,大师球能捕捉创世神吗?

热门文章

  1. Python学习笔记_Day3_字典
  2. BZOJ1566 [NOI2009]管道取珠 【dp】
  3. [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
  4. PAAS平台7#215;24小时可用性应用设计
  5. flex measure
  6. 什么是传递(Pass-Through)会话
  7. Asp.net1.0 升级 ASP.NET 2.0 的几个问题总结 (转)
  8. 深度学习:正则化方法
  9. python深拷贝和浅拷贝学习
  10. 扇贝有道180927每日一句