<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hello,
<div class=""><br class="">
</div>
<div class="">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.</div>
<div class=""><br class="">
</div>
<div class="">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. </div>
<div class=""><br class="">
</div>
<div class="">HTH,</div>
<div class="">Brad</div>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Jul 28, 2016, at 1:06 PM, Dženan Zukić <<a href="mailto:dzenanz@gmail.com" class="">dzenanz@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Hi Toby,</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br class="">
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
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.</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br class="">
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Regards,</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Dženan</div>
</div>
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Thu, Jul 28, 2016 at 9:23 AM, Wood, Tobias <span dir="ltr" class="">
<<a href="mailto:tobias.wood@kcl.ac.uk" target="_blank" class="">tobias.wood@kcl.ac.uk</a>></span> wrote:<br class="">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello Dženan,<br class="">
<br class="">
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?<br class="">
<br class="">
Thanks,<br class="">
Toby<br class="">
<span class=""><br class="">
On 28/07/2016, 13:40, "Insight-users on behalf of Dženan Zukić" <<a href="mailto:insight-users-bounces@itk.org" class="">insight-users-bounces@itk.org</a> on behalf of
<a href="mailto:dzenanz@gmail.com" class="">dzenanz@gmail.com</a>> wrote:<br class="">
<br class="">
<br class="">
    Hi Edwin,<br class="">
<br class="">
<br class="">
    you should be able to achieve your goal using<br class="">
</span>    import image filter <<a href="http://www.vtk.org/doc/nightly/html/classvtkImageImport.html#details" rel="noreferrer" target="_blank" class="">http://www.vtk.org/doc/nightly/html/classvtkImageImport.html#details</a>>. ITK has import image filter<br class="">
    too <<a href="https://itk.org/Doxygen/html/classitk_1_1ImportImageFilter.html" rel="noreferrer" target="_blank" class="">https://itk.org/Doxygen/html/classitk_1_1ImportImageFilter.html</a>>, so you can decide in which library to do dimensional reduction.<br class="">
<span class=""><br class="">
<br class="">
    Regards,<br class="">
    Dženan<br class="">
<br class="">
<br class="">
    On Thu, Jul 28, 2016 at 4:37 AM, Edwin Bennink<br class="">
    <<a href="mailto:hebennink@gmail.com" class="">hebennink@gmail.com</a>> wrote:<br class="">
<br class="">
    Hello,<br class="">
<br class="">
<br class="">
    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<br class="">
     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,<br class="">
     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.<br class="">
<br class="">
<br class="">
    Best,<br class="">
    Edwin<br class="">
<br class="">
<br class="">
    _____________________________________<br class="">
</span>    Powered by <a href="http://www.kitware.com/" rel="noreferrer" target="_blank" class="">
www.kitware.com</a> <<a href="http://www.kitware.com/" rel="noreferrer" target="_blank" class="">http://www.kitware.com</a>><br class="">
<div class="HOEnZb">
<div class="h5"><br class="">
    Visit other Kitware open-source projects at<br class="">
    <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank" class="">
http://www.kitware.com/opensource/opensource.html</a><br class="">
<br class="">
    Kitware offers ITK Training Courses, for more information visit:<br class="">
    <a href="http://www.kitware.com/products/protraining.php" rel="noreferrer" target="_blank" class="">
http://www.kitware.com/products/protraining.php</a><br class="">
<br class="">
    Please keep messages on-topic and check the ITK FAQ at:<br class="">
    <a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank" class="">
http://www.itk.org/Wiki/ITK_FAQ</a><br class="">
<br class="">
    Follow this link to subscribe/unsubscribe:<br class="">
    <a href="http://public.kitware.com/mailman/listinfo/insight-users" rel="noreferrer" target="_blank" class="">
http://public.kitware.com/mailman/listinfo/insight-users</a><br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
_____________________________________<br class="">
Powered by <a href="http://www.kitware.com" class="">www.kitware.com</a><br class="">
<br class="">
Visit other Kitware open-source projects at<br class="">
<a href="http://www.kitware.com/opensource/opensource.html" class="">http://www.kitware.com/opensource/opensource.html</a><br class="">
<br class="">
Kitware offers ITK Training Courses, for more information visit:<br class="">
http://www.kitware.com/products/protraining.php<br class="">
<br class="">
Please keep messages on-topic and check the ITK FAQ at:<br class="">
http://www.itk.org/Wiki/ITK_FAQ<br class="">
<br class="">
Follow this link to subscribe/unsubscribe:<br class="">
http://public.kitware.com/mailman/listinfo/insight-users<br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>