problem on vtkvmtkCurvedMPRImageFilter

28 views
Skip to first unread message

Xiaohua Lu

unread,
Aug 1, 2018, 4:21:12 AM8/1/18
to vmtk-users
hi all, 

I got the error blew when using the vtkvmtkCurvedMPRImageFilter

ERROR: In ..\Common\DataModel\vtkImageData.cxx, line 1324
vtkImageData (000000000292C310): No Scalar Field has been specified - assuming 1 component!

my source is here

// read input image(1 component)
auto imagereader = vtkSmartPointer<vtkMetaImageReader>::New();
imagereader->SetFileName("c:\\1.seg.mha");
imagereader->Update();

auto caster = vtkSmartPointer<vtkImageCast>::New();
caster->SetInputData(imagereader->GetOutput());
caster->SetOutputScalarTypeToFloat();
caster->Update();
// read centerline polydata
auto polyreader = vtkSmartPointer<vtkXMLPolyDataReader>::New();
polyreader->SetFileName("c:\\1.cl1.vtp");
polyreader->Update();

// compute normal
auto centerlineAttributes = vtkSmartPointer<vtkvmtkCenterlineAttributesFilter>::New();
centerlineAttributes->SetInputData(polyreader->GetOutput());
centerlineAttributes->SetAbscissasArrayName("Abscissas");
centerlineAttributes->SetParallelTransportNormalsArrayName("ParallelTransportNormals");
centerlineAttributes->Update();

auto Centerlines = centerlineAttributes->GetOutput();

// compute tangent
auto centerlineGeometry = vtkSmartPointer<vtkvmtkCenterlineGeometry>::New();
centerlineGeometry->SetInputData(Centerlines);
centerlineGeometry->SetLengthArrayName("Length");
centerlineGeometry->SetCurvatureArrayName("Curvature");
centerlineGeometry->SetTorsionArrayName("Torsion");
centerlineGeometry->SetTortuosityArrayName("Tortuosity");
centerlineGeometry->SetFrenetTangentArrayName("FrenetTangent");
centerlineGeometry->SetFrenetNormalArrayName("FrenetNormal");
centerlineGeometry->SetFrenetBinormalArrayName("FrenetBinormal");
centerlineGeometry->SetLineSmoothing(0);
centerlineGeometry->SetOutputSmoothedLines(0);
centerlineGeometry->SetNumberOfSmoothingIterations(100);
centerlineGeometry->SetSmoothingFactor(0.1);
centerlineGeometry->Update();

Centerlines = centerlineGeometry->GetOutput();

// using curvedMPRImageFilter 
auto curvedMPRImageFilter = vtkSmartPointer<vtkvmtkCurvedMPRImageFilter2>::New();
curvedMPRImageFilter->SetInputData(caster->GetOutput());
curvedMPRImageFilter->SetCenterline(Centerlines);
curvedMPRImageFilter->SetParallelTransportNormalsArrayName("ParallelTransportNormals");
curvedMPRImageFilter->SetFrenetTangentArrayName("FrenetTangent");
curvedMPRImageFilter->SetInplaneOutputSpacing(1, 1);
curvedMPRImageFilter->SetInplaneOutputSize(100, 100);
curvedMPRImageFilter->SetReslicingBackgroundLevel(0);
curvedMPRImageFilter->Update();

auto writer = vtkSmartPointer<vtkMetaImageWriter>::New();
writer->SetFileName("curvedMPRImageFilter.mha");
writer->SetInputData(curvedMPRImageFilter->GetOutput());
writer->Write();

I update the vtkvmtkCurvedMPRImageFilter source code to set the output image component the same with the input
but that does not work!


Thanks in advance!

Howard
Reply all
Reply to author
Forward
0 new messages