博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码/项目合作可以联系(QQ:3249726188)
个人主页:https://blog.csdn.net/Matlab_ImagePro?spm=1011.2266.3001.5343
原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本次分享的是基于组合混沌映射的图像加密算法,用matlab实现。(有疑问或者想交流细节的QQ:3249726188)
简述一下算法背景:算法传统加密算法对密钥敏感,然而混沌映射对初始值和参数值敏感 ; 传统加密算法通过多轮加密来扰乱和扩散数据 , 而混沌映射通过迭代把初始区域扩散到整个相空间。传统加密是定义在有限集合,而混沌映射是定义在实数集 。
Logistic 映射和 Chen 映射都是典型的混沌映射,它们都具有初值敏感性和参数敏感性。用Logistic 映射产生的混沌序列 通过排序来改变图像中各像素点 的位置 ,达到混淆的目的 ,在此基础上,应用 Chen 混沌系统对 Logistic 加密的结果通过改变各点 的像素值再进行加密。由于混沌系统所独特的特性,使得双重加密的结果更加安全。
简要来说,本次分享的算法就是采用Logistic 映射和 Chen 映射组合混沌加密图像。算法参考文献见附件。
映射到图像算法原理上,简要步骤主要如下(详细算法原理文献有描述,这里只是简要描述框架步骤):
加密过程:
一、读取待加密图像
二、产生logistic算法序列,利用logistic算法对图像进行像素的置换(留意一下,这里是置换,只是改变了像素位置,不该变像素值)。
三、获取chen混沌序列,用chen混沌序列进行加密(这里是异或操作,对像素值进行加密,改变了像素值),得到加密图像。
解密过程:
理解了怎么进行图像加密,图像解密原理就容易理解了,解密是加密的逆向过程,具体如下:
一、读取已加密图像
二、获取chen混沌序列,用chen混沌序列进行解密操作(这里是异或操作,对像素值进行解密,恢复加密前的像素值),得到待置乱恢复图像。
三、产生logistic算法序列,利用logistic算法对解密步骤二的图像进行像素的置换(这里是置换,只是改变了像素位置,不该变像素值,恢复图像原值像素值位置,得到解密图像)。
最终对图像加密性能进行评价,呈现加密前后的直方图、像素相关性等指标值。
Matlab具体效果图步骤如下:
加密部分
一、读取待加密图像
二、产生logistic算法序列,利用logistic算法对图像进行像素的置换
三、获取chen混沌序列,用chen混沌序列进行加密
解密部分:
一、读取已加密图像
二、获取chen混沌序列,用chen混沌序列进行解密操作
三、产生logistic算法序列,利用logistic算法对解密步骤二的图像进行像素的置换
至此,加密解密过程完成。
下面对图像加密性能进行评价,呈现加密前后的直方图、像素相关性等指标值。
加密前的直方图分布:
加密后的直方图分布:
加密前的相关性分布:
加密后的相关性分布:
至此,完成图像加密解密和评价的代码仿真。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Matlab图像处理
QQ:3249726188