[Dcmlib] [Fwd: Re: [Insight-developers] GDCM problems with created dicom]

Jean-Pierre Roux jpr at creatis.insa-lyon.fr
Thu Jan 6 21:06:58 CET 2005


Mathieu Malaterre wrote:

> Est-ce que vous avez lu la reponse de David Clunie ?
>
> Est-ce que j'applique le changement dans le dictionaire finalement ou 
> pas ? Je suis un peu perdu pour tout avouer.


Je l'ai appliqué.
une VR a OW marchera qq soit la taille des Pixels ...

JP

>
>
> Bonne Anne'e !
> Mathieu
>
> -------- Original Message --------
> Subject: Re: [Insight-developers] GDCM problems with created dicom
> Date: Mon, 27 Dec 2004 09:09:06 -0500
> From: David Clunie <dclunie at dclunie.com>
> Reply-To: dclunie at dclunie.com
> CC: dcmlib at creatis.insa-lyon.fr, 
> "'insight-developers at public.kitware.com'" 
> <insight-developers at public.kitware.com>
> References: 
> <D95313D68743304EA8BD26E7B44ACF8E01187CAC at xmb04crdge.crd.ge.com>
>
> Lorensen, William E (Research) wrote:
>
>> The other problem was that the pixel data in the dictionary for
>> group/element
>> 7fe0 0010 had a representation of OB, not OW.
>>
>> Most readers probably don't use this because this info can be derived 
>> from
>> other tags. Of course, this representation should vary depending on 
>> whether
>> the data is chars or shorts, but the current gdcm code won't let you 
>> change
>> a representation on the fly (as far as I can tell).
>>
>> Since most medical data is 16 bit, I have changed the entry in the
>> dictionary from "OB" to "OW". Now I can generate files that the 
>> dicom3tools
>> can read.
>
>
> There rules for whether or not Pixel Data (7fe0,0010) should be OB or 
> OW depend
> on Bits Allocated (0028,0100) and are defined in DICOM PS 3.5 A.2, and 
> are:
>
> "-where Bits Allocated (0028,0100) has a value greater than 8 shall 
> have Value
> Representation OW and shall be encoded in Little Endian;
> -where Bits Allocated (0028,0100) has a value less than or equal to 8 
> shall have the
> Value Representation OB or OW and shall be encoded in Little Endian."
>
> so on encoding, always using OW will work.
>
> Most importantly, when Bits Allocated (0028,0100) is > 8, the VR must 
> NOT be OB,
> at least in explicit VR transfer syntaxes.
>
> (As a general rule, for complex attributes like (7fe0,0010) a single 
> dictionary
> entry for VR does not suffice and special code based on the particular 
> element
> is always required).
>
>>> Unfortunately yes. There has been some mail on the gdcm mailing list 
>>> about this issue. e-film had also some trouble reading some DICOM 
>>> imagea produced by GDCM. It appears that the length of group 0x0002 
>>> was wrong. The easy solution was simply to remove this tag from the 
>>> output.
>>>
>>> As a quick fix I can remove this tag also from itkGDCMImageIO, until 
>>> they rewrite the function that calculate the lenght of group 0x0002.
>>>
>>> How does that sound ?
>>
>
> You should not do that.
>
> See PS 3.10 7.1. Group Length (0002,0000) is Type 1 (required with a 
> value).
>
> Whilst group lengths are deprecated for most of the dataset, this is 
> not true
> for the meta information header group 0002 elements, since the meta
> information header has a fixed transfer syntax (explicit VR little 
> endian)
> and the rest of the data set may have a different transfer syntax, 
> which is
> specified by Transfer Syntax UID (0002,0010). The group length 
> (0002,0000)
> is required in order to know when one reaches the end of the 
> meta-information
> header and hence when to change transfer syntax. You cannot just look 
> at the
> next group and back up if it is not 0002, because some transfer 
> syntaxes are
> encoded completely differently (e.g. deflate compresses the entire 
> dataset,
> but not the meta information header).
>
> It is absolutely vital that (0002,0000) be encoded, or some legal 
> DICOM parsers
> may fail on the files you write.
>
> Since you have been using dicom3tools for various checks, I would 
> suggest that
> you use dciodvfy to check any files that you create, and if it reports 
> errors,
> then investigate. The validator is not perfect but usually worth 
> listening
> to, especially if it can't even parse the dataset due to a fundamental 
> encoding
> error. In today's version I have added a specific check to make sure that
> (0002,0000) is present, something that I had overlooked explicitly 
> checking
> for before.
>
> David
>
> PS. Reading through the gdcm mailing list archives, though my french 
> is not
> very good, I noticed reference to a comp.protocols.dicom posting about
> the same message "Assertion `bitsallocated <= bytesinword*8u' failed"
> occurring when trying to use dicom3tools to create jpeg compressed 
> images,
> which they won't do; this has nothing to do with getting the same message
> in the current case when 16 bit images are encoded as OB VR, which is 
> just
> wrong. I have avoided changing my toolkit to remove this assertion, in 
> order
> to detect this encoding error.
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
>
>
>
> _______________________________________________
> Dcmlib mailing list
> Dcmlib at creatis.insa-lyon.fr
> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
>



More information about the Dcmlib mailing list