[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