ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
Forum membership is Free!  Click Join to sign-up
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 RT dose
 New Topic  Reply to Topic
Next Page
Author Previous Topic Topic Next Topic
Page: of 2

hamidshali

Iran
51 Posts

Posted - May 28 2016 :  10:48:07  Show Profile  Reply
hi
i want read dicom
i read dicom with below code

ImageEnView1.IO.LoadFromFileDICOM(dlgOpen1.FileName) ;
readtag := ImageEnView1.IO.Params.DICOM_Tags;
redt1.Text:= readtag.GetTagString( readtag.IndexOf($7FE0,$0010) );

i can not read tag $7FE0,$0010
how can read data pixel of $7FE0,$0010
thanx

samle dicom file

xequte

38194 Posts

Posted - May 30 2016 :  00:51:26  Show Profile  Reply
Your sample file was not attached. Can you please attach it.



Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 05 2016 :  01:38:52  Show Profile  Reply
hi
i send to mail samplefile
Go to Top of Page

xequte

38194 Posts

Posted - Jun 06 2016 :  17:25:55  Show Profile  Reply
Hi

Please email me for an updated source, which is better at recovering the meta data from this kind of file.

Note, the tag ($7FE0, $0010) is a nested tag, so you would be better to use the DICOM_FindTag helper.

The returned PIEDicomTag structure has a valid Data and DataLen, which you should be able to copy into a stream and read.



Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 11 2016 :  17:08:03  Show Profile  Reply
hi
plz show me how use class DICOM_FindTag for read $7FE0,$0010 tag
thanks
Go to Top of Page

xequte

38194 Posts

Posted - Jun 12 2016 :  16:54:15  Show Profile  Reply
Hi

// Find the "Pixel Data" tag
aTag := ImageEnMView1.MIO.Params[0].DICOM_FindTag( $7FE0, $0010 );
if assigned( aTag ) then
  With aTag^ do...


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 13 2016 :  11:16:43  Show Profile  Reply
hi
i use imageen 5.2 but my imageen have not class DICOM_FindTag
please how use this class

please help me
Go to Top of Page

xequte

38194 Posts

Posted - Jun 14 2016 :  04:23:09  Show Profile  Reply
Here is the code:

function TIOParamsHelper.DICOM_FindTag(Group: Word; Element: Word): PIEDicomTag;
  {}
  procedure _ParseTags(tags: TIEDicomTags);
  var
    i, j: integer;
    tag: PIEDicomTag;
  begin
    for i := 0 to tags.Count - 1 do
    begin
      // GET DATA
      tag := tags.GetTag(i);
      if ( tag^.Group = Group ) and ( tag^.Element = Element ) then
      begin
        Result := tag;
        Exit;
      end;

      // PARSE ANY CHILDREN
      if assigned( tag.Children ) then
      begin
        // tag.Children is a TObjectList object where each item is a TIEDicomTags object
        for j := 0 to tag.Children.Count - 1 do
        begin
          _ParseTags( tag.Children[j] as TIEDicomTags );

          // Found tag?
          if Result <> nil then
            Exit;
        end;
      end;
    end;
  end;
  {}
begin
  result := nil;
  _ParseTags( DICOM_Tags );
end;


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 16 2016 :  03:21:25  Show Profile  Reply
it is not work me
it is not give me tag data from $7FE0,$0010

i send to mail zip file of rtdose dicom

please help me
how get iso dose of it
please check
http://dicom.nema.org/dicom/2013/output/chtml/part05/sect_A.4.html
Go to Top of Page

xequte

38194 Posts

Posted - Jun 16 2016 :  21:56:39  Show Profile  Reply
Hi Hamid

I cannot reproduce that. This works fine for me (with your file RD.1.2.410.200018....dcm)...

procedure TMainForm.Button1Click(Sender: TObject);
var
  atag: PIEDicomTag;
begin
  atag := MainForm.ImageEnMView1.MIO.Params[0].DICOM_FindTag($7FE0,$0010);
  if atag = nil then
    raise Exception.create( 'Invalid Tag' );
  // Do something with atag^.Data
end;


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 17 2016 :  10:41:27  Show Profile  Reply
please send me out put of read my file
if you read my file correct mutt be similat to
..
..
[3004:000E](DoseGridScaling)DS=<1>.00
[300C:0002](ReferencedRTPlanSequence)SQ=<1>Sequence Data
[7FE0:0010](PixelData)OW_OB=<68>Pixel Data 68 frame
1:17956Byte : include --> isodose curve
2:17956Byte
3:17956Byte
4:17956Byte
5:17956Byte
6:17956Byte
..
...
.
[7FE0:0010]:= include frames similat to above

Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 17 2016 :  11:33:26  Show Profile  Reply
i use

 atag: PIEDicomTag;
  doseRT:TIEDicomTags;

procedure TForm3.ReadRTStruct(RTtags: TIEDicomTags);
 var
  RTtag: PIEDicomTag;

  i:Integer;
 begin
  for i := 0 to RTtags.Count - 1 do
  begin
   if (RTtag^.Group=$7FE0)and(RTtag^.Element=$0010) then
   begin
  //  atag:=RTtag;
    doseRT:= RTtags;
   end;
  end;
 end;

//...............

//.........
 procedure TForm3.ReadRTdose(tags: TIEDicomTags);
 var
 RTtag: PIEDicomTag;

  i:Integer;
 begin
  for i := 0 to tags.Count - 1 do
  begin
   redt1.Lines.Add(tags.GetTagString(i))

  end;
 end;

//.................


please tell me corect code
Go to Top of Page

xequte

38194 Posts

Posted - Jun 18 2016 :  01:06:07  Show Profile  Reply
Hi Hamid

Your code will not work because ($7FE0, $0010) is a nested tag (a child of another tag). So you need to use a method like DICOM_FindTag() above so that you also check nested/child tags.

Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 18 2016 :  07:24:17  Show Profile  Reply
hi
you can send me unit of imageen that have DICOM_FindTag method

my version of imageen have not this command

i use your function but error for me for

please send me unit of imageen that i can use DICOM_FindTag(
ImageEnMView1.MIO.Params[0].DICOM_FindTag($7FE0,$0010);

thanks

Go to Top of Page

xequte

38194 Posts

Posted - Jun 18 2016 :  20:47:43  Show Profile  Reply
Hi

I've changed the code above from a helper method to a normal method.

Just call as:

RTTag := DICOM_FindTag( ImageEnMView1.MIO.Params[0].DICOM_Tags, $7FE0, $0010 );


function DICOM_FindTag(tags: TIEDicomTags; Group: Word; Element: Word): PIEDicomTag;
  {}
  procedure _ParseTags(tags: TIEDicomTags);
  var
    i, j: integer;
    tag: PIEDicomTag;
  begin
    for i := 0 to tags.Count - 1 do
    begin
      // GET DATA
      tag := tags.GetTag(i);
      if ( tag^.Group = Group ) and ( tag^.Element = Element ) then
      begin
        Result := tag;
        Exit;
      end;

      // PARSE ANY CHILDREN
      if assigned( tag.Children ) then
      begin
        // tag.Children is a TObjectList object where each item is a TIEDicomTags object
        for j := 0 to tag.Children.Count - 1 do
        begin
          _ParseTags( tag.Children[j] as TIEDicomTags );

          // Found tag?
          if Result <> nil then
            Exit;
        end;
      end;
    end;
  end;
  {}
begin
  result := nil;
  _ParseTags( DICOM_Tags );
end;



Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

xequte

38194 Posts

Posted - Jun 18 2016 :  20:53:32  Show Profile  Reply
You can also use FindNestedTag:

http://www.imageen.com/help/TIEDicomTags.FindNestedTag.html

Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 19 2016 :  11:03:54  Show Profile  Reply
please please please ...........

i use your code but
//.................
1:=
procedure TForm3.Button3Click(Sender: TObject);
var
Index: integer;
Tags: PIEDicomTag;
begin
if dlgOpen1.Execute then
begin
ImageEnView1.IO.LoadFromFileDICOM(dlgOpen1.FileName) ;
Tags := imageenview1.IO.Params.DICOM_Tags.FindNestedTag($7FE0,$0010, Index);
if Index > -1 then
ShowMessage( 'ok')
else
ShowMessage( 'no');
end;
end;

result: no
//........................
i use demo imageen
Loading/Saving Demos/Dicom Viewer

for read dataset
it is read data set of my file( file RD.1.2.410.200018....dcm)
but it can not show all data set for me

i want read all of data set from my file
i read below tags
//....
(3004,0056) DVH Number of Bins dvIS
(3004,0058) DVH Data dvDS
(3004,0060) DVH Referenced ROI Sequence dvSQ
(3004,0062) DVH ROI Contribution Type dvCS
(3004,0070) DVH Minimum Dose dvDS
(3004,0072) DVH Maximum Dose dvDS
(3004,0074) DVH Mean Dose dvDS
(3006,0000) Structure Set Group Length dvUL
(3006,0002) Structure Set Label

..
..
please send me your project that you could read all of data set of my file

please send me (*dpr)
Go to Top of Page

xequte

38194 Posts

Posted - Jun 19 2016 :  20:12:03  Show Profile  Reply
Hi

I don't see all those tags for that file. It has:

(0002,0000) File Meta Information Group Length (UL) : "26"
(0002,0010) Transfer Syntax UID (UI) : "1.2.840.10008.1.2"
(0008,0005) Specific Character Set (CS) : "ISO_IR 100"
(0008,0012) Instance Creation Date (DA) : "20150310"
(0008,0013) Instance Creation Time (TM) : "154423.0"
(0008,0016) SOP Class UID (UI) : "1.2.840.10008.5.1.4.1.1.481.2"
(0008,0018) SOP Instance UID (UI) : "1.2.410.200018.1001.1.2.67324533.0.20150310154420719"
(0008,0020) Study Date (DA) : "20150308"
(0008,0030) Study Time (TM) : "115319.296000 "
(0008,0050) Accession Number (SH) : ""
(0008,0060) Modality (CS) : "RTDOSE"
(0008,0070) Manufacturer (LO) : "Seoul C&J "
(0008,0090) Referring Physician's Name (PN) : ""
(0008,1030) Study Description (LO) : "RT^RT_Pelvis (Adult)"
(0008,1090) Manufacturer's Model Name (LO) : "CorePLAN"
(0010,0010) Patient's Name (PN) : "GHORBANIAN^KAZEM"
(0010,0020) Patient ID (LO) : "790258"
(0010,0030) Patient's Birth Date (DA) : "19610308"
(0010,0040) Patient's Sex (CS) : "M "
(0018,0050) Slice Thickness (DS) : ""
(0020,000D) Study Instance UID (UI) : "1.3.12.2.1107.5.1.4.80126.30000015030508240482800000592"
(0020,000E) Series Instance UID (UI) : "1.2.410.200018.1001.1.2.67324533.0.20150310154420719"
(0020,0010) Study ID (SH) : "1 "
(0020,0011) Series Number (IS) : ""
(0020,0013) Instance Number (IS) : ""
(0020,0032) Image Position (Patient) (DS) : "250\410\-1593 "
(0020,0037) Image Orientation (Patient) (DS) : "-1\0\0\0\-1\0 "
(0028,0002) Samples per Pixel (US) : "1"
(0028,0004) Photometric Interpretation (CS) : "MONOCHROME2 "
(0028,0008) Number of Frames (IS) : "98"
(0028,0009) Frame Increment Pointer (AT) : "798724"
(0028,0010) Rows (US) : "70"
(0028,0011) Columns (US) : "101"
(0028,0030) Pixel Spacing (DS) : "5\5 "
(0028,0100) Bits Allocated (US) : "32"
(0028,0101) Bits Stored (US) : "32"
(0028,0102) High Bit (US) : "31"
(0028,0103) Pixel Representation (US) : "0"
(3004,0002) Dose Units (CS) : "GY"
(3004,0004) Dose Type (CS) : "PHYSICAL"
(3004,000A) Dose Summation Type (CS) : "PLAN"
(3004,000C) Grid Frame Offset Vector (DS) : "0\3.00003051757813\6...<SNIP>...5156 "
(3004,000E) Dose Grid Scaling (DS) : "1.e-007 "
(300C,0002) Referenced RT Plan Sequence (SQ) : ""
0:
   (0008,1150) Referenced SOP Class UID (UI) : "1.2.840.10008.5.1.4.1.1.481.5"
   (0008,1155) Referenced SOP Instance UID (UI) : "1.2.410.200018.1001.1.5.67324533.0.20150310154420719"
   (7FE0,0010) Pixel Data (OW) : ""


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 20 2016 :  05:02:35  Show Profile  Reply
hi

i need data from (7FE0,$0010) to end of dataset my file
please help me
how get data

Go to Top of Page

xequte

38194 Posts

Posted - Jun 20 2016 :  17:31:59  Show Profile  Reply
Hi

DICOM_FindTag() returns a PIEDicomTag object:

http://www.imageen.com/help/PIEDicomTag.html

Which gives you a pointer to the data, and the length of the data. Copy it into a stream or buffer to use it.

Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

hamidshali

Iran
51 Posts

Posted - Jun 21 2016 :  13:39:59  Show Profile  Reply
hi
please help me

i work on my programs for long time but i need data set 7FE0,$0010) to end of my file

you know define function for read all data set dicom rt file
Go to Top of Page
Page: of 2 Previous Topic Topic Next Topic  
Next Page
 New Topic  Reply to Topic
Jump To: