田 全,王 涵,蔡睿妍,陶 昊
(臺(tái)州學(xué)院 電子與信息工程學(xué)院,浙江 臺(tái)州 318000)
鍵盤(pán)作為計(jì)算機(jī)的重要輸入設(shè)備,一直扮演著其他設(shè)備不可替代的角色。無(wú)論是數(shù)據(jù)的輸入,還是控制信號(hào)的發(fā)送,都離不開(kāi)鍵盤(pán)。然而,傳統(tǒng)鍵盤(pán)[1]體積較大、攜帶不便,無(wú)法滿足移動(dòng)終端對(duì)輸入設(shè)備的需求。隨著科學(xué)技術(shù)的發(fā)展,人們?cè)絹?lái)越追求電子產(chǎn)品的輕便化與高度集成化,作為人機(jī)交互[2]重要工具之一的鍵盤(pán)也隨之發(fā)展起來(lái)。在新技術(shù)和設(shè)備的支持下,基于圖像識(shí)別技術(shù)[3]的虛擬鍵盤(pán)應(yīng)運(yùn)而生。
國(guó)內(nèi)對(duì)虛擬鍵盤(pán)的研究起步稍晚,早期的研究較少。最早是石艷玲[4]驗(yàn)證了虛擬鍵盤(pán)的可行性,并初步實(shí)現(xiàn)了基于Visual C++的圖像處理和基于FPGA的非定長(zhǎng)碼字拼接等部分功能。汪忠德[5]設(shè)計(jì)了包含投射按鍵影像系統(tǒng)、紅外線攝像系統(tǒng)、信號(hào)轉(zhuǎn)換系統(tǒng)等系統(tǒng)的紅外虛擬鍵盤(pán)。當(dāng)使用者敲擊鍵盤(pán)時(shí),紅外攝像機(jī)采集手指的信息并通過(guò)信號(hào)轉(zhuǎn)換系統(tǒng)將其轉(zhuǎn)換為鍵盤(pán)命令,模擬傳統(tǒng)鍵盤(pán)敲擊后的響應(yīng)行為。張金等[6]針對(duì)圖像采集過(guò)程中因出現(xiàn)失真而影響按鍵落點(diǎn)的問(wèn)題,提出了一種圖像坐標(biāo)變換的幾何失真校正方法,即將失真的橫坐標(biāo)進(jìn)行適當(dāng)拉伸,縱坐標(biāo)不變。蔡睿妍[7]在激光投影、定位以及圖像分析等技術(shù)的支持下,設(shè)計(jì)了激光虛擬鍵盤(pán),并驗(yàn)證了激光虛擬鍵盤(pán)的可靠性和穩(wěn)定性。楊騁[8]研究了基于單個(gè)攝像頭,利用微軟的VWF從逐幀圖像中捕獲追蹤手指,根據(jù)手指位置和動(dòng)作以及顏色和輪廓來(lái)實(shí)現(xiàn)虛擬鍵盤(pán)。李振偉等[9-10]提出了離線建模算法,通過(guò)固定攝像頭和鍵盤(pán)的距離,采集信息后,再利用輪廓檢測(cè)算法確定鍵盤(pán)位置信息。盧亮[11]設(shè)計(jì)了基于嵌入式STM32的半虛擬鍵盤(pán),提升了操作的舒適度。陳士凱[12-13]探究了如何低成本自制激光投影鍵盤(pán),并對(duì)其原理進(jìn)行了具體闡述。李延平等[14]設(shè)計(jì)了基于OpenCV的虛擬鍵盤(pán),該虛擬鍵盤(pán)由攝像頭、激光器、濾波片以及鍵盤(pán)投射激光器等組成。同時(shí),虛擬鍵盤(pán)逐漸向算法研究和應(yīng)用場(chǎng)景方面發(fā)展。如欒祿祥[15]基于GPRS和激光虛擬鍵盤(pán),設(shè)計(jì)了智能電子門(mén)鎖系統(tǒng)。張峰境等[16]研究了激光投影鍵盤(pán)的連通域標(biāo)記算法。
國(guó)外對(duì)虛擬鍵盤(pán)的研究也隨著時(shí)間的推移取得了長(zhǎng)足的進(jìn)步。IBM公司Seibel[17]的研究團(tuán)隊(duì)設(shè)計(jì)了第1款數(shù)據(jù)手套式的人機(jī)交互的鍵盤(pán)。Jiang等[18]設(shè)計(jì)了HiPad系統(tǒng),該系統(tǒng)利用帶有虛擬鍵盤(pán)的圓形觸摸板,支持移動(dòng)頭戴顯示器實(shí)現(xiàn)單手文本輸入。Pavlovic等[19]根據(jù)紅外線被阻擋出現(xiàn)光斑的原理,設(shè)計(jì)了由紙質(zhì)鍵盤(pán)和紅外激光器所組成的虛擬鍵盤(pán)。當(dāng)手指在紙質(zhì)鍵盤(pán)區(qū)域按下時(shí),產(chǎn)生光斑被紅外接收器識(shí)別,但該設(shè)計(jì)對(duì)手指按壓的動(dòng)作精確度要求較高,容易誤判。Su等[20]在激光和圖像處理的基礎(chǔ)上提出了由紅外激光模塊、鍵盤(pán)圖案投影模塊、嵌入式系統(tǒng),以及CMOS傳感器組成的虛擬鍵盤(pán)系統(tǒng),通過(guò)指尖敲擊鍵盤(pán)圖案的順序幀來(lái)進(jìn)行判別。Asonov等[21]通過(guò)檢測(cè)按鍵敲擊的聲音以及利用神經(jīng)網(wǎng)絡(luò)訓(xùn)練收集到的聲音數(shù)據(jù)集,來(lái)判定按鍵是否按下。Cecotti[22]研究了利用眼動(dòng)儀來(lái)捕捉人眼特征,來(lái)控制包含8個(gè)主要命令的虛擬鍵盤(pán),該虛擬鍵盤(pán)可以拼寫(xiě)30種不同的字符并加以更正,該虛擬鍵盤(pán)對(duì)眼睛有疾病的殘疾人也有效。Zhang等[23]研究了基于手部膚色信息以及指間位置的按鍵識(shí)別,他們將虛擬鍵盤(pán)打印到紙上,使其可以在傾斜的表面或者墻上使用。Wu等[24]研究了基于虛擬現(xiàn)實(shí)和頭戴式顯示器的虛擬鍵盤(pán),該虛擬鍵盤(pán)可以在虛擬現(xiàn)實(shí)環(huán)境中的任何位置彈出,并用可以捕捉手指位置和姿勢(shì)的5個(gè)數(shù)據(jù)手套來(lái)控制按鍵,同時(shí)利用微型揚(yáng)聲器模擬震動(dòng),提供模擬的觸覺(jué)反饋。Hosni等[25]研究了基于腦電圖和腦機(jī)接口的虛擬鍵盤(pán),來(lái)幫助殘疾人過(guò)上正常生活。Barbara等[26]提出了基于眼電圖的虛擬鍵盤(pán),該鍵盤(pán)按鍵布局和傳統(tǒng)的QWERTY布局相同,并提出一種新的閾值法來(lái)檢測(cè)眼電圖信號(hào)來(lái)判斷眼球運(yùn)動(dòng),基于該信號(hào)的峰值和梯度特征來(lái)區(qū)分掃視和眨眼。Hu等[27]設(shè)計(jì)了單毫米波無(wú)線電虛擬鍵盤(pán)系統(tǒng),利用毫米波的獨(dú)特優(yōu)勢(shì),使設(shè)計(jì)的虛擬鍵盤(pán)系統(tǒng)能將任意平整表面轉(zhuǎn)換為打字媒介,并支持多種按鍵布局。
通過(guò)初步分析國(guó)內(nèi)外的研究現(xiàn)狀,了解了虛擬鍵盤(pán)的發(fā)展歷史以及激光虛擬鍵盤(pán)的實(shí)現(xiàn)方法。本文設(shè)計(jì)的激光虛擬鍵盤(pán)主要基于圖像處理技術(shù)和激光三角測(cè)距原理,從硬件結(jié)構(gòu)和軟件設(shè)計(jì)兩個(gè)方面進(jìn)行闡述說(shuō)明。
如圖1所示,激光虛擬鍵盤(pán)的具體原理:首先是位于最下方的紅外一字激光向空間中的某一平面投射激光,來(lái)覆蓋鍵盤(pán)投影激光投射出的鍵盤(pán)圖案(鍵盤(pán)圖案是由鍵盤(pán)投影激光器運(yùn)用3D全息投影技術(shù),將事先保存在全息鏡片中的鍵盤(pán)畫(huà)面投影到特定的平面所產(chǎn)生的,也用于確定手指按下鍵盤(pán)的位置);然后最上方的攝像頭負(fù)責(zé)實(shí)時(shí)采集圖像信息,來(lái)實(shí)現(xiàn)手指和上位機(jī)的交互功能。當(dāng)手指按下投影出的鍵盤(pán)的位置時(shí),激光器發(fā)射出的激光將會(huì)反射指尖的紅外光,反射的紅外光可以被經(jīng)過(guò)特殊處理的攝像頭捕捉,最后通過(guò)上位機(jī)中的軟件算法實(shí)現(xiàn)按鍵的映射,工作流程如圖2所示。
圖1 激光鍵盤(pán)工作原理
圖2 激光鍵盤(pán)工作流程圖
激光虛擬鍵盤(pán)系統(tǒng)主要由圖像采集模塊、鍵盤(pán)投影激光模塊、紅外一字激光模塊以及電源模塊4部分組成,系統(tǒng)通過(guò)DC電源線及USB線連接。具體硬件包括100萬(wàn)像素30幀頻率的CMOS攝像頭,790 nm紅外一字激光發(fā)射器,3.3 V供電的低功率鍵盤(pán)投影模塊,以及輸入電壓為12 V、輸出電壓為5 V或者3.3 V的電源模塊。投影出的鍵盤(pán)一共5行,包含63個(gè)按鍵。硬件框圖如圖3所示。
圖3 硬件框圖
圖像采集模塊主要用到了120°的廣角攝像頭,圖像采集主要考慮到以下問(wèn)題:一是攝像頭是否能采集到紅外光;二是攝像頭是否能完全覆蓋所投影出的鍵盤(pán)。由于普通的攝像頭加裝的是帶通濾波片,無(wú)法采集紅外光,所以要根據(jù)激光器的波長(zhǎng)選擇適當(dāng)波長(zhǎng)的攝像頭,以免對(duì)實(shí)驗(yàn)結(jié)果產(chǎn)生干擾。
本文采用790 nm濾波片,如圖4所示,普通的攝像頭1水平視角比較小,當(dāng)檢測(cè)到激光器所投影出來(lái)鍵盤(pán)圖像時(shí)所需的高度為高度1;廣角攝像頭2檢測(cè)同樣的鍵盤(pán)范圍所需的高度為高度2,可以明顯地看到高度2小于高度1,所以本文選擇了廣角攝像頭,可以使結(jié)構(gòu)更加簡(jiǎn)單,減小體積。
圖4 不同視角攝像頭高度關(guān)系圖
在選擇一字激光器時(shí),要考慮功率過(guò)高對(duì)人體的損害,本文選擇的激光器的功率是15 mW。功率為5~500 mW的激光器產(chǎn)生的激光屬于CLASS IIIB類(lèi)激光[28],只要不直接在光束內(nèi)進(jìn)行觀察就不會(huì)有危險(xiǎn)。該激光器工作電壓為3.3 V,波長(zhǎng)為790 nm。此外,一字激光器能夠完全覆蓋鍵盤(pán)激光器投影的鍵盤(pán)圖案,符合設(shè)計(jì)要求。
鍵盤(pán)畫(huà)面的投影用到了激光器的全息投影技術(shù)[29],利用干涉和衍射原理,將物體的具體信息用三維圖像再次重現(xiàn)。該模塊可以通過(guò)照射保存有鍵盤(pán)畫(huà)面的全息鏡片在對(duì)應(yīng)平面上產(chǎn)生相應(yīng)畫(huà)面,在目標(biāo)平面內(nèi)投影出一個(gè)鍵盤(pán)形狀的圖片,用于用戶確認(rèn)手指按下的按鍵位置。實(shí)驗(yàn)采用的鍵盤(pán)投影激光模塊波長(zhǎng)為650 nm,其不會(huì)對(duì)攝像頭檢測(cè)790 nm的紅外光信號(hào)造成干擾,工作電壓為3.3 V。
由于紅外一字激光器和鍵盤(pán)投影模塊的工作電壓均為3.3 V,實(shí)驗(yàn)采用了對(duì)外接12 V DC電源進(jìn)行降壓的方式來(lái)供給電源。降壓用到了LM2596S芯片及AMS1117芯片,電路圖分別如圖5和圖6所示。LM2596S芯片可以將外接的12 V DC電源轉(zhuǎn)換成5 V,該芯片內(nèi)部集成有頻率補(bǔ)償和固定頻率發(fā)生器,其開(kāi)關(guān)頻率為150 kHz,且只須外接4個(gè)元器件,這可以極大地簡(jiǎn)化開(kāi)關(guān)電源的設(shè)計(jì)。此外,LM2596S芯片還擁有限流保護(hù)電路和過(guò)熱保護(hù)電路,能充分滿足設(shè)計(jì)需求。用AMS1117芯片將5 V電壓降為3.3 V,使一字激光器和鍵盤(pán)投影激光能正常工作。AMS1117是正電壓輸出的高效線性穩(wěn)壓器,其固定輸出版本包括3.3 V、5 V等,精度為1%,且內(nèi)部集成有過(guò)熱保護(hù)和限流電路,符合設(shè)計(jì)要求。
圖5 LM2596S電路圖
圖6 AMS1117電路圖
攝像頭標(biāo)定[30]是為了獲得攝像頭的校正參數(shù),方便后續(xù)對(duì)按鍵的精準(zhǔn)定位和識(shí)別,并減少實(shí)驗(yàn)誤差。攝像頭標(biāo)定采用基于MATLAB軟件的calibration程序和棋盤(pán)格定位法。首先多角度拍攝一定數(shù)量的圖片,然后將待標(biāo)定的圖片用calibration程序進(jìn)行標(biāo)定,最后去掉誤差較大的幾張圖片并導(dǎo)出標(biāo)定參數(shù)。標(biāo)定前需用量尺測(cè)量棋盤(pán)格的尺寸,如圖7所示。
圖7 測(cè)量標(biāo)定板的方格尺寸
標(biāo)定時(shí)需要逐張?zhí)幚順?biāo)定圖片,嚴(yán)格控制標(biāo)定誤差,并且盡量使藍(lán)色畫(huà)叉的標(biāo)記分布在棋盤(pán)格的角點(diǎn)處,如圖8所示。處理完所有圖片后會(huì)獲得如圖9所示的標(biāo)定誤差圖,圖中數(shù)字橫坐標(biāo)1~9是導(dǎo)入的圖片編號(hào),縱坐標(biāo)為每幅圖片的平均誤差,圖中虛線表示所有被標(biāo)定圖片的總體平均誤差。
圖8 單張圖片標(biāo)定
標(biāo)定完成后可以得到鏡頭畸變參數(shù)。通過(guò)在程序中導(dǎo)入這些畸變參數(shù),可以驗(yàn)證鏡頭畸變參數(shù)是否正確。標(biāo)定參數(shù)檢驗(yàn)如圖10所示,圖10(a)為標(biāo)定前圖片,圖10(b)為標(biāo)定后圖片。從圖中可以看出,標(biāo)定后的棋盤(pán)格方形較為標(biāo)準(zhǔn),而標(biāo)定前的圖片有線性失真,從而驗(yàn)證了標(biāo)定參數(shù)沒(méi)有問(wèn)題。
圖10 標(biāo)定前后的圖片比較
圖像預(yù)處理可以幫助改善圖片質(zhì)量,提取圖片中有用的信息。由于后續(xù)處理的是紅外光,可以先對(duì)圖像進(jìn)行灰度處理,將攝像頭拍攝的RGB圖像轉(zhuǎn)換為灰度圖像。同時(shí),創(chuàng)建閾值滾動(dòng)條對(duì)圖像進(jìn)行初步處理,再使用二值化濾去很大或者很小的圓形點(diǎn),從而使圖像的黑白效果更加明顯,增強(qiáng)去噪效果。最后使用中值濾波使圖像變得平滑。中值濾波法是一種非線性平滑技術(shù),可以將每個(gè)像素點(diǎn)的灰度值設(shè)置為該點(diǎn)某鄰域窗口內(nèi)的所有像素點(diǎn)灰度值的中值。
原始圖像和預(yù)處理以后的圖像如圖11所示。圖11(a)為攝像頭拍攝的原始圖像,最上方的灰色矩形框是閾值滾動(dòng)條,可以對(duì)圖像進(jìn)行閾值分割,選擇合適閾值來(lái)提取指尖輪廓,圖像中的白色圓點(diǎn)為攝像頭拍攝到的指尖輪廓,攝像頭的影像效果進(jìn)行過(guò)重新設(shè)置,使拍攝的圖片黑白對(duì)比更加強(qiáng)烈;圖11(b)是預(yù)處理以后的圖片,圖中白色不規(guī)則橢圓是經(jīng)過(guò)處理后的指尖輪廓。經(jīng)對(duì)比,圖11(b)周邊的白色殘影已經(jīng)被成功過(guò)濾,保留了所需要的指尖輪廓,提取到了有用的指尖信息。
圖11 處理前后圖像對(duì)比
圖像預(yù)處理完成后,就需要對(duì)目標(biāo)進(jìn)行定位與檢測(cè)[31]。首先用findContours函數(shù)檢測(cè)輪廓,本系統(tǒng)采用的findContours函數(shù)模式是檢測(cè)所有輪廓建立等級(jí)樹(shù)結(jié)構(gòu)且只保留拐點(diǎn)處的信息以減少數(shù)據(jù)量;然后用approxPolyDP函數(shù)減少輪廓點(diǎn)的數(shù)目,使其平滑;最后用drawContours函數(shù)和boundingRect繪制多邊形輪廓及外包絡(luò)矩形。如圖12所示:圖12(a)的四個(gè)光點(diǎn)是攝像頭識(shí)別到的手指的四個(gè)指尖;圖12(b)左上角的文字表明當(dāng)前所識(shí)別到的總的目標(biāo)數(shù)以及在鍵盤(pán)的哪一行,白色圖形記錄的是哪個(gè)按鍵,當(dāng)目標(biāo)數(shù)為1時(shí),白色圖形可以正確反映當(dāng)前的按鍵。右下角四個(gè)矩形框則為繪制出的指尖輪廓,白色文字描述了矩形框中心點(diǎn)的橫坐標(biāo)和縱坐標(biāo)。
圖12 輪廓檢測(cè)與定位
找到手指光斑的輪廓并成功定位后,需要對(duì)手指的按下?tīng)顟B(tài)進(jìn)行識(shí)別,最后完成按鍵的映射。按鍵映射具體過(guò)程如下:首先建立二維數(shù)組用于存儲(chǔ)按鍵信息;其次根據(jù)手指按下的位置所對(duì)應(yīng)的坐標(biāo)進(jìn)行行列掃描;接著判別手指在哪一行,以及該行作為所存儲(chǔ)的二維數(shù)組的行坐標(biāo)和手指所在列作為所存儲(chǔ)的二維數(shù)組的列坐標(biāo);最后進(jìn)行按鍵的轉(zhuǎn)換。劃分鍵盤(pán)采用的方法是對(duì)圖像進(jìn)行線性劃分,攝像頭雖然存在一定的線性失真,但通過(guò)一些算法校正以后依然能保持線性。所以將圖片比例化,先判斷是哪一行的按鍵,判定完成后根據(jù)光斑的位置信息可以直接映射到所對(duì)的按鍵位置,映射成功時(shí)可以用rectangle函數(shù)填充白色矩形塊來(lái)作為提示信息。
如圖13所示,灰色數(shù)字和字母共同組成了常用的鍵盤(pán)布局,當(dāng)上位機(jī)識(shí)別到手指的按鍵信息后,會(huì)對(duì)圖中對(duì)應(yīng)按鍵的鍵盤(pán)通過(guò)白色矩形塊填充的方式來(lái)形象地告訴用戶當(dāng)前響應(yīng)的按鍵,提高了用戶的交互體驗(yàn)。
圖13 擊鍵效果圖
本文以激光三角測(cè)距、紅外光成像的目標(biāo)檢測(cè)和定位技術(shù)為基礎(chǔ),設(shè)計(jì)了包括攝像頭、紅外一字激光器、鍵盤(pán)投影激光器、電源轉(zhuǎn)換電路等4部分組成的激光虛擬鍵盤(pán)系統(tǒng)。文中闡述了激光虛擬鍵盤(pán)系統(tǒng)的圖像采集、圖像處理、目標(biāo)檢測(cè)、輪廓提取和按鍵映射的原理,實(shí)現(xiàn)了當(dāng)檢測(cè)到手指反射的紅外光時(shí),系統(tǒng)會(huì)根據(jù)目標(biāo)的位置信息通過(guò)算法進(jìn)行按鍵映射,并模擬傳統(tǒng)鍵盤(pán)完成擊鍵后的響應(yīng)。測(cè)試結(jié)果表明:本文設(shè)計(jì)的激光虛擬鍵盤(pán)系統(tǒng)各模塊可以穩(wěn)定協(xié)同運(yùn)行,能夠精確地檢測(cè)到用戶對(duì)激光虛擬鍵盤(pán)的按鍵操作,驗(yàn)證了激光虛擬鍵盤(pán)系統(tǒng)的可行性和實(shí)用性。