{"id":132,"date":"2021-01-26T12:33:25","date_gmt":"2021-01-26T20:33:25","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/?p=132"},"modified":"2021-04-19T14:36:57","modified_gmt":"2021-04-19T21:36:57","slug":"intro-to-microsoft-time-of-flight-tof-imaging-technology","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/intro-to-microsoft-time-of-flight-tof-imaging-technology\/","title":{"rendered":"Intro to Microsoft Time Of Flight (ToF)"},"content":{"rendered":"<p><strong>Brief:<\/strong> 3D vision sensing is very different than 2D imaging and time of flight is an effective technique to develop accurate object depth maps. <strong>\u00a0\u00a0\u00a0\u00a0<\/strong><\/p>\n<p>I have never created a Facebook or Twitter account, and this is my 1<sup>st<\/sup> ever blog post. I started working on Time of Flight (ToF) circa 2000 and ToF has been my passion and some would say my obsession. \u00a0In this first blog post I hope to share my journey, address how my thinking has evolved over time and share some basic concepts of what ToF is.<\/p>\n<p>Time of Flight is the process of measuring the distance to objects by measuring the time it takes for a signal sent by an observer to make the round trip from the observer to the object and back.\u00a0 \u00a0I co-founded a ToF Company called Canesta acquired by Microsoft in 2010 (my wife came up with this name:\u00a0 CANesta = Cyrus-Abbas-Nazim the names of my cofounders).\u00a0 Canesta\u2019s tagline was we do: \u201cElectronic Perception\u201d (i.e., giving machines the ability to see). At first, I <em>hazed<\/em> our marketing folks that came up with the term but in time I realized they got this tag line right.<\/p>\n<p>Over the many years that I have worked in this field I have butted heads with proponents of other depth technologies, and I believe I was fighting the <em>good fight<\/em> to make the best case for our ToF technology. \u00a0Some of the opinions expressed in this blog are my own and as the saying goes <em>I am happy to share those opinions<\/em>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im1.png\"><img decoding=\"async\" class=\"wp-image-85 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im1.png\" alt=\"Image im1\" width=\"189\" height=\"195\" \/><\/a> <a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im2.png\"><img decoding=\"async\" class=\"wp-image-86 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im2-300x261.png\" alt=\"Image im2\" width=\"245\" height=\"206\" \/><\/a>When I started in this field almost 20 years ago, I thought the problem was: The world is 3D and thus the problem is that there a many to one mapping of the real-world scenes onto a 2D image.\u00a0 I thought the job of a depth camera (such as a ToF Camera) was then to disambiguate the scene using depth, like making sense of the Pictures to the left.<\/p>\n<hr \/>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im3.png\"><img decoding=\"async\" class=\"size-medium wp-image-87 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im3-300x298.png\" alt=\"Image im3\" width=\"300\" height=\"298\" srcset=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im3-300x298.png 300w, https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im3-150x150.png 150w, https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im3.png 324w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>But I did not realize that scene brightness images here referred to as 2D images are very different from 3D data. A scene can look different under different lighting (see below) and hence there are many 2D images that correspond to a same 3D scene just as there are many 3D scenes that correspond to a 2D image. 3D data is thus fundamentally different from 2D data. It captures the shape of objects not how they may look under some lighting.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>I was at lunch with a colleague and was discussing how animals also need good 3D (depth) information about their world to survive. \u00a0He said <em>the natural world uses stereo <\/em>(read exclusively).\u00a0 I almost choked in disappointment and when I got home, I did a web search and found that in reality only a few animals used stereo and only in a small number of cases.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im4.png\"><img decoding=\"async\" class=\"size-full wp-image-88 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im4.png\" alt=\"Image im4\" width=\"270\" height=\"195\" \/><\/a><\/p>\n<p>Those animals were mostly predators using stereo to locate their prey in the close-range final <em>strike zone<\/em> as shown to the left. Most animals (e.g., whales) cannot even have both eyes simultaneously on the target.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im5.png\"><img decoding=\"async\" class=\"size-full wp-image-89 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im5.png\" alt=\"Image im5\" width=\"281\" height=\"215\" \/><\/a>Perhaps the vast majority of animals use motion stereo where the scene is observed from many different positions while the <a href=\"https:\/\/www.youtube.com\/watch?v=93zmq0JwnSo\">animal is in motion<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im6.png\"><img decoding=\"async\" class=\"size-full wp-image-90 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im6.png\" alt=\"Image im6\" width=\"301\" height=\"184\" \/><\/a><\/p>\n<p>However, echo location which is a form of acoustical ToF is also used in the animal and those creatures rely on it for their existence.\u00a0 A Bat can locate a <a href=\"https:\/\/www.youtube.com\/watch?v=MgRh_Q_xwys\">small insects<\/a> in darkness meters away. Dolphins can also <a href=\"https:\/\/www.youtube.com\/watch?v=CE5tZKFVlto\">locate fish<\/a> the same way.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Microsoft ToF technology is an optical ToF method.\u00a0 The speeds required by the optical transmitting and receiving devices far exceed that possible by biology so there are no biological examples (that I know of).\u00a0 However, I am pretty sure that if it were possible nature could use have used it advantageously \ud83d\ude0a.\u00a0 Microsoft ToF can be thought of as a massively parallel optical lidar on a CMOS chip where each pixel in the chip is capable of measuring the arrival time of the light impinging on it.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im7.png\"><img decoding=\"async\" class=\"size-medium wp-image-91 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im7-300x269.png\" alt=\"Image im7\" width=\"300\" height=\"269\" srcset=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im7-300x269.png 300w, https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im7.png 640w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>In Optical ToF light from the laser floods the entire scene simultaneously.\u00a0 The light from the laser then reflects off the various objects in the scene (e.g., face or foot) and is focused by a lens onto pixels in the sensor array.\u00a0 The lens focuses the light from the foot and face onto separate pixels. The pixels receiving light from (e.g.) the face can measure the round trip of light from the laser to the face and back to the sensor.<\/p>\n<p>Each Pixel in the sensor array measures the travel time of light to that Pixel and hence the distance to the object seen by that Pixel.\u00a0 The array of distance values from the Pixel array is called a depth map.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im8.png\"><img decoding=\"async\" class=\"size-medium wp-image-92 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im8-300x266.png\" alt=\"Image im8\" width=\"300\" height=\"266\" srcset=\"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im8-300x266.png 300w, https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-content\/uploads\/sites\/68\/2021\/01\/im8.png 516w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The amplitude of the transmitted light from the laser can be modelled as an offset sine wave (see LHS). \u00a0\u00a0The amplitude of the received light at a Pixel is also an offset sine wave but shifted by a phase<em> \u03a6<\/em> = 2d\u03c9\/c proportional to the travelled distance d of the light and the modulation frequency \u03c9 of the light amplitude.<\/p>\n<p>Each Pixel is capable of detecting the phase <em>\u03a6<\/em> rather than directly the distance d. \u00a0Therefore, the Microsoft ToF technology is <em>called phased based ToF<\/em> also known as <em>indirect ToF<\/em>.<\/p>\n<p>In future posts we will cover more advanced technology topics. Stay tuned&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Brief: 3D vision sensing is very different than 2D imaging and time of flight is an effective technique to develop accurate object depth maps. \u00a0\u00a0\u00a0\u00a0 I have never created a Facebook or Twitter account, and this is my 1st ever blog post. I started working on Time of Flight (ToF) circa 2000 and ToF has [&hellip;]<\/p>\n","protected":false},"author":50242,"featured_media":329,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[19],"tags":[13,3],"class_list":["post-132","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sensors","tag-iot","tag-sensors"],"acf":[],"blog_post_summary":"<p>Brief: 3D vision sensing is very different than 2D imaging and time of flight is an effective technique to develop accurate object depth maps. \u00a0\u00a0\u00a0\u00a0 I have never created a Facebook or Twitter account, and this is my 1st ever blog post. I started working on Time of Flight (ToF) circa 2000 and ToF has [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/posts\/132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/users\/50242"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/comments?post=132"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/posts\/132\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/media\/329"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/media?parent=132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/categories?post=132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-depth-platform\/wp-json\/wp\/v2\/tags?post=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}