码迷,mamicode.com
首页 > 其他好文 > 详细

Opencv中的dft()和idft()示例

时间:2021-06-05 18:25:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:运行   ima   实例   ane   convert   阵列   bsp   结果   com   

傅里叶变换的公式,大家脑部,本实例是先将一副图像做傅里叶变换,再对傅里叶阵列做逆变换,代码如下:

 

#include <iostream>
#include<opencv2/opencv.hpp>

using namespace cv;
using namespace std;

void dftshift(Mat& ds)
{
    int cx=ds.cols/2;//图像的中心点x坐标
    int cy=ds.rows/2;//图像的中心点y坐标
    Mat q0=ds(Rect(0,0,cx,cy));//左上
    Mat q1=ds(Rect(cx,0,cx,cy));//右上
    Mat q2=ds(Rect(0,cy,cx,cy));//左下
    Mat q3=ds(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);
}

void myimshow(const Mat& complexImg)
{
    Mat mag;
    //对复数图像计算幅值
    Mat planes[2];
    split(complexImg,planes);
    magnitude(planes[0],planes[1],mag);
    //对幅值去对数log
    Mat mag_log;
    mag +=Scalar::all(1);
    cv::log(mag,mag_log);
    //对幅值图像做归一化处理
    Mat mag_norm;
    cv::normalize(mag_log,mag_norm,0,1,CV_MINMAX);
    imshow("dft magnitud",mag_norm);
}
void myimshow2(const Mat& complexImg)
{
    Mat mag;
    //对复数图像计算幅值
    Mat planes[2];
    split(complexImg,planes);
    magnitude(planes[0],planes[1],mag);
    mag /=mag.rows*mag.cols;
    imshow("inverce dft magnitud",mag);
}
int main()
{
    //1.读入灰度图像,不要读入彩色图像
    //  Mat img=imread("D:/Qt/MyImage/baboon.jpg",0);
    Mat img=Mat::zeros(300,300,CV_32F);//定义输入图像的实部300×300的0矩阵,
    //单通道。也可以从外部读入一灰度图像。
    //下面一行语句,在图像中央6×6Rect区域赋值为1
    img(Rect(img.cols/2-3,img.rows/2-3,6,6))=Scalar::all(1);

    imshow("original image",img);
    //2.将单通道图像转换成双通道图像
    Mat img2;
    img.convertTo(img2,CV_32FC2);
    //3.调用dft函数实现傅里叶变换
    Mat img_dft;
    dft(img,img_dft,DFT_COMPLEX_OUTPUT);
    //4.显示傅里叶频谱图
    dftshift(img_dft);//傅里叶普的中心化
    myimshow(img_dft);
    //5.调用idft()函数,执行逆傅里叶变换
    Mat iimg;
    idft(img_dft,iimg);
    myimshow2(iimg);
    waitKey();
    return 0;
}

运行结果如下,左图是原图像,中间是频谱图,右边是经逆傅里叶变换得到复原图像:

 

技术图片

 

Opencv中的dft()和idft()示例

标签:运行   ima   实例   ane   convert   阵列   bsp   结果   com   

原文地址:https://www.cnblogs.com/phoenixdsg/p/14852452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!