利用DSP实现图像的二维傅里叶变换FFT2d、IFFT以及全逆滤波、维纳滤波
2016-04-07 11:50
423 查看
1、简介
在CCS5.5从硬盘读入.dat数据格式的单张图像/article/9016651.html中说明了怎么使用CCS5.5导入单张图像到DSP的SDRAM中,接下来将利用TM6437以及DM642两块芯片对图像进行二维快速傅里叶变换以及IFFT变换、在此基础上进行的滤波操作过程做一下记录整个工程代码下载:http://download.csdn.net/detail/luokh327/9483582。
2、二维FFT、IFFT
对二维傅里叶变换及其逆变换的原理,可以查阅资料获得。这里给出其C语言实现。
在DSP中做计算时,涉及到很多内存的动态分配,这里采用的是固定内存分配的方式,即将内存直接使用#pragma DATA_SECTION(IMG,"DDR2_VIDEO"); 的方式直接映射到SDRAM空间中。执行此操作还需要配置相应的内存连接文件.cmd
3、滤波
对2中的FFT2d变换的结果采用退化函数进行退化,然后在频率域下进行滤波操作,滤波完成后进行二维傅里叶逆变换IFFT2d(),便可以得到经过滤波的图像。
4、结果展示
原 图
扩展图
频谱中心化
退化
总体流程变化图
在CCS5.5从硬盘读入.dat数据格式的单张图像/article/9016651.html中说明了怎么使用CCS5.5导入单张图像到DSP的SDRAM中,接下来将利用TM6437以及DM642两块芯片对图像进行二维快速傅里叶变换以及IFFT变换、在此基础上进行的滤波操作过程做一下记录整个工程代码下载:http://download.csdn.net/detail/luokh327/9483582。
2、二维FFT、IFFT
对二维傅里叶变换及其逆变换的原理,可以查阅资料获得。这里给出其C语言实现。
在DSP中做计算时,涉及到很多内存的动态分配,这里采用的是固定内存分配的方式,即将内存直接使用#pragma DATA_SECTION(IMG,"DDR2_VIDEO"); 的方式直接映射到SDRAM空间中。执行此操作还需要配置相应的内存连接文件.cmd
-c -stack 0x00020000 /* Stack Size */ -heap 0x00020000 /* Heap Size */ MEMORY { VECS: o = 0x00000000 l = 0x00000080 IRAM: o = 0x00000080 l = 0x00007f80 /* 32 kBytes */ DRAM: o = 0x00010000 l = 0x00008000 /* 32 kBytes */ DDR2: o = 0x80000000 l = 0x04000000 /* 128 MBytes */ DDR2_VIDEO: o = 0x84000000 l = 0x04000000 /* 128 MBytes */ } SECTIONS { .bss > DDR2 .cinit > DDR2 .cio > DDR2 .const > DDR2 .data > DDR2 .far > DDR2 .stack > DDR2 .switch > DDR2 .sysmem > DDR2 .text > DDR2 .ddr2 > DDR2
.IMG > DDR2_VIDEO .Source > DDR2_VIDEO .Scale > DDR2_VIDEO .Out > DDR2_VIDEO .tdd > DDR2_VIDEO .fdd > DDR2_VIDEO .W > DDR2_VIDEO .X1 >DDR2_VIDEO .X2 > DDR2_VIDEO .TempT > DDR2_VIDEO .TempF > DDR2_VIDEO }
3、滤波
对2中的FFT2d变换的结果采用退化函数进行退化,然后在频率域下进行滤波操作,滤波完成后进行二维傅里叶逆变换IFFT2d(),便可以得到经过滤波的图像。
4、结果展示
原 图
扩展图
频谱中心化
退化
总体流程变化图
相关文章推荐
- ubuntu开机启动svn(添加自启动)
- html js打开一个新的页面
- DDL、DML和DCL的理解
- Mysql5.7.11解压版在windows10上的安装配置
- 第三次作业
- C#执行oracle返回游标类型的存储过程
- Css制作table细线表格
- 深入理解php底层:php生命周期
- android:ToolBar详解(手把手教程)
- 基于win32应用程序的电梯调度程序
- 土耳其网络实名5000W公民数据泄露
- PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
- zz:Android 二维码 生成和识别(附Demo源码)
- LeetCode113—Path Sum II
- 用CSS画网格线,在IE中
- Spring框架的Portlet MVC
- 个人Java学习第一天总结
- ssdb redis
- 关于iOS的强引用,弱引用及strong,retain,copy,weak,assignd的关系
- c++第3次实验—项目1:个人所得税计算器