[Insight-users] Problems to read a vtk file using SimpleITK+Python

Matt McCormick matt.mccormick at kitware.com
Tue Aug 6 17:14:29 EDT 2013


Hi Ariel,

Your code works when I run it  with SimpleITK 0.6.1:

In [4]: im2
Out[4]: <SimpleITK.Image; proxy of <Swig Object of type 'std::vector<
itk::simple::Image >::value_type *' at 0x4fdf300> >

In [5]: print(im2)
Image (0x44ea740)
  RTTI typeinfo:   itk::Image<double, 2u>
  Reference Count: 1
  Modified Time: 1413
  Debug: Off
  Observers:
    none
  Source: (none)
  Source output name: (none)
  Release Data: Off
  Data Released: False
  Global Release Data: Off
  PipelineMTime: 1250
  UpdateMTime: 1412
  RealTimeStamp: 0 seconds
  LargestPossibleRegion:
    Dimension: 2
    Index: [0, 0]
    Size: [100, 100]
  BufferedRegion:
    Dimension: 2
    Index: [0, 0]
    Size: [100, 100]
  RequestedRegion:
    Dimension: 2
    Index: [0, 0]
    Size: [100, 100]
  Spacing: [0.834496, 0.822352]
  Origin: [0, 0]
  Direction:
1 0
0 1

  IndexToPointMatrix:
  0.834496 0
0 0.822352

  PointToIndexMatrix:
  1.19833 0
0 1.21602

  Inverse Direction:
  1 0
0 1

  PixelContainer:
    ImportImageContainer (0x44ea910)
      RTTI typeinfo:   itk::ImportImageContainer<unsigned long, double>
      Reference Count: 1
      Modified Time: 1409
      Debug: Off
      Observers:
        none
      Pointer: 0x506a530
      Container manages memory: true
      Size: 10000
      Capacity: 10000

HTH,
Matt

On Tue, Aug 6, 2013 at 8:26 PM, Ariel Hernán Curiale <curiale at gmail.com> wrote:
> Hi Matt,
>
> You are right, the vtk format is always 3D. If you have a 2D image  and save
> it as vtk, then the writer automatically add the last dimension with a
> spacing 1.
> For example, this is the 2D image create with the python code:
>
> ariel at Gohan:~/Uva/LPI/Proyectos/Python-ITK-VTK-QT/Ultrasonido/SpeckleTracking$
> head -10 img.vtk
> # vtk DataFile Version 3.0
> VTK File Generated by Insight Segmentation and Registration Toolkit (ITK)
> BINARY
> DATASET STRUCTURED_POINTS
> DIMENSIONS 100 100 1
> SPACING 1.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00
> ORIGIN 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
> POINT_DATA 10000
> SCALARS scalars double 1
> LOOKUP_TABLE default
> .....
>
> I don't know why the warning say that the spacing must be grater than 0
>
> Ps: I can read this image using vtk.
>
> Thanks for your quickly response.
>
> Cheers,
> __________________________________
> | Ariel Hernán Curiale Ph.D Student
> | ETSI Telecomunicación
> | Universidad de Valladolid
> | Campus Miguel Delibes
> | 47011 Valladolid, Spain
> | Phone: 983-423000 ext. 5590
> | Web: www.curiale.com.ar
> |_________________________________
>
> El 06/08/2013, a las 17:52, Matt McCormick escribió:
>
> Hi Ariel,
>
> The VTK file format [1] is always 3D, so a non-zero spacing will need
> to be specified if using this format.
>
> HTH,
> Matt
>
> [1] www.vtk.org/VTK/img/file-formats.pdf
>
>
> On Tue, Aug 6, 2013 at 3:00 PM, Ariel Hernán Curiale <curiale at gmail.com>
> wrote:
>
> Hi,
>
> I create a simple example to show you the problem that I'm getting when I'm
>
> trying to read a vtk file. I'm using the last release of SimpleITK
>
> (SimpleITK-0.6.1) and python.
>
> In this example, I create, write and read a simple image.
>
>
> Here is the code:
>
> -------------------------
>
> import SimpleITK as sitk
>
> import scipy as sc
>
>
> dim = (100, 100)
>
> origin = (0, 0)
>
> spacing = (0.834496, 0.8223519)
>
> img = sc.zeros(dim)
>
>
> img[20:40, 20:40] = 1
>
>
> img_sitk = sitk.GetImageFromArray(img)
>
> img_sitk.SetOrigin(origin)
>
> img_sitk.SetSpacing(spacing)
>
>
> print img_sitk
>
> sitk.Show(img_sitk)
>
> sitk.WriteImage(img_sitk,"img.vtk")
>
>
> im = sitk.ReadImage("img.vtk")
>
>
> reader = sitk.ImageFileReader()
>
> reader.SetFileName("img.vtk")
>
> im2 = reader.Execute()
>
> --------
>
>
>
> The img_sitk seems to be created properly:
>
> ----
>
> Image (0x7f9a95ff8550)
>
>  RTTI typeinfo:   itk::Image<double, 2u>
>
>  Reference Count: 1
>
>  Modified Time: 3295
>
>  Debug: Off
>
>  Observers:
>
>    none
>
>  Source: (none)
>
>  Source output name: (none)
>
>  Release Data: Off
>
>  Data Released: False
>
>  Global Release Data: Off
>
>  PipelineMTime: 0
>
>  UpdateMTime: 0
>
>  RealTimeStamp: 0 seconds
>
>  LargestPossibleRegion:
>
>    Dimension: 2
>
>    Index: [0, 0]
>
>    Size: [100, 100]
>
>  BufferedRegion:
>
>    Dimension: 2
>
>    Index: [0, 0]
>
>    Size: [100, 100]
>
>  RequestedRegion:
>
>    Dimension: 2
>
>    Index: [0, 0]
>
>    Size: [100, 100]
>
>  Spacing: [0.834496, 0.822352]
>
>  Origin: [0, 0]
>
>  Direction:
>
> 1 0
>
> 0 1
>
>
>  IndexToPointMatrix:
>
> 0.834496 0
>
> 0 0.822352
>
>
>  PointToIndexMatrix:
>
> 1.19833 0
>
> 0 1.21602
>
>
>  Inverse Direction:
>
> 1 0
>
> 0 1
>
>
>  PixelContainer:
>
>    ImportImageContainer (0x7f9a960309b0)
>
>      RTTI typeinfo:   itk::ImportImageContainer<unsigned long, double>
>
>      Reference Count: 1
>
>      Modified Time: 2866
>
>      Debug: Off
>
>      Observers:
>
>        none
>
>      Pointer: 0x7f9a95352200
>
>      Container manages memory: true
>
>      Size: 10000
>
>      Capacity: 10000
>
>
>
>
> But when I try to read the image using sitk.ReadImage or
>
> sitk.ImageFileReader I'm getting this error:
>
> ----
>
> Traceback (most recent call last):
>
>  File "<stdin>", line 1, in <module>
>
>  File
>
> "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SimpleITK-0.6.1_g1387a-py2.7-macosx-10.7-x86_64.egg/SimpleITK.py",
>
> line 4371, in Execute
>
>    return _SimpleITK.ImageFileReader_Execute(self)
>
> RuntimeError: Exception thrown in SimpleITK ImageFileReader_Execute:
>
> /Users/ariel/Applications/InsightToolkit-4.4.0/Modules/Core/Common/include/itkImageBase.hxx:189:
>
> itk::ERROR: Image(0x7f9a95d9d640): A spacing of 0 is not allowed: Spacing is
>
> [1, 0]
>
> ----
>
>
>
>
> It seems to be a bug but, I don't know if I'm doing something wrong.
>
>
>
> Cheers,
>
> __________________________________
>
> | Ariel Hernán Curiale Ph.D Student
>
> | ETSI Telecomunicación
>
> | Universidad de Valladolid
>
> | Campus Miguel Delibes
>
> | 47011 Valladolid, Spain
>
> | Phone: 983-423000 ext. 5590
>
> | Web: www.curiale.com.ar
>
> |_________________________________
>
>
>
> _____________________________________
>
> 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.php
>
>
> 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
>
>
>


More information about the Insight-users mailing list