机器视觉:第三讲–OpenCV图像色彩基础
第一讲 开发环境搭建 第二讲 OpenCV基础操作 第三讲:计算机视觉的快速发展使图像处理成为核心技能,本文就色彩空间和OpenCV对于对于颜色空间相关操作进行讲解,为后续更复杂的图像处理算法学习打下坚实基础。
如有错误,恳请指教
文章目录
- 机器视觉:第三讲–OpenCV图像色彩基础
- 前言
- 一、色彩空间
-
- 1.基本概念
- 2.色彩空间的应用与意义
- 3.颜色编码方法
- 4.HSL和HSV的差异点
- 5.RGB转化到HSV的算法
- 二、OpenCV中对色彩空间处理
- 总结
前言
本文就主要对色彩空间以及OpenCV对于色彩空间等待一些处理进行讲解
一、色彩空间
1.基本概念
色彩空间又称色域,是色彩学中通过一维至四维坐标系统对颜色进行量化描述的数学模型。其本质是将人类主观感知的颜色转化为可计算的数值,从而在不同设备或媒介中实现色彩的标准化表达。
常见色彩空间类型:RGB,HSV(HSB),HSL,CMYK,Lab
1.RGB色彩空间: 基于红(Red)、绿(Green)、蓝(Blue)三原色的加色混合原理,主要用于显示设备(如显示器、摄像头)和图像采集,可表示约1677万种颜色。 特点:直接适配电子设备,但色域受硬件限制。
2.HSV(HSB) Hue:色相,即色彩,用角度度量,取值范围0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240° Saturation:饱和度,表示颜色接近光谱色的程度,取值范围0%~100%。一种颜色可视为某种光谱色与白色混合 结果。其中光谱色的占比越大,颜色越接近光谱色,颜色的饱和度也就越高。 Value:明度,表示颜色的明亮程度,取值范围0%(黑)~100%(白)。对于光源色,明度值与发光体的光亮度有关。对于物体色,明度值与物体的透射比或反射比有关。
3.HSL HSL顶部为纯白,不管是什么颜色 Hue:色相,即色彩,用角度度量,取值范围0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240° Saturation:饱和度,类似于浓度 Lightness:亮度
4.CMYK印刷四分色模式 采用青(Cyan)、品红(Magenta)、黄(Yellow)、黑(Key)的减色混合模型,适用于印刷行业,通过油墨叠加实现色彩还原。
5.Lab色彩空间。 基于人眼视觉的非线性模型,包含亮度(L)和颜色对立维度(a、b),独立于设备,常用于色彩校正和跨媒介色彩匹配。
2.色彩空间的应用与意义
设备适配性:不同设备(如显示器、打印机)的色域差异需通过色彩空间转换(如RGB→CMYK)确保颜色一致性。
视觉优化:YUV色彩空间分离亮度和色度,可提升视频编码效率;Lab空间则更符合人眼对亮度和色彩的敏感度差异。
标准化需求:国际组织(如ICC)制定色彩配置文件(.icm),统一不同色彩空间的映射规则,实现跨平台色彩管理。
3.颜色编码方法
YUV,是一种颜色编码方法。常使用在各个视频处理组件中。 YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。 Y表示明亮度(Luminance或Luma),也就是灰阶值,U和V表示显色度(Chrominance或Chroma),作用类似于描述影像色彩及饱和度,用于指定像素的颜色 YUUV的发明是由于彩色电视与黑白电视的过渡时期,YUUV最大的优点在于只需要占用极少的带宽 4:4:4代表完全取样 4:2:2表示2:1的水平取样,垂直完全取样,Y取4个UV各取2个 4:2:0表示2:1的水平取样,垂直2:1取样,Y取4个U取2个或V取2个——–目前常用 4:1:1表示4:1的水平取样,垂直完全取样
4.HSL和HSV的差异点
HSV中S控制纯色混入白色的量,值越大,白色越少,颜色越纯。V控制纯色混入黑色的量,值越大,黑色越少,明度越高。 HSL中S与黑白无关,饱和度不控制颜色中混入的黑白多少,L控制纯色中混入的黑白两种颜色 HSV中的S类似于10ml纯红加白色,HSL中的S类似于10ml纯红加水
5.RGB转化到HSV的算法
max=max(R,G,B):
min=min(R,G,B)
V=max(R,G,B)
S=(max–min)/max:
if R = max,H =(G–B)/(max–min)* 60
if G = max,H = 120+(B–R)/(max–min)* 60
if B = max,H = 240 +(R–G)/(max–min)* 60
if H < 0,H = H+ 360
二、OpenCV中对色彩空间处理
cvtColor() | img,colorspace | 图片色彩空间转换 | 无 |
split() | img | 分割颜色通道 | 返回值为(b, g, r)元组 |
merge() | (b, g, r) | 合并通道 | 传入值为(b, g, r)元组 |
使用方法如下
#常见颜色空间转换 cv2.COLOR_BGR2GRAY转为灰度图常用
#cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA
#cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV
#cv2.COLOR_BGR2YUV
#进色彩空间转换
cvt_img = cv2.cvtColor(img_cat,COLOR_BGR2GRAY)
#分割通道
b, g, r = cv2.split(img)
#合并通道
img2 = cv2.merge((b, g, r))
总结
本文介绍了机器视觉中的图像色彩基础知识,重点讲解了几种常见色彩空间(RGB、HSV、HSL、CMYK、Lab)的特点和应用场景。文章详细说明了各色彩空间的参数含义、转换算法,以及OpenCV中的相关处理函数,包括色彩空间转换(cvtColor)、通道分割(split)和合并(merge)操作。这些基础内容为后续更复杂的图像处理算法学习奠定了基础,对理解计算机视觉中的色彩处理具有重要意义。
评论前必须登录!
注册