Sobel filter kernel of large size

后端 未结 9 811
渐次进展
渐次进展 2020-12-02 08:38

I am using a sobel filter of size 3x3 to calculate the image derivative. Looking at some articles on the internet, it seems that kernels for sobel filter for size 5x5 and 7x

9条回答
  •  广开言路
    2020-12-02 09:15

    I quickly hacked an algorithm to generate a Sobel kernel of any odd size > 1, based on the examples given by @Paul R:

        public static void CreateSobelKernel(int n, ref float[][] Kx, ref float[][] Ky)
        {
            int side = n * 2 + 3;
            int halfSide = side / 2;
            for (int i = 0; i < side; i++)
            {
                int k = (i <= halfSide) ? (halfSide + i) : (side + halfSide - i - 1);
                for (int j = 0; j < side; j++)
                {
                    if (j < halfSide)
                        Kx[i][j] = Ky[j][i] = j - k;
                    else if (j > halfSide)
                        Kx[i][j] = Ky[j][i] = k - (side - j - 1);
                    else
                        Kx[i][j] = Ky[j][i] = 0;
                }
            }
        }
    

    Hope it helps.

提交回复
热议问题