[ITK Community] reading/writing a single dicom
Amber Simpson
simpsona at gmail.com
Thu Jan 16 16:08:40 EST 2014
Thanks Andras! This works perfectly and couldn't be easier.
On Thu, Jan 16, 2014 at 2:32 PM, Andras Lasso <lasso at queensu.ca> wrote:
> Hi Amber,
>
>
>
> DCMTK can most probably read/modify/write these scout images. The easiest
> is to use the dcmodify tool (for more info google: dcmtk anonymize). You
> can download dcmodify or change the ITK build options to build/use DCMTK.
>
>
>
> Andras
>
>
>
> *From:* Community [mailto:community-bounces at itk.org] *On Behalf Of *Amber
> Simpson
> *Sent:* Thursday, January 16, 2014 2:16 PM
> *To:* community at itk.org
> *Subject:* [ITK Community] reading/writing a single dicom
>
>
>
>
>
> Hi All,
>
>
>
> I'm attempting to anonymize a single Scout image in dicom format. The
> image should be written out to the same format to maintain compatibility
> with another software package. ImageJ, gdcmanon, and ITKsnap cannot read
> this dicom but OSIRIX can. The dicom header appears not to be readable with
> GDCMImageIO. The dicom can be read using a version of
> DicomPrintPatientInformation.cxx (from the ITK examples) that relies on
> DICOMImageIO2. I added a writer to the example but no file (dicom or
> otherwise) is generated. See below for code. Any suggestions on getting
> this code to work? Or should I take another approach entirely?
>
>
>
> Thanks,
>
> Amber
>
>
>
>
>
> #include "itkDICOMImageIO2.h"
>
> #include "itkImageFileReader.h"
>
> #include "itkImageFileWriter.h"
>
> #include "itkImage.h"
>
> #include "itkMetaDataDictionary.h"
>
> #include "itkMetaDataObject.h"
>
> //#include "itkGDCMImageIO.h"
>
>
>
> int main( int argc, char* argv[] )
>
> {
>
>
>
> if( argc < 2 )
>
> {
>
> std::cerr << "Usage: " << argv[0] << " DicomFile " << std::endl;
>
> return EXIT_FAILURE;
>
> }
>
>
>
> typedef itk::Image<signed short,2> ImageType;
>
> typedef itk::ImageFileReader< ImageType > ReaderType;
>
>
>
> itk::DICOMImageIO2::Pointer dicomIO = itk::DICOMImageIO2::New();
>
>
>
> ReaderType::Pointer reader = ReaderType::New();
>
>
>
> reader->SetFileName( argv[1] );
>
>
>
> reader->SetImageIO( dicomIO );
>
>
>
> try
>
> {
>
> reader->Update();
>
> }
>
> catch (itk::ExceptionObject &ex)
>
> {
>
> std::cout << ex << std::endl;
>
> return EXIT_FAILURE;
>
> }
>
>
>
>
>
> const unsigned int length = 2048;
>
>
>
> char patientName[ length ];
>
> char patientID[ length ];
>
> char patientSex[ length ];
>
> char patientAge[ length ];
>
> char studyDate[ length ];
>
> char modality[ length ];
>
> char manufacturer[ length ];
>
> char institution[ length ];
>
> char model[ length ];
>
>
>
> dicomIO->GetPatientName( patientName );
>
> dicomIO->GetPatientID( patientID );
>
> dicomIO->GetPatientSex( patientSex );
>
> dicomIO->GetPatientAge( patientAge );
>
> dicomIO->GetStudyDate( studyDate );
>
> dicomIO->GetModality( modality );
>
> dicomIO->GetManufacturer( manufacturer );
>
> dicomIO->GetInstitution( institution );
>
> dicomIO->GetModel( model );
>
>
>
> std::cout << "Before anonymization: " << std::endl;
>
> std::cout << "Patient Name : " << patientName << std::endl;
>
> std::cout << "Patient ID : " << patientID << std::endl;
>
> std::cout << "Patient Sex : " << patientSex << std::endl;
>
> std::cout << "Patient Age : " << patientAge << std::endl;
>
> std::cout << "Study Date : " << studyDate << std::endl;
>
> std::cout << "Modality : " << modality << std::endl;
>
> std::cout << "Manufacturer : " << manufacturer << std::endl;
>
> std::cout << "Institution : " << institution << std::endl;
>
> std::cout << "Model : " << model << std::endl;
>
>
>
>
>
>
>
> try
>
> {
>
> reader->Update();
>
> }
>
> catch( itk::ExceptionObject & err )
>
> {
>
> std::cerr << "ExceptionObject caught !" << std::endl;
>
> std::cerr << err << std::endl;
>
> return EXIT_FAILURE;
>
> }
>
>
>
> typedef itk::ImageFileWriter< ImageType > WriterType;
>
> WriterType::Pointer writer = WriterType::New();
>
>
>
> std::cout << "Writing the image as " << std::endl << std::endl;
>
> std::cout << "test_dicom.dcm" << std::endl << std::endl;
>
>
>
> writer->SetFileName( "test_dicom.dcm" );
>
>
>
> writer->SetInput( reader->GetOutput() );
>
>
>
> try
>
> {
>
> writer->UpdateLargestPossibleRegion(); //changed from example
>
> }
>
> catch (itk::ExceptionObject &ex)
>
> {
>
> std::cout << ex;
>
> return EXIT_FAILURE;
>
> }
>
>
>
>
>
> return EXIT_SUCCESS;
>
>
>
> }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140116/f682ed2d/attachment-0002.html>
More information about the Community
mailing list