[Insight-users] display analyze image em 2D and 3D
Jihan Zoghbi
jihanzoghbi at gmail.com
Mon Sep 29 10:15:22 EDT 2008
Thanks Luis for your help, I used the following example showed in this file
"DicomSeriesReadImageWrite2.cxx" and I
got the slice em order.
Best regards.
2008/9/29 Luis Ibanez <luis.ibanez at kitware.com>
> Hi Jihan,
>
> Try the following:
>
> after the code:
>
> try{
> > reader2->Update();
> > }
> > catch (itk::ExceptionObject & e)
> > {
> > std::cerr << "Failed to read " << fname << "\n" <<
> > e.GetDescription() << std::endl;
> > return NULL;
> > }
>
> add a writer:
>
> typedef itk::ImageFileWriter< ImageType > WriterType;
>
> WriterType::Pointer writer2 = WriterType::New();
>
> writer2->SetInput( reader2->GetOutput() );
> writer2->SetFileName( "FROMDICOM.mhd");
> writer2->Updates();
>
> Then look at the output image by using the ImageViewer,
> or ParaView, or Slicer, or VV, or SNAP,... or any other
> application based on ITK readers.
>
> Please let us know if that image still appears to have
> the slices out of order.
>
>
> Thanks
>
>
>
> Luis
>
>
>
> -------------
> Jihan Zoghbi wrote:
>
>> Dear Luis,
>>
>> Thanks for your help, I have already succeed to read and visualize
>> Analyze Image. I'm facing a new problem now, when I'm trying to read and
>> visualize Dicom Image , I got a problem to view the slides in the correct
>> order. I used the following code:
>> /*******************************************/
>>
>> char dir_name[]="/home/talita/Desktop/COMUNIX/Neck 1HEAD_NECK_PETCT/CT
>> HEAD-NK 5.0 B30s";
>> dicom_info = vtkImageData::New();
>> dicom_info = vtkITKMyUtilityLoadImage<unsigned short,1>(dir_name);
>> /*****************************************************/
>> void window1::addAxialSlice(int slice_number)
>> {
>> int *extent;
>> extent = dicom_info->GetWholeExtent();
>> renderer->RemoveActor(axial);
>> axialColors = vtkImageMapToColors::New();
>>
>> SetInputConnection(image->GetOutputPort());
>> axialColors->SetInput(dicom_info);
>> axialColors->SetLookupTable(hueLut);
>> axial = vtkImageActor::New();
>> axial->SetInput(axialColors->GetOutput());
>> axial->SetDisplayExtent(0,extent[1], 0,extent[3],
>> slice_number,slice_number);
>> axial->SetPosition(0,0,0);
>>
>> renderer->AddActor(axial);
>> renderer->ResetCameraClippingRange();
>> renArea->queue_draw();
>> }
>> /******************************************************/
>>
>> template <class IT,int choice>
>> vtkImageData* vtkITKMyUtilityLoadImage(char* fname)
>> {
>> typedef itk::Image< IT, 3 > ImageType;
>> typedef itk::ImageToVTKImageFilter<
>> ImageType> ImageToVTKImageFilterType;
>> typedef itk::ImageFileReader< ImageType > ReaderType;
>> typedef itk::ImageSeriesReader< ImageType > ReaderType2;
>> typename ReaderType::Pointer reader = ReaderType::New();
>> typename ReaderType2::Pointer reader2 = ReaderType2::New();
>> typename ImageToVTKImageFilterType::Pointer
>> exporter=ImageToVTKImageFilterType::New();
>> if (choice==0){
>> reader->SetFileName(fname);
>> try{ reader->Update(); } catch
>> (itk::ExceptionObject & e) { std::cerr << "Failed to
>> read " << fname << "\n" << e.GetDescription() << std::endl;
>> return NULL; }
>> exporter->SetInput(reader->GetOutput());
>> }
>> if (choice==1){
>> itk::DICOMImageIO2::Pointer dicomIO =
>> itk::DICOMImageIO2::New();
>> // Get the DICOM filenames from the directory
>> itk::DICOMSeriesFileNames::Pointer nameGenerator =
>> itk::DICOMSeriesFileNames::New();
>> nameGenerator->SetDirectory(fname);
>> try
>> {
>> typedef std::vector<std::string> seriesIdContainer;
>> const seriesIdContainer & seriesUID =
>> nameGenerator->GetSeriesUIDs();
>> seriesIdContainer::const_iterator seriesItr =
>> seriesUID.begin();
>> seriesIdContainer::const_iterator seriesEnd = seriesUID.end();
>> std::cout << std::endl << "The directory: " << std::endl;
>> std::cout << std::endl << fname << std::endl << std::endl;
>> std::cout << "Contains the following DICOM Series: ";
>> std::cout << std::endl << std::endl;
>> while( seriesItr != seriesEnd )
>> {
>> std::cout << seriesItr->c_str() << std::endl;
>> seriesItr++;
>> }
>> std::cout << std::endl << std::endl;
>> std::cout << "Now reading series: " << std::endl << std::endl;
>> typedef std::vector<std::string> fileNamesContainer;
>> fileNamesContainer fileNames;
>> std::cout << seriesUID.begin()->c_str() << std::endl;
>> fileNames = nameGenerator->GetFileNames();
>> std::cout << std::endl << std::endl;
>> reader2->SetFileNames( fileNames );
>> reader2->SetImageIO( dicomIO );
>> try{ reader2->Update(); }
>> catch (itk::ExceptionObject & e) { std::cerr <<
>> "Failed to read " << fname << "\n" << e.GetDescription() << std::endl;
>> return NULL; }
>> exporter->SetInput(reader2->GetOutput());
>> }
>> catch (itk::ExceptionObject &ex)
>> {
>> std::cout << ex;
>> return NULL;
>> }
>> }
>> exporter->Update();
>> vtkImageData* output=vtkImageData::New();
>> output->DeepCopy(exporter->GetOutput());
>> return output;
>> }
>> P.S: This renderer is a Rendering Area of vtkmm.
>>
>> Best Regards..
>> 2008/9/27 Luis Ibanez <luis.ibanez at kitware.com <mailto:
>> luis.ibanez at kitware.com>>
>>
>>
>> Hi Jihan,
>>
>> Please describe what is "different" about the image when you display
>> it.
>>
>> Also, what are you using for displaying the image ?
>>
>> Have you used the ImageViewer to visualize the image ?
>> You will find it in the InsightApplications module.
>>
>>
>> Regards,
>>
>>
>> Luis
>>
>>
>> --------------------
>> Jihan Zoghbi wrote:
>>
>>
>> Hi all,
>> I have a set of Analyze Image. I used ITK to read the .hdr file
>> and it got all right. I export this image to vtk, I'm facing a
>> great problem to display a 2D Slice. I already checked the
>> header data like: Spacing, Extent, Origin ..and everything is
>> ok! I 'm using unsigned short as a pixel type. I used the
>> vtkExtractVOI to extract a 2D slice, but when I try to
>> visualize it, i got a total different image. Could anybody help me?
>>
>> Regards
>> -- Jihan Zoghbi
>>
>> -- Jihan Zoghbi
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org <mailto:Insight-users at itk.org>
>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>
>>
>> --
>> Jihan Zoghbi
>>
>
--
Jihan Zoghbi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20080929/30d439da/attachment-0001.htm>
More information about the Insight-users
mailing list