Visual Basic (Declaration) | |
---|---|
Public Class ApplyVoiLookupTableCommand Inherits Leadtools.ImageProcessing.RasterCommand Implements IRasterCommand |
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As ApplyVoiLookupTableCommand |
C# | |
---|---|
public class ApplyVoiLookupTableCommand : Leadtools.ImageProcessing.RasterCommand, IRasterCommand |
C++/CLI | |
---|---|
public ref class ApplyVoiLookupTableCommand : public Leadtools.ImageProcessing.RasterCommand, IRasterCommand |
Run the Leadtools.ImageProcessing.Core.ApplyVoiLookupTableCommand on an image.
Visual Basic | Copy Code |
---|---|
Public Sub ApplyVoiLookupTableCommandExample() 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(65536) Dim LookupTableDescriptor As DicomLookupTableDescriptor = New DicomLookupTableDescriptor For i = 0 To 65536 If (i < 30) Then pLookupTable(i) = 0 Else If (i > 630) Then pLookupTable(i) = 630 Else pLookupTable(i) = CType(i, Int16) End If End If Next ' fill the LookupTableDescriptor object LookupTableDescriptor.FirstStoredPixelValueMapped = 0 LookupTableDescriptor.EntryBits = 16 Dim command As ApplyVoiLookupTableCommand = New ApplyVoiLookupTableCommand command.Flags = VoiLookupTableCommandFlags.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# | Copy Code |
---|---|
public void ApplyVoiLookupTableCommandExample() { // 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(); for(i = 0; i < 0x10000; i++) { if(i < 30) { pLookupTable[i] = 0; } else if(i > 630) pLookupTable[i] = 630; else pLookupTable[i] = (short)i; } // fill the LookupTableDescriptor object LookupTableDescriptor.FirstStoredPixelValueMapped = 0; LookupTableDescriptor.EntryBits = 16; ApplyVoiLookupTableCommand command = new ApplyVoiLookupTableCommand(); command.Flags = VoiLookupTableCommandFlags.None; command.LookupTable = pLookupTable; command.LookupTableDescriptor = LookupTableDescriptor; command.Run(image); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; } |
SilverlightCSharp | Copy Code |
---|---|
public void ApplyVoiLookupTableCommandExample(RasterImage image, Stream outStream) { // Prepare the command int i; short[] pLookupTable = new short[0x10000]; DicomLookupTableDescriptor LookupTableDescriptor = new DicomLookupTableDescriptor(); for(i = 0; i < 0x10000; i++) { if(i < 30) { pLookupTable[i] = 0; } else if(i > 630) pLookupTable[i] = 630; else pLookupTable[i] = (short)i; } // fill the LookupTableDescriptor object LookupTableDescriptor.FirstStoredPixelValueMapped = 0; LookupTableDescriptor.EntryBits = 16; ApplyVoiLookupTableCommand command = new ApplyVoiLookupTableCommand(); command.Flags = VoiLookupTableCommandFlags.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(); } |
SilverlightVB | Copy Code |
---|---|
Public Sub ApplyVoiLookupTableCommandExample(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() i = 0 Do While i < &H10000 If i < 30 Then pLookupTable(i) = 0 Else If i > 630 Then pLookupTable(i) = 630 Else pLookupTable(i) = CShort(i) End If End If i += 1 Loop ' fill the LookupTableDescriptor object LookupTableDescriptor.FirstStoredPixelValueMapped = 0 LookupTableDescriptor.EntryBits = 16 Dim command As ApplyVoiLookupTableCommand = New ApplyVoiLookupTableCommand() command.Flags = VoiLookupTableCommandFlags.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 |
- This class sets up the paint or paint and image processing methods' window leveling options for a specific image through a lookup-table (LookupTable). In the DICOM world, this is referred to as "applying a non-linear VOI LookupTable".
- This class will remap the LookupTable used to display and process an image by applying a user-defined lookup table. In the DICOM world this is referred to as applying a "non-linear VOI LookupTable". The DICOM standard states:
- "A VOI LookupTable defines the transformation of the modality pixel values into pixel values that are meaningful for print, display, etc. This transformation is applied after any Modality LookupTable". Please see "VOI LookupTable Module Attributes" in the DICOM standard for more details.
- This class does not change the image data; it only updates the entries inside the image display LookupTable.
- The value is remapped according to the LookupTable (values smaller than FirstStoredPixelValueMapped (property of the DicomLookupTableDescriptor class) are mapped to the first LookupTable entry, while values greater than FirstStoredPixelValueMapped (property of the DicomLookupTableDescriptor class) + LookupTable->Length are mapped to the last LookupTable entry).
- It is recommended to always set the VoiLookupTableCommandFlags flag.
- In the DICOM world you will need to set the VoiLookupTableCommandFlags flag if the photometric interpretation of the image is "MONOCHROME1", where the minimum grayscale value is intended to be displayed as white after any VOI gray scale transformations have been performed.
- 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.
System.Object
Leadtools.ImageProcessing.RasterCommand
Leadtools.ImageProcessing.Core.ApplyVoiLookupTableCommand
Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)
Reference
ApplyVoiLookupTableCommand MembersLeadtools.ImageProcessing.Core Namespace
Changing Brightness and Contrast
ApplyLinearVoiLookupTableCommand Class
Leadtools.ImageProcessing.Color.RemapIntensityCommand
ApplyModalityLookupTableCommand Class
ApplyLinearModalityLookupTableCommand Class
Leadtools.ImageProcessing.Color.AdjustTintCommand
Leadtools.ImageProcessing.Color.GammaCorrectExtendedCommand