对图像进行中值滤波的python代码
时间: 2023-12-04 22:03:37 浏览: 32
以下是使用OpenCV库实现中值滤波的Python代码:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 进行中值滤波
median = cv2.medianBlur(img, 5)
# 显示原始图像和中值滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Median Filtered Image', median)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,`cv2.imread`函数用于读取图像,`cv2.medianBlur`函数用于进行中值滤波,其中第二个参数表示滤波器的大小。最后,使用`cv2.imshow`函数将原始图像和中值滤波后的图像显示出来。
相关问题
中值滤波python代码
这是一个使用Python实现中值滤波的代码示例:
```python
import cv2
import numpy as np
def median_filter(img, kernel_size):
# 边缘填充
padding = (kernel_size - 1) // 2
padded_img = cv2.copyMakeBorder(img, padding, padding, padding, padding, cv2.BORDER_REPLICATE)
# 中值滤波
output_img = np.zeros(img.shape, np.uint8)
for i in range(padding, img.shape[0]+padding):
for j in range(padding, img.shape[1]+padding):
output_img[i-padding][j-padding] = np.median(padded_img[i-padding:i+padding+1, j-padding:j+padding+1])
return output_img
# 载入图像并显示
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('Original Image', img)
# 中值滤波并显示
filtered_img = median_filter(img, 5)
cv2.imshow('Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该函数接受两个参数——输入图像和卷积核的大小,返回一个经过中值滤波处理后的图像。在函数内部,首先对输入图像进行边缘填充,然后对每个像素点及其周围的像素计算中值,并将结果保存到输出图像中。最后,返回输出图像。
注意,为了使代码更易读,这里使用了OpenCV库完成了一些边界填充和图像显示的操作,但这并不影响中值滤波本身的实现。
自适应中值滤波python代码
以下是自适应中值滤波的Python代码:
```python
import numpy as np
from skimage.morphology import square
from skimage.filters import median
def adaptive_median_filter(img, max_window_size):
img_out = np.zeros_like(img)
img_pad = np.pad(img, max_window_size, mode='symmetric')
for i in range(img.shape[0]):
for j in range(img.shape[1]):
window_size = 3
while window_size <= max_window_size:
window = img_pad[i:i+window_size, j:j+window_size]
median_val = np.median(window)
min_val = np.min(window)
max_val = np.max(window)
if min_val < median_val < max_val:
img_out[i, j] = median_val
break
else:
window_size += 2
if window_size > max_window_size:
img_out[i, j] = median(img_pad[i:i+3, j:j+3], selem=square(3))
break
return img_out
```
其中,`adaptive_median_filter`函数接受两个参数:`img`表示输入的图像,`max_window_size`表示最大的窗口大小。该函数返回经过自适应中值滤波后的图像。