C语言 拉普拉斯算子锐化图像
时间: 2023-11-23 21:59:20 浏览: 36
拉普拉斯算子可以用于锐化图像,其实现步骤如下:
1.将图像进行灰度化处理。
2.使用拉普拉斯算子进行卷积操作,得到锐化后的图像。
3.将原始图像和锐化后的图像进行比较,可以发现锐化后的图像边缘更加清晰。
下面是C语言中拉普拉斯算子的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
#define WIDTH 256
#define HEIGHT 256
int main()
{
unsigned char pSrcImg[HEIGHT][WIDTH], pDstImg[HEIGHT][WIDTH];
FILE* fp = fopen("lena.raw", "rb+");
fread(pSrcImg, sizeof(unsigned char), WIDTH*HEIGHT, fp);
fclose(fp);
int mask[3][3] = {{0, -1, 0}, {-1, 4, -1}, {0, -1, 0}}; //拉普拉斯算子
int i, j, k, s, t;
for(i=1; i<HEIGHT-1; i++)
{
for(j=1; j<WIDTH-1; j++)
{
s = 0;
for(k=-1; k<=1; k++)
{
for(t=-1; t<=1; t++)
{
s += pSrcImg[i+k][j+t] * mask[k+1][t+1];
}
}
s = abs(s); //保证锐化后的图像是正数
pDstImg[i][j] = (s>255) ? 255 : s; //大于255的像素值就设为255
}
}
fp = fopen("lena_laplacian.raw", "wb+");
fwrite(pDstImg, sizeof(unsigned char), WIDTH*HEIGHT, fp);
fclose(fp);
return 0;
}
```