dft函数的作用是对一维或者二维浮点数数组进行正向或反向离散傅里叶变换
void dft(InputArray src,OutputArray dst,int flags =0,int nonzeroRows=0)
功能:返回给定向量尺寸的傅里叶最优尺寸大小,意思就是为了提高离散傅立叶变换的运行速度,需要扩充图像,需要扩充多少,就由这个函数计算得到。
int getOptimalDFTSize(int vecsize)
使用举例子:
//输入图像延扩到最佳的尺寸,边界用0补充
int height = getOptimalDFTSize( srcImage.rows );
int width = getOptimalDFTSize( srcImage.cols );
功能:扩充图像边界,为什么扩充?因为尺寸是2、3、5时计算速度会很快,所以要扩充
void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom,int left, int right, int borderType, const Scalar& value=Scalar() )
src :原图像.
dst :输出图像,和src有同样的类型,并且size应该是(src.cols+left+right,src.rows+top+bottom)
top 、bottom、left 、right : 这四个参数风别表示在源图像的四个方向上分别扩充多少像素,例如top=1, bottom=1, left=1, right=1 意味着在源图像的上下左右各扩充一个像素宽度的边界。
borderType – 边界类型
value – 边界值,如果borderType==BORDER_CONSTANT .
使用举例子:
//将添加的像素初始化为0.
Mat padded;
copyMakeBorder(srcImage, padded, 0, m - srcImage.rows, 0, n - srcImage.cols, BORDER_CONSTANT, Scalar::all(0));
功能:计算幅度
void magnitude(InputArray x, InputArray y, OutputArray magnitude)
x:x的坐标,实部
y:y的坐标,虚部,size和x一样
magnitude:输出图像,和x有同样的size和type
原理如下:
功能:对数组的每一个元素取自然对数
void log(InputArraysrc, OutputArray dst)
src:输入图像
dst:输出图像
原理如下:
C是一个很大的负数
功能:矩阵归一化
void normalize(InputArray src, OutputArraydst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1,InputArray mask=noArray() )
src:输入矩阵
dst:输出矩阵
alpha:归一化后的最大值,默认值1
beta:归一化后的最小值,默认值0
norm_type:归一化类型,有NORM_INF, NORM_L1, NORM_L2和NORM_MINMAX
dtype: 默认-1,负值时,输出矩阵与src同样类型,否则它和src有同样通道数,且图像深度为CV_MAT_DEPTH(dtype)
mask:掩膜,默认值noArray()
《OpenCV3编程入门》第5章-学习笔记6.3-离散傅里叶变换-dft()函数(代码示例)