目前我们常用的图像置乱加密基本上都是基于二维变换的,要达到较好的置乱效果,往往需要进行多次操作,置乱效率不高。为达到较高的置乱效率,提出了一种新的三维Arnold变换和混沌序列相结合的图像加密算法。

一、三维Arnold变换

假设某一图像像素的坐标位置为xy∈{1,2,…,N},则二维Arnold变换可以定义为:

其中x’,y’表示经过Amold变换后的图像像素的坐标位置,此变换称为二维Arnold变换。可将二维Arnold变换扩展成三维Arnold变换,其形式如下:

三维Arnold逆变换为:

其中矩阵c是矩阵A的逆矩阵,

则对应的矩阵A的逆矩阵为:

三维Arnold变换与二维Arnold变换一样,也具有周期性,即经过若干次变换后,图像又变换为原始图像。表1列出了不同阶数Ⅳ下二维与三维Arnold变换的周期丁。从表中可以看出,相同阶数N的情况下,三维Arnold变换的周期总体上要大于二维Arnold变换的周期。

二、Logistic混沌映射

Logistic映射是由数学生态学家May于1976年提出的,其表达式为:

当3.56994< &L≤4时,Logistic映射将处于混沌状态。 三、图像加解密算法 本文利用三维Arnold变换和Logistic混沌序列分别对图像进行置乱和异或操作,从而得到加密图像,解密与加密过程相反口具体的加解密步骤如下: (1)选取一幅mxn的灰度图像作为待加密图像,获得其二维矩阵数据P,并对图像进行如下转换:找到一数值N,使得mXn=N3或mXn≈N3。若mXn的值不等于任何数值的三次方,则取最小N值,使得N3>mxn,然后按矩阵的行(列)顺序读取尸的元素并依次放至三维零矩阵B中,矩阵B的大小为N×N×N;

(2)将处理后的三维矩阵B的像素位置坐标(x,y,z)代人方程(2)中,其中x,y,z∈(1,2,…,N),做若干次三维Arnold变换得到置乱后的三维图像信息矩阵Pl;

(3)选取合适的μ,x0代人方程(7)中,迭代次得到一组混沌序列xi,其中k>N3,i=l,2,…,k;

(4)从步骤(3)中获得的混沌序列yj中随机从某一值开始依次取像素组成混沌序列j=l,2,…N3并对Yj作相应处理,具体处理如式(8)所示:

(5)将步骤(4)中得到的混沌序列Yi的元素顺次放入三维矩阵D中,D的大小为NxNxN,然后将D与步骤(3)中得到的置乱后的图像信息矩阵P1进行逐位异或运算操作,得到加密后的图像信息矩阵P2;

(6)将步骤(5)中得到的加密图像矩阵P2中的元素依次放入二维零矩阵P3中,P3的大小为mxnl,其中mXn1≈N3。若没有这样的整数nl,使得mXn1=N3,则取最小的值nl,使得mXn1>N3,而二维矩阵P3中仍

有mXn1=N3个零元素,本算法中取数值为0~255的整数混沌序列进行填充,再将信息矩阵按照图像标准格式保存,得到最终的加密图像;

解密算法就是加密算法的逆运算。

四、仿真分析

1、实验结果

为验证本算法,本文选取p=3.767835609687648,x0-0.565786987640228作为Logistic映射的加密密钥,对图像进行三维Amold变换的次数为4次,按照加密步骤对图1所示图像“stone’’进行加密,图像大小为492 x 738,重构后的三维图像矩阵大小为72×72 x72,加密后的图像大小为492×7590其中图l为原始图像,图2为加密图像,图3为解密图像。

由图1和图3中可以看出解密图像与原始图像一致,说明解密无误,而通过图2则说明了最终加密后的图像很好地隐藏了原始图像中的数据,说明加密成功。

2、置乱度分析

图像的置乱程度可从主观和客观两个方面进行分析。主观方面,一般认为置乱程度比较好的图像是通过人眼不能观察到原图像所包含的信息,下面运用二维Arnold变换和本算法中的三维Arnold变换对图像“grass”进行不同次数的置乱并进行对比,图像大小为216×216,“grass”原始图像如图4所示,实验结果如图5所示。

由图5可以看出,二维Arnold变换要想达到较好的置乱效果,需进行多次反复置乱操作,而本算法中运用的三维Arnold变换经过一次置乱就达到了较好的置乱效果,置乱效率较高。

3、统计直方图

图6(a)显示的是图l所示原始图像“stone”对应的直方图,图6(b)所示为图2所示最终加密图像的直方图,图6(c)所示为图3所示解密图像的直方图,由图6(b)可以看出,加密后的图像直方图分布均匀,将原始图像信息特征完全隐藏起来,说明加密性能良好,而原始图像和解密图像的直方图完全一致,说明解密成功。

4、像素相关性分析

经实验测试,图1所示原始图像“stone”和其加密图像(图2)的各方向相邻像素间的相关系数如表2所示,由表2可知,加密后的图像相邻像素的相关性大大降低,可有效抵抗攻击者的统计分析。

小知识之Arnold变换

Arnold变换是一种常用的图像置乱技术,Arnold变换的定义如下:

对任意N*N矩阵(所有元素都相同的矩阵除外),设i,j为矩阵元素原始下标,经过Arnold变换后新下标为i',j',且满足下式:

i'=(i+j)mod N

j'=(i+2j)mod N

i,j:0,1,.........N-1

Arnold变换具有周期性,即经过若干次变换后,矩阵回到最初状态,且周期T与N的大小有关。理论基础没找到,但可以用程序来进行计算,可以设i,j从一个点出发,不断使用以上变换,再次回到这个起点时,经历的变换次数就是周期。

阿诺德图像加密c语言,三维arnold变换图像加密算法相关推荐

  1. 阿诺德图像加密c语言,基于Arnold变换的数字图像加密算法

    目前常用的图像置乱方法有Arnold变换.幻方变换.Tangram算法.Conway游戏.Gray码变换等.Arnold变换算法简单且具有周期性,所以在图像信息隐藏方面得到了很好的应用.下面我就给大家 ...

  2. 图像加密 关于二维Arnold变换,广义Arnold变换和更一般形式变换的练习(Matlab实现)

    索引 1. 将其离散化,应用到图像变换,假设图像大小为 N × N N\times N N×N, ( m n ) = ( 1 1 1 2 ) ( i j ) m o d N , i , j = 0 , ...

  3. 【图像加密】 Logistic混沌+Arnold置乱图像加密解密【含Matlab源码 1281期】

    ⛄一.混沌图像加密与解密简介 混沌系统图像加密解密理论部分参考链接: 基于混沌系统的图像加密算法设计与应用 ⛄二.Arnold置乱图像加密解密简介 0 前言 网络已经成为我们传递信息的主要平台, 为我 ...

  4. 阿诺德图像加密c语言,基于Arnold置乱的数字图像加密算法(二)

    前文我们介绍了基于Arnold置乱的数字图像加密算法的两种图像置乱变换,今天我们介绍的是另外三种图像置乱变换:基于骑士巡游的图像置乱变换.基于Arnold变换的数字图像置乱和基于仿射变换的置乱变换. ...

  5. 用c语言绘制数学函数图像,用c语言画数学函数图像.DOC

    用c语言画数学函数图像 时间:2007-02-13 作者:佚名 编辑:本站 点击: 2231 [评论] 符 outtextxy(CX+3,440-40*i,s); //以字符形式输出纵轴上的单位数字 ...

  6. 【图像加密】基于混沌系统的图像加密解密matlab源码含GUI

    Logistic混沌置乱,先不说有多复杂,其实很简单. Logistic函数是源于一个人口统计的动力学系统,其系统方程形式如下: X(k+1) = u * X(k) * [1 - X(k)],(k=0 ...

  7. 【图像加密】Logistic+Tent+Kent+Henon图像加密与解密【含GUI Matlab源码 1745期】

    ⛄一.混沌系统简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为:数字水印技术和图像加密技术. ...

  8. 【图像加密】行列像素置乱+DWT图像加密【含Matlab源码 675期】

    ⛄一.DWT简介 数字技术.多媒体技术和网络技术的发展,为信息的存储提供了极大的方便.随着计算机网络通信技术的深入应用,数据的交换和传输已经得到广泛的应用.因此,通过网络传输的数字产品如:图象.声音. ...

  9. rsa加密c语言源码库,RSA加密算法源代码C语言实现.doc-资源下载在线文库www.lddoc.cn...

    RSA加密算法_源代码__C语言实现.doc RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名Ro ...

  10. 【图像加密】基于matlab GUI正交拉丁方+二维Arnold置乱图像加密【含Matlab源码 813期】

    ⛄一.正交拉丁方置乱及二维Arnold置乱简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为: ...

最新文章

  1. 开源android豆瓣电影阅读器
  2. 系统架构师-基础到企业应用架构-企业应用架构
  3. shell之常用工具的使用
  4. CA周记 - 用 Visual Studio Code 做基于 .NET MAUI 跨平台移动应用开发
  5. 数据结构(二)之链表反转
  6. 【Kafka】kafka消费者参数
  7. java白皮书关键术语
  8. 查询出各个学科的前3名的同学信息的Sql
  9. Tomcat 优化和性能监测
  10. Python机器学习——概念及其物理解释
  11. Same Tree - LeetCode
  12. 考PMP真的有用吗?(含pmp资料分享)
  13. DAS、NAS、SAN、IPSAN、iSCSI-SAN及IDE、SAS、SCSI、iSCSI简介
  14. 网络安全中常见网络命令
  15. python识别火车票二维码_python实现12306查询火车票
  16. 更改vs code的界面颜色 vscode修改界面颜色及风格(中文英文界面都有) 手动设置vs code的界面背景颜色
  17. 上海市居住证积分提交材料
  18. [C语言]成绩与平均分问题:编写函数ReadScore()和Average(),输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,用函数编程统计成绩高于平均分的学生人数。
  19. 【论文导读】- Link Weight Prediction Using Supervised Learning Methods(使用监督学习方法的链路权重预测及其在Yelp网络中的应用)
  20. 微信小程序获取用户信息-头像、昵称......

热门文章

  1. vue.js 获取当前屏幕的宽度_js获取移动端屏幕高度和宽度等设备尺寸
  2. 详解网易有道AI战略,智能硬件、教育、办公三大解决方案
  3. 计算机验证菜单命令的各种特性,2017年CAD工程师认证单选题「附答案」
  4. endnote中科大版区别_文献管理软件 EndNote X9.3.1 中科大批量授权版
  5. 大华服务器装系统,clonezilla安装系统理论篇
  6. 人工智能 —— 计算智能概述
  7. 腾讯云GPU云服务器配置初体验
  8. css 如何让盒子垂直居中,css 盒子垂直居中
  9. android 缓存用什么地方,哔哩哔哩缓存在哪里 哔哩哔哩缓存文件夹位置
  10. java对接银联商务扫码支付(银联商务扫码支付文档)