<div>//THIS IS MY CODE</div><div><br></div><div><div>#include "itkImageFileReader.h"</div><div>#include "itkImageFileWriter.h"</div><div>#include "itkRescaleIntensityImageFilter.h"</div><div>#include "itkGDCMImageIO.h"</div>
<div>#include "itkImageToVTKImageFilter.h"</div><div>#include "vtkSphereSource.h"</div><div>#include "vtkPolyDataMapper.h"</div><div>#include "vtkProperty.h"</div><div>#include "vtkActor.h"</div>
<div>#include "vtkRenderWindow.h"</div><div>#include "vtkRenderer.h"</div><div>#include "vtkRenderWindowInteractor.h"</div><div>#include "vtkCamera.h"</div><div>#include "vtkContourFilter.h"</div>
<div>#include "vtkPolyDataNormals.h"</div><div>#include "vtkImageGaussianSmooth.h"</div><div>#include "itkImage.h"</div><div>#include "itkSmoothingRecursiveGaussianImageFilter.h"</div>
<div>#include "itkRescaleIntensityImageFilter.h"</div><div>#include "vtkImageViewer.h"</div><div><br></div><div><br></div><div>int main( int argc, char* argv[] )</div><div>{</div><div><br></div><div> typedef signed short InputPixelType;</div>
<div> const unsigned int InputDimension = 2;</div><div><br></div><div> </div><div> typedef itk::Image< InputPixelType, InputDimension > InputImageType;</div><div> typedef itk::Image< InputPixelType, InputDimension > GaussianImageType;</div>
<div> typedef itk::Image< InputPixelType, InputDimension > WriteImageType;</div><div><br></div><div> typedef itk::ImageFileReader< InputImageType > ReaderType;</div><div> typedef itk::ImageFileWriter< InputImageType > WriterType;</div>
<div> typedef itk::ImageToVTKImageFilter<InputImageType> FilterType;</div><div> typedef itk::GDCMImageIO ImageIOTypeGDCM;</div><div> typedef itk::SmoothingRecursiveGaussianImageFilter< InputImageType , GaussianImageType > SmoothingFilterType;</div>
<div> typedef itk::RescaleIntensityImageFilter< InputImageType, WriteImageType > RescaleFilterType;</div><div><br></div><div><br></div><div> ReaderType::Pointer reader = ReaderType::New();</div><div> FilterType::Pointer connector = FilterType::New();</div>
<div> ImageIOTypeGDCM::Pointer gdcmImageIO = ImageIOTypeGDCM::New();</div><div> SmoothingFilterType::Pointer smoother = SmoothingFilterType::New();</div><div> RescaleFilterType::Pointer rescaler = RescaleFilterType::New();</div>
<div><br></div><div> const char * inputDicomFilename = argv[1];</div><div><br></div><div> reader->SetFileName( inputDicomFilename );</div><div> reader->SetImageIO( gdcmImageIO );</div><div><br></div><div> try</div>
<div> {</div><div> reader->Update();</div><div> }</div><div> catch (itk::ExceptionObject & e)</div><div> {</div><div> std::cerr << "exception in file reader " << std::endl;</div>
<div> std::cerr << e << std::endl;</div><div> return EXIT_FAILURE;</div><div> }</div><div><br></div><div> rescaler->SetOutputMinimum( 0 );</div><div> rescaler->SetOutputMaximum( 255 );</div>
<div><br></div><div> //smoother->SetSigma( 1.0 );</div><div> //smoother->SetNormalizeAcrossScale( true );</div><div><br></div><div> rescaler->SetInput( reader->GetOutput() );</div><div> connector->SetInput( rescaler->GetOutput() );</div>
<div><br></div><div> try</div><div> {</div><div> connector->Update();</div><div> }</div><div> catch( itk::ExceptionObject & err )</div><div> {</div><div> std::cerr << "ExceptionObject caught !" << std::endl;</div>
<div> std::cerr << err << std::endl;</div><div> return EXIT_FAILURE;</div><div> }</div><div><br></div><div> vtkContourFilter *isoSurface = vtkContourFilter::New();</div><div> vtkPolyDataNormals *normals = vtkPolyDataNormals::New();</div>
<div> vtkImageGaussianSmooth *smooth = vtkImageGaussianSmooth::New();</div><div><br></div><div> isoSurface->SetValue(90,90);</div><div> isoSurface->SetInput(connector->GetOutput() ); </div><div><br></div>
<div> try</div><div> {</div><div> isoSurface->Update();</div><div> }</div><div> catch( itk::ExceptionObject & err )</div><div> {</div><div> std::cerr << "ExceptionObject caught !" << std::endl;</div>
<div> std::cerr << err << std::endl;</div><div> return EXIT_FAILURE;</div><div> }</div><div><br></div><div> normals->SetInput( isoSurface->GetOutput() );</div><div><br></div><div> try</div>
<div> {</div><div> normals->Update();</div><div> }</div><div> catch( itk::ExceptionObject & err )</div><div> {</div><div> std::cerr << "ExceptionObject caught !" << std::endl;</div>
<div> std::cerr << err << std::endl;</div><div> return EXIT_FAILURE;</div><div> }</div><div><br></div><div><br></div><div> vtkPolyDataMapper *map = vtkPolyDataMapper::New();</div><div> map->SetInput(normals->GetOutput());// isoSurface->GetOutput()</div>
<div><br></div><div> vtkActor *aSphere = vtkActor::New();//don't used</div><div> vtkRenderer *ren1 = vtkRenderer::New();</div><div> vtkRenderWindow *renWin = vtkRenderWindow::New();</div><div> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();</div>
<div><br></div><div> aSphere->SetMapper(map);//don't used</div><div> aSphere->GetProperty()->SetColor(0,0,1); //don't used</div><div><br></div><div> renWin->AddRenderer(ren1);</div><div><br></div><div>
<br></div><div> iren->SetRenderWindow(renWin);</div><div><br></div><div> ren1->AddActor(aSphere);//don't used</div><div> ren1->SetBackground(0,0,0); //don't used</div><div><br></div><div> renWin->Render();</div>
<div><br></div><div><br></div><div> vtkCamera * cam = ren1->GetActiveCamera();</div><div><br></div><div> cam->SetViewUp(0, -1, 0);</div><div> cam->Azimuth(180);</div><div><br></div><div> </div><div> ren1->ResetCamera();</div>
<div> iren->Start();</div><div> </div><div><br></div><div> ren1->Delete();</div><div> renWin->Delete();</div><div> iren->Delete();</div><div> return EXIT_SUCCESS;</div><div><br></div><div>}</div></div><div>
<br></div>-- <br><div>Brenno Bernardes Ribeiro<br><br>Engenharia da Computação</div><div>
Universidade Federal do Pará</div><div style="padding:0px;overflow:hidden;margin-left:0px;margin-top:0px;color:black;font-size:10px;text-align:left;line-height:130%"></div><br>