《数字图像典型隐写术ppt课件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
第三章数字图像典型隐写术
1本讲提要一、数字隐写的基本原理二、典型的空域隐写方法三、典型的DCT域隐写方法
2考核要求了解不可视通信的基本模型、数字隐写系统模型、数字隐写系统的安全性相关知识与主要分类;掌握LSB替换、MLSB替换、±K与随机调制隐写等空域隐写方法的基本原理与主要过程;了解调色板与二值图像中的隐写方法的基本原理;掌握JSteg、F5、OutGuess和MB等DCT域隐写的基本原理与主要过程。
3AB用于嵌入秘密消息的对象称为载体对象:c嵌入了秘密消息的对象称为伪装对象:s不可视通信模型(囚犯问题)一、数字隐写的基本原理
4不可视通信的特点A与B的信息的传递不能引起任何人的怀疑和破坏;过程是:选择载体信号(任何一种多媒体信号),信息嵌入算法(可能使用密钥),信息提取算法(提取秘密消息)信息隐藏的分类;提取过程中可能需要(或不需要)原始载体对象c,这取决于A,B双方约定的信息嵌入算法。一、数字隐写的基本原理
5不可视通信对载体的要求在载体信息源的产生上也应该建立一些约束,并不是所有的数据都可以作为不可视通信的载体的;存在冗余空间的数据可以作为载体;另一些不存在冗余空间的数据也可以作为载体,但是它们所携带秘密信息的方式就与前一类载体有所区别,因为不存在冗余空间的数据,不允许在数据上进行些许修改,否则将引起数据的改变;应该有一个较大的载体信息库供选择,原则上,一个载体不应该使用两次。一、数字隐写的基本原理
6
7
8隐写系统的安全性说一个数字隐写系统是安全的,如果它对具有无限计算能力的攻击者,能够抵抗他所尝试各种的攻击。一个数字隐写系统的被攻击过程大致可分为:证明秘密信息的存在、提取秘密信息和破坏秘密信息等三个环节。隐写系统可用两个映射:Ek:CMKC(嵌入函数)和Dk:CKM(提取函数)来描述。C:所有可能载体的集合。M:所有可能秘密消息的集合。K:所有可能密钥的集合。C:经数字隐写系统产生的所有隐密载体的集合。一、数字隐写的基本原理
9隐写系统的安全性一些符号说明:Pc:集合C上的概率分布;Ps:集合C上的概率分布;设集合Q上的两个分布p1和p2,它们之间的熵定义为:上式是用来衡量两个概率分布的一致程度的,可以用来度量嵌入过程对概率分布pc的影响。一、数字隐写的基本原理
10隐写系统的安全性绝对安全:一个数字隐写系统,若有D(pc║ps)≤ε,则称抵御被动攻击是ε-安全的。若有ε=0,则称是绝对安全的。D(pc║ps)=0当且仅当两个概率分布相等,也就是说攻击者看到的载体和隐密载体的概率分布是完全一致、无法区分的。因此,如果数字隐写系统嵌入一个秘密消息到载体中不改变C的概率分布,则该系统是(理论上)绝对安全的。存在绝对安全的数字隐写系统。一、数字隐写的基本原理
11隐写系统的安全性对攻击者而言,他必须对一个载体作出是否含有秘密信息的判断,因此,攻击可作为一个假设检验问题来对待。通常他可定义这样一检验函数,f:C{0,1}:把载体对象误认为隐密载体称之为虚警。把隐密载体误认为载体对象称之为漏检。对一个ε-安全的隐写系统,设其虚警概率为,漏检概率为。则一个实用的、安全的数字隐写系统应该尽可能使漏检概率最大。一个理想的隐写系统应该有=1,也就是说,所有隐密载体都被认为是载体对象被放过。一、数字隐写的基本原理
12隐写系统的安全性对一个ε-安全的隐写系统,其虚警概率和漏检概率成立d(,)≤ε,其中特别地:=0时,2-ε。由此可知:对=0的ε-安全的隐写系统,若ε0,则1。这意味着很小的ε,将导致攻击者不能以很高的概率检测出隐藏的秘密信息。这正是隐写者们所期望的。一、数字隐写的基本原理
13隐写系统的分类根据密钥的使用情况数字隐写系统大致可以分为无密钥数字隐写、私钥数字隐写和公钥数字隐写等三类。如果一个数字隐写系统不需要预先约定密钥,称其为无密钥数字隐写系统。对于一个五元组C,M,E,C,D而言,满足CM,E:CMC是嵌入函数,D:CM是提取函数,如果对所有m∈M和c∈C恒有:D(E(c,m))=m,则称该五元组为无密钥数字隐写系统。对于无密钥数字隐写,系统的安全性完全依赖于隐写和提取算法的保密性,如果算法被泄漏,则信息隐写无任何安全性可言。一、数字隐写的基本原理
14隐写系统的分类一个私钥隐写系统类似于对称密码系统。发送者选择一个载体对象c,并使用隐写密钥k将秘密信息嵌入到c中。接收者利用手中的密钥,用提取算法就可以提取出秘密信息。对一个六元组C,M,K,C,Dk,Ek,满足CM,若对所有m∈M,c∈C和k∈K,恒有Dk(Ek((c,m,k),k))=m成立,则称该六元组为私钥数字隐写系统。私钥隐写系统需要密钥的交换。一、数字隐写的基本原理
15隐写系统的分类公钥信息隐藏系统使用了公钥密码系统的概念,它需要使用两个密钥:一个公钥和一个私钥。通信各方使用约定的公钥体制,各自产生自己的公钥和秘钥,将公钥存储在一个公开的数据库中,通信各方可以随时取用,私钥由通信各方自己保存,不予公开。公钥用于信息的嵌入过程,私钥用于信息的提取过程。一、数字隐写的基本原理
16隐写系统的分类A用B的公钥对需要保密的消息进行加密,得到一个“外观”随机的消息,并将它嵌入到一个载体对象中去,嵌入方法就是替换掉载体的测量噪声。假设加密算法和嵌人函数是公开的,因此任何人都可以利用提取函数得到外观上随机的序列。但是只有接收者B拥有解密密钥,用解密密钥可以解出A发来的秘密信息。第三方监视者虽然也可以得到这样的随机序列,但是由于他不拥有解密密钥,他无法肯定这样的随机序列是载体信号的自然噪声还是秘密信息被加密后产生的随机序列。Anderson提出了一个公钥隐写系统:一、数字隐写的基本原理
17隐写系统的分类该系统依赖于这样一个事实:用B公钥加密的消息必须具有足够的随机性,可以达到近似于测量噪声具有“自然随机性”;消息接收者B必须时刻猜疑隐写系统的使用,并试图对他从A处接收到的每一个载体进行消息提取。Anderson提出的这个公钥隐写系统有下列不足:一、数字隐写的基本原理
18隐写系统的分类公钥信息隐藏和私钥信息隐藏也可以结合使用。首先,通过使用公钥信息隐藏系统执行一个密钥交换协议,使得A和B可以共享一个密钥,然后它们就可以在私钥信息隐藏系统中使用这个密钥。构造一个公钥、私钥信息隐藏系统。上述隐写系统存在何种隐患?一、数字隐写的基本原理
19本讲提要一、数字隐写的基本原理二、典型的空域隐写方法三、典型的DCT域隐写方法
20常用图像处理方法
21RGB图像分层,并对指定层加强RGB_analysis.m灰度图像二值化Binary.m
22
23RGB转HSVRGB2HSV.mRGB转YCbCrRGB2YCbCr.m
24伪随机数发生器概述从“随机”一词的本意上看,所谓随机数就是在其产生前任一时刻都是不可捉摸的,不受外界影响的数。假设一个序列中的所有数字都符合这个要求,那么显然其序列的随机性能是良好的。
25伪随机数发生器概述对一个真随机数序列可以这样定义:①能通过所有正确的随机性检验。②序列的产生是不可预知的。③在完全相同的操作条件下得到的序列是不重复的。在自然界中确实拥有作为随机数发生器能产生满足这样定义的现象与实例,如布朗运动等。将这样的随机数称为真随机数(Realrandomnumber)。
26事实上,在实际运用中去得到上述的随机序列是很困难的,即使得到所花费的代价也相当的大。而且为了便于其他研究的需要,随机数序列也必须服从一定的概率分布。于是人们便试图利用计算工具与数学方法去快速、大规模地产生随机数。
27最为普遍的算法模式便是迭代:Xi+1=f(Ε,Xi)Ε={ε1,ε2,⋯,εn}是一个参数组,用以控制序列的性能。对于序列的第一个数X1,我们引入一个数Xs,使得X1=f(E,Xs)。我们称Xs为序列种子(seed)。由于通过这种方法得到的随机数序列并不能完全符合前面的定义,所以我们将其称为伪随机数(Pseudorandomnumber)序列。
28伪随机数发生器
29伪随机数发生器
30randU1.mrandU2.m
31LSB替换隐写灰度图像8个位平面的二值图表示二、典型的空域隐写方法
32LSB替换隐写基本思想:用欲嵌入的秘密信息取代载体图像的LSB,原来图像的7个高位平面与代表秘密信息的LSB平面组成隐密图像二、典型的空域隐写方法
33LSB替换隐写嵌入过程:1)在c中根据密钥k选择l(m)个像素。2)对于选取的每个像素灰度值,若其LSB与要嵌入的信息比特相同,不进行更改;否则,执行下一步;3)用秘密信息比特取代原灰度值的LSB,而高7位保持不变,修改后的图像即为s。提取过程:根据密钥找到中嵌入信息的像素,抽出这些像素灰度值的LSB,排列后组成秘密信息。二、典型的空域隐写方法
34LSB替换隐写嵌入位置选取方法:连续嵌入法和随机间隔法二、典型的空域隐写方法连续嵌入法随机间隔法
35
36随机间隔法利用随机数的大小控制前后两个嵌入位的距离。如一个长为N的服从U(0,1)的随机序列R={r1,r2,⋯,rN},N大于秘密信息长度。取第一个嵌入位为i,伪C代码描述有:inbedingaddress=i;for(j=1;j<=length(message);j++){if(rj>0.5)imbedingaddress+=k;elseimbedingaddress+=p;}以上代码的实质就是通过判断相应的随机数与0.5的大小,若大于0.5,则选择的嵌入位与前一个嵌入位间隔k-1位,否则间隔p-1位。
37randinterval.m>>test=zeros(8);>>[row,col]=randinterval(test,20,1983);>>fori=1∶20test(row(i),col(i))=i;end
38MLSB替换隐写基本思想:用秘密信息替换载体图像像素的最低多位(MLSB)现有文献指出:即使在图像的最低3个位平面全部进行替换隐写,仍然不会引起明显的视觉失真,而且具有较高的嵌入容量,更重要的是已有的LSB替换隐写分析方法都不能可靠地估计其隐写信息比率。二、典型的空域隐写方法
39MLSB替换隐写两种基本的MLSB替换隐写方法:1)根据密钥选取图像的最低多个平面上的比特位,并将其替换为秘密信息。该方法对各个位平面的影响是独立的,因此简称为IMLSB替换隐写(“I”为Independent的简写).2)根据密钥选取图像像素,然后将所选像素的最低多位看做一个整体,替换为秘密信息。该方法简称为TMLSB替换隐写(“T”为truss的简写)。二、典型的空域隐写方法
40基本思想:根据密钥选取图像的多个最低有效位平面上的比特位,然后将所选比特位替换为秘密信息。嵌入过程:1)截取图像的l个最低有效位平面;2)在截取的最低l个位平面上,根据隐写密钥选取嵌入位置;3)若所选比特位与欲嵌入的秘密信息比特相同,不作更改;否则,将其替换为秘密信息比特。提取过程:1)截取图像的l个最低有效位平面;2)在截取的l个最低有效位平面上,根据隐写密钥选取图像的MLSB上的比特位,并将其组合成秘密信息。IMLSB替换隐写二、典型的空域隐写方法
41秘密消息...100010100110010110100001110.........载体图像100101......1载体图像的2LSB载密图像IMLSB替换隐写二、典型的空域隐写方法
42基本思想:根据密钥选取图像像素,将所选像素的个最低有效位看做一个整体,同时替换为秘密信息。嵌入过程:1)根据隐写密钥选取图像像素;2)若所选像素的l个最低有效位与欲嵌入的l比特秘密信息相同,不作更改;否则,将其替换为比特秘密信息。提取过程:根据隐写密钥选取图像像素,并将其最低l位组合成秘密息。TMLSB替换隐写二、典型的空域隐写方法
43秘密消息...10001010011001011010000110.........载体图像10载密图像TMLSB替换隐写二、典型的空域隐写方法
44±K隐写基本思想:当秘密信息与像素值的LSB不同时,对像素值进行随机加或减1操作,此时称为LSB匹配(或±1)隐写。将加减幅度推广至正整数K,可得到±K隐写:当K等于奇数时,使像素值的LSB等于秘密信息;当K等于偶数时总是使像素值的次低比特位等于秘密信息。二、典型的空域隐写方法
45±K隐写嵌入过程如下(以K取奇数为例)1)由隐写密钥k1选取图像像素集{cij};2)对于选取的每一个像素cij,若其LSB与要嵌入的信息比特相同,不对其进行更改,否则,执行下一步;3)隐写密钥k2产生一个伪随机小数nij,若nij(0,0.5),则sij=cij+K;否则,sij=cijK;4)若±K操作使得像素值超出范围[0,255],则将其截断至该范围内的与sij最邻近的值,且截断后的值的LSB与嵌入的信息相一致。提取过程与LSB替换隐写相同。二、典型的空域隐写方法
46随机调制隐写基本思想:将欲嵌入信息调制成具有特定概率分布的噪声,并用调制后的信号替代图像获取设备带来的噪声(如高斯白噪声),使攻击者无法区分这些噪声是由图像获取设备产生的还是由隐写所引起的。二、典型的空域隐写方法
47随机调制隐写定义奇偶函数(ParityFunction)二、典型的空域隐写方法其中x{i0i255,i是整数},s取所有整数,且则对某个固定的s,可以任意定义f(x,s)的前2s个值,然后推知2s+1以后的所有函数值。
48随机调制隐写嵌入过程二、典型的空域隐写方法1)由隐写密钥k1选取图像像素集{cij};2)对于选取的像素集,用隐写密钥k2生成一个服从特定噪声分布的伪随机数ij,且将其取整为整数zij.若zij=0,跳过该像素,寻找像素集中的下一像素。若zij0,则检查f(cij+zij,zij)是否与欲隐写的比特一致,如果二者一致,则将像素灰度值改为cij+zij;如果不一致,则将像素灰度值改为cijzij,即3)在嵌入过程中,可能超出范围[0,255]的像素将被截断至该范围内的最邻近的值,且截断至的值的奇偶性与嵌入的信息相一致。
49随机调制隐写提取过程二、典型的空域隐写方法按照密钥k1选取像素集,由密钥k2产生伪随机信号zij,对不为0的zij,以如下方式提取信息由于伪随机数zij为0所对应的像素cij不用来负载秘密信息,因而信息的嵌入率与具有特定概率分布的噪声信号ij密切相关。若噪声信号ij是服从N(0,)的高斯白噪声信号,则信息嵌入率p可由下式估算:
50调色板图像的隐写二、典型的空域隐写方法1)利用调色板数据进行隐藏,其基本思想是用秘密信息比特替换调色板的颜色向量的LSB。2)在实际图像数据中进行LSB的替换。此类隐写首先需要对调色板进行排序,排序后调色板中相邻颜色在感官上是接近的。
51调色板图像的隐写二、典型的空域隐写方法3)用调色板的排序方式对信息进行编码。因为有N!种不同的方式对调色板进行排序,所以可以用来对一个短信息进行编码。4)保持调色板的颜色不变,数目扩大一倍,因此图像中的每一个颜色值对应两个调色板索引,根据秘密信息比特,选择两个相同颜色中的一个。基于调色板的信息隐藏,其鲁棒性都较差,攻击者只要对调色板重新排序、或者对图像的格式进行变换,就很有可能破坏秘密信息。
52二值图像的隐写二值图像是实际中广泛应用的一类图像,如数字化的传真数据、由黑白两色组成的徽标等等。这类图像以黑白像素的分布方式包含冗余,变化少量的像素颜色,不会影响人眼对图像的认知。二、典型的空域隐写方法
53利用图像特定区域中黑像素的个数来编码秘密信息基本思想:将二值图像分成l(m)个矩形图像区域Bi(1≤i≤l(m));p0(Bi)和p1(Bi)为黑白像素在图像块Bi中所占的百分比;若p1(Bi)>50%,则嵌入一个1,若p0(Bi)>50%,则嵌入一个0。二值图像的隐写二、典型的空域隐写方法
54存在的问题当需要嵌入的比特与所选区域的黑白像素的比例不一致时,则需要修改一些像素的颜色。而这些规则都应该以不引起察觉为目的。比如,当前块有90%的黑色像素,要隐藏比特l,需要将40%以上的黑色像素改为白色像素,这样对图像的影响太大,应放弃这块,设为无效。针对传输错误和图像修改对隐藏系统的影响,选择图像块时,应该有一定的冗余度。二值图像的隐写二、典型的空域隐写方法
55修正策略确定两个阈值R1>50%和R0<50%,以及一个健壮性参数,是传输过程中可能被改变的像素百分比;隐藏0时,该块的黑色像素的个数在修改后应属于[R1,Rl+]的范围;要嵌入数据1,该块的黑色像素的个数在修改后应属于[R0-,R0]的范围;如果为了适应所嵌入的比特,目标块必须修改太多的像素,就把该块设为无效,再选择下一块进行嵌入。二值图像的隐写二、典型的空域隐写方法
56将无效块中的像素进行少量的修改,使得其中黑色像素的百分比大于R1+3,或者小于R0-3,用这样的方法标识无效块。提取秘密信息时,首先判断每一个图像块黑白像素的百分比,如果大于R1+3,或者小于R0-3,则跳过这样的无效块;如果在[Rl,Rl+]或者[R0-,R0]的范围内,则正确提取出秘密信息。二值图像的隐写二、典型的空域隐写方法
57利用图像特定区域中黑像素的个数来编码秘密信息基本思想:将二值图像分成l(m)个矩形图像区域Bi(1≤i≤l(m));p0(Bi)和p1(Bi)为黑白像素在图像块Bi中所占的百分比;若p1(Bi)>50%,则嵌入一个1,若p0(Bi)>50%,则嵌入一个0。二值图像的隐写二、典型的空域隐写方法
58基于游程编码的二值图像隐写在二值图像中,连续像素具有同种颜色的概率很高。因此,对每一行,不再直接地对每一个位置具体什么像素进行编码,而是对颜色变化的位置和从该位置开始的连续同种颜色的个数进行编码。如:编码为:
59由上述编码可知:我们能用一个称之为RL的元素序列
60利用三维枝干图显示快速Fourier变换的计算过程,代码如下:th=(0∶127)/128*2*pi;x=cos(th);y=sin(th);%计算复平面上单位圆f=(abs(fft(ones(10,1),128)));%计算一步频率响应的幅值stem3(x,y,f,′*′);%绘制三维枝干图xlabel(′实部′);ylabel(′虚部′);zlabel(′幅值′);title(′频率响应′);
61FourierMovie.m
62直方图Hist.txt直方图均衡化Histequalization.m
63图像信息隐藏范例Imagehide.m
64图像置乱置乱:就是将图像的信息次序打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上⋯⋯使其变换成杂乱无章难以辨认的图像。置乱实质是图像的加密,与加密保证安全性不同的是,将置乱的图像作为秘密信息再进行隐藏,可以很大限度地提高隐蔽载体的鲁棒性。
65变化模板形状的图像置乱算法变化模板形状的图像置乱算法的思想如下:①对原图像取一个固定模板,模板中像素位置排列如图4.10所示②做一个与原图像模板不同的置乱模板,如图4.11所示,在置乱模板中把图像模板中的像素位置按一定次序填入(在图4.11的模板中按从上到下、从左到右的次序依次填入)③将置乱模板中的像素位置再按一定的次序填回到原图像模板中就得到了置乱后的图像模板(图4.12的模板是按从左到右、从上到下的次序依次读取置乱模板中像素位置)
66这种置乱算法是对合的,即将图4.12进行同样的一次变换后就可以得到图4.10。为编写程序带来了方便。与Zigzag变换一样,采取查表的方法编写程序。由于固定了置乱模板的大小,所以在对图像置乱前要对其进行边界修补。如取置乱模板为32×32,则要求秘密图像的尺寸为32×32,64×64,128×128,⋯。假设一幅图像的尺寸为32×31,则应该对其增加1列数据。
67diamondreplace.m其中需要调用查表程序replace32fun.m
68本讲提要一、数字隐写的基本原理二、典型的空域隐写方法三、典型的DCT域隐写方法
69DCT的原理离散余弦变换(DiscreteCosineTransform,DCT)是一种实数域变换,其变换核为实数余弦函数。对一幅图像进行离散余弦变换后,许多有关图像的重要可视信息都集中在DCT变换的一小部分系数中。因此,离散余弦变换(DCT)是有损图像压缩JPEG的核心,同时也是所谓“变换域信息隐藏算法”的主要“变换域(DCT域)”之一。因为图像处理运用二维离散余弦变换,所以直接介绍二维DCT变换。
70DCT的原理一个矩阵的二维DCT定义如下:逆DCT变换定义如下:
71DCT的MATLAB实现第一种方法是使用函数dct2,该函数使用一个基于FFT的快速算法来提高当输入较大的输入方阵时的计算速度。dct2函数的调用格式如下:B=dct2(A,[MN])或B=dct2(A,M,N)其中,A表示要变换的图像,M和N是可选参数,表示填充后的图像矩阵大小。B表示变换后得到的图像矩阵。
72DCT的MATLAB实现第二种方法使用由函数dctmtx返回的DCT变换矩阵,这种方法较适合于较小的输入方阵(如或方阵)。dctmtx的调用格式如下:D=dctmtx(N)其中,N表示DCT变换矩阵的维数,D为DCT变换矩阵。
73分析DCT系数的性质下面以lenna图像为例,利用DCT变换函数得到的DCT系数的性质。RGB=imread('d:\lena.jpg');RGB=double(RGB)/255;RGBr=RGB(:,:,1);DCTmatrix=dct2(RGBr);subplot(1,2,1),imshow(RGB);subplot(1,2,2),imshow(log(abs(DCTmatrix)),[]),colormap(jet(64));Dct2是针对二维矩阵的处理函数,将原始RGB图像转换成二维,因为结果太大,只取R层分析
74分析DCT系数的性质变化的结果,其中DCT系数用光谱的形式给出,直观的表明了低频和高频系数的分布规律。
75分析DCT系数的性质当p,q不断增大时,相应的余弦函数的频率也不断增大,得到的系数可认为就是原始图像信号在频率不断增大的余弦函数上的投影,所以也被称为低频系数、中频系数和高频系数。观察DCTmatrix,可以明显的发现如下规律:大体上,沿左上到右下的方向DCT系数(绝对值)是依次递减的。一个图像的DCT低频系数分布在DCT系数矩阵的左上角,高频系数分布在右下角,低频系数的绝对值大与高频系数的绝对值。
76分析DCT系数的性质对DCT变换来说,图像的主要能量是集中在其DCT系数的一小部分。这所谓的“一小部分”就是指的低频部分。随着p,q阶数的不断增大,图像信号在两组正交函数上的投影值出现了大量的正负相抵消的情景,从而导致了得到的频率系数在数值(绝对值)上的不断减小。当p=0,q=0,得到的频率系数与余弦函数无关(cos0=1),完全就是图像抽样信号的均值,也是最大的一个值,称为DCT变换的直流(DC)系数,其它的频率系数都由余弦函数参与得到,所以被称为交流(AC)系数。
77分析DCT系数的性质中、低频系数所含有的原始信号的成份较多,所以由其反变换重构图像就能得到图像的近似部分。高频系数是在众多正交的余弦函数上投影的加权,是这些不同频率的余弦信号一起来刻画原始信号的结果,图像近似的部分在这些函数上被相互抵消了,剩下的就是图像的细节部分了。
78分析DCT系数的性质lenna图做8×8分块DCT。利用dctmtx函数,输入dctmtx(8),得到阶数为8的正交DCT变换矩阵RGB=imread('d:\lena.jpg');RGB=double(RGB)/255;RGB=reshape(RGB,512,512*3);T=dctmtx(8);blocDCTmatrix=blkproc(RGB,[88],'P1*x*P2',T,T');
79分块DCT
80分块DCT继而利用blkproc函数完成分块操作。blkproc函数的调用格式入下:B=blkproc(A,[mn],fun,P1,P2,...)其中A为原始信号矩阵,[mn]为分块的大小,fun为对每一个分块x的操作规则,Pi是fun中调用的参数。对图像进行8×8DCT分块操作,得到的8×8分块DCT系数矩阵如下图。
81分块DCT
82分块DCT所以,对图像进行分块DCT后,在每一个8×8范围内其频率系数仍然符合前面我们总结的DCT系数分布规律。
83分块DCT与整体DCT的三维投影
84JPEG是互联网上最为常见的图像格式,而DCT变换是JPEG压缩采用的重要技术之一,在DCT变换系数(DCT域)上隐藏信息是常见的数字隐写方式。JSteg是最早在JPEG图像中进行隐写的方法之一,由于该方法使得系数直方图有明显的改变。随后,出现了F3隐写、F4隐写、F5隐写、OutGuess隐写和MB隐写等等。三、典型的DCT域隐写方法
85DCT系数的特点DCT系数中,左上角部分为直流和低频系数,右下角部分为高频系数,中间区域为中频系数。低频代表图像之间慢变化,高频代表像素之间的快变化。高频部份代表图像中的噪声部份,这些部分容易通过有损压缩或者滤波等处理被去掉;中低频部分包含了图像的大部分能量,对人的视觉最重要的信息部分,都集中在中低频;三、典型的DCT域隐写方法
86一般图像的压缩和处理,为了保持图像的可视性,都保留了图像的中低频部分;低频部分的改变有可能引起图像较大的变动;为了将隐藏的信息与载体图像的视觉重要部分绑定,一般都将隐藏信息嵌入在载体的中频部分,达到既不引起视觉变化,又不会被轻易破坏的目的。DCT系数的特点三、典型的DCT域隐写方法
87例程:图像DCT变换压缩,编写函数dctcom.m完成对输入图像的8×8分块的二维DCT,然后丢弃块中那些近似于0的频率数值,只保留64个DCT系数中的10个,最后对每一个块使用二维反DCT重构图像dctcom.m
88JSteg隐写基本思想:用秘密信息比特直接替换JPEG图像中量化后DCT系数的最低比特位,但若量化后DCT系数为0或者1,则不进行处理。三、典型的DCT域隐写方法
89JSteg隐写嵌入过程:1)部分解码JPEG图像,得到二进制存储的AC系数,判断该AC系数是否等于1或0,若等于则跳过该AC系数,否则,执行下一步;2)判断二进制存储的AC系数的LSB是否与要嵌入的秘密信息比特相同,若相同,则不对其进行更改;否则,执行下一步;3)用秘密信息比特替换二进制存储的AC系数的LSB;将修改后的AC系数重新编码得到隐密JPEG图像。提取过程:部分解码JPEG图像,得到二进制存储的AC系数,取出不等于1和0的AC系数的LSB,组成秘密信息。三、典型的DCT域隐写方法
90偶数代表信息“0”;奇数代表信息“1”嵌入方式示意图JSteg隐写三、典型的DCT域隐写方法
91DCT系数中0和1的处理:DCT系数中”0”的比例最大(一般可达到60%以上,取决于图像质量和压缩因子),压缩编码是利用大量出现连零实现的,如果改变DCT系数中”0”的话,就不能很好的实现压缩.DCT系数中的”1”若变为”0”,由于接受端无法区分未使用的”0”和嵌入消息后得到的”0”,从而无法实现秘密消息的提取。JSteg隐写三、典型的DCT域隐写方法
92JSteg隐写对直方图的影响大量的实验数据显示JPEG图像的DCT系数具有如下两个特性:绝对值越大的DCT系数,出现的频率越低,对应其在直方图中的值就越小;随着DCT系数绝对值的增加,其出现的频率下降的幅度减小,如直方图中间部分相邻两列的差值比边缘两列的差值要大。三、典型的DCT域隐写方法
93JSteg隐写的特点简单,容易实现容量可观相对容量(嵌入容量与文件自身大小比值)与空域LSB方法相当由于DCT系数统计直方图的异常,可以很容易的被卡方攻击方法检测出秘密消息的存在。三、典型的DCT域隐写方法
94AndreasWestfeld2001年提出了一种更加安全的隐写方法—F5隐写,此方法是在F3隐写和F4隐写基础之上发展而来的。F5隐写具有较高的安全性,它能够保持JPEG图像DCT系数直方图的特性,并且对图像的更改相对较少。F5隐写三、典型的DCT域隐写方法
95F3隐写对JSteg隐写进行了改进,具体嵌入策略如下:信息嵌入时,若DCT系数的LSB与要嵌入的秘密信息比特相同,则不做改动;否则,将该DCT系数的绝对值减1;秘密信息嵌入在非0的DCT系数上,为0的系数不嵌入信息。当在绝对值为1的系数上嵌入比特0时,会产生新的0系数,则此次嵌入无效,在下一个系数中重新嵌入。对F3隐写后的秘密信息提取时,只要将非0的DCT系数的LSB提取即可。F5隐写—F3隐写三、典型的DCT域隐写方法
96偶数代表信息“0”;奇数代表信息“1”F5隐写—F3隐写三、典型的DCT域隐写方法
97保持了DCT系数统计分布关于0的对称性;在DCT系数1或者-1中嵌入消息0得到0,此时检测器不能分辨DCT系数中消息嵌入产生的0和未使用的0,从而不能正确提取消息位,因而必须重传这一消息0;嵌入了更多的零,这一异常可以被利用于隐写分析;重传导致DCT系数中偶数明显增多(除0外)。原始图像一般来说DCT系数中奇数总数多于偶数总数(不包括零),这样很容易区分开原始图像和载密图像。F5隐写—F3隐写的特点三、典型的DCT域隐写方法
98F4隐写对F3隐写进行了改进,具体嵌入:若系数所代表的比特位与要嵌入的信息相同,则不做改动;若不同,则将系数的绝对值减1。产生新的0系数时,视为无效嵌入,在下一个系数中重新嵌入。用正奇系数和负偶系数代表1,正偶系数和负奇系数代表0,值为0的DCT系数仍不负载秘密信息。F5隐写—F4隐写三、典型的DCT域隐写方法
99F5隐写—F4隐写三、典型的DCT域隐写方法F4隐写对系数直方图的影响
1001.正偶数和负奇数代表消息0;负偶数和正奇数代表1;2.若当前系数代表的消息位与待嵌入的消息位不一致,该系数的绝对值减小1;3.系数绝对值减小1后若为0,则重新编码当前消息位;4.重传的消息比特0和1的个数近似相等.F5隐写—F4隐写举例:嵌入01110三、典型的DCT域隐写方法
101问题的提出:F4隐写使直方图特性得到了保持,但F4隐写是顺序嵌入的,这就使得LSB的修改集中在图像的某一部分,可能导致图像质量的不均匀;另外,当嵌入信息时,对系数的LSB更改的概率为1/2,所以在嵌入较多信息时,系数的更改会比较多,检测者据此很可能发现秘密信息的存在。基本思想:在F4隐写基础上,引入混洗和矩阵编码技术。混洗使得隐密图像的质量比较均衡。矩阵编码将减少嵌入对系数的更改,以提高嵌入效率。F5隐写三、典型的DCT域隐写方法
102矩阵编码技术由RonCrandall于1998年提出。矩阵编码的目的就是以最少的更改嵌入更多的秘密信息。以每次嵌入2比特信息x1x2为例此时,嵌入2比特信息只需用载体数据的3个LSB:a1a2a3,且最多改动其中的一个ai即可实现2比特数据的嵌入。a1a2a3不作任何改动改动a1改动a2改动a3F5隐写—矩阵编码三、典型的DCT域隐写方法
103假设存在码字a,具有n个可修改的位置,用来嵌入k比特的秘密消息x。矩阵编码对于任意a和x的组合找到码字a’,是否存在变换f和一个确定的值d,使得x=f(a’),且a与a’之间的汉明距离满足d(a,a’)≤d长度为n的码字在改变其中不超过d个比特时嵌入k比特信息,这个问题用三元组(d,n,k)来表示。F5隐写—矩阵编码三、典型的DCT域隐写方法
104f定义为:Westfeld:(1,n,k)码的一个实现其中:定义a’:x=f(a')F5隐写—矩阵编码三、典型的DCT域隐写方法
105F5隐写—矩阵编码三、典型的DCT域隐写方法
106(1,n,k)码的性能指标改变的比特的比例为D(k)=1/(n+1)=1/2k嵌入率为R(k)=k/n=k/(2k-1)嵌入效率为W(k)=R(k)/D(k)=2k*k/(2k-1)F5隐写—矩阵编码三、典型的DCT域隐写方法
107(1,n,k)码的改变比例和嵌入效率k12345678n137153163127255改变比例(%)50.025.012.56.253.121.560.780.39嵌入率(%)10066.6742.8626.6716.139.525.513.14嵌入效率2.002.673.434.275.166.097.068.03F5隐写—矩阵编码三、典型的DCT域隐写方法
108嵌入过程:1)获取载体图像,进行JPEG压缩,得到量化后的DCT系数;2)对1)中得到的AC系数进行混洗,混洗的方法作为密钥;3)对可用的AC系数计数,并根据欲嵌入的秘密信息长度计算得到嵌入信息所使用的三元组(1,n,k);4)取出个混洗后的非0的AC系数及欲嵌入的比特信息,采用矩阵编码进行嵌入:F5隐写三、典型的DCT域隐写方法
109①计算载体数据是否需要更改。若不需要,则继续下一组的嵌入,若需要,则更改相应的数据LSB;②对经过更改后的数据,判断是否产生了新的值为0的系数,若有,则此次嵌入无效,重新取出n比特数据(包含上次嵌入中没有改变的n-1比特和1比特的新数据),执行①;若没有,重复执行4),直到秘密信息全部嵌入;5)逆混洗,恢复DCT系数为原来的顺序;6)生成隐密图像。思考:F5隐写与F4隐写中对数据的更改率有所不同,那么经F5隐写后,隐密图像的DCT系数直方图是否也保持前面所说的两个特性呢?F5隐写三、典型的DCT域隐写方法
110OutGuess隐写有两个版本,后一个版本增加了系数直方图修正。下面所讲的是带修正的OutGuess隐写。与JSteg隐写相同的是,OutGuess隐写也是在量化后不为0和1的DCT系数的LSB嵌入秘密信息。不同的是:OutGuess隐写在选取冗余比特时,尽量选取与秘密信息较为接近的冗余比特序列,而且在嵌入之后要对嵌入引起的直方图改变进行修正。OutGuess隐写三、典型的DCT域隐写方法
111嵌入信息时的冗余比特选取方式:b0=0,bi=bi-1+Ri(x),i=1,2,….式(3.30)其中bi表示第i个比特嵌入的位置,Ri(x)表示PRNG产生的伪随机数,Ri(x)介于1与x之间。每嵌入8比特,重新计算x=2m/H,m表示剩余的冗余比特数,H表示尚未嵌入的秘密信息长度。嵌入状态字时的冗余比特选取方式:同上,不同的是x是确定的。OutGuess隐写三、典型的DCT域隐写方法
112RC4流加密:提高安全性纠错编码:选取的冗余比特可能已被锁定,即1)对这些比特进行更改可能会引起图像的显著变化;2)多重嵌入时,选取的比特位置可能已含秘密信息。此时更改将使得隐密图像易于被检测,或使得其中的一个接收方不能接收到正确的信息。因此不对这些比特更改。为正确提取,引入纠错码。OutGuess隐写三、典型的DCT域隐写方法
113信息嵌入种子选取:根据不同种子,伪随机数产生器选取的冗余比特序列是不同的,须更改的比特数量也有所不同的。因此,须选取合适的种子,使得:1)选取的比特序列与秘密信息尽量接近,以减少对载体的更改;2)在多重嵌入时,还必须尽量减少选取的冗余比特序列与之前的嵌入间的冲突。OutGuess隐写三、典型的DCT域隐写方法
114直方图修正嵌入秘密信息时引入直方图修正,以保持DCT系数直方图的特性不变。如,需更改第j个DCT系数DCT(j):若DCT(j)=2i,则将其更改为2i+1,同时,应选取一个值为2i+1的系数DCT(k),将其更改为2i。OutGuess隐写三、典型的DCT域隐写方法
115容量要求用h(i)表示载体中值为i的系数数量,a表示信息长度与冗余比特数量间的比率。若h(2i)>h(2i+1),则嵌入后直方图为:h’(2i)=h(2i)-a/2(h(2i)-h(2i+1))h’(2i+1)=h(2i+1)+a/2(h(2i)-h(2i+1))显然,值为2i的系数减少,而值为2i+1的系数增多,它们减少和增多的数量都为a/2(h(2i)-h(2i+1))OutGuess隐写三、典型的DCT域隐写方法
116为了保持直方图不变,需要将部分未含信息的值为2i+1的系数更改为2i.而未含信息的值为2i+1的系数为h(2i+1)(1-a/2).因此,为了有足够的系数用于修正,信息比率a应满足h(2i+1)(1-a/2)≥a/2(h(2i)-h(2i+1))即a≤2h(2i+1)/(h(2i)+h(2i+1))OutGuess隐写三、典型的DCT域隐写方法
117提取过程:1)根据密钥K采用式(3.30)所描述的方法选取冗余比特位置,提取加密后的状态信息;2)根据密钥K对RC4流加密后的状态信息进行解密;3)对解密后的状态信息进行纠错解码,得到16比特的种子和16比特的秘密信息长度;4)根据状态信息中的种子和秘密信息长度,采用式(3.30)和(3.31)所描述的方法选取冗余比特序列,并根据密钥K对序列进行加密,然后,纠错解码得到秘密信息。OutGuess隐写三、典型的DCT域隐写方法
118Sallee于2004年提出了基于模型(Model-based,MB)的隐写框架,是隐写安全性研究成果与隐写方法设计的良好结合。基本思想:将载体信号建模为由两部分组成的随机变量X=(Xdet,Xindet),其中Xdet和Xindet分别表示确定的和非确定的部分。隐写时,将只更改Xindet,从而保持它的分布不变,而且将确保隐密对象的非确定部分服从一定的分布模型。MB(Model-Based)隐写三、典型的DCT域隐写方法
119用熵解码器把均匀分布的秘密信息比特解码成服从上述条件概率分布的数据。MB隐写三、典型的DCT域隐写方法用得到的数据替换X中的非确定部分,得到隐密对象。计算确定部分的概率分别,并根据假设的模型,计算非确定部分相对确定部分的条件概率:
120MB隐写三、典型的DCT域隐写方法MB隐写的平均最大容量为条件分布的熵:嵌入示意图提取示意图
121MB隐写三、典型的DCT域隐写方法Sallee将MB隐写框架应用于JPEG图像,提出了基于广义Cauchy模型的JPEG隐写,简称为CauchyMB隐写。由于该算法是基于MB隐写框架设计的第一个隐写算法,也被称为MB1隐写。
122MB隐写三、典型的DCT域隐写方法表示量化后AC系数的直方图,在这里称之为高精度直方图,其中(i,j)表示该直方图所统计的系数在8×8分块中的位置,k表示量化后的AC系数值。将量化后的DCT系数值按下列形式进行分组:其中r为分组标号,d为分组长度,即除分组G0外,每个分组由d个系数值组成,表示分组内的第i个系数值,隐写时用该系数值代表信息i。由每个组中的系数数目组成的直方图称为低精度直方图。
123MB隐写三、典型的DCT域隐写方法与常用的高斯分布、广义拉普拉斯分布等相比,Cauchy分布能够更好地拟合AC系数直方图。尤其在Cauchy分布的尾部,能够对直方图进行非常好的拟合。Cauchy分布具有封闭形式的概率分布函数,这使得能够方便地计算每个直方图方条的概率。因此,Sallee用一个特殊形式的Cauchy分布描述系数直方图。
124MB隐写三、典型的DCT域隐写方法所采用的Cauchy分布的概率密度函数为其中λ>0为缩放参数,λ越小表明该函数的峰值越大,系数值越集中于0,v为尾部参数,且v>1,此时概率密度函数的尾部衰减比Cauchy分布要缓慢。该分布的概率分布函数为
125MB隐写三、典型的DCT域隐写方法MB1隐写时,各系数所在分组编号作为载体中确定的部分Xdet,保持不变,而将系数更改为分组内代表相应信息i的值Gr(i)。如下图所示,其中d=2,一个低精度方条由两个高精度方条组成,即
126MB隐写三、典型的DCT域隐写方法为了保持分组内各系数值所占的比例与用Cauchy分布拟合所得到的一致,MB1隐写将秘密信息、每个系数值在分组内的相对位置及其条件概率传至熵解码器,以解码得到隐写后的每个系数值在分组内的相对位置,从而得到隐密系数。为了避免只改变图像的一部分而引起的与未含秘密信息部分的视觉差异,用于隐写信息的系数顺序将随机确定。
127MB隐写三、典型的DCT域隐写方法嵌入过程:1)给定JPEG格式的载体图像,加密后的信息。得到载体图像AC系数值的低精度直方图(系数值分组长度大于1)作为Xdet;2)采用最大似然拟合每个直方图的模型参数和;3)由系数值在各自分组内的偏移组成Xindet,利用模型的条件概率密度函数计算每个系数的值所在的分组内所有可能的偏移相对其分组的条件概率;
128MB隐写三、典型的DCT域隐写方法嵌入过程:4)选取一伪随机置乱,以确定系数顺序;5)以4)中确定的顺序将秘密信息、系数偏移、3)中计算得到的条件概率传至一个非自适应算术解码器。解码得到含秘密信息的偏移;6)根据系数值所在的分组和解码得到的系数值在分组内的偏移,得到隐写后的系数。
129MB隐写三、典型的DCT域隐写方法提取过程:1)-4)与嵌入过程相同。5)以4)中确定的顺序将系数偏移、3)中计算得到的偏移概率传至非自适应算术编码器。编码得到秘密信息。
130MB隐写三、典型的DCT域隐写方法之后,考虑到MB1隐写将增大图像8×8块间的不连续性,即分块效应,PhilSallee只在至多一半的非0系数上进行MB1隐写,然后对剩下的非0系数值进行调整,以减小分块效应,从而提出MB2隐写。
131其它隐写三、典型的DCT域隐写方法由于JPEG压缩的广泛应用,除了上述典型的隐写方法外,研究者们还提出了改进的F5隐写,如:-F5和nsF5(no-shrinkageF5)隐写;基于最小失真的PQ(PerturbedQuantization)、PQe(energy-adaptivePQ)和PQt(text-adaptivePQ)隐写等;基于量化指数调制的QIM(QuantizationIndexModulation)隐写;YASS(YetAnotherSteganographyScheme)隐写;以及基于系数间大小关系的隐写等等。
132范例:Hidedctadv.mExtractdctadv.m
133图像小波变换
134小波与小波变换简述通俗的讲,小波(wavelet)是一种在有限(小)区域内存在的波,是一种其函数表达式具有紧支集,即在有限范围内函数f(x)不等于零的特殊波形。假设存在一个时域函数φ(t),满足:(f表示fourier变换)或
135小波与小波变换简述则称φ(t)为一个母小波函数(MotherWaveletFunction)。一个母小波函数有如下几个特点:1.因为,而故而也就是说,一个母小波函数的直流分量(Directcurrentcomponents)为0。换句话说,就是母小波函数具有正负交替的特点,其均值为0。2.一个母小波函数是一个带通信号。
136小波与小波变换简述3.母小波函数随t绝对值的变大而最终衰减为0。即其函数表达式具有紧支集。下图是典型的小波母函数和小波函数。
137例程:wavelet1D.m
138图像小波变换二维信号的小波分解就可以写为:其中A为低频分量,D可以看为水平、垂直和对角三个方向上的高频分量。
139图像小波变换这里,我们选用的二维图像信号仍然是lenna.jpg。由于lenna是一个RGB图像,我们仅对其R层进行实验。编写函数wavelet2D.m
140图像小波变换
141图像小波变换清晰的反映了两重小波分解后的各个频率段信号重构成的图像。可以发现,低频图像与原始图像是非常近似的,而高频部分也可以认为是冗余的噪声部分。所以,图像载体下的小波分解信息隐藏算法一般的都是将信息隐藏于分解后的低频部分,从而获得高的鲁棒性。当然的,将信息隐藏于高频系数中,可以获得很好的不可见性。不可见性与鲁棒性是信息隐藏算法性能好坏的重要判定依据,二者可以看成是一对矛盾。解决这一矛盾的方法是“折衷”。
142图像小波变换lennaR是一个256×256的二维信号,对其做1层小波分解,得到C是一个1×65536的行向量,记录的是低频、水平高频、垂直高频和对角高频()四个部分的频率系数。S是一个3×2的矩阵,其第一行表明尺度1下的低频系数为128×128长度;第二行表明尺度1下的高频系数为128×128长度;第三行表明lennaR是一个256×256的二维信号。lowf和highfH,highfD和highfV分别对应分离出来的四个部分的系数矩阵。
143图像小波变换
144图像小波变换
145图像小波变换对lennaR做2层小波分解,得到C也是一个1×65536的行向量,记录的是2尺度低频、2尺度水平高频、2尺度垂直高频、2尺度对角高频、1尺度水平高频、1尺度垂直高频和1尺度对角高频()七个部分的频率系数。下图中S是一个4×2的矩阵,其第一行表明尺度2下的低频系数为64×64长度;第二行表明尺度2下的高频系数为64×64长度;第三行表明尺度1下的高频系数为128×128长度;
146图像小波变换第四行表明lennaR是一个256×256的二维信号。lowf和highfH,highfD和highfV对应2尺度下分离出来四个部分的系数矩阵。
147图像小波变换比较做1层分解和2层分解频率系数图,可以发现MATLAB中的二维DWT有如下规律:1、返回的频率系数(C向量中)以如下形式存放C=[A(level)|H(level)|V(level)|D(level)H(level-1)V(level-1)D(level-1)…|H(1)|V(1)|D(1)]2、返回频率系数的同时,返回一个长度记录矩阵S。S的格式为:S(1,:)=尺度level下的低频系数长度
148图像小波变换S(i,:)=尺度level-i+2下的低频系数长度S(level+2,:)=原始信号的大小3、原始信号通过两个共轭滤波器后,得到高、低频两路信号。假设原始信号抽取256个点参与计算,那么将得到512个频率数据,如此下去冗余太大。所以,在滤波之后还要进一步抽样以减少冗余。通行的方法是隔一数丢弃一个数,从而保证滤波后的两路信号与原始信号数据长度一致。这三个结论,对小波信息隐藏实验有很大帮助。
149图像压缩:Imagecom.m图像降嗓Imagenr.m图像融合Imagecbe.m
此文档下载收益归作者所有