Remaps the image pixels by applying a linear transformation described by a rescale slope and an intercept.
public class ApplyLinearModalityLookupTableCommand : RasterCommand
Public Class ApplyLinearModalityLookupTableCommand
Inherits RasterCommand
@interface LTApplyLinearModalityLookupTableCommand : LTRasterCommand
public class ApplyLinearModalityLookupTableCommand extends RasterCommand
public ref class ApplyLinearModalityLookupTableCommand : public RasterCommand
This command is available in the Document and Medical Imaging toolkits.
The linear transformation is described by the equation: Y = mX + b where 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.
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.).
For example, suppose there is an image with the following characteristics: BitsPerPixel = 12 LowBit = 4 HighBit = 10 In this case, there are 10-4+1=7 valid bits. This means that there are 128 values to remap.
If the ModalityLookupTableCommandFlags.AllowRangeExpansion flag is set in the Flags property, consider the following example: The dataset has the following attributes: BitsPerPixel 16 HighBit 11 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 the 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) cannot 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).
For more information, refer to Changing Brightness and Contrast.
Runs the ApplyLinearModalityLookupTableCommand on an image.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing.Core;
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";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing.Core
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#[Silverlight C# Example]
using Leadtools;
using Leadtools.Examples;
using Leadtools.Codecs;
using Leadtools.ImageProcessing.Core;
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();
}
vb[Silverlight VB Example]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing.Core
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
ApplyLinearModalityLookupTableCommand Members
Leadtools.ImageProcessing.Core Namespace
Changing Brightness and Contrast
Leadtools.ImageProcessing.Color.RemapIntensityCommand
ApplyLinearModalityLookupTableCommand Class
ApplyVoiLookupTableCommand Class
ApplyLinearVoiLookupTableCommand Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document