香橙派/树莓派 电脑linux 电赛备赛指南-opencv 板球系统处理思路分享。opencv视觉入门(二)

1、前言

近期我们在做2017年的B题板球系统,选择这个选题的主要原因是这个项目属于比较简单,但综合的一个项目,最关键是手上刚好有现成的材料,以及部分支架由我们队负责机械部分的同学进行建模和设计机械结构,而我这边opencv主要是进行板子上的九个点以及橙色小球的坐标传回。(目前也正在试试能不能通过opencv计算出小球的速度,目前有个光流法的思路,但是不确定行不行,而且也在网上搜了好多,并找到能够计算到速度的似乎只有yolo识别车辆的速度的方法,再学一段时间看看咋的整)

2、板球系统思路的讲解

首先先从摄像头拿到图像,对彩色的图像进行特征分析,在板球系统中,我的特征无非就是九个黑点和一个橙色小球,只需要通过设置阈值来识别即可,但是在实际处理起来其实会遇到挺多问题的,也就是一些细节导致最终画面的稳定性差,或者识别效率欠佳。讲讲我的思路分成黑点和橙色小球两部分讲解。

2.1 黑点识别思路

首先设置好ROI区域,将ROI区域的画面转为HSV,然后用cv2.inrange设置好上下限阈值(这个阈值你需要去取出来,通过各种方法,我是通过GPT生成的一个HSV的上下限的颜色检测脚本来取出的),这时候你的这个图像被设置阈值后会变成二值化的画面,但是这个时候仍然会在一定范围内波动变化,尤其是会极度受光照影响,除非关照特别稳定,否则识别断断续续的,想要解决这个问题就要去根据此时的光强来寻找最合适的阈值,这里我有两个方案思路提供,一个是在开机时,对中心点等待3s然后再去设置好此时中心黑点的阈值,这种方法的好处就是能够自动适应此时的光照强度而且在开机后就不能更换环境了,最关键的是如果光照不均匀,那么就很可能出现中心点的阈值和周围的阈值差距过大,可以通过补光灯来解决这个问题,这个思路我觉得挺不错的,但是并没有选择它。

我的第二思路,在使用完阈值后得到二值化图像后,用到了opencv的一个自适应阈值的算法,OTSU处理(大津法),他会自动找到当前灰度图的最佳的那个可以过滤的阈值,而且受光照影响很小,即使在很暗或者很亮的情况下也能做到比较高识别度。但是也有它的缺点,很明显,容易被噪点干扰,因为它的寻找是在灰度图下进行的,不像在HSV空间上有颜色信息,灰度图只有梯度0~255这样子,所以会导致有时候对颜色不敏感,也就是说这种方法只适合颜色单一的图像处理,并不能用比较多色处理,这也是它的弊端,但是在这个项目里,它的优点比缺点更值得我去使用它,因为确实出现了在训练场景下如果有人走来走去或者实验室内多个光源的影响,导致9个点有些点的亮度相差太多了,只是用固定的阈值实际上很难去识别的稳定,使用这个算法的时候最好先使用高斯滤波,把整个画面进行滤波在把它进行OTSU处理,效果会好很多,防止环境过暗导致噪点过多造成误识别,而且适用的场景真的特别的宽。

经过上面的处理得到的二值化图像后,然后就是正常的加卷积核膨胀,这里不选择腐蚀,因为识别的不是动的而且形状很均匀,如果加了腐蚀也行,只是效果几乎一致。然后就是正常的寻找所有轮廓,然后记录中心点,然后写个函数把这9个中心点进行按题目的排序来划分区域,(这个排序的函数,我通过各种途径找到的排序都没办法按照题目的要求的那样1~9进行排序,于是自己直接暴力排序,把在画面哪个区域内的定为1这样)然后就是把1~9点的坐标依次串口发出。

2.2 橙色球的处理

这个处理思路就比较简单,转HSV空间然后设置好橙色阈值然后正常的腐蚀膨胀得到二值化图像,然后就开始寻找轮廓,然后遍历轮廓然后进行标注它的坐标,我在这个坐标的输出使用了一个卡尔曼滤波这样子它的输出就不会那么跳了,然后也是通过串口发出,这样橙色小球的部分就解决了。

3、结尾

这篇文章应该是我这近20天学习的一个总结吧,收获很大,虽然每天都会看代码看pdf到凌晨两三点,但是真的很充实,找了一本有关树莓派和opencv视觉实战的书,等我尝试在5月前学习完,毕竟视觉这块我不是特别想深入,因为自己本身还是做硬件这块,视觉的学习不单单是为了比赛,也是为后面的毕设做一些准备,现在也在收集毕设的素材,会了视觉这块的话能够做挺多东西的,主要是视觉的反馈可以减轻很多只有硬件处理的情况,而且刚好把python也巩固下,之前学的python都快忘光光了,这次也算是重拾了吧。这次队内的备赛计划由我来主导,看目前进度30天应该搞得出来,这个进度说快不快说慢不慢,我的预期是还有两次训练分别是20天 10天,如果差不多的话,在5月中旬应该可以搞定,剩下的就是各种备赛准备了,加油加油。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值