当前位置: 首页 > news >正文

OpenCV学习笔记二(色彩空间:RGB、HSV、Lab、mask)

一.RGB色彩空间

RGB颜色空间以R(Red:红)、G(Green:绿)、B(Blue:蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。在大自然中有无穷多种不同的颜色,而人眼只能分辨有限种不同的颜色,RGB模式可表示一千六百多万种不同的颜色,在人眼看来它非常接近大自然的颜色,故又称为自然色彩模式。红绿蓝代表可见光谱中的三种基本颜色或称为三原色,每一种颜色按其亮度的不同分为256个等级。当色光三原色重叠时,由于不同的混色比例能产生各种中间色。

OpenCV使用的默认格式为BGR格式,则可使用cvtColor函数将其转换为RGB格式。

cvtColor(input_image,output_image,COLOR_BGR2RGB);

BGR与RGB都是存储三种基本色通道,但通道的顺序不同。

二.HSV色彩空间

HSV(Hue,Saturation,Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型,HSV即颜色通道H(Hue)、饱和度通道S(Saturation)、亮度通道V(Value)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等,H由绕V轴的旋转角给定,红色对应于角度0°,绿色对应于角度120°,蓝色对应于角度240°,每一种颜色和它的补色相差180°;饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰;明度(V),颜色明亮的程度,明度值与发光体的光亮度有关。

img

HSV色彩空间在OpenCV上的取值范围如下:

  • H (0~180)

  • S (0~255)

  • V (0~255)

img

可使用cvtColor函数将BGR基本类型转换为HSV

 cvtColor(img, img_hsv, CV_BGR2HSV); 

三.LAB色彩空间

Lab(CIE Lab)颜色模型基于人对颜色的感觉,其数值描述正常视力的人能够看到的所有颜色。因为 Lab描述的是颜色的显示方式,而不是设备(如显示器、桌面打印机或数码相机)生成颜色所需的特定色料的数量,所以Lab被视为与设备无关的颜色模型。Lab色彩模型是由亮度(L)和有关色彩的a、b三个要素组成,L表示亮度,a表示从洋红色至绿色的范围,b表示从黄色至蓝色的范围。L的值域由0到100,L=50时,就相当于50%的黑色;a和b的值域都是由+127至-128,其中当a=+127时颜色为红色,当a渐渐过渡到-128时变成绿色;同样原理,当b=+127是黄色,b=-128是蓝色,所有的颜色就以这三个值交互变化所组成。

同样可以使用cvtColor进行转换

cvtColor(roi, roi, COLOR_BGR2Lab);

四.图像处理中的掩膜(mask)

在有些图像处理的函数中有的参数里面会有mask参数,即此函数支持掩膜操作。

数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”),其作用是:在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域。 图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。 数字图像处理中,掩模为二维矩阵数组,有时也用多值图像,图像掩模主要用于: ①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。 ②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。 ③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。 ④特殊形状图像的制作。

在所有图像基本运算的操作函数中,凡是带有掩膜(mask)的处理函数,其掩膜都参与运算(输入图像运算完之后再与掩膜图像或矩阵运算)。

可以使用inRange函数,在特定颜色取值范围内生成mask

void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);

http://www.lryc.cn/news/591828.html

相关文章:

  • DocsGPT:您的智能知识助手,解锁高效信息检索
  • 前端之HTML学习
  • 项目实战(18)-POE分离器
  • 渗透总结一
  • 手机兼容测试服务提供商对比分析:如何选择最合适的测试平台
  • 学习软件测试掌握什么基本知识?
  • 在VsCode上使用开发容器devcontainer
  • windows内核研究(驱动开发 第一个驱动程序和调试环境搭建)
  • VSCODE常规设置
  • 删除百度同步空间桌面图标
  • Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
  • 全桥LLC 分立电感变压器计算
  • Docker实战:使用Docker部署IT工具箱Team·IDE
  • vuex的理解以及应用
  • Spring中事务失效的情况深度分析
  • 深入理解 SemaphoreSlim 在.NET Core API 开发中的应用
  • ROS1/Linux——Launch文件使用
  • 三、CV_VGGnet
  • 从零开始学 Linux 系统安全:基础防护与实战应用
  • git merge 和 git rebase 的区别
  • Python获取网页乱码问题终极解决方案 | Python爬虫编码处理指南
  • C++中,不能声明为虚函数的函数类型
  • Redis红锁中的看门狗机制
  • FreeRTOS—中断管理
  • Pytorch深度学习框架实战教程03:Tensor 的创建、属性、操作与转换详解
  • 网络安全基础操作2
  • 【初始Java】
  • C语言---动态内存管理
  • mingw 编译 assimp v6.0.2 解决编译报错
  • Vue3 + WebSocket