Image 轉化 vtkPolydata
void ImageToPolyData(ImageType::Pointer sliceimage)
{
typedef itk::ImageToVTKImageFilter<ImageType> itkVtkConverter;
itkVtkConverter::Pointer conv=itkVtkConverter::New();
conv->SetInput(sliceimage);
conv->Update();
vtkImageData *pData=conv->GetOutput();
vtkPoints*points=vtkPoints::New();
vtkCellArray* vertices =vtkCellArray::New();
int*dims=pData->GetDimensions();
double tmp[];
int id=;
double *spacing=orginalImage->GetSpacing();
double *origin=orginalImage->GetOrigin();
for(int i=; i<dims[]; i++)
{
for(int j=; j<dims[]; j++)
{
int tmp_point[];
tmp_point[]=i;
tmp_point[]=j;
tmp_point[]=;
short* gray_value = static_cast<short*>(pData->GetScalarPointer(tmp_point));
if (*gray_value!=)
{
double wordp[];
tmp_point[]=sliceIndex;
for(int k=;k<;k++)
{
wordp[k]=tmp_point[k]*(spacing[k])+origin[k];
}
vtkIdType pid[];
pid[] = points->InsertNextPoint(wordp[],wordp[],wordp[]+);
vertices->InsertNextCell(,pid);
}
}
}
Convert the image to a polydata
//vtkImageDataGeometryFilter* imageDataGeometryFilter = vtkImageDataGeometryFilter::New();
//imageDataGeometryFilter->SetInput(conv->GetOutput());
//imageDataGeometryFilter->Update();
this->CLine->SetPoints(points);
this->CLine->SetVerts(vertices);
this->CLine->Update();
vertices->Delete();
points->Delete();
}