计算机视觉--通过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格式来展示噪声处理后的图像。这些技术在图像去噪、图像增强和其他相关领域中具有重要的应用价值。这些方法对于从图像中去除噪声以及提高图像视觉效果具有重要意义,并且可以在许多实际应用中发挥作用。

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

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

相关文章

chatGLM2-6B模型LoRA微调数据集实现大模型的分类任务

【TOC】 1.chatglm介绍 ChatGLM 模型是由清华大学开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化。该模型基于 General Language Model(GLM)架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署。 ChatGLM 具备以下特点: 充…

AlmaLinux (兼容centos)安装Geant4与ROOT

AlmaLinux 介绍 AlmaLinux OS 是一个开源、社区驱动的 Linux 操作系统,它填补了因 CentOS 稳定版本停止维护而留下的空白,同时更加强大。 安装 AlmaLinux 这个我用的是 windows 子系统进行安装 首先打开微软商店,然后搜索AlmaLinux&#…

使用XLua在Unity中获取lua全局变量和函数

1、Lua脚本 入口脚本 print("OK") --也会执行重定向 require("Test") 测试脚本 print("TestScript") testNum 1 testBool true testFloat 1.2 testStr "123"function testFun()print("无参无返回") endfunction te…

【想法】取代NI的 PCIe-8371

PCIe-8371 涨价非常厉害。 PCA3 https://www.terasic.com.tw/cgi-bin/page/archive.pl?LanguageEnglish&CategoryNo65&No1143 PCA3 (PCIe Cable Adapter, Gen 3) is a conversion card to connect boards with your host PC. It can support up to PCIe Gen 3 x4. …

luajit简介

LuaJIT是一种高效的Lua解释器,其通过即时编译技术将Lua代码转换为机器代码,从而提供了非常快速的执行速度。在本文中,我们将介绍LuaJIT的原理、使用方法以及在嵌入式Linux系统中的应用示例。 LuaJIT的原理 LuaJIT基于Lua 5.1实现&#xff0…

Java前后端交互的一些细节

在后端进行POST请求后端接收前端数据时,关于PrintWriter:参考地址 注意传进来的对象为空说明未在数据库查到拥有该账号的用户,所以需要告诉前端“账号密码不正确”,如果不为空说明有该用户,所以可以登录。 Overridep…

基于天牛须优化的BP神经网络(分类应用) - 附代码

基于天牛须优化的BP神经网络(分类应用) - 附代码 文章目录 基于天牛须优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.天牛须优化BP神经网络3.1 BP神经网络参数设置3.2 天牛须算法应用 4.测试结果&#x…

sql注入(6), 更新注入, 堆叠注入, 宽字节注入

一, 更新注入 更新操作只返回布尔型结果, 所以无法像select语句进行多样化测试, 所以更新类的操作重点就是报错注入. 注意报错注入的前提是页面上能够看到数据库的报错信息, 利用报错信息显示我们需要的数据. 情景 修改密码时对url进行post请求, 提交密码. url: http://192.…

vscode虚拟环境使用jupyter

在某虚拟环境内安装torch,但是ipyn文件保存后无法正常导入torch 1.conda环境下安装Jupyter等一切配置,进入虚拟环境 2.conda install nb_conda_kernels 3.安装完成后重新打开VSCode,在运行Jupyter notebook中的代码之前,在右上…

微软和OpenAI正在开发AI芯片, 并计划下个月发布

今年初,Chat**引起了无数网友关注,一度成为了热门话题。这是由人工智能研究实验室OpenAI开发的一款聊天机器人模型,也称为一种人工智能(AI)技术驱动的自然语言处理工具。能够通过学习和理解人类的语言来进行对话&#…

百度SEO优化全攻略(提高网站排名的5个方面)

百度SEO入门介绍: 随着互联网的不断发展,SEO已经成为网站优化的重要一环。而百度作为中国最大的搜索引擎,其SEO优化更是至关重要。SEO不仅能够提高网站排名,还能够提高网站流量、用户体验以及品牌知名度。因此,掌握百…

orgChart.js组织架构图

OrgChart.js是什么? 基于ES6的组织结构图插件。 特征 支持本地数据和远程数据(JSON)。 基于CSS3过渡的平滑扩展/折叠效果。 将图表对齐为4个方向。 允许用户通过拖放节点更改组织结构。 允许用户动态编辑组织图并将最终层次结构保存为…

[CSAWQual 2019]Web_Unagi - 文件上传+XXE注入(XML编码绕过)

[CSAWQual 2019]Web_Unagi 1 解题流程1.1 分析1.2 解题2 思考总结1 解题流程 这篇博客讲了xml进行编码转换绕过的原理:https://www.shawroot.cc/156.html 1.1 分析 页面可以上传,上传一句话php失败,点击示例发现是xml格式,那么就是XXE注入了 点击about得到flag位置: Fla…

蓝桥杯每日一题2023.10.13

组队 - 蓝桥云课 (lanqiao.cn) 题目描述 方法一:由肉眼观察找到在一至五号位的不同编号成员的最大的值 #include<bits/stdc.h> using namespace std; int main() {cout << 98 99 98 97 98;return 0; } 方法二&#xff1a;由dfs一一找寻 #include<bits/st…

图形界面四则运算计算器(Python+PyQt5)

(1) 导入所需的库和模块。 (2) 创建一个名为Calculator的类&#xff0c;继承自QMainWindow。 (3) 在Calculator类的__init__方法中&#xff0c;调用initUI方法初始化界面。 (4) 在initUI方法中&#xff0c;设置窗口标题和大小&#xff0c;创建显示结果的文本框&#xff0c;并调…

GDB 跳转执行

1、 s:进入某个函数 finish :从这个函数中出来 (gdb) b dkauth_mgr.c:132 Breakpoint 1 at 0x3423cfd4: file /home/jintao/cvf-integration/apps/cvf/services/dkauth/src/dkauth_mgr.c, line 132. (gdb) r The program being debugged has been started already. Start it …

【AI视野·今日Sound 声学论文速览 第二十四期】Thu, 12 Oct 2023

AI视野今日CS.Sound 声学论文速览 Thu, 12 Oct 2023 Totally 12 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Enhancing expressivity transfer in textless speech-to-speech translation Authors Jarod Duret LIA , Benjamin O Brien LIA , Yanni…

PyTorch 深度学习之处理多维特征的输入Multiple Dimension Input(六)

1.Multiple Dimension Logistic Regression Model 1.1 Mini-Batch (N samples) 8D->1D 8D->2D 8D->6D 1.2 Neural Network 学习能力太好也不行&#xff08;学习到的是数据集中的噪声&#xff09;&#xff0c;最好的是要泛化能力&#xff0c;超参数尝试 Example, Arti…

Java 基于SpringBoot的某家乡美食系统

1 简介 《Java 基于SpringBoot的某家乡美食系统》该项目含有源码、文档等资料、配套开发软件、软件安装教程等。系统功能完整&#xff0c;适合作为毕业设计、课程设计、数据库大作业学习使用。 功能介绍 这个项目是基于 SpringBoot和 Vue 开发的地方美食系统&#xff0c;包括…

K邻近算法(KNN,K-nearest Neighbors Algorithm)

文章目录 前言应用场景欧几里得距离&#xff08;欧氏距离&#xff09;两类、单一属性&#xff08;1D&#xff09;两类、两种属性&#xff08;2D&#xff09;两类、两种以上属性&#xff08;>3D&#xff09; Examples in R再来一个补充一下什么是变量 什么是变量&#xff1f;…