六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

数字水印学习之混沌学习

[复制链接]

升级  36.35%

563

主题

563

主题

563

主题

探花

Rank: 6Rank: 6

积分
1727
 楼主| 发表于 2013-1-28 19:18:24 | 显示全部楼层 |阅读模式
%%混沌置乱代码
  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,[]);
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表