《OpenCV轻松入门》学习笔记第二天

Pyhon3 + OpenCV

  • 第四章 色彩空间基础
    • 类型转换函数:cv2.cvtColor()函数
  • 第五章 几何变换(暂定)
  • 第六章 阈值处理

第四章 色彩空间基础

1)GRAY色彩空间
灰度图像,通常指8位灰度图,其具有256个灰度级,像素值范围是[0, 255]
RGB色彩空间转为GRAY色彩空间时:
Gray = 0.299 * R + 0.587 * G + 0.114 * B
当从GRAY色彩空间转换为RGB色彩空间时:
R = Gray, G = Gray, B = Gray
2)XYZ色彩空间
是一种便于计算的色彩空间,可以与RGB色彩空间互相转换
3)YCrCb色彩空间
人眼视觉系统(HVS)对颜色的敏感度要低于对亮度的敏感度,在YCrCb色彩空间中,Y代表光源的亮度,色度信息保存在Cr和Cb中,其中,Cr表示红色分量信息,Cb表示蓝色分量信息
从RGB色彩空间转换为YCrCb色彩空间时:
Y = 0.299 * R + 0.587 * G + 0.114 * B
Cr = (R - Y) * 0.713 + delta
Cb = (B - Y) * 0.564 + delta
上式中 delta = 32768 (16位图像)
delta = 128(8位图像)
delta = 0.5 (单精度图像)
从YCrCb色彩空间转换为RGB色彩空间时:
R = Y + 1.403 * (Cr - delta)
G = Y - 0.714 * (Cr - delta) - 0.344 * (Cb - delta)
B = Y + 1.773 * (Cb - delta)
4)HSV色彩空间
是一种面向视觉感知的颜色模型,HSV色彩空间从心理学和视觉的角度出发指出人眼的色彩知觉主要包括三要素:色调(光的颜色),饱和度(色彩的深浅程度),亮度(人眼感受到的光的明暗程度)
可以与RGB色彩空间进行相互的转换
5)HLS色彩空间
与HSV色彩空间类似,只是HLS用“光亮度/明度L”替换了亮度V
6)CIELab*色彩空间
是均匀色彩空间模型,它是面向视觉感知的颜色模型。从视觉感知均匀的角度来说,人所感知到的两种颜色的区别程度,应该与这两种颜色在色彩空间中的距离成正比。在某个色彩空间中,如果人观察到的两种颜色的区别程度,与这两种颜色在该色彩空间中对应的点之间的欧氏距离成正比,则称该色彩空间为均匀色彩空间
CIELab中L表示像素的亮度,a表示从红色到绿色的范围,b表示从黄色到蓝色的范围。
7)CIELLuv*色彩空间(均匀色彩空间模型)
8)Bayer色彩空间
被广泛的应用于CCD和CMOS相机中。它能从单平面R,G,B交错表中获取彩色图像

类型转换函数:cv2.cvtColor()函数

HSV色彩空间:
H表示色调:
0 红色
60 黄色
120 绿色
180 青色
240 蓝色
300 品红色
360 红色
将色调除以2以后:
0 红色
30 黄色
60 绿色
90 青色
120 蓝色
150 品红色
180 红色
S表示饱和度:
范围为[0, 1]
·灰度颜色所包含的R, G, B的成分是相等的,相当于一种极度不饱和的颜色。所以,灰度颜色的饱和度值为0
·作为灰度图像显示时,较亮区域对应的颜色具有较高的饱和度
·如果颜色的饱和度很低,那么它计算所得色调就不可靠
V表示亮度:
范围为[0, 1]
亮度值越大,图像越亮;亮度值越低,图像越暗。当亮度为0时,图像为纯黑色。
cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
cv2.inrange(hsv, min, max)
roi = cv2.bitwise_and(img, img, mask= mask)

alpha通道:
在RGB色彩空间三个通道的基础上还可以加上一个A通道,也叫alpha通道,表示透明度。这种4个通道的色彩空间被称为RGBA色彩空间,PNG图像是一种典型的4通道图像。alpha通道的赋值范围是[0, 1],或者[0, 255],表示从透明到不透明。
b, g, r, a = cv2.split(img)
a[:, :] = k
bgra = cv2.merge([b, g , r, a])

第五章 几何变换(暂定)

第六章 阈值处理

阈值处理指的是剔除图像内像素值高于一定值或者低于一定值得像素点。
OpenCV提供函数cv2.threshold()和函数cv2.adaptiveThreshold()
1.threshold函数可以是多通道的
阈值分割类型:
1)二值化阈值处理
2)反二值化阈值处理
3)截断阈值化处理
4)超阈值零处理
5)低阈值零处理
2.自适应阈值处理只能是8位单通道
对于色彩均衡的图像,直接使用一个阈值就能完成对图像的阈值化处理。但是,有时候图像的色彩是不均衡的,此时如果只使用一个阈值,就无法得到清晰有效的阈值分割结果图像。自适应阈值处理在进行阈值处理时,通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理。与普通的阈值处理方法相比,自适应阈值处理能够更好的处理明暗差异较大的图像。
即cv2.adaptiveThreshold()函数
dst = cv2.adaptiveThreshold( src, maxValue, adaptiveMethod, thresholdType, blockSize, C )
3.Otsu处理
在使用函数cv2.threshold()进行阈值处理时,需要自定义一个阈值,并以此阈值作为图像阈值处理的依据,但有时候图像灰度级的分布是不均衡的。Otsu方法能够根据当前图像给出最佳的类间分割阈值。简而言之,Otsu方法会遍历所有可能阈值,从而找到最佳的阈值。

若有侵权,请联系删除

本读书笔记来源于教材。1


  1. 李立宗. OpenCV轻松入门: 面向python[M].北京. 电子工业出版社: 李立宗. 2019.5 ↩︎

你可能感兴趣的:(OpenCV学习,opencv,计算机视觉,python)