←Select platform

WatershedCommand Class

Summary
Separates the image into different segments using the Watershed algorithm.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class WatershedCommand : RasterCommand 
@interface LTWatershedCommand : LTRasterCommand 
public class WatershedCommand 
    extends RasterCommand 
public ref class WatershedCommand : public RasterCommand   
class WatershedCommand(RasterCommand): 
Remarks
  • Each segment's pixels has the same color. The Watershed algorithm treats an image as if it were a topographic surface. The dark areas are basins. The light areas are the ridges around the basins.
  • The user is responsible for determining the number of output segments and the location of each segment in the input array.
  • This command supports 8, 16-bit grayscale and colored images and 24, 32-bit colored images.
  • This command does not support 32-bit grayscale images.
  • This command supports signed/unsigned images.

Watershed Segmentation Function - Before

Watershed Segmentation Function - Before

Watershed Segmentation Function - After

Watershed Segmentation Function - After

View additional platform support for this Watershed Segmentation function.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void WatershedCommandExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   //Load an image 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm")); 
 
   LeadPoint[][] pointsArray = new LeadPoint[4][]; 
 
   for (int idx = 0; idx < 4; idx++) 
      pointsArray[idx] = new LeadPoint[2]; 
 
   // Set starting point and end point for each segment path. 
   pointsArray[0][0] = new LeadPoint(35, 100); 
   pointsArray[0][1] = new LeadPoint(35, 200); 
 
   pointsArray[1][0] = new LeadPoint(180, 115); 
   pointsArray[1][1] = new LeadPoint(300, 115); 
 
   pointsArray[2][0] = new LeadPoint(235, 220); 
   pointsArray[2][1] = new LeadPoint(260, 220); 
 
   pointsArray[3][0] = new LeadPoint(180, 330); 
   pointsArray[3][1] = new LeadPoint(350, 330); 
 
   //Prepare the command 
   WatershedCommand command = new WatershedCommand(pointsArray); 
 
   //Apply  
   command.Run(image); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
 
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.core.*; 
 
 
public void watershedCommandExample() { 
   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, "DICOM\\image3.dcm")); 
 
   ArrayList<ArrayList<LeadPoint>> pointsArray = new ArrayList<ArrayList<LeadPoint>>(); 
 
   for (int idx = 0; idx < 4; idx++) { 
      pointsArray.add(new ArrayList<LeadPoint>()); 
      for (int i = 0; i < 2; i++) { 
         pointsArray.get(idx).add(new LeadPoint()); 
      } 
   } 
 
   // Set starting point and end point for each segment path. 
   pointsArray.get(0).set(0, new LeadPoint(35, 100)); 
   pointsArray.get(0).set(1, new LeadPoint(35, 200)); 
 
   pointsArray.get(1).set(0, new LeadPoint(180, 115)); 
   pointsArray.get(1).set(1, new LeadPoint(300, 115)); 
 
   pointsArray.get(2).set(0, new LeadPoint(235, 220)); 
   pointsArray.get(2).set(1, new LeadPoint(260, 220)); 
 
   pointsArray.get(3).set(0, new LeadPoint(180, 330)); 
   pointsArray.get(3).set(1, new LeadPoint(350, 330)); 
 
   // Prepare the command 
   WatershedCommand command = new WatershedCommand(); 
   command.setPointsArray(pointsArray); 
 
   // Apply 
   int change = command.run(image); 
   assertTrue(change != RasterImageChangedFlags.NONE); 
 
   codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "DICOM\\Result.dcm"), RasterImageFormat.DICOM_COLOR, 0); 
   System.out.println("Command run and image saved to: " + combine(LEAD_VARS_IMAGES_DIR, "DICOM\\Result.dcm")); 
} 
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.