這個(gè)周末看了兩天的微軟Build 2012大會(huì),真的是一次盛會(huì),上面有很多的演講主題,都是微軟相關(guān)技術(shù)和產(chǎn)品的最新動(dòng)態(tài),我比較關(guān)注.NET、WPF、Office及Kinect相關(guān)開發(fā),上面的演講視頻和屁屁踢都可以下載,個(gè)人覺得比較精彩的有The Evolution of .NET ,回顧了微軟推出.NET以來的歷次開發(fā)者大會(huì)推出的新版本和新特性,里面還有10多年前比爾蓋子老師在開發(fā)者大會(huì)上宣布.NET戰(zhàn)略時(shí)的演講視頻,不覺得感嘆歲月是把殺豬刀啊。 What's New for Developers in Office 2013 and SharePoint 2013 介紹了不同于以往的以VBA,SharedAddIn,以及VSTO的全新的Office開發(fā)方式OfficeApp,Building apps for Office and SharePoint 2013 using the web technologies you know and love, Part 1、Part2介紹了如何使用各種我們熟悉的技術(shù)如Html、Javascript、C#等來構(gòu)建OfficeApp。上面還有很多關(guān)于Windows Phone 8,WPF4.5等相關(guān)的介紹,主題很多,強(qiáng)烈建議大家有空可以上去看看。
大會(huì)上關(guān)于Kinect開發(fā)有三個(gè),第一個(gè)是微軟研究院講的Super-Natural Interaction這個(gè)屁屁踢比演講視頻都大,達(dá)到了罕見的997M,為啥這么大呢,因?yàn)槔锩媲度肓艘粋(gè)長(zhǎng)達(dá)40分鐘視頻,哈哈,這個(gè)演講主要演示了微軟研究院正在進(jìn)行的各種人機(jī)交互,虛擬現(xiàn)實(shí)等研究,非常的Cutting-edge,里面也有和Kinect相關(guān)的部分,有興趣的可以看看。第二個(gè)是Kinect Design Considerations,一則關(guān)于Kinect應(yīng)用程序設(shè)計(jì)是應(yīng)該考慮的問題比如交互方式的設(shè)計(jì)的演講,我沒有太仔細(xì)看,不過內(nèi)容應(yīng)該和Kinect Human Interface Guideline內(nèi)容差不多,您可以在Kinect Developer Toolkit中查看。第三篇演講是 Kinect for Windows Programming Deep Dive 我將這個(gè)翻譯為了深入理解Kinect for Windows開發(fā),相對(duì)來說該演講和Kinect開發(fā)比較相關(guān),現(xiàn)與大家分享,該演講上面寫的級(jí)別為 300-advanced,個(gè)人覺得這個(gè)演講內(nèi)容其實(shí)很簡(jiǎn)單,只是對(duì)Kinect能夠獲取的相關(guān)數(shù)據(jù)源,Kinect SDK處理過了的可供識(shí)別的數(shù)據(jù)源,以及未來的趨勢(shì)和大家做了一下介紹。Kinect SDK中其實(shí)沒有太多的東西,真正的則在于各種模式識(shí)別算法,比如通過深度數(shù)據(jù),紅外數(shù)據(jù),進(jìn)行各種物體識(shí)別等等,有了這些數(shù)據(jù),尤其是1.6版本的SDK提供的獲取紅外原始數(shù)據(jù),就可以通過這個(gè)數(shù)據(jù),結(jié)合深度數(shù)據(jù)做出很多非常令人驚嘆的應(yīng)用來。廢話不多說了,下面和大家分享一下該演講的主要內(nèi)容,也算是一個(gè)關(guān)于Kinect開發(fā)的比較好的入門介紹吧。
一 大綱
演講大體分為5個(gè)部分,第一部分介紹了Kinect SDK的開發(fā)方式以及運(yùn)行環(huán)境,第二部分是寫代碼,講解Kinect中的一些彩色,深度,骨骼等數(shù)據(jù)的處理和顯示,第三部分講解了傳感器直接產(chǎn)生的數(shù)據(jù)流,包括彩色,深度,紅外,語音,加速器數(shù)據(jù)源,第四部分講解了經(jīng)過Kinect SDK對(duì)原始數(shù)據(jù)流處理后的可供用來進(jìn)行直接識(shí)別的,骨骼,語音及面部識(shí)別數(shù)據(jù)源,最后一部分講解了未來Kinect可進(jìn)行的一系列應(yīng)用,F(xiàn)在先來看第一部分吧。
二 Kinect應(yīng)用場(chǎng)景及開發(fā)環(huán)境
首先介紹了一下Kinect的應(yīng)用場(chǎng)景。主要有三大類方面的應(yīng)用。第一是自然人機(jī)交互界面。比如說一些像少數(shù)派報(bào)告中的那種用手指非接觸即可操縱大屏幕上的顯示內(nèi)容。這在一些高科技或者科幻類電影中經(jīng)常能夠看到這類的場(chǎng)景。還有一些就是在國(guó)外已經(jīng)有的應(yīng)用如Kinect虛擬試衣間,Kinect車展演示廣告,Kinect 手術(shù)室影像操作,還有Kinect操作幻燈片,Kinect進(jìn)行照片瀏覽 等等,這些自然人機(jī)交互界面的應(yīng)用帶來了新的用戶體驗(yàn)。第二種是自然環(huán)境識(shí)別,比如根據(jù)Kinect 產(chǎn)生的深度數(shù)據(jù),紅外數(shù)據(jù)對(duì)物體進(jìn)行三維掃描重建,利用Kinect進(jìn)行機(jī)器人導(dǎo)航進(jìn)行障礙物自動(dòng)回避等。第三種是自然用戶的識(shí)別,比如說利用Kinect來進(jìn)行姿勢(shì)識(shí)別,人臉識(shí)別。比如說一些大家比較熟悉的XBOX360 中的 舞林大會(huì),運(yùn)動(dòng)會(huì),大冒險(xiǎn)等體感游戲,這些都是利用Kinect的一些數(shù)據(jù)來進(jìn)行用戶的動(dòng)作識(shí)別,從而參與到游戲中的互動(dòng)。還有一些增強(qiáng)現(xiàn)實(shí)的應(yīng)用,利用了上面的三個(gè)方面的特性,比如說利用Kinect來將熒幕變成觸摸屏,并在上面可以進(jìn)行各種操作,等等應(yīng)用。
要開發(fā)上面的應(yīng)用,首先要了解一下開發(fā)環(huán)境,如這張幻燈片所示:
Kinect 提供了非托管(C++)和托管(.NET)兩種開發(fā)方式的SDK,如果您用C++開發(fā)的話,需要安裝Speech Runtime(V11),Kinect for Windows Runtime和驅(qū)動(dòng)的,如果您使用C#和VB.NET的話,需要Microsoft.Kinect.dll和Mirosoft.Speech.dll兩個(gè)dll,這兩個(gè)其實(shí)是對(duì)前C++里面的兩個(gè)dll的.NET封裝,不論何種開發(fā),您都需要安裝driver,所有這些都包含在Kinect SDK安裝包中,安裝方法您可以參考之前的文章。Kinect開發(fā)支持Windows7/Windows Embedded Standard/Windows8操作系統(tǒng),最新的1.6版本的SDK還支持虛擬機(jī)里面的Windows系統(tǒng),不過只要年代不太久遠(yuǎn)的Windows系統(tǒng)應(yīng)該都是可以的。上面寫的最好使用.NET 4.0/4.5也只是建議,老版本的應(yīng)該也行。如果是使用.NET開發(fā)方式的話,您需要安裝.NET Framework,IDE可以使用Visual Studio 2010/2012。
三 代碼演示
這部分主要是通過編寫代碼演示Kinect的各項(xiàng)功能,代碼我在這里就不講了。
首先第一個(gè)演示是顯示彩色影像,比較簡(jiǎn)單。然后是結(jié)合深度影像數(shù)據(jù)顯示彩色影像數(shù)據(jù)上對(duì)應(yīng)某一點(diǎn)的深度值。
圖上使用鼠標(biāo)點(diǎn)擊就能夠加上一個(gè)標(biāo)簽,標(biāo)簽里面的值是該點(diǎn)的深度值,這個(gè)功能應(yīng)該是比較好實(shí)現(xiàn)的,主要是展示如何使用彩色影像數(shù)據(jù)和深度數(shù)據(jù),您如果感興趣的話看完這篇文章應(yīng)該就能實(shí)現(xiàn)這個(gè)功能。
然后演示了骨骼追蹤功能,圖中追蹤了頭部,雙手的位置,并顯示了兩只手所處的深度值,頭部上顯示的Tracking ID,Kinect能同時(shí)追蹤6個(gè)待選目標(biāo),但只有兩個(gè)目標(biāo)處于活動(dòng)狀態(tài)。每一次追蹤都會(huì)分配給目標(biāo)一個(gè)Tracking ID。
這個(gè)功能主要演示了如何使用骨骼數(shù)據(jù),您如果感興趣的話看完這篇文章應(yīng)該就能實(shí)現(xiàn)這個(gè)功能。
除了1.5及之前能夠提供的各種數(shù)據(jù)之外,1.6 的SDK提供了紅外影像數(shù)據(jù),您可以利用數(shù)據(jù)校準(zhǔn)彩色影像數(shù)據(jù),使得在較暗的條件下也能夠進(jìn)行人物識(shí)別。其實(shí)Kinect骨骼識(shí)別主要是通過深度數(shù)據(jù)來實(shí)現(xiàn)的,而深度數(shù)據(jù)是通過紅外發(fā)射接收產(chǎn)生的,1.6版本的SDK提供了我們直接訪問和操作紅外數(shù)據(jù)的能力。
第四個(gè)Demo是演示了Kinect的面部識(shí)別功能,Kinect的面部識(shí)別是在1.5 SDK中引入的,面部識(shí)別可以識(shí)別最多達(dá)一百多個(gè)面部特征點(diǎn),下面是演示的Demo:
上面的功能在Kinect Developer Toolkit中有實(shí)例和源代碼,您可以下載查看,入門的話,您也可以看這篇文章,比較簡(jiǎn)單的對(duì)使用FaceTracking的一點(diǎn)介紹。
Kinect除了這些功能之外還有強(qiáng)大的語音識(shí)別功能,在這篇演講中沒有演示出來,不過在Super-Natural Interaction這篇演講的視頻中,您可以體會(huì)該改功能的強(qiáng)大,Kinect語音識(shí)別不僅能夠識(shí)別出聲音,而且還能對(duì)聲音的來源方向進(jìn)行識(shí)別,且具有強(qiáng)大的去噪增強(qiáng)功能,要了解這些你可以看這篇文章,對(duì)Kinect的語音識(shí)別做了一些簡(jiǎn)單的介紹。
四 Kinect數(shù)據(jù)源及應(yīng)用
Kinect開發(fā)涉及到的數(shù)據(jù)源分為兩類:
一類是傳感器本身產(chǎn)生的原始數(shù)據(jù)源,比如說彩色影像數(shù)據(jù)源,深度影像數(shù)據(jù)源,語音數(shù)據(jù)源,紅外影像數(shù)據(jù)源,加速計(jì)數(shù)據(jù)源,其中紅外影像數(shù)據(jù)源,加速計(jì)數(shù)據(jù)源是在1.6的SDK中新加入的。下面這張圖很好的說明了各個(gè)數(shù)據(jù)源:
第二類數(shù)據(jù)源是,SDK中通過一些算法識(shí)別出來的可以直接拿來進(jìn)行識(shí)別的數(shù)據(jù)源,他們包括:骨骼追蹤,語音識(shí)別,面部識(shí)別數(shù)據(jù)源。
可以看到,骨骼追蹤數(shù)據(jù)源是在深度影像數(shù)據(jù)源的再通過一系列算法實(shí)現(xiàn)的,語音識(shí)別是通過語音數(shù)據(jù)源再通過一系列算法實(shí)現(xiàn)的,而面部識(shí)別則綜合了彩色影像、深度影像和骨骼追蹤為系列數(shù)據(jù)源的再通過一系列算法實(shí)現(xiàn)的。這些功能都是通過SDK來實(shí)現(xiàn)的。
有了這些數(shù)據(jù)源,就能夠進(jìn)行各種應(yīng)用了:
典型的應(yīng)用有綠屏摳像,這個(gè)功能在一些電視節(jié)目錄制,比如天氣預(yù)報(bào)節(jié)目中都是應(yīng)用的這個(gè)實(shí)現(xiàn)的,他把任務(wù)從背景中分離出來,然后可以隨意的更換背景,這個(gè)功能用到了影像數(shù)據(jù)和深度數(shù)據(jù),你可以參考這篇文章,里面有一個(gè)簡(jiǎn)單的例子。第二個(gè)應(yīng)用是產(chǎn)生點(diǎn)陣云,就是通過Kinect的深度影像數(shù)據(jù)產(chǎn)生每個(gè)點(diǎn)的位置信息然后生成三維模型。如下面這個(gè)例子:
圖中左邊是通過Kinect的深度影像數(shù)據(jù)產(chǎn)的三維建模圖像。
第三個(gè)應(yīng)用是魔鏡功能,我覺得應(yīng)該是一些類似哈哈鏡效果或者是IOS中的Photo Booth應(yīng)用,主要用到了彩色影像數(shù)據(jù),面部識(shí)別,骨骼識(shí)別等功能。還有一些就是虛擬試衣間這樣的功能,最后的一個(gè)應(yīng)用場(chǎng)景就是各種NUI交互界面了。
五 展望
除了以上的幾種典型的數(shù)據(jù)源之外,還展示了下一步的計(jì)劃,比如說針對(duì)景深數(shù)據(jù)進(jìn)行進(jìn)一步處理的Kinect Fusion數(shù)據(jù)源。
下面是演示的例子:圖中,右邊桌子上擺放了一個(gè)茶壺,然后利用Kinect對(duì)該茶壺進(jìn)行了三維建模,然后。移除右邊實(shí)物茶壺后,用戶可以對(duì)虛擬的茶壺進(jìn)行各種操作,神奇吧,這些都是下一個(gè)版本或者是將來的SDK能夠方便我們或者簡(jiǎn)化我們實(shí)現(xiàn)這些功能準(zhǔn)備添加的功能。
到最后展望了下一步要進(jìn)行的工作:
可以看出Kinect的愿景是使得計(jì)算機(jī)能夠看到、聽到、能夠更加理解周圍的人和環(huán)境。
Kinect SDK的版本發(fā)布是很快的,自從今年二月份發(fā)布了Kinect Sensor for Windows 體感儀及Kinect for Windows SDK 1.0官方版本以來;5月21日 發(fā)布了1.5版本SDK以及1.5的Developer Toolkit及調(diào)試工具Kinect Studio 1.5,不久又發(fā)布了Developer Toolkit 1.5.1及Developer Toolkit 1.5.2;10月9日發(fā)布了1.6版本的SDK和Developer ToolKit,同時(shí)宣布正式在大陸開售Kinect Sensor for Windows體感儀。每一個(gè)版本都增加了一些新的功能。相信下一個(gè)版本的SDK 也會(huì)有新的功能加入。
相信大家看了這個(gè)演講之后應(yīng)該可以感受到Kinect帶來的變化,也相信以后Kinect開發(fā)能應(yīng)用到日常生活中的例子會(huì)越來越多。
最后,希望大家有空到Channel9上看真人演講哦,上面還有很多有意思主題演講,所有演講的屁屁踢都可以在線看,視頻都提供下載,當(dāng)您不確定那個(gè)演講想不想看時(shí),可以看看下面的在線屁屁踢哦,當(dāng)然除了那種900多M的變態(tài)屁屁踢之外其他的都可以在線瀏覽,這樣您就可以迅速的了解演講內(nèi)容以及對(duì)該內(nèi)容有沒有興趣啦。
文章內(nèi)容轉(zhuǎn)載自:深入理解Kinect for Windows開發(fā)