图像隐藏与提取的问题
来源:互联网 发布:mac的ppt模版 编辑:程序博客网 时间:2024/05/14 13:03
function [A,msg] = imagehide(cover,message,goleimage,permission,level)
%提取图像信息并分层
cover = imread(cover,permission);
data = cover;
Msg = imread(message,permission);
[msg,map] = rgb2ind(Msg,0.1);
%msg = im2bw(Msg,0.5);
[row,col] = size(cover);
cover1 = cover(:,:,level);
%置图像R层低4bit为0
for i = 1 : row
for j = 1 : col/3
cover1(i,j) = bitand(cover1(i,j),240);
end
end
%置秘密图像的低4bit为0
takemsg4 = bitand(msg,240);
%将秘密图像的高4bit右移4位
shiftmsg4 = bitshift(takemsg4,-4);
%图像隐藏
for i = 1 : row
for j = 1 : col/3
cover1(i,j) = bitor(cover1(i,j),shiftmsg4(i,j));
end
end
%写回并保存
data(:,:,level) = cover1;
imwrite(data,goleimage,permission);
%提取秘密图像信息,检测隐藏效果
data = imread(goleimage,permission);
[row,col] = size(data);
A = data(:,:,level);
for i = 1 : row
for j = 1 : col/3
A(i,j) = bitand(cover1(i,j),15);
end
end
A = bitshift(A,4);
%显示效果
subplot(221),imshow(cover);title('载体图像');
subplot(222),imshow(Msg);title('秘密图像');
subplot(223),imshow(data);title('隐藏后的图像');
subplot(224),imshow(A,map);title('提取的秘密图像');
上面是一段将图像隐藏于另一幅图像的MATLAB代码,我的目的是将一张彩色图片隐藏到另外一张彩色图片,在隐藏之前,记录下这张图片的map,对data进行操作。最后得到的结果却跟我想要的结果有一定差距
所提取的秘密图像确是这么一幅人不人,鬼不鬼的图像。
我将所得到的msg(data)矩阵和A矩阵进行分析的时候,发现两个矩阵是完全一样的。
接着我输入如下命令
>> subplot(121),imshow(msg,map);title('msg矩阵生成');
>> subplot(122),imshow(A,map);title('A矩阵生成');
得到如下结果
同样的数据矩阵,同样的调色板矩阵生成了两幅不一样的图像。
问题出在哪里呢?很奇怪!
- 图像隐藏与提取的问题
- 一个图像目标区域提取的问题
- 图像特征的提取与表达
- 图像的边缘提取
- 图像的边缘提取
- php图像的提取
- 图像的边缘提取
- 图像的边缘提取
- 图像的特征提取
- 图像的特征提取
- 图像特征的提取
- 图像的特征提取
- 图像轮廓的提取
- android图像像素提取中遇到的算法问题
- 图像特征提取与匹配
- 图像特征提取与描述
- 图像处理与特征提取
- OpenCV_局部图像特征的提取与匹配_源代码
- java学习笔记(一)--编程规范和技巧总结
- 进军嵌入式Linux-学习方案
- RGB565 to RGB24
- VB访问MySQL数据库的实现与源码
- 单态模式
- 图像隐藏与提取的问题
- 郁闷
- SWT学习笔记(一) Hello SWT
- ASP.net中"名称以无效字符开头"问题解决?
- 随便写两句
- SAP的传奇故事
- 用DataSet.ReadXml读取无Scheme的XML提速方法
- .NET下生产图片验证码
- C#可逆加密-Rijndael算法