采用3*3模板对图像进行平滑滤波,其中滤波过程中图像没有边界补零。并给出每一行代码的功能注释!!!
时间: 2024-05-04 08:18:39 浏览: 319
图像平滑滤波
假设原始图像为 $image$,平滑后的图像为 $smoothed\_image$,采用的 3x3 模板为
$$
\begin{bmatrix}
1 & 1 & 1 \\
1 & 1 & 1 \\
1 & 1 & 1
\end{bmatrix}
$$
实现代码如下:
```python
import numpy as np
# 获取图像的宽度和高度
height, width = image.shape[:2]
# 创建一个和原始图像相同大小的零矩阵
smoothed_image = np.zeros_like(image)
# 对于每一个像素点
for i in range(1, height-1):
for j in range(1, width-1):
# 取出当前像素点周围的 3x3 矩阵
matrix = image[i-1:i+2, j-1:j+2]
# 对矩阵中的所有像素值求平均值,并将平均值赋值给新图像中对应的像素点
smoothed_image[i, j] = np.mean(matrix)
```
代码注释如下:
1. 首先导入必要的库。
2. 获取图像的宽度和高度。
3. 创建一个和原始图像相同大小的零矩阵,用于存放平滑后的图像。
4. 对于每一个像素点,采用双重循环遍历整个图像,其中 `i` 和 `j` 分别表示像素点的行和列。
5. 取出当前像素点周围的 3x3 矩阵。
6. 对矩阵中的所有像素值求平均值,并将平均值赋值给新图像中对应的像素点。
7. 最后返回平滑后的图像。
阅读全文