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

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

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

原  图

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

扩展图

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

频谱中心化

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

退化

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

总体流程变化图


你可能感兴趣的:(fft,dsp,DM6467,图像处理二维傅里叶变换C语言,频率滤波)