赞
踩
距离最开始决定制作板球系统作为练习已经过了快一个月,前前后后的由最初思路的搭建和机械结构设计以及对应代码的修改还有调试,怎么说呢,如果以一个正常项目的视角来看,其实很慢了,甚至是有些拖拉,只是作为队长深知这些急不得,最初原计划定的是一个半月来完成这个项目,在自己的进度上,时间也才过去了一半不到,现在的进度已经只剩下pid的调试了,我也时常鼓励我的队友说你们现在很棒了,至少不和别人比,按照自己的计划有条不紊的进行着,很快很快,这个星期大概率就能把所有的部分搞定。虽然这段时间发生了挺多的糟心事,包括和队友的磨合过程,催进度啥的,今天有那么一瞬间觉得队友都这样子了,干什么还要继续下去了呢的想法,不过收拾好心情,还是选择了继续慢慢陪他们走下去,毕竟谁也没法完全按照自己想法去做某件事,所以突然意识到,这也是一种磨合吧,下面讲讲这段时间的一些关于opencv的总结。
之前使用的大津法(OTSU处理)自适应阈值虽然说效果好很多,但是还是出现了一个比较严重的问题,那就是输入图像一定是灰度图,也就代表它对于颜色的敏感程度并不像在HSV空间那么明显,出现的问题就是,只使用大津法的自适应阈值会出现被各种因素干扰,以我的调试场景为例,我在另一个队友的座位旁边调试,由于在一张桌子下就会出现板子上部分点被阴影遮盖,而通过大津法自适应处理后的图像出现了两种情况,只识别了非阴影部分的点,而阴影部分的点都不识别,另一种遇到的情况就是,阴影部分过大,使用了大津法处理后的图像出现了自适应阈值把阴影和非阴影部分的阈值拉出来了,这就很搞,我在搞视觉的最初目的就是为了使得算法可以适应绝大多数场合,想要它的抗干扰能力强,很明显只是用大津法只能在一定程度上提升我的识别精度,但是并不能抗的住常见的干扰,这个影子干扰应该是很常见的事情,以及板子所在的位置不同,各个点上的光照程度不同,板子又是65cm*65cm的大小,加上又是油性笔涂出来的黑色点,在最初就遇到了各个点的阈值不同,所导致固定阈值没办法在各种关照下稳定识别,接触到大津法后也使用效果很单一,渐渐的为了应对这个问题,参考了之前的大佬以前队里用过的思路,在开机后2秒内,识别中心的点,提出它的阈值,然后再给到总的阈值里,来做到识别当前环境的阈值,我在思考一段时间后觉得他们的思路很不错,只是这个思路不适合在板球控制中,首先光照在两端差距比较大,只取中心点的阈值很难保证四个角的点能够识别。
选择使用四个角的点各自开一个ROI区域,然后跑一个循环把四个点的轮廓与圆拟合,用来判断是否是我所需要的黑色圆点而不是其他的物体或者阴影,然后这时候我想着能不能再用大津法来识别并且设置阈值,但事实显示,大津法仍然容易被阴影影响,说到底大津法还是对我所需要的颜色形状识别并不敏感,这时候突然想到opencv在看学习手册时学大津法时同样还有一种自适应阈值的函数cv2.adaptiveThreshold(),这个函数大部分情况和大津法识别的效果几乎一致,而且可以输入彩色图像,也就是说它可以识别我的白底黑圆,于是尝试使用了下,在ROI内,对黑点的识别很准确,而且就算一半是阴影也可以很精确的识别出黑色圆点,并且还有选择高斯模糊的参数,使得图像进一步不会因为噪点所影响,于是能够精确的获取出黑色原点的中心坐标然后取出各个中心坐标内2*2的像素的HSV值,在后期的调试中,发现阈值的调节来凸显黑色圆点其实只需要控制V的大小就可以很明显的把黑色圆点取出,于是只需要把四个角点的V值取出后扔到数组里,通过一个max函数,找到最大的V然后把它赋予给当前的阈值最大值即可保证当前识别能够将最难识别的都识别出来,对应容易识别的也就顺理成章识别,在经过实践后,很稳,只是自适应阈值偶尔还是会被干扰,于是通过先通过一个动态阈值识别后,把区间压小再扔给大津法来处理,经过处理后的图像很稳定,如果不是场景变化快速的情境下,不论什么阴影遮挡以及环境光照强暗都可以迅速且准确的识别。到此为止,通过多区域分割以及函数的合理使用,板球视觉部分也就解决了,其实还有一个思路并没有验证,那就是把大ROI区域给分割成9个小ROI区域,然后9个ROI各自使用cv2.adaptiveThreshold()算法,理论上来说应该是识别效果最好的,搭配圆形拟合的话,应该效果会更佳,我尝试在这个周末就写出来验证一下。
这个中间想过使用自适应阈值加上闭运算来把小球完美识别,只是之前就是单纯通过固定阈值进行识别的效果也还算不错,所以暂时没有新的想法修改,不过周末如果比较闲,那就把这个和上面我还没有验证的思路写一个结合的算法试试看。
这段时间对opencv的理论学习较少,更多的是在实际项目中看效果以及各种搭配来实现最稳定的视觉效果,果然,实践才是检验标准的唯一真理,如果只以理论上的自适应阈值,按理来说是可以几行代码就搞定,而且稳定性也很高,但是实际上,受环境的影响还是很大,尤其是各种客观因素导致,所以多学多做,而且这段时间也有在给负责stm32的队友一些指点和思路上的理清,等下一次训练项目就试着慢慢交由硬件队友来主导,毕竟整个队伍的主体方案如果是以视觉来做主导的就会很奇怪,毕竟还是以控制为主,加油加油。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。