Sobel边缘检测推荐博文
Sobel边缘检测算法 - oayx - 博客园www.cnblogs.com
sobel检测算子
Sobel检测算子
首先参考我之前的文章把图像转成灰度二维数组 C# Sobel边缘检测代码public static byte[,] sf_Sobel(byte[,] sMat)//计算梯度幅值和方向 边缘检测
{
//Gx 0度边缘
// -1 0 +1
// -2 0 +2
// -1 0 +1
//Gy 90度边缘
// +1 +2 +1
// 0 0 0
// -1 -2 -1
int mH = sMat.GetLength(0);
int mW = sMat.GetLength(1);
byte[,] Mat = new byte[mH, mW];
//G=System.Math.Sqrt(Gx*Gx+Gy*Gy)
//O = System.Math.Atan(Gy / Gx);
int Gx, Gy;
for(int y=1;y<mH-1;y++)
{
for(int x=1;x<mW-1;x++)
{
Gx = -sMat[y - 1, x + 1];
Gx += sMat[y - 1, x]*-2;
Gx += -sMat[y - 1, x - 1];
Gx += sMat[y + 1, x + 1];
Gx += sMat[y + 1, x]*2;
Gx += sMat[y + 1, x - 1];
Gy = -sMat[y + 1, x - 1];
Gy += sMat[y, x - 1] * -2;
Gy += -sMat[y - 1, x - 1];
Gy += sMat[y - 1, x + 1];
Gy += sMat[y, x + 1] * 2;
Gy += sMat[y + 1, x + 1];
Mat[y, x] = (byte)(System.Math.Sqrt(Gx*Gx+Gy*Gy)/4);
//Mat[y, x] = (byte) (System.Math.Abs( System.Math.Atan(Gx==0?65535:Gy/Gx)*162.4));
}
}
return Mat;
}
Sobel算法边缘计算