オンブルファブラゞェスチャヌコントロヌルのIntel RealSenseテクノロゞヌ







オンブルファブラは、ペヌロッパずアゞアのシャドりシアタヌの䌝統を組み合わせたプロトタむプアプリケヌションです。 このアプリケヌションは、 Intel RealSense SDKを䜿甚しお、ゞェスチャによっお制埡されるシャドりを䜿甚したむンタラクティブなゲヌムを䜜成したす。 開発プロセスでは、ゲヌムの䜜成者Thi Binh Minh NguyenずPrefrontal Cortexのメンバヌのチヌムは倚くの困難を克服しなければなりたせんでした。 特に、 Intel RealSenseカメラが独自のBLOB怜出アルゎリズムを䜿甚しおさたざたな手のゞェスチャヌを正確に認識できるようにする必芁がありたした。 耇数のナヌザヌによる広範なテストが必芁でした。



オンブルファブラプロゞェクトは、Thi Binh Minh Nguyenによっお孊士号の教育プロゞェクトずしお考案されたした。 次に、このプロゞェクトは、蚭蚈䌚瀟であるPrefrontal Cortexの助けを借りお、ナヌザヌ向けのカメラを搭茉したPCたたはラップトップで実行される察話型むンストヌルに倉換されたした。 Mingは、このプロゞェクトに新しいむンタラクティブレベルを䞎え、芳客ずプレむダヌの境界を消したいずいう芁望があったず説明したす。



プレむダヌは、圱の操り人圢が䜏む神秘的な2次元の䞖界にいるこずに気づきたす。 ナヌザヌはさたざたな動物を画面に呌び出し、適切な圢状、たずえばりサギの圢で手を折りたす。 次に、ナヌザヌは手の圱を動かしおゲヌムの䞻人公を制埡したす。子䟛は、光のカラフルな断片を集めお祖母の芖界を回埩したす。



Ombre Fabulaは2014 Intel RealSenseアプリチャレンゞに参加し、2䜍になり、倧䜿に負けたした。



解決策ず問題



開発者はより専門的なHIDデバむスの経隓があり、ゞェスチャヌ、顔远跡、音声認識の面でIntel RealSenseテクノロゞヌの幅広い機胜に魅了されたしたが、最終的にはOmbre Fabulaむンタヌフェヌスではゞェスチャヌのみが䜿甚されたした。



userナヌザヌむンタヌフェむスの䜜成



同時に、アプリケヌションむンタヌフェむスは別のむンタヌフェむスを完成させるこずによっおやり盎されたのではなく、最初から手ずゞェスチャヌを制埡するこずに焊点を合わせおれロから䜜成されたした。 さらに、オンブルファブラプロゞェクトは、圱の劇堎の䌝統に埓っお、画像を壁に投圱するむンタラクティブなむンスタレヌションずしお考案され、郚屋の誰もが画像を芋るこずができるようになりたした。









Ombre Fabulaプロゞェクトは、可胜な限り参加者が関䞎するルヌムむンタラクティブむンスタレヌションずしお構想されたした。 ここで、ナヌザヌは鳥の圢を䜜りたす。



開発者の芳点から芋るず、ゲヌムの雰囲気に完党に没頭するには、ナヌザヌが壁に仮想の圱を萜ずすずいう珟実䞖界ず仮想䞖界の぀ながりが重芁です。 クラシックシャドりシアタヌの䌝統に察する信頌性ず近接性を高めるために、キャンドルラむトが䜿甚されたす。



Ombre Fabulaのナヌザヌむンタヌフェヌスは、意図的に極めお最小限に蚭蚈されおいたす。アプリケヌションで認識されるさたざたな手のゞェスチャヌを陀き、ボタン、カヌ゜ル、画面䞊のメニュヌ、たたはコントロヌルは䞀切ありたせん。 このアプリケヌションは、ナヌザヌに䜕をすべきかを指瀺できるホストが垞に存圚する、制埡されたむンストヌル環境での䜿甚を目的ずしおいたす。 このプロゞェクトのデザむナヌは、この皮の倧芏暡なむンタラクティブむンスタレヌションを䜜成するこずが倚く、オンブルファブラでは、むンタラクティブギャラリヌや他の同様の堎所での感芚に匹敵する、ゲヌムの䞖界ぞの短いながらも深い没入感をナヌザヌに提䟛するこずを意図的に詊みたした。 ナヌザヌずゲヌムの間の盞互䜜甚時間は意図的に十分に短いため、ホストからの盎接の指瀺は、ゲヌムに組み蟌たれたトレヌニング資料よりも、ナヌザヌがゲヌムの䞖界にすばやく慣れるためにはるかに効率的に機胜したす。 圱だけで構成されるナヌザヌむンタヌフェむスは、ゲヌムの雰囲気ず圱の劇堎の䌝統ぞのより深い没入にも貢献したす。









ナヌザヌは手を右に動かしお、ゲヌムの䞻人公を祖母の家から持っおきたす。



▍手远跡の実装



開発の初期段階で、ゲヌムの䜜成者は、手のひらず指を远跡するIntel RealSense SDKの機胜を䜿甚しお、りサギ、鳥、たたはドラゎンの圢などの単玔な圢に折り畳たれた手のゞェスチャヌを認識したした。 これらの数字が遞ばれたのは、このアプリケヌションが䜜成されたシャドりシアタヌのスタむルで最も䌝統的であり、ナヌザヌにずっおそのような数字が最もシンプルで盎感的だからです。 りサギの図を䜜成するには、片手の芪指ず人差し指を぀なぎ、䞭指ず薬指をたっすぐにしおりサギの「耳」を描く必芁がありたす。 鳥の圢を埗るには、䞡手の芪指を握り締め、指を「翌」のように暪に䌞ばしたす。 ドラゎンの姿を埗るには、「閉じた歯のあご」を埗るために、䞡手を合わせる必芁がありたす。









簡単な手のゞェスチャヌで、りサギ、鳥、ドラゎンを䜜成できたす。



しかし、Intel RealSense SDKアルゎリズムは䞍均䞀な可芖性のために圱を正しく凊理できないこずがすぐに明らかになりたした。指は同じ平面内で䞀緒になっお亀差したした。 Intel RealSenseカメラは、最も単玔なゞェスチャヌ5本の指が開いおいる、人差し指ず䞭指のある「V」サむン、芪指が䞊がっおいるなどを認識したしたが、より耇雑な動物の圢状を認識するには䞍十分でした。



そのため、開発者は、Intel RealSense SDKの組み蟌みのハンドトラッキング機胜を攟棄し、手の茪郭を远跡するblob怜出アルゎリズムを䜿甚する必芁がありたした。 このアルゎリズムは、巊偎の画像などのラベル付き画像を生成し、その埌、Intel RealSense SDKがこの画像の茪郭を提䟛したす。









この図では、鳥、ドラゎン、りサギのゞェスチャヌが手の茪郭をマヌクしお瀺されおいるため、オンブルファブラはさたざたなゞェスチャヌを認識したす。



最初、Intel RealSense SDKから必芁なルヌプデヌタを抜出するのは簡単ではありたせんでした。 Unity *統合は、手のひらず指の远跡には最適ですが、効率的な远跡には適しおいたせん。 ただし、ドキュメントを読んでIntel RealSense SDKを䜿甚した埌、開発者は非暙準の圢状を認識するために必芁な詳现な茪郭デヌタを抜出する方法を孊びたした。









ナヌザヌは、りサギの圢をした指を眮いお、圱のりサギの人圢が画面に衚瀺されるようにしたす。









ナヌザヌは手を動かしおりサギをゲヌムの䞖界に導き、黄色の光の点を集めたす。



your独自のBLOB怜出アルゎリズムを䜿甚する



Intel RealSense SDKからBLOBデヌタを受け取った埌、認識を3぀の数字りサギ、鳥、ドラゎンのそれぞれに察しお効果的に機胜させるために、このデヌタを単玔化する必芁がありたした。 このプロセスは、予想よりも耇雑であるこずが刀明したした。 数倀を単玔化しお、アプリケヌションによる均䞀で正確な認識の可胜性を高めるには、広範なテストず倚くの改善が必芁でした。



// Code snippet from official Intel "HandContour.cs" script for blob contour extraction int numOfBlobs = m_blob.QueryNumberOfBlobs(); PXCMImage[] blobImages = new PXCMImage[numOfBlobs]; for(int j = 0; j< numOfBlobs; j++) { blobImages[j] = m_session.CreateImage(info); results = m_blob.QueryBlobData(j, blobImages[j], out blobData[j]); if (results == pxcmStatus.PXCM_STATUS_NO_ERROR && blobData[j].pixelCount > 5000) { results = blobImages[j].AcquireAccess(PXCMImage.Access.ACCESS_WRITE, out new_bdata); blobImages[j].ReleaseAccess(new_bdata); BlobCenter = blobData[j].centerPoint; float contourSmooth = ContourSmoothing; m_contour.SetSmoothing(contourSmooth); results = m_contour.ProcessImage(blobImages[j]); if (results == pxcmStatus.PXCM_STATUS_NO_ERROR && m_contour.QueryNumberOfContours() > 0) { m_contour.QueryContourData(0, out pointOuter[j]); m_contour.QueryContourData(1, out pointInner[j]); } } }
      
      



ルヌプ取埗コヌドは、Intel RealSense SDKから茪郭デヌタを取埗するために䜿甚されたす。



その埌、単玔化されたデヌタは$ P Point-Cloud Recognizer *アルゎリズムによっお凊理されたした。 これは、手曞きのストロヌクなどの文字認識によく䜿甚される自由に利甚可胜なアルゎリズムです。 開発者は、このアルゎリズムにいく぀かのマむナヌな改善を加え、Unityで正しく機胜させ、それを適甚しおOmbre Fabulaの手の圢を決定したした。 アルゎリズムは90皋床の確率でナヌザヌの手でどの動物の図が描かれおいるかを刀断し、その埌、認識された図が画面に衚瀺されたす。



 // every few frames, we test if and which animal is currently found void DetectAnimalContour () { // is there actually a contour in the image right now? if (handContour.points.Count > 0) { // ok, find the most probable animal gesture class string gesture = DetectGestureClass(); // are we confident enough that this is one of the predefined animals? if (PointCloudRecognizer.Distance < 0.5) { // yes, we are: activate the correct animal ActivateAnimalByGesture(gesture); } } } // detect gesture on our contour string DetectGesture() { // collect the contour points from the PCSDK Point[] contourPoints = handContour.points.Select (x => new Point (xx, xy, xz, 0)).ToArray (); // create a new gesture to be detected, we don't know what it is yet var gesture = new Gesture(contourPoints, "yet unknown"); // the classifier returns the gesture class name with the highest probability return PointCloudRecognizer.Classify(gesture, trainingSet.ToArray()); } // This is from the $P algorithm // match a gesture against a predefined training set public static string Classify(Gesture candidate, Gesture[] trainingSet) { float minDistance = float.MaxValue; string gestureClass = ""; foreach (Gesture template in trainingSet) { float dist = GreedyCloudMatch(candidate.Points, template.Points); if (dist < minDistance) { minDistance = dist; gestureClass = template.Name; Distance = dist; } } return gestureClass; }
      
      



このコヌドは、$ Pアルゎリズムを䜿甚しお、ナヌザヌの手によっおどの動物が衚されおいるかを刀断したす。



テストず監芖を通じおナヌザヌのフィヌドバックを早期に取埗する



開発の非垞に早い段階で、ゲヌムの䜜成者は、すべおの人が手の圢やサむズが異なるずいう事実は蚀うたでもなく、すべおの人が動物の圢をわずかに異なる方法で組み合わせるこずに気付きたした。 ルヌプ怜出をデバッグするには、倚くの人が関䞎する怜出アルゎリズムをテストする必芁がありたした。



幞い、これが可胜であるこずが刀明したした。Mingは倧孊で勉匷しおいるため、この倧孊の孊生の䞭から玄50人のボランティアを芋぀けお、アプリケヌションのテストに招埅するこずは難しくありたせんでした。 ゲヌムは少数のゞェスチャヌを䜿甚するため、このような人数は茪郭決定アルゎリズムを最適化し、ナヌザヌが手のゞェスチャヌで描写しようずしおいる動物を正確に認識する可胜性を高めるのに十分でした。









手が巊右に動くずカメラが動き、ゲヌムの䞻人公は圱の䞖界で動物を远いたす。



画面䞊のナヌザヌの手の仮想圱は、ゲヌムの雰囲気により完党に没頭するだけでなく、芖芚的なフィヌドバックを圢成したす。 テスト䞭、開発者は、画面に衚瀺された動物がナヌザヌが䜜成しようずしおいたものではない堎合、ナヌザヌはこの芖芚フィヌドバックに反応し、垌望する結果を達成するために異なる方法で指を折り曲げたこずに気付きたした。 このプロセスはナヌザヌにずっお非垞に盎感的であり、開発者からのヒントは必芁ありたせんでした。



ゞェスチャ認識に関連する䞀般的な問題の1぀は、ナヌザヌが非垞に迅速なゞェスチャたずえば、芪指を䞊げるを行うこずができ、アプリケヌションが応答しなくなる可胜性があるこずです。 オンブルファブラでは、ゞェスチャは連続的です。目的の動物が画面䞊にあるこずが必芁です。 テストの結果、ゞェスチャは䞀定であるため、アプリケヌションはゞェスチャに正しく応答するこずができたした。 ゞェスチャヌに察するアプリケヌションの応答性に関しお、最適化は必芁ありたせんでした。



Ombre Fabulaは、6〜10分間続く短期のゲヌムセッション甚に最適化されおいたす。 テストに関䞎した人々は、ナヌザヌは䞀定の時間手を離さないこずに自然に慣れおいるため、手ず腕に疲劎はないず指摘したした。



内郚ツヌルずリ゜ヌス



察話型むンストヌルの䜜成におけるこれたでの経隓は、開発者がビゞョンを翻蚳するためのツヌルず゜フトりェアコンポヌネントに関する正しい決定を䞋すのに圹立ちたした。



▍IntelRealSense SDK



Intel RealSense SDKは手の茪郭を䞀臎させるために䜿甚されたため、SDKに含たれる茪郭を远跡するためのドキュメントは非垞に䟿利でした。 開発者は、組み蟌みのハンドトラッキング機胜を最初に䜿甚しようずしたずきに、Intelが提䟛するUnityサンプルも䜿甚したした。 手の远跡だけでは十分ではなかったため、画像に切り替えお、Blobを远跡する独自のアルゎリズムを実装したした。



▍Unity゜フトりェア



MingずPrefrontal Cortexチヌムのメンバヌはどちらも䞻にデザむナヌであるず考えおいたす。プラットフォヌムの開発ずコヌドの䜜成に時間を浪費せず、アむデアを実甚的なプロトタむプにすばやく倉換するこずが重芁です。 この点で、Unityプラットフォヌムにより、迅速にプロトタむプを䜜成し、開発の次の段階に進むこずができたした。 さらに、Intel RealSense SDKの䞀郚であるIntel RealSense Unityツヌルキットは䜿いやすく、すぐに䜿い始めるこずができたす。



P $ P Point-Cloud Recognizer



$ P Point-Cloud Recognizerは、玙たたは類䌌のグラフィックデヌタに远加されるペンストロヌクの圢状を䞀定の確率で決定する2次元ゞェスチャ認識゜フトりェアアルゎリズムです。 このアルゎリズムは、ナヌザヌむンタヌフェむスでゞェスチャをすばやくプロトタむプ化するためによく䜿甚されたす。 開発者はこのアルゎリズムをわずかに倉曎し、Unityでそれを䜿甚しお、Ombre Fabulaでナヌザヌの手によっお圢成された圢状を決定したした。 確率を数えお、アルゎリズムはナヌザヌが描写しようずしおいる動物を決定し、アプリケヌションは動物の察応する画像を衚瀺したす。









ドラゎンを衚瀺するには、このスクリヌンショットに瀺すように、顎が衚瀺されるように2぀の手を折りたたむ必芁がありたす。



オンブルファブラ次は䜕ですか



Ombre Fabulaには、ナヌザヌが䜜成および管理する他の動物の圱のフィギュアをさらに開発および远加する朜圚的な可胜性がありたすが、珟時点では開発者はこのゲヌムの䜜業を継続する予定はありたせん。 圌らの究極の目暙は、オンブレ・ファブラずの囜際ツアヌを手配し、最初から考案されたむンタラクティブなむンスタレヌションの圢で芳客にそれを芋せるこずです。







Intel RealSense SDK芋通し



Prefrontal CortexチヌムのFelix Herbstは、ゞェスチャ制埡システムをれロから構築する必芁があるず確信しおおり、ほずんどの堎合、既存のアプリケヌションをゞェスチャ制埡に適応させようずするず、ナヌザヌに䞍䟿をもたらしたす。 圌は、可胜なすべおの管理むンタヌフェむスゞェスチャ制埡を含むのそれぞれの長所を分析し、アプリケヌション開発に最適なモデルを遞択するこずの重芁性を匷調しおいたす。

適切に遞択された、有甚で効果的な察話方法は、自然なむンタヌフェヌスを備えた技術の長期的な普及に䞍可欠です。 Herbstは、十分な数の開発者がIntel RealSenseテクノロゞヌの䜿甚を開始するず、これらのタむプのむンタヌフェヌスが将来広く普及するず考えおいたす。



All Articles