1.一种基于行标签压缩的可逆信息隐藏方法,其特征在于,包括如下步骤:
1)基于行标签的位平面编码:假设对于大小为s1×s2的位平面块B,令n为块内像素总数,n=s1*s2,n1为块内值为1的元素个数,记第i行第j列元素为ci,j,第i行元素的总和为hi,其中1<i≤s1,1<j≤s2,则:当hi=0时,则第i行的所有元素全为0,否则第i行元素不全为0,令:令:
对位平面块,m为位平面块中元素不全为0的行数,根据n1和m对块进行分类,记为(n1:m),采用行标签的块编码方法,对(n1:m)块进行压缩,行标签的块编码由4部分组成,即:n1的编码[行标签][行分布编码][行编码],
其中,针对不同情况的(n1:m)块,[]项是可以省略项,
具体编码如下:
1‑1)n1的编码:
对n1的编码是记录n1的值所需的比特位,设长度为p;
对于(0:0)块,即位平面值全为0的块,只需要记录n1所占位数p,其余3部分省略;
对于(1:1)块,即只有一个元素为1的位平面块,记录n1所占位数p和元素为1的行号和列号,其余2部分省略;
1‑2)行标签:
行标签是记录每行是否存在值为1的元素,长度为s1比特位,设行标签为Q,则:对(n1:m)块,Q中有m个值为1,fi=1说明第i行不全为0;
1‑3)行分布编码:
行分布编码是在m行中,值为“1”的元素的在每行分布情况,对于每个(n1:m)块,值为“1”的元素行分布共有 种情况,采用行分布编码进行区分,当 时,表示当前块值为1的元素分布在一行,依据行标签就可以确定,不需要行分布编码,当 时,设当前块值为1的元素行分布需要记录的位数为b,则有
1‑4)行编码:
行编码是对(n1:m)块中不全为0的m行进行编码,确定每行数据,对于不全为0的行,从左到右扫描行中元素,行中第一个元素到最后一个值为1的元素为行编码,设(n1:m)块的第i个行编码的长度为li,总的行编码长度l,则有:
2)基于行标签编码的可逆信息隐藏:
2‑1)基于行标签编码图像块压缩:对图像I中λ个连续高位平面进行分块,设块为Br,块的大小为s1×s2,Br的第t个位平面为Br,t,Br,t中1的个数为n1,0的个数为n0,当n0<n1,表示该块1的个数比0的个数多、为多数为1的块,将1与0互换,转换为多数为0的块,对多数为0和多数为1的块进行标记,对块用行标签编码进行压缩时,将块分为可压缩块和不可压缩块,对这些块进行标记,多数为1的可压缩块标记为00,多数为0的可压缩块标记为01,不可压缩块标记为1,对n1∈[0,i],1≤i≤n/2的位平面块进行压缩,设n1∈[0,i]的位平面块压缩容量为vi,从1开始到n/2,计算每一个i的压缩容量,在[0,i]之间找出整数Ta,使得所有n1∈[0,i]的块压缩空间最大,公式如下:Ta=argmax(v0,v1,…,vn/2),
当n1∈[0,Ta]时,定义该块为可压缩块;当n1∈[Ta,n/2]时,定义该块为不可压缩块,对图像块采用基于行标签的位平面编码进行压缩后,统计可压缩块中n1的分布,进行哈夫曼编码,得到不同n1值的比特位数p,对于可压缩块,需要2比特记录块类型标识,记录n1所占位数p,行标签Q的长度s1,行分布编码的长度b和行编码长度l,设每个可压缩位平面块的可用空间Ci,则:Ci=s1×s2‑p‑s1‑b‑l‑2,
按照上述方式对每个块进行压缩,设可压缩位平面块有t个,不可压缩块有u个,则总压缩空间EC为:
2‑1)信息嵌入:对图像连续λ个高位平面按行标签编码对块进行压缩,得到总压缩空间,用一维数组Tag记录块标记,seq1记录压缩编码,seq2记录不压缩块的数据,信息隐藏步骤如下:
2‑1‑1)顺序扫描所有的块,并对所有块进行基于行标签的压缩编码;
2‑1‑2)将块标识顺序保存在Tag中,若为压缩块将行标签编码顺序保存在seq1中,若为不压缩块,则将原始数据存储在seq2中;
2‑1‑3)将Tag、seq1和seq2拼接起来,得到压缩数据RD;
2‑1‑4)记录Tag、seq1的长度,嵌入秘密信息,作为辅助信息;
2‑1‑5)在连续λ个高位平面中,首先嵌入辅助信息长度和辅助信息,然后嵌入位平面压缩数据RD,最后嵌入秘密信息;
3)信息提取与图像恢复:首先根据分块大小s1和s2对图像进行分块,在图像连续λ个高位平面提取辅助信息,得到压缩数据RD和秘密信息长度,然后根据RD和秘密信息的长度,提取嵌入的秘密信息和压缩数据RD,最后通过解压RD得到块标识Tag以及seq1和seq2,根据块标识,若为压缩块,在seq1中恢复块的原始数据,若为不可压缩块,从seq2直接提取原始数据,最终得到原始图像。