最大稳定极值区域,基于分水岭算法。是对一幅灰度图像取阈值进行二值化处理,阈值依次取[0..255]。随着阈值的增加黑色(值为0)的区域慢慢扩大,类似于分水岭算法中的水面的上升。
q(i)=|Qi+△-Qi-△|/|Qi|
其中,Qi表示阈值为i时的某一连通区域,△为灰度阈值的微小变化量,q(i)为阈值是i时的区域Qi的变化率。当q(i)小于指定阈值时,则Qi为最大稳定极值区域。在计算区域变化率时一般使用面积衡量。具体算法的原理参考
https://blog.csdn.net/zhaocj/article/details/40742191
mser同分水岭算法,只能检测深色(“盆地”)区域,对于丘陵区域要先将图像值反转,在进行检测。
opencv中的mser:
MSER( int _delta, int _min_area, int _max_area,
float _max_variation, float _min_diversity,
int _max_evolution, double _area_threshold,
double _min_margin, int _edge_blur_size );
_delta: 就是上面公式的delt,像素值变化量
_min_area _max_area: 给检测出的区域设置面积范围,不在这个范围的剔除
_max_evolution :区域变化的阈值,如果区域变化小于这个阈值认为是mser
_min_diversity: 离散度定义,对于检测后区域进行筛选,如果区域离散度小于该阈值,认为重叠性过高删除,离散度定义如下diversity=|M-N|/|N|
参考:
https://blog.csdn.net/zhaocj/article/details/40742191
https://www.jianshu.com/p/1b9c275698c9
https://stackoverflow.com/questions/17647500/exact-meaning-of-the-parameters-given-to-initialize-mser-in-opencv-2-4-x