LEADTOOLS Image Processing (Leadtools.ImageProcessing.Core assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.29
ApplyLinearModalityLookupTableCommand Class
See Also  Members  
Leadtools.ImageProcessing.Core Namespace : ApplyLinearModalityLookupTableCommand Class



Remaps the image pixels by applying a linear transformation described by a rescale slope and an intercept. This class is available in the Document/Medical toolkits only. Supported in Silverlight, Windows Phone 7

Object Model

ApplyLinearModalityLookupTableCommand Class

Syntax

Visual Basic (Declaration) 
Public Class ApplyLinearModalityLookupTableCommand 
   Inherits Leadtools.ImageProcessing.RasterCommand
   Implements IRasterCommand 
Visual Basic (Usage)Copy Code
Dim instance As ApplyLinearModalityLookupTableCommand
C# 
public class ApplyLinearModalityLookupTableCommand : Leadtools.ImageProcessing.RasterCommand, IRasterCommand  
C++/CLI 
public ref class ApplyLinearModalityLookupTableCommand : public Leadtools.ImageProcessing.RasterCommand, IRasterCommand  

Example

Runs the ApplyLinearModalityLookupTableCommand on an image.

Visual BasicCopy Code
Public Sub ApplyLinearModalityLookupTableCommandExample()
   Dim codecs As New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE2.dcm"))

   ' Prepare the command
   Dim command As ApplyLinearModalityLookupTableCommand = New ApplyLinearModalityLookupTableCommand
   command.Flags = ModalityLookupTableCommandFlags.None
   command.Intercept = 0.0
   command.Slope = 0.5
   command.Run(leadImage)

End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
public void ApplyLinearModalityLookupTableCommandExample()
   {
      // Load an image
      RasterCodecs codecs = new RasterCodecs();
      codecs.ThrowExceptionsOnInvalidImages = true;

      RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE2.dcm"));

      // Prepare the command
      ApplyLinearModalityLookupTableCommand command = new ApplyLinearModalityLookupTableCommand();
      command.Flags     = ModalityLookupTableCommandFlags.None;
      command.Intercept = 0.0;
      command.Slope     = 0.5;
      command.Run(image);

   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
public void ApplyLinearModalityLookupTableCommandExample(RasterImage image, Stream outStream)
{
   // Prepare the command
   ApplyLinearModalityLookupTableCommand command = new ApplyLinearModalityLookupTableCommand();
   command.Flags = ModalityLookupTableCommandFlags.None;
   command.Intercept = 0.0;
   command.Slope = 0.5;
   command.Run(image);
   // Save result image
   RasterCodecs codecs = new RasterCodecs();
   codecs.Save(image, outStream, RasterImageFormat.DicomGray, image.BitsPerPixel);
   image.Dispose();
}
SilverlightVBCopy Code
Public Sub ApplyLinearModalityLookupTableCommandExample(ByVal image As RasterImage, ByVal outStream As Stream)
   ' Prepare the command
   Dim command As ApplyLinearModalityLookupTableCommand = New ApplyLinearModalityLookupTableCommand()
   command.Flags = ModalityLookupTableCommandFlags.None
   command.Intercept = 0.0
   command.Slope = 0.5
   command.Run(image)
   ' Save result image
   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.Save(image, outStream, RasterImageFormat.DicomGray, image.BitsPerPixel)
   image.Dispose()
End Sub

Remarks

  • This class remaps the image pixels by applying a linear transformation described by rescale slope and intercept. In the DICOM world, this is referred to as "applying a linear Modality LookupTable (LookupTable)".
  • This class will remap the image pixels by applying the linear transformation described by the equation:

    Y = mX + b

    m: slope of a straight line, this is also referred to as "Rescale Slope" in the DICOM world.

    b: the y-intercept of a straight line, this is also referred to as "Rescale Intercept" in the DICOM world.

    Y: the resulting pixel value.

    X: the input or original pixel value.
  • This class is helpful in applying what is referred to as a "Linear Modality LookupTable (LookupTable)" in the DICOM world. According to the DICOM standard a "Modality LookupTable (LookupTable)" defines the transformation of manufacturer-dependent pixel values into pixel values, which are manufacturer independent (e.g. Hounsfield units for CT, Optical Density for film digitizers, etc.).
  • This class only works on grayscale images. Using this class for non-grayscale images will generate an error.
  • It is recommended to always set the ModalityLookupTableCommandFlags.UpdateMinMax flag.
  • This class can change the image from signed to unsigned, or from unsigned to signed. This is determined by the values of the resulting image pixels after applying the linear transformation.
  • Only the useful bits in the image are considered. The values are considered as if the image pixel values are normalized, Leadtools.RasterImage.LowBit = 0.
  • For example, let's say the image is:

    Leadtools.RasterImage.BitsPerPixel = 12

    Leadtools.RasterImage.LowBit = 4

    Leadtools.RasterImage.HighBit = 10

    In this case, there are 10-4+1=7 valid bits. This means that there are 128 values to remap.
  • If ModalityLookupTableCommandFlags.AllowRangeExpansion flag is set in Flags property, consider the following example:

    If the dataset has the following attributes:

    Leadtools.RasterImage.BitsPerPixel 16

    Leadtools.RasterImage.HighBit 11

    Leadtools.RasterImage.LowBit 0

    Pixel Range 0 to +4095,

    Unsigned

    The number of bits stored inside the image is 11-0+1 =12.

    If the fIntercept is set to -1024 and fSlope is set to 0, then after applying the rescale slope and intercept:

    Output minimum pixel value = (0 *1 +(-1024))= -1024

    Output maximum pixel value = (4095 *1 +(-1024))= 3071
  • The new pixel value range (-1024 to 3071) can't be represented with the current bits stored (12 bits), which can represent values in the range (-2048 to 2048). In this case the class will change the high bit inside the image handle to be 12 instead of 11 (bits stored becomes 13), which can represent values in the range (-8192 to 8191).
  • Please note that the class won't be able to update the high bit and/or low bit if the number of bits stored was already equal to the image bits per pixel.
  • This class supports 12 and 16-bit grayscale. Support for 12 and 16-bit grayscale is available only in the Document/Medical toolkits.
  • This command does not support 32-bit grayscale images.
For more information, refer to Changing Brightness and Contrast.

Inheritance Hierarchy

System.Object
   Leadtools.ImageProcessing.RasterCommand
      Leadtools.ImageProcessing.Core.ApplyLinearModalityLookupTableCommand

Requirements

Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)

See Also