[vtkusers] ImageToPolyDataFilter

Sebastien Jourdain sebastien.jourdain at kitware.com
Mon May 6 09:55:57 EDT 2013


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130506/6cf910ef/attachment.htm>


More information about the vtkusers mailing list