ubuntu环境下用c语言编写均值滤波算法
时间: 2024-01-30 17:03:33 浏览: 88
下面是一个在 Ubuntu 环境下使用 C 语言编写的均值滤波算法的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define WIDTH 640 // 图像宽度
#define HEIGHT 480 // 图像高度
#define WINDOW_SIZE 3 // 窗口大小
unsigned char input_image[WIDTH * HEIGHT]; // 输入图像
unsigned char output_image[WIDTH * HEIGHT]; // 输出图像
int main()
{
int i, j, x, y, sum, count;
// 读取输入图像
FILE *in_file = fopen("input.raw", "rb");
fread(input_image, sizeof(unsigned char), WIDTH * HEIGHT, in_file);
fclose(in_file);
// 对每个像素应用均值滤波算法
for (i = 0; i < HEIGHT; i++)
{
for (j = 0; j < WIDTH; j++)
{
sum = 0;
count = 0;
// 计算窗口内像素的平均值
for (y = i - WINDOW_SIZE / 2; y <= i + WINDOW_SIZE / 2; y++)
{
for (x = j - WINDOW_SIZE / 2; x <= j + WINDOW_SIZE / 2; x++)
{
if (x >= 0 && x < WIDTH && y >= 0 && y < HEIGHT)
{
sum += input_image[y * WIDTH + x];
count++;
}
}
}
// 将平均值作为输出像素值
output_image[i * WIDTH + j] = (unsigned char)(sum / count);
}
}
// 将输出图像保存到文件中
FILE *out_file = fopen("output.raw", "wb");
fwrite(output_image, sizeof(unsigned char), WIDTH * HEIGHT, out_file);
fclose(out_file);
return 0;
}
```
在这个示例中,我们首先定义了输入图像和输出图像的数组。然后,我们从文件中读取输入图像,并对每个像素应用均值滤波算法。最后,我们将输出图像保存到文件中。
在实际使用中,您需要将示例代码中的 `input.raw` 和 `output.raw` 替换为您实际使用的输入图像和输出图像的文件名。
阅读全文