声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1599|回复: 5

[图像处理] 图像解密问题

[复制链接]
发表于 2009-2-11 10:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用混沌序列对图像加密,但加密后的图片按照加密的方法怎么解密不了那  。。。。。。。。。
我只是对图像的像素进行了替换 呀
换不回来了??????
帮忙解决下 不胜感激
回复
分享到:

使用道具 举报

发表于 2009-2-11 11:45 | 显示全部楼层

回复 楼主 55884255 的帖子

请再详细的说明你的问题,方便的话附上程序。
 楼主| 发表于 2009-2-11 15:46 | 显示全部楼层

图像解密!!!!!!!!!!!!!!!!!谢谢了

就是用matlab加密成图片,然后在载入生成的加密图片进行解密,无法得到原来的明文
我将259*256的lona.bmp进行加密,对其进行4*4分块,通过混沌序列的0,1来判断像素位置置换与否
加密程序:
[t,x]=ode45(@odel,[0 10],[0.145;0.123;0.011]);
C=x(1:701,3);
C=C/10; C=mod(C,1);
  for p=1:700;
     F3(1)=C(1);
     F3(p+1)=F3(p)+C(p+1);
end
Q3=F3(701)/700;
for c=1:700;
if C(c)>Q3
    C1(c,:)=0;
else C1(c,:)=1;
end   
C1=uint8(C1);
end
I=imread('LONA.bmp');
I=rgb2gray(I);
imshow(I);
Z=mat2cell(I,4*ones(1,64),4*ones(1,64));
for r=1:64;s=1:64;
    if C1(r,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+51,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+81,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+101,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+256,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
I=cell2mat(Z);
figure,imshow(I);
将加密后的图片保存为un.pgm

解密程序:
[t,x]=ode45(@odel,[0 10],[0.145;0.123;0.011]);
C=x(1:701,3);
C=C/10; C=mod(C,1);
  for p=1:700;
     F3(1)=C(1);
     F3(p+1)=F3(p)+C(p+1);
end
Q3=F3(701)/700;
for c=1:700;
if C(c)>Q3
    C1(c,:)=0;
else C1(c,:)=1;
end   
C1=uint8(C1);
end
I=imread('un.pgm');
imshow(I);
Z=mat2cell(I,4*ones(1,64),4*ones(1,64));
for r=1:64;s=1:64;
    if C1(r,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+51,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+81,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+101,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
for r=1:64;s=1:64;
    if C1(r+256,:)==1
    V=Z(r,s);
    Z(r,s)=Z(s,r);
    Z(s,r)=V;
    end   
end
I=cell2mat(Z);
figure,imshow(I);
发表于 2009-2-11 16:50 | 显示全部楼层

回复 板凳 55884255 的帖子

光有程序没有逻辑过程, 可能很难短时间看懂LZ的程序!
 楼主| 发表于 2009-2-11 17:37 | 显示全部楼层

解密啊555555555

我想不是主程序的问题
应该是图片格式的存储和读取问题
MATLAB输出的加密图形格式是不是变了

如果我在一个程序文件中进行加解密的话就能成功
但是在两个程序文件中就不行(即在对图片加密后输出加密图片,保存后 , 在解密程序中调用该加密图片进行解密处理就解不出来
为什么呀?????????
发表于 2009-2-11 20:31 | 显示全部楼层

回复 5楼 55884255 的帖子

可能是因为保存的时候,有些图片格式被matlab添加或者更改了内容吧。
试试bmp格式。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 21:58 , Processed in 0.087796 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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