自然场景文本识别:基于笔画宽度变换的文本检测

2024-02-10 20:18

本文主要是介绍自然场景文本识别:基于笔画宽度变换的文本检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自然场景文本识别:基于笔画宽度变换的文本检测

最近在学习自然场景(Natural Scenes)的文本识别(Text Recognition)问题,这一问题也是时下一个非常热门的亟待解决的问题。在阅读学习了一定量的文献资料之后,有了一定收获,本文提到的基于“笔画宽度变换”(Stroke Width Transform)的方法,是目前个人看到比较认同的方法。

        对于自然场景的文本识别,一个很重要的问题就在于如何从自然场景的图片中检测与定位出文本信息,考虑到文本的结构、像素、几何变形、背景复杂度、图像分辨率等多种问题带来的干扰,对于文本的检测着实存在着不小的难度。就本人所学习到的文献中所提到的文本检测定位的方法主要可以分为三类:基于连通域的分析、基于边缘特征的分析、基于纹理特征的分析。然而遗憾的是,由于以上的特征并不单单只属于文本独有的特征,比如植物以及某些景物都有类似的特征,这就意味着以上的方法还具有很多后续的处理需要进行,何况存在的很大的一个问题是,对于文本的检测,以上方法是否对所有的语言具有普适性,有待研究。

        本文所讨论的基于笔画宽度变换的方法,是个人在学习中看到的比较推崇的方法。这一方法的一个很大的优势在于,笔画特征基本上是属于文字独有的特征(当然也不排除某些视觉景物的干扰,需要后续操作加以剔除),而基于笔画特征,对于不同语言的文本是普适的,这是一个极大的优势。这一方法的一个基础的依据在于:统一的文本基本具有统一的笔画宽度。本文主要对Microsoft Corporation的文献Detecting Text in Natural Scenes with Stroke Width Transform 进行一定的学习,并加以总结,作为分享。

       下面就这一方法的几个主要的部分进行描述说明,首先再次强调的是本文方法所基于的基础现实是文本具有基本一致的笔画宽度。在论文中主要提出三部分过程来解决自然场景的文本识别问题,本文将依次总结介绍:


一、The Stroke Width Transform :

1、利用Canny edge detector对图像进行边缘检测,得到的每个边缘像素点p都具有一个方向梯度值dp;

2、若p位于笔画边缘,dp一定大致垂直于笔画方向,沿着射线 r=p+n*dp (n>=0)梯度查找与之对应的另一个边缘像素点q,那么dp与dq的方向是大致相反的(dp = dq ± π/6 ) ,此时会出现两种情况:

(1)p找不到对应的匹配的q或者dp 与dq不满足大致反向的要求,那么该射线r 废弃掉;

(2)如果找到满足要求的q那么在[p,q]这条路线上的每个像素点都会被指定笔画宽度属性值||p-q||(欧式距离),除非该店已经被指定了一个更小的笔画宽度属性值。

3、重复步骤2,计算出所有未被废弃的路线上的像素的笔画宽度值,算法结束。

注意:

(1)这一方法实质上就在对于每个可能属于文字部分的像素点与它最有可能所属的笔画建立联系,这一联系就是该笔画的宽度,可以想见的在未来的处理中,将会对该值相近的连通候选区域进行聚类,即认为他们属于同一笔画,进一步的可以构造出每个笔画,形成文字区域。

(2)在上述的过程中,实际上是默认了针对于亮底暗字的正向文本,如果是对于暗底亮字的反向文本,那在步骤2中就需要沿着dp的返方向来查找q,这样,在实际算法的推行过程中,是需要重复以上过程两次的:一次沿着dp方向,另一次则沿着-dp方向。


二、Finding letter candidates:

这一步要做的是,对于过程一中找到的候选文字狱加以剔除的处理,鉴于上一步骤中得到的结果可能存在干扰(如电线杆可能被识别为文字候选域),需要进一步的处理,主要有以下部分:

(1)计算每个连通候选区域各个像素点笔画宽度属性值的最大差值,对于差值太大的情况加以排除,这可以排除掉如树叶这样的区域,此处的 阙值设定为连通区域笔画宽度属性之平均值的一半;

(2)对于候选区域长宽比要求在0.1到10之间,不符合要求的剔除掉,对于电线杆等长宽比较大的区域可以排除;

(3)一块区域的边界框包含不超过两块区域,以消除文本外围包围线之类(符号框架);

(4)对于太大或太小的连通域也排除掉;

(5)单独的字符通常不出现在图像中,当作噪声剔除;


三、Grouping letters into text lines:

这里认为文本是以线性的形式出现的,一行文本时有相似之处的,如:笔画宽度、字幕宽度、高度、字符间距等。

如果两候选字符满足:

(1)具有相似笔画宽(中值之比小于2.0);

(2)高度比不超过2.0;

(3)距离不超过宽字符的三倍;

(4)颜色相近

等特征,那么就对满足条件的字符聚类,形成text lines,实际上,这并不需要在文本的检测中加以处理,在OCR的过程中是可以进行的。


OK,以上是个人学习的一点总结概括,如果个人理解有不当之处,或读者有进一步见解,欢迎留言探讨,共同学习。


这篇关于自然场景文本识别:基于笔画宽度变换的文本检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697973

相关文章

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Redis中RedisSearch使用及应用场景

《Redis中RedisSearch使用及应用场景》RedisSearch是一个强大的全文搜索和索引模块,可以为Redis添加高效的搜索功能,下面就来介绍一下RedisSearch使用及应用场景,感兴... 目录1. RedisSearch的基本概念2. RedisSearch的核心功能(1) 创建索引(2

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展