李玉霞
摘 要: 傳統(tǒng)的英文字母計算機(jī)輔助視覺識別方法采用圖像邊緣輪廓檢測方法,在字母識別過程中容易產(chǎn)生虛假輪廓特征干擾,導(dǎo)致識別準(zhǔn)確度不高。該文結(jié)合嵌入式Linux設(shè)備驅(qū)動程序開發(fā),進(jìn)行計算機(jī)輔助視覺下的英文字母識別軟件優(yōu)化設(shè)計。使用Qt/Embedded作為GUI,構(gòu)建用戶應(yīng)用程序,基于X86架構(gòu)的GNU開發(fā)工具集進(jìn)行計算機(jī)輔助視覺下的英文字母識別文件系統(tǒng)配置和編譯,通過設(shè)備驅(qū)動程序開發(fā),進(jìn)行軟件設(shè)計優(yōu)化,包括字符設(shè)備驅(qū)動程序、塊設(shè)備驅(qū)動程序和網(wǎng)絡(luò)設(shè)備驅(qū)動程序。系統(tǒng)測試表明,該英文字母識別軟件具有較好的識別精度和收斂性,軟件可靠度較高,人機(jī)交互性能較好。
關(guān)鍵詞: 計算機(jī)輔助視覺; 英文字母識別; 軟件設(shè)計; GUI
中圖分類號: TN911?34; TP391 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2017)04?0044?05
Design and implementation of English letter recognition software with
computer aided vision
LI Yuxia
(Baotou Vocational & Technical College, Baotou 014035, China)
Abstract: The traditional English letter recognition method with computer aided vision is based on the image edge contour detection method, which is easy to be affected by false contour features in the process of letter recognition, which leads to the low recognition accuracy. In this paper, the computer aided design of the English letter recognition software is conducted in combination with the embedded Linux device program. QT/Embedded is taken as GUI to build user application program. The GNU development tool set based on X86 is adopted to carry out configuration and compilation of English letters recognition file system with computer aided vision. The design optimization of software was done by means of development of the device drive program, including the character device driver, block device driver and network device driver. The system testing results show that the English letter recognition software has high recognition accuracy, perfect convergence, high reliability and better man?machine interaction.
Keywords: computer aided vision; English letter recognition; software design; GUI
0 引 言
隨著計算機(jī)圖像處理技術(shù)的發(fā)展,采用計算機(jī)視覺圖像處理技術(shù)進(jìn)行目標(biāo)識別、圖像特征分析和對象監(jiān)控等具有廣泛的應(yīng)用價值。圖像識別技術(shù)是建立在對圖像的特征提取和輪廓信息分割基礎(chǔ)上的,采集數(shù)字圖像處理技術(shù)對原始圖像進(jìn)行降噪濾波和智能分割,以此為基礎(chǔ)進(jìn)行圖像小波尺度分解,實現(xiàn)對圖像的識別和監(jiān)測。英文字母識別是圖像處理領(lǐng)域研究的一個最新方向,英文字母廣泛存在于車牌、廣告牌、Logo等部位,通過對英文字母的準(zhǔn)確識別,通過設(shè)計英文字母的優(yōu)化識別技術(shù)和軟件設(shè)計,提高對英文字母的嵌套目標(biāo)對象、比如車牌、飛行器打擊目標(biāo)等的視覺跟蹤和計算機(jī)視覺識別的能力,因此,有效的英文識別技術(shù)將在未來的車牌識別、飛行目標(biāo)識別、Logo動態(tài)監(jiān)測等領(lǐng)域都具有廣泛的應(yīng)用前景,相關(guān)的軟件系統(tǒng)設(shè)計方法受到人們的重視。
對英文字母識別的軟件開發(fā)的基礎(chǔ)在于計算機(jī)圖像處理,在計算機(jī)輔助視覺系統(tǒng)下通過數(shù)字圖像的采集、圖像特征分析和提取、以及圖像特征分類,實現(xiàn)對英文字母的視覺監(jiān)測和分類識別。傳統(tǒng)方法中,對英文字母的識別方法主要有基于小波尺度分解的英文字母識別方法、基于邊緣輪廓分割的字母識別方法等[1?4]。上述方法是在計算機(jī)視覺下進(jìn)行英文字母的圖像特征提取,結(jié)合小波分解和邊緣輪廓分割,實現(xiàn)對英文字母的有效識別,在此原理上,相關(guān)文獻(xiàn)進(jìn)行了圖像識別系統(tǒng)的設(shè)計,取得了一定的成果。其中,文獻(xiàn)[5]提出一種基于空間亮度均衡化平滑處理的英文字母識別算法,并進(jìn)行了識別系統(tǒng)的模塊化設(shè)計,提高了英文字母圖像的分割精度,但是該方法計算開銷較大,實時性不好。文獻(xiàn)[6]提出一種基于圖像增強(qiáng)和明暗對比度特征分解的字母識別方法,在缺幀環(huán)境下實現(xiàn)對英文字母圖像的包絡(luò)特征識別,并進(jìn)行了軟件設(shè)計,提高了字母的識別精度,但是該軟件設(shè)計過程中受到環(huán)境的光線等干擾因素的影響較大,導(dǎo)致在信噪比低的環(huán)境下對圖像的識別準(zhǔn)確度不高[7]。針對上述問題,本文在計算機(jī)輔助視覺下進(jìn)行了英文字母識別軟件的優(yōu)化設(shè)計,首先進(jìn)行了英文字母識別的軟件系統(tǒng)的總體設(shè)計和數(shù)據(jù)處理,分析英文字母的視覺特征信息,結(jié)合嵌入式Linux設(shè)備驅(qū)動程序,進(jìn)行英文字母識別系統(tǒng)的交叉編譯環(huán)境構(gòu)建,以嵌入式Linux為平臺實現(xiàn)軟件開發(fā),最后進(jìn)行了系統(tǒng)調(diào)試和仿真分析,得出有效性結(jié)論。
1 軟件的總體模型構(gòu)建和開發(fā)環(huán)境
1.1 計算機(jī)輔助視覺下的英文字母識別軟件的總體模型構(gòu)建
為了實現(xiàn)對計算機(jī)輔助視覺下的英文字母識別軟件的優(yōu)化設(shè)計,首先分析軟件系統(tǒng)的總體結(jié)構(gòu)模型,計算機(jī)輔助視覺下的英文字母識別軟件是建立在對英文字母的圖像特征信息采樣和特征提取的基礎(chǔ)上的,結(jié)合圖像處理算法進(jìn)行計算機(jī)輔助視覺設(shè)計,系統(tǒng)采用LabWindows/CVI進(jìn)行計算機(jī)輔助視覺下的英文字母識別的圖像處理和信息通信,選用“波形存儲重發(fā)”模式,通過模擬預(yù)處理機(jī)將信號采樣控制傳輸數(shù)據(jù)轉(zhuǎn)換為電信號,在數(shù)據(jù)采集處理系統(tǒng)中實現(xiàn)離散數(shù)據(jù)采樣和英文字母的信息評估[8?10]。計算機(jī)輔助視覺下的英文字母識別軟件的總體模型結(jié)構(gòu)框圖如圖1所示。由圖1可見,英文字母識別軟件系統(tǒng)建立在嵌入式操作系統(tǒng)Linux基礎(chǔ)上的,采用嵌入式Linux系統(tǒng)從軟件的角度進(jìn)行計算機(jī)視覺特征的采樣和層次劃分,本文設(shè)計的英文字母識別軟件共分為四個層次,分別為:
(1) Linux內(nèi)核下的英文字母的引導(dǎo)加載程序(Boot loader);
(2) 在FLASH設(shè)備上的文件系統(tǒng)內(nèi)核(Linux Kernel);
(3) 嵌入式手持設(shè)備文件系統(tǒng)(File System)計算機(jī)視覺特征分析和識別;
(4) 使用Qt/Embedded作為GUI,構(gòu)建用戶應(yīng)用程序(Application)。
根據(jù)上述軟件的層次模型構(gòu)建,在Linux中可以支持多通道的英文字母識別功能,采用VPP儀器驅(qū)動程序構(gòu)建虛擬文件系統(tǒng),采用PCI橋接芯片與上位機(jī)通信,計算機(jī)輔助視覺下的英文字母識別管理系統(tǒng)的外部I/O設(shè)備通過A/D,D/A采樣進(jìn)行遠(yuǎn)程控制信號加載,系統(tǒng)的源代碼與開發(fā)工具包括初始化、配置、作用/狀態(tài)。
根據(jù)上述分析,得到計算機(jī)輔助視覺下的英文字母識別軟件系統(tǒng)設(shè)計的功能指標(biāo)描述為采樣通道:8通道同步電子監(jiān)控數(shù)據(jù)采樣,輸出信號幅度為ROMFS;D/A分辨率為12位。計算機(jī)輔助視覺下的英文字母識別中的圖像信息數(shù)據(jù)傳感信號的A/D轉(zhuǎn)換芯片選用AD公司的AD7655。計算機(jī)輔助視覺下的英文字母識別系統(tǒng)的模擬轉(zhuǎn)換電路接口的A0為低時,轉(zhuǎn)換A通道,為高時,轉(zhuǎn)換B通道。計算機(jī)輔助視覺下的英文字母識別軟件的功能的實現(xiàn)還需要核實外圍器件,F(xiàn)PGA通用平臺系統(tǒng)是由大量高密度分布的處于被監(jiān)測的英文字母識別對象內(nèi)部或周圍的傳感器節(jié)點組成,相比于進(jìn)程管理、內(nèi)存管理和文件系統(tǒng),在嵌入式Linux的系統(tǒng)開發(fā)中采用簡單、統(tǒng)一的系統(tǒng)調(diào)用接口,由啟動引導(dǎo)程序(BootLoader)進(jìn)行程序加載,實現(xiàn)對英文字母的識別和視覺特征分析,根據(jù)上述系統(tǒng)總體設(shè)計模型,進(jìn)行軟件的模塊化加載和設(shè)計。
1.2 基本開發(fā)流程與開發(fā)環(huán)境的建立
在上述進(jìn)行了計算機(jī)輔助視覺下英文字母識別軟件的總體模型描述的基礎(chǔ)上,進(jìn)行軟件開發(fā),本文開發(fā)的計算機(jī)輔助視覺下英文字母識別軟件建立在以嵌入式Linux為平臺之上,結(jié)合計算機(jī)視覺圖像識別技術(shù)和特征提取算法,在前期的計算機(jī)視覺圖像分析算法的設(shè)計基礎(chǔ)上,構(gòu)建一個以Linux內(nèi)核、文件系統(tǒng)、應(yīng)用程序為結(jié)構(gòu)組成的嵌入式系統(tǒng),實現(xiàn)Linux操作系統(tǒng)對ARM硬件平臺的移植和計算機(jī)視覺下的英文字母識別,采用MVB總線控制技術(shù),進(jìn)行英文字母識別過程中的幀發(fā)送收發(fā)和中斷控制,面向計算機(jī)輔助視覺下英文字母識別的MVB總線控制模型如圖2所示。
在MVB總線控制過程中,利用計算機(jī)輔助視覺系統(tǒng)進(jìn)行存儲控制和英文字母的像素特征分析,充分利用開源Linux操作系統(tǒng)的豐富網(wǎng)絡(luò)資源,由A/D,D/A轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換誤差分析,采用交叉編譯環(huán)境,即開發(fā)平臺使用通用計算機(jī),采用LabWindows/CVI實現(xiàn)對中斷標(biāo)志位輸出,信息監(jiān)控和識別系統(tǒng)設(shè)計中,主控電路的ADC要求穩(wěn)定到15 Hz。采用能量檢測法,得到計算機(jī)輔助視覺下的英文字母識別系統(tǒng)D/A轉(zhuǎn)換器輸出為一組單幀數(shù)據(jù)信號,信號脈寬超過32 KB數(shù)據(jù)時,A15為“1”,將波形特征信息通知CVI,由此實現(xiàn)了計算機(jī)輔助視覺下的英文字母識別的網(wǎng)口、串口、USB口的控制,搭建嵌入式Linux軟件開發(fā)環(huán)境,得到本文設(shè)計的軟件系統(tǒng)的開發(fā)環(huán)境硬件連接圖如圖3所示。
2 系統(tǒng)的設(shè)計與實現(xiàn)
2.1 英文字母識別文件系統(tǒng)配置和編譯
在上述構(gòu)建的英文字母識別系統(tǒng)的開發(fā)環(huán)境的基礎(chǔ)上,使用已有各種基于X86架構(gòu)的GNU開發(fā)工具集,使用Linux和Windows之間的共享資源進(jìn)行計算機(jī)輔助視覺下的英文字母識別文件系統(tǒng)配置,基于X86架構(gòu)進(jìn)行圖像識別的軟件編譯,在主機(jī)上完成針對目標(biāo)機(jī)的代碼編譯,編譯生成的可執(zhí)行代碼進(jìn)行目標(biāo)機(jī)的代碼編譯,計算機(jī)輔助視覺下的英文字母識別文件編譯的過程為:
在網(wǎng)上下載arm920t?eabi.tgz,使用命令
tar xvzf arm920t?eabi.tgz
輸入arm?linux?gcc?v,將最上層的Makefile文件解壓,并把編譯器路徑加入系統(tǒng)環(huán)境變量,運行命令
#gedit.Bashrc
編輯.Bashrc文件,在最后一行加入arch/arm/boot目錄
選擇
保存退出后,重新登錄系統(tǒng),在計算機(jī)輔助視覺下生成交叉編譯環(huán)境,如圖4所示。
命令行輸入arm?linux?gcc?v,修改內(nèi)核解壓地址,充分考慮嵌入式Linux系統(tǒng)的根文件系統(tǒng)的源碼開放性,利用Busybox的安裝腳本,實現(xiàn)配置和剪裁。在上述生成的交叉編譯環(huán)境下,新建一目錄filesystem,建立YAFFS根文件系統(tǒng),編譯過程代碼描述如下:
Busybox Settings ???>
Embedded Linux application ???>
[*] Don't use /usr
Applets links(Busybox source open) ???>
(/home/Documents/nfs) Edit the rcS file under the init.d directory
Busybox Download to target board ???>
[*] Support arm?angstrom?linux
[*] /opt/toolchains/arm commands
[*] /dev/tty1 changed to echo
[*] Establish a root file system
[*] production of YAFFS image file
Shells ???>
??? Ash Shell Options下的選項全選
[*]Rootfs.yaffs is generated in the directory.
[*]Lash(Control hardware device)
配置完成后,分別運行make以及make install訪問并控制硬件設(shè)備,進(jìn)行編譯和安裝,完成設(shè)備驅(qū)動程序是Linux內(nèi)核的路徑文件夾選擇,在操作系統(tǒng)與硬件設(shè)備之間生成bin,sbin文件夾以及l(fā)inuxrc文件。
在此基礎(chǔ)上,建立英文字母識別軟件的YAFFS根文件系統(tǒng),在該目錄下有6個必備的文件夾/etc,/lib,
/dev,/usr,/var和/proc,將其目錄下的相關(guān)的配置腳本復(fù)制到新建根文件系統(tǒng)filesystem的etc下,并下載busybox1.14.2進(jìn)行相應(yīng)的修改。具體做法是編輯/dev,/etc等主要目錄,在init.d目錄下運行make menuconfig命令,啟動服務(wù)器配置文件,編輯init.d目錄下的rcS文件,在36,56以及58行的內(nèi)容注釋掉,/lib目錄下提供內(nèi)核,
/dev/tty1更改為echo“Root File System Loaded Successfully”。
在dev目錄下建立需要的設(shè)備節(jié)點,在/lib目錄下提供內(nèi)核需要用到的計算機(jī)輔助視覺下的英文字母識別函數(shù),生成一個rootfs.yaffs文件,在920t?eabi/arm下面所有的文件復(fù)制到新建的根文件系統(tǒng)fliesystem的lib中,建立起計算機(jī)輔助視覺下的英文字母識別的根文件系統(tǒng)。在Visual DSP++ 4.5中,得到計算機(jī)輔助視覺下的英文字母識別文件系統(tǒng)配置和編譯集成開發(fā)環(huán)境如圖5所示。
2.2 軟件實現(xiàn)流程與驅(qū)動程序開發(fā)
在上述進(jìn)行了計算機(jī)輔助視覺下的英文字母識別文件系統(tǒng)配置和編譯的基礎(chǔ)上,通過設(shè)備驅(qū)動程序開發(fā),進(jìn)行軟件設(shè)計優(yōu)化,作為Linux內(nèi)核的重要組成部分,設(shè)備驅(qū)動程序主要包括了字符設(shè)備驅(qū)動程序、塊設(shè)備驅(qū)動程序和網(wǎng)絡(luò)設(shè)備驅(qū)動程序,設(shè)備驅(qū)動程序完成如下工作:
(1) 優(yōu)化存儲、初始化和釋放英文字母識別文件系統(tǒng)的配置程序和設(shè)備;
(2) 在計算機(jī)輔助視覺下進(jìn)行英文字符識別軟件的內(nèi)核與硬件之間的數(shù)據(jù)傳送,調(diào)用請求函數(shù)實現(xiàn)I/O操作,把數(shù)據(jù)從read(),write()等系統(tǒng)內(nèi)核傳送到計算機(jī)視覺識別器和專家系統(tǒng)中;
(3) 改動內(nèi)核的源文件,實現(xiàn)應(yīng)用程序與設(shè)備之間的數(shù)據(jù)傳送,讀取計算機(jī)輔助視覺下的識別系統(tǒng)的應(yīng)用程序傳送給設(shè)備文件,編譯成未連接的模塊,使用open(),release(),read()等函數(shù)實現(xiàn)數(shù)據(jù)和回送,在應(yīng)用程序中請求計算機(jī)輔助視覺識別;
(4) 檢測錯誤和處理中斷,檢測中斷服務(wù)程序是否能正常工作。
綜上分析,得到計算機(jī)輔助視覺下的英文字母識別軟件的設(shè)備驅(qū)動的設(shè)計和實現(xiàn)流程如圖6所示。
根據(jù)系統(tǒng)需求分別對tatic int s3c2440_open,控制寄存器s3c2440_pwm_close和A/D轉(zhuǎn)換s3c2440_pwm_
ioctl三個函數(shù)進(jìn)行編程,處理器將讀取A/D轉(zhuǎn)換結(jié)果,通過計算機(jī)輔助視覺識別,完成A/D轉(zhuǎn)換器的打開、關(guān)閉操作,在file_operations數(shù)據(jù)結(jié)構(gòu)中的對應(yīng)關(guān)系如下:
static struct file_operations dev_fops = {
owner:THIS_MODULE //調(diào)用s3c2440_adc_read()函數(shù)
open:s3c2440_adc_open //控制寄存器進(jìn)行復(fù)位
read:A data transmission on the IIC bus
release:Stop Condition _adc_release //應(yīng)答信號(ACK)
}
在進(jìn)行了ZLG7290初始化操作之后,鍵值寄存器(Key)通過命令接口完成對計算機(jī)輔助視覺識別的間接讀寫,函數(shù)ZLG7290_GetKey()在中斷響應(yīng)中實現(xiàn)SD存儲,設(shè)定地址00H,復(fù)位值F0H,加載SD卡的設(shè)備驅(qū)動程序,實現(xiàn)圖像識別的程序加載,達(dá)到英文字母優(yōu)化識別的目的。
3 系統(tǒng)測試仿真分析
為了測試本文設(shè)計的計算機(jī)輔助視覺下英文字母識別軟件的應(yīng)用性能,進(jìn)行仿真測試分析,實驗中,采用嵌入式設(shè)備的Qt C++ API,Qt/Embedded的Qt/X11構(gòu)建計算機(jī)視覺輔助識別系統(tǒng),運行Qt/Embedded所需要的計算機(jī)視覺識別資源,編譯Qt/Embedded進(jìn)行程序加載和可視化的界面設(shè)計。
在應(yīng)用程序框架和窗口系統(tǒng)中,調(diào)用窗口管理系統(tǒng)和圖形引擎,利用FrameBuffe圖形函數(shù)庫作為底層圖形接口,安裝完成后,生成Qt/Embedded for ARM的開發(fā)編譯環(huán)境所需要的英文字母視覺識別的編譯文件,配置qt?embedded?arm、編譯和安裝實現(xiàn)英文字母的識別和識別性能分析。通過上述分析,以識別車牌中的英文字母為例,進(jìn)行仿真測試,得到識別結(jié)果如圖7所示。
為了測試本文設(shè)計字母識別方法的收斂性能,以字母識別的收斂曲線為測試指標(biāo),得到仿真結(jié)果見圖8。
由圖8可見,采用本文方法進(jìn)行計算機(jī)輔助視覺下的英文字母識別,收斂性較好,在較短的時間內(nèi)將識別誤差收斂到0,能有效降低識別誤差和識別時間。為了對比識別精度,采用本文方法和傳統(tǒng)的系統(tǒng)方法,進(jìn)行字母識別的精度測試,得到結(jié)果如圖9所示,由圖9可見,該識別方法精度較高,準(zhǔn)確性較好,展示了較好的應(yīng)用價值。
4 結(jié) 語
通過設(shè)計英文字母的優(yōu)化識別技術(shù)和軟件設(shè)計,提高對英文字母的嵌套目標(biāo)對象,比如車牌、飛行器打擊目標(biāo)等的視覺跟蹤和計算機(jī)視覺識別的能力,本文在計算機(jī)輔助視覺下進(jìn)行了英文字母識別軟件的優(yōu)化設(shè)計,結(jié)合嵌入式Linux設(shè)備驅(qū)動程序,進(jìn)行英文字母識別系統(tǒng)的交叉編譯環(huán)境構(gòu)建,使用Linux和Windows之間的共享資源進(jìn)行計算機(jī)輔助視覺下的英文字母識別文件系統(tǒng)配置,基于X86架構(gòu)進(jìn)行圖像識別的軟件編譯,實現(xiàn)軟件開發(fā),該研究表明,本文設(shè)計的英文字母識別軟件性能較好,準(zhǔn)確度較高。
參考文獻(xiàn)
[1] 林兆華,米陽,葛兵.一種粗精結(jié)合的快速圖像自動調(diào)焦算法[J].國外電子測量技術(shù),2015,34(10):28?31.
[2] 胡棚,施惠娟.基于視覺掩蔽模型的視頻水印算法[J].電子測量技術(shù),2014,37(12):36?40.
[3] 王小玉,張亞洲,陳德運.基于多塊局部二值模式特征和人眼定位的人臉檢測[J].儀器儀表學(xué)報,2014,35(12):2739?2745.
[4] 余淮,楊文.一種無人機(jī)航拍影像快速特征提取與匹配算法[J].電子與信息學(xué)報,2016,38(3):509?516.
[5] JAFAR S A. Interference alignment; a new look at signal dimensions in a communication network [J]. Foundations and trends in communications and information Theory, 2011, 7(1): 129?134.
[6] GOMADAM K, CADAMBE V R, JAFAR S A. A distributed numerical approach to interference alignment and applications to wireless interference networks [J]. IEEE transactions on information theory, 2011, 57(6): 3309?3322.
[7] PATCHARAMANEEPAKRON P, ARMOUR S, DOUFEXI A. Coordinated beamforming schemes based on modified signal?to? leakage?plus?noise ratio precoding designs [J]. IET communications, 2015, 9(4): 558?567.
[8] KALEVA J, TOLLI A, JUNTTI M. Weighted sum rate maximization for interfering broadcast channel via successive convex approximation [C]// proceedings of IEEE Global Communications Conference. Anaheim, USA: IEEE, 2012: 3838?3843.
[9] LIU H, DING Z G, FAN P Z, et al. Precoding design for interference suppression in multi?cell multi?user networks [J]. IET communications, 2014, 8(9): 1534?1540.
[10] RATHEESH M and DAVID M J. System?level performance of interference alignment[J]. IEEE Transactions on wireless communications, 2015, 14(2): 1060?1070.