首页 > 解决方案 > 寻找圆的标准差 - OpenCV 相关

问题描述

我有一堆圆圈(相交和非相交圆圈)的图像。我必须将它们中的每一个(仅不相交)分组为三个圆圈,以便圆圈之间的距离必须最小并且它们之间的标准偏差最小,并且对于这些圆圈只返回一个具有最小距离和标准偏差的组。

每个 Circle 都有 x,y,r 等值,其中 x,y 是圆心,r 是半径。

我的主要目的是在给定图像中找到交通灯信号(红色、黄色和绿色圆圈)。

标签: python-3.xnumpyopencv

解决方案


我可以想到以下算法:

  1. 为所有圆心构建一个 KD 树。
  2. 现在重复以下内容:

i) 选择一个随机圆 A 并找到其最近的邻居 B。如果存在圆碰撞或半径偏差大于某个阈值标记 B 以供以后使用。重复直到找到可接受的邻居 B。如果没有找到标记 A 供以后使用。如果找到 B,则重做该过程以在 A 附近找到 C。如果没有找到 C,请尝试靠近 B。如果 A、B、C 都找到标记为交通灯信号。(通过测量圆和对齐的中心之间的距离来验证)

ii) 现在取消标记非交通灯圈并重复 i) 直到找不到更多的 A、B、C。

整个算法类似于聚合聚类的一些变体,产生了 3 个聚类。


推荐阅读