• python 给图片添加噪声


    1. import numpy as np
    2. import cv2
    3. import matplotlib.pyplot as plt
    4. import skimage
    5. from skimage import io
    6. import random
    7. def addGaussNoise(origin,var=0.0005):#添加高斯噪声函数
    8. var = random.uniform(0.0001, 0.04)
    9. noisy = skimage.util.random_noise(origin, mode='gaussian', var=var)
    10. return noisy
    11. def addSaltNoise(origin,var=0.01):#添加椒盐噪声函数
    12. var = random.uniform(0.01, 0.2)
    13. noisy = skimage.util.random_noise(origin, mode='s&p', amount=var)
    14. return noisy
    15. def addSpeckleNoise(origin,var=0.001):#添加乘法噪声函数
    16. var = random.uniform(0.0001, 0.04)
    17. noisy = skimage.util.random_noise(origin, mode='speckle', var=var)
    18. return noisy
    19. # img = cv2.imread('img1.png',cv2.IMREAD_GRAYSCALE)
    20. # img = plt.imread('img1.png')
    21. img=io.imread('img1.png')
    22. fig=plt.figure(figsize=(10, 50))
    23. img = addGaussNoise(img)
    24. img1 = addSaltNoise(img)
    25. img2 = addSpeckleNoise(img)
    26. plt.subplot(2,2,1),plt.imshow(img,'gray'),plt.title('original')
    27. plt.subplot(2,2,2),plt.imshow(img,'gray'),plt.title('img_add_gaussin')
    28. plt.subplot(2,2,3),plt.imshow(img1,'gray'),plt.title('SaltNoise')
    29. plt.subplot(2,2,4),plt.imshow(img2,'gray'),plt.title('SpeckleNoise')
    30. plt.show()

    1. import numpy as np
    2. import random
    3. import cv2
    4. def sp_noise(image,prob):
    5. '''
    6. 添加椒盐噪声
    7. 盐粒噪声salt : 是指灰度值突变成白色点的噪声(白色--->255)
    8. 胡椒噪声pepper:是指灰度值突变成黑色点的噪声(黑色--->0)
    9. prob:盐粒噪声
    10. prob:胡椒噪声
    11. '''
    12. output = np.zeros(image.shape,np.uint8)
    13. thres = 1 - prob
    14. for i in range(image.shape[0]):
    15. for j in range(image.shape[1]):
    16. #生成随机数
    17. rdn = random.random()
    18. if rdn < prob:
    19. output[i][j] = 0
    20. elif rdn > thres:
    21. output[i][j] = 255
    22. else:
    23. output[i][j] = image[i][j]
    24. return output
    25. def gasuss_noise(image, mean=0, var=0.01):
    26. '''
    27. 添加高斯噪声
    28. mean : 均值
    29. var : 方差
    30. '''
    31. image = np.array(image/255, dtype=float)
    32. ##生成均值,方差的类似Image矩阵
    33. noise = np.random.normal(mean, var ** 0.5, image.shape)
    34. out = image + noise
    35. if out.min() < 0:
    36. low_clip = -1.
    37. else:
    38. low_clip = 0.
    39. out = np.clip(out, low_clip, 1.0)
    40. out = np.uint8(out*255)
    41. return out
    42. img=cv2.imread('img1.png')
    43. out1=sp_noise(img,0.05)
    44. out2=gasuss_noise(img)
    45. cv2.imshow('img',np.hstack((img,out1,out2)))
    46. cv2.imwrite('image.png',np.hstack((img,out1,out2)))
    47. cv2.waitKey()

     

     

     

  • 相关阅读:
    Python 测试框架 Pytest 的入门
    安装Centos7
    javaee thymeleaf简介
    Dockerfile指令与Docker-compose容器编排-搭建docker私有仓库
    全国降雨侵蚀力因子R值计算/土壤侵蚀计算
    价值工程杂志价值工程杂志社价值工程编辑部2022年第23期目录
    手麻系统全套源码 术前、术中、术后全过程管理
    [安洵杯 2019]easy_web
    [附源码]JAVA毕业设计客户台账管理(系统+LW)
    springboot+校园超市管理系统的设计与实现 毕业设计 -附源码201521
  • 原文地址:https://blog.csdn.net/qq_40107571/article/details/127973039