Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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'
Ejemplo n.º 8
0
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'
Ejemplo n.º 9
0
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'
Ejemplo n.º 10
0
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'
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
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()
Ejemplo n.º 13
0
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()
Ejemplo n.º 14
0
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()
Ejemplo n.º 15
0
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
Ejemplo n.º 17
0
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
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
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
Ejemplo n.º 20
0
def reference_system(input_datadir):
    reader = surfacereader.vmtkSurfaceReader()
    reader.InputFileName = os.path.join(
        input_datadir, 'aorta-centerline-referencesystem.vtp')
    reader.Execute()
    return reader.Surface
Ejemplo n.º 21
0
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
Ejemplo n.º 22
0
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
Ejemplo n.º 23
0
def aorta_centerline(input_datadir):
    reader = surfacereader.vmtkSurfaceReader()
    reader.InputFileName = os.path.join(input_datadir, 'aorta-centerline.vtp')
    reader.Execute()
    return reader.Surface
Ejemplo n.º 24
0
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
Ejemplo n.º 25
0
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
Ejemplo n.º 26
0
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
Ejemplo n.º 27
0
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
Ejemplo n.º 28
0
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