利用DSP实现图像的二维傅里叶变换FFT2d、IFFT以及全逆滤波、维纳滤波

来源:互联网 发布:单品商城 源码 编辑:程序博客网 时间:2024/05/19 22:59

1、简介

      在CCS5.5从硬盘读入.dat数据格式的单张图像http://blog.csdn.net/luokh327/article/details/49617041中说明了怎么使用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、结果展示


原  图


扩展图


频谱中心化


退化


总体流程变化图


0 0