LeadTools中文图像处理教程(3):倾斜校正

发布时间:2014/09/13 00:09 发布者:Linda

返回博客中心

  • LeadTools中文图像处理教程(1):更改数据格式 点击进入
  • LeadTools中文图像处理教程(2):图像的几何变换 点击进入
  • LeadTools中文图像处理教程(3):倾斜校正 点击进入
  • LeadTools中文图像处理教程(4):调整图像亮度和对比度 点击进入
  • LeadTools中文图像处理教程(5):图像去噪 点击进入
  • LeadTools中文图像处理教程(6):检测和增强边缘、线条 点击进入
  • LeadTools中文图像处理教程(7):应用艺术效果 点击进入
  • LeadTools中文图像处理教程(8):调整色彩 点击进入
  • LeadTools中文图像处理教程(9):添加图像至另一个图像 点击进入
  • LeadTools中文图像处理教程(10):窗位(仅用于Medical) 点击进入
  • LeadTools中文图像处理教程(11):对比图像 点击进入

在扫描文档的过程中经常会出现扫描图像倾斜的情况,倾斜会给显示或随后的处理带来很多不便。因此,图像的倾斜校正是非常必要的一个预处理。LeadTools作为全球领先的图像处理控件,在倾斜校正方面提供了DeskewCommand类进行相关处理,这个命令主要用于图像,例如扫描的文档,主要为有横线的文本。对于其他类型的图像,结果较难预测。还可以应用于银行支票图像。

下面,我们主要为大家介绍:

1 创建“倾斜校正”应用程序的具体步骤

2 DeskewCommand类的简单介绍

创建“倾斜校正”应用程序的具体步骤

 

1. 打开Visual Studio .NET。点击 文件->新建->项目…。打开新建项目对话框后,在模板中选择“Visual C#”或“Visual Basic”,随后选择“Windows窗体应用程序”。在名称栏中输入项目名称“DeskewCommand”,并使用“浏览”按钮选择您工程的存储路径,点击“确定”。

2. 在“解决方案资源管理器”中,右击“引用”,选择“添加引用”。根据当前工程的 Framework 版本和生成目标平台,选择添加相应的LeadTools控件,例如工程中的版本为 Framework 4.0、生成目标平台是 x86,则浏览选择Leadtools For .NET文件夹” <LEADTOOLS_INSTALLDIR>\Bin\DotNet4\Win32,选择以下的DLL“:

  • Leadtools.dll
  • Leadtools.Codecs.dll
  • Leadtools.Codecs.Tif.dll
  • Leadtools.ImageProcessing.Core.dll
  • Leadtools.WinForms.dll

3.工具箱(视图->工具箱),添加2个Button控件(将Text属性分别改为加载图像倾斜校正)。

4. 切换至Form1的代码视图(右击Form1,选择查看代码),将下面几行代码添加到文件开始处:

  1: using Leadtools;
  2: using Leadtools.Codecs;
  3: using Leadtools.Codecs.Tif;
  4: using Leadtools.ImageProcessing.Core;
  5: using Leadtools.WinForms;

 

5. 将以下变量添加至Form1类:

  1: private RasterImage image;
  2: private RasterImageViewer imageViewer;

 

6. 双击“加载图像”按钮,在button1 Click事件句柄中添加以下代码:

  1: // 加载图像
  2: codecs = new RasterCodecs();
  3: 
  4: codecs.ThrowExceptionsOnInvalidImages = true;
  5: image = codecs.Load(Path.Combine(Application.StartupPath, @"..\..\Pic\clean.tif"));
  6: 
  7: imageViewer = new RasterImageViewer();
  8: imageViewer.Image = image;
  9: imageViewer.Height = 1200;
 10: imageViewer.Width = 1000;
 11: imageViewer.Location = new System.Drawing.Point(0, 50);
 12: Controls.Add(imageViewer);
 13: imageViewer.BringToFront();

 

7. 双击“倾斜校正”按钮,在button2 Click事件句柄中添加以下代码:

  1:  if (image == null)
  2:  {
  3:      MessageBox.Show("请首先加载图像!");
  4:      return;
  5:  }
  6:  // 准备命令
  7:  Leadtools.ImageProcessing.Core.DeskewCommand command = new Leadtools.ImageProcessing.Core.DeskewCommand();
  8:  //图像的倾斜校正
  9:  command.Flags = DeskewCommandFlags.DeskewImage | DeskewCommandFlags.DoNotFillExposedArea;
 10:  command.FillColor = new Leadtools.RasterColor(255, 255, 255);
 11:  command.Run(image);
 12:  codecs.Save(image, Path.Combine(Application.StartupPath, @"..\..\Pic\cleanResult.tif"), RasterImageFormat.Tif, 24);

 

8.编译运行程序,结果如下图所示:

原图:

1

校正后的图像:

2

 

DEMO下载:

本文提供了倾斜校正的所有代码,为了执行Demo,您需要下载LeadTools全功能试用版

 

DeskewCommand类的简单介绍

 

LeadTools提供了Leadtools.ImageProcessing.Core.DeskewCommand类,可以自动拉直扫描的文档,完成倾斜校正。文档图像可以旋转多达20度,这个命令类包含特殊的算法,可以完成银行支票和线条检测倾斜校正的功能。此类在Document\Medical工具包中可用。

若您想要使用上面提到的特殊算法,需将(DeskewCommandFlags.UseCheckDeskew| DeskewCommandFlags.UseLineDetectionCheckDeskew)添加到Flags属性。

注意:

  • 若Flags属性或构造函数的flags参数包含DeskewCommandFlags.ReturnAngleOnly,这个命令会在不旋转图像的情况下更新Angle属性。
  • 每个方向的计算旋转限制在20度,这个命令主要用于图像,例如扫描的文档,主要为有横线的文本。对于其他类型的图像,结果较难预测。
  • 如果角度非常小,这个命令包含了一个选项可以跳过倾斜校正。
  • 此命令不支持12位、16位灰度图像和48位、64位彩色图像。为此种情况时,命令不会抛出异常。
  • 此命令支持有签名/无签名的数据图像。
  • 此命令不支持32为灰度图像
  • 此命令已扩展可用于银行支票图像。

      LeadTools试用版下载

      了解LeadTools产品更多特性

      若您在使用LeadTools的过程中遇到任何问题,欢迎在葡萄城开发者社区LeadTools板块提问,我们的专业技术团队期待您的到来!

      点击查看更多LeadTools使用教程、博文


      关于葡萄城

      赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

      了解详情,请访问葡萄城官网