舵机控制的软件方面,需要完成串口的相关配置,主要包括波特率、起始位数、数据位数、停止位数和流控制模式。这里将其配置为波特率19 200、起始位1位、数据位8位、停止位1位和无流控制模式。串口的设置主要是设置struct termios结构体的各成员值,如下所示:
2 图像识别算法
摄像头采集到的图像主要作如下处理:首先对数据解码,利用查表法将RGB空间模型数据转化为HSI空间模型,然后采用类间方差法将图像进行二值化,再利用连通域对目标进行标定,最后对图像进行去噪,从而实现目标的识别和定位。图像处理程序流程图如图4所示。
摄像头采集的图像为RGB格式,但RGB模型中R、G、B值易受光线影响,不适宜进行颜色识别;HSI模型中,不同的颜色对应不同的色调参数H,并且H受外界光照影响小,因此采用HSI模型实现颜色识别。因此,要通过某种算法,先将RGB色域空间映射到HSI空间。常用的颜色空间转换算法如下:
实现颜色空间转换以后就要根据不同的H值对图像进行二值化处理。二值化的实质是一分类问题,即把一幅图像所含有的0~255的二进制像素按照某个阈值划分成两类。如果阈值设得太低,结果会引入过多的背景信息,但太高就会导致目标信息的丢失。类间方差法(Otsu)、最大熵方法(KSW)和直方图平衡法(Balanced Histogram Thresholding,BHT)是目前
应用较广的自动阈值计算方法。
这里采用类间方差法,它的核心思路就是通过最大化类间方差来寻找最佳阈值。假设某一阈值T将整个二值图像分为C0(1,…,T)和C1(T,…,255)两类,则两类的出现概率可以用下式计算:
如上所述,最佳阈值的判断标准是使得类间方差最大。于是通过遍历每一个灰度值,并计算其划分带来的类间方差,总能找到一个合适的阈值满足条件。由于式(4)计算二阶中心矩计算量较大,考虑到:
显然,式(6)只需要计算类内均值,即一阶矩。于是最大化就转化为最大化式(6)。