Visual Studio实现C语言均值滤波算法
时间: 2023-10-02 11:07:08 浏览: 110
opencv-基于c++实现的opencv图像处理算法之图像滤波算法方框滤波.zip
以下是使用 Visual Studio 实现 C 语言均值滤波算法的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义图像大小
#define WIDTH 5
#define HEIGHT 5
// 定义均值滤波器大小
#define FILTER_SIZE 3
// 定义图像和均值滤波器
int image[WIDTH][HEIGHT] = {
{5, 8, 1, 6, 2},
{4, 9, 3, 7, 1},
{6, 2, 5, 8, 3},
{3, 7, 2, 6, 9},
{1, 4, 8, 2, 5}
};
int filter[FILTER_SIZE][FILTER_SIZE] = {
{1, 1, 1},
{1, 1, 1},
{1, 1, 1}
};
int main() {
// 定义图像和滤波后的图像
int filtered_image[WIDTH][HEIGHT];
// 对每个像素进行均值滤波
for (int x = 0; x < WIDTH; x++) {
for (int y = 0; y < HEIGHT; y++) {
// 计算均值滤波器的范围
int min_x = x - FILTER_SIZE / 2;
int max_x = x + FILTER_SIZE / 2;
int min_y = y - FILTER_SIZE / 2;
int max_y = y + FILTER_SIZE / 2;
// 计算均值滤波器内像素的平均值
int sum = 0;
int count = 0;
for (int i = min_x; i <= max_x; i++) {
for (int j = min_y; j <= max_y; j++) {
if (i >= 0 && i < WIDTH && j >= 0 && j < HEIGHT) {
sum += image[i][j];
count++;
}
}
}
filtered_image[x][y] = sum / count;
}
}
// 输出图像和滤波后的图像
printf("Original Image:\n");
for (int x = 0; x < WIDTH; x++) {
for (int y = 0; y < HEIGHT; y++) {
printf("%d ", image[x][y]);
}
printf("\n");
}
printf("\nFiltered Image:\n");
for (int x = 0; x < WIDTH; x++) {
for (int y = 0; y < HEIGHT; y++) {
printf("%d ", filtered_image[x][y]);
}
printf("\n");
}
return 0;
}
```
这个示例代码实现了一个 5x5 的图像的均值滤波,滤波器大小为 3x3。你可以将代码复制到 Visual Studio 中并编译运行。
阅读全文