200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > AI笔记: 计算机视觉之照明模型和颜色模型

AI笔记: 计算机视觉之照明模型和颜色模型

时间:2023-01-06 01:20:29

相关推荐

AI笔记: 计算机视觉之照明模型和颜色模型

照明模型

光通量

人能够看到周围的世界有2个部分构成:外在光源、光源物体表面的情况光通量是指人眼所能感觉到的辐射功率,它等于单位时间内某一波段的辐射能力和该波段的相对视见率的乘积以符号表示,单位是lm(流明)1lm = 0.00146瓦

不同光源的典型值

辐照度

辐照度:指投射到一个平面表面上的辐射通量密度(我们能够感受到的光的强弱)。指达到一表平面上,单位时间,单位面积上的辐射能以符号E表示,通常单位是lux(勒克斯)1lux = 1lm / m^2

一些典型的辐照度

常见光源

按照不同分类

方向:直射光、散射光(漫射板)光谱:可见光、进可见光其他:偏振、其他

关于背光源

光源从物体的背部照明特点:发光面是一个散射面,均匀性好。可用于镜面反射材料,如晶片或玻璃基底上的伤痕检测;LED检测,微笑电子元件尺寸、形状、靶标测试

颜色光源

相近颜色过滤(变白或减弱)互补色加强(变黑或加强)特点:如果希望更加鲜明地突出某些颜色,则选择色环上相对应的互补颜色光源照明,这样可以明显地提高图像的对比度例子:PCB板绿色背景,用白光照射,MARK点对比度不够高,容易和背景混淆在一起,难以分辨。绿色背景采用红色光源提高对比度,MARK点清晰可见。

颜色模型

RGB模型CMYK模型HSI模型

颜色相关OpenCV的对应实现

1)颜色空间装换

c++实现

// 第一个参数:输入的图像// 第二个参数:转换以后的图像// 第三个参数:code: COLOR_BGR2GRAY, COLOR_BGR2HSV 表示在哪两个空间进行转换void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0);

python实现

dst = cv.cvtColor(src, code[, dst[,dstCn]])

2)通道分离

c++实现

// 第一个参数:原始多通道的图像// 第二个参数:通道分离后的结果,通常是个数组void split(const Mat& src, Mat *mvBegin);

python实现:形如:bgr[:,:,0]表示第0个通道(blue)提取出来

3 )示例程序

3.1 Cpp版

#include "opencv2/opencv.hpp"using namespace cv;int main(void) {char *fn = "D:\\lena.jpg";Mat image1 = imread(fn);Mat image, gray, hsv, hsvChannels[3];pyrDown(image1, image);cvtColor(image, gray, COLOR_BGR2GRAY); // 把原始图像转化成灰度图像imshow("source image", image);imshow("gray", gray);waitKey(); // 不加这句话,窗口会闪退cvtColor(image, hsv, COLOR_BGR2HSV); // 把原始图像转化成hsv图像split(hsv, hsvChannels); // 通过split函数把hsv三个通道分离开来imshow("Hue", hsvChannels[0]); // 色度通道imshow("Saturation", hsvChannels[1]); // 饱和度通道imshow("Value", hsvChannels[2]); // 亮度通道waitKey(); return 0;}

3.2 Python版

import cv2 as cvfilename = r'/Users/johnny/Downloads/1.jpg'img = cv.imread(filename)gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)cv.imshow("source image", img)cv.imshow("gray", gray)cv.waitKey()hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) # 将bgr转化为hsv# 显示hsv的各个通道cv.imshow("Hue", hsv[:, :, 0]) # 在最后一维指定通道cv.imshow("Saturation", hsv[:, :, 1])cv.imshow("Value", hsv[:, :, 2])cv.waitKey();# 显示bgr的各个通道cv.imshow("Blue", img[:, :, 0])cv.imshow("Green", img[:, :, 1])cv.imshow("Red", img[:, :, 2])cv.waitKey()cv.destroyAllWindows()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。