用c语言写一个高斯拉普拉斯模板
时间: 2023-05-11 14:03:22 浏览: 74
以下是一个用 C 语言写的高斯拉普拉斯模板的示例代码:
```
#include <stdio.h>
int main() {
int matrix[3][3] = {{-1, -1, -1}, {-1, 8, -1}, {-1, -1, -1}};
int i, j;
printf("高斯拉普拉斯模板:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
这个程序定义了一个 3x3 的矩阵,其中中心元素为 8,其它元素为 -1,这就是一个高斯拉普拉斯模板。
相关问题
写一个c语言的拉普拉斯算子实现代码
以下是一个C语言的拉普拉斯算子实现代码:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
void laplacian(int img[ROWS][COLS], int result[ROWS][COLS]) {
int kernel[3][3] = {{0, 1, 0},
{1, -4, 1},
{0, 1, 0}};
int i, j, k, l;
int sum;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
sum = 0;
for (k = -1; k <= 1; k++) {
for (l = -1; l <= 1; l++) {
if (i + k >= 0 && i + k < ROWS && j + l >= 0 && j + l < COLS) {
sum += img[i + k][j + l] * kernel[k + 1][l + 1];
}
}
}
result[i][j] = sum;
}
}
}
int main() {
int img[ROWS][COLS] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int result[ROWS][COLS];
int i, j;
laplacian(img, result);
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码实现了一个简单的拉普拉斯算子,可以对一个3x3的图像进行卷积操作,得到一个3x3的结果矩阵。
写一个C语言,拉普拉斯算子锐化图像的代码
以下是拉普拉斯算子锐化图像的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define WIDTH 512
#define HEIGHT 512
int main()
{
FILE *fp_in, *fp_out;
unsigned char image[HEIGHT][WIDTH];
unsigned char new_image[HEIGHT][WIDTH];
int i, j, k, l;
int mask[3][3] = {{-1, -1, -1}, {-1, 8, -1}, {-1, -1, -1}};
fp_in = fopen("lena512.raw", "rb");
if (!fp_in) {
printf("Cannot open file.\n");
exit(1);
}
fread(image, sizeof(unsigned char), WIDTH * HEIGHT, fp_in);
fclose(fp_in);
for (i = 1; i < HEIGHT - 1; i++) {
for (j = 1; j < WIDTH - 1; j++) {
int sum = 0;
for (k = -1; k <= 1; k++) {
for (l = -1; l <= 1; l++) {
sum += image[i + k][j + l] * mask[k + 1][l + 1];
}
}
if (sum < 0) {
sum = 0;
} else if (sum > 255) {
sum = 255;
}
new_image[i][j] = (unsigned char)sum;
}
}
fp_out = fopen("lena512_laplacian.raw", "wb");
if (!fp_out) {
printf("Cannot open file.\n");
exit(1);
}
fwrite(new_image, sizeof(unsigned char), WIDTH * HEIGHT, fp_out);
fclose(fp_out);
return 0;
}
```
这个程序读取名为"lena512.raw"的灰度图像文件,然后对其进行拉普拉斯算子锐化处理,并将结果保存为"lena512_laplacian.raw"文件。