图像处理-离散傅里叶变换-数字图像处理第三版第四章内容
图像傅里叶变换方法有很多,可以通过空间光调制器输入图像后在通过平行光照明经过傅里叶变换透镜进行傅里叶变换,另一个方法就是利用计算机进行傅里叶变换,其中傅里叶变换有两种算法一种是DFT还有一种是FFT(快速傅里叶变换)。
首先我介绍一下图像的定义,图像是怎么去得到的呢?图像是物体与点扩散函数卷积的结果加上一个噪声项(具体想了解可以查看“傅里叶光学"-吕乃光)。
在这里我谈谈离散傅里叶变换的一些问题,以及离散傅里叶变换的MATLAB代码。首先谈谈傅里叶变换,想必大家一听到傅里叶变换整个人都不好了,傅里叶变换是做什么的呢,个人的理解就是通过无数个正交的向量去描述一个任意的曲线或者信号,最简单的理解就是我们可以通过xy直角坐标系通过一个关系建立一个二维曲线,这样我们就可以通过一个正交的向量去描述这个线上的任意一个点。
在傅里叶变换中所谓的空间频率的高频与低频分别代表什么呢?高频代表的就是图像中灰度突变速度快的地方,说白了就是看起来密集的地方就是高频,看起来平坦的地方就是低频。这是最简单的理解方式。离散傅里叶变换可以处理任意大小的图像,FFT只能处理2^n*2^n大小的图像,当图像大小不够的时候需要填补空缺的地方。
一下为DFT函数的matlab代码,
<span style="font-size:18px;">function [out_dft_image,out_ab_dft_pic]=dft(input_image,mode)
%% [out_dft_image,out_ab_dft_pic]=dft_test(input_image) this function can make dft transform
% F(u-M/2,v-N/2)<=>f(x,y)*(-1).^(x+y) or you can make dft transform like
% F(u,v)<=>f(x,y)
% input_image: had batter less than 150*150 large
% mode: if mode==1 this function is to do comfortable visable result
% else mode=~1 the result maybe make you uncomfortable
% out_dft_image: this is the complex matrix it can make the idft and
% get the surse image in spetial domain
% out_ab_dft_pic: this is the frequency spectrum picture matrix
% design by baiyinhao 2015.9.28 20:07 Email:792499178@qq.com
%
% 作 者:光电科技协会 2015.9.28 20:07 白银浩
%%空域变换到频率域
pic=double(input_image);
[u_p,v_p]=size(pic);% F(u,v)中的u,v
%f(x,y)*(-1).^(x+y) 即对原图进行一次运算
if mode==1for x=1:u_pfor y=1:v_ppic(x,y)=pic(x,y)*(-1)^(x+y);%在此处对输入的pic进行了改变 即变成f(x,y)*(-1).^(x+y) 白 添加 endend%居中傅里叶变换[x_p,y_p]=size(pic);dft_pic=zeros(u_p,v_p);flag=0;temp1=0;for u=1:u_pfor v=1:v_pfor x=1:x_pfor y=1:y_ptemp1=temp1+pic(x,y)*exp(-1j*2*pi*(u*x/u_p+v*y/v_p));endenddft_pic(u,v)=temp1;temp1=0;endflag=flag+1;sprintf('运行到了图像的第:%d 行',flag)end%输出傅里叶变换 后的实部虚部R_dft_pic=real(dft_pic);%求出傅里叶变换后的实部I_dft_pic=imag(dft_pic);%求出傅里叶变换后的虚部%傅里叶谱ab_dft_pic(u_p,v_p)=0;for u=1:u_pfor v=1:v_pab_dft_pic(u,v)=sqrt(R_dft_pic(u,v).^2+I_dft_pic(u,v).^2);endend%最后输出值 m_dft_pic=max(max(ab_dft_pic));ab_dft_pic1=ab_dft_pic/m_dft_pic*255;else%正常傅里叶变换[x_p,y_p]=size(pic);dft_pic=zeros(u_p,v_p);flag=0;temp1=0;for u=1:u_pfor v=1:v_pfor x=1:x_pfor y=1:y_ptemp1=temp1+pic(x,y)*exp(-1j*2*pi*(u*x/u_p+v*y/v_p));endenddft_pic(u,v)=temp1;temp1=0;endflag=flag+1;sprintf('运行到了图像的第:%d 行',flag)end%输出傅里叶变换 后的实部虚部 白银浩添加R_dft_pic=real(dft_pic);%求出傅里叶变换后的实部I_dft_pic=imag(dft_pic);%求出傅里叶变换后的虚部%傅里叶谱ab_dft_pic(u_p,v_p)=0;for u=1:u_pfor v=1:v_pab_dft_pic(u,v)=sqrt(R_dft_pic(u,v).^2+I_dft_pic(u,v).^2);endend%最后输出值 m_dft_pic=max(max(ab_dft_pic));ab_dft_pic1=ab_dft_pic/m_dft_pic*255;endout_dft_image=dft_pic;out_ab_dft_pic=uint8(ab_dft_pic1);end</span>
由于运行速度慢,有助于理解,如果有实际用途建议使用FFT。
2016.11.9 12:09
白银浩
E-mail:BaiYH1994@163.com
Q Q:792499178
图像处理-离散傅里叶变换-数字图像处理第三版第四章内容相关推荐
- 计算机应用基础周南岳第三版第四章教案,《计算机应用基础》(周南岳)配套电子教案第4章...
<<计算机应用基础>(周南岳)配套电子教案第4章>由会员分享,可在线阅读,更多相关<<计算机应用基础>(周南岳)配套电子教案第4章(44页珍藏版)>请在 ...
- Java 线程第三版 第四章 Thread Notification 读书笔记
一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long ti ...
- 谭浩强c程序设计试题汇编第三版 第四章解析
我是谭老的学生 但是居然他的书没有解析! 第四章节部分 暂未写完 等待后续 欢迎一起交流这本习题! 11月3日更新
- 《深入理解JAVA虚拟机》周志明 第三版 - 第四章 虚拟机性能监控、故障处理工具
4.1 概述 恰当地使用虚拟机故障处理.分析的工具可以提升我们分析数据.定位并解决问题的效率. 4.2 基础故障处理工具 JDK的bin目录中有java.exe.javac.exe这两个命令行工具,还 ...
- 算法导论第三版第十一章11.1-4
算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要堆整个数组进行初始化时不太实际的,因为该数组的规模太大 ...
- 04737 c++ 自学考试2019版 第四章课后练习 程序设计题 2
/* * 04737 c++ 自学考试2019版 第四章课后练习 * 程序设计题 2 * 需求:为第二章习题设计中的二维坐标系下的类point,重载<< >> */ //标准流 ...
- 数据结构(C语言)第二版 第四章课后答案
数据结构(C语言)第二版 第四章课后答案 1~5 B B C A B 6~10 B B C B B 11~15 A B D (C,B) C 1.选择题 (1)串是一种特殊的线性表,其特殊性体现在(B) ...
- 《计算机网络教程》(微课版 第五版)第四章 网络层与网络互连
<计算机网络教程>(微课版 第五版)第四章 网络层与网络互连 课后习题及答案 1.网络层向上提供的服务有哪两种?试比较其优缺点. 解答:面向连接的虚电路服务和无连接的数据报服务. 2.请简 ...
- 04737 c++ 自学考试2019版 第四章课后程序设计题1
/** * 04737 c++ 自学考试2019版 * 第四章程序设计题1 * 为程序4-2中的类myComplex重载乘法运算符 */ #include <iostream>//标准流 ...
最新文章
- mysql 联接结果集函数_Oracle 中函数如何返回结果集
- c++ opencv 通道转换
- linux信号检查参数相同,linux信号函数
- jenkins -ant-svn 自动化持续部署——web应用war包 ant build.xml配置
- 被400万人痛骂!在中国火了22年的“洋网红”,套路彻底失灵了?
- l298n电机驱动模块使用方法_家用柴油发电机使用方法
- SQL数据库安装-数据库的下载
- 如何为你的CSDN博客加入百度统计
- word单页(或中间几页)横向显示
- 计算机管理怎么看内存条,内存条,教您怎么查看内存条的型号
- 2G、 3G、 4G、5G的区别
- HTB-Antique
- 国内外学习游戏的网站
- 为了编程梦想,重新审视自己,开始出发。
- 微信小程序(uni-app)
- 伽罗华域(Galois Field)有限域元素生成和运算原理
- 2021年起重机司机(限桥式起重机)最新解析及起重机司机(限桥式起重机)考试试卷
- HTTPS是怎么防止劫持的
- 读书笔记:读《知道做到》学“知行合一”
- 我是如何转岗成为数据分析师?
热门文章
- 米家骑记电助力折叠自行车,看看里面的电子方案
- python pdfminer读取pdf表格_使用Python中的PDFMiner从PDF文件提取文本?
- 中国人口趋势(1990-2035)
- 【C语言】C语言从入门到精通|第1章 C语言概述—自学笔记
- 你觉得jQuery源码有哪些写的好的地方
- 西门子1214 PID/通信模板 西门子PLC 1214和多台G120西门子变频器Modbud RTU通讯
- Ubuntu 22.04 将python3.10设置为3.9部分软件不能启动
- Python调用Geopandas包矢量化txt点数据为shp数据
- Linux指令——crontab
- 2011-09-09 —— A5 —— 虚拟 GPS 串口驱动的添加以及 COM8 冲突问题