tag:blogger.com,1999:blog-32305707637235415792024-03-13T13:47:52.984-07:00Raymond's BlogAndroid, iPhone, J2ME, CUDA, GPGPU, HDR Imaging.Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.comBlogger38125tag:blogger.com,1999:blog-3230570763723541579.post-70878172197146049502020-06-25T18:16:00.002-07:002020-06-25T18:16:40.830-07:00Hello Tomorrow - Trust in AR/VR<div class="separator" style="clear: both; text-align: left;">
First time doing a keynote remotely post-pandemic! I believe 2020 our life is never the same again. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Click on the video link below and it will bring you directly to my talk! </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: rgba(0 , 0 , 0 , 0.9); font-family: , , "blinkmacsystemfont" , "segoe ui" , "roboto" , "helvetica neue" , "fira sans" , "ubuntu" , "oxygen" , "oxygen sans" , "cantarell" , "droid sans" , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol" , "lucida grande" , "helvetica" , "arial" , sans-serif; font-size: 18px; text-align: left; white-space: pre-wrap;"><a href="https://youtu.be/EwDv8oE4fL0?t=8017">https://youtu.be/EwDv8oE4fL0?t=8017</a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/EwDv8oE4fL0/default_live.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/EwDv8oE4fL0?feature=player_embedded" width="320"></iframe></div>
<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com3tag:blogger.com,1999:blog-3230570763723541579.post-82663688068030111122020-05-26T13:14:00.000-07:002020-06-25T18:18:37.861-07:00VR in 2020: Oculus Quest <div class="separator" style="clear: both; text-align: left;">
Finally got a chance to try out my new baby. Just installed the SDK and tested out CustomHand, Grab, hand physics, and the spatial sound APIs.</div>
<div style="text-align: center;">
<br /></div>
<br />
It works pretty well given it's an all-in-one device. Impressive! Take a look at the videos below and you can get a quick idea of what we can do today.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/E-SJvvQJC1k/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/E-SJvvQJC1k?feature=player_embedded" width="320"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/qXrg0kbYtJQ/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/qXrg0kbYtJQ?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/sGSjgW6TNGY/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/sGSjgW6TNGY?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-56132526058853341002017-09-07T16:48:00.003-07:002019-10-04T13:59:51.361-07:00ALC + Hello Tomorrow KoreaBeen working on something rather exciting to me and many, and here I gave a new talk in Korea. Got to see Obama in person, and what a crazy experience.<br />
<br />
http://hellotomorrow.kr/speakers/raymond-chun-hing-lo/<br />
<br />
<br />
<a href="http://4.bp.blogspot.com/-zfa67RycZfs/WbHatOCwLMI/AAAAAAABeZY/qAjtLtBFJIAUGY36gqri93Rx73WCn0D0ACK4BGAYYCw/s1600/obama.jpeg" imageanchor="1"><img border="0" height="480" src="https://4.bp.blogspot.com/-zfa67RycZfs/WbHatOCwLMI/AAAAAAABeZY/qAjtLtBFJIAUGY36gqri93Rx73WCn0D0ACK4BGAYYCw/s640/obama.jpeg" width="640" /></a><br />
<a href="http://1.bp.blogspot.com/-PHZj9txhUc0/WbHa2HF5vZI/AAAAAAABeZg/WaGqEGk-oWUPmw82RWG_Iz4ecf0xoTPzwCK4BGAYYCw/s1600/IMG_6862.JPG" imageanchor="1"><img border="0" height="442" src="https://1.bp.blogspot.com/-PHZj9txhUc0/WbHa2HF5vZI/AAAAAAABeZg/WaGqEGk-oWUPmw82RWG_Iz4ecf0xoTPzwCK4BGAYYCw/s640/IMG_6862.JPG" width="640" /></a><br />
<a href="http://2.bp.blogspot.com/-6UrXY12cogw/WbHZvFCypzI/AAAAAAABeXQ/Dnz1l7c_f5MsKmWlv6MDVloiAMXjhm6LACK4BGAYYCw/s1600/LSC_7079.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-6UrXY12cogw/WbHZvFCypzI/AAAAAAABeXQ/Dnz1l7c_f5MsKmWlv6MDVloiAMXjhm6LACK4BGAYYCw/s320/LSC_7079.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-Nz4Hy8MP0Xk/WbHZxaMRN0I/AAAAAAABeYE/1Ws4feAfsz07kRWlSyvhGWZe-PBQS_K4QCK4BGAYYCw/s1600/LSC_7083.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-Nz4Hy8MP0Xk/WbHZxaMRN0I/AAAAAAABeYE/1Ws4feAfsz07kRWlSyvhGWZe-PBQS_K4QCK4BGAYYCw/s320/LSC_7083.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-ObM8Vt6gyrw/WbHZukzV8oI/AAAAAAABeXI/krKRT6ojiTQWEuc1oU9KYEL57QrHGMuBgCK4BGAYYCw/s1600/LSC_7084.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-ObM8Vt6gyrw/WbHZukzV8oI/AAAAAAABeXI/krKRT6ojiTQWEuc1oU9KYEL57QrHGMuBgCK4BGAYYCw/s320/LSC_7084.jpg" width="320" /></a><a href="http://1.bp.blogspot.com/-XxV6EZG6Qjg/WbHZxGd1yhI/AAAAAAABeX4/nKaeh4ZcHMQDqK_fDyoeGk1hsvvy4DDuACK4BGAYYCw/s1600/LSC_7087.jpg" imageanchor="1"><img border="0" height="213" src="https://1.bp.blogspot.com/-XxV6EZG6Qjg/WbHZxGd1yhI/AAAAAAABeX4/nKaeh4ZcHMQDqK_fDyoeGk1hsvvy4DDuACK4BGAYYCw/s320/LSC_7087.jpg" width="320" /></a><a href="http://1.bp.blogspot.com/-XQMbrfxvbcg/WbHZsWcQCtI/AAAAAAABeWY/g4ZQjCiwb_Y2R0C1qh3tsqYqlMnSp7nZwCK4BGAYYCw/s1600/LSC_7103.jpg" imageanchor="1"><img border="0" height="213" src="https://1.bp.blogspot.com/-XQMbrfxvbcg/WbHZsWcQCtI/AAAAAAABeWY/g4ZQjCiwb_Y2R0C1qh3tsqYqlMnSp7nZwCK4BGAYYCw/s320/LSC_7103.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-Wbr32ZOKSxA/WbHZsMlGPHI/AAAAAAABeWQ/l5pbqcYFCHQJ4SJTFG2as-bxgVhgW_0jQCK4BGAYYCw/s1600/LSC_7105.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-Wbr32ZOKSxA/WbHZsMlGPHI/AAAAAAABeWQ/l5pbqcYFCHQJ4SJTFG2as-bxgVhgW_0jQCK4BGAYYCw/s320/LSC_7105.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-j0HqvHkbmY8/WbHZuTftdBI/AAAAAAABeW8/IU2ZL1QoWkI7aYOzftcJB6XZmf7dLi_QgCK4BGAYYCw/s1600/LSC_7111.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-j0HqvHkbmY8/WbHZuTftdBI/AAAAAAABeW8/IU2ZL1QoWkI7aYOzftcJB6XZmf7dLi_QgCK4BGAYYCw/s320/LSC_7111.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-glAIrt7zWe8/WbHZtkDNmHI/AAAAAAABeWw/EnBuaHZ6laUA0KxLwHsG93FHQCU9OSoTwCK4BGAYYCw/s1600/LSC_7113.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-glAIrt7zWe8/WbHZtkDNmHI/AAAAAAABeWw/EnBuaHZ6laUA0KxLwHsG93FHQCU9OSoTwCK4BGAYYCw/s320/LSC_7113.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-lJ88akolhIk/WbHZuX82LNI/AAAAAAABeXA/EMn0i5s1bbYEchQOXFEgbWRA6lnzD_tnwCK4BGAYYCw/s1600/LSC_7115.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-lJ88akolhIk/WbHZuX82LNI/AAAAAAABeXA/EMn0i5s1bbYEchQOXFEgbWRA6lnzD_tnwCK4BGAYYCw/s320/LSC_7115.jpg" width="320" /></a><a href="http://4.bp.blogspot.com/-zVfbcKJOFmE/WbHZqfCHFeI/AAAAAAABeWA/1LfABnfhPOIcULNdb6PBQLPF9YorU1ovwCK4BGAYYCw/s1600/LSC_7123.jpg" imageanchor="1"><img border="0" height="213" src="https://4.bp.blogspot.com/-zVfbcKJOFmE/WbHZqfCHFeI/AAAAAAABeWA/1LfABnfhPOIcULNdb6PBQLPF9YorU1ovwCK4BGAYYCw/s320/LSC_7123.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-h6LwFxte_88/WbHZx3VYcBI/AAAAAAABeY0/CPSLo6i5bkE_VBuXC_5OrtaEPLYd0zq4wCK4BGAYYCw/s1600/LSC_7128.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-h6LwFxte_88/WbHZx3VYcBI/AAAAAAABeY0/CPSLo6i5bkE_VBuXC_5OrtaEPLYd0zq4wCK4BGAYYCw/s320/LSC_7128.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-RSqbZn9rM30/WbHZyHUrR5I/AAAAAAABeZA/i0QPHJ3K-bg3WTblh39CU55vrro4MqqhgCK4BGAYYCw/s1600/LSC_7136.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-RSqbZn9rM30/WbHZyHUrR5I/AAAAAAABeZA/i0QPHJ3K-bg3WTblh39CU55vrro4MqqhgCK4BGAYYCw/s320/LSC_7136.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-cqOW-IcNIXM/WbHZvnucFuI/AAAAAAABeXY/RyLH-uaNDk8RRNh-B-6nu_zxT7DIZ6UPgCK4BGAYYCw/s1600/LSC_7212.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-cqOW-IcNIXM/WbHZvnucFuI/AAAAAAABeXY/RyLH-uaNDk8RRNh-B-6nu_zxT7DIZ6UPgCK4BGAYYCw/s320/LSC_7212.jpg" width="320" /></a><a href="http://4.bp.blogspot.com/-4zphceh_kx0/WbHZrj-i2XI/AAAAAAABeWI/OQqW4c1PHT8c1e2QEPoCPAIoqFGADNK2ACK4BGAYYCw/s1600/LSC_7219.jpg" imageanchor="1"><img border="0" height="213" src="https://4.bp.blogspot.com/-4zphceh_kx0/WbHZrj-i2XI/AAAAAAABeWI/OQqW4c1PHT8c1e2QEPoCPAIoqFGADNK2ACK4BGAYYCw/s320/LSC_7219.jpg" width="320" /></a><a href="http://4.bp.blogspot.com/-fAucMczSZLc/WbHZv2ytrhI/AAAAAAABeXg/em6XgiGRPWkmJ8D6s3LtYZAKZm4_Ep4pQCK4BGAYYCw/s1600/LSC_7223.jpg" imageanchor="1"><img border="0" height="213" src="https://4.bp.blogspot.com/-fAucMczSZLc/WbHZv2ytrhI/AAAAAAABeXg/em6XgiGRPWkmJ8D6s3LtYZAKZm4_Ep4pQCK4BGAYYCw/s320/LSC_7223.jpg" width="320" /></a><a href="http://1.bp.blogspot.com/-7zpd0AWLaYw/WbHZsnD7g0I/AAAAAAABeWg/v_pfnQIAH-cmHxtvp5zEbvIEonNhZJmiwCK4BGAYYCw/s1600/LSC_7228.jpg" imageanchor="1"><img border="0" height="213" src="https://1.bp.blogspot.com/-7zpd0AWLaYw/WbHZsnD7g0I/AAAAAAABeWg/v_pfnQIAH-cmHxtvp5zEbvIEonNhZJmiwCK4BGAYYCw/s320/LSC_7228.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-E7wLo4Xuze8/WbHZtBDnHjI/AAAAAAABeWo/Nw6Q0TevOC0SSTjuG2aiLSIhK1NnaddDQCK4BGAYYCw/s1600/LSC_7232.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-E7wLo4Xuze8/WbHZtBDnHjI/AAAAAAABeWo/Nw6Q0TevOC0SSTjuG2aiLSIhK1NnaddDQCK4BGAYYCw/s320/LSC_7232.jpg" width="320" /></a><a href="http://4.bp.blogspot.com/-2blEKUEPzp0/WbHZxik2zVI/AAAAAAABeY8/l6U0fD4upt0bEK418elQ2OuOVUEsrWhVQCK4BGAYYCw/s1600/LSC_7400.jpg" imageanchor="1"><img border="0" height="213" src="https://4.bp.blogspot.com/-2blEKUEPzp0/WbHZxik2zVI/AAAAAAABeY8/l6U0fD4upt0bEK418elQ2OuOVUEsrWhVQCK4BGAYYCw/s320/LSC_7400.jpg" width="320" /></a><a href="http://1.bp.blogspot.com/-ChPTQp_gk3A/WbHZxg0H97I/AAAAAAABeYU/k7Ini9KYvEQoGBS_9n1vcEu_qxj1VjfcACK4BGAYYCw/s1600/LSC_7401.jpg" imageanchor="1"><img border="0" height="213" src="https://1.bp.blogspot.com/-ChPTQp_gk3A/WbHZxg0H97I/AAAAAAABeYU/k7Ini9KYvEQoGBS_9n1vcEu_qxj1VjfcACK4BGAYYCw/s320/LSC_7401.jpg" width="320" /></a><a href="http://1.bp.blogspot.com/-SqK1qdOyEsU/WbHZxY98x5I/AAAAAAABeYg/N1K7IhzmloQgYKxk1pnbdg5qSxBefxPnACK4BGAYYCw/s1600/LSC_7431.jpg" imageanchor="1"><img border="0" height="213" src="https://1.bp.blogspot.com/-SqK1qdOyEsU/WbHZxY98x5I/AAAAAAABeYg/N1K7IhzmloQgYKxk1pnbdg5qSxBefxPnACK4BGAYYCw/s320/LSC_7431.jpg" width="320" /></a><a href="http://1.bp.blogspot.com/-rC90xznoCqA/WbHZxtcf4sI/AAAAAAABeYo/bJ0GvdIXBH0q0TpGb3SsZHI1g-YI48Z1QCK4BGAYYCw/s1600/LSC_7448.jpg" imageanchor="1"><img border="0" height="213" src="https://1.bp.blogspot.com/-rC90xznoCqA/WbHZxtcf4sI/AAAAAAABeYo/bJ0GvdIXBH0q0TpGb3SsZHI1g-YI48Z1QCK4BGAYYCw/s320/LSC_7448.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-6HzOpGOQLJw/WbHZwguh9qI/AAAAAAABeXo/d7wpNXwz4sI1_DquxrIRsxW2120OxxcAgCK4BGAYYCw/s1600/LSC_7660.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-6HzOpGOQLJw/WbHZwguh9qI/AAAAAAABeXo/d7wpNXwz4sI1_DquxrIRsxW2120OxxcAgCK4BGAYYCw/s320/LSC_7660.jpg" width="320" /></a><a href="http://4.bp.blogspot.com/-OkqwV6sQOjQ/WbHZxk4aElI/AAAAAAABeYQ/vw9FVmbUKw0jZfUQKDdzzD_RMkN0SrQgACK4BGAYYCw/s1600/LSC_7661.jpg" imageanchor="1"><img border="0" height="213" src="https://4.bp.blogspot.com/-OkqwV6sQOjQ/WbHZxk4aElI/AAAAAAABeYQ/vw9FVmbUKw0jZfUQKDdzzD_RMkN0SrQgACK4BGAYYCw/s320/LSC_7661.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-AGiBeB5iB3w/WbHZxOpm7TI/AAAAAAABeX0/IadK1_RENtYSqTSViz_I4McUt6chvY-oACK4BGAYYCw/s1600/LSC_7706.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-AGiBeB5iB3w/WbHZxOpm7TI/AAAAAAABeX0/IadK1_RENtYSqTSViz_I4McUt6chvY-oACK4BGAYYCw/s320/LSC_7706.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-dpfdiirXcsQ/WbHZzF2qn8I/AAAAAAABeZI/qy_1_TWi-KEMp1oti8UmBzvZ9Gwket4bACK4BGAYYCw/s1600/LSC_7708.jpg" imageanchor="1"><img border="0" height="213" src="https://2.bp.blogspot.com/-dpfdiirXcsQ/WbHZzF2qn8I/AAAAAAABeZI/qy_1_TWi-KEMp1oti8UmBzvZ9Gwket4bACK4BGAYYCw/s320/LSC_7708.jpg" width="320" /></a><a href="http://3.bp.blogspot.com/-EPELXN-V3L4/WbHZxw4sVXI/AAAAAAABeYk/UEBdBaYpD5cR2ElgHgajv-DfmNNbZTESACK4BGAYYCw/s1600/LSC_7728.jpg" imageanchor="1"><img border="0" height="213" src="https://3.bp.blogspot.com/-EPELXN-V3L4/WbHZxw4sVXI/AAAAAAABeYk/UEBdBaYpD5cR2ElgHgajv-DfmNNbZTESACK4BGAYYCw/s320/LSC_7728.jpg" width="320" /></a><br />
<br />
Always feel free to reach out to me here.<br />
<br />
<a href="https://www.linkedin.com/in/raymondlo84">https://www.linkedin.com/in/raymondlo84</a>Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com2tag:blogger.com,1999:blog-3230570763723541579.post-57608476266453208502017-06-13T18:48:00.001-07:002017-06-13T18:48:58.233-07:00PhD Completion! <h4 style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #0e0e0e; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 1.5em; margin: 1.5em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-weight: normal;">Here is my PhD Abstract :) If anyone interested in this, I can privately send a draft for preview :) </span></h4>
<h4 style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #0e0e0e; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 1.5em; margin: 1.5em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
Abstract</h4>
<pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: #0e0e0e; font-family: Arial, Helvetica, sans-serif; font-size: 12px; outline: 0px; overflow-x: auto; padding: 0px; vertical-align: baseline; white-space: pre-wrap !important; width: 500px; word-wrap: break-word;">In this thesis, I present a new generation of Augmediated Reality Digital Eye Glass (DEG) that embodies the principles of Humanistic Intelligence (HI). In particular, this thesis addresses the fundamental issues in the practical realization of the HI framework, most notably the dynamic range of sensors and the design of a natural human-computer interface based on three dimensional (3D) gestural input.
First, to address the dynamic range limitation of color sensors, a practical implementation of high dynamic range (HDR) image composition and tone mapping algorithms were designed on both Field-programmable Gate Arrays (FPGAs) and Graphics Processing Units (GPUs) to enable real-time processing of video streams. The algorithms are optimized for wearable applications and provide a constant runtime performance independent of the scene. To demonstrate the robustness of the algorithm, a specialized DEG helmet was designed to work under the most extreme lighting condition - tungsten inert gas welding.
In addition, I discuss the development of a novel HDR technique for 3D depth sensing cameras called 3DHDR. Here, I present a method of creating 3D HDR depth maps using an array of 3D depth sensing cameras designed for wearable applications. The system provides a tonal and spatial range that significantly exceeds the capability of any individual depth sensor.
Finally, I present an untethered wearable solution of DEG with 3D gestural input based on 3DHDR. The recognition system provides various mode of operations and allows users to integrate gesture-based input to control the Augmediated Reality DEG system. The final prototype has been translated to a development platform for use in future wearable computing research to further explore the HI framework.</pre>
Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-61748094312033136832016-12-14T14:13:00.000-08:002016-12-14T14:13:10.589-08:00Hello Tomorrow + We Tencent <div class="separator" style="clear: both; text-align: center;">
Here we go, the latest two talks I gave at Paris and Beijing! </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/GLVmkDVnaiQ/0.jpg" src="https://www.youtube.com/embed/GLVmkDVnaiQ?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/qF-iSheueGo/0.jpg" src="https://www.youtube.com/embed/qF-iSheueGo?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-75176484758052326722016-11-01T15:36:00.001-07:002016-11-01T15:36:22.181-07:00Hello Tomorrow<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/KXhbBLg4WDE/0.jpg" src="https://www.youtube.com/embed/KXhbBLg4WDE?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<br />
My talk starts at 4:29:49. Enjoy.<br />
<br />
https://youtu.be/KXhbBLg4WDE?t=4h29m49s<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-70861528750802590932015-09-20T19:48:00.002-07:002015-09-20T22:26:41.177-07:00How to write a multipage TIFF file Today, I just realized that it is a pain to write multipage TIFF images with OpenCV. I assume that it is not officially supported?<br />
<br />
I wrote this simple sample code for all medical students with almost no programming experience! This code will allow you to dump your image sequence into a multipage tiff (or tiff stack?) that is readable by any machine or tools such as Matlab. <br />
<br />
Here is a link to the code: <br />
https://gist.github.com/anonymous/e827730f06aa7066afe8<br />
<br />
And you can preview it here. But I don't recommend copying directly here just in case the symbols or spacing got messed up.<br />
<br />
#include "tiffio.h"<br />
#include "stdio.h"<br />
#include "stdlib.h"<br />
#include <string.h> /* memset */<br />
#include <unistd.h> /* close */<br />
<br />
int main(int argc, char* argv[])<br />
{<br />
TIFF *out = TIFFOpen("new.tiff","w") ;<br />
<br />
if (out)<br />
{<br />
const int NPAGES = 10;<br />
int page;<br />
for (page = 0; page < NPAGES; page++){<br />
uint32 imagelength = 100;<br />
uint32 imagewidth=200;<br />
uint8 * buf;<br />
uint32 row, col, n;<br />
uint16 config, nsamples = 3;<br />
config = PLANARCONFIG_CONTIG ;<br />
<br />
TIFFSetField(out, TIFFTAG_IMAGELENGTH, imagelength);<br />
TIFFSetField(out, TIFFTAG_IMAGEWIDTH, imagewidth);<br />
TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);<br />
TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, nsamples);<br />
TIFFSetField(out, TIFFTAG_COMPRESSION, COMPRESSION_LZW) ;<br />
TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, 8) ;<br />
TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(out, imagewidth*nsamples));<br />
<br />
/* We are writing single page of the multipage file */<br />
TIFFSetField(out, TIFFTAG_SUBFILETYPE, FILETYPE_PAGE);<br />
TIFFSetField(out, TIFFTAG_PAGENUMBER, page, NPAGES);<br />
<br />
printf("writing %d x %d, nsamples %d", imagewidth, imagelength, nsamples);<br />
<br />
buf = new uint8 [imagewidth*nsamples] ;<br />
<br />
for (row = 0; row < imagelength; row++){<br />
<br />
for(col=0; col < imagewidth; col++){<br />
for(n = 0 ; n < nsamples ; ++n)<br />
{ <br />
//writing data -- replace with your own data<br />
buf[col*nsamples+n] = page*row % 255 ;<br />
}<br />
}<br />
if (TIFFWriteScanline(out, buf, row) != 1 ) <br />
{<br />
printf("Unable to write a row\n") ;<br />
break ;<br />
} <br />
}<br />
TIFFWriteDirectory(out);<br />
_TIFFfree(buf);<br />
}<br />
TIFFClose(out);<br />
}<br />
return 0;<br />
}<br />
<br />
To compile it in Mac (assuming you have Macport), just run this in command line...<br />
<br />
g++ main.cpp -I /opt/local/include -L/opt/local/lib -ltiff<br />
<br />
... Enjoy! <br />
<br />
<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com1tag:blogger.com,1999:blog-3230570763723541579.post-48730329730702436512015-08-26T22:23:00.000-07:002015-08-26T22:23:49.871-07:00Book is out :)<br />
<br />
<a href="http://www.amazon.com/OpenGL-Data-Visualization-Cookbook-Raymond/dp/1782169725"><img alt="http://www.amazon.com/OpenGL-Data-Visualization-Cookbook-Raymond/dp/1782169725" id="fancybox-img" src="https://www.packtpub.com/sites/default/files/9727OS_OpenGL%20Data%20Visualization_0.jpg" /></a><br />
<br />
You can buy a copy at: http://www.amazon.com/OpenGL-Data-Visualization-Cookbook-Raymond/dp/1782169725<br />
<br />The book comes with all source code that you would need to build applications using OpenGL in Windows, Linux, Mac OS X or Android! I've also put in some effort to link OpenCV and the Android Sensor Manager in Android, and so others who are interested in building interactive application have a simple-to-use code to get started. <br />
<br />
With a little bit of hack, you can connect the code base to any depth sensor and OpenCV! That allows you to build lots of applications easily.<br />
<br />
Although the book is out, there are still lots I would like to cover, e.g., OpenGL lighting techniques, Compute Shader, and OpenCL/CUDA! Those are super useful for data visualization! and will be covered if there is a great sale to this book this time. <br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-20581463457877655832015-03-25T10:44:00.001-07:002015-03-29T20:13:20.173-07:00Meta Update & New BookAugmented Reality eyeglasses is definitely a hot topic these days. At Meta, there are lots of press, and I will start posting ones that I had interview with next.<br />
<br />
<a href="http://hypernetec.com/interview-with-raymond-lo-meta-co-founder-cto-bringing-your-superhero-to-life/">http://hypernetec.com/interview-with-raymond-lo-meta-co-founder-cto-bringing-your-superhero-to-life/</a><br />
<br />
Also, now my new book is ready for pre-order. You can find the latest work here, especially on the OpenGL + OpenCV side. This book is aimed for beginners who want to know how to get started. I can always answer more difficult problem here if anyone asks.<br />
<br />
<a href="https://www.packtpub.com/application-development/opengl-data-visualization-cookbook">https://www.packtpub.com/application-development/opengl-data-visualization-cookbook</a><br />
<br />
More to come! Stay tuned...<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="333" mozallowfullscreen="" msallowfullscreen="" oallowfullscreen="" src="https://www.flickr.com/photos/79140379@N05/16721271407/player/" webkitallowfullscreen="" width="500"></iframe>
https://www.flickr.com/photos/79140379@N05/16721271407/<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-8018947685267823332013-11-10T23:05:00.001-08:002013-11-10T23:05:54.844-08:00Meta: Space glassesHi all,<br />
<br />
To no surprise I'm now the CTO of meta (https://www.spaceglasses.com/).<br />
<br />
<object height="315" width="560"><param name="movie" value="//www.youtube-nocookie.com/v/b7I7JuQXttw?version=3&hl=en_US"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="//www.youtube-nocookie.com/v/b7I7JuQXttw?version=3&hl=en_US" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>
<br />
<br />
Currently, we are hiring individual who are talented and motivated!<br />
<br />
https://www.spaceglasses.com/careers<br />
<br />
Feel free to drop me a line and ...<br />
<br />
DEMO! or Die ;)Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com3tag:blogger.com,1999:blog-3230570763723541579.post-44651962160783825962013-07-30T03:21:00.001-07:002018-08-20T23:57:29.981-07:00Through the Glass<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/9fI7pZjtz8s/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/9fI7pZjtz8s?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
Surface tracking based on depth map seems to be robust enough to handle most of the common issues with the color based tracking algorithms. Here is a demo that shows how we can project an image onto 3D seamlessly using OpenGL and our own tracking algorithm.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/JZ8NSfdZnUA/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/JZ8NSfdZnUA?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/atya9aJgU2M/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/atya9aJgU2M?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/OEkBqSM6cE4/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/OEkBqSM6cE4?feature=player_embedded" width="320"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ejKPu1rETLY/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/ejKPu1rETLY?feature=player_embedded" width="320"></iframe></div>
<br />
<b>Augmediated reality system based on 3D camera selfgesture sensing</b><br />
http://www.eyetap.org/papers/docs/IEEE_ISTAS13_Selfgesture_Lo_etal.pdf<br />
<br />
<b>Three Dimensional High Dynamic Range Veillance for 3D Range-Sensing Cameras</b><br />
https://ieeexplore.ieee.org/abstract/document/6613127/Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-45803261948871031032013-06-29T20:17:00.000-07:002013-06-29T20:17:04.218-07:00ISTAS13 and much more...<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Lz3KX9tbgj4?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-28885966380332888102013-05-12T22:26:00.000-07:002013-05-12T22:26:34.059-07:00EyeTap X demo!<div class="separator" style="clear: both; text-align: left;">
Beginning of the aug-mediated reality system... Showcasing that every Wednesday from 5-7pm! outside 330 Dundas Street West!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-wCj_H-lM6eE/UZB2b0ZWJ7I/AAAAAAAAAm0/dq2gJwDf3Fg/s1600/IMG_1028.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://1.bp.blogspot.com/-wCj_H-lM6eE/UZB2b0ZWJ7I/AAAAAAAAAm0/dq2gJwDf3Fg/s320/IMG_1028.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-dJPigq_FFWI/UZB2hyLk1fI/AAAAAAAAAm8/mptua2Zbn9I/s1600/IMG_1029.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-dJPigq_FFWI/UZB2hyLk1fI/AAAAAAAAAm8/mptua2Zbn9I/s320/IMG_1029.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-TMWLMZxwn5o/UZB2kYAgpaI/AAAAAAAAAnE/NPRFrjoMpFI/s1600/IMG_1032.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-TMWLMZxwn5o/UZB2kYAgpaI/AAAAAAAAAnE/NPRFrjoMpFI/s320/IMG_1032.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-3V_8fpPEeFY/UZB2mL-mvOI/AAAAAAAAAnM/n6hBsRecIJU/s1600/IMG_1033.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-3V_8fpPEeFY/UZB2mL-mvOI/AAAAAAAAAnM/n6hBsRecIJU/s320/IMG_1033.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-9fbZjZ6oEcM/UZB2qSovgmI/AAAAAAAAAnU/u8in7EnQM78/s1600/IMG_1034.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-9fbZjZ6oEcM/UZB2qSovgmI/AAAAAAAAAnU/u8in7EnQM78/s320/IMG_1034.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-OWwRmh-ntGo/UZB2vs6RqEI/AAAAAAAAAnc/lqZrjT9Nc-s/s1600/IMG_1035.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-OWwRmh-ntGo/UZB2vs6RqEI/AAAAAAAAAnc/lqZrjT9Nc-s/s320/IMG_1035.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qudHE1UdeaU/UZB20HEa10I/AAAAAAAAAnk/oCyZDO_AHvQ/s1600/IMG_1037.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-qudHE1UdeaU/UZB20HEa10I/AAAAAAAAAnk/oCyZDO_AHvQ/s320/IMG_1037.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QGq6Quq1CTs/UZB23hlR-zI/AAAAAAAAAns/UwdgNrRxD5U/s1600/IMG_1038.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-QGq6Quq1CTs/UZB23hlR-zI/AAAAAAAAAns/UwdgNrRxD5U/s320/IMG_1038.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-CZxOpzE_-3Y/UZB26LMlVXI/AAAAAAAAAn0/AEA7tn7_iL8/s1600/IMG_1041.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-CZxOpzE_-3Y/UZB26LMlVXI/AAAAAAAAAn0/AEA7tn7_iL8/s320/IMG_1041.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-vpmBe03-dXc/UZB277A9c5I/AAAAAAAAAn8/kkza99XXAEk/s1600/IMG_1049.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://1.bp.blogspot.com/-vpmBe03-dXc/UZB277A9c5I/AAAAAAAAAn8/kkza99XXAEk/s320/IMG_1049.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-C37N_3_JPLM/UZB2_3w9sLI/AAAAAAAAAoE/iNToGlODi0A/s1600/IMG_1050.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-C37N_3_JPLM/UZB2_3w9sLI/AAAAAAAAAoE/iNToGlODi0A/s320/IMG_1050.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-wRaPmye26cI/UZB3DGnTzeI/AAAAAAAAAoM/AMIDXMCVG1U/s1600/IMG_1055.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-wRaPmye26cI/UZB3DGnTzeI/AAAAAAAAAoM/AMIDXMCVG1U/s320/IMG_1055.JPG" width="320" /></a></div>
<br />
<div>
<br /></div>
Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com2tag:blogger.com,1999:blog-3230570763723541579.post-13435625004140976852012-12-16T19:38:00.000-08:002012-12-16T19:38:02.923-08:00Hand Tracking (IMPROVED)Finally fixed some of the issues in the previous hand tracker, and now it works almost as good as the one provided by NITE.<br />
<br />
The algorithm is actually very light in resource, and I've already ported it to run on the Android. Stay tuned. =)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/awwrGV8NjG8?feature=player_embedded' frameborder='0'></iframe></div>
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com10tag:blogger.com,1999:blog-3230570763723541579.post-7038029659772702782012-12-13T18:07:00.001-08:002012-12-13T18:07:59.385-08:00Odroid-X2Just received the Odroid-X2 from <a href="http://www.hardkernel.com/">www.hardkernel.com</a> today. I've to first thank HardKernel for supporting my work by sending me the board along with the accessories. They are just simply amazing when it comes to making these decisions of giving out hardware to developers. Quick and simple.<br />
<br />
Here I will show the difference between the X2 and X1 and the potential of such powerful devices, particularly in the field of wearable computing.<br />
<br />
Stay tuned... =)Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-53775806439775299152012-12-03T01:51:00.001-08:002012-12-03T13:58:40.903-08:00Amazing 20 fps on Odroid-U2<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='266' src='https://www.youtube.com/embed/SBQBx7BgCKc?feature=player_embedded' frameborder='0'></iframe></div>
<br />
The Odroid-U2 (2Ghz!) rocks =) Thanks hardkernel for making this demo video of the real-time blob tracking + 3D rendering apps with OpenNI cameras. I'll be updating the tracker to perform as good as OpenNI hand tracker next. Still have a few bugs to address.<br />
<br />
The source is actual opened to public! Feel free to commit or make changes to the code as you wish.<br />
<br />
http://svn.pointclouds.org/pcl/trunk/mobile_apps/android/OpenNIRecorder/<br />
<br />
The compilation may takes a long while to setup (see my previous blogs and README), but you can always download the apk and the openni driver to your own Android devices, and try it out.<br />
<br />
<br />
See:<br />
<br />
http://odroid.foros-phpbb.com/t1741-odroid-x-android-404-openni-opencv-pcl<br />
<br />
Joy! and Thanks HardKernel for reserving the Odroid-U2! =) Donation is the only way to keep this project going.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-v9OwH_Aq9wI/ULbHPcLlD1I/AAAAAAAAAgw/RCIN22_drPg/s1600/12+-+1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="http://3.bp.blogspot.com/-v9OwH_Aq9wI/ULbHPcLlD1I/AAAAAAAAAgw/RCIN22_drPg/s400/12+-+1" width="400" /></a></div>
<br />
<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com9tag:blogger.com,1999:blog-3230570763723541579.post-49406176704413218122012-11-28T17:30:00.000-08:002012-11-28T17:30:45.358-08:00Odroid-X + Android 4.0.4 + OpenNI + OpenCV + PCLFinally, I've ported everything to Android! Now it even runs on Odroid-X! ;)<br />
Check out the videos. It runs @ 30fps! with tracking! ;) Cannot ask for more from such a small machine. I will write a tutorial on how to setup these on Odroid-X next. It would be useful?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/HVqe8nps3po?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/78MXCXqKo-Y?feature=player_embedded' frameborder='0'></iframe></div>
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com3tag:blogger.com,1999:blog-3230570763723541579.post-90174629367388540302012-09-25T20:39:00.001-07:002012-09-25T20:43:15.063-07:00Using Accelerometer with Kinect/Xtion on Tegra 3A trivial solution to adding accelerometer to Xtion or Kinect is:<br />
<br />
1. Firmly attach the Xtion to the Tegra 3, hot glue is recommended :)<br />
2. Initialize the Accelerometer callbacks (the events) and set it to 30Hz. Can go higher if we would like to smooth the data.<br />
3. Apply a simple lowpass filter to the raw accelerometer data, and use it for the tracking next.<br />
<br />
You can found these new implementation on my svn repository! Have fun!<br />
<br />
<b>Demo Video:</b><br />
Coming up next!<br />
<br />
-rayRaymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com2tag:blogger.com,1999:blog-3230570763723541579.post-29460751473083680682012-09-24T13:38:00.002-07:002012-09-24T13:38:26.206-07:00Enable stdout and stderr for debugging Android?<br />
<br />
<pre class="lang-c prettyprint" style="background-color: #eeeeee; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">$ adb shell stop
$ adb shell setprop log</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">redirect</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">stdio </span><span class="kwd" style="background-color: transparent; border: 0px; color: darkblue; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
$ adb shell start</span></code></pre>
<br />
It is often a pain to output to the terminal using C++ on Android. Here is the best solution I came across!<br />
<br />
Source: <a href="http://stackoverflow.com/questions/8870174/is-stdcout-usable-in-android-ndk">http://stackoverflow.com/questions/8870174/is-stdcout-usable-in-android-ndk</a><br />
<br />
I/stdout ( 7105): Saved 5 data points to input:<br />
I/stdout ( 7105): 0.162692 -0.85557 0.94647<br />
I/stdout ( 7105): 0.0343666 0.713827 -0.191865<br />
I/stdout ( 7105): 0.42557 -0.339379 -0.858582<br />
I/stdout ( 7105): -0.289159 -0.268988 -0.126301<br />
I/stdout ( 7105): 0.64959 0.285136 -0.438644<br />
I/stdout ( 7105): size:5<br />
I/stdout ( 7105): Transformed 5 data points:<br />
I/stdout ( 7105): 0.862692 -0.85557 0.94647<br />
I/stdout ( 7105): 0.734367 0.713827 -0.191865<br />
I/stdout ( 7105): 1.12557 -0.339379 -0.858582<br />
I/stdout ( 7105): 0.410841 -0.268988 -0.126301<br />
I/stdout ( 7105): 1.34959 0.285136 -0.438644<br />
I/stdout ( 7105): has converged:1 score: 1.28964e-13<br />
I/stdout ( 7105): 1 2.38419e-07 1.93715e-07 0.7<br />
I/stdout ( 7105): 2.5332e-07 1 -2.19792e-07 -1.2368e-07<br />
I/stdout ( 7105): -7.45059e-08 -3.68804e-07 0.999999 -1.38581e-07<br />
I/stdout ( 7105): 0 0 0 1<br />
<div>
<br /></div>
<div>
P.S. Now Iterative Closest Point (ICP) algorithm is running on Android properly! Slow but it works! :) 3D reconstruction on Android is coming up next!</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
-ray</div>
Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com1tag:blogger.com,1999:blog-3230570763723541579.post-82957658241853582722012-09-24T11:46:00.000-07:002012-09-24T13:39:30.879-07:00OpenCV + PCL = FLANN conflicts?When we try to integrate the PCL and OpenCV library, often times you will run into this problem:<br />
<blockquote class="tr_bq">
<i>../../pcl-superbuild/build/CMakeExternals/Install/flann-android/include/flann/util/saving.h:113: error: reference to 'flann' is ambiguous</i><i>../../pcl-superbuild/build/CMakeExternals/Install/flann-android/include/flann/defines.h:76: error: candidates are: namespace flann { }</i><i>../../OpenCV-2.4.2-android-sdk/sdk/native/jni/include/opencv2/flann/miniflann.hpp:55: error: namespace cv::flann { }</i></blockquote>
<br />
The solution to this is simple. Take away the namespace will do the trick.<br />
<br />
using namespace cv;<br />
using namespace pcl;<br />
<br />
Of course, then you have to add cv:: and pcl:: too the rest of your code, but it is simple.Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-87637585596319787312012-09-19T13:14:00.002-07:002012-09-19T13:14:35.146-07:00ASUS Xtion Pro Live + Tegra 3 Now we are officially supporting ASUS Xtion Pro Live and also ASUS Xtion Pro (no RGB camera).<br />
<br />
<a href="http://www.newegg.ca/Product/Product.aspx?Item=N82E16826785030">http://www.newegg.ca/Product/Product.aspx?Item=N82E16826785030</a><br />
<br />
ASUS didn't reply to my email, and didn't even donate me anything :( Well... No support so far, but I'm supporting ASUS :(!!<br />
<br />
<b>Source code: </b><br />
<br />
cd ~/NVPACK/TDK_Samples/tegra_android_native_samples_v10p00/sample_apps/<br />
<i style="color: #333333; font-family: Times, 'Times New Roman', serif; font-size: 15px; line-height: 20px;"><span style="background-color: white;">svn co -r 256 https://openvidia.svn.sourceforge.net/svnroot/openvidia/tegra_kinect OpenNIRecorder</span></i>Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com2tag:blogger.com,1999:blog-3230570763723541579.post-88584521697250946842012-09-17T09:58:00.000-07:002012-09-17T09:58:42.974-07:00Important: multitouch -> OpenNIRecorderNow, the project is renamed to<br />
<br />
/home/raymondlo84/NVPACK/TDK_Samples/tegra_android_native_samples_v10p00/sample_apps/OpenNIRecorder<br />
<br />
It is important that you use this directory name or else Eclipse will complain.<br />
<br />
Additionally, I would drop the support for Kinect because it is 'not' portable anyways.<br />
<br />
Instead, we will be using<br />
<br />
<a href="http://www.asus.com/Multimedia/Motion_Sensor/Xtion_PRO_LIVE/">http://www.asus.com/Multimedia/Motion_Sensor/Xtion_PRO_LIVE/</a><br />
<br />
!ASUS? Give me some hardware?Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-68749945318242378942012-09-13T12:20:00.001-07:002012-09-13T12:21:43.429-07:00Kinect and OpenNI SupportIt's been my nightmare trying to figure out why the Kinect wasn't working properly with the OpenNI. The frames just get corrupted from time to time, and eventually 'segmentation fault'...<br />
<br />
<br />
<br />
<blockquote class="tr_bq">
<span style="font-size: x-small;"><i>/DEBUG ( 104): stack:</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd38 5d275c8b /system/lib/libXnDeviceSensorV2.so</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd3c 5d2ece84 /system/lib/libXnDeviceSensorV2.so</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd40 01f429fc [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd44 000000f0 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd48 6079dd64 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd4c fffffd81 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd50 fffffd82 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd54 0000027f </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd58 00003c7e </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd5c 00000000 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd60 00000786 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd64 000000f0 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd68 00000000 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd6c 01f42948 [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd70 df0027ad </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd74 00000000 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): #00 6079dd78 01f42948 [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd7c 00000774 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd80 01ee1efc [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd84 01ee1efc [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd88 00000774 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd8c 5d2ebd94 /system/lib/libXnDeviceSensorV2.so</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd90 5d2ec620 /system/lib/libXnDeviceSensorV2.so</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd94 60971ee4 </i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd98 01f42a94 [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dd9c 5b1bfd17 /system/lib/libOpenNI.so</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): #01 6079dda0 01f42a94 [heap]</i></span><span style="font-size: x-small;"><i>I/DEBUG ( 104): 6079dda4 5d2999b1 /system/lib/libXnDeviceSensorV2.so</i></span></blockquote>
<div>
Fortunately, I've confirmed that OpenNI works perfectly fine on an ASUS Xtion Live.<br />
<br />
HOWEVER, today!, I still don't have the ASUS Xtion with me... !! Guys, donations? </div>
Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0tag:blogger.com,1999:blog-3230570763723541579.post-60518455286928821962012-09-12T13:33:00.000-07:002012-09-12T13:33:42.819-07:00Tegra 3 OpenNIRecorder for AndroidHere we go! The OpenNIRecorder is now ready. We have a very simple GUI for you to enable or disable the rendering / visualization and to record the RGB / depth data to your SD card. To get the best performance, you may want to turn off the rendering for both rgb and depth. Also, you shall get a very fast SD card to reduce the I/O latency! It can be very very slow if the SD card is blocking!<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div ass="separator" cl="cl" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/AriYjKUzoFE?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Also, there are a few significant changes to the path and other variables. Please make you you check out the source to:<br />
<br />
<i><span style="font-family: Arial, Helvetica, sans-serif; font-weight: normal;">cd ~/NVPACK/TDK_Samples/tegra_android_native_samples_v10p00/sample_apps</span><span style="font-family: Arial, Helvetica, sans-serif; font-weight: normal;"><br /></span></i><span style="font-family: Arial, Helvetica, sans-serif; font-weight: normal;"><span style="background-color: white; color: #333333; line-height: 20px;"><i>svn co https://openvidia.svn.sourceforge.net/svnroot/openvidia/tegra_kinect OpenNIRecorder</i></span></span><br />
<br />
Lastly, I have received several emails from students who are interested in this work. Again, thank you for your interest in our work. But please read through my entire blog (i.e., from the very beginning) and try to understand the basic about the Android NDK etc... It is very unlikely that I can give you a full tutorial over an email. Download the source code, read it through, and if you run into problems or you have some design issues? Then feel free to drop me a line here and there. If you ask me to help you setting up everything from scratch? Here you go :)! read the blogs :)<br />
<br />
<br />
<br />Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com2tag:blogger.com,1999:blog-3230570763723541579.post-91778552211849065432012-09-05T21:16:00.005-07:002012-09-08T16:16:12.629-07:00Multithreading on Android 4.0.2 + Tegra 3<span style="font-family: Times, Times New Roman, serif;">Multithreading is one of the most commonly used technique for accelerating your application. Of course, we assume that your application is parallelizable at the first place, or else you would be looking into NEON instruction set and other ways to accelerate your code.</span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;">Apparently, <a href="http://www.nvidia.com/object/tegra-3-processor.html">Tegra 3</a> was designed for multi-tasking as it comes with 4 (FOUR!) cores!, but how do we take advantages of such without spending nights and days debugging? </span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;">When we perform multiple tasks in parallel, the first problem we have to handle is the synchronization issue. These are often handles by using 'locks'. The detail of how to handle race condition, using locks, conditional variables, and so are left for your reading (see below). Additionally, creating threads for every task can be time consuming, and eventually you may even run out of thread id. Thus, we often implement a thread pool, a set of threads/workers that waits for commands. </span><br />
<span style="font-family: Times, Times New Roman, serif;"><br />In this coming up tutorial, I will show you how to multithread your application in 10 mins, and which would give you a potential 3x speed up. We will demonstrate how you can easily obtain real-time results by utilizing the cores of a mobile processor! </span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<b>Using the cThreadPool</b><br />
Sometimes, simplicity is just gold. I've found this little implementation that handles the thread pool. And here is how I have implemented that to our flow.
http://sourceforge.net/projects/cthreadpool/files/
<br />
<pre class="prettyprint"> </pre>
<pre class="prettyprint"> static int counter = 0;
counter++;
char my_path[512];
RGBpack *filepack = (RGBpack*)(malloc(sizeof(RGBpack)));
filepack->frame_count=counter;
filepack->width=IMAGE_WIDTH;
filepack->height=IMAGE_HEIGHT;
//filepack->rgb_data = (unsigned char*)malloc(IMAGE_WIDTH*IMAGE_HEIGHT*3*sizeof(unsigned char));
filepack->depth_data = (unsigned short*)malloc(IMAGE_WIDTH*IMAGE_HEIGHT*sizeof(unsigned short));
if(filepack->depth_data==NULL){
free(filepack);
return false;
}
//ni_wrapper->getRGB(filepack->rgb_data);
ni_wrapper->getDepth(filepack->depth_data);
int ret = threadpool_add_task(pool,fast_task,filepack,1); //this will also free the memory
if(ret==-1){
__android_log_write(ANDROID_LOG_INFO, "THREAD POOL:", "POOL ERROR?\n");
//free(filepack->rgb_data);
free(filepack->depth_data);
free(filepack);
}
if(ret==-2){
__android_log_write(ANDROID_LOG_INFO, "THREAD POOL:", "FAILED to add task, pool full?\n");
//free(filepack->rgb_data);
free(filepack->depth_data);
free(filepack);
}
</pre>
As we can see, we will be packaging the frame we receive from the Kinect and add each to the task list. The thread pool will automatically pick up these whenever they are free, and our job is done. One thing we have to watch out for is memory usage, it does get memory hungry if we allocate too many tasks at the same time!
<span style="font-family: Times, Times New Roman, serif;">To no surprise, we can now achieve real-time capturing with the Tegra 3! Check it out :)</span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/-600ZZow_Sw/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/-600ZZow_Sw?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://www.youtube.com/v/-600ZZow_Sw?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;"><br /><b>Raw PNG outputs from the Kinect:</b></span><br />
<span style="font-family: Times, Times New Roman, serif;"><b><br /></b></span>
<span style="font-family: Times, Times New Roman, serif;">Excuse my dance moves. Scroll down quickly to see what we have captured in 2 seconds. </span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-NOOzlXsEgig/UErsRShniGI/AAAAAAAAAYg/sKStPpCF0Sw/s1600/out_depth_000006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-NOOzlXsEgig/UErsRShniGI/AAAAAAAAAYg/sKStPpCF0Sw/s320/out_depth_000006.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-GI1MDiZnvNk/UErsSeEgK0I/AAAAAAAAAYo/ryoY2P2klXU/s1600/out_depth_000007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-GI1MDiZnvNk/UErsSeEgK0I/AAAAAAAAAYo/ryoY2P2klXU/s320/out_depth_000007.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-I4UFiQeLKek/UErsTROhTlI/AAAAAAAAAYw/detODxxaS3M/s1600/out_depth_000008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-I4UFiQeLKek/UErsTROhTlI/AAAAAAAAAYw/detODxxaS3M/s320/out_depth_000008.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-COz1PiB-XZU/UErsWJtfhRI/AAAAAAAAAZA/oH-I7psCnjQ/s1600/out_depth_000010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-COz1PiB-XZU/UErsWJtfhRI/AAAAAAAAAZA/oH-I7psCnjQ/s320/out_depth_000010.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NOlsMWkBSWk/UErsXTRKWXI/AAAAAAAAAZI/0EKgyyJINw8/s1600/out_depth_000011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-NOlsMWkBSWk/UErsXTRKWXI/AAAAAAAAAZI/0EKgyyJINw8/s320/out_depth_000011.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-0LOQ7OJu3JM/UErsYTBJc7I/AAAAAAAAAZQ/fvBfJ4LECFY/s1600/out_depth_000012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-0LOQ7OJu3JM/UErsYTBJc7I/AAAAAAAAAZQ/fvBfJ4LECFY/s320/out_depth_000012.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-R2ZnR8wKhqY/UErsZU-GWEI/AAAAAAAAAZY/V-tSyG3T7So/s1600/out_depth_000013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-R2ZnR8wKhqY/UErsZU-GWEI/AAAAAAAAAZY/V-tSyG3T7So/s320/out_depth_000013.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-7_MWn3KNIMI/UErsaojsxBI/AAAAAAAAAZg/hLELuiefrW8/s1600/out_depth_000014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-7_MWn3KNIMI/UErsaojsxBI/AAAAAAAAAZg/hLELuiefrW8/s320/out_depth_000014.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-dEz0eH4PGME/UErsb5cdygI/AAAAAAAAAZo/i9VYOEugGGg/s1600/out_depth_000015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-dEz0eH4PGME/UErsb5cdygI/AAAAAAAAAZo/i9VYOEugGGg/s320/out_depth_000015.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-3xNz0tSs2Mg/UErsc2M1lwI/AAAAAAAAAZw/MeIG_gQoNbw/s1600/out_depth_000016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-3xNz0tSs2Mg/UErsc2M1lwI/AAAAAAAAAZw/MeIG_gQoNbw/s320/out_depth_000016.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-af-JzUtUtEE/UErsd60vivI/AAAAAAAAAZ4/jORjfraOAik/s1600/out_depth_000017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-af-JzUtUtEE/UErsd60vivI/AAAAAAAAAZ4/jORjfraOAik/s320/out_depth_000017.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-kU_nKAWjBq0/UErse4r9tfI/AAAAAAAAAaA/PVARXCPNeoM/s1600/out_depth_000018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-kU_nKAWjBq0/UErse4r9tfI/AAAAAAAAAaA/PVARXCPNeoM/s320/out_depth_000018.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-uiSiVYpbMHc/UErsgAGXqrI/AAAAAAAAAaI/wph4TZHAHfQ/s1600/out_depth_000019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-uiSiVYpbMHc/UErsgAGXqrI/AAAAAAAAAaI/wph4TZHAHfQ/s320/out_depth_000019.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-S0QpT4SUl0w/UErshdoH29I/AAAAAAAAAaQ/k4igYKdty2M/s1600/out_depth_000020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-S0QpT4SUl0w/UErshdoH29I/AAAAAAAAAaQ/k4igYKdty2M/s320/out_depth_000020.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-IfjtLOVJfVs/UErsiTFIvLI/AAAAAAAAAaY/VdxfI2lG3b4/s1600/out_depth_000021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-IfjtLOVJfVs/UErsiTFIvLI/AAAAAAAAAaY/VdxfI2lG3b4/s320/out_depth_000021.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-3v-4kYZqCfg/UErsjSQ6P4I/AAAAAAAAAag/HQJ5_MF_iB0/s1600/out_depth_000022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-3v-4kYZqCfg/UErsjSQ6P4I/AAAAAAAAAag/HQJ5_MF_iB0/s320/out_depth_000022.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-YVHkceCu9Ag/UErskg-KkAI/AAAAAAAAAao/5CTXNm5Npu4/s1600/out_depth_000023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-YVHkceCu9Ag/UErskg-KkAI/AAAAAAAAAao/5CTXNm5Npu4/s320/out_depth_000023.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-aKeM8eJq8Ls/UErsl45GTGI/AAAAAAAAAaw/zxmBXuZ4b9k/s1600/out_depth_000024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-aKeM8eJq8Ls/UErsl45GTGI/AAAAAAAAAaw/zxmBXuZ4b9k/s320/out_depth_000024.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-GPGYEhnaXys/UErsm2XWcGI/AAAAAAAAAa4/bC6btWBmrxw/s1600/out_depth_000025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-GPGYEhnaXys/UErsm2XWcGI/AAAAAAAAAa4/bC6btWBmrxw/s320/out_depth_000025.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-dwRAWl8MjHk/UErsoLacqLI/AAAAAAAAAbA/SXc9F_1aN_4/s1600/out_depth_000026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-dwRAWl8MjHk/UErsoLacqLI/AAAAAAAAAbA/SXc9F_1aN_4/s320/out_depth_000026.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-76G1gi_hdAs/UErspXdCQtI/AAAAAAAAAbI/j1oCig6eQ7I/s1600/out_depth_000027.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-76G1gi_hdAs/UErspXdCQtI/AAAAAAAAAbI/j1oCig6eQ7I/s320/out_depth_000027.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-cJ1xg5WkJBo/UErsqkVo1KI/AAAAAAAAAbQ/K-fK3M4mJiM/s1600/out_depth_000028.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-cJ1xg5WkJBo/UErsqkVo1KI/AAAAAAAAAbQ/K-fK3M4mJiM/s320/out_depth_000028.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-JFBcrjeM-lo/UErsrx6L_rI/AAAAAAAAAbY/XGqmomPsQew/s1600/out_depth_000029.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-JFBcrjeM-lo/UErsrx6L_rI/AAAAAAAAAbY/XGqmomPsQew/s320/out_depth_000029.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-x8ADXARIZrU/UErstMwXqzI/AAAAAAAAAbg/m1XSaZmaS5M/s1600/out_depth_000030.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-x8ADXARIZrU/UErstMwXqzI/AAAAAAAAAbg/m1XSaZmaS5M/s320/out_depth_000030.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-spM2XNUapG4/UErsuQdlN3I/AAAAAAAAAbo/TWDZq3K45T8/s1600/out_depth_000031.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-spM2XNUapG4/UErsuQdlN3I/AAAAAAAAAbo/TWDZq3K45T8/s320/out_depth_000031.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ktOlsbvt9vA/UErsvSaTBNI/AAAAAAAAAbw/d36rKsCmR38/s1600/out_depth_000032.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-ktOlsbvt9vA/UErsvSaTBNI/AAAAAAAAAbw/d36rKsCmR38/s320/out_depth_000032.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-nu6ibGMZvaA/UErswtb25GI/AAAAAAAAAb4/1Y1p-hVWj6A/s1600/out_depth_000033.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-nu6ibGMZvaA/UErswtb25GI/AAAAAAAAAb4/1Y1p-hVWj6A/s320/out_depth_000033.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-KyBZ0ktcB5g/UErsyLnFKnI/AAAAAAAAAcA/bp47A_J_rjg/s1600/out_depth_000034.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-KyBZ0ktcB5g/UErsyLnFKnI/AAAAAAAAAcA/bp47A_J_rjg/s320/out_depth_000034.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-BPy8YK0ob8Y/UErszAeOd_I/AAAAAAAAAcI/4xSDbYmqS3s/s1600/out_depth_000035.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-BPy8YK0ob8Y/UErszAeOd_I/AAAAAAAAAcI/4xSDbYmqS3s/s320/out_depth_000035.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_vPW2HlTqOQ/UErs0sFF5hI/AAAAAAAAAcQ/DMK0AwTqSm4/s1600/out_depth_000036.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-_vPW2HlTqOQ/UErs0sFF5hI/AAAAAAAAAcQ/DMK0AwTqSm4/s320/out_depth_000036.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-T3OujyHinYs/UErs1iMX_KI/AAAAAAAAAcY/RmTvbM9NmPk/s1600/out_depth_000037.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-T3OujyHinYs/UErs1iMX_KI/AAAAAAAAAcY/RmTvbM9NmPk/s320/out_depth_000037.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-8LrDcrNU0Cc/UErs26wpgZI/AAAAAAAAAcg/rf-8g--qGgg/s1600/out_depth_000038.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-8LrDcrNU0Cc/UErs26wpgZI/AAAAAAAAAcg/rf-8g--qGgg/s320/out_depth_000038.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-0H5gSQWqHg8/UErs4FOixAI/AAAAAAAAAco/ajqfaCNoOug/s1600/out_depth_000039.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-0H5gSQWqHg8/UErs4FOixAI/AAAAAAAAAco/ajqfaCNoOug/s320/out_depth_000039.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-whX-HSpFQ0Y/UErs5CobWZI/AAAAAAAAAcw/v_XVl5fbe2A/s1600/out_depth_000040.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-whX-HSpFQ0Y/UErs5CobWZI/AAAAAAAAAcw/v_XVl5fbe2A/s320/out_depth_000040.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-lGXZeUueA_U/UErs6R_ddEI/AAAAAAAAAc4/OUxcQA_UlZo/s1600/out_depth_000041.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-lGXZeUueA_U/UErs6R_ddEI/AAAAAAAAAc4/OUxcQA_UlZo/s320/out_depth_000041.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-n1kIhGGRJ0s/UErs7m6xTVI/AAAAAAAAAdA/_9rvhQrQpxQ/s1600/out_depth_000042.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-n1kIhGGRJ0s/UErs7m6xTVI/AAAAAAAAAdA/_9rvhQrQpxQ/s320/out_depth_000042.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VB29md_ZNQA/UErs86Id_6I/AAAAAAAAAdI/BBRL9JPON-4/s1600/out_depth_000043.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-VB29md_ZNQA/UErs86Id_6I/AAAAAAAAAdI/BBRL9JPON-4/s320/out_depth_000043.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-AjH37bagHJM/UErs-FByChI/AAAAAAAAAdQ/HLic07qAdmk/s1600/out_depth_000044.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-AjH37bagHJM/UErs-FByChI/AAAAAAAAAdQ/HLic07qAdmk/s320/out_depth_000044.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-cWlSNg198Pc/UErs_Z5s0kI/AAAAAAAAAdY/JIdpIZOUqhU/s1600/out_depth_000045.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-cWlSNg198Pc/UErs_Z5s0kI/AAAAAAAAAdY/JIdpIZOUqhU/s320/out_depth_000045.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--61G0s0nKJE/UErtAlZ9xnI/AAAAAAAAAdg/obeGzB_Gra4/s1600/out_depth_000046.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/--61G0s0nKJE/UErtAlZ9xnI/AAAAAAAAAdg/obeGzB_Gra4/s320/out_depth_000046.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/--8Cqx8pj4oc/UErtBsvmpeI/AAAAAAAAAdo/0njGD4t8Slk/s1600/out_depth_000047.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/--8Cqx8pj4oc/UErtBsvmpeI/AAAAAAAAAdo/0njGD4t8Slk/s320/out_depth_000047.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ozV1G9LnRMM/UErtCzC_snI/AAAAAAAAAdw/6OxO2P3dYFU/s1600/out_depth_000048.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-ozV1G9LnRMM/UErtCzC_snI/AAAAAAAAAdw/6OxO2P3dYFU/s320/out_depth_000048.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-7lnT3kcOswA/UErtEEKEuTI/AAAAAAAAAd4/zmWOr5rF728/s1600/out_depth_000049.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-7lnT3kcOswA/UErtEEKEuTI/AAAAAAAAAd4/zmWOr5rF728/s320/out_depth_000049.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-wk44QEyckkE/UErtFFYBUoI/AAAAAAAAAeA/dtN2FzEG0Hg/s1600/out_depth_000050.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-wk44QEyckkE/UErtFFYBUoI/AAAAAAAAAeA/dtN2FzEG0Hg/s320/out_depth_000050.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-4iP7cJvxdfw/UErtGR9LvjI/AAAAAAAAAeI/q9XDDGINLC8/s1600/out_depth_000051.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-4iP7cJvxdfw/UErtGR9LvjI/AAAAAAAAAeI/q9XDDGINLC8/s320/out_depth_000051.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-FvFfo4KlXyg/UErtHjTWvzI/AAAAAAAAAeQ/zSMsJ6x70_8/s1600/out_depth_000052.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-FvFfo4KlXyg/UErtHjTWvzI/AAAAAAAAAeQ/zSMsJ6x70_8/s320/out_depth_000052.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jf9aBIhKvhw/UErtJSQzziI/AAAAAAAAAeY/xYr8oWeb5Jk/s1600/out_depth_000053.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-jf9aBIhKvhw/UErtJSQzziI/AAAAAAAAAeY/xYr8oWeb5Jk/s320/out_depth_000053.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jNXXLEhCfTo/UErtK_tH6mI/AAAAAAAAAeg/9gTroVtyE9k/s1600/out_depth_000054.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-jNXXLEhCfTo/UErtK_tH6mI/AAAAAAAAAeg/9gTroVtyE9k/s320/out_depth_000054.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-uU2A0EsbiiA/UErtL7_KleI/AAAAAAAAAeo/oJRfR7uTu0c/s1600/out_depth_000055.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-uU2A0EsbiiA/UErtL7_KleI/AAAAAAAAAeo/oJRfR7uTu0c/s320/out_depth_000055.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-1AOjZBln_48/UErtNKeyV-I/AAAAAAAAAew/ejFZj6Yh0V4/s1600/out_depth_000056.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-1AOjZBln_48/UErtNKeyV-I/AAAAAAAAAew/ejFZj6Yh0V4/s320/out_depth_000056.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-SLw_f5UgI9s/UErtOOcUc8I/AAAAAAAAAe4/NAONlGGmdMU/s1600/out_depth_000057.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-SLw_f5UgI9s/UErtOOcUc8I/AAAAAAAAAe4/NAONlGGmdMU/s320/out_depth_000057.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-sdlxnQdcPgI/UErtPeYkqpI/AAAAAAAAAfA/cArs05czyLY/s1600/out_depth_000058.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-sdlxnQdcPgI/UErtPeYkqpI/AAAAAAAAAfA/cArs05czyLY/s320/out_depth_000058.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-MVNnn0wSy9w/UErtQZIWsbI/AAAAAAAAAfI/qavazSgC_yI/s1600/out_depth_000059.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-MVNnn0wSy9w/UErtQZIWsbI/AAAAAAAAAfI/qavazSgC_yI/s320/out_depth_000059.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-60otkddFGfs/UErtRnfomHI/AAAAAAAAAfQ/9hFGEieoFnk/s1600/out_depth_000060.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-60otkddFGfs/UErtRnfomHI/AAAAAAAAAfQ/9hFGEieoFnk/s320/out_depth_000060.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-h_bZM1U--sg/UErsU1cvqnI/AAAAAAAAAY4/j7bs7KXqs3w/s1600/out_depth_000009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-h_bZM1U--sg/UErsU1cvqnI/AAAAAAAAAY4/j7bs7KXqs3w/s320/out_depth_000009.png" width="320" /></a></div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;">Some more randomly selected from the set:</span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-2eWGP41rqVQ/UErr6emtqhI/AAAAAAAAAXY/o65bAPbE6d0/s1600/out_depth_000094.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-2eWGP41rqVQ/UErr6emtqhI/AAAAAAAAAXY/o65bAPbE6d0/s320/out_depth_000094.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-eNeS4Mpe-rE/UErr7T4fc6I/AAAAAAAAAXg/1vTXbA3njcA/s1600/out_depth_000108.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-eNeS4Mpe-rE/UErr7T4fc6I/AAAAAAAAAXg/1vTXbA3njcA/s320/out_depth_000108.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--3dCL9_5hho/UErr8qsDB_I/AAAAAAAAAXo/8tSHvFwgGxo/s1600/out_depth_000137.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/--3dCL9_5hho/UErr8qsDB_I/AAAAAAAAAXo/8tSHvFwgGxo/s320/out_depth_000137.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-rnYZW_3f8cc/UErr9th8lxI/AAAAAAAAAXw/BqpaVd4-GFQ/s1600/out_depth_000177.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-rnYZW_3f8cc/UErr9th8lxI/AAAAAAAAAXw/BqpaVd4-GFQ/s320/out_depth_000177.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-mIjGo3ABPok/UErr-r0xCuI/AAAAAAAAAX4/rerqsFxwJwg/s1600/out_depth_000447.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-mIjGo3ABPok/UErr-r0xCuI/AAAAAAAAAX4/rerqsFxwJwg/s320/out_depth_000447.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/--1hxeRTMMt4/UErr_r7H8aI/AAAAAAAAAYA/S0SNudtxEZ4/s1600/out_depth_000613.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/--1hxeRTMMt4/UErr_r7H8aI/AAAAAAAAAYA/S0SNudtxEZ4/s320/out_depth_000613.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-HVmpZJ1kLzM/UErsA7xJCEI/AAAAAAAAAYI/eSbZa5IFfR8/s1600/out_depth_000629.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-HVmpZJ1kLzM/UErsA7xJCEI/AAAAAAAAAYI/eSbZa5IFfR8/s320/out_depth_000629.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ZO178h91ZPI/UErsB87WpNI/AAAAAAAAAYQ/1kDvctAMW1g/s1600/out_depth_000634.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-ZO178h91ZPI/UErsB87WpNI/AAAAAAAAAYQ/1kDvctAMW1g/s320/out_depth_000634.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-JFuqNsPwKGM/UErsCzAWaSI/AAAAAAAAAYY/Hqf26sRTt-w/s1600/out_depth_000650.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-JFuqNsPwKGM/UErsCzAWaSI/AAAAAAAAAYY/Hqf26sRTt-w/s320/out_depth_000650.png" width="320" /></a></div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span><span style="font-family: Times, Times New Roman, serif;"><b>Coming up: </b></span><br />
<span style="font-family: Times, Times New Roman, serif;">........</span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;"><b>Source code:</b></span><br />
<span style="font-family: Times, Times New Roman, serif;"><br /></span>
<span style="font-family: Times, Times New Roman, serif;"><i><span style="background-color: white; color: #333333; line-height: 20px;">svn co https://openvidia.svn.sourceforge.net/svnroot/openvidia/tegra_kinect multitouch</span></i></span><br />
<span style="background-color: white; color: #333333; line-height: 20px;"><span style="font-family: Times, Times New Roman, serif;"><br /></span></span>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;">Note: the source code at the repository could be broken for time to time. Please email me if you run into any problem.</span></span><br />
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;"><br /></span></span>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;"><br /></span></span>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;">Reading:</span></span><br />
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;">https://computing.llnl.gov/tutorials/pthreads/</span></span><br />
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;"><br /></span></span>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;">Linux Tutorial:</span></span><br />
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="line-height: 20px;">http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html</span></span>Raymond Lohttp://www.blogger.com/profile/03006577844333563556noreply@blogger.com0