首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高斯滤波

高斯滤波

作者头像
渔父歌
发布2019-04-21 15:52:42
8840
发布2019-04-21 15:52:42
举报
文章被收录于专栏:数据结构笔记数据结构笔记

高斯滤波和均值滤波的原理一样,在均值滤波中所有的像素点的权重都一样,而在高斯滤波中则是越靠近中心的像素点权重远大,权重的分配由二维高斯公式生成的矩阵决定,矩阵的阶和扫描的窗口大小一致。

关于二维高斯公式这里不再赘述,不了解的可以看看这篇文章:高斯函数的详细分析,这里就只给出一个二维高斯分布的产生函数了:

//生成高斯核
double* make_kernel(int size, double sigma) {
    if (size % 2 == 0) {
        cout << "size必须为奇数" << endl;
        return NULL;
    }

    double* kernel = new double[size * size];
    double d_sigma_2 = 2 * sigma * sigma;
    double c = 1 / (3.141592654 * d_sigma_2);
    double sum = 0;

    for (int i = 0; i < size; i++) {
        for (int k = 0; k < size; k++) {
            double x = i - int(size / 2);
            double y = k - int(size / 2);

            kernel[i*size+k] = exp(-(x * x + y * y) / d_sigma_2) * c;
            sum += kernel[i*size + k];
        }
    }

    for (int i = 0; i < size*size; i++) {
        kernel[i] = kernel[i] / sum;
    }
    return kernel;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档