Dicom package: Difference between revisions

From Octave
Jump to navigation Jump to search
(→‎Todo: added isdicom)
No edit summary
 
(25 intermediate revisions by 10 users not shown)
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 currently maintained by John Donoghue.
*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.


sudo apt-get install libgdcm2.0
This package provides functions to read and 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.


Alternatively, build it yourself. Get the source with subversion.
= Installation =


svn co https://gdcm.svn.sourceforge.net/svnroot/gdcm/branches/gdcm-2-0
== package requirements ==


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).
The {{Forge|dicom}} package requires the [[http://gdcm.sourceforge.net/wiki/index.php/Main_Page GDCM]] libraries and include files to be installed in order to compile.


> mkdir gdcmbin
for fedora: yum install gdcm-devel
> ls
gdcmbin gdcm-2-0
> cd gdcmbin
> cmake -DGDCM_BUILD_SHARED_LIBS=ON ../gdcm-2-0/


This creates a Makefile in your gdcmbin directory. You can easily edit cmake options with "make edit_cache", for example to build applications like gdcmdump. "make help" is also very useful.
for ubuntu: apt install libgdcm-dev


make install


On my system, I also had to add this to my ~/.bashrc.
== octave installation ==


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
From octave commmand line:


Mingw32 is similar. Get openSSL: [http://www.slproweb.com/products/Win32OpenSSL.html Win32 Openssl v1.0.0a Light]
>> pkg install -forge dicom


cmake -G "MinGW Makefile" -DGDCM_BUILD_SHARED_LIBS=ON ..\gdcm-2-0
== Using it ==
mingw32-make all


===Features===
Load it before any usage:
All of these still need work, but they exist, and are usable to some extent.
 
>> pkg load dicom
 
 
=Features=
The following functions are available:
*dicomdict (load different dict - file follows same format as Matlab's)
*dicomdict (load different dict - file follows same format as Matlab's)
*dicominfo (load metadata into octave struct. nasty bug in SQ loading)
*dicominfo (load metadata into octave struct)
*dicomdisp (Display the structure of a dicom file)
*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)
*dicomanon(anonomize a file)
*dicomfind(find an attribute in a file or dicom struct)
*dicomupdate(Update an attribute value in a dicom struct)


===Todo===
*dicomanon
*dicomuid
*dicomwrite
*isdicom
===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.


*Octave (and Matlab) stores images (y,x) and DICOM is intrinsically (x,y). Does Matlab transpose images when it loads them?
= See also =
**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.  
* {{Forge|dicom}} at [[Octave Forge]].
*I would like people to try m-files that worked with Matlab to let me know of problems.
* [https://sourceforge.net/projects/gdcm/ Grassroots DICOM].
*(not necessarily) Matlab related: I need examples of odd DICOM files. I have plenty with complex metadata, but I need some with unusual images.
**More than one sample per pixel
**Colour
**Float types
*DA (date) VR: does Matlab turn them into a string?
*if the user supplies metadata (eg HighBit?, BitsStored?) that describe the type of the pixels and this is not in agreement with the type of the image matrix supplied, does Matlab
**silently convert the image pixel type to match the metadata?
**silently convert the metadata to match the pixel type?
**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?)


[[Category:OctaveForge]]
[[Category:Octave Forge]][[Category:Packages]]
[[Category:Packages]]

Latest revision as of 20:54, 1 July 2022

The dicom package is part of the Octave Forge project. The package is currently maintained by John Donoghue.

What is the aim of this package?[edit]

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 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.

Installation[edit]

package requirements[edit]

The dicom package requires the [GDCM] libraries and include files to be installed in order to compile.

for fedora: yum install gdcm-devel

for ubuntu: apt install libgdcm-dev


octave installation[edit]

From octave commmand line:

>> pkg install -forge dicom

Using it[edit]

Load it before any usage:

>> pkg load dicom


Features[edit]

The following functions are available:

  • dicomdict (load different dict - file follows same format as Matlab's)
  • dicominfo (load metadata into octave struct)
  • dicomdisp (Display the structure of a dicom file)
  • dicomlookup (keyword <-> tag)
  • 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)
  • dicomanon(anonomize a file)
  • dicomfind(find an attribute in a file or dicom struct)
  • dicomupdate(Update an attribute value in a dicom struct)


See also[edit]