Ok thanks for a first replay! Here is my code snip:<br><br>#include &lt;vtkDICOMImageReader.h&gt;<br>#include &lt;vtkImageGaussianSmooth.h&gt;<br>#include &lt;vtkMarchingCubes.h&gt;<br>#include &lt;vtkPolyDataConnectivityFilter.h&gt;<br>
#include &lt;vtkTriangleFilter.h&gt;<br>#include &lt;vtkSmoothPolyDataFilter.h&gt;<br>#include &lt;vtkDecimatePro.h&gt;<br>#include &lt;string&gt;<br>#include &lt;vtkGenericDataSet.h&gt;<br>#include &lt;vtkGenericCellIterator.h&gt;<br>
#include &lt;iostream&gt;<br>#include &lt;vtkRenderer.h&gt;<br>#include &lt;vtkRenderWindow.h&gt;<br>#include &lt;vtkRenderWindowInteractor.h&gt;<br>#include &lt;vtkPolyDataMapper.h&gt;<br>#include &lt;vtkActor.h&gt;<br><br>
using namespace std;<br><br>class CreateIsosurfaceFromDicom {<br>&nbsp;&nbsp;&nbsp; string directoryName;<br>&nbsp;&nbsp;&nbsp; vtkPolyDataConnectivityFilter *pelvis_model;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CreateIsosurfaceFromDicom(string dirname) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;directoryName = dirname;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ~CreateIsosurfaceFromDicom() {};<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; //private:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkDICOMImageReader *reader;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; void readDicomDir() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;reader = vtkDICOMImageReader::New();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;reader-&gt;SetDirectoryName(this-&gt;directoryName.c_str());<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;reader-&gt;Update();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>};<br><br>int main(int argc, char *argv[]) {&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; string test = argv[1];<br>
&nbsp;&nbsp;&nbsp; CreateIsosurfaceFromDicom foo(test);<br>&nbsp;&nbsp;&nbsp; foo.readDicomDir();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkImageGaussianSmooth *gaussBlur = vtkImageGaussianSmooth::New();<br>&nbsp;&nbsp;&nbsp; gaussBlur-&gt;SetInputConnection(foo.reader-&gt;GetOutputPort());<br>
&nbsp;&nbsp;&nbsp; gaussBlur-&gt;SetStandardDeviation(2);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkMarchingCubes *isosurfaces = vtkMarchingCubes::New();<br>&nbsp;&nbsp;&nbsp; isosurfaces-&gt;SetInputConnection(gaussBlur-&gt;GetOutputPort());<br>&nbsp;&nbsp;&nbsp; isosurfaces-&gt;SetValue(0,-400);<br>
&nbsp;&nbsp;&nbsp; isosurfaces-&gt;ComputeNormalsOff();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkPolyDataConnectivityFilter *outerIsosurface = vtkPolyDataConnectivityFilter::New();<br>&nbsp;&nbsp;&nbsp; outerIsosurface-&gt;SetInputConnection(isosurfaces-&gt;GetOutputPort());<br>
&nbsp;&nbsp;&nbsp; outerIsosurface-&gt;SetExtractionModeToLargestRegion();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkDecimatePro *deciMesh = vtkDecimatePro::New();<br>&nbsp;&nbsp;&nbsp; deciMesh-&gt;SetInputConnection(outerIsosurface-&gt;GetOutputPort());<br>&nbsp;&nbsp;&nbsp; deciMesh-&gt;SetTargetReduction(.85);<br>
&nbsp;&nbsp;&nbsp; deciMesh-&gt;AccumulateErrorOn();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkSmoothPolyDataFilter *smoothMesh = vtkSmoothPolyDataFilter::New();<br>&nbsp;&nbsp;&nbsp; smoothMesh-&gt;SetInputConnection(deciMesh-&gt;GetOutputPort());<br>&nbsp;&nbsp;&nbsp; smoothMesh-&gt;SetRelaxationFactor(0.25);<br>
&nbsp;&nbsp;&nbsp; smoothMesh-&gt;SetNumberOfIterations(50);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkRenderer *rend = vtkRenderer::New();<br>&nbsp;&nbsp;&nbsp; vtkRenderWindow *rwin = vtkRenderWindow::New();<br>&nbsp;&nbsp;&nbsp; rwin-&gt;AddRenderer(rend);<br>&nbsp;&nbsp;&nbsp; vtkRenderWindowInteractor *interact = vtkRenderWindowInteractor::New();<br>
&nbsp;&nbsp;&nbsp; interact-&gt;SetRenderWindow(rwin);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();<br>&nbsp;&nbsp;&nbsp; mapper-&gt;SetInputConnection(smoothMesh-&gt;GetOutputPort());<br>&nbsp;&nbsp;&nbsp; mapper-&gt;ScalarVisibilityOff();<br>
&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkActor *act = vtkActor::New();<br>&nbsp;&nbsp;&nbsp; act-&gt;SetMapper(mapper);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; rend-&gt;AddActor(act);<br>&nbsp;&nbsp;&nbsp; rend-&gt;SetBackground(1,1,1);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; rwin-&gt;SetSize(640,480);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; interact-&gt;Initialize();<br>
&nbsp;&nbsp;&nbsp; interact-&gt;Start();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkGenericDataSet *ds;<br>&nbsp;&nbsp;&nbsp; vtkGenericCellIterator *cellIter = ds-&gt;NewCellIterator(2);<br>&nbsp;&nbsp;&nbsp; cellIter-&gt;Begin();<br>}<br><br>Sorry for the bad c++, buts it is only for test cases. In additional here is my cmake file:<br>
<br>project(PelvisImplaAssembly)<br>find_package(VTK)<br>if(VTK_FOUND)<br>&nbsp;&nbsp;&nbsp; include(${VTK_USE_FILE})<br>endif(VTK_FOUND)<br>add_executable(CreateIsosurfaceFromDicom CreateIsosurfaceFromDicom.cpp)<br>target_link_libraries(CreateIsosurfaceFromDicom<br>
&nbsp;&nbsp;&nbsp; vtkFiltering<br>&nbsp;&nbsp;&nbsp; vtkIO<br>&nbsp;&nbsp;&nbsp; vtkCommon<br>&nbsp;&nbsp;&nbsp; vtkHybrid<br>&nbsp;&nbsp;&nbsp; vtkImaging<br>&nbsp;&nbsp;&nbsp; vtksys)<br><br>