写一个C语言的sobel算子代码
时间: 2023-04-10 14:03:43 浏览: 98
以下是一个简单的C语言Sobel算子代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define WIDTH 640
#define HEIGHT 480
int main()
{
int i, j, x, y, sum_x, sum_y;
int Gx[3][3] = {{-1, 0, 1}, {-2, 0, 2}, {-1, 0, 1}};
int Gy[3][3] = {{-1, -2, -1}, {0, 0, 0}, {1, 2, 1}};
int image[HEIGHT][WIDTH] = {0}; // 假设已经读入了一张灰度图像
for (i = 1; i < HEIGHT - 1; i++) {
for (j = 1; j < WIDTH - 1; j++) {
sum_x = sum_y = 0;
for (x = -1; x <= 1; x++) {
for (y = -1; y <= 1; y++) {
sum_x += image[i + x][j + y] * Gx[x + 1][y + 1];
sum_y += image[i + x][j + y] * Gy[x + 1][y + 1];
}
}
image[i][j] = (int)sqrt(sum_x * sum_x + sum_y * sum_y);
}
}
// 输出结果
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
printf("%d ", image[i][j]);
}
printf("\n");
}
return 0;
}
```