for j = 1 : m
tmp = stg((j - 1) * 4 + 1 : j * 4); %把图像分为四个像素一组 cor(1) = SpaceCor(tmp); cor(2) = SpaceCor(fpos(tmp, M)); cor(3) = SpaceCor(fneg(tmp, M)); if cor(2) > cor(1) % Rm
rs(i, 1) = rs(i, 1) + 1; end;
if cor(2) < cor(1) % Sm rs(i, 2) = rs(i, 2) + 1; end;
if cor(3) > cor(1) % R-m rs(i, 3) = rs(i, 3) + 1; end;
if cor(3) < cor(1) % S-m rs(i, 4) = rs(i, 4) + 1; end; end;
% 对待检测图像所有像素应用正翻转 stg = fpos(stg, ones(sample_len, 1));
% 对待检测图像应用非负和非正翻转,统计翻转前后的空间相关性 i = 2; for j = 1 : m
tmp = stg((j - 1) * 4 + 1 : j * 4); cor(1) = SpaceCor(tmp); cor(2) = SpaceCor(fpos(tmp, M)); cor(3) = SpaceCor(fneg(tmp, M)); if cor(2) > cor(1) % Rm
rs(i, 1) = rs(i, 1) + 1;
end;
if cor(2) < cor(1) % Sm rs(i, 2) = rs(i, 2) + 1; end;
if cor(3) > cor(1) % R-m rs(i, 3) = rs(i, 3) + 1; end;
if cor(3) < cor(1) % S-m rs(i, 4) = rs(i, 4) + 1; end; end; rs = rs / m; % J. Fridrih方法
% d0 = Rm(p/2)-Sm(p/2), d1=Rm(1-p/2)-Sm(1-p/2) dpz = rs(1, 1) - rs(1, 2); dpo = rs(2, 1) - rs(2, 2); % d-0 = R-m(p/2)-S-m(p/2), d-1=R-m(1-p/2)-S-m(1-p/2) dnz = rs(1, 3) - rs(1, 4); dno = rs(2, 3) - rs(2, 4); %判定待检测图像lena.bmp是否经过LSB替换隐写
P = 2.5 * 1e-2; %设定门限值,对于RS分析一般为2%-3%
if dnz > 0 && dpo > 0 %用于判断Rm是否大于Sm,R-m是否大于S-m disp('待检测图像lenahidden.bmp中没有经过LSB替换隐写!'); end
判断待检测图像if dnz - dpo > P %用于判定R-m - S-m > Rm - Sm 是否经过LSB替换隐 disp('待检测图像lenahidden.bmp经过LSB替换隐写!'); 写 end
% get roots of polynomial
C = [2 * (dpo + dpz), (dnz - dno - dpo - 3 * dpz), (dpz - dnz)]; z = roots(C); p = z ./ (z - 0.5);
fprintf(1, 'Fridrih Algorithm:expective embedding rate is %f\\n', p(2));
运行上述代码,可以得到载体图像lenahidden.bmp的隐写率为0.048006。
图 13 代码执行结果
为降低模板M的随机性对检测结果的影响,本次实验采取多次执行代码,计算隐写率的平均值并将此作为RS方法的分析结果。
表 3 多次执行代码后的隐写率估算值与误差分析
执行次数 1 2 3 4 5 6 7 8 9 10 隐写率p估算值 0.048006 0.037661 0.048006 0.049173 0.061232 0.054336 0.049748 0.049173 0.045173 0.049173
五,
实验结果
平均隐写率p 0.049168 完成实验之后,可以得出如下结论:
1. RS隐写分析算法可以用来分析在LSB位嵌入隐秘信息的图像文件,判断图像中是否嵌入了隐秘信息,并可据此计算图像文件的隐写率。
2. 利用S-Tools工具可以很方便地在WAV格式的音频文件、BMP格式和GIF格式的图像文件中加载隐秘信息,并可通过查看携密图片的文件信息,提取出所加载的隐秘信息。