【图像加密】DFT变换算法
【代码】
data = imread('imge.jfif'); % 数据——最好比卷积核的尺寸大data = im2double(data);data = rgb2gray(data); % rgb转为灰度图像subplot(1,3,1);imshow(data);title('原始图像')zidai = fft2(data); % matlab自带函数,来用对比subplot(1,3,2);imshow(real(zidai)); % 一般只要实部title('自带的fft2生成的"频域"图像');size_data = size(data);M = size_data(1); % 图(原始数据矩阵)的长N = size_data(2); % 图(原始数据矩阵)的宽% 下面是傅里叶正变换必备的一些矩阵:Wm = exp(-j*2*pi/M);Wn = exp(-j*2*pi/N); % 不同G中用不同的WEm = zeros(M);En = zeros(N); % E是辅助计算矩阵Gm = zeros(M)+Wm;Gn = zeros(N)+Wn; % G是计算时要用的矩阵F = zeros(M,N); % F是转换到频域的结果% 对Gm的计算: 循环长度为Mfprintf('二维离散傅里叶变换开始:\n');for row = 0:M-1for col = 0:M-1Em(row+1,col+1) = row * col;Gm(row+1,col+1) = Gm(row+1,col+1)^Em(row+1,col+1);endend% 对Gn的计算: 循环长度为Nfor row = 0:N-1for col = 0:N-1En(row+1,col+1) = row * col;Gn(row+1,col+1) = Gn(row+1,col+1)^En(row+1,col+1);endendF = real(Gm*data*Gn); % F = Gm*f*Gn是计算公式,一般只要实部subplot(1,3,3);imshow(F);title('手写的myfft2生成的"频域"图像');
【示例】
【代码2】
data = imread('imge.jfif'); % 数据——最好比卷积核的尺寸大data = im2double(data);data = rgb2gray(data); % rgb转为灰度图像subplot(1,3,1);imshow(data);title('原始图像')F = fft2(data);subplot(1,3,2);imshow(real(F)); % 一般画图只要实部, 作为输入时实虚都要!!title('自带的fft2生成的"频域"图像');% s = ifft2(F);% subplot(1,3,3);% imshow(s);% return;size_data = size(F);M = size_data(1); % 图(原始数据矩阵)的长N = size_data(2); % 图(原始数据矩阵)的宽% 下面是傅里叶逆变换必备的一些矩阵:Wm = exp(-j*2*pi/M);Wn = exp(-j*2*pi/N); % 不同G中用不同的WEm = zeros(M);En = zeros(N); % E是辅助计算矩阵Gm = zeros(M)+Wm;Gn = zeros(N)+Wn; % G是计算时要用的矩阵f = zeros(M,N); % F是转换到频域的结果% 对Gm的计算: 循环长度为Mfprintf('二维离散反傅里叶变换开始:\n');for row = 0:M-1for col = 0:M-1Em(row+1,col+1) = -row * col;Gm(row+1,col+1) = Gm(row+1,col+1)^Em(row+1,col+1);endendGm = Gm/M;% 对Gn的计算: 循环长度为Nfor row = 0:N-1for col = 0:N-1En(row+1,col+1) = -row * col;Gn(row+1,col+1) = Gn(row+1,col+1)^En(row+1,col+1);endendGn = Gn/N; % 注意:这个/N和上面的/M都是算完G之后才除以的!因为上面计算的时候是幂项变化!f = real(Gm*F*Gn); % f = Gm*F*Gn是计算公式,一般只要实部subplot(1,3,3);imshow(f);title('手写的myidft2生成的"原始"图像');error = sum(sum((real(f)-real(data)).^2));if error < 10^(-10)fprintf('反变换后与原图一致!\n');elsefprintf('不一致!\n');end
【示例】
【图像加密】DFT变换算法相关推荐
- 阿诺德图像加密c语言,基于Arnold变换的数字图像加密算法
目前常用的图像置乱方法有Arnold变换.幻方变换.Tangram算法.Conway游戏.Gray码变换等.Arnold变换算法简单且具有周期性,所以在图像信息隐藏方面得到了很好的应用.下面我就给大家 ...
- 阿诺德图像加密c语言,基于Arnold置乱的数字图像加密算法(二)
前文我们介绍了基于Arnold置乱的数字图像加密算法的两种图像置乱变换,今天我们介绍的是另外三种图像置乱变换:基于骑士巡游的图像置乱变换.基于Arnold变换的数字图像置乱和基于仿射变换的置乱变换. ...
- 【图像加密】基于Logistic混沌图像加密与解密Matlab代码
1 简介 当今时代,科学技术发展迅猛,网络成为人们获取成为人们获取多媒体数字信息的主要渠道,数字图像作为日常交流的主要传输媒介,更是承担着信息传递的重任.保证信息在传播过程中的安全性和完整性便成了目前 ...
- 图像加密 关于二维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 , ...
- 【图像加密】基于matlab GUI正交拉丁方置乱算法图像加解密【含Matlab源码 182期】
⛄一.正交拉丁方置乱简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为:数字水印技术和图像加密 ...
- 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】
一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...
- 图像迁移风格保存模型_CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、关键步骤配图、案例应用...
CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介.过程思路.关键步骤配图.案例应用之详细攻略 目录 图像风格迁移算法简介 图像风格迁移算法过程思路 1.VGG对比NS 图像风 ...
- Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示
Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示 第一章:霍夫变换检测圆 ① 实例演示1 ② 实例演示2 ③ 霍夫变换函数解析 第二章:Python + openc ...
- CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、过程思路、关键步骤配图、案例应用之详细攻略
CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介.过程思路.关键步骤配图.案例应用之详细攻略 目录 图像风格迁移算法简介 图像风格迁移算法过程思路 1.VGG对比NS 图像风 ...
最新文章
- 南大和中大“合体”拯救手残党:基于GAN的PI-REC重构网络,“老婆”画作有救了 | 技术头条...
- 调查显示:手机单芯片处理器作用日显重要
- javascript笔记——cookie解析
- BFPTR算法详解+实现+复杂度证明
- python如何不跳行打印_python怎么不换行打印
- Unity Application Block 3月12 发布的版本
- python︱微服务Sanic制作一个简易本地restful API
- opencv看图像同导致 python_OpenCV-Python速查:从载入图片到人脸识别
- conda install 报错PackagesNotFoundError: 以及和合理使用源的策略
- X-Scan使用教程
- ECharts官网 标准地图实现
- 老毛子固件相关内容!
- DSP2812入门3——硬件设计
- Flutter 判断网络可用性
- 程序员颈椎疼调整办法
- javascript中获取非行间样式的方法
- Android如何隐藏底部虚拟按键
- Android开发之黑科技安装APP无启动图标
- cesium颜色值赋值
- 《上古5》置业 周详诀巧风向标