首页 > 编程学习 > 双臂二指魔方机器人的制作(二)--视觉识别

本文素材来源于广西大学 机械工程学院

作者:孙尹同  黄祖杰

指导老师:李俚

1.方案选择

根据硬件实际需求以及本团队能力需求,视觉颜色的识别是本项目的不可缺少的一部分,方案的选择主要有一下三种类型:

(1)OpenMV

      简单的来说,它是一个可编程的摄像头,通过MicroPython语言,可以实现需求的逻辑,而且摄像头本身内置了一些图像处理算法,很容易使用。

       OpenMV适合DIY相关的项目制作,比如追踪小球的车,云台,或者解魔方的机器人。对成本要求很高的嵌入式工业方案,比如流水线物品的分拣。OpenMV不适合复杂的算法:比如OCR识别,车牌识别,猫狗分类,深度学习之类的。

2K210

      K210是由一家叫做嘉楠公司在去年推出的一款MCU,其特色在于芯片架构中包含了一个自研的神经网络硬件加速器KPU,可以高性能地进行卷积神经网络运算。在AI计算方面,K210的算力其实是相当可观的。根据嘉楠官方的描述,K210的KPU算力有0.8TOPS ,作为对比,拥有128个CUDA单元GPU的英伟达Jetson Nano的算力是0.47TFLOPS ;而最新的树莓派4只有不到0.1TFLOPS 。

      当然了,这个性能跟某些旗舰级别的SoC还是有差距的:A76级别的CPU本身就已经很变态,更何况旗舰SoC上面都会搭载用于AI加速的硬件用于异构运算,比如高通的Hexagon DSP、苹果的Neural Engine、华为的达芬奇架构NPU等等,这些NPU在某些应用下甚至能达到与数百W功耗的桌面级GPU接近的算力。

 

3OpenCV

      OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库.

      该库采用C及C++语言编写,可以在windows, linux, mac OSX系统上面运行。该库的所有代码都经过优化,计算效率很高,因为,它更专注于设计成为一种用于实时系统的开源库。opencv采用C语言进行优化,而且,在多核机器上面,其运行速度会更快。它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。

      同时,由于计算机视觉与机器学习密不可分,该库也包含了比较常用的一些机器学习算法。或许,很多人知道,图像识别、机器视觉在安防领域有所应用。但,很少有人知道,在航拍图片、街道图片(例如google street view)中,要严重依赖于机器视觉的摄像头标定、图像融合等技术。

      根据现实硬件要求,openmv以及K210虽然继承了mirco python识别颜色的函数,但无法根据实际光照强度调整参数,并且无法外加更多的算法加强颜色识别,例如下图为我团队的魔方识别区域。综合考虑,本团队采用opencv进行颜色识别,并且使用主流的KMeans聚类算法,对黑色进行删除后,得出占比最大的颜色即为识别颜色。

2.实现流程

      实现流程可分为图片区域获取、颜色阈值设置以及颜色阈值匹配三个部分。

2.1 图像区域获取

       在获取图像时,我团队使用的是四摄像头四进程进行同步采样,能够更快的完成图像取样的动作,并且避免死机的现象,四个进程同时开启后,对摄像头捕获的图像进行保存,在后面的颜色识别处理中只需读取对应路径图片即可进行颜色识别。

2.2 图像区域分割

       对图像进行获取后,上下两个摄像头因为同时拍摄了魔方两个面的图片,需要进行图片切割以及旋转,该部分先使用旋转。

旋转效果

 

 区域旋转前、后效果图

旋转后进行透视变换,对周围干扰环境进行割除

透视变换效果

区域透视变换前、后效果图

      这样便可以获得比较晚上的九色块图片,后续进行九个色块的聚类算法便可以得到对应的颜色。

2.3 颜色阈值设置

     在颜色设置中,为了方便调颜色阈值,我团队单独写了调阈值的程序,代码及效果如下:

     在颜色空间选取中,我们团队选择了颜色阈值更加分离的RGB色彩空间,抛弃了还原人眼看见的HSV色彩空间,更容易进行颜色的识别。 

 

       在效果图中,最左边为输出的颜色阈值范围,左二为原图,左三为颜色阈值范围筛选后绿色的掩模图,最右边为设置颜色阈值的滑动条。

2.4 颜色阈值匹配

     根据上图获取到每个色块的颜色阈值后,即可设置颜色识别阈值的范围,下图为6个色块的RGB颜色阈值区域。 

 2.5 KMeans聚类算法

      本章节的核心为KMeans聚类算法,是识别出正确颜色的重要部分,相较于上面直接颜色阈值区域匹配,进行KMeans聚类算法后能够删除黑色区域,从而减少机械爪子对色块遮挡的干扰。 

 KMeans聚类算法的效果如下:

       左一为各颜色区域的阈值范围以及占比,中间为输入图片,右一为聚类分割后区分的三种颜色。可以明显看出对黑色区域筛选后,再根据占比最高,从而获得正确的红色阈值范围。

2.6 编号输出

       编号输出的方法包括六个面的序号排序,排序正确后再进行每个面九个色块的顺序编号,便于应对各种魔方摆放顺序的情况。 

关于双臂二指魔方机器人的详细内容可参考双臂二指魔方机器人

-----------------------------------------------未完待续---------------------------------------------------

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式