计算机视觉--利用HSV和YIQ颜色空间处理图像噪声

news2024/9/22 15:51:55

在这里插入图片描述

前言: Hello大家好,我是Dream。 今天我们将利用HSV和YIQ颜色空间处理图像噪声。在本次实验中,我们使用任意一张图片,通过RGB转HSV和YIQ的操作,加入了椒盐噪声并将其转换回RGB格式,最终实现对图像的噪声处理。一起来看看吧~

1.导入库函数

首先,我们导入需要的库。包括numpy用于处理数组数据,cv2用于图像处理,matplotlib用于可视化展示。

import numpy as np
import cv2
from matplotlib import pyplot as plt

2.导入原图

接下来,我们导入原始图像,并将其转换为RGB格式以便于显示。

img = cv2.imread('test.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

3.显示原图

然后,我们使用matplotlib将原始RGB图像显示出来。

plt.imshow(img)
plt.title('Original RGB image')
plt.show()

在这里插入图片描述

4.将RGB图像转换为HSV和YIQ格式

我们使用cv2中的cvtColor函数将RGB图像转换为HSV和YIQ格式。COLOR_RGB2HSV和COLOR_RGB2YCrCb表示转换为对应格式。

img_hsv = cv2.cvtColor(img,cv2.COLOR_RGB2HSV)
img_yiq = cv2.cvtColor(img,cv2.COLOR_RGB2YCrCb)

5.在HSV的H通道加入椒盐噪声

在HSV格式的图像中,我们选择了H通道。通过随机选择像素点的方式,在该像素点的H通道上加入椒盐噪声。具体操作是将该像素点的H值设置为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)    
    # 将选定像素点的H通道值设为255
    img_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

6.在YIQ的Y通道加入椒盐噪声

在YIQ格式的图像中,我们选择了Y通道。同样的方式,通过随机选择像素点的方式,在该像素点的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

7.将加入椒盐噪声的H通道、Y通道分别显示

接下来,我们分别显示加入了椒盐噪声的HSV和YIQ格式图像的H通道。使用matplotlib的imshow函数,并将显示效果设置为灰度图。

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()

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

8.合成加入椒盐噪声的HSV、YIQ格式图像

我们将加入了椒盐噪声的HSV、YIQ格式的图像分别转换回RGB格式,方便后续显示。

img_hsv_salt = cv2.cvtColor(img_hsv_salt,cv2.COLOR_HSV2RGB)
img_yiq_salt = cv2.cvtColor(img_yiq_salt,cv2.COLOR_YCrCb2RGB)

9.分别将R、G、B通道显示

接下来,我们分别显示原始RGB图像的R、G、B通道。使用matplotlib的imshow函数,并将显示效果设置为灰度图。

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()

在这里插入图片描述

10.分别将H、S、V通道显示

接下来,我们分别显示加入椒盐噪声的HSV图像的H、S、V通道。其中,H通道使用hsv色彩空间来显示,而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()

在这里插入图片描述

11.显示加入椒盐噪声的HSV、YIQ格式图像

接下来,我们使用matplotlib显示加入椒盐噪声的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()

在这里插入图片描述

12.将合成的加入椒盐噪声的HSV、YIQ格式图像分别转换为RGB格式并显示

最后,我们将加入了椒盐噪声的HSV和YIQ格式的图像转换回RGB格式,并使用matplotlib进行显示。

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()

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

13.总结

在本文中,我们使用RGB转HSV和YIQ的操作,通过加入椒盐噪声并将其转换回RGB格式,对图像进行了噪声处理。我们展示了原始RGB图像以及其R、G、B通道的显示,接着将图像转换为HSV和YIQ格式,并在H通道和Y通道中分别加入了椒盐噪声。然后,我们将加入了噪声的H、S、V通道以及Y通道进行了显示。最后,我们展示了加入椒盐噪声的HSV和YIQ格式图像,并将它们转换回RGB格式进行显示。

通过这样的操作,我们可以进一步了解颜色空间转换在图像处理中的应用,以及如何通过加入噪声来模拟图像中的实际场景。此外,我们还探索了如何通过转换回RGB格式来展示噪声处理后的图像。这些技术在图像去噪、图像增强和其他相关领域中具有重要的应用价值。这些方法对于从图像中去除噪声以及提高图像视觉效果具有重要意义,并且可以在许多实际应用中发挥作用。

本期推荐:
Python从入门到精通(购买通道)
在这里插入图片描述

IT今日热榜: http://itoday.top/
在这里插入图片描述

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

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

相关文章

mysql之host is blocked问题

程序上线一段时间之后,更新程序总是遇到这个问题 每次都是重启几次程序,或者执行 flush hosts; 毕竟指标不治本,抽出时间决定分析一下问题,查阅了几篇博客。(感谢这几位大佬) https://blog.51cto.com/u_…

飞机打方块(四)游戏结束

一、游戏结束显示 1.新建节点 1.新建gameover节点 2.绑定canvas 3.新建gameover容器 4.新建文本节点 2.游戏结束逻辑 Barrier.ts update(dt: number) {//将自身生命值取整let num Math.floor(this.num);//在Label上显示this.num_lb.string num.toString();//获取GameCo…

数据结构—队列

队列 队列的概念及结构队列的实现 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 。 入队列:进行插入操作的一端称为队尾。 出队列&am…

Day8 智慧商城

项目演示 项目收获 创建项目 调整初始化目录 1.删components里的所有文件 2.删views里的所有文件 3.router/index.js 删路由 删规则 import Vue from vue import VueRouter from vue-routerVue.use(VueRouter)const router new VueRouter({routes: [] })export default route…

软件开发合同范本word文档,《某公司软件开发合同》,15页范本供参考

上一篇介绍了软件生命周期全过程,软件工程全周期全过程20项文档模板,附下载。从《合同》到《需求规格说明书》到软件设计、开发、实施、验收、维护等全过程相关文档模板。有朋友反馈附件内容没有补全,本次及后续会用实际案例补全附件内容&…

Backblaze 2023 Q2 硬盘故障质量报告解读

Backblaze 在其博客上发布了 2023 年第二季度的存储设备统计数据。这些数据包括了 Backblaze 在该季度所拥有的存储设备的数量、故障率和更换率等信息,这些信息对于了解存储设备的可靠性和性能非常有用。 在最新的Backblaze硬盘使用统计报告中,我们看到了…

OLED透明屏介绍:领先科技的革命性创新

OLED透明屏作为一项领先的科技创新,在产品设计和用户体验方面展现出了巨大的潜力。 在这篇文章中,尼伽将介绍OLED透明屏的定义、特点、应用领域以及未来发展趋势,以帮助您全面了解OLED透明屏。 一、OLED透明屏的定义与原理 1.1 定义&#x…

概念解析 | 走进射线管积分:探索数学与现实世界的神秘桥梁

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:射线管积分。 走进射线管积分:探索数学与现实世界的神秘桥梁 射线管积分雷达成像 射线管积分(Ray Tube Integration&a…

leetcode 188. 买卖股票的最佳时机 IV

2023.8.21 这道题是 买卖股票的最佳时机III 的升级版&#xff0c;即买卖次数限制为k次&#xff0c;做法和上一篇如法炮制&#xff0c;直接看代码&#xff1a; class Solution { public:int maxProfit(int k, vector<int>& prices) {vector<vector<int>>…

Django模板语法,带你快速入门

目录 案例一&#xff1a;登录页面 案例二&#xff1a;for案例 if案例——单个字符串的传递&#xff0c;列表的传递&#xff0c;字典的传递 模板语法其本质&#xff1a;本质上&#xff0c;Django的模板语法就是在html中&#xff0c;写一些占位符&#xff0c;由数据对这些占位符…

6.824 lab2 raft实现

目录 1 难点及完成思路&#xff1a; 1.1 难点分析&#xff1a; 1.2 完成思路&#xff1a; 1.3 实验心得&#xff1a; 1.4 报告结构&#xff1a; 2 Leader选举模块 2.1 思路概括&#xff08;代码角度&#xff09; 2.2 注意问题&#xff1a; 2.3 代码细节&#…

[WMCTF 2023] crypto

似乎退步不了&#xff0c;这个比赛基本不会了&#xff0c;就作了两个简单题。 SIGNIN 第1个是签到题 from Crypto.Util.number import * from random import randrange from secret import flagdef pr(msg):print(msg)pr(br"""........ …

WMS仓库管理系统选择指南:如何确保您的仓库提高效率?

如何选择WMS仓库管理系统&#xff1f;仓库管理主要包括以下四个方面&#xff1a; 1.商品出入库管理 2.库存调拨 3.库存盘点 4.虚拟库存/实际库存管理 为了更好地管理仓库&#xff0c;我们需要确保基本的硬件设施得以满足&#xff0c;例如划分存储区域、使用货架以及进行员工培训…

Vivado2018.3版本_编译下载打包固化程序

Vivado2018.3版本_编译下载打包固化程序 概述&#xff1a; 在Vivado中开发导出硬件平台&#xff0c;然后在SDK中进行C语言的开发工作&#xff0c;然后把SDK编译生成的.elf文件加入Vivado工程中&#xff0c;编译生成.bit文件&#xff0c;转换成.mas文件&#xff0c;就可以固化到…

使用kubeadm工具升级kubernetes

一、背景&#xff1a; kubeadm部署的kubernetes集群进行升级&#xff0c;通常先升级控制节点&#xff0c;控制节点升级完成后再升级工作节点&#xff0c;本博文只升级了控制节点&#xff0c;工作节点按照相同的流程进行升级即可 环境说明&#xff1a; 主机名节点11.0.1.200k8s…

机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识

机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明&#xff1a;条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明&#xff1a;条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…

功率放大器的介绍和应用领域有哪些

功率放大器是将输入信号的功率放大到输出端所需水平的一种电子设备。在实际应用中&#xff0c;功率放大器被广泛使用于音频、视频、通讯等领域。下面&#xff0c;安泰电子将详细介绍功率放大器的工作原理、类型以及应用领域。 功率放大器的工作原理是将输入信号的功率放大到输出…

js 简单的页面导航

实现效果&#xff1a; 实现原理&#xff1a; 实现原理是通过创建数组里面包含对应页面的信息&#xff0c;当点击的时候为数组传递一个对象&#xff0c;里面包含要显示的信息。 跳转链接实现原理&#xff1a; 通过创建一个数组&#xff0c;里面包含所有可以跳转的页面链接名称&a…

【3Ds Max】可编辑多边形“边界”层级的简单使用

目录 示例 &#xff08;1&#xff09;挤出 &#xff08;2&#xff09;插入顶点 &#xff08;3&#xff09;切角 &#xff08;4&#xff09;利用所选内容创建图形 &#xff08;5&#xff09;封口 &#xff08;6&#xff09;桥 示例 这里我们首先创建一个长方体&#xff…

3D角色展示

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>3D卡片悬停</title><style>font-face {font-family: "Exoct";src: url("htt…