日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab图片快速傅里叶变换,图像傅里叶变换(快速傅里叶变换FFT) | 学步园

發(fā)布時間:2023/12/20 循环神经网络 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab图片快速傅里叶变换,图像傅里叶变换(快速傅里叶变换FFT) | 学步园 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#include "Image_FFT.h"

/*

中心化,根據(jù)傅里葉性質(zhì)的平移性質(zhì)

*/

void FFT_Shift(double * src,int size_w,int size_h){

for(int j=0;j

for(int i=0;i

if((i+j)%2)

src[j*size_w+i]=-src[j*size_w+i];

}

}

/*

圖像快速傅里葉變換,圖像大小為2的N次冪

*/

void ImageFFT(IplImage * src,Complex * dst){

//FFT_Shift(src, src);

if(src->depth!=IPL_DEPTH_8U)

exit(0);

int width=src->width;

int height=src->height;

double *image_data=(double*)malloc(sizeof(double)*width*height);

for(int j=0;j

for(int i=0;i

image_data[j*width+i]=GETPIX(src, j, i);

}

FFT_Shift(image_data,width, height);//圖像中心化

FFT2D(image_data, dst, width, height);

free(image_data);

}

/*

將幅度值伸縮到0到255,用于頻譜顯示

*/

void Nomalsize(double *src,double *dst,int size_w,int size_h){

double max=0.0,min=DBL_MAX;

for(int i=0;i

max=src[i]>max?src[i]:max;

min=src[i]

}

double step=255.0/(max-min);

//printf("%d",test);

//printf("max:%lf min:%lf\n",max,min);

for(int i=0;i

dst[i]=(src[i]-min)*step;

dst[i]*=45.9*log((double)(1+dst[i]));

}

}

/*

獲得頻譜

*/

void getAmplitudespectrum(Complex * src,int size_w,int size_h,IplImage *dst){

double *despe=(double *)malloc(sizeof(double)*size_w*size_h);

if(despe==NULL)

exit(0);

double real=0.0;

double imagin=0.0;

for(int j=0;j

for(int i=0;i

real=src[j*size_w+i].real;

imagin=src[j*size_w+i].imagin;

despe[j*size_w+i]=sqrt(real*real+imagin*imagin);

}

Nomalsize(despe, despe, size_w, size_h);

for(int j=0;j

for(int i=0;i

cvSetReal2D(dst, j, i, despe[j*size_w+i]);

}

free(despe);

}

/*

圖像傅里葉反變換

*/

void ImageIFFT(Complex *src,IplImage *dst,int size_w,int size_h){

Complex *temp_c=(Complex*)malloc(sizeof(Complex)*size_w*size_h);

if(temp_c==NULL)

exit(0);

for(int i=0;i

Copy_Complex(&src[i],&temp_c[i]);

Complex *temp=(Complex*)malloc(sizeof(Complex)*size_w*size_h);

if(temp==NULL)

exit(0);

double *temp_d=(double *)malloc(sizeof(double)*size_w*size_h);

if(temp_d==NULL)

exit(0);

IFFT2D(temp_c,temp,size_w,size_h);

for(int j=0;j

for(int i=0;i

temp_d[j*size_w+i]=temp[j*size_w+i].real;

}

FFT_Shift(temp_d, size_w, size_h);

for(int j=0;j

for(int i=0;i

cvSetReal2D(dst, j, i, temp_d[j*size_w+i]);

}

free(temp);

free(temp_c);

free(temp_d);

}

總結(jié)

以上是生活随笔為你收集整理的matlab图片快速傅里叶变换,图像傅里叶变换(快速傅里叶变换FFT) | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。