Mercurial > hg > orthanc-book
view Sphinx/source/faq/matlab.rst @ 1013:ab270400aae1
python: overriding core API
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 09 Jan 2024 11:50:17 +0100 |
parents | 1316bc62b5d5 |
children |
line wrap: on
line source
.. _matlab: Interfacing with Matlab and Octave ================================== Thanks to the REST API of Orthanc, it is easy to access DICOM images from Matlab or Octave, as depicted in the following sample image: .. image:: ../images/Matlab.png :align: center :width: 470px Both Matlab and Octave have access to HTTP servers thanks to their built-in `urlread() function <https://nl.mathworks.com/help/matlab/ref/urlread.html>`__. Once must simply install a Matlab/Octave library to decode JSON files. The `JSONLab toolkit <https://github.com/fangq/jsonlab>`__ works perfectly to this end. .. highlight:: matlab Using JSONlab, the following code will download and display a DICOM image:: SERIES = 'ae164c84-e5bd0366-ba937a6d-65414092-f294d6b6'; URL = 'https://orthanc.uclouvain.be/demo/'; # Get information about the instances in this DICOM series instances = loadjson(urlread([ URL '/series/' SERIES '/instances' ])); # Select one slice from the series instance = instances{1}.ID # Decode the slice with Orthanc thanks to the "/matlab" URI slice = eval(urlread([ URL '/instances/' instance '/matlab' ])); # Compute the maximum value in this slice max(max(slice)) # Display the slice imagesc(slice) # Annotate the graph with the patient name and ID tags = loadjson(urlread([ URL '/instances/' instance '/tags?simplify' ])); title([ 'This is a slice from patient ' tags.PatientID ' (' tags.PatientName ')' ]) Opening the raw DICOM file -------------------------- Here is another sample Matlab/Octave script explaining how to download the raw DICOM file corresponding to one given instance stored in Orthanc, then decode this DICOM file using Matlab/Octave:: SERIES = 'ae164c84-e5bd0366-ba937a6d-65414092-f294d6b6'; URL = 'https://orthanc.uclouvain.be/demo/'; # Get information about the instances in this DICOM series instances = loadjson(urlread([ URL '/series/' SERIES '/instances' ])); # Select one slice from the series instance = instances{1}.ID # Download the raw DICOM file and store it as a file named "instance.dcm" urlwrite([ URL '/instances/' instance '/file' ], 'instance.dcm'); if exist('OCTAVE_VERSION', 'builtin') ~= 0 # If running Octave instead of Matlab, load the "dicom" package from Octave Forge pkg load image pkg load dicom endif # Decode the downloaded DICOM file im = dicomread('instance.dcm'); imagesc(im) .. highlight:: bash **Note:** If running Octave, you will have to manually install the `dicom package from Octave Forge <https://octave.sourceforge.io/dicom/index.html>`__. Download the source code of the package, make sure the ``libgdcm2-dev`` and ``octave-image`` packages are installed (for Ubuntu 16.04), then type the following command to install the ``dicom`` package:: $ octave --no-gui --eval "pkg install ./dicom-0.2.0.tar.gz"