《 OpenCV 图像处理》--- 上机实验报告 2 图像的离散傅里叶变换一、实验名称: 图像的离散傅里叶变换二、实验目的: 1、进一步学习 OpenCV 的使用方法; 2、学会计算以及显示傅里叶变换后的幅度图像。三、实验内容: 1、学习有关傅立叶变换的知识; 2、计算并显示傅立叶变换后的幅度图像。四、实验原理: 对一张图像使用傅里叶变换就是将它分解成正弦和余弦两部分,也就是将图像从空间域转换到频域,这一转换的理论基础来自于以下事实:任一函数都可以表示成无数个正弦和余弦函数的和的形式。傅里叶变换就是一个用来将函数分解的工具。计算以及显示傅里叶变换后的幅度图像的步骤如下: 1、将图像延扩到最佳尺寸 2、为傅立叶变化的结果分配空间 3、进行离散傅立叶变换 4、将复数转换为幅度 5、对数尺度缩放 6、剪切和重分布幅度图象限五、实验运行环境: Windows7 操作系统, Microsoft Visual C++ 2008Express Edition 六、实验源代码: #include <> #include "opencv2/core/" #include "opencv2/imgproc/" #include "opencv2/highgui/" #include <iostream> using namespace cv; using namespace std; int main( int argc, char **argv) { const char *filename=argc>=2?argv[1]: "" ; Mat I=imread(filename,CV_LOAD_IMAGE_GRAYSCALE); if (()) return -1; Mat padded; int m=getOptimalDFTSize(); int n=getOptimalDFTSize(); copyMakeBorder(I,padded,0,m-,0,n-,BORDER_CONSTANT,Scalar::all(0)); Mat planes[]={Mat_< float >(padded),Mat::zeros((),CV_32F)}; plexI; merge(planes,plexI); plexI); plexI,planes); magnitude(planes[0],planes[1],planes[0]); Mat magI=planes[0]; magI+=Scalar::all(1); log(magI,magI); magI=magI(Rect(0,0,&-2,&-2)); int
OpenCV图像离散傅里叶变换 来自淘豆网m.daumloan.com转载请标明出处.