1. 案例目的
学习 AI 视觉感知模块的色块识别功能,并用 CoCube 跟随蓝色圆柱移动。
2. 使用材料
3. 软件平台
或直接打开添加有 AI 视觉感知模组的编程环境:MicroBlocks-AI Camera
4. 算法知识
算法简介
用户指定检测一个或多个颜色,判断图像中是否有该颜色的色块,返回其坐标和大小,支持多颜色多色块检测,颜色分类标签与颜色识别中的定义相同。
视频教程
视频教程:Sentry2视觉传感器-色块检测算法介绍_哔哩哔哩_bilibili
配置参数
用户需要指定待检测的颜色标签,最多可同时开启全部6种颜色检测,但速度会有所下降。用户还可以通过设置色块的最小宽度w和高度h来过滤那些小于该值的色块,以减少误报。
当通过主控设置寄存器时,有以下参数需要设置:
参数 | 含义 |
---|---|
1 | 无 |
2 | 无 |
3 | 有效色块最小宽度w |
4 | 有效色块最小高度h |
5 | 待检测的颜色分类标签1~6。特殊用法:通过往参数 5 中写⼊大于6的 RGB565 颜⾊值可以识别特定的颜⾊,例如写⼊0xFB00 为橙⾊,写⼊ 0xA11E 为紫⾊ |
在UI界面中,有几种预置的参数可以使用:
算法性能:
根据不同的应用需求来选择合适能算法性能,有3个选项可以设置,分别为“灵敏”、“均衡”、“准确”
在灵敏模式下识别速度快,帧率高。准确模式下可以检测远处的色块,但速度会降低。默认为均衡性能
特殊的:在准确模式下对色块有较好的识别和跟踪效果,但只能识别一个色块
同时检测的最大数量:
单个颜色的最大检测数量支持1~5个的输出
当设置为1时,只返回一个最优结果,如果图像中有多个色块,则返回最大的那个,如果大小相近,则优先返回左上角的那个
当设置大于1时,返回色块的数量不会超过这个值。
最小色块的区域大小:
如果背景中存在相同颜色的小色块,可以通过合理的设置最小值实现过滤功能
绝对值坐标系下的预设值为:2x2、4x4、8x8、16x16、32x32、64x64、128x128像素
百分比坐标系下的预设值为:1x1、2x3、3x4、6x8、9x12、21x28、42x56 %
待检测的颜色:
以按键形式提供用户选择,开启某个颜色后会显示一个小眼睛图标,未开启的颜色则会显示一个带斜杠的眼睛图标,可以同时开启一个或多种颜色
返回结果
识别到指定色块后会在UI界面上进行标识,显示其位置、大小、分类标签、名称等信息
当通过主控读取寄存器时,将会返回以下的数据:
结果 | 含义 |
---|---|
1 | 色块中心x坐标 |
2 | 色块中心y坐标 |
3 | 色块宽度w |
4 | 色块高度h |
5 | 颜色分类标签 |
使用技巧
当确定需要跟踪一个物体时,比如检测白色的道路或是跟踪小球,可以将色块数量设置为1,可以提高速度,减少误报
采用较小的识别区域并使用准确性能模式,可以看到更远处的物体
识别大面积的色块时,运行帧率会明显下降,此时可以用灵敏模式
当画面存在偏色时,需要锁定白平衡功能
需要使用到的积木说明
- Sentry2 初始化积木
一个可选参数是 i2c 地址。默认为 96。(0x60)
在使用 Sentry2 前需要先执行初始化积木。通常会放在“当启动时”帽子积木下。
- Sentry2 设置模式积木
需要设置模式为blob,即色块检测模式。
- Sentry2 检测结果
使用这个积木前需要确定blob算法模式已开启。
这块积木也是用来触发检测的积木,只有先使用这块积木,才能获得检测结果。
返回的结果为当前blob算法识别到的结果数量。
结果的数量会受对应算法的参数设置影响。
- Sentry2 检测对象属性
返回检测对象id的属性,包括色块中心x坐标、色块中心y坐标、色块宽度w、色块高度h以及颜色分类标签
其中颜色分类标签为1~5,分别代表黑色、白色、红色、绿色和蓝色。
5. 开始编程
连接设备:通过有线或者无线方式,连接 MicroBlocks IDE 与 CoCube 机器人,并将 AI 视觉感知模块拓展在 CoCube 机器人前方。
载入积木库:如未添加 Sentry2 AI 摄像头库和 CoCube 外接模块库,可先加载CoCube的外接模块库和Sentry2 AI 摄像头库。
摄像头模块初始化:选择启动时先启用外接模块电源,然后等4秒后摄像头模块启动成功再初始化I2C接口,然后再将摄像头的算法模式设置为blob模式用于色块识别。
- 色块识别:循环判断是否有检测到Blob色块,当检测到的色块数量为1时,输出该色块的5种属性。你可以实时观察该色块的位置、大小以及颜色标签。
- 编写自己的程序:有了上述的调试代码,不妨自己试试组合更多的功能吧!
6. 挑战一下
基于色块识别功能,实现跟随蓝色圆柱移动的功能。
注意,需要手动设置Sentry2摄像头的色块识别的参数,将识别色块的颜色由出厂默认红色,更改为蓝色。