




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息隐藏实验二LSB隐写分析 姓名:周伟康 学号: 班级:- 12 -仅供参考一:实验要求1、针对自己实现的隐写算法(嵌入、提取),计算隐蔽载体的PSNR值,通过PSNR值来评估隐写对图像质量的影响,并与主观感受做对比。2、实现一种隐写分析方法,对隐蔽载体进行检测(卡方、RS)二:实验步骤1、 编写随机选点函数,完善顺序和随机两种LSB信息嵌入和提取。%随机间隔选点函数%row, col = randinterval(test, 60, 1983);function row, col = randinterval(matrix, count, key)m, n = size(matrix);i
2、nterval1 = floor(m * n / count) + 1;interval2 = interval1 - 2;if interval2 = 0 error('载体太小,不能将秘密消息隐藏其内!');endrand('seed', key);a = rand(1, count);%initializerow = zeros(1 count);col = zeros(1 count);r = 1; c = 1;row(1,1) = r;col(1,1) = c;for i = 2 : count if a(i) >= 0.5 c = c + in
3、terval1; else c = c + interval2; end if c > n r = r + 1; if r > m error('载体太小,不能将秘密消息隐藏其内!'); end c = mod(c, n); if c=0 c = 1; end endrow(1, i) = r;col(1, i) = c;end选取8*8的矩阵测试2、 对比原始图像和隐藏信息后图像,计算隐蔽载体的均方差(MSE)进而计算峰值信噪比(PSNR),评估隐写对图像质量的影响。 %输入格式: F = compare('D:课件hidepic2.jpg',
4、39;scover.jpg');function F = compare(original, hided)W = imread(original);E = imread(hided);if any(size(W)=size(E) error('尺寸不同,不能比较');endF = W - E;%F = double(F)/255;imshow(mat2gray(double(F)/255);psnr, mse = qualify(F);function PSNR, MSE = qualify(Delta)%计算MSE和PSNR; MSE = sum(Delta(:) .
5、2)/prod(size(W); PSNR = 10*log10(2552/MSE); endtitle('差异对比 PSNR = ',num2str(psnr);end测试代码:clc;clear;key = 20112910;originalfile = 'D:¿Î¼þhidepicb.bmp'messagefile = 'D:¿Î¼þhidepicmessage.txt'scoverfile1 = 'D:¿Î¼þh
6、idepicscover1.bmp'scoverfile2 = 'D:¿Î¼þhidepicscover2.bmp'getfile1 = 'D:¿Î¼þhidepicsecret1.txt'getfile2 = 'D:¿Î¼þhidepicsecret2.txt'ste_cover, len_total = LSBhide(originalfile,messagefile,scoverfile1);subplot(233
7、);compare(originalfile,scoverfile1);x = LSBget(scoverfile1, len_total, getfile1);% ffste_cover2, len_total2 = randLSBhide(originalfile, messagefile,scoverfile2,key);subplot(236);compare(originalfile,scoverfile2);x = randLSBget(scoverfile2, len_total2, getfile2,key);隐写提取结果:(成功)实验结果1:实验结果2:结果分析:后者PSNR
8、大说明随机LSB比顺序LSB隐写安全性更好。3、 对256×256像素,256色的灰度图像进行RS隐写分析。RS原理:给定一个图像块,Zigzag扫描,排列成一个向量G=(x1,x2xn)图像的空间相关性定义翻转函数:F1:2i与2i+1的相互变化关系F-1:2i-1与2i的相互变化关系F0:不变关系RS分析步骤:将待检测图像分成大小相同的图像块计算每个图像块的空间相关性对每个图像块应用非负翻转(F1, F0)RM=空间相关性增加的图像块个数/图像块总个数SM=空间相关性减小的图像块个数/图像块总个数对每个图像块应用非正翻转(F-1, F0)R-M=空间相关性增加的图像块个数/图像块
9、总个数S-M=空间相关性减小的图像块个数/图像块总个数若R-M - S-M >> RM SM,则有LSB隐写。%RS方法对256*256像素,256色灰度图进行LSB隐写检测。%y = RSanalysis(originalfile);function fff = RSanalysis(input)org = imread(input);org = double(org);org = org(:)'row, len = size(org);rs = zeros(2, 4);fx = zeros(1, 3);m = floor(len / 4);M = randsrc(4,
10、1, 0, 1);%temp = zeros(4, 1);%temp = 27,28,26,25;M = 1 0 1 0;stg = org;for i = 1:2 for j = 1:m temp = stg(j-1)*4+1 : j * 4); %disp(temp); fx(1) = discrimination(temp); fx(2) = discrimination(fpos(temp, M); fx(3) = discrimination(fneg(temp, M); if fx(2) > fx(1) rs(i, 1) = rs(i, 1) + 1; end if fx(2
11、) < fx(1) rs(i, 2) = rs(i, 2) + 1; end if fx(3) > fx(1) rs(i, 3) = rs(i, 3) + 1; end if fx(3) < fx(1) rs(i, 4) = rs(i, 4) + 1; end end if i=1 stg = fpos(stg, ones(len, 1); endendfff = (rs(1,3)-rs(1,4)>(rs(1,1)-rs(1,2);if fff disp('含有隐藏信息');elsedisp('未检测出隐藏信息。');endrs = rs
12、/m;dpz = rs(1,1) - rs(1,2); dpo = rs(2,1) - rs(2,2);dnz = rs(1,3) - rs(1,4); dno = rs(2,3) - rs(2,4);C = 2*(dpo+dpz),(dnz-dno-dpo-3*dpz),(dpz-dnz);z = roots(C);p = z ./ (z-0.5);fprintf(1,'隐写率为:%fn', p(2);fprintf(1,'隐写长:%fn', p(2)*row*len);endfunction v = discrimination(t) v = abs(t(2
13、)-t(1) + abs(t(3)-t(2) + abs(t(4)-t(3);end function r = fpos(t, m) r = t; MM = size(m, 2); for q = 1:MM if m(q) = 1 if mod(t(q),2) = 0 r(q) = r(q) + 1; else r(q) = r(q) - 1; end if r(q) < 0 r(q) = 255; elseif r(q) > 255 r(q) = 0; end end endendfunction r = fneg(t, m) r = t; for q = 1:size(m) i
14、f m(q) = 1 if mod(t(q),2) = 0 r(q) = r(q) - 1; else r(q) = r(q) + 1; end end if r(q) < 0 r(q) = 255; elseif r(q) > 255 r(q) = 0; end endend测试代码:y = RSanalysis(originalfile);y = RSanalysis(scoverfile1);y = RSanalysis(scoverfile2);实验数据1:(对应Bird图隐写)实验数据2:(对应Lena图隐写)结果分析:隐写检测成功!但是隐写率和隐写消息长度估计严重有误,
15、应该是参数计算有误。三:总结对Matlab进一步学习后,初步掌握了函数的编写方法,将本次和上次实验代码修改为函数封装调用的形式,使编码结构更清晰,编写修改更方便。代码后若无;,执行时会产生大量中间过程输出,耽误运行和查看。故要养成写分号的习惯,若必要的输出用disp或加注释醒目。对不符合大小尺寸的隐蔽体,将无法分析出正确结果。对于几个字节的短消息隐藏载体,也无法检测到隐藏了信息。隐写率和隐写信息长估计都没有调试成功,对算法还没有完全理解通透。附:顺序LSB和随机LSB隐写,提取代码:LSBhide.m%LSB上的顺序信息隐藏,载体选用灰度bmp图%输入格式: ste_cover, len_to
16、tal =% LSBhide('D:课件hidepic2.jpg','D:课件hidepicmessage.txt','scover.jpg');function ste_cover, len_total = LSBhide(input, file, output)%读入图像矩阵cover = imread(input);ste_cover = cover;%ste_cover = double(ste_cover);%将文本文件转换为二进制序列f_id = fopen(file, 'r');msg, len_total = fr
17、ead(f_id, 'ubit1');fprintf('隐藏消息长度:%dn',len_total);%溢出检测m, n = size(ste_cover);if len_total > m * n error('嵌入消息量过大,请更换图像!');endif len_total <= 0 error('请输入隐藏消息!');endp = 1;for f2 = 1 : n for f1 = 1 : m ste_cover(f1, f2) = ste_cover(f1, f2) - mod(ste_cover(f1, f2
18、), 2) + msg(p, 1); if p = len_total break; end p = p + 1; end if p = len_total break; endend%生成信息隐藏后的图像imwrite(ste_cover, output);%显示结果subplot(231);imshow(cover);title('原始图像');subplot(232);imshow(output);title('LSB隐藏后图像');LSBget.m%result = LSBget('scover.bmp',length, 'sec
19、ret.txt')function result = LSBget(output, len_total, goalfile)ste_cover = imread(output);%ste_cover = double(ste_cover);m, n = size(ste_cover);frr = fopen(goalfile, 'w');if len_total <= 0 error('请输入隐藏消息!');endp = 1;result = ones(len_total,1);for f2 = 1 : n for f1 = 1 : m resul
20、t(p, 1) = mod(ste_cover(f1, f2), 2); if p = len_total break; end p = p + 1; end if p = len_total break; endendfwrite(frr,result,'ubit1');fclose(frr);randLSBhide.m%LSB上的随机信息隐藏,载体选用灰度bmp图%输入格式: ste_cover, len_total =% randLSBhide('D:课件hidepic2.jpg','D:课件hidepicmessage.txt','
21、;scover.jpg');function ste_cover, len_total = randLSBhide(input, file, output, key)%读入图像矩阵cover = imread(input);ste_cover = cover;%ste_cover = double(ste_cover);%将文本文件转换为二进制序列f_id = fopen(file, 'r');msg, len_total = fread(f_id, 'ubit1');fprintf('隐藏消息长度:%dn',len_total);%溢出
22、检测m, n = size(ste_cover);if len_total > m * n error('嵌入消息量过大,请更换图像!');endif len_total <= 0 error('请输入隐藏消息!');endp = 1;row, col = randinterval(ste_cover, len_total, key);for i = 1 : len_total ROW = row(i); COL = col(i); ste_cover(ROW, COL) = ste_cover(ROW, COL) - mod(ste_cover(ROW, COL), 2) + msg(p, 1); if p = len_total break; end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年国际美术设计师考试基础内容及答案
- 篮球模拟测试题及答案
- 助理广告师试题及答案知识架构
- 2024年助理广告师备考心得与实战经验分享试题及答案
- 植物辨识考试题及答案
- 2024年国际设计师考试的综合准备建议试题及答案
- 于设计教育中的广告设计课程建设探讨试题及答案
- 新材料在纺织品设计中的应用举例试题及答案
- 小升初舞蹈测试题及答案
- 北大竞赛数学试题及答案
- 土石方弃土消纳与处理协议
- 人教版小学英语词汇大全(三年级起点)
- 小学语文作文:五感法描写课件
- 2022年四川省自贡市中考化学试卷真题解析版
- 国开作业公共关系学-实训项目5:赞助活动(六选一)-赞助方案参考(含答案)2
- 老年人的饮食健康:为老年人提供合适的饮食
- 动态血糖监测知情同意书
- 光伏发电安全预评价模版
- 成品出货检验报告模板
- 【实用文档】生产制造过程流程图
- 水利水电工程高压喷射灌浆单元工程质量评定表(示范文本)
评论
0/150
提交评论