saved_flow = "testflow.dat" #files names sphere_file_name = "../data/test_mesh/sphere.obj" cube_file_name = "../data/test_mesh/cube_simple.obj" torus_file_name = "../data/test_mesh/torus.obj" spot_file_name = "../data/test_mesh/spot.obj" brain_file_name = "../data/brain_mesh/100307_smooth_lh.vtk" # Init Sphere s_mesh = TriMesh_Vtk(sphere_file_name, None) s_vshape0 = s_mesh.get_nb_vertices() # Display sphere sphere_tmf = TriMeshFlow_Vtk(s_mesh.get_triangles(), s_mesh.get_vertices()) sphere_tmf.display() # Umbrella sphere sphere_tmf.laplacian_smooth(100, 1, l2_dist_weighted=False, area_weighted=False, backward_step=False, flow_file=saved_flow) sphere_tmf.set_vertices_flow_from_memmap(saved_flow, 100, s_vshape0) sphere_tmf.display() sphere_tmf.display_vertices_flow() # L2 weighted sphere_tmf.set_vertices_flow(s_mesh.get_vertices()) sphere_tmf.laplacian_smooth(100, 1, l2_dist_weighted=True, area_weighted=False, backward_step=False, flow_file=saved_flow) sphere_tmf.set_vertices_flow_from_memmap(saved_flow, 100, s_vshape0) sphere_tmf.display() sphere_tmf.display_vertices_flow()
parser.add_argument('-rh_mask', type=str, default=None, help='input right surface mask array') parser.add_argument('-lh_mask', type=str, default=None, help='input left surface mask array') # option parser.add_argument('-report', type=str, default=None, help='output intersection report') args = parser.parse_args() rh_lines = get_streamlines(load_streamlines_poyldata(args.rh_tracking)) lh_lines = get_streamlines(load_streamlines_poyldata(args.lh_tracking)) lines = [rh_lines, lh_lines] print "Read .vtk surface file" rh_mesh = TriMesh_Vtk(args.rh_surface, None) lh_mesh = TriMesh_Vtk(args.lh_surface, None) tris = [rh_mesh.get_triangles(), lh_mesh.get_triangles()] vts = [rh_mesh.get_vertices(), lh_mesh.get_vertices()] print "Generate OBB-Tree" #tree = vtk.vtkModifiedBSPTree() rh_tree = vtk.vtkOBBTree() rh_tree.SetDataSet(rh_mesh.get_polydata()) rh_tree.BuildLocator() lh_tree = vtk.vtkOBBTree() lh_tree.SetDataSet(lh_mesh.get_polydata()) lh_tree.BuildLocator() tree = [rh_tree, lh_tree] # report info [rh, lh]
if args.mask is not None: mask = np.load(args.mask) step_size = args.step_size * mask else: step_size = args.step_size mesh = TriMesh_Vtk(surface_file_in, None) smooth_vertices = mesh.laplacian_smooth( nb_iter=args.nb_step, diffusion_step=step_size, l2_dist_weighted=args.dist_weighted, area_weighted=args.area_weighted, backward_step=not(args.forward_step), flow_file=None) smoothed_mesh = TriMesh_Vtk(mesh.get_triangles(), smooth_vertices) # Save smoothed_mesh.save(surface_file_out) # Display if args.vi: mesh.display('input surface') if args.vo: smoothed_mesh.display('output surface') #print "\n!!! Smooth surface Saved !!!\n"
# by Etienne St-Onge import numpy as np import time import trimeshpy from trimeshpy.trimesh_vtk import TriMesh_Vtk from trimeshpy.trimeshflow_vtk import TriMeshFlow_Vtk from trimeshpy.vtk_util import lines_to_vtk_polydata, save_polydata # Test files file_name = trimeshpy.data.brain_lh mesh = TriMesh_Vtk(file_name, None) triangles = mesh.get_triangles() vertices = mesh.get_vertices() mesh.display(display_name="Trimeshpy: Initial Mesh") # pre-smooth vertices = mesh.laplacian_smooth(2, 10.0, l2_dist_weighted=False, area_weighted=False, backward_step=True, flow_file=None) mesh.set_vertices(vertices) mesh.display(display_name="Trimeshpy: Smoothed Mesh") tri_mesh_flow = TriMeshFlow_Vtk(triangles, vertices) # Test parameters nb_step = 10 diffusion_step = 10 saved_flow = trimeshpy.data.output_test_flow saved_fib = trimeshpy.data.output_test_fib
# by [email protected] import numpy as np from trimeshpy.trimesh_class import TriMesh from trimeshpy.trimesh_vtk import TriMesh_Vtk file_name = "../data/test_mesh/cube_simple.obj" #file_name = "../data/test_mesh/sphere.obj" #file_name = "../data/test_mesh/torus.obj" mesh = TriMesh_Vtk(file_name, None) triangles = mesh.get_triangles() vertices = mesh.get_vertices() tri_mesh = TriMesh(triangles, vertices) print tri_mesh.get_nb_triangles(), tri_mesh.get_nb_vertices() bool_tests = True current_test = True """CONNECTIVITY MATRIX""" # test vertex connectivity vv_matrix = tri_mesh.edge_map(False) current_test = np.alltrue(vv_matrix.todense() == vv_matrix.T.todense()) print current_test, ": connectivity is symmetric" bool_tests = bool_tests and current_test # test triangles vertex connectivity tv_matrix = tri_mesh.triangle_vertex_map() nb_triangles_per_points = tri_mesh.nb_triangles_per_vertex() current_test = np.alltrue(tv_matrix.sum(1) == 3)
parser.add_argument('-compression', type=float, default=None, help='compression toll (no-compression by default, but 0.01 is dipy default)') args = parser.parse_args() ### weight correctly the ending triangle ! print " loading files!" intersect = np.load(args.intersection) surf_id = np.load(args.surf_idx) tracto_polydata = load_streamlines_poyldata(args.tracto_cut) tracto = get_streamlines(tracto_polydata) rh_mesh = TriMesh_Vtk(args.rh_surface, None) rh_vts = rh_mesh.get_vertices() rh_tris = rh_mesh.get_triangles() lh_mesh = TriMesh_Vtk(args.lh_surface, None) lh_vts = lh_mesh.get_vertices() lh_tris = lh_mesh.get_triangles() rh_info = np.load(args.rh_flow_info) lh_info = np.load(args.lh_flow_info) rh_flow = np.memmap(args.rh_flow_file, dtype=np.float64, mode='r', shape=(rh_info[0], rh_vts.shape[0], rh_vts.shape[1])) lh_flow = np.memmap(args.lh_flow_file, dtype=np.float64, mode='r', shape=(rh_info[0], lh_vts.shape[0], lh_vts.shape[1])) vts = (rh_vts, lh_vts)
# mask step size if args.mask is not None: mask = np.load(args.mask) step_size = args.step_size * mask else: step_size = args.step_size mesh = TriMesh_Vtk(args.surface, None) end_vertices = mesh.positive_mass_stiffness_smooth( nb_iter=args.nb_step, diffusion_step=step_size, flow_file=args.flow_file) end_mesh = TriMesh_Vtk(mesh.get_triangles(), end_vertices) print "saving surface tracking ..." flow = np.memmap(args.flow_file, dtype=np.float64, mode='r', shape=(args.nb_step, end_vertices.shape[0], end_vertices.shape[1])) if args.tracking is not None: lines = compress_streamlines(np.swapaxes(flow, 0, 1)) lines_polydata = lines_to_vtk_polydata(lines, None, np.float32) save_polydata(lines_polydata, args.tracking, True) # save if args.end_points is not None: # save only not masked points if args.mask is not None:
# by Etienne St-Onge import trimeshpy from trimeshpy.trimesh_vtk import TriMesh_Vtk from trimeshpy.trimeshflow_vtk import TriMeshFlow_Vtk # Init Sphere s_mesh = TriMesh_Vtk(trimeshpy.data.sphere, None) s_vshape0 = s_mesh.get_nb_vertices() # Display sphere sphere_tmf = TriMeshFlow_Vtk(s_mesh.get_triangles(), s_mesh.get_vertices()) sphere_tmf.display() NB_STEP_SPHERE = 100 # Umbrella sphere sphere_tmf.laplacian_smooth(NB_STEP_SPHERE, 1, l2_dist_weighted=False, area_weighted=False, backward_step=False, flow_file=trimeshpy.data.output_test_flow) sphere_tmf.set_vertices_flow_from_memmap(trimeshpy.data.output_test_flow, NB_STEP_SPHERE, s_vshape0) sphere_tmf.display() sphere_tmf.display_vertices_flow() # L2 weighted sphere_tmf.set_vertices_flow(s_mesh.get_vertices()) sphere_tmf.laplacian_smooth(NB_STEP_SPHERE, 1,