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