【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们说过,图像在二维码、道路检测、故障物检测方面都有很重要的作用。但是,这里面就有一个前提,那就是图像本身的质量必须是非常ok的。对于高质量的图像,即使用简单的算法,都可以得到不错的结果。而对于质量不高的图片,既费时又费力,得到的结果还不是非常理想的。
所以,到这里我们很自然而然地想到自己去补充光源。即,如果自然光很ok,那么可以通过减少曝光量地方法降低自然光的射入。而如果外面自然光不足,这个时候就需要补充光源去进行处理。目前光源控制这部分都是很成熟的,可以手动,也可以用232/485去调整pwm百分比。这里面的难点不在于如何设置,而在于应该设置什么样的数值。
所以,要想在slam中使用到图像,那么就需要时刻对图像的灰度进行检测。亮了,降低曝光量;暗了,增加补充光源,标准一般就是最大灰度值。
1、用最大灰度值作为判断标准
判断图像明暗的一个重要标准就是最大灰度值。这个灰度值可以是整个图像的灰度值,也可以是某一个roi区域的灰度值。不管是哪一种方法,都需要soc去进行判断和计算。此时,想要用mcu去计算最大灰度值,那是不切实际的。这种情况下,最好还是用arm soc + linux的方法来解决,直接用opencv去计算。如果资源富裕一点,用fpga也是可以的。
2、合理设置目标灰度值
目标灰度值一般和实际场景有关,不通的实际场景有着不同的标定数值。当然,在不同的场景下面,适度微调目标灰度值也是可以的。这部分可以做灵活调整,不必教条和拘谨。
3、用pid去做反馈
pid是实际工业生产中比较常见的一种反馈方法。p表示差分,i表示积分,d表示微分。调试的时候一般是先调试差分,然后调试积分,根据实际情况最后调试微分。有了pid的加持,就可以把灰度值的计算差,转换成对应的pwm数值,当然必要的范围约束也是少不了的。p、i、d各在什么范围内调整,这个也是慢慢尝试出来的。
4、编写一个上位机
不同的pid调试,一般需要搭配一个上位机。不同的pid通常会有不同的调试效果,这个时候如果有一个合适的上位机,就可以帮助我们确定,什么样的pid参数才是适合我们的。或者说,不同的场景应该匹配什么样的pid参数。
5、将灰度值的统计当成图像处理的一部分
图像处理肯定涉及很多步骤,灰度值的计算只是其中一个环节。所以我们要做的,就是将这个中间计算的结果发给光源控制器。对于固定场景,一般直接用补光代替自然光,但是对于行走的机器人来说,这个时候,最好用算法保证机器人得到的光源都是最佳区间内的。所以,这部分灰度值的统计、pid的计算就是整个算法能够稳定运行的前提。