opencv MSER.detectRegions()vs findContours():有什么区别?

时间:2016-09-14 12:08:01

标签: opencv image-processing computer-vision contour mser

我正在为图像构建通用文本解析算法。 我在跑:

MSER.detectRegions()

vs

findContours(...cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

在二进制图像上。结果在哪里相同。 我知道MSER可以在灰度级完成,但我想更安全。

我需要选择其中一个,而findContours()只花费运行时间MSER的一半。

我错过了什么吗? 你会选择什么?

1 个答案:

答案 0 :(得分:3)

正如已经指出的那样,在二进制图像上计算MSER没有意义。 MSER基本上使用递增(递减)阈值对图像(灰度)进行多次阈值处理,所得到的是所谓的组件树,如here。至少在不同二值化上改变其尺寸/形状的连通分量是最大稳定极值区域(例如,示意图中的K)。这当然是一个非常简化的解释。请向Google询问更多详情,您会找到足够的信息。

正如您所看到的,对已经阈值化的图像进行阈值处理没有意义。因此,将灰度图像传递给MSER算法。 MSER是最先进的文本检测方法的通用基础(请参阅herehere)。