datasheet
超过460,000+ 应用技术资源下载
pdf

基于FPGA的视频图像检测技术

  • 1星
  • 日期: 2014-03-05
  • 大小: 7.4MB
  • 所需积分:1分
  • 下载次数:2
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 基于FPGA的视频图像检测技术

在图像处理及检测系统中,实时性要求往往影响着系统处理速度的性能。本文在分析研究视频检测技术及方法的基础上,应用嵌入式系统设计和图像处理技术,以交通信息视频检测系统为研究背景,展开了基于FPGA视频图像检测技术的研究与应用,通过系统仿真验证了基于FPGA架构的图像并行处理和检测系统具有较高的实时处理能力,能够准确并稳定地检测出运动目标的信息。可见FPGA对提高视频检测及处理的实时性是一个较好的选择。 本文主要研究的内容有: 1.分析研究了视频图像检测技术,针对传统基于PC构架和DSP处理器的视频检测系统的弊端,并从可靠性、稳定性、实时性和开发成本等因素考虑,提出了以FPGA芯片作为中央处理器的嵌入式并行数据处理系统的设计方案。 2.应用模块化的硬件设计方法,构建了新一代嵌入式视频检测系统的硬件平台。该系统由异步FIFO模块、图像空间转换模块、SRAM帧存控制模块、图像预处理模块和图像检测模块等组成,较好地解决了图像采样存储、处理和传输的问题,并为以后系统功能的扩展奠定了良好的基础。 3.在深入研究了线性与非线性滤波几种图像处理算法,分析比较了各自的优缺点的基础上,本文提出一种适合于FPGA的快速图像中值滤波算法,并给出该算法的硬件实现结构图,应用VHDL硬件描述语言编程、实现,仿真结果表明,快速中值滤波算法的处理速度较传统算法提高了50%,更有效地降低了系统资源占用率和提高了系统运算速度,增强了检测系统的实时性能。 4.研究了基于视频的交通车流量检测算法,重点讨论背景差分法,图像二值化以及利用直方图分析方法确定二值化的阈值,并对图像进行了直方图均衡处理,提高图像检测精度。并结合嵌入式系统处理技术,在FPGA系统上研究设计了这些算法的硬件实现结构,用VHDL语言实现,并对各个模块及相应算法做出了功能仿真和性能分析。 5.系统仿真与验证是整个FPGA设计流程中最重要的步骤,针对现有仿真工具用手动设置输入波形工作量大等弊病,本文提出了一种VHDL测试基准(TestBench)方法解决系统输入源仿真问题,用TEXTIO程序包设计了MATLAB与FPGA仿真软件的接口,很好地解决了仿真测试中因测试向量庞大而难以手动输入的问题。并将系统的仿真结果数据在MATLAB上还原为图像,方便了系统测试结果的分析与调试。系统测试的结果表明,运动目标的检测基本符合要求,可以排除行走路人等移动物体(除车辆外)的噪声干扰,有效地检测出正确的目标。 本文主要研究了基于FPGA片上系统的图像处理及检测技术,针对FPGA技术的特点对某些算法提出了改进,并在MATLAB、QuartusⅡ和ModelSim软件开发平台上仿真实现,仿真结果达到预期目标。本文的研究对智能化交通监控系统的车流量检测做了有益探索,对其他场合的图像高速处理及检测也具有一定的参考价值。

东华大学 硕士学位论文 基于FPGA的视频图像检测技术的研究与应用 姓名:何江远 申请学位级别:硕士 专业:控制理论与控制工程 指导教师:唐明浩 20070101 基于FPGA的视频图像检测技术的研究与应用 基于FPGA的视频图像检测技术的研究与应用 摘要 在图像处理及检测系统中,实时性要求往往影响着系统处理速度的性能。本 文在分析研究视频检测技术及方法的基础上,应用嵌入式系统设计和图像处理技 术,以交通信息视频检测系统为研究背景,展开了基于FPGA视频图像检测技术 的研究与应用,通过系统仿真验证了基于FPGA架构的图像并行处理和检测系统 具有较高的实时处理能力,能够准确并稳定地检测出运动目标的信息。可见 FPGA对提高视频检测及处理的实时性是一个较好的选择。 本文主要研究的内容有: 1.分析研究了视频图像检测技术,针对传统基于PC构架和DSP处理器的 视频检测系统的弊端,并从可靠性、稳定性、实时性和开发成本等因素考虑,提 出了以FPGA芯片作为中央处理器的嵌入式并行数据处理系统的设计方案。 2.应用模块化的硬件设计方法,构建了新一代嵌入式视频检测系统的硬件 平台。该系统由异步FIFO模块、图像空间转换模块、SRAM帧存控制模块、图 像预处理模块和图像检测模块等组成,较好地解决了图像采样存储、处理和传输 的问题,并为以后系统功能的扩展奠定了良好的基础。 3.在深入研究了线性与非线性滤波几种图像处理算法,分析比较了各自的 优缺点的基础上,本文提出一种适合于FPGA的快速图像中值滤波算法,并给出 该算法的硬件实现结构图,应用VHDL硬件描述语言编程、实现,仿真结果表 明,快速中值滤波算法的处理速度较传统算法提高了50%,更有效地降低了系统 资源占用率和提高了系统运算速度,增强了检测系统的实时性能。 4.研究了基于视频的交通车流量检测算法,重点讨论背景差分法,图像二 值化以及利用直方图分析方法确定二值化的阈值,并对图像进行了直方图均衡处 理,提高图像检测精度。并结合嵌入式系统处理技术,在FPGA系统上研究设计 了这些算法的硬件实现结构,用VHDL语言实现,并对各个模块及相应算法做 出了功能仿真和性能分析。 基于FPGA的视频图像检测技术的研究与应用 5.系统仿真与验证是整个FPGA设计流程中最重要的步骤,针对现有仿真 工具用手动设置输入波形工作量大等弊病,本文提出了一种VHDL测试基准 (TestBench)方法解决系统输入源仿真问题,用TEXTIO程序包设计了MATLAB 与FPGA仿真软件的接口,很好地解决了仿真测试中因测试向量庞大而难以手动 输入的问题。并将系统的仿真结果数据在MATLAB上还原为图像,方便了系统 测试结果的分析与调试。系统测试的结果表明,运动目标的检测基本符合要求, 可以排除行走路人等移动物体(除车辆外)的噪声干扰,有效地检测出正确的目 标。 本文主要研究了基于FPGA片上系统的图像处理及检测技术,针对FPGA技 术的特点对某些算法提出了改进,并在MATLAB、QuartuslI和ModelSim软件 开发平台上仿真实现,仿真结果达到预期目标。本文的研究对智能化交通监控系 统的车流量检测做了有益探索,对其他场合的图像高速处理及检测也具有一定的 参考价值。 关键词:FPGA,VHDL,测试基准平台,中值滤波,目标检测 基于FPGA的视频图像检测技术的研究与应用 Study and Application on the FPGA based Video Image Detecting System ABSTRACT The speed of image processing frequently touches the processing performance in imag吨processing and detecting system.In this paper,based on video detecting method and embedded system and image processing,on the background of video detection in traffic information,the FPGA based video image detecting system is studied,it has higher real-time processing capability through emulation,and is able tO provide the moving target’S information steadily.So it is a better choice for FPGA tO promote real-time performance of video processing. This paper is mainly consist ofthe following parts: FirStly,the whole architecture of system is given based on embedded parallel data processing system.Considering with dependability and stability,FPGA chip is used for the high performance and low cost of this system. Secondly’on the way of modularization design method,the embedded video detection system hardware platform is constructed.This system is composed of asynchronous FIFO module,image space converting module,SRAM imaging frame storing control module,image pre—processing module and image detecting module.It Can resolve problems such as image sampling store,processing and translate. Thirdly,some algorithms about image processing are studied,then comparing their advantage and disadvantage,it is provided that fast median filter on FPGA for diagram,then image low-level processing and its hardware structure realizes it by VHDL language.It results as this fast median filter can lower the system resources share and promote system speed,enhance real·time performance. .3. 基于FPGA的视频图像检测技术的研究与应用 Fourthly,the traffic vehicle flow detecting algorithm is studied,and background differential method,image binary,and its limitation definition are discussed importantly.Their hardware structures are designed on FPGA,realized by VHDL,and made functional emulation and performance analysis. Fifthly,in system simulation design,VHDL Test Bench and TEXTIO package is used to solve the system input problem successfully.Finally,the system test results indicate that the moving object call be detected accurately and Call be eliminated noises effectively. This paper mainly studies image processing and detecting technology in FPGA on—chip system,realizes all algorithms by VHDL hardware description language,and put forward some improving algorithms aiming at FPGA system characteristics.The system is emulated by using the combination of MATLAB,QuatruslI and ModelSim software,the emulating result is reached anticipated effect.This system call also be used in circumstance that needs the image tO be processed and detected fast. He Jiangyuan(Control Theory and Control Engineering) Supervised by Tang Minghao Keywords:FPGA,VHDL,Test Bench,median filter,object detection .4. 东华大学学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学位 论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除 文中已明确注明和引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的作品及成果的内容。论文为本人亲自撰写,我对 所写的内容负责,并完全意识到本声明的法律结果由本人承担。 学位论文作者签名:j可÷.垃叁 日期: 川年f月2『日 东华大学学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 论文被查阅或借阅。本人授权东华大学可以将本学位论文的全部或部 分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制 手段保存和汇编本学位论文。 保密口,在——年解密后适用本版权书。 本学位论文属于 不保密口。 学位论文作者签名:孑可毒h趋 日期:弘叮年1月刁Et 指匕日 导 教 再P 名 雌7 扬嘶 期 日rrT : .一 年 签哆/ , ./ 』笃 ,I●q-J 基于FPGA的视频图像检测技术的研究与应用 第一章绪论 1.1课题研究的背景及意义 随着社会经济的迅速发展,机动车拥有量急剧增加,交通密度的大幅提高, 道路交通超负荷运行状况不断突显,车辆拥挤堵塞、交通事故频发、交通环境恶 化等现象日趋严重,这已成为城市管理工作中突出的社会问题。例如,在交通十 字路口的信号灯按照预设周期,准时切换红绿信号,而交通流量的随机变化将造 成交通道路一端不堪重负、拥堵成灾,而另一端则闲置无务的不合理情况。这说 明现有的交通控制方式的固定模式已不能很好地管理调度交通流量,是造成这些 问题的主要原因之一。为此迫切需要采用各种高新技术,在城市交通中对复杂的 交通状况进行检测和判断,综合路况、车流等多种因素进行管理调度来解决交通 问题。它不仅可以给交管部门提供实时的道路交通统计信息,方便车辆管理和交 警调度,而且可以加速交管部门对紧急事件的反应速度,这对国民经济的发展, 人民的安定生活以及城市的建设和规划都会造成深远的影响。也正是当今“城市 交通智能化管理"建设进程中的研究热点。 要实现智能交通管理与控制,首先要准确地掌握交通信息,即对交通状况进 行实时检测。目前,国内外多数采用环形感应线圈、微波检测技术、红外线检测 技术、视频检测技术等方式进行交通车辆检测【I】【21,下面作一个大致的介绍。 a)环形感应线圈:这种方法只能收集车流量等简单的信息。同时,由于电 感线圈需要埋于路面土木结构中,因此环形感应器的安装和维护比较麻 烦,并且故障率相对较高。 b)微波检测技术(MTD):MTD是一种比较先进的技术,它的成本较低并 且具有很高的可靠性。但检测精度不高,易受车辆遮挡及行人影响,检 测距离短。 c)红外线检测技术:受车辆本身热源的影响,抗噪声能力不强,精度不高。 d)计算机视频检测技术:这种技术具有非常大的灵活性。图像所包含的丰 富信息为后期的处理提供了极大的旌展空间。通过视频流或单帧图像并 结合相应的软件算法可以提取各种有用信息,例如车流量、车型、车速、 道路占有率以及车牌信息等等。但普遍采用专用通信信道,将前端视频 基于FPGA的视频图像检测技术的研究与应用 信号直接传输至管理中心,后由人工方式在通用计算机上完成交通信息 的采集处理与分析,由于数据的传输问题,导致系统实时性能降低。 由于受到检测范围、检测能力和实时性等方面的限制,传统的车辆检测器已 不能满足先进的交通管理系统(ATMS)和智能车路系统(IVHS)的要求。研究有更 高应用价值的交通数据采集系统显得日趋重要,而基于现场的嵌入式视频图像检 测为上述问题提供了一个很好的解决方案。 基于嵌入式技术的视频检测系统不同于PC机的工作模式,而是把监控摄像 机与视频检测处理器一体化,置于交通道路现场进行图像处理的本地终端实时检 测和控制。其优点是:无需人工干预,实时性能强,完全由计算机监控,检测结 果准确性高,由于这种系统的硬件结合紧密、功能专一,是专门设计的独立设备, 不像插卡系统那样受通用计算机系统中的其他软硬件的影响,因此性能上更稳 定,且便于安装和维护,易于实现系统的模块化设计,便于管理和升级。 本文运用嵌入式计算系统、数字图像处理、模式识别等技术,研究并设计了 基于嵌入式微处理器的视频图像实时检测与处理系统,对道路的交通状况进行实 时监控。系统采用模拟或数字摄像机对道路交通车辆进行视频图像采集,对数字 图像进行处理及识别,进而提出一种新的基于嵌入式系统实时图像处理及检测技 术,其突出的优点是:图像质量无损、传输速度快、实时性能强、可扩展性强, 兼容性好,具有广泛的应用和研究价值。 1.2国内外研究现状 随着ITS的飞速发展,视频监控技术也得到了长足的进步。视频监控系统正 处在数字系统迅速崛起但尚不完全成熟的数字和模拟混合应用并将逐渐向数字 系统过渡,新的嵌入式数字系统刚刚开始的阶段。在国内外市场上,主要推出数 字控制的模拟视频监控和数字视频监控两类产品【5J。前者技术发展己经非常成 熟、性能稳定,在实际工程应用中得到广泛应用,特别是在大、中型视频监控工 程中的应用尤为广泛;后者是新近崛起的以计算机技术及图像视频压缩为核心的 新型视频监控系统,该系统解决了模拟系统部分弊端,但仍需进一步完善和发展 151。交通视频监控系统的发展大致经历了三个阶段。 在九十年代初以前,主要是以模拟设备为主的闭路电视监控系统,称为第一 基于FPGA的视频图像检测技术的研究与应用 代模拟监控系统【5】,该技术发展己经非常成熟。但由于视频监控系统中信息流的 形态没有变,仍为模拟的视频信号,系统的网络结构主要是一种单功能、单向、 集总方式的信息采集网络,介质专用的特点,因此系统尽管已发展到很高的水平, 己无太多潜力可挖,其局限性依然存在,要满足更高的要求,数字化是必由之路。 九十年代中期,随着计算机处理能力的提高和视频技术的发展,人们利用计 算机的高速数据处理能力进行视频的采集和处理,利用显示器的高分辨率实现图 像的多画面显示,从而大大提高了图像质量,这种基于PC机的多媒体主控台系 统称为数字化视频监控系统。基于PC的视频监控系统的组成结构为:兼容/.工控 PC机+视频采集卡+普通/较可靠的操作平台+应用软件,由于对视频图像进行了 数字化,所以可以充分利用计算机的快速处理能力,对其进行压缩、分析、存储 和显示。数字监控具有许多优点:(1)便于计算机处理;(2)适合远距离传输;(3) 提高了图像的质量与监控效率;(4)系统易于管理和维护;(5)便于查找。正是由 于数字视频监控具有传统模拟监控无法比拟的优点,而且符合当前信息社会的发 展趋势,所以数字视频监控正在逐步取代模拟监控,广泛应用于各行各业。 九十年代末,随着网络带宽、计算机处理能力和存储容量的快速提高,以及 各种实用视频处理技术的出现,视频监控步入了全数字化的网络时代,称为第三 代远程视频监控系统。视频监控系统以网络为依托,以数字视频的压缩、传输、 存储和播放为核心,以智能实用的图像分析为特色,引发了视频监控行业的技术 革命。第三代视频监控系统的典型代表是美国的VSAM[6】系统,在1996年至1999 年间,美国国防高级研究计划局(DARPA)资助卡内基梅隆大学、戴维SARNOFF 研究中心等著名大学和公司合作,联合研制了视频监视与监控系统VSAM,目 标是开发自动视频理解技术,用于实现未来战争中人力监控费用昂贵、非常危险 或者人力无法实现等场合的监控。 交通监控作为视频监控的一个重要分支,有着广泛的市场,同样也经历着从 模拟到数字再到网络化的发展过程,具有代表性的系统如TRIP[7]交通图像处理 系统和AUTOSCOPEtsl,TRIP是最早使用机器视觉来检测交通信息的算法之一, 属于一种半自动的车流量检测方法,需要人工参与,才能完成车辆记数的工作。 AUTOSCOPE是一个较为成功的商业系统,具有实时检测交通参数的能力,是 国际上交通信息采集中最具竞争力的视频检测系统之一。 基于FPGA的视频图像检测技术的研究与应用 无论是第二代还是第三代视频监控系统,普遍采用PC作为图像处理的平台。 但在实际工程使用过程中,也暴露出一些不足,主要是系统工作的不稳定性和实 时性不好,基于PC的视频监控录像系统的组成结构为:兼容/工控PC机+视频 采集卡+普通/较可靠的操作平台+应用软件。兼容PC机用于24小时不问断工作 时,其性能是不很稳定的,工控PC机相对兼容PC机的稳定性有一个档次上的 提高,适用于较复杂的工作环境。以Windows为操作平台的系统,其稳定性是 有一定问题的,如果同时应用软件又不规范,这样就容易在使用过程中出现工作 不稳定、死机等问题,而基于PC机的视频监控录像系统其软件的实现是在 Windows 95/98/NT,Unix,Linux等通用操作系统上,同时系统文件、应用软件和 图像文件都存储在硬盘上,视频处理必须高密度输入大量数据,同时硬盘要进行 多工作,普通的硬盘逻辑(如Windows的FAT32格式)已无法适应,以致极易产 生系统的不稳定性,造成死机现象。所以嵌入式数字监控系统被提到历史日程上 来。 嵌入式系统就是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、 适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统"。 随着芯片技术的飞速发展,嵌入式系统得到越来越多的重视,特别是以MPU、 DSP、FPGA等为核心的视频监控系统,克服了基于PC的视频监控系统的一些 不足,将会在视频监控领域有着很好的发展前途。 1.3本文研究内容与章节安排 视频图像技术在智能交通系统当中具有广泛的应用领域,作为一项现代信息 技术在智能交通的应用领域扮演着极其重要的角色,其应用前景正在变得愈加广 阔。而随着计算机技术的发展,嵌入式系统设计概念和芯片技术不断革新,应用 大规模可编程逻辑器件进行视频图像检测成为热点和难点问题。综合上述两点因 素考虑,本文提出了基于FPGA技术的嵌入式视频图像实时处理及检测平台的研 究,并在分析讨论视频检测技术的基础上,重点就图像预处理、运动目标检测应 用于智能交通监控系统进行了研究与探讨,实现了各个模块功能,为系统功能进 一步扩展奠定了基础。最后对整个系统进行系统级仿真,并研究了一种利用 VHDL测试基准(TestBench)解决图像输入源仿真的方法,即结合MATLAB和 基于FPGA的视频图像检测技术的研究与应用 TestBench的Textio文件操作方法从计算机中的图像文件(.bmp文件)获得图像数 据,这种方法有效地解决了传统手动设置输入波形难以处理的问题,也是本文研 究工作的一点创新。 本文各章节的主要内容安排如下: 第一章绪论简要介绍了课题的背景及意义,传统检测系统的弱点和视频图像 检测技术的优势,以及在智能交通系统的应用发展状况,最后对论文的主要工作 进行了说明。 第二章研究了数字视频处理的相关基础技术,包括视频图像信号的概念和视 频图像处理的基本过程。针对本系统,分析并研究了相关的图像处理技术和运动 目标检测技术的理论和方法。 第三章是系统方案的设计,简述了系统的总体设计思想,依据现有的设计方 案,提出并论证了基于FPGA技术的视频检测系统的优越性和可行性,然后对 FPGA技术,FPGA的结构特点及其开发流程、开发工具等进行介绍,为本设计 提供了技术基础和工具。 第四章是系统的设计与实现,对硬件设计的模块分别进行介绍,包括设计原 理,设计步骤以及实现的仿真结果和数据分析。就图像预处理和运动目标检测两 大方面,采用相关算法通过VHDL硬件描述语言实现,并在图像中值滤波算法 和目标检测算法上提出改进,给出优化后的性能分析。 第五章是系统的仿真与分析,进行系统级仿真验证,提出利用VHDL测试基 准(TestBench)解决系统输入源仿真的方法,结合ModelSim和MATLAB仿真开 发工具对系统测试结果进行分析与调试,最后得出结论,系统设计基本符合要求, 可以实现运动目标检测并在一定条件下能排除行走路人等噪声干扰,具有一定的 可行性。 第六章是系统的总结与展望,总结归纳了论文的主要工作和不足,并对该系 统的技术实现、功能扩展、算法优化和应用领域的发展进行了展望。 基于FPGA的视频图像检测技术的研究与应用 第二章视频图像检测技术方法研究 随着电子技术和计算机技术的飞速发展,视频图像信号处理技术近年来得到 极大的重视和长足的发展,从遥感图片处理、医用图像识别、工业产品检查以及 装配工序中的图像测量,到最近应用的办公室自动化中的图形和图像的生成及文 件图像处理、全天候传感器合成孔径雷达的数字分析以及三维活动图像的分析, 特别是近来广为议论和研究的机器人视觉,都己越来越使人们感到视频图像信号 处理技术的重要及带来的益处。实时视频图像信号的处理己经成为数字图像处理 领域中重要的一部分。例如机器人模式识别的过程就是一个实时视频图像信号的 处理过程,电视制导导弹识别目标也是充分利用视频图像信号处理技术不断判别 目标是否和预先设定目标图像一致,正是由予数字图像处理技术的广泛应用,对 实时处理的系统提出了各种新的课题Il¨。 2.1视频图像信号 2.1.1视频图像处理的基本过程 大部分图像数据在实际应用前皆需进行有针对性的处理,如根据图像数据特 点和应用领域对图像进行增强、复原、除噪、锐化和识别等。此外,为了有效实 时地传输信息,还必须对图像进行压缩、解压缩、分割。图像处理技术尤其是实 时处理,现己成为热门的研究课题之一【111【12J[131。 视频图像处理的主要方式有:(1)在通用计算机上用软件实现图像处理:(2) 在通用计算机系统扩展接口中加入专用的图像处理模块;(3)利用通用单片机;(4) 利用专用DSP芯片;(5)利用FPGA+DSP芯片【12】【1 31。 2.1.2实时视频图像系统 1.数字图像、象素 虽然客观世界在空间上是三维的,但一般从观测景物中得到的图像是二维 的。一幅图像可定义为一个二维函数f(x,y),这里x和Y表示二维空间XY中一 个坐标点的位置,而在任何一对空间坐标(X,y)上的幅值L称为该点图像的强度 或灰度。 由于计算机处理的数字图像信号L是两次离散化的结果:一是对连续变化 基于FPGA的视频图像检测技术的研究与应用 的空间图像进行等间距采样,使空间上连续变化的图像离散化,也就是采样过程, 此时的信号只是离散的不是数字的,因为信号的大小在数值上还是连续的;二是 对采样以后每个象素的灰度进行量化处理,使图像的灰度级值离散化,转换成2L 灰度级(L为量化比特数,在本文中L=8bit),因而对于视场大小为MXN的数 字图像%,其数学模型为㈣‘121㈣: 岛(1,1)…岛(1,/)…岛(1,忉 F印= 岛(f,1)…岛(f,_,)…磊(f,Ⅳ) (2-1) %(M,1)…岛(M,/)…矗∽,Ⅳ) 式(2-1)qb:R(j,J)∈(1,2。)表示数字化后坐标为(iJ)象素的灰度级数据。 数字图像处理是指借用数字计算机处理数字图像,值得提及的是数字图像是 由有限的元素组成的;每一个元素都有一个特定的位置和幅值,这些元素称为图 像元素、画面元素或象素。象素是广泛用于表示数字图像元素的词汇。 一幅平面图像可以看成是由若干个小单元组成,在图像处理系统中,这些组 成画面的细小单元称为象素。象素越小,单位面积上的象素数目就越多,由其构 成的图像就越清晰。 一幅黑白或者灰度平面图像,表征它们各自还呈现着不同的亮度。又由于电 视系统传送的是活动图像,因而每个在确定位置上的象素其亮度又随时间不断地 变化着,也就是说象素的亮度又是时间的函数。象素亮度既是空间(二维)的函数, 同时又是时间的函数。 2.实时图像系统 考虑这样一个系统:它的输入是从图像设备得来的数据,而它的输出则是控 制诸如显示器等外部硬件的数据。从提供一组输入开始到获得所有的相关输出为 止的这一段时间称为反应时间。若一个系统的反应时间总是小于某个给定的值, 则这个系统就是一个实时系统。 等同的定义是,一个实时图像系统它的合理正确性建立在输出正确和输出反 应时间满足要求的基础上。例如,微秒级的反应时间并不能用来刻画一个实时图 像系统。当且仅当该系统满足给定的反应时间,它就是一个实时系统。对实时系 基于FPGA的视频图像检测技术的研究与应用 统普遍存在一种误解:它必须非常“快"。这是由于大多数的情况下,时间限制 是潜在的物理处理的一种直接反应。例如,在需要对屏幕刷新以看到连续运动的 图像处理中,时间限制是大约是30毫秒。在实际的情况下,实时系统与非实时 系统的根本区别在于它们对反应时间的预测和缩减量的强调程度不同。 3.实时视频信号与视觉系统 视觉是人类最高级的感知器官,所以,毫无疑问实时视频信号在人类感知中 扮演着最重要的角色。然而,人类感知只限于电磁波谱的视觉波段,成像机器则 可覆盖几乎全部电磁波谱,从伽马射线到无线电波。它们可以对非人类习惯的那 些图像源进行加工。实时视频图像信号源包括超声波、电子显微镜及计算机产生 的图像。因此,实时视频信号处理涉及各种各样的应用领域[141。 实时视频信号处理涉及的范畴或其他相关领域(例如图像分析和计算机视 觉)的界定在初创人之间并没有一致的看法。有时用处理的输入和输出内容都是 图像这一特点来界定图像处理的范围[141。例如,在这个定义下,甚至最普通的 计算一幅图像灰度平均值的工作都不能算做是图像处理。另一方面,有些领域(如 计算机视觉)研究的最高目标是用计算机去模拟人类视觉,包括理解和推理并根 据视觉输入采取行动等。这一领域本身是人工智能的分支,其目的是模仿人类智 能。入工智能领域处在其发展过程中的初期阶段,它的发展比预期的要漫得多, 实时视频图像信号分析领域则处在实时图像信号处理和计算机视觉两个学科之 间。 4.图像的串行传输 根据人的视觉惰性,可把组成一帧图像的各个象素的亮度按一定顺序一个一 个地转换成相应的电信号并依次传送出去,接收端再按同样顺序将各个电信号在 对应位置上转变成具有相应亮度的象素,这就是图像的串行传输。这种串行传输 具有两个特点【14】: (1)要求传送速度快。只有传送迅速,传送时间小于视觉暂时间。重现图像 会给人以连续无跳动的感觉。 (2)传送要准确。每个象素一定要在轮到它传送时才被转换、传送并被接收 方接收。而且收、发双方每个象素被转换,还原几何位置要一一对应。即收、发 双方应同步工作,同步在电视系统中是十分重要的。 基于FPGA的视频图像检测技术的研究与应用 5.扫描 将组成一帧图像的象素,按顺序转成电信号的过程(或逆过程)称为扫描。 扫描的过程和我们读书时视线从左到右,自上而下进行的过程类似。从左到右的 扫描称为行扫描,自上而下的扫描为帧扫描。电视系统中,扫描多是由电子枪进 行的,通常称为电子扫描。通过电子扫描与光电转换,就可以把反映--N图像亮 度的空间与时间的函数转换为只随时闻变化的单值函数(电信号),从雨实现平 面图像的顺序传送f14】【15】。 6.数字图像信号的格式 PAL制电视信号转化为数字实时图像信号后的具体格式如图2.1所示,一般 数据格式符合ⅡV656YUV4:2:2标准【111【131【141。 , HREF ⅥtEF ODD HREI曰 vREF ODD 图2.1一帧图像采集的时序关系 一帧图像含有625行数据,其中有效图像数据572行,其他为场消隐信号; 每行图像数据包含720个象素。因此,PAL制电视信号的分辨率为720 X 572。 PAL制电视信号每秒扫描25帧图像,每帧包括奇、偶两场图像。一帧图像分为 奇数场和偶数场,每场各要286行有效图像数据。垂直参考电压信号VREF的高 电平表示有效图像信号,偶数场和奇数场各有286行。ODD信号高电平表示为 奇数场,低电平表示偶数场。行参考电压信号HREF信号表示一行有效的图像数 据。 2.2图像处理技术概述 图像处理技术是把输入图像转换成具有所希望特征的另一幅图像。根据算法 基于FPGA的视频图像检测技术的研究与应用 强度、算法复杂度和通信难易程度,可将视觉检测中的图像处理分为低级处理、 中级处理和高级处理。 低级处理(即图像预处理)主要是针对像素的一些运算,完成如对比度增强、 锐化处理、平滑处理、边缘检测、模板匹配、膨胀和缩小等操作。在低级处理中, 参与运算的数据量大;数据需多次重复使用,算法简单(乘加运算)规则,图像 中的所有元素均可施以同样的操作,存在固有的并行性,通信需要高带宽数据交 换,因此,低级图像处理往往是图像处理系统中最为耗时的环节,对整个系统速 度影响较大:这些特点,使这些运算非常适合于在外围FPGA架构中来用硬件算 法实现,例如FPGA中的硬件乘法模块就使得这些运算中大量用到的卷积运算易 于实现,由于FPGA能够能方便进行并行运算,使得图像的低级处理速度大大加 快。 胖霪l 敦栉一旷 倒躺一蚺坩柳一矿 旷旷 时。。 ∥ l妒 图2.2 图像处理数据量对比图 中级处理是将低级处理的结果,如灰度直方图、检测点、线的坐标,作为输 入,做进一步的处理,包括对被测物有用特征信息的处理,如孔中心的图像坐标 提取,线段交点的图像坐标的求取等,在这些运算中,参与运算的数据量较小, 但算法相对复杂,同时还具有一定的串行性,如继续用硬件实现则小仅要占用大 量硬件资源,且不易实现,因此可采用嵌入式的CPU来完成,由于CPU与FPGA 结构有很大的带宽,进行数据交换也很方便。 高级处理则包括视觉传感器坐标到传感器坐标的转换,以及整个检测系统传 感器坐标的统一等,经过中级处理后的数据量已经很小、需传输的数据量也小。 一般情况下,系统获取的图像由于经过传输和随机干扰,使图像质量下降, 基于FPGA的视频图像检测技术的研究与应用 必须在图像分割前对原始图像进行灰度校正,噪声过滤等图像预处理。图像预处 理技术通常是指采用线性滤波、非线性滤波和边缘保持滤波等手段来改善图像质 量的技术。图像预处理的方法主要有两种:空间域法和频率域法。空间域法主要 是在空间域内对图像象素直接运算处理,频率域法就是在图像的某种变换域对图 像的变换值进行运算,如先对图像进行傅里叶变换,再对图像的频谱进行某种计 算,最后将计算后的图像逆变换到空间域。 本文在对数字视频图像所进行的处理中,采用了三个过程,首先是对图像进 行预处理,接着对图像进行阈值分割,最后采用合适的运动目标检测算法以获取 在视频图像中的正确目标对象。其中的每个过程都有各自的算法,下面将对相关 的算法进行介绍和分析,从而选择适合于FPGA硬件处理的算法。 2.3图像预处理算法 预处理是指在处于最低抽象层次的图像上所进行的操作,这时处理的输入和 输出都是灰度图像。这些图像是与传感器摄取到的原始数据同类的,通常是用图 像函数值的矩阵表示的灰度图像。有必要指出,预处理不会增加图像的信息量。 如果信息用熵来度量,那么预处理一般都会降低图像的信息量。因此,从信息理 论的角度看,最好的预处理是没有预处理,避免预处理的最好途径是着手于高质 量的图像获取【16】。然而,预处理在很多情况下是非常有用的,因为它有助于抑 制与特殊的图像处理或分析任务无关的信息。因此,预处理的目的是改善图像质 量,抑制不需要的变形或者增强某些对于后续处理重要的图像特征。 2.3.1灰度化处理 虽然当前彩色摄像机已经普遍的使用,但是一般的智能化视觉监控系统的图 像分析中通常处理的是图像的灰度信息。因为灰度化图像拥有比RGB图像和 YUv图像更少的信息量。图像处理起来更加的简便。我们这里也从图像的灰度 信息来考虑运动检测的问题。实际上是用8bits来存储一个像素的灰度值(0—255, 256色)。对截取的图像首先进行灰度化处理,方法是:根据图像是16位、24位 还是32位位图,依次取得每点的R、G、B值,然后,根据下面的公式计算该点 的灰度值Y。Y=R*0.299+G*0.587+B*0.114,再令:R=G=B=y,则得到新图像 基于FPGA的视频图像检测技术的研究与应用 的RGB值,待全部处理完,就得到了该图的灰度图像。如果摄像机输入的彩色 图像为YUv格式,由于ⅥⅣ格式中Y分量就代表图像的灰度信息,所以此时 直接提取Y分量就可以了【17j。 2.3.2消除图像噪声的方法 通常情况下,系统获取的图像在形成、传输、接收和处理的过程中,不可避 免地存在着外部干扰和内部干扰。各种噪声随之而来,如图像传感器、信道传输、 A/D转换等所产生的脉冲噪声、数字化过程中的量化噪声还有来自外部的电磁波 干扰等。图像中的加性和乘性噪声与信号交织在一起,这些噪声极大地降低了图 像质量,对图像分割、特征提取、图像识别等处理产生不可预料的影响,因而消 除噪声在图像处理中占有重要的地位。目前去除噪声的方法主要是进行图像滤 波,而对图像滤波的要求是既能去除图像以外的噪声,同时又要尽量保持图像的 细节。 滤波可分为线性滤波和非线性滤波两大类。拓展到图像空间里,消除噪声的 方法主有两种:空间域法和频率域法。空间域法主要是在空间域内对图像象素直 接运算处理,频率域法就是在图像某种变换域对图像的变换值进行运算,一般情 况下,在空间域内可以用邻域平均来减少噪声。而在频率域,由于噪声频谱多集 中在高频段,因此可以采用各种低通滤波方法来减少噪声【18】【191。 2.3.3线性滤波 图像常被随机信号(即噪声)所污染,一些常见的噪声有椒盐噪声、脉冲噪 声和高斯噪声等。线性滤波器对滤除高斯噪声的效果很好,且在大多数情况下对 其它类型的噪声也有很好的滤出效果。线性滤波器使用连续窗函数内象素加权和 来实现滤波,这种类型的滤波器包括均值滤波器和高斯滤波器。 邻域平均法也称均值滤波法,是一种最简单的线性滤波器。一幅图像往往可 能受到各种噪声源的干扰,如电传感器噪声、信道传输误差引起的噪声等。这些 噪声在图像上常常表现为一些孤立象素点,它们像雪花飘落在画面上一样。这可 以理解为象素的灰度是空间不相关的,即噪声点象素灰度与它们的近邻象素灰度 有显著不同。借助噪声点的这一空间特性,产生邻域平均法。设f(x,y)为给定的 基于FPGA的视频图像检测技术的职究与应用 有噪声的图像,经过领域平均处理后为g(x,y),在数学上可表示为: 烈毛力2击。影。∥) (2之) 式中s是各近邻象素的坐标所组成的邻域集;M是邻域中包含的近邻象素的 个数,可以这样说明:在f(X,y)是按行(或)列对每个象素选取一定尺寸的邻域, 并用邻域中近邻象素的平均灰度值来置换这一象素值。对全部象素经处理后可获 得g(x,y)。对于邻域可以有不同的选取方式,如四邻点邻域、八邻点邻域、5X5 邻域、7X7邻域。 邻域平均法有力的抑制了噪声,同时,也出现了因平均作用而引起的模糊现 象,模糊程度与邻域半径成正比,即s面积越大,噪声减小越明显,但模糊性也 越大。平滑后的图像标准差降为原来的1/√M。而且该算法计算量较大,不适合 于FPGA硬件系统。 低通滤波法是一种频域处理法。对一幅图像来说,它的边缘,跳变部分以及 噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频分量, 所以采用衰减高频的低通滤波器可以去除噪声。但是,图像细节的频谱能量也趋 向于高频段,所以低通滤波同样也给图像细节带来模糊。低通滤波平滑流程框图 如图2.3所示。 斟“磊‘恤 世叫嚣 Ⅳ“。力 譬妾譬惮。 反交换 i 图2.3低通滤波流程框图 图中F沁V)是带噪声的原始图像f(x,”的傅立叶变换,H(如v)为低通滤波器的传递 函数,经过滤波处理后的G沁垆H沁v)·F(u,v),再进行傅立叶反变换可得到 去除噪声后的平滑图像g(x,”。该方法中卷积和FFT变换计算量都比较大,在减 少图像中的噪声的同时,也丢失了图像中的细节。 2.3.4非线性滤波 使用线性滤波器的主要问题是有可能模糊图像中的尖锐不连续部分,而有两 种非线性滤波算法能够克服以上不足。它们分别是:中值滤波和边缘保持滤波。 基于FPGA的视频图像检测技术的研究与应用 中值滤波器的基本思想是用象素点邻域灰度值的中值来代替该象素点的灰度值, 该方法在去除脉冲噪声,椒盐噪声的同时又能保留图像边缘细节,这是因为它不 依赖于邻域内那些与典型差别很大的值。但对一些细节多的图像不宜采用中值滤; 波。 由于线性滤波器计算复杂度高,不便于实时处理,且存在抑制噪声效果一般, 信号边缘模糊等缺点。为此,1971年著名学者Turky提出中值滤波这种非线性 去噪的方法【20】。开始中值滤波用于时间序列分析,后来被用于图像处理,可以 较理想的将图像从噪声中恢复出来,并且能保护图像的轮廓边界,使其不变模糊。 非线性滤波理论在机器视觉、视频图像和语音处理等领域有了广泛的应用。 中值滤波的基本原理是把数字图像或数字序列中一点的值用该点一个邻域 内各点的中值来代替。把一个特定长度或者形状的邻域称作窗口,在一维的情形 下,中值滤波器是一个含有奇数个象素的滑动窗口。窗口正中间象素的值用窗口 内各象素数值的中间值来代替。 设有一维数字序列t,f∈I,I表示所有自然数的集合,窗口长度为n(奇数) 对此一维序列的中值滤波公式为: Z=Median(Xi.,,…Z,…,置+,) (2-3) 式中f∈』,,=(n一1)/2以Z取代窗口中心象素值作为中值滤波输出。 对二维中值滤波做如下定义: 设{x。,(f,歹)∈f2}表示数字图像各点的灰度值,滤波器窗口为A,少蓼为窗口A 在工∥点的中值,则有、=MediantX0}=Median{Xo+r),o+s),(r,s)c A,(i,j)∈12) 式中(f,/)∈12,以Y:i取代二维窗口中心象素灰度作为中值滤波结果输出。 中值滤波可以有效去除脉冲型噪声,同时对图像的边缘有较好的保护,但是 ×.f m峰』.i、线平l|顶尖细节多的图像不宜采用该方法。常用的二维中值滤波窗口形 状有线状、方形、圆形、十字形以及圆环形等,窗口尺寸一般先选用3x3窗口 再选取5×5窗口逐点增大,直到其滤波效果满意为止。 由于中值滤波算法能够有效的去除噪声,在本系统实现中选取3×3大小的 二维窗口,在9个采样值中从小到大选择第5个中值作为滤波器的输出结果。 基于FP(;A的视频图像检测技术的研究与应用 边缘保持滤波器㈣是在上述滤波器的基础上发展的一种滤波器,该滤波器在 滤波噪声脉冲的同时,又不至于使图像边缘变得模糊。边缘保持滤波器算法的基 本过程是:对灰度图像的每一个象素点呦】取适当大小的一个邻域,分别计算这 个点的左上角子邻域,左下角子邻域,右下角子邻域和右上角子邻域的灰度分布 均匀度V,计算灰度均匀度的公式采用2.4式所示。然后取最小均匀度区域的均 值作为该象素点的新的灰度值。 y=∑(fEi,j]-fEi,皿2 (2.4) 从以上介绍的几种滤波器情况看,线性滤波器对数字图像的灰度影响较大, 且易模糊目标边缘。而边缘保持滤波器虽然能很好保护目标边缘,但它的计算量 较大,实现起来较为复杂。考虑到以上因素,最后设计采用了中值滤波算法的图 像预处理模块。 2.4目标检测算法研究 2.4.1运动目标提取算法 在静态图像处理中,第一步常常是图像分割,即找出有意义的图像部分,从 图像中抽出特征。视频图像的分析虽然与此不同,但也必须考虑将图像分成运动 区域和不变区域,分析连续画面间的变化部分,从而抽出运动目标的特征,可以 据此判断目标的运动状况。考虑到具体的应用环境,本文所得到的图像序列是在 大部分情况下带有运动目标的图像序列,使得我们可以利用目标是运动的这一特 点检测出单帧图像难以检测出的目标。通常的做法是突出目标或消除背景的思 想,大致有帧间差分【2¨、背景差分和光流法三种方法。 2.4.1.1帧问相减 在序列图像中,通过逐象素比较可直接求取前后两帧图像之间的差别。假设 条件在多帧图像间基本不变化,那么差分后图像的不为零处表明该处的象素发生 了移动。换句话说,对时间上相邻的两幅图像求差【2l】【22J可以将图像中目标的位 置和形状突出出来。 在相减后的图像中,灰度不发生变化的部分被减掉,这里包括大部分背景和 一小部分目标。若背景比目标灰度大,则前区为正,后区为负,其他部分为零。 基于FPGA的视频图像检测技术的研究与应用 由于检出的部分可以大致确定运动目标在图像上的位置,使用相关法时就可以缩 小搜索范围。 若想从差分图像中抽出运动物体轮廓,只要将差分图像中正(或负)的部分, 在序列图像中取逻辑和即可得到。如图2.4所示,假设区域A和B灰度为l,背 景灰度为0,图中显示了将图像序列中相邻两帧相减后负的部分取逻辑和后得到 区域A的形状。 芝馨翱 ]O 图2.4从差分图像中提取运动物体轮廓 (1)两帧相减 在实际运用中,CCD与目标物体之间的运动基本为平移,没有刚体的旋转 运动,而且运动方向又平行于图像平面时,这就形成了简单的二维平移运动。当 图像帧之间的间隔较短时,可以认为目标物体的各部分在图像平面上的灰度基本 保持不变。设f.时刻的图像为Z(x,Y),f:时刻的图像为以(x,Y),若在此期间运 动物体平移了,根据上述的假定应当有: ^(工,y)=石(x—Ax,Y—Zy) (2-5) 据此,我们可以利用差分、相关、微分、富氏分析【23】【24】【25】等方法,由两帧 图像检测出物体的运动信息。 1.差分法 鲈(工,Y)=^(工,Y)-A(x,Y) (2—6) 图像中的静态部分,At=0,ay=0,所以鲈(x,Y)=0也为零。而图像中的 运动部分,Ⅳ(工,Y)=0则不为零。如果运动目标的平均灰度小于背景的平均灰 度,则可(x,Y)<O代表了第二帧图像新增加的部分,而V(工,Y)>0代表了已消 失的第一帧图像部分。可以利用相减获得的差值图估计出目标的轮廓及运动轨 基于FPGA的视频田像检测技术的研究与应用 迹。图2 5是一个例子,其中(a)、(b)为t。、t:时的图像,(c)为相减的差值,因为 运动目标的灰度分布不足均匀的,所以正差值集中在区域1,负差值集中在区域 2,除了这两大块区域外,还有一些小块的正差值区域和负差值区域分布在两大 块区域中间。当位移前后两目标成像重叠时,正负差值之间夹有零差值。无论正 差值或负差值与这部分零值相并,都可以检测出运动目标,进而可算出位移量。 当两个不同时刻目标成像不交迭时,正差值与负差值均反映了目标,由其质心的 匐望备I 变化也可推算出位移量。 竭蠲 i区壤翟,—卜—__区:域2 为缸。-衄。, (Ah,母。)=一馏M甜∑,2.(ty)』(x,y)/U] 其中N为总象素数, 3微分法 将运动参数与目标物体的空间变化联系起来考虑。 V(z,Y)=正(‘Y)一^(z,Y) 佗_8、 r2—91 基于FFGA的视频图像检测技术的研究与应用 设 ^(x,y)=ZO一缸,Y—ay) (2—10) 在(x,y)展开Taylor级数且只取二个线性项有 Af(x,y):一缸兽一缈墨(2-11) 峦 oy 如果视频图像中只有一个运动目标,在差值不为零的地方选两个点,并从图 上计算出罢防,罢伽,就可以估计出运动参数(缸,Ay)。 4.富式分析法 A(x,y)的富式谱为E(甜,',),目标物体移动(Ax,△少)后的厶(x,y)的富式谱为 最(“,V): ^(z,Y=A(x—Ax,y一知)(2-12) E(”,1,)=E(zf,v)exp{一/2万(“缸,Vay)} (2-13) 可以在频域通过E(“,1,),E(“,v)的相位谱差解出血,ay,将图像函数分别投 、影到x轴与Y轴,而可分别求出相位差-2uAx及-2uAy,只要给出一个,就可 以计算出缸,缈。 这种方法适用于检测均匀背景上含有单个目标的情况,由于相位角非单值, 要注意多解问题。 (2)多帧相减 在实际情况中,由于随机噪声的影响,没有发生象素移动的地方也会出现图 像减差别为零的情况。为克服上述问题,可以考虑利用多幅图像。在采集的一系 列图像中,连续三帧(或者更多的图像)做两两差分(double difference)t261。 1.直接差分 设有一系列已经二值化[271的图像序列{L),两帧相减后的图像以定义为 D。(f,_,)=l,。(f,j『)一L—l(f,刊 而两两差分后图像由连续两个两帧相减后的图像逻辑与获得 (2—14) 基于FPGA的视频图像检测技术的研究与应用 叫(f,舻佬勰劣h职‘力引 (2-15) 此处T为阈值。 2.基于记号的分析方法一运动边缘检测【27】【28】【291 时变图像中的运动边缘点可以直接检测出来,也可以提供有关的速度信息。 设随时间变化的边缘点为E(x,Y,f),它可以由下式来确定 驰烘垆吲掣I ㈣ 其中%=∽,f,)-与df(x,Y,t)/dt分别是图像序列厂(工,Y,f)在时刻t在(x,y)点的 空间与时间导数。最简单的实现方法是用诸如Sobel这样的边缘检测算子求空间 梯度,用时间不同的两帧图像的灰度差l/(x,y,f)一f(x,Y,H.1)l作为其时间导数。 用上面的方法去找运动边缘,存在着一定的不足,即检测性能受图像对比度 的影响。令V(x,y)=(“,v),则有 乃}V(x,y)=一丁df(x,y,t)(2-17) 代入式2.15中得到 E,(x,Y,t)=一(墨乃)y(毛Y) (2—18) 这表明对一个确定的目标速度,检测性能受图像对比度的影响。若图像对比度不 好,运动边缘检测器的响应就差,为了能检出这些边缘务必设置低门限值,这就 会产生一些假边缘。 为了克服上述定义的弱点,将时变运动检测器定义为 E(工,y,t)=E(x,Y,f)【D(x,y)‘】 (2—19) 这里E(x,Y,t)为f(x,Y,f)的边缘图,D(x,Y)为f(x,Y,f1)与f(x,Y,f2)之间灰度不 相似行的测量,k为常数,由实际用的边缘检测器及不相似性测量决定。 各种传统的边缘检测方法可用于计算空间梯度,而简单的差分方法可用于计 算时间梯度。在大多数情况下,传统的边缘算法很有效,但是容易遗漏缓慢运动 边缘,及对弱边缘的效果也不太好。 这种方法具有很强的自适应性,但是对做差分的连续帧的选择时机要求较 基于FPGA的视频图像检测技术的研究与应用 _●__●●●●_-_-_●●_●--。-_-●_●-●_●_●-__●_---_-_-'_----_●●_-___-_●___●-__-●,。_-●_●●_-●-●-●●_-_-●II-●-●●-__●__●_-●●-_I●__。-I-。_●__-●___●_●●-_-。_-__●-______-I___●_-_-___一。●●-_一 高,而且有赖于运动物体的运动速度,如果运动速度较快,而选取的时间间隔过 大,就会造成两两帧之间无覆盖区域,从而无法分割出运动物体,而如果运动速 度过慢,而选取的时间过小,则造成过度覆盖,最坏的情况是物体几乎完全重叠, 根本检测不到物体。 2.4.1.2光流法 光流法就是利用图像灰度在时间上的变化与景象中物体的结果和运动的关 系,进行运动物体的检测。在图像中观察到的表面上的模式运动就是所谓的光流 场,而运动场则是三维物体的实际运动在图像上的投影。研究光流场的目的就是 为了从序列图像中近似计算不能直接得到的运动场。 假设运动可以由一系列映射参数描述,对应于同样的表面和三维运动的流量 矢量将具有映射参数的相同集合,通过把具有同样映射参数的流量矢量分配为同 一类的方法,完成光流分割【30】【3l】。 1.微分法 微分法又称为时空梯度法,它是利用时变图像灰度(或其滤波形式)的时空 微分(即时空梯度函数)来计算每一图像点的速度矢量。设I(x,Y,f)为t时刻图 像点(x,y)的灰度;U,v分别为该店光流矢量沿x和Y方向的两个分量,且有 鬣=dr/tit,y=dy/dt。根据图像灰度保持假设dI(x,y,t)/dt:0,容易导出光流 矢量的梯度约束方程‘32】: L“+,,’,+‘=0 (2·20) 或者写成矢量形式 胄i·v+Ii=0 (2-21) 式2-20、2-21中L、jy、‘分别为参考象素点的灰度值沿x,y,t三个方向的偏导 数:w=(L,L)7’为图像灰度的空间梯度;V=(“,V)r即为光流矢量。 梯度约束方程限定了L、‘、‘与光流矢量的关系,但是对于构成此矢量的 两个分量u和v,则其解菲唯一。甩一个方程来限定两个未知量本来就是一个病 态问题。因而,为求解v的两个分量必须附加另外的约束条件。 基于FPGA的视频图像检测技术的研究与应用 约束v的另一途径使将速度分量的局部估计在空间和时间上整合起来,以适 定化光流的解。Horn和Schunck将梯度方程(2—21)和速度场整体平滑约束组合在 一起来约束待估速度’,=(“,’,)r,最后得到了一个致密的光流场。 2.匹配法 匹配法实质上是在图像序列的顺序图像之间实施的一种对应任务,它将速度 (光流)定义为使得不同时刻图像区域之间产生最佳拟合的位移【331。给定两帧顺序 图像‘和,:,对于图像‘中的每个象素点(x,y),以此象素为中心形成一个大小为 (2n+1)×(2n+1)的相关窗口睨。围绕图像12中的对应象素点(X,y)建立一个尺寸为 (2N+1)x(2N+1)的搜索窗形。搜索范围可根据有关两图像间最大可能位移的先 验知识来确定。于是可用下面的加和差平方(SSD)来计算搜索区域上的 (2N+1)x(2N+1)误差分布 s(“,V)=∑【J1(x+i,y+j)-12(x+u+i,y+V+删2 j,JI一一 然后将此误差分布转换成指数形式的响应分布 -N<“,V≤Ⅳ (2—22) R(u,V)=exp卜露∈(甜,V)】 一N≤掰,V≤N (2—23) 式中,k为正则化参数。在整个误差范围内,指数响应函数在0与1之间连续地 变化。 3.基于能量的方法 光流技术是基于速度调谐滤波器的输出能量。由于速度调谐滤波器是在傅里 叶域中设计的,因而这类技术也称为基于频率的方法。一个平移二维模式的傅里 叶变换为 I(k,co)=Io(七)万(国+V7膏) (2—24) 式中 厶(七)为I(x,Y,o)的傅里叶变换: 艿为狄拉克函数; 国表示时间频率: 七=(缸,砂)r表示空间频率。 这表明与平移2D模式相关联的所有非零功率均位于通过频率空间原点的一个平 基于FP6A的视频图像检测技术的研究与应用 面上,这是基于能量方法的一个基本出发点。 Heeger将光流估计公式化为时空能量与频率空间一平面的最小二乘拟合问 题。局部能量用Gabor能量滤波器来提取,这些滤波器分属于几个空间尺度,每 一尺度有12个滤波器,它们调谐于不同的空间定向和时间频率。理论上,对于 单一平移运动,这些滤波器的响应集中在频率空间中一平面附近。对于平移白噪 声,Heeger导出了调谐于频率(也,k。,缈)的Gabor能量滤波器的预期响应,它是 速度的函数 地v)-exp[-。”4吒∽’吒r吼2吼t)r'。川2t+r(Y2V盯tvr,盯'2吼,()吼‘uk川+x【+vkqqy口+口ay,Jg‘尹)2 (2乏5) 式中,盯:,仃y,tlr;分别为Gabor滤波器Gaussian分量的标准偏差。令Ei为滤 波器的预期运动能量,它由式2.25给出,不同的i值对应于不同中心频率的滤 波器;mi为测得的运动能量——相应滤波器的输出;面为与第i个滤波器同定 向的滤波器的输出之和,Ei为对应得预测能量之和。使下式最小化可求得沁v) 的一个最小二乘估计 m,V)=善12帆一瓦粉Et(/2’2 (2-26) Heeger提出两条途径来最小化式(2—26),一是用牛顿法实现式(2.27)的非线性 最小化,二是采用并行搜索算法。 在基于能量的模型中,首先要对输入图像序列进行时空滤波处理,这是一种 时间和空间整合。对于均匀的流场,要获得正确的速度估计,这种时空整合是非 常必要的。然而,这样做会降低光流估计的空间和时间分辨率。尤其是当时空整 合区域包含几个运动成分(如运动边缘)时,估计精度将会恶化。 根据以上分析可知,光流分割所依据的是图像中每一个不同的运动可以用一 组映射参数正确地表达,这样,可以通过把具有同样映射参数的光流矢量分配为 ~类的方法完成分割。显然,分割结果的精确性依赖于估算的光流场的精确性。 准确地计算光流场一直是一个难以解决的问题,在运动目标的边界以及纹理较弱 的区域,光流的计算结果通常误差较大。解决这一问题的一种方法是同时进行估 算和分割。但光流法的计算非常复杂,如果没有硬件模块帮助的话,很难满足系 统实时性的要求。 基于FPGA的视频图像检测技术的研究与应用 2.4.I.3背景差分法 背景差分就是选取一参考帧作为参考图像,用当前帧和参考图像做差分,如 果参考图像选取适当,能比较准确的分割出运动物体。 该方法的主要思想是事先抓拍一幅静止的背景图像flamel;然后当有运动物 体时,抓取前景图像frame2:对两幅图像进行差分运算,按照公式(2.27)计算就 得到了差分图像d: d=∑>"{framel(i,j)-frame2(i,州 i=1 Jzl (2-27) 其中,m,11为图像帧的分辨率。 如果背景图像是静止的,即不随时间发生改变,而具有运动目标的图像除了 运动目标区域的象素值发生变化,其余属于背景的部分,保持不变,这样的情况 是背景差分的理想情况。但是这种情况在交通流量的图像序列中是不存在的。基 本上,背景是个渐变的过程。所以背景差分的关键是选择合适的图像作为背景。 自从运动分析作为一个分支以来,从事这项研究的人员提出了一些方法来解决这 各问题。如最早的人工观察选择一幅质量好的图像作为背景;发展到间隔一段时 间更换一幅背景图像,以增加系统的自适应性。发展到目前,基本上建立一个自 适应的背景模型,所以,背景差分的关键在于背景模型的自适应更新。大部分的 背景更新的原理是基于如下的公式 E+1=E+[口I(1一M,)+口2^t】p, (2-28) 式中8t为当前背景的灰度值;D,为当前帧和背景的灰度差值;M为确定的当前 运动目标的二值化值:a,,a,为背景变化的快慢,是估计值。 此外,还有很多种方法考虑到了背景模型的自适应更新的问题,比如基于光 流量(optical now)的S&KB(Statistic&Knowledge—based Background Update)背景 更新算法‘3¨,这种方法考虑到了长时间的,渐变的环境因素,但是它只是用简 单的中数平均值来更新背景,对于一些细小的背景变化,如风的影响,树叶的晃 动等没有考虑,而且基于光流量的计算量很大,会影响系统的实时性效果。 通常意义上的背景差分虽然实现起来比较简单,但是自适应能力较差,一些 动态的变化和一些干扰没办法避免。 基于FPGA的视频图像检测技术的研究与应用 2.4.2直方图修正 图像的直方图就是图像中各灰度级的概率分布。 一般来说,图像在采集后经过线性量化,其光亮度直方图通常都明显地集中 在较暗的层次,大多数象素的光亮度都小于平均值。在这种图像中暗区的细节常 常看不出来。对这类图像进行增强的一种方法就是所谓的直方图修正技术,它对 原图像重新标定,使增强图像的直方图变为某种要求的形式。这种要求的直方图 形式可以是均匀分布的指数型或双曲线型。同理,对于那些曝光量过强的图像, 也可以通过直方图修正来增加图像的可视性。 直方图修正处理可以认为是一种单调的点变换g。=丁(石)(其输入强度变量 为Z,范围在五到兀一.,对应输出范围是g。≤g。≤g肼4),在给定输入概率分布 为p,(石)时,输出概率分布儿(既)符合所需要的形式。 对于黑白图像,其光亮度用灰度值表征,其直方图就是图像中各灰度级的概 率分布。一幅黑白数字图像的概率分布的离散公式为: p(J|}):生,k:O,l,…,三一1 玎 (2.29) 式中L为象素的灰度总级数,p(k)为第k级灰度出现的概率,‰为灰度值 是k的象素数,n为图像象素总数。 当变换前后图像大小不变(像素总数均为n)时,上述直方图修正变换式可表 示为g=丁(厂)式中f、g分别表示输入灰度值和变换后的灰度值,0≤f≤L—l, 0≤g≤M—l,M为变换后的灰度级总数。选定输出灰度直方图形式后,就可以 计算出输入图像直方图与要求的输出图像直方图之间的变换关系。为求此关系, 先要根据输入图像的直方图p(f)和希望得到的输出图像直方图P。(g),分别求出 它们的累积直方图c(门和%(g)。 ,L n、J ,气。 ∞( 七 ,D脚。匹脚 国卜 ^ ^^ 日 、尸。 ^ 叫聃+ 比/L介) 盯卜o 卜+甲% 基于FPGA的视频图像检测技术的研究与应用 然后,对每一个f选择一个g使C。(g)最为接近c(厂),即可求出灰度尺度的变换 关系g=r(f)。其计算量很小,效果令人满意。 直方图均衡化是使输出图像具有均匀分布的直方图,即所有灰度级概率相 等:p(g)=1/M。当图像大小不变(n不变时),其累积直方图为 %(g)=gP^(g)=g/M。用这种方法处理那些细节“隐藏"在暗区的图像,效果 最好。直方图均衡化的离散计算公式为 g-(M-1,砉鲁=竿知,。≤f m· 亿3·, 直方图双曲线化是考虑到人眼感光体对图像有对数或立方根响应而提出的。 在这种方法中,图像直方图由一定的变换函数修正,使输出图像的概率分布成为 双曲线形式。经过人眼的对数或立方根响应,结果灰度概率密度是均匀的。实质 上直方均衡化只在视网膜之后完成。 2.4.3图像的阈值二值化 在取出图像的几何学各种特征之前,必须进行阈值处理,即取出某灰度以上 或以下部分的处理过程。在实用的系统中,因为要求处理的速度高、成本低,所 以尽可能用信息量小的二值图像代替信息量大的浓淡图像进行处理。 2.4.3.1图像的二值化处理 一幅图像包括对象物体、背景还有噪声,怎样从多值的数字图像中只取出对 象物体,最常用的方法是设定某一阈值0,用0将图像的数据分成两部分:大于 0的象素群和小于0的象素群,例如输入图像为坟x,y),输出图像为g(x,y),则: 咖川:{嬲髦 p32, 若用灰度变换的方法来研究图像f(x,y),其灰度变换函数如图2.6所示。 基于FPGA的视频图像检测技术的研究与应用 输 出 图 缘 O H 图2.6二值化灰度转换函数 2.4.3.2阈值选择 在图像二值化过程中,闽值的选择采用阈值分割法,它是一种简单有效的图 像分割方法【351,它用一个或几个阈值将图像的灰度级分为若干部分,认为属于 同一个部分的像素是同一个物体。阈值法的最大特点是计算简单,在重视运算效 率的应用场合(如用于硬件实现)得到了广泛应用。 在上述的直方图统计算法中,已经介绍了将一幅图像按灰度级别的概率分布 进行统计。利用该特性可以将二值化图像中分割运动目标的阈值确定下来。60 年代中期,Prewitt提出了直方图双峰法。假定一幅图像是浅色的,其中有一个 深色的物体,如图2.7,物体中的深色像素产生了直方图上的左峰,而背景中大 量的灰度级产生了直方图上的右峰。物体边界附近具有两个峰值之间灰度级的像 素数目相对较少,从而产生了两峰之间的谷。选取两峰之间的谷所对应的灰度级 作为阈值T将能得到合理的物体边界。 图2.7双峰亘方图 寻找T的算法如下: 设灰度级为,。自1=2开始,直到,=L.I(L为最高灰度级),作:在Z’<,的灰 度级,’中,求取 △日L G)=珊擎{日(,’)一日9)) 』d (2—33) 在z。<朋勺灰度级,’中,求取 基于F?C,A懿视频图像检测技术筋研究与应用 胡只(,)-m川ax{H(Z')一日“)) (2·34) 求出AT-/。(殄脯尺(,)的最大值。此最大值对应得,取为阈值T。 当直方图的双峰较光滑时,上述方法简单实用。但是若在直方图的某峰内有 大幅度突变的谷时,上述方法将会得到不合适的阈值。一种解决办法是用两个正 态分布函数拟合两个峰,再求合成函数双峰间的最低点。 2。5本章小节 本章研究了从对摄像机摄取到的视频图像信号以及对其进行的数字预图像 处理方法和图像检测算法。指出当前视频图像处理算法分三个层次,其中图像预 处理是图像处理系统中最低层次、运算数据量最大、处理最为耗时的环节,对整 个系统速度影响较大,是图像识烈中的重要组成部分。 接着介绍了与本文相关的图像中级处理算法,如帧间相减法、背景帧差算法、 光流法、直方图处理、图像二值化等,这些算法处理的运算数据较小,算法相对 图像低级处理复杂。 通过对以上算法的研究和分析,依据FFGA技术并行处理速度快的特点,选 择适合与本系统的一系列算法,包括对真彩图像进行灰度转换,进行去噪声非线 性的中值滤波处理,降低图像处理的数据量,改善图像质量,有利于后期图像检 测减小误差,提高检测精度;通过背景帧差法、直方图统计与均衡化、图像二值 化和阈值分割,对预处理后的图像序列进行运动目标的提取。 基于FPGA的视频图像检测技术的研究与应用 第三章系统总体设计及相关技术 在视频图像检测中,根据被测对象的需要,系统要采集和处理的图像数据量 是很大的,对于由视频采集器、高速图像处理系统和图像检测系统构成的一个智 能视频检测单元而言,视频采集器是整个系统信息的直接来源,用于获取足够的 系统要处理的最原始图像,以及实现图像缓存和控制接口电路,确保将正确的图 像数据传给中央处理器进行下一步高级处理。目前的图像采集技术已经相当成 熟,基本满足多数场合采样速度的要求。所以,某种程度上讲,图像处理速度影 响整个系统的性能,成为整个视频检测系统设计的关键,高性能的检测系统对数 据处理设备提出了更高的要求。 3.1视频图像检测系统设计思路 本文以基于机器视觉的交通流量检测系统为背景来讨论视频图像检测系统 的设计。该系统利用安装于交通道路的摄像头作为前端采集设备,借助于处理器 对视频图像进行智能化图像处理,从中提取出较高精度的交通流量参数。并可在 系统获取这些检测信息后,现场计算出合理的交通灯配置时间,据此对交通灯的 切换频率做出相应调整,优化交通车流分配。 从系统实时性考虑,提高图像处理速度和性能的方法主要有两种,一是改变 图像处理算法,使算法更简单。但最为耗时的图像低级处理算法已相当成熟,其 运算复杂性也相对固定,所以改变算法同时又能保证精度是有一定难度的。二是 改变实现算法的手段。目前,实现图像处理算法的手段针对不同的应用需求主要 有以下几种:一、通用计算机;二、并行处理机;’三、数字信号处理器(DSP); 四、专用集成电路(ASIC)。这四种方法各自取得了一定的成绩,但也存在局限性, 下面分别介绍: l、通用计算机(PC) 基于通用计算机(PC)为中心的视频交通流量检测系统由工控PC机、视频 采集卡、操作系统平台、应用软件等构成。系统结构图如图3.1所示。 基于Flea的视频图像检测拄术的研究与应用 ≥堍裔嘏喇 q—]/视龋鬻篷#qil!!I!墨毯 图3 1基于Pc的视频检测系统结构示意图 图像由前端模拟摄像头采集,通过电缆或光纤等传输介质传送至插有视频采 集卡的PC服务器,视频采集卡完成模拟信号到数字信号的制式转换。然后,PC 服务器可以充分利用计算机的快速处理能力,对图像进行分析、压缩、存储和显 示等。它的优点是:(1)便于计算机集中处理;(2)提高了图像的质量与监控效率 (3)系统易于管理和维护。但它更存在着致命的缺点:系统工作的不稳定性和实 时性不好。目前,通用计算机是基于冯·诺依曼结构的,通过高级编程语言(c, c¨,FORTRAN等)编写程序代码,经过编译后转换成指令代码,每一条指令 代码又包括许多条微指令,每条微指令都需要好几个机器周期,这是目前国内视 频检测系统经常采用的图像处理手段。整个过程是单指令单数据的串行处理过 程,在很多情况下该系统结构上的局限性使它对低级图像处理不能够满足实时高 速的要求。因此,基于通用计算机,采用高级语言编程,它适合各种图像处理算 法的验证,适用于一些实时性要求不高的场合。 2、并行处理机 在许多场合下,单个CPU不能够实现实时数据处理的时候,采用多个CPU 同时工作的并行处理为解决此问题提供了可能。各国学者在这方面作了大量的工 作,并已经研究出多种并行结构和编程语言,它克服了单个处理器在硬件上串行 工作的局限性,提高了系统的性能。 虽然对并行处理进行了大量的研究,但这个领域仍不成熟。处理单元负载不 均衡,并行算法编程困难,理论上并行处理所应达到的性能和实际性能相比有较 大差距。 3、数字信号处理器(DSP) 数字信号处理器是近几年发展起来的针对信号处理而设计的处理器,它的内 基于FP(;A的视频图像检测技术的研究与应用 部采用专用硬件实现一些数字信号处理常用的运算,所以它进行这些运算速度非 常快。如乘h口(MAC)运算只需要一个时钟周期(流水线满的情况)。随着应用的需 求,DSP发展十分迅速,如TI公司的TMS系列,从2X到8X系列,从定点到 浮点,功能型号非常完善。现在许多高端工作站为提高系统性能而增加DSP模 块,采用DSP作为协处理器。但是从根本上,DSP只是对某些固定的运算提供 硬件优化,其体系仍是串行指令执行系统,并且这些固定优化运算并不能够满足 众多算法的需要。使它的使用受到限制。 4、专用集成电路(ASIC) 专用集成电路是针对于某一固定算法或应用而专门设计的硬件芯片。许多图 像处理算法采用通用处理器和DSP来实现难以满足速度需要,而必须采用专用 集成芯片(ASIC)来实现,在各种算法实现中ASIC是最快的。但是,ASIC在实 际应用中也有其缺点t设计周期长,造价昂贵且风险高。ASIC从设计到应用需 要较长的时间周期。因属专用硬件所以需求数量较少,成本也就非常高。由于 ASIC是为专用目的设计的,当算法改变就要重新设计芯片和硬件电路。所以由 ASIC构建的图像处理系统,缺乏灵活性。 应用到现场交通的视频检测系统要求图像处理速度快、适应性强,还要有高 的性能价格比,分析以上几种设计方法可见,各自都存在缺点,难以满足要求。 而微电子技术和集成电路制造技术的飞速发展为实现高速图像处理系统提 供了新的思路和实现方法。大规模可编程逻辑器件FPGA是当今应用极为广泛的 可编程专用集成电路(ASIC),利用它用户不仅可以方便地设计出所需的硬件逻 辑,而且可以进行静态重复编程和动态在系统重配置,使系统的硬件功能可以像 软件一样编程来修改,从而可以实时地进行灵活而方便的更新和开发,大大提高 了系统设计的灵活性和通用性。与DSP处理器相比,FPGA有其明显的优势, 如图3.2所示,DSP的体系是串行指令执行系统,执行乘加操作需要N个时钟完 成,而FPGA采用并行的工作方式,一个时钟可以进行多个乘加操作。因此如采 用功耗强大的数字信号处理器DSP,对于常规图像处理(如图像增强)其运算简单 (如直方图统计只有累加)但运算量大。例如:一幅512×512的数字图像大约有 25 x 104个像素,进行直方图统计时就要累加大约25 x 104次,用DSP来控制完 成显然非常耗时且浪费巨大。既要节约资金、降低成本、又要减少体积、降低功 基于FPGA的视频图像检测技术的研究与应用 耗,提高性能,增加集成度,前述器件均不合适,而FPGA正好可以解决这些问 题。 FPGA器伟 (扦行工作方式) 圈围圈…围 围圈圈…圆 圈围囤…囤 圆圈困…围 困圈圈…围 』L 1个8亏锌并行操作 图3.2 DSP处理器顺序工作方式与FPGA并行工作方式说明图 基于此考虑,本文将采用FPGA技术设计构建视频图像处理及检测系统并应 用在交通流量视频检测上。 3.2 FPGA/ASIC介绍 ASIC(Application Specific Integrated Circuits)及可编程ASIC的出现与迅速 发展,使数字电子系统设计发生了一次革命,设计者由购买分立器件搭建系统转 变为设计自己的具有知识产权的专用集成电路(ASIC),这使整机系统变得有更 高集成度,更快的速度,更高的稳定性和保密性等一系列优点。其中发展尤其迅 速的是FPGA(Field Programmable Gate Array)。现在的电子行业竞争异常激烈, 在最短的时间内以较低开发成本推出新产品,迅速进入市场是至关重要的。FPGA 的出现,就非常适合这种需要。利用FPGMASIC设计的电子系统,已深受电子 系统设计人员和电子系统生产厂家的青睐。 现场可编程门阵列(FPGA)是在专用ASIC的基础上发展起来的,它克服了专 用ASIC不够灵活的缺点,与其他中小规模集成电路相比,其优点主要在于它有 很强的灵活性,内部逻辑功能可以根据需要进行配置,电路修改和维护方便。目 前FPGA的容量已经超过百万门级,这使FPGA成为解决系统级设计的重要选 基于FPGA的视频图像检测技术的研究与应用 择方案之一。 FPGA通常包括三类可编程资源: (1)可编程逻辑模块 可编程逻辑模块是排列规则的实现基本逻辑功能的单元,它遍布整个芯片。 由于实现的逻辑功能难易不同,所以可编程逻辑块的规模大小差异很大。 (2)可编程输~输出模块 可编程输入/输出模块完成的功能是连接芯片与外部封装,通常分布于可编 程逻辑模块的四周。 (3)可编程内部连接 可编程内部连接是一些各种长度的连线和可编程的连接开关。通过对它的配 置将内部各个可编程逻辑模块、可编程输~输出模块连接起来,实现系统逻辑 功能,构成用户电路。 可编程逻辑模块和可编程互连资源的构造主要有两种类型:查找表类型和多 路开关型。查找表型FPGA的可编辑逻辑单元是由功能为查找表的SRAM构成 函数发生器,由它来控制执行FPGA应用函数的逻辑。SRAM的输出为逻辑函 数的值,由此输出状态控制传输门或多路开关信号的通断,实现与其它功能块的 可编程连接。多路开关型的FPGA的基本构成是一个多路开关的配置。利用多路 开关的特性,在多路开关的每个输入接到固定电平或输入信号时,可实现不同的 逻辑功能。大量的多路开关和逻辑门连接起来,可以构成实现大量函数的逻辑块。 由于FPGA具有集成度高、处理速度快且执行效率高等优点,在数字系统的设计 中得到了广泛的应用。 美国Altera公司是世界上最大的PLD供应厂商之一。Cyclone系列芯片是该 公司推出的低价格、高容量的现场可编程门阵列(Field Programmable Gate Array, FPGA)器件。该系列芯片以其较低的价格、优良的特性及丰富的片上资源在消费 类电子、计算机、工业和汽车领域得到广泛的应用。 Cyclone系列FPGA是Altera公司中等密度的FPGA产品,基于Stratix架构, 采用1.5V、0.13微米、全铜SRAM工艺,覆盖门数从5万门到30万门,主要有 EPlC3、EPlC4、EPlC6、EPICl2和EPlC20几种型号【361。该芯片逻辑资源丰富, 逻辑单元数量最大可达20060个,内置M4K嵌入式阵列块(EAB),最大RAM —— 茔±!!坚盟型苎型堡堕型苎查盟堡塞里堕旦 数位288Kbits,可以达到200MHz的工作频率。该系列还具有多时钟系统所必需 的锁相环(PLLs)路:用于DDR SDRAM和FCRAM(Fast Cycle RAM)的双 倍速率传输接口;支持包括311Mbps低电压LVDS接口在内的多种UO标准;支 持66MHz、32位的PCI标准;支持多种IP核;支持采用低成本串行配置器件(如 EPCSl、EPCS2等)对FPGA进行配置。Cyclone系列FPGA平面布局如图3 3 所示。 图3.3 Cyclone系列FPGA平面布局(EPlC6) 3.3 FPGA软件开发工具 随着电子制造技术的发展,可编程器件纷纷超越百万门级,设计者面临的产 品性能与设计效率的挑战也越来越大,因此必须合理选择各EDA厂家提供的软 件开发工具来加速设计,才能在较短的时间内设计出高效稳定的产品。根据上文 所述FPGA设计流程与功能划分,EDA工具主要分为设计输入工具、综合工具、 仿真工具、实现与优化工具和辅助设计工具等五类13”㈨。 QuartuslI 5.0是Akera公司新版本的FPOA设计软件,界面直观、友好,支 持Altera的全系列芯片,为FPGA设计提供了最高教和最快速的实现途径,与传 统高密度FPGA设计流程相比,其设计效能显著提高。QuartuslI集成的EDA开 发工具可以分为两类.一类是Altera自己提供的软件工具,另一类是其他EDA 厂商提供的软件工具,后者统称为第三方工具,Quartusll中集成了与这些设计工 具的友好接口,可以直接调用这些开发工具。 (1)设计输入工具 基于FPGA的视频图像检测技术的研究与应用 设计输入是工程设计的第一步,常用的设计输入方法有HDL语言输入、原 理图输入、m核输入等。QuartuslI集成的输入工具主要包括文本编辑器r(Text Editor),原理图编辑器(Schematic Editor),IP核生成器(Megafunctions/MegaWizard) 等,其中常用的文本编辑器还有Ultra Edit,其也可以支持彩色语法显示。在 QuartuslI中适当使用IP核输入能大幅度减轻设计工作量,提高设计质量。 (2)仿真工具 在FPGA设计流程中,设计仿真包含在设计过程的每一环节中,以保证设计 的正确性。QuartuslI集成环境中可以调用ModelSim仿真工具来进行仿真。 ModelSim是业界最流行的仿真工具之一。其主要特点是仿真速度快,仿真精度 高,不仅可以完成设计的功能验i正(RTL级),也可实现逻辑综合后的门级仿真以 及布局布线后的功能与时序验证。ModelSim支持VHDL和Verilog HDL的混合 仿真以及TestBench测试平台的仿真,图形化界面友好,而且具有结构、信号、 波形、进程、数据流等窗口。在仿真时可以编写HDL激励文件或执行组模式方 式。在仿真过程中可以执行性能分析与代码覆盖分析。这些功能给设计者带来很 大的方便。 (3)实现和优化工具 QuarmsII集成的实现工具主要有约束束编辑器(Assignment Editor)、逻辑锁 定工具(Logic Lock)、布局布线器(Power Fit Fitter)、时序分析器(Timing Analyzer)、 布局规划器(Floor plan Editor)、底层编辑器(Chip Edit00、设计空间管理器(Design Space Explorer)和检查设计可靠性(DesignAssistant)等。 (4)辅助设计工具 QuartuslI集成的辅助设计工具主要有编程文件生成工具(Assembler)、下载配 置工具(Programmer)和Power Gauge(功耗仿真器)。Assembler是用于完成FPGA 配置文件的生成。Programmer用于对FPGA下载配置。Power Gauge用于估算设 计的功耗。 除了上述的软件开发工具外,常见的软件工具还有:Synopsys公司的FPGA Express,Mentor公司的Leonardo Spectrum两款综合工具和Aldec公司的Active HDL,Cadence公司的Verilog.XL诱款仿真工具。 在本课题设计中,除了选择QuartuslI软件作为设计工具外,鉴于ModelSim 基于FPGA的视频图像检测技术的研究与应用 的优越性能和丰富资料,采用ModelSim 6.1b作为仿真工具。 3.4 FPGA的设计流程 完整的FPGA设计流程分为电路设计与输入、功能仿真、综合、综合后仿真、 实现、布局布线后仿真、配置下载与调试等主要步骤,它与传统的电子系统设计 流程对比如图3.4所示,可以看出在FPGA系统设计流程中,任何仿真或验证步 骤出现问题,只需要根据错误定位返回到相应的步骤进行更改或者重新设计。而 在传统电子设计流程中,则需要硬件系统调试,软件测试,然后论证方案和算法, 如果出现错误,改动起来相当麻烦。 FPGA系统设计流程 爹了”,学鬃琵证爿系统级构建蟹繁 争 独立于硬件的系统行为评估和 设计,系统仿真 传统电子系统设计流程 缈””…”’7“…1 ’’软件设计与调试 图3.4 FPGA系统设计流程与传统设计流程对比 3.5基于FPGA的视频图像检测系统设计方案 鉴于上述FPGA的功能特点,本系统的图像处理和检测采用的芯片为Cyclone 系列中的EPlC6Q240C8型号(240-pin PQFP封装),原因为:(1)Altera公司的 QuartuslI开发环境非常友好、直观,并提供了多种针对Cyclone芯片的IP核, 为整个系统得开发提供了极大的方便;(2)该FGPA片内逻辑资源、IO端口数和 基于FPGA的视频图像检测技术的研究与应用 RAM容量处于中等,等效门数在十万门左右,速度快,可以满足本系统需要, 且有一定的升级空间。(3)现有以该芯片开发的实验装置和完整的外部接口,缩 短开发周期。 软件开发工具采用QuartuslI、ModelSim与MATLAB相结合的方式进行系统 验证与仿真。 本系统处理的图像是RGB真彩色图像,它是经过外部摄像头采集的8位RGB 的原图像,经过FPGA的转换与运算,变成FPGA容易处理的黑白灰度图像。 所以,在FPGA运算过程中使用8位数据,其灰度级为0到255之间;图像视场 大小空间为:256x256,即每行有256个象素,共有256行,则视场内共有65536 个象素数据。 本系统的硬件结构框图如图3.5所示。 图3.5系统硬件结构框图 系统工作过程如下:摄像头对外界景物摄像,输出RGB24位图像信号,图 像数据为了解决异步时钟域之间传输数据问题进入FIFO(先进先出存储器)缓 存,等待FPGA处理。同时可将图像数据存入高速RAM存储器。为了便于FPGA 处理,必须把24位的RGB图像转换位8位的黑白灰度图像,再对图像进行滤波 等预处理消除图像噪声,最后利用运动目标检测算法识别目标,输出检测结果信 息。 基于FPGA的视频图像检测技术的研究与应用 3.6本章小结 本章首先分析研究了视频图像检测技术,针对传统基于PC构架和DSP处理 器的视频检测系统的弊端,并从可靠性、稳定性、实时性和开发成本等因素考虑, 提出基于FPGA的视频检测系统的高速处理的设计方案。并确定了以新一代高性 能的Cyclone芯片作为系统的核心处理器,然后讨论了其相关技术包括FPGA技 术介绍,FPGA的结构特点及其开发流程,为设计提供了技术基础和工具。根据 所选芯片的结构特点,综合了FPGA软件工具开发环境好等原因,设计基于FPGA 的视频图像检测系统的大体方案和硬件结构框图。 基于FPGA的视频图像检测技术的研究与应用 第四章基于FPGA的视频图像检测系统设计与实现 本章重点阐述以Altera公司的Cyclone系列芯片EPlC6Q240为核心器件, 构建一个视频图像预处理和目标检测系统的主要过程。该系统接收视频信号输入 格式为R、G、B的灰度级为8bit的三色分量图像。对图像数据进行存储和预处 理操作,如噪声消除,滤波,图像分割等,然后将预处理后的视频数据送入检测 ● ● ● 系统进行目标检测与识别。 4.1系统功能框图与设计 本系统采用FPGA芯片作为中央控制器控制整个视频信号处理过程,可以将 FPGA系统划分为以下几个模块:异步FIFO(先进先出)模块、图像空间转换 模块、图像帧存读写控制模块、图像预处理模块和目标检测模块。FPGA系统内 部各模块整体框图如图4.1所示。 FPGA系统 图4.1 FPGA系统功能模块结构图 系统各模块功能简要描述如下:(1)异步FIFO模块主要解决数据的缓存和异 步时钟的问题,使用异步FIFO可以在数据采集的时钟频率与FPGA系统的时钟 频率不同的情况下准确地传输实时数据。(2)图像空间转换模块完成图像数据由 RGB空间转为灰度空间,将数据由24位压缩成8位,便于后期图像处理的存储 和处理。(3)图像帧存控带4模块完成与系统SRAM存储器之间的读写操作。(4)图 像预处理模块读取一帧图像数据,对其进行底层大量运算的图像低级处理,如噪 声消除、滤波等。(5)目标检测模块根据前期系统处理的图像采用背景帧差、图 皋于FPGA的视频图像检测技术的研究与应用 像二值化以及虚拟线检测算法识别图像中的目标,并做出输出指示,为后端的控 制处理提供信息。 本系统利用图像文件模拟仿真视频图像输入源,并做了图像文件与VHDL的 接口,使得FPGA系统可以利用计算机图像文件进行处理和检测,将得出的结果 结合Matlab可以直观地看出经过该FPGA系统处理后的图像效果。该系统的工 f1巧虎秤夫致为:通过Matlab读取图像文件,得出R、G、B三个灰度级为256的 H像m阱教拱i,并保存为}.dat文件存于计算机中作为VHDL的测试激励文件, 再调用VHDL的TEXTIO文本文件操作将章.dat文件读入FPGA系统作为图像数 据的输入源,经过系统的图像处理和检测后将结果及中间图像的输出成幸.dat文 件并保存,最后用Matlab导入数据并还原成图像查看结果。 该FPGA图像处理和检测系统可以按照设计功能良好的工作,并得出准确的 结果,下文中对系统内部各模块的具体功能和实现过程进行介绍。 4.2 FIF0先进先出模块设计 .I.2.1异步FIFO的时钟解决方法 FPGA设计的主要原则之一就是同步化设计,即对所有时钟控制器(如计数 器、RAM等)都采用同一个时钟来控制。但在实际的应用系统中,随着设计规 模的不断扩大,~个系统中往往含有多个时钟。数据不可避免的要在不同时钟域 问的传递,完全同步化设计就成为难点问题。本系统考虑到该问题的存在,设计 用异步FIFO的缓存模式来解决时钟同步统一的问题。视频输入设备的采集频率 与FPGA系统采用的晶振频率通常是不一致的,当视频数据从采集设备传入 FPGA时便出现了异步时钟域的问题,为此需要找到保持系统稳定,JIl页利完成数 掘传输的方法。 不同时钟域之间数据传递的最重要问题就是亚稳态(Metastability)f,,]题【401。当 数掘信号通过两个时钟域的交界处时,将会分别由这两个时钟米控制信号的值。 此时如果两时钟信号的敏感沿非常接近并超过了允许的额度,将出现数据信号不 稳定的情况。因为在数字集成电路中,每个触发器(Filp-flop)都有其特定的建立 (Setup)时间及保持(Hold)ttqf自l。输入信号不得在时钟上升沿前后的建立时间及保 持时间内改变数值。当一个信号被寄存器锁存时,如果信号和时钟之间不满足这 基于FPGA的视频图像检测技术的研究与应用 个要求,触发器的输出端的值是不确定的,并且在未知的时刻会固定到高电平或 低电平。这个过程称为亚稳态【4I】。异步时钟和亚稳态如图4.2所示,图中clka 和clkb为两个异步的时钟。 dat. ,1 鲥at L 图4异步时钟和亚稳态 — —.{/、L . .一 钺—、 a 翮阳厂]. m.阳.阴一 一1.一一一 前一个clka时钟域信号adat在太靠近新时钟域系统时钟clkb的上 在电传播不准确的信号数值,造成逻辑错误,从而对整个系统产生比较大的 升沿存时不能收敛成正常的稳定状态。这个亚稳定状态的输出信号bdat会 保持,触发器输出信号bdat便进入亚稳定状态,并且在此时钟的下一个上 升沿了数值,并被抽样。因为dat信号没有满足新时钟域内触发器的建立 危害 步时钟域之间传输数据的方法通常有三种: 时钟同步单元中采用两次同步法; 用握手信号机制; 用异步FIFO进行数据缓冲: 种方法进行分析,从中选择采用异步FIFO解决该问题。 法:系统中存在两个异步时钟clk—a和clk—b,如果高频率的时钟 需要分析握手协议和应答信号有效持续的时间,才能确保采样数据的正确 不到率时钟的两倍,所以该方法不满足。 频时过处理后可以作为触发器的使能信号。本系统的假定条件高频率时钟达 大于率时钟的两倍的话,则设计者可以使用频率高的时钟作为采样时钟。低 机制:握手信号机制是异步系统之间通信的常用方法,但在设计时 基于FPGA的视频图像检测技术的研究‘j应用 性。这样会增加系统的逻辑复杂度并且影响传输速度,使用该方式不太合适。 异步FIFO方式:FIFO是一种先进先出电路,其使用一个双端口存储器存放 数据,数据发送方在一端写入数据,接收方在另一端读出数据,能够协调好两个 时钟域的工作,满足频率高的要求。异步FIFO是具步时钟接口电路一种简便、 快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传 输实时数据。在本系统中,可利用LPM宏功能模块方便快速的搭建FIFO器件。 FIFO是一种先进先出存储器,在FPGA设计中经常被用到,主要用来缓冲 数据和隔离时钟或相位差异。访问FIFO时仅需要读写线和控制信号线,而不需 要地址线,因此利用FIFO实现采集数据的缓存具有接口简单、读写方便的优点。 FIFO的存储介质是双端口RAM,所以读写操作在两端可以同时进行。FIFO按 照输入输出口控制时钟可分为同步FIFO和异步FIFO。 同步FIFO的读写时钟来自于同一个时钟源,而异步FIFO的读写时钟采用各 自独立的不同时钟。同步FIFO由于只有一个时钟,所以对双端口RAM中的数 据容易确定,因而设计结构较为简单。异步FIFO由于采用不同时钟,要确定FIFO 中数据量相对比较复杂,需要仔细考虑满、空标志位。 本系统考虑到接口时钟的不同,采用异步FIFO进行设计。图4.3是一种较 为通用异步FIFO的设计框图f4引。 写数据=~二,一一 …~≥二^二二’,? 堙数据 I ’ 厂…—j扮制信号 ;让控翩信q 一 …j {iI写产黜地!I赶:墨E逻馓i、圈.?蔓…哆1雾,峨、;1 毳若昙磊丢 f.:i。|..画堡垫毒!竺i0!.凌…生娥逻址辑{ll 弓时钟! I } ; I落时l巾 一r一’!.. ’I ■_一h一一.…..。‘■…i{..……..:f{.一_ : !. t~蕊二i : 1 一一~一一一…,●p 薯。,澄际老1_~’I一… 满/几哥喊.严重j芝鞋l 。t/凡哥拿 { · 图4.3异步FIFO设计框图 从图中可以看到整个系统分为两个完全的时钟域:读时钟域和写时钟域。在 写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地 址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互 比较产生空/满标志。 £f FPGA的视频图像椅测拄术的研究S“用 4.2.2异步FIFO的FPGA实现 AiteraCyclone系列FPGA苍片内部有着丰富容量的M4K嵌入式RAM单元, 可以利用这些EAB在FPGA内部构建异步FIFO模块,这一点也是当初硬件选 型时考虑的原因之一。将异步FIFO集成到FPGA的内部,从而避免了专用FIFO 芯片带来硬件设计上的诸多不变,提高了系统的稳定性。 本系统采用Quartusll自带的参数化模型库LPM(Library of Parameterized Modules)进行设计。LPM参数化模块库是优秀的版图设计人员和软件人员智慧 的结晶.也可以称之为软核(Soft IPcore)。具体地讲,一些模块的各种参数是由 电路设计者为了适应设计电路的要求定制的,通过修改LPM器件的某些参数, 从而达到设计的要求.使用LPM设计出来的电路与结构无关。设计者在利用LPM 宏单元进行设计的同时不用担心芯片的利用率和效率。作为EDIF(电子设计交换 格式1标准的一部分,LPM被许多EDA软件所支持,如本文用到的ModelSim软 件。 Quartus 11软件中提供了五种FIFO宏模块,本设计中选用lpmfifo+来构成 异步FIFO。选择MegaWizard Plug-In Manager栏可以产生异步FIFO,如图t 4 所示。 H帅岫枷kFIFO耐 lB ,l№ H删d唧dn叫目BR印be? 11024 ·1 w耐o Oo删_酣acam蜘愀h‘∞岫_dw如如flF口’ r YD峨啦≈雠mh埘 *曲d如h№●Ik目Ⅱd口帼v硎j口d_w4蜘■Itot酬÷ 8警嚣镳篇翟兽:舞::锬裂舞I””“。 ~●抽月阳d诎lⅫ呐W口e∞ ‘NMol忱d咄…州≈怫h口觚甜dHer哪bh_de州d6州 r Yh_盹_●斜tHheⅢ日d々od女kmao‘o№栅ch1"删Wh口be鲥”dDd·w埘r州州d利o&H自城响be口H"e{归‘” 唑型苎J!型I:燮l坚:I型 图4 4 LPM创建的FIFO 基于FPGA的视频图像检测技术的研究与应用 下面将对设计给以描述: (1)异步FIFO具有8位数据输入端口和8位数据输出端口,深度为1024,其 中data[7..0】为数据输入口,q[7..0】为数据输出口;输入端151由写时钟(wrclk)¥[1写 使能(wrreq)控制,输出端口由读时钟(rdclk)和读使能(rdreq),读写时钟在上升沿 触发,读写使能信号高电平有效。具有3个固定的标识:rempty(FIFO空标志)、 wrfull(FIFO满标志)和wrusedw‘【9..O】,将wrusedw【9—0】中最高位取出来作为 FIFO半满标志。 (2)采用Cyclone内部M4K单元构成,总共使用227个LUT单元和两个M4K 资源。 异步FIFO读取数据一端是在FPGA内部,所以实现比较方便,在QuartusII 中对异步FIFO接口进行了功能仿真,图4.5为该FIFO的仿真波形。 图4.5异步FIFO的功能仿真波形 从功能仿真波形图中可以看出wrclk写时钟低于rdclk读时钟,即数据进入 FPGA的速度应该高于数据采集的速度,使得数据不会丢失,并通过FIFO按照 先进先出的顺序将存入的数据读出。当wrreq发出写申请时,在每个wrclk的上 跳沿写入FIFO数据,而当rdreq发出读信号时,在rdclk时钟的上跳沿读出FIFO 数据,看到01h、02h、03h等数据已经缓存到FIFO里,数据准确的在不同时钟 域传输,符合设计要求。 4.3图像空间转换模块设计 4.3.1图像色空间 所谓的色空间是真实颜色的数学表示.它和人类的色调、饱和度、亮度等视 觉感观没有直接的联系。最通用的色空间有RGB、YUV、YCbCr等。这些色空 间都可以从摄像仪和扫描仪提供的RGB信息推导获得。 基于FPGA的视频图像检测技术的研究与应用 RGB彩色模型中的图像由三个独立的图像平面构成,每个平面代表一种原 色。三个图像在屏幕上组合产生合成的彩色图像,这样,当图像本身用三原色平 面描述时,在图像处理中运用RGB模型就很有意义。大多数用来获取数字图像 的彩色摄像机都使用RGB格式。 本系统设计的输入图像的色空间为RGB空间,为了使信息量降低,信息处 理更加简洁方便,‘且只需要较少的存储量和较小的数字总线带宽,因此将RGB 空间转换到灰度空间,转换后的图像有利于处理和滤波,以及后期的检测。 4.3.2灰度转换原理 灰度图是指只含有亮度信息,不含色彩信息的图像,就像我们平时看到的黑 白图片:亮度由暗到明,变化是连续的。因此,要表示灰度图,就需要把亮度值 进行量化。YUV图像中的Y分量能完全表示出一幅灰度图。在灰度级为256的 图像中,通常O表示最暗或全黑,255表示最亮或全白。 ’1 RGB转灰度图像的运算公式为:Gray=R*0.299+G*0.587+B幸0.114 而在实际应用中,特别是数字信号处理系统中,希望避免低速的浮点运算, 因此将其改为整数运算。注意到系数都是3位精度的小数,我们可以将它缩放 1000倍来实现整数运算算法,即Gray=(R木299+G·587+B宰l 14)/1000 : 对于FPGA较低级的运算系统来说,为了减少系统资源占用率和提高系统运 算速度,除法运算使用移位寄存器实现,因此,将公式中的/1000换算为/256, 这样除法运算只需要一个8位的移位寄存器。公式改为: Gray=(R幸77+G木1 50+B幸29)/256=(R木4Dh+G幸96h+B木l Dh)/1 00h 4.3.3硬件设计与实现 根据以上的简化公式给出设计原理框图,如图4.6所示。 基于FPGA的视频目馕捡a4拽¥∞”究与庙用 Gray 幽4.6实现转换方程的结构原理图 从图中可以看出.R、G、B三个8bit值首先进行常数乘法,然后由~个三 输入16bit加法器进行加运算,将结粜送入16bit移位寄存器右移8位以后得到 最终结果。整个系统为16位运算系统,计算过程只需要几个时钟就可以完成操 作。 用VHDL硬件描述语言对颜色空阳】的转换设计进行文本输入和描述可以使 用层次性设计的方法来实现。顶层文件调用下级例化元件,下级的例化元件包括 实现常数乘法的底层例化元件即乘法器和加法器,以及16位移位寄存器。 需要注意的是,在进行加法和乘法操作时,先把输入的8bit信息转化成无符 号数,然后转变成整数进行计算。计算完成后,再转变为sTD_LOGIC—VECTOR 类型。这些处理可以很轻松地通过调用库函数的方法来进行。在该设计中采用的 精度足8bit。为了提高操作的精度,可咀采用改变常数乘法器系数的方法,比如 设计中采用的精度为16bit时.灰度转换方程为: Gray-(R+306+G+601+B+117)/1024爿R+132h+G+259h+B+75h)/400h 该设计在ModelSim6 Ib软件下的仿真波形如圄4,7所示,输入信号为仔、碴、 fb.输出信号为fgray。 鍪 糕懿嚣融酸 闰4 7在ModefSim6Ib下的仿真渡形 为了更好地看到处理效果,本文设计了VHDL与MATI,AB的接口,通过该 接口可以看到经过灰度转换以后的图像效果。图4 8(a)为原始输入的彩色图像: 基于FPc^∞税额囤悼检测拄术的研究5应用 图4 8(b)为MATLAB实现该算法后的图像;图4 8(c)为FPGA实现的灰度转换后 的图像。通过与MATLAB计算的灰度转换函数比较,我们可以看出用F'PGA的 灰度转换算法实现的图像效果与IVlATLAB图像的效果是一致的。 雪 ∞原始输入目像 雪 (b)MAlLAB裹度转换圉像(c)FFGA灰度转换圈像 图4.8MATLAB图像结果比较 4.4圈像帧存控制模块设计 4.4.1圈像帧存接口设计 从外部采集到的数字视频流经异步FIFO先进先出电路后,时钟信号统一为 FFq3A芯片内部的时钟,在FPGA内部实时处理数据。系统需要构建帧存储罂以 保存得到的图像数据.为后靖图像进一步的处理做好准备。本系统采集的数字视 频图像大小为128×128,图像数据的宽度为8位,所以一帧图像的大小为 16KX8bit位,即16KB。 可用于数字图像存储的外部存储器有很多种,如动态存储器SOP,AM、DP,AM和 静态存储嚣SRAM等。SDRAM和DRAM属于动态存储器,容量大、价格便宜,但速 度比SRAM慢,而且由于结构上的特点在使用时需要定时刷新。FPG^中没有SDRAM 刷新控制器,所眺需要设计刷新电路,其时序比较复杂,给系统设计带来难度且 不能保证效果。SP,AM器件存储速度快、时序相对简单,容易控制,不需要专用 接口,构成的存储系统比较稳定.其缺点是价格较贵、容量小。目前,随着sR^H 容量不断增大和价格不断下降,在一些实时图像处理系统中,将快速SRAM设计 .53. 基于Flea的视频图像检测技术的研究与应用 为图像帧存越来越普遍。 针对本系统存储容量不大的特点,采用ISSI公司型号为IS61C6416AL芯片 SRAM作为图像帧存,设计出SRAM控制器对外部SRAM进行读写操作。FPGA 将采集的图像用FIFO器件接收,当半满以后由处理器转移到数据RAM中,这 样可以实现边处理边接收,达到更高的处理速度和效率。 IS61C6416AL芯片是一种高性能的SRAM,其容量大小为64K×16bit,满足 一帧图像数据的存储要求;最大功耗为175mW,低功耗时的最快处理时间为12ns, 满足系统时钟频率要求。它有16根地址线(A0-A15),16根数据线(I/00-I/015) 以及五根控制线CE、oE、wE、LB和UB。它是个16位的存储器,高8位数据和 低8位数掘的访问通过LB和UB的组合进行访问,因此,也可以将其看作是一个 128Kx 16bit的存储器。在电路设计时,只需将存储器的控制引脚和数据、地址 信号引脚连接到FPGA的IO上即可,设计的主要难点在于读、写时序控制模块的 编写。 图4.9为SRAM控制器的总体设计图。可以看到,对SRAM的访问主要分为SRAM 地址产生模块、帧存切换控制模块和SRAM读写控制模块三个部分。SRAM地址产 生模块主要用于产生读写SRAM的地址信号,帧存切换控制模块用于两帧图像切 换存储,SRAM读写控制模块产生访问SRAM的读写控制信号。 外 系 图4.9 SRAM控制器的总体设计 4.4.2 SRAM地址产生模块 当输入的视频信号经过数据采集系统,如果得到的图像数据不加处理就直接 摹f-FPGA的视频图像检测技术的研究与应用 写入存储器中,则存储器中的图像数据会产生紊乱而不是原始图像的一帧数据。 后端系统读取该帧图像数据进行处理时,就需要对寻址方式加以调整,从而造成 数据传输、寻址的烦琐。因此有必要在数据存储时对存储器按地址递增或递减进 行操作,减轻数据读取的负担。因此图像数据存入帧存储器时需要对写地址进行 处理。 ’系统承袋罔像的大小为128 X 128,则一帧图像的大小为16KX 8bit,即16KB, 访问存储一帧大小的有效寻址的地址线为14根,而芯片总共有16根地址线。考 虑到SRAM的存储方式,系统采用两个8位二进制计数器作为地址发生器,计数 器计数从低位OOH到高位FFH递增,计数的范围是00H-一FFH,两个计数器分别 代表图像矩阵行、列的地址,两组8位计数输出组合成SRAM的16位地址输入, 则一帧图像按照图像矩阵的行列地址进行存储,这样方便图像的存储和行列的控 制。当一帧图像数据存满后计数器清0,重新开始。存储单元的内容为该输入图 像象素的灰度值。 ≮m、1地址发1i器足用~个叫addrgen模块实现的。它产生SRAM存储器的地 址输入信lL其VttDL语言描述如下: library ieee; use ieee.std—logic一1 1 64.all; use ieee.std—logic_unsigned.all; entity addrgen is port(CLK,EN,R,SD:in std_logic; DIN: in std—logic_vector(7 downto O); ADDROUT: out std_logic—vector(7 downto 0); COUT:out std—logic); end addrgen; architecture addrgen——one of addrgen is begin process(CLK,EN,R,SD,DIN) variable q l:std—logic_vector(7 downto O); 。 begin .,’ 基于Ff’GA的视频图像检测技术的研究与应用 ifR=…1 then ql:=(others=>…0); 一异步清零 elsif SD=…1 then ql:=DIN;_-异步置数 elsif EN=’l’then if clk’event and clk=’l。then ql:=q1+l; end if;’ end if; ifql=”1 1 1 1 1 1 1 1”then COUT<=’1’; else COUT<=…0; end if; ADDROUT<2q l; end process; end addrgenone; 4.4.3帧存切换控制模块 考虑到SRAM的容量较大,为了不浪费存储容量的资源,将SRAM分为两 块进行存储SRAMI和SRAM2,它们之间是交替工作的。当SRAMI接收图像 空间转换模块送来的数据时,SRAM2中的图像数据由后端图像预处理模块进行 读取进行处理。两块存储区各自完成上步操作后,进行切换,SRAMl中数据被 读取,SRAM2写入图像数据。FPGA连接的SRAM两块存储区分别交替作为 FPGA处理结果的存储单元和后端处理过程的数据源,完成两级流水线的处理过 程,这样以流水线的方式实现了不同算法的并行操作,缩短了图像处理的时间, 提高了系统的效率。 为了协调好两块帧存区的工作,不致出现数据丢失或者数据覆盖现象,系统 帧存切换模块通过乒乓机制来管理。为了保证在同一时刻,一个帧存处于读状态, 另一个处于写状态,模块设置了读互斥锁和写互斥锁。 在系统初始状态,帧存SRAMI处于等待写状态,帧存SRAM2处于读结束 状态。采集过程开始,两个帧存的状态转换控制流程完全相同。下边以帧存 SRAMl为例介绍的帧存控制机制。帧存切换乒乓控制机制状态转移图如图4.10 皋于FPGA的视频图像榆测技术的研究与心用 图4.10 SRAMl切换乒乓结构状态图 !!发刊思想如下: 1、采集过程末丌始,帧存SRAMI处于等待写状态,并获得写互斥锁: 2、收到一帧图像的开始信号,采集过程开始,帧存SRAMl进入可写状态,接 收图像数据; 3、一帧图像的采集过程结束后,帧存SRAMI进入写结束状态,并释放写互斥 锁; 4、在写结束状态下,若此时帧存SRAM2拥有读互斥锁,则帧存SRAMI保持写 结束状态,否则获得读互斥锁,进入读等待状态,并在下一个控制周期切换 到再次读等待状态: 5、帧存SRAMI在再次读等待状态下,如果帧存SRAM2处于写结束状态,则 帧存SRAMl释放读互斥锁,进入读结束状态,否则进入可读状态,并处于 图像预处理模块的控制下: 6、在可读状态下,若图像预处理模块请求帧存储模块控制帧存,则帧存SRAMI 进入读结束状态,并释放读互斥锁; 7、在读结束状态下,若帧仔SRAM2寄fj育写互斥锁,则帧存SRAMI保持读结束 状态,否则帧存SRAMI进入等待写状态,并获得写互斥锁。 按照上述状态转移图,用VHDL语言编写出帧存切换控制模块。模块在FPGA 内部硬件实现后可以控制SRAM的两块存储区,使它们协调地交替工作。 4.4.4 SRAM读写控制器模块设计与仿真 基于FPGA的视频图像枪测技术的研究与戍用 SRAM读写控制器模块的主要功能是严格按照SRAM芯片规定的时序对其 进行读写操作。在图像采集和图像数据转换时,SRAM控制器按照地址产生模块 产生的地址和写信号将图像数据写到SRAM存储器中去;当采集的图像需要从 存储器中读出时,便启动控制器产生读地址和读信号来实现。对SRAM进行操 作除了使用寻址信号外,控制器模块还需要三个控制信号的配合:片选信号CE、 输出使能信号OE和写使能信号WE。控制器数据线接口为双向口i写数据时是 输出口,读数据时是输入口,需要进行三态控制,才能保证对SRAM进行正确 的读写操作。同时,为了准确无误地将数据写入和读出,必须避免SRAM芯片 在地址不稳定期进行读写操作,因此读和写需要保持一定的周期数目,根据 SRAM芯片的规格而定。SRAM读写控制器模块、SRAM地址产生模块和帧存 切换控制模块便构成了完整的图像帧存控制模块。 IS61C6416AL的写时序波形如图4.11所示【441,其写周期为12ns,f肝.表示写 周期,‰百表示片选信号有效到写周期结束的允许时间;,。缈表示地址信号有效 到写周期结束的允许时间;It,川表示写信号脉冲的宽度。 |鑫 A n一 雕 一阵 、 ,’ ( .. jr VALID ADDIiE¥¥ )< t啦 ) 孓 ~睚 :!列 一舭 一Ⅲ 一L 一旧 D~ 叭 - t^w ¥∑ 卜孓 - f 夕 ts^ · tFBV." ’ 3 \ ·卜_t喇E—叫一 阻-A帅酐哪 斟帅h= [ 7 —卜一t:zwE—+ , 、 I_l-~tsD————- ·一_D+I 米弘‰削。>}< ∞-:£Wa 图4.II SRAM写时序波形图 写SRAM的时序要求为:在地址有效的期间内,片选信号CE为低电平; WE由高电平转为低电平,且WE为低电平的时间内,写入SRAM的数据要保 持稳定:输出使能信号OE为高电平。其中UB,LB分别为高字节控制信号 基于FPGA的视频图像检测技术的研究与应用 (D8.D1 5)和低字节控制信号(DO.D7)。 IS61C6416AL的读周期也为12ns,其时序波形如图4.12所示。f盯表示读周 期:,盯E表示片选信号有效到输出数据有效的时间:,腓表示输出使能到输出数 据有效的时间。 0E eE L马.UB DOLT —..弋J < · tAA - 。 ≥∈ tOHA * * L.一一t。。E 卜 \I¨ 、 —— 一tI_ZOE_ tHZOE 鲁 tLZCE t虬E' I十tHzcE+ N大 。戈 tLz8 l:, 一ta^—+ _一 HI-G-I.Z ( ) (DATAV札to t423 ,- ) 图4.12 SRAM读时序波形图 读SRAM的时序要求为:当地址信号稳定后,片选信号CE由高电平变为低 电平,且片选信号低电平的结束位置不能超过地址有效结束位置;输出使能信号 OE在片选信号为低的过程内保持一段时间的有效状态:写使能信号WE在读过 程中始终为高电平。 以上各时间参数均有不同的约束值。对SRAM进行数据读写时,要严格按照 以上时序波形编写程序,否则不能实现正常的读写操作。 在认真分析了上述时序波形后,采用有限状态机(FSM)设计SRAM的读写控 制器模块,定义了三种状态:空闲(IDLE)、读状态(READ)、写状态(WRITE); 并设计为同步设计,有异步复位信号:模块定义了完成读和写所需要的周期数目 (周期数目可以由用户根据所用的SRAM器件自行规定);当地址选通执行写操作 且己写完,或者执行读操作且已读完,这时对处理器发出确认信号(ack)。由于篇 幅限制,下面仅给出模块中用VHDL语言完成的SRAM操作的部分状态机程序, 其他状态类似。 begin if reset=’l。then current state<=idle;cnt<=(others=>~0); 基于FPGA的视频图像柃测技术的研究与应用 elsif clk’event and clk=’I’then case current state iS when idle=>if as n=一0 then f肝~1 i then current—state<=read; else current—state<=write; end if= end if; when write 2>i f(cnt2WR_CNT-1)or(as—n=…1)then current state<=idie; cnt<=(others=>一0); else cnt<=cnt+1: end if. when read=>if(cnt=RD—CNT-1)or(as—n=~1)then current state<=idie; cnt<=(others=>~0); 一读控制信号 else cnt<=cnt+1: end if. when others=>null; end case; end if; SRAM控制模块在QuartusIl5.0中可以成功地被综合成硬件电路,以下给出 该模块在Quartusll5.0中的功能仿真波形,如图4.13所示。仿真过程描述女H-F: 系统启动时,地址计数器从0000H开始写入数据5555H,rw为低电平(为写状态), 地址时钟信号(addrclk)有效,表示开始对SRAM进行写操作,此时输出使能ou【一en 为高电平有效。当rw转为高电平(读状态),在地址时钟信号跳变下,开始对SRAM 进行读操作,此时有写使能信号we—en为高电平有效,数据线输出qout为5555H, 表示数据已从SIUM中读出。 .60. 基于FPGA的视频图像检测技术的研究与应用 I_o 址扣 clock 蛆争 ●‘._I 毖一 囝dih 出扣 缈 Tellt VdⅡ●-t O Pt B0 _0 )" j 门广1一n九.一.一.一n几广l几一九一冗.:亢广{.11.一九几.九.n.亢.亢闩几n 7_一 n一.f H叩帅 :0000 一l ]广1 l0 王舀P lO I 盔一 ’d l0 屯多 ●d由clk l0 -j UUUUU UU n 门 n t矿 固.d打·lo M咖0 二亘互3[亟[Xj亟=[亘互了000^x 0005 x∞0B x o -ck 童0 广] 广1 广1 n U 0000 x 广] ∞ ■1 ‘ ’l r] . 凹 ll ] n r11 广] 广] 广] 广] I 七多 t≯ nlb II ] 厂] 厂] 广] 广] ll ] 广] 门 广1 广1 广] 广] 广n] nn 广] n t岁 讪 幽 囝dour I1 H口Z2 搿焉再Ⅺ烈写剪币蜀0强n疡叮秀芦硪烈丽嚣1匾啊磊嘲5"Sc-j5 x 易 田qou( H Il : Ⅱ X U 0001 _)( 广1 .厂1 厂1 广1 Z'7.ZZ sS 图4.1 3 SRAM读弓控制模块功能仿真波形 从波形图中可以看出,SRAM可以正常的读写数据,且无论是读操作还是写 操作,控制器都在两个时钟周期内完成,读写控制器模块读、写时序波形符合设 计要求。 4.5图像预处理模块的FPGA实现 在第二章中己对图像预处理的几种算法进行了比较和分析,从滤波效果来 看,中值滤波是一种比较适合于本设计的一种预处理技术。由于FPGA具有完成 一定算法的能力,且处理速度快,再加之中值滤波算法相对固定,没有很复杂的 计算,因此用FPGA来实现中值滤波算法具有很明显的优势。在实现过程中,采 用原理图和VHDL模块相结合的方式来进行设计。 本设计针对传统的中值滤波算法的缺点,提出了一种快速的适合于FPGA的 中值滤波算法,以下将介绍该算法的实现以及性能分析。 4.S.1一种快速中值滤波算法的研究 传统的中值滤波算法在实现时一般是对窗口内的象素值进行冒泡法排序14¨, 排序的过程,就是对象素作比较和交换的过程。序列中象素之间的比较次数是影 响排序速度的重要原因。 假设滤波窗口为n×11,则需要设置一个大小为Ii×n的寄存器单元,将窗口 内的数据先存入寄存器,然后经过排序运算,求出寄存器中数据的中值。在进行 冒泡排序中,只要求出中值即可停止排序,即进行到求出第(n×n+1)/2个值时就 基于FPGA的视频图像检测技术的研究与戍用 可以停止,比如3×3的窗口进行到求出第5个值就可以停止排序。因此,比较运 算的次数为: n-I一掣)=i3、2 (n x n-I)+(n x n-2)+...十(n x n2|) 三(门2×门2一1) 这样,用传统冒泡算法求出滤波窗口为nxn的中值,要进行8、 ’次二数 比较运算。对于3x3窗1:21而言,比较运算次数为30:对于5x5窗口,比较次数 为234。由此可见,随着窗口尺寸的增加,运算次数急剧增大,需要的比较器也 增大,使得处理速度变慢,需要的寄存器容量也变大,这对资源的占用产生很大 影响。而在文献…中提出的一种二维中值滤波的快速算法很好地解决了这个问 题。 本课题中根据FPGA硬件资源丰富,可以并行处理的优势,针对3 X3的窗 口,采用了一种快速并行中值滤波方法【461。此方法通过牺牲芯片面积,采用并 行处理和巧妙设计,避免了大量比较操作,节省了时间,算法复杂度降低。 快速二维中值滤波算法的设计思想是将二维滤波阵列分解为一维进行计算, 首先将每一列按照升序排序,然后取第一排的最大值、第二排的中值、第三排的 最小值,最后取这三个值的中值。即得NT这个3×3窗口内象素的中值。算法过 程如图4。14所示。 二按每 ==一=列=进=行=升 ==序=排哥列 m。删>当reed=50 匕◇ c===岛 驭最大值 max=40 取中值 取培小值 [====号> rain=70 图4.14 3x3窗口快速中值滤波算法流程 按升序对每一列进行排序,所需要比较大小的次数为3x3=9次,第二个步骤 所需比较大小为3x3=9次,最后一次求中值比较三数需要3次比较运算,因此 此算法需要9+9+3=21次比较大小的运算,而传统的排序算法需要30次比较运 算。 将该算法扩展到n×n的滤波窗口,一个含有n×n个象素的二维阵列简化为 n+1个仅含n个象素的~维阵列进行取中值运算。将算法三个步骤的比较运算次 数相加,得到如下公式: 基于FPGA的视频图像检测技术的研究与应用 旦』竺二堕.门+兰』业.门+兰』竺二堕:兰型!.(2甩+1) 2 2 2 2 型堡尘.(2疗+1) 、 可以看出,用同样窗121进行一次快速中值滤波只需要进行 2 7次运 算,为三阶多项式,比原来的多项式少一阶,因此运算次数大大减少,处理速度 明显提高。对于5×5窗口,比较的次数为llO次,比原来的次数减少了一半。表 ● ● 4.1详细比较了这种快速算法与传统算法所需要的比较次数,从表中可以明显地 看出,随着滤波窗口维数的增加,传统算法所需要的比较次数急剧增加,而快速 算法所需要的比较次数有明显的减少。 传统算法 快速算法 表4.1不同窗口所需要的比较运算次数 3×3 30 21 5×5 234 110 7×7 900 3l 5 9×9 2460 684 4.5.2 FPGA实现及性能分析 本系统采集大小为128x128的图像,即图像数据为128行,每行有128个象 素点。采集时图像已经通过图像空间转换模块的处理,产生8位的灰度图。当采 用3x3窗口进行滤波时,需要从连续的三行中分别读取9个象素数据。总体设计 方案如图4.15所示。 图像数据 Din[7:0 图像数据输出 Dout[7:0l clk rst 图4.15 快速中值滤波器总体设计方案 由图4.16可知,整个系统设计分为三个模块:3x3窗口生成模块,快速中值 滤波模块和行列计数器模块,图像数据从Din[7:0]输入,为8位的灰度值,其格 式是按照图像矩阵每一行串行输入。整个系统有统一的时钟信号clk和复位信号 rst,处理后的图像数据输出为Dout[7:0],col和row为当前处理象素的行列位置。 其中快速中值滤波模块的基本单元是双输入分类器(Dual Input Sorter),’它 是由两个子模块组成,分别是数值比较器(magnitude detector)以及输出交换器 基于FPGA的视频图像柃测技术的研究与应用 (output swapper)。数值比较器用来判断两输入值的大小并发出控制信号。输出 交换器则根据控制信号判断是否需要交换两数,从而完成两个数的排序分类,得 出较小的数和较大的数。 如图4。16所示,三输入分类器(Triple Input Sorter)是由三个双输入分类器 组成,在每两个流水线缓冲器之间有一个双输入分类器。其作用是将三个数进行 分类排序,它是快速中值滤波器的基本单元。’ A ' 流水 B - 线缓 冲器 ' 双输入 分类器 ' 拯 ● 流水 ■ 线缓 冲器 流水 线缓 冲器 ’ 双输入 分类器 ' r 卜 C - 图4.16三输入分类器结构图 图4.17快速中值滤波器的结构原理图 因此,整个快速中值滤波器的结构原理图如图4.17所示,串行视频输入经过 存储单元FIFO缓冲器进行开窗操作,按照上述算法利用三输入分类单元排序, 最后还原成串行视频输出。 由于篇幅原因,下面给出多次调用到排序的子程序的VHDL源代码,详细代 码可以查看附录。 procedure compare ( in l: in std_logic_vector(7 downto 0); 基于FPGA的视频图像榆测技术的研究与应用 in2: in std_logic—vector(7 downto 0); in3: in std_logic_vector(7 downto O); mln: out std logic—vector(7 downto 0); mid: out sta logic—vector(7 downto O); max: out std_logic_vector(7 downto 0) )is variable minreg,midreg,maxreg!std—logic-vector(7 downto 0); begin if(in l<in2)then minreg:==in l; midreg:=in2; else minreg:=in2; ● ● mlOreg:2in 1; end ie if(in3<minreg)then maxreg:=midreg; midreg:=minreg; minreg:=in3; elsif(in3>midreg)then ● 一 maxreg:5in3; else maxreg:=midreg; midreg:=in3; end if; min:2minreg; mid:2midreg; max:=maxreg; end compare; 采用Altera公司的Cyclone系列的EPIC6Q240C8芯片,在Quartusll5.0和 .65— 基于FPGA的视频图像榆测技术的研究与应用 ModelSim SE 6.1b的软件平台上用VHDL进行编程并综合及仿真。在Quartusll 5.0上所得的中值滤波器波形仿真如图4.18所示,图中clk为基准时钟信号,a11, a12,a13,…,a32,a33为3×3窗口象素值,filout为3x3窗口输出的中值,由 图可知,在每个时钟上升沿,对窗口象素值进行快速中值运算,并输出该中值到 filout上。 ■-i 珍 clk 必 团t11 V 囝112 ∥ 固a13 ∥ 围.21 ∥ 团啦 _ 田正3 ∥ 囝dl ∥ 团·驼 .tO 固·∞ D 固filout V.1n·“ 12 eS“ L2皓n‘ 』 H0 广]广]广]厂]广]一.广]广] M 10 M∞ 皓 X 10 X 15 X 20 X H 10 10 X 加 X 加 H 20 20 X 弼 X H 00 M 11 M∞ M 11 H弱 00 1 0l X 02 X 03 X 1l X Z2 X 33 X 44 X s5 X ∞ X TT X 明 X ∞ X 22 X 11 X 33 X s5 X TT X 55 M 00 图4.18 中值滤波器波形仿真结果 在Quartusll5.0上对该模块进行综合,图4.19为综合后的RTL视图。 、、 『I J/ 一、 矿 ^ 一 ^ r ^ V D —t7 1 —V —a r 五—V 1 —p 叫1 j —V 昂 1. ] r =疋 r —疋 V 1 r 叉 r 1 r —丁 “\ 吾 j ,/ 、、~ r —互 __—— —∥ —i ●—— 1/ 叫^ 工 -1.-" jL L[ =L r —五 L—r _ / ————j L—I ———1 ;I. ;’ r ^ y r d。 r 禧I。I I丸 堕!—__r10B[51 E}丧}㈣而习|;1 %:8 3904NHz 摹f FPGA∞*频目像检W技术白勺研RS鹰月 ,00 ” 卯 125 150 ,175 , 加。 嘲4 20快速中值滤波算法时序分析 通过Quartos软件对3x3窗口的传统中值滤波和快速中值滤波进行比较,从 而验证快速中值滤波的n。确性和快速性。软件通过编译及时序仿真,给出了详细 的报告结果,通过报告町以看出快速中值滤波算法的优点表现在系统资源占用率 和允许的最大时间频率(finax)上。表4.2为报告中两种算法的主要参数,表格 中数据来自软件报告。 表4 2传统算法和快速算法的参数比较 个数 比例 个数 比例 传统算法 1048 快速算?去 由表4.2所示,传统滤波算法使用的逻辑单元(LE)有1048个,占系统资 源的17%,而快速滤波算法只需要216个,占系统资源的3%。可以看出在系统 占用资源上快速算法有明显的优势。传统算法能达到的最大时钟频率为 139 04MHZ,则处理帧128×128象素的图像需要约0 12ms,而快速算法则可 以在处理时间E减少大约~半。究其原因,主要在比较次数降低,以及器件使用 的寄存器减少.使快速算法大大降低了系统资源占用率和提高了数据运算处理的 速度。 通过VHDL与MATLAB接口可以看到经过滤波咀后的图像效果。图4 21(a) 为加过噪声的输入图像:图4 2I(b)为经过MATLAB中值滤波算法处理后的 图像;图4 21(c)为FPGA实现的传统中值滤波后的图像;圈4.21(d)为FPGA 实现的快速中值滤波后的图像。通过与MATLAB计算的滤波函数比较,可以看 出该快速算法的FPGA处理效果图与MATLAB处理及传统中值滤波算法处理结 .67. 粜致,并显得更加清晰 麟 《T FP6A的视频目慷捡W技¥日勺研究5M月 豳 aj带嗥声袖^图像 憾 b)MATLAB中值瞎波图像 憾 c)FP(r^日寸传统十*谴碹目愠 (dj rPGA的快速中值滤渡目像 圈4.2I 吲像滤波的结果比较 4.6图像检测的FPGA实现 运动图像检测的目的是从视频序列图像中将变化区域从背景图像中提取出 来并谚i别出对系统感兴趣的参数。运动检测的方法如前章节中所介绍的,有时间 差分法,背景帧差法和光流法。光流方法时间开销比较大.且抗噪性能差,在复 杂背景F也不适用;时间差分在运动实体内部容易产生空洞现象.并且很难精确 地得到运动物体的轮廓信息。而背景帧差的优点在于速度快,并能够提供完整的 运动区域信息。综上考虑,本文基于简单、易于实现并结合智能交通系统的交通 流量检测的实际特点出发,采用FPGA模块化结构,选用背景帧差的检测算法束 对运动图像进行分析。以下给出针对本系统的图像检测算法的结构原理图,如图 4 22所示。 罔4 22图像检测系统结构原理图 基于FPGA的视频图像检测技术的研究与应用 图像检测算法主要由三个部分构成:背景帧差i直方图统计与均衡、二值化 和目标分割及统计。输入的序列图像分为背景帧和当前帧的灰度图像,图像通过 背景构建得到不含前景运动目标的背景图像,然后与当前帧图像相减得出仅含目 标的灰度图像,对该图像进行直方图统计设定阈值和直方图均衡化,再经过二值 化,标记出运动物体的形状,统计参数并识别是否有运动目标。以下具体阐述该 算法是如何在FPGA上实现的。 4.6.1背景帧差法的硬件实现 由于本系统应用在智能交通系统领域中,图像研究的对象为交通道路中的运 动车辆检测,选择采用背景帧差法能比较简便地实现运动目标的检测。通过图像 转换模块和图像预处理模块后,进入图像检测算法模块,图像的输入格式为 128x 128的灰度图像,根据上述原理和公式,则只需设计一个将输入的两幅图像 的对应象素相减再去绝对值的运算即可。用VHDL程序实现如下: library IEEE; use IEEE.std_logic_l 1 64.all; use IEEE.std—logic—unsigned.all; entity MinusFrame is generic( vwidth: integer:=8); port( clk:in std_logic; RSTn:in std—logic; foreground:in std_logic_vector(vwidth一1 downto O); background:in std—logic~vector(vwidth·1 downto O); minus—out:out std—logic—vector(vwidth·I downto 0) ); end MinusFrame; architecture MFone of MinusFrame is begin process(clk,RSTn) .6q. —— !!!!!!!!!!!!!!!!!!!! begin ifRSTn20’then minus out<=(oI'HERS->一0); elsifcik’event and clk-11 then ifforeground>=background then minus out<2foreground·background; else minus out<2background-foreground; endif; endif; end process; end MFone; 由VHDL生成的例化兀件如图4 23所示。 图4 23帧差法例化元件图 从国中可以看}I{.nvidth为数据位数的宽度.在本系统中设置为8, foreground[vwidth Ol表示前景图像输入数据线,background[vwidth Ol表示背景图 像输入数据线,差帧结果输出为minus_out[vwidth…01运行后在Quartusll 5.0上 所得的波形仿真如图4 24所示。 ht.rm… lo∞n· 划…i… m Tj m-“…til n‘ sun 工习耍 图4 24图像差帧的波彤仿真图 4.6.2直方图统计与均衡化 直方图统计电路原理图如图4.25所示: 基于FPGA的视频图像检测技术的研究与戍用 图4.25直方图统计电路原理图 对要处理的图像,考虑到极端情况(所有象素灰度值集中在一个灰度级上)所 以每个存储单元必须是16位(216>128x128);图像共有256个灰度级,故需构造 一个256x16位的存储阵列用来存储统计结果。其地址为输入图像象素的灰度值, 存储单元的内容为该灰度值的象素数。当一个象素值输入后,相应地址的数值被 读出,送到全加器加l后再送入寄存器,然后再写入该存储单元。一帧结束后, 存储阵列中的数据即直方图统计结果。此结果可用于计算积累直方图或其他变 换,也可用外部存储器存储以备它用。从地址00H到FFH依次送出数据。下一 帧的场同步信号到达前,数据送完并清零1471。 直方图统计数据及处理的模块是由一个叫Histogram—Statistic的模块实现的。 主要完成在灰度直方图上,找出前景和背景形成双峰之间的最低谷即图像二值化 的闽值。根据直方图统计的原理,其VHDL描述的部分代码如下: variable intPeak,intlndx,intPeak2,intlndx2,intValley,intValleylndx:integer range 0 tO 255; //intPeak、intPeak2、intValley:峰值和直方图值 //intlndx:相应的灰度值 type memory is array(O to 255)of std—logic_vector(7 down tO 0); begin 基于FPGA的视频图像检测技术的研究与应用 process(clk) variable intGrayLevel:memory; //初始化双峰值 intPeak:=0; intPeak2:=O; //取得第一峰值 for intLoop in 0 to 255 loop if intPeak<=intGrayLevel(intLoop)then intPeak:2intGrayLeVel(intLoop); intlndx:2intLoop; end if; end loop; //取得第二峰值 for intLoop in 0 to 255 Loop if(intPeak2<=intGrayLevel(intLoop)and(intLoop/=intIndx)then intPeak2:=intGrayLevel(intLoop); intlndx2:=intLoop; end if- end loop; //取得双峰之间的谷值 intValley:。intSize; if intIndx2<intIndx then for intLoop in intlndx2 to intIndx loop if intValley>intGrayLevel(intLoop)then intValley:=intGrayLeVeI(intLoop); intValleylndx:=intLoop; end if; end loop; end if; .72. 基于FPGA的视频图像检测技术的研究与应用 输出intValley即为图像二值化的阈值,这样系统就实现了根据环境变化,自 适应选取阈值,进一步提高了图像分割质量。直方图均衡则是把输出图像的直方 图均匀分布,用此方法可以处理那些暗区的图像。 由第二章可知,直方图均衡化的灰度变换为 g=(M一·?砉鲁="_;M--1荟j以!,0.-</≤三一· 其中,n为图像中的总象素数,胆。是灰度级为k的象素数,L为输入图像的 灰度总级数,M为变换后的灰度级总数。 缈钆这样,上式可写作 对于本系统,一幅标准图像的象素数为128×128,输入图像和变换后灰度级 2丽毛‰, <纠 255 "· .。 :等熹圭九。,0<fg 即g≈去酗,眍/Q55 厂 即变换后的灰度值等于直方图累计结果(∑仇)除以64,除以64可以用移位寄存 七=0 器右移6位实现。 图4.26直方图均衡化电路原理圉 图4.26是直方图均衡化电路原理图,直方图累加是在直方图统计结果基础上 的进一步运算,地址发生器产生00H至FFH(对应于灰度级。一吨55)。从OOH地 址单元开始,读出数据到16位并行加法器,运算结果输入16位数据寄存器。下 基于FPGA的视频图像检测技术的研究与应用 一个地址的数据读出后送到加法器,上次运算结果也送入加法器,二者相加即得 到新的累加结果。对于二进制乘法,乘2即左移一位,乘28即左移8位。同样, 对于二进制除法,除2即右移一位,除28即右移8位。这样,可以用移位寄存 器来完成除法运算。 以输入图像灰度值为地址,,从查找表读出数据,即得到均衡化后的图像。时 序安排如下:每帧图像数据采集期间同时作直方图统计,进行直方图累加和均衡 并写入查找表。累加全部结束后,FPGA内部的存储阵列、寄存器、地址发生器 等都清零,只有查找表存储器不清零,当采集信号到来时,原始数据经过一定延 迟后,在查找表存储器中进行映射;其他被清零器件重新开始计算过程。 均衡化过程就是边累加边除以象素总数,其中最重要的是各灰度级上相同灰 度值个数的累加,以下给出了累加器的VHDL描述。 library ieee; use ieee.std—logicarith.all; use ieee.std—logicj 1 64.all; use ieee。std—logic_unsigned。all; entity add—acc is port(reset,clk :in std_logic; data :in std—logic—vector(1 5 downto 0); ace—out :out std—logic_vector(1 4 downto 0) ); end add_acc; architecture acc——one of add——acc is signal aa:integer:=O: signal hh:std—logic—vector(1 6 downto O); begin process(clk,reset,data) variable qq:integer; variable XX:integer; begin .74.. qq:=conv integer(data); ifreset=’1’then aa<=O: elsif elk’event and elk=’l’then XX:2qq+aa; ‘ aa<2xx; end i£ hh<=cony—std~logic_vector(aa,1 7); ace—out<=hh(1 6 downto 2); end process; end ace_one; 摹于FPGA的视频图像检测技术的研究与应用 4.6.3图像二值化和阈值处理 图像二值化的关键在于阈值的处理,在第二章的原理介绍中,阐述了四种阈 值处理的方法,针对利用FPGA硬件实现的可行性和实用性考虑,本系统采用直 方图阈值分割方法来确定图像二值化的阈值。直方图阈值分割方法的关键在于直 方图统计和均衡化,在上节已经介绍了该方法的硬件实现,这里主要给出图像二 值化的实现过程和关键程序。 由直方图统计选定的阈值MinusThreshold作为基准,将图像分为两大部分, 大于MinusThreshold值的区域为目标物体,小于MinusThreshold值的区域为背 景,若输入图像为f(x,y),输出图像为g(x,y),则 r 、I FFh. g‘x'y卜100h. f(x,y)≥MinusThreshold f(x,Y)<MinusThreshold 通过一个8位的数据比较器实现输入图像与阈值的比较,并将输出图像的相应象 素赋值成FFh或00h,形成一幅二值图像。用VHDL语言描述如下: library ieee; USe ieee.std—logic^1 1 64.all; use ieee.std logic_unsigned。all; entity image_binary is generic( .7S. 基于FPGA的视频图像检测技术的研究与应用 vwidth: integer:=8); port( elk:in std一 logic; RSTn:in std—logic; MinusThreshold:in std—logic_vector(7 downto 0);一阈值输入 image—in:in std_logic_vector(vwidth.1 downto O);一图像输入 image_out:out std_logic—vector(vwidth一1 downto 0) ); end image_binary; architecture ib——one of image_binary is begin process(clk,RSTn,MinusThreshold,image—in) begin ifRSTn=’0。then image_out<=‘‘00000000’’: elsif rising_edge(clk)then if(image—in>MinusThreshold)then image—out<=”i 11 1111l”; else image—out<=”00000000”; end if: end i£ end process; end ib one; 用Quartusll5.0软件产生的仿真波形结果如图4.27所示。 .76. 基于Ff,n的视频图像幢测技术的研究与m用 一;茹日蕊罐函i盈盈————●—●——■■■—■———■■—瞄曩曩曙霸嘲 ”^5terf…8V 11 T n。二U’…协。 4 44 us Inttrvd 4^3 u5 一 一 1_|到虱 日田口 一№i嚣篙 一v磊可笼~ ■E匿兰1鬻.蔓擎…:等.二雩.:粤~×单=1:l孚丑=需.j盟萼…固垄.= 圉4 27图像二值化的波形仿真图 通过VHDL与MATI AB的接口,将原图像用硬件处理后输出的【每1像数据导 入MAlLAB显示出来,图4 28为输入的原罔像、背景差帧图像咀及二值化处理 后的结果图像对比。 蔼■圈 a)原始输^图像 (b)背景§帻囤像 (c)=值化图像 圈4 28原图,背景差帧图和二值化实验结果图 实验表明.由于物体和背景有足够的对比度,通过阈值运算能有效地进行阐 值分割。 4,6.4运动目标检测算法的实现 在运动前景已经被提取出来的前提下,系统需要判断该图像中是否含有有效 目标,井给出最终判断结果的输出。由于本文的应用对象为智能交通系统中的交 通道路.视额检测的运动目标是交通干道上的行驶车辆.因此,针对该具体对象, 考虑到道路环境变化、车辆的阴影和颜色等因袭,本系统研究并采用基于虚拟检 测线的运动目标检测算法,它可以较好地避开以上环境因素,有效地降低检测的 茸错率。 对采集图像的虚拟线设置如图4 29所示,可以看出,虚拟线设置在屏幕中垂 直于车道的中心位置,其宽度占3个象素,确保能正确捕捉到车辆经过时虚拟检 测线上的象素值变化,检测线的长度及具体位置应该根据实际采集的交通路况图 像来定义 《f FPGA的视频图像&Ⅻ&术∞研R5应用 剖4 29虚拟检删线垃置 基于系统实时性的考虑,在视频图像中通过检测车辆轮廓来识别车辆的效果 小尽人意,而对于视频图像来说.系统感兴趣的只是位于检测标志线上的象素变 化,其他部分不予考虑,这样就简化了识别算法的复杂度。 虚拟线的状态为有目标和无曰标状态,分析虚拟线上象素的荻度变化规律nr 确定虚拟线状态。为了减少噪声和高频成分的影响,先进行虚拟线L象素灰度的 低通滤波,然后求平均偏差,平均偏差md(J)可用表示式描述如下: 卅一c,,=古喜1zc“,,一rc万1 ;西2专;刚’ 式中x(L,J)(L 1,2,……,、)为滤波后的虚拟线上N个象素的灰度值。尤车 时,州(j)很小,有车时md(j)较大(因为通常情况下车辆和道路之问有较大的对 比度)。其VHI)I语言描述的主要部分如F: library ieee; use ieee std logic l 164 all; use ieee std—logic—unsigned all; entity detectaim is generic( vwidth: integer:28), port( clk:in std logic; 基于FPGA的视频图像检测技术的研究与应用 RSTn:in std—logic; MinusThreshold:in std logic—vector(7 downto 0):=”00010101”;一15h AimThreshoid:in std logic—vector(7 downto 0):2”O l 1 00 1 0 1“;~65h detect—in:in std~logic vector(vwidth一1 downto O); aim—out:out std—logic end detectaim; architecture detectai m olle of detectaim iS signal aimBefore,aimCurrent:std—logic:2—0; signal aimcount:std—logic vector(7 downto O):5”00000000”; begin process(clk,RSTn,MinusThreshold,AimThreshold,detect—in) begin ifRSTn=’0‘then a‘im out<=。0’: aimBefo}re<=’0’: atmCurrent<=’0’: a‘lmcount<=”00000000”: elsif rising_edge(clk)then mmBefore<=aimCurrent; if(detect in>MinusThreshold)then aimcount<=aimcount+1: end if; if(aimcount>Aim’Fhreshold)then aimCurrent<=’1’: else aimCurrent<=’0’: end if. if aimBefore-’0’and aimCurrent=’lt then aim OUt<=’l’: .79· 基于FPGA,的视频图像榆测技术的研究与应用 elsifaimBefore=。l’and aimCurrent=。0’then aim—out<=’0’; end if; end if; end process; end detectaim one;‘ 其中aimBefore和aimCurrent分别表示前一帧虚拟线状态和当前帧虚拟线状 态,当aimBefore为‘0’、aimCurrent为‘l’时,表示当前帧有目标出现,而 aimBefore为‘l’、aimCurrent为‘0’时,表示当前帧无目标出现。aim out为 检测结果输出标志。 4.7本章小结 本章工作的核心是根据实时图像处理系统的总体结构,以图像处理与检测算 法为基础,使用Aitera公司的Cyclone芯片和FPGA开发工具QuartuslI及 ModelSim设计实现了视频图像检测系统。 对于视频采集部分,主要设计了FIFO帧缓存模块、SRAM读写控制器。其 中FIFO帧缓存模块解决了视频采集时钟频率与FPGA主芯片的时钟频率同步问 题,SRAM读写控制器模块实现了需要预处理的图像数据保存到存储器的过程。 对于图像处理部分,提出一种适合于FPGA的快速图像中值滤波算法,并给 出该算法的硬件实现结构图,应用VHDL硬件描述语言编程、实现,仿真结果 表明,快速中值滤波算法的处理速度较传统算法提高了50%,更有效地降低了系 统资源占用率和提高了系统运算速度,增强了检测系统的实时性能。 对于图像检测部分,研究设计了基于FPGA硬件结构的背景差分法、直方图 处理、图像二值化和阈值处理以及车流量检测等算法的硬件实现,并给出了部分 VHDL语言描述和硬件结构图,对系统的模块进行了功能和波形仿真,还利用 MATLAB做接口,将数据还原成图像用来直观的显示结果。 本章使用VHDL语言实现了改进的中值滤波算法以及图像检测算法,算法结 构简洁,节省资源,完全能满足系统实时处理的要求,具有良好的实用价值。 基于FPGA的视频图像检测技术的研究与应用 第五章系统仿真与分析 根据前章FPGA视频图像检测系统的总体设计,将系统分为两大部分,视频 采集和预处理系统为前半部分,图像目标检测系统为后半部分。在整个系统按照 设计方案要求实现了各个功能模块并对其VHDL行为仿真、分模块的时序仿真 和RTL硬件仿真之后,借助ModelSim的FPGA仿真工具和MATLAB软件的图 形处理函数进行系统级仿真与分析。 5.I测试向量输入的解决方法 考虑到本系统的硬件资源有限,本系统视频采集部分的设计采用仿真方式进 行,FPGA与视频采集模块的连接与控制省略,因此,视频图像不是从前端摄像 头采集得到,而是采用模拟仿真方式从计算机视频图像中载入FPGA。这样就遇 到面对测试向量数据庞大而难以实现的问题。 在数字图像处理系统的仿真测试中,如果采用完备性测试方法,那么所需测 试向量的数量将非常巨大,甚至无法实现;而采用测试向量波形图或者用VHDL 语言描述等常用方法,不仅仿真测试工作的效率低下,而且工作量巨大。一帧 128X 128的数字图像所产生的测试向量数量为128×128×8=131072。无论采用 完备性测试方法还是向量波形图或者VHDL语言描述的方法,由于测试向量的 数据极其巨大,采用这些方法都难以进行仿真测试。 针对这个问题,本文提出两种进行仿真测试的方法: l、 在输入端口前加一个预置的存储器,那么初始数据的输入就变成了该寄 存器的初始化。一般情况下,这些初始数据很容易用MATLAB软件经 过计算实现。QuartuslI中提供了两种寄存器的初始文件格式,.mif文件 和.hex文件。由MATLAB生成的数据可以方便的根据指定路径加载到 寄存器模块中。 2、 利用ModelSim仿真软件支持的VHDL测试基准(TestBench)编写系统 测试输入文件.vhd。图像数据从MATLAB软件转换成8位RGB数据, 并写入计算机文件.dat文件或.txt文件,再利用VHDL测试基准文件读 取.dat文件或.txt文件,从文件中取出图像数据导入FPGA系统,作为 FPGA系统的输入测试向量源。 基于FPGA的视频图像检测技术的研究与应用 基于本系统的图像数据输入格式为RGB彩色图像的考虑,采用第2种方法进 行仿真测试。 5.2 VHDL测试基准 VHDL测试基准(TestBench)是指用来测试一个VHDL实体的程序。VHDL测 .试基准本身也是VHDL程序.,它用各种方法产生激励信号,通过元件例化语句 以及端口映射,将激励喜好传给被测试的VHDL实体,然后将输出信号波形写 到文件中,或直接用波形浏览器观察输出波形。 在对一个实体进行仿真的时候,编写一个VHDL程序,在程序中将这个实体 进行元件例化,对这个实体的输入信号用VHDL程序加上激励波形,在VHDL 仿真器中编译运行这个新建的VHDL程序即可对前面的实体进行仿真测试。这 个VHDL程序被称为测试基准(TestBench)。 一般情况下,VHDL测试基准程序不需要定义输~输出端口,测试结果全部 通过内部信号或变量来观察和分析。特别注意,测试基准通常是不能被VHDL 综合器所综合的。 由图5.1可以直观地看出,在本系统的测试基准结构体中定义了被测元件的 模板,并通过组装与实际元件连接,然后利用元件例化将激励信号引到元件的输 入端,将元件输出端连到响应信号。本系统有5个输入信号源分别为:Clk(时钟 信号)、Rstn(复位信号)、Frame一“图像R分量)、Frame—g(图像G分量)、Frame—b(图 像B分量);有三个输出为:MinusOut(图像差帧输出)、Bin_Out(图像二值化输出)、 aim out(检测目标结果输出)。 frame r frame二g frame b 图5.I VHDLTestBench示意图 由于本系统的测试基准程序太大,考虑到篇幅问题,这里只给出部分的 基于FPGA的视频图像检测技术的研究与应用 VHDL描述程序及测试基准程序框架。 entity Testbenchlmage is 一定义该被测元件的测试实体(空实体) end TestbenchImage; arclhitecture i_tb ofTestbenchlmage is component image_tb generic( . vwidth: port( integer:28); 一被测元件的端口说明 Clk:in std—logic; 一端El数据类型定义 Rstn:in std—logic; Frame—r,Frame_g,Frame—b:in std—logic_vector(vwidth-1 downto O); Minus—out:out std—logic_vector(vwidth-1 downto O); Bin—out:out std—logic_vector(vwidth一1 downto 0); aim——out:out std——logic ); end component; 一测试向量(激励信号)及初始化 sl_gnal Clk: std—logic:2—0; signal Rstn: std_logic:=一0; signal Frame_r,Frame_g,Frame—b: std—logic—vector(7 downto 0):2(others2>’0’); signal Minus_out:std—logic_vector(vwidth-1 downto 0); stgnal Bin—out:std_logic—vector(vwidth-1 downto O); si gnal aim——out:std——logic; begin uut:imagetb port map( ~元件例化 Clk-->CIk,Rstn=>Rstn,Frame—r=>Frame—r,Frame—92>Frame—g,Frame—b2> Frame_b。Minus out=>Minus_out,Binout=>Bin out,aim out2>aim__out); .83- 基f FPGA的视频图像检测技术的研究L.j应用 (Frame—r,Frame—g,Frame—b产生激励程序省略) 一时钟激励产生 clk——gen:process begin clk<=~0; wait for 10ns; clk<=’l’: wait for 10ns; end process; 一Rstn复位信号产生 reset——gen:process begin RSTn<=一0; wait for 8ns; RSTn<=~1; wait; end process; end image_tb; 由描述可以看出,TestBench在产生激励时.可以利用任何VHDL的行为描 述机制来方便地进行:在判断输出响应是否满足预期输出时,还可以利用 ASSERT语句完成各种条件判断,并提示相应信息;利用组装,可以将对被测元 件指定不同的设计实现,如图5.2(a)所示。还可以利用组装,只要对被测元件分 别指定综合之前的描述和综合之后的描述,如图5.2(b)所示,然后就可利用VHDI。 提供的方便、强大的模拟机制【4引,用同一套测试向量来进行高级综合的模拟验 证。反映在描述中,只需改动一个组装语句,而其它部分不变。 f。…'_…。…··一‘-一 r‘’…·—…’_…‘-一·_一 基于FPGA的视频图像枪测技术的研究与应用 TestBench }t TestBench l (a)纽装不恿 (b)组装用于综合验证 图5.2 VHDL的组装示意图 5.3 TEXTIO功能 TEXTIO是VHDL标准库STD中的程序包(Package),它提供了VHDL与磁 盘文件直接访问的桥梁。TEXTIO定义了三种类型:LINE类型、TEXT类型及 SIDE类型。TEXTIO在程序包中定义了一些访问文件的过程(Procedure)。 TEXTIO提供的基本过程有: (1)procedure READLINE(文件变量,行变量),用于从指定文件读取一行数据到 行变量中。 (2)procedure WRITELINE(文件变量,行变量),用于向指定文件写入行变量所包 含的数据。 (3)procedure READ(行变量,数据类型),用于从行变量中读取相应数据类型的 数据,根据参数的数据类型及参数的个数不同,有多种重载方式,TEXTIO 提供了bit、bit~vector、BOOLEAN、character、integer、real、string、time数 据类型的重载。 (4)procedure WRITE(行变量,数据类型,写入方式,位宽),该过程将数据写入 行变量。其中,写入方式表示写在行变量的左边还是右边,其值只能为left 或right,位宽表示写入数据时占的位宽。例如write(OutLine,OutDma,left,2) 表示将变量OutData写入LrNE变量OutLine的左边,占2个字节。 5.4系统仿真测试 基于广PGA的视频图像检测技术的研究与应用 本系统使用TEXTIO和MATLAB来辅助TestBench进行数字系统仿真,方 案框图如图5.3所示。 图5.3仿真测试方案框图 5.4.1使用MATLAB生成测试激励文件 MATLAB是矩阵实验室(Matrix Laboratory)的缩写【49l,是1984年MathWorks 公司推出的软件,它是~种交互式面向对象的程序设计语言,集数值分析、矩阵 运算、信号处理和图形显示于一体,构成了一种方便、界面友好用户环境。经过 20多年的发展,MATLAB已经成为通用科技计算、图视交互系统和程序语言, 广泛应用于研究和解决各种具体工程问题。 图像处理中往往把数字化的二维图像作为二维矩阵来研究,基于矩阵的运算 的MATLAB很适合应用在图像处理应用领域。MATLAB6.5带有功能强大的适 应于图像处理的工具箱150】,例如图像处理工具箱、小波变换工具箱及数字信号 处理工具箱。MATLAB还提供了简便的函数调用来实现许多经典图像处理方法, 同时,还提供了对多种图像文件格式(如tif、bmp、jPg、pcx、等)读写和显示的 支持,这使得在MATLAB的集成环境中进行图像处理的实验模拟非常方便。 在该系统的仿真测试中,利用MATLAB对bmp图像文件的读写操作来生成 测试激励文件。测试激励文件包含输入信号的测试激励数据和输出信号的期望输 出数据,其数据格式定为.dat文件。 在MATLAB的开发环境中,通过编程可以生成测试激励文件。以下是生成 测试激励程序的核心代码: image=imread(’pic.bmp。); %读取图像文件 基于FPGA的视频图像检测技术的研究与应用 【Yn,Xnl=size(image); if=image(:,:,1); 龟=image(:,:,2); fb=image(:,:,3); fr=uint8(fr); fg=uintS(电);。 fb=uint8(fb); rid=fopen(’outfr.dat','W’); forj2l:l:Yn: for i=l:I:Xn %得到图像大小 %提取图像RGB分量 %将图像数据格式转换为8位无符号整形类 %指定测试激励文件的输出文件名 cnt=fwrite(fid,fr[jl[il); end; end; fclose(fid); rid2=fopen(。out_fg.dat’,~W); forj=l:l:Yn: for滓l:l:Xn cnt2=fwrite(fid2,fr[j】【i】); end; end; fclose(fid2); rid3=fopen(’out_fb.dat’,’w,); forj2l:l:Yn: fori=l:l:Xn cnt3=fwrite(fid3,frD】【i】); end; end; fclose(fid3); 产生的测试激励文件名称分别为Out—fr.dat、out_fg.dat、OUt~fb.dat,文件以图 .87. 《十FPGA的视频图像检驯技术∞Ⅻ%1 Jtwm 像矩阵数据的ASCII码表示,数值之叫以窄格隔开。进行仿真时,TestBench应 用TEXT[O通过运行读取方式读取dat文件中的图像数据并送入待测单元的输入 信号线上。 可以从MATLAB的工作区查看工作变量,图5.4为图像R分量的矩阵值: 图5.4图像R分量的矩阵值 还可以利用imshow0语句在MAT[AB中显示图像,例如imshow(fr)显示出 罔像R分量,如图5 5所示。 图5.5斟像R分置的显示图 5.4 2 TEXTIO的文件操作 在上述编写的测试平台程序中,图像信号(Frame—hFrame_g,Frame b)激威的 基于FPGA的视频图像检测技术的研究与应用 产生是利用TEXTIO实现的。程序的主要作用是调用TEXTIO读取测试激励文 件得到激励,然后将这些激励分别驱动到待测单元的输入端口;同时,TestBench 读取待测单元的输出结果,调用TEXTIO将仿真输出结果写入到文件。 以下是TEXTIO的核心代码(以图像R分量Frame r为例): fr_gen:process 一图像R分量激励产生 .file InputD:。text open read mode is”frame r.dat”: 一指定测试激励文件 variable DLine:LINE: variable good: boolean; variable DataR: integer; begin wait until clk=’I’and clk’event; …一一read the col—r data……… if col——r=0 then readline(InputD,DLine); end if; read(DLine,DataR,good); ifcol——r>l 26 then col r<=O: 一读出测试激励文件一行内容,得到激励 row r<5row—r+l; else col—r<=col—r+l; end if; ·—--···-·—···-output tO wire—-···-···-···-··-··-···· if(good)then framer<=CONV_SYD—LOGIC_VECTOR(DataR,8); 一读取值给信 号framer else assert false report”End of Reading Input File!”; end if; end process; .89. 基于FPGA的视频图像检测技术的研究}i应用 save.—BG:process 一仿真输出结果写入文件 file OutputD: text open write—mode is”MinusFrame.dat”卜指定仿真输出文件 variable OutDLine:LINE; variable DataMF: integer:20: variable space: character:=”; begin wait until clk=…1 and clk’event; WRlatch—MF<气me; if WRlatch MF then DataMF:=CONV_INTEGER(unsigned(MinusOut)); if DV BG=’l’and DV=’l’then write(OutDLine,DataMF); 一写入输出线值到文件的一行内容 write(OutDLine,space); if wrcol MF>1 26 then wrrow MF<=wrrow MF+1: else wrcol—MF<2wrcol—MF+I; end it if wrcol MF=l 27 then writeline(OutputD,OutDLine); wrcol—MF<:0; end it end if; end if; end process; 5.4.3测试结果与分析 在ModelSim提供的HDL仿真环境中,运行TestBench进行仿真测试,得到 测试向量波形(如图气.6所示)、系统仿真结果波形(如图5.7所示)和仿真输出结果 .90. #十Flea∞“鲕目镕*d&术的研究目应用 蕊i 文件MinusFrame dat、detect_arca dat、binary image.dat。 黼 蓥 图5.6测试向量波形图 蔫鬻一 a)系统采集输入圈像 {b)*景目∞ (c)差帧目住 一藉十F托^的税额圈誊捡蔫技术舳研究%Jt川 (d)一值化图像 fcl{仝涮缝区域图像 图5.8输入原图像与仿真结果图 l 圈5.9系统直观结掏圈 通过对椅测线E的有效象素值统计,可以判定检测结果.并输出到aim_out. 从阁5 7中可以看出.aim out输出有’0’变为’l’,说明系统检测到有运动目标}{{ 现。 系统还可以将仿真预期输出结果保存在测试激励文件或其他文件中. TestBench调用TEXTIO读取仿真预期输出结果.并和仿真实际输出结果进行对 比,然后自动判断结粜是否正确。在对VtlDL编写的处理器进行仿真调试时. 将包括指令类型、源地址、目标地址在内的指令保存成文本文件,TestBench调 用TEXTIO读取这些指令。同时,TestBench调用TEXTIO将结果及中间变量保 存成文本文件,以便调试和分析结果。 5.5 FPGA实验开发体会 Altera公司的可编程逻辑产品使用范围相当广泛,本课题中使用的是Cyclone 系列的FPGA。在学习了上丈所列出的Quartusll.ModelSim等FPGA软件开发 工具后,在实际的开发运用中对FPGA的设计流程加深了理解,有了一点收获。 在此对Altera公司FPGA产品开发步骤总结出自己的一点体会。具体的设计步骤 如下: 基于FPGA的视频图像检测技术的研究与J电用 (1)根据电路要实现的功能,用硬件描述语言设计好源程序。 (2)使用ModetSim进行功能仿真,导入设计好的源程序和TestBench测试平 台进行仿真,并保存生成的结果波形文件(幸.w10。用ModelSim进行仿真时,如 果设计中包含了FPGA厂商开发软件生成的IP核或直接调用了其基本器件单元 的参数化模型,则在仿真时需要设置厂家的仿真库信息,否则仿真不能进行。这 些仿真库描述了IP核和基本器件参数化模型的功能和时序特性。如使用Altera’ 公司的Cyclone系列FPGA及FIFO器件,则需要将Cyclone components.vhd(或.v) 文件设置或编译到工程项目的对应库中【39】。 (3)使用QuartusII根据Netlist进行布局布线,并进行时序分析。在使用 QuartusII前要做一些必须的设置,在Assignments工具Eda Tools Setting栏下 Simulation选项中选择ModelSim,并选择选项“run this tools automatically after compilation”。如果没有提前做这些设置,可以在Quartus做完编译布线后,做同 样的设置,然后运行EDANetlist Writer和Eda Simulation Tool。再根据设计要求 进行时序分析和引脚调整。 (4)使用ModelSim进行布局布线后仿真。因为在第三步对Quartusll提前做 了设置,因此在编译布线完成后,会在工作目录下生成ModelSim仿真所需要的 文件和库(ModelSim—work),在ModelSim中将产生的文件和库所在的文件夹设 置为当前目录,ModelSim work库会自动导入,新建工程会提示所用的 modelsim.ini文件,应是Quartus生成的,然后导入文件(包括TestBench),进 行编译,仿真的时候在library中添加Modelsim work库,在sdf选项中可以添加 Quartus生成的延迟信息文件幸.sdo,此时要注意作用域的选择。仿真完成后可以 将布线后的仿真结果与功能仿真的结果进行对比。一般情况下除了会有一定的延 迟外,输出波形基本不变。如果满足时序关系,便通过了布局布线后的时序仿真。 (5)通过专用电缆将生成的位流配置文件下载到FPGA芯片中测试设计,确 保实现后的设计能够按照预定的功能和恰当的时序正常工作。 由于FPGA器件的硬件特点,不同于传统风格的设计思路,其性能将会产生 较大的区别。在性能要求较高的情况下,甚至可能影响功能的实现。因此,采用 良好的VHDL语言设计风格是进行成功设计的一大重要保障。笔者在VHDL语 言设计输入时,总结出了以下几个注意要点。 基于FPGA的视频图像检测技术的研究与应用 1.减少关键信号通道的逻辑层次 信号每通过一个逻辑门,均会对信号产生一定的延迟,因此尽量减少关键通 道所通过的逻辑门的数量,可以确保在时序上要求较高的设计中满足系统对时序 的要求。这时应采用VHDL的优先级编码方法进行设计。 例l:temp<=important or signali and signal2 and signal3; iftemp2‘l’then signalout<=in l: else signalout<=in2; end if; 例2:if important=‘1’then signalout<=in l: elsif signall=‘1'and signal2=‘l’and signal3=‘l’then signalout<=in l: else signaiout<=in2; end if; 在上面的例子里,设计l中.关键信号important按照描述的方式,先与信 号signall进行或运算,然后依次与signal2、signal3进行与运算,这样在经过3 个门之后才能到达输出端,因此是最后到达输出端的信号。而在设计2中,关键 信号只经过一个门就到达输出端.因此可以减少关键信号的延迟,提高了系统的 性能。 2.共享硬件资源 资源共享可以在逻辑综合和实现时使用较少的逻辑单元实现特定的逻辑功 能。因为逻辑方程的实现可以有多种途径,应该尽量减少占用资源多的模块的产 生。如果设计不当,则会用更多的资源来实现同样的功能。在下面的实例中,设 计3将造成硬件资源的浪费,因为该设计将生成2个加法器,再将其结果通过选 择器选择出结果。而设计4可以较好地利用硬件资源达成目的。在设计3中,先 将输入信号进行选择,然后在进行相加。显然,加法器比多路选择器占用的资源 更多,所以设计4所用的资源较少。 例3-sum l<=signall+signal2; sum2<=signal3+signal4; .94. 基于FPGA的视频图像检测技术的研究与应用 if select=‘l’then sum<=suml; else sum<=sum2; end if 例4:ifselect=‘l’then suml<=signall; else suml<2signal3; end if; ifselect=‘l’then sum2<=signal2; else sum2<2signal4; end if; sum<=sum 1+sum2; 3.提高硬件资源的利用率 在各种FPGA的结构中,宏单元一般由组合逻辑块和触发器组成。一般情况 下,如果一个组合逻辑输出的信号只是驱动一个触发器,则该组合逻辑部分可以 与触发器融合到一个通用宏单元中。但是如果该信号驱动两个或者两个以上的触 发器,则该组合逻辑电路将单独占据一个宏单元,其同一单元内的其它触发器将 不能使用,从而浪费了硬件资源。较好的设计是让组合逻辑电路可以和触发器共 用一个宏单元。由于不同公司的器件。由于其结构、开发工具的不同,所进行的 描述设计优化方法也不尽相通。 4.避免出现不必要的锁存器 高效的可综合电路的设计要求是,在没有必要时,应尽量避免在电路中插入 寄存器,否则既影响电路的工作速度,又将占用不必要的硬件资源:如果电路中 必须引入寄存器以存储信息时,应尽可能少地引入锁存器或触发器。 在VHDL语言中,当使用case语句和if语句时,如果这类语句不能覆盖所 有的输入范围,则在进逻辑综合后,将会出现不必要的锁存器,从而使得系统的 性能大大降低。因此,在利用这类语句进行设计时,需要让条件覆盖所有的输入 范围。 . 基于FPGA的视频图像检测技术的研究与应用 5.6本章小节 本章主要完成了视频图像处理与检测整个系统仿真的设计与实现。本文针对 现有仿真工具用手动设置输入波形工作量大等弊病,提出利用VHDL测试基准 (TestBench)解决系统输入来源仿真的方法,并且应用TEXTIO程序包很好地解决 了仿真测试中面临的测试向量庞大和难以处理的问题。结合ModelSim6.1b和 MATLAB6.5仿真和开发工具将系统的仿真结果直观的还原为图像’,有利于系统 测试结果的分析与调试。系统测试的结果基本符合要求,运动目标的检测可以实 现,经过多次调试,系统可以排除行走路人等噪声干扰而检测出正确的运动目标, 具有一定的可行性。最后根据自己的设计经验,对FPGA设计的具体步骤进行了 总结,并且对设计中较为普遍而又比较重要的问题作了小结,提出了几点注意事 项。 基于FPGA的视频图像检测技术的研究与应用 第六章总结与展望 视频图像处理及检测系统是当前智能交通系统的城市交通智能管理中较热 门的研究领域,图像预处理系统作为视频检测系统的一个前端系统,要求能够快 速、有效的处理视频采集部分传送的图像信息。传统的前端图像处理系统速度慢、 处理功能简单,不能很好地满足系统实时性的要求,针对这一问题,本文采用 ● ● ● FPGA芯片实现了前端图像预处理系统设计,后端视频检测系统设计,部分视频 采集部分的图像数据存储设计。整个系统集成在FPGA芯片内,不仅能实现系统 的全硬件化并行执行,提高了视频检测系统的检测速度,而且实验结果表明该系 统基本达到设计要求,图像处理功能基本符合预期设想、运动目标的检测也基本 准确,系统设计具有实用性。 6.1本文的工作总结 经过一年多的努力工作,完成了课题文献与资料的调研、课题的分析与方案 设计、FPGA系统设计原理和Quartusll等软件的学习和使用、系统硬件结构和 电路设计的研究、图像处理及检测算法的VHDL实现与优化、系统的仿真与分 析。 本文工作的具体内容包括以下几个方面: 1.分析图像处理与检测系统的现状,针对其核心芯片的不同,对通用PC机、 DSP处理器、FPGA&ASIC各种不同芯片实现方案的优缺点进行分析比较,从可 靠性、稳定性、实时性和开发成本等因素考虑,提出以FPGA芯片作为中央处理 器的嵌入式并行数据处理系统。 2.由于本系统的研究对象设定为智能交通系统(ITS),主要对交通道路上的 运动车辆进行识别检测,本文还调查研究国内外视频图像技术在智能交通领域的 应用研究发展状况,重点分析和研究了基于视频图像处理的交通流量检测技术, 并且把它与目前其它正在使用的检测技术进行了比较,得出的最后结论是基于视 频的交通流量检测技术具有明显的优势,是未来发展的趋势。 3.在FPGA内部设计了整个系统的各个模块。在视频图像采集部分,异步 FIFO模块用来缓冲两个不用的时钟域的数据传输,图像空间转换模块实现RGB 彩色图像转变为灰度图像,图像帧存控制模块用来对图像进行存储,为系统扩展 基于FPGA的视频图像检测技术的研究与应用 实时显示视频模块做准备;在图像处理部分,图像预处理模块对获得的灰度图像 进行噪声消除,提出一种适合硬件结构的快速二维中值滤波算法,通过验证可以 很好地改善图像质量,为后端的图像检测减小误差;在图像检测部分,研究并设 计了背景帧差法、图像二值化及运动目标提取算法的硬件结构,并在FPGA系统 上实现了图像中运动目标的正确检测。 4.在整个设计流程中,视频图像处理及检测系统运用了Top.Down和模块化 设计方法,大大缩短了设计周期,提高了系统的稳定性和可扩展性。该课题使用 Altera公司的FPGA设计软件Quartusll5.0作为开发环境,运用Mentor公司的仿 真软件ModelSim SE 6.Ib进行功能和时序仿真。本文提出了一种VHDL测试基 准(TestBench)方法解决系统输入源仿真问题,用TEXTIO程序包设计了MATLAB 与FPGA仿真软件的接口,很好地解决了仿真测试中因测试向量庞大而难以手动 输入的问题。系统的模块设计采用VHDL硬件描述语言编写,在EDA工具中完 成各模块的仿真,并在FPGA内部进行硬件实现。系统仿真的结果表明,运动目 标的检测基本符合要求,可以排除行走路人等噪声干扰而检测出正确的目标,具 有一定的可行性。 综上所述,本系统设计采用了FPGA来完成视频图像处理及检测的功能,使 系统具有小型化、灵活性、集成度高而且实用性好的特点。同时,设计中充分利 用了大规模逻辑器件自顶向下的设计方法,使整个系统设计思路清晰、电路简单、 功能实用、抗干扰能力强、工作稳定。由于FPGA是在线系统可编程器件,调试 比较方便,发现设计中的问题可及时更改,这也体现了系统良好的可扩展性。 6.2研究工作展望 通过对实时图像处理及检测技术的理论研究和基于EDA技术的FPGA开发, 利用FPGA技术对实时图像处理检测系统的结构设计和模块化设计等几个方面 作了深入学习和研究。但是由于时间关系,在本文工作中还有许多需要改进的地 方和可以优化的地方,主要包括以下几点: 1.进一步简化系统硬件结构,对整个图像处理检测系统包括_刚lz-师5tlj数据采集 系统设计硬件电路并下载到FPGA芯片中运行,达到系统可实现的目标。 2.在图像预处理部分研究一些更精确的算法,完成其算法的高速FPGA实 基于FPGA的视频图像检测技术的研究与应用 现,使得最终的图像结果更能较好的进行模式识别。 3.在当前所使用图像检测方法中,尚未形成对目标的闭环检测系统。因此, 在实际的目标检测系统过程中,需要根据目标的大小自适应的产生相应的最优检 测模板,从而提高目标检测的精度。 总之,用FPGA设计系统是一个复杂的过程,为了能够充分发挥FPGA的潜 能’,取的令人满意的效果,必须熟悉FPGA的内部结构,合理利用其内部资源, 对设计进行逻辑和时序上的优化。本文在实现系统过程中并没有太多考虑逻辑和 时序上的优化,下一步要认真掌握FPGA的设计技巧,优化设计以提高系统的性 能。 随着电路制造工艺技术的迅速发展,出现了数百万门高密度的FPGA芯片。 越来越多的高端FPGA产品包含DSP或CPU等处理器内核,从而FPGA将由传 统的硬件设计手段逐步过渡为系统级设计平台,开发者能十分容易的将整个应用 系统实现在一片FPGA中,从而实现所谓的可编程SOC系统,即SOPC。 FPGA中的嵌入式处理器进一步提高了FPGA系统的集成和灵活性,使之成 为一个软件与硬件联合开发和灵活定制的结合体。例如Altera公司的FPGA器件 就提供了Nios II软核处理器和专用的DSP硬核模块。在一片FPGA芯片中可以 实现整个视频检测系统,这样就抛弃了后端专用DSP数字信号处理器部分,实 现了系统的小型化和集成化,提高了稳定性。下一步的工作也可以在这方面做一 些尝试。 随着FPGA功能的不断完善和SOPC思想的不断推广,相信FPGA在系统 级的平台上将有广阔的应用前景。 基于FPGA的视频图像检测技术的研究与应用 参考文献 【l】卢强.陈泉林,林康红.智能交通监视系统中路况图像背景去除算法研究.自动化与仪 器仪表.200l。11 【2】郁梅,蒋刚毅,贺赛龙.基于路面标记的车辆检测和计数.仪器仪表学报.2002,8 【3】李俊飞,严新忠.智能交通系统的发展.内江师范学院学报.2004,9 ● ● 【4】_http:I/www.£;aodewei.com.上海高德威智能交通系统有限公司(网站) [5】杨磊等.闭路电视监控系统.北京:机械工业出版社.1999,5 [6】S.Takabaetal.”Measurement of traffic flow using real—time processing of moving picture”.In 32nd.Conf'.On Vehicular technology.1 982,p488-494 【7】Collins Retal.”A system for video surveillance and monitoring”,VSAM final report.Carnegie Mellon University,Technical Report.2000.PI一25 [8】Panos G Michalopoulos.”Vehicle detection video through image processing”.The Autoscope system I EEE Transaction on Vehicular technology.199 1,40(i),p2 1-29 【91苏光大,图像并行处理技术.北京:清华大学出版社.2002,7 【10】戴逸民,基于DSP的现代电子系统设计.北京:电子工业出版社.2002,5 【ll】冈萨雷斯著,阮秋琦等译.数字图像处理.北京:电子工业出版社.2003 【12】夏德深,傅德胜著.现代图像处理技术与应用.南京:东南大学出版社.1997 【13】李介谷著.图像处理技术.上海:上海交通大学出版社.1995 [14】黄爱民。安向京,骆力等编著.数字图像处理与分析基础.北京:中国水利水电出版社. 2005 [15】张毓晋著.机器视觉.北京:科学出版社.2001 [161范莹.视频监控中运动图像检测与识别技术的研究.【工学硕士论文】.大连理工大学. 2003 【17】潘锦辉,廖庆敏,林行刚.视频序列中运动目标的自动提取.清华大学学报.2001 【18J阮秋琦.数字图像处理学[MI.北京:电子工业出版社.2001 【19】(美)卡斯尔曼(Kenneth R.Castleman).数字图像处理【M】.北京:电子工业出版社.2002 【20】韩客松。复杂背景F红外点目标检测的预处理.红外技术.1999,7,21(4),p36·39 【2l】李智勇等,动态图象分析.北京:国防工业出版社.1999,8 【22】章毓晋。图像分割.北京:科学出版社.2001 基于FPGA的视频图像柃测技术的研究与应用 【23】王润生编著,图像理解.北京:国防工业出版社.1995 【24】T.Arch,A.Kaput and R.Mester,”Statistical Change Detection in Moving Video”,Signal Processing,Image Communication,V01.I,No.2,October 1 993 [251蔡茂国,杨淑雯.利用图像系统捕捉运动物体的一种实现方法.计算机应用.20(6).2000 【26】KAMEDA Yoshinari,M INOH Michihiko,A Human Motion Estimation Method Using 3-Successive Video Frames Proceedings of International Conference on Virtual Systems and Multimedia.1996.p135—140 [27】马颂德,张正友著.计算机视觉——计算理论和算法基础.北京:科学出版社.1998 【28】贾云得编著.机器视觉.科学出版社.2000 [29】程存学,朱晓昆著.计算机视觉——底层处理技术.北京:电子工业出版社.1993 【3D】J.Barton,D.Fleet,and S.Beauchemin,Performance of optical flow techniques.International Journal of Computer Vision,1 994,1 20),p42—77 jt 【31】刘国锋,诸昌铃.光流的计算技术.西安:西安交通大学学报.1997,12 【321 Horn B K P,Schunck B G’Determining optical flow,Artificial Intelligence。1981,17,p185—204 【33】Singh A,Allen P.,!mage-flow computation:an estimation—theoretic framework and a unified perspective.CVGIP:I mage Understanding。1992,56,p152一177 【34】R.Cucchiara,C.Grana,M.Piccardi,Statislic and Knowledgermoving Object Detection in Traffic Scense。2000 【35】韩思奇,王蕾.图像分割的阑值法综述.系统土程与电子技术.2002,24(6).p91—94,102 [36】Altera Corporation.Cyclone FPGA Family Data Sheet.March 2003 【37】EDA先锋工作室.ALTERA FPGA·CPLD设计[M】.北京:人民邮电出版社.2005 【38】王诚等.FPGA/CPLD设计工具【M】.北京:人民邮电出版社.2003 【39】骏龙科技.如何在modelsim SE中指定Altera的仿真库(中文版).2003 【40】Clifford E.Cummings,Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs,200 1 【41】赵震甲.使用FIFO完成数据传输与同步【J】.中国集成电路.2005,8 【42】吴自信,张嗣忠.异步FIFO结构及FPGA设计【J】.单片机与嵌入式系统.2003,8 【43】朱鹏飞,赵雅兴.视频图像捕获系统SRAM控制器的FPGA实现【J】.半导体技术.2002,6 【44】Integrated Silicon Solution Inc.IS6 I C64 1 6AL SRAM Data Sheet.2003 【45】L.A Christopher,W.T_Mayweather and S.S.Perlman,”VLSl median filter for impulse noise .10I. 基于FPG,A的视频图像检测技术的研究与应用 elimination in composite or component TV signals”,IEEE Trans.on Consumer Electronics,l 988, v0134,p263—267 (46】Priyadarshan Kolte,Roger Smith,Wen Su.A Fast Median Filter using AltiVec[A].IEEE International Conference on Computer Design(ICCD'99)[C].1 999.p384—39 1. [471张玉英,基于FPGA的数字图像处理系统:【硕士学位论文1.北京理工大学.北京理工大 学光电工程系.2000 [48】J Mermet.VHDL for Simulation,Synthesis and formal Proofs of Hardware.Kluwer Academic Publishers,1979 [49】潘峰、李光喜、刘文予.MATLAB在图像处理与研究中的应用.计算机应用研究.1999,12, p73 [50】施阳、李俊编.MATLAB工具箱--TOOLBOX使用指南.西安:西北工业大学出版社. 1998 .102. 基于FPGA的视频图像检测技术的研究与应用 附录 一、MATLAB部分程序代码: image—input.m 图像文件读取程序 f=imread(。car 1.bmp’); %提取三幅分量图像 f芦f【:,:,1); 电=f(:,:,2); fb=f(:,:,3); %滤波f filtered=irafilter(f,w);--"合一 %3X3的平均滤波器 w=fspecial(。average’,3); fr filtered=imfilter(fr,w); 蟾~filtered。imfilter(fg.w); fb filtered=imfilter(fb,w); %重建RGB图像 f filtered=cat(3,if_filtered,fg filtered,fb—filter ed): %原图figrueI imshow(f),figure %蓝色分量图像figrue2 imshow(fb),figure %灰度图像figrue3 fgray=rgb29ray(f); imshow(fgray),figure %滤波后图像figrue4 imshow(f_filtered),figure %锐化后图像figrue5 lapmask=[1 I l;1·8 l;l ll】: fen=imsubtract(f_filtered.imfilter(f__filtered,la pmask,’repl icate’)); imshow(fen),figure %自转灰度figrue6 %法一:0.299毒R+O.587'G+0.114+B frgb=im2double(f); frl=frgb(:,:,1); 暗l=fr96(:,:,2); fbl=畦b(:,:,3); fr卜=0.299.事frl: 龟1=0.587.+龟I; fbl=0.114.·fbl: f_selfgraydou=plus(plus(frl,龟1),fbl); f.selfgray=im2uintS(Lselfgray_dou); imshow(f__selfgray),figure %法二:(R+G+B)/3的灰度值 fr_dou=im2double(fr); fg_dou=im2double(电); fb_dou2im2double(fb); f_selfgray_doul=plus(plus(fr_dou,fg_dou),fb —dou)/3; f_setfgray l=im2uintS(f_selfgray_.dou 1); imshow(f_sel fgray!) AA=【3 2;7 81; %create a double array ro—flit.m 中值滤波MATLAB仿真程序 function output_image=ro—fl it(image—fi le,order); input_image—rgb5imread(image—file); %loads image into input_image input—image—r=input_image—rgb(:,:,1); input_image_g=input_image_rgb(:,:,2); input_image—b2input_.image_rgb(:,:,3); 【ylength,xlength]=size(input_image—r); %determines size of input image output_image—r(1:ylength,1:xlength)2zeros; %inits output image output image_g(I:ylength.1:xlength)2zeros; output—image—b(I:ylength,1:xlength)2zeros; for y=l:ylength一2 for x=l:xtength·2 wmdow—r 5 【input_image_r(y:(y+2),x:(x+2))】; window_g 2 【input_image_g(y:(y+2),x:(x+2))】; window—b 。 【inputimage—b(y:(y+2),x:(x+2))1; wmdow_v—r=[[window—r(1,I:3)】 【window_r(2,l:3)】【window_r(3,I:3)】】; window_v__g=[[window_g(1,l:3)1 fwindow__g(2,l:3)】【window_g(3,l:3)】】; window—v—b=[[window—b(i,I:3)】 【window_b(2,l:3)1(window_b(3,l:3)1】; sorted—list=sort(window_v r); sorted—list=sort(window一、,^g); .103. sorted—list。sort(window_v_b); output_image—r(y+I,x+1)=sorted—list(order); output—image__g(y+I,x+1)=sorted—l ist(order); output_image_b(y+I,x+I)2sorted—list(order); sorted_list(order); end end output_image_r=uint8(output—.image_r); output_image_92uint8(output—image g); output—image—b2uint8(output—image_b); output_image2cat(3,output—image—r,output_i mage_g,output_image—b); %………plots ro fi Itered image figure; %image(output_image) %colormap(gray(256)); imshow(output_image) title(’Rank Order Fi lter Output’); 二、VHDL部分程序代码: sram——controller.vhd SRAM控制器程序 library ieee; use ieee.std—logic—I I 64.all; use ieee.std—logic—unsigned.all; entity sram—controller4 iS po嗽 clk,reset,aS—n,rw: std_logic; ack,out_en,we_en: std—.109ic; addrclk : in out out std—.109ic; ……一Sram控制信号 rice,nlb,nub : out std——logic; dout : out std—logic_vector(I 5 downto 0) ): end sram—controller4; architecture sram、—con4 of sram—.control ler4 is type Sram—state is(idle,write,read); ~定义状态符号 signal current——state:Sram—。state; ~定义现态 constant WR—CNT:integer:。2; 一写周期所需周期数 constant RD—CNT:integer:---4; ~读周期所需周期数 constant CNT_BITS:integer:22: ~计数器计算周期所需位数 signal cnt:std—logic—vector(CNT B ITS—l downto O); 一周期计数器 begin out en <2…1 when current—state 2 read else …0; We en <。…1 when current—state=write else …0; —ack<2(not as—n)and(((not rw)and(cnt= (others=>‘l’))) or(rw and(cnt = RD—CNT-1))); ack<。’l-when(as—n=10’)and(((nv=。O’)and (cnt 2 WR_CNT-1))or((nv2。l。)and(cnt= RD CNT.1)))else’0‘: 一在地址选通as—n=O,且写rw--O及写完 cnFWR_CNT-i,或者读rw=l且读完 cnt=RD CNT-1,则发确认信号 addrclk<2‘1.when current—state 2 read or current state=write else…0: SRAM控制信号 nee<=~1 when current—state=idle else’0。; nlb<-‘1.when current—state 2 idle else‘O’; nub<=。I’: dour <= ”010101010101010l” when current_state=write else(others=》’Z1); process(reset,clk) begin if reset2…I then current—state<=idle; cnt<=(others=>…0); elsifclk’event and cik='l’then case current—.state is when idle 2>一nce<=。l’;nlb<_ ‘l’;nub<=’1';dour<=(others=>’Z’); ifas n=“0 then if nv=。l’then current—state<_read; else current—state<2 write; end if; end if; when write=>一nee<=’0’;nlb<= ’O’;nub<=’l。;dout<_”0101010101010101“ after 6ns;一写控制信号 if (cnt=WR CNT-I)or(as—n=。l’)then idle; (others=>…0); current—state<2 cnt <2 else cnt<=cnt+1: end if; when read=>-nee<=’0’;nlb<= …0;nub<_’l’: ~读控制信号 if(cnt=RD—.CNT-I) or(as—n=。l’)then idle; (others=>'0。); current—state<。 cnt <= else cnt<=cnt+l: end if; when others=>nul l; end case; end if; end process; end sram con4; fast—flit.vhd 快速中值滤波程序 library ieee; use ieee.std—logic_l 1 64。all; entity fast—nlt is pon( 基于FPGA的视频图像检测技术的研究与应用 clk: in std——logic; al 1: downto 0); ‘in std—logic_vector(7 a12: downto 0); n std—.109ic.—vector(7 a13: n std—.109ic、.vector(7 downto O); a2l: downto 0); n std—.109ic_vector(7 a22: downto O); n std—.Iogm_vector(7 a23: downto O); I‘l l std—logic—vector(7 a3 1: downto 0); .n std—logic—vector(7 a32: ’in std—logic—vector(7 downto O); a33: .n std—logic—vector(7 downto 0); filout:out std.—logic vector(7 downto 0、 ); end fast flit; architecture fast—.fl it——one of fast——flit is procedure compare ( in l: in std_logic_vector(7 downto 0); in2: in std—.109ic_vector(7 downto o); in3: downto 0); min: in std—logic_vector(7 out std—.109ic_vector(7 downto 0); mid: out std.—logic_vector(7 downto O); max: out std—.109ic—.vector(7 downto 01 )is variable minvar,midvar,maxvar:std—.109ic—.vector(7 downto 0); begin iffinI<in2)then ’ minvar:=in 1: 105. ~—— midvar:2in2; else minvar:=in2; midvar:=inl; end iC if(in3<minvar)then maxvar:=midvar; midvar:=minvar; minvar:=in3; elsif(in3>midvar)then maxvar:=in3; else maxvar"=midvar; midvar:=in3; end if: min:=minvar; mid:=midvar; max:=maxvar; end compare; signal midres: O); std—.109ic——vector(7 downto begin process(clk) variable aIlz: downto 0); std—.Iogtc—.vector(7 variable a1 2z: downto 0); std—logic_vector(7 variable a1 3z: downto 0); std——logic_vector(7 variable a2lz: downto 0); std—logic_vector(7 vanable a22z: downto O); std_logtc_vector(7 variable a23z: downto 0); std—Iogm_vector(7 variable a3 Iz: downto 0); std——logic—.vector(7 variable a32z: downto 0): std——logic_vector(7 variable a33z: downto O); std_logic—.vector(7 begin if rising_edge(clk)then 兰主!竺!塑堡鉴望堡丝型垫查塑竺壅兰皇旦 compare(aI 1,a12,a13,al Iz,a12z,al 3z); compare(a2 1,a22,a23,a2 1 z,a22z,a23z); compare(a3 1,a32,a33,a3 1 z,a32z,a33z); compare(al 2z,a22z,a32z,a3 l z,a32z,a33z); midres<=a32z; end if. end process; fi Iout<=m idres; end fast flit one; MinusFrame.vhd 背景帧差法程序 library IEEE; use IEEE.std—logic—i 1 64.all; use IEEE.std_Iogic unsigned.all; entity MinusFrame is generic( vwidth: integer:=8); port( clk:in std—logic; RSTn:in std—logic; foreground : In std—Iogic_vector(vwidth·1 downto O); background : In std—logic—vector(vwidth-I downto O); minus—.out: out std—Iogic_vector(vwidth-1 downto 0) ); end MinusFrame; architecture MFone of MinusFrame is begin process(clk,RSTn) begin if RSTn=’0’ then minus_out<=(OTHERS=>一0); elsif clk‘event and clk=’l then if foreground>=background then 基于FPGA的视频图像检测技术的研究与应用 minus—out<2foreground·background; else minus_out<=background—foreground; end iC end iC end process; end MFone; image_binary.vhd 图像二值化程序 library ieee; use ieee.std—logic一1 1 64.all; use ieee.std—logic—unsigned.all;一use+一+/on signal entity image——binary is generic( vwidth: integer:=8); pon( clk:in std~logic; RSTn:in std—logic; ~ en"in std—logic:=’l’; enabIe(optionaI) MinusThreshold: ~detect in std—logic—vector(7 downto O):2”000 1 0 1 0 1”; ~15h A imThreshold: in std—logic vector(7 downto O):=”O I 1 00 i 0 I”; -65h detect—.in: in std—logic—vector(vwidth·I downto 0); pixel__out: out std—logic—vector(vwidth-I downto 0); aim——out:out std—.109ic X end image——binary; architecture ib——one of image_binary is signal aimBefore,aimCurrent:std—logic:2…0; signal aimcount:std——logic—.vector(7 downto 0):=”00000000”; begin process(clk,RSTn,MinusThreshold,AimThres hold.detect in) 一 variable aimcount:std—logic_vector(7 downto 0):=”00000000”: begin ifRSTn=…0 then aim out<=…0; aimBefore<=’0’: then aimCurrent<=’0’: aimcount<=”00000000”:’ eisif rising._edge(clk)then aimBefore<=aimCurrent; if(detect_in>MinusThreshold) pixel out<=”11111iilI.: aimcount<=aimcount+1: else then pixel—out<=”00000000’’‘ end if: if(aimcount>A imThreshold) aimCurrent<_’l’: else aimCurrent<=。0’: end if: if aimBefore=’0’ and aimCurrent=’1’then aim out<=。l‘: elsif aimBefore=’l’ and aimCurrent=。0’then aim out<=。0’: end if: end if; end process; end ib one; image_testbench.vhd TestBench仿真源输入程序 library ieee; use ieee。std logic ll 64.all: use ieee.std—logic~signed.all; use ieee.std—logic—unsigned.al l; use ieee.std—logic arith.all; use std.TEXTl0.all; entity image.tb iS ·107. end image—tb; architecture i—.tb of image——tb is component RGB2Gray port(clk,rst: in std—logic; fr,fg,fb: in std—logic_vector(7 downto O): .fgray: downto 0) out std—logic—vector(7 ); end component; signal clk: std—logic:=一0; signal rst: std—logic:=’0’; signal fr: std——logic—.vector(7 0):=(others=>…0); downto signal fg: std——logic——vector(7 0):=(others=>…0); signal fb: std—logic_vector(7 O):《others=>…0); downto downto signal fgray: std,—logic_vector(7 downto O):=(others=>一0); signal row—r,col—r: integer:=0; signal row_g,col_g: integer:=O: signal row—b,col—b: integer:=0: signal wrrow,wrcol: integer:=O: signal WRlatch: boolean:=false;·-·-Delay one cycle begin uut: RGB20ray port map(clk=>clk,rst2>rst,fI=>fr’龟2>电,fb=>fb,f gray=>fgray); …….read from file.…~...……………。... tr__gen:process file lnputD:text open read—.mode is ”flame r.dat。’: variable DLine:LINE: variable good: variable DataR: boolean; integer; begin wait unti l clk=‘l。and clk‘event; ……·read the col~r data ifcol,式then readl ine(1nputD,DLine); 基于FP(;A的视频图像检测技术的研究与应用 end if; read(DLine,DataR,good); ifcol—r>126 then COI r<=0: row—r<2ro、V—r 1; else col_r<2col一件l; .end if; ‘ end process; .一●奎.‘掌事士事幸事事奉辜}●奉●●,●事事●●●●事牛难事.一 fg__gen:process file lnputD:text open read—.mode is “frame__g.dat”: variable DLine: LINE: variable good: variable DataG: boolean; integer; begin wait until clk=‘l’and clk’event; -一…read the col_g data-·…--·· if col_g=0 then readIine(fnputD,DLine); end if; read(DLine,DataG,good); ifcol雪126 then col__g<=0: row—g<2row_g+1; else col_g<2col一是|+1; endi£ --·…一output tO wtre·…一… iffgood)then fg<=CONV_STD_LOGIC——VECTOR(DataG, 8); else assert false report ”End of Reading Input File!”; endif. end process; ..掌●}宰幸宰事搴●宰搴事●睾奉●书拿率●奎●●宰奉事幸●●一. fb._gen:process file lnputD:text open read——mode is ”frame_b.dat“: 108. 基于FPGA的视频图像检测技术的研究与应用 _一_。一一_-●,_——___-,_-_-_-—●———_-_’_——-————————————-—————————————————一 variable DLine: LINE: variable good: variable DataB: boolean; integer; begin wait untiI elk=’l‘and clk’event; ~~.read the COl b data-一一·- ifCOl b=O then DataOray:=CONV_INTEGER(unsigned(fgray )): write(OutDLine,DataGray); write(OutDLine,space); ifwrcol>126 then wrrow<=wrrow+l; readline(InputD,DLine); end if: read(DLine,DataB,good); ifCOl b>1 26 then C01 b<=O: else ’wrcol<=wrcol+I; endif. if wrcol=l 27 then writeline(0utputD,OutDLine); row b<=row b+I: else Col b<=coI b+I: wrcol<=0; end if: end if. end if; ……‘output tO wire………… if(good)then end process; clk_gen:process begin tb<=CONV—STD—LOGIC—VECTOR(DataB, 8); else assert false report ”End of Reading Input File!”; endif: clk<=…0; wait for 10ns; clk<=…i; wait for 10ns; end process; 一………一一………一…………● rst—gen:process end process; ……一write tO file一一 save._gray:process file OutputD:text open write mode is ”瞻ray.dat“; variable OutDLine: LINE: begin rst<=…0: wait for 30ns; rst<=。l‘; wait for 15ns; rst<=…0; variable DataGray: variable space: integer:20: character:--“; begin wait untiI CIk;。I’and clk‘event; wait; end process; ~-…一一…一~一…~…一……- end i tb; WRlatch<=true: jf WRlatch then .109. 基于FPGA的视频图像检测技术的研究与应用 攻读硕士学位期间发表学术论文目录 >何江远,唐明浩.基于数字图像处理的交通信息检测.微计算机信息.2008 年lO月(第一作者,已录用) >蒋琳,唐明浩,何江远.基于JAVA的自动开袋机仿真系统的研究与开发, 计算机应用研究,2006年6月(第三作者) >钱亮,何江远,蒋琳.e眼智能车流量监控系统.2005年上海市高校学生嵌 入式系统创新设计竞赛获奖作品论文集.2005年10月.P267.276(第二作 者) 基于FPGA的视频图像检测技术的研究与应用 致谢 回顾两年多以来的硕士学习和科研工作。我在学业、科研和生活上得到了众 多老师、同学和朋友们的热心帮助和有力支持,使我有了明显的进步。在此,我 向他们表示我诚挚的谢意。 首先要感谢我的导师唐明浩老师的悉心指导。唐老师以其丰富的学识和经验 指导我研究的方向,在课题的选题、学习和实验以及论文的撰写和审稿过程中, 都承蒙他不厌其烦的予以教导和指正,更在实验器材和实验经费上给予充分的支 持。唐老师对嵌入式系统技术的前沿发展有深刻敏锐的洞察力,他严谨的治学态 度,无私奉献的敬业精神,使我受益匪浅,并将永远是我学习的榜样。 同时,也要感谢与我共同度过两年多时间的同学们,尤其是同实验室的同学 们,无论在生活上或是学习上,他们都在我最困难的时候,给与我无私的帮助, 在这里,一并向他们表示诚挚的谢意。 最后,特别感谫}能在百忙之中抽出宝贵时间来审阅本文的专家、学者们,感 谢你们的辛勤劳动,你们的宝贵意见和建议,将更好地指导我进一步的学习和研 究。 作者:何江远 2007年1月 基于FPGA的视频图像检测技术的研究与应用 作者: 学位授予单位: 何江远 东华大学 相似文献(10条) 1.学位论文 喻金华 基于FPGA的嵌入式视频图像检测系统的设计与实现 2008 图像检测系统可以快速获取大量信息,易于自动处理,也易于与设计信息以及加工控制信息集成,因此,在现代自动化生产过程中,人们将图像检 测系统广泛地用于工况监视、成品检验和质量控制等领域。在当今工业应用中,人们要求图像检测系统趋向于小型化(即嵌入式)的同时,对图像检测系 统的实时性要求越来越高。近年来,随着大规模集成电路的发展,可编程逻辑FPGA所包含的逻辑单元,内部存储块等资源越来越丰富,功能也越来越强 大,因此FPGA在当前的嵌入式实时系统中得到广泛应用,同时FPGA凭借其强大的并行处理数据的能力和设计的灵活性在图像处理领域有着很大的优势。 鉴于此,本文设计并实现了一个基于FPGA的嵌入式视频图像检测系统。 基于FPGA设计的嵌入式视频图像检测系统主要包括三个部分,视频采集显示部分、图像预处理部分和图像检测部分。系统主要功能是用Verilog HDL设计硬件电路完成。本文通过设计帧缓存写控制器,将上一届两个师兄设计的视频采集模块和视频显示模块连接起来,并改进了他们的设计,构建了 一个在显示动态视频图像的同时叠加显示人机交互界面的视频采集显示系统。针对FPGA适合大数据量规则运算和并行处理数据的特点,以字符图像检测 为目标,设计了适合FPGA实现的图像处理算法硬件电路。在图像滤波阶段,设计了图像滤波的五级流水线结构,一次运算的时间即可完成中值滤波、膨 胀、腐蚀滤波等五次运算,极大地提高了处理速度;在二值化阶段采用易于用硬件实现的直方图方法求取全局阈值,通过求取直方图的三个峰值来避免 阈值误判,进而完成二值化;字符分割阶段应用投影法来分割字符,投影的本质就是统计像素点,硬件实现的速度快、资源占用少;特征提取阶段采用 易于用硬件实现的具有统计性质的、根据局部特征的、适应性较好的13特征点提取方法来提取特征。在硬件设计完成后,用软件设计模板匹配,来完成 字符检测,并把检测结果通过人机交互界面显示出来。 本文通过SOPC技术集成硬件和软件设计,充分发挥软硬件各自的特点,实现软硬件协同操作,提高系统性能;设计适合FPGA实现的算法,克服硬件 不宜实现复杂算法的弱点;充分发挥FPGA并行处理数据强的特点,使整个视频图像检测系统有很强的实时性;充分发挥了FPGA设计灵活的特点,对于不 同的检测要求只需改变参数就可以了。经过系统测试表明,视频采集显示系统能够稳定实时的运行,在此基础上实现的视频字符图像检测系统能够准确 地检测出字符的正误,并且系统有很强的实时性,同时消耗的FPGA逻辑资源也不多。 2.期刊论文 杨丽娟.刘教民.王震洲.赵艳.YANG Li-juan.LIU Jiao-min.WANG Zhen-zhou.ZHAO Yan 基于分块帧差 的视频图像运动检测 -河北科技大学学报2006,27(1) 在常用的图像运动检测方法基础上提出了一种改进的运动目标检测算法,即将连续2帧差图像和背景差图像直接相乘,再将相乘的结果进行二值化处理 得到运动检测结果,从而将运动目标从背景图像中分离出来,最终得到视频序列图像中运动存在与否的一个二值运动模板,提高了运动检测的效果. 3.学位论文 郭倩 车辆监控系统图像检测算法研究 2008 数字图像处理技术与监控系统的结合、应用是近年来的热点研究课题。特别是智能视频技术与交通监控系统的相结合,不仅使系统具备了数字视频 的压缩、传输、存储和播放功能,更使系统具备了图像分析、智能监控的特色,从而能够方便的实现车辆的分割和检测、测量相关的交通参数,如车流 量及运动方向统计等;根据相关的数学模型,还可实现车辆的运动检测,车辆的跟踪与车辆的识别。 本课题源于基于视频的车辆智能检测系统项目的预研,旨在通过研究提出一种应用于运动车辆的监测的图像检测算法,适用于固定摄像头下的视频 图像中运动目标识别和跟踪,使得视频图像分析能够适合集成到视频图像采集压缩前端模块中,运用改进的算法模型实现计算效率最大化以及目标判断 准确性。 视频图像分析中,背景提取的准确与否直接关系到分割质量。运动车辆检测通常是在户外,天气、光照等外界环境的改变对图像背景的灰度影响是 背景提取中不得不考虑的环节。本文通过分别对基于静、动态背景的生成中的平均值法,多帧中值滤波算法和自适应滤波算法进行了大量理论研究和实 验对比论证,提出了适用于该运动车辆检测系统的背景提取法,滤除因环境变化而产生的干扰噪声,并结合固定摄像头下运动车辆检测的各种图像特征 ,运用基于数学形态学分割算法实现了对运动车辆对象的提取。针对图像监控中非有效对象的运动产生的噪声干扰问题,根据车辆视频图像的运动连续 特性,利用卡尔曼滤波器算法对运动目标跟踪和噪声的滤除。并通过改进的基于边缘增长的主动轮廓模型算法对运动目标轮廓进一步精确,提高分割质 量,为多车型的识别做准备。综合这些运动图像检测算法,总结出了一种新型的优良的运动车辆目标跟踪监测方案,使其能够有效克服分割干扰,过分 割以及运算量大等一般算法的缺陷。最后使用该方案对运动车辆视频图像进行了监测仿真验证。仿真结果表明,检测效果基本能够满足对运动目标检测 的要求。 4.学位论文 孙玲玲 基于视频图像检测的超速抓拍系统的研究与设计 2009 基于国内高速公路交通急需智能化管理这一情况,本文设计了一种基于视频检测技术的高速公路超速抓拍系统,整个系统通过工业控制计算机对外 界视场进行监控并配备相关的软件协同工作,形成了一整套高速公路交通智能化的管理体系,可以有效的实现高速公路超速车辆的抓拍工作。 为了克服传统地感线圈和雷达测速方式所带来的缺陷,采用视频测速方式,即采用运动车辆检测等算法,通过软件编程的方法测量速度。 视频触发及测速模块采用虚拟线圈检测方式,为了克服透视现象所导致的误检、漏检和测速精度不高的问题,本文采用了双CCD摄像机对两个虚拟线 圈检测区域分别进行运动车辆存在检测,保证了超速抓拍系统的稳定性和可靠性。 在超速抓拍系统检测算法中采用将背景差分与帧间差分相结合的方法实现运动目标的存在检测,它可以改善因物体内部纹理较少而在帧间差分时造 成空洞甚至分裂的现象,实验结果表明这种方法能够快速有效地提取复杂交通场景下的运动车辆;车辆的阴影会使检测到的目标区域中含有多余的阴影 区域,进而影响检测结果。针对这个问题,本文采用了基于边缘检测算子和阴影部分的色度相结合的方法来检测并去除阴影,通过实验对提出的方法进 行了验证,得到了满意的效果。 5.会议论文 杨爽.周炜.李晨 数字视频图像质量客观测量的基本介绍 2005 视频压缩技术在数字电视及数字视频系统中得到了越来越多的应用,因此需要有相应的客观视频质量测量方法.本文介绍了空间校正和特征提取的基 本方法. 6.学位论文 祝长锋 基于FPGA的实时图像检测技术的研究 2008 在嵌入式实时系统应用中,通常采用并行计算机或者数字信号处理器(DSP)、专用集成电路(ASIC)等作为处理器。但最近几年,随着电子设计自动化 (EDA)技术的迅速发展,可编程片上系统作为嵌入式系统控制核心已成为一种趋势。可编程逻辑器件FPGA凭借其较低的投入成本,较高的并行处理速度和 较大的灵活性在当前的嵌入式实时系统中得到广泛应用。特别的,在视频图像处理系统中,FPGA有其独特的优势。鉴于此,本文设计并实现了一个基于 FPGA的视频图像采集与处理的硬件平台。 图像处理的特点是处理的数据量大,处理非常耗时,为了实现数字图像的实时采集和处理,本文研究了FPGA上用硬件描述语言实现功能模块的方法 ,通过硬件实现各功能模块,解决了视频图像的采集及其处理的速度问题。 本文以I2C总线控制模块、视频解码模块、存储器控制模块、图像检测算法模块为重点模块创建平台,通过Avalon总线模块将各大模块连接起来,实 现一个完整的系统。将视频采集模块、图像存储模块和图像检测模块分别作为Avalon总线的主外设,在Avalon总线上通过主端口的设计来访问存储器 ,完成存储器的读写。通过对视频图像标准的深入分析以及各种不同的视频采集方式的研究,确定了以采用摄像头+解码芯片为视频采集的方式,实现了 芯片的初始化配置、数据的AD转换以及视频的解码;通过对SOPC技术以及Avalon总线传输的研究,用Avalon总线主端口实现了视频数据的读写操作:通 过对颜色识别算法的研究,采用matlab直方图进行分析,确定了采用YUV颜色空间作为特征来实现颜色识别,在FPGA上实现并验证了该算法。 本文设计的关键,不在于对算法本身的研究,而是如何在硬件上实现和控制算法的逻辑电路。研究的范围主要包括如何以逻辑电路的形式实现视频 信号的实时采集、存储、显示和图像的实时检测,并将各个模块集中在一块FPGA芯片上,相比于FPGA+MCU的实现方法,较大的节省了系统的资源和开销 。 通过在FPGA上的验证调试,本文的最后给出了各部分的实验结果。 7.学位论文 樊兆宾 交通检测与超速抓拍一体化系统设计 2007 本文对基于视频图像的交通检测系统设计进行了研究。交通检测系统是智能交通系统的重要组成部分,它可以获取动态交通信息并对交通状况进行 实时监控,有助于优化交通信号控制方案,为交通诱导提供支持。交通图像检测技术克服了传统交通检测方式的不足,可对复杂交通状况下的交通参数 进行提取,对于实施道路交通的有效控制和管理,缓解交通拥挤等问题具有重要的意义。 论文首先讨论了各种传统交通检测方式的不足,指出基于视频图像的交通检测系统是交通检测系统的发展方向,并对国内外几种比较成功的交通视 频检测器进行了介绍。针对通用计算机系统作为视频图像处理平台实时性和可靠性差的状况,比较了目前主流的嵌入式图像检测系统设计方案,从在硬 件平台上保证图像处理的实时性入手,提出了一种基于DSP和FPGA的交通图像检测系统设计方案。根据系统的功能,将系统划分为视频输入处理器模块设 计、FPGA系统设计、处理器系统设计和电源模块设计四部分,对硬件系统的设计方案进行了深入细致的阐述,并对在印制板设计布局布线工作中需要掌 握的原则和应注意的问题进行了总结。在软件设计上,按照功能模块调试的顺序,详细的介绍了系统的初始化配置和图像采集控制逻辑设计程序。对利 用虚拟线圈检测法,以背景差法检测运动车辆,采用双CCD法获取车辆速度进行了讨论,并对其他交通参数的获取方法作了简单讨论。然后,简要阐述了 系统的调试工作,并对调试工作中遇到的问题和解决的办法以及本系统在实际交通检测中的应用进行了讨论。最后,总结了本文的主要工作,对系统的 功能完善和发展方向做了展望。 8.学位论文 吴大勇 车辆图像检测与车牌图像识别及其实时处理系统的研究 2001 该文为交通流监控中,对汽车牌照图像识别方法及其实时处理系统的研究.该文运用图像识别的方法,充分利用已有的交通视频监控系统,通过对视频 图像的采集和实时处理,实现了车辆检测和车牌识别的研究目标,为交通管制和交通控制提供了重要数据.该文按照功能结构可分为图像采集模块、车辆检 测模块、车牌检测模块、车牌识别模块四个部分.在完成算法研究的基础上,应用SH-C编译环境,将程序移植到专用RISC图像处理模块中,提出了由多个模 块构成帧间流水线处理结构.实验结果表明,采用这种帧间流水线处理方案可以达到对视频速率的实时运算,完成车辆检测和车牌识别的功能,具有实际工 程应用的价值. 9.期刊论文 曹建农.李德仁.关泽群.Cao Jiannong.Li Deren.Guan Zequn 基于可分解马尔科夫网的视频图像检测 方法研究 -光学学报2005,25(3) 研究了可分解马尔科夫网的概念、方法,分析了可分解马尔科夫网在序列图像数据挖掘中的作用与意义,并直接将马尔科夫网的结构作为决策或推理 依据,应用于问题求解,拓广了可分解马尔科夫网应用的可能性;以真实交通违章的视频图像为例,以多种粒度(节点数)广泛研究建立视频图像间的可分解 马尔科夫网并分析其对问题的适用性,通过网络结构分析来检测视频图像间的差异,从而发现某种有意义的模式(例如,交通违章);仿真结果表明所提方法 具有实用价值和较好效果;研究结果表明可分解马尔科夫网可以很好地揭示数据间的抽象近邻关系,并且这种网络具有很好的知识表达和逻辑推理的作用 ,是重要的模式识别方法. 10.学位论文 阴亮 基于视频图像的车辆车速与外形参数检测 2008 视觉是人类从大自然获取信息的最主要的手段。在人类获取的信息中,视觉信息占绝大多数,而图像正是人类通过机器获取视觉信息的重要手段。 在交通领域,视频图像检测应用范围广,获取信息丰富,可以用来实现道路交通监控、车型分类及识别、车速检测等。 本文在讨论了现有的测量方法和透视投影原理的基础上,提出了一种利用单目CCD摄像头采集的视频图像,参照预置的地面标尺,测量运动车辆车速 和外型参数(高度和宽度)的方法。其工作原理是,通过抓拍运动车辆前后两次的瞬时图片,然后根据车辆与CCD之间的相对位置关系,参照预置的地面标 尺,求出车辆的运行速度和车辆的车高、车宽。 在Matlab仿真实验环境下,编程实现了透视投影算法,推导了运动车辆参数测量公式。所做的仿真实验验证了所提方法的正确性和有效性。进一步 ,通过实验误差分析,弄清了影响测量精度的原因,由此对CCD的拍摄位置的选择进行了优化。 本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1440802.aspx 授权使用:北京理工大学(北京理工大学),授权号:cde51370-185a-475a-acf7-9e1f00831b53 下载时间:2010年10月30日
更多简介内容

评论

下载专区


TI 参考设计资源库

工业电子 汽车电子 个人电子
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })