微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用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 举报,一经查实,本站将立刻删除。