视觉识别摄像头积木块编程指南¶
视觉识别摄像头简介¶
(1)视觉识别摄像头可以作为Xtron的扩展来使用,它是一款用于图像识别的传感器。
(2)其内置的深度学习引擎可以识别多种目标物体,例如颜色检测、球体检测、人体检测、卡片识别等。
(3)检测结果可以通过 I2C 进行输出,体积小巧,功耗低,所有算法本地处理,无须联网,可广泛应用于人工智能教具、创客等产品或领域。
(4)提供了简单而实用的参数设置功能:摄像头帧率,LED 颜色,数码变焦,白平衡,算法性能设置。合理设置这些参数,将会有利于摄像头性能的提升。
下面我们将介绍视觉识别摄像头的使用方法。
视觉识别摄像头硬件连接¶
视觉识别摄像头的外设和接口如图所示:
(1)将传感器左侧输出模式拨码开关1拨至下方,2拨至上方;
(2)将传感器连接到Xtron的I2C扩展接口;
(3)将传感器的地址选择拨码开关拨至对应位(默认地址0x60,对应MU00,1、2都在下方,只有在与其他传感器地址冲突时才需要进行更改,平时不推荐修改此设置),
视觉识别摄像头积木块介绍¶
初始化模块
开启算法
设置算法性能
关闭/开启摄像头高帧率模式
设置摄像头白平衡
(1)当摄像头视野中出现大面积有颜色的物体时,摄像头会发生白平衡失真,产生偏色现象,通过事先锁定白平衡能够防止此问题的发生。
(2)但白平衡功能并不总是有利于色彩还原的,合理使用白平衡对于颜色相关的算法是十分关键。
(3)白平衡的调节分为自动调节方式和固定参数方式,对于一张构图颜色均衡的图像,其 R,G,B 三个通道的值应是分布均匀的,如果 R、G、B 通道分布出现了失衡,自动白平衡功能会适时的修改各通道的色彩增益值使其重新分布均衡,而固定白平衡是不会改变其色彩增益的。
(4)模式介绍:
自动模式:适用于光照良好且对颜色要求不高的环境中使用;
锁定模式:适用于颜色还原要求较高的环境,让摄像头面对白纸进行白平衡校准,然后锁定白平衡参数,锁定后颜色不会随环境的改变而变化;
白光模式:适合于白色灯光或者阴天环境中使用,该模式也属于自动白平衡模式;
黄光模式:适合于黄色灯光或者阳光环境中使用,该模式也属于自动白平衡模式。
(5)锁定白平衡的校准方法
将摄像头面向一张白纸 10~20cm 处,确保摄像头中心区域完全面向白纸,灯光照向白纸,但尽量不要有阴影遮挡;
调用锁定白平衡指令,或短按功能按键(摄像头左侧 mode 键);
摄像头的 LED 会闪烁一下白色灯光,开始白平衡校准;
几秒钟后,当 LED 闪烁一下青色灯光后,表明白平衡校准完成;
如果 LED 闪烁为紫色灯光,则表明校准失败,可以再次重新校准。
备注 1:由于校准白平衡需要几秒钟的时间,所以使用软件锁定白平衡时应该位于小 MU 设置最后使用,并设定 2 秒左右的暂停时间等待校准完成。
备注 2:按键方式可以在小 MU 运行的任何时刻去校准白平衡,而指令模式只适合于开机后的配置阶段使用。
备注 3:如果校准时使用的不是白纸,即便校准后显示为青色灯光,那么图像也可能是处于偏色状态的,因为该功能会将其他颜色尽量调节为白色。
(6) 锁定白平衡模式的使用场景
设置摄像头数码变焦
板载LED灯光设置
恢复模块默认设置
判断摄像头是否检测到目标
判断摄像头是否检测到颜色
(1)检测到目标位置的颜色后,返回true, 否则返回False。
(2)色块检测与颜色识别的区别:
(3)颜色Label分类标签的定义:
判断摄像头是否检测到色块
检测的目标色块可以在下拉框里选择,摄像头检测到所选目标色块后,返回true, 否则返回False。
获取检测目标的坐标以及大小
返回值是检测到的目标的坐标。检测目标可以在下拉框选择,获取的值有横向,纵向坐标,以及目标的宽度和高度。
(1)X-Y 坐标:摄像头输出图像的宽高比例为 4:3。在图像坐标系中,水平与垂直坐标均被量化到了 0~100 的范围内,其含义是该坐标相对于完整图像的百分比位置。例如 X 为30时,即该物体的 X 坐标位于水平方向距离原点 30%的位置上。
(2)W-H 宽高:当检测到物体后,返回物体的 Width 宽度值和 Height 高度值,其量程同样被量化到了 0~100 的范围内,其 W 宽度的含义是其在整个水平方向所占据的百分比值,H 高度的含义是其在整个垂直方向所占据的百分比值。需要注意的是,由于水平垂直的比例是 4:3,所以对于宽高相同的正方形物体而言,其输出的宽高值是存在一个 3:4 的比例关系的,而并不是相等的关系。
(3)Label 分类标签:对于具有分类识别功能的算法而言,还会根据所检测到的不同物体输出其对应的分类标签值,该值是内部设定好的一系列数字,每一个数字对应一个特定的物体,以球体算法为例,当 Label 标签为 1 时,代表检测到了一个乒乓球,而如果 Label 标签输出为 2,则说明此刻检测到的是一个网球。Label 分类标签在颜色和卡片的算法中是一个十分关键的信息。
获取目标颜色里对应的RGB值
颜色识别输出结果并不是坐标和宽高,而是颜色的 label 标签以及 R 红,G 绿,B 蓝三个通道的值(范围 0~255)。在使用颜色识别时可以指定识别区域的坐标,其余参数为默认值。
判断是否检测到形状卡片里所选形状
检测到形状卡片里所选形状卡片后,返回true, 否则返回False。形状有钩,叉,圆形,方形,三角形可以选。
判断是否检测到交通卡片里所选图标
检测到交通卡片里所选图标后,返回true, 否则返回False。图标有向前,向左,向右,掉头,停车可以选。
判断是否检测到数据卡片里对应数字
检测到数字卡片里所选数字后,返回true, 否则返回False。数字有0-9可以选择。
判断是否检测到所选颜色
检测到所选的颜色后,返回true, 否则返回False。颜色有9种可以选择。
完整示例¶
球体与人体检测:
球体算法的特殊性:球体算法分为搜索阶段和跟踪阶段,在球体未检测到时处于搜索阶段,此时处理速度相对比较慢,检测距离也会比较近。一旦检测到球体后,会进入跟踪阶段,处理速度会有所提升,检测距离也会变远。当球体丢失后,会再次进入搜索阶段。
人体算法的有效特征:人体检测实际是检测人体的上半身特征,上半身特征是指由头部(必须包含人脸)和胸部以上(肩膀)构成的特征组合,如果图像中具有符合人体上半身特征,那么会被认为是有人体被检测到。
初始程序:采用I2C连接,启用人体检测算法,其余设置为默认。
循环程序:如果视觉传感器检测到人体,会通过I2C向Xtron发送检测到的数据,Xtron会通过屏幕显示位置和类型信息,否则循环显示未检测到人体,球体检测同理。
实验现象:未检测到人体则视觉传感器闪红灯,屏幕显示”body undetected”。检测到人体则视觉传感器闪蓝灯,屏幕显示返回的坐标等信息。
卡片识别
我们具有 3 类卡片算法:形状卡片,交通卡片,数字卡片。摄像头只能识别下述特定图案的卡片。在一幅图像中,同一个算法只能返回一个卡片的检测结果,但可以同时运行不同类型的卡片算法。
初始程序:采用I2C连接,启用交通卡片识别算法,其余设置为默认。
循环程序:如果视觉传感器检测到交通卡片,会通过I2C向Xtron发送检测到的数据,Xtron会通过屏幕显示位置和类型信息,否则循环显示未识别,其他类型的卡片识别同理。
实验现象:未检测到卡片则视觉传感器LED闪红灯,屏幕显示”card undetected”。识别到则视觉传感器LED闪蓝灯,屏幕显示返回的坐标信息和交通卡片的具体图案信息。
颜色识别
在使用颜色识别算法时,需要指定一个颜色识别区域,算法运行后只返回该区域内的颜色信息。颜色识别区域小,像素少,速度快,但容易因各别像素的偏色而造成可信度的降低;颜色识别区域大,像素多,速度慢,但容易受背景的干扰。颜色识别区域应根据实际需求而合理设置。
颜色识别输出结果并不是坐标和宽高,而是颜色的 label 标签以及 R 红,G 绿,B 蓝三个通道的值(范围 0~255)。
初始程序:采用I2C连接,启用颜色识别算法,锁定摄像头白平衡防止偏色,其余设置为默认。
循环程序:视觉传感器识别坐标(50,50)处的颜色,通过I2C向Xtron发送检测到的数据,Xtron会通过屏幕显示识别到的通道信息和颜色类别。
实验现象:视觉传感器始终不闪灯,屏幕显示返回的通道值和颜色的类别。
色块检测
后续将更新更多案例,敬请期待。。。