opencv3.2.0图像离散傅里叶变换

源码:

##名称:离散傅里叶变换
##平台:QT5.7.1+opencv3.2.0
##日期:2017年12月13、

/**** 新建QT控制台程序****/

#include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main()
{
    //读入原始图像
   Mat srcImage = imread("/home/ttwang/Valley_logo.jpg",0);
   imshow("srcImage",srcImage);

    /****将图像扩大到合适尺寸********/
   int m = getOptimalDFTSize(srcImage.rows);
   int n = getOptimalDFTSize(srcImage.cols);
   Mat padded;
   copyMakeBorder(srcImage,padded,0,m-srcImage.rows,0,n-srcImage.cols,BORDER_CONSTANT,
                  Scalar::all(0));

   /******为傅里叶变换的结果(实部和虚部)分配存储空间******/
   Mat planes[] = {Mat_<float>(padded),Mat::zeros(padded.size(),CV_32F)};
   Mat complexI;
   merge(planes,2,complexI);

   /********进行傅里叶变换*********/
   dft(complexI,complexI);

   /*********将复数转化为幅值***********/
   split(complexI,planes);
   magnitude(planes[0],planes[1],planes[0]);
   Mat magnitudeImage = planes[0];

   /**********进行对数尺度**********/
   magnitudeImage += Scalar::all(1);
   log(magnitudeImage,magnitudeImage);

   /*******剪切和重分布幅度图象限 ******/
   magnitudeImage = magnitudeImage(Rect(0,0,magnitudeImage.cols & -2,magnitudeImage.rows & -2));
   int cx = magnitudeImage.cols / 2;
   int cy = magnitudeImage.rows /2;
   Mat q0(magnitudeImage,Rect(0,0,cx,cy));
   Mat q1(magnitudeImage,Rect(cx,0,cx,cy));
   Mat q2(magnitudeImage,Rect(0,cy,cx,cy));
   Mat q3(magnitudeImage,Rect(cx,cy,cx,cy));
   Mat tmp;
   q0.copyTo(tmp);//交换象限(左上与右下交换)
   q3.copyTo(q0);
   tmp.copyTo(q3);

   q1.copyTo(tmp);//交换象限(右上与左下交换)
   q2.copyTo(q1);
   tmp.copyTo(q2);

   /********归一化********/
   normalize(magnitudeImage,magnitudeImage,0,1,NORM_MINMAX);

   /******显示效果图******/
   imshow("magnitudeImage",magnitudeImage);

   waitKey(0);
   return 0;
}

 运行结果:                                                                    

                        

                             效果图                                                                                              原图

原文地址:https://www.cnblogs.com/ilym/p/8034856.html