# How can I find coordinates of a point after resampling?

Suppose I apply a resampling operation to my image as below:

``````    resampler = sitk.ResampleImageFilter()
resampler.SetSize(target_size)
resampler.SetOutputSpacing(target_spacing)
resampler.SetOutputOrigin(original_origin)
resampler.SetOutputDirection(image.GetDirection())
resampled_image = resampler.Execute(image)
``````

Now suppose that in the original image, there is a voxel at point (x,y,z). I now want to calculate/find the coordinates of this point in the new image space.

I tried using

``````transform = resampler.GetTransform()
new_coordinates = transform.TransformPoint((x,y,z))
``````

but that does not seem to work since GetTransform() returns an identity transformation. Any help would be greatly appreciated. Thanks!

Hello @Eloy_Schultz,

In the code you provided, the transformation is the identity so the index of a point changes in the `resampled_image`, but its physical coordinates do not. The various options of moving between physical coordinates and indexes are illustrated below:

``````original_index = [x, y, z]
original_physical_coords = image.TransformIndexToPhysicalPoint(original_index)
# If you have a continuous value for the index, sub pixel use TransformContinuousIndexToPhysicalPoint

# Obtain the corresponding index in the resampled image, either continuous or discrete
new_index_continous = resampled_image.TransformPhysicalPointToContinuousIndex(original_physical_coords)
new_index = resampled_image.TransformPhysicalPointToIndex(original_physical_coords)
``````
1 Like

Great thanks! That is exactly what I was looking for. Also thanks for pointing out the difference between physicial space (coordinates) and image space (indices), this cleared it up for me. Thanks again

2 Likes