matlab信息量估计法估计嵌入率,LSB密写分析-信息量估计法

信息量估计法的实现,简单说,先计算原图像F1,F2判断是否经过密写,再二次密写,在不同密写率下计算不同的F1,F2,将得到的点进行直线拟合,求得f1,f2两直线交点,由交点横坐标计算出密写率p。

信息量估计法主程序

image='ste_cover.bmp';

ste_cover=imread(image);

ste_cover=double(ste_cover);

[f1(1),f2(1)]=CalF(ste_cover); %得到初始f1,f2

fprintf('F1=%d,F2=%d\n',f1(1),f2(1));

%判断f2是否显著性大于f1(0.05)

if f2(1)<=(f1(1)*1.05) %判断是否含秘密信息

fprintf('不含秘密信息\n');

else

fprintf('含有秘密信息\n');

rate(1)=0;

i=2;

for r=0.1:0.1:1 %二次嵌入

ste2_cover=LSB(ste_cover,r);

[f1(i),f2(i)]=CalF(ste2_cover);

rate(i)=r;

i=i+1;

end

%对f1,f2线性拟合,F=a*rate+b

f1s=polyfit(rate,f1,1); %一次方程

f2s=polyfit(rate,f2,1);

a1=f1s(1);

b1=f1s(2);

a2=f2s(1);

b2=f2s(2);

plot(rate,f1,'o',rate,polyval(f1s,rate));

hold on;

plot(rate,f2,'o',rate,polyval(f2s,rate));

legend('F1','F1','F2','F2');

xlabel('Embedding rate alpha');

ylabel('Values of F1 and F2');

syms x y; %将x y设为符号变量

eq1=y==a1*x+b1;

eq2=y==a2*x+b2;

p=solve([eq1,eq2],[x,y]); %求y1,y2两直线交点

pb=p.x;

pf=p.y;

alpha=(abs(pb))/(1+abs(pb));

alpha=double(alpha);

format bank;

fprintf('嵌入率为%d\n',alpha);

end

信息量估计法中求F1,F2值的程序

function [f1,f2]=CalF(matrix)

n=hist(matrix(:),[0:255])'; %得到matrix的直方图

h2i=n([1:2:255]); %h(2i)

h2ip1=n([2:2:256]); %h(2i+1)

h2ip2=n([3:2:255]); %h(2i+2)

f1=0;

f2=0;

for i=1:127

f1=f1+abs(h2ip1(i)-h2i(i));

i=i+1;

end

for i=1:126

f2=f2+abs(h2ip2(i)-h2ip1(i));

i=i+1;

end

信息量估计法中引用到的LSB密写程序

function ste_cover=LSB(cover,rate)

ste_cover=double(cover); %将图像矩阵的类型转换成双精度型,便于后续的运算

[m,n]=size(ste_cover); %读取ste_cover的行和列

%根据rate计算秘密信息位的长度并生成秘密信息

msg_len=floor(m*n*rate);

msg=randsrc(1,msg_len,[0 1;0.5 0.5]);

p=1; %p为秘密信息的位计数器

%按照产生的秘密信息依次将图片层的最后一位替换为秘密消息

for f2=1:n

for f1=1:m

if p>=msg_len

break;

end

ste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(1,p);

p=p+1;

end

if p==msg_len

break;

end

end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值