高斯滤波(GaussianFilter)原理及C++实现


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM