[英]Rotation/translation of vtk 3D image with interpolation (python)
我有2個矩陣:
#for example
rotation = matrix([[ 0.61782155, 0.78631834, 0. ],
[ 0.78631834, -0.61782155, 0. ],
[ 0. , 0. , -1. ]])
translation = matrix([[-0.33657291],
[ 1.04497454],
[ 0. ]])
vtkinputpath = "/hello/world/vtkfile.vtk"
vtkoutputpath = "/hello/world/vtkrotatedfile.vtk"
interpolation = "linear"
我有一個包含3D圖像的vtk文件,我想在python中創建一個函數以對其進行插值進行旋轉/平移。
import vtk
def rotate(vtkinputpath, vtkoutputpath, rotation, translation, interpolation):
...
我正在嘗試從transformJ插件源中汲取靈感(請參閱此處以了解其工作原理 )
我想使用vtk.vtkTransform,但我不太了解它是如何工作的:這些示例距離我想做的還不夠。 這就是我所做的:
reader = vtk.vtkXMLImageDataReader()
reader.SetFileName(vtkinputpath)
reader.Update()
transform = reader.vtkTransform()
transform.RotateX(rotation[0])
transform.RotateY(rotation[1])
transform.RotateZ(rotation[2])
transform.Translate(translation[0], translation[1], translation[2])
#and I don't know how I can choose the parameter of the interpolation
但這行不通...我在這里看到函數RotateWXYZ()存在:
# create a transform that rotates the cone
transform = vtk.vtkTransform()
transform.RotateWXYZ(45,0,1,0)
transformFilter=vtk.vtkTransformPolyDataFilter()
transformFilter.SetTransform(transform)
transformFilter.SetInputConnection(source.GetOutputPort())
transformFilter.Update()
但是我不明白這些線的作用。 我的主要問題是我找不到Python的vtk文檔...
您可以為我提供Python vtk文檔網站的建議嗎? 還是至少可以向我解釋vtktransform(rotateWXYZ())的工作方式? 拜托,我完全迷失了,什么都沒有。
我不確定是否有特定的Python文檔,但這對於了解RotateWXYZ的工作方式可能很有用: http ://www.vtk.org/doc/nightly/html/classvtkTransform.html#a9a6bcc6b824fb0a9ee3a9048aa6b262c
要創建所需的變換,可以將旋轉矩陣和平移矩陣組合成一個4x4矩陣,為此,我們將旋轉矩陣放在第0、1和2列中,將平移矢量放在右列中,最下面一行是0,0,0,1。 這是有關此的更多信息 。 例如:
0.61782155 0.78631834 0 -0.33657291
0.78631834 -0.61782155 0 1.04497454
0 0 -1 0
0 0 0 1
然后,您可以使用SetMatrix將矩陣直接設置為vtkTransform:
matrix = [0.61782155,0.78631834,0,-0.33657291,0.78631834,-0.61782155,0,1.04497454,0,0,-1,0,0,0,0,1]
transform.SetMatrix(matrix)
編輯:編輯以完成矩陣變量中的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.