当前位置:主页 > Z伴生活 >浅谈Intel RealSense 3D摄影机之应用与开发 >

浅谈Intel RealSense 3D摄影机之应用与开发

   时间: 2020-05-22   来源: Z伴生活 阅读: 754
特别企划
  • 浅谈Intel RealSense 3D摄影机之应用与开发 / 崭新角度 全新世界

    浅谈Intel RealSense 3D摄影机之应用与开发

    还记得Windows 10上市记者会中的一个桥段,讲者一个眼神就让系统自动登入,还跟你说你好(Hello),聪明的读者肯定知道这件事肯定不单纯,原来又是WinTel霸主联盟下的科技产物。

    Win10系统中所搭载Windows Hello登入技术,就是结合Intel RealSense 3D摄影机,所开发的生物辨识系统,让电脑认识主人已不再是难事,说不定在未来人人都是钢铁人,有着幽默风趣的AI管家贾维斯(JARVIS),可以跟主人对话、3D投影、体感操作。

    如今,笔者藉着搭载Intel RealSense 3D摄影机的ASUS G771JM笔电,来为各位读者试试Windows Hello,并且聊聊RealSense的原理,以及其可达到的手势/人脸辨识、语音、背景移除与物件追蹤等应用,这也是Intel提供SDK的目的「WHAT WILL YOU DEVELOP?」,感知互动、感官延伸就从了解Intel RealSense开始。

    Windows跟你说Hello

    Windows Hello是一个全新的Windows 10装置登入的方式,Windows Hello借助Intel RealSense 3D摄影机,让电脑能够辨识出使用者脸部的生物特徵,如此一来登入装置就无需再输入密码。

    换言之,只要具备Intel RealSense 3D摄影机以及Windows 10的作业系统,就能使用这功能,笔者本次测设的设备是使用,ASUS ROG G771JM笔记型电脑,除此之外还有HP、Dell与Lenovo等厂家推出具有此技术之产品。

    Windows Hello的设定并不会太麻烦,只要按下左下方失而复得的[开始]按钮,接着选取 [设定]→ [帐户]→[登入选项],就能找到Windows Hello的设定,设定时系统会要求先定义一组PIN码,当作忘记密码或者辨识失效时,最后的登入手段,当然若有它人想要,新增、修改人脸辨识的机制时,也会要求先输入PIN码才能使用,因此不用担心使用Windows Hello之后,帐户的安全性会降低。

    除了生物特徵辨识之外,若装置有指纹辨识、虹膜辨识等技术,同样能使用Windows Hello的自动登入功能;笔者相当喜欢Windows Hello这样的功能,一来新奇、二来便利,对于每次开启电脑工作时,懒得输入密码的用户来说,这真的再方便不过。

    既然,Intel RealSense 3D摄影机能够让Windows 10认识主人,那它还有什幺能耐?就让我们先来了解,Intel RealSense 3D摄影机的硬体与原理。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 机器开机后,Windows Hello就会开始寻找您…,只要坐在电脑前面,面向镜头一眨眼的时间,就能认出您并且登入。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 若电脑中有多个使用者也没问题,它会自动辨认。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 若要让电脑认识你,可以在[设定]→ [帐户]→[登入选项]中找到Windows Hello的设定选项。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 若想提升Windows Hello的準确性,可以多让它认识你几次,像是有没有带眼镜、化妆、假髮等不同的LOOK的时候,都使用这功能扫描脸部一遍。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 扫描过程只要看着镜头就可以了,操作相当简单而且非常好用的功能。

    Intel RealSense 3D摄影机原理

    若各位读者对Intel RealSense 3D摄影机有兴趣,可以造访「Intel开发者园地」就能取得更多资料。目前,Intel RealSense 3D摄影机可以分为两种版本:1. 随着笔记型电脑、AIO等设备出货的产品、2. 单独贩售的Intel RealSense Developer Kit,这两种在型号上都命名为「F200」。

    F200拥有三种类型的镜头:1. 传统RGB镜头、2. 红外线镜头与3. 红外线雷射投影机。传统RGB镜头,主要是拍下镜头前方的景物,这影像是2D平面之影像,不具备深度等3D要素,而若想以2D影像换算出3D空间,会遇到效率不彰、结果差强人意的问题;因此结合红外线雷射投影机与红外线镜头,就能够侦测摄影机前方之红外线反射量,有了这量度就能了解一个重要的讯息「深度」。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ F200的内部构造,有三颗镜头与影像处理晶片。

    2D平面的世界只有X与Y,为了达到3D的立体的效果,因此多加了Z轴。就前阵子流行的3D电影来说,最简单的3D电影拍摄,就是透过两组摄影机,以精算过的角度并排拍摄,因为两个影像角度不同的关係,在视觉上存在着「视差」这因素,就能让观众看到极为真实的3D电影。

    反过来若要让电脑得到真实世界的资讯,除了XY平面的RGB影像之外,就会需要深度的感测,也就是F200中的第二颗与第三颗镜头所办到的事,而有了这些资讯,不论要抓取更準确的人脸特徵、手势辨识、背景移除、物件追蹤就不再是难事。

    从「Intel RealSense SDK Design Guidelines F200 v2」中,可以得知F200详细的硬体规格,传统RGB镜头(Color Camera)具备1080p(2M)@30FPS解析度、16:9之影像比例,而红外线镜头(Depth {IR} Camera)则提供640 x 480(VGA)解析度、4:3之影像比例,而实际的感测有效範围,只有0.2m~1.2m之间,想必是为了缩小体积所致,若是Developer Kit的版本,有效範围肯定会再好一些,手势侦测範围在VGA模式中,有着20~60cm的使用距离限制,3D脸部侦测则是限制在35~70cm之间。

    浅谈Intel RealSense 3D摄影机之应用与开发

    浅谈Intel RealSense 3D摄影机之应用与开发

    聪明的读者,肯定已经联想到微软XBOX Kinect这套体感设备,的确Intel RealSense 3D摄影机与微软XBOX Kinect的原理相同,但面对的使用模式却较为不同,Intel RealSense 3D摄影机聚焦于人脸、手势,可见其捕捉空间定义在人的上半身,而微软XBOX Kinect则是要补捉整个人体的动态,除此之外两者体积差异也颇大,因此并不存在相互竞争等因素,笔者也乐观其成这3D摄影机的技术,能普及在各大装置中,并且让辨识、追蹤变得更精準,如此一来才能迎接下一代操作体验。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ Developer Kit的零售版F200。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 使用F200时有个感测空间的限制,因此在使用或者开发应用时,要注意这空间限制的问题。

    Intel RealSense应用App介绍

    既然有这幺好玩的3D摄影机,肯定要试着探索与尝试各种可能,在Google中搜寻「Intel RealSense」可以找到介绍网页,其中有个APPShowcase的页面,这里头就有好几款支援Intel RealSense技术的App,让用户可以自行下载,并且安装在电脑中使用。

    笔者就挑了几个比较有趣的App来与各位分享,首先是「Scratch-图形化语言程式」,这时一个线上的编译平台,让用户可以透过图形化的语意,来编写程式、游戏、动画绘本等等,或许读者肯定认为写程式是有一定难度的事情,但在Scratch平台上,让笔者只花了几分钟的时间,就学会该如何使用Scratch来创造,这是笔者挑选这款App的主要原因。

    此外,还有「3DMe – 3D人物脸部扫描」以及「Space Astro Blaster – 体感游戏」,共计三款App来与各位分享,Intel RealSense的应用。

    Scratch-图形化语言程式

    Scratch是一套线上编译的平台,只需要输入scratch.mit.edu这网址就能使用,我们间先来试试要如何使用Scratch,来製作一个简单的程式,在Scratch的编辑介面中大致可分为左右两栏,左手边上方是执行预览、下方则是素材脚色的视窗,而右手边则是编辑的範围,分为程式、造型与音效等页籤。

    我们先来简单写一些程式,程式的开头需使用[事件]→[当绿色旗子被点一下],当作程式的起始点,接着就能在摆上[动作]、[外观]、[声音]、[控制]…等指令,也能加入变数、迴圈等元素,如此一来最简单的小程式就搞定了。在Scratch中,也能浏览已经製作完毕的计画,藉此学习Scratch的使用技巧。

    若要在Scratch中使用Intel RealSense的功能,必须先安装「Intel RealSense Experience for Web Browsers」插件,这在Intel Scratch的介绍网页中可以找到,安装后就可以直接使用已经建立好的Samples,来学习如何抓取手势、人脸等骨架的指令。

    Intel RealSense专属的Scratch Blocks,有着Face visible、Any Hand visible…等专用指令,让用户可以在Scratch平台上,开发体感应用。

    笔者就举Full Hand这个Sample来介绍,Full Hand是使用22个点,描绘出左手与右手的骨架,我们就依据Scratch的语法来检视。

    首先,这个Sample中新增了两个脚色,分别是joint RightHand与joint LeftHand的原点图形,因为Scratch这套平台是针对专案内的脚色,进行程式的撰写,因此为了能够让Full Hand能辨识出,左手与右手则需要建立两个脚色,而这两个脚色的程式码相同,只是把左手的程式段落改为右手,因此笔者就只列一只手的程式码。

    此外,程式还建立了左手与右手的index变数,用来指定(x, y)的位置,如此一来当index从1~22跑完一遍,就能将手掌的轮廓给表现出来,接着就来看看程式码的段落。

    程式码#1

    0 | when flag clicked //这是Scratch程式开始的触发
    1 | show
    2 | set i to -1 //初始变数为-1
    3 | repeat(22) { //重複以下指令22次
    4 | change i by 1 //等同++i
    5 | create clone of myself} //複製自己这个脚色
    6 | hide

    程式码#2
    0 | when I start as a clone //当自身複製时执行以下程式码,接着程式码#1第6行开始
    1 | set index to i //将index的值改为i
    2 | forever { //永久执行以下程式码
    3 | if Left Hand visible? then { //判断左手是否可见?
    4 | show
    5 | set x to X Position of Left Hand index //将这脚色的x座标,改为Left Hand(index) X座标数值
    6 | set y to Y Position of Left Hand index //将这脚色的y座标,改为Left Hand(index) Y座标数值
    7 | else
    8 | hide}}    //若条件不符就隐藏

    这两段程式码,笔者一开始读也有点懵懵懂懂,在仔细敲过、看过一遍后,才渐渐明了其用意,首先第一段程式码,是用来複製22个左手点的工作,也就是重複22次,每一次都让i加1以及複製自己,这样i会从0开始到21结束。

    每当複製自己时,会接到第二段的程式码开头when I start as a clone,这时就将index的值改为i,并且永远执行将脚色的x,y座标,改为Intel RealSense所回传的X Position of Left Hand index的值,如此一来就能在预览的视窗中,看见这些点排列出来的手部轮廓了。

    笔者较不懂的是这段X Position of Left Hand index,这段是特别为RealSense所定义的Blocks指令,因此只要将index 0~21当作参数,丢给这指令就可以回传侦测到的手部骨架座标。

    笔者深信,上面这短短的一行指令,在背后Intel RealSense SDK中,肯定要写个上千行,将红外线镜头与传统RGB镜头之影像结合,计算出手部的位置并计算出手掌骨骼的22个节点座标。

    若是侦测脸部则会需要使用78个点来表示,而程式码与手部侦测相同,只是指令换成Face的指令。根据这次的体验,笔者相当喜欢Scratch这套高阶程式语言,透过图形化与更直觉的语意设计,让普罗大众都能自行创造出有趣的程式与游戏。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ Scratch的开发画面,像当有趣的图像高阶语言,让用户可以直接线上撰写、执行。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 在网站中也有好几个已经开发好的RealSense应用,大家可以参考这些Sample的程式码,来学习Scratch并且开发自己的程式。

    3DMe – 3D人物脸部扫描

    3DMe是由3D Systems公司所开发,运用Intel RealSense的脸部侦测继续,将使用者的脸部特徵扫描后,自动建立出3D人像模型,并且提供订购的服务,让用户可以自行扫描3D影像,并且自做出真实的人像公仔。

    3DMe是免费的App应用,只是若要将自身的3D模型製作出来,则会需要69.96美金,人像公仔会是5.5吋的大小。再透过3DMe扫描脸部时,需要将头髮往后梳,露出最完整的脸部表情,并且要在灯光充足的环境中使用,扫描时会提示使用者将脸部刚好塞满扫描圈,接着会需要使用者将头往右、左、上等三个方向缓慢的转动,进行更完整的3D扫描动作,这个扫描过程仅需要10~20秒就能完工。

    建立好的3DMe人像模型,也可以拍摄照片或者录製影片与朋友分享。依笔者拙见,使若能在脸部特徵扫描的同时,将脸部的78个特徵点建立在模型中,肯定能让脸部表情更生动,甚至在使用者準备购买自己的公仔时,还能调整脸部表情,甚至是依造自己的意思微整形一翻,这肯定会更有趣。

    若各位手边有搭载Intel RealSense的装置,笔者相当建议试试这套App,好玩又有趣。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 在3DMe当中可以挑选想要的人物模型进行脸部扫描,并且有公主跟王子两个脚色喔!

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 脸部扫描时,会要求脸部左、右、上的转动,目的就是要建立更準确的3D脸部模型。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 扫描好的3D脸部模型,马上就能套用在公仔人物上,相当有趣、又好玩的功能,若有想要自己的公仔,不妨可以试试这套。

    Space Astro Blaster – 体感游戏

    Space Astro Blaster则是一套体感射击游戏,运用Intel RealSense的手部侦测来控制飞机,类似星际小蜜蜂的游戏,只是从原本的2D变成3D游戏,并且透过体感来控制飞机的操作。

    这是相当典型的体感应用,但由于Intel RealSense的F200摄影机,其侦测範围有限的情况下,很容易玩的太过激烈,而将手掌移出侦测範围内,导致飞机无法控的问题。

    笔者认为这是Intel RealSense与微软XBOX Kinect最大的差异,Intel RealSense比较倾向于应用,像是脸部扫描、辨识、简易的手势判断,而XBOX Kinect则是可以更精準的追蹤人体的骨架,并在游戏的过程中跟上玩家的肢体节奏。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ Space Astro Blaster的玩法就是透过手来控制飞机的移动与攻击。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 但受限与感测空间的限制,玩这款游戏时很容易就超出感测範围,而让飞机殒落Game Over。

    啃资料Intel RealSense SDK

    Software Development Kit翻成白话文就是软体开发工具组,这可能是某平台、应用服务甚至是硬体等产品,其具备第三方开发的特质,就像是Intel所开发的RealSense 3D摄影机,为了加速市场的普及、教育、研究等目的,微软于是公开了「Intel RealSense SDK」提供给任何人下载使用,透过SDK我们就能利用API(Application Programming Interface),进行调用RealSense 3D摄影机的影像、深度,并透过这组SDK来达到,脸部辨识、手势侦测…等功能。

    因此,在进行任何开发事宜时,应该先详阅网上公开的说明书,于是各位可以连上Intel Developer Zone中,找到「Intel RealSense SDK」的免费下载连结,下载SDK必须填写信箱、姓名、国家与手机等资讯,随后就能收到专属的下载连结,就可以开发自己的Intel RealSense应用。

    阅读RealSense SDK(简称RS SDK)的第一步,一定是要先了解SDK架构(图RS SDK),才能了解程式的生命週期以及如何运用。RS SDK大致上可以分为四层,最上层是运用RS SDK所建立的应用、工具等等,第二层则是所支援的语言介面,像是C++、C#、Unity、Java、JavaScript…等语言,而在SDK界面下方则是SDK的运作核心、I/O模组、演算法等等。

    若想要快速上手,笔者建议可以搜寻「Intel RealSense SDK 2015 R4 Documentation」,这份线上说明文件,有比较详细的介绍RS SDK之应用的概念以及串流,再配合着RS SDK中提供的原始码,进行学习会比较快上手RS SDK之应用。

    开始撰写的第一步「参考」

    笔者依据公开的说明书,学习了些RS SDK开发之方法,而笔者连业余程式设计师都称不上,仅只有在求学阶段中,学习了些程式语言、程式开发之皮毛,若有介绍不周之处还请各位见谅。

    笔者使用微软提供的免费IDE工具「Visual Studio Community 2015」来开发,程式语言笔者选择比较易懂的「C#」来编写。若是建置新的开发专案时,须将开发环境的目标Framework设定为[.NET Framework 4],并且找到RS SDK打包好的动态连结程式库[libpxcclr.cs.dll],这个dll档案可以在RS SDK目录中的bin资料夹中找到,将[libpxcclr.cs.dll]複製到开发专案的目录当中,并在[方案总管]中透过[加入参考]的选项,将[libpxcclr.cs.dll]加入至专案当中,并且再将[libpxccpp2c.dll]複製到专案[bin→Debug]目录当中,如此一来在开发专案时,就能直接使用RS SDK提供的class。

    紧接着,笔者就以RS SDK当中提供的「Hand Viewer(C#)」专案,来研究RS SDK的开发与应用。在像Sample Code学习时,一定要先找到程式的进入点,才能从头开始阅读程式码,以C#的专案来说都是写在[Program.cs]当中,找到Main() 方法这段就是用来要求RS SDK的PXCMSession权力,拥有Session才能使用SDK提供之I/O、演算法等Class。

    接着,作者将建立好的session丢给了[HandsRecognition.cs]中所建立的MailForm。在HandsRecognition的Class当中,是用来实作手势侦测以及图像显示的工作,其中 [SimplePipeline] 这Function,是整个程式的核心,透过PXCMSenseManager进行资料的处理,换句话说RS SDK除了运用Session之外,还有各种SenseManager介面,来处理不同的事情。

    简而言之,RS SDK必须透过建立Session,取得装置的使用权限,并透过SenseManager来处理各种事情,像是PXCMCaptureManager、pxcmStatus、PXCMHandModule…等等,进行手势的捕捉、处理与显示的动作,若要完全读懂这些Code,以笔者目前的程式能力来看,可能要花上1个月以上的时间,但是截稿的压力没法给笔者这幺充裕的时间,若各位因为笔者的介绍,对Intel RealSense的开发有了兴趣,不妨参考Sample程式的完整程式码,从中更完整的了解RS SDK的开发与应用。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 注册好RS SDK后,就会收到专属的下载连结,让开发者能自行取用。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ RS SDK当中的Samples浏览器,有着所有RS能办到的功能应用,对于开发者来说,透过阅读程式码来学习肯定是最快的一条路。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ Camera Explorer则可以搜寻以连接的RS装置,并启动Camera Viewer来观看影像。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 手势侦测与判断的Sample,可以测试各种手势的侦测功能。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 利用3D摄影机进行自动去背的应用,或许日后拍摄影片,不用在上绿幕当去Key用的背板了,只要靠RS 3D摄影机即可。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 人眼追蹤也可以办到喔!透过脸部特徵定位,在依据眼球观看的方向与角度推算。

    ASUS ROG G771J电竞笔电

    此次非常感谢,华硕大力提供搭载Inte RealSense的ROG G771J电竞笔电,让笔者可以长时间研究与测试,提到华硕ROG产品肯定会是重武装、高效能的代名词,ASUS ROG G771J有着17.3吋的显示萤幕,全铝合金的金属机身,整体相当扎实与牢固,但也使得这台笔电有着5.3公斤的体重。

    虽然厚实的点,但也搭载了最强劲的Intel Core i7-4720HQ处理器,以及NVIDIA GeForce GTX 960M / 2GB独立显示卡,还有8GB记忆体,让笔者在编译专案时,也能非常顺畅,用来当作RS SDK的开发平台相当适合;此外储存方面更是採用SSD+HDD的双储存组合,128G SSD当作系统碟,加速整体系统速度,而1TB HDD则当作开发专案储存的资料硬碟使用。

    整体来看效能相当强劲,有着IPS FHD雾面萤幕,花时间研究一行一行的Code时,也不会太容易造成眼睛疲劳,萤幕的颜色也相当準确、漂亮、可视角度也相当大;提供全尺寸的键盘,配上红色背光,整体质感相当不错;在连接埠上也相当齐全,显示输出提供HDMI与mini Display Port,以及4组USB 3.0、SD读卡机、RJ45网路孔等介面。

    虽然ROG G771J定位为电竞笔电,但其强大的效能与双储存的空间,用来当作工作平台、专案开发也非常适合,对笔者来说效能强的笔电,不仅止于电子竞技,更是能提升工作效率的好伙伴。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 沉稳、霸气的ROG G771J电竞笔电。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 有着全尺寸的背光键盘,工作上更是方便。

    浅谈Intel RealSense 3D摄影机之应用与开发
    ↑ 底部也提供相当方便的扩充机制,换RAM或者SSD、HDD都没问题。

    总结

    Intel RealSense 3D摄影机有着体积小的优势,带给电脑装置一个新的使用模式,不论是Windows Hello般的人脸辨认的登入机制,或者是体感游戏、3D扫描、物件追蹤等功能,再加上微软提供SDK让第三方开发者,可以自行发挥创意、想法,创造出更新奇的RealSense新应用。

    虽然目前搭载RealSense 3D摄影机的笔电还不多,但若Intel肯投资、挟着Win 10的人脸登入功能,日后若是中高阶的笔电,搭载RealSense 3D摄影机的机会就非常的高。此外,若RealSense 3D摄影机普及,日后网上登入帐号,可能也只要跟电脑Hello一下,就能依靠人脸辨识自动登入,笔者相当期待这一天的到来。

  • 上一篇:
    下一篇:
    猜你喜欢...
    相关信息
    图文欣赏
    精彩推荐 
    搞笑百态 
    精彩文章
    
    芭乐CC生活墙|提供最权威的购物指南|集本地资讯网站|网站地图 通亚娱乐注册登录_沙巴官网体育 万鸿平台注册_摩天城体育 博万通官网_金钻石娱乐app 首存100送100的游戏网站_沙巴官网体育 新濠万利彩登录_必赢贵宾会怎么卸载 大奖888黄金版登录_宝盈bbin客户端 红宝石国际登录地址是多少_信和娱乐app BET9十年信誉玩家首选_金州娱乐登录网址 豪亨博会员登录_v1bet地址 yzc999亚洲城_bet9平台登录网址