机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

这篇具有很好参考价值的文章主要介绍了机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 颜色特征

1.1 RGB色彩空间

1.2 HSV色彩空间

1.3 Lab色彩空间

2 使用opencv-python对图像颜色特征提取并绘制直方图

2.1 RGB颜色特征和直方图

2.2 HSV颜色特征和直方图

2.3 Lab颜色特征和直方图


1 颜色特征

1.1 RGB色彩空间

  RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。

RGB颜色模型的优点是:

(1)易于理解;

(2)便于硬件实现,现代显示屏一般基于RGB模型;

(3)引入位分辨率(颜色深度),指一个像素中,每个颜色分量的比特数。位分辨率决定了色彩等级,例如8位颜色深度,每个颜色分量就有256种可能。

  RGB颜色模型的缺点在于三个分量均用于表示色调,即如果改变某一个分量的数值,这个像素的颜色就发生了改变。在颜色定位等工程中,使用RGB模型就要同时考虑R、G、B三个变量、较为复杂。

1.2 HSV色彩空间

   HSV中颜色的参数分别是:色调(H),饱和度(S),明度(V)。对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。

  由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛。在 HSV 颜色空间下,比 BGR 更容易跟踪某种颜色的物体,常用于分割指定颜色的物体。

1.3 Lab色彩空间

  Lab颜色模型是由CIE(国际照明委员会)制定的一种色彩模式。自然界中任何一点色都可以在Lab空间中表达出来,它的色彩空间比RGB空间还要大。另外,这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。

  由于Lab的色彩空间要比RGB模式和CMYK模式的色彩空间大。这就意味着RGB以及CMYK所能描述的色彩信息在Lab空间中都能得以影射。Lab颜色模型取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色, 负端代表蓝色。

2 使用opencv-python对图像颜色特征提取并绘制直方图

图像直方图的绘制调用opencv-python中的calcHist函数。

hist = cv2.calcHist([image],             # 传入图像(列表)
                    [0],                 # 使用的通道(使用通道:可选[0],[1],[2])
                    None,                # 没有使用mask(蒙版)
                    [256],               # HistSize
                    [0.0,255.0])         # 直方图柱的范围
                                         # return->list

2.1 RGB颜色特征和直方图

代码:

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

# 读取图片
pic_file='./photo/cat.jpg'
img_bgr = cv2.imread(pic_file,cv2.IMREAD_COLOR)
cv2.imshow("input",img_bgr)
# 分别获取三个通道的ndarray数据
img_b=img_bgr[:,:,0]
img_g=img_bgr[:,:,1]
img_r=img_bgr[:,:,2]

'''按R、G、B三个通道分别计算颜色直方图'''
b_hist = cv2.calcHist([img_bgr],[0],None,[256],[0,255])
g_hist = cv2.calcHist([img_bgr],[1],None,[256],[0,255])
r_hist = cv2.calcHist([img_bgr],[2],None,[256],[0,255])
m,dev = cv2.meanStdDev(img_bgr)  #计算G、B、R三通道的均值和方差
# img_r_mean=np.mean(r_hist)  #计算R通道的均值
# print(m)
# print(dev)

'''显示三个通道的颜色直方图'''
plt.plot(b_hist,label='B',color='blue')
plt.plot(g_hist,label='G',color='green')
plt.plot(r_hist,label='R',color='red')
plt.legend(loc='best')
plt.xlim([0,256])
plt.show()
cv2.waitKey(0)

图像和直方图显示: 

 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

2.2 HSV颜色特征和直方图

代码:

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

# 读取图片
pic_file='./photo/cat.jpg'
img_bgr = cv2.imread(pic_file,cv2.IMREAD_COLOR)
img_hsv = cv2.cvtColor(img_bgr,cv2.COLOR_BGR2HSV)
cv2.namedWindow("input",cv2.WINDOW_GUI_NORMAL)
cv2.imshow("input",img_hsv)

# 分别获取三个通道的ndarray数据
img_h=img_hsv[:,:,0]
img_s=img_hsv[:,:,1]
img_v=img_hsv[:,:,2]

'''按H、S、V三个通道分别计算颜色直方图'''
h_hist = cv2.calcHist([img_hsv],[0],None,[256],[0,255])
s_hist = cv2.calcHist([img_hsv],[1],None,[256],[0,255])
v_hist = cv2.calcHist([img_hsv],[2],None,[256],[0,255])
# m,dev = cv2.meanStdDev(img_hsv)  #计算H、V、S三通道的均值和方差

'''显示三个通道的颜色直方图'''
plt.plot(h_hist,label='H',color='blue')
plt.plot(s_hist,label='S',color='green')
plt.plot(v_hist,label='V',color='red')
plt.legend(loc='best')
plt.xlim([0,256])
plt.show()
cv2.waitKey(0)

图像和直方图显示: 

 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

2.3 Lab颜色特征和直方图

代码:

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

# 读取图片
pic_file='./photo/cat.jpg'
img_bgr = cv2.imread(pic_file,cv2.IMREAD_COLOR)
img_lab=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2LAB)
cv2.namedWindow("input",cv2.WINDOW_GUI_NORMAL)
cv2.imshow("input",img_lab)

# 分别获取三个通道的ndarray数据
img_ls=img_lab[:,:,0]
img_as=img_lab[:,:,1]
img_bs=img_lab[:,:,2]

'''按L、A、B三个通道分别计算颜色直方图'''
ls_hist = cv2.calcHist([img_lab],[0],None,[256],[0,255])
as_hist = cv2.calcHist([img_lab],[1],None,[256],[0,255])
bs_hist = cv2.calcHist([img_lab],[2],None,[256],[0,255])
# m,dev = cv2.meanStdDev(img_lab)  #计算L、A、B三通道的均值和方差
# print(m)

'''显示三个通道的颜色直方图'''
plt.plot(ls_hist,label='l',color='blue')
plt.plot(as_hist,label='a',color='green')
plt.plot(bs_hist,label='b',color='red')
plt.legend(loc='best')
plt.xlim([0,256])
plt.show()
cv2.waitKey(0)

图像和直方图显示: 

 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

参考来源:你真的了解眼里所见的色彩吗?(一文总结RGB/HSV/Lab) - 知乎

OpenCV—python 颜色空间(RGB,HSV,Lab)与 颜色直方图_SongpingWang的博客-CSDN博客_opencv 颜色文章来源地址https://www.toymoban.com/news/detail-473854.html

到了这里,关于机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机图形学---常用颜色模型汇总(RGB,CMY,HSV)

    本文整理自西安交通大学软件学院祝继华老师的计算机图形学课件,请勿转载 颜色模型 :某个三维颜色空间中的一个 可见光子集 ,包含某个颜色域的所有颜色 用途:在某个颜色域内方便地指定颜色; 在某种特定环境中对颜色的特性和行为的解释方法; 没有一种颜色模型能

    2023年04月08日
    浏览(54)
  • C++ opencv HSV颜色空间转换+RGB三通道提升亮度

    #include iostream #include iomanip #includeopencv2//opencv.hpp using namespace std; using namespace cv; //函数adjustBrightness用于图片增加亮度 void adjustBrightness(cv::Mat image, int targetBrightness) {     // 获取图像的通道数     int channels = image.channels();     // 计算调整亮度的因子     float factor = 1.0f;     if

    2024年03月09日
    浏览(52)
  • MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)

    1.颜色模型定义 2.各颜色模型简介 3.颜色模型的转换 颜色模型 :某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。例如,RGB颜色模型就是三维直角坐标颜色系统的一个单位正方体。颜色模型的用途是在某个颜色域内方便地指定颜色。由于每一个颜色域都

    2024年02月06日
    浏览(78)
  • 机器视觉(八):图像特征提取

    目录: 机器视觉(一):概述 机器视觉(二):机器视觉硬件技术 机器视觉(三):摄像机标定技术 机器视觉(四):空域图像增强 机器视觉(五):机器视觉与世界杯 机器视觉(六):频域图像增强 机器视觉(七):图像分割 机器视觉(八):图像特征提取 机器视觉

    2024年02月09日
    浏览(67)
  • Python图像处理:使用OpenCV对图像进行HSV和RGB表示法的转换

    Python图像处理:使用OpenCV对图像进行HSV和RGB表示法的转换 在图像处理中,我们经常需要使用不同的颜色表示法来处理图像。在OpenCV中,我们可以使用HSV(色相、饱和度、亮度)表示法来替代标准的RGB(红、绿、蓝)表示法来处理图像。HSV表示法更为直观和易于使用,因为它将

    2024年02月06日
    浏览(77)
  • SSE图像算法优化系列三十一:RGB2HSL/RGB2HSV及HSL2RGB/HSV2RGB的指令集优化-上。

           RGB和HSL/HSV颜色空间的相互转换在我们的图像处理中是有着非常广泛的应用的,无论是是图像调节,还是做一些肤色算法,HSL/HSV颜色空间都非常有用,他提供了RGB颜色空间不具有的一些独特的特性,但是由于HSL/HSV颜色空间的复杂性,他们之间的转换的效率一直不是很

    2024年02月15日
    浏览(52)
  • 【机器学习】特征工程 - 字典特征提取

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 特征工程就是从 「原始数据」 中提取 「特征」 ,以供 「算法」 和 「模型

    2024年02月11日
    浏览(51)
  • 【机器学习】特征工程 - 文本特征提取TfidfVectorizer

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 对 「文本」 进行特征提取时,一般会用 「单词」 作为特征,即特征词。

    2024年02月12日
    浏览(40)
  • 机器学习---特征提取

    1.  手工特征 —— 图像 1.1  Harris 角点检测 角点的特性 :向任何方向移动变化都 很大 。 Chris_Harris 和 Mike_Stephens 早在 1988 年的文章 《A CombinedCorner and Edge Detector》 中就已经提出 了角点 检测的方法,被称为 Harris 角点检 测。他把这个简单的想法转换成了数学形式。将窗口向

    2024年01月19日
    浏览(38)
  • OpenCV图像特征提取学习五,HOG特征检测算法

    一、HOG向梯度直方图概述   向梯度直方图(Histogram of Oriented Gradient, HOG)特征是基于对稠密网格中归一化的局部方向梯度直方图的计算。此方法的基本观点是:局部目标的外表和形状可以被局部梯度或边缘方向的分布很好的描述,即使我们不知道对应的梯度和边缘的位置。在

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包