[Insight-users] problem with orientation of dicom output from segmentation

Andriy Fedorov fedorov at bwh.harvard.edu
Mon Nov 30 18:46:09 EST 2009


> I ended up using the statementy in my CMakeLists.txt file:
> SET (CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -ggdb" CACHE STRING "Flags used by the
> compiler during debug builds." FORCE)
>

John, I thought you should be able to configure debug flags by setting
BUILD_TYPE to DEBUG in ccmake interface.


> Here is the debugger output.  I will try to figure out the problem as to why
> my code is segmentation faulting, but I thought I would send you the gdb
> debugger output, in case you have some insight:
>
> thanks,
> john
>
> [jdrozd at trumpet ConnectedThresholdImageFilter2]$ gdb
> ./ConnectedThresholdImageFilter
>
> GNU gdb Fedora
> (6.8-32.fc10)
>
> Copyright (C) 2008 Free Software Foundation,
> Inc.
>
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
>
> This is free software: you are free to change and redistribute
> it.
>
> There is NO WARRANTY, to the extent permitted by law.  Type "show
> copying"
>
> and "show warranty" for
> details.
>
> This GDB was configured as
> "x86_64-redhat-linux-gnu"...
>
> (no debugging symbols
> found)
>
> (gdb) set args correctedsubject5.dcm outsubject5.dcm 103 142 95 17100
> 17300
>
> (gdb)
> run
>
> Starting program:
> /trumpet/downloads/ConnectedThresholdImageFilter_Plugin/ConnectedThresholdImageFilter/ConnectedThresholdImageFilter2/ConnectedThresholdImageFilter
> correctedsubject5.dcm outsubject5.dcm 103 142 95 17100
> 17300
>
> (no debugging symbols
> found)
>
> (no debugging symbols found)
> [Thread debugging using libthread_db enabled]
> [New Thread 0x7ffff3b8c750 (LWP 24704)]
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007ffff50efa3a in std::_Rb_tree<std::string, std::pair<std::string
> const, itk::SmartPointer<itk::MetaDataObjectBase> >,
> std::_Select1st<std::pair<std::string const,
> itk::SmartPointer<itk::MetaDataObjectBase> > >, std::less<std::string>,
> std::allocator<std::pair<std::string const,
> itk::SmartPointer<itk::MetaDataObjectBase> > > >::begin (this=0x0) at
> /usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_tree.h:599
> 599                             (this->_M_impl._M_header._M_left));
> Current language:  auto; currently c++
> Missing separate debuginfos, use: debuginfo-install
> e2fsprogs-libs-1.41.4-6.fc10.x86_64 glibc-2.9-3.x86_64 libgcc-4.3.2-7.x86_64
> libstdc++-4.3.2-7.x86_64
> (gdb) where
> #0  0x00007ffff50efa3a in std::_Rb_tree<std::string, std::pair<std::string
> const, itk::SmartPointer<itk::MetaDataObjectBase> >,
> std::_Select1st<std::pair<std::string const,
> itk::SmartPointer<itk::MetaDataObjectBase> > >, std::less<std::string>,
> std::allocator<std::pair<std::string const,
> itk::SmartPointer<itk::MetaDataObjectBase> > > >::begin (this=0x0) at
> /usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_tree.h:599
> #1  0x00007ffff50efa65 in std::map<std::string,
> itk::SmartPointer<itk::MetaDataObjectBase>, std::less<std::string>,
> std::allocator<std::pair<std::string const,
> itk::SmartPointer<itk::MetaDataObjectBase> > > >::begin (this=0x0)
>    at
> /usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_map.h:276
> #2  0x00007ffff50ef0b6 in itk::MetaDataDictionary::Begin (this=0x791a60)
>    at
> /trumpet/downloads/3DSlicerNov302009/Slicer3-lib/Insight/Code/Common/itkMetaDataDictionary.cxx:108
> #3  0x00007ffff7caaab7 in itk::GDCMImageIO::Write (this=0x7fffffffd130,
> buffer=0x791110)
>    at
> /trumpet/downloads/3DSlicerNov302009/Slicer3-lib/Insight/Code/IO/itkGDCMImageIO.cxx:1338
> #4  0x000000000047e461 in itk::ImageFileReader<itk::Image<short, 3u>,
> itk::DefaultConvertPixelTraits<short> >::EnlargeOutputRequestedRegion ()
> #5  0x00007ffff502f0e0 in itk::ProcessObject::PropagateRequestedRegion
> (this=0x784260, output=0x788630)
>    at
> /trumpet/downloads/3DSlicerNov302009/Slicer3-lib/Insight/Code/Common/itkProcessObject.cxx:783
> #6  0x00007ffff4ff667b in itk::DataObject::PropagateRequestedRegion
> (this=0x788630)
>    at
> /trumpet/downloads/3DSlicerNov302009/Slicer3-lib/Insight/Code/Common/itkDataObject.cxx:389
> #7  0x00007ffff4ff49e0 in itk::DataObject::Update (this=0x788630)
>    at
> /trumpet/downloads/3DSlicerNov302009/Slicer3-lib/Insight/Code/Common/itkDataObject.cxx:343
> #8  0x00007ffff502f3ef in itk::ProcessObject::Update (this=0x784260)
>    at
> /trumpet/downloads/3DSlicerNov302009/Slicer3-lib/Insight/Code/Common/itkProcessObject.cxx:615
> #9  0x000000000043fd3d in main ()
> (gdb)
>
>
> On Mon, Nov 30, 2009 at 2:56 PM, John Drozd <john.drozd at gmail.com> wrote:
>
>> Hi Bill,
>>
>> I installed the nightly build of 3D Slicer which includes Itk 3.16.
>>
>> As you suggested I tried to compile my code with Itk 3.16, to see if the
>> "upside down" problem prevailed, but a new bigger problem exists for me with
>> using Itk 3.16.
>>
>> I am perplexed that using Itk 3.16, my code segmenation faults when I
>> invoke reader->Update(),
>> for a dicom series or a dicom volume, whereas previously with itk 3.14 it
>> worked just fine.
>>
>> I am currently trying to figure out how to set the "-g" compiler option for
>> the CMakeLists.txt file so I can run the gdb debugger on it to find out
>> where it segmentation faults.
>>
>> I tried the command:
>> set (CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
>> but so far that has not worked.
>>
>> john
>>
>> On Fri, Nov 27, 2009 at 4:48 PM, Bill Lorensen <bill.lorensen at gmail.com>wrote:
>>
>>> John,
>>>
>>> Actually, Mathieu reported in response that updating to 3.16 may help.
>>> Can you try this first?
>>>
>>> Bill
>>>
>>> On Fri, Nov 27, 2009 at 12:42 PM, John Drozd <john.drozd at gmail.com>
>>> wrote:
>>> > Hi again,
>>> >
>>> > I was at home and I just figured out how to provide you this link to my
>>> data
>>> > remotely,
>>> > so I provide it now instead of on the weekend:
>>> >
>>> > Here is a link to my data (3D dicom volume):
>>> >
>>> > input volume for my ConnectedThresholdFilter code:
>>> > http://www.apmaths.uwo.ca/~jdrozd/correctedsubject5.dcm<http://www.apmaths.uwo.ca/%7Ejdrozd/correctedsubject5.dcm>
>>> >
>>> > output volume from my ConnectedThresholdFilter code:
>>> > http://www.apmaths.uwo.ca/~jdrozd/outsubject5.dcm<http://www.apmaths.uwo.ca/%7Ejdrozd/outsubject5.dcm>
>>> >
>>> > If you need my CMakeLists.txt file, just let me know.
>>> >
>>> > to run the code type:
>>> > ./ConnectedThresholdImageFilter correctedsubject5.dcm outsubject5.dcm
>>> 103
>>> > 142 95 17100 17300
>>> > and here is my code below:
>>> >
>>> >
>>> >
>>> > Below is my uncommented code:
>>> > /*
>>> > to run type:
>>> > ./ConnectedThresholdImageFilter correctedsubject5.dcm outsubject5.dcm
>>> 103
>>> > 142 95 17100 17300
>>> > */
>>> > #if defined(_MSC_VER)
>>> > #pragma warning ( disable : 4786 )
>>> > #endif
>>> > #ifdef __BORLANDC__
>>> > #define ITK_LEAN_AND_MEAN
>>> > #endif
>>> > #include "itkConnectedThresholdImageFilter.h"
>>> > #include "itkImage.h"
>>> > #include "itkCastImageFilter.h"
>>> > #include "itkCurvatureFlowImageFilter.h"
>>> > #include "itkImageFileReader.h"
>>> > #include "itkImageFileWriter.h"
>>> > #include "itkGDCMImageIO.h"
>>> > #include "itkVersion.h"
>>> > #include "itkOrientedImage.h"
>>> > #include "itkMinimumMaximumImageFilter.h"
>>> > #include "itkGDCMImageIO.h"
>>> > #include "itkGDCMSeriesFileNames.h"
>>> > #include "itkNumericSeriesFileNames.h"
>>> > #include "itkImageSeriesReader.h"
>>> > #include "itkImageSeriesWriter.h"
>>> > #include "itkResampleImageFilter.h"
>>> > #include "itkShiftScaleImageFilter.h"
>>> > #include "itkIdentityTransform.h"
>>> > #include "itkLinearInterpolateImageFunction.h"
>>> > #include <itksys/SystemTools.hxx>
>>> > #include "gdcm/src/gdcmFile.h"
>>> > #include "gdcm/src/gdcmUtil.h"
>>> > #include <string>
>>> > int main( int argc, char *argv[])
>>> > {
>>> >   if( argc < 7 )
>>> >     {
>>> >     std::cerr << "Missing Parameters " << std::endl;
>>> >     std::cerr << "Usage: " << argv[0];
>>> >     std::cerr << " inputImage  outputImage seedX seedY seedZ
>>> lowerThreshold
>>> > upperThreshold" << std::endl;
>>> >     return 1;
>>> >     }
>>> >   typedef   float           InternalPixelType;
>>> >
>>> >   const     unsigned int    Dimension = 3;
>>> >   typedef itk::Image< InternalPixelType, Dimension >  InternalImageType;
>>> >   typedef signed short OutputPixelType;
>>> >   typedef itk::Image< OutputPixelType, Dimension > OutputImageType;
>>> >   typedef itk::Image< float, Dimension > OutputImageType2;
>>> >   typedef itk::CastImageFilter< InternalImageType, OutputImageType >
>>> >     CastingFilterType;
>>> >   CastingFilterType::Pointer caster = CastingFilterType::New();
>>> >
>>> >   const    unsigned int    ImageDimension = 3;
>>> >   typedef  signed short    PixelType;
>>> >   typedef itk::Image< PixelType, ImageDimension >  FixedImageType;
>>> >   typedef itk::Image< float, ImageDimension >  FloatImageType;
>>> >   typedef  itk::ImageFileReader< FixedImageType > ReaderType;
>>> >   typedef  itk::ImageFileWriter<  OutputImageType  > WriterType;
>>> >   typedef  itk::ImageFileWriter<  FloatImageType  > WriterType2;
>>> >   ReaderType::Pointer reader = ReaderType::New();
>>> >   WriterType::Pointer writer = WriterType::New();
>>> >   WriterType2::Pointer writer2 = WriterType2::New();
>>> >   typedef itk::GDCMImageIO           ImageIOTypefixed;
>>> >   ImageIOTypefixed::Pointer gdcmImageIOfixed = ImageIOTypefixed::New();
>>> >   reader->SetImageIO( gdcmImageIOfixed );
>>> >   typedef itk::GDCMImageIO           ImageIOTypefixed2;
>>> >   ImageIOTypefixed2::Pointer gdcmImageIOfixed2 =
>>> ImageIOTypefixed2::New();
>>> >   reader->SetFileName( argv[1] );
>>> >   reader->Update();
>>> >   typedef itk::CurvatureFlowImageFilter< InternalImageType,
>>> > InternalImageType >
>>> >     CurvatureFlowImageFilterType;
>>> >
>>> >   CurvatureFlowImageFilterType::Pointer smoothing =
>>> >                          CurvatureFlowImageFilterType::New();
>>> >   typedef itk::ConnectedThresholdImageFilter< InternalImageType,
>>> >                                     InternalImageType >
>>> ConnectedFilterType;
>>> >   ConnectedFilterType::Pointer connectedThreshold =
>>> > ConnectedFilterType::New();
>>> >   typedef signed short InputAPixelType;
>>> >   typedef float OutputBPixelType;
>>> >   typedef itk::Image< InputAPixelType, 3 > InputAImageType;
>>> >   typedef itk::Image< OutputBPixelType, 3 > OutputBImageType;
>>> >   typedef itk::CastImageFilter< InputAImageType, OutputBImageType >
>>> > CastFilterType;
>>> >   CastFilterType::Pointer castFilter = CastFilterType::New();
>>> >   castFilter->SetInput( reader->GetOutput() );
>>> >
>>> >   connectedThreshold->SetInput( castFilter->GetOutput() );
>>> >   caster->SetInput( connectedThreshold->GetOutput() );
>>> >   smoothing->SetNumberOfIterations( 20 ); //was 5
>>> >   smoothing->SetTimeStep( 0.125 );
>>> >
>>> >   const InternalPixelType lowerThreshold = atof( argv[6] );
>>> >   const InternalPixelType upperThreshold = atof( argv[7] );
>>> >
>>> >   connectedThreshold->SetLower(  lowerThreshold  );
>>> >   connectedThreshold->SetUpper(  upperThreshold  );
>>> >
>>> >   connectedThreshold->SetReplaceValue( 255 );
>>> >   InternalImageType::IndexType  index;
>>> >
>>> >   index[0] = atoi( argv[3] );
>>> >   index[1] = atoi( argv[4] );
>>> >
>>> >   //added
>>> >   index[2] = atoi( argv[5] );
>>> >   std::cout << index << std::endl;
>>> >   // Software Guide : BeginCodeSnippet
>>> >   connectedThreshold->SetSeed( index );
>>> >
>>> >   //obtain a 5 x 5 bounding region of seeds
>>> >   int ii, jj, kk;
>>> >   ii = index[0];
>>> >   jj = index[1];
>>> >   kk = index[2];
>>> >   for (int i = ii; i < ii + 5; i++)
>>> >     for (int j = jj; j < jj + 5; j++)
>>> >       for (int k = kk; k < kk + 5; k++)
>>> >     {
>>> >
>>> >       index[0] = i;
>>> >       index[1] = j;
>>> >       index[2] = k;
>>> >       connectedThreshold->AddSeed( index );
>>> >     }
>>> >   for (int i = ii; i > ii - 5; i--)
>>> >     for (int j = jj; j > jj - 5; j--)
>>> >       for (int k = kk; k > kk - 5; k--)
>>> >     {
>>> >
>>> >       index[0] = i;
>>> >       index[1] = j;
>>> >       index[2] = k;
>>> >       connectedThreshold->AddSeed( index );
>>> >     }
>>> >   connectedThreshold->Print(std::cout,17100);
>>> >
>>> >   typedef itk::MetaDataDictionary DictionaryType;
>>> >
>>> >   DictionaryType inputdict = reader->GetMetaDataDictionary();
>>> >
>>> >   writer->SetMetaDataDictionary( inputdict );
>>> >
>>> >   writer->SetFileName( argv[2] );
>>> >
>>> >   writer->SetInput( caster->GetOutput() );
>>> >   try
>>> >     {
>>> >     writer->Update();
>>> >     }
>>> >   catch( itk::ExceptionObject & excep )
>>> >     {
>>> >     std::cerr << "Exception caught !" << std::endl;
>>> >     std::cerr << excep << std::endl;
>>> >     }
>>> >   return 0;
>>> > On Fri, Nov 27, 2009 at 12:31 PM, John Drozd <john.drozd at gmail.com>
>>> wrote:
>>> >>
>>> >> Hi all,
>>> >>
>>> >> I originally have a dicom series of 2d slices which I had converted to
>>> a
>>> >> 3D dicom volume for processing.
>>> >> I'll try processing the dicom series and then write the output to a
>>> dicom
>>> >> series of 2d slices, to see if I can circumvent this problem.
>>> >> I'll let you know if this works?
>>> >>
>>> >> I'll provide a link to my data as well, but it probably won't be until
>>> the
>>> >> weekend.
>>> >>
>>> >> Thanks,
>>> >> john
>>> >>
>>> >> On Fri, Nov 27, 2009 at 12:23 PM, Mathieu Malaterre
>>> >> <mathieu.malaterre at gmail.com> wrote:
>>> >>>
>>> >>> This is a post ITK 3.16 feature I am afraid:
>>> >>>
>>> >>> http://www.cmake.org/Bug/view.php?id=7748
>>> >>>
>>> >>> (0017626)
>>> >>> Mathieu.Malaterre (developer)
>>> >>> 2009-09-19 06:51
>>> >>>
>>> >>>        This will be post ITK 3.16.
>>> >>>
>>> >>> Thanks for the patch ! Sorry for being so long to fix it.
>>> >>>
>>> >>> On Fri, Nov 27, 2009 at 6:11 PM, Bill Lorensen <
>>> bill.lorensen at gmail.com>
>>> >>> wrote:
>>> >>> > John,
>>> >>> >
>>> >>> > 3.16 will not help. This looks like a bug for sure.
>>> >>> >
>>> >>> > Can you provide a link to a dataset that we can use to reproduce the
>>> >>> > problem? We don't have much experience with 3D dicom files I'm
>>> afraid.
>>> >>> >
>>> >>> > Bill
>>> >>> >
>>> >>> > On Fri, Nov 27, 2009 at 11:59 AM, John Drozd <john.drozd at gmail.com>
>>> >>> > wrote:
>>> >>> >> Hi Bill,
>>> >>> >>
>>> >>> >> I am currently using the ITK 3.14 that is in the 3D Slicer 3.4
>>> >>> >> directory Slicer3-lib/Insight
>>> >>> >>
>>> >>> >> If I upgrade to ITK 3.16, will this solve my problem?
>>> >>> >>
>>> >>> >> I downloaded ITK 3.16 and noticed using the diff command that
>>> >>> >> itkGDCMIO.h has been modified from what it was in ITK 3.14.
>>> >>> >>
>>> >>> >> But when I ran diff on gdcmOrientation.cxx in both versions of ITK,
>>> >>> >> diff showed no difference.
>>> >>> >>
>>> >>> >> John
>>> >>> >>
>>> >>> >> On Friday, November 27, 2009, Bill Lorensen <
>>> bill.lorensen at gmail.com>
>>> >>> >> wrote:
>>> >>> >>> John,
>>> >>> >>>
>>> >>> >>> What version of itk are you using? Are you using the gdcm 1.x that
>>> is
>>> >>> >>> in the itk source tree or an external gdcm 2.x version?
>>> >>> >>>
>>> >>> >>> Bill
>>> >>> >>>
>>> >>> >>> On Thu, Nov 26, 2009 at 3:22 PM, John Drozd <john.drozd at gmail.com
>>> >
>>> >>> >>> wrote:
>>> >>> >>>> Hi Luis,
>>> >>> >>>>
>>> >>> >>>> I was getting a segmentation fault because I had forgotten to
>>> change
>>> >>> >>>> the
>>> >>> >>>> Dimension from 2 to 3 in DicomReadPrintTag.cxx.
>>> >>> >>>>
>>> >>> >>>> For the input image, I have:
>>> >>> >>>> (0020|0037) Image Orientation (Patient) =
>>> 0.0\0.0\-1.0\0.0\1.0\0.0
>>> >>> >>>>
>>> >>> >>>> For the output image, I have:
>>> >>> >>>> (0020|0037) Image Orientation (Patient) =
>>> >>> >>>> 0.000000\0.000000\1.000000\0.000000\1.000000\0.000000
>>> >>> >>>>
>>> >>> >>>> There is a difference.  Since the program is changing the
>>> >>> >>>> orientation when
>>> >>> >>>> processed through the pipeline, is the best approach to manually
>>> >>> >>>> change the
>>> >>> >>>> orientation tag of the dictionary and then copy the revised
>>> >>> >>>> dictionary to
>>> >>> >>>> the output file?
>>> >>> >>>>
>>> >>> >>>> john
>>> >>> >>>>
>>> >>> >>>> Below are the full tags:
>>> >>> >>>>
>>> >>> >>>> [jdrozd at trumpet DicomImageReadPrintTags]$
>>> ./DicomImageReadPrintTags
>>> >>> >>>> correctedsubject5.dcm
>>> >>> >>>> (0002|0000) Group Length =
>>> >>> >>>> 214
>>> >>> >>>> (0002|0001) File Meta Information Version =
>>> >>> >>>> AAE=
>>> >>> >>>> (0002|0002) Media Storage SOP Class UID =
>>> >>> >>>> 1.2.840.10008.5.1.4.1.1.2
>>> >>> >>>> (0002|0003) Media Storage SOP Instance UID =
>>> >>> >>>> 1.2.826.0.1.3680043.2.1125.1.10607669833050788267094246636093811
>>> >>> >>>> (0002|0010) Transfer Syntax UID =
>>> >>> >>>> 1.2.840.10008.1.2.1
>>> >>> >>>> (0002|0012) Implementation Class UID =
>>> >>> >>>> 147.144.143.155
>>> >>> >>>> (0002|0013) Implementation Version Name = ITK/GDCM
>>> >>> >>>> 1.2.4
>>> >>> >>>> (0002|0016) Source Application Entity Title =
>>> >>> >>>> NOTSPECIFIED
>>> >>> >>>> (0008|0008) Image Type =
>>> >>> >>>> DERIVED\PRIMARY
>>> >>> >>>> (0008|0012) Instance Creation Date =
>>> >>> >>>> 20091029
>>> >>> >>>> (0008|0013) Instance Creation Time =
>>> >>> >>>> 135224
>>> >>> >>>> (0008|0016) SOP Class UID =
>>> >>> >>>> 1.2.840.10008.5.1.4.1.1.2
>>> >>> >>>> (0008|0018) SOP Instance UID =
>>> >>> >>>> 1.2.826.0.1.3680043.2.1125.1.10607669833050788267094246636093811
>>> >>> >>>> (0008|0020) Study Date =
>>> >>> >>>> 20081030
>>> >>> >>>> (0008|0030) Study Time =
>>> >>> >>>> 164348.940
>>> >>> >>>> (0008|0050) Accession Number
>>> >>> >>>> =
>>> >>> >>>> (0008|0060) Modality =
>>> >>> >>>> CT
>>> >>> >>>> (0008|0064) Conversion Type =
>>> >>> >>>> WSD
>>> >>> >>>> (0008|0070) Manufacturer =
>>> >>> >>>> Manifacturer
>>> >>> >>>> (0008|0080) Institution Name = GDCM
>>> >>> >>>> Hospital
>>> >>> >>>> (0008|0090) Referring Physician's Name = Refering
>>> >>> >>>> Phisician
>>> >>> >>>> (0010|0010) Patient's Name = Patient
>>> >>> >>>> 188858520
>>> >>> >>>> (0010|0020) Patient ID =
>>> >>> >>>> 1747233212
>>> >>> >>>> (0010|0030) Patient's Birth Date =
>>> >>> >>>> 19500101
>>> >>> >>>> (0010|0040) Patient's Sex =
>>> >>> >>>> M
>>> >>> >>>> (0018|0088) Spacing Between Slices =
>>> >>> >>>> 1.207500
>>> >>> >>>> (0018|1164) Imager Pixel Spacing =
>>> >>> >>>> 0.945750\0.945750
>>> >>> >>>> (0020|000d) Study Instance UID =
>>> >>> >>>> 1.2.826.0.1.3680043.2.1125.1.53653479342656887425609263146205769
>>> >>> >>>> (0020|000e) Series Instance UID =
>>> >>> >>>> 1.2.826.0.1.3680043.2.1125.1.47155241092896696198844159625679986
>>> >>> >>>> (0020|0010) Study ID =
>>> >>> >>>> 1533117581
>>> >>> >>>> (0020|0011) Series Number =
>>> >>> >>>> 2135500125
>>> >>> >>>> (0020|0013) Instance Number =
>>> >>> >>>> 165
>>> >>> >>>> (0020|0020) Patient Orientation =
>>> >>> >>>> L\P
>>> >>> >>>> (0020|0032) Image Position (Patient) =
>>> >>> >>>> 199.237496852874\0.0\0.0
>>> >>> >>>> (0020|0037) Image Orientation (Patient) =
>>> >>> >>>> 0.0\0.0\-1.0\0.0\1.0\0.0
>>> >>> >>>> (0020|4000) Image Comments = NOT FOR CLINICAL
>>> >>> >>>> USE
>>> >>> >>>> (0028|0002) Samples per Pixel =
>>> >>> >>>> 1
>>> >>> >>>> (0028|0004) Photometric Interpretation =
>>> >>> >>>> MONOCHROME2
>>> >>> >>>> (0028|0008) Number of Frames =
>>> >>> >>>> 166
>>> >>> >>>> (0028|0010) Rows =
>>> >>> >>>> 256
>>> >>> >>>> (0028|0011) Columns =
>>> >>> >>>> 256
>>> >>> >>>> (0028|0030) Pixel Spacing =
>>> >>> >>>> 0.945750\0.945750
>>> >>> >>>> (0028|0034) Pixel Aspect Ratio =
>>> >>> >>>> 1\1
>>> >>> >>>> (0028|0100) Bits Allocated =
>>> >>> >>>> 16
>>> >>> >>>> (0028|0101) Bits Stored =
>>> >>> >>>> 16
>>> >>> >>>> (0028|0102) High Bit =
>>> >>> >>>> 15
>>> >>> >>>> (0028|0103) Pixel Representation =
>>> >>> >>>> 0
>>> >>> >>>> (0028|1052) Rescale Intercept =
>>> >>> >>>> 0.0
>>> >>> >>>> (0028|1053) Rescale Slope =
>>> >>> >>>> 1.0
>>> >>> >>>> (0028|1054) Rescale Type =
>>> >>> >>>> US
>>> >>> >>>> (7fe0|0000) Group Length =
>>> >>> >>>> 21757964
>>> >>> >>>> Patient's Name (0010|0010)  is: Patient
>>> >>> >>>> 188858520
>>> >>> >>>> Performing Physician's Name (0008|1050): (No Value Found in
>>> >>> >>>> File)
>>> >>> >>>> PixelType:
>>> >>> >>>> scalar
>>> >>> >>>> Component Type: unsigned_short
>>> >>> >>>>
>>> >>> >>>> [jdrozd at trumpet DicomImageReadPrintTags]$
>>> ./DicomImageReadPrintTags
>>> >>> >>>> outsubject5.dcm
>>> >>> >>>> (0002|0000) Group Length =
>>> >>> >>>> 194
>>> >>> >>>> (0002|00
>>> >>> >>
>>> >>> > _____________________________________
>>> >>> > Powered by www.kitware.com
>>> >>> >
>>> >>> > Visit other Kitware open-source projects at
>>> >>> > http://www.kitware.com/opensource/opensource.html
>>> >>> >
>>> >>> > Kitware offers ITK Training Courses, for more information visit:
>>> >>> > http://www.kitware.com/products/protraining.html
>>> >>> >
>>> >>> > Please keep messages on-topic and check the ITK FAQ at:
>>> >>> > http://www.itk.org/Wiki/ITK_FAQ
>>> >>> >
>>> >>> > Follow this link to subscribe/unsubscribe:
>>> >>> > http://www.itk.org/mailman/listinfo/insight-users
>>> >>> >
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> Mathieu
>>> >>
>>> >
>>> >
>>>
>>
>>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://www.itk.org/pipermail/insight-users/attachments/20091130/706fed79/attachment.htm>
>
> ------------------------------
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
>
> End of Insight-users Digest, Vol 67, Issue 178
> **********************************************
>


More information about the Insight-users mailing list