from dash_vtk.utils import to_volume_state try: # VTK 9+ from vtkmodules.vtkImagingCore import vtkRTAnalyticSource except: # Old VTK from vtk.vtkImagingCore import vtkRTAnalyticSource # Use VTK to get some data data_source = vtkRTAnalyticSource() data_source.Update() # <= Execute source to produce an output dataset = data_source.GetOutput() # Use helper to get a volume structure that can be passed as-is to a Volume volume_state = to_volume_state(dataset) # No need to select field content = dash_vtk.View([ dash_vtk.VolumeRepresentation([ # GUI to control Volume Rendering # + Setup good default at startup dash_vtk.VolumeController(), # Actual volume dash_vtk.ShareDataSet([ dash_vtk.Volume(state=volume_state), ]), ]), dash_vtk.SliceRepresentation(iSlice=10, children=[ dash_vtk.ShareDataSet(), ]),
import dash_vtk from dash_vtk.utils import to_volume_state import vtk # Data file path demo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) head_vti = os.path.join(demo_dir, "data", "head.vti") # Load dataset from dist reader = vtk.vtkXMLImageDataReader() reader.SetFileName(head_vti) reader.Update() volume_state = to_volume_state(reader.GetOutput()) vtk_view = dash_vtk.View( dash_vtk.VolumeRepresentation(children=[ dash_vtk.VolumeController(), dash_vtk.Volume(state=volume_state), ])) app = dash.Dash(__name__) server = app.server app.layout = html.Div( style={ "height": "calc(100vh - 16px)", "width": "100%" },
def dcm_to_volume(dir_path): itk_image = itk.imread(dir_path) vtk_image = itk.vtk_image_from_image(itk_image) volume_state = to_volume_state(vtk_image) return volume_state
import os import dash import dash_html_components as html import itk import dash_vtk from dash_vtk.utils import to_volume_state # Place a DICOM series (a set of per-file slices) in a directory. ITK sorts, sets spatial metadata, etc. demo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) itk_image = itk.imread(os.path.join(demo_dir, "data", "ct_lung")) # Convert itk.Image to vtkImageData vtk_image = itk.vtk_image_from_image(itk_image) volume_state = to_volume_state(vtk_image) vtk_view = dash_vtk.View( dash_vtk.VolumeRepresentation( children=[dash_vtk.VolumeController(), dash_vtk.Volume(state=volume_state),] ) ) app = dash.Dash(__name__) server = app.server app.layout = html.Div( style={"height": "calc(100vh - 50px)", "width": "100%"}, children=[html.Div(vtk_view, style={"height": "100%", "width": "100%"})], )