计算机视觉--通过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进行显示。

二、实现

python 复制代码
import numpy as np
import cv2
from matplotlib import pyplot as plt

img = 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通道值设为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

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

相关推荐
涵美女程序猿2 分钟前
AI 商品图工具把循环扇细节改错了?Lingko AI 按原片逐项回查
人工智能
hey you~3 分钟前
语音机器人怎么配置,才能自动生成通话文字记录方便复盘?
人工智能·语音识别·语音机器人·离线转写·语音机器人通话转写·通话录音转文字
Pin_Qing5 分钟前
缓存能活多久,现在是个要算的参数
java·大数据·开发语言·人工智能·程序人生
lucas_AI11 分钟前
LLM 啃不动 500 万行代码?爱立信把「一次性的文档」变成「毫秒级检索引擎」
人工智能
aneasystone本尊12 分钟前
学习大模型训练的反向传播与优化器
人工智能
鲸能云13 分钟前
智能微电网平台架构设计:多能数据接入与AI调度闭环
人工智能
论文复现现场13 分钟前
RTX 3090 云GPU租赁价格对比:8家平台配置、计费方式与环境测试
linux·运维·人工智能·pytorch·深度学习·云计算·3090
艾莉丝努力练剑14 分钟前
【AI大模型接入SDK】Trae生成代码介绍
网络·c++·人工智能·学习·架构
kaixin_啊啊18 分钟前
【零基础学AI】第 16 章课后练习与答案
人工智能·ai
qq_252941316819 分钟前
航拍地面垃圾检测数据集 | 垃圾检测 航拍巡检 环境治理 目标检测 YOLO格式9224期
人工智能·yolo·目标检测·计算机视觉·垃圾检测·航拍地面