码迷,mamicode.com
首页 > 其他好文 > 详细

高斯滤波 边界优化处理

时间:2018-08-31 19:27:15      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:优化   ==   continue   效果   sharp   value   csharp   mat   clone   

接上一篇高斯滤波,后来测试发现,与其扩充边界(费力气)处理,不如直接把之设为0(效果好):

List<Point> pointL = new List<Point>();
        private void myGaussFilter123(short[,] data)
        {
            int w_Data = data.GetLength(0);
            int h_Data = data.GetLength(1);
            double[,] arr = gaussFilter(3, 1.5);
            for (int i = 2; i < w_Data - 1; i++)
            {
                for (int j = 2; j < h_Data - 1; j++)
                {
                    bool judgeBool = false;
                    for (int a = i - 1; a <= i + 1; a++)
                    {
                        for (int b = j - 1; b <= j + 1; b++)
                        {
                            if (Math.Abs(a - i) == 1 || Math.Abs(b - j) == 1)
                            {
                                if (data[a, b] == 0)
                                {
                                    judgeBool = true;
                                    break;
                                }
                            }
                        }
                        if (judgeBool)
                        {
                            break;
                        }
                    }
                    if (judgeBool)
                    {
                        if (data[i, j] > 0)
                        {
                            short[,] shortTmp = (short[,])data.Clone();
                            pointL.Add(new Point(i,j));
                            //data[i, j] = edgeBianTong(shortTmp, new Point(i, j), arr);
                        }
                        continue;
                    }
                    double tmpValue = 0;
                    for (int x = 0; x < 3; x++)
                    {
                        for (int y = 0; y < 3; y++)
                        {
                            tmpValue += data[i + 1 - x, j + 1 - y] * arr[x, y];//高斯滤波矩阵是对称的

                        }
                    }
                    data[i, j] = (short)tmpValue;
                }
            }

            foreach (Point point in pointL)
            {
                data[point.X, point.Y] = 0;
            }
        }

 

高斯滤波 边界优化处理

标签:优化   ==   continue   效果   sharp   value   csharp   mat   clone   

原文地址:https://www.cnblogs.com/gaara-zhang/p/9567309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!