文档章节

手写数字识别系统之倾斜矫正

ruki
 ruki
发布于 2016/08/01 18:18
字数 862
阅读 98
收藏 0

简介

倾斜校正主要有两种,一种是整体倾斜校正,另一种是局部倾斜校正。

由于本文主要研究具有不规则分布的多数字识别,因此只需要关注经过提取后的数字校正问题,也就是图像的局部校正。

矫正算法

目前的校正算法有很多,比如说:

对于整体倾斜校正可以采用统计图像左右两边的平均像素高度,通过计算整体倾斜度来进行校正。

这种方法对于像素较多的图像的处理效果明显,而且实现简单快速,但是对于那些已经经过提取得单一数字图像并不适用,因为此时的图像一般较小,且笔画较细,由于所需信息太少统计后的结果并不正确。

其实校正的核心就是使图像的倾斜度的接近为0,因此可以把它看作是一个最优化问题:

即寻找需要调整多少角度,才能使图像的倾斜度最小,可见倾斜度决定了最终图像的好坏,考虑的数字的特征,都是具有狭长的特点,我们可以考虑将图像的高宽比最为图像倾斜度的依据。

而到底需要调整多少才合适呢,本文所采用的方法,并不估算图像的倾斜度,而是通过二分搜索的思想,在倾斜45度的范围内进行二分查找,寻找最佳调整点,使其结果近似最优,其具体步骤如下:

1. 设置最大调整角度,一般倾斜度不会超过45度,如果超过调整也就没有意义了。
2. 计算图像高宽比,也就是倾斜度,如果倾斜度比上次的有所减小,则调整角度减半,继续搜索,如果倾斜度趋于稳定,则退出查找,并使用此时的调整角度进行调整。
3. 对于实际的调整过程,一般会选择进行旋转变换操作,比较简单,但是考虑到实际人们书写数字时的倾斜往往并不是旋转造成的,而是可能姿势不正而引起的侧斜,因此仅仅通过旋转并不能达到较好的效果,因此可以通过水平侧向校正来实现,即保持像素点的高度不变,仅仅通过调整水平位置,进行适当的调整。

实验结果

correct_slope

总结

可见,对于大多数数字图像的校正结果还是令人相当满意的,但还是会有些许不足:

由于侧向拉伸会导致图像的变形,因此对于较为细长的图像的处理效果较差,可能会出现断层这些破坏连通性的情况。

为了解决此类问题,可以在校正前先进行适当的膨胀运算操作,这样效果会好些。


TBOOX项目主页

本文转载自:http://tboox.org/cn/2016/08/01/hnr-correct-slope/

ruki

ruki

粉丝 62
博文 103
码字总数 23669
作品 7
松江
高级程序员
私信 提问
图像文字识别(OCR)用什么算法小结

说明:主要考虑深度学习的方法,传统的方法不在考虑范围之内。 1.文字识别步骤 1.1detection:找到有文字的区域(proposal)。 1.2classification:识别区域中的文字。 2.文字检测 文字检测主...

youaremyall
2018/06/19
0
0
自学习 与 无监督特征学习

基本内容 在之前课程的基础上,本章的内容很好理解。 比如要对手写数字进行识别,我们拥有大量未标注的和少量已标注的手写数字图片。图片是灰度图,尺寸是 28×28(=784),可以将 784 维向量...

Lee的白板报
2015/12/16
546
0
radon变换用于车牌图像倾斜矫正

本文转载至:https://www.cnblogs.com/virqin/archive/2012/05/22/2514083.html Radon变换定义:下图显示了在指定的旋转角度的单一投影。间距为1个像素的平行光穿过图像,则radon变换计算穿过...

qq_38211852
2018/05/25
0
0
手写数字识别系统之图像分割

背景 本文,主要介绍我之前在学校时候,研究的一些跟手写数字识别相关的技术心得,主要涉及:数字图像处理、特征提取、神经网络等等相关的一些技术。。 虽然很多用到的还是网上现有的比较成熟...

ruki
2016/07/30
184
0
Pyhon3实现机器学习经典算法(二)KNN实现简单OCR

一、前言   1、ocr概述     OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用...

DawnSwallow
2018/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rsync工具常用选项以及同步的两种方式

rsync -av /etc/passwd /tmp/1.txt #rsync的本机传输写法 rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt #rsync的远程传输rsync格式rsync [OPTION] … SRC ......

林怡丰
今天
3
0
GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238

GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238 (Address already in use) 官方文档虽然有相同的问题,但是对我的问题没起作用…… 后面发现自己手贱...

wenzhizhong
昨天
3
0
REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
6
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
6
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部