←Select platform

ApplyMathematicalLogicCommand Class

Summary
Performs specific mathematical or logical operations on the colors of the image.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class ApplyMathematicalLogicCommand : RasterCommand 
@interface LTApplyMathematicalLogicCommand : LTRasterCommand 
public class ApplyMathematicalLogicCommand 
    extends RasterCommand 
public: 
   ref class ApplyMathematicalLogicCommand : RasterCommand 
class ApplyMathematicalLogicCommand(RasterCommand): 
Remarks
  • This command supports 12 and 16-bit grayscale and 48 and 64-bit color images. Support for 12 and 16-bit grayscale and 48 and 64-bit color images is available only in the Document/Medical toolkits.
  • This command does not support 32-bit grayscale images.

Calculating Master Channel Values

In order to speed up widely used image processing filters in LEADTOOLS, the grayscale value (master channel) of a colored image is calculated using the following formulas:

#define CalcGrayValue(r, g, b) ((L_UCHAR)(((L_UCHAR) (((2 * (L_UINT) (r)) + (5 * (L_UINT) (g)) + (L_UINT) (b) + 4) / 8)))) 
#define CalcGrayValue16(r, g, b) ((L_UINT16) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8)) 
#define CalcGrayValue32(r, g, b) ((L_UINT32) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8)) 

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

Apply Mathematical Logic Function - Before

Apply Mathematical Logic Function - Before

Apply Mathematical Logic Function - After

Apply Mathematical Logic Function - After

View additional platform support for this Apply Mathematical Logic function.

Example

Run the ApplyMathematicalLogicCommand on an image.

C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Color; 
 
 
public void ApplyMathematicalLogicCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, @"ImageProcessingDemo\NaturalFruits.jpg")); 
 
   // Prepare the command 
   ApplyMathematicalLogicCommand command = new ApplyMathematicalLogicCommand(); 
   command.Factor = 151; 
   command.Flags = ApplyMathematicalLogicCommandFlags.OperationMultiply | ApplyMathematicalLogicCommandFlags.ValueDoNothing | ApplyMathematicalLogicCommandFlags.ResultDoNothing; 
   // Multiply the colors of the bitmap using a factor of 1.51 . 
   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.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.color.*; 
 
 
public void applyMathematicalLogicCommandExample() { 
 
    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, "naturalfruits.jpg")); 
 
    // Prepare the command 
    ApplyMathematicalLogicCommand command = new ApplyMathematicalLogicCommand(); 
    command.setFactor(151); 
    command.setFlags(ApplyMathematicalLogicCommandFlags.OPERATION_MULTIPLY.getValue() 
            | ApplyMathematicalLogicCommandFlags.VALUE_DO_NOTHING.getValue() 
            | ApplyMathematicalLogicCommandFlags.RESULT_DO_NOTHING.getValue()); 
 
    // Multiply the colors of the bitmap using a factor of 1.51 
    command.run(image); 
    codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"), RasterImageFormat.JPEG, 24); 
 
    System.out.println("Command run and image saved to: " + combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")); 
    assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")).exists()); 
 
} 
// <!--ImageProcessing.Color.ApplyMathematicalLogicCommand--> 
 
// <!--ImageProcessing.Color.ApplyMathematicalLogicCommand.ApplyMathematicalLogicConstructor--> 
public void applyMathematicalLogicConstructorExample() { 
 
    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, "naturalfruits.jpg")); 
 
    // Prepare the command 
    ApplyMathematicalLogicCommand command = new ApplyMathematicalLogicCommand(151, 
            ApplyMathematicalLogicCommandFlags.OPERATION_MULTIPLY.getValue() 
                    | ApplyMathematicalLogicCommandFlags.VALUE_DO_NOTHING.getValue() 
                    | ApplyMathematicalLogicCommandFlags.RESULT_DO_NOTHING.getValue()); 
 
    // Multiply the colors of the bitmap using a factor of 1.51 
    command.run(image); 
    codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"), RasterImageFormat.JPEG, 24); 
 
    System.out.println(combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")); 
    assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")).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.