OpenCV傅立叶正逆变换和频谱处理的例子
- Opencv中的范例中只给出了傅立叶正变换的生成频谱图像的例子,没有给出逆变换和频谱处理的例子,由于最近工作中要用到,就研究了一下用法,理论是几年前在大学学的,现在忘得差不多了,只是简单的回顾了下,所以理论方面就不多论述了,直接看代码。
C/C++
int M = getOptimalDFTSize( img.rows );
int N = getOptimalDFTSize( img.cols );
Mat padded;
copyMakeBorder(img, padded, 0, M - img.rows, 0, N - img.cols, BORDER_CONSTANT, Scalar::all(0));
Mat planes[2] = {Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F)};
Mat ImgDFT;
merge(planes, 2, ImgDFT);
dft(ImgDFT, ImgDFT);
ImgDFT = ImgDFT(Rect(0, 0, ImgDFT.cols & -2, ImgDFT.rows & -2)