第16课 机器视觉传感器

小 MU 视觉传感器
3.4 机器视觉 - 图1

小 MU 是一个集成了多种视觉算法及传感功能的嵌入式图像识别模块,采用 ESP32 双核处 理器,配有一颗 VGA85°无畸变广角镜头,具有速度快,视野广,体积小,功耗低等特点。小 MU 的视觉算法全部由摩图科技自主研发,包括色块检测,颜色识别,球体识别,人体检测,以 及形状、交通、数字卡片识别,通过固件升级还可以获得更多算法的支持。摄像头上方具有一颗 高度集成的光线传感器,可以实现环境光强度的检测,红外测距,手势方向识别功能。模块自身 还具有 WIFI 功能,可以实现图传和无线通讯。小MU采用 UART 和 I2C 作为主要通讯方式,可以在任何嵌入式平台上使用。针对创客与青少年教育,小 MU 全面支持 Arduino,MicroBit, Mixly,Mind+主流开发平台。

小MU工作原理
3.4 机器视觉 - 图2

小MU作为嵌入式视觉识别模块,其算法全部在芯片内部完成运算处理,无须云端服务器
的支持,通过一些简单的寄存器配置即可开启算法。算法开启后,小 MU 将开始不断的处理摄像头所拍摄到的图像,如果图像中出现了目标物体(与算法检测内容一致的物体)且大小,角度, 清晰度等可以满足识别的要求,那么就会将该物体在图像中的相对位置,大小,分类编号等数据 写入寄存器,每处理一幅图像这些数据就会被刷新,用户通过读取这些寄存器来获取图像识别的 结果。
在 Arduino 平台,提供了完整的库函数来实现对小MU 的操作,在 MicroBit,Mixly,Mind+
平台中则提供了可视化编程模块。使用 C 代码编程将会更有利于发挥小 MU 的性能,而在可视 化编程中,为了让用户操作简单易上手,对部分功能做了简化处理。

小MU使用步骤
以掌控板检测算法为例进行介绍。
一. 设置通讯模式
小MU支持4种通讯模式:UART,I2C,,图传模式。根据所需要的通讯方式,拨
动小 MU左侧的Output拨码开关。
image.png选择通讯方式后,程序中的通讯方式应与拨码开关保持一致。编程时应首先配置通讯方式, 然后才可以进行其他的参数配置,使用过程中不可更改,每次切换通讯方式,需要重启小 MU。
3.4 机器视觉 - 图4
初始化通讯方式
*二. 设置小 MU 地址

小 MU 支持 4 个地址:0x60(默认),0x61,0x62,0x63。当小 MU 与其他传感器地址
冲突时需要进行更改。I2C 模式下支持多个不同地址的小 MU 协同工作,可以给小 MU 分配不 同的地址。一般情况下保持默认地址即可。
3.4 机器视觉 - 图5
选择设备地址后,代码中的设备地址应与拨码开关保持一致。编程时应首先配置设备地址,
然后才可以进行其他的参数配置,使用过程中不可更改,每次切换设备地址,需要重启小 MU。 地址选择后,后续代码应与该地值保持一致。

3.4 机器视觉 - 图6
初始化时配置设备地址
3.4 机器视觉 - 图7
程序中的设备地址应保持一致
三. 线路连接
3.4 机器视觉 - 图8
四. 编写代码并烧录

  1. 打开Mind+软件选择掌控板

3.4 机器视觉 - 图9

  1. 传感器选择视觉识别摄像头

3.4 机器视觉 - 图10

  1. 编写以下代码上传

3.4 机器视觉 - 图11
五. 运行测试
开启盘古斧扩展板运行程序。程序开始后,小 MU 首先 LED 短暂闪 烁一下白色,代表算法已开启,然后 LED 开始闪烁红色或蓝色,其中红色代表未检测到红色, 蓝色代表检测到红色,与此同时,如果小 MU 检测到红色,则 掌控板上的LED灯会显示红色,否则显示蓝色。
3.4 机器视觉 - 图123.4 机器视觉 - 图13
未检测到红色时,LED灯显示蓝色 检测到LED红色时,LED灯显示红色

小 MU 参数设置
小 MU 提供了简单而实用的参数设置功能:摄像头帧率,LED 颜色,数码变焦,白平衡,
算法性能设置。合理设置这些参数,将会有利于小 MU 性能的提升。

摄像头帧率
摄像头帧率指摄像头采集图片的速度,分为高速模式和标准模式,高速模式为 50fps,标准
模式为 25fps。提高摄像头帧率可以提高图像处理的速度,缓解图像拖影问题,但功耗会有一定 增加。环境较暗时,标准模式比高速模式成像要亮一些。
3.4 机器视觉 - 图143.4 机器视觉 - 图15

数码变焦与视野关系
小 MU 提供了数码变焦功能,共有 5 个档位(Zoom 值)可以使用,利用镜头缩放功能可 以看到远处的目标物体。Zoom 值小,则视野广,距离近,Zoom 值大,则视野窄,距离远。
3.4 机器视觉 - 图16

3.4 机器视觉 - 图17

算法性能设置
小 MU 视觉算法的运行分为两个阶段,一是算法处理,二是结果处理。这两个阶段对算法
的性能和速度起到关键的作用。
算法处理阶段:算法处理时会有一些内部参数的设置,参数的不同会直接影响检测效果。
一个算法也可能是由不同的小算法单元构成的,这些小的算法单元可能是负责图像预处理,检测,分类,校验,优化等等。如果这些小算法单元全部使用,那么检测结果的准确率是最高的,环境 适应性也是最好的,但处理时间会变慢。如果我们放弃一些小算法单元,那么将会提高算法的运 行速率,在可控的环境下也是可以得到较好的检测结果的。
结果处理阶段:算法处理后的数据是原始数据,中间可能夹杂着错误结果,偶尔的漏报,
或是误报等问题,所以在检测结果正式的输出前,会对数据结果做一定的预处理。
根据这两个阶段的不同的处理方法,每类算法都提供了 3 种性能选项:速度优先,均衡性
能,准确率优先。用户可以根据实际应用需求来选择最适合的性能:
3.4 机器视觉 - 图18
3.4 机器视觉 - 图19

光源的影响
良好稳定的光源对于视觉识别是一个非常重要的因素,采用劣质光源,强光直射,昏暗环
境,逆光环境等都不利于图像识别。
3.4 机器视觉 - 图20
劣质光源:摄像头在有些光源下会产生水波纹现象,当水波纹非常严重时就会影响到小 MU
的正常工作,可以用手机的相机功能来检测光源是否符合要求,不合格的光源在大部分手机上也 会产生水波纹现象。但这个现象并不一定会发生,这个与摄像头的曝光时间有关,视野内越明亮, 曝光时间短,水波纹也就越明显;
强光直射:当强光直射到目标物体上时,会造成其局部曝光过度或者反光的现象,此时会
影响到图像的完整性,导致无法正常识别。但通常这个现象只发生在一些特定的角度,有时只需 要换个角度就可以正常识别了;
昏暗环境:与人眼不同,摄像头对昏暗环境处理能力十分有限,不能依据人眼来判断是否
为昏暗环境。在自动白平衡模式下,摄像头的增益功能可以提高暗环境一定的亮度,但同时会产 生明显的噪点,加之环境中光线微弱,目标物体的颜色无法被正确的还原,导致图像识别效果变 差,甚至无法识别,不建议在昏暗环境中使用,如必须使用,可以使用 LED 补光灯;
逆光环境:当摄像头从昏暗的屋内面向明亮的窗户时,就会处于明显的逆光环境,逆光会
造成颜色信息的严重丢失,影响小 MU 的正常使用。但如果屋内是明亮的,那么逆光问题就会相对较弱,开启 LED 补光灯也可以缓解近距离的逆光问题。

3.4 机器视觉 - 图21
远距离需要放大目标物体:反之如果我们要检测的物体距离很远,为了能够看到远处的物
体,我们可以适当放大其尺寸,这样即便距离比较远也是可以检测到的。
3.4 机器视觉 - 图22
图像坐标系与检测结果
坐标系的概念大家并不陌生,生活中常用的有 1 维坐标系(线段),2 维坐标系(平面),
3 维坐标系(空间),作为图像而言是一个 2 维坐标系,它的两个轴分别表示 X(水平坐标,横 向坐标),Y(垂直坐标,纵向坐标)。
在数学教材中,我们常用的 2 维坐标系的原点为左下角,而在图像坐标系中,采用了左上
角为坐标原点,这是因为在显示一幅图像时,像素点总是从左上角开始,从左至右,由上而下逐行的向下显示数据的。我们以球体算法为例,讲解坐标系的概念以及小 MU 各检测结果的含义。
当一个网球处于小 MU 前方时,小 MU 会检测到该网球并返回 Detected 是否检测到,X-Y坐标,W-H 宽高,Label 分类标签。
3.4 机器视觉 - 图23

Status 检测状态:当小 MU 检测到目标物体时,该值输出为“真 True”,否则为“假 False”。
在读取其他算法结果时,首先应该检查是否检测到目标物体,然后再去处理坐标数据或是宽高数 据,否则就继续检测,这样可以提高不少的代码效率。

X-Y 坐标:小 MU 摄像头输出图像的宽高比例为 4:3。在小 MU 图像坐标系中,水平与垂 直坐标均被量化到了 0~100 的范围内,其含义是该坐标相对于完整图像的百分比位置。例如 X 为 30 时,即该物体的 X 坐标位于水平方向距离原点 30%的位置上。

W-H 宽高:当小 MU 检测到物体后,还会返回物体的 Width 宽度值和 Height 高度值,
其量程同样被量化到了 0~100 的范围内,其 W 宽度的含义是其在整个水平方向所占据的百分 比值,H 高度的含义是其在整个垂直方向所占据的百分比值。需要注意的是,由于水平垂直的比 例是 4:3,所以对于宽高相同的正方形物体而言,其输出的宽高值是存在一个 3:4 的比例关 系的,而并不是相等的关系。

Label 分类标签:对于具有分类识别功能的算法而言,还会根据所检测到的不同物体输出其 对应的分类标签值,该值是小 MU 内部设定好的一系列数字,每一个数字对应一个特定的物体,以球体算法为例,当 Label 标签为 1 时,代表检测到了一个乒乓球,而如果 Label 标签输出为 2,则说明此刻检测到的是一个网球。Label 分类标签在颜色和卡片的算法中是一个十分关键的信息。

示例程序:3.4 机器视觉 - 图24

标签卡片算法
小 MU 具有 3 类卡片算法:形状卡片,交通卡片,数字卡片。小 MU 只能识别下述特定图案的卡片。在一幅图像中,同一个算法只能返回一个卡片的检测结果,但可以同时运行不同类型的卡片算法。
3.4 机器视觉 - 图253.4 机器视觉 - 图263.4 机器视觉 - 图27