计算机视觉--通过HSV和YIQ颜色空间处理图像噪声
计算机视觉
文章目录
- 计算机视觉
- 前言
- 一、实现步骤
- 二、实现
- 总结
前言
利用HSV和YIQ颜色空间处理图像噪声。在本次实验中,我们使用任意一张图片,通过RGB转HSV和YIQ的操作,加入了椒盐噪声并将其转换回RGB格式,最终实现对图像的噪声处理。
一、实现步骤
1、将RGB图像转换为HSV和YIQ格式
我们使用cv2中的cvtColor函数将RGB图像转换为HSV和YIQ格式。COLOR_RGB2HSV和COLOR_RGB2YCrCb表示转换为对应格式。
2、在HSV的H通道加入椒盐噪声
在HSV格式的图像中,我们选择了H通道。通过随机选择像素点的方式,在该像素点的H通道上加入椒盐噪声。具体操作是将该像素点的H值设置为255。
3、在YIQ的Y通道加入椒盐噪声
在YIQ格式的图像中,我们选择了Y通道。同样的方式,通过随机选择像素点的方式,在该像素点的Y通道上加入椒盐噪声。
4、将加入椒盐噪声的H通道、Y通道分别显示
接下来,我们分别显示加入了椒盐噪声的HSV和YIQ格式图像的H通道。使用matplotlib的imshow函数,并将显示效果设置为灰度图。
5、合成加入椒盐噪声的HSV、YIQ格式图像
我们将加入了椒盐噪声的HSV、YIQ格式的图像分别转换回RGB格式,方便后续显示。
6、分别将R、G、B通道显示
接下来,我们分别显示原始RGB图像的R、G、B通道。使用matplotlib的imshow函数,并将显示效果设置为灰度图。
7、分别将H、S、V通道显示
接下来,我们分别显示加入椒盐噪声的HSV图像的H、S、V通道。其中,H通道使用hsv色彩空间来显示,而S和V通道使用灰度图来显示。
8、显示加入椒盐噪声的HSV、YIQ格式图像
接下来,我们使用matplotlib显示加入椒盐噪声的HSV和YIQ格式的图像。
9、将合成的加入椒盐噪声的HSV、YIQ格式图像分别转换为RGB格式并显示
最后,我们将加入了椒盐噪声的HSV和YIQ格式的图像转换回RGB格式,并使用matplotlib进行显示。
二、实现
import numpy as np
import cv2
from matplotlib import pyplot as pltimg = cv2.imread('test.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)# 显示原图
plt.imshow(img)
plt.title('Original RGB image')
plt.show()# 将RGB图像转换为HSV和YIQ格式
img_hsv = cv2.cvtColor(img,cv2.COLOR_RGB2HSV)
img_yiq = cv2.cvtColor(img,cv2.COLOR_RGB2YCrCb)# 在HSV的H通道加入椒盐噪声
img_hsv_salt = img_hsv.copy()
# 获取图像行数、列数和通道数信息
rows, cols, _ = img_hsv_salt.shape
# 在图像上随机选择100个像素点,并将其H通道值设置为255,模拟椒盐噪声
for i in range(100):x = np.random.randint(0, rows)y = np.random.randint(0, cols) # 将选定像素点的H通道值设为255img_hsv_salt[x, y][0] = 255
img_hsv_salt = img_hsv.copy()
# 获取图像行数、列数和通道数信息
rows, cols, _ = img_hsv_salt.shape
# 在图像上随机选择100个像素点,并将其H通道值设置为255,模拟椒盐噪声
for i in range(100):x = np.random.randint(0, rows)y = np.random.randint(0, cols) img_hsv_salt[x, y][0] = 255# 在YIQ的Y通道加入椒盐噪声
img_yiq_salt = img_yiq.copy()
for i in range(100):x = np.random.randint(0,rows)y = np.random.randint(0,cols)img_yiq_salt[x,y][0] = 255# 将加入椒盐噪声的H通道、Y通道分别显示
plt.imshow(img_hsv_salt[:,:,0], cmap='gray')
plt.title('Salt & Pepper noise on H channel of HSV')
plt.show()
plt.imshow(img_yiq_salt[:,:,0], cmap='gray')
plt.title('Salt & Pepper noise on Y channel of YIQ')
plt.show()# 合成加入椒盐噪声的HSV、YIQ格式图像
img_hsv_salt = cv2.cvtColor(img_hsv_salt,cv2.COLOR_HSV2RGB)
img_yiq_salt = cv2.cvtColor(img_yiq_salt,cv2.COLOR_YCrCb2RGB)# 分别将R、G、B通道显示
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
axs[0].imshow(img[:,:,0], cmap='gray')
axs[0].set_title('R')
axs[1].imshow(img[:,:,1], cmap='gray')
axs[1].set_title('G')
axs[2].imshow(img[:,:,2], cmap='gray')
axs[2].set_title('B')
plt.show()# 分别将H、S、V通道显示
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
axs[0].imshow(img_hsv[:,:,0], cmap='hsv')
axs[0].set_title('H')
axs[1].imshow(img_hsv[:,:,1], cmap='gray')
axs[1].set_title('S')
axs[2].imshow(img_hsv[:,:,2], cmap='gray')
axs[2].set_title('V')
plt.show()# 显示加入椒盐噪声的HSV、YIQ格式图像
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(12, 6))
axs[0].imshow(img_hsv_salt)
axs[0].set_title('Salt & Pepper noise on H channel of HSV')
axs[1].imshow(img_yiq_salt)
axs[1].set_title('Salt & Pepper noise on Y channel of YIQ')
plt.show()# 将合成的加入椒盐噪声的HSV、YIQ格式图像分别转换为RGB格式并显示
img_hsv_salt_rgb = cv2.cvtColor(img_hsv_salt,cv2.COLOR_RGB2BGR)
img_yiq_salt_rgb = cv2.cvtColor(img_yiq_salt,cv2.COLOR_RGB2BGR)
plt.imshow(img_hsv_salt_rgb)
plt.title('Salt & Pepper noise on H channel of HSV RGB')
plt.show()
plt.imshow(img_yiq_salt_rgb)
plt.title('Salt & Pepper noise on Y channel of YIQ RGB')
plt.show()
总结
在本文中,我们使用RGB转HSV和YIQ的操作,通过加入椒盐噪声并将其转换回RGB格式,对图像进行了噪声处理。我们展示了原始RGB图像以及其R、G、B通道的显示,接着将图像转换为HSV和YIQ格式,并在H通道和Y通道中分别加入了椒盐噪声。然后,我们将加入了噪声的H、S、V通道以及Y通道进行了显示。最后,我们展示了加入椒盐噪声的HSV和YIQ格式图像,并将它们转换回RGB格式进行显示。
通过这样的操作,我们可以进一步了解颜色空间转换在图像处理中的应用,以及如何通过加入噪声来模拟图像中的实际场景。此外,我们还探索了如何通过转换回RGB格式来展示噪声处理后的图像。这些技术在图像去噪、图像增强和其他相关领域中具有重要的应用价值。这些方法对于从图像中去除噪声以及提高图像视觉效果具有重要意义,并且可以在许多实际应用中发挥作用。
相关文章:

计算机视觉--通过HSV和YIQ颜色空间处理图像噪声
计算机视觉 文章目录 计算机视觉前言一、实现步骤二、实现总结 前言 利用HSV和YIQ颜色空间处理图像噪声。在本次实验中,我们使用任意一张图片,通过RGB转HSV和YIQ的操作,加入了椒盐噪声并将其转换回RGB格式,最终实现对图像的噪声处…...

WPF中prism模块化
1、参照(wpf中prism框架切换页面-CSDN博客)文中配置MainView和MainViewModel 2、模块其实就是引用类库,新建两个类库ModuleA ModuleB,修改输出类型为类库,并配置以下文件: ModuleA ModuleAProfile ModuleB Module…...

MyBatis基础之注解与SQL 语句构建器
文章目录 注解实现简单增删改查SQL 语句构建器SelectProvider举例 注解实现简单增删改查 在 MyBatis 的核心配置文件中,你需要配置的不是 mapper 映射文件,而是 Mapper 接口所在的包路径。 <!-- 在配置文件中 关联包下的 接口类--> <mappers&…...

Spring Boot项目搭建流程
Spring Boot是一款基于Spring Framework的开源框架,用于快速构建独立的、可运行的、生产级的Spring应用程序。它通过自动化配置、减少样板代码和默认的项目结构,极大地简化了Spring应用程序的开发过程。本文将详细介绍Spring Boot项目搭建的流程。 一、…...

VSCode插件开发之contributes和命令
VSCode插件开发 package.jsoncontributesconfigurationconfigurationDefaultscommandsmenuskeybindingsviewsviewsContainerscustomEditors 命令回调参数函数编辑器命令执行命令获取所有命令复杂命令 package.json contributes 之前说到 package.json 是 vscode 扩展的清单文…...

适用于Windows的远程传输大文件软件!
AnyViewer可在设备之间快速的远程传输文件,并支持远程传输大文件,传输速度可达10MB/S,同时,还可以传输单个文件不超过1TB的文件,并它基于椭圆曲线加密(ECC)加密,可保护您的文件不被…...

Hydra参数
kali的hyda参数 参数: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns][-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT] -R 继续从上一次进度接着破解。 -S 采用SSL链接。 -s PORT 可通…...

R语言的计量经济学实践技术应用
计量经济学通常使用较小样本,但这种区别日渐模糊,机器学习在经济学领域、特别是经济学与其它学科的交叉领域表现日益突出,R语言是用于统计建模的主流计算机语言,在本次培训中,我们将从实际应用出发,重点从数…...

基于Springboot实现体质测试数据分析平台管理系统项目【项目源码+论文说明】
基于Springboot实现体质测试数据分析平台系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,体质测试数据分析及可视化设计当然也不能排除在外。体质测试数据分析及…...

JavaScript 严格模式
JavaScript 严格模式是一种在 JavaScript 编程中使用的特殊模式。它提供了一种更严格的语法和错误检查,以帮助开发者编写更可靠、更安全的代码。 使用严格模式的方法是在代码文件或函数的顶部添加如下语句: "use strict"; 作用:…...

安全与隐私:直播购物App开发中的重要考虑因素
随着直播购物App的崭露头角,开发者需要特别关注安全性和隐私问题。本文将介绍在直播购物App开发中的一些重要安全和隐私考虑因素,并提供相关的代码示例。 1. 数据加密 在直播购物App中,用户的个人信息和支付信息是极为敏感的数据。为了保护…...

Redis cluster 集群
redis集群redis集群是一个提供在多个redis节点间共享数据的程序集,redis集群可以支持多个master Redis集群支持多个master,每个master又可以挂载多个slave 读写分离、支持数据的高可用、支持海量数据的读写存储操作由于Cluster自动Sentinel的故障转移机制ÿ…...

服务器与网站部署知识体系目录
1.网站部署必备知识与实践操作 服务器全套基础知识:包含基本概念,作用,服务器选择,服务器管理等域名相关基础知识普及域名备案流程(个人备案,腾讯云 / 阿里云)将网站域名访问从http升级到https…...

解读提示工程(Prompt Engineering)
提示工程(Prompt Engineering),也称为上下文提示,是一种通过不更新模型的权重/参数来引导LLM行为朝着特定结果的方法。这是与AI有效交流所需结果的过程。提示工程可以用于各种任务,从回答问题到算术推理乃至各种应用领…...

Servlet的部署与安全
1 Servlet 部署 Servlet规范关于各个东西该放在哪里有许多严格的规则。 1.1 WAR war文件代表Web归档(Web Archive),war实际就是一个JAR,只不过扩展名是.war而不是.jar。 其采用了一种可移植的压缩形式,把整个Web应用结构(去掉…...

2023版IDEA的下载、安装、配置、快捷键、模板、插件与使用
🎉 为什么会有这篇教程:熟悉 IDEA 并能灵活熟练使用 IDEA 能极大提高您的开发效率!!! 📍 本文教程基于当前 idea 的最新版本 2023.2.2。 📍 本文教程的所有操作图片均是实操测试截图或 gif 动态…...

vue cli和vite区别
1.Vue CLI脚手架 什么是Vue脚手架? 在真实开发中我们不可能每一个项目从头来完成所有的webpack配置,这样显示开发的效率会大大的降低;所以在真实开发中,我们通常会使用脚手架来创建一个项目,Vue的项目我们使用的就是…...

SQL Server修改表结构
在SQL Server中修改的关键字是 ALTER(改变;(使)更改;修改(衣服使更合身);改动) 列操作 添加列 添加列操作 alter tabel 表名 add 列名 数据类型--给员工表添加一个邮箱 alter的翻译是(改变) alter table people add PeopleMail varchar(2…...

C++学习——对象的内存模型
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 对象被创建时会在栈区或者堆区分配内存。我们直观的认识是,如果创建了 10 个对象,就要分别为这 10 个对象的成员变量和成员函数分配内存,如下图所示…...

cpp文件操作
文件操作 数据流 在cpp中,流(stream)是一个抽象概念,用于描述如何从一个位置到又一个位置传输数据。流主要用于I/O操作。 数据流包括两大类:1. 输入流(istream):数据从某个源流入程序, 2. 输出流(ostrea…...

failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848])
仔细观察我的Nacos日志后发现是Nacos没启动起来,足足花费了30分钟才启动, 应该是电脑卡机导致的,之前电脑启动Nacos很快的!!只要启动了Nacos服务就可以解决该报错! 后续: 后面是选择这个CMD里面一些内容复制,然后右键粘贴到里面好像是能刷新这个CMD的内容,然后就启动成功了...

【ROS】ros-noetic和anaconda联合使用
【ROS】ros-noetic和anaconda联合使用 文章目录 【ROS】ros-noetic和anaconda联合使用1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1. 安装anaconda 在Ubuntu20.04中安装anaconda可以参考…...

【MySQL】聚合查询与分组查询
我们先重建一个test库,在test库里新建一个people表(包含序列号,姓名,工资),再往表该表里新增六条数据: mysql> drop database if exists test; Query OK, 1 row affected (0.07 sec)mysql>…...

RFID技术在锂电池生产线自动化应用
随着电动汽车和能源储存系统市场的不断扩大,锂离子电池作为其核心部件,以其高能量密度、长寿命等优点成为了主流选择。而对于锂电池智能化、高效化生产有着更高的要求,RFID技术的使用,将大幅度提高锂电池的生产产能,从…...

钢筋智能测径仪 光圆与带肋钢筋均可检测!
在一个大规模、高效、连续的工业生产中,制造业正朝着自动化方向快速优化发展,这种自动化的生产需要快速、准确地分析控制生产工艺中的参数,超差及时提示,为操作工对工厂的运行和自我调节做出快速反应,人工操作越来越不…...

docker--在Anaconda jupyter 容器中使用oracle数据源时,Oracle客户端安装配置及使用示例
配置oracle 11.2 客户端 将instantclient-basic-linux.x64-11.2.0.4.0.zip解压至/home/jupyter/oracle/将instantclient-sqlplus-linux.x64-11.2.0.4.0.zip解压/home/jupyter/oracle/【可选,提供sqlplus命令】复制【操作系统一般都有安装libaio.so】 cp /usr/lib64…...

can的波特率/比特率
can控制器只需要进行少量的设置就可以进行通信,就像RS232那样。其中较难设置的部分就是通信波特率的计算。can总线能够在一定范围内容忍总线上can节点的通信波特率的偏差,这种技能使得can总线有很强的容错性,同时也降低了对每个节点的振荡器精…...

项目经理涨薪秘籍!技巧都在这里了
好奇前辈们是如何带好团队、做出成功项目,从而升职加薪,成为高级项目经理或项目管理主管的?这是绝大多数新手PM最关注的事情。今天小编给大家揭秘! 一、刚入门如何进阶 从入门的项目管理者发展到中级的项目管理者,重…...

甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(一)
如果没有有效的时间管理工具,如工作时间日历,很难想象一个项目如何成功运转。这就是为什么我们的开发团队非常重视项目管理,并提供了多种选择来安排DHTMLX Gantt的工作时间。使用DHTMLX Gantt这个JavaScript库,您可以创建一个强大…...

健效达海豚妈妈儿保项目推介会盛大启幕,聚焦互联网+精准医疗
2023年10月12日,由上海健启星科技发展有限公司和北京安智因生物技术有限公司联合主办的“2023互联网精准医学平台助力基层医疗|海豚妈妈儿保项目推介会”在中国苏州盛大启幕。 本次项目推介会得到国内行业专家、权威学者、国内知名三甲名医教授、头部企业、学术大咖…...