图像处理毕业论文.doc

上传人:本田雅阁 文档编号:2508907 上传时间:2019-04-04 格式:DOC 页数:19 大小:179.52KB
返回 下载 相关 举报
图像处理毕业论文.doc_第1页
第1页 / 共19页
图像处理毕业论文.doc_第2页
第2页 / 共19页
图像处理毕业论文.doc_第3页
第3页 / 共19页
图像处理毕业论文.doc_第4页
第4页 / 共19页
图像处理毕业论文.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《图像处理毕业论文.doc》由会员分享,可在线阅读,更多相关《图像处理毕业论文.doc(19页珍藏版)》请在三一文库上搜索。

1、摘要:摘要:本文介绍了数字图像处理与模式识别在交通的应用领域及其重要意义, 详细阐述了利用数字图像处理及模式识别技术的原理和方法,并在此基础上研 究了交通检测系统的算法和模型,通过本文的研究,初步探索了数字图像处理 与模式识别在交通检测系统中的应用途径和方法,为以后进一步的实现基于数 字图像的交通检测系统的打下了基础 目目 录录 前言前言.1 1 交通检测系统概述交通检测系统概述2 1.1 交通检测系统常用方法.3 1.2 视频车辆检测系统.4 2 WINDOWS 位图和调色板位图和调色板5 2.1 位图和调色板的概念.6 2.2 BMP文件格式6 3 图象的平滑图象的平滑(去噪声去噪声)、锐

2、化、锐化.8 3.1 平滑.8 3.1.1 中值滤波10 3.2 锐化.11 4 图象的检测及模板匹配图象的检测及模板匹配11 4.1 投影法.11 4.2 差影法.11 4.3 模板匹配12 5 5 程序设计程序设计1 13 3 结论与展望结论与展望.17 参考文献参考文献.18 致谢致谢.18 数字图像处理和模式识别在交通检测中的应用数字图像处理和模式识别在交通检测中的应用 前言前言 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指 将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理 最早出现于 20 世纪 50 年代,当时的电

3、子计算机已经发展到一定水平,人们开 始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于 20 世纪 60 年代初期。早期的图像处理的目的是改善图像的质量,它以人为对 象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出 的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩 等。首次获得实际成功应用的是美国喷气推进实验室(JPL) 。他们对航天探测 器徘徊者 7 号在 1964 年发回的几千张月球照片使用了图像处理技术,如几何校 正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影 响,由计算机成功地绘制出月球表面地图,获得了巨大

4、的成功。随后又对探测 飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、 彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础, 也推动了数字图像处理这门学科的诞生。在以后的宇航空间技术,如对火星、 土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像 处理取得的另一个巨大成就是在医学上获得的成果。1972 年英国 EMI 公司工程 师 Housfield 发明了用于头颅诊断的 X 射线计算机断层摄影装置,也就是我们 通常所说的 CT(Computer Topography)。CT 的基本方法是根据人的头部截面 的投影,经计算机处理来重建截面

5、图像,称为图像重建。1975 年 EMI 公司又成 功研制出全身用的 CT 装置,获得了人体各个部位鲜明清晰的断层图像。1979 年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类做出了划时代的贡献。 与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性 成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、 公安司法、军事制导、文化艺术等,使图像处理成 为一门引人注目、前景远大的新型学科。 随着图像处理技术的深入发展, 从 70 年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展, 数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释

6、 图像,实现类似人 类视觉系统理解外部世界,这被称为图像理解或计算机视觉。 很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重 要的研究成果。其中代表性的成果是 70 年代末 MIT 的 Marr 提出的视觉计算理 论,这个理论成为计算机视觉领域其后十多年的主导思想。图像理解虽然在理 论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不 少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有 待人们进一步探索的新领域 1 1 高速公路常用的车流检测方法主要有以下几种高速公路常用的车流检测方法主要有以下几种 : 1 空气管道检测 空气管道检测是接触

7、式的检测方法,在高速公路主线的被检测点拉一条空心的塑料管 道并作固定,一端为封闭,另一端联接计数器,当车辆经过塑料管道时,车轮压到空气管 道,管内空气被挤压而触动计数进行计算车流量的方法。该方法的优点是:方便,简单, 流动性强,成本较低。缺点:塑料管道使用寿命短,更换周期频繁,当更换塑料管道时需 封闭车道,增加了人员不安全的因素和塞车的可能性。当长车经过时由于车轴的距离大, 有可能被计算成两辆车,造成数据的误差率大。此方法在早期的车流量检测较多见,现在 的高速公路车流检测已不用这种方法。 2 检测环检测 检测环检测车流量也属接触式检测方法,在高速公路建设期间应确定主线被检测的站 点,铺筑路面和

8、安装线圈检测棒同时进行。当车辆经过路面的检测棒时,车轮压到环形线 圈使电感发生变化而产生检测信号,从而进行计算数据的检测方法。该方法的优点:线圈 检测技术的发展已很成熟,国内外生产厂家也较多,价格相对合理,被高速公路广泛采用, 特别是城市道路公安交警用于抓拍违章车辆也常用这种方法。误差率相对空气管道检测减 少。缺点:更换检测棒时必须封闭车道,开挖路面,造成维护成本高和容易塞车,也给维 护人员带来不安全的因素,维护作业在路上进行,受天气因素影响较大,在路面大中修时 往往会挖断检测棒,给路面的重铺和大中修增加了困难,道路的扩建和改道也受牵制。目 前大多数高速公路是用这种检测方法。 3 视频检测 视

9、频检测车流量属非接触式的检测方法,也称为图片处理或人工视觉,是一种结合视 频图像和电脑化模式识别的技术,在路上安装摄像机,通过视频摄像机和计算机模仿人眼 的功能为实际应用提供工作平台,是目前高速公路车流检测较先进的技术,它通过软件在 显示器视频图像的车道上设置虚拟车道检测器,每个虚拟车辆检测器代表一个区域,当车 辆通过任何一个虚拟检测器时,就会产生一个检测信号,再经过软件数字化处理和计算得 到所需的交通数据,如车型、车流量、车速、车头距离、占有率、车辆排队长度等。该系 统的优点:由于是在显示器视频图像的车道设置虚拟检测器,因而在维护时无须封闭车道, 无须开挖路面,也不会因道路重铺或拓宽车道而影

10、响车流量的检测。检测点的变化只在监 视器的图像上设定虚拟检测器的位置就可完成,不因道路的维修而中断交通检测。缺点: 当大雾天气摄像机无法完全捕捉车辆信号时会影响数据的精确率,但这种天气很少见。 2 2 视频车辆检测系统视频车辆检测系统 : 1 视频车辆检测系统 1984 年,美国明尼苏达大学运输研究中心的帕诺斯麦克鲁波洛斯博士发明 AUTOSCOPE视频车辆检测系统,是用一台普通工业电视摄像机对多达 68 个车道的交 通流量进行同时监视和检测。从摄像机上人为设置的特定检测区域内得到的图像信号,经 过一台 286(或 386)微机的数字化和格式化处理,可以得到以下的交通数据:车辆存在、车 辆通过

11、、车速、车种、排队长度、流量、占有率、车间时距、拥挤程度、密度、交通录像 带的脱机分析。数据收集之齐全,可包括现在的各种环形线圈检测器的所有检测功能。 1991 年 9 月 5 日,在美国某市第 26 街的 350 英尺距离内的 4 个车道上,进行了两种系统 的对比试验,测验结果表明,在不同时间和不同气候条件下,视频检测系统与环形线圈检 测器的检测效果是非常接近的,完全满足检测精度的要求。 1992 年,明尼苏达的图像传感系统公司和 Econo1ite 控制产品公司联合推出 AUTOSCOPETM2003 型视频车辆检测系统,用于多车道、多方向的大范围交通车辆检测。 带 RGB 监视器的 AU

12、TOSCOPE2003 ,其大小为 19 in 宽、55 in 高、1025 in 深(0.48 m0.14 m0.26 m),可安装在交通柜中或控制器里,符合美国电气制造者协会(NEMA)的标 准,可在-3574 的环境温度下正常工作,CPU 为 Intel 486 sx 微机,具有 170 型控制器 接口。就 AUTOSCOPE 一 2003 视频车辆检测系统的典型配置而言,它由 14 个电视摄像 机,AUTOSCOPE2003 单元,管理计算机和 RGB 视频监视器组成。摄像机为普通工业用 黑白或彩色 CCD 芯片型,具有 300 线以上的清晰度,安装在室外防护罩内。该系统能够 同时接收

13、并处理 4 台摄像机送来的图像信息,可以检测至少 48 个区域。可用于高速公路、 桥梁、隧道等不同道路的检测。具有如下功能:可进行事故检测;可通过内部非易失的快 速擦写存储器(F1ash)或管理机的硬盘收集大量的交通参数以便进行实时的和脱机的交通分 析;用一台摄像机对 68 个车道同时监视;匝道的测量控制和网络的自适应控制;不同检 测方案的选择和比较等。欧、美、日己广泛推广和使用 AUTOSCOPE 一 2003 视频车辆检 测系统,密执安州奥克兰公路委员会实施的 FASTTRAC ATMSATIS 规划2,3是 AUTO SCO PE 规模最大和最复杂的应用实例。 目前已推出 AUTOSCO

14、PE2004 视频车辆检测系统。 2 结语 由于 AUTOSCOPE 视频车辆检测系统的使用,取代了传统的在道路埋设线圈检测器的 复杂施工,减少了工程费用,提高了检测精度和系统的可靠性,使原有的交通监视系统除 仍能完成现场监视外,赋予了新的功能,国外已经推广应用。随着我国经济的发展和交通 事业的进步,该系统在我国的交通控制和管理领域必将得到推广应用。 视频检测技术在高速公路的应用 2002-08-05 中国公路交通信息产业 广深珠高速公路有限公司 田育涛 车流量检测系统是高速公路交通监控系统的组成部分,用于检测高速公路主线车流辆、 车型、车速、占有率等交通数据,是控制高速公路的车流出入,确保道

15、路安全畅通的重要 手段,也为统计有关资料,为管理者决策提供有效的数字依据。近年来,随着计算机技术 的不断进步,车流量检测系统也飞速发展,用于车辆检测的方式也多种多样,但作为高速 公路管理者或业主,在选择车辆的检测方式时应从其性能、成本、使用寿命、日常维护、 发展方向和系统兼容等方面进行综合考虑,特别是新建的高速公路对以上指标更应认真对 比,慎重选择。在选择产品性能可靠、成本合理的前提下,应让高科技含量的产品能充分 发挥其作用。车流量检测系统一般由车辆检测部分、传输部分和数据处理部分组成。 1、辆检测部分:安装于高速公路主线的被检测点,用于实时记录各种交通数据,并转 换成适合传输用的信号。 2、

16、传输部分:由于高速公路的线路长,数据大,一般采用光纤传输。 3、数据处理部分:对检测部分记录的数据进行必要的处理,计算出有用的交通数据, 用曲线、表格和图形等形式提供给管理者。同时对数据进行备份和归档。根据多年来高速 公路的实际情况,在系统的运行中损坏最多的是车辆检测部分,维修也占最大的工作量, 而且在路上作业需要封道开挖路面,增加了人员不安全的因素和塞车的可能性。以下对车 辆检测部分常用的几种方法进行比较。 WindowsWindows 位图和调色板位图和调色板 2.1 位图和调色板的概念 我们知道,普通的显示器屏幕是由许许多多点构成的,我们称之为象素。显示时采用扫描 的方法:电子枪每次从左

17、到右扫描一行,为每个象素着色,然后从上到下这样扫描若干行, 就扫过了一屏。为了防止闪烁,每秒要重复上述过程几十次。例如我们常说的屏幕分辨率 为 640480,刷新频率为 70Hz,意思是说每行要扫描 640 个象素,一共有 480 行,每秒重 复扫描屏幕 70 次。 我们称这种显示器为位映象设备。所谓位映象,就是指一个二维的象素矩阵,而位图就是 采用位映象方法显示和存储的图象。 自然界中的所有颜色都可以由红、绿、蓝(R,G,B)组合而成。有的颜色含有红色成分多 一些,如深红;有的含有红色成分少一些,如浅红。针对含有红色成分的多少,可以分成 0 到 255 共 256 个等级,0 级表示不含红色

18、成分;255 级表示含有 100%的红色成分。同样, 绿色和蓝色也被分成 256 级。这种分级概念称为量化。 这样,根据红、绿、蓝各种不同的组合我们就能表示出 256256256,约 1600 万种颜色。 这么多颜色对于我们人眼来说已经足够丰富了。 表表 1.1 常见颜色的常见颜色的 RGB 组合值组合值 颜色RGB 红25500 蓝02550 绿00255 黄2552550 紫2550255 青0255255 白255255255 黑000 灰128128128 让我们来看看下面的例子。 有一个长宽各为 200 个象素,颜色数为 16 色的彩色图,每一个象素都用 R、G、B 三个分 量表示。

19、因为每个分量有 256 个级别,要用 8 位(bit),即一个字节(byte)来表示,所以每个 象素需要用 3 个字节。整个图象要用 2002003,约 120k 字节,可不是一个小数目呀!如 果我们用下面的方法,就能省的多。 因为是一个 16 色图,也就是说这幅图中最多只有 16 种颜色,我们可以用一个表:表中的 每一行记录一种颜色的 R、G、B 值。这样当我们表示一个象素的颜色时,只需要指出该 颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第 0 行为 255,0,0(红 色),那么当某个象素为红色时,只需要标明 0 即可。 让我们再来计算一下:16 种状态可以用 4 位(bi

20、t)表示,所以一个象素要用半个字节。整个 图象要用 2002000.5,约 20k 字节,再加上表占用的字节为 316=48 字节.整个占用的字 节数约为前面的 1/6,省很多吧? 这张 R、G、B 的表,就是我们常说的调色板(Palette),另一种叫法是颜色查找表 LUT(Look Up Table),似乎更确切一些。Windows 位图中便用到了调色板技术。其实不光 是 Windows 位图,许多图象文件格式如 pcx、tif、gif 等都用到了。所以很好地掌握调色板 的概念是十分有用的。 有一种图,它的颜色数高达 256256256 种,也就是说包含我们上述提到的 R、G、B 颜 色表

21、示方法中所有的颜色,这种图叫做真彩色图(true color)。真彩色图并不是说一幅图包含 了所有的颜色,而是说它具有显示所有颜色的能力,即最多可以包含所有的颜色。表示真 彩色图时,每个象素直接用 R、G、B 三个分量字节表示,而不采用调色板技术。原因很 明显:如果用调色板,表示一个象素也要用 24 位,这是因为每种颜色的索引要用 24 位(因 为总共有 224种颜色,即调色板有 224行),和直接用 R,G,B 三个分量表示用的字节数一 样,不但没有任何便宜,还要加上一个 2562562563 个字节的大调色板。所以真彩色图 直接用 R、G、B 三个分量表示,它又叫做 24 位色图。 2.2

22、 bmp 文件格式 bmp 文件大体上分成四个部分,如图 1.3 所示。 位图文件头 BITMAPFILEHEADER 位图信息头 BITMAPINFOHEADER 调色板 Palette 实际的位图数据 ImageDate 第一部分为位图文件头 BITMAPFILEHEADER,是一个结构,这个结构的长度是固定的, 为 14 个字节(WORD 为无符号 16 位整数,DWORD 为无符号 32 位整数)。第二部分为位 图信息头 BITMAPINFOHEADER,也是一个结构,这个结构的长度是固定的,为 40 个 字节(LONG 为 32 位整数)。第三部分为调色板 Palette,当然,这里

23、是对那些需要调色板的 位图文件而言的。有些位图,如真彩色图,前面已经讲过,是不需要调色板的, BITMAPINFOHEADER 后直接是位图数据。调色板实际上是一个数组,共有 biClrUsed 个 元素(如果该值为零,则有 2biBitCount个元素)。数组中每个元素的类型是一个 RGBQUAD 结 构,占 4 个字节。第四部分就是实际的图象数据了。对于用到调色板的位图,图象数据就 是该象素颜在调色板中的索引值。对于真彩色图,图象数据就是实际的 R、G、B 值。 图象的平滑锐化图象的平滑锐化 31 图象的平滑 在灰度连续变化的图象中,如果出现了与相邻象素的灰度相差很大的点,比如说一片暗区

24、中突然出现了一个亮点,人眼能很容易觉察到。就象看老电影时,由于胶片太旧,屏幕上 经常会出现一些亮斑。这种情况被认为是一种噪声。灰度突变在频域中代表了一种高频分 量,低通滤波器的作用就是滤掉高频分量,从而达到减少图象噪声的目的。 为了方便地叙述上面所说的“将原图中的每一点的灰度和它周围八个点的灰度相加,然后 除以 9,作为新图中对应点的灰度”这一操作,我们采用如下的表示方法: (3.1) 这种表示方法有点象矩阵,我们称其为模板(template)。中间的黑点表示中心元素,即,用 哪个元素做为处理后的元素。例如2. 1表示将自身的 2 倍加上右边的元素作为新值,而2 1.表示将自身加上左边元素的

25、2 倍作为新值。 通常,模板不允许移出边界,所以结果图象会比原图小,例如模板是 ,原图是 ,经过模板操作后的图象为 ;其中数字代表灰度, x 表示边界上无法进行模板操作的点,通常的做法是复制原图的灰度,不进行任何处理。 32 中值滤波 中值滤波也是一种典型的低通滤波器,它的目的是保护图象边缘的同时去除噪声。所谓中 值滤波,是指把以某点(x,y)为中心的小窗口内的所有象素的灰度按从大到小的顺序排列, 将中间值作为(x,y)处的灰度值(若窗口中有偶数个象素,则取两个中间值的平均)。中值滤 波是如何去除噪声的呢?举个例子就很容易明白了。 原图处理后的图 图中数字代表该处的灰度。可以看出原图中间的 6

26、 和周围的灰度相差很大,是一个噪声点。 经过 31 窗口(即水平 3 个象素取中间值)的中值滤波,得到右边那幅图,可以看出,噪声 点被去除了。 下面将中值滤波和上面介绍的两种平滑模板作个比较,看看中值滤波有什么特点。我们以 一维模板为例,只考虑水平方向,大小为 31(宽高)。Box 模板为 ,高斯 模板为 。 先考察第一幅图: 原图经 Box 模板处理后经 Gauss 模板处理后经中值滤波处理后 从原图中不难看出左边区域灰度值低,右边区域灰度值高,中间有一条明显的边界,这一类 图象称之为“step”(就象灰度上了个台阶)。应用平滑模板后,图象平滑了,但是也使边界模 糊了。应用中值滤波,就能很好

27、地保持原来的边界。所以说,中值滤波的特点是保护图象 边缘的同时去除噪声。 再看第二幅图: 原图经 Box 模板处理后经 Gauss 模板处理后经中值滤波处理后 不难看出,原图中有很多噪声点(灰度为正代表灰度值高的点,灰度为负代表灰度值低的点), 而且是杂乱无章,随机分布的。这也是一类很典型的图,称之为高斯噪声。经过 Box 平滑, 噪声的程度有所下降。Gauss 模板对付高斯噪声非常有效。而中值滤波对于高斯噪声则无 能为力。 最后看第三幅图: 原图经 Box 模板处理后经 Gauss 模板处理后经中值滤波处理后 从原图中不难看出,中间的灰度要比两边高许多。这也是一类很典型的图,称之为脉冲 (i

28、mpulse)。可见,中值滤波对脉冲噪声非常有效。 综合以上三类图,不难得出下面的结论:中值滤波容易去除孤立点,线的噪声同时保持图 象的边缘;它能很好的去除二值噪声,但对高斯噪声无能为力。要注意的是,当窗口内噪 声点的个数大于窗口宽度的一半时,中值滤波的效果不好。这是很显然的。 3.3 锐化 锐化(sharpening)和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称 为高通滤波(high pass filter)。锐化处理在增强图象边缘的同时增加了图象的噪声。 常用的锐化模板是拉普拉斯(Laplacian)模板(见(3.4)式),又是个数学家的名字,可见学好数 学,走遍天下都

29、不怕。 (3.4) 容易看出拉普拉斯模板的作法:先将自身与周围的 8 个象素相减,表示自身与周围象素的 差别;再将这个差别加上自身作为新象素的灰度。可见,如果一片暗区出现了一个亮点, 那么锐化处理的结果是这个亮点变得更亮,增加了图象的噪声。 因为图象中的边缘就是那些灰度发生跳变的区域,所以锐化模板在边缘检测中很有用。 图象检测与模板匹配图象检测与模板匹配 图象的分割与检测(识别)实际上是一项非常困难的工作。很难说清楚为什么图象应该分割 成这样而不是那样。人类的视觉系统是非常优越的,它不仅包含了双眼,还包括了大脑, 可以从很复杂的景物中分开并识别每个物体,甚至可以毫不费力地跟上每秒好几十帧变化

30、的图象。举两个例子来说明一下人类视觉系统的优越性。 图图 4.1 单词单词 THE图图 4 4.2 看不见的三角看不见的三角 图 4.1 是单词 THE,这一点很容易看出来,但仔细观察一下,就会发现,图中少了很多线 条。在我们人类看来很简单的一件事,让计算机来做就很困难了。 图 4.2 中尽管没有任何线条,但我们还是可以很容易的看出中间存在着一个白色三角形。 计算机却很难发现。 由于人类在观察图象时适用了大量的知识,所以没有任何一台计算机在分割和检测真实图 象时,能达到人类视觉系统的水平。正因为如此,对于大部分图象应用来说,自动分割与 检测还是一个将来时。目前只有少数的几个领域(如印刷体识别

31、OCR)自动识别达到了实用 的水平。 也许算是题外话,我们可以憧憬这样一种应用:基于内容的搜索。在一场足球比赛的录象 中,用户可以输入命令,由计算机自动搜索出所有射门的镜头并显示在屏幕上。目前,我 们能从一幅图象中获得的信息只是每个象素的颜色或灰度值,除此以外别无其它,完成上 述功能实在是太困难了。所以说解决图象分割和检测最根本的方法是在编码(成象)时就给 予考虑。这也正是 MPEG4 及未来的视频压缩编码标准的主要工作。 正因为有上述的困难,所以我们今天要介绍的只是一些最基本,最简单的算法 和思想,针对也只能是一些具体(而不是通用)的应用。算法共有三个:投影法、 差影法和模板匹配。 4.1

32、投影法 在介绍投影法之前,我先出一道题目,下面的这幅照片是著名的华盛顿纪念碑(我记得在 “阿甘正传”中曾经看到过它),怎样从图中自动检测到水平方向上纪念碑的位置。 仔细观察,不难发现,纪念碑上象素的灰度都差不多而且与众不同,如果我们选取合适的 阈值,做削波处理(这里选 175 到 220),将该图二值化,如图 8.3 所示: 图图 4 4.3 华盛顿纪念碑华盛顿纪念碑图图 4 4.4 削波处理,将图削波处理,将图 4 4.3 二值化二值化 由于纪念碑所在的那几列的白色点比起其他列多很多,如果把该图在垂直方向做投影,如 图 4.5 所示。 图图 4 4.5 图图 4 4.4 做垂直方向投影做垂直

33、方向投影 其中,黑色线条的高度代表了该列上白色点的个数。图中间的高峰部分就是我们要找的水 平方向上纪念碑所在的位置,这就是投影法。 可以看出投影法是一种很自然的想法,有点象灰度直方图。为了得到更好的效果,投影法 经常和阈值化一起使用。由于噪声点对投影有一定的影响,所以处理前最好先做一次平滑, 去除噪声。 以下是投影法的源程序,第二个参数是个 BOOL 变量,为真时表示在水平方向 上做投影,否则在垂直方向上做投影。要注意的是,我们针对的虽然是二值图, 但为了处理的方便,用的是 256 级灰度图,不过只用到了 0 和 255 两种灰度级。 4.2 差影法 差影法的原理非常简单:将前后两幅图象相减,

34、得到的差作为结果结果图象。图 4.6、图 4.7、图 4.8 能够说明差影法的原理。 图图 4 4.6 前景前景+背景背景图图 4 4.7 背景背景图图 4 4.8 图图 4 4.6、图、图 4 4.7 相减的结果相减的结果 图 4.6 是前景图(猫)加背景图(木星)。图 4.7 是背景图。图 4.6 减图 4.7 的结果如图 4.8 所示, 这样就得到了前景(不完全是前景,因为背景的灰度值并不为零,但至少可以得到前景的形 状)。 差影法是非常有用的,比如说可以用在监控系统中。在银行金库内,摄像头每隔一小段时 间,拍摄一幅图,与上一幅图做差影;如果差别超过了预先设置的阈值,说明有人,这时 就应

35、该拉响警报。 我们在介绍灰度窗口变换时,曾经提到了电影“阿甘正传”特技中应用了“蓝幕”技术, 其实也包含了差影法的原理。 以下是差影法的源程序。要注意的是,第一幅图的文件名为 c:test.bmp,第二 幅图的文件名是 c:backgnd.bmp。它们有着相同的灰度值和调色板。执行时, 这两个文件都已经准备好。我们针对的虽然是二值图,但为了处理的方便,用 的是 256 级灰度图,不过只用到了 0 和 255 两种灰度级。 4.3 模板匹配 利用模板匹配可以在一幅图象中找到已知的物体。比如抓拍到了一张射门的照片,要在该 照片中找到足球的位置。这时就可以采用模板匹配的方法。所谓模板匹配,其实想法很

36、简 单:拿已知的模板(在本例中为足球的图象),和原图象中同样大小的一块区域去对。 最开始时,模板的左上角点和图象的左上角点是重合的,拿模板和原图象中同样大小的一 块区域去对比,然后平移到下一个象素,仍然进行同样的操作,所有的位置都对完后, 差别最小的那块就是我们要找的物体。 我们用平方误差之和来衡量原图中的块和模板之间的差别。假设模板的大小为 mn(宽高); 图象的大小为 WidthHeight。模板中的某点坐标为(x0,y0),该点的灰度为 U(x0,y0);与之重 合的图象中的点坐标为(X0-x0,Y0-y0),该点的灰度为 V(X0-x0,Y0-y0)。则一次匹配的结果为: 全部图象都匹

37、配后,找到最小的即为结果。可以看到模板匹配的运算量是惊人的。一次匹 配都要做 mn 次减法,mn 次平方,mn-1 次加法,整个图象要匹配(Width-m+1) (Height-n+1)次。 程序设计程序设计 头文件: / bs.h : main header file for the BS application / #if !defined(AFX_BS_H_950CD04C_C557_4C35_B95E_20B9E57EADBA_INCLUDED_) #define AFX_BS_H_950CD04C_C557_4C35_B95E_20B9E57EADBA_INCLUDED_ #if _

38、MSC_VER 1000 #pragma once #endif / _MSC_VER 1000 #ifndef _AFXWIN_H_ #error include stdafx.h before including this file for PCH #endif #include “resource.h“ / main symbols / / CBsApp: / See bs.cpp for the implementation of this class / class CBsApp : public CWinApp public: CBsApp(); / Overrides / Cla

39、ssWizard generated virtual function overrides /AFX_VIRTUAL(CBsApp) public: virtual BOOL InitInstance(); /AFX_VIRTUAL / Implementation /AFX_MSG(CBsApp) afx_msg void OnAppAbout(); / NOTE - the ClassWizard will add and remove member functions here. / DO NOT EDIT what you see in these blocks of generate

40、d code ! /AFX_MSG DECLARE_MESSAGE_MAP() ; / /AFX_INSERT_LOCATION / Microsoft Visual C+ will insert additional declarations immediately before the previous line. #endif / !defined(AFX_BS_H_950CD04C_C557_4C35_B95E_20B9E57EADBA_INCLUDED_) 源文件: / bs.cpp : Defines the class behaviors for the application.

41、 / #include “stdafx.h“ #include “bs.h“ #include “MainFrm.h“ #include “bsDoc.h“ #include “bsView.h“ #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / CBsApp BEGIN_MESSAGE_MAP(CBsApp, CWinApp) /AFX_MSG_MAP(CBsApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) / NOT

42、E - the ClassWizard will add and remove mapping macros here. / DO NOT EDIT what you see in these blocks of generated code! /AFX_MSG_MAP / Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen) / Standard print setup command ON_CO

43、MMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup) END_MESSAGE_MAP() / / CBsApp construction CBsApp:CBsApp() / TODO: add construction code here, / Place all significant initialization in InitInstance / / The one and only CBsApp object CBsApp theApp; / / CBsApp initialization BOOL CBsApp:InitInstan

44、ce() AfxEnableControlContainer(); / Standard initialization / If you are not using these features and wish to reduce the size / of your final executable, you should remove from the following / the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls();/ Call this when us

45、ing MFC in a shared DLL #else Enable3dControlsStatic();/ Call this when linking to MFC statically #endif / Change the registry key under which our settings are stored. / TODO: You should modify this string to be something appropriate / such as the name of your company or organization. SetRegistryKey

46、(_T(“Local AppWizard-Generated Applications“); LoadStdProfileSettings(); / Load standard INI file options (including MRU) / Register the applications document templates. Document templates / serve as the connection between documents, frame windows and views. CSingleDocTemplate* pDocTemplate; pDocTem

47、plate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CBsDoc), RUNTIME_CLASS(CMainFrame), / main SDI frame window RUNTIME_CLASS(CBsView); AddDocTemplate(pDocTemplate); / Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); / Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo) return FALSE; / The one and only window has been initialized, so show and update it. m_pMainWnd-ShowWindow(SW_SHOW); m_p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1