您的当前位置:首页正文

智能交通系统车辆识别

2022-09-13 来源:易榕旅网


第一章绪论

1.1课题研究的背景

交通流量检测系统作为智能交通系统(ITS)的重要组成部分,在ITS中发挥着重要的作用。而基于计算机视觉的交通流量检测系统又是交通流量检测系统中的研究重点。它是通过对实时交通序列图像分析得到所需的流量信息。为了更好的了解计算机视觉的交通流量检测系统的意义和发展趋势,我们应该对该技术的使用背景进行了解。

1.1.1 lTS(InteII igent Transportation System)简介

随着世界经济与技术的发展,交通运输已经成为经济生活的重要方面,并对保证社会经济体系的正常运转发挥着越来越大的作用。然而,由于我国经济的快速发展以及机动车持有量的激增和其它运输工具的快速增长,使现有基础设施所能提供的交通供给能力与我国现实和潜在的巨大交通需求相比仍然严重短缺,交通拥挤仍然很严重,运输效率较低,城市交通堵塞和大气污染加剧,严重影响了我国城市经济的发展和人民的生活。因此,在继续加快交通基础设施建设的同时,充分发挥现有基础设施的潜力,提高运输效率,保障交通安全,缓解交通拥挤,提高服务质量,减少环境污染将是我国交通领域今后面临的基本任务。

智能运输系统(ITS)顺应经济全球化、信息化的趋势,对于提高交通运输效率和效益,

1

保证安全,促进可持续发展具有十分显著的作用,已经引起世界许多国家的广泛重视。对解决我国交通运输领域所面临的问题,适应新形势的要求,提高交通基础设施建设水平,促进交通运输产业及带动相关产业的发展具有重要意义,我国政府已提出将ITS作为中国未来交通运输领域发展的一个重要方向,也是推进国民经济信息化的一项重要任务。近年来,我国在ITS方面开展了大量的研究与应用工作,为我国ITS的发展奠定了一定基础。

目前我国ITS核心技术的研究主要集中在计算机视觉技术、交通仿真技术、四川大学硕士学位论文智能交通系统中的汽车流量检测研究GPS/GIS定位导航技术、交通流等理论方面。其中计算机视觉技术又是研究的热点。

基于视频的交通流量采集系统可以分为两类:一类是没有采用计算机视觉的系统,它本身不能识别车辆,仅仅检测指定区域内运动着的象素群,而并不理解它代表现实世界中的什么物体。其代表有TRIP交通图像处理系统,基于虚拟采样点、检测线组、检测线圈的车流量检测系统。其中,Autoscope是一个较为成功的商业系统,具有实时检测交通参数的能力,是国际上交通信息采集中具有竞争力的视频检测系统之一。以上几种方法优点是处理速度快,检测的识别率较高。但是,他存在着的缺点更为严重。在采用检测线隧的系统中由于硬件必须埋于地下对交通道路的破坏是十分严重的,而且其使用寿命较短经济成本高。Autoscope系统同样存在着一些缺陷,在检测系统中没有考虑光照模型、道路模型对流量检测的影响。由于现代公路设计都采用多车道设计方式,附近车道的遮挡及阴影将影响当前车道的检测。交通信息采集的可靠性和准确性较低。第二类是基于模型的计算机视觉系统。基于视觉的运动目标区域检测及目标跟踪不仅具有很强的科学研究价值,还具

2

有很强的实用价值,其成本低使用周期长,检测的准确率高,国内外正对此做大量的研究工作。

1.2基于视频的运动目标检测与跟踪方法的概述及比较

运动目标检测与跟踪处于整个计算机视觉系统的最底层,是各种后续高级处理如目标分类、行为理解等的基础。运动目标检测系指从视频流中实时提取目标,一般是确定目标所在区域和颜色特征等。目标检测的结果是一种“静态”目标——前景目标,由一些静态特征所描述。运动目标跟踪则指对目标进行连续的跟踪以确定其运动轨迹。受跟踪的目标是一种“动态”目标——运动目标,与前景目标相比,描述它的特征中多了动态特征(如运动参数等)。这两方面是相辅相成,缺一不可的。

图像运动目标参数的检测分为两种方法:特征识别法和基于运动的识别法。特征识别包括两个主要步骤:一是从相继两幅或多幅不同时刻的图像中抽取特征(如角特征点、特征线等),建立对应;二是依据这些特征之间的对应来计算物体的结构(形状、位置等)和运动。其优点是可以获取三维运动信息,对目标运动速度无限制。主要难点在于确定和提取特征。基于运动的识别法与前者有很大不同,它把运动作为目标的首要特征,一般采用的方法有提取光流场,帧间差分,减背景等。

利用光流场来进行运动区域检测是一种常用的检测技术。光流场是二维速度瞬时场,它是景物中可见点的三维速度矢量在成像平面上的投影,表示了景物表面点在图像中位置

3

的瞬时变化。由于三维空间中目标运动会导致该位置的光强变化,利用这种强烈变化进行运动检测的技术称为光流场估计技术。

背景差分的区域检测是在摄像头固定的情况下提出的,这样视频图像序列中背景是固定的,利用背景差分就可以确定运动区域,实现方法简单。

第二章序列图像的预处理

得到实对视频场景的背景后,将当前帧与背景图像进行差分得到含有运动目标信息的图像。但是此时获得的图像中不仅含有运动目标还含有很多噪声以及不需要的运动目标如行人和自行车等,所以需要进行一定的处理才能对其进行后续操作。下面先讨论去除运动目标自身的阴影噪声。

2.1运动目标的阴影

阴影可划分为两类:自身阴影和投射阴影。自身阴影是由于物体本身没有被光源直接照射到而形成的;投射阴影是由于物体阻挡光线后在背景上形成。这里的阴影指的是距离物体足够远的光源(像太阳光)而导致的在物体周围产生的阴影即投射阴影,当后续的运动目标识别时,阴影通常会被看成是物体的一部分,从而直接影响了运动目标的特征提取导致跟踪的失败。

4

2.1.1阴影去除算法研究

由于本文研究的运动目标(车辆)基本上是规则的矩形图形,光照在这些目标周围产生的阴影一般集中在其上下左右四个方向。所以算法的关键是从这四个方向上去除阴影噪声。根据特定的场景以及不同的时间段阴影在各方向出现的概率,然后根据统计概率在不同的时间段采用不同的方向去除运动目标的阴影。一般来说,运动目标(车辆)的边缘比较多,在频域上来说就是高频信号比较多;而阴影的边缘比较少,在频域上低频信号比较多。所以,结合以上两个特性从边缘检测着手去除阴影。

我们知道,即使人们感觉很简单的景物中也包含着大量的细节,它们在图像中都表现为强度的非连续性,找出所有这些细节并不是获得景物的可行方法。另外图像强度的非连续性来源于不同的物理现象:表面反射和纹理不同边缘是指图像局部亮度变化最显著的部分。边缘主要存在于目标与目标、目标与背景、区域与区域之间,是图像分割、纹理特征提取等图像分析的重要基础。图像分析与理解的第一步常常是边缘检测。因此边缘检测十分重要,己经成为机器视觉的重要研究领域。

图像中的边缘通常与图像亮度或图像亮度的一阶导数的不连续性有关。图像亮度的不连续性可分为:阶跃不连续,即图像亮度在不连续处的两边象素灰度值有着显著的差异:线条不连续,即图像亮度突然从一个值变化到另外一个值,保持一个较小的行程后又返回到原来的值。

5

梯度:

边缘检测是检测图像局部显著变化的基本运算。梯度是函数变化的一种量度,而一幅图像可以看作是图像强度连续函数的取样点阵列,因此图像灰度值的显著变化可以通过梯度的离散逼近函数来检测。

fGxxGx,yGyfy (1)

对于数字图像,式中的导数可用差分来近似。

最简单的梯度近似表达式为:

Gxfi,j1fi,jGyfi,jfj1,j (2)

边缘检测算法:

现在有很多边缘检测算子,直flRoberts算子、Sobel算予、Prewitt算子、Kirsch算子等。由于本系统实时性要求高,所以必须选取计算简单、速度快、边缘定位精确的算子。基于以上几点考虑本文选取了Sobel算子。Sobel边缘检测算子是利用梯度与差分原理组成

6

的边缘检测器。其梯度幅度的数学描述为:

ed2xdy2 (3)

其中

dxfi1,j12fi,j1fi1,j1fi1,j12fi,j1fi1,j1dyfi1,j12fi1,jfi1,j1fi1,j12fi1,jfi1,j1用模板(卷积核)

来表示即:

1 0 -1dx2 0 -21 0 -1 (4)

-1 -2 -1dy0 0 02 11  (5)

当阴影出现在车辆的两侧采用垂直边缘检测算子,如果阴影出现在车辆的上下,使用水平边缘检测算子。但是该方法是将当前序列图进行边缘检测,然后再对背景图像进行边缘检测,最后将边缘检测后的图像差分得到去除阴影的灰度图像。

2.2灰度图像的二值化

7

2.2.1灰度图像的二值化概述

图像的二值化处理是将图像简单的分成背景和目标物体,最常用的方法就是选取一个阈值θ,用θ将图像分成两大部分,大于θ区域(通常为目标物体)和小于θ的区域(通常为背景),若输入图像为f(x,Y),输出图像为g(x,Y),则

1,fx,ygx,y0,fx,y (6)

如果物体灰度分布在几个不相邻的区间内,二值化可表示为:

1, 如果fx,ygx,y 其他 0, (7)

其中中是组成物体各灰度值的集合。这种方法称为阈值分割法,阈值分割的方法有很多,如迭代阈值分割的方法、最大类间方差法、最大熵阈值分割、循环分割等。在这里我选取了最大类间方差法。

2.2.2最大类间方差法

Otsu在1979年提出的最大类间方差法(有时也称之为Otsu方法)一直被认为是域值自动化选取方法的最优方法之一,它是一种自动的非参数无监督的域值选择法,它是基于类

8

问方差为最大的测度准则,最佳的域值在该测度函数取最大时得到的。该方法计算简单,自适应性强,在一定条件下不受图像对比度与亮度变化的影响,因而在一些实时图像处理系统中得到了广泛的应用。

下面是最大类间方差法的基本思想:

对于灰度级为0~255的MXN一幅图像,记f(x,y)为图像点(i,j)处的灰度值,则:

1MN第一步:计算图像的直方图统计结果,得到灰度值为k的频率PHS(k)为:

(8)

PHKfi,jk1

第二步:计算图像的灰度均值uT:

uTK•PHKkK0255 (9)

第三步:计算灰度类均值乒s和类直方图之和s:

sk•PHKKk0s (10)

SPHSkk0s (11)

第四步:计算类分离指标B:

9

Tss2Bs1s (12)

最后,求出B。达到最大的值S,则最佳阈值T=S。在实际场景中。每一帧的情况都不是为所能够预料的,所以一个固定的域值也将不能解决实际的问题。最大类间方差法能够自动选取域值,它是通过寻找一个最大方差值,来分割图像成两部分。因为方差是图像灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小,这也是最大类间方差法的真正含义。

2.2.3实验结果

10

图2.1 背景图

图2.2 目标图

11

图2.3 灰度图像

12

图2.4 二值图

2.3二值化图像的形态滤波

二值化图像后目标图像存在的一个较突出的问题就是某些地方具有不连续性,从而使本来属于同一个目标的物体被划分为不同的部分,而导致错误的分割。由于形态学中在邻域区域合并方面效果明显,因此采用形态结构元素对目标图像进行运算,而数学形态学的算法具有天然的并行实现的结构,所以这种运算可以用硬件并行快速完成。

形态学一般指生物学中研究动物和植物结构的一个分支。后来数学形态学被用来表示以形态为基础对图像进行分析的数学工具。它的基本思想是用具有一定形态的结构元素去度量和提取图像对象中的对应形态以达到对图像分析和识别的目的。

13

数学形态学是一种非线性滤波方法。Minkowski结构和差运算,即形态和差(膨胀和腐蚀)是数学形态学的基础。数学形态学可以用来解决抑制噪声、特征提取、边缘检测、图像分割、形态识别、纹理分析、图像恢复与重建、图像压缩等图像处理问题。数学形态学首先处理二值图像。数学形态学将二值图像看成是集合。并用结构元素来探查。结构元素是一个可以在图像上平移、且尺寸比图像小的集合。基本的数学形态学运算是将结构元素在图像范围内平移,同时进行交、并等基本的集合运算。

2.3.1形态算子

数学形态学的基本运算有4个:膨胀、腐蚀、开启和闭合。数学形态学中二值图像的形态变换是一种针对集合的处理过程,其形态算子的实质是表达物体或形状的集合与结构元素间的相互作用,结构元素的形状就决定了这种运算所提取的信号的形状信息。形态学图像处理是在图像中移动一个结构元素,然后将结构元素与下面的二值图像进行交、并等集合运算。基本的形态运算是膨胀和腐蚀。在形态学中,结构元素是最重要和最基本的概念。结构元素在形态变换中的作用相当于信号处理中的“滤波窗口”。结构元素一般是指n×n的正方形,我们把方形中值为1的象素称为结构元素核。如下图的3×3的结构元素中,打黑点的就是核。

14

图2.5 结构元素核

结构元素可以有不同形状,可以是一个点,一对有向线段,一个小圆,一个正多边形等。如下图是最常见的结构元素。大点表示结构元素中的点,小点表示坐标刻度线。在通常的情况下,形态学图像处理以在图像中移动一个结构元素并进行一种类似于卷积操作的方式进行。结构元素可以具有任意的大小,也可以包含任意的0与1的组合。在图像的每个象素位置,结构元素核与二值图像之间进行一种特定的逻辑运算。逻辑运算的二进制结果存在输出图像中对应于该象素的位置上。产生的结果取决于结构元素的大小、内容以及逻辑运算性质。

15

图2.6 常见的结构元素

2.3.2图像的腐蚀与膨胀

假设一个二值图像函数为A(x,y),结构元素为B(x,y),定义腐蚀为:

EAB{x,y|BxyA} (13)

也就是说,由结构单元B对图像A腐蚀所产生的二值图像E是这样的点(x,y)的集合:如果将B的原点位移到点(x,y)而得到

Bxy,那么

Bxy将完全包含于A中。在计算机实现时,先

使原点(O,O)包含在结构元素B中,将B平移后放在图像函数A内某个位置上,使B上各点都与A中相应点重合。这时,B中原点所在的新位置便是腐蚀结果E中的一点。将B遍历全图

16

像中所有可能位置后,B的原点移动的轨迹便构成了腐蚀结果。膨胀的定义如下:

DAB{x,y|BxyA} (14)

也就是说,结构单元B对图像A膨胀产生的二值图像D是由这样的点(X,Y)组成的集合:如果B的原点位移到(X,Y),那么它与A的交集非空。在计算机实现时,令图像原点(0,O)和目标区域A中某点重合,将结构元素的原点也移到该点,然后检验结{哿元素B中各点(即结构元素的核)所在的当前位置,如果位于该位置属于A区域的点的灰度为0,则把它改为l;否则不变。把原点在区域B中遍历完,得到的结果便是膨胀结果。

2.3.3图像的开启和闭合

图像的开启和闭合运算是在腐蚀和膨胀两个基本运算的基础上提出来的。对I图像A及结构元素B,用AB表示A对B的开运算,用A•B表示A对B的闭运算,则它们的定义为:

ABABB (15)

A•BABB (16)

其中,AB可视为对腐蚀图像AB用膨胀来进行恢复。而A•B可看作是对膨胀图像

AB用腐蚀来进行恢复。不过这一恢复不是信息无损的,即它们通常不等于原始图像A。

在图像处理的过程中,可以利用开、闭运算来去除噪声,恢复图像。通过开运算可以消除

17

离散点和毛刺。也就是对二值图像进行平滑,通过闭运算将两个邻近的目标连接起来,便于下一步分割出完整的图像。本文使用了开运算来消除离散点和毛刺。

图2.7 形态滤波后的图像

图片横向填充

18

图2.8

图片纵向填充

图2.9

19

第三章运动目标的识别及其特征提取

3.1概述

通过图像的预处理,当前帧中的目标可能已经成为一个连成一体的区域。在人类的视觉上这些是很明显的目标区域,但是对于计算机来说,它不可能“看见”这些区域更无法知道这些区域的特征信息。所以我们用合理的数据结构来描述这些区域,让计算机知道这些区域中含有运动目标,并最终分割出运动目标。

这里首先要提到一个重要的概念一区域分割:区域分割是把图像分割成特征相同互相不重叠区域的处理方法。区域是象素的连通集,也就是与所讨论的象素相邻或接触象素的集台。所谓连通,是指在一个连通集中的任意两个象素之间。存在一条完全由这个集合的元素构成的连通路径。连通路径是一条可在相邻象素问移动的路径。根据象素的四邻域或八邻域点的数值,相应的连通路径有四连通和八连通。四连通依据与其相邻的上下左右四个象素确定连通;八连通则再加上对角相邻的四个点共八个象素点来确定连通。通常八连通的结果与人的感觉更接近。

本文所要进行区域分割的图像是已经经过二值化的图像。目前普遍使用的二值图像区域分割方法有区域生长、标签处理、线段编码三种。由于区域生长法的初始“生长点”不好选取而造成耗时比较大,而标签法计算量很大,因此本文选取了线段编码的方法对二值图像进行区域分割。本文在对运动目标进行分割的同时,并行进行着对目标区域的特征提

20

取。而此选择的特征是为后续的运动目标跟踪作为依据。运动目标的特征一般可以分为几何特征(形心、周长、面积等)、目标颜色、外形轮廓线等。由于选择不同的特征将影响跟踪算法的设计、性能及计算开销。综上所述本文的算法是在线段编码的基础上,在目标识别的过程中同时进行几何特征和颜色特征的提取。

3.2运动目标的识别

3.2.1线段编码方法

图3.1物体线段示意图

线段编码是用来存贮被抽取物体的一种逐行处理技术。该技术从相邻行间的相关性与连通性出发,给出一种基于行处理技术的几何参数扫描算法,其基本原理可由图3.1所示,

21

对于二值图像区域,程序从顶部开始逐行扫描线段,分析目标区域。在图中,标记为1一l的区域是第100行图像上由若干个连续象索形成的线段。同时假设l—l段是程序所遇到的第一个目标(编号为1的目标)的第一条线段。在对目标101行进行扫描时,程序遇到两端线段:1—2和2—1。由于此时很难断定这两条线段是否属于同一目标,因此程序暂时假定101行图像上的第二段为第二个目标。对于l一2段,由于它紧接在l一1段的下面,因此程序认为这两段都是标称为目标1的一部分。

同样的处理过程扫描到102行,但到103行时,图像仅仅发现一个区段1—4,并且它同时位于标号为目标l和目标2的下面,此时程序才发现到原来目标l和目标2实际上是同一个目标,因此将目标2合并到目标1上来,下面的扫描只对目标l进行编号。

进行到第105行时,程序又发现两个区段1—6和1—7,但由于它们都位于线段1—5的下面,显然属于目标1。扫描到106行时,在线段1—8和l一9下面没有发现任何线段,因此完成了目标l的分割。如此扫描其它的连通域,则可以快速完成整个图像场景目标的区域分割。

3.3运动目标特征的描述

通过线段编码从图像中分割出运动目标的同时,可以获得这些目标区域的几何特征以及颜色特征。本文选用的几何特征是目标面积、形心;颜色特征是各个目标的象素R、G、B分量,下面予以逐一描述。

22

在衡量目标区域大小时,目标区域面积参数S•可以作为一种度量尺度,对于区域

Rix,y,S•定义为该区域中象素数目,即

fx,yx,ySRix,yx,yRi (17)

式中f(x,y)为点(x,y)处灰度值,在区域Rix,y内,f(x,y)的值为255,或则为0。 目标形心参数Rix0,y0在目标跟踪技术中具有重要用途,形心参数与图像的矩有密切的关系,参数(

x0,y0)定义为:

x0M10Rix,y/M00Rix,yy0M01Rix,y/M00Rix,y (18)

其中矩Mpq定义为

MpqRix,yfx,yxx,ypyqx,yRi (19)

通过测试发现这种方法计算量比较大,耗时多不利于工程上实现。本系统检测的运动目标是具有规则外形的车辆,所以本文利用运动目标的最小外接矩的中心来近似形心。区域Rix,y的最小外接矩形坐标被定义为两个坐标点

23

xmin,ymin和xmax,ymax。其中xmin,ymin代表矩形的左上角坐标点, xmax,ymax代表矩形右下角坐标点,各个值的具体求解公式为:

xminminx,yx,yRix,yxx,yx,yRix,yyminminyx,yx,yRix,yxmaxminxyminx,yx,yRx,yimaxy

(20)

xmaxxminxc2yymaxyminc2形心的近似表达式为 (21)

通过线段编码分割出运动目标,记录该运动目标的各个点位置。然后在差

分前原图中找到运动目标对应点R、G、B的值。颜色特征可以为后续跟踪提供更多的匹配依据。

3.4运动目标识别及特征提取算法的实现

24

算法具体实现步骤:

第一步:从图像首行开始扫描,直到遇到该行中象素不为0的点。将此行中象素连续为255的段记下它的起点、终点的坐标以及该段所属区域的编号。假设初始时有n段,Area个区域(n=Area),同时n段中的第i段属于第i个区域,第i段所属区域编号是i。记下每个区域几何参数信息以及在当前帧的原图中取各象素点的R、G、B三色值。

第二步:对接下来的行继续扫描,假设这段统计出来m段。

第三步:如果新段中的第一段的纵坐标与旧段中的第一段纵坐标相减大于l,则新段是新区域中的段。第i(i=1、2......m)个新段属于区域Area+i,第i个新段的所属区域的编号=Area+i,区域数变为Area=Area+m,更新当前区域的几何参数及颜色信息。跳转到第六步。

第四步:对m个新段中的第i(i=1、2......m)段与n个旧段分别比较。只要第i个新段与第j个旧段属于同一区域。将第i个新段区域号赋值为第j个旧段的区域号,并把第i个新段合并到第j个旧段的区域中去。

第五步:如果第i个新段与13个旧段都不属于同一区域。则新段的区域号变为Area+1:同时区域编号变为Area+l。并把此段放在Area+1的区域中。

25

第六步:如果全部行都扫完,结束统计区域个数及每个区域的几何参数和颜色信息,否则跳转到第二步。

第四章总结

本文介绍了一种利用计算机视觉来检测智能交通系统中车辆流量参数的技术,通过背景与当前帧的图像的差分,获得运动车辆的流量信息。

然而,利用视频来对运动目标进行分析毕竟还是一个比较新的领域,运用视觉处理技术进行交通路况参数的检测也是近年的事情,所以基于视频图像处理技术的的智能交通检测系统仍然面临诸多图像处理技术的难点,到目前为止,基于视频的交通流量检测系统在国内还没有系统的产业化,基本上都是处于实验阶段,这也正说明了其处理的难度。但是,我们必须要看到这种技术发展前景是广阔的同时我们还有许多工作要做。

程序:

i=imread('1111.png');

j=imread('2222.png');

i1=rgb2gray(i);

26

j1=rgb2gray(j);

i2=medfilt2(i1,[2,2]);%二维中值滤波

j2=medfilt2(j1,[2,2]);

z=imsubtract(i2,j2);

figure,imshow(z);

zmax=max(max(z));%一直到tk都是寻找阈值,迭代阈值分割的方法.zmin=min(min(z));

tk=(zmax+zmin)/2;

bcal=1;

zsize=size(z);

while(bcal)

27

ifore=0;

iback=0;

isum=0;

backsum=0;

for i=1:zsize(1)

for j=1:zsize(2)

tmp=z(i,j);

if (tmp>=tk)

ifore=ifore+1;

isum=isum+double(tmp);

else

28

iback=iback+1;

backsum=backsum+double(tmp);

end

end

end

zo=isum/ifore;

zb=backsum/iback;

tktmp=uint8((zo+zb)/2);

if(tktmp==tk)

bcal=0;

else

29

tk=tktmp;

end

end

z1=im2bw(z,double(tk)/255);

figure,imshow(z1);

z2=medfilt2(z1,[7,7]);

z3=bwareaopen(z2,200);%删除小面积图形

figure,imshow(z3);

zsize=size(z3); %横向填充

for i=1:zsize(1)

n=0;

30

x=zeros(1,400);

y=1;

for j=1:zsize(2)

if(z3(i,j)==1)

x(1,y)=j;

y=y+1;

n=n+1;

liebiao=j;

end

end

if((n>=100)&&(liebiao-x(1,1)>150))

31

for m=x(1,1):liebiao

z3(i,m)=1;

end

end

end

figure,imshow(z3);

z4=medfilt2(z3,[5,5]);

zsize=size(z4); for j=1:zsize(2) n=0;

x=zeros(600,1); y=1;

for i=1:zsize(1) if(z4(i,j)==1)

%纵向填充 32

x(y,1)=i; y=y+1; n=n+1; hangbiao=i; end end

if((n>=10)&&(hangbiao-x(1,1)>50)) for m=x(1,1):hangbiao z4(m,j)=1; end end end

figure,imshow(z4); zsize=size(z4);

n=0;

for i=1:zsize(1)

for j=1:zsize(2)

33

if(z4(i,j)==1)

n=n+1;

end

end

end

if(1000disp([char(6),'两辆车']);

else

if(3500disp([char(6),'三辆车']);

else

34

if(6500disp([char(6),'四辆车']);

else

disp([char(6),'五辆车']);

end

end

end

35

因篇幅问题不能全部显示,请点此查看更多更全内容