基于STM32 的图像识别定位系统设计
2021-12-21王艳梅刘义杰
王艳梅,刘义杰
(沈阳理工大学,沈阳 110159)
0 引言
图像识别技术是目标检测和目标跟踪中常用的方案,在对目标进行识别和定位时,摄像头传感器可以有效的排除背景,达到很好的识别效果。机器视觉可以等效于人们的眼睛,来帮助人们做一些测量和判断的操作[1]。机器视觉综合了光学、机械、电子、计算机软硬件等方面的技术,涉及到计算机、图像处理、模式识别、人工智能、信号处理、光机电一体化等多个领域。图像处理和模式识别等技术的快速发展,也大大地推动了机器视觉的发展。
基于机器视觉的定位系统在工业的领域中常用于机械手的控制,机械手的出现使得人们的生活更加智能化,同时也大大地减少了人们的工作量,一些简单的搬运工作和物品分类工作都可以通过机械手来完成。机械手想要抓取一个空间的物体首先第一步就要获取到这个物体的相对坐标位置,将此坐标位置反馈给控制系统,处理器根据前端返回的坐标位置来进行控制。因此对于所有的控制系统来说,前端的反馈极为重要,前端反馈到系统的数据如果处理得很差,那么整个系统的运行都会受到很大的影响。因此可见采用摄像头来定位对于整个机械手的控制有着很大的影响,通过摄像头来定位的机械手的控制流程包括以下几步:
(1)图像坐标系与外部坐标系的调整映射;
(2)通过图像的特征提取、灰度化来识别目标;
(3)根据反馈的目标位置与自身位置进行对比,调整自身的位置;
(4)根据控制算法,来控制机械手抓取目标。
本文将针对整个系统的前端识别和坐标点的反馈功能进行了设计,实现了简单背景下黑色标记的识别与定位。
本文采用对简单背景中的黑色标记进行关键点定位,然后通过二值化和平滑滤波算法得到需要的图像信息和位置信息。
1 图像识别定位系统硬件设计
图像识别定位系统对简单背景中的黑色标记进行识别及定位。首先通过摄像头获取背景图像,并在显示器中显示背景图片。主控芯片将图像上传给上位机进行识别处理,获得黑色标记位置,将第一个获取的黑色标记的位置坐标作为原点,下一个获取的黑色标记为目标点,为后续电路提供运动依据。图像识别定位系统的结构框图详见图1 所示。
图1 图像识别定位系统结构框图
主控单片机STM32F407ZGT6 作为整个系统的控制核心,负责协调每个模块之间的工作。首先主控单片机通过串行摄像机控制总线(SCCB)协议对摄像头OV2640 进行配置,配置完成后摄像头OV2640 在数字摄像头(DCMI)接口控制下传回数据;然后利用DMA 数据流将数据传输到主控芯片STM32F407ZGT6内部的SRAM;图像显示在2.8 寸LCD 屏幕上,方便判断摄像数据是否正确与后期调试。
数据采集选用OV2640 摄像头,支持输出最高为200 W 像素的图像,分辨率为1600×1200,集成内部有源晶振[2]。输出图像格式可以设置,支持格式包括YUV422、RGB565 等,本文采用RGB 格式的图像,可以对采集图像进行调整,如图像补偿,处理模式的调整[3]。根据分辨率配置,传感器输出图像数据的帧率30 帧/秒。
显示器件选用2.8 寸的电阻触摸屏,该屏幕分辨率为320*240,16 位颜色深度,驱动芯片为TLI9341,无需外部驱动器。采用16 位并口模式,支持任意点像素颜色读取及横竖屏显示。数据采集及显示实物图如图2 所示。
图2 图像采集及显示实物图
通过串口通信将数据传到上位机观察数据变化,方便判断数据是否正确。处理器与上位机通信采用CH340G 芯片,CH340G 芯片稳定,外围所需器件少,电路简单。
电源电路模块采用DC-DC 电源转换,目的是能使用更宽的电压范围给系统供电,电源部分采用MP2359 降压芯片为系统提供直流9 V 电源。芯片最高耐压24 V,最大能提供1.2 A 电流。通过MP2359降压得到5 V 电压,为其他外部芯片提供电源。5 V再经过AMS117-3.3 芯片线性稳压得到3.3 V 电压,为主控单片机以及摄像头等器件工作提供电源。
2 图像识别定位系统软件设计
本文的图像识别定位系统为简单背景中提取黑色标记,图像的色彩空间简单,因此采用RGB 色彩空间作为采集图像的格式[4]。图像信息通过串行通信方式传送给上位机,上位机进行图像处理。
黑色标记提取思想就是循环遍历缓存摄像数据的数组,通过判断每一行数据,对像素过渡点的列坐标进行记录,以此循环判断完每列数据,最终得到黑色标记位置信息,并计算出相对坐标。标记识别程序流程图如图3 所示。
图3 标记识别程序流程图
在图像处理过程中,不仅要对相关的硬件模块进行初始化,还要进行识别算法的编写,在识别算法编写的过程中需要解决光照环境变化的问题和噪声点的干扰的问题。先将图像做二值化处理,体现出标记点大体轮廓,根据黑白边缘跳变提取物体特征信息。为了适应光线不均的场合,需选择动态阈值分割图像,增强图像区分度,最后依据阈值进行图像二值化。动态阈值是根据灰度化图像的全局灰度级别计算所得[5]。本文采用动态阈值对图像进行二值化处理,使用迭代法来寻找最佳的阈值。将图像分割成前、后两个景像,分别计算前后景像的灰度级别的平均值,得出阈值T0,再根据当前阈值T0计算新的阈值T1,比较前后两次阈值直到不再变化为止。动态阈值计算的具体步骤如下:
(1)根据初始阈值T0将图像分割为前景R1和后景R2;
(2)分别计算R1和R2两个景像的平均灰度值RP1和RP2,计算新阈值TK,即:
(3)重复步骤2~3,再求出新阈值TK+1:
若TK=TK+1,说明阈值无变化,即所得TK为最佳阈值。
图像识别定位系统的图像识别采用的简单背景中提取黑色标记,实验原始图如图4 所示。通过二值化处理以及平滑滤波算法得到需要的图像,实验结果如图5 所示。针对二维平面的运动规则是从左到右扫描到的第一个点作为原点,第二个点作为目标点,比较坐标,折算二维坐标的差值,对应机械手运动的距离,机械手先运动水平差值距离,然后再运动垂直差值距离,即从原点运动到目标点;再以此目标点作为原点,依次循环操作。本系统采用单次工作方式,所有扫描点执行一次操作后,系统结束工作。
图4 简单背景中的黑色标记
图5 处理后的图像
3 结论
实验结果表明,采用STM32F407ZGT6 单片机作为核心,OV2640 摄像头作为路径识别的传感器,上位机作为图像处理工具,可以通过动态阈值的方法精确地定位关键黑色标记。希望未来能够运用更高层次的图像识别算法,使系统的适应性更强,视觉效果更加好。