[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