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



Converts a 12 or 16-bit grayscale image to an 8-bit grayscale or a 24-bit RGB image.
This class is available in Medical toolkits only. Supported in Silverlight, Windows Phone 7

Object Model

WindowLevelCommand Class

Syntax

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

Example

Run the Leadtools.ImageProcessing.Core.WindowLevelCommand on an image.

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

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

   ' Prepare the command
   'Change the image to 16-bit grayscale
   Dim graycommand As GrayscaleCommand = New GrayscaleCommand(16)
   Dim command As WindowLevelCommand = New WindowLevelCommand
   graycommand.Run(leadImage)

   Dim minValue As Integer = leadImage.MinValue
   Dim maxValue As Integer = leadImage.MaxValue
   Dim minBit As Integer = leadImage.LowBit
   Dim maxBit As Integer = leadImage.HighBit

   Dim Size As Integer = (1 << (maxBit - minBit + 1))
   Dim LookupTable() As RasterColor
   ReDim LookupTable(Size - 1)

   ' fill the first half of the LookupTable with RED.
   Dim x As Integer
   For x = 0 To Size \ 2 - 1
      LookupTable(x) = New RasterColor(255, 0, 0)
   Next

   ' fill the rest with gray values.
   For x = Size \ 2 To Size - 1
      Dim y As Byte = Convert.ToByte((x - minValue) * 255 / (maxValue - minValue))
      LookupTable(x) = New RasterColor(y, y, y)
   Next

   command.HighBit = maxBit
   command.LowBit = minBit

   command.LookupTable = LookupTable
   command.Order = RasterByteOrder.Bgr
   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 WindowLevelCommandExample()
   {
      // Load an image
      RasterCodecs codecs = new RasterCodecs();
      codecs.ThrowExceptionsOnInvalidImages = true;

      RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg"));

      // Prepare the command
      int x;
      byte y;
      int Size;
      RasterColor [] LookupTable;

      //Change the image to 16-bit grayscale
      GrayscaleCommand graycommand = new GrayscaleCommand(16);
      MinMaxBitsCommand MinMaxBits = new MinMaxBitsCommand();
      MinMaxValuesCommand MinMaxValues = new MinMaxValuesCommand();
      WindowLevelCommand command = new WindowLevelCommand();

      graycommand.Run(image);
      MinMaxBits.Run(image);
      MinMaxValues.Run(image);

      Size = (1 <<(MinMaxBits.MaximumBit - MinMaxBits.MinimumBit + 1));
      LookupTable = new Leadtools.RasterColor[Size];

      // fill the first half of the LookupTable with RED.
      for(x = 0; x < Size / 2; x++)
         LookupTable[x] = new Leadtools.RasterColor(255, 0, 0);

      // fill the rest with gray values.
      for(x = Size / 2; x < Size; x++)
      {
         y = (byte)((x - MinMaxValues.MinimumValue) * 255 / (MinMaxValues.MaximumValue - MinMaxValues.MinimumValue));
         LookupTable[x] = new Leadtools.RasterColor(y, y, y);
      }

      command.HighBit = MinMaxBits.MaximumBit;
      command.LowBit  = MinMaxBits.MinimumBit;
      command.LookupTable = LookupTable;
      command.Order = Leadtools.RasterByteOrder.Bgr;

      command.Run(image);

   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
public void WindowLevelCommandExample(RasterImage image, Stream outStream)
{
   // Prepare the command
   int x;
   byte y;
   int Size;
   RasterColor[] LookupTable;
   //Change the image to 16-bit grayscale
   GrayscaleCommand graycommand = new GrayscaleCommand(16);
   MinMaxBitsCommand MinMaxBits = new MinMaxBitsCommand();
   MinMaxValuesCommand MinMaxValues = new MinMaxValuesCommand();
   WindowLevelCommand command = new WindowLevelCommand();

   graycommand.Run(image);
   MinMaxBits.Run(image);
   MinMaxValues.Run(image);

   Size = (1 << (MinMaxBits.MaximumBit - MinMaxBits.MinimumBit + 1));
   LookupTable = new Leadtools.RasterColor[Size];

   // fill the first half of the LookupTable with RED.
   for (x = 0; x < Size / 2; x++)
      LookupTable[x] = new Leadtools.RasterColor(255, 0, 0);

   // fill the rest with gray values.
   for (x = Size / 2; x < Size; x++)
   {
      y = (byte)((x - MinMaxValues.MinimumValue) * 255 / (MinMaxValues.MaximumValue - MinMaxValues.MinimumValue));
      LookupTable[x] = new Leadtools.RasterColor(y, y, y);
   }

   command.HighBit = MinMaxBits.MaximumBit;
   command.LowBit = MinMaxBits.MinimumBit;
   command.LookupTable = LookupTable;
   command.Order = Leadtools.RasterByteOrder.Bgr;

   command.Run(image);
   // Save result image
   RasterCodecs codecs = new RasterCodecs();
   codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24);
   image.Dispose();
}
SilverlightVBCopy Code
Public Sub WindowLevelCommandExample(ByVal image As RasterImage, ByVal outStream As Stream)
   ' Prepare the command
   Dim x As Integer
   Dim y As Byte
   Dim Size As Integer
   Dim LookupTable As RasterColor()
   'Change the image to 16-bit grayscale
   Dim graycommand As GrayscaleCommand = New GrayscaleCommand(16)
   Dim MinMaxBits As MinMaxBitsCommand = New MinMaxBitsCommand()
   Dim MinMaxValues As MinMaxValuesCommand = New MinMaxValuesCommand()
   Dim command As WindowLevelCommand = New WindowLevelCommand()

   graycommand.Run(image)
   MinMaxBits.Run(image)
   MinMaxValues.Run(image)

   Size = (1 << (MinMaxBits.MaximumBit - MinMaxBits.MinimumBit + 1))
   LookupTable = New RasterColor(Size - 1) {}

   ' fill the first half of the LookupTable with RED.
   x = 0
   Do While x < Size / 2
      LookupTable(x) = New RasterColor(255, 0, 0)
      x += 1
   Loop

   ' fill the rest with gray values.
   x = Size / 2
   Do While x < Size
      y = CByte((x - MinMaxValues.MinimumValue) * 255 / (MinMaxValues.MaximumValue - MinMaxValues.MinimumValue))
      LookupTable(x) = New RasterColor(y, y, y)
      x += 1
   Loop

   command.HighBit = MinMaxBits.MaximumBit
   command.LowBit = MinMaxBits.MinimumBit
   command.LookupTable = LookupTable
   command.Order = RasterByteOrder.Bgr

   command.Run(image)
   ' Save result image
   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24)
   image.Dispose()
End Sub

Remarks

Only TIFF and DICOM file formats are capable of saving images that have been window-leveled. Images can be window-leveled by calling Leadtools.RasterImage.WindowLevel(System.Int32,System.Int32,Leadtools.RasterColor[],Leadtools.RasterWindowLevelMode) and specifying RasterWindowLevelMode.PaintAndProcessing for the flags parameter, by using the WindowLevelCommand or by loading an image from a file format that supports Window Leveling. If a window-leveled image is saved as any other file format, the image data will be converted before being saved. For more information, refer to Saving Window-Leveled Images.
See WindowLevelExtCommand for a version of this class using 16-bit lookup tables.
For more information, refer to Introduction to Image Processing With LEADTOOLS.
For more information, refer to Grayscale Images.

Inheritance Hierarchy

System.Object
   Leadtools.ImageProcessing.RasterCommand
      Leadtools.ImageProcessing.Core.WindowLevelCommand

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

Reference

WindowLevelCommand Members
Leadtools.ImageProcessing.Core Namespace
Introduction to Image Processing With LEADTOOLS
Grayscale Images
WindowLevelCommand Class
Leadtools.RasterPalette.WindowLevelFillLookupTable(Leadtools.RasterColor[],Leadtools.RasterColor,Leadtools.RasterColor,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,Leadtools.RasterPaletteWindowLevelFlags)
ApplyVoiLookupTableCommand Class
Leadtools.ImageProcessing.Color.ChannelMixerCommand
Leadtools.ImageProcessing.Effects.DeinterlaceCommand
Leadtools.ImageProcessing.Color.DesaturateCommand
Leadtools.ImageProcessing.Effects.EdgeDetectStatisticalCommand
Leadtools.ImageProcessing.Color.LightControlCommand
Leadtools.ImageProcessing.Effects.SmoothEdgesCommand
Leadtools.ImageProcessing.Color.LocalHistogramEqualizeCommand
Leadtools.ImageProcessing.Color.AddWeightedCommand
Leadtools.ImageProcessing.Color.ColorMergeCommand
Leadtools.ImageProcessing.Color.ColorSeparateCommand
Leadtools.ImageProcessing.Color.MultiplyCommand
Leadtools.ImageProcessing.Color.AutoColorLevelCommand
Leadtools.ImageProcessing.Color.ColorLevelCommand
CorrelationCommand Class
Leadtools.ImageProcessing.Color.GrayScaleToDuotoneCommand
Leadtools.ImageProcessing.Color.GrayScaleToMultitoneCommand
Leadtools.ImageProcessing.Effects.RegionHolesRemovalCommand
Leadtools.ImageProcessing.Color.SelectiveColorCommand
Leadtools.ImageProcessing.Effects.SkeletonCommand
Leadtools.ImageProcessing.Color.ChangeHueSaturationIntensityCommand
Leadtools.ImageProcessing.Color.ColorReplaceCommand
Leadtools.ImageProcessing.Color.ColorThresholdCommand
Leadtools.ImageProcessing.Color.MathematicalFunctionCommand
Leadtools.ImageProcessing.Color.SegmentCommand
Leadtools.ImageProcessing.Color.AdaptiveContrastCommand
Leadtools.ImageProcessing.Color.ApplyMathematicalLogicCommand
Leadtools.ImageProcessing.Color.ColorIntensityBalanceCommand
ColorizeGrayCommand Class
Leadtools.ImageProcessing.Color.ContrastBrightnessIntensityCommand
DigitalSubtractCommand Class
Leadtools.ImageProcessing.Color.DynamicBinaryCommand
Leadtools.ImageProcessing.Effects.EdgeDetectEffectCommand
Leadtools.ImageProcessing.SpecialEffects.FunctionalLightCommand
MultiscaleEnhancementCommand Class
SelectDataCommand Class
ShiftDataCommand Class