About introducing ImageLists


(Pablo Hernandez-Cerdan) #1

After dealing with image pyramids which generate a list of images, and the inverse filters which get a list of inputs and generate an output. I was wondering if we could introduce a base class similar to how ImageToImageFilter works, but in this case ImageToImageListFilter, or ImageListToImage.
OrfeoToolBox has the ObjectList module doing exactly this, and seems like a good idea.

I wonder what is your opinion of introducing it into ITK. In my use case, it would be nice to have a Pyramid base class, where all the metadata, and output information of the list of images is abstracted away. What do you think?


(Matt McCormick) #2

@phcerdan awesome idea :bulb: !

In my experience, image pyramids commonly need support, and explicit support for their characteristics could help us perform multi-resolution processing and processing of very large images.

Ideally, we would have a new data structure, itk::ImagePyramid. And corresponding to this data structure would be filters, itk::ImageToImagePyramid, itk::ImagePyramidToImagePyramid, and itk::ImagePyramidToImage that would generate the desired outputs by default and facilitate streaming over the pyramid.


(Bradley Lowekamp) #3

I would think that an ImageList class may be parent of a more specific ImagePyramid class. I see use in representing a large number of channels as an ImageList instead of a VectorImage. Then having a meta-filter which execute another filter or mini-pipeline on each image in the list ( or image in the pyramid ).

This sounds like a great effort to start in a remote module!


(Jon Haitz Legarreta Gorroño) #4

Looks a great idea.

As for the naming, I’d say that Pyramid conveys the idea of multi-resolution whereas ImageList does not, so as Brad says, may be the latter can be the parent of the former.