3D网格隐写术:技术原理与方法解析
立即解锁
发布时间: 2025-09-15 00:28:25 阅读量: 2 订阅数: 3 AIGC 

# 3D 网格隐写术:技术原理与方法解析
## 1. 引言
在信息安全领域,隐写术是一种将秘密信息隐藏在看似普通的载体中的技术。3D 网格隐写术作为隐写术的一个分支,旨在将秘密信息嵌入到 3D 网格模型中,同时尽可能减少对模型外观和结构的影响,以避免被检测到。本文将介绍几种常见的 3D 网格隐写术方法,包括二态隐写术、LSB 平面隐写术等,并分析它们的原理、优缺点和应用场景。
## 2. 二态隐写术
### 2.1 静态算术编码(SAC)方法
静态算术编码(SAC)方法是一种基于实数区间表示符号序列的编码方法。其原理是使用一个介于 0 和 1 之间的实数区间来表示一个符号序列,该区间的每个值对应一个唯一的待编码单词。SAC 首先计算概率,然后将每个符号与相应的子区间关联起来。通过考虑原始消息的值分布,将区间切片适配到 q 个子区间中,从而将秘密消息嵌入到覆盖网格中,并能无损地提取隐藏数据。这种方法的最大容量可达每个顶点 24 位,但无法抵抗隐写分析攻击。
### 2.2 抗隐写分析的静态算术编码模型
为了提高静态算术编码模型对隐写分析的抵抗能力,研究人员提出了一种改进方法。原有的隐写术方法将数据嵌入到球坐标系中边向量的所有三个坐标分量中,但极坐标和方位角坐标的变化对隐写分析特征的影响比径向坐标系更大。因此,该方法仅修改球坐标系中边向量所代表的径向分量,以增强 3D 隐写术对隐写分析的抵抗能力。
#### 2.2.1 动机
在之前的研究中,通过峰值信噪比(PSNR)和网格结构失真测量(MSDM2)分析了嵌入导致的网格失真,但未考虑隐写术对 3D 隐写分析的抵抗能力。现有的图像隐写分析方法无法应用于 3D 网格,因为图像是在规则网格上表示的,而 3D 对象则不同。首个 3D 隐写分析算法被提出,随后又有改进的方法使用局部特征集进行 3D 隐写分析。这些方法利用局部 3D 特征的统计信息作为机器学习算法的输入,训练隐写分析器来区分覆盖和含密 3D 对象。
#### 2.2.2 嵌入设计
嵌入设计包括三个方面:区间参数 、子区间 s 的不同选择以及球坐标系中的不同嵌入风格。
- **顶点位移分析**:在球坐标系中进行嵌入时,考虑顶点沿径向坐标的位移以伪装隐写分析。假设子区间具有均匀分布的特征,顶点在径向坐标上的位移定义为:
\[D_{\rho} = \sum_{j=1}^{s} \sum_{k=1}^{s} P_{j}Q_{k}|j - k|\frac{\Delta}{s}\]
其中,\(P_{j}\) 是顶点 \(v_{i}\) 在第 \(j\) 个子区间的概率,\(Q_{k}\) 是顶点 \(v_{i}\) 修改后的位置在第 \(k\) 个子区间的概率,\(\frac{\Delta}{s}\) 是每个子区间的长度间隔。若假设顶点 \(v_{i}\) 随机位于区间内,且消息中的单词均匀分布,则上述方程可简化为:
\[D_{\rho} = \frac{\Delta}{3}(1 - \frac{1}{s^{2}})\]
从该方程可以推断,若减小区间参数 \(\Delta\),顶点的位移也会减小。同时,当子区间数量 \(s\) 增加时,嵌入容量增加,但位移的影响较小。因此,应尽可能保持区间参数 \(\Delta\) 小,以限制信息嵌入产生的失真对用于隐写分析的特征的影响。
- **失真影响分析**:原 HPQ 隐写术方法将边向量的所有三个坐标嵌入到球坐标系中,但球坐标系中两个角度坐标 \(\theta\) 和 \(\varphi\) 的变化对隐写分析特征的影响可能比径向坐标 \(r\) 更大。通过仅修改顶点之间边向量的径向坐标,可以减少对用于隐写分析的特征(如面法线和二面角)的影响。因此,仅修改球坐标系中边向量所代表的径向分量可以提高 3D 嵌入对隐写分析的抵抗能力。不过,隐写术使用的边是在构造哈密顿路径时生成的,其中一些边可能在原始网格中并不实际存在,但原始网格的边与哈密顿路径中的边的重叠度很高,因此这一问题最终不会显著影响隐写分析结果。该方法的上限嵌入容量为每个顶点 8 位。
## 3. LSB 平面隐写术
### 3.1 高斯曲率模型
Yang 等人设计了一种自适应数据隐藏算法,该算法平衡了高嵌入容量和低嵌入失真。该算法通过保持高斯曲率较大的顶点不变,利用空间噪声和法向噪声之间的关系,描述了嵌入容量(以顶点坐标中未使用的比特形式)和视觉失真(以法向退化形式)之间的权衡。
#### 3.1.1 高斯曲率计算
简化的高斯曲率 \(\kappa_{G}(v_{i})\) 定义为:
\[\kappa_{G}(v_{i}) = 2\pi - \sum_{v_{j} \in N_{1}(v_{i})} \theta_{j}\]
其中,\(N_{1}(v_{i})\) 是顶点 \(v_{i}\) 的一环邻域,\(\theta_{j}\) 表示顶点 \(v_{i}\) 处入射三角形的角度。\(\vert\kappa_{G}(v_{i})\vert\) 可以反映第 \(i\) 个顶点局部区域的平滑度。
#### 3.1.2 法向退化容忍度
基于 \(\kappa_{G}(v_{i})\),第 \(j\) 个三角形的法向退化容忍度 \(\epsilon_{j}\) 由下式给出:
\[\epsilon_{j} = \min_{n} \{\alpha - \varphi(\kappa_{G}(v_{i}); \alpha, \mu, \sigma) + \epsilon_{0}\}\]
其中,\(\varphi(\kappa_{G}(v_{i}); \alpha, \mu, \sigma)\) 是具有峰值 \(\alpha\)、均值 \(\mu\) 和标准差 \(\sigma\) 的高斯函数,\(\epsilon_{0}\) 是可接受的法向退化阈值。
#### 3.1.3 嵌入和提取算法
- **嵌入**:给定一个表示为 32 位的向量三角形网格和法向退化容忍度,计算量化级别向量 \(i\)。将所有未使用的顶点坐标比特设置为零,并通过比特替换操作嵌入消息比特。具体来说,对于第 \(j\) 个顶点,保留其坐标的 \(i_{j}\) 个最高有效位和 \(c\) 个最低有效位不变,将其余 \(32 - i_{j} - c\) 位依次替换为嵌入数据。嵌入利用顶点排序 \(\pi_{1}(v)\),得到的顶点集记为 \(v'\)。\(v'\) 顶点坐标的 \(c\) 个最低有效位将携带边信息,记录标记和未标记网格顶点之间量化级别的变化。
- **提取**:给定一个含密网格和法向退化容忍度 \(\epsilon\),提取消息比特的关键是恢复排序 \(\pi_{1}(\cdot)\) 和 \(\pi_{2}(\cdot)\)。通过将含密网格的 \(c\) 个最低有效位设置为零,对得到的顶点集进行量化,然后将量化顶点投影到其第一主轴上,得到排序 \(\pi_{2}(\cdot)\)。恢复 \(\pi_{2}(\cdot)\) 后,按 \(\pi_{2}(\cdot)\) 的顺序提取并解压缩 \(c\) 个最低有效位,得到校正向量 \(\pi_{2}(v)\)。通过 \(\pi_{2}(i) = \pi_{2}(e) + \pi_{2}(i')\) 恢复原始网格的位移量化级别,将 \(\pi_{2}(v')\) 的顶点量化到原始级别 \(\pi_{2}(i)\),再将未标记量化顶点
0
0
复制全文
相关推荐









