Hi Bill,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The usual medical imaging applications go from image data to poly<br>
data. Your problem is commonly called voxelization.</blockquote><div><br>Oh yes, it's voxelization.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
So what is the source of the 3D surface mesh?</blockquote><div><br></div><div>The closed 3D surface mesh is represented as vtkPolyData with triangles.<br><br>I have started my own implementation to do what I want. My filter is based on vtkSimpleImageFilterExample. The inputs are a vtkImageData and a vtkPolyData, the output is a vtkImageData. This is a very preliminary attempt. Please suggest a good place in the VTK class hierarchy for this new filter. The vtkPolyDataToImageStencil filter seems to be a right place to start with, however, the vtkImageStencilData supports only binary pixel/voxel. Another class is vtkVoxelModeller, yet, it is for 0/1 bits. The ITK class TriangleMeshToBinaryImageFilter is also a similar choice.<br>
<br>Actually, I can use the existing classes, vtkPolyDataToImageStencil and vtkImageStencil, to perform the voxelization with partial volume information. Upsampling the image, computing the image stencil then followed by a downsampling is one of the options. However, this consumes lots of memory if the working image volume is relatively (to main memory) large and we want to have high accuracy in the partial volume computation.<br>
<br>My filter will take another option based on adaptive and recursive pixel/voxel subdivisions, triangle normals and signed distances to triangles. This option uses computational time to buy memory space. I bet someone has implemented this already. That's why I post my message in this mailing list.<br>
<br>If there is another better option that does not require re-implementation, please kindly let me know.<br><br>BTW, I would like to share my filter to others once it is finished. ;-)<br><br>Bill, thank you so much to your reply. I know you are one of the important persons in VTK. I was surprised to get your attention in this engineering problem.<br>
<br>
Best regards,<br>
Wilbur<br><br>Post-doctoral Fellow<br>Lo Kwee-Seong Medical Image Analysis Laboratory<br>Department of Computer Science and Engineering<br>The Hong Kong University of Science and Technology<br><br><a href="http://www.cse.ust.hk/~cswilbur">http://www.cse.ust.hk/~cswilbur</a><br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Bill<br>
<div><div></div><div class="h5"><br>
On Mon, Jun 15, 2009 at 12:13 AM, Wilbur C. K.<br>
Wong<<a href="mailto:wilburckwong@gmail.com">wilburckwong@gmail.com</a>> wrote:<br>
> Hi All,<br>
><br>
> I would like to create a vtkImageData from a 3D surface mesh. The mesh is<br>
> closed. It represents a 3D model in terms of the model volumetric outline.<br>
> You can assume this mesh is smooth and triangular, but it can be concave. I<br>
> want to have the output in vtkImageData having 0 voxel intensity if the<br>
> whole voxel is outside the model, 1 if the whole voxel is lay inside the<br>
> model, otherwise a value between 0 and 1 indicating the percentage of voxel<br>
> volume that is inside the model.<br>
><br>
> I know how to use vtkImageStencil to generate a binary vtkImageData from<br>
> vtkPolyData, but this approach does not take into account the partial<br>
> volume.<br>
><br>
> May vtkProbeFilter help? It seems that I need to have a volumetric mesh in<br>
> order to do so.<br>
><br>
> Is there a combination of VTK filters that I can use to generate such<br>
> vtkImageData? ITK filters or a combination of both are also fine.<br>
><br>
> I believe this is a very fundamental problem in the medical imaging<br>
> community. May someone share his/her brilliant idea in tackling this basic<br>
> problem?<br>
><br>
> Best regards,<br>
> Wilbur<br>
><br>
</div></div>> _______________________________________________<br>
> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
><br>
> Please keep messages on-topic and check the VTK FAQ at:<br>
> <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
><br>
><br>
</blockquote></div><br>