%使用四叉树分解和直方图的可逆数据隐藏
%换档
%使用四叉树增加隐藏能力
clc;
clear all;
close all;
z=1;
%--------------------读取图像------------------------
b=imread('goldhill.jpg');
I=rgb2gray(b);
figure(1);
imshow(I);
title('原始图像');
[m,n]=size(I);
figure(2);
imhist(I);
title('原始图像的直方图');
%--------------------四叉树分解---------------------
mindim=4;
S = qtdecomp(I,@Split,mindim,@Predicate);
%-------------------显示块表示------------
blocks = repmat(uint8(0),size(S));
for dim = [512 256 128 64 32 16 8 4 2 1];
numblocks = length(find(S==dim));
if (numblocks > 0)
values = repmat(uint8(1),[dim dim numblocks]);
values(2:dim,2:dim,:) = 0;
blocks = qtsetblk(blocks,S,dim,values);
end
end
blocks(end,1:end) = 1;
blocks(1:end,end) = 1;
figure(3);
imshow(blocks,[]);
title('分解的图像块');
%-------------------显示全图-----------------------------------
vals1 = repmat(uint8(0),size(S));
for dim = [512 256 128 64 32 16 8 4 2 1]
[vals,r,c]=qtgetblk(I,S,dim);
numblocks = length(find(S==dim));
if (numblocks > 0)
values = repmat(uint8(1),[dim dim numblocks]);
values(2:dim,2:dim,:) = vals(2:dim,2:dim,1:numblocks) ;
vals1 = qtsetblk(vals1,S,dim,values);
end
end
figure(4);
imshow(vals1,[]);
title('分解图像');
%----------------输入要隐藏的消息/数据---------------------
hide_data=input('Enter the data to be hide'); %用于手动输入
%cell_data=textread('myfile.txt', '%s', 'whitespace', ''); %reading data from text file
%hide_data=char(cell_data);
bin_data=convert_binary(hide_data); %调用函数将数据转换为二进制
binary_data=bin_data';
size_binary=size(binary_data,1)*size(binary_data,2);
bin=1;
a=1;
% %-------------------在图像块中嵌入数据---------------------
vals5 = repmat(uint8(0),size(S));
pd=1;
q=1;
ind=1;
rec_data(size_binary)=0;
for h=1:size_binary
rec_data(h)=0;
end
for dim = [512 256 128 64 32 16 8 4 2 1]
[vals2,r,c]=qtgetblk(I,S,dim);
numblocks = length(find(S==dim));
if (numblocks > 0)
values = repmat(uint8(1),[dim dim numblocks]);
values1 = repmat(uint8(1),[dim dim numblocks]);
full_hideimage = repmat(uint8(1),[dim dim numblocks]);
values(1:dim,1:dim,:) = vals2(1:dim,1:dim,1:numblocks) ;
%full_hideimage(1:dim,1:dim,:)=vals2(1:dim,1:dim,1:numblocks);
for i=1:size(values,3)
get_block=values(:,:,i);
newblock=values(:,:,i);
hide_image=values(:,:,i);
recover_block=values(:,:,i);
original=get_block;
l_block=length(get_block);
count(255)=0;
for h=1:255
count(h)=0;
end
for k=1:255
for l=1:l_block
for j=1:l_block
if get_block(l,j)==k
count(k)=count(k)+1;
end
end
end
end
[C,max_point]=max(count);
[C1,min_point]=min(count);
for l=1:l_block
for j=1:l_block
if (get_block(l,j)>min_point)&&(get_block(l,j)<max_point)
newblock(l,j)=get_block(l,j)+1;
elseif get_block(l,j)==(max_point+1)
newblock(l,j)=get_block(l,j)+1;
else
newblock(l,j)=get_block(l,j);
end
end
end
for l=1:l_block
for j=1:l_block
if (newblock(l,j)==max_point)
if (bin<=size_binary)
dat=binary_data(bin);
if dat==dec2bin(1)
hide_image(l,j)=newblock(l,j)+ 1;
else
hide_image(l,j)=newblock(l,j);
end
else
hide_image(l,j)=newblock(l,j);
end
bin=bin+1;
else
hide_image(l,j)=newblock(l,j);
end
end
end
full_hideimage(:,:,i)=hide_image;
end
%------------显示数据隐藏图像---------------
values(1:dim,1:dim,1:numblocks)=full_hideimage(1:dim,1:dim,1:numblocks);
vals5 = qtsetblk(vals5,S,dim,values);
end
end
figure(5);
imshow(vals5,[]);
title('数据隐藏图像');
没有合适的资源?快使用搜索试试~ 我知道了~
数据隐写基于matlab四叉树分割和直方图平移的可逆图像数据隐藏【含Matlab源码 2143期】.zip
共11个文件
jpg:6个
m:4个
bin:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 49 浏览量
2023-10-30
19:14:28
上传
评论 2
收藏 374KB ZIP 举报
温馨提示
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 图像隐写:LSB数字水印、DCT、DWT高斯模型JPEG图像隐写
资源推荐
资源详情
资源评论
收起资源包目录
【数据隐写】基于matlab四叉树分割和直方图平移的可逆图像数据隐藏【含Matlab源码 2143期】.zip (11个子文件)
【数据隐写】基于matlab四叉树分割和直方图平移的可逆图像数据隐藏【含Matlab源码 2143期】
运行结果1.jpg 49KB
运行结果5.jpg 52KB
Split.m 337B
quadtree.m 5KB
convert_binary.m 240B
运行结果2.jpg 33KB
goldhill.jpg 151KB
kk.bin 1B
运行结果4.jpg 121KB
Predicate.m 991B
运行结果3.jpg 169KB
共 11 条
- 1
资源评论
- 清欢渡7392024-01-13资源不错,内容挺好的,有一定的使用价值,值得借鉴,感谢分享。
- jianmo123fwuq2024-03-17感谢资源主的分享,很值得参考学习,资源价值较高,支持!
海神之光
- 粉丝: 3w+
- 资源: 2093
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功