帮我写一个用C语言实现的封装中值滤波函数
时间: 2024-02-12 08:07:18 浏览: 65
好的,以下是一个简单的用 C 语言实现的封装中值滤波函数的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3
void median_filter(int *img, int width, int height)
{
int i, j, k, l, n, m;
int temp[SIZE*SIZE];
for(i = 0; i < height; i++)
{
for(j = 0; j < width; j++)
{
n = 0;
for(k = i - 1; k <= i + 1; k++)
{
for(l = j - 1; l <= j + 1; l++)
{
if(k >= 0 && k < height && l >= 0 && l < width)
{
temp[n++] = *(img + k*width + l);
}
}
}
for(k = 0; k < n - 1; k++)
{
for(l = k + 1; l < n; l++)
{
if(temp[k] > temp[l])
{
m = temp[k];
temp[k] = temp[l];
temp[l] = m;
}
}
}
*(img + i*width + j) = temp[n/2];
}
}
}
int main()
{
int i, j;
int img[3][3] = {{10, 20, 30}, {40, 50, 60}, {70, 80, 90}};
printf("Original Image:\n");
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ", img[i][j]);
}
printf("\n");
}
median_filter((int *)img, 3, 3);
printf("Processed Image:\n");
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ", img[i][j]);
}
printf("\n");
}
return 0;
}
```
这个示例中,我们定义了一个名为 median_filter 的函数,它接受三个参数:一个指向输入图像数据的指针,图像的宽度和高度。函数中的代码与上一个示例中的代码非常类似,只不过我们将处理过程封装成了一个函数,使得代码更加模块化和可重用。
在示例代码中,我们使用了一个 3x3 的二维数组来表示输入图像。函数中使用指针操作访问图像数据。最后,我们在 main 函数中调用 median_filter 函数,并将处理结果输出到控制台上。
阅读全文