资源简介
图像傅里叶变换简单代码实现,对应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 智能缩放代码
相关资源
- 基于单片机的WIFI手机端显示图像控制
- 何恺明 暗原色先验图像去雾算法 导向
- 医学图像DICOM查看工具
- PyQt4多类图像显示和编辑
- dcraw图像解码文件
- 基于Contourlet变换的图像去噪源代码
- DCT图像重建
- 傅里叶特征描述子图像匹配
- 基于VTK的3D图像体绘制
- 基于BP人工神经网络的图像识别
- CameraHDR.rar
- DICOM医学图像文件格式解析与应用研究
- 光流图像配准
- 一个将图像数据保存为BMP文件的
- 串口上位机实时图像显示温度 -1.rar
- 车牌字符库素材可用于模拟车牌、模
- 主动轮廓法的算法实现
- 图像融合代码
- 从图像信息中获得摄像机内参数矩阵
- 图像的预处理灰度图、二值化、字符
- 本科毕业设计论文——基于FPGA的图像
- 位图像素转矢量算法库
- 用IDL语言读取并操作图像数据
- 3-遥感图像预处理
- 超像素分割软件可调整分割输出数目
- DSP图像处理程序
- 数字图像处理+将24位真彩色BMP图像转
- 使用DShow采集图像并预览
- OpenCV实现相位相关图像配准
- 图像加密解密算法
评论
共有 条评论