基于图像处理的智能小车无线远程灭火

2018-04-11 03:41范若怡宫若宁
实验室研究与探索 2018年1期
关键词:小车火焰摄像头

张 铮, 范若怡, 宫若宁, 易 环

(武汉大学 电子信息学院, 武汉 430072)

Tel.:15907177506;E-Mail:zzhang2007@sina.com

0 引 言

随着科学技术的高速发展,电子设备越来越呈现出智能化趋势。智能小车体积小,操控简单,能够自动避障、循迹、远程传输图像,在各领域都有广泛的应用。

本文根据智能小车自动灭火的需求,在一般的循迹避障等功能的基础上,实现了自动和手控的双重灭火模式。小车通过WiFi与手机通信,实时传输摄像头获取的图像帧,可手控灭火;另外,小车微处理器自动对获取到的图像进行图像处理[1],并根据算法判断是否为火源。在图像预处理中,采用中值滤波对图像进行滤波,然后根据YUV颜色模型计算亮白区域,如识别出火源则计算出小车正方向偏离火源的程度,输出PWM波控制小车转向,自动到达合适位置开始灭火。

1 硬件设计

1.1 STM32F407ZE

STM32f407ZE[2]是封装的32位微处理器,主频可以达到168 MHz,拥有ARMCortex-M4内核,16个DMA控制器,1 MB的Flash内存,196 KB的SRAM和64 KB的RAM。芯片在运行中传输效率高,且能够实现低功效。STM32f407ZE带有DCMI接口,能够接收CMOS摄像头传输的不同格式数据。

DCMI数字摄像头[3]接口是一个同步并行接口,能够接收外部8位、10位、12位或14位CMOS摄像头模块发出的高速数据流。从摄像头接收的数据可以按行/帧来组织,也可以是一系列JPEG图像。该接口适用于不同的摄像头,并假定所有预处理都在摄像头模块中执行。

DMA直接存储器访问[3]可用于在外设与存储器之间提供高速数据传输,可以在无需CPU操作的情况下快速移动数据,节省出CPU资源。DMA控制器可以接收一个或多个外设的存储器访问请求,每个控制器有8个数据流,每个数据流有多达8个通道。

1.2 OV2640摄像头

OV2640[4]是OV(Omnivision)公司生产的低电压COMS图像传感器,提供封装的UXGA(1 632×1 232)摄像头和图像处理器,原理图如图1所示。它由串行总线SCCB控制,具有体积小、灵敏度高等优点,能够提供全帧、子采样、缩放或窗口的8位和10位的广泛图像格式。OV2640最大输出像素为200 万,可以控制输出SXGA(1 280×1 024)、WXGA+(1 440×900))、XVGA(1 280×960)等。模块自带压缩引擎,可以将图片压缩成JPEG数据格式输出,支持YUV、RGB等输出格式。图像处理功能过程可以通过SCCB接口编程来实现。

图1OV2640 摄像头原理图

SCCB是一种3线的串行总线,可以控制摄像头输出图像的全帧采样。SCCB接口控制图像传感器芯片的运行,其通信时序类似于I2C协议。

1.3 USB-WIFI232

USR-WIFI232-S[5]是一款超低功耗、体积小、成本低的WiFi模块,支持802.11b/g/n 无线标准,用户设备可以很方便地连接到WiFi无线网络上,实现数据传输,原理图如图2所示。它在硬件上集成了MAC、基频芯片、射频收发单元和功率放大器,嵌入式的固件则支持WiFi协议及配置,以及组网的TCP/IP协议栈。USR-WIFI232实现串口到WiFi数据包的双向透明转发,模块内部完成协议转换,串口侧串口数据透明传输,WiFi网络侧是TCP/IP数据包,可通过简单的设置指定其工作细节。Android手机APP通过WiFi连接小车,控制小车的行动,并可以实时显示从摄像头中获得的图像帧。

图2WiFi模块原理图

2 软件设计

2.1 图像采集

在图像采集模块[6],将OV2640 摄像头采集到的图像数据传输到STM32f407ZE。STM32先对DCMI接口进行初始化,配置DMA,实验中设置为连续模式、全帧捕获、8位数据格式、硬件同步HSYNC和VSYNC信号;然后初始化SCCB总线,并通过SCCB总线设置OV2640的参数,包括图片格式、图片输出模式和图片输出尺寸等,实验中设置为YUV422格式、JPEG模式、SXGA分辨率(1 280×1 024)。

OV2640初始化后,立即开始DCMI采集 (初始化未开始DMA传输)。OV2640的初始状态机为OV2640_READY,第1次DCMI中断后才会开启DMA传输,状态机变为DMA采集中OV2640_GATHERING。DCMI中断接着调用ov2640_jpeg_data_process,表示DMA传完1帧JPEG图片,关闭DMA,状态机变为 OV2640_TRANSFER,等待传输完成。DCMI中断再次调用ov2640_jpeg_data_process,如果状态机仍然是OV2640_TRANSFER则继续等待传输完成。直至缓冲区的数据发送完成后,状态机再次变为OV2640_READY,如此循环。该DCMI帧中断调用过程主要代码如下:

void ov2640_jpeg_data_process(void)

{

if(c_ov2640_state_machine==OV2640_GATHERING) //采集中,则表示采集完一帧

{

DMA_Cmd(DMA2_Stream1, DISABLE);//停止当前传输

while (DMA_GetCmdStatus(DMA2_Stream1) != DISABLE){}//等待DMA2_Stream1可配置

m_jpeg_transfer_len = (JPEG_BUF_SIZE-DMA_GetCurrDataCounter(DMA2_Stream1))<<2;//得到此次数据传输的长度

c_ov2640_state_machine = OV2640_TRANSFER; //标记JPEG数据采集完成,改变状态为传输中

}

if(c_ov2640_state_machine==OV2640_READY)

{

DMA2_Stream1->NDTR=JPEG_BUF_SIZE; //传输长度为jpeg_buf_size*4字节

DMA_Cmd(DMA2_Stream1, ENABLE);//开始传输

c_ov2640_state_machine = OV2640_GATHERING;//标记数据采集中

}

}

2.2 图像处理与灭火

2.2.1图像处理算法

实验采用蜡烛作为火源。对于高亮度的火焰的信号识别[7-8],常用的RGB模型识别会产生较大误差。OV2640摄像头模块支持YUV模型[9],其中Y为亮度信号,U、V为色差信号。采用YUV色彩空间的重要性在于它的亮度信号和色度信号是分离的,此特性可用于完整、准确地得到图像中的亮白区域。直接提取Y值即可识别火焰,使数据的处理过程得到简化,如图3所示。

由于从OV2640摄像头直接获取的图像可能包含随机噪声等干扰,为了能够准确无误地识别到火焰,先对图形进行中值滤波处理[10]。中值滤波[1,11-12]是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。这种滤波器的优点是运算简单而且速度较快,能较好地处理噪声又能保护信号的细节信息。中值滤波是一种邻域运算,把邻域中的像素按灰度等级进行排序,然后选择该组的中间值作为输出像素值。首先确定一个以某个像素为中心点的邻域,为使边缘不被模糊,采用大小为1×3的滑动窗口进行滤波;然后将邻域中3个像素的灰度值进行排序,取其中间值作为中心点像素灰度的新值。中值滤波的输出像素是由邻域图像的中间值决定的,因而中值滤波对极限像素值远不如平均值那么敏感,从而可以消除孤立的噪声点,又可以使图像产生较少的模糊。

图3火焰识别流程图

对处理后的火焰图片进行分析,火焰中心的Y值很大,在250附近;而周围环境的Y值基本低于200,因此选择220作为判断火源的界限。当图片像素点的Y值大于220时,将该点的RGB值置为(255,255,255);反之,则置为(0,0,0),即做二值化处理,由此来得到火源的位置。

小车摄像头拍到的火焰如图4所示,经图像处理后得到的二值化图像如图5所示。

图4 小车传输的原始图像图5 二值化后的图像

2.2.2灭火算法

检测到火焰后,为了得到小车与火焰的偏离程度,利用边缘检测法[13]计算火焰的中心位置。

边缘是图像中灰度变化最明显的地方,主要分为阶梯形、屋顶形和线形边缘。边缘检测利用不同区域图像特征的差异检测特征发生变化的位置,实现对象和背景的分离。常用的边缘检测算子有Roberts 算子、Sobel 算子、Prewitt算子等。经二值化处理的图像边缘类型为阶梯形边缘,边缘两边的灰度值变化明显,其灰度变化曲线的一阶导数在边缘处达到极大值[14]。由于实验仅需了解火焰水平方向上偏离小车的程度,所以只需使用水平方向上的一维阶梯算子。实验采用[-1 1]算子对火焰进行边缘检测,该算法简单明了,大大简化了计算量,同时检测出来的边缘参数又能满足要求。对于上述的[-1 1]模板,模板访问图像中的每一个像素,中心点处的响应为模板系数与被该模板覆盖的区域中的灰度值的乘积。对梯度图像进行阈值处理,其值等于零的像素则显示为黑色,而小于零或大于零的像素则显示为白色。对图像中所有像素执行该操作后,得到火焰的边缘像素。通过观察发现,该模板对于垂直线有最佳响应,方便寻找火焰纵向边缘,计算横向中心位置。

在检测出边缘点之后,根据提取出来的图像轮廓点的坐标信息确定中心位置,由:

可得第f行中心位置。其中:xi为像素点的横坐标;pi为该像素点的灰度值,为0或1。计算中心位置xf的平均值x与图像中心x0的位置偏差e=x-x0。当eWidth/8,判定小车向右偏离火焰方向;当e<-Width/8,判定小车向左偏离火焰方向。

根据处理的结果,输出控制信号到执行机构。执行机构接收控制信号,通过调整PWM波输出控制转向舵机和直流电动机[15],改变小车的运动状态。若小车偏右,则向左旋转0.2 s;若小车偏左,则向右旋转0.2 s,直到小车正对火焰方向。当小车正对火焰时,打开风扇,进行灭火。实现过程如图6所示。

图6灭火流程图

2.3 无线远程操控

通过Android SDK开发软件,根据通信协议,测试 APP按钮下行命令,设计小车控制逻辑,编写各执行函数。调试程序,使小车在APP控制下按预期行驶,启停。调整图片分辨率,使得终端APP显示流畅的视频流同时拥有一定的清晰度。在Android手机上安装调试成功后的软件,通过WiFi连接小车,界面如图7所示。通过APP控制小车前进、后退和转弯,控制机械手臂的动作;APP按钮命令控制摄像头打开或者关闭,摄像头工作时,将获取到的图像帧实时传送给APP显示,主要实现代码如下:

if(c_ov2640_state_machine==OV2640_TRANSFER )

{

//USART_Send_PC((u8*)a_jpeg_buf,m_jpeg_transfer_len);

wifi232_send_pc((u8*)a_jpeg_buf,m_jpeg_transfer_len);

c_ov2640_state_machine = OV2640_READY;

}

图7 APP界面

3 实物实验

小车实物见图8。根据智能小车的功能,搭建的测试赛道如图9所示。小车经直线行驶、循迹、颜色识别、避障后,进入灭火执行区域。小车在未识别到火焰时自动旋转,识别到火焰后根据位置偏移e调整运动状态,直到正对火源,开始灭火。此外,通过WiFi模块实现手持终端的无线通信,并由手持终端实现对小车的控制,获取小车摄像头传输的实时图像。可以通过手动操控小车,使小车行驶到任意位置,执行任意可行操作,如利用机械臂运输、开启风扇灭火等。

图8 小车实物图

图9 赛道示意图

小车自动化程度高,能够自动寻找并识别火源,按照预定的算法实现灭火;APP能够方便地控制小车,且灵敏度高,小车反应快。总体来看,小车很好地完成了预期功能,实验效果良好。

4 结 语

本文基于STM32微处理器、OV2640摄像头及WiFi模块,提出了一种智能小车无线远程灭火的方案,探讨了图像采集、图像处理和无线远程操控的算法。实验表明,小车具有自动处理图像并识别火焰的功能,且通过无线终端实现了对小车的控制,有效提高了识别火焰的灵敏度和准确性,增强了小车的可操控性。该系统运行稳定,效果良好,智能化程度高,可以广泛地应用于消防等领域。

参考文献(References):

[1]Rafael G, Richard W. Digital Image Processing[M]. 3rd ed. Publishing House of Electronics Industry, 2010.

[2]孙龙,朱磊. 基于STM32F4的无线视频监控器设计[J]. 信息通信,2016(10):143-145.

[3]黄健,罗国平,杜丽君. 基于STM32F407平台OV2640驱动程序设计[J]. 通讯世界,2015(19):246-247.

[4]王建,梁振涛,郑文斌,等. STM32和OV2640的嵌入式图像采集系统设计[J]. 单片机与嵌入式系统应用,2014(9):46-48.

[5]易翔. 基于Android的室内监控系统的研究与实现[D].南京:南京邮电大学,2015.

[6]贺荣峰, 张祺, 蔡松涛,等. 基于STM32的嵌入式远程图像监控系统设计[J]. 工业控制计算机, 2016, 29(6):16-17.

[7]苏毅. 基于图像处理的火焰识别与特征参数提取算法研究[D].合肥:安徽理工大学,2013.

[8]Chen Ying, Wu Ai-Guo. Software design of fire detection system based on image processing[J]. Low Voltage Apparatus, 2006(1):7-9.

[9]仇国庆,陈军鸽,李明,等. 基于图像特征的火焰识别与检测技术研究[J]. 自动化与仪器仪表,2012(3):25-27.

[10]杨太任, 刘海刚, 项华珍,等. 图像采集与处理在摄像头寻迹小车上的应用[J]. 电子科技, 2014, 27(12):52-57.

[11]王香菊. 基于中值滤波和小波变换的图像去噪方法研究[D].西安:西安科技大学,2008:11-12.

[12]龚声蓉,刘纯平,王强. 数字图像处理与分析[M]. 北京:清华大学出版社, 2006.

[13]王祥好. 模糊PID控制算法在智能小车中的研究与应用[D].合肥:合肥工业大学,2009:33-34.

[14]陈宇云. 灰度图像的边缘检测研究[D].成都:电子科技大学,2009:1-2.

[15]王立谦,汪小志,林卫国. 农业激光自动采摘定位机器人控制系统设计——基于PID控制[J]. 农机化研究,2015(9):211-216.

猜你喜欢
小车火焰摄像头
浙江首试公路非现场执法新型摄像头
最亮的火焰
摄像头连接器可提供360°视角图像
缤纷的火焰
大车拉小车
自制小车来比赛
漂在水上的火焰
刘老师想开小车
两轮自平衡小车的设计与实现
吹不灭的火焰