连通域提取MSER

最大稳定极值区域(MSER)常用来提取图像二值化后稳定的联通区域,特别在OCR项目中的文字提取运用广泛。

MSER的基本思想就是,在灰度空间(0-255)内取一段连续阈值分别对图像进行二值化处理,接着在分别求取二值化后图像的灰度连通区域,并找出随阈值变化连通区域不发生显著变化的连通域。

阈值的递增类似于分水岭算法中的水面的上升,随着水面的上升,有一些较矮的丘陵会被淹没,如果从天空往下看,则大地分为陆地和水域两个部分,这类似于二值图像。在得到的所有二值图像中,图像中的某些连通区域变化很小,甚至没有变化,则该区域就被称为最大稳定极值区域。这类似于当水面持续上升的时候,有些被水淹没的地方的面积没有变化。它的数学定义为:

q(i)=|Qi+△-Qi-△|/|Qi|            (1)

其中,Qi表示阈值为i时的某一连通区域,△为灰度阈值的微小变化量,q(i)为阈值是i时的区域Qi的变化率。当q(i)为局部极小值时,则Qi为最大稳定极值区域。

显然,实现MSER最直接的方式是以不同阈值对图像进行二值化,求取各个阈值下二值化图像的联通域,同一块位置的连通域在一段阈值区域内公式1的值为局部最小值即为MSERs。但是这样的计算方式过程繁复、计算量大,OpenCV里的MSER实现是采用了组件树的方法,采用的也不是公式1,而是以下公式:

q(i)=|Qi-Qi-|/|Qi-|            (2)

Component Tree原理
当前元素和所有周围邻近当前区域的元素并且小于当前元素的区域都属于该区域
从最小值Xi像素开始建立一个region,如果Xi的邻域亮度值等于该像素的亮度值,则将Xi合并进邻域像素所在的region(且父节点是邻域像素父节点),如果Xi邻域的像素值小于Xi的像素值,则将邻域像素归入当前region,并将当前region作为邻域像素region的根节点(且邻域像素父节点指向当前像素的父节点),直到遍历完所有像素为止。


具体OPENCV的实现方式可以参考以下博文,非常详细:

http://blog.youkuaiyun.com/zhaocj/article/details/40742191




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值