Dash VTK⑤(Real medical image)

Real medical image

Dash VTKを使って、人体の頭部(医療データ)を表示してみます。

頭部データとして下記のファイルをダウンロードし、ソースコードと同じフォルダに格納します。

頭部データ - https://github.com/plotly/dash-vtk/blob/master/demos/data/head.vti

頭部を表示するソースコードは下記の通りです。11行目で、ダウンロードしたファイルを指定しています。

[ソースコード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os
import dash
import dash_html_components as html

import dash_vtk
from dash_vtk.utils import to_volume_state

import vtk

# Data file path
head_vti = "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%"},
children=[html.Div(vtk_view, style={"height": "100%", "width": "100%"})],
)

if __name__ == "__main__":
app.run_server(debug=True)

[ブラウザで表示]

人体の頭部を表示することができました。

各コントローラを使って頭部の透過度を変えたり、ドラッグすることにより角度を変えて表示することが可能です。