C++二维数组均值滤波
时间: 2024-01-06 17:25:47 浏览: 134
C++二维数组均值滤波是一种常见的图像处理算法,用于平滑图像并减少噪声。下面是一个示例代码,演示了如何实现二维数组的均值滤波:
```cpp
#include <iostream>
// 定义二维数组的大小
const int ROWS = 3;
const int COLS = 3;
// 均值滤波函数
void meanFilter(int arr[ROWS][COLS]) {
int sum = 0;
int count = 0;
// 遍历二维数组,计算每个元素周围的平均值
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
sum = 0;
count = 0;
// 计算周围元素的和
for (int m = i - 1; m <= i + 1; m++) {
for (int n = j - 1; n <= j + 1; n++) {
if (m >= 0 && m < ROWS && n >= 0 && n < COLS) {
sum += arr[m][n];
count++;
}
}
}
// 计算平均值并更新原始数组
arr[i][j] = sum / count;
}
}
}
int main() {
// 定义二维数组
int arr[ROWS][COLS] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
// 打印原始数组
std::cout << "原始数组:" << std::endl;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
// 进行均值滤波
meanFilter(arr);
// 打印滤波后的数组
std::cout << "滤波后的数组:" << std::endl;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
```
这段代码定义了一个3x3的二维数组,并实现了一个`meanFilter`函数来进行均值滤波。在`meanFilter`函数中,我们遍历二维数组的每个元素,计算其周围元素的平均值,并更新原始数组。最后,我们在`main`函数中演示了如何使用这个均值滤波函数。
阅读全文