{"id":1059,"date":"2018-06-12T22:07:58","date_gmt":"2018-06-12T20:07:58","guid":{"rendered":"http:\/\/www.calvert.ch\/maurice\/?p=1059"},"modified":"2018-06-12T22:58:12","modified_gmt":"2018-06-12T20:58:12","slug":"intel-realsense-d435-review","status":"publish","type":"post","link":"https:\/\/www.calvert.ch\/maurice\/2018\/06\/12\/intel-realsense-d435-review\/","title":{"rendered":"Intel RealSense D435 review"},"content":{"rendered":"<p>A quick review of the D435 with pictures of real-life situations; I wish I&#8217;d had this when I was considering buying a D435.<\/p>\n<p>Unboxing is a breeze.\u00a0The D435 is small enough to hide in your hand, in a sleek aluminium case weighing in at 71.8g. It comes with a 1m USB3 cable and a cute, flimsy little plastic tripod. Amusingly, the 28.6g tripod isn&#8217;t up to the task of supporting the camera once the\u00a041.2g cable is plugged in\u00a0and it falls over; I&#8217;ve given it to my grand-daughter for her Lego. The standard camera thread mounting underneath works perfectly for a real tripod; for an aligned mounting there are 2 M3 tapped holes on the back, 45mm apart but they are only 2.5mm deep.<\/p>\n<p>All the software is available on <a href=\"https:\/\/github.com\/IntelRealSense\/librealsense\/releases\">GitHub<\/a>, quick-start with the\u00a0Intel.RealSense.Viewer.exe to get this, depth at 1280&#215;720:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/office.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-589 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/office-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>The toy tripod is in the foreground. Notice that I switched on the hole-filling filter, which is off by default. Switching to 3D with depth colours and quads:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/officedepth.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-590 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/officedepth-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>and using the camera colours:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/officecolour.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-591 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/officecolour-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>The red light meter to the right of the tripod reads 28 lux: I was astonished at the depthmap accuracy in such poor light.<\/p>\n<p>On of the major failings of depth cameras is reflections, so my next tests were with glass. Here, an interior, again the light meter in the foreground reads 15 lux:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/sittingroom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-593 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/sittingroom-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>The right-hand side of the table is glass and thus appears further away, which is normal. The wine glass next to the light meter is captured perfectly. The model on the front-left of the table is a tiny Sterling engine. The Viewer has a nice zoom function:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/sittingroomzoom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-594 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/sittingroomzoom-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>The stereo matching doesn&#8217;t get the inner details of the wheel, but the outline is well delimited.<\/p>\n<p>Next, looking outside from <em><strong>behind<\/strong><\/em> a window of 6mm + 15mm glass at 260 lux. My cursor was on the middle of the small hedge to the right of the wall, the 32 metres measured <em><strong>through 2 layers of glass<\/strong><\/em> in the depth stream seem quite reasonable:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenthroughwindow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-595 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenthroughwindow-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>Stepping outside to 1&#8217;800 lux (and light rain), there are a few artefacts due to the reflection in the water in front of the chair and the window on the right appears to be at the same distance as the trees, which makes perfect sense as that is what is reflected. Notice that the depth images cover a greater area than the colour images.\u00a0This scene is <em><strong>extremely<\/strong><\/em> unfavourable for a depth camera: poor light, reflections, textureless walls and rain:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenoutside.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-596 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenoutside-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>Zooming in on the flower pot in the foreground, it isn&#8217;t immediately clear if the flowers themselves are distinguished:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gerdenflowers.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-597 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gerdenflowers-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>but a little image enhancement shows that they indeed are:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenflowersdepth2_Depth.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-598\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenflowersdepth2_Depth.png\" alt=\"\" width=\"160\" height=\"165\" \/><\/a><\/p>\n<p>Panning left, there&#8217;s a buddha statue about 8 metres away. I positioned the cursor on the roof of the building above the Catalpa tree; the reading was 65.54 metres, which seems right (and is quite astonishing):<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenbuddha.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-599 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenbuddha-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>The buddha is clearly rendered in the zoomed depthmap, with only a handfull of dead pixels:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenbuddhazoom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-600 size-large\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/gardenbuddhazoom-1024x576.png\" alt=\"\" width=\"695\" height=\"391\" \/><\/a><\/p>\n<p>The camera button on the depthmap outputs the PNG, the RAW and the metadata:<\/p>\n<blockquote><p>Frame Info:<br \/>\nType,Depth<br \/>\nFormat,Z16<br \/>\nFrame Number,64305<br \/>\nTimestamp (ms),1528815686864.40<br \/>\nResolution x,1280<br \/>\nResolution y,720<br \/>\nBytes per pixel,2<\/p>\n<p>Intrinsic:,<br \/>\nFx,639.315613<br \/>\nFy,639.315613<br \/>\nPPx,637.479370<br \/>\nPPy,362.691040<br \/>\nDistorsion,Brown Conrady<\/p><\/blockquote>\n<p>which is a nice touch.<\/p>\n<p>The SDK, librealsense-2-12.0 has the CPP sources for everything and wrappers for C#, Unity, OpenCV, PCL, Python, NodeJS and LabView. I tried the C# example SLN; after adding the reference to Intel.Realsense.DLL, they ran on first compile. The Depth tutorial generates a cute 70&#8217;s-style image made with characters (it&#8217;s my hand):<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/hand.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-604\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/hand.png\" alt=\"\" width=\"554\" height=\"507\" \/><\/a><\/p>\n<p>and the 2nd example &#8211; 100 lines of code &#8211;\u00a0 with depth and colour:<\/p>\n<p><a href=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/pointing.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-605\" src=\"http:\/\/www.calvert.ch\/wp-content\/uploads\/2018\/06\/pointing-1024x505.png\" alt=\"\" width=\"695\" height=\"343\" \/><\/a><\/p>\n<h3>Conclusion<\/h3>\n<p>Over the years I have studied many depth cameras, particularly for outdoor use: Kinect, Stereolabs, SwissRanger, PrimeSense, Bumblebee, to name but a few. None were satisfactory, either because they were blinded by sunlight or cripplingly expensive. The D435 works perfectly both inside (with IR) and outside (with stereo matching); it is cheap, resilient and accurate. I think it is going to be a revolutionary game-changer in computer vision.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A quick review of the D435 with pictures of real-life situations; I wish I&#8217;d had this when I was considering buying a D435. Unboxing is a breeze.\u00a0The D435 is small enough to hide in your hand, in a sleek aluminium <a href='https:\/\/www.calvert.ch\/maurice\/2018\/06\/12\/intel-realsense-d435-review\/' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1059","post","type-post","status-publish","format-standard","hentry","category-technology","category-11-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts\/1059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/comments?post=1059"}],"version-history":[{"count":2,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts\/1059\/revisions"}],"predecessor-version":[{"id":1061,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/posts\/1059\/revisions\/1061"}],"wp:attachment":[{"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/media?parent=1059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/categories?post=1059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.calvert.ch\/maurice\/wp-json\/wp\/v2\/tags?post=1059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}