基于图像的嵌入式车位检测系统设计

2012-07-04 09:26孙建延李建峰SUNJianyanSHIWeiLIJianfeng
制造业自动化 2012年10期
关键词:停车位车位椭圆

孙建延,时 伟,李建峰 SUN Jian-yan, SHI Wei, LI Jian-feng

(1. 中州大学 工程技术学院,郑州 450044;2. 防空兵学院,郑州 450052)

0 引言

车位检测技术是智能停车场管理系统中的关键技术,与现有的地感线圈、红外线和超声波等检测技术相比[1],视频检测技术具有检测器安装方便、易于维护,无需破坏路面,对周围环境没有影响等优势;图像的信息量丰富,视频监测直观可靠,现已被逐渐使用。

1 停车场车位视频检测技术

由于汽车种类、形状、大小、颜色各异,直接对获取的图片进行分析判断车位是否空闲相当复杂,对系统内存和运算能力要求高。若在停车位画一个特征圆,在斜前方对该目标圆进行视频检测。当图片中没有目标圆,表明该车位被占用,否则车位空闲。由于拍摄角度问题,特征圆被扭曲成椭圆,最终对空闲车位的检测转化为对图片中是否含有椭圆的检测。该方法简单,计算所需要的资源少,检测速度快。

1.1 停车场视频检测

本文采用USB摄像头对停车位进行视频采集,通过图像处理技术, 对椭圆特征信息进行提取,确定停车位的使用情况,如图1所示。

与摄像头被安放在待检测车位的正上方(如摄像头1)相比,把摄像头安放在车位的斜前方通过增加偏移角度和拍摄距离增大可视范围,获取更多的检测车位(如摄像头2)。

图1 停车位拍摄示意图

1.2 椭圆检测算法

为了加快椭圆检测速度,提高检测的准确性,若采用传统Hough变换和随机Hough变换等方法[2]对图片中的椭圆进行检测,需要较长的运算时间,并且需要消耗较多的内存。目前采用较多的方法是随机椭圆检测法,其结合了最小二乘法和随机检测的方法可以快速检测多个椭圆[3,4],该方法需要随机采样6个点对椭圆进行检测,6个点同时落在同一个椭圆上的概率小,导致较多的无效采样,增加了算法的时间复杂度。因此从处理效率和节省能源两方面考虑限制了算法在嵌入式停车场车位实时管理的需求。

本系统在随机最小二乘法拟合的基础上,基于椭圆的中心对称特性和旋转不变性进行椭圆边缘点检测[4],提高了采样点落在同一个椭圆上的概率, 所需要的计算量小,变量少,可以使用内存较小的ARM系统。

如图2所示,椭圆是一种存在两条正交对称轴的图形, 通过图形中心的直线与边界的两个交点P1和P2互为对偶点[4,5],其外法线方向相反,切线斜率相等。当图形或图像发生平移、缩放或旋转后,对偶点仍然互为对偶点,即关于椭圆中心的对称特性和旋转不变性。

对获取的图片进行预处理。首先将图片转换成灰度图像,然后对图片进行高斯滤波去除噪声,并且进行二值化处理,使用Canny算子提取边缘[6],获取图像的边缘点集E。

在边缘点中,基于椭圆的旋转不变性,利用对偶点切线斜率相等的性质选取对偶点,依次选取3对对偶点,共6个点,使用最小二乘法拟合算法拟合一个椭圆。为了得到较好的拟合效果,采样对偶点要考虑均匀分布,选点时使用距离阈值限制。

另外,由于噪声干扰,拟合得到的椭圆未必是真实椭圆。采用8邻域膨胀法统计落在此椭圆上的边缘点数目N和椭圆的周长L验证此椭圆是否为真实椭圆。根据先验知识,当N/L<0.9时,则此椭圆为虚假椭圆,否则为真实椭圆并从边缘点集中剔除落在椭圆上的边缘点。判断剩余边缘点的数目,如果剩余点数过少,则认为剩余点数不足以构成一个椭圆退出检测,否则继续进行检测。

椭圆检测算法流程如图3所示。

图2 椭圆上对偶点示意图

2 系统硬件平台

系统采用FriendlyARM公司的Tiny6410开发板为硬件系统,以Linux操作系统为软件系统构建停车位视频实时检测平台。

系统硬件平台采用S3C6410A处理器,主频为533MHz, 板 载256M DDR RAM和256M SLC Nand Flash,具有高性能、低功耗、体积小、接口丰富等优点。带有以太网接口和USB主从接口,LCD采用4.3寸触摸屏,用于现场监控效果的调试。采用USB摄像头,分辨率为130万像素,通过V4L2的驱动程序控制摄像头进行拍摄。详细内容参看FriendlyARM公司的Tiny6410 硬件说明手册。

3 系统软件平台[7]

系统软件基于Intel的开源计算机视觉库OpenCV,以及用于Linux的开源视频设备内核驱动V4L2设计。

平台采用NFS网络文件系统作为根文件系统进行应用程序开发,使用NFS实现ARM板和PC上位机之间的数据交换。其关键是设置好PC NFS服务和开发板的启动参数,参看Tiny6410 Linux开发指南。

程序共分为三个部分:系统控制程序、停车位拍照程序和图片检测程序。

3.1 视频技术

OpenCV是一个跨平台计算机视觉库,它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法[8]。

在ARM中编译OpecnCV,建立运行环境。通过NFS调用ARM,在ARM下挂载本地文件夹,将OpenCV下载到该文件夹中,切换到OpenCV的文件夹下依次运行configure、make、make install指令后,将编译生成的lib文件拷贝到ARM的lib根目录下,以后使用了OpenCV的程序经过编译之后就能够在ARM下顺利运行。

V4L2(Video4linux2)是Linux下用于获取视频和音频数据的API接口,通过使用视频采集设备和驱动程序,可以实现视频采集、实时播放等功能[9]。在Linux中视频设备作为设备文件,可以像访问普通文件一样对其进行读写。通过调用V4L2,使得应用程序有发现设备和操作设备的能力。Linux为摄像头设备提供了一系列编程接口及数据接口函数,通过调用这些函数可以进行打开,捕获,读取,关闭设备等操作,以及设置视频和图像参数。

3.2 系统控制程序

系统控制程序流程如图4所示,负责系统的逻辑,包括系统的初始化,维持系统的运行,系统的关闭,以及为拍照程序和椭圆检测程序服务。

图4 系统控制程序流程

对系统的状态进行初始化后,经椭圆检测后对停车位设置一个标志位,每次当车位变化的时候,改变该标志位,即每次对车位状态进行判断的时候,首先将结果与系统中保存的状态进行比较。

当检测结果发现状态变化时,不能简单的更改车位的状态,需要进行多次检测(5次),并且不再以10秒为单位进行判断,而是每次检测完就直接拍摄下一张图片判断,通过统计对检测结果判断车位是否有变化,以防误判。

3.3 停车位拍照程序

使用V4L2内核驱动程序,操作摄像头对目标停车位进行拍摄,如图5所示[9]。

图5 停车位视频采集图片流程

首先,通过调用open()函数打开视频设备文件,成功后返回的文件描述符代表捕获的硬件设备;然后调用ioctl()函数命令参数(VIDIOCGCAP、VIDIOCGPICT、VIDIOCGMBUF、VIDIOCSPICT、VIDIOC_QUERYSTD)获取设备信息、采集的图像属性、图像缓冲区帧信息、检测当前设备支持的标准和设置属性和采集方式;利用v4l2_requestbuffers类型结构体变量为视频设备分配内存,即分配的缓存数量;调两个ioctl()函数命令(VIDIOC_DQBUF、VIDIOC_QBUF)来获取数据;当整个系统的工作完成之后,调用close()函数来关闭视频设备。

3.4 图片椭圆检测程序

基于椭圆对称性和最小二乘法拟合算法对拍摄图片进行椭圆检测,通过对图片中是否含有椭圆来判断车位是否被占用。算法流程如图3所示。

椭圆检测系统又分为以下四个模块:预处理模块、采样模块、最小二乘法拟合模块和椭圆的验证模块。输入图片依次经过四个模块处理之后,输出图片中是否存在椭圆。各模块通过指向图片的IplImage*类型指针变量实现数据传递,进而实现对图片的处理,而且模块化后的程序便于修改和升级处理。

4 试验结果及分析

试验时,首先利用笔记本视频应用程序调整好摄像头的角度位置,使拍摄的效果清晰良好,以防椭圆畸变太大,不能正确检测。然后把摄像头连接到ARM系统,对地面停车位进行多次检测,观察输出是否正确。如果多次检测结果正确,则认为摄像头位置固定好。

由于椭圆检测最多需要2秒,因此以10秒为间隔进行拍摄,此频率可以满足停车场检测的需要。每张图片大小为8KB左右,由于系统分配的存储空间有限,不能对每次拍摄的结果都进行存储,并且停车场车位的状态变化频率较低,因此可以仅在每次检测到车位变化的时候对当时拍摄的图片进行存贮。

系统对随机产生的多椭圆图进行测试验证,共200张图片,每张图片上随机产生3到4个椭圆。其中具有3个椭圆的图片有89张,4个椭圆的图片有111张。

表1 统计椭圆检测的正确率

由于随机生成的椭圆,有的相距太近,以及接近重合现象,容易出现的错误大部分上是检测到的椭圆个数少于真实的椭圆个数。

4.1 高斯噪声对检测精度的影响

为了检测高斯噪声对检测效果的影响,为椭圆图片添加不同方差的噪声。对6张图片分别添加样本方差为[0.1, 0.3, …1.1]的零均值高斯噪声进行了实验。如图6所示。

图6 添加方差为0.1和1.1的高斯噪声的灰度图

当噪声方差为0.1时,图片灰度化之后相对于背景噪声,椭圆的边缘仍然很清晰,噪声点的干扰小,能顺利的提取出边缘。当噪声方差1.1时,图片灰度化之后相对于背景目标椭圆已经变得很模糊,很难从图片中提取边缘,造成较大的检测误差。因此方差越大,目标椭圆越不清晰,对检测精度影响越大。

4.2 环境对停车位检测系统的影响

在对停车场进行车位检测的过程中,由于踩压磨损,光线等原因,待检测椭圆会逐渐变得模糊,不同的光照条件对目标车位的检测也有很大的影响,因此对不同的自然环境下拍摄的图片进行了统计分析。错误出现较多的情况是空闲车位被检测成占用,而车位被占用时,检测结果的正确率是相当高的。在观测角比较好的情况下,检测误报率在2%以下。

在椭圆褪色或被遮挡的情况下,检测效果取决于剩余的椭圆部分能在多大程度上保持椭圆的形状特性。如果目标椭圆仍能保持椭圆的基本形状,那么目标椭圆就能被检测出来。否则,系统很难通过车位上是否有椭圆来判断车位被占用,需要借助其它图像特征算法进行识别。

5 结束语

本文采用USB普通摄像头实现了停车场车位检测系统设计,包括系统结构和基本算法流程,

以及具体试验过程。使用椭圆对称性和最小二乘法拟合随机椭圆检测算法提高检测效率,降低了系统复杂度。通过对多种自然环境下检测结果显示该系统完全能应用到实际车位检测系统中。

[1] 蒋大林, 邓红丽. 基于视频图像的多特征车位检测算法[J]. 北京工业大学学报, 2008, 34(2): 137-140.

[2] 邢诚, 沈琦, 谭小波, 等. 一种基于随机 Hough变换的椭圆检测方法[J]. 计算机与数字工程, 2008, 36(1): 23-25.

[3] 陈海峰, 雷华, 孔燕波, 等. 基于最小二乘法的改进的随机椭圆检测算法[J]. 浙江大学学报:工学版, 2008, 42(8):1360-1364.

[4] 吕洪赫, 姚振杰, 易卫东. 基于对称性的最小二乘拟合随机椭圆检测算法[J]. 电子测量技术, 2011, 34(5): 37-41.

[5] 周小明, 刘明, 徐飞. 一种基于长轴和对偶性的椭圆检测新算法[J]. 光学技术, 2007, 33(5): 763-765.

[6] 李滚, 严发宝, 苏艳蕊, 等. 基于Canny算子的自适应双阈值油罐油位红外成像检测[J]. 电子测量与仪器学报,2009, 23(9): 44-49.

[7] 李晓光, 吉荥廷, 张立峰. 基于嵌入式LINUX和ARM9的视频采集系统[J]. 电子测量技术, 2009, 32(2): 102-104.

[8] 刘瑞祯, 于仕琪. OpenCV教程—基础篇[M]. 北京: 北京航空航天大学出版社, 2008.

[9] 黄睿邦, 汤荣江, 李文亮. Linux下基于Video4Linux的USB摄像头视频采集实现[J].现代计算机, 2009, (309): 182-185.

猜你喜欢
停车位车位椭圆
Heisenberg群上由加权次椭圆p-Laplace不等方程导出的Hardy型不等式及应用
例谈椭圆的定义及其应用
为了车位我选择了环保出行
蹲守停车位
我自己找到一个
巧用点在椭圆内解题
俄要为免费停车位“瘦身”
车位上的数
一个车位,只停一辆?
正点