您的位置:首页 > 其它

利用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

-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、结果展示



原 图



扩展图



频谱中心化



退化



总体流程变化图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: