←Select platform

ColorLevelCommand Class

Summary

Applies color leveling to an image. It changes the image shadows, midtones and highlights. This function is useful for pre-processing images for the purpose of improving barcode recognition results.

Syntax
C#
VB
Objective-C
C++
Java
public class ColorLevelCommand : RasterCommand 
Public Class ColorLevelCommand  
   Inherits RasterCommand 
@interface LTColorLevelCommand : LTRasterCommand 
public class ColorLevelCommand extends RasterCommand 
public ref class ColorLevelCommand : public RasterCommand   

Remarks
  • The members of the ColorLevelCommandData class tell the ColorLevelCommand what constitutes shadows, midtones, and highlights and how to remap the shadows, midtones and highlights.
  • Control the amount of image balance and leveling by controlling the values of the MinimumInput, MaximumInput, MinimumOutput, MaximumOutput, and Gamma members of the ColorLevelCommandData class.
    • The MinimumInput property of the ColorLevelCommandData class defines what the method interprets as shadows for that color channel. Any value less than or equal to MinimumInput is considered a shadow.
    • The MaximumInput property of the ColorLevelCommandData class defines what the method interprets as highlights for that color channel. Any value greater than or equal to MaximumInput is considered a highlight.
    • The value of the MaximumInput property must be greater than the value of the MinimumInput property by at least 2.
    • Midtones are those values between MinimumInput and MaximumInput.
    • The MinimumOutput property is the value to which the shadows will be mapped.
    • The MaximumOutput property is the value to which the highlights will be mapped.
    • The Gamma property is used to modify the midtone values
  • If only ColorLevelCommandFlags.Master is set in the Flags property, then the rest of the channels will still be affected.
  • If the image is a grayscale image, then you must set ColorLevelCommandFlags.Master in the Flags property, otherwise the class will not have any effect.
  • If MinimumOutput > MaximumOutput then the image's shadows and highlights will be inverted.
  • This command does not support 12 and 16-bit grayscale.
  • This command supports 48 and 64-bit color images. Support for 48 and 64-bit color images is available only in the Document/Medical toolkits.
  • This command does not support signed data images.

For more information, refer to Changing Brightness and Contrast. For more information, refer to Correcting Colors.

Example

Run the ColorLevelCommand on an image.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Color; 
 
public void ColorLevelCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP")); 
 
   // Prepare the command 
   ColorLevelCommandData blue = new ColorLevelCommandData(); 
   ColorLevelCommandData master = new ColorLevelCommandData(); 
   //Specify Image levels 
   blue.MinimumInput = 20; 
   blue.MaximumInput = 200; 
   blue.MinimumOutput = 0; 
   blue.MaximumOutput = 255; 
   blue.Gamma = 100; 
   // Master will cause the image to be Inversed 
   master.MinimumInput = 0; 
   master.MaximumInput = 255; 
   master.MinimumOutput = 255; 
   master.MaximumOutput = 0; 
   master.Gamma = 100; 
   // Level the Blue and Master channels 
   ColorLevelCommand command = new ColorLevelCommand(master, null, null, blue, ColorLevelCommandFlags.Blue | ColorLevelCommandFlags.Master); 
   command.Run(image); 
   codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24); 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Color 
 
Public Sub ColorLevelCommandExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP")) 
 
   ' Prepare the command 
   Dim blue As ColorLevelCommandData = New ColorLevelCommandData 
   Dim master As ColorLevelCommandData = New ColorLevelCommandData 
   ' Specify Image levels 
   blue.MinimumInput = 20 
   blue.MaximumInput = 200 
   blue.MinimumOutput = 0 
   blue.MaximumOutput = 255 
   blue.Gamma = 100 
   ' Master will cause the image to be Inversed 
   master.MinimumInput = 0 
   master.MaximumInput = 255 
   master.MinimumOutput = 255 
   master.MaximumOutput = 0 
   master.Gamma = 100 
   ' Level the Blue and Master channels 
   Dim command As ColorLevelCommand = New ColorLevelCommand(master, Nothing, Nothing, blue, ColorLevelCommandFlags.Blue Or ColorLevelCommandFlags.Master) 
   command.Run(leadImage) 
   codecs.Save(leadImage, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24) 
 
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.Codecs; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Examples; 
 
public void ColorLevelCommandExample(RasterImage image, Stream outStream) 
{ 
   // Prepare the command 
   ColorLevelCommandData blue = new ColorLevelCommandData(); 
   ColorLevelCommandData master = new ColorLevelCommandData(); 
   //Specify Image levels 
   blue.MinimumInput = 20; 
   blue.MaximumInput = 200; 
   blue.MinimumOutput = 0; 
   blue.MaximumOutput = 255; 
   blue.Gamma = 100; 
   // Master will cause the image to be Inversed 
   master.MinimumInput = 0; 
   master.MaximumInput = 255; 
   master.MinimumOutput = 255; 
   master.MaximumOutput = 0; 
   master.Gamma = 100; 
   // Level the Blue and Master channels 
   ColorLevelCommand command = new ColorLevelCommand(master, null, null, blue, ColorLevelCommandFlags.Blue | ColorLevelCommandFlags.Master); 
   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.Color 
 
Public Sub ColorLevelCommandExample(ByVal image As RasterImage, ByVal outStream As Stream) 
   ' Prepare the command 
   Dim blue As ColorLevelCommandData = New ColorLevelCommandData() 
   Dim master As ColorLevelCommandData = New ColorLevelCommandData() 
   'Specify Image levels 
   blue.MinimumInput = 20 
   blue.MaximumInput = 200 
   blue.MinimumOutput = 0 
   blue.MaximumOutput = 255 
   blue.Gamma = 100 
   ' Master will cause the image to be Inversed 
   master.MinimumInput = 0 
   master.MaximumInput = 255 
   master.MinimumOutput = 255 
   master.MaximumOutput = 0 
   master.Gamma = 100 
   ' Level the Blue and Master channels 
   Dim command As ColorLevelCommand = New ColorLevelCommand(master, Nothing, Nothing, blue, ColorLevelCommandFlags.Blue Or ColorLevelCommandFlags.Master) 
   command.Run(image) 
 
   ' Save result image 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24) 
   image.Dispose() 
End Sub 

Requirements

Target Platforms

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Color Assembly