亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Kinect的唐卡圖像交互設(shè)計與實現(xiàn)

        2022-02-22 12:20:40馬玉娟劉曉靜
        計算機技術(shù)與發(fā)展 2022年1期
        關(guān)鍵詞:界面用戶

        馬玉娟,劉曉靜

        (青海大學(xué) 計算機技術(shù)與應(yīng)用系,青海 西寧 810016)

        0 引 言

        唐卡歷史悠久,是中國藏族優(yōu)秀傳統(tǒng)文化的一種繪畫藝術(shù)形式,其內(nèi)容保羅萬象,包括西藏的文學(xué)藝術(shù)、藏醫(yī)藏藥等,展示了西藏地區(qū)的政治經(jīng)濟和人文環(huán)境,是人們了解西藏的有效途徑,被譽為“西藏的百科全書”。近年來,體感技術(shù)得到迅速發(fā)展。微軟的Kinect體感設(shè)備能夠?qū)崟r捕捉人體動作、聲音等一系列信息,因其價格低廉、實用性強等特性深受研究者們的青睞,很多國內(nèi)外研究人員都選擇在此平臺上進行開發(fā)和研究。2012年,Zhang詳細(xì)介紹了Kinect傳感器及其應(yīng)用效果;2015年,Péter Fankhauser等評估了Kinect v2深度傳感器在移動機器人導(dǎo)航中的應(yīng)用。目前,林玲等建立了軌跡特征融合雙流模型對動態(tài)手勢進行識別;Feyziolu等將基于Xbox 360 Kinect的虛擬現(xiàn)實訓(xùn)練應(yīng)用到乳腺癌手術(shù)患者中,起到了比標(biāo)準(zhǔn)物理療法更好的治療效果;Assad-Uz-Zaman等開發(fā)了基于Kinect控制的NAO遠(yuǎn)程康復(fù)機器人,成功進行遙控操作,指導(dǎo)和演示患者實時執(zhí)行不同的手臂運動鍛煉。

        經(jīng)過多年的研究與開發(fā),課題組已將Kinect體感技術(shù)應(yīng)用于計算機、醫(yī)療、教育等各大領(lǐng)域,但在弘揚唐卡文化方面還未普及,如何以創(chuàng)新的思維方式將現(xiàn)代科技與傳統(tǒng)文化相結(jié)合,讓更多非藏族群眾了解這門藝術(shù),并把唐卡文化發(fā)展為當(dāng)代受歡迎的藝術(shù)形式,讓更多人感受到藏族人民的時代精神,是一個重大的研究課題。相較于體感技術(shù)在其他領(lǐng)域的應(yīng)用發(fā)展,文中結(jié)合Kinect傳感器討論了體感交互在唐卡文化中的應(yīng)用,通過手勢控制的體感交互方式實現(xiàn)堆繡唐卡的堆繡操作,利用Kinect采集用戶深度數(shù)據(jù)、彩色數(shù)據(jù)等,根據(jù)Kinect SDK等中間插件進行人體識別、手勢識別,利用手勢交互的方式完成堆繡操作,以掃描動態(tài)二維碼的方式保存堆繡成品到個人移動設(shè)備中。

        1 需求分析與總體設(shè)計

        1.1 需求分析

        隨著時代的發(fā)展,熱愛唐卡的人不再局限于藏傳佛教僧侶和信徒,它成為了一件藝術(shù)品,甚至工藝品,被大眾推廣,出現(xiàn)在了眾多博物館、展廳、商店以及藝術(shù)愛好者的手中。隨著唐卡愛好者不斷增多,其傳承方式也應(yīng)隨之創(chuàng)新。單純的傳承和復(fù)制傳統(tǒng)唐卡技藝,只會讓唐卡藝術(shù)發(fā)展停滯不前。結(jié)合現(xiàn)代科技,繁榮唐卡文化,才能使其可持續(xù)發(fā)展。通過手勢體感交互、二維碼交互的方式了解、傳播唐卡文化,其代入感更加明確,體驗度大大增加,能夠讓用戶以放松的心態(tài)、娛樂的方式認(rèn)識唐卡文化,體驗唐卡文化的博大精深,具有較好的現(xiàn)實意義與推廣性。

        1.2 總體設(shè)計

        本研究以Kinect體感設(shè)備為數(shù)據(jù)輸入源,以Unity3D為開發(fā)工具,通過Kinect v2 Examples with MS-SDK中間插件來完成Kinect與Unity3D兩者間的連接。依據(jù)ZXing包生成并解析二維碼,利用UI界面截圖方式將手勢實現(xiàn)的堆繡作品上傳到服務(wù)器,并對返回的Json字符串進行處理,得到的圖片鏈接后賦予二維碼,通過掃描二維碼的方式保存在個人移動設(shè)備中。系統(tǒng)框圖如圖1所示。

        系統(tǒng)架構(gòu)主要分為四部分:手勢堆繡、UI界面、二維碼實現(xiàn)以及判斷是否完成堆繡。

        (1)UI界面。

        UI界面主要分為三部分,選擇界面、堆繡界面和二維碼面板。本項目涉及到四幅堆繡唐卡圖,可以在選擇界面選擇自己喜歡的唐卡圖進行堆繡。堆繡界面是實現(xiàn)堆繡功能的主界面,由四個堆繡界面組成,這四個界面除了堆繡圖以及元素不同,其他都保持一致。

        圖1 系統(tǒng)架構(gòu)

        (2)手勢堆繡。

        手勢堆繡需要通過Kinect SDK將Kinect傳感器與PC相連接,采集用戶數(shù)據(jù),利用Kinect SDK平臺進行人體骨骼識別。在識別人體骨骼框架的基礎(chǔ)上進行手勢識別,識別到的手勢數(shù)據(jù)在PC端匹配,根據(jù)所匹配手勢動作的不同,分別實現(xiàn)手勢堆繡的不同操作。為了讓用戶的體驗不受設(shè)備影響,本項目在實現(xiàn)手勢堆繡的同時,也實現(xiàn)了鼠標(biāo)堆繡。該文將重點介紹手勢堆繡的實現(xiàn)。

        (3)二維碼實現(xiàn)。

        二維碼實現(xiàn)分為三個步驟,待堆繡完成,首先將堆繡好的唐卡圖進行屏幕的區(qū)域性截圖,并保存在本地,然后將保存到本地的截圖上傳到服務(wù)器,再根據(jù)返回的Json字符串將圖片信息賦值給生成的二維碼,完成掃碼存圖的功能。

        (4)判斷是否完成堆繡。

        堆繡面板中灰色元素代表待放置元素的線框,在堆繡元素拖動過程中,通過位置判定的方式判斷是否放置正確。如果所拖動的堆繡元素放置到對應(yīng)元素線框中,則該線框Bool值為True,否則為False。通過對元素框Bool值的判定以及完成按鈕是否被點擊的判定,判斷是否完成堆繡操作。判定為完成則彈出二維碼面板,否則返回界面,進行后續(xù)操作。

        2 系統(tǒng)架構(gòu)實現(xiàn)

        2.1 UI界面

        UI的設(shè)計與實現(xiàn)通過Unity3D軟件完成,利用C#腳本進行控制。堆繡UI界面中的背景、堆繡主面板、堆繡元素面板均通過添加Image或Raw Image組件并為其Texture屬性賦值實現(xiàn)。將堆繡元素經(jīng)Photoshop黑白圖層處理,得到灰色元素線框。用Image組件將各個元素線框放置于對應(yīng)原圖像所在位置,遮蓋原位的彩色圖像,實現(xiàn)元素線框的展示。堆繡元素面板中的每一個元素實際都是一個按鈕,在UI界面中添加十個Button物體,并在其Source Image組件中分別賦值元素圖片,即可完成元素的顯示。堆繡界面如圖2所示。

        圖2 堆繡界面

        選擇UI的實現(xiàn)方式類同于上述堆繡UI的實現(xiàn)方式,不同之處在于四個選擇按鈕的Image是動態(tài)的,選中狀態(tài)和未選中狀態(tài)展現(xiàn)不同的圖片,未選中的圖片沒有邊框,選中后的圖片用金色邊框修飾,同時用代碼控制放大選中圖片,放大倍數(shù)為1.1倍,起到突出選項的作用。選擇界面如圖3所示。

        圖3 選擇界面

        2.2 手勢堆繡

        2.2.1 Kinect連接

        本研究所使用的Kinect設(shè)備是新一代Kinect v2傳感器,與上一代Kinect v1相比,其視野更廣闊、視頻更高清、骨骼追蹤更精確,具有傳輸速度快、精確識別以及方便使用等特點,能夠滿足設(shè)計者的多種需求。傳統(tǒng)的彩色攝像頭對背景、光線等因素的要求較高,而Kinect v2傳感器對環(huán)境的適應(yīng)能力相對較強,為開發(fā)者們研究體感互動提供了極大的便利。實現(xiàn)Kinect與Unity3D的連接,需要確保Kinect傳感器與電源集線器相連接,并且電源集線器要接電,之后將Kinect設(shè)備通過USB3.0連接到PC機上。在本機PC上安裝Kinect for Windows SDK v2.0,安裝好后,本機PC上會出現(xiàn)SDK Browser應(yīng)用,打開該應(yīng)用,啟動Kinect Configure Verifier項,檢測設(shè)備是否連接成功。將Kinect For Windows Wrapper中間插件導(dǎo)入項目,并且添加Kinect Manager以及Kinect Gestures腳本于項目中的任意一個物體,實現(xiàn)Kinect與Unity3D的連接以及對Kinect的控制。

        2.2.2 人體數(shù)據(jù)采集

        Kinect能夠采集人體的多種數(shù)據(jù),對人體進行骨骼追蹤。其主要利用三個不同功能的攝像頭,分別進行拍攝范圍內(nèi)深度數(shù)據(jù)、彩色數(shù)據(jù)的采集以及紅外檢測,采集到的人體數(shù)據(jù)如圖4所示?;诓杉降纳疃葦?shù)據(jù)進行骨骼數(shù)據(jù)計算,追蹤到人體的25個關(guān)節(jié),識別人體動作。對這些數(shù)據(jù)建立編程模型,在人體識別的基礎(chǔ)上實現(xiàn)手勢識別。

        圖4 人體數(shù)據(jù)

        2.2.3 手勢識別

        手勢識別的主要依據(jù)就是提取特征參數(shù),根據(jù)不同的特征參數(shù)對手勢進行分類。手勢識別過程如圖5所示,需要在Kinect采集用戶骨骼數(shù)據(jù)的基礎(chǔ)上,添加Kinect Manager等組件,Kinect Manager功能多樣,它可以實現(xiàn)Kinect的初始化,完成數(shù)據(jù)采集工作還可以分析處理數(shù)據(jù),并且定位到人體骨骼位置,將骨骼數(shù)據(jù)進行輸出。由于Kinect Manager腳本已經(jīng)對Kinect采集到的數(shù)據(jù)進行了處理,并將各個功能封裝成函數(shù),在實現(xiàn)一些功能的時候,只需要訪問Kinect Manager組件,獲取需要的方法或?qū)傩约纯?。通過對其組件的控制,提取到手部骨骼參數(shù),生成交互數(shù)據(jù)流,識別特定手勢,實現(xiàn)對應(yīng)操作。

        編寫腳本,實現(xiàn)手勢控制功能,需要在腳本的Update函數(shù)里運用IsInitialized語句判斷設(shè)備是否準(zhǔn)備好,如果準(zhǔn)備好,即返回結(jié)果為True,再運用IsUserDetected函數(shù)判斷是否檢測到用戶。如果檢測到用戶,再運用IsJointTracked函數(shù)判斷是否追蹤到用戶右手骨骼。順利追蹤到用戶右手骨骼后,運用GetJointKinectPosition函數(shù)獲取用戶右手的世界坐標(biāo),將獲取的世界坐標(biāo)通過Camera.main.WorldToScreenPoint()方法轉(zhuǎn)換為屏幕坐標(biāo),然后再將轉(zhuǎn)換好的三維屏幕坐標(biāo)轉(zhuǎn)換為二維坐標(biāo)。之后,將此二維坐標(biāo)的位置賦予場景中設(shè)定好的手形圖標(biāo),讓手形圖標(biāo)隨著用戶右手的移動而移動。因此,場景中手形圖標(biāo)的運動狀態(tài)即為用戶手勢的運動狀態(tài)。

        圖5 手勢識別

        activeInHierarchy函數(shù)判斷元素按鈕的激活狀態(tài)、RectangleContainsScreenPoint函數(shù)判斷手形圖標(biāo)位置是否在元素按鈕圖標(biāo)范圍內(nèi)。以上兩個條件都滿足時,可實現(xiàn)手勢拖動后續(xù)操作。當(dāng)手勢狀態(tài)為Close(握拳)狀態(tài),并且元素按鈕名稱為當(dāng)前拖動元素名稱時,元素的父物體轉(zhuǎn)換為主面板,元素的位置時刻置為手勢圖標(biāo)的位置,完成手勢獲取元素功能。手勢狀態(tài)為Open(張開)狀態(tài)時,判斷手勢圖標(biāo)及拖動元素是否在當(dāng)前拖動元素的線框范圍內(nèi),如果在線框范圍內(nèi),則將當(dāng)前元素位置轉(zhuǎn)換為線框位置,完成放置正確元素吸附功能;如果不在線框范圍內(nèi),元素父物體轉(zhuǎn)換為本身設(shè)定好的父物體,元素位置設(shè)置為本身父物體位置,將元素歸位。元素拖動期間,倘若用戶丟失或者手勢丟失,同樣將元素歸位。手勢堆繡過程如圖6所示。

        圖6 堆繡過程

        通過訪問Kinect Manager腳本組件,實現(xiàn)Kinect與Unity3D的連接,通過腳本的編寫,得到用戶的手勢信息,從而實現(xiàn)手勢交互的功能。手勢識別過程關(guān)鍵代碼如下:

        //第1步:判斷設(shè)備是否準(zhǔn)備就緒。

        bool IsInit=KinectManager.Instance.Is-Initialized();

        //第2步:判斷是否檢測到用戶。

        bool IsUser=KinectManager.Instance.I-sUserDetected();

        //第3步:獲取用戶ID。

        Long UserID=KinectManager.Instance.GetPrimaryUserID();

        //第4步:檢測用戶右手骨骼。

        bool HandRightSkel=KinectManager.

        Instance.IsJointTracked(UserID,(int)KinectInt-erop.JointType.HandRight);

        //第5步:獲取右手位置坐標(biāo)。

        Vector3 RightHandPos=KinectManage-r.Instance.GetJointKinectPosition(UserID, (int)KinectInterop.JointType.HandRight);

        //第6步:檢測右手手勢,執(zhí)行對應(yīng)操作。

        KinectInterop.HandState RightHandState=KinectManager.Instance.GetRightHandSta-te(UserID);

        if(RightHandState==KinectInterop.H-andState.

        Closed)

        {

        print(“右手握拳”);

        ……

        }

        2.3 二維碼實現(xiàn)

        2.3.1 屏幕截圖

        場景中設(shè)置三個空物體,第一個物體位于主面板左下角,第二個物體位于主面板右下角,第三個物體位于主面板左上角。主面板的寬等于第二個物體的X坐標(biāo)減去第一個物體的X坐標(biāo),主面板的高等于第三個物體的Y坐標(biāo)減去第一個物體的Y坐標(biāo)。創(chuàng)建一個RGB24位格、大小等于主面板寬高的Texture2D紋理,運用ReadPixels函數(shù)讀取屏幕指定范圍內(nèi)的內(nèi)容到自定義的紋理當(dāng)中。執(zhí)行Apply函數(shù)保存紋理,運用EncodeToPNG函數(shù)將紋理編碼為PNG格式,通過File.WriteAllBytes()函數(shù)將截圖以指定名稱保存到指定位置。

        2.3.2 圖片上傳

        用String字符串獲取截圖保存路徑,UnityWebRequest.Get()方法可獲取該路徑圖片的字節(jié)數(shù)組。開辟一個WWWForm類,運用AddBinaryData函數(shù)在實例化的WWWForm中添加圖片的字節(jié)數(shù)據(jù)。通過網(wǎng)絡(luò)請求UnityWebRequest的Post方法,將圖片上傳到服務(wù)器。上傳成功后,服務(wù)器將返回Json字符串,返回的Json字符串中包含三個鍵值對,分別為code代碼、msg提示信息和data數(shù)據(jù)。data數(shù)據(jù)對應(yīng)的值為圖片上傳后的鏈接,通過Split字符串分割方法截取Json字符串中的圖片地址鏈接,保存到一個新的字符串中,以便后續(xù)二維碼展示過程中使用。

        2.3.3 生成二維碼

        ZXing由Java語言所實現(xiàn),可以生成和解析二維碼,內(nèi)容開源,能夠為其他語言提供接口,可以對各類條形碼進行圖像處理。生成二維碼需要下載ZXing中的ZXing.unity.dll插件,導(dǎo)入Unity3D項目中,提供生成二維碼的類庫,然后添加與二維碼相關(guān)的頭文件,引用ZXing和ZXing.QrCode命名空間。之后添加Color32類型的函數(shù),實例化一個BarcodeWriter二維碼讀寫控件,設(shè)置二維碼格式和區(qū)域大小。生成二維碼后的效果如圖7所示。

        圖7 二維碼面板

        本研究的二維碼格式為QR_CODE,QR code格式的二維碼應(yīng)用比較廣泛,有著極其廣泛的編碼范圍和非常大的信息存儲量。調(diào)用Encode方法對圖片進行二維碼生成,返回Color32數(shù)組,通過SetPixels32函數(shù)將返回的Color32數(shù)組設(shè)置到創(chuàng)建好的Texture2D紋理中。通過UI界面中添加一個Raw Image物體,并將生成的二維碼圖片紋理賦值給此物體,實現(xiàn)二維碼在UI界面中的展示。

        3 實驗結(jié)果

        為驗證本研究的可行性與有效性,文中進行了指定距離范圍內(nèi)有效的拖動堆繡元素的實驗。指定距離指用戶與Kinect傳感器之間的距離,Kinect在1.5 m~2 m自身識別效果相對較好,因此實驗距離范圍設(shè)定為1.5 m~2 m。選取5名測試者,平均身高為160.6 cm。每位測試者需要在這一距離段內(nèi)分別完成20次測試,并記錄對應(yīng)堆繡成功次數(shù),共測試100次,完成本次實驗,之后計算出不同距離段的平均有效率。指定距離段手勢拖動元素的有效率如表1所示。

        表1 有效率

        實驗測試結(jié)果顯示,文中在Unity3D中所實現(xiàn)的基于Kinect的唐卡圖像交互設(shè)計應(yīng)用是可行的,識別率較高,平均有效率高達93%,能夠有效地實現(xiàn)堆繡唐卡的堆繡操作。

        4 結(jié)束語

        本研究利用微軟公司的Kinect傳感器采集人體數(shù)據(jù),以Unity3D軟件為開發(fā)平臺搭建人機交互界面,通過Kinect SDK等中間插件實現(xiàn)對人體的骨骼追蹤和識別。在人體骨骼識別的基礎(chǔ)上進行手勢識別,再根據(jù)識別出的不同手勢進行對應(yīng)的堆繡操作,并以掃描二維碼的方式保存堆繡作品,具有很好的交互性。實驗結(jié)果表明,本研究能夠有效地實現(xiàn)堆繡唐卡的堆繡操作,相對于傳統(tǒng)的唐卡文化傳播方式,本研究能夠?qū)F(xiàn)代科技與傳統(tǒng)文化相結(jié)合,借助體感交互的趣味性,激發(fā)用戶對唐卡藝術(shù)的學(xué)習(xí)和探究欲,讓唐卡文化與時俱進,推陳出新。

        該文只涉及到了唐卡文化中的堆繡文化,而且只用到了體感交互中的手勢交互。因此,不論是唐卡文化的拓展,還是體感技術(shù)的推進,都有很大的發(fā)展空間。

        猜你喜歡
        界面用戶
        國企黨委前置研究的“四個界面”
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
        空間界面
        金秋(2017年4期)2017-06-07 08:22:16
        電子顯微打開材料界面世界之門
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        人機交互界面發(fā)展趨勢研究
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        手機界面中圖形符號的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        Camera360:拍出5億用戶
        中文字幕人成乱码熟女| 亚洲国产精品色一区二区| 精品亚洲一区二区三洲| 无码乱肉视频免费大全合集| 玩弄放荡人妻少妇系列| 国产免费无遮挡吸奶头视频| 精品无码中文视频在线观看| 国产精品亚洲片夜色在线| 偷拍与自偷拍亚洲精品| 亚州av高清不卡一区二区| 精品视频在线观看日韩| 亚洲精品v欧洲精品v日韩精品| 日本道精品一区二区三区| 久久88综合| 99在线国产视频| 一卡二卡国产av熟女| 又大又长粗又爽又黄少妇视频| 一本一道波多野结衣一区| 手机色在线| 日韩精品一区二区亚洲观看av| 中文字幕亚洲综合久久菠萝蜜| 国产精品区一区第一页| yw193.can尤物国产在线网页| 区一区二区三免费观看视频 | 中文字幕亚洲视频三区| 中文字幕一区二区三区四区五区| 青草视频在线播放| 精品少妇一区一区三区| 国内自拍视频在线观看h| 丁香花五月六月综合激情| 妺妺窝人体色www看人体| 亚洲精品自产拍在线观看| 国产熟女自拍视频网站| 国产亚洲3p一区二区| 久久无码潮喷a片无码高潮 | 精品国产三级a∨在线欧美| 国产精品www夜色视频| 亚洲一区二区三区在线网站| 蜜桃视频高清在线观看| 午夜人妻久久久久久久久| 亚洲av无码不卡|