annotate README @ 339:5a7915b23138 am-2

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 19 Oct 2018 14:44:12 +0200
parents b04b13810540
children 4d8ac609fc33 64d90190a08c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 Stone of Orthanc
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 ================
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 General Information
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 -------------------
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 This repository contains the source code of the Stone of Orthanc.
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 Stone of Orthanc is a lightweight, cross-platform C++ framework for
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 the CPU-based rendering of medical images. It notably features support
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 for MPR (multiplanar reconstruction of volume images), PET-CT fusion,
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 and accurate physical world coordinates.
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 Stone of Orthanc comes bundled with its own software-based rendering
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 engine (based upon pixman). This engine will use CPU hardware
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 acceleration if available (notably SSE2, SSSE3, and NEON instruction
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 sets), but not the GPU. This makes Stone a highly versatile framework
9
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
19 that can run even on low-performance platforms. Note that Stone is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
20 able to display DICOM series without having to entirely store them in
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
21 the RAM (i.e. frame by frame).
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
22
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
23 Thanks to its standalone rendering engine, Stone of Orthanc is also
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
24 compatible with any GUI framework (such as Qt, wxWidgets, MFC...). The
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
25 provided sample applications use the SDL framework.
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26
9
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
27 Stone is conceived as a companion toolbox to the Orthanc VNA (vendor
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
28 neutral archive, i.e. DICOM server). As a consequence, Stone will
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
29 smoothly interface with Orthanc out of the box. Interestingly, Stone
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
30 does not contain any DICOM toolkit: It entirely relies on the REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
31 of Orthanc to parse/decode DICOM images. However, thanks to the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
32 object-oriented architecture of Stone, it is possible to avoid this
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
33 dependency upon Orthanc, e.g. to download DICOM datasets using
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4
diff changeset
34 DICOMweb.
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 Comparison
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 ----------
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 Pay attention to the fact that Stone of Orthanc is a toolkit, and not
1
2dbe613f6c93 add orthanc core
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
41 a fully-featured application for the visualization of medical images
2dbe613f6c93 add orthanc core
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
42 (such as Horos/OsiriX or Ginkgo CADx). However, such applications
2dbe613f6c93 add orthanc core
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
43 could be built on the top of Stone of Orthanc.
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 Stone of Orthanc is quite similar to two other well-known toolkits:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 * Cornerstone, a client-side JavaScript toolkit to display medical
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48 images in Web browsers, by Chris Hafey <chafey@gmail.com>:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49 https://github.com/chafey/cornerstone
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 Contrarily to Cornerstone, Stone of Orthanc can be embedded into
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 native, heavyweight applications.
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 * VTK, a C++ toolkit for scientific visualization, by Kitware:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 http://www.vtk.org/
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 Contrarily to VTK, Stone of Orthanc is focused on CPU-based, 2D
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 rendering: The GPU will not be used.
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 Dependencies
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 ------------
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 Stone of Orthanc is based upon the following projects:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 * Orthanc, a lightweight Vendor Neutral Archive (DICOM server):
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 http://www.orthanc-server.com/
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 * Cairo and pixman, a cross-platform 2D graphics library:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 https://www.cairographics.org/
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 * Optionally, SDL, a cross-platform multimedia library:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 https://www.libsdl.org/
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74
222
84844649a8fd continued: reusable applications
am@osimis.io
parents: 211
diff changeset
75 Prerequisites to compile on Ubuntu:
84844649a8fd continued: reusable applications
am@osimis.io
parents: 211
diff changeset
76 ```
84844649a8fd continued: reusable applications
am@osimis.io
parents: 211
diff changeset
77 sudo apt-get install -y libcairo-dev libpixman-1-dev libsdl2-dev
84844649a8fd continued: reusable applications
am@osimis.io
parents: 211
diff changeset
78 ```
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 Installation and usage
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 ----------------------
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 Build instructions are similar to that of Orthanc:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84 https://orthanc.chu.ulg.ac.be/book/faq/compiling.html
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
85
41
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 9
diff changeset
86 Usage details are available as part of the Orthanc Book:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 9
diff changeset
87 http://book.orthanc-server.com/developers/stone.html
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 9
diff changeset
88
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 Stone of Orthanc comes with several sample applications in the
264
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
90 "Samples" folder. These samples can be compiled into Web Assembly
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
91 or into native SDL applications.
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
92
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
93 to build the WASM samples:
265
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
94 -------------------------
264
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
95 ```
295
b04b13810540 unified CMakeLists.txt into a single file for WASM/Native + bootstrap Command (to rework) + doc
am@osimis.io
parents: 265
diff changeset
96 cd ~/orthanc-stone/Applications/Samples
264
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
97 ./build-wasm.sh
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
98 ```
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
99
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
100 to serve the WASM samples:
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
101 ```
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
102 # launch an Orthanc listening on 8042 port:
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
103 Orthanc
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
104
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
105 # launch an nginx that will serve the WASM static files and reverse proxy Orthanc
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
106 sudo nginx -p $(pwd) -c nginx.local.conf
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
107 ```
6b98ac45aaee documented how to compile and execute WASM samples
am@osimis.io
parents: 222
diff changeset
108 Now, you can open the samples in http://localhost:9977
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109
265
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
110 to build the SDL native samples (SimpleViewer only):
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
111 -------------------------------
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
112 ```
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
113 mkdir -p ~/builds/orthanc-stone-build
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
114 cd ~/builds/orthanc-stone-build
295
b04b13810540 unified CMakeLists.txt into a single file for WASM/Native + bootstrap Command (to rework) + doc
am@osimis.io
parents: 265
diff changeset
115 cmake -DALLOW_DOWNLOADS=ON -DENABLE_SDL=ON ~/orthanc-stone/Applications/Samples/
265
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
116 cmake --build . --target OrthancStoneSimpleViewer -- -j 5
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
117 ```
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
118
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
119 to execute the native samples:
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
120 ```
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
121 # launch an Orthanc listening on 8042 port:
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
122 Orthanc
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
123
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
124 # launch the sample
295
b04b13810540 unified CMakeLists.txt into a single file for WASM/Native + bootstrap Command (to rework) + doc
am@osimis.io
parents: 265
diff changeset
125 ./OrthancStoneSimpleViewer --studyId=XX
265
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
126 ```
30dc6e383b0b documented how to build the native sample
am@osimis.io
parents: 264
diff changeset
127
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
128
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
129 Licensing
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
130 ---------
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
131
49
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 41
diff changeset
132 Stone of Orthanc is licensed under the AGPL license.
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134 We also kindly ask scientific works and clinical studies that make
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 use of Orthanc to cite Orthanc in their associated publications.
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 Similarly, we ask open-source and closed-source products that make
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137 use of Orthanc to warn us about this use. You can cite our work
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 using the following BibTeX entry:
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139
210
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
140 @Article{Jodogne2018,
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
141 author="Jodogne, S{\'e}bastien",
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
142 title="The {O}rthanc Ecosystem for Medical Imaging",
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
143 journal="Journal of Digital Imaging",
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
144 year="2018",
211
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
145 month="Jun",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
146 day="01",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
147 volume="31",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
148 number="3",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 210
diff changeset
149 pages="341--352",
210
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
150 issn="1618-727X",
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
151 doi="10.1007/s10278-018-0082-y",
101e487cd154 updated bibtex
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 49
diff changeset
152 url="https://doi.org/10.1007/s10278-018-0082-y"
0
351ab0da0150 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 }