原文:高斯濾波(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; }