python 滤除盐噪声
时间: 2023-10-12 19:16:58 浏览: 33
盐噪声是一种随机出现的亮点,通常是由于摄像机传感器的缺陷、信号干扰或其他因素引起的。在 Python 中,可以使用以下代码来滤除盐噪声:
```python
import cv2
import numpy as np
def salt_and_pepper(image, noise_percent):
"""
添加椒盐噪声
"""
height, width = image.shape[:2]
noise_num = int(height * width * noise_percent)
for i in range(noise_num):
x = np.random.randint(0, width)
y = np.random.randint(0, height)
if np.random.randint(0, 2) == 0:
image[y, x] = 0
else:
image[y, x] = 255
return image
def median_blur(image, kernel_size):
"""
中值滤波
"""
return cv2.medianBlur(image, kernel_size)
def main(image_path, noise_percent, kernel_size):
# 读入图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 添加椒盐噪声
image = salt_and_pepper(image, noise_percent)
# 中值滤波
image = median_blur(image, kernel_size)
# 显示结果
cv2.imshow("Original Image", cv2.imread(image_path))
cv2.imshow("Salt and Pepper Noise Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
image_path = "test.jpg" # 图像路径
noise_percent = 0.05 # 噪声比例
kernel_size = 3 # 滤波器大小,必须是奇数
main(image_path, noise_percent, kernel_size)
```
在这里,我们使用了 OpenCV 库来读取图像并进行中值滤波。首先,我们将图像转换为灰度图像,然后使用 `salt_and_pepper` 函数添加椒盐噪声。接下来,我们使用 `median_blur` 函数进行中值滤波处理。最后,我们可以使用 `cv2.imshow` 函数显示原始图像和处理后的图像。