您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > lec2-LSB隐写术
第2讲LSB隐写术任德斌四川大学电子信息学院2主要内容相关的图像知识基本的LSB算法图像质量的客观评价低4位的图像嵌入技术31图像处理基础图像的分类颜色模型4图像的分类灰度图像黑白图像彩色图像像素RGB图像索引图像可以通过图片放大来看5二进制图像二进制图像顾名思义就是图像像素只存在0,1两个值。一个二进制图像显然是纯黑白的。每一个像素值将取两个离散值(0或1)中的一个,0表示黑,1表示白。6灰度图像的二维矩阵表示A=imread(‘lena.bmp’);7灰度图像灰度图像是包含灰度级(亮度)的图像。与二值图像不同,灰度图像虽然在感观上给人仍然是“黑白”的,但实际上它的像素并不是纯黑(0)和纯白(1)那么简单,所以相应的其1个像素也绝不是1bit就可以表征的。一般使用使用无符号8位整型联系后面,我们可以发现所谓灰度图像的像素值就是YCbCr中每个像素的亮度分量值。8灰度图像的二值化方法所谓灰度图像的二值化方法实际上解决的就是将灰度图像转换为二值图像这一问题。转换的方法可用伪C语言描述为:设G(x,y)为图像的灰度G的像素floatthreshold;//定义一个转换阈值if(G(x,y)=threshold)B(x,y)=1;elseB(x,y)=0;则图像B为G的二值转换图。BW=im2bw(I,level)9颜色模型在计算机图形学领域定义的颜色模型,是在某种特定上下文中对于颜色的特性和行为的解释方法,是用来精确标定和生成各种颜色的一套规则和定义。颜色空间通常用三维模型表示,空间中的颜色通常使用代表三个参数的三维坐标来指定。10常见的颜色模型对于显示设备来说,可以用红、绿、蓝磷光体的发光量来描述颜色(RGB颜色模型);对于打印设备来说,可以使用青色、品红、黄色和黑色颜料的用量来指定颜色(CMYK颜色模型,以打印油墨在纸张上的光线吸收特性为基础);对于人来说,可以通过色调、饱和度和亮度来定义颜色(例如:HSL颜色模型);11RGB相加混色模型绝大部分可见光谱可用红、绿和蓝(RGB)三色光按不同比例和强度的混合来表示。在颜色重叠的位置,产生青色、品红和黄色。因为RGB颜色合成产生白色,它们也叫作加色。将所有颜色加在一起产生白色──就是说,所有光被反射回眼睛。例如,显示器通过红、绿和蓝荧光粉发射光线产生彩色。图像的RGB颜色模型12RGB图像RGB图像仅是一类图像的总称,每一个像素的颜色由存储在相应位置的红、绿、蓝颜色分量共同决定。RGB图像是24位图像,红、绿、蓝分量分别占用8位,理论上可以包含16M种不同颜色,由于这种颜色精度能够再现图像的真实色彩,所以又称RGB图像为真彩图像。13RGB的表示我们可以用一个由R、G、B为坐标轴定义的单位立方体来描述一个符合视觉理论的颜色模型。原点代表黑色,(1,1,1)代表白色,将坐标轴上的顶点称为基色。立方体中的每一个颜色由一个三元组(R,G,B)表示,每一个分量的数值一般在[0,255]区间。14RGB图像在MATLAB中,一幅RGB图像由一个的m×n×3数组(通常称为RGB数组)来描述,其中m和n分别表示图像的宽度和高度。B=imread('lena-c.bmp');size(B)imshow(B(:,:,1));15RGB的一个问题有一个长宽各为200个象素,颜色数为16色的彩色图,如果用RGB来表示,问需要的存储空间有多大?200×200×3,约120k字节。16YCbCr模型YCbCr是DVD、摄像机、数字电视等视频产品中,常用的色彩编码方案。主要原因是可以进行数据压缩,同时还可以和黑白视频兼容。在YCbCr模型中,Y为亮度,Cb和Cr共同描述图像的色调(色差),其中Cb、Cr分别为蓝色分量和红色分量相对于参考值的坐标。人眼对色调的分辨率较低。在目前通用的JPEG图像压缩算法中,第一个步骤就是将图像颜色空间转换为YCbCr空间。17空域图像水印技术是指在图像的空间域中嵌入水印的技术。最简单和有代表性的方案就是用秘密信息代替图像的最低有效位(LSB)或者多个位平面的所有比特的算法。2LSB简介18LSB的计算217的二进制表示是多少?11011001lsb(217)=?Matlab:提取lsb(x):mod(x,2)把m嵌入x的lsb?bitset(x,1,m)x的二进制表示:de2bi(x)19去掉最低几位的效果msg=imread('lena256.bmp');A1=MyLSBEffect(msg,1);A3=MyLSBEffect(msg,3);A5=MyLSBEffect(msg,5);A7=MyLSBEffect(msg,7);LSB算法的思想就是直接在图像的最低位用秘密信息进行替换20原始图像Lena秘密图像Baboon一个替换嵌入的实验functionout=MySimpleEmbedding(src,secr,place)if(size(src)~=size(secr))error('Thesizemustbesameforsimplicity!');end[row,col]=size(src);fori=1:rowforj=1:colout(i,j)=bitset(src(i,j),place,secr(i,j));endEnd%bitset(src,place,secr);嵌入一个相同大小的黑白图像的函数22LSB嵌入效果测试src=imread('lena256.png');secrt=imread('baboon.bmp');r1=MySimpleEmbedding(src,secrt,1);r3=MySimpleEmbedding(src,secrt,3);r5=bitset(src,5,secrt);r8=bitset(src,8,secrt);subplot(2,2,1);imshow(r1);title('r1');subplot(2,2,2);imshow(r3);title('r3');subplot(2,2,3);imshow(r5);title('r5');subplot(2,2,4);imshow(r8);title('r8');更一般的实现:ShowLSB(src,secrt);23信息嵌入不同位平面后的图像24LSB替换的最大色彩偏移修改LSB的结果在uint8格式下修改1个单位对应的像素值是1/256=0.0039。对于LSB替换操作,r、g、b三个分量最大的可能是同时减小0.0039,在RGB立方体中对应的色彩偏移是:2220.00390.00390.0039=0.006825LSB嵌入的例子目的:在一个字节中嵌入一位的消息方法:直接替换载体字节的最低位例子:可嵌入的部分载体数据为126,243,86,23,35,67,89,79;需要嵌入的一个秘密消息字节的ASCII码值为75,问嵌入后的伪装载体是什么?26对文本消息的逐位处理msg='HelloWorld!';msgasc=double(msg);msgbin=de2bi(msgasc);msgstr=reshape(msgbin,1,84);%column-wisem2bin=de2bi(double('您好,中国!'));msgbin=000100110100110011011001101111110110000010111010111110110100111001101100100111000010msgasc=7210110810811132871111141081003327对文本消息的逐位处理(续)img=imread('lena.bmp');msg='HelloWorld!';stego=MyLSBEmbed(img,msg);imshow(stego);out=MyLSBExtract(stego);28LSB算法的特点LSB方法使用的非常广泛•方法有一般性,可用于变化域•非常简单•非常快•很高的容量和嵌入效率•安全性假设:•LSB位是随机的,与高位和其它点无关293图像质量的客观评价对一个系统中输入和输出的图像信号做处理和分析,一般是从图像中提取一些特征参量作为研究分析对象,处理并作比较。从总体上反映了图像间的差别均方差(MeanSquareError,MSE)信噪比(SignaltoNoiseRatio,SNR)峰值信噪比(PeakSignaltoNoiseRatio,PSNR)加权信噪比(WeightedSignaltoNoiseRatio,WSNR)掩蔽峰值信噪比(MaskedPeakSignaltoNoiseRatio,MPSNR)30均方差(MeanSquareError,MSE)MSE是最普遍的使用于图像感知质量评价的手段之一。图像之间的MSE由以下公式计算得到:其中,I(x,y)表示原始图像各像素,IW(x,y)表示加有水印的图像各像素。M×N是图像的尺寸。2111MSE((,)(,))MNWxyIxyIxyMN31对MSE的讨论MSE计算简单,便于理解,能在一定程度上评价图像的感知质量。MSE对图像感知质量评估存在低估与高估的差错。MSE是用来求SNR、PSNR的基础。32MSE低估了图像(d)的质量33MSE高估了图像(a)的质量344低3位的嵌入(MLSB)图像的低3bit,我们通常认为可以做隐藏信息的空间,也就是载体的冗余空间。因此,这里要介绍的方法都是对图像像素值的低3bit进行操作的。35讨论图像的冗余空间(低3bit)可用的下面是woman图像进行实验:36讨论图像的冗余空间(低3bit)由上面的对比可以看到,虽然图像矩阵的每个像素值都去掉了低3bit(如第(1,1)像素点),但改变后的图像和原图像在给人的视觉上并没有太大的变化,因此可以认为低3bit是冗余空间,可以改变,这是可以进行图像嵌入伪装的理论基础。37直接4bit替换所谓直接4bit替换法,就是直接用秘密图像像素值的高4bit去替换载体图像像素值的低4bit。下面将进行实验演示,我们选择lenna图像为载体图像,woman图像为秘密信息图像。38提取图像信息并分层%提取woman和lena图像cover=imread('lena2.bmp');msg=imread('woman.bmp');%提取lenna图像的R层cover1=cover(:,:,1);这里把lenna图像的R层做为载体图像。lena原图像woman原图像lena红层39处理载体图像和秘密图像的低4bit%置载体图像R层的低4bit为0cover1=bitand(cover1,240);%置秘密图像的低4bit为0takemsg4=bitand(msg,240);%将秘密图像的高4bit右移4位shiftmsg4=bitshift(takemsg4,-4);去掉低4位的lena的R层去掉低4位的woman图像woman图像高4bit右移4位40图像隐藏并保存%图像隐藏cover1=bitor(cover1,shiftmsg4);%写回并保存cover(:,:,1)=cover1;imwrite(cover,'mix.bmp');%写成函数并调用A1=My4bitLSBHiding(cover,msg,1);woman隐藏在lena的R层后的图像最终隐藏后的图像41秘密图像的提取%提取秘密图像信息data=imread('mix.bmp');A=data(:,:,1);A=bitand(A,15);A=bitshift(A,4);imshow(A)%写成函数并调用My4bitLSBExtract(A1,1);提取出的秘密图像42将秘密图像分别藏于RGB载体图像不同层43泛红、泛绿或泛蓝的现象在上页图中我们看到,秘密图像隐藏于不同的层后与原载体图像的差别大小是不同的。对于隐藏在R、G、B各层的隐蔽载体,图中圈内的部分分别产生泛红、泛绿和泛蓝的现象.44对
本文标题:lec2-LSB隐写术
链接地址:https://www.777doc.com/doc-4067799 .html