←Select platform

LineRemove Method

Summary

Removes horizontal and vertical lines in a 1-bit black and white image. This operation is available in the Document/Medical Toolkits.

Syntax

C#
VB
C++
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault,  
   Action="",  
   Name="",  
   Namespace="",  
   ProtectionLevel=ProtectionLevel.None,  
   HasProtectionLevel=false)] 
[OperationContractAttribute("LineRemove")] 
Leadtools.Services.Imageprocessing.Datacontracts.DocumentResponse LineRemove(  
   Leadtools.Services.Imageprocessing.Datacontracts.LineRemoveRequest request 
) 
<FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault,  
   Action="",  
   Name="",  
   Namespace="",  
   ProtectionLevel=ProtectionLevel.None,  
   HasProtectionLevel=False)> 
<OperationContractAttribute("LineRemove")> 
Function LineRemove( _ 
   ByVal request As Leadtools.Services.Imageprocessing.Datacontracts.LineRemoveRequest _ 
) As Leadtools.Services.Imageprocessing.Datacontracts.DocumentResponse 
[FaultContractAttribute(DetailType=Leadtools.Services.Raster.FaultContracts.RasterFault,  
   Action="",  
   Name="",  
   Namespace="",  
   ProtectionLevel=ProtectionLevel.None,  
   HasProtectionLevel=false)] 
[OperationContractAttribute("LineRemove")] 
Leadtools.Services.Imageprocessing.Datacontracts.DocumentResponse^ LineRemove(  
   Leadtools.Services.Imageprocessing.Datacontracts.LineRemoveRequest^ request 
) 

Parameters

request
A System.Runtime.Serialization.DataContractAttribute containing the data that will be used in this LineRemove operation.

Return Value

A System.Runtime.Serialization.DataContractAttribute containing the modified image resulting from the LineRemove operation.

Remarks
  • This operation removes horizontal and vertical lines from scanned text documents. If the lines pass through text, the Leadtools.Services.ImageProcessing.DataContracts.LineRemoveRequest properties/Constructor parameters can be configured to remove or preserve the text.
  • This operation works only on 1-bit black and white images.
  • If a region is selected, only the selected region will be changed by this operation. If no region is selected, the whole image will be processed.
  • This operation does not support signed data images.
  • This operation does not support 32-bit grayscale images.

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

Example

C#
VB
Imports Leadtools.Services 
Imports leadtools.services.datacontracts._2009._01 
Imports leadtools.services.raster.datacontracts._2009._01 
Imports leadtools.services.imageprocessing.datacontracts._2009._01 
 
Public Sub LineRemoveExample() 
   Dim client As DocumentProcessingServiceClient = New DocumentProcessingServiceClient() 
   Dim sourceBinaryData As RawBinaryData = New RawBinaryData() 
   sourceBinaryData.Data = File.ReadAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "clean.tif")) 
 
   Dim convertOptions As RasterConvertOptions = New RasterConvertOptions() 
 
   convertOptions.Source = sourceBinaryData 
   convertOptions.Destination = Nothing 
   convertOptions.Format = RasterImageFormat.Bmp 
   convertOptions.FirstPage = 1 
   convertOptions.LastPage = 1 
   convertOptions.BitsPerPixel = 24 
   convertOptions.QualityFactor = 2 
 
   Dim request As LineRemoveRequest = New LineRemoveRequest() 
 
   request.ConvertOptions = convertOptions 
   request.RegionData = Nothing 
   request.Flags = LineRemoveCommandFlags.UseGap Or LineRemoveCommandFlags.GetRegion 
   request.MinimumLineLength = 200 
   request.MaximumLineWidth = 5 
   request.Wall = 7 
   request.MaximumWallPercent = 10 
   request.GapLength = 2 
   request.Variance = 0 
   request.Type = LineRemoveCommandType.Horizontal 
 
   Dim response As DocumentResponse = client.LineRemove(request) 
   If Not response.Destination Is Nothing Then 
      If TypeOf response.Destination Is RawBinaryData Then 
         File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "LineRemove.bmp"), (TryCast(response.Destination, RawBinaryData)).Data) 
      End If 
   End If 
 
   If Not response.Region Is Nothing Then 
      Dim bitmap As Bitmap = New Bitmap(Path.Combine(LEAD_VARS.ImagesDir, "LineRemove.bmp")) 
      Dim graphics As Graphics = graphics.FromImage(bitmap) 
 
      Dim region1 As Region = New Region() 
      Dim regionData As RegionData = region1.GetRegionData() 
      regionData.Data = response.Region.Data 
 
      Dim region2 As Region = New Region(regionData) 
 
      graphics.FillRegion(Brushes.Red, region2) 
 
      bitmap.Save(Path.Combine(LEAD_VARS.ImagesDir, "LineRemoveRegion.bmp")) 
 
      region2.Dispose() 
      region1.Dispose() 
      bitmap.Dispose() 
      graphics.Dispose() 
   End If 
 
   client.Close() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
using Leadtools.Services; 
using leadtools.services.datacontracts._2009._01; 
using leadtools.services.raster.datacontracts._2009._01; 
using leadtools.services.imageprocessing.datacontracts._2009._01; 
 
public void LineRemoveExample() 
{ 
   DocumentProcessingServiceClient client = new DocumentProcessingServiceClient(); 
   RawBinaryData sourceBinaryData = new RawBinaryData(); 
   sourceBinaryData.Data = File.ReadAllBytes(Path.Combine(LEAD_VARS.ImagesDir, "clean.tif")); 
 
   RasterConvertOptions convertOptions = new RasterConvertOptions(); 
 
   convertOptions.Source = sourceBinaryData; 
   convertOptions.Destination = null; 
   convertOptions.Format = RasterImageFormat.Bmp; 
   convertOptions.FirstPage = 1; 
   convertOptions.LastPage = 1; 
   convertOptions.BitsPerPixel = 24; 
   convertOptions.QualityFactor = 2; 
 
   LineRemoveRequest request = new LineRemoveRequest(); 
 
   request.ConvertOptions = convertOptions; 
   request.RegionData = null; 
   request.Flags = LineRemoveCommandFlags.UseGap |   LineRemoveCommandFlags.GetRegion; 
   request.MinimumLineLength = 200; 
   request.MaximumLineWidth = 5; 
   request.Wall = 7; 
   request.MaximumWallPercent = 10; 
   request.GapLength = 2; 
   request.Variance = 0; 
   request.Type = LineRemoveCommandType.Horizontal; 
 
   DocumentResponse response = client.LineRemove(request); 
   if (response.Destination != null) 
   { 
      if (response.Destination is RawBinaryData) 
         File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir,"LineRemove.bmp"), (response.Destination as RawBinaryData).Data); 
   } 
 
   if (response.Region != null) 
   { 
      Bitmap bitmap = new Bitmap(Path.Combine(LEAD_VARS.ImagesDir,"LineRemove.bmp")); 
      Graphics graphics = Graphics.FromImage(bitmap); 
 
      Region region1 = new Region(); 
      RegionData regionData = region1.GetRegionData(); 
      regionData.Data = response.Region.Data; 
 
      Region region2 = new Region(regionData); 
 
      graphics.FillRegion(Brushes.Red, region2); 
 
      bitmap.Save(LeadtoolsExamples.Common.ImagesPath.Path + "LineRemoveRegion.bmp"); 
 
      region2.Dispose(); 
      region1.Dispose(); 
      bitmap.Dispose(); 
      graphics.Dispose(); 
   } 
 
   client.Close(); 
} 
 
static class LEAD_VARS 
{ 
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Click or drag to resize