【语音隐写】基于matlab LSB语音隐藏【含Matlab源码 431期】

一、简介

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)
秘密信息在最低位平面和次低位平面连续嵌入,并且是同时嵌入最低位平面和次低位平面
秘密信息在最低位平面嵌入,等最低位平面嵌入完全嵌入之后,再嵌入次低位平面
秘密信息在最低位平面随机嵌入
以上五种方式,当嵌入容量不同时,鲁棒性不同

二、源代码

clc;
clear all;
fid=fopen('1.wav','r');%读入音频文件
oa=fread(fid,inf,'uint8');
fclose(fid);
n=10;%n为a的长度,为10
d=randsrc(1,n,[0,1]);%产生随机数列即水印
M=oa;
for i=45:45+n-1
    M(i)=bitset(M(i),1,d(i-44));%进行LSB嵌入水印
end
unction A=Vector2Matrix(oi,row)
%将数组转换成二位数组,row为行数
cl=length(oi)/row;
A=zeros(row,cl);
for i=1:row
    for j=1:cl
      
    end
end
marklength=5394;%提取的水印图像大小,已知
row=58;                    %row是水印图像行数,已知
fid=fopen('marked.wav','r');
oa=fread(fid,inf,'uint8');
status=fseek(fid,44,'bof');
a=fread(fid,marklength,'uint8');
for i=1:marklength
    w1(i)=bitget(a(i),1);
end
w1=w1';
m=Vector2Matrix(w1,row);
imwrite(m,'markedbupt.bmp','bmp');
figure;
imshow('markedbupt.bmp');title('extracted watermark');

fid=fopen('2.wav','rb');
oa=fread(fid,inf,'uchar');
n=length(oa)-44;%wav文件从文件头到数据前面共有44字节的格式说明
fclose(fid);
io=imread('bupt.bmp');
[row,col]=size(io);
io=io';
wi=io(:);
if row*col>n
    error('载体太小,请更换载体');
end
markedaudio=oa;
marklength=row*col;
fprintf('嵌入图像的长度为:%.0d\n',marklength);
for k=1:row*col
    markedaudio(44+k)=bitset(markedaudio(44+k),1,wi(k));
end

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ 1564658423
往期回顾>>>>>>
【信号处理】基于matlab HMM的睡眠状态检测【含Matlab源码 050期】
【信号处理】基于matlab CDR噪声和混响抑制【含Matlab源码 051期】
【信号处理】基于matlab最小二乘法解决稀疏信号恢复问题【含Matlab源码 052期】
【信号处理】基于matlab小波变换的音频水印嵌入提取【含Matlab源码 053期】
【信号处理】基于matlab ICA算法信号分离【含Matlab源码 054期】
【信号处理】基于matlab GUI界面的脉搏信号之脉率存档【含Matlab源码 237期】
【信号处理】基于matlab GUI界面的虚拟信号发生器(各种波形)【含Matlab源码 271期】
【信号处理】基于matlab GUI界面信号发生器之电子琴【含Matlab源码 272期】
【信号处理】基于matlab的数字电子琴设计与实现【含Matlab源码 273期】
【雷达通信】基于matlab的雷达数字信号处理【含Matlab源码 281期】
【雷达通信】基于matlab线性调频(LFM)脉冲压缩雷达仿真【含Matlab源码 283期】
【雷达通信】基于mtatlab距离多普勒(RD)、CS、RM算法的机载雷达成像【含Matlab源码 284期】
【雷达通信】《现代雷达系统分析与设计》大作业【含Matlab源码 285期】
【信号处理】基于matlab GUI语音信号综合处理平台【含Matlab源码 290期】
【信号处理】基于matlab GUI语音信号采集【含Matlab源码 291期】
【信号处理】基于matlab GUI语音幅度调制【含Matlab源码 292期】
【信号处理】基于matlab GUI语音合成【含Matlab源码 293期】
【信号处理】基于matlab GUI语音基频识别【含Matlab源码 294期】
【信号处理】基于matlab GUI语音信号加密解密【含Matlab源码 295期】
【信号处理】基于matlab小波变换的语音增强【含Matlab源码 296期】
【信号处理】基于matlab GUI语音傅立叶变换降噪混频【含Matlab源码 297期】
【信号处理】基于matlab GUI维纳滤波之语音增强【含Matlab源码 298期】
【音频处理】基于matlab GUI语音信号处理2【含Matlab源码 299期】
【雷达通信】基于matlab GUI雷达定位【含Matlab源码 302期】
【雷达通信】基于matlab GUI雷达脉冲压缩【含Matlab源码 303期】
【雷达通信】基于matlab GUI雷达定位模拟【含Matlab源码 304期】
【雷达通信】基于matlab SVM识别雷达数据【含Matlab源码 305期】
【雷达图像】SAR合成孔径雷达成像及处理【含Matlab源码 307期】
【信息处理】基于GUI数字波束的算法库【含Matlab源码 313期】
【通信】基于matlab的OFDM-MIMO通信建模与仿真【含Matlab源码 314期】
【通信】基于matlab的OFDM仿真【含Matlab源码 315期】
【信号处理】基于matlab窗函数法的FIR数字滤波器设计【含Matlab源码 316期】
【通信】基于matlab FIR低通数字滤波器设计【含Matlab源码 323期】
【通信】基于matlab FIR IIR数字滤波器设计【含Matlab源码 324期】
【信号处理】基于matlab的语音信号频谱分析仪【含Matlab源码 325期】
【调制信号】基于matlab GUI数字调制信号仿真【含Matlab源码 336期】
【通信】基于matlab的扩频通信系统设计【含Matlab源码 337期】
【通信】基于matlab多径衰落信道的仿真【含Matlab源码 338期】
【语音识别】基于matlab BP神经网络的语音情感识别【含Matlab源码 349期】
【信号处理】基于matlab音频水印嵌入与提取【含Matlab源码 350期】
【音频水印】基于matlab小波变换的量化音频数字水印【含Matlab源码 351期】
【语音去噪】基于matlab低通和自适应滤波去噪【含Matlab源码 352期】
【信号处理】基于matlab 8级m序列【含Matlab源码 353期】
【情感识别】基于matlab GUI语音情感分类识别【含Matlab源码 354期】
【信号处理】基于matlab FIR与IIR滤波器低通、高通、带通设计【含Matlab源码 360期】
【语音处理】基于matlab语音信号的预处理【含Matlab源码 364期】
【语音识别】基于matlab 傅立叶变换0-9的数字语音识别【含Matlab源码 384期】
【语音识别】基于matlab GUI DTW的0-9数字语音识别【含Matlab源码 385期】
【语音播放】基于matlab GUI MP3设计【含Matlab源码 425期】
【语音处理】基于人耳掩蔽效应的语音增强算法信噪比计算【含Matlab源码 428期】
【语音去噪】基于matlab谱减法去噪【含Matlab源码 429期】
【语音识别】基于matlab带动量项的BP神经网络语音识别【含Matlab源码 430期】

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/114296638