您的位置 首页 > 数码极客

如何将文本图像矫正

Python部落)组织翻译,禁止转载,欢迎转发。

本文所展示的是一个由Pyhton实现的文本倾斜校正的脚本,在实现中使用到了OpenCV和Python的图像处理函数。

假设我们有一幅图像,图像中的文本被旋转了一个未知的角度。为了对文字进行角度的校正,我们需要完成如下几个步骤:

1、检测出图中的文本范围

2、计算出文本被旋转的角度

3、将图像旋转特定的角度

本文所介绍的文本角度校正算法一般被用于自动化文档分析。但是,这个过程本身可以有其他的应用。

通过OpenCV和Python实现文本角度校正

下文将详细介绍如何使用Python和OpenCV中的基本图像处理函数实现文本的角度校正。

首先,我们将创建一个简单的案例用于检测我们的校正方案。我们将通过Pyhton和OpenCV编写一个在图片中自动识别并校正文本角度的程序。

一个简单案例

在下面的例子中,我们准备了一个简单的测试案例。在这个案例中有四幅图,图中的文本被旋转了特定的角度。

图1 我们的测试案例,下面我们将用OpenCV和Python对图中文本的角度进行校正

这四幅图对应了如下四个文件

文件名的前半部分代表了图中文本被旋转的方向,其中neg表示逆时针旋转,pos表示顺时针旋转。文件名的第二部分表示被旋转的具体角度。

我们的算法将识别出图像被旋转的方向和角度,进而对其进行校正。下面,我们将介绍如何实现上述功能。

基于OpenCV和Pyhton的文本倾斜校正

首先,我们建立一个新文件,并命名为correc,并在文件中插入如下代码:

代码2—4行引入需要的Pyhton包。我们通过引入cv2调用OpenCV,假设您已经在系统中安装了OpenCV,请参考对应的OpenCV install tutorial在进行系统的配置。下面我们对代码7—10行进行解析,我们在此只需要一个参数,即--image,该参数代表了图像的路径。

在代码的第13行,图像被从磁盘读入。

下一步我们将从图像中识别出文本

在我们的图像中,文字是黑色的而背景是浅色的。然而,为了正确地执行我们的算法,我们需要将图像反转(即将文字变成浅色的而背景变成深色的)。因为在计算机上执行图像操作的时候,一般前景色为浅色,而背景(图像中我们不关心的内容)为黑色。

上述代码23行和24行我们对图像颜色进行了二值化处理。

图2 经过二值化处理和颜色反转后的图像

有了这个二值化的图像,我们可以计算出包含了被旋转文本的最小边框。

通过第30行代码找出二值图像中包含前景色的部分的(x,y)坐标。

我们将这些坐标作为参数传递给函数cv2.minAreaRect,该函数将给出包含着整个文字区域矩形边框,这个边框的旋转角度与图中文本的旋转角度一致。

函数cv2.minAreaRect将返回一个[-90,0)区间内的角度。代码37行和38行处理返回的角度小于-45度的情况,在这样的情况下,我们需要在原来的角度上增加90度然后在进行校正。当返回的角度大于-45度的时候,我们直接对角度进行回转。

我们已经确定了文本的倾斜角度,现在,我们需要执行一个仿射变换对倾斜角度进行校正。

代码第46行和47行确定了图像的中心坐标(X,Y),我们中心坐标和旋转角作为参数传递给函数cv2.getRotationMatrix2D(代码第48行)。所得到的旋转矩阵M将在代码第49行和50行执行确切的变换。

最后,我们在屏幕上显示我们的结果。

代码第53行,我们将旋转的角度显示在图像上,以标示所输出的图像对应怎样的旋转角度。代码57行至60行用于显示输出的图像。

倾斜角度校正结果

有了上述结果,我们通过以下命令来校正图像neg_4.png的角度:

图3 使用OpenCV和Python对文本进行倾斜校正

从图中我们可以看到,输入的图像被逆时针旋转了4度。我们的程序检测出了这个角度,并对其进行了校正。

下面是另一个例子,这一例子中逆时针倾斜的角度为28度。

图4 使用OpenCV和Python对文本进行倾斜校正

再一次,我们的算法对输入的图像进行了校正。

这次我们尝试一个顺时针旋转的倾斜角:

图5 使用OpenCV和Python对文本进行倾斜校正

最后,我们尝试一个41度的大角度倾斜:

图6 使用OpenCV和Python对文本进行倾斜校正

无论怎样的倾斜角度,我们的算法都能够使用OpenCV和Python进行倾斜角的校正。

总结

在今天的教程中,我们使用Python进行了倾斜角度的校正。

所介绍的算法简洁明了,使用了一些基本的图像处理技术如二值化、计算最小旋转矩形和使用仿射变换对角度进行校正。

我们可以将这项技术使用到自动文档分析中,通过将所介绍的方法应用到文档扫描件上,对倾斜角度进行校正,然后利用OCR技术将图像中的文本转化成计算机中的文本字符。

我们希望您喜欢这个教程。

英文原文:http://www.pyimagesearch.com/2017/02/20/text-skew-correction-opencv-python/

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何将文本图像矫正,如何阅读图像文本”边界阅读