I possède deux matrice:rotation/translation de l'image VTK 3D avec 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"
I ont un fichier de VTK qui contient l'image 3D et je souhaite créer une fonction en python pour faire tourner/traduire avec interpolation il.
import vtk
def rotate(vtkinputpath, vtkoutputpath, rotation, translation, interpolation):
...
Je suis en train de se inspirer the transformJ plugin sources (voir here to understand how it works)
Je voulais utiliser vtk.vtkTransform mais je ne comprends pas vraiment comment cela fonctionne: ces examples sont pas assez près de ce Je veux faire. Voilà ce que je l'ai fait avec que:
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
Mais cela ne peut pas travailler ... j'ai vu here que la fonction RotateWXYZ() existe:
# 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()
Mais je ne comprends pas ce que les lignes faire. Mon principal problème est que je ne trouve pas la documentation vtk pour Python ...
Pouvez-vous me conseiller un site de documentation pour vtk en Python? Ou pouvez-vous m'expliquer au moins comment vtktransform (rotateWXYZ()) fonctionne? S'il vous plaît, je suis totalement perdu, rien ne fonctionne.
J'ai lu la description de votre lien, merci. Mais je ne suis pas sûr d'avoir bien compris la fonction SetMatrix ... J'essaye de convertir ma matrice de rotation en un angle et en un vecteur (<=> l'axe de la rotation). J'ai essayé de comprendre les sources de vtkTransform (http://www.vtk.org/doc/nightly/html/vtkTransform_8h_source.html) mais je ne suis pas sûr de comprendre ce que ça fait ... Donc merci beaucoup, je mettra à jour ma question si ma tentative ne fonctionne pas aussi. – EaudeRoche
J'ai édité la réponse pour montrer les valeurs correctes dans la matrice. Si vous définissez cette matrice sur la transformation à l'aide de [SetMatrix] (http://www.vtk.org/doc/nightly/html/classvtkTransform.html#ad58b847446d791391e32441b98eff151), vous obtenez une transformation qui applique la rotation et la traduction données dans votre exemple. Après cela, vous pouvez utiliser vtkImageReslice pour appliquer la transformation à une image. J'espère que cela vous aide un peu plus. –