DSP

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

2019-07-13 10:18发布

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、结果展示
原  图
扩展图
频谱中心化
退化
总体流程变化图