Ich habe 2-Matrix:Rotation/Translation von vtk 3D-Bild mit Interpolation (Python)
#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"
Ich habe eine vtk Datei, das 3D-Bild enthält, und ich möchte eine Funktion in Python schaffen, mit mir zu drehen/übersetzen interpoliere es.
import vtk
def rotate(vtkinputpath, vtkoutputpath, rotation, translation, interpolation):
...
Ich versuche Inspiration von the transformJ plugin sources zu nehmen (siehe here to understand how it works)
Ich wollte vtk.vtkTransform benutzen, aber ich nicht wirklich verstehen, wie es funktioniert: diese examples werden schließen nicht genug von dem, was Ich will das tun. Dies ist, was ich damit tat
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
Aber das kann nicht funktionieren ... Ich sah here, dass die Funktion RotateWXYZ() existiert:
# 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()
Aber ich verstehe nicht, was die Linien machen. Mein Hauptproblem ist, dass ich die vtk-Dokumentation für Python nicht finden kann ...
Können Sie mir eine Dokumentation Website für Vtk in Python beraten? Oder kannst du mir zumindest erklären, wie vtktransform (rotateWXYZ()) funktioniert? Bitte, ich bin total verloren, nichts funktioniert.
Ich habe die Beschreibung Ihres Links gelesen, danke. Aber ich bin mir nicht sicher, ob ich die SetMatrix-Funktion gut verstanden habe ... Ich versuche meine Rotationsmatrix in einen Winkel und einen Vektor zu konvertieren (<=> die Drehachse). Ich habe versucht, die Quellen von vtkTransform zu verstehen (http://www.vtk.org/doc/nightly/html/vtkTransform_8h_source.html), aber ich bin mir nicht sicher, ob ich verstehe, was es tut ... Also vielen Dank, ich Ich werde meine Frage aktualisieren, wenn mein Versuch nicht funktioniert. – EaudeRoche
Ich habe die Antwort bearbeitet, um die korrekten Werte in der Matrix anzuzeigen. Wenn Sie diese Matrix mit [SetMatrix] (http://www.vtk.org/doc/nightly/html/classvtkTransform.html#ad58b847446d791391e32441b98eff151) auf die Transformation setzen, erhalten Sie eine Transformation, die die in Ihrem Beispiel angegebene Rotation und Translation anwendet. Danach können Sie vtkImageReslice verwenden, um die Transformation auf ein Bild anzuwenden. Ich hoffe das hilft dir ein bisschen mehr. –