最大稳定极值区域(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)
具体OPENCV的实现方式可以参考以下博文,非常详细:
http://blog.youkuaiyun.com/zhaocj/article/details/40742191