高斯模糊参数怎么调_图像编程

(97) 2024-06-16 12:01:01

生成结果:

高斯模糊参数怎么调_图像编程 (https://mushiming.com/)  第1张高斯模糊参数怎么调_图像编程 (https://mushiming.com/)  第2张

代码如下:

   private void creategaos_Click(object sender, EventArgs e)
        {

            //生成二维高斯滤波系数//     
            int nWidowSize = 3;
           // double nSigma = 0.4;
            double nSigma = 1.0;
           // double nSigma = 1.4;
            //  double* pdKernal_2 = new double[nWidowSize*nWidowSize]; //定义二维高斯核数组   
            double[] pdKernal_2 = new double[3 * 3];
            double dSum_2 = 0.0;                                   //求和,进行归一化         
            ///二维高斯函数公式       
                                    x*x+y*y                        ///   
                              -1*--------------                ///   
                    1             2*nSigma*nSigma                ///   
              ---------------- e                                   ///   
              2*pi*nSigma*nSigma                                     ///   
            ///   
            int nCenter = (nWidowSize) / 2;
            for (int i = 0; i < nWidowSize; i++)
            {

                for (int j = 0; j < nWidowSize; j++)
                {

                    int nDis_x = i - nCenter;
                    int nDis_y = j - nCenter;
                    double temp= (nDis_x * nDis_x + nDis_y * nDis_y);
                    double 指数 = Math.Exp(-(1 / 2.0) * temp / (nSigma * nSigma));
                    pdKernal_2[i + j * nWidowSize] = 指数 / (2 * 3. * nSigma * nSigma);
                    dSum_2 += pdKernal_2[i + j * nWidowSize];
                }
            }
            for (int i = 0; i < nWidowSize; i++)
            {

                for (int j = 0; j < nWidowSize; j++)                 //进行归一化   
                {

                    pdKernal_2[i + j * nWidowSize] /= dSum_2;             
                }
            }

        }

我们常用的高斯模板是(左),对比我们放大100的程序生成结果(右):

高斯模糊参数怎么调_图像编程 (https://mushiming.com/)  第3张高斯模糊参数怎么调_图像编程 (https://mushiming.com/)  第4张

我想,用右边的gaos生成操作像素,应该也是可以的,试一试?

对一个像素buffer[i*w+h]操作如下:

 int n0 = (j * w + i);
                    gaosbuffer[n0] = (byte)((7*buffer[n0 - w - 1] + 12 * buffer[n0 - w] +7* buffer[n0 - w + 1] +
                                            12 * buffer[n0 - 1] + 20 * buffer[n0] + 12 * buffer[n0 + 1] +
                                            7*buffer[n0 + w - 1] + 12 * buffer[n0 + w] + 7*buffer[n0 + w + 1]) / 100);

 

THE END

发表回复