←Select platform

OtsuThresholdCommand Class

Summary
Performs image segmentation and color reduction using Otsu clustering on grayscale images.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class OtsuThresholdCommand : RasterCommand 
@interface LTOtsuThresholdCommand : LTRasterCommand 
public class OtsuThresholdCommand 
    extends RasterCommand 
public ref class OtsuThresholdCommand : public RasterCommand   
class OtsuThresholdCommand(RasterCommand): 
Remarks
  • This command works only with grayscale images. If the input image is colored it will be converted to a grayscale image.
  • Otsu clustering is performed by making each cluster as compact as possible so as to minimize overlap. If one adjusts a threshold one way, the spread of one cluster gets larger and the spread for the second cluster gets smaller. Different threshold values are tried until the one is found which produces the minimum combined spread.
  • Otsu thresholding is typically used as a way to binarize an image. It is best when used on an image that has a bimodal histogram (Clusters = 2).
  • This command supports 8, 16-bit grayscale images and 24, 32-bit colored images. Support for 16-bit grayscale is available in the Document/Medical Imaging toolkits.
  • This command supports signed/unsigned images.

Otsu Thresholding Function - Before

Otsu Thresholding Function - Before

Otsu Thresholding Function - After

Otsu Thresholding Function - After

View additional platform support for this Otsu Thresholding function.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
 
public void OtsuThresholdCommandExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   //Load an image 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, @"ImageProcessingDemo\NaturalFruits.jpg")); 
 
   //Prepare the command 
   OtsuThresholdCommand command = new OtsuThresholdCommand(); 
 
   //Apply  
   command.Clusters = 4; 
   command.Run(image); 
} 
 
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.Test; 
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.core.OtsuThresholdCommand; 
 
 
public void otsuThresholdCommandExample() { 
    final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
 
    RasterCodecs codecs = new RasterCodecs(); 
    codecs.setThrowExceptionsOnInvalidImages(true); 
 
    // Load an image 
    RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "NaturalFruits.jpg")); 
 
    // Prepare the command 
    OtsuThresholdCommand command = new OtsuThresholdCommand(); 
 
    // Apply 
    command.setClusters(4); 
    command.run(image); 
 
    // Save the image 
    String outputFileName = combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"); 
    codecs.save(image, outputFileName, RasterImageFormat.JPEG, 24); 
    assertTrue(new File(outputFileName).exists()); 
    System.out.printf("Command run and image exported to: %s%n", outputFileName); 
} 
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.Core Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.