文档章节

手写数字识别系统之细化图像

ruki
 ruki
发布于 2016/07/31 13:18
字数 723
阅读 40
收藏 1

简介

所谓的细化就是经过一层层的剥离,从原来的图中去掉一些点,但仍要保持原来的形状,直到得到图像的骨架。

骨架,可以理解为图象的中轴,例如一个长方形的骨架是它的长方向上的中轴线;正方形的骨架是它的中心点;圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。

细化删除条件

  • 内部点不能删除
  • 孤立点不能删除
  • 直线端点不能删除
  • 如果P是边界点,去掉P后,如果连通分量不增加,则P可以删除

细化步骤

通过基于数学形态学的腐蚀细化法,通过刚才的删除条件,进行匹配删除,由于是直接判断,省了模板匹配的这一步。

针对3*3的八邻域,进行操作:

|| p3 || p2 || p9 ||
|| p4 || p1 || p8 ||
|| p5 || p6 || p7 ||
其中p1 = 1为黑点,如果以下四个条件同时满足,则删除p1,即令p1 = 0:

2 ≤ NZ(p1) ≤ 6	// 用于排除孤立点和内部点

NZ(p1) = l // NZ(p1)为p1点分支数,分支数为1说明是边界点,删除后不增加连通分量

p2 * p4 * p8 = 0 or NZ(p2) != 1 // 向下删除,避免打断
p2 * p4 * p6 = 0 or NZ(p4) != 1 // 向右删除,避免打断

p6 * p8 * p2 = 0 or NZ(p8) != 1 // 向左删除,避免打断
p6 * p4 * p8 = 0 or NZ(p6) != 1 // 向上删除,避免打断

实验结果

细化前:

thin_1

细化后:

thin_2

不足与改进

可以看到,使用这种算法的效果还算不错,但是还是有许多不足的地方,比如说:

  • 颈部化:线条交叉处会产生变形
  • 多余分支:由于线条粗细不均会产生多余分支
  • 头部消减:较粗的线条端点容易在逐层腐蚀中被消减,这对于原本就较短的数字线条尤为严重。

这些问题虽然有一些解决方法,但我目前实现的效果不佳,有待进一步研究

参考文献

如果想要了解更多数字图像处理相关的内容,可以去我的书柜看看,冈萨雷斯写的那本书数字图像处理还是非常经典的。。


TBOOX项目主页

本文转载自:http://tboox.org/cn/2016/07/31/hnr-thin/

ruki

ruki

粉丝 72
博文 105
码字总数 29037
作品 7
松江
高级程序员
私信 提问
手写数字识别(一)(KNN+CNN+tensorflow)

手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值,在大数据时代的背景下,其应用领域非常之广。很多学者对手写数字识别提出了不同的算法,取得了不错的测试效果,但如今O...

wlx19970505
2018/05/10
0
0
10.机器学习sklearn-------手写数字识别实例

1.概念介绍: 图像识别(Image Recognition)是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。 图像识别的发展经历了三个阶段:文字识别、数字图像处理与...

bxg1065283526
2018/04/24
0
0
使用k-近邻算法识别手写数字。

在之前的文章中介绍了k-近邻算法的原理知识并且用Python实现了一个分类器,而且完成了一个简单的优化约会网站配对效果的实例。在《机器学习实战》中有关kNN的后一部分内容就是一个手写识别系...

Leafage_M
2018/01/06
0
0
学界 | 利用AI精确重建多模光纤传输图像,该技术或可改变医疗和通信行业

  选自ScienceDaily   机器之心编译   参与:Geek AI、路      近日,来自瑞士联邦理工学院的一组研究人员在美国光学学会的高影响因子期刊 Optica 上发表文章报告其研究成果。他们...

机器之心
2018/08/18
0
0
基于K-近邻算法的手写数字识别研究

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010329292/article/details/71514431 摘要:基于K-近邻算法研究手写数字(0-9)的识别问题,本文通过对手写数...

倾城一少
2017/05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

视频如何加水印?

很多视频制作者的视频都被他人盗用过,为了防止自己的劳动成果被他人窃取,给视频加水印对于视频制作者来说,是一件非常重要的事情。那么下面分享一个手机给视频加水印的方法,一起来看看吧!...

白米稀饭2019
23分钟前
5
0
004-Envelop-基于Blockstack的文件传输dapp

本篇文章主要介绍基于Blockstack的文件传输工具; ####A-链接地址 官网地址:https://envelop.app/ Github地址:https://github.com/envelop-app ####B-特性: 1: Share private files easil...

Riverzhou
26分钟前
6
0
SpringCloud——声明式调用Feign

Feign声明式调用 一、Feign简介 使用Ribbon和RestTemplate消费服务的时候,有一个最麻烦的点在于,每次都要拼接URL,组织参数,所以有了Feign声明式调用,Feign的首要目标是将Java HTTP客户端...

devils_os
32分钟前
7
0
《JAVA核心知识》学习笔记 (22. 数据结构)

22.1.1. 栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈...

Shingfi
37分钟前
6
0
你对AJAX认知有多少(1)?

AJAX(一) AJAX技术对于前段或者后端工程师来说,都是必不可缺的 那我们这几期都来细细品味一下AJAX的相关知识,直接上干货喽~ 1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么...

理性思考
45分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部