一、SRM简介

  SRM(Spatial Rich Model) 为基于空域富模型的隐写分析方法,由Fridrich等人[1] 提出,主要用于空域编码图像的隐写分析,在基于传统的提取手工特征的方式中占据主流地位。SRM采用了多个子模型(sub-model)以提取更多类型的特征,使得能够更好地表征隐写对邻域像素多种相关性的破坏。所谓“子模型”,指的是图像经过特定的滤波后再提取相应特征,由于邻域相关性可以通过局部像素之间的预测误差表示,这里滤波一般指输出这种预测误差的操作,这类误差一般被称为残差(residuals)

二、特征提取步骤

  设 X = ( X i , j ) ∈ { 0 , ⋯ , 255 } n 1 × n 2 X=(X_{i,j})\in \{ 0, \cdots, 255 \}^{n_{1}\times n_{2}} X=(Xi,j​)∈{0,⋯,255}n1​×n2​表示灰度图像像素或彩色图像亮度域像素,SRM特征的提取一般分为以下几个步骤。

  1、计算残差
  通过以下公式计算残差 R = ( R i , j ) ∈ R n 1 × n 2 R=(R_{i,j})\in \mathbb{R^{n_{1}\times n_{2}}} R=(Ri,j​)∈Rn1​×n2​。 R i , j = X i , j ^ ( N i , j ) − c X i , j R_{i,j}=\hat{X_{i,j}}(N_{i,j})-cX_{i,j} Ri,j​=Xi,j​^​(Ni,j​)−cXi,j​  其中, N i , j N_{i,j} Ni,j​为 X i , j X_{i,j} Xi,j​的若干邻域像素, X i , j ^ ( N i , j ) \hat{X_{i,j}}(N_{i,j}) Xi,j​^​(Ni,j​)通过该邻域来预测 c X i , j cX_{i,j} cXi,j​。由于一般 N i , j N_{i,j} Ni,j​中像素的数量等于 c c c, c ∈ N c\in \mathbb{N} c∈N被称为残差阶(residual order)。以上计算残差的滤波按照水平垂直两个方向分别计算。

  2、量化与截断
  将以上实数残差 R i , j R_{i,j} Ri,j​进行以下量化与截断。 R i , j ← t r u n c T ( r o u n d ( R i , j q ) ) t r u n c T ( x ) = { x , x ∈ [ − T , T ] T s i g n ( x ) , x ∉ [ − T , T ] R_{i,j} \leftarrow trunc_{T}\left( round\left(\frac{R_{i,j}}{q} \right)\right) \quad\quad trunc_{T}(x)=\begin{cases}x,&x\in[-T,T] \\ Tsign(x),&x\notin[-T,T] \end{cases} Ri,j​←truncT​(round(qRi,j​​))truncT​(x)={x,Tsign(x),​x∈[−T,T]x∈/​[−T,T]​   其中, q q q为量化步长。截断操作的意义是:一方面,隐写分析对相关性较强、残差较小的区域更感兴趣;另一方面,将残差截断有利于降低最后提取特征的维度。

  3、统计共生矩阵(co-occurrence matrix)
  SRM特征最终表现为在每个子模型下以上截断残差的4阶联合分布形式,即残差水平或垂直方向上4个连续样点 d = ( d 1 , d 2 , d 3 , d 4 ) ∈ τ 4 ≜ { − T , ⋯ , T } 4 d=(d_{1},d_{2},d_{3},d_{4})\in \tau_{4} \triangleq \{-T,\cdots,T\}^{4} d=(d1​,d2​,d3​,d4​)∈τ4​≜{−T,⋯,T}4的联合分布概率估计。水平方向的估计为: C d ( h ) = 1 Z ∣ { ( R i , j , R i , j + 1 , R i , j + 2 , R i , j + 3 , ) ∣ R i , j + k − 1 = d k , k = 1 , ⋯ , 4 , } C_{d}^{(h)}=\frac{1}{Z}|\{(R_{i,j},R_{i,j+1},R_{i,j+2},R_{i,j+3},)|R_{i,j+k-1}=d_{k},k=1,\cdots ,4,\} Cd(h)​=Z1​∣{(Ri,j​,Ri,j+1​,Ri,j+2​,Ri,j+3​,)∣Ri,j+k−1​=dk​,k=1,⋯,4,}其中,Z是全部出现情况的总数量,它作为归一化的参数使得 ∑ d ∈ τ 4 C d ( h ) = 1 \sum_{d\in \tau_{4}}C_{d}^{(h)}=1 ∑d∈τ4​​Cd(h)​=1,由此构成的4阶矩阵被称为4阶共生矩阵,垂直方向的共生矩阵 C d ( v ) C_{d}^{(v)} Cd(v)​的计算过程类似。

三、核心技术解析

图1 SRM残差滤波核示意:黑圆点为被预测点,其他用于预测,不同形状点代表不同预测方法,最大值与最小值在不同预测值之间选择;3阶残差(3a)~(3h)未给出,但不难基于公式 R i , j = − X i , j + 2 + 3 X i , j + 1 , X i , j − 1 − 3 X i , j R_{i,j}=-X_{i,j+2}+3X_{i,j+1},X_{i,j-1}-3X_{i,j} Ri,j​=−Xi,j+2​+3Xi,j+1​,Xi,j−1​−3Xi,j​绘制;(E5a)-(E5d)未给出,但与(E3a)-(E3d)类似,但需将各个边长扩大为5;

  1、各种类型的残差计算
  残差主要包括一阶、二阶、三阶、SQUARE、EDGE3×3、EDGE5×5共6类,每类残差中又分为线性滤波残差非线性滤波残差;图1分别描绘了部分残差的计算方法。
  线性残差计算:
  (1)一阶残差:用一个相邻像素预测当前像素的误差,如图1中(1a)描述的残差是 R i , j = X i , j + 1 − X i , j R_{i,j}=X_{i,j+1}-X_{i,j} Ri,j​=Xi,j+1​−Xi,j​。
  (2)二阶残差:用两个相邻像素预测当前像素的误差,如图1中(2a)描述的残差是 R i , j = X i , j − 1 + X i , j + 1 − 2 X i , j R_{i,j}=X_{i,j-1}+X_{i,j+1}-2X_{i,j} Ri,j​=Xi,j−1​+Xi,j+1​−2Xi,j​。
  (3)三阶残差:用三个相邻像素预测当前像素的误差,与二阶残差类似, R i , j = − X i , j + 2 + 3 X i , j + 1 + X i , j − 1 − 3 X i , j R_{i,j}=-X_{i,j+2}+3X_{i,j+1}+X_{i,j-1}-3X_{i,j} Ri,j​=−Xi,j+2​+3Xi,j+1​+Xi,j−1​−3Xi,j​。
  (4)SQUARE、EDGE3×3、EDGE5×5残差:在计算中使用了更多方向的邻域像素。其中,3×3和5×5的SQUARE核分别为: [ − 1 2 − 1 2 − 4 2 − 1 2 − 1 ] [ − 1 2 − 2 2 − 1 2 − 6 8 − 6 2 − 2 8 − 12 8 − 1 2 − 6 8 − 6 2 − 1 2 − 2 2 − 1 ] \begin{bmatrix} -1 & 2 & -1\\ 2 & -4 & 2 \\ -1 & 2 & -1 \end{bmatrix} \quad\quad \begin{bmatrix} -1 & 2 & -2 & 2 & -1 \\ 2 & -6 & 8 & -6 & 2 \\ -2 & 8 & -12 & 8 & -1 \\ 2 & -6 & 8 & -6 & 2 \\ -1 & 2 & -2 & 2 & -1 \end{bmatrix} ⎣⎡​−12−1​2−42​−12−1​⎦⎤​⎣⎢⎢⎢⎢⎡​−12−22−1​2−68−62​−28−128−2​2−68−62​−12−12−1​⎦⎥⎥⎥⎥⎤​EDGE3×3和EDGE5×5的核分别为: [ 2 − 1 − 4 2 2 − 1 ] [ − 2 2 − 1 8 − 6 2 − 12 8 − 2 8 − 6 2 − 2 2 − 1 ] \begin{bmatrix} 2 & -1\\ -4 & 2 \\ 2 & -1 \end{bmatrix} \quad\quad \begin{bmatrix} -2 & 2 & -1 \\ 8 & -6 & 2 \\ -12 & 8 & -2 \\ 8 & -6 & 2 \\ -2 & 2 & -1 \end{bmatrix} ⎣⎡​2−42​−12−1​⎦⎤​⎣⎢⎢⎢⎢⎡​−28−128−2​2−68−62​−12−22−1​⎦⎥⎥⎥⎥⎤​
  非线性残差计算: 通过求取两个或更多线性滤波残差的最大值或最小值得到的,“子类型名标识”中的滤波器数就是指求极值前使用的线性滤波器数量,对应除黑圆点外不同形状点的数量。

  2、残差的方向性与对称性
  如果将图像旋转90后,残差未发生变化,则认为其无方向性,否则认为有方向性。如果将图像旋转90后,共生矩阵未发生变化,则称相应残差水平与垂直对称,无方向性残差具有这种对称性。

  3、子类型残差命名与共生矩阵计数
  子类型名为: n a m e = { t y p e } { f } { σ } { s c a n } name=\{type\}\{f\}\{\sigma\}\{scan\} name={type}{f}{σ}{scan},其中,type为前面六大类残差下的子类型名,只有spamminmax两种。 f f f表示使用的线性滤波函数,即图1中单个子模型中除黑圆点外其它记号的数量; σ \sigma σ表示对称指数(symmetry index),它指通过旋转图像能带来的不同种类残差数; s c a n scan scan表示残差计算方向,即图1中的 h h h(水平)、 v v v(垂直)。

  由此,一阶残差22个共生矩阵,每个对应一个类型的残差或子模型。其中图1的(1a)、(1c)、(1e)、(1f)、(1h)各2个,(1b)、(1d)、(1g)各4个;同理,三阶残差也有22个共生矩阵;二阶残差共有12个共生矩阵,图1的(2a)、(2b)、(2c)、(2e)各2个,(2d)有4个。SQUARE2个共生矩阵,对应图1中的(S3a)、(S5a);EDGE3×3EDGE5×5均有10个共生矩阵,图1的(E3a)、(E3b)、(E3d)各2个,(E3c)有4个。因此,总共有22+12+22+2+10+10=78个共生矩阵。

  4、共生矩阵对称性的利用
  一般认为,负残差图像(按照均值轴线向符号相反方向对称映射)的统计特性基本不变,即正负符号对称;图像信号在相反扫描方向上统计特性基本一致,即有扫描方向对称。因此,对spam子类型的4阶共生矩阵可以进行以下合并:
C ‾ d ← C d + C − d C ‾ ‾ d ← C d + C − d \overline{C}_{d}\leftarrow C_{d}+C_{-d} \quad \quad \overline{\overline{C}}_{d}\leftarrow C_{d}+C_{-d} Cd​←Cd​+C−d​Cd​←Cd​+C−d​其中, − d = ( − d 1 , − d 2 , − d 3 , − d 4 ) -d=(-d_{1},-d_{2},-d_{3},-d_{4}) −d=(−d1​,−d2​,−d3​,−d4​); d ← = ( d 4 , d 3 , d 2 , d 1 ) \overleftarrow d=(d_{4},d_{3},d_{2},d_{1}) d =(d4​,d3​,d2​,d1​)。当 T = 2 T=2 T=2时,以上合并使spam残差共生矩阵元素的数量从625下降为169
对于minmax类型可以进行以下合并:
C ‾ d ← C d ( m i n ) + C − d ( m a x ) C ‾ ‾ d ← C ‾ d + C ‾ − d ← \overline{C}_{d}\leftarrow C_{d}^{(min)}+C_{-d}^{(max)} \quad \quad \overline{\overline{C}}_{d}\leftarrow \overline{C}_{d}+\overline{C}_{{- \overleftarrow d}} Cd​←Cd(min)​+C−d(max)​Cd​←Cd​+C−d ​其中, C D ( m i n ) C_{D}^{(min)} CD(min)​与 C D ( m a x ) C_{D}^{(max)} CD(max)​是类型相同残差的共生矩阵,这意味着min与max残差共生矩阵可以合并。当 T = 2 T=2 T=2时,以上合并将每类min与max残差共生矩阵元素的数量从 2 × 625 2 \times 625 2×625下降为 1 × 325 1 \times 325 1×325。

  4、量化步长的确定
  残差的阶 c c c是被预测像素值的倍数,因此,量化步长 q q q的选择与它相关。在论文中,考虑到用多个量化步长进一步丰富特征的表达能力,因此取 q ∈ [ c , 2 c ] q\in [c,2c] q∈[c,2c]并满足 q ∈ { { c , 1.5 c , 2 c } , c > 1 { 1 , 2 } , c = 1 q \in \begin{cases}\{c,1.5c,2c\},&c>1 \\ \{1,2\},&c=1 \end{cases} q∈{{c,1.5c,2c},{1,2},​c>1c=1​因此,对一阶残差有两个量化步长,对其他大类残差有3个,这样,当T=2时,共生矩阵的特征总维数是 2 × ( 2 × 169 + 10 × 325 ) + 3 × ( 10 × 169 + 23 × 325 ) = 34671 2\times(2\times169+10\times325)+3\times(10\times169+23\times325)=34671 2×(2×169+10×325)+3×(10×169+23×325)=34671

参考文献
[1]Fridrich J,Kodovsky J. Rich models for steganalysis of digital images. IEEE Transactions on Information Forensics and Security,2012,7(3):868-882.
[2]http://dde.binghamton.edu/download/feature_extractors/.
[3]赵险峰,张宏.隐写学原理与技术[M].北京:科学出版社,2018:127-132.

SRM高维特征隐写分析原理与应用相关推荐

  1. 数字图像隐写术之JPEG 隐写分析

    目录 问题描述 一.程序功能 1.程序功能描述(task1-task5为五个主程序,其余为辅程序) 2.程序输入 3.程序输出 二.隐写分析原理 三.程序设计 四.总结讨论及探索 五.附录代码 问题描 ...

  2. Efficient feature learning and multi-size image steganalysis based on CNN【Zhu-Net基于高效特征学习与多尺度图像隐写分析】

    摘要 对于隐写分析,许多研究表明卷积神经网络比传统机器学习方法的两部分结构具有更好的性能.然而,仍然有两个问题需要解决:降低隐写分析特征映射的信噪比和对任意大小的图像进行隐写分析.一些算法需要固定大小 ...

  3. Deep Learning Hierarchical Representations for Image Steganalysis【Ye-Net:图像隐写分析的深度学习层次表示】

    Deep Learning Hierarchical Representations for Image Steganalysis [Ye-Net:图像隐写分析的深度学习层次表示] Abstract ...

  4. 基于深度学习的图像隐写分析综述 阅读

    背景 隐写术英文为Steganography. 现有的通信安全保障主要分为加密和信息隐藏:加密主要对秘密信息本身进行操作,但经过特殊处理后的明文更加容易受到第三方的怀疑;而信息隐藏则隐藏秘密数据的存在 ...

  5. YEDROUDJ-NET: AN EFFICIENT CNN FOR SPATIAL STEGANALYSIS【Yedroudj-Net:一个高效的空间隐写分析CNN】

    YEDROUDJ-NET: AN EFFICIENT CNN FOR SPATIAL STEGANALYSIS [Yedroudj-Net:一个高效的空间隐写分析CNN] ABSTRACT 在大约10 ...

  6. Deep Learning Applied to Steganalysis of Digital Images: A Systematic Review 深度学习在数字图像隐写分析中的应用:系统综述

    Deep Learning Applied to Steganalysis of Digital Images: A Systematic Review (深度学习在数字图像隐写分析中的应用:系统综述 ...

  7. bp神经网络分类器c语言,基于BP神经网络的隐写分析分类器设计

    [ 摘 要 ] 设计并实现了基于BP神经网络的隐写分析分类器.首先对图像库中的图像进行格式变换,并使用扩展修改方向和钻石编码两种隐写方法进行不同嵌入率的隐写嵌入,然后计算载体图像和载密图像中平面域.D ...

  8. 网络语音流隐写分析全流程 (Steganalysis of VoIP Speech Streams)

    欢迎访问我的个人博客:https://hi.junono.com/ AMR隐写数据集地址(Kaggle) 网络语音流隐写分析全流程 隐写分析流程介绍: 基本知识 **基于网络语音(VoIP)流的隐写术 ...

  9. RS(Regular Singular)隐写分析及实现

    上篇博客介绍了LSB(最低有效位)算法. 这篇针对LSB算法介绍RS隐写分析的实现. 先介绍几个概念: 翻转函数为: 平滑度函数为: 掩码算子M为: 掩码算子可以取随机0,1但是一定要各占50%概率. ...

最新文章

  1. c语言中stdbool.h的使用
  2. [C++11]智能指针简单介绍
  3. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]
  4. matlab fftshift_数字信号处理没有Matlab?用Python一样很爽
  5. php 网站计数器,PHP实现网站访问量计数器
  6. 关于学习新知识以及如何做题思考
  7. python字符串重复输出例子_使用python语言,比较两个字符串是否相同的实例
  8. IDEA中导入Mysql驱动包
  9. 最新要饭网源码1.6终极版
  10. python培训 马哥python班
  11. matlab编译桁架有限元计算(附有完整代码)
  12. 巨星MTV2002模板使用教程
  13. Linux内核4.1在file_operations的read_iter和write_iter
  14. 外卖小程序发布商品时,要注意的地方-微信小程序教程32
  15. 文本转语音-微软Azure-一步一步教你从注册到使用
  16. RADARE2+FRIDA=R2FRIDA Best Dynamic Debugging Tool
  17. c语言用字符输出李字,二级C语言历年真题汇总__第10篇对文件的输入输出-李赛红.doc...
  18. 电脑开机时,需选择启动项f1/f2/f5, 需按f1才能正常启动计算机
  19. 思一独角兽游戏 | 综艺高能玩家:看中医刘昊然、区块链圈90后CEO如何玩转高智商棋牌游戏 | SIU
  20. 我今年50岁了,还在干前端

热门文章

  1. 2020-8-26 剑指offer编程小哥令狐 075211
  2. 【BZOJ4819】【SDOI2017】新生舞会(01分数规划,带权二分图匹配)
  3. 八、 数据库的数据查询
  4. 人工智能AI智能加速卡技术
  5. 网站漏洞检测之java架构越权操作
  6. win10本地安装mysql8 ---急速安装
  7. 代码改变生活——利用路由器的“MAC地址过滤功能”限制别人的网速
  8. PhysX3.4文档(11) -- GPU Rigid Bodies
  9. [附源码]java毕业设计基于篮球云网站
  10. Pandas 根据一张DataFrame的两列数据对另一张DataFrame的多列值进行批量替换