GetImage Method

Summary
Returns the RasterImage contained in the DicomDataSet, but with the RasterViewPerspective changed accordingly from applying a PlaneOrientation to a given RasterViewPerspective.
Syntax
C#
C++
vb[VB Syntax] 
<ExtensionAttribute()> 
Public Shared Function GetImage( _ 
   ByVal _ds_ As DicomDataSet, _ 
   ByVal _element_ As DicomElement, _ 
   ByVal _index_ As Integer, _ 
   ByVal _bitsPerPixel_ As Integer, _ 
   ByVal _order_ As RasterByteOrder, _ 
   ByVal _flags_ As DicomGetImageFlags, _ 
   ByVal _orientation_ As OrientationConfiguration _ 
) As RasterImage 

Parameters

ds
The DicomDataSet that contains the image orientation vectors

element
An item in the Data Set.

index
The zero-based index of the frame to load.

bitsPerPixel
Value that represents the resulting image pixel depth. Possible values are:

Value Meaning
0 Keep the original file's pixel depth (do not convert).
1 to 8 The specified bits per pixel in the resulting image.
12 12 bits per pixel in the resulting image.
16 16 bits per pixel in the resulting image.
24 24 bits per pixel in the resulting image.
32 32 bits per pixel in the resulting image.

order
This value is ignored.

flags
Flags that control the behavior of this method.

orientation
An OrientationConfiguration that will be applied to the current view perspective.

Return Value

The image of a Pixel Data element.

Remarks

This method will load any image from  ds, using  element as the parent element to begin the search, where the element searched for is the PixelData element. The resulting image has its RasterViewPerspective changed accordingly from applying a PlaneOrientation to a given RasterViewPerspective.

The input view perspective is define by two values: the original RasterViewPerspective contained in  ds, and a row and column orientation vector (which are read from the  ds by searching for the DicomElement that has a tag of ImageOrientationPatient which contains the orientation vectors.).

Note that the  orientation contains three lists of conditions (one for each 3D axis) that can be applied to the image contained in the  ds if the condition is met.

Example

This example does the following:

  • Loads a DICOM dataset that contains orientation vectors that orient it as a coronal slice
  • Creates an OrientationConfiguration that contains a coronal PlaneOrientation that corresponds to a horizontal flip
  • Gets the image from the DICOM dataset and modifies the view perspective to reflect OrientationConfiguration
C#
using Leadtools.Dicom; 
using Leadtools.Dicom.Common; 
using Leadtools.Dicom.Common.Extensions; 
using Leadtools; 
using Leadtools.Dicom.Common.Linq.BasicDirectory; 
using Leadtools.Dicom.Common.DataTypes; 
 
 
public void GetImageExample() 
{ 
   DicomEngine.Startup(); 
   string dicomFileCoronal = Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "Image3.dcm"); 
   DicomDataSet ds = new DicomDataSet(); 
   ds.Load(dicomFileCoronal, DicomDataSetLoadFlags.None); 
 
   // Create a new coronal PlaneOrientation that corresponds to a horizontal flip 
   PlaneOrientation poCoronal = new PlaneOrientation(); 
   poCoronal.Name = "Coronal or Frontal"; 
   poCoronal.Top = OrientationAxis.Inferior; 
   poCoronal.Right = OrientationAxis.Right; 
   poCoronal.Condition = new TagValueOrientationCondition(DicomTag.ImageOrientationPatient, null); 
   if (!poCoronal.IsValid(Plane.Coronal)) 
   { 
      Console.WriteLine("Invalid PlaneOrientation for Coronal"); 
      return; 
   } 
 
   // Create a new sagittal PlaneOrientation that corresponds to a Rotate90 
   PlaneOrientation poSagittal = new PlaneOrientation(); 
   poSagittal.Name = "Sagittal"; 
   poSagittal.Top = OrientationAxis.Anterior; 
   poSagittal.Right = OrientationAxis.Inferior; 
   poSagittal.Condition = new TagValueOrientationCondition(0, null); 
   if (!poSagittal.IsValid(Plane.Sagittal)) 
   { 
      Console.WriteLine("Invalid PlaneOrientation for Sagittal"); 
      return; 
   } 
 
   // Create a new Axial that corresponds to a Rotate180 
   PlaneOrientation poAxial = new PlaneOrientation(); 
   poAxial.Name = "Axial"; 
   poAxial.Top = OrientationAxis.Posterior; 
   poAxial.Right = OrientationAxis.Left; 
   poAxial.Condition = new TagValueOrientationCondition(0, null); 
   if (!poAxial.IsValid(Plane.Axial)) 
   { 
      Console.WriteLine("Invalid PlaneOrientation for Axial"); 
      return; 
   } 
 
   // Setup the OrientationConfiguration 
   OrientationConfiguration oc = new OrientationConfiguration(); 
   oc.Coronal.Add(poCoronal); 
   oc.Sagittal.Add(poSagittal); 
   oc.Axial.Add(poAxial); 
   if (!oc.IsValid()) 
   { 
      Console.WriteLine("Invalid OrientationConfiguration"); 
      return; 
   } 
 
   // Find the image from the dataset with the new view perspective 
   // RasterViewPerspective newViewPerspective = ds.GetNewViewPerspective(RasterViewPerspective.TopLeft, oc); 
   RasterImage image = ds.GetImage(null, 0, 0, RasterByteOrder.Gray, DicomGetImageFlags.None, oc); 
 
   // New view perspective should be BottomLeft 
   RasterViewPerspective newViewPerspective = image.ViewPerspective; 
   Console.WriteLine("newViewPerspective should be BottomLeft\nActual newViewPerspective is " + newViewPerspective.ToString()); 
 
   DicomEngine.Shutdown(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2022.4.4
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2022 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom.Common Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2022 LEAD Technologies, Inc. All Rights Reserved.