opencv MSER.detectRegions() 与 findContours() : what's the difference?

标签 opencv image-processing computer-vision contour mser

我正在构建一个通用的图像文本解析算法。 我在运行:

MSER.detectRegions()

对比

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

在二值图像上。结果是一样的。 我知道 MSER 可以在灰度上完成,但我想更安全。

我需要选择其中之一,findContours() 花费的运行时间不到 MSER 的一半。

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

最佳答案

如前所述,在二值图像上计算 MSER 没有意义。 MSER 基本上使用递增(递减)阈值多次对图像(灰度)进行阈值处理,您得到的是一个所谓的组件树,就像这样 here .至少在不同的二值化过程中改变其大小/形状的连通分量是所谓的最大稳定极值区域(例如示意图中的 K)。这当然是一个非常简化的解释。请向谷歌询问更多细节,你会发现足够的。

如您所见,对已经阈值化的图像进行阈值化没有意义。所以改为将灰度图像传递给 MSER 算法。 MSER 是最先进的文本检测方法的通用基础(参见 herehere)。

关于opencv MSER.detectRegions() 与 findContours() : what's the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490063/

相关文章:

algorithm - 如何在opencv中的平滑图像中插入孔洞?

java - C++ native OpenCV 到 opencv4android 端口太慢?

python - 如何在二维 numpy 数组中查找行?

java - 在圆霍夫变换中,累加器分辨率 (dp) 的反比​​是多少?它如何影响圆检测?

opencv - 如何使用基于 flann 的匹配器,或者通常在 opencv 中使用 flann?

python - 使用 numpy 将图像分成 channel

python - 将平面上的 3D 坐标转置到新的 2D 坐标系

python - OpenCV 和 Python : Connected components analysis

opencv - 在 OpenCV 3 中使用 OSVR 相机

c++ - 在 Opencv c++ 中从右到左给出轮廓