[vtkusers] vtkPNMReader

Ahmed Mahmoud ahmedmm at gega.net
Wed Feb 7 15:34:09 EST 2001


Hello all,
I have 93 files pnm format and I want to make 3D for them.
When I render the whole files , it takes more than 10 hours without result.
I tried to render 10 files at a time and it works fine.
What is the problem??

I'm using  vtk 2.3 with Visual c++  .

this my code
/////////////////////////////
 vtkPNMReader *reader=vtkPNMReader::New();
  reader->SetFilePrefix (STUDY);
  reader->SetDataSpacing (PIXEL_SIZE,PIXEL_SIZE ,SPACING);
  reader->SetDataOrigin(originx,originy,SPACING);
  reader->SetDataVOI (0 ,512 ,0 ,512 ,m_start,m_end);
  reader->SetTransform(hfsi);
  reader->GetOutput()-> ReleaseDataFlagOn();

 vtkImageShrink3D *shrinker=vtkImageShrink3D::New();
  shrinker->SetInput (reader->GetOutput());
  shrinker->SetShrinkFactors(SAMPLE_RATE[0],SAMPLE_RATE[1],SAMPLE_RATE[2]);
  shrinker->AveragingOn();

 vtkImageGaussianSmooth *gaussian=vtkImageGaussianSmooth::New();
  gaussian->SetInput (shrinker->GetOutput());
  gaussian->SetDimensionality(3);
  gaussian->SetStandardDeviation
(GAUSSIAN_STANDARD_DEVIATION[0],GAUSSIAN_STANDARD_DEVIATION[1],GAUSSIAN_STAN
DARD_DEVIATION[2]);
  gaussian->SetRadiusFactor(1);


 vtkImageToStructuredPoints
*toStructuredPoints=vtkImageToStructuredPoints::New();
  toStructuredPoints ->SetInput(gaussian ->GetOutput());
  toStructuredPoints ->Update ();
  toStructuredPoints ->GetOutput()->ReleaseDataFlagOn();

 vtkMarchingCubes *mcubes=vtkMarchingCubes::New();
  mcubes->SetInput(toStructuredPoints->GetOutput());
  mcubes->ComputeScalarsOff();
  mcubes->ComputeGradientsOff();
  mcubes->ComputeNormalsOff();
  mcubes->SetValue(0,70);
  mcubes->GetOutput()->ReleaseDataFlagOn();

 vtkDecimate *decimator=vtkDecimate::New();
  decimator->SetInput(mcubes->GetOutput());
  decimator->SetInitialFeatureAngle(DECIMATE_ANGLE);
  decimator->SetMaximumIterations(DECIMATE_ITERATIONS);
  decimator->SetMaximumSubIterations(0);
  decimator->PreserveEdgesOn();
  decimator->SetMaximumError(1);
  decimator->SetTargetReduction (DECIMATE_REDUCTION);
  decimator->SetInitialError (DECIMATE_ERROR);
  decimator->SetErrorIncrement(DECIMATE_ERROR_INCREMENT);
  decimator->GetOutput()->ReleaseDataFlagOn();

 vtkSmoothPolyDataFilter *smoother=vtkSmoothPolyDataFilter::New();
  smoother->SetInput(decimator->GetOutput());
  smoother->SetNumberOfIterations(SMOOTH_ITERATIONS);
  smoother->SetRelaxationFactor (SMOOTH_FACTOR);
  smoother->SetFeatureAngle (SMOOTH_ANGLE);
  smoother->FeatureEdgeSmoothingOff();
  smoother->BoundarySmoothingOff();
  smoother->SetConvergence(0);
  smoother->GetOutput()->ReleaseDataFlagOn();

 vtkPolyDataNormals *normals=vtkPolyDataNormals::New();
  normals->SetInput(smoother->GetOutput());
  normals->SetFeatureAngle (FEATURE_ANGLE);
  normals->GetOutput()->ReleaseDataFlagOn();

 vtkStripper *stripper=vtkStripper::New();
     stripper->SetInput(normals->GetOutput());
  stripper->GetOutput()->ReleaseDataFlagOn();

 vtkPolyDataWriter *writer=vtkPolyDataWriter::New();
  writer->SetInput(stripper->GetOutput());
  writer->SetFileName(File);
  writer->SetFileType(2);
  writer->Update();

Thank you.

Ahmed






More information about the vtkusers mailing list