博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码/项目合作可以联系(QQ:3249726188)
原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本次分享的是细胞神经网络在图像加密方面的应用算法,用matlab实现。(有疑问或者想交流细节的QQ:3249726188)
简述一下算法背景:之前的发表的图像处理加密系列博文,主要分享了组合混沌系统加密、分数阶超混沌系统加密,之前博文链接如下:
1 、组合混沌系统图像加密
https://blog.csdn.net/Matlab_ImagePro/article/details/136584958
2、分数阶超混沌系统图像加密
https://blog.csdn.net/Matlab_ImagePro/article/details/136588854
这次分享的是基于细胞神经网络在图像加密方面的应用,算法原理比前期分享的要复杂点。细胞神经网络是一种较典型的人工神经网络,它拥有混沌特性甚至超混沌特性,因此它的不稳定性和随机性可以用于数字图像加密。参考文献主要介绍了人工神经网络的发展过程,介绍了几种典型的人工神经网络例如Hopfield神经网络,以及细胞自动机理论。其次,对数字图象加密技术进行了介绍,具体讨论了细胞神经网络的理论基础和原理,并分析了细胞神经网络的结构、等效电路,状态方程以及混沌性的判定等。
本次算法实现,参考了文献第三章的算法(各位同学可细看附件文献相关章节,这里不对原理进行细节描述),使用细胞神经网络的超混沌特性进行图像的加密,从四路混沌序列中选取一路作为密钥,对不同的明文图像采取不同的密钥。实验结果说明本文的算法的安全性强,易于实现,能有效的免疫多种攻击手段。
简要来说,本次分享的算法就是基于CNN超混沌特性的图像加密算法。具体算法参考文献(第三章)。
映射到图像算法原理上,简要步骤主要如下(详细算法原理文献有描述,这里只是简要描述框架步骤):
加密过程:
一、读取待加密图像
二、设置细胞神经网络信号的初值,根据四维CNN系统(四阶Runge-Kutta)产生超混沌序列。
三、加密密钥选取,将明文图像各像素点的像素值异或的结果,进行模 4运算后,从所产生的4路混沌序列中选取一路混沌序列,作为加密密钥 key。
四、置换密钥的选取,置换密钥选取的依据是加密密钥,将选取加密秘钥时得到的结果进行+1或者+2 后,再在4路混沌序列中选取相对应的那一路,作为置乱密钥 key1。
五、根据置乱密钥对图像进行置乱加密(留意一下,这里是置换,只是改变了像素位置,不该变像素值)。
六、根据加密密钥对置乱图像进行加密(这里是异或操作,对像素值进行加密,改变了像素值),得到加密图像。
解密过程:
理解了怎么进行图像加密,图像解密原理就容易理解了,解密是加密的逆向过程。首先利用混沌同步,在接受者处产生一个和发送者处完全相同的四维细胞神经网络超混沌系统作为解密的密钥源,对接收到的密文图像,先进行像素值的反替代,再对像素的位置进行反置乱,最后得到解密后的明文图像。
Matlab具体效果图步骤如下:
加密部分
一、超混沌吸引子在三维模式上的表示图
二、置乱后的图像
三、加密后的图像
至此,加密过程完成。
解密部分:
一、读取已加密图像
二、对加密图像进行置乱解密
三、对步骤二图像进行像素解密
至此,加密解密过程完成。
下面对图像加密性能进行评价,呈现加密前后的直方图、像素相关性等指标值。
加密前的直方图分布:
加密后的直方图分布:
加密前的相关性分布:
加密后的相关性分布:
至此,完成图像加密解密和评价的代码仿真。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Matlab图像处理
QQ:3249726188