OpenCV参考手册(2.4.x)声明初始化MSER的构造函数需要以下参数:
delta,min_area,max_area,max_variation,min_diversity,max_evolution,area_threshold,min_margin,edge_blur_size.
我正在处理灰度图像.参数"delta","max_variation"和"min_diversity"的用途是什么?这些参数有助于控制MSER的哪些属性?
我已经尝试了很多来找到这个的确切答案,我只能在下面的页面上找到一些信息(没有一个在告诉我这3个参数究竟是什么控制时特别有用):1.OpenCV wiki 2. Wikipedia MSER的描述 3. 关于STackOverflow的MSER问题
请帮忙!
pen*_*ope 47
我将假设你知道MSER特征检测如何工作的基础知识(如果没有,维基百科,以及简短的概述如下).
您有两种类型的MSER区域,正面和负面.
第一种类型,您可以通过所有强度的阈值处理(对于灰度图像,0来255).例如,对于阈值T = 100,< 100分配具有强度的所有像素black,或者foreground,并且所有像素>= 100强度为white或background.
现在,想象一下你正在观察一个特定的像素p.在某个阈值,我们称之为它T1,它将开始属于前景并保持这种状态直到T=255.在T1一个像素将属于一个组件CC_T1(p).5灰度级以后,它将属于该组件CC_(T1+5)(p).
针对所有阈值获得的所有这些连通组件都是MSER的潜在候选者.(如果您反转我的black/foreground和white/background阈值分配,则获得其他类型的组件).
参数有助于确定哪些潜在候选人确实最大稳定:
三角洲
对于每个地区,都会测量变化:
V_T = (size(CC_T(p))-size(CC_{T-delta}(p)))/size(CC_{T-delta}(p))
为每个可能的门槛Ti.如果这种变化的像素是变化的一个局部最小,也就是V_T < V_{T-1}和V_T < V_{T+1},该地区是最大的稳定.
参数delta表示区域需要稳定多少个不同的灰度级才能被认为是最大稳定的.对于较大的三角洲,您将获得更少的区域.
注意:在介绍MSER区域的原始论文中,实际公式为:
V_T = (size(CC_{T+delta}(p))-size(CC_{T-delta}(p)))/size(CC_T(p))
OpenCV实现使用稍微不同的公式来加速特征提取.
minArea,maxArea
如果某个区域最稳定,则如果区域小于minArea像素或大于maxArea像素,则仍然可以拒绝该区域.
maxVariation
回到第1点的变化(与delta相同的函数):如果一个区域最大稳定,如果区域变化大于maxVariation,它仍然可以被拒绝.
也就是说,即使该区域"相对"稳定(比邻近区域更稳定),它也可能不是"绝对"足够稳定的.对于较小的maxVariation,您将获得更少的区域
minDiversity
该参数用于修剪太相似的区域(例如,仅对几个像素不同).
对于一个区域CC_T1(p)即是最大限度地稳定的,找到一个区域CC_T2(p)是"父最大限度地稳定区域".这意味着,T2 > T1,CC_T2(p)是一个最大的稳定区域,并且没有T2 > Tx > T1使得CC_Tx(p)最大是稳定的.现在,比较父母的大小:
diversity = (size(CC_T2(p)) - size(CC_T1(p))) / size(CC_T1(p))
如果这diversity是小比maxDiversity,删除该区域CC_T1(p).对于更大的多样性,您将获得更少的区域.
(对于这个参数的确切公式,我不得不深入研究程序代码)
小智 12
(size_{i}-size_{i-delta})/size_{i-delta}.默认5.