问题标签 [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.
matlab - 从matlab中的图像中删除同心圆
我有我试图操纵的 OCT 成像数据:
我想删除由图像中心的同心圆包围的所有点。到目前为止,我手动指定了最大圆的半径并将圆区域内的所有点设置为黑色。这些圆圈的大小可能会因图像源和伪影而异,因此我正在尝试找到一种更理想的方法来执行此删除操作。
我最初以为我可以使用 imfindcircles() 来识别这些圆,但是无论指定的半径如何,该算法都无法检测到其中的大部分。依赖连接组件(bwareaopen、regionprops)的方法也会失败,因为同心圆似乎连接到更大的结构。
我的一个想法是我可以转换为极坐标,因为同心圆的中心将始终位于图像的中心,从而产生此图像:
这应该更容易处理。有没有人有任何想法?
matlab - 连通分量的相交面积
我正在使用 MATLAB 进行分割任务。为了分析我的算法的性能,我需要两个图像中每个连接组件的交集区域。
在图像中以什么方式标记连接的组件?另外,是否PixelIdxList
列出了作为连通分量一部分的点的所有线性索引?
python-2.7 - 使用 OpenCV 查找连接的组件
我正在尝试使用 python OpenCV 查找并分离边缘检测图像中的所有边缘。边缘可以是轮廓的形式,但不是必须的。我只想将所有连接的边缘像素组合在一起。所以从技术上讲,该算法在程序上可能听起来像这样:
- 对于每个边缘像素,找到一个相邻的(连接的)边缘像素并将其添加到图像的当前细分中,直到找不到一个为止。
- 然后移动到下一个未检查的边缘像素并开始新的细分并再次执行 1)。
我已经看过了,cv.findContours
但结果并不令人满意,可能是因为它是用于轮廓(封闭边缘)而不是自由端的。结果如下:
检测到原始边缘:
轮廓处理后:
我预计这五个边缘将各自分组到其自己的图像细分中,但显然 cv2.findContours 函数将边缘中的 2 个甚至进一步细分为我不想要的细分。
这是我用来保存这两张图片的代码:
但是,我的实施有一些限制。我必须使用 Python 2.7 和 OpenCV2。除了这些,我不能使用任何其他版本或语言。我这样说是因为我知道 OpenCV 2 有一个使用 C++ 的 connectedComponent 函数。我本可以使用它,但问题是,由于某些限制,我无法使用它。
那么,知道我应该如何解决这个问题吗?
gremlin - Tinkerpop 3:使用 Gremlin 遍历计算连接组件
我认为标签很好地解释了我的问题:)
我一直在尝试编写一个 Gremlin 遍历来计算帖子末尾描述的简单图的连通分量。
我试过了
获得
这很糟糕,因为cyclicPath
过滤器从e
到达之前终止了遍历g
。显然,如果我删除该until
子句,我会得到一个无限循环。此外,如果我simplePath
在一步后使用遍历结束。有没有办法告诉它以深度优先顺序探索节点?
干杯!
c++ - 如何将行进方块用于多个轮廓?
找到第一个轮廓后如何使行进广场继续进行?
我正在处理的图像中的轮廓会经常发生变化,因为我处于嵌入式环境(android/ios)中,所以我首先想要一个快速性能的解决方案。并且使用外部库不是一种选择。
我尝试了连接组件标签,但从未让它工作,因为我有一个不是黑白(没有阈值)的 PNG,如果我没记错的话,CCL 只适用于黑白(二进制)图像。
我考虑过将 blob 信息保存到另一个向量并检查新发现的像素是否属于较早发现的 blob,但我认为这不够快,因为向量中充满了越来越多的 blob,因此检查的成本越来越高向量中的每个 blob。
这让我几乎完成了当前的方法,即擦除我找到并重复的轮廓,直到什么都没有?但这是我目前使用的方法,似乎也很昂贵。
如果没有快速的解决方案,那么任何人都可以提出不同的方法......即使这意味着不同的算法。
Mark1:我选择了行军广场,因为即使主题有洞,我也只需要轮廓的轮廓。
c++ - 连接的组件访问矩阵值
我正在尝试根据其位置对视频中的连接组件进行分类。我正在使用 opencv 3 中的 connectedComponentsWithStats 函数。我试图从 1x5 矩阵的 stats 矩阵中访问值。当我使用以下代码时,我成功访问了连接组件的区域。
当我尝试使用访问矩阵的第一个值时
我得到的所有值都是零。
只是为了确认当我输出完整的统计矩阵时,矩阵的 0,0 位置中的值并不总是零,因此它们应该以与面积矩阵相同的方式变化。统计矩阵中的值也总是整数。
如果您能看到我做错了什么,我将不胜感激!
matlab - 如何使用 MATLAB 编写简单的连通分量标记?
如何为简单图像(如上)标记和着色 3 个形状。
- 使用具有 8 个邻域的连通分量分析
- 形状是白色的,外面是黑色的
- 每个形状都会得到蓝色、绿色等颜色。
- 应该是一个简单的代码(使用 MATLAB),它根据连通分量分析逐像素处理图像
感谢您的任何帮助。
matrix - 邻接矩阵邻居
我有一个 0 和 1 的矩阵。我可以从任何单元格开始。我想知道覆盖所有可能的 1 所需的最小步数(上、下、左、右)是多少。我可以从 0 或 1 开始。
例子:
在 1 步内从 (2,2) 开始,我可以达到所有 1。我将此与未加权无向图的邻接矩阵联系起来。本质上,当我可以从任何点开始时,我需要找到最远的邻居。如果我只能从顶点开始,我可以简单地使用 BFS/DFS 并保留一个计数器,但这会带来问题。
python - 快速获取给定连接组件的所有点
Scikit-Image 有很多方法可用于斑点检测:
高斯拉普拉斯算子 (LoG)
高斯差 (DoG)
Hessian 行列式 (DoH)
这三个都返回一个数组,其中包含找到的组件范围内的单个点:
我想使用该信息来生成包含给定组件中所有点的坐标的列表。
我可以自己从种子开始遍历整个图像,然后收集字典中的所有点,关键是blob检测提供的点,但我想除非我使用cython(非常愿意错了,因为我对python还很陌生)。更真实地说,我只是认为可能有比自己做更好的方法。