使用sitk仿射变换正确翻转图像

问题描述

我正在尝试使用仿射变换使用 SITK 翻转 3d 图像。从我所见,似乎像素被翻转了,但图像方向是相同的。另一方面,如果我使用 sitk::Flip,则会以正确的方向创建图像

import SimpleITK as sitk


image = sitk.Image(3,3,sitk.sitkInt16)
image.SetDirection([1.0,0.0,1.0,1.0])


image.SetPixel(0,5)
image.SetPixel(0,1,2,4)
image.SetPixel(1,5)
image.SetPixel(1,4)
image.SetPixel(2,5)
image.SetPixel(2,4)


image.SetPixel(0,6)
image.SetPixel(0,6)
image.SetPixel(1,6)
image.SetPixel(2,6)

image.SetPixel(0,10)
image.SetPixel(0,10)
image.SetPixel(1,10)
image.SetPixel(2,10)

image.Setorigin([0,0])

print("--------- 1 -------------")
print(image)
print(sitk.GetArrayFromImage(image))
print("--------- 2 -------------")

affineTrans = sitk.AffineTransform(3)
affineTrans.SetMatrix([1,-1])
affineTrans.SetCenter([1,1])
flipped = sitk.Resample(image,affineTrans)

#print(flipped)
print(sitk.GetArrayFromImage(flipped))
print(flipped)

导致翻转图像,方向为 [1,1],就像原始图像一样。 使用 sik.Flip(image,[False,False,True]) 而不是重新采样 + 变换会产生 [1,-1] 的正确方向。

这是否意味着如果我使用仿射变换,我有责任手动修复方向?

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)