# Groupwise registration in SimpleITK or ITKElastix flipping images?

**URL:** https://discourse.itk.org/t/groupwise-registration-in-simpleitk-or-itkelastix-flipping-images/7694
**Category:** Beginner Questions
**Tags:** simpleitk, registration
**Created:** [January 6, 2026, 10:39am UTC](https://discourse.itk.org/t/groupwise-registration-in-simpleitk-or-itkelastix-flipping-images/7694 "2026-01-06T10:39:19Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Rock](https://discourse.itk.org/user_avatar/discourse.itk.org/rock/32/4610_2.png) [@Rock](https://discourse.itk.org/u/Rock)
#### Post date: [January 6, 2026, 10:39am UTC](https://discourse.itk.org/t/groupwise-registration-in-simpleitk-or-itkelastix-flipping-images/7694/1 "2026-01-06T10:39:19Z")

</div>

Hello,

I am trying to run groupwise registrations in SimpleITK and ITKElastix, but with either the resulting images just seem to be flipped vertically. My original images are .tifs; I converted them to grayscale and then combined them into a .nii file before reading in. I am using code from tutorials for SimpleElastix in SimpleITK ([Groupwise Registration — SimpleElastix 0.1 documentation](https://simpleelastix.readthedocs.io/GroupwiseRegistration.html)) and for ITKElastix ( [ITKElastix/examples/ITK\_Example06\_GroupwiseRegistration.ipynb at main · InsightSoftwareConsortium/ITKElastix · GitHub](https://github.com/InsightSoftwareConsortium/ITKElastix/blob/main/examples/ITK_Example06_GroupwiseRegistration.ipynb) ). I have not altered the ITKElastix code; I only altered the SimpleITK code to read in a single .nii file rather than read in a folder and join the images together:

SimpleITK:

```auto
import SimpleITK as sitk

population = sitk.ReadImage("syngcleansizedgrey.nii")

vectorOfImages = sitk.VectorOfImage()

#for filename in population:
  #vectorOfImages.push_back(sitk.ReadImage(filename))

image = vectorOfImages

# Register
elastixImageFilter = sitk.ElastixImageFilter()
elastixImageFilter.SetFixedImage(population)
elastixImageFilter.SetMovingImage(population)
elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap('groupwise'))
elastixImageFilter.Execute()

sitk.WriteImage(population, 'groupwise.tif')

```

ITKElastix:

```auto
import itk

# Load folder containing images.
images = itk.imread("syngcleansizedgrey.nii", itk.F) #", itk.F" loads images as floats

# Call registration function
# both fixed and moving image should be set with the vector_itk to prevent elastix from throwing errors

result_image, result_transform_parameters = itk.elastix_registration_method(
    images, images, parameter_object=parameter_object, log_to_console=True
)

# Call registration function
# both fixed and moving image should be set with the vector_itk to prevent elastix from throwing errors

result_image, result_transform_parameters = itk.elastix_registration_method(
    images, images, parameter_object=parameter_object, log_to_console=True
)

# Save image with itk
itk.imwrite(result_image, "exampleoutput/groupwise.tif")

```

With either, when I compare the output file to the original image, each image is simply vertically flipped. I would be very grateful for any insight on what I am doing wrong!

Thank you,

Rock

---

<div class="post-metadata">

### Author: ![zivy](https://discourse.itk.org/user_avatar/discourse.itk.org/zivy/32/1726_2.png) [@zivy](https://discourse.itk.org/u/zivy)
#### Post date: [January 7, 2026, 7:59pm UTC](https://discourse.itk.org/t/groupwise-registration-in-simpleitk-or-itkelastix-flipping-images/7694/2 "2026-01-07T19:59:05Z")

</div>

Hello @Rock,

The code looks correct. Can you post a sample input image and the vertically flipped image so that we can get a better understanding of your data and result?

In some cases the image may not be flipped, but the display method/program is flipping it. This likely isn’t your issue as I am assuming you are viewing the images using the same code or program, but just raising it as a possibility.
