General questions

From GDCM Wiki
Jump to: navigation, search


What is GDCM?

It is a DICOM library which mostly focus on the visualization part of DICOM.

What is DICOM ?

Official Reference:

A short presentation:

Can I use GDCM for both proprietary projects, and GPL'ed projects?

Yes. GDCM is release under a new BSD license. So you can even repackage it, sell it and make profit !

We cannot accept GPL contribution in the GDCM repository since this would break the BSD license.

Last but not least, even if the license does not enforce it, it is suggested that bug are reported so that this is integrated in the main repository.

Is there support?

Some people offer commercial support, for instance:

Otherwise, for free support, all you can hope is that someone on the mailing list answer your questions. See below for info on mailing list.

Where are the GDCM mailing lists ?

For now there is only one mailing list for GDCM 2.x users and developers, you can subscribe it here:

If you are already a gdcm hackers or a GSoC participant, please use instead:

If you want to follow the current development, you should subscribe to the git commit list:

Can I post to the dicom newsgroup instead ?


Short answer: No ! The DICOM newsgroup is a general purpose newsgroup where you can ask about DICOM in general, not about a specific implementation such as GDCM. Please refrain from using this newsgroup.

GDCM 1.x

If you are a legacy GDCM 1.x user, please send your question to:

Can I donate to GDCM ?

Yes. See the donate page for that:

Donations will be used for software/hardware/etc. needs of the GDCM developers. 5% goes to the Electronic Frontier Foundation (EFF).

How should I ask questions on the mailing lists?

The best online resource for this question is Eric S. Raymond's excellent guide on the topic titled "How to ask questions the smart way". Read it here:

Please do read it and follow his advice. Thanks!

Please also remember the following when you post your messages to the GDCM mailing lists.

  • Mention the version of GDCM you are using and the version of the compiler or scripting language you are using.
  • Mention your platform, OS and their versions.
  • Include hardware details if relevant.
  • Include all relevant error messages (appropriately trimmed of course).
  • Avoid HTML emails.
  • Remember to post to the list instead of private email, this is your best guarantee to get an answer. By default gdcm ML are not set to replace the Reply-To header, so always double-check your email is going to the mailing list.
  • Use a sensible and descriptive subject line. Avoid subject which start with 'HELP!!!'
  • Do NOT post large data files or images to the list. Instead put them in your web page and mention the URLs.
  • Quote the messages you reply to appropriately. Remove unnecessary details. Avoid top-posting.

When asking a question or reporting a problem try to include a small example program that demonstrates the problem. Make sure that this example program is as small as you can make it, simple (and uses GDCM alone), complete and demonstrates the problem adequately. Doing this will go a long way towards getting a quick and meaningful response.

Sometimes you might not get any acceptable response. This happens because the others think the question has either been already answered elsewhere (the archives, FAQ and google are your friends), or believe that you have not done enough homework to warrant their attention, or they don't know the answer or simply don't have the time to answer. Please do be patient and understanding. Most questions are answered by people volunteering their time to help you.

Happy posting!

How do I get write access to the wiki

Q: I have tried editing the wiki but it does not work !

A: You neeed to post your login account details on the mailing list to get write access to the wiki. By default restrict write access.

Who uses GDCM?

See the Third Party Applications page

What platforms are supported by GDCM?

  • GNU/Linux (most distro should work out of the box, if not all)
  • WinXP, Vista, Win7 (32/64bits)
  • MacOSX

How does GDCM support platform-specific features?

Very little code is needed to achieve cross platform support. Basically the code is split in two part: POSIX and Win32.

Does GDCM use STL?

Yes plenty of it ! Iterators are awsome ! At one point Boost was even under consideration.

How is GDCM being developed?

This is mostly agile development if you need to name it. See you nightly dashboard at:

How is GDCM distributed?

You can download releases here.

If you prefer to live on the edge, get the latest development:

$ git clone git://

Read only copy on github

In case the would not be working for you, you can grab gdcm using the read-only github repository at:

If you do not have a UNIX type environment, you can get tarball via the interface:

What about wrapped langage?

Python/C# and Java are our main wrapped language. Since we use swig this should not be too hard to support another language that is supported by swig.

We also have experimental support for:

  • php

How can I help the project?

  • We need more dashboard
  • We need code review
  • We need more feedback !

Join us on the mailing list:

I found a bug, what should I do ?

Simply reporting it on the mailing list is enough. Once the bug/feature request has been acknowledged you can (and should!) add it to either the bug tracker:

or the feature request tracker:

If you do not log the bug/feature request, it might get lost, and your issue might never be fixed.

If you are a good programmer, you can even send the patch to the mailing list for integration. See Rules for GDCM Contributors for the basic idea, on how to prepare a patch.

Keep in mind, that without YOU, GDCM will not evolve !

I have prepared a 5000 lines patch for GDCM, is it going to be accepted ?

Probably not, if you read post for the Linux kernel, you'll see that you should start small, and the progressively as you become known, start doing larger and larger patch.

Don't think we are arrogant people, but you should start communicating early on, instead of working only on your side.

Does GDCM support parallel installation ?

Yes. We followed documentation from:


How do I convert my raster image format X into DICOM ?

Raster image format generally have enough information so that image is displayed correctly, but they are missing required information (Type 1) such as Patient Info to build a valid DICOM file. So in the general sense there is no direct (easy) way of creating DICOM file from raster image format. Some format such as TIFF, Zeiss, DEFF/DSR do have some private extension that allow slightly easier conversion. What happen most of the time when converting from DICOM to raster image format X to DICOM is that information such as: - X,Y spacing is lost (BMP does not have spacing) - Z spacing is lost (JPG only has X,Y spacing) - Direction Cosines is lost (orientation of image is not support in any raster file format)

DICOM is not just simply yet-another image format. It is a document, with an history, with patient related information...



GDCM support some conversions. For instance see the gdcmimg or gdcm2vtk tool. Or since GDCM offer a mechanism to convert image to vtkImageData back and forth, any image supported by VTK can be written to DICOM. Same is true for ITK.

What is gdcmData ?

gdcmData is the main repository for our regression dashboard. It can be accessed online:

Using the git command line:

or directly:

$ git clone git://

Note: if you use git clone --recursive (see Git) to retrieve GDCM, then you do not need to explicitely download gdcmData.

Note: gdcmData is now called gdcmdata (lower case), since new does not support uppercase mount point.

What is gdcmData (advanced!)

All those DICOM files can be also be retrieved via file server:

If you decide to choose this download mechanism, be sure to check the date of the tarball as it is updated anytime a new image is added to the repository

For rsync fan, you can also access the gzip tarball using:

$ rsync -avH .

or if you prefer higher compression ratio (bzip2 tarball):

$ rsync -avH .

What is gdcmData (deprecated!)

You can also find the old gdcmData repository at:

Using the cvs command line:


Once you have downloaded the tarball, you need to extract it somewhere. Then you can configure this path in CMake interface under GDCM_DATA_ROOT entry (advanced entry). This is used internally for the regression testing mechanism.

GDCM_DATA_ROOT is not required anymore (as of 2008/10/08) but it is highly suggested you set it properly when turning GDCM_BUILD_TESTING:ON. When the path is not set, a subset of all tests are executed (those not requiring gdcmData)


This boolean is responsible for deciding whether or not to build/run the nightly regression test of gdcm. Warning when turning this option on, the size of the gdcm libraries will be bigger since some extra code are compiled in for the testing framework (see gdcm::Testing, and the md5 lib).

What is gdcmDataExtra ?

This is the extra part of gdcmData. This is not used for regression testing in the gdcm 1.x branch, but it started being used in the gdcm 2.x regression testing.

This is maintained at the CREATIS lab, by Jean Pierre Roux:

Using the rsync command line:

$ rsync -avH gdcmDataExtra

Where can I find DICOM DataSet for testing ?

There are plenty on internet if you search some good references (other than gdcmData / gdcmDataExtra) can be found at:

What is gdcmConformanceTests ?

This is basically a selection from gdcmData & gdcmDataExtra which is specifically tailored for people wishing to run some kind of automated conformance testing. It gather well know issues in the DICOM encoding that may impact:

  1. DataSet parsing
  2. DataSet interpretation

It can be downloaded using regular mechanism:

Or using rsync:

$ rsync -avH .

Up-to-date changelog can be found here:

What is VTK ?

What is ITK ?

What about debian / ubuntu / fedora / FreeBSD ?

To help make gdcm more accessible on linux machine, we have been working with the debian-med people to get gdcm distributed as a debian package, see:

See recent upload as official debian package:

This is also available on other free OS:

How do I cite the use of GDCM in a publication ?

BiBtex citations

  Title          = {{GDCM} {R}eference {M}anual},
  Author         = {Mathieu Malaterre and al.},
  Address        = { },
  Edition        = {First},
  year           = {2008}


"Grassroots DICOM"
"CMake: Cross Platform Make"

If you want to include GDCM in an acknowledgment section, a phrase similar to the following may be used:

"This work benefited from the use of Grassroots DICOM
(GDCM), an open source software
developed as an initiative of the CREATIS laboratory
and available at"


"The multi-platform configuration tool CMake was used for
configuring GDCM and facilitating its use from our project.
CMake was partially funded by the U.S. National Library of
Medicine as part of the Insight Toolkit project. CMake is an 
open source system and it is freely available at"

Where is the GDCM logo ?

See page at: GDCM Logo

Personal tools