问题标签 [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 投票
2 回答
506 浏览

prolog - 在 Prolog 中获取图的连接组件

我正在为逻辑编程而苦苦挣扎。我有一个这个问题,我希望你们中的一些人可以帮助我。不连续图由事实以这种方式表示:

所以有两个独立的图组件。我想要一个列表表示的输出上的所有单独组件。所以如果图中有三个独立的组件,就会有三个列表。对于上面给出的示例,预期的输出是[[0,1,2],[3,4,5]].

0 投票
1 回答
5978 浏览

c++ - OpenCV 3.0 连接组件,无法正常工作

我有以下代码,它只是一个简单的测试程序,用于学习如何在 openCV 3.0 中使用连接组件功能

输入图像是在白色背景上有两个红色方块的彩色图像。图像已正确加载并显示为灰度图像。 程序输出

问题是无论我做什么,输出总是一个空白图像,黑色或白色,具体取决于convertTo参数。

但是,返回的值connectedComponents是 2。

我尝试了 Miki 提出的完整代码,我得到了这个:

在此处输入图像描述

我认为问题可能是连接的组件无法正常工作。

尝试了我桌面上的一张图片,终于得到了一些东西:

在此处输入图像描述

然而,这一次源图像是一张有人、建筑物、汽车……的常规图片,并且大部分输出仍然是空白的。有人知道为什么吗?

添加后image = image < 200;

在此处输入图像描述

使用applyColorMap(seeMyLabels, seeMyLabels, COLORMAP_JET);,标签图像从几乎黑色灰度变为蓝色阴影

在此处输入图像描述

0 投票
2 回答
963 浏览

python - 如何使用 python 连接组件根据日期组合记录?

我有一个记录列表(person_id、start_date、end_date),如下所示:

每个人的记录按 start_date 升序排序。通过合并基于日期的记录并将第一个期间的 start_date 作为开始日期,将最后一个期间的 end_date 作为结束日期来合并这些期间。但是,如果一个时期的结束和下一个时期的开始之间的时间是 32 天或更短,我们应该将其视为连续时期。否则,我们将其视为两个时期:

有没有办法使用 python 连接的组件来做到这一点?

0 投票
2 回答
972 浏览

c++ - C++:指向来自另一个向量的对象的向量

我有两个类,类似于:

在主要实现中,我正在做这样的事情:

基本上是这样的。许多A对象被分配给一个B对象,这些A对象作为指针存储在那个指针向量中。此外,每个 A 对象都有一个指向它们所属的 B 对象的指针。对于上下文,我基本上是在使用运行长度编码(用于图像分割)进行连接组件算法,其中 A 类是线段,B 类是图像中的最终对象。

因此,B 类中向量的指针都指向存储在常规向量中的对象。当常规向量超出范围时,应该删除这些对象,对吗?我读过 B 类中的指针向量通常需要编写手动析构函数,但我认为这里不应该是这种情况......

我问的原因当然是因为我的代码不断崩溃。我正在使用华硕 Xtion Pro 相机获取图像,然后对每张图像执行算法。奇怪的是,每当我用力摇晃相机时,程序就会崩溃。当相机静止或仅移动一点点或缓慢移动时,什么也不会发生。此外,当我使用不同的算法(也连接组件,但没有运行长度编码并且也不使用指针)时,无论我如何摇晃相机,都不会崩溃。此外,在调试模式下(运行速度比发布模式慢得多),也没有任何崩溃。

我尝试为 B 类中的指针向量创建一个析构函数,但它导致了“块有效”错误,所以我猜它删除了两次。我还尝试用 c++11 std::shared_ptr 替换每个指针,但这只会产生非常不规则的行为,并且当我摇晃相机时代码仍然崩溃。

我基本上只是想知道在内存泄漏和指针处理方面,上面显示的代码是否正常,或者代码中是否存在可能导致崩溃的错误。

编辑(已解决):解决方案(参见接受的答案)是确保向量“listOfB”在运行时不会调整大小,例如使用“reserve()”为其保留足够的空间。完成此操作后,一切正常!显然它起作用了,因为如果向量'listOfB'被调整大小(通过push_back()),其中B实例的内部内存地址也会改变,导致A实例中的指针(指向B实例)到现在指向错误的地址 - 从而导致麻烦,从而导致崩溃。

关于相机抖动,显然,抖动相机会导致图片非常模糊,需要分割的元素很多,从而增加了对象的数量(即导致 listOfB 需要更大的大小)。于是,谜团解开了!非常感谢!:-)

0 投票
2 回答
1118 浏览

image - 将图像转换为二进制

我想找到图像的连接组件。我完全是初学者。有人可以为此目的给我一个指向一些教程的链接吗?还有什么是二值图像?这个词是什么意思convert image to binary image?我在 C# 中工作。

0 投票
1 回答
3345 浏览

c++ - 在无向图中查找连通分量的数量

用户输入顶点的数量(n),然后 - 在接下来的n行 - 顶点如何连接,即第i行中的数字x表示顶点i与顶点x连接(图是无向的) . 任务是在此图中找到连接组件的数量,并且我的代码 - 由于某种原因我无法找到 - 输出错误值(例如,输入4 2 1 2 4,我的代码输出4而不是2 )。非常感谢任何帮助。

0 投票
1 回答
3273 浏览

r - 在 R 中获取连通分量

我有一个值为 0 或 1 的矩阵,我想获得一组相邻 1 的列表。

例如,矩阵

应该返回以下 4 个连接的组件:

C1 = {(1,1);(2,1)}

C2 = {(2,4)}

C3 = {(3,3)}

C4 = {(5,1);(5,2);(5,3);(5,4);(5,5)}

有人知道如何在 R 中快速做到这一点吗?我的真实矩阵确实相当大,例如 2000x2000(但我希望连接组件的数量相当小,即 200)。

0 投票
3 回答
103314 浏览

python - 如何在python中使用openCV的连接组件和统计信息?

我正在寻找如何在 python 中使用 OpenCV 的 ConnectedComponentsWithStats() 函数的示例,请注意这仅适用于 OpenCV 3 或更高版本。官方文档仅显示了 C++ 的 API,即使该函数在为 python 编译时存在。我在网上的任何地方都找不到。

0 投票
2 回答
261 浏览

orientdb - OrientDB:在访问期间查找 Connected Components 值

我有 3 个主要类的架构:事务、地址和 ValueTx(Edge)。

我试图在一段时间内找到连接的组件。

现在我正在根据这个查询(OrientDB:连接组件 OSQL 查询):

这将消除每个遍历的“头”,并从中进行另一个 DFS,我可以获得我想要搜索的连接组件的每个节点和边缘。

我怎样才能使用上面的查询,同时获得连接组件中的事务数以及它们的值的总和?(tx 的值是 Transaction 类的属性)

我想做类似的事情:

但当然是行不通的。我只得到最后一个头的一行和所有交易的总和。

提前致谢。

编辑:

这是我正在寻找的一个例子:

关连交易

每笔交易都在相同的高度范围内:使用我的查询(我帖子中的第一个),我摆脱了通过多个地址链接的每组交易的第一个节点。例子:

我想要得到的是每个第一个节点的列表,其中包含它所属组的事务总数(不仅仅是处理事务)以及每个事务的值的总和(存储在 valueTot 类事务中.

Edit2:这是我进行测试的数据集:主要问题是我有很多数据,而且我之前尝试过的方法(每次摆脱我都会做一个不同的 sql 查询)它很慢,我希望有更快的方法。Edit3:这是一个更新的示例数据库:下载 (注意,它比另一个大)

我的系统上的这个查询大约需要一分钟,如果我限制结果集,所以我认为问题可能在选择不使用索引的事务的内部查询中......你知道吗?

0 投票
2 回答
3153 浏览

algorithm - Algorithm for finding every weakly connected component of a directed graph

I am searching for an algorithm for finding every weakly connected component in a directed graph. I know for an undirected graph you can do this via a dfs but this obviously doenst work for an directed graph. I am saving my graph as an adjacents list. For example:

So A-B-C is a connected component an D-X

I am not searching for an algorithm for finding strongly connected components!!