论文简述附复现代码Reversible Watermarking Algorithm Using Sorting and Prediction比较经典的PEE算法

文章提炼

本篇的误差扩展算法(prediction error expanding,PEE)使用了菱形预测模式(rhombus pattern)、直方图转换(histogram shift)双嵌入方案(double embedding scheme),排序选定嵌入顺序(sorting),讨论了该算法中的越界问题(overflow/underflow question),在性能上比近来研究得到了很大的提升。

1.用四个临近像素进行预测

× 代表被预测像素,构成的集合为Cross set

● 代表预测 × 的临近像素,构成的集合为Dot set

此即菱形预测模式(rhombus pattern)。

预测公式:

u _{i,j}^{'}=\left \lfloor \frac{\upsilon _{i,j-1}+\upsilon _{i+1,j}+\upsilon _{i,j+1}+\upsilon _{i-1,j}}{4} \right \rfloor

预测误差:

d_{i,j}=u_{i,j}-u_{i,j}^{'}

对误差进行扩展,此即difference expansion:

D_{i,j}=2d_{i,j}+b

原始图像被改变为:

U_{i,j}=D_{i,j}+u_{i,j}^{'}

恢复时,扩展误差为:

D_{i,j}=U_{i,j}-u_{i,j}^{'}

嵌入信息为:

D_{i,j}=U_{i,j} mod 2

原始预测误差为:

d_{i,j}=\left \lfloor \frac{D_{i,j}}{2} \right \rfloor

原始像素值为:

u_{i,j}=u_{i,j}^{'}+d_{i,j}

直方图按如下公式转换

D_{i,j}=\begin{cases} 2d_{i,j}+b, & if \: d_{i,j}\in [T_n;T_p] \\ d_{i,j}+T_{p}+1, &if \: d_{i,j}> T_p \: and \: T_p \geq 0 \\ d_{i,j}+T_n, & if \:d_{i,j}< T_n \: and \: T_n < 0 \end{cases}

解码时如下:

d_{i,j}=\begin{cases} \left \lfloor D_{i,j}/2 \right \rfloor, & if \ D_{i,j}\in [2T_n;2T_p+1] \\ D_{i,j}-T_p-1, & if \ D_{i,j} > 2T_p+1 \ and \ T_p \geq 0 \\ D_{i,j}-T_n, & if \ D_{i,j}<2T_n \ and \ T_n<0 \end{cases}

b=D_{i,j} \ mod \ 2, \ \ \ D_{i,j}\in [2T_n;2T_p+1]

此即直方图转换(histogram shift)。

2.利用方差选择插入顺序

 用像素相邻4个像素进行方差的计算:

\mu_{i,j}=\frac{1}{4} \sum_{k=1}^4(\Delta v_k-\Delta \bar{v}_k)^2

\Delta v_1 = \left | v_{i,j-1}-v_{i-1,j} \right |,

\Delta v_2 = \left | v_{i-1,j}-v_{i,j+1} \right |,

\Delta v_3 = \left | v_{i,j+1}-v_{i+1,j} \right |,

\Delta v_4 = \left | v_{i+1,j}-v_{i,j-1} \right |,

\Delta \bar{v}_k=(\Delta v_1+\Delta v_2 + \Delta v_3 + \Delta v_4)/4.

此即排序选定嵌入顺序(sorting)。

3.越界问题(Overflow and Underflow Problem)

我们需要根据第二次嵌入是否越界来判断边缘像素是否已经插入,能插入是否需要位图,是否需要标记,不能插入则一定需要标记。

预测两次都没出现越界问题的像素不需要位图。

预测第一次不越界,第二次越界的像素,位图标为"0",分类为S_{op}

预测第一次就越界的,位图标为"1",分类为S_p

4.双嵌入方案(double embedding scheme),提高嵌入质量

Cross集,即×集,插入完了后,我们可以用Dot集,即●集再插入。

算法全流程,嵌入、提取流程示意图

嵌入的具体步骤:

先对Cross集嵌入,再对Dot集嵌入。

对Cross集:

1.在图像中划分好Cross集和Dot集,一般第一个像素开始为Cross集。

(提这一嘴,是因为其他论文为了适配它的方法,在算法结构的基础上衍生出了其他的划分方法。比如可参见我的这篇简述论文结构化简译New CNN-based Predictor For Reversible Data Hiding_zrc007007的博客-CSDN博客这篇论文为了适配它提出的神经网络预处理方法,从这篇中的每4个像素2个一组变为了每4个像素1个一组。有兴趣可以看看)

2.通过计算方差\mu得出排序好的Cross集d_{sort}

3.判断越界问题,生成位图。

4.d_{sort}中前34位留给阈值大小T_{nCross}T_{pCross}还有载荷大小P_{Cross},用34位后进行嵌入。前面34位的预测误差同样需要作为数据嵌入到34位后。

对Dot集的嵌入方法,除了一开始已经划分好了,第四步中的头部信息也不用嵌入外,其他和Cross集一样。

注意这次用来产生预测值的是经过修改后的Cross集Cross_m

这样之后就得到了修改后的Dot集Dot_m

提取的具体步骤:

1.扫描前面34bit信息得到阈值大小T_{nCross}T_{pCross}还有载荷大小|P_{Cross}|

2.根据越界问题的处理原理,反向推导,先判断像素是否能够扩展,

①能扩展,则直接提取

②不能扩展,根据位图,位图中该位置标记为0,则应该提取,为1则不能提取

用此种方法提取位图信息、之前的34位LSB、秘密信息。

首先根据Cross_m对修改后的Dot集Dot_m进行提取复原,得到集Dot。然后根据复原后的Dot集Dot对修改过的Cross集Cross_m进行复原。

最终得到完整的原始图像和秘密信息。

复现代码

见我文章:

论文复现代码Reversible Watermarking Algorithm Using Sorting and Prediction_zrc007007的博客-CSDN博客

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值