提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、实验背景
    • 1.实验目的
    • 2.实验环境
  • 二、原理介绍
    • 1.隐写分析技术
    • 2.针对LSB的图像隐写分析技术
    • 3.卡方分析
  • 三、实验内容及源码
    • 1.LSB嵌入和直方图变化
    • 2.LSB嵌入和直方图变化
    • 3.LSB卡方分析
  • 四、实验结果及分析

一、实验背景

1.实验目的

(×)了解什么是隐写分析、隐写分析与信息隐藏和数字水印的关系。掌握基于图像的 LSB 隐写的分析方法,设计并实现一种基于图像的 LSB 卡方隐写分析方法。
(√)实现一种基于图像的 LSB 卡方隐写分析方法

2.实验环境

(1) Windows 11 操作系统;
(2) Matlab R2020b 科学计算软件;
(3)图像文件test.bmp;

二、原理介绍

1.隐写分析技术

隐写术和隐写分析技术即是互相矛盾、又是相互促进的。隐写分析是指对可疑的载体信息进行攻击,以达到检测、破坏、甚至是提取秘密信息的技术,它的主要目标是为了揭示媒体中隐蔽信息的存在性,甚至只是指出媒体中存在秘密信息的可能性。

2.针对LSB的图像隐写分析技术

图像LSB信息隐藏的方法是用嵌入的秘密信息取代载体图像的最低比特位,原来图像的7个高位平面与代表秘密信息的最低位平面组成含隐蔽信息的新图像。算法详细内容及相关实现代码可以参考下面这篇博客:

基于matlab实现的LSB 图像信息隐藏算法(含源码)

虽然LSB隐写在隐藏大量信息的情况下依然保持良好的视觉隐蔽性,但使用有效的统计分析工具仍可判断一幅载体图像中是否含有秘密信息。
目前对于图像LSB信息隐藏主要分析方法有卡方分析、信息量估算法、RS分析法和GPC分析法等,此处仅介绍卡方分析方法的算法并进行相关实验。

3.卡方分析

①原理
灰度直方图是关于图像灰度级分布的函数,它将数字图像中的所有像素,按照灰度值的大小,统计其出现的次数,即图像中具有某种灰度级的像素的个数。在原始图像(灰度值为0-255)中,相邻灰度值的像素块数目一般差别很大。但在LSB信息隐藏中,秘密信息在嵌人之前往往经过加密,可以看作是0、1随机分布的比特流,而且值为0与1的可能性都是1/2。如果秘密信息完全替代载体图像的最低位,那么伪装对象相邻灰度值的像素块数目将会比较接近,我们就可以根据这个性质判断图像是否经过隐写。
此处,我们定量分析载体图像最低位完全嵌入秘密信息的情况。在这种情况下,我们可以将相邻的灰度值两两分组(灰度值一奇一偶),因为嵌入信息总是嵌入载体图像的最低比特位,其像素值要么不变,要么出现由奇数到相邻偶数(减一)、或由偶数到相邻奇数(加一)的改变,这种改变会改变直方图的分布(由差别很大变得近似相等),但是却不会改变这组整体的像素块数目之和。
此外,卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。

②算法

设图像中灰度值为 j 的像素数为 h(j) , 其中 0 ≤ j ≤ 255。灰度直方图横坐标为 j ,纵坐标为 h (j) 。如果载体图像未经隐写,h(2i) 和 h(2i+1) 的值会相差得很远,如果秘密信息完全替代载体图像的最低位,那么 h(2i) 和 h(2i+1) 的值会比较接近。嵌入信息会改变灰度直方图的分布,由差别很大变得近似相等,但是却不会改变 h(2i) + h(2i+1) 的值,因为样值要么不改变,要么就在h(2i) 和 h(2i+1) 之间改变。设以下两个参数,显然 h(2i)* 在隐写前后是不会变的,而 q 则会改变。

如果样值(伪装对象的像素值)为 2i ,那么它对参数q 的贡献为 1/2 ;如果样值为 2i+1 ,那么它对参数q的贡献为 -1/2。载体音频中共有 2h(2i)* 个样点的值为 2i 或 2i+1,若所有样点都包含 1 bit的秘密信息,那么每个样点为 2i 或 2i+1 的概率就是 0.5,当2h(2i)较大时,根据中心极限定理,下式成立:

其中,—>N(0,1)表示近似服从正态分布。因此 随机变量 r 服从卡方分布:

其中,k 等于h(2i) 和 h(2i+1) 所组成数字对的数量,2h(2i)* 为 0 的情况不计在内。r 越小表示载体含有秘密信息的可能性越大。结合卡方分布的密度计算函数计算载体被隐写的可能性为:

如果p接近于1,则说明载体图像含有秘密信息。

三、实验内容及源码

1.LSB嵌入和直方图变化

对图像进行LSB嵌入,比较嵌入秘密信息前后的直方图的变化。
源代码hist_change.m如下:

[fn,pn]=uigetfile({'*.jpg','JPEG files(*.jpg)';'*.bmp','BMP files(*.bmp)'},'Select file to hide');
name=strcat(pn,fn);
I=rgb2gray(imread(name)); %对灰度图像进行隐藏
sz=size(I);
% generate msg
rt=1;%隐写率为 100%
row=round(sz(1) *rt);
col=round(sz(2) *rt);
msg=randsrc(row,col,[0 1;0.5 0.5]);
% LSB hide
stg=I;
stg(1:row,1:col)=bitset(stg(1:row,1:col),1,msg);
nI=sum(hist(I,[0:255]),2)';
nS=sum(hist(stg,[0:255]),2)';
x=[80:99];
figure;
stem(x,nI(81:100));figure;
stem(x,nS(81:100));

运行代码,选择准备好的jpeg或bmp图像进行测试,得到嵌入前和嵌入后的灰度直方图:

2.LSB嵌入和直方图变化

代码 StgPrb.m如下:

function p=StgPrb(x)
%对数据进行分析 对一个二维数组进行分析,数组里面的值在0-255 之间
n=sum(hist(x,[0:255]),2);
h2i=n([3:2:255]);
h2is=(h2i+n([4:2:256]))/2;
filter=(h2is~=0);
k=sum(filter);
idx=zeros(1,k);
for i=1:127if filter(i)==1idx(sum(filter(1:i)))=i;end
end
%compute statistics
r=sum(((h2i(idx)-h2is(idx)) .^2)./(h2is(idx)));
%compute probility
p=1-chi2cdf(r,k-1);
% p = chi2cdf(r , k); 

3.LSB卡方分析

源代码 test.m如下:

clear all;
[fn,pn]=uigetfile({'*.jpg','JPEG files(*.jpg)';'*.bmp','BMP files(*.bmp'},'Select file to hide');
name=strcat(pn,fn);
t=imread(name);
I=t(1:512,1:512);
sz=size(I);
for k=1;3%据隐写率大小生成秘密信息,隐写率为 0.3 0.5 0.7三种rt=0.3+0.2*(k-1);row=round(sz(1)*rt);col=round(sz(2)*rt);msg=randsrc(row,col,[0 1;0.5 0.5]);%LSB信息隐写stg=I;stg(1:row,1:col)=bitset(stg(1:row,1:col),1,msg);imwrite(stg,strcat(pn,strcat(sprintf('stg_%d_',floor(100*rt)),fn)),'bmp');i=1;for rto=0.1:0.01:1row=round(sz(1)*rto);col=round(sz(2)*rto);p(k,i)=StgPrb(stg(1:row,1:col));i=i+1;end
end

四、实验结果及分析

从结果p值我们可以看出,当隐写率为0.3时(第一行),p[1]–p[22]的值都接近1;当隐写率为0.5时,p[1]–p[42]的值都接近1;当隐写率为0.7时,p[1]–p[62]的值都接近1;
因此我们可以得到结论:卡方分析可以判定载体图像中是否含有秘密信息,但这要求秘密信息必须嵌满所有像素。





针对LSB 信息隐藏的卡方分析算法实现相关推荐

  1. LSB图像信息隐藏算法matlab,实验二LSB信息隐藏实验.doc

    实验二LSB信息隐藏实验.doc 实验二LSB信息隐藏实验 综合评分: [实验目的]: 掌握MATLAB基木操作 实现LSB信息隐藏和提取 [实验内容]:(请将你实验完成的项11涂"■&qu ...

  2. 利用MATLAB实现WAV音频的LSB信息隐藏

    0. 背景 音频信息隐藏技术就是将秘密数据直接嵌入音频载体中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察或注意到. 音频信息隐藏技术作为信息隐藏技术的一个重要分支,受到越来越多的关注. 近年 ...

  3. matlab实现GPC隐写算法,基于LSB信息隐藏算法的MATLAB实现

    %将水印图像按最低位有效(LSB)方法嵌入到载体图像中,并把水印从载体图像中提取出来 %注:整个算法分为水印嵌入部分和水印提取部分,及hcf com down_sampled水印分析 % 程序代写&a ...

  4. matlab信息隐藏算法,[转载]基于LSB信息隐藏算法的MATLAB实现

    %将水印图像按最低位有效(LSB)方法嵌入到载体图像中,并把水印从载体图像中提取出来 %注:整个算法分为水印嵌入部分和水印提取部分,及hcf com down_sampled水印分析 % 程序代写&a ...

  5. LSB图像信息隐藏(实现及分析)

    一.LSB图像信息隐藏(python实现) 1.实验目的 将信息图片存入载体图片,并从载体图片中提取出信息图片.具体操作为将信息图片的信息写入载体图片的最低位层(载体图片至少应为信息图片8倍). 2. ...

  6. Matlab-LSB信息隐藏实验

    一.实验内容 实验完成形式:  用MATLAB函数实现LSB信息隐藏和提取 实验选择载体:  512×512灰度图像 实验效果和分析:  1.完成基本的LSB信息隐藏及提取 2.能随机选择嵌入位进行信 ...

  7. 网页信息隐藏及一种方法

    信息隐藏技术: 按载体的不同分为图像.视频.声音和文本等数字媒体的信息隐藏技术. 目前的研究集中在以静止图像.音频及视频为载体的数字媒体上,针对文本信息隐藏技术的研究较少.文本载体的信息冗余太少,不适 ...

  8. 【信息隐藏】LSB隐写算法的实现与性能分析

    LSB隐写算法的实现与性能分析 Presented by R.G. 本项目所有的代码文件均可以在我的Github上找到,建议运行我git仓库里的代码文件,不要直接复制本文展示的代码跑 项目地址:htt ...

  9. 基于LSB的信息隐藏

    一.项目背景 随着Internet技术和多媒体信息技术的飞速发展,多媒体.计算机网络.个人移动通信技术等进入寻常百姓家,数字化已深入人心.数字多媒体信息在网上传播与传输越来越方便,通过网络传递各种信息 ...

  10. JSteg信息隐藏算法

    目录 实验环境 系统设计 JSteg信息隐藏算法 JSteg信息隐藏算法替换规则 嵌入算法 提取算法 JSteg信息隐藏算法缺陷分析 系统实现 嵌入算法 JSTEG_simulation.m steg ...

最新文章

  1. python和vb的代码可以通用吗-VB6+Python混合编程(COM组件)(转)
  2. map.js的编写(js编写一个对象的方式)
  3. [HAOI2015]树上操作
  4. 实战:Python 轻松实现自动化谷歌翻译!
  5. C#decimal数据类型
  6. 字符设备驱动0:一个简单但完整的字符设备驱动程序
  7. java排序算法原理_排序算法原理与实现(java)
  8. springboot 上传图片大小_springboot 文件上传大小配置的方法
  9. git add remote_git命令
  10. c++检测固定usb端口有无设备接入_设计人员在为产品添加USB Type-C?连接时需要了解的信息...
  11. java为什么删除jpg删不掉_java-如何在不损失质量的情况下从图像(JPG)删除元数据?...
  12. [总结]-第七章 虚拟机类加载机制
  13. 使用计算机模拟抛硬币,计算机模拟抛硬币实验学生任务单.pdf
  14. RxJava2+retrofit实现网络封装
  15. centos6.3安装bluefish
  16. ZABBIX3.04设置短信报警
  17. 现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射
  18. 如何查看雷电打开了VT
  19. 下列内容属于计算机房控制功能的是,前厅服务员中级理论知识试卷及答案2
  20. 轻量型网络之MobileNetV2: Inverted Residuals and Linear Bottlenecks论文学习

热门文章

  1. Word2013自动生成中英文目录
  2. 像素、英寸、厘米的换算
  3. php 微信推送提醒,php实现微信模板消息推送
  4. IDEA Eval Reset 插件找不到
  5. Python算法——查找数组前三名
  6. mysql gitd 数据结构同步失败_MySQL案例-GTID同步失败:master has purged binary logs
  7. Linux 系统升级蝉道
  8. UML用例图之寻找参与者与用例
  9. ACM学习历程—HDU 5025 Saving Tang Monk(广州赛区网赛)(bfs)
  10. 为什么压缩图片和压缩