←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#
Objective-C
C++/CLI
Java
Python
public class ColorLevelCommand : RasterCommand 
@interface LTColorLevelCommand : LTRasterCommand 
public class ColorLevelCommand 
    extends RasterCommand 
public ref class ColorLevelCommand : public RasterCommand   
class ColorLevelCommand(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.

Color Level Function - Before

Color Level Function - Before

Color Level Function - After

Color Level Function - After

View additional platform support for this Color Level function.

Example

Run the ColorLevelCommand on an image.

C#
Java
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(0, 255, 255, 0, 100); 
   ColorLevelCommandData master = new ColorLevelCommandData(20, 200, 0, 255, 100); 
   ColorLevelCommandData red = new ColorLevelCommandData(0, 255, 0, 255, 100); 
   ColorLevelCommandData green = new ColorLevelCommandData(0, 255, 0, 255, 100); 
 
   // Level the Blue and Master channels 
   ColorLevelCommand command = new ColorLevelCommand(); 
   command.Blue = blue; 
   command.Red = red; 
   command.Green = green; 
   command.Master = master; 
   command.Flags = 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:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.assertTrue; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.color.*; 
 
 
public void colorLevelCommandExample() { 
 
    final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
 
    // Load an image 
    RasterCodecs codecs = new RasterCodecs(); 
    codecs.setThrowExceptionsOnInvalidImages(true); 
 
    RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "IMAGE1.CMP")); 
 
    // Prepare the command 
    ColorLevelCommandData blue = new ColorLevelCommandData(0, 255, 255, 0, 100); 
    ColorLevelCommandData master = new ColorLevelCommandData(20, 200, 0, 255, 100); 
    ColorLevelCommandData red = new ColorLevelCommandData(0, 255, 0, 255, 100); 
    ColorLevelCommandData green = new ColorLevelCommandData(0, 255, 0, 255, 100); 
 
    // Level the Blue and Master channels 
    ColorLevelCommand command = new ColorLevelCommand(); 
    command.setBlue(blue); 
    command.setRed(red); 
    command.setGreen(green); 
    command.setMaster(master); 
    command.setFlags(ColorLevelCommandFlags.BLUE.getValue() | ColorLevelCommandFlags.MASTER.getValue()); 
    command.run(image); 
 
    String outputFilePath = combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"); 
    codecs.save(image, outputFilePath, RasterImageFormat.JPEG, 24); 
 
    System.out.println("Command run and image saved to " + outputFilePath); 
    assertTrue(new File(outputFilePath).exists()); 
} 
Requirements

Target Platforms

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

Leadtools.ImageProcessing.Color Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.