OpenCV 结合两个高斯滤波器构造一个滤波器
int main()
{
///读入灰度图像
Mat src=imread("D:\\Qt\\MyImage\\baboon.jpg",0);
int ny=src.rows,nx=src.cols;
cv::copyMakeBorder(src,src,0,ny,0,nx,BORDER_CONSTANT);
imshow("original image",src);
/***************傅里叶变换*************/
src.convertTo(src,CV_64FC1);//转成浮点数据类型
Mat dftDst(src.size(),CV_64FC2);//预设dft的输出结果矩阵
dft(src,dftDst,DFT_COMPLEX_OUTPUT,0);//离散傅立叶变换
dftshift(dftDst);//将傅里叶变换的结果,四象限对角互换
displayDftSpectrum(dftDst,"dftSpectrum display",false);//显示傅里叶频谱图
/***************频域滤波*************/
Mat filter(src.size(),CV_64FC2,Scalar::all(0));
makeFilter(filter,80,false);
Mat fftTemp=dftDst.mul(filter);//复数频谱图与滤波器相乘,实现频域滤波
Mat srcFiltered;
dft(fftTemp,srcFiltered,DFT_INVERSE);//逆傅里叶变换
//显示经过滤波后的图像
displayDftSpectrum(srcFiltered,"filtered image",true);//显示逆傅里叶频谱图
waitKey();
return 0;
}