opencv 颜色,opencv根据颜色划分区域

  opencv 颜色,opencv根据颜色划分区域

  本文主要介绍OpenCV在实战中的颜色空间,解释计算机视觉中常用的颜色空间,并将其应用于基于颜色的分割。我们还将与C和Python共享演示代码。以下细节朋友可以参考。

  00-1010 1不同颜色空间1.1RGB颜色空间1.2 Lab颜色空间1.3 YCrCb颜色空间1.4 HSV颜色空间2如何使用这些颜色空间进行分割2.1获取特定颜色的颜色值2.2应用分割阈值。在本教程中,我们将了解计算机视觉中常用的颜色空间,并使用它们进行基于颜色的分割。我们还将分享用C和Python编写的演示代码。

  在颜色分割中,很多项没有考虑不同光照条件的影响,这会严重影响结果。这个问题在很多计算机视觉应用中都会遇到,涉及到基于颜色的分割,比如肤色检测、红绿灯识别等等。因此有必要建立一个功能强大的颜色检测系统。

  文章结构如下:

  首先读取OpenCV中的图像并转换到不同的颜色空间,检查每个颜色空间中不同通道提供的新信息。

  2应用简单的颜色分割算法。

  

目录

  在这一节中,我们将介绍计算机视觉中使用的一些重要的颜色空间。我们不会描述它们背后的理论,我们只需要知道如何使用它们。

  OpenCV颜色空间转换非常简单。imread函数读取的图像以BGR格式加载,cvtColor函数在不同的色彩空间之间转换。

  下图是不同光照下的立方体图像。第一张图像是在阳光充足的室外条件下拍摄的,而第二张图像是在正常的室内光线条件下拍摄的。

  

1 不同的色彩空间

  RGB颜色空间具有以下特性:1 .它是一个加色空间,其中的颜色是由红R、绿G和蓝b线性组合而成的。物体的照明将影响该颜色空间中每个通道的值,并且三个颜色通道是相关的。让我们把上面的图像分成R、G、B三个分量进行观察,对色彩空间有更深入的了解。

  从下图可以看出,如果看蓝色通道,可以看到第二张图中魔方的蓝色和白色部分在室内光照条件下看起来很相似,但在第一张图中有明显的区别。这种不均匀性使得在这个颜色空间中基于颜色的分割非常困难。此外,两个图像的值之间存在总体差异。因此,RGB颜色空间存在着颜色值分布不均匀、色度和亮度混合等问题。

  

1.1RGB颜色空间

  与RGB空间类似,Lab也有三个图像通道。

  L:亮度通道,表亮度。a:颜色通道A,代表从绿色到品红色的颜色。b:颜色通道B,代表从蓝色到黄色的颜色。Lab色彩空间和RGB色彩空间完全不同。在RGB颜色空间中,颜色信息分为三个通道,但同样的三个通道也包含亮度信息。另一方面,在Lab颜色空间中,L通道独立于颜色信息,仅包含亮度信息。另外两个通道是彩色编码的。

  1.Lab颜色空间还具有以下特性:.感知的均匀颜色空间类似于我们感知颜色的方式。1.独立于设备(捕获或显示)。1.在Adobe Photoshop中广泛使用。1.通过复变换方程与RGB颜色空间相关。转换为Lab空间图像结果如下图所示:OpenCV中的图像读取

  从图中可以清楚地看出,照度的变化主要影响L分量。1.包含颜色信息的A和B分量在光照变化下不会经历大的变化。1.绿色、橙色和红色(它们是通道a的主色)的对应值在通道b中没有变化,类似地,蓝色和黄色(它们是通道b的主色)在通道a中没有变化.##

  

1.2 Lab色彩空间

  YCrCb色彩空间源自RGB色彩空间,具有以下三个组成部分。

  伽玛校正后从RGB获得的亮度或亮度分量。通道Y:

  Cr:Cr=R-Y(红色成分与亮度成分Y的距离)。

  • 通道Cb:Cb=B-Y(蓝色成分与亮度成分Y的距离)。
  •   此颜色空间具有以下属性。 1. 将亮度和色度分量分成不同的通道。1. 主要用于电视传输的压缩(Cr和Cb组件)。1. 取决于设备。 YCrCb颜色空间中分成其通道的两个图像如下所示:

      

      对于照度变化,可以针对强度和颜色分量对LAB进行类似的观察。与LAB相比,室外图像中红色和橙色之间的感知差异较小。白色在所有3个组件中发生了变化。

      

      

    1.4 HSV颜色空间

      HSV颜色空间具有以下三个成分:

      H色调,S饱和度,V明度。

      HSV最大的特点是它只使用一个通道来描述颜色(H),这使得指定颜色变得非常直观。但是HSV色彩取决于设备。

      两个图像的H,S和V分量如下所示。

      从下图可以看到

      H分量在两个图像中非常相似,这表明即使在光照变化下颜色信息也是完整的。

      两个图像中的S分量也非常相似。

      V分量表示亮度,因此它会因照明变化而发生变化。

      红色室外和室内图像的值之间存在巨大差异。这是因为H值是以角度表示红色表示起始角度。因此它可能会取角度 [300,360]和[0,60]之间的值。

      

      

      

    2 如何使用这些颜色空间进行分割

      现在我们已经了解了不同的颜色空间,让我们首先尝试使用它们来检测魔方中的绿色。

      

      

    2.1 获取特定颜色的颜色值

      找到每个颜色空间的绿色值的近似范围。通过获取每个像素的所有颜色空间的值,如下所示:

      

      

      

    2.2 应用分段阈值

      该部分就不叙述了,详情见参考,实际用处不大。只是应用inRange函数选择合适的阈值分割图像而已。在实际中,通过颜色分割图像一般效果很差。建议不要使用,了解下就行了。

      到此这篇关于OpenCV实战之OpenCV中的颜色空间的文章就介绍到这了,更多相关OpenCV颜色空间内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

    郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

    相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: