Pixy CMUcam5图像识别传感器教程(一):教PIXY识别物体
一起成为技术颜控
作者:szjuliet
来源:www.dfrobot.com.cn
最近参加了“麦昆脑洞全开赛”,用到了图像识别传感器Pixy CMUcam5一代,这里把图像识别传感器的使用教程详细写出来供大家参考。
本节内容官网说明文档:https://docs.pixycam.com/wiki/doku.php?id=wiki:v1:teach_pixy_an_object_2
说明1:文中有的视频是我自己录的,有的视频是我从YT上转到腾讯的,转的视频没有加字幕,技术类视频比较好懂,听不懂也可以看懂 :-)
说明2:Pixy CMUcam5图像识别传感器有2个版本:1代和2代,在其官网点击图片可以打开相应的帮助文档
本来在项目设计中想用2代,毕竟更小更轻,而且支持线条及二维码的识别,可以用来识别交通标志,实现自己想要的功能。但是不知道什么原因在microbit上使用I2C接口一直无法获取到图像传感器的返回值,而在Arduino上无论使用SPI还是I2C都可以正常返回,在麦昆上改用1代则可以正常获取,无奈只好改用1代。哪位高手能够看一下是否可以在麦昆上用2代。
注意,在教PIXY识别物体前,先要在电脑上安装PixyMon,1代和2代使用不同的软件版本。
1代相关的软件下载地址为:https://pixycam.com/downloads-pixy1/,软件包括固件、Arduino库文件、PixyMon等
下载后安装PixyMon即可开始教PIXY学习。
教Pixy识别物体
教Pixy识别物体非常简单,首先了解一下哪些对象可以与Pixy一起使用。 Pixy使用基于色调的颜色过滤算法来检测对象。 由于Pixy使用色调(颜色),因此对象需要具有不同的色调。 下面是一些“好”的物体,它们有良好,独特的色调。
下面这些是不“好”的对象,它们没有色调(黑色,白色或灰色)或色调不明显。这些物体放到PIXY摄像头前面和背景颜色几乎一样,所以PIXY无法正常识别。
留意这些要点,下面我们选择一个物体来教Pixy。
给Pixy通电,Pixy启动时,板载的LED灯会经过一系列的闪烁。等LED熄灭后就可以开始让Pixy学习识别物体了。
按住Pixy顶部的按钮。大约1秒后,LED将亮起 - 先是白色,然后是红色,然后是其他颜色 - 当它再次变为红色时,松开按钮,代表要开始学习第1种颜色特征。
释放按钮后,Pixy将进入所谓的“光管”(light pipe) 模式,LED灯的颜色是Pixy“锁定”到的物体颜色。 Pixy将锁定在其视频帧中心的物体上,将物体直接放在Pixy前面,距离镜头6到20英寸。
Pixy使用区域增长算法来确定哪些像素是对象的一部分、哪些像素是背景的一部分。Pixy使用这些像素来创建对象的统计模型,以便在不同的光照条件下可靠地检测它。使用LED颜色作为反馈来确定Pixy是否对对象有良好的锁定,通过以下现象来判断:
Pixy锁定在物体上时,LED灯的颜色应与物体的颜色相匹配。
LED越亮,锁定越好。 稍微移动对象,看看是否可以最大化LED的亮度。
查看PixyMon窗口中的区域增长网格,看看网格的大小如何与LED颜色和亮度相对应。 覆盖更多对象的网格优于仅覆盖部分对象的网格,LED灯会更亮。 下图显示了覆盖了物体大部分的网格(锁定良好)。
多试验几次就可以熟练掌握通过观察LED灯来判断Pixy是否有一个不错的锁定,接下来就可以教Pixy学习新物体而无需使用PixyMon!
对锁定满意后,松开Pixy上的按钮,像单击鼠标一样。 LED会闪烁几次,表明Pixy现在已经“学会”了你的物体。 它现在开始跟踪物体。
多个颜色特征
Pixy最多可以学习七种颜色特征。 当LED变红时,我们可以通过释放按钮来教Pixy第一个颜色特征。 如果继续按住按钮,LED将变为橙色,黄色等,代表其他的颜色特征。 以下是七种颜色特征所对应的LED灯的颜色:
-
Red红色
-
Orange橙色
-
Yellow黄色
-
Green绿色
-
Cyan (light blue)浅蓝色
-
Blue蓝色
-
Violet紫罗兰色
颜色特征编号在松开按钮时确定。当LED为黄色时松开按钮,说明正在学习特征3。当LED为蓝色时松开按钮说明正在学习特征6。这些颜色与所学习的物体色调无关。LED灯的颜色仅用于指示特征编号。例如特征1可以是黄色物体,即使特征1由红色LED指示,特征2也可以是粉红色物体,即使特征2由橙色LED指示。
在Pixy学习某个特征后,它会将特征保存在闪存中,重新启动Pixy时,它会记住已经学习的特征并继续跟踪与这些特征匹配的物体。
如果在教授特征1时发现自己正在教授特征2(即LED是橙色而不是红色时松开了按钮),只需按住按钮直到LED熄灭。这是Pixy取消学习模式的方法。然后可以再次按住按钮重新开始。
下面的视频演示让PIXY学习物体:
白平衡
某些类型的照明(如白炽灯)具有偏红色调,而其他类型(如荧光灯)则具有偏蓝色调。不同的照明条件可能会影响颜色特征。例如,如果在白炽灯照明下学习某种物体,然后进入带荧光灯照明的房间,颜色特征可能不再有效。解决方法是可以重新学习所有特征,或者调整白平衡。
Pixy接通电源时会花5秒左右的时间来确定合适的白平衡。然后会禁用自动白平衡。如果想重新调整白平衡,按住按钮直到LED变白再松开。这个过程很快,所以要做好准备! Pixy现在处于自动白平衡模式。可以在Pixy前面放一张白纸,这样Pixy就可以调整白平衡。调整白平衡仅需2或3秒钟,之后可以松开按钮(如鼠标单击)。 LED灯将闪烁,表示设置成功,现在Pixy正在“重新平衡”。
通过PixyMon教Pixy学习识别物体
我们也可以通过PixyMon教Pixy学会识别一个对象。 如果要学习的物体很小,或者希望更多地控制使用哪些像素来识别,用PixyMon会更方便。 将Pixy与电脑连接,然后运行PixyMon。
在镜头前展示你想教的对象,然后从下拉菜单中选择Action➜Setsignature 1。
单击并拖动鼠标选择希望Pixy用于学习对象的区域。
对学习结果满意后,松开Pixy上的按钮,就像单击鼠标一样。 Pixy将“学习”该对象并自动进入“cooked”视频模式,以便验证PIXY所学习的颜色特征的工作情况。
调整颜色特征
有时需要“调整”Pixy所学对象的颜色特征 - 因为学习时可能会有一些误报(假阳性,Pixy检测到的区域不是你想要的对象)或假阴性(Pixy检测到的区域不包含你想教的对象,或者检测到的区域是间断不连续的)。可以打开配置对话框File➜Configure来调整设置(点击齿轮图标或选择文件➜配置)。 选择Pixy Parameters下的Tuning面板。
使用特征1范围Signature 1 range的滑块来调整Signature1的包容性(假设正在调整Signature1)。 如果想减少包容性(即如下图所示看到误报,有5处S=1,其中4处是误报),可以向左滑动滑块:
如果想要更大的包容性(如看到的结果是假阴性,即检测到的区域不是自己所教的对象)或者检测的结果是不相连的(如下图所示),将滑块向右滑动:
选择一个达到最佳效果的滑块值,如下图所示:
我们可以通过这种方式调整所有七种颜色特征,使所有特征的检测准确性达到最佳效果。 按Apply或OK保存设置! 如果按Cancel或直接关闭对话框,则不会保存调整后的值。
启用突出显示过度曝光区域及调整相机亮度/曝光度
和相机一样,Pixy需要获得正确的曝光设置,否则图像不会包含足够的动态范围,并且检测精度会受到影响。 PixyMon具有突出显示过度曝光图像区域的功能。 单击 PixyMon Parameters选项卡中的Highlight overexposure旁边的框来启用它(见下图)。
启用该功能后,图像过度曝光部分会突出显示为黑色,如下图所示:
强烈建议启用突出显示过度曝光,因为如果被检测的对象过度曝光会影响检测精度。 启用突出显示过度曝光后,转到 Pixy Parameters中的Signature Tuning 选项卡,通过调整滑块选择一个合适的Camera Brightness 设置(见下图),即减小过度曝光的区域到合适大小。
恰当的曝光设置会使对象中的几乎所有像素都正确曝光,但不能过暗(曝光不足)。 物体小部分区域过度曝光是没有问题的,特别是物体如果有光泽。如下图:黄色球有一小块黑色区域,表示这部分是过度曝光,这是可以接受的。
调整最小亮度
Signature Tuning选项卡中的Min brightness“最小亮度”滑块可以为不同的颜色特征设置最小亮度值。如果某个像素值低于最小亮度设置,则不会将其视为任何颜色特征的一部分。因此,如果看到误报的区域过暗,可以将最小亮度设置调高以减小识别区域。如果无法检测到过暗的物体,可以将最小亮度调低以扩大识别区域。
用鼠标教Pixy学习对象
有两种方法可以教Pixyi学习对象:button-press按钮法和mouse-select鼠标法,我们在前面都已经介绍过了。鼠标选择方法能够确保在进行颜色特征识别时没有不需要的像素划到识别区域中。
调整特征学习阈值Signature teach threshold
Pixy的特点之一是无需连接电脑就可以轻松学习不同的对象,使用按钮进行学习就可以做到。但是对于某些物体和/或照明条件,使用按钮法需要调整一些参数。 Expert选项卡中的Signature teach threshold设置可以调整Pixy在学习过程中来确定哪些像素是对象的一部分。当Pixy处于学习模式时,可以调整Signature teach threshold值,当选择了一个合适的阈值时可以获得“实时”反馈。
下面的视频演示了设置Signature teach threshold值的情况。
下图是一个包容性过大的阈值示例。有部分区域不属于紫色恐龙(预期对象),这种情况下要降低阈值。
下图是一个包容性过小的阈值示例。紫色恐龙的大部分没有包含在识别区域中。这种情况下要增加阈值。
下一讲学习如何与PIXY对话:Talk to PIXY。学习使用不同的接口与PIXY进行通信。
*欢迎转发朋友圈。如需转载,请注明出处和原作者。
项目干货戳这里
美队护盾我收下了! | Arduino混合饮料机
脱机音质赞爆的电子钢琴 | 自制指纹箱
Makerspace NFC组件管理系统
“时间”嵌入玻璃窗 | “多喝水”提醒器
纸箱机器人cos苏大强 | 魔法书隔空翻页的魔法书
激光切割中国象棋 | 永恒郁金香 | 太阳能板追太阳
LED爱心灯 | 【必收藏】2018年精选项目大全!
NFC门禁 | micro:bit荷兰风车
GameBuino游戏机 | 织风音乐交互艺术装置
美到窒息的LED雪花 | 抖音兔兔帽+肌电传感器
漂移雪橇 | 最轻薄树莓派魔镜 | 陀螺仪另类玩法
巨型弹珠机 | 机械翅膀 | 音乐留声机
MIDI控制自动弹钢琴 | mini热带温室 | 无线蓝牙机械键盘
变脸娃娃 | 给lcd触摸屏做了个soulmate……
属于理工男的梦幻立方体 | 木质留声机
动态像素眼镜 | 复古ComputeModule 3
磁悬浮盆景 | LED项链
吃币机器人 | 骨骼追踪抛物预判垃圾桶 | 弹球机
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com