基于ARM-Linux机器视觉的军用自动报靶系统的研究
姓名:谢殿强申请学位级别:硕士专业:机械电子工程指导教师:马金奎
20090515
摘要摘要射击训练是基本的军事训练科目,改善训练环境、改进训练质量,在现代建设中具有重要的意义。本文首先从国内外自动报靶技术的研究现状出述了自动报靶技术的发展,在此基础上提出了基于嵌入式机器视觉的智能报靶系统设计实现。本文讨论了基于机器视觉的嵌入式报靶系统终端硬件组成、相关图像格式和Linux操作系统,分析了嵌入式Linux操作系统、Qt/E和开源计算机视觉库OpenCV关于ARM9处理器的移植,研究了图像校正、图像灰度化及二值化、图像分割与裁剪和识别判靶的相关算法,提出了颜色模板判靶的理论,并通过以ARM嵌入式图像处理识别模块为核心,采用功能模块设计理念的实现方案,从底层的操作系统及相关软件的移植入手到图像采集传输、图像处理、识别判靶等步骤,解决了依托ARM处理器结合USB摄像头完成自动图像识别报靶的问题。文中给出了报靶系统的详细硬件组成方案,并在嵌入式Linux操作系统下依托Qt库和开源计算机视觉库(OpenCV)解决了软件组成与具体实现,最终在此基础上论述了本课题设计的实验装置及详细的实验结果。关键词机器视觉;ARM·Linux嵌入式系统;Opencv图像识别;自动报靶山东大学硕士学位论文AbstraotFiringpracticeisthebasicalunitofthemilitarytraining.ItisimportanttoimprovethetrainingconditionandthetrainingqualityintheprocessoftheARMconstruction.First,thepaperdiscussesSystem,andbasedonthedevelopmentprocessoftheAutomaticTarget-scoringthepresentre鼢crchsituationofthedomesticandforeigenoftheanAutomaticTarget-scoringSystem,thispaperdesignsSystem、析tIltheembededmachinevision.ThispaperIntelligentTarget-Scoringdiscussestheembededtarget-scoringsystembasedonmachinevision,andcorrelativean.dhowtopictureformat.ItanalysestheembededLinuxoperatingsystem,Qt/EtransporttheARM9processorusingtheOpenComputerVisionpicturegrayscaleBase(OpenCV).Itrespectivelyresearchesthepicturecorrection、theandtheimagebinaryzation、howtotrimanddivideupthepicture、andthecorrelativeonalgorithmrecognizingthetarget.Basedtheseknowledges,thepaperputsforwardthejudgememtargettheorybycolormould.Intheresearchprocess,thepaperutilizestheonimplementationschemebasedembededthefunctionmoduledesignnotion,andasusestheARMimagerecognizationmodulethecore;meanwhileitalsoachievestheprocedurefromthebasementoperationsystemandtransportationofthecorrelativesoRwarestothetransmissionofthepicturecollection、pictureprocessingandrecognizingthetarget.ThepaperalsoresolvestheproblemhowtoutilizetheARMprocessor、析tlIthetarget’sUSBc.御11e1"atoautomaticallyrecognizethepictureandrecordthesorces.ThepaperinstructsintroducesthetheTarget-SocringSystem’Shardwaresanditsdesigningprocess,andusedsoffwaresincludingtheQTbasedontheLinuxoperatingsystemandtheOpenCVandhowtousethesesofiwarestoachievetheprojects,thenenlargestheexperimentexperimentalKeywordresults.deviceutilizedinthispaperandthedetailedMachineVision:ARM-LinuxEmbededSystem:OpenCVIdentificationPicture:AutomaticTarget-SocringIII原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,进行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名:靼日关于学位论文使用授权的声明本人完全了解山东大学有关保留、使用学位论文的规定,同意学校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段保存论文和汇编本学位论文。(保密论文在解密后应遵守此规定)论文作…:搏翩虢旌日期:趔:!苎:乡,第1章绪论第1章绪论1.1本课题的研究背景在军事训练中械实弹射击是最基本的训练项目,但在实弹射击中多数仍采用人工报靶。在报靶的过程中,报靶人员隐蔽于目标靶下方进行近距离观测。在射击训练过程中人工报靶所需时间概略是射击的5要!UlO倍,当靶上弹着点多时,报靶员很难识别新旧弹孔,报靶误差极大,直接影响射击训练质量。如何提高报靶速度以提高训练效率?如何在实弹射击训练中使每个战士都能清楚地知道自己射弹的偏差,并针对性地调整动作,积累经验,快速提高射击水平?作为训练组织者,如何根据准确可靠的射击记录对训练中存在的问题进行分析、总结,找出规律和克服的方法?在信息技术高速发展的今天,在建设数字化的背景下,以上问题成为改进射击训练必须考虑的问题。为了克服传统人工报靶的不足和满足军事训练现代化的需求,提高训练时间的有效性,自动报靶的研究和应用对推进现代化将具有普遍意义。自动报靶是随着现代科学技术的巨大进步而发展起来的新型报靶技术,其使用在节省人力、提高效率的同时,能最大限度地保障靶场人员的人身安全,符合军事训练中实弹射击的要求,同时对于实现我军的数字化建设将是一项有力的举措。因此研究基于军事训练应用的械自动报靶系统对于的建设,特别是对于训练水平和效率的提高有着极大的促进作用,对于的数字化建设有着深远的意义。1.2国外自动报靶系统的现状近些年,随着计算机技术和数字图像处理技术的不断发展,将机器视觉技术、图像处理与识别技术应用于射击运动和军事训练也有所突破,在国外比较成功的有美国的“AdvancedSport"系统嘲。1.2.1TargetScoring&ReportingSystem州妇和芬兰的“NoptelST-2000美国的髫AdvancedTargetscoring&ReportingSystem—Advanced阿getScoring&ReportingSystem是由美国的RotsBurgun在1999年设计的。该系统携带方便,室内室外都能使用。图1-1是该系统的原理图,图卜2是该系统软件的工作界面。目l一2Adv…dT衅Eetscorln畦R.portlnjs,ste-的软件女∞该系统工作原理:靠近靶子处放置一部低成本的CCD摄像头(为防止被子弹击中,将它屏蔽起来),当计算机附近的话筒听到响第一次延时丌始,延时小于子弹飞行时间,在延时最后摄像头所拍的最后一幅图像被冻结,于是第二次延时开始,在延时最后捕捉第二幅图像(整个延时太于子弹飞行的时间)。计算机将子弹击中前的图像和子弹击中后的图像相减得到结果的视频数据。从子弹击中目标后,检测和判靶过程只需30毫秒,成绩立即通过系统的图形显示传送到射击运动员,同时运动员还通过头戴的耳机听到计算机的声音报靶。第1章绪论1.2.2芬兰的。Ifi,otoINoptelST-2000ST-2咖Sport一系统ST-2000Sportflj光单元Sport是芬兰研制的射击训练仪。Noptel(发送和接收器),RS盒子(控制装置),计算机,靶四个部分组成。该设备使用非常方便,使用于100米的射击项目。借助于计算机的帮助,能快速而准确地瞄准,射手能够毫无拘束地集中精力射击,这是因为计算机能够自动地测试和存储射击操作的整个过程。NoptelST-2000Sport的发送器/接收器是一个装配在射手上的装置(光单元),通过电缆及RS盒连接到计算机串口,这样就使得整个的射击瞄准过程能在监视器上实时地显示出来。1.3国内自动报靶系统的研究状况近几年随着射击运动和建设的需要,各类自动报靶系统也有了一定的突破,目前国内已有些同类系统的开发,如西安电子科技大学、南京航空航天大学、华侨大学、西安立靶公司等在该领域都有不少研究。1.3.1西安电子科技大学的射击竞赛自动判靶系统该系统是一种利用计算机进行图像识别的用于射击运动竞赛的自动判靶和成绩管理系统。该系统采用了图像处理和模式识别的方法进行弹孔环值的自动计算,并通过换靶纸机的机械装置实现靶纸自动替换,而多靶位的成绩自动统计和排名是通过一个局域网实现的口3。系统组成:此系统主要由后端和前端两大模块组成。后端模块放在比赛裁判席,包括一台后台计算机、打印设备、电视摄像机和大屏幕显示设备。后台计算机的主要功能有:产生和维护整场射击比赛的数据库、管理比赛进程、产生秩序册、打印成绩统计结果及其它报表,并兼作整个系统的网络服务器,协调整个系统的运行。前端模块通过集线器HUB和后端模块连接构成局域网。每一个前端模块包括判靶计算机、图像采集装置、弹孔识别成绩软件、换靶机控制盒和换靶机的机械装置。前端模块是整个自动判靶管理系统的关键,它的功能包括:接受运行员的指令;控制换靶机正确动作(抓取新靶纸,移动到射击位,传送己射击的靶纸到图像采集位,图像采集后收集靶纸等);完成图像识别并将成绩通过网络送到后台3山东大学硕七学位论文管理计算机。整个系统的工作流程是一个循环过程。图像识别进行自动报靶的基本原理是对靶面上的弹孔采用反向高光照明,从而将弹孔从整个图像中突出出来,以便识别。原始图像经过滤波、几何失真矫正和直方图均衡等常规预处理后,图像质量得到了进一步提高。此套系统比较庞大,功能比较齐全,自动化程度较高,但目前其支持的靶型只有射击运动的圆环式通用靶型,故其适合于固定的射击场馆应用,而不太适用于对移动性和野外要求较高的军事射击训练。1.3.2南京航天航空大学的自动报靶系统南京航天航空大学设计的自动报靶系统主要组成部分:物理靶纸经过图像采集系统转化为数字图像,然后图像处理系统对靶图像进行处理,并将得出的数据传递给数据库管理系统,最终输出至用户界面。数字图像由CCD摄像头进行采集,图像处理由PC机上的软件程序承担,数据库管理系统负责对比赛成绩进行相关的统计与管理嘲。该自动报靶系统的核心是图像处理系统的解决方法:判断弹孔的内侧点位于哪两个同心圆之间,由此确定环数的整数部分:根据弹孔内侧点在这两同心圆之间的相对位置,计算出环数的小数部分。南京航天航空大学设计的自动报靶系统较上面提及的西安电子科技大学的射击竞赛自动判靶系统有相当的精简,但仍以PC机为处理平台,以视频采集卡带CCD摄像头进行靶图采集,这相对于军用要求的便携性仍略显不足。同时由于其不能处理军用胸环靶,目前此系统没有应用于射击训练的案例。1.3.3华侨大学的射击训练自动控制系统该系统是一种应用于实弹射击训练的自动控制系统睛1。其由PC机、主控机和若干分控机组成,并采用微机管理,单片机控制和无线通信,可实现实弹射击训练中的示靶、检靶、报靶自动化,以及成绩实时记录显示和成绩的查询统计工作。PC机供输入参加训练人员的单位、姓名、训练日期和控制参数,可实现射击成绩实时记录、显示、统计、查询、打印等功能;主控机接收PC机的控制参数转发给分控机,并接收分控机的报靶信息;分控机接收控制参数,完成示靶、自动检靶。主控机硬件:以AT89C51单片机为核心,设置有键盘和5位LED数码管,用于输4第1苹绪论入参数、显示参数和报靶信息。这些参数包括各组靶的起靶顺序、靶的保持时间、各组靶之间起靶的间隔时间。无线收发部分采用FM收发模块,采用数字调制解调,其收发工作状态由CPU控制切换。当PC机或主控机向分控机发送控制命令时,令FM收发模块处于发射状态,其余时间处于接收状态,随时接收分控机的报靶信息。分控机硬件:分控机采用AT89C2051单片机作为控制核心,收发模块接收控制命令和发送中靶信息,收发由CPU控制切换。CPU通过FM电流切换电路控制直流电机的电流方向,使直流电机正转或反转,带动靶芯完成示靶动作(起靶或倒靶)。位置检测采用两个光电检测电路,分别检测起靶、倒靶是否到位,此信号提供给CPU,以控制电机的启停。自动检靶,采用中靶传感器和信号检测电路,当子弹穿过靶芯时,安装在靶芯上的传感器能及时将信号传送给分控机中的检测电路,向CPU发出中断请求,使得CPU能及时获得中靶信息。主控机软件:程序主要包括控制模块、定时中断模块、编码解码及数据调制解调和串行通信模块等。定时中断服务程序完成动态显示、键盘扫描,同时,又作为主控机的时间基准。在主控机键盘控制的工作模式下,各种参数通过键盘预置,由“启动"键启动控制过程,以倒计时方式显示保持时间、间隔时间,以便用户实时观察控制过程。在PC机控制工作模式下,主控机通过串行中断服务程序接受PC机的控制命令,通过FM收发模块发出控制命令,当接收到分控机的报靶信息时,通过串行通信发送程序,向PC机传送分控机的报靶信息。分控机软件:程序主要包括定时中断服务程序、外部中断服务程序、起靶控制、倒靶控制、编码解码和数据调制解调等。数据调制采用脉宽调制方式,每个分控机设有特定的编码,分控机根据接收到的编码信号和动作命令,控制电机完成起靶、倒靶,中靶信号产生外部中断信号,外部中断服务程序将此信号加以累计,保持时间达到设置值时,关闭外部中断,同时倒靶。为避免倒靶动作对无线通信的干扰,倒靶到位后,才将中靶信息发送给主控机。各分控机按预定的顺序分时发送,以免产生数据冲突,起靶控制、倒靶控制程序,包括位置检测和手动按键的抗抖动处理,以及到位时的反向制动处理。程序中还设置了过流欠压检测保护,定时中断服务程序为系统提供时间基准。5山东大学硕七学位论文目前,北京北方射击训练场部分射击场地应用该系统,有少数师级射击训练场应用该系统,在部分运动会射击项目中也有应用案例。同样由于其复杂的结构及专用目标靶使其在使用及维护保养上增加了困难和费用开支,这在一定程度上制约着其军用的发展。1.3.4河北经贸大学的自动报靶系统该系统是利用图像处理方法实现自动报靶。其靶位图像的计算处理的步骤和方法为:首先采集无弹着点的靶位图像,采用逐点扫描的方法,把BMP图像的全部信息读入指定指针数组,然后将BMP图像的图像数据部分读入另一指针数组,通过此数组中的数据与图像的背景颜色比较,找出不同于背景颜色的点的坐标。利用求平面图形质心的方法计算出圆心的坐标。然后通过从圆心发出一条射线,以角度作为变量,从0度至360度扫描一周,那么每扫描一个点,就算出它与圆心的距离,当有距离相同的点时,把它们存储进一个数组,这个数组就存储了一个同心圆的各个数据以及相对坐标,再分别计算出它们与靶心的距离。将这些距离的平均值作为半径,共得到10个半径值,用这10个半径值相比较,判断出各个靶区的环数。改善图像质量的方法:系统采用先平滑去除噪声斑点,再锐化图像边缘的方法。具体方法如下:首先确定显示阈值,也就是过滤掉图像中由于外界因素引起的各种干扰信号;其次,要保证图像信息的完整,如果显示阈值取得过高,那么灰度级较低的弹着点就有可能和干扰信号一起被屏蔽,从而造成误报靶。综合考虑以后,采用人机交互方式对显示阈值进行动态的调整,来消除干扰。进行图像平滑后,图像会变得模糊,再利用拉普拉斯算法锐化图像边缘,得到清晰的图像。弹着点的识别和定位:选择每一时刻在内存中只存储两幅图像。为了准确识别弹着点及有效去除噪声斑点,对采集来的BMP图像采用打一识别一次,报一次靶的方法。由于实际情况千变万化,各种外界因素都有考虑,如果在进行了去噪处理后,发现再现的图像效果不是很好,可以采用人机对话的方式,调整屏幕的显示灰度阈值,直到再现的弹着点不存在畸变。系统编制的处理靶位及弹着点位置的程序是由C语言实现的。整个系统分成三6第1章绪论大模块。图像预处理模块:此模块的主要作用是将黑白图像采集卡采集的以BMP格式存储的灰度靶位图像在计算机上显示出来。阈值调整模块:此模块的主要作用是提供一个人机对话的接口,使用户可以动态地调整显示图像的阈值,能有效地屏蔽掉各种噪声千扰,在保证弹着点的数据完整性的同时,使显示的图像更加清晰。弹着点的识别、定位模块:此模块是整个程序的核心模块,它的主要功能是准确识别和定位弹着点的实际位置,计算出弹着点中心的坐标,实现报靶功能。此报靶系统有适用于军用的胸环靶模式,且判靶精度较高,误判率低于2%,但其在要求精度的同时降低了效率,每次报靶前都要根据采集的靶图明暗和色彩程序进行人机界面的阈值设定,故只能是半自动报靶系统。同时在其系统的操作上对操作人员阈值设定的经验也提出了较高的要求,且组网则需要多名操作人员在各靶位设定阈值,耗费过多人力资源。目前除部分械检测系统外没有应用于实际的案例。1.4课题的研究目标和设计方案总上所述,自动报靶是随着现代科学技术的巨大进步而发展起来的新型报靶技术。目前,我军的射击训练器材整体情况还很落后,大多数是靶壕加机械升落靶,由示靶员人工报靶,少数是自动报靶系统,也主要运用于室内或单一课目的训练,在推广普及不够,训练很少使用。其原因有五:一是自动报靶系统科技含量高,成本相对较高,结构复杂,使用及日常维护保养难度高;二是目前国内的自动报靶系统技术不够成熟,大部分是应用于射击运动的报靶系统,环境适应性差、性能单一,不能满足脱离射击训练场进行野外训练的需求;三是少数模拟训练系统,只能进行模拟训练,不能实行实弹射击,训练质量难以保证。四是部分报靶系统使用时需要在械上安装用于报靶检测的辅助部件,因此在以提高战斗力为目标的军事训练上不太适合。为此,课题研究目标是设计性能稳定、成本合理、适合军用的嵌入式自动报靶系统,提出了以11个USB摄像头为靶图采集端,以ARM嵌入式系统为下位机的n个单兵报靶终端,和以运行Linux操作系统的PC机为总控制中心的一体化自动报靶系统,并保证在不设总控制中心时各单兵报靶终端正常工作。本课题研究内容包7山东大学硕士学何论文括(1)报靶系统中图像识别判靶的算法研究:(2)硬件系统的设计、制作和调试:(3)适用于嵌入式系统的软件设计和调试,达到图像的采集、存储、处理和判靶要求;(4)上位机(总控制中心)的软件设计。模块如图1-3:图1_3自动报靶系统模块图8第2章军用自动报靶系统的硬件设计第2章军用自动报靶系统的硬件设计机器视觉系统从结构上可分为PC机器视觉系统和嵌入式机器视觉系统。本系统属于嵌入式机器视觉系统,其一般有图像采集、图像处理、结果输出等几个部分组成,而相对应于这几部分的硬件则是摄像与传输装置、嵌入式处理器、显示屏。本章将从机器视觉和嵌入式系统的概述开始对系统的硬件设计进行分析讨论。2.1机器视觉和嵌入式系统概述2.1.1机器视觉机器视觉主要是用计算机来模拟人的视觉功能,从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制等。机器视觉技术是在20世纪初期崭露头角的,随着图像处理技术的专业化与计算机成本的下降和速度的提高,己经广泛应用于军事领域、机器人和自动化检测、IC铝1]造行业、医疗行业等传统的以及新兴的高科技产业领域中。如今,机器视觉系统是实现设备智能化、自动化、高效化、高精度途径中必不可缺的功能模块№1。美国制造工程师协会机器视觉分会和美国机器人协会的自动化视觉分会对机器视觉定义为:“机器视觉是通过光学的装置和非接触的传感器自动的接受和处理一个真实物体的图像,以获得所需信息或用于控制机器人动作的装置"。典型的机器视觉系统一般包括以下几个部分:光学系统、图像捕捉系统、图像数字化模块、图像处理模块、智能判断和决策模块、控制执行模块。首先,系统采用摄像机或者其它图像传感模块将目标转换成图像信号,然后转变成数字化信号传送给专用的图像处理模块,根据像素的分布、亮度和颜色等信息,进行各种运算来提取目标的特征,如:面积、长度、数量、位置等,最后根据预设的容许度和其他条件输出判断结果。目前,机器视觉系统在图像处理方面多采用封装式图像处理方法,把图像传感与处理分成的两个部分。系统通过图像传感器获取图像,经过总线存入计算机内存,由计算机完成图像处理任务。机器视觉技术的诞生和应用,极大的了人类劳动力,提高了生产自动化水平,改善了人类生活现状,其应用前景非9山东大学硕士学位论文常广阔。2.1.2嵌入式系统根据IEEE的定义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”。可理解为嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可裁剪,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它是先进的计算机技术、半导体技术、电子技术与各行业具体应用相结合的产物,这一点决定了它必然是一个技术密集、资金密集、高度分散、不断创新的支持集成系统。现实生活中,嵌入式的应用可以说无所不在,小到电子温度计,大到“神州七号’’都有嵌入式系统在工作。从20世纪70年代单片机到今天有各种各样的嵌入式微处理器(MPU),微控制器(MCU)、数字信号处理器(DSP),嵌入式应用已经有了近30多年的发展历史。但是,嵌入式系统这个概念还是最近几年才出现的。作为一个系统,往往是在硬件和软件双螺旋式交替发展的支撑下逐渐趋于稳定和成熟,嵌入式系统的发展也证明了这·点。由嵌入式系统的定义可知嵌入式系统具有以下特征参数:①性能:一般用特征工作频率来描述,如微处理器的时钟频率或者峰值处理能力,或者是每秒能执行的指令数。②功耗:工作电压、电流、引脚的驱动电流、工作频率都能反映这个特征。③可靠性:连续工作时间是描述可靠性的常用参数,另外对震动、潮湿、温度的适应能力也反映了其可靠性。零部件的数量、结构的复杂性一定程度上也可以用来估计系统的可靠性,越复杂、零部件越多,越不可靠,所以简单的总是好的。④体积:嵌入式系统的大小和外形一般要和外部设备的体积和外形相适应。⑤功能:功能不是越多越好,因为功能越多可靠性通常也越差,成本也越高。功能是严格根据产品的需要来设计的。⑥操作系统及用户界面:并非所有的嵌入式应用都要操作系统,只有需要进程管理的时候才有必要加载操作系统。用户界面非常重要,图形化的用户界面是大10第2章军用自动报靶系统的硬件设计势所趋。描述上述特征的参数就叫特征参数,特征参数之间相互制约,需要综合考虑,通常会先从性能、功耗、成本这三个角度入手,其他参数多是对这三个参数的延伸。本文在设计系统的过程充分考虑以上各个参数,以期在设计中达到最优化。2.1.3机器视觉技术在嵌入式系统中的发展现状机器视觉不会有人眼的疲劳,有着比人眼更高的速度和精度,借助红外线、紫外线、X射线、超声波等高新探测技术,机器视觉在探测不可视物体和高危险场景时,更有其突出优点。机器视觉技术已在嵌入式系统中得到广泛的应用。在工业检测领域,嵌入式的机器视觉的应用大幅度提高了产品的质量和可靠性,保证了生产的速度。如产品包装印刷质量的检测、饮料行业的容器质量检测、饮料填充检测、饮料品封口检测、木材厂木料检测、半导体集成块封装质量检测、卷钢质量检测和水果分类检测。在医学领域,机器视觉用于辅助医生进行医学影像分析,主要利用数字图像处理技术、信息融合技术对x射线透视图、核磁共振图像、cT图像进行分析或对其它医学影像数据的统计和分析。在闭路电视监控系统中,机器视觉被用于增强图像质量,捕捉突发事件,监控复杂场景,鉴别身份,跟踪可疑目标等,能大幅度提高监控效率,减少危险事件发生的概率。在嵌入式交通管理系统中,机器视觉技术被用于车辆识别、调度,向交通管理与指挥系统提供相关信息口1。2.2USB图像采集与传输硬件设计2.2.1采集传输模块组成图像采集传输模块主要由两部份组成:第一部份是成像元器件,可选用CMOS或CCD的感应器,CCD感应器是集成在半导体单晶材料上,而CMOS感应器是集成在金属氧化物半导体材料上,在相同像素下,CCD感应器的成像通透性、明锐度都很好,色彩还原、曝光可以保证基本准确,而CMOS感应器往往通透性一般,对实物的色彩还原能力偏弱,曝光也不太好,由于自身物理特性的原因,CMOS山东大学硕七学位论文的成像质量和CCD还是有一定差距的。但由于本系统要求的成像质量不是太高,且考虑成本、及通用性的情况,系统选用USB接口的CMOS成像元器件;第二部份是远程数据传输部分,目前主要有有线网络传输、无线网络传输和有线USB激励传输三种,同样是考虑通用性及减少工作量的因素,系统采用第三种传输方式,通过USB接口传给ARM处理器。2.2.2USB图像采集我们在日常生活中所见到的数码相机、可视电话、多媒体IP电话和电话会议等产品,其中图像采集是核心的技术。图像采集的速度、质量直接影响到产品的整体效果。采用USB接口的摄像头在一定程度上突出了采样速率高、图像质量适中、通用性好的特点。在嵌入式系统的图像处理应用中,若采用数据采集卡的方法,存在着安装麻烦、价格昂贵、中断资源的、可扩展性差等问题,同时在一些电磁干扰强的测试现场,无法专门对其作电磁屏蔽,从而导致采集的数据失真。USB总线是一种新型接口技术,是计算机和外围设备接口通信的一种总线标准。.它支持热插拔,即插即用连接简单。目前常用的USB规范是支持USBl.1协议和支持USB2.0协议№1。本课题利用ARM嵌入式系统控锘IJUSB摄像头来得到图像数据,并通过“嵌入式Linux"内核中的Vide04Linux采集图像,USB摄像头采用市场占有率很高的中芯微Ze301芯片的普通摄像头。2.2.3USB数据传输USB的全名为UniversalSerialBus,中文为“通用序列界面"。它的特点就是将所有周边装置连接头进行了统一标准,各种不同的插头、插座都设计为统一规格,就不会产生哪一个装置插头要接在哪个连接埠的问题。USB是一新型界面规格,支持系统与不同外设间的数据传输,允许外设在开机状态下插拔使用,USB具有易于使用、高带宽、数据传输稳定、支持即时声音播放及影像压缩等特点。目前在国内市场可以见到的USB设备主要有扫描仪、数码相机、打印机、集线器和外置存储设备等。USB采用“级联"方式,即每个USB设备用一个USB插头连接到一个外设的USB插座上,而其本身又提供一个USB插座以供下一个USB)[-设连12第2章军用自动报靶系统的硬件设计接。通过这种类似菊花链式的连接,一个USB控制器可以连接多达127个外设.而每个外设间距离(线缆长度)可达5米。USB协议的传输距离却一直是让人头疼的问题,使用USB接口的电脑外设多达loo多种,稍微高端的电脑外设都是用USB接口。USB的高速数据、复杂的兼容协议使USB接口的传输距离受到极大。本课题为达到100米甚至更长距离的USB图像数据的传输,采用深圳朗恒科技有限公司推出的UE.IHUSB延长器.如下图2一l,产品采用USBI.1协议,延长USB接口距离远,兼容性好,采用网线为线材,通过单根网线把计算机主机的USB接口延长最远达100米以上。USB延长器性能稳定,适用温差范围大,是大型系统工程、恶劣环境及军事系统的首选。幽2--12.2.4UE—litUSB延长器U¥B设鲁控麓量三星公司¥3C2440的ARM微处理器内部集成一个USBHOST设备以及一个DEVICE设备,符合USBI1协议。利用HOSTi2可直接连接u盘等移动存储设备,同时可作为主控制器操作各种USB设备”“。本系统在设计时利用其HOST端口连接USB摄像头,实现系统的现场图像采集,选用的摄像头为普通“中芯微Zc301芯片”的CMOS摄像头,利用USB获得图像信息.系统中USBHOST接口由2“OCPU直接驱动,如图2—2:山东大学硕士学位论文图21系统USB连接方框图2.3根_嵌入式下位机的硬件设计2.3.1^触嵌入式处理器简介ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器约占据32位RISC微处理器70%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面n们。ARM微处理器有特点:(1)体积小、低功耗、低成本、高性能;(2)支持Thumb(16位)/ARM(32位)X2指令集且兼容8位/16位器件;(3)大量使用寄存器,指令执行速度更快;(4)大多数数据操作都在寄存器中完成;(5)寻址方式灵活简单,执行效率高;(6)指令长度固定。AR/v19系列微处理器在高性能和低功耗特性方面提供最佳的性能,主要应用于无线设备、仪器仪表、机项盒、数字照相机等。2.3.2∞24柏开发板QQ2440开发板是一款基于ARM9的开发板,它采用三星S3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。其采用SamsungS3C2440A,主频400MHz,最高533Mhz,板载时钟频率高达100MHz的64MSDRAM内存和掉电非易失的64MNandFlash,.支持3.5英寸到12.1英寸真彩色TFT液晶触摸屏,接口资源有1个10M以太网RJ一45接口(采用CS8900网络芯片)、3个串行口、1个USBHost、.1d'‘USBSlaveB型接口、电源接口,符合报靶系统作14耋:耋:皇i翟堡呈重垄墼堡些耋:为下位机的要求,本系统的下位机完全依托该开发板,其各部件标示如图2—3。幽2—32440开发板部件标示图2.4本章小结本章给出了自动报靶系统的硬件组成结构,讨论了系统中各个硬件的参数和一般的选用原则,根据本课题的要求选择了合适的硬件,介绍了其性能特点,并使用所选择的硬件搭建了课题的报靶系统。本系统的硬件结构如图2—3所示:圈2--4系统硬件结构圈第3章图像处理与判靶识别算法分析第3章图像处理与判靶识别算法分析任何图像处理系统都离不开图像的预处理和算法设计,本章从图像的格式入手对靶图像的预处理作了详细的论述,并在综合对比和实验的基础上提出了颜色模板判靶识别算法。3.1图像格式的分析一般的图像(即模拟图像)是不能直接用数字计算机来处理的。为使图像能在数字计算机上进行处理,首先必须将各类图像(如照片、图形、X光照片等)转化为数字图像。要实现系统的自动报靶功能,首先必须获得靶纸的数字图像,然后才能进行具体的图像处理和识别。因此,在介绍图像处理之前,我们先介绍一下格式。3.1.1二值化图像二值图像是指整幅图像画面内仅黑、白二值的图像,在它们之间不存在其他灰度的变化。在数字图像处理中,二值图像得到了广泛的应用n妇n羽,占有着非常重要得地位。这是因为,一方面有些需要处理的文字图像、指纹图像、工程图纸等图像本身是二值的;另一方面在某些情况下即使图像是有灰度的,我们也可以设法使它变成二值图像再进行处理(eP灰度图像的二值化)。这是考虑到实用的图像处理系统要求处理的速度高、成本低,而信息量大的灰度图像的处理资源占用量比较大,不能同时满足高速度和低成本的要求;此外,二值化图像能够用几何学中的概念进行分析和特征描述,比灰度图像优势大的多,已经成为图像处理的一个、重要的分支。3.1.2灰度图灰度图(Grayscale)是指只含亮度信息,不含色彩信息的图像,就像我们平时看到亮度由暗到明的黑白照片,变化是连续的n引。因此要表示灰度图,就需要把亮度值进行量化。通常划分成0至U255共256个级别,0最暗(全黑),255最亮(全白)。灰度图像只有灰度颜色没有彩色,是一种特殊的伪彩色图,在后面的图像处理中部分采用了灰度图。17山东大学硕七学位论文3.1.3JP髑格式图像ExpertsJPEG是JointPhotographicGroup(联合图像专家组)的缩写,文件后辍名为“.JPg"或“.jpeg”,是最常用的图像文件格式之一,是一种有损压缩格式,能够将图像压缩在很小的存储空间,图像中重复或不重要的资料会丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。比如可以把1.37Mb的BMP格式的位图文件压缩至20.3KB的JPEG格式的图像,当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。本文中图像存储格式为JPEG,在本系统中,物理靶图经普通摄像头采集,形成JPEG格式的图像,然后由嵌入式系统对图像灰度化、滤波、裁剪、减影、弹孔识别。采用这几种格式有利于提高处理速度。3.2靶图像的预处理报靶系统中摄像头摄取的靶纸图像有效部分主要由一系列同心深绿色圆环(部分圆环)和弹着点(子弹穿过靶纸后的弹孔图像)构成,进行判靶关键是将其中弹着点提取出来,这就涉及到图象处理与识别的有关理论和技术。系统对靶纸数字图像的处理分为两个阶段:图像预处理阶段和图像识别阶段。其中,图像预处理阶段处理不好,后面的工作根本无法展开。在实际应用中,系统获取的原始图像不是完美的,例如对于系统获取的原始图像,由于噪声、光照等原因,图像的质量不高,所以需要进行预处理,以有利于提取我们感兴趣的信息。本系统的图像预处理流程主要分为灰度化、图像校正、消除噪声、二值化、图像剪裁等,如图3-1所示:18第3章图像处理与判靶识别算法分析■I一一一一II量量量曼曼量量皇量曼曼量量鲁皇图3_13.2.1图像预处理流程图JPEfi彩色靶圈灰度化在经过取像环节之后,我们得到的是JPEG格式保存的图像,其包含的信息量比灰度图大很多,如果直接处理JPEG格式的彩色图,处理速度会明显下降,而且在精度方面与采用灰度图像处理几乎没有区别。因此在本系统中将其转换为灰度图后再进行处理,这不仅有效的缓解了处理速度上的矛盾,而且保证了足够的精确度。目前大部分图像处理方面的资料和文献Ⅱ私171中所使用的方法都是直接或间接的使用了这种思想。我们利用RGB空间到灰度空间的转换公式(3—1)得到靶纸的灰度图像。f(x,y)=O.114B(x,y)+O.587G(x,y)+0.299R(x,y)(3_一1)式中,f(x,y)为(x,y)位置的灰度值,B、G、R分别为(x,y)位置像素的蓝、绿、红色对应的彩色信息值。这一公式以损失色调及饱和度的代价保留了亮度信息,而这正是我们所需要的。很明显,转换公式中的绿色分量占有的分量最大,这正符合了人们的视觉规律。人们对环境中的绿色光的敏感程度是最高的,这也给我们带来了启发:可以通过设置挡板的颜色来调整弹孔的亮度,例如使用亮度最暗的黑色(R=O,6=0,B=0),可以保证在转换的过程中弹孔的亮度最暗。由图3—2可以看出,目标(靶纸)本身含有两种元素,白色靶环线、十环区、数字、背景和深绿色4q环区,如果加上黑色的弹孔,则使目标中的色彩元素变为三个,即白色、深绿色和黑色的弹孔,也就使的灰度化后弹孔更明显,如图3—3所示。19J厶f幽3—2原始靶酗3.2图3—3灰度化靶幽2圈量校正图像校正起源于数字图像变形技术(warping),是近年来图像处理领域中的一个新分支,它主要研究数字图像的几何变换,即图像中点与点之间的空间映射关后来被引入到医学系。该项技术虽早起源于对遥感图像的几何校正问题的研究,成像及计算机视觉领域。近年来,随着多媒体技术的普及,数字图像变形技术有了很大发展,并在基于图像处理的计算机视觉领域被广泛应用。在本报靶系统中通过实验可知,影响靶图的畸变主要有以下三种(如图卜3):埃尔米特变换、仿射变换和投影变换,而对靶图处理影响最大的则是埃尔米特变换,对于仿射变换和投影变换可以忽略不计,以下将对埃尔米特变换进行校正分析。埃尔米特变换又称剐体变换,也就是一幅图像中的两点问的距离经变换后到另一幅图像中仍然保持不变,其数学描述公式如下,假设无畸变的坐标系为(x,Y),有畸变的坐标系为(H,v),(X,Y)向(U,v)变换。在二维空间中,刚体变换畸变的公式为如下公式(3—2),故在校正时也应采取相反的刚体变换。fmax6y+flv=bx+ay+dUU厂]厂]b仿射变换幽3—0靶图畸变示意I鳘Ic投影变换a埃尔米特变换第3章图像处理与判靶识别算法分析如图3—4a,对其进行校正则是对其逆时针旋转的刚体变换。步骤如下:一是对其进行角点检测,并将所有检测到的角点按纵坐标捧序,则得有效靶图的右下角点a和左下角点B(或上两点连线上的点),如图3—4b中所示。二是计算需需旋转的角度a,如图3—4c。三是按a的角度进行相应的旋转得校正后的图3—4d。如以src(x,y)表示输入图像,以dst(x,y)表示输出图像,w为输入图像宽度,h为输出图像高度,则有公式(3—3):dst(x,Y)=src(4I%+^2虬+岛,4^+42yo+62)(3--3)其中^,=∞s(—口n‘,=sin(.-a),^,=一^:,如=.4m岛=詈,屯=ih,^为映射矩阵变形参数,』:卜·4z÷l【^如划.}‘}A}a)原始靶图b)角点检测圈百厣c)求取旋转角度圈d)校正扁靶图图3—4靶幽授正图山东大学硕士学何论文3.2.3图像滤波当图像经采集和输入到计算机的时候,由于周围环境的影响和输入转换器件(如光敏器件、A/D转换器等)性质的差别,使图像上含有各种各样的噪声和失真信息。图像噪声是影响系统各项性能指标的重要因素,因此为了可靠地进行特征提取等处理,必须消除噪声,校正失真。消除图像中的噪声成分叫做图像的滤波操作(Filtering)。对滤波处理的要求有两条:一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰,视觉效果好。滤波的目的就是为适应计算机处理的要求,消除图像数字化过程中所混入的噪声,以便提取出弹着点的特征作为图像识别的特征模式。滤波的方法有很多:均值滤波、中值滤波、边界保持类平滑滤波等n81。有些滤波过程消除噪声的同时又会不可避免带来平均化的缺点,即噪声虽然被消除,可图像灰度尖锐变化的边缘和线条却变的模糊不清。本系统图像受环境的影响出现点状和脉冲噪声较多,所以系统中采用既可保持边缘又能消除点状噪声和脉冲干扰的“中值滤波”法n钔。中值滤波是一种非线性信号处理技术,是一种典型的低通滤波器,对抑制图像中的噪声非常有效啪3。在一维形式下,中值滤波器是一个含有奇数个像素的滑动窗口,窗口中的像素的灰度值用窗口内各像素的中值代替。当13为奇数时,离散序列a。,a。…‰小aI的中值即是该序列中的一个元素,有(n-1)/2个元素在数值上小于或等于它,还有(n-1)/2个元素则大于或等于它。例如,窗口中各像素的灰度值为2,5,15,7,lO,则正中的像素灰度值由7取代。因为它是整理后数列2,5,7,10,15的中值。在这个例子中,如果15是单调增加数列中的一个噪声尖峰,则中值滤波将带来有效的改善。另一方面,15也可能是采集系统传输来的一个型号脉冲,那么滤波的结果会降低一些分辨率。二维N×N中值滤波比用一维NX1中值滤波更能抑制噪声。滤波窗口的选择为N×N,其中N为奇数。窗口正中像素的灰度值用中值代替。例如,窗口为3×3的情况,就是在9个采样值中从小到大取第5个值作为滤波器的输出。二维中值滤波窗口的选取随处理图像不同而异。一般来说,窗口选大时,除第3章图像处理与判靶识别算法分析了噪声受到抑制之外,平均化的效果强,使边缘信息受到损失。常用的窗口有线形(一维)、方形、十字形、圆形和环形等。针对胸_珂=靶图像的特点,我们选取3x3像索的方形窗口用于中值滤波,能够将滤波对弹着点圆形边缘的破坏降低到最小,基本满足了弹着点识别的边缘条件。图3—5中值滤波前靶圈幽3--6中值滤波后靶圉中值滤波的主要功能就是让与周围像素灰度值的差比较大的像素改取与周围像素接近的值,从而可以消除孤立的噪声点,由于不是简单的取均值。产生的模糊比较少。图3—5、图3—6对比了中值滤波前后的图像,可以看出原图中的一些孤立点噪声被滤除,而图像的边界信息并没有被过多的削弱。3.2.4啊●=值化的算法二值图像是指整幅图像画面内仅黑、白二值的图像,在它们之间不存在其他灰度的变化。二值化的方法虽然很多。啪1,但没有一种是可对任何对象都普遍适用的方法,在实际使用时,必须根据具体的处理对象而定,■值化的关键是要找到合适的闽值来匹分对豫和背景。设原扶度图像为f(x,Y),二值化后的图像为g(X,Y),t为闽值,图像二值化的数学描述如公式(3—4)所示:stx,,,={:?;i!,‘;;Y。’,27(3--a,根据门限选取方法的不同,有不同的一值化方法,如双峰法,微分直方嗣法山东大学硕十学位论文最大反差法,基于灰度的数学期望法,以及一些针对具体对象的二值化方法。下面对几种二值化方法进行讨论:3.2.4.1双峰法根据图像的灰度直方图,在有两个峰值(分别对应于图像中的对象与背景)存在条件下,在两峰的中间谷取阈值,此方法适用于图像的对象与背景差别大的情况,因为在这种情况下才可以找到明显的谷。如图3q。度图3川双峰法阈值3.2.4.2微分直方图法此算法思想是利用灰度变化率即微分来确定阈值o.如果图像中的对象和背景的边界处于灰度值急剧变化的部分,微分直方图法不直接利用其灰度值,而是利用其微分值。微分值是灰度的变化率,可有多种定义,比如某一像素和其周围领域n个像素的灰度差的最大值,或是各个差的绝对值的平均值,由此求出微分直方图。微分直方图的峰值就是所求阈值。此方法适用于图像的对象与背景的边界位于灰度值急剧发生变化的情况,它的微分直方图只含有一个蜂值。但对于边界附近灰度变化复杂的图像,此方法是不太奏效的。其如图3—7:度图3—7微分直方图法阈值第3章图像处理与判靶识别算法分析3.2.4.3互级方差最大值法(Maximumofinterclassvariances)该法最初由Fukunaga于1972年提出。实现原理是在图像的扶度直方图中,把图像的灰度值集合用闽值分为两组,当两组的组问方差和组内方差之比为最大时取阈值为门限,是基于两组的最佳分离来确定门限的一种方法。以上介绍的这3种二值化方法均属于全局阈值法,既根据图像的直方圈或灰度空间分布确定一个闽值,依此对整张扶度图像进行二值转化。此方法简单,对于目标和背景明显分离、直方图分布成双峰的图像效果良好,但对于光照不均匀、噪声干扰较大等原因使双峰图分布不成双峰的图像,效果不理想。因此很多学者还提出了运用局部阈值法和动态阈值法来确定阈值,既通过定义考察点的邻域,并由邻域计算模板,实现考察点灰度与邻域点灰度的比较,在非均匀光照条件等情况虽然影响整体图像的灰度分布却不影响局部的图像性质。从而使得局部闽值法较全局闽值法有更广泛的应用。局部闽值法的缺点是处理速度慢,容易出现伪影(Ghost现象)等。动态阈值法是一种自适应的二值化方法,它利用了像素本身及其邻域灰度变化的特征,由于充分考虑了每个像素邻域的特征,能够更好的突出背景和目标的边界,效果较好。由于本文所完成的系统在实时性上有较高的要求,所以我们一般选择满足精度要求的基础上运算速度较快的算法。因为本系统目标靶纸分布射弹且图像灰度化后只有白色和扶度靶图,边界灰度值急剧变化,微分直方围只含有一个蜂值,确定阈值比较简单,故依托开源计算机视觉库ol埘忙v对靶图进行二值化时采用全局闽值法中的微分直方图法,图像二值化的处理过程如图3—8:『『a)原始靶幽b)灰度化并校正后的图像J厶●c)中值滤渡后的图像d)二值化后的幽像圈3—8靶削一值化过程图3.2.5圈t剪冀摄像头摄取到的目标靶纸图像中除了正式靶环(有效部分)以外还有周围一些干扰部分,这些都与有效目标无关,降低了后续图像处理的速度和正确率。其次,目标越大就越容易产生噪声,处理起来也就越困难。所以在这里我们利用剪裁掉一部分无关的图像。所谓剪裁,就是指从一张较大的图片中截取我们所感兴趣的鄢部分图像数据。对于下图中的靶纸图像来说,我们所感兴趣的部分就是正式靶环区域,即矩形A、B、C、D所包含的图像区域。为了得到矩形A、B、C、D所包含区域的图像数据,只要知道A,B.C,D四个点的坐标就可以了.如图3—8所示:图3—9幽像裁剪示意圈简单讨}仑一下A,B,c,D四个点坐标的选定。拍摄图片前,必须对摄像头做一个定位。摄像头(CMOS)定位是要将摄像头同目标之『日J的相对位置确定下来。第3章图像处理与判靶识别算法分析其中包括了物理坐标的确定、取像范围的确定、摄像头焦距设定和提供均匀光照等工作。这一步做的好与坏直接影响到获取图像的质量,它是选择A,B,C,D四个点坐标的前提。因为如果初步得到的图像在尺寸上有较大的偏差,那么在选取同样数量像素值所包含的信息量就会相差比较大,不利于程序的处理工作。在做好摄像头定位工作之后,得到的各张靶纸图像可以认为在尺寸及图像质量上是相同的。也就是说,各张靶纸图像上的有效区域在整个图片上的相对位置是基本一致的。在此基础上,就可以进行有效区域的选择,即寻找最佳结合点的过程。如果区域选择大了,会影响后续工作的速度;如果区域选择小了,可能导致信息不能完全包含。方法一:对多幅原始图像在Pc机上进行分析统计,找出四个角点且认为以后拍摄的每张图像中四个角点的坐标值不变,从而对原始图像定点裁剪。其优点是编程简单,处理运算速度快,缺点是当图像大小有细微差别时会出现误差。方法二:在靶图灰度化、滤波、二值化基础上,在二值化图像上采取逐行逐列扫描的方法确定四个角点坐标。如由y---o行开始每点扫描,当遇第一个f【X,y)=O时,此时Y值所在行为胸环靶最上有效行,也就是前图中的AB线,A、B点的纵坐标即为此时的Y值。同理可动态得出A、B、C、D四个角点的坐标,进而进行裁剪。通过反复试验我们选择方法二,其能避免靶图有效部分成像大小有变化时的补充校正,如我们需要裁剪后的大小为220X220像素,当有效部分大小或方向有偏差时,按方法一裁剪的图像可能只有一部分有效区或无效区过大,这都影响后续的处理结果。应用方法二可动态裁剪有效区,并在裁剪后进行大小校正,这样能准确的保证220X220像素的有效区图像。图3—10为原始图像经过校正后裁剪前的灰度化的图像,图3—1l为裁剪后的灰度图像:山采人学珂!十学位论文削3一10裁剪前灰度削圈3一11裁剪后灰度圜由上图可以看出无用的信息被除去了,而且没有破坏目标图像,这样我们就可以把精力放在处理有效信息t。摄像头曝光量的选择应使图像中靶纸的颜色接近真实的颜色,焦距的确定应使图像清晰,且应使图像含有需要摄入的会部有效靶环数。3.3弹着点的识别3.3.1灰度图像蠢影技术在系统中的应用弹着点是在图像卜要提取j卫来的对象,弹着点提取过程的实质是对靶囤进行检测和分割,这是在臼动报靶系统中对靶图处理最为关键的一项.也是最困难的工作。对于不同的图像和不同的应用,要在众多的检测分割技术中选择个强合适最有效的,就必须要对图像性质进行分析。在率报靶系统中我们感兴趣的是弹着点,但军用靶的特点是外侧四边缘、io环圆心区、靶环线、头外侧和环值均为白色,其它区域均为深绿色。射击后靶图的扶度图上,有些弹着点落在亮区域,有些弹着点落在暗区域,且弹着点扶度和暗『夏域扶度的差别远远小于弹着点扶度和亮区域灰度的差别。这种情况下,要让撒靶系统能够自动在靶图的明略区域中分别统计弹着点扶度,选取合适的阈值就是件很麻烦的事情。实际上后一靶图只比前一靶图多了一个弹孔信息,因此,如果排除两幅图上相同的内容,则在第二张靶图像上只有弹孔,受此启发我们在本报靶系统中采用了个简单有效的方法,很好的实现了弹孔分割这一目的。这就是先对靶图像进行“减影”操作,清除弹着点以外的所有扶度变化,然后再进行闽值选择和图像二值化的处理”’。第3章图像处理与判靶识别算法分析所谓“减影”,也叫做“差影”,其原理是将前后捕获到的两幅靶图对应坐标的像素扶度值相减,得到的各点灰度差值组成新的结果图像。两个原图像中的所有相同背景由于扶度值相同,相减结果为0.在结果图像里面就是统一的暗区域。而结果图像中的亮区域是射击在后靶图上造成的新弹着点和前靶图E没有弹着点的对应区域灰度值相减形成的。这个亮区域就是我们要提取的对象物,它代表一个新的弹着点。下图表示“减影”操作的过程,其中,图3—12是射击前的靶图,图3—13是射击后的靶图,通过将这两幅图像相减,前后靶图像中的靶环线、数字和旧弹着点在结果图像中都被清除掉了,表现为扶度统一的暗背景。而后靶图像图3—13中弹着点相减时不能消除,它在结果图像图3一14中表现为亮点。图3一12射击前靶图图3—13射击后靶幽图314灰度嘲减影后图像图3一15减影后二值化图像通过减影过程我们能够看出,在弹着点识别之前先对前后靶图像进行减影处理还有一个好处是:排除掉了新的靶图像中那些原先已经存在的旧弹着点对弹着点识别的干扰,这样就使在下步的图像处理中目标比较单一,闽值的选取比较容易,也就无需对已有弹着点进行重复识别和标注,太大提高了自动报靶系统的可山东大学硕士学位论文用性和工作效能。用减影的方法来处理图像简单高效,它的数学算法如式(3—5):醇似∽={醌似y)一∥p∽力I其中:glp(x,y)是后靶图,(3_5)glb(X,Y)是前靶图,g‘@,y)是差影图。若前靶图某点像素灰度值小于后靶图中与其对应的像素灰度值,则做相减运算后的结果是负数,所以这里要取结果的绝对值。从图3一14中看出,经过减影操作之后的结果图像里只含有两种灰度分布的像素群:弹着点像素群和背景像素群,接下来我们就能很容易在这个结果图像中选取合适的阈值并将其“二值化"了。3.3.2减影后靶图的再次二值化本系统在实时性上有较高的要求,所以我们一般选择在满足精度要求的基础上运算速度较快的算法。在灰度化裁剪后的图像中,无用的靶背景和传输中产生的噪音都会转化为数据,并且和弹着点数据混在一起。如果按照传统的直方图方法,仅根据图像中像素灰度的统计性质,从概率的角度来为原始靶图像选择最合适的阈值是比较困难的。另外,室外靶场的环境和自然气候条件等因素的变化会改变噪声的性质和图像的画质。由于我们在前级处理中采用了图像减影技术,此技术使得在减影后的结果图像灰度中寻找阈值而不是在原始靶图像中,非常方便,而且减影后的结果图像几乎排除了上述所有的干扰,灰度分布基本稳定不变,确定的阈值不再受环境因素变化的影响,是固定的,自动报靶系统也不需承担自动阈值选择任务,系统工作效率明显提高,阈值选取的问题也得到了解决,结果如上图3—15。3.3.3弹着点坐标的判读模板匹配在检测弹着点时是一种常规的方法,它是把标准的弹着点图形(模板)放在靶图像中,检验图像和标准弹着点图形是否重叠(匹配)。这种方法容易受对象大小变化、旋转、扭斜等变动的影响。为此必须预先准备各种可能变形的弹着点模板。为了很好的匹配,还要预先进行规格化等预处理,且模板匹配算法的运算量很大,根本不适合用在嵌入式系统中。为此我们在66391对最常用的口径为7.62毫米的五四式手和81-1式自第3章图像处理与判靶识别算法分析动步弹着点进行了数据分析统计,当整张靶图缩d,至U220x220像素时,7.62毫米子弹弹着点为接近直径为4个像素的圆,在选取合适的阈值时其最终的二值化图上为4-8个像素点的概略矩形,其中6个像素点的矩形约占75%,这为下步弹着点坐标的判读提供了实验基础。本系统中我们通过对试验中弹着点数据的分析统计,且考虑要处理的图像数据不是很大(220X220的二值图像),运用逐点分析法确定弹着的坐标。经过减影和二值化处理后的靶图像,背景数据灰度值统一为0,弹着点像素灰度值统一为255,由f(O,O)点逐点检测时,当f(x,y)=255时,此时认为检测到第一个弹着点,此点是弹着点矩形的最左上角像素点,根据前面的分析统计数据,故其弹着点中心坐标为@+2,y+2)。尔后以@+2,y+2)为圆心做半径3个像素、灰度值为0的圆,再接着由f(x,Y)点继续扫描直到整个图像。3.3.4中弹数及环数判定算法由于胸环靶的有效环值区不是规则的,其不同于射击运动所用的靶纸。目前很多文献资料瞄钔汹¨矧所介绍方法都是用于射击运动图像处理的,如通过求弹心与靶心距离的方法判定环值、从靶心和弹心连线对发生像素灰度值阶跃变的次数进行计数判定环值,但这些判定方法都不太适合胸环靶。本文采取的是通过创建环值区域的方法来实现弹着点环值的判定,这样判定弹着点环值实质是判定弹着点在胸环靶中所处的区域,知道每个区域所对应的环数也就知道了该区域内弹着点的环值。3.3.4.1颜色模板法有不少文献提出根据lO环的圆心和各个圆环表达式来创建环值对应区域,通过实验发现,要检测圆心和各个圆环即使用最简单的Hough变换,运算量在嵌入式系统上也算非常大,不适合实时性要求,且通过实验也发现在像素不高时Hough变换来检测圆也易失败,为此就要寻找更快捷的算法或方法。受到儿童拼图游戏的启发(比如一朵花的拼图,花心是黄色的、花瓣是红色的、叶子是绿色的,其有一一对应的关系),我们提出了颜色模板法:设计一张220X220像素的彩色靶图,其各个环值部分对应不同的颜色,通过上节得出的弹着点坐标到彩色靶图上读取相应点的颜色值,根据得到值进行环值判定。通过试验我们在本系统中应用了比彩色模板运算更快的灰度模板。具体设计如图3—16、图3—17所示:图3-16灰度模板设计示意图图3一17灰度模扳应削示意图3.3.4.2环数的判定方法军事训练确定弹着点环数的方法有两种:一种是“粘边就算”的判靶方法,即命中靶环线的弹着点不论它在哪个环形区域的面积大~些都一律取大的那个环数。另外比较精确的一种方法是考察弹着点的最大部分面积处于哪个环值区域内。比如弹着点命中在8环和9环的交界处(击中靶环线),如果弹着点面积的大部分是在8环区域内则该弹着点就判定为8环,否则就应该是9环。这个方法的实质是考察弹着点的中心在哪个区进而就能判定该弹着点的环数,这也是本系统中采取的判定方法。第3章图像处理与判靶识别算法分析从整个报靶系统的工作过程来看,本报靶系统没有像其它报靶系统那样在整个靶图像上分割弹着点,而是利用灰度图作减影分割,再对减影后的图像二值化,进而通过求取弹着点坐标后利用灰度图模板实现环值判定,算法实现容易,减少了后序处理的工作量。3.4本章小结本章对判靶系统的图像处理进行了研究,分析了图像灰度化、中值滤波、裁剪和二值化的方法,提出了适合嵌入式系统的颜色模板判靶算法,并通过试验进行了验证。33第4章军用自动报靶终端的软件实现第4章军用自动报靶系统的软件实现嵌入式系统的设计遵循软硬件协同设计的思想,软件的设计应始终围绕着它所对应的硬件,尤其在驱动程序设计时,软件的设计应该和底层硬件紧密结合起来,在必要时需要相互的调整。归纳起来软件的设计包括Bootloader编写移植、LinuxKernel的交叉编译与移植、设备驱动的编写和应用程序的编写∞1。嵌入式Linux平台软件的结构如图4—1所示。库文件、程序(Application)』土交叉编译/1图4一l嵌入式Linux软件结构图本报靶系统开发过程中,硬件设计是整个设计的基础,而软件设计是本系统的关键。为保证设计软件对嵌入式Linux系统的可移植性,整个系统在ARMMLinux交叉编译环境中依托Q仡(嵌入式Qt)开发,并对开源计算机视觉库OpenCV进行了ARM开发板移植。本章从介绍Linux和嵌入式Linux操作系统入手,重点论述了开发环境的搭建、q/E和OpenCV的移植、采集模块的编写、判靶识别模块的编写以及上位机软件的编写与调试,给出了部分关键代码,并进行了上机初步测试。4.14.1.1Linux操作系统和嵌入式Linux操作系统概述nux操作系统简介LiLm_ux是标准的免费操作系统,它具备Unix系统所具备的全部特征,包括多任务、虚拟内存、共享库、需求装载、优秀的内存管理和TCP/IP网络支持等,能够实现全部的Unix特性,具有多任务、多用户的能力。其软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器的应用程序以及带有多个35山东大学硕十学位论文窗口管理器的X.Window图形用户界面。Linux操作系统是一个极其优秀而且免费的操作系统,其在短短的时间内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。简单地说,Linux具有以下主要特点例:(1)是真正的多用户、多任务、多平台操作系统。(2)源代码是开放的,任何人都能修改和更新发布它:(3)提供shell命令解释程序和编程语言:(4)提供强大的管理功能:(5)具有内核的编程接口:(6)具有图形用户接口:4.1.2嵌入式Linux操作系统对于嵌入式Linux操作系统,根据外部设备和存储空间等情况,需要对系统进行裁剪,裁剪主要通过减小内核,减小动态链接库,减小应用程序等减少各种代码占用空间的方法,以及压缩文件系统来实现。另外,嵌入式系统还需要增强实时性,可以通过修改进程调度算法和使用双内核系统等方法实现。Linux具有的网络功能,可以满足嵌入式系统对网络越来越多的需求,同时,嵌入式Linux也可以使用桌面系统广泛使用的图形界面,具有良好的交互性。其应用于嵌入式系统的另外一个显著的优势就是可以使用主机模拟的环境进行开发,因为在嵌入式设备上运行的Linux系统与普通的桌面Linux系统几乎完全相同,这对应用程序的开发提供了很大的便利。开发者可以在桌面Linux环境下编写和调试程序,完成后的直接放到嵌入式系统中,这样嵌入式系统的开发就有大量的资源可以利用。目前,基于Linux的嵌入式操作系统有:ucLinux:对标准Linux的进程和内存管理进行改写,以适应无MMU单元的ARM的嵌入式系统,其对内存的管理采用实存储管理策略(realmemorymanagement),也就是ucLinux对内存的访问是直接访问物理地址,各个进程实际上共享一个运行空间。这和8051单片机的软件运行方式相似。RTLinux:RTLinux是NewMexicoTech大学由VictorYodaiken指导的一个小组研制的一个特殊的Linux变种。RTLinux的研制者们并没有针对实时操作系统的特性重写Linux内核,这样的工作量非常大,而且要保证兼容性也非常困难。为此他第4章军用自动报靶终端的软件实现们采用了~种独特的方法,开发了一个很小的可抢占式的实时微内核,并把标准的Linux内核作为微内核的一个进程同用户进程一起调度。这样的好处是对Linux的改动量最小,充分运用了Linux下现有的丰富的软件资源。用户可以根据具体的实时应用编写实时任务,实时任务和标准的Linux进程之间通过系统提供的实时先入先出队列进行通信Miziinux:其是三星公司为ARkl7和ARM9微处理器依据Linux内核裁剪定制的嵌入式操作系统,也是本课题所用嵌入式操作系统。4.2软件开发环境4.2.1PC机操作系统Linux最重要的就是核心程序(Kernel),除此之外操作系统还需要其它的各种系统程序及应用程序才能发挥作用。这些程序大多数也是自由软件,可以免费从网络上取得,只是用户自行一一安装这些程序非常不方便,所以就有一些公司团体整合了系统、应用程序及核心,成为Linux发行版本。现在比较有名的Linux发行版本是:RedHat、Debian、TurboLinux、红旗Linux、蓝点Linux等。RedHat所收集的应用程序较多,.稳定性也较好,因此,本系统选择RedHat9.0作为宿主机系统操作平台。4.2.2交叉编译环境的建立由于一般嵌入式开发系统存储大小有限,通常需要在强大的PC机上建立一个用于目标机的交叉编译环境。什么是交叉编译呢?简单地说,就是在一个平台上生成另一个平台上的可执行代码。运行Linux的PC宿主机开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86Linux平台实际上是Intelx86体系结构和Linuxforx86操作系统的统称;而x86WinNT平台x86操作系统的简称圆1。由于在嵌入实际上是Intelx86体系结构和WindowsNTfor37山东大学硕士学位论文式系统上无法安装编译器,因此要借助于PC机,在PC机上对即将运行在ARM嵌入式上的应用程序进行编译,生成可在该机上运行的代码格式。Linux下开发环境的建立主要就是建立交叉编译环境,本课题以RedHat9.0建立一个能编译ARM.1inux内核及驱动、应用程序等开发环境。一般来说,交叉编译工具主要由二进制工具程序(binutils)、编译器(gcc)和C链接库(glibe)几个部分组成啪1。建立一个交叉编译工具链是一个相当复杂的过程,互联网上有一些编译好的可用的交叉编译工具链可以下载,步骤如下:先下载ARM·linux—gee·3.3.2.tgz、ARM-linux—gcc-2.95.3.tgz和ARM—linux—gee一3.4.1.tgz三个编译器的源码并拷91.至Uredhat9.0的某个目录下,如tmpX,然后进入到该目录,执行解压命令:#cd\tmp#tarxvzfARM-linux-gee-3。3。2.tgz·C|#tarxvzfARM-linux-gee-2.95.3.tgz—C/#tarxvzfARM-linux—gee一3.4.1.tgz-C/执行该命令,将把ARM.1inux.gee(版本3.3.2,2.95.3和3.4.1)分别安装到/usr/loca/ARM/2.95.3和/usr/loca/ARM/3.4.1目录,其中3.3.2版本是用来编译Qtopia/Embedded的,2.95.3版本是用来编译VIVI的,3.4.1版本是用来编译内核的,两个版本均可以用来编译应用程序等。尔后运行命令#gedit/b洲.bashrc,编辑/r0洲.bashrc文件,在最后行加代码:exportPATH=¥PATI{:/usr/loca/ARM/3.4.1/bin。4.2.3编译模拟Qt/E(嵌入式Qt)和Qtopi-的∞机环境编译模拟Qt/E和Qtopia的PC机环境比较复杂,本文参考了文献b妇∞1,并结合本系统的实际分为以下步骤编译:第一步:在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded的免费版本x86一qtopia.tgz至O/tmp并解压到某一目录,如至U/opt/FfiendlyARM/QQ2440,然后设置相关库的路径,为了在PC上模拟运行Otopia,需要用到对应Qt版本的库文件,因此需要修改/etc/ld.SO.conf文件以适应自己将要安装的Qt开发平台(Redhat安装时带有q库,但不适合我们最新安装的版本),修改后的Id.SO.conf"文件内容如下:/opt/FriendlyARM/QQ2440/x86-qtopia/qt/lib/opt/FriendlyARM/QQ2440/x86-qtopia/qtopia/lib第4章军用自动报靶终端的软件实现/usr/kerberos/lib/usr/X11R6/lib/usr/lib/sane/usr/lib/mysql第二步:解压安装包并设置环境变量1.安装Tmakecd/opt/FriendlyARM/QQ2440/x86-qtopiatar-xzftmake-1.13.tar.gzexport邯MAKEDIR-¥PⅥD,tmal【c—1.132.安装Qt2.3.2cd/opt/FriendlyARM/QQ2440/x86-qtopiatar-Xzfqt-xl1-2.3.2.tar.gzexportQT2DIR=¥PWD/qt-2.3.23.安装Qt/Embeddeded/opt/FriendlyARM/QQ2440/x86一qtopiatar—x玎qt—embedded-2.3.7一free.tar.gzexportQTEDIR=SPWD/qt-2.3.7环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包,下面介绍一下这些环境变量:TMAKEDIR:指向用于编译Qt/Embedded的Tmake工具QT2DIR:指向Qt.X1l2.3.2的文件夹QTEDIR:指向Qt-Embedded2.3.7的文件夹第三步,编译Qt/Embedded。1.BuildcdQt2.3.2SQT2DIRexportTMAKEPATH=¥TMAKEDIR/lib/linuX—g斗斗exportQTDIR=¥QT2DIRexportPATH=¥QTDIR/bin:¥PATHexportLD—LIBRARN,ATH=¥QTDIR/Iib:¥LD_LIBRARN,ATH./configure-no—xfimake山东大学硕士学位论文mkdirSQ’I’EDIR厂binepbin/uic¥QTEDIR/bin/./configure是对Qt进行配置。编译完成后需要将生成的/bin/uic复制到¥QTEDIR下新创建的目录bin中,因为在随后编译Qt/Embedded的时候会用到这个工具。2.BuildexportexportexportexportQvfbTMAKEPATH=¥TMAKEDIR/lib/linu)【一g++QTDIR=¥QT2DIRPATH=¥QTDIR/bin:¥PATHLD—LIBRARY.-PATH=¥QTDIR/lib:¥LD_LIBRARY—PATHcd¥QTEDIR/tools/qvfbtmake-OMakefilemakemvqvfb¥QTEDIR/bin/qvfb.pro这一步buildqvfb并建立了从Qt/Embedded2.3.7至UQt2.3.2的静态库的链接。其中qvfb-1-具用来生成Virtualframebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示,如果在Virtualframebuffer中运行没有问题的话,可以直接通过交叉编译在开发板上运行。3.BuildQt/Embeddedcd¥QTEDIRexportexportexportTMAKEPATH=¥TMAKEDIR/lib/qws/linux·x86-分HQTDIR=¥QTEDIRPATH=¥QTDIR/bin:¥PATHexportLD_LIBRARY_PATH=¥QTDIR/lib:¥LD_LIBRARXjATH./configure-no—xft—qVfb—depths4,8,16,32-syestem-jpegmake在配置./configure中,一qvfb用来支持Virtual来支持4,8,16,32位的显示深度,framebuffer,-depths4,8,16,32用·syestem-jpeg提供对jpeg格式的图像支持。图4—2是Qtopia在宿主机上的运行结果:≮1妊圈蜀冠圃霜露日墨匣曩【■丽EIe釜:耋王皇自量堡翟兰兰堂茎盐耋銎view一pplicaUonsBelpIl田【蜜【鸯【曾国Clock&一Contacls““w驰@画H。P锣@hA“3‘。国’1囱IIFilesN01。。=i5磊鬻…Ta5b一|{ljTermm“Today止口冈c匐圜幽4—2燕露{UP—TECH睦臼:{IJOtopJa宿主机界面4.2.4开爵计算机视觉库op帅cv的陷机墒译Op∞cv是hnel@开源计算机视觉库。它由一系列C函数和少量c++类构成,实现了图像处理和计算机视觉方面的很多通用算法,其具有一定的跨平台性,运用不同的编译器可编译为适用不同硬件平台的Opencv库㈨。下面介绍在x86平台的编译方法,在后面的章节将会介绍在APdd平台的编译方法。第‘步:编译安装OpenCV库,下面是编译命令:#tar-xzvfopencv-099targz#/configure—with-quicktime--no~with—ffmpeg#make#makeinsmll第二步:修改相关配置,修改/etc/Id.soconf文件,添加--行-/usr/local/lib,然后将/usr/local/lih,pkgeonfigdP!拍openevIX:拷贝到,usr九ih巾kgconng中,到此opencV就编译安装到宿主PC机上。4.3嵌入式LINUX操作系统及OpenCV的移檀本系统嵌入式Linux操作系统的移植主要有以F步骤:格式化NandFlash、安山东大学硕+学位论文装bootloader、安装内核文件和根文件系统、编译并移植开发板运行的Qtopia、开源计算机视觉库OpenCV的移植。4.3.1NandFIash进行分区首先以Windows/2000/Ⅺ,为工作环境,安装开发板的USB驱动,方法安装了USB驱动,并把开发板设置为NorFlash启动,输入:bonpart0320k2368k对板子进行分区。说明:bon是分区命令,以上命令的意思是把NandFlash从0开始分为三个区:0.320k:大小为320k320k-2368k:大小为2M2368k.64M:大小为62M4.3.2系统引导程序bootIoador—vivi引导加载程序是系统在启动时所运行的第一个程序,在PC机中的引导加载程序是由主板固件程序BIOS和位于硬盘MBR中的LILO或GRUB一起组成的。BIOS在完成硬件检测和资源分配后,将LILO或GRUB读到系统的内存中,然后将控制权交给LILO或GRUB。在嵌入式系统中,通常没有像BIOS这样的固件程序(但有的微处理器会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。例如,在一个基于ARM920Tcore的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,通常这个地址存放的是系统的BootLoader程序㈨㈨。本系统采用vivi作为其bootloader,其源代码包vivi.tgz可由互联网上下载,尔后把vivi.tgz复制到某一个目录,进入该目录,运行以下命令:#tarxvzfvivi.tgz-C/opt/FriendlyARM/QQ2440执行该命令将把vivi源代码解压至U/opt/FriendlyARM/QQ2440目录,进行编译后生成引导程序,通过USB接口把引导程序烧写到开发板的NandFlsah分区中,注意一定要vivi烧写到NandFlash的0地址。4.3.3嵌入式操作系统的内核裁剪、编译与安装内核是操作系统的核心,它完成操作系统最基本的功能,例如:进程调度、磁盘管理、设备管理、网络管理等,其实现算法或方式的优劣将直接影响整个操作42第4章军用自动报靶终端的软件实现系统的性能,以及基于操作系统的应用程序的性能嘲。由于嵌入式系统的资源相对匾乏,其软硬件设计与具体应用紧密相关并受到应用环境的严格,因此,作为嵌入式系统支撑软件的嵌入式操作系统必须具有较小的体积以及较高的可配置性和稳定性以应付系统开销。因此Linux在部署到资源受限的嵌入式系统之前,必须对其进行特定的、多个层次上的裁剪,从而达到定制系统功能、减小嵌入式Linux系统的体积、提高系统运行效率等设计目标。Linux内核在开发时采用模块化的设计,即在内核实现中按功能分别设计可增加或删除的功能模块,并将这些功能模块设置成内核配置的选项,在编译系统内核时调用命令“makemenuconfig”来根据应用需求进行取舍。因此,使用Linux系统本身所提供的内核编译工具,对Linux内核进行重新配置和编译,可以裁剪出不同的Linux内核.通过在编译时选择嵌入式系统所需要的功能支持模块,同时删除不需要的功能,可以使编译出来的内核体积显著减小,从而缩减资源使用量。在内核的移植中参考了相关文献阱3和部分网络资源。编译时首先下载Linux内核的源代码包,然后把内核源代码包复制到某一个目录,我们选择linux-2.6.13.tgz内核版本,进入该目录,运行以下命令:#tarxvzflinux一2.6.13.tgz—C/opt/FriendlyRM/QQ2440编译内核时选中如下选项:<·>Supportforframebufferdevices<·>S3C2410LCDframebuffersupport<·>Touchscreeninterface<·>Eventinterface<·>Samsung¥3C2410touchscreeninputdirver<·>VideoForLinux<·>USBSPCA5XXSunplus/Vimicro/SonixjpegCameras<牛>OmniVisionCameraChip<搴>NFSfilesystemsupportsupportsupport输入以下命令,开始编译内核:<·>ProvideNFSv3client#makezlmage编译结束后,会在arch/ARM/boot目录下生成linux内核映象文件:zImage,通过USB接口烧写到开发板的NandFlash中。43山东大学硕十学位论文4.3.4编译开发板运行的口t印i-并制作根文件系统Linux采用文件系统组织系统中的文件和设备,为设备和用户程序提供统一的接口。Linux支持多种文件系统,如Fatl6、Fat32、NTFS、Ext、Ext2、Ext3、cramfs、yaffs等。虽然Ext2文件系统是通用Linux中较常用的文件系统,但它不是针对嵌入式系统的,没有考虑存储空间的问题,不适用于嵌入式Linux系统。由于存储介质的多样化,嵌入式Linux根文件系统需针对具体的存储介质构建。本系统在NandFlash中创建yaffs文件系统。yaffs中,文件是以固定大小的数据块进行存储的,块的大小可以是512字节、1024字节或者2048字节。这种实现依赖于它能够将一个数据块头和每个数据块关联起来,且支持可读写,是比较新的文件系统。每个文件(包括目录)都有一个数据块头与之相对应,数据块头中保存了ECC(EITOrCorrectionCode)和文件系统的组织信息,用于错误检测和坏块处理。充分考虑了NandFlash的特点,yaffs把这个数据块头存储在Flash的16字节备用空间中。当文件系统被挂载时,只须扫描存储器的备用空间就能将文件系统信息读入内存,并且驻留在内存中,不仅加快了文件系统的加载速度,也提高了文件的访问速度。本系统以广州友善之臂计算机科技有限公司为QQ2440开发板提供的已编译好的yaffs文件系统——Toot.default.img映象文件为基础,制作包含Qt/E、Qtopia的根文件系统并烧写到开发板中。第一步:在宿主机上下载用于在ARM开发板上运行的Qtopia开发包ARM-qtopia.tgz至lJ/tmp并解压至U/opt/FriendlyARM/QQ2440。设置ARM—linux-gcc编译器为3.4.1版本,执行以下命令进行编译:tarxfvztarxfvztmake-1.11.tar.gzqt—embedded-2.3.7.tar.gztarxfvzqtopia-free一1.7.0.tar.gztarxfvzqt-xl1-2f3.2.tar.gztarxvzfkonqueror-embedded—snapshot-20030705.tar.gzmvkonqueror-embedded-snapshot一20030705koIlqmvtmake.1.1ltmakemvqt-2.3.7/,itmvqtopia-free·1.7.0qtopiamvqt.2.3.2qt-x11cdqt-xllexportQTDIR=¥PWDmake—Csrc/moccpsiclmoclmocbinmake.Csrcmake-Ctools/designermake-Ctools/qvfbcptools/qvfb/qvtbbincd。cpqt.xl1/bin/?·qt/binrm-丘qt-x11exportQTDII净¥PWD/Iqt‘exportQPEDIR=¥PWD/qtopiaexportTMAKEDIR-¥PWD/tmakeexportTA嗄AKEPATH=¥TMAKEDIR/Iib/qws/Iinux-ARM—gHexportPATH=¥QTDIR/bin:¥QPEDIR/bin:¥TMAKEDIR/bin:¥PATHcdqtmakecleanep../qtopia/sic/qt/qconfig-qpe.hsic/tools/./configure—system-jpeg·gif—system—libpng-system-zlib-platformlinux-A砌“-妒斗·qconfigqpe·depths16,24,32make-CSICcd。edqtopia/sic./configure-platformlinux-ARM一妒斗makecd.exportAR=ARM-linux·at"exportSTRIP=ARM··linux·-stripexportexportC)C疑删·linux-∥斗RANLIB=A剐M—linux-ranlibexportCCC=ARM·linux—c++exportCC=ARM--linux··geeexportCROSS—.COMPILE=IexportPATH=¥PATH:/usr/loca/ARM/3.3.2/billexport斟STALL=/usr/local/ARM/3.3.245山东大学硕十学位论文cdkonq./configure--host=ARM-linux·-target=ARM-linux-一enable—embedded--enable—qt-embedded-一enable-qpe-一wim-gui=qpe一-disable-debug--enable-ftp..enable.static..disable.shared..disable.mt--with·extra-libs=/usr/local/ARM/3.3.2/Iib:¥QPEDIRAib一·with·extra-include=/usr/local/ARM/3.3.2/include:¥PQEDIR/include一-without—ssl—with-qt—dir=¥QTDIR—with—qt-includes=¥QTDIR/include一-witll-qt-libraries=¥QTDIR/lib一-with-qtopia-dir=¥QPEDIRmakecd.第二步:执行如下命令制作更新文件系统用的Qtopia压缩包,将生成targe乙伊opia,tgz:exportQTDIR=¥PWD/qtexportQPEDIR=¥PWD/qtopiaexport1]MAKEDIR=¥PWD内makeexportTMAKEPATH=¥TMAKEDIR/lib/qws/linux-generic—g++exportPATH=¥QTDI购in:¥QPEDI灿in:¥TMAKEDII洳in:¥PATHmkdir-P./opt/qt/lib/fontsep-a¥QTDIRAib/lib·./oplgqt/libmkdir-P./opt/qtopiaexportTARGE£QPE=./opt/qtopiacp—a¥QPEDIR/bin¥TARGET二QPEcp-a¥QPEDIR/etc¥TARGET.-QPEcp.a¥QPEDIR/il8n¥TAI沁ET--QPEep—a¥QPEDIR/Iib¥TARGET_QPEcp-a¥QPEDIR/pics¥TARGET-.QPEep-a¥QPEDIR/plugins¥TARGET--QPE叩一a¥QPEDIR/services¥TARGET--QPEtarzcvftarget_qtopia.tgz./optrnl-rf./opt第三步:执行如下命令制作更新文件系统用的浏览器压缩包,将生成target_konq.tgz:mkdir-p./opt/qtopia/binmkdir-p./opt/qtopia/apps/Applicationsmkdir—P./opt/qtopia/picsmkdir-p./opt/kde/share/apps/khtml/cssmkdir-p./opt/kde/share/config第4覃军用自动报靶终端的软件实现cpkonq/konq-embed/src/konqueror./opt/qtopia/bincpkonq/konq-embed/src/konqueror.prig./opt/qtopia/picscpkonq/konq-embed/src/konqueror.desktop./opt/qtopia/apps/Applicationscpkonq/konq-embed/kdesrc/khtml/css/html4.CSS./opt/kde/share/apps/khtml/csscpkonq/konq-embed/kdesrc/kdecore/charsets./opt/kde/share/configtarzcvftarget_konq.tgz./optrrn·rf./opt第四步:我们用target_qtopia.tgz和target_konq.tgz这两个文件,更新替换原来开发板的qtopia系统。#cd/opt/FriendlyARM/QQ2440/root_qtopia_mouse#tarxvzf。/ARM-qtopia/target_qtopia.tgz(更新Qtopia系统)#tarxvzf../ARM-qtopia/target_konq.tgz(更新嵌入式浏览器)第五步:制作根文件系统并烧写到目标板制作yaffs文件系统映象需要使用mkyaffsimageI具程序,在此,我们以开发板提供的rootmkyaffsimage.tgz文件系统基础,来制作ya凰文件系统首先,把光盘中的mkyaffsimage.tgz文件拷贝到某一个目录,进入该目录,然后执行以下命令:#tarxvzfmkyaffsimage.tgz—C/usr/shin,这将把制作工具mkyaffsimag安装到系统的可执行路径//usr/sbin:其次,下载开发板的rootmkyaffsimage.tgz至U某一个目录,进入该目录,然后执行以下解压命令:#tarxvzfrootmkyaffsimage.tgz-C/opt/FriendlyARM/QQ2440,把文件系统解压。再次,根据上节已经制作好Ttarget_qtopia.tgz和targetkonq.tgz两个文件,更新文件系统,执行如下命令:#tarxvzf../arm-qtopia/target_qtopia.tgz(更新Qtopia系统)、#tarxvzf../ann-qtopia/targetkonq.tgz(更新嵌入式浏览器)、#mkyaffsimageroot—mkyaffsimagemy_qtopia.imgO,然后用USB把my_qtopia.img烧入板子就可以了。4.3.5开源计算机视觉库0pen0V的移檀前面介绍YOpenCV是Intel圆开源计算机视觉库,它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法,同时它于操作系统、硬件和图形管理,具有通用的图像和视频处理功能。OpcnCV库不依赖于操作系统和硬件的特性保证了它对于ARM硬件系统的可移植性汹1。由于ARM处理器和X86处理器在构架上的不同,cvRoundO函数(功能是取47山东大学硕十学位论文最近似的整数)在ARM平台不能正确输出,为此在cvRoundO函数源码中加入“pfintf(”f=%£%d,%dha”,temp.£(im)(temp.U>>32),(int)(temp.U&0xFFFFFFFF));”进行测试发现问题出在cvRound返回值处,具体代码分析如下:intcvRound(doublevalue){#if1Cv64suftemp;temp.f=value+6755399441055744.O;printf(”f=%£%d,%dXn”,temp.£(int)(temp.U>>32),(int)(temp.U&0xFFFFFFFF));return(im)temp.u;#endif>pc(g++编译)和ARM(ARM.1inux编译)平台执行cvRound(3.4678),PC:f=675539944l05547.00000,1127743488,3ARMtf=675539944105547.00000,3,1127743488也就是说64位转32位时,内存中的数据高32位和低32位刚好相反,因此不能正确输出,为此要对源码进行修改。OpenCV库的ARM平台编译安装步骤如下汹1:第一步:修改cvRound源码,使返回值为return(int)(value+o.5)。第二步:生成Makefile文件。执行./configure-prefix=/usr/loca】/ARM/3.4.1/ARM-linux—host=ARM-linux~without-gtk-···without·-carbon--without··quicktime··-·without-13941ibs·—·-without··ffmpeg-without—python一·without-swig--disable-appsCXX=ARMv41一unknown·linux-gr.+.+CPPFLAGS--.1/usr/loc鼋沁K忌Ⅻ3。4、|K心讯...1inux/include/usr/loeal/ARM/3.4.1几堰M.1inux/lib路径下。第三步:执行make,makeinstall,贝lJOpenCV库被安装在第四步:拷l贝OpenCV的动态库到开发板的/lib/目录下,完成安装。4.4系统的软件设计本系统的软件设计分为三个模块,分别是图像采集模块、判靶识别模块、报靶系统界面模块,下面我们将分别介绍。4.4.1图像采集模块程序设计一般的图像(即模拟图像)是不能直接用数字计算机来处理的。为使图像能在45第4章军用自动报靶终端的软件实现数字计算机上进行处理,首先必须将各类图像(如照片、图形、x光照片等)转化为数字图像。要实现系统的自动报靶功能,首先必须获得各射区靶纸的数字图像,然后才能进行具体的图像处理和识别。在实验中我们对各种分辨率的图像进行了比较,认为在不影响判靶精度且符合实时性要求的前提下选择352X288的图像最为合适。下面介绍在嵌入式Linux下依托Vide04Linux图像采集程序的编写。4.4.1.1Vide04Linux简介Vide04Linux(简称“V4L")是Linux下用于获取视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现影像/图片采集、AM/FM广播、频道切换等功能,在远程会议、可视电话、视频监控系统中都有广泛的应用。在Linux下,所有外设都被看成是一种特殊文件,称为“设备文件",可以象访问普通文件一样对其进行读写。一般来说,采用V4L驱动的摄像头设备文件是/dev/v41/videoO。为了通用,可建立一个至tJ/dev/videoO的连接。V4L支持两种方式来捕获图像:mmap(内存映射)和read(直接读取),其在include/linux/videodev.h文件中定义了一些重要的数据结构,在进行图像的采集过程中,就是通过对这些数据的操作来获得最终的图像数据m3。具体步骤如下:(1)打开视频设备;(2)读取设备信息;(3)更改设备当前设置(可以不做);(4)进行视频采集,两种方法分别为内存映射法和直接从设备读取法;(5)对采集的视频进行处理;(6)关闭视频设备。定义的数据结构及使用函数如下:structjAl一struct{intfd;structvideo_capabilitycapability;structvideo——bufferbuffer;structvideo—.windowwindow;structvideo—.channelchannel[8];structvideo_picturepicture;structstructvideo_mmapmmap;video_mbufmbuLunsignedchar·map;,;.typedefstruct__v41_structv41_device;49山东大学硕十学能论文externintexternv41_open(char·,v41一device·);m‘tv41_elose(v41_device幸);l’ntextemexternexternv41_get__eapability(v41device·);setm。tv41norm(v41_device·,int);m‘tv41_get_picture(v41_device·);extemm。tv41__grab_init(v41_device·,int,int);externl。ntv41_grab_frame(v41_device·,int);extemm。tv41_grab_sync(v41_device幸);extemintv41_mmap_init(v41_device·);externintv41_get_mbuf(v41_device·);extemintv41_get__picture(v41_device·);extemintv41_grab_picture(v41_device幸,unsignedint);extemhatv4lsetbuffer(v41device·);extemintv41_get_buffer(v41_device·);externintv41_switch_channel(v41_device掌,int);4.4.1.2图像采集初始化摄像头设备在图像采集过程中,采用V4L的read方式直接读取设备来获取JPEG格式的图像数据,具体流程如图4—2所示H订H幻。第4章军用自动报靶终端的软件实现打开视频设备(open(“/dev/vide00”,O.RDWR))妙初始摄像头(设定vdIn,videopicture数据结构成员)弋夕设定待采集图像的各种属性(palette,width,height等)弋夕读取帧数据(read(vd-)fd,vd-YpFramebuffer,size))弋夕ll将捕获数据转换成.jpeg格式(convertframe(ptframe,pFramebuffer,framesizeIn))弋夕将转换后的数据保存到.jpeg文件I(fwrite(pFramebuffer,jpegsize,1,fp))图4—2V4L采集图像流程图指定要操作的摄像头设备文件/dev/vide00,调用openO打开该设备文件,将自定义的数据结构vdIn中的成员初始化,包括设备名称(vd.>videodevice)、要采集图像的宽度(vd->hdrwidth)和高度(vd->hdrheight)、像素位数(vd->bppIn)、帧大小(vd->framesizeIn),为帧数据分配存储空间(vd->pFramebuffer)。vd->fd=open(“/dev/vide00",O_RDWR);vd->hdrwidth=352;vd->hdrheight=-288;vd·>bppln28;vd-framesizeln=(hdrwidth掌hdrheight}bppln);4.4.1.3设定待采集图像的各种属性Zc0301摄像头支持JPEG格式的图像采集,定义VIDEOPALETTEJPEG为2l,将其赋值给图像帧的调色板palette,这是一个必须设置的重要的参数。其他参数(如图像色调、颜色、对比度等)可以先将VIDIOCGPICT传递给ioctl0查看其默认值。如果发觉以上的参数不符合采集图像的51山东大学硕十学位论文规范,则可以将VIDIOCSPICT传递给ioctl0来重新设置这些参数。Ioctl(vd一>fd,VDICGPICT,&pict);pict.palette2VIDEO_PALETTE_JPEG;ioctl=(vd->fd,VIDl0CSPICT,&pict);4.4.1.4进行图像采集在图像采集过程中,采用read方法直接读取设备文件来获取一帧数据保存到缓冲区中,通过convertframe()i函数将pFramebuffer中的数据转成完整的JPEG格式的数据保存至Uptframe缓存中去,再调用fwrite()i垂i数将pt.flame缓存中的JPEG格式数据写入到指定的文件中去,即得到一幅JPEG格式的图像。read(vd->fd,vd一>pFrmebuffer,vd一>framesizeln);jpegsize=-eonvertframe(vd一>ptfrme,vd->pFramebuufer,vd一>framesizeln)fp=fopen(“/home/fmm/fmm/1.jpeg”,"W");fwrite(vd->ptframejpegsize,l,币);fclose(fp);4.4.2识别判靶模块程序设计图像识别判靶程序包括图像预处理、特征提取、中弹数及环值判定等。这部分软件在系统中占有重要地位,它将直接影响判读的数度,因此它是本章的重点,也是整个系统的关键,详尽代码见附录1。4.4.2.1判靶流程图像识别判靶程序是自动报靶系统的核心部分,其主要有图像预处理和判靶识别两部分组成。图像预处理包括图像灰度化、中值滤波、裁剪、减影和二值化。判靶识别主要的过程包括根据识别算法选择和提取弹着点坐标、与灰度模板匹配判别,并根据识别的结果计算环值,最后在屏显示。整个程序在Linux环境下以Ot/E和0penCV库为基础编制,具体会在下面详述。程序的方框图如图4—3所示:第4章军用自动报靶终端的软件实现图4一_3程序设计方框图4。4.2。2OpenCV在图像预处理中的应用OpenCV是Intel⑧开源计算机视觉库,它由一系列C函数和少量C-H-类构成,实现了图像处理和计算机视觉方面的很多通用算法。拥有包括300多个C函数的跨平台的中、高层API,它不依赖于其它的外部库。下面介绍程序使用到的重点函数n州柏1:(1)函数刊Color()。功能是实现色彩空间转换,格式如下:cvCvtColor(constCvArr·SIC,CvArr·dst,intcode);voidSic代表输入的8-bit,16-bit或32-bit单倍精度浮点数影像。dst代表输出的8_bit,16.bit或32.bit单倍精度浮点数影像。code色彩空间转换,通过定义CV<siccolorspace>2<dstcolorcvCvtColor>常数函数ecaps.一从像图入输将个色彩空间转换为另外一个色彩空间,jpeg格式图像到灰度图像的转换使用:cvCvtColor(constCvArr·Sic,CvArr·dsLCV—BGR2GRAY);(2)函数cvSmooth()。功能是各种方法的图像滤波,格式如下:voidcvSmooth(constCvArr·SIC,CvArr·dst,intsmoothtype=CVGAUSSIAN,intparaml=3,intparam2=0,doubleparam3=0,doubleparam4=O);53srcdst代表输入输出图像,smoothtype代表平滑方法:CV—BLUR—NO—SCALE(简单不带尺度变换的模糊)一对每个像素的paraml×param2领域求和。如果邻域大小是变化的,可以事先利用函数cvIntegral计算积分图像。CV--BLUR(simpleblur)一对每个像素paraml×param2邻域求和并做尺度变换1/(paraml·param2)。CV.’GAUSSIAN(gaussianblur)一对图像进行核大小为paramI×param2的高斯卷积。CV—MEDIAN(medianblur)一对图像进行核大小为paramlXparaml的中值滤波(邻域是方的)。CVBILATERAL(双向滤波)一应用双向3x3滤波,彩色sigma=paraml,空间sigma=param2。paraml代表平滑操作的第一个参数,param2代表平滑操作的第二个参数,对于简单/非尺度变换的高斯模糊的情况,如果param2的值为零,则表示其被设定为paraml。param3对应高斯参数的Gaussiansigma(标准差)。函数cvSmooth可使用上面任何一种方法平滑图像。每一种方法都有自己的特点以及局限。中值滤波格式如下:voidcvSmooth(constsmoothtype2CV_MEDIAN,3,0,0,0);CvArr*¥rc,CvArr*dst,int(3)函数cvThreshold(·)。功能是对单通道的灰度图进行固定阈值二值化操作。格式如下:voidcvThreshold(constCvArr·src,CvArr*dst,doublethreshold,doublemax_value,intthreshold_type);sre原灰度图dst代表输出二值化图,threshold为二值化时选择的阈值,maxvalue是使用CVTHRESHBINARY和CVTHRESHBINARYINV的最大值。对于threshold_type我们作如对比分析:函数cvThreshold对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像或者是去掉噪声,例如过滤很小或很大像素值的图像点。本函数支持的对图像取阈值的方法由threshold_type确定:(1)如果threshold_type=CVJHRESH—BINARY,则有虮加倍岩鹕觏@∥p龇幻肠(2)如果threshold__type=CV_THRESH_BINARY_INV,则有弗4早年用日列报牝玲酾H、J狄什头现虮加伫鬻裳批肠批加{篡鬻化咖~材.(4)果threshold_type=C唧RESH_TOZERO,则有(3)果threshold_type=CV_THRESI-I_TRUNC,则有她加.{蒜x觏似力批幻搿(5)如果thresh01d-typc《v-THRESHTOZERO—INV,则有批加{寒嚣~洲4.4.2.3判靶程序的关键代码include<cv.11>#include<highgui.h>#include<stdio.h>imdanshu=O,huanshu=0;Ipllmage·cj(char·argv)//图像预处理函数,实现灰度化、中值滤波、裁剪功毹offIplImage*jy(Ipllmage幸srcO.IplImage·src1)//实现裁剪后图像的减影、二值功能。//>voidpb0//实现弹着点坐标提出、对比颜色模板、中弹数及环数判定功能。//55山东大学硕十学位论文>intmain(){IplImage·eaijian0=O;caijian0=evLoadlmage(”/home/frnm/fmm/aa0.jpg”);Ipllmage·caijianl=cj(”/home/fmm/fmm/aal.jpg”);Ipllmage*jianying=jy(caijian0,caijianl);pbO;cvReleaselmage(&caijJan0);cvReleaselmage(&caijian1);cvReleaseImage(&jianying);return0;)4.4.3报靶程序的01:00ia界面设计4.4.3.1Qt、Qt/E、Qtopia简介Qt是TrollTech公司的标志性产品,而QtDesigner是Qt提供的一种真正可视化的编程工具,采用C什作为程序设计语言,其分为用于嵌入式界面编程的Qt/E包和正常的q包。Qt工具包有两种不同的版本,一种是用于商业性质的专业版,另一种是用于开发X--Window界面平台自由软件的自由版。专业版用于创造成功的商业贸易方面的跨平台软件;而自由版已经成为用C++GUI工具包Linux上进行自由软件开发的主流,它是Linux上流行的KDE桌面环境的基础。另外,它还是一种跨平台的编程工具,能够确保软件非常方便地应用于绝大多数操作系统。QVE是一个专门为嵌入式系统设计图形用户界面的工具包,是Qt的嵌入式版本。嵌入式系统地要求是小而快速,而OtE就能满足这些要求。Qt/E是模块化和可裁剪性开发者可以选取他所需要的一些特性,而裁剪掉不需要的。QT/Embedded通过QtAPI与LinuxI/0设施直接交互,成为嵌入式linux端口。Qtopia构建于Qt/Embedded之上,是专为基于linux的消费电子产品提供和创建图形用户界面而设计的,其最初是sourceforge.net上的一个开源项目,全称是QtPalmtopEnvironment,是构建于Qt/E之上一个类似桌面系统的应用环境。Qtopia被看作是面向嵌入式系统的q版本,是一个专门为小型设备提供图形用户界面的应用框架和窗口系统,也是完整的自包含的C++GUI和基于Linux的嵌入式平台研发工具,它为研发者提供第4章军用自动报靶终端的软件实现了丰富的窗口部件,能够支持窗口部件的定制,可以为用户提供非常丰富的图形界面…1。本系统的软件设计依托嵌入式Linux系统并在OpenCV、Qt/Embedded和Qtopia基础上编制。4.4.3.2Qt/E和Qtopia开发模型嵌入式软件开发采用交叉编译的方式进行,基于Qt/E和Qtopia的GUI应用开发也采用这样的模式。先在宿主机上调试应用程序,调试通过后,经过交叉编译移植到目标板上。QUEmbedded直接写入帧缓存,在宿主机上则是通过qvfb(virtualframebuffer)来模拟帧缓存。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序。QT/E移植所需工具及环境变量声明如表4—1:表4-1Ot/E各软件包相应环境变量表工具软件描述变量声明Tmake—l-11生成Makefi1e文件TMAKEDIR/TMAKEPATH/PATHQVfb一虚拟帧缓存工具Qt—x11—2.3.2Uic一用户界面编辑器LD_LIBRARY_PATH/PATHDesignerOt图形设计器Qt—embedded-2。3。7Qt库支持1ibqte.SOQTEDIR/LD且IeP认RL_PATH/PATHOtopia-free一1.7.0应用程序开发包桌面环境QPEDIR/LD-LIBRARY—PATH/PATH4.4.3.3报靶程序GUI界面的Qt代码标准C++对象模型为面向对象编程提供了非常有效的实时支持,但是它的静态特性在一些领域中表现的并不够灵活。Q采用的交互方式不同于其他的GUII具包,它基于QObject类内建了特有的信号与槽机制,通过信号和槽将事件和处理函数联系起来。事实上信号和槽都是类的成员函数,槽更是标准函数,如果需要可以像调用其他函数那样调用他们,Qt通过其改进的对象模型在保持c++执行速度的同时提供了所需要的灵活性,信号与槽机制是Qt相对于标准C十+增添的新特性嘲。GUI界面程序的主要代码如下:classMyMainWindow:publicQWidget{Q-oBJECTpublic:MyMainWindowO;intid;private:voidpaintEvent(QPaintEvent幸);山东大学硕十学位论文QPushButton+bl,宰b2,·b3;QLCDNumber幸lcdl,·lcd2;publicslots:voidpaintEventl(QPaintEvent幸);voidpaintEvent3(QPaintEvent奎);voidexitpaintEvent(QPaintEvent});voidMydanshu();voidMyhuanshu0;);MyMainWindow::MyMainWindowO{setCaption(”ShootingScore&ReportSystem”);setMinimumSize(240,300);setMaximumSize(240,300);bl=newQPushButton(”Start",this);b1->setGeometry(1,240,46,35);bl·>setFont(QFont(”Timesfq12,QFont::Bold));b2--newQPushButton(”Exit”,this);b2->setGeometry(189,240,46,35);b2->setFont(QFont(”Timestt12,QFont::Bold));b3=newQPushButton(”Report",this);b3->setGeometry(48,240,46,35);b3->setFont(QFont(”Times",12,QFont::Bold));lcd1--newQLCDNumber(1,this);lcdl->setGeometry(95,240,46,35);lcdl->setMinimumSize(QSize(46,35));lCdl->setMaximumSize(QSize(46,35));lcd2--newQLCDNumber(2,this);lcd2->setGeometry(142,240,46,35);lcd2->setMinimumSize(QSize(46,35));lcd2->setMaximumSize(QSize(46,35));connect(b1,SIGNAL(clicked()),this,SLOT(paintEventl(QPaintEvent·)));connect(b3,SIGNAL(clicked()),this,SLOT(paintEvent3(QPaintEvent毒)));connect(b2,SIGNAL(clicked()),qApp,SLOT(quit()));羞:耋三皇自蓍耋譬銮誊暨彗:=蚕詈conn∞t(b3,SlGNAL(clicked0),this,SLOT(Mydanshu0));connect(b3,SIGNAL(clicked0),this,SLOT(Myhuanshuo)),connect(b2,SIGNAL(clicked0),this,SLOT(exitpaintEvent(QPaintEvent+)";}intmain(intexgc,char”argv){QApplicationa(缸gc,argv);MyMainWmdoww:a.setMainWidgct(&w);w.showO;returna.exec0;}GUI界面如图4--4、图4--5所示:图4—4终端启动后界面图4—5报靶中软件界面‘4.4上位虮较件界面设计本系统上位机的软件设计使用fedom8版本的Linux操作系统。依托其0t编程平台完成。在434节简单介绍了Qt基础上详细介绍Qt/E平台的嵌入式版本,并完成TArm终端韵界面程序设计.本节将介绍和使用功能更强大的Qt编程平台。44.4lQt的特点Qt作为一种非常优秀的编程工具,具有很多优点和一些其它编程工具所不具备的特点…1。面向对象Qt是完全面向对象的,Qt开发库,使用它进行应用程序的开发,可以充分利用其面向对象和模块化的特征,从繁琐的X--Window编程中解脱出来,专注于程序本身的实现。独有的信号一槽(Signal.Slot)机制Signal—Slot机制是Ql最重要的特征。在山东大学硕十学位论文MS.Windows中,程序通过消息机制和事件循环来实现图形对象行为的触发和处理;在Qt中是在一个类中定义多个Signal和Slot,Signal就相当于是“事件”,而Slot就相当于是响应事件的“方法"。为了实现“事件驱动",需要将一个类的Signal和另一个类的Slot连接起来(connect()函数)。采用这种机制是一种安全可靠的方法,它允许回调,并支持对象之间在彼此不知道对方信息的情况下进行合作,这使Qt非常适合于真正的构件编程。开发程序的方便性Qt提供了一个可视化的开发工具QtDesigner,使用该工具就像在Windows中使用VisualC++那样可以直接向项目中添加各种组件,而不需要一步一步地编写代码,这个特点是其它非可视化编程工具望尘莫及的。QtDesigner中包含全面的联机帮助文档,包括超文本方式的QtManual、man帮助手册页和补充指南。这些帮助不论是对于初学者还是专业人士,无疑都是非常方便的。据此,使用q平台和其提供的QtDesigner开发工具进行图形用户界面应用程序的开发是非常理想的。4.4.4.2上位机软件编制使用Qt的可视化开发工具QtDesigner设计程序适合所见即所得的原则,界面设计好后存储为“.ui’’文件,再经过编译处理编译为可执行文件。本系统的上位机软件编制具体步骤如下:(1)创建新的项目单击FileNew打开新建文件对话框,选择“C++Project’’创建一个上程,然后单击OK进入设置窗口进行设置,完成后进入SaveAs、对话框,并以“iiemian"文件名进行保存即可。(2)创建对话框单击FilelNew打开新建文件对话框,单击“Widget"后单击oK即可。我们可以在PropertyEditor中修改其”Name"和“Caption”等属性,最后单击FileISave以“test”名字保存。(3)添加和布置组件并连接组件的Signal.Slot在新建的窗体中根据需要添加各种组件修改其属性,再合理调整其布局,最后创建连接slot并在test.ui.h文件中编写响应程序代码后保存。(4)添]JI]main()J函数文件单击FileINew打开新建文件对话框,选择“C++Main.File",然后单击Ol进入Main-File配置对话框,输入相应代码保存。。(5)编译执行在命令行下键入“qmake·OMakefilejiemian.pro”以运行qmake,自动生成相应的Makefile文件。在命令行模式下执行make命令编译程序,第4章军用自动报靶终端的软件实现生成可执行文件“jiemlan”·图4—6上位机报靶系统初始界面、图4—7是上位机软件报靶工作中界面图.其中一号靶位检靶后结果。程序代码见附录2。图囝囝圉厶图囝匣图圉图囝囝图图囝_丢;忑三普j矗=i=一…一一i最三苫图4--6上位机报靶系统初始界面图4—7上位机报靶系统报靶界面4.4.5上下位虮问的叠信机■在上下位机间的通信机制中,本系统所需要的就是如何把下位机(Arm嵌入式终端)的处理结果(d蛐bu.d毹、huanshu.dat、pin群i柚jpg三个文件)快速的存储到上位栅Pc,为此我们选择较容易实现的NFS网络文件系统。4.4.5.1NFS网络文件系统定义NFS(NetFilesystem)是‘aSoN公司开发,并于1984年推出的。NFS是一个RPC.SERVICE,它能够实现到文件的共享,它的设计是为了在不同的系统之间使用.所以它的通讯协议设计与主机及操作系统无关。当使用者想用远端文件时只要用“mount”就可以把远程文件系统连接在自己的文件系统之下,使得远端的文件使用上和本地主机的文件没区别””。比如在终端机A上,要把NFS服务器B上的/usr/love/连接到终端机A的/rant/下t只要“mountBA:/mat/”就可以实现,此时可以通过访问,m州来访问服务器B上的/usr/Iove/目录。4.452NFs网络文件系统工作原理㈣网络文件系统NFS是一种运行机制,它通过网络提供给不同操作平台上的用户共享一个文件系统。这样,用户的文件系统就由原来的单一的本地系统,扩展到由本地文件系统加一个或多个远程文件系统构成的虚拟系统。用户感觉不到远程文件系统与本地文件系统的区别。网络文件系统NFS由于具有网络操作系统文件服务器的功能,且使用维护均比较方便,从而也被广泛地应用在各系统中。NFS网络文件系统包括NFS服务器和NFS客户两部分。采用星型拓扑结构连接。山东大学硕十学位论文NFSJ]艮务器是中心,NFS客户是端点,如图4川。NFS服务器是提供共享本地硬盘上的任何文件系统或目录等文件信息的计算机。NFS客户是能够安装远地文件系统和目录,并且从其他计算机上获取文件信息的计算机。NFSJ]艮务器与NFS客户之间并无严格的界定,多任务的操作系统可同时作为客户和服务器,读取网络上其他正在访问自己硬盘的计算机上的文件。为了NFS的开发应用专门引入了远程过程调用RPC(RemoteProcedureCall)的概念,RPC过程调用可以作为对话层和报文交换器用于所有的NFS的应用程序。RPC由一系列过程组成,这些过程可以视为处理任何所需网络访问的高层应用程序,即可以透明地访问远地文件系统。RPC通过网络作用于客户和服务器之间,具体工作过程是:首先客户向服务器发出请求报文,服务器接收到报文后,从中提取出请求,然后执行请求的过程,并且将结果汇编成响应报文。客户将接收到的报文响应后,对报文进行反汇编,继续执行应用程序的正常过程。这个过程的每一步都由RPC程序库(与应用程序相连)的例程控制,见图4q。图4_-8NFS网络文件系统拓扑结构第4章军用自动报靶终端的软件实现图4-_9RPCT作过程4.4.5.3本系统NFS网络文件系统的建立NFS网络文件系统的建立分为服务器设置和客户终端设置,下面具体介绍。以Linux较新的fedora8版本作为上位的操作系统来建立NFSH匿务器,具体步骤为:(1)修改配置文件etc/exports,加入“/opt/FriendlyARM/QQ2440/root_nfs·(rw,sync,no_root_squash)",“/opt/FriendlyARM/QQ2440/rootnfs"是开放给Arm终端的目录,“jlc”表示所有Arm终端都可以通过NFS网络文件系统挂载该目录,“rw”表示允许Arm终端读写该目录,“noroot份挂载该目录。(2)建立Mri髓myARM/QQ2440/r00t通信的主机,检查iptables,ipchains等设置。Armroot"允许hsauqs终端以主机.身户用nfs/目录。(3)图形界面下启动NFS服务器。可以用/usr/sbin/rpcinfo-p检查是否启动了正常NFS服务器,至少应该看到nfs,mountd。(4)检查防火墙设置,保证没有屏蔽NFS使用的端口和允许客户终端(Arm终端)的设置比较简单,只要保证其内核支持NFS就可,为此在编译其内核时要加入以下选项(我们在4.3.3节内核编译与移植时有过说明):Enable:FileSystems-->Systems-->NFSfilesystemsupportNetworkFilesupportNFS服务器建立完毕后,我们通过NFS挂载进行验证。启动Arm终端,输入以下挂载命令:mount-tnfs21ProvideNFSv3client1.87.217.235:/opt/FriendlyARM/QQ2440/rooUnfs/mt吣山东大学硕士学位论文nolock,211.87.217.235为NFS网络文件系统服务器的IP地址,/opt/FriendlyARM/QQ2440/root_nfs为服务器开放给终端的目录,我们可以用增/删文件的方式来验证。至此,本系统终端与上位机通信所依赖的NFS网络文件系统建立完毕。NFS网络文件系统建立过程中参考了相关文献m1嘞3。4.5本章小结本章首先介绍软件开发的交叉编译环境的搭建,并在此基础上详细论述了嵌入式操作系统、Qt、Qtm、Qtopia、OpenCV计算机视觉库的交叉编译及开发板的安装,通过修改OpenCV的源码解决了其在ARM上的正确应用且给出了部分函数的说明。在软件设计部分重点论述了图像采集模块、判靶模块、嵌入式终端界面部分的编程框架和程序的实现方法、上位机软件的的编制和本系统上下位机间的通信机制的建立方法,并给出了重点部分的程序源码。通过本章可以搭建出本实验的环境,完成整个报靶系统的软件编写。第5章实验环境与结果分析第5章实验环境与结果分析本章在上述各章的基础上搭建了系统的实验环境,在此实验环境上对硬件、算法和程序进行了实验论证,并最终完成本系统的设计。5.1实验环境的建立实验环境的所需硬件条件:(1)USB接口的Zc301芯片或Zc303芯片摄像头一个:(2)ARM9嵌入式处理器的QQ2440开发板一部(配显示屏);(3)PIII以上处理器的PC机一台;(4)双机对连双绞线和串口连接线各一条。实验环境的所需软件条件:(1)安装于Pc机的Redhat9.0和fedora8版本的Linux操作系统;(2)2.95.3版本、3.3.2版本和3.4.1版本的ARM.1inux交叉编译器(其中2.95.3版本和3.4.1版本用于编译软件,3.3.2版本用于编译Ot/E和0topia);(3)源代码的OpenCV计算机开源视觉库、支持图像格式的jpeg库、png库等:(4)Linux系统的2.6.13版本的内核源代码、qt-xl1—2.3.2.tar.gz软件包、qt—embedded一2.3.7·free.tar.gz软件包、tarxfvzqtopia-free—1.7.0.tar.gz软件包。以上软件都可以在互联网上下载得到。实验环境的搭建步骤:(1)建立交叉编译环境并进行PC与开发板的通信与其它测试;(2)交叉编译Linuxl为核、QUE、Qtopia、jpeg库、png库和OpenCV库并对开发板格式化后进行安装和移植;(3)编写本系统的报靶软件并进行交叉编译和到开发板的移植;(4)选取外部环境条件:普通日光灯照明、白色靶图背景、摄像头镜头距待采集靶图1.2米左右且位于靶的平行平面上。5.2实验结果分析在建立了如上实验系统的基础上进行了相关实验,实验过程中,实现了系统的图像采集、图像预处理、图像识别及判靶等功能。系统工作过程如下:(1)系统初始化,进入工作状态;(2)进行实弹射击;(3)射击完毕,系统启动图像采集,转入图像处理和成绩计算;(4)图像和成绩在屏显示;和上位机显示。(5)网络传输山车^学硕士学位论文本节主要叙述图像采集、图像预处理、图像识别和判靶的过程。以及过程中相应的结果。图5—1至图5—6为本系统的一次图像识别报靶过程.此时摄像头与靶纸基本垂直,拍摄偏差较小。图5—1是实验时.采集的原始图像。很显然图像需要进行旋转校正、灰度化、剪裁等预处理,以去除干扰信息。为了降低噪声影响,同时保留图像特征,我们对图5—1进行中值滤波,圈5—2就是经过灰度化并中值滤波的图像,图5—3是在图52基础上旋转校J下且剪裁过后的图像,剪裁达到了突出重点的目的,固5—4是经过无弹着点靶图与射击后靶图减影后以得到弹着点为目的的二值围,囤5—5是灰度化的颜色模板图,图5-6是嵌入式终端检靶显示的效果圈,图5—7是上位机检靶显示的效果图。图5一l原始靶幽图5—2灰度化井中值滤波的图像圈5—3剪裁后靶幽图5—4减影后图像堑i耋童叁至丝皇堑量坌堑厶囝囝囝圃尉蚓倒~f口_■目■姐电!…l一_…2qoLo8’H№———_———二二图5—7上位机1号靶位检靶显示教果图5.3本章小结本章介绍了自动报靶系统的试验过程及结果。试验中对嵌入式系统的图像中值滤波、旋转校正、图像灰度化和图像裁剪算法进行了验证,并实现了图像的减影操作.进而实现了利用灰度模板的中弹环值判定算法。试验数据表明,该算法能够准确地识别出中弹的弹着点.提供射击成绩,对拍摄偏差不敏感,实现了图像识别报靶与嵌入式系统的结合。一皇量量量量皇曼舅舅量曼曼曼曼曼曼量曼舅舅舅舅皇量量曼曼量量量量皇量量量量曼曼皇寡量曼曼寰量曼曼鼍罾量曼曼曼量曼曼曼曼曼曼曼量皇曼量曼曼曼鼍曼曼量曼皇量量曼曼量曼量结论结论随着数字图像处理技术的发展,其在嵌入式系统得到了越来越多的应用。本文将数字图像处理技术应用于基于嵌入式的军用自动报靶系统取得了良好的效果。目前,在实弹射击训练、考核和比赛中,检靶主要依靠人工完成,不但效率低(人为因素造成报靶的成绩偏差,精度低)、可靠性差,而且存在安全隐患。采用自动报靶系统,将在报靶精度、报靶速度、安全性以及公正性等方面都有比较大的优越性。由于图像处理技术的嵌入式系统中的发展和嵌入式硬件系统运算速度的不断提高,基于此技术的自动报靶系统也得到了相应发展。.为了实现射击的报靶自动化,我们针对军事射击项训练特点,做了大量的工作,开发出能够满足军事射击训练要求的基于ARM嵌入式的军用自动报靶系统。本文所研究的工作和结论有:1.基于QQ2440开发板设计了军事射击训练的自动报靶系统,采用了直接读取USB摄像设备的图像采集部分。2.讨论了图像处理技术在军事射击自动报靶系统中的应用,分析对比了领域中一些常用的理论和算法。在研究弹着点识别模块时,提出了利用颜色模板判定中弹环值的全新算法。该算法在识别精度及运算速度上能够满足系统的精度及快速性要求。3.将图像减影技术用于弹着点的准确分割,该技术不仅消除了靶环线、数字等的影响,而且使得弹着点的分割受自然光照的影响变小,使以固定阈值二值化靶图像,将弹着点作为唯一对象物分割出来成为可能,该技术的原理非常简单且在0penCV中容易实现,是本自动报靶系统能够发挥工作效能的技术核心。4.分析了嵌入式Linux系统的发展,对Linux系统、Qt/E、Qtopia进行了成功移植,并在此基础上完成了图像采集部分及系统界面的软件设计。5.讨论了部分OpenCV'i函数功能,并通过对其部分源代码的修改进行了嵌入式ARM系统的移植,依托移植后的OpenCV库完成了图像处理、报靶认别模块程序设计。L皇量曼璺罾罾篁皇量曼皇曼暑墨鼍墨量量皇曼曼蔓曼鼍舅舅皇曼曼皇曼皇曼皇皇曼虽鼍曼鼍量皇曼曼曼詈曼量量置置量鼍曼曼曼舅曼孽曼曼曼置置曼曼曼量舅舅曼蔓曼皇鼍曼量山东大学硕十学位论文计算机系统从一幅图像中能够获取的信息只是每个像素的颜色和灰度值。而人类在对图像进行识别的过程中运用了大量的知识,所以现在还没有任何一个系统或算法在识别真实图像时,能完全达到人类视觉系统的水平。虽然机器视觉技术作为一门迅速发展的边缘学科,一些成熟的算法开始逐步形成公认的标准,但这些标准也只是建立在我们对图像及视频信号基本结构非常有限的理解的基础上。对于大部分图像应用来说,自动识别还是一个将来时,图像的识别实际上仍然是一项非常困难的工作。由于时间有限,科研条件的局限和作者知识、经验上的欠缺,论文工作还有待进一步的提高和完善:1.本文报靶系统的硬件设计基本依靠原有的开发板,其部分芯片和元器件还有待于进一步增删和优化。2.下步该报靶系统终端的实用化研究应立足于靶场的复杂情况,提高系统对室外环境的适应能力和兼容多种靶型的能力。3.本文所设计的报靶终端只是在实验室研究阶段得到了可行性的论证,开发出实际的报靶系统,还需进行进一步的实弹检验和改进以提高该系统的可靠性。4.本系统的实验在PⅣ以上PC机实时性达到3秒,而在ARM处理器的嵌入式系统中由于其不支持硬附点运算,实时性稍显不足,仅为27秒,这也是下一步需要改进的方面。总之,本自动报靶系统的研究由于受到多方诬的,其在技术上还存在着一些不足,但由于军事训练现代化的迫切要求使其具有巨大的应用潜力。相信随着研究的深入,自动报靶技术定会走向成熟。在论文的写作过程中,学习和研究了许多前人的图像处理分析的算法,也学习了有关数据采集和处理的知识,这对本人是一个提高。由于时间、个人能力等的,很多方面还有待提高。参考文献参考文献[1l【21RobBurgun.AdvancedTargetscoringsystem.Americ冱LNoptel.Oy,Oulu.Finland.2000.【3】卢朝阳,高西全,丁玉美.一种采用图像识别的射击竞赛自动判靶系统[J].计算机工程与科学.2001,(3):pll一14.【4】张伟,高航.基于图像处理技术的自动报靶系统设计和实现[J].南京航空航天大学学报.2000,32(6):p691—695.【5】张育钊,黄永福,苏溪泉射击训练自动控制系统[J].华侨大学学豫2002,23(02):p198-202.【6】段峰,王耀南,雷晓峰笔机器视觉技术及其应用综述[J].自动化博览.2002,(3):p59-fil.【7】邵淑华.浅谈机器视觉的应用[J].各界·科技与教育.2002,(7):p81—82.【8】巫锴,袁祥辉,潘银松.基于USB接口的高速图像采集系统设计[J].半导体光电.2005,26(增刊):p122—124.【9】周立功.ARM嵌入式系统实验教程[M].北京:北京航空航天大学出版社.2005:PP.卜3.,【10】马忠梅,马广云.ARM嵌入式处理器结构与应用基础[M].北京:北京航空航天大学出版社,2002:pp.2—9.【1l】王林泉,邱伟峰.改进背景补偿的车牌图像二值化算法[J].扬州大学学报(自然科学版).2008,11(1):p55-58.【12】阚伟,朱秋煌.一种新的用于集装箱字符的识别方法[J].东北师大学报(自然科学版).2000,32(4):p20-24.【131RosenfeldA.Imageanalysisandcomputervision.1995,CVIU.【14】谢仪.常用数字图像侵害算法研究[J].电脑开发与应用.2008,21(6):p41—43.【15】M姆锄DL尽噬嗑H~C!iectⅨ蛐h蜘hedh瑚字,imBolcL,KulpaZ,Eds,D鲫脚腰鼗幽喀跚咖l’喇irI:Sp南黟№1981:pp.Z28-353.报.2007,23(4):p49—51.【16】龙丹,许勇.基于数字图像处理的汽车测距算法研究[J].中国西部科技2008,(1):p36-37。【17】张桂华、冯艳波、陆卫东.图象处理的灰度化及特征区域的获取[J].齐齐哈尔大学学【18】朱虹.数字图像处理基础[MI.北京:科学出版社,2005:p84—100.【19】DONZALO.TheoreticalNO.5,1988:p826.AnalysisofTheMax/MedianFilter[J].IEEE-TRANS,ASSP-36,【20】NEALC,GALLAGHER.ATheoretialAnalysisoftheProPertiesofMedianFilters、IEEE-TRANS,ASSP-29,NO.6,1981:p1136.【2l】张红民.自动门限技术在靶纸图像目标分割中的应用[J].微机发展.2003,13(9):p8—10.71山东大学硕七学位论文【22】顺茂松,杨小冈,缪栋等.自适应边缘检测方法的研究[J].计算机工程,2007,33(5):p185-一p186.【23】袁莉茹.图像减影技术在自动报靶系统中的应用[J].成都信息工程学院学报.2006,21(03):p370—372.【24】陈冬娥.图象处理方法在自动报靶系统中的实现[J].微型电脑应用.2000,16(08):p56—57.【25】张建波,卢朝阳,高西全等.一种提高射击运动自动判靶系统精度的方法[J].西安电子科技大学学报(自然科学版).2002,29(03):p324-327.【26】高东发,黎绍发,林凯荣等.基于BZX一1系统的自适应图像处理快速算法设计.计算机工程.2004,30(08):p149—150,p161.[27]张晓林。崔迎炜.嵌入式系统设计与实践[M].北京:北京航空航天大学出版社,2006:p15-21.[28]邓增涛,黄超.Linux与X—Window系统基础[M].北京:电子工业出版社,2002:p12-15.[29]MartinG.UMLoverview.DesignProceedings.forembeddedAutomationandsystemsTestspecificationanddesign:motivationandandinEuropeConferenceExhibition.2002,[30]KarimYaghmour著.构建嵌入式Linux系统[M].韩存兵、龚波改编.北京:中国电力出版社,2004:p23—25.[31]李凡.Ot/Embedded在嵌入式Linux下的移植与应用[J].黑龙江科技信息.2008,(27):p79—80.[32]孙天泽,袁天菊.嵌入式设计及Linux驱动开发指南一基y-ARM9处理器(第二版)[M].北京:电子工业出版社,2007:p340-385[333[34]刘瑞祯,于仕琪.OpenCV教程(基础篇)[M].北京:北京航空航天大学出版拉2007:pl-5.马忠梅,李善平,康慨等.hP激Linux嵌入式系统教程『M].北京:北京航空航大大学出版社,2004:p62—85.[352周愉聪.多媒体计算机外部设备[M].北京:北京大学出版社,2002:p94—99.CoreKernel[36]ScottMaxwell.Linux[37][383Commentary[J].Coriolis.2000:pl12·113.张杰,曹甲华,吴敏等.基于¥3C2410的LINUX移植[J].微机发展.2005,15(6):p58—59.李外云,王淑仙,刘锦高.基于嵌入式Linux的便携式自动人脸检测与跟踪系统的应用研究[J].微型电脑应用,2008,24(1):p28-31.[39]IntelCorporation(2001):Open[40]SourceComputerVisionLibrayReferenceManual.何永威,路林吉.基于嵌入式Linux和ARM9的家用智能监控系统[J].微型电脑应用.2007,23(10):p16—17.参考文献[41]李金广,罗飞,杨晖等.基于¥3C2410的嵌入式图像传输系统的设计与实现.福建电脑.2007,(5):p7—8.[42][43][44]Vide04LinuxKernelAPIReference.刘瑞祯,于仕珙.0penCV教程(基础篇)[M].北京:北京航空航天大学出版社,2007:0243—333.吴娴,基于Qtopia的嵌入式软件开发[J].计算机I:程与设计.2007,28(21):05190--p5192.[45]DanielSolin.24小时学通Qt编程[M].袁鹏飞.北京:人民邮电出版社,2000:p41—66.[46]王子强,刘海燕,李嫒州.Linux下图形用户界面程序的开发与实现[J].计算机应用与软件.2005,22(6):p81-83.[47]韩冬.计算机软件系统中的NFs[J].青海师范大学学报(自然科学版).2000,(3):p29-31.[48]毕建平,谢萍,刘艳萍.网络文件系统NFs[J].自动化技术与应用.2001,(2):p44—46.[49][50]刘昆.Linux环境下宿主机与A蹦开发板NFS服务的配置[J].科技资讯.2008,(5):p133.张嫒,卢泽新,张晓哲.基于NFS的并行网络文件系统研究It].中国科学院计算技术研究所第九届计算机科学与技术研究生学术讨论会,青岛,2006.附录附录附录1:判靶程序中重要文件代码empb.cpp文件的内容:#include<cv.h>#include<highgui.胗#include<stdio.h>#include<math.h≯#include<sys/types.h>#include<sys/stat.h>#include<string。ll>#include<stdlib.h≯#include<errno.h>#include<unistd.h>#include<fcntl.1l>lpilmage●xunzhuan=NULL,*srclmage=NULL,·caijianl=NULL,搴caijjan3=NULL,·moban=NULL;intdanshu=0,huanshu=0,dd=0,hh=0;voidwrite(intdanshu,inthuanshu){inta,ouffile;//infile;outfile=open(”/home/fmm/fmm/danshu.daft,O_WRONLYIO_CREAT[O_TRUNC);write(outfile,&danshu,sizeof(danshu));close(outfile);outfile=open(”/mn∞ieguo/danshu.dat",O_WRONLYIO_CREATIOTRUNC);write(outfile,&danshu,sizeof(danshu));close(outfile);outfile=open(”/home/fmm/fmm/huanshu.daft,O_WRONLYIO_CREAT]O_TRUNC);write(out-file,&huanshu,sizeof(huanshu));close(outfile);outfile=open(”/mnt/jieguo/huanshu.daft,O_WRONLYIO_CREATIO_TRUNC);write(outfile,&huanshu,sizeof(huanshu));close(ouffile);)voidjiaozhengOintcomerCount--60;CvPoint2D32f{comers[60】,t【2】,center;lpllmage·graylmage=NULL,·comersl=NULL,·comers2=NULL;intij;floatCOS,sin;graylmage=cvCreatelmage(cvGetSize(srclmage),IPL_DEPTH_SU,1);cvCvtColor(srclmage,graylmage,cvBGR2GRAY);xunzhuan=cvCIonelmage(graylmage);comersl=cvCreatelmage(cvGetSize(srclmage),IPL_DEfylH32F,1);comers2=cvCreatelmage(cvGetSize(srclmage),IPL__DEPTH_32F,1);cvGoodFeaturesToTrack(graylmage,eomersl,comers2,corners,&comerCount,0.066,5,0,3,0,0.4);if(comerCount>0){for(i=O;i<comerCount-1;i++)for(j=O;j<comerCount-i-10++)75山东大学硕士学位论文if(comers[j].y<comers[j+1].y){t[O]=comers[j];comers[j]=comers[j+1];comers[j+I]---riO];}>cos=(comers[O].x-comers[1】.x)/sqrt((doubleX((comers[O].x-comers[1].x)·(comers[O].x-comers[1].X)卜((comers【O】.y-comers[1].y)·(comers[0].y-comers[1].y))));sin=(comers[O].y-comers[1].y)/sqrt((double)(((comers[0].x-comers[1].x)·(comers[O].x-comers[1].x))H(comerS【O】.Y—comers[1].y)幸(comers[0]。y-comers[1].y))));if(cos<0)COS=-I·COS;elsesin=-1·sin;floatm[6】;CvMatM=cvMat(2,3,CVj2F,m);intW=graylmage->width;inth2graylmage->height;m[0】=(float)cos;m[1】=(float)sin;m[3】_一m【l】;m【4】=m【O】;m[2】-W幸0.5£m[5】=h·0.5f;cvGetQuadrangleSubPix(graylmage,xunzhuan,&M);cvReleaselmage(&graylmage);cvReleaselmage(&comersI);cvReleaselmage(&comers2);}voidypb0ij.height,width;.{intCvScalarS,S1;CvPointcenter;Ipllmage*jianying--cvLoadlmage(”/home/fmm/fmm/jianying.jpg",O);moban=evLoadlmage(”/home/fmm/fmm/t.jpg",-1);heigh角ianying->height;width=jianying->width;for(i=0;i<height;i++)for(j=0;j<width;j抖){s=cvGet2D(jianying,i0);if(s.val[O】>=250){center.)闩;center.y=i;cvCircle(jianying,center,5,cvScalar(O,0,0),·1);sl=evGet2D(moban,i’j);if(s1.val[O】>=250){hh=hh+0;cvCircle{:caijiard,center,4,cvScalar(O,0,0),1);)elseif(s1.val[0】<=5){hh=hh+4;dd++;cvCircle(caijiard,center,4,cvScalar(255,0,O),1);}elseif((s1.val[0】<=32)&(s.val[0】>=24)){hh=hh+5;dd++;cvCircle(caijiard,center,4,cvScalar(255,0,0),1);)elseif((s1.val[0]<=64)&(s.val[O]>=56)){hh=hh+6;dd++;cvCircle(caijian3,center,4,cvScalar(255,0,0),1);)elseif((s1.val[0】《=101)&(s.val[0】>=93)){hh=hh+7;dd++;cvCirele(caijian3,center,4,cvScalar(255,0,0),1);)elseif((s1.val[0】<-146)&(s.val[0】>=138)){hh=hh+8;dd++;cvCircle(eaijiard,eenterA,cvScalar(.255,0,0),1);,elseif((s1.val[O】<.190)&(s.val[0】>_182))76附录{hh=hh+9;dd++;cvCircle(caijian3,center,4,cvScalar(255,0,O),1);>elseif((s1.val[0】<一227)&(s.val[O】>-219)){hh=hh+10;dd++;cvCircle(caijian3,center,4,cvScalar(O,0,0),1);>>>cvReleaselmage(&jianying);)voideaijian0{imheight,width,ij,x0,xl,yO,yl;CvPoint2D32fcenter,CvScalars,sl;Ipllmage·xunzhuanl=NULL,*caijian0=NULL,*caijian2=NULL,*:eray0=}aJLL;xunzhuanl---cvCionelmage(xunzhuan);height=xunzhuan->height;width=xunzhuan->width;f0“i=0;i<height;i++)for0=0;j<width;j+¨{s=cvGet2D(xunzhuan,i,j);if(s.val[0】>=90){s.val[0]=255;cvSet2D(xunzhuma,i,j,s);,else{s.val[0l=0;cvSet2D(xunzhuma,id,s);}}for(i=0;i<height;i++)for(j=0;j<width;jH){s=evGet2D(xunzhuan,ij);if(s.val[0]一O){j--width;yO=i;i=height;}}for(i=height-I;i>O;i一)forfj--width-1;j>oo一.){s=evGet2D(xunzhuan,i,j);if(s.val【01—0){j=0;yl=i;i;o;,)for(i=O;i<width;i++)forO=0;j<height;j抖){s=evGet2D(xunza'auan,j,i);if(s.val[O]一O){j=height;xO=i;i---width;}’for(i--width-1;i>0;i一)for(i=height-1驴Oii一){s=cvGet2D(xunzhuan,j,i);if(s.val[0】一O){j-o;xl=i;i:o;,)caijian0=evCreatelmage(cvSize(xI·xO+l,yl·yO+1),8,1);center.x=((x0+xi)/2);center.y--((.vo+y1)/2);cvGetRectSubPix(xunzhuanl.caijJan0,center);caijian1=cvCreatelmage(cvSize(220,220),8,l>;cvResize(caijian0,caijianl,CVINTERNN);caijian2=cvClonelmage(caijianl);caijiard=cvClonelmage(caijiianl);山东大学硕十学位论文while((gray0=cvLoadlmage(”/home/fmm/fmm/caijian0.jpg",0))2=0)gray0=cvLoadlmage(”/home/fmm/fmm/caijian0.jpg",0);height--eaijianl->height;width=caijianl->width;for(i=0;i<height;i++)for0=0;j<width0抖){s=cvGet2D(gray0,ij);sl=cvGet2D(caijianl,i,i);s1.val[0]=s.val[o]-s1.val【o】;cvSet2D(caijianl,ij,s1);,for(i=0;i<height;i++)for0---0;j<width;j++){s=cvGet2D(caijianl,i,j);if(s.val[0】>=145.O){s.val[0]=255;cvSet2D(caijianl,ij,s);)else{s.val[0]=0;cvSet2D(caijianl,ij,s);>)觚i=0;i<height;i++)for0=0;j<width;j++){s=cvGet2D(caijian2,i’j);if(s.vail0】<=60.O){s.val[0]=0;cvSet2D(caijian2,ij,s);)else{s.val[0]=255;cvSet2D(caijian2,ij,s);})for(i=O;i<height;i++)forO=0;j<width;jq-t-){s=cvGet2D(gray0,ij);sl=cvGet2D(caijian2,巧);s1.val[0]=s.val[0]-s1.vail01;cvSet2D(caijian2,ij,s1);)for(i=0;i<height;iH)forfj=O;j<width;j++){s=cvOet2D(caijian2,幻);if(s.val[O]>=90.01{sI=evGet2D(eaijianl,ij);s1.val[0]=255;cvSet2D(caijianl,ij,s1);>)ypbO;cvSavelmage(”/home/fmm/fmm/jianying.jpg",c锄ianl);cvReleaselmage(&gray0);cvReleaselmage(&caijianO);cvReleaselmage(&caijian2);cvReleaselmage(&xunzhuan1);voidpb0{intij,height,width;CvScalill"s,sl;CvPointcenter;height--caijianl->height;width=eaijianI->width;for(i=O;i<height;i++)附录forO=0j<width;j++){s=cvGet2D(caijianl,幻);if(s.val[O】>=250){center.x哥屹;center.)r=i+2;cvCircle(caijianl,center,5,cvScalar(O,0,O),-1);sl=cvGet2D(moban,场);if(s1.val[O】>=250){huanshu=huanshu+0;}elseif(s1.val[O】<=5){huanshu=huanshu+4;danshtr.1-+;}elseif((s1.val【O】《=32)&(s.val[O]>=24)){huanshu=huanshu+5;danshu++;}elseif((s1.val[0】<-“)&(s.val[O]>=56)){huanshu=huanshu+6;danshu++;}elseif((s1.val[Ol<-101)&(s.val[O]弦93)){huanshu=huanshu+7;danshu++;}elseif((s1.val[O】<-140&(s.val[O】>=138)){huanshu=huanshu+8;danshu++;}elseif((s1.谢【O】<_190)&(s.val【0】>----is2)){huanshu=huanshu+9;danshu++;}elseif((s1.val[O】<_227)&(s.val[O】>=219)){huanshu=huanshu+10;danshu++;)))danshu=danshu-dd;huanshu=huanshu-hh;intmain(intargc,chat*·argv){char*filename=argc一27argv[1】:(char·)”/home/fmm/fmm/cj.jpg”;if((srclmage=cvLoadlmage(filename,1))一NULL)return-l:jiaozhengO;c删ianO;pbO;write(danshu,huanshu);cvSavelmage(’’/home/fmm/fmm/pingxian.jpg",caijJan3);cvSavelmage(”/mnVjieguo/pingxian.jpg",caijian3);cvReleaselmage(&srclmage);cvReleaselmage(&caijian3);cvReleaselmage(&caijianI);cvReleaselmage(&moban);cvReleaselmage(&xunzhuan);returnO;)山东大学硕十学位论文附录2:上位机界面软件代码test.h文件的内容:群ifndefFORMlH#defineFORMlH#include<qvariant.h>#include<qpixmap.h>#include<qwidget.h≯classQVBoxLayout;classQHBoxLayout;classOGridLayout;classQSpacerltem;classQFrame;classQLabel;classQPushButton;classQLCDNumber;classFormI:publicQWidget{QoBJECTpublic:Forml(QWidget·parent=0,eonstchar·name=0,WFlagsfl=0);-FormlO;OFrame·frame3QFrame*frame32:2:3:QLabel*pixmapLabellQLabel·pixmapLabell-3;QFrame*frame34:QLabel·pixmapLabelIj;QFrame*frame3;QLabel·pixmapLabel1;QFrame*frame35:QLabel·pixmapLabel1-5;OFmme·frame36:QLabel*pixmapLabelI6:7:QFrame*frame37:QLabel*pixmapLabel1QF舢e·frame38;QLabel*pixmapLabel18:QPushBuRon*pushBuRonl;QLCDNumber*lCDNumberl:QLCDNumber*ICDNumber2:QPushButton*pushButton12:QLCDNumbe—lCDNumberl2:QLCDNumber*lCDNumber22:QLCDN啪be产lCDNumberl3:QLCDNumber*lCDNumber23:QPuslaBuuon*pushButtonl3:QLCDNumber*lCDNumber24:QLCDNumber*lCDNumberl4:QPushBuRon*puslaBuaonl4:QLCDNumber*lCDNumberl5:QLCDNumber*lCDNumber25:QPushButton*pushButtonl5:QLCDNumber*lCDNumber2QPushBuuon*pushBuRonl6:6:附录QLCDNumber*JCDNumberl6:QLCDNumber·lCDNumber27:QPushButton*pushButtonl7:OLCDNumber*lCDNumberl7;QPushButton*pushButtonl8:QLCDNumber.1CDNumberl8:OLCDNumber*ICDNumber28:publicslots:virtualvoidMydanshu0;virtualvoidMyhuanshu0;virtualvoidsetlablerO;protected:QGridLayout*Form1Layout;QGridLayout*frame32Layout;QGridLayout·frame3_3Layout;QGridLayout·fTame34Layout;QGridLavout*frame3Layout;QGddLayout*frame35Layout;QGridLayout*frame36Layout;QGridLayout*frame37Layout;QGridLayout·frame3_8Layout;protectedslots:virtualvoidlanguageChange();private:QPixraapimage0;);#endif//FOIU订1Htest.cpp文件的内容:constchar·constimageO_data[】={);1::Forml(QWidget宰parent,constchar·name,WFlagsf1):QWidget(parent,name,f1),imageO((constchar¨)imageo_data){if(!name)FormsetName(”FormlI.);1Layout=newQGridLayout(this,1,1,11,6,”FormlLayout”);frame32=newQFrame(this,”frame32“);frame3_2->setFrameShape(QFrame::StyledPanel);frame32->setFrameShadow(QFrame::Raised):frame3_2Layout=newQGridLayout(frame3_2,1,1,11,6,”frame3_2Layout”);pixmapLabelI2=newQLabel(frame3_2,”pixmapLabelI-2”);‘pixmapLabel1_2->setPixmap(image0);pixmapLabell2->setScaledContents(TRUE):frame3_2Layout->addWidget(pixmapLabell一2,O,0);#include”test.h”#include<qvariant.h≯#include<qpushbutton.h≯#include<qframe.h>#include<qlabel.h>#include<qIcdnumber.h>#include<qlayout.h>#include<qtooltip.h>#include<qwhatsthis.1l>#include<qimage.h>#include<qpixmap.11>#include”test.ui.h”Formstatic81山东大学硕十学位论文FormILayout->addMultiCellWidget(frame3_2,0,0,3,5);frame38=newOFrame(this,”frame38”):frame38->setFrameShape(QFrame::StyledPanel):8->setFrameShadow(QFrame::Raised);frame38Layout=newQGridLayout(frame38,1,l,11,6,”frame38Layout”);pixmapLabell8=newQLabel(frame38,”pixmapLabel18”);frame3pixmapLabel18->setPixmap(image0):pixmapLabel18->setScaledContents(TRUE):frame38Layout.>addWidget(pixmapLabel18,O,0):FormlLayout.>adIdMultiCellWidget(frame38,2,2,9,11);QPushButton(this,”pushButtonl”);Form]Layout->addWidget(pushBurtonl,1,O);lCDNumberl=newOLCDNambe“this,”ICDNumberl”):lCDNumberl->setPaletteForegroundColor(QColor(255,0,0));Form1Layout.>addWidget(1CDNumberl,l,1):lCDNumber2=newQLCDNumbe“this,”ICDNumber2”):1CDNumber2->setPaletteForegroundColor((,20lor(0,0,255));FormILayout->addWidget(1CDNumber2。1,2):pushButtonl=newpushButton1QPushButton(this,”pushButton18”):FormlLayout->addWidget(pushButtonl8,3,9);lCDNumberl8=newQLCDNumber(this,”ICDNumberl8”):FormlLayout.>addWidget(1CDNumberl8,3,10):lCDNumber28=newQLCDNumber(this,”ICDNumber28”):Form1Layout->addWidget(1CDNumber28,3,11);languageChange0;resize(QSize(1066,662).expandedTo(minimumSizeHint0));clearWState(WStatePolished):connect(pushButton1,SIGNAL(clicked()),this,SLOT(MydanshuO));connect(pushButtonl,SIGNAUclicked()),this,SLOT(Myhuanshu0));8=newconnect(pushButtonl,SIGNAL(pressed()),pixmapLabell,SLOT(clearO));connect(pushButtonl,SIGNAUreleasedO),this,SLOT(setlable“)));voidFormI::-Forml(){,Forml::language<Zhange0{setCaption(trUtfS(”ke5k86\)【9扒髓7\x94Lxa8\xe8、)【87、潮搬e5、)‘8ak,a8Lxe5Lx88Lxa4Lxe9№dLxb6Lxe7Lxb3Lxbb””、)(e7、)【bb\)【9r.)):9dLxb6”)):pushButtonIpushButtonl->setText(trUtf8rLx3l、)‘e5kx8tkxb7、)【e9姻dLxb6LxeAXxbdLx8dLxc6Lxa3\)‘80懦‰2->setText(trUt倦(”、x32Lxe5\】x8f\)‘b7、)‘e9仅9d、)【跃M、x1)d波8d\)【e6、)【a3k80\xe9\x9dLxb6”)):姻d\,【b6It)):pushButton1pushButtonl、)【80Lxe9、x9dLxb6”));pushButtonlLx80\xe9、Lx9dkxb6”)):pushButtonl6->setText(trUttgf’.\)【36kxe5Lx8f\)【b7\xe她9d\xb6\)‘e4\xt}dk8d\耻6\煳3、)【80、)汜9仃I『tf8f”、x37\)‘e5k8f\)‘b7\xe9\)‘9d\xb6\xe4、)【(txeTtes>-7_9ex\0bdLx8dLxe6Lxa38【)\\x9dkb6”)):pushButtonlXx9dLxb6”)):pushButtonl(ttrUtf8f”xeTtes>-8_B皇x\6ex\d8kdb【)\kx38\)【e54e【)、6bx\d9x\9ek7bx\f8【)\Lx80、xe9附录test.ui.h文件的内容:#include<stdio.h>#include<math.h>#include<sys/types.h>#include<sys/stat.h>#include<string.h>#include<stdlib.h>#include<errno.h≯#include<unistd.h>#include<fcntl.h>#include<qpainter.1pintdq(char*ille){inta,infile;infile=opcn(file,0RDONLY);read(infile,&a,sizeof(a));close(infile);remma;)voidForml::Mydanshu0{inti=l;i=dq(”/opt/FriendlyARM/QQ2440/root_nfs/jieguo/danshu.dat“);ICDNumberl->display(i);}voidForml::Myhuanshu0{inti--9;i=dq(”/opt/FriendlyARM/QQ2440/root_nfsoieguo/huanshu.dat”);ICDNumber2->display(i);}voidForml::setlabler0{QPixmapimage1(”/opt/FriendlyARM/QQ2440/root_nfs/jieguo/pingxian.jpg”);pixrnapLabel1->setPixmap(image1);pixmapLabel1->setScaledContents(TRLIE);frame3Layout->addWidget(pixmapLabelI,0,0);pixmapLabell->show0;}#undefQTNOCoNlPAT#include”test.h”#include<qmetaobjeet.h>#include<qapplication.h>#include<private/qucomextraP.h>#if!defined(QMOC_OUTPUTREVISION)If(Q_MOC_OUTPUT_REVISION1226)#error”Thisfilewasgeneratedusingthemocfrom3.3.8.It”#error”cannotbeusedwiththeincludefilesfromthisversionofC,t.”#error”(Themochaschangedtoomuch.r#endifconstchar*Forml::classN枷e()const{remm”Forml..:,QMetaObject*Forml::metaObj20:staticQMetaObjectCleanUpcleanUp』orml(”Forml”,&FormI::staticMetaObjeet);#ifndefOTNOTRANSLATJoNQStringForml::訇r(constchar·s,constchar·C){if(qApp)returnqAply>translate(’'Forml”,s,C,QApplication::DefaultCodec);ElseretumQString::fromLatinl(s);)#ifndefQTNOTRANSLATIoNUTF8山东大学硕十学位论文QStringForml::trUtf8(constchar·S,constchar·c){if(qApp)returnqApp->translate(”Forml”,S,c,QApplication::UnicodeUTF8);ElsereturnQString::fromUtfS(S);)#endif//QT-.NO—TRANSLATION—UTF8#endif//QT.-NO—TRANSLATIONQMetaObject·FormI::staticMetaObjectO{if(metaObj)returnmetaObj;QMetaObject·parentObjeet=QWidget::staticMetaObject0;staticconstQUMethodslot_O={IIMydanshu”,0,0);staticconstQUMethodslot_l={"Myhuanshu”,0,0};staticconstQUMethodslot2={I'setlabler”,0,0);staticconstQUMethodslot_3=ClanguageChange”,0,0};staticconstQMetaDataslot_tbl[】={{I-Mydanshu0”,&slot-0,QMetaData::Public),{”Myhuanshu0”,&slot-l,QMetaData::Public),{”setlabler0”,&slot_2,QMetaData::Public),{”languageChange()”,&slot-3,QMetaData::Protected));metaObj=QMetaObject::new_metaobject(”Forml”,parentObject,slot_tbl,4,0,0,#ifndefQT__NO—PROPERTIES0,0,0,0,#endif//QT-■O—PROPERTIES0,0);cleanUp-Form1.setMetaObjieet(metaObj);returnmetaObj;)void·FormI::qt_cast(constchar·clname){if(!qstrcmp(clname,”Forml”))retumthis;returnQWidget::qt_cast(clname);)boolForm1::qt_invoke(int—id,QUObject·-9){switch(一id-staticMetaObject0->slotOffset()){case0:Mydanshu0;break;case1:MyhuanshuO;break;casecase2:setlabler0;break;3:languageChange0;break;default:}QWidget::qt_invoke(一id,-o.);}boolFormI::qtemit(intid,QUObject*0){retumQWidget::qt_emit(_id,—o);)#ifndefQT_NO_PROPERTIESboolFormI::qt_property(intid,inteQVariant·V){remmQWidget::qt_property(id,eV);>boolForml::qt_static_property(QObject·,int,int,QVariant·){returnFALSE;)#endif//QT_NOPROPERTIESreturnreturnTRUE;main.cpp文件的内容:#include”test.h”#include<qapplication.h>intmain(intargc,char··argv){QApplicationapp(argc,argv);Forml幸forml=newFormlO;form1->show0;app.setMainWidget(form1);return(app.execO);}致谢致谢本文是在导师马金奎老师的悉心指导和严格要求下完成的,导师优秀的科学素养、渊博的知识、丰富的科研经验、精辟的学术见解,都是我学习的榜样。导师开放的思维方式对我有很大的启发,在严格要求的同时,也给了我很大的自由发展空间。他严谨的治学态度和高尚的学术道德、为人师表,富有远见的科学思维和洞察力使我深受感染,他渊博的知识和不断求新的精神将激励我在今后的工作、科研中不断的追求进步。感谢马老师对我学习和生活上的帮助!在这里还要特别感谢我的同学王瑞鹏、彭作明和战友赵兴波,他们给了我很多帮助,提供给我部分相关的文献资料,并在我的硬件调试、射击靶场实地图像采集过程中给予了大力帮助,如果没有他们的帮助,我的毕业论文进行的就没有这么顺利。最后我要感谢默默支持我的父母及妻子范明明,感谢父母对我的支持,感谢妻子对我工作学习的理解以及生活的关心照顾。85基于ARM-Linuz机器视觉的军用自动报靶系统的研究
作者:
学位授予单位:
谢殿强山东大学
1.学位论文 彭时林 教育机器人控制平台的研究与实现 2007
本文研究设计教育机器人控制平台,它是教育机器人的控制部分,目的是使该平台与机械部分组合在一起实现的教育机器人更具有教育价值。 首先,通过总体方案设计,将教育机器人控制平台划分为嵌入式控制主板、机器视觉、多自由度机械手控制和移动平台控制四个功能模块。各模块既可工作实现特殊功能,又可以组合一起实现复杂功能。
其次,设计并实现了ARM控制主板各子模块功能。其中,传感器输入接口和执行器接口能使教育机器人控制平台方便地扩展各种传感器和电机,从而实现各种机器人控制功能;人机交互模块的实现则使本平台更容易操作使用,增加学生与机器人的互动性。
接着,选用了识别矩形块和在网球场环境下识别网球作为教育机器人视觉模块的示例功能。为实现视觉示例功能,利用矩形度特征实现了竖直放置的矩形块的识别,采用改进Hough变换和创新提出的半径误差表决算法两种方案实现了网球的识别。仿真结果和视觉模块实际应用结果证明了算法的可行性。
最后,根据教育机器人控制平台的应用特点,实现了模块间RS--485通信功能,实现了机器视觉模块与ARM控制主板的HPI通信功能。
2.学位论文 孔德林 基于嵌入式的机器人目标识别视觉系统设计 2007
随着嵌入式系统的组件将越来越小,集成度越来越高,处理器将越来越快,嵌入式系统将从低端应用逐渐开始覆盖越来越多的机器视觉应用,并且嵌入式系统具有简单易用、体积小巧、成本相对较低的优点,非常适合简单的机器人视觉应用。
本文注重机器人视觉系统硬件平台设计,深入分析了标准PAL制式电视信号(视频信号采集源)格式,介绍了32位RISC微处理器ARM$3C2410A芯片和视频解码芯片TVP5145的工作原理和性能,说明了TVP5145的初始化工作及I<'2>C总线技术,对视频信号传输所需的缓存的实现方法进行了讨论,并对乒乓缓存的设计做了简要介绍。详细介绍了系统的总体设计思路和各模块硬件电路的设计及驱动程序的设计,如NAND flash、SDRAM、LCD、串口通讯等接口电路和利用ARM配置FPGA的实现等。在软件设计中通过灵活设置中断与DMA提高了图像数据的传输效率,充分发挥了ARM处理器的性能。 该系统实现了高速图像信号的采集和显示,为机器人视觉中目标定位、目标跟踪等算法的实现提供了嵌入式平台。
本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1563088.aspx
下载时间:2010年5月25日
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务