Mercurial > hg > orthanc-book
annotate Sphinx/source/plugins/stl.rst @ 1073:b9fe60571a3e
fixed delayed-deletion status url
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Tue, 28 May 2024 22:16:56 +0200 |
parents | 63a3d4e82c2a |
children | 4df0d8c542f2 |
rev | line source |
---|---|
1052 | 1 .. _stl-plugin: |
2 | |
3 | |
1053
600547006d14
added STL_PLUGIN_ENABLED
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1052
diff
changeset
|
4 STL plugin for Orthanc |
600547006d14
added STL_PLUGIN_ENABLED
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1052
diff
changeset
|
5 ====================== |
1052 | 6 |
7 .. contents:: | |
8 | |
9 | |
10 Overview | |
11 -------- | |
12 | |
1056
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
13 This **official** plugin by the `ICTEAM institute of UCLouvain |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
14 <https://orthanc.uclouvain.be/>`__ extends Orthanc with support for |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
15 `Encapsulated 3D Manufacturing Model IODs |
1057
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
16 <https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.85.html>`_. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
17 As of release 1.0 of the plugin, this support is limited to `STL files |
1056
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
18 <https://en.wikipedia.org/wiki/STL_(file_format)>`__. |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
19 |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
20 The plugin allows to attach STL files to existing DICOM studies and to |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
21 generate a STL mesh from structure sets (i.e., DICOM RT-STRUCT) or |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
22 from `NIfTI binary volumes |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
23 <https://en.wikipedia.org/wiki/Neuroimaging_Informatics_Technology_Initiative>`__. |
1057
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
24 A high-level description of these features is `available as a paper |
1056
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
25 <https://doi.org/10.1145/3632047.3632051>`__. |
1055
ebe3214f3ab0
added citation instructions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1053
diff
changeset
|
26 |
1057
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
27 Importantly, any creation of a STL file requires the version of |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
28 Orthanc to be above or equal to 1.12.1. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
29 |
1055
ebe3214f3ab0
added citation instructions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1053
diff
changeset
|
30 **For researchers**: `Please cite this paper |
ebe3214f3ab0
added citation instructions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1053
diff
changeset
|
31 <https://doi.org/10.1145/3632047.3632051>`__. |
1056
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
32 |
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
33 |
1057
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
34 Compilation |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
35 ----------- |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
36 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
37 .. highlight:: bash |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
38 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
39 Official releases can be `downloaded from the Orthanc homepage |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
40 <https://orthanc.uclouvain.be/downloads/sources/orthanc-stl/index.html>`__. As |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
41 an alternative, the `repository containing the source code |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
42 <https://orthanc.uclouvain.be/hg/orthanc-stl/>`__ can be accessed |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
43 using Mercurial. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
44 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
45 The procedure to compile this plugin is similar of that for the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
46 :ref:`core of Orthanc <binaries>`. The following commands should work |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
47 on most GNU/Linux distributions, provided Docker is installed:: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
48 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
49 $ mkdir Build |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
50 $ cd Build |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
51 $ ../Resources/CreateJavaScriptLibraries.sh |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
52 $ cmake .. -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
53 $ make |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
54 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
55 The compilation will produce a shared library ``libOrthancSTL.so`` |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
56 that contains the STL plugin for Orthanc. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
57 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
58 Pre-compiled Linux Standard Base (LSB) binaries `are available for |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
59 download <https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc-stl/index.html>`__. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
60 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
61 Pre-compiled binaries for `Microsoft Windows <https://orthanc.uclouvain.be/downloads/windows-32/orthanc-stl/index.html>`__ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
62 and `macOS <https://orthanc.uclouvain.be/downloads/macos/orthanc-stl/index.html>`__ are available as well. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
63 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
64 Furthermore, the :ref:`Docker images <docker>` |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
65 ``jodogne/orthanc-plugins`` and ``orthancteam/orthanc`` also contain the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
66 plugin. Debian and Ubuntu packages can be found in the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
67 :ref:`standalone repository <binaries>` |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
68 ``https://debian.orthanc-labs.com/``. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
69 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
70 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
71 .. _stl_orthanc_explorer: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
72 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
73 Usage using Orthanc Explorer |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
74 ---------------------------- |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
75 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
76 The plugin extends the default :ref:`Orthanc Explorer |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
77 <orthanc-explorer>` Web interface with some new features. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
78 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
79 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
80 .. _stl_attach: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
81 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
82 Attach STL file |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
83 ^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
84 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
85 An existing STL file can be attached to an existing DICOM study by |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
86 clicking on the "*Attach STL model*" yellow button: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
87 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
88 .. image:: stl/attach.png |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
89 :align: center |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
90 :width: 480 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
91 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
92 After selecting the STL file, entering a series description, and |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
93 clicking on the "*Import*" button, Orthanc creates a new DICOM |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
94 instance that embeds the STL file. Orthanc Explorer then automatically |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
95 opens the parent DICOM series containing the newly created DICOM STL |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
96 instance. A button entitled "*STL viewer*" can then be used to render |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
97 the STL: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
98 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
99 .. image:: stl/viewers.png |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
100 :align: center |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
101 :width: 480 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
102 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
103 Note how the STL plugin provides two viewers: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
104 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
105 * One `very basic custom viewer |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
106 <https://orthanc.uclouvain.be/hg/orthanc-stl/file/OrthancSTL-1.0/WebApplications/three.js>`__ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
107 with a small footprint that is directly built using the well-known |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
108 `Three.js library <https://en.wikipedia.org/wiki/Three.js>`__. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
109 |
1058
30c90ac3e3d6
fix link to Online 3D Viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1057
diff
changeset
|
110 * One slightly more advanced Web viewer that corresponds to `Online 3D |
30c90ac3e3d6
fix link to Online 3D Viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1057
diff
changeset
|
111 Viewer <https://github.com/kovacsv/Online3DViewer>`__ running in |
30c90ac3e3d6
fix link to Online 3D Viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1057
diff
changeset
|
112 `engine mode |
1057
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
113 <https://kovacsv.github.io/Online3DViewer/Page_Usage.html>`__. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
114 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
115 Here is a screenshot of a rendering using the Online3DViewer embedded |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
116 viewer: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
117 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
118 .. image:: stl/o3dv.png |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
119 :align: center |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
120 :width: 480 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
121 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
122 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
123 .. _stl_rt_struct: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
124 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
125 Create STL from RT-STRUCT |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
126 ^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
127 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
128 The plugin can also be used to create a STL model from DICOM structure |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
129 sets (RT-STRUCT) that are routinely used in the context of |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
130 radiotherapy and nuclear medicine. To this end, open a DICOM RT-STRUCT |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
131 series using Orthanc Explorer: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
132 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
133 .. image:: stl/rt-struct.png |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
134 :align: center |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
135 :width: 480 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
136 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
137 As can be seen in this screenshot, an interface opens to choose the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
138 structure set of interest, as well as the resolution of the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
139 intermediate 3D bitmap that will be used to create the STL mesh. After |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
140 clicking on the "*Generate*" button, just like if :ref:`attaching an |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
141 existing STL file <stl_attach>`, Orthanc Explorer will open the newly |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
142 created DICOM series and will propose to open a STL viewer. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
143 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
144 Internally, the 3D model is generated using the well-known `marching |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
145 cubes algorithm <https://en.wikipedia.org/wiki/Marching_cubes>`__, as |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
146 implemented by the `VTK library <https://en.wikipedia.org/wiki/VTK>`__ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
147 by Kitware. Additional technical details can be found in the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
148 `reference paper <https://doi.org/10.1145/3632047.3632051>`__. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
149 |
1056
89bb195dfbc0
starting stl documentation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1055
diff
changeset
|
150 |
1057
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
151 Create STL from binary NIfTI |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
152 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
153 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
154 .. highlight:: json |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
155 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
156 Besides converting :ref:`RT-STRUCT to STL <stl_rt_struct>`, it is also |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
157 possible to convert a `NIfTI |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
158 <https://en.wikipedia.org/wiki/Neuroimaging_Informatics_Technology_Initiative>`__ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
159 3D binary bitmap into a STL mesh. As this use case is very specific, |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
160 it must be explicitly enabled in the :ref:`configuration file of |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
161 Orthanc <configuration>` as follows:: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
162 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
163 { |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
164 "Plugins" : [ "libOrthancSTL.so" ], |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
165 "STL" : { |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
166 "EnableNIfTI" : true |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
167 } |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
168 } |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
169 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
170 If the ``EnableNIfTI`` option is present, a new button entitled |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
171 "*Attach NIfTI 3D model*" appears if opening an existing DICOM study: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
172 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
173 .. image:: stl/nifti.png |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
174 :align: center |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
175 :width: 480 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
176 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
177 This dialog box can be used to upload a NIfTI volume, and to generate |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
178 a 3D mesh with a specific resolution through the marching cubes |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
179 algorithm. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
180 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
181 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
182 REST API |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
183 -------- |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
184 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
185 Besides :ref:`extending the Orthanc Explorer user interface |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
186 <stl_orthanc_explorer>`, the STL plugin adds dedicated routes to the |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
187 REST API of Orthanc. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
188 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
189 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
190 DICOM-ization of STL files |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
191 ^^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
192 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
193 The creation of a DICOM instance that embeds an existing STL file can |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
194 be done using the ``/tools/create-dicom`` `route |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
195 <https://orthanc.uclouvain.be/api/#tag/System/paths/~1tools~1create-dicom/post>`__ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
196 in the built-in REST API of Orthanc (starting with version |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
197 1.12.1). This route can be used similarly to the :ref:`DICOM-ization |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
198 of PDF files <pdf>`, with the `data URI scheme |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
199 <https://en.wikipedia.org/wiki/Data_URI_scheme>`__ using ``model/stl`` |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
200 instead of ``application/pdf``. Here is a working example in Python 3: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
201 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
202 .. literalinclude:: stl/dicomize.py |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
203 :language: python |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
204 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
205 Note that if the ``Parent`` field is not provided, a new DICOM study |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
206 will be created. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
207 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
208 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
209 Extraction of STL from DICOM |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
210 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
211 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
212 .. highlight:: txt |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
213 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
214 The route ``/instances/{id}/stl`` can be used to extract a STL from a |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
215 DICOM instance embedding a STL file, where ``id`` is the :ref:`Orthanc |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
216 identifier <orthanc-ids>` of the DICOM instance. For instance:: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
217 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
218 $ curl http://localhost:8042/instances/a88c4c3f-8f2bd6fd-02080bed-92ab6817-2cb3c26e/stl > /tmp/liver.stl |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
219 $ meshlab /tmp/liver.stl |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
220 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
221 Evidently, an error is generated for DICOM instances that do not embed |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
222 a STL file. Note that ``meshlab`` is a well-known desktop application |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
223 to display STL file. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
224 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
225 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
226 Listing structures of a DICOM RT-STRUCT |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
227 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
228 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
229 .. highlight:: txt |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
230 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
231 The STL plugin provides the list of the names of the structures that |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
232 are part of a DICOM RT-STRUCT instance with :ref:`Orthanc identifier |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
233 <orthanc-ids>` ``id`` at route ``/stl/rt-struct/{id}``. For instance:: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
234 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
235 $ curl http://localhost:8042/stl/rt-struct/f0dc2345-8f627774-f66083ae-a14d781e-1187b513 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
236 [ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
237 "Esophagus", |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
238 "Heart", |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
239 "Lung_L", |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
240 "Lung_R", |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
241 "SpinalCord" |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
242 ] |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
243 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
244 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
245 Generating a STL mesh from RT-STRUCT |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
246 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
247 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
248 A DICOM RT-STRUCT instance can be converted into a DICOM STL instance |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
249 using the ``/stl/encode-rtstruct`` route provided by the STL plugin. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
250 Here is a sample Python script: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
251 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
252 .. literalinclude:: stl/rt-struct.py |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
253 :language: python |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
254 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
255 Note that contrarily to :ref:`the default user interface |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
256 <stl_rt_struct>`, this route can be used to encode multiple structure |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
257 sets as a single STL model. |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
258 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
259 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
260 Generating a STL mesh from NIfTI |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
261 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
262 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
263 Here is a sample Python 3 script to convert a NIfTI file as a DICOM |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
264 STL instance: |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
265 |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
266 .. literalinclude:: stl/nifti.py |
5a3c238575f8
documentation of stl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1056
diff
changeset
|
267 :language: python |
1070
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
268 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
269 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
270 Support for Nexus |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
271 ----------------- |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
272 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
273 Starting with release 1.1, the STL plugin provides support for the |
1071
63a3d4e82c2a
correct extensions of Nexus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1070
diff
changeset
|
274 DICOM-ization of 3D models encoded using the `Nexus file format (.NXS |
63a3d4e82c2a
correct extensions of Nexus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1070
diff
changeset
|
275 and .NXZ extensions) <https://vcg.isti.cnr.it/nexus/>`__. Nexus |
63a3d4e82c2a
correct extensions of Nexus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1070
diff
changeset
|
276 provides a way to publish large, **textured 3D models** over Internet, |
63a3d4e82c2a
correct extensions of Nexus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1070
diff
changeset
|
277 with **adaptive rendering** depending on the available network |
63a3d4e82c2a
correct extensions of Nexus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1070
diff
changeset
|
278 bandwidth. Nexus is notably popular for the preservation of **cultural |
63a3d4e82c2a
correct extensions of Nexus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1070
diff
changeset
|
279 heritage**. |
1070
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
280 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
281 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
282 The plugin ships the static HTML/CSS/JavaScript assets of the official |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
283 Nexus Web viewer, so that it can easily be opened right from Orthanc |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
284 Explorer, as depicted in the following screenshot: |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
285 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
286 .. image:: stl/nexus.png |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
287 :align: center |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
288 :width: 800 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
289 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
290 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
291 Internals |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
292 ^^^^^^^^^ |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
293 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
294 Because Nexus is not endorsed by the DICOM specification, the plugin |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
295 encapsulates the Nexus file using the `Raw Data IOD |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
296 <https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.37.3.html>`__. |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
297 The Nexus file is encoded as the ``(0x4205,0x1001)`` private DICOM |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
298 tag. |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
299 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
300 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
301 Configuration |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
302 ^^^^^^^^^^^^^ |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
303 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
304 .. highlight:: json |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
305 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
306 As it is non-standard, support for Nexus must be explicitly enabled in |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
307 the configuration file of Orthanc as follows:: |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
308 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
309 { |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
310 "Plugins" : [ "libOrthancSTL.so" ], |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
311 "STL" : { |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
312 "EnableNexus" : true |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
313 } |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
314 } |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
315 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
316 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
317 REST API |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
318 ^^^^^^^^ |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
319 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
320 The STL plugin extends the REST API with two routes that are dedicated |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
321 to the handling of Nexus files: |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
322 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
323 1. ``/stl/create-nexus`` can be used to DICOM-ize a Nexus file. This |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
324 route is a wrapper around the ``/tools/create-dicom`` |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
325 :ref:`standard route of Orthanc <image-dicomization>`. The Nexus |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
326 file must be provided as a `Base64 string |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
327 <https://en.wikipedia.org/wiki/Base64>`__ in the ``Content`` field |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
328 of the request. Here is a sample Python script:: |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
329 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
330 .. literalinclude:: stl/nexus.py |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
331 :language: python |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
332 |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
333 2. ``/instances/{id}/nexus`` provides access to a DICOM-ized Nexus |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
334 file by decapsulating it from the DICOM instance whose |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
335 :ref:`Orthanc identifier <orthanc-identifiers>` is |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
336 ``id``. Importantly, this route supports `HTTP range requests |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
337 <https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests>`__ |
55c44a245b09
documenting Nexus support in STL plugin 1.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1058
diff
changeset
|
338 for adaptive streaming of Nexus models over Internet. |