高斯濾波(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