⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 binaryhide.m

📁 对二值图像进行信息隐藏
💻 M
字号:
function [result,count,availabler,availablec]=binaryhide(cover,msg,goalfile,key,R0,R1,lumda)
%按位读取秘密信息
frr=fopen(msg,'r');%定义文件指针
[msg,count]=fread(frr,'ubit1');%msg为消息的位表示形势,count为消息的bit数
fclose(frr);
%读取载体图像信息
images=imread(cover);
image=round(double(images)/255);
%确定图像块的首地址
[m,n]=size(image);
m=floor(m/10);
n=floor(n/10);
temp=zeros([m,n]);
[row,col]=hashreplacement(temp,m*n,m,key,n);%将m,n也作为密钥简化输入
for i=1:m*n
    if row(i)~=1
        row(i)=(row(i)-1)*10+1;
    end
    if col(i)~=1
        col(i)=(col(i)-1)*10+1;
    end
end
%随机置乱8*8个点
temp=zeros(8);
[randr,randc]=hashreplacement(temp,64,key,m,n);%将m,n也作为密钥简化输入
%分析可用的图像块
[availabler,availablec,image]=available(msg,count,row,col,m,n,image,R1,R0,lumda,randr,randc);
%信息嵌入
for i=1:count
    p1bi=computep1bi(availabler(i),availablec(i),image);
    if msg(i,1)==1
        if p1bi<R1
            image=editp1bi(availabler(i),availablec(i),image,0,R1-p1bi+1,randr,randc);%使p1(Bi)>R1
        elseif p1bi>R1+lumda
            image=editp1bi(availabler(i),availabec(i),image,1,p1bi-R1-lumda+1,randr,randc);%使p1(Bi)<R1+λ
        else
        end
    end
    if msg(i,1)==0
        if p1bi>R0
            image=editp1bi(availabler(i),availablec(i),image,1,p1bi-R0+1,randr,randc);%使p1(Bi)<R0
        elseif p1bi<R0-lumda
            image=editp1bi(availabler(i),availablec(i),image,0,R0-lumdap1bi+1,randr,randc);%使p1(Bi)<R1+λ
        else
        end
    end
end
%信息写回保存
image=round(image);%防止边界扩散后的取整复原
result=image;
imwrite(result,goalfile);
subplot(1,2,1),imshow(image),title('原始图像');
subplot(1,2,2),imshow(result),title(['取阈值R0,R1,为',int2str(R0),',',intstr(R1),'以及健壮参数λ为',intstr(lumda),'下的信息',int2str(count),'bits隐秘效果']);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -