




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章车辆管理系统的设计4.1系统登录模块4.1.1车辆查看页类VehicleltemViewActivity,是用于负责从数据库获取指定ID或车牌号的车辆的信息及其登记录列表,显示在用户界面上,接受用户对车辆信息和车辆登记记录的操作。详见图4-1,图4-24.1.2车辆信息编辑页类VchicIcInfoEditActivity,负责从数据库获取指定ID的车辆的信息,同样显示在用户界面上,接受用户的编辑,妥善暂存,保存用户的编辑。4.1.3车辆登记记录编辑页类VehicleQueryEditActivity,负责从数据库获取指定的车辆登录,显示在用户界面上,接受用户的信息,妥善暂存、保存用户的编辑。图4-1车辆系统登录模块结构图图4-2车辆系统登录模块结构图4.1.4车辆照片异步缓冲与加载线程类ViqCachcdlmagcFctchcr,是将已经指定路径的图像文件,直接可以绑定到指定的图像视图之中。为了提高图像显示的效率,在图像绑定车辆信息库和车辆登记单这种数据很多的情况下减少展示的时间,并在一定程度上减少对内存空间的使用,将选择通过绑定新的路径来执行图像部分的操作,并且会使用已经编辑过的较小图片来取代原图,从而加快图片的显示速度。4.1.5数据摩适配器类ViqSQLiteOpenHelper,继承于类android.database.sqlite.SQLiteOpenHelper,负责数据库的创建、升级和本项目中各大UI类数据库的访问。4.2车辆识别模块车牌识别这里特指自动车牌识别,即运用计算机视觉手段,在包含车牌的图像中可以自行对主要车牌的区域进行检测查看,再对其进行提取后处理,留下的车牌部分为所得结果,后再对车牌的字符作适合光学字符识别(OCR)引擎的字符识别检测,检测完成后,车牌号字符串的全部字符就会被显示出来。在这一过程中,所有主要的核心环节在提高识别率的作用上有着显著的影响:1)车牌探测;2)车牌字符分割:3)车牌字符识别。详见图4-3图4-3车牌下面对其分别进行描述并加以实现。图像处理图像学的说法给出,图像处理就是指对所输入图像,进行任何形式的信号处理;所以它的输出形式不单单局限于图像方面,字符串、参数等特殊的文字信号都可以被包含在内,而在该系统中,图像处理的技术就得到了广泛地应用,而且对于信息的处理也至关重要。JavaCVJavaCV其实可以称为一个OpenCV的Java接口。在计算机的视觉领域,使用者往往常用的库都是由JavaCV提供封装的。这些库包括:QpgnCY,FFmncg,libdc1394,PGRFlyCaDlurc,ODcnKincct,vidcolnput,和ARToolKilPlus等。com.googlecode.javacv.cpp包命名空间下的类便展示出了完整的API。并且,实用类还使自身的功能在Java平台包括Android平台边缘检测作为一种简单的物体检测方法特别适合于矩形外框的车牌。本课题采用基于边缘检测的车牌探测技术。将原始图像转化为灰阶图像cvCvtColor(mVehiclelmage,vehiclelmageGray,CVHGR2GRAY);灰阶图像的平滑与增强处理cvSmoothfvehicle/mageGray.vehidebnageGray.CVGAUSSIAN.3):cvEqualizellistMudelmageGray.vehic/elnuigeGrci)^;灰阶图像转化为二值图像cvThreshold(vehicleImageGray.vehicleimageBinary,128,255,CVTHRESHBINARY)从二值图像中提取轮廓CvSeqcontours=newCvSeq():iniobjects=cvFindContoursfvehic/elnrageBinafy.cvCreateMeniStoragef0).contours.Loader.si(CvOmSM.cMss),CV_RETRLIST.CVCHAINAPPROXSIMPLE);基于边缘检测的车牌探测经检测,提取的图像轮廓中有约1800个独立的轮廓区域。所以选择一种合适的方法来确定这个区域就尤为重要,例如:先通过指定的精度来让形状接近于曲线的轮廓,从而可以形成一个多边形的轮廓区域;而如果刚好,这个多边形为面积比较大的四边形,其宽高比的范围也在2.8到3.4之间(对于市面上普通车牌的外廓来说,一般尺寸都是在440mmxl40mm,且宽高比为3.14),就能够初步判断它是车牌轮廓,接下来的工作将困扰该区域展开。示例代码如下:〃获得多边形轮廓CvSeqpolyContours=cvApproxPolyfcontours.Loader.sizeoffCvContour.class),cvCreaieMemSumige(O)tCV_P()LY_APPROX_DP,cvCgh)wPerimeter(cgsws)*f)J)5.0):〃检查轮廓边数和面积if(polyContours.lotal()==4&cvContourArea(polyContours,CVWHOLESEQ,0)>600)(〃获得轮新外框CvRectboimdingRect=cvBoundingRectfpoiyContours.0);〃检验轮廓宽高比doubleplateHWratio=((double)boundingRect.HidlhO)/((double)houndingRect.height());if(plateHWratio>2.8&plateHWratiov3.4)(〃设置原来备份的车辆灰度图像的R3(感二趣区域)cvSetbnageROKvehiclelmageGrayClone.boundingRect):横下来:进行车牌字符的分割//TODO:charactersegmentationonthelicenceimage于是,接下来将进行车牌字符的分割。(车牌的偏斜矫正一般情况下没有必要,本文不讨论)车牌字符分割而原来备份的车辆的图像,就需在对车牌的区域进行设置和规划之后,通过Canny进行边缘检测,最后对设置好的区域图像做边缘检测cvCannyfIicencelmage,plate1ni(tgeCannyt128.255,3);同样通过cvFindContours函数而找到连续的轮廓,就要求全部对车牌字符进行检索判断。而采用的判断方法为:对于车牌轮廓外框高度,需要大于车牌高度的二分之一,而其宽度方面,需要小于车牌宽度的四分之一,达到这样标准的就可以认定为完整的车牌字符。以此,车牌中的点号、孔隙和小范围的污点均已被自动去除。分割后的字符,可以单独识别,也可以拼接后一起识别车牌字符识别车牌语言的训练车牌语言训练的过程.就是提供给计算机目标文字图像及相应的文字,让计算机自动分析并存储这一对应关系的过程。Tesseract为训练过程提供了一定的支持。首先,取得带标准车牌文字的图像文件然后,将它们上下拼接成一幅图像,保存成TIFF格式。图像宽高建议为1056*2000(单位像素),图像分辨率96dpi,命名为-lf.exp10.tif‘o之所以将三类图像拼接成一幅图像,一方面是应官方文档要求,一类字体一幅图片,三类字符同属一种字符(这里命名为“cnlf”);另一方面是为了简化训练过程,接下来开始生成中间文件。首先在计算机上安装Tesseract引擎(目前是KsscracJocr-setup-3.01-l.exe)。然后,在命令行执行以下命令:tesseractcnlp./pfi.exp10.tifcnlp.ipft.exp10batch.nochopmakebox该命令将使用默认的语言(英文)对cnLcnlf.cxplO.tififf行识别。识别结果将生成盒子文件文件cnlp.lpft.cxplO.box,文件中每一行均为所识别出的字符、其在训练图片中的坐标(四列分别是左、下、右、下,坐标原点为图片左下角)以及页号在使用默认语言自动生成的盒子文件时,做出进行一定的修改,然后再输入计算机,就算是在新语言学习的过程中完成了至关重要的一步。在盒子文件中自动生成的字符如果可以直接和对应正确字符相互匹配,那么接着就会大大提升文件的修改速度,因为这样的话仅仅需要把错乱的字符改好就算完成;如若因为tesseract的原因,单个的字符被翻译成了几个字符的情况(即在解析的过程中,衍生出多个结果,或者在盒子文件的解释里得到了多行记录),则需要采取一定的手段找到所识别行与目标字符的则应关系,再进行合并。其实,对于综上所有问题,有种相对便捷的办法。因为造成被tesseract错误解释,并被检测成多个字符的原因在于汉字的多样性,汉字的结构及其偏旁部首或多或少会带来影响;直接使用生成的盒子文件就是通过文本文件的形式,来展示目标的字符,和这些字符的所在区域,范围就是在训练图片。所以对于字符复杂的、字符结构特殊的或者字符的笔画不连贯的,可以直接添加或删减将其完整以便识别。盒子在被识别出来后就可以直接换回原图,接下来的工作要简单得多,按步骤:〃训练Tessemcl:tesseractcnlp.Ipft.exp10.tifcnlp.Ipft.exp10nohatchbox.trainH讯算宇符集:unicharsetyxtraclorcnlp.IpfiexpIO.hox〃读取字体属性:(新建字体属性文件竹而roperties9内容为“IpR00100”)niftrainin^-Ffontproperties-£/unicharsetcnlp.Ipft.exp10.tr〃分类归并:mftraining-Ffontproperties・Uunicharsei-Ocnlp.unicharsetcnlpJpfi.explO.trcnIrainingcnlp.Ipft,exp10.tr”其他文件(数据宇典、unichwambi零)均不必提供。〃汇集所有中间文件,生成语言包:(先须为normproto,Micmfem,inUemp,pffmtciblefthmicharset等文件加上语言名前缀,这里用”;语言名建议遵循1SQ639.2标准)comhine_tessdatacnl.不出意外,专用车牌语言包cnl.traineddata即生成成功!cnl.traineddata同样可在参考文献网中下载得到。重要提醒:训练语言包的过程中,可能会有这样或那样的问题。多尝试,多分析,查阅Tessearct项目的问题列表,并勇于提问,最终一定能成功。关于上述过程的讨论,详见Tessearct项目第557号问题讨论El。343Tesseract库在Android中的使用Tesseract库在Android中的使用,同样由JNI实现。开源项gtcsscract-android-tools6用于使用TesseractCR和Lcptonica图像处理库的一系列AndroidAPI和构建文件。sseract•»dfoftods田;com.googl^ode.leptonica.anckded£ftcom.google<ode.teefacc.ar4kc*jffld?【GenerM>dJarSAArdrod2J.3$*ArdrodDependenciesbnS^docSWcon>_0ooOcc<xJ®j8ptcHfca_/rdro(lucom_8<Rec(xje_t*eract_s&ddjfArdodff*.7^cpkadonn+日为lbsSWarrneatiibteptso;”bbte$s.soS〃.ffiffi2*obi百res.AndrodMentttt.rtbuW.xnil£C0PYW3pro^wrd.dgproject.prcpcrtiestREAWE共享库liblept.so和libtess.so可以直接通过NDK编译生成;目录jin下存放的是这两个库的C/C+T源文件和编译指令。有关NDK的相关知识,参考Android官方文档包com.googlccodc.tesseract.android下的类TcssBascAPI即为TesseractOCR引擎的Java接口。它并没有实现所有可用的JNI方法,不过实现的方法已经够用。它们主要包括:•com.googlecode.tesseract.android.TessBaseAPLTessBaseAPIf)构造TessBaseAP实例•booleancom.googlecode.tesseract.android.TessBaseAPI.init(Stringdatapath.Stringlanguage)使用指定语言初始化Tesseract引擎。•voidconi.googlecode.tesseract.android.TessBaseAPLsetPageSegModefintmode)设置页面分割模式,决定OCR引擎在识别文字之前要作多少处理。•voidcom.goog/ecode.tesseract,android.TessBaseAPI.setlmagefPiximage)设置待识别图像。•Siringcom.googlecode.tesseract.android.TessBaseAPI.getUTF8Text()返回UTF&格式地识别出的文本。•in!com.googlecode.tesseract,android.TessBaseAPLmeanConfidence()返回文本识别结果的确定度。库项目tcsscract-android-4.3车辆信息模块(1)车辆信息库(车牌号,车型M架号,车主姓名,车主电话,车主性别,车主出生年月,车主驾照号,车辆备案照片,备注人)其中率碍号为候选码。因为车主信息并没有其他的,并没有为车主信息建立一个专用的表。(2)车辆登记单(车牌号,时间,地点,车辆登记照片,备注)。其中车牌号,时间,地点为候选码;车辆登记照片指登记时拍摄的照片。而在这些相关信息之中,车辆登记单上所登记的车牌号是不以车辆信息库的车牌号为准而参考的,因为业务的不同需求和业务的涉及领域不一样,导致了登记的车辆的车牌号在车辆信息库中可能没有更新信息或者就并不存在;若信息并不存在的话,随时将该车信息登记后,录入车辆信息库即可。在表“车辆信息库”中,表中的全部信息是会和对应的“车辆信息库”列表的各个项相互匹配,这样也是为了提高处理的效率和能力,让用户更快的浏览车辆登记记录,对于已经完成登记的车辆,其车主的姓名、联系方式等登记过的信息也会被清晰地一一展示出来。“车辆登记单”列表中的每一项中的数据,除来自表“车辆信息库”中的一行之外来以车牌号为连接条件,关联了表“车辆信息库”中相应车辆的车主姓名和联系电话等信息。因此,我们需要创建一个视图“车辆登记信息单”,将之与类“车辆登记单”绑定:车辆登记信息单(车牌号,车主姓名,车主电话,地点,车辆登记照片,备注人)其中济注字段来自于车辆登记单。
第五章车辆管理系统的实现5.1系统的开发环境为更加清楚地显示项目的实现轮廓,首先给出项目的目录结构,包括类的组成(src目录)、引用的Jar包(lib目录)和So共享j^Oib/amieabi目录)、XML资源文件(心目录)等。支撑条件支撑平台(1)开发平台1) EclipseIDEforJavaDevelopers最新版本。本项目采用IndigoServiceRelease2O2) AndroidADT最新版本,本项目采用ADT-16.0.1。3) AndroidSDK最新版本,本项目釆用android-sdk_rl8-windows.zip。4) AndroidNDK最新版本(非必需),本项目采用android-ndk-r8-windows.zipo5) 真实Android设备(可使用模拟器替代),本项目采用小米手机MI.ONEPLUS。(2)运行平台1)最小SDK版本:2)硬件使用a)相机(非必需),用于拍摄车辆照片,并识别出车牌号。可手工输入车牌号。b)GPS(非必须),用于自动获取当前地理坐标,和车辆登记库中的数据。c)硬件感应(非必须),用于实现“摇一摇''快速登记车辆功能。可通过点击按钮或选择菜单进入登记车辆功能。d)移动网络或WiFi(非必需),用于辅助GPS定位,将地理坐标转化为实际地点名,以及同步车辆数据。e)通话与短信(非必需),用于快速拨打车主电话、发送车辆信息。(3)权限使用a)写SD卡(WRITE_EXTERNAL_STORAGE),用于保存车辆照片。b)通话(CALLPHONE)c)短信(SENDSMS)d)振动(VIBRATE),用于在识别岀“摇一摇”动作时给出振动反馈。e)互联网(INTERNET)5.2系统代码库支撑代码库(1)tesseract-android-tools升源项目tcsscract-android-tools^jin目录下是I冬I像识别库Tcsscract-OCR和图像处理库Leptonica的C/C+本地代码。通过AndroidNDK编译二者,生成专用于Android设备ARM处理器的共享库libtcss.so和liblcpl.so。当然,也可以从本项目在谷歌代码上的代码库中取得,以免去重新编译的麻烦。将这两个共享库复制到项目lib/armcabi目录下。项目tesseract-android-tools使用JNI技术调用上述本地代码。其他项目要调用上述本地代码,直接引用tesseract-android-tools生成的Jar包tesseract-android-tools.jar即可。建议将Jar包存放在lib目录下。(2)javacv与开源项目JavaCV的引用类似。项目JavaCV的编译,对平台的要求较多。这里直接引用其JarSjavacv.jaroJavaCV采用JavaCPP技术访问本地代码。JavaCPP访问本地代码的技术尚未集成在Android代码栈中,因此须在每个使用它的项目中引用;其Jar包是javacpp.jar。项目JavaCV为完整地支持各种图像、视频的处理,引用了许多共享库。本项目中只需要使用libopeiicvcorc.so,libjniopencv_core.su,libopencvimgproc.so,libjniopencvimgproc.so,1ibopencv_highgui.so,1ibjniopencv_highgui.so,libtcss.so,liblept.s.八个共享库即可。(3)支撑数据项目用到了图像贝别,前文详细讲述了专用于中华人民共和国机动车号牌的语言包的训练方法。该语言包名为-cnl.traineddata';大小为515KB.需要放在SD卡上,图像识别时读取。为了最大限度地降低用户使用本系统的难度,本项目不使用普遍使用的从网络下载SD卡上所需资源文件的方法,而是将它直接放置在项目assets目录下。图像识别过程中,如果检测到SD卡上不存在该语言包则自动将其复制到SD卡特定目录(本项目使用Tesscract-OCRiS语言包标准目录/sdcard/tesseract/tessdata/)T5.3系统的开发环境在Android中,SQLite数据库作为应用程序永久保存数据的重要机制,得到了Android的强大支持。应用程序访问SQLite数据库,无需事先配置好数据库,然后指定连接字符串访问(SQLite本身是零配置、零服务的);相反,应用程序像进行普通文件操作一样,通过代码创建数据库,更新数据库,升级数据库。数据库设计一节中已经描述了本应用中数据库的表和视图的结构。在对表的描述中,提到了“候选码”而非“主码”是因为,我们将使用一个整型自增片段作为主码,以与更加方便地与列表适配器(ListAdapter)相匹配,在一定程度上提升代码编写效率和程序运行效率。数据库的模式创建如下:CREATETABLEInfo(_id.licence,type,vin.name,phone,gender,birth,drivinglicence,note,photo);CREATETABLEQueryfjd.time,place,note,photo,Jicence):CREATEVIEWQueiylnfoASSELECTQuery.JdASjd.JicenceASlicence,name.phone,time,place.Query1,noteASnote.Queiy.photoASphotoFROMQuery9LEFTOUTERJOiNInfoONJicence-licence
第六章车辆管理系统的测试6.1测试方法应用程序在开发设备上运行良好,能满足需求分析中所研究各大使用场景和用例的基本需求。下面将结合需求设计中的几个用例给出具有代表性的程序运行截屏。6.1.1浏览车辆信息库“车辆信息库”这一页的内容中,会以车牌号排序来展示一共52条车辆信息。在列表项的左侧会显示的是车牌号、车主姓名与电话等信息,右侧则是该车辆在备案时记录的照片。单击“车辆登记单”按钮,可切换至“车辆登记单”项面;单击“查询,登记车辆”按钮,可切换至“查询/登论车辆”页面;单击列表项可切换至“查看车辆”页面。单击“快速会找”按钮,标题栏将变为可编辑状态,可输入任一已知字段中的文本片段进行查找,列表项实时更新。长按列表项,将弹出上下文菜单,可对车辆信息进行查看(切换至“查看车辆”页面)、编辑、删除操作,可快速联系车主,可短信发送车辆信息,可复制部分或全部字段至剪切板。6.1.2浏览车辆登记单“车辆登记单”页以列表形式显示了所有共53条车辆登记记录,以登记时间逆序排序。列表项中,左侧是车辆的登记照片,右侧是所识别或输入车牌号、通过车牌号所得的车主姓名和电话等信息。在车辆登记单这一页中,还会单独记录下车辆的登记时间和所在地点,而在记录登记时间时,会以相对时间(如“刚才”“10分钟前”“35分钟前”等)的形式展示给用户,这部分的内容对于在特定的环境和情况下会起到很大的作用。“浏览车辆登记单”页面中的操作,和前述“浏览车辆信息库”页面的操作十分类似,这里不再赘述。6.1.3查看车辆“查看车辆''页显示了指定车辆的信息以及其所有登记记录。同样可对该车辆的登记实施编辑、删除操作。同时,还可以新建登记记录;系统将自动填入登记的时间和经纬度信息。6.1.4查询/登记车辆“查询登记车辆页取得用拍摄或选择的车辆照片,自动检测到车牌并对其图像进行加工,最后完成识别并等待用户进行确认。用户在确认了信息之后,这次登记将会被系统自动保存所得车牌号码将会被送往车辆信息库进行检索查找,查询是否有相匹配的。如若并没有,那没在“查看车辆”这一页的上方就是空白项,无任何的车辆信息,空白的区域将留给用户对该车的车辆进行登记,并记录下信息。6.2系统的测试软件的测试的方法主要就是白盒测试和黑盒测试这两种,而在对Android应用进行白盒测试,AndroiAPI提供了ActivitylnstnimcntationTcstCasc2等测试专用的类,用以模拟用户和系统对应用的操作或调用,对应用实施快速自动地测试。本次设计的系统选用了手工测试的测试方法。对于之前所叙述的不同案例和数据进行测试。对可能的路径进行估计后再做测试,这样在发现有任何问题户可以第一时间找到所属类型,再将其逐一解决。在设置规划边界条件时,如对列表项目的规划、不同项目的实施编辑或删除、项目的设置,而在对函数编写的过程中遇到的空白字符、参数,或者其他方面有的异常情况,例如GPS无响应、SD卡受损、文件空白或不存在等,该程序都已有充足的准备可以应对硬件和软件等不同情况。此外,代码中关键部分都设置了日志记录,遇到问题可迅速定位并解决。6.3测试总结针对关键技术车牌识别,由于本项目目前的主要工作只是将车牌识别技术在Andreid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校服服务方案
- 2025工厂职工安全培训考试试题附答案【预热题】
- 2025项目部治理人员安全培训考试试题带答案(综合题)
- 2025年企业安全培训考试试题【培优】
- 2025企业安全培训考试试题及参考答案(精练)
- 2025新员工入职安全培训考试试题(历年考题)
- 2025车间安全培训考试试题含答案【夺分金卷】
- 2024-2025企业安全培训考试试题附参考答案(巩固)
- 25年公司、项目部、各个班组三级安全培训考试试题含答案【培优A卷】
- 四川省峨眉二中2025届全国高三模拟考试(四)生物试题含解析
- 卫生管理行业人才培养与社会责任分析试题及答案
- 酒类合伙开店协议书
- 2025克拉玛依机场第一季度招聘(15人)笔试参考题库附带答案详解
- 企业事故隐患内部报告奖励制度
- 中国历史地理知到课后答案智慧树章节测试答案2025年春泰山学院
- 2025江苏南京证券校园招聘129人易考易错模拟试题(共500题)试卷后附参考答案
- 《基于MATLAB和Simulink的电动汽车助力转向控制系统仿真研究12000字(论文)》
- 2025年八下音乐期末试题及答案
- 初中人工智能跨学科融合教学探索与实践
- 《膝关节半月板》
- 2025年职教高考对口升学 护理类 专业综合模拟卷(5)(四川适用)(原卷版)
评论
0/150
提交评论