# Convert numpy landmarks point coordinates to VTK.Polydata, and align them using the vtkProcrustesAlignmentFilter ()

**URL:** https://discourse.vtk.org/t/convert-numpy-landmarks-point-coordinates-to-vtk-polydata-and-align-them-using-the-vtkprocrustesalignmentfilter/9543
**Category:** Support
**Created:** [October 7, 2022, 8:12am UTC](https://discourse.vtk.org/t/convert-numpy-landmarks-point-coordinates-to-vtk-polydata-and-align-them-using-the-vtkprocrustesalignmentfilter/9543 "2022-10-07T08:12:29Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![joy](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/j/b77776/32.png) [@joy](https://discourse.vtk.org/u/joy)
#### Post date: [October 7, 2022, 8:12am UTC](https://discourse.vtk.org/t/convert-numpy-landmarks-point-coordinates-to-vtk-polydata-and-align-them-using-the-vtkprocrustesalignmentfilter/9543/1 "2022-10-07T08:12:29Z")

</div>

Hello VTK Team, I am new to VTK, I want to use the vtkProcrustesAlignmentFilter () for aligning multiple landmark points. I use these codes to do it?

import numpy as np

import open3d as o3d

import pyvista as pv

import vtk

from vtk.util import numpy\_support

land\_ref = np.loadtxt(‘/media/josi/5CEAB0FEEAB0D58C/statistical\_shape/final\_folder/mark\_L/case\_00000\_imaging\_L\_markCT.txt’)  
land\_point = np.loadtxt(‘/media/josi/5CEAB0FEEAB0D58C/statistical\_shape/final\_folder/mark\_L/case\_00001\_imaging\_L\_markCT.txt’)  
land\_point1 = np.loadtxt(‘/media/josi/5CEAB0FEEAB0D58C/statistical\_shape/final\_folder/mark\_L/case\_00002\_imaging\_L\_markCT.txt’)  
point\_cloud\_ref = pv.PolyData(land\_ref)  
point\_cloud\_land = pv.PolyData(land\_point)  
point\_cloud\_land1 = pv.PolyData(land\_point1)  
group = vtk.vtkMultiBlockDataGroupFilter()  
group.AddInputData(point\_cloud\_ref)  
group.AddInputData(point\_cloud\_land)  
group.AddInputData(point\_cloud\_land1)  
procrustes = vtk.vtkProcrustesAlignmentFilter()  
procrustes.SetInputConnection(group.GetOutputPort())  
procrustes.GetLandmarkTransform().SetModeToRigidBody()  
procrustes.Update()  
procrustes.GetOutput().GetBlock(0)  
map2a = vtk.vtkPolyDataMapper()  
map2a.SetInputData(procrustes.GetOutput().GetBlock(0))  
Actor2a = vtk.vtkActor()  
Actor2a.SetMapper(map2a)  
Actor2a.GetProperty().SetDiffuseColor(1.0000,0.3882,0.2784)  
map2b = vtk.vtkPolyDataMapper()  
map2b.SetInputData(procrustes.GetOutput().GetBlock(1))  
Actor2b = vtk.vtkActor()  
Actor2b.SetMapper(map2b)  
Actor2b.GetProperty().SetDiffuseColor(0.3882,1.0000,0.2784)  
map2c = vtk.vtkPolyDataMapper()  
map2c.SetInputData(procrustes.GetOutput().GetBlock(2))  
Actor2c = vtk.vtkActor()  
Actor2c.SetMapper(map2c)  
Actor2c.GetProperty().SetDiffuseColor(0.3882,0.2784,1.0000)  
ren1 = vtk.vtkRenderer()  
ren2 = vtk.vtkRenderer()  
ren3 = vtk.vtkRenderer()  
renWin = vtk.vtkRenderWindow()  
renWin.AddRenderer(ren1)  
renWin.AddRenderer(ren2)  
renWin.AddRenderer(ren3)  
renWin.SetSize(600,200)  
iren = vtk.vtkRenderWindowInteractor()  
iren.SetRenderWindow(renWin)  
ren2.AddActor(Actor2a)  
ren2.AddActor(Actor2b)  
ren2.AddActor(Actor2c)  
ren2.SetBackground(1,1,1)  
ren2.SetViewport(0.25,0.0,0.5,1.0)  
ren2.ResetCamera()  
ren2.GetActiveCamera().SetPosition(1,-1,0)  
ren2.ResetCamera()  
renWin.Render()  
iren.Initialize()  
iren.Start()  
I have the following question:

- Am I doing it in right way?
- How can I get the aligned points or the transformation matrix(rotation, translation and scale)?
- By visualizing the output I get the window with nothing inside(no points)?  
Looking hearing from you. Thank you
