0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

图像的颜色空间及其OpenCV实现

新机器视觉 来源:新机器视觉 作者:Soumyadip Sarkar 2020-12-26 11:33 次阅读

对图像的颜色空间做了一个概念性的介绍,并通过代码的方式可视化了每种颜色空间的每个通道所表示的意义。

文章内容包括:

什么是颜色空间?

颜色空间有哪些类别?

如何在OpenCV中实现?

什么是颜色空间?

颜色是一种连续的现象,它意味着有无数种颜色。但是,人类的眼睛和感知能力是有限的。所以,为了识别这些颜色,我们需要一种媒介或这些颜色的表示,这种颜色的表示被称为色彩空间。在技术术语中,一个颜色模型或颜色空间是一个特定的3-D坐标系统以及该系统中的一个子空间,其中每一种颜色都由一个单点表示。

有哪些颜色空间的类型?

目前主要有五种类型的颜色模型。但是,我将只写一些常见的(RGB、HSV和HSL)。

RGB(Red Green Blue)

HSL(Hue Saturation Lightness)

HSV(Hue Saturation Value)

YUV(Luminance, blue–luminance, red–luminance)

CMYK(Cyan, Magenta, Yellow, Key)

RGB颜色空间:

RGB颜色空间是三维坐标系中红、绿、蓝坐标所表示的著名颜色空间之一。在更专业的术语中,RGB将颜色描述为由三个部分组成的元组。每个部分都可以取0到255之间的值,其中元组(0,0,0)表示黑色,元组(255,255,255)表示白色。元组的第0、第1和第2个部分分别表示红、绿、蓝的分量。

RGB颜色空间的Python实现:

这里我们导入了必要的库,cv2用于颜色空间转换,NumPy用于数组操作,Matplotlib用于显示图像,os用于访问图像目录,tqdm用于显示加载栏。

pIYBAF_mrzuAC3dnAAB4V4n5E0c076.jpg

设置两个空列表Z和X,分别用于存储带有各自图像的标签,然后指定图像大小和路径目录。在这之后,我定义了两个函数,用于返回flower类型(assign_lable)和访问每个图像、读取和调整其大小(make_train_data)。

o4YBAF_mr1CAYQOqAACKoiFlu0A739.jpg

加载图像,然后在OpenCV以BGR格式读取图像时将BGR颜色空间转换为RGB颜色空间,但Maplotlib使用RGB格式来显示图像。这就是为什么我们需要转换颜色空间后,读取图像为RGB。

然后对固定图像进行三份拷贝,并将每份拷贝的任何双色通道设为零,分别用于访问红、绿、蓝通道。如果你让第0个颜色通道都是0那么你只会得到蓝色通道。

o4YBAF_mr2SANmBMAACZqsKfmMc732.jpg

显示图像:

pIYBAF_mr3SAPkrQAAAvTwarCMU690.jpg

HSL颜色空间:

HSL的一般含义是色调、饱和度和明度。你可以将HSL以圆柱体的形式可视化,如图2(a)所示。围绕圆柱体的是不同的颜色,比如绿色、黄色、红色等等(我们真正想要的颜色)。饱和度是指颜色的多少,而明度是指颜色有多暗或多亮。正如你所看到的,圆柱体的顶部全是白色,底部全是黑色。

图2:HSL颜色空间

HSL颜色空间的Python实现:

使用OpenCV函数**cvtColor()**将BGR颜色空间转换为HSL颜色空间,在这里我们需要传递图像,以及从哪个颜色空间到哪个颜色空间我们想要改变图像。然后再复制并使两个颜色通道为零,以便分别显示每个颜色通道。

o4YBAF_mr4iADU2EAAB072deLNg421.jpg

现在显示三个不同的颜色通道→

o4YBAF_mr5eAYXP0AAAssp18DtY928.jpg

HSV颜色空间:

HSV这个名字来自于颜色模型的三个坐标,即色相、饱和度和值。它也是一个圆柱形的颜色模型,圆柱体的半径表示饱和度,垂直轴表示值,角度表示色调。对于观察者,色调是占主导地位的,饱和度是混合到色调中的白光的数量,value是chrome的强度,value较低颜色变得更加类似于黑色,value越高,颜色变得更加像颜色本身。通过改变这些参数,我们可以生成不同的颜色。

图3:HSV颜色空间

HSV颜色空间的Python实现:

使用cvtColor()函数将色彩空间转换为HSV色彩空间。然后再复制并使两个通道置为零,以便分别显示每个通道。

o4YBAF_mr6mAeNm6AABankd0hj0461.jpg

单独显示每个颜色通道:

英文原文:https://medium.com/analytics-vidhya/image-processing-series-part1-colorspaces-836d2e3ca700

责任编辑:xj

原文标题:图像处理基础:颜色空间及其OpenCV实现

文章出处:【微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    26

    文章

    1226

    浏览量

    55843
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40790
  • 颜色空间
    +关注

    关注

    0

    文章

    3

    浏览量

    1408

原文标题:图像处理基础:颜色空间及其OpenCV实现

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenCV筑基之图像的仿射变换方法总结

    图像的几何变换是指将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。
    的头像 发表于 03-19 11:11 206次阅读
    <b class='flag-5'>OpenCV</b>筑基之<b class='flag-5'>图像</b>的仿射变换方法总结

    如何实现PIL和OpenCV之间图像数据的转换呢?

    PIL图像数据格式转换成OpenCV图像数据格式
    的头像 发表于 02-25 13:43 518次阅读

    在全志H616核桃派上实现USB摄像头的OpenCV颜色检测

    在给核桃派开发板用OpenCV读取图像并显示到pyqt5的窗口上并加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。颜色检测核
    发表于 01-22 10:10

    在核桃派上实现USB摄像头的OpenCV颜色检测

    在前几周的文章中已经介绍过如何在核桃派上用OpenCV读取图像并显示到pyqt5的窗口上,这里在上一篇文章的基础上,给开发板加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出
    的头像 发表于 01-20 17:50 497次阅读
    在核桃派上<b class='flag-5'>实现</b>USB摄像头的<b class='flag-5'>OpenCV</b><b class='flag-5'>颜色</b>检测

    OpenCV4之图像的轮廓

    图像的轮廓是指图像中具有相同颜色或灰度值的连续点的曲线。轮廓和边缘是有联系的,边缘是轮廓的基础,轮廓是边缘的连续集合。
    的头像 发表于 01-02 12:24 238次阅读

    OpenCV4.8 CUDA编程代码教程

    OpenCV4支持通过GPU实现CUDA加速执行,实现OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下。
    的头像 发表于 12-05 09:56 454次阅读
    <b class='flag-5'>OpenCV</b>4.8 CUDA编程代码教程

    基于OpenCV的DNN图像风格迁移

    /deep-photo-styletransfer 项目,需要安装 CUDA、pytorch、cudnn等等,配置能花一天的时间。 不过最近我发现一个非常好的开源应用项目,那就是基于OpenCV的DNN图像风格迁移。你只需要安装Open
    的头像 发表于 10-30 10:03 249次阅读

    Opencv调用bmcv_image_vpp_convert做缩放或者颜色空间转换,得到的图片不一致是为什么?

    Opencv 读取图片后,cvMat 转为bmimage之 后, 调用 bmcv_image_vpp_convert 做缩放或者颜色空间转换,得到的图片不一致
    发表于 09-19 07:41

    用迅为RK3568开发板使用OpenCV处理图像颜色通道提取ROI

    本小节代码在配套资料“iTOP-3568 开发板\\\\03_【iTOP-RK3568 开发板】指南教程 \\\\04_OpenCV 开发配套资料\\\\07”目录下,如下图所示: 在计算机的色彩图像
    发表于 09-01 10:45

    OpenCV库在图像处理和深度学习中的应用

    本文深入浅出地探讨了OpenCV库在图像处理和深度学习中的应用。从基本概念和操作,到复杂的图像变换和深度学习模型的使用,文章以详尽的代码和解释,带领大家步入OpenCV的实战世界。
    的头像 发表于 08-18 11:33 505次阅读

    利用OpenCV进行颜色检测

    关于利用OpenCV进行颜色分类,本文包含了HSV介绍及应用、cv2.inRange及应用、RGB与HSV通道的区别三个方面。
    的头像 发表于 08-18 10:32 857次阅读
    利用<b class='flag-5'>OpenCV</b>进行<b class='flag-5'>颜色</b>检测

    iTOP-3568开发板使用OpenCV处理图像-颜色转换

    的源文件 code,转换的色彩空间,在 opencv 中有超过 150 种颜色空间转换方法,但是经常用的只有 BGR-灰度图和 BGR-HSV BGR 和灰度图的转换
    发表于 08-14 10:46

    IP库新增多种颜色转换空间IP简介

    颜色空间转换是图像及视频中常用的解决方案,涉及hsv-rgb、rgb-ycrcb等一些常见的颜色空间互相转换,今天带来几种常见的
    的头像 发表于 07-17 08:48 1109次阅读
    IP库新增多种<b class='flag-5'>颜色</b>转换<b class='flag-5'>空间</b>IP简介

    OpenCV图像的基本表示方法

    二值图像是指仅仅包含黑色和白色两种颜色图像。在计算机中,将白色像素点处理为“1”,将黑色像素点处理为“0”,以方便进行后续的存储和处理等操作。由于图像只有黑色和白色两种不同的
    发表于 07-13 12:34 355次阅读

    Python OpenCV教程:特定颜色的检测

    在这篇OpenCV Python文章中,我想展示OpenCV中的基本颜色检测示例。 我们用颜色空间颜色
    的头像 发表于 07-03 10:30 648次阅读