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

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

相关文章

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解