1.车道闸杆防撞系统软件的设计与实现
软件在编写上采用DSP 专用汇编指令集和C 语言混合编程的方法, 优点在于汇编可以弥补C 语言的一些瓶颈( 如C 语言中循环的反复赋值过程) , 从而大大提高程序的运行效率。程序的主要组成包括自适应阈值的获取、图像预处理、背景更新、特征提取与识别判断。
1.1 系统软件的整体结构
系统的程序流程图如图 所示。程序的具体实现步骤如下。
(1 ) 对系统的使用环境初始化。
(2 ) 取系统运行后的前10 帧图像的平均值并将其保存2.1 系统软件的整体结构系统的程序流程图如图2 所示。程序的具体实现步骤如下。
(1 ) 对系统的使用环境初始化。
(2 ) 取系统运行后的前10 帧图像的平均值并将其保存为背景图像。
(3 ) 将下一帧图像与背景相减, 根据最大类间方差法(Otsu ) 求差值图像的阈值, 根据阈值求二值图像。
(4 ) 将二值图像进行中值滤波与开运算, 消除由于噪声等干扰造成的小亮点, 在纤细处分离物体, 平滑较大物体的边界,提高图像的质量,为后续的处理奠定基础。
(5 ) 对开运算之后的二值图像进行特征提取, 如面积、周长等。
(6 ) 根据提取的特征进行识别判断,并输出控制信号。
(7 ) 对背景进行更新, 消除外部环境变化对处理结果的影响。
1.2 自适应阈值的获取
自适应阈值是指处理和分析过程中, 根据处理数据的数据特征自动获得适应环境变化的阈值, 在不同环境下都能得到较理想的二值图像, 使系统智能化。本系统采用最大类间方差法(Otsu ) 来获取阈值。它是按图像的灰度特性将图像分成背景和目标。背景和目标之间的类间方差越大, 说明构成图像的背景和目标的差别越大。
算法如下:
(1 ) 设图像包含256 个灰度(G0,G1,…,G255) , 灰度值为Gi的像素点数为Ni, 灰度级为Gi的灰度值总数为Mi=Gi×Ni, 一帧图像的像素点总数为:N=N0+N1+…+N255。
一帧图像灰度值的总数为:Gsum=M0+M1+…+M255。令最大类间方差的初值为σmax=0 。
(2 ) 令k 从0~255 遍历, 循环计算n1+=Nk,N2=Nn1,Gsum +=k ×Gk,m1 =Gsum/n1,m2 =(Gsum -Csum)/n2,σ =n1 ×n2 ×(m1-m2)2。
(3 ) 判断σ 与σmax的关系,当σ>σmax时,更新σmax=σ,此时更新最佳阈值T=k,当k 遍历结束就可以得到最佳阈值。
1.3 图像预处理
图像消噪是图像预处理的主要任务之一, 其作用是提高图像的信噪比, 突出图像的区域特征。本系统采用中值滤波和由数学形态学的腐蚀和膨胀运算定义的开运算实现。
中值滤波是一种非线性平滑技术, 它将每一像素点的灰度值设置为该点邻域窗口内的所有像素点灰度值的中值, 适用于滤除脉冲噪声或颗粒噪声, 并能保护图像边缘。其实现原理为:g (x ,y )=mid {f (x-k ,y-i ) , (k ,i∈W)}, 其中f (x ,y ) 为原始图像;g (x ,y ) 为处理后图像;W 为二维模板, 通常为2 ×2 或3 ×3 的区域, 也可以是不同的形状, 如线状、圆形、十字形、圆环形等。
实际中通常使用开运算消除与结构元素相比较小
的两区域, 从而保证图像的整体灰度值基本保持不变。
开运算是由先腐蚀后膨胀运算相结合而定义的, 腐蚀运算去除了小的亮区域, 但同时削弱了图像的亮度; 膨胀运算既增强了图像的亮度, 又不重新引入腐蚀运算去掉的小区域, 两者的默契配合, 很好地消除了由于噪声而造成的小亮区域。开运算的实现公式为:A。B=(AΘB)茌B, 其中A 为输入图像,B 为结构单元;AΘB=∩{A-b}:
b∈B}, 通过将输入图像半移并计算所有半移的交集而得到;A茌B=U{A+b :b∈B} , 通过相对结构元素的所有点半移输入图像, 然后计算并集得到。
区域填充可以快速地填充联通区域的内部孔洞, 并使轮廓边界修补完整。算法描述如下: 二值化后的差分图是存在黑色孔洞的联通区域, 首先对其自底向上、从左向右在水平方向上依次扫描白点, 如果相邻的白点的间距小于设定的距离阈值, 就将这相邻的白点连成一线( 即用白点填充白点之间的黑点) ; 同样地, 再对图像自左向右进行操作。从底向上地在垂直方向上重复一遍上述的填充算法, 就可以得到完整的连通区域。
1.4 背景更新
背景泛指在视觉图像中与人所看到的视觉前景相对应的起到衬托前景、协调色调等作用的独立图像。背景更新使图像分割效果的保障, 及时准确地对背景进行更新使后续处理结果起到决定性的作用。本文通过子块划分的方式更新背景, 其实现步骤如下:
(1 ) 将处理后的二值图像C 分成n 个互不重叠的小区域, 子块的大小取决于运动目标的面积, 通常取运动目标面积的1/4~1/8 。
(2 ) 将子块分为背景块和前景块, 子块的边缘像素值为255 的个数达到子块总边沿像素的10%左右即可认为该子块是前景块; 边沿像素点没满足要求, 再对子块像素值为255 的个数进行统计, 当其值到达子块总像素的30%左右即可判定该子块是前景块。不满足上述要求的其他子块均为背景块。
(3 ) 对背景块进行更新, 将背景块作为一个整体并采用Surendra 算法进行更新, 其具体实现公式为:
Bj(x ,y )=αIj(x ,y )+(1-α)Bj-1(x ,y )其中,Bj(x ,y ) 为更新后的背景;Bj -1(x ,y ) 为更新前的背景;Ij(x ,y ) 为当前图像;α 为迭代速度系数, 本系统取α=0.3 。
(4 ) 对前景块进行更新, 由于前景块既可能包含前景像素也可能包含背景系数, 因此要对前景块逐个像素点进行更新。其更新算法为:
Bj(x ,y )= Bj-1(x ,y ) ,Cj(x ,y )=255α×Ij(x ,y )+(1-α)Bj-1(x ,y ) ,Cj(x ,y )=0 U (2)其中,Cj (x ,y ) 为二值图像中前景块部分;Bj (x ,y ) 为更新后的背景;Bj -1(x ,y ) 为更新前背景;Ij (x ,y ) 为当前图像;α 为迭代速度系数, 本系统取α=0.3 。
(5 ) 实际应用中, 光照的剧烈变化、摄像机的移动等都会造成背景全局变化。如果发生全局变化, 利用上述方法更新需要花很长的时间才能完成, 会严重干扰系统的正常工作, 甚至会让系统一度处于瘫痪状态。为了解决这个问题, 本系统如果检测到前景块数量急剧增加,就会判定为发生了全局变化, 连续100 帧都出现全局变化, 则对背景进行重新初始化, 时刻保证背景的正确性。
1.5 特征提取与识别判断
本系统的主要目的是实现防撞, 因此没必要提取太多特征和进行模式识别等复杂运算。提取图像分割后前景的面积和轮廓周长作为图像特征, 当前景的面积为总像素的30%且周长大于阈值Tl时认为有汽车通过, 并给出控制闸杆起降的信号; 否则不给出控制信号, 只进行图像背景的更新。
2 实验结果与分析
为了验证本系统的实验效果, 进行了现场测试。为了提高系统的工作效率, 将一帧图片通过网口上传到上位机, 通过上位机选择感兴趣的区域并将该区域的坐标传给DSP,DSP 根据接收到的坐标选取对应的区域进行处理, 测试的过程与结果如图3 所示。
图(a ) 是某时刻滤波前的背景图像, 图(b ) 是滤波后的背景图像。图 (c ) 是当车经过时捕捉的图像, 图3 (d ) 是滤波后的图像, 根据滤波前与滤波后图像的对比可知, 滤波后的图像比较光滑, 噪声比较少, 利于后续的处理。图(e ) 是处理前的二值图像, (f) 是处理后的二值图像, 对比图 (e ) 与图 (f) 可知, 经过开运算及区域填充处理后图像的黑色小点明显减少, 更加贴近前景的轮廓, 使处理结果更加准确。
图3(d ) 与图(b ) 相减得到差值图像, 根据Otsu 算法求差值图像的阈值T, 根据阈值T 得到图 (e ) 所示的二值图像, 并经过一系列的预处理后得到图(d ) 所示的效果。根据图(d ) 求出白色区域的面积和轮廓的周长,根据这两个特征来判断是否有车辆经过。有车时发出信号控制闸杆不能下降,直到没有车辆一段时间后才允许闸杆下降,以此实现车道闸杆防撞的功能。经过一段时间的测试, 结果显示系统工作稳定, 实验效果较理想。
本文采用TI 公司的高速DSP DM642 作为系统的硬件平台, 满足了系统实时性的要求。采用中值滤波和数学形态学的开运算作为图像预处理的基本算法, 有效地提高了图像的质量, 减少了外部噪声的干扰, 为以后的特征提取和识别判断打好可靠的基础。采用分块操作对图像背景进行更新, 减少了计算时对存储器的开销, 降低了对硬件的要求, 提高了运算速度, 提高了背景对环境的适应能力, 是系统能够实现防撞功能的保障。
上海祁舜道闸专业服务:上海道闸车牌识别系统,车牌自动识别系统,无人值守停车管理系统,智慧停车场管理,智能人行通道,道闸,智能道闸,智能车位引导系统,停车场无感支付系统,门禁安装 ,人行通道翼闸、三辊闸、速通闸等,上海地区可上面测量,免费设计安装。
官网:www.qishunzn.com
热线:15900830396(微信同号)
电话:021-56161178
地址:上海市宝山区美丹路222号640室(美兰湖地铁站)
邮箱:qishunjianzhu@126.com
业务部:罗先生 15902126928
业务部:刘女士 15221009051
业务QQ:2207171446