←Select platform

BorderRemoveCommand Class

Summary
Removes the black borders in 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 BorderRemoveCommand : RasterCommand 
@interface LTBorderRemoveCommand : LTRasterCommand 
public class BorderRemoveCommand 
    extends RasterCommand 
public ref class BorderRemoveCommand : public RasterCommand   
class BorderRemoveCommand(RasterCommand): 
Remarks
  • This command removes borders that commonly appear in scanned text documents. Any or all of the four borders can be detected and removed. The behavior of this command can be modified by using an Event Handler that handles the BorderRemoveCommandEventArgs.
  • 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.

Border Remove Function - Before

Border Remove Function - Before

Border Remove Function - After

Border Remove Function - After

View additional platform support for this Border Remove function.

Example

Run the BorderRemoveCommand on an image.

C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
 
public void BorderRemoveCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif")); 
 
   // Prepare the command 
   BorderRemoveCommand command = new BorderRemoveCommand(); 
   command.BorderRemove += new EventHandler<BorderRemoveCommandEventArgs>(command_BorderRemove_S1); 
   command.Border = BorderRemoveBorderFlags.All; 
   command.Flags = BorderRemoveCommandFlags.UseVariance; 
   command.Percent = 20; 
   command.Variance = 3; 
   command.WhiteNoiseLength = 9; 
 
   command.Run(image); 
 
} 
 
private void command_BorderRemove_S1(object sender, BorderRemoveCommandEventArgs e) 
{ 
   string Border; 
 
   switch (e.Border) 
   { 
      case BorderRemoveBorderFlags.Top: 
         Border = "Top"; 
         break; 
      case BorderRemoveBorderFlags.Left: 
         Border = "Left"; 
         break; 
      case BorderRemoveBorderFlags.Right: 
         Border = "Right"; 
         break; 
      case BorderRemoveBorderFlags.Bottom: 
         Border = "Bottom"; 
         break; 
      default: 
         Border = ""; 
         break; 
   } 
   MessageBox.Show("Bounds " + "( " + e.BoundingRectangle.Left + ", " + e.BoundingRectangle.Top + ") - " + "( " + e.BoundingRectangle.Right + ", " + e.BoundingRectangle.Bottom + ")" + "\n Border " + Border.ToString()); 
   e.Status = RemoveStatus.Remove; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.beans.EventHandler; 
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.core.*; 
import leadtools.imageprocessing.color.*; 
 
 
public void borderRemoveCommandExample() { 
 
   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 
   BorderRemoveCommand command = new BorderRemoveCommand(); 
   command.addBorderRemoveCommandListener(command_BorderRemove_S1); 
   command.setBorder(BorderRemoveBorderFlags.ALL.getValue()); 
   command.setFlags(BorderRemoveCommandFlags.USE_VARIANCE.getValue()); 
   command.setPercent(20); 
   command.setVariance(3); 
   command.setWhiteNoiseLength(9); 
 
   command.run(image); 
 
   System.out.println("Command run and image saved to " + combine(LEAD_VARS_IMAGES_DIR, "clean.tif")); 
   assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "clean.tif")).exists()); 
 
} 
 
BorderRemoveCommandListener command_BorderRemove_S1 = new BorderRemoveCommandListener() { 
 
   @Override 
   public void onBorderRemoveEvent(BorderRemoveCommandEvent e) { 
      String Border; 
 
      switch (e.getBorder()) { 
 
         // Top 
         case 0x00000004: 
            Border = "Top"; 
            break; 
 
         // Left 
         case 0x00000001: 
            Border = "Left"; 
            break; 
 
         // Right 
         case 0x00000002: 
            Border = "Right"; 
            break; 
 
         // Bottom 
         case 0x00000008: 
            Border = "Bottom"; 
            break; 
 
         default: 
            Border = ""; 
            break; 
 
      } 
 
      System.out.println("Bounds " + "( " + e.getBoundingRectangle().getLeft() + ", " 
            + e.getBoundingRectangle().getTop() + ") - " + "( " + e.getBoundingRectangle().getRight() + ", " 
            + e.getBoundingRectangle().getBottom() + ")" + "\n Border " + Border); 
      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.