證件圖像信息采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
隨著信息技術(shù)的不斷發(fā)展,社會各項(xiàng)規(guī)章制度不斷完善,人們需要用各種各樣的證件來表征有關(guān)個(gè)人的信息。對這些證件進(jìn)行信息采集識別是必要的個(gè)人信息獲取和安全的手段,有利于相關(guān)部門對社會進(jìn)行監(jiān)管和提供服務(wù)。一個(gè)完善的證件信息采集系統(tǒng)由證件信息采集設(shè)備及相應(yīng)的配套軟件組成。采集設(shè)備通過接口與PC機(jī)連接,利用運(yùn)行在PC機(jī)上配套的軟件實(shí)現(xiàn)證件資料信息的自動提取、錄入,并通過信息管理系統(tǒng)實(shí)現(xiàn)信息的管理與維護(hù)。它可以廣泛應(yīng)用于公安、銀行、電信、酒店、交通、證券、民政、教育、出入境等部門和行業(yè)中,節(jié)省大量的人力和物力,保障公共場所的安全。證件信息采集常用的自動化技術(shù)包括光學(xué)文字識別(OCR)技術(shù)和射頻標(biāo)簽識別(RFID)技術(shù)。目前僅我國第二代居民身份證采用了RFID技術(shù),如護(hù)照、駕駛證等其他證件并沒有采用RFID技術(shù),因此證件的光學(xué)文字識別或圖像信息采集識別是通用證件信息采集系統(tǒng)不可缺少的組成部分。
一個(gè)優(yōu)秀的證件圖像信息采集系統(tǒng)(以下簡稱證件系統(tǒng))要具備較短的獲取時(shí)間、較高的信息采集準(zhǔn)確率、較高的成像質(zhì)量、較長的使用壽命和人性化的系統(tǒng)與外觀設(shè)計(jì)。綜合以上因素,本文采用微距廣角鏡頭拍攝的方式對證件圖像進(jìn)行采集,在證件圖像信息采集硬件系統(tǒng)中對采集圖像進(jìn)行初步處理后,通過USB2.0這一目前獲得最廣泛使用的高速外設(shè)接口,將數(shù)據(jù)傳送至PC機(jī)上位機(jī),由主機(jī)中相關(guān)處理軟件系統(tǒng)對圖像信息進(jìn)行提取和分類。這是一種數(shù)據(jù)采集設(shè)備與基于PC機(jī)端應(yīng)用軟件相結(jié)合的系統(tǒng)開發(fā)模式,它能夠利用日常生活中通用PC機(jī)高速、強(qiáng)大的計(jì)算能力,對需要高算法復(fù)雜度的圖像進(jìn)行快速處理計(jì)算,為實(shí)現(xiàn)復(fù)雜的信息處理算法提供了保障,而且在響應(yīng)速度及實(shí)時(shí)性方面也能夠滿足許多應(yīng)用領(lǐng)域的要求。本證件系統(tǒng)包括硬件部分和軟件部分。鏡頭采用了焦距為1.8 mm、可視角大于140°的微距廣角鏡頭,使得證件在鏡頭前方約45 mm處可以得到完整取景,以實(shí)現(xiàn)系統(tǒng)裝置的小型化。證件系統(tǒng)的擴(kuò)展性和復(fù)用性主要表現(xiàn)在能夠識別更多類型的證件(如身份證、護(hù)照、戶口本等)和通用性的圖像數(shù)據(jù)處理算法。針對擴(kuò)展性和復(fù)用性問題,本文采用MVC(Model View Controller)架構(gòu)[1]設(shè)計(jì)證件系統(tǒng)軟件部分,在軟件架構(gòu)上實(shí)現(xiàn)了各模塊之間的松耦合。
1 系統(tǒng)總體框架
證件系統(tǒng)自身是一套獨(dú)立的數(shù)據(jù)采集及信息獲取系統(tǒng),由其特有硬件和軟件共同組成。硬件部分包括攝像頭模塊、數(shù)據(jù)傳輸模塊、LED燈模塊和電源供應(yīng)模塊。如果再加上第二代身份證的RFID卡射頻感應(yīng)獲取信息的功能,還有一個(gè)RFID感應(yīng)模塊。由于身份證RFID模塊的使用需要經(jīng)過公安部門的認(rèn)證,因而本文中描述的系統(tǒng)不包含RFID模塊功能的具體實(shí)現(xiàn),但是該系統(tǒng)在設(shè)計(jì)時(shí),已經(jīng)預(yù)留了相應(yīng)的接口。軟件部分主要包含運(yùn)行在PC機(jī)上的攝像頭驅(qū)動子程序,圖像采集子程序,圖像畸變補(bǔ)償、色彩增強(qiáng)、分割等處理子程序,信息提取子程序和數(shù)據(jù)庫存儲、管理子程序。整個(gè)系統(tǒng)框架如圖1所示。
證件圖像信息采集設(shè)備與PC機(jī)之間通過USB2.0接口進(jìn)行通信。PC上位機(jī)運(yùn)行的應(yīng)用軟件能夠通過該接口向USB攝像頭發(fā)送控制命令,從而捕獲相應(yīng)的圖像或者視頻數(shù)據(jù)。若存在RFID感應(yīng)模塊,則感應(yīng)后的數(shù)據(jù)也通過該接口傳送到應(yīng)用程序中進(jìn)行處理。
2 系統(tǒng)硬件
證件圖像信息采集設(shè)備主要由圖像獲取模塊、傳輸接口模塊、電源模塊、LED光源模塊4部分構(gòu)成(不考慮RFID感應(yīng)模塊)。硬件框圖如圖2所示。
2.1 CMOS圖像采集模塊
采用CMOS攝像頭進(jìn)行圖像采集,圖像清晰,功耗較低。利用短焦距廣角鏡頭進(jìn)行物體成像,在擴(kuò)大視場的同時(shí)還能有效地減小物體與CMOS傳感器之間的距離,從而有效地減小了儀器的體積,使產(chǎn)品更為便攜,甚至可以裝配到通用PC機(jī)的機(jī)箱中。本文實(shí)現(xiàn)的系統(tǒng)中采用了焦距為1.8 mm、可視角大于140°的微距廣角鏡頭,使得證件在鏡頭前方約45 mm處可以得到完整取景。加上鏡頭高度,總厚度在60 mm左右。采用廣角鏡頭將帶來桶形失真,此問題將在主機(jī)程序中通過軟件算法進(jìn)行補(bǔ)償,盡可能復(fù)原圖像。
2.2 傳輸接口模塊
系統(tǒng)采用480 Mb/s的USB2.0接口進(jìn)行高速傳輸。采集模塊在完成數(shù)據(jù)采集以后通過該接口可以快速地傳送到上位機(jī)中。考慮到系統(tǒng)最后還必須擴(kuò)展RFID感應(yīng)模塊,以通過感應(yīng)方式獲取第二代身份證的信息,因而同一USB接口還需要傳輸來自RFID模塊的信息。這只需要增加一個(gè)USB的Hub芯片,實(shí)現(xiàn)接口的復(fù)用功能。使用比較常見的GL850A[2]的USB Hub芯片即可以對兩路信號進(jìn)行選通,達(dá)到系統(tǒng)的要求。
2.3 LED光源組模塊
由于證件的圖像采集是在一個(gè)類似于暗室的環(huán)境中進(jìn)行的,因此需要提供照明光源。LED色溫范圍比較廣,而且色溫的高低對圖像的成像質(zhì)量有著直接的影響,因而選用了方向性相對較弱、發(fā)光顏色接近白光的LED,設(shè)計(jì)了兩個(gè)LED光源組。從系統(tǒng)實(shí)際拍攝的效果來看,這種設(shè)計(jì)能夠使最終的成像不會因?yàn)楣庠吹姆较蛐詥栴}而產(chǎn)生人為的亮點(diǎn),也不會因?yàn)楣庠吹纳珳剡^于偏離正常范圍而導(dǎo)致色彩過度失真。
2.4 電源模塊
該系統(tǒng)采用了一個(gè)AC-DC變換器,通過對220 V的市電進(jìn)行轉(zhuǎn)換,產(chǎn)生供應(yīng)LED光源組所需的12 V電壓。至于CMOS圖像傳感器模塊的供電,則通過USB連接線直接提供,其工作電壓為5 V。
3 系統(tǒng)軟件
3.1 系統(tǒng)軟件組成
由于絕大多數(shù)圖像數(shù)據(jù)處理要通過運(yùn)行在PC機(jī)上的配套軟件實(shí)現(xiàn),因此軟件系統(tǒng)設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)一個(gè)運(yùn)行高效、功能上易擴(kuò)展、適合Windows系統(tǒng)的軟件系統(tǒng)。本系統(tǒng)主要分為圖像采集模塊、圖像處理模塊和信息提取模塊,實(shí)現(xiàn)對圖像采集、處理以及信息的提取和回顯、編輯。由于整個(gè)系統(tǒng)最終是在Windows操作系統(tǒng)上運(yùn)行的,針對圖像采集模塊,利用DirectX中的DirectShow[3]進(jìn)行開發(fā),實(shí)現(xiàn)了在Windows平臺上高效獲取圖像/視頻信息的功能;對于圖像畸變補(bǔ)償及增強(qiáng)等處理算法設(shè)計(jì),應(yīng)用了Intel公司高效且可靠開源的OpenCV圖像處理庫[4];對于圖像信息提取,采用了內(nèi)嵌在Office 2003中的MODI識別控件[5],該組件中漢字的文字識別引擎就是清華紫光的OCR引擎;對于圖形用戶界面設(shè)計(jì),使用了微軟的MFC[6]。圖3展示了以上所描述的關(guān)系。
鑒于DirectX是基于組件對象模型(COM)的技術(shù),OpenCV庫主要亦是用C/C++開發(fā),MODI和MFC之類的部件也都是基于C++描述等技術(shù)因素,軟件系統(tǒng)采用Visual Studio 6.0作為開發(fā)工具,選擇C++進(jìn)行程序設(shè)計(jì)。利用支持C++的編譯器,可以生成執(zhí)行效率很高的程序,而且面向?qū)ο蟪绦虻脑O(shè)計(jì)能夠?qū)崿F(xiàn)很好的數(shù)據(jù)封裝。
3.2系統(tǒng)的可擴(kuò)展性設(shè)計(jì)
MVC軟件架構(gòu)可實(shí)現(xiàn)各模塊之間最大程度的松耦合,保證系統(tǒng)擴(kuò)展性和復(fù)用性[1]。圖4是系統(tǒng)的UML主體類框圖。設(shè)計(jì)方案分別通過擴(kuò)展模型、視圖及控制器三個(gè)部分實(shí)現(xiàn)證件系統(tǒng)的擴(kuò)展。
(1) 模型部分
模型部分表現(xiàn)為圖像的采集、處理、文字識別等與數(shù)據(jù)相關(guān)的處理操作。系統(tǒng)設(shè)計(jì)時(shí)將與圖像數(shù)據(jù)處理相關(guān)的處理操作進(jìn)行封裝,實(shí)現(xiàn)了CDibImage類。該類描述了所有與證件圖像相關(guān)的數(shù)據(jù)處理。在對此類系統(tǒng)中證件圖像的特點(diǎn)進(jìn)行分析和歸納總結(jié)的基礎(chǔ)上,提出了一組合理、有效的處理流程方案,并用OpenCV的圖像庫實(shí)現(xiàn)自動白平衡色彩補(bǔ)償、失真樣條曲線建模畸變補(bǔ)償[7]、基于輪廓信息和Hough變換的傾斜角檢測完成傾斜矮正、結(jié)合圖像先驗(yàn)知識的粗分割與細(xì)分割以及文字信息識別。該方案是一種通用的處理流程和解決方案,實(shí)現(xiàn)證件圖像各個(gè)信息圖塊的正確分割,適用于所有的證件圖像處理,因而能夠適應(yīng)日后擴(kuò)展的新型證件識別的需要。模型的擴(kuò)展包括增加模型的功能集和擴(kuò)展模型的應(yīng)用對象。前者諸如增加圖像伽瑪值校正算法等操作,通過增加新的數(shù)據(jù)處理函數(shù)或者通過一些特定類進(jìn)行封裝便可實(shí)現(xiàn)。后者諸如利用已有的模型處理新型的證件,此時(shí)僅需要針對該證件上相應(yīng)的信息段分布規(guī)律按以上流程進(jìn)行簡單再設(shè)計(jì)即可實(shí)現(xiàn)。
(2) 控制器部分
為了保證邏輯的一致性,在采用MVC設(shè)計(jì)的系統(tǒng)中通常僅設(shè)計(jì)單控制器[9]。顯然,單控制器需要在系統(tǒng)中被多次調(diào)用。為此,系統(tǒng)對控制器專門采用單件模式(Singleton) [8]設(shè)計(jì)。將單件模式應(yīng)用于MVC模式中的控制器設(shè)計(jì),能夠使系統(tǒng)開發(fā)過程更具有安全性,免除了控制器的作用域全局化(即相當(dāng)于全局變量)帶來的潛在不安全性,利于軟件規(guī)模的擴(kuò)展設(shè)計(jì)。通常情況下,單件類自身負(fù)責(zé)保存它的唯一實(shí)例,并且使用一個(gè)靜態(tài)成員函數(shù)提供全局的訪問點(diǎn)[9]。
定義一個(gè)控制器類Controller,為該類定義一個(gè)靜態(tài)成員函數(shù)GetInstance,以提供這個(gè)類操作的全局訪問點(diǎn)。Controller類還定義了一個(gè)表態(tài)成員變量static Controller* singleton,用于保存一個(gè)指向它的唯一實(shí)例的指針??蛻魞H通過Controller::GetInstance函數(shù)訪問這個(gè)單件。指針變量Singleton初始化為0,而靜態(tài)成函數(shù)GetInstance返回該變量值。如果其值為0,則用唯一的實(shí)例初始化它。Singleton使用惰性(Lazy)初始化,它的返回值直到第一次訪問時(shí)才被創(chuàng)建和保存。Controller類的構(gòu)造函數(shù)是私有類型的,試圖直接實(shí)例化Controller類的程序?qū)⒃诰幾g時(shí)得到一個(gè)錯(cuò)誤信息,這就保證了僅可以創(chuàng)建一個(gè)實(shí)例。
(3) 視圖部分
軟件系統(tǒng)的視圖部分表現(xiàn)為與用戶交互的圖形用戶界面。軟件設(shè)計(jì)中采用CTabCtrl頁表容器控件,用以容納各種證件顯示頁面。為此設(shè)計(jì)了一個(gè)類CTabSheet,其UML的類屬性如圖5所示。
利用CTabSheet這個(gè)類,只需要在主界面中維護(hù)一個(gè)該類的對象CTabSheet m_tabSheetCard,便可以實(shí)現(xiàn)對各個(gè)頁面的管理與控制。例如要增加頁面,則僅調(diào)用CTabSheet::AddPage()這個(gè)方法即可;要更換頁面,則只需要調(diào)用TabSheet::SetCurSel()方法設(shè)置當(dāng)前選中的新頁面即可。在系統(tǒng)中,所有的證件子對話框類均繼承于CCertificate這個(gè)類,如圖6所示,而該類又繼承于MFC中的CDialog類。若要添加新的護(hù)照頁面,可以用MFC向?qū)上鄳?yīng)的CPassport類。
4 實(shí)驗(yàn)
實(shí)驗(yàn)中硬件裝置的鏡頭采用前面所介紹的廣角鏡,PC采用Lenovo 奔騰雙核CPU的啟天M6900 PC機(jī)器。系統(tǒng)先對采集到的圖像進(jìn)行樣條函數(shù)畸變補(bǔ)償,校正處理后的身份證圖像如圖7所示;再對處理后的身份證圖像進(jìn)行識別,采集到證件的信息內(nèi)容如圖8所示。從整個(gè)采集識別情況來看,本方案設(shè)計(jì)的證件系統(tǒng)能有效地實(shí)現(xiàn)圖像的輸入、捕捉、處理以及證件信息識別等功能。
本文提出了一個(gè)證件信息采集系統(tǒng),并對整個(gè)系統(tǒng)的軟硬件部分進(jìn)行描述。系統(tǒng)采用焦距為1.8 mm、可視角大于140°的微距廣角鏡頭,使得證件在鏡頭前方約45 mm處可以得到完整取景。采用MVC架構(gòu)設(shè)計(jì)證件圖像信息采集軟件,在軟件架構(gòu)上實(shí)現(xiàn)了各模塊之間的松耦合,保證系統(tǒng)軟件部分的可擴(kuò)展性和可復(fù)用性。試驗(yàn)表明,本證件系統(tǒng)可以滿足實(shí)際證件信息采集使用要求,并具有良好的可擴(kuò)展性,為今后擴(kuò)大系統(tǒng)的證件識別種類和加入更新的圖像處理算法提供了良好的軟件平臺。本證件信息采集系統(tǒng)亦是RFID型證件識別系統(tǒng)的一個(gè)有效功能補(bǔ)充。
參考文獻(xiàn)
[1] 孫衛(wèi)琴,李洪成. Tomcat與Java Web開發(fā)技術(shù)詳解[M]. 北京:電子工業(yè)出版社, 2006.
[2] Genesys Logic, Inc. GL850A USB-2.0 Low Power Hub Controller DataSheet[M]. 2007.
[3] PESCE M D. Programming microsoft direct show for digital video and TV[M]. Washington: Microsoft Press, 2003.
[4] The open computer vision library[EB/OL]. http://sourceforge.net/projects/opencvlibrary/.
[5] OCR Images Using Microsoft Office2003 SDK [EB/OL].http://www.print-driver.com/sdk/postprin t/ocr_office2003_vc6.html.
[6] CORPORATION M. MFC library reference: CTabCtrl Class, Microsoft Visual Studio 2005 Documentation[M].
[7] 王占斌, 趙輝, 陶衛(wèi),等. 廣角鏡頭桶形畸變的樣條函數(shù)修正方法[J]. 光電工程, 2008,35(4):140-144.
[8] GAMMA E. 設(shè)計(jì)模式:可復(fù)用面向?qū)ο蟪绦虻幕A(chǔ)[M]. 李英軍,譯.北京:機(jī)械工業(yè)出版社,2000.
[9] 陸其明. DirectShow實(shí)務(wù)精選[M]. 北京:科學(xué)出版社,2004.
pid控制相關(guān)文章:pid控制原理
pid控制器相關(guān)文章:pid控制器原理
鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評論