[vtkusers] ImageToPolyDataFilter

Thibault Varacca thibault.varacca at gmail.com
Mon May 6 10:19:31 EDT 2013


Ok thank you !
I have another question: when I use the "contour" filter on paraview it is
very faster than when i code it with vtk.
Is there a possibility to "parallelize" the execution ? Do you know some
documentation about it?
Thanks a lot !


2013/5/6 Sebastien Jourdain <sebastien.jourdain at kitware.com>

> Which version of VTK and do you have the hybrid library inside your set of
> vtk libraries ?
>
> Moreover, instead of calling
>
> try {
>             Class.forName("vtk.vtkPanel");
>         } catch (ClassNotFoundException e) {
>             e.printStackTrace();
>         }
>
> You should rely on that instead:
>
> vtkNativeLibrary.LoadAllNativeLibraries();
>
> Seb
>
>
> On Mon, May 6, 2013 at 8:59 AM, Thibault Varacca <
> thibault.varacca at gmail.com> wrote:
>
>> Hello everybody,
>>
>> I have .raw (binary) files which are segmented data. I load it with a
>> .mhd file and want to convert it to polydata to finally apply the marching
>> cubes filter.
>> but i have the following error :
>>
>> # JRE version: 7.0_21-b11
>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.21-b01 mixed mode
>> windows-amd64 compressed oops)
>> # Problematic frame:
>> # C  [vtkHybrid.dll+0x5db28]  vtkImageToPolyDataFilter::ProcessImage+0x18
>> #
>> # Failed to write core dump. Minidumps are not enabled by default on
>> client versions of Windows
>> #
>> # If you would like to submit a bug report, please visit:
>> #   http://bugreport.sun.com/bugreport/crash.jsp
>> # The crash happened outside the Java Virtual Machine in native code.
>> # See problematic frame for where to report the bug.
>>
>> Here is my code:
>>
>> import java.lang.reflect.InvocationTargetException;
>>
>> import javax.swing.SwingUtilities;
>>
>> import vtk.vtkActor;
>> import vtk.vtkImageData;
>> import vtk.vtkImageToPolyDataFilter;
>> import vtk.vtkMarchingCubes;
>> import vtk.vtkMetaImageReader;
>> import vtk.vtkPolyDataMapper;
>> import vtk.vtkRenderWindow;
>> import vtk.vtkRenderWindowInteractor;
>> import vtk.vtkRenderer;
>> import vtk.vtkSTLWriter;
>> import vtk.vtkVoxelModeller;
>>
>> public class MeshVtk implements Runnable {
>>
>>     @Override
>>     public void run() {
>>
>>         String filename = "ressources\\output_piston.xy.mhd";
>>         vtkVoxelModeller voxelModeller = new vtkVoxelModeller();
>>         vtkMarchingCubes marchingcubes = new vtkMarchingCubes();
>>         vtkRenderer renderer = new vtkRenderer();
>>         vtkRenderWindow renderWindow = new vtkRenderWindow();
>>         vtkRenderWindowInteractor interactor = new
>> vtkRenderWindowInteractor();
>>         vtkPolyDataMapper mapper = new vtkPolyDataMapper();
>>         vtkActor actor = new vtkActor();
>>         double bounds[] = new double[] {};
>>
>>         /* reader */
>>         vtkMetaImageReader reader = new vtkMetaImageReader();
>>         reader.SetFileName(filename);
>>         reader.Update();
>>
>>         vtkImageData img = new vtkImageData();
>>         img = reader.GetOutput();
>>
>>         vtkImageToPolyDataFilter img2poly = new
>> vtkImageToPolyDataFilter();
>>         img2poly.SetInput(img);
>>         img2poly.DecimationOn();
>>         img2poly.SetError(0);
>>         img2poly.DecimationOn();
>>         img2poly.SetDecimationError(0.0);
>>         img2poly.Update();
>>
>>         bounds = reader.GetOutput().GetBounds(); /* bounds */
>>
>>         for (int i = 0; i < 6; i += 2) {
>>             double range = bounds[i + 1] - bounds[i];
>>             bounds[i] = bounds[i] - .1 * range;
>>             bounds[i + 1] = bounds[i + 1] + .1 * range;
>>         }
>>
>>         voxelModeller.SetSampleDimensions(75, 75, 75);
>>         voxelModeller.SetModelBounds(bounds);
>>         voxelModeller.SetScalarTypeToFloat();
>>         voxelModeller.SetMaximumDistance(.1);
>>
>>         voxelModeller.SetInput(reader.GetOutput());
>>
>>         /* marching cubes */
>>         marchingcubes.SetInput(voxelModeller.GetOutput());
>>         marchingcubes.ComputeNormalsOn();
>>         marchingcubes.SetValue(0, 1);
>>
>>         renderer.SetBackground(.1, .2, .3);
>>
>>         renderWindow.AddRenderer(renderer);
>>
>>         interactor.SetRenderWindow(renderWindow);
>>
>>         mapper.SetInput(marchingcubes.GetOutput());
>>
>>         actor.SetMapper(mapper);
>>
>>         renderer.AddActor(actor);
>>         renderWindow.Render();
>>         interactor.Start();
>>
>>         vtkSTLWriter writer = new vtkSTLWriter();
>>         writer.SetFileTypeToBinary();
>>         writer.AddInputConnection(marchingcubes.GetOutputPort());
>>         writer.SetFileName("ressources\\output_piston.xy.stl");
>>         writer.Write();
>>
>>     }
>>
>>     public static void main(String[] args) {
>>         try {
>>             Class.forName("vtk.vtkPanel");
>>         } catch (ClassNotFoundException e) {
>>             e.printStackTrace();
>>         }
>>
>>         try {
>>             SwingUtilities.invokeAndWait(new MeshVtk());
>>         } catch (InvocationTargetException | InterruptedException e) {
>>             e.printStackTrace();
>>         }
>>     }
>>
>> }
>>
>> I hope somebody could help me to fix this.
>>
>> Regards,
>>
>> --
>> Thibault Varacca
>> EFREI Promo 2014
>> 06 60 53 11 35
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>>
>


-- 
Thibault Varacca
EFREI Promo 2014
06 60 53 11 35
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130506/7f66b16f/attachment.htm>


More information about the vtkusers mailing list