问题标签 [connected-components]

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 投票
0 回答
790 浏览

python - 在 OpenCV 中连接角以形成矩形

我正在尝试通过将光栅化 PDF 转换为 PNG 格式然后使用 OpenCV 分析图像来检测光栅化 PDF 上的 CText 字段。

到目前为止,我已经能够使用以下代码生成一组相对准确的角:

这是我的输入: https://gyazo.com/88123222a2fdc9afc9b8bc038a1bda3e

这是输出: https://gyazo.com/205b857ded03669f625d664965566b30

我希望能够从这组点中计算出哪些点是矩形的一部分。这将涉及检查每个角点是否存在其他三个角点:

  1. 同一行中的一个点(大约),但不同的列
  2. 同一列中的一个点(大约),但不同的行
  3. 上面 (1) 中的列和上面 (2) 中的行的点

目标是生成一组矩形,其中包含任何 [显着] 数量的角点,除非这些角点本身属于一个矩形(在每个内部矩形的边界矩形的情况下,例如。 )

在 OpenCV 中执行此操作的最有效方法是什么?

0 投票
1 回答
383 浏览

c - 查询连接组件的数量

我已经编写了代码来查找有向图的连通分量的数量。当我使用下图作为我的邻接矩阵时。它给出的连通分量的数量为 2(第一个 DFS:0->1->2,第二个 DFS : 3)。

在此处输入图像描述

但是当我使用下图作为我的邻接矩阵时

在此处输入图像描述

它给出了连接组件的数量为1(DFS:0->2->3->1)。所以我想问的是计算连接组件的数量将取决于我们如何在邻接矩阵中表示节点,如果我们使用DFS 查找连接组件的数量?

代码:

0 投票
2 回答
5261 浏览

c++ - opencv查找连接组件的周长

我正在使用 opencv 2.4.13

我试图找到一个连接组件的周长,我正在考虑使用ConnectedComponentWithStats但它不返回周长,只返回面积、宽度等......有一种方法可以找到轮廓区域但是不是相反(我的意思是一个组件,而不是整个图像)。

arcLength方法效果不佳,因为我拥有组件的所有点,而不仅仅是轮廓。

我知道有一种 BF 方法可以通过遍历组件的每个像素并查看他是否有不在同一个组件中的邻居来找到它。但我想要一个成本更低的功能。否则,如果您知道将组件与 findContours 方法找到的轮廓链接的方法,那么它也适合我。

谢谢

0 投票
1 回答
156 浏览

matlab - MATLAB:隔离二值图像中感兴趣区域的周长:bwmorph 问题

我有一个二进制图像(附加),其中连接的组件用 bwconncomps 隔离。我正在尝试识别这些组件中的每一个的轮廓,但我仍然可以参考填充的对象 - (我使用轮廓作为灰度图像上的蒙版来提取一些值,然后取决于那个对填充的原始感兴趣区域执行操作的值)

当我在附加图像上运行 bwconncomps 时,我识别出 814 个对象。我可以运行 bwmorph(D,'remove'); 我得到了对象的轮廓/周长,但是当我对此运行 bwconncomps 时,我得到了 827 个对象——(不确定这些额外的对象来自哪里,这会破坏我根据值 I 引用填充对象的能力从其轮廓中拉出)。

基本上我需要一个 bwmorph(D,'remove') 版本,它会留下与原始二进制图像的 bwconncomps 中看到的相同数量的连接分量。这样我就可以将原始二进制中的分量 #30 与轮廓进行比较bwconncomps 中的相同 #30。

希望这很清楚,有什么建议吗?

谢谢

在此处输入图像描述

0 投票
1 回答
307 浏览

scala - 减少 Spark 应用程序中的计算时间

我有一个迭代运行超过 500 万个元素的 Spark 应用程序。该应用程序需要 2 小时才能在整个数据集上运行。但是我必须在超过 5000 万个元素的整个数据集上运行应用程序。
代码运行成功,但问题是我的大部分程序都在驱动程序上运行,而执行程序在运行应用程序时发挥的作用很小。因此,该迭代应用的计算时间非常大。
该应用程序通过从 n-triples 数据集构建图形来查找连接的组件。
问题是executor没有接收任务,第一个for循环一直运行到500万个元素全部完成,所以这部分需要大约90%的时间,所以我主要需要优化这部分。
建议更改以将工作从驱动程序转移到执行程序,从而使此代码可扩展以显着减少计算时间。

0 投票
0 回答
8631 浏览

c++ - 打开 CV C++ connectedComponentsWithStats 和 SimpleBlobDetector

我想找到我用simpleblobdetector找到的一堆 blob 的区域,我知道一种方法是使用connectedComponentsWithStats。我不太确定如何使用此功能;有人可以给我一个例子或一个链接吗?

到目前为止,这是我的代码:

0 投票
1 回答
1332 浏览

scala - Graphx从顶点id获取顶点标签

我在 Graphx 中有以下图表

我在此图上应用了连接组件算法,其输出如下:-

我找不到在 ccGraph 中找到 (vertexID,vertexID) 的顶点标签/顶点名称的方法,以便输出从
(vertexID,vertexID) => (vertexLabel,vertexLabel) 转换

我尝试了以下方法但失败了

0 投票
2 回答
607 浏览

image - 如何从图像中删除连接的组件,同时保留一些

假设我在名为labelledImagefrom的图像中有 5 个连接的组件(标记的对象) bwlabel。如何操作labelledImage以便仅显示标记为 1 和 4 的对象,同时删除标记为 2、3 和 5 的对象。然后,如何操作原始 RGB 图像以便标记的连接组件仅显示 1 和 4。

我知道如何通过使用下面的这行代码来保留单个连接的组件。但是,我不知道如何为多个标记区域执行此操作。

作品。

不工作。

0 投票
3 回答
109 浏览

python - 制定依赖组

使用以下函数,我可以生成一些测试数据。

这是我的测试数据。

如果一个字母与另一个字母共享该列表,则它依赖于该字母,并且该字母中的任何一个都依赖于其他字母。例如

x取决于['a','c','d','g','f','i','h','k','l','q','p','s','u','w','v','y', 'x','z']

这些依赖也是两种方式。k取决于一切,包括x

x不依赖于bor t。这些可以放在不同的组中。

我需要将列表分成尽可能多的非依赖组。

每个组将是该组所依赖的所有字母的集合。非依赖字母将是一组。

上面的一个示例输出是

我正在尝试编写一个函数来执行此操作,但无法找出正确分组所有内容的正确方法。

0 投票
1 回答
1647 浏览

python - opencv python connectedComponents 选择每个标签的组件

我想选择此图像的每个组件:

在此处输入图像描述

在实践中,每个三角形都有其标签。我不知道怎么做。我有这个代码:

但是图像是完全黑色的:S 非常感谢。