{"id":1548,"date":"2017-09-09T22:06:15","date_gmt":"2017-09-09T22:06:15","guid":{"rendered":"https:\/\/lightbuzz.com\/?p=1548"},"modified":"2017-10-16T14:48:31","modified_gmt":"2017-10-16T14:48:31","slug":"floor-kinect","status":"publish","type":"post","link":"https:\/\/lightbuzz.com\/floor-kinect\/","title":{"rendered":"Floor Detection using Kinect"},"content":{"rendered":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221;][vc_column_text]Kinect is primarily used in Body and Face tracking applications. Few people know, though, that Kinect is an amazing sensor for detecting the floor, too!<\/p>\n<p>The native Kinect SDK provides us with all the information we need to accurately recognize whether a particular plane in the 3D space is, actually, a floor. We can also acquire information such as the height the Kinect sensor is placed at. We can even measure the distance between a point in the 3D space and the floor. All this can have a ton of impact in modern Augmented Reality applications.<\/p>\n<p>In today&#8217;s tutorial, I am going to show you the following:<\/p>\n<ul>\n<li>How to detect the floor clip\u00a0plane.<\/li>\n<li>How to estimate the position (height) of the Kinect sensor.<\/li>\n<li>How to measure the distance between a point and the floor.<\/li>\n<\/ul>\n<p>This is a snapshot of what we are going to develop:<\/p>\n<h2><img decoding=\"async\" class=\"alignnone size-full wp-image-2689 lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"\/wp-content\/uploads\/2017\/09\/kinect-floor-demo.jpg\" alt=\"Kinect floor detection demo\" width=\"1150\" height=\"936\" \/><noscript><img decoding=\"async\" class=\"alignnone size-full wp-image-2689 lazyload\" src=\"\/wp-content\/uploads\/2017\/09\/kinect-floor-demo.jpg\" alt=\"Kinect floor detection demo\" width=\"1150\" height=\"936\" \/><\/noscript><\/h2>\n<h2>Prerequisites<\/h2>\n<p>To run the code and samples provided in this article, you\u2019ll need the following:<\/p>\n<ul>\n<li><a href=\"http:\/\/amzn.to\/1AvdswC\">Kinect for XBOX v2 sensor<\/a>\u00a0with an\u00a0<a href=\"http:\/\/amzn.to\/1wPJG55\">adapter<\/a>\u00a0(or\u00a0<a href=\"http:\/\/amzn.to\/1DQtBSV\">Kinect for Windows v2 sensor<\/a>)<\/li>\n<li><a href=\"http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=44561\">Kinect for Windows v2 SDK<\/a><\/li>\n<li>Windows 8.1 or higher<\/li>\n<li>Visual Studio 2013 or higher<\/li>\n<li>A dedicated\u00a0USB 3 port<\/li>\n<\/ul>\n<h2>Source code<\/h2>\n<p>The source code of the demo is hosted on <a href=\"https:\/\/github.com\/LightBuzz\/kinect-floor\">GitHub<\/a>.\u00a0Moreover, all of this functionality is part of <a href=\"https:\/\/vitruviuskinect.com\">Vitruvius<\/a>. Vitruvius is the most popular Kinect framework and will help you create Kinect apps very easily. So, if you are in a hurry, just <a href=\"https:\/\/vitruviuskinect.com\">download Vitruvius<\/a> and integrate it into your apps.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/LightBuzz\/kinect-floor\">Download the source code<\/a><\/li>\n<li><a href=\"https:\/\/vitruviuskinect.com\">Download Vitruvius<\/a><\/li>\n<\/ul>\n<h2>Detecting the Floor Clip Plane<\/h2>\n<p>Some floor-detection functionality is already built into the Kinect SDK. Please, meet the <strong>FloorClipPlane<\/strong> property. The FloorClipPlane is a member of the BodyFrame class. Very few people are aware of its existence, however, it&#8217;s one of the most useful components when developing <a href=\"https:\/\/lightbuzz.com\">motion apps<\/a>.<\/p>\n<p>This is how to access the FloorClipPlane property:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">using (BodyFrame frame = e.FrameReference.AcquireFrame())\r\n{\r\n    if (frame != null)\r\n    {\r\n        Vector4 floorClipPlane = frame.FloorClipPlane;\r\n    }\r\n}<\/code><\/pre>\n<p>As you can see, the FloorClipPlane is a set of 4 floating-point values (Vector4): X, Y, Z, and W.<\/p>\n<ul>\n<li>The X, Y, and Z values indicate the orientation of the plane in the 3D space.<\/li>\n<li>The W value indicates the distance between the plane and the origin of the coordinate system.<\/li>\n<\/ul>\n<p><em>Actually, the Vector4 structure represents the mathematical equation of a plane. You can read more about it on <a href=\"http:\/\/mathworld.wolfram.com\/Plane.html\">Wolfram MathWorld<\/a>.<\/em><\/p>\n<p>For our\u00a0examples, we are going to encapsulate the FloorClipPlane vector into a handy Floor C# class:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">public class Floor\r\n{\r\n    public float X { get; internal set; }\r\n    public float Y { get; internal set; }\r\n    public float Z { get; internal set; }\r\n    public float W { get; internal set; }\r\n\r\n    public Floor(Vector4 floorClipPlane)\r\n    {\r\n        X = floorClipPlane.X;\r\n        Y = floorClipPlane.Y;\r\n        Z = floorClipPlane.Z;\r\n        W = floorClipPlane.W;\r\n    }\r\n}<\/code><\/pre>\n<h3>Kinect sensor\u00a0height &#8211; The magic W<\/h3>\n<p>As we saw, the W value indicates the distance between the floor and the origin of the coordinate system. The origin of the Kinect coordinate system is <strong>the device itself<\/strong>! Consequently, the W parameter of the FloorClipPlane describes the <strong>height<\/strong> where the Kinect sensor is positioned!<\/p>\n<p>Using the W value, you can provide feedback to your users:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">Vector4 floorClipPlane = frame.FloorClipPlane;\r\nfloat height = floorClipPlane.W;\r\n\r\nif (height &lt; 1f) \/\/ 1 meter\r\n{\r\n    Debug.WriteLine(\"The sensor is positioned too low!\");\r\n}<\/code><\/pre>\n<h3>Field of View<\/h3>\n<p>When the W value is 0, it means that\u00a0the field of view is limited. This is a very easy way to understand whether there are any objects, such as tables, chairs, etc, that are blocking the field of view.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">if (height == 0f)\r\n{\r\n    Debug.WriteLine(\"The field of view is limited.\");\r\n}<\/code><\/pre>\n<h3>Kinect sensor tilt angle<\/h3>\n<p>Other than finding the height of the sensor, we can also detect the tilting angle of the device. All we need to do is use the orientation of the floor plane:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">public double Tilt\r\n{\r\n    get\r\n    {\r\n        return Math.Atan(Z \/ Y) * (180.0 \/ Math.PI);\r\n    }\r\n}<\/code><\/pre>\n<h2>Measuring distances<\/h2>\n<p>In\u00a0one of my previous articles, <a href=\"http:\/\/pterneas.com\/2016\/08\/11\/measuring-distances-kinect\/\">I explained how to measure the distance between 2 points in the 3D space<\/a> using simple Mathematical equations.<\/p>\n<p>Now, we need to measure the distance between a point and a plane in the 3D space. This is trickier, but we can easily figure it out with the help of Geometry.<\/p>\n<p>The detected floor is a plane with a known\u00a0distance (W) and orientation (X, Y, Z). A point in the 3D space is a set of X, Y, and Z coordinates.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">\/\/ Plane (X, Y, Z, W)\r\nFloor floor = new Floor(frame.FloorClipPlane);\r\n\r\n\/\/ Point (X, Y, Z)\r\nCameraSpacePoint point = body.Joints[JointType.WristLeft].Position;\r\n<\/code><\/pre>\n<p>To measure the distance between a plane and a point, we need to use the <a href=\"http:\/\/mathworld.wolfram.com\/Point-PlaneDistance.html\">Point-Plane Distance Formula<\/a>:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2694 lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"\/wp-content\/uploads\/2017\/09\/point-plane-distance-formula.png\" alt=\"Point-Plane Distance formula\" width=\"155\" height=\"47\" \/><noscript><img decoding=\"async\" class=\"alignnone size-full wp-image-2694 lazyload\" src=\"\/wp-content\/uploads\/2017\/09\/point-plane-distance-formula.png\" alt=\"Point-Plane Distance formula\" width=\"155\" height=\"47\" \/><\/noscript><\/p>\n<p>How shall we convert this formula into programming code? Let me do the Math for you:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">public double DistanceFrom(CameraSpacePoint point)\r\n{\r\n   double numerator = X * point.X + Y * point.Y + Z * point.Z + W;\r\n   double denominator = Math.Sqrt(X * X + Y * Y + Z * Z);\r\n\r\n   return numerator \/ denominator;\r\n}<\/code><\/pre>\n<p>Add this method in your Floor.cs class. This is it! You can now get the 3D position of any point, pass it as a parameter to the above method, and find its distance from the floor.<\/p>\n<pre><code class=\"language-markup\">double distance = floor.DistanceFrom(point);<\/code><\/pre>\n<p>For your reference, this is the complete Floor.cs class:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-csharp\">public class Floor\r\n{\r\n    public float X { get; internal set; }\r\n    public float Y { get; internal set; }\r\n    public float Z { get; internal set; }\r\n    public float W { get; internal set; }\r\n\r\n    public Floor(Vector4 floorClipPlane)\r\n    {\r\n        X = floorClipPlane.X;\r\n        Y = floorClipPlane.Y;\r\n        Z = floorClipPlane.Z;\r\n        W = floorClipPlane.W;\r\n    }\r\n\r\n    public float Height\r\n    {\r\n        get { return W; }\r\n    }\r\n\r\n    public double Tilt\r\n    {\r\n        get { return Math.Atan(Z \/ Y) * (180.0 \/ Math.PI); }\r\n    }\r\n\r\n    public double DistanceFrom(CameraSpacePoint point)\r\n    {\r\n        double numerator = X * point.X + Y * point.Y + Z * point.Z + W;\r\n        double denominator = Math.Sqrt(X * X + Y * Y + Z * Z);\r\n\r\n        return numerator \/ denominator;\r\n    }\r\n}<\/code><\/pre>\n<p>This is it, folks! You can now use the Floor.cs class to implement cool functionality! In my C# sample code, I have also added numerous Extension methods that will let you <strong>draw<\/strong> the points of the floor and even find the <strong>projection<\/strong> of any other point.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/LightBuzz\/kinect-floor\">Download the source code<\/a><\/li>\n<\/ul>\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;full_width_background&#8221; full_screen_row_position=&#8221;middle&#8221; bg_color=&#8221;#181818&#8243; scene_position=&#8221;center&#8221; text_color=&#8221;light&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;padding-4-percent&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221;][vc_column_text]\n<h2>PS: Vitruvius<\/h2>\n<p>If you liked this post, then you\u2019ll love\u00a0<a href=\"http:\/\/vitruviuskinect.com\/\">Vitruvius<\/a>. Vitruvius is the result of my Kinect research\u00a0during the past 5\u00a0years.\u00a0Vitruvius will help you minimize the\u00a0development time and create complex applications with just\u00a0a few\u00a0lines of code! Includes advanced Mathematics, Avateering, Video Recording, Face Tracking, and more.<\/p>\n<a class=\"nectar-button n-sc-button large accent-color has-icon regular-button\"  href=\"https:\/\/vitruviuskinect.com\" data-color-override=\"false\" data-hover-color-override=\"false\" data-hover-text-color-override=\"#fff\"><span>Download Vitruvius<\/span><i class=\"icon-button-arrow\"><\/i><\/a>[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; top_padding=&#8221;40&#8243; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221;][vc_column_text]&#8217;Til the next time, keep Kinecting![\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221;][vc_column_text]Kinect is primarily used in Body and Face tracking applications. Few people know, though, that Kinect is&#8230;<\/p>\n","protected":false},"author":6,"featured_media":1538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[12],"tags":[],"class_list":["post-1548","post","type-post","status-publish","format-standard","has-post-thumbnail","category-kinect"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Floor Detection using Kinect | LightBuzz<\/title>\n<meta name=\"description\" content=\"Learn how to detect the floor using Kinect &amp; measure the distance between a point in the 3D space. Source code + tutorial by Vangos Pterneas, Microsoft MVP.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lightbuzz.com\/floor-kinect\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Floor Detection using Kinect | LightBuzz\" \/>\n<meta property=\"og:description\" content=\"Learn how to detect the floor using Kinect &amp; measure the distance between a point in the 3D space. Source code + tutorial by Vangos Pterneas, Microsoft MVP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lightbuzz.com\/floor-kinect\/\" \/>\n<meta property=\"og:site_name\" content=\"LightBuzz\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/lightbuzz.software\" \/>\n<meta property=\"article:author\" content=\"https:\/\/facebook.com\/pterneas\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-09T22:06:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-10-16T14:48:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lightbuzz.com\/wp-content\/uploads\/2017\/09\/floor-detection-csharp.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"533\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Vangos Pterneas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@pterneas\" \/>\n<meta name=\"twitter:site\" content=\"@pterneas\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vangos Pterneas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/\"},\"author\":{\"name\":\"Vangos Pterneas\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#\\\/schema\\\/person\\\/ed6c9009282dab1defdd2a91f7f0f41f\"},\"headline\":\"Floor Detection using Kinect\",\"datePublished\":\"2017-09-09T22:06:15+00:00\",\"dateModified\":\"2017-10-16T14:48:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/\"},\"wordCount\":1016,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lightbuzz.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/floor-detection-csharp.jpg\",\"articleSection\":[\"Kinect\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/\",\"url\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/\",\"name\":\"Floor Detection using Kinect | LightBuzz\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lightbuzz.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/floor-detection-csharp.jpg\",\"datePublished\":\"2017-09-09T22:06:15+00:00\",\"dateModified\":\"2017-10-16T14:48:31+00:00\",\"description\":\"Learn how to detect the floor using Kinect & measure the distance between a point in the 3D space. Source code + tutorial by Vangos Pterneas, Microsoft MVP.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#primaryimage\",\"url\":\"https:\\\/\\\/lightbuzz.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/floor-detection-csharp.jpg\",\"contentUrl\":\"https:\\\/\\\/lightbuzz.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/floor-detection-csharp.jpg\",\"width\":800,\"height\":533,\"caption\":\"Kinect Floor Detection\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/floor-kinect\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/lightbuzz.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Floor Detection using Kinect\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#website\",\"url\":\"https:\\\/\\\/lightbuzz.com\\\/\",\"name\":\"LightBuzz\",\"description\":\"Real-time motion tracking for iOS, Mac, Windows &amp; Linux\",\"publisher\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/lightbuzz.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#organization\",\"name\":\"LightBuzz Inc.\",\"url\":\"https:\\\/\\\/lightbuzz.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/lightbuzz.com\\\/wp-content\\\/uploads\\\/2016\\\/07\\\/lightbuzz-logo-color.svg\",\"contentUrl\":\"https:\\\/\\\/lightbuzz.com\\\/wp-content\\\/uploads\\\/2016\\\/07\\\/lightbuzz-logo-color.svg\",\"width\":1,\"height\":1,\"caption\":\"LightBuzz Inc.\"},\"image\":{\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/lightbuzz.software\",\"https:\\\/\\\/x.com\\\/pterneas\",\"https:\\\/\\\/linkedin.com\\\/company\\\/5049888\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/lightbuzzsoftware\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/lightbuzz.com\\\/#\\\/schema\\\/person\\\/ed6c9009282dab1defdd2a91f7f0f41f\",\"name\":\"Vangos Pterneas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f2dc7e5d6f71d791670e58f223dbf19ad6cfd99c64ec08c9aae69f2996623ec?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f2dc7e5d6f71d791670e58f223dbf19ad6cfd99c64ec08c9aae69f2996623ec?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f2dc7e5d6f71d791670e58f223dbf19ad6cfd99c64ec08c9aae69f2996623ec?s=96&r=g\",\"caption\":\"Vangos Pterneas\"},\"description\":\"Vangos Pterneas is a software engineer, book author, and award-winning Microsoft Most Valuable Professional (2014-2019). Since 2012, Vangos has been helping Fortune-500 companies and ambitious startups create demanding motion-tracking applications. He's obsessed with analyzing and modeling every aspect of human motion using AI and Maths. Vangos shares his passion by regularly publishing articles and open-source projects to help and inspire fellow developers.\",\"sameAs\":[\"http:\\\/\\\/pterneas.com\",\"https:\\\/\\\/facebook.com\\\/pterneas\",\"https:\\\/\\\/x.com\\\/pterneas\"],\"url\":\"https:\\\/\\\/lightbuzz.com\\\/author\\\/vangos\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Floor Detection using Kinect | LightBuzz","description":"Learn how to detect the floor using Kinect & measure the distance between a point in the 3D space. Source code + tutorial by Vangos Pterneas, Microsoft MVP.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/lightbuzz.com\/floor-kinect\/","og_locale":"en_US","og_type":"article","og_title":"Floor Detection using Kinect | LightBuzz","og_description":"Learn how to detect the floor using Kinect & measure the distance between a point in the 3D space. Source code + tutorial by Vangos Pterneas, Microsoft MVP.","og_url":"https:\/\/lightbuzz.com\/floor-kinect\/","og_site_name":"LightBuzz","article_publisher":"https:\/\/facebook.com\/lightbuzz.software","article_author":"https:\/\/facebook.com\/pterneas","article_published_time":"2017-09-09T22:06:15+00:00","article_modified_time":"2017-10-16T14:48:31+00:00","og_image":[{"width":800,"height":533,"url":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2017\/09\/floor-detection-csharp.jpg","type":"image\/jpeg"}],"author":"Vangos Pterneas","twitter_card":"summary_large_image","twitter_creator":"@pterneas","twitter_site":"@pterneas","twitter_misc":{"Written by":"Vangos Pterneas","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/lightbuzz.com\/floor-kinect\/#article","isPartOf":{"@id":"https:\/\/lightbuzz.com\/floor-kinect\/"},"author":{"name":"Vangos Pterneas","@id":"https:\/\/lightbuzz.com\/#\/schema\/person\/ed6c9009282dab1defdd2a91f7f0f41f"},"headline":"Floor Detection using Kinect","datePublished":"2017-09-09T22:06:15+00:00","dateModified":"2017-10-16T14:48:31+00:00","mainEntityOfPage":{"@id":"https:\/\/lightbuzz.com\/floor-kinect\/"},"wordCount":1016,"commentCount":0,"publisher":{"@id":"https:\/\/lightbuzz.com\/#organization"},"image":{"@id":"https:\/\/lightbuzz.com\/floor-kinect\/#primaryimage"},"thumbnailUrl":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2017\/09\/floor-detection-csharp.jpg","articleSection":["Kinect"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/lightbuzz.com\/floor-kinect\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/lightbuzz.com\/floor-kinect\/","url":"https:\/\/lightbuzz.com\/floor-kinect\/","name":"Floor Detection using Kinect | LightBuzz","isPartOf":{"@id":"https:\/\/lightbuzz.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/lightbuzz.com\/floor-kinect\/#primaryimage"},"image":{"@id":"https:\/\/lightbuzz.com\/floor-kinect\/#primaryimage"},"thumbnailUrl":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2017\/09\/floor-detection-csharp.jpg","datePublished":"2017-09-09T22:06:15+00:00","dateModified":"2017-10-16T14:48:31+00:00","description":"Learn how to detect the floor using Kinect & measure the distance between a point in the 3D space. Source code + tutorial by Vangos Pterneas, Microsoft MVP.","breadcrumb":{"@id":"https:\/\/lightbuzz.com\/floor-kinect\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lightbuzz.com\/floor-kinect\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lightbuzz.com\/floor-kinect\/#primaryimage","url":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2017\/09\/floor-detection-csharp.jpg","contentUrl":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2017\/09\/floor-detection-csharp.jpg","width":800,"height":533,"caption":"Kinect Floor Detection"},{"@type":"BreadcrumbList","@id":"https:\/\/lightbuzz.com\/floor-kinect\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lightbuzz.com\/"},{"@type":"ListItem","position":2,"name":"Floor Detection using Kinect"}]},{"@type":"WebSite","@id":"https:\/\/lightbuzz.com\/#website","url":"https:\/\/lightbuzz.com\/","name":"LightBuzz","description":"Real-time motion tracking for iOS, Mac, Windows &amp; Linux","publisher":{"@id":"https:\/\/lightbuzz.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lightbuzz.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/lightbuzz.com\/#organization","name":"LightBuzz Inc.","url":"https:\/\/lightbuzz.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lightbuzz.com\/#\/schema\/logo\/image\/","url":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2016\/07\/lightbuzz-logo-color.svg","contentUrl":"https:\/\/lightbuzz.com\/wp-content\/uploads\/2016\/07\/lightbuzz-logo-color.svg","width":1,"height":1,"caption":"LightBuzz Inc."},"image":{"@id":"https:\/\/lightbuzz.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/lightbuzz.software","https:\/\/x.com\/pterneas","https:\/\/linkedin.com\/company\/5049888","https:\/\/www.youtube.com\/c\/lightbuzzsoftware"]},{"@type":"Person","@id":"https:\/\/lightbuzz.com\/#\/schema\/person\/ed6c9009282dab1defdd2a91f7f0f41f","name":"Vangos Pterneas","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5f2dc7e5d6f71d791670e58f223dbf19ad6cfd99c64ec08c9aae69f2996623ec?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5f2dc7e5d6f71d791670e58f223dbf19ad6cfd99c64ec08c9aae69f2996623ec?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f2dc7e5d6f71d791670e58f223dbf19ad6cfd99c64ec08c9aae69f2996623ec?s=96&r=g","caption":"Vangos Pterneas"},"description":"Vangos Pterneas is a software engineer, book author, and award-winning Microsoft Most Valuable Professional (2014-2019). Since 2012, Vangos has been helping Fortune-500 companies and ambitious startups create demanding motion-tracking applications. He's obsessed with analyzing and modeling every aspect of human motion using AI and Maths. Vangos shares his passion by regularly publishing articles and open-source projects to help and inspire fellow developers.","sameAs":["http:\/\/pterneas.com","https:\/\/facebook.com\/pterneas","https:\/\/x.com\/pterneas"],"url":"https:\/\/lightbuzz.com\/author\/vangos\/"}]}},"_links":{"self":[{"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/posts\/1548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/comments?post=1548"}],"version-history":[{"count":0,"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/posts\/1548\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/media\/1538"}],"wp:attachment":[{"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/media?parent=1548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/categories?post=1548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lightbuzz.com\/wp-json\/wp\/v2\/tags?post=1548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}