隐写术基础概念与技术详解
立即解锁
发布时间: 2025-09-15 00:28:22 阅读量: 2 订阅数: 3 AIGC 

# 隐写术基础概念与技术详解
## 1. 隐写术基础概念
### 1.1 率失真曲线
在隐写术中,当$I_i = \{x_i + 1, x_i, x_{i - 1}\}$时,公式(2.18)可改写为:
$\pi_i(y_i) = \frac{\exp(-\lambda\rho_i(y_i))}{\sum_{y_i\in I_i} \exp(-\lambda\rho_i(y_i))}, i = 1, 2, \ldots, n$。
当$\lambda$在$(0, +\infty)$范围内变化时,我们可以得到消息长度$H(\pi)$和隐写失真$E_{\pi}(D)$之间的关系曲线,即率失真曲线。这条曲线是最小化失真隐写术的理论边界。给定最优嵌入概率,通过模拟嵌入过程,我们可以得到嵌入的理论率失真上限。在实际的隐写术中,STC编码能够以接近率失真上限的性能嵌入秘密信息。
### 1.2 隐写编码
#### 1.2.1 问题描述
考虑二进制情况,假设要嵌入的秘密消息为$m$,原始载体为$x$,接收者接收到的隐写序列为$y$。使用矩阵编码进行隐写编码的基本思想是将秘密消息编码在伴随式中,使得接收者可以通过计算伴随式$Hy = m$来提取消息,这里的校验矩阵$H$是信道编码中的奇偶校验矩阵。满足上述方程的解的集合为:
$C(m) = \{z \in \{0, 1\}^n | Hz = m\}$
其中$n$是载体序列的长度。那么最小化失真嵌入算法$Emb()$的目标是:
$Emb(x, m) = \arg\min_{y\in C(m)} D(x, y)$
其中$D(x, y) = \sum_{i = 1}^n \rho_i(x_i, y_i)$表示将$x_i$修改为$y_i$所产生的失真。通常,当$x_i = y_i$时,$D(x_i, y_i) = 0$。
#### 1.2.2 伴随式网格编码(STC)
由于隐写编码中使用的矩阵$H$是信道编码的奇偶矩阵,隐写编码通常由信道编码的解码算法转换而来。伴随式网格编码(STC)由卷积码转换而来,其奇偶矩阵$H$通常使用卷积码奇偶矩阵的截断矩阵,编码过程与卷积码的维特比解码算法非常相似。矩阵$H$的一般形式如下:
$H_{m\times n} =
\begin{pmatrix}
\hat{h}_{1,1} & \cdots & \hat{h}_{1,w} & 0 & \cdots & 0 \\
\vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\
\hat{h}_{1,1} & \cdots & \hat{h}_{1,w} & 0 & \cdots & 0 \\
\hat{h}_{h,1} & \cdots & \hat{h}_{h,w} & \cdots & 0 & \cdots \\
\vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\
0 & \cdots & 0 & \hat{h}_{1,1} & \cdots & \hat{h}_{1,w} \\
0 & \cdots & 0 & \hat{h}_{2,1} & \cdots & \hat{h}_{2,w} & \hat{h}_{1,1} & \cdots & \hat{h}_{1,w}
\end{pmatrix}$
它是由一个小矩阵$H_{h\times w}$沿对角线从左上到右下交错排列并截断右下角形成的。
$H_{h\times w} =
\begin{pmatrix}
\hat{h}_{1,1} & \cdots & \hat{h}_{1,w} \\
\vdots & \ddots & \vdots \\
\hat{h}_{h,1} & \cdots & \hat{h}_{h,w}
\end{pmatrix}$
### 1.3 STC算法操作流程
下面通过一个具体例子来介绍STC算法的操作流程。假设要嵌入的消息为$m^T = \{110\}$,载体为$x^T = \{011010\}$,奇偶矩阵$H$如下:
$H_{3\times 6} =
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 & 0 \\
1 & 1 & 1 & 0 & 0 & 0 \\
0 & 0 & 1 & 1 & 1 & 0
\end{pmatrix}$
可以看出使用的小矩阵为:
$H_{2\times 2} =
\begin{bmatrix}
1 & 0 \\
1 & 1
\end{bmatrix}$
STC算法需要找到使失真最小且满足$Hy = m$的隐写序列$y^T = (y_1, y_2, y_3, y_4, y_5, y_6)$。假设使用恒定失真,该情况下STC编码的网格图如下:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([初始状态 00, 失真 0]):::startend --> B1(状态 00, 失真 0):::process
A --> B2(状态 11, 失真 1):::process
B1 --> C1(状态 00, 失真 1):::process
B1 --> C2(状态 01, 失真 0):::process
B2 --> C3(状态 11, 失真 2):::process
B2 --> C4(状态 01, 失真 1):::process
C1 --> D1(状态 00, 失真 2):::process
C1 --> D2(状态 01, 失真 1):::process
C2 --> D3(状态 00, 失真 1):::process
C2 --> D4(状态 01, 失真 0):::process
C3 --> D5(状态 11, 失真 3):::process
C3 --> D6(状态 01, 失真 2):::process
C4 --> D7(状态 11, 失真 2):::process
C4 --> D8(状态 01, 失真 1):::process
D1 --> E1(状态 00, 失真 3):::process
D1 --> E2(状态 01, 失真 2):::process
D2 --> E3(状态 00, 失真 2):::process
D2 --> E4(状态 01, 失真 1):::process
D3 --> E5(状态 00, 失真 1):::process
D3 --> E6(状态 01, 失真 0):::process
D4 --> E7(状态 00, 失真 0):::process
D4 --> E8(状态 01, 失真 1):::process
D5 --> E9(状态 11, 失真 4):::process
D5 --> E10(状态 01, 失真 3):::process
D6 --> E11(状态 11, 失真 3
```
0
0
复制全文
相关推荐









