Line 1: |
Line 1: |
− | At an early development stage. [http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/dicom/ octave-forge svn]
| + | The {{Forge|dicom}} package is part of the [[Octave Forge]] project. The package is at an early development stage and it is maintained by Andy Buckle with contributions by Judd Storrs and Kris Thielemans. |
− | *Maintainer: Andy Buckle [http://sourceforge.net/sendmessage.php?touser=1760416contact]
| |
− | *Currently worked on by: Kris Thielemans
| |
| | | |
− | ===Supporting library=== | + | == What is the aim of this package? == |
− | [http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=Main_Page GCDM]. You can usually get this via your package manager,e e.g. on Ubuntu | + | Digital communications in medicine (DICOM) is an information standard. Originally created for image transfer, the standard now deals with an large range of medical data. See http://medical.nema.org/ for more info. |
| + | |
| + | This package provides functions to read and (eventually) write DICOM files. The functions in the package are intended to have similar usage as |
| + | the dicom functions in the Matlab Image Processing Toolbox. In Octave they are separate: most image package users will not use dicom, and its dependency might be considered troublesome. |
| + | |
| + | == Platforms == |
| + | |
| + | {{Warning|The information of this section needs be reviewed (June 2019).}} |
| + | *Linux. Tested on OpenSuSE 11.4 and Ubuntu. No known issues. GDCM is required: see below. |
| + | *mingw |
| + | **Ben Lindner's Octave 3.2.4 and the mingw build environment (gcc 4.4.0): dicom package 0.1.1 does not build against this older version of the Octave API. |
| + | **Tatsuro/Nitzan's Octave 3.4.3 and mingw build environment (gcc 4.5.2): gdcm and dicom package build OK. Get segfault in ntdll.dll when one of the dicom*.oct files calls something from a gdcm*.dll. |
| + | **mxe-octave: dicom and gdcm distributed as part of the installed package. |
| + | *Cygwin: Panic when oct file called (or maybe when oct file uses gdcm dll). Need to try rebaseall |
| + | |
| + | ==Supporting library== |
| + | [http://gdcm.sourceforge.net/wiki/index.php/Main_Page GDCM]. You can usually get this via your package manager, e.g. on Ubuntu |
| | | |
| sudo apt-get install libgdcm2.0 | | sudo apt-get install libgdcm2.0 |
| | | |
− | Alternatively, build it yourself. Get the source with subversion. | + | Alternatively, build it yourself. Get the source with git. |
| | | |
− | svn co https://gdcm.svn.sourceforge.net/svnroot/gdcm/branches/gdcm-2-0 | + | git clone https://git.code.sf.net/p/gdcm/gdcm |
| | | |
| cmake and g++ are required. create a gdcmbin directory parallel to the gdcm-2-0 directory. Change to gdcmbin and then run cmake (Linux/cygwin). | | cmake and g++ are required. create a gdcmbin directory parallel to the gdcm-2-0 directory. Change to gdcmbin and then run cmake (Linux/cygwin). |
Line 33: |
Line 47: |
| mingw32-make all | | mingw32-make all |
| | | |
− | ===Features=== | + | On Cygwin gdcm 2.0.18 (and maybe some other versions) may have a problem with newer cmake. This kludge persuades cmake to define WIN32. |
| + | |
| + | cmake -DGDCM_BUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER=g++.exe -DCMAKE_LEGACY_CYGWIN_WIN32=1 ../gdcm-2.0.18/ |
| + | |
| + | ==Features== |
| All of these still need work, but they exist, and are usable to some extent. | | All of these still need work, but they exist, and are usable to some extent. |
| *dicomdict (load different dict - file follows same format as Matlab's) | | *dicomdict (load different dict - file follows same format as Matlab's) |
Line 39: |
Line 57: |
| *dicomlookup (keyword <-> tag) | | *dicomlookup (keyword <-> tag) |
| *dicomread (load pixel data, 2D or 3D int types. Does not yield colormaps, yet.) | | *dicomread (load pixel data, 2D or 3D int types. Does not yield colormaps, yet.) |
| + | *dicomwrite (write pixel data to a DICOM format file) |
| + | *dicomuid (generate a DICOM unique id) |
| + | *isdicom (verify if a file is a DICOM formatted file) |
| | | |
− | ===Todo===
| + | ==Todo== |
| | | |
| *dicomanon | | *dicomanon |
− | *dicomuid
| |
− | *dicomwrite
| |
− | *isdicom
| |
| | | |
− | ===Questions===
| + | ==Questions== |
| I don't have a Matlab license available. I would like to make this package compatible with the dicom functions in Matlab's image processing toolbox, as far as possible. | | I don't have a Matlab license available. I would like to make this package compatible with the dicom functions in Matlab's image processing toolbox, as far as possible. |
| | | |
Line 62: |
Line 80: |
| **silently convert the metadata to match the pixel type? | | **silently convert the metadata to match the pixel type? |
| **error and do nothing? | | **error and do nothing? |
− | *What does dicominfo do when a tag is not in its dictionary. Answer: assign to a field like Private_3243_0010 (as Matlab)
| |
− | *dicominfo: Items in sequences are not necessarily the same, so are stored as nested structs like dcm.RTDoseROISequence?.Item_1.DoseUnits?(as Matlab)
| |
| | | |
− | [[Category:OctaveForge]] | + | == Answered == |
− | [[Category:Packages]] | + | *dicominfo: Items in sequences are not necessarily the same, so are stored as nested structs like dcm.RTDoseROISequence.Item_1.DoseUnits(as Matlab) |
| + | *What does dicominfo do when a tag is not in its dictionary? Answer: assign to a field like Private_3243_0010 (as Matlab) |
| + | |
| + | == See also == |
| + | * {{Forge|dicom}} at [[Octave Forge]]. |
| + | * [https://sourceforge.net/projects/gdcm/ Grassroots DICOM]. |
| + | |
| + | [[Category:Octave Forge]] |