def surfaceclipp_centerline(input_file, output_file): ''' 使用中心线自动的裁剪端口 ''' surface_reader = sr.vmtkSurfaceReader() surface_reader.InputFileName = input_file surface_reader.Execute() centerline = cl.vmtkCenterlines() centerline.Surface = surface_reader.Surface centerline.Execute() endpointextractor = ep.vmtkEndpointExtractor() endpointextractor.Centerlines = centerline.Centerlines endpointextractor.Execute() branchclipper = bc.vmtkBranchClipper() branchclipper.Surface = surface_reader.Surface branchclipper.Centerlines = endpointextractor.Centerlines branchclipper.Execute() surface_connectivity = sufct.vmtkSurfaceConnectivity() surface_connectivity.Surface = branchclipper.Surface surface_connectivity.CleanOutput = 1 surface_connectivity.Execute() surface_writer = sw.vmtkSurfaceWriter() surface_writer.Surface = surface_connectivity.Surface surface_writer.OutputFileName = output_file surface_writer.Execute()
def make_compare_centerline(centerline, reference_file, tolerance=0.001, method='distance', arrayname=''): reader = surfacereader.vmtkSurfaceReader() try: datadir = os.path.join( os.path.dirname( os.path.dirname( os.path.realpath(__file__))), 'vmtk-test-data', 'centerlinereference') if not os.path.isdir(datadir): raise ValueError() except ValueError: datadir = os.path.join( os.path.dirname( os.path.dirname( os.path.dirname( os.path.dirname( os.path.realpath(__file__))))), 'vmtk-test-data', 'centerlinereference') if not os.path.isdir(datadir): raise ValueError('the vmtk-test-data repository cannot be found at the same level as vmtk. expected it to be at', datadir) reader.InputFileName = os.path.join(datadir, reference_file) reader.Execute() comp = surfacecompare.vmtkSurfaceCompare() comp.Surface = centerline comp.ReferenceSurface = reader.Surface comp.Method = method comp.ArrayName = arrayname comp.Tolerance = tolerance comp.Execute() return comp.Result
def make_compare_centerline(centerline, reference_file, tolerance=0.001, method='distance', arrayname=''): reader = surfacereader.vmtkSurfaceReader() try: datadir = os.path.join( os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'vmtk-test-data', 'centerlinereference') if not os.path.isdir(datadir): raise ValueError() except ValueError: datadir = os.path.join( os.path.dirname( os.path.dirname( os.path.dirname( os.path.dirname(os.path.realpath(__file__))))), 'vmtk-test-data', 'centerlinereference') if not os.path.isdir(datadir): raise ValueError( 'the vmtk-test-data repository cannot be found at the same level as vmtk. expected it to be at', datadir) reader.InputFileName = os.path.join(datadir, reference_file) reader.Execute() comp = surfacecompare.vmtkSurfaceCompare() comp.Surface = centerline comp.ReferenceSurface = reader.Surface comp.Method = method comp.ArrayName = arrayname comp.Tolerance = tolerance comp.Execute() return comp.Result
def suface_flow_extension(input_file, output_file): ''' 给表面添加流拓展 ''' surface_reader = sr.vmtkSurfaceReader() surface_reader.InputFileName = input_file surface_reader.Execute() centerline = cl.vmtkCenterlines() centerline.Surface = surface_reader.Surface centerline.SeedSelectorName = 'openprofiles' centerline.Execute() flow_extension = fex.vmtkFlowExtensions() flow_extension.Surface = surface_reader.Surface flow_extension.Centerlines = centerline.Centerlines flow_extension.AdaptiveExtensionLength = 1 flow_extension.ExtensionRatio = 20 flow_extension.CenterlineNormalEstimationDistanceRatio = 1 flow_extension.Interactive = 0 flow_extension.Execute() surface_writer = sw.vmtkSurfaceWriter() surface_writer.Surface = flow_extension.Surface surface_writer.OutputFileName = output_file surface_writer.Execute()
def aorta_surface_open_ends(input_datadir): import vmtk.vmtksurfacereader as surfacereader reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-surface-open-ends.stl') reader.Execute() return reader.Surface
def aorta_surface_two_segments(input_datadir): import vmtk.vmtksurfacereader as surfacereader reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-surface-two-segments.vtp') reader.Execute() return reader.Surface
def test_read_stl_surface(input_datadir): reader = r.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'fixture.stl') reader.Execute() conv = wrap.vmtkSurfaceToNumpy() conv.Surface = reader.Surface conv.Execute() assert sha1(conv.ArrayDict['Points']).hexdigest() == 'a3b3c7608de5a7a9fecf9f7280f9fc65565e7ded'
def test_read_vtp_surface(input_datadir): reader = r.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-surface.vtp') reader.Execute() conv = wrap.vmtkSurfaceToNumpy() conv.Surface = reader.Surface conv.Execute() assert sha1(conv.ArrayDict['Points']).hexdigest() == '2d589cf877f713cf805d7be952fa5bdb2f2ef0ee'
def surfaceclipp(input_file, out_file): ''' 裁剪表面的端口,交互的方式 ''' surface_reader = sr.vmtkSurfaceReader() surface_reader.InputFileName = input_file surface_reader.Execute() surface_clipper = sc.vmtkSurfaceClipper() surface_clipper.Surface = surface_reader.Surface surface_clipper.Execute() surface_writer = sw.vmtkSurfaceWriter() surface_writer.Surface = surface_clipper.Surface surface_writer.OutputFileName = output_file surface_writer.Execute()
def surface_capper(input_file, output_file): ''' 将网格变得端口封住 ''' reader = sr.vmtkSurfaceReader() reader.InputFileName = input_file reader.Execute() capper = sc.vmtkSurfaceCapper() capper.Surface = reader.Surface capper.Execute() writer = sw.vmtkSurfaceWriter() writer.OutputFileName = output_file writer.Surface = capper.Surface writer.Mode = 'ascii' writer.Execute()
def surface_smooth(): ''' 网格表面的平滑 ''' input_file = 'id2_model.vtp' output_file = 'id2_mode_sm_laplace.vtp' surfacereader = sr.vmtkSurfaceReader() surfacereader.InputFileName = input_file surfacereader.Execute() # 没有平滑的网格表面 originsurface_mapper = vtk.vtkPolyDataMapper() originsurface_mapper.SetInputData(surfacereader.Surface) originsurface_actor = vtk.vtkActor() originsurface_actor.SetMapper(originsurface_mapper) color = [0, 1, 0] originsurface_actor.GetProperty().SetColor(color) originsurface_actor.GetProperty().SetOpacity(0.8) surfacesmooth = ss.vmtkSurfaceSmoothing() surfacesmooth.Surface = surfacereader.Surface surfacesmooth.NumberOfIterations = 30 surfacesmooth.PassBand = 1.0 surfacesmooth.RelaxationFactor = 0.01 surfacesmooth.BoundarySmoothing = 1 surfacesmooth.NormalizeCoordinates = 1 surfacesmooth.Method = "laplace" # ["taubin","laplace"] surfacesmooth.Execute() renderer = rd.vmtkRenderer() renderer.Initialize() renderer.Renderer.AddActor(originsurface_actor) surface_viewer = sv.vmtkSurfaceViewer() surface_viewer.vmtkRenderer = renderer surface_viewer.Surface = surfacesmooth.Surface surface_viewer.Display = 1 surface_viewer.Color = [1.0, 0, 0] surface_viewer.ColorMap = "cooltowarm" surface_viewer.Execute() surface_writer = sw.vmtkSurfaceWriter() surface_writer.OutputFileName = output_file surface_writer.Surface = surfacesmooth.Surface surface_writer.Execute()
def surfacesubdivision(input_file, output_file): ''' 对网格表面进行细分 ''' surface_reader = sr.vmtkSurfaceReader() surface_reader.InputFileName = input_file surface_reader.Execute() surface_subdivision = ssdv.vmtkSurfaceSubdivision() surface_subdivision.NumberOfSubdivisions = 1 surface_subdivision.Surface = surface_reader.Surface surface_subdivision.Method = "butterfly" surface_subdivision.Execute() surface_writer = sw.vmtkSurfaceWriter() surface_writer.OutputFileName = output_file surface_writer.Surface = surface_subdivision.Surface surface_writer.Execute()
def centerlines(): ''' 显示中心线 ''' input_file = "data\\levelSet\\vessellevelset_0.vtp" surfacereader = sr.vmtkSurfaceReader() surfacereader.InputFileName = input_file surfacereader.Execute() centerline = cl.vmtkCenterlines() centerline.Surface = surfacereader.Surface centerline.Execute() ''' centerline_mapper = vtk.vtkPolyDataMapper() centerline_mapper.SetInputData(centerline.Centerlines) centerline_actor = vtk.vtkActor() centerline_actor.SetMapper(centerline_mapper) centerline.vmtkRenderer.Renderer.AddActor(centerline_actor) surface_actor = centerline.vmtkRenderer.Renderer.GetActors().GetLastActor() surface_actor.GetProperty().SetOpacity(0) surface_actor.GetProperty().SetColor([0.1, 0.2, 0.5]) centerline.vmtkRenderer.Render()''' surface_mapper = vtk.vtkPolyDataMapper() surface_mapper.SetInputData(surfacereader.Surface) surface_actor = vtk.vtkActor() surface_actor.SetMapper(surface_mapper) surface_actor.GetProperty().SetOpacity(0.3) color = [0.5, 0.6, 0.7] surface_actor.GetProperty().SetColor(color) renderer = rd.vmtkRenderer() renderer.Initialize() renderer.Renderer.AddActor(surface_actor) surfaceviewer = sv.vmtkSurfaceViewer() surfaceviewer.Surface = centerline.Centerlines # surfaceviwer.Surface = centerline.VoronoiDiagram surfaceviewer.Color = [0.5, 0.6, 0.7] surfaceviewer.ColorMap = "rainbow" # "rainbow","blackbody","cooltowarm","grayscale" surfaceviewer.vmtkRenderer = renderer # centerline中vmtkrenderer在调用结束后,就回收内存了 surfaceviewer.ArrayName = "MaximumInscribedSphereRadius" surfaceviewer.Execute()
def reference_system(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-centerline-referencesystem.vtp') reader.Execute() return reader.Surface
def aorta_surface_reference(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join( input_datadir, 'aorta-surface-connectivity-reference.stl') reader.Execute() return reader.Surface
def aorta_surface_reference(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-surface-connectivity-reference.stl') reader.Execute() return reader.Surface
def centerline_attribute_branched(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-centerline-attribute-branches.vtp') reader.Execute() return reader.Surface
def reference_system(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join( input_datadir, 'aorta-centerline-referencesystem.vtp') reader.Execute() return reader.Surface
def aorta_surface_branches(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-surface-branch-split.vtp') reader.Execute() return reader.Surface
def aorta_centerline(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-centerline.vtp') reader.Execute() return reader.Surface
def aorta_centerline_branches(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-centerline-branches.vtp') reader.Execute() return reader.Surface
def aorta_surface2(input_datadir): reader = surfacereader.vmtkSurfaceReader() reader.InputFileName = os.path.join(input_datadir, 'aorta-surface-segment-2.stl') reader.Execute() return reader.Surface