Dicom package: Difference between revisions
(→Features: replaced "nasty" with "possible" bug as I think it's gone) |
(→Questions: minor updates to clarify current implementation as answers) |
||
Line 51: | Line 51: | ||
*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). | **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. | ||
*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 62: | 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: | *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 | *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]] | [[Category:OctaveForge]] | ||
[[Category:Packages]] | [[Category:Packages]] |
Revision as of 23:37, 20 December 2011
At an early development stage. octave-forge svn
- Maintainer: Andy Buckle [1]
- Currently worked on by: Kris Thielemans
Supporting library
GCDM. You can usually get this via your package manager,e e.g. on Ubuntu
sudo apt-get install libgdcm2.0
Alternatively, build it yourself. Get the source with subversion.
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).
> mkdir gdcmbin > 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.
make install
On my system, I also had to add this to my ~/.bashrc.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Mingw32 is similar. Get openSSL: Win32 Openssl v1.0.0a Light
cmake -G "MinGW Makefile" -DGDCM_BUILD_SHARED_LIBS=ON ..\gdcm-2-0 mingw32-make all
Features
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)
- dicominfo (load metadata into octave struct. possible bug in SQ loading)
- dicomlookup (keyword <-> tag)
- dicomread (load pixel data, 2D or 3D int types. Does not yield colormaps, yet.)
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?
- 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.
- 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.
- 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. 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)