[Insight-users] container for iterators of images

Cagatay Bilgin bilgincc at gmail.com
Mon Apr 23 12:31:42 EDT 2012


Hi Hiler,

see my comments below.


> So, back to my code:
>
> vector of iterators:
> | it_1 | it_2 | ... | it_n |
>
> // iterators for the n input images
> constIteratorType  it_1 (img_1, img_1->GetRequestedRegion());
> constIteratorType  it_2 (img_2, img_2->GetRequestedRegion());
> ...
> constIteratorType  it_n (img_n, img_n->GetRequestedRegion());
>
> //iterator of the output image
>
> iteratorType          output_it (output_img, output_img->
> GetRequestedRegion());
>
> //container to store the iterators
>
> std::list<constIteratorType> list;
> std::list<constIteratorType>::iterator it;
>

I think it is a good idea to name your list iterator and image
iterators in a better way to avoid confusion. This 'it' variable
is your list iterator from what I understand. When you
deference this iterator, (like this *it), you will have the image iterator
you are looking for.


> // iterator of the list that suppose to initialize all of the iterators
> (it_1, it_2, etc)
>     for(it = list.begin(); it < list.end(); it++)
>     {
>         it->GoToBegin();
>     }
>

> //move in parallel with all of the input images and set in the output
> image the sum of the corresponding images pixel
>     for(output_it.GoToBegin(); !output_it.IsAtEnd(); ++output_it)
>     {
>             output_val = 0;
>         for (it = list.begin(); it < list.end(); it++) //move on each
> image in the list and get it's pixel value
>         {
>             output_val = it->Get() + output_val;  //get values from each
> image and insert in the output image
>             // How do I forward the image's iterator from here ?????
>

 All you need is ++(*it). Note that (*it) will give you your image iterator
and ++ will forward that corresponding image iterator.

Cheers,
Cagatay



>    }
>         output_it.Set(output_val);
>     }
>
> Hope that now it's clearer ...
>
> Hila
>
>
>
>
> On Mon, Apr 23, 2012 at 4:51 PM, alex Dowson <alexdowson at hotmail.com>wrote:
>
>>   Hi
>>
>> I think I still did not understand your problem completely .  Why you
>> want to store image in container ?  Can you describe what exactly you
>> trying to do ?
>>
>>
>> Alex
>>
>>
>>  *From:* Hila Hiler <hilahiler at gmail.com>
>> *Sent:* Monday, April 23, 2012 7:15 PM
>> *To:* alex Dowson <alexdowson at hotmail.com>
>> *Cc:* insight-users at itk.org
>> *Subject:* Re: [Insight-users] container for iterators of images
>>
>>  Hi Alex,
>> first of all, many thanks for the response.
>>
>> I'm afraid that you haven't noticed that I did the same as described in
>> your link (it was the easy part) ...
>> Actually my question was about a vector of iterators to itk images.
>> Please, read my attached code. I'll be pleased to understand what have I
>> missed.
>>
>> Regards,
>> Hila
>>
>>
>> On Mon, Apr 23, 2012 at 4:08 PM, alex Dowson <alexdowson at hotmail.com>wrote:
>>
>>>   Hi
>>>
>>> Look at this examples
>>>
>>>
>>> http://www.itk.org/Wiki/ITK/Examples/Iterators/ImageRegionConstIterator
>>> http://www.itk.org/Wiki/ITK/Examples/Iterators/ImageRegionIterator
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>  *From:* Hila Hiler <hilahiler at gmail.com>
>>> *Sent:* Monday, April 23, 2012 5:57 PM
>>> *To:* insight-users at itk.org
>>> *Subject:* [Insight-users] container for iterators of images
>>>
>>>   Hi All,
>>>
>>> I'd like to generate a new image by summarizing some other images in the
>>> same dimensions.
>>> So I generated a new image and a std::list for the images iterators.
>>> (actually, I thought that this dynamic container is the best way to mange
>>> an unknown number of images)
>>>
>>> For now, it isn't working because I don't know how to forward the
>>> image's iterator from that vector. in other words, how do I do the same as:
>>> output_it++ from a vector?
>>>
>>> Here is my code:
>>>
>>>     typedef itk::ImageRegionIterator            <ImageType>
>>> iteratorType;
>>>     typedef itk::ImageRegionConstIterator    <ImageType>
>>> constIteratorType;
>>>
>>>     constIteratorType    first_it    (first_img,
>>> first_img->GetRequestedRegion());
>>>     iteratorType            output_it (output_img, output_img->
>>> GetRequestedRegion());
>>>
>>>     std::list<constIteratorType> list;
>>>     std::list<constIteratorType>::iterator it;
>>>
>>>     list.push_back(first_it);
>>>
>>>     if (second_img.IsNotNull())
>>>     {
>>>         constIteratorType second_it (second_img,
>>> second_img->GetRequestedRegion());
>>>         list.push_back (second_it);
>>>     }
>>>
>>>     //initialize all the iterators at the begin of input images
>>>     for(it = list.begin(); it < list.end(); it++)
>>>     {
>>>         it->GoToBegin();
>>>     }
>>>
>>>     for(output_it.GoToBegin(); !output_it.IsAtEnd(); ++output_it)
>>>     {
>>>         for(it = list.begin(); it < list.end(); it++)//move on the
>>> images and get at each iteration the pixel value and insert to the new image
>>>         {
>>>             output_val = it->Get() + output_val;  //get values from each
>>> image and insert in the output image
>>>             // How do I forward the image's iterator from here ?????
>>>         }
>>>
>>>         output_it.Set(output_val);
>>>
>>>     }
>>>
>>>
>>>
>>> Any thoughts would be very welcome ...
>>> Hila
>>> ------------------------------
>>> _____________________________________
>>> 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://www.itk.org/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://www.itk.org/mailman/listinfo/insight-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120423/ce09ef27/attachment.htm>


More information about the Insight-users mailing list