均值滤波的卷积实现过程和中值滤波的卷积过程和高斯滤波的卷积过程的区别,并写出三者的关键代码
时间: 2024-05-08 19:18:30 浏览: 10
均值滤波的卷积实现过程是将每个像素点周围的像素点的灰度值取平均作为该像素点的新灰度值。关键代码如下:
```python
def mean_filter(img, kernel_size):
pad_size = kernel_size // 2
padded_img = np.pad(img, pad_size, mode='edge')
filtered_img = np.zeros_like(img)
kernel = np.ones((kernel_size, kernel_size)) / kernel_size**2
for i in range(img.shape[0]):
for j in range(img.shape[1]):
filtered_img[i, j] = np.sum(padded_img[i:i+kernel_size, j:j+kernel_size] * kernel)
return filtered_img
```
中值滤波的卷积过程则是将每个像素点周围的像素点的灰度值排序,取中位数作为该像素点的新灰度值。关键代码如下:
```python
def median_filter(img, kernel_size):
pad_size = kernel_size // 2
padded_img = np.pad(img, pad_size, mode='edge')
filtered_img = np.zeros_like(img)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
filtered_img[i, j] = np.median(padded_img[i:i+kernel_size, j:j+kernel_size])
return filtered_img
```
高斯滤波的卷积过程是将每个像素点周围的像素点的灰度值按照高斯分布加权平均,以此作为该像素点的新灰度值。关键代码如下:
```python
def gaussian_filter(img, kernel_size, sigma):
pad_size = kernel_size // 2
padded_img = np.pad(img, pad_size, mode='edge')
filtered_img = np.zeros_like(img)
x, y = np.meshgrid(np.arange(-pad_size, pad_size+1), np.arange(-pad_size, pad_size+1))
kernel = np.exp(-(x**2 + y**2) / (2*sigma**2))
kernel /= kernel.sum()
for i in range(img.shape[0]):
for j in range(img.shape[1]):
filtered_img[i, j] = np.sum(padded_img[i:i+kernel_size, j:j+kernel_size] * kernel)
return filtered_img
```