@@ -67,6 +67,9 @@ PURPOSE. See the above copyright notices for more information.
6767#include < mitkITKImageImport.h>
6868#include < mitkIOUtil.h>
6969#include < mitkDataStorage.h>
70+ #include < mitkImagePixelReadAccessor.h>
71+ #include < mitkImageToSurfaceFilter.h>
72+ #include < mitkManualSegmentationToSurfaceFilter.h>
7073#include < mitkRenderingManager.h>
7174
7275// Qt
@@ -304,6 +307,43 @@ mitk::Surface::Pointer CemrgCommonUtils::LoadVTKMesh(std::string path) {
304307 }// _catch
305308}
306309
310+ mitk::Surface::Pointer CemrgCommonUtils::ExtractSurfaceFromSegmentation (mitk::Image::Pointer image, double thresh, double blur, double smooth, double decimation){
311+ auto im2surf = mitk::ManualSegmentationToSurfaceFilter::New ();
312+
313+ im2surf->SetInput (image);
314+ im2surf->SetThreshold (thresh);
315+ im2surf->SetUseGaussianImageSmooth (true );
316+ im2surf->SetSmooth (true );
317+ im2surf->SetMedianFilter3D (true );
318+ im2surf->InterpolationOn ();
319+ im2surf->SetGaussianStandardDeviation (blur);
320+ im2surf->SetMedianKernelSize (smooth, smooth, smooth);
321+ im2surf->SetDecimate (mitk::ImageToSurfaceFilter::QuadricDecimation);
322+ im2surf->SetTargetReduction (decimation);
323+ im2surf->UpdateLargestPossibleRegion ();
324+
325+ mitk::Surface::Pointer shell = im2surf->GetOutput ();
326+ return shell;
327+ }
328+
329+ void CemrgCommonUtils::FlipXYPlane (mitk::Surface::Pointer surf, QString dir, QString vtkname){
330+
331+ // Prepare points for MITK visualisation - (CemrgCommonUtils::LoadVTKMesh)
332+ vtkSmartPointer<vtkPolyData> pd = surf->GetVtkPolyData ();
333+ for (int ix=0 ; ix<pd->GetNumberOfPoints (); ix++) {
334+ double * point = pd->GetPoint (ix);
335+ point[0 ] = -point[0 ];
336+ point[1 ] = -point[1 ];
337+ pd->GetPoints ()->SetPoint (ix, point);
338+ }
339+
340+ if (!vtkname.isEmpty ()){
341+ vtkname += (!vtkname.contains (" .vtk" )) ? " .vtk" : " " ;
342+ QString path = dir + mitk::IOUtil::GetDirectorySeparator ()+vtkname;
343+ mitk::IOUtil::Save (surf, path.toStdString ());
344+ }
345+ }
346+
307347QString CemrgCommonUtils::M3dlibParamFileGenerator (QString dir, QString filename, QString thicknessCalc) {
308348
309349 QString path2file = dir + mitk::IOUtil::GetDirectorySeparator () + filename;
0 commit comments