原文:高斯滤波(GaussianFilter)原理及C++实现
原文:图像滤波之高斯滤波介绍
/// //x,y方向联合实现获取高斯模板 // void generateGaussMask(cv::Mat& Mask,cv::Size wsize, double sigma){ Mask.create(wsize,CV_64F);//create()函数
int h = wsize.height; int w = wsize.width; int center_h = (h - 1) / 2; int center_w = (w - 1) / 2; double sum = 0.0; double x, y; for (int i = 0; i < h; ++i){ y = pow(i - center_h, 2); for (int j = 0; j < w; ++j){ x = pow(j - center_w, 2); //因为最后都要归一化的,常数部分可以不计算,也减少了运算量 double g = exp(-(x + y) / (2 * sigma*sigma)); Mask.at<double>(i, j) = g; sum += g; } } Mask = Mask / sum; }