[ITK] [ITK-users] In-place extraction of N-1 dimensional images from N dimensional images
Wood, Tobias
tobias.wood at kcl.ac.uk
Fri Jul 29 12:28:52 EDT 2016
Thanks for the technical details Brad.
I am going to plead lack of time (and understanding of ITK internals) here, and keep my code as-is. Maybe for the future some time.
Best wishes,
Toby
On 28/07/2016, 18:24, "Lowekamp, Bradley (NIH/NLM/LHC) [C]" <blowekamp at mail.nih.gov> wrote:
Hello,
I think the missing features to implement this proper is one step lower that the ExtractImageFilter, rather in the ImportImageContainer. The container would need to support presenting one buffer, but holding the whole buffer someplace. Also the
ability to share buffers between images is not supported either. When filters are run “InPlace” the output steals the buffer from the input, so there is no buffer sharing. This is essentially adding different “view” to a buffer.
I had been concerned about the performance of the ExtractImageFilter filter previously. If I recall correctly I update the filter to use the ImageAlgorithm::Copy method and improved the performance by something like 100x for some test cases. You
could profile the filter run with the default number of thread and with just 1 thread to determine how best to run it. Also you would need to veriify that the pipeline is executing as expected and efficiently. If this still does not meet your timing requirements
you’d likely be better off just writing a function to create a ImportImageContainer with your “view”, and manage the memory yourself. This would bypass the pipeline.
HTH,
Brad
On Jul 28, 2016, at 1:06 PM, Dženan Zukić <dzenanz at gmail.com> wrote:
Hi Toby,
Extract filter could theoretically run in place only when the extraction region differs from largest possible region only along the slowest changing index. To make this possible, ExtractImageFilter should override CanRunInPlace() which it inherits from InPlaceImageFilter
and implement this theoretical check. Of course, other changes will be required to make it function properly.
Regards,
Dženan
On Thu, Jul 28, 2016 at 9:23 AM, Wood, Tobias
<tobias.wood at kcl.ac.uk> wrote:
Hello Dženan,
I have had the same problem as Edwin with ExtractImageFilter, but in a different context. Eventually I gave up and accepted the speed/memory penalty of copying the 3D volumes out of the 4D series. Is there really no way in ITK to get a temporary “view” of a
subregion for processing, without resorting to referencing the raw arrays?
Thanks,
Toby
On 28/07/2016, 13:40, "Insight-users on behalf of Dženan Zukić" <insight-users-bounces at itk.org on behalf of
dzenanz at gmail.com> wrote:
Hi Edwin,
you should be able to achieve your goal using
import image filter <http://www.vtk.org/doc/nightly/html/classvtkImageImport.html#details>. ITK has import image filter
too <https://itk.org/Doxygen/html/classitk_1_1ImportImageFilter.html>, so you can decide in which library to do dimensional reduction.
Regards,
Dženan
On Thu, Jul 28, 2016 at 4:37 AM, Edwin Bennink
<hebennink at gmail.com> wrote:
Hello,
I am working on an ITK/VTK viewer for visualizing 3D+time image data. The data is represented by 4D images in ITK (x,y,z,t). I would like to be able to access the 3D data in VTK without copying it, since that would slow down scrolling through time in large
datasets. I noticed that, although in-place extraction should be possible, the ExtractImageFilter 'says no' to in-place extraction when the input and output dimensions differ. Does anyone know a way to achieve my goal using existing ITK functions? For
example,
if there would be some way of reducing the dimension of 'flat' images, i.e. 3D (Nx,Ny,1) to 2D (Nx, Ny), then I could still use the ExtractImageFilter.
Best,
Edwin
_____________________________________
Powered by
www.kitware.com <http://www.kitware.com/> <http://www.kitware.com <http://www.kitware.com/>>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html <http://www.kitware.com/opensource/opensource.html>
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php <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 <http://www.itk.org/Wiki/ITK_FAQ>
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users <http://public.kitware.com/mailman/listinfo/insight-users>
_____________________________________
Powered by www.kitware.com <http://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://public.kitware.com/mailman/listinfo/insight-users
_____________________________________
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://public.kitware.com/mailman/listinfo/insight-users
More information about the Community
mailing list