本發(fā)明涉及地理信息系統(tǒng)技術(shù),尤其是一種基于眼球追蹤的空間數(shù)據(jù)沉浸式交互方法。
背景技術(shù):
:空間數(shù)據(jù)沉浸式交互方法是地理信息系統(tǒng)中需要解決的重要問題之一,目前空間數(shù)據(jù)的交互方式主要是通過鼠標(biāo)、鍵盤、觸摸板等交互設(shè)備實現(xiàn),也可以基于手勢識別技術(shù),通過手的動作來進(jìn)行空間數(shù)據(jù)交互。上述交互方法在用戶使用眼睛注視空間數(shù)據(jù)時,均需要同時使用手來進(jìn)行設(shè)備操作,完成空間數(shù)據(jù)的交互過程。使得用戶需要將一部分注意力放在手的控制上,降低了用戶體驗,而且無法適用于上肢殘障人群。技術(shù)實現(xiàn)要素:本發(fā)明要解決的技術(shù)問題在于針對現(xiàn)有技術(shù)中的缺陷,提供一種基于眼球追蹤的空間數(shù)據(jù)沉浸式交互方法,利用便攜式筆記本的前置攝像頭、USB外置攝像頭以及其它帶有攝像頭的硬件設(shè)備,通過追蹤眼球位置的變化來自動完成空間數(shù)據(jù)的可視化交互,解決傳統(tǒng)交互方式需要手參與的缺陷,增強(qiáng)用戶體驗。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于眼球追蹤的空間數(shù)據(jù)沉浸式交互方法,其包括以下步驟:步驟1)初始化空間數(shù)據(jù)可視化窗口,計算空間數(shù)據(jù)可視化窗口中心點O’的坐標(biāo)值(xo1,yo1),計算空間數(shù)據(jù)可視化窗口的四個頂點B’(xb1,yb1)、A’(xa1,ya1)、C’(xc1,yc1)、D’(xd1,yd1)的坐標(biāo)值,設(shè)置操作類型為“位置標(biāo)定”;步驟2)啟動攝像頭設(shè)備,判斷操作類型,如果操作類型是“位置標(biāo)定”,轉(zhuǎn)步驟3),如果是“可視化交互”,轉(zhuǎn)步驟8);步驟3)提示用戶保持身體不動,頭部向左上角移動,眼球注視空間數(shù)據(jù)可視化窗口的左上角B’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點(即兩個眼球連線的中點)的坐標(biāo)值,設(shè)其為點B,坐標(biāo)為(xb,yb);步驟4)提示用戶保持身體不動,頭部向左下角移動,眼球注視空間數(shù)據(jù)可視化窗口的左下角D’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點的坐標(biāo)值,設(shè)其為點D,坐標(biāo)為(xd,yd);步驟5)提示用戶保持身體不動,頭部向右上角移動,眼球注視空間數(shù)據(jù)可視化窗口的右上角A’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點的坐標(biāo)值,設(shè)其為點A,坐標(biāo)為(xa,ya);步驟6)提示用戶保持身體不動,頭部向右下角移動,眼球注視空間數(shù)據(jù)可視化窗口的右下角C’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點的坐標(biāo)值,設(shè)其為點C,坐標(biāo)為(xc,yc);步驟7)計算視線焦點在X和Y方向上移動1個像素相當(dāng)于空間數(shù)據(jù)在X和Y方向上移動的空間坐標(biāo)距離,設(shè)其分別為px和py,坐標(biāo)標(biāo)定結(jié)束。關(guān)閉攝像頭,設(shè)置操作類型為可視化交互,轉(zhuǎn)步驟2)。步驟8)提示用戶保持身體不動,根據(jù)用戶的交互需求,移動頭部并用眼睛注視空間數(shù)據(jù)可視化窗口的相應(yīng)位置;步驟9)采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點坐標(biāo),判斷該位置是否在坐標(biāo)標(biāo)定的四個點構(gòu)成的四邊形范圍ABDC內(nèi),如果是,轉(zhuǎn)步驟10),如果否,則轉(zhuǎn)步驟12);步驟10)計算眼球視線焦點相對于四邊形范圍ABDC中點O(xo,yo)在X和Y方向上的偏移量,判斷X和Y方向偏移量是否小于指定閾值T,如果X和Y方向的偏移量均小于T,轉(zhuǎn)8),如果否,則轉(zhuǎn)11);步驟11)根據(jù)眼球視線焦點的偏移量計算出新的空間數(shù)據(jù)可視化窗口的中心點坐標(biāo)值,更新空間數(shù)據(jù)可視化窗口中的圖像數(shù)據(jù),更新中心點O’的坐標(biāo)值(xo1,yo1),轉(zhuǎn)步驟8)進(jìn)行下一次交互;步驟12)關(guān)閉攝像頭,結(jié)束。本發(fā)明的有益效果是能夠通過攝像頭采集到的人臉圖像,自動追蹤眼球的位置變化,并推算出新的空間數(shù)據(jù)可視化范圍中心點,同步更新空間數(shù)據(jù)可視化窗口中的圖像數(shù)據(jù),解決傳統(tǒng)空間數(shù)據(jù)交互方式中需要依賴于手的缺陷,讓用戶所有注意力全部沉浸到空間數(shù)據(jù)的可視化窗口中,增強(qiáng)空間數(shù)據(jù)可視化交互體驗,尤其適用于上肢殘障人群。附圖說明下面將結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步說明,附圖中:圖1是本發(fā)明的方法流程圖;圖2是本發(fā)明攝像頭采集圖像中標(biāo)定的視線焦點與空間數(shù)據(jù)可視化窗口四個頂點的映射關(guān)系圖;圖3是本發(fā)明實施例使用的空間數(shù)據(jù)示意圖。具體實施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,圖1是本發(fā)明提供的基于眼球追蹤的空間數(shù)據(jù)沉浸式交互方法流程圖,所述方法包括以下步驟:步驟1)初始化空間數(shù)據(jù)可視化窗口,寬度為W像素,高度為H像素,設(shè)空間數(shù)據(jù)的原始地理坐標(biāo)范圍為[(xmin,xmax),(ymin,ymax)],根據(jù)公式(1)-(2)計算空間數(shù)據(jù)可視化窗口中心點O’的坐標(biāo)值(xo1,yo1),根據(jù)公式(3)-(10)計算空間數(shù)據(jù)可視化窗口的四個頂點B’(xb1,yb1)、A’(xa1,ya1)、C’(xc1,yc1)、D’(xd1,yd1)的坐標(biāo)值,四個頂點與攝像頭采集圖像中的眼球視線焦點的對應(yīng)關(guān)系如圖2所示。設(shè)置操作類型為“位置標(biāo)定”。xo1=xmin+max(xmax-xmin,ymax-ymin)/max(W,H)*W/2公式(1)yo1=y(tǒng)min+max(xmax-xmin,ymax-ymin)/max(W,H)*H/2公式(2)xb1=xmin公式(3)yb1=y(tǒng)min+max(xmax-xmin,ymax-ymin)/max(W,H)*H公式(4)xa1=xmin+max(xmax-xmin,ymax-ymin)/max(W,H)*W公式(5)ya1=y(tǒng)min+max(xmax-xmin,ymax-ymin)/max(W,H)*H公式(6)xc1=xmin+max(xmax-xmin,ymax-ymin)/max(W,H)*W公式(7)yc1=y(tǒng)min公式(8)xd1=xmin公式(9)yd1=y(tǒng)min公式(10)步驟2)啟動攝像頭設(shè)備,判斷操作類型,如果操作類型是“位置標(biāo)定”,轉(zhuǎn)步驟3),如果是“可視化交互”,轉(zhuǎn)步驟8)。步驟3)提示用戶保持身體不動,頭部向左上角移動,眼球注視空間數(shù)據(jù)可視化窗口的左上角B’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,設(shè)左眼眼球中心點的坐標(biāo)為(xl,yl),右眼眼球中心點的坐標(biāo)為(xr,yr),依據(jù)公式(11)-(12)計算眼球視線焦點(即兩個眼球連線的中點)的坐標(biāo)值(xcur,ycur),設(shè)其為點B,坐標(biāo)為(xb,yb)。xcur=(xl+xr)/2公式(11)ycur=(yl+yr)/2公式(12)步驟4)提示用戶保持身體不動,頭部向左下角移動,眼球注視空間數(shù)據(jù)可視化窗口的左下角D’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,與步驟3)中B點坐標(biāo)的計算方法相同,計算眼球視線焦點的坐標(biāo)值,設(shè)其為點D,坐標(biāo)為(xd,yd)。步驟5)提示用戶保持身體不動,頭部向右上角移動,眼球注視空間數(shù)據(jù)可視化窗口的右上角A’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點的坐標(biāo)值,與步驟3)中B點坐標(biāo)的計算方法相同,設(shè)其為點A,坐標(biāo)為(xa,ya)。步驟6)提示用戶保持身體不動,頭部向右下角移動,眼球注視空間數(shù)據(jù)可視化窗口的右下角C’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點的坐標(biāo)值,與步驟3)中B點坐標(biāo)的計算方法相同,設(shè)其為點C,坐標(biāo)為(xc,yc)。步驟7)計算視線焦點在X和Y方向上移動1個像素相當(dāng)于空間數(shù)據(jù)在X和Y方向上移動的空間坐標(biāo)距離,設(shè)其分別為px和py,計算公式為公式(13)-(14),坐標(biāo)標(biāo)定結(jié)束。關(guān)閉攝像頭,設(shè)置操作類型為可視化交互,轉(zhuǎn)步驟2)。px=(xa1-xb1)/(xb-xa)公式(13)py=(ya1-yc1)/(yc-ya)公式(14)步驟8)提示用戶保持身體不動,根據(jù)用戶自身的交互需求,自行移動頭部并用眼睛注視空間數(shù)據(jù)可視化窗口的相應(yīng)位置;步驟9)采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,計算眼球視線焦點坐標(biāo)(xcur,ycur),與步驟3)中B點坐標(biāo)的計算方法相同,判斷該位置是否在坐標(biāo)標(biāo)定的四個點構(gòu)成的四邊形范圍ABDC內(nèi),如果是(估算方法為xa<xcur<xb且ya<ycur<yc),轉(zhuǎn)步驟10),如果否,則轉(zhuǎn)步驟12)。步驟10)計算眼球視線焦點(xcur,ycur)相對于四邊形范圍ABDC中點O(xo,yo)在X和Y方向上的偏移量,設(shè)分別為dx和dy,則dx=xcur-xo,dy=y(tǒng)cur-yo。判斷X和Y方向偏移量的絕對值是否小于指定閾值T,如果X和Y方向的偏移量均小于閾值T,轉(zhuǎn)8),如果否,則轉(zhuǎn)11)。步驟11)根據(jù)眼球視線焦點的偏移量dx和dy計算出新的空間數(shù)據(jù)可視化窗口的中心點坐標(biāo)值(tempx,tempy),其計算方法如公式(15)-(16)所示,使用新的中心點坐標(biāo)更新空間數(shù)據(jù)可視化窗口中的圖像數(shù)據(jù),更新中心點O’的坐標(biāo)值(xo1,yo1),轉(zhuǎn)步驟8)進(jìn)行下一次交互。tempx=xo1-dx*px公式(13)tempy=y(tǒng)o1-dy*py公式(14)步驟12)關(guān)閉攝像頭,結(jié)束。本發(fā)明最明顯的不同借助攝像頭設(shè)備采集到的人臉圖像,實現(xiàn)眼球視線焦點的自動跟蹤,根據(jù)眼球視線焦點的位置變化來推算空間數(shù)據(jù)的位移,同步更新空間數(shù)據(jù)可視化窗口中的圖像,使得用戶不需要使用手來進(jìn)行空間數(shù)據(jù)的交互,從而可以將注意力全部沉浸到空間數(shù)據(jù)可視化窗口中,增強(qiáng)空間數(shù)據(jù)可視化交互體驗,尤其適用于上肢殘障人群。實施例一:為了更清晰的說明本發(fā)明的思想,下面對基于眼球追蹤的空間數(shù)據(jù)沉浸式交互方法進(jìn)行進(jìn)一步的說明,以圖3所示的空間數(shù)據(jù)為例,其原始空間數(shù)據(jù)范圍為[(-180,-90),(180,90)],設(shè)置眼球視線焦點偏移閾值T為5像素,空間數(shù)據(jù)可視化窗口寬度設(shè)置為1000像素,高度設(shè)置為600像素,以眼球注視圖3中點F的交互過程為例進(jìn)行闡述,使用Openlayers作為空間數(shù)據(jù)顯示引擎,使用OpenCV圖像處理庫采集攝像頭圖像并對圖像進(jìn)行處理,具體步驟如下:步驟1)初始化空間數(shù)據(jù)可視化窗口,寬度為1000像素,高度為600像素,空間數(shù)據(jù)的原始地理坐標(biāo)范圍為[(-180,-90),(180,90)],根據(jù)公式(1)-(2)計算空間數(shù)據(jù)可視化窗口中心點O’的坐標(biāo)值(xo1,yo1),根據(jù)公式(3)-(10)計算空間數(shù)據(jù)可視化窗口的四個頂點B’(xb1,yb1)、A’(xa1,ya1)、C’(xc1,yc1)、D’(xd1,yd1)的坐標(biāo)值,計算結(jié)果如表1所示,調(diào)用Openlayers提供的setCenter方法,設(shè)置空間數(shù)據(jù)可視化窗口的中心點為(0,18),并調(diào)用setResolution方法設(shè)置空間數(shù)據(jù)可視化分辨率為360/1000=0.36。設(shè)置操作類型為“位置標(biāo)定”。表1空間數(shù)據(jù)可視化窗口各個頂點坐標(biāo)坐標(biāo)點坐標(biāo)值O’(0,18)A’(180,126)B’(-180,126)C’(180,-90)D’(-180,-90)步驟2)調(diào)用OpenCV中VideoCapture提供的open函數(shù)啟動攝像頭設(shè)備,判斷操作類型,如果操作類型是“位置標(biāo)定”,轉(zhuǎn)步驟3),如果是“可視化交互”,轉(zhuǎn)步驟8)。步驟3)提示用戶保持身體不動,頭部向左上角移動,眼球注視空間數(shù)據(jù)可視化窗口的左上角B’,通過OpenCV中VideoCapture提供的frame變量采集圖像數(shù)據(jù),通過OpenCV中CascadeClassifier提供的detectMultiScale函數(shù)提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,左眼眼球中心點的坐標(biāo)(x1,y1)為(369,195),右眼眼球中心點的坐標(biāo)(xr,yr)為(299,193),依據(jù)公式(11)-(12)計算眼球視線焦點(即兩個眼球連線的中點)的坐標(biāo)值(xcur,ycur),xcur=(369+299)/2=334,ycur=(193+195)/2=194,設(shè)其為點B(xb,yb),即xb=334,yb=194。步驟4)提示用戶保持身體不動,頭部向左下角移動,眼球注視空間數(shù)據(jù)可視化窗口的左下角D’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,左眼眼球中心點的坐標(biāo)為(365,231),右眼眼球中心點的坐標(biāo)為(295,233),與步驟3)中的計算方法相同,計算出眼球視線焦點的坐標(biāo)值為(330,232),設(shè)其為點D(xd,yd),即xd=330,yd=232。步驟5)提示用戶保持身體不動,頭部向右上角移動,眼球注視空間數(shù)據(jù)可視化窗口的右上角A’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,左眼眼球中心點的坐標(biāo)為(280,192),右眼眼球中心點的坐標(biāo)為(200,190),與步驟3)中的計算方法相同,計算出眼球視線焦點的坐標(biāo)值為(240,191),設(shè)其為點A(xa,ya),即xa=240,ya=191。步驟6)提示用戶保持身體不動,頭部向右下角移動,眼球注視空間數(shù)據(jù)可視化窗口的右下角C’,采集圖像數(shù)據(jù),提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,左眼眼球中心點的坐標(biāo)為(269,234),右眼眼球中心點的坐標(biāo)為(191,232),與步驟3)中的計算方法相同,計算出眼球視線焦點的坐標(biāo)值為(230,233),設(shè)其為點C(xc,yc),即xc=230,yc=233。步驟7)計算視線焦點在X和Y方向上移動1個像素相當(dāng)于空間數(shù)據(jù)在X和Y方向上移動的空間坐標(biāo)距離,設(shè)其分別為px和py,計算公式為公式(13)-(14),px=(180+180)/(334-240)=3.829787,py=(126+90)/(233-191)=5.142857。坐標(biāo)標(biāo)定結(jié)束。調(diào)用OpenCV中VideoCapture提供的release函數(shù)關(guān)閉攝像頭,設(shè)置操作類型為可視化交互,轉(zhuǎn)步驟2)。步驟8)提示用戶保持身體不動,用戶根據(jù)自身的交互需求,自行移動頭部并用眼睛注視空間數(shù)據(jù)可視化窗口F點;步驟9)通過OpenCV中VideoCapture提供的frame變量采集圖像數(shù)據(jù),通過OpenCV中CascadeClassifier提供的detectMultiScale函數(shù)提取圖像數(shù)據(jù)中左眼和右眼的眼球位置信息,左眼眼球中心點的坐標(biāo)為(287,205),右眼眼球中心點的坐標(biāo)為(209,205)。與步驟3)中的計算方法相同,計算眼球視線焦點坐標(biāo)(xcur,ycur)為(248,205),估算該位置是否在坐標(biāo)標(biāo)定的四個點構(gòu)成的四邊形范圍ABDC內(nèi),因為240=xa<xcur=248<xb=334且191=y(tǒng)a<ycur=205<yc=233,因此轉(zhuǎn)步驟10)。步驟10)估算當(dāng)前眼球視線焦點(248,205)相對于四邊形范圍ABDC中點O(xo,yo)在X和Y方向上的偏移量,設(shè)分別為dx和dy,則dx=xcur-xo=xcur–(xb+xa)/2=248-(334+240)/2=-39,dy=y(tǒng)cur-yo=y(tǒng)cur-(yc+ya)/2=205-(233+191)/2=-7。判斷X和Y方向偏移量的絕對值是否小于指定閾值T=5,因為X和Y方向的偏移量絕對值均大于閾值5,因此轉(zhuǎn)11)。步驟11)根據(jù)眼球視線焦點的偏移量dx和dy計算出新的空間數(shù)據(jù)可視化窗口的中心點坐標(biāo)值(tempx,tempy),其計算方法如公式(15)-(16)所示,tempx=0-(-39)*3.829787=149.361693,tempy=18-(-7)*5.142857=53.999999。調(diào)用Openlayers中提供的setCenter方法,使用新的中心點坐標(biāo)(149.361693,53.999999)更新空間數(shù)據(jù)可視化窗口中的圖像數(shù)據(jù),更新中心點O’的坐標(biāo)值(xo1,yo1)為(149.361693,53.999999)。至此,眼球注視圖3中F點時同步更新可視化窗口中空間數(shù)據(jù)的沉浸式交互過程到此結(jié)束。采用本發(fā)明設(shè)計的基于眼球追蹤的空間數(shù)據(jù)沉浸式交互方法,在用戶眼睛注視空間數(shù)據(jù)可視化窗口時,能夠通過攝像頭采集到的人臉圖像,計算出眼球視線焦點的變化,從而進(jìn)一步推算出空間數(shù)據(jù)可視化窗口中的數(shù)據(jù)的偏移量,該方法擺脫了傳統(tǒng)交互方式需要依賴于手操作的缺陷,使得用戶注意力可以完全沉浸到空間數(shù)據(jù)可視化中,極大地增強(qiáng)了用戶體驗,尤其適用于上肢殘障人群。在上述步驟中需要特別說明的是:1.本發(fā)明將兩個眼球連線中點作為眼球視線焦點,使用該點在攝像頭采集圖像中的像素坐標(biāo)偏移來推算空間數(shù)據(jù)的地理坐標(biāo)位移。2.本發(fā)明支持空間數(shù)據(jù)在同一分辨率下向任意方向移動,基于該方法可以進(jìn)一步改進(jìn)和演化,基于左眼和右眼的距離變化來改變空間數(shù)據(jù)的顯示分辨率,同樣在權(quán)利保護(hù)范圍內(nèi)。3.本發(fā)明同時適用于空間數(shù)據(jù)在二維視圖和三維視圖中的可視化交互,且適用于矢量空間數(shù)據(jù)和柵格空間數(shù)據(jù),均在權(quán)利保護(hù)范圍內(nèi)。4.基于雙攝像頭眼動儀、多攝像頭眼動儀、Kinect等任何帶有攝像頭的設(shè)備,均可以在本發(fā)明的基礎(chǔ)上進(jìn)行改進(jìn)和變換,所有基于這些硬件進(jìn)行的改進(jìn)和變換均在權(quán)利保護(hù)范圍內(nèi)。應(yīng)當(dāng)理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。當(dāng)前第1頁1 2 3