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

3
我正在构建一个用于图像的通用文本解析算法。 我正在运行:
MSER.detectRegions()

vs

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

在二值图像上进行操作。结果相同。

我知道可以在灰度图像上执行MSER,但我想更加安全。

我需要选择其中一个,findContours()的运行时间少于MSER的一半。

我有什么遗漏吗? 你会选择哪一个?


4
在二值图像上计算最大稳定区域是没有意义的! - Miki
为什么不行?如果两个外壳之间有一个像素的连接,为什么不行呢? - ndor
1个回答

4
正如已经指出的那样,在二进制图像上计算MSER是没有意义的。MSER基本上使用逐渐增加(减少)的阈值多次对图像(灰度)进行阈值处理,所得到的是一个称为组件树的结构,类似于这个链接。在不同的二值化过程中至少改变其大小/形状的连通组件就是所谓的最大稳定极端区域(例如示意图中的K)。当然,这只是一个非常简化的解释。请向Google询问更多详细信息,您会找到足够的资料。
正如您所看到的,对已经进行了阈值处理的图像进行阈值处理是没有意义的。因此,应该将灰度图像传递给MSER算法。 MSER是现代文本检测方法的常见基础(请参见这里这里)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接