当前位置:文档之家› 基于OpenCV和Halcon的交通冲突视频自动检测及数据处理

基于OpenCV和Halcon的交通冲突视频自动检测及数据处理

基于OpenCV和Halcon的交通冲突视频自动检测及数据处理
基于OpenCV和Halcon的交通冲突视频自动检测及数据处理

第38卷第2期2010年2月

同济大学学报(自然科学版)

JOURNAL OF TONGJ I UNIVERSI TY (NATURAL SCIENCE )Vol.38No.2 Feb.2010

文章编号:02532374X (2010)022*******DOI :10.3969/j.issn.02532374x.2010.02.015

收稿日期:2008-11-03

基金项目:“十一五”国家科技支撑计划资助项目(2007BA K35B03)

作者简介:王俊骅(1979—),男,讲师,工学博士,主要研究方向为道路安全、道路规划与设计.E 2mail :benwjh @https://www.doczj.com/doc/0014841841.html, 张兰芳(1972—),女,副教授,工学博士,主要研究方向为道路安全、道路规划与设计.E 2mail :zlf2276@https://www.doczj.com/doc/0014841841.html,

基于Op e n CV 和Halco n 的交通冲突视频

自动检测及数据处理

王俊骅1,张方方2,张兰芳1

(1.同济大学道路与交通工程教育部重点实验室,上海201408;2.上海市城市建设设计研究院,上海200125)

摘要:运用OpenCV 和Halcon 图形开发工具,以VC ++ 6.0为基础开发平台,采用背景消减法和基于区域特征的跟踪算法实现视频图像中车辆运动目标的提取与跟踪,并将数据信息实时保存至文件中.在视频数据信息中处理提取冲突车辆的运动轨迹、速度、加速度等微观交通参数,实现交通冲突微观参数采集.综合减速度、角速度、速度和距离等指标建立多参数交通冲突判断方法,根据车辆的轨迹、速度和加速度曲线对车辆的运行特征做出分析,初步实现简单交通条件下机动车交通冲突视频自动检测.

关键词:交通冲突;视频检测;背景减法;跟踪算法中图分类号:U 491 

文献标识码:A

Halcon a nd OpenCV 2B ased Tr aff ic A ut oma tic Conf licti ng

Detecti ng

Met hod

a nd

Da t a Tr a ns action

WANG J u n hua 1,ZHANG Fa ngf a ng 2,ZHANG La nf a ng 1

(1.Key Laboratory of Road and Traffic Engineering of the Minist ry of Education ,Tongji University ,Shanghai 201804,China ;2.Shanghai Urban Planning and Design Research Institute ,Shanghai 200125,China )

Abs t r act :Based on grap hic developing tools of Halcon and OpenCV on VC ++6.0platform ,background subt raction and region 2based t racking algorithms are used to realize picking up and t racing the moving vehicle target ,and the data are saved synchronously.Transacting the video data information ,the t rack ,velocity and the acceleration of conflicting vehicle are calculated respectively ,and multi parameter 2based t raffic conflict judging measure is setup.Thus the video 2based vehicle conflict automatically detecting system for simple t raffic environment is initially developed.

Key w or ds :t raffic conflict ;video 2detecting ;background subt raction ;t racing algorithm

交通冲突技术是一种非事故统计交通安全评价方法,可对交通运营系统的许多方面如地点安全度、安全改善措施的效果等进行快速评价,并可提高交通安全评价的信度和效度[1].目前,交通冲突技术被公认为是道路交通安全研究的重要方法之一[2-3].然而,交通冲突观测方式的好坏直接关系到交通冲突技术应用的成败.传统冲突观测法主要包括人工现场观测法和录像观测法.前者早期曾被西方国家广泛采用,对推动交通冲突技术的应用起到了一定的作用.后者近年用得较多,它在一定程度上克服了人工现场观测的不足,但未能从根本上解决数据精度、观测统计效率和实时性等问题.观测问题已成为交通冲突技术应用的主要瓶颈.随着视频处理技术在交通管理、道路安全、智能交通(ITS )的广泛应用,使通过视频自动检测获取车型种类、运动速度、加速度、运动轨迹、车头间距等微观交通冲突数据成为可能,并可成为推动交通冲突技术发展的有效工具.

1 交通冲突视频检测系统设计

本文利用图像处理技术开发基于视频的交通冲突检测系统(见图1).考虑到系统实时性要求和图像处理算法的运行时间、执行效率,及计算机软、硬件的配置,总的设计思路是先对视频图像进行逐帧处理,实现运动目标的提取与跟踪,并将数据信息按时间先后顺序实时保存至文件,再对文件数据进行批量处理,包括坐标转换、速度和加速度的提取,最后综合这些信息完成交通状态的分析和交通过程的重现.故运动目标的提取与跟踪是整个系统的基础,也

 第2期王俊骅,等:基于OpenCV 和Halcon 的交通冲突视频自动检测及数据处理

是系统成功与否的关键.车辆行为解释模块建立在目标提取和目标跟踪的基础之上,通过对获得的微观交通数据如运动轨迹、速度、加速度等进行处理和分析,确定运动目标的运动特性和冲突是否发生,并采用自然语言加以描述,得出相应的推论

.

图1 交通冲突视频检测系统构成

Fig.1 Fr a me of video 2based t r aff ic conf lict

det ecti ng s ys te m

目前专门针对图像处理的开发工具有多种,本文研究采用美国Intel 公司开发的OpenCV 和德国MV Tec 公司开发的Halcon ,这两套工具均以图像

为研究对象,集成最新的实用算法,开发并形成了成百上千的图像处理函数,用户只需了解其功能和用法即可调用,必要时这二者还可以相互结合使用.本文运动目标检测与跟踪均利用Halcon 提供的相关函数实现,高斯混合模型建立背景图像利用OpenCV 相关函数实现,开发平台为VC ++6.0.

2 运动目标的提取

2.1 混合高斯模型生成背景

在目标检测前,先应对视频图像进行预处理.主要是对输入的视频图像进行简单的时间或空间滤波,包括图像的平滑、增强、恢复等,目的在于抑制不需要的变形、噪声或者增强某些有利于后续处理的图像特征,改善图像质量,为后续目标识别与跟踪提供方便.在某些特殊情况下还需改变帧分辨率大小和帧率,或对多摄像机获得的同步视频录像进行图像融合等.平滑滤波就是一种典型的预处理方式,常用方法有邻域平均法、中值滤波法和高斯滤波法.

由于现实中的交通场景比较复杂,尤其是室外环境,经常有摇动的树、飘动的云等,完全静止的背景是根本不存在的.例如,在某帧中一个像素可能表示天空,但在另一帧中则可能表示树叶,而在其他帧中则又可能表示树枝.每一种状态下的像素亮度值或颜色值是不同的,所以可以考虑对这些多模态情形使用多个高斯模型来混合建模.混合高斯模型法是将每个像素按照多个高斯分布混合建模,以同时处理多种背景变化.该模型的参数可以自适应更新,不像非参数模型需要缓存视频.使用OpenCV 中的相关函数可以方便地实现这一功能:

bg _

model

=

cvCreate GaussianB GModel

(pBkIm 2g ,0);∥创建初始背景模型

p Frame =cvQueryFrame (pCapt ure )∥捕捉视

频帧

cvCvt Color (p Frame ,pBkImg ,CV _B GR2GRA 2Y );∥将彩色图像转化为灰度图像

kk =icvUp date GaussianB GModel (pBkImg ,bg_model );∥更新背景模型

cvCopy (bg _model ->background ,pBkImg ,0);∥分离出背景图像

cvCopy (bg_model ->foreground ,p Fr Img ,0);

∥分离出前景图像

cvShow Image

(“

Background Image ”,

pBkImg );∥显示背景图像

cvShow Image (“Foreground Image ”,p Fr Img );

∥显示前景图像

利用上述函数对浦东大道2巨野路丁字形交叉口交通视频图像进行背景建模,效果十分良好,如图2所示.与帧平均法相比,混合高斯模型可利用相对

较少的信息获得质量良好的背景.如图2和图3比较所示,当视频文件播放到第380帧时,由混合高斯模型获得的交叉口背景图像就已趋于稳定,而平均法却要播放到第1500帧左右才基本摆脱初始帧的影响.但混合高斯模型运算量大,在处理单帧图片时需要的时间更长,尤其当图像分辨率较高时这种方法的实时性难以满足要求.2.2 运动车辆前景提取

背景图像生成后,需对当前帧中的运动目标进行分割.由于Halcon 在图像分割与形态学处理方面的强大功能,可用其相关的图像处理函数.为提高处理速度,先用zoom_image_factor 对图像进行降低分

9

32

同济大学学报(自然科学版)第38卷 

辨率处理,再在缩小图像上用函数run_bg_esti估计背景和提取前景,此时的前景可能包含诸多噪声,可用select_shape、select_gray、union1、connection等函数进行噪声去除,并最终分割出前景目标

.

图2 第380帧时混合高斯模型生成的背景

Fi g.2

 B ac kgr ou nd built t h r ough com bi ned Ga uss m odel on f r a me380

图3 帧平均法第1573帧时两种方法生成的背景

Fig.3 B ac k gr ou nd built t h r ough f r a me aver a ge m odel on f r a me1573

原始视频帧图像如图4所示,利用高斯混合模

型对视频录像生成背景如图5所示,根据背景减法

的相关原理,生成前景图像如图6所示,但此时的前

景图像中包含大量的噪声,众多非运动目标区域由

于某种原因也被当作前景检测出来,如树叶扰动、

圾袋随风飘动等,因此需要予以滤除.通过对所有的

区域对象进行面积选择、灰度选择、形态学处理等,

得到结果如图7所示,将经过滤除后的区域在原视

频图像中用彩色线条标出,这样就提取出了当前帧

的运动目标,如图8所示.

3 运动车辆的跟踪

不同的图像跟踪算法利用不同的图像信息以及

先验知识,具体应用中可以把各自的优点结合起来

弥补不足.本文研究采用基于区域的跟踪方法.

3.1 运动预测

每帧图像中运动车辆的位置是不相同的.在目042

 第2期王俊骅,等:基于OpenCV 和Halcon 的交通冲突视频自动检测及数据处理

标跟踪过程中,可以先根据目标以前的运动轨迹来对运动目标在下一帧中的位置进行预测,然后以该预测位置为中心确定一个大小适当的搜索范围或称窗口,这样可以不必在整幅图像中搜索物体,而仅仅在预测位置附近的搜索窗口内就可搜索到目标,从而能够大大提高搜索精度、加快搜索速度.

由于摄像机拍摄的视频图像帧与帧之间的时间间隔极短(本文采用的视频图像帧率30帧?s -1),而车辆的运动轨迹为平滑曲线,运动速度即使发生变化也是连续的,不可能发生突变,因此可以认为在极短的时间间隔内物体的运动是匀速直线运动,这样可以极容易预测出物体在下一帧中的位置.设运动物体在前两帧图像中的位置坐标为(x 1,y 1),(x 2,y 2),预测的位置坐标为(x ,y ),根据匀速直线运动理论可得:

x =x 2+(x 2-x 1)y =y 2+(y 2-y 1)

(1)

设定搜索窗的半径大小为r ,(w x ,w y )为目标可能出现的位置坐标,从而可以得出搜索范围:

x -r ≤w x ≤x +r

y -r ≤w y ≤y +r

(2)

得到搜索范围之后,即可对重心位置位于该范围之内的连通区域进行对象匹配甄选.预测示意图如图9所示,方框内为搜索范围,(x ,y )为预测位置,(x 3,y 3)为实际位置.

图9 车辆运动预测示意图

Fi g.9 Vehicle m ovi ng p redicti

ng

3.2 对象匹配

由图9可看出,搜索窗口内的对象很可能不只一个,由此需进一步进行对象匹配.对象匹配是在确定搜索范围之后,对搜索范围内的众多对象按照一定的判断标准进行甄选,以找出最符合条件的对象作为最终跟踪的结果,保证正确运动轨迹的延续.

由于两帧之间的时间间隔极短,同一运动目标所对应的检测区域在形状、大小(面积)、距离间隔、运动方向上都具有一致性,因此可以利用这方面的信息构造相关的判断准则,最符合准则要求的即为所寻找的对象.

选取搜索窗口内的有效候选区域的重心至当前轨迹链终点的距离d 、候选区域的面积A ,轨迹链前进方向偏角α三个因素作为选择判断的尺度.以图10为例,P 1,P 2为某条轨迹链的最后两点,需搜索下一点.搜索窗口内有L 1,L 2,L 3,L 4四个候选对象,这四个连通区域中,其重心位置离P 2的距离d 越小,区域面积值与P 2所在区域的面积A 越接近,前进方向的偏角α越小,选中的可能性就越大.将这三个因素综合起来用统一的表达式来衡量,判别式为

F i =w 1?

A i -A 0

6n

i =1

A i -A 0+

w 2?

d i -d 06

n

i =1

d i -d 0

+w 3?

αi

6n

i =1

α

i

(3)

式中:A 0表示P 2对应区域的面积;A i 表示候选区域的面积;d 0表示P 1,P 2两点之间的距离;d i 表示候选区域的重心到P 2的距离;w 1,w 2,w 3分别为面积、距离和角度三因素的权重,本系统中取w 1=0.5,w 2=0.3,w 3=0.2.n 为候选区域的个数,n =4.图10中有四个候选区域,因此能够计算出4个F 值,其中使F 值最小的那个区域即为轨迹链在当前帧的跟踪结果.在必要的条件下可以对F 设定一个阈值λ,以进一步对跟踪结果过滤,倘若在某一轨迹链跟踪过程中每一个F 均大于λ,则认为该轨迹链在当前帧中找不到对应点,轨迹在此帧中发生断裂.

利用上述目标检测与跟踪方法对拍摄的浦东大道2巨野路交叉口视频图像进行试验,试验效果如图11所示,实验证明:在交通量不大的交叉口和路段运动目标检测和跟踪效果良好,尤其在车辆运动比较有规律的路段上.

图10 对象匹配示意图

Fig.10 Object m atc hi ng

3.3 数据信息的提取与实时保存每个运动目标的运动轨迹由车辆在每帧图像中

的位置坐标(图像坐标)串联而成.且轨迹链的长度

需达到一定的长度才能保存至文本文件中,否则被

1

42

同济大学学报(自然科学版)第38卷 

认为是噪声,直接从内存中被删除.有了这些组成轨

迹链的坐标,便可通过后续数据处理对车辆的运行

状态做出详尽的分析,如分析车辆的速度、加速度变

化特征等.另外,位置坐标反映的是空间信息,除空

间信息外,保存的信息中还须包含与空间位置相对

应的时间信息,便能明确车辆什么时间位于什么地

点,从而较为完整地获知车辆的时空信息,这样便能

对交叉口实际的交通运行状况加以实现.考虑到视

频文件中每一帧图片均对应着唯一的帧号,而帧号

的大小直接反映了车辆出现的先后次序,故可将该

帧号记录下来,用于查看车辆出现的时间.

图11 第1216帧车辆检测和车辆轨迹跟踪效果

Fig.11 Ve hicle detecti ng a nd t r aci ng on f r a me1216

4 交通冲突的判定

4.1 微观交通参数的提取

4.1.1 坐标提取

通过对视频图像运动目标的提取与跟踪,获得

了车辆在图像中的坐标.该坐标以图像坐标系为基

础,尚不能直接应用于计算相关交通参数,必须通过

相应的坐标转换,将二维图像坐标转换成基于交叉

口地面的二维地面坐标,这就需要一套坐标转换参

数.一般的摄像机标定涉及的是三维坐标系之间的

转换关系,求取的参数很多,分为内参数和外参数,

达十多个,其本身是一个很复杂的过程.但由于本系

统的标定是一个不在同一平面上的两个二维坐标系

之间的转换问题,可以采用齐次坐标转换[4]的思路

求解坐标转换矩阵,

省去了摄像机标定的繁琐过程.

x′y′=

a b

c d

x

y

+

e

f

1+(u v)

x

y

(4)

式中,a,b,c,d,e,f,u,v即为坐标转换参数,给定若干已知(x,y)和(x′,y′)两套坐标的控制点便可通过式(4)反算出这些参数.根据这一思路可以直接采用Halcon中的函数vector_to_p roj_hom_mat2d计算坐标转换参数,因此其过程大大简化.由于未知数个数为8个,选取4个基准点即能建立8个方程,每个基准点均具有二维地面坐标与对应的二维图像坐标,代入该函数便可计算出一个

3×3的坐标转换矩阵.求解出坐标转换参数后,可由Halcon提供的函数draw_point获取图像上任意点的图像坐标,再由函数

p rojective_t rans_point_2d将其转换为地面坐标.坐标标定和转换界面如图12和图13所示.

图12 图像标定界面

Fig.12 De ma rcati ng t he gr ap h

图13 坐标转换界面

Fig.13 Conver ti ng t he coor di na te

4.1.2 坐标数据的平滑处理

由于受检测方法的限制,逐帧提取车辆位置坐标时会不可避免存在随机误差,这一方面导致系统提取的轨迹会在真实轨迹附近随机摆动,另一方面也会使后续的速度估算值系统性地大于真实值,因此在原始图像坐标数据转换成地面坐标之后需做进一步的平滑处理[5].本文采用均值滤波法对坐标数据进行平滑处理,即用某点前后若干点坐标分量的平均值来代替其原有的坐标对应分量,以此重新生成一条新的更接近真实轨迹的轨迹链.求取平均值的点个数称之为带宽,设为n,带宽不同,算法的“松紧”程度不同,平滑后的曲线对细节的保留程度也不同.带宽越小,去除随机误差的能力也越小,保持细节特征的能力越强;带宽越大,去除随机误差的能力越强,但保持原有局部特征的能力也越弱[6-7].

4.2 微观交通参数的提取

4.2.1 同一帧图像中车辆间距的计算

地面坐标经过平滑修正之后,计算在同一帧图

242

 第2期王俊骅,等:基于OpenCV和Halcon的交通冲突视频自动检测及数据处理

像中出现的任意两辆车之间的实地距离如下:

d=(x i-x j)2+(y i-y j)2(5)式中:d为在同一帧图像中两辆车之间的实地距离; (x i,y i)为在某帧图像中第i辆车的地面坐标;(x j, y j)为在某帧图像中第j辆车的地面坐标.

4.2.2 速度值和加(减)速度的计算

同一运动目标在相邻两帧之间移动的距离亦可通过式(5)计算出来,而两帧之间的时间间隔又为已知,因此可以计算出车辆在这段时间之内的平均速度,由于时间间隔很小,可将该速度作为物体在这两帧图片中前一帧的瞬时速度.易知视频帧率的倒数即为两帧之间的时间间隔(单位为s),例如视频帧率为24帧?s-1,则帧间时间间隔为1/24s,帧率为30帧?s-1,则帧间间隔为1/30s.物体的实时运动速度值计算公式如下:

v t=(x t-x t+1)2+(y t-y t+1)2/Δt(6)式中:v t为第t帧时的运动目标的瞬时运动速度; (x t,y t)为第t帧时运动目标的地面坐标;(x t+1, y t+1)为第t+1帧时运动目标的地面坐标;Δt为视频文件相邻两帧之间的时间间隔[8-9].

各帧的速度值分别计算完毕后,也会向初始地面坐标那样表现得不够稳定,同样需进行平滑处理.具体处理办法为:选择合适的带宽n(n≥3),以待处理的点为中心选择附近n个速度值,去掉其中的一个最大值和一个最小值,然后对剩下的n-2个点取平均值,将该平均值作为当前帧的速度值[10-11].在计算出每帧的瞬时速度后,即可利用相邻两帧之间的时间间隔Δt进一步计算出运动目标每帧的加(减)速度.

4.3 冲突分析

要实现交通冲突的视频检测,必须先要制定出定量的冲突判别标准,以让计算机执行过程中有“法”可依.根据冲突严重程度的定义,即为放置相撞时车辆避险行为剧烈程度的大小[1],设车辆制动减速度为a,界定非交通冲突与交通冲突的临界值为a0,界定轻微冲突与严重冲突的临界值为a1;车辆行驶速度为v,可能导致冲突发生的车辆之间的距离为d,按照非完全制动停车方式测量的并与相应车速v 对应的临界距离设为d v.倘若驾驶员采用的避险行为明显表现为刹车,则具体判断标准如下:

当a≥a1时,若d≤d v,则判断为严重冲突;若d >d v,则判断为中等冲突;

当a0≤a≤a1时,若d≤d v,则判断为严重冲突;若d>d v,则判断为轻微冲突;

当a

5 实例分析

以浦东大道2巨野路交叉口交通视频图像作简单分析,如图14

所示.浦东大道为城市主干道,巨野路为支路,交叉口为两相位信号控制T字形交叉口,浦东大道直行相位1′40″,巨野路左转相位30″.

图14 交叉口交通实景

Fig.14 Pict u re of t he i nte rsection

交叉口某一时段出现如下交通场景,如图14所示,浦东大道上的直行车辆与对向掉头车辆在空间位置上不断接近,有可能产生碰撞,系统在某一时段内检测到相关车辆的行车轨迹如图15所示,直行车辆的速度和减速度变化如图16和图17所示.由图17中可知直行车辆在第175帧左右制动减速度明显增大,并略大于4m?s-2,已经超出驾驶员正常的主动防御性的制动减速度值范围,因此判断驾驶员采取了被动避让性的刹车行为.但驾驶员并未一直以

大于4m?s-2的减速度制动至停车,而是减速度又有所减小,回落2m?s-2左右,故又可看出驾驶员应

图15 系统检测行车轨迹

Fig.15 Ve hicles t r ac k detected by t he s ys te m

342

同济大学学报(自然科学版)第38卷 

对前方变化的反应时间较为充裕.此外,直行车辆与前方车辆的距离随时间越来越小,如图18所示,在驾驶员制动减速度大于4m ?s -2的瞬间车速大概为7m ?s -1,车辆间距始终在10m 以上,远远大于临

界距离,因此可以最终判断该直行车辆经过交叉口

的过程中发生了轻微交通冲突

.

图16 速度变化曲线

Fig.16 Speed c u r ve

图17 速度变化曲线

Fig.

17 Acceler a tion c u r ve

图18 直行车与掉头车之间的距离变化

Fig.18 Dis t a nce cha ngi ng of t he conf licti ng vehicle

6 展望

本文研究虽然初步实现了交通冲突视频自动监测,系统真正的成熟应用还需解决一系列误差问题.系统误差与其采用的方法直接相关,由于本系统目标检测采用的是背景减法,目标跟踪采用的是基于区域的跟踪方法,数据处理过程噪声的剔除采用的是均值滤波法,因此总的说来,系统存在的误差可以分为如下几大类:目标提取误差、车辆跟踪误差、单相机投影误差和数据处理误差.这些误差影响了系统性能的稳定性和可靠性,但这不能否定基于视频处理的交通冲突检测技术的可行性,恰恰相反正是要强调这种技术的可能性.目前很多从事计算机视觉和图像处理的研究人员已经在探索上述问题的解

决方案,取得了很多研究成果,例如为了消除阴影的影响,运动目标检测算法开始考虑目标颜色特征;为

了克服车辆相互遮挡的影响,采用区域检测与特征检测相结合的方法.虽然算法还不是特别成熟,鲁棒性和实时性还有所欠缺,但至少提出了一种解决问题的思路,这种思路值得进一步深入探索,视频检测方法在交通冲突研究领域中的应用潜力巨大.参考文献:

[1] 刘小明,段海林.平面交叉口交通冲突技术标准化研究[J ].公

路交通科技,1997,14(3):43.

L IU Xiaoming ,DUAN Hailin.The research on traffic conflict

technique standard in t he intersection[J ].Journal of Highway and Transportation ,1997,14(3):43.

[2] 张苏.中国交通冲突技术[M ].成都:西南交通大学出版

社,1998.

ZHAN G Su.China t raffic conflict technique [M ].Chengdu :Sout hwest Communication University Press ,1998.

[3] C.海顿.交通冲突技术[M ].张苏译.成都:西南交通大学出版

社,1994.

Hidden C.T raffic conflict technique [M ].T ranslated by ZHAN G Su.Chengdu :S outhwest Jiaotong University Press ,1994.

[4] 郑南宁.计算机视觉与模式识别[M ].北京:国防工业出版

社,1998.

ZH EN G https://www.doczj.com/doc/0014841841.html,puter vision and model recognition [M ].Beijing :National Defence Industry Pubisher ,1998.

[5] G loyer B ,Aghajan H K ,Siu K Y ,et al.Video 2based freeway

monitoring system using recursive vehicle tracking[C]∥SPIE Proceeding ,Image and Video Processing Ⅲ.Sydney :SPIE ,1995,(2421):173-176.

[6] Hiroyuki T ,Sina F ,Peyman M.Kernel.Regression for image

processing and reconstruction [C ]∥IEEE Transaction on

Image Processing.Washington :[s.n.],2007,16(2):158-160.

[7] Aliaksei L.Automated video analysis as a tool for analysing

road user behaviour [C ]∥ITS World Congress ,London :[s.n.],2006:193-195.

[8] 周伟,罗石贵.路段交通冲突的调查技术[J ].长安大学学报:

自然科学版,2003,23(1):71.

ZHOU Wei ,L UO Shigui.Survey way of road 2traffic 2conflict technique[J ].Journal of Chang ’an University :Natural Science Edition ,2003,23(1):71.

[9] Hoong 2Chor C ,Ser 2Tong Q.Measurement of traffic conflict s

[J ].Safety Science ,2001,26(3):169.

[10] 史忠科,曹力.交通图像检测与分析[M ].北京:科学出版

社,2007.

SHI Zhongke ,CAO Li.Traffic picture inspect and analysis [M ].Beijing :Science Press ,2007.

[11] 郭力伟.道路交通数字图像技术应用研究[D ].上海:同济大学

交通运输工程学院,2007.

GUO Liwei.Application of

road t raffic digital picture

technique [D ].Shanghai :Tongji University.College of Transportation Engineering ,2007.

4

42

Halcon表面划伤检测实例

Halcon表面划伤检测实例 *关闭活动图形窗口 dev_close_window () * 在程序执行中指定输出行为为off。 dev_update_window ('off') * **** * step: acquire image 步骤:获取图像 * ****读入文件名为'surface_scratch' 的图像到Image read_image (Image, 'surface_scratch') get_image_size (Image, Width, Height) *打开一个和Image宽高比一致的图像窗口 dev_open_window_fit_image (Image, 0, 0, Width, Width, WindowID) *设置窗口字体大小为12,字体类型为Courier,粗体不倾斜字体。 set_display_font (WindowID, 12, 'Courier', 'true', 'false') *设置填充模式为'margin' dev_set_draw ('margin') *定义输出轮廓线宽为4

dev_set_line_width (4) *显示Image到窗口 dev_display (Image) *WindowID窗口使用黑色字体在一个方框内显示按"F5"继续运行字体,并注册F5消息处理disp_continue_message (WindowID, 'black', 'true') stop () * **** * step: segment image 步骤:图像分割 * **** * -> using a local threshold 使用局部阈值 * 对Image进行7*7均值滤波 mean_image (Image, ImageMean, 7, 7) ********************************************************************* *得到的图像为: * * * *用均值滤波图像作为二值化阈值图像,返回小于灰度值小于该点阈值-5的图像。 dyn_threshold (Image, ImageMean, DarkPixels, 5, 'dark') *************************************** ****得到的区域为:

halcon学习笔记——实例篇 长度和角度测量+

halcon学习笔记——实例篇长度和角度测量实例二:长度和角度测量 素材图片: halcon代码: 1: *读取并截取图片 2: dev_close_window() 3: read_image (Image, 'D:/MyFile/halcon/长度和角度测量/图.png') 4: crop_rectangle1 (Image, ImagePart, 75, 0, 400, 400) 5: get_image_size (ImagePart, Width, Height) 6: dev_open_window (0, 0, Width, Height, 'black', WindowHandle) 7: dev_display (ImagePart) 8: 9: *获取图形的边界 10: threshold (ImagePart, Regions, 0, 112) 11: 12: *分离三角形和圆形

13: connection(Regions,ConnectedRegions) 14: sort_region(ConnectedRegions,SortedRegions,'upper_left','true','column') 15: select_obj(SortedRegions,Circle,1) 16: select_obj(SortedRegions,Triangle,2) 17: 18: *获取三角形各边的信息 19: skeleton(Triangle,TriangleSkeleton) 20: gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,'filter') 21: segment_contours_xld(TriangleContours,ContoursSplit,'lines_circles', 5, 4, 2) 22:select_contours_xld(ContoursSplit,SelectedContours, 'contour_length',100, 999, -0.5, 0.5) 23: fit_line_contour_xld (SelectedContours, 'tukey', -1, 10, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist) 24: 25: *计算三角形角度 26:angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], Angle1) 27:angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle2) 28:angle_ll (RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle3) 29: Angle1:=abs(deg(Angle1)) 30: Angle2:=abs(deg(Angle2)) 31: Angle3:=abs(deg(Angle3)) 32: 33: *获取圆的信息 34: area_center(Circle,AreaCircle, RowCircle, ColumnCircle) 35: 36: *计算圆心到三角形各边的距离 37: Distance := [] 38:for Index := 0 to 2 by 1 39:distance_pl (RowCircle, ColumnCircle, RowBegin[Index], ColBegin[Index], RowEnd[Index], ColEnd[Index], ThisDistance) 40: Distance := [Distance,ThisDistance] 41: endfor

数字图像处理角点检测方法研究毕业论文

数字图像角点特征检测方法研究

目录 引言 (3) 1 研究背景与发展 (6) 1.1研究背景 (6) 1.2研究现状和发展概述 (6) 1.3应用软件M ATLAB (7) 2 角点检测概念与原理 (9) 2.1角点的定义 (9) 2.2角点概念及特征 (9) 2.3角点检测意义 (9) 2.4角点检测原理 (10) 2.5角点检测技术的基本方法 (10) 2.5.1 基于模板的角点检测 (10) 2.5.2 基于边缘的角点检测 (11) 2.5.3 基于灰度变化的角点检测 (13) 3 角点算法概述 (14) 3.1角点检测的标准 (14) 3.2H ARRIS角点检测算子 (14) 3.2.1 Harris角点检测算子流程图 (19) 3.2.2 Harris角点检测算子的特点 (20) 3.2.3 Harris角点检测性质 (20) 3.2.4 Harris和Moravec算子角点检测实验结果 (21) 3.3一种改进的H ARRIS的算法 (23) 3.3.1试验结果 (24) 3.4S USAN角点检测算子 (25) 3.3.1 SUSAN角点检测一般步骤 (27) 3.3.2 Susan角点检测算子特点 (29) 3.3.3 Susan角点检测试验结果 (29) 4 其他算子简介 (33) 4.1小波变换算子 (33) 4.2F ORSTNER算子 (33) 4.3CSS角点检测算法 (35) 4.4ACSS角点检测算法 (36) 4.5各种角点检测算法的比较 (36) 结论 (39) 致谢 (41)

参考文献 (42) 附录1 HARRIS算法程序 (44) 附录2 MORA VEC算法程序 (46) 附录3 改进的HARRIS算法 (48) 附录4 SUSAN算法程序 (50)

Harris角点检测算法编程步骤及示例演示

Harris角点检测算法编程步骤及示例演示 也不说那么多废话了,要介绍啥背景意义之类的,角点检测,顾名思义,就是检测角点,最简单的就是两条线的交点了,还有比如下国际象棋的棋盘格子的交点之类的,反正就是检测这些点。 简单将Harris角点检测算法的思想说下,就是拿一个小窗在图像中移动,通过考察这个小窗口内图像灰度的平均变换值来确定角点。(1)如果窗口内区域图像的灰度值恒定,那么所有不同方向的偏移几乎不发生变化; (2)如果窗口跨越一条边,那么沿着这条边的偏移几乎不发生变化,但是与边垂直的偏移会发生很大的变化; (3)如果窗口包含一个孤立的点或者角点,那么所有不同方向的偏移会发生很大的变化。 下面给出具体数学推导: 设图像窗口平移量为(u,v),产生的灰度变化为E(u,v), 有E(u,v)=sum[w(x,y)[I(x+u,y+v)-I(x,y)]^2],其中w(x,y)为窗口函数, I(x+u,y+v)为平移后的灰度值,I(x,y)为平移前的灰度值。 有泰勒公式展开可得: I(x+u,y+v)=I(x,y)+Ix*u+Iy*v+O(u^2,v^2); Ix,Iy分别为偏微分,在图像中为图像的方向导数. 因此E(u,v)=sum[w(x,y) [Ix*u+Iy*v+O(u^2,v^2)]^2], 可以近似得到E(u,v)=sum[w(x,y) [Ix*u+Iy*v]^2],即 E(u,v)=[u,v][Ix^2,Ix*Iy;Ix*Iy,Iy^2][u,v]T

令M=[Ix^2,Ix*Iy;Ix*Iy,Iy^2],因此最后对角点的检测成了对矩阵M的特征值的分析了,令M其特征值为x1,x2; 当x1>>x2或者x2>>x1,则检测到的是边缘部分; 当x1,x2都很小,图像窗口在所有移动的方向上移动灰度级都无明显变化. 当X1,X2都很大时且相当,检测到的是角点。 编程时用x1,x2不方便,因此定义角点响应函数; R=det(M)-k(trace(M))^2; 其中det(M)为矩阵M的行列式,trace(M)为矩阵M的迹。 下面给出更具数学公式实际编程的步骤: 1.利用水平,竖直差分算子对图像的每个像素进行滤波以求得 Ix,Iy,进而求得M中的四个元素的值。 M=[Ix^2,Ix*Iy;Ix*Iy,Iy^2] 2.对M的四个元素进行高斯平滑滤波,为的是消除一些不必要 的孤立点和凸起,得到新的矩阵M。 3.接下来利用M计算对应每个像素的角点响应函数R,即: R=det(M)-k(trace(M))^2; 也可以使用改进的R: R=[Ix^2*Iy^2-(Ix*Iy)^2]/(Ix^2+Iy^2);里面没有随意给定的参数k,取值应当比第一个令人满意。 4.在矩阵R中,同时满足R(i,j)大于一定阈值threshold和R(i,j)

halcon+vb检测光学玻璃元件实例

halcon+vb检测光学玻璃元件实例发布于:2013-08-20 10:05 自然光下的玻璃元件实图 环型光源下的玻璃元件图 halcon 代码

open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'gray', -1, 'false', 'def ault', 'Microvision MV-1400UC Digital Camera', 0, -1, AcqHandle) *打开摄像头 grab_image_start (AcqHandle, -1) *开始铺货图像 grab_image_async (Image, AcqHandle, -1) *捕获第一帧图像 get_image_size (Image, Width, Height) *获得图像大小 dev_open_window (0, 0, Width/6, Height/6, 'black', WindowHandle) *打开适合大小的窗口,应为相机是1400万像素所以图想太大窗口被我缩小了。 while (true) *无限循环 try grab_image_async (Image, AcqHandle, -1) *捕获一帧图像 dev_display (Image) *显示图像 smooth_image(Image, ImageSmooth, 'deriche2', 0.5) *平滑图像 threshold (ImageSmooth, Regions,125, 255) *阈值处理 *这个表面有些灰尘呵呵不过可以当噪点过滤掉的 area_center (Regions, Area1, Row3, Column3) *获得区域中心点 gen_contour_region_xld(Regions, Contours, 'border_holes') *将阈值处理后获得的区域转换成xld smooth_contours_xld(Contours, SmoothedContours, 5) *平滑xld

角点检测方法总结

角点检测(Corner Detection) 角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域中。也称为特征点检测。角点通常被定义为两条边的交点,更严格的说,角点的局部邻域应该具有两个不同区域的不同方向的边界。而实际应用中,大多数所谓的角点检测方法检测的是拥有特定特征的图像点,而不仅仅是“角点”。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、某些梯度特征等。现有的角点检测算法并不是都十分的鲁棒。很多方法都要求有大量的训练集和冗余数据来防止或减少错误特征的出现。 角点检测方法的一个很重要的评价标准是其对多幅图像中相同或相似特征的检测能力,并且能够应对光照变化、图像旋转等图像变化。角点检测的方法有:Moravec角点检测算法,FAST角点检测算法,Harris角点检测法和shi_tomas角点检测法等。 1.1.1Moravec角点检测算法 Moravec角点检测算法Moravec角点检测算法是最早的角点检测算法之一。该算法将角点定义为具有低“自相关性”的点。算法会检测图像的每一个像素,将像素周边的一个邻域作为一个patch,并检测这个patch和周围其他patch的相关性。这种相关性通过两个patch间的平方差之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑图像区域内,周围的patch都会非常相似。如果像素在边缘上,则周围的patch在与边缘正交的方向上会有很大差异,在与边缘平行的方向上则较为相似。而如果像素是各个方向上都有变化的特征点,则周围所有的patch都不会很相似。Moravec会计算每个像素patch和周围patch的SSD 最小值作为强度值,取局部强度最大的点作为特征点。Moravec角点检测算法有几个很明显的缺陷:1,强度值的计算并不是各向同性的,只有离散的8个45 度角方向被考虑。因为patch的评议比较最多只有8个方向;2,由于窗口是方形并且二元的,因此相应函数会有噪声;3,对边缘的相应太简单,因为强度值尽取SSD的最小值;

moravec角点检测算法

MORA VEC算法提取角点特征 1.角点 图像灰度值在各个方向变化都比较大的点,即认为是角点。Moravec角点量是指在各个方向上灰度变化的最小值,当在某个方向上,灰度值的变化最小,并且这个最小值也大于某个设定的阈值,那么认为这个点就是一个角点。 2.MORA VEC算法介绍 Moravec角点检测算法的思想是:在图像中设计一个局部检测窗口,当该窗口沿各个方向作微小移动时,考查窗口的平均能量变化,当该能量变化值超过设定的阈值时,就将窗口的中心像素点提取为角点。 本实验的算法的步骤如下: (1) 对每一像素(c,r),计算以其为中心的m*m的影像窗口中0°、45°、90°、 135°四个方向相邻像素灰度差的平方和V1、V2、V3、V4。 其中,k为m/2的模。计算V1、V2、V3、V4的最小值作为该像素点的兴趣值。 (2)给定经验阈值T,将兴趣值大于阈值的点作为候选点。 (3)新建一个窗口,窗口大小可不同于计算兴趣值窗口的大小。选择候选点中 的极值点作为特征点,即在一定范围内,取兴趣值最大者为特征点。此过程也称为抑制局部非最大。 综上,Moravec算子是在四个主要方向上,选择具有最大—最小方差的点作为特征点。 3.实验过程 本实验采用5*5的窗口大小,设置了0°、45°、90°、135°四个方向的移动,设置经验阀值为4000,新窗口为8*8,进行实验。 实验代码如下:

img=imread('1.png');%读取图像 [m,n,d]=size(img); %获取数据大小 if (d==3) %转换为灰度图像 img=rgb2gray(img); end window=5; w=floor(window/2); %设置窗口大小 V=zeros(m,n); for i=(w+1):(m-w-1) for j=(w+1):(n-w-1) V1=0;V2=0;V3=0;V4=0; %设置初始值 for k=(-w):(w-1) %计算四个方向的值 V1=V1 + (double(img(i+k,j))-double(img(i+k+1,j))).^2; V2=V2 + (double(img(i+k,j+k))-double(img(i+k+1,j+k+1))).^2; V3=V3 + (double(img(i,j+k))-double(img(i,j+k+1))).^2; V4=V4 + (double(img(i+k,j-k))-double(img(i+k+1,j-k+1))).^2; V(i,j)=min([V1,V2,V3,V4]); end end end T=1000;%经验阀值 V(V

基于角点检测的图像处理方法

基于角点检测的图像处理方法研究 摘要:本文主要研究了图像的角点检测方法,在计算机视觉中,机器视觉和图像处理后总,特征提取都是一个重要的方向。而角点又是图像的一个重要局部特征,它决定了图像中目标的形状,因此在图像匹配,目标描述与识别及运动估计,目标跟踪等领域,角点提取都具有重要的意义。角点的信息含量很高,可以对图像处理提供足够的约束,减少运算量,极大地提高运算速度。角点检测问题是图像处理领域的一个基础问题,是低层次图像处理的一个重要方法。角点检测的目的是为了匹配,而匹配的效率取决于角点的数量。Harris角点检测原理是对于一副图像,角点于自相关函数的曲率特性有关,自相关函数描述了局部局部图像灰度的变化程度。在角点处,图像窗口的偏移将造成自相关函数(图像灰度的平均变化)的显著变化。harris算子是一种简单的点特征提取算子,这种算子受信号处理中自相关函数的启发,给出与自相关函数相联系的矩阵M。M阵的特征值是自相关函数的一个阶曲率,如果两个曲率值都高,那么久认为该点是特征点。 关键词:角点,角点检测,Harris角点

ABSTRACT This paper studies the image of the corner detection methods in computer vision, machine vision and image processing general, feature extraction is an important direction. The corner is an important local feature image, which determines the shape of the target image, so the image matching, object description and recognition and motion estimation, target tracking and other fields, corner detection are of great significance. Corner of the information content is high, image processing can provide sufficient constraints to reduce the amount of computation greatly improve the processing speed. Corner detection is a basic image processing problems, low-level image processing is an important way. Corner detection is designed to match the efficiency of the matching depends on the number of corners。Harris corner detection principle is that for an image, corner point on the curvature properties of the autocorrelation function is related to the local auto-correlation function describes the degree of local image intensity changes. In the corner point, the offset will result in the image window autocorrelation function (the average image intensity changes) change significantly. arris operator is a simple point feature extraction operator, this operator by the signal processing in the autocorrelation function of inspiration, given the autocorrelation function associated with the matrix M. Eigenvalues of matrix M is an order autocorrelation function of the curvature, if the two curvature values are high, for so long that the point is the feature points. Key word: Corner , Corner detection , Harris Corner

halcon角点检测实例

halcon角点检测实例 楼主# 更多发布于:2013-11-15 18:18 This program compares the result of different operators * which detect points of interest * dev_update_off () Dark := 100 Background := 175 Light := 250 Angle := rad(45) Size := 3 create_test_image (Image, Background, Light, Dark) dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, 512, 512, 'black', WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_set_color ('black') dev_set_line_width (3) * * Foerstner interest points detector points_foerstner (Image, 1, 2, 3, 200, 0.3, 'gauss', 'true', RowJunctions, ColJunctions, CoRRJunctions, CoRCJunctions, CoCCJunctions, RowArea, ColArea, CoRRArea, CoRCA rea, CoCCArea) gen_cross_contour_xld (CrossFoerstner, RowJunctions, ColJunctions, Size, Angle) dev_display (Image) dev_display (CrossFoerstner) disp_message (WindowHandle, 'Foerstner interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop () * * Harris interest points detector points_harris (Image, 0.7, 2, 0.04, 0, RowHarris, ColHarris) gen_cross_contour_xld (CrossHarris, RowHarris, ColHarris, Size, Angle) dev_display (Image) dev_display (CrossHarris) disp_message (WindowHandle, 'Harris interest points detector', 'window', 12, 12, 'bla ck', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop () *

SUSAN角点检测算子的MATLAB实现

SUSAN角点检测算子的MATLAB实现 []=uigetfile('*.jpg','选择JPG格式图片'); if ~ischar() return end str=[pathname ]; pic=imread(str); if length(size(pic))==3 img=rgb2gray(pic); end [M,N]=size(img); timg=zeros(M+6,N+6); timg(4:end-3,4:end-3)=img; %扩展图像边缘3个像素 img=timg; t=45; %阈值 USAN=[]; %用于存放USAN for i= 4:M+3 for j=4:N+3 tmp=img(i-3:i+3,j-3:j+3); cnt=0; %计数专用,统计圆形邻域内满足条件的像素点个数 for p=1:7 for q=1:7 if (p-4)^2+(q-4)^2<=12 %半径一般在3~4之间 if abs(img(i,j)-tmp(p,q))sq %局部非极大值抑制 loc=[loc;[j,i]];

Halcon学习(15)角点检测

Halcon学习(十五)角点检测 * This program compares the result of different operators * which detect points of interest * dev_update_off () Dark := 100 Background := 175 Light := 250 Angle := rad(45) Size := 3 create_test_image (Image, Background, Light, Dark) dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, 512, 512, 'black', WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_set_color ('black') dev_set_line_width (3) * * Foerstner interest points detector points_foerstner (Image, 1, 2, 3, 200, 0.3, 'gauss', 'true', RowJunctions, ColJunctions, CoRRJunctions, CoRCJunctions, CoCCJunctions, RowArea, ColArea, CoRRArea, CoRCArea, CoCCArea) gen_cross_contour_xld (CrossFoerstner, RowJunctions, ColJunctions, Size, Angle) dev_display (Image) dev_display (CrossFoerstner) disp_message (WindowHandle, 'Foerstner interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop () * * Harris interest points detector points_harris (Image, 0.7, 2, 0.04, 0, RowHarris, ColHarris) gen_cross_contour_xld (CrossHarris, RowHarris, ColHarris, Size, Angle) dev_display (Image) dev_display (CrossHarris) disp_message (WindowHandle, 'Harris interest points detector', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop () * * Harris binomial interest points detector points_harris_binomial (Image, 5, 15, 0.04, 1000, 'on', RowHarrisBinomial, ColHarrisBinomial) gen_cross_contour_xld (CrossHarrisBinom, RowHarrisBinomial, ColHarrisBinomial, Size, Angle) dev_display (Image)

相关主题
文本预览
相关文档 最新文档