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()
Exemplo n.º 2
0
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]
Exemplo n.º 3
0
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"
Exemplo n.º 4
0
# 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
Exemplo n.º 5
0
# 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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
# 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:
Exemplo n.º 8
0
# 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,