Module pyfocusr.vtk_functions
Expand source code
import vtk
from vtk.util.numpy_support import numpy_to_vtk, vtk_to_numpy
def read_vtk_mesh(path_to_file):
reader = vtk.vtkPolyDataReader()
reader.SetFileName(path_to_file)
reader.Update()
return reader.GetOutput()
def icp_transform(target, source, numberOfIterations=100, number_landmarks=1000, transform_mode='rigid'):
icp = vtk.vtkIterativeClosestPointTransform()
if transform_mode == 'rigid':
icp.GetLandmarkTransform().SetModeToRigidBody()
elif transform_mode == 'similarity':
icp.GetLandmarkTransform().SetModeToSimilarity()
else:
raise('Error invalid transform mode')
icp.SetTarget(target)
icp.SetSource(source)
icp.SetMaximumNumberOfIterations(numberOfIterations)
icp.StartByMatchingCentroidsOn()
icp.Modified()
icp.Update()
icp.SetMaximumNumberOfLandmarks(number_landmarks)
return icp
def apply_transform(source, transform):
transform_filter = vtk.vtkTransformPolyDataFilter()
transform_filter.SetInputData(source)
transform_filter.SetTransform(transform)
transform_filter.Update()
return transform_filter.GetOutput()
def get_node_curvatures(vtk_mesh, curvature_type='min'):
curvature = vtk.vtkCurvatures()
if curvature_type == 'min':
curvature.SetCurvatureTypeToMinimum()
elif curvature_type == 'max':
curvature.SetCurvatureTypeToMaximum()
curvature.SetInputData(vtk_mesh)
curvature.Update()
return curvature.GetOutput()
def get_max_curvature(vtk_mesh):
return [vtk_to_numpy(get_node_curvatures(vtk_mesh, curvature_type='max').GetPointData().GetScalars()),]
def get_min_curvature(vtk_mesh):
return [vtk_to_numpy(get_node_curvatures(vtk_mesh, curvature_type='min').GetPointData().GetScalars()),]
def get_min_max_curvature_values(vtk_mesh):
min_curvatures = get_node_curvatures(vtk_mesh, curvature_type='min')
max_curvatures = get_node_curvatures(vtk_mesh, curvature_type='max')
min_curvature_values = vtk_to_numpy(min_curvatures.GetPointData().GetScalars())
max_curvature_values = vtk_to_numpy(max_curvatures.GetPointData().GetScalars())
return min_curvature_values, max_curvature_values
def vtk_deep_copy(mesh):
new_mesh = vtk.vtkPolyData()
new_mesh.DeepCopy(mesh)
return new_mesh
Functions
def apply_transform(source, transform)
-
Expand source code
def apply_transform(source, transform): transform_filter = vtk.vtkTransformPolyDataFilter() transform_filter.SetInputData(source) transform_filter.SetTransform(transform) transform_filter.Update() return transform_filter.GetOutput()
def get_max_curvature(vtk_mesh)
-
Expand source code
def get_max_curvature(vtk_mesh): return [vtk_to_numpy(get_node_curvatures(vtk_mesh, curvature_type='max').GetPointData().GetScalars()),]
def get_min_curvature(vtk_mesh)
-
Expand source code
def get_min_curvature(vtk_mesh): return [vtk_to_numpy(get_node_curvatures(vtk_mesh, curvature_type='min').GetPointData().GetScalars()),]
def get_min_max_curvature_values(vtk_mesh)
-
Expand source code
def get_min_max_curvature_values(vtk_mesh): min_curvatures = get_node_curvatures(vtk_mesh, curvature_type='min') max_curvatures = get_node_curvatures(vtk_mesh, curvature_type='max') min_curvature_values = vtk_to_numpy(min_curvatures.GetPointData().GetScalars()) max_curvature_values = vtk_to_numpy(max_curvatures.GetPointData().GetScalars()) return min_curvature_values, max_curvature_values
def get_node_curvatures(vtk_mesh, curvature_type='min')
-
Expand source code
def get_node_curvatures(vtk_mesh, curvature_type='min'): curvature = vtk.vtkCurvatures() if curvature_type == 'min': curvature.SetCurvatureTypeToMinimum() elif curvature_type == 'max': curvature.SetCurvatureTypeToMaximum() curvature.SetInputData(vtk_mesh) curvature.Update() return curvature.GetOutput()
def icp_transform(target, source, numberOfIterations=100, number_landmarks=1000, transform_mode='rigid')
-
Expand source code
def icp_transform(target, source, numberOfIterations=100, number_landmarks=1000, transform_mode='rigid'): icp = vtk.vtkIterativeClosestPointTransform() if transform_mode == 'rigid': icp.GetLandmarkTransform().SetModeToRigidBody() elif transform_mode == 'similarity': icp.GetLandmarkTransform().SetModeToSimilarity() else: raise('Error invalid transform mode') icp.SetTarget(target) icp.SetSource(source) icp.SetMaximumNumberOfIterations(numberOfIterations) icp.StartByMatchingCentroidsOn() icp.Modified() icp.Update() icp.SetMaximumNumberOfLandmarks(number_landmarks) return icp
def read_vtk_mesh(path_to_file)
-
Expand source code
def read_vtk_mesh(path_to_file): reader = vtk.vtkPolyDataReader() reader.SetFileName(path_to_file) reader.Update() return reader.GetOutput()
def vtk_deep_copy(mesh)
-
Expand source code
def vtk_deep_copy(mesh): new_mesh = vtk.vtkPolyData() new_mesh.DeepCopy(mesh) return new_mesh