Remaps the image pixels using a LookupTable (LookupTable).
public class ApplyModalityLookupTableCommand : RasterCommand
Public Class ApplyModalityLookupTableCommand
Inherits RasterCommand
@interface LTApplyModalityLookupTableCommand : LTRasterCommand
public class ApplyModalityLookupTableCommand extends RasterCommand
public ref class ApplyModalityLookupTableCommand : public RasterCommand
This command is available in the Document and Medical Imaging toolkits.
This class is similar to RemapIntensityCommand because it remaps the image pixel values through a LookupTable. The class differs from RemapIntensityCommand as follows: ApplyModalityLookupTableCommand allows you to specify an incomplete LookupTable. Values less than the first mapped index will be mapped to the first entry in the palette. Values higher than "first mapped index" + "LookupTable length" will be mapped to the last entry in the LookupTable. ApplyModalityLookupTableCommand only works on grayscale images. ApplyModalityLookupTableCommand can create signed images. The output image will be signed (if ModalityLookupTableCommandFlags.SignedLookupTable is set), or unsigned (ModalityLookupTableCommandFlags.SignedLookupTable is not set).
The values in the LookupTable will be masked such that only the useful bits in the image are considered. The values are considered as if the image pixel values are normalized, LowBit = 0.
For example, let's say the image is: 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. For every pixel, ApplyModalityLookupTableCommand will do the following:
Take the pixel value, shift it to the right by 4 and mask out the high bits, producing a value (val = 0..127).
For more information, refer to Changing Brightness and Contrast.
Run the ApplyModalityLookupTableCommand on an image.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing.Core;
public void ApplyModalityLookupTableCommandExample()
{
// Load an image
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE2.dcm"));
// Prepare the command
int i;
short[] pLookupTable = new short[0x10000];
DicomLookupTableDescriptor LookupTableDescriptor = new DicomLookupTableDescriptor();
// set a LookupTable which reduces the intensity of each pixel to half
for (i = 0; i <= 0xFFFF; i++)
pLookupTable[i] = (short)(i / 2);
// fill the LookupTableDescriptor object
LookupTableDescriptor.FirstStoredPixelValueMapped = 0;
LookupTableDescriptor.EntryBits = 16;
// apply the LookupTable
ApplyModalityLookupTableCommand command = new ApplyModalityLookupTableCommand();
command.Flags = ModalityLookupTableCommandFlags.None;
command.LookupTable = pLookupTable;
command.LookupTableDescriptor = LookupTableDescriptor;
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 ApplyModalityLookupTableCommandExample()
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 i As Integer
Dim pLookupTable() As Short
ReDim pLookupTable(65535)
Dim LookupTableDescriptor As DicomLookupTableDescriptor = New DicomLookupTableDescriptor
' set a LookupTable which reduces the intensity of each pixel to half
For i = 0 To 65535
pLookupTable(i) = CType(i / 2, Int16)
Next
' fill the LookupTableDescriptor object
LookupTableDescriptor.FirstStoredPixelValueMapped = 0
LookupTableDescriptor.EntryBits = 16
' apply the LookupTable
Dim command As ApplyModalityLookupTableCommand = New ApplyModalityLookupTableCommand
command.Flags = ModalityLookupTableCommandFlags.None
command.LookupTable = pLookupTable
command.LookupTableDescriptor = LookupTableDescriptor
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 ApplyModalityLookupTableCommandExample(RasterImage image, Stream outStream)
{
// Prepare the command
int i;
short[] pLookupTable = new short[0x10000];
DicomLookupTableDescriptor LookupTableDescriptor = new DicomLookupTableDescriptor();
// set a LookupTable which reduces the intensity of each pixel to half
for (i = 0; i <= 0xFFFF; i++)
pLookupTable[i] = (short)(i / 2);
// fill the LookupTableDescriptor object
LookupTableDescriptor.FirstStoredPixelValueMapped = 0;
LookupTableDescriptor.EntryBits = 16;
// apply the LookupTable
ApplyModalityLookupTableCommand command = new ApplyModalityLookupTableCommand();
command.Flags = ModalityLookupTableCommandFlags.None;
command.LookupTable = pLookupTable;
command.LookupTableDescriptor = LookupTableDescriptor;
command.Run(image);
// Save result image
RasterCodecs codecs = new RasterCodecs();
codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24);
image.Dispose();
}
vb[Silverlight VB Example]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing.Core
Public Sub ApplyModalityLookupTableCommandExample(ByVal image As RasterImage, ByVal outStream As Stream)
' Prepare the command
Dim i As Integer
Dim pLookupTable As Short() = New Short(&H10000 - 1) {}
Dim LookupTableDescriptor As DicomLookupTableDescriptor = New DicomLookupTableDescriptor()
' set a LookupTable which reduces the intensity of each pixel to half
i = 0
Do While i <= &HFFFF
pLookupTable(i) = CShort(i / 2)
i += 1
Loop
' fill the LookupTableDescriptor object
LookupTableDescriptor.FirstStoredPixelValueMapped = 0
LookupTableDescriptor.EntryBits = 16
' apply the LookupTable
Dim command As ApplyModalityLookupTableCommand = New ApplyModalityLookupTableCommand()
command.Flags = ModalityLookupTableCommandFlags.None
command.LookupTable = pLookupTable
command.LookupTableDescriptor = LookupTableDescriptor
command.Run(image)
' Save result image
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24)
image.Dispose()
End Sub
ApplyModalityLookupTableCommand 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