python图像加噪声的实现示例

 更新时间:2023年08月14日 11:21:30   作者:winycg  
图像加噪声就是其中一种常见的处理方式,噪声可以帮助提高图像的真实性和复杂性,使得处理后的图像更加接近真实的场景,本文主要介绍了python图像加噪声的实现示例,感兴趣的可以了解一下

加上雨点噪声

import cv2
import numpy as np
def get_noise(img, value=10):
    '''
    #生成噪声图像
    >>> 输入: img图像
        value= 大小控制雨滴的多少 
    >>> 返回图像大小的模糊噪声图像
    '''
    noise = np.random.uniform(0, 256, img.shape[0:2])
    # 控制噪声水平,取浮点数,只保留最大的一部分作为噪声
    v = value * 0.01
    noise[np.where(noise < (256 - v))] = 0
    # 噪声做初次模糊
    k = np.array([[0, 0.1, 0],
                  [0.1, 8, 0.1],
                  [0, 0.1, 0]])
    noise = cv2.filter2D(noise, -1, k)
    # 可以输出噪声看看
    '''cv2.imshow('img',noise)
    cv2.waitKey()
    cv2.destroyWindow('img')'''
    return noise
def rain_blur(noise, length=10, angle=0,w=1):
    '''
    将噪声加上运动模糊,模仿雨滴
    >>>输入
    noise:输入噪声图,shape = img.shape[0:2]
    length: 对角矩阵大小,表示雨滴的长度
    angle: 倾斜的角度,逆时针为正
    w:      雨滴大小
    >>>输出带模糊的噪声
    '''
    #这里由于对角阵自带45度的倾斜,逆时针为正,所以加了-45度的误差,保证开始为正
    trans = cv2.getRotationMatrix2D((length/2, length/2), angle-45, 1-length/100.0)  
    dig = np.diag(np.ones(length))   #生成对焦矩阵
    k = cv2.warpAffine(dig, trans, (length, length))  #生成模糊核
    k = cv2.GaussianBlur(k,(w,w),0)    #高斯模糊这个旋转后的对角核,使得雨有宽度
    #k = k / length                         #是否归一化
    blurred = cv2.filter2D(noise, -1, k)    #用刚刚得到的旋转后的核,进行滤波
    #转换到0-255区间
    cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)
    blurred = np.array(blurred, dtype=np.uint8)
    return blurred
def alpha_rain(rain,img,beta = 0.8):
    #输入雨滴噪声和图像
    #beta = 0.8   #results weight
    #显示下雨效果
    #expand dimensin
    #将二维雨噪声扩张为三维单通道
    #并与图像合成在一起形成带有alpha通道的4通道图像
    rain = np.expand_dims(rain,2)
    rain_effect = np.concatenate((img,rain),axis=2)  #add alpha channel
    rain_result = img.copy()    #拷贝一个掩膜
    rain = np.array(rain,dtype=np.float32)     #数据类型变为浮点数,后面要叠加,防止数组越界要用32位
    rain_result[:,:,0]= rain_result[:,:,0] * (255-rain[:,:,0])/255.0 + beta*rain[:,:,0]
    rain_result[:,:,1] = rain_result[:,:,1] * (255-rain[:,:,0])/255 + beta*rain[:,:,0] 
    rain_result[:,:,2] = rain_result[:,:,2] * (255-rain[:,:,0])/255 + beta*rain[:,:,0]
    #对每个通道先保留雨滴噪声图对应的黑色(透明)部分,再叠加白色的雨滴噪声部分(有比例因子)
    cv2.imwrite('rain_result.png', np.uint8(rain_result))
img = cv2.imread('cv.png')
noise = get_noise(img,value=500)
rain = rain_blur(noise,length=50,angle=-30,w=3)
alpha_rain(rain,img,beta=0.6)

加上光斑噪声

利用一张光斑的图像加在原始图像上:

import numpy as np
import cv2
from PIL import Image
image1 = cv2.imread('cub1.jpg')
image2 = cv2.imread('ban.jpg')
height = image1.shape[0]
width = image1.shape[1]
image2 = cv2.resize(image2, (width, height), interpolation = cv2.INTER_LINEAR)
image = (image1 + image2) // 2
cv2.imwrite('cv.png', np.uint8(image))

 到此这篇关于python图像加噪声的实现示例的文章就介绍到这了,更多相关python图像加噪声内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pycharm 代码自动补全的实现方法(图文)

    pycharm 代码自动补全的实现方法(图文)

    这篇文章主要介绍了pycharm 代码自动补全的实现方法(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python生成随机数、随机字符、随机字符串的方法示例

    python生成随机数、随机字符、随机字符串的方法示例

    这篇文章主要介绍了python生成随机数、随机字符、随机字符串的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详解如何利用Pytest Cache Fixture实现测试结果缓存

    详解如何利用Pytest Cache Fixture实现测试结果缓存

    这篇文章主要为大家详细介绍了如何利用Pytest Cache Fixture实现测试结果缓存,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • 详解python的字典及相关操作

    详解python的字典及相关操作

    本文主要介绍了python的字典及相关操作,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 使用python处理题库表格并转化为word形式的实现

    使用python处理题库表格并转化为word形式的实现

    这篇文章主要介绍了使用python处理题库表格并转化为word形式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python 查看list中是否含有某元素的方法

    Python 查看list中是否含有某元素的方法

    今天小编就为大家分享一篇Python 查看list中是否含有某元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • pandas.DataFrame删除/选取含有特定数值的行或列实例

    pandas.DataFrame删除/选取含有特定数值的行或列实例

    今天小编就为大家分享一篇pandas.DataFrame删除/选取含有特定数值的行或列实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • GitHub上值得推荐的8个python 项目

    GitHub上值得推荐的8个python 项目

    GitHub 无疑是代码托管领域的先行者,Python 作为一种通用编程语言,已经被千千万万的开发人员用来构建各种有意思或有用的项目。以下我们会介绍一些使用 Python 构建的GitHub上优秀的项目。
    2020-10-10
  • 浅谈python数据结构之动态规划

    浅谈python数据结构之动态规划

    这篇文章主要介绍了浅谈python数据结构之动态规划,可能很多小伙伴会觉得这个词很陌生,觉得这是一种很复杂的思想,学习起来很困难,其实并不是这样,动态规划所讲述的知识与动态与规划并无太大关联,需要的朋友可以参考下
    2023-07-07
  • 一文带你吃透Python中的os和sys模块

    一文带你吃透Python中的os和sys模块

    os 模块是 Python中的一个内置模块,也是 Python中整理文件和目录最为常用的模块。sys 模块主要负责与 Python 解释器进行交互,该模块提供了一系列用于控制 Python 运行时环境的不同部分(函数和变量等)。本文主要来聊聊这两个模块的使用,希望对大家有所帮助
    2023-02-02

最新评论