蔡春曉,李燕龍,陳 曉
(1.桂林電子科技大學(xué) 教學(xué)實(shí)踐部, 廣西 桂林 541004; 2.桂林電子科技大學(xué) 信息科技學(xué)院, 廣西 桂林 541004)
?
基于Hadoop的Java調(diào)用Matlab混合編程的車牌識(shí)別
蔡春曉1,李燕龍1,陳曉2
(1.桂林電子科技大學(xué) 教學(xué)實(shí)踐部, 廣西 桂林541004; 2.桂林電子科技大學(xué) 信息科技學(xué)院, 廣西 桂林541004)
摘要:在交通行業(yè)日益發(fā)展的今天,車牌識(shí)別技術(shù)對(duì)于公路車輛監(jiān)管以及車輛軌跡跟蹤越來(lái)越重要,考慮到龐大的車輛信息數(shù)據(jù)量,單機(jī)處理數(shù)據(jù)能力已不能滿足實(shí)時(shí)性的要求。本文在詳細(xì)研究分布式處理平臺(tái)Hadoop的工作原理后,利用其強(qiáng)大的HDFS存儲(chǔ)系統(tǒng)與MapReduce數(shù)據(jù)處理方案,通過Java對(duì)Matlab的調(diào)用,簡(jiǎn)化了識(shí)別程序,搭建了分布式處理平臺(tái),即使在數(shù)據(jù)量龐大的情況下也能夠進(jìn)行車牌識(shí)別分布式計(jì)算。實(shí)驗(yàn)結(jié)果表明,在處理2 000張以上的車牌圖像時(shí),運(yùn)行效率提升了2倍左右。
關(guān)鍵詞:云計(jì)算;車牌識(shí)別;混合編程;分布式計(jì)算
0引言
近年來(lái),隨著我國(guó)公路交通事業(yè)的日益發(fā)展和人民生活水平的提升, 車輛數(shù)目不斷增加, 通過車牌識(shí)別來(lái)統(tǒng)計(jì)車輛軌跡的方法對(duì)于交通管制的作用也變得愈發(fā)重要[1]。 為了能夠快速存儲(chǔ)和處理龐大的車牌號(hào)信息數(shù)據(jù), 必須借助分布式處理平臺(tái)。 Hadoop是Apache基金會(huì)所開發(fā)的一種分布式基礎(chǔ)架構(gòu), 具有高可靠性、 高拓展性、 高效性、高容錯(cuò)性、低成本等一系列特性,用戶可以輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。Hadoop框架最核心的設(shè)計(jì)HDFS與MapReduce分別可以實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)與海量數(shù)據(jù)計(jì)算。
2006年初, 通過借鑒Google的GFS和Map Reduce技術(shù),Nutch項(xiàng)目的開發(fā)團(tuán)隊(duì)解決了前期面臨的軟件擴(kuò)展性問題,實(shí)現(xiàn)了開源的Nutch分布式文件系統(tǒng)(NDFS)和MapReduce計(jì)算框架。由于NDFS和MapReduce具有較高的應(yīng)用價(jià)值,而不僅限于搜索領(lǐng)域,開發(fā)團(tuán)隊(duì)將它們從Nutch項(xiàng)目中拆分出來(lái),組成一個(gè)新的開源項(xiàng)目Hadoop,NDFS隨即更名為HDFS。2008年初,Hadoop成為Apache的重點(diǎn)研究項(xiàng)目,得到了一些國(guó)際廠商的支持,如FaceBook、Yahoo以及阿里巴巴等互聯(lián)網(wǎng)巨頭,這使得Hadoop迎來(lái)了它的快速發(fā)展[2]。
在短短的幾年中,Hadoop成為了目前為止最為成功、最廣泛使用的大數(shù)據(jù)處理主流技術(shù)和系統(tǒng)平臺(tái),并成為一種大數(shù)據(jù)處理事實(shí)上的工業(yè)標(biāo)準(zhǔn)[3],得到工業(yè)界大量的進(jìn)一步開發(fā)和改進(jìn),并在業(yè)界和應(yīng)用行業(yè),尤其是互聯(lián)網(wǎng)行業(yè)得到廣泛的應(yīng)用。
由于在系統(tǒng)性能和功能方面存在不足,Hadoop在發(fā)展過程中不斷改進(jìn),自2007年推出首個(gè)版本以來(lái),目前已經(jīng)先后推出數(shù)十個(gè)版本。Hadoop系統(tǒng)在大規(guī)模數(shù)據(jù)分布存儲(chǔ)和批處理能力[4],以及在系統(tǒng)的可擴(kuò)展性和易用性上具有不少其他系統(tǒng)難以具備的優(yōu)點(diǎn), 并且由于近幾年來(lái)業(yè)界和應(yīng)用行業(yè)在Hadoop開發(fā)和應(yīng)用上已有大量的前期投入和上線應(yīng)用系統(tǒng),以及Hadoop形成的包含各種豐富的工具軟件的完整生態(tài)環(huán)境,同時(shí)也隨著Hadoop自身向新一代系統(tǒng)的演進(jìn)和不斷改進(jìn),在今后相當(dāng)長(zhǎng)一段時(shí)間內(nèi),Hadoop系統(tǒng)將繼續(xù)發(fā)揮其在大數(shù)據(jù)處理領(lǐng)域的重要作用,同時(shí)其他各種新的系統(tǒng)也將逐步與 Hadoop系統(tǒng)相互融合和共存[5-6]。
Hadoop的底層框架由Java編寫,考慮到各種計(jì)算情況下,有些Java代碼實(shí)現(xiàn)的運(yùn)算并不高效,而利用Matlab寫好相應(yīng)的函數(shù),再由Java將其調(diào)用會(huì)顯得更加方便[7]。Java 語(yǔ)言具有跨平臺(tái)性、可移植性、多線程、分布式、安全可靠等優(yōu)點(diǎn)。但 Java 程序設(shè)計(jì)語(yǔ)言對(duì)一些較為復(fù)雜的數(shù)值計(jì)算的編程較繁瑣,編程效率較低。對(duì)于較為復(fù)雜的分析與處理可以采用 Java 及 Matlab 的混合編程,實(shí)現(xiàn)二者的優(yōu)勢(shì)互補(bǔ)。
1Hadoop平臺(tái)以及eclipse開發(fā)環(huán)境的搭建
1.1Hadoop平臺(tái)介紹
分布式文件系統(tǒng)HDFS和分布式計(jì)算框架MapReduce是Hadoop的兩大核心組成部分。其中,HDFS負(fù)責(zé)大規(guī)模數(shù)據(jù)集的分布式存儲(chǔ),是一個(gè)典型的主從式體系結(jié)構(gòu),由1個(gè)主節(jié)點(diǎn)(NameNode)和多個(gè)從節(jié)點(diǎn)(DataNode)構(gòu)成;整個(gè)Hadoop集群中,只允許同時(shí)存在一個(gè)NameNode節(jié)點(diǎn),它是整個(gè)系統(tǒng)的主控服務(wù)器,用于管理HDFS的命名空間和協(xié)調(diào)客戶端的文件訪問。MapReduce構(gòu)建在HDFS之上,為存儲(chǔ)在HDFS上的數(shù)據(jù)提供分布式計(jì)算框架,由1個(gè)JobTracker和多個(gè)TaskTracker組成;JobTracker負(fù)責(zé)整個(gè)MapReduce的資源監(jiān)控和作業(yè)調(diào)度,TaskTracker負(fù)責(zé)執(zhí)行JobTracker分配下來(lái)的計(jì)算任務(wù);用戶通過客戶端將編寫好的MapReduce程序提交到JobTracker端,之后MapReduce作業(yè)被分解為若干個(gè)Map Task和Reduce Task,任務(wù)調(diào)度器按照一定的調(diào)度策略(可配置)將任務(wù)分配到適當(dāng)?shù)腡askTracker上執(zhí)行。兩者緊密結(jié)合、相互協(xié)調(diào),為Hadoop高效、可靠地處理大數(shù)據(jù)提供了保障。
分布式計(jì)算的簡(jiǎn)略實(shí)施步驟如下:①集群下每臺(tái)計(jì)算機(jī)安裝Linux操作系統(tǒng);②每臺(tái)計(jì)算機(jī)修改主機(jī)名(主機(jī)名和IP地址的映射), 配置hosts文件(在/etc/hosts中添加機(jī)器名和相應(yīng)的IP);③創(chuàng)建用戶;④配置ssh,使master主機(jī)與每臺(tái)slave主機(jī)實(shí)現(xiàn)無(wú)密碼登陸;⑤安裝JDK;⑥安裝Hadoop;⑦在master主機(jī)上配置好,再分發(fā)到各臺(tái)slave主機(jī)。此外,安裝Hadoop后需修改環(huán)境變量,加入Hadoop路徑,為方便統(tǒng)一管理,在Hadoop根目錄下建立文件夾:mkdir tmp、mkdir hdfs、mkdir logs、mkdir hdfs/name、mkdir hdfs/data,可將文件夾權(quán)限修改為可讀寫;再修改/Hadoop/conf/目錄下的配置文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、 mapred-site.xml、masters、slaves;配置masters和slaves:分別用gedit打開masters和slaves,前者加入hadoopm,后者加入hadoops即可;將配置文件hosts、bashrc同步到集群各個(gè)節(jié)點(diǎn)中,并把配置好的hadoop發(fā)送到集群中各個(gè)節(jié)點(diǎn);對(duì)集群的分布式文件系統(tǒng)進(jìn)行格式化,并檢查系統(tǒng)啟動(dòng)情況。
1.2開發(fā)環(huán)境安裝
①在Linux下安裝eclipse;
②安裝eclipse-hadoop插件;
③配置eclipse;
④測(cè)試插件是否安裝成功。
由于本文所論述的識(shí)別車牌方法涉及Hadoop內(nèi)部HDFS文件系統(tǒng)的工作原理,而開發(fā)環(huán)境的安裝只為了能夠讓開發(fā)者運(yùn)用自己所擅長(zhǎng)的語(yǔ)言編譯出適用于某種特定功能的代碼,故關(guān)于開發(fā)環(huán)境的具體安裝方法及步驟本文不再贅述。
至此,系統(tǒng)環(huán)境搭建已完成[8]。
2Matlab的調(diào)用與MapReduce的運(yùn)算執(zhí)行
2.1Matlab車牌識(shí)別算法
車牌識(shí)別需經(jīng)過觸發(fā)拍照、圖像采集、圖像預(yù)處理、車牌定位、字符分割、字符識(shí)別、輸出結(jié)果等一系列過程,其中字符識(shí)別為核心內(nèi)容。目前,用于車牌字符識(shí)別(OCR)的算法已經(jīng)有很多種,主要有基于模板匹配的OCR算法[9]、基于特征分析的字符識(shí)別算法及基于人工神經(jīng)網(wǎng)絡(luò)的OCR算法[10]。本文以基于模板匹配車牌識(shí)別Matlab算法為例,實(shí)現(xiàn)在Hadoop云計(jì)算平臺(tái)上Java調(diào)用Matlab混合編程的車牌識(shí)別處理過程。
如圖1所示,基于模板匹配的OCR算法過程為:首先對(duì)待識(shí)別字符進(jìn)行二值化,并將其尺寸大小縮放為字符數(shù)據(jù)庫(kù)中模板的大小,然后與所有的模板進(jìn)行匹配,最后選最佳匹配作為結(jié)果。模板匹配是圖像識(shí)別方法中最具代表性的基本方法之一[11],它是將從待識(shí)別的圖像或圖像區(qū)域中提取的若干特征量與模板相應(yīng)的特征量逐個(gè)進(jìn)行比較,計(jì)算它們之間規(guī)化的互相關(guān)量,其中互相關(guān)量最大的一個(gè)就表示期間相似程度最高,可將圖像歸于相應(yīng)的類。通常情況下用于匹配的圖像各自成像條件存在差異,本文采用相減的方法求得字符與模板中最相似的字符,然后找到相似度最大的輸出[12]。
圖1 車牌識(shí)別算法Fig.1 License plate recognition algorithm
2.2Java對(duì)于Matlab的調(diào)用
考慮到計(jì)算的各種情況,有些用Java代碼實(shí)現(xiàn)的計(jì)算難免會(huì)顯得不夠高效。而利用Matlab寫好相應(yīng)的計(jì)算函數(shù),然后打包成jar包供Java調(diào)用,在某些情況下會(huì)更加方便。以下說(shuō)明如何實(shí)現(xiàn)這一過程:
(1)確定計(jì)算機(jī)上已安裝Matlab或者M(jìn)atlab動(dòng)態(tài)鏈接庫(kù),并且完成Java的運(yùn)行環(huán)境配置,Matlab的版本必須為2006b+(包括2006b或更高版本), 因?yàn)橹挥性谶@些版本中才有Matlab Builder for Java(也叫Java Builder)[13]。
(2)打開Matlab,在Command Window框中輸入deploytool,在Name中輸入名字,在Location中選擇路徑,最后在Type中選擇Java Package。
(3)在Matlab中找到Java Package窗口,添加class文件,因?yàn)榇宋募褪且院髮?dǎo)入到Java中要作為一個(gè)對(duì)象的名字,故當(dāng)命名class文件的時(shí)候需要注意,其本身即為放在new后面作為構(gòu)造函數(shù)的類名,本文命名為test。
(4)點(diǎn)擊類名下的Add files,將剛才編輯好的m文件test.m等相關(guān)函數(shù)文件加到test.prj當(dāng)中。
(5)打包:在Matlab安裝的目錄中找到“… oolboxjavabuilderjarjavabuilder.jar”的文件,在剛剛打包的文件夾中找到對(duì)應(yīng)的包,本文為test.jar,將這兩個(gè)jar包導(dǎo)入到Java項(xiàng)目當(dāng)中,新建Java類文件test.java,這個(gè)Matlab文件轉(zhuǎn)為了Java類就可以直接被Java項(xiàng)目調(diào)用。
2.3MapReduce執(zhí)行流程
借助Hadoop 框架及云計(jì)算核心技術(shù)MapReduce 來(lái)實(shí)現(xiàn)數(shù)據(jù)的計(jì)算和存儲(chǔ),并且將HDFS分布式文件系統(tǒng)和HBase分布式數(shù)據(jù)庫(kù)很好地融入到云計(jì)算框架中,從而實(shí)現(xiàn)云計(jì)算的分布式、并行計(jì)算和存儲(chǔ),并具有很好的處理大規(guī)模數(shù)據(jù)的能力。
MapReduce的任務(wù)可分為兩個(gè)階段:Map階段和Reduce階段。每個(gè)階段都使用鍵值對(duì)作為輸入和輸出,IO類型可由程序員進(jìn)行選擇。一個(gè)MapReduce工作單元,包括輸入數(shù)據(jù)、MapReduce程序和配置信息。作業(yè)控制由JobTracker(1個(gè))和TaskTracker(多個(gè))執(zhí)行。MapReduce程序執(zhí)行時(shí),輸入的數(shù)據(jù)會(huì)被分成等長(zhǎng)的數(shù)據(jù)塊,這些數(shù)據(jù)塊即為分片。Map任務(wù)運(yùn)行在本地存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)上,才能獲得最好的效率。Map的結(jié)果只是用于中間過渡,這個(gè)中間結(jié)果要傳給Reduce任務(wù)執(zhí)行,Reduce任務(wù)的結(jié)果才是最終結(jié)果,Map中間值最后會(huì)被刪除。
一個(gè)MapReduce工作(job)會(huì)將文件系統(tǒng)中的數(shù)據(jù)輸入并分隔為多個(gè)獨(dú)立的分塊(split);每個(gè)分塊都會(huì)被提交給一個(gè)Map任務(wù)處理;經(jīng)Map任務(wù)處理后,所有具有相同屬性的數(shù)據(jù)會(huì)被提交給一個(gè)Reduce任務(wù)處理;Reduce任務(wù)將處理結(jié)果輸回文件系統(tǒng)。而本文使用到MapReduce最核心的功能則需通過對(duì)Map任務(wù)與Reduce任務(wù)的編程實(shí)現(xiàn)。
進(jìn)行任務(wù)配置: job.setOutputKeyClass(key3_T.class); job.setOutputValueClass(value3_T.class); 編寫Map extends Mapper類時(shí)實(shí)現(xiàn)數(shù)據(jù)映射過程“〈key1,value1〉→〈key2,value2〉”;編寫Reduce extends Reducer類時(shí)實(shí)現(xiàn)數(shù)據(jù)歸約過程“〈key2,list(value2)〉→〈key3,value3〉”。
數(shù)據(jù)輸入方法:數(shù)據(jù)在進(jìn)入Map任務(wù)前首先需要經(jīng)過分隔和格式化的過程; 輸入數(shù)據(jù)經(jīng)過分隔形成若干個(gè)相互無(wú)關(guān)的輸入分片(Input Split), 各個(gè)輸入分片中的每條數(shù)據(jù)記錄都會(huì)被格式化為〈key,value〉的形式傳遞給Map任務(wù);輸入方法由InputFormat接口類的實(shí)現(xiàn)定義。
3實(shí)驗(yàn)結(jié)果與分析
本文搭建的Hadoop云平臺(tái)由4臺(tái)普通PC組成,其中1臺(tái)作為NameNode節(jié)點(diǎn)(Master), 其余3臺(tái)作為DateNode節(jié)點(diǎn)(Slave)。NameNode節(jié)點(diǎn)用于存放系統(tǒng)目錄和分配計(jì)算任務(wù)等,DateNode節(jié)點(diǎn)用于存儲(chǔ)實(shí)際數(shù)據(jù)和提供計(jì)算資源。
本文所實(shí)現(xiàn)的車牌識(shí)別系統(tǒng)能從車牌圖像中自動(dòng)提取車牌區(qū)域,自動(dòng)分隔字符,進(jìn)而對(duì)字符進(jìn)行識(shí)別,得到車牌號(hào)碼。整個(gè)車牌識(shí)別系統(tǒng)的核心功能為車牌定位與字符識(shí)別,但其他功能也是重要組成部分,關(guān)系著整個(gè)系統(tǒng)的準(zhǔn)確性與效率。在切割過程中會(huì)有對(duì)中文單個(gè)字符進(jìn)行切割的現(xiàn)象,可以通過修改配置參數(shù)或者用基于距離的分割方法對(duì)車牌進(jìn)行切割解決,主要需要完成MapReduce處理過程設(shè)計(jì)、InputFormat功能設(shè)計(jì)、Map任務(wù)功能設(shè)計(jì)、Reduce任務(wù)功能設(shè)計(jì)等。
MapReduce處理過程的設(shè)計(jì):輸入文件為帶有元數(shù)據(jù)和圖像數(shù)據(jù)的車牌消息源文件; Map任務(wù)為從車輛照片中識(shí)別獲得數(shù)字化車牌;Reduce任務(wù)為對(duì)具有相同車牌的元數(shù)據(jù)進(jìn)行歸類和排序;輸出文件為含有車牌軌跡和定位信息的結(jié)果文件。
Map任務(wù)功能的設(shè)計(jì):對(duì)圖像數(shù)據(jù)(類型為BufferedImage,作為Value輸入)進(jìn)行檢測(cè),測(cè)定車牌位置,并進(jìn)行傾斜校正; 再將車牌分隔為字符后對(duì)字符進(jìn)行模板對(duì)比識(shí)別; 得出數(shù)字化的車牌序列(類型為Text, 作為Key輸出)。
Reduce任務(wù)功能的設(shè)計(jì):對(duì)具有相同序列化車牌(類型為Text,作為Key輸入和輸出)的元數(shù)據(jù)集合(類型為Iterable〈Text〉, 作為value輸入)進(jìn)行歸類合并, 并按照時(shí)間順序進(jìn)行排序后輸出(類型為Text, 作為value輸出)。
實(shí)驗(yàn)中具體的識(shí)別過程為:首先取字符模板,接著依次取待識(shí)別字符與模板進(jìn)行匹配,將其與模板字符相減,得到的0越多就越匹配。把每一幅相減后圖0值最多個(gè)數(shù)對(duì)應(yīng)的模板保存下來(lái),即為識(shí)別出來(lái)的結(jié)果[14]。識(shí)別結(jié)果如圖2所示。
設(shè)置4組分別包含有100、 500、 1 000、2 000張車牌信息的隨機(jī)圖像,測(cè)試系統(tǒng)在單機(jī)情況和分布式情況下的處理耗時(shí),其中分布式又分為單節(jié)點(diǎn)(slave_1)、雙節(jié)點(diǎn)(slave_2)和三節(jié)點(diǎn)(slave_3)3種情況。在得到相同輸出結(jié)果的情況下,系統(tǒng)耗時(shí)如圖3所示。
圖2 識(shí)別結(jié)果Fig.2 Recognition results
圖3 圖像識(shí)別系統(tǒng)耗時(shí)Fig.3 Time used in image recognition system
可知,在單機(jī)和1個(gè)節(jié)點(diǎn)的情況下,系統(tǒng)耗時(shí)接近,且單機(jī)處理速度稍快,這是由于單機(jī)環(huán)境下省去了主機(jī)與節(jié)點(diǎn)間通信和數(shù)據(jù)交換的時(shí)間開銷。隨著節(jié)點(diǎn)數(shù)的增加,系統(tǒng)處理速度顯著提升,同時(shí)由于采用Java調(diào)用Matlab處理,處理過程更加靈活,并且圖像數(shù)據(jù)量越大,分布式并行處理的優(yōu)勢(shì)越明顯。實(shí)驗(yàn)結(jié)果顯示,當(dāng)圖像達(dá)到2 000張時(shí),基于云架構(gòu)的系統(tǒng)較單機(jī)系統(tǒng)的處理速度快了2倍左右。因此,基于云平臺(tái)的車牌識(shí)別系統(tǒng)在處理海量圖像數(shù)據(jù)時(shí),性能優(yōu)于傳統(tǒng)單機(jī)識(shí)別系統(tǒng)。
4結(jié)束語(yǔ)
由于目前技術(shù)限制,文中所闡述的車牌識(shí)別技術(shù)還有一些問題,其解決方案如下:(1)本程序使用的是投影法進(jìn)行車牌字符切割, 會(huì)有對(duì)中文單個(gè)字符進(jìn)行切割的現(xiàn)象, 可以通過修改配置參數(shù)或者用基于距離的分割方法對(duì)車牌進(jìn)行切割解決; (2)文件調(diào)用,程序本身不能識(shí)別HDFS文件系統(tǒng)路徑,所以程序運(yùn)行時(shí)調(diào)用的是本地系統(tǒng)的模板文件,這樣會(huì)降低效率。解決方法有兩個(gè):第一是將程序中的路徑替換成HDFS文件路徑;第二是將模板文件放到每一臺(tái)機(jī)器的統(tǒng)一路徑下。
采用Java與Matlab混合編程來(lái)實(shí)現(xiàn)MapReduce功能不僅在識(shí)別車牌的效率有了大幅提升,在其他圖像處理、通信、計(jì)算領(lǐng)域都具有很好的應(yīng)用前景,同時(shí)易于開發(fā)者編寫、更改代碼來(lái)實(shí)現(xiàn)功能的調(diào)整,如此一來(lái),極大促進(jìn)了云計(jì)算的應(yīng)用和推廣。
參考文獻(xiàn):
[1]何蘇勤,楊美薈.嵌入式視頻監(jiān)控系統(tǒng)實(shí)時(shí)性研究[J].計(jì)算機(jī)工程,2009,35(4): 235-237,240.
[2]董西成.Hadoop 技術(shù)內(nèi)幕:深入解析MapReduce 架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M].北京:機(jī)械工業(yè)出版社,2013.
[3]Zhao X M, Ma H D,Zhang H T,et al. Metadata extraction and correction for large-scale traffic surveillance videos[C]//2014 IEEE International Conference on Big Data, 2014:412-420.
[4]羅軍舟,金嘉暉,宋愛波,等.云計(jì)算:體系架構(gòu)與關(guān)鍵技術(shù)[J]. 通信學(xué)報(bào), 2011,32(7):3-21.
[5]王鵬,黃華峰,曹珂.云計(jì)算:中國(guó)未來(lái)的IT戰(zhàn)略[M].北京:人民郵電出版社,2010.
[6]張建勛,古志民,鄭超.云計(jì)算研究進(jìn)展綜述[J].計(jì)算機(jī)應(yīng)用研究,2010,27(2): 429-433.
[7]Echel B.Java編程思想[M].4版.陳昊鵬,譯.北京:機(jī)械工業(yè)出版社,2007.
[8]Metsker S J,Wake W C.Java設(shè)計(jì)模式[M]. 2版.張逸,史磊,譯.北京:電子工業(yè)出版社, 2012
[9]劉佐濂,鄧榮標(biāo),孔嘉圓.一種車牌識(shí)別算法的實(shí)現(xiàn)[J].中國(guó)科技信息,2005,23(2):56-57.
[10]Yoshida T, Kagesawa M,Ikeuchi K,Local-feature based vehicle recognition system using parallel vision board[J].Elecironic and Communication in Japan,2003,86(5):1-10.
[11]史紹強(qiáng),王英健,唐賢瑛.基于整形特征與模糊識(shí)別的手寫體漢字識(shí)別[J].微機(jī)發(fā)展,2004,14(1):114-116.
[12]葉晨洲, 楊杰,宣國(guó)榮. 車輛牌照字符識(shí)別[J].上海交通大學(xué)學(xué)報(bào),2000,34(5):672-675.
[13]張銀鶴,唐有明,王俊偉. 點(diǎn)石成金:JSP+Ajax網(wǎng)站開發(fā)典型實(shí)例[M].北京:電子工業(yè)出版社,2009.
[14]Ching Y T.Detecting line segments in an image:A new implementation for Hough Transform[J]. Pattern Recognition Letters,2001, 22(3): 421-429.
文章編號(hào):1674-9057(2016)02-0383-05
doi:10.3969/j.issn.1674-9057.2016.02.033
收稿日期:2015-06-16
基金項(xiàng)目:廣西自然科學(xué)基金項(xiàng)目(2013GXNSFAA019334)
作者簡(jiǎn)介:蔡春曉(1980—)男,碩士,講師,研究方向:計(jì)算機(jī)控制、云計(jì)算、大數(shù)據(jù),fjcainiao@guet.edu.cn。
通訊作者:李燕龍,講師,lylong@guet.edu.cn。
中圖分類號(hào):TP391.9
文獻(xiàn)標(biāo)志碼:A
Effective recognition of license plate based on invoking of Matlab from Java in Hadoop
CAI Chun-xiao1, LI Yan-long1, CHEN Xiao2
(1.Department of Experiential Practice,Guilin University of Electronic Technology, Guilin 541004,China;2.Institute of Information Technology of Guilin University of Electronic Technology, Guilin 541004,China)
Abstract:With the development of transportation industry, the technology of license plate recognition plays a more important role in the traffic regulation and vehicle tracing than before.Present bulkiness of vehicle information and the capacity of stand-alone data processing can not meet the real-time requirements.The powerful storage system of HDFS and data solution of Map Reduce are used to improve license plate recognition algorithm after studying the principle of Hadoop (a platform of distributed data processing). By Java of Matlab calls, the recognition procedure is simplified, and a distributed processing platform is set up.The license plate recognition can be distributed in computing with a large amount of data. Experimental results show that when dealing with more than 2 000 images of license plates, operating efficiency improved about 2 times.
Key words:cloud computing; license plate recognition; hybrid programming; distributed computing
引文格式:蔡春曉,李燕龍,陳曉.基于Hadoop的Java調(diào)用Matlab混合編程的車牌識(shí)別[J].桂林理工大學(xué)學(xué)報(bào),2016,36(2):383-387.