[vtkusers] Combining multiple ImageData objects into a single ImageData object

Matthew Betney mrbetney at gmail.com
Fri Feb 22 13:04:11 EST 2013


Hi,

I've got a set of vtkImageData objects that come from different processors
of a parallel simulation, where each object corresponds to a different
spatial section of the total dataset. I'm not able to change how the files
are generated, and thus don't think I can use a pvti file. I need to
combine these into one imagedata object, but I'm running into problems. The
data in the ImageData objects is cell wise constant

I've tried using vtkImageAppend, but I keep running into memory errors:
imgs = {}
for i in range(0, self._nprocs):
       img = read_vti_file(vti_files[i])
       origin = img.GetOrigin()
       imgs[origin] = img
keys = imgs.keys()
keys.sort(key=itemgetter(1, 0))  # sort by y first, then x

img_append = vtk.vtkImageAppend()
img_append.SetAppendAxis(1)
for k, g in groupby(keys, lambda x: x[1]):
    row_img = vtk.vtkImageAppend()
    row_img.SetAppendAxis(0)
    for origin in g:
        row_img.AddInput(imgs[origin])
    row_img.Update()
    img_append.AddInput(row_img.GetOutput())
img_append.Update()
img_append.GetOutput()

As an alternative method, I've tried using vtk.vtkAppendFilter() to join
the imagedata objects. This works, but the output is an UnstructuredGrid,
which I haven't been able to convert to an ImageData object. I've tried
using vtkProbeFilter to do this, but the vtkImageData object returned is
interpolated from the UnstructuredGrid, whereas I need the data to be cell
wise constant.

Any help combining the imagedata objects, or converting an UnstructuredGrid
to an ImageData object would be greatly appreciated.

Many thanks,
Matthew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130222/f13c49ad/attachment.htm>


More information about the vtkusers mailing list