图像隐写分析-absNJ特征编程实现

Liu等人曾提出了基于相邻DCT密度的绝对值(Absolute values of the neighbouring joint density)特征,简称absNJ特征【1】。然而该特征使用的是低阶统计量,且检测效果一般。为了提高准确率,Hassan等对该特征进行了加强[38]。在原有特征的基础上,提取了DCT系数矩阵的块内和块间的高阶统计特征。使用块内和块间特征可提供各种不同类型的分析,块内特征基于每个DCT块的DCT系数之间的频率依赖性;另一方面,块间特征基于DCT块之间的空间依赖性。此外,作者建议使用DCT系数的第P阶功率而不是它们的普通一阶功率,这是经过实验证明的。

4.1 块内absNJ特征

对于尺寸为M×N的JPEG图像,将其划分为K×L个连续的子块,每个块的大小为8×8。令J表示其量化DCT系数,块内absNJ特征在水平和垂直方向分别使用 absNJ1h和absNJ1v表示。它们的计算方式如下述公式所示:
这里写图片描述

4.2 块间absNJ特征

块间absNJ的特征在水平和垂直方向分别由absNJ2h和absNJ2v表示,他们的定义如下:
这里写图片描述
这里写图片描述

4.3 块内absJN强化特征

根据上文可知,原有absJN特征只进行了两个系数之间的统计分析。然而在隐密过程中,隐密算法会尽量减少统计特征上的改变,比如Outguess算法的纠错过程。这会导致低阶统计分析的效果较差。为了进一步提升检测效果,本章扩展原有特征,增添了高阶统计特征。这样absJN强化特征可以捕捉DCT系数之间更为复杂的关系,因此最终的特征将对秘密信息嵌入引起的变化更加敏感。为此提出了水平横向( absNJ3hh),水平垂直( absNJ3hv),垂直垂直(absNJ3vv )和垂直水平( absNJ3vh)方向的块内absNJ特征,其计算方式如下:
这里写图片描述

4.4 块间absJN强化特征

对于块间的absJN特征,也存在同样的问题。所以本节使用同4.3章节同样的方法,对其进行强化,增添块间的高阶统计信息。横向水平,水平垂直,垂直-垂直和垂直-水平方向的块间absNJ特征分别由 absNJ4hh,absNJ4hv ,absNJ4vv 和absNJ4vh 表示,它们的计算方式如下:
这里写图片描述

4.5 提取流程与预处理

量化DCT系数由矩阵J表示,令 表示DCT系数的各个元素, M,N分别为JPEG图像的尺寸的宽度和高度。 将前四小节提取的块内和块间的absNJ特征与absNJ强化特征进行组合,得到新的absNJ强化特征,它的提取方法和流程如图4.1所示。
这里写图片描述
1.对于JPEG图像的量化DCT系数的绝对值,计算每个元素的功率P,并将其舍入到其最接近的整数,即
这里写图片描述
上述的六个矩阵分别表示DCT系数的功率为P的原始矩阵,水平,垂直和对角的块内差分矩阵,最后两个矩阵为水平和垂直的块间差分矩阵。
3.为了减少提取特征的维数,在计算特征之前,DCT值将被变换到阈值T内。阈值函数由以下函数定义,并且对于原始absNJ特征T限于T = 5,对于强化特征取T = 3。
这里写图片描述
这里写图片描述
5.然而经过上述获取的特征只是单纯的载体图像的特征,为了得到对隐密信息相对敏感的特征,采用同第四章一样的“校准”法,将JPEG图像解压到空域后各方向裁剪4像素,再以同样的压缩质量因数保存为JPEG图像。使用相同的流程提取特征,将裁剪前后的图像的特征做差值,得到的就是“校准”特征。这使得absNJ强化特征对嵌入的信息尤为敏感。

代码部分

依旧是matlab实现的

function y=absNJN(x)
% 输入为灰度图像
[M,N]=size(x); %尺寸
K=M/8;
L=N/8;

%规划阈值
dct=x;
dct(dct>5)=5; %块内
dct(dct<-5)=-5;

dctinter=x;
dctinter(dctinter>3)=3;
dctinter(dctinter<-3)=-3;

%初始变量
a=0;
feature=zeros(1,200);
temp1=zeros(1,36);
temp2=zeros(1,36);
ttemp1=zeros(1,64);
ttemp2=zeros(1,64);
ttemp3=zeros(1,64);
ttemp4=zeros(1,64);
%------------------1 (3)------------------------------------
for x=0:5
for y=0:5
for k=0:K-1
  for l=0:L-1
     for m=1:8
         for n=1:7
             if dct(k*8+m,l*8+n)==x&&dct(k*8+m,l*8+n+1)==y
                a=a+1;
             end
         end
     end
  end
end
  temp1(1,x*6+y+1)=a/(56*K*L);
  a=0;
end
end

for x=0:5
for y=0:5
for k=0:K-1
  for l=0:L-1
     for m=1:7
         for n=1:8
             if dct(k*8+m,l*8+n)==x&&dct(k*8+m+1,l*8+n)==y
                a=a+1;
             end
         end
     end
  end
end
  temp2(1,x*6+y+1)=a/(56*K*L);
  a=0;
end
end
feature(1,1:36)=(temp2+temp1)/2;
temp1=temp1*0;
temp2=temp2*0;
%-------------1(6)------------------

for x=0:5
for y=0:5
for k=0:K-1
  for l=0:L-2
     for m=1:8
         for n=1:8
             if dct(k*8+m,l*8+n)==x&&dct(k*8+m,(l+1)*8+n)==y
                a=a+1;
             end
         end
     end
  end
end
  temp1(1,x*6+y+1)=a/(64*K*(L-1));
  a=0;
end
end

for x=0:5
for y=0:5
for k=0:K-2
  for l=0:L-1
     for m=1:8
         for n=1:8
             if dct(k*8+m,l*8+n)==x&&dct((k+1)*8+m,l*8+n)==y
                a=a+1;
             end
         end
     end
  end
end
  temp2(1,x*6+y+1)=a/(56*(K-1)*L);
  a=0;
end
end
feature(1,37:72)=(temp2+temp1)/2;
temp1=temp1*0;
temp2=temp2*0;
%-------------------3(11)------------------
%----nj3hh
for x=0:3
for y=0:3
for z=0:3
for k=0:K-1
  for l=0:L-1
     for m=1:8
         for n=1:6
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m,l*8+n+1)==y&&dctinter(k*8+m,l*8+n+2)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp1(x*16+y*4+z+1)=a/(48*K*L);
  a=0;
end
end
end
%----nj3hv
for x=0:3
for y=0:3
for z=0:3
for k=0:K-1
  for l=0:L-1
     for m=1:7
         for n=1:6
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m,l*8+n+1)==y&&dctinter(k*8+m+1,l*8+n+2)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp2(x*16+y*4+z+1)=a/(42*K*L);
  a=0;
end
end
end
%----nj3vv
for x=0:3
for y=0:3
for z=0:3
for k=0:K-1
  for l=0:L-1
     for m=1:6
         for n=1:8
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m+1,l*8+n)==y&&dctinter(k*8+m+2,l*8+n)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp3(x*16+y*4+z+1)=a/(48*K*L);
  a=0;
end
end
end

%----nj3vh
for x=0:3
for y=0:3
for z=0:3
for k=0:K-1
  for l=0:L-1
     for m=1:6
         for n=1:7
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m+1,l*8+n)==y&&dctinter(k*8+m+2,l*8+n+1)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp4(x*16+y*4+z+1)=a/(42*K*L);
  a=0;
end
end
end
feature(1,73:136)=(ttemp2+ttemp1+ttemp3+ttemp4)/2;
ttemp1=ttemp1*0;
ttemp2=ttemp2*0;
ttemp3=ttemp3*0;
ttemp4=ttemp4*0;
%-------------------3(16)------------------
%----nj4hh
for x=0:3
for y=0:3
for z=0:3
for k=0:K-1
  for l=0:L-2
     for m=1:8
         for n=1:7
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m,l*8+n+1)==y&&dctinter(k*8+m,(l+1)*8+n)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp1(x*16+y*4+z+1)=a/(56*K*(L-1));
  a=0;
end
end
end

%-----nj4hv
for x=0:3
for y=0:3
for z=0:3
for k=0:K-2
  for l=0:L-1
     for m=1:8
         for n=1:7
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m,l*8+n+1)==y&&dctinter((k+1)*8+m,l*8+n)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp2(x*16+y*4+z+1)=a/(56*(K-1)*L);
  a=0;
end
end
end

%-----nj4vv
for x=0:3
for y=0:3
for z=0:3
for k=0:K-2
  for l=0:L-1
     for m=1:7
         for n=1:8
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m+1,l*8+n)==y&&dctinter((k+1)*8+m,l*8+n)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp3(x*16+y*4+z+1)=a/(56*(K-1)*L);
  a=0;
end
end
end

%-----nj4vh
for x=0:3
for y=0:3
for z=0:3
for k=0:K-1
  for l=0:L-2
     for m=1:7
         for n=1:8
             if dctinter(k*8+m,l*8+n)==x&&dctinter(k*8+m+1,l*8+n)==y&&dctinter(k*8+m,(l+1)*8+n)==z
                a=a+1;
             end
         end
     end
  end
end
  ttemp4(x*16+y*4+z+1)=a/(56*K*(L-1));
  a=0;
end
end
end

feature(1,137:200)=(ttemp2+ttemp1+ttemp3+ttemp4)/2;
feature=feature*10000;
y=feature;
end

[1] LIU Q, SUNG A H, QIAO M. Neighboring joint density-based JPEG steganalysis[C]. ACM, 2011.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值