本发明涉及数据加密技术领域,尤其是一种在图像中隐藏数据方法和系统。
背景技术:
图像加密和数据隐藏是用以保护数字图像私密性的两种不同的技术,图像加密技术旨在将原始明文图像加密成噪声图像,使得未授权用户无法辨认以及获取有效信息,而数据隐藏技术可以在载体图像中嵌入需要隐藏的秘密数据并且使得嵌入数据后的载体图像不失真(或者失真程度低),在没有密钥的情况下无法从载体图片中提取秘密数据。可逆数据隐藏是一种能在提取秘密数据后完美还原载体图片的数据隐藏技术,近年随着云计算的发展和应用,作用在加密域图像上的可逆数据隐藏技术引起广泛的关注和研究。这种技术结合了图像加密和可逆数据隐藏两种技术,同时也继承了两者的全部优点,拥有隐私保护、内容完整性鉴定、多媒体密文信息管理等应用功能。由于加密域图像可逆数据隐藏的技术特性,使其可以应用在需要同时保证数字内容安全性以及还原后的高保真度的场景,比如:医学影像、法律取证以及军事用途等。医生为了保护病人隐私,会将相关医学图像在上传云服务端之前进行加密,而云服务端会在密文图像中嵌入若干标识(如图片来源和分类),以便在不了解原文内容的情况下管理密文图像。得到授权的用户可以在云端下载相关图片,然后提取数据(标识)或者无损地还原密文图片。
为了保证密文图像可以无损还原,压缩密文储存空间时需要保证图片信息被完整记录,会造成预留的空间较少,因此可逆数据隐藏方法一般情况下嵌入率较低。除此之外,作用在加密域图像的可逆数据隐藏方法大体上分为两类:一种是在加密后预留出空间位置(vrae),另一种是在加密前腾出空间位置(rrbe),rrbe结构的方法需要在图像加密之前进行额外的预处理,这会增加图像拥有者的工作负担,内容持有者一般无法完成过于复杂的操作而且将操作结果通知云服务端会大大增加通信成本,因此rrbe结构的方法不具备很好地应用性。vrae结构的方法具有很好地应用性,但因为加密后图像混乱度高可利用空间小,这种类型的方法往往嵌入率比较低,无法嵌入过多的秘密数据。
技术实现要素:
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的是提供一种在图像中隐藏数据方法和系统。
本发明所采用的技术方案是:
一种在图像中隐藏数据方法,包括:s1、图像分割成若干个不重叠的规格为奇数平方的像素的图像块,置乱图像块内的像素或/和图像块的位置以形成加密图像;s2、将加密图像分割成若干个不重叠的规格为奇数平方的像素的图像块,根据非中心像素点与中心像素点的像素差值标记非中心像素点为ep或np,其中,ep为可嵌入像素点,np为不可嵌入点;s3、修改ep和np对应的属性值的最高有效位以区别ep和np,修改ep的属性值的一部分以记录np和中心像素点的像素差,修改ep的属性值的一部分以记录需要被隐藏的数据。
优选地,步骤s1具体包括:图像分割成若干个不重叠的规格为奇数平方的像素的图像块,生成随机序列,排序所述随机序列,根据排序的索引关系置乱图像块内的像素或/和图像块的位置以形成加密图像,其中,图像块内的像素设置有中心像素点,所述中心像素点的位置不涉及置乱。
优选地,步骤s1具体包括:图像分割成若干个不重叠的规格为奇数平方的像素的图像块,置乱图像块内的像素或/和图像块的位置,分别修改每一个图像块的像素值以形成加密图像。
优选地,步骤s3具体包括:修改ep和np对应的属性值的最高有效位以区别ep和np,其中,ep的最高有效位为1,np的最高有效位为0;修改属性值中的次高有效位,其中,当所述次高有效位为1,则代表像素差为负值,当所述次高有效位为0,则代表像素差为正值,选取非最高有效位和次高有效位的一部分有效位以存储像素差的值;修改ep的属性值的一部分未被修改的有效位以记录需要被隐藏的数据。
优选地,生成随机序列的步骤具体包括:基于随机函数和预设的密钥生成随机序列。
本发明所采用的技术方案是:
一种在图像中隐藏数据系统,包括:置乱模块,用于图像分割成若干个不重叠的规格为奇数平方的像素的图像块,置乱图像块内的像素或/和图像块的位置以形成加密图像;处理模块,用于将加密图像分割成若干个不重叠的规格为奇数平方的像素的图像块,根据非中心像素点与中心像素点的像素差值标记非中心像素点为ep或np,其中,ep为可嵌入像素点,np为不可嵌入点;修改模块,用于修改ep和np对应的属性值的最高有效位以区别ep和np,修改ep的属性值的一部分以记录np和中心像素点的像素差,修改ep的属性值的一部分以记录需要被隐藏的数据。
优选地,所述置乱模块,具体用于图像分割成若干个不重叠的规格为奇数平方的像素的图像块,生成随机序列,排序所述随机序列,根据排序的索引关系置乱图像块内的像素或/和图像块的位置以形成加密图像,其中,图像块内的像素设置有中心像素点,所述中心像素点的位置不涉及置乱。
优选地,所述置乱模块,具体用于图像分割成若干个不重叠的规格为奇数平方的像素的图像块,置乱图像块内的像素或/和图像块的位置,分别修改每一个图像块的像素值以形成加密图像。
优选地,所述修改模块,具体用于修改ep和np对应的属性值的最高有效位以区别ep和np,其中,ep的最高有效位为1,np的最高有效位为0;修改属性值中的次高有效位,其中,当所述次高有效位为1,则代表像素差为负值,当所述次高有效位为0,则代表像素差为正值,选取非最高有效位和次高有效位的一部分有效位以存储像素差的值;修改ep的属性值的一部分未被修改的有效位以记录需要被隐藏的数据。
优选地,生成随机序列的步骤具体包括:基于随机函数和预设的密钥生成随机序列。
本发明的有益效果是:
本发明通过非中心像素点与中心像素点的像素差值区别较好修改的像素和不适合修改的像素,能够避免在还原过程中导致的图像失真,通过像素的值的不同有效位的修改以存储必要的信息以实现数据的隐藏,能够提高数据的存储量。
附图说明
图1是本发明的一种在图像中隐藏数据方法的示意图;
图2是本发明的整体框架图;
图3是本发明的一种在图像中隐藏数据系统的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1
本实施例的目的用于解释本发明的解决思路。
本实例提供如图1所示的一种在图像中隐藏数据方法,包括:s1、图像分割成若干个不重叠的规格为奇数平方的像素的图像块,置乱图像块内的像素或/和图像块的位置以形成加密图像;s2、将加密图像分割成若干个不重叠的规格为奇数平方的像素的图像块,根据非中心像素点与中心像素点的像素差值标记非中心像素点为ep或np,其中,ep为可嵌入像素点,np为不可嵌入点;s3、修改ep和np对应的属性值(即该像素点的像素值对应的二进制数据)的最高有效位以区别ep和np,修改ep的属性值的一部分以记录np和中心像素点的像素差,修改ep的属性值的一部分以记录需要被隐藏的数据。其具体的步骤包括置乱阶段和修改阶段:
置乱阶段:a1、将原始明文图像分割为奇数平方(本实施例中为3×3,其目的是图像块中存在一个明显的、容易定位和确定的中心像素,不拘泥与具体的形状,而本实施例中,由于像素数量为奇数平方的图像块相较于不规则图像块、偶数平方的图像块在实际的图像分块中效率更高、难度较低)的不重叠图像块,由(预设的)密钥作为控制参数,利用混沌系统或者其他随机函数生成随机序列,给随机序列进行排序,随机序列排序前后的索引关系可以决定图像块的置换规则,从而完成图像块置乱(具体也可以采取其他置换规则,其要旨在于需要一个可控的置换规则来完成图像块的置乱)。
a2、利用混沌系统生成随机序列排序,进而根据索引关系对每个图像块内部的像素进行置乱,但要保持每个图像块中心点(中心的像素点)的位置不变(可以是只置换图像块或者只置换图像块内部的像素,而本实施例是这两者的结合)。
a3、完成块间置乱和块内置乱之后,每个图像块都分别加上一个随机数来统一改变图像块中像素值(其目的是增加保密性),随机数序列仍然可以通过混沌系统或其他随机函数以密钥为控制参数获得(即以密钥作为输入经过随机函数处理以输出随机数序列)。
数据嵌入阶段(即修改阶段),利用密文图像中保留的像素关联性(即置乱的前后关联),可以对每个图像块中的像素(除中心点外)进行像素相关性编码,压缩像素值信息储存空间,从而节省出空间用来嵌入需要隐藏的数据,具体步骤如下:
b1、将加密过后的密文图像同样分为3×3的不重叠密文图像块,对于每个图像块中的像素点首先进行分类。设定图像块的中心像素点(在奇数平方规格的图像块中,中心像素点即为物理意义的中心点,或者是由图像块外接圆的圆心位置)为参考像素点(rp),图像块中的其他8个像素点则可分类为可嵌入像素点(ep)或不可嵌入(像素)点(np);假设第i个像素块中第j个像素点值为
b2、将图像块中的像素点都分类后,可以进行像素相关性编码。一个像素点的值(属性值)一般都由8个bit位(有效位)表示,首先为了区分ep和np,分别在第8bit(最高有效位)标记“1”、“0”表示该像素点为ep点或np点,规定“1”表示该点为ep点,“0”表示该点为np点。rp点是参考点在所有编码过程中不需要改变,np点是不可嵌入点,只需要标记最高有效位,之后的bit位也不需要改变,np点原本的最高有效位值将会被记录下来随着待嵌入数据一起嵌入密文中。
b3、标记ep点的第7bit位(次高有效位),代表该点与rp点的像素值之差为正数或负数,规定“1”表示像素值之差e≤0,“0”表示像素值之差e>0。
b4、利用ep点的第4bit位到第6bit位记录改点与rp点的像素值之差的绝对值|e|,3个bit位可以表示0~7的十进制数。
b5、可以将负载(包括待嵌入数据以及所有图像块np点原本的最高有效位)嵌入ep点的第1~3bit位(后3bit位)。
具体的有效位的修改位置可以根据实际需要进行更改。
实施例2
本实施例提供基于实施例1的详细实施例。
图2是本发明所提出方案的整体框架图,基于像素相关性编码的加密域图像可逆数据隐藏方法包括三个工作阶段,分别为:图像加密阶段、数据嵌入阶段、图像还原和数据提取阶段:图像加密阶段,用密钥ke加密图像,可以在加密原始明文图像的同时将像素点之间的信息冗余保留在分割后的小图像块之中;数据嵌入阶段,用密钥kh加密原始数据,秘密数据可以利用像素相关性编码嵌入密文图像中,并且密文图像中每一个可嵌入像素点可以嵌入3bit数据,具有极高的嵌入率;图像还原和数据提取阶段,持有相应的密钥ke或kh可以分别进行图像解密和秘密信息,两个过程互不影响,并且解密后的图像没有任何失真现象,秘密信息和密文图像都能够无损还原。具体的步骤:
a1、将m×n尺寸的原始明文图像分割为3×3的不重叠图像块,利用一维logistic混沌系统:x(n+1)=u*x(n)*[1-x(n)],n=0.1.2···k,生成一组长度为
a2、利用a1中提到混沌系统,以同样的方法对每个图像块内部的像素进行位置置乱,同时保持每个图像块中心点的位置不变,无论中心点与周围点的位置如何,只要两点相邻,其相关性都不会改变,因此图像块内部的像素置换,只要保持中心点位置不变,则不会破坏像素相关性,同时还能提高图像加密安全性能。
a3、完成块间置乱和块内置乱之后,每个图像块都分别加上一个随机数来统一改变图像块中像素值,随机数可以通过混沌系统或其他随机函数以密钥为控制参数获得。设经过a1和a2步骤置乱后的图像中第i个图像块为di,令
将图像分为3×3(像素)的图像块目的在于,充分利用一个中心点f5以及周边所有像素点f1~f9的相关性,因此1个中心点被8个相邻点包围的图像块能最大限度的利用密文图像块中保留的像素关联性,在数据嵌入阶段可以对每个图像块中的像素(除中心点外)进行像素相关性编码,压缩像素值信息储存空间,从而节省出空间用来嵌入需要隐藏的数据,具体过程如下:
b1、将加密过后的密文图像同样分为3×3(像素)的不重叠密文图像块,对于每个图像块中的像素点首先进行分类。设定图像块中心像素点f5为参考像素点(rp),图像块中的其他8个像素点则可分类为可嵌入像素点(ep)或不可嵌入像素点(np)。假设第i个像素块中第j个像素点值为
b2、将图像块中的像素点都分类后,可以进行像素相关性编码。一个像素点的值一般都由8个bit位表示,首先为了区分ep和np,分别在第8bit(最高有效位)标记“1”、“0”表示该像素点为ep点或np点,规定“1”表示该点为ep点,“0”表示该点为np点。rp点是参考点在所有编码过程中不需要改变,np点是不可嵌入点,只需要标记最高有效位,之后的bit位也不需要改变,np点原本的最高有效位值将会被记录下来随着待嵌入数据一起嵌入密文中。以f1和f2为例,根据b1中设定的像素值,其对应二进制数为f1=(01111101)2和f2=(10001000)2。f1是ep点,修改最高有效位后二进制数为f1=(01111101)2,f2是np点,修改最高有效位后二进制数为f2=(10001000)2。
b3、标记ep点的第7bit位,代表该点与rp点的像素值之差为正数或负数,规定“1”表示像素值之差e≤0,“0”表示像素值之差e>0。以ep点f1为例,b2步骤后f1=(01111101)2,此步骤中应该修改为f1=(11111101)2。
b4、利用ep点的第4bit位到第6bit位记录改点与rp点的像素值之差的绝对值|e|,3个bit位可以表示0~7的十进制数,仍以ep点f1为例,b3步骤后f1=(11111101)2,由于原始|e|=|f1-f5|=|-3|=3,3的二进制数为(011)2,因此修改后f1=(11011101)2。
b5、可以将负载(包括待嵌入数据以及所有图像块np点原本的最高有效位,其中np点原本的最高有效位用于还原)嵌入ep点的第1~3bit位(后3bit位)。ep点f1的后三位可以被负载信息(即需要隐藏的信息)替换,每一个ep点可以提供3bit的嵌入位置,使得嵌入率大大提高。
图像还原以及数据提取阶段,持有相应的密钥ke或kh则可以互不影响地进行图像还原或者数据提取对应的,解码的过程包括:
(1)数据提取:扫描所有像素点(除rp点),从所有ep点(最高有效位标记为“1”)的最后3bit位提取负载信息,并且记录ep点个数为n1,记录np点(最高有效位标记为“0”)的个数记为n2,提取出来的负载信息前n2bit为所有np点的最高有效位原始数值,第n2+1位到第3n1位则是嵌入的秘密数据。因次,可以计算出有效嵌入率e=(3n1-n2)/mn,(bpp,即像素),其中mn代表图像中所有像素数量,随后利用(预设的)密钥kh可以解密提取出来的秘密数据,得到隐藏的信息。数据提取过程无需了解原始图像内容,不需要接收者提供密钥ke。
(2)图像还原:由(1)可知从负载中提取的前n2bit信息可以还原所有加密后的np点,对于ep点,由其第7bit位以及4~6bit位数据可以算出改ep点与rp点的像素值差e,rp点像素值加上e值即为ep点加密后的像素值。以ep点f1为例,经过b5步骤后f1嵌入未知数据,其二进制数表示为f1=(11011xxx)2,xxx代表未知序列;根据其第7bit为“1”可知e≤0,4~6bit为(011)2可知|e|=3,f1-f5=e=-3,而rp点f5=128,由此可以还原出f1=-3+128=125。算完所有ep点与np点像素值后,还原出完整的未嵌入数据的密文图像,之后利用解密密钥ke进行解密(加密操作的逆操作)可以得到原始明文图像,解密步骤如下:
d1、将m×n大小的密文图像分割为3×3的不重叠图像块将,设密文图像中第i个图像块为ei,令
d2、有序地进行a2、a1步骤的逆操作,利用相同的混沌系统和密钥ke生成相同的随机序列,将图像块内像素进行逆置乱,然后对图像块在图像中的位置进行逆置乱,之后可以还原出完整的原始明文图像。
实施例3
本实施例提供如图3所示的一种在图像中隐藏数据系统,包括:置乱模块1,用于图像分割成若干个不重叠的规格为奇数平方的像素的图像块,置乱图像块内的像素或/和图像块的位置以形成加密图像;处理模块2,用于将加密图像分割成若干个不重叠的规格为奇数平方的像素的图像块,根据非中心像素点与中心像素点的像素差值标记非中心像素点为ep或np,其中,ep为可嵌入像素点,np为不可嵌入点;修改模块3,用于修改ep和np对应的属性值的最高有效位以区别ep和np,修改ep的属性值的一部分以记录np和中心像素点的像素差,修改ep的属性值的一部分以记录需要被隐藏的数据。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。