%%混沌置乱代码
clear;
clc;
%os原始图像的路径
[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入图像');
os=[pathname filename];
o=imread(os);
% figure,imshow(o);
%计算原始图像的大小
[m n]=size(o);
%l=zeros(m,n);
l=linspace(0,0,m*n);
l(1)=0.98;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
% for i=1:m*n
% if (l(i)>=0)
% l(i)=1;
% else
% l(i)=0;
% end
% end
% l=~l;
% subplot(2,2,2),imshow(l),title('混沌图像');
[lsort,lindex]=sort(l);
%ozl =original zhi luan 表示置乱后的原始图像
ozl=zeros(m,n);
for i=1:m*n
ozl(i)=o(lindex(i));
end
% ozl=reshape(ozl,m,n);
%%oo =original fu yuan
ofy=zeros(m,n);
for i=1:m*n
ofy(lindex(i))=ozl(i);
end
h= waitbar(0,'程序处理中,请耐心等待。。。');
for i=1:100, % computation here %
waitbar(i/100)
end
close(h) ;
subplot(1,3,1),imshow(o),title('原始图像');
subplot(1,3,2),imshow(ozl,[]),title('加密图像');
subplot(1,3,3),imshow(ofy,[]),title('复原图像');
%%%%
clear;
clc;
%需要注意本程序实现对二进制文件的加密,对于非二进制文件不能采用此程序进行加密!!!!
[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入图像');
os=[pathname filename];
%os原始图像的路径
o=imread(os);
% figure,imshow(o);
%计算原始图像的大小
[m n]=size(o);
l=zeros(m,n);
l(1)=0.98;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
for i=1:m*n
if (l(i)>=0)
l(i)=1;
else
l(i)=0;
end
end
% l=~l;
ei=xor(o,l);
di=xor(ei,l);
h= waitbar(0,'程序处理中,请耐心等待。。。');
for i=1:100, % computation here %
waitbar(i/100)
end
close(h)
subplot(2,2,1),imshow(o),title('原始图像');
subplot(2,2,2),imshow(l),title('混沌图像');
% figure,imshow(l);
%ei表示加密图像encryption image
subplot(2,2,3),imshow(ei),title('加密图像');
%di表示解密图像dencryption image
subplot(2,2,4),imshow(di,[]),title('解密图像');
% figure,imshow(di);
clear;
clc;
% o=imread('image/lena.bmp');
%%%%%%%%%%%%读入混沌初始值
prompt={'混沌初始值 '};
title='初值';
lines=1;
def={'98'};
mya=inputdlg(prompt,title,lines,def,'on');
key11=['0.',mya{1}];
key=str2num(key11);
%%%%%%%%%%%%
[filename pathname]=uiputfile({'*.bmp';'*.tiff';'*.tif'}, '保存图像');
os=[pathname filename];
m=512;
n=512;
l=zeros(m,n);
l(1)=key;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
%二值化的时候需要注意,此处的临界值是0,而不是0.5
key=0;
for i=1:m*n
if (l(i)>=key)
l(i)=0;
else
l(i)=1;
end
% waitbar((i/(m*n)),h);
end
l=~l;
% imwrite(l,'image/wm.bmp');
%进度条
h= waitbar(0,'程序处理中,请耐心等待。。。');
for i=1:100, % computation here %
waitbar(i/100);
end
close(h) ;
imwrite(l,os);
% handles.figure;
subplot(1,1,1),imshow(l),title('混沌图像');
% test=imread(os);
% figure,imshow(test,[]);
clear;
clc;
% key=0.98
%key为解密密钥
%os原始图像的路径
[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入需要解密的图像');
os=[pathname filename];
ozl=imread(os);
% figure,imshow(ozl,[]);
%%%%%%%%%%%%%设置混沌初始值
prompt={'混沌初始值 '};
title='初值';
lines=1;
def={'98'};
mya=inputdlg(prompt,title,lines,def,'on');
key11=['0.',mya{1}];
key=str2num(key11);
%%%%%%%%%%%%设置混沌初始值
%计算原始图像的大小
[m n]=size(ozl);
%l=zeros(m,n);
l=linspace(0,0,m*n);
l(1)=key;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
% for i=1:m*n
% if (l(i)>=0)
% l(i)=1;
% else
% l(i)=0;
% end
% end
% l=~l;
% subplot(2,2,2),imshow(l),title('混沌图像');
[lsort,lindex]=sort(l);
%ozl =original zhi luan 表示置乱后的原始图像
% ozl=zeros(m,n);
% for i=1:m*n
% ozl(i)=o(lindex(i));
% end
% ozl=reshape(ozl,m,n);
%%oo =original fu yuan
ofy=zeros(m,n);
for i=1:m*n
ofy(lindex(i))=ozl(i);
end
h= waitbar(0,'程序处理中,请耐心等待。。。');
for i=1:100, % computation here %
waitbar(i/100)
end
close(h) ;
subplot(1,2,1),imshow(ozl,[]);
%,title('需要解密的图像');
set(gca,'Title',text('String','需要解密的图像'))
subplot(1,2,2),imshow(ofy,[]);
%,title('解密后图像');
set(gca,'Title',text('String','解密后图像'))
% [filename pathname]=uiputfile({'*.bmp';'*.tiff';'*.tif'}, '保存加密后图像');
% os=[pathname filename];
% imwrite(ozl,os);
% subplot(1,3,3),imshow(ofy,[]),title('复原图像');
clear;
clc;
%key为加密密钥
%os原始图像的路径
[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入需要加密的图像');
os=[pathname filename];
[filename pathname]=uiputfile({'*.bmp';'*.tiff';'*.tif'}, '保存加密后的图像');
ozls=[pathname filename];
% key=0.98;
%%%%%%%%%%%%读入混沌初始值
prompt={'混沌初始值 '};
title='初值';
lines=1;
def={'98'};
mya=inputdlg(prompt,title,lines,def,'on');
key11=['0.',mya{1}];
key=str2num(key11);
%%%%%%%%%%%%
o=imread(os);
% figure,imshow(o);
%计算原始图像的大小
[m n]=size(o);
%l=zeros(m,n);
l=linspace(0,0,m*n);
l(1)=key;
for i=2:m*n
l(i)=1-2*l(i-1)*l(i-1);
end
% %对生成的混沌序列进行排序
% [lsort lindex]=sort(l);
% t=linspace(0,0,m*n);
% t(1)=0.98;
% for i=1:m*n
% t(i+1)=1-2*t(i)*t(i);
% end
% for i=1:m*n
% if (l(i)>=0)
% l(i)=1;
% else
% l(i)=0;
% end
% end
% l=~l;
% subplot(2,2,2),imshow(l),title('混沌图像');
[lsort,lindex]=sort(l);
%ozl =original zhi luan 表示置乱后的原始图像
ozl=zeros(m,n);
for i=1:m*n
ozl(i)=o(lindex(i));
end
% ozl=reshape(ozl,m,n);
%%oo =original fu yuan
% ofy=zeros(m,n);
% for i=1:m*n
% ofy(lindex(i))=ozl(i);
% end
% h= waitbar(0,'程序处理中,请耐心等待。。。');
% for i=1:100, % computation here %
% waitbar(i/100)
% end
% close(h) ;
%首先保存需要加密的图像
ozl=uint8(ozl);
ozl=double(ozl);
imwrite(ozl,ozls);
subplot(1,2,1)
imshow(o)
% title('原始图像')
set(gca,'Title',text('String','原始图像'))
subplot(1,2,2),imshow(ozl,[]);
set(gca,'Title',text('String','加密后图像'))
% title('加密后图像');
% [filename pathname]=uiputfile({'*.bmp';'*.tiff';'*.tif'}, '保存加密后图像');
% os=[pathname filename];
% % [filename pathname]=uiputfile({'*.bmp';'*.tiff';'*.tif'}, '保存图像');
% % os=[pathname filename];
% imwrite(ozl,os);
% subplot(1,3,3),imshow(ofy,[]),title('复原图像');
% [filename pathname]=uiputfile({'*.bmp';'*.tiff';'*.tif'}, '保存加密后的图像');
% os=[pathname filename];
% %进度条
% % h= waitbar(0,'程序处理中,请耐心等待。。。');
% % for i=1:100, % computation here %
% % waitbar(i/100);
% % end
% % close(h) ;
% ozl=uint8(ozl);
% imwrite(ozl,os);
% figure,imshow(ozl,[]);
% test=imread(os);
% figure,imshow(test,[]);
分享到:
相关推荐
总之,这份资料深入浅出地讲解了数字水印在MATLAB环境下的混沌理论应用,以及如何在变换域中实现图像水印的嵌入与提取,对于学习和研究数字水印技术的人来说,是一份宝贵的参考资料。结合提供的MATLAB源码,读者可以...
未来,数字水印有望成为数字版权管理和信息安全领域不可或缺的技术之一。 总之,《数字水印技术:入门与进展》不仅为初学者提供了关于数字水印技术的基本概念和原理,还深入分析了其技术模型、典型算法及攻击方法,...
通过以上介绍可以看出,《数字水印学习教程》全面覆盖了数字水印技术的基本概念、关键技术以及其实现方法。对于初学者来说,这本书不仅提供了一个系统的入门指南,还提供了大量的实际案例和Matlab代码示例,有助于...
数字水印技术是版权保护和内容真实性验证的关键技术之一。在当前的信息技术快速发展时代,随着数字媒体内容的广泛分发和共享,确保数字内容的原创性、完整性和版权归属变得尤为重要。数字水印技术通过在数字媒体(如...
在IT领域,数字水印是一种重要的...总之,通过MATLAB学习和实践数字水印算法,不仅能提升技能,也能深入了解数字媒体的安全与保护。结合提供的源代码,读者可以深入研究并尝试改进这些算法,以适应不断变化的数字环境。
"添加置乱的DWT数字水印算法"指的是在DWT的基础上引入了混沌置乱策略,以提高水印的鲁棒性和安全性。 离散小波变换(DWT)是信号处理中的一个强大工具,它能将原始信号分解为不同频域的细节和粗略成分。在数字水印...
在这个资料包中,"小波变换DWT鲁棒数字水印(Arnold置乱 Logistics混沌序列)" 提到了两种关键的技术:Arnold置乱和Logistics混沌序列。 Arnold置乱是一种常用的图像混淆技术,通过一系列的坐标变换来打乱图像的...
然而,该技术也有其局限性,例如对于非常复杂的攻击(如深度学习的逆向工程)可能不够坚固,而且如果混沌序列的生成或解密过程中出现错误,可能会导致水印信息丢失或损坏。因此,实际应用中需要进一步优化和改进,以...
本资源包含各种数字水印的MATLAB源代码,是学习和研究数字水印技术的宝贵资料。MATLAB作为一款强大的科学计算环境,因其易用性和丰富的函数库,成为实现数字水印算法的理想平台。以下将详细探讨数字水印的概念、类型...
在本实验报告中,我们将深入探讨五个关键领域的信息隐藏技术,包括LSB信息隐藏、图像DCT域信息隐藏、LSB隐写分析、W-SVD数字水印以及基于混沌细胞自动机的数字水印。这些技术是信息安全和数据保护的重要组成部分,...
通过以上分析,我们可以看出,基于Matlab的数字水印技术研究是一个综合了混沌理论、小波变换和密码学等多个领域的交叉学科,对于保护数字媒体的版权和安全具有深远的影响。Matlab作为强大的研发平台,为这一领域的...
扩频水印利用了Chebyshev混沌序列具有良好的伪随机特性和抗攻击能力,适用于在图像中嵌入数字水印,增加了水印的安全性和隐蔽性。MATLAB通过其强大的算法实现能力,可以方便地模拟和验证这种水印技术的实际应用效果...
本文将深入探讨脆弱性数字水印技术的研究现状、基本原理、特征以及几种典型的算法,并通过实验对比这些算法在面对不同图像处理操作(如剪切、缩放、JPEG压缩和局部修改)时的表现,旨在为脆弱性数字水印技术的发展...
4. 扩频水印:这是一种数字水印技术,它将水印信息分散到整个图像的频谱中,提高了水印的抗攻击性和隐蔽性。扩频技术通常与无线通信中的信号传播方式类似,使得即使图像经过裁剪、压缩等操作,水印仍能被检测出来,...
综上所述,"zhiluanSVD.rar_Arnold 小波_SVD-DWT_chaotic encryption_混沌加密_置乱"这个压缩包文件可能包含了一套数字水印的MATLAB程序,利用Arnold小波进行混沌加密,并结合SVD-DWT实现数据隐藏。这种结合不仅利用...
基于超混沌的RBF神经网络图像自适应水印算法是一种旨在保护数字图像版权的技术,它结合了超混沌系统和径向基函数(Radial Basis Function, RBF)神经网络的优势,以实现水印的高效、安全和鲁棒的嵌入与检测。...
在IT领域,数字音频水印是一种重要的技术,用于在音频文件中嵌入不可见或不易察觉的信息,通常是为了版权保护...通过学习和分析这些代码,我们可以了解如何在实际工程中设计和实现音频水印系统,提高数字媒体的安全性。