李鐵柱 朱文華 蔡 寶
(上海第二工業(yè)大學(xué)工程訓(xùn)練中心 上海 201209)
視聽資料證據(jù)是指以圖像和聲音形式證明案件真實(shí)情況的證據(jù)。包括與案件事實(shí)、犯罪嫌疑人以及犯罪嫌疑人實(shí)施反偵查行為有關(guān)的錄音、錄像、照片、膠片、聲卡、電子計(jì)算機(jī)內(nèi)存信息資料等。融入激光多重觸控技術(shù),通過簡單高效的人機(jī)互動方式,可加直觀有效地展示視聽證據(jù)資料,提供靈活的數(shù)字媒體信息服務(wù)。它是一種新的多點(diǎn)輸入及多點(diǎn)響應(yīng)技術(shù),參考文獻(xiàn)[1~5]概述了觸控技術(shù)的原理、系統(tǒng)組成、設(shè)計(jì)要求等。文獻(xiàn)[6]針對環(huán)境紅外噪聲干擾的問題,提出了一種基于同步脈沖光源的相鄰幀差算法,同時還構(gòu)建了嵌入同步脈沖光源的多點(diǎn)觸摸硬件平臺,實(shí)現(xiàn)了SPLA算法,并進(jìn)行了大量的觸摸實(shí)驗(yàn)。
通過多重觸控技術(shù)的引入,有效解決我們現(xiàn)在所用的示證軟件操作復(fù)雜,不能多人同時操作等問題。然而觸控識別算法的開發(fā)設(shè)計(jì)比硬件技術(shù)更為復(fù)雜,不僅在軟件功能上進(jìn)行不斷的創(chuàng)新,同時也要根據(jù)不同的應(yīng)用場景進(jìn)行提高。本文設(shè)計(jì)并實(shí)現(xiàn)了基于FTIR原理的紅外激光檢測多點(diǎn)觸控系統(tǒng),包括系統(tǒng)組成、調(diào)整投影機(jī)畫面、攝像頭設(shè)置,到不同場景下掩模圖像生成,重點(diǎn)論述了在不同掩模情況下,采用的攝像頭標(biāo)定及估算算法。
光由介質(zhì)i進(jìn)入介質(zhì)r常會發(fā)生偏折現(xiàn)象,而其偏折的量與光在介質(zhì)中的傳播速度有關(guān),而于不同介質(zhì)中之傳播速度比則為光于此介質(zhì)中之相對折射率,即
以兩平行光波Ⅰ、Ⅱ由介質(zhì)i斜射入介質(zhì)r,當(dāng)光波Ⅰ接觸到介面A點(diǎn)時,光波Ⅱ的波才到達(dá)B點(diǎn)。因光波介質(zhì)i進(jìn)入介質(zhì)r,速度也由νi變?yōu)棣蛂,而致光波發(fā)生偏折。當(dāng)光波Ⅱ的波前到達(dá)介面D點(diǎn)時,光波Ⅰ的波前已達(dá)介質(zhì)r的C點(diǎn),如圖1所示。
圖1 光波折射原理圖
所以由
其中Δt為光波傳播從A到C或B到D所須之時間,所以nisinθi=nrsinθr,其中ni、nr分別為介質(zhì)i及介質(zhì)r的絕對折射率,θi為入射線與法線間之夾角(入射角),為折射線與法線間之夾角(折射角)。
受抑全內(nèi)反射Frustrated Total Internal Reflection(FTIR),簡稱全反射。當(dāng)入射角比臨界角大時(光線遠(yuǎn)離法線),光線會停止進(jìn)入另一界面,反之會全部向內(nèi)面反射。這只會發(fā)生在當(dāng)光線從較高折射率的介質(zhì)進(jìn)入到較低折射率的介質(zhì)以及入射角大于臨界角時。因?yàn)闆]有折射而都是反射,因此也被稱為全內(nèi)反射[1]。當(dāng)用戶在樹脂玻璃表面觸摸時,光線就會被用戶的接觸部位反射或折射,在觸摸的地方就會將原本反射在內(nèi)部的紅外線折射到我們在外面架設(shè)的紅外攝像頭,通過對應(yīng)的算法就可以偵測到相對應(yīng)的觸點(diǎn)?;贔TIR觸摸技術(shù)搭建的設(shè)備體積相對較大,但系統(tǒng)可拓展性好、較之其他系統(tǒng)成本較低以及容易搭建,如圖2所示。
標(biāo)定總體分成5個模塊:視頻采集模塊、顯示模塊、掩模模塊、圖像檢測模塊、標(biāo)定模塊。如圖3所示。
圖2 FITR系統(tǒng)原理圖
圖3 標(biāo)定架構(gòu)圖
視頻采集模塊采集顯示模塊投影在示證屏上的視頻幀圖像,其中顯示模塊投影的圖像為標(biāo)定模塊設(shè)定的具有一定特征的圖形,然后將幀圖像傳送給圖像檢測模塊,圖像檢測模塊同時加載掩模模塊傳送的掩模圖像,并將幀圖像與掩模圖像融合,對融合圖像檢測識別出圖形的特征表示,并將特征表示傳給標(biāo)定模塊,標(biāo)定模塊根據(jù)這些特征表示進(jìn)行標(biāo)定及估算,保存數(shù)據(jù)結(jié)果,然后通知顯示模塊顯示下一個具有一定特征的圖形。以此類推,所有的示證屏都被具有一定特征的圖形掃過之后,標(biāo)定模塊計(jì)算出整個顯示的標(biāo)定數(shù)據(jù)。
標(biāo)定采用圖像檢測識別與顯示相結(jié)合的方式來實(shí)現(xiàn)[7~8],算法分為三步:
第一步:有效標(biāo)定點(diǎn)識別,顯示模塊在示證屏投影出白色的圓點(diǎn),檢測模塊根據(jù)幀圖像識別出特征點(diǎn),并根據(jù)識別出的點(diǎn)進(jìn)行判斷標(biāo)定點(diǎn)是否在掩模范圍內(nèi);
第二步:精確有效標(biāo)定點(diǎn)坐標(biāo),顯示模塊顯示白色的格子,檢測模塊檢測格子的角點(diǎn)來進(jìn)一步確定標(biāo)定點(diǎn)的坐標(biāo);
最后一步:NURBS插補(bǔ),根據(jù)前兩步得到的標(biāo)定點(diǎn)估算其他在掩?;訁^(qū)域的標(biāo)定點(diǎn),用所有的標(biāo)定點(diǎn)實(shí)現(xiàn)標(biāo)定。這里先進(jìn)行如下定義。
顯示寬度:displayerW
顯示高度:displayerH
行向格子數(shù)量:Grid_X
列向格子數(shù)量:Grid_Y
格子寬度:dtx=displayerW/Grid_X
格子高度:dty=displayerH/Grid_Y
標(biāo)定點(diǎn)列數(shù):Point_X=Grid_X+1
標(biāo)定點(diǎn)行數(shù):Point_Y=Grid_Y+1
標(biāo)定點(diǎn)總數(shù):Point_Sum=Point_X*Point_Y
標(biāo)定點(diǎn)id號在[0,Point_Sum-1]范圍內(nèi),則:
第i個標(biāo)定點(diǎn)的行列號為
xid=id%Point_X;
yid=id/Point_X;
此標(biāo)定點(diǎn)投影坐標(biāo)為(dtx*xid,dty*yid)。
投影半徑為(dtx+dty)/10。
顯示模塊顯示id號標(biāo)定點(diǎn),檢測模塊采用自適應(yīng)灰度閾值法得到標(biāo)定點(diǎn)在幀圖像的輪廓[9],并計(jì)算輪廓的中心矩,最終求得的標(biāo)定點(diǎn)坐標(biāo)作為此標(biāo)定點(diǎn)的初始坐標(biāo)并保存,然后通知顯示模塊顯示id+1號標(biāo)定點(diǎn)。將所有識別出的標(biāo)定點(diǎn)按每行、每列擬合,此時的擬合采用非線性曲線擬合(每行、每列至少四個識別出來的標(biāo)定點(diǎn)),并將這些標(biāo)定點(diǎn)坐標(biāo)保存數(shù)組中,此時數(shù)組存入的標(biāo)定點(diǎn)包括三種情況:
1)識別出來的標(biāo)定點(diǎn);
2)沒有識別出來但擬合出來的標(biāo)定點(diǎn);
3)其他的標(biāo)定點(diǎn)。在識別過程中實(shí)時判斷是否需要重新標(biāo)定。
判斷準(zhǔn)則:計(jì)算識別出來的點(diǎn)與其相鄰識別出來的標(biāo)定點(diǎn)的距離,最大距離大于三倍的最小距離或者最小距離小于某個設(shè)定值,都認(rèn)為識別錯誤,程序會重新自動標(biāo)定。
標(biāo)定點(diǎn)id號i在[0,Point_Sum-1]范圍內(nèi),則
第i個標(biāo)定點(diǎn)的行列號為
xid=AutoCalibId%Point_X;
yid=AutoCalibId/Point_X;
此標(biāo)定格子投影坐標(biāo)根據(jù)分布在顯示區(qū)域的不同分別為
顯示區(qū)域左上部分時,坐標(biāo)為(dtx*x+dtx/2,dty*y+dty/2);
顯示區(qū)域右上部分時,坐標(biāo)為(dtx*x-dtx/2,dty*y+dty/2);
顯示區(qū)域左下部分時,坐標(biāo)為(dtx*x+dtx/2,dty*y-dty/2);
顯示區(qū)域右下部分時,坐標(biāo)為(dtx*x-dtx/2,dty*y-dty/2)。
計(jì)算標(biāo)定點(diǎn)坐標(biāo)流程圖如圖4所示。
圖4 計(jì)算標(biāo)定點(diǎn)坐標(biāo)流程圖
顯示模塊顯示id號格子,檢測模塊首先自適用灰度閾值法和最小外接矩形法得到格子的初步矩形輪廓,對初步輪廓進(jìn)行擴(kuò)大1.2倍作為感興趣區(qū)域,進(jìn)行自適應(yīng)灰度閾值法和擬合多邊形頂點(diǎn)數(shù)組,并結(jié)合角點(diǎn)計(jì)算出精確的標(biāo)定點(diǎn)坐標(biāo)[10~14]。然后通知顯示模塊顯示id+1號標(biāo)定點(diǎn)。
將上述步驟中的精確標(biāo)定點(diǎn)坐標(biāo)作為控制點(diǎn),采用插補(bǔ)算法進(jìn)行擬合,最終得到整個標(biāo)定曲面的所有像素點(diǎn)的映射坐標(biāo),從而達(dá)到標(biāo)定目的。統(tǒng)一的曲線和曲面在透視投影下也不是無變化的,對于交互的3D建模來說這是一個嚴(yán)重的缺陷。針對本文中的設(shè)計(jì)要求,我們采用了非統(tǒng)一有理B樣條,即Non-Uniform Rational B-Splines(NURBS)進(jìn)行曲面擬合[15~16]。NURBS既為標(biāo)準(zhǔn)解析形狀,又為自由型曲線曲面的精確表示與設(shè)計(jì)提供了一個公共的數(shù)學(xué)形式,一個控制頂點(diǎn)的影響力的范圍能夠改變,為各種形狀設(shè)計(jì)提供了充分的靈活性,對幾何變換和投影變換具有不變性。本文中我們采用了三次NURBS曲線。一條NURBS曲線完全由控制點(diǎn)、權(quán)因子和節(jié)點(diǎn)矢量三類參數(shù)確定。NURBS曲線可以表示為一分段有理多項(xiàng)式函數(shù):
其中di(i=0,1,…n)為控制點(diǎn),每個控制點(diǎn)有一個權(quán)因子 ωi(i=0,1,…,n),U=[u0,u1,…,un+k+1]稱為節(jié)點(diǎn)矢量,Ni,k為k次規(guī)范B樣條基函數(shù),本文采用三次NURBS曲線進(jìn)行插補(bǔ),即k=3。
在插補(bǔ)計(jì)算中,可以保證NURBS曲線通過已知的精確標(biāo)定點(diǎn)。為方便使用,給出一組型值點(diǎn)即可,由插補(bǔ)程序根據(jù)已知標(biāo)定點(diǎn)確定出控制點(diǎn)和相應(yīng)的節(jié)點(diǎn)矢量,同時根據(jù)程序中默認(rèn)的權(quán)因子構(gòu)造通過這些標(biāo)定點(diǎn)的NURBS曲線。由n+1個控制點(diǎn)和與其對應(yīng)的具有n+5個元素的節(jié)點(diǎn)矢量,可以得到得到n-2個區(qū)間段的NURBS曲線。因此,要生成經(jīng)過n+1個標(biāo)定點(diǎn)的n段NURBS曲線,需要n+3個控制點(diǎn)和對應(yīng)的具有n+7個元素的節(jié)點(diǎn)矢量。具體步驟如下:
1)計(jì)算節(jié)點(diǎn)矢量。
2)確定權(quán)因子矢量。
3)反求控制點(diǎn)。
4)插補(bǔ)參數(shù)預(yù)處理將已經(jīng)求得的控制點(diǎn)、權(quán)因子及節(jié)點(diǎn)矢量輸入,求得第i段NURBS曲線的各個系數(shù)。修改控制頂點(diǎn)的位置,曲線隨之變形。插補(bǔ)時只需計(jì)算參數(shù)增加值,并將參數(shù)值計(jì)算出插補(bǔ)點(diǎn)坐標(biāo)。
根據(jù)環(huán)境光線影響及掩模為不同形狀時,有如下幾種測試結(jié)果。
測試1:環(huán)境光線比較亮,掩模為矩形,如圖5(a)所示,所有的標(biāo)定點(diǎn)都可以識別出來。
測試2:環(huán)境光線比較暗,掩模為矩形,如圖5(b)所示,所有的標(biāo)定點(diǎn)都可以識別出來。
圖5 掩模為矩形的標(biāo)定結(jié)果
測試3:環(huán)境光線比較亮,掩模為不規(guī)則形狀,如圖6所示,圖中左上角、左下角和右上角的部分標(biāo)定點(diǎn)無法識別出來,其他的標(biāo)定點(diǎn)可以識別出來,無法識別的標(biāo)定點(diǎn)通過估計(jì)的方法得到。
測試4:環(huán)境光線比較暗,掩模為不規(guī)則形狀,如圖6所示,圖中左上角、左下角和右上角的部分標(biāo)定點(diǎn)無法識別出來,其他的標(biāo)定點(diǎn)可以識別出來,無法識別的標(biāo)定點(diǎn)通過估計(jì)的方法得到。
測試5:環(huán)境光線比較亮,掩模為橢圓形,如圖7所示,圖中四個角及邊界的部分標(biāo)定點(diǎn)無法識別出來,其他的標(biāo)定點(diǎn)可以識別出來,無法識別的標(biāo)定點(diǎn)通過估計(jì)的方法得到。
圖6 掩模為不規(guī)則形狀的標(biāo)定結(jié)果
測試6:環(huán)境光線比較暗,掩模為橢圓形,如圖7所示,圖中四個角及邊界的部分標(biāo)定點(diǎn)無法識別出來,其他的標(biāo)定點(diǎn)可以識別出來,無法識別的標(biāo)定點(diǎn)通過估計(jì)的方法得到。
圖7 mask掩模為橢圓形的標(biāo)定結(jié)果
從測試結(jié)果來看,攝像頭靠近投影機(jī)安裝比遠(yuǎn)離投影機(jī)安裝自動標(biāo)定的效果好,投影機(jī)投影到顯示畫面的方格子,由于顯示鏡面有一定的厚度,這樣攝像頭就會“看到”顯示鏡面背面顯示的方格子,攝像頭越是遠(yuǎn)離投影鏡頭,攝像頭“看到”鏡面背面的方格子就越明顯,這樣標(biāo)定出來的結(jié)果誤差就越大。
掩模為矩形時,所有的標(biāo)定點(diǎn)都為有效標(biāo)定點(diǎn),掩模為其他形狀,則有些標(biāo)定點(diǎn)為無效的標(biāo)定點(diǎn),這些無效標(biāo)定點(diǎn)通過靠近它的有效標(biāo)定點(diǎn)進(jìn)行估計(jì),估計(jì)出來的標(biāo)定點(diǎn)的誤差比實(shí)際標(biāo)定出來的標(biāo)定點(diǎn)大。
環(huán)境光的影響,通過攝像頭只要能夠清晰地看到棋盤格就可以了,只要不出現(xiàn)過暗或者過亮情況應(yīng)該都可以得到較好的標(biāo)定結(jié)果。
綜上所述,為了得到較好的標(biāo)定結(jié)果,攝像頭盡量靠近投影機(jī)安裝,將環(huán)境光線調(diào)節(jié)到能夠通過攝像頭看到清晰明亮的棋盤格。
本文提出的自動標(biāo)定算法在攝像頭安裝位置不同、環(huán)境光線亮暗影響、掩模遮罩不同等情況下都進(jìn)行大量的測試。在實(shí)際示證系統(tǒng)安裝和使用中,由于現(xiàn)場條件的限制,攝像頭遠(yuǎn)離投影機(jī)安裝,環(huán)境光線比較暗,掩模為橢圓形的情況,本文的算法也能實(shí)現(xiàn)系統(tǒng)的有效標(biāo)定,無法識別的標(biāo)定點(diǎn)通過估計(jì)的方法得到,經(jīng)過大量實(shí)驗(yàn)測試證明,本文的算法穩(wěn)定可靠,滿足系統(tǒng)的實(shí)際需求。