LEADTOOLS Image Processing (Leadtools.ImageProcessing.Core assembly)
LEAD Technologies, Inc

LineRemoveCommand Constructor(LineRemoveCommandFlags,Int32,Int32,Int32,Int32,Int32,Int32,LineRemoveCommandType)

Example 





Flags that determine the behavior of the line removal process.
Minimum length of a line considered for removal. Lines less than this length are not removed. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels.
Maximum average width of a line that is considered for removal. Lines that are greater in average width are not removed. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels.
Height of a wall. Walls are slices of a line that are too wide to be considered part of the line. Examples of walls include a character that a line passes through or a perpendicular line. If the image contains lines that pass through characters, set Wall to be equal to or a little larger than MaximumLineWidth. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels.
The maximum number of wall slices (expressed as a percent of the total length of the line) that are allowed. A line consists of wall slices and non-wall slices (see description of Wall). This parameter specifies that maximum number of wall slices (expressed as a percent of the total length of the line) that are allowed. Lines that have a wall percent that is larger than maximumWallPercent will not be removed. For example, consider the line below that is 10 pixels in length, and 1 pixel in height in some places, and five pixels in height in other places.


Setting minimumLineLength to 10 pixels and wall to four pixels will identify the line below as a candidate for removal. Note that the wall percent for this line is 60 percent (because six of ten line slices are walls). If maximumWallPercent is 80 then the line will be removed (actually, the pixels marked as red will be removed). If maximumWallPercent is 30, then the line will not be removed.


Maximum length of a break or a hole in a line. This can be used to remove dotted lines, dashed lines, or lines that have breaks due to scanning. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels. This parameter is valid only if the LineRemoveCommandFlags.UseDpi flag is set.
Amount of width change that is tolerated between adjacent line slices. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels. This parameter is valid only if the LineRemoveCommandFlags.UseVariance flag is set. For example, the following horizontal line is 30 pixels in length (X represents a pixel)


If variance is 2 pixels (i.e. tolerate width changes of 2 pixels or less), the first 10 columns and the last 10 columns of the line will be removed. The middle 10 columns will be unchanged. This helps preserve characters that intersect a line that is being removed.
Flag that indicates which lines to remove.
Initializes a new LineRemoveCommand class object with explicit parameters. .NET support WinRT support Silverlight support
Syntax
public LineRemoveCommand( 
   LineRemoveCommandFlags flags,
   int minimumLineLength,
   int maximumLineWidth,
   int wall,
   int maximumWallPercent,
   int gapLength,
   int variance,
   LineRemoveCommandType type
)
'Declaration
 
Public Function New( _
   ByVal flags As LineRemoveCommandFlags, _
   ByVal minimumLineLength As Integer, _
   ByVal maximumLineWidth As Integer, _
   ByVal wall As Integer, _
   ByVal maximumWallPercent As Integer, _
   ByVal gapLength As Integer, _
   ByVal variance As Integer, _
   ByVal type As LineRemoveCommandType _
)
'Usage
 
Dim flags As LineRemoveCommandFlags
Dim minimumLineLength As Integer
Dim maximumLineWidth As Integer
Dim wall As Integer
Dim maximumWallPercent As Integer
Dim gapLength As Integer
Dim variance As Integer
Dim type As LineRemoveCommandType
 
Dim instance As New LineRemoveCommand(flags, minimumLineLength, maximumLineWidth, wall, maximumWallPercent, gapLength, variance, type)
public LineRemoveCommand( 
   LineRemoveCommandFlags flags,
   int minimumLineLength,
   int maximumLineWidth,
   int wall,
   int maximumWallPercent,
   int gapLength,
   int variance,
   LineRemoveCommandType type
)
function LineRemoveCommand( 
   flags ,
   minimumLineLength ,
   maximumLineWidth ,
   wall ,
   maximumWallPercent ,
   gapLength ,
   variance ,
   type 
)
public:
LineRemoveCommand( 
   LineRemoveCommandFlags flags,
   int minimumLineLength,
   int maximumLineWidth,
   int wall,
   int maximumWallPercent,
   int gapLength,
   int variance,
   LineRemoveCommandType type
)

Parameters

flags
Flags that determine the behavior of the line removal process.
minimumLineLength
Minimum length of a line considered for removal. Lines less than this length are not removed. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels.
maximumLineWidth
Maximum average width of a line that is considered for removal. Lines that are greater in average width are not removed. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels.
wall
Height of a wall. Walls are slices of a line that are too wide to be considered part of the line. Examples of walls include a character that a line passes through or a perpendicular line. If the image contains lines that pass through characters, set Wall to be equal to or a little larger than MaximumLineWidth. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels.
maximumWallPercent
The maximum number of wall slices (expressed as a percent of the total length of the line) that are allowed. A line consists of wall slices and non-wall slices (see description of Wall). This parameter specifies that maximum number of wall slices (expressed as a percent of the total length of the line) that are allowed. Lines that have a wall percent that is larger than maximumWallPercent will not be removed. For example, consider the line below that is 10 pixels in length, and 1 pixel in height in some places, and five pixels in height in other places.


Setting minimumLineLength to 10 pixels and wall to four pixels will identify the line below as a candidate for removal. Note that the wall percent for this line is 60 percent (because six of ten line slices are walls). If maximumWallPercent is 80 then the line will be removed (actually, the pixels marked as red will be removed). If maximumWallPercent is 30, then the line will not be removed.


gapLength
Maximum length of a break or a hole in a line. This can be used to remove dotted lines, dashed lines, or lines that have breaks due to scanning. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels. This parameter is valid only if the LineRemoveCommandFlags.UseDpi flag is set.
variance
Amount of width change that is tolerated between adjacent line slices. If the LineRemoveCommandFlags.UseDpi flag is set, units are in thousandths of an inch, otherwise units are in pixels. This parameter is valid only if the LineRemoveCommandFlags.UseVariance flag is set. For example, the following horizontal line is 30 pixels in length (X represents a pixel)


If variance is 2 pixels (i.e. tolerate width changes of 2 pixels or less), the first 10 columns and the last 10 columns of the line will be removed. The middle 10 columns will be unchanged. This helps preserve characters that intersect a line that is being removed.
type
Flag that indicates which lines to remove.
Example
 
Public WithEvents lineRemoveCommand_S2 As LineRemoveCommand
Public Sub LineRemoveConstructorExample()
   Dim codecs As New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif"))

   ' Prepare the command
   lineRemoveCommand_S2 = New LineRemoveCommand(LineRemoveCommandFlags.UseVariance Or LineRemoveCommandFlags.SingleRegion, 200, 5, 7, 10, 2, 2, LineRemoveCommandType.Horizontal)
   lineRemoveCommand_S2.Run(leadImage)

End Sub

Private Sub LineRemoveCommand_LineRemove_S2(ByVal sender As Object, ByVal e As LineRemoveCommandEventArgs) Handles lineRemoveCommand_S2.LineRemove
   MessageBox.Show("Row Col " + "( " + e.StartRow.ToString() + ", " + e.StartColumn.ToString() + " )" + _
      Chr(13) + " Length " + e.Length.ToString())
   e.Status = RemoveStatus.Remove
End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void LineRemoveConstructorExample()
   {
      // Load an image
      RasterCodecs codecs = new RasterCodecs();
      codecs.ThrowExceptionsOnInvalidImages = true;

      RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif"));

      // Prepare the command
      LineRemoveCommand command = new LineRemoveCommand( LineRemoveCommandFlags.UseVariance | LineRemoveCommandFlags.SingleRegion, 200, 5, 7, 10, 2, 2, LineRemoveCommandType.Horizontal);
      command.LineRemove += new EventHandler<LineRemoveCommandEventArgs>(LineRemoveEvent_S2);
      command.Run(image);

   }

   private void LineRemoveEvent_S2(object sender, LineRemoveCommandEventArgs e)
   {
      MessageBox.Show("Row Col "   + "( " + e.StartRow.ToString() + ", " + e.StartColumn + " )" +
         "\n Length " + e.Length.ToString());
      e.Status= RemoveStatus.Remove;
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
function LineRemoveConstructorExample()
{
   var codecs = new Leadtools.Codecs.RasterCodecs();
   codecs.throwExceptionsOnInvalidImages = true;

   // Load the image
   var srcFileName = "Assets\\clean.tif";
   return Tools.AppInstallFolder().getFileAsync(srcFileName).then(function (loadFile) {
      return codecs.loadAsync(Leadtools.LeadStreamFactory.create(loadFile));
   }).then(function (image) {
      // Prepare the command
      with (Leadtools.ImageProcessing.Core) {
         var command = new LineRemoveCommand( LineRemoveCommandFlags.useVariance | LineRemoveCommandFlags.singleRegion, 200, 5, 7, 10, 2, 2, LineRemoveCommandType.horizontal);
         command.addEventListener("lineremove", LineRemoveEvent_S2);
         command.run(image);
      }
   });
}

function LineRemoveEvent_S2(e)
{
   console.error("Row Col " + "( " + e.startRow.toString() + ", " + e.startColumn + " )" +
      "\n Length " + e.length.toString());
   e.status = Leadtools.ImageProcessing.Core.RemoveStatus.remove;
}
[TestMethod]
public async Task LineRemoveConstructorExample()
{
   // Load an image
   RasterCodecs codecs = new RasterCodecs();
   codecs.ThrowExceptionsOnInvalidImages = true;
   // Load the image
   string srcFileName = @"Assets\Clean.tif";
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));

   // Prepare the command
   LineRemoveCommand command = new LineRemoveCommand( LineRemoveCommandFlags.UseVariance | LineRemoveCommandFlags.SingleRegion, 200, 5, 7, 10, 2, 2, LineRemoveCommandType.Horizontal);
   command.LineRemove += new EventHandler<LineRemoveCommandEventArgs>(LineRemoveEvent_S2);
   command.Run(image);

}

private void LineRemoveEvent_S2(object sender, LineRemoveCommandEventArgs e)
{
   Debug.WriteLine("Row Col "   + "( " + e.StartRow.ToString() + ", " + e.StartColumn + " )" +
      "\n Length " + e.Length.ToString());
   e.Status= RemoveStatus.Remove;
}
public void LineRemoveConstructorExample(RasterImage image, Stream outStream)
{
   // Prepare the command
   LineRemoveCommand command = new LineRemoveCommand( LineRemoveCommandFlags.UseVariance | LineRemoveCommandFlags.SingleRegion, 200, 5, 7, 10, 2, 2, LineRemoveCommandType.Horizontal);
   command.LineRemove += new EventHandler<LineRemoveCommandEventArgs>(LineRemoveEvent_S2);
   command.Run(image);
   // Save result image
   RasterCodecs codecs = new RasterCodecs();
   codecs.Save(image, outStream, RasterImageFormat.CcittGroup4, 1);
   image.Dispose();
}

private void LineRemoveEvent_S2(object sender, LineRemoveCommandEventArgs e)
{
   Debug.WriteLine("Row Col "   + "( " + e.StartRow.ToString() + ", " + e.StartColumn + " )" +
      "\n Length " + e.Length.ToString());
   e.Status= RemoveStatus.Remove;
}
Public Sub LineRemoveConstructorExample(ByVal image As RasterImage, ByVal outStream As Stream)
   ' Prepare the command
   Dim command As LineRemoveCommand = New LineRemoveCommand(LineRemoveCommandFlags.UseVariance Or _
                                                            LineRemoveCommandFlags.SingleRegion, 200, 5, 7, 10, 2, 2, LineRemoveCommandType.Horizontal)
   AddHandler command.LineRemove, AddressOf LineRemoveEvent_S2
   command.Run(image)
   ' Save result image
   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.Save(image, outStream, RasterImageFormat.CcittGroup4, 1)
   image.Dispose()
End Sub

Private Sub LineRemoveEvent_S2(ByVal sender As Object, ByVal e As LineRemoveCommandEventArgs)
   Debug.WriteLine("Row Col " & "( " & e.StartRow.ToString() & ", " & e.StartColumn & " )" & Constants.vbLf & " Length " & e.Length.ToString())
   e.Status= RemoveStatus.Remove
End Sub
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

LineRemoveCommand Class
LineRemoveCommand Members
Overload List

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.