[ITK-users] Splitting and repasting a volume with overlap

Pol Monsó Purtí lluna.nova at gmail.com
Tue Mar 17 12:33:29 EDT 2015


Indeed, that simplifies the pasting. Good suggestion!

2015-03-16 15:20 GMT+01:00 Bradley Lowekamp <blowekamp at mail.nih.gov>:

> You may find this method useful:
>
>
> http://www.itk.org/Doxygen/html/structitk_1_1ImageAlgorithm.html#a5ec5bcac992cb3b1302840636530ba20
>
> Brad
>
> On Mar 16, 2015, at 10:16 AM, Pol Monsó Purtí <lluna.nova at gmail.com>
> wrote:
>
> Mmh, I believe I misread the RegionOfInterestImageFilter documentation,
> confusing dimension with size. That should work.
>
> I still have the computation of the splitting regions problem to handle,
> but maybe with this filter is easier than with the ExtractImageFilter. Or
> maybe it just removes step 7?
>
> Is there a way to ease the repasting back to the original region with it?
> How should I use the physical space index?
>
> 2015-03-16 14:25 GMT+01:00 Pol Monsó Purtí <lluna.nova at gmail.com>:
>
>> Hello Bradley,
>>
>> Thank you for your answer and suggestion.
>>
>> Answering your question: It's not for multi-threading purposes, I have to
>> split the image due to memory limitations.
>>
>> I would use extractImage directly and do streaming, but the client and
>> the low-level libraries might not work correctly if I do that. I have to
>> provide itk images disconnected from the pipeline and with proper indexes
>> and sizes.
>>
>> The RegionOfInterestImageFilter would have the same memory footprint, and
>> it would still be tricky to compute the regions of interest, due to the
>> overlapping.
>>
>>
>>
>> 2015-03-16 14:00 GMT+01:00 Bradley Lowekamp <blowekamp at mail.nih.gov>:
>>
>>> Hello,
>>>
>>> The RegionOfInterestImageFilter[1] is very similar to the
>>> ExtractImageFilter, but returns an image whose starting index is always
>>> zeros.
>>>
>>> The process you described is remarkable close to what occur in each
>>> filter for the multi-threading process.  Also what occurs in the
>>> StreamingImageFilter is very similar, but just copies the region.
>>>
>>> As you didn't mention you motivation for chunking the data this way be
>>> it for threading or memory requirements, I can't fully advise.
>>>
>>> Brad
>>>
>>>
>>> [1 ]
>>> http://www.itk.org/Doxygen/html/classitk_1_1RegionOfInterestImageFilter.html
>>> [2]
>>> https://github.com/InsightSoftwareConsortium/ITK/blob/b184194869ac6407fcbb4e309710894cfc84466f/Modules/Core/Common/include/itkStreamingImageFilter.hxx#L194-L213
>>>
>>>
>>> On Mar 16, 2015, at 7:37 AM, Pol Monsó Purtí <lluna.nova at gmail.com>
>>> wrote:
>>>
>>> > Hello everyone,
>>> >
>>> > We need to split a volume into pieces, overlaped by a certain amount,
>>> do some computation and then repaste them.
>>> >
>>> > The computation requires the pieces' region indexes to be set to zero.
>>> The original volume might not have index at zero, but be a subregion itself.
>>> >
>>> > What is the best way to achieve this?
>>> >
>>> > I've thought of the following pipeline:
>>> >
>>> > 1. imageRegionSplitterSlowDimension
>>> > 2. Store the index and size of each region
>>> > 3. manually increase the size of each region (and modify index)
>>> > 4. crop with the largestPossibleRegion of the original volume (to
>>> prevent requesting more than available)
>>> > iterate over regions:
>>> >       5. extractImageFilter
>>> >       6. disconnect pipeline for each region
>>> >       7. reset indexes
>>> >       8. perform computation
>>> >       9. crop with the regions in step 1 to remove the added overlap
>>> >       10. restore indexes
>>> > 11. pasteImageFilter
>>> >
>>> > I'll have to think of a smart way to deal with the index
>>> restore/cropping of steps 9 and 10.
>>> >
>>> > I somehow feel somebody will have already dealt with this... And
>>> there's certainly a better way to do it.
>>> > _____________________________________
>>> > 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
>>>
>>>
>>
>> 2015-03-16 14:00 GMT+01:00 Bradley Lowekamp <blowekamp at mail.nih.gov>:
>>
>>> Hello,
>>>
>>> The RegionOfInterestImageFilter[1] is very similar to the
>>> ExtractImageFilter, but returns an image whose starting index is always
>>> zeros.
>>>
>>> The process you described is remarkable close to what occur in each
>>> filter for the multi-threading process.  Also what occurs in the
>>> StreamingImageFilter is very similar, but just copies the region.
>>>
>>> As you didn't mention you motivation for chunking the data this way be
>>> it for threading or memory requirements, I can't fully advise.
>>>
>>> Brad
>>>
>>>
>>> [1 ]
>>> http://www.itk.org/Doxygen/html/classitk_1_1RegionOfInterestImageFilter.html
>>> [2]
>>> https://github.com/InsightSoftwareConsortium/ITK/blob/b184194869ac6407fcbb4e309710894cfc84466f/Modules/Core/Common/include/itkStreamingImageFilter.hxx#L194-L213
>>>
>>>
>>> On Mar 16, 2015, at 7:37 AM, Pol Monsó Purtí <lluna.nova at gmail.com>
>>> wrote:
>>>
>>> > Hello everyone,
>>> >
>>> > We need to split a volume into pieces, overlaped by a certain amount,
>>> do some computation and then repaste them.
>>> >
>>> > The computation requires the pieces' region indexes to be set to zero.
>>> The original volume might not have index at zero, but be a subregion itself.
>>> >
>>> > What is the best way to achieve this?
>>> >
>>> > I've thought of the following pipeline:
>>> >
>>> > 1. imageRegionSplitterSlowDimension
>>> > 2. Store the index and size of each region
>>> > 3. manually increase the size of each region (and modify index)
>>> > 4. crop with the largestPossibleRegion of the original volume (to
>>> prevent requesting more than available)
>>> > iterate over regions:
>>> >       5. extractImageFilter
>>> >       6. disconnect pipeline for each region
>>> >       7. reset indexes
>>> >       8. perform computation
>>> >       9. crop with the regions in step 1 to remove the added overlap
>>> >       10. restore indexes
>>> > 11. pasteImageFilter
>>> >
>>> > I'll have to think of a smart way to deal with the index
>>> restore/cropping of steps 9 and 10.
>>> >
>>> > I somehow feel somebody will have already dealt with this... And
>>> there's certainly a better way to do it.
>>> > _____________________________________
>>> > 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
>>>
>>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20150317/c5367ab1/attachment.html>


More information about the Insight-users mailing list