DCM_WindowCenter NULL
Moderator: Moderator Team
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
DCM_WindowCenter NULL
I have some series mamo, which are multiframe, and DCM_WindowCenter and DCM_WindowWidth are read NULL ... what values should I put into my app in order to see the image correctly ? Before I read DCM_WindowCenter NULL, I have read getMinMaxValues, which is 4096 ... also, I read other tags, like DCM_VOILUTSequence, which are also NULL ... is there a way to get these values, as long they are NULL ?
Thank you.
Thank you.
-
- DCMTK Developer
- Posts: 2504
- Joined: Tue, 2011-05-03, 14:38
- Location: Oldenburg, Germany
- Contact:
Re: DCM_WindowCenter NULL
What is the SOP Class UID (or Name) of your images?
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
Re: DCM_WindowCenter NULL
Kindly thank you for your concern.
I have teste what you said, and here is the results:
but I noticed something interesting: the series that has DCM_WindowCenter and DCM_WindowWidth not NULL, the DCM_ProtocolName has ROUTINE, not 3D_ROUTINE ... what is the difference ?
I have teste what you said, and here is the results:
Code: Select all
DCM_SOPClassUID: 1.2.840.10008.5.1.4.1.1.13.1.3
DCM_SOPInstanceUID: 1.2.276.0.69.22.29.3056.2500.20161208120518563282.41
DCM_SequenceName: NULL
DCM_ProtocolName: 3D_ROUTINE
DCM_DataSetName: NULL
DCM_ProductName: NULL
-
- DCMTK Developer
- Posts: 2504
- Joined: Tue, 2011-05-03, 14:38
- Location: Oldenburg, Germany
- Contact:
Re: DCM_WindowCenter NULL
This SOP Class is not a conventional "mammo image" but a Breast Tomosynthesis Image object. As you can read in Section A.55.3.1.1 of DICOM Part 3: "The VOI LUT function is provided by a Frame VOI LUT Functional Group." That means there is no Window Center/Width or the like on the top-level of the dataset but nested in a sequence...
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
Re: DCM_WindowCenter NULL
The strange thing is that when DCM_WindowWidth and DCM_WindowCenter is NULL then DCM_VOILUTFunction, DCM_VOILUTSequence, DCM_LUTDescriptor, DCM_LUTExplanation, DCM_LUTData, DCM_FrameVOILUTSequence are all NULL ... I have to dig in ...
-
- DCMTK Developer
- Posts: 2504
- Joined: Tue, 2011-05-03, 14:38
- Location: Oldenburg, Germany
- Contact:
Re: DCM_WindowCenter NULL
The Frame VOI LUT Sequence is not contained on the main dataset level but in the "Frame VOI LUT with LUT Macro", which is part of the Shared or Per-frame Functional Groups Sequence. See DICOM Part 3 for details.
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
Re: DCM_WindowCenter NULL
I have found with dcmdump following tags:
although when I read
I get NULL from pszValue ... I feel I am not far ... I don't know how to read successfully DCM_FrameVOILUTSequence ...
Code: Select all
(0028,9132) SQ (Sequence with explicit length #=1) # 96, 1 FrameVOILUTSequence
(fffe,e000) na (Item with explicit length #=4) # 88, 1 Item
(0028,1050) DS [2803\2869\2707] # 14, 3 WindowCenter
(0028,1051) DS [1250\1000\1500] # 14, 3 WindowWidth
(0028,1055) LO [NORMAL\HARDER\SOFTER] # 20, 3 WindowCenterWidthExplanation
(0028,1056) CS [SIGMOID] # 8, 1 VOILUTFunction
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
Code: Select all
pDS->findAndGetString(DCM_FrameVOILUTSequence, pszValue);
-
- DCMTK Developer
- Posts: 2504
- Joined: Tue, 2011-05-03, 14:38
- Location: Oldenburg, Germany
- Contact:
Re: DCM_WindowCenter NULL
A Sequence of Items (VR=SQ) is not a String, and findAndGetString() is not applicable to this VR as the documentation shows. You could use findAndGetSequence() or findAndGetSequenceItem() for this purpose, but as I said: the Frame VOI LUT Sequence is not part of the main dataset (i.e. contained in a sequence item), so you need to go down step by step.
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
Re: DCM_WindowCenter NULL
Thank again ! I have found the real window/level, and I understand how to retrieve it:
the problem is that this code is functional only on first if (which are TRUE)
The next one is FALSE:
I don't know why ... although DCM_Item is present on dataset (I have checked with dcmdump ...
I have inspired from here:
http://support.dcmtk.org/redmine/projec ... quenceItem
but it's only one level ...
Code: Select all
DcmItem* pItem = NULL;
if(pDS->findAndGetSequenceItem(DCM_SharedFunctionalGroupsSequence, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_Item, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_FrameVOILUTSequence, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_Item, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_WindowWidth, pItem).good())
pDS->findAndGetString(DCM_WindowWidth, pszValue);
Code: Select all
if(pDS->findAndGetSequenceItem(DCM_SharedFunctionalGroupsSequence, pItem).good())
Code: Select all
if(pDS->findAndGetSequenceItem(DCM_Item, pItem).good())
I have inspired from here:
http://support.dcmtk.org/redmine/projec ... quenceItem
but it's only one level ...
Last edited by mesajflaviu on Tue, 2016-12-20, 14:57, edited 1 time in total.
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
Re: DCM_WindowCenter NULL
I also tried:
this if is TRUE:
but next one is FALSE:
Code: Select all
DcmItem* pItem = NULL;
if(pDS->findAndGetSequenceItem(DCM_SharedFunctionalGroupsSequence, pItem).good())
// if(pDS->findAndGetSequenceItem(DCM_Item, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_FrameVOILUTSequence, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_Item, pItem).good())
if(pDS->findAndGetSequenceItem(DCM_WindowWidth, pItem).good())
pDS->findAndGetString(DCM_WindowWidth, pszValue);
Code: Select all
if(pDS->findAndGetSequenceItem(DCM_SharedFunctionalGroupsSequence, pItem).good())
Code: Select all
if(pDS->findAndGetSequenceItem(DCM_FrameVOILUTSequence, pItem).good())
-
- DCMTK Developer
- Posts: 2504
- Joined: Tue, 2011-05-03, 14:38
- Location: Oldenburg, Germany
- Contact:
Re: DCM_WindowCenter NULL
It is "FALSE" since the Frame VOI LUT Sequence is not contained in "pDS" but in "pItem", i.e. in the nested dataset. The same applies to Window Width, which is again nested...
-
- Posts: 16
- Joined: Mon, 2016-12-05, 10:00
Re: DCM_WindowCenter NULL
Forgive my ignorance, I will try your advice.
Who is online
Users browsing this forum: No registered users and 1 guest