基于(7,4)汉明码的隐写技术

目录

1.摘要

2. 信息嵌入

2.1 获取载体数据

2.2 计算载体修改位置

2.3 输出含密载体图像

3. 信息提取

3.1 获取含密载体数据

3.2 提取秘密信息

4. 结论        


1.摘要

        利用(7,4)汉明码的一致性校验矩阵(Parity check matrix)对灰度图像素值最低有效位进行编码,使校验矩阵与编码后数据的乘积为待隐藏的秘密信息,实现信息嵌入与提取,其理论嵌入效率约为3.43、嵌入率约为0.43bpp(bits per pixel)。

2. 信息嵌入

2.1 获取载体数据

        将图像分块,具体分块方式及大小取决于实际需要,如下图所示,以将lena灰度图分割为4×4大小的块为例,获得每块的像素值。

        提取块像素的最低有效位,作为拟用于隐藏信息的原始载体数据。按每7个元素为一组对原始载体数据进行分组,即每7个像素的最低有效位为一组载体数据。分组大小取决于校验矩阵,此处取每7个元素为一组,是因为(7,4)汉明码的一致性校验矩阵(Parity check matrix)大小为3行7列,取其列数即为7。

        将载体数据用列向量形式表示,以上图第1组载体数据为例,可表示为列向量X。分块中不足一组的数据,可从下一分块取差额补足,例如上图分组后剩2个元素,可先从下一块取5个元素构成一个包含7个元素的分组,再对下一块其余元素进行分组,以此类推即可完成所有载体数据分组。

X=\begin{bmatrix} 0\\ 0\\ 1\\ 0\\1 \\0 \\0 \end{bmatrix}

2.2 计算载体修改位置

        假设需要隐藏的秘密信息为二进制序列110,将其用列向量s表示如下。

s=\begin{bmatrix} 1\\ 0\\ 1 \end{bmatrix}

        (7,4)汉明码的一致性校验矩阵为H如下所示,为一个3行7列的矩阵,若将每个列向量作为1个3bits的二进制数转换为十进制,从左到右的数值依次为1、2、3、4、5、6、7。

H=\begin{bmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1\\ 0& 1 & 1 & 0 & 0 & 1 & 1\\ 1& 0 & 1 & 0 & 1 & 0 & 1 \end{bmatrix}

        计算校验矩阵H与载体X的“乘积”,“乘积”加引号是因为此处采用的不是线性代数中矩阵与向量的乘积运算,计算过程中需将加法运算替换为异或运算。下例中\otimes表示“乘积”,\oplus表示异或。

c=H\otimes X=\begin{bmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1\\ 0& 1 & 1 & 0 & 0 & 1 & 1\\ 1& 0 & 1 & 0 & 1 & 0 & 1 \end{bmatrix}\otimes \begin{bmatrix} 0\\ 0\\ 1\\ 0\\1 \\0 \\0 \end{bmatrix}

\Rightarrow c=\begin{bmatrix} \left ( 0\times0 \right )\oplus\left ( 0\times0 \right )\oplus\left ( 0\times1 \right )\oplus\left ( 1\times0 \right )\oplus\left ( 1\times1 \right )\oplus\left ( 1\times0 \right )\oplus\left ( 1\times0 \right )\\ \left ( 0\times0 \right )\oplus\left ( 1\times0 \right )\oplus\left (1\times1 \right )\oplus\left (0\times0 \right )\oplus\left (0\times1 \right )\oplus\left (1\times0 \right )\oplus\left (1\times0 \right )\\ \left (1\times0 \right )\oplus\left (0\times0 \right )\oplus\left (1\times1 \right )\oplus\left (0\times0 \right )\oplus\left (1\times1 \right )\oplus\left (0\times0 \right )\oplus\left (1\times0 \right ) \end{bmatrix}

\Rightarrow c=\begin{bmatrix} 1\\ 1\\ 0 \end{bmatrix}

        计算特征值d,d为将秘密信息s与c进行异或运算得到的结果。

d=s\oplus c=\begin{bmatrix} 1\\ 0\\ 1 \end{bmatrix}\oplus \begin{bmatrix} 1\\ 1\\ 0 \end{bmatrix}=\begin{bmatrix} 0\\ 1\\ 1 \end{bmatrix}

        定位载体修改位置,并对原始载体X进行修改获得含密载体Y。即找出校验矩阵H中与d相等的列向量所在的列数,记为i;将载体X中的第i行元素取反得到含密载体,记为Y。上例中,H中与d相同的列为第3列,即i=3,将列向量X的第3行元素取反,获得含密载体Y如下。

X=\begin{bmatrix} 0\\ 0\\ 1\\ 0\\1 \\0 \\0 \end{bmatrix}\Rightarrow Y=\begin{bmatrix} 0\\ 0\\ 0\\ 0\\1 \\0 \\0 \end{bmatrix}

2.3 输出含密载体图像

        用Y替换原始载体图像中X所在位置的像素的最低有效位,根据前面的例子,即将原始载体图像(右图)中第1行的第3像素值由原来的49改为48。

        重复上述步骤,根据秘密信息长度,完成对相关像素值修改后,即可获得含密载体图像。

3. 信息提取

3.1 获取含密载体数据

        采用嵌入信息时使用的方法对含密载体图像进行分块,获得每块的像素值。如下图所示,以前述lena灰度图为例,将其分割为4×4大小的块,并提取每块的像素值。

        提取块像素的最低有效位,作为拟用于提取秘密信息的含密载体数据。与嵌入时一样,按每7个元素为一组对载体数据进行分组,即每7个像素的最低有效位为一组载体数据。

        将含密载体数据用列向量形式表示,以上图第1组载体数据为例,可表示为列向量{Y}'

{Y}'=\begin{bmatrix} 0\\ 0\\ 0\\ 0\\ 1\\ 0\\0 \end{bmatrix}

3.2 提取秘密信息

        计算校验矩阵H与含密载体数据{Y}'的“乘积”,计算结果即为提取到的秘密信息。其中,“乘积”加引号是因为此处采用的不是线性代数中矩阵与向量的乘积运算,与信息嵌入过程一样,计算过程中需将加法运算替换为异或运算。

{s}'=H\otimes {Y}'=\begin{bmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1\\ 0& 1 & 1 & 0 & 0 & 1 & 1\\ 1& 0 & 1 & 0 & 1 & 0 & 1 \end{bmatrix}\otimes \begin{bmatrix} 0\\ 0\\ 0\\ 0\\1 \\0 \\0 \end{bmatrix}

\Rightarrow {s}'=\begin{bmatrix} \left ( 0\times0 \right )\oplus\left ( 0\times0 \right )\oplus\left ( 0\times0 \right )\oplus\left ( 1\times0 \right )\oplus\left ( 1\times1 \right )\oplus\left ( 1\times0 \right )\oplus\left ( 1\times0 \right )\\ \left ( 0\times0 \right )\oplus\left ( 1\times0 \right )\oplus\left (1\times0 \right )\oplus\left (0\times0 \right )\oplus\left (0\times1 \right )\oplus\left (1\times0 \right )\oplus\left (1\times0 \right )\\ \left (1\times0 \right )\oplus\left (0\times0 \right )\oplus\left (1\times0 \right )\oplus\left (0\times0 \right )\oplus\left (1\times1 \right )\oplus\left (0\times0 \right )\oplus\left (1\times0 \right ) \end{bmatrix}

\Rightarrow {s}'=\begin{bmatrix} 1\\ 0\\ 1 \end{bmatrix}

        从上述计算结果易知,{s}'==s,即秘密信息提取成功。

4. 结论        

        基于(7,4)汉明码的隐写技术,可通过对原始载体数据进行编码获得含密载体,实现信息的嵌入和提取。理论嵌入效率约为3.43,即平均每修改1bit数据可嵌入3.43bits秘密信息,嵌入率约为0.43bpp(bits per pixel),即平均每个像素可嵌入0.43bits秘密信息,拥有较高嵌入效率和可观的嵌入容量。

  • 28
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值