问题标签 [mser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
271 浏览

python - 为什么要在检测文本之前重塑 MSER 轮廓?

我正在使用来自 opencv-python 的 MSER 来使用来自这个stackoverflow question的代码来检测文本。谁能帮我理解为什么在计算对象的凸包之前将轮廓 p 重塑为 (-1, 1, 2) ?

代码如下:

0 投票
1 回答
912 浏览

python - 在opencv中使用MSER检测灰度图像上的白色斑点

我的图像大部分是黑色的,上面几乎没有白色斑点。我想将此类图像与没有此类斑点的图像区分开来。

我尝试了 MSER 并调整了它的参数以正确检测大多数图像中的斑点,并在没有斑点的图像中返回 0 结果。

这是我的 MSER 参数配置。

下面是一张测试图:

测试图像

未检测到顶部的白色区域。

0 投票
2 回答
616 浏览

python - 在文本周围有边框的图像中使用 MSER 难以提取字符

我正在尝试开发 OCR 系统。我正在尝试使用 MSER 从图像中提取字符,然后将字符传递到 CNN 以识别这些字符。这是我的字符提取代码:

这对大多数图像都很好,但对于像这样的一些图像: 在此处输入图像描述

外边界也被检测为一个区域,并在掩码中绘制轮廓,这样边界内的所有区域都被检测为文本区域。所以,里面的轮廓没有效果。如何防止这种情况,以便仅检测到文本?检测到船体: 在此处输入图像描述 结果是面罩: 在此处输入图像描述

0 投票
1 回答
1897 浏览

python - 如何去除重叠轮廓并将每个字符分离为单独的轮廓以进行字符提取?

我正在尝试使用MSERin实现从 Python 中的图像中提取字符opencv。这是我到目前为止的代码:

但是这种方法为同一个字母提供了多个轮廓,并且在某些地方,多个单词被放入一个轮廓中。这是一个例如:原始图像:

在此处输入图像描述

添加轮廓后:

在此处输入图像描述

这里第一个 T 周围有多个轮廓,两个 rs 组合成一个轮廓。我该如何防止呢?

0 投票
1 回答
83 浏览

opencv - 我的 mser 实现没有正确检测到文本区域,我该怎么办?

我是 OpenCV 的初学者,正在尝试从图像数据集中提取数字并将提取的数字用作 NN 的数据集。为此,我使用 mser 的边界框,然后按照边界框的大小裁剪图像。但 mser 没有正确检测到文本区域。请帮助我如何更准确地做到这一点。这是我的代码:

这里 bbs 是边界框的列表,它们不在文本区域,甚至没有。

在此处输入图像描述

基本事实的图像,边界框应该在哪里:

在此处输入图像描述

mser的边界框:

在此处输入图像描述

mser 的边界框的另一个例子:

在此处输入图像描述

0 投票
0 回答
67 浏览

c - 如何在 VLFeat 中计算 MSER 椭球上的 SIFT 描述符?

我有一个灰度图像(每个像素一个值,介于 0 和 255 之间),我想使用 MSER 算法(即椭圆体)检测关键点,并使用 SIFT 描述符描述这些关键点。我正在使用 VLFeat 库中的函数。

首先,我使用函数vl_mser_get_regions(返回表示图像中质心位置的值向量)和vl_mser_get_ell(返回描述椭球的维数为 9 的向量)获取质心和椭球。然后,我想将该函数应用于vl_sift_calc_raw_descriptor每个先前的椭球,以获得每个椭球的 SIFT 描述符。

我展示了一个我到目前为止所做的示例(省略了非超越代码):

问题是我不知道如何使用描述vl_sift_calc_raw_descriptor函数中每个椭球的 9 维向量。

0 投票
0 回答
381 浏览

python - Python中图像中数字的动态本地化

我正在处理 Python 中图像中的数字的动态数字本地化问题。我的意思是:如果我有这样的图像:

在此处输入图像描述

我想像这样分隔所有数字,例如 8、0、1:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我已经尝试和探索了 MSER,但没有取得任何进展。主要问题是,数字可以有任意位数。另一个例子可以是: 在此处输入图像描述

并且数字应该像这样分隔为 2, 2:

在此处输入图像描述 在此处输入图像描述

是否有任何其他方法可以使用 open cv 或 Python 中可用的任何其他包?

0 投票
1 回答
250 浏览

image - 文档图像字符补丁识别中的最大稳定极值区域 (MSER) 实现

我的任务是识别文档图像中的字符补丁。考虑下图:

在此处输入图像描述

根据论文,为了提取字符块,将采用基于 MSER 的方法来检测字符候选。

“基于 MSER 的方法的主要优点是即使文档图像质量低,这种算法也能够找到最清晰的字符。”

一篇论文讨论了 MSER。我很难理解后一篇论文。谁能简单地向我解释MSER在示例文档中实施和提取字符补丁应采取的步骤。我将在 Python 中实现它,我需要完全掌握/理解 MSER 的工作原理。

以下是识别图像文档中字符补丁的步骤(根据我的理解,如果我错了,请纠正我)

  1. “首先,像素按强度排序”

    我的理解:

    例如,我在图像中有 5 个像素的强度(Pixel 1) 1, (Pixel 2) 9,(Pixel 3) 255,(Pixel 4) 3,(Pixel 5) 4连续,然后如果越来越多地排序,基于强度它将产生一个输出,Pixel 1,4,5,2 and 3.

  2. 排序后,像素被放置在图像中(以递减或递增的顺序),并使用有效的联合查找算法维护连接组件及其区域的列表。

    我的理解:

    使用编号 1 中的示例。像素将按如下方式排列。像素组件/组和图像 X、Y 坐标只是示例。

    /li>
  3. “该过程产生了一个数据结构,将每个连接组件的面积存储为强度的函数。”

    我的理解:

    将在 #2 的表中添加一列,称为Area. 它将计算具有相同强度级别的特定组件中的像素数。它就像组件组内具有相同强度级别的像素的聚合。

    4.“最后,选择区域函数变化率的局部最小值的强度水平作为产生 MSER 的阈值。在输出中,每个 MSER 由局部强度最小值(或最大值)和阈值的位置表示。 "

如何获得面积函数变化率的局部最小值?

请帮助我了解这是什么以及如何实施 MSER。请随时纠正我的理解。谢谢。

0 投票
0 回答
32 浏览

computer-vision - 谁能教我最大稳定极值区域(MSER)公式的详细工作原理?

我现在很困惑,因为我仍然不明白如何在 MSER 的手动计算中找到 maxVariation、minArea、maxArea 和 thresholdDelta 值。特别是关于这个公式,谁能告诉我如何解决这个公式?谢谢。

0 投票
0 回答
42 浏览

python - 如何计算通过 MSER 检测到的特征数量?

我正在尝试计算 OPenCV Python 中 MSER 特征检测算法检测到的特征数量。我不知道该怎么做。如果有人帮助我找出代码,我将不胜感激。下面是我用于 MSER 的代码。

结果:

MSER 图像结果