merlinzjl

导航

二维高斯核函数

//
cv::Mat myGetGaussianKernel(int ksize, double sigma, int ktype = CV_64F)
{
    double constE = 2.718281828459045;

    cv::Mat mat(ksize, ksize, ktype);
    for (int iRow = 0; iRow < ksize; iRow++)
    {
        for (int iCol = 0; iCol < ksize; iCol++)
        {
            double val = -(pow((iCol - (ksize - 1) / 2), 2) + pow((iRow - (ksize - 1) / 2), 2));
            val = val / (2 * sigma * sigma);
            double elementVal = pow(constE, val);
            mat.at<double>(iCol, iRow) = elementVal / (2 * CV_PI * sigma * sigma);
        }
    }

    return mat;
} 

  

posted on 2022-05-19 20:05  merlinzjl  阅读(247)  评论(0编辑  收藏  举报