高斯滤波(Gaussian blur)

高斯滤波法,利用高斯函数计算高斯核,利用高斯核处理图像。高斯函数在滤除高斯噪音以及模糊方面效果较好,实现该函数的核心在于高斯核的计算。高斯函数的一维形式如公式(1)所示:

                                                G(x)={\frac {1}{\sqrt {2\pi \sigma ^{2}}}}e^{-{\frac {x^{2}}{2\sigma ^{2}}}}

高斯核的计算:

   private double[,] Kernerl()
        {
            double sum = 0;
            double[,] kernel = new double[_k, _k];
            for (int i = -_halfK; i <= _halfK; i++)
            {
                for (int j = -_halfK; j <= _halfK; j++)
                {
                    //sigma控制图像的模糊程度,值越大,模糊效果越明显
                    //省略公式前的常数A,减少计算量
                    double g = Math.Exp(-((i * i + j * j) / (2 * _sigma * _sigma)));
                    kernel[i + _halfK, j + _halfK] = g;
                    sum += g;
                }
            }
            for (int i = 0; i < _k; i++)
            {
                for (int j = 0; j < _k; j++)
                {
                    kernel[i, j] /= sum;
                }
            }
            return kernel;
        }

用高斯核遍历整幅图像,从而实现模糊效果:

  private void gaussion(Bitmap bit)
        {
            _kernel = Kernerl();
            byte[,] grayData = Image2Byte(_bit);
            for (int y = _halfK; y < _h - _halfK; y++)
            {
                for (int x = _halfK; x < _w - _halfK; x++)
                {
                    int sum = 0;
                    for (int j = -_halfK; j <= _halfK; j++)
                        for (int i = -_halfK; i <= _halfK; i++)
                            sum += (int)(grayData[x + i, y + j] * _kernel[i + _halfK, j + _halfK]);
                    Color c = Color.FromArgb(sum, sum, sum);
                    bit.SetPixel(x, y, c);
                }
            }
        }

实际上高斯函数在x和y方向的滤波可分开进行,这样可降低复杂度,提高计算效率。

                                                                                           如有需要完整代码可留言。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值