This repository was archived by the owner on Mar 7, 2025. It is now read-only.
Repository files navigation
以块为单位,将块分为调整区和嵌入区,利用差分扩展将调整区中的像素的MSB嵌入嵌入区,加密后通过改变调整区像素的MSB使块平均像素与原始平均像素值基本一致从而达到缩略图保持。
记录调整区的MSB
对嵌入区的像素进行分类
每两个像素为一组
计算两个像素之间的平均值以及差值
通过判断 |2h+b| , |2 [h/2]+b| 与 min(2(255-l),2l+1) 之间的关系,从而对每组像素进行分类
EZ :h=0 || h=-1
EN : |2*h+b| <= min(2(255-l), 2l+1) 即可拓展集合
CN : |2*[h/2]+b| <= min(2(255-l), 2l+1 即可变集合
NC : 不满足上述两个条件,即不可变区
考虑到空间因素,将EN分为EN1和EN2两部分一部分作为可拓展部分,一部分作为可变部分
生成待嵌入数据
locate-map用于标记可拓展像素组
对属于EN2和CN集合的像素组的h的LSB部分进行收集(h=1 || h=-2时不用记录)
调整区的MSB部分
(若MSB>1,则将每个像素的同一位一起保存,例如将每个像素的最高位收集在一起,然后将次高位收集存在所有最高位之后)
将locate-map以及MSB部分进行游程编码来进行压缩
整合为块嵌入数据: data = Encode(locate-map) + LSB + Encode(MSB)
进行预备工作
对于可拓展像素组
对于可变像素组
x' = l+[(h'+1)/2]
y' = l-[h'/2]
整合待嵌入数据
对块内得到的数据信息进行编码,这里采用的是当遇到连续8个‘1’时,在后面加上‘0’
对块与块数据之间插入分隔符‘01111111110’用于区别
对图像整体进行数据嵌入
通过判断 |2*[h/2]+b| 与 min(2(255-l),2l+1) 之间的关系,从而对每组像素进行分类
CH :|2*[h/2]+b| <= min(2(255-l), 2l+1 即可变集合
NC :不可变区
对于可变像素组
h' = h+b (b为待嵌入比特)
若数据已经嵌入完成,则不再进行嵌入操作
x' = l+[(h'+1)/2]
y' = l-[h'/2]
此处用简单的流加密方式进行加密,当然可以采用更安全的加密方式(包括会改变像素位置的加密方式,但一定要记录可调整区像素位置用于调整)
通过不断改变调整区像素的MSB,找出所有可能中最接近于原图像块平均像素的一组数据(即遍历查找)
将嵌入区的像素组分类
两个像素一组
计算两个像素之间的平均值以及差值
通过判断 |2*[h/2]+b| 与 min(2(255-l),2l+1) 之间的关系,从而对每组像素进行分类
CH :|2*[h/2]+b| <= min(2(255-l), 2l+1 即可变集合
NC :不可变区
可变集合CH中的hh的LSB位即为嵌入的信息
对提取的信息进行解码,并根据分隔符将整体嵌入信息分解为各个块的嵌入信息
计算出嵌入信息各组成部分压缩前的大小
locate-map:(blocksize-2)*(blocksize-2)/2
MSB:blocksize*4-4
LSB:size(data) - size(locate-map) - size(MSB)
对经过压缩的嵌入数据进行还原
从data的首部开始:边还原MAP边对已经还原的MAP元素个数进行计算,当达到locate-map原大小时停止
从data的尾部开始:边还原MSB边对已经还原的MSB元素个数进行计算,当达到MSB原大小时停止
两部分中间的即为LSB部分
将嵌入区的像素组分类
两个像素一组
计算两个像素之间的平均值以及差值
通过判断 |2*[h/2]+b| 与 min(2(255-l),2l+1) 之间的关系,从而对每组像素进行分类
CH :|2*[h/2]+b| <= min(2(255-l), 2l+1 即可变集合
NC :不可变区
对可变区的像素进行还原
对于属于EZ & EN1的像素组(即locate-map中值为1): h = [hh/2]
0 <= hh <= 1: h = 1
12 <= hh <= -1: h = -2
else: h = 2*[hh/2]+LSB
x = l+[(h+1)/2]
y = l-[h/2]
对调整区像素进行还原
About
PRA-TPE: Perfectly recoverable approximate thumbnail-preserving image encryption
Topics
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.