对图像进行中值滤波的python代码
时间: 2023-12-04 18:04:02 浏览: 118
可以使用OpenCV库来实现中值滤波,以下是示例代码:
import cv2
img = cv2.imread("image.jpg", 0) # 读取灰度图片
median = cv2.medianBlur(img, 5) # 进行中值滤波,5表示核大小
cv2.imshow("Original Image", img)
cv2.imshow("Median Filtered Image", median)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关问题
中值滤波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和OpenCV库创建一个基本的中值滤波函数,并应用于图像处理的一个简单示例:
```python
import cv2
import numpy as np
def median_filter(image, kernel_size=3):
"""
中值滤波函数,接收一个图像和可选的滤波核大小(默认3x3)
:param image: 输入的灰度图像,numpy数组
:param kernel_size: 滤波核的大小,奇数
:return: 进行了中值滤波的新图像
"""
# 确保输入的是灰度图像
if len(image.shape) == 3 and image.shape[2] != 1:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 使用cv2.medianBlur应用中值滤波
filtered_image = cv2.medianBlur(image, kernel_size)
return filtered_image
# 加载噪声图像
noisy_image = cv2.imread('noisy_image.jpg', cv2.IMREAD_GRAYSCALE)
# 调用中值滤波函数并显示结果
filtered_image = median_filter(noisy_image)
cv2.imshow("Original Image", noisy_image)
cv2.imshow("Filtered Image", filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
阅读全文