当前位置: 首页 > news >正文

把“距离过近”的节点(或端点)合并成一个,避免重复。机器学习 python

📌 函数作用一句话

把“距离过近”的节点(或端点)合并成一个,避免重复。


🎯 应用场景

  1. 节点去重

    • 霍夫变换或交点计算后,同一物理节点可能得到 多个像素级坐标(±1~3 px)。
    • 例如:两条导线的交点被算成 (124, 200)(125, 201)(126, 200) → 需要合并为一个 (125, 200)
  2. 端点聚类

    • 元件边框与导线交点可能 密集成群(手绘粗细、锯齿)。
    • 例如:一个引脚附近出现 5 个交点 → 合并成 1 个代表点。
  3. 可视化降噪

    • 让最终 节点/端点的数量 = 实际电路点数,图更干净。

⚙️ 原理拆解

步骤代码片段解释
1. 输入nodes = [(x1,y1), (x2,y2), ...]原始点列表,可能有重复/过近。
2. 转 NumPypts = np.array(nodes)方便广播计算欧氏距离。
3. 贪心聚类for i, p in enumerate(pts): ...每个未用点作为“种子”,找所有距离 < eps 的点归为一组。
4. 计算新坐标np.round(np.mean(group, axis=0))用组内点的几何中心作为合并后的新坐标,避免偏移。
5. 去重输出return list(set(...))防止重复添加。

📏 参数 eps 怎么选?

场景推荐 eps
手绘电路,像素粗8 ~ 12
高清扫描/矢量图3 ~ 5
不确定先试 8,再视结果微调。

✅ 一句话总结

把“像素级误差”的多个点 → 聚类成“物理级”唯一节点/引脚。

# 合并相邻节点
def merge_nearby_nodes(nodes, eps=10):"""合并相邻节点(欧氏距离 < eps)输入:[(x1,y1), (x2,y2), ...]输出:合并后的节点列表"""if not nodes:return []# 转成 numpy,便于广播计算pts = np.array(nodes).reshape(-1, 2)merged = []used = np.zeros(len(pts), dtype=bool)for i, p in enumerate(pts):if used[i]:continuegroup = [p]used[i] = Truefor j, q in enumerate(pts[i+1:], start=i+1):if not used[j] and np.linalg.norm(p - q) < eps:group.append(q)used[j] = True# 取平均坐标作为合并后的节点merged.append(tuple(np.round(np.mean(group, axis=0)).astype(int)))return merged
http://www.dtcms.com/a/315027.html

相关文章:

  • web:ts元组
  • 【RH124知识点问答题】第8章 监控和管理 Linux 进程
  • Bean的生命周期和循环依赖问题的解决
  • 防火墙认证用户部署
  • 开发规范(一)移动端
  • 多线程(一)
  • 【C#】操作Execl和Word文件-1
  • 子词分词器(Byte Pair Encoding + WordPiece)
  • 如何给Word和WPS文档添加密码或取消密码
  • 【Java】使用FreeMarker来实现Word自定义导出
  • 反转字符串中的元音字母:Swift 双指针一步到位
  • EXPLAIN工具:查询执行计划分析与索引诊断
  • 【数据结构】排序(sort) -- 插入排序
  • 如何设置端口映射?防火墙/路由器/纯软件工具多种常用方案步骤,确保任意内网ip端口映射公网访问到
  • 《汇编语言:基于X86处理器》第11章 复习题和练习
  • RocketMQ与Kafka 消费者组的‌重平衡操作消息顺序性对比
  • Hadoop MapReduce 3.3.4 讲解~
  • Linux系统编程-文件操作(黑马笔记)
  • 基于Springboot+Mybatis+thymeleaf的个人博客系统的设计与实现
  • EXCEL删除数据透视表
  • 洛谷 P3373 【模板】线段树 2- 普及+/提高
  • C# 类型
  • 基于PSO-NSGAIII混合优化的生产调度算法matlab仿真,输出甘特图,对比PSO和NSGAIII
  • traefik网关鉴权中间件转发multipart/form-data请求的multipart: NextPart: EOF问题
  • 09 Linux基础(8.4)
  • (一)vue3项目初始化(create-vue)
  • 构建属于自己的第一个 MCP 服务器:初学者教程
  • web:ts的字符串string和String
  • Flutter简单讲解
  • ctfshow:pwn85(高级ROP 64 位 Partial-RELRO)、pwn141