OpenCV相关圆形标准差计算及交通信号灯识别问题咨询
OpenCV圆形筛选与交通信号灯分组识别实现方案
1. 不相交圆形筛选
首先从所有检测到的圆形中剔除存在相交情况的圆,仅保留完全不相交的候选圆:
- 圆形相交判定规则:对任意两个圆(x1,y1,r1)、(x2,y2,r2),计算圆心欧氏距离
d = sqrt((x1-x2)**2 + (y1-y2)**2),若d <= r1 + r2则判定为相交,两个圆均标记为待剔除 - 遍历所有圆形两两组合,最终保留所有未被标记的不相交圆作为后续分组的候选集
2. 三分组指标计算
遍历候选集所有不重复的3元素组合,每个组合分别计算以下两个核心指标:
- 组内总距离:计算组内三个圆两两之间的圆心距离,求和得到总距离值,数值越小代表三个圆的物理位置越贴近,符合信号灯三个灯集中排列的特征
- 参数标准差:分别计算组内三个圆的x坐标标准差、y坐标标准差、半径r标准差,将三个标准差求和得到总标准差数值,数值越小代表三个圆的位置对齐度越高、尺寸一致性越强,符合信号灯同规格等距排列的特征
3. 最优分组定位
由于两个指标量纲不同,先对所有组合的两个指标分别做min-max归一化到[0,1]区间,再计算每个组合两个归一化值的总和:
- 总和最小的组合即为同时满足两项最小条件的唯一目标分组,对应红黄绿三色交通信号灯
- 若存在多个组合总和相同的极端情况,优先选取半径标准差最小的组合作为最终结果,信号灯的三个发光单元半径一致性远高于其他随机圆形目标
内容的提问来源于stack exchange,提问作者popat
相关产品推荐
相关产品推荐

