基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
基于对称性特征的障碍物检测
摘要:着重阐述基于机器视觉的前方车辆障碍物检测方法。首先根据公路上前方车辆的先验特征模型,建立障碍物探测的感兴趣区,以缩小搜索区域;随后提出一种新的对称变换算子,用于检测障碍物车辆的对称轴,并确定障碍物车辆的矩形轮廓。为进一步提高障碍物检测的实时性,采用递归模板匹配法对障碍物进行跟踪。试验表明上述方法是有效的。
关键词: 障碍物; 检测; 对称性
一、概述
探测障碍物和预测危险是智能车辆不可缺少的重要功能。对前方车辆进行实时自动探测和识别对于保持安全车距、防止发生碰撞事故具有十分重要的意义, 也是安全行驶的前提条件。
通常,人们对待识别和定位的目标都具有先验知识,人类视觉系统之所以能识别和分辨千差万别的目标,也是长期积累先验知识或者说是训练学习的结果。
本文在较广泛地调研文献的基础上,对图像识别系统进行了较为全面的综述,并以较为大量文字和具体的实例,通过使用常用的仿真语言和软件对基于数字图像处理的障碍物的识别进行了研究。第一部分通过中值滤波、梯度法锐化和边缘检测进行处理后,将目标图像与背景图像差分;第二部分再进行形态学膨胀、最小外接矩形特征计算后,在分割的基础上选择需要提取的特征,对某些参数进行测量后,根据测量结果做分类和识别,通过对标记区域计算质心进行定位识别,最后通过MATLAB软件对其进行了仿真,获得了较理想的识别结果。
二、基于对称性特征的障碍物检测
障碍物的检测识别作为图像识别的重要内容,利用计算机对获得的图像进行分析和提取其中的目标信息,达到识别障碍物的目的。由于受距离、复杂环境及技术条件的限制,拍摄的图像一般都较复杂,这为置于背景下目标的提取及识别带来了较大的困难。通过对图像识别系统的学习和分析,本章利用图像识别的技术达到对障碍物的识别的主要目的,以路面及路面车辆的图像为例,在正常光照条件下进行识别。
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
1 灰度化
图像灰度化就是使彩色的R,G,B分量值相等的过程。由于R,G,B的取值范围是[0,255],所以灰度的级别只有256级,即灰度图像仅能表现256种颜色(灰度)。
最大值法:使R,G,B的值等于3值中最大的一个,即
R=G=B=max(R,G,,B)
显然,最大值法会形成亮度很高的灰度图像。
其中,,分别为R,G,B的权值。取不同的值,加权平均值法就形成不同的灰度图像。由于人眼对绿色的敏感度最高,红色次之,对蓝色最低,因此使将得到比较合理的灰度图像。实验和理论推导证明,当=0.30,=0.59,=0.11时,即当R=0.30R + 0.59G + 0.11B 时,能得到最合理的灰度图像。MATLAB中,RGB模式的图像进行灰度化处理时,调用函数语句为:
I=imread('*.bmp');
J=rgb2gray(I);
即可实现对彩色图像的灰度化处理,为后续工作做好准备。
2 背景差分
目标分割要对图像进行差分处理,以获得目标区域,克服噪声影响。背景差分即是将当前图像与背景图像的对应像素值相减,再对差值取绝对值后输出,得到包含有目标信息的图像。背景差分需要设定一个阈值,将亮度大于阈值的点作为目标点,反之作为背景点,从而得到目标区域,这种方法适合用来在背景图像较为稳定的情况下检测目标。
阈值选取方法分为固定阈值和自适应阈值。固定阈值是一个常数,当图像使用固定阈值得不到有效分割时,就使用自适应阈值进行处理。自适应阈值是图像灰度值的函数,随图像灰度值分布的不同而调整,适用于亮度不均的图像。
本文选取的图像是静态的,背景图像是直接获取的,所以选用固定阈值。经过分析背景图像的灰度值,阈值T=0.2。
在背景差分时,为了应对非道路部分的变化(如光照缓慢变化、路旁树枝的摇动、草地上出现行人等),由于实际场景中这些变化不一定会单独出现,所以单高斯模型无法应对这样的背景变化,所以选用高斯混合模型对背景图像进行更新,以应对背景场景出现的干扰,保证差分后图像只出现待识别的目标图像。
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
高斯混合模型使用K(一般为3~5)个高斯模型来表征图像中各个像素点的特征,统计图像中相同像素点的最近t帧值,从而得到下一像素点值在当前帧的概率密度函数:
(3.7) 式
式中,表示该像素点颜色值的R、G、B分量;权值;i=1, 2, … , k。k个高斯分布总是按照优先级(i=1, 2, … , k)从高到低的次序排列[5]。
对某像素点的每个样本更新点,判断其与已存在的K个高斯分布进行匹配,若满足条件,则与该分布匹配。若不匹配,则增加新高斯分布或者用新高斯分布代替最小的分布。新的高斯分布以作为均值。
其中。高斯模型更新完毕之后,重新排列优先级,取前B个高斯分布生成背景:
该模型中有两个重要参数和H,其中1/ 表示训练P()的最大样本空间中的样本点个数;H用来确定作为背景模型的分布。
算法总体的流程如下:
(1)计算当前像素值是否归属于存在的正态分布中的某一个;
(2)若找到一个匹配,则更新每个分布的权值,引入一个学习参数,其大小由噪声水平决定,更新公式为:;
(3)若没有找到任何匹配,则认为当前像素值属于前景,并用一个新的正态分布取代排序在最后面的正态分布。
在具体实验中,通常把n个分布中最大分布的值作为当前背景。
在进行背景差分后二值化,再对目标区域进行膨胀处理,对目标区域进行标记,求取最小外接矩形。
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
3 二值化
图像的二值化处理就是将图像上的点的灰度置为0或255,也就是使整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
二值化的原理即设定某一阈值,将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分。设输人灰度图像函数为f(x,y),输出二值图像函数为g(x,y)。
阈值T是把目标和背景区分开的标尺,选取适当的阈值就是既要尽可能保存图像信息,又要尽可能减少背景和噪声的干扰,这是选择阈值的原则。 MATLAB中二值化图像函数主要有dither和im2bw函数。
dither函数通过颜色抖动来达到转换图像的目的。语法如下:
BW = dither(I)
Image是图像矩阵资料,BW是二值化图像矩阵;
而im2bw函数通过对灰度值进行阈值判断的方法达到目的。语法如下:
BinaryImage = im2bw( Image, [Level] )
Image是输入图像矩阵资料,Level是二值化程度值,介于0到1之间,BW是二值化图像矩阵。本文采用im2bw函数。
4 中值滤波
中值滤波是一种非线性滤波,一般采用含有奇数个点的滑动窗口,用窗口中个点灰度值的中值来代替指定点的灰度值。对于奇数个元素,中值是按照大小排序后中间的数值;对于偶数个元素,中值是指排序后中间两个元素灰度值的平均值。这里, 中心点像素减去近邻8个值的中值来置换该点像素。输入像素f (x , y ) 的8个临近像素值从小到大排列并标记为:,从中值滤波输出的像素值g(x, y)定义为:
g(x, y)=f (x, y)-m(x, y)
式中m(x, y)定义为:,其输出像素是中心像素减去8个近邻像素值的中值。
对于二维序列 Xij 进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为:
Yi,j Med{Xij},A为滤波窗口 A
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
在实际使用窗口时,窗口的尺寸一般先用3×3,再取5×5逐渐增大,直到其滤波效果满意为止。对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜,对于包含尖顶角物体的图像,适宜用十字形窗口。
本文选取的图像噪声水平较小,所以中值滤波处理选用33模板。相关的MATLAB语句为:
Image_BW_medfilt= medfilt2(image_bw,[3 3]);
figure;
imshow(Image_BW_medfilt)
中值滤波器是典型的低通滤波器,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。在一定的条件下,对滤除脉冲干扰及图像扫描噪声最为有效,但对于线、尖顶等细节多的图像不宜采用中值滤波。中值滤波对图像的平滑有显著效果,很好地去除了椒盐噪声,并有效保留了图像边缘细节。 5 Robert梯度算子锐化和边缘检测
梯度算子用于计算梯度值,通常认为它也是边界提取算子,具有极值性、位移不变性和旋转不变性。
图像f(x,y)在点(x,y)处的梯度定义为一个二维列矢量G[f(x,y)]:
T f f ,) ] G[f(xy x y
梯度的幅值即模值,为:
f 2 f G[f(x,y)] x y 2 12
梯度的方向在f(x,y)最大变化率方向上,方向角 可表示为:
arctan f f / y x
在不引起歧义时,为了方便,一般将梯度矢量的模值简称为梯度。实用中,梯度模还有很多近似式,此处不加列举。
对图像f施用梯度模算子,便可产生所谓的梯度图像g,g与f像素之间的关系是
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
g(i,j) G[f(i,j)]
式中G为梯度模算子。由于梯度图像g反映了图像f的灰度变化分布信息,因此对其进行某种适当的处理和变换,或将变换后的梯度图像和原图像组合作为f锐化后的图像。
Robert梯度算子用4点进行差分,以求得梯度,即采用对角方向相邻两像素之差,故也称为四点差分法。对应的水平和垂直方向的模板为:
当梯度计算完后,如何确定锐化输出的图像是一个需要考虑的问题,根据需要,可以生成不同的梯度增强图像。
梯度算子也可以用来进行边缘检测。Robert算子适用于边缘明显且噪声较少的图像分割,常用来提取道路图像。本文中,道路图像并不复杂,而且在边缘检测之前已经用中值滤波对图像进行了处理,消除了噪声,所以这里仍然采用Robert算子进行边缘检测。
Robert算子采用对角线方向的相邻两像素之差进行梯度幅度检测,其检测水平、垂直方向边缘的性能要好于斜线方向边缘,且检测定位精度比较高,但对噪声较敏感。
三、目标识别
膨胀处理后对膨胀后的图像进行标记,标记区域的方法是利用每一个区域的连通域来定的。MATLAB中的bwlabel函数可以在二值图像中标记连通区域,主要对二维二值图像中各个分离部分进行标注(多维用bwlabeln,用法类似,这里不作介绍)。用法介绍如下:
L = bwlabel(BW,n)
[L,num] = bwlabel(BW,n)
返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域或按8连通寻找,默认为8。这里num返回的就是BW中连通区域的个数。
接下来对标记图像进行最小外接矩形的计算。图像的外接矩形是指完全包含了图形上所有的点、线,且各边均与图形相接触的矩形。一个图形的外接矩形有
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
无穷多个,其中面积最小者称为最小外接矩形。由定义可知几何图形的最小外接矩形是唯一的,它在一定程度上描述了该图形的某些几何特征即长和宽。
计算最小外接矩形的一种方法是旋转法,即将图像在范围内等角度间隔旋转,每次记录其坐标系方向上的外接矩形参数,取其面积为最小的矩形并记录其长和宽。旋转法的结果精度取决于每次旋转角度的大小。步骤如下:
(1)将图像边缘点绕该图像形心点旋转,每次旋转;
(2)计算出每旋转后的最大横坐标、最小横坐标和 最大纵坐标、最小纵坐标,则可求出图像的外接矩形面积。
(3)在旋转,重复执行前两步,直到旋转角度达到时停止。
(4)在所有的图像边缘外接矩形面积中,找出面积S最小时的、、和,就可以计算出最小外接矩形的长宽比。
为保证精度,每次旋转的角度。算法流程如下:
图3.1 旋转法
对最小外接矩形计算后,对目标进行特征参数提取,提取出表征目标信息的特征参量,即可达到定位和识别目标障碍物的目的。特征参数提取是要获得表征目标的特征参量,作为检测结果输出,对于二值图像,常使用质心作为特征参量来表征目标位置信息。具体方法是对标记区域进行质心运算,然后找到该标记区域在x轴和y轴上区域的最佳边缘点。质心的计算公式如下:
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
式中,和分别为质心的横纵坐标,n为图像中目标区域的像素个数,和分别为区域中第k个像素的横纵坐标。
确定目标的质心后,就可以通过质心位置确定目标位置,加上最小外接矩形的标示,从而达到定位和识别目标障碍物的目的。
四、小结
基于数字图像处理的障碍物的识别需要在图像处理环节对待识别的图像进行较好的处理,首先进行对图像灰度化和去噪处理,然后锐化了图像中目标的边缘之后进行图像的背景差分,将图像中的感兴趣区域和非感兴趣区域区别开,之后对目标图像进行膨胀处理、最小外接矩形计算,最后定位识别。对静态图像的处理和识别较视频图像简单,特别是最小外接矩形的计算是定位和识别的关键。
参考文献
[1] 王耀南,李树涛,毛建旭.计算机图像处理与识别技术[M].北京:高等教育出版社,2001年.77.
[2] 李弼程,彭天强,彭波.智能图像处理技术[M].北京:电子工业出版社,2004年.150.
[3] 朱虹.数字图像处理基础[M].北京:科学出版社,2005年.154.
[4]罗海霞,刘斌,龙永红,谭雪利.同态滤波在光照补偿中的作用[J].株洲:湖南工业大学,2008年.
[5]刘永福,潘保昌,郑胜林,谭建斌.基于混合高斯模型的目标差分自适应背景模型[J].广州:广州工业大学,2012年.
[6]魏晓慧,李良福,钱钧.基于混合高斯模型的运动目标检测方法研究[J].惠州:惠州学院电子科学系;西安:西安应用光学研究所,2010年.
[7] 林玉池,崔彦平,黄银国.复杂背景下边缘提取与目标识别方法研究[J].天津:天津大学精密测试技术及仪器国家重点实验室;石家庄:河北科技大学机械电子工程学院,2006年.
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
[8] 卢蓉,范勇,陈念年,王俊波.一种提取目标图像最小外接矩形的快速算法[J].绵阳:西南科技大学计算机科学与技术学院,国防科技学院,2010年.
附录一(程序代码)
clc
clear all;
close all;
image_original=imread('Img40.bmp');
image_gray=rgb2gray(image_original);
subplot(2,2,1);
imshow(image_gray)
title('原图像之一')
image_background=imread('背景图像.bmp');
subplot(2,2,2);
imshow(image_background)
title('背景图像')
M=double(I);
J=M;
for i=1:H-1
for j=1:W-1
J(i,j)=abs(M(i,j)-M(i+1,j+1))+abs(M(i+1,j)-M(i,j+1));
figure;
for i=1:m-1
for j=1:n-1
robertsNum = abs(f(i,j)-f(i+1,j+1)) + abs(f(i+1,j)-f(i,j+1));
if(robertsNum > threshold)
f2(i,j)=255;
else
f2(i,j)=0;
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
figure;
Dk=imsubtract(image_gray,image_background);
image_bw=im2bw(Dk,0.2);
subplot(2,2,3);
imshow(image_bw)
Image_BW_medfilt= medfilt2(image_bw,[3 3]);
figure;
imshow(Image_BW_medfilt)
se=strel('disk',10);
image=imdilate(Image_BW_medfilt,se); %对该图像进行膨胀。
figure;
imshow(image)
[image_bwlabel,num]=bwlabel(image,8); %对目标区域进行标记
D=regionprops(image_bwlabel,'BoundingBox') %利用该函数求的最小外接矩阵 figure;
imshow(image_original)
for i=1:num
hold on
rectangle('position',D(i).BoundingBox,'EdgeColor','r','LineWidth',7); %画出最小外界矩阵
end
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
附录二(程序运行结果)
识别结果
1背景图像
○
2待识别图像
○
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理
识别结果
基于对称性特征的障碍物检测,基于数字图像处理的障碍物识别,matlab,数字图像处理