<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt"><div id="yiv347386441"><div><div style="color:#000;background-color:#fff;font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt;"><div id="yiv347386441yui_3_2_0_15_1323350183547367"><span id="yiv347386441yui_3_2_0_15_132335018354781">To Dominique:</span></div><span id="yiv347386441yui_3_2_0_15_132335018354781">I applied a closing operation </span><span id="yiv347386441yui_3_2_0_15_132335018354781">to the vtkImageData (only </span><span id="yiv347386441yui_3_2_0_15_132335018354781">Z axis using vtkImageCloseOpen3D) and it works great :).</span><br><br>To Bill:<br><div id="yiv347386441yui_3_2_0_15_132335018354798"><br><span id="yiv347386441yui_3_2_0_15_132335018354781"></span></div><div id="yiv347386441yui_3_2_0_15_1323350183547191"><span id="yiv347386441yui_3_2_0_15_132335018354781">I made some
tests with the vtkRectilinearGrid but it didn't work. In fact, I'm not sure about the way to build the grid manually from the vtkImageData.</span><span id="yiv347386441yui_3_2_0_15_132335018354781"> Could you please explain it to me?</span><span id="yiv347386441yui_3_2_0_15_132335018354781"> The vtkImageData is built manually from 3D voxel points forming the object I want as a mesh (boundaries and inside). I also know the 3D voxel points corresponding to the object's boundaries but I don't use them to build the vtkImageData or the
vtkRectilinearGrid.</span></div><div id="yiv347386441yui_3_2_0_15_1323350183547232"><br><br>Finally, two solutions work:<br>- resampling the data using vtkImageResample. The only limitation is the resolution of input data.<br>- applying a close operation to the vtkImageData (on Z dimension only). I think that's the best solution even if the cost in time is a little more important.<br><br>The remaining solution is the one Bill suggested with vtkRectilinearGrid but as said bellow, I failed to make it working.<br><br>Anyway, thank you to all of you.<br>Best <br id="yiv347386441yui_3_2_0_15_132335018354751"></div> <div class="yiv347386441yui_3_2_0_15_132335018354754" id="yiv347386441yui_3_2_0_15_132335018354756" style="font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt;"> <div class="yiv347386441yui_3_2_0_15_132335018354761" style="font-family:times new roman, new york, times, serif;font-size:12pt;"> <font face="Arial" size="2">
<hr size="1"> <b><span style="font-weight:bold;">De :</span></b> Bill Lorensen <bill.lorensen@gmail.com><br> <b><span style="
font-weight:bold;">À :</span></b> Malsoaz James <jmalsoaz@yahoo.fr> <br><b><span style="font-weight:bold;">Cc :</span></b> Dominique Töpfer <dominique@toepfer-web.de>; "vtkusers@vtk.org" <vtkusers@vtk.org> <br> <b><span style="font-weight:bold;">Envoyé le :</span></b> Mercredi 7 Décembre 2011 13h24<br> <b><span style="font-weight:bold;">Objet :</span></b> Re: Re : [vtkusers] Re : Build 3D Mesh from vtkImageData using vtkMarchingCubes - holes filling ?<br> </font> <br>You will need to create it manually.<br><br>2011/12/7 Malsoaz James <<a rel="nofollow" ymailto="mailto:jmalsoaz@yahoo.fr" target="_blank" href="mailto:jmalsoaz@yahoo.fr">jmalsoaz@yahoo.fr</a>>:<br>> Thank you, I will look into this and let you know.<br>><br>> Regarding the use of a vtkRectilinearGrid, is there a class/filter to<br>> convert my vtkImageData to a vtkRectilinearGrid or should I build it<br>> manually ?<br>><br>>
Best.<br>><br>>
________________________________<br>> De : Dominique Töpfer <<a rel="nofollow" ymailto="mailto:dominique@toepfer-web.de" target="_blank" href="mailto:dominique@toepfer-web.de">dominique@toepfer-web.de</a>><br>> À : Malsoaz James <<a rel="nofollow" ymailto="mailto:jmalsoaz@yahoo.fr" target="_blank" href="mailto:jmalsoaz@yahoo.fr">jmalsoaz@yahoo.fr</a>><br>> Cc : Bill Lorensen <<a rel="nofollow" ymailto="mailto:bill.lorensen@gmail.com" target="_blank" href="mailto:bill.lorensen@gmail.com">bill.lorensen@gmail.com</a>>; "<a rel="nofollow" ymailto="mailto:vtkusers@vtk.org" target="_blank" href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>"<br>> <<a rel="nofollow" ymailto="mailto:vtkusers@vtk.org" target="_blank" href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>><br>> Envoyé le : Mardi 6 Décembre 2011 19h19<br>> Objet : Re: [vtkusers] Re : Build 3D Mesh from vtkImageData using<br>>
vtkMarchingCubes - holes filling ?<br>><br>> Hi,<br>><br>> maybe morphological closing on your 3D build is also an option.<br>><br>>
HTH<br>> Dominique<br>><br>> On 06.12.2011 19:09, Malsoaz James wrote:<br>><br>> Thank you Bill for your answer.<br>><br>> The input vtkImageData is the result of a segmentation process. Sometimes,<br>> the segmentation is not perfect, part of the object can be missing on a<br>> slice. For now, I can't know automatically if a slice is missing or not<br>> before the 3D build. Thus, I can't create it manually. I thought Marching<br>> cubes was able to deal with this kind of problem, apparently not.<br>><br>> I will look at your solution and let you know.<br>><br>> In any case, the resampler solution works, it is just not really suitable<br>> for bad resolution.<br>><br>> Best.<br>><br>> ________________________________<br>> De : Bill Lorensen <<a rel="nofollow" ymailto="mailto:bill.lorensen@gmail.com" target="_blank"
href="mailto:bill.lorensen@gmail.com">bill.lorensen@gmail.com</a>><br>> À : Malsoaz
James <<a rel="nofollow" ymailto="mailto:jmalsoaz@yahoo.fr" target="_blank" href="mailto:jmalsoaz@yahoo.fr">jmalsoaz@yahoo.fr</a>><br>> Cc : "<a rel="nofollow" ymailto="mailto:vtkusers@vtk.org" target="_blank" href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>" <<a rel="nofollow" ymailto="mailto:vtkusers@vtk.org" target="_blank" href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>><br>> Envoyé le : Mardi 6 Décembre 2011 18h19<br>> Objet : Re: [vtkusers] Build 3D Mesh from vtkImageData using<br>> vtkMarchingCubes - holes filling ?<br>><br>> Another possible solution is to convert your image data to a<br>> rectilinear grid. The rectilinear grid supports non uniform spacing.<br>> Once converted you would use vtkContourFilter rather than Marching<br>> Cubes. It will be slower.<br>><br>> Bill<br>><br>> On Tue, Dec 6, 2011 at 12:16 PM, Bill Lorensen <<a rel="nofollow"
ymailto="mailto:bill.lorensen@gmail.com" target="_blank" href="mailto:bill.lorensen@gmail.com">bill.lorensen@gmail.com</a>><br>>
wrote:<br>>> Marching Cubes is the correct filter and your results look good<br>>> (except for the missing slice. You could try to create a missing slice<br>>> by creating a new slice. Maybe by averaging the slice above and below<br>>> the missing slice.<br>>><br>>> Why is the data missing?<br>>><br>>> On Tue, Dec 6, 2011 at 12:03 PM, Malsoaz James <<a rel="nofollow" ymailto="mailto:jmalsoaz@yahoo.fr" target="_blank" href="mailto:jmalsoaz@yahoo.fr">jmalsoaz@yahoo.fr</a>> wrote:<br>>>> Dear VTK users<br>>>><br>>>> I'm trying to build a 3D mesh from a vtkImageData using vtkMarchingCubes.<br>>>> The vtkImageData is build from a list of 2D binary slices.<br>>>><br>>>> vtkMarchingCubes works great. But when a slice(s) is(are) missing, it<br>>>> creates a hole in the 3D mesh (see image in attachment).<br>>>><br>>>> 1 - How can
I fill this kind of hole ?
Ideally, I would like to link the<br>>>> two<br>>>> parts of the mesh<br>>>><br>>>> 2 - I found a solution in the use of a resampler (vtkImageResample,<br>>>> vtkImageShrink3D, don't know which one is recommanded). Unfortunately, it<br>>>> sometimes produces ugly mesh with "stair effect" when the spacing is too<br>>>> big<br>>>> (still there after decimate and smooth). Is it a good solution ? How to<br>>>> solve the stair problem ?<br>>>><br>>>> 3 - Browsing the mailing list brings me to the notion of "repair hole"<br>>>> for<br>>>> marching cubes. I don't know a lot about it. But should I look into this<br>>>> ?<br>>>> Some solutions exist for this such as <a rel="nofollow" target="_blank" href="http://www.opentopology.org/">http://www.opentopology.org/</a><br>>>><br>>>> 4 - Is vtkMarchingCubes the
class I should use
for my purpose or should I<br>>>> look at vtkVoxelContoursSurfaceFilter or any other filter ?<br>>>><br>>>><br>>>> Thank you for you help.<br>>>> Best.<br>>>><br>>>><br>>>><br>>>><br>>>> _______________________________________________<br>>>> Powered by www.kitware.com<br>>>><br>>>> Visit other Kitware open-source projects at<br>>>> <a rel="nofollow" target="_blank" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>>>><br>>>> Please keep messages on-topic and check the VTK FAQ at:<br>>>> <a rel="nofollow" target="_blank" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>>>><br>>>> Follow this link to subscribe/unsubscribe:<br>>>> <a rel="nofollow" target="_blank"
href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>>>><br>>><br>>><br>>><br>>> --<br>>> Unpaid intern in BillsBasement at noware dot com<br>><br>><br>><br>> --<br>> Unpaid intern in BillsBasement at noware dot com<br>><br>><br>><br>><br>> _______________________________________________<br>> Powered by www.kitware.com<br>><br>> Visit other Kitware open-source projects at<br>> <a rel="nofollow" target="_blank" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>><br>> Please keep messages on-topic and check the VTK FAQ at:<br>> <a rel="nofollow" target="_blank" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>><br>> Follow this link to subscribe/unsubscribe:<br>> <a rel="nofollow" target="_blank"
href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>><br>><br>><br>> --<br>> Dominique Töpfer, Dipl.-Inform.<br>> Institute of Medical Physics<br>> University of Erlangen<br>><br>><br>><br><br><br><br>-- <br>Unpaid intern in BillsBasement at noware dot com<br><br><br> </div> </div> </div></div></div></div></body></html>