• 计算机视觉--通过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 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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91

    总结

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

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

  • 相关阅读:
    图解分布式事务实现原理(一)
    前端uniapp下载保存到手机相册,注意:下载图片路径必须是接口返回
    python字符串插入变量的多种方法
    Idea index过程时间长
    基于Prometheus的容器云平台监控架构设计
    C++反汇编 利用反汇编分析常见C/C++语句的底层实现(硬核)
    MySQL之什么情况下不走索引(索引失效)
    力扣--三数之和
    STM32CubeIDE 操作 LCD1602
    v-bind指令的详细介绍
  • 原文地址:https://blog.csdn.net/zyq880625/article/details/133751305