首页
学习
活动
专区
工具
TVP
发布

mser 最大稳定极值区域(文字区域定位)算法 附完整C代码

mser 的全称:Maximally Stable Extremal Regions 第一次听说这个算法时,是来自当时部门的一个同事, 提及到他的项目用它来做文字区域的定位,对这个算法做了一些优化。...自那时起就有一块石头没放下,想要找个时间好好理理这个算法。 学习一些它的一些思路。 因为一般我学习算法的思路:3个做法, 第一步,编写demo示例。 第二步,进行算法移植或效果改进。...第三步,进行算法性能优化。 然后在这三个过程中,不断来回地验证,实测。 任何事情,一下子囫囵吞枣,容易呛到。 找了不少资料,mser这方面的资料还挺少。...err_msg, err); exit_code = 1; } /* quit */ return(exit_code); } 算法有两种模式...可参照《图片文档倾斜矫正算法 附完整c代码》中判断是否为文本图片的方式进行算法思路的改进。 效果图例: ? ? ? ? 以上,再一次抛砖引玉。 若有其他相关问题或者需求也可以邮件联系俺探讨。

2.7K70
您找到你想要的搜索结果了吗?
是的
没有找到

MSER+NMS检测图像中文本区域

MSER就是一种检测图像中文本区域的方法,这是一种传统算法,所谓传统算法,是相对于现在大行其道的机器学习技术来说的,就准确率来说,MSER对文本区域的检测效果自然是不能和深度学习如CTPN、Pixellink...MSER全称叫做最大稳定极值区域(MSER-Maximally Stable Extremal Regions),该算法是2002提出的,主要是基于分水岭的思想来做图像中斑点的检测。...= cv2.MSER_create() # 得到mser算法对象 regions, _ = mser.detectRegions(gray) # 获取文本区域 hulls = [cv2.convexHull...()”得到了一个默认的MSER算法对象,但其实这个对象也是可以设置参数的: _delta it compares (sizei−sizei−delta)/sizei−delta _min_area...= cv2.MSER_create() # 得到mser算法对象 regions, _ = mser.detectRegions(gray) # 获取文本区域 hulls = [cv2.convexHull

62510

基于分割思想的文本检测算法

使用人工特征 文本检测领域常见的人工特征算法有两种:SWT和MSER,这些方法的效率比滑窗法更高,精度也更好。 SWT算法思路:图片中的文本都具有一致宽度的线条。...MSER算法的思路:单个文本内部的像素值不会有太大差异, 类似于分水岭算法 其计算步骤如下: 从0到255,选择不同的阈值对图片进行二值化; 记录下不同阈值下的二值化图像的各个连通域的面积变化; 寻找在一定阈值范围内...,面积变化较为稳定的连通域; 根据人工规则从这些稳定连通域中筛选出文本区域; opencv里面有MSER的实现,可以直接拿来用。...除这两种算法以外,还可以尝试使用一些通用的局部特征算子,我曾经用过harris角点,在文档和证件场景下的效果还是不错的。 2. 深度学习文本检测 深度学习算法在误检方便表现比传统方法要好。...所以EAST算法中在NMS之前添加了检测框融合的操作,称之为LocalNMS。

1.6K20

科普时间:OCR是人工智能的基础之一

文本检测首先要从图像中切割出可能存在的文字,即候选连通区域,目前被采取最多的方法是MSER(最大平稳极值区域)。...当然,也有团队在此基础上开发出了自己的一套算法,比如微软研究院在传统检测方法ER(极值区域)和MSER基础之上采用了对比极值区域CER(Contrasting Extremal Region),CER是跟周围的背景有一定对比度的极值区域...,在低对比度的图像上比MSER效果更好,而且获得的候选连通区域数量远小于ER,提高了算法的效率,并且,为了提高所获得连通区域的质量,微软又增加一个算法环节去增强CER。...最后,微软采取了一套基于浅层神经网络的文字/非文字分类算法,进一步提高了对于连通区域字符的辨认率。 在此基础之上,微软研究院的成果也得到了世界的验证。

2.6K60

【Dev Club 分享】深度学习在 OCR 中的应用

我们首先基于MSER(最大稳定极值区域)的方法来设计我们的检测方案,如下图。 ? 由于MSER基于分水岭迭代的方式来寻找候选框,能有效提取候选文字区域的同时也容易产生非常多的非文字区域。...自然场景的文字识别一直是业内挑战最高的一个课题,目前基于深度学习在这方面的研究很多,到工业界还没有非常成熟的算法,百度和google是业界最好的。...不过车牌的检测算法很成熟了,可以先检测到车牌,做方向矫正后再送识别。车牌银行卡这种文字类别相对很少,不到100个,一般传统的模板匹配的方法也可以达到比较好的效果。...而本文介绍的通用图片的文字识别需要应对6000多个汉字还有英文数字等,对网络的要求更高 Q11:问题:除了基于CNN的识别方法,有没有尝试过其他的深度学习算法。...手机应该是可以直接从聊天记录获得文本,不需要从图像里去检测和识别文字,主要涉及到的是NIL方向的算法,比如分词。

3.5K80

模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度

在确定候选连通区域阶段,微软亚洲研究院团队在传统检测方法ER(Extremal Region,极值区域)和MSER(Maximally Stable Extremal Region,最大平稳极值区域)基础之上采用了对比极值区域...CER(Contrasting Extremal Region),CER是跟周围的背景有一定对比度的极值区域,这个对比度至少要强到能够被人眼感知到,在低对比度的图像上比MSER效果更好,而且获得的候选连通区域数量远小于...ER,候选范围大大缩小,提高了算法的效率。...算法提取出来的候选连通区域结果示例 阶段②:基于浅层神经网络的文字/非文字分类算法 当获得了高质量的候选连通区域,就需要对其中的字符进行分辨,确定其是否为文字或非文字,微软亚洲研究院团队提出了一套基于浅层神经网络的文字.../非文字分类算法,比以往的算法更加有效。

1.8K50

一篇文章就梳理清楚了 Python OpenCV 的知识体系

高级部分-分水岭算法及图像修补 掌握分水岭算法的原理,掌握核心函数 cv2.watershed() 。 可以扩展补充图像修补技术及相关函数 cv2.inpaint(),学习完毕可以尝试人像祛斑应用。...GrabCut 算法 cv2.grabCut(); 漫水填充算法 cv2.floodFill(); Harris 角点检测 cv2.cornerHarris(); Shi-Tomasi 角点检测 cv2...库; “SURF” SURF(nonfree module) Opencv3 移除,需调用 xfeature2d 库; “ORB” ORB Opencv3 移除,需调用 xfeature2d 库; “MSER...” MSER; “GFTT” GoodFeaturesToTrackDetector; “HARRIS” (配合 Harris detector); “Dense” DenseFeatureDetector...meanShift 跟踪算法 cv2.meanShift(); CamShift 跟踪算法 cv2.CamShift()。

1.4K30

力荐!计算机视觉开源工具中的瑞士军刀—Dlib最新高级特性教程

我爱计算机视觉”公众号,一个有价值有深度的公众号~) OpenCV是计算机视觉开源工具中妇孺皆知的,但Dlib绝对是这几年快速上升的一颗新星,它并不追求大而全,但它实现的每一个模块和特性,都几乎是高质量开源算法的典范...》的目标检测报告,作者从滑动窗口讲到HOG检测器及其优化,并介绍了Dlib中基于图像金字塔的CNN目标检测,其速度很快且相比于SSD算法其对小目标检测性能更好,并分享了影响目标检测性能的一些因素,比如训练数据数量和质量及超参数的优化等...——训练HOG检测器; 002——运行HOG检测器; 003——为人脸特征点检测制作人脸图像数据和XML文件; 004——训练人脸特征点检测模型; 005——运行人脸特征点检测模型; 006——匈牙利算法...——边缘检测并找直线; 025-026——通过梯度计算亮斑; 027——霍夫变换; 028-034——通过霍夫变换定位图像中的纸张; 035——通过mbd方法定位视频中旋转的指尖陀螺; 036——通过MSER

52010

计算机视觉 OpenCV Android | 特征检测与匹配 之 Feature2D中的检测器与描述子

而在OpenCV本身包含的feature2d模块中也包含了几个非常有用的特征检测器与描述子, 其所支持的特征点检测器(FeatureDetector)如下: FAST=1 STAR=2 ORB=5 MSER...1.ORB检测器与描述子 ORB(Oriented FAST and Rotated BRIEF)是OpenCV实验室于2011年开发出来的一种新的特征提取算法, 相比较于SIFT与SURF, ORB...); 2.BRISK检测器与描述子 BRISK(Binary Robust Invariant Scalable Keypoint)特征检测与描述子是在2011年由几位作者联合提出的一种新的特征提取算法...SIFT算法之后, 具有尺度不变性与旋转不变性算法领域的再一次突破, 它是KAZE特征提取算法的加速版本; 其算法原理有别于前面提到的几种方法, 其是通过正则化PM方程与AOS(加性算子分裂)方法来求解非线性扩散...AKAZE算法的原理本身比较复杂,笔者所读的书中亦无详细解说, 感兴趣的小伙伴阅读相关论文去深入了解。

1.9K20

场景文字识别技术,过滤黄赌毒

2, 需要高精度的字符区域定位算法 场景文字识别算法的一大关键是“检测”,即分割出图像中的文字与背景,近些年来主流的方法都是先检测再识别的框架来解决这个问题。...关于文字检测,目前主流的方法是采用最大极值稳定区域(MSER)和笔迹宽度变换(SWT)这两种方法。...MSER通过提取在一定范围内对图像像素值变化的稳定区域来检测文字,这个方法基于一个字符所在的图像像素有着相似的颜色的假设,是被认为当前性能最好的具有放射不变性的区域提取方法。...目前OCR+的字符检测算法主要是基于CNN架构来实现的。字符检测算法模块需要考虑召回率与准确率之间的平衡,目前OCR+ STR的区域定位召回率与准确率基本保持在95%,75%左右。...同时,由于训练该分类器需要大量的标注样本,因此该模块的开发也是整个STR算法开发过程中最为艰难的一环。

4.2K100

OCR技术浅析

预处理阶段中包含了三步: 定位图片中的文字区域,而文字检测主要基于连通域分析的方法,主要思想是利用文字颜色、亮度、边缘信息进行聚类的方式来快速分离文字区域与非文字区域,较为流行的两个算法分别是:最大极值稳定区域...(MSER)算法及笔画宽度变换(SWT)算法,而在自然场景中因受到光照强度、图片拍摄质量和类文字背景的干扰,使得检测结果中包含非常多的非文字区域,而目前从候选区域区分出真正文字区域主要两种方法,用规则判断或轻量级的神经网络模型进行区分...受光照和拍摄质量的影响,全局二值化难以设置统一的阈值,而自适应二值化算法易受到阴影及模糊边界的干扰。所以在这边尝试过许多方法,测试下来未发现在任何情形下效果都满足要求的方法。...在给定O序列情况下,通过维特比算法,找出最优序列S: 传统OCR冗长的处理流程以及大量人工规则的存在,使得每步的错误不断累积,而使得最终识别结果难以满足实际需求。接下来讨论基于深度学习的OCR。...文本行检测,其又可分为水平行文字检测算法与倾斜文字行检测算法。这里主要介绍下Tian提出算法CTPN,其算法框架如下图。

8.9K10

算法】SVD算法

2 SVD算法与PCA算法有什么关联? 3 SVD算法有什么应用? 4 SVD算法如何优化?...前言 奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石...本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。...也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。...SVD小结 SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。

1.4K121
领券