changeset 1590:7b963bccafef

updated README
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 22 Oct 2020 18:39:03 +0200
parents 8c5f9864545f
children 5887a4f8594b
files README README.md TODO
diffstat 3 files changed, 141 insertions(+), 165 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README	Thu Oct 22 18:39:03 2020 +0200
@@ -0,0 +1,139 @@
+Stone of Orthanc
+================
+
+General Information
+-------------------
+
+This repository contains the source code of Stone of Orthanc.
+
+Stone of Orthanc is a lightweight, cross-platform C++ framework for
+the rendering of medical images. It is a companion toolkit to the main
+Orthanc DICOM server. It notably features support for MPR (multiplanar
+reconstruction of volume images), PET-CT fusion, and accurate physical
+world coordinates.
+
+Stone of Orthanc can take advantage of OpenGL/WebGL to accelerate 2D
+rendering using the GPU. 3D operations such as reslicing are done
+using CPU.
+
+Stone of Orthanc is compatible with any GUI framework (such as Qt,
+wxWidgets, MFC...). The provided sample applications use the SDL
+framework.
+
+Very importantly, Stone of Orthanc is compatible with WebAssembly,
+which makes it suitable to render medical images in Web applications.
+
+As a library for medical imaging, Stone of Orthanc also comes with
+primitives to download, parse and handle DICOM images. These
+primitives can use either the REST API of the Orthanc server, or the
+DICOMweb protocol. Primitives to deal with radiotherapy or nuclear
+medicine studies are available as well (image fusion using layers).
+
+Besides the low-level Stone of Orthanc library, this repository also
+contains the Stone Web viewer. The Stone Web viewer is a
+fully-featured Web viewer that can be either used as a plugin to
+Orthanc, or as a standalone viewer if using DICOMweb.
+
+
+Comparison
+----------
+
+Stone of Orthanc is quite similar to two other well-known toolkits:
+
+* Cornerstone, a client-side JavaScript toolkit to display medical
+  images in Web browsers, by Chris Hafey <chafey@gmail.com>:
+  https://github.com/chafey/cornerstone
+
+  Contrarily to Cornerstone, Stone of Orthanc is written in C++ and
+  can be embedded into native, heavyweight applications.
+
+* VTK, a C++ toolkit for scientific visualization, by Kitware:
+  http://www.vtk.org/
+
+  Contrarily to VTK, Stone of Orthanc is much more simple, and only
+  uses the GPU for 2D rendering.
+
+
+Dependencies
+------------
+
+Stone of Orthanc is based upon the following projects:
+
+* Orthanc, a lightweight Vendor Neutral Archive (DICOM server):
+  http://www.orthanc-server.com/
+
+* Cairo and pixman, a cross-platform 2D graphics library:
+  https://www.cairographics.org/
+
+* Optionally, SDL, a cross-platform multimedia library:
+  https://www.libsdl.org/
+
+  On Ubuntu, you would use:
+
+  $ sudo apt-get install -y libcairo-dev libpixman-1-dev libsdl2-dev
+
+* Optionally, Emscripten, the official compiler for WebAssembly:
+  https://emscripten.org/
+
+
+Installation and usage
+----------------------
+
+Build instructions and usage details are available as part of the
+Orthanc Book:
+http://book.orthanc-server.com/developers/stone.html
+
+Stone of Orthanc comes with several sample applications in the
+"Applications/Samples" folder. Please check the
+"Applications/Samples/README.md" file for information on the samples
+building and running procedure.
+
+The source code of the Stone Web viewer is located in folder
+"Applications/StoneWebViewer".
+
+
+Technical information
+---------------------
+
+- For situations where OpenGL is not available, Stone of Orthanc comes
+  bundled with its own software-based rendering engine (based upon
+  cairo and pixman). This engine will use CPU hardware acceleration if
+  available (notably SSE2, SSSE3, and NEON instruction sets), but not
+  the GPU. This makes Stone a highly versatile framework that can run
+  even on low-performance platforms.
+
+- Stone of Orthanc is compatible with desktop software, with native
+  mobile apps and with Web applications. To achieve this
+  compatibility, the rendering loop of Stone of Orthanc is
+  single-threaded, and abstracts network transfers and other
+  asynchronous events thanks to a so-called "Oracle". The Oracle is
+  the place where architecture-specific operations/computations can
+  take place (for instance, multi-threading).
+
+
+Licensing
+---------
+
+Stone of Orthanc is licensed under the AGPLv3+ license.
+
+We also kindly ask scientific works and clinical studies that make use
+of Orthanc to cite Orthanc in their associated publications.
+Similarly, we ask open-source and closed-source products that make use
+of Orthanc to warn us about this use. You can cite our work using the
+following BibTeX entry:
+
+@Article{Jodogne2018,
+  author="Jodogne, S{\'e}bastien",
+  title="The {O}rthanc Ecosystem for Medical Imaging",
+  journal="Journal of Digital Imaging",
+  year="2018",
+  month="Jun",
+  day="01",
+  volume="31",
+  number="3",
+  pages="341--352",
+  issn="1618-727X",
+  doi="10.1007/s10278-018-0082-y",
+  url="https://doi.org/10.1007/s10278-018-0082-y"
+}
+
--- a/README.md	Thu Oct 22 16:59:23 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-Stone of Orthanc
-================
-
-General Information
--------------------
-
-This repository contains the source code of the Stone of Orthanc.
-
-Stone of Orthanc is a lightweight, cross-platform C++ framework for
-the CPU-based rendering of medical images. It notably features support
-for MPR (multiplanar reconstruction of volume images), PET-CT fusion,
-and accurate physical world coordinates.
-
-Stone of Orthanc comes bundled with its own software-based rendering
-engine (based upon pixman). This engine will use CPU hardware
-acceleration if available (notably SSE2, SSSE3, and NEON instruction
-sets), but not the GPU. This makes Stone a highly versatile framework
-that can run even on low-performance platforms. Note that Stone is
-able to display DICOM series without having to entirely store them in
-the RAM (i.e. frame by frame).
-
-Thanks to its standalone rendering engine, Stone of Orthanc is also
-compatible with any GUI framework (such as Qt, wxWidgets, MFC...). The
-provided sample applications use the SDL framework.
-
-Stone is conceived as a companion toolbox to the Orthanc VNA (vendor
-neutral archive, i.e. DICOM server). As a consequence, Stone will
-smoothly interface with Orthanc out of the box. Interestingly, Stone
-does not contain any DICOM toolkit: It entirely relies on the REST API
-of Orthanc to parse/decode DICOM images. However, thanks to the
-object-oriented architecture of Stone, it is possible to avoid this
-dependency upon Orthanc, e.g. to download DICOM datasets using
-DICOMweb.
-
-
-Comparison
-----------
-
-Pay attention to the fact that Stone of Orthanc is a toolkit, and not
-a fully-featured application for the visualization of medical images
-(such as Horos/OsiriX or Ginkgo CADx). However, such applications
-can be built on the top of Stone of Orthanc.
-
-Stone of Orthanc is quite similar to two other well-known toolkits:
-
-* Cornerstone, a client-side JavaScript toolkit to display medical
-  images in Web browsers, by Chris Hafey <chafey@gmail.com>:
-  https://github.com/chafey/cornerstone
-
-  Contrarily to Cornerstone, Stone of Orthanc can be embedded into
-  native, heavyweight applications.
-
-* VTK, a C++ toolkit for scientific visualization, by Kitware:
-  http://www.vtk.org/
-
-  Contrarily to VTK, Stone of Orthanc is focused on CPU-based, 2D
-  rendering: The GPU will not be used.
-
-
-Dependencies
-------------
-
-Stone of Orthanc is based upon the following projects:
-
-* Orthanc, a lightweight Vendor Neutral Archive (DICOM server):
-  http://www.orthanc-server.com/
-
-* Cairo and pixman, a cross-platform 2D graphics library:
-  https://www.cairographics.org/
-
-* Optionally, SDL, a cross-platform multimedia library:
-  https://www.libsdl.org/
-
-Prerequisites to compile natively on Ubuntu: 
-```
-sudo apt-get install -y libcairo-dev libpixman-1-dev libsdl2-dev
-```
-
-The emscripten SDK is required for the WASM build. Please install it
-in `~/apps/emsdk`. If you wish to use it in another way, please edit
-the `build-wasm.sh` file.
-
-ninja (`sudo apt-get install -y ninja-build`) is used instead of make, for performance reasons.
-
-Installation and usage ----------------------
-
-Build instructions are similar to that of Orthanc:
-http://book.orthanc-server.com/faq/compiling.html
-
-Usage details are available as part of the Orthanc Book:
-http://book.orthanc-server.com/developers/stone.html
-
-Stone of Orthanc comes with several sample applications in the
-`Samples` folder.
-
-Please see the Samples/README.md file for information on the samples building
-and running procedure.
-
-
-Licensing
----------
-
-Stone of Orthanc is licensed under the AGPL license.
-
-We also kindly ask scientific works and clinical studies that make
-use of Orthanc to cite Orthanc in their associated publications.
-Similarly, we ask open-source and closed-source products that make
-use of Orthanc to warn us about this use. You can cite our work
-using the following BibTeX entry:
-
-@Article{Jodogne2018,
-  author="Jodogne, S{\'e}bastien",
-  title="The {O}rthanc Ecosystem for Medical Imaging",
-  journal="Journal of Digital Imaging",
-  year="2018",
-  month="Jun",
-  day="01",
-  volume="31",
-  number="3",
-  pages="341--352",
-  issn="1618-727X",
-  doi="10.1007/s10278-018-0082-y",
-  url="https://doi.org/10.1007/s10278-018-0082-y"
-}
-
--- a/TODO	Thu Oct 22 16:59:23 2020 +0200
+++ b/TODO	Thu Oct 22 18:39:03 2020 +0200
@@ -7,30 +7,14 @@
 -------
 
 * Documentation
-* Interface with DICOMweb
-* LayoutPetCtFusionApplication: fix initial view
-
-
----------------------------------
-Radiotherapy and nuclear medicine
----------------------------------
-
-* Project RT-STRUCT in sagittal + coronal views
-* Speedup RT-STRUCT loading
-* Automatic segmentation + manual contouring
-* Display segments in mask
 
 
 -------------
 Optimizations
 -------------
 
-* Tune number of loading threads in LayeredSceneWidget
-* LayoutWidget: Do not update full background if only 1 widget has changed
-* LayoutWidget: Threads to refresh each child
-* Implement binary search to speed up search for closest slice
-* Avoid the creation of new threads when updating the frame factory
-  (as seen with gdb)
+* Speedup RT-STRUCT projection in sagittal + coronal views
+* Speedup RT-STRUCT loading
 
 
 -----------------
@@ -38,25 +22,3 @@
 -----------------
 
 * Add precompiled headers for Microsoft Visual Studio
-* Investigate crash in CurlOrthancConnection if using MinGW32 in Release mode
-
-
----------------------
-Source code cosmetics
----------------------
-
-* Use "SampleInteractor::AddWidget()" in all samples
-
-
----------
-Packaging
----------
-
-* Publish history of code size on Web site
-
-
-------
-Future
-------
-
-* Create a wrapper for Python