<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.hoenzb
{mso-style-name:hoenzb;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi Will and Bill,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Surface generation from binary labelmap is an important task for us in 3D Slicer, to display segmentation results in 3D while it is being edited in 2D, We are very interested in any potential improvements.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Currently, we use discrete marching cubes and sinc smoothing, which gives good results, but sometimes it can be quite slow (especially the smoothing step).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We tried cube models but surface normals always pointed to x/y/z direction instead of actual surface normal direction, so it was very hard to see 3D shapes. This flat look is visible in your examples, too:
<a href="https://raw.githubusercontent.com/lorensen/SPLBrainAtlas/master/Models/Screenshot/white_matter_of_left_cerebral_hemisphere.png">
https://raw.githubusercontent.com/lorensen/SPLBrainAtlas/master/Models/Screenshot/white_matter_of_left_cerebral_hemisphere.png</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We use discrete marching cubes, but as far as I remember, we did not see huge differences between regular and discrete marching cubes. Is there a study or examples that compares them (visual appearance, accuracy, computation time, etc.)?
Is there a solution that provides smooth surfaces (that would not require further smoothing step to remove staircase artifacts)?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We also plan to evaluate how well we can visualize binary labelmaps in 3D using the new multi-volume-rendering feature that is being integrated into VTK now.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Andras<o:p></o:p></p>
<p class="MsoNormal"><a name="_MailEndCompose"><o:p> </o:p></a></p>
<span style="mso-bookmark:_MailEndCompose"></span>
<p class="MsoNormal"><b>From:</b> vtk-developers [mailto:vtk-developers-bounces@vtk.org]
<b>On Behalf Of </b>Will Schroeder<br>
<b>Sent:</b> Saturday, December 23, 2017 8:35 AM<br>
<b>To:</b> vtk-developers <vtk-developers@vtk.org><br>
<b>Subject:</b> Re: [vtk-developers] Discrete contouring classes<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">FYI here is an example of discrete marching cubes at work. From Bill:<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal"><span style="font-size:12.0pt">Here is the SPLBrainAtlas;<br>
</span><a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Florensen%2FSPLBrainAtlas%2Fwiki%2FAtlas-Summary&data=02%7C01%7Classo%40queensu.ca%7C38c9d992cb8b4c60e88108d54a0a1382%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636496329489848607&sdata=016kNZv199FACPlMVNIOMEwHyJAKsTIKpoXF1zjARaA%3D&reserved=0" target="_blank"><span style="font-size:12.0pt">https://github.com/lorensen/SPLBrainAtlas/wiki/Atlas-Summary</span></a><span style="font-size:12.0pt"><br>
<br>
The two-paned images show Discrete on left, Cube's Model (also<br>
undersold) on right. STL files created using discrete followed by<br>
non-manifold joint smoothing.</span><o:p></o:p></p>
</blockquote>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Sat, Dec 23, 2017 at 8:30 AM, Will Schroeder <<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">FYI- Back in the day (2004) Jim Miller and Bill Lorensen added the vtkDiscreteMarchingCubes class. This is used to generate contours for label masks (as you would find in segmentation). The key here is that the labels are non-continuous
(i.e., scalar field is not smooth) so the regular edge interpolation of something like marching cubes doesn't work. Long story short, this class interpolates on the mid-edge point between regions, and it generates different regions (i.e., meshes) for each
label.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">This class and approach is woefully underappreciated and underused.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I am just adding flying edges versions (2D and 3D) of this functionality (MR 3739). These are of course much faster and scalable across multiple cores. They also produce slightly different results. Principally they do not merge coincident
points belonging to different regions (since flying edges does not use a point locator) -- this is both good and bad depending on the application. Also normals are generated by the flying edges algorithm, not by vtkDiscreteMarchingCubes.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">See the docs for more info.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Best,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">W<span class="hoenzb"><span style="color:#888888"><o:p></o:p></span></span></p>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><span style="color:#888888">-- <o:p></o:p></span></p>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:#888888">William J. Schroeder, PhD<br>
Kitware, Inc. - Building the World's Technical Computing Software<br>
28 Corporate Drive<br>
Clifton Park, NY 12065<br>
<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C38c9d992cb8b4c60e88108d54a0a1382%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636496329489848607&sdata=yaZrW3ulF9q5KCrwow0PUw%2B1mrHP07%2BGJjsYD9RMP58%3D&reserved=0" target="_blank">http://www.kitware.com</a><br>
<a href="tel:(518)%20881-4902" target="_blank">(518) 881-4902</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">William J. Schroeder, PhD<br>
Kitware, Inc. - Building the World's Technical Computing Software<br>
28 Corporate Drive<br>
Clifton Park, NY 12065<br>
<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C38c9d992cb8b4c60e88108d54a0a1382%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636496329489848607&sdata=yaZrW3ulF9q5KCrwow0PUw%2B1mrHP07%2BGJjsYD9RMP58%3D&reserved=0" target="_blank">http://www.kitware.com</a><br>
(518) 881-4902<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>