c_sobel.c

来自「基于VPM642开发板的sobel边缘检测程序」· C语言 代码 · 共 24 行

C
24
字号
void C_sobel
(const unsigned char indata[], int width,  int height, unsigned char outdata[])
{
    int  i,j,a,b,c;
  //int scale=4;
  
  for (i=1;i<height-1;i++) {
    for (j=1;j<width-1;j++) {
      a = abs((indata[(i-1)*width+(j+1)]+2*indata[i*width+(j+1)]+indata[(i+1)*width+(j+1)])-
	          (indata[(i-1)*width+(j-1)]+2*indata[i*width+(j-1)]+indata[(i+1)*width+(j-1)]));
      b = abs((indata[(i+1)*width+(j-1)]+2*indata[(i+1)*width+j]+indata[(i+1)*width+(j+1)])-
	          (indata[(i-1)*width+(j-1)]+2*indata[(i-1)*width+j]+indata[(i-1)*width+(j+1)]));
	  
//	  c = (int) sqrt(a*a+b*b);
	  c = a+b;
      //c /= scale;

      if (c>255) c=255;
	  outdata[i*width+j] = c;
	}
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?