# How to use Image Iterators in right way

**URL:** https://discourse.itk.org/t/how-to-use-image-iterators-in-right-way/3171
**Category:** Beginner Questions
**Created:** [June 12, 2020, 12:41am UTC](https://discourse.itk.org/t/how-to-use-image-iterators-in-right-way/3171 "2020-06-12T00:41:08Z")
**Posts on this page:** 1
**Showing post:** 4

<div class="post-metadata">

### Author: ![Amnesie](https://discourse.itk.org/user_avatar/discourse.itk.org/amnesie/32/1341_2.png) [@Amnesie](https://discourse.itk.org/u/Amnesie)
#### Post date: [June 12, 2020, 4:54pm UTC](https://discourse.itk.org/t/how-to-use-image-iterators-in-right-way/3171/4 "2020-06-12T16:54:37Z")

</div>

Here is my rewrite code ,now program is faster than before .

```
using IteratorType = itk::ImageRegionIteratorWithIndex<ImageType>;

IteratorType outputIt(image, image->GetLargestPossibleRegion());

for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
{
	ImageType::IndexType idx = outputIt.GetIndex();
	//idx[0] = requestedIndex[0] + requestedSize[0] - 1 - idx[0];
	if (outputIt.Get() != 0) {
	
		slicecoordinates.push_back(idx[2]);//
		Ycoordinates .push_back(idx[1]);//
		Xcoordinates .push_back(idx[0]);//
	
}

```

I love Iterator

---

_[View the full topic](https://discourse.itk.org/t/how-to-use-image-iterators-in-right-way/3171)._
