针对题目“Python实现图像随机添加椒盐噪声和高斯噪声”的完整攻略,可以分为以下步骤:
第一步:读取图像并进行预处理
在Python中,可以使用OpenCV库来读取图像,并对图像进行预处理,如调整图像大小、改变图像颜色空间等。在读取图像时,建议采用灰度图像读取方式,便于后续噪声生成和处理。示例代码如下:
import cv2
# 读取灰度图像
img = cv2.imread("test_img.jpg", 0)
第二步:随机噪声生成
Python中可以使用numpy库中的random模块来生成随机噪声。这里需要分别生成椒盐噪声和高斯噪声。其中椒盐噪声的生成方式是将图像中的某些像素点设为最大值或最小值,模拟出“盐”和“椒”的形态。高斯噪声则是在图像中添加符合高斯分布的随机噪声。示例代码如下:
import numpy as np
# 添加椒盐噪声
def add_salt_pepper_noise(image, prob):
output = np.zeros(image.shape, np.uint8)
thres = 1 - prob
for i in range(image.shape[0]):
for j in range(image.shape[1]):
rdn = np.random.random()
if rdn < prob:
output[i][j] = 0
elif rdn > thres:
output[i][j] = 255
else:
output[i][j] = image[i][j]
return output
# 添加高斯噪声
def add_gaussian_noise(image, mean=0, var=0.1):
image = np.array(image / 255, dtype=float)
noise = np.random.normal(mean, var ** 0.5, image.shape)
out = image + noise
if out.min() < 0:
low_clip = -1.
else:
low_clip = 0.
out = np.clip(out, low_clip, 1.0)
out = np.uint8(out * 255)
return out
第三步:噪声添加
将生成的噪声随机添加到原始图像中。示例代码如下:
# 随机添加椒盐噪声
img_salt_pepper = add_salt_pepper_noise(img, 0.01)
# 随机添加高斯噪声
img_gaussian = add_gaussian_noise(img)
第四步:结果对比
将添加噪声后的图像与原始图像进行对比,可以发现噪声的效果。示例代码如下:
# 显示原始图像和添加噪声后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Salt and Pepper Noise", img_salt_pepper)
cv2.imshow("Gaussian Noise", img_gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
综上所述,以上就是Python实现图像随机添加椒盐噪声和高斯噪声的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现图像随机添加椒盐噪声和高斯噪声 - Python技术站