使用python对图像加噪声

news2024/11/24 14:08:29

加上雨点噪声

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)

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arduino ESP32 v2 使用记录:开发环境搭建

文章目录 目的开发环境搭建程序下载测试使用VS Code进行开发批量烧录固件到模块中总结 目的 在之前的文章 《使用Arduino开发ESP32&#xff08;01&#xff09;&#xff1a;开发环境搭建》 中介绍了使用Arduino开发ESP32的开发环境搭建内容&#xff0c;只不过当时的 Arduino co…

写一个函数返回参数二进制中 1 的个数(c语言三种实现方法)

&#xff08;本文旨在自己做题时的总结&#xff0c;我会给出不同的解法&#xff0c;后面如果碰到新的题目还会加入其中&#xff0c;等于是我自己的题库。 1.写一个函数返回参数二进制中 1 的个数。 比如&#xff1a; 15 0000 1111 4 个 1 方法一&#xff1a; #include…

Kubernetes 调度约束(亲和性、污点、容忍)

目录 一、Pod启动典型创建过程 二、调度流程 三、指定调度节点 1.使用nodeName字段指定调度节点 2.使用nodeSelector指定调度节点 2.1给对应的node节点添加标签 2.2修改为nodeSelector调度方式 3.通过亲和性来指定调度节点 3.1节点亲和性 3.2Pod亲和性与反亲和性 3.2…

SAP MM学习笔记18- SQVI 工具

Tr-cd SQVI 是一个SAP数据库工具。 使用这个工具&#xff0c;可以自己构建查询界面中的条件&#xff0c;查询对象&#xff0c;从而自由查询数据&#xff0c;实现标准没有的功能。 1&#xff0c;SQVI 和 SQ1&#xff0c;SQ2&#xff0c;SQ3 的不同 SQ1&#xff0c;2&#xff0…

【hello C++】智能指针

目录 一、内存泄漏 1.1 什么是内存泄漏&#xff0c;内存泄漏的危害 1.2 内存泄漏分类 1.3 如何检测内存泄漏 1.4 如何避免内存泄漏 二、智能指针的使用及原理 2.1 RAII 2.2 智能指针的原理 2.3 智能指针的发展历程 2.4 智能指针的模拟及实现 三、shared_ptr 常见的问题 3.1 线程…

10.pod资源限制和健康检查

文章目录 资源限制探针&#xff08;健康检查&#xff09;启动、退出动作总结 资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。当为 pod 中的容器指定了 request 资源时&#xff0c…

5. vue-element-admin 二次开发攻略指南

vue-element-admin一站式后端 UI框架二次开发攻略指南 1.1 前言1.2 修改 Logo 名称和图标1.3 控制设置齿轮是否显示或隐藏1.4 框架安装依赖优化脚本1.5 定义多环境配置文件1.6 优化打包流程1.7 优化打包流程输出文件路径配置1.8 nginx 配置1.9 docker file 配置 2. 代码地址 1.…

计算机网络-专业术语

计算机网络-专业术语 实体 实体:任何可发送或接收信息的硬件或软件进程 对等实体:收发双方相同层次中的实体 协议 控制两个对等实体进行逻辑通信的规则的集合 协议三要素 语法 定义所交换的信息的格式 是用户数据与控制信息的结构和格式 语义 定义收发双方所需要完成的操作…

STM32CubeMX之freeRTOS信号量

队列可以传输数据&#xff0c;任务之间和任务和中断之间&#xff0c;消息队列用来传数据&#xff0c;占用时间也长 但哦我们有时候只需要传递状态&#xff0c;只需要一个数值表示 如果我们屏幕按固定刷新&#xff0c;就会很消耗资源&#xff0c;如果我们数据变化了&#xff0…

Hadoop+Python+Django+Mysql热门旅游景点数据分析系统的设计与实现(包含设计报告)

系统阐述的是使用热门旅游景点数据分析系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…

人工智能讲师AIGC讲师叶梓:大模型这么火,我们在使用时应该关注些什么?-2

以下为叶老师讲义分享&#xff1a; P6-P9 一些考验大模型的经典问题: 1、鲁迅与周树人是同一个人吗?2、圆周率的最后一位3、蓝牙耳机坏了4、最新的&#xff1a;奶奶的睡前故事 关于事实的问答结果: 知识的时效性&#xff1a; 未完&#xff0c;下一章继续……

java程序打包成exe在无java环境执行

最近写了个小工具&#xff0c;但是java写的&#xff0c;给朋友用的时候不能直接用&#xff0c;因此学习了一下java打包成exe。 众所周知&#xff0c;java需要jvm环境&#xff0c;所以打包的时候需要把稍微轻一点的jre打包进去。接下来是详细步骤。 java程序打包成jar 这个在…

C#随机法 双峰函数 求极值 避免落入局部最优解

避免落入局部最优解&#xff0c;只要让步长够长即可。 x1 resultX1 random1.NextDouble()*100; 如果后面不乘以100&#xff0c;则很大概率落入负数的最大值 Random random1 new Random(DateTime.Now.Millisecond);double x1 0, resultX10,max-999999,maxTemp0;for (int i …

【学会动态规划】买卖股票的最佳时机 III(17)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

骨传导耳机对人体有什么危害,骨传导耳机优缺点是什么?

骨传导耳机对人体有没有伤害&#xff1f; 骨传导耳机的专属挂耳式佩戴方式&#xff0c;不需要将耳机塞入耳朵或者是住整个耳朵&#xff0c;开放双耳的全新佩戴体验&#xff0c;在听音乐的同时不会屏蔽我们的耳朵提取其它信息&#xff0c;能让我们及时听到周围环境音&#xff0c…

tensorRT_Pro 项目实践

参考&#xff1a;https://github.com/shouxieai/tensorRT_Pro/blob/main/tutorial/README.zh-cn.md 前提&#xff1a; https://www.cnblogs.com/odesey/p/17619218.html https://www.cnblogs.com/odesey/p/17619240.html ubuntu20.04opencv4.2cuda11.8cuDNN v8.9.0 (July 1…

【Python】背景及环境搭建

文章目录 了解计算机一、Python背景知识一、Python环境搭建 努力经营当下 直至未来明朗 了解计算机 示例&#xff1a;使用电脑访问B站 1&#xff09; 本地的计算机会给B站服务器发送一个网络请求&#xff08;如&#xff1a;谁&#xff0c;想看哪个视频&#xff09; 2&#xf…

WPS Office 代码执行漏洞(QVD-2023-17241)

目录 本地利用弹计算器&#xff08;自娱自乐&#xff09; 原理分析 msf的利用 1.修改win11中的hosts文件 2.MSF生成一个C#后门 3.shellcode替换 4.在创建html的目录&#xff0c;用python打开http服务来捕获请求 5.开启监听 6.在win11中点击poc文档&#xff0c;可以看到k…

0001nginx简介、相关模型与原理

文章目录 一. 什么是Nginx二. ngnix的一些模型1、nginx的进程模型2、worker的抢占&#xff08;锁&#xff09;机制模型3. nginx事件处理模型 三. nginx加载静态资源的过程 一. 什么是Nginx Nginx是一个高性能HTTP反向代理服务器&#xff0c;以下是nginx的相关能力 反向代理&am…

通过matlab对比music,mvdr以及tdoa三种定位算法的性能

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 MUSIC&#xff08;Multiple Signal Classification&#xff09; 4.2 MVDR&#xff08;Minimum Variance Distortionless Response&#xff09; 4.3 TDOA&#xff08;Time Difference o…