1,847
edits
Andybuckle (talk | contribs) (link to auto-docs) |
(Unified layout. Revisit links https.) |
||
(16 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
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. | |||
== What is the aim of this package? == | == What is the aim of this package? == | ||
Line 10: | Line 6: | ||
This package provides functions to read and (eventually) write DICOM files. The functions in the package are intended to have similar usage as | 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. | 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== | ==Supporting library== | ||
[http://sourceforge.net/ | [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 | Alternatively, build it yourself. Get the source with git. | ||
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 40: | Line 46: | ||
cmake -G "MinGW Makefile" -DGDCM_BUILD_SHARED_LIBS=ON ..\gdcm-2-0 | cmake -G "MinGW Makefile" -DGDCM_BUILD_SHARED_LIBS=ON ..\gdcm-2-0 | ||
mingw32-make all | mingw32-make all | ||
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== | ==Features== | ||
Line 47: | 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 | ||
==Questions== | ==Questions== | ||
Line 70: | 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? | ||
[[ | == Answered == | ||
[[Category: | *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]] |