Opencv-图像噪声(均值滤波、高斯滤波、中值滤波)

news2024/11/18 20:31:10

图像的噪声

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像的平滑

在这里插入图片描述

均值滤波

在这里插入图片描述
在这里插入图片描述

均值滤波代码实现

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']

img = cv.imread("dog.png")

#均值滤波
'''
cv.blur(img, (5, 5))将对图像img进行均值模糊处理。
参数(5, 5)表示卷积核的大小,这里是一个5x5的卷积核。卷积核的大小决定了模糊的程度,较大的卷积核会导致更强的模糊效果。
'''
blur = cv.blur(img,(5,5))

plt.figure(figsize=(5,4),dpi=100)
'''
plt.figure()函数用于创建一个新的图像窗口,并返回一个指向该窗口的引用。
figsize=(10, 8)参数指定了图像窗口的大小,这里设置为宽度为10英寸,高度为8英寸。
dpi=100参数指定了图像窗口的分辨率,这里设置为100。'''

plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title("原图")
'''
plt.subplot(121)函数用于创建一个子图区域。参数(121)表示将图像窗口分割为1行2列的网格,并选择第一个子图来显示图像。
plt.imshow(img[:, :, ::-1])函数用于显示图像。
img是需要显示的图像数组,[:, :, ::-1]表示对图像进行颜色通道的转换,由BGR顺序转换为RGB顺序。
plt.title("原图")函数用于设置子图的标题。
'''
plt.xticks([]),plt.yticks([])
'''
plt.xticks([])和plt.yticks([])函数用于设置坐标轴的刻度标签。
[]为空列表,表示不显示刻度标签,即去除x轴和y轴的刻度标签。
'''

plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title("均值滤波")
plt.xticks([]),plt.yticks([])

plt.show()

结果展示

在这里插入图片描述

高斯滤波概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码实现

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
import random

mpl.rcParams['font.sans-serif'] = ['SimHei']

img =cv.imread("lena.png")

#添加高斯噪声
noise_sigma = 100  # 高斯噪声的标准差

noise = np.zeros(img.shape, np.int16)
cv.randn(noise, 0, noise_sigma)

img_with_noise = img + noise
img_with_noise = np.clip(img_with_noise, 0, 255).astype(np.uint8)

cv.imshow("Lena with Gaussian Noise", img_with_noise)
cv.waitKey(0)


blur = cv.GaussianBlur(img_with_noise,(3,3),1)

plt.figure(figsize=(5,4),dpi=100)
plt.subplot(121),plt.imshow(img_with_noise[:,:,::-1]),plt.title("噪声图片")
plt.xticks([]),plt.yticks([])

plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title("高斯滤波")
plt.xticks([]),plt.yticks([])
plt.show()

结果展示

在这里插入图片描述

中值滤波

在这里插入图片描述

代码实现

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
import random

mpl.rcParams['font.sans-serif'] = ['SimHei']

img =cv.imread("lena.png")


#添加椒盐噪声
noise_density = 0.01  # 噪声比例

noise = np.zeros(img.shape[:2], np.uint8)

num_noise_pixels = int(noise_density * img.shape[0] * img.shape[1])

for _ in range(num_noise_pixels):
    x = random.randint(0, img.shape[1]-1)
    y = random.randint(0, img.shape[0]-1)
    if random.random() < 0.5:
        noise[y, x] = 0  # 设置为黑色
    else:
        noise[y, x] = 255  # 设置为白色

img_with_noise = cv.add(img, cv.cvtColor(noise, cv.COLOR_GRAY2BGR))

#中值滤波

blur = cv.medianBlur(img_with_noise,5)

#图像显示
plt.figure(figsize=(5,4),dpi=100)
plt.subplot(121),plt.imshow(img_with_noise[:,:,::-1]),plt.title("噪声")
plt.xticks([]),plt.yticks([])

plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title("中值滤波")
plt.xticks([]),plt.yticks([])
plt.show()

结果展示

在这里插入图片描述

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

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

相关文章

Linux内核SPI子系统驱动框架详解

目录 1 spi子系统整体架构图 2 SPI控制器驱动和SPI设备驱动软件架构 3 SPI控制器驱动的整理流程 4 SPI发送数据过程 5 SPI设备驱动 6spidev万能驱动 7 费曼学习法&#xff1a;我录制了一个SPI子系统驱动框架讲解视频 参考文献&#xff1a; 1 spi子系统整体架构图 如上图…

资管巨头贝莱德增持矿企股份,机构资金正在慢慢进入比特币经济……

在比特币减半前夕&#xff0c;比特币挖矿企业股价今年大幅上涨&#xff0c;甚至比BTC上涨幅度还高数倍&#xff0c;非常强势。而据富途最新股权披露数据显示&#xff0c;截至2023年8月31日&#xff0c;已经有3家机构投资者增持了加密挖矿服务商比特小鹿&#xff08;Bitdeer&…

[面试] k8s面试题 2

文章目录 核心组件1.什么是 Kubernetes 中的控制器&#xff08;Controller&#xff09;&#xff1f;请提供一些常见的控制器类型。2.请解释一下 Kubernetes 中的 Ingress 是什么&#xff0c;以及它的作用。3.如何通过命令行在 Kubernetes 中创建一个 Pod&#xff1f;4.Stateful…

Jmeter配置性能监控插件

一、版本不兼容时&#xff0c;有报错 1、当jmeter版本比较高时&#xff0c;只需要从官网安装jmeter-plugins-manager-1.10.jar一个包 2、当jmeter版本较低时&#xff0c;安装JMeterPlugins-Extras-1.4.0.zip、JMeterPlugins-Standard-1.4.0.zip内两个jar包 3、服务器上传文件…

【链表】删除链表的中间节点-力扣2095题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

Latex Overleaf 写作问题记录

Latex & Overleaf 写作问题记录 公式换行及排列整齐 \begin{equation} \begin{split}Y & a1\\&b2 \end{split} \end{equation}顶格 \noindent求和符号 求和符号&#xff08;上下限上下排列&#xff09; \sum\limlits求和符号&#xff08;上下限右边排列&#…

数据库模块

这里写目录标题 一.数据库设计确定实体之间的关系创建数据表编写实体类二.封装数据库操作封装DButil针对文件的增删查改操作进行一个封装初始化数据库插入文件查询文件删除文件 一.数据库设计 确定实体之间的关系 因为我们要做的是一个文件搜索功能,我们这里的实体,就是文件,…

02-数据结构-线性表

线性表的特点&#xff1a; (1)存在惟一一个被称为"第一个"的数据元素 (2)存在惟一一个被称为"最后一个"的数据元素 (3)除第一个之外&#xff0c;集合中每一个数据元素均只有一个前驱 (4)除最后一个之外&#xff0c;集合中每个数据均只有一个后继 线性表是…

2023华为杯数学建模研赛思路分享——最全版本A题深度解析

问题回顾&#xff1a; WLAN网络信道接入机制建模 1. 背景 无线局域网&#xff08;WLAN, wireless local area network&#xff09;也即Wi-Fi广泛使用&#xff0c;提供低成本、高吞吐和便利的无线通信服务。基本服务集&#xff08;BSS, basic service set&#xff09;是WLAN的…

力扣:106. 从中序与后序遍历序列构造二叉树(Python3)

题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可…

深入学习 Redis - 如何使用 Redis 作缓存?缓存更新策略?使用需要注意哪些问题(工作/重点)

目录 一、Redis 作为缓存 1.1、缓存的基本概念 1.1.1、理解 1.1.2、缓存存什么样的数据&#xff1f;二八定律 1.2、如何使用 redis 作为缓存 1.3、缓存更新策略&#xff08;redis 内存淘汰机制 / 重点&#xff09; 1.3.1、定期生成 1.3.2、实时生成 内存淘汰策略&#…

报式套接字通讯实例

报式套接字通讯实例 使用套接字通讯流程 被动端&#xff08;先运行&#xff09; 1、取得SOCKET 2、给SOCKET取得地址 3、收/发消息 4、关闭SOCKET 主动端 1、取得SOCKET 2、给SOCKET取得地址&#xff08;可省略&#xff09; 3、发/收消息 4、关闭SOCKET 各部分代码实现 pr…

exe文件运行后无输出直接闪退如何找解决办法

一.搜索栏搜事件查看器 二.点开windows日志下的应用程序 三.找到错误处 四.搜索异常代码 点开有错误的详细信息&#xff0c;直接用搜索引擎搜索这个异常代码能大致判断是什么问题&#xff0c;给了一个解决思路&#xff0c;不至于不知道到底哪里出了问题

prometheus+node+process-exporter+grafans

安装Prometheus 要在Ubuntu 18.04上安装Prometheus&#xff0c;您可以按照以下步骤进行&#xff1a; sudo apt-get update安装依赖&#xff1a; sudo apt-get install wget tar下载最新的Prometheus版本&#xff1a; wget https://github.com/prometheus/prometheus/releas…

月木学途开发 3.博客模块开发

概述 效果展示 数据库设计 专栏表 DROP TABLE IF EXISTS blog_column; CREATE TABLE blog_column (blogColumnId int(11) NOT NULL AUTO_INCREMENT,blogColumnName varchar(255) DEFAULT NULL,blogColumnCoverImg longtext,blogColumnIntroduction longtext,userId int(11) D…

LeetCode算法心得——连续的子数组和(前缀和+HashMap)

大家好&#xff0c;我是晴天学长&#xff0c;同余定理的应用加上hashmap的灵活应用&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .连续的子数组的和 题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;编写一个函数来判断…

【 2023华为杯C题】大规模创新类竞赛评审方案研究(思路、代码......)

目录 1 题目概述 2 问题 3 极差的定义及标准分的计算方法 4 题目及数据下载 5 思路、代码下载...... 1 题目概述 现在创新类竞赛很多&#xff0c;其中规模较大的竞赛&#xff0c;一般采用两阶段&#xff08;网评、现场评审&#xff09;或三阶段&#xff08;网评、现场评审…

pcl--第十节 点云曲面重建

曲面重建技术在逆向工程、数据可视化、机器视觉、虚拟现实、医疗技术等领域中得到了广泛的应用 。 例如&#xff0c;在汽车、航空等工业领域中&#xff0c;复杂外形产品的设计仍需要根据手工模型&#xff0c;采用逆向工程的手段建立产品的数字化模型&#xff0c;根据测量数据建…

[React] 自定义hooks设计模式

文章目录 1.自定义hooks设计1.1 自定义hooks1.2 设计一个自定义hooks1.3 自定义hooks的驱动条件1.4 自定义hooks的通用模式1.5 自定义hooks的条件限定 1.自定义hooks设计 react-hooks是react16.8以后&#xff0c;react新增的钩子API&#xff0c;目的是增加代码的可复用性&…

线性表应用(非递减合并、分解链表、删除线性表)

将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间&#xff0c;不另外占用其它的存储空间。表中允许有重复的数据。 #include<iostream> using namespace std; typedef struct list {int data;list* next; }list,*linklist;…