2014年7月

图像处理中经常用到快速傅里叶变换(FFT),使用Matlab命令fftfft2很容易实现快速傅里叶变换,由于Matlab/C++混合编程接口性能太差,实际项目中使用C++实现具有更高的性能。

网上有不少关于快速傅里叶变换的C++实现方式,要么实验结果和Matlab运算结果不一样(我们通常使用Matlab做实验,验证算法可行性),要么算法不完整,却少逆变换或者频率对齐函数(fftshift)。本文程序实现了所有程序,包括正变换、逆变换,以及频率对齐函数。

1、正变换(FFT
void ImgFFT2D(unsigned char* imgBuf, int width, int height,unsigned char *imgBufOut,ComplexNumber *m_pFFTBuf)
形参解释
(1)unsigned char* imgBuf:图像输入矩阵,二维转成一维后显示;
(2)int width:图像宽度;
(3)int height:图像高度;
(4)unsigned char *imgBufOut:傅里叶变换后频谱图像输出;
(5)ComplexNumber *m_pFFTBuf:傅里叶变换后系数;
ComplexNumber:复数类型

struct ComplexNumber
{
    float imag;  //虚部
    float real;  //实部
};

通常图像在傅里叶域处理就是对傅里叶变换系数进行处理,再进行逆变换得到处理后的结果。

- 阅读剩余部分 -

PostgreSQL是一款在Linux环境下应用十分广泛的轻量级关系型数据库,大家都听说过MySQL,却对PostgreSQL鲜有耳闻,它其实在性能、应用领域上和MySQL不相上下。网上关于Windows环境下C/C++访问PostgreSQL数据库的资料很少,文本分析了C/C++访问PostgreSQL数据库的过程。

Windows环境C/C++访问PostgreSQL主要有两种方式:利用Qt封装的数据库访问组件、利用PostgreSQL的API函数。使用Qt平台访问PostgreSQL的局限性很大,一旦脱离了访问组件,数据库就无法操作。使用数据库自带的API函数访问数据库具有较好的性能,但是API函数操作、理解比较难,网上相关资料少时需要阅读API文档。

1、环境配置
(1)文本使用的IDE是VS2010,我们需要配置包含目录(include)、库目录(lib)、链接器输入附加依赖(libpq.lib);
QQ截图20140715172437.jpg
QQ截图20140715172612.jpg

(2)工程目录下需要加入4个dll文件(libeay32.dlllibintl.dlllibpq.dllssleay32.dll),这些文件都能在PostgreSQL安装目录下找到;
(3)工程cpp文件中加入头文件#include <libpq-fe.h>libpq-fe.h头文件包含了API接口函数声明及注释,下面介绍的函数在libpq-fe.h中都能找到。

- 阅读剩余部分 -