{"id":468,"date":"2013-09-12T12:02:09","date_gmt":"2013-09-12T10:02:09","guid":{"rendered":"http:\/\/www.stefanocostanzo.net\/g3d\/?page_id=468"},"modified":"2013-10-26T02:16:27","modified_gmt":"2013-10-26T00:16:27","slug":"comparison","status":"publish","type":"page","link":"https:\/\/www.stefanocostanzo.net\/g3d\/comparison\/","title":{"rendered":"Comparison"},"content":{"rendered":"<p style=\"text-align: justify;\">After scoring two 3D models, respectively: <a title=\"David Laser Scanner 3D\" href=\"http:\/\/www.stefanocostanzo.net\/g3d\/acquisizione\/david3d\/\">David Scan<\/a> (very economical solution) and <a title=\"NextEngine\" href=\"http:\/\/www.stefanocostanzo.net\/g3d\/acquisizione\/nextengine\/\">NextEngine<\/a> (more professional, but not too expensive) it is possible to analyze the differences and similarities of the results obtained. To make this comparison, and provide visual feedback, a good approach is to compare the two geometries obtained; can be calculated point by point the distance between the two objects and obtain the actual measurement in millimeters on which it is possible to carry out observations of various kind. Essentially: the smaller the distance between two points, the greater the similarity between the two models at that point.\u00a0The process is quite simple, and will be analyzed in a series of steps.<\/p>\n<hr \/>\n<p style=\"text-align: justify;\"><strong>Step 1 &#8211; Alignment (the best possible)<br \/>\n<\/strong>The first step to be taken is groped to better align the two objects. To align the two 3D models, the process is the same used to align each mesh of the project. We import the two project in MeshLab and align themselves through &#8220;Point Based Glueling&#8221; into the tool &#8220;Align&#8221;. In this case, however, a need to improve the step of processing by increasing the parameters of &#8220;Sample Number&#8221; and &#8220;Target Distance&#8221; algorithm of alignment. We then have the two objects perfectly stacked and ready to be compared.<\/p>\n<p style=\"text-align: justify;\">There is an important clarification for the purposes of comparison, the model NextEngine, has an accuracy far greater than David Scan. As a result: from now on will be taken as the main reference, such as &#8220;zero model&#8221; that obtained with NextEngine for comparison. It will be observed as the geometry obtained by David Scan model differs from zero.<\/p>\n<div id=\"amw_galleria_slideshow_1\" class=\"amw-galleria-slideshow\"><\/div>\n<script type=\"text\/javascript\">jQuery(document).ready(function(){ jQuery(\"#amw_galleria_slideshow_1\").galleria({\"dataSource\":[{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/conf1-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/conf1-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/conf1-150x150.png\",\"title\":\"Importing models\",\"description\":\"Importing models\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/conf2-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/conf2-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/conf2-150x150.png\",\"title\":\"Align models\",\"description\":\"Align models\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/point_based-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/point_based-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/point_based-150x150.png\",\"title\":\"Point based Align\",\"description\":\"Align by Point\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/Schermata-2013-09-27-a-11.43.50-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/Schermata-2013-09-27-a-11.43.50-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/Schermata-2013-09-27-a-11.43.50-150x150.png\",\"title\":\"Fine Alignment\",\"description\":\"Fine Alignment\"}],\"width\":\"auto\",\"height\":0.76,\"autoplay\":false,\"transition\":\"slide\",\"initialTransition\":\"fade\",\"transitionSpeed\":0,\"_delayTime\":4000,\"_hideControls\":false,\"_thumbnailMode\":\"grid\",\"_captionMode\":\"on_expand\"}); });<\/script>\n<hr \/>\n<p style=\"text-align: justify;\"><strong>Step 2 &#8211; Hausdorff distance<br \/>\n<\/strong>MeshLab provides, among Filters &#8220;Sampling&#8221;, the <em>Hausdoff distance<\/em>. This tool\u00a0compute the Hausdoff distance between two meshes, sampling one of the two and finding foreach sample the closest point over the other mesh.\u00a0In other words, it is the greatest of all the distances from a point in one set to the closest point in the other set.<\/p>\n<p style=\"text-align: justify;\">To obtain an exact result is, however, necessary to perform the first two operations: the first is the alignment of which we have already seen, while the second is to &#8220;lock&#8221; the matrix of rotational translation for both objects. Block matrices is necessary, since the instrument performs the algorithm starting from the starting position of the objects. If you do not fix the initial position, you are likely to perform calculations of distances to various rotations, heavily distorting the result.\u00a0The command &#8220;Freeze current matrix&#8221; allows us to define the position of the matrix. It should run on both models.\u00a0Once you have completed these two steps you can use the tool that calculates the Hausdorff distance.<\/p>\n<p style=\"text-align: justify;\">In the Hausdorff distance, it is necessary to leave the parameters of defalut. The only things to change are Target and Sample Mesh. The mesh is held Target reference, namely that where the error is smaller. In other words, the mesh with more detail. We have already said that our Target Mesh that will be acquired with NextEngine. We can also define the maximum distance beyond which the distance is not considered, after some tests at 2 and 3 mm, it was decided to leave the default value, being the maximum distance lower than this number.\u00a0This process assigns to each vertex of the mesh Sampled value of quality (VQ), equal to the distance to the target. Now, you are ready to view the results.<br \/>\n<div id=\"amw_galleria_slideshow_2\" class=\"amw-galleria-slideshow\"><\/div>\n<script type=\"text\/javascript\">jQuery(document).ready(function(){ jQuery(\"#amw_galleria_slideshow_2\").galleria({\"dataSource\":[{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/1st2-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/1st2-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/1st2-150x150.png\",\"title\":\"Freeze Matrix\",\"description\":\"Freeze Matrix\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/2st2-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/2st2-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/2st2-150x150.png\",\"title\":\"Hausdorff distance\",\"description\":\"Hausdorff distance\"}],\"width\":\"auto\",\"height\":0.76,\"autoplay\":false,\"transition\":\"slide\",\"initialTransition\":\"fade\",\"transitionSpeed\":0,\"_delayTime\":4000,\"_hideControls\":false,\"_thumbnailMode\":\"grid\",\"_captionMode\":\"on_expand\"}); });<\/script><\/p>\n<hr \/>\n<p style=\"text-align: justify;\"><strong>Step 3 &#8211; Quality Mapper<br \/>\n<\/strong>Through the Quality Mapper Dialog is possible to observe where there are major differences in the distance in a very simple manner. The distances have a color that tends toward the red, while the vertices are very close are blue, the intermediate values \u200b\u200bare defined by a chromatic scale of this window.\u00a0As there are differences very low, in the order of hundredths of a millimeter, you can define a percentage of the values \u200b\u200bfor which the histogram do not consider the error. And &#8216;possible to cut off this tail of values \u200b\u200bby changing the value of &#8220;Clamp&#8221;, putting 1% you can observe the differences between the two models with the greatest emphasis. However it is very small distances, in particular:<\/p>\n<ul>\n<li><strong>MIN distance<\/strong>:\u00a00.00063 mm<\/li>\n<li><strong>MAX distance<\/strong>:\u00a00.12757 mm<\/li>\n<li><strong>Average<\/strong>:\u00a00.06410 mm<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Most of the vertex is well below the average, therefore the two models are geometrically very similar. But there are some differences in some points, which will be analyzed specifically.\u00a0You can also explore the model, colored according to these values \u200b\u200bwithin this website, in the <a title=\"Comparison Quality Mapper Viewer\" href=\"http:\/\/www.stefanocostanzo.net\/g3d\/compare\/quality-mapper-viewer\/\">appropriate viewer<\/a>, where you can move the object to find higher and lower distance points.\u00a0For simplicity of scripting, on the viewer,\u00a0it is possible to clamp the histogram only at 0%, 1% and 2%.<br \/>\n<div id=\"amw_galleria_slideshow_3\" class=\"amw-galleria-slideshow\"><\/div>\n<script type=\"text\/javascript\">jQuery(document).ready(function(){ jQuery(\"#amw_galleria_slideshow_3\").galleria({\"dataSource\":[{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/1st3-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/1st3-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/1st3-150x150.png\",\"title\":\"Clamp 0%\",\"description\":\"Quality Mapper\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/2st3-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/2st3-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/2st3-150x150.png\",\"title\":\"Clamp 1%\",\"description\":\"Clamp 1%\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/3st3-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/3st3-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/3st3-150x150.png\",\"title\":\"Hight distance\",\"description\":\"Hight difference\"}],\"width\":\"auto\",\"height\":0.76,\"autoplay\":false,\"transition\":\"slide\",\"initialTransition\":\"fade\",\"transitionSpeed\":0,\"_delayTime\":4000,\"_hideControls\":false,\"_thumbnailMode\":\"grid\",\"_captionMode\":\"on_expand\"}); });<\/script><\/p>\n<hr \/>\n<p style=\"text-align: justify;\"><strong>Step 4 &#8211;\u00a0Analysis of the differences<br \/>\n<\/strong>The differences between the two objects, as we have seen are not many. The more they account for one-tenth of a millimeter, a difference is very low if no resolution is required particular acquisition. However, there are points where the error is caused by several reasons, let&#8217;s see some examples:<\/p>\n<ul>\n<li style=\"text-align: justify;\"><strong>Figure 1<\/strong>:\u00a0in this part the differences are caused by a difficulty in surface scan. David Scan, in fact, wants that the laser is always pointed at an angle from the top down. In this way the parties &#8220;hidden&#8221; from protruding surfaces are very disadvantaged;<\/li>\n<li style=\"text-align: justify;\"><strong>Figure 2<\/strong>:\u00a0the difference in this case is caused by an incorrect alignment of the two meshes which make up the rear part. Such misalignment is caused in part by the straw of the whistle (most difficult part to be acquired), and accordingly the surface is slightly varied;<\/li>\n<li style=\"text-align: justify;\"><strong>Figure 3<\/strong>:\u00a0the straw of the whistle has the highest difference between the two objects, and it is not at all surprising. This piece was the most difficult to acquire Scan with David, because of small details and very low. In addition, the Poisson reconstruction has taken steps to increase this difference, tending to &#8220;to crown&#8221; the reconstructed surface. Moreover, this piece has caused different alignment difficulties which have in turn created other differences in the object;<\/li>\n<li style=\"text-align: justify;\"><strong>Figure 4<\/strong>:\u00a0At points where the surface form a cusp is easy that there are errors, in this case the Scan David has had more difficulty compared to NextEngine to acquire the more detail internal to these parts;<\/li>\n<li style=\"text-align: justify;\"><strong>Figure 5<\/strong>:\u00a0This area is difficult to capture, so the alignment has not been great, the form does not help the reconstruction of the surface. In addition, the algorithm Poisson, rebuilding, tends to inflate slightly the surface leading to lightweight errors.<\/li>\n<\/ul>\n<div id=\"amw_galleria_slideshow_4\" class=\"amw-galleria-slideshow\"><\/div>\n<script type=\"text\/javascript\">jQuery(document).ready(function(){ jQuery(\"#amw_galleria_slideshow_4\").galleria({\"dataSource\":[{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-1-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-1-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-1-150x150.png\",\"title\":\"figura 1\",\"description\":\"Figure 1\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-2-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-2-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-2-150x150.png\",\"title\":\"figura 2\",\"description\":\"Figure 2\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-3-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-3-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-3-150x150.png\",\"title\":\"figura 3\",\"description\":\"Figure 3\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-4-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-4-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-4-150x150.png\",\"title\":\"figura 4\",\"description\":\"Figure 4\"},{\"image\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-5-1024x640.png\",\"big\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-5-1024x640.png\",\"thumb\":\"https:\\\/\\\/www.stefanocostanzo.net\\\/g3d\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/2013\\\/09\\\/figura-5-150x150.png\",\"title\":\"figura 5\",\"description\":\"Figure 5\"}],\"width\":\"auto\",\"height\":0.76,\"autoplay\":false,\"transition\":\"slide\",\"initialTransition\":\"fade\",\"transitionSpeed\":0,\"_delayTime\":4000,\"_hideControls\":false,\"_thumbnailMode\":\"grid\",\"_captionMode\":\"on_expand\"}); });<\/script>\n<hr \/>\n<p><strong>Step 5 &#8211; Enjoy the difference!<br \/>\n<\/strong>See the model colored with the quality of the vertices described\u00a0:\u00a0<a title=\"Comparison Quality Mapper Viewer\" href=\"http:\/\/www.stefanocostanzo.net\/g3d\/compare\/quality-mapper-viewer\/\">go to the viewer &gt;&gt;<\/a><br \/>\n<img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-664\" alt=\"conf_total\" src=\"http:\/\/www.stefanocostanzo.net\/g3d\/wp-content\/uploads\/sites\/7\/2013\/09\/conf_total.jpg\" width=\"1350\" height=\"656\" srcset=\"https:\/\/www.stefanocostanzo.net\/g3d\/wp-content\/uploads\/sites\/7\/2013\/09\/conf_total.jpg 1350w, https:\/\/www.stefanocostanzo.net\/g3d\/wp-content\/uploads\/sites\/7\/2013\/09\/conf_total-300x145.jpg 300w, https:\/\/www.stefanocostanzo.net\/g3d\/wp-content\/uploads\/sites\/7\/2013\/09\/conf_total-1024x497.jpg 1024w\" sizes=\"(max-width: 1350px) 100vw, 1350px\" \/><\/p>\n<div id=\"wp_fb_like_button\" style=\"margin:5px 0;float:none;height:100px;\"><script src=\"http:\/\/connect.facebook.net\/en_US\/all.js#xfbml=1\"><\/script><fb:like href=\"https:\/\/www.stefanocostanzo.net\/g3d\/comparison\/\" send=\"false\" layout=\"like\" width=\"450\" show_faces=\"true\" font=\"arial\" action=\"\" colorscheme=\"light\"><\/fb:like><\/div>","protected":false},"excerpt":{"rendered":"<p>After scoring two 3D models, respectively: David Scan (very economical solution) and NextEngine (more professional, but not too expensive) it is possible to analyze the differences and similarities of the results obtained. To make this comparison, and provide visual feedback, a good approach is to compare the two geometries obtained; can be calculated point by &#8230; <span class=\"more\"><a class=\"more-link\" href=\"https:\/\/www.stefanocostanzo.net\/g3d\/comparison\/\">[Read more&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["entry","page","publish","author-stefano-costanzo","post-468"],"_links":{"self":[{"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/pages\/468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/comments?post=468"}],"version-history":[{"count":38,"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/pages\/468\/revisions"}],"predecessor-version":[{"id":677,"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/pages\/468\/revisions\/677"}],"wp:attachment":[{"href":"https:\/\/www.stefanocostanzo.net\/g3d\/wp-json\/wp\/v2\/media?parent=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}