annotate Sphinx/source/faq/matlab.rst @ 95:065350232191

added reference to attachment ids used by the Osimis Web Viewer
author amazy
date Wed, 15 Mar 2017 10:31:26 +0100
parents cb712e9d9187
children 5ffea09f47a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 Interfacing with Matlab and Octave
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 ==================================
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 Thanks to the REST API of Orthanc, it is easy to access DICOM images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 from Matlab or Octave, as depicted in the following sample image:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 .. image:: ../images/Matlab.png
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 :align: center
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 :width: 470px
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 Both Matlab and Octave have access to HTTP servers thanks to their
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 built-in `urlread() function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 <http://nl.mathworks.com/help/matlab/ref/urlread.html>`__. Once must
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 simply install a Matlab/Octave library to decode JSON files. The
66
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
15 `JSONLab toolkit <https://github.com/fangq/jsonlab>`__ works perfectly
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
16 to this end.
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 .. highlight:: matlab
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 Using JSONlab, the following code will download and display a DICOM image::
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 SERIES = 'ae164c84-e5bd0366-ba937a6d-65414092-f294d6b6';
66
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
23 URL = 'http://demo.orthanc-server.com/';
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 # Get information about the instances in this DICOM series
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 instances = loadjson(urlread([ URL '/series/' SERIES '/instances' ]));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 # Select one slice from the series
66
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 34
diff changeset
29 instance = instances(1,1).ID
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31 # Decode the slice with Orthanc thanks to the "/matlab" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 slice = eval(urlread([ URL '/instances/' instance '/matlab' ]));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 # Compute the maximum value in this slice
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35 max(max(slice))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 # Display the slice
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 imagesc(slice)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 # Annotate the graph with the patient name and ID
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41 tags = loadjson(urlread([ URL '/instances/' instance '/tags?simplify' ]));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 title([ 'This is a slice from patient ' tags.PatientID ' (' tags.PatientName ')' ])