-
基于openCV与MFC的超混沌图像加密软件,openCV提供图像读取、存储功能,通过MFC构建人机交互界面
-
编译环境为 Visual Studio Community 2017, 版本 15.9.8
-
OpenCV库版本 opencv-3.4.1-vc14_vc15
- 若用户想使用该项目直接编译
- 若用户想自行构建MFC项目,配置openCV,那理解代码即可
- 该项目核心代码为
Hyperchaotic_ImageEncryption/Encryption_MFC/
目录下,三个核心文件:Encryption_MFC.h
,Encryption_MFCDlg.h
,Encryption_MFCDlg.cpp
Encryption_MFC.h
包含了openCV头文件,宏定义- 诸如
#include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>
- 诸如
Encryption_MFCDlg.h
包含了对话框类中的图像数据成员变量、进度条成员变量、所有控件按钮的响应成员函数的声明及行变换的移位函数模板- 诸如
public: //原图、加密、解密图像数据 cv::Mat lena; cv::Mat encryption_lena; cv::Mat decryption_lena; CProgressCtrl EnProgress; CProgressCtrl DeProgress; //缩放窗体链表 CList<CRect, CRect&> m_listRect; //成员函数 afx_msg void DrawMat(cv::Mat & img, UINT nID); afx_msg void OnBnClickedEncrypting(); afx_msg void OnBnClickedDecrypting(); afx_msg void EncrytingMat(cv::Mat & Enimg, const double Enx_chaos[], const double Eny_chaos[]); afx_msg void DecrytingMat(cv::Mat & Deimg, const double Enx_chaos[], const double Eny_chaos[]); afx_msg void OnBnClickedSaveEncrypting(); afx_msg void OnBnClickedSaveDecrypting(); afx_msg void OnBnClickedLoadencryption2enWindow(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnBnClickedUnchangedChooseImg();
- 诸如
Encryption_MFCDlg.cpp
包含了默认的MFC初始化函数以及所有成员函数的实现、相关按钮的逻辑控制
- 该项目核心代码为
- 若用户想直接使用该软件,不想繁琐地配置openCV
- 直接将openCV的动态链接库复制到
C:\Windows\System32
目录下 - 受于GitHub文件大小限制,两个动态链接库的网盘地址为:opencv_world341.dll, opencv_world341d.dll
- 提取码:
ejgj
- 拷贝完openCV的动态链接库之后,
Hyperchaotic_ImageEncryption/x64/Debug/
与Hyperchaotic_ImageEncryption/x64/Release/
目录下有两个可执行文件,对应于Debug版和Release版,推荐使用Release版,Release代码更小,执行更快
- 直接将openCV的动态链接库复制到
-
该算法的混沌序列有一定的数学背景,主要利用混沌的伪随机、非周期及确定性
-
此处使用的是超混沌系统,相较于混沌,其拓扑更为复杂
-
结合混沌的基础上,考虑图像的空间分布,采用图像的置乱与扩散,并将置乱与扩散同时进行
-
算法简要流程为:采集图像信息与密钥一起作为超混沌迭代初值,迭代超混沌序列
-
加密时,遍历3维图像矩阵,利用超混沌序列进行行变换(置乱),异或像素值(扩散),再次列变换与异或
-
解密的过程为加密的反操作
-
此项目操作的是RGB彩色图像,可简化为二维灰度图像(灰度图像过于简单,但能较好地进行算法性能评估)
-
该项目可进行下一步拓展,通过RGB与YUV色彩空间转换原理,将视频传输的YUV数据转换成RGB数据进行加密
-
C,C++良好的跨平台兼容性可使其能够拓展至嵌入式等平台,拓展适用于实时、非实时的视频加密
总想透过你眼睛
去找寻
最深处的坚冰
没想到
最后却闯进
一整本
诗书的宁静