资源简介
图像傅里叶变换简单代码实现,对应blog:http://blog.csdn.net/u011630458/article/details/52503647

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
Mat initFFT2(Mat &src){
Mat out = Mat::zeros(cvSize(src.cols src.rows) CV_32FC1);
int i j;
for(i=0;i float *ptr1 = out.ptr(i);
uchar *ptr2 = src.ptr(i);
for(j=0;j ptr1[j] = ptr2[j];
}
}
for(i=0;i float *ptr1 = out.ptr(i);
for(j=0;j ptr1[j] = ptr1[j] * pow(-1i+j);
}
}
return out;
}
void myshow(Mat &src Mat &initMat Mat &dst Mat &dst2){
imshow(“src“ src);
Mat tmp;
initMat.convertTo(tmp CV_8UC1);
imshow(“initMat“ tmp);
dst.convertTo(dst CV_8UC1);
imshow(“dst“ dst);
dst2.convertTo(dst2 CV_8UC1);
imshow(“dst2“ dst2);
}
void FFT2(Mat &TD Mat &FD){
// 循环变量
int i j m n;
int width = TD.cols;
int height = TD.rows;
Mat tmpFd = Mat::zeros(cvSize(width height) CV_32FC2);
double _2Pi = 2 * 3.1415926;
double angle;
//灰度
for(i=0;i float *ptr1 = tmpFd.ptr(i);
for(j=0;j for(m=0;m float *ptr2 = TD.ptr(m);
for(n=0;n angle = _2Pi * ((double)i*m / width + (double)j*n/height);
ptr1[j*2] += ptr2[n] * cos(angle);
ptr1[j*2+1] += ptr2[n] * sin(angle);
}
}
}
printf(“i:%d\n“ i);
}
FD = tmpFd;
}
void myMod(Mat &src Mat &dst){
int i j;
double normmax min=0;
float data;
Mat tmpMat = Mat::zeros(src.size() CV_32FC1);
for(i=0;i for(j=0;j norm = src.at(i j*2) * src.at(i j*2)
+ src.at(i j*2+1) * src.at(i j*2+1);
norm = sqrt(norm);
if(norm!=0){
norm = log(1+abs(norm));
if(min==0){
min = norm;
}
}else{
norm = 0;
}
tmpMat.at(i j) = (float)norm;
if(norm>max){
max = norm;
}
if(norm min = norm;
}
}
}
for(i=0;i for(j=0;j norm = (tmpMat.at(i j)-min)*255/(max-min);
if(norm>255){
norm = 255;
}else if(norm<0){
norm = 0;
}
tmpMat.at(ij) = norm;
}
}
dst = tmpMat;
}
void IFFT2(Mat &src Mat &dst){
// 循环变量
int i j m n;
int width = src.cols;
int height = src.rows;
Mat tmpFd = Mat::zeros(cvSize(width height) CV_32FC1);
double _2Pi = 2 * 3.1415926;
double angle;
double norm;
for(i=0;i for(j=0;j for(m=0;m for(n=0;n angle = _2Pi * ((double)i*m / width + (double)j*n/height);
tmpFd.at(ij) += src.at(width-m(height - n)*2) * cos(angle)
- src.at(width-m (height-n)*2+1) * sin(angle);
}
}
tmpFd.at(i j) = tmpFd.at(i j) / width / height;
}
printf(“i:%d\n“ i);
}
dst = tmpFd;
}
int main(int argc char* argv[]){
Mat sr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 24576 2016-09-06 10:20 2_test\.1.cpp.swp
文件 3287 2016-09-06 10:19 2_test\1.cpp
文件 17462 2016-09-06 10:20 2_test\lena.bmp
文件 66616 1997-01-07 10:40 2_test\lena2.BMP
文件 299 2016-09-05 17:08 2_test\Makefile
文件 231216 2016-09-06 10:20 2_test\myBin
文件 172235 2016-09-05 17:08 2_test\tmp - 副本.jpg
文件 4393 2016-09-06 09:22 2_test\tmp.jpg
目录 0 2016-09-06 11:20 2_test
----------- --------- ---------- ----- ----
520084 9
- 上一篇:车牌定位之字符分割
- 下一篇:Seam Carving 智能缩放代码
相关资源
- 遥感图像几何校正模型探讨
- 图像的小波包分解
- 图像二维小波变换的实现源代码
- 图像二值化
- [免费]图像识别c 源码
- 三维重建(旋转)由已知对应图像点
- jcrop v0.9.12
- 分数阶傅里叶变换不同阶数下的应用
- 冈萨雷斯 数字图像处理 源代码(m文
- qt图像处理
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- Delphi实现图像拖动,无延时。
- 二维傅里叶变换函数的使用
- 很好的一个小波变换图像压缩程序
- 血液图像处理—细胞识别
- 三维地形的仿真显示实现了对地图的
- DICOM图像读取以及窗宽,窗位调整
- 图像缩放(MFC)有详细的实现过程
- 基于Gabor滤波器的图像纹理特征提取
- 图像的小波变换/图像的融合、复原、
- VC数字图像处理课程设计
- 图像描述代码下载(里面是有代码的
- 利用小波变换对图像进行分解与重构
- Macromedia Fireworks V8.0 简体中文版
- jpeg图像压缩实例代码
- 图像处理作业C 源代码
- 基于纹理的图像检索源代码
- 创龙C66x平台GigE工业相机图像采集案例
- 游戏音频图像提取工具GARbro
评论
共有 条评论