生成结果:

机器视觉入门之路(二七,像素的操作(高斯模板3*3产生),c#)机器视觉入门之路(二七,像素的操作(高斯模板3*3产生),c#)

代码如下:

   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.1415926 * 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的程序生成结果(右):

机器视觉入门之路(二七,像素的操作(高斯模板3*3产生),c#)机器视觉入门之路(二七,像素的操作(高斯模板3*3产生),c#)

我想,用右边的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);

 

相关文章:

  • 2021-09-25
  • 2021-05-30
  • 2021-07-20
  • 2021-04-10
  • 2022-01-01
  • 2021-05-29
  • 2021-09-08
  • 2021-10-12
猜你喜欢
  • 2021-09-07
  • 2021-10-08
  • 2021-06-13
  • 2021-07-16
  • 2021-04-14
  • 2021-04-02
  • 2021-04-09
相关资源
相似解决方案