手写数字识别系统之倾斜矫正[亲测有效]

手写数字识别系统之倾斜矫正[亲测有效]倾斜校正主要有两种,一种是整体倾斜校正,另一种是局部倾斜校正。 由于本文主要研究具有不规则分布的多数字识别,因此只需要关注经过提取后的数字校正问题,也就是图像的局部校正。

简介

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

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

矫正算法

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

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

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

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

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

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

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

实验结果

correct_slope

总结

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13079.html

(0)

相关推荐

  • 语法形式有哪些_是…的语法

    语法形式有哪些_是…的语法前记 (可跳过这段来自本up的罗里吧嗦。。。) 在做上一个项目的时候,需要用到本地数据库,以前做公司项目用的是轻量级数据库Realm,做自己小项目用的是greenDAO,大学学的是SQL server

    2023-06-06
    143
  • Python中神奇的切片技巧:轻松操作列表和字符串

    Python中神奇的切片技巧:轻松操作列表和字符串Python是一门强大的编程语言,具有极高的灵活性和可读性。其中,strong切片技巧/strong是它的一大亮点之一。通过对字符串和列表进行切片操作,不仅能够轻松地访问特定区间的元素,还能进行一些灵活的、高效的数据处理。

    2024-03-10
    81
  • 高性能图计算系统 Plato 在 Nebula Graph 中的实践

    高性能图计算系统 Plato 在 Nebula Graph 中的实践本文首发于 Nebula Graph Community 公众号 1.图计算介绍 1.1 图数据库 vs 图计算 图数据库是面向 OLTP 场景,强调增删改查,并且一个查询往往只涉及到全图中的少量数据

    2023-05-07
    121
  • Python实现列表操作

    Python实现列表操作列表(list)是Python中最常用的数据类型之一,用于存储一系列的数据,可以是数字、字符串、甚至是其它列表。列表是可变的,可以通过添加、删除、修改等操作来改变列表中的元素。

    2024-01-23
    92
  • MySQL基础操作_基础

    MySQL基础操作_基础数据库操作: 创建数据库: CREATE DATABASE 数据库名称; 查看数据库: # 查看所有数据库 SHOW DATABASES; 创建数据库: # 选择一个数据库/切换至xxx数据库 US…

    2023-02-13
    151
  • Python笛卡尔积的使用方法

    Python笛卡尔积的使用方法随着人工智能和机器学习的兴起,越来越多的程序员开始使用Python语言。其中,Python的标准库就提供了许多强大的功能,例如内置的模块和函数,例如itertools模块中的笛卡尔积函数。

    2024-05-30
    66
  • 递归查询两种写法与性能差异「建议收藏」

    递归查询两种写法与性能差异「建议收藏」对于递归查询,KINGBASE用户可以选择使用connect by ,或者使用 with recursive 。下面,我们以例子来看下二者的差别。 一、构造数据 create table test_r

    2023-04-17
    165
  • Python Coursepoint Plus: 为你的编程技能升级提供一站式解决方案

    Python Coursepoint Plus: 为你的编程技能升级提供一站式解决方案随着信息技术的发展,编程已经成为一个非常重要的技能。编程不仅在IT行业中得到广泛应用,而且在其他行业中也已经变得非常重要。学习编程不仅可以提升个人技能,而且可以帮助人们更好地理解和掌握计算机科学,这对未来的职业和事业发展都是非常有帮助的。

    2023-12-05
    107

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注