摘要:立體視覺是計算機(jī)視覺領(lǐng)域的一個重要課題,其目的在于重構(gòu)場景的三維幾何信息。立體視覺在機(jī)器人導(dǎo)航系統(tǒng)、航空及遙感測量、軍事應(yīng)用、工業(yè)自動化等中有著比較廣泛的應(yīng)用,所以對立體視覺的研究具有十分重要的意義。雙目立體視覺是立體視覺的一個重要的分支。雙目立體視覺理論是在模擬人類視覺系統(tǒng)研究的基礎(chǔ)上建立起來的。對于雙目立體視覺的研究,主要包括攝像機(jī)標(biāo)定、特征檢測、立體匹配和三維重建幾個方面的內(nèi)容。本論文中采用了雙目立體視覺技術(shù)來實現(xiàn)多點觸控,主要研究了攝像機(jī)標(biāo)定、特征提取、觸控點跟蹤、多點觸控系統(tǒng)設(shè)計等幾方面內(nèi)容。主要完成了如下工作:首先,分析了雙目立體視覺及多點觸控技術(shù)的國內(nèi)外研究現(xiàn)狀,為本文的研究工作奠定了基礎(chǔ)。其次,主要介紹了張友正攝像機(jī)標(biāo)定原理,然后進(jìn)行了攝像機(jī)的標(biāo)定實驗,在理論與實驗的基礎(chǔ)上得出了雙目攝像機(jī)的內(nèi)外參數(shù),更為重要的一點就是通過標(biāo)定原理推導(dǎo)出了觸控轉(zhuǎn)換公式。再次,將雙目立體視覺技術(shù)中的標(biāo)定方法應(yīng)用到多點觸控中,通過圖像處理方法對觸控點進(jìn)行特征提取,然后計算觸控點坐標(biāo)并進(jìn)行跟蹤,實驗證明該方法能有效解決多觸點遮擋問題,可支持最多四個觸點的精確定位。
關(guān)鍵詞:雙目立體視覺;攝像機(jī)標(biāo)定;特征提取;觸控點跟蹤
1概述
本多點觸控系統(tǒng)包括:攝像機(jī)標(biāo)定、觸控點特征提取、觸控點跟蹤等幾個部分。本系統(tǒng)涉及論文除了在理論上對攝像機(jī)標(biāo)定、觸控點特征提取、觸控點跟蹤技術(shù)進(jìn)行了研究之外,還利用ViusalC++2008進(jìn)行了編程,實現(xiàn)了系統(tǒng)的全部功能,包括攝像機(jī)標(biāo)定、觸控點特征提取、觸控點跟蹤技術(shù)。
為了縮短開發(fā)時間,本文選擇Intel的OpenCV(OpenSourceComputerVision)library作為整個系統(tǒng)的基礎(chǔ)函數(shù)庫。OpenCV是一個基于BSD許可證授權(quán)(開源)發(fā)行的跨平臺計算機(jī)視覺庫,可以運行在Linux、Windows和MacOS操作系統(tǒng)上。它輕量級而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。OpenCV有效地提高了開發(fā)效率,并且其執(zhí)行速度快,具有良好的跨平臺移植性,因此廣泛應(yīng)用于工程實際當(dāng)中。
2系統(tǒng)的硬件組成
圖2-1為本文所設(shè)計系統(tǒng)控制裝置示意圖,系統(tǒng)的硬件部分主要由一臺計算機(jī),視覺系統(tǒng)及實驗平臺組成。視覺系統(tǒng)的主要任務(wù)是獲取觸點信息并通過坐標(biāo)轉(zhuǎn)化得到它的空間位置信息。
本系統(tǒng)中的光學(xué)傳感器是型號為9014的CCD攝像頭,其采集速度為每秒30幀,圖像采集分辨率為320*240。精度較高,噪聲較小。本系統(tǒng)包括兩個攝像頭和一個支架,將攝像頭安裝在支架上,再將安裝攝像頭的支架安裝在顯示屏的前方或后方,應(yīng)視兩個攝像頭視角范圍重疊區(qū)域最大,且整個實驗平臺都在重疊區(qū)域內(nèi),如圖2-1所示,安裝完成之后要要將攝像頭固定好,以免人為的觸碰到攝像頭,使其產(chǎn)生晃動,對實驗結(jié)果照成影響,攝像頭通過有線或無線與計算機(jī)相連。
圖2-1觸摸控制裝置結(jié)構(gòu)圖
此系統(tǒng)的優(yōu)點在于通過光學(xué)傳感方式,采用光學(xué)傳感接收器作為主要信號采集裝置,因此生產(chǎn)制作容易,成本較低,而且作用面積大,相對于現(xiàn)有技術(shù)的成本優(yōu)勢就越突出;由于采用光學(xué)傳感接收器,并且光學(xué)傳感接收器的個數(shù)可以根據(jù)實際應(yīng)用進(jìn)行調(diào)整,因此,識別精度高,能夠準(zhǔn)確地通過筆觸或手觸輸入信息;信號接收是通過成像方式產(chǎn)生,因此,不需要直接接觸界面顯示設(shè)備的表面,不易對設(shè)備產(chǎn)生物理損傷,因此,使用壽命長。
3系統(tǒng)的軟件設(shè)計
3.1技術(shù)路線與方案
如圖2-1所示,放置兩個攝像頭,使得實驗平臺在每個攝像頭內(nèi)都能有完整的圖像,左攝像頭與右攝像頭標(biāo)定形成雙目系統(tǒng),并且以左攝像頭的光心位置作為世界坐標(biāo)原點。兩個攝像頭同步捕獲手指的運動圖像,通過圖像處理,得到手指在兩個攝像頭中的像坐標(biāo),通過坐標(biāo)變換得到手指的世界坐標(biāo)(世界坐標(biāo)原點為左攝像頭的光心坐標(biāo))。最后通過oscpack將得到的點信息傳送出去。
本系統(tǒng)軟件最關(guān)鍵的地方是要提取出手指的像坐標(biāo),由攝像頭實時獲取手指圖像,提取出我們感興趣的圖像部分,提取背景差,經(jīng)過平滑、canny、二值化、去雜點、膨化,邊緣連接得到手指部分在圖像中以白色區(qū)域顯示,所有白色區(qū)域在圖像中的位置被實時地(即每33ms)刷新,程序利用這些信息,可以在一定程度上由圖像中被跟蹤目標(biāo)的二維投影得出三維信息。
本系統(tǒng)軟件主要分為4個模塊:手指檢測模塊、坐標(biāo)轉(zhuǎn)換模塊、觸控點跟蹤模塊、oscpack傳送模塊。
3.2數(shù)據(jù)流程圖
3.3詳細(xì)程序流程圖
3.4模塊劃分及函數(shù)說明
(1)初始化模塊:初始化2個攝像頭,即讀入2個攝像頭。
函數(shù):voidinitDevices(),調(diào)用listDevices(),setDeviceID(),initGrabber函數(shù)。
函數(shù)作用:啟動攝像頭,初始化攝像頭拍攝圖像參數(shù)并為輸入攝像頭編號;
(2)攝像頭參數(shù)模塊:載入標(biāo)定得出的參數(shù),對攝像頭參數(shù)矩陣進(jìn)行計算。
函數(shù):cvH0ughLines2(),在二值圖像中找到直線;
cvFindComersubPix,得到精確的亞像素級的坐標(biāo);
cvDrawChesscoardcorners,以紅色圓圈來繪制檢測到得棋盤角點;
cv2Calibratecamera2(),得到攝像機(jī)的內(nèi)參矩陣、畸變向量、每幅圖像的旋轉(zhuǎn)向量、每幅圖像的平移向量;
cvFind2ExtrinsicCameraParams2(),計算各幅圖的外參即旋轉(zhuǎn)向量和平移向量;
(3)更新圖像模塊:對圖像進(jìn)行處理,得到手指在攝像頭中的像坐標(biāo)。
函數(shù):voidUpdateMutiPoints2(IplImage*img),更新圖像并找手指點;
(4)坐標(biāo)變換模塊:將手指像坐標(biāo)帶入雙目系統(tǒng)中計算手指的世界坐標(biāo),由于我們假設(shè)的平臺與攝像頭光心平行,即z軸坐標(biāo)為0,即只有x和y坐標(biāo)。
函數(shù):voidCalculateMutiPoint(),由圖像坐標(biāo)得到世界坐標(biāo);
(5)Oscpack輸出模塊:將得到的x,y方向上的坐標(biāo)仿射變換到屏幕上面的矩形中,然后再將這些點的坐標(biāo)傳出去。
4本章小結(jié)
本文主要介紹了基于雙目立體視覺技術(shù)的多點觸控系統(tǒng)的設(shè)計與實現(xiàn),從硬件和軟件兩個方面詳細(xì)地介紹了系統(tǒng)設(shè)計的過程與應(yīng)注意的問題。硬件方面,給出了攝像頭采用的型號,實驗平臺的擺放等相關(guān)信息,軟件方面,給出了技術(shù)路線與方案、數(shù)據(jù)流程圖、詳細(xì)程序流程圖、模塊劃分及函數(shù)說明。
參考文獻(xiàn):
[1]于泓.攝像機(jī)標(biāo)定算法研究[D].山東:山東大學(xué),2006:7-13.
[2]馬頌德,張正友.計算機(jī)視覺--計算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,2003.
[3]張健新,段發(fā)階,葉聲華.雙目傳感器結(jié)構(gòu)優(yōu)化設(shè)計[J].光電工程,1996,23(3):12-17.
[4] Chen,Y.Mean Shift Mode Seeking and Clustering. IEEE Trans. Pattern Analysis and Machine Intelligence. 1995,17(8):790-799.
作者簡介:萬利(1983.12.03-),性別:女,籍貫:湖北天門,學(xué)歷:碩士,研究方向:電路集成。