←Select platform

SmoothCommand Class

Summary
Smooths the bumps and fills in the nicks of a 1-bit black and white image. This command is available in the Document/Medical toolkits.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class SmoothCommand : RasterCommand 
@interface LTSmoothCommand : LTRasterCommand 
public class SmoothCommand 
    extends RasterCommand 
public ref class SmoothCommand : public RasterCommand   
class SmoothCommand(RasterCommand): 
Remarks
  • This command smooths the text in scanned text documents. The behavior of this command can be modified by using an Event Handler that handles the SmoothCommandEventArgs. This command works only on 1-bit black and white images.
  • This command works only on 1-bit black and white images.
  • If a region is selected, only the selected region will be changed by this command. If no region is selected, the whole image will be processed.
  • This command does not support signed data images.
  • This command does not support 32-bit grayscale images.

For more information, refer to Cleaning Up 1-Bit Images.

Smooth Function - Before

Smooth Function - Before

Smooth Function - After

Smooth Function - After

View additional platform support for this Smooth function.

Example

Run the SmoothCommand on an image.

C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void SmoothCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "clean.tif")); 
 
   // Prepare the command 
   SmoothCommand command = new SmoothCommand(); 
   command.Smooth += new EventHandler<SmoothCommandEventArgs>(SmoothEventExample_S1); 
   command.Flags = SmoothCommandFlags.FavorLong; 
   command.Length = 2; 
 
   command.Run(image); 
 
} 
 
private void SmoothEventExample_S1(object sender, SmoothCommandEventArgs e) 
{ 
   string BumpOrNeck; 
   string Direction; 
 
   if (e.BumpNick == SmoothCommandBumpNickType.Bump) 
      BumpOrNeck = "Bump"; 
   else 
      BumpOrNeck = "Neck"; 
 
   if (e.Direction == SmoothCommandDirectionType.Horizontal) 
      Direction = "Horizontal"; 
   else 
      Direction = "Vertical"; 
 
   System.Diagnostics.Debug.WriteLine("Type " + BumpOrNeck + 
      "\n Row Column " + e.StartRow.ToString() + e.StartColumn.ToString() + 
      "\n Length " + e.Length + 
      "\n Direction " + Direction); 
 
   e.Status = RemoveStatus.Remove; 
} 
 
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.core.*; 
 
 
public void smoothCommandExample() { 
   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, "clean.tif"), 1, CodecsLoadByteOrder.BGR, 1, 1); 
 
   // Prepare the command 
   SmoothCommand command = new SmoothCommand(); 
   command.addSmoothCommandListener(smoothEventExample_S1); 
   command.setFlags(SmoothCommandFlags.FAVOR_LONG.getValue()); 
   command.setLength(2); 
   int change = command.run(image); 
   assertTrue(change != RasterImageChangedFlags.NONE); 
 
   codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "clean.tif"), RasterImageFormat.JPEG, 24); 
   System.out.println("Command run and image saved to " + combine(LEAD_VARS_IMAGES_DIR, "clean.tif")); 
} 
 
SmoothCommandListener smoothEventExample_S1 = new SmoothCommandListener() { 
   @Override 
   public void onSmoothEvent(SmoothCommandEvent e) { 
 
      String BumpOrNeck; 
      if (e.getBumpNick() == SmoothCommandBumpNickType.BUMP) 
         BumpOrNeck = "Bump"; 
      else 
         BumpOrNeck = "Neck"; 
 
      String Direction; 
      if (e.getDirection() == SmoothCommandDirectionType.HORIZONTAL) 
         Direction = "Horizontal"; 
      else 
         Direction = "Vertical"; 
 
      System.out.println("Type " + BumpOrNeck + 
            "\n Row Column " + e.getStartRow() + e.getStartColumn() + 
            "\n Length " + e.getLength() + 
            "\n Direction " + Direction); 
 
      e.setStatus(RemoveStatus.REMOVE); 
   } 
}; 
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.