簡體   English   中英

帶插值的vtk 3D圖像的旋轉/平移(python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM