Editing Dicom package

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
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.
+
At an early development stage. [http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/dicom/ octave-forge svn]
 +
*Maintainer: Andy Buckle [http://sourceforge.net/sendmessage.php?touser=1760416contact]
 +
*Currently worked on by: Kris Thielemans
  
== What is the aim of this package? ==
+
===Supporting library===
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.
+
[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
 
 
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 git.
+
Alternatively, build it yourself. Get the source with subversion.
  
  git clone https://git.code.sf.net/p/gdcm/gdcm
+
  svn co https://gdcm.svn.sourceforge.net/svnroot/gdcm/branches/gdcm-2-0
  
 
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 47: Line 33:
 
  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.
+
===Features===
 
 
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 57: Line 39:
 
*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.
  
 
*Octave (and Matlab) stores images (y,x) and DICOM is intrinsically (x,y). Does Matlab transpose images when it loads them?
 
*Octave (and Matlab) stores images (y,x) and DICOM is intrinsically (x,y). Does Matlab transpose images when it loads them?
**matlab reads the data from the dicom file as if it's a raw block of numbers (and then converts if necessary). We think that current Octave/dicom behaviour is compatible with matlab.  
+
**matlab reads the data from the dicom file as if it's a raw block of numbers (and then converts if necessary). Therefore, current Octave/dicom behaviour is compatible with matlab.  
 
*I would like people to try m-files that worked with Matlab to let me know of problems.
 
*I would like people to try m-files that worked with Matlab to let me know of problems.
 
*(not necessarily) Matlab related: I need examples of odd DICOM files. I have plenty with complex metadata, but I need some with unusual images.
 
*(not necessarily) Matlab related: I need examples of odd DICOM files. I have plenty with complex metadata, but I need some with unusual images.
Line 80: Line 62:
 
**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: skip it or give error? I was wondering about turning the tag into a variable name, something like Tag_3243_0010. (Matlab 6.5 (2002): Private__3243_0010)
 +
*dicominfo: Items in sequences are not necessarily the same, so cannot be stored in arrays of structs. (Matlab 6.5 (2002): makes nested structs like dcm.RTDoseROISequence?.Item_1.DoseUnits?)
  
== Answered ==
+
[[Category:OctaveForge]]
*dicominfo: Items in sequences are not necessarily the same, so are stored as nested structs like dcm.RTDoseROISequence.Item_1.DoseUnits(as Matlab)
+
[[Category:Packages]]
*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]]
 

Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)

Templates used on this page: