向AI转型的程序员都关注了这个号👇👇👇python
机器学习AI算法工程 公众号:datayx程序员
二值图像连通域
二值图像分析最基础的也是最重要的方法之一就是连通域标记,它是全部二值图像分析的基础。它经过对二值图像中目标像素的标记,让每一个单独的连通区域造成一个被标识的块,进一步的咱们就能够获取这些块的轮廓、外接矩形、质心、不变矩等几何参数。web
连通区域的定义通常有两种,分为4邻接和8邻接。下面这幅图中,若是考虑4邻接,则有3个连通域,8邻接则是2个连通域。面试
从连通区域的定义能够知道,一个连通域是由具备相同像素值的相邻像素组成像素集合,所以,咱们就能够经过这两个条件在图像中寻找连通区域,对于找到的每一个连通域,咱们赋予其一个惟一的标识( Label ),以区别其余连通域。算法
连通域分析的基本算法有两种:1) Two-Pass 两遍扫描 2) Seed-Filling 种子填充法。flask
Two-Pass 算法
两遍扫描法( Two-Pass ),正如其名,指的就是经过扫描两遍图像,将图像中存在的全部连通域找出并标记。微信
另外,我在代码实现的过程当中想到另一种 Two-Pass 的方式网络
(即扫描两遍图像的方式)实现,就是第二次扫描与 (1) 一样的过程,app
只是方向换成从右下到左上。机器学习
我后面的 Two-Pass 代码是使用我本身想到的方法实现的,
本身使用了几个例子测试了下,目前没出现啥问题。
Seed-Filling 算法
种子填充方法来源于计算机图形学,经常使用于对某个图形进行填充。它基于区域生长算法。个人理解就是递归遍历。
附上两种方法的 Python 的实现
python验证码识别教程之利用投影法、连通域法分割图片
接下来文章主要记录一下如何切分验证码,用到的主要库就是Pillow和Linux下的图像处理工具GIMP。首先假设一个固定位置和宽度、无粘连、无干扰的例子学习一下如何使用Pillow来切割图片。
使用GIMP打开图片后,按 加号 放大图片,而后点击View->Show Grid来显示网格线:
其中,每一个正方形边长为10像素,因此数字1切割坐标为左20、上20、右40、下70。以此类推能够知道剩下3个数字的切割位置。
代码以下:
那么,若是字符位置不固定怎么办呢?如今假设一种随机位置宽度、无粘连、无干扰线的状况。
第一种方法,也是最简单的方法叫作”投影法”。原理就是将二值化后的图片在竖直方向进行投影,根据投影后的极值来判断分割边界。这里我依然使用上面的验证码图片来进行演示:
经过vertical函数咱们就获得了一个包含全部黑色像素在X轴上投影后左右边界的位置。因为验证码没有任何干扰,因此个人阈值设定为0。
因此对于简单粘连的状况,调整阈值也是能够解决的。
第二种方法,叫作CFS连通域分割法。原理就是假定每一个字符都由一个单独的连通域组成,换言之就是无粘连,找到一个黑色像素并开始判断,直到全部相连的黑色像素都被遍历标记事后便可判断出这个字符的分割位置。算法以下:
将二值化后的图片进行从左到右、从上到下的遍历,若是遇到黑色像素而且这个像素没有没访问过,就将这个像素入栈并标记为已经访问。
若是栈不为空,则继续探测周围8个像素,并执行第2步;若是栈空,则表明探测完了一个字符块。
探测结束,这样就肯定了若干字符。
代码以下:
调用后输出结果和使用投影法是同样的。另外我看网上还有一种叫作“泛洪填充(Flood Fill)”的方法,彷佛和连通域是同样的。
参考文章
https://zhuanlan.zhihu.com/p/97689424
https://www.jb51.net/article/141434.htm
阅读过本文的人还看了如下文章:
基于40万表格数据集TableBank,用MaskRCNN作表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch天然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest作特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
机大数据技术与机器学习工程
搜索公众号添加: datanlp
长按图片,识别二维码
本文分享自微信公众号 - 机器学习AI算法工程(datayx)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。