照明模型
1、光通量:指人眼所能感觉到的辐射功率,它等于单位时间内某一波段的辐射能量和该波段的相对视见率的乘积。
光通量本质上表示的是可见光的功率。其单位为lm(流明)。与瓦特(w)的换算关系为:1流明=0.00146瓦。
2、辐照度:指投射到一平面上的辐射能量密度。即到达一表平面上,单位时间,单位面积上的辐射能。
辐照度以符号E表示,常用单位是lux(勒克斯)。1lux=1lm/m^2
参考资料
机器视觉光源的分类及特点: https://blog.csdn.net/wills798/article/details/83749177
灰度与彩色图像成像原理
1、数字图像格式(灰度):数字图像往往由二维矩阵表示,每个像素点包含一个字节(标识符:0-255,共256),二维图像中不同横纵坐标对应的像素的值组成了二维矩阵。
2、彩色传感:彩色图像每个像素点对应了RGB三个颜色分量,故每个像素点用三个字节表示(标识符:R:0-255,G:0-255,B:0-255)
一个彩色图像可以被拆分为三个颜色通道:红色、绿色、蓝色。(类似于图层的叠加)
颜色模型与颜色空间
1、RGB颜色模型 :所有颜色均由R(红色)G(绿色)B(蓝色)三种基色混合而成(反射光)。
2、CMYK颜色模型:即利用RGB补色来构成颜色空间(吸收光)。
3、HSI颜色模型:色调H描述纯色的属性,饱和度S表示纯色被白光稀释的程度,亮度I表示物色的光强度概念。
利用OpenCV实现颜色空间分解
1、相关函数
dst = cv.cvtColor(src,code[,dst[,dstCn]])
#颜色空间转换
#src:要转换的原始图像
#code:要转换的颜色空间类型
#dst,dstCn可省
其中,code
值常取:cv.COLOR_BGR2GRAY
(转换为灰度图)、cv.COLOR_BGR2HSV
(转换为HSV色彩空间)
bgr[x,y,z]
#通道分离
#x,y,z分别表示b、g、r三个通道的参数
#如bgr[:,:,0]表示蓝色(blue)
2、OpenCV中的颜色空间:
- OpenCV中,彩色图像默认格式为BGR格式,颜色三通道顺序为B、G、R;
- OpenCV中,HSI/HSV颜色空间中,H取值范围为0-180,其他两者为0-255;
- HSV中V指的是RGB里的最大值,V=max(r,g,b);HSI中I指的是平均值,I=(r+g+b)/3;
3、代码
import cv2 as cv #导入OpenCV模块
filename = r"E:\lena.jpg" #设置文件路径
img = cv.imread(filename) #读入图像文件
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #转换为灰度图像
cv.imshow("souce image", img) #显示原图
cv.imshow("gray", gray) #显示灰度图
cv.waitKey() #等待键入
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) #转换为HSV图
cv.imshow("Hue", hsv[:, :, 0]) #色调H通道(HSV)
cv.imshow("Saturation", hsv[:, :, 1]) #饱和度S通道(HSV)
cv.imshow("Value", hsv[:, :, 2]) #亮度V通道(HSV)
cv.waitKey() #等待键入
cv.imshow("Blue", img[:, :, 0]) #蓝色通道(BGR)
cv.imshow("Green", img[:, :, 1]) #绿色通道(BGR)
cv.imshow("Red", img[:, :, 2]) #红色通道(BGR)
cv.waitKey() #等待键入
cv.destroyAllWindows() #关闭所有窗口
4、结果
原图与灰度图对比:
HSV色彩空间各通道对比:(依次为:H、S、V)
BGR色彩空间各通道对比:(依次为:B、G、R)
过客朔越 发布了11 篇原创文章 · 获赞 21 · 访问量 2413 私信 关注感谢CSDN免费开课一学即懂的计算机视觉(第一季),感谢屈桢深老师的讲解。本文部分图片及代码均取自于以上课程。